<?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>121940</bug_id>
          
          <creation_ts>2013-09-25 22:00:45 -0700</creation_ts>
          <short_desc>[MediaStream API] update MediaStreamTrack object to match spec</short_desc>
          <delta_ts>2013-11-14 07:39:04 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebCore Misc.</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>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>124288</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Eric Carlson">eric.carlson</reporter>
          <assigned_to name="Eric Carlson">eric.carlson</assigned_to>
          <cc>buildbot</cc>
    
    <cc>cdumez</cc>
    
    <cc>commit-queue</cc>
    
    <cc>dino</cc>
    
    <cc>eflews.bot</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>glenn</cc>
    
    <cc>gtk-ews</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>hta</cc>
    
    <cc>hugo.lima</cc>
    
    <cc>jer.noble</cc>
    
    <cc>kangil.han</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>philn</cc>
    
    <cc>rakuco</cc>
    
    <cc>rniwa</cc>
    
    <cc>thiago.lacerda</cc>
    
    <cc>tommyw</cc>
    
    <cc>xan.lopez</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>933360</commentid>
    <comment_count>0</comment_count>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2013-09-25 22:00:45 -0700</bug_when>
    <thetext>MISSING:
    readonly    attribute boolean               muted;
    readonly    attribute boolean               _readonly;
    readonly    attribute boolean               remote;
              attribute EventHandler      onstarted;
    Dictionary?                                          constraints ();			// MediaTrackConstraints
    Dictionary                                            states ();				// MediaSourceStates
    Dictionary                                            capabilities ();			// AllVideoCapabilities or AllAudioCapabilities
    		void                                                     applyConstraints (MediaTrackConstraints constraints);
              attribute EventHandler      onoverconstrained;
    MediaStreamTrack                             clone ();
    void                                                     stop ();


&lt;rdar://problem/15022423&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>936899</commentid>
    <comment_count>1</comment_count>
      <attachid>213545</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2013-10-06 17:40:42 -0700</bug_when>
    <thetext>Created attachment 213545
Patch for the hungry, hungry bots.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>936926</commentid>
    <comment_count>2</comment_count>
    <who name="Thiago de Barros Lacerda">thiago.lacerda</who>
    <bug_when>2013-10-06 19:30:27 -0700</bug_when>
    <thetext>(In reply to comment #1)
&gt; Created an attachment (id=213545) [details]
&gt; Patch for the hungry, hungry bots.

My points about the patch:

* What do you think about having the audio and video capabilities in their own classes, instead of having it all in MediaStreamCapabilities and making AllAudioCapabilities and AllVideoCapabilities inheriting from it? The spec is very specific about what is video and audio related.

* Why the MediaStreamCenter notifications methods were removed?

Thanks</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>936943</commentid>
    <comment_count>3</comment_count>
      <attachid>213558</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2013-10-06 20:38:56 -0700</bug_when>
    <thetext>Created attachment 213558
Rebased patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>936945</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-10-06 20:44:30 -0700</bug_when>
    <thetext>Attachment 213558 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;LayoutTests/ChangeLog&apos;, u&apos;LayoutTests/fast/mediastream/MediaStreamTrack.html&apos;, u&apos;Source/WebCore/CMakeLists.txt&apos;, u&apos;Source/WebCore/ChangeLog&apos;, u&apos;Source/WebCore/DerivedSources.make&apos;, u&apos;Source/WebCore/GNUmakefile.list.am&apos;, u&apos;Source/WebCore/Modules/mediastream/AllAudioCapabilities.h&apos;, u&apos;Source/WebCore/Modules/mediastream/AllAudioCapabilities.idl&apos;, u&apos;Source/WebCore/Modules/mediastream/AllVideoCapabilities.h&apos;, u&apos;Source/WebCore/Modules/mediastream/AllVideoCapabilities.idl&apos;, u&apos;Source/WebCore/Modules/mediastream/AudioStreamTrack.cpp&apos;, u&apos;Source/WebCore/Modules/mediastream/AudioStreamTrack.h&apos;, u&apos;Source/WebCore/Modules/mediastream/CapabilityRange.cpp&apos;, u&apos;Source/WebCore/Modules/mediastream/CapabilityRange.h&apos;, u&apos;Source/WebCore/Modules/mediastream/CapabilityRange.idl&apos;, u&apos;Source/WebCore/Modules/mediastream/MediaConstraintsImpl.h&apos;, u&apos;Source/WebCore/Modules/mediastream/MediaSourceStates.cpp&apos;, u&apos;Source/WebCore/Modules/mediastream/MediaSourceStates.h&apos;, u&apos;Source/WebCore/Modules/mediastream/MediaSourceStates.idl&apos;, u&apos;Source/WebCore/Modules/mediastream/MediaStream.cpp&apos;, u&apos;Source/WebCore/Modules/mediastream/MediaStream.h&apos;, u&apos;Source/WebCore/Modules/mediastream/MediaStreamCapabilities.cpp&apos;, u&apos;Source/WebCore/Modules/mediastream/MediaStreamCapabilities.h&apos;, u&apos;Source/WebCore/Modules/mediastream/MediaStreamCapabilities.idl&apos;, u&apos;Source/WebCore/Modules/mediastream/MediaStreamTrack.cpp&apos;, u&apos;Source/WebCore/Modules/mediastream/MediaStreamTrack.h&apos;, u&apos;Source/WebCore/Modules/mediastream/MediaStreamTrack.idl&apos;, u&apos;Source/WebCore/Modules/mediastream/MediaTrackConstraint.cpp&apos;, u&apos;Source/WebCore/Modules/mediastream/MediaTrackConstraint.h&apos;, u&apos;Source/WebCore/Modules/mediastream/MediaTrackConstraint.idl&apos;, u&apos;Source/WebCore/Modules/mediastream/MediaTrackConstraintSet.cpp&apos;, u&apos;Source/WebCore/Modules/mediastream/MediaTrackConstraintSet.h&apos;, u&apos;Source/WebCore/Modules/mediastream/MediaTrackConstraintSet.idl&apos;, u&apos;Source/WebCore/Modules/mediastream/MediaTrackConstraints.cpp&apos;, u&apos;Source/WebCore/Modules/mediastream/MediaTrackConstraints.h&apos;, u&apos;Source/WebCore/Modules/mediastream/MediaTrackConstraints.idl&apos;, u&apos;Source/WebCore/Modules/mediastream/NavigatorMediaStream.cpp&apos;, u&apos;Source/WebCore/Modules/mediastream/UserMediaRequest.cpp&apos;, u&apos;Source/WebCore/Modules/mediastream/VideoStreamTrack.cpp&apos;, u&apos;Source/WebCore/Modules/mediastream/VideoStreamTrack.h&apos;, u&apos;Source/WebCore/Modules/webaudio/AudioContext.cpp&apos;, u&apos;Source/WebCore/Modules/webaudio/MediaStreamAudioDestinationNode.cpp&apos;, u&apos;Source/WebCore/Modules/webaudio/MediaStreamAudioDestinationNode.h&apos;, u&apos;Source/WebCore/Modules/webaudio/MediaStreamAudioSource.cpp&apos;, u&apos;Source/WebCore/Modules/webaudio/MediaStreamAudioSource.h&apos;, u&apos;Source/WebCore/WebCore.xcodeproj/project.pbxproj&apos;, u&apos;Source/WebCore/bindings/js/JSMediaSourceStatesCustom.cpp&apos;, u&apos;Source/WebCore/bindings/js/JSMediaStreamCapabilitiesCustom.cpp&apos;, u&apos;Source/WebCore/dom/EventNames.h&apos;, u&apos;Source/WebCore/platform/mediastream/MediaStreamCenter.cpp&apos;, u&apos;Source/WebCore/platform/mediastream/MediaStreamCenter.h&apos;, u&apos;Source/WebCore/platform/mediastream/MediaStreamDescriptor.cpp&apos;, u&apos;Source/WebCore/platform/mediastream/MediaStreamDescriptor.h&apos;, u&apos;Source/WebCore/platform/mediastream/MediaStreamSource.cpp&apos;, u&apos;Source/WebCore/platform/mediastream/MediaStreamSource.h&apos;, u&apos;Source/WebCore/platform/mediastream/MediaStreamSourceCapabilities.h&apos;, u&apos;Source/WebCore/platform/mediastream/blackberry/MediaStreamCenterBlackBerry.cpp&apos;, u&apos;Source/WebCore/platform/mediastream/blackberry/MediaStreamCenterBlackBerry.h&apos;, u&apos;Source/WebCore/platform/mediastream/gstreamer/MediaStreamCenterGStreamer.cpp&apos;, u&apos;Source/WebCore/platform/mediastream/gstreamer/MediaStreamCenterGStreamer.h&apos;, u&apos;Source/WebCore/platform/mediastream/mac/MediaStreamCenterMac.cpp&apos;, u&apos;Source/WebCore/platform/mediastream/mac/MediaStreamCenterMac.h&apos;, u&apos;Source/WebCore/platform/mock/MockMediaStreamCenter.cpp&apos;, u&apos;Source/WebCore/platform/mock/MockMediaStreamCenter.h&apos;]&quot; exit_code: 1
Source/WebCore/Modules/mediastream/NavigatorMediaStream.cpp:39:  Should have a space between // and comment  [whitespace/comments] [4]
Source/WebCore/Modules/mediastream/NavigatorMediaStream.cpp:39:  Alphabetical sorting problem.  [build/include_order] [4]
Source/WebCore/Modules/mediastream/NavigatorMediaStream.cpp:43:  Should have a space between // and comment  [whitespace/comments] [4]
Source/WebCore/Modules/mediastream/NavigatorMediaStream.cpp:47:  Should have a space between // and comment  [whitespace/comments] [4]
Source/WebCore/Modules/mediastream/NavigatorMediaStream.cpp:58:  Should have a space between // and comment  [whitespace/comments] [4]
Source/WebCore/platform/mediastream/MediaStreamSource.h:86:  The parameter name &quot;constraints&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/WebCore/bindings/js/JSMediaStreamCapabilitiesCustom.cpp:29:  Alphabetical sorting problem.  [build/include_order] [4]
Source/WebCore/CMakeLists.txt:797:  Line contains tab character.  [whitespace/tab] [5]
Source/WebCore/CMakeLists.txt:799:  Line contains tab character.  [whitespace/tab] [5]
Source/WebCore/CMakeLists.txt:801:  Line contains tab character.  [whitespace/tab] [5]
Source/WebCore/CMakeLists.txt:807:  Line contains tab character.  [whitespace/tab] [5]
Source/WebCore/CMakeLists.txt:808:  Line contains tab character.  [whitespace/tab] [5]
Source/WebCore/CMakeLists.txt:809:  Line contains tab character.  [whitespace/tab] [5]
Source/WebCore/CMakeLists.txt:190:  Alphabetical sorting problem. &quot;Modules/mediastream/AllAudioCapabilities.idl&quot; should be before &quot;Modules/mediastream/AllVideoCapabilities.idl&quot;.  [list/order] [5]
Source/WebCore/CMakeLists.txt:202:  Alphabetical sorting problem. &quot;Modules/mediastream/MediaTrackConstraintSet.idl&quot; should be before &quot;Modules/mediastream/MediaTrackConstraints.idl&quot;.  [list/order] [5]
Total errors found: 15 in 58 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>936947</commentid>
    <comment_count>5</comment_count>
      <attachid>213558</attachid>
    <who name="EFL EWS Bot">eflews.bot</who>
    <bug_when>2013-10-06 20:49:34 -0700</bug_when>
    <thetext>Comment on attachment 213558
Rebased patch

Attachment 213558 did not pass efl-wk2-ews (efl-wk2):
Output: http://webkit-queues.appspot.com/results/3356107</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>936948</commentid>
    <comment_count>6</comment_count>
      <attachid>213558</attachid>
    <who name="EFL EWS Bot">eflews.bot</who>
    <bug_when>2013-10-06 20:49:52 -0700</bug_when>
    <thetext>Comment on attachment 213558
Rebased patch

Attachment 213558 did not pass efl-ews (efl):
Output: http://webkit-queues.appspot.com/results/3514090</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>936959</commentid>
    <comment_count>7</comment_count>
      <attachid>213562</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2013-10-06 21:15:18 -0700</bug_when>
    <thetext>Created attachment 213562
YARP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>936960</commentid>
    <comment_count>8</comment_count>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2013-10-06 21:23:10 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; (In reply to comment #1)
&gt; &gt; Created an attachment (id=213545) [details] [details]
&gt; &gt; Patch for the hungry, hungry bots.
&gt; 
&gt; My points about the patch:
&gt; 
&gt; * What do you think about having the audio and video capabilities in their own classes, instead of having it all in MediaStreamCapabilities and making AllAudioCapabilities and AllVideoCapabilities inheriting from it? The spec is very specific about what is video and audio related.
&gt; 
AllAudioCapabilities and AllVideoCapabilities do inherit from MediaStreamCapabilities, and we have the behavior the spec requires because the .idl files for these three classes list the correct attributes. Just to be certain, MediaStreamCapabilities.cpp ASSERTs on all of the video-specific attributes if the capability does not have video.

&gt; * Why the MediaStreamCenter notifications methods were removed?
&gt; 
I know that some of the methods are unnecessary so I removed all of the ones that are not implemented in *any* of the port-specific MediaStreamCenter implementations. As I say in the ChangeLog &quot;It isn&apos;t clear that they are necessary, and we can add them back if/when we need them.&quot;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>936961</commentid>
    <comment_count>9</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-10-06 21:49:16 -0700</bug_when>
    <thetext>Attachment 213562 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;LayoutTests/ChangeLog&apos;, u&apos;LayoutTests/fast/mediastream/MediaStreamTrack.html&apos;, u&apos;Source/WebCore/CMakeLists.txt&apos;, u&apos;Source/WebCore/ChangeLog&apos;, u&apos;Source/WebCore/DerivedSources.make&apos;, u&apos;Source/WebCore/GNUmakefile.list.am&apos;, u&apos;Source/WebCore/Modules/mediastream/AllAudioCapabilities.h&apos;, u&apos;Source/WebCore/Modules/mediastream/AllAudioCapabilities.idl&apos;, u&apos;Source/WebCore/Modules/mediastream/AllVideoCapabilities.h&apos;, u&apos;Source/WebCore/Modules/mediastream/AllVideoCapabilities.idl&apos;, u&apos;Source/WebCore/Modules/mediastream/AudioStreamTrack.cpp&apos;, u&apos;Source/WebCore/Modules/mediastream/AudioStreamTrack.h&apos;, u&apos;Source/WebCore/Modules/mediastream/CapabilityRange.cpp&apos;, u&apos;Source/WebCore/Modules/mediastream/CapabilityRange.h&apos;, u&apos;Source/WebCore/Modules/mediastream/CapabilityRange.idl&apos;, u&apos;Source/WebCore/Modules/mediastream/MediaConstraintsImpl.h&apos;, u&apos;Source/WebCore/Modules/mediastream/MediaSourceStates.cpp&apos;, u&apos;Source/WebCore/Modules/mediastream/MediaSourceStates.h&apos;, u&apos;Source/WebCore/Modules/mediastream/MediaSourceStates.idl&apos;, u&apos;Source/WebCore/Modules/mediastream/MediaStream.cpp&apos;, u&apos;Source/WebCore/Modules/mediastream/MediaStream.h&apos;, u&apos;Source/WebCore/Modules/mediastream/MediaStreamCapabilities.cpp&apos;, u&apos;Source/WebCore/Modules/mediastream/MediaStreamCapabilities.h&apos;, u&apos;Source/WebCore/Modules/mediastream/MediaStreamCapabilities.idl&apos;, u&apos;Source/WebCore/Modules/mediastream/MediaStreamTrack.cpp&apos;, u&apos;Source/WebCore/Modules/mediastream/MediaStreamTrack.h&apos;, u&apos;Source/WebCore/Modules/mediastream/MediaStreamTrack.idl&apos;, u&apos;Source/WebCore/Modules/mediastream/MediaTrackConstraint.cpp&apos;, u&apos;Source/WebCore/Modules/mediastream/MediaTrackConstraint.h&apos;, u&apos;Source/WebCore/Modules/mediastream/MediaTrackConstraint.idl&apos;, u&apos;Source/WebCore/Modules/mediastream/MediaTrackConstraintSet.cpp&apos;, u&apos;Source/WebCore/Modules/mediastream/MediaTrackConstraintSet.h&apos;, u&apos;Source/WebCore/Modules/mediastream/MediaTrackConstraintSet.idl&apos;, u&apos;Source/WebCore/Modules/mediastream/MediaTrackConstraints.cpp&apos;, u&apos;Source/WebCore/Modules/mediastream/MediaTrackConstraints.h&apos;, u&apos;Source/WebCore/Modules/mediastream/MediaTrackConstraints.idl&apos;, u&apos;Source/WebCore/Modules/mediastream/UserMediaRequest.cpp&apos;, u&apos;Source/WebCore/Modules/mediastream/VideoStreamTrack.cpp&apos;, u&apos;Source/WebCore/Modules/mediastream/VideoStreamTrack.h&apos;, u&apos;Source/WebCore/Modules/webaudio/AudioContext.cpp&apos;, u&apos;Source/WebCore/Modules/webaudio/MediaStreamAudioDestinationNode.cpp&apos;, u&apos;Source/WebCore/Modules/webaudio/MediaStreamAudioDestinationNode.h&apos;, u&apos;Source/WebCore/Modules/webaudio/MediaStreamAudioSource.cpp&apos;, u&apos;Source/WebCore/Modules/webaudio/MediaStreamAudioSource.h&apos;, u&apos;Source/WebCore/WebCore.xcodeproj/project.pbxproj&apos;, u&apos;Source/WebCore/bindings/js/JSMediaSourceStatesCustom.cpp&apos;, u&apos;Source/WebCore/bindings/js/JSMediaStreamCapabilitiesCustom.cpp&apos;, u&apos;Source/WebCore/dom/EventNames.h&apos;, u&apos;Source/WebCore/platform/mediastream/MediaStreamCenter.cpp&apos;, u&apos;Source/WebCore/platform/mediastream/MediaStreamCenter.h&apos;, u&apos;Source/WebCore/platform/mediastream/MediaStreamDescriptor.cpp&apos;, u&apos;Source/WebCore/platform/mediastream/MediaStreamDescriptor.h&apos;, u&apos;Source/WebCore/platform/mediastream/MediaStreamSource.cpp&apos;, u&apos;Source/WebCore/platform/mediastream/MediaStreamSource.h&apos;, u&apos;Source/WebCore/platform/mediastream/MediaStreamSourceCapabilities.h&apos;, u&apos;Source/WebCore/platform/mediastream/blackberry/MediaStreamCenterBlackBerry.cpp&apos;, u&apos;Source/WebCore/platform/mediastream/blackberry/MediaStreamCenterBlackBerry.h&apos;, u&apos;Source/WebCore/platform/mediastream/gstreamer/MediaStreamCenterGStreamer.cpp&apos;, u&apos;Source/WebCore/platform/mediastream/gstreamer/MediaStreamCenterGStreamer.h&apos;, u&apos;Source/WebCore/platform/mediastream/mac/MediaStreamCenterMac.cpp&apos;, u&apos;Source/WebCore/platform/mediastream/mac/MediaStreamCenterMac.h&apos;, u&apos;Source/WebCore/platform/mock/MockMediaStreamCenter.cpp&apos;, u&apos;Source/WebCore/platform/mock/MockMediaStreamCenter.h&apos;]&quot; exit_code: 1
Source/WebCore/bindings/js/JSMediaStreamCapabilitiesCustom.cpp:29:  Alphabetical sorting problem.  [build/include_order] [4]
Total errors found: 1 in 57 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>936962</commentid>
    <comment_count>10</comment_count>
      <attachid>213562</attachid>
    <who name="EFL EWS Bot">eflews.bot</who>
    <bug_when>2013-10-06 21:53:49 -0700</bug_when>
    <thetext>Comment on attachment 213562
YARP

Attachment 213562 did not pass efl-ews (efl):
Output: http://webkit-queues.appspot.com/results/3489082</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>936963</commentid>
    <comment_count>11</comment_count>
      <attachid>213562</attachid>
    <who name="EFL EWS Bot">eflews.bot</who>
    <bug_when>2013-10-06 21:55:37 -0700</bug_when>
    <thetext>Comment on attachment 213562
YARP

Attachment 213562 did not pass efl-wk2-ews (efl-wk2):
Output: http://webkit-queues.appspot.com/results/3493177</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>936967</commentid>
    <comment_count>12</comment_count>
      <attachid>213562</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-10-06 22:33:17 -0700</bug_when>
    <thetext>Comment on attachment 213562
YARP

Attachment 213562 did not pass mac-wk2-ews (mac-wk2):
Output: http://webkit-queues.appspot.com/results/3490096</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>936971</commentid>
    <comment_count>13</comment_count>
      <attachid>213562</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-10-06 22:49:43 -0700</bug_when>
    <thetext>Comment on attachment 213562
YARP

Attachment 213562 did not pass mac-ews (mac):
Output: http://webkit-queues.appspot.com/results/3490097</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>936983</commentid>
    <comment_count>14</comment_count>
      <attachid>213562</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-10-06 23:49:18 -0700</bug_when>
    <thetext>Comment on attachment 213562
YARP

Attachment 213562 did not pass mac-ews (mac):
Output: http://webkit-queues.appspot.com/results/3562014</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>936988</commentid>
    <comment_count>15</comment_count>
      <attachid>213562</attachid>
    <who name="kov&apos;s GTK+ EWS bot">gtk-ews</who>
    <bug_when>2013-10-07 00:11:35 -0700</bug_when>
    <thetext>Comment on attachment 213562
YARP

Attachment 213562 did not pass gtk-ews (gtk):
Output: http://webkit-queues.appspot.com/results/3514103</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>937061</commentid>
    <comment_count>16</comment_count>
      <attachid>213589</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2013-10-07 08:39:40 -0700</bug_when>
    <thetext>Created attachment 213589
Add the missing compile flag</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>937088</commentid>
    <comment_count>17</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-10-07 09:18:25 -0700</bug_when>
    <thetext>Attachment 213589 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;LayoutTests/ChangeLog&apos;, u&apos;LayoutTests/fast/mediastream/MediaStreamTrack.html&apos;, u&apos;Source/WebCore/CMakeLists.txt&apos;, u&apos;Source/WebCore/ChangeLog&apos;, u&apos;Source/WebCore/DerivedSources.make&apos;, u&apos;Source/WebCore/GNUmakefile.list.am&apos;, u&apos;Source/WebCore/Modules/mediastream/AllAudioCapabilities.h&apos;, u&apos;Source/WebCore/Modules/mediastream/AllAudioCapabilities.idl&apos;, u&apos;Source/WebCore/Modules/mediastream/AllVideoCapabilities.h&apos;, u&apos;Source/WebCore/Modules/mediastream/AllVideoCapabilities.idl&apos;, u&apos;Source/WebCore/Modules/mediastream/AudioStreamTrack.cpp&apos;, u&apos;Source/WebCore/Modules/mediastream/AudioStreamTrack.h&apos;, u&apos;Source/WebCore/Modules/mediastream/CapabilityRange.cpp&apos;, u&apos;Source/WebCore/Modules/mediastream/CapabilityRange.h&apos;, u&apos;Source/WebCore/Modules/mediastream/CapabilityRange.idl&apos;, u&apos;Source/WebCore/Modules/mediastream/MediaConstraintsImpl.h&apos;, u&apos;Source/WebCore/Modules/mediastream/MediaSourceStates.cpp&apos;, u&apos;Source/WebCore/Modules/mediastream/MediaSourceStates.h&apos;, u&apos;Source/WebCore/Modules/mediastream/MediaSourceStates.idl&apos;, u&apos;Source/WebCore/Modules/mediastream/MediaStream.cpp&apos;, u&apos;Source/WebCore/Modules/mediastream/MediaStream.h&apos;, u&apos;Source/WebCore/Modules/mediastream/MediaStreamCapabilities.cpp&apos;, u&apos;Source/WebCore/Modules/mediastream/MediaStreamCapabilities.h&apos;, u&apos;Source/WebCore/Modules/mediastream/MediaStreamCapabilities.idl&apos;, u&apos;Source/WebCore/Modules/mediastream/MediaStreamTrack.cpp&apos;, u&apos;Source/WebCore/Modules/mediastream/MediaStreamTrack.h&apos;, u&apos;Source/WebCore/Modules/mediastream/MediaStreamTrack.idl&apos;, u&apos;Source/WebCore/Modules/mediastream/MediaTrackConstraint.cpp&apos;, u&apos;Source/WebCore/Modules/mediastream/MediaTrackConstraint.h&apos;, u&apos;Source/WebCore/Modules/mediastream/MediaTrackConstraint.idl&apos;, u&apos;Source/WebCore/Modules/mediastream/MediaTrackConstraintSet.cpp&apos;, u&apos;Source/WebCore/Modules/mediastream/MediaTrackConstraintSet.h&apos;, u&apos;Source/WebCore/Modules/mediastream/MediaTrackConstraintSet.idl&apos;, u&apos;Source/WebCore/Modules/mediastream/MediaTrackConstraints.cpp&apos;, u&apos;Source/WebCore/Modules/mediastream/MediaTrackConstraints.h&apos;, u&apos;Source/WebCore/Modules/mediastream/MediaTrackConstraints.idl&apos;, u&apos;Source/WebCore/Modules/mediastream/UserMediaRequest.cpp&apos;, u&apos;Source/WebCore/Modules/mediastream/VideoStreamTrack.cpp&apos;, u&apos;Source/WebCore/Modules/mediastream/VideoStreamTrack.h&apos;, u&apos;Source/WebCore/Modules/webaudio/AudioContext.cpp&apos;, u&apos;Source/WebCore/Modules/webaudio/MediaStreamAudioDestinationNode.cpp&apos;, u&apos;Source/WebCore/Modules/webaudio/MediaStreamAudioDestinationNode.h&apos;, u&apos;Source/WebCore/Modules/webaudio/MediaStreamAudioSource.cpp&apos;, u&apos;Source/WebCore/Modules/webaudio/MediaStreamAudioSource.h&apos;, u&apos;Source/WebCore/WebCore.xcodeproj/project.pbxproj&apos;, u&apos;Source/WebCore/bindings/js/JSMediaSourceStatesCustom.cpp&apos;, u&apos;Source/WebCore/bindings/js/JSMediaStreamCapabilitiesCustom.cpp&apos;, u&apos;Source/WebCore/dom/EventNames.h&apos;, u&apos;Source/WebCore/platform/mediastream/MediaStreamCenter.cpp&apos;, u&apos;Source/WebCore/platform/mediastream/MediaStreamCenter.h&apos;, u&apos;Source/WebCore/platform/mediastream/MediaStreamDescriptor.cpp&apos;, u&apos;Source/WebCore/platform/mediastream/MediaStreamDescriptor.h&apos;, u&apos;Source/WebCore/platform/mediastream/MediaStreamSource.cpp&apos;, u&apos;Source/WebCore/platform/mediastream/MediaStreamSource.h&apos;, u&apos;Source/WebCore/platform/mediastream/MediaStreamSourceCapabilities.h&apos;, u&apos;Source/WebCore/platform/mediastream/blackberry/MediaStreamCenterBlackBerry.cpp&apos;, u&apos;Source/WebCore/platform/mediastream/blackberry/MediaStreamCenterBlackBerry.h&apos;, u&apos;Source/WebCore/platform/mediastream/gstreamer/MediaStreamCenterGStreamer.cpp&apos;, u&apos;Source/WebCore/platform/mediastream/gstreamer/MediaStreamCenterGStreamer.h&apos;, u&apos;Source/WebCore/platform/mediastream/mac/MediaStreamCenterMac.cpp&apos;, u&apos;Source/WebCore/platform/mediastream/mac/MediaStreamCenterMac.h&apos;, u&apos;Source/WebCore/platform/mock/MockMediaStreamCenter.cpp&apos;, u&apos;Source/WebCore/platform/mock/MockMediaStreamCenter.h&apos;]&quot; exit_code: 1
Source/WebCore/bindings/js/JSMediaStreamCapabilitiesCustom.cpp:32:  Alphabetical sorting problem.  [build/include_order] [4]
Total errors found: 1 in 57 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>937098</commentid>
    <comment_count>18</comment_count>
      <attachid>213589</attachid>
    <who name="EFL EWS Bot">eflews.bot</who>
    <bug_when>2013-10-07 09:33:44 -0700</bug_when>
    <thetext>Comment on attachment 213589
Add the missing compile flag

Attachment 213589 did not pass efl-ews (efl):
Output: http://webkit-queues.appspot.com/results/3648002</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>937099</commentid>
    <comment_count>19</comment_count>
      <attachid>213599</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2013-10-07 09:34:11 -0700</bug_when>
    <thetext>Created attachment 213599
New patch to appease my style-bot master</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>937102</commentid>
    <comment_count>20</comment_count>
      <attachid>213599</attachid>
    <who name="EFL EWS Bot">eflews.bot</who>
    <bug_when>2013-10-07 09:46:24 -0700</bug_when>
    <thetext>Comment on attachment 213599
New patch to appease my style-bot master

Attachment 213599 did not pass efl-ews (efl):
Output: http://webkit-queues.appspot.com/results/3611020</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>937110</commentid>
    <comment_count>21</comment_count>
      <attachid>213600</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2013-10-07 10:05:15 -0700</bug_when>
    <thetext>Created attachment 213600
Updated patch

Fix path in CMakeLists.txt</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>937112</commentid>
    <comment_count>22</comment_count>
      <attachid>213600</attachid>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2013-10-07 10:12:26 -0700</bug_when>
    <thetext>Comment on attachment 213600
Updated patch

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

Here are the few issues I found when trying to build this patch on GTK (without --media-stream)

&gt; Source/WebCore/GNUmakefile.list.am:473
&gt; +	DerivedSources/WebCore/JSMediaSourceStatesCustom.cpp \

That path is incorrect and the file should be listed in webcore_sources

&gt; Source/WebCore/GNUmakefile.list.am:482
&gt; +	DerivedSources/WebCore/JSMediaStreamCapabilitiesCustom.cpp \

Ditto

&gt; Source/WebCore/GNUmakefile.list.am:5372
&gt; +	Source/WebCore/platform/mediastream/MediaStreamAudioSource.cpp \
&gt; +	Source/WebCore/platform/mediastream/MediaStreamAudioSource.h \

The files are in Modules/webaudio

&gt; Source/WebCore/bindings/js/JSMediaStreamCapabilitiesCustom.cpp:51
&gt; +#endif // ENABLE(MEDIA_STREAM)

Misplaced #endif</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>937123</commentid>
    <comment_count>23</comment_count>
      <attachid>213603</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2013-10-07 10:27:52 -0700</bug_when>
    <thetext>Created attachment 213603
Updated patch

(In reply to comment #22)
&gt; (From update of attachment 213600 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=213600&amp;action=review
&gt; 
&gt; Here are the few issues I found when trying to build this patch on GTK (without --media-stream)
&gt; 
&gt; &gt; Source/WebCore/GNUmakefile.list.am:473
&gt; &gt; +	DerivedSources/WebCore/JSMediaSourceStatesCustom.cpp \
&gt; 
Fixed.

&gt; That path is incorrect and the file should be listed in webcore_sources
&gt; 
&gt; &gt; Source/WebCore/GNUmakefile.list.am:482
&gt; &gt; +	DerivedSources/WebCore/JSMediaStreamCapabilitiesCustom.cpp \
&gt; 
&gt; Ditto
&gt; 
Fixed.

&gt; &gt; Source/WebCore/GNUmakefile.list.am:5372
&gt; &gt; +	Source/WebCore/platform/mediastream/MediaStreamAudioSource.cpp \
&gt; &gt; +	Source/WebCore/platform/mediastream/MediaStreamAudioSource.h \
&gt; 
&gt; The files are in Modules/webaudio
&gt; 
Fixed.

&gt; &gt; Source/WebCore/bindings/js/JSMediaStreamCapabilitiesCustom.cpp:51
&gt; &gt; +#endif // ENABLE(MEDIA_STREAM)
&gt; 
&gt; Misplaced #endif

Fixed.

Thanks!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>937189</commentid>
    <comment_count>24</comment_count>
      <attachid>213612</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2013-10-07 12:33:10 -0700</bug_when>
    <thetext>Created attachment 213612
Updated patch

Correct a typo in MockMediaStreamCenter.cpp, add updated test results.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>937197</commentid>
    <comment_count>25</comment_count>
      <attachid>213612</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2013-10-07 12:51:56 -0700</bug_when>
    <thetext>Comment on attachment 213612
Updated patch

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

r=me, with nits.

&gt; Source/WebCore/Modules/mediastream/AllAudioCapabilities.h:42
&gt; +    static PassRefPtr&lt;AllAudioCapabilities&gt; create(PassRefPtr&lt;MediaStreamSourceCapabilities&gt; capabilities)

Nit: PassRefPtrs are no longer needed, ever since Anders added move-semantics to the RefPtr class.  You can return RefPtr here.

&gt; Source/WebCore/Modules/mediastream/AllVideoCapabilities.h:40
&gt; +    static PassRefPtr&lt;AllVideoCapabilities&gt; create(PassRefPtr&lt;MediaStreamSourceCapabilities&gt; capabilities)

Ditto.

&gt; Source/WebCore/Modules/mediastream/AudioStreamTrack.cpp:50
&gt;  PassRefPtr&lt;AudioStreamTrack&gt; AudioStreamTrack::create(ScriptExecutionContext* context, const Dictionary&amp; audioConstraints)
&gt;  {
&gt; -    RefPtr&lt;AudioStreamTrack&gt; track = adoptRef(new AudioStreamTrack(context, 0, &amp;audioConstraints));
&gt; -    return track.release();
&gt; +    return adoptRef(new AudioStreamTrack(context, 0, &amp;audioConstraints));
&gt;  }
&gt;  
&gt;  PassRefPtr&lt;AudioStreamTrack&gt; AudioStreamTrack::create(ScriptExecutionContext* context, MediaStreamSource* source)
&gt;  {
&gt; -    RefPtr&lt;AudioStreamTrack&gt; track = adoptRef(new AudioStreamTrack(context, source, 0));
&gt; -    return track.release();
&gt; +    return adoptRef(new AudioStreamTrack(context, source, 0));
&gt; +}
&gt; +
&gt; +PassRefPtr&lt;AudioStreamTrack&gt; AudioStreamTrack::create(MediaStreamTrack* track)
&gt; +{
&gt; +    return adoptRef(new AudioStreamTrack(track));

And super-ditto on these three.

&gt; Source/WebCore/Modules/mediastream/CapabilityRange.cpp:43
&gt; +PassRefPtr&lt;CapabilityRange&gt; CapabilityRange::create(const MediaStreamSourceCapabilityRange&amp; rangeInfo)

Yet another ditto.

&gt; Source/WebCore/Modules/mediastream/MediaSourceStates.cpp:36
&gt; +PassRefPtr&lt;MediaSourceStates&gt; MediaSourceStates::create(const MediaStreamSourceStates&amp; states)

Ditto.

&gt; Source/WebCore/Modules/mediastream/MediaStreamCapabilities.cpp:40
&gt; +PassRefPtr&lt;MediaStreamCapabilities&gt; MediaStreamCapabilities::create(PassRefPtr&lt;MediaStreamSourceCapabilities&gt; capabilities)

Ditto.

&gt; Source/WebCore/Modules/mediastream/MediaStreamTrack.cpp:120
&gt;  void MediaStreamTrack::setSource(MediaStreamSource* source)
&gt;  {
&gt;      ASSERT(source == m_source || !m_source);

(Existing code)

Wha wha?  What exactly is this ASSERT protecting us from?

&gt; Source/WebCore/Modules/mediastream/MediaStreamTrack.cpp:254
&gt; +PassRefPtr&lt;MediaTrackConstraints&gt; MediaStreamTrack::constraints() const
&gt; +{
&gt; +    // FIXME: https://bugs.webkit.org/show_bug.cgi?id=122428
&gt; +    notImplemented();
&gt; +    return 0;
&gt; +}
&gt; +
&gt; +PassRefPtr&lt;MediaSourceStates&gt; MediaStreamTrack::states() const
&gt; +{
&gt; +    if (!m_source)
&gt; +        return 0;
&gt; +    
&gt; +    return MediaSourceStates::create(m_source-&gt;states());
&gt; +}
&gt; +
&gt; +PassRefPtr&lt;MediaStreamCapabilities&gt; MediaStreamTrack::capabilities() const
&gt; +{
&gt; +    if (!m_source)
&gt; +        return 0;
&gt; +
&gt; +    return MediaStreamCapabilities::create(m_source-&gt;capabilities());
&gt; +}

Another mega PassRefPtr -&gt; RefPtr Ditto.

&gt; Source/WebCore/Modules/mediastream/MediaStreamTrack.cpp:338
&gt; +    // 4.3.1
&gt; +    // ... media from the source only flows when a MediaStreamTrack object is both unmuted and enabled
&gt; +}

This looks suspicious.  Was there supposed to be a FIXME here?

&gt; Source/WebCore/Modules/mediastream/MediaStreamTrack.cpp:386
&gt; +    Vector&lt;RefPtr&lt;Event&gt;&gt; events;
&gt; +    {
&gt; +        MutexLocker locker(m_mutex);
&gt; +
&gt; +        m_eventDispatchScheduled = false;
&gt; +        if (!scriptExecutionContext()) {
&gt; +            m_scheduledEvents.clear();
&gt; +            return;
&gt; +        }
&gt; +
&gt; +        events.swap(m_scheduledEvents);
&gt; +    }

I feel like this could be cleaned up slightly to minimize the time inside the mutex:

Vector&lt;RefPtr&lt;Event&gt;&gt; events;
{
    MutexLocker locker(m_mutex);
    m_eventDispatchScheduled = false;
    events.swap(m_scheduledEvents);
}
if (!scriptExecutionContext())
    return;

&gt; Source/WebCore/Modules/mediastream/MediaStreamTrack.cpp:390
&gt; +    Vector&lt;RefPtr&lt;Event&gt; &gt;::iterator it = events.begin();
&gt; +    for (; it != events.end(); ++it)
&gt; +        dispatchEvent((*it).release());

The newly supported &quot;auto&quot; keyword would be awesome here:

for (auto it = events.begin(); it != events.end(); ++it)
    dispatchEvent((*it).release());

&gt; Source/WebCore/Modules/mediastream/MediaStreamTrack.cpp:392
&gt; +    events.clear();

This seems unnecessary.

&gt; Source/WebCore/Modules/mediastream/MediaTrackConstraint.cpp:37
&gt; +PassRefPtr&lt;MediaTrackConstraint&gt; MediaTrackConstraint::create(const Dictionary&amp; constraint)

PassRefPtr -&gt; RefPtr ditto.

&gt; Source/WebCore/Modules/mediastream/MediaTrackConstraintSet.cpp:37
&gt; +PassRefPtr&lt;MediaTrackConstraintSet&gt; MediaTrackConstraintSet::create(const Dictionary&amp; constraints)

Man, I&apos;m only 1/2 way through?  Phew.

Oh, ditto.

&gt; Source/WebCore/Modules/mediastream/MediaTrackConstraints.cpp:41
&gt; +PassRefPtr&lt;MediaTrackConstraints&gt; MediaTrackConstraints::create(PassRefPtr&lt;MediaConstraintsImpl&gt; constraints)

Ditto.

&gt; Source/WebCore/Modules/mediastream/VideoStreamTrack.cpp:50
&gt; +PassRefPtr&lt;VideoStreamTrack&gt; VideoStreamTrack::create(MediaStreamTrack* track)

Ditto.

&gt; Source/WebCore/Modules/webaudio/MediaStreamAudioSource.cpp:38
&gt; +PassRefPtr&lt;MediaStreamAudioSource&gt; MediaStreamAudioSource::create()

Ditto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>937271</commentid>
    <comment_count>26</comment_count>
      <attachid>213612</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2013-10-07 16:15:52 -0700</bug_when>
    <thetext>Comment on attachment 213612
Updated patch

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

&gt;&gt; Source/WebCore/Modules/mediastream/AllAudioCapabilities.h:42
&gt;&gt; +    static PassRefPtr&lt;AllAudioCapabilities&gt; create(PassRefPtr&lt;MediaStreamSourceCapabilities&gt; capabilities)
&gt; 
&gt; Nit: PassRefPtrs are no longer needed, ever since Anders added move-semantics to the RefPtr class.  You can return RefPtr here.

Jer means that PassRefPtrs are no longer needed *for return values*. We haven’t quite gotten to the point where we don’t need them for function arguments yet.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>937281</commentid>
    <comment_count>27</comment_count>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2013-10-07 16:50:31 -0700</bug_when>
    <thetext>Committed r157068: http://trac.webkit.org/changeset/157068</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>213545</attachid>
            <date>2013-10-06 17:40:42 -0700</date>
            <delta_ts>2013-10-06 20:38:56 -0700</delta_ts>
            <desc>Patch for the hungry, hungry bots.</desc>
            <filename>track_spec_update_20.txt</filename>
            <type>text/plain</type>
            <size>216214</size>
            <attacher name="Eric Carlson">eric.carlson</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE1NzAwNykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE3OCBAQAorMjAxMy0xMC0wNiAgRXJpYyBD
YXJsc29uICA8ZXJpYy5jYXJsc29uQGFwcGxlLmNvbT4KKworICAgICAgICBbTWVkaWFTdHJlYW0g
QVBJXSB1cGRhdGUgTWVkaWFTdHJlYW1UcmFjayBvYmplY3QgdG8gbWF0Y2ggc3BlYworICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTIxOTQwCisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLCBl
eGlzdGluZyB0ZXN0IHVwZGF0ZWQuCisKKyAgICAgICAgQWRkIG5ldyBzb3VyY2UgZmlsZXMgdG8g
dGhlIHByb2plY3Q6CisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogRGVyaXZl
ZFNvdXJjZXMubWFrZToKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5saXN0LmFtOgorICAgICAgICAq
IFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKworICAgICAgICBOZXcgY2FwYWJp
bGl0eSBkaWN0aW9uYXJ5IG9iamVjdHM6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9B
bGxBdWRpb0NhcGFiaWxpdGllcy5oOiBBZGRlZC4KKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3Ry
ZWFtL0FsbEF1ZGlvQ2FwYWJpbGl0aWVzLmlkbDogQWRkZWQuCisgICAgICAgICogTW9kdWxlcy9t
ZWRpYXN0cmVhbS9BbGxWaWRlb0NhcGFiaWxpdGllcy5oOiBBZGRlZC4KKyAgICAgICAgKiBNb2R1
bGVzL21lZGlhc3RyZWFtL0FsbFZpZGVvQ2FwYWJpbGl0aWVzLmlkbDogQWRkZWQuCisKKyAgICAg
ICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL0F1ZGlvU3RyZWFtVHJhY2suY3BwOgorICAgICAgICAo
V2ViQ29yZTo6QXVkaW9TdHJlYW1UcmFjazo6Y3JlYXRlKTogTmV3IHZlcnNpb24gdGhhdCB0YWtl
cyBhIE1lZGlhU3RyZWFtVHJhY2sqLgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vQXVk
aW9TdHJlYW1UcmFjay5oOgorCisgICAgICAgIE5ldyBvYmplY3QgZm9yIGEgY2FwYWJpbGl0eSBy
YW5nZToKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL0NhcGFiaWxpdHlSYW5nZS5jcHA6
IEFkZGVkLgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vQ2FwYWJpbGl0eVJhbmdlLmg6
IEFkZGVkLgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vQ2FwYWJpbGl0eVJhbmdlLmlk
bDogQWRkZWQuCisKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhQ29uc3RyYWlu
dHNJbXBsLmg6IE1ha2UgaW5pdGlhbGl6ZSgpIHB1YmxpYy4KKworICAgICAgICBOZXcgb2JqZWN0
IGZvciB0aGUgY3VycmVudCBzdGF0ZXMgZm9yIGEgbWVkaWEgc291cmNlLgorICAgICAgICAqIE1v
ZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTb3VyY2VTdGF0ZXMuY3BwOiBBZGRlZC4KKyAgICAgICAg
KiBNb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU291cmNlU3RhdGVzLmg6IEFkZGVkLgorICAgICAg
ICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTb3VyY2VTdGF0ZXMuaWRsOiBBZGRlZC4KKwor
ICAgICAgICBEb24ndCBjYWxsIHRoZSBtZWRpYSBzdHJlYW0gY2VudGVyIHRvIG5vdGlmeSBpdCB3
aGVuIHRoZSBzdGF0ZSBvZiBvdGhlcgorICAgICAgICBvYmplY3RzIGNoYW5nZS4KKyAgICAgICAg
KiBNb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OnByb2Nlc3NUcmFjayk6IFJlbW92ZSB0aGUgc3RyZWFtIHNvdXJjZSBkdXBsaWNhdGlvbiBoYWNr
LgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlRnJvbVNvdXJjZVZlY3RvcnMpOiAKKyAgICAgICAg
KFdlYkNvcmU6Ok1lZGlhU3RyZWFtOjpNZWRpYVN0cmVhbSk6CisgICAgICAgIChXZWJDb3JlOjpN
ZWRpYVN0cmVhbTo6YWRkVHJhY2spOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTdHJlYW06OnJl
bW92ZVRyYWNrKToKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtLmg6
CisKKyAgICAgICAgTmV3IG9iamVjdCBmb3IgdGhlIGNhcGFiaWxpdGllcyBvZiBhIHNvdXJjZS4K
KyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtQ2FwYWJpbGl0aWVzLmNw
cDogQWRkZWQuCisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbUNhcGFi
aWxpdGllcy5oOiBBZGRlZC4KKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3Ry
ZWFtQ2FwYWJpbGl0aWVzLmlkbDogQWRkZWQuCisKKyAgICAgICAgVXBkYXRlIGludGVyZmFjZSB0
byBtYXRjaCBzcGVjLgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1U
cmFjay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbVRyYWNrOjpNZWRpYVN0cmVh
bVRyYWNrKTogRGVmaW5lIGEgY29weSBjb25zdHJ1Y3RvciB0byB1c2UgaW4gY2xvbmUoKS4KKyAg
ICAgICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFtVHJhY2s6OnNldFNvdXJjZSk6IENhbGwgcmVtb3Zl
T2JzZXJ2ZXIgaWYgdGhlIHRyYWNrIGFscmVhZHkgaGFzIGEgc291cmNlLgorICAgICAgICAgICAg
SW5pdGlhbGl6ZSBtX211dGVkIGZyb20gbmV3IHNvdXJjZSdzIG11dGVkIHN0YXRlLgorICAgICAg
ICAoV2ViQ29yZTo6TWVkaWFTdHJlYW1UcmFjazo6aWQpOiBBbGxvdyBzb3VyY2UgdG8gcHJvdmlk
ZSBJRCBhcyB0aGUgc3BlYyBzdWdnZXN0cy4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFt
VHJhY2s6OnNldEVuYWJsZWQpOiBBZGQgc29tZSBzcGVjIHRleHQgdG8gY2xhcmlmeSBsb2dpYy4g
QWx3YXlzIGNhbGwKKyAgICAgICAgICAgIHNvdXJjZS0+c2V0RW5hYmxlZCwgaXQgY2FuIGZpZ3Vy
ZSBvdXQgaWYgbm90aGluZyBuZWVkcyB0byBiZSBkb25lLgorICAgICAgICAoV2ViQ29yZTo6TWVk
aWFTdHJlYW1UcmFjazo6bXV0ZWQpOiBEb24ndCBjYWxsIHRoZSBzdHJlYW0gY2VudGVyIHdoZW4g
bXV0ZWQgY2hhbmdlcywgdGhlCisgICAgICAgICAgICBzb3VyY2UgY2FuIHRha2UgY2FyZSBvZiBu
b3RpZnlpbmcgaW50ZXJlc3RlZCBwYXJ0aWVzLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTdHJl
YW1UcmFjazo6cmVhZG9ubHkpOiBOZXcuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbVRy
YWNrOjpyZW1vdGUpOiBOZXcuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbVRyYWNrOjpj
b25zdHJhaW50cyk6IE5ldy4gCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbVRyYWNrOjpz
dGF0ZXMpOiBOZXcuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbVRyYWNrOjpjYXBhYmls
aXRpZXMpOiBOZXcuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbVRyYWNrOjphcHBseUNv
bnN0cmFpbnRzKTogTmV3LgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTdHJlYW1UcmFjazo6Y2xv
bmUpOiBOZXcuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbVRyYWNrOjpzdG9wUHJvZHVj
aW5nRGF0YSk6IE5ldy4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFtVHJhY2s6OnNvdXJj
ZVN0YXRlQ2hhbmdlZCk6IFJlbmFtZWQgZnJvbSBzb3VyY2VDaGFuZ2VkU3RhdGUuCisgICAgICAg
IChXZWJDb3JlOjpNZWRpYVN0cmVhbVRyYWNrOjpzb3VyY2VNdXRlZENoYW5nZWQpOiBOZXcuCisg
ICAgICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbVRyYWNrOjpzb3VyY2VFbmFibGVkQ2hhbmdlZCk6
IE5ldy4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFtVHJhY2s6OmNvbmZpZ3VyZVRyYWNr
UmVuZGVyaW5nKTogTmV3LgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTdHJlYW1UcmFjazo6c3Rv
cHBlZCk6IE5ldy4gCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbVRyYWNrOjpzdG9wKTog
Q2FsbCBzdG9wUHJvZHVjaW5nRGF0YS4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFtVHJh
Y2s6OnNjaGVkdWxlRXZlbnREaXNwYXRjaCk6IE5ldy4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlh
U3RyZWFtVHJhY2s6OmRpc3BhdGNoUXVldWVkRXZlbnRzKTogTmV3LgorICAgICAgICAqIE1vZHVs
ZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1UcmFjay5oOgorICAgICAgICAqIE1vZHVsZXMvbWVk
aWFzdHJlYW0vTWVkaWFTdHJlYW1UcmFjay5pZGw6CisKKyAgICAgICAgKiBNb2R1bGVzL21lZGlh
c3RyZWFtL01lZGlhVHJhY2tDb25zdHJhaW50LmNwcDogQWRkZWQuCisgICAgICAgICogTW9kdWxl
cy9tZWRpYXN0cmVhbS9NZWRpYVRyYWNrQ29uc3RyYWludC5oOiBBZGRlZC4KKyAgICAgICAgKiBN
b2R1bGVzL21lZGlhc3RyZWFtL01lZGlhVHJhY2tDb25zdHJhaW50LmlkbDogQWRkZWQuCisKKyAg
ICAgICAgLy8gQWRkIGVtcHR5IGNsYXNzZXMvSURMIGZvciB0cmFjayBjb25zdHJhaW50IG9iamVj
dHMuCisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVRyYWNrQ29uc3RyYWludFNl
dC5jcHA6IEFkZGVkLgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFUcmFja0Nv
bnN0cmFpbnRTZXQuaDogQWRkZWQuCisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRp
YVRyYWNrQ29uc3RyYWludFNldC5pZGw6IEFkZGVkLgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFz
dHJlYW0vTWVkaWFUcmFja0NvbnN0cmFpbnRzLmNwcDogQWRkZWQuCisgICAgICAgICogTW9kdWxl
cy9tZWRpYXN0cmVhbS9NZWRpYVRyYWNrQ29uc3RyYWludHMuaDogQWRkZWQuCisgICAgICAgICog
TW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVRyYWNrQ29uc3RyYWludHMuaWRsOiBBZGRlZC4KKwor
ICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vVXNlck1lZGlhUmVxdWVzdC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpVc2VyTWVkaWFSZXF1ZXN0OjpjYWxsU3VjY2Vzc0hhbmRsZXIpOiBEb24n
dCBjYWxsIHRoZSBzdHJlYW0gY2VudGVyLCB0aGUKKyAgICAgICAgICAgIHN0cmVhbSBjYW4gdGFr
ZSBjYXJlIG9mIG5vdGlmeWluZyBpbnRlcmVzdGVkIHBhcnRpZXMuCisKKyAgICAgICAgLy8gQWRk
IGEgY29uc3RydWN0b3IgYW5kIGNyZWF0ZSgpIHRoYXQgdGFrZSBhIE1lZGlhU3RyZWFtVHJhY2sq
LgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vVmlkZW9TdHJlYW1UcmFjay5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpWaWRlb1N0cmVhbVRyYWNrOjpjcmVhdGUpOiAKKyAgICAgICAgKFdl
YkNvcmU6OlZpZGVvU3RyZWFtVHJhY2s6OlZpZGVvU3RyZWFtVHJhY2spOgorICAgICAgICAqIE1v
ZHVsZXMvbWVkaWFzdHJlYW0vVmlkZW9TdHJlYW1UcmFjay5oOgorCisgICAgICAgIC8vIENyZWF0
ZSBhIE1lZGlhU3RyZWFtU291cmNlIHN1YmNsYXNzIGZvciBXZWJBdWRpbworICAgICAgICAqIE1v
ZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlv
Q29udGV4dDo6Y3JlYXRlTWVkaWFTdHJlYW1Tb3VyY2UpOiBDYWxsIGlzQXVkaW9TdHJlYW1Tb3Vy
Y2UgaW5zdGVhZAorICAgICAgICAgICAgb2YgY2hlY2tpbmcgZGV2aWNlSUQuCisgICAgICAgICog
TW9kdWxlcy93ZWJhdWRpby9NZWRpYVN0cmVhbUF1ZGlvRGVzdGluYXRpb25Ob2RlLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFtQXVkaW9EZXN0aW5hdGlvbk5vZGU6Ok1lZGlhU3Ry
ZWFtQXVkaW9EZXN0aW5hdGlvbk5vZGUpOiBDcmVhdGUgYQorICAgICAgICAgICAgTWVkaWFTdHJl
YW1BdWRpb1NvdXJjZSBpbnN0ZWFkIG9mIGEgTWVkaWFTdHJlYW1Tb3VyY2UuCisgICAgICAgICog
TW9kdWxlcy93ZWJhdWRpby9NZWRpYVN0cmVhbUF1ZGlvRGVzdGluYXRpb25Ob2RlLmg6CisgICAg
ICAgICogTW9kdWxlcy93ZWJhdWRpby9NZWRpYVN0cmVhbUF1ZGlvU291cmNlLmNwcDogQWRkZWQu
CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9NZWRpYVN0cmVhbUF1ZGlvU291cmNlLmg6IEFk
ZGVkLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTdHJlYW1BdWRpb1NvdXJjZTo6fk1lZGlhU3Ry
ZWFtQXVkaW9Tb3VyY2UpOgorCisgICAgICAgIC8vIEFkZCBuZXcgZ2VuZXJhdGVkIGZpbGVzLgor
ICAgICAgICAqIGJpbmRpbmdzL2pzL0pTTWVkaWFTb3VyY2VTdGF0ZXNDdXN0b20uY3BwOiBBZGRl
ZC4KKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU01lZGlhU3RyZWFtQ2FwYWJpbGl0aWVzQ3VzdG9t
LmNwcDogQWRkZWQuCisKKyAgICAgICAgKiBkb20vRXZlbnROYW1lcy5oOiBEZWZpbmVkICdvdmVy
Y29uc3RyYWluZWQnIGV2ZW50LgorCisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVk
aWFTdHJlYW1DZW50ZXIuaDogR2V0IHJpZCBvZiBhbGwgb2YgdGhlIG1ldGhvZHMgbm9ib2R5IHVz
ZXMuCisgICAgICAgICAgICBJdCBpc24ndCBjbGVhciB0aGF0IHRoZXkgYXJlIG5lY2Vzc2FyeSwg
YW5kIHdlIGNhbiBhZGQgdGhlbSBiYWNrIGlmL3doZW4gd2UgbmVlZCB0aGVtLgorCisgICAgICAg
ICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1EZXNjcmlwdG9yLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFtRGVzY3JpcHRvcjo6fk1lZGlhU3RyZWFtRGVzY3JpcHRv
cik6IENsZWFyIHRoZSBhbGwgc291cmNlIHN0cmVhbXMuCisgICAgICAgIChXZWJDb3JlOjpNZWRp
YVN0cmVhbURlc2NyaXB0b3I6OnJlbW92ZVNvdXJjZSk6IENsZWFyIHRoZSBzb3VyY2Ugc3RyZWFt
LgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtRGVzY3JpcHRvci5o
OgorCisgICAgICAgIC8vIE1ha2UgTWVkaWFTdHJlYW1Tb3VyY2UgYW4gYWJzdHJhY3QgYmFzZSBj
bGFzcywgYW5kIHJlbW92ZSBldmVyeXRpbmcgV2ViQXVkaW8tc3BlY2lmaWMKKyAgICAgICAgLy8g
IHRvIE1lZGlhU3RyZWFtQXVkaW9Tb3VyY2UuIAorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3Ry
ZWFtL01lZGlhU3RyZWFtU291cmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFt
U291cmNlOjpNZWRpYVN0cmVhbVNvdXJjZSk6IFJlbW92ZSByZWFkeVN0YXRlIGFuZCByZXF1aXJl
c0NvbnN1bWVyCisgICAgICAgICAgICBwYXJhbWV0ZXJzLiBDcmVhdGUgbmV3IFVVSUQgZm9yIGlk
IGlmIG5vbiB3YXMgcGFzc2VkLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTdHJlYW1Tb3VyY2U6
OnJlc2V0KTogUmVzZXQgaW50ZXJuYWwgc3RhdGUgdG8ganVzdC1jb25zdHJ1Y3RlZC4gVXNlZCBm
b3IgdGVzdGluZy4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFtU291cmNlOjpzZXRSZWFk
eVN0YXRlKTogc291cmNlQ2hhbmdlZFN0YXRlIC0+IHNvdXJjZVN0YXRlQ2hhbmdlZC4KKyAgICAg
ICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFtU291cmNlOjpzZXRTdHJlYW0pOiBSZW1vdmUgdGhlIEFT
U0VSVCB0aGF0IGNoZWNrIGZvciBhIHNvdXJjZSBiZWluZworICAgICAgICAgICAgYWRkZWQgdG8g
YSBuZXcgc3RyZWFtLiBUaGlzIGlzIHN0aWxsIGEgcHJvYmxlbSwgYnV0IGl0IGlzIHJlcXVpcmVk
IGZvciB0ZXN0aW5nIGFuZCB3aWxsCisgICAgICAgICAgICBiZSBmaXhlZCBhcyBhIHBhcnQgb2Yg
YnVnIDEyMTk1NC4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFtU291cmNlOjpzZXRDb25z
dHJhaW50cyk6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTdHJlYW1Tb3VyY2U6OnNl
dE11dGVkKTogTm90aWZ5IG9ic2VydmVycyB3aGVuIG11dGVkIGNoYW5nZXMuCisgICAgICAgIChX
ZWJDb3JlOjpNZWRpYVN0cmVhbVNvdXJjZTo6c2V0RW5hYmxlZCk6IE5vdGlmeSBvYnNlcnZlcnMg
d2hlbiBlbmFibGVkIGNoYW5nZXMuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbVNvdXJj
ZTo6cmVhZG9ubHkpOiBOZXcuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbVNvdXJjZTo6
c3RvcCk6IE5ldy4gU2V0IHN0YXRlIHRvIEVuZGVkIHdoZW4gYWxsIG9mIHRoZSBvYnNlcnZlcnMg
aGFzCisgICAgICAgICAgICBzdG9wcGVkLgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFt
L01lZGlhU3RyZWFtU291cmNlLmg6CisKKyAgICAgICAgLy8gRGVmaW5lIHBsYXRmb3JtIHZlcnNp
b25zIG9mIHRoZSBDYXBhYmlsaXRpZXMgY2xhc3Nlcy4KKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRp
YXN0cmVhbS9NZWRpYVN0cmVhbVNvdXJjZUNhcGFiaWxpdGllcy5oOiBBZGRlZC4KKworICAgICAg
ICAvLyBVcGRhdGUgdGhlIG5vbi1mdW5jdGlvbmFsIHBsYXRmb3JtIHN0cmVhbSBjZW50ZXJzIGZv
ciB0aGUgQVBJIGNoYW5nZXMuCisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vYmxhY2ti
ZXJyeS9NZWRpYVN0cmVhbUNlbnRlckJsYWNrQmVycnkuY3BwOgorICAgICAgICAqIHBsYXRmb3Jt
L21lZGlhc3RyZWFtL2JsYWNrYmVycnkvTWVkaWFTdHJlYW1DZW50ZXJCbGFja0JlcnJ5Lmg6Cisg
ICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vZ3N0cmVhbWVyL01lZGlhU3RyZWFtQ2VudGVy
R1N0cmVhbWVyLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9nc3RyZWFtZXIv
TWVkaWFTdHJlYW1DZW50ZXJHU3RyZWFtZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0
cmVhbS9tYWMvTWVkaWFTdHJlYW1DZW50ZXJNYWMuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL21l
ZGlhc3RyZWFtL21hYy9NZWRpYVN0cmVhbUNlbnRlck1hYy5oOgorCisgICAgICAgIC8vIFVwZGF0
ZSB0aGUgTW9jayBzdHJlYW0gY2VudGVyIGZvciB0aGUgQVBJIGNoYW5nZXMuIEFkZCBhIGNvbmNy
ZXRlIG1vY2sgTWVkaWFTdHJlYW1Tb3VyY2UKKyAgICAgICAgLy8gIHN1YmNsYXNzLgorICAgICAg
ICAqIHBsYXRmb3JtL21vY2svTW9ja01lZGlhU3RyZWFtQ2VudGVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6Ok1vY2tTb3VyY2U6Ok1vY2tTb3VyY2UpOiBOZXcsIHRoZSBtb2NrIG1lZGlhIHN0cmVh
bSBzb3VyY2UuCisgICAgICAgIChXZWJDb3JlOjpNb2NrU291cmNlOjp+TW9ja1NvdXJjZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpNb2NrU291cmNlOjpjYXBhYmlsaXRpZXMpOgorICAgICAgICAoV2Vi
Q29yZTo6TW9ja1NvdXJjZTo6c3RhdGVzKToKKyAgICAgICAgKFdlYkNvcmU6Om1vY2tTb3VyY2VN
YXApOgorICAgICAgICAoV2ViQ29yZTo6bW9ja0F1ZGlvU291cmNlSUQpOgorICAgICAgICAoV2Vi
Q29yZTo6bW9ja1ZpZGVvU291cmNlSUQpOgorICAgICAgICAoV2ViQ29yZTo6aW5pdGlhbGl6ZU1v
Y2tTb3VyY2VzKTogQ3JlYXRlIG9uZSBhdWRpbyBhbmQgb25lIHZpZGVvIG1vY2sgc291cmNlLgor
ICAgICAgICAoV2ViQ29yZTo6TW9ja01lZGlhU3RyZWFtQ2VudGVyOjpyZWdpc3Rlck1vY2tNZWRp
YVN0cmVhbUNlbnRlcik6IENhbGwgaW5pdGlhbGl6ZU1vY2tTb3VyY2VzLgorICAgICAgICAoV2Vi
Q29yZTo6TW9ja01lZGlhU3RyZWFtQ2VudGVyOjpjcmVhdGVNZWRpYVN0cmVhbSk6IFVzZSB0aGUg
YWxyZWFkeSBhbGxvY2F0ZWQgbW9jayBtZWRpYQorICAgICAgICAgICAgc291cmNlcy4KKyAgICAg
ICAgKFdlYkNvcmU6Ok1vY2tNZWRpYVN0cmVhbUNlbnRlcjo6Z2V0TWVkaWFTdHJlYW1UcmFja1Nv
dXJjZXMpOiBEaXR0by4KKyAgICAgICAgKiBwbGF0Zm9ybS9tb2NrL01vY2tNZWRpYVN0cmVhbUNl
bnRlci5oOgorCiAyMDEzLTEwLTA2ICBBbmRyZWFzIEtsaW5nICA8YWtsaW5nQGFwcGxlLmNvbT4K
IAogICAgICAgICBDVFRFOiBGcmFtZUxvYWRlcjo6bm90aWZpZXIoKSBzaG91bGQgcmV0dXJuIGEg
cmVmZXJlbmNlLgpJbmRleDogU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQJKHJldmlzaW9uIDE1Njk0NikKKysr
IFNvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0xODYsMTIg
KzE4NiwyMCBAQCBzZXQoV2ViQ29yZV9JRExfRklMRVMKICAgICBNb2R1bGVzL21lZGlhc291cmNl
L1dlYktpdFNvdXJjZUJ1ZmZlci5pZGwKICAgICBNb2R1bGVzL21lZGlhc291cmNlL1dlYktpdFNv
dXJjZUJ1ZmZlckxpc3QuaWRsCiAKKyAgICBNb2R1bGVzL21lZGlhc3RyZWFtL0FsbFZpZGVvQ2Fw
YWJpbGl0aWVzLmlkbAorICAgIE1vZHVsZXMvbWVkaWFzdHJlYW0vQWxsQXVkaW9DYXBhYmlsaXRp
ZXMuaWRsCiAgICAgTW9kdWxlcy9tZWRpYXN0cmVhbS9BdWRpb1N0cmVhbVRyYWNrLmlkbAorICAg
IE1vZHVsZXMvbWVkaWFzdHJlYW0vQ2FwYWJpbGl0eVJhbmdlLmlkbAorICAgIE1vZHVsZXMvbWVk
aWFzdHJlYW0vTWVkaWFTb3VyY2VTdGF0ZXMuaWRsCiAgICAgTW9kdWxlcy9tZWRpYXN0cmVhbS9N
ZWRpYVN0cmVhbS5pZGwKKyAgICBNb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtQ2FwYWJp
bGl0aWVzLmlkbAogICAgIE1vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1FdmVudC5pZGwK
ICAgICBNb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJhY2suaWRsCiAgICAgTW9kdWxl
cy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVRyYWNrRXZlbnQuaWRsCiAgICAgTW9kdWxlcy9tZWRp
YXN0cmVhbS9NZWRpYVN0cmVhbVRyYWNrU291cmNlc0NhbGxiYWNrLmlkbAorICAgIE1vZHVsZXMv
bWVkaWFzdHJlYW0vTWVkaWFUcmFja0NvbnN0cmFpbnQuaWRsCisgICAgTW9kdWxlcy9tZWRpYXN0
cmVhbS9NZWRpYVRyYWNrQ29uc3RyYWludHMuaWRsCisgICAgTW9kdWxlcy9tZWRpYXN0cmVhbS9N
ZWRpYVRyYWNrQ29uc3RyYWludFNldC5pZGwKICAgICBNb2R1bGVzL21lZGlhc3RyZWFtL05hdmln
YXRvck1lZGlhU3RyZWFtLmlkbAogICAgIE1vZHVsZXMvbWVkaWFzdHJlYW0vTmF2aWdhdG9yVXNl
ck1lZGlhRXJyb3IuaWRsCiAgICAgTW9kdWxlcy9tZWRpYXN0cmVhbS9OYXZpZ2F0b3JVc2VyTWVk
aWFFcnJvckNhbGxiYWNrLmlkbApAQCAtNzg2LDEzICs3OTQsMTkgQEAgc2V0KFdlYkNvcmVfU09V
UkNFUwogICAgIE1vZHVsZXMvbWVkaWFzb3VyY2UvU291cmNlQnVmZmVyTGlzdC5jcHAKIAogICAg
IE1vZHVsZXMvbWVkaWFzdHJlYW0vQXVkaW9TdHJlYW1UcmFjay5jcHAKKwlNb2R1bGVzL21lZGlh
c3RyZWFtL0NhcGFiaWxpdHlSYW5nZS5jcHAKICAgICBNb2R1bGVzL21lZGlhc3RyZWFtL01lZGlh
Q29uc3RyYWludHNJbXBsLmNwcAorCU1vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTb3VyY2VTdGF0
ZXMuY3BwCiAgICAgTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbS5jcHAKKwlNb2R1bGVz
L21lZGlhc3RyZWFtL01lZGlhU3RyZWFtQ2FwYWJpbGl0aWVzLmNwcAogICAgIE1vZHVsZXMvbWVk
aWFzdHJlYW0vTWVkaWFTdHJlYW1FdmVudC5jcHAKICAgICBNb2R1bGVzL21lZGlhc3RyZWFtL01l
ZGlhU3RyZWFtUmVnaXN0cnkuY3BwCiAgICAgTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVh
bVRyYWNrLmNwcAogICAgIE1vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1UcmFja0V2ZW50
LmNwcAogICAgIE1vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1UcmFja1NvdXJjZXNSZXF1
ZXN0LmNwcAorCU1vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFUcmFja0NvbnN0cmFpbnQuY3BwCisJ
TW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVRyYWNrQ29uc3RyYWludFNldC5jcHAKKwlNb2R1bGVz
L21lZGlhc3RyZWFtL01lZGlhVHJhY2tDb25zdHJhaW50cy5jcHAKICAgICBNb2R1bGVzL21lZGlh
c3RyZWFtL05hdmlnYXRvck1lZGlhU3RyZWFtLmNwcAogICAgIE1vZHVsZXMvbWVkaWFzdHJlYW0v
TmF2aWdhdG9yVXNlck1lZGlhRXJyb3IuY3BwCiAgICAgTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENE
VE1GU2VuZGVyLmNwcApAQCAtMTk3MSw2ICsxOTg1LDcgQEAgc2V0KFdlYkNvcmVfU09VUkNFUwog
ICAgIHBsYXRmb3JtL2xldmVsZGIvTGV2ZWxEQlRyYW5zYWN0aW9uLmNwcAogICAgIHBsYXRmb3Jt
L2xldmVsZGIvTGV2ZWxEQldyaXRlQmF0Y2guY3BwCiAKKyAgICBwbGF0Zm9ybS9tZWRpYXN0cmVh
bS9NZWRpYVN0cmVhbUF1ZGlvU291cmNlLmNwcAogICAgIHBsYXRmb3JtL21lZGlhc3RyZWFtL01l
ZGlhU3RyZWFtQ2VudGVyLmNwcAogICAgIHBsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlhU3RyZWFt
RGVzY3JpcHRvci5jcHAKICAgICBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVNvdXJj
ZS5jcHAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQkocmV2aXNpb24gMTU2OTQ2
KQorKysgU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQkod29ya2luZyBjb3B5KQpA
QCAtMTAxLDEyICsxMDEsMjAgQEAgQklORElOR19JRExTID0gXAogICAgICQoV2ViQ29yZSkvTW9k
dWxlcy9tZWRpYXNvdXJjZS9XZWJLaXRTb3VyY2VCdWZmZXJMaXN0LmlkbCBcCiAgICAgJChXZWJD
b3JlKS9Nb2R1bGVzL21lZGlhc291cmNlL1NvdXJjZUJ1ZmZlci5pZGwgXAogICAgICQoV2ViQ29y
ZSkvTW9kdWxlcy9tZWRpYXNvdXJjZS9Tb3VyY2VCdWZmZXJMaXN0LmlkbCBcCisJJChXZWJDb3Jl
KS9Nb2R1bGVzL21lZGlhc3RyZWFtL0FsbFZpZGVvQ2FwYWJpbGl0aWVzLmlkbCBcCisJJChXZWJD
b3JlKS9Nb2R1bGVzL21lZGlhc3RyZWFtL0FsbEF1ZGlvQ2FwYWJpbGl0aWVzLmlkbCBcCiAJJChX
ZWJDb3JlKS9Nb2R1bGVzL21lZGlhc3RyZWFtL0F1ZGlvU3RyZWFtVHJhY2suaWRsIFwKKyAgICAk
KFdlYkNvcmUpL01vZHVsZXMvbWVkaWFzdHJlYW0vQ2FwYWJpbGl0eVJhbmdlLmlkbCBcCisgICAg
JChXZWJDb3JlKS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU291cmNlU3RhdGVzLmlkbCBcCiAJ
JChXZWJDb3JlKS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtLmlkbCBcCisJJChXZWJD
b3JlKS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtQ2FwYWJpbGl0aWVzLmlkbCBcCiAg
ICAgJChXZWJDb3JlKS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtRXZlbnQuaWRsIFwK
ICAgICAkKFdlYkNvcmUpL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1UcmFjay5pZGwg
XAogICAgICQoV2ViQ29yZSkvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVRyYWNrRXZl
bnQuaWRsIFwKICAgICAkKFdlYkNvcmUpL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1U
cmFja1NvdXJjZXNDYWxsYmFjay5pZGwgXAorICAgICQoV2ViQ29yZSkvTW9kdWxlcy9tZWRpYXN0
cmVhbS9NZWRpYVRyYWNrQ29uc3RyYWludC5pZGwgXAorICAgICQoV2ViQ29yZSkvTW9kdWxlcy9t
ZWRpYXN0cmVhbS9NZWRpYVRyYWNrQ29uc3RyYWludHMuaWRsIFwKKyAgICAkKFdlYkNvcmUpL01v
ZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFUcmFja0NvbnN0cmFpbnRTZXQuaWRsIFwKICAgICAkKFdl
YkNvcmUpL01vZHVsZXMvbWVkaWFzdHJlYW0vTmF2aWdhdG9yTWVkaWFTdHJlYW0uaWRsIFwKICAg
ICAkKFdlYkNvcmUpL01vZHVsZXMvbWVkaWFzdHJlYW0vTmF2aWdhdG9yVXNlck1lZGlhRXJyb3Iu
aWRsIFwKICAgICAkKFdlYkNvcmUpL01vZHVsZXMvbWVkaWFzdHJlYW0vTmF2aWdhdG9yVXNlck1l
ZGlhRXJyb3JDYWxsYmFjay5pZGwgXApJbmRleDogU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUu
bGlzdC5hbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFt
CShyZXZpc2lvbiAxNTY5NDYpCisrKyBTb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFt
CSh3b3JraW5nIGNvcHkpCkBAIC0zMSw2ICszMSwxMCBAQCB3ZWJjb3JlX2J1aWx0X3NvdXJjZXMg
Kz0gXAogCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSW5zcGVjdG9yUHJvdG9jb2xWZXJzaW9uLmgg
XAogCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNBYnN0cmFjdFdvcmtlci5jcHAgXAogCURlcml2
ZWRTb3VyY2VzL1dlYkNvcmUvSlNBYnN0cmFjdFdvcmtlci5oIFwKKwlEZXJpdmVkU291cmNlcy9X
ZWJDb3JlL0pTQWxsQXVkaW9DYXBhYmlsaXRpZXMuY3BwIFwKKwlEZXJpdmVkU291cmNlcy9XZWJD
b3JlL0pTQWxsQXVkaW9DYXBhYmlsaXRpZXMuaCBcCisJRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9K
U0FsbFZpZGVvQ2FwYWJpbGl0aWVzLmNwcCBcCisJRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0Fs
bFZpZGVvQ2FwYWJpbGl0aWVzLmggXAogCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNBdHRyLmNw
cCBcCiAJRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0F0dHIuaCBcCiAJRGVyaXZlZFNvdXJjZXMv
V2ViQ29yZS9KU0F1ZGlvQnVmZmVyLmNwcCBcCkBAIC04Nyw2ICs5MSw4IEBAIHdlYmNvcmVfYnVp
bHRfc291cmNlcyArPSBcCiAJRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0NhbnZhc1JlbmRlcmlu
Z0NvbnRleHQyRC5oIFwKIAlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTQ2FudmFzUmVuZGVyaW5n
Q29udGV4dC5jcHAgXAogCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNDYW52YXNSZW5kZXJpbmdD
b250ZXh0LmggXAorCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNDYXBhYmlsaXR5UmFuZ2UuY3Bw
IFwKKwlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTQ2FwYWJpbGl0eVJhbmdlLmggXAogCURlcml2
ZWRTb3VyY2VzL1dlYkNvcmUvSlNDREFUQVNlY3Rpb24uY3BwIFwKIAlEZXJpdmVkU291cmNlcy9X
ZWJDb3JlL0pTQ0RBVEFTZWN0aW9uLmggXAogCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNDaGFy
YWN0ZXJEYXRhLmNwcCBcCkBAIC00NjIsMTIgKzQ2OCwxOCBAQCB3ZWJjb3JlX2J1aWx0X3NvdXJj
ZXMgKz0gXAogCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNNZWRpYVNvdXJjZS5oIFwKIAlEZXJp
dmVkU291cmNlcy9XZWJDb3JlL0pTV2ViS2l0TWVkaWFTb3VyY2UuY3BwIFwKIAlEZXJpdmVkU291
cmNlcy9XZWJDb3JlL0pTV2ViS2l0TWVkaWFTb3VyY2UuaCBcCisJRGVyaXZlZFNvdXJjZXMvV2Vi
Q29yZS9KU01lZGlhU291cmNlU3RhdGVzLmNwcCBcCisJRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9K
U01lZGlhU291cmNlU3RhdGVzLmggXAorCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNNZWRpYVNv
dXJjZVN0YXRlc0N1c3RvbS5jcHAgXAogCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNNZWRpYVN0
cmVhbS5jcHAgXAogCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNNZWRpYVN0cmVhbS5oIFwKIAlE
ZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTTWVkaWFTdHJlYW1BdWRpb1NvdXJjZU5vZGUuY3BwIFwK
IAlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTTWVkaWFTdHJlYW1BdWRpb1NvdXJjZU5vZGUuaCBc
CiAJRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU01lZGlhU3RyZWFtQXVkaW9EZXN0aW5hdGlvbk5v
ZGUuY3BwIFwKIAlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTTWVkaWFTdHJlYW1BdWRpb0Rlc3Rp
bmF0aW9uTm9kZS5oIFwKKwlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTTWVkaWFTdHJlYW1DYXBh
YmlsaXRpZXMuY3BwIFwKKwlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTTWVkaWFTdHJlYW1DYXBh
YmlsaXRpZXMuaCBcCisJRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU01lZGlhU3RyZWFtQ2FwYWJp
bGl0aWVzQ3VzdG9tLmNwcCBcCiAJRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU01lZGlhU3RyZWFt
RXZlbnQuY3BwIFwKIAlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTTWVkaWFTdHJlYW1FdmVudC5o
IFwKIAlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTTWVkaWFTdHJlYW1UcmFjay5jcHAgXApAQCAt
NDgwLDYgKzQ5MiwxMiBAQCB3ZWJjb3JlX2J1aWx0X3NvdXJjZXMgKz0gXAogCURlcml2ZWRTb3Vy
Y2VzL1dlYkNvcmUvSlNNZWRpYVF1ZXJ5TGlzdC5oIFwKIAlEZXJpdmVkU291cmNlcy9XZWJDb3Jl
L0pTTWVkaWFRdWVyeUxpc3RMaXN0ZW5lci5jcHAgXAogCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUv
SlNNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyLmggXAorCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNN
ZWRpYVRyYWNrQ29uc3RyYWludC5jcHAgXAorCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNNZWRp
YVRyYWNrQ29uc3RyYWludC5oIFwKKwlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTTWVkaWFUcmFj
a0NvbnN0cmFpbnRzLmNwcCBcCisJRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU01lZGlhVHJhY2tD
b25zdHJhaW50cy5oIFwKKwlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTTWVkaWFUcmFja0NvbnN0
cmFpbnRTZXQuY3BwIFwKKwlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTTWVkaWFUcmFja0NvbnN0
cmFpbnRTZXQuaCBcCiAJRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU01lc3NhZ2VDaGFubmVsLmNw
cCBcCiAJRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU01lc3NhZ2VDaGFubmVsLmggXAogCURlcml2
ZWRTb3VyY2VzL1dlYkNvcmUvSlNNZXNzYWdlRXZlbnQuY3BwIFwKQEAgLTExODYsMTIgKzEyMDQs
MjAgQEAgZG9tX2JpbmRpbmdfaWRscyArPSBcCiAJJChXZWJDb3JlKS9Nb2R1bGVzL21lZGlhc291
cmNlL1dlYktpdE1lZGlhU291cmNlLmlkbCBcCiAJJChXZWJDb3JlKS9Nb2R1bGVzL21lZGlhc291
cmNlL1dlYktpdFNvdXJjZUJ1ZmZlci5pZGwgXAogCSQoV2ViQ29yZSkvTW9kdWxlcy9tZWRpYXNv
dXJjZS9XZWJLaXRTb3VyY2VCdWZmZXJMaXN0LmlkbCBcCisJJChXZWJDb3JlKS9Nb2R1bGVzL21l
ZGlhc3RyZWFtL0FsbFZpZGVvQ2FwYWJpbGl0aWVzLmlkbCBcCisJJChXZWJDb3JlKS9Nb2R1bGVz
L21lZGlhc3RyZWFtL0FsbEF1ZGlvQ2FwYWJpbGl0aWVzLmlkbCBcCiAJJChXZWJDb3JlKS9Nb2R1
bGVzL21lZGlhc3RyZWFtL0F1ZGlvU3RyZWFtVHJhY2suaWRsIFwKKwkkKFdlYkNvcmUpL01vZHVs
ZXMvbWVkaWFzdHJlYW0vQ2FwYWJpbGl0eVJhbmdlLmlkbCBcCisJJChXZWJDb3JlKS9Nb2R1bGVz
L21lZGlhc3RyZWFtL01lZGlhU291cmNlU3RhdGVzLmlkbCBcCiAJJChXZWJDb3JlKS9Nb2R1bGVz
L21lZGlhc3RyZWFtL01lZGlhU3RyZWFtLmlkbCBcCisJJChXZWJDb3JlKS9Nb2R1bGVzL21lZGlh
c3RyZWFtL01lZGlhU3RyZWFtQ2FwYWJpbGl0aWVzLmlkbCBcCiAJJChXZWJDb3JlKS9Nb2R1bGVz
L21lZGlhc3RyZWFtL01lZGlhU3RyZWFtRXZlbnQuaWRsIFwKIAkkKFdlYkNvcmUpL01vZHVsZXMv
bWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1UcmFjay5pZGwgXAogCSQoV2ViQ29yZSkvTW9kdWxlcy9t
ZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVRyYWNrRXZlbnQuaWRsIFwKIAkkKFdlYkNvcmUpL01vZHVs
ZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1UcmFja1NvdXJjZXNDYWxsYmFjay5pZGwgXAorCSQo
V2ViQ29yZSkvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVRyYWNrQ29uc3RyYWludC5pZGwgXAor
CSQoV2ViQ29yZSkvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVRyYWNrQ29uc3RyYWludHMuaWRs
IFwKKwkkKFdlYkNvcmUpL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFUcmFja0NvbnN0cmFpbnRT
ZXQuaWRsIFwKIAkkKFdlYkNvcmUpL01vZHVsZXMvbWVkaWFzdHJlYW0vTmF2aWdhdG9yTWVkaWFT
dHJlYW0uaWRsIFwKIAkkKFdlYkNvcmUpL01vZHVsZXMvbWVkaWFzdHJlYW0vTmF2aWdhdG9yVXNl
ck1lZGlhRXJyb3IuaWRsIFwKIAkkKFdlYkNvcmUpL01vZHVsZXMvbWVkaWFzdHJlYW0vTmF2aWdh
dG9yVXNlck1lZGlhRXJyb3JDYWxsYmFjay5pZGwgXApAQCAtMTg0NSwxMiArMTg3MSwyMCBAQCB3
ZWJjb3JlX21vZHVsZXNfc291cmNlcyArPSBcCiAJU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRp
YXNvdXJjZS9XZWJLaXRTb3VyY2VCdWZmZXIuaCBcCiAJU291cmNlL1dlYkNvcmUvTW9kdWxlcy9t
ZWRpYXNvdXJjZS9XZWJLaXRTb3VyY2VCdWZmZXJMaXN0LmNwcCBcCiAJU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9tZWRpYXNvdXJjZS9XZWJLaXRTb3VyY2VCdWZmZXJMaXN0LmggXAorCVNvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vQWxsQXVkaW9DYXBhYmlsaXRpZXMuaCBcCisJU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9BbGxWaWRlb0NhcGFiaWxpdGllcy5oIFwK
IAlTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL0F1ZGlvU3RyZWFtVHJhY2suY3Bw
IFwKIAlTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL0F1ZGlvU3RyZWFtVHJhY2su
aCBcCisJU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9DYXBhYmlsaXR5UmFuZ2Uu
Y3BwIFwKKwlTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL0NhcGFiaWxpdHlSYW5n
ZS5oIFwKIAlTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhQ29uc3RyYWlu
dHNJbXBsLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYUNv
bnN0cmFpbnRzSW1wbC5oIFwKKwlTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01l
ZGlhU291cmNlU3RhdGVzLmNwcCBcCisJU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVh
bS9NZWRpYVNvdXJjZVN0YXRlcy5oIFwKIAlTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3Ry
ZWFtL01lZGlhU3RyZWFtLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVh
bS9NZWRpYVN0cmVhbS5oIFwKKwlTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01l
ZGlhU3RyZWFtQ2FwYWJpbGl0aWVzLmNwcCBcCisJU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRp
YXN0cmVhbS9NZWRpYVN0cmVhbUNhcGFiaWxpdGllcy5oIFwKIAlTb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtRXZlbnQuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtRXZlbnQuaCBcCiAJU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVJlZ2lzdHJ5LmNwcCBcCkBAIC0xODYyLDYg
KzE4OTYsMTIgQEAgd2ViY29yZV9tb2R1bGVzX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1UcmFja1NvdXJjZXNDYWxsYmFjay5oIFwK
IAlTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJhY2tTb3Vy
Y2VzUmVxdWVzdC5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVk
aWFTdHJlYW1UcmFja1NvdXJjZXNSZXF1ZXN0LmggXAorCVNvdXJjZS9XZWJDb3JlL01vZHVsZXMv
bWVkaWFzdHJlYW0vTWVkaWFUcmFja0NvbnN0cmFpbnQuY3BwIFwKKwlTb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL21lZGlhc3RyZWFtL01lZGlhVHJhY2tDb25zdHJhaW50LmggXAorCVNvdXJjZS9XZWJD
b3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFUcmFja0NvbnN0cmFpbnRTZXQuY3BwIFwKKwlT
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhVHJhY2tDb25zdHJhaW50U2V0
LmggXAorCVNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFUcmFja0NvbnN0
cmFpbnRzLmNwcCBcCisJU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVRy
YWNrQ29uc3RyYWludHMuaCBcCiAJU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9O
YXZpZ2F0b3JNZWRpYVN0cmVhbS5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFz
dHJlYW0vTmF2aWdhdG9yTWVkaWFTdHJlYW0uaCBcCiAJU291cmNlL1dlYkNvcmUvTW9kdWxlcy9t
ZWRpYXN0cmVhbS9OYXZpZ2F0b3JVc2VyTWVkaWFFcnJvci5jcHAgXApAQCAtNTMyOSw2ICs1MzY5
LDggQEAgd2ViY29yZV9wbGF0Zm9ybV9zb3VyY2VzICs9IFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9saW51eC9HYW1lcGFkRGV2aWNlTGludXguY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9saW51eC9HYW1lcGFkRGV2aWNlTGludXguaCBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWVkaWFzdHJlYW0vTWVkaWFDb25zdHJhaW50cy5oIFwKKwlTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbUF1ZGlvU291cmNlLmNwcCBcCisJU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1BdWRpb1NvdXJjZS5oIFwKIAlT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbUNlbnRlci5jcHAg
XAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtQ2VudGVy
LmggXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtQ29u
c3RyYWludHNWYWxpZGF0aW9uQ2xpZW50LmggXApAQCAtNTMzNyw2ICs1Mzc5LDcgQEAgd2ViY29y
ZV9wbGF0Zm9ybV9zb3VyY2VzICs9IFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0
cmVhbS9NZWRpYVN0cmVhbURlc2NyaXB0b3IuaCBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1Tb3VyY2UuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVNvdXJjZS5oIFwKKwlTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVNvdXJjZUNhcGFiaWxpdGllcy5oIFwKIAlT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVRyYWNrU291cmNl
c1JlcXVlc3RDbGllbnQuaCBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0v
UlRDQ29uZmlndXJhdGlvbi5oIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVh
bS9SVENEVE1GU2VuZGVySGFuZGxlci5oIFwKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMv
bWVkaWFzdHJlYW0vQWxsQXVkaW9DYXBhYmlsaXRpZXMuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL0FsbEF1ZGlvQ2FwYWJpbGl0aWVzLmgJKHJldmlz
aW9uIDApCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL0FsbEF1ZGlvQ2Fw
YWJpbGl0aWVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw1OSBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBg
YEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9S
CisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lm
bmRlZiBBbGxBdWRpb0NhcGFiaWxpdGllc19oCisjZGVmaW5lIEFsbEF1ZGlvQ2FwYWJpbGl0aWVz
X2gKKworI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCisKKyNpbmNsdWRlICJNZWRpYVN0cmVhbUNh
cGFiaWxpdGllcy5oIgorI2luY2x1ZGUgIk1lZGlhU3RyZWFtU291cmNlQ2FwYWJpbGl0aWVzLmgi
CisjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsK
KworY2xhc3MgQ2FwYWJpbGl0eVJhbmdlOworY2xhc3MgTWVkaWFTdHJlYW1Tb3VyY2VDYXBhYmls
aXRpZXM7CisKK2NsYXNzIEFsbEF1ZGlvQ2FwYWJpbGl0aWVzIDogcHVibGljIE1lZGlhU3RyZWFt
Q2FwYWJpbGl0aWVzIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxBbGxBdWRpb0Nh
cGFiaWxpdGllcz4gY3JlYXRlKFBhc3NSZWZQdHI8TWVkaWFTdHJlYW1Tb3VyY2VDYXBhYmlsaXRp
ZXM+IGNhcGFiaWxpdGllcykKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgQWxs
QXVkaW9DYXBhYmlsaXRpZXMoY2FwYWJpbGl0aWVzKSk7CisgICAgfQorICAgIHZpcnR1YWwgfkFs
bEF1ZGlvQ2FwYWJpbGl0aWVzKCkgeyB9CisKK3ByaXZhdGU6CisgICAgZXhwbGljaXQgQWxsQXVk
aW9DYXBhYmlsaXRpZXMoUGFzc1JlZlB0cjxNZWRpYVN0cmVhbVNvdXJjZUNhcGFiaWxpdGllcz4g
Y2FwYWJpbGl0aWVzKQorICAgICAgICA6IE1lZGlhU3RyZWFtQ2FwYWJpbGl0aWVzKGNhcGFiaWxp
dGllcykKKyAgICB7CisgICAgfQorfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5k
aWYgLy8gQWxsQXVkaW9DYXBhYmlsaXRpZXNfaAorCisjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vQWxsQXVkaW9DYXBhYmlsaXRpZXMuaWRsCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vQWxsQXVkaW9DYXBhYmls
aXRpZXMuaWRsCShyZXZpc2lvbiAwKQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0
cmVhbS9BbGxBdWRpb0NhcGFiaWxpdGllcy5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwz
MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuIAorICovCisKK1sKKyAgICBOb0ludGVyZmFjZU9iamVjdCwKKyAgICBDb25kaXRpb25h
bD1NRURJQV9TVFJFQU0sCisgICAgSlNHZW5lcmF0ZVRvSlNPYmplY3QsCitdIGludGVyZmFjZSBB
bGxBdWRpb0NhcGFiaWxpdGllcyA6IE1lZGlhU3RyZWFtQ2FwYWJpbGl0aWVzIHsKKyAgICByZWFk
b25seSBhdHRyaWJ1dGUgRE9NU3RyaW5nW10gc291cmNlSWQ7CisgICAgcmVhZG9ubHkgYXR0cmli
dXRlIENhcGFiaWxpdHlSYW5nZSB2b2x1bWU7Cit9OwpJbmRleDogU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9tZWRpYXN0cmVhbS9BbGxWaWRlb0NhcGFiaWxpdGllcy5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vQWxsVmlkZW9DYXBhYmlsaXRpZXMuaAko
cmV2aXNpb24gMCkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vQWxsVmlk
ZW9DYXBhYmlsaXRpZXMuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDU3IEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJ
TkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElO
Qy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjaWZuZGVmIEFsbFZpZGVvQ2FwYWJpbGl0aWVzX2gKKyNkZWZpbmUgQWxsVmlkZW9DYXBhYmls
aXRpZXNfaAorCisjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKKworI2luY2x1ZGUgIk1lZGlhU3Ry
ZWFtQ2FwYWJpbGl0aWVzLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgQ2FwYWJp
bGl0eVJhbmdlOworY2xhc3MgTWVkaWFTdHJlYW1Tb3VyY2VDYXBhYmlsaXRpZXM7CisKK2NsYXNz
IEFsbFZpZGVvQ2FwYWJpbGl0aWVzIDogcHVibGljIE1lZGlhU3RyZWFtQ2FwYWJpbGl0aWVzIHsK
K3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxBbGxWaWRlb0NhcGFiaWxpdGllcz4gY3Jl
YXRlKFBhc3NSZWZQdHI8TWVkaWFTdHJlYW1Tb3VyY2VDYXBhYmlsaXRpZXM+IGNhcGFiaWxpdGll
cykKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgQWxsVmlkZW9DYXBhYmlsaXRp
ZXMoY2FwYWJpbGl0aWVzKSk7CisgICAgfQorICAgIHZpcnR1YWwgfkFsbFZpZGVvQ2FwYWJpbGl0
aWVzKCkgeyB9CisKK3ByaXZhdGU6CisgICAgZXhwbGljaXQgQWxsVmlkZW9DYXBhYmlsaXRpZXMo
UGFzc1JlZlB0cjxNZWRpYVN0cmVhbVNvdXJjZUNhcGFiaWxpdGllcz4gY2FwYWJpbGl0aWVzKQor
ICAgICAgICA6IE1lZGlhU3RyZWFtQ2FwYWJpbGl0aWVzKGNhcGFiaWxpdGllcykKKyAgICB7Cisg
ICAgfQorfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gQWxsVmlkZW9D
YXBhYmlsaXRpZXNfaAorCisjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVk
aWFzdHJlYW0vQWxsVmlkZW9DYXBhYmlsaXRpZXMuaWRsCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vQWxsVmlkZW9DYXBhYmlsaXRpZXMuaWRsCShyZXZp
c2lvbiAwKQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9BbGxWaWRlb0Nh
cGFiaWxpdGllcy5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwzOCBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5D
LiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMu
IE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisK
K1sKKyAgICBOb0ludGVyZmFjZU9iamVjdCwKKyAgICBDb25kaXRpb25hbD1NRURJQV9TVFJFQU0s
CisgICAgSlNHZW5lcmF0ZVRvSlNPYmplY3QsCitdIGludGVyZmFjZSBBbGxWaWRlb0NhcGFiaWxp
dGllcyA6IE1lZGlhU3RyZWFtQ2FwYWJpbGl0aWVzIHsKKyAgICByZWFkb25seSBhdHRyaWJ1dGUg
RE9NU3RyaW5nW10gc291cmNlVHlwZTsKKyAgICByZWFkb25seSBhdHRyaWJ1dGUgRE9NU3RyaW5n
W10gc291cmNlSWQ7CisgICAgcmVhZG9ubHkgYXR0cmlidXRlIENhcGFiaWxpdHlSYW5nZSB3aWR0
aDsKKyAgICByZWFkb25seSBhdHRyaWJ1dGUgQ2FwYWJpbGl0eVJhbmdlIGhlaWdodDsKKyAgICBy
ZWFkb25seSBhdHRyaWJ1dGUgQ2FwYWJpbGl0eVJhbmdlIGZyYW1lUmF0ZTsKKyAgICByZWFkb25s
eSBhdHRyaWJ1dGUgQ2FwYWJpbGl0eVJhbmdlIGFzcGVjdFJhdGlvOworICAgIHJlYWRvbmx5IGF0
dHJpYnV0ZSBET01TdHJpbmdbXSAgZmFjaW5nTW9kZTsKK307CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL21lZGlhc3RyZWFtL0F1ZGlvU3RyZWFtVHJhY2suY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vQXVkaW9TdHJlYW1UcmFjay5jcHAJ
KHJldmlzaW9uIDE1Njk0NikKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0v
QXVkaW9TdHJlYW1UcmFjay5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM3LDE0ICszNywxNyBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKIFBhc3NSZWZQdHI8QXVkaW9TdHJlYW1UcmFjaz4gQXVkaW9T
dHJlYW1UcmFjazo6Y3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIGNvbnN0
IERpY3Rpb25hcnkmIGF1ZGlvQ29uc3RyYWludHMpCiB7Ci0gICAgUmVmUHRyPEF1ZGlvU3RyZWFt
VHJhY2s+IHRyYWNrID0gYWRvcHRSZWYobmV3IEF1ZGlvU3RyZWFtVHJhY2soY29udGV4dCwgMCwg
JmF1ZGlvQ29uc3RyYWludHMpKTsKLSAgICByZXR1cm4gdHJhY2sucmVsZWFzZSgpOworICAgIHJl
dHVybiBhZG9wdFJlZihuZXcgQXVkaW9TdHJlYW1UcmFjayhjb250ZXh0LCAwLCAmYXVkaW9Db25z
dHJhaW50cykpOwogfQogCiBQYXNzUmVmUHRyPEF1ZGlvU3RyZWFtVHJhY2s+IEF1ZGlvU3RyZWFt
VHJhY2s6OmNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBNZWRpYVN0cmVh
bVNvdXJjZSogc291cmNlKQogewotICAgIFJlZlB0cjxBdWRpb1N0cmVhbVRyYWNrPiB0cmFjayA9
IGFkb3B0UmVmKG5ldyBBdWRpb1N0cmVhbVRyYWNrKGNvbnRleHQsIHNvdXJjZSwgMCkpOwotICAg
IHJldHVybiB0cmFjay5yZWxlYXNlKCk7CisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBBdWRpb1N0
cmVhbVRyYWNrKGNvbnRleHQsIHNvdXJjZSwgMCkpOworfQorCitQYXNzUmVmUHRyPEF1ZGlvU3Ry
ZWFtVHJhY2s+IEF1ZGlvU3RyZWFtVHJhY2s6OmNyZWF0ZShNZWRpYVN0cmVhbVRyYWNrKiB0cmFj
aykKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3IEF1ZGlvU3RyZWFtVHJhY2sodHJhY2spKTsK
IH0KIAogQXVkaW9TdHJlYW1UcmFjazo6QXVkaW9TdHJlYW1UcmFjayhTY3JpcHRFeGVjdXRpb25D
b250ZXh0KiBjb250ZXh0LCBNZWRpYVN0cmVhbVNvdXJjZSogc291cmNlLCBjb25zdCBEaWN0aW9u
YXJ5KiBhdWRpb0NvbnN0cmFpbnRzKQpAQCAtNTIsNiArNTUsMTEgQEAgQXVkaW9TdHJlYW1UcmFj
azo6QXVkaW9TdHJlYW1UcmFjayhTY3JpcAogewogfQogCitBdWRpb1N0cmVhbVRyYWNrOjpBdWRp
b1N0cmVhbVRyYWNrKE1lZGlhU3RyZWFtVHJhY2sqIHRyYWNrKQorICAgIDogTWVkaWFTdHJlYW1U
cmFjayh0cmFjaykKK3sKK30KKwogY29uc3QgQXRvbWljU3RyaW5nJiBBdWRpb1N0cmVhbVRyYWNr
OjpraW5kKCkgY29uc3QKIHsKICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8QXRvbWljU3RyaW5n
PiBhdWRpb0tpbmQoImF1ZGlvIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL0F1ZGlvU3RyZWFtVHJh
Y2suaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL0F1
ZGlvU3RyZWFtVHJhY2suaAkocmV2aXNpb24gMTU2OTQ2KQorKysgU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9tZWRpYXN0cmVhbS9BdWRpb1N0cmVhbVRyYWNrLmgJKHdvcmtpbmcgY29weSkKQEAgLTI5
LDE4ICsyOSwxOSBAQAogI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCiAKICNpbmNsdWRlICJNZWRp
YVN0cmVhbVRyYWNrLmgiCi0jaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogI2luY2x1ZGUgPHd0Zi9S
ZWZDb3VudGVkLmg+CisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKIGNsYXNzIE1lZGlhU3RyZWFtU291cmNlOwogY2xhc3MgU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dDsKIAotY2xhc3MgQXVkaW9TdHJlYW1UcmFjayA6IHB1YmxpYyBNZWRpYVN0cmVhbVRyYWNr
IHsKK2NsYXNzIEF1ZGlvU3RyZWFtVHJhY2sgRklOQUwgOiBwdWJsaWMgTWVkaWFTdHJlYW1UcmFj
ayB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8QXVkaW9TdHJlYW1UcmFjaz4gY3Jl
YXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBjb25zdCBEaWN0aW9uYXJ5Jik7CiAgICAgc3Rh
dGljIFBhc3NSZWZQdHI8QXVkaW9TdHJlYW1UcmFjaz4gY3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQqLCBNZWRpYVN0cmVhbVNvdXJjZSopOworICAgIHN0YXRpYyBQYXNzUmVmUHRyPEF1ZGlv
U3RyZWFtVHJhY2s+IGNyZWF0ZShNZWRpYVN0cmVhbVRyYWNrKik7CiAKICAgICB2aXJ0dWFsIH5B
dWRpb1N0cmVhbVRyYWNrKCkgeyB9CiAKQEAgLTQ4LDYgKzQ5LDcgQEAgcHVibGljOgogCiBwcml2
YXRlOgogICAgIEF1ZGlvU3RyZWFtVHJhY2soU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIE1lZGlh
U3RyZWFtU291cmNlKiwgY29uc3QgRGljdGlvbmFyeSopOworICAgIGV4cGxpY2l0IEF1ZGlvU3Ry
ZWFtVHJhY2soTWVkaWFTdHJlYW1UcmFjayopOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9DYXBhYmlsaXR5UmFu
Z2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0v
Q2FwYWJpbGl0eVJhbmdlLmNwcAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvbWVkaWFzdHJlYW0vQ2FwYWJpbGl0eVJhbmdlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCww
ICsxLDkyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09N
UFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4gCisgKgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2lmIEVOQUJMRShNRURJQV9T
VFJFQU0pCisKKyNpbmNsdWRlICJDYXBhYmlsaXR5UmFuZ2UuaCIKKworI2luY2x1ZGUgIkpTRE9N
QmluZGluZy5oIgorI2luY2x1ZGUgIk1lZGlhU291cmNlU3RhdGVzLmgiCisjaW5jbHVkZSAiU2Ny
aXB0VmFsdWUuaCIKKyNpbmNsdWRlIDxpbnRlcnByZXRlci9DYWxsRnJhbWUuaD4KKyNpbmNsdWRl
IDxydW50aW1lL0pTQ0pTVmFsdWUuaD4KKwordXNpbmcgbmFtZXNwYWNlIEpTQzsKKworbmFtZXNw
YWNlIFdlYkNvcmUgeworCitQYXNzUmVmUHRyPENhcGFiaWxpdHlSYW5nZT4gQ2FwYWJpbGl0eVJh
bmdlOjpjcmVhdGUoY29uc3QgTWVkaWFTdHJlYW1Tb3VyY2VDYXBhYmlsaXR5UmFuZ2UmIHJhbmdl
SW5mbykKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3IENhcGFiaWxpdHlSYW5nZShyYW5nZUlu
Zm8pKTsKK30KKworQ2FwYWJpbGl0eVJhbmdlOjpDYXBhYmlsaXR5UmFuZ2UoY29uc3QgTWVkaWFT
dHJlYW1Tb3VyY2VDYXBhYmlsaXR5UmFuZ2UmIHJhbmdlSW5mbykKKyAgICA6IG1fcmFuZ2VJbmZv
KHJhbmdlSW5mbykKK3sKK30KKworc3RhdGljIFNjcmlwdFZhbHVlIHNjcmlwdFZhbHVlKEV4ZWNT
dGF0ZSogZXhlYywgY29uc3QgTWVkaWFTdHJlYW1Tb3VyY2VDYXBhYmlsaXR5UmFuZ2U6OlZhbHVl
VW5pb24mIHZhbHVlLCBNZWRpYVN0cmVhbVNvdXJjZUNhcGFiaWxpdHlSYW5nZTo6VHlwZSB0eXBl
KQoreworICAgIC8vIE5PVEU6IHRoZSBzcGVjIHNheXM6CisgICAgLy8gICAgICAuLi4gYW4gaW1w
bGVtZW50YXRpb24gc2hvdWxkIG1ha2UgYSByZWFzb25hYmxlIGF0dGVtcHQgdG8gdHJhbnNsYXRl
IGFuZCBzY2FsZSB0aGUgaGFyZHdhcmUncyBzZXR0aW5nCisgICAgLy8gICAgICBvbnRvIHRoZSBt
YXBwaW5nIHByb3ZpZGVkIGJ5IHRoaXMgc3BlY2lmaWNhdGlvbi4gSWYgdGhpcyBpcyBub3QgcG9z
c2libGUgZHVlIHRvIHRoZSB1c2VyIGFnZW50J3MKKyAgICAvLyAgICAgIGluYWJpbGl0eSB0byBy
ZXRyaWV2ZSBhIGdpdmVuIGNhcGFiaWxpdHkgZnJvbSBhIHNvdXJjZSwgdGhlbiBmb3IgQ2FwYWJp
bGl0eVJhbmdlLXR5cGVkIGNhcGFiaWxpdGllcywKKyAgICAvLyAgICAgIHRoZSBtaW4gYW5kIG1h
eCBmaWVsZHMgd2lsbCBub3QgYmUgcHJlc2VudCBvbiB0aGUgcmV0dXJuZWQgZGljdGlvbmFyeSwg
YW5kIHRoZSBzdXBwb3J0ZWQgZmllbGQgd2lsbCBiZSBmYWxzZS4KKyAgICAvLyBXZSBkb24ndCBk
byB0aGlzIGN1cnJlbnRseSBiZWNhdXNlIEkgZG9uJ3Qga25vdyBvZiBhbiBpbnN0YW5jZSB3aGVy
ZSBpdCBpc24ndCBwb3NzaWJsZSB0byByZXRyaWV2ZSBhIHNvdXJjZQorICAgIC8vIGNhcGFiaWxp
dHksIGJ1dCB3aGVuIHdlIGhhdmUgdG8gZGVhbCB3aXRoIHRoaXMgd2Ugd2lsbCBuZWVkIHRvIG1h
cmsgQ2FwYWJpbGl0eVJhbmdlLm1pbiBhbmQgQ2FwYWJpbGl0eVJhbmdlLm1heCBhcworICAgIC8v
ICJDdXN0b20iIGFuZCByZXR1cm4ganNVbmRlZmluZWQoKSBmcm9tIHRoZSBjdXN0b20gZ2V0dGVy
IHRvIHN1cHBvcnQgaXQuCisgICAgCisgICAgc3dpdGNoICh0eXBlKSB7CisgICAgY2FzZSBNZWRp
YVN0cmVhbVNvdXJjZUNhcGFiaWxpdHlSYW5nZTo6RmxvYXQ6CisgICAgICAgIHJldHVybiBTY3Jp
cHRWYWx1ZShleGVjLT52bSgpLCBKU1ZhbHVlKHZhbHVlLmFzRmxvYXQpKTsKKyAgICAgICAgYnJl
YWs7CisgICAgY2FzZSBNZWRpYVN0cmVhbVNvdXJjZUNhcGFiaWxpdHlSYW5nZTo6VUxvbmc6Cisg
ICAgICAgIHJldHVybiBTY3JpcHRWYWx1ZShleGVjLT52bSgpLCBKU1ZhbHVlKHZhbHVlLmFzVUxv
bmcpKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBNZWRpYVN0cmVhbVNvdXJjZUNhcGFiaWxp
dHlSYW5nZTo6VW5kZWZpbmVkOgorICAgICAgICByZXR1cm4gU2NyaXB0VmFsdWUoZXhlYy0+dm0o
KSwganNVbmRlZmluZWQoKSk7CisgICAgICAgIGJyZWFrOworICAgIH0KKworICAgIEFTU0VSVF9O
T1RfUkVBQ0hFRCgpOworICAgIHJldHVybiBTY3JpcHRWYWx1ZShleGVjLT52bSgpLCBqc1VuZGVm
aW5lZCgpKTsKK30KKworU2NyaXB0VmFsdWUgQ2FwYWJpbGl0eVJhbmdlOjptaW4oRXhlY1N0YXRl
KiBleGVjKSBjb25zdAoreworICAgIHJldHVybiBzY3JpcHRWYWx1ZShleGVjLCBtX3JhbmdlSW5m
by5taW4oKSwgbV9yYW5nZUluZm8udHlwZSgpKTsKK30KKworU2NyaXB0VmFsdWUgQ2FwYWJpbGl0
eVJhbmdlOjptYXgoRXhlY1N0YXRlKiBleGVjKSBjb25zdAoreworICAgIHJldHVybiBzY3JpcHRW
YWx1ZShleGVjLCBtX3JhbmdlSW5mby5tYXgoKSwgbV9yYW5nZUluZm8udHlwZSgpKTsKK30KKwor
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvbWVkaWFzdHJlYW0vQ2FwYWJpbGl0eVJhbmdlLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9DYXBhYmlsaXR5UmFuZ2UuaAkocmV2aXNpb24g
MCkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vQ2FwYWJpbGl0eVJhbmdl
LmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw2MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQor
ICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwK
KyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICoKKyAqLworCisjaWZuZGVmIENhcGFiaWxp
dHlSYW5nZV9oCisjZGVmaW5lIENhcGFiaWxpdHlSYW5nZV9oCisKKyNpZiBFTkFCTEUoTUVESUFf
U1RSRUFNKQorCisjaW5jbHVkZSAiTWVkaWFTdHJlYW1Tb3VyY2VDYXBhYmlsaXRpZXMuaCIKKyNp
bmNsdWRlICJTY3JpcHRWYWx1ZS5oIgorI2luY2x1ZGUgIlNjcmlwdFdyYXBwYWJsZS5oIgorI2lu
Y2x1ZGUgPGludGVycHJldGVyL0NhbGxGcmFtZS5oPgorI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVk
Lmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgQ2FwYWJpbGl0eVJhbmdlIDogcHVi
bGljIFJlZkNvdW50ZWQ8Q2FwYWJpbGl0eVJhbmdlPiwgcHVibGljIFNjcmlwdFdyYXBwYWJsZSB7
CitwdWJsaWM6CisgICAgdmlydHVhbCB+Q2FwYWJpbGl0eVJhbmdlKCkgeyB9CisKKyAgICBzdGF0
aWMgUGFzc1JlZlB0cjxDYXBhYmlsaXR5UmFuZ2U+IGNyZWF0ZShjb25zdCBNZWRpYVN0cmVhbVNv
dXJjZUNhcGFiaWxpdHlSYW5nZSYpOworCisgICAgU2NyaXB0VmFsdWUgbWluKEpTQzo6RXhlY1N0
YXRlKikgY29uc3Q7CisgICAgU2NyaXB0VmFsdWUgbWF4KEpTQzo6RXhlY1N0YXRlKikgY29uc3Q7
CisgICAgYm9vbCBzdXBwb3J0ZWQoKSBjb25zdCB7IHJldHVybiBtX3JhbmdlSW5mby5zdXBwb3J0
ZWQoKTsgfQorCitwcml2YXRlOgorICAgIENhcGFiaWxpdHlSYW5nZShjb25zdCBNZWRpYVN0cmVh
bVNvdXJjZUNhcGFiaWxpdHlSYW5nZSYpOworICAgIAorICAgIE1lZGlhU3RyZWFtU291cmNlQ2Fw
YWJpbGl0eVJhbmdlIG1fcmFuZ2VJbmZvOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQor
CisjZW5kaWYgLy8gQ2FwYWJpbGl0eVJhbmdlX2gKKworI2VuZGlmCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL0NhcGFiaWxpdHlSYW5nZS5pZGwKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9DYXBhYmlsaXR5UmFuZ2UuaWRs
CShyZXZpc2lvbiAwKQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9DYXBh
YmlsaXR5UmFuZ2UuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMzMgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElO
Qy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5D
LiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLwor
CitbCisgICAgTm9JbnRlcmZhY2VPYmplY3QsCisgICAgQ29uZGl0aW9uYWw9TUVESUFfU1RSRUFN
LAorXSBpbnRlcmZhY2UgQ2FwYWJpbGl0eVJhbmdlIHsKKyAgICBbQ2FsbFdpdGg9U2NyaXB0U3Rh
dGVdIHJlYWRvbmx5IGF0dHJpYnV0ZSBhbnkgbWF4OworICAgIFtDYWxsV2l0aD1TY3JpcHRTdGF0
ZV0gcmVhZG9ubHkgYXR0cmlidXRlIGFueSBtaW47CisgICAgcmVhZG9ubHkgYXR0cmlidXRlIGJv
b2xlYW4gc3VwcG9ydGVkOworfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFz
dHJlYW0vTWVkaWFDb25zdHJhaW50c0ltcGwuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhQ29uc3RyYWludHNJbXBsLmgJKHJldmlzaW9uIDE1
Njk0NikKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFDb25zdHJh
aW50c0ltcGwuaAkod29ya2luZyBjb3B5KQpAQCAtNDUsNyArNDUsOSBAQCBjbGFzcyBNZWRpYUNv
bnN0cmFpbnRzSW1wbCA6IHB1YmxpYyBNZWRpCiBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NSZWZQ
dHI8TWVkaWFDb25zdHJhaW50c0ltcGw+IGNyZWF0ZSgpOwogICAgIHN0YXRpYyBQYXNzUmVmUHRy
PE1lZGlhQ29uc3RyYWludHNJbXBsPiBjcmVhdGUoY29uc3QgRGljdGlvbmFyeSYsIEV4Y2VwdGlv
bkNvZGUmKTsKKwogICAgIHZpcnR1YWwgfk1lZGlhQ29uc3RyYWludHNJbXBsKCk7CisgICAgYm9v
bCBpbml0aWFsaXplKGNvbnN0IERpY3Rpb25hcnkmKTsKIAogICAgIHZpcnR1YWwgdm9pZCBnZXRN
YW5kYXRvcnlDb25zdHJhaW50cyhWZWN0b3I8TWVkaWFDb25zdHJhaW50PiYpIGNvbnN0IE9WRVJS
SURFOwogICAgIHZpcnR1YWwgdm9pZCBnZXRPcHRpb25hbENvbnN0cmFpbnRzKFZlY3RvcjxNZWRp
YUNvbnN0cmFpbnQ+JikgY29uc3QgT1ZFUlJJREU7CkBAIC01NSw3ICs1Nyw2IEBAIHB1YmxpYzoK
IAogcHJpdmF0ZToKICAgICBNZWRpYUNvbnN0cmFpbnRzSW1wbCgpIHsgfQotICAgIGJvb2wgaW5p
dGlhbGl6ZShjb25zdCBEaWN0aW9uYXJ5Jik7CiAKICAgICBIYXNoTWFwPFN0cmluZywgU3RyaW5n
PiBtX21hbmRhdG9yeUNvbnN0cmFpbnRzOwogICAgIFZlY3RvcjxNZWRpYUNvbnN0cmFpbnQ+IG1f
b3B0aW9uYWxDb25zdHJhaW50czsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFz
dHJlYW0vTWVkaWFTb3VyY2VTdGF0ZXMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTb3VyY2VTdGF0ZXMuY3BwCShyZXZpc2lvbiAwKQor
KysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVNvdXJjZVN0YXRlcy5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxMDAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycn
IEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAq
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJj
b25maWcuaCIKKworI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCisKKyNpbmNsdWRlICJNZWRpYVNv
dXJjZVN0YXRlcy5oIgorCisjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CisKK25hbWVz
cGFjZSBXZWJDb3JlIHsKKworUGFzc1JlZlB0cjxNZWRpYVNvdXJjZVN0YXRlcz4gTWVkaWFTb3Vy
Y2VTdGF0ZXM6OmNyZWF0ZShjb25zdCBNZWRpYVN0cmVhbVNvdXJjZVN0YXRlcyYgc3RhdGVzKQor
eworICAgIHJldHVybiBhZG9wdFJlZihuZXcgTWVkaWFTb3VyY2VTdGF0ZXMoc3RhdGVzKSk7Cit9
CisKK01lZGlhU291cmNlU3RhdGVzOjpNZWRpYVNvdXJjZVN0YXRlcyhjb25zdCBNZWRpYVN0cmVh
bVNvdXJjZVN0YXRlcyYgc3RhdGVzKQorICAgIDogbV9Tb3VyY2VTdGF0ZXMoc3RhdGVzKQorewor
fQorCitjb25zdCBBdG9taWNTdHJpbmcmIE1lZGlhU291cmNlU3RhdGVzOjpmYWNpbmdNb2RlKE1l
ZGlhU3RyZWFtU291cmNlU3RhdGVzOjpWaWRlb0ZhY2luZ01vZGUgbW9kZSkKK3sKKyAgICBzdGF0
aWMgTmV2ZXJEZXN0cm95ZWQ8QXRvbWljU3RyaW5nPiB1c2VyRmFjaW5nKCJ1c2VyIiwgQXRvbWlj
U3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVk
PEF0b21pY1N0cmluZz4gZW52aXJvbm1lbnRGYWNpbmcoImVudmlyb25tZW50IiwgQXRvbWljU3Ry
aW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEF0
b21pY1N0cmluZz4gbGVmdEZhY2luZygibGVmdCIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJv
bUxpdGVyYWwpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxBdG9taWNTdHJpbmc+IHJpZ2h0
RmFjaW5nKCJyaWdodCIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOworICAg
IAorICAgIHN3aXRjaCAobW9kZSkgeworICAgIGNhc2UgTWVkaWFTdHJlYW1Tb3VyY2VTdGF0ZXM6
OlVzZXI6CisgICAgICAgIHJldHVybiB1c2VyRmFjaW5nOworICAgIGNhc2UgTWVkaWFTdHJlYW1T
b3VyY2VTdGF0ZXM6OkVudmlyb25tZW50OgorICAgICAgICByZXR1cm4gZW52aXJvbm1lbnRGYWNp
bmc7CisgICAgY2FzZSBNZWRpYVN0cmVhbVNvdXJjZVN0YXRlczo6TGVmdDoKKyAgICAgICAgcmV0
dXJuIGxlZnRGYWNpbmc7CisgICAgY2FzZSBNZWRpYVN0cmVhbVNvdXJjZVN0YXRlczo6UmlnaHQ6
CisgICAgICAgIHJldHVybiByaWdodEZhY2luZzsKKyAgICB9CisKKyAgICBBU1NFUlRfTk9UX1JF
QUNIRUQoKTsKKyAgICByZXR1cm4gZW1wdHlBdG9tOworfQorCitjb25zdCBBdG9taWNTdHJpbmcm
IE1lZGlhU291cmNlU3RhdGVzOjpzb3VyY2VUeXBlKE1lZGlhU3RyZWFtU291cmNlU3RhdGVzOjpT
b3VyY2VUeXBlIHNvdXJjZVR5cGUpCit7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEF0b21p
Y1N0cmluZz4gbm9uZSgibm9uZSIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwp
OworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxBdG9taWNTdHJpbmc+IGNhbWVyYSgiY2FtZXJh
IiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CisgICAgc3RhdGljIE5ldmVy
RGVzdHJveWVkPEF0b21pY1N0cmluZz4gbWljcm9waG9uZSgibWljcm9waG9uZSIsIEF0b21pY1N0
cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOworCisgICAgc3dpdGNoIChzb3VyY2VUeXBlKSB7
CisgICAgY2FzZSBNZWRpYVN0cmVhbVNvdXJjZVN0YXRlczo6Tm9uZToKKyAgICAgICAgcmV0dXJu
IG5vbmU7CisgICAgY2FzZSBNZWRpYVN0cmVhbVNvdXJjZVN0YXRlczo6Q2FtZXJhOgorICAgICAg
ICByZXR1cm4gY2FtZXJhOworICAgIGNhc2UgTWVkaWFTdHJlYW1Tb3VyY2VTdGF0ZXM6Ok1pY3Jv
cGhvbmU6CisgICAgICAgIHJldHVybiBtaWNyb3Bob25lOworICAgIH0KKworICAgIEFTU0VSVF9O
T1RfUkVBQ0hFRCgpOworICAgIHJldHVybiBlbXB0eUF0b207Cit9CisKK2NvbnN0IEF0b21pY1N0
cmluZyYgTWVkaWFTb3VyY2VTdGF0ZXM6OnNvdXJjZVR5cGUoKSBjb25zdAoreworICAgIHJldHVy
biBNZWRpYVNvdXJjZVN0YXRlczo6c291cmNlVHlwZShtX1NvdXJjZVN0YXRlcy5zb3VyY2VUeXBl
KTsKK30KKworY29uc3QgQXRvbWljU3RyaW5nJiBNZWRpYVNvdXJjZVN0YXRlczo6ZmFjaW5nTW9k
ZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE1lZGlhU291cmNlU3RhdGVzOjpmYWNpbmdNb2RlKG1f
U291cmNlU3RhdGVzLmZhY2luZ01vZGUpOworfQorCisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
KworI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlh
U291cmNlU3RhdGVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRp
YXN0cmVhbS9NZWRpYVNvdXJjZVN0YXRlcy5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVNvdXJjZVN0YXRlcy5oCSh3b3JraW5nIGNvcHkp
CkBAIC0wLDAgKzEsNjYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgTWVkaWFTb3VyY2VTdGF0ZXNfaAor
I2RlZmluZSBNZWRpYVNvdXJjZVN0YXRlc19oCisKKyNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQor
CisjaW5jbHVkZSAiTWVkaWFTdHJlYW1Tb3VyY2VDYXBhYmlsaXRpZXMuaCIKKyNpbmNsdWRlICJT
Y3JpcHRXcmFwcGFibGUuaCIKKyNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgorI2luY2x1ZGUgPHd0
Zi9SZWZDb3VudGVkLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgTWVkaWFTb3Vy
Y2VTdGF0ZXMgOiBwdWJsaWMgUmVmQ291bnRlZDxNZWRpYVNvdXJjZVN0YXRlcz4sIHB1YmxpYyBT
Y3JpcHRXcmFwcGFibGUgeworcHVibGljOgorICAgIHN0YXRpYyBQYXNzUmVmUHRyPE1lZGlhU291
cmNlU3RhdGVzPiBjcmVhdGUoY29uc3QgTWVkaWFTdHJlYW1Tb3VyY2VTdGF0ZXMmKTsKKworICAg
IHN0YXRpYyBjb25zdCBBdG9taWNTdHJpbmcmIHNvdXJjZVR5cGUoTWVkaWFTdHJlYW1Tb3VyY2VT
dGF0ZXM6OlNvdXJjZVR5cGUpOworICAgIHN0YXRpYyBjb25zdCBBdG9taWNTdHJpbmcmIGZhY2lu
Z01vZGUoTWVkaWFTdHJlYW1Tb3VyY2VTdGF0ZXM6OlZpZGVvRmFjaW5nTW9kZSk7CisgICAgCisg
ICAgY29uc3QgQXRvbWljU3RyaW5nJiBzb3VyY2VUeXBlKCkgY29uc3Q7CisgICAgY29uc3QgQXRv
bWljU3RyaW5nJiBzb3VyY2VJZCgpIGNvbnN0IHsgcmV0dXJuIG1fU291cmNlU3RhdGVzLnNvdXJj
ZUlkOyB9CisgICAgdW5zaWduZWQgbG9uZyB3aWR0aCgpIGNvbnN0IHsgcmV0dXJuIG1fU291cmNl
U3RhdGVzLndpZHRoOyB9CisgICAgdW5zaWduZWQgbG9uZyBoZWlnaHQoKSBjb25zdCB7IHJldHVy
biBtX1NvdXJjZVN0YXRlcy5oZWlnaHQ7IH0KKyAgICBmbG9hdCBmcmFtZVJhdGUoKSBjb25zdCB7
IHJldHVybiBtX1NvdXJjZVN0YXRlcy5mcmFtZVJhdGU7IH0KKyAgICBmbG9hdCBhc3BlY3RSYXRp
bygpIGNvbnN0IHsgcmV0dXJuIG1fU291cmNlU3RhdGVzLmFzcGVjdFJhdGlvOyB9CisgICAgY29u
c3QgQXRvbWljU3RyaW5nJiBmYWNpbmdNb2RlKCkgY29uc3Q7CisgICAgdW5zaWduZWQgbG9uZyB2
b2x1bWUoKSBjb25zdCB7IHJldHVybiBtX1NvdXJjZVN0YXRlcy52b2x1bWU7IH0KKyAgICAKKyAg
ICBib29sIGhhc1ZpZGVvU291cmNlKCkgY29uc3QgeyByZXR1cm4gbV9Tb3VyY2VTdGF0ZXMuc291
cmNlVHlwZSA9PSBNZWRpYVN0cmVhbVNvdXJjZVN0YXRlczo6Q2FtZXJhOyB9CisKK3ByaXZhdGU6
CisgICAgZXhwbGljaXQgTWVkaWFTb3VyY2VTdGF0ZXMoY29uc3QgTWVkaWFTdHJlYW1Tb3VyY2VT
dGF0ZXMmKTsKKworICAgIE1lZGlhU3RyZWFtU291cmNlU3RhdGVzIG1fU291cmNlU3RhdGVzOwor
fTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gTWVkaWFTb3VyY2VTdGF0
ZXNfaAorCisjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0v
TWVkaWFTb3VyY2VTdGF0ZXMuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvbWVkaWFzdHJlYW0vTWVkaWFTb3VyY2VTdGF0ZXMuaWRsCShyZXZpc2lvbiAwKQorKysgU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVNvdXJjZVN0YXRlcy5pZGwJKHdv
cmtpbmcgY29weSkKQEAgLTAsMCArMSw0NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFO
WQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisg
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKK2VudW0gU291cmNlVHlwZUVu
dW0geyAibm9uZSIsICJjYW1lcmEiLCAibWljcm9waG9uZSIgfTsKK2VudW0gVmlkZW9GYWNpbmdN
b2RlRW51bSB7ICJ1c2VyIiwgImVudmlyb25tZW50IiwgImxlZnQiLCAicmlnaHQiIH07CisKK1sK
KyAgICBDb25kaXRpb25hbD1NRURJQV9TVFJFQU0sCisgICAgSW1wbGVtZW50YXRpb25MYWNrc1ZU
YWJsZSwKKyAgICBOb0ludGVyZmFjZU9iamVjdCwKK10gaW50ZXJmYWNlIE1lZGlhU291cmNlU3Rh
dGVzIHsKKyAgICByZWFkb25seSBhdHRyaWJ1dGUgU291cmNlVHlwZUVudW0gc291cmNlVHlwZTsK
KyAgICByZWFkb25seSBhdHRyaWJ1dGUgRE9NU3RyaW5nIHNvdXJjZUlkOworCisgICAgW0N1c3Rv
bUdldHRlcl0gcmVhZG9ubHkgYXR0cmlidXRlIHVuc2lnbmVkIGxvbmcgd2lkdGg7CisgICAgW0N1
c3RvbUdldHRlcl0gcmVhZG9ubHkgYXR0cmlidXRlIHVuc2lnbmVkIGxvbmcgaGVpZ2h0OworICAg
IFtDdXN0b21HZXR0ZXJdIHJlYWRvbmx5IGF0dHJpYnV0ZSBmbG9hdCBmcmFtZVJhdGU7CisgICAg
W0N1c3RvbUdldHRlcl0gcmVhZG9ubHkgYXR0cmlidXRlIGZsb2F0IGFzcGVjdFJhdGlvOworICAg
IFtDdXN0b21HZXR0ZXJdIHJlYWRvbmx5IGF0dHJpYnV0ZSBWaWRlb0ZhY2luZ01vZGVFbnVtIGZh
Y2luZ01vZGU7CisgICAgW0N1c3RvbUdldHRlcl0gcmVhZG9ubHkgYXR0cmlidXRlIHVuc2lnbmVk
IGxvbmcgdm9sdW1lOworfTsKKwpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0
cmVhbS9NZWRpYVN0cmVhbS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbS5jcHAJKHJldmlzaW9uIDE1Njk0NikKKysrIFNvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW0uY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC01NiwyMiArNTYsMTMgQEAgc3RhdGljIHZvaWQgcHJvY2Vzc1RyYWNrKE1lZGlhU3Ry
ZWFtVHJhYwogICAgICAgICByZXR1cm47CiAKICAgICBNZWRpYVN0cmVhbVNvdXJjZSogc291cmNl
ID0gdHJhY2stPnNvdXJjZSgpOwotICAgIGlmICghY29udGFpbnNTb3VyY2Uoc291cmNlVmVjdG9y
LCBzb3VyY2UpKSB7Ci0gICAgICAgIGlmIChzb3VyY2UtPnN0cmVhbSgpKSB7Ci0gICAgICAgICAg
ICAvLyBGSVhNRTogdGhpcyBzaG91bGQgbm90IGJlIG5lY2Vzc2FyeSBiZWNhdXNlIHRyYWNrcyBh
bmQgc3RyZWFtcyBtdXN0IGJlIGFibGUgdG8gc2hhcmUgc291cmNlcywgYnV0IG91ciBjb2RlCi0g
ICAgICAgICAgICAvLyBjdXJyZW5sdHkgYXNzdW1lcyBlYWNoIHNvdXJjZSBpcyBhdHRhY2hlZCB0
byBqdXN0IG9uZSB0cmFjay4KLSAgICAgICAgICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xMjE5NTQKLSAgICAgICAgICAgIHNvdXJjZVZlY3Rvci5hcHBlbmQo
TWVkaWFTdHJlYW1Tb3VyY2U6OmNyZWF0ZShzb3VyY2UtPmlkKCksIHNvdXJjZS0+dHlwZSgpLCBz
b3VyY2UtPm5hbWUoKSwgc291cmNlLT5yZWFkeVN0YXRlKCksIHNvdXJjZS0+cmVxdWlyZXNBdWRp
b0NvbnN1bWVyKCkpLmdldCgpKTsKLSAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICBzb3VyY2VW
ZWN0b3IuYXBwZW5kKHNvdXJjZSk7Ci0gICAgfQorICAgIGlmICghY29udGFpbnNTb3VyY2Uoc291
cmNlVmVjdG9yLCBzb3VyY2UpKQorICAgICAgICBzb3VyY2VWZWN0b3IuYXBwZW5kKHNvdXJjZSk7
CiB9CiAKIHN0YXRpYyBQYXNzUmVmUHRyPE1lZGlhU3RyZWFtPiBjcmVhdGVGcm9tU291cmNlVmVj
dG9ycyhTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBjb25zdCBNZWRpYVN0cmVhbVNv
dXJjZVZlY3RvciYgYXVkaW9Tb3VyY2VzLCBjb25zdCBNZWRpYVN0cmVhbVNvdXJjZVZlY3RvciYg
dmlkZW9Tb3VyY2VzKQogewogICAgIFJlZlB0cjxNZWRpYVN0cmVhbURlc2NyaXB0b3I+IGRlc2Ny
aXB0b3IgPSBNZWRpYVN0cmVhbURlc2NyaXB0b3I6OmNyZWF0ZShhdWRpb1NvdXJjZXMsIHZpZGVv
U291cmNlcyk7Ci0gICAgTWVkaWFTdHJlYW1DZW50ZXI6OnNoYXJlZCgpLmRpZENyZWF0ZU1lZGlh
U3RyZWFtKGRlc2NyaXB0b3IuZ2V0KCkpOwotCiAgICAgcmV0dXJuIE1lZGlhU3RyZWFtOjpjcmVh
dGUoY29udGV4dCwgZGVzY3JpcHRvci5yZWxlYXNlKCkpOwogfQogCkBAIC0xMjEsNiArMTEyLDcg
QEAgTWVkaWFTdHJlYW06Ok1lZGlhU3RyZWFtKFNjcmlwdEV4ZWN1dGlvbgogICAgICwgbV9kZXNj
cmlwdG9yKHN0cmVhbURlc2NyaXB0b3IpCiAgICAgLCBtX3NjaGVkdWxlZEV2ZW50VGltZXIodGhp
cywgJk1lZGlhU3RyZWFtOjpzY2hlZHVsZWRFdmVudFRpbWVyRmlyZWQpCiB7CisgICAgQVNTRVJU
KG1fZGVzY3JpcHRvcik7CiAgICAgbV9kZXNjcmlwdG9yLT5zZXRDbGllbnQodGhpcyk7CiAKICAg
ICBzaXplX3QgbnVtYmVyT2ZBdWRpb1RyYWNrcyA9IG1fZGVzY3JpcHRvci0+bnVtYmVyT2ZBdWRp
b1N0cmVhbXMoKTsKQEAgLTE4NCw4ICsxNzYsNiBAQCB2b2lkIE1lZGlhU3RyZWFtOjphZGRUcmFj
ayhQYXNzUmVmUHRyPE1lCiAgICAgICAgIG1fdmlkZW9UcmFja3MuYXBwZW5kKHRyYWNrKTsKICAg
ICAgICAgYnJlYWs7CiAgICAgfQotCi0gICAgTWVkaWFTdHJlYW1DZW50ZXI6OnNoYXJlZCgpLmRp
ZEFkZE1lZGlhU3RyZWFtVHJhY2sodHJhY2stPnNvdXJjZSgpKTsKIH0KIAogdm9pZCBNZWRpYVN0
cmVhbTo6cmVtb3ZlVHJhY2soUGFzc1JlZlB0cjxNZWRpYVN0cmVhbVRyYWNrPiBwcnBUcmFjaywg
RXhjZXB0aW9uQ29kZSYgZWMpCkBAIC0yMjMsOCArMjEzLDYgQEAgdm9pZCBNZWRpYVN0cmVhbTo6
cmVtb3ZlVHJhY2soUGFzc1JlZlB0cgogCiAgICAgaWYgKCFtX2F1ZGlvVHJhY2tzLnNpemUoKSAm
JiAhbV92aWRlb1RyYWNrcy5zaXplKCkpCiAgICAgICAgIHNldEVuZGVkKCk7Ci0KLSAgICBNZWRp
YVN0cmVhbUNlbnRlcjo6c2hhcmVkKCkuZGlkUmVtb3ZlTWVkaWFTdHJlYW1UcmFjayh0cmFjay0+
c291cmNlKCkpOwogfQogCiBNZWRpYVN0cmVhbVRyYWNrKiBNZWRpYVN0cmVhbTo6Z2V0VHJhY2tC
eUlkKFN0cmluZyBpZCkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0v
TWVkaWFTdHJlYW0uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlh
c3RyZWFtL01lZGlhU3RyZWFtLmgJKHJldmlzaW9uIDE1Njk0NikKKysrIFNvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW0uaAkod29ya2luZyBjb3B5KQpAQCAtODgs
MTUgKzg4LDEzIEBAIHByb3RlY3RlZDoKICAgICB2aXJ0dWFsIHZvaWQgY29udGV4dERlc3Ryb3ll
ZCgpIE9WRVJSSURFOwogCiBwcml2YXRlOgotICAgIC8vIE1lZGlhU3RyZWFtRGVzY3JpcHRvckNs
aWVudAotICAgIHZpcnR1YWwgdm9pZCB0cmFja0RpZEVuZCgpIE9WRVJSSURFOwotICAgIHZpcnR1
YWwgdm9pZCBzdHJlYW1EaWRFbmQoKSBPVkVSUklERTsKLSAgICAKICAgICAvLyBFdmVudFRhcmdl
dAogICAgIHZpcnR1YWwgdm9pZCByZWZFdmVudFRhcmdldCgpIE9WRVJSSURFIHsgcmVmKCk7IH0K
ICAgICB2aXJ0dWFsIHZvaWQgZGVyZWZFdmVudFRhcmdldCgpIE9WRVJSSURFIHsgZGVyZWYoKTsg
fQogCiAgICAgLy8gTWVkaWFTdHJlYW1EZXNjcmlwdG9yQ2xpZW50CisgICAgdmlydHVhbCB2b2lk
IHRyYWNrRGlkRW5kKCkgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIHN0cmVhbURpZEVuZCgp
IE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBhZGRSZW1vdGVTb3VyY2UoTWVkaWFTdHJlYW1T
b3VyY2UqKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlUmVtb3RlU291cmNlKE1l
ZGlhU3RyZWFtU291cmNlKikgT1ZFUlJJREU7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1DYXBhYmlsaXRpZXMuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1DYXBhYmlsaXRp
ZXMuY3BwCShyZXZpc2lvbiAwKQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVh
bS9NZWRpYVN0cmVhbUNhcGFiaWxpdGllcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwx
NDIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2lmIEVOQUJMRShNRURJQV9T
VFJFQU0pCisKKyNpbmNsdWRlICJNZWRpYVN0cmVhbUNhcGFiaWxpdGllcy5oIgorCisjaW5jbHVk
ZSAiQWxsQXVkaW9DYXBhYmlsaXRpZXMuaCIKKyNpbmNsdWRlICJBbGxWaWRlb0NhcGFiaWxpdGll
cy5oIgorI2luY2x1ZGUgIkNhcGFiaWxpdHlSYW5nZS5oIgorI2luY2x1ZGUgIk1lZGlhU291cmNl
U3RhdGVzLmgiCisjaW5jbHVkZSAiTWVkaWFTdHJlYW1Tb3VyY2VDYXBhYmlsaXRpZXMuaCIKKwor
bmFtZXNwYWNlIFdlYkNvcmUgeworCitQYXNzUmVmUHRyPE1lZGlhU3RyZWFtQ2FwYWJpbGl0aWVz
PiBNZWRpYVN0cmVhbUNhcGFiaWxpdGllczo6Y3JlYXRlKFBhc3NSZWZQdHI8TWVkaWFTdHJlYW1T
b3VyY2VDYXBhYmlsaXRpZXM+IGNhcGFiaWxpdGllcykKK3sKKyAgICBpZiAoY2FwYWJpbGl0aWVz
LT5oYXNWaWRlb1NvdXJjZSgpKQorICAgICAgICByZXR1cm4gQWxsVmlkZW9DYXBhYmlsaXRpZXM6
OmNyZWF0ZShjYXBhYmlsaXRpZXMpOworICAgIAorICAgIHJldHVybiBBbGxBdWRpb0NhcGFiaWxp
dGllczo6Y3JlYXRlKGNhcGFiaWxpdGllcyk7Cit9CisKK01lZGlhU3RyZWFtQ2FwYWJpbGl0aWVz
OjpNZWRpYVN0cmVhbUNhcGFiaWxpdGllcyhQYXNzUmVmUHRyPE1lZGlhU3RyZWFtU291cmNlQ2Fw
YWJpbGl0aWVzPiBjYXBhYmlsaXRpZXMpCisgICAgOiBtX1NvdXJjZUNhcGFiaWxpdGllcyhjYXBh
YmlsaXRpZXMpCit7Cit9CisKK1ZlY3RvcjxTdHJpbmc+IE1lZGlhU3RyZWFtQ2FwYWJpbGl0aWVz
Ojpzb3VyY2VUeXBlKCkgY29uc3QKK3sKKyAgICBBU1NFUlQobV9Tb3VyY2VDYXBhYmlsaXRpZXMt
Pmhhc1ZpZGVvU291cmNlKCkpOworICAgIAorICAgIHNpemVfdCBjb3VudCA9IG1fU291cmNlQ2Fw
YWJpbGl0aWVzLT5zb3VyY2VUeXBlcygpLnNpemUoKTsKKyAgICBpZiAoIWNvdW50KQorICAgICAg
ICByZXR1cm4gVmVjdG9yPFN0cmluZz4oKTsKKyAgICAKKyAgICBjb25zdCBWZWN0b3I8TWVkaWFT
dHJlYW1Tb3VyY2VTdGF0ZXM6OlNvdXJjZVR5cGU+JiBzb3VyY2VUeXBlcyA9IG1fU291cmNlQ2Fw
YWJpbGl0aWVzLT5zb3VyY2VUeXBlcygpOworICAgIFZlY3RvcjxTdHJpbmc+IGNhcGFiaWxpdGll
czsKKyAgICBjYXBhYmlsaXRpZXMucmVzZXJ2ZUNhcGFjaXR5KGNvdW50KTsKKyAgICAKKyAgICBm
b3IgKHNpemVfdCBpID0gMDsgaSA8IGNvdW50OyArK2kpCisgICAgICAgIGNhcGFiaWxpdGllcy5h
cHBlbmQoTWVkaWFTb3VyY2VTdGF0ZXM6OnNvdXJjZVR5cGUoc291cmNlVHlwZXNbaV0pKTsKKyAg
ICAKKyAgICByZXR1cm4gY2FwYWJpbGl0aWVzOworfQorCitWZWN0b3I8U3RyaW5nPiBNZWRpYVN0
cmVhbUNhcGFiaWxpdGllczo6c291cmNlSWQoKSBjb25zdAoreworICAgIHNpemVfdCBjb3VudCA9
IG1fU291cmNlQ2FwYWJpbGl0aWVzLT5zb3VyY2VJZCgpLnNpemUoKTsKKyAgICBpZiAoIWNvdW50
KQorICAgICAgICByZXR1cm4gVmVjdG9yPFN0cmluZz4oKTsKKyAgICAKKyAgICBjb25zdCBWZWN0
b3I8QXRvbWljU3RyaW5nPiYgc291cmNlSWRzID0gbV9Tb3VyY2VDYXBhYmlsaXRpZXMtPnNvdXJj
ZUlkKCk7CisgICAgVmVjdG9yPFN0cmluZz4gY2FwYWJpbGl0aWVzOworICAgIGNhcGFiaWxpdGll
cy5yZXNlcnZlQ2FwYWNpdHkoY291bnQpOworICAgIAorICAgIGZvciAoc2l6ZV90IGkgPSAwOyBp
IDwgY291bnQ7ICsraSkKKyAgICAgICAgY2FwYWJpbGl0aWVzLmFwcGVuZChzb3VyY2VJZHNbaV0p
OworICAgIAorICAgIHJldHVybiBjYXBhYmlsaXRpZXM7Cit9CisKK1ZlY3RvcjxTdHJpbmc+IE1l
ZGlhU3RyZWFtQ2FwYWJpbGl0aWVzOjpmYWNpbmdNb2RlKCkgY29uc3QKK3sKKyAgICBBU1NFUlQo
bV9Tb3VyY2VDYXBhYmlsaXRpZXMtPmhhc1ZpZGVvU291cmNlKCkpOworICAgIAorICAgIHNpemVf
dCBjb3VudCA9IG1fU291cmNlQ2FwYWJpbGl0aWVzLT5mYWNpbmdNb2RlcygpLnNpemUoKTsKKyAg
ICBpZiAoIWNvdW50KQorICAgICAgICByZXR1cm4gVmVjdG9yPFN0cmluZz4oKTsKKyAgICAKKyAg
ICBjb25zdCBWZWN0b3I8TWVkaWFTdHJlYW1Tb3VyY2VTdGF0ZXM6OlZpZGVvRmFjaW5nTW9kZT4m
IGZhY2luZ01vZGVzID0gbV9Tb3VyY2VDYXBhYmlsaXRpZXMtPmZhY2luZ01vZGVzKCk7CisgICAg
VmVjdG9yPFN0cmluZz4gY2FwYWJpbGl0aWVzOworICAgIGNhcGFiaWxpdGllcy5yZXNlcnZlQ2Fw
YWNpdHkoY291bnQpOworICAgIAorICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgY291bnQ7ICsr
aSkKKyAgICAgICAgY2FwYWJpbGl0aWVzLmFwcGVuZChNZWRpYVNvdXJjZVN0YXRlczo6ZmFjaW5n
TW9kZShmYWNpbmdNb2Rlc1tpXSkpOworICAgIAorICAgIHJldHVybiBjYXBhYmlsaXRpZXM7Cit9
CisKK1JlZlB0cjxDYXBhYmlsaXR5UmFuZ2U+IE1lZGlhU3RyZWFtQ2FwYWJpbGl0aWVzOjp3aWR0
aCgpIGNvbnN0Cit7CisgICAgQVNTRVJUKG1fU291cmNlQ2FwYWJpbGl0aWVzLT5oYXNWaWRlb1Nv
dXJjZSgpKTsKKyAgICAKKyAgICByZXR1cm4gQ2FwYWJpbGl0eVJhbmdlOjpjcmVhdGUobV9Tb3Vy
Y2VDYXBhYmlsaXRpZXMtPndpZHRoKCkpOworfQorCitSZWZQdHI8Q2FwYWJpbGl0eVJhbmdlPiBN
ZWRpYVN0cmVhbUNhcGFiaWxpdGllczo6aGVpZ2h0KCkgY29uc3QKK3sKKyAgICBBU1NFUlQobV9T
b3VyY2VDYXBhYmlsaXRpZXMtPmhhc1ZpZGVvU291cmNlKCkpOworICAgIAorICAgIHJldHVybiBD
YXBhYmlsaXR5UmFuZ2U6OmNyZWF0ZShtX1NvdXJjZUNhcGFiaWxpdGllcy0+aGVpZ2h0KCkpOwor
fQorCitSZWZQdHI8Q2FwYWJpbGl0eVJhbmdlPiBNZWRpYVN0cmVhbUNhcGFiaWxpdGllczo6ZnJh
bWVSYXRlKCkgY29uc3QKK3sKKyAgICBBU1NFUlQobV9Tb3VyY2VDYXBhYmlsaXRpZXMtPmhhc1Zp
ZGVvU291cmNlKCkpOworICAgIAorICAgIHJldHVybiBDYXBhYmlsaXR5UmFuZ2U6OmNyZWF0ZSht
X1NvdXJjZUNhcGFiaWxpdGllcy0+ZnJhbWVSYXRlKCkpOworfQorCitSZWZQdHI8Q2FwYWJpbGl0
eVJhbmdlPiBNZWRpYVN0cmVhbUNhcGFiaWxpdGllczo6YXNwZWN0UmF0aW8oKSBjb25zdAorewor
ICAgIEFTU0VSVChtX1NvdXJjZUNhcGFiaWxpdGllcy0+aGFzVmlkZW9Tb3VyY2UoKSk7CisgICAg
CisgICAgcmV0dXJuIENhcGFiaWxpdHlSYW5nZTo6Y3JlYXRlKG1fU291cmNlQ2FwYWJpbGl0aWVz
LT5hc3BlY3RSYXRpbygpKTsKK30KKworUmVmUHRyPENhcGFiaWxpdHlSYW5nZT4gTWVkaWFTdHJl
YW1DYXBhYmlsaXRpZXM6OnZvbHVtZSgpIGNvbnN0Cit7CisgICAgQVNTRVJUKCFtX1NvdXJjZUNh
cGFiaWxpdGllcy0+aGFzVmlkZW9Tb3VyY2UoKSk7CisgICAgCisgICAgcmV0dXJuIENhcGFiaWxp
dHlSYW5nZTo6Y3JlYXRlKG1fU291cmNlQ2FwYWJpbGl0aWVzLT52b2x1bWUoKSk7Cit9CisKK30g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtQ2FwYWJpbGl0aWVzLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbUNhcGFiaWxpdGll
cy5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9N
ZWRpYVN0cmVhbUNhcGFiaWxpdGllcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNjkgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09N
UFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01Q
VVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNpZm5kZWYgTWVkaWFTdHJlYW1DYXBhYmlsaXRpZXNfaAorI2RlZmluZSBNZWRp
YVN0cmVhbUNhcGFiaWxpdGllc19oCisKKyNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQorCisjaW5j
bHVkZSAiTWVkaWFTdHJlYW1DYXBhYmlsaXRpZXMuaCIKKyNpbmNsdWRlICJNZWRpYVN0cmVhbVNv
dXJjZUNhcGFiaWxpdGllcy5oIgorI2luY2x1ZGUgIlNjcmlwdFdyYXBwYWJsZS5oIgorI2luY2x1
ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorI2luY2x1ZGUg
PHd0Zi90ZXh0L1dURlN0cmluZy5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIENh
cGFiaWxpdHlSYW5nZTsKK2NsYXNzIE1lZGlhU3RyZWFtU291cmNlQ2FwYWJpbGl0aWVzOworCitj
bGFzcyBNZWRpYVN0cmVhbUNhcGFiaWxpdGllcyA6IHB1YmxpYyBSZWZDb3VudGVkPE1lZGlhU3Ry
ZWFtQ2FwYWJpbGl0aWVzPiwgcHVibGljIFNjcmlwdFdyYXBwYWJsZSB7CitwdWJsaWM6CisgICAg
c3RhdGljIFBhc3NSZWZQdHI8TWVkaWFTdHJlYW1DYXBhYmlsaXRpZXM+IGNyZWF0ZShQYXNzUmVm
UHRyPE1lZGlhU3RyZWFtU291cmNlQ2FwYWJpbGl0aWVzPik7CisgICAgdmlydHVhbCB+TWVkaWFT
dHJlYW1DYXBhYmlsaXRpZXMoKSB7IH0KKworICAgIHZpcnR1YWwgVmVjdG9yPFN0cmluZz4gc291
cmNlVHlwZSgpIGNvbnN0OworICAgIHZpcnR1YWwgVmVjdG9yPFN0cmluZz4gc291cmNlSWQoKSBj
b25zdDsKKyAgICB2aXJ0dWFsIFJlZlB0cjxDYXBhYmlsaXR5UmFuZ2U+IHdpZHRoKCkgY29uc3Q7
CisgICAgdmlydHVhbCBSZWZQdHI8Q2FwYWJpbGl0eVJhbmdlPiBoZWlnaHQoKSBjb25zdDsKKyAg
ICB2aXJ0dWFsIFJlZlB0cjxDYXBhYmlsaXR5UmFuZ2U+IGZyYW1lUmF0ZSgpIGNvbnN0OworICAg
IHZpcnR1YWwgUmVmUHRyPENhcGFiaWxpdHlSYW5nZT4gYXNwZWN0UmF0aW8oKSBjb25zdDsKKyAg
ICB2aXJ0dWFsIFZlY3RvcjxTdHJpbmc+IGZhY2luZ01vZGUoKSBjb25zdDsKKyAgICB2aXJ0dWFs
IFJlZlB0cjxDYXBhYmlsaXR5UmFuZ2U+IHZvbHVtZSgpIGNvbnN0OworICAgIAorICAgIGJvb2wg
aGFzVmlkZW9Tb3VyY2UoKSB7IHJldHVybiBtX1NvdXJjZUNhcGFiaWxpdGllcy0+aGFzVmlkZW9T
b3VyY2UoKTsgfQorCitwcm90ZWN0ZWQ6CisgICAgZXhwbGljaXQgTWVkaWFTdHJlYW1DYXBhYmls
aXRpZXMoUGFzc1JlZlB0cjxNZWRpYVN0cmVhbVNvdXJjZUNhcGFiaWxpdGllcz4pOworCisgICAg
UmVmUHRyPE1lZGlhU3RyZWFtU291cmNlQ2FwYWJpbGl0aWVzPiBtX1NvdXJjZUNhcGFiaWxpdGll
czsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIE1lZGlhU3RyZWFt
Q2FwYWJpbGl0aWVzX2gKKworI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21l
ZGlhc3RyZWFtL01lZGlhU3RyZWFtQ2FwYWJpbGl0aWVzLmlkbAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtQ2FwYWJpbGl0aWVzLmlk
bAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVk
aWFTdHJlYW1DYXBhYmlsaXRpZXMuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMzMgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09N
UFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01Q
VVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LiAKKyAqLworCitbCisgICAgQ29uZGl0aW9uYWw9TUVESUFfU1RSRUFNLAorICAgIE5vSW50ZXJm
YWNlT2JqZWN0LAorICAgIFNraXBWVGFibGVWYWxpZGF0aW9uLAorICAgIEN1c3RvbVRvSlNPYmpl
Y3QsCitdIGludGVyZmFjZSBNZWRpYVN0cmVhbUNhcGFiaWxpdGllcyB7Cit9OworCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJhY2suY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJl
YW1UcmFjay5jcHAJKHJldmlzaW9uIDE1Njk0NikKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMv
bWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1UcmFjay5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI5LDMy
ICsyOSw2NSBAQAogCiAjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKIAorI2luY2x1ZGUgIkFsbEF1
ZGlvQ2FwYWJpbGl0aWVzLmgiCisjaW5jbHVkZSAiQWxsVmlkZW9DYXBhYmlsaXRpZXMuaCIKKyNp
bmNsdWRlICJBdWRpb1N0cmVhbVRyYWNrLmgiCiAjaW5jbHVkZSAiRGljdGlvbmFyeS5oIgogI2lu
Y2x1ZGUgIkV2ZW50LmgiCiAjaW5jbHVkZSAiRXhjZXB0aW9uQ29kZS5oIgorI2luY2x1ZGUgIk1l
ZGlhQ29uc3RyYWludHNJbXBsLmgiCisjaW5jbHVkZSAiTWVkaWFTb3VyY2VTdGF0ZXMuaCIKICNp
bmNsdWRlICJNZWRpYVN0cmVhbS5oIgogI2luY2x1ZGUgIk1lZGlhU3RyZWFtQ2VudGVyLmgiCiAj
aW5jbHVkZSAiTWVkaWFTdHJlYW1EZXNjcmlwdG9yLmgiCiAjaW5jbHVkZSAiTWVkaWFTdHJlYW1U
cmFja1NvdXJjZXNDYWxsYmFjay5oIgogI2luY2x1ZGUgIk1lZGlhU3RyZWFtVHJhY2tTb3VyY2Vz
UmVxdWVzdC5oIgorI2luY2x1ZGUgIk1lZGlhVHJhY2tDb25zdHJhaW50cy5oIgorI2luY2x1ZGUg
Ik5vdEltcGxlbWVudGVkLmgiCiAjaW5jbHVkZSAiVVVJRC5oIgorI2luY2x1ZGUgIlZpZGVvU3Ry
ZWFtVHJhY2suaCIKKyNpbmNsdWRlIDx3dGYvRnVuY3Rpb25hbC5oPgogI2luY2x1ZGUgPHd0Zi9O
ZXZlckRlc3Ryb3llZC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIE1lZGlhU3RyZWFtVHJh
Y2s6Ok1lZGlhU3RyZWFtVHJhY2soU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgTWVk
aWFTdHJlYW1Tb3VyY2UqIHNvdXJjZSwgY29uc3QgRGljdGlvbmFyeSopCiAgICAgOiBBY3RpdmVE
T01PYmplY3QoY29udGV4dCkKLSAgICAsIG1fc291cmNlKHNvdXJjZSkKKyAgICAsIG1fc291cmNl
KDApCiAgICAgLCBtX3JlYWR5U3RhdGUoTWVkaWFTdHJlYW1Tb3VyY2U6Ok5ldykKICAgICAsIG1f
c3RvcHBlZChmYWxzZSkKICAgICAsIG1fZW5hYmxlZCh0cnVlKQogICAgICwgbV9tdXRlZChmYWxz
ZSkKKyAgICAsIG1fZXZlbnREaXNwYXRjaFNjaGVkdWxlZChmYWxzZSkKIHsKICAgICBzdXNwZW5k
SWZOZWVkZWQoKTsKLSAgICBpZiAobV9zb3VyY2UpIHsKLSAgICAgICAgbV9zb3VyY2UtPmFkZE9i
c2VydmVyKHRoaXMpOwotICAgICAgICBtX211dGVkID0gbV9zb3VyY2UtPm11dGVkKCk7Ci0gICAg
fQorICAgIGlmIChzb3VyY2UpCisgICAgICAgIHNldFNvdXJjZShzb3VyY2UpOworfQorCitNZWRp
YVN0cmVhbVRyYWNrOjpNZWRpYVN0cmVhbVRyYWNrKE1lZGlhU3RyZWFtVHJhY2sqIG90aGVyKQor
ICAgIDogQWN0aXZlRE9NT2JqZWN0KG90aGVyLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpCit7
CisgICAgc3VzcGVuZElmTmVlZGVkKCk7CisKKyAgICAvLyBXaGVuIHRoZSBjbG9uZSgpIG1ldGhv
ZCBpcyBpbnZva2VkLCB0aGUgdXNlciBhZ2VudCBtdXN0IHJ1biB0aGUgZm9sbG93aW5nIHN0ZXBz
OgorICAgIC8vIDEuIExldCB0cmFja0Nsb25lIGJlIGEgbmV3bHkgY29uc3RydWN0ZWQgTWVkaWFT
dHJlYW1UcmFjayBvYmplY3QuCisgICAgLy8gMi4gSW5pdGlhbGl6ZSB0cmFja0Nsb25lJ3MgaWQg
YXR0cmlidXRlIHRvIGEgbmV3bHkgZ2VuZXJhdGVkIHZhbHVlLgorICAgIG1faWQgPSBjcmVhdGVD
YW5vbmljYWxVVUlEU3RyaW5nKCk7CisKKyAgICAvLyAzLiBMZXQgdHJhY2tDbG9uZSBpbmhlcml0
IHRoaXMgdHJhY2sncyB1bmRlcmx5aW5nIHNvdXJjZSwga2luZCwgbGFiZWwgYW5kIGVuYWJsZWQg
YXR0cmlidXRlcy4KKyAgICBzZXRTb3VyY2Uob3RoZXItPnNvdXJjZSgpKTsKKyAgICBtX3JlYWR5
U3RhdGUgPSBtX3NvdXJjZSA/IG1fc291cmNlLT5yZWFkeVN0YXRlKCkgOiBNZWRpYVN0cmVhbVNv
dXJjZTo6TmV3OworICAgIG1fZW5hYmxlZCA9IG90aGVyLT5lbmFibGVkKCk7CisKKyAgICAvLyBO
b3RlOiB0aGUgImNsb25lIiBzdGVwcyBkb24ndCBzYXkgYW55dGhpbmcgYWJvdXQgJ211dGVkJywg
YnV0IDQuMy4xIHNheXM6CisgICAgLy8gRm9yIGEgbmV3bHkgY3JlYXRlZCBNZWRpYVN0cmVhbVRy
YWNrIG9iamVjdCwgdGhlIGZvbGxvd2luZyBhcHBsaWVzLiBUaGUgdHJhY2sgaXMgYWx3YXlzIGVu
YWJsZWQKKyAgICAvLyB1bmxlc3Mgc3RhdGVkIG90aGVyd2lzZSAoZm9yIGV4YW1scGUgd2hlbiBj
bG9uZWQpIGFuZCB0aGUgbXV0ZWQgc3RhdGUgcmVmbGVjdHMgdGhlIHN0YXRlIG9mIHRoZQorICAg
IC8vIHNvdXJjZSBhdCB0aGUgdGltZSB0aGUgdHJhY2sgaXMgY3JlYXRlZC4KKyAgICBtX211dGVk
ID0gb3RoZXItPm11dGVkKCk7CisKKyAgICBtX2V2ZW50RGlzcGF0Y2hTY2hlZHVsZWQgPWZhbHNl
OworICAgIG1fc3RvcHBlZCA9IG90aGVyLT5zdG9wcGVkKCk7CiB9CiAKIE1lZGlhU3RyZWFtVHJh
Y2s6On5NZWRpYVN0cmVhbVRyYWNrKCkKQEAgLTg1LDYgKzExOCwxNSBAQCBjb25zdCBBdG9taWNT
dHJpbmcmIE1lZGlhU3RyZWFtVHJhY2s6OmtpCiB2b2lkIE1lZGlhU3RyZWFtVHJhY2s6OnNldFNv
dXJjZShNZWRpYVN0cmVhbVNvdXJjZSogc291cmNlKQogewogICAgIEFTU0VSVChzb3VyY2UgPT0g
bV9zb3VyY2UgfHwgIW1fc291cmNlKTsKKworICAgIGlmIChtX3NvdXJjZSkKKyAgICAgICAgbV9z
b3VyY2UtPnJlbW92ZU9ic2VydmVyKHRoaXMpOworCisgICAgaWYgKHNvdXJjZSkgeworICAgICAg
ICBzb3VyY2UtPmFkZE9ic2VydmVyKHRoaXMpOworICAgICAgICBtX211dGVkID0gc291cmNlLT5t
dXRlZCgpOworICAgIH0KKwogICAgIG1fc291cmNlID0gc291cmNlOwogfQogCkBAIC05MywxOCAr
MTM1LDEzIEBAIGNvbnN0IFN0cmluZyYgTWVkaWFTdHJlYW1UcmFjazo6aWQoKSBjb24KICAgICBp
ZiAoIW1faWQuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gbV9pZDsKIAotICAgIGlmICghbV9z
b3VyY2UpCi0gICAgICAgIHJldHVybiBlbXB0eVN0cmluZygpOwotCi0gICAgY29uc3QgU3RyaW5n
JiBpZCA9IG1fc291cmNlLT5pZCgpOwotICAgIGlmICghaWQuaXNFbXB0eSgpKQotICAgICAgICBy
ZXR1cm4gaWQ7Ci0KICAgICAvLyBUaGUgc3BlYyBzYXlzOgogICAgIC8vICAgVW5sZXNzIGEgTWVk
aWFTdHJlYW1UcmFjayBvYmplY3QgaXMgY3JlYXRlZCBhcyBhIHBhcnQgYSBvZiBzcGVjaWFsIHB1
cnBvc2UgYWxnb3JpdGhtIHRoYXQKICAgICAvLyAgIHNwZWNpZmllcyBob3cgdGhlIHRyYWNrIGlk
IG11c3QgYmUgaW5pdGlhbGl6ZWQsIHRoZSB1c2VyIGFnZW50IG11c3QgZ2VuZXJhdGUgYSBnbG9i
YWxseQogICAgIC8vICAgdW5pcXVlIGlkZW50aWZpZXIgc3RyaW5nIGFuZCBpbml0aWFsaXplIHRo
ZSBvYmplY3QncyBpZCBhdHRyaWJ1dGUgdG8gdGhhdCBzdHJpbmcuCi0gICAgLy8gc28gZ2VuZXJh
dGUgYSBVVUlEIGlmIHRoZSBzb3VyY2UgZG9lc24ndCBoYXZlIGFuIElELgorICAgIGlmIChtX3Nv
dXJjZSAmJiBtX3NvdXJjZS0+dXNlSURGb3JUcmFja0lEKCkpCisgICAgICAgIHJldHVybiBtX3Nv
dXJjZS0+aWQoKTsKKwogICAgIG1faWQgPSBjcmVhdGVDYW5vbmljYWxVVUlEU3RyaW5nKCk7CiAg
ICAgcmV0dXJuIG1faWQ7CiB9CkBAIC0xMjUsMTggKzE2Miw0MCBAQCB2b2lkIE1lZGlhU3RyZWFt
VHJhY2s6OnNldEVuYWJsZWQoYm9vbCBlCiB7CiAgICAgaWYgKG1fc3RvcHBlZCkKICAgICAgICAg
cmV0dXJuOwotICAgIAorCisgICAgLy8gNC4zLjMuMQorICAgIC8vIC4uLiBhZnRlciBhIE1lZGlh
U3RyZWFtVHJhY2sgaXMgZGlzYXNzb2NpYXRlZCBmcm9tIGl0cyB0cmFjaywgaXRzIGVuYWJsZWQg
YXR0cmlidXRlIHN0aWxsCisgICAgLy8gY2hhbmdlcyB2YWx1ZSB3aGVuIHNldDsgaXQganVzdCBk
b2Vzbid0IGRvIGFueXRoaW5nIHdpdGggdGhhdCBuZXcgdmFsdWUuCiAgICAgbV9lbmFibGVkID0g
ZW5hYmxlZDsKIAotICAgIGlmICghbV9zb3VyY2UgfHwgZW5hYmxlZCA9PSBtX3NvdXJjZS0+ZW5h
YmxlZCgpKQorICAgIGlmICghbV9zb3VyY2UpCiAgICAgICAgIHJldHVybjsKIAogICAgIG1fc291
cmNlLT5zZXRFbmFibGVkKGVuYWJsZWQpOworfQogCi0gICAgaWYgKG1fc291cmNlLT5zdHJlYW0o
KS0+ZW5kZWQoKSkKLSAgICAgICAgcmV0dXJuOworYm9vbCBNZWRpYVN0cmVhbVRyYWNrOjptdXRl
ZCgpIGNvbnN0Cit7CisgICAgaWYgKG1fc3RvcHBlZCB8fCAhbV9zb3VyY2UpCisgICAgICAgIHJl
dHVybiBmYWxzZTsKKworICAgIHJldHVybiBtX3NvdXJjZS0+bXV0ZWQoKTsKK30KKworYm9vbCBN
ZWRpYVN0cmVhbVRyYWNrOjpyZWFkb25seSgpIGNvbnN0Cit7CisgICAgaWYgKG1fc3RvcHBlZCB8
fCAhbV9zb3VyY2UpCisgICAgICAgIHJldHVybiB0cnVlOworCisgICAgcmV0dXJuIG1fc291cmNl
LT5yZWFkb25seSgpOworfQorCitib29sIE1lZGlhU3RyZWFtVHJhY2s6OnJlbW90ZSgpIGNvbnN0
Cit7CisgICAgaWYgKCFtX3NvdXJjZSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgTWVk
aWFTdHJlYW1DZW50ZXI6OnNoYXJlZCgpLmRpZFNldE1lZGlhU3RyZWFtVHJhY2tFbmFibGVkKG1f
c291cmNlLmdldCgpKTsKKyAgICByZXR1cm4gbV9zb3VyY2UtPnJlbW90ZSgpOwogfQogCiBjb25z
dCBBdG9taWNTdHJpbmcmIE1lZGlhU3RyZWFtVHJhY2s6OnJlYWR5U3RhdGUoKSBjb25zdApAQCAt
MTcxLDEyICsyMzAsNjQgQEAgdm9pZCBNZWRpYVN0cmVhbVRyYWNrOjpnZXRTb3VyY2VzKFNjcmlw
dAogICAgICAgICBlYyA9IE5PVF9TVVBQT1JURURfRVJSOwogfQogCitQYXNzUmVmUHRyPE1lZGlh
VHJhY2tDb25zdHJhaW50cz4gTWVkaWFTdHJlYW1UcmFjazo6Y29uc3RyYWludHMoKSBjb25zdAor
eworICAgIC8vIEZJWE1FOiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTIyNDI4CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gMDsKK30KKworUGFzc1Jl
ZlB0cjxNZWRpYVNvdXJjZVN0YXRlcz4gTWVkaWFTdHJlYW1UcmFjazo6c3RhdGVzKCkgY29uc3QK
K3sKKyAgICBpZiAoIW1fc291cmNlKQorICAgICAgICByZXR1cm4gMDsKKyAgICAKKyAgICByZXR1
cm4gTWVkaWFTb3VyY2VTdGF0ZXM6OmNyZWF0ZShtX3NvdXJjZS0+c3RhdGVzKCkpOworfQorCitQ
YXNzUmVmUHRyPE1lZGlhU3RyZWFtQ2FwYWJpbGl0aWVzPiBNZWRpYVN0cmVhbVRyYWNrOjpjYXBh
YmlsaXRpZXMoKSBjb25zdAoreworICAgIGlmICghbV9zb3VyY2UpCisgICAgICAgIHJldHVybiAw
OworCisgICAgcmV0dXJuIE1lZGlhU3RyZWFtQ2FwYWJpbGl0aWVzOjpjcmVhdGUobV9zb3VyY2Ut
PmNhcGFiaWxpdGllcygpKTsKK30KKwordm9pZCBNZWRpYVN0cmVhbVRyYWNrOjphcHBseUNvbnN0
cmFpbnRzKGNvbnN0IERpY3Rpb25hcnkmIGNvbnN0cmFpbnRzKQoreworICAgIC8vIEZJWE1FOiBh
cHBseSB0aGUgbmV3IGNvbnN0cmFpbnRzIHRvIHRoZSB0cmFjaworICAgIC8vIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjI0MjgKKyAgICBtX2NvbnN0cmFpbnRzLT5p
bml0aWFsaXplKGNvbnN0cmFpbnRzKTsKK30KKworUGFzc1JlZlB0cjxNZWRpYVN0cmVhbVRyYWNr
PiBNZWRpYVN0cmVhbVRyYWNrOjpjbG9uZSgpCit7CisgICAgaWYgKG1fc291cmNlICYmIG1fc291
cmNlLT50eXBlKCkgPT0gTWVkaWFTdHJlYW1Tb3VyY2U6OkF1ZGlvKQorICAgICAgICByZXR1cm4g
QXVkaW9TdHJlYW1UcmFjazo6Y3JlYXRlKHRoaXMpOworCisgICAgcmV0dXJuIFZpZGVvU3RyZWFt
VHJhY2s6OmNyZWF0ZSh0aGlzKTsKK30KKwordm9pZCBNZWRpYVN0cmVhbVRyYWNrOjpzdG9wUHJv
ZHVjaW5nRGF0YSgpCit7CisgICAgaWYgKG1fc3RvcHBlZCB8fCAhbV9zb3VyY2UpCisgICAgICAg
IHJldHVybjsKKworICAgIC8vIFNldCBtX3N0b3BwZWQgYmVmb3JlIHN0b3BwaW5nIHRoZSBzb3Vy
Y2UgYmVjYXVzZSB0aGF0IG1heSByZXN1bHQgaW4gYSBjYWxsIHRvIHNvdXJjZUNoYW5nZWRTdGF0
ZQorICAgIC8vIGFuZCB3ZSBvbmx5IHdhbnQgdG8gZGlzcGF0Y2ggdGhlICdlbmRlZCcgZXZlbnQg
aWYgbmVjZXNzYXJ5LgorICAgIG1fc3RvcHBlZCA9IHRydWU7CisgICAgbV9zb3VyY2UtPnN0b3Ao
KTsKKworICAgIGlmIChtX3JlYWR5U3RhdGUgIT0gTWVkaWFTdHJlYW1Tb3VyY2U6OkVuZGVkKQor
ICAgICAgICBzY2hlZHVsZUV2ZW50RGlzcGF0Y2goRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCku
ZW5kZWRFdmVudCwgZmFsc2UsIGZhbHNlKSk7Cit9CisKIGJvb2wgTWVkaWFTdHJlYW1UcmFjazo6
ZW5kZWQoKSBjb25zdAogewogICAgIHJldHVybiBtX3N0b3BwZWQgfHwgKG1fc291cmNlICYmIG1f
c291cmNlLT5yZWFkeVN0YXRlKCkgPT0gTWVkaWFTdHJlYW1Tb3VyY2U6OkVuZGVkKTsKIH0KIAot
dm9pZCBNZWRpYVN0cmVhbVRyYWNrOjpzb3VyY2VDaGFuZ2VkU3RhdGUoKQordm9pZCBNZWRpYVN0
cmVhbVRyYWNrOjpzb3VyY2VTdGF0ZUNoYW5nZWQoKQogewogICAgIGlmIChtX3N0b3BwZWQpCiAg
ICAgICAgIHJldHVybjsKQEAgLTE4NSwxOCArMjk2LDUwIEBAIHZvaWQgTWVkaWFTdHJlYW1UcmFj
azo6c291cmNlQ2hhbmdlZFN0YXQKICAgICBtX3JlYWR5U3RhdGUgPSBtX3NvdXJjZS0+cmVhZHlT
dGF0ZSgpOwogCiAgICAgaWYgKG1fcmVhZHlTdGF0ZSA+PSBNZWRpYVN0cmVhbVNvdXJjZTo6TGl2
ZSAmJiBvbGRSZWFkeVN0YXRlID09IE1lZGlhU3RyZWFtU291cmNlOjpOZXcpCi0gICAgICAgIGRp
c3BhdGNoRXZlbnQoRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkuc3RhcnRlZEV2ZW50LCBmYWxz
ZSwgZmFsc2UpKTsKKyAgICAgICAgc2NoZWR1bGVFdmVudERpc3BhdGNoKEV2ZW50OjpjcmVhdGUo
ZXZlbnROYW1lcygpLnN0YXJ0ZWRFdmVudCwgZmFsc2UsIGZhbHNlKSk7CiAgICAgaWYgKG1fcmVh
ZHlTdGF0ZSA9PSBNZWRpYVN0cmVhbVNvdXJjZTo6RW5kZWQgJiYgb2xkUmVhZHlTdGF0ZSAhPSBN
ZWRpYVN0cmVhbVNvdXJjZTo6RW5kZWQpCi0gICAgICAgIGRpc3BhdGNoRXZlbnQoRXZlbnQ6OmNy
ZWF0ZShldmVudE5hbWVzKCkuZW5kZWRFdmVudCwgZmFsc2UsIGZhbHNlKSk7CisgICAgICAgIHNj
aGVkdWxlRXZlbnREaXNwYXRjaChFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5lbmRlZEV2ZW50
LCBmYWxzZSwgZmFsc2UpKTsKK30KKyAgICAKK3ZvaWQgTWVkaWFTdHJlYW1UcmFjazo6c291cmNl
TXV0ZWRDaGFuZ2VkKCkKK3sKKyAgICBpZiAobV9zdG9wcGVkKQorICAgICAgICByZXR1cm47CiAK
LSAgICBpZiAobV9tdXRlZCA9PSBtX3NvdXJjZS0+bXV0ZWQoKSkKKyAgICBib29sIG11dGVkID0g
bV9zb3VyY2UtPm11dGVkKCk7CisgICAgaWYgKG1fbXV0ZWQgPT0gbXV0ZWQpCiAgICAgICAgIHJl
dHVybjsKIAotICAgIG1fbXV0ZWQgPSBtX3NvdXJjZS0+bXV0ZWQoKTsKKyAgICBtX211dGVkID0g
bXV0ZWQ7CiAgICAgaWYgKG1fbXV0ZWQpCi0gICAgICAgIGRpc3BhdGNoRXZlbnQoRXZlbnQ6OmNy
ZWF0ZShldmVudE5hbWVzKCkubXV0ZUV2ZW50LCBmYWxzZSwgZmFsc2UpKTsKKyAgICAgICAgc2No
ZWR1bGVFdmVudERpc3BhdGNoKEV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLm11dGVFdmVudCwg
ZmFsc2UsIGZhbHNlKSk7CiAgICAgZWxzZQotICAgICAgICBkaXNwYXRjaEV2ZW50KEV2ZW50Ojpj
cmVhdGUoZXZlbnROYW1lcygpLnVubXV0ZUV2ZW50LCBmYWxzZSwgZmFsc2UpKTsKKyAgICAgICAg
c2NoZWR1bGVFdmVudERpc3BhdGNoKEV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLnVubXV0ZUV2
ZW50LCBmYWxzZSwgZmFsc2UpKTsKKworICAgIGNvbmZpZ3VyZVRyYWNrUmVuZGVyaW5nKCk7Cit9
CisKK3ZvaWQgTWVkaWFTdHJlYW1UcmFjazo6c291cmNlRW5hYmxlZENoYW5nZWQoKQoreworICAg
IGlmIChtX3N0b3BwZWQpCisgICAgICAgIHJldHVybjsKKyAgICAKKyAgICAvLyBtZWRpYSBmcm9t
IHRoZSBzb3VyY2Ugb25seSBmbG93cyB3aGVuIGEgTWVkaWFTdHJlYW1UcmFjayBvYmplY3QgaXMg
Ym90aCB1bm11dGVkIGFuZCBlbmFibGVkCisgICAgY29uZmlndXJlVHJhY2tSZW5kZXJpbmcoKTsK
K30KKwordm9pZCBNZWRpYVN0cmVhbVRyYWNrOjpjb25maWd1cmVUcmFja1JlbmRlcmluZygpCit7
CisgICAgaWYgKG1fc3RvcHBlZCkKKyAgICAgICAgcmV0dXJuOworCisgICAgLy8gNC4zLjEKKyAg
ICAvLyAuLi4gbWVkaWEgZnJvbSB0aGUgc291cmNlIG9ubHkgZmxvd3Mgd2hlbiBhIE1lZGlhU3Ry
ZWFtVHJhY2sgb2JqZWN0IGlzIGJvdGggdW5tdXRlZCBhbmQgZW5hYmxlZAorfQorCitib29sIE1l
ZGlhU3RyZWFtVHJhY2s6OnN0b3BwZWQoKQoreworICAgIHJldHVybiBtX3N0b3BwZWQ7CiB9CiAK
IHZvaWQgTWVkaWFTdHJlYW1UcmFjazo6dHJhY2tEaWRFbmQoKQpAQCAtMjExLDcgKzM1NCw0MiBA
QCB2b2lkIE1lZGlhU3RyZWFtVHJhY2s6OnRyYWNrRGlkRW5kKCkKIAogdm9pZCBNZWRpYVN0cmVh
bVRyYWNrOjpzdG9wKCkKIHsKLSAgICBtX3N0b3BwZWQgPSB0cnVlOworICAgIHN0b3BQcm9kdWNp
bmdEYXRhKCk7Cit9CisKK3ZvaWQgTWVkaWFTdHJlYW1UcmFjazo6c2NoZWR1bGVFdmVudERpc3Bh
dGNoKFBhc3NSZWZQdHI8RXZlbnQ+IGV2ZW50KQoreworICAgIHsKKyAgICAgICAgTXV0ZXhMb2Nr
ZXIgbG9ja2VyKG1fbXV0ZXgpOworICAgICAgICBtX3NjaGVkdWxlZEV2ZW50cy5hcHBlbmQoZXZl
bnQpOworICAgICAgICBpZiAobV9ldmVudERpc3BhdGNoU2NoZWR1bGVkKQorICAgICAgICAgICAg
cmV0dXJuOworICAgICAgICBtX2V2ZW50RGlzcGF0Y2hTY2hlZHVsZWQgPSB0cnVlOworICAgIH0K
KworICAgIGNhbGxPbk1haW5UaHJlYWQoYmluZCgmTWVkaWFTdHJlYW1UcmFjazo6ZGlzcGF0Y2hR
dWV1ZWRFdmVudHMsIHRoaXMpKTsKK30KKwordm9pZCBNZWRpYVN0cmVhbVRyYWNrOjpkaXNwYXRj
aFF1ZXVlZEV2ZW50cygpCit7CisgICAgVmVjdG9yPFJlZlB0cjxFdmVudD4+IGV2ZW50czsKKyAg
ICB7CisgICAgICAgIE11dGV4TG9ja2VyIGxvY2tlcihtX211dGV4KTsKKworICAgICAgICBtX2V2
ZW50RGlzcGF0Y2hTY2hlZHVsZWQgPSBmYWxzZTsKKyAgICAgICAgaWYgKCFzY3JpcHRFeGVjdXRp
b25Db250ZXh0KCkpIHsKKyAgICAgICAgICAgIG1fc2NoZWR1bGVkRXZlbnRzLmNsZWFyKCk7Cisg
ICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBldmVudHMuc3dhcChtX3Nj
aGVkdWxlZEV2ZW50cyk7CisgICAgfQorCisgICAgVmVjdG9yPFJlZlB0cjxFdmVudD4gPjo6aXRl
cmF0b3IgaXQgPSBldmVudHMuYmVnaW4oKTsKKyAgICBmb3IgKDsgaXQgIT0gZXZlbnRzLmVuZCgp
OyArK2l0KQorICAgICAgICBkaXNwYXRjaEV2ZW50KCgqaXQpLnJlbGVhc2UoKSk7CisKKyAgICBl
dmVudHMuY2xlYXIoKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVRyYWNrLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVRyYWNr
LmgJKHJldmlzaW9uIDE1Njk0NikKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJl
YW0vTWVkaWFTdHJlYW1UcmFjay5oCSh3b3JraW5nIGNvcHkpCkBAIC00MSwxMCArNDEsMTMgQEAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgRGljdGlvbmFyeTsKLWNsYXNzIE1lZGlhQ29u
c3RyYWludHM7CitjbGFzcyBNZWRpYUNvbnN0cmFpbnRzSW1wbDsKK2NsYXNzIE1lZGlhU291cmNl
U3RhdGVzOwogY2xhc3MgTWVkaWFTdHJlYW1UcmFja1NvdXJjZXNDYWxsYmFjazsKK2NsYXNzIE1l
ZGlhU3RyZWFtQ2FwYWJpbGl0aWVzOworY2xhc3MgTWVkaWFUcmFja0NvbnN0cmFpbnRzOwogCi1j
bGFzcyBNZWRpYVN0cmVhbVRyYWNrIEZJTkFMIDogcHVibGljIFJlZkNvdW50ZWQ8TWVkaWFTdHJl
YW1UcmFjaz4sIHB1YmxpYyBTY3JpcHRXcmFwcGFibGUsIHB1YmxpYyBBY3RpdmVET01PYmplY3Qs
IHB1YmxpYyBFdmVudFRhcmdldFdpdGhJbmxpbmVEYXRhLCBwdWJsaWMgTWVkaWFTdHJlYW1Tb3Vy
Y2U6Ok9ic2VydmVyIHsKK2NsYXNzIE1lZGlhU3RyZWFtVHJhY2sgOiBwdWJsaWMgUmVmQ291bnRl
ZDxNZWRpYVN0cmVhbVRyYWNrPiwgcHVibGljIFNjcmlwdFdyYXBwYWJsZSwgcHVibGljIEFjdGl2
ZURPTU9iamVjdCwgcHVibGljIEV2ZW50VGFyZ2V0V2l0aElubGluZURhdGEsIHB1YmxpYyBNZWRp
YVN0cmVhbVNvdXJjZTo6T2JzZXJ2ZXIgewogcHVibGljOgogICAgIHZpcnR1YWwgfk1lZGlhU3Ry
ZWFtVHJhY2soKTsKIApAQCAtNTQsMTcgKzU3LDMxIEBAIHB1YmxpYzoKIAogICAgIGJvb2wgZW5h
YmxlZCgpIGNvbnN0OwogICAgIHZvaWQgc2V0RW5hYmxlZChib29sKTsKLSAgICAKKworICAgIGJv
b2wgbXV0ZWQoKSBjb25zdDsKKyAgICBib29sIHJlYWRvbmx5KCkgY29uc3Q7CisgICAgYm9vbCBy
ZW1vdGUoKSBjb25zdDsKKwogICAgIGNvbnN0IEF0b21pY1N0cmluZyYgcmVhZHlTdGF0ZSgpIGNv
bnN0OwogCiAgICAgc3RhdGljIHZvaWQgZ2V0U291cmNlcyhTY3JpcHRFeGVjdXRpb25Db250ZXh0
KiwgUGFzc1JlZlB0cjxNZWRpYVN0cmVhbVRyYWNrU291cmNlc0NhbGxiYWNrPiwgRXhjZXB0aW9u
Q29kZSYpOwogCi0gICAgTWVkaWFTdHJlYW1Tb3VyY2UqIHNvdXJjZSgpIGNvbnN0IHsgcmV0dXJu
IG1fc291cmNlLmdldCgpOyB9Ci0gICAgdm9pZCBzZXRTb3VyY2UoTWVkaWFTdHJlYW1Tb3VyY2Uq
KTsKKyAgICBQYXNzUmVmUHRyPE1lZGlhVHJhY2tDb25zdHJhaW50cz4gY29uc3RyYWludHMoKSBj
b25zdDsKKyAgICBQYXNzUmVmUHRyPE1lZGlhU291cmNlU3RhdGVzPiBzdGF0ZXMoKSBjb25zdDsK
KyAgICBQYXNzUmVmUHRyPE1lZGlhU3RyZWFtQ2FwYWJpbGl0aWVzPiBjYXBhYmlsaXRpZXMoKSBj
b25zdDsKKyAgICB2b2lkIGFwcGx5Q29uc3RyYWludHMoY29uc3QgRGljdGlvbmFyeSYpOworCisg
ICAgUGFzc1JlZlB0cjxNZWRpYVN0cmVhbVRyYWNrPiBjbG9uZSgpOworICAgIHZvaWQgc3RvcFBy
b2R1Y2luZ0RhdGEoKTsKIAogICAgIERFRklORV9BVFRSSUJVVEVfRVZFTlRfTElTVEVORVIobXV0
ZSk7CiAgICAgREVGSU5FX0FUVFJJQlVURV9FVkVOVF9MSVNURU5FUih1bm11dGUpOworICAgIERF
RklORV9BVFRSSUJVVEVfRVZFTlRfTElTVEVORVIoc3RhcnRlZCk7CiAgICAgREVGSU5FX0FUVFJJ
QlVURV9FVkVOVF9MSVNURU5FUihlbmRlZCk7CisgICAgREVGSU5FX0FUVFJJQlVURV9FVkVOVF9M
SVNURU5FUihvdmVyY29uc3RyYWluZWQpOworCisgICAgTWVkaWFTdHJlYW1Tb3VyY2UqIHNvdXJj
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc291cmNlLmdldCgpOyB9CisgICAgdm9pZCBzZXRTb3VyY2Uo
TWVkaWFTdHJlYW1Tb3VyY2UqKTsKIAogICAgIGJvb2wgZW5kZWQoKSBjb25zdDsKIApAQCAtNzIs
MzMgKzg5LDQ0IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIEV2ZW50VGFyZ2V0SW50ZXJmYWNlIGV2
ZW50VGFyZ2V0SW50ZXJmYWNlKCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4gTWVkaWFTdHJlYW1U
cmFja0V2ZW50VGFyZ2V0SW50ZXJmYWNlVHlwZTsgfQogICAgIHZpcnR1YWwgU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpIGNvbnN0IE9WRVJSSURFIHsgcmV0
dXJuIEFjdGl2ZURPTU9iamVjdDo6c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOyB9CiAKLSAgICAv
LyBBY3RpdmVET01PYmplY3QKLSAgICB2aXJ0dWFsIHZvaWQgc3RvcCgpIE9WRVJSSURFOwotCiAg
ICAgdXNpbmcgUmVmQ291bnRlZDxNZWRpYVN0cmVhbVRyYWNrPjo6cmVmOwogICAgIHVzaW5nIFJl
ZkNvdW50ZWQ8TWVkaWFTdHJlYW1UcmFjaz46OmRlcmVmOwogCiBwcm90ZWN0ZWQ6CisgICAgZXhw
bGljaXQgTWVkaWFTdHJlYW1UcmFjayhNZWRpYVN0cmVhbVRyYWNrKik7CiAgICAgTWVkaWFTdHJl
YW1UcmFjayhTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgTWVkaWFTdHJlYW1Tb3VyY2UqLCBjb25z
dCBEaWN0aW9uYXJ5Kik7CiAKIHByaXZhdGU6CisKKyAgICB2b2lkIGNvbmZpZ3VyZVRyYWNrUmVu
ZGVyaW5nKCk7CiAgICAgdm9pZCB0cmFja0RpZEVuZCgpOworICAgIHZvaWQgc2NoZWR1bGVFdmVu
dERpc3BhdGNoKFBhc3NSZWZQdHI8RXZlbnQ+KTsKKyAgICB2b2lkIGRpc3BhdGNoUXVldWVkRXZl
bnRzKCk7CisKKyAgICAvLyBBY3RpdmVET01PYmplY3QKKyAgICB2aXJ0dWFsIHZvaWQgc3RvcCgp
IE9WRVJSSURFOwogCiAgICAgLy8gRXZlbnRUYXJnZXQKICAgICB2aXJ0dWFsIHZvaWQgcmVmRXZl
bnRUYXJnZXQoKSBPVkVSUklERSB7IHJlZigpOyB9CiAgICAgdmlydHVhbCB2b2lkIGRlcmVmRXZl
bnRUYXJnZXQoKSBPVkVSUklERSB7IGRlcmVmKCk7IH0KIAogICAgIC8vIE1lZGlhU3RyZWFtU291
cmNlT2JzZXJ2ZXIKLSAgICB2aXJ0dWFsIHZvaWQgc291cmNlQ2hhbmdlZFN0YXRlKCkgT1ZFUlJJ
REU7CisgICAgdmlydHVhbCB2b2lkIHNvdXJjZVN0YXRlQ2hhbmdlZCgpIE9WRVJSSURFOworICAg
IHZpcnR1YWwgdm9pZCBzb3VyY2VNdXRlZENoYW5nZWQoKSBPVkVSUklERTsKKyAgICB2aXJ0dWFs
IHZvaWQgc291cmNlRW5hYmxlZENoYW5nZWQoKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIGJvb2wg
c3RvcHBlZCgpIE9WRVJSSURFOwogCisgICAgVmVjdG9yPFJlZlB0cjxFdmVudD4+IG1fc2NoZWR1
bGVkRXZlbnRzOwogICAgIFJlZlB0cjxNZWRpYVN0cmVhbVNvdXJjZT4gbV9zb3VyY2U7Ci0gICAg
UmVmUHRyPE1lZGlhQ29uc3RyYWludHM+IG1fY29uc3RyYWludHM7CisgICAgUmVmUHRyPE1lZGlh
Q29uc3RyYWludHNJbXBsPiBtX2NvbnN0cmFpbnRzOwogICAgIE1lZGlhU3RyZWFtU291cmNlOjpS
ZWFkeVN0YXRlIG1fcmVhZHlTdGF0ZTsKICAgICBtdXRhYmxlIFN0cmluZyBtX2lkOworICAgIE11
dGV4IG1fbXV0ZXg7CiAKICAgICBib29sIG1fc3RvcHBlZDsKICAgICBib29sIG1fZW5hYmxlZDsK
ICAgICBib29sIG1fbXV0ZWQ7CisgICAgYm9vbCBtX2V2ZW50RGlzcGF0Y2hTY2hlZHVsZWQ7CiB9
OwogCiB0eXBlZGVmIFZlY3RvcjxSZWZQdHI8TWVkaWFTdHJlYW1UcmFjaz4gPiBNZWRpYVN0cmVh
bVRyYWNrVmVjdG9yOwpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9N
ZWRpYVN0cmVhbVRyYWNrLmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L21lZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJhY2suaWRsCShyZXZpc2lvbiAxNTY5NDYpCisrKyBT
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJhY2suaWRsCSh3
b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNiBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAxMSBH
b29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEzIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucwpAQCAtMjIsMjUgKzIzLDQxIEBACiAgKiBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCitlbnVtIE1lZGlhU3RyZWFt
VHJhY2tTdGF0ZSB7ICJuZXciLCAibGl2ZSIsICJlbmRlZCIgfTsKKwogWwogICAgIENvbmRpdGlv
bmFsPU1FRElBX1NUUkVBTSwKICAgICBFdmVudFRhcmdldCwKICAgICBBY3RpdmVET01PYmplY3Qs
Ci0gICAgU2tpcFZUYWJsZVZhbGlkYXRpb24KKyAgICBTa2lwVlRhYmxlVmFsaWRhdGlvbiwKIF0g
aW50ZXJmYWNlIE1lZGlhU3RyZWFtVHJhY2sgewogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBET01T
dHJpbmcga2luZDsKICAgICByZWFkb25seSBhdHRyaWJ1dGUgRE9NU3RyaW5nIGlkOwogICAgIHJl
YWRvbmx5IGF0dHJpYnV0ZSBET01TdHJpbmcgbGFiZWw7CiAgICAgICAgICAgICAgYXR0cmlidXRl
IGJvb2xlYW4gZW5hYmxlZDsKLQotICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBET01TdHJpbmcgcmVh
ZHlTdGF0ZTsKLQorICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBib29sZWFuIG11dGVkOwogICAgIGF0
dHJpYnV0ZSBFdmVudExpc3RlbmVyIG9ubXV0ZTsKICAgICBhdHRyaWJ1dGUgRXZlbnRMaXN0ZW5l
ciBvbnVubXV0ZTsKKyAgICByZWFkb25seSBhdHRyaWJ1dGUgYm9vbGVhbiBfcmVhZG9ubHk7Cisg
ICAgcmVhZG9ubHkgYXR0cmlidXRlIGJvb2xlYW4gcmVtb3RlOworICAgIHJlYWRvbmx5IGF0dHJp
YnV0ZSBNZWRpYVN0cmVhbVRyYWNrU3RhdGUgcmVhZHlTdGF0ZTsKKyAgICBhdHRyaWJ1dGUgRXZl
bnRMaXN0ZW5lciBvbnN0YXJ0ZWQ7CiAgICAgYXR0cmlidXRlIEV2ZW50TGlzdGVuZXIgb25lbmRl
ZDsKIAogICAgIFtDYWxsV2l0aD1TY3JpcHRFeGVjdXRpb25Db250ZXh0LCBSYWlzZXNFeGNlcHRp
b25dIHN0YXRpYyB2b2lkIGdldFNvdXJjZXMoTWVkaWFTdHJlYW1UcmFja1NvdXJjZXNDYWxsYmFj
ayBjYWxsYmFjayk7CiAKKyAgICBNZWRpYVRyYWNrQ29uc3RyYWludHMgY29uc3RyYWludHMoKTsK
KworICAgIE1lZGlhU291cmNlU3RhdGVzIHN0YXRlcygpOworCisgICAgTWVkaWFTdHJlYW1DYXBh
YmlsaXRpZXMgY2FwYWJpbGl0aWVzKCk7IC8vIHJldHVybnMgZWl0aGVyIEFsbFZpZGVvQ2FwYWJp
bGl0aWVzIG9yIEFsbEF1ZGlvQ2FwYWJpbGl0aWVzCisKKyAgICB2b2lkIGFwcGx5Q29uc3RyYWlu
dHMoRGljdGlvbmFyeSBjb25zdHJhaW50cyk7CisKKyAgICBhdHRyaWJ1dGUgRXZlbnRMaXN0ZW5l
ciBvbm92ZXJjb25zdHJhaW5lZDsKKyAgICBNZWRpYVN0cmVhbVRyYWNrIGNsb25lKCk7CisgICAg
W0ltcGxlbWVudGVkQXM9c3RvcFByb2R1Y2luZ0RhdGFdIHZvaWQgc3RvcCgpOworCiAgICAgLy8g
RXZlbnRUYXJnZXQgaW50ZXJmYWNlCiAgICAgdm9pZCBhZGRFdmVudExpc3RlbmVyKERPTVN0cmlu
ZyB0eXBlLAogICAgICAgICAgICAgICAgICAgICAgICAgICBFdmVudExpc3RlbmVyIGxpc3RlbmVy
LApJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVRyYWNrQ29u
c3RyYWludC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0
cmVhbS9NZWRpYVRyYWNrQ29uc3RyYWludC5jcHAJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhVHJhY2tDb25zdHJhaW50LmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMCwwICsxLDUzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4gCisgKgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2lm
IEVOQUJMRShNRURJQV9TVFJFQU0pCisKKyNpbmNsdWRlICJNZWRpYVRyYWNrQ29uc3RyYWludC5o
IgorCit1c2luZyBuYW1lc3BhY2UgSlNDOworCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1Bhc3NS
ZWZQdHI8TWVkaWFUcmFja0NvbnN0cmFpbnQ+IE1lZGlhVHJhY2tDb25zdHJhaW50OjpjcmVhdGUo
Y29uc3QgRGljdGlvbmFyeSYgY29uc3RyYWludCkKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3
IE1lZGlhVHJhY2tDb25zdHJhaW50KGNvbnN0cmFpbnQpKTsKK30KKworTWVkaWFUcmFja0NvbnN0
cmFpbnQ6Ok1lZGlhVHJhY2tDb25zdHJhaW50KGNvbnN0IERpY3Rpb25hcnkmIGNvbnN0cmFpbnQp
CisgICAgOiBtX2NvbnN0cmFpbnQoY29uc3RyYWludCkKK3sKK30KKworTWVkaWFUcmFja0NvbnN0
cmFpbnQ6On5NZWRpYVRyYWNrQ29uc3RyYWludCgpCit7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKKworI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFt
L01lZGlhVHJhY2tDb25zdHJhaW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9tZWRpYXN0cmVhbS9NZWRpYVRyYWNrQ29uc3RyYWludC5oCShyZXZpc2lvbiAwKQorKysg
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVRyYWNrQ29uc3RyYWludC5o
CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNTggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAq
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisg
KiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqCisgKi8KKworI2lmbmRlZiBNZWRpYVRyYWNr
Q29uc3RyYWludF9oCisjZGVmaW5lIE1lZGlhVHJhY2tDb25zdHJhaW50X2gKKworI2lmIEVOQUJM
RShNRURJQV9TVFJFQU0pCisKKyNpbmNsdWRlICJEaWN0aW9uYXJ5LmgiCisjaW5jbHVkZSAiU2Ny
aXB0V3JhcHBhYmxlLmgiCisjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KKworbmFtZXNwYWNl
IFdlYkNvcmUgeworCitjbGFzcyBTY3JpcHRWYWx1ZTsKKworY2xhc3MgTWVkaWFUcmFja0NvbnN0
cmFpbnQgOiBwdWJsaWMgUmVmQ291bnRlZDxNZWRpYVRyYWNrQ29uc3RyYWludD4sIHB1YmxpYyBT
Y3JpcHRXcmFwcGFibGUgeworcHVibGljOgorICAgIHN0YXRpYyBQYXNzUmVmUHRyPE1lZGlhVHJh
Y2tDb25zdHJhaW50PiBjcmVhdGUoY29uc3QgRGljdGlvbmFyeSYpOworCisgICAgdmlydHVhbCB+
TWVkaWFUcmFja0NvbnN0cmFpbnQoKTsKKworICAgIGNvbnN0IERpY3Rpb25hcnkmIGNvbnN0cmFp
bnQoKSBjb25zdCB7IHJldHVybiBtX2NvbnN0cmFpbnQ7IH0KKworcHJpdmF0ZToKKyAgICBleHBs
aWNpdCBNZWRpYVRyYWNrQ29uc3RyYWludChjb25zdCBEaWN0aW9uYXJ5Jik7CisgICAgCisgICAg
Y29uc3QgRGljdGlvbmFyeSYgbV9jb25zdHJhaW50OworfTsKKworfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQorCisjZW5kaWYgLy8gTWVkaWFUcmFja0NvbnN0cmFpbnRfaAorCisjZW5kaWYKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFUcmFja0NvbnN0cmFpbnQu
aWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVk
aWFUcmFja0NvbnN0cmFpbnQuaWRsCShyZXZpc2lvbiAwKQorKysgU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9tZWRpYXN0cmVhbS9NZWRpYVRyYWNrQ29uc3RyYWludC5pZGwJKHdvcmtpbmcgY29weSkK
QEAgLTAsMCArMSwzMSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBU
SEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKK1sKKyAgICBDb25kaXRpb25hbD1NRURJQV9TVFJF
QU0sCisgICAgTm9JbnRlcmZhY2VPYmplY3QsCitdIGludGVyZmFjZSBNZWRpYVRyYWNrQ29uc3Ry
YWludCB7Cit9OworCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01l
ZGlhVHJhY2tDb25zdHJhaW50U2V0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL21lZGlhc3RyZWFtL01lZGlhVHJhY2tDb25zdHJhaW50U2V0LmNwcAkocmV2aXNpb24g
MCkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFUcmFja0NvbnN0
cmFpbnRTZXQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNTMgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUsIElOQy4gYGBBUyBJUycn
IEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAq
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqCisgKi8KKworI2luY2x1
ZGUgImNvbmZpZy5oIgorCisjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKKworI2luY2x1ZGUgIk1l
ZGlhVHJhY2tDb25zdHJhaW50U2V0LmgiCisKK3VzaW5nIG5hbWVzcGFjZSBKU0M7CisKK25hbWVz
cGFjZSBXZWJDb3JlIHsKKworUGFzc1JlZlB0cjxNZWRpYVRyYWNrQ29uc3RyYWludFNldD4gTWVk
aWFUcmFja0NvbnN0cmFpbnRTZXQ6OmNyZWF0ZShjb25zdCBEaWN0aW9uYXJ5JiBjb25zdHJhaW50
cykKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3IE1lZGlhVHJhY2tDb25zdHJhaW50U2V0KGNv
bnN0cmFpbnRzKSk7Cit9CisKK01lZGlhVHJhY2tDb25zdHJhaW50U2V0OjpNZWRpYVRyYWNrQ29u
c3RyYWludFNldChjb25zdCBEaWN0aW9uYXJ5JiBjb25zdHJhaW50cykKKyAgICA6IG1fY29uc3Ry
YWludHMoY29uc3RyYWludHMpCit7Cit9CisKK01lZGlhVHJhY2tDb25zdHJhaW50U2V0Ojp+TWVk
aWFUcmFja0NvbnN0cmFpbnRTZXQoKQoreworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisK
KyNlbmRpZgpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVRy
YWNrQ29uc3RyYWludFNldC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMv
bWVkaWFzdHJlYW0vTWVkaWFUcmFja0NvbnN0cmFpbnRTZXQuaAkocmV2aXNpb24gMCkKKysrIFNv
dXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFUcmFja0NvbnN0cmFpbnRTZXQu
aAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDU2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisg
KiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAor
ICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKgorICovCisKKyNpZm5kZWYgTWVkaWFUcmFj
a0NvbnN0cmFpbnRTZXRfaAorI2RlZmluZSBNZWRpYVRyYWNrQ29uc3RyYWludFNldF9oCisKKyNp
ZiBFTkFCTEUoTUVESUFfU1RSRUFNKQorCisjaW5jbHVkZSAiRGljdGlvbmFyeS5oIgorI2luY2x1
ZGUgIlNjcmlwdFdyYXBwYWJsZS5oIgorI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CisKK25h
bWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgTWVkaWFUcmFja0NvbnN0cmFpbnRTZXQgOiBwdWJs
aWMgUmVmQ291bnRlZDxNZWRpYVRyYWNrQ29uc3RyYWludFNldD4sIHB1YmxpYyBTY3JpcHRXcmFw
cGFibGUgeworcHVibGljOgorICAgIHN0YXRpYyBQYXNzUmVmUHRyPE1lZGlhVHJhY2tDb25zdHJh
aW50U2V0PiBjcmVhdGUoY29uc3QgRGljdGlvbmFyeSYpOworCisgICAgdmlydHVhbCB+TWVkaWFU
cmFja0NvbnN0cmFpbnRTZXQoKTsKKworICAgIGNvbnN0IERpY3Rpb25hcnkmIGNvbnN0cmFpbnRz
KCkgY29uc3QgeyByZXR1cm4gbV9jb25zdHJhaW50czsgfQorCitwcml2YXRlOgorICAgIGV4cGxp
Y2l0IE1lZGlhVHJhY2tDb25zdHJhaW50U2V0KGNvbnN0IERpY3Rpb25hcnkmKTsKKyAgICAKKyAg
ICBjb25zdCBEaWN0aW9uYXJ5JiBtX2NvbnN0cmFpbnRzOworfTsKKworfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQorCisjZW5kaWYgLy8gTWVkaWFUcmFja0NvbnN0cmFpbnRTZXRfaAorCisjZW5kaWYK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFUcmFja0NvbnN0
cmFpbnRTZXQuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFz
dHJlYW0vTWVkaWFUcmFja0NvbnN0cmFpbnRTZXQuaWRsCShyZXZpc2lvbiAwKQorKysgU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVRyYWNrQ29uc3RyYWludFNldC5pZGwJ
KHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwzMyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
MyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBHT09HTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICog
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5P
IEVWRU5UIFNIQUxMIEdPT0dMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
KyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworWworICAgIENvbmRpdGlvbmFsPU1FRElBX1NUUkVBTSwK
KyAgICBOb0ludGVyZmFjZU9iamVjdCwKK10gaW50ZXJmYWNlIE1lZGlhVHJhY2tDb25zdHJhaW50
U2V0IHsKKyAgICAvLyBGSVhNRTogTm90IGltcGxlbWVudGVkLgorICAgIC8vIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjE5NTQKK307CisKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFUcmFja0NvbnN0cmFpbnRzLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhVHJhY2tD
b25zdHJhaW50cy5jcHAJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21l
ZGlhc3RyZWFtL01lZGlhVHJhY2tDb25zdHJhaW50cy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAs
MCArMSw2NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENP
TVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuIAorICoKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpZiBFTkFCTEUoTUVESUFf
U1RSRUFNKQorCisjaW5jbHVkZSAiTWVkaWFUcmFja0NvbnN0cmFpbnRzLmgiCisKKyNpbmNsdWRl
ICJNZWRpYVRyYWNrQ29uc3RyYWludC5oIgorI2luY2x1ZGUgIk1lZGlhVHJhY2tDb25zdHJhaW50
U2V0LmgiCisjaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKKwordXNpbmcgbmFtZXNwYWNlIEpT
QzsKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitQYXNzUmVmUHRyPE1lZGlhVHJhY2tDb25zdHJh
aW50cz4gTWVkaWFUcmFja0NvbnN0cmFpbnRzOjpjcmVhdGUoUGFzc1JlZlB0cjxNZWRpYUNvbnN0
cmFpbnRzSW1wbD4gY29uc3RyYWludHMpCit7CisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBNZWRp
YVRyYWNrQ29uc3RyYWludHMoY29uc3RyYWludHMpKTsKK30KKworTWVkaWFUcmFja0NvbnN0cmFp
bnRzOjpNZWRpYVRyYWNrQ29uc3RyYWludHMoUGFzc1JlZlB0cjxNZWRpYUNvbnN0cmFpbnRzSW1w
bD4gY29uc3RyYWludHMpCisgICAgOiBtX2NvbnN0cmFpbnRzKGNvbnN0cmFpbnRzKQoreworfQor
CitWZWN0b3I8UGFzc1JlZlB0cjxNZWRpYVRyYWNrQ29uc3RyYWludD4+IE1lZGlhVHJhY2tDb25z
dHJhaW50czo6b3B0aW9uYWwoYm9vbCkgY29uc3QKK3sKKyAgICAvLyBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTIxOTU0CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAg
ICByZXR1cm4gVmVjdG9yPFBhc3NSZWZQdHI8TWVkaWFUcmFja0NvbnN0cmFpbnQ+PigpOworfQor
CitQYXNzUmVmUHRyPE1lZGlhVHJhY2tDb25zdHJhaW50U2V0PiBNZWRpYVRyYWNrQ29uc3RyYWlu
dHM6Om1hbmRhdG9yeShib29sKSBjb25zdAoreworICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xMjE5NTQKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJl
dHVybiBudWxscHRyOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZgpJbmRl
eDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVRyYWNrQ29uc3RyYWlu
dHMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01l
ZGlhVHJhY2tDb25zdHJhaW50cy5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9tZWRpYXN0cmVhbS9NZWRpYVRyYWNrQ29uc3RyYWludHMuaAkod29ya2luZyBjb3B5KQpA
QCAtMCwwICsxLDYwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4gCisgKgorICovCisKKyNpZm5kZWYgTWVkaWFUcmFja0NvbnN0cmFpbnRzX2gKKyNk
ZWZpbmUgTWVkaWFUcmFja0NvbnN0cmFpbnRzX2gKKworI2lmIEVOQUJMRShNRURJQV9TVFJFQU0p
CisKKyNpbmNsdWRlICJNZWRpYUNvbnN0cmFpbnRzSW1wbC5oIgorI2luY2x1ZGUgIlNjcmlwdFdy
YXBwYWJsZS5oIgorI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CisKK25hbWVzcGFjZSBXZWJD
b3JlIHsKKworY2xhc3MgTWVkaWFUcmFja0NvbnN0cmFpbnQ7CitjbGFzcyBNZWRpYVRyYWNrQ29u
c3RyYWludFNldDsKKworY2xhc3MgTWVkaWFUcmFja0NvbnN0cmFpbnRzIDogcHVibGljIFJlZkNv
dW50ZWQ8TWVkaWFUcmFja0NvbnN0cmFpbnRzPiwgcHVibGljIFNjcmlwdFdyYXBwYWJsZSB7Citw
dWJsaWM6CisgICAgdmlydHVhbCB+TWVkaWFUcmFja0NvbnN0cmFpbnRzKCkgeyB9CisKKyAgICBz
dGF0aWMgUGFzc1JlZlB0cjxNZWRpYVRyYWNrQ29uc3RyYWludHM+IGNyZWF0ZShQYXNzUmVmUHRy
PE1lZGlhQ29uc3RyYWludHNJbXBsPik7CisKKyAgICBWZWN0b3I8UGFzc1JlZlB0cjxNZWRpYVRy
YWNrQ29uc3RyYWludD4+IG9wdGlvbmFsKGJvb2wpIGNvbnN0OworICAgIFBhc3NSZWZQdHI8TWVk
aWFUcmFja0NvbnN0cmFpbnRTZXQ+IG1hbmRhdG9yeShib29sKSBjb25zdDsKKworcHJpdmF0ZToK
KyAgICBleHBsaWNpdCBNZWRpYVRyYWNrQ29uc3RyYWludHMoUGFzc1JlZlB0cjxNZWRpYUNvbnN0
cmFpbnRzSW1wbD4pOworICAgIAorICAgIFJlZlB0cjxNZWRpYUNvbnN0cmFpbnRzSW1wbD4gbV9j
b25zdHJhaW50czsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIE1l
ZGlhVHJhY2tDb25zdHJhaW50c19oCisKKyNlbmRpZgpJbmRleDogU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9tZWRpYXN0cmVhbS9NZWRpYVRyYWNrQ29uc3RyYWludHMuaWRsCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFUcmFja0NvbnN0cmFpbnRz
LmlkbAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0v
TWVkaWFUcmFja0NvbnN0cmFpbnRzLmlkbAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDMzIEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENP
TVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09N
UFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4gCisgKi8KKworWworICAgIENvbmRpdGlvbmFsPU1FRElBX1NUUkVBTSwKKyAgICBOb0ludGVy
ZmFjZU9iamVjdCwKK10gaW50ZXJmYWNlIE1lZGlhVHJhY2tDb25zdHJhaW50cyB7CisgICAgcmVh
ZG9ubHkgYXR0cmlidXRlIE1lZGlhVHJhY2tDb25zdHJhaW50U2V0PyBtYW5kYXRvcnk7CisgICAg
cmVhZG9ubHkgYXR0cmlidXRlIE1lZGlhVHJhY2tDb25zdHJhaW50W10/IG9wdGlvbmFsOworfTsK
KwpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9OYXZpZ2F0b3JNZWRp
YVN0cmVhbS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0
cmVhbS9OYXZpZ2F0b3JNZWRpYVN0cmVhbS5jcHAJKHJldmlzaW9uIDE1Njk0NikKKysrIFNvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTmF2aWdhdG9yTWVkaWFTdHJlYW0uY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0zNiw4ICszNiwyNyBAQAogI2luY2x1ZGUgIlVzZXJNZWRpYUNvbnRy
b2xsZXIuaCIKICNpbmNsdWRlICJVc2VyTWVkaWFSZXF1ZXN0LmgiCiAKKy8vQEBAQEAKKyNpbmNs
dWRlICJNZWRpYVN0cmVhbS5oIgorI2luY2x1ZGUgIk1vY2tNZWRpYVN0cmVhbUNlbnRlci5oIgor
I2luY2x1ZGUgIlVzZXJNZWRpYUNsaWVudC5oIgorLy9AQEBAQAorCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKKy8vQEBAQEAKK2NsYXNzIEhhY2tVc2VyTWVkaWFDbGllbnQgRklOQUwgOiBwdWJsaWMg
VXNlck1lZGlhQ2xpZW50IHsKK3B1YmxpYzoKKyAgICBIYWNrVXNlck1lZGlhQ2xpZW50KCkgeyB9
CisgICAgfkhhY2tVc2VyTWVkaWFDbGllbnQoKSB7IH0KKyAgICAKKyAgICAvLyBVc2VyTWVkaWFD
bGllbnQKKyAgICB2aXJ0dWFsIHZvaWQgcmVxdWVzdFBlcm1pc3Npb24oUGFzc1JlZlB0cjxVc2Vy
TWVkaWFSZXF1ZXN0PiByZXF1ZXN0KSBPVkVSUklERSB7IHJlcXVlc3QtPnVzZXJNZWRpYUFjY2Vz
c0dyYW50ZWQoKTsgfQorICAgIHZpcnR1YWwgdm9pZCBjYW5jZWxSZXF1ZXN0KFVzZXJNZWRpYVJl
cXVlc3QqKSBPVkVSUklERSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgcGFnZURlc3Ryb3llZCgpIE9W
RVJSSURFIHsgfQorfTsKKy8vQEBAQEAKKwogTmF2aWdhdG9yTWVkaWFTdHJlYW06Ok5hdmlnYXRv
ck1lZGlhU3RyZWFtKCkKIHsKIH0KQEAgLTUxLDcgKzcwLDEyIEBAIHZvaWQgTmF2aWdhdG9yTWVk
aWFTdHJlYW06OndlYmtpdEdldFVzZXIKICAgICBpZiAoIXN1Y2Nlc3NDYWxsYmFjaykKICAgICAg
ICAgcmV0dXJuOwogCisjaWYgMAogICAgIFVzZXJNZWRpYUNvbnRyb2xsZXIqIHVzZXJNZWRpYSA9
IFVzZXJNZWRpYUNvbnRyb2xsZXI6OmZyb20obmF2aWdhdG9yLT5mcmFtZSgpID8gbmF2aWdhdG9y
LT5mcmFtZSgpLT5wYWdlKCkgOiAwKTsKKyNlbHNlCisgICAgc3RhdGljIFVzZXJNZWRpYUNvbnRy
b2xsZXIqIHVzZXJNZWRpYSA9IFVzZXJNZWRpYUNvbnRyb2xsZXI6OmNyZWF0ZShuZXcgSGFja1Vz
ZXJNZWRpYUNsaWVudCgpKS5sZWFrUHRyKCk7CisgICAgTW9ja01lZGlhU3RyZWFtQ2VudGVyOjpy
ZWdpc3Rlck1vY2tNZWRpYVN0cmVhbUNlbnRlcigpOworI2VuZGlmCiAgICAgaWYgKCF1c2VyTWVk
aWEpIHsKICAgICAgICAgZWMgPSBOT1RfU1VQUE9SVEVEX0VSUjsKICAgICAgICAgcmV0dXJuOwpJ
bmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9Vc2VyTWVkaWFSZXF1ZXN0
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1Vz
ZXJNZWRpYVJlcXVlc3QuY3BwCShyZXZpc2lvbiAxNTY5NDYpCisrKyBTb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL21lZGlhc3RyZWFtL1VzZXJNZWRpYVJlcXVlc3QuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0xNzMsNyArMTczLDYgQEAgdm9pZCBVc2VyTWVkaWFSZXF1ZXN0OjpjYWxsU3VjY2Vzc0hhbmRs
ZQogICAgIGZvciAoTWVkaWFTdHJlYW1UcmFja1ZlY3Rvcjo6aXRlcmF0b3IgaXRlciA9IHRyYWNr
cy5iZWdpbigpOyBpdGVyICE9IHRyYWNrcy5lbmQoKTsgKytpdGVyKQogICAgICAgICAoKml0ZXIp
LT5zb3VyY2UoKS0+c2V0Q29uc3RyYWludHMobV92aWRlb0NvbnN0cmFpbnRzKTsKIAotICAgIE1l
ZGlhU3RyZWFtQ2VudGVyOjpzaGFyZWQoKS5kaWRDcmVhdGVNZWRpYVN0cmVhbShzdHJlYW1EZXNj
cmlwdG9yLmdldCgpKTsKICAgICBtX3N1Y2Nlc3NDYWxsYmFjay0+aGFuZGxlRXZlbnQoc3RyZWFt
LmdldCgpKTsKIH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9W
aWRlb1N0cmVhbVRyYWNrLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L21lZGlhc3RyZWFtL1ZpZGVvU3RyZWFtVHJhY2suY3BwCShyZXZpc2lvbiAxNTY5NDYpCisrKyBT
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1ZpZGVvU3RyZWFtVHJhY2suY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC00NywxMSArNDcsMjEgQEAgUGFzc1JlZlB0cjxWaWRlb1N0cmVhbVRy
YWNrPiBWaWRlb1N0cmVhbQogICAgIHJldHVybiB0cmFjay5yZWxlYXNlKCk7CiB9CiAKK1Bhc3NS
ZWZQdHI8VmlkZW9TdHJlYW1UcmFjaz4gVmlkZW9TdHJlYW1UcmFjazo6Y3JlYXRlKE1lZGlhU3Ry
ZWFtVHJhY2sqIHRyYWNrKQoreworICAgIHJldHVybiBhZG9wdFJlZihuZXcgVmlkZW9TdHJlYW1U
cmFjayh0cmFjaykpOworfQorCiBWaWRlb1N0cmVhbVRyYWNrOjpWaWRlb1N0cmVhbVRyYWNrKFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIE1lZGlhU3RyZWFtU291cmNlKiBzb3VyY2Us
IGNvbnN0IERpY3Rpb25hcnkqIHZpZGVvQ29uc3RyYWludHMpCiAgICAgOiBNZWRpYVN0cmVhbVRy
YWNrKGNvbnRleHQsIHNvdXJjZSwgdmlkZW9Db25zdHJhaW50cykKIHsKIH0KIAorVmlkZW9TdHJl
YW1UcmFjazo6VmlkZW9TdHJlYW1UcmFjayhNZWRpYVN0cmVhbVRyYWNrKiB0cmFjaykKKyAgICA6
IE1lZGlhU3RyZWFtVHJhY2sodHJhY2spCit7Cit9CisKIGNvbnN0IEF0b21pY1N0cmluZyYgVmlk
ZW9TdHJlYW1UcmFjazo6a2luZCgpIGNvbnN0CiB7CiAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVk
PEF0b21pY1N0cmluZz4gdmlkZW9LaW5kKCJ2aWRlbyIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0
RnJvbUxpdGVyYWwpOwpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9W
aWRlb1N0cmVhbVRyYWNrLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9t
ZWRpYXN0cmVhbS9WaWRlb1N0cmVhbVRyYWNrLmgJKHJldmlzaW9uIDE1Njk0NikKKysrIFNvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vVmlkZW9TdHJlYW1UcmFjay5oCSh3b3JraW5n
IGNvcHkpCkBAIC0yOSwxOCArMjksMTkgQEAKICNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQogCiAj
aW5jbHVkZSAiTWVkaWFTdHJlYW1UcmFjay5oIgotI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KICNp
bmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBNZWRpYVN0cmVhbVNvdXJjZTsKIGNsYXNzIFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQ7CiAKLWNsYXNzIFZpZGVvU3RyZWFtVHJhY2sgOiBwdWJsaWMgTWVk
aWFTdHJlYW1UcmFjayB7CitjbGFzcyBWaWRlb1N0cmVhbVRyYWNrIEZJTkFMIDogcHVibGljIE1l
ZGlhU3RyZWFtVHJhY2sgewogcHVibGljOgogICAgIHN0YXRpYyBQYXNzUmVmUHRyPFZpZGVvU3Ry
ZWFtVHJhY2s+IGNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgY29uc3QgRGljdGlvbmFy
eSYpOwogICAgIHN0YXRpYyBQYXNzUmVmUHRyPFZpZGVvU3RyZWFtVHJhY2s+IGNyZWF0ZShTY3Jp
cHRFeGVjdXRpb25Db250ZXh0KiwgTWVkaWFTdHJlYW1Tb3VyY2UqKTsKKyAgICBzdGF0aWMgUGFz
c1JlZlB0cjxWaWRlb1N0cmVhbVRyYWNrPiBjcmVhdGUoTWVkaWFTdHJlYW1UcmFjayopOwogCiAg
ICAgdmlydHVhbCB+VmlkZW9TdHJlYW1UcmFjaygpIHsgfQogCkBAIC00OCw2ICs0OSw3IEBAIHB1
YmxpYzoKIAogcHJpdmF0ZToKICAgICBWaWRlb1N0cmVhbVRyYWNrKFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQqLCBNZWRpYVN0cmVhbVNvdXJjZSosIGNvbnN0IERpY3Rpb25hcnkqKTsKKyAgICBleHBs
aWNpdCBWaWRlb1N0cmVhbVRyYWNrKE1lZGlhU3RyZWFtVHJhY2sqKTsKIH07CiAKIH0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVk
aW9Db250ZXh0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1
ZGlvL0F1ZGlvQ29udGV4dC5jcHAJKHJldmlzaW9uIDE1Njk0NikKKysrIFNvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjMs
NiArNjMsNyBAQAogI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCiAjaW5jbHVkZSAiTWVkaWFTdHJl
YW0uaCIKICNpbmNsdWRlICJNZWRpYVN0cmVhbUF1ZGlvRGVzdGluYXRpb25Ob2RlLmgiCisjaW5j
bHVkZSAiTWVkaWFTdHJlYW1BdWRpb1NvdXJjZS5oIgogI2luY2x1ZGUgIk1lZGlhU3RyZWFtQXVk
aW9Tb3VyY2VOb2RlLmgiCiAjZW5kaWYKIApAQCAtNDIwLDEyICs0MjEsMTQgQEAgUGFzc1JlZlB0
cjxNZWRpYVN0cmVhbUF1ZGlvU291cmNlTm9kZT4gQQogICAgIC8vIEZJWE1FOiBnZXQgYSBwcm92
aWRlciBmb3Igbm9uLWxvY2FsIE1lZGlhU3RyZWFtcyAobGlrZSBmcm9tIGEgcmVtb3RlIHBlZXIp
LgogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgYXVkaW9UcmFja3Muc2l6ZSgpOyArK2kpIHsK
ICAgICAgICAgUmVmUHRyPE1lZGlhU3RyZWFtVHJhY2s+IGxvY2FsQXVkaW8gPSBhdWRpb1RyYWNr
c1tpXTsKLSAgICAgICAgTWVkaWFTdHJlYW1Tb3VyY2UqIHNvdXJjZSA9IGxvY2FsQXVkaW8tPnNv
dXJjZSgpOwotICAgICAgICBpZiAoIXNvdXJjZS0+ZGV2aWNlSWQoKS5pc0VtcHR5KCkpIHsKLSAg
ICAgICAgICAgIGRlc3RpbmF0aW9uKCktPmVuYWJsZUlucHV0KHNvdXJjZS0+ZGV2aWNlSWQoKSk7
Ci0gICAgICAgICAgICBwcm92aWRlciA9IGRlc3RpbmF0aW9uKCktPmxvY2FsQXVkaW9JbnB1dFBy
b3ZpZGVyKCk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQorICAgICAgICBpZiAoIWxv
Y2FsQXVkaW8tPnNvdXJjZSgpLT5pc0F1ZGlvU3RyZWFtU291cmNlKCkpCisgICAgICAgICAgICBj
b250aW51ZTsKKworICAgICAgICBNZWRpYVN0cmVhbUF1ZGlvU291cmNlKiBzb3VyY2UgPSBzdGF0
aWNfY2FzdDxNZWRpYVN0cmVhbUF1ZGlvU291cmNlKj4obG9jYWxBdWRpby0+c291cmNlKCkpOwor
ICAgICAgICBBU1NFUlQoIXNvdXJjZS0+ZGV2aWNlSWQoKS5pc0VtcHR5KCkpOworICAgICAgICBk
ZXN0aW5hdGlvbigpLT5lbmFibGVJbnB1dChzb3VyY2UtPmRldmljZUlkKCkpOworICAgICAgICBw
cm92aWRlciA9IGRlc3RpbmF0aW9uKCktPmxvY2FsQXVkaW9JbnB1dFByb3ZpZGVyKCk7CisgICAg
ICAgIGJyZWFrOwogICAgIH0KIAogICAgIFJlZlB0cjxNZWRpYVN0cmVhbUF1ZGlvU291cmNlTm9k
ZT4gbm9kZSA9IE1lZGlhU3RyZWFtQXVkaW9Tb3VyY2VOb2RlOjpjcmVhdGUodGhpcywgbWVkaWFT
dHJlYW0sIHByb3ZpZGVyKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8v
TWVkaWFTdHJlYW1BdWRpb0Rlc3RpbmF0aW9uTm9kZS5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9NZWRpYVN0cmVhbUF1ZGlvRGVzdGluYXRpb25Ob2Rl
LmNwcAkocmV2aXNpb24gMTU2OTQ2KQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRp
by9NZWRpYVN0cmVhbUF1ZGlvRGVzdGluYXRpb25Ob2RlLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MzEsOSArMzEsOCBAQAogI2luY2x1ZGUgIkF1ZGlvQ29udGV4dC5oIgogI2luY2x1ZGUgIkF1ZGlv
Tm9kZUlucHV0LmgiCiAjaW5jbHVkZSAiTWVkaWFTdHJlYW0uaCIKLSNpbmNsdWRlICJNZWRpYVN0
cmVhbUNlbnRlci5oIgorI2luY2x1ZGUgIk1lZGlhU3RyZWFtQXVkaW9Tb3VyY2UuaCIKICNpbmNs
dWRlICJSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXIuaCIKLSNpbmNsdWRlICJVVUlELmgiCiAjaW5j
bHVkZSA8d3RmL0xvY2tlci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC00OSwxMiArNDgs
MTAgQEAgTWVkaWFTdHJlYW1BdWRpb0Rlc3RpbmF0aW9uTm9kZTo6TWVkaWFTdAogewogICAgIHNl
dE5vZGVUeXBlKE5vZGVUeXBlTWVkaWFTdHJlYW1BdWRpb0Rlc3RpbmF0aW9uKTsKIAotICAgIG1f
c291cmNlID0gTWVkaWFTdHJlYW1Tb3VyY2U6OmNyZWF0ZShBU0NJSUxpdGVyYWwoIldlYkF1ZGlv
LSIpICsgY3JlYXRlQ2Fub25pY2FsVVVJRFN0cmluZygpLCBNZWRpYVN0cmVhbVNvdXJjZTo6QXVk
aW8sICJNZWRpYVN0cmVhbUF1ZGlvRGVzdGluYXRpb25Ob2RlIiwgTWVkaWFTdHJlYW1Tb3VyY2U6
OkxpdmUsIHRydWUpOworICAgIG1fc291cmNlID0gTWVkaWFTdHJlYW1BdWRpb1NvdXJjZTo6Y3Jl
YXRlKCk7CiAgICAgTWVkaWFTdHJlYW1Tb3VyY2VWZWN0b3IgYXVkaW9Tb3VyY2VzOwogICAgIGF1
ZGlvU291cmNlcy5hcHBlbmQobV9zb3VyY2UpOwotICAgIE1lZGlhU3RyZWFtU291cmNlVmVjdG9y
IHZpZGVvU291cmNlczsKLSAgICBtX3N0cmVhbSA9IE1lZGlhU3RyZWFtOjpjcmVhdGUoY29udGV4
dC0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLCBNZWRpYVN0cmVhbURlc2NyaXB0b3I6OmNyZWF0
ZShhdWRpb1NvdXJjZXMsIHZpZGVvU291cmNlcykpOwotICAgIE1lZGlhU3RyZWFtQ2VudGVyOjpz
aGFyZWQoKS5kaWRDcmVhdGVNZWRpYVN0cmVhbShtX3N0cmVhbS0+ZGVzY3JpcHRvcigpKTsKKyAg
ICBtX3N0cmVhbSA9IE1lZGlhU3RyZWFtOjpjcmVhdGUoY29udGV4dC0+c2NyaXB0RXhlY3V0aW9u
Q29udGV4dCgpLCBNZWRpYVN0cmVhbURlc2NyaXB0b3I6OmNyZWF0ZShhdWRpb1NvdXJjZXMsIE1l
ZGlhU3RyZWFtU291cmNlVmVjdG9yKCkpKTsKIAogICAgIG1fc291cmNlLT5zZXRBdWRpb0Zvcm1h
dChudW1iZXJPZkNoYW5uZWxzLCBjb250ZXh0LT5zYW1wbGVSYXRlKCkpOwogCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL01lZGlhU3RyZWFtQXVkaW9EZXN0aW5hdGlvbk5v
ZGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL01lZGlh
U3RyZWFtQXVkaW9EZXN0aW5hdGlvbk5vZGUuaAkocmV2aXNpb24gMTU2OTQ2KQorKysgU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9NZWRpYVN0cmVhbUF1ZGlvRGVzdGluYXRpb25Ob2Rl
LmgJKHdvcmtpbmcgY29weSkKQEAgLTM2LDYgKzM2LDcgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAogY2xhc3MgQXVkaW9Db250ZXh0OworY2xhc3MgTWVkaWFTdHJlYW1BdWRpb1NvdXJjZTsKIAog
Y2xhc3MgTWVkaWFTdHJlYW1BdWRpb0Rlc3RpbmF0aW9uTm9kZSA6IHB1YmxpYyBBdWRpb0Jhc2lj
SW5zcGVjdG9yTm9kZSB7CiBwdWJsaWM6CkBAIC02MSw3ICs2Miw3IEBAIHByaXZhdGU6CiAgICAg
dmlydHVhbCBib29sIHByb3BhZ2F0ZXNTaWxlbmNlKCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4g
ZmFsc2U7IH0KIAogICAgIFJlZlB0cjxNZWRpYVN0cmVhbT4gbV9zdHJlYW07Ci0gICAgUmVmUHRy
PE1lZGlhU3RyZWFtU291cmNlPiBtX3NvdXJjZTsKKyAgICBSZWZQdHI8TWVkaWFTdHJlYW1BdWRp
b1NvdXJjZT4gbV9zb3VyY2U7CiAgICAgUmVmUHRyPEF1ZGlvQnVzPiBtX21peEJ1czsKIH07CiAK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vTWVkaWFTdHJlYW1BdWRpb1Nv
dXJjZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9N
ZWRpYVN0cmVhbUF1ZGlvU291cmNlLmNwcAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViYXVkaW8vTWVkaWFTdHJlYW1BdWRpb1NvdXJjZS5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTAsMCArMSw5OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaWYg
RU5BQkxFKE1FRElBX1NUUkVBTSkKKworI2luY2x1ZGUgIk1lZGlhU3RyZWFtQXVkaW9Tb3VyY2Uu
aCIKKworI2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCisjaW5jbHVkZSAiVVVJRC5oIgorI2lu
Y2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworUGFzc1Jl
ZlB0cjxNZWRpYVN0cmVhbUF1ZGlvU291cmNlPiBNZWRpYVN0cmVhbUF1ZGlvU291cmNlOjpjcmVh
dGUoKQoreworICAgIHJldHVybiBhZG9wdFJlZihuZXcgTWVkaWFTdHJlYW1BdWRpb1NvdXJjZSgp
KTsKK30KKworTWVkaWFTdHJlYW1BdWRpb1NvdXJjZTo6TWVkaWFTdHJlYW1BdWRpb1NvdXJjZSgp
CisgICAgOiBNZWRpYVN0cmVhbVNvdXJjZShBU0NJSUxpdGVyYWwoIldlYkF1ZGlvLSIpICsgY3Jl
YXRlQ2Fub25pY2FsVVVJRFN0cmluZygpLCBNZWRpYVN0cmVhbVNvdXJjZTo6QXVkaW8sICJNZWRp
YVN0cmVhbUF1ZGlvRGVzdGluYXRpb25Ob2RlIikKK3sKK30KKworUGFzc1JlZlB0cjxNZWRpYVN0
cmVhbVNvdXJjZUNhcGFiaWxpdGllcz4gTWVkaWFTdHJlYW1BdWRpb1NvdXJjZTo6Y2FwYWJpbGl0
aWVzKCkgY29uc3QKK3sKKyAgICAvLyBGSVhNRTogaW1wbGVtZW50IHRoaXMuCisgICAgLy8gaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyMjQzMAorICAgIG5vdEltcGxl
bWVudGVkKCk7CisgICAgcmV0dXJuIDA7Cit9CisKK2NvbnN0IE1lZGlhU3RyZWFtU291cmNlU3Rh
dGVzJiBNZWRpYVN0cmVhbUF1ZGlvU291cmNlOjpzdGF0ZXMoKQoreworICAgIC8vIEZJWE1FOiBp
bXBsZW1lbnQgdGhpcy4KKyAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTIyNDMwCisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gbV9jdXJyZW50
U3RhdGVzOworICAgIAorfQorCit2b2lkIE1lZGlhU3RyZWFtQXVkaW9Tb3VyY2U6OmFkZEF1ZGlv
Q29uc3VtZXIoUGFzc1JlZlB0cjxBdWRpb0Rlc3RpbmF0aW9uQ29uc3VtZXI+IGNvbnN1bWVyKQor
eworICAgIE11dGV4TG9ja2VyIGxvY2tlcihtX2F1ZGlvQ29uc3VtZXJzTG9jayk7CisgICAgbV9h
dWRpb0NvbnN1bWVycy5hcHBlbmQoY29uc3VtZXIpOworfQorCitib29sIE1lZGlhU3RyZWFtQXVk
aW9Tb3VyY2U6OnJlbW92ZUF1ZGlvQ29uc3VtZXIoQXVkaW9EZXN0aW5hdGlvbkNvbnN1bWVyKiBj
b25zdW1lcikKK3sKKyAgICBNdXRleExvY2tlciBsb2NrZXIobV9hdWRpb0NvbnN1bWVyc0xvY2sp
OworICAgIHNpemVfdCBwb3MgPSBtX2F1ZGlvQ29uc3VtZXJzLmZpbmQoY29uc3VtZXIpOworICAg
IGlmIChwb3MgIT0gbm90Rm91bmQpIHsKKyAgICAgICAgbV9hdWRpb0NvbnN1bWVycy5yZW1vdmUo
cG9zKTsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorICAgIHJldHVybiBmYWxzZTsKK30K
Kwordm9pZCBNZWRpYVN0cmVhbUF1ZGlvU291cmNlOjpzZXRBdWRpb0Zvcm1hdChzaXplX3QgbnVt
YmVyT2ZDaGFubmVscywgZmxvYXQgc2FtcGxlUmF0ZSkKK3sKKyAgICBNdXRleExvY2tlciBsb2Nr
ZXIobV9hdWRpb0NvbnN1bWVyc0xvY2spOworICAgIGZvciAoVmVjdG9yPFJlZlB0cjxBdWRpb0Rl
c3RpbmF0aW9uQ29uc3VtZXI+ID46Oml0ZXJhdG9yIGl0ID0gbV9hdWRpb0NvbnN1bWVycy5iZWdp
bigpOyBpdCAhPSBtX2F1ZGlvQ29uc3VtZXJzLmVuZCgpOyArK2l0KQorICAgICAgICAoKml0KS0+
c2V0Rm9ybWF0KG51bWJlck9mQ2hhbm5lbHMsIHNhbXBsZVJhdGUpOworfQorCit2b2lkIE1lZGlh
U3RyZWFtQXVkaW9Tb3VyY2U6OmNvbnN1bWVBdWRpbyhBdWRpb0J1cyogYnVzLCBzaXplX3QgbnVt
YmVyT2ZGcmFtZXMpCit7CisgICAgTXV0ZXhMb2NrZXIgbG9ja2VyKG1fYXVkaW9Db25zdW1lcnNM
b2NrKTsKKyAgICBmb3IgKFZlY3RvcjxSZWZQdHI8QXVkaW9EZXN0aW5hdGlvbkNvbnN1bWVyPiA+
OjppdGVyYXRvciBpdCA9IG1fYXVkaW9Db25zdW1lcnMuYmVnaW4oKTsgaXQgIT0gbV9hdWRpb0Nv
bnN1bWVycy5lbmQoKTsgKytpdCkKKyAgICAgICAgKCppdCktPmNvbnN1bWVBdWRpbyhidXMsIG51
bWJlck9mRnJhbWVzKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8g
RU5BQkxFKE1FRElBX1NUUkVBTSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVk
aW8vTWVkaWFTdHJlYW1BdWRpb1NvdXJjZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViYXVkaW8vTWVkaWFTdHJlYW1BdWRpb1NvdXJjZS5oCShyZXZpc2lvbiAwKQor
KysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9NZWRpYVN0cmVhbUF1ZGlvU291cmNl
LmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw3NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycg
QU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICog
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBNZWRp
YVN0cmVhbUF1ZGlvU291cmNlX2gKKyNkZWZpbmUgTWVkaWFTdHJlYW1BdWRpb1NvdXJjZV9oCisK
KyNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQorCisjaW5jbHVkZSAiQXVkaW9EZXN0aW5hdGlvbkNv
bnN1bWVyLmgiCisjaW5jbHVkZSAiTWVkaWFTdHJlYW1Tb3VyY2UuaCIKKyNpbmNsdWRlIDx3dGYv
UmVmQ291bnRlZC5oPgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKyNpbmNsdWRlIDx3dGYvdGV4
dC9XVEZTdHJpbmcuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBBdWRpb0J1czsK
K2NsYXNzIE1lZGlhU3RyZWFtU291cmNlQ2FwYWJpbGl0aWVzOworCitjbGFzcyBNZWRpYVN0cmVh
bUF1ZGlvU291cmNlIDogcHVibGljIE1lZGlhU3RyZWFtU291cmNlIHsKK3B1YmxpYzoKKyAgICBz
dGF0aWMgUGFzc1JlZlB0cjxNZWRpYVN0cmVhbUF1ZGlvU291cmNlPiBjcmVhdGUoKTsKKworICAg
IH5NZWRpYVN0cmVhbUF1ZGlvU291cmNlKCkgeyB9CisKKyAgICB2aXJ0dWFsIGJvb2wgaXNBdWRp
b1N0cmVhbVNvdXJjZSgpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KKyAgICB2aXJ0dWFsIGJvb2wg
dXNlSURGb3JUcmFja0lEKCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQorCisgICAgdmlydHVhbCBQ
YXNzUmVmUHRyPE1lZGlhU3RyZWFtU291cmNlQ2FwYWJpbGl0aWVzPiBjYXBhYmlsaXRpZXMoKSBj
b25zdDsKKyAgICB2aXJ0dWFsIGNvbnN0IE1lZGlhU3RyZWFtU291cmNlU3RhdGVzJiBzdGF0ZXMo
KTsKKyAgICAKKyAgICBjb25zdCBTdHJpbmcmIGRldmljZUlkKCkgY29uc3QgeyByZXR1cm4gbV9k
ZXZpY2VJZDsgfQorICAgIHZvaWQgc2V0RGV2aWNlSWQoY29uc3QgU3RyaW5nJiBkZXZpY2VJZCkg
eyBtX2RldmljZUlkID0gZGV2aWNlSWQ7IH0KKworICAgIHZvaWQgc2V0QXVkaW9Gb3JtYXQoc2l6
ZV90IG51bWJlck9mQ2hhbm5lbHMsIGZsb2F0IHNhbXBsZVJhdGUpOworICAgIHZvaWQgY29uc3Vt
ZUF1ZGlvKEF1ZGlvQnVzKiwgc2l6ZV90IG51bWJlck9mRnJhbWVzKTsKKworICAgIHZvaWQgYWRk
QXVkaW9Db25zdW1lcihQYXNzUmVmUHRyPEF1ZGlvRGVzdGluYXRpb25Db25zdW1lcj4pOworICAg
IGJvb2wgcmVtb3ZlQXVkaW9Db25zdW1lcihBdWRpb0Rlc3RpbmF0aW9uQ29uc3VtZXIqKTsKKyAg
ICBjb25zdCBWZWN0b3I8UmVmUHRyPEF1ZGlvRGVzdGluYXRpb25Db25zdW1lcj4+JiBhdWRpb0Nv
bnN1bWVycygpIGNvbnN0IHsgcmV0dXJuIG1fYXVkaW9Db25zdW1lcnM7IH0KKworcHJpdmF0ZToK
KyAgICBNZWRpYVN0cmVhbUF1ZGlvU291cmNlKCk7CisKKyAgICBTdHJpbmcgbV9kZXZpY2VJZDsK
KyAgICBNdXRleCBtX2F1ZGlvQ29uc3VtZXJzTG9jazsKKyAgICBWZWN0b3I8UmVmUHRyPEF1ZGlv
RGVzdGluYXRpb25Db25zdW1lcj4+IG1fYXVkaW9Db25zdW1lcnM7CisgICAgTWVkaWFTdHJlYW1T
b3VyY2VTdGF0ZXMgbV9jdXJyZW50U3RhdGVzOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQorCisjZW5kaWYgLy8gRU5BQkxFKE1FRElBX1NUUkVBTSkKKworI2VuZGlmIC8vIE1lZGlhU3Ry
ZWFtQXVkaW9Tb3VyY2VfaApJbmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMTU2OTQ2KQorKysgU291cmNlL1dlYkNv
cmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC04
NCw2ICs4NCwzMCBAQAogCQkwNzAzMzRENzE0NTlGRkQ1MDA4RDhENDUgLyogVHJhY2tCYXNlLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwNzAzMzRENjE0
NTlGRkQ1MDA4RDhENDUgLyogVHJhY2tCYXNlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMDcwMzM0RDkxNDVBMDA2RjAwOEQ4RDQ1IC8qIFRyYWNr
QmFzZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAw
NzAzMzREODE0NUEwMDZGMDA4RDhENDUgLyogVHJhY2tCYXNlLmNwcCAqLzsgfTsKIAkJMDcwMzM0
RTkxNDVBMUYzNjAwOEQ4RDQ1IC8qIEpTVHJhY2tDdXN0b20uY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDcwMzM0RTgxNDVBMUYzNTAwOEQ4RDQ1IC8q
IEpTVHJhY2tDdXN0b20uY3BwICovOyB9OworCQkwNzA1ODRGRDE3RjlENkRGMDA1RjJCQ0IgLyog
TWVkaWFTdHJlYW1Tb3VyY2VDYXBhYmlsaXRpZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3MDU4NEZCMTdGOUQ2REYwMDVGMkJDQiAvKiBNZWRpYVN0
cmVhbVNvdXJjZUNhcGFiaWxpdGllcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CisJCTA3MDU4NEZGMTdGOUYwNUUwMDVGMkJDQiAvKiBDYXBhYmlsaXR5
UmFuZ2UuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MDcwNTg0RkUxN0Y5RjA1RTAwNUYyQkNCIC8qIENhcGFiaWxpdHlSYW5nZS5jcHAgKi87IH07CisJ
CTA3MDU4NTAyMTdGQTEwRDAwMDVGMkJDQiAvKiBKU0FsbFZpZGVvQ2FwYWJpbGl0aWVzLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3MDU4NTAwMTdG
QTEwRDAwMDVGMkJDQiAvKiBKU0FsbFZpZGVvQ2FwYWJpbGl0aWVzLmNwcCAqLzsgfTsKKwkJMDcw
NTg1MDMxN0ZBMTBEMDAwNUYyQkNCIC8qIEpTQWxsVmlkZW9DYXBhYmlsaXRpZXMuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3MDU4NTAxMTdGQTEwRDAw
MDVGMkJDQiAvKiBKU0FsbFZpZGVvQ2FwYWJpbGl0aWVzLmggKi87IH07CisJCTA3MDU4NTA4MTdG
QTQ2ODkwMDVGMkJDQiAvKiBBbGxBdWRpb0NhcGFiaWxpdGllcy5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDcwNTg1MDUxN0ZBNDY4OTAwNUYyQkNCIC8q
IEFsbEF1ZGlvQ2FwYWJpbGl0aWVzLmggKi87IH07CisJCTA3MDU4NTBCMTdGQTQ4MjcwMDVGMkJD
QiAvKiBNZWRpYVN0cmVhbUNhcGFiaWxpdGllcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMDcwNTg1MEExN0ZBNDgyNzAwNUYyQkNCIC8qIE1lZGlhU3Ry
ZWFtQ2FwYWJpbGl0aWVzLmggKi87IH07CisJCTA3MDU4NTEyMTdGQTcxMDcwMDVGMkJDQiAvKiBK
U01lZGlhU3RyZWFtQ2FwYWJpbGl0aWVzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDA3MDU4NTEwMTdGQTcxMDcwMDVGMkJDQiAvKiBKU01lZGlhU3Ry
ZWFtQ2FwYWJpbGl0aWVzLmNwcCAqLzsgfTsKKwkJMDcwNTg1MTMxN0ZBNzEwNzAwNUYyQkNCIC8q
IEpTTWVkaWFTdHJlYW1DYXBhYmlsaXRpZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDA3MDU4NTExMTdGQTcxMDcwMDVGMkJDQiAvKiBKU01lZGlhU3Ry
ZWFtQ2FwYWJpbGl0aWVzLmggKi87IH07CisJCTA3MDU4NTE1MTdGQjBFRUEwMDVGMkJDQiAvKiBN
ZWRpYVN0cmVhbUNhcGFiaWxpdGllcy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAwNzA1ODUxNDE3RkIwRTJDMDA1RjJCQ0IgLyogTWVkaWFTdHJlYW1D
YXBhYmlsaXRpZXMuY3BwICovOyB9OworCQkwNzA1ODUxNzE3RkI0MEU5MDA1RjJCQ0IgLyogSlNN
ZWRpYVN0cmVhbUNhcGFiaWxpdGllc0N1c3RvbS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwNzA1ODUxNjE3RkI0MEU5MDA1RjJCQ0IgLyogSlNNZWRp
YVN0cmVhbUNhcGFiaWxpdGllc0N1c3RvbS5jcHAgKi87IH07CisJCTA3MDU4NTFBMTdGQjQ0QjQw
MDVGMkJDQiAvKiBKU0FsbEF1ZGlvQ2FwYWJpbGl0aWVzLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3MDU4NTE4MTdGQjQ0QjQwMDVGMkJDQiAvKiBK
U0FsbEF1ZGlvQ2FwYWJpbGl0aWVzLmNwcCAqLzsgfTsKKwkJMDcwNTg1MUIxN0ZCNDRCNDAwNUYy
QkNCIC8qIEpTQWxsQXVkaW9DYXBhYmlsaXRpZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3MDU4NTE5MTdGQjQ0QjQwMDVGMkJDQiAvKiBKU0FsbEF1
ZGlvQ2FwYWJpbGl0aWVzLmggKi87IH07CisJCTA3MDU4NTIxMTdGREMxNDAwMDVGMkJDQiAvKiBN
ZWRpYVRyYWNrQ29uc3RyYWludC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMDcwNTg1MUQxN0ZEQzE0MDAwNUYyQkNCIC8qIE1lZGlhVHJhY2tDb25zdHJh
aW50LmggKi87IH07CisJCTA3MDU4NTIzMTdGREMxNDAwMDVGMkJDQiAvKiBNZWRpYVRyYWNrQ29u
c3RyYWludHMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMDcwNTg1MUYxN0ZEQzE0MDAwNUYyQkNCIC8qIE1lZGlhVHJhY2tDb25zdHJhaW50cy5jcHAg
Ki87IH07CisJCTA3MDU4NTI0MTdGREMxNDAwMDVGMkJDQiAvKiBNZWRpYVRyYWNrQ29uc3RyYWlu
dHMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3MDU4
NTIwMTdGREMxNDAwMDVGMkJDQiAvKiBNZWRpYVRyYWNrQ29uc3RyYWludHMuaCAqLzsgfTsKKwkJ
MDcwNTg1MjkxN0ZERTAyQzAwNUYyQkNCIC8qIE1lZGlhVHJhY2tDb25zdHJhaW50U2V0LmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwNzA1ODUyNjE3RkRF
MDJCMDA1RjJCQ0IgLyogTWVkaWFUcmFja0NvbnN0cmFpbnRTZXQuaCAqLzsgfTsKKwkJMDcwNTg1
MzExN0ZERTZEOTAwNUYyQkNCIC8qIEpTTWVkaWFUcmFja0NvbnN0cmFpbnQuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDcwNTg1MkIxN0ZERTZEOTAw
NUYyQkNCIC8qIEpTTWVkaWFUcmFja0NvbnN0cmFpbnQuY3BwICovOyB9OworCQkwNzA1ODUzMjE3
RkRFNkQ5MDA1RjJCQ0IgLyogSlNNZWRpYVRyYWNrQ29uc3RyYWludC5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDcwNTg1MkMxN0ZERTZEOTAwNUYyQkNC
IC8qIEpTTWVkaWFUcmFja0NvbnN0cmFpbnQuaCAqLzsgfTsKKwkJMDcwNTg1MzMxN0ZERTZEOTAw
NUYyQkNCIC8qIEpTTWVkaWFUcmFja0NvbnN0cmFpbnRzLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3MDU4NTJEMTdGREU2RDkwMDVGMkJDQiAvKiBK
U01lZGlhVHJhY2tDb25zdHJhaW50cy5jcHAgKi87IH07CisJCTA3MDU4NTM0MTdGREU2RDkwMDVG
MkJDQiAvKiBKU01lZGlhVHJhY2tDb25zdHJhaW50cy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDcwNTg1MkUxN0ZERTZEOTAwNUYyQkNCIC8qIEpTTWVk
aWFUcmFja0NvbnN0cmFpbnRzLmggKi87IH07CisJCTA3MDU4NTM1MTdGREU2RDkwMDVGMkJDQiAv
KiBKU01lZGlhVHJhY2tDb25zdHJhaW50U2V0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3MDU4NTJGMTdGREU2RDkwMDVGMkJDQiAvKiBKU01lZGlh
VHJhY2tDb25zdHJhaW50U2V0LmNwcCAqLzsgfTsKKwkJMDcwNTg1MzYxN0ZERTZEOTAwNUYyQkNC
IC8qIEpTTWVkaWFUcmFja0NvbnN0cmFpbnRTZXQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3MDU4NTMwMTdGREU2RDkwMDVGMkJDQiAvKiBKU01lZGlh
VHJhY2tDb25zdHJhaW50U2V0LmggKi87IH07CisJCTA3MDU4NTM4MTdGRTA0NEYwMDVGMkJDQiAv
KiBNZWRpYVRyYWNrQ29uc3RyYWludFNldC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAwNzA1ODUzNzE3RkUwNDRGMDA1RjJCQ0IgLyogTWVkaWFUcmFj
a0NvbnN0cmFpbnRTZXQuY3BwICovOyB9OworCQkwNzA1ODUzQTE3RkUwNzcwMDA1RjJCQ0IgLyog
TWVkaWFUcmFja0NvbnN0cmFpbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMDcwNTg1MzkxN0ZFMDc3MDAwNUYyQkNCIC8qIE1lZGlhVHJhY2tDb25z
dHJhaW50LmNwcCAqLzsgfTsKIAkJMDcwNzU2OEIxNDIyNjJENjAwNDE0MTYxIC8qIEhUTUxUcmFj
a0VsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMDcwNzU2ODgxNDIyNjJENjAwNDE0MTYxIC8qIEhUTUxUcmFja0VsZW1lbnQuY3BwICovOyB9
OwogCQkwNzA3NTY4QzE0MjI2MkQ2MDA0MTQxNjEgLyogSFRNTFRyYWNrRWxlbWVudC5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDcwNzU2ODkxNDIyNjJE
NjAwNDE0MTYxIC8qIEhUTUxUcmFja0VsZW1lbnQuaCAqLzsgfTsKIAkJMDcwNzU2OTQxNDIyNjY4
RDAwNDE0MTYxIC8qIEpTVGV4dFRyYWNrLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDA3MDc1NjhFMTQyMjY2OEMwMDQxNDE2MSAvKiBKU1RleHRUcmFj
ay5jcHAgKi87IH07CkBAIC0xMTksNiArMTQzLDkgQEAKIAkJMDczNUVFNkEwRjQwQzVFNDAwNEEy
NjA0IC8qIE1lZGlhUGxheWVyUHJveHkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDA3MzVFRTY5MEY0MEM1RTQwMDRBMjYwNCAvKiBNZWRpYVBsYXllclBy
b3h5LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJ
MDczNjdEREYxNzJDQTY3RjAwRDg2MUI5IC8qIEluYmFuZFRleHRUcmFja1ByaXZhdGVMZWdhY3lB
VkZPYmpDLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAw
NzM2N0RERDE3MkNBNjdGMDBEODYxQjkgLyogSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUxlZ2FjeUFW
Rk9iakMuaCAqLzsgfTsKIAkJMDczNjdERTAxNzJDQTY4MjAwRDg2MUI5IC8qIEluYmFuZFRleHRU
cmFja1ByaXZhdGVMZWdhY3lBVkZPYmpDLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMDczNjdEREUxNzJDQTY3RjAwRDg2MUI5IC8qIEluYmFuZFRleHRU
cmFja1ByaXZhdGVMZWdhY3lBVkZPYmpDLm1tICovOyB9OworCQkwNzNBQjRCMzE3RjhCQUNBMDA2
RTBENkYgLyogQWxsVmlkZW9DYXBhYmlsaXRpZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3M0FCNEIwMTdGOEJBQ0EwMDZFMEQ2RiAvKiBBbGxWaWRl
b0NhcGFiaWxpdGllcy5oICovOyB9OworCQkwNzNBQjRCNzE3RjkyRUNGMDA2RTBENkYgLyogSlND
YXBhYmlsaXR5UmFuZ2UuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMDczQUI0QjUxN0Y5MkVDRjAwNkUwRDZGIC8qIEpTQ2FwYWJpbGl0eVJhbmdlLmNw
cCAqLzsgfTsKKwkJMDczQUI0QjgxN0Y5MkVDRjAwNkUwRDZGIC8qIEpTQ2FwYWJpbGl0eVJhbmdl
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwNzNBQjRC
NjE3RjkyRUNGMDA2RTBENkYgLyogSlNDYXBhYmlsaXR5UmFuZ2UuaCAqLzsgfTsKIAkJMDczQkUz
NDAxN0QxN0UwMTAwMkJENDMxIC8qIEpTTmF2aWdhdG9yTWVkaWFTdHJlYW0uY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDczQkUzM0UxN0QxN0UwMTAw
MkJENDMxIC8qIEpTTmF2aWdhdG9yTWVkaWFTdHJlYW0uY3BwICovOyB9OwogCQkwNzNCRTM0MTE3
RDE3RTAxMDAyQkQ0MzEgLyogSlNOYXZpZ2F0b3JNZWRpYVN0cmVhbS5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDczQkUzM0YxN0QxN0UwMTAwMkJENDMx
IC8qIEpTTmF2aWdhdG9yTWVkaWFTdHJlYW0uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwogCQkwNzNCRTM0ODE3RDE3RTdBMDAyQkQ0MzEgLyogSlNOYXZp
Z2F0b3JVc2VyTWVkaWFFcnJvci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAwNzNCRTM0MjE3RDE3RTdBMDAyQkQ0MzEgLyogSlNOYXZpZ2F0b3JVc2Vy
TWVkaWFFcnJvci5jcHAgKi87IH07CkBAIC0xNDUsNiArMTcyLDggQEAKIAkJMDc2OTcwODYxNDYz
QUQ4NzAwRjUwMkNGIC8qIFRleHRUcmFja0xpc3QuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDc2OTcwODQxNDYzQUQ4NzAwRjUwMkNGIC8qIFRleHRU
cmFja0xpc3QuY3BwICovOyB9OwogCQkwNzY5NzA4NzE0NjNBRDg3MDBGNTAyQ0YgLyogVGV4dFRy
YWNrTGlzdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MDc2OTcwODUxNDYzQUQ4NzAwRjUwMkNGIC8qIFRleHRUcmFja0xpc3QuaCAqLzsgfTsKIAkJMDc2
RjBEMEUxMkI4MTkyNzAwQzI2QUE0IC8qIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbi5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDc2RjBEMEEx
MkI4MTkyNzAwQzI2QUE0IC8qIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbi5oICovOyB9
OworCQkwNzgzMjI4NDE4MDEzRUQ4MDA5OTlFMEMgLyogTWVkaWFTdHJlYW1BdWRpb1NvdXJjZS5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwNzgzMjI4
MjE4MDEzRUQ3MDA5OTlFMEMgLyogTWVkaWFTdHJlYW1BdWRpb1NvdXJjZS5jcHAgKi87IH07CisJ
CTA3ODMyMjg1MTgwMTNFRDgwMDk5OUUwQyAvKiBNZWRpYVN0cmVhbUF1ZGlvU291cmNlLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwNzgzMjI4MzE4MDEz
RUQ4MDA5OTlFMEMgLyogTWVkaWFTdHJlYW1BdWRpb1NvdXJjZS5oICovOyB9OwogCQkwNzg0NjM0
MjE0NUIxNTFBMDBBNThERjEgLyogSlNUcmFja0V2ZW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3ODQ2MzQwMTQ1QjE1MUEwMEE1OERGMSAvKiBK
U1RyYWNrRXZlbnQuY3BwICovOyB9OwogCQkwNzg0NjM0MzE0NUIxNTFBMDBBNThERjEgLyogSlNU
cmFja0V2ZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAwNzg0NjM0MTE0NUIxNTFBMDBBNThERjEgLyogSlNUcmFja0V2ZW50LmggKi87IH07CiAJCTA3
ODQ2Mzg1MTQ1QjFCOEUwMEE1OERGMSAvKiBKU1RyYWNrQ3VzdG9tLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwNzg0NjM4NDE0NUIxQjhFMDBBNThERjEg
LyogSlNUcmFja0N1c3RvbS5oICovOyB9OwpAQCAtMjc2LDYgKzMwNSwxMiBAQAogCQkwN0M1OUI2
MDE3RjRCMjA4MDAwRkJDQkIgLyogSlNWaWRlb1N0cmVhbVRyYWNrLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwN0M1OUI1QzE3RjRCMjA4MDAwRkJDQkIg
LyogSlNWaWRlb1N0cmVhbVRyYWNrLmggKi87IH07CiAJCTA3QzU5QjYzMTdGNEQxQkYwMDBGQkNC
QiAvKiBNb2NrTWVkaWFTdHJlYW1DZW50ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMDdDNTlCNjExN0Y0Q0Y4NzAwMEZCQ0JCIC8qIE1vY2tNZWRp
YVN0cmVhbUNlbnRlci5jcHAgKi87IH07CiAJCTA3QzU5QjY0MTdGNEQxQzQwMDBGQkNCQiAvKiBN
b2NrTWVkaWFTdHJlYW1DZW50ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDA3QzU5QjYyMTdGNENGODcwMDBGQkNCQiAvKiBNb2NrTWVkaWFTdHJlYW1D
ZW50ZXIuaCAqLzsgfTsKKwkJMDdDNTlCNjgxN0Y3ODRCQTAwMEZCQ0JCIC8qIE1lZGlhU291cmNl
U3RhdGVzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDA3QzU5QjY1MTdGNzg0QkEwMDBGQkNCQiAvKiBNZWRpYVNvdXJjZVN0YXRlcy5jcHAgKi87IH07
CisJCTA3QzU5QjY5MTdGNzg0QkEwMDBGQkNCQiAvKiBNZWRpYVNvdXJjZVN0YXRlcy5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDdDNTlCNjYxN0Y3ODRC
QTAwMEZCQ0JCIC8qIE1lZGlhU291cmNlU3RhdGVzLmggKi87IH07CisJCTA3QzU5QjZFMTdGNzk0
RjYwMDBGQkNCQiAvKiBKU01lZGlhU291cmNlU3RhdGVzQ3VzdG9tLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3QzU5QjZEMTdGNzk0RjYwMDBGQkNC
QiAvKiBKU01lZGlhU291cmNlU3RhdGVzQ3VzdG9tLmNwcCAqLzsgfTsKKwkJMDdDNTlCNzExN0Y3
OUM3QzAwMEZCQ0JCIC8qIEpTTWVkaWFTb3VyY2VTdGF0ZXMuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDdDNTlCNkYxN0Y3OUM3QzAwMEZCQ0JCIC8q
IEpTTWVkaWFTb3VyY2VTdGF0ZXMuY3BwICovOyB9OworCQkwN0M1OUI3MjE3Rjc5QzdDMDAwRkJD
QkIgLyogSlNNZWRpYVNvdXJjZVN0YXRlcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMDdDNTlCNzAxN0Y3OUM3QzAwMEZCQ0JCIC8qIEpTTWVkaWFTb3Vy
Y2VTdGF0ZXMuaCAqLzsgfTsKKwkJMDdDNTlCNzYxN0Y3RDBEQjAwMEZCQ0JCIC8qIENhcGFiaWxp
dHlSYW5nZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MDdDNTlCNzQxN0Y3RDA5RDAwMEZCQ0JCIC8qIENhcGFiaWxpdHlSYW5nZS5oICovOyB9OwogCQkw
N0NFNzdENTE2NzEyQTZBMDBDNTVBNDcgLyogSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUNsaWVudC5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDdDRTc3RDQx
NjcxMkE2QTAwQzU1QTQ3IC8qIEluYmFuZFRleHRUcmFja1ByaXZhdGVDbGllbnQuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwN0RDNUZENDE3RDNF
RUU5MDA5OUY4OTAgLyogSlNSVENTdGF0c1Jlc3BvbnNlQ3VzdG9tLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3REM1RkQzMTdEM0VFRTkwMDk5Rjg5
MCAvKiBKU1JUQ1N0YXRzUmVzcG9uc2VDdXN0b20uY3BwICovOyB9OwogCQkwN0UxMTZCMTE0ODlD
OUExMDBFQzVBQ0UgLyogSlNUZXh0VHJhY2tDdXN0b20uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDdFMTE2QjAxNDg5QzlBMTAwRUM1QUNFIC8qIEpT
VGV4dFRyYWNrQ3VzdG9tLmNwcCAqLzsgfTsKQEAgLTY0MTQsNiArNjQ0OSwzNSBAQAogCQkwNzAz
MzRENjE0NTlGRkQ1MDA4RDhENDUgLyogVHJhY2tCYXNlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFRyYWNrQmFzZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkw
NzAzMzREODE0NUEwMDZGMDA4RDhENDUgLyogVHJhY2tCYXNlLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFRyYWNrQmFzZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTA3MDMzNEU4MTQ1QTFGMzUwMDhEOEQ0NSAvKiBKU1RyYWNrQ3VzdG9tLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTVHJhY2tDdXN0b20uY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwNzA1ODRGQjE3RjlENkRGMDA1RjJCQ0IgLyog
TWVkaWFTdHJlYW1Tb3VyY2VDYXBhYmlsaXRpZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gTWVkaWFTdHJlYW1Tb3VyY2VDYXBhYmlsaXRpZXMuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJMDcwNTg0RkUxN0Y5RjA1RTAwNUYyQkNCIC8qIENhcGFiaWxpdHlSYW5n
ZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDYXBhYmlsaXR5UmFu
Z2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwNzA1ODUwMDE3RkExMEQwMDA1
RjJCQ0IgLyogSlNBbGxWaWRlb0NhcGFiaWxpdGllcy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBKU0FsbFZpZGVvQ2FwYWJpbGl0aWVzLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJMDcwNTg1MDExN0ZBMTBEMDAwNUYyQkNCIC8qIEpTQWxsVmlkZW9D
YXBhYmlsaXRpZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNBbGxWaWRl
b0NhcGFiaWxpdGllcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwNzA1ODUwNTE3
RkE0Njg5MDA1RjJCQ0IgLyogQWxsQXVkaW9DYXBhYmlsaXRpZXMuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gQWxsQXVkaW9DYXBhYmlsaXRpZXMuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJMDcwNTg1MDYxN0ZBNDY4OTAwNUYyQkNCIC8qIEFsbEF1ZGlvQ2FwYWJp
bGl0aWVzLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBBbGxBdWRpb0NhcGFiaWxpdGllcy5p
ZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTA3MDU4NTBBMTdGQTQ4MjcwMDVGMkJD
QiAvKiBNZWRpYVN0cmVhbUNhcGFiaWxpdGllcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBNZWRpYVN0cmVhbUNhcGFiaWxpdGllcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQkwNzA1ODUwRTE3RkE2RkIxMDA1RjJCQ0IgLyogTWVkaWFTdHJlYW1DYXBhYmlsaXRp
ZXMuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IE1lZGlhU3RyZWFtQ2FwYWJpbGl0aWVzLmlk
bDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMDcwNTg1MTAxN0ZBNzEwNzAwNUYyQkNC
IC8qIEpTTWVkaWFTdHJlYW1DYXBhYmlsaXRpZXMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gSlNNZWRpYVN0cmVhbUNhcGFiaWxpdGllcy5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCTA3MDU4NTExMTdGQTcxMDcwMDVGMkJDQiAvKiBKU01lZGlhU3Ry
ZWFtQ2FwYWJpbGl0aWVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTTWVk
aWFTdHJlYW1DYXBhYmlsaXRpZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMDcw
NTg1MTQxN0ZCMEUyQzAwNUYyQkNCIC8qIE1lZGlhU3RyZWFtQ2FwYWJpbGl0aWVzLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE1lZGlhU3RyZWFtQ2FwYWJpbGl0aWVz
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMDcwNTg1MTYxN0ZCNDBFOTAwNUYy
QkNCIC8qIEpTTWVkaWFTdHJlYW1DYXBhYmlsaXRpZXNDdXN0b20uY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNNZWRpYVN0cmVhbUNhcGFiaWxpdGllc0N1c3RvbS5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTA3MDU4NTE4MTdGQjQ0QjQwMDVGMkJD
QiAvKiBKU0FsbEF1ZGlvQ2FwYWJpbGl0aWVzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IEpTQWxsQXVkaW9DYXBhYmlsaXRpZXMuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQkwNzA1ODUxOTE3RkI0NEI0MDA1RjJCQ0IgLyogSlNBbGxBdWRpb0NhcGFi
aWxpdGllcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU0FsbEF1ZGlvQ2Fw
YWJpbGl0aWVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTA3MDU4NTFDMTdGREIy
M0MwMDVGMkJDQiAvKiBNZWRpYVRyYWNrQ29uc3RyYWludHMuaWRsICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IE1lZGlhVHJhY2tD
b25zdHJhaW50cy5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTA3MDU4NTFEMTdG
REMxNDAwMDVGMkJDQiAvKiBNZWRpYVRyYWNrQ29uc3RyYWludC5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBNZWRpYVRyYWNrQ29uc3RyYWludC5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQkwNzA1ODUxRTE3RkRDMTQwMDA1RjJCQ0IgLyogTWVkaWFUcmFja0NvbnN0
cmFpbnQuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IE1lZGlhVHJhY2tDb25zdHJhaW50Lmlk
bDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMDcwNTg1MUYxN0ZEQzE0MDAwNUYyQkNC
IC8qIE1lZGlhVHJhY2tDb25zdHJhaW50cy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBNZWRpYVRyYWNrQ29uc3RyYWludHMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQkwNzA1ODUyMDE3RkRDMTQwMDA1RjJCQ0IgLyogTWVkaWFUcmFja0NvbnN0cmFp
bnRzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1lZGlhVHJhY2tDb25zdHJh
aW50cy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwNzA1ODUyNjE3RkRFMDJCMDA1
RjJCQ0IgLyogTWVkaWFUcmFja0NvbnN0cmFpbnRTZXQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gTWVkaWFUcmFja0NvbnN0cmFpbnRTZXQuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJMDcwNTg1MjcxN0ZERTAyQjAwNUYyQkNCIC8qIE1lZGlhVHJhY2tDb25zdHJh
aW50U2V0LmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBNZWRpYVRyYWNrQ29uc3RyYWludFNl
dC5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTA3MDU4NTJCMTdGREU2RDkwMDVG
MkJDQiAvKiBKU01lZGlhVHJhY2tDb25zdHJhaW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IEpTTWVkaWFUcmFja0NvbnN0cmFpbnQuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQkwNzA1ODUyQzE3RkRFNkQ5MDA1RjJCQ0IgLyogSlNNZWRpYVRyYWNr
Q29uc3RyYWludC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU01lZGlhVHJh
Y2tDb25zdHJhaW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTA3MDU4NTJEMTdG
REU2RDkwMDVGMkJDQiAvKiBKU01lZGlhVHJhY2tDb25zdHJhaW50cy5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU01lZGlhVHJhY2tDb25zdHJhaW50cy5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTA3MDU4NTJFMTdGREU2RDkwMDVGMkJDQiAvKiBK
U01lZGlhVHJhY2tDb25zdHJhaW50cy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBKU01lZGlhVHJhY2tDb25zdHJhaW50cy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQkwNzA1ODUyRjE3RkRFNkQ5MDA1RjJCQ0IgLyogSlNNZWRpYVRyYWNrQ29uc3RyYWludFNldC5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU01lZGlhVHJhY2tDb25z
dHJhaW50U2V0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMDcwNTg1MzAxN0ZE
RTZEOTAwNUYyQkNCIC8qIEpTTWVkaWFUcmFja0NvbnN0cmFpbnRTZXQuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gSlNNZWRpYVRyYWNrQ29uc3RyYWludFNldC5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQkwNzA1ODUzNzE3RkUwNDRGMDA1RjJCQ0IgLyogTWVkaWFU
cmFja0NvbnN0cmFpbnRTZXQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gTWVkaWFUcmFja0NvbnN0cmFpbnRTZXQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQkwNzA1ODUzOTE3RkUwNzcwMDA1RjJCQ0IgLyogTWVkaWFUcmFja0NvbnN0cmFpbnQuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTWVkaWFUcmFja0NvbnN0cmFp
bnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwNzA3NTY4ODE0MjI2MkQ2MDA0
MTQxNjEgLyogSFRNTFRyYWNrRWxlbWVudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBIVE1MVHJhY2tFbGVtZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJMDcwNzU2ODkxNDIyNjJENjAwNDE0MTYxIC8qIEhUTUxUcmFja0VsZW1lbnQuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSFRNTFRyYWNrRWxlbWVudC5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQkwNzA3NTY4QTE0MjI2MkQ2MDA0MTQxNjEgLyogSFRNTFRy
YWNrRWxlbWVudC5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gSFRNTFRyYWNrRWxlbWVudC5p
ZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC02NTQ5LDYgKzY2MTMsOSBAQAogCQkw
NzM1RUU2OTBGNDBDNUU0MDA0QTI2MDQgLyogTWVkaWFQbGF5ZXJQcm94eS5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBNZWRpYVBsYXllclByb3h5Lmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTA3MzY3REREMTcyQ0E2N0YwMEQ4NjFCOSAvKiBJbmJhbmRUZXh0VHJh
Y2tQcml2YXRlTGVnYWN5QVZGT2JqQy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUg
PSBJbmJhbmRUZXh0VHJhY2tQcml2YXRlTGVnYWN5QVZGT2JqQy5oOyBwYXRoID0gb2JqYy9JbmJh
bmRUZXh0VHJhY2tQcml2YXRlTGVnYWN5QVZGT2JqQy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQkwNzM2N0RERTE3MkNBNjdGMDBEODYxQjkgLyogSW5iYW5kVGV4dFRyYWNrUHJpdmF0
ZUxlZ2FjeUFWRk9iakMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IG5hbWUg
PSBJbmJhbmRUZXh0VHJhY2tQcml2YXRlTGVnYWN5QVZGT2JqQy5tbTsgcGF0aCA9IG9iamMvSW5i
YW5kVGV4dFRyYWNrUHJpdmF0ZUxlZ2FjeUFWRk9iakMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTA3M0FCNEIwMTdGOEJBQ0EwMDZFMEQ2RiAvKiBBbGxWaWRlb0NhcGFiaWxpdGll
cy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBbGxWaWRlb0NhcGFiaWxpdGll
cy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwNzNBQjRCNTE3RjkyRUNGMDA2RTBE
NkYgLyogSlNDYXBhYmlsaXR5UmFuZ2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gSlNDYXBhYmlsaXR5UmFuZ2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQkwNzNBQjRCNjE3RjkyRUNGMDA2RTBENkYgLyogSlNDYXBhYmlsaXR5UmFuZ2UuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNDYXBhYmlsaXR5UmFuZ2UuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDczQkUzM0UxN0QxN0UwMTAwMkJENDMxIC8qIEpTTmF2
aWdhdG9yTWVkaWFTdHJlYW0uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gSlNOYXZpZ2F0b3JNZWRpYVN0cmVhbS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTA3M0JFMzNGMTdEMTdFMDEwMDJCRDQzMSAvKiBKU05hdmlnYXRvck1lZGlhU3RyZWFtLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTTmF2aWdhdG9yTWVkaWFTdHJlYW0u
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDczQkUzNDIxN0QxN0U3QTAwMkJENDMx
IC8qIEpTTmF2aWdhdG9yVXNlck1lZGlhRXJyb3IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gSlNOYXZpZ2F0b3JVc2VyTWVkaWFFcnJvci5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CkBAIC02NTc1LDYgKzY2NDIsOCBAQAogCQkwNzY5NzA4NTE0NjNBRDg3
MDBGNTAyQ0YgLyogVGV4dFRyYWNrTGlzdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBUZXh0VHJhY2tMaXN0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA3NkYw
RDA5MTJCODE5MjcwMEMyNkFBNCAvKiBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb24uY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTWVkaWFQbGF5ZXJQcml2YXRl
QVZGb3VuZGF0aW9uLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDc2RjBEMEEx
MkI4MTkyNzAwQzI2QUE0IC8qIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbi5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRp
b24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMDc4MzIyODIxODAxM0VENzAwOTk5
RTBDIC8qIE1lZGlhU3RyZWFtQXVkaW9Tb3VyY2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gTWVkaWFTdHJlYW1BdWRpb1NvdXJjZS5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTA3ODMyMjgzMTgwMTNFRDgwMDk5OUUwQyAvKiBNZWRpYVN0cmVhbUF1
ZGlvU291cmNlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1lZGlhU3RyZWFt
QXVkaW9Tb3VyY2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDc4NDYzNDAxNDVC
MTUxQTAwQTU4REYxIC8qIEpTVHJhY2tFdmVudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBKU1RyYWNrRXZlbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQkwNzg0NjM0MTE0NUIxNTFBMDBBNThERjEgLyogSlNUcmFja0V2ZW50LmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTVHJhY2tFdmVudC5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQkwNzg0NjM4NDE0NUIxQjhFMDBBNThERjEgLyogSlNUcmFja0N1c3RvbS5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU1RyYWNrQ3VzdG9tLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC02NjM5LDYgKzY3MDgsMTUgQEAKIAkJMDdDNTlCNUMx
N0Y0QjIwODAwMEZCQ0JCIC8qIEpTVmlkZW9TdHJlYW1UcmFjay5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBKU1ZpZGVvU3RyZWFtVHJhY2suaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJMDdDNTlCNjExN0Y0Q0Y4NzAwMEZCQ0JCIC8qIE1vY2tNZWRpYVN0cmVhbUNl
bnRlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBNb2NrTWVkaWFT
dHJlYW1DZW50ZXIuY3BwOyBwYXRoID0gbW9jay9Nb2NrTWVkaWFTdHJlYW1DZW50ZXIuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwN0M1OUI2MjE3RjRDRjg3MDAwRkJDQkIgLyog
TW9ja01lZGlhU3RyZWFtQ2VudGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9
IE1vY2tNZWRpYVN0cmVhbUNlbnRlci5oOyBwYXRoID0gbW9jay9Nb2NrTWVkaWFTdHJlYW1DZW50
ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMDdDNTlCNjUxN0Y3ODRCQTAwMEZC
Q0JCIC8qIE1lZGlhU291cmNlU3RhdGVzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IE1lZGlhU291cmNlU3RhdGVzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJMDdDNTlCNjYxN0Y3ODRCQTAwMEZCQ0JCIC8qIE1lZGlhU291cmNlU3RhdGVzLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1lZGlhU291cmNlU3RhdGVzLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTA3QzU5QjY3MTdGNzg0QkEwMDBGQkNCQiAvKiBNZWRp
YVNvdXJjZVN0YXRlcy5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gTWVkaWFTb3VyY2VTdGF0
ZXMuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwN0M1OUI2RDE3Rjc5NEY2MDAw
RkJDQkIgLyogSlNNZWRpYVNvdXJjZVN0YXRlc0N1c3RvbS5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBKU01lZGlhU291cmNlU3RhdGVzQ3VzdG9tLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMDdDNTlCNkYxN0Y3OUM3QzAwMEZCQ0JCIC8qIEpTTWVk
aWFTb3VyY2VTdGF0ZXMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
SlNNZWRpYVNvdXJjZVN0YXRlcy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTA3
QzU5QjcwMTdGNzlDN0MwMDBGQkNCQiAvKiBKU01lZGlhU291cmNlU3RhdGVzLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTTWVkaWFTb3VyY2VTdGF0ZXMuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMDdDNTlCNzMxN0Y3RDA5RDAwMEZCQ0JCIC8qIEFsbFZpZGVv
Q2FwYWJpbGl0aWVzLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBBbGxWaWRlb0NhcGFiaWxp
dGllcy5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTA3QzU5Qjc0MTdGN0QwOUQw
MDBGQkNCQiAvKiBDYXBhYmlsaXR5UmFuZ2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gQ2FwYWJpbGl0eVJhbmdlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTA3
QzU5Qjc1MTdGN0QwOUQwMDBGQkNCQiAvKiBDYXBhYmlsaXR5UmFuZ2UuaWRsICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
dGV4dDsgcGF0aCA9IENhcGFiaWxpdHlSYW5nZS5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTA3Q0U3N0Q0MTY3MTJBNkEwMEM1NUE0NyAvKiBJbmJhbmRUZXh0VHJhY2tQcml2YXRl
Q2xpZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEluYmFuZFRleHRUcmFj
a1ByaXZhdGVDbGllbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDdEQzVGRDMx
N0QzRUVFOTAwOTlGODkwIC8qIEpTUlRDU3RhdHNSZXNwb25zZUN1c3RvbS5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU1JUQ1N0YXRzUmVzcG9uc2VDdXN0b20uY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwN0UxMTZCMDE0ODlDOUExMDBFQzVBQ0Ug
LyogSlNUZXh0VHJhY2tDdXN0b20uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gSlNUZXh0VHJhY2tDdXN0b20uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpA
QCAtMTMyMDksMTIgKzEzMjg3LDM0IEBACiAJCTA3MjIxQjQ2MTdDRUMzMjcwMDg0OEU1MSAvKiBt
ZWRpYXN0cmVhbSAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCisJ
CQkJMDcwNTg1MzkxN0ZFMDc3MDAwNUYyQkNCIC8qIE1lZGlhVHJhY2tDb25zdHJhaW50LmNwcCAq
LywKKwkJCQkwNzA1ODUzNzE3RkUwNDRGMDA1RjJCQ0IgLyogTWVkaWFUcmFja0NvbnN0cmFpbnRT
ZXQuY3BwICovLAorCQkJCTA3MDU4NTI2MTdGREUwMkIwMDVGMkJDQiAvKiBNZWRpYVRyYWNrQ29u
c3RyYWludFNldC5oICovLAorCQkJCTA3MDU4NTI3MTdGREUwMkIwMDVGMkJDQiAvKiBNZWRpYVRy
YWNrQ29uc3RyYWludFNldC5pZGwgKi8sCisJCQkJMDcwNTg1MUQxN0ZEQzE0MDAwNUYyQkNCIC8q
IE1lZGlhVHJhY2tDb25zdHJhaW50LmggKi8sCisJCQkJMDcwNTg1MUUxN0ZEQzE0MDAwNUYyQkNC
IC8qIE1lZGlhVHJhY2tDb25zdHJhaW50LmlkbCAqLywKKwkJCQkwNzA1ODUxRjE3RkRDMTQwMDA1
RjJCQ0IgLyogTWVkaWFUcmFja0NvbnN0cmFpbnRzLmNwcCAqLywKKwkJCQkwNzA1ODUyMDE3RkRD
MTQwMDA1RjJCQ0IgLyogTWVkaWFUcmFja0NvbnN0cmFpbnRzLmggKi8sCisJCQkJMDcwNTg1MUMx
N0ZEQjIzQzAwNUYyQkNCIC8qIE1lZGlhVHJhY2tDb25zdHJhaW50cy5pZGwgKi8sCisJCQkJMDcw
NTg1MDUxN0ZBNDY4OTAwNUYyQkNCIC8qIEFsbEF1ZGlvQ2FwYWJpbGl0aWVzLmggKi8sCisJCQkJ
MDcwNTg1MDYxN0ZBNDY4OTAwNUYyQkNCIC8qIEFsbEF1ZGlvQ2FwYWJpbGl0aWVzLmlkbCAqLywK
KwkJCQkwNzA1ODRGRTE3RjlGMDVFMDA1RjJCQ0IgLyogQ2FwYWJpbGl0eVJhbmdlLmNwcCAqLywK
KwkJCQkwNzNBQjRCMDE3RjhCQUNBMDA2RTBENkYgLyogQWxsVmlkZW9DYXBhYmlsaXRpZXMuaCAq
LywKKwkJCQkwN0M1OUI3MzE3RjdEMDlEMDAwRkJDQkIgLyogQWxsVmlkZW9DYXBhYmlsaXRpZXMu
aWRsICovLAorCQkJCTA3QzU5Qjc0MTdGN0QwOUQwMDBGQkNCQiAvKiBDYXBhYmlsaXR5UmFuZ2Uu
aCAqLywKKwkJCQkwN0M1OUI3NTE3RjdEMDlEMDAwRkJDQkIgLyogQ2FwYWJpbGl0eVJhbmdlLmlk
bCAqLywKKwkJCQkwN0M1OUI2NTE3Rjc4NEJBMDAwRkJDQkIgLyogTWVkaWFTb3VyY2VTdGF0ZXMu
Y3BwICovLAorCQkJCTA3QzU5QjY2MTdGNzg0QkEwMDBGQkNCQiAvKiBNZWRpYVNvdXJjZVN0YXRl
cy5oICovLAorCQkJCTA3QzU5QjY3MTdGNzg0QkEwMDBGQkNCQiAvKiBNZWRpYVNvdXJjZVN0YXRl
cy5pZGwgKi8sCiAJCQkJMDdDNTlCNEQxN0Y0QUMxNTAwMEZCQ0JCIC8qIEF1ZGlvU3RyZWFtVHJh
Y2suY3BwICovLAogCQkJCTA3QzU5QjRFMTdGNEFDMTUwMDBGQkNCQiAvKiBBdWRpb1N0cmVhbVRy
YWNrLmggKi8sCiAJCQkJMDdDNTlCNEYxN0Y0QUMxNTAwMEZCQ0JCIC8qIEF1ZGlvU3RyZWFtVHJh
Y2suaWRsICovLAogCQkJCTA3QzU5QjUwMTdGNEFDMTUwMDBGQkNCQiAvKiBWaWRlb1N0cmVhbVRy
YWNrLmNwcCAqLywKIAkJCQkwN0M1OUI1MTE3RjRBQzE1MDAwRkJDQkIgLyogVmlkZW9TdHJlYW1U
cmFjay5oICovLAogCQkJCTA3QzU5QjUyMTdGNEFDMTUwMDBGQkNCQiAvKiBWaWRlb1N0cmVhbVRy
YWNrLmlkbCAqLywKKwkJCQkwNzA1ODUxNDE3RkIwRTJDMDA1RjJCQ0IgLyogTWVkaWFTdHJlYW1D
YXBhYmlsaXRpZXMuY3BwICovLAorCQkJCTA3MDU4NTBFMTdGQTZGQjEwMDVGMkJDQiAvKiBNZWRp
YVN0cmVhbUNhcGFiaWxpdGllcy5pZGwgKi8sCisJCQkJMDcwNTg1MEExN0ZBNDgyNzAwNUYyQkNC
IC8qIE1lZGlhU3RyZWFtQ2FwYWJpbGl0aWVzLmggKi8sCiAJCQkJMDcyMjFCNEExN0NFQzMyNzAw
ODQ4RTUxIC8qIE1lZGlhQ29uc3RyYWludHNJbXBsLmNwcCAqLywKIAkJCQkwNzIyMUI0QjE3Q0VD
MzI3MDA4NDhFNTEgLyogTWVkaWFDb25zdHJhaW50c0ltcGwuaCAqLywKIAkJCQkwNzIyMUI0QzE3
Q0VDMzI3MDA4NDhFNTEgLyogTWVkaWFTdHJlYW0uY3BwICovLApAQCAtMTMzMTMsNiArMTM0MTMs
NyBAQAogCQkJCTA3MjIxQjlEMTdDRjBBRDQwMDg0OEU1MSAvKiBNZWRpYVN0cmVhbURlc2NyaXB0
b3IuaCAqLywKIAkJCQkwNzIyMUI5RTE3Q0YwQUQ0MDA4NDhFNTEgLyogTWVkaWFTdHJlYW1Tb3Vy
Y2UuY3BwICovLAogCQkJCTA3MjIxQjlGMTdDRjBBRDQwMDg0OEU1MSAvKiBNZWRpYVN0cmVhbVNv
dXJjZS5oICovLAorCQkJCTA3MDU4NEZCMTdGOUQ2REYwMDVGMkJDQiAvKiBNZWRpYVN0cmVhbVNv
dXJjZUNhcGFiaWxpdGllcy5oICovLAogCQkJCTA3NjMwNkUyMTdFMjJBNDMwMDVBN0M0RSAvKiBN
ZWRpYVN0cmVhbVRyYWNrU291cmNlc1JlcXVlc3RDbGllbnQuaCAqLywKIAkJCQkwNzIyMUJBMTE3
Q0YwQUQ0MDA4NDhFNTEgLyogUlRDQ29uZmlndXJhdGlvbi5oICovLAogCQkJCTA3MjIxQkEyMTdD
RjBBRDQwMDg0OEU1MSAvKiBSVENEYXRhQ2hhbm5lbEhhbmRsZXIuaCAqLywKQEAgLTEzMzYwLDYg
KzEzNDYxLDE2IEBACiAJCTA3Q0ZEOTkzMTdEMDE0MDUwMDFDNEZGQyAvKiBNZWRpYVN0cmVhbSAq
LyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCisJCQkJMDcwNTg1MkIx
N0ZERTZEOTAwNUYyQkNCIC8qIEpTTWVkaWFUcmFja0NvbnN0cmFpbnQuY3BwICovLAorCQkJCTA3
MDU4NTJDMTdGREU2RDkwMDVGMkJDQiAvKiBKU01lZGlhVHJhY2tDb25zdHJhaW50LmggKi8sCisJ
CQkJMDcwNTg1MkQxN0ZERTZEOTAwNUYyQkNCIC8qIEpTTWVkaWFUcmFja0NvbnN0cmFpbnRzLmNw
cCAqLywKKwkJCQkwNzA1ODUyRTE3RkRFNkQ5MDA1RjJCQ0IgLyogSlNNZWRpYVRyYWNrQ29uc3Ry
YWludHMuaCAqLywKKwkJCQkwNzA1ODUyRjE3RkRFNkQ5MDA1RjJCQ0IgLyogSlNNZWRpYVRyYWNr
Q29uc3RyYWludFNldC5jcHAgKi8sCisJCQkJMDcwNTg1MzAxN0ZERTZEOTAwNUYyQkNCIC8qIEpT
TWVkaWFUcmFja0NvbnN0cmFpbnRTZXQuaCAqLywKKwkJCQkwNzA1ODUxMDE3RkE3MTA3MDA1RjJC
Q0IgLyogSlNNZWRpYVN0cmVhbUNhcGFiaWxpdGllcy5jcHAgKi8sCisJCQkJMDcwNTg1MTExN0ZB
NzEwNzAwNUYyQkNCIC8qIEpTTWVkaWFTdHJlYW1DYXBhYmlsaXRpZXMuaCAqLywKKwkJCQkwN0M1
OUI2RjE3Rjc5QzdDMDAwRkJDQkIgLyogSlNNZWRpYVNvdXJjZVN0YXRlcy5jcHAgKi8sCisJCQkJ
MDdDNTlCNzAxN0Y3OUM3QzAwMEZCQ0JCIC8qIEpTTWVkaWFTb3VyY2VTdGF0ZXMuaCAqLywKIAkJ
CQkwN0M1OUI1OTE3RjRCMjA4MDAwRkJDQkIgLyogSlNBdWRpb1N0cmVhbVRyYWNrLmNwcCAqLywK
IAkJCQkwN0M1OUI1QTE3RjRCMjA4MDAwRkJDQkIgLyogSlNBdWRpb1N0cmVhbVRyYWNrLmggKi8s
CiAJCQkJMDdDNTlCNUIxN0Y0QjIwODAwMEZCQ0JCIC8qIEpTVmlkZW9TdHJlYW1UcmFjay5jcHAg
Ki8sCkBAIC0xOTE4MSw2ICsxOTI5Miw4IEBACiAJCUJDNEVERUY3MEMwOEY0MTQwMDdFREQ0OSAv
KiBDdXN0b20gKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAorCQkJ
CTA3MDU4NTE2MTdGQjQwRTkwMDVGMkJDQiAvKiBKU01lZGlhU3RyZWFtQ2FwYWJpbGl0aWVzQ3Vz
dG9tLmNwcCAqLywKKwkJCQkwN0M1OUI2RDE3Rjc5NEY2MDAwRkJDQkIgLyogSlNNZWRpYVNvdXJj
ZVN0YXRlc0N1c3RvbS5jcHAgKi8sCiAJCQkJQkMyRUQ2QkIwQzZCRDJGMDAwOTIwQkZGIC8qIEpT
QXR0ckN1c3RvbS5jcHAgKi8sCiAJCQkJRkRFQUFBRUYxMkIwMkVFNDAwRENGMzNCIC8qIEpTQXVk
aW9CdWZmZXJTb3VyY2VOb2RlQ3VzdG9tLmNwcCAqLywKIAkJCQlGREVBQUFGMDEyQjAyRUU0MDBE
Q0YzM0IgLyogSlNBdWRpb0NvbnRleHRDdXN0b20uY3BwICovLApAQCAtMTk3NzcsNiArMTk4OTAs
MTIgQEAKIAkJQ0Q2MUZFN0IxNzk0Q0EwMjAwNDEwMUVCIC8qIE1lZGlhU291cmNlICovID0gewog
CQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJCQkwNzA1ODUxODE3RkI0NEI0
MDA1RjJCQ0IgLyogSlNBbGxBdWRpb0NhcGFiaWxpdGllcy5jcHAgKi8sCisJCQkJMDcwNTg1MTkx
N0ZCNDRCNDAwNUYyQkNCIC8qIEpTQWxsQXVkaW9DYXBhYmlsaXRpZXMuaCAqLywKKwkJCQkwNzA1
ODUwMDE3RkExMEQwMDA1RjJCQ0IgLyogSlNBbGxWaWRlb0NhcGFiaWxpdGllcy5jcHAgKi8sCisJ
CQkJMDcwNTg1MDExN0ZBMTBEMDAwNUYyQkNCIC8qIEpTQWxsVmlkZW9DYXBhYmlsaXRpZXMuaCAq
LywKKwkJCQkwNzNBQjRCNTE3RjkyRUNGMDA2RTBENkYgLyogSlNDYXBhYmlsaXR5UmFuZ2UuY3Bw
ICovLAorCQkJCTA3M0FCNEI2MTdGOTJFQ0YwMDZFMEQ2RiAvKiBKU0NhcGFiaWxpdHlSYW5nZS5o
ICovLAogCQkJCUNEOURFMTcyMTdBQUM3NEMwMEVBMzg2RCAvKiBKU01lZGlhU291cmNlLmNwcCAq
LywKIAkJCQlDRDlERTE3MzE3QUFDNzRDMDBFQTM4NkQgLyogSlNNZWRpYVNvdXJjZS5oICovLAog
CQkJCUNEOURFMTc2MTdBQUM3NUIwMEVBMzg2RCAvKiBKU1NvdXJjZUJ1ZmZlci5jcHAgKi8sCkBA
IC0yMTAyMiw2ICsyMTE0MSw4IEBACiAJCUZEMzE1RkEyMTJCMDI1QjEwMEMxQTM1OSAvKiB3ZWJh
dWRpbyAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCisJCQkJMDc4
MzIyODIxODAxM0VENzAwOTk5RTBDIC8qIE1lZGlhU3RyZWFtQXVkaW9Tb3VyY2UuY3BwICovLAor
CQkJCTA3ODMyMjgzMTgwMTNFRDgwMDk5OUUwQyAvKiBNZWRpYVN0cmVhbUF1ZGlvU291cmNlLmgg
Ki8sCiAJCQkJRkQzMTVGRjMxMkIwMjY3NjAwQzFBMzU5IC8qIEFuYWx5c2VyTm9kZS5jcHAgKi8s
CiAJCQkJRkQzMTVGRjQxMkIwMjY3NjAwQzFBMzU5IC8qIEFuYWx5c2VyTm9kZS5oICovLAogCQkJ
CUZEMzE1RkY1MTJCMDI2NzYwMEMxQTM1OSAvKiBBbmFseXNlck5vZGUuaWRsICovLApAQCAtMjE0
MTksNiArMjE1NDAsNyBAQAogCQkJCUZEMzE2MEJGMTJCMDI3MkEwMEMxQTM1OSAvKiBBdWRpb0Zp
bGVSZWFkZXJNYWMuaCBpbiBIZWFkZXJzICovLAogCQkJCUZERTJENTVCMTU5RTY2RUIwMERDQ0NG
OCAvKiBBdWRpb0lPQ2FsbGJhY2suaCBpbiBIZWFkZXJzICovLAogCQkJCUZEMzE2MDEwMTJCMDI2
NzYwMEMxQTM1OSAvKiBBdWRpb0xpc3RlbmVyLmggaW4gSGVhZGVycyAqLywKKwkJCQkwNzA1ODUy
NDE3RkRDMTQwMDA1RjJCQ0IgLyogTWVkaWFUcmFja0NvbnN0cmFpbnRzLmggaW4gSGVhZGVycyAq
LywKIAkJCQlGRDMxNjAxMzEyQjAyNjc2MDBDMUEzNTkgLyogQXVkaW9Ob2RlLmggaW4gSGVhZGVy
cyAqLywKIAkJCQlGRDMxNjAxNjEyQjAyNjc2MDBDMUEzNTkgLyogQXVkaW9Ob2RlSW5wdXQuaCBp
biBIZWFkZXJzICovLAogCQkJCUZEMzE2MDE4MTJCMDI2NzYwMEMxQTM1OSAvKiBBdWRpb05vZGVP
dXRwdXQuaCBpbiBIZWFkZXJzICovLApAQCAtMjE1ODEsNiArMjE3MDMsNyBAQAogCQkJCUJDMEIz
NkE1MENEM0M2N0MwMEFDN0VCNSAvKiBDb25zb2xlLmggaW4gSGVhZGVycyAqLywKIAkJCQkyREYy
RTlENTE2NkUzOTc1MDAzNUJFRjIgLyogQ29uc29sZUFQSVR5cGVzLmggaW4gSGVhZGVycyAqLywK
IAkJCQk0MUYwNjE4RTBGNUYwNjk4MDBBMDdFQUMgLyogQ29uc29sZU1lc3NhZ2UuaCBpbiBIZWFk
ZXJzICovLAorCQkJCTA3M0FCNEIzMTdGOEJBQ0EwMDZFMEQ2RiAvKiBBbGxWaWRlb0NhcGFiaWxp
dGllcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkNFNTY0NEUxMzdBMzRENjAwN0QyOTM0IC8qIENv
bnNvbGVUeXBlcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTgxODcyMUMwOTc3RDNDMDAwNTgyNkQ5
IC8qIENvbnRhaW5lck5vZGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUUxQTE0NzA4MTExMDJCMTUw
MEVFQzBGMyAvKiBDb250YWluZXJOb2RlQWxnb3JpdGhtcy5oIGluIEhlYWRlcnMgKi8sCkBAIC0y
MTczNCw2ICsyMTg1Nyw3IEBACiAJCQkJQTU3MzJCMEIxMzZBMTYxRDAwNUM4RDdDIC8qIERhdGVD
b21wb25lbnRzLmggaW4gSGVhZGVycyAqLywKIAkJCQlGNTVCM0RCNjEyNTFGMTJEMDAzRUYyNjkg
LyogRGF0ZUlucHV0VHlwZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDUzRUI2MzcxNTlDNTcwNDAw
MDAxQkI3IC8qIERhdGVUaW1lRm9ybWF0LmggaW4gSGVhZGVycyAqLywKKwkJCQkwNzA1ODUwMzE3
RkExMEQwMDA1RjJCQ0IgLyogSlNBbGxWaWRlb0NhcGFiaWxpdGllcy5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJRjU1QjNEQjgxMjUxRjEyRDAwM0VGMjY5IC8qIERhdGVUaW1lSW5wdXRUeXBlLmggaW4g
SGVhZGVycyAqLywKIAkJCQlGNTVCM0RCQTEyNTFGMTJEMDAzRUYyNjkgLyogRGF0ZVRpbWVMb2Nh
bElucHV0VHlwZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDVGRUE1RDAxNTZEREU4QzAwNjU0MTAx
IC8qIERlY2ltYWwuaCBpbiBIZWFkZXJzICovLApAQCAtMjE3NDcsNiArMjE4NzEsNyBAQAogCQkJ
CUZEMzE2MDJFMTJCMDI2NzYwMEMxQTM1OSAvKiBEZWxheU5vZGUuaCBpbiBIZWFkZXJzICovLAog
CQkJCUZEMzE2MDMxMTJCMDI2NzYwMEMxQTM1OSAvKiBEZWxheVByb2Nlc3Nvci5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJMUM0QzhGNjYwQUQ4NjU1RDAwOTQ3NUNFIC8qIERlbGV0ZUJ1dHRvbi5oIGlu
IEhlYWRlcnMgKi8sCisJCQkJMDcwNTg1MzIxN0ZERTZEOTAwNUYyQkNCIC8qIEpTTWVkaWFUcmFj
a0NvbnN0cmFpbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTFDNEM4RjAyMEFEODVEODcwMDk0NzVD
RSAvKiBEZWxldGVCdXR0b25Db250cm9sbGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk5MzMwOURE
RjA5OUU2NDkyMDA1NkU1ODEgLyogRGVsZXRlRnJvbVRleHROb2RlQ29tbWFuZC5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJMDdDNTlCNjQxN0Y0RDFDNDAwMEZCQ0JCIC8qIE1vY2tNZWRpYVN0cmVhbUNl
bnRlci5oIGluIEhlYWRlcnMgKi8sCkBAIC0yMTc4OCw2ICsyMTkxMyw3IEBACiAJCQkJQ0UwNTdG
QTYxMjIwNzMxMTAwQTQ3NkQ1IC8qIERvY3VtZW50TWFya2VyQ29udHJvbGxlci5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJMTQ5NDdGRkUxMkY4MENEMjAwQTBGNjMxIC8qIERvY3VtZW50T3JkZXJlZE1h
cC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkNDRkJBRTgwQjUxNTJFRDAwMDFGMUQ3IC8qIERvY3Vt
ZW50UGFyc2VyLmggaW4gSGVhZGVycyAqLywKKwkJCQkwNzA1ODUyOTE3RkRFMDJDMDA1RjJCQ0Ig
LyogTWVkaWFUcmFja0NvbnN0cmFpbnRTZXQuaCBpbiBIZWFkZXJzICovLAogCQkJCTRBNEY0OEFB
MTZCMERGQzAwMEVEQkIyOSAvKiBEb2N1bWVudFJ1bGVTZXRzLmggaW4gSGVhZGVycyAqLywKIAkJ
CQlBRDZFNzFBRDE2Njg4OTlEMDAzMjBDMTMgLyogRG9jdW1lbnRTaGFyZWRPYmplY3RQb29sLmgg
aW4gSGVhZGVycyAqLywKIAkJCQlFNDdFMjc2NTE2MDM2RUQyMDBFRTJBRkIgLyogRG9jdW1lbnRT
dHlsZVNoZWV0Q29sbGVjdGlvbi5oIGluIEhlYWRlcnMgKi8sCkBAIC0yMTk0Miw2ICsyMjA2OCw3
IEBACiAJCQkJODU5OTJFQkEwQUE1MDY5NTAwQUMwNzg1IC8qIERPTUhUTUxIZWFkRWxlbWVudC5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJODVFNzExQUQwQUM1RDUzNTAwNTMyNzBGIC8qIERPTUhUTUxI
ZWFkRWxlbWVudEludGVybmFsLmggaW4gSGVhZGVycyAqLywKIAkJCQk4NTE4M0I0NDBBQTY5MjYx
MDBGMTlGQTMgLyogRE9NSFRNTEhlYWRpbmdFbGVtZW50LmggaW4gSGVhZGVycyAqLywKKwkJCQkw
NzA1ODUzNjE3RkRFNkQ5MDA1RjJCQ0IgLyogSlNNZWRpYVRyYWNrQ29uc3RyYWludFNldC5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJODVFNzExQUUwQUM1RDUzNTAwNTMyNzBGIC8qIERPTUhUTUxIZWFk
aW5nRWxlbWVudEludGVybmFsLmggaW4gSGVhZGVycyAqLywKIAkJCQk4NUVDQkVGMTBBQTc2MjY5
MDA1NDRGMEIgLyogRE9NSFRNTEhSRWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODVFNzEx
QUYwQUM1RDUzNTAwNTMyNzBGIC8qIERPTUhUTUxIUkVsZW1lbnRJbnRlcm5hbC5oIGluIEhlYWRl
cnMgKi8sCkBAIC0yMjA1NCw2ICsyMjE4MSw3IEBACiAJCQkJODVDQTk2RUEwQTk2MjRFOTAwNjkw
Q0NGIC8qIERPTU5vdGF0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQk4NUU3MTFENDBBQzVENTM1
MDA1MzI3MEYgLyogRE9NTm90YXRpb25JbnRlcm5hbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODU2
QzhBRTQwQTkxMjY0OTAwNUM2ODdCIC8qIERPTU9iamVjdC5oIGluIEhlYWRlcnMgKi8sCisJCQkJ
MDcwNTg1MTMxN0ZBNzEwNzAwNUYyQkNCIC8qIEpTTWVkaWFTdHJlYW1DYXBhYmlsaXRpZXMuaCBp
biBIZWFkZXJzICovLAogCQkJCUJDNTNEQTYwMTE0MzE0MUEwMDBEODE3RSAvKiBET01PYmplY3RI
YXNoVGFibGVNYXAuaCBpbiBIZWFkZXJzICovLAogCQkJCTg1QzdGNUQwMEFBRkI4RDkwMDQwMTRE
RCAvKiBET01PdmVyZmxvd0V2ZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQk4NTk4OURDRjBBQ0M4
QkJEMDBBMEJDNTEgLyogRE9NT3ZlcmZsb3dFdmVudEludGVybmFsLmggaW4gSGVhZGVycyAqLywK
QEAgLTIyNTAyLDYgKzIyNjMwLDcgQEAKIAkJCQlCQ0NENzREQzBBNEM4RDM1MDA1RkRBNkQgLyog
SFRNTFZpZXdTb3VyY2VEb2N1bWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTc3QjM4N0ExMjI4
ODNFOTAwQjgxRkY4IC8qIEhUTUxWaWV3U291cmNlUGFyc2VyLmggaW4gSGVhZGVycyAqLywKIAkJ
CQk1MTRDNzY3MTBDRTkyM0ExMDA3RUYzQ0QgLyogSFRUUEhlYWRlck1hcC5oIGluIEhlYWRlcnMg
Ki8sCisJCQkJMDczQUI0QjgxN0Y5MkVDRjAwNkUwRDZGIC8qIEpTQ2FwYWJpbGl0eVJhbmdlLmgg
aW4gSGVhZGVycyAqLywKIAkJCQk1MTRDNzY3MzBDRTkyM0ExMDA3RUYzQ0QgLyogSFRUUFBhcnNl
cnMuaCBpbiBIZWFkZXJzICovLAogCQkJCTM3NUNEMjMyMTE5RDQzQzgwMEEyQTg1OSAvKiBIeXBo
ZW5hdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjI3NTM1NkUwQjA1MzgxNDAwMkNFNjRGIC8q
IEljb24uaCBpbiBIZWFkZXJzICovLApAQCAtMjI2MDcsNiArMjI3MzYsNyBAQAogCQkJCTdBMjQ1
ODdDMTAyMUVBRjQwMDBBMDBBQSAvKiBJbnNwZWN0b3JET01BZ2VudC5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJRjNENEM0NzkxMkUwNzY2MzAwM0RBMTUwIC8qIEluc3BlY3RvckRPTURlYnVnZ2VyQWdl
bnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTdBNzRFQ0JCMTAxODM5QTYwMEJGOTM5RSAvKiBJbnNw
ZWN0b3JET01TdG9yYWdlQWdlbnQuaCBpbiBIZWFkZXJzICovLAorCQkJCTA3MDU4NTM0MTdGREU2
RDkwMDVGMkJDQiAvKiBKU01lZGlhVHJhY2tDb25zdHJhaW50cy5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJNTc4REEyMEUxNTIwRUI4QzAwNjE0MUMxIC8qIEluc3BlY3RvckZyb250ZW5kLmggaW4gSGVh
ZGVycyAqLywKIAkJCQkyMjc3Nzc2MDEzNDVERUE5MDA4RUE0NTUgLyogSW5zcGVjdG9yRnJvbnRl
bmRDaGFubmVsLmggaW4gSGVhZGVycyAqLywKIAkJCQlGMzQ0QzcxNDExMjVCODJDMDBGMjZFRUUg
LyogSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQuaCBpbiBIZWFkZXJzICovLApAQCAtMjMwNzEsNiAr
MjMyMDEsNyBAQAogCQkJCUIyRkEzRERCMEFCNzVBNkYwMDBFNUFDNCAvKiBKU1NWR1BhdGhTZWdM
aXN0LmggaW4gSGVhZGVycyAqLywKIAkJCQlCMkZBM0RERDBBQjc1QTZGMDAwRTVBQzQgLyogSlNT
VkdQYXRoU2VnTW92ZXRvQWJzLmggaW4gSGVhZGVycyAqLywKIAkJCQlCMkZBM0RERjBBQjc1QTZG
MDAwRTVBQzQgLyogSlNTVkdQYXRoU2VnTW92ZXRvUmVsLmggaW4gSGVhZGVycyAqLywKKwkJCQkw
NzA1ODUyMTE3RkRDMTQwMDA1RjJCQ0IgLyogTWVkaWFUcmFja0NvbnN0cmFpbnQuaCBpbiBIZWFk
ZXJzICovLAogCQkJCUIyRkEzREUxMEFCNzVBNkYwMDBFNUFDNCAvKiBKU1NWR1BhdHRlcm5FbGVt
ZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQk4NTQyQTc5NTBBRTVDOTQxMDBERjU4REYgLyogSlNT
VkdQb2ludC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjJGQTNERTMwQUI3NUE2RjAwMEU1QUM0IC8q
IEpTU1ZHUG9pbnRMaXN0LmggaW4gSGVhZGVycyAqLywKQEAgLTIzNTU3LDYgKzIzNjg4LDcgQEAK
IAkJCQk0MzkwNDZFMjEyREEyNUU4MDBBRjgwQTIgLyogUmVuZGVyTWF0aE1MUm9vdC5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJNDM5MDQ2RTQxMkRBMjVFODAwQUY4MEEyIC8qIFJlbmRlck1hdGhNTFJv
dy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDM5MDQ2RTYxMkRBMjVFODAwQUY4MEEyIC8qIFJlbmRl
ck1hdGhNTFNxdWFyZVJvb3QuaCBpbiBIZWFkZXJzICovLAorCQkJCTA3ODMyMjg1MTgwMTNFRDgw
MDk5OUUwQyAvKiBNZWRpYVN0cmVhbUF1ZGlvU291cmNlLmggaW4gSGVhZGVycyAqLywKIAkJCQk0
MzkwNDZFODEyREEyNUU4MDBBRjgwQTIgLyogUmVuZGVyTWF0aE1MU2NyaXB0cy5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJNDM5MDQ2RUExMkRBMjVFODAwQUY4MEEyIC8qIFJlbmRlck1hdGhNTFVuZGVy
T3Zlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTRDMjc5NTkwQ0Y5NzQxOTAwRTk3Qjk4IC8qIFJl
bmRlck1lZGlhLmggaW4gSGVhZGVycyAqLywKQEAgLTIzNTc3LDYgKzIzNzA5LDcgQEAKIAkJCQlB
ODcxREZFMzBBMTUzNzZCMDBCMTJBNjggLyogUmVuZGVyUmVwbGFjZWQuaCBpbiBIZWFkZXJzICov
LAogCQkJCUJDQTg0NkQ3MERDNjdBMzUwMDI2QzMwOSAvKiBSZW5kZXJSZXBsaWNhLmggaW4gSGVh
ZGVycyAqLywKIAkJCQkxNDc5RkFFRTEwOUFFMzc1MDBERUQ2NTUgLyogUmVuZGVyUnVieS5oIGlu
IEhlYWRlcnMgKi8sCisJCQkJMDcwNTg1MDgxN0ZBNDY4OTAwNUYyQkNCIC8qIEFsbEF1ZGlvQ2Fw
YWJpbGl0aWVzLmggaW4gSGVhZGVycyAqLywKIAkJCQkxNDc5RkFGMDEwOUFFMzc1MDBERUQ2NTUg
LyogUmVuZGVyUnVieUJhc2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTE0NzlGQUYyMTA5QUUzNzUw
MERFRDY1NSAvKiBSZW5kZXJSdWJ5UnVuLmggaW4gSGVhZGVycyAqLywKIAkJCQkxNDc5RkFGNDEw
OUFFMzc1MDBERUQ2NTUgLyogUmVuZGVyUnVieVRleHQuaCBpbiBIZWFkZXJzICovLApAQCAtMjM2
NTksNiArMjM3OTIsNyBAQAogCQkJCTk3M0UzMjU3MTA4ODNCN0MwMDVCQzQ5MyAvKiBSZXNvdXJj
ZUxvYWROb3RpZmllci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTQyOTVGQTQxMkIwNjE0RTAwRDFB
Q0UwIC8qIFJlc291cmNlTG9hZFByaW9yaXR5LmggaW4gSGVhZGVycyAqLywKIAkJCQlEMENFNThG
OTEyNUU0Q0MyMDBGM0YxOTkgLyogUmVzb3VyY2VMb2FkU2NoZWR1bGVyLmggaW4gSGVhZGVycyAq
LywKKwkJCQkwN0M1OUI3NjE3RjdEMERCMDAwRkJDQkIgLyogQ2FwYWJpbGl0eVJhbmdlLmggaW4g
SGVhZGVycyAqLywKIAkJCQk4QTgxQkY4NTExRENGRDkwMDBEQTJCOTggLyogUmVzb3VyY2VMb2Fk
VGltaW5nLmggaW4gSGVhZGVycyAqLywKIAkJCQk3RUU2ODQ2RDEyRDI2RTM4MDBFNzk0MTUgLyog
UmVzb3VyY2VSZXF1ZXN0LmggaW4gSGVhZGVycyAqLywKIAkJCQk1MTRDNzY3RDBDRTkyM0ExMDA3
RUYzQ0QgLyogUmVzb3VyY2VSZXF1ZXN0QmFzZS5oIGluIEhlYWRlcnMgKi8sCkBAIC0yMzk3MCw2
ICsyNDEwNCw3IEBACiAJCQkJMDc4RTA5MzgxN0QxNkIyQzAwNDIwQUExIC8qIE1lZGlhU3RyZWFt
U291cmNlLmggaW4gSGVhZGVycyAqLywKIAkJCQlCMjIyNzlCMTBEMDBCRjIyMDA3MUI3ODIgLyog
U1ZHRGVzY0VsZW1lbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUI1QjdBMTcxMTdDMTBBQzAwMEU0
QUEwQSAvKiBFbGVtZW50RGF0YS5oIGluIEhlYWRlcnMgKi8sCisJCQkJMDcwNTg1MEIxN0ZBNDgy
NzAwNUYyQkNCIC8qIE1lZGlhU3RyZWFtQ2FwYWJpbGl0aWVzLmggaW4gSGVhZGVycyAqLywKIAkJ
CQlCMjIyNzlCNDBEMDBCRjIyMDA3MUI3ODIgLyogU1ZHRG9jdW1lbnQuaCBpbiBIZWFkZXJzICov
LAogCQkJCUIyOEM2QTI4MEQwMEM0NDgwMDMzNEFBNCAvKiBTVkdEb2N1bWVudEV4dGVuc2lvbnMu
aCBpbiBIZWFkZXJzICovLAogCQkJCUIyMjI3OUI3MEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdFbGVt
ZW50LmggaW4gSGVhZGVycyAqLywKQEAgLTI0MDQ0LDYgKzI0MTc5LDcgQEAKIAkJCQk3MTM0NDk2
RTE0Njk0MUIzMDA3MjAzMTIgLyogU1ZHTGVuZ3RoQ29udGV4dC5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJQjIyMjdBMzYwRDAwQkYyMjAwNzFCNzgyIC8qIFNWR0xlbmd0aExpc3QuaCBpbiBIZWFkZXJz
ICovLAogCQkJCUIyMjI3QTM5MEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdMaW5lYXJHcmFkaWVudEVs
ZW1lbnQuaCBpbiBIZWFkZXJzICovLAorCQkJCTA3QzU5QjY5MTdGNzg0QkEwMDBGQkNCQiAvKiBN
ZWRpYVNvdXJjZVN0YXRlcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjIyMjdBM0MwRDAwQkYyMjAw
NzFCNzgyIC8qIFNWR0xpbmVFbGVtZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQkwODEwNzY0NDEy
ODI4NTU2MDA3QzYzQkEgLyogU1ZHTGlzdFByb3BlcnR5LmggaW4gSGVhZGVycyAqLywKIAkJCQkw
ODhBMEUwOTEyNkVGMURCMDA5NzhGN0EgLyogU1ZHTGlzdFByb3BlcnR5VGVhck9mZi5oIGluIEhl
YWRlcnMgKi8sCkBAIC0yNDIzMyw2ICsyNDM2OSw3IEBACiAJCQkJRTQ0NjEzQjAwQ0Q2MzMxMDAw
RkFEQTc1IC8qIFRpbWVSYW5nZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTQ5RTkxMkFFMEVGQUM5
MDYwMDlEMENBRiAvKiBUaW1pbmdGdW5jdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMDcwMzM0
RDcxNDU5RkZENTAwOEQ4RDQ1IC8qIFRyYWNrQmFzZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJMDcw
NTg0RkQxN0Y5RDZERjAwNUYyQkNCIC8qIE1lZGlhU3RyZWFtU291cmNlQ2FwYWJpbGl0aWVzLmgg
aW4gSGVhZGVycyAqLywKIAkJCQlCRTg4RTBDMjE3MTVDRTI2MDA2NThEOTggLyogVHJhY2tMaXN0
QmFzZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQ0QzQTQ5NUYxN0E5RDAxQjAwMjc0RTQyIC8qIE1l
ZGlhU291cmNlLmggaW4gSGVhZGVycyAqLywKIAkJCQk0OUU5MTFDNDBFRjg2RDQ3MDA5RDBDQUYg
LyogVHJhbnNmb3JtYXRpb25NYXRyaXguaCBpbiBIZWFkZXJzICovLApAQCAtMjQyODUsNiArMjQ0
MjIsNyBAQAogCQkJCUJFODhFMERGMTcxNUQyQTIwMDY1OEQ5OCAvKiBWaWRlb1RyYWNrLmggaW4g
SGVhZGVycyAqLywKIAkJCQlCRTg4RTBFMjE3MTVEMkEyMDA2NThEOTggLyogVmlkZW9UcmFja0xp
c3QuaCBpbiBIZWFkZXJzICovLAogCQkJCUJFRjI5RUVDMTcxNUREMDkwMEM0QjRDOSAvKiBWaWRl
b1RyYWNrUHJpdmF0ZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJMDcwNTg1MUIxN0ZCNDRCNDAwNUYy
QkNCIC8qIEpTQWxsQXVkaW9DYXBhYmlsaXRpZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCUNFRjQx
OENGMTE3OTY3OEMwMDlEMTEyQyAvKiBWaWV3cG9ydEFyZ3VtZW50cy5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJM0ZGRkY5QUUxNTlEOUIwNjAwMjBCQkQ1IC8qIFZpZXdwb3J0U3R5bGVSZXNvbHZlci5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJOTMzMDlFMjAwOTlFNjQ5MjAwNTZFNTgxIC8qIFZpc2libGVQ
b3NpdGlvbi5oIGluIEhlYWRlcnMgKi8sCkBAIC0yNDQ3NCw2ICsyNDYxMiw3IEBACiAJCQkJODND
MUQ0MjgxNzhENUFCNDAwMTQxRTY4IC8qIFNWR1BhdGhTZWdDdXJ2ZXRvQ3ViaWNSZWwuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTgzQzFENDI5MTc4RDVBQjQwMDE0MUU2OCAvKiBTVkdQYXRoU2VnQ3Vy
dmV0b0N1YmljU21vb3RoQWJzLmggaW4gSGVhZGVycyAqLywKIAkJCQk4M0MxRDQyQTE3OEQ1QUI0
MDAxNDFFNjggLyogU1ZHUGF0aFNlZ0N1cnZldG9DdWJpY1Ntb290aFJlbC5oIGluIEhlYWRlcnMg
Ki8sCisJCQkJMDdDNTlCNzIxN0Y3OUM3QzAwMEZCQ0JCIC8qIEpTTWVkaWFTb3VyY2VTdGF0ZXMu
aCBpbiBIZWFkZXJzICovLAogCQkJCTgzQzFENDJCMTc4RDVBQjQwMDE0MUU2OCAvKiBTVkdQYXRo
U2VnQ3VydmV0b1F1YWRyYXRpY0Ficy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODNDMUQ0MkMxNzhE
NUFCNTAwMTQxRTY4IC8qIFNWR1BhdGhTZWdDdXJ2ZXRvUXVhZHJhdGljUmVsLmggaW4gSGVhZGVy
cyAqLywKIAkJCQk4M0MxRDQyRDE3OEQ1QUI1MDAxNDFFNjggLyogU1ZHUGF0aFNlZ0N1cnZldG9R
dWFkcmF0aWNTbW9vdGhBYnMuaCBpbiBIZWFkZXJzICovLApAQCAtMjQ5NTksNiArMjUwOTgsNyBA
QAogCQkJCUZEMzE2MDI0MTJCMDI2NzYwMEMxQTM1OSAvKiBCaXF1YWREU1BLZXJuZWwuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJRkRDNTRGMDQxMzk5QjBEQTAwOEQ5MTE3IC8qIEJpcXVhZEZpbHRl
ck5vZGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRkQzMTYwMjYxMkIwMjY3NjAwQzFBMzU5IC8q
IEJpcXVhZFByb2Nlc3Nvci5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkwNzA1ODRGRjE3RjlGMDVF
MDA1RjJCQ0IgLyogQ2FwYWJpbGl0eVJhbmdlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE4OTk0
MzI5MEI0MjMzODgwMEQ3QzgwMiAvKiBCaXRtYXBJbWFnZS5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQkzNzdBM0E5MDE1RUZDRTlCMDA1OUY1QzcgLyogQml0bWFwSW1hZ2VDRy5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQk5NzZENkM3ODEyMkI4QTNEMDAxRkQxRjcgLyogQmxvYi5jcHAgaW4gU291cmNl
cyAqLywKQEAgLTI1MjU5LDYgKzI1Mzk5LDcgQEAKIAkJCQk4NUNBOTc1RDBBOTYyRTU0MDA2OTBD
Q0YgLyogRE9NRG9jdW1lbnRUeXBlLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJODUxOERDRUEwQTlD
QzgwRDAwOTFCN0E2IC8qIERPTURPTUltcGxlbWVudGF0aW9uLm1tIGluIFNvdXJjZXMgKi8sCiAJ
CQkJNTJDQ0E5RTkxNUUzRjY0QzAwNTNDNzdGIC8qIERPTURPTU5hbWVkRmxvd0NvbGxlY3Rpb24u
bW0gaW4gU291cmNlcyAqLywKKwkJCQkwNzgzMjI4NDE4MDEzRUQ4MDA5OTlFMEMgLyogTWVkaWFT
dHJlYW1BdWRpb1NvdXJjZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkyRDlBMjQ3MzE1QjlDMkQx
MDBEMzQ1MjcgLyogRE9NRE9NU2VjdXJpdHlQb2xpY3kubW0gaW4gU291cmNlcyAqLywKIAkJCQk3
Njk0NTY1QzEyMTREQjYzMDAwN0NCQUUgLyogRE9NRE9NVG9rZW5MaXN0Lm1tIGluIFNvdXJjZXMg
Ki8sCiAJCQkJN0FBQkEyNTkxNEJDNjEzMzAwQUE5QTExIC8qIERPTUVkaXRvci5jcHAgaW4gU291
cmNlcyAqLywKQEAgLTI1Mjc5LDYgKzI1NDIwLDcgQEAKIAkJCQk4NTlBOUM0ODBBQTVFM0JEMDBC
Njk0QjIgLyogRE9NSFRNTEJhc2VFbGVtZW50Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMDc4RTA5
MDQxN0QxNENFRTAwNDIwQUExIC8qIE5hdmlnYXRvck1lZGlhU3RyZWFtLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCTg1RUNCRUVFMEFBNzYyNjkwMDU0NEYwQiAvKiBET01IVE1MQmFzZUZvbnRFbGVt
ZW50Lm1tIGluIFNvdXJjZXMgKi8sCisJCQkJMDdDNTlCNjgxN0Y3ODRCQTAwMEZCQ0JCIC8qIE1l
ZGlhU291cmNlU3RhdGVzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTg1OUE5QzRBMEFBNUUzQkQw
MEI2OTRCMiAvKiBET01IVE1MQm9keUVsZW1lbnQubW0gaW4gU291cmNlcyAqLywKIAkJCQk4NTE4
M0I0MzBBQTY5MjYxMDBGMTlGQTMgLyogRE9NSFRNTEJSRWxlbWVudC5tbSBpbiBTb3VyY2VzICov
LAogCQkJCTg1QkE0Q0RFMEFBNjg2MUIwMDg4MDUyRCAvKiBET01IVE1MQnV0dG9uRWxlbWVudC5t
bSBpbiBTb3VyY2VzICovLApAQCAtMjUyODYsNiArMjU0MjgsNyBAQAogCQkJCTg1REYyRjhGMEFB
M0M4ODEwMEFENjRDNSAvKiBET01IVE1MQ29sbGVjdGlvbi5tbSBpbiBTb3VyY2VzICovLAogCQkJ
CTA3OEUwOTAwMTdEMTRDRUUwMDQyMEFBMSAvKiBNZWRpYVN0cmVhbUV2ZW50LmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCUY1QzA0MUU0MEZGQ0E5NkQwMDgzOUQ0QSAvKiBET01IVE1MRGF0YUxpc3RF
bGVtZW50Lm1tIGluIFNvdXJjZXMgKi8sCisJCQkJMDcwNTg1MjMxN0ZEQzE0MDAwNUYyQkNCIC8q
IE1lZGlhVHJhY2tDb25zdHJhaW50cy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlEMzU5RDc5MjEy
OUNBM0MwMDAwNkU1RDIgLyogRE9NSFRNTERldGFpbHNFbGVtZW50Lm1tIGluIFNvdXJjZXMgKi8s
CiAJCQkJODVCQTREMEMwQUE2ODg2ODAwODgwNTJEIC8qIERPTUhUTUxEaXJlY3RvcnlFbGVtZW50
Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJODVCQTREMEUwQUE2ODg2ODAwODgwNTJEIC8qIERPTUhU
TUxEaXZFbGVtZW50Lm1tIGluIFNvdXJjZXMgKi8sCkBAIC0yNTczOCw2ICsyNTg4MSw3IEBACiAJ
CQkJQjI3NTM1OEUwQjA1M0E2NjAwMkNFNjRGIC8qIEljb25NYWMubW0gaW4gU291cmNlcyAqLywK
IAkJCQk1MUUxRUNDMDBDOTFDOTA0MDBEQzI1NUIgLyogSWNvblJlY29yZC5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQk0NTA5OUM0MTEzNzBBNzgwMDA1OEQ1MTMgLyogSWNvblVSTC5jcHAgaW4gU291
cmNlcyAqLywKKwkJCQkwNzA1ODUxNTE3RkIwRUVBMDA1RjJCQ0IgLyogTWVkaWFTdHJlYW1DYXBh
YmlsaXRpZXMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQzU4NUE2NjIxMUQ0RkFDNTAwNEMzRTRC
IC8qIElEQkJpbmRpbmdVdGlsaXRpZXMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJOTcxMkE1QzUx
NTAwNEVEQTAwNDhBRjEwIC8qIElEQkRhdGFiYXNlQ2FsbGJhY2tzSW1wbC5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQk5NzEyQTVDOTE1MDA0RURBMDA0OEFGMTAgLyogSURCRGF0YWJhc2VFeGNlcHRp
b24uY3BwIGluIFNvdXJjZXMgKi8sCkBAIC0yNTc0NSw2ICsyNTg4OSw3IEBACiAJCQkJOTcxMkE1
RUYxNTAwNEVEQTAwNDhBRjEwIC8qIElEQlBlbmRpbmdUcmFuc2FjdGlvbk1vbml0b3IuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJOTcxMkE1RkUxNTAwNEVEQTAwNDhBRjEwIC8qIElEQlZlcnNpb25D
aGFuZ2VFdmVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxQTcxRDU3QjBGMzM4MTkwMDBGOUNF
NEUgLyogSWRlbnRpZmllclJlcC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkwNzA1ODUzMTE3RkRF
NkQ5MDA1RjJCQ0IgLyogSlNNZWRpYVRyYWNrQ29uc3RyYWludC5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQk1OTEzQTI0MTEzRDQ5RUJBMDBGNUIwNUMgLyogSWRlbnRpZmllcnNGYWN0b3J5LmNwcCBp
biBTb3VyY2VzICovLAogCQkJCUMzQ0YxN0E0MTVCMDA2M0YwMDI3NkQzOSAvKiBJZFRhcmdldE9i
c2VydmVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUMzQ0YxN0E2MTVCMDA2M0YwMDI3NkQzOSAv
KiBJZFRhcmdldE9ic2VydmVyUmVnaXN0cnkuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC0yNTkxNCw2
ICsyNjA1OSw3IEBACiAJCQkJNTFFQzkyNjUwQ0U5MERENDAwRjkwMzA4IC8qIEpTQ3VzdG9tU1FM
U3RhdGVtZW50RXJyb3JDYWxsYmFjay5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlFMTBCOTNDMzBC
NzNDMjkxMDAzRUQ4OTAgLyogSlNDdXN0b21YUGF0aE5TUmVzb2x2ZXIuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJMUFFODJGOEYwQ0FBRkE5RDAwMjIzN0FFIC8qIEpTRGF0YWJhc2UuY3BwIGluIFNv
dXJjZXMgKi8sCisJCQkJMDdDNTlCNkUxN0Y3OTRGNjAwMEZCQ0JCIC8qIEpTTWVkaWFTb3VyY2VT
dGF0ZXNDdXN0b20uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQjU5REQ2OUExMTkwMjlFNTAwN0U5
Njg0IC8qIEpTRGF0YWJhc2VDYWxsYmFjay5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCNThDRUI2
QTExOTEzNjA3MDAyQTY3OTAgLyogSlNEYXRhYmFzZVN5bmMuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJNDE2MkE0NTcxMDExNDY0NzAwREZGM0VEIC8qIEpTRGVkaWNhdGVkV29ya2VyR2xvYmFsU2Nv
cGUuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC0yNjA0Miw2ICsyNjE4OCw3IEBACiAJCQkJMUFFMkFB
MkUwQTFDREFCNDAwQjQyQjI1IC8qIEpTSFRNTEhlYWRpbmdFbGVtZW50LmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCTFBRTJBQTMwMEExQ0RBQjQwMEI0MkIyNSAvKiBKU0hUTUxIUkVsZW1lbnQuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJMUE4NUIxOEYwQTFCMThBMjAwRDhDODdDIC8qIEpTSFRNTEh0
bWxFbGVtZW50LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTA3MDU4NTM4MTdGRTA0NEYwMDVGMkJD
QiAvKiBNZWRpYVRyYWNrQ29uc3RyYWludFNldC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCQzQ5
MThDODBCRkVBMDUwMDA5RDYzMTYgLyogSlNIVE1MSUZyYW1lRWxlbWVudC5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQkxQUUyQUE5NzBBMUNERDJEMDBCNDJCMjUgLyogSlNIVE1MSW1hZ2VFbGVtZW50
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE4MEU3RTk4MEExQTgzRTMwMDdGQjhDNSAvKiBKU0hU
TUxJbnB1dEVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC0yNjE1OCw2ICsyNjMwNSw3IEBA
CiAJCQkJN0U0NkY2RkExNjI3QTJDQTAwMDYyMjIzIC8qIEpTT0VTRWxlbWVudEluZGV4VWludC5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQk5MDAxNzg4MDEyRTAzNzA3MDA2NDg0NjIgLyogSlNPRVNT
dGFuZGFyZERlcml2YXRpdmVzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTZFQkYwRTc2MTJBOTg2
ODgwMERCMTcwOSAvKiBKU09FU1RleHR1cmVGbG9hdC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkw
NzA1ODUzQTE3RkUwNzcwMDA1RjJCQ0IgLyogTWVkaWFUcmFja0NvbnN0cmFpbnQuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJQTMxQzRFNTIxNkUwMkIwODAwMkY3OTU3IC8qIEpTT0VTVGV4dHVyZUhh
bGZGbG9hdC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk3N0ExN0FBNjEyRjI4QjJBMDA0RTAyRjYg
LyogSlNPRVNWZXJ0ZXhBcnJheU9iamVjdC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlGREY2QkFG
ODEzNEE0Qzk4MDA4MjI5MjAgLyogSlNPZmZsaW5lQXVkaW9Db21wbGV0aW9uRXZlbnQuY3BwIGlu
IFNvdXJjZXMgKi8sCkBAIC0yNjUwMCw2ICsyNjY0OCw3IEBACiAJCQkJOTg1QkI5NkQxM0E5NDA1
ODAwN0EwQjY5IC8qIExpbmtSZWxBdHRyaWJ1dGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQkM3
RkE2MjAwRDFGMENCRDAwREIyMkE5IC8qIExpdmVOb2RlTGlzdC5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQkwNzhFMDkxMDE3RDE0Q0VFMDA0MjBBQTEgLyogUlRDU3RhdHNSZXNwb25zZS5jcHAgaW4g
U291cmNlcyAqLywKKwkJCQkwNzA1ODUwMjE3RkExMEQwMDA1RjJCQ0IgLyogSlNBbGxWaWRlb0Nh
cGFiaWxpdGllcy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk5NzU5RTkzRTE0RUYxQ0Y4MDAyNkEy
REQgLyogTG9hZGFibGVUZXh0VHJhY2suY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNjU2RDM3MzMw
QURCQTVERTAwQTQ1NTREIC8qIExvYWRlck5TVVJMRXh0cmFzLm1tIGluIFNvdXJjZXMgKi8sCiAJ
CQkJN0VFNjg0NjgxMkQyNkUzODAwRTc5NDE1IC8qIExvYWRlclJ1bkxvb3BDRi5jcHAgaW4gU291
cmNlcyAqLywKQEAgLTI2NTEyLDYgKzI2NjYxLDcgQEAKIAkJCQlCQzI1QjUyQTEzMUM2RDM5MDAx
ODBFMTAgLyogTG9jYWxpemVkU3RyaW5nc01hYy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCQ0Ux
QzQxQzBEOTgyOTgxMDAzQjAyRjIgLyogTG9jYXRpb24uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
MDc4RTA5MDgxN0QxNENFRTAwNDIwQUExIC8qIFJUQ0RUTUZUb25lQ2hhbmdlRXZlbnQuY3BwIGlu
IFNvdXJjZXMgKi8sCisJCQkJMDcwNTg1MUExN0ZCNDRCNDAwNUYyQkNCIC8qIEpTQWxsQXVkaW9D
YXBhYmlsaXRpZXMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTgyMzlFMDAwOUIzQ0Y4QTAwQjYw
NjQxIC8qIExvZ2dpbmcuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMTQwMjY0NUUwQUZEQzE5QjAw
NTkxOUUyIC8qIExvZ2dpbmdNYWMubW0gaW4gU291cmNlcyAqLywKIAkJCQkxQThGNkJDNTBEQjU1
Q0RDMDAxREI3OTQgLyogTWFuaWZlc3RQYXJzZXIuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC0yNjU3
OCw2ICsyNjcyOCw3IEBACiAJCQkJRDZFMjc2QUYxNDYzNzQ1NTAwMUQyODBBIC8qIE11dGF0aW9u
T2JzZXJ2ZXJSZWdpc3RyYXRpb24uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQzZGMDhGQkMxNDMw
RkU4RjAwNjg1ODQ5IC8qIE11dGF0aW9uUmVjb3JkLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTUy
QjZDOUM1MTVFM0Y0REYwMDY5MEIwNSAvKiBOYW1lZEZsb3dDb2xsZWN0aW9uLmNwcCBpbiBTb3Vy
Y2VzICovLAorCQkJCTA3MDU4NTMzMTdGREU2RDkwMDVGMkJDQiAvKiBKU01lZGlhVHJhY2tDb25z
dHJhaW50cy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCQ0YzNEEzNzExQTIzMUNEMDBDNzE4MDQg
LyogTmFtZWROb2RlTWFwLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE4MTg3MjI0MDk3N0QzQzAw
MDU4MjZEOSAvKiBOYW1lTm9kZUxpc3QuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRTEwQjlCNkQw
Qjc0NzU5OTAwM0VEODkwIC8qIE5hdGl2ZVhQYXRoTlNSZXNvbHZlci5jcHAgaW4gU291cmNlcyAq
LywKQEAgLTI2ODM4LDYgKzI2OTg5LDcgQEAKIAkJCQk5MzRGNzEzRTBENUE2RjI4MDAwMThENjkg
LyogUmVzb3VyY2VFcnJvckJhc2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJN0VFNjg0NkIxMkQy
NkUzODAwRTc5NDE1IC8qIFJlc291cmNlRXJyb3JDRi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1
MTRDNzY1MDBDRTkyMzRFMDA3RUYzQ0QgLyogUmVzb3VyY2VFcnJvck1hYy5tbSBpbiBTb3VyY2Vz
ICovLAorCQkJCTA3MDU4NTEyMTdGQTcxMDcwMDVGMkJDQiAvKiBKU01lZGlhU3RyZWFtQ2FwYWJp
bGl0aWVzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTUxNEM3Njc4MENFOTIzQTEwMDdFRjNDRCAv
KiBSZXNvdXJjZUhhbmRsZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk3RUU2ODQ2QzEyRDI2RTM4
MDBFNzk0MTUgLyogUmVzb3VyY2VIYW5kbGVDRk5ldC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlF
MUJBMDAzMTE2RkI5MkFDMDBCQTdBMzUgLyogUmVzb3VyY2VIYW5kbGVDbGllbnQuY3BwIGluIFNv
dXJjZXMgKi8sCkBAIC0yNzE0MSw2ICsyNzI5Myw3IEBACiAJCQkJQjIyMjc5QzQwRDAwQkYyMjAw
NzFCNzgyIC8qIFNWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJQjIyMjc5QzcwRDAwQkYyMjAwNzFCNzgyIC8qIFNWR0ZFQmxlbmRFbGVtZW50LmNwcCBp
biBTb3VyY2VzICovLAogCQkJCUIyMjI3OUNBMEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdGRUNvbG9y
TWF0cml4RWxlbWVudC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkwNzA1ODUzNTE3RkRFNkQ5MDA1
RjJCQ0IgLyogSlNNZWRpYVRyYWNrQ29uc3RyYWludFNldC5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQlCMjIyNzlDRDBEMDBCRjIyMDA3MUI3ODIgLyogU1ZHRkVDb21wb25lbnRUcmFuc2ZlckVsZW1l
bnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQjIyMjc5RDAwRDAwQkYyMjAwNzFCNzgyIC8qIFNW
R0ZFQ29tcG9zaXRlRWxlbWVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxOTIxMzI3NDExQzBF
NkJCMDA0NTYyMzggLyogU1ZHRkVDb252b2x2ZU1hdHJpeEVsZW1lbnQuY3BwIGluIFNvdXJjZXMg
Ki8sCkBAIC0yNzIwMyw2ICsyNzM1Niw3IEBACiAJCQkJQjIyMjdBM0IwRDAwQkYyMjAwNzFCNzgy
IC8qIFNWR0xpbmVFbGVtZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUIyMjI3QTQwMEQwMEJG
MjIwMDcxQjc4MiAvKiBTVkdMb2NhdGFibGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQjIyMjdB
NDMwRDAwQkYyMjAwNzFCNzgyIC8qIFNWR01hcmtlckVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8s
CisJCQkJMDcwNTg1MTcxN0ZCNDBFOTAwNUYyQkNCIC8qIEpTTWVkaWFTdHJlYW1DYXBhYmlsaXRp
ZXNDdXN0b20uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQjIyMjdBNDYwRDAwQkYyMjAwNzFCNzgy
IC8qIFNWR01hc2tFbGVtZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUIyMjI3QTRBMEQwMEJG
MjIwMDcxQjc4MiAvKiBTVkdNZXRhZGF0YUVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
QjJBMUYyQjAwQ0VGMEFCRjAwNDQyRjZBIC8qIFNWR01pc3NpbmdHbHlwaEVsZW1lbnQuY3BwIGlu
IFNvdXJjZXMgKi8sCkBAIC0yNzI2Niw2ICsyNzQyMCw3IEBACiAJCQkJQjIyMjdBRjIwRDAwQkYy
MjAwNzFCNzgyIC8qIFNWR1ZpZXdTcGVjLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTg0ODUyMjhB
MTE5MDE3M0MwMDZFREM3RiAvKiBTVkdWS2VybkVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJQjIyMjdBRjUwRDAwQkYyMjAwNzFCNzgyIC8qIFNWR1pvb21BbmRQYW4uY3BwIGluIFNvdXJj
ZXMgKi8sCisJCQkJMDczQUI0QjcxN0Y5MkVDRjAwNkUwRDZGIC8qIEpTQ2FwYWJpbGl0eVJhbmdl
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUIyRTRFQzk3MEQwMEMyMkIwMDQzMjY0MyAvKiBTVkda
b29tRXZlbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRTE4MDgxMTIxNkZDRjQyRjAwQjgwRDA3
IC8qIFN5bmNocm9ub3VzTG9hZGVyQ2xpZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUUxODA4
MTE2MTZGQ0Y5Q0IwMEI4MEQwNyAvKiBTeW5jaHJvbm91c0xvYWRlckNsaWVudC5tbSBpbiBTb3Vy
Y2VzICovLApAQCAtMjc0NDYsNiArMjc2MDEsNyBAQAogCQkJCTk3QUFCRDFBMTRGQTA5RDUwMDc0
NTdBRSAvKiBXZWJTb2NrZXQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJOTdBQUJEMUQxNEZBMDlE
NTAwNzQ1N0FFIC8qIFdlYlNvY2tldENoYW5uZWwuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNEEz
OEJGNTAxNEZFMUMwOTAwNjEyNTEyIC8qIFdlYlNvY2tldERlZmxhdGVGcmFtZXIuY3BwIGluIFNv
dXJjZXMgKi8sCisJCQkJMDdDNTlCNzExN0Y3OUM3QzAwMEZCQ0JCIC8qIEpTTWVkaWFTb3VyY2VT
dGF0ZXMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJOTdBQUJEMjAxNEZBMDlENTAwNzQ1N0FFIC8q
IFdlYlNvY2tldERlZmxhdGVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTk3QUFCRDIyMTRGQTA5
RDUwMDc0NTdBRSAvKiBXZWJTb2NrZXRFeHRlbnNpb25EaXNwYXRjaGVyLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCTRBNUEyQURCMTYxRTdFMDAwMDU4ODlERCAvKiBXZWJTb2NrZXRFeHRlbnNpb25Q
YXJzZXIuY3BwIGluIFNvdXJjZXMgKi8sCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU01lZGlhU291cmNlU3RhdGVzQ3VzdG9tLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU01lZGlhU291cmNlU3RhdGVzQ3VzdG9tLmNwcAkocmV2aXNpb24g
MCkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTWVkaWFTb3VyY2VTdGF0ZXNDdXN0
b20uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsODggQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJ
UycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICog
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkK
KyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRl
ICJjb25maWcuaCIKKworI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCisKKyNpbmNsdWRlICJKU01l
ZGlhU291cmNlU3RhdGVzLmgiCisKKyNpbmNsdWRlICJNZWRpYVNvdXJjZVN0YXRlcy5oIgorCit1
c2luZyBuYW1lc3BhY2UgSlNDOworCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK0pTVmFsdWUgSlNN
ZWRpYVNvdXJjZVN0YXRlczo6d2lkdGgoRXhlY1N0YXRlKikgY29uc3QKK3sKKyAgICBpZiAoIWlt
cGwoKS0+aGFzVmlkZW9Tb3VyY2UoKSkKKyAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CisK
KyAgICByZXR1cm4ganNOdW1iZXIoaW1wbCgpLT53aWR0aCgpKTsKK30KKworSlNWYWx1ZSBKU01l
ZGlhU291cmNlU3RhdGVzOjpoZWlnaHQoRXhlY1N0YXRlKikgY29uc3QKK3sKKyAgICBpZiAoIWlt
cGwoKS0+aGFzVmlkZW9Tb3VyY2UoKSkKKyAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7Cisg
ICAgCisgICAgcmV0dXJuIGpzTnVtYmVyKGltcGwoKS0+aGVpZ2h0KCkpOworfQorCitKU1ZhbHVl
IEpTTWVkaWFTb3VyY2VTdGF0ZXM6OmZyYW1lUmF0ZShFeGVjU3RhdGUqKSBjb25zdAoreworICAg
IGlmICghaW1wbCgpLT5oYXNWaWRlb1NvdXJjZSgpKQorICAgICAgICByZXR1cm4ganNVbmRlZmlu
ZWQoKTsKKyAgICAKKyAgICByZXR1cm4ganNOdW1iZXIoaW1wbCgpLT5mcmFtZVJhdGUoKSk7Cit9
CisKK0pTVmFsdWUgSlNNZWRpYVNvdXJjZVN0YXRlczo6YXNwZWN0UmF0aW8oRXhlY1N0YXRlKikg
Y29uc3QKK3sKKyAgICBpZiAoIWltcGwoKS0+aGFzVmlkZW9Tb3VyY2UoKSkKKyAgICAgICAgcmV0
dXJuIGpzVW5kZWZpbmVkKCk7CisgICAgCisgICAgcmV0dXJuIGpzTnVtYmVyKGltcGwoKS0+YXNw
ZWN0UmF0aW8oKSk7Cit9CisKK0pTVmFsdWUgSlNNZWRpYVNvdXJjZVN0YXRlczo6ZmFjaW5nTW9k
ZShFeGVjU3RhdGUqIGV4ZWMpIGNvbnN0Cit7CisgICAgaWYgKCFpbXBsKCktPmhhc1ZpZGVvU291
cmNlKCkpCisgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOworCisgICAgcmV0dXJuIGpzU3Ry
aW5nV2l0aENhY2hlKGV4ZWMsIGltcGwoKS0+ZmFjaW5nTW9kZSgpKTsKK30KKworSlNWYWx1ZSBK
U01lZGlhU291cmNlU3RhdGVzOjp2b2x1bWUoRXhlY1N0YXRlKikgY29uc3QKK3sKKyAgICBpZiAo
aW1wbCgpLT5oYXNWaWRlb1NvdXJjZSgpKQorICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsK
KyAgICAKKyAgICByZXR1cm4ganNOdW1iZXIoaW1wbCgpLT52b2x1bWUoKSk7Cit9CisKK30gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU01lZGlhU3RyZWFtQ2FwYWJpbGl0aWVzQ3VzdG9tLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU01lZGlhU3RyZWFtQ2FwYWJpbGl0aWVzQ3VzdG9t
LmNwcAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTWVkaWFT
dHJlYW1DYXBhYmlsaXRpZXNDdXN0b20uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNDgg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
Q09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBD
T01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLiAKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiSlNNZWRpYVN0cmVh
bUNhcGFiaWxpdGllcy5oIgorCisjaW5jbHVkZSAiTWVkaWFTdHJlYW1DYXBhYmlsaXRpZXMuaCIK
KyNpbmNsdWRlICJKU0FsbEF1ZGlvQ2FwYWJpbGl0aWVzLmgiCisjaW5jbHVkZSAiSlNBbGxWaWRl
b0NhcGFiaWxpdGllcy5oIgorCit1c2luZyBuYW1lc3BhY2UgSlNDOworCituYW1lc3BhY2UgV2Vi
Q29yZSB7CisKK0pTQzo6SlNWYWx1ZSB0b0pTKEpTQzo6RXhlY1N0YXRlKiBleGVjLCBKU0RPTUds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBNZWRpYVN0cmVhbUNhcGFiaWxpdGllcyogb2JqZWN0
KQoreworICAgIGlmICghb2JqZWN0KQorICAgICAgICByZXR1cm4ganNOdWxsKCk7CisKKyAgICBp
ZiAob2JqZWN0LT5oYXNWaWRlb1NvdXJjZSgpKQorICAgICAgICByZXR1cm4gd3JhcDxKU0FsbFZp
ZGVvQ2FwYWJpbGl0aWVzPihleGVjLCBnbG9iYWxPYmplY3QsIHN0YXRpY19jYXN0PEFsbFZpZGVv
Q2FwYWJpbGl0aWVzKj4ob2JqZWN0KSk7CisKKyAgICByZXR1cm4gd3JhcDxKU0FsbEF1ZGlvQ2Fw
YWJpbGl0aWVzPihleGVjLCBnbG9iYWxPYmplY3QsIHN0YXRpY19jYXN0PEFsbEF1ZGlvQ2FwYWJp
bGl0aWVzKj4ob2JqZWN0KSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2RvbS9FdmVudE5hbWVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvZG9tL0V2ZW50TmFtZXMuaAkocmV2aXNpb24gMTU2OTQ2KQorKysgU291cmNlL1dlYkNvcmUv
ZG9tL0V2ZW50TmFtZXMuaAkod29ya2luZyBjb3B5KQpAQCAtMjM4LDYgKzIzOCw3IEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKICAgICBtYWNybyhyZW1vdmVzdHJlYW0pIFwKICAgICBtYWNybyhzaWdu
YWxpbmdzdGF0ZWNoYW5nZSkgXAogICAgIG1hY3JvKHJlbW92ZXRyYWNrKSBcCisgICAgbWFjcm8o
b3ZlcmNvbnN0cmFpbmVkKSBcCiAgICAgbWFjcm8obXV0ZSkgXAogICAgIG1hY3JvKHVubXV0ZSkg
XAogICAgIG1hY3JvKHN0YXJ0ZWQpIFwKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21l
ZGlhc3RyZWFtL01lZGlhU3RyZWFtQ2VudGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbUNlbnRlci5jcHAJKHJldmlzaW9u
IDE1Njk0NikKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlhU3Ry
ZWFtQ2VudGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjcsMTEgKzY3LDYgQEAgTWVkaWFTdHJl
YW1DZW50ZXI6On5NZWRpYVN0cmVhbUNlbnRlcigpCiB7CiB9CiAKLXZvaWQgTWVkaWFTdHJlYW1D
ZW50ZXI6OmVuZExvY2FsTWVkaWFTdHJlYW0oTWVkaWFTdHJlYW1EZXNjcmlwdG9yKiBzdHJlYW1E
ZXNjcmlwdG9yKQotewotICAgIHN0cmVhbURlc2NyaXB0b3ItPnNldEVuZGVkKCk7Ci19Ci0KIH0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEVOQUJMRShNRURJQV9TVFJFQU0pCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbUNlbnRl
ci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL01l
ZGlhU3RyZWFtQ2VudGVyLmgJKHJldmlzaW9uIDE1Njk0NikKKysrIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtQ2VudGVyLmgJKHdvcmtpbmcgY29weSkKQEAg
LTM0LDYgKzM0LDcgQEAKIAogI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCiAKKyNpbmNsdWRlICJN
ZWRpYVN0cmVhbVNvdXJjZS5oIgogI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CiAjaW5jbHVk
ZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKQEAgLTQzLDkgKzQ0LDExIEBAIGNsYXNzIE1lZGlh
Q29uc3RyYWludHM7CiBjbGFzcyBNZWRpYVN0cmVhbUNyZWF0aW9uQ2xpZW50OwogY2xhc3MgTWVk
aWFTdHJlYW1DcmVhdGlvbkNsaWVudDsKIGNsYXNzIE1lZGlhU3RyZWFtRGVzY3JpcHRvcjsKLWNs
YXNzIE1lZGlhU3RyZWFtU291cmNlOworY2xhc3MgTWVkaWFTdHJlYW1Tb3VyY2VDYXBhYmlsaXRp
ZXM7CiBjbGFzcyBNZWRpYVN0cmVhbVRyYWNrU291cmNlc1JlcXVlc3RDbGllbnQ7CiAKK3N0cnVj
dCBNZWRpYVN0cmVhbVNvdXJjZVN0YXRlczsKKwogY2xhc3MgTWVkaWFTdHJlYW1DZW50ZXIgewog
cHVibGljOgogICAgIHZpcnR1YWwgfk1lZGlhU3RyZWFtQ2VudGVyKCk7CkBAIC01OSwxNCArNjIs
NiBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIGJvb2wgZ2V0TWVkaWFTdHJlYW1UcmFja1NvdXJj
ZXMoUGFzc1JlZlB0cjxNZWRpYVN0cmVhbVRyYWNrU291cmNlc1JlcXVlc3RDbGllbnQ+KSA9IDA7
CiAKLSAgICB2aXJ0dWFsIHZvaWQgZGlkU2V0TWVkaWFTdHJlYW1UcmFja0VuYWJsZWQoTWVkaWFT
dHJlYW1Tb3VyY2UqKSA9IDA7Ci0KLSAgICB2aXJ0dWFsIGJvb2wgZGlkQWRkTWVkaWFTdHJlYW1U
cmFjayhNZWRpYVN0cmVhbVNvdXJjZSopID0gMDsKLSAgICB2aXJ0dWFsIGJvb2wgZGlkUmVtb3Zl
TWVkaWFTdHJlYW1UcmFjayhNZWRpYVN0cmVhbVNvdXJjZSopID0gMDsKLQotICAgIHZpcnR1YWwg
dm9pZCBkaWRTdG9wTG9jYWxNZWRpYVN0cmVhbShNZWRpYVN0cmVhbURlc2NyaXB0b3IqKSA9IDA7
Ci0gICAgdmlydHVhbCB2b2lkIGRpZENyZWF0ZU1lZGlhU3RyZWFtKE1lZGlhU3RyZWFtRGVzY3Jp
cHRvciopID0gMDsKLQogcHJvdGVjdGVkOgogICAgIE1lZGlhU3RyZWFtQ2VudGVyKCk7CiAKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtRGVzY3Jp
cHRvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJl
YW0vTWVkaWFTdHJlYW1EZXNjcmlwdG9yLmNwcAkocmV2aXNpb24gMTU2OTQ2KQorKysgU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1EZXNjcmlwdG9yLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMzUsNiArMzUsNyBAQAogCiAjaW5jbHVkZSAiTWVkaWFTdHJlYW1E
ZXNjcmlwdG9yLmgiCiAKKyNpbmNsdWRlICJNZWRpYVN0cmVhbUNlbnRlci5oIgogI2luY2x1ZGUg
Ik1lZGlhU3RyZWFtU291cmNlLmgiCiAjaW5jbHVkZSAiVVVJRC5oIgogI2luY2x1ZGUgPHd0Zi9S
ZWZDb3VudGVkLmg+CkBAIC00Nyw2ICs0OCwxNSBAQCBQYXNzUmVmUHRyPE1lZGlhU3RyZWFtRGVz
Y3JpcHRvcj4gTWVkaWFTCiAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBNZWRpYVN0cmVhbURlc2Ny
aXB0b3IoY3JlYXRlQ2Fub25pY2FsVVVJRFN0cmluZygpLCBhdWRpb1NvdXJjZXMsIHZpZGVvU291
cmNlcykpOwogfQogCitNZWRpYVN0cmVhbURlc2NyaXB0b3I6On5NZWRpYVN0cmVhbURlc2NyaXB0
b3IoKQoreworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9hdWRpb1N0cmVhbVNvdXJjZXMu
c2l6ZSgpOyBpKyspCisgICAgICAgIG1fYXVkaW9TdHJlYW1Tb3VyY2VzW2ldLT5zZXRTdHJlYW0o
MCk7CisgICAgCisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX3ZpZGVvU3RyZWFtU291cmNl
cy5zaXplKCk7IGkrKykKKyAgICAgICAgbV92aWRlb1N0cmVhbVNvdXJjZXNbaV0tPnNldFN0cmVh
bSgwKTsKK30KKwogdm9pZCBNZWRpYVN0cmVhbURlc2NyaXB0b3I6OmFkZFNvdXJjZShQYXNzUmVm
UHRyPE1lZGlhU3RyZWFtU291cmNlPiBzb3VyY2UpCiB7CiAgICAgc3dpdGNoIChzb3VyY2UtPnR5
cGUoKSkgewpAQCAtNjcsMTUgKzc3LDE5IEBAIHZvaWQgTWVkaWFTdHJlYW1EZXNjcmlwdG9yOjpy
ZW1vdmVTb3VyY2UKICAgICBzd2l0Y2ggKHNvdXJjZS0+dHlwZSgpKSB7CiAgICAgY2FzZSBNZWRp
YVN0cmVhbVNvdXJjZTo6QXVkaW86CiAgICAgICAgIHBvcyA9IG1fYXVkaW9TdHJlYW1Tb3VyY2Vz
LmZpbmQoc291cmNlKTsKLSAgICAgICAgaWYgKHBvcyAhPSBub3RGb3VuZCkKLSAgICAgICAgICAg
IG1fYXVkaW9TdHJlYW1Tb3VyY2VzLnJlbW92ZShwb3MpOworICAgICAgICBpZiAocG9zID09IG5v
dEZvdW5kKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBtX2F1ZGlvU3RyZWFtU291cmNl
cy5yZW1vdmUocG9zKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBNZWRpYVN0cmVhbVNvdXJj
ZTo6VmlkZW86CiAgICAgICAgIHBvcyA9IG1fdmlkZW9TdHJlYW1Tb3VyY2VzLmZpbmQoc291cmNl
KTsKLSAgICAgICAgaWYgKHBvcyAhPSBub3RGb3VuZCkKLSAgICAgICAgICAgIG1fdmlkZW9TdHJl
YW1Tb3VyY2VzLnJlbW92ZShwb3MpOworICAgICAgICBpZiAocG9zID09IG5vdEZvdW5kKQorICAg
ICAgICAgICAgcmV0dXJuOworICAgICAgICBtX3ZpZGVvU3RyZWFtU291cmNlcy5yZW1vdmUocG9z
KTsKICAgICAgICAgYnJlYWs7CiAgICAgfQorCisgICAgc291cmNlLT5zZXRTdHJlYW0oMCk7CiB9
CiAKIHZvaWQgTWVkaWFTdHJlYW1EZXNjcmlwdG9yOjphZGRSZW1vdGVTb3VyY2UoTWVkaWFTdHJl
YW1Tb3VyY2UqIHNvdXJjZSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3Ry
ZWFtL01lZGlhU3RyZWFtRGVzY3JpcHRvci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtRGVzY3JpcHRvci5oCShyZXZpc2lvbiAx
NTY5NDYpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYVN0cmVh
bURlc2NyaXB0b3IuaAkod29ya2luZyBjb3B5KQpAQCAtNTIsOSArNTIsMTAgQEAgcHVibGljOgog
CiBjbGFzcyBNZWRpYVN0cmVhbURlc2NyaXB0b3IgOiBwdWJsaWMgUmVmQ291bnRlZDxNZWRpYVN0
cmVhbURlc2NyaXB0b3I+IHsKIHB1YmxpYzoKLQogICAgIHN0YXRpYyBQYXNzUmVmUHRyPE1lZGlh
U3RyZWFtRGVzY3JpcHRvcj4gY3JlYXRlKGNvbnN0IE1lZGlhU3RyZWFtU291cmNlVmVjdG9yJiBh
dWRpb1NvdXJjZXMsIGNvbnN0IE1lZGlhU3RyZWFtU291cmNlVmVjdG9yJiB2aWRlb1NvdXJjZXMp
OwogCisgICAgdmlydHVhbCB+TWVkaWFTdHJlYW1EZXNjcmlwdG9yKCk7CisKICAgICBNZWRpYVN0
cmVhbURlc2NyaXB0b3JDbGllbnQqIGNsaWVudCgpIGNvbnN0IHsgcmV0dXJuIG1fY2xpZW50OyB9
CiAgICAgdm9pZCBzZXRDbGllbnQoTWVkaWFTdHJlYW1EZXNjcmlwdG9yQ2xpZW50KiBjbGllbnQp
IHsgbV9jbGllbnQgPSBjbGllbnQ7IH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1Tb3VyY2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtU291cmNlLmNwcAkocmV2aXNp
b24gMTU2OTQ2KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFT
dHJlYW1Tb3VyY2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNiBAQAogLyoKICAqIENv
cHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29w
eXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzQsMjYgKzM1LDM5IEBACiAKICNpbmNsdWRlICJN
ZWRpYVN0cmVhbVNvdXJjZS5oIgogCi0jaW5jbHVkZSAiQXVkaW9EZXN0aW5hdGlvbkNvbnN1bWVy
LmgiCisjaW5jbHVkZSAiTWVkaWFTdHJlYW1DZW50ZXIuaCIKKyNpbmNsdWRlICJNZWRpYVN0cmVh
bVNvdXJjZUNhcGFiaWxpdGllcy5oIgorI2luY2x1ZGUgIlVVSUQuaCIKKwogI2luY2x1ZGUgPHd0
Zi9QYXNzT3duUHRyLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotUGFzc1JlZlB0cjxNZWRp
YVN0cmVhbVNvdXJjZT4gTWVkaWFTdHJlYW1Tb3VyY2U6OmNyZWF0ZShjb25zdCBTdHJpbmcmIGlk
LCBUeXBlIHR5cGUsIGNvbnN0IFN0cmluZyYgbmFtZSwgUmVhZHlTdGF0ZSByZWFkeVN0YXRlLCBi
b29sIHJlcXVpcmVzQ29uc3VtZXIpCi17Ci0gICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBNZWRpYVN0
cmVhbVNvdXJjZShpZCwgdHlwZSwgbmFtZSwgcmVhZHlTdGF0ZSwgcmVxdWlyZXNDb25zdW1lcikp
OwotfQotCi1NZWRpYVN0cmVhbVNvdXJjZTo6TWVkaWFTdHJlYW1Tb3VyY2UoY29uc3QgU3RyaW5n
JiBpZCwgVHlwZSB0eXBlLCBjb25zdCBTdHJpbmcmIG5hbWUsIFJlYWR5U3RhdGUgcmVhZHlTdGF0
ZSwgYm9vbCByZXF1aXJlc0NvbnN1bWVyKQorTWVkaWFTdHJlYW1Tb3VyY2U6Ok1lZGlhU3RyZWFt
U291cmNlKGNvbnN0IFN0cmluZyYgaWQsIFR5cGUgdHlwZSwgY29uc3QgU3RyaW5nJiBuYW1lKQog
ICAgIDogbV9pZChpZCkKICAgICAsIG1fdHlwZSh0eXBlKQogICAgICwgbV9uYW1lKG5hbWUpCi0g
ICAgLCBtX3JlYWR5U3RhdGUocmVhZHlTdGF0ZSkKKyAgICAsIG1fcmVhZHlTdGF0ZShOZXcpCiAg
ICAgLCBtX3N0cmVhbSgwKQotICAgICwgbV9yZXF1aXJlc0NvbnN1bWVyKHJlcXVpcmVzQ29uc3Vt
ZXIpCiAgICAgLCBtX2VuYWJsZWQodHJ1ZSkKICAgICAsIG1fbXV0ZWQoZmFsc2UpCisgICAgLCBt
X3JlYWRvbmx5KGZhbHNlKQorICAgICwgbV9yZW1vdGUoZmFsc2UpCiB7CisgICAgaWYgKCFtX2lk
LmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuOworICAgIAorICAgIG1faWQgPSBjcmVhdGVDYW5v
bmljYWxVVUlEU3RyaW5nKCk7Cit9CisKK3ZvaWQgTWVkaWFTdHJlYW1Tb3VyY2U6OnJlc2V0KCkK
K3sKKyAgICBtX3JlYWR5U3RhdGUgPSBOZXc7CisgICAgbV9zdHJlYW0gPSAwOworICAgIG1fZW5h
YmxlZCA9IHRydWU7CisgICAgbV9tdXRlZCA9IGZhbHNlOworICAgIG1fcmVhZG9ubHkgPSBmYWxz
ZTsKKyAgICBtX3JlbW90ZSA9IGZhbHNlOwogfQogCiB2b2lkIE1lZGlhU3RyZWFtU291cmNlOjpz
ZXRSZWFkeVN0YXRlKFJlYWR5U3RhdGUgcmVhZHlTdGF0ZSkKQEAgLTYzLDcgKzc3LDcgQEAgdm9p
ZCBNZWRpYVN0cmVhbVNvdXJjZTo6c2V0UmVhZHlTdGF0ZShSZQogCiAgICAgbV9yZWFkeVN0YXRl
ID0gcmVhZHlTdGF0ZTsKICAgICBmb3IgKFZlY3RvcjxPYnNlcnZlcio+OjppdGVyYXRvciBpID0g
bV9vYnNlcnZlcnMuYmVnaW4oKTsgaSAhPSBtX29ic2VydmVycy5lbmQoKTsgKytpKQotICAgICAg
ICAoKmkpLT5zb3VyY2VDaGFuZ2VkU3RhdGUoKTsKKyAgICAgICAgKCppKS0+c291cmNlU3RhdGVD
aGFuZ2VkKCk7CiB9CiAKIHZvaWQgTWVkaWFTdHJlYW1Tb3VyY2U6OmFkZE9ic2VydmVyKE1lZGlh
U3RyZWFtU291cmNlOjpPYnNlcnZlciogb2JzZXJ2ZXIpCkBAIC04MCw1MyArOTQsNzQgQEAgdm9p
ZCBNZWRpYVN0cmVhbVNvdXJjZTo6cmVtb3ZlT2JzZXJ2ZXIoTQogCiB2b2lkIE1lZGlhU3RyZWFt
U291cmNlOjpzZXRTdHJlYW0oTWVkaWFTdHJlYW1EZXNjcmlwdG9yKiBzdHJlYW0pCiB7Ci0gICAg
QVNTRVJUKCFtX3N0cmVhbSAmJiBzdHJlYW0pOworICAgIC8vIEZJWE1FOiBBIHNvdXJjZSBzaG91
bGQgbm90IG5lZWQgdG8ga25vdyBhYm91dCBpdHMgc3RyZWFtKHMpLiBUaGlzIHdpbGwgYmUgZml4
ZWQgYXMgYSBwYXJ0IG9mCisgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTEyMTk1NAogICAgIG1fc3RyZWFtID0gc3RyZWFtOwogfQogCitNZWRpYUNvbnN0cmFp
bnRzKiBNZWRpYVN0cmVhbVNvdXJjZTo6Y29uc3RyYWludHMoKSBjb25zdAoreworICAgIC8vIEZJ
WE1FOiBXaGlsZSB0aGlzIHJldHVybnMgCisgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTEyMjQyOAorICAgIHJldHVybiBtX2NvbnN0cmFpbnRzLmdldCgpOwor
fQorICAgIAordm9pZCBNZWRpYVN0cmVhbVNvdXJjZTo6c2V0Q29uc3RyYWludHMoUGFzc1JlZlB0
cjxNZWRpYUNvbnN0cmFpbnRzPiBjb25zdHJhaW50cykKK3sKKyAgICBtX2NvbnN0cmFpbnRzID0g
Y29uc3RyYWludHM7Cit9CisKIHZvaWQgTWVkaWFTdHJlYW1Tb3VyY2U6OnNldE11dGVkKGJvb2wg
bXV0ZWQpCiB7CiAgICAgaWYgKG1fbXV0ZWQgPT0gbXV0ZWQpCiAgICAgICAgIHJldHVybjsKIAog
ICAgIG1fbXV0ZWQgPSBtdXRlZDsKKworICAgIGlmIChtX3JlYWR5U3RhdGUgPT0gRW5kZWQpCisg
ICAgICAgIHJldHVybjsKKwogICAgIGZvciAoVmVjdG9yPE9ic2VydmVyKj46Oml0ZXJhdG9yIGkg
PSBtX29ic2VydmVycy5iZWdpbigpOyBpICE9IG1fb2JzZXJ2ZXJzLmVuZCgpOyArK2kpCi0gICAg
ICAgICgqaSktPnNvdXJjZUNoYW5nZWRTdGF0ZSgpOworICAgICAgICAoKmkpLT5zb3VyY2VNdXRl
ZENoYW5nZWQoKTsKIH0KIAotdm9pZCBNZWRpYVN0cmVhbVNvdXJjZTo6YWRkQXVkaW9Db25zdW1l
cihQYXNzUmVmUHRyPEF1ZGlvRGVzdGluYXRpb25Db25zdW1lcj4gY29uc3VtZXIpCit2b2lkIE1l
ZGlhU3RyZWFtU291cmNlOjpzZXRFbmFibGVkKGJvb2wgZW5hYmxlZCkKIHsKLSAgICBBU1NFUlQo
bV9yZXF1aXJlc0NvbnN1bWVyKTsKLSAgICBNdXRleExvY2tlciBsb2NrZXIobV9hdWRpb0NvbnN1
bWVyc0xvY2spOwotICAgIG1fYXVkaW9Db25zdW1lcnMuYXBwZW5kKGNvbnN1bWVyKTsKLX0KKyAg
ICBpZiAobV9lbmFibGVkID09IGVuYWJsZWQpCisgICAgICAgIHJldHVybjsKKyAgICAKKyAgICBt
X2VuYWJsZWQgPSBlbmFibGVkOwogCi1ib29sIE1lZGlhU3RyZWFtU291cmNlOjpyZW1vdmVBdWRp
b0NvbnN1bWVyKEF1ZGlvRGVzdGluYXRpb25Db25zdW1lciogY29uc3VtZXIpCi17Ci0gICAgQVNT
RVJUKG1fcmVxdWlyZXNDb25zdW1lcik7Ci0gICAgTXV0ZXhMb2NrZXIgbG9ja2VyKG1fYXVkaW9D
b25zdW1lcnNMb2NrKTsKLSAgICBzaXplX3QgcG9zID0gbV9hdWRpb0NvbnN1bWVycy5maW5kKGNv
bnN1bWVyKTsKLSAgICBpZiAocG9zICE9IG5vdEZvdW5kKSB7Ci0gICAgICAgIG1fYXVkaW9Db25z
dW1lcnMucmVtb3ZlKHBvcyk7Ci0gICAgICAgIHJldHVybiB0cnVlOwotICAgIH0KLSAgICByZXR1
cm4gZmFsc2U7CisgICAgaWYgKG1fcmVhZHlTdGF0ZSA9PSBFbmRlZCkKKyAgICAgICAgcmV0dXJu
OworICAgIAorICAgIGZvciAoVmVjdG9yPE9ic2VydmVyKj46Oml0ZXJhdG9yIGkgPSBtX29ic2Vy
dmVycy5iZWdpbigpOyBpICE9IG1fb2JzZXJ2ZXJzLmVuZCgpOyArK2kpCisgICAgICAgICgqaSkt
PnNvdXJjZUVuYWJsZWRDaGFuZ2VkKCk7CiB9CiAKLXZvaWQgTWVkaWFTdHJlYW1Tb3VyY2U6OnNl
dEF1ZGlvRm9ybWF0KHNpemVfdCBudW1iZXJPZkNoYW5uZWxzLCBmbG9hdCBzYW1wbGVSYXRlKQor
Ym9vbCBNZWRpYVN0cmVhbVNvdXJjZTo6cmVhZG9ubHkoKSBjb25zdAogewotICAgIEFTU0VSVCht
X3JlcXVpcmVzQ29uc3VtZXIpOwotICAgIE11dGV4TG9ja2VyIGxvY2tlcihtX2F1ZGlvQ29uc3Vt
ZXJzTG9jayk7Ci0gICAgZm9yIChWZWN0b3I8UmVmUHRyPEF1ZGlvRGVzdGluYXRpb25Db25zdW1l
cj4gPjo6aXRlcmF0b3IgaXQgPSBtX2F1ZGlvQ29uc3VtZXJzLmJlZ2luKCk7IGl0ICE9IG1fYXVk
aW9Db25zdW1lcnMuZW5kKCk7ICsraXQpCi0gICAgICAgICgqaXQpLT5zZXRGb3JtYXQobnVtYmVy
T2ZDaGFubmVscywgc2FtcGxlUmF0ZSk7CisgICAgLy8gaHR0cDovL3d3dy53My5vcmcvVFIvbWVk
aWFjYXB0dXJlLXN0cmVhbXMvI3dpZGwtTWVkaWFTdHJlYW1UcmFjay1fcmVhZG9ubHkKKyAgICAv
LyBJZiB0aGUgdHJhY2sgKGF1ZGlvIG9yIHZpZGVvKSBpcyBiYWNrZWQgYnkgYSByZWFkLW9ubHkg
c291cmNlIHN1Y2ggYXMgYSBmaWxlLCBvciB0aGUgdHJhY2sgc291cmNlIAorICAgIC8vIGlzIGEg
bG9jYWwgbWljcm9waG9uZSBvciBjYW1lcmEsIGJ1dCBpcyBzaGFyZWQgc28gdGhhdCB0aGlzIHRy
YWNrIGNhbm5vdCBtb2RpZnkgYW55IG9mIHRoZSBzb3VyY2UncworICAgIC8vIHNldHRpbmdzLCB0
aGUgcmVhZG9ubHkgYXR0cmlidXRlIG11c3QgcmV0dXJuIHRoZSB2YWx1ZSB0cnVlLiBPdGhlcndp
c2UsIGl0IG11c3QgcmV0dXJuIHRoZSB2YWx1ZSBmYWxzZS4KKyAgICByZXR1cm4gbV9yZWFkb25s
eTsKIH0KIAotdm9pZCBNZWRpYVN0cmVhbVNvdXJjZTo6Y29uc3VtZUF1ZGlvKEF1ZGlvQnVzKiBi
dXMsIHNpemVfdCBudW1iZXJPZkZyYW1lcykKK3ZvaWQgTWVkaWFTdHJlYW1Tb3VyY2U6OnN0b3Ao
KQogewotICAgIEFTU0VSVChtX3JlcXVpcmVzQ29uc3VtZXIpOwotICAgIE11dGV4TG9ja2VyIGxv
Y2tlcihtX2F1ZGlvQ29uc3VtZXJzTG9jayk7Ci0gICAgZm9yIChWZWN0b3I8UmVmUHRyPEF1ZGlv
RGVzdGluYXRpb25Db25zdW1lcj4gPjo6aXRlcmF0b3IgaXQgPSBtX2F1ZGlvQ29uc3VtZXJzLmJl
Z2luKCk7IGl0ICE9IG1fYXVkaW9Db25zdW1lcnMuZW5kKCk7ICsraXQpCi0gICAgICAgICgqaXQp
LT5jb25zdW1lQXVkaW8oYnVzLCBudW1iZXJPZkZyYW1lcyk7CisgICAgZm9yIChWZWN0b3I8T2Jz
ZXJ2ZXIqPjo6aXRlcmF0b3IgaSA9IG1fb2JzZXJ2ZXJzLmJlZ2luKCk7IGkgIT0gbV9vYnNlcnZl
cnMuZW5kKCk7ICsraSkgeworICAgICAgICBpZiAoISgqaSktPnN0b3BwZWQoKSkKKyAgICAgICAg
ICAgIHJldHVybjsKKyAgICB9CisKKyAgICAvLyBUaGVyZSBhcmUgbm8gbW9yZSBjb25zdW1lcnMg
b2YgdGhpcyBzb3VyY2UncyBkYXRhLCBzaHV0IGl0IGRvd24gYXMgYXBwcm9wcmlhdGUuCisgICAg
c2V0UmVhZHlTdGF0ZShFbmRlZCk7CisKKyAgICAvLyBodHRwOi8vd3d3LnczLm9yZy9UUi9tZWRp
YWNhcHR1cmUtc3RyZWFtcy8jd2lkbC1NZWRpYVN0cmVhbVRyYWNrLXN0b3Atdm9pZAorICAgIC8v
IElmIHRoZSBkYXRhIGlzIGJlaW5nIGdlbmVyYXRlZCBmcm9tIGEgbGl2ZSBzb3VyY2UgKGUuZy4s
IGEgbWljcm9waG9uZSBvciBjYW1lcmEpLCB0aGVuIHRoZSB1c2VyIAorICAgIC8vIGFnZW50IHNo
b3VsZCByZW1vdmUgYW55IGFjdGl2ZSAib24tYWlyIiBpbmRpY2F0b3IgZm9yIHRoYXQgc291cmNl
LiBJZiB0aGUgZGF0YSBpcyBiZWluZyAKKyAgICAvLyBnZW5lcmF0ZWQgZnJvbSBhIHByZXJlY29y
ZGVkIHNvdXJjZSAoZS5nLiBhIHZpZGVvIGZpbGUpLCBhbnkgcmVtYWluaW5nIGNvbnRlbnQgaW4g
dGhlIGZpbGUgaXMgaWdub3JlZC4KIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDog
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1Tb3VyY2UuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYVN0
cmVhbVNvdXJjZS5oCShyZXZpc2lvbiAxNTY5NDYpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVNvdXJjZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDYg
KzEsNyBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAxMSBFcmljc3NvbiBBQi4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzYsNiArMzcsNyBA
QAogCiAjaW5jbHVkZSAiQXVkaW9EZXN0aW5hdGlvbkNvbnN1bWVyLmgiCiAjaW5jbHVkZSAiTWVk
aWFDb25zdHJhaW50cy5oIgorI2luY2x1ZGUgIk1lZGlhU3RyZWFtU291cmNlQ2FwYWJpbGl0aWVz
LmgiCiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+
CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CkBAIC00Myw3MiArNDUsODEgQEAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQXVkaW9CdXM7CitjbGFzcyBNZWRpYUNvbnN0cmFp
bnRzOwogY2xhc3MgTWVkaWFTdHJlYW1EZXNjcmlwdG9yOworc3RydWN0IE1lZGlhU3RyZWFtU291
cmNlU3RhdGVzOwogCiBjbGFzcyBNZWRpYVN0cmVhbVNvdXJjZSA6IHB1YmxpYyBSZWZDb3VudGVk
PE1lZGlhU3RyZWFtU291cmNlPiB7CiBwdWJsaWM6CiAgICAgY2xhc3MgT2JzZXJ2ZXIgewogICAg
IHB1YmxpYzoKICAgICAgICAgdmlydHVhbCB+T2JzZXJ2ZXIoKSB7IH0KLSAgICAgICAgdmlydHVh
bCB2b2lkIHNvdXJjZUNoYW5nZWRTdGF0ZSgpID0gMDsKKyAgICAgICAgdmlydHVhbCB2b2lkIHNv
dXJjZVN0YXRlQ2hhbmdlZCgpID0gMDsKKyAgICAgICAgdmlydHVhbCB2b2lkIHNvdXJjZU11dGVk
Q2hhbmdlZCgpID0gMDsKKyAgICAgICAgdmlydHVhbCB2b2lkIHNvdXJjZUVuYWJsZWRDaGFuZ2Vk
KCkgPSAwOworICAgICAgICB2aXJ0dWFsIGJvb2wgc3RvcHBlZCgpID0gMDsKICAgICB9OwogCiAg
ICAgZW51bSBUeXBlIHsgQXVkaW8sIFZpZGVvIH07CiAgICAgZW51bSBSZWFkeVN0YXRlIHsgTmV3
ID0gMCwgTGl2ZSA9IDEsIEVuZGVkID0gMiB9OwogCi0gICAgc3RhdGljIFBhc3NSZWZQdHI8TWVk
aWFTdHJlYW1Tb3VyY2U+IGNyZWF0ZShjb25zdCBTdHJpbmcmIGlkLCBUeXBlLCBjb25zdCBTdHJp
bmcmIG5hbWUsIFJlYWR5U3RhdGUgPSBOZXcsIGJvb2wgcmVxdWlyZXNDb25zdW1lciA9IGZhbHNl
KTsKKyAgICB2aXJ0dWFsIH5NZWRpYVN0cmVhbVNvdXJjZSgpIHsgfQogCi0gICAgY29uc3QgU3Ry
aW5nJiBpZCgpIGNvbnN0IHsgcmV0dXJuIG1faWQ7IH0KKyAgICB2aXJ0dWFsIGJvb2wgaXNBdWRp
b1N0cmVhbVNvdXJjZSgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdmlydHVhbCBib29s
IHVzZUlERm9yVHJhY2tJRCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CisKKyAgICB2b2lkIHJl
c2V0KCk7CiAKKyAgICBjb25zdCBTdHJpbmcmIGlkKCkgY29uc3QgeyByZXR1cm4gbV9pZDsgfQog
ICAgIFR5cGUgdHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fdHlwZTsgfQogICAgIGNvbnN0IFN0cmlu
ZyYgbmFtZSgpIGNvbnN0IHsgcmV0dXJuIG1fbmFtZTsgfQogCisgICAgdmlydHVhbCBQYXNzUmVm
UHRyPE1lZGlhU3RyZWFtU291cmNlQ2FwYWJpbGl0aWVzPiBjYXBhYmlsaXRpZXMoKSBjb25zdCA9
IDA7CisgICAgdmlydHVhbCBjb25zdCBNZWRpYVN0cmVhbVNvdXJjZVN0YXRlcyYgc3RhdGVzKCkg
PSAwOworICAgIAogICAgIHZvaWQgc2V0UmVhZHlTdGF0ZShSZWFkeVN0YXRlKTsKICAgICBSZWFk
eVN0YXRlIHJlYWR5U3RhdGUoKSBjb25zdCB7IHJldHVybiBtX3JlYWR5U3RhdGU7IH0KIAogICAg
IHZvaWQgYWRkT2JzZXJ2ZXIoT2JzZXJ2ZXIqKTsKICAgICB2b2lkIHJlbW92ZU9ic2VydmVyKE9i
c2VydmVyKik7CiAKLSAgICB2b2lkIHNldENvbnN0cmFpbnRzKFBhc3NSZWZQdHI8TWVkaWFDb25z
dHJhaW50cz4gY29uc3RyYWludHMpIHsgbV9jb25zdHJhaW50cyA9IGNvbnN0cmFpbnRzOyB9Ci0g
ICAgTWVkaWFDb25zdHJhaW50cyogY29uc3RyYWludHMoKSBjb25zdCB7IHJldHVybiBtX2NvbnN0
cmFpbnRzLmdldCgpOyB9Ci0KLSAgICBjb25zdCBTdHJpbmcmIGRldmljZUlkKCkgY29uc3QgeyBy
ZXR1cm4gbV9kZXZpY2VJZDsgfQotICAgIHZvaWQgc2V0RGV2aWNlSWQoY29uc3QgU3RyaW5nJiBk
ZXZpY2VJZCkgeyBtX2RldmljZUlkID0gZGV2aWNlSWQ7IH0KKyAgICB2b2lkIHNldENvbnN0cmFp
bnRzKFBhc3NSZWZQdHI8TWVkaWFDb25zdHJhaW50cz4gY29uc3RyYWludHMpOworICAgIE1lZGlh
Q29uc3RyYWludHMqIGNvbnN0cmFpbnRzKCkgY29uc3Q7CiAKICAgICBib29sIGVuYWJsZWQoKSBj
b25zdCB7IHJldHVybiBtX2VuYWJsZWQ7IH0KLSAgICB2b2lkIHNldEVuYWJsZWQoYm9vbCBlbmFi
bGVkKSB7IG1fZW5hYmxlZCA9IGVuYWJsZWQ7IH0KKyAgICB2b2lkIHNldEVuYWJsZWQoYm9vbCk7
CiAKICAgICBib29sIG11dGVkKCkgY29uc3QgeyByZXR1cm4gbV9tdXRlZDsgfQogICAgIHZvaWQg
c2V0TXV0ZWQoYm9vbCk7Ci0gICAgCi0gICAgdm9pZCBzZXRBdWRpb0Zvcm1hdChzaXplX3QgbnVt
YmVyT2ZDaGFubmVscywgZmxvYXQgc2FtcGxlUmF0ZSk7Ci0gICAgdm9pZCBjb25zdW1lQXVkaW8o
QXVkaW9CdXMqLCBzaXplX3QgbnVtYmVyT2ZGcmFtZXMpOworCisgICAgYm9vbCByZWFkb25seSgp
IGNvbnN0OworICAgIHZvaWQgc2V0UmVhZG9ubHkoYm9vbCByZWFkb25seSkgeyBtX3JlYWRvbmx5
ID0gcmVhZG9ubHk7IH0KKworICAgIGJvb2wgcmVtb3RlKCkgY29uc3QgeyByZXR1cm4gbV9yZW1v
dGU7IH0KKyAgICB2b2lkIHNldFJlbW90ZShib29sIHJlbW90ZSkgeyBtX3JlbW90ZSA9IHJlbW90
ZTsgfQorCisgICAgdm9pZCBzdG9wKCk7CiAKICAgICBNZWRpYVN0cmVhbURlc2NyaXB0b3IqIHN0
cmVhbSgpIGNvbnN0IHsgcmV0dXJuIG1fc3RyZWFtOyB9CiAgICAgdm9pZCBzZXRTdHJlYW0oTWVk
aWFTdHJlYW1EZXNjcmlwdG9yKik7Ci0KLSAgICBib29sIHJlcXVpcmVzQXVkaW9Db25zdW1lcigp
IGNvbnN0IHsgcmV0dXJuIG1fcmVxdWlyZXNDb25zdW1lcjsgfQotICAgIHZvaWQgYWRkQXVkaW9D
b25zdW1lcihQYXNzUmVmUHRyPEF1ZGlvRGVzdGluYXRpb25Db25zdW1lcj4pOwotICAgIGJvb2wg
cmVtb3ZlQXVkaW9Db25zdW1lcihBdWRpb0Rlc3RpbmF0aW9uQ29uc3VtZXIqKTsKLSAgICBjb25z
dCBWZWN0b3I8UmVmUHRyPEF1ZGlvRGVzdGluYXRpb25Db25zdW1lcj4gPiYgYXVkaW9Db25zdW1l
cnMoKSBjb25zdCB7IHJldHVybiBtX2F1ZGlvQ29uc3VtZXJzOyB9CisgICAgCitwcm90ZWN0ZWQ6
CisgICAgTWVkaWFTdHJlYW1Tb3VyY2UoY29uc3QgU3RyaW5nJiBpZCwgVHlwZSwgY29uc3QgU3Ry
aW5nJiBuYW1lKTsKIAogcHJpdmF0ZToKLSAgICBNZWRpYVN0cmVhbVNvdXJjZShjb25zdCBTdHJp
bmcmIGlkLCBUeXBlLCBjb25zdCBTdHJpbmcmIG5hbWUsIFJlYWR5U3RhdGUsIGJvb2wgcmVxdWly
ZXNDb25zdW1lcik7Ci0KICAgICBTdHJpbmcgbV9pZDsKICAgICBUeXBlIG1fdHlwZTsKICAgICBT
dHJpbmcgbV9uYW1lOwogICAgIFJlYWR5U3RhdGUgbV9yZWFkeVN0YXRlOwotICAgIFN0cmluZyBt
X2RldmljZUlkOwogICAgIFZlY3RvcjxPYnNlcnZlcio+IG1fb2JzZXJ2ZXJzOwotICAgIE11dGV4
IG1fYXVkaW9Db25zdW1lcnNMb2NrOwotICAgIFZlY3RvcjxSZWZQdHI8QXVkaW9EZXN0aW5hdGlv
bkNvbnN1bWVyPj4gbV9hdWRpb0NvbnN1bWVyczsKICAgICBSZWZQdHI8TWVkaWFDb25zdHJhaW50
cz4gbV9jb25zdHJhaW50czsKICAgICBNZWRpYVN0cmVhbURlc2NyaXB0b3IqIG1fc3RyZWFtOwor
ICAgIE1lZGlhU3RyZWFtU291cmNlU3RhdGVzIG1fc3RhdGVzOwogCi0gICAgYm9vbCBtX3JlcXVp
cmVzQ29uc3VtZXI7CiAgICAgYm9vbCBtX2VuYWJsZWQ7CiAgICAgYm9vbCBtX211dGVkOworICAg
IGJvb2wgbV9yZWFkb25seTsKKyAgICBib29sIG1fcmVtb3RlOwogfTsKIAogdHlwZWRlZiBWZWN0
b3I8UmVmUHRyPE1lZGlhU3RyZWFtU291cmNlPiA+IE1lZGlhU3RyZWFtU291cmNlVmVjdG9yOwpJ
bmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1Tb3Vy
Y2VDYXBhYmlsaXRpZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
ZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVNvdXJjZUNhcGFiaWxpdGllcy5oCShyZXZpc2lvbiAwKQor
KysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1Tb3VyY2VD
YXBhYmlsaXRpZXMuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDE3NSBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5D
LiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMu
IE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I2lmbmRlZiBNZWRpYVN0cmVhbVNvdXJjZUNhcGFiaWxpdGllc19oCisjZGVmaW5lIE1lZGlhU3Ry
ZWFtU291cmNlQ2FwYWJpbGl0aWVzX2gKKworI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCisKKyNp
bmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKyNpbmNs
dWRlIDx3dGYvdGV4dC9BdG9taWNTdHJpbmcuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitz
dHJ1Y3QgTWVkaWFTdHJlYW1Tb3VyY2VTdGF0ZXMgeworcHVibGljOgorICAgIGVudW0gU291cmNl
VHlwZSB7IE5vbmUsIENhbWVyYSwgTWljcm9waG9uZSB9OworICAgIGVudW0gVmlkZW9GYWNpbmdN
b2RlIHsgVXNlciwgRW52aXJvbm1lbnQsIExlZnQsIFJpZ2h0IH07CisKKyAgICBNZWRpYVN0cmVh
bVNvdXJjZVN0YXRlcygpCisgICAgICAgIDogc291cmNlVHlwZShOb25lKQorICAgICAgICAsIGZh
Y2luZ01vZGUoVXNlcikKKyAgICAgICAgLCB3aWR0aCgwKQorICAgICAgICAsIGhlaWdodCgwKQor
ICAgICAgICAsIGZyYW1lUmF0ZSgwKQorICAgICAgICAsIGFzcGVjdFJhdGlvKDApCisgICAgICAg
ICwgdm9sdW1lKDApCisgICAgeworICAgIH0KKworICAgIFNvdXJjZVR5cGUgc291cmNlVHlwZTsK
KyAgICBBdG9taWNTdHJpbmcgc291cmNlSWQ7CisgICAgVmlkZW9GYWNpbmdNb2RlIGZhY2luZ01v
ZGU7CisgICAgdW5zaWduZWQgbG9uZyB3aWR0aDsKKyAgICB1bnNpZ25lZCBsb25nIGhlaWdodDsK
KyAgICBmbG9hdCBmcmFtZVJhdGU7CisgICAgZmxvYXQgYXNwZWN0UmF0aW87CisgICAgdW5zaWdu
ZWQgbG9uZyB2b2x1bWU7CisgICAgCisgICAgYm9vbCBoYXNWaWRlb1NvdXJjZTsKK307CisKK2Ns
YXNzIE1lZGlhU3RyZWFtU291cmNlQ2FwYWJpbGl0eVJhbmdlIHsKK3B1YmxpYzoKKyAgICAKKyAg
ICBNZWRpYVN0cmVhbVNvdXJjZUNhcGFiaWxpdHlSYW5nZShmbG9hdCBtaW4sIGZsb2F0IG1heCwg
Ym9vbCBzdXBwb3J0ZWQgPSB0cnVlKQorICAgICAgICA6IG1fdHlwZShGbG9hdCkKKyAgICB7Cisg
ICAgICAgIG1fbWluLmFzRmxvYXQgPSBtaW47CisgICAgICAgIG1fbWF4LmFzRmxvYXQgPSBtYXg7
CisgICAgICAgIG1fc3VwcG9ydGVkID0gc3VwcG9ydGVkOworICAgIH0KKyAgICAKKyAgICBNZWRp
YVN0cmVhbVNvdXJjZUNhcGFiaWxpdHlSYW5nZSh1bnNpZ25lZCBsb25nIG1pbiwgdW5zaWduZWQg
bG9uZyBtYXgsIGJvb2wgc3VwcG9ydGVkID0gdHJ1ZSkKKyAgICAgICAgOiBtX3R5cGUoVUxvbmcp
CisgICAgeworICAgICAgICBtX21pbi5hc1VMb25nID0gbWluOworICAgICAgICBtX21heC5hc1VM
b25nID0gbWF4OworICAgICAgICBtX3N1cHBvcnRlZCA9IHN1cHBvcnRlZDsKKyAgICB9CisgICAg
CisgICAgTWVkaWFTdHJlYW1Tb3VyY2VDYXBhYmlsaXR5UmFuZ2UoKQorICAgIHsKKyAgICAgICAg
bV90eXBlID0gVW5kZWZpbmVkOworICAgICAgICBtX21pbi5hc1VMb25nID0gMDsKKyAgICAgICAg
bV9tYXguYXNVTG9uZyA9IDA7CisgICAgICAgIG1fc3VwcG9ydGVkID0gZmFsc2U7CisgICAgfQor
ICAgIAorICAgIGVudW0gVHlwZSB7IFVuZGVmaW5lZCwgRmxvYXQsIFVMb25nIH07CisgICAgCisg
ICAgdW5pb24gVmFsdWVVbmlvbiB7CisgICAgICAgIHVuc2lnbmVkIGxvbmcgYXNVTG9uZzsKKyAg
ICAgICAgZmxvYXQgYXNGbG9hdDsKKyAgICB9OworICAgIAorICAgIGNvbnN0IFZhbHVlVW5pb24m
IG1pbigpIGNvbnN0IHsgcmV0dXJuIG1fbWluOyB9CisgICAgY29uc3QgVmFsdWVVbmlvbiYgbWF4
KCkgY29uc3QgeyByZXR1cm4gbV9tYXg7IH0KKyAgICBUeXBlIHR5cGUoKSBjb25zdCB7IHJldHVy
biBtX3R5cGU7IH0KKyAgICBib29sIHN1cHBvcnRlZCgpIGNvbnN0IHsgcmV0dXJuIG1fc3VwcG9y
dGVkOyB9CisgICAgCitwcml2YXRlOgorICAgIFZhbHVlVW5pb24gbV9taW47CisgICAgVmFsdWVV
bmlvbiBtX21heDsKKyAgICBUeXBlIG1fdHlwZTsKKyAgICBib29sIG1fc3VwcG9ydGVkOworfTsK
KworY2xhc3MgTWVkaWFTdHJlYW1Tb3VyY2VDYXBhYmlsaXRpZXMgOiBwdWJsaWMgUmVmQ291bnRl
ZDxNZWRpYVN0cmVhbVNvdXJjZUNhcGFiaWxpdGllcz4geworcHVibGljOgorICAgIHN0YXRpYyBQ
YXNzUmVmUHRyPE1lZGlhU3RyZWFtU291cmNlQ2FwYWJpbGl0aWVzPiBjcmVhdGUoKQorICAgIHsK
KyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBNZWRpYVN0cmVhbVNvdXJjZUNhcGFiaWxpdGll
cygpKTsKKyAgICB9CisKKyAgICB+TWVkaWFTdHJlYW1Tb3VyY2VDYXBhYmlsaXRpZXMoKSB7IH0K
KworICAgIGNvbnN0IFZlY3RvcjxNZWRpYVN0cmVhbVNvdXJjZVN0YXRlczo6U291cmNlVHlwZT4m
IHNvdXJjZVR5cGVzKCkgeyByZXR1cm4gbV9zb3VyY2VUeXBlOyB9CisgICAgdm9pZCBhZGRTb3Vy
Y2VUeXBlKE1lZGlhU3RyZWFtU291cmNlU3RhdGVzOjpTb3VyY2VUeXBlIHNvdXJjZVR5cGUpCisg
ICAgeworICAgICAgICBpZiAoc291cmNlVHlwZSA9PSBNZWRpYVN0cmVhbVNvdXJjZVN0YXRlczo6
Q2FtZXJhKQorICAgICAgICAgICAgbV92aWRlb1NvdXJjZSA9IHRydWU7CisgICAgICAgIG1fc291
cmNlVHlwZS5hcHBlbmQoc291cmNlVHlwZSk7CisgICAgfQorCisgICAgY29uc3QgVmVjdG9yPEF0
b21pY1N0cmluZz4mIHNvdXJjZUlkKCkgeyByZXR1cm4gbV9zb3VyY2VJZDsgfQorICAgIHZvaWQg
c2V0U291cmNlSWQoY29uc3QgQXRvbWljU3RyaW5nJiBpZCkgIHsgbV9zb3VyY2VJZC5yZXNlcnZl
Q2FwYWNpdHkoMSk7IG1fc291cmNlSWQuaW5zZXJ0KDAsIGlkKTsgfQorCisgICAgY29uc3QgVmVj
dG9yPE1lZGlhU3RyZWFtU291cmNlU3RhdGVzOjpWaWRlb0ZhY2luZ01vZGU+JiBmYWNpbmdNb2Rl
cygpIHsgcmV0dXJuIG1fZmFjaW5nTW9kZTsgfQorICAgIHZvaWQgYWRkRmFjaW5nTW9kZShNZWRp
YVN0cmVhbVNvdXJjZVN0YXRlczo6VmlkZW9GYWNpbmdNb2RlIG1vZGUpIHsgbV9mYWNpbmdNb2Rl
LmFwcGVuZChtb2RlKTsgfQorCisgICAgY29uc3QgTWVkaWFTdHJlYW1Tb3VyY2VDYXBhYmlsaXR5
UmFuZ2UmIHdpZHRoKCkgeyByZXR1cm4gbV93aWR0aDsgfQorICAgIHZvaWQgc2V0V2lkdGhSYW5n
ZShjb25zdCBNZWRpYVN0cmVhbVNvdXJjZUNhcGFiaWxpdHlSYW5nZSYgd2lkdGgpIHsgbV93aWR0
aCA9IHdpZHRoOyB9CisKKyAgICBjb25zdCBNZWRpYVN0cmVhbVNvdXJjZUNhcGFiaWxpdHlSYW5n
ZSYgaGVpZ2h0KCkgeyByZXR1cm4gbV9oZWlnaHQ7IH0KKyAgICB2b2lkIHNldEhlaWdodFJhbmdl
KGNvbnN0IE1lZGlhU3RyZWFtU291cmNlQ2FwYWJpbGl0eVJhbmdlJiBoZWlnaHQpIHsgbV9oZWln
aHQgPSBoZWlnaHQ7IH0KKworICAgIGNvbnN0IE1lZGlhU3RyZWFtU291cmNlQ2FwYWJpbGl0eVJh
bmdlJiBmcmFtZVJhdGUoKSB7IHJldHVybiBtX2ZyYW1lUmF0ZTsgfQorICAgIHZvaWQgc2V0RnJh
bWVSYXRlUmFuZ2UoY29uc3QgTWVkaWFTdHJlYW1Tb3VyY2VDYXBhYmlsaXR5UmFuZ2UmIGZyYW1l
UmF0ZSkgeyBtX2ZyYW1lUmF0ZSA9IGZyYW1lUmF0ZTsgfQorCisgICAgY29uc3QgTWVkaWFTdHJl
YW1Tb3VyY2VDYXBhYmlsaXR5UmFuZ2UmIGFzcGVjdFJhdGlvKCkgeyByZXR1cm4gbV9hc3BlY3RS
YXRpbzsgfQorICAgIHZvaWQgc2V0QXNwZWN0UmF0aW9SYW5nZShjb25zdCBNZWRpYVN0cmVhbVNv
dXJjZUNhcGFiaWxpdHlSYW5nZSYgYXNwZWN0UmF0aW8pIHsgbV9hc3BlY3RSYXRpbyA9IGFzcGVj
dFJhdGlvOyB9CisKKyAgICBjb25zdCBNZWRpYVN0cmVhbVNvdXJjZUNhcGFiaWxpdHlSYW5nZSYg
dm9sdW1lKCkgeyByZXR1cm4gbV92b2x1bWU7IH0KKyAgICB2b2lkIHNldFZvbHVtZVJhbmdlKGNv
bnN0IE1lZGlhU3RyZWFtU291cmNlQ2FwYWJpbGl0eVJhbmdlJiB2b2x1bWUpIHsgbV92b2x1bWUg
PSB2b2x1bWU7IH0KKworICAgIGJvb2wgaGFzVmlkZW9Tb3VyY2UoKSB7IHJldHVybiBtX3ZpZGVv
U291cmNlOyB9CisgICAgdm9pZCBzZXRIYXNWaWRlb1NvdXJjZShib29sIGlzVmlkZW8pIHsgbV92
aWRlb1NvdXJjZSA9IGlzVmlkZW87OyB9CisKK3ByaXZhdGU6CisgICAgTWVkaWFTdHJlYW1Tb3Vy
Y2VDYXBhYmlsaXRpZXMoKQorICAgICAgICA6IG1fdmlkZW9Tb3VyY2UoZmFsc2UpCisgICAgewor
ICAgIH0KKworICAgIFZlY3RvcjxBdG9taWNTdHJpbmc+IG1fc291cmNlSWQ7CisgICAgVmVjdG9y
PE1lZGlhU3RyZWFtU291cmNlU3RhdGVzOjpTb3VyY2VUeXBlPiBtX3NvdXJjZVR5cGU7CisgICAg
VmVjdG9yPE1lZGlhU3RyZWFtU291cmNlU3RhdGVzOjpWaWRlb0ZhY2luZ01vZGU+IG1fZmFjaW5n
TW9kZTsKKworICAgIE1lZGlhU3RyZWFtU291cmNlQ2FwYWJpbGl0eVJhbmdlIG1fd2lkdGg7Cisg
ICAgTWVkaWFTdHJlYW1Tb3VyY2VDYXBhYmlsaXR5UmFuZ2UgbV9oZWlnaHQ7CisgICAgTWVkaWFT
dHJlYW1Tb3VyY2VDYXBhYmlsaXR5UmFuZ2UgbV9mcmFtZVJhdGU7CisgICAgTWVkaWFTdHJlYW1T
b3VyY2VDYXBhYmlsaXR5UmFuZ2UgbV9hc3BlY3RSYXRpbzsKKyAgICBNZWRpYVN0cmVhbVNvdXJj
ZUNhcGFiaWxpdHlSYW5nZSBtX3ZvbHVtZTsKKworICAgIGJvb2wgbV92aWRlb1NvdXJjZTsKK307
CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIE1lZGlhU3RyZWFtU291cmNl
Q2FwYWJpbGl0aWVzX2gKKworI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
ZWRpYXN0cmVhbS9ibGFja2JlcnJ5L01lZGlhU3RyZWFtQ2VudGVyQmxhY2tCZXJyeS5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vYmxhY2tiZXJy
eS9NZWRpYVN0cmVhbUNlbnRlckJsYWNrQmVycnkuY3BwCShyZXZpc2lvbiAxNTY5NDYpCisrKyBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9ibGFja2JlcnJ5L01lZGlhU3RyZWFt
Q2VudGVyQmxhY2tCZXJyeS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM1LDggKzM1LDEwIEBACiAK
ICNpbmNsdWRlICJNZWRpYVN0cmVhbUNlbnRlckJsYWNrQmVycnkuaCIKIAorI2luY2x1ZGUgIk1l
ZGlhU3RyZWFtQ3JlYXRpb25DbGllbnQuaCIKICNpbmNsdWRlICJNZWRpYVN0cmVhbURlc2NyaXB0
b3IuaCIKLSNpbmNsdWRlICJNZWRpYVN0cmVhbVNvdXJjZXNRdWVyeUNsaWVudC5oIgorI2luY2x1
ZGUgIk1lZGlhU3RyZWFtVHJhY2tTb3VyY2VzUmVxdWVzdENsaWVudC5oIgorI2luY2x1ZGUgIk5v
dEltcGxlbWVudGVkLmgiCiAjaW5jbHVkZSA8d3RmL01haW5UaHJlYWQuaD4KIAogbmFtZXNwYWNl
IFdlYkNvcmUgewpAQCAtNzIsMzMgKzc0LDYgQEAgYm9vbCBNZWRpYVN0cmVhbUNlbnRlckJsYWNr
QmVycnk6OmdldE1lZAogICAgIHJldHVybiBmYWxzZTsKIH0KIAotdm9pZCBNZWRpYVN0cmVhbUNl
bnRlckJsYWNrQmVycnk6OmRpZFNldE1lZGlhU3RyZWFtVHJhY2tFbmFibGVkKE1lZGlhU3RyZWFt
U291cmNlKikKLXsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotfQotCi1ib29sIE1lZGlhU3RyZWFt
Q2VudGVyQmxhY2tCZXJyeTo6ZGlkQWRkTWVkaWFTdHJlYW1UcmFjayhNZWRpYVN0cmVhbVNvdXJj
ZSopCi17Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLSAgICByZXR1cm4gZmFsc2U7Ci19Ci0KLWJv
b2wgTWVkaWFTdHJlYW1DZW50ZXJCbGFja0JlcnJ5OjpkaWRSZW1vdmVNZWRpYVN0cmVhbVRyYWNr
KE1lZGlhU3RyZWFtU291cmNlKikKLXsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotICAgIHJldHVy
biBmYWxzZTsKLX0KLQotdm9pZCBNZWRpYVN0cmVhbUNlbnRlckJsYWNrQmVycnk6OmRpZFN0b3BM
b2NhbE1lZGlhU3RyZWFtKE1lZGlhU3RyZWFtRGVzY3JpcHRvciogc3RyZWFtKQotewotICAgIGVu
ZExvY2FsTWVkaWFTdHJlYW0oc3RyZWFtKTsKLX0KLQotdm9pZCBNZWRpYVN0cmVhbUNlbnRlckJs
YWNrQmVycnk6OmRpZENyZWF0ZU1lZGlhU3RyZWFtKE1lZGlhU3RyZWFtRGVzY3JpcHRvciopCi17
Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLX0KLQogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAj
ZW5kaWYgLy8gRU5BQkxFKE1FRElBX1NUUkVBTSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21lZGlhc3RyZWFtL2JsYWNrYmVycnkvTWVkaWFTdHJlYW1DZW50ZXJCbGFja0JlcnJ5LmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vYmxhY2ti
ZXJyeS9NZWRpYVN0cmVhbUNlbnRlckJsYWNrQmVycnkuaAkocmV2aXNpb24gMTU2OTQ2KQorKysg
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vYmxhY2tiZXJyeS9NZWRpYVN0cmVh
bUNlbnRlckJsYWNrQmVycnkuaAkod29ya2luZyBjb3B5KQpAQCAtNTAsMTUgKzUwLDkgQEAgcHVi
bGljOgogICAgIE1lZGlhU3RyZWFtQ2VudGVyQmxhY2tCZXJyeSgpOwogICAgIH5NZWRpYVN0cmVh
bUNlbnRlckJsYWNrQmVycnkoKTsKIAotICAgIC8vIE1lZGlhU3RyZWFtQ2VudGVyCiAgICAgdmly
dHVhbCB2b2lkIHZhbGlkYXRlUmVxdWVzdENvbnN0cmFpbnRzKFBhc3NSZWZQdHI8TWVkaWFTdHJl
YW1DcmVhdGlvbkNsaWVudD4sIFBhc3NSZWZQdHI8TWVkaWFDb25zdHJhaW50cz4gYXVkaW9Db25z
dHJhaW50cywgUGFzc1JlZlB0cjxNZWRpYUNvbnN0cmFpbnRzPiB2aWRlb0NvbnN0cmFpbnRzKTsK
ICAgICB2aXJ0dWFsIHZvaWQgY3JlYXRlTWVkaWFTdHJlYW0oUGFzc1JlZlB0cjxNZWRpYVN0cmVh
bUNyZWF0aW9uQ2xpZW50PiwgUGFzc1JlZlB0cjxNZWRpYUNvbnN0cmFpbnRzPiBhdWRpb0NvbnN0
cmFpbnRzLCBQYXNzUmVmUHRyPE1lZGlhQ29uc3RyYWludHM+IHZpZGVvQ29uc3RyYWludHMpOwog
ICAgIHZpcnR1YWwgYm9vbCBnZXRNZWRpYVN0cmVhbVRyYWNrU291cmNlcyhQYXNzUmVmUHRyPE1l
ZGlhU3RyZWFtVHJhY2tTb3VyY2VzUmVxdWVzdENsaWVudD4pIE9WRVJSSURFOwotICAgIHZpcnR1
YWwgdm9pZCBkaWRTZXRNZWRpYVN0cmVhbVRyYWNrRW5hYmxlZChNZWRpYVN0cmVhbVNvdXJjZSop
IE9WRVJSSURFOwotICAgIHZpcnR1YWwgYm9vbCBkaWRBZGRNZWRpYVN0cmVhbVRyYWNrKE1lZGlh
U3RyZWFtU291cmNlKikgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCBib29sIGRpZFJlbW92ZU1lZGlh
U3RyZWFtVHJhY2soTWVkaWFTdHJlYW1Tb3VyY2UqKSBPVkVSUklERTsKLSAgICB2aXJ0dWFsIHZv
aWQgZGlkU3RvcExvY2FsTWVkaWFTdHJlYW0oTWVkaWFTdHJlYW1EZXNjcmlwdG9yKikgT1ZFUlJJ
REU7Ci0gICAgdmlydHVhbCB2b2lkIGRpZENyZWF0ZU1lZGlhU3RyZWFtKE1lZGlhU3RyZWFtRGVz
Y3JpcHRvciopIE9WRVJSSURFOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDog
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vZ3N0cmVhbWVyL01lZGlhU3RyZWFt
Q2VudGVyR1N0cmVhbWVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvTWVkaWFTdHJlYW1DZW50ZXJHU3RyZWFtZXIuY3BwCShy
ZXZpc2lvbiAxNTY5NDYpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9n
c3RyZWFtZXIvTWVkaWFTdHJlYW1DZW50ZXJHU3RyZWFtZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0zNSw3ICszNSwxMSBAQAogCiAjaW5jbHVkZSAiTWVkaWFTdHJlYW1DZW50ZXJHU3RyZWFtZXIu
aCIKIAorI2luY2x1ZGUgIk1lZGlhU3RyZWFtQ3JlYXRpb25DbGllbnQuaCIKICNpbmNsdWRlICJN
ZWRpYVN0cmVhbURlc2NyaXB0b3IuaCIKKyNpbmNsdWRlICJNZWRpYVN0cmVhbVNvdXJjZUNhcGFi
aWxpdGllcy5oIgorI2luY2x1ZGUgIk1lZGlhU3RyZWFtU291cmNlU3RhdGVzLmgiCisjaW5jbHVk
ZSAiTWVkaWFTdHJlYW1UcmFja1NvdXJjZXNSZXF1ZXN0Q2xpZW50LmgiCiAjaW5jbHVkZSAiTm90
SW1wbGVtZW50ZWQuaCIKICNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgogCkBAIC03MiwzMyAr
NzYsNiBAQCBib29sIE1lZGlhU3RyZWFtQ2VudGVyR1N0cmVhbWVyOjpnZXRNZWRpCiAgICAgcmV0
dXJuIGZhbHNlOwogfQogCi12b2lkIE1lZGlhU3RyZWFtQ2VudGVyR1N0cmVhbWVyOjpkaWRTZXRN
ZWRpYVN0cmVhbVRyYWNrRW5hYmxlZChNZWRpYVN0cmVhbVNvdXJjZSopCi17Ci0gICAgbm90SW1w
bGVtZW50ZWQoKTsKLX0KLQotYm9vbCBNZWRpYVN0cmVhbUNlbnRlckdTdHJlYW1lcjo6ZGlkQWRk
TWVkaWFTdHJlYW1UcmFjayhNZWRpYVN0cmVhbVNvdXJjZSopCi17Ci0gICAgbm90SW1wbGVtZW50
ZWQoKTsKLSAgICByZXR1cm4gZmFsc2U7Ci19Ci0KLWJvb2wgTWVkaWFTdHJlYW1DZW50ZXJHU3Ry
ZWFtZXI6OmRpZFJlbW92ZU1lZGlhU3RyZWFtVHJhY2soTWVkaWFTdHJlYW1Tb3VyY2UqKQotewot
ICAgIG5vdEltcGxlbWVudGVkKCk7Ci0gICAgcmV0dXJuIGZhbHNlOwotfQotCi12b2lkIE1lZGlh
U3RyZWFtQ2VudGVyR1N0cmVhbWVyOjpkaWRTdG9wTG9jYWxNZWRpYVN0cmVhbShNZWRpYVN0cmVh
bURlc2NyaXB0b3IqIHN0cmVhbSkKLXsKLSAgICBlbmRMb2NhbE1lZGlhU3RyZWFtKHN0cmVhbSk7
Ci19Ci0KLXZvaWQgTWVkaWFTdHJlYW1DZW50ZXJHU3RyZWFtZXI6OmRpZENyZWF0ZU1lZGlhU3Ry
ZWFtKE1lZGlhU3RyZWFtRGVzY3JpcHRvciopCi17Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLX0K
LQogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5BQkxFKE1FRElBX1NUUkVB
TSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2dzdHJlYW1lci9N
ZWRpYVN0cmVhbUNlbnRlckdTdHJlYW1lci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21lZGlhc3RyZWFtL2dzdHJlYW1lci9NZWRpYVN0cmVhbUNlbnRlckdTdHJlYW1l
ci5oCShyZXZpc2lvbiAxNTY5NDYpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0
cmVhbS9nc3RyZWFtZXIvTWVkaWFTdHJlYW1DZW50ZXJHU3RyZWFtZXIuaAkod29ya2luZyBjb3B5
KQpAQCAtNTAsMTUgKzUwLDkgQEAgcHVibGljOgogICAgIE1lZGlhU3RyZWFtQ2VudGVyR1N0cmVh
bWVyKCk7CiAgICAgfk1lZGlhU3RyZWFtQ2VudGVyR1N0cmVhbWVyKCk7CiAKLSAgICAvLyBNZWRp
YVN0cmVhbUNlbnRlcgogICAgIHZpcnR1YWwgdm9pZCB2YWxpZGF0ZVJlcXVlc3RDb25zdHJhaW50
cyhQYXNzUmVmUHRyPE1lZGlhU3RyZWFtQ3JlYXRpb25DbGllbnQ+LCBQYXNzUmVmUHRyPE1lZGlh
Q29uc3RyYWludHM+IGF1ZGlvQ29uc3RyYWludHMsIFBhc3NSZWZQdHI8TWVkaWFDb25zdHJhaW50
cz4gdmlkZW9Db25zdHJhaW50cyk7CiAgICAgdmlydHVhbCB2b2lkIGNyZWF0ZU1lZGlhU3RyZWFt
KFBhc3NSZWZQdHI8TWVkaWFTdHJlYW1DcmVhdGlvbkNsaWVudD4sIFBhc3NSZWZQdHI8TWVkaWFD
b25zdHJhaW50cz4gYXVkaW9Db25zdHJhaW50cywgUGFzc1JlZlB0cjxNZWRpYUNvbnN0cmFpbnRz
PiB2aWRlb0NvbnN0cmFpbnRzKTsKICAgICB2aXJ0dWFsIGJvb2wgZ2V0TWVkaWFTdHJlYW1UcmFj
a1NvdXJjZXMoUGFzc1JlZlB0cjxNZWRpYVN0cmVhbVRyYWNrU291cmNlc1JlcXVlc3RDbGllbnQ+
KSBPVkVSUklERTsKLSAgICB2aXJ0dWFsIHZvaWQgZGlkU2V0TWVkaWFTdHJlYW1UcmFja0VuYWJs
ZWQoTWVkaWFTdHJlYW1Tb3VyY2UqKSBPVkVSUklERTsKLSAgICB2aXJ0dWFsIGJvb2wgZGlkQWRk
TWVkaWFTdHJlYW1UcmFjayhNZWRpYVN0cmVhbVNvdXJjZSopIE9WRVJSSURFOwotICAgIHZpcnR1
YWwgYm9vbCBkaWRSZW1vdmVNZWRpYVN0cmVhbVRyYWNrKE1lZGlhU3RyZWFtU291cmNlKikgT1ZF
UlJJREU7Ci0gICAgdmlydHVhbCB2b2lkIGRpZFN0b3BMb2NhbE1lZGlhU3RyZWFtKE1lZGlhU3Ry
ZWFtRGVzY3JpcHRvciopIE9WRVJSSURFOwotICAgIHZpcnR1YWwgdm9pZCBkaWRDcmVhdGVNZWRp
YVN0cmVhbShNZWRpYVN0cmVhbURlc2NyaXB0b3IqKSBPVkVSUklERTsKIH07CiAKIH0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFt
L21hYy9NZWRpYVN0cmVhbUNlbnRlck1hYy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL01lZGlhU3RyZWFtQ2VudGVyTWFjLmNwcAkocmV2
aXNpb24gMTU2OTQ2KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFj
L01lZGlhU3RyZWFtQ2VudGVyTWFjLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzMsMzMgKzczLDYg
QEAgYm9vbCBNZWRpYVN0cmVhbUNlbnRlck1hYzo6Z2V0TWVkaWFTdHJlYQogICAgIHJldHVybiBm
YWxzZTsKIH0KIAotdm9pZCBNZWRpYVN0cmVhbUNlbnRlck1hYzo6ZGlkU2V0TWVkaWFTdHJlYW1U
cmFja0VuYWJsZWQoTWVkaWFTdHJlYW1Tb3VyY2UqKQotewotICAgIG5vdEltcGxlbWVudGVkKCk7
Ci19Ci0KLWJvb2wgTWVkaWFTdHJlYW1DZW50ZXJNYWM6OmRpZEFkZE1lZGlhU3RyZWFtVHJhY2so
TWVkaWFTdHJlYW1Tb3VyY2UqKQotewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci0gICAgcmV0dXJu
IGZhbHNlOwotfQotCi1ib29sIE1lZGlhU3RyZWFtQ2VudGVyTWFjOjpkaWRSZW1vdmVNZWRpYVN0
cmVhbVRyYWNrKE1lZGlhU3RyZWFtU291cmNlKikKLXsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwot
ICAgIHJldHVybiBmYWxzZTsKLX0KLQotdm9pZCBNZWRpYVN0cmVhbUNlbnRlck1hYzo6ZGlkU3Rv
cExvY2FsTWVkaWFTdHJlYW0oTWVkaWFTdHJlYW1EZXNjcmlwdG9yKiBzdHJlYW0pCi17Ci0gICAg
ZW5kTG9jYWxNZWRpYVN0cmVhbShzdHJlYW0pOwotfQotCi12b2lkIE1lZGlhU3RyZWFtQ2VudGVy
TWFjOjpkaWRDcmVhdGVNZWRpYVN0cmVhbShNZWRpYVN0cmVhbURlc2NyaXB0b3IqKQotewotICAg
IG5vdEltcGxlbWVudGVkKCk7Ci19Ci0KIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlm
IC8vIEVOQUJMRShNRURJQV9TVFJFQU0pCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
ZWRpYXN0cmVhbS9tYWMvTWVkaWFTdHJlYW1DZW50ZXJNYWMuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvTWVkaWFTdHJlYW1DZW50ZXJNYWMu
aAkocmV2aXNpb24gMTU2OTQ2KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJl
YW0vbWFjL01lZGlhU3RyZWFtQ2VudGVyTWFjLmgJKHdvcmtpbmcgY29weSkKQEAgLTM1LDI5ICsz
NSwyMCBAQAogCiAjaW5jbHVkZSAiTWVkaWFTdHJlYW1DZW50ZXIuaCIKIAorI2luY2x1ZGUgIk1l
ZGlhU3RyZWFtU291cmNlLmgiCiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KICNpbmNsdWRl
IDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBN
ZWRpYVN0cmVhbURlc2NyaXB0b3I7Ci1jbGFzcyBNZWRpYVN0cmVhbVNvdXJjZTsKLWNsYXNzIE1l
ZGlhU3RyZWFtU291cmNlc1F1ZXJ5Q2xpZW50OwotCiBjbGFzcyBNZWRpYVN0cmVhbUNlbnRlck1h
YyBGSU5BTCA6IHB1YmxpYyBNZWRpYVN0cmVhbUNlbnRlciB7CiBwdWJsaWM6CiAgICAgTWVkaWFT
dHJlYW1DZW50ZXJNYWMoKTsKICAgICB+TWVkaWFTdHJlYW1DZW50ZXJNYWMoKTsKIAotICAgIC8v
IE1lZGlhU3RyZWFtQ2VudGVyCiAgICAgdmlydHVhbCB2b2lkIHZhbGlkYXRlUmVxdWVzdENvbnN0
cmFpbnRzKFBhc3NSZWZQdHI8TWVkaWFTdHJlYW1DcmVhdGlvbkNsaWVudD4sIFBhc3NSZWZQdHI8
TWVkaWFDb25zdHJhaW50cz4gYXVkaW9Db25zdHJhaW50cywgUGFzc1JlZlB0cjxNZWRpYUNvbnN0
cmFpbnRzPiB2aWRlb0NvbnN0cmFpbnRzKTsKICAgICB2aXJ0dWFsIHZvaWQgY3JlYXRlTWVkaWFT
dHJlYW0oUGFzc1JlZlB0cjxNZWRpYVN0cmVhbUNyZWF0aW9uQ2xpZW50PiwgUGFzc1JlZlB0cjxN
ZWRpYUNvbnN0cmFpbnRzPiBhdWRpb0NvbnN0cmFpbnRzLCBQYXNzUmVmUHRyPE1lZGlhQ29uc3Ry
YWludHM+IHZpZGVvQ29uc3RyYWludHMpOwogICAgIHZpcnR1YWwgYm9vbCBnZXRNZWRpYVN0cmVh
bVRyYWNrU291cmNlcyhQYXNzUmVmUHRyPE1lZGlhU3RyZWFtVHJhY2tTb3VyY2VzUmVxdWVzdENs
aWVudD4pIE9WRVJSSURFOwotICAgIHZpcnR1YWwgdm9pZCBkaWRTZXRNZWRpYVN0cmVhbVRyYWNr
RW5hYmxlZChNZWRpYVN0cmVhbVNvdXJjZSopIE9WRVJSSURFOwotICAgIHZpcnR1YWwgYm9vbCBk
aWRBZGRNZWRpYVN0cmVhbVRyYWNrKE1lZGlhU3RyZWFtU291cmNlKikgT1ZFUlJJREU7Ci0gICAg
dmlydHVhbCBib29sIGRpZFJlbW92ZU1lZGlhU3RyZWFtVHJhY2soTWVkaWFTdHJlYW1Tb3VyY2Uq
KSBPVkVSUklERTsKLSAgICB2aXJ0dWFsIHZvaWQgZGlkU3RvcExvY2FsTWVkaWFTdHJlYW0oTWVk
aWFTdHJlYW1EZXNjcmlwdG9yKikgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCB2b2lkIGRpZENyZWF0
ZU1lZGlhU3RyZWFtKE1lZGlhU3RyZWFtRGVzY3JpcHRvciopIE9WRVJSSURFOwogfTsKIAogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9N
b2NrTWVkaWFTdHJlYW1DZW50ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21vY2svTW9ja01lZGlhU3RyZWFtQ2VudGVyLmNwcAkocmV2aXNpb24gMTU2OTQ2KQor
KysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9Nb2NrTWVkaWFTdHJlYW1DZW50ZXIuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0zMiwxMiArMzIsOTcgQEAKICNpbmNsdWRlICJNZWRpYVN0cmVh
bS5oIgogI2luY2x1ZGUgIk1lZGlhU3RyZWFtQ3JlYXRpb25DbGllbnQuaCIKICNpbmNsdWRlICJN
ZWRpYVN0cmVhbURlc2NyaXB0b3IuaCIKKyNpbmNsdWRlICJNZWRpYVN0cmVhbVNvdXJjZS5oIgor
I2luY2x1ZGUgIk1lZGlhU3RyZWFtU291cmNlQ2FwYWJpbGl0aWVzLmgiCiAjaW5jbHVkZSAiTWVk
aWFTdHJlYW1UcmFjay5oIgogI2luY2x1ZGUgIk1lZGlhU3RyZWFtVHJhY2tTb3VyY2VzUmVxdWVz
dENsaWVudC5oIgotI2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCisjaW5jbHVkZSA8d3RmL05l
dmVyRGVzdHJveWVkLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgTW9ja1NvdXJj
ZSA6IHB1YmxpYyBNZWRpYVN0cmVhbVNvdXJjZSB7CitwdWJsaWM6CisgICAgTW9ja1NvdXJjZShj
b25zdCBBdG9taWNTdHJpbmcmIGlkLCBjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUsIE1lZGlhU3Ry
ZWFtU291cmNlOjpUeXBlIHR5cGUpCisgICAgICAgIDogTWVkaWFTdHJlYW1Tb3VyY2UoaWQsIHR5
cGUsIG5hbWUpCisgICAgeworICAgIH0KKworICAgIHZpcnR1YWwgfk1vY2tTb3VyY2UoKSB7IH0K
KworICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxNZWRpYVN0cmVhbVNvdXJjZUNhcGFiaWxpdGllcz4g
Y2FwYWJpbGl0aWVzKCkgY29uc3QgeyByZXR1cm4gbV9jYXBhYmlsaXRpZXM7IH0KKyAgICB2aXJ0
dWFsIGNvbnN0IE1lZGlhU3RyZWFtU291cmNlU3RhdGVzJiBzdGF0ZXMoKSB7IHJldHVybiBtX2N1
cnJlbnRTdGF0ZXM7IH0KKworICAgIFJlZlB0cjxNZWRpYVN0cmVhbVNvdXJjZUNhcGFiaWxpdGll
cz4gbV9jYXBhYmlsaXRpZXM7CisgICAgTWVkaWFTdHJlYW1Tb3VyY2VTdGF0ZXMgbV9jdXJyZW50
U3RhdGVzOworfTsKKyAgICAKK3R5cGVkZWYgSGFzaE1hcDxTdHJpbmcsIFJlZlB0cjxNb2NrU291
cmNlPj4gTW9ja1NvdXJjZU1hcDsKKworc3RhdGljIE1vY2tTb3VyY2VNYXAmIG1vY2tTb3VyY2VN
YXAoKQoreworICAgIERFRklORV9TVEFUSUNfTE9DQUwoTW9ja1NvdXJjZU1hcCwgbW9ja1NvdXJj
ZU1hcCwgKCkpOworICAgIHJldHVybiBtb2NrU291cmNlTWFwOworfQorCitzdGF0aWMgY29uc3Qg
QXRvbWljU3RyaW5nJiBtb2NrQXVkaW9Tb3VyY2VJRCgpCit7CisgICAgc3RhdGljIE5ldmVyRGVz
dHJveWVkPEF0b21pY1N0cmluZz4gaWQoIjIzOWMyNGIxLTJiMTUtMTFlMy04MjI0LTA4MDAyMDBj
OWE2NiIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOworICAgIHJldHVybiBp
ZDsKK30KKworc3RhdGljIGNvbnN0IEF0b21pY1N0cmluZyYgbW9ja1ZpZGVvU291cmNlSUQoKQor
eworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxBdG9taWNTdHJpbmc+IGlkKCIyMzljMjRiMC0y
YjE1LTExZTMtODIyNC0wODAwMjAwYzlhNjYiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21M
aXRlcmFsKTsKKyAgICByZXR1cm4gaWQ7Cit9CisKK3N0YXRpYyB2b2lkIGluaXRpYWxpemVNb2Nr
U291cmNlcygpCit7CisgICAgUmVmUHRyPE1vY2tTb3VyY2U+IG1vY2tTb3VyY2UxID0gYWRvcHRS
ZWYobmV3IE1vY2tTb3VyY2UobW9ja1ZpZGVvU291cmNlSUQoKSwgIk1vY2sgdmlkZW8gZGV2aWNl
IiwgTWVkaWFTdHJlYW1Tb3VyY2U6OlZpZGVvKSk7CisgICAgbW9ja1NvdXJjZTEtPm1fY2FwYWJp
bGl0aWVzID0gTWVkaWFTdHJlYW1Tb3VyY2VDYXBhYmlsaXRpZXM6OmNyZWF0ZSgpOworICAgIG1v
Y2tTb3VyY2UxLT5tX2NhcGFiaWxpdGllcy0+c2V0U291cmNlSWQobW9ja1NvdXJjZTEtPmlkKCkp
OworICAgIG1vY2tTb3VyY2UxLT5tX2NhcGFiaWxpdGllcy0+YWRkU291cmNlVHlwZShNZWRpYVN0
cmVhbVNvdXJjZVN0YXRlczo6Q2FtZXJhKTsKKyAgICBtb2NrU291cmNlMS0+bV9jYXBhYmlsaXRp
ZXMtPmFkZFNvdXJjZVR5cGUoTWVkaWFTdHJlYW1Tb3VyY2VTdGF0ZXM6Ok1pY3JvcGhvbmUpOwor
ICAgIG1vY2tTb3VyY2UxLT5tX2NhcGFiaWxpdGllcy0+YWRkRmFjaW5nTW9kZShNZWRpYVN0cmVh
bVNvdXJjZVN0YXRlczo6VXNlcik7CisgICAgbW9ja1NvdXJjZTEtPm1fY2FwYWJpbGl0aWVzLT5h
ZGRGYWNpbmdNb2RlKE1lZGlhU3RyZWFtU291cmNlU3RhdGVzOjpFbnZpcm9ubWVudCk7CisgICAg
bW9ja1NvdXJjZTEtPm1fY2FwYWJpbGl0aWVzLT5zZXRXaWR0aFJhbmdlKE1lZGlhU3RyZWFtU291
cmNlQ2FwYWJpbGl0eVJhbmdlKDMyMFVMLCAxOTIwVUwsIHRydWUpKTsKKyAgICBtb2NrU291cmNl
MS0+bV9jYXBhYmlsaXRpZXMtPnNldEhlaWdodFJhbmdlKE1lZGlhU3RyZWFtU291cmNlQ2FwYWJp
bGl0eVJhbmdlKDI0MFVMLCAxMDgwVUwsIHRydWUpKTsKKyAgICBtb2NrU291cmNlMS0+bV9jYXBh
YmlsaXRpZXMtPnNldEZyYW1lUmF0ZVJhbmdlKE1lZGlhU3RyZWFtU291cmNlQ2FwYWJpbGl0eVJh
bmdlKDE1LjBmLCA2MC4wZiwgdHJ1ZSkpOworICAgIG1vY2tTb3VyY2UxLT5tX2NhcGFiaWxpdGll
cy0+c2V0QXNwZWN0UmF0aW9SYW5nZShNZWRpYVN0cmVhbVNvdXJjZUNhcGFiaWxpdHlSYW5nZSg0
IC8gMy4wZiwgMTYgLyA5LjBmLCB0cnVlKSk7CisgICAgbW9ja1NvdXJjZTEtPm1fY2FwYWJpbGl0
aWVzLT5zZXRWb2x1bWVSYW5nZShNZWRpYVN0cmVhbVNvdXJjZUNhcGFiaWxpdHlSYW5nZSgxMFVM
LCA5MFVMLCB0cnVlKSk7CisKKyAgICBtb2NrU291cmNlMS0+bV9jdXJyZW50U3RhdGVzLnNvdXJj
ZVR5cGUgPSBNZWRpYVN0cmVhbVNvdXJjZVN0YXRlczo6Q2FtZXJhOworICAgIG1vY2tTb3VyY2Ux
LT5tX2N1cnJlbnRTdGF0ZXMuc291cmNlSWQgPSBtb2NrU291cmNlMS0+aWQoKTsKKyAgICBtb2Nr
U291cmNlMS0+bV9jdXJyZW50U3RhdGVzLmZhY2luZ01vZGUgPSBNZWRpYVN0cmVhbVNvdXJjZVN0
YXRlczo6VXNlcjsKKyAgICBtb2NrU291cmNlMS0+bV9jdXJyZW50U3RhdGVzLndpZHRoID0gMTky
MDsKKyAgICBtb2NrU291cmNlMS0+bV9jdXJyZW50U3RhdGVzLmhlaWdodCA9IDEwODA7CisgICAg
bW9ja1NvdXJjZTEtPm1fY3VycmVudFN0YXRlcy5mcmFtZVJhdGUgPSAzMDsKKyAgICBtb2NrU291
cmNlMS0+bV9jdXJyZW50U3RhdGVzLmFzcGVjdFJhdGlvID0gMTYgLyA5LjBmOworICAgIG1vY2tT
b3VyY2UxLT5tX2N1cnJlbnRTdGF0ZXMudm9sdW1lID0gNzA7CisgICAgbW9ja1NvdXJjZU1hcCgp
LmFkZChtb2NrU291cmNlMS0+aWQoKSwgbW9ja1NvdXJjZTEucmVsZWFzZSgpKTsKKworICAgIFJl
ZlB0cjxNb2NrU291cmNlPiBtb2NrU291cmNlMiA9IGFkb3B0UmVmKG5ldyBNb2NrU291cmNlKG1v
Y2tBdWRpb1NvdXJjZUlEKCksICJNb2NrIGF1ZGlvIGRldmljZSIsIE1lZGlhU3RyZWFtU291cmNl
OjpBdWRpbykpOworICAgIG1vY2tTb3VyY2UyLT5tX2NhcGFiaWxpdGllcyA9IE1lZGlhU3RyZWFt
U291cmNlQ2FwYWJpbGl0aWVzOjpjcmVhdGUoKTsKKyAgICBtb2NrU291cmNlMi0+bV9jYXBhYmls
aXRpZXMtPnNldFNvdXJjZUlkKG1vY2tTb3VyY2UyLT5pZCgpKTsKKyAgICBtb2NrU291cmNlMi0+
bV9jYXBhYmlsaXRpZXMtPnNldFZvbHVtZVJhbmdlKE1lZGlhU3RyZWFtU291cmNlQ2FwYWJpbGl0
eVJhbmdlKDBVTCwgMTAwVUwsIHRydWUpKTsKKworICAgIG1vY2tTb3VyY2UyLT5tX2N1cnJlbnRT
dGF0ZXMuc291cmNlVHlwZSA9IE1lZGlhU3RyZWFtU291cmNlU3RhdGVzOjpNaWNyb3Bob25lOwor
ICAgIG1vY2tTb3VyY2UyLT5tX2N1cnJlbnRTdGF0ZXMuc291cmNlSWQgPSBtb2NrU291cmNlMi0+
aWQoKTsKKyAgICBtb2NrU291cmNlMi0+bV9jdXJyZW50U3RhdGVzLnZvbHVtZSA9IDUwOworICAg
IG1vY2tTb3VyY2VNYXAoKS5hZGQobW9ja1NvdXJjZTItPmlkKCksIG1vY2tTb3VyY2UyLnJlbGVh
c2UoKSk7Cit9CisKK3ZvaWQgTW9ja01lZGlhU3RyZWFtQ2VudGVyOjpyZWdpc3Rlck1vY2tNZWRp
YVN0cmVhbUNlbnRlcigpCit7CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChNb2NrTWVkaWFTdHJl
YW1DZW50ZXIsIGNlbnRlciwgKCkpOworICAgIHN0YXRpYyBib29sIHJlZ2lzdGVyZWQgPSBmYWxz
ZTsKKyAgICBpZiAoIXJlZ2lzdGVyZWQpIHsKKyAgICAgICAgcmVnaXN0ZXJlZCA9IHRydWU7Cisg
ICAgICAgIE1lZGlhU3RyZWFtQ2VudGVyOjpzZXRTaGFyZWRTdHJlYW1DZW50ZXIoJmNlbnRlcik7
CisgICAgICAgIGluaXRpYWxpemVNb2NrU291cmNlcygpOworICAgIH0KK30KKwogc3RhdGljIGJv
b2wgaXNTdXBwb3J0ZWRNb2NrQ29uc3RyYWludChjb25zdCBTdHJpbmcmIGNvbnN0cmFpbnROYW1l
KQogewogICAgIHJldHVybiBub3RGb3VuZCAhPSBjb25zdHJhaW50TmFtZS5maW5kKCJfYW5kX3N1
cHBvcnRlZF8iKTsKQEAgLTc1LDE2ICsxNjAsNiBAQCBzdGF0aWMgU3RyaW5nIHZlcmlmeUNvbnN0
cmFpbnRzKE1lZGlhQ29uCiAgICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7CiB9CiAKLXZvaWQgTW9j
a01lZGlhU3RyZWFtQ2VudGVyOjpyZWdpc3Rlck1vY2tNZWRpYVN0cmVhbUNlbnRlcigpCi17Ci0g
ICAgREVGSU5FX1NUQVRJQ19MT0NBTChNb2NrTWVkaWFTdHJlYW1DZW50ZXIsIGNlbnRlciwgKCkp
OwotICAgIHN0YXRpYyBib29sIHJlZ2lzdGVyZWQgPSBmYWxzZTsKLSAgICBpZiAoIXJlZ2lzdGVy
ZWQpIHsKLSAgICAgICAgcmVnaXN0ZXJlZCA9IHRydWU7Ci0gICAgICAgIE1lZGlhU3RyZWFtQ2Vu
dGVyOjpzZXRTaGFyZWRTdHJlYW1DZW50ZXIoJmNlbnRlcik7Ci0gICAgfQotfQotCiB2b2lkIE1v
Y2tNZWRpYVN0cmVhbUNlbnRlcjo6dmFsaWRhdGVSZXF1ZXN0Q29uc3RyYWludHMoUGFzc1JlZlB0
cjxNZWRpYVN0cmVhbUNyZWF0aW9uQ2xpZW50PiBwcnBRdWVyeUNsaWVudCwgUGFzc1JlZlB0cjxN
ZWRpYUNvbnN0cmFpbnRzPiBhdWRpb0NvbnN0cmFpbnRzLCBQYXNzUmVmUHRyPE1lZGlhQ29uc3Ry
YWludHM+IHZpZGVvQ29uc3RyYWludHMpCiB7CiAgICAgUmVmUHRyPE1lZGlhU3RyZWFtQ3JlYXRp
b25DbGllbnQ+IGNsaWVudCA9IHBycFF1ZXJ5Q2xpZW50OwpAQCAtMTE4LDYgKzE5Myw3IEBAIHZv
aWQgTW9ja01lZGlhU3RyZWFtQ2VudGVyOjpjcmVhdGVNZWRpYVMKICAgICAKICAgICBWZWN0b3I8
UmVmUHRyPE1lZGlhU3RyZWFtU291cmNlPj4gYXVkaW9Tb3VyY2VzOwogICAgIFZlY3RvcjxSZWZQ
dHI8TWVkaWFTdHJlYW1Tb3VyY2U+PiB2aWRlb1NvdXJjZXM7CisgICAgTW9ja1NvdXJjZU1hcCYg
bWFwID0gbW9ja1NvdXJjZU1hcCgpOwogCiAgICAgaWYgKGF1ZGlvQ29uc3RyYWludHMpIHsKICAg
ICAgICAgU3RyaW5nIGludmFsaWRRdWVyeSA9IHZlcmlmeUNvbnN0cmFpbnRzKGF1ZGlvQ29uc3Ry
YWludHMuZ2V0KCkpOwpAQCAtMTI3LDcgKzIwMywxMSBAQCB2b2lkIE1vY2tNZWRpYVN0cmVhbUNl
bnRlcjo6Y3JlYXRlTWVkaWFTCiAgICAgICAgIH0KIAogICAgICAgICBpZiAoYXVkaW9Db25zdHJh
aW50cykgewotICAgICAgICAgICAgUmVmUHRyPE1lZGlhU3RyZWFtU291cmNlPiBhdWRpb1NvdXJj
ZSA9IE1lZGlhU3RyZWFtU291cmNlOjpjcmVhdGUoZW1wdHlTdHJpbmcoKSwgTWVkaWFTdHJlYW1T
b3VyY2U6OkF1ZGlvLCAiTW9jayBhdWRpbyBkZXZpY2UiKTsKKyAgICAgICAgICAgIE1vY2tTb3Vy
Y2VNYXA6Oml0ZXJhdG9yIGl0ID0gbWFwLmZpbmQobW9ja0F1ZGlvU291cmNlSUQoKSk7CisgICAg
ICAgICAgICBBU1NFUlQoaXQgIT0gbWFwLmVuZCgpKTsKKworICAgICAgICAgICAgUmVmUHRyPE1l
ZGlhU3RyZWFtU291cmNlPiBhdWRpb1NvdXJjZSA9IGl0LT52YWx1ZTsKKyAgICAgICAgICAgIGF1
ZGlvU291cmNlLT5yZXNldCgpOwogICAgICAgICAgICAgYXVkaW9Tb3VyY2UtPnNldFJlYWR5U3Rh
dGUoTWVkaWFTdHJlYW1Tb3VyY2U6OkxpdmUpOwogICAgICAgICAgICAgYXVkaW9Tb3VyY2VzLmFw
cGVuZChhdWRpb1NvdXJjZS5yZWxlYXNlKCkpOwogICAgICAgICB9CkBAIC0xNDEsNyArMjIxLDEx
IEBAIHZvaWQgTW9ja01lZGlhU3RyZWFtQ2VudGVyOjpjcmVhdGVNZWRpYVMKICAgICAgICAgfQog
CiAgICAgICAgIGlmICh2aWRlb0NvbnN0cmFpbnRzKSB7Ci0gICAgICAgICAgICBSZWZQdHI8TWVk
aWFTdHJlYW1Tb3VyY2U+IHZpZGVvU291cmNlID0gTWVkaWFTdHJlYW1Tb3VyY2U6OmNyZWF0ZShl
bXB0eVN0cmluZygpLCBNZWRpYVN0cmVhbVNvdXJjZTo6VmlkZW8sICJNb2NrIHZpZGVvIGRldmlj
ZSIpOworICAgICAgICAgICAgTW9ja1NvdXJjZU1hcDo6aXRlcmF0b3IgaXQgPSBtYXAuZmluZCht
b2NrVmlkZW9Tb3VyY2VJRCgpKTsKKyAgICAgICAgICAgIEFTU0VSVChpdCAhPSBtYXAuZW5kKCkp
OworCisgICAgICAgICAgICBSZWZQdHI8TWVkaWFTdHJlYW1Tb3VyY2U+IHZpZGVvU291cmNlID0g
aXQtPnZhbHVlOworICAgICAgICAgICAgdmlkZW9Tb3VyY2UtPnJlc2V0KCk7CiAgICAgICAgICAg
ICB2aWRlb1NvdXJjZS0+c2V0UmVhZHlTdGF0ZShNZWRpYVN0cmVhbVNvdXJjZTo6TGl2ZSk7CiAg
ICAgICAgICAgICB2aWRlb1NvdXJjZXMuYXBwZW5kKHZpZGVvU291cmNlLnJlbGVhc2UoKSk7CiAg
ICAgICAgIH0KQEAgLTE1MywzOSArMjM3LDIwIEBAIHZvaWQgTW9ja01lZGlhU3RyZWFtQ2VudGVy
OjpjcmVhdGVNZWRpYVMKIGJvb2wgTW9ja01lZGlhU3RyZWFtQ2VudGVyOjpnZXRNZWRpYVN0cmVh
bVRyYWNrU291cmNlcyhQYXNzUmVmUHRyPE1lZGlhU3RyZWFtVHJhY2tTb3VyY2VzUmVxdWVzdENs
aWVudD4gcHJwQ2xpZW50KQogewogICAgIFJlZlB0cjxNZWRpYVN0cmVhbVRyYWNrU291cmNlc1Jl
cXVlc3RDbGllbnQ+IHJlcXVlc3RDbGllbnQgPSBwcnBDbGllbnQ7Ci0gICAgVmVjdG9yPFJlZlB0
cjxUcmFja1NvdXJjZUluZm8+PiBzb3VyY2VzKDIpOworICAgIFZlY3RvcjxSZWZQdHI8VHJhY2tT
b3VyY2VJbmZvPj4gc291cmNlczsKIAotICAgIHNvdXJjZXNbMF0gPSBUcmFja1NvdXJjZUluZm86
OmNyZWF0ZSgiTW9ja19hdWRpb19kZXZpY2VfSUQiLCBUcmFja1NvdXJjZUluZm86OkF1ZGlvLCAi
TW9jayBhdWRpbyBkZXZpY2UiKTsKLSAgICBzb3VyY2VzWzFdID0gVHJhY2tTb3VyY2VJbmZvOjpj
cmVhdGUoIk1vY2tfdmlkZW9fZGV2aWNlX0lEIiwgVHJhY2tTb3VyY2VJbmZvOjpWaWRlbywgIk1v
Y2sgdmlkZW8gZGV2aWNlIik7Ci0KLSAgICByZXF1ZXN0Q2xpZW50LT5kaWRDb21wbGV0ZVJlcXVl
c3Qoc291cmNlcyk7Ci0gICAgcmV0dXJuIHRydWU7Ci19CisgICAgTW9ja1NvdXJjZU1hcCYgbWFw
ID0gbW9ja1NvdXJjZU1hcCgpOworICAgIE1vY2tTb3VyY2VNYXA6Oml0ZXJhdG9yIGVuZCA9IG1h
cC5lbmQoKTsKKyAgICBmb3IgKE1vY2tTb3VyY2VNYXA6Oml0ZXJhdG9yIGl0ID0gbWFwLmJlZ2lu
KCk7IGl0ICE9IGVuZDsgKytpdCkgeworICAgICAgICBNb2NrU291cmNlKiBzb3VyY2UgPSBpdC0+
dmFsdWUuZ2V0KCk7CiAKLXZvaWQgTW9ja01lZGlhU3RyZWFtQ2VudGVyOjpkaWRTZXRNZWRpYVN0
cmVhbVRyYWNrRW5hYmxlZChNZWRpYVN0cmVhbVNvdXJjZSogc291cmNlKQotewotICAgIHNvdXJj
ZS0+c2V0UmVhZHlTdGF0ZShNZWRpYVN0cmVhbVNvdXJjZTo6TGl2ZSk7Ci19Ci0KLWJvb2wgTW9j
a01lZGlhU3RyZWFtQ2VudGVyOjpkaWRBZGRNZWRpYVN0cmVhbVRyYWNrKE1lZGlhU3RyZWFtU291
cmNlKikKLXsKLSAgICByZXR1cm4gdHJ1ZTsKLX0KKyAgICAgICAgc291cmNlc1swXSA9IFRyYWNr
U291cmNlSW5mbzo6Y3JlYXRlKHNvdXJjZS0+aWQoKSwgc291cmNlLT50eXBlKCkgPT0gTWVkaWFT
dHJlYW1Tb3VyY2U6OlZpZGVvID8gVHJhY2tTb3VyY2VJbmZvOjpWaWRlbyA6IFRyYWNrU291cmNl
SW5mbzo6QXVkaW8sIHNvdXJjZS0+bmFtZSgpKTsKKyAgICB9CiAKLWJvb2wgTW9ja01lZGlhU3Ry
ZWFtQ2VudGVyOjpkaWRSZW1vdmVNZWRpYVN0cmVhbVRyYWNrKE1lZGlhU3RyZWFtU291cmNlKikK
LXsKKyAgICByZXF1ZXN0Q2xpZW50LT5kaWRDb21wbGV0ZVJlcXVlc3Qoc291cmNlcyk7CiAgICAg
cmV0dXJuIHRydWU7CiB9CiAKLXZvaWQgTW9ja01lZGlhU3RyZWFtQ2VudGVyOjpkaWRTdG9wTG9j
YWxNZWRpYVN0cmVhbShNZWRpYVN0cmVhbURlc2NyaXB0b3IqIHN0cmVhbSkKLXsKLSAgICBlbmRM
b2NhbE1lZGlhU3RyZWFtKHN0cmVhbSk7Ci19Ci0KLXZvaWQgTW9ja01lZGlhU3RyZWFtQ2VudGVy
OjpkaWRDcmVhdGVNZWRpYVN0cmVhbShNZWRpYVN0cmVhbURlc2NyaXB0b3IqKQotewotfQotCiB9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBFTkFCTEUoTUVESUFfU1RSRUFNKQpJ
bmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9Nb2NrTWVkaWFTdHJlYW1DZW50ZXIu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01vY2tNZWRpYVN0
cmVhbUNlbnRlci5oCShyZXZpc2lvbiAxNTY5NDYpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tb2NrL01vY2tNZWRpYVN0cmVhbUNlbnRlci5oCSh3b3JraW5nIGNvcHkpCkBAIC00MCwxMSAr
NDAsNiBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHZhbGlkYXRlUmVxdWVzdENvbnN0cmFp
bnRzKFBhc3NSZWZQdHI8TWVkaWFTdHJlYW1DcmVhdGlvbkNsaWVudD4sIFBhc3NSZWZQdHI8TWVk
aWFDb25zdHJhaW50cz4gYXVkaW9Db25zdHJhaW50cywgUGFzc1JlZlB0cjxNZWRpYUNvbnN0cmFp
bnRzPiB2aWRlb0NvbnN0cmFpbnRzKTsKICAgICB2aXJ0dWFsIHZvaWQgY3JlYXRlTWVkaWFTdHJl
YW0oUGFzc1JlZlB0cjxNZWRpYVN0cmVhbUNyZWF0aW9uQ2xpZW50PiwgUGFzc1JlZlB0cjxNZWRp
YUNvbnN0cmFpbnRzPiBhdWRpb0NvbnN0cmFpbnRzLCBQYXNzUmVmUHRyPE1lZGlhQ29uc3RyYWlu
dHM+IHZpZGVvQ29uc3RyYWludHMpOwogICAgIHZpcnR1YWwgYm9vbCBnZXRNZWRpYVN0cmVhbVRy
YWNrU291cmNlcyhQYXNzUmVmUHRyPE1lZGlhU3RyZWFtVHJhY2tTb3VyY2VzUmVxdWVzdENsaWVu
dD4pIE9WRVJSSURFOwotICAgIHZpcnR1YWwgdm9pZCBkaWRTZXRNZWRpYVN0cmVhbVRyYWNrRW5h
YmxlZChNZWRpYVN0cmVhbVNvdXJjZSopIE9WRVJSSURFOwotICAgIHZpcnR1YWwgYm9vbCBkaWRB
ZGRNZWRpYVN0cmVhbVRyYWNrKE1lZGlhU3RyZWFtU291cmNlKikgT1ZFUlJJREU7Ci0gICAgdmly
dHVhbCBib29sIGRpZFJlbW92ZU1lZGlhU3RyZWFtVHJhY2soTWVkaWFTdHJlYW1Tb3VyY2UqKSBP
VkVSUklERTsKLSAgICB2aXJ0dWFsIHZvaWQgZGlkU3RvcExvY2FsTWVkaWFTdHJlYW0oTWVkaWFT
dHJlYW1EZXNjcmlwdG9yKikgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCB2b2lkIGRpZENyZWF0ZU1l
ZGlhU3RyZWFtKE1lZGlhU3RyZWFtRGVzY3JpcHRvciopIE9WRVJSSURFOwogCiBwcml2YXRlOgog
ICAgIE1vY2tNZWRpYVN0cmVhbUNlbnRlcigpIHsgfQpJbmRleDogTGF5b3V0VGVzdHMvQ2hhbmdl
TG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL0NoYW5nZUxvZwkocmV2aXNpb24gMTU3MDA3
KQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTIg
QEAKKzIwMTMtMTAtMDYgIEVyaWMgQ2FybHNvbiAgPGVyaWMuY2FybHNvbkBhcHBsZS5jb20+CisK
KyAgICAgICAgW01lZGlhU3RyZWFtIEFQSV0gdXBkYXRlIE1lZGlhU3RyZWFtVHJhY2sgb2JqZWN0
IHRvIG1hdGNoIHNwZWMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTEyMTk0MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgICogZmFzdC9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVRyYWNrLmh0bWw6CisKIDIwMTMt
MTAtMDYgIE1paG5lYSBPdmlkZW5pZSAgPG1paG5lYUBhZG9iZS5jb20+CiAKICAgICAgICAgW0NT
U1JlZ2lvbnNdIFJlbmFtZSBwYXJzaW5nIHRlc3RzIHRvIG1hdGNoIGN1cnJlbnQgY3NzIHByb3Bl
cnRpZXMKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1UcmFj
ay5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvbWVkaWFzdHJlYW0vTWVkaWFT
dHJlYW1UcmFjay5odG1sCShyZXZpc2lvbiAxNTY5NDYpCisrKyBMYXlvdXRUZXN0cy9mYXN0L21l
ZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJhY2suaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMSw3OSAr
MSwxNzAgQEAKIDwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vSUVURi8vRFREIEhUTUwvL0VOIj4K
IDxodG1sPgotPGhlYWQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcHJl
LmpzIj48L3NjcmlwdD4KLTwvaGVhZD4KLTxib2R5PgotPHAgaWQ9ImRlc2NyaXB0aW9uIj48L3A+
Ci08ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KLTxzY3JpcHQ+Ci1kZXNjcmlwdGlvbigiVGVzdHMg
TWVkaWFTdHJlYW1UcmFjayBjYWxsYmFja3MuIik7Ci0KLS8vIE5vdGUgdGhhdCB0aGUgYmVsb3cg
YmVoYXZpb3VyIGRvZXNuJ3QgcmVmbGVjdCBob3cgaXQgd29ya3Mgb3V0c2lkZSBvZiBMYXlvdXRU
ZXN0cy4KLS8vIFRoZSB1bmRlcmx5aW5nIG1vY2sgaXMgbW9kaWZpZWQgdG8gdHJpZ2dlciB0aGUg
ZXZlbnRzIHdoZW4gY2VydGFpbiBmdW5jdGlvbnMgYXJlIGNhbGxlZC4KLS8vIFRoaXMgbW9kaWZp
ZWQgYmVoYXZpb3VyIGFsbG93cyB1cyB0byB0ZXN0IHRoZSBNZWRpYVN0cmVhbVRyYWNrIGNsYXNz
IHByb3Blcmx5LgotCi12YXIgc3RyZWFtOwotdmFyIHRyYWNrOwotCi1mdW5jdGlvbiBlcnJvcigp
IHsKLSAgICB0ZXN0RmFpbGVkKCdTdHJlYW0gZ2VuZXJhdGlvbiBmYWlsZWQuJyk7Ci0gICAgZmlu
aXNoSlNUZXN0KCk7Ci19Ci0KLWZ1bmN0aW9uIGdldFVzZXJNZWRpYShjb25zdHJhaW50cywgY2Fs
bGJhY2spIHsKLSAgICB0cnkgewotICAgICAgICBuYXZpZ2F0b3Iud2Via2l0R2V0VXNlck1lZGlh
KGNvbnN0cmFpbnRzLCBjYWxsYmFjaywgZXJyb3IpOwotICAgIH0gY2F0Y2ggKGUpIHsKLSAgICAg
ICAgdGVzdEZhaWxlZCgnd2Via2l0R2V0VXNlck1lZGlhIHRocmV3IGV4Y2VwdGlvbiA6JyArIGUp
OwotICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKLSAgICB9Ci19Ci0KLWZ1bmN0aW9uIG9uVHJhY2tF
bmRlZCgpIHsKLSAgICB0ZXN0UGFzc2VkKCdUcmFjayBvbmVuZGVkIGNhbGxiYWNrIHN1Y2NlZWRl
ZC4nKTsKLQotICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygndHJhY2sucmVhZHlTdGF0ZScsICdl
bmRlZCcpOwotCi0gICAgZmluaXNoSlNUZXN0KCk7Ci19Ci0KLWZ1bmN0aW9uIG9uVHJhY2tVbm11
dGUoKSB7Ci0gICAgdGVzdFBhc3NlZCgnVHJhY2sgb251bm11dGUgY2FsbGJhY2sgc3VjY2VlZGVk
LicpOwotCi0gICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCd0cmFjay5yZWFkeVN0YXRlJywgJ2xp
dmUnKTsKLQotICAgIHN0cmVhbS5zdG9wKCk7Ci19Ci0KLWZ1bmN0aW9uIG9uVHJhY2tNdXRlKCkg
ewotICAgIHRlc3RQYXNzZWQoJ1RyYWNrIG9ubXV0ZSBjYWxsYmFjayBzdWNjZWVkZWQuJyk7Ci0K
LSAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoJ3RyYWNrLnJlYWR5U3RhdGUnLCAnbXV0ZWQnKTsK
LQotICAgIHRyYWNrLmVuYWJsZWQgPSB0cnVlOwotfQotCi1mdW5jdGlvbiBnb3RTdHJlYW0ocykg
ewotICAgIHRlc3RQYXNzZWQoJ2dldFVzZXJNZWRpYSBzdWNjZWVkZWQuJyk7Ci0KLSAgICBzdHJl
YW0gPSBzOwotICAgIHRyYWNrID0gc3RyZWFtLmdldFZpZGVvVHJhY2tzKClbMF07Ci0KLSAgICBz
aG91bGRCZUVxdWFsVG9TdHJpbmcoJ3RyYWNrLnJlYWR5U3RhdGUnLCAnbGl2ZScpOwotCi0gICAg
dHJhY2sub251bm11dGUgPSBvblRyYWNrVW5tdXRlOwotICAgIHRyYWNrLm9ubXV0ZSA9IG9uVHJh
Y2tNdXRlOwotICAgIHRyYWNrLm9uZW5kZWQgPSBvblRyYWNrRW5kZWQ7Ci0KLSAgICB0cmFjay5l
bmFibGVkID0gZmFsc2U7Ci19Ci0KLWdldFVzZXJNZWRpYSh7YXVkaW86dHJ1ZSwgdmlkZW86dHJ1
ZX0sIGdvdFN0cmVhbSk7Ci0KLXdpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKLXdpbmRvdy5z
dWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOwotPC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4v
cmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Ci08L2JvZHk+CisgICAgPGhlYWQ+
CisgICAgICAgIDxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwv
c2NyaXB0PgorICAgICAgICA8c2NyaXB0PgorICAgICAgICAgICAgdmFyIG1lZGlhU3RyZWFtOwor
ICAgICAgICAgICAgdmFyIHZpZGVvVHJhY2s7CisgICAgICAgICAgICB2YXIgdmlkZW9UcmFjazI7
CisgICAgICAgICAgICB2YXIgYXVkaW9UcmFjazsKKyAgICAgICAgICAgIAorICAgICAgICAgICAg
ZnVuY3Rpb24gZXJyb3IoKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHRlc3RGYWls
ZWQoJ1N0cmVhbSBnZW5lcmF0aW9uIGZhaWxlZC4nKTsKKyAgICAgICAgICAgICAgICBmaW5pc2hK
U1Rlc3QoKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgZnVuY3Rpb24gZ2V0VXNlck1l
ZGlhKGNvbnN0cmFpbnRzLCBjYWxsYmFjaykKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAg
ICB0cnkgeworICAgICAgICAgICAgICAgICAgICBuYXZpZ2F0b3Iud2Via2l0R2V0VXNlck1lZGlh
KGNvbnN0cmFpbnRzLCBjYWxsYmFjaywgZXJyb3IpOworICAgICAgICAgICAgICAgIH0gY2F0Y2gg
KGUpIHsKKyAgICAgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgnd2Via2l0R2V0VXNlck1lZGlh
IHRocmV3IGV4Y2VwdGlvbiA6JyArIGUpOworICAgICAgICAgICAgICAgICAgICBmaW5pc2hKU1Rl
c3QoKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgICAKKyAg
ICAgICAgICAgIGZ1bmN0aW9uIG9uVHJhY2tFbmRlZCgpCisgICAgICAgICAgICB7CisgICAgICAg
ICAgICAgICAgdGVzdFBhc3NlZCgnVHJhY2sgb25lbmRlZCBjYWxsYmFjayBzdWNjZWVkZWQuJyk7
CisgICAgICAgICAgICAgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCd2aWRlb1RyYWNrLnJlYWR5
U3RhdGUnLCAnZW5kZWQnKTsKKyAgICAgICAgICAgICAgICBkZWJ1ZygiIik7CisgICAgICAgICAg
ICAgICAgZmluaXNoSlNUZXN0KCk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGZ1bmN0
aW9uIG9uVHJhY2tTdGFydGVkKCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICB0ZXN0
UGFzc2VkKCdUcmFjayBvbnN0YXJ0ZWQgY2FsbGJhY2sgc3VjY2VlZGVkLicpOworICAgICAgICAg
ICAgICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygndmlkZW9UcmFjay5yZWFkeVN0YXRlJywgJ2xp
dmUnKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgZnVuY3Rpb24gb25UcmFja092ZXJD
b25zdHJhaW5lZCgpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgn
VHJhY2sgb25vdmVyY29uc3RyYWluZWQgY2FsbGJhY2sgc3VjY2VlZGVkLicpOworICAgICAgICAg
ICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBmdW5j
dGlvbiBvblRyYWNrVW5tdXRlKCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICB0ZXN0
UGFzc2VkKCdUcmFjayBvbnVubXV0ZSBjYWxsYmFjayBzdWNjZWVkZWQuJyk7CisgICAgICAgICAg
ICAgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCd2aWRlb1RyYWNrLnJlYWR5U3RhdGUnLCAnbGl2
ZScpOworICAgICAgICAgICAgICAgIHZpZGVvVHJhY2suc3RvcCgpOworICAgICAgICAgICAgfQor
CisgICAgICAgICAgICBmdW5jdGlvbiBvblRyYWNrTXV0ZSgpCisgICAgICAgICAgICB7CisgICAg
ICAgICAgICAgICAgdGVzdFBhc3NlZCgnVHJhY2sgb25tdXRlIGNhbGxiYWNrIHN1Y2NlZWRlZC4n
KTsKKyAgICAgICAgICAgICAgICBzaG91bGRCZUVxdWFsKCd2aWRlb1RyYWNrLm11dGVkJywgdHJ1
ZSk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGZ1bmN0aW9uIGxvZ0NhcGFiaWxpdHlS
YW5nZShuYW1lLCByYW5nZSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBkZWJ1Zygi
ICAiICsgbmFtZSk7CisgICAgICAgICAgICAgICAgZGVidWcoIiAgIG1pbiA6ICIgKyByYW5nZS5t
aW4pOworICAgICAgICAgICAgICAgIGRlYnVnKCIgICBtYXggOiAiICsgcmFuZ2UubWF4KTsKKyAg
ICAgICAgICAgICAgICBkZWJ1ZygiICAgc3VwcG9ydGVkIDogIiArIHJhbmdlLnN1cHBvcnRlZCk7
CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGZ1bmN0aW9uIGxvZ0NhcGFiaWxpdHlMaXN0
KG5hbWUsIGxpc3QpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgZGVidWcoIiAgIiAr
IG5hbWUpOworICAgICAgICAgICAgICAgIGZvciAoaSA9IDA7IGkgPCBsaXN0Lmxlbmd0aDsgaSsr
KQorICAgICAgICAgICAgICAgIGRlYnVnKCIgICAgIiArIGkgKyAiIDogIiArIGxpc3RbaV0pOwor
ICAgICAgICAgICAgfQorCisgICAgICAgICAgICBmdW5jdGlvbiBjaGVja0NhcGFiaWxpdGllcyh0
cmFjaykKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBkZWJ1ZygiY2hlY2tpbmcgdHJh
Y2suY2FwYWJpbGl0aWVzKCkiKTsKKyAgICAgICAgICAgICAgICBjYXBhYmlsaXRpZXMgPSB0cmFj
ay5jYXBhYmlsaXRpZXMoKTsKKyAgICAgICAgICAgICAgICBsb2dDYXBhYmlsaXR5TGlzdCgic291
cmNlSWQiLCBjYXBhYmlsaXRpZXMuc291cmNlSWQpOworICAgICAgICAgICAgICAgIGlmICh0cmFj
ay5raW5kID09ICJ2aWRlbyIpIHsKKyAgICAgICAgICAgICAgICAgICAgbG9nQ2FwYWJpbGl0eUxp
c3QoInNvdXJjZVR5cGUiLCBjYXBhYmlsaXRpZXMuc291cmNlVHlwZSk7CisgICAgICAgICAgICAg
ICAgICAgIGxvZ0NhcGFiaWxpdHlSYW5nZSgid2lkdGgiLCBjYXBhYmlsaXRpZXMud2lkdGgpOwor
ICAgICAgICAgICAgICAgICAgICBsb2dDYXBhYmlsaXR5UmFuZ2UoImhlaWdodCIsIGNhcGFiaWxp
dGllcy5oZWlnaHQpOworICAgICAgICAgICAgICAgICAgICBsb2dDYXBhYmlsaXR5UmFuZ2UoImZy
YW1lUmF0ZSIsIGNhcGFiaWxpdGllcy5mcmFtZVJhdGUpOworICAgICAgICAgICAgICAgICAgICBs
b2dDYXBhYmlsaXR5UmFuZ2UoImFzcGVjdFJhdGlvIiwgY2FwYWJpbGl0aWVzLmFzcGVjdFJhdGlv
KTsKKyAgICAgICAgICAgICAgICAgICAgbG9nQ2FwYWJpbGl0eUxpc3QoImZhY2luZ01vZGUiLCBj
YXBhYmlsaXRpZXMuZmFjaW5nTW9kZSk7CisgICAgICAgICAgICAgICAgfSBlbHNlCisgICAgICAg
ICAgICAgICAgICAgIGxvZ0NhcGFiaWxpdHlSYW5nZSgidm9sdW1lIiwgY2FwYWJpbGl0aWVzLnZv
bHVtZSk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGZ1bmN0aW9uIGNoZWNrU3RhdGVz
KHRyYWNrKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGRlYnVnKCJjaGVja2luZyB0
cmFjay5zdGF0ZXMoKSIpOworICAgICAgICAgICAgICAgIGNhcGFiaWxpdGllcyA9IHRyYWNrLmNh
cGFiaWxpdGllcygpOworICAgICAgICAgICAgICAgIHN0YXRlcyA9IHRyYWNrLnN0YXRlcygpOwor
ICAgICAgICAgICAgICAgIHNob3VsZEJlKCdzdGF0ZXMuc291cmNlSWQnLCAnY2FwYWJpbGl0aWVz
LnNvdXJjZUlkWzBdJyk7CisgICAgICAgICAgICAgICAgaWYgKHRyYWNrLmtpbmQgPT0gInZpZGVv
IikgeworICAgICAgICAgICAgICAgICAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoJ3N0YXRlcy5z
b3VyY2VUeXBlJywgJ2NhbWVyYScpOworICAgICAgICAgICAgICAgICAgICBkZWJ1ZygiICB3aWR0
aCA6ICIgKyBzdGF0ZXMud2lkdGgpOworICAgICAgICAgICAgICAgICAgICBkZWJ1ZygiICBoZWln
aHQgOiAiICsgc3RhdGVzLmhlaWdodCk7CisgICAgICAgICAgICAgICAgICAgIGRlYnVnKCIgIGZy
YW1lUmF0ZSA6ICIgKyBzdGF0ZXMuZnJhbWVSYXRlKTsKKyAgICAgICAgICAgICAgICAgICAgZGVi
dWcoIiAgYXNwZWN0UmF0aW8gOiAiICsgc3RhdGVzLmFzcGVjdFJhdGlvKTsKKyAgICAgICAgICAg
ICAgICAgICAgZGVidWcoIiAgZmFjaW5nTW9kZSA6ICIgKyBzdGF0ZXMuZmFjaW5nTW9kZSk7Cisg
ICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgc2hvdWxkQmVFcXVh
bFRvU3RyaW5nKCdzdGF0ZXMuc291cmNlVHlwZScsICdtaWNyb3Bob25lJyk7CisgICAgICAgICAg
ICAgICAgICAgIGRlYnVnKCIgIHZvbHVtZSA6ICIgKyBzdGF0ZXMudm9sdW1lKTsKKyAgICAgICAg
ICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgICAKKyAgICAgICAgICAgIGZ1bmN0
aW9uIGNoZWNrVHJhY2sodCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICB0cmFjayA9
IHQ7CisgICAgICAgICAgICAgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCd0cmFjay5yZWFkeVN0
YXRlJywgJ2xpdmUnKTsKKyAgICAgICAgICAgICAgICBjaGVja0NhcGFiaWxpdGllcyh0cmFjayk7
CisgICAgICAgICAgICAgICAgY2hlY2tTdGF0ZXModHJhY2spOworICAgICAgICAgICAgfQorCisg
ICAgICAgICAgICBmdW5jdGlvbiBnb3RTdHJlYW0oc3RyZWFtKQorICAgICAgICAgICAgeworICAg
ICAgICAgICAgICAgIG1lZGlhU3RyZWFtID0gc3RyZWFtOworICAgICAgICAgICAgICAgIHRlc3RQ
YXNzZWQoJ2dldFVzZXJNZWRpYSBzdWNjZWVkZWQuJyk7CisgICAgICAgICAgICAKKyAgICAgICAg
ICAgICAgICBkZWJ1ZygiIik7CisgICAgICAgICAgICAgICAgZXZhbEFuZExvZygidmlkZW9UcmFj
ayA9IG1lZGlhU3RyZWFtLmdldFZpZGVvVHJhY2tzKClbMF0iKTsKKyAgICAgICAgICAgICAgICBj
aGVja1RyYWNrKHZpZGVvVHJhY2spOworCisgICAgICAgICAgICAgICAgZGVidWcoIiIpOworICAg
ICAgICAgICAgICAgIGV2YWxBbmRMb2coImF1ZGlvVHJhY2sgPSBtZWRpYVN0cmVhbS5nZXRBdWRp
b1RyYWNrcygpWzBdIik7CisgICAgICAgICAgICAgICAgY2hlY2tUcmFjayhhdWRpb1RyYWNrKTsK
KworICAgICAgICAgICAgICAgIHZpZGVvVHJhY2sub25tdXRlID0gb25UcmFja011dGU7CisgICAg
ICAgICAgICAgICAgdmlkZW9UcmFjay5vbnVubXV0ZSA9IG9uVHJhY2tVbm11dGU7CisgICAgICAg
ICAgICAgICAgdmlkZW9UcmFjay5vbmVuZGVkID0gb25UcmFja0VuZGVkOworICAgICAgICAgICAg
ICAgIHZpZGVvVHJhY2sub25zdGFydGVkID0gb25UcmFja1N0YXJ0ZWQ7CisgICAgICAgICAgICAg
ICAgdmlkZW9UcmFjay5vbm92ZXJjb25zdHJhaW5lZCA9IG9uVHJhY2tPdmVyQ29uc3RyYWluZWQ7
CisgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICBkZWJ1ZygiIik7CisgICAgICAgICAgICAg
ICAgZXZhbEFuZExvZygidmlkZW9UcmFjazIgPSB2aWRlb1RyYWNrLmNsb25lKCkiKTsKKyAgICAg
ICAgICAgICAgICBjaGVja1RyYWNrKHZpZGVvVHJhY2syKTsKKyAgICAgICAgICAgICAgICBzaG91
bGROb3RCZSgndmlkZW9UcmFjay5pZCcsICd2aWRlb1RyYWNrMi5pZCcpOworICAgICAgICAgICAg
ICAgIHNob3VsZEJlKCd2aWRlb1RyYWNrLmtpbmQnLCAndmlkZW9UcmFjazIua2luZCcpOworICAg
ICAgICAgICAgICAgIHNob3VsZEJlKCd2aWRlb1RyYWNrLmxhYmVsJywgJ3ZpZGVvVHJhY2syLmxh
YmVsJyk7CisgICAgICAgICAgICAgICAgc2hvdWxkQmUoJ3ZpZGVvVHJhY2subXV0ZWQnLCAndmlk
ZW9UcmFjazIubXV0ZWQnKTsKKyAgICAgICAgICAgICAgICBzaG91bGRCZSgndmlkZW9UcmFjay5l
bmFibGVkJywgJ3ZpZGVvVHJhY2syLmVuYWJsZWQnKTsKKyAgICAgICAgICAgICAgICBzaG91bGRC
ZSgndmlkZW9UcmFjay5yZWFkeVN0YXRlJywgJ3ZpZGVvVHJhY2syLnJlYWR5U3RhdGUnKTsKKwor
ICAgICAgICAgICAgICAgIGRlYnVnKCIiKTsKKyAgICAgICAgICAgICAgICBldmFsQW5kTG9nKCJ2
aWRlb1RyYWNrLnN0b3AoKSIpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBmdW5jdGlv
biBzdGFydCgpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgZGVzY3JpcHRpb24oIlRl
c3RzIE1lZGlhU3RyZWFtVHJhY2sgY2FsbGJhY2tzLiIpOworICAgICAgICAgICAgICAgIAorICAg
ICAgICAgICAgICAgIC8vIE5vdGUgdGhhdCB0aGUgYmVsb3cgYmVoYXZpb3VyIGRvZXNuJ3QgcmVm
bGVjdCBob3cgaXQgd29ya3Mgb3V0c2lkZSBvZiBMYXlvdXRUZXN0cy4KKyAgICAgICAgICAgICAg
ICAvLyBUaGUgdW5kZXJseWluZyBtb2NrIGlzIG1vZGlmaWVkIHRvIHRyaWdnZXIgdGhlIGV2ZW50
cyB3aGVuIGNlcnRhaW4gZnVuY3Rpb25zIGFyZSBjYWxsZWQuCisgICAgICAgICAgICAgICAgLy8g
VGhpcyBtb2RpZmllZCBiZWhhdmlvdXIgYWxsb3dzIHVzIHRvIHRlc3QgdGhlIE1lZGlhU3RyZWFt
VHJhY2sgY2xhc3MgcHJvcGVybHkuCisgICAgICAgICAgICAgICAgZ2V0VXNlck1lZGlhKHthdWRp
bzp0cnVlLCB2aWRlbzp0cnVlfSwgZ290U3RyZWFtKTsKKyAgICAgICAgICAgIH0KKworICAgICAg
ICAgICAgd2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOworICAgICAgICAgICAgd2luZG93LnN1
Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7CisgICAgICAgIDwvc2NyaXB0PgorICAgIDwvaGVhZD4K
KyAgICA8Ym9keSBvbmxvYWQ9InN0YXJ0KCkiPgorICAgICAgICA8cCBpZD0iZGVzY3JpcHRpb24i
PjwvcD4KKyAgICAgICAgPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+CisgICAgICAgIDxzY3JpcHQg
c3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKyAgICA8L2Jv
ZHk+CiA8L2h0bWw+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="0"
              isprivate="0"
          >
            <attachid>213558</attachid>
            <date>2013-10-06 20:38:56 -0700</date>
            <delta_ts>2013-10-06 21:01:15 -0700</delta_ts>
            <desc>Rebased patch</desc>
            <filename>track_spec_update_21.txt</filename>
            <type>text/plain</type>
            <size>216067</size>
            <attacher name="Eric Carlson">eric.carlson</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE1NzAxNikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE3OCBAQAorMjAxMy0xMC0wNiAgRXJpYyBD
YXJsc29uICA8ZXJpYy5jYXJsc29uQGFwcGxlLmNvbT4KKworICAgICAgICBbTWVkaWFTdHJlYW0g
QVBJXSB1cGRhdGUgTWVkaWFTdHJlYW1UcmFjayBvYmplY3QgdG8gbWF0Y2ggc3BlYworICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTIxOTQwCisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLCBl
eGlzdGluZyB0ZXN0IHVwZGF0ZWQuCisKKyAgICAgICAgQWRkIG5ldyBzb3VyY2UgZmlsZXMgdG8g
dGhlIHByb2plY3Q6CisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogRGVyaXZl
ZFNvdXJjZXMubWFrZToKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5saXN0LmFtOgorICAgICAgICAq
IFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKworICAgICAgICBOZXcgY2FwYWJp
bGl0eSBkaWN0aW9uYXJ5IG9iamVjdHM6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9B
bGxBdWRpb0NhcGFiaWxpdGllcy5oOiBBZGRlZC4KKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3Ry
ZWFtL0FsbEF1ZGlvQ2FwYWJpbGl0aWVzLmlkbDogQWRkZWQuCisgICAgICAgICogTW9kdWxlcy9t
ZWRpYXN0cmVhbS9BbGxWaWRlb0NhcGFiaWxpdGllcy5oOiBBZGRlZC4KKyAgICAgICAgKiBNb2R1
bGVzL21lZGlhc3RyZWFtL0FsbFZpZGVvQ2FwYWJpbGl0aWVzLmlkbDogQWRkZWQuCisKKyAgICAg
ICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL0F1ZGlvU3RyZWFtVHJhY2suY3BwOgorICAgICAgICAo
V2ViQ29yZTo6QXVkaW9TdHJlYW1UcmFjazo6Y3JlYXRlKTogTmV3IHZlcnNpb24gdGhhdCB0YWtl
cyBhIE1lZGlhU3RyZWFtVHJhY2sqLgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vQXVk
aW9TdHJlYW1UcmFjay5oOgorCisgICAgICAgIE5ldyBvYmplY3QgZm9yIGEgY2FwYWJpbGl0eSBy
YW5nZToKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL0NhcGFiaWxpdHlSYW5nZS5jcHA6
IEFkZGVkLgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vQ2FwYWJpbGl0eVJhbmdlLmg6
IEFkZGVkLgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vQ2FwYWJpbGl0eVJhbmdlLmlk
bDogQWRkZWQuCisKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhQ29uc3RyYWlu
dHNJbXBsLmg6IE1ha2UgaW5pdGlhbGl6ZSgpIHB1YmxpYy4KKworICAgICAgICBOZXcgb2JqZWN0
IGZvciB0aGUgY3VycmVudCBzdGF0ZXMgZm9yIGEgbWVkaWEgc291cmNlLgorICAgICAgICAqIE1v
ZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTb3VyY2VTdGF0ZXMuY3BwOiBBZGRlZC4KKyAgICAgICAg
KiBNb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU291cmNlU3RhdGVzLmg6IEFkZGVkLgorICAgICAg
ICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTb3VyY2VTdGF0ZXMuaWRsOiBBZGRlZC4KKwor
ICAgICAgICBEb24ndCBjYWxsIHRoZSBtZWRpYSBzdHJlYW0gY2VudGVyIHRvIG5vdGlmeSBpdCB3
aGVuIHRoZSBzdGF0ZSBvZiBvdGhlcgorICAgICAgICBvYmplY3RzIGNoYW5nZS4KKyAgICAgICAg
KiBNb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OnByb2Nlc3NUcmFjayk6IFJlbW92ZSB0aGUgc3RyZWFtIHNvdXJjZSBkdXBsaWNhdGlvbiBoYWNr
LgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlRnJvbVNvdXJjZVZlY3RvcnMpOiAKKyAgICAgICAg
KFdlYkNvcmU6Ok1lZGlhU3RyZWFtOjpNZWRpYVN0cmVhbSk6CisgICAgICAgIChXZWJDb3JlOjpN
ZWRpYVN0cmVhbTo6YWRkVHJhY2spOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTdHJlYW06OnJl
bW92ZVRyYWNrKToKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtLmg6
CisKKyAgICAgICAgTmV3IG9iamVjdCBmb3IgdGhlIGNhcGFiaWxpdGllcyBvZiBhIHNvdXJjZS4K
KyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtQ2FwYWJpbGl0aWVzLmNw
cDogQWRkZWQuCisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbUNhcGFi
aWxpdGllcy5oOiBBZGRlZC4KKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3Ry
ZWFtQ2FwYWJpbGl0aWVzLmlkbDogQWRkZWQuCisKKyAgICAgICAgVXBkYXRlIGludGVyZmFjZSB0
byBtYXRjaCBzcGVjLgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1U
cmFjay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbVRyYWNrOjpNZWRpYVN0cmVh
bVRyYWNrKTogRGVmaW5lIGEgY29weSBjb25zdHJ1Y3RvciB0byB1c2UgaW4gY2xvbmUoKS4KKyAg
ICAgICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFtVHJhY2s6OnNldFNvdXJjZSk6IENhbGwgcmVtb3Zl
T2JzZXJ2ZXIgaWYgdGhlIHRyYWNrIGFscmVhZHkgaGFzIGEgc291cmNlLgorICAgICAgICAgICAg
SW5pdGlhbGl6ZSBtX211dGVkIGZyb20gbmV3IHNvdXJjZSdzIG11dGVkIHN0YXRlLgorICAgICAg
ICAoV2ViQ29yZTo6TWVkaWFTdHJlYW1UcmFjazo6aWQpOiBBbGxvdyBzb3VyY2UgdG8gcHJvdmlk
ZSBJRCBhcyB0aGUgc3BlYyBzdWdnZXN0cy4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFt
VHJhY2s6OnNldEVuYWJsZWQpOiBBZGQgc29tZSBzcGVjIHRleHQgdG8gY2xhcmlmeSBsb2dpYy4g
QWx3YXlzIGNhbGwKKyAgICAgICAgICAgIHNvdXJjZS0+c2V0RW5hYmxlZCwgaXQgY2FuIGZpZ3Vy
ZSBvdXQgaWYgbm90aGluZyBuZWVkcyB0byBiZSBkb25lLgorICAgICAgICAoV2ViQ29yZTo6TWVk
aWFTdHJlYW1UcmFjazo6bXV0ZWQpOiBEb24ndCBjYWxsIHRoZSBzdHJlYW0gY2VudGVyIHdoZW4g
bXV0ZWQgY2hhbmdlcywgdGhlCisgICAgICAgICAgICBzb3VyY2UgY2FuIHRha2UgY2FyZSBvZiBu
b3RpZnlpbmcgaW50ZXJlc3RlZCBwYXJ0aWVzLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTdHJl
YW1UcmFjazo6cmVhZG9ubHkpOiBOZXcuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbVRy
YWNrOjpyZW1vdGUpOiBOZXcuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbVRyYWNrOjpj
b25zdHJhaW50cyk6IE5ldy4gCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbVRyYWNrOjpz
dGF0ZXMpOiBOZXcuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbVRyYWNrOjpjYXBhYmls
aXRpZXMpOiBOZXcuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbVRyYWNrOjphcHBseUNv
bnN0cmFpbnRzKTogTmV3LgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTdHJlYW1UcmFjazo6Y2xv
bmUpOiBOZXcuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbVRyYWNrOjpzdG9wUHJvZHVj
aW5nRGF0YSk6IE5ldy4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFtVHJhY2s6OnNvdXJj
ZVN0YXRlQ2hhbmdlZCk6IFJlbmFtZWQgZnJvbSBzb3VyY2VDaGFuZ2VkU3RhdGUuCisgICAgICAg
IChXZWJDb3JlOjpNZWRpYVN0cmVhbVRyYWNrOjpzb3VyY2VNdXRlZENoYW5nZWQpOiBOZXcuCisg
ICAgICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbVRyYWNrOjpzb3VyY2VFbmFibGVkQ2hhbmdlZCk6
IE5ldy4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFtVHJhY2s6OmNvbmZpZ3VyZVRyYWNr
UmVuZGVyaW5nKTogTmV3LgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTdHJlYW1UcmFjazo6c3Rv
cHBlZCk6IE5ldy4gCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbVRyYWNrOjpzdG9wKTog
Q2FsbCBzdG9wUHJvZHVjaW5nRGF0YS4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFtVHJh
Y2s6OnNjaGVkdWxlRXZlbnREaXNwYXRjaCk6IE5ldy4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlh
U3RyZWFtVHJhY2s6OmRpc3BhdGNoUXVldWVkRXZlbnRzKTogTmV3LgorICAgICAgICAqIE1vZHVs
ZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1UcmFjay5oOgorICAgICAgICAqIE1vZHVsZXMvbWVk
aWFzdHJlYW0vTWVkaWFTdHJlYW1UcmFjay5pZGw6CisKKyAgICAgICAgKiBNb2R1bGVzL21lZGlh
c3RyZWFtL01lZGlhVHJhY2tDb25zdHJhaW50LmNwcDogQWRkZWQuCisgICAgICAgICogTW9kdWxl
cy9tZWRpYXN0cmVhbS9NZWRpYVRyYWNrQ29uc3RyYWludC5oOiBBZGRlZC4KKyAgICAgICAgKiBN
b2R1bGVzL21lZGlhc3RyZWFtL01lZGlhVHJhY2tDb25zdHJhaW50LmlkbDogQWRkZWQuCisKKyAg
ICAgICAgLy8gQWRkIGVtcHR5IGNsYXNzZXMvSURMIGZvciB0cmFjayBjb25zdHJhaW50IG9iamVj
dHMuCisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVRyYWNrQ29uc3RyYWludFNl
dC5jcHA6IEFkZGVkLgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFUcmFja0Nv
bnN0cmFpbnRTZXQuaDogQWRkZWQuCisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRp
YVRyYWNrQ29uc3RyYWludFNldC5pZGw6IEFkZGVkLgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFz
dHJlYW0vTWVkaWFUcmFja0NvbnN0cmFpbnRzLmNwcDogQWRkZWQuCisgICAgICAgICogTW9kdWxl
cy9tZWRpYXN0cmVhbS9NZWRpYVRyYWNrQ29uc3RyYWludHMuaDogQWRkZWQuCisgICAgICAgICog
TW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVRyYWNrQ29uc3RyYWludHMuaWRsOiBBZGRlZC4KKwor
ICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vVXNlck1lZGlhUmVxdWVzdC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpVc2VyTWVkaWFSZXF1ZXN0OjpjYWxsU3VjY2Vzc0hhbmRsZXIpOiBEb24n
dCBjYWxsIHRoZSBzdHJlYW0gY2VudGVyLCB0aGUKKyAgICAgICAgICAgIHN0cmVhbSBjYW4gdGFr
ZSBjYXJlIG9mIG5vdGlmeWluZyBpbnRlcmVzdGVkIHBhcnRpZXMuCisKKyAgICAgICAgLy8gQWRk
IGEgY29uc3RydWN0b3IgYW5kIGNyZWF0ZSgpIHRoYXQgdGFrZSBhIE1lZGlhU3RyZWFtVHJhY2sq
LgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vVmlkZW9TdHJlYW1UcmFjay5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpWaWRlb1N0cmVhbVRyYWNrOjpjcmVhdGUpOiAKKyAgICAgICAgKFdl
YkNvcmU6OlZpZGVvU3RyZWFtVHJhY2s6OlZpZGVvU3RyZWFtVHJhY2spOgorICAgICAgICAqIE1v
ZHVsZXMvbWVkaWFzdHJlYW0vVmlkZW9TdHJlYW1UcmFjay5oOgorCisgICAgICAgIC8vIENyZWF0
ZSBhIE1lZGlhU3RyZWFtU291cmNlIHN1YmNsYXNzIGZvciBXZWJBdWRpbworICAgICAgICAqIE1v
ZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlv
Q29udGV4dDo6Y3JlYXRlTWVkaWFTdHJlYW1Tb3VyY2UpOiBDYWxsIGlzQXVkaW9TdHJlYW1Tb3Vy
Y2UgaW5zdGVhZAorICAgICAgICAgICAgb2YgY2hlY2tpbmcgZGV2aWNlSUQuCisgICAgICAgICog
TW9kdWxlcy93ZWJhdWRpby9NZWRpYVN0cmVhbUF1ZGlvRGVzdGluYXRpb25Ob2RlLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFtQXVkaW9EZXN0aW5hdGlvbk5vZGU6Ok1lZGlhU3Ry
ZWFtQXVkaW9EZXN0aW5hdGlvbk5vZGUpOiBDcmVhdGUgYQorICAgICAgICAgICAgTWVkaWFTdHJl
YW1BdWRpb1NvdXJjZSBpbnN0ZWFkIG9mIGEgTWVkaWFTdHJlYW1Tb3VyY2UuCisgICAgICAgICog
TW9kdWxlcy93ZWJhdWRpby9NZWRpYVN0cmVhbUF1ZGlvRGVzdGluYXRpb25Ob2RlLmg6CisgICAg
ICAgICogTW9kdWxlcy93ZWJhdWRpby9NZWRpYVN0cmVhbUF1ZGlvU291cmNlLmNwcDogQWRkZWQu
CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9NZWRpYVN0cmVhbUF1ZGlvU291cmNlLmg6IEFk
ZGVkLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTdHJlYW1BdWRpb1NvdXJjZTo6fk1lZGlhU3Ry
ZWFtQXVkaW9Tb3VyY2UpOgorCisgICAgICAgIC8vIEFkZCBuZXcgZ2VuZXJhdGVkIGZpbGVzLgor
ICAgICAgICAqIGJpbmRpbmdzL2pzL0pTTWVkaWFTb3VyY2VTdGF0ZXNDdXN0b20uY3BwOiBBZGRl
ZC4KKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU01lZGlhU3RyZWFtQ2FwYWJpbGl0aWVzQ3VzdG9t
LmNwcDogQWRkZWQuCisKKyAgICAgICAgKiBkb20vRXZlbnROYW1lcy5oOiBEZWZpbmVkICdvdmVy
Y29uc3RyYWluZWQnIGV2ZW50LgorCisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVk
aWFTdHJlYW1DZW50ZXIuaDogR2V0IHJpZCBvZiBhbGwgb2YgdGhlIG1ldGhvZHMgbm9ib2R5IHVz
ZXMuCisgICAgICAgICAgICBJdCBpc24ndCBjbGVhciB0aGF0IHRoZXkgYXJlIG5lY2Vzc2FyeSwg
YW5kIHdlIGNhbiBhZGQgdGhlbSBiYWNrIGlmL3doZW4gd2UgbmVlZCB0aGVtLgorCisgICAgICAg
ICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1EZXNjcmlwdG9yLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFtRGVzY3JpcHRvcjo6fk1lZGlhU3RyZWFtRGVzY3JpcHRv
cik6IENsZWFyIHRoZSBhbGwgc291cmNlIHN0cmVhbXMuCisgICAgICAgIChXZWJDb3JlOjpNZWRp
YVN0cmVhbURlc2NyaXB0b3I6OnJlbW92ZVNvdXJjZSk6IENsZWFyIHRoZSBzb3VyY2Ugc3RyZWFt
LgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtRGVzY3JpcHRvci5o
OgorCisgICAgICAgIC8vIE1ha2UgTWVkaWFTdHJlYW1Tb3VyY2UgYW4gYWJzdHJhY3QgYmFzZSBj
bGFzcywgYW5kIHJlbW92ZSBldmVyeXRpbmcgV2ViQXVkaW8tc3BlY2lmaWMKKyAgICAgICAgLy8g
IHRvIE1lZGlhU3RyZWFtQXVkaW9Tb3VyY2UuIAorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3Ry
ZWFtL01lZGlhU3RyZWFtU291cmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFt
U291cmNlOjpNZWRpYVN0cmVhbVNvdXJjZSk6IFJlbW92ZSByZWFkeVN0YXRlIGFuZCByZXF1aXJl
c0NvbnN1bWVyCisgICAgICAgICAgICBwYXJhbWV0ZXJzLiBDcmVhdGUgbmV3IFVVSUQgZm9yIGlk
IGlmIG5vbiB3YXMgcGFzc2VkLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTdHJlYW1Tb3VyY2U6
OnJlc2V0KTogUmVzZXQgaW50ZXJuYWwgc3RhdGUgdG8ganVzdC1jb25zdHJ1Y3RlZC4gVXNlZCBm
b3IgdGVzdGluZy4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFtU291cmNlOjpzZXRSZWFk
eVN0YXRlKTogc291cmNlQ2hhbmdlZFN0YXRlIC0+IHNvdXJjZVN0YXRlQ2hhbmdlZC4KKyAgICAg
ICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFtU291cmNlOjpzZXRTdHJlYW0pOiBSZW1vdmUgdGhlIEFT
U0VSVCB0aGF0IGNoZWNrIGZvciBhIHNvdXJjZSBiZWluZworICAgICAgICAgICAgYWRkZWQgdG8g
YSBuZXcgc3RyZWFtLiBUaGlzIGlzIHN0aWxsIGEgcHJvYmxlbSwgYnV0IGl0IGlzIHJlcXVpcmVk
IGZvciB0ZXN0aW5nIGFuZCB3aWxsCisgICAgICAgICAgICBiZSBmaXhlZCBhcyBhIHBhcnQgb2Yg
YnVnIDEyMTk1NC4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFtU291cmNlOjpzZXRDb25z
dHJhaW50cyk6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTdHJlYW1Tb3VyY2U6OnNl
dE11dGVkKTogTm90aWZ5IG9ic2VydmVycyB3aGVuIG11dGVkIGNoYW5nZXMuCisgICAgICAgIChX
ZWJDb3JlOjpNZWRpYVN0cmVhbVNvdXJjZTo6c2V0RW5hYmxlZCk6IE5vdGlmeSBvYnNlcnZlcnMg
d2hlbiBlbmFibGVkIGNoYW5nZXMuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbVNvdXJj
ZTo6cmVhZG9ubHkpOiBOZXcuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbVNvdXJjZTo6
c3RvcCk6IE5ldy4gU2V0IHN0YXRlIHRvIEVuZGVkIHdoZW4gYWxsIG9mIHRoZSBvYnNlcnZlcnMg
aGFzCisgICAgICAgICAgICBzdG9wcGVkLgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFt
L01lZGlhU3RyZWFtU291cmNlLmg6CisKKyAgICAgICAgLy8gRGVmaW5lIHBsYXRmb3JtIHZlcnNp
b25zIG9mIHRoZSBDYXBhYmlsaXRpZXMgY2xhc3Nlcy4KKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRp
YXN0cmVhbS9NZWRpYVN0cmVhbVNvdXJjZUNhcGFiaWxpdGllcy5oOiBBZGRlZC4KKworICAgICAg
ICAvLyBVcGRhdGUgdGhlIG5vbi1mdW5jdGlvbmFsIHBsYXRmb3JtIHN0cmVhbSBjZW50ZXJzIGZv
ciB0aGUgQVBJIGNoYW5nZXMuCisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vYmxhY2ti
ZXJyeS9NZWRpYVN0cmVhbUNlbnRlckJsYWNrQmVycnkuY3BwOgorICAgICAgICAqIHBsYXRmb3Jt
L21lZGlhc3RyZWFtL2JsYWNrYmVycnkvTWVkaWFTdHJlYW1DZW50ZXJCbGFja0JlcnJ5Lmg6Cisg
ICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vZ3N0cmVhbWVyL01lZGlhU3RyZWFtQ2VudGVy
R1N0cmVhbWVyLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9nc3RyZWFtZXIv
TWVkaWFTdHJlYW1DZW50ZXJHU3RyZWFtZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0
cmVhbS9tYWMvTWVkaWFTdHJlYW1DZW50ZXJNYWMuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL21l
ZGlhc3RyZWFtL21hYy9NZWRpYVN0cmVhbUNlbnRlck1hYy5oOgorCisgICAgICAgIC8vIFVwZGF0
ZSB0aGUgTW9jayBzdHJlYW0gY2VudGVyIGZvciB0aGUgQVBJIGNoYW5nZXMuIEFkZCBhIGNvbmNy
ZXRlIG1vY2sgTWVkaWFTdHJlYW1Tb3VyY2UKKyAgICAgICAgLy8gIHN1YmNsYXNzLgorICAgICAg
ICAqIHBsYXRmb3JtL21vY2svTW9ja01lZGlhU3RyZWFtQ2VudGVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6Ok1vY2tTb3VyY2U6Ok1vY2tTb3VyY2UpOiBOZXcsIHRoZSBtb2NrIG1lZGlhIHN0cmVh
bSBzb3VyY2UuCisgICAgICAgIChXZWJDb3JlOjpNb2NrU291cmNlOjp+TW9ja1NvdXJjZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpNb2NrU291cmNlOjpjYXBhYmlsaXRpZXMpOgorICAgICAgICAoV2Vi
Q29yZTo6TW9ja1NvdXJjZTo6c3RhdGVzKToKKyAgICAgICAgKFdlYkNvcmU6Om1vY2tTb3VyY2VN
YXApOgorICAgICAgICAoV2ViQ29yZTo6bW9ja0F1ZGlvU291cmNlSUQpOgorICAgICAgICAoV2Vi
Q29yZTo6bW9ja1ZpZGVvU291cmNlSUQpOgorICAgICAgICAoV2ViQ29yZTo6aW5pdGlhbGl6ZU1v
Y2tTb3VyY2VzKTogQ3JlYXRlIG9uZSBhdWRpbyBhbmQgb25lIHZpZGVvIG1vY2sgc291cmNlLgor
ICAgICAgICAoV2ViQ29yZTo6TW9ja01lZGlhU3RyZWFtQ2VudGVyOjpyZWdpc3Rlck1vY2tNZWRp
YVN0cmVhbUNlbnRlcik6IENhbGwgaW5pdGlhbGl6ZU1vY2tTb3VyY2VzLgorICAgICAgICAoV2Vi
Q29yZTo6TW9ja01lZGlhU3RyZWFtQ2VudGVyOjpjcmVhdGVNZWRpYVN0cmVhbSk6IFVzZSB0aGUg
YWxyZWFkeSBhbGxvY2F0ZWQgbW9jayBtZWRpYQorICAgICAgICAgICAgc291cmNlcy4KKyAgICAg
ICAgKFdlYkNvcmU6Ok1vY2tNZWRpYVN0cmVhbUNlbnRlcjo6Z2V0TWVkaWFTdHJlYW1UcmFja1Nv
dXJjZXMpOiBEaXR0by4KKyAgICAgICAgKiBwbGF0Zm9ybS9tb2NrL01vY2tNZWRpYVN0cmVhbUNl
bnRlci5oOgorCiAyMDEzLTEwLTA2ICBBbnR0aSBLb2l2aXN0byAgPGFudHRpQGFwcGxlLmNvbT4K
IAogICAgICAgICBGYWN0b3IgdGV4dCBwYWludCBzdHlsZSBjb21wdXRhdGlvbiBvdXQgZnJvbSBJ
bmxpbmVUZXh0Qm94CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAkocmV2aXNpb24gMTU3MDE2KQor
KysgU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQJKHdvcmtpbmcgY29weSkKQEAgLTE4Niwx
MiArMTg2LDIwIEBAIHNldChXZWJDb3JlX0lETF9GSUxFUwogICAgIE1vZHVsZXMvbWVkaWFzb3Vy
Y2UvV2ViS2l0U291cmNlQnVmZmVyLmlkbAogICAgIE1vZHVsZXMvbWVkaWFzb3VyY2UvV2ViS2l0
U291cmNlQnVmZmVyTGlzdC5pZGwKIAorICAgIE1vZHVsZXMvbWVkaWFzdHJlYW0vQWxsVmlkZW9D
YXBhYmlsaXRpZXMuaWRsCisgICAgTW9kdWxlcy9tZWRpYXN0cmVhbS9BbGxBdWRpb0NhcGFiaWxp
dGllcy5pZGwKICAgICBNb2R1bGVzL21lZGlhc3RyZWFtL0F1ZGlvU3RyZWFtVHJhY2suaWRsCisg
ICAgTW9kdWxlcy9tZWRpYXN0cmVhbS9DYXBhYmlsaXR5UmFuZ2UuaWRsCisgICAgTW9kdWxlcy9t
ZWRpYXN0cmVhbS9NZWRpYVNvdXJjZVN0YXRlcy5pZGwKICAgICBNb2R1bGVzL21lZGlhc3RyZWFt
L01lZGlhU3RyZWFtLmlkbAorICAgIE1vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1DYXBh
YmlsaXRpZXMuaWRsCiAgICAgTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbUV2ZW50Lmlk
bAogICAgIE1vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1UcmFjay5pZGwKICAgICBNb2R1
bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJhY2tFdmVudC5pZGwKICAgICBNb2R1bGVzL21l
ZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJhY2tTb3VyY2VzQ2FsbGJhY2suaWRsCisgICAgTW9kdWxl
cy9tZWRpYXN0cmVhbS9NZWRpYVRyYWNrQ29uc3RyYWludC5pZGwKKyAgICBNb2R1bGVzL21lZGlh
c3RyZWFtL01lZGlhVHJhY2tDb25zdHJhaW50cy5pZGwKKyAgICBNb2R1bGVzL21lZGlhc3RyZWFt
L01lZGlhVHJhY2tDb25zdHJhaW50U2V0LmlkbAogICAgIE1vZHVsZXMvbWVkaWFzdHJlYW0vTmF2
aWdhdG9yTWVkaWFTdHJlYW0uaWRsCiAgICAgTW9kdWxlcy9tZWRpYXN0cmVhbS9OYXZpZ2F0b3JV
c2VyTWVkaWFFcnJvci5pZGwKICAgICBNb2R1bGVzL21lZGlhc3RyZWFtL05hdmlnYXRvclVzZXJN
ZWRpYUVycm9yQ2FsbGJhY2suaWRsCkBAIC03ODYsMTMgKzc5NCwxOSBAQCBzZXQoV2ViQ29yZV9T
T1VSQ0VTCiAgICAgTW9kdWxlcy9tZWRpYXNvdXJjZS9Tb3VyY2VCdWZmZXJMaXN0LmNwcAogCiAg
ICAgTW9kdWxlcy9tZWRpYXN0cmVhbS9BdWRpb1N0cmVhbVRyYWNrLmNwcAorCU1vZHVsZXMvbWVk
aWFzdHJlYW0vQ2FwYWJpbGl0eVJhbmdlLmNwcAogICAgIE1vZHVsZXMvbWVkaWFzdHJlYW0vTWVk
aWFDb25zdHJhaW50c0ltcGwuY3BwCisJTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVNvdXJjZVN0
YXRlcy5jcHAKICAgICBNb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtLmNwcAorCU1vZHVs
ZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1DYXBhYmlsaXRpZXMuY3BwCiAgICAgTW9kdWxlcy9t
ZWRpYXN0cmVhbS9NZWRpYVN0cmVhbUV2ZW50LmNwcAogICAgIE1vZHVsZXMvbWVkaWFzdHJlYW0v
TWVkaWFTdHJlYW1SZWdpc3RyeS5jcHAKICAgICBNb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3Ry
ZWFtVHJhY2suY3BwCiAgICAgTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVRyYWNrRXZl
bnQuY3BwCiAgICAgTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVRyYWNrU291cmNlc1Jl
cXVlc3QuY3BwCisJTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVRyYWNrQ29uc3RyYWludC5jcHAK
KwlNb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhVHJhY2tDb25zdHJhaW50U2V0LmNwcAorCU1vZHVs
ZXMvbWVkaWFzdHJlYW0vTWVkaWFUcmFja0NvbnN0cmFpbnRzLmNwcAogICAgIE1vZHVsZXMvbWVk
aWFzdHJlYW0vTmF2aWdhdG9yTWVkaWFTdHJlYW0uY3BwCiAgICAgTW9kdWxlcy9tZWRpYXN0cmVh
bS9OYXZpZ2F0b3JVc2VyTWVkaWFFcnJvci5jcHAKICAgICBNb2R1bGVzL21lZGlhc3RyZWFtL1JU
Q0RUTUZTZW5kZXIuY3BwCkBAIC0xOTcxLDYgKzE5ODUsNyBAQCBzZXQoV2ViQ29yZV9TT1VSQ0VT
CiAgICAgcGxhdGZvcm0vbGV2ZWxkYi9MZXZlbERCVHJhbnNhY3Rpb24uY3BwCiAgICAgcGxhdGZv
cm0vbGV2ZWxkYi9MZXZlbERCV3JpdGVCYXRjaC5jcHAKIAorICAgIHBsYXRmb3JtL21lZGlhc3Ry
ZWFtL01lZGlhU3RyZWFtQXVkaW9Tb3VyY2UuY3BwCiAgICAgcGxhdGZvcm0vbWVkaWFzdHJlYW0v
TWVkaWFTdHJlYW1DZW50ZXIuY3BwCiAgICAgcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFTdHJl
YW1EZXNjcmlwdG9yLmNwcAogICAgIHBsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtU291
cmNlLmNwcApJbmRleDogU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtlCShyZXZpc2lvbiAxNTcw
MTYpCisrKyBTb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtlCSh3b3JraW5nIGNvcHkp
CkBAIC0xMDEsMTIgKzEwMSwyMCBAQCBCSU5ESU5HX0lETFMgPSBcCiAgICAgJChXZWJDb3JlKS9N
b2R1bGVzL21lZGlhc291cmNlL1dlYktpdFNvdXJjZUJ1ZmZlckxpc3QuaWRsIFwKICAgICAkKFdl
YkNvcmUpL01vZHVsZXMvbWVkaWFzb3VyY2UvU291cmNlQnVmZmVyLmlkbCBcCiAgICAgJChXZWJD
b3JlKS9Nb2R1bGVzL21lZGlhc291cmNlL1NvdXJjZUJ1ZmZlckxpc3QuaWRsIFwKKwkkKFdlYkNv
cmUpL01vZHVsZXMvbWVkaWFzdHJlYW0vQWxsVmlkZW9DYXBhYmlsaXRpZXMuaWRsIFwKKwkkKFdl
YkNvcmUpL01vZHVsZXMvbWVkaWFzdHJlYW0vQWxsQXVkaW9DYXBhYmlsaXRpZXMuaWRsIFwKIAkk
KFdlYkNvcmUpL01vZHVsZXMvbWVkaWFzdHJlYW0vQXVkaW9TdHJlYW1UcmFjay5pZGwgXAorICAg
ICQoV2ViQ29yZSkvTW9kdWxlcy9tZWRpYXN0cmVhbS9DYXBhYmlsaXR5UmFuZ2UuaWRsIFwKKyAg
ICAkKFdlYkNvcmUpL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTb3VyY2VTdGF0ZXMuaWRsIFwK
IAkkKFdlYkNvcmUpL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW0uaWRsIFwKKwkkKFdl
YkNvcmUpL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1DYXBhYmlsaXRpZXMuaWRsIFwK
ICAgICAkKFdlYkNvcmUpL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1FdmVudC5pZGwg
XAogICAgICQoV2ViQ29yZSkvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVRyYWNrLmlk
bCBcCiAgICAgJChXZWJDb3JlKS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJhY2tF
dmVudC5pZGwgXAogICAgICQoV2ViQ29yZSkvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVh
bVRyYWNrU291cmNlc0NhbGxiYWNrLmlkbCBcCisgICAgJChXZWJDb3JlKS9Nb2R1bGVzL21lZGlh
c3RyZWFtL01lZGlhVHJhY2tDb25zdHJhaW50LmlkbCBcCisgICAgJChXZWJDb3JlKS9Nb2R1bGVz
L21lZGlhc3RyZWFtL01lZGlhVHJhY2tDb25zdHJhaW50cy5pZGwgXAorICAgICQoV2ViQ29yZSkv
TW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVRyYWNrQ29uc3RyYWludFNldC5pZGwgXAogICAgICQo
V2ViQ29yZSkvTW9kdWxlcy9tZWRpYXN0cmVhbS9OYXZpZ2F0b3JNZWRpYVN0cmVhbS5pZGwgXAog
ICAgICQoV2ViQ29yZSkvTW9kdWxlcy9tZWRpYXN0cmVhbS9OYXZpZ2F0b3JVc2VyTWVkaWFFcnJv
ci5pZGwgXAogICAgICQoV2ViQ29yZSkvTW9kdWxlcy9tZWRpYXN0cmVhbS9OYXZpZ2F0b3JVc2Vy
TWVkaWFFcnJvckNhbGxiYWNrLmlkbCBcCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmls
ZS5saXN0LmFtCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3Qu
YW0JKHJldmlzaW9uIDE1NzAxNikKKysrIFNvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3Qu
YW0JKHdvcmtpbmcgY29weSkKQEAgLTMxLDYgKzMxLDEwIEBAIHdlYmNvcmVfYnVpbHRfc291cmNl
cyArPSBcCiAJRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9JbnNwZWN0b3JQcm90b2NvbFZlcnNpb24u
aCBcCiAJRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0Fic3RyYWN0V29ya2VyLmNwcCBcCiAJRGVy
aXZlZFNvdXJjZXMvV2ViQ29yZS9KU0Fic3RyYWN0V29ya2VyLmggXAorCURlcml2ZWRTb3VyY2Vz
L1dlYkNvcmUvSlNBbGxBdWRpb0NhcGFiaWxpdGllcy5jcHAgXAorCURlcml2ZWRTb3VyY2VzL1dl
YkNvcmUvSlNBbGxBdWRpb0NhcGFiaWxpdGllcy5oIFwKKwlEZXJpdmVkU291cmNlcy9XZWJDb3Jl
L0pTQWxsVmlkZW9DYXBhYmlsaXRpZXMuY3BwIFwKKwlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pT
QWxsVmlkZW9DYXBhYmlsaXRpZXMuaCBcCiAJRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0F0dHIu
Y3BwIFwKIAlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTQXR0ci5oIFwKIAlEZXJpdmVkU291cmNl
cy9XZWJDb3JlL0pTQXVkaW9CdWZmZXIuY3BwIFwKQEAgLTg3LDYgKzkxLDggQEAgd2ViY29yZV9i
dWlsdF9zb3VyY2VzICs9IFwKIAlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTQ2FudmFzUmVuZGVy
aW5nQ29udGV4dDJELmggXAogCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNDYW52YXNSZW5kZXJp
bmdDb250ZXh0LmNwcCBcCiAJRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0NhbnZhc1JlbmRlcmlu
Z0NvbnRleHQuaCBcCisJRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0NhcGFiaWxpdHlSYW5nZS5j
cHAgXAorCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNDYXBhYmlsaXR5UmFuZ2UuaCBcCiAJRGVy
aXZlZFNvdXJjZXMvV2ViQ29yZS9KU0NEQVRBU2VjdGlvbi5jcHAgXAogCURlcml2ZWRTb3VyY2Vz
L1dlYkNvcmUvSlNDREFUQVNlY3Rpb24uaCBcCiAJRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0No
YXJhY3RlckRhdGEuY3BwIFwKQEAgLTQ2MiwxMiArNDY4LDE4IEBAIHdlYmNvcmVfYnVpbHRfc291
cmNlcyArPSBcCiAJRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU01lZGlhU291cmNlLmggXAogCURl
cml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNXZWJLaXRNZWRpYVNvdXJjZS5jcHAgXAogCURlcml2ZWRT
b3VyY2VzL1dlYkNvcmUvSlNXZWJLaXRNZWRpYVNvdXJjZS5oIFwKKwlEZXJpdmVkU291cmNlcy9X
ZWJDb3JlL0pTTWVkaWFTb3VyY2VTdGF0ZXMuY3BwIFwKKwlEZXJpdmVkU291cmNlcy9XZWJDb3Jl
L0pTTWVkaWFTb3VyY2VTdGF0ZXMuaCBcCisJRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU01lZGlh
U291cmNlU3RhdGVzQ3VzdG9tLmNwcCBcCiAJRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU01lZGlh
U3RyZWFtLmNwcCBcCiAJRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU01lZGlhU3RyZWFtLmggXAog
CURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNNZWRpYVN0cmVhbUF1ZGlvU291cmNlTm9kZS5jcHAg
XAogCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNNZWRpYVN0cmVhbUF1ZGlvU291cmNlTm9kZS5o
IFwKIAlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTTWVkaWFTdHJlYW1BdWRpb0Rlc3RpbmF0aW9u
Tm9kZS5jcHAgXAogCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNNZWRpYVN0cmVhbUF1ZGlvRGVz
dGluYXRpb25Ob2RlLmggXAorCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNNZWRpYVN0cmVhbUNh
cGFiaWxpdGllcy5jcHAgXAorCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNNZWRpYVN0cmVhbUNh
cGFiaWxpdGllcy5oIFwKKwlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTTWVkaWFTdHJlYW1DYXBh
YmlsaXRpZXNDdXN0b20uY3BwIFwKIAlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTTWVkaWFTdHJl
YW1FdmVudC5jcHAgXAogCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNNZWRpYVN0cmVhbUV2ZW50
LmggXAogCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNNZWRpYVN0cmVhbVRyYWNrLmNwcCBcCkBA
IC00ODAsNiArNDkyLDEyIEBAIHdlYmNvcmVfYnVpbHRfc291cmNlcyArPSBcCiAJRGVyaXZlZFNv
dXJjZXMvV2ViQ29yZS9KU01lZGlhUXVlcnlMaXN0LmggXAogCURlcml2ZWRTb3VyY2VzL1dlYkNv
cmUvSlNNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyLmNwcCBcCiAJRGVyaXZlZFNvdXJjZXMvV2ViQ29y
ZS9KU01lZGlhUXVlcnlMaXN0TGlzdGVuZXIuaCBcCisJRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9K
U01lZGlhVHJhY2tDb25zdHJhaW50LmNwcCBcCisJRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU01l
ZGlhVHJhY2tDb25zdHJhaW50LmggXAorCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNNZWRpYVRy
YWNrQ29uc3RyYWludHMuY3BwIFwKKwlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTTWVkaWFUcmFj
a0NvbnN0cmFpbnRzLmggXAorCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNNZWRpYVRyYWNrQ29u
c3RyYWludFNldC5jcHAgXAorCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNNZWRpYVRyYWNrQ29u
c3RyYWludFNldC5oIFwKIAlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTTWVzc2FnZUNoYW5uZWwu
Y3BwIFwKIAlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTTWVzc2FnZUNoYW5uZWwuaCBcCiAJRGVy
aXZlZFNvdXJjZXMvV2ViQ29yZS9KU01lc3NhZ2VFdmVudC5jcHAgXApAQCAtMTE4NiwxMiArMTIw
NCwyMCBAQCBkb21fYmluZGluZ19pZGxzICs9IFwKIAkkKFdlYkNvcmUpL01vZHVsZXMvbWVkaWFz
b3VyY2UvV2ViS2l0TWVkaWFTb3VyY2UuaWRsIFwKIAkkKFdlYkNvcmUpL01vZHVsZXMvbWVkaWFz
b3VyY2UvV2ViS2l0U291cmNlQnVmZmVyLmlkbCBcCiAJJChXZWJDb3JlKS9Nb2R1bGVzL21lZGlh
c291cmNlL1dlYktpdFNvdXJjZUJ1ZmZlckxpc3QuaWRsIFwKKwkkKFdlYkNvcmUpL01vZHVsZXMv
bWVkaWFzdHJlYW0vQWxsVmlkZW9DYXBhYmlsaXRpZXMuaWRsIFwKKwkkKFdlYkNvcmUpL01vZHVs
ZXMvbWVkaWFzdHJlYW0vQWxsQXVkaW9DYXBhYmlsaXRpZXMuaWRsIFwKIAkkKFdlYkNvcmUpL01v
ZHVsZXMvbWVkaWFzdHJlYW0vQXVkaW9TdHJlYW1UcmFjay5pZGwgXAorCSQoV2ViQ29yZSkvTW9k
dWxlcy9tZWRpYXN0cmVhbS9DYXBhYmlsaXR5UmFuZ2UuaWRsIFwKKwkkKFdlYkNvcmUpL01vZHVs
ZXMvbWVkaWFzdHJlYW0vTWVkaWFTb3VyY2VTdGF0ZXMuaWRsIFwKIAkkKFdlYkNvcmUpL01vZHVs
ZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW0uaWRsIFwKKwkkKFdlYkNvcmUpL01vZHVsZXMvbWVk
aWFzdHJlYW0vTWVkaWFTdHJlYW1DYXBhYmlsaXRpZXMuaWRsIFwKIAkkKFdlYkNvcmUpL01vZHVs
ZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1FdmVudC5pZGwgXAogCSQoV2ViQ29yZSkvTW9kdWxl
cy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVRyYWNrLmlkbCBcCiAJJChXZWJDb3JlKS9Nb2R1bGVz
L21lZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJhY2tFdmVudC5pZGwgXAogCSQoV2ViQ29yZSkvTW9k
dWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVRyYWNrU291cmNlc0NhbGxiYWNrLmlkbCBcCisJ
JChXZWJDb3JlKS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhVHJhY2tDb25zdHJhaW50LmlkbCBc
CisJJChXZWJDb3JlKS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhVHJhY2tDb25zdHJhaW50cy5p
ZGwgXAorCSQoV2ViQ29yZSkvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVRyYWNrQ29uc3RyYWlu
dFNldC5pZGwgXAogCSQoV2ViQ29yZSkvTW9kdWxlcy9tZWRpYXN0cmVhbS9OYXZpZ2F0b3JNZWRp
YVN0cmVhbS5pZGwgXAogCSQoV2ViQ29yZSkvTW9kdWxlcy9tZWRpYXN0cmVhbS9OYXZpZ2F0b3JV
c2VyTWVkaWFFcnJvci5pZGwgXAogCSQoV2ViQ29yZSkvTW9kdWxlcy9tZWRpYXN0cmVhbS9OYXZp
Z2F0b3JVc2VyTWVkaWFFcnJvckNhbGxiYWNrLmlkbCBcCkBAIC0xODQ1LDEyICsxODcxLDIwIEBA
IHdlYmNvcmVfbW9kdWxlc19zb3VyY2VzICs9IFwKIAlTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21l
ZGlhc291cmNlL1dlYktpdFNvdXJjZUJ1ZmZlci5oIFwKIAlTb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L21lZGlhc291cmNlL1dlYktpdFNvdXJjZUJ1ZmZlckxpc3QuY3BwIFwKIAlTb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL21lZGlhc291cmNlL1dlYktpdFNvdXJjZUJ1ZmZlckxpc3QuaCBcCisJU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9BbGxBdWRpb0NhcGFiaWxpdGllcy5oIFwKKwlT
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL0FsbFZpZGVvQ2FwYWJpbGl0aWVzLmgg
XAogCVNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vQXVkaW9TdHJlYW1UcmFjay5j
cHAgXAogCVNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vQXVkaW9TdHJlYW1UcmFj
ay5oIFwKKwlTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL0NhcGFiaWxpdHlSYW5n
ZS5jcHAgXAorCVNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vQ2FwYWJpbGl0eVJh
bmdlLmggXAogCVNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFDb25zdHJh
aW50c0ltcGwuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlh
Q29uc3RyYWludHNJbXBsLmggXAorCVNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0v
TWVkaWFTb3VyY2VTdGF0ZXMuY3BwIFwKKwlTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3Ry
ZWFtL01lZGlhU291cmNlU3RhdGVzLmggXAogCVNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFz
dHJlYW0vTWVkaWFTdHJlYW0uY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3Ry
ZWFtL01lZGlhU3RyZWFtLmggXAorCVNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0v
TWVkaWFTdHJlYW1DYXBhYmlsaXRpZXMuY3BwIFwKKwlTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21l
ZGlhc3RyZWFtL01lZGlhU3RyZWFtQ2FwYWJpbGl0aWVzLmggXAogCVNvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1FdmVudC5jcHAgXAogCVNvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1FdmVudC5oIFwKIAlTb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtUmVnaXN0cnkuY3BwIFwKQEAgLTE4NjIs
NiArMTg5NiwxMiBAQCB3ZWJjb3JlX21vZHVsZXNfc291cmNlcyArPSBcCiAJU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVRyYWNrU291cmNlc0NhbGxiYWNrLmgg
XAogCVNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1UcmFja1Nv
dXJjZXNSZXF1ZXN0LmNwcCBcCiAJU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9N
ZWRpYVN0cmVhbVRyYWNrU291cmNlc1JlcXVlc3QuaCBcCisJU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9tZWRpYXN0cmVhbS9NZWRpYVRyYWNrQ29uc3RyYWludC5jcHAgXAorCVNvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFUcmFja0NvbnN0cmFpbnQuaCBcCisJU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVRyYWNrQ29uc3RyYWludFNldC5jcHAgXAor
CVNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFUcmFja0NvbnN0cmFpbnRT
ZXQuaCBcCisJU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVRyYWNrQ29u
c3RyYWludHMuY3BwIFwKKwlTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlh
VHJhY2tDb25zdHJhaW50cy5oIFwKIAlTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFt
L05hdmlnYXRvck1lZGlhU3RyZWFtLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRp
YXN0cmVhbS9OYXZpZ2F0b3JNZWRpYVN0cmVhbS5oIFwKIAlTb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L21lZGlhc3RyZWFtL05hdmlnYXRvclVzZXJNZWRpYUVycm9yLmNwcCBcCkBAIC01MzI4LDYgKzUz
NjgsOCBAQCB3ZWJjb3JlX3BsYXRmb3JtX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2xpbnV4L0dhbWVwYWREZXZpY2VMaW51eC5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2xpbnV4L0dhbWVwYWREZXZpY2VMaW51eC5oIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYUNvbnN0cmFpbnRzLmggXAorCVNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtQXVkaW9Tb3VyY2UuY3BwIFwKKwlTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbUF1ZGlvU291cmNlLmggXAog
CVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtQ2VudGVyLmNw
cCBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1DZW50
ZXIuaCBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1D
b25zdHJhaW50c1ZhbGlkYXRpb25DbGllbnQuaCBcCkBAIC01MzM2LDYgKzUzNzgsNyBAQCB3ZWJj
b3JlX3BsYXRmb3JtX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlh
c3RyZWFtL01lZGlhU3RyZWFtRGVzY3JpcHRvci5oIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVNvdXJjZS5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtU291cmNlLmggXAorCVNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtU291cmNlQ2FwYWJpbGl0aWVzLmggXAog
CVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJhY2tTb3Vy
Y2VzUmVxdWVzdENsaWVudC5oIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVh
bS9SVENDb25maWd1cmF0aW9uLmggXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3Ry
ZWFtL1JUQ0RUTUZTZW5kZXJIYW5kbGVyLmggXApJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9tZWRpYXN0cmVhbS9BbGxBdWRpb0NhcGFiaWxpdGllcy5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vQWxsQXVkaW9DYXBhYmlsaXRpZXMuaAkocmV2
aXNpb24gMCkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vQWxsQXVkaW9D
YXBhYmlsaXRpZXMuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDU5IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMu
IGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4g
T1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
aWZuZGVmIEFsbEF1ZGlvQ2FwYWJpbGl0aWVzX2gKKyNkZWZpbmUgQWxsQXVkaW9DYXBhYmlsaXRp
ZXNfaAorCisjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKKworI2luY2x1ZGUgIk1lZGlhU3RyZWFt
Q2FwYWJpbGl0aWVzLmgiCisjaW5jbHVkZSAiTWVkaWFTdHJlYW1Tb3VyY2VDYXBhYmlsaXRpZXMu
aCIKKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUg
eworCitjbGFzcyBDYXBhYmlsaXR5UmFuZ2U7CitjbGFzcyBNZWRpYVN0cmVhbVNvdXJjZUNhcGFi
aWxpdGllczsKKworY2xhc3MgQWxsQXVkaW9DYXBhYmlsaXRpZXMgOiBwdWJsaWMgTWVkaWFTdHJl
YW1DYXBhYmlsaXRpZXMgeworcHVibGljOgorICAgIHN0YXRpYyBQYXNzUmVmUHRyPEFsbEF1ZGlv
Q2FwYWJpbGl0aWVzPiBjcmVhdGUoUGFzc1JlZlB0cjxNZWRpYVN0cmVhbVNvdXJjZUNhcGFiaWxp
dGllcz4gY2FwYWJpbGl0aWVzKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBB
bGxBdWRpb0NhcGFiaWxpdGllcyhjYXBhYmlsaXRpZXMpKTsKKyAgICB9CisgICAgdmlydHVhbCB+
QWxsQXVkaW9DYXBhYmlsaXRpZXMoKSB7IH0KKworcHJpdmF0ZToKKyAgICBleHBsaWNpdCBBbGxB
dWRpb0NhcGFiaWxpdGllcyhQYXNzUmVmUHRyPE1lZGlhU3RyZWFtU291cmNlQ2FwYWJpbGl0aWVz
PiBjYXBhYmlsaXRpZXMpCisgICAgICAgIDogTWVkaWFTdHJlYW1DYXBhYmlsaXRpZXMoY2FwYWJp
bGl0aWVzKQorICAgIHsKKyAgICB9Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNl
bmRpZiAvLyBBbGxBdWRpb0NhcGFiaWxpdGllc19oCisKKyNlbmRpZgpJbmRleDogU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9BbGxBdWRpb0NhcGFiaWxpdGllcy5pZGwKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9BbGxBdWRpb0NhcGFi
aWxpdGllcy5pZGwJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlh
c3RyZWFtL0FsbEF1ZGlvQ2FwYWJpbGl0aWVzLmlkbAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsx
LDMzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4gCisgKi8KKworWworICAgIE5vSW50ZXJmYWNlT2JqZWN0LAorICAgIENvbmRpdGlv
bmFsPU1FRElBX1NUUkVBTSwKKyAgICBKU0dlbmVyYXRlVG9KU09iamVjdCwKK10gaW50ZXJmYWNl
IEFsbEF1ZGlvQ2FwYWJpbGl0aWVzIDogTWVkaWFTdHJlYW1DYXBhYmlsaXRpZXMgeworICAgIHJl
YWRvbmx5IGF0dHJpYnV0ZSBET01TdHJpbmdbXSBzb3VyY2VJZDsKKyAgICByZWFkb25seSBhdHRy
aWJ1dGUgQ2FwYWJpbGl0eVJhbmdlIHZvbHVtZTsKK307CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL21lZGlhc3RyZWFtL0FsbFZpZGVvQ2FwYWJpbGl0aWVzLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9BbGxWaWRlb0NhcGFiaWxpdGllcy5o
CShyZXZpc2lvbiAwKQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9BbGxW
aWRlb0NhcGFiaWxpdGllcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNTcgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIs
IElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwg
SU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAq
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNpZm5kZWYgQWxsVmlkZW9DYXBhYmlsaXRpZXNfaAorI2RlZmluZSBBbGxWaWRlb0NhcGFi
aWxpdGllc19oCisKKyNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQorCisjaW5jbHVkZSAiTWVkaWFT
dHJlYW1DYXBhYmlsaXRpZXMuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBDYXBh
YmlsaXR5UmFuZ2U7CitjbGFzcyBNZWRpYVN0cmVhbVNvdXJjZUNhcGFiaWxpdGllczsKKworY2xh
c3MgQWxsVmlkZW9DYXBhYmlsaXRpZXMgOiBwdWJsaWMgTWVkaWFTdHJlYW1DYXBhYmlsaXRpZXMg
eworcHVibGljOgorICAgIHN0YXRpYyBQYXNzUmVmUHRyPEFsbFZpZGVvQ2FwYWJpbGl0aWVzPiBj
cmVhdGUoUGFzc1JlZlB0cjxNZWRpYVN0cmVhbVNvdXJjZUNhcGFiaWxpdGllcz4gY2FwYWJpbGl0
aWVzKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBBbGxWaWRlb0NhcGFiaWxp
dGllcyhjYXBhYmlsaXRpZXMpKTsKKyAgICB9CisgICAgdmlydHVhbCB+QWxsVmlkZW9DYXBhYmls
aXRpZXMoKSB7IH0KKworcHJpdmF0ZToKKyAgICBleHBsaWNpdCBBbGxWaWRlb0NhcGFiaWxpdGll
cyhQYXNzUmVmUHRyPE1lZGlhU3RyZWFtU291cmNlQ2FwYWJpbGl0aWVzPiBjYXBhYmlsaXRpZXMp
CisgICAgICAgIDogTWVkaWFTdHJlYW1DYXBhYmlsaXRpZXMoY2FwYWJpbGl0aWVzKQorICAgIHsK
KyAgICB9Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBBbGxWaWRl
b0NhcGFiaWxpdGllc19oCisKKyNlbmRpZgpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9t
ZWRpYXN0cmVhbS9BbGxWaWRlb0NhcGFiaWxpdGllcy5pZGwKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9BbGxWaWRlb0NhcGFiaWxpdGllcy5pZGwJKHJl
dmlzaW9uIDApCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL0FsbFZpZGVv
Q2FwYWJpbGl0aWVzLmlkbAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDM4IEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJ
TkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElO
Qy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8K
KworWworICAgIE5vSW50ZXJmYWNlT2JqZWN0LAorICAgIENvbmRpdGlvbmFsPU1FRElBX1NUUkVB
TSwKKyAgICBKU0dlbmVyYXRlVG9KU09iamVjdCwKK10gaW50ZXJmYWNlIEFsbFZpZGVvQ2FwYWJp
bGl0aWVzIDogTWVkaWFTdHJlYW1DYXBhYmlsaXRpZXMgeworICAgIHJlYWRvbmx5IGF0dHJpYnV0
ZSBET01TdHJpbmdbXSBzb3VyY2VUeXBlOworICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBET01TdHJp
bmdbXSBzb3VyY2VJZDsKKyAgICByZWFkb25seSBhdHRyaWJ1dGUgQ2FwYWJpbGl0eVJhbmdlIHdp
ZHRoOworICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBDYXBhYmlsaXR5UmFuZ2UgaGVpZ2h0OworICAg
IHJlYWRvbmx5IGF0dHJpYnV0ZSBDYXBhYmlsaXR5UmFuZ2UgZnJhbWVSYXRlOworICAgIHJlYWRv
bmx5IGF0dHJpYnV0ZSBDYXBhYmlsaXR5UmFuZ2UgYXNwZWN0UmF0aW87CisgICAgcmVhZG9ubHkg
YXR0cmlidXRlIERPTVN0cmluZ1tdICBmYWNpbmdNb2RlOworfTsKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vQXVkaW9TdHJlYW1UcmFjay5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9BdWRpb1N0cmVhbVRyYWNrLmNw
cAkocmV2aXNpb24gMTU3MDE2KQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVh
bS9BdWRpb1N0cmVhbVRyYWNrLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzcsMTQgKzM3LDE3IEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogUGFzc1JlZlB0cjxBdWRpb1N0cmVhbVRyYWNrPiBBdWRp
b1N0cmVhbVRyYWNrOjpjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgY29u
c3QgRGljdGlvbmFyeSYgYXVkaW9Db25zdHJhaW50cykKIHsKLSAgICBSZWZQdHI8QXVkaW9TdHJl
YW1UcmFjaz4gdHJhY2sgPSBhZG9wdFJlZihuZXcgQXVkaW9TdHJlYW1UcmFjayhjb250ZXh0LCAw
LCAmYXVkaW9Db25zdHJhaW50cykpOwotICAgIHJldHVybiB0cmFjay5yZWxlYXNlKCk7CisgICAg
cmV0dXJuIGFkb3B0UmVmKG5ldyBBdWRpb1N0cmVhbVRyYWNrKGNvbnRleHQsIDAsICZhdWRpb0Nv
bnN0cmFpbnRzKSk7CiB9CiAKIFBhc3NSZWZQdHI8QXVkaW9TdHJlYW1UcmFjaz4gQXVkaW9TdHJl
YW1UcmFjazo6Y3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIE1lZGlhU3Ry
ZWFtU291cmNlKiBzb3VyY2UpCiB7Ci0gICAgUmVmUHRyPEF1ZGlvU3RyZWFtVHJhY2s+IHRyYWNr
ID0gYWRvcHRSZWYobmV3IEF1ZGlvU3RyZWFtVHJhY2soY29udGV4dCwgc291cmNlLCAwKSk7Ci0g
ICAgcmV0dXJuIHRyYWNrLnJlbGVhc2UoKTsKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3IEF1ZGlv
U3RyZWFtVHJhY2soY29udGV4dCwgc291cmNlLCAwKSk7Cit9CisKK1Bhc3NSZWZQdHI8QXVkaW9T
dHJlYW1UcmFjaz4gQXVkaW9TdHJlYW1UcmFjazo6Y3JlYXRlKE1lZGlhU3RyZWFtVHJhY2sqIHRy
YWNrKQoreworICAgIHJldHVybiBhZG9wdFJlZihuZXcgQXVkaW9TdHJlYW1UcmFjayh0cmFjaykp
OwogfQogCiBBdWRpb1N0cmVhbVRyYWNrOjpBdWRpb1N0cmVhbVRyYWNrKFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQqIGNvbnRleHQsIE1lZGlhU3RyZWFtU291cmNlKiBzb3VyY2UsIGNvbnN0IERpY3Rp
b25hcnkqIGF1ZGlvQ29uc3RyYWludHMpCkBAIC01Miw2ICs1NSwxMSBAQCBBdWRpb1N0cmVhbVRy
YWNrOjpBdWRpb1N0cmVhbVRyYWNrKFNjcmlwCiB7CiB9CiAKK0F1ZGlvU3RyZWFtVHJhY2s6OkF1
ZGlvU3RyZWFtVHJhY2soTWVkaWFTdHJlYW1UcmFjayogdHJhY2spCisgICAgOiBNZWRpYVN0cmVh
bVRyYWNrKHRyYWNrKQoreworfQorCiBjb25zdCBBdG9taWNTdHJpbmcmIEF1ZGlvU3RyZWFtVHJh
Y2s6OmtpbmQoKSBjb25zdAogewogICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxBdG9taWNTdHJp
bmc+IGF1ZGlvS2luZCgiYXVkaW8iLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFs
KTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vQXVkaW9TdHJlYW1U
cmFjay5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0v
QXVkaW9TdHJlYW1UcmFjay5oCShyZXZpc2lvbiAxNTcwMTYpCisrKyBTb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL21lZGlhc3RyZWFtL0F1ZGlvU3RyZWFtVHJhY2suaAkod29ya2luZyBjb3B5KQpAQCAt
MjksMTggKzI5LDE5IEBACiAjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKIAogI2luY2x1ZGUgIk1l
ZGlhU3RyZWFtVHJhY2suaCIKLSNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAjaW5jbHVkZSA8d3Rm
L1JlZkNvdW50ZWQuaD4KKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAogY2xhc3MgTWVkaWFTdHJlYW1Tb3VyY2U7CiBjbGFzcyBTY3JpcHRFeGVjdXRpb25D
b250ZXh0OwogCi1jbGFzcyBBdWRpb1N0cmVhbVRyYWNrIDogcHVibGljIE1lZGlhU3RyZWFtVHJh
Y2sgeworY2xhc3MgQXVkaW9TdHJlYW1UcmFjayBGSU5BTCA6IHB1YmxpYyBNZWRpYVN0cmVhbVRy
YWNrIHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxBdWRpb1N0cmVhbVRyYWNrPiBj
cmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIGNvbnN0IERpY3Rpb25hcnkmKTsKICAgICBz
dGF0aWMgUGFzc1JlZlB0cjxBdWRpb1N0cmVhbVRyYWNrPiBjcmVhdGUoU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCosIE1lZGlhU3RyZWFtU291cmNlKik7CisgICAgc3RhdGljIFBhc3NSZWZQdHI8QXVk
aW9TdHJlYW1UcmFjaz4gY3JlYXRlKE1lZGlhU3RyZWFtVHJhY2sqKTsKIAogICAgIHZpcnR1YWwg
fkF1ZGlvU3RyZWFtVHJhY2soKSB7IH0KIApAQCAtNDgsNiArNDksNyBAQCBwdWJsaWM6CiAKIHBy
aXZhdGU6CiAgICAgQXVkaW9TdHJlYW1UcmFjayhTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgTWVk
aWFTdHJlYW1Tb3VyY2UqLCBjb25zdCBEaWN0aW9uYXJ5Kik7CisgICAgZXhwbGljaXQgQXVkaW9T
dHJlYW1UcmFjayhNZWRpYVN0cmVhbVRyYWNrKik7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL0NhcGFiaWxpdHlS
YW5nZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVh
bS9DYXBhYmlsaXR5UmFuZ2UuY3BwCShyZXZpc2lvbiAwKQorKysgU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9tZWRpYXN0cmVhbS9DYXBhYmlsaXR5UmFuZ2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0w
LDAgKzEsOTIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBD
T01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLiAKKyAqCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaWYgRU5BQkxFKE1FRElB
X1NUUkVBTSkKKworI2luY2x1ZGUgIkNhcGFiaWxpdHlSYW5nZS5oIgorCisjaW5jbHVkZSAiSlNE
T01CaW5kaW5nLmgiCisjaW5jbHVkZSAiTWVkaWFTb3VyY2VTdGF0ZXMuaCIKKyNpbmNsdWRlICJT
Y3JpcHRWYWx1ZS5oIgorI2luY2x1ZGUgPGludGVycHJldGVyL0NhbGxGcmFtZS5oPgorI2luY2x1
ZGUgPHJ1bnRpbWUvSlNDSlNWYWx1ZS5oPgorCit1c2luZyBuYW1lc3BhY2UgSlNDOworCituYW1l
c3BhY2UgV2ViQ29yZSB7CisKK1Bhc3NSZWZQdHI8Q2FwYWJpbGl0eVJhbmdlPiBDYXBhYmlsaXR5
UmFuZ2U6OmNyZWF0ZShjb25zdCBNZWRpYVN0cmVhbVNvdXJjZUNhcGFiaWxpdHlSYW5nZSYgcmFu
Z2VJbmZvKQoreworICAgIHJldHVybiBhZG9wdFJlZihuZXcgQ2FwYWJpbGl0eVJhbmdlKHJhbmdl
SW5mbykpOworfQorCitDYXBhYmlsaXR5UmFuZ2U6OkNhcGFiaWxpdHlSYW5nZShjb25zdCBNZWRp
YVN0cmVhbVNvdXJjZUNhcGFiaWxpdHlSYW5nZSYgcmFuZ2VJbmZvKQorICAgIDogbV9yYW5nZUlu
Zm8ocmFuZ2VJbmZvKQoreworfQorCitzdGF0aWMgU2NyaXB0VmFsdWUgc2NyaXB0VmFsdWUoRXhl
Y1N0YXRlKiBleGVjLCBjb25zdCBNZWRpYVN0cmVhbVNvdXJjZUNhcGFiaWxpdHlSYW5nZTo6VmFs
dWVVbmlvbiYgdmFsdWUsIE1lZGlhU3RyZWFtU291cmNlQ2FwYWJpbGl0eVJhbmdlOjpUeXBlIHR5
cGUpCit7CisgICAgLy8gTk9URTogdGhlIHNwZWMgc2F5czoKKyAgICAvLyAgICAgIC4uLiBhbiBp
bXBsZW1lbnRhdGlvbiBzaG91bGQgbWFrZSBhIHJlYXNvbmFibGUgYXR0ZW1wdCB0byB0cmFuc2xh
dGUgYW5kIHNjYWxlIHRoZSBoYXJkd2FyZSdzIHNldHRpbmcKKyAgICAvLyAgICAgIG9udG8gdGhl
IG1hcHBpbmcgcHJvdmlkZWQgYnkgdGhpcyBzcGVjaWZpY2F0aW9uLiBJZiB0aGlzIGlzIG5vdCBw
b3NzaWJsZSBkdWUgdG8gdGhlIHVzZXIgYWdlbnQncworICAgIC8vICAgICAgaW5hYmlsaXR5IHRv
IHJldHJpZXZlIGEgZ2l2ZW4gY2FwYWJpbGl0eSBmcm9tIGEgc291cmNlLCB0aGVuIGZvciBDYXBh
YmlsaXR5UmFuZ2UtdHlwZWQgY2FwYWJpbGl0aWVzLAorICAgIC8vICAgICAgdGhlIG1pbiBhbmQg
bWF4IGZpZWxkcyB3aWxsIG5vdCBiZSBwcmVzZW50IG9uIHRoZSByZXR1cm5lZCBkaWN0aW9uYXJ5
LCBhbmQgdGhlIHN1cHBvcnRlZCBmaWVsZCB3aWxsIGJlIGZhbHNlLgorICAgIC8vIFdlIGRvbid0
IGRvIHRoaXMgY3VycmVudGx5IGJlY2F1c2UgSSBkb24ndCBrbm93IG9mIGFuIGluc3RhbmNlIHdo
ZXJlIGl0IGlzbid0IHBvc3NpYmxlIHRvIHJldHJpZXZlIGEgc291cmNlCisgICAgLy8gY2FwYWJp
bGl0eSwgYnV0IHdoZW4gd2UgaGF2ZSB0byBkZWFsIHdpdGggdGhpcyB3ZSB3aWxsIG5lZWQgdG8g
bWFyayBDYXBhYmlsaXR5UmFuZ2UubWluIGFuZCBDYXBhYmlsaXR5UmFuZ2UubWF4IGFzCisgICAg
Ly8gIkN1c3RvbSIgYW5kIHJldHVybiBqc1VuZGVmaW5lZCgpIGZyb20gdGhlIGN1c3RvbSBnZXR0
ZXIgdG8gc3VwcG9ydCBpdC4KKyAgICAKKyAgICBzd2l0Y2ggKHR5cGUpIHsKKyAgICBjYXNlIE1l
ZGlhU3RyZWFtU291cmNlQ2FwYWJpbGl0eVJhbmdlOjpGbG9hdDoKKyAgICAgICAgcmV0dXJuIFNj
cmlwdFZhbHVlKGV4ZWMtPnZtKCksIEpTVmFsdWUodmFsdWUuYXNGbG9hdCkpOworICAgICAgICBi
cmVhazsKKyAgICBjYXNlIE1lZGlhU3RyZWFtU291cmNlQ2FwYWJpbGl0eVJhbmdlOjpVTG9uZzoK
KyAgICAgICAgcmV0dXJuIFNjcmlwdFZhbHVlKGV4ZWMtPnZtKCksIEpTVmFsdWUodmFsdWUuYXNV
TG9uZykpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIE1lZGlhU3RyZWFtU291cmNlQ2FwYWJp
bGl0eVJhbmdlOjpVbmRlZmluZWQ6CisgICAgICAgIHJldHVybiBTY3JpcHRWYWx1ZShleGVjLT52
bSgpLCBqc1VuZGVmaW5lZCgpKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorCisgICAgQVNTRVJU
X05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIFNjcmlwdFZhbHVlKGV4ZWMtPnZtKCksIGpzVW5k
ZWZpbmVkKCkpOworfQorCitTY3JpcHRWYWx1ZSBDYXBhYmlsaXR5UmFuZ2U6Om1pbihFeGVjU3Rh
dGUqIGV4ZWMpIGNvbnN0Cit7CisgICAgcmV0dXJuIHNjcmlwdFZhbHVlKGV4ZWMsIG1fcmFuZ2VJ
bmZvLm1pbigpLCBtX3JhbmdlSW5mby50eXBlKCkpOworfQorCitTY3JpcHRWYWx1ZSBDYXBhYmls
aXR5UmFuZ2U6Om1heChFeGVjU3RhdGUqIGV4ZWMpIGNvbnN0Cit7CisgICAgcmV0dXJuIHNjcmlw
dFZhbHVlKGV4ZWMsIG1fcmFuZ2VJbmZvLm1heCgpLCBtX3JhbmdlSW5mby50eXBlKCkpOworfQor
Cit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZgpJbmRleDogU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9tZWRpYXN0cmVhbS9DYXBhYmlsaXR5UmFuZ2UuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL0NhcGFiaWxpdHlSYW5nZS5oCShyZXZpc2lv
biAwKQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9DYXBhYmlsaXR5UmFu
Z2UuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDYwIEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5Z
CisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAg
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKgorICovCisKKyNpZm5kZWYgQ2FwYWJp
bGl0eVJhbmdlX2gKKyNkZWZpbmUgQ2FwYWJpbGl0eVJhbmdlX2gKKworI2lmIEVOQUJMRShNRURJ
QV9TVFJFQU0pCisKKyNpbmNsdWRlICJNZWRpYVN0cmVhbVNvdXJjZUNhcGFiaWxpdGllcy5oIgor
I2luY2x1ZGUgIlNjcmlwdFZhbHVlLmgiCisjaW5jbHVkZSAiU2NyaXB0V3JhcHBhYmxlLmgiCisj
aW5jbHVkZSA8aW50ZXJwcmV0ZXIvQ2FsbEZyYW1lLmg+CisjaW5jbHVkZSA8d3RmL1JlZkNvdW50
ZWQuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBDYXBhYmlsaXR5UmFuZ2UgOiBw
dWJsaWMgUmVmQ291bnRlZDxDYXBhYmlsaXR5UmFuZ2U+LCBwdWJsaWMgU2NyaXB0V3JhcHBhYmxl
IHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIH5DYXBhYmlsaXR5UmFuZ2UoKSB7IH0KKworICAgIHN0
YXRpYyBQYXNzUmVmUHRyPENhcGFiaWxpdHlSYW5nZT4gY3JlYXRlKGNvbnN0IE1lZGlhU3RyZWFt
U291cmNlQ2FwYWJpbGl0eVJhbmdlJik7CisKKyAgICBTY3JpcHRWYWx1ZSBtaW4oSlNDOjpFeGVj
U3RhdGUqKSBjb25zdDsKKyAgICBTY3JpcHRWYWx1ZSBtYXgoSlNDOjpFeGVjU3RhdGUqKSBjb25z
dDsKKyAgICBib29sIHN1cHBvcnRlZCgpIGNvbnN0IHsgcmV0dXJuIG1fcmFuZ2VJbmZvLnN1cHBv
cnRlZCgpOyB9CisKK3ByaXZhdGU6CisgICAgQ2FwYWJpbGl0eVJhbmdlKGNvbnN0IE1lZGlhU3Ry
ZWFtU291cmNlQ2FwYWJpbGl0eVJhbmdlJik7CisgICAgCisgICAgTWVkaWFTdHJlYW1Tb3VyY2VD
YXBhYmlsaXR5UmFuZ2UgbV9yYW5nZUluZm87Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CisKKyNlbmRpZiAvLyBDYXBhYmlsaXR5UmFuZ2VfaAorCisjZW5kaWYKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vQ2FwYWJpbGl0eVJhbmdlLmlkbAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL0NhcGFiaWxpdHlSYW5nZS5p
ZGwJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL0Nh
cGFiaWxpdHlSYW5nZS5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwzMyBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwg
SU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJ
TkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICog
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICov
CisKK1sKKyAgICBOb0ludGVyZmFjZU9iamVjdCwKKyAgICBDb25kaXRpb25hbD1NRURJQV9TVFJF
QU0sCitdIGludGVyZmFjZSBDYXBhYmlsaXR5UmFuZ2UgeworICAgIFtDYWxsV2l0aD1TY3JpcHRT
dGF0ZV0gcmVhZG9ubHkgYXR0cmlidXRlIGFueSBtYXg7CisgICAgW0NhbGxXaXRoPVNjcmlwdFN0
YXRlXSByZWFkb25seSBhdHRyaWJ1dGUgYW55IG1pbjsKKyAgICByZWFkb25seSBhdHRyaWJ1dGUg
Ym9vbGVhbiBzdXBwb3J0ZWQ7Cit9OwpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRp
YXN0cmVhbS9NZWRpYUNvbnN0cmFpbnRzSW1wbC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFDb25zdHJhaW50c0ltcGwuaAkocmV2aXNpb24g
MTU3MDE2KQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYUNvbnN0
cmFpbnRzSW1wbC5oCSh3b3JraW5nIGNvcHkpCkBAIC00NSw3ICs0NSw5IEBAIGNsYXNzIE1lZGlh
Q29uc3RyYWludHNJbXBsIDogcHVibGljIE1lZGkKIHB1YmxpYzoKICAgICBzdGF0aWMgUGFzc1Jl
ZlB0cjxNZWRpYUNvbnN0cmFpbnRzSW1wbD4gY3JlYXRlKCk7CiAgICAgc3RhdGljIFBhc3NSZWZQ
dHI8TWVkaWFDb25zdHJhaW50c0ltcGw+IGNyZWF0ZShjb25zdCBEaWN0aW9uYXJ5JiwgRXhjZXB0
aW9uQ29kZSYpOworCiAgICAgdmlydHVhbCB+TWVkaWFDb25zdHJhaW50c0ltcGwoKTsKKyAgICBi
b29sIGluaXRpYWxpemUoY29uc3QgRGljdGlvbmFyeSYpOwogCiAgICAgdmlydHVhbCB2b2lkIGdl
dE1hbmRhdG9yeUNvbnN0cmFpbnRzKFZlY3RvcjxNZWRpYUNvbnN0cmFpbnQ+JikgY29uc3QgT1ZF
UlJJREU7CiAgICAgdmlydHVhbCB2b2lkIGdldE9wdGlvbmFsQ29uc3RyYWludHMoVmVjdG9yPE1l
ZGlhQ29uc3RyYWludD4mKSBjb25zdCBPVkVSUklERTsKQEAgLTU1LDcgKzU3LDYgQEAgcHVibGlj
OgogCiBwcml2YXRlOgogICAgIE1lZGlhQ29uc3RyYWludHNJbXBsKCkgeyB9Ci0gICAgYm9vbCBp
bml0aWFsaXplKGNvbnN0IERpY3Rpb25hcnkmKTsKIAogICAgIEhhc2hNYXA8U3RyaW5nLCBTdHJp
bmc+IG1fbWFuZGF0b3J5Q29uc3RyYWludHM7CiAgICAgVmVjdG9yPE1lZGlhQ29uc3RyYWludD4g
bV9vcHRpb25hbENvbnN0cmFpbnRzOwpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRp
YXN0cmVhbS9NZWRpYVNvdXJjZVN0YXRlcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVNvdXJjZVN0YXRlcy5jcHAJKHJldmlzaW9uIDAp
CisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU291cmNlU3RhdGVz
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDEwMCBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElT
JycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQor
ICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUg
ImNvbmZpZy5oIgorCisjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKKworI2luY2x1ZGUgIk1lZGlh
U291cmNlU3RhdGVzLmgiCisKKyNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KKworbmFt
ZXNwYWNlIFdlYkNvcmUgeworCitQYXNzUmVmUHRyPE1lZGlhU291cmNlU3RhdGVzPiBNZWRpYVNv
dXJjZVN0YXRlczo6Y3JlYXRlKGNvbnN0IE1lZGlhU3RyZWFtU291cmNlU3RhdGVzJiBzdGF0ZXMp
Cit7CisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBNZWRpYVNvdXJjZVN0YXRlcyhzdGF0ZXMpKTsK
K30KKworTWVkaWFTb3VyY2VTdGF0ZXM6Ok1lZGlhU291cmNlU3RhdGVzKGNvbnN0IE1lZGlhU3Ry
ZWFtU291cmNlU3RhdGVzJiBzdGF0ZXMpCisgICAgOiBtX1NvdXJjZVN0YXRlcyhzdGF0ZXMpCit7
Cit9CisKK2NvbnN0IEF0b21pY1N0cmluZyYgTWVkaWFTb3VyY2VTdGF0ZXM6OmZhY2luZ01vZGUo
TWVkaWFTdHJlYW1Tb3VyY2VTdGF0ZXM6OlZpZGVvRmFjaW5nTW9kZSBtb2RlKQoreworICAgIHN0
YXRpYyBOZXZlckRlc3Ryb3llZDxBdG9taWNTdHJpbmc+IHVzZXJGYWNpbmcoInVzZXIiLCBBdG9t
aWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95
ZWQ8QXRvbWljU3RyaW5nPiBlbnZpcm9ubWVudEZhY2luZygiZW52aXJvbm1lbnQiLCBBdG9taWNT
dHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8
QXRvbWljU3RyaW5nPiBsZWZ0RmFjaW5nKCJsZWZ0IiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RG
cm9tTGl0ZXJhbCk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEF0b21pY1N0cmluZz4gcmln
aHRGYWNpbmcoInJpZ2h0IiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7Cisg
ICAgCisgICAgc3dpdGNoIChtb2RlKSB7CisgICAgY2FzZSBNZWRpYVN0cmVhbVNvdXJjZVN0YXRl
czo6VXNlcjoKKyAgICAgICAgcmV0dXJuIHVzZXJGYWNpbmc7CisgICAgY2FzZSBNZWRpYVN0cmVh
bVNvdXJjZVN0YXRlczo6RW52aXJvbm1lbnQ6CisgICAgICAgIHJldHVybiBlbnZpcm9ubWVudEZh
Y2luZzsKKyAgICBjYXNlIE1lZGlhU3RyZWFtU291cmNlU3RhdGVzOjpMZWZ0OgorICAgICAgICBy
ZXR1cm4gbGVmdEZhY2luZzsKKyAgICBjYXNlIE1lZGlhU3RyZWFtU291cmNlU3RhdGVzOjpSaWdo
dDoKKyAgICAgICAgcmV0dXJuIHJpZ2h0RmFjaW5nOworICAgIH0KKworICAgIEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOworICAgIHJldHVybiBlbXB0eUF0b207Cit9CisKK2NvbnN0IEF0b21pY1N0cmlu
ZyYgTWVkaWFTb3VyY2VTdGF0ZXM6OnNvdXJjZVR5cGUoTWVkaWFTdHJlYW1Tb3VyY2VTdGF0ZXM6
OlNvdXJjZVR5cGUgc291cmNlVHlwZSkKK3sKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8QXRv
bWljU3RyaW5nPiBub25lKCJub25lIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJh
bCk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEF0b21pY1N0cmluZz4gY2FtZXJhKCJjYW1l
cmEiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKKyAgICBzdGF0aWMgTmV2
ZXJEZXN0cm95ZWQ8QXRvbWljU3RyaW5nPiBtaWNyb3Bob25lKCJtaWNyb3Bob25lIiwgQXRvbWlj
U3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CisKKyAgICBzd2l0Y2ggKHNvdXJjZVR5cGUp
IHsKKyAgICBjYXNlIE1lZGlhU3RyZWFtU291cmNlU3RhdGVzOjpOb25lOgorICAgICAgICByZXR1
cm4gbm9uZTsKKyAgICBjYXNlIE1lZGlhU3RyZWFtU291cmNlU3RhdGVzOjpDYW1lcmE6CisgICAg
ICAgIHJldHVybiBjYW1lcmE7CisgICAgY2FzZSBNZWRpYVN0cmVhbVNvdXJjZVN0YXRlczo6TWlj
cm9waG9uZToKKyAgICAgICAgcmV0dXJuIG1pY3JvcGhvbmU7CisgICAgfQorCisgICAgQVNTRVJU
X05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIGVtcHR5QXRvbTsKK30KKworY29uc3QgQXRvbWlj
U3RyaW5nJiBNZWRpYVNvdXJjZVN0YXRlczo6c291cmNlVHlwZSgpIGNvbnN0Cit7CisgICAgcmV0
dXJuIE1lZGlhU291cmNlU3RhdGVzOjpzb3VyY2VUeXBlKG1fU291cmNlU3RhdGVzLnNvdXJjZVR5
cGUpOworfQorCitjb25zdCBBdG9taWNTdHJpbmcmIE1lZGlhU291cmNlU3RhdGVzOjpmYWNpbmdN
b2RlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gTWVkaWFTb3VyY2VTdGF0ZXM6OmZhY2luZ01vZGUo
bV9Tb3VyY2VTdGF0ZXMuZmFjaW5nTW9kZSk7Cit9CisKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQorCisjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVk
aWFTb3VyY2VTdGF0ZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21l
ZGlhc3RyZWFtL01lZGlhU291cmNlU3RhdGVzLmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU291cmNlU3RhdGVzLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTAsMCArMSw2NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBNZWRpYVNvdXJjZVN0YXRlc19o
CisjZGVmaW5lIE1lZGlhU291cmNlU3RhdGVzX2gKKworI2lmIEVOQUJMRShNRURJQV9TVFJFQU0p
CisKKyNpbmNsdWRlICJNZWRpYVN0cmVhbVNvdXJjZUNhcGFiaWxpdGllcy5oIgorI2luY2x1ZGUg
IlNjcmlwdFdyYXBwYWJsZS5oIgorI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CisjaW5jbHVkZSA8
d3RmL1JlZkNvdW50ZWQuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBNZWRpYVNv
dXJjZVN0YXRlcyA6IHB1YmxpYyBSZWZDb3VudGVkPE1lZGlhU291cmNlU3RhdGVzPiwgcHVibGlj
IFNjcmlwdFdyYXBwYWJsZSB7CitwdWJsaWM6CisgICAgc3RhdGljIFBhc3NSZWZQdHI8TWVkaWFT
b3VyY2VTdGF0ZXM+IGNyZWF0ZShjb25zdCBNZWRpYVN0cmVhbVNvdXJjZVN0YXRlcyYpOworCisg
ICAgc3RhdGljIGNvbnN0IEF0b21pY1N0cmluZyYgc291cmNlVHlwZShNZWRpYVN0cmVhbVNvdXJj
ZVN0YXRlczo6U291cmNlVHlwZSk7CisgICAgc3RhdGljIGNvbnN0IEF0b21pY1N0cmluZyYgZmFj
aW5nTW9kZShNZWRpYVN0cmVhbVNvdXJjZVN0YXRlczo6VmlkZW9GYWNpbmdNb2RlKTsKKyAgICAK
KyAgICBjb25zdCBBdG9taWNTdHJpbmcmIHNvdXJjZVR5cGUoKSBjb25zdDsKKyAgICBjb25zdCBB
dG9taWNTdHJpbmcmIHNvdXJjZUlkKCkgY29uc3QgeyByZXR1cm4gbV9Tb3VyY2VTdGF0ZXMuc291
cmNlSWQ7IH0KKyAgICB1bnNpZ25lZCBsb25nIHdpZHRoKCkgY29uc3QgeyByZXR1cm4gbV9Tb3Vy
Y2VTdGF0ZXMud2lkdGg7IH0KKyAgICB1bnNpZ25lZCBsb25nIGhlaWdodCgpIGNvbnN0IHsgcmV0
dXJuIG1fU291cmNlU3RhdGVzLmhlaWdodDsgfQorICAgIGZsb2F0IGZyYW1lUmF0ZSgpIGNvbnN0
IHsgcmV0dXJuIG1fU291cmNlU3RhdGVzLmZyYW1lUmF0ZTsgfQorICAgIGZsb2F0IGFzcGVjdFJh
dGlvKCkgY29uc3QgeyByZXR1cm4gbV9Tb3VyY2VTdGF0ZXMuYXNwZWN0UmF0aW87IH0KKyAgICBj
b25zdCBBdG9taWNTdHJpbmcmIGZhY2luZ01vZGUoKSBjb25zdDsKKyAgICB1bnNpZ25lZCBsb25n
IHZvbHVtZSgpIGNvbnN0IHsgcmV0dXJuIG1fU291cmNlU3RhdGVzLnZvbHVtZTsgfQorICAgIAor
ICAgIGJvb2wgaGFzVmlkZW9Tb3VyY2UoKSBjb25zdCB7IHJldHVybiBtX1NvdXJjZVN0YXRlcy5z
b3VyY2VUeXBlID09IE1lZGlhU3RyZWFtU291cmNlU3RhdGVzOjpDYW1lcmE7IH0KKworcHJpdmF0
ZToKKyAgICBleHBsaWNpdCBNZWRpYVNvdXJjZVN0YXRlcyhjb25zdCBNZWRpYVN0cmVhbVNvdXJj
ZVN0YXRlcyYpOworCisgICAgTWVkaWFTdHJlYW1Tb3VyY2VTdGF0ZXMgbV9Tb3VyY2VTdGF0ZXM7
Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBNZWRpYVNvdXJjZVN0
YXRlc19oCisKKyNlbmRpZgpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVh
bS9NZWRpYVNvdXJjZVN0YXRlcy5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9tZWRpYXN0cmVhbS9NZWRpYVNvdXJjZVN0YXRlcy5pZGwJKHJldmlzaW9uIDApCisrKyBT
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU291cmNlU3RhdGVzLmlkbAko
d29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDQ0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEz
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQg
QU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
KyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworZW51bSBTb3VyY2VUeXBl
RW51bSB7ICJub25lIiwgImNhbWVyYSIsICJtaWNyb3Bob25lIiB9OworZW51bSBWaWRlb0ZhY2lu
Z01vZGVFbnVtIHsgInVzZXIiLCAiZW52aXJvbm1lbnQiLCAibGVmdCIsICJyaWdodCIgfTsKKwor
WworICAgIENvbmRpdGlvbmFsPU1FRElBX1NUUkVBTSwKKyAgICBJbXBsZW1lbnRhdGlvbkxhY2tz
VlRhYmxlLAorICAgIE5vSW50ZXJmYWNlT2JqZWN0LAorXSBpbnRlcmZhY2UgTWVkaWFTb3VyY2VT
dGF0ZXMgeworICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTb3VyY2VUeXBlRW51bSBzb3VyY2VUeXBl
OworICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBET01TdHJpbmcgc291cmNlSWQ7CisKKyAgICBbQ3Vz
dG9tR2V0dGVyXSByZWFkb25seSBhdHRyaWJ1dGUgdW5zaWduZWQgbG9uZyB3aWR0aDsKKyAgICBb
Q3VzdG9tR2V0dGVyXSByZWFkb25seSBhdHRyaWJ1dGUgdW5zaWduZWQgbG9uZyBoZWlnaHQ7Cisg
ICAgW0N1c3RvbUdldHRlcl0gcmVhZG9ubHkgYXR0cmlidXRlIGZsb2F0IGZyYW1lUmF0ZTsKKyAg
ICBbQ3VzdG9tR2V0dGVyXSByZWFkb25seSBhdHRyaWJ1dGUgZmxvYXQgYXNwZWN0UmF0aW87Cisg
ICAgW0N1c3RvbUdldHRlcl0gcmVhZG9ubHkgYXR0cmlidXRlIFZpZGVvRmFjaW5nTW9kZUVudW0g
ZmFjaW5nTW9kZTsKKyAgICBbQ3VzdG9tR2V0dGVyXSByZWFkb25seSBhdHRyaWJ1dGUgdW5zaWdu
ZWQgbG9uZyB2b2x1bWU7Cit9OworCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlh
c3RyZWFtL01lZGlhU3RyZWFtLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtLmNwcAkocmV2aXNpb24gMTU3MDE2KQorKysgU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbS5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTU2LDIyICs1NiwxMyBAQCBzdGF0aWMgdm9pZCBwcm9jZXNzVHJhY2soTWVkaWFT
dHJlYW1UcmFjCiAgICAgICAgIHJldHVybjsKIAogICAgIE1lZGlhU3RyZWFtU291cmNlKiBzb3Vy
Y2UgPSB0cmFjay0+c291cmNlKCk7Ci0gICAgaWYgKCFjb250YWluc1NvdXJjZShzb3VyY2VWZWN0
b3IsIHNvdXJjZSkpIHsKLSAgICAgICAgaWYgKHNvdXJjZS0+c3RyZWFtKCkpIHsKLSAgICAgICAg
ICAgIC8vIEZJWE1FOiB0aGlzIHNob3VsZCBub3QgYmUgbmVjZXNzYXJ5IGJlY2F1c2UgdHJhY2tz
IGFuZCBzdHJlYW1zIG11c3QgYmUgYWJsZSB0byBzaGFyZSBzb3VyY2VzLCBidXQgb3VyIGNvZGUK
LSAgICAgICAgICAgIC8vIGN1cnJlbmx0eSBhc3N1bWVzIGVhY2ggc291cmNlIGlzIGF0dGFjaGVk
IHRvIGp1c3Qgb25lIHRyYWNrLgotICAgICAgICAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTEyMTk1NAotICAgICAgICAgICAgc291cmNlVmVjdG9yLmFwcGVu
ZChNZWRpYVN0cmVhbVNvdXJjZTo6Y3JlYXRlKHNvdXJjZS0+aWQoKSwgc291cmNlLT50eXBlKCks
IHNvdXJjZS0+bmFtZSgpLCBzb3VyY2UtPnJlYWR5U3RhdGUoKSwgc291cmNlLT5yZXF1aXJlc0F1
ZGlvQ29uc3VtZXIoKSkuZ2V0KCkpOwotICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgIHNvdXJj
ZVZlY3Rvci5hcHBlbmQoc291cmNlKTsKLSAgICB9CisgICAgaWYgKCFjb250YWluc1NvdXJjZShz
b3VyY2VWZWN0b3IsIHNvdXJjZSkpCisgICAgICAgIHNvdXJjZVZlY3Rvci5hcHBlbmQoc291cmNl
KTsKIH0KIAogc3RhdGljIFBhc3NSZWZQdHI8TWVkaWFTdHJlYW0+IGNyZWF0ZUZyb21Tb3VyY2VW
ZWN0b3JzKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIGNvbnN0IE1lZGlhU3RyZWFt
U291cmNlVmVjdG9yJiBhdWRpb1NvdXJjZXMsIGNvbnN0IE1lZGlhU3RyZWFtU291cmNlVmVjdG9y
JiB2aWRlb1NvdXJjZXMpCiB7CiAgICAgUmVmUHRyPE1lZGlhU3RyZWFtRGVzY3JpcHRvcj4gZGVz
Y3JpcHRvciA9IE1lZGlhU3RyZWFtRGVzY3JpcHRvcjo6Y3JlYXRlKGF1ZGlvU291cmNlcywgdmlk
ZW9Tb3VyY2VzKTsKLSAgICBNZWRpYVN0cmVhbUNlbnRlcjo6c2hhcmVkKCkuZGlkQ3JlYXRlTWVk
aWFTdHJlYW0oZGVzY3JpcHRvci5nZXQoKSk7Ci0KICAgICByZXR1cm4gTWVkaWFTdHJlYW06OmNy
ZWF0ZShjb250ZXh0LCBkZXNjcmlwdG9yLnJlbGVhc2UoKSk7CiB9CiAKQEAgLTEyMSw2ICsxMTIs
NyBAQCBNZWRpYVN0cmVhbTo6TWVkaWFTdHJlYW0oU2NyaXB0RXhlY3V0aW9uCiAgICAgLCBtX2Rl
c2NyaXB0b3Ioc3RyZWFtRGVzY3JpcHRvcikKICAgICAsIG1fc2NoZWR1bGVkRXZlbnRUaW1lcih0
aGlzLCAmTWVkaWFTdHJlYW06OnNjaGVkdWxlZEV2ZW50VGltZXJGaXJlZCkKIHsKKyAgICBBU1NF
UlQobV9kZXNjcmlwdG9yKTsKICAgICBtX2Rlc2NyaXB0b3ItPnNldENsaWVudCh0aGlzKTsKIAog
ICAgIHNpemVfdCBudW1iZXJPZkF1ZGlvVHJhY2tzID0gbV9kZXNjcmlwdG9yLT5udW1iZXJPZkF1
ZGlvU3RyZWFtcygpOwpAQCAtMTg0LDggKzE3Niw2IEBAIHZvaWQgTWVkaWFTdHJlYW06OmFkZFRy
YWNrKFBhc3NSZWZQdHI8TWUKICAgICAgICAgbV92aWRlb1RyYWNrcy5hcHBlbmQodHJhY2spOwog
ICAgICAgICBicmVhazsKICAgICB9Ci0KLSAgICBNZWRpYVN0cmVhbUNlbnRlcjo6c2hhcmVkKCku
ZGlkQWRkTWVkaWFTdHJlYW1UcmFjayh0cmFjay0+c291cmNlKCkpOwogfQogCiB2b2lkIE1lZGlh
U3RyZWFtOjpyZW1vdmVUcmFjayhQYXNzUmVmUHRyPE1lZGlhU3RyZWFtVHJhY2s+IHBycFRyYWNr
LCBFeGNlcHRpb25Db2RlJiBlYykKQEAgLTIyMyw4ICsyMTMsNiBAQCB2b2lkIE1lZGlhU3RyZWFt
OjpyZW1vdmVUcmFjayhQYXNzUmVmUHRyCiAKICAgICBpZiAoIW1fYXVkaW9UcmFja3Muc2l6ZSgp
ICYmICFtX3ZpZGVvVHJhY2tzLnNpemUoKSkKICAgICAgICAgc2V0RW5kZWQoKTsKLQotICAgIE1l
ZGlhU3RyZWFtQ2VudGVyOjpzaGFyZWQoKS5kaWRSZW1vdmVNZWRpYVN0cmVhbVRyYWNrKHRyYWNr
LT5zb3VyY2UoKSk7CiB9CiAKIE1lZGlhU3RyZWFtVHJhY2sqIE1lZGlhU3RyZWFtOjpnZXRUcmFj
a0J5SWQoU3RyaW5nIGlkKQpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVh
bS9NZWRpYVN0cmVhbS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVk
aWFzdHJlYW0vTWVkaWFTdHJlYW0uaAkocmV2aXNpb24gMTU3MDE2KQorKysgU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbS5oCSh3b3JraW5nIGNvcHkpCkBAIC04
OCwxNSArODgsMTMgQEAgcHJvdGVjdGVkOgogICAgIHZpcnR1YWwgdm9pZCBjb250ZXh0RGVzdHJv
eWVkKCkgT1ZFUlJJREU7CiAKIHByaXZhdGU6Ci0gICAgLy8gTWVkaWFTdHJlYW1EZXNjcmlwdG9y
Q2xpZW50Ci0gICAgdmlydHVhbCB2b2lkIHRyYWNrRGlkRW5kKCkgT1ZFUlJJREU7Ci0gICAgdmly
dHVhbCB2b2lkIHN0cmVhbURpZEVuZCgpIE9WRVJSSURFOwotICAgIAogICAgIC8vIEV2ZW50VGFy
Z2V0CiAgICAgdmlydHVhbCB2b2lkIHJlZkV2ZW50VGFyZ2V0KCkgT1ZFUlJJREUgeyByZWYoKTsg
fQogICAgIHZpcnR1YWwgdm9pZCBkZXJlZkV2ZW50VGFyZ2V0KCkgT1ZFUlJJREUgeyBkZXJlZigp
OyB9CiAKICAgICAvLyBNZWRpYVN0cmVhbURlc2NyaXB0b3JDbGllbnQKKyAgICB2aXJ0dWFsIHZv
aWQgdHJhY2tEaWRFbmQoKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgc3RyZWFtRGlkRW5k
KCkgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIGFkZFJlbW90ZVNvdXJjZShNZWRpYVN0cmVh
bVNvdXJjZSopIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCByZW1vdmVSZW1vdGVTb3VyY2Uo
TWVkaWFTdHJlYW1Tb3VyY2UqKSBPVkVSUklERTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbUNhcGFiaWxpdGllcy5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbUNhcGFiaWxp
dGllcy5jcHAJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3Ry
ZWFtL01lZGlhU3RyZWFtQ2FwYWJpbGl0aWVzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsx
LDE0MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaWYgRU5BQkxFKE1FRElB
X1NUUkVBTSkKKworI2luY2x1ZGUgIk1lZGlhU3RyZWFtQ2FwYWJpbGl0aWVzLmgiCisKKyNpbmNs
dWRlICJBbGxBdWRpb0NhcGFiaWxpdGllcy5oIgorI2luY2x1ZGUgIkFsbFZpZGVvQ2FwYWJpbGl0
aWVzLmgiCisjaW5jbHVkZSAiQ2FwYWJpbGl0eVJhbmdlLmgiCisjaW5jbHVkZSAiTWVkaWFTb3Vy
Y2VTdGF0ZXMuaCIKKyNpbmNsdWRlICJNZWRpYVN0cmVhbVNvdXJjZUNhcGFiaWxpdGllcy5oIgor
CituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1Bhc3NSZWZQdHI8TWVkaWFTdHJlYW1DYXBhYmlsaXRp
ZXM+IE1lZGlhU3RyZWFtQ2FwYWJpbGl0aWVzOjpjcmVhdGUoUGFzc1JlZlB0cjxNZWRpYVN0cmVh
bVNvdXJjZUNhcGFiaWxpdGllcz4gY2FwYWJpbGl0aWVzKQoreworICAgIGlmIChjYXBhYmlsaXRp
ZXMtPmhhc1ZpZGVvU291cmNlKCkpCisgICAgICAgIHJldHVybiBBbGxWaWRlb0NhcGFiaWxpdGll
czo6Y3JlYXRlKGNhcGFiaWxpdGllcyk7CisgICAgCisgICAgcmV0dXJuIEFsbEF1ZGlvQ2FwYWJp
bGl0aWVzOjpjcmVhdGUoY2FwYWJpbGl0aWVzKTsKK30KKworTWVkaWFTdHJlYW1DYXBhYmlsaXRp
ZXM6Ok1lZGlhU3RyZWFtQ2FwYWJpbGl0aWVzKFBhc3NSZWZQdHI8TWVkaWFTdHJlYW1Tb3VyY2VD
YXBhYmlsaXRpZXM+IGNhcGFiaWxpdGllcykKKyAgICA6IG1fU291cmNlQ2FwYWJpbGl0aWVzKGNh
cGFiaWxpdGllcykKK3sKK30KKworVmVjdG9yPFN0cmluZz4gTWVkaWFTdHJlYW1DYXBhYmlsaXRp
ZXM6OnNvdXJjZVR5cGUoKSBjb25zdAoreworICAgIEFTU0VSVChtX1NvdXJjZUNhcGFiaWxpdGll
cy0+aGFzVmlkZW9Tb3VyY2UoKSk7CisgICAgCisgICAgc2l6ZV90IGNvdW50ID0gbV9Tb3VyY2VD
YXBhYmlsaXRpZXMtPnNvdXJjZVR5cGVzKCkuc2l6ZSgpOworICAgIGlmICghY291bnQpCisgICAg
ICAgIHJldHVybiBWZWN0b3I8U3RyaW5nPigpOworICAgIAorICAgIGNvbnN0IFZlY3RvcjxNZWRp
YVN0cmVhbVNvdXJjZVN0YXRlczo6U291cmNlVHlwZT4mIHNvdXJjZVR5cGVzID0gbV9Tb3VyY2VD
YXBhYmlsaXRpZXMtPnNvdXJjZVR5cGVzKCk7CisgICAgVmVjdG9yPFN0cmluZz4gY2FwYWJpbGl0
aWVzOworICAgIGNhcGFiaWxpdGllcy5yZXNlcnZlQ2FwYWNpdHkoY291bnQpOworICAgIAorICAg
IGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgY291bnQ7ICsraSkKKyAgICAgICAgY2FwYWJpbGl0aWVz
LmFwcGVuZChNZWRpYVNvdXJjZVN0YXRlczo6c291cmNlVHlwZShzb3VyY2VUeXBlc1tpXSkpOwor
ICAgIAorICAgIHJldHVybiBjYXBhYmlsaXRpZXM7Cit9CisKK1ZlY3RvcjxTdHJpbmc+IE1lZGlh
U3RyZWFtQ2FwYWJpbGl0aWVzOjpzb3VyY2VJZCgpIGNvbnN0Cit7CisgICAgc2l6ZV90IGNvdW50
ID0gbV9Tb3VyY2VDYXBhYmlsaXRpZXMtPnNvdXJjZUlkKCkuc2l6ZSgpOworICAgIGlmICghY291
bnQpCisgICAgICAgIHJldHVybiBWZWN0b3I8U3RyaW5nPigpOworICAgIAorICAgIGNvbnN0IFZl
Y3RvcjxBdG9taWNTdHJpbmc+JiBzb3VyY2VJZHMgPSBtX1NvdXJjZUNhcGFiaWxpdGllcy0+c291
cmNlSWQoKTsKKyAgICBWZWN0b3I8U3RyaW5nPiBjYXBhYmlsaXRpZXM7CisgICAgY2FwYWJpbGl0
aWVzLnJlc2VydmVDYXBhY2l0eShjb3VudCk7CisgICAgCisgICAgZm9yIChzaXplX3QgaSA9IDA7
IGkgPCBjb3VudDsgKytpKQorICAgICAgICBjYXBhYmlsaXRpZXMuYXBwZW5kKHNvdXJjZUlkc1tp
XSk7CisgICAgCisgICAgcmV0dXJuIGNhcGFiaWxpdGllczsKK30KKworVmVjdG9yPFN0cmluZz4g
TWVkaWFTdHJlYW1DYXBhYmlsaXRpZXM6OmZhY2luZ01vZGUoKSBjb25zdAoreworICAgIEFTU0VS
VChtX1NvdXJjZUNhcGFiaWxpdGllcy0+aGFzVmlkZW9Tb3VyY2UoKSk7CisgICAgCisgICAgc2l6
ZV90IGNvdW50ID0gbV9Tb3VyY2VDYXBhYmlsaXRpZXMtPmZhY2luZ01vZGVzKCkuc2l6ZSgpOwor
ICAgIGlmICghY291bnQpCisgICAgICAgIHJldHVybiBWZWN0b3I8U3RyaW5nPigpOworICAgIAor
ICAgIGNvbnN0IFZlY3RvcjxNZWRpYVN0cmVhbVNvdXJjZVN0YXRlczo6VmlkZW9GYWNpbmdNb2Rl
PiYgZmFjaW5nTW9kZXMgPSBtX1NvdXJjZUNhcGFiaWxpdGllcy0+ZmFjaW5nTW9kZXMoKTsKKyAg
ICBWZWN0b3I8U3RyaW5nPiBjYXBhYmlsaXRpZXM7CisgICAgY2FwYWJpbGl0aWVzLnJlc2VydmVD
YXBhY2l0eShjb3VudCk7CisgICAgCisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBjb3VudDsg
KytpKQorICAgICAgICBjYXBhYmlsaXRpZXMuYXBwZW5kKE1lZGlhU291cmNlU3RhdGVzOjpmYWNp
bmdNb2RlKGZhY2luZ01vZGVzW2ldKSk7CisgICAgCisgICAgcmV0dXJuIGNhcGFiaWxpdGllczsK
K30KKworUmVmUHRyPENhcGFiaWxpdHlSYW5nZT4gTWVkaWFTdHJlYW1DYXBhYmlsaXRpZXM6Ondp
ZHRoKCkgY29uc3QKK3sKKyAgICBBU1NFUlQobV9Tb3VyY2VDYXBhYmlsaXRpZXMtPmhhc1ZpZGVv
U291cmNlKCkpOworICAgIAorICAgIHJldHVybiBDYXBhYmlsaXR5UmFuZ2U6OmNyZWF0ZShtX1Nv
dXJjZUNhcGFiaWxpdGllcy0+d2lkdGgoKSk7Cit9CisKK1JlZlB0cjxDYXBhYmlsaXR5UmFuZ2U+
IE1lZGlhU3RyZWFtQ2FwYWJpbGl0aWVzOjpoZWlnaHQoKSBjb25zdAoreworICAgIEFTU0VSVCht
X1NvdXJjZUNhcGFiaWxpdGllcy0+aGFzVmlkZW9Tb3VyY2UoKSk7CisgICAgCisgICAgcmV0dXJu
IENhcGFiaWxpdHlSYW5nZTo6Y3JlYXRlKG1fU291cmNlQ2FwYWJpbGl0aWVzLT5oZWlnaHQoKSk7
Cit9CisKK1JlZlB0cjxDYXBhYmlsaXR5UmFuZ2U+IE1lZGlhU3RyZWFtQ2FwYWJpbGl0aWVzOjpm
cmFtZVJhdGUoKSBjb25zdAoreworICAgIEFTU0VSVChtX1NvdXJjZUNhcGFiaWxpdGllcy0+aGFz
VmlkZW9Tb3VyY2UoKSk7CisgICAgCisgICAgcmV0dXJuIENhcGFiaWxpdHlSYW5nZTo6Y3JlYXRl
KG1fU291cmNlQ2FwYWJpbGl0aWVzLT5mcmFtZVJhdGUoKSk7Cit9CisKK1JlZlB0cjxDYXBhYmls
aXR5UmFuZ2U+IE1lZGlhU3RyZWFtQ2FwYWJpbGl0aWVzOjphc3BlY3RSYXRpbygpIGNvbnN0Cit7
CisgICAgQVNTRVJUKG1fU291cmNlQ2FwYWJpbGl0aWVzLT5oYXNWaWRlb1NvdXJjZSgpKTsKKyAg
ICAKKyAgICByZXR1cm4gQ2FwYWJpbGl0eVJhbmdlOjpjcmVhdGUobV9Tb3VyY2VDYXBhYmlsaXRp
ZXMtPmFzcGVjdFJhdGlvKCkpOworfQorCitSZWZQdHI8Q2FwYWJpbGl0eVJhbmdlPiBNZWRpYVN0
cmVhbUNhcGFiaWxpdGllczo6dm9sdW1lKCkgY29uc3QKK3sKKyAgICBBU1NFUlQoIW1fU291cmNl
Q2FwYWJpbGl0aWVzLT5oYXNWaWRlb1NvdXJjZSgpKTsKKyAgICAKKyAgICByZXR1cm4gQ2FwYWJp
bGl0eVJhbmdlOjpjcmVhdGUobV9Tb3VyY2VDYXBhYmlsaXRpZXMtPnZvbHVtZSgpKTsKK30KKwor
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1DYXBhYmlsaXRpZXMuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtQ2FwYWJpbGl0
aWVzLmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFt
L01lZGlhU3RyZWFtQ2FwYWJpbGl0aWVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw2OSBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBD
T01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENP
TVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI2lmbmRlZiBNZWRpYVN0cmVhbUNhcGFiaWxpdGllc19oCisjZGVmaW5lIE1l
ZGlhU3RyZWFtQ2FwYWJpbGl0aWVzX2gKKworI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCisKKyNp
bmNsdWRlICJNZWRpYVN0cmVhbUNhcGFiaWxpdGllcy5oIgorI2luY2x1ZGUgIk1lZGlhU3RyZWFt
U291cmNlQ2FwYWJpbGl0aWVzLmgiCisjaW5jbHVkZSAiU2NyaXB0V3JhcHBhYmxlLmgiCisjaW5j
bHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisjaW5jbHVk
ZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3Mg
Q2FwYWJpbGl0eVJhbmdlOworY2xhc3MgTWVkaWFTdHJlYW1Tb3VyY2VDYXBhYmlsaXRpZXM7CisK
K2NsYXNzIE1lZGlhU3RyZWFtQ2FwYWJpbGl0aWVzIDogcHVibGljIFJlZkNvdW50ZWQ8TWVkaWFT
dHJlYW1DYXBhYmlsaXRpZXM+LCBwdWJsaWMgU2NyaXB0V3JhcHBhYmxlIHsKK3B1YmxpYzoKKyAg
ICBzdGF0aWMgUGFzc1JlZlB0cjxNZWRpYVN0cmVhbUNhcGFiaWxpdGllcz4gY3JlYXRlKFBhc3NS
ZWZQdHI8TWVkaWFTdHJlYW1Tb3VyY2VDYXBhYmlsaXRpZXM+KTsKKyAgICB2aXJ0dWFsIH5NZWRp
YVN0cmVhbUNhcGFiaWxpdGllcygpIHsgfQorCisgICAgdmlydHVhbCBWZWN0b3I8U3RyaW5nPiBz
b3VyY2VUeXBlKCkgY29uc3Q7CisgICAgdmlydHVhbCBWZWN0b3I8U3RyaW5nPiBzb3VyY2VJZCgp
IGNvbnN0OworICAgIHZpcnR1YWwgUmVmUHRyPENhcGFiaWxpdHlSYW5nZT4gd2lkdGgoKSBjb25z
dDsKKyAgICB2aXJ0dWFsIFJlZlB0cjxDYXBhYmlsaXR5UmFuZ2U+IGhlaWdodCgpIGNvbnN0Owor
ICAgIHZpcnR1YWwgUmVmUHRyPENhcGFiaWxpdHlSYW5nZT4gZnJhbWVSYXRlKCkgY29uc3Q7Cisg
ICAgdmlydHVhbCBSZWZQdHI8Q2FwYWJpbGl0eVJhbmdlPiBhc3BlY3RSYXRpbygpIGNvbnN0Owor
ICAgIHZpcnR1YWwgVmVjdG9yPFN0cmluZz4gZmFjaW5nTW9kZSgpIGNvbnN0OworICAgIHZpcnR1
YWwgUmVmUHRyPENhcGFiaWxpdHlSYW5nZT4gdm9sdW1lKCkgY29uc3Q7CisgICAgCisgICAgYm9v
bCBoYXNWaWRlb1NvdXJjZSgpIHsgcmV0dXJuIG1fU291cmNlQ2FwYWJpbGl0aWVzLT5oYXNWaWRl
b1NvdXJjZSgpOyB9CisKK3Byb3RlY3RlZDoKKyAgICBleHBsaWNpdCBNZWRpYVN0cmVhbUNhcGFi
aWxpdGllcyhQYXNzUmVmUHRyPE1lZGlhU3RyZWFtU291cmNlQ2FwYWJpbGl0aWVzPik7CisKKyAg
ICBSZWZQdHI8TWVkaWFTdHJlYW1Tb3VyY2VDYXBhYmlsaXRpZXM+IG1fU291cmNlQ2FwYWJpbGl0
aWVzOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gTWVkaWFTdHJl
YW1DYXBhYmlsaXRpZXNfaAorCisjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMv
bWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1DYXBhYmlsaXRpZXMuaWRsCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1DYXBhYmlsaXRpZXMu
aWRsCShyZXZpc2lvbiAwKQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9N
ZWRpYVN0cmVhbUNhcGFiaWxpdGllcy5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwzMyBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBD
T01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENP
TVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuIAorICovCisKK1sKKyAgICBDb25kaXRpb25hbD1NRURJQV9TVFJFQU0sCisgICAgTm9JbnRl
cmZhY2VPYmplY3QsCisgICAgU2tpcFZUYWJsZVZhbGlkYXRpb24sCisgICAgQ3VzdG9tVG9KU09i
amVjdCwKK10gaW50ZXJmYWNlIE1lZGlhU3RyZWFtQ2FwYWJpbGl0aWVzIHsKK307CisKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1UcmFjay5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0
cmVhbVRyYWNrLmNwcAkocmV2aXNpb24gMTU3MDE2KQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVRyYWNrLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjks
MzIgKzI5LDY1IEBACiAKICNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQogCisjaW5jbHVkZSAiQWxs
QXVkaW9DYXBhYmlsaXRpZXMuaCIKKyNpbmNsdWRlICJBbGxWaWRlb0NhcGFiaWxpdGllcy5oIgor
I2luY2x1ZGUgIkF1ZGlvU3RyZWFtVHJhY2suaCIKICNpbmNsdWRlICJEaWN0aW9uYXJ5LmgiCiAj
aW5jbHVkZSAiRXZlbnQuaCIKICNpbmNsdWRlICJFeGNlcHRpb25Db2RlLmgiCisjaW5jbHVkZSAi
TWVkaWFDb25zdHJhaW50c0ltcGwuaCIKKyNpbmNsdWRlICJNZWRpYVNvdXJjZVN0YXRlcy5oIgog
I2luY2x1ZGUgIk1lZGlhU3RyZWFtLmgiCiAjaW5jbHVkZSAiTWVkaWFTdHJlYW1DZW50ZXIuaCIK
ICNpbmNsdWRlICJNZWRpYVN0cmVhbURlc2NyaXB0b3IuaCIKICNpbmNsdWRlICJNZWRpYVN0cmVh
bVRyYWNrU291cmNlc0NhbGxiYWNrLmgiCiAjaW5jbHVkZSAiTWVkaWFTdHJlYW1UcmFja1NvdXJj
ZXNSZXF1ZXN0LmgiCisjaW5jbHVkZSAiTWVkaWFUcmFja0NvbnN0cmFpbnRzLmgiCisjaW5jbHVk
ZSAiTm90SW1wbGVtZW50ZWQuaCIKICNpbmNsdWRlICJVVUlELmgiCisjaW5jbHVkZSAiVmlkZW9T
dHJlYW1UcmFjay5oIgorI2luY2x1ZGUgPHd0Zi9GdW5jdGlvbmFsLmg+CiAjaW5jbHVkZSA8d3Rm
L05ldmVyRGVzdHJveWVkLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogTWVkaWFTdHJlYW1U
cmFjazo6TWVkaWFTdHJlYW1UcmFjayhTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBN
ZWRpYVN0cmVhbVNvdXJjZSogc291cmNlLCBjb25zdCBEaWN0aW9uYXJ5KikKICAgICA6IEFjdGl2
ZURPTU9iamVjdChjb250ZXh0KQotICAgICwgbV9zb3VyY2Uoc291cmNlKQorICAgICwgbV9zb3Vy
Y2UoMCkKICAgICAsIG1fcmVhZHlTdGF0ZShNZWRpYVN0cmVhbVNvdXJjZTo6TmV3KQogICAgICwg
bV9zdG9wcGVkKGZhbHNlKQogICAgICwgbV9lbmFibGVkKHRydWUpCiAgICAgLCBtX211dGVkKGZh
bHNlKQorICAgICwgbV9ldmVudERpc3BhdGNoU2NoZWR1bGVkKGZhbHNlKQogewogICAgIHN1c3Bl
bmRJZk5lZWRlZCgpOwotICAgIGlmIChtX3NvdXJjZSkgewotICAgICAgICBtX3NvdXJjZS0+YWRk
T2JzZXJ2ZXIodGhpcyk7Ci0gICAgICAgIG1fbXV0ZWQgPSBtX3NvdXJjZS0+bXV0ZWQoKTsKLSAg
ICB9CisgICAgaWYgKHNvdXJjZSkKKyAgICAgICAgc2V0U291cmNlKHNvdXJjZSk7Cit9CisKK01l
ZGlhU3RyZWFtVHJhY2s6Ok1lZGlhU3RyZWFtVHJhY2soTWVkaWFTdHJlYW1UcmFjayogb3RoZXIp
CisgICAgOiBBY3RpdmVET01PYmplY3Qob3RoZXItPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSkK
K3sKKyAgICBzdXNwZW5kSWZOZWVkZWQoKTsKKworICAgIC8vIFdoZW4gdGhlIGNsb25lKCkgbWV0
aG9kIGlzIGludm9rZWQsIHRoZSB1c2VyIGFnZW50IG11c3QgcnVuIHRoZSBmb2xsb3dpbmcgc3Rl
cHM6CisgICAgLy8gMS4gTGV0IHRyYWNrQ2xvbmUgYmUgYSBuZXdseSBjb25zdHJ1Y3RlZCBNZWRp
YVN0cmVhbVRyYWNrIG9iamVjdC4KKyAgICAvLyAyLiBJbml0aWFsaXplIHRyYWNrQ2xvbmUncyBp
ZCBhdHRyaWJ1dGUgdG8gYSBuZXdseSBnZW5lcmF0ZWQgdmFsdWUuCisgICAgbV9pZCA9IGNyZWF0
ZUNhbm9uaWNhbFVVSURTdHJpbmcoKTsKKworICAgIC8vIDMuIExldCB0cmFja0Nsb25lIGluaGVy
aXQgdGhpcyB0cmFjaydzIHVuZGVybHlpbmcgc291cmNlLCBraW5kLCBsYWJlbCBhbmQgZW5hYmxl
ZCBhdHRyaWJ1dGVzLgorICAgIHNldFNvdXJjZShvdGhlci0+c291cmNlKCkpOworICAgIG1fcmVh
ZHlTdGF0ZSA9IG1fc291cmNlID8gbV9zb3VyY2UtPnJlYWR5U3RhdGUoKSA6IE1lZGlhU3RyZWFt
U291cmNlOjpOZXc7CisgICAgbV9lbmFibGVkID0gb3RoZXItPmVuYWJsZWQoKTsKKworICAgIC8v
IE5vdGU6IHRoZSAiY2xvbmUiIHN0ZXBzIGRvbid0IHNheSBhbnl0aGluZyBhYm91dCAnbXV0ZWQn
LCBidXQgNC4zLjEgc2F5czoKKyAgICAvLyBGb3IgYSBuZXdseSBjcmVhdGVkIE1lZGlhU3RyZWFt
VHJhY2sgb2JqZWN0LCB0aGUgZm9sbG93aW5nIGFwcGxpZXMuIFRoZSB0cmFjayBpcyBhbHdheXMg
ZW5hYmxlZAorICAgIC8vIHVubGVzcyBzdGF0ZWQgb3RoZXJ3aXNlIChmb3IgZXhhbWxwZSB3aGVu
IGNsb25lZCkgYW5kIHRoZSBtdXRlZCBzdGF0ZSByZWZsZWN0cyB0aGUgc3RhdGUgb2YgdGhlCisg
ICAgLy8gc291cmNlIGF0IHRoZSB0aW1lIHRoZSB0cmFjayBpcyBjcmVhdGVkLgorICAgIG1fbXV0
ZWQgPSBvdGhlci0+bXV0ZWQoKTsKKworICAgIG1fZXZlbnREaXNwYXRjaFNjaGVkdWxlZCA9ZmFs
c2U7CisgICAgbV9zdG9wcGVkID0gb3RoZXItPnN0b3BwZWQoKTsKIH0KIAogTWVkaWFTdHJlYW1U
cmFjazo6fk1lZGlhU3RyZWFtVHJhY2soKQpAQCAtODUsNiArMTE4LDE1IEBAIGNvbnN0IEF0b21p
Y1N0cmluZyYgTWVkaWFTdHJlYW1UcmFjazo6a2kKIHZvaWQgTWVkaWFTdHJlYW1UcmFjazo6c2V0
U291cmNlKE1lZGlhU3RyZWFtU291cmNlKiBzb3VyY2UpCiB7CiAgICAgQVNTRVJUKHNvdXJjZSA9
PSBtX3NvdXJjZSB8fCAhbV9zb3VyY2UpOworCisgICAgaWYgKG1fc291cmNlKQorICAgICAgICBt
X3NvdXJjZS0+cmVtb3ZlT2JzZXJ2ZXIodGhpcyk7CisKKyAgICBpZiAoc291cmNlKSB7CisgICAg
ICAgIHNvdXJjZS0+YWRkT2JzZXJ2ZXIodGhpcyk7CisgICAgICAgIG1fbXV0ZWQgPSBzb3VyY2Ut
Pm11dGVkKCk7CisgICAgfQorCiAgICAgbV9zb3VyY2UgPSBzb3VyY2U7CiB9CiAKQEAgLTkzLDE4
ICsxMzUsMTMgQEAgY29uc3QgU3RyaW5nJiBNZWRpYVN0cmVhbVRyYWNrOjppZCgpIGNvbgogICAg
IGlmICghbV9pZC5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBtX2lkOwogCi0gICAgaWYgKCFt
X3NvdXJjZSkKLSAgICAgICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7Ci0KLSAgICBjb25zdCBTdHJp
bmcmIGlkID0gbV9zb3VyY2UtPmlkKCk7Ci0gICAgaWYgKCFpZC5pc0VtcHR5KCkpCi0gICAgICAg
IHJldHVybiBpZDsKLQogICAgIC8vIFRoZSBzcGVjIHNheXM6CiAgICAgLy8gICBVbmxlc3MgYSBN
ZWRpYVN0cmVhbVRyYWNrIG9iamVjdCBpcyBjcmVhdGVkIGFzIGEgcGFydCBhIG9mIHNwZWNpYWwg
cHVycG9zZSBhbGdvcml0aG0gdGhhdAogICAgIC8vICAgc3BlY2lmaWVzIGhvdyB0aGUgdHJhY2sg
aWQgbXVzdCBiZSBpbml0aWFsaXplZCwgdGhlIHVzZXIgYWdlbnQgbXVzdCBnZW5lcmF0ZSBhIGds
b2JhbGx5CiAgICAgLy8gICB1bmlxdWUgaWRlbnRpZmllciBzdHJpbmcgYW5kIGluaXRpYWxpemUg
dGhlIG9iamVjdCdzIGlkIGF0dHJpYnV0ZSB0byB0aGF0IHN0cmluZy4KLSAgICAvLyBzbyBnZW5l
cmF0ZSBhIFVVSUQgaWYgdGhlIHNvdXJjZSBkb2Vzbid0IGhhdmUgYW4gSUQuCisgICAgaWYgKG1f
c291cmNlICYmIG1fc291cmNlLT51c2VJREZvclRyYWNrSUQoKSkKKyAgICAgICAgcmV0dXJuIG1f
c291cmNlLT5pZCgpOworCiAgICAgbV9pZCA9IGNyZWF0ZUNhbm9uaWNhbFVVSURTdHJpbmcoKTsK
ICAgICByZXR1cm4gbV9pZDsKIH0KQEAgLTEyNSwxOCArMTYyLDQwIEBAIHZvaWQgTWVkaWFTdHJl
YW1UcmFjazo6c2V0RW5hYmxlZChib29sIGUKIHsKICAgICBpZiAobV9zdG9wcGVkKQogICAgICAg
ICByZXR1cm47Ci0gICAgCisKKyAgICAvLyA0LjMuMy4xCisgICAgLy8gLi4uIGFmdGVyIGEgTWVk
aWFTdHJlYW1UcmFjayBpcyBkaXNhc3NvY2lhdGVkIGZyb20gaXRzIHRyYWNrLCBpdHMgZW5hYmxl
ZCBhdHRyaWJ1dGUgc3RpbGwKKyAgICAvLyBjaGFuZ2VzIHZhbHVlIHdoZW4gc2V0OyBpdCBqdXN0
IGRvZXNuJ3QgZG8gYW55dGhpbmcgd2l0aCB0aGF0IG5ldyB2YWx1ZS4KICAgICBtX2VuYWJsZWQg
PSBlbmFibGVkOwogCi0gICAgaWYgKCFtX3NvdXJjZSB8fCBlbmFibGVkID09IG1fc291cmNlLT5l
bmFibGVkKCkpCisgICAgaWYgKCFtX3NvdXJjZSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgbV9z
b3VyY2UtPnNldEVuYWJsZWQoZW5hYmxlZCk7Cit9CiAKLSAgICBpZiAobV9zb3VyY2UtPnN0cmVh
bSgpLT5lbmRlZCgpKQotICAgICAgICByZXR1cm47Citib29sIE1lZGlhU3RyZWFtVHJhY2s6Om11
dGVkKCkgY29uc3QKK3sKKyAgICBpZiAobV9zdG9wcGVkIHx8ICFtX3NvdXJjZSkKKyAgICAgICAg
cmV0dXJuIGZhbHNlOworCisgICAgcmV0dXJuIG1fc291cmNlLT5tdXRlZCgpOworfQorCitib29s
IE1lZGlhU3RyZWFtVHJhY2s6OnJlYWRvbmx5KCkgY29uc3QKK3sKKyAgICBpZiAobV9zdG9wcGVk
IHx8ICFtX3NvdXJjZSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICByZXR1cm4gbV9zb3Vy
Y2UtPnJlYWRvbmx5KCk7Cit9CisKK2Jvb2wgTWVkaWFTdHJlYW1UcmFjazo6cmVtb3RlKCkgY29u
c3QKK3sKKyAgICBpZiAoIW1fc291cmNlKQorICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBN
ZWRpYVN0cmVhbUNlbnRlcjo6c2hhcmVkKCkuZGlkU2V0TWVkaWFTdHJlYW1UcmFja0VuYWJsZWQo
bV9zb3VyY2UuZ2V0KCkpOworICAgIHJldHVybiBtX3NvdXJjZS0+cmVtb3RlKCk7CiB9CiAKIGNv
bnN0IEF0b21pY1N0cmluZyYgTWVkaWFTdHJlYW1UcmFjazo6cmVhZHlTdGF0ZSgpIGNvbnN0CkBA
IC0xNzEsMTIgKzIzMCw2NCBAQCB2b2lkIE1lZGlhU3RyZWFtVHJhY2s6OmdldFNvdXJjZXMoU2Ny
aXB0CiAgICAgICAgIGVjID0gTk9UX1NVUFBPUlRFRF9FUlI7CiB9CiAKK1Bhc3NSZWZQdHI8TWVk
aWFUcmFja0NvbnN0cmFpbnRzPiBNZWRpYVN0cmVhbVRyYWNrOjpjb25zdHJhaW50cygpIGNvbnN0
Cit7CisgICAgLy8gRklYTUU6IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xMjI0MjgKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiAwOworfQorCitQYXNz
UmVmUHRyPE1lZGlhU291cmNlU3RhdGVzPiBNZWRpYVN0cmVhbVRyYWNrOjpzdGF0ZXMoKSBjb25z
dAoreworICAgIGlmICghbV9zb3VyY2UpCisgICAgICAgIHJldHVybiAwOworICAgIAorICAgIHJl
dHVybiBNZWRpYVNvdXJjZVN0YXRlczo6Y3JlYXRlKG1fc291cmNlLT5zdGF0ZXMoKSk7Cit9CisK
K1Bhc3NSZWZQdHI8TWVkaWFTdHJlYW1DYXBhYmlsaXRpZXM+IE1lZGlhU3RyZWFtVHJhY2s6OmNh
cGFiaWxpdGllcygpIGNvbnN0Cit7CisgICAgaWYgKCFtX3NvdXJjZSkKKyAgICAgICAgcmV0dXJu
IDA7CisKKyAgICByZXR1cm4gTWVkaWFTdHJlYW1DYXBhYmlsaXRpZXM6OmNyZWF0ZShtX3NvdXJj
ZS0+Y2FwYWJpbGl0aWVzKCkpOworfQorCit2b2lkIE1lZGlhU3RyZWFtVHJhY2s6OmFwcGx5Q29u
c3RyYWludHMoY29uc3QgRGljdGlvbmFyeSYgY29uc3RyYWludHMpCit7CisgICAgLy8gRklYTUU6
IGFwcGx5IHRoZSBuZXcgY29uc3RyYWludHMgdG8gdGhlIHRyYWNrCisgICAgLy8gaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyMjQyOAorICAgIG1fY29uc3RyYWludHMt
PmluaXRpYWxpemUoY29uc3RyYWludHMpOworfQorCitQYXNzUmVmUHRyPE1lZGlhU3RyZWFtVHJh
Y2s+IE1lZGlhU3RyZWFtVHJhY2s6OmNsb25lKCkKK3sKKyAgICBpZiAobV9zb3VyY2UgJiYgbV9z
b3VyY2UtPnR5cGUoKSA9PSBNZWRpYVN0cmVhbVNvdXJjZTo6QXVkaW8pCisgICAgICAgIHJldHVy
biBBdWRpb1N0cmVhbVRyYWNrOjpjcmVhdGUodGhpcyk7CisKKyAgICByZXR1cm4gVmlkZW9TdHJl
YW1UcmFjazo6Y3JlYXRlKHRoaXMpOworfQorCit2b2lkIE1lZGlhU3RyZWFtVHJhY2s6OnN0b3BQ
cm9kdWNpbmdEYXRhKCkKK3sKKyAgICBpZiAobV9zdG9wcGVkIHx8ICFtX3NvdXJjZSkKKyAgICAg
ICAgcmV0dXJuOworCisgICAgLy8gU2V0IG1fc3RvcHBlZCBiZWZvcmUgc3RvcHBpbmcgdGhlIHNv
dXJjZSBiZWNhdXNlIHRoYXQgbWF5IHJlc3VsdCBpbiBhIGNhbGwgdG8gc291cmNlQ2hhbmdlZFN0
YXRlCisgICAgLy8gYW5kIHdlIG9ubHkgd2FudCB0byBkaXNwYXRjaCB0aGUgJ2VuZGVkJyBldmVu
dCBpZiBuZWNlc3NhcnkuCisgICAgbV9zdG9wcGVkID0gdHJ1ZTsKKyAgICBtX3NvdXJjZS0+c3Rv
cCgpOworCisgICAgaWYgKG1fcmVhZHlTdGF0ZSAhPSBNZWRpYVN0cmVhbVNvdXJjZTo6RW5kZWQp
CisgICAgICAgIHNjaGVkdWxlRXZlbnREaXNwYXRjaChFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMo
KS5lbmRlZEV2ZW50LCBmYWxzZSwgZmFsc2UpKTsKK30KKwogYm9vbCBNZWRpYVN0cmVhbVRyYWNr
OjplbmRlZCgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1fc3RvcHBlZCB8fCAobV9zb3VyY2UgJiYg
bV9zb3VyY2UtPnJlYWR5U3RhdGUoKSA9PSBNZWRpYVN0cmVhbVNvdXJjZTo6RW5kZWQpOwogfQog
Ci12b2lkIE1lZGlhU3RyZWFtVHJhY2s6OnNvdXJjZUNoYW5nZWRTdGF0ZSgpCit2b2lkIE1lZGlh
U3RyZWFtVHJhY2s6OnNvdXJjZVN0YXRlQ2hhbmdlZCgpCiB7CiAgICAgaWYgKG1fc3RvcHBlZCkK
ICAgICAgICAgcmV0dXJuOwpAQCAtMTg1LDE4ICsyOTYsNTAgQEAgdm9pZCBNZWRpYVN0cmVhbVRy
YWNrOjpzb3VyY2VDaGFuZ2VkU3RhdAogICAgIG1fcmVhZHlTdGF0ZSA9IG1fc291cmNlLT5yZWFk
eVN0YXRlKCk7CiAKICAgICBpZiAobV9yZWFkeVN0YXRlID49IE1lZGlhU3RyZWFtU291cmNlOjpM
aXZlICYmIG9sZFJlYWR5U3RhdGUgPT0gTWVkaWFTdHJlYW1Tb3VyY2U6Ok5ldykKLSAgICAgICAg
ZGlzcGF0Y2hFdmVudChFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5zdGFydGVkRXZlbnQsIGZh
bHNlLCBmYWxzZSkpOworICAgICAgICBzY2hlZHVsZUV2ZW50RGlzcGF0Y2goRXZlbnQ6OmNyZWF0
ZShldmVudE5hbWVzKCkuc3RhcnRlZEV2ZW50LCBmYWxzZSwgZmFsc2UpKTsKICAgICBpZiAobV9y
ZWFkeVN0YXRlID09IE1lZGlhU3RyZWFtU291cmNlOjpFbmRlZCAmJiBvbGRSZWFkeVN0YXRlICE9
IE1lZGlhU3RyZWFtU291cmNlOjpFbmRlZCkKLSAgICAgICAgZGlzcGF0Y2hFdmVudChFdmVudDo6
Y3JlYXRlKGV2ZW50TmFtZXMoKS5lbmRlZEV2ZW50LCBmYWxzZSwgZmFsc2UpKTsKKyAgICAgICAg
c2NoZWR1bGVFdmVudERpc3BhdGNoKEV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLmVuZGVkRXZl
bnQsIGZhbHNlLCBmYWxzZSkpOworfQorICAgIAordm9pZCBNZWRpYVN0cmVhbVRyYWNrOjpzb3Vy
Y2VNdXRlZENoYW5nZWQoKQoreworICAgIGlmIChtX3N0b3BwZWQpCisgICAgICAgIHJldHVybjsK
IAotICAgIGlmIChtX211dGVkID09IG1fc291cmNlLT5tdXRlZCgpKQorICAgIGJvb2wgbXV0ZWQg
PSBtX3NvdXJjZS0+bXV0ZWQoKTsKKyAgICBpZiAobV9tdXRlZCA9PSBtdXRlZCkKICAgICAgICAg
cmV0dXJuOwogCi0gICAgbV9tdXRlZCA9IG1fc291cmNlLT5tdXRlZCgpOworICAgIG1fbXV0ZWQg
PSBtdXRlZDsKICAgICBpZiAobV9tdXRlZCkKLSAgICAgICAgZGlzcGF0Y2hFdmVudChFdmVudDo6
Y3JlYXRlKGV2ZW50TmFtZXMoKS5tdXRlRXZlbnQsIGZhbHNlLCBmYWxzZSkpOworICAgICAgICBz
Y2hlZHVsZUV2ZW50RGlzcGF0Y2goRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkubXV0ZUV2ZW50
LCBmYWxzZSwgZmFsc2UpKTsKICAgICBlbHNlCi0gICAgICAgIGRpc3BhdGNoRXZlbnQoRXZlbnQ6
OmNyZWF0ZShldmVudE5hbWVzKCkudW5tdXRlRXZlbnQsIGZhbHNlLCBmYWxzZSkpOworICAgICAg
ICBzY2hlZHVsZUV2ZW50RGlzcGF0Y2goRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkudW5tdXRl
RXZlbnQsIGZhbHNlLCBmYWxzZSkpOworCisgICAgY29uZmlndXJlVHJhY2tSZW5kZXJpbmcoKTsK
K30KKwordm9pZCBNZWRpYVN0cmVhbVRyYWNrOjpzb3VyY2VFbmFibGVkQ2hhbmdlZCgpCit7Cisg
ICAgaWYgKG1fc3RvcHBlZCkKKyAgICAgICAgcmV0dXJuOworICAgIAorICAgIC8vIG1lZGlhIGZy
b20gdGhlIHNvdXJjZSBvbmx5IGZsb3dzIHdoZW4gYSBNZWRpYVN0cmVhbVRyYWNrIG9iamVjdCBp
cyBib3RoIHVubXV0ZWQgYW5kIGVuYWJsZWQKKyAgICBjb25maWd1cmVUcmFja1JlbmRlcmluZygp
OworfQorCit2b2lkIE1lZGlhU3RyZWFtVHJhY2s6OmNvbmZpZ3VyZVRyYWNrUmVuZGVyaW5nKCkK
K3sKKyAgICBpZiAobV9zdG9wcGVkKQorICAgICAgICByZXR1cm47CisKKyAgICAvLyA0LjMuMQor
ICAgIC8vIC4uLiBtZWRpYSBmcm9tIHRoZSBzb3VyY2Ugb25seSBmbG93cyB3aGVuIGEgTWVkaWFT
dHJlYW1UcmFjayBvYmplY3QgaXMgYm90aCB1bm11dGVkIGFuZCBlbmFibGVkCit9CisKK2Jvb2wg
TWVkaWFTdHJlYW1UcmFjazo6c3RvcHBlZCgpCit7CisgICAgcmV0dXJuIG1fc3RvcHBlZDsKIH0K
IAogdm9pZCBNZWRpYVN0cmVhbVRyYWNrOjp0cmFja0RpZEVuZCgpCkBAIC0yMTEsNyArMzU0LDQy
IEBAIHZvaWQgTWVkaWFTdHJlYW1UcmFjazo6dHJhY2tEaWRFbmQoKQogCiB2b2lkIE1lZGlhU3Ry
ZWFtVHJhY2s6OnN0b3AoKQogewotICAgIG1fc3RvcHBlZCA9IHRydWU7CisgICAgc3RvcFByb2R1
Y2luZ0RhdGEoKTsKK30KKwordm9pZCBNZWRpYVN0cmVhbVRyYWNrOjpzY2hlZHVsZUV2ZW50RGlz
cGF0Y2goUGFzc1JlZlB0cjxFdmVudD4gZXZlbnQpCit7CisgICAgeworICAgICAgICBNdXRleExv
Y2tlciBsb2NrZXIobV9tdXRleCk7CisgICAgICAgIG1fc2NoZWR1bGVkRXZlbnRzLmFwcGVuZChl
dmVudCk7CisgICAgICAgIGlmIChtX2V2ZW50RGlzcGF0Y2hTY2hlZHVsZWQpCisgICAgICAgICAg
ICByZXR1cm47CisgICAgICAgIG1fZXZlbnREaXNwYXRjaFNjaGVkdWxlZCA9IHRydWU7CisgICAg
fQorCisgICAgY2FsbE9uTWFpblRocmVhZChiaW5kKCZNZWRpYVN0cmVhbVRyYWNrOjpkaXNwYXRj
aFF1ZXVlZEV2ZW50cywgdGhpcykpOworfQorCit2b2lkIE1lZGlhU3RyZWFtVHJhY2s6OmRpc3Bh
dGNoUXVldWVkRXZlbnRzKCkKK3sKKyAgICBWZWN0b3I8UmVmUHRyPEV2ZW50Pj4gZXZlbnRzOwor
ICAgIHsKKyAgICAgICAgTXV0ZXhMb2NrZXIgbG9ja2VyKG1fbXV0ZXgpOworCisgICAgICAgIG1f
ZXZlbnREaXNwYXRjaFNjaGVkdWxlZCA9IGZhbHNlOworICAgICAgICBpZiAoIXNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQoKSkgeworICAgICAgICAgICAgbV9zY2hlZHVsZWRFdmVudHMuY2xlYXIoKTsK
KyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIGV2ZW50cy5zd2FwKG1f
c2NoZWR1bGVkRXZlbnRzKTsKKyAgICB9CisKKyAgICBWZWN0b3I8UmVmUHRyPEV2ZW50PiA+Ojpp
dGVyYXRvciBpdCA9IGV2ZW50cy5iZWdpbigpOworICAgIGZvciAoOyBpdCAhPSBldmVudHMuZW5k
KCk7ICsraXQpCisgICAgICAgIGRpc3BhdGNoRXZlbnQoKCppdCkucmVsZWFzZSgpKTsKKworICAg
IGV2ZW50cy5jbGVhcigpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJhY2suaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJh
Y2suaAkocmV2aXNpb24gMTU3MDE2KQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0
cmVhbS9NZWRpYVN0cmVhbVRyYWNrLmgJKHdvcmtpbmcgY29weSkKQEAgLTQxLDEwICs0MSwxMyBA
QAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBEaWN0aW9uYXJ5OwotY2xhc3MgTWVkaWFD
b25zdHJhaW50czsKK2NsYXNzIE1lZGlhQ29uc3RyYWludHNJbXBsOworY2xhc3MgTWVkaWFTb3Vy
Y2VTdGF0ZXM7CiBjbGFzcyBNZWRpYVN0cmVhbVRyYWNrU291cmNlc0NhbGxiYWNrOworY2xhc3Mg
TWVkaWFTdHJlYW1DYXBhYmlsaXRpZXM7CitjbGFzcyBNZWRpYVRyYWNrQ29uc3RyYWludHM7CiAK
LWNsYXNzIE1lZGlhU3RyZWFtVHJhY2sgRklOQUwgOiBwdWJsaWMgUmVmQ291bnRlZDxNZWRpYVN0
cmVhbVRyYWNrPiwgcHVibGljIFNjcmlwdFdyYXBwYWJsZSwgcHVibGljIEFjdGl2ZURPTU9iamVj
dCwgcHVibGljIEV2ZW50VGFyZ2V0V2l0aElubGluZURhdGEsIHB1YmxpYyBNZWRpYVN0cmVhbVNv
dXJjZTo6T2JzZXJ2ZXIgeworY2xhc3MgTWVkaWFTdHJlYW1UcmFjayA6IHB1YmxpYyBSZWZDb3Vu
dGVkPE1lZGlhU3RyZWFtVHJhY2s+LCBwdWJsaWMgU2NyaXB0V3JhcHBhYmxlLCBwdWJsaWMgQWN0
aXZlRE9NT2JqZWN0LCBwdWJsaWMgRXZlbnRUYXJnZXRXaXRoSW5saW5lRGF0YSwgcHVibGljIE1l
ZGlhU3RyZWFtU291cmNlOjpPYnNlcnZlciB7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB+TWVkaWFT
dHJlYW1UcmFjaygpOwogCkBAIC01NCwxNyArNTcsMzEgQEAgcHVibGljOgogCiAgICAgYm9vbCBl
bmFibGVkKCkgY29uc3Q7CiAgICAgdm9pZCBzZXRFbmFibGVkKGJvb2wpOwotICAgIAorCisgICAg
Ym9vbCBtdXRlZCgpIGNvbnN0OworICAgIGJvb2wgcmVhZG9ubHkoKSBjb25zdDsKKyAgICBib29s
IHJlbW90ZSgpIGNvbnN0OworCiAgICAgY29uc3QgQXRvbWljU3RyaW5nJiByZWFkeVN0YXRlKCkg
Y29uc3Q7CiAKICAgICBzdGF0aWMgdm9pZCBnZXRTb3VyY2VzKFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQqLCBQYXNzUmVmUHRyPE1lZGlhU3RyZWFtVHJhY2tTb3VyY2VzQ2FsbGJhY2s+LCBFeGNlcHRp
b25Db2RlJik7CiAKLSAgICBNZWRpYVN0cmVhbVNvdXJjZSogc291cmNlKCkgY29uc3QgeyByZXR1
cm4gbV9zb3VyY2UuZ2V0KCk7IH0KLSAgICB2b2lkIHNldFNvdXJjZShNZWRpYVN0cmVhbVNvdXJj
ZSopOworICAgIFBhc3NSZWZQdHI8TWVkaWFUcmFja0NvbnN0cmFpbnRzPiBjb25zdHJhaW50cygp
IGNvbnN0OworICAgIFBhc3NSZWZQdHI8TWVkaWFTb3VyY2VTdGF0ZXM+IHN0YXRlcygpIGNvbnN0
OworICAgIFBhc3NSZWZQdHI8TWVkaWFTdHJlYW1DYXBhYmlsaXRpZXM+IGNhcGFiaWxpdGllcygp
IGNvbnN0OworICAgIHZvaWQgYXBwbHlDb25zdHJhaW50cyhjb25zdCBEaWN0aW9uYXJ5Jik7CisK
KyAgICBQYXNzUmVmUHRyPE1lZGlhU3RyZWFtVHJhY2s+IGNsb25lKCk7CisgICAgdm9pZCBzdG9w
UHJvZHVjaW5nRGF0YSgpOwogCiAgICAgREVGSU5FX0FUVFJJQlVURV9FVkVOVF9MSVNURU5FUiht
dXRlKTsKICAgICBERUZJTkVfQVRUUklCVVRFX0VWRU5UX0xJU1RFTkVSKHVubXV0ZSk7CisgICAg
REVGSU5FX0FUVFJJQlVURV9FVkVOVF9MSVNURU5FUihzdGFydGVkKTsKICAgICBERUZJTkVfQVRU
UklCVVRFX0VWRU5UX0xJU1RFTkVSKGVuZGVkKTsKKyAgICBERUZJTkVfQVRUUklCVVRFX0VWRU5U
X0xJU1RFTkVSKG92ZXJjb25zdHJhaW5lZCk7CisKKyAgICBNZWRpYVN0cmVhbVNvdXJjZSogc291
cmNlKCkgY29uc3QgeyByZXR1cm4gbV9zb3VyY2UuZ2V0KCk7IH0KKyAgICB2b2lkIHNldFNvdXJj
ZShNZWRpYVN0cmVhbVNvdXJjZSopOwogCiAgICAgYm9vbCBlbmRlZCgpIGNvbnN0OwogCkBAIC03
MiwzMyArODksNDQgQEAgcHVibGljOgogICAgIHZpcnR1YWwgRXZlbnRUYXJnZXRJbnRlcmZhY2Ug
ZXZlbnRUYXJnZXRJbnRlcmZhY2UoKSBjb25zdCBPVkVSUklERSB7IHJldHVybiBNZWRpYVN0cmVh
bVRyYWNrRXZlbnRUYXJnZXRJbnRlcmZhY2VUeXBlOyB9CiAgICAgdmlydHVhbCBTY3JpcHRFeGVj
dXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkgY29uc3QgT1ZFUlJJREUgeyBy
ZXR1cm4gQWN0aXZlRE9NT2JqZWN0OjpzY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7IH0KIAotICAg
IC8vIEFjdGl2ZURPTU9iamVjdAotICAgIHZpcnR1YWwgdm9pZCBzdG9wKCkgT1ZFUlJJREU7Ci0K
ICAgICB1c2luZyBSZWZDb3VudGVkPE1lZGlhU3RyZWFtVHJhY2s+OjpyZWY7CiAgICAgdXNpbmcg
UmVmQ291bnRlZDxNZWRpYVN0cmVhbVRyYWNrPjo6ZGVyZWY7CiAKIHByb3RlY3RlZDoKKyAgICBl
eHBsaWNpdCBNZWRpYVN0cmVhbVRyYWNrKE1lZGlhU3RyZWFtVHJhY2sqKTsKICAgICBNZWRpYVN0
cmVhbVRyYWNrKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBNZWRpYVN0cmVhbVNvdXJjZSosIGNv
bnN0IERpY3Rpb25hcnkqKTsKIAogcHJpdmF0ZToKKworICAgIHZvaWQgY29uZmlndXJlVHJhY2tS
ZW5kZXJpbmcoKTsKICAgICB2b2lkIHRyYWNrRGlkRW5kKCk7CisgICAgdm9pZCBzY2hlZHVsZUV2
ZW50RGlzcGF0Y2goUGFzc1JlZlB0cjxFdmVudD4pOworICAgIHZvaWQgZGlzcGF0Y2hRdWV1ZWRF
dmVudHMoKTsKKworICAgIC8vIEFjdGl2ZURPTU9iamVjdAorICAgIHZpcnR1YWwgdm9pZCBzdG9w
KCkgT1ZFUlJJREU7CiAKICAgICAvLyBFdmVudFRhcmdldAogICAgIHZpcnR1YWwgdm9pZCByZWZF
dmVudFRhcmdldCgpIE9WRVJSSURFIHsgcmVmKCk7IH0KICAgICB2aXJ0dWFsIHZvaWQgZGVyZWZF
dmVudFRhcmdldCgpIE9WRVJSSURFIHsgZGVyZWYoKTsgfQogCiAgICAgLy8gTWVkaWFTdHJlYW1T
b3VyY2VPYnNlcnZlcgotICAgIHZpcnR1YWwgdm9pZCBzb3VyY2VDaGFuZ2VkU3RhdGUoKSBPVkVS
UklERTsKKyAgICB2aXJ0dWFsIHZvaWQgc291cmNlU3RhdGVDaGFuZ2VkKCkgT1ZFUlJJREU7Cisg
ICAgdmlydHVhbCB2b2lkIHNvdXJjZU11dGVkQ2hhbmdlZCgpIE9WRVJSSURFOworICAgIHZpcnR1
YWwgdm9pZCBzb3VyY2VFbmFibGVkQ2hhbmdlZCgpIE9WRVJSSURFOworICAgIHZpcnR1YWwgYm9v
bCBzdG9wcGVkKCkgT1ZFUlJJREU7CiAKKyAgICBWZWN0b3I8UmVmUHRyPEV2ZW50Pj4gbV9zY2hl
ZHVsZWRFdmVudHM7CiAgICAgUmVmUHRyPE1lZGlhU3RyZWFtU291cmNlPiBtX3NvdXJjZTsKLSAg
ICBSZWZQdHI8TWVkaWFDb25zdHJhaW50cz4gbV9jb25zdHJhaW50czsKKyAgICBSZWZQdHI8TWVk
aWFDb25zdHJhaW50c0ltcGw+IG1fY29uc3RyYWludHM7CiAgICAgTWVkaWFTdHJlYW1Tb3VyY2U6
OlJlYWR5U3RhdGUgbV9yZWFkeVN0YXRlOwogICAgIG11dGFibGUgU3RyaW5nIG1faWQ7CisgICAg
TXV0ZXggbV9tdXRleDsKIAogICAgIGJvb2wgbV9zdG9wcGVkOwogICAgIGJvb2wgbV9lbmFibGVk
OwogICAgIGJvb2wgbV9tdXRlZDsKKyAgICBib29sIG1fZXZlbnREaXNwYXRjaFNjaGVkdWxlZDsK
IH07CiAKIHR5cGVkZWYgVmVjdG9yPFJlZlB0cjxNZWRpYVN0cmVhbVRyYWNrPiA+IE1lZGlhU3Ry
ZWFtVHJhY2tWZWN0b3I7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFt
L01lZGlhU3RyZWFtVHJhY2suaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1UcmFjay5pZGwJKHJldmlzaW9uIDE1NzAxNikKKysr
IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1UcmFjay5pZGwJ
KHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw2IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDEx
IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCkBAIC0yMiw2ICsyMyw4IEBACiAgKiBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCitlbnVtIE1lZGlhU3RyZWFt
VHJhY2tTdGF0ZSB7ICJuZXciLCAibGl2ZSIsICJlbmRlZCIgfTsKKwogWwogICAgIENvbmRpdGlv
bmFsPU1FRElBX1NUUkVBTSwKICAgICBFdmVudFRhcmdldCwKQEAgLTMzLDE1ICszNiwyOSBAQAog
ICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBET01TdHJpbmcgaWQ7CiAgICAgcmVhZG9ubHkgYXR0cmli
dXRlIERPTVN0cmluZyBsYWJlbDsKICAgICAgICAgICAgICBhdHRyaWJ1dGUgYm9vbGVhbiBlbmFi
bGVkOwotCi0gICAgcmVhZG9ubHkgYXR0cmlidXRlIERPTVN0cmluZyByZWFkeVN0YXRlOwotCisg
ICAgcmVhZG9ubHkgYXR0cmlidXRlIGJvb2xlYW4gbXV0ZWQ7CiAgICAgYXR0cmlidXRlIEV2ZW50
TGlzdGVuZXIgb25tdXRlOwogICAgIGF0dHJpYnV0ZSBFdmVudExpc3RlbmVyIG9udW5tdXRlOwor
ICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBib29sZWFuIF9yZWFkb25seTsKKyAgICByZWFkb25seSBh
dHRyaWJ1dGUgYm9vbGVhbiByZW1vdGU7CisgICAgcmVhZG9ubHkgYXR0cmlidXRlIE1lZGlhU3Ry
ZWFtVHJhY2tTdGF0ZSByZWFkeVN0YXRlOworICAgIGF0dHJpYnV0ZSBFdmVudExpc3RlbmVyIG9u
c3RhcnRlZDsKICAgICBhdHRyaWJ1dGUgRXZlbnRMaXN0ZW5lciBvbmVuZGVkOwogCiAgICAgW0Nh
bGxXaXRoPVNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsIFJhaXNlc0V4Y2VwdGlvbl0gc3RhdGljIHZv
aWQgZ2V0U291cmNlcyhNZWRpYVN0cmVhbVRyYWNrU291cmNlc0NhbGxiYWNrIGNhbGxiYWNrKTsK
IAorICAgIE1lZGlhVHJhY2tDb25zdHJhaW50cyBjb25zdHJhaW50cygpOworCisgICAgTWVkaWFT
b3VyY2VTdGF0ZXMgc3RhdGVzKCk7CisKKyAgICBNZWRpYVN0cmVhbUNhcGFiaWxpdGllcyBjYXBh
YmlsaXRpZXMoKTsgLy8gcmV0dXJucyBlaXRoZXIgQWxsVmlkZW9DYXBhYmlsaXRpZXMgb3IgQWxs
QXVkaW9DYXBhYmlsaXRpZXMKKworICAgIHZvaWQgYXBwbHlDb25zdHJhaW50cyhEaWN0aW9uYXJ5
IGNvbnN0cmFpbnRzKTsKKworICAgIGF0dHJpYnV0ZSBFdmVudExpc3RlbmVyIG9ub3ZlcmNvbnN0
cmFpbmVkOworICAgIE1lZGlhU3RyZWFtVHJhY2sgY2xvbmUoKTsKKyAgICBbSW1wbGVtZW50ZWRB
cz1zdG9wUHJvZHVjaW5nRGF0YV0gdm9pZCBzdG9wKCk7CisKICAgICAvLyBFdmVudFRhcmdldCBp
bnRlcmZhY2UKICAgICB2b2lkIGFkZEV2ZW50TGlzdGVuZXIoRE9NU3RyaW5nIHR5cGUsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEV2ZW50TGlzdGVuZXIgbGlzdGVuZXIsCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhVHJhY2tDb25zdHJhaW50LmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhVHJh
Y2tDb25zdHJhaW50LmNwcAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMv
bWVkaWFzdHJlYW0vTWVkaWFUcmFja0NvbnN0cmFpbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0w
LDAgKzEsNTMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBD
T01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLiAKKyAqCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaWYgRU5BQkxFKE1FRElB
X1NUUkVBTSkKKworI2luY2x1ZGUgIk1lZGlhVHJhY2tDb25zdHJhaW50LmgiCisKK3VzaW5nIG5h
bWVzcGFjZSBKU0M7CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworUGFzc1JlZlB0cjxNZWRpYVRy
YWNrQ29uc3RyYWludD4gTWVkaWFUcmFja0NvbnN0cmFpbnQ6OmNyZWF0ZShjb25zdCBEaWN0aW9u
YXJ5JiBjb25zdHJhaW50KQoreworICAgIHJldHVybiBhZG9wdFJlZihuZXcgTWVkaWFUcmFja0Nv
bnN0cmFpbnQoY29uc3RyYWludCkpOworfQorCitNZWRpYVRyYWNrQ29uc3RyYWludDo6TWVkaWFU
cmFja0NvbnN0cmFpbnQoY29uc3QgRGljdGlvbmFyeSYgY29uc3RyYWludCkKKyAgICA6IG1fY29u
c3RyYWludChjb25zdHJhaW50KQoreworfQorCitNZWRpYVRyYWNrQ29uc3RyYWludDo6fk1lZGlh
VHJhY2tDb25zdHJhaW50KCkKK3sKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5k
aWYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFUcmFja0Nv
bnN0cmFpbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3Ry
ZWFtL01lZGlhVHJhY2tDb25zdHJhaW50LmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhVHJhY2tDb25zdHJhaW50LmgJKHdvcmtpbmcgY29w
eSkKQEAgLTAsMCArMSw1OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAq
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuIAorICoKKyAqLworCisjaWZuZGVmIE1lZGlhVHJhY2tDb25zdHJhaW50X2gK
KyNkZWZpbmUgTWVkaWFUcmFja0NvbnN0cmFpbnRfaAorCisjaWYgRU5BQkxFKE1FRElBX1NUUkVB
TSkKKworI2luY2x1ZGUgIkRpY3Rpb25hcnkuaCIKKyNpbmNsdWRlICJTY3JpcHRXcmFwcGFibGUu
aCIKKyNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisK
K2NsYXNzIFNjcmlwdFZhbHVlOworCitjbGFzcyBNZWRpYVRyYWNrQ29uc3RyYWludCA6IHB1Ymxp
YyBSZWZDb3VudGVkPE1lZGlhVHJhY2tDb25zdHJhaW50PiwgcHVibGljIFNjcmlwdFdyYXBwYWJs
ZSB7CitwdWJsaWM6CisgICAgc3RhdGljIFBhc3NSZWZQdHI8TWVkaWFUcmFja0NvbnN0cmFpbnQ+
IGNyZWF0ZShjb25zdCBEaWN0aW9uYXJ5Jik7CisKKyAgICB2aXJ0dWFsIH5NZWRpYVRyYWNrQ29u
c3RyYWludCgpOworCisgICAgY29uc3QgRGljdGlvbmFyeSYgY29uc3RyYWludCgpIGNvbnN0IHsg
cmV0dXJuIG1fY29uc3RyYWludDsgfQorCitwcml2YXRlOgorICAgIGV4cGxpY2l0IE1lZGlhVHJh
Y2tDb25zdHJhaW50KGNvbnN0IERpY3Rpb25hcnkmKTsKKyAgICAKKyAgICBjb25zdCBEaWN0aW9u
YXJ5JiBtX2NvbnN0cmFpbnQ7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRp
ZiAvLyBNZWRpYVRyYWNrQ29uc3RyYWludF9oCisKKyNlbmRpZgpJbmRleDogU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVRyYWNrQ29uc3RyYWludC5pZGwKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVRyYWNrQ29uc3Ry
YWludC5pZGwJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3Ry
ZWFtL01lZGlhVHJhY2tDb25zdHJhaW50LmlkbAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDMx
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
Q09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4gCisgKi8KKworWworICAgIENvbmRpdGlvbmFsPU1FRElBX1NUUkVBTSwKKyAgICBOb0lu
dGVyZmFjZU9iamVjdCwKK10gaW50ZXJmYWNlIE1lZGlhVHJhY2tDb25zdHJhaW50IHsKK307CisK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFUcmFja0NvbnN0
cmFpbnRTZXQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFz
dHJlYW0vTWVkaWFUcmFja0NvbnN0cmFpbnRTZXQuY3BwCShyZXZpc2lvbiAwKQorKysgU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVRyYWNrQ29uc3RyYWludFNldC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw1MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
MyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICog
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAq
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICoKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgi
CisKKyNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQorCisjaW5jbHVkZSAiTWVkaWFUcmFja0NvbnN0
cmFpbnRTZXQuaCIKKwordXNpbmcgbmFtZXNwYWNlIEpTQzsKKworbmFtZXNwYWNlIFdlYkNvcmUg
eworCitQYXNzUmVmUHRyPE1lZGlhVHJhY2tDb25zdHJhaW50U2V0PiBNZWRpYVRyYWNrQ29uc3Ry
YWludFNldDo6Y3JlYXRlKGNvbnN0IERpY3Rpb25hcnkmIGNvbnN0cmFpbnRzKQoreworICAgIHJl
dHVybiBhZG9wdFJlZihuZXcgTWVkaWFUcmFja0NvbnN0cmFpbnRTZXQoY29uc3RyYWludHMpKTsK
K30KKworTWVkaWFUcmFja0NvbnN0cmFpbnRTZXQ6Ok1lZGlhVHJhY2tDb25zdHJhaW50U2V0KGNv
bnN0IERpY3Rpb25hcnkmIGNvbnN0cmFpbnRzKQorICAgIDogbV9jb25zdHJhaW50cyhjb25zdHJh
aW50cykKK3sKK30KKworTWVkaWFUcmFja0NvbnN0cmFpbnRTZXQ6On5NZWRpYVRyYWNrQ29uc3Ry
YWludFNldCgpCit7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhVHJhY2tDb25zdHJhaW50
U2V0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9N
ZWRpYVRyYWNrQ29uc3RyYWludFNldC5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVRyYWNrQ29uc3RyYWludFNldC5oCSh3b3JraW5nIGNv
cHkpCkBAIC0wLDAgKzEsNTYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisg
KiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisg
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLiAKKyAqCisgKi8KKworI2lmbmRlZiBNZWRpYVRyYWNrQ29uc3RyYWludFNl
dF9oCisjZGVmaW5lIE1lZGlhVHJhY2tDb25zdHJhaW50U2V0X2gKKworI2lmIEVOQUJMRShNRURJ
QV9TVFJFQU0pCisKKyNpbmNsdWRlICJEaWN0aW9uYXJ5LmgiCisjaW5jbHVkZSAiU2NyaXB0V3Jh
cHBhYmxlLmgiCisjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KKworbmFtZXNwYWNlIFdlYkNv
cmUgeworCitjbGFzcyBNZWRpYVRyYWNrQ29uc3RyYWludFNldCA6IHB1YmxpYyBSZWZDb3VudGVk
PE1lZGlhVHJhY2tDb25zdHJhaW50U2V0PiwgcHVibGljIFNjcmlwdFdyYXBwYWJsZSB7CitwdWJs
aWM6CisgICAgc3RhdGljIFBhc3NSZWZQdHI8TWVkaWFUcmFja0NvbnN0cmFpbnRTZXQ+IGNyZWF0
ZShjb25zdCBEaWN0aW9uYXJ5Jik7CisKKyAgICB2aXJ0dWFsIH5NZWRpYVRyYWNrQ29uc3RyYWlu
dFNldCgpOworCisgICAgY29uc3QgRGljdGlvbmFyeSYgY29uc3RyYWludHMoKSBjb25zdCB7IHJl
dHVybiBtX2NvbnN0cmFpbnRzOyB9CisKK3ByaXZhdGU6CisgICAgZXhwbGljaXQgTWVkaWFUcmFj
a0NvbnN0cmFpbnRTZXQoY29uc3QgRGljdGlvbmFyeSYpOworICAgIAorICAgIGNvbnN0IERpY3Rp
b25hcnkmIG1fY29uc3RyYWludHM7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNl
bmRpZiAvLyBNZWRpYVRyYWNrQ29uc3RyYWludFNldF9oCisKKyNlbmRpZgpJbmRleDogU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVRyYWNrQ29uc3RyYWludFNldC5pZGwK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVRy
YWNrQ29uc3RyYWludFNldC5pZGwJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL21lZGlhc3RyZWFtL01lZGlhVHJhY2tDb25zdHJhaW50U2V0LmlkbAkod29ya2luZyBjb3B5
KQpAQCAtMCwwICsxLDMzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEdPT0dMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICog
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwg
R09PR0xFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCitbCisgICAgQ29uZGl0aW9uYWw9TUVESUFfU1RSRUFNLAorICAgIE5vSW50ZXJm
YWNlT2JqZWN0LAorXSBpbnRlcmZhY2UgTWVkaWFUcmFja0NvbnN0cmFpbnRTZXQgeworICAgIC8v
IEZJWE1FOiBOb3QgaW1wbGVtZW50ZWQuCisgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTEyMTk1NAorfTsKKwpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9tZWRpYXN0cmVhbS9NZWRpYVRyYWNrQ29uc3RyYWludHMuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFUcmFja0NvbnN0cmFpbnRzLmNw
cAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVk
aWFUcmFja0NvbnN0cmFpbnRzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDY3IEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFLCBJTkMu
IGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4g
T1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKgorICov
CisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCisKKyNp
bmNsdWRlICJNZWRpYVRyYWNrQ29uc3RyYWludHMuaCIKKworI2luY2x1ZGUgIk1lZGlhVHJhY2tD
b25zdHJhaW50LmgiCisjaW5jbHVkZSAiTWVkaWFUcmFja0NvbnN0cmFpbnRTZXQuaCIKKyNpbmNs
dWRlICJOb3RJbXBsZW1lbnRlZC5oIgorCit1c2luZyBuYW1lc3BhY2UgSlNDOworCituYW1lc3Bh
Y2UgV2ViQ29yZSB7CisKK1Bhc3NSZWZQdHI8TWVkaWFUcmFja0NvbnN0cmFpbnRzPiBNZWRpYVRy
YWNrQ29uc3RyYWludHM6OmNyZWF0ZShQYXNzUmVmUHRyPE1lZGlhQ29uc3RyYWludHNJbXBsPiBj
b25zdHJhaW50cykKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3IE1lZGlhVHJhY2tDb25zdHJh
aW50cyhjb25zdHJhaW50cykpOworfQorCitNZWRpYVRyYWNrQ29uc3RyYWludHM6Ok1lZGlhVHJh
Y2tDb25zdHJhaW50cyhQYXNzUmVmUHRyPE1lZGlhQ29uc3RyYWludHNJbXBsPiBjb25zdHJhaW50
cykKKyAgICA6IG1fY29uc3RyYWludHMoY29uc3RyYWludHMpCit7Cit9CisKK1ZlY3RvcjxQYXNz
UmVmUHRyPE1lZGlhVHJhY2tDb25zdHJhaW50Pj4gTWVkaWFUcmFja0NvbnN0cmFpbnRzOjpvcHRp
b25hbChib29sKSBjb25zdAoreworICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xMjE5NTQKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiBWZWN0
b3I8UGFzc1JlZlB0cjxNZWRpYVRyYWNrQ29uc3RyYWludD4+KCk7Cit9CisKK1Bhc3NSZWZQdHI8
TWVkaWFUcmFja0NvbnN0cmFpbnRTZXQ+IE1lZGlhVHJhY2tDb25zdHJhaW50czo6bWFuZGF0b3J5
KGJvb2wpIGNvbnN0Cit7CisgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTEyMTk1NAorICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIG51bGxwdHI7
Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhVHJhY2tDb25zdHJhaW50cy5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFUcmFja0NvbnN0
cmFpbnRzLmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3Ry
ZWFtL01lZGlhVHJhY2tDb25zdHJhaW50cy5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNjAg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUs
IElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwg
SU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAq
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAq
CisgKi8KKworI2lmbmRlZiBNZWRpYVRyYWNrQ29uc3RyYWludHNfaAorI2RlZmluZSBNZWRpYVRy
YWNrQ29uc3RyYWludHNfaAorCisjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKKworI2luY2x1ZGUg
Ik1lZGlhQ29uc3RyYWludHNJbXBsLmgiCisjaW5jbHVkZSAiU2NyaXB0V3JhcHBhYmxlLmgiCisj
aW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFz
cyBNZWRpYVRyYWNrQ29uc3RyYWludDsKK2NsYXNzIE1lZGlhVHJhY2tDb25zdHJhaW50U2V0Owor
CitjbGFzcyBNZWRpYVRyYWNrQ29uc3RyYWludHMgOiBwdWJsaWMgUmVmQ291bnRlZDxNZWRpYVRy
YWNrQ29uc3RyYWludHM+LCBwdWJsaWMgU2NyaXB0V3JhcHBhYmxlIHsKK3B1YmxpYzoKKyAgICB2
aXJ0dWFsIH5NZWRpYVRyYWNrQ29uc3RyYWludHMoKSB7IH0KKworICAgIHN0YXRpYyBQYXNzUmVm
UHRyPE1lZGlhVHJhY2tDb25zdHJhaW50cz4gY3JlYXRlKFBhc3NSZWZQdHI8TWVkaWFDb25zdHJh
aW50c0ltcGw+KTsKKworICAgIFZlY3RvcjxQYXNzUmVmUHRyPE1lZGlhVHJhY2tDb25zdHJhaW50
Pj4gb3B0aW9uYWwoYm9vbCkgY29uc3Q7CisgICAgUGFzc1JlZlB0cjxNZWRpYVRyYWNrQ29uc3Ry
YWludFNldD4gbWFuZGF0b3J5KGJvb2wpIGNvbnN0OworCitwcml2YXRlOgorICAgIGV4cGxpY2l0
IE1lZGlhVHJhY2tDb25zdHJhaW50cyhQYXNzUmVmUHRyPE1lZGlhQ29uc3RyYWludHNJbXBsPik7
CisgICAgCisgICAgUmVmUHRyPE1lZGlhQ29uc3RyYWludHNJbXBsPiBtX2NvbnN0cmFpbnRzOwor
fTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gTWVkaWFUcmFja0NvbnN0
cmFpbnRzX2gKKworI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3Ry
ZWFtL01lZGlhVHJhY2tDb25zdHJhaW50cy5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVRyYWNrQ29uc3RyYWludHMuaWRsCShyZXZpc2lv
biAwKQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVRyYWNrQ29u
c3RyYWludHMuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMzMgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4g
YGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBP
UgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCitb
CisgICAgQ29uZGl0aW9uYWw9TUVESUFfU1RSRUFNLAorICAgIE5vSW50ZXJmYWNlT2JqZWN0LAor
XSBpbnRlcmZhY2UgTWVkaWFUcmFja0NvbnN0cmFpbnRzIHsKKyAgICByZWFkb25seSBhdHRyaWJ1
dGUgTWVkaWFUcmFja0NvbnN0cmFpbnRTZXQ/IG1hbmRhdG9yeTsKKyAgICByZWFkb25seSBhdHRy
aWJ1dGUgTWVkaWFUcmFja0NvbnN0cmFpbnRbXT8gb3B0aW9uYWw7Cit9OworCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL05hdmlnYXRvck1lZGlhU3RyZWFtLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL05hdmlnYXRv
ck1lZGlhU3RyZWFtLmNwcAkocmV2aXNpb24gMTU3MDE2KQorKysgU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9tZWRpYXN0cmVhbS9OYXZpZ2F0b3JNZWRpYVN0cmVhbS5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTM2LDggKzM2LDI3IEBACiAjaW5jbHVkZSAiVXNlck1lZGlhQ29udHJvbGxlci5oIgogI2lu
Y2x1ZGUgIlVzZXJNZWRpYVJlcXVlc3QuaCIKIAorLy9AQEBAQAorI2luY2x1ZGUgIk1lZGlhU3Ry
ZWFtLmgiCisjaW5jbHVkZSAiTW9ja01lZGlhU3RyZWFtQ2VudGVyLmgiCisjaW5jbHVkZSAiVXNl
ck1lZGlhQ2xpZW50LmgiCisvL0BAQEBACisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorLy9AQEBA
QAorY2xhc3MgSGFja1VzZXJNZWRpYUNsaWVudCBGSU5BTCA6IHB1YmxpYyBVc2VyTWVkaWFDbGll
bnQgeworcHVibGljOgorICAgIEhhY2tVc2VyTWVkaWFDbGllbnQoKSB7IH0KKyAgICB+SGFja1Vz
ZXJNZWRpYUNsaWVudCgpIHsgfQorICAgIAorICAgIC8vIFVzZXJNZWRpYUNsaWVudAorICAgIHZp
cnR1YWwgdm9pZCByZXF1ZXN0UGVybWlzc2lvbihQYXNzUmVmUHRyPFVzZXJNZWRpYVJlcXVlc3Q+
IHJlcXVlc3QpIE9WRVJSSURFIHsgcmVxdWVzdC0+dXNlck1lZGlhQWNjZXNzR3JhbnRlZCgpOyB9
CisgICAgdmlydHVhbCB2b2lkIGNhbmNlbFJlcXVlc3QoVXNlck1lZGlhUmVxdWVzdCopIE9WRVJS
SURFIHsgfQorICAgIHZpcnR1YWwgdm9pZCBwYWdlRGVzdHJveWVkKCkgT1ZFUlJJREUgeyB9Cit9
OworLy9AQEBAQAorCiBOYXZpZ2F0b3JNZWRpYVN0cmVhbTo6TmF2aWdhdG9yTWVkaWFTdHJlYW0o
KQogewogfQpAQCAtNTEsNyArNzAsMTIgQEAgdm9pZCBOYXZpZ2F0b3JNZWRpYVN0cmVhbTo6d2Vi
a2l0R2V0VXNlcgogICAgIGlmICghc3VjY2Vzc0NhbGxiYWNrKQogICAgICAgICByZXR1cm47CiAK
KyNpZiAwCiAgICAgVXNlck1lZGlhQ29udHJvbGxlciogdXNlck1lZGlhID0gVXNlck1lZGlhQ29u
dHJvbGxlcjo6ZnJvbShuYXZpZ2F0b3ItPmZyYW1lKCkgPyBuYXZpZ2F0b3ItPmZyYW1lKCktPnBh
Z2UoKSA6IDApOworI2Vsc2UKKyAgICBzdGF0aWMgVXNlck1lZGlhQ29udHJvbGxlciogdXNlck1l
ZGlhID0gVXNlck1lZGlhQ29udHJvbGxlcjo6Y3JlYXRlKG5ldyBIYWNrVXNlck1lZGlhQ2xpZW50
KCkpLmxlYWtQdHIoKTsKKyAgICBNb2NrTWVkaWFTdHJlYW1DZW50ZXI6OnJlZ2lzdGVyTW9ja01l
ZGlhU3RyZWFtQ2VudGVyKCk7CisjZW5kaWYKICAgICBpZiAoIXVzZXJNZWRpYSkgewogICAgICAg
ICBlYyA9IE5PVF9TVVBQT1JURURfRVJSOwogICAgICAgICByZXR1cm47CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1VzZXJNZWRpYVJlcXVlc3QuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vVXNlck1lZGlhUmVxdWVz
dC5jcHAJKHJldmlzaW9uIDE1NzAxNikKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFz
dHJlYW0vVXNlck1lZGlhUmVxdWVzdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE3Myw3ICsxNzMs
NiBAQCB2b2lkIFVzZXJNZWRpYVJlcXVlc3Q6OmNhbGxTdWNjZXNzSGFuZGxlCiAgICAgZm9yIChN
ZWRpYVN0cmVhbVRyYWNrVmVjdG9yOjppdGVyYXRvciBpdGVyID0gdHJhY2tzLmJlZ2luKCk7IGl0
ZXIgIT0gdHJhY2tzLmVuZCgpOyArK2l0ZXIpCiAgICAgICAgICgqaXRlciktPnNvdXJjZSgpLT5z
ZXRDb25zdHJhaW50cyhtX3ZpZGVvQ29uc3RyYWludHMpOwogCi0gICAgTWVkaWFTdHJlYW1DZW50
ZXI6OnNoYXJlZCgpLmRpZENyZWF0ZU1lZGlhU3RyZWFtKHN0cmVhbURlc2NyaXB0b3IuZ2V0KCkp
OwogICAgIG1fc3VjY2Vzc0NhbGxiYWNrLT5oYW5kbGVFdmVudChzdHJlYW0uZ2V0KCkpOwogfQog
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1ZpZGVvU3RyZWFtVHJh
Y2suY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0v
VmlkZW9TdHJlYW1UcmFjay5jcHAJKHJldmlzaW9uIDE1NzAxNikKKysrIFNvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvbWVkaWFzdHJlYW0vVmlkZW9TdHJlYW1UcmFjay5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTQ3LDExICs0NywyMSBAQCBQYXNzUmVmUHRyPFZpZGVvU3RyZWFtVHJhY2s+IFZpZGVvU3Ry
ZWFtCiAgICAgcmV0dXJuIHRyYWNrLnJlbGVhc2UoKTsKIH0KIAorUGFzc1JlZlB0cjxWaWRlb1N0
cmVhbVRyYWNrPiBWaWRlb1N0cmVhbVRyYWNrOjpjcmVhdGUoTWVkaWFTdHJlYW1UcmFjayogdHJh
Y2spCit7CisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBWaWRlb1N0cmVhbVRyYWNrKHRyYWNrKSk7
Cit9CisKIFZpZGVvU3RyZWFtVHJhY2s6OlZpZGVvU3RyZWFtVHJhY2soU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCogY29udGV4dCwgTWVkaWFTdHJlYW1Tb3VyY2UqIHNvdXJjZSwgY29uc3QgRGljdGlv
bmFyeSogdmlkZW9Db25zdHJhaW50cykKICAgICA6IE1lZGlhU3RyZWFtVHJhY2soY29udGV4dCwg
c291cmNlLCB2aWRlb0NvbnN0cmFpbnRzKQogewogfQogCitWaWRlb1N0cmVhbVRyYWNrOjpWaWRl
b1N0cmVhbVRyYWNrKE1lZGlhU3RyZWFtVHJhY2sqIHRyYWNrKQorICAgIDogTWVkaWFTdHJlYW1U
cmFjayh0cmFjaykKK3sKK30KKwogY29uc3QgQXRvbWljU3RyaW5nJiBWaWRlb1N0cmVhbVRyYWNr
OjpraW5kKCkgY29uc3QKIHsKICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8QXRvbWljU3RyaW5n
PiB2aWRlb0tpbmQoInZpZGVvIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1ZpZGVvU3RyZWFtVHJh
Y2suaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1Zp
ZGVvU3RyZWFtVHJhY2suaAkocmV2aXNpb24gMTU3MDE2KQorKysgU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9tZWRpYXN0cmVhbS9WaWRlb1N0cmVhbVRyYWNrLmgJKHdvcmtpbmcgY29weSkKQEAgLTI5
LDE4ICsyOSwxOSBAQAogI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCiAKICNpbmNsdWRlICJNZWRp
YVN0cmVhbVRyYWNrLmgiCi0jaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogI2luY2x1ZGUgPHd0Zi9S
ZWZDb3VudGVkLmg+CisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKIGNsYXNzIE1lZGlhU3RyZWFtU291cmNlOwogY2xhc3MgU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dDsKIAotY2xhc3MgVmlkZW9TdHJlYW1UcmFjayA6IHB1YmxpYyBNZWRpYVN0cmVhbVRyYWNr
IHsKK2NsYXNzIFZpZGVvU3RyZWFtVHJhY2sgRklOQUwgOiBwdWJsaWMgTWVkaWFTdHJlYW1UcmFj
ayB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8VmlkZW9TdHJlYW1UcmFjaz4gY3Jl
YXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBjb25zdCBEaWN0aW9uYXJ5Jik7CiAgICAgc3Rh
dGljIFBhc3NSZWZQdHI8VmlkZW9TdHJlYW1UcmFjaz4gY3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQqLCBNZWRpYVN0cmVhbVNvdXJjZSopOworICAgIHN0YXRpYyBQYXNzUmVmUHRyPFZpZGVv
U3RyZWFtVHJhY2s+IGNyZWF0ZShNZWRpYVN0cmVhbVRyYWNrKik7CiAKICAgICB2aXJ0dWFsIH5W
aWRlb1N0cmVhbVRyYWNrKCkgeyB9CiAKQEAgLTQ4LDYgKzQ5LDcgQEAgcHVibGljOgogCiBwcml2
YXRlOgogICAgIFZpZGVvU3RyZWFtVHJhY2soU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIE1lZGlh
U3RyZWFtU291cmNlKiwgY29uc3QgRGljdGlvbmFyeSopOworICAgIGV4cGxpY2l0IFZpZGVvU3Ry
ZWFtVHJhY2soTWVkaWFTdHJlYW1UcmFjayopOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0NvbnRleHQuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250
ZXh0LmNwcAkocmV2aXNpb24gMTU3MDE2KQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJh
dWRpby9BdWRpb0NvbnRleHQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02Myw2ICs2Myw3IEBACiAj
aWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKICNpbmNsdWRlICJNZWRpYVN0cmVhbS5oIgogI2luY2x1
ZGUgIk1lZGlhU3RyZWFtQXVkaW9EZXN0aW5hdGlvbk5vZGUuaCIKKyNpbmNsdWRlICJNZWRpYVN0
cmVhbUF1ZGlvU291cmNlLmgiCiAjaW5jbHVkZSAiTWVkaWFTdHJlYW1BdWRpb1NvdXJjZU5vZGUu
aCIKICNlbmRpZgogCkBAIC00MjAsMTIgKzQyMSwxNCBAQCBQYXNzUmVmUHRyPE1lZGlhU3RyZWFt
QXVkaW9Tb3VyY2VOb2RlPiBBCiAgICAgLy8gRklYTUU6IGdldCBhIHByb3ZpZGVyIGZvciBub24t
bG9jYWwgTWVkaWFTdHJlYW1zIChsaWtlIGZyb20gYSByZW1vdGUgcGVlcikuCiAgICAgZm9yIChz
aXplX3QgaSA9IDA7IGkgPCBhdWRpb1RyYWNrcy5zaXplKCk7ICsraSkgewogICAgICAgICBSZWZQ
dHI8TWVkaWFTdHJlYW1UcmFjaz4gbG9jYWxBdWRpbyA9IGF1ZGlvVHJhY2tzW2ldOwotICAgICAg
ICBNZWRpYVN0cmVhbVNvdXJjZSogc291cmNlID0gbG9jYWxBdWRpby0+c291cmNlKCk7Ci0gICAg
ICAgIGlmICghc291cmNlLT5kZXZpY2VJZCgpLmlzRW1wdHkoKSkgewotICAgICAgICAgICAgZGVz
dGluYXRpb24oKS0+ZW5hYmxlSW5wdXQoc291cmNlLT5kZXZpY2VJZCgpKTsKLSAgICAgICAgICAg
IHByb3ZpZGVyID0gZGVzdGluYXRpb24oKS0+bG9jYWxBdWRpb0lucHV0UHJvdmlkZXIoKTsKLSAg
ICAgICAgICAgIGJyZWFrOwotICAgICAgICB9CisgICAgICAgIGlmICghbG9jYWxBdWRpby0+c291
cmNlKCktPmlzQXVkaW9TdHJlYW1Tb3VyY2UoKSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworCisg
ICAgICAgIE1lZGlhU3RyZWFtQXVkaW9Tb3VyY2UqIHNvdXJjZSA9IHN0YXRpY19jYXN0PE1lZGlh
U3RyZWFtQXVkaW9Tb3VyY2UqPihsb2NhbEF1ZGlvLT5zb3VyY2UoKSk7CisgICAgICAgIEFTU0VS
VCghc291cmNlLT5kZXZpY2VJZCgpLmlzRW1wdHkoKSk7CisgICAgICAgIGRlc3RpbmF0aW9uKCkt
PmVuYWJsZUlucHV0KHNvdXJjZS0+ZGV2aWNlSWQoKSk7CisgICAgICAgIHByb3ZpZGVyID0gZGVz
dGluYXRpb24oKS0+bG9jYWxBdWRpb0lucHV0UHJvdmlkZXIoKTsKKyAgICAgICAgYnJlYWs7CiAg
ICAgfQogCiAgICAgUmVmUHRyPE1lZGlhU3RyZWFtQXVkaW9Tb3VyY2VOb2RlPiBub2RlID0gTWVk
aWFTdHJlYW1BdWRpb1NvdXJjZU5vZGU6OmNyZWF0ZSh0aGlzLCBtZWRpYVN0cmVhbSwgcHJvdmlk
ZXIpOwpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9NZWRpYVN0cmVhbUF1
ZGlvRGVzdGluYXRpb25Ob2RlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmF1ZGlvL01lZGlhU3RyZWFtQXVkaW9EZXN0aW5hdGlvbk5vZGUuY3BwCShyZXZpc2lv
biAxNTcwMTYpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL01lZGlhU3RyZWFt
QXVkaW9EZXN0aW5hdGlvbk5vZGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMSw5ICszMSw4IEBA
CiAjaW5jbHVkZSAiQXVkaW9Db250ZXh0LmgiCiAjaW5jbHVkZSAiQXVkaW9Ob2RlSW5wdXQuaCIK
ICNpbmNsdWRlICJNZWRpYVN0cmVhbS5oIgotI2luY2x1ZGUgIk1lZGlhU3RyZWFtQ2VudGVyLmgi
CisjaW5jbHVkZSAiTWVkaWFTdHJlYW1BdWRpb1NvdXJjZS5oIgogI2luY2x1ZGUgIlJUQ1BlZXJD
b25uZWN0aW9uSGFuZGxlci5oIgotI2luY2x1ZGUgIlVVSUQuaCIKICNpbmNsdWRlIDx3dGYvTG9j
a2VyLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTQ5LDEyICs0OCwxMCBAQCBNZWRpYVN0
cmVhbUF1ZGlvRGVzdGluYXRpb25Ob2RlOjpNZWRpYVN0CiB7CiAgICAgc2V0Tm9kZVR5cGUoTm9k
ZVR5cGVNZWRpYVN0cmVhbUF1ZGlvRGVzdGluYXRpb24pOwogCi0gICAgbV9zb3VyY2UgPSBNZWRp
YVN0cmVhbVNvdXJjZTo6Y3JlYXRlKEFTQ0lJTGl0ZXJhbCgiV2ViQXVkaW8tIikgKyBjcmVhdGVD
YW5vbmljYWxVVUlEU3RyaW5nKCksIE1lZGlhU3RyZWFtU291cmNlOjpBdWRpbywgIk1lZGlhU3Ry
ZWFtQXVkaW9EZXN0aW5hdGlvbk5vZGUiLCBNZWRpYVN0cmVhbVNvdXJjZTo6TGl2ZSwgdHJ1ZSk7
CisgICAgbV9zb3VyY2UgPSBNZWRpYVN0cmVhbUF1ZGlvU291cmNlOjpjcmVhdGUoKTsKICAgICBN
ZWRpYVN0cmVhbVNvdXJjZVZlY3RvciBhdWRpb1NvdXJjZXM7CiAgICAgYXVkaW9Tb3VyY2VzLmFw
cGVuZChtX3NvdXJjZSk7Ci0gICAgTWVkaWFTdHJlYW1Tb3VyY2VWZWN0b3IgdmlkZW9Tb3VyY2Vz
OwotICAgIG1fc3RyZWFtID0gTWVkaWFTdHJlYW06OmNyZWF0ZShjb250ZXh0LT5zY3JpcHRFeGVj
dXRpb25Db250ZXh0KCksIE1lZGlhU3RyZWFtRGVzY3JpcHRvcjo6Y3JlYXRlKGF1ZGlvU291cmNl
cywgdmlkZW9Tb3VyY2VzKSk7Ci0gICAgTWVkaWFTdHJlYW1DZW50ZXI6OnNoYXJlZCgpLmRpZENy
ZWF0ZU1lZGlhU3RyZWFtKG1fc3RyZWFtLT5kZXNjcmlwdG9yKCkpOworICAgIG1fc3RyZWFtID0g
TWVkaWFTdHJlYW06OmNyZWF0ZShjb250ZXh0LT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCksIE1l
ZGlhU3RyZWFtRGVzY3JpcHRvcjo6Y3JlYXRlKGF1ZGlvU291cmNlcywgTWVkaWFTdHJlYW1Tb3Vy
Y2VWZWN0b3IoKSkpOwogCiAgICAgbV9zb3VyY2UtPnNldEF1ZGlvRm9ybWF0KG51bWJlck9mQ2hh
bm5lbHMsIGNvbnRleHQtPnNhbXBsZVJhdGUoKSk7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViYXVkaW8vTWVkaWFTdHJlYW1BdWRpb0Rlc3RpbmF0aW9uTm9kZS5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vTWVkaWFTdHJlYW1BdWRpb0Rl
c3RpbmF0aW9uTm9kZS5oCShyZXZpc2lvbiAxNTcwMTYpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmF1ZGlvL01lZGlhU3RyZWFtQXVkaW9EZXN0aW5hdGlvbk5vZGUuaAkod29ya2luZyBj
b3B5KQpAQCAtMzYsNiArMzYsNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBBdWRp
b0NvbnRleHQ7CitjbGFzcyBNZWRpYVN0cmVhbUF1ZGlvU291cmNlOwogCiBjbGFzcyBNZWRpYVN0
cmVhbUF1ZGlvRGVzdGluYXRpb25Ob2RlIDogcHVibGljIEF1ZGlvQmFzaWNJbnNwZWN0b3JOb2Rl
IHsKIHB1YmxpYzoKQEAgLTYxLDcgKzYyLDcgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIGJvb2wg
cHJvcGFnYXRlc1NpbGVuY2UoKSBjb25zdCBPVkVSUklERSB7IHJldHVybiBmYWxzZTsgfQogCiAg
ICAgUmVmUHRyPE1lZGlhU3RyZWFtPiBtX3N0cmVhbTsKLSAgICBSZWZQdHI8TWVkaWFTdHJlYW1T
b3VyY2U+IG1fc291cmNlOworICAgIFJlZlB0cjxNZWRpYVN0cmVhbUF1ZGlvU291cmNlPiBtX3Nv
dXJjZTsKICAgICBSZWZQdHI8QXVkaW9CdXM+IG1fbWl4QnVzOwogfTsKIApJbmRleDogU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9NZWRpYVN0cmVhbUF1ZGlvU291cmNlLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL01lZGlhU3RyZWFtQXVk
aW9Tb3VyY2UuY3BwCShyZXZpc2lvbiAwKQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJh
dWRpby9NZWRpYVN0cmVhbUF1ZGlvU291cmNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsx
LDk4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpZiBFTkFCTEUoTUVESUFf
U1RSRUFNKQorCisjaW5jbHVkZSAiTWVkaWFTdHJlYW1BdWRpb1NvdXJjZS5oIgorCisjaW5jbHVk
ZSAiTm90SW1wbGVtZW50ZWQuaCIKKyNpbmNsdWRlICJVVUlELmgiCisjaW5jbHVkZSA8d3RmL1Bh
c3NPd25QdHIuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitQYXNzUmVmUHRyPE1lZGlhU3Ry
ZWFtQXVkaW9Tb3VyY2U+IE1lZGlhU3RyZWFtQXVkaW9Tb3VyY2U6OmNyZWF0ZSgpCit7CisgICAg
cmV0dXJuIGFkb3B0UmVmKG5ldyBNZWRpYVN0cmVhbUF1ZGlvU291cmNlKCkpOworfQorCitNZWRp
YVN0cmVhbUF1ZGlvU291cmNlOjpNZWRpYVN0cmVhbUF1ZGlvU291cmNlKCkKKyAgICA6IE1lZGlh
U3RyZWFtU291cmNlKEFTQ0lJTGl0ZXJhbCgiV2ViQXVkaW8tIikgKyBjcmVhdGVDYW5vbmljYWxV
VUlEU3RyaW5nKCksIE1lZGlhU3RyZWFtU291cmNlOjpBdWRpbywgIk1lZGlhU3RyZWFtQXVkaW9E
ZXN0aW5hdGlvbk5vZGUiKQoreworfQorCitQYXNzUmVmUHRyPE1lZGlhU3RyZWFtU291cmNlQ2Fw
YWJpbGl0aWVzPiBNZWRpYVN0cmVhbUF1ZGlvU291cmNlOjpjYXBhYmlsaXRpZXMoKSBjb25zdAor
eworICAgIC8vIEZJWE1FOiBpbXBsZW1lbnQgdGhpcy4KKyAgICAvLyBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTIyNDMwCisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAg
ICByZXR1cm4gMDsKK30KKworY29uc3QgTWVkaWFTdHJlYW1Tb3VyY2VTdGF0ZXMmIE1lZGlhU3Ry
ZWFtQXVkaW9Tb3VyY2U6OnN0YXRlcygpCit7CisgICAgLy8gRklYTUU6IGltcGxlbWVudCB0aGlz
LgorICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjI0MzAK
KyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiBtX2N1cnJlbnRTdGF0ZXM7CisgICAg
Cit9CisKK3ZvaWQgTWVkaWFTdHJlYW1BdWRpb1NvdXJjZTo6YWRkQXVkaW9Db25zdW1lcihQYXNz
UmVmUHRyPEF1ZGlvRGVzdGluYXRpb25Db25zdW1lcj4gY29uc3VtZXIpCit7CisgICAgTXV0ZXhM
b2NrZXIgbG9ja2VyKG1fYXVkaW9Db25zdW1lcnNMb2NrKTsKKyAgICBtX2F1ZGlvQ29uc3VtZXJz
LmFwcGVuZChjb25zdW1lcik7Cit9CisKK2Jvb2wgTWVkaWFTdHJlYW1BdWRpb1NvdXJjZTo6cmVt
b3ZlQXVkaW9Db25zdW1lcihBdWRpb0Rlc3RpbmF0aW9uQ29uc3VtZXIqIGNvbnN1bWVyKQorewor
ICAgIE11dGV4TG9ja2VyIGxvY2tlcihtX2F1ZGlvQ29uc3VtZXJzTG9jayk7CisgICAgc2l6ZV90
IHBvcyA9IG1fYXVkaW9Db25zdW1lcnMuZmluZChjb25zdW1lcik7CisgICAgaWYgKHBvcyAhPSBu
b3RGb3VuZCkgeworICAgICAgICBtX2F1ZGlvQ29uc3VtZXJzLnJlbW92ZShwb3MpOworICAgICAg
ICByZXR1cm4gdHJ1ZTsKKyAgICB9CisgICAgcmV0dXJuIGZhbHNlOworfQorCit2b2lkIE1lZGlh
U3RyZWFtQXVkaW9Tb3VyY2U6OnNldEF1ZGlvRm9ybWF0KHNpemVfdCBudW1iZXJPZkNoYW5uZWxz
LCBmbG9hdCBzYW1wbGVSYXRlKQoreworICAgIE11dGV4TG9ja2VyIGxvY2tlcihtX2F1ZGlvQ29u
c3VtZXJzTG9jayk7CisgICAgZm9yIChWZWN0b3I8UmVmUHRyPEF1ZGlvRGVzdGluYXRpb25Db25z
dW1lcj4gPjo6aXRlcmF0b3IgaXQgPSBtX2F1ZGlvQ29uc3VtZXJzLmJlZ2luKCk7IGl0ICE9IG1f
YXVkaW9Db25zdW1lcnMuZW5kKCk7ICsraXQpCisgICAgICAgICgqaXQpLT5zZXRGb3JtYXQobnVt
YmVyT2ZDaGFubmVscywgc2FtcGxlUmF0ZSk7Cit9CisKK3ZvaWQgTWVkaWFTdHJlYW1BdWRpb1Nv
dXJjZTo6Y29uc3VtZUF1ZGlvKEF1ZGlvQnVzKiBidXMsIHNpemVfdCBudW1iZXJPZkZyYW1lcykK
K3sKKyAgICBNdXRleExvY2tlciBsb2NrZXIobV9hdWRpb0NvbnN1bWVyc0xvY2spOworICAgIGZv
ciAoVmVjdG9yPFJlZlB0cjxBdWRpb0Rlc3RpbmF0aW9uQ29uc3VtZXI+ID46Oml0ZXJhdG9yIGl0
ID0gbV9hdWRpb0NvbnN1bWVycy5iZWdpbigpOyBpdCAhPSBtX2F1ZGlvQ29uc3VtZXJzLmVuZCgp
OyArK2l0KQorICAgICAgICAoKml0KS0+Y29uc3VtZUF1ZGlvKGJ1cywgbnVtYmVyT2ZGcmFtZXMp
OworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoTUVESUFf
U1RSRUFNKQpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9NZWRpYVN0cmVh
bUF1ZGlvU291cmNlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJh
dWRpby9NZWRpYVN0cmVhbUF1ZGlvU291cmNlLmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmF1ZGlvL01lZGlhU3RyZWFtQXVkaW9Tb3VyY2UuaAkod29ya2luZyBj
b3B5KQpAQCAtMCwwICsxLDc3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICog
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIE1lZGlhU3RyZWFtQXVkaW9T
b3VyY2VfaAorI2RlZmluZSBNZWRpYVN0cmVhbUF1ZGlvU291cmNlX2gKKworI2lmIEVOQUJMRShN
RURJQV9TVFJFQU0pCisKKyNpbmNsdWRlICJBdWRpb0Rlc3RpbmF0aW9uQ29uc3VtZXIuaCIKKyNp
bmNsdWRlICJNZWRpYVN0cmVhbVNvdXJjZS5oIgorI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+
CisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5o
PgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIEF1ZGlvQnVzOworY2xhc3MgTWVkaWFT
dHJlYW1Tb3VyY2VDYXBhYmlsaXRpZXM7CisKK2NsYXNzIE1lZGlhU3RyZWFtQXVkaW9Tb3VyY2Ug
OiBwdWJsaWMgTWVkaWFTdHJlYW1Tb3VyY2UgeworcHVibGljOgorICAgIHN0YXRpYyBQYXNzUmVm
UHRyPE1lZGlhU3RyZWFtQXVkaW9Tb3VyY2U+IGNyZWF0ZSgpOworCisgICAgfk1lZGlhU3RyZWFt
QXVkaW9Tb3VyY2UoKSB7IH0KKworICAgIHZpcnR1YWwgYm9vbCBpc0F1ZGlvU3RyZWFtU291cmNl
KCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQorICAgIHZpcnR1YWwgYm9vbCB1c2VJREZvclRyYWNr
SUQoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9CisKKyAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8TWVk
aWFTdHJlYW1Tb3VyY2VDYXBhYmlsaXRpZXM+IGNhcGFiaWxpdGllcygpIGNvbnN0OworICAgIHZp
cnR1YWwgY29uc3QgTWVkaWFTdHJlYW1Tb3VyY2VTdGF0ZXMmIHN0YXRlcygpOworICAgIAorICAg
IGNvbnN0IFN0cmluZyYgZGV2aWNlSWQoKSBjb25zdCB7IHJldHVybiBtX2RldmljZUlkOyB9Cisg
ICAgdm9pZCBzZXREZXZpY2VJZChjb25zdCBTdHJpbmcmIGRldmljZUlkKSB7IG1fZGV2aWNlSWQg
PSBkZXZpY2VJZDsgfQorCisgICAgdm9pZCBzZXRBdWRpb0Zvcm1hdChzaXplX3QgbnVtYmVyT2ZD
aGFubmVscywgZmxvYXQgc2FtcGxlUmF0ZSk7CisgICAgdm9pZCBjb25zdW1lQXVkaW8oQXVkaW9C
dXMqLCBzaXplX3QgbnVtYmVyT2ZGcmFtZXMpOworCisgICAgdm9pZCBhZGRBdWRpb0NvbnN1bWVy
KFBhc3NSZWZQdHI8QXVkaW9EZXN0aW5hdGlvbkNvbnN1bWVyPik7CisgICAgYm9vbCByZW1vdmVB
dWRpb0NvbnN1bWVyKEF1ZGlvRGVzdGluYXRpb25Db25zdW1lciopOworICAgIGNvbnN0IFZlY3Rv
cjxSZWZQdHI8QXVkaW9EZXN0aW5hdGlvbkNvbnN1bWVyPj4mIGF1ZGlvQ29uc3VtZXJzKCkgY29u
c3QgeyByZXR1cm4gbV9hdWRpb0NvbnN1bWVyczsgfQorCitwcml2YXRlOgorICAgIE1lZGlhU3Ry
ZWFtQXVkaW9Tb3VyY2UoKTsKKworICAgIFN0cmluZyBtX2RldmljZUlkOworICAgIE11dGV4IG1f
YXVkaW9Db25zdW1lcnNMb2NrOworICAgIFZlY3RvcjxSZWZQdHI8QXVkaW9EZXN0aW5hdGlvbkNv
bnN1bWVyPj4gbV9hdWRpb0NvbnN1bWVyczsKKyAgICBNZWRpYVN0cmVhbVNvdXJjZVN0YXRlcyBt
X2N1cnJlbnRTdGF0ZXM7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAv
LyBFTkFCTEUoTUVESUFfU1RSRUFNKQorCisjZW5kaWYgLy8gTWVkaWFTdHJlYW1BdWRpb1NvdXJj
ZV9oCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCShyZXZpc2lvbiAxNTcwMTYpCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTg0LDYgKzg0LDMwIEBA
CiAJCTA3MDMzNEQ3MTQ1OUZGRDUwMDhEOEQ0NSAvKiBUcmFja0Jhc2UuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3MDMzNEQ2MTQ1OUZGRDUwMDhEOEQ0
NSAvKiBUcmFja0Jhc2UuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwogCQkwNzAzMzREOTE0NUEwMDZGMDA4RDhENDUgLyogVHJhY2tCYXNlLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3MDMzNEQ4MTQ1QTAw
NkYwMDhEOEQ0NSAvKiBUcmFja0Jhc2UuY3BwICovOyB9OwogCQkwNzAzMzRFOTE0NUExRjM2MDA4
RDhENDUgLyogSlNUcmFja0N1c3RvbS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAwNzAzMzRFODE0NUExRjM1MDA4RDhENDUgLyogSlNUcmFja0N1c3Rv
bS5jcHAgKi87IH07CisJCTA3MDU4NEZEMTdGOUQ2REYwMDVGMkJDQiAvKiBNZWRpYVN0cmVhbVNv
dXJjZUNhcGFiaWxpdGllcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMDcwNTg0RkIxN0Y5RDZERjAwNUYyQkNCIC8qIE1lZGlhU3RyZWFtU291cmNlQ2Fw
YWJpbGl0aWVzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKKwkJMDcwNTg0RkYxN0Y5RjA1RTAwNUYyQkNCIC8qIENhcGFiaWxpdHlSYW5nZS5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwNzA1ODRGRTE3RjlG
MDVFMDA1RjJCQ0IgLyogQ2FwYWJpbGl0eVJhbmdlLmNwcCAqLzsgfTsKKwkJMDcwNTg1MDIxN0ZB
MTBEMDAwNUYyQkNCIC8qIEpTQWxsVmlkZW9DYXBhYmlsaXRpZXMuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDcwNTg1MDAxN0ZBMTBEMDAwNUYyQkNC
IC8qIEpTQWxsVmlkZW9DYXBhYmlsaXRpZXMuY3BwICovOyB9OworCQkwNzA1ODUwMzE3RkExMEQw
MDA1RjJCQ0IgLyogSlNBbGxWaWRlb0NhcGFiaWxpdGllcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDcwNTg1MDExN0ZBMTBEMDAwNUYyQkNCIC8qIEpT
QWxsVmlkZW9DYXBhYmlsaXRpZXMuaCAqLzsgfTsKKwkJMDcwNTg1MDgxN0ZBNDY4OTAwNUYyQkNC
IC8qIEFsbEF1ZGlvQ2FwYWJpbGl0aWVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAwNzA1ODUwNTE3RkE0Njg5MDA1RjJCQ0IgLyogQWxsQXVkaW9DYXBh
YmlsaXRpZXMuaCAqLzsgfTsKKwkJMDcwNTg1MEIxN0ZBNDgyNzAwNUYyQkNCIC8qIE1lZGlhU3Ry
ZWFtQ2FwYWJpbGl0aWVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAwNzA1ODUwQTE3RkE0ODI3MDA1RjJCQ0IgLyogTWVkaWFTdHJlYW1DYXBhYmlsaXRp
ZXMuaCAqLzsgfTsKKwkJMDcwNTg1MTIxN0ZBNzEwNzAwNUYyQkNCIC8qIEpTTWVkaWFTdHJlYW1D
YXBhYmlsaXRpZXMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMDcwNTg1MTAxN0ZBNzEwNzAwNUYyQkNCIC8qIEpTTWVkaWFTdHJlYW1DYXBhYmlsaXRp
ZXMuY3BwICovOyB9OworCQkwNzA1ODUxMzE3RkE3MTA3MDA1RjJCQ0IgLyogSlNNZWRpYVN0cmVh
bUNhcGFiaWxpdGllcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMDcwNTg1MTExN0ZBNzEwNzAwNUYyQkNCIC8qIEpTTWVkaWFTdHJlYW1DYXBhYmlsaXRp
ZXMuaCAqLzsgfTsKKwkJMDcwNTg1MTUxN0ZCMEVFQTAwNUYyQkNCIC8qIE1lZGlhU3RyZWFtQ2Fw
YWJpbGl0aWVzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDA3MDU4NTE0MTdGQjBFMkMwMDVGMkJDQiAvKiBNZWRpYVN0cmVhbUNhcGFiaWxpdGllcy5j
cHAgKi87IH07CisJCTA3MDU4NTE3MTdGQjQwRTkwMDVGMkJDQiAvKiBKU01lZGlhU3RyZWFtQ2Fw
YWJpbGl0aWVzQ3VzdG9tLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDA3MDU4NTE2MTdGQjQwRTkwMDVGMkJDQiAvKiBKU01lZGlhU3RyZWFtQ2FwYWJp
bGl0aWVzQ3VzdG9tLmNwcCAqLzsgfTsKKwkJMDcwNTg1MUExN0ZCNDRCNDAwNUYyQkNCIC8qIEpT
QWxsQXVkaW9DYXBhYmlsaXRpZXMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMDcwNTg1MTgxN0ZCNDRCNDAwNUYyQkNCIC8qIEpTQWxsQXVkaW9DYXBh
YmlsaXRpZXMuY3BwICovOyB9OworCQkwNzA1ODUxQjE3RkI0NEI0MDA1RjJCQ0IgLyogSlNBbGxB
dWRpb0NhcGFiaWxpdGllcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMDcwNTg1MTkxN0ZCNDRCNDAwNUYyQkNCIC8qIEpTQWxsQXVkaW9DYXBhYmlsaXRp
ZXMuaCAqLzsgfTsKKwkJMDcwNTg1MjExN0ZEQzE0MDAwNUYyQkNCIC8qIE1lZGlhVHJhY2tDb25z
dHJhaW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAw
NzA1ODUxRDE3RkRDMTQwMDA1RjJCQ0IgLyogTWVkaWFUcmFja0NvbnN0cmFpbnQuaCAqLzsgfTsK
KwkJMDcwNTg1MjMxN0ZEQzE0MDAwNUYyQkNCIC8qIE1lZGlhVHJhY2tDb25zdHJhaW50cy5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwNzA1ODUxRjE3
RkRDMTQwMDA1RjJCQ0IgLyogTWVkaWFUcmFja0NvbnN0cmFpbnRzLmNwcCAqLzsgfTsKKwkJMDcw
NTg1MjQxN0ZEQzE0MDAwNUYyQkNCIC8qIE1lZGlhVHJhY2tDb25zdHJhaW50cy5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDcwNTg1MjAxN0ZEQzE0MDAw
NUYyQkNCIC8qIE1lZGlhVHJhY2tDb25zdHJhaW50cy5oICovOyB9OworCQkwNzA1ODUyOTE3RkRF
MDJDMDA1RjJCQ0IgLyogTWVkaWFUcmFja0NvbnN0cmFpbnRTZXQuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3MDU4NTI2MTdGREUwMkIwMDVGMkJDQiAv
KiBNZWRpYVRyYWNrQ29uc3RyYWludFNldC5oICovOyB9OworCQkwNzA1ODUzMTE3RkRFNkQ5MDA1
RjJCQ0IgLyogSlNNZWRpYVRyYWNrQ29uc3RyYWludC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwNzA1ODUyQjE3RkRFNkQ5MDA1RjJCQ0IgLyogSlNN
ZWRpYVRyYWNrQ29uc3RyYWludC5jcHAgKi87IH07CisJCTA3MDU4NTMyMTdGREU2RDkwMDVGMkJD
QiAvKiBKU01lZGlhVHJhY2tDb25zdHJhaW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAwNzA1ODUyQzE3RkRFNkQ5MDA1RjJCQ0IgLyogSlNNZWRpYVRy
YWNrQ29uc3RyYWludC5oICovOyB9OworCQkwNzA1ODUzMzE3RkRFNkQ5MDA1RjJCQ0IgLyogSlNN
ZWRpYVRyYWNrQ29uc3RyYWludHMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMDcwNTg1MkQxN0ZERTZEOTAwNUYyQkNCIC8qIEpTTWVkaWFUcmFja0Nv
bnN0cmFpbnRzLmNwcCAqLzsgfTsKKwkJMDcwNTg1MzQxN0ZERTZEOTAwNUYyQkNCIC8qIEpTTWVk
aWFUcmFja0NvbnN0cmFpbnRzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAwNzA1ODUyRTE3RkRFNkQ5MDA1RjJCQ0IgLyogSlNNZWRpYVRyYWNrQ29uc3Ry
YWludHMuaCAqLzsgfTsKKwkJMDcwNTg1MzUxN0ZERTZEOTAwNUYyQkNCIC8qIEpTTWVkaWFUcmFj
a0NvbnN0cmFpbnRTZXQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMDcwNTg1MkYxN0ZERTZEOTAwNUYyQkNCIC8qIEpTTWVkaWFUcmFja0NvbnN0cmFp
bnRTZXQuY3BwICovOyB9OworCQkwNzA1ODUzNjE3RkRFNkQ5MDA1RjJCQ0IgLyogSlNNZWRpYVRy
YWNrQ29uc3RyYWludFNldC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMDcwNTg1MzAxN0ZERTZEOTAwNUYyQkNCIC8qIEpTTWVkaWFUcmFja0NvbnN0cmFp
bnRTZXQuaCAqLzsgfTsKKwkJMDcwNTg1MzgxN0ZFMDQ0RjAwNUYyQkNCIC8qIE1lZGlhVHJhY2tD
b25zdHJhaW50U2V0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDA3MDU4NTM3MTdGRTA0NEYwMDVGMkJDQiAvKiBNZWRpYVRyYWNrQ29uc3RyYWludFNl
dC5jcHAgKi87IH07CisJCTA3MDU4NTNBMTdGRTA3NzAwMDVGMkJDQiAvKiBNZWRpYVRyYWNrQ29u
c3RyYWludC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAwNzA1ODUzOTE3RkUwNzcwMDA1RjJCQ0IgLyogTWVkaWFUcmFja0NvbnN0cmFpbnQuY3BwICov
OyB9OwogCQkwNzA3NTY4QjE0MjI2MkQ2MDA0MTQxNjEgLyogSFRNTFRyYWNrRWxlbWVudC5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwNzA3NTY4ODE0
MjI2MkQ2MDA0MTQxNjEgLyogSFRNTFRyYWNrRWxlbWVudC5jcHAgKi87IH07CiAJCTA3MDc1NjhD
MTQyMjYyRDYwMDQxNDE2MSAvKiBIVE1MVHJhY2tFbGVtZW50LmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwNzA3NTY4OTE0MjI2MkQ2MDA0MTQxNjEgLyog
SFRNTFRyYWNrRWxlbWVudC5oICovOyB9OwogCQkwNzA3NTY5NDE0MjI2NjhEMDA0MTQxNjEgLyog
SlNUZXh0VHJhY2suY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMDcwNzU2OEUxNDIyNjY4QzAwNDE0MTYxIC8qIEpTVGV4dFRyYWNrLmNwcCAqLzsgfTsK
QEAgLTExOSw2ICsxNDMsOSBAQAogCQkwNzM1RUU2QTBGNDBDNUU0MDA0QTI2MDQgLyogTWVkaWFQ
bGF5ZXJQcm94eS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMDczNUVFNjkwRjQwQzVFNDAwNEEyNjA0IC8qIE1lZGlhUGxheWVyUHJveHkuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwNzM2N0RERjE3MkNB
NjdGMDBEODYxQjkgLyogSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUxlZ2FjeUFWRk9iakMuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3MzY3REREMTcyQ0E2
N0YwMEQ4NjFCOSAvKiBJbmJhbmRUZXh0VHJhY2tQcml2YXRlTGVnYWN5QVZGT2JqQy5oICovOyB9
OwogCQkwNzM2N0RFMDE3MkNBNjgyMDBEODYxQjkgLyogSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUxl
Z2FjeUFWRk9iakMubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAwNzM2N0RERTE3MkNBNjdGMDBEODYxQjkgLyogSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUxl
Z2FjeUFWRk9iakMubW0gKi87IH07CisJCTA3M0FCNEIzMTdGOEJBQ0EwMDZFMEQ2RiAvKiBBbGxW
aWRlb0NhcGFiaWxpdGllcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMDczQUI0QjAxN0Y4QkFDQTAwNkUwRDZGIC8qIEFsbFZpZGVvQ2FwYWJpbGl0aWVz
LmggKi87IH07CisJCTA3M0FCNEI3MTdGOTJFQ0YwMDZFMEQ2RiAvKiBKU0NhcGFiaWxpdHlSYW5n
ZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwNzNB
QjRCNTE3RjkyRUNGMDA2RTBENkYgLyogSlNDYXBhYmlsaXR5UmFuZ2UuY3BwICovOyB9OworCQkw
NzNBQjRCODE3RjkyRUNGMDA2RTBENkYgLyogSlNDYXBhYmlsaXR5UmFuZ2UuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3M0FCNEI2MTdGOTJFQ0YwMDZF
MEQ2RiAvKiBKU0NhcGFiaWxpdHlSYW5nZS5oICovOyB9OwogCQkwNzNCRTM0MDE3RDE3RTAxMDAy
QkQ0MzEgLyogSlNOYXZpZ2F0b3JNZWRpYVN0cmVhbS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwNzNCRTMzRTE3RDE3RTAxMDAyQkQ0MzEgLyogSlNO
YXZpZ2F0b3JNZWRpYVN0cmVhbS5jcHAgKi87IH07CiAJCTA3M0JFMzQxMTdEMTdFMDEwMDJCRDQz
MSAvKiBKU05hdmlnYXRvck1lZGlhU3RyZWFtLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAwNzNCRTMzRjE3RDE3RTAxMDAyQkQ0MzEgLyogSlNOYXZpZ2F0
b3JNZWRpYVN0cmVhbS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CiAJCTA3M0JFMzQ4MTdEMTdFN0EwMDJCRDQzMSAvKiBKU05hdmlnYXRvclVzZXJNZWRp
YUVycm9yLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDA3M0JFMzQyMTdEMTdFN0EwMDJCRDQzMSAvKiBKU05hdmlnYXRvclVzZXJNZWRpYUVycm9yLmNw
cCAqLzsgfTsKQEAgLTE0NSw2ICsxNzIsOCBAQAogCQkwNzY5NzA4NjE0NjNBRDg3MDBGNTAyQ0Yg
LyogVGV4dFRyYWNrTGlzdC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAwNzY5NzA4NDE0NjNBRDg3MDBGNTAyQ0YgLyogVGV4dFRyYWNrTGlzdC5jcHAg
Ki87IH07CiAJCTA3Njk3MDg3MTQ2M0FEODcwMEY1MDJDRiAvKiBUZXh0VHJhY2tMaXN0LmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwNzY5NzA4NTE0NjNB
RDg3MDBGNTAyQ0YgLyogVGV4dFRyYWNrTGlzdC5oICovOyB9OwogCQkwNzZGMEQwRTEyQjgxOTI3
MDBDMjZBQTQgLyogTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwNzZGMEQwQTEyQjgxOTI3MDBDMjZB
QTQgLyogTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uLmggKi87IH07CisJCTA3ODMyMjg0
MTgwMTNFRDgwMDk5OUUwQyAvKiBNZWRpYVN0cmVhbUF1ZGlvU291cmNlLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3ODMyMjgyMTgwMTNFRDcwMDk5
OUUwQyAvKiBNZWRpYVN0cmVhbUF1ZGlvU291cmNlLmNwcCAqLzsgfTsKKwkJMDc4MzIyODUxODAx
M0VEODAwOTk5RTBDIC8qIE1lZGlhU3RyZWFtQXVkaW9Tb3VyY2UuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3ODMyMjgzMTgwMTNFRDgwMDk5OUUwQyAv
KiBNZWRpYVN0cmVhbUF1ZGlvU291cmNlLmggKi87IH07CiAJCTA3ODQ2MzQyMTQ1QjE1MUEwMEE1
OERGMSAvKiBKU1RyYWNrRXZlbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMDc4NDYzNDAxNDVCMTUxQTAwQTU4REYxIC8qIEpTVHJhY2tFdmVudC5j
cHAgKi87IH07CiAJCTA3ODQ2MzQzMTQ1QjE1MUEwMEE1OERGMSAvKiBKU1RyYWNrRXZlbnQuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3ODQ2MzQxMTQ1
QjE1MUEwMEE1OERGMSAvKiBKU1RyYWNrRXZlbnQuaCAqLzsgfTsKIAkJMDc4NDYzODUxNDVCMUI4
RTAwQTU4REYxIC8qIEpTVHJhY2tDdXN0b20uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDA3ODQ2Mzg0MTQ1QjFCOEUwMEE1OERGMSAvKiBKU1RyYWNrQ3Vz
dG9tLmggKi87IH07CkBAIC0yNzYsNiArMzA1LDEyIEBACiAJCTA3QzU5QjYwMTdGNEIyMDgwMDBG
QkNCQiAvKiBKU1ZpZGVvU3RyZWFtVHJhY2suaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDA3QzU5QjVDMTdGNEIyMDgwMDBGQkNCQiAvKiBKU1ZpZGVvU3Ry
ZWFtVHJhY2suaCAqLzsgfTsKIAkJMDdDNTlCNjMxN0Y0RDFCRjAwMEZCQ0JCIC8qIE1vY2tNZWRp
YVN0cmVhbUNlbnRlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAwN0M1OUI2MTE3RjRDRjg3MDAwRkJDQkIgLyogTW9ja01lZGlhU3RyZWFtQ2VudGVy
LmNwcCAqLzsgfTsKIAkJMDdDNTlCNjQxN0Y0RDFDNDAwMEZCQ0JCIC8qIE1vY2tNZWRpYVN0cmVh
bUNlbnRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MDdDNTlCNjIxN0Y0Q0Y4NzAwMEZCQ0JCIC8qIE1vY2tNZWRpYVN0cmVhbUNlbnRlci5oICovOyB9
OworCQkwN0M1OUI2ODE3Rjc4NEJBMDAwRkJDQkIgLyogTWVkaWFTb3VyY2VTdGF0ZXMuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDdDNTlCNjUxN0Y3
ODRCQTAwMEZCQ0JCIC8qIE1lZGlhU291cmNlU3RhdGVzLmNwcCAqLzsgfTsKKwkJMDdDNTlCNjkx
N0Y3ODRCQTAwMEZCQ0JCIC8qIE1lZGlhU291cmNlU3RhdGVzLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwN0M1OUI2NjE3Rjc4NEJBMDAwRkJDQkIgLyog
TWVkaWFTb3VyY2VTdGF0ZXMuaCAqLzsgfTsKKwkJMDdDNTlCNkUxN0Y3OTRGNjAwMEZCQ0JCIC8q
IEpTTWVkaWFTb3VyY2VTdGF0ZXNDdXN0b20uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMDdDNTlCNkQxN0Y3OTRGNjAwMEZCQ0JCIC8qIEpTTWVkaWFT
b3VyY2VTdGF0ZXNDdXN0b20uY3BwICovOyB9OworCQkwN0M1OUI3MTE3Rjc5QzdDMDAwRkJDQkIg
LyogSlNNZWRpYVNvdXJjZVN0YXRlcy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAwN0M1OUI2RjE3Rjc5QzdDMDAwRkJDQkIgLyogSlNNZWRpYVNvdXJj
ZVN0YXRlcy5jcHAgKi87IH07CisJCTA3QzU5QjcyMTdGNzlDN0MwMDBGQkNCQiAvKiBKU01lZGlh
U291cmNlU3RhdGVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAwN0M1OUI3MDE3Rjc5QzdDMDAwRkJDQkIgLyogSlNNZWRpYVNvdXJjZVN0YXRlcy5oICov
OyB9OworCQkwN0M1OUI3NjE3RjdEMERCMDAwRkJDQkIgLyogQ2FwYWJpbGl0eVJhbmdlLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwN0M1OUI3NDE3RjdE
MDlEMDAwRkJDQkIgLyogQ2FwYWJpbGl0eVJhbmdlLmggKi87IH07CiAJCTA3Q0U3N0Q1MTY3MTJB
NkEwMEM1NUE0NyAvKiBJbmJhbmRUZXh0VHJhY2tQcml2YXRlQ2xpZW50LmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwN0NFNzdENDE2NzEyQTZBMDBDNTVB
NDcgLyogSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUNsaWVudC5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTA3REM1RkQ0MTdEM0VFRTkwMDk5Rjg5MCAv
KiBKU1JUQ1N0YXRzUmVzcG9uc2VDdXN0b20uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMDdEQzVGRDMxN0QzRUVFOTAwOTlGODkwIC8qIEpTUlRDU3Rh
dHNSZXNwb25zZUN1c3RvbS5jcHAgKi87IH07CiAJCTA3RTExNkIxMTQ4OUM5QTEwMEVDNUFDRSAv
KiBKU1RleHRUcmFja0N1c3RvbS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAwN0UxMTZCMDE0ODlDOUExMDBFQzVBQ0UgLyogSlNUZXh0VHJhY2tDdXN0
b20uY3BwICovOyB9OwpAQCAtNjQxNCw2ICs2NDQ5LDM1IEBACiAJCTA3MDMzNEQ2MTQ1OUZGRDUw
MDhEOEQ0NSAvKiBUcmFja0Jhc2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
VHJhY2tCYXNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA3MDMzNEQ4MTQ1QTAw
NkYwMDhEOEQ0NSAvKiBUcmFja0Jhc2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gVHJhY2tCYXNlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDcw
MzM0RTgxNDVBMUYzNTAwOEQ4RDQ1IC8qIEpTVHJhY2tDdXN0b20uY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNUcmFja0N1c3RvbS5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTA3MDU4NEZCMTdGOUQ2REYwMDVGMkJDQiAvKiBNZWRpYVN0cmVhbVNv
dXJjZUNhcGFiaWxpdGllcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNZWRp
YVN0cmVhbVNvdXJjZUNhcGFiaWxpdGllcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQkwNzA1ODRGRTE3RjlGMDVFMDA1RjJCQ0IgLyogQ2FwYWJpbGl0eVJhbmdlLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENhcGFiaWxpdHlSYW5nZS5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTA3MDU4NTAwMTdGQTEwRDAwMDVGMkJDQiAvKiBKU0Fs
bFZpZGVvQ2FwYWJpbGl0aWVzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IEpTQWxsVmlkZW9DYXBhYmlsaXRpZXMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQkwNzA1ODUwMTE3RkExMEQwMDA1RjJCQ0IgLyogSlNBbGxWaWRlb0NhcGFiaWxpdGllcy5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU0FsbFZpZGVvQ2FwYWJpbGl0aWVz
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTA3MDU4NTA1MTdGQTQ2ODkwMDVGMkJD
QiAvKiBBbGxBdWRpb0NhcGFiaWxpdGllcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBBbGxBdWRpb0NhcGFiaWxpdGllcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQkwNzA1ODUwNjE3RkE0Njg5MDA1RjJCQ0IgLyogQWxsQXVkaW9DYXBhYmlsaXRpZXMuaWRsICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gdGV4dDsgcGF0aCA9IEFsbEF1ZGlvQ2FwYWJpbGl0aWVzLmlkbDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMDcwNTg1MEExN0ZBNDgyNzAwNUYyQkNCIC8qIE1lZGlhU3Ry
ZWFtQ2FwYWJpbGl0aWVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1lZGlh
U3RyZWFtQ2FwYWJpbGl0aWVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTA3MDU4
NTBFMTdGQTZGQjEwMDVGMkJDQiAvKiBNZWRpYVN0cmVhbUNhcGFiaWxpdGllcy5pZGwgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSB0ZXh0OyBwYXRoID0gTWVkaWFTdHJlYW1DYXBhYmlsaXRpZXMuaWRsOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQkwNzA1ODUxMDE3RkE3MTA3MDA1RjJCQ0IgLyogSlNNZWRpYVN0
cmVhbUNhcGFiaWxpdGllcy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBKU01lZGlhU3RyZWFtQ2FwYWJpbGl0aWVzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJMDcwNTg1MTExN0ZBNzEwNzAwNUYyQkNCIC8qIEpTTWVkaWFTdHJlYW1DYXBhYmlsaXRp
ZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNNZWRpYVN0cmVhbUNhcGFi
aWxpdGllcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwNzA1ODUxNDE3RkIwRTJD
MDA1RjJCQ0IgLyogTWVkaWFTdHJlYW1DYXBhYmlsaXRpZXMuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gTWVkaWFTdHJlYW1DYXBhYmlsaXRpZXMuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQkwNzA1ODUxNjE3RkI0MEU5MDA1RjJCQ0IgLyogSlNNZWRp
YVN0cmVhbUNhcGFiaWxpdGllc0N1c3RvbS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBKU01lZGlhU3RyZWFtQ2FwYWJpbGl0aWVzQ3VzdG9tLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMDcwNTg1MTgxN0ZCNDRCNDAwNUYyQkNCIC8qIEpTQWxsQXVk
aW9DYXBhYmlsaXRpZXMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
SlNBbGxBdWRpb0NhcGFiaWxpdGllcy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTA3MDU4NTE5MTdGQjQ0QjQwMDVGMkJDQiAvKiBKU0FsbEF1ZGlvQ2FwYWJpbGl0aWVzLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTQWxsQXVkaW9DYXBhYmlsaXRpZXMuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMDcwNTg1MUMxN0ZEQjIzQzAwNUYyQkNCIC8q
IE1lZGlhVHJhY2tDb25zdHJhaW50cy5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gTWVkaWFUcmFja0NvbnN0cmFpbnRzLmlk
bDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMDcwNTg1MUQxN0ZEQzE0MDAwNUYyQkNC
IC8qIE1lZGlhVHJhY2tDb25zdHJhaW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IE1lZGlhVHJhY2tDb25zdHJhaW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTA3MDU4NTFFMTdGREMxNDAwMDVGMkJDQiAvKiBNZWRpYVRyYWNrQ29uc3RyYWludC5pZGwgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSB0ZXh0OyBwYXRoID0gTWVkaWFUcmFja0NvbnN0cmFpbnQuaWRsOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQkwNzA1ODUxRjE3RkRDMTQwMDA1RjJCQ0IgLyogTWVkaWFUcmFj
a0NvbnN0cmFpbnRzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE1l
ZGlhVHJhY2tDb25zdHJhaW50cy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTA3
MDU4NTIwMTdGREMxNDAwMDVGMkJDQiAvKiBNZWRpYVRyYWNrQ29uc3RyYWludHMuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTWVkaWFUcmFja0NvbnN0cmFpbnRzLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTA3MDU4NTI2MTdGREUwMkIwMDVGMkJDQiAvKiBNZWRp
YVRyYWNrQ29uc3RyYWludFNldC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBN
ZWRpYVRyYWNrQ29uc3RyYWludFNldC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkw
NzA1ODUyNzE3RkRFMDJCMDA1RjJCQ0IgLyogTWVkaWFUcmFja0NvbnN0cmFpbnRTZXQuaWRsICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gdGV4dDsgcGF0aCA9IE1lZGlhVHJhY2tDb25zdHJhaW50U2V0LmlkbDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMDcwNTg1MkIxN0ZERTZEOTAwNUYyQkNCIC8qIEpTTWVk
aWFUcmFja0NvbnN0cmFpbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gSlNNZWRpYVRyYWNrQ29uc3RyYWludC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCTA3MDU4NTJDMTdGREU2RDkwMDVGMkJDQiAvKiBKU01lZGlhVHJhY2tDb25zdHJhaW50Lmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTTWVkaWFUcmFja0NvbnN0cmFpbnQu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMDcwNTg1MkQxN0ZERTZEOTAwNUYyQkNC
IC8qIEpTTWVkaWFUcmFja0NvbnN0cmFpbnRzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IEpTTWVkaWFUcmFja0NvbnN0cmFpbnRzLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJMDcwNTg1MkUxN0ZERTZEOTAwNUYyQkNCIC8qIEpTTWVkaWFUcmFja0Nv
bnN0cmFpbnRzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTTWVkaWFUcmFj
a0NvbnN0cmFpbnRzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTA3MDU4NTJGMTdG
REU2RDkwMDVGMkJDQiAvKiBKU01lZGlhVHJhY2tDb25zdHJhaW50U2V0LmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTTWVkaWFUcmFja0NvbnN0cmFpbnRTZXQuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwNzA1ODUzMDE3RkRFNkQ5MDA1RjJCQ0Ig
LyogSlNNZWRpYVRyYWNrQ29uc3RyYWludFNldC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBKU01lZGlhVHJhY2tDb25zdHJhaW50U2V0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTA3MDU4NTM3MTdGRTA0NEYwMDVGMkJDQiAvKiBNZWRpYVRyYWNrQ29uc3RyYWlu
dFNldC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBNZWRpYVRyYWNr
Q29uc3RyYWludFNldC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTA3MDU4NTM5
MTdGRTA3NzAwMDVGMkJDQiAvKiBNZWRpYVRyYWNrQ29uc3RyYWludC5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBNZWRpYVRyYWNrQ29uc3RyYWludC5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA3MDc1Njg4MTQyMjYyRDYwMDQxNDE2MSAvKiBIVE1M
VHJhY2tFbGVtZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEhU
TUxUcmFja0VsZW1lbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwNzA3NTY4
OTE0MjI2MkQ2MDA0MTQxNjEgLyogSFRNTFRyYWNrRWxlbWVudC5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBIVE1MVHJhY2tFbGVtZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTA3MDc1NjhBMTQyMjYyRDYwMDQxNDE2MSAvKiBIVE1MVHJhY2tFbGVtZW50Lmlk
bCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBIVE1MVHJhY2tFbGVtZW50LmlkbDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTY1NDksNiArNjYxMyw5IEBACiAJCTA3MzVFRTY5MEY0MEM1
RTQwMDRBMjYwNCAvKiBNZWRpYVBsYXllclByb3h5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IE1lZGlhUGxheWVyUHJveHkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJMDczNjdEREQxNzJDQTY3RjAwRDg2MUI5IC8qIEluYmFuZFRleHRUcmFja1ByaXZhdGVMZWdh
Y3lBVkZPYmpDLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEluYmFuZFRleHRU
cmFja1ByaXZhdGVMZWdhY3lBVkZPYmpDLmg7IHBhdGggPSBvYmpjL0luYmFuZFRleHRUcmFja1By
aXZhdGVMZWdhY3lBVkZPYmpDLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA3MzY3
RERFMTcyQ0E2N0YwMEQ4NjFCOSAvKiBJbmJhbmRUZXh0VHJhY2tQcml2YXRlTGVnYWN5QVZGT2Jq
Qy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgbmFtZSA9IEluYmFuZFRleHRU
cmFja1ByaXZhdGVMZWdhY3lBVkZPYmpDLm1tOyBwYXRoID0gb2JqYy9JbmJhbmRUZXh0VHJhY2tQ
cml2YXRlTGVnYWN5QVZGT2JqQy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMDcz
QUI0QjAxN0Y4QkFDQTAwNkUwRDZGIC8qIEFsbFZpZGVvQ2FwYWJpbGl0aWVzLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFsbFZpZGVvQ2FwYWJpbGl0aWVzLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTA3M0FCNEI1MTdGOTJFQ0YwMDZFMEQ2RiAvKiBKU0NhcGFi
aWxpdHlSYW5nZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0Nh
cGFiaWxpdHlSYW5nZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTA3M0FCNEI2
MTdGOTJFQ0YwMDZFMEQ2RiAvKiBKU0NhcGFiaWxpdHlSYW5nZS5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBKU0NhcGFiaWxpdHlSYW5nZS5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQkwNzNCRTMzRTE3RDE3RTAxMDAyQkQ0MzEgLyogSlNOYXZpZ2F0b3JNZWRpYVN0
cmVhbS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU05hdmlnYXRv
ck1lZGlhU3RyZWFtLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDczQkUzM0Yx
N0QxN0UwMTAwMkJENDMxIC8qIEpTTmF2aWdhdG9yTWVkaWFTdHJlYW0uaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gSlNOYXZpZ2F0b3JNZWRpYVN0cmVhbS5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQkwNzNCRTM0MjE3RDE3RTdBMDAyQkQ0MzEgLyogSlNOYXZpZ2F0
b3JVc2VyTWVkaWFFcnJvci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBKU05hdmlnYXRvclVzZXJNZWRpYUVycm9yLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKQEAgLTY1NzUsNiArNjY0Miw4IEBACiAJCTA3Njk3MDg1MTQ2M0FEODcwMEY1MDJDRiAvKiBU
ZXh0VHJhY2tMaXN0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFRleHRUcmFj
a0xpc3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDc2RjBEMDkxMkI4MTkyNzAw
QzI2QUE0IC8qIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbi5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb24u
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwNzZGMEQwQTEyQjgxOTI3MDBDMjZB
QTQgLyogTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbi5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQkwNzgzMjI4MjE4MDEzRUQ3MDA5OTlFMEMgLyogTWVkaWFT
dHJlYW1BdWRpb1NvdXJjZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBNZWRpYVN0cmVhbUF1ZGlvU291cmNlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJMDc4MzIyODMxODAxM0VEODAwOTk5RTBDIC8qIE1lZGlhU3RyZWFtQXVkaW9Tb3VyY2UuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTWVkaWFTdHJlYW1BdWRpb1NvdXJjZS5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwNzg0NjM0MDE0NUIxNTFBMDBBNThERjEg
LyogSlNUcmFja0V2ZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IEpTVHJhY2tFdmVudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA3ODQ2MzQx
MTQ1QjE1MUEwMEE1OERGMSAvKiBKU1RyYWNrRXZlbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gSlNUcmFja0V2ZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTA3ODQ2Mzg0MTQ1QjFCOEUwMEE1OERGMSAvKiBKU1RyYWNrQ3VzdG9tLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTVHJhY2tDdXN0b20uaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKQEAgLTY2MzksNiArNjcwOCwxNSBAQAogCQkwN0M1OUI1QzE3RjRCMjA4MDAwRkJD
QkIgLyogSlNWaWRlb1N0cmVhbVRyYWNrLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IEpTVmlkZW9TdHJlYW1UcmFjay5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkw
N0M1OUI2MTE3RjRDRjg3MDAwRkJDQkIgLyogTW9ja01lZGlhU3RyZWFtQ2VudGVyLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IE1vY2tNZWRpYVN0cmVhbUNlbnRlci5j
cHA7IHBhdGggPSBtb2NrL01vY2tNZWRpYVN0cmVhbUNlbnRlci5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTA3QzU5QjYyMTdGNENGODcwMDBGQkNCQiAvKiBNb2NrTWVkaWFTdHJl
YW1DZW50ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gTW9ja01lZGlhU3Ry
ZWFtQ2VudGVyLmg7IHBhdGggPSBtb2NrL01vY2tNZWRpYVN0cmVhbUNlbnRlci5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQkwN0M1OUI2NTE3Rjc4NEJBMDAwRkJDQkIgLyogTWVkaWFT
b3VyY2VTdGF0ZXMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTWVk
aWFTb3VyY2VTdGF0ZXMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwN0M1OUI2
NjE3Rjc4NEJBMDAwRkJDQkIgLyogTWVkaWFTb3VyY2VTdGF0ZXMuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gTWVkaWFTb3VyY2VTdGF0ZXMuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJMDdDNTlCNjcxN0Y3ODRCQTAwMEZCQ0JCIC8qIE1lZGlhU291cmNlU3RhdGVz
LmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBNZWRpYVNvdXJjZVN0YXRlcy5pZGw7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTA3QzU5QjZEMTdGNzk0RjYwMDBGQkNCQiAvKiBKU01l
ZGlhU291cmNlU3RhdGVzQ3VzdG9tLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IEpTTWVkaWFTb3VyY2VTdGF0ZXNDdXN0b20uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQkwN0M1OUI2RjE3Rjc5QzdDMDAwRkJDQkIgLyogSlNNZWRpYVNvdXJjZVN0YXRl
cy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU01lZGlhU291cmNl
U3RhdGVzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMDdDNTlCNzAxN0Y3OUM3
QzAwMEZCQ0JCIC8qIEpTTWVkaWFTb3VyY2VTdGF0ZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gSlNNZWRpYVNvdXJjZVN0YXRlcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQkwN0M1OUI3MzE3RjdEMDlEMDAwRkJDQkIgLyogQWxsVmlkZW9DYXBhYmlsaXRpZXMu
aWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IEFsbFZpZGVvQ2FwYWJpbGl0aWVzLmlkbDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMDdDNTlCNzQxN0Y3RDA5RDAwMEZCQ0JCIC8qIENh
cGFiaWxpdHlSYW5nZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDYXBhYmls
aXR5UmFuZ2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMDdDNTlCNzUxN0Y3RDA5
RDAwMEZCQ0JCIC8qIENhcGFiaWxpdHlSYW5nZS5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0g
Q2FwYWJpbGl0eVJhbmdlLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDdDRTc3
RDQxNjcxMkE2QTAwQzU1QTQ3IC8qIEluYmFuZFRleHRUcmFja1ByaXZhdGVDbGllbnQuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUNsaWVu
dC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwN0RDNUZEMzE3RDNFRUU5MDA5OUY4
OTAgLyogSlNSVENTdGF0c1Jlc3BvbnNlQ3VzdG9tLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IEpTUlRDU3RhdHNSZXNwb25zZUN1c3RvbS5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTA3RTExNkIwMTQ4OUM5QTEwMEVDNUFDRSAvKiBKU1RleHRUcmFj
a0N1c3RvbS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU1RleHRU
cmFja0N1c3RvbS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xMzIwOSwxMiAr
MTMyODcsMzQgQEAKIAkJMDcyMjFCNDYxN0NFQzMyNzAwODQ4RTUxIC8qIG1lZGlhc3RyZWFtICov
ID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJCQkwNzA1ODUzOTE3
RkUwNzcwMDA1RjJCQ0IgLyogTWVkaWFUcmFja0NvbnN0cmFpbnQuY3BwICovLAorCQkJCTA3MDU4
NTM3MTdGRTA0NEYwMDVGMkJDQiAvKiBNZWRpYVRyYWNrQ29uc3RyYWludFNldC5jcHAgKi8sCisJ
CQkJMDcwNTg1MjYxN0ZERTAyQjAwNUYyQkNCIC8qIE1lZGlhVHJhY2tDb25zdHJhaW50U2V0Lmgg
Ki8sCisJCQkJMDcwNTg1MjcxN0ZERTAyQjAwNUYyQkNCIC8qIE1lZGlhVHJhY2tDb25zdHJhaW50
U2V0LmlkbCAqLywKKwkJCQkwNzA1ODUxRDE3RkRDMTQwMDA1RjJCQ0IgLyogTWVkaWFUcmFja0Nv
bnN0cmFpbnQuaCAqLywKKwkJCQkwNzA1ODUxRTE3RkRDMTQwMDA1RjJCQ0IgLyogTWVkaWFUcmFj
a0NvbnN0cmFpbnQuaWRsICovLAorCQkJCTA3MDU4NTFGMTdGREMxNDAwMDVGMkJDQiAvKiBNZWRp
YVRyYWNrQ29uc3RyYWludHMuY3BwICovLAorCQkJCTA3MDU4NTIwMTdGREMxNDAwMDVGMkJDQiAv
KiBNZWRpYVRyYWNrQ29uc3RyYWludHMuaCAqLywKKwkJCQkwNzA1ODUxQzE3RkRCMjNDMDA1RjJC
Q0IgLyogTWVkaWFUcmFja0NvbnN0cmFpbnRzLmlkbCAqLywKKwkJCQkwNzA1ODUwNTE3RkE0Njg5
MDA1RjJCQ0IgLyogQWxsQXVkaW9DYXBhYmlsaXRpZXMuaCAqLywKKwkJCQkwNzA1ODUwNjE3RkE0
Njg5MDA1RjJCQ0IgLyogQWxsQXVkaW9DYXBhYmlsaXRpZXMuaWRsICovLAorCQkJCTA3MDU4NEZF
MTdGOUYwNUUwMDVGMkJDQiAvKiBDYXBhYmlsaXR5UmFuZ2UuY3BwICovLAorCQkJCTA3M0FCNEIw
MTdGOEJBQ0EwMDZFMEQ2RiAvKiBBbGxWaWRlb0NhcGFiaWxpdGllcy5oICovLAorCQkJCTA3QzU5
QjczMTdGN0QwOUQwMDBGQkNCQiAvKiBBbGxWaWRlb0NhcGFiaWxpdGllcy5pZGwgKi8sCisJCQkJ
MDdDNTlCNzQxN0Y3RDA5RDAwMEZCQ0JCIC8qIENhcGFiaWxpdHlSYW5nZS5oICovLAorCQkJCTA3
QzU5Qjc1MTdGN0QwOUQwMDBGQkNCQiAvKiBDYXBhYmlsaXR5UmFuZ2UuaWRsICovLAorCQkJCTA3
QzU5QjY1MTdGNzg0QkEwMDBGQkNCQiAvKiBNZWRpYVNvdXJjZVN0YXRlcy5jcHAgKi8sCisJCQkJ
MDdDNTlCNjYxN0Y3ODRCQTAwMEZCQ0JCIC8qIE1lZGlhU291cmNlU3RhdGVzLmggKi8sCisJCQkJ
MDdDNTlCNjcxN0Y3ODRCQTAwMEZCQ0JCIC8qIE1lZGlhU291cmNlU3RhdGVzLmlkbCAqLywKIAkJ
CQkwN0M1OUI0RDE3RjRBQzE1MDAwRkJDQkIgLyogQXVkaW9TdHJlYW1UcmFjay5jcHAgKi8sCiAJ
CQkJMDdDNTlCNEUxN0Y0QUMxNTAwMEZCQ0JCIC8qIEF1ZGlvU3RyZWFtVHJhY2suaCAqLywKIAkJ
CQkwN0M1OUI0RjE3RjRBQzE1MDAwRkJDQkIgLyogQXVkaW9TdHJlYW1UcmFjay5pZGwgKi8sCiAJ
CQkJMDdDNTlCNTAxN0Y0QUMxNTAwMEZCQ0JCIC8qIFZpZGVvU3RyZWFtVHJhY2suY3BwICovLAog
CQkJCTA3QzU5QjUxMTdGNEFDMTUwMDBGQkNCQiAvKiBWaWRlb1N0cmVhbVRyYWNrLmggKi8sCiAJ
CQkJMDdDNTlCNTIxN0Y0QUMxNTAwMEZCQ0JCIC8qIFZpZGVvU3RyZWFtVHJhY2suaWRsICovLAor
CQkJCTA3MDU4NTE0MTdGQjBFMkMwMDVGMkJDQiAvKiBNZWRpYVN0cmVhbUNhcGFiaWxpdGllcy5j
cHAgKi8sCisJCQkJMDcwNTg1MEUxN0ZBNkZCMTAwNUYyQkNCIC8qIE1lZGlhU3RyZWFtQ2FwYWJp
bGl0aWVzLmlkbCAqLywKKwkJCQkwNzA1ODUwQTE3RkE0ODI3MDA1RjJCQ0IgLyogTWVkaWFTdHJl
YW1DYXBhYmlsaXRpZXMuaCAqLywKIAkJCQkwNzIyMUI0QTE3Q0VDMzI3MDA4NDhFNTEgLyogTWVk
aWFDb25zdHJhaW50c0ltcGwuY3BwICovLAogCQkJCTA3MjIxQjRCMTdDRUMzMjcwMDg0OEU1MSAv
KiBNZWRpYUNvbnN0cmFpbnRzSW1wbC5oICovLAogCQkJCTA3MjIxQjRDMTdDRUMzMjcwMDg0OEU1
MSAvKiBNZWRpYVN0cmVhbS5jcHAgKi8sCkBAIC0xMzMxMyw2ICsxMzQxMyw3IEBACiAJCQkJMDcy
MjFCOUQxN0NGMEFENDAwODQ4RTUxIC8qIE1lZGlhU3RyZWFtRGVzY3JpcHRvci5oICovLAogCQkJ
CTA3MjIxQjlFMTdDRjBBRDQwMDg0OEU1MSAvKiBNZWRpYVN0cmVhbVNvdXJjZS5jcHAgKi8sCiAJ
CQkJMDcyMjFCOUYxN0NGMEFENDAwODQ4RTUxIC8qIE1lZGlhU3RyZWFtU291cmNlLmggKi8sCisJ
CQkJMDcwNTg0RkIxN0Y5RDZERjAwNUYyQkNCIC8qIE1lZGlhU3RyZWFtU291cmNlQ2FwYWJpbGl0
aWVzLmggKi8sCiAJCQkJMDc2MzA2RTIxN0UyMkE0MzAwNUE3QzRFIC8qIE1lZGlhU3RyZWFtVHJh
Y2tTb3VyY2VzUmVxdWVzdENsaWVudC5oICovLAogCQkJCTA3MjIxQkExMTdDRjBBRDQwMDg0OEU1
MSAvKiBSVENDb25maWd1cmF0aW9uLmggKi8sCiAJCQkJMDcyMjFCQTIxN0NGMEFENDAwODQ4RTUx
IC8qIFJUQ0RhdGFDaGFubmVsSGFuZGxlci5oICovLApAQCAtMTMzNjAsNiArMTM0NjEsMTYgQEAK
IAkJMDdDRkQ5OTMxN0QwMTQwNTAwMUM0RkZDIC8qIE1lZGlhU3RyZWFtICovID0gewogCQkJaXNh
ID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJCQkwNzA1ODUyQjE3RkRFNkQ5MDA1RjJC
Q0IgLyogSlNNZWRpYVRyYWNrQ29uc3RyYWludC5jcHAgKi8sCisJCQkJMDcwNTg1MkMxN0ZERTZE
OTAwNUYyQkNCIC8qIEpTTWVkaWFUcmFja0NvbnN0cmFpbnQuaCAqLywKKwkJCQkwNzA1ODUyRDE3
RkRFNkQ5MDA1RjJCQ0IgLyogSlNNZWRpYVRyYWNrQ29uc3RyYWludHMuY3BwICovLAorCQkJCTA3
MDU4NTJFMTdGREU2RDkwMDVGMkJDQiAvKiBKU01lZGlhVHJhY2tDb25zdHJhaW50cy5oICovLAor
CQkJCTA3MDU4NTJGMTdGREU2RDkwMDVGMkJDQiAvKiBKU01lZGlhVHJhY2tDb25zdHJhaW50U2V0
LmNwcCAqLywKKwkJCQkwNzA1ODUzMDE3RkRFNkQ5MDA1RjJCQ0IgLyogSlNNZWRpYVRyYWNrQ29u
c3RyYWludFNldC5oICovLAorCQkJCTA3MDU4NTEwMTdGQTcxMDcwMDVGMkJDQiAvKiBKU01lZGlh
U3RyZWFtQ2FwYWJpbGl0aWVzLmNwcCAqLywKKwkJCQkwNzA1ODUxMTE3RkE3MTA3MDA1RjJCQ0Ig
LyogSlNNZWRpYVN0cmVhbUNhcGFiaWxpdGllcy5oICovLAorCQkJCTA3QzU5QjZGMTdGNzlDN0Mw
MDBGQkNCQiAvKiBKU01lZGlhU291cmNlU3RhdGVzLmNwcCAqLywKKwkJCQkwN0M1OUI3MDE3Rjc5
QzdDMDAwRkJDQkIgLyogSlNNZWRpYVNvdXJjZVN0YXRlcy5oICovLAogCQkJCTA3QzU5QjU5MTdG
NEIyMDgwMDBGQkNCQiAvKiBKU0F1ZGlvU3RyZWFtVHJhY2suY3BwICovLAogCQkJCTA3QzU5QjVB
MTdGNEIyMDgwMDBGQkNCQiAvKiBKU0F1ZGlvU3RyZWFtVHJhY2suaCAqLywKIAkJCQkwN0M1OUI1
QjE3RjRCMjA4MDAwRkJDQkIgLyogSlNWaWRlb1N0cmVhbVRyYWNrLmNwcCAqLywKQEAgLTE5MTc5
LDYgKzE5MjkwLDggQEAKIAkJQkM0RURFRjcwQzA4RjQxNDAwN0VERDQ5IC8qIEN1c3RvbSAqLyA9
IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCisJCQkJMDcwNTg1MTYxN0ZC
NDBFOTAwNUYyQkNCIC8qIEpTTWVkaWFTdHJlYW1DYXBhYmlsaXRpZXNDdXN0b20uY3BwICovLAor
CQkJCTA3QzU5QjZEMTdGNzk0RjYwMDBGQkNCQiAvKiBKU01lZGlhU291cmNlU3RhdGVzQ3VzdG9t
LmNwcCAqLywKIAkJCQlCQzJFRDZCQjBDNkJEMkYwMDA5MjBCRkYgLyogSlNBdHRyQ3VzdG9tLmNw
cCAqLywKIAkJCQlGREVBQUFFRjEyQjAyRUU0MDBEQ0YzM0IgLyogSlNBdWRpb0J1ZmZlclNvdXJj
ZU5vZGVDdXN0b20uY3BwICovLAogCQkJCUZERUFBQUYwMTJCMDJFRTQwMERDRjMzQiAvKiBKU0F1
ZGlvQ29udGV4dEN1c3RvbS5jcHAgKi8sCkBAIC0xOTc3NSw2ICsxOTg4OCwxMiBAQAogCQlDRDYx
RkU3QjE3OTRDQTAyMDA0MTAxRUIgLyogTWVkaWFTb3VyY2UgKi8gPSB7CiAJCQlpc2EgPSBQQlhH
cm91cDsKIAkJCWNoaWxkcmVuID0gKAorCQkJCTA3MDU4NTE4MTdGQjQ0QjQwMDVGMkJDQiAvKiBK
U0FsbEF1ZGlvQ2FwYWJpbGl0aWVzLmNwcCAqLywKKwkJCQkwNzA1ODUxOTE3RkI0NEI0MDA1RjJC
Q0IgLyogSlNBbGxBdWRpb0NhcGFiaWxpdGllcy5oICovLAorCQkJCTA3MDU4NTAwMTdGQTEwRDAw
MDVGMkJDQiAvKiBKU0FsbFZpZGVvQ2FwYWJpbGl0aWVzLmNwcCAqLywKKwkJCQkwNzA1ODUwMTE3
RkExMEQwMDA1RjJCQ0IgLyogSlNBbGxWaWRlb0NhcGFiaWxpdGllcy5oICovLAorCQkJCTA3M0FC
NEI1MTdGOTJFQ0YwMDZFMEQ2RiAvKiBKU0NhcGFiaWxpdHlSYW5nZS5jcHAgKi8sCisJCQkJMDcz
QUI0QjYxN0Y5MkVDRjAwNkUwRDZGIC8qIEpTQ2FwYWJpbGl0eVJhbmdlLmggKi8sCiAJCQkJQ0Q5
REUxNzIxN0FBQzc0QzAwRUEzODZEIC8qIEpTTWVkaWFTb3VyY2UuY3BwICovLAogCQkJCUNEOURF
MTczMTdBQUM3NEMwMEVBMzg2RCAvKiBKU01lZGlhU291cmNlLmggKi8sCiAJCQkJQ0Q5REUxNzYx
N0FBQzc1QjAwRUEzODZEIC8qIEpTU291cmNlQnVmZmVyLmNwcCAqLywKQEAgLTIxMDIyLDYgKzIx
MTQxLDggQEAKIAkJRkQzMTVGQTIxMkIwMjVCMTAwQzFBMzU5IC8qIHdlYmF1ZGlvICovID0gewog
CQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJCQkwNzgzMjI4MjE4MDEzRUQ3
MDA5OTlFMEMgLyogTWVkaWFTdHJlYW1BdWRpb1NvdXJjZS5jcHAgKi8sCisJCQkJMDc4MzIyODMx
ODAxM0VEODAwOTk5RTBDIC8qIE1lZGlhU3RyZWFtQXVkaW9Tb3VyY2UuaCAqLywKIAkJCQlGRDMx
NUZGMzEyQjAyNjc2MDBDMUEzNTkgLyogQW5hbHlzZXJOb2RlLmNwcCAqLywKIAkJCQlGRDMxNUZG
NDEyQjAyNjc2MDBDMUEzNTkgLyogQW5hbHlzZXJOb2RlLmggKi8sCiAJCQkJRkQzMTVGRjUxMkIw
MjY3NjAwQzFBMzU5IC8qIEFuYWx5c2VyTm9kZS5pZGwgKi8sCkBAIC0yMTQxOSw2ICsyMTU0MCw3
IEBACiAJCQkJRkQzMTYwQkYxMkIwMjcyQTAwQzFBMzU5IC8qIEF1ZGlvRmlsZVJlYWRlck1hYy5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJRkRFMkQ1NUIxNTlFNjZFQjAwRENDQ0Y4IC8qIEF1ZGlvSU9D
YWxsYmFjay5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRkQzMTYwMTAxMkIwMjY3NjAwQzFBMzU5IC8q
IEF1ZGlvTGlzdGVuZXIuaCBpbiBIZWFkZXJzICovLAorCQkJCTA3MDU4NTI0MTdGREMxNDAwMDVG
MkJDQiAvKiBNZWRpYVRyYWNrQ29uc3RyYWludHMuaCBpbiBIZWFkZXJzICovLAogCQkJCUZEMzE2
MDEzMTJCMDI2NzYwMEMxQTM1OSAvKiBBdWRpb05vZGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUZE
MzE2MDE2MTJCMDI2NzYwMEMxQTM1OSAvKiBBdWRpb05vZGVJbnB1dC5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJRkQzMTYwMTgxMkIwMjY3NjAwQzFBMzU5IC8qIEF1ZGlvTm9kZU91dHB1dC5oIGluIEhl
YWRlcnMgKi8sCkBAIC0yMTU4MSw2ICsyMTcwMyw3IEBACiAJCQkJQkMwQjM2QTUwQ0QzQzY3QzAw
QUM3RUI1IC8qIENvbnNvbGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTJERjJFOUQ1MTY2RTM5NzUw
MDM1QkVGMiAvKiBDb25zb2xlQVBJVHlwZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTQxRjA2MThF
MEY1RjA2OTgwMEEwN0VBQyAvKiBDb25zb2xlTWVzc2FnZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJ
MDczQUI0QjMxN0Y4QkFDQTAwNkUwRDZGIC8qIEFsbFZpZGVvQ2FwYWJpbGl0aWVzLmggaW4gSGVh
ZGVycyAqLywKIAkJCQlCQ0U1NjQ0RTEzN0EzNEQ2MDA3RDI5MzQgLyogQ29uc29sZVR5cGVzLmgg
aW4gSGVhZGVycyAqLywKIAkJCQlBODE4NzIxQzA5NzdEM0MwMDA1ODI2RDkgLyogQ29udGFpbmVy
Tm9kZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTFBMTQ3MDgxMTEwMkIxNTAwRUVDMEYzIC8qIENv
bnRhaW5lck5vZGVBbGdvcml0aG1zLmggaW4gSGVhZGVycyAqLywKQEAgLTIxNzM3LDYgKzIxODYw
LDcgQEAKIAkJCQlBNTczMkIwQjEzNkExNjFEMDA1QzhEN0MgLyogRGF0ZUNvbXBvbmVudHMuaCBp
biBIZWFkZXJzICovLAogCQkJCUY1NUIzREI2MTI1MUYxMkQwMDNFRjI2OSAvKiBEYXRlSW5wdXRU
eXBlLmggaW4gSGVhZGVycyAqLywKIAkJCQk0NTNFQjYzNzE1OUM1NzA0MDAwMDFCQjcgLyogRGF0
ZVRpbWVGb3JtYXQuaCBpbiBIZWFkZXJzICovLAorCQkJCTA3MDU4NTAzMTdGQTEwRDAwMDVGMkJD
QiAvKiBKU0FsbFZpZGVvQ2FwYWJpbGl0aWVzLmggaW4gSGVhZGVycyAqLywKIAkJCQlGNTVCM0RC
ODEyNTFGMTJEMDAzRUYyNjkgLyogRGF0ZVRpbWVJbnB1dFR5cGUuaCBpbiBIZWFkZXJzICovLAog
CQkJCUY1NUIzREJBMTI1MUYxMkQwMDNFRjI2OSAvKiBEYXRlVGltZUxvY2FsSW5wdXRUeXBlLmgg
aW4gSGVhZGVycyAqLywKIAkJCQk0NUZFQTVEMDE1NkRERThDMDA2NTQxMDEgLyogRGVjaW1hbC5o
IGluIEhlYWRlcnMgKi8sCkBAIC0yMTc1MCw2ICsyMTg3NCw3IEBACiAJCQkJRkQzMTYwMkUxMkIw
MjY3NjAwQzFBMzU5IC8qIERlbGF5Tm9kZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRkQzMTYwMzEx
MkIwMjY3NjAwQzFBMzU5IC8qIERlbGF5UHJvY2Vzc29yLmggaW4gSGVhZGVycyAqLywKIAkJCQkx
QzRDOEY2NjBBRDg2NTVEMDA5NDc1Q0UgLyogRGVsZXRlQnV0dG9uLmggaW4gSGVhZGVycyAqLywK
KwkJCQkwNzA1ODUzMjE3RkRFNkQ5MDA1RjJCQ0IgLyogSlNNZWRpYVRyYWNrQ29uc3RyYWludC5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJMUM0QzhGMDIwQUQ4NUQ4NzAwOTQ3NUNFIC8qIERlbGV0ZUJ1
dHRvbkNvbnRyb2xsZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTkzMzA5RERGMDk5RTY0OTIwMDU2
RTU4MSAvKiBEZWxldGVGcm9tVGV4dE5vZGVDb21tYW5kLmggaW4gSGVhZGVycyAqLywKIAkJCQkw
N0M1OUI2NDE3RjREMUM0MDAwRkJDQkIgLyogTW9ja01lZGlhU3RyZWFtQ2VudGVyLmggaW4gSGVh
ZGVycyAqLywKQEAgLTIxNzkxLDYgKzIxOTE2LDcgQEAKIAkJCQlDRTA1N0ZBNjEyMjA3MzExMDBB
NDc2RDUgLyogRG9jdW1lbnRNYXJrZXJDb250cm9sbGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQkx
NDk0N0ZGRTEyRjgwQ0QyMDBBMEY2MzEgLyogRG9jdW1lbnRPcmRlcmVkTWFwLmggaW4gSGVhZGVy
cyAqLywKIAkJCQlCQ0NGQkFFODBCNTE1MkVEMDAwMUYxRDcgLyogRG9jdW1lbnRQYXJzZXIuaCBp
biBIZWFkZXJzICovLAorCQkJCTA3MDU4NTI5MTdGREUwMkMwMDVGMkJDQiAvKiBNZWRpYVRyYWNr
Q29uc3RyYWludFNldC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNEE0RjQ4QUExNkIwREZDMDAwRURC
QjI5IC8qIERvY3VtZW50UnVsZVNldHMuaCBpbiBIZWFkZXJzICovLAogCQkJCUFENkU3MUFEMTY2
ODg5OUQwMDMyMEMxMyAvKiBEb2N1bWVudFNoYXJlZE9iamVjdFBvb2wuaCBpbiBIZWFkZXJzICov
LAogCQkJCUU0N0UyNzY1MTYwMzZFRDIwMEVFMkFGQiAvKiBEb2N1bWVudFN0eWxlU2hlZXRDb2xs
ZWN0aW9uLmggaW4gSGVhZGVycyAqLywKQEAgLTIxOTQ1LDYgKzIyMDcxLDcgQEAKIAkJCQk4NTk5
MkVCQTBBQTUwNjk1MDBBQzA3ODUgLyogRE9NSFRNTEhlYWRFbGVtZW50LmggaW4gSGVhZGVycyAq
LywKIAkJCQk4NUU3MTFBRDBBQzVENTM1MDA1MzI3MEYgLyogRE9NSFRNTEhlYWRFbGVtZW50SW50
ZXJuYWwuaCBpbiBIZWFkZXJzICovLAogCQkJCTg1MTgzQjQ0MEFBNjkyNjEwMEYxOUZBMyAvKiBE
T01IVE1MSGVhZGluZ0VsZW1lbnQuaCBpbiBIZWFkZXJzICovLAorCQkJCTA3MDU4NTM2MTdGREU2
RDkwMDVGMkJDQiAvKiBKU01lZGlhVHJhY2tDb25zdHJhaW50U2V0LmggaW4gSGVhZGVycyAqLywK
IAkJCQk4NUU3MTFBRTBBQzVENTM1MDA1MzI3MEYgLyogRE9NSFRNTEhlYWRpbmdFbGVtZW50SW50
ZXJuYWwuaCBpbiBIZWFkZXJzICovLAogCQkJCTg1RUNCRUYxMEFBNzYyNjkwMDU0NEYwQiAvKiBE
T01IVE1MSFJFbGVtZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQk4NUU3MTFBRjBBQzVENTM1MDA1
MzI3MEYgLyogRE9NSFRNTEhSRWxlbWVudEludGVybmFsLmggaW4gSGVhZGVycyAqLywKQEAgLTIy
MDU3LDYgKzIyMTg0LDcgQEAKIAkJCQk4NUNBOTZFQTBBOTYyNEU5MDA2OTBDQ0YgLyogRE9NTm90
YXRpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCTg1RTcxMUQ0MEFDNUQ1MzUwMDUzMjcwRiAvKiBE
T01Ob3RhdGlvbkludGVybmFsLmggaW4gSGVhZGVycyAqLywKIAkJCQk4NTZDOEFFNDBBOTEyNjQ5
MDA1QzY4N0IgLyogRE9NT2JqZWN0LmggaW4gSGVhZGVycyAqLywKKwkJCQkwNzA1ODUxMzE3RkE3
MTA3MDA1RjJCQ0IgLyogSlNNZWRpYVN0cmVhbUNhcGFiaWxpdGllcy5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJQkM1M0RBNjAxMTQzMTQxQTAwMEQ4MTdFIC8qIERPTU9iamVjdEhhc2hUYWJsZU1hcC5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJODVDN0Y1RDAwQUFGQjhEOTAwNDAxNEREIC8qIERPTU92ZXJm
bG93RXZlbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTg1OTg5RENGMEFDQzhCQkQwMEEwQkM1MSAv
KiBET01PdmVyZmxvd0V2ZW50SW50ZXJuYWwuaCBpbiBIZWFkZXJzICovLApAQCAtMjI1MDMsNiAr
MjI2MzEsNyBAQAogCQkJCUJDQ0Q3NERDMEE0QzhEMzUwMDVGREE2RCAvKiBIVE1MVmlld1NvdXJj
ZURvY3VtZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQk5NzdCMzg3QTEyMjg4M0U5MDBCODFGRjgg
LyogSFRNTFZpZXdTb3VyY2VQYXJzZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTUxNEM3NjcxMENF
OTIzQTEwMDdFRjNDRCAvKiBIVFRQSGVhZGVyTWFwLmggaW4gSGVhZGVycyAqLywKKwkJCQkwNzNB
QjRCODE3RjkyRUNGMDA2RTBENkYgLyogSlNDYXBhYmlsaXR5UmFuZ2UuaCBpbiBIZWFkZXJzICov
LAogCQkJCTUxNEM3NjczMENFOTIzQTEwMDdFRjNDRCAvKiBIVFRQUGFyc2Vycy5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJMzc1Q0QyMzIxMTlENDNDODAwQTJBODU5IC8qIEh5cGhlbmF0aW9uLmggaW4g
SGVhZGVycyAqLywKIAkJCQlCMjc1MzU2RTBCMDUzODE0MDAyQ0U2NEYgLyogSWNvbi5oIGluIEhl
YWRlcnMgKi8sCkBAIC0yMjYwOCw2ICsyMjczNyw3IEBACiAJCQkJN0EyNDU4N0MxMDIxRUFGNDAw
MEEwMEFBIC8qIEluc3BlY3RvckRPTUFnZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlGM0Q0QzQ3
OTEyRTA3NjYzMDAzREExNTAgLyogSW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudC5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJN0E3NEVDQkIxMDE4MzlBNjAwQkY5MzlFIC8qIEluc3BlY3RvckRPTVN0b3Jh
Z2VBZ2VudC5oIGluIEhlYWRlcnMgKi8sCisJCQkJMDcwNTg1MzQxN0ZERTZEOTAwNUYyQkNCIC8q
IEpTTWVkaWFUcmFja0NvbnN0cmFpbnRzLmggaW4gSGVhZGVycyAqLywKIAkJCQk1NzhEQTIwRTE1
MjBFQjhDMDA2MTQxQzEgLyogSW5zcGVjdG9yRnJvbnRlbmQuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTIyNzc3NzYwMTM0NURFQTkwMDhFQTQ1NSAvKiBJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwuaCBp
biBIZWFkZXJzICovLAogCQkJCUYzNDRDNzE0MTEyNUI4MkMwMEYyNkVFRSAvKiBJbnNwZWN0b3JG
cm9udGVuZENsaWVudC5oIGluIEhlYWRlcnMgKi8sCkBAIC0yMzA3Miw2ICsyMzIwMiw3IEBACiAJ
CQkJQjJGQTNEREIwQUI3NUE2RjAwMEU1QUM0IC8qIEpTU1ZHUGF0aFNlZ0xpc3QuaCBpbiBIZWFk
ZXJzICovLAogCQkJCUIyRkEzREREMEFCNzVBNkYwMDBFNUFDNCAvKiBKU1NWR1BhdGhTZWdNb3Zl
dG9BYnMuaCBpbiBIZWFkZXJzICovLAogCQkJCUIyRkEzRERGMEFCNzVBNkYwMDBFNUFDNCAvKiBK
U1NWR1BhdGhTZWdNb3ZldG9SZWwuaCBpbiBIZWFkZXJzICovLAorCQkJCTA3MDU4NTIxMTdGREMx
NDAwMDVGMkJDQiAvKiBNZWRpYVRyYWNrQ29uc3RyYWludC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
QjJGQTNERTEwQUI3NUE2RjAwMEU1QUM0IC8qIEpTU1ZHUGF0dGVybkVsZW1lbnQuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTg1NDJBNzk1MEFFNUM5NDEwMERGNThERiAvKiBKU1NWR1BvaW50LmggaW4g
SGVhZGVycyAqLywKIAkJCQlCMkZBM0RFMzBBQjc1QTZGMDAwRTVBQzQgLyogSlNTVkdQb2ludExp
c3QuaCBpbiBIZWFkZXJzICovLApAQCAtMjM1NTgsNiArMjM2ODksNyBAQAogCQkJCTQzOTA0NkUy
MTJEQTI1RTgwMEFGODBBMiAvKiBSZW5kZXJNYXRoTUxSb290LmggaW4gSGVhZGVycyAqLywKIAkJ
CQk0MzkwNDZFNDEyREEyNUU4MDBBRjgwQTIgLyogUmVuZGVyTWF0aE1MUm93LmggaW4gSGVhZGVy
cyAqLywKIAkJCQk0MzkwNDZFNjEyREEyNUU4MDBBRjgwQTIgLyogUmVuZGVyTWF0aE1MU3F1YXJl
Um9vdC5oIGluIEhlYWRlcnMgKi8sCisJCQkJMDc4MzIyODUxODAxM0VEODAwOTk5RTBDIC8qIE1l
ZGlhU3RyZWFtQXVkaW9Tb3VyY2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTQzOTA0NkU4MTJEQTI1
RTgwMEFGODBBMiAvKiBSZW5kZXJNYXRoTUxTY3JpcHRzLmggaW4gSGVhZGVycyAqLywKIAkJCQk0
MzkwNDZFQTEyREEyNUU4MDBBRjgwQTIgLyogUmVuZGVyTWF0aE1MVW5kZXJPdmVyLmggaW4gSGVh
ZGVycyAqLywKIAkJCQlFNEMyNzk1OTBDRjk3NDE5MDBFOTdCOTggLyogUmVuZGVyTWVkaWEuaCBp
biBIZWFkZXJzICovLApAQCAtMjM1NzgsNiArMjM3MTAsNyBAQAogCQkJCUE4NzFERkUzMEExNTM3
NkIwMEIxMkE2OCAvKiBSZW5kZXJSZXBsYWNlZC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkNBODQ2
RDcwREM2N0EzNTAwMjZDMzA5IC8qIFJlbmRlclJlcGxpY2EuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTE0NzlGQUVFMTA5QUUzNzUwMERFRDY1NSAvKiBSZW5kZXJSdWJ5LmggaW4gSGVhZGVycyAqLywK
KwkJCQkwNzA1ODUwODE3RkE0Njg5MDA1RjJCQ0IgLyogQWxsQXVkaW9DYXBhYmlsaXRpZXMuaCBp
biBIZWFkZXJzICovLAogCQkJCTE0NzlGQUYwMTA5QUUzNzUwMERFRDY1NSAvKiBSZW5kZXJSdWJ5
QmFzZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMTQ3OUZBRjIxMDlBRTM3NTAwREVENjU1IC8qIFJl
bmRlclJ1YnlSdW4uaCBpbiBIZWFkZXJzICovLAogCQkJCTE0NzlGQUY0MTA5QUUzNzUwMERFRDY1
NSAvKiBSZW5kZXJSdWJ5VGV4dC5oIGluIEhlYWRlcnMgKi8sCkBAIC0yMzY2MCw2ICsyMzc5Myw3
IEBACiAJCQkJOTczRTMyNTcxMDg4M0I3QzAwNUJDNDkzIC8qIFJlc291cmNlTG9hZE5vdGlmaWVy
LmggaW4gSGVhZGVycyAqLywKIAkJCQlFNDI5NUZBNDEyQjA2MTRFMDBEMUFDRTAgLyogUmVzb3Vy
Y2VMb2FkUHJpb3JpdHkuaCBpbiBIZWFkZXJzICovLAogCQkJCUQwQ0U1OEY5MTI1RTRDQzIwMEYz
RjE5OSAvKiBSZXNvdXJjZUxvYWRTY2hlZHVsZXIuaCBpbiBIZWFkZXJzICovLAorCQkJCTA3QzU5
Qjc2MTdGN0QwREIwMDBGQkNCQiAvKiBDYXBhYmlsaXR5UmFuZ2UuaCBpbiBIZWFkZXJzICovLAog
CQkJCThBODFCRjg1MTFEQ0ZEOTAwMERBMkI5OCAvKiBSZXNvdXJjZUxvYWRUaW1pbmcuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTdFRTY4NDZEMTJEMjZFMzgwMEU3OTQxNSAvKiBSZXNvdXJjZVJlcXVl
c3QuaCBpbiBIZWFkZXJzICovLAogCQkJCTUxNEM3NjdEMENFOTIzQTEwMDdFRjNDRCAvKiBSZXNv
dXJjZVJlcXVlc3RCYXNlLmggaW4gSGVhZGVycyAqLywKQEAgLTIzOTY5LDYgKzI0MTAzLDcgQEAK
IAkJCQkwNzhFMDkzODE3RDE2QjJDMDA0MjBBQTEgLyogTWVkaWFTdHJlYW1Tb3VyY2UuaCBpbiBI
ZWFkZXJzICovLAogCQkJCUIyMjI3OUIxMEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdEZXNjRWxlbWVu
dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjVCN0ExNzExN0MxMEFDMDAwRTRBQTBBIC8qIEVsZW1l
bnREYXRhLmggaW4gSGVhZGVycyAqLywKKwkJCQkwNzA1ODUwQjE3RkE0ODI3MDA1RjJCQ0IgLyog
TWVkaWFTdHJlYW1DYXBhYmlsaXRpZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCUIyMjI3OUI0MEQw
MEJGMjIwMDcxQjc4MiAvKiBTVkdEb2N1bWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjI4QzZB
MjgwRDAwQzQ0ODAwMzM0QUE0IC8qIFNWR0RvY3VtZW50RXh0ZW5zaW9ucy5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJQjIyMjc5QjcwRDAwQkYyMjAwNzFCNzgyIC8qIFNWR0VsZW1lbnQuaCBpbiBIZWFk
ZXJzICovLApAQCAtMjQwNDMsNiArMjQxNzgsNyBAQAogCQkJCTcxMzQ0OTZFMTQ2OTQxQjMwMDcy
MDMxMiAvKiBTVkdMZW5ndGhDb250ZXh0LmggaW4gSGVhZGVycyAqLywKIAkJCQlCMjIyN0EzNjBE
MDBCRjIyMDA3MUI3ODIgLyogU1ZHTGVuZ3RoTGlzdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjIy
MjdBMzkwRDAwQkYyMjAwNzFCNzgyIC8qIFNWR0xpbmVhckdyYWRpZW50RWxlbWVudC5oIGluIEhl
YWRlcnMgKi8sCisJCQkJMDdDNTlCNjkxN0Y3ODRCQTAwMEZCQ0JCIC8qIE1lZGlhU291cmNlU3Rh
dGVzLmggaW4gSGVhZGVycyAqLywKIAkJCQlCMjIyN0EzQzBEMDBCRjIyMDA3MUI3ODIgLyogU1ZH
TGluZUVsZW1lbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTA4MTA3NjQ0MTI4Mjg1NTYwMDdDNjNC
QSAvKiBTVkdMaXN0UHJvcGVydHkuaCBpbiBIZWFkZXJzICovLAogCQkJCTA4OEEwRTA5MTI2RUYx
REIwMDk3OEY3QSAvKiBTVkdMaXN0UHJvcGVydHlUZWFyT2ZmLmggaW4gSGVhZGVycyAqLywKQEAg
LTI0MjMyLDYgKzI0MzY4LDcgQEAKIAkJCQlFNDQ2MTNCMDBDRDYzMzEwMDBGQURBNzUgLyogVGlt
ZVJhbmdlcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDlFOTEyQUUwRUZBQzkwNjAwOUQwQ0FGIC8q
IFRpbWluZ0Z1bmN0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQkwNzAzMzRENzE0NTlGRkQ1MDA4
RDhENDUgLyogVHJhY2tCYXNlLmggaW4gSGVhZGVycyAqLywKKwkJCQkwNzA1ODRGRDE3RjlENkRG
MDA1RjJCQ0IgLyogTWVkaWFTdHJlYW1Tb3VyY2VDYXBhYmlsaXRpZXMuaCBpbiBIZWFkZXJzICov
LAogCQkJCUJFODhFMEMyMTcxNUNFMjYwMDY1OEQ5OCAvKiBUcmFja0xpc3RCYXNlLmggaW4gSGVh
ZGVycyAqLywKIAkJCQlDRDNBNDk1RjE3QTlEMDFCMDAyNzRFNDIgLyogTWVkaWFTb3VyY2UuaCBp
biBIZWFkZXJzICovLAogCQkJCTQ5RTkxMUM0MEVGODZENDcwMDlEMENBRiAvKiBUcmFuc2Zvcm1h
dGlvbk1hdHJpeC5oIGluIEhlYWRlcnMgKi8sCkBAIC0yNDI4NSw2ICsyNDQyMiw3IEBACiAJCQkJ
QkU4OEUwRTIxNzE1RDJBMjAwNjU4RDk4IC8qIFZpZGVvVHJhY2tMaXN0LmggaW4gSGVhZGVycyAq
LywKIAkJCQlFNEM5MUEwRTE4MDIzNDMxMDBBMTdGNkQgLyogVGV4dFBhaW50U3R5bGUuaCBpbiBI
ZWFkZXJzICovLAogCQkJCUJFRjI5RUVDMTcxNUREMDkwMEM0QjRDOSAvKiBWaWRlb1RyYWNrUHJp
dmF0ZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJMDcwNTg1MUIxN0ZCNDRCNDAwNUYyQkNCIC8qIEpT
QWxsQXVkaW9DYXBhYmlsaXRpZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCUNFRjQxOENGMTE3OTY3
OEMwMDlEMTEyQyAvKiBWaWV3cG9ydEFyZ3VtZW50cy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJM0ZG
RkY5QUUxNTlEOUIwNjAwMjBCQkQ1IC8qIFZpZXdwb3J0U3R5bGVSZXNvbHZlci5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJOTMzMDlFMjAwOTlFNjQ5MjAwNTZFNTgxIC8qIFZpc2libGVQb3NpdGlvbi5o
IGluIEhlYWRlcnMgKi8sCkBAIC0yNDQ3NCw2ICsyNDYxMiw3IEBACiAJCQkJODNDMUQ0MjgxNzhE
NUFCNDAwMTQxRTY4IC8qIFNWR1BhdGhTZWdDdXJ2ZXRvQ3ViaWNSZWwuaCBpbiBIZWFkZXJzICov
LAogCQkJCTgzQzFENDI5MTc4RDVBQjQwMDE0MUU2OCAvKiBTVkdQYXRoU2VnQ3VydmV0b0N1Ymlj
U21vb3RoQWJzLmggaW4gSGVhZGVycyAqLywKIAkJCQk4M0MxRDQyQTE3OEQ1QUI0MDAxNDFFNjgg
LyogU1ZHUGF0aFNlZ0N1cnZldG9DdWJpY1Ntb290aFJlbC5oIGluIEhlYWRlcnMgKi8sCisJCQkJ
MDdDNTlCNzIxN0Y3OUM3QzAwMEZCQ0JCIC8qIEpTTWVkaWFTb3VyY2VTdGF0ZXMuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTgzQzFENDJCMTc4RDVBQjQwMDE0MUU2OCAvKiBTVkdQYXRoU2VnQ3VydmV0
b1F1YWRyYXRpY0Ficy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODNDMUQ0MkMxNzhENUFCNTAwMTQx
RTY4IC8qIFNWR1BhdGhTZWdDdXJ2ZXRvUXVhZHJhdGljUmVsLmggaW4gSGVhZGVycyAqLywKIAkJ
CQk4M0MxRDQyRDE3OEQ1QUI1MDAxNDFFNjggLyogU1ZHUGF0aFNlZ0N1cnZldG9RdWFkcmF0aWNT
bW9vdGhBYnMuaCBpbiBIZWFkZXJzICovLApAQCAtMjQ5NTksNiArMjUwOTgsNyBAQAogCQkJCUZE
MzE2MDI0MTJCMDI2NzYwMEMxQTM1OSAvKiBCaXF1YWREU1BLZXJuZWwuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJRkRDNTRGMDQxMzk5QjBEQTAwOEQ5MTE3IC8qIEJpcXVhZEZpbHRlck5vZGUuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJRkQzMTYwMjYxMkIwMjY3NjAwQzFBMzU5IC8qIEJpcXVhZFBy
b2Nlc3Nvci5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkwNzA1ODRGRjE3RjlGMDVFMDA1RjJCQ0Ig
LyogQ2FwYWJpbGl0eVJhbmdlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE4OTk0MzI5MEI0MjMz
ODgwMEQ3QzgwMiAvKiBCaXRtYXBJbWFnZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkzNzdBM0E5
MDE1RUZDRTlCMDA1OUY1QzcgLyogQml0bWFwSW1hZ2VDRy5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQk5NzZENkM3ODEyMkI4QTNEMDAxRkQxRjcgLyogQmxvYi5jcHAgaW4gU291cmNlcyAqLywKQEAg
LTI1MjYyLDYgKzI1NDAyLDcgQEAKIAkJCQk4NUNBOTc1RDBBOTYyRTU0MDA2OTBDQ0YgLyogRE9N
RG9jdW1lbnRUeXBlLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJODUxOERDRUEwQTlDQzgwRDAwOTFC
N0E2IC8qIERPTURPTUltcGxlbWVudGF0aW9uLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJNTJDQ0E5
RTkxNUUzRjY0QzAwNTNDNzdGIC8qIERPTURPTU5hbWVkRmxvd0NvbGxlY3Rpb24ubW0gaW4gU291
cmNlcyAqLywKKwkJCQkwNzgzMjI4NDE4MDEzRUQ4MDA5OTlFMEMgLyogTWVkaWFTdHJlYW1BdWRp
b1NvdXJjZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkyRDlBMjQ3MzE1QjlDMkQxMDBEMzQ1Mjcg
LyogRE9NRE9NU2VjdXJpdHlQb2xpY3kubW0gaW4gU291cmNlcyAqLywKIAkJCQk3Njk0NTY1QzEy
MTREQjYzMDAwN0NCQUUgLyogRE9NRE9NVG9rZW5MaXN0Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJ
N0FBQkEyNTkxNEJDNjEzMzAwQUE5QTExIC8qIERPTUVkaXRvci5jcHAgaW4gU291cmNlcyAqLywK
QEAgLTI1MjgyLDYgKzI1NDIzLDcgQEAKIAkJCQk4NTlBOUM0ODBBQTVFM0JEMDBCNjk0QjIgLyog
RE9NSFRNTEJhc2VFbGVtZW50Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMDc4RTA5MDQxN0QxNENF
RTAwNDIwQUExIC8qIE5hdmlnYXRvck1lZGlhU3RyZWFtLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CTg1RUNCRUVFMEFBNzYyNjkwMDU0NEYwQiAvKiBET01IVE1MQmFzZUZvbnRFbGVtZW50Lm1tIGlu
IFNvdXJjZXMgKi8sCisJCQkJMDdDNTlCNjgxN0Y3ODRCQTAwMEZCQ0JCIC8qIE1lZGlhU291cmNl
U3RhdGVzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTg1OUE5QzRBMEFBNUUzQkQwMEI2OTRCMiAv
KiBET01IVE1MQm9keUVsZW1lbnQubW0gaW4gU291cmNlcyAqLywKIAkJCQk4NTE4M0I0MzBBQTY5
MjYxMDBGMTlGQTMgLyogRE9NSFRNTEJSRWxlbWVudC5tbSBpbiBTb3VyY2VzICovLAogCQkJCTg1
QkE0Q0RFMEFBNjg2MUIwMDg4MDUyRCAvKiBET01IVE1MQnV0dG9uRWxlbWVudC5tbSBpbiBTb3Vy
Y2VzICovLApAQCAtMjUyODksNiArMjU0MzEsNyBAQAogCQkJCTg1REYyRjhGMEFBM0M4ODEwMEFE
NjRDNSAvKiBET01IVE1MQ29sbGVjdGlvbi5tbSBpbiBTb3VyY2VzICovLAogCQkJCTA3OEUwOTAw
MTdEMTRDRUUwMDQyMEFBMSAvKiBNZWRpYVN0cmVhbUV2ZW50LmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCUY1QzA0MUU0MEZGQ0E5NkQwMDgzOUQ0QSAvKiBET01IVE1MRGF0YUxpc3RFbGVtZW50Lm1t
IGluIFNvdXJjZXMgKi8sCisJCQkJMDcwNTg1MjMxN0ZEQzE0MDAwNUYyQkNCIC8qIE1lZGlhVHJh
Y2tDb25zdHJhaW50cy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlEMzU5RDc5MjEyOUNBM0MwMDAw
NkU1RDIgLyogRE9NSFRNTERldGFpbHNFbGVtZW50Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJODVC
QTREMEMwQUE2ODg2ODAwODgwNTJEIC8qIERPTUhUTUxEaXJlY3RvcnlFbGVtZW50Lm1tIGluIFNv
dXJjZXMgKi8sCiAJCQkJODVCQTREMEUwQUE2ODg2ODAwODgwNTJEIC8qIERPTUhUTUxEaXZFbGVt
ZW50Lm1tIGluIFNvdXJjZXMgKi8sCkBAIC0yNTc0MCw2ICsyNTg4Myw3IEBACiAJCQkJQjI3NTM1
OEUwQjA1M0E2NjAwMkNFNjRGIC8qIEljb25NYWMubW0gaW4gU291cmNlcyAqLywKIAkJCQk1MUUx
RUNDMDBDOTFDOTA0MDBEQzI1NUIgLyogSWNvblJlY29yZC5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQk0NTA5OUM0MTEzNzBBNzgwMDA1OEQ1MTMgLyogSWNvblVSTC5jcHAgaW4gU291cmNlcyAqLywK
KwkJCQkwNzA1ODUxNTE3RkIwRUVBMDA1RjJCQ0IgLyogTWVkaWFTdHJlYW1DYXBhYmlsaXRpZXMu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQzU4NUE2NjIxMUQ0RkFDNTAwNEMzRTRCIC8qIElEQkJp
bmRpbmdVdGlsaXRpZXMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJOTcxMkE1QzUxNTAwNEVEQTAw
NDhBRjEwIC8qIElEQkRhdGFiYXNlQ2FsbGJhY2tzSW1wbC5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQk5NzEyQTVDOTE1MDA0RURBMDA0OEFGMTAgLyogSURCRGF0YWJhc2VFeGNlcHRpb24uY3BwIGlu
IFNvdXJjZXMgKi8sCkBAIC0yNTc0Nyw2ICsyNTg5MSw3IEBACiAJCQkJOTcxMkE1RUYxNTAwNEVE
QTAwNDhBRjEwIC8qIElEQlBlbmRpbmdUcmFuc2FjdGlvbk1vbml0b3IuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJOTcxMkE1RkUxNTAwNEVEQTAwNDhBRjEwIC8qIElEQlZlcnNpb25DaGFuZ2VFdmVu
dC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxQTcxRDU3QjBGMzM4MTkwMDBGOUNFNEUgLyogSWRl
bnRpZmllclJlcC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkwNzA1ODUzMTE3RkRFNkQ5MDA1RjJC
Q0IgLyogSlNNZWRpYVRyYWNrQ29uc3RyYWludC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1OTEz
QTI0MTEzRDQ5RUJBMDBGNUIwNUMgLyogSWRlbnRpZmllcnNGYWN0b3J5LmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCUMzQ0YxN0E0MTVCMDA2M0YwMDI3NkQzOSAvKiBJZFRhcmdldE9ic2VydmVyLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCUMzQ0YxN0E2MTVCMDA2M0YwMDI3NkQzOSAvKiBJZFRhcmdl
dE9ic2VydmVyUmVnaXN0cnkuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC0yNTkxNiw2ICsyNjA2MSw3
IEBACiAJCQkJNTFFQzkyNjUwQ0U5MERENDAwRjkwMzA4IC8qIEpTQ3VzdG9tU1FMU3RhdGVtZW50
RXJyb3JDYWxsYmFjay5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlFMTBCOTNDMzBCNzNDMjkxMDAz
RUQ4OTAgLyogSlNDdXN0b21YUGF0aE5TUmVzb2x2ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
MUFFODJGOEYwQ0FBRkE5RDAwMjIzN0FFIC8qIEpTRGF0YWJhc2UuY3BwIGluIFNvdXJjZXMgKi8s
CisJCQkJMDdDNTlCNkUxN0Y3OTRGNjAwMEZCQ0JCIC8qIEpTTWVkaWFTb3VyY2VTdGF0ZXNDdXN0
b20uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQjU5REQ2OUExMTkwMjlFNTAwN0U5Njg0IC8qIEpT
RGF0YWJhc2VDYWxsYmFjay5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCNThDRUI2QTExOTEzNjA3
MDAyQTY3OTAgLyogSlNEYXRhYmFzZVN5bmMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNDE2MkE0
NTcxMDExNDY0NzAwREZGM0VEIC8qIEpTRGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGUuY3BwIGlu
IFNvdXJjZXMgKi8sCkBAIC0yNjA0NCw2ICsyNjE5MCw3IEBACiAJCQkJMUFFMkFBMkUwQTFDREFC
NDAwQjQyQjI1IC8qIEpTSFRNTEhlYWRpbmdFbGVtZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CTFBRTJBQTMwMEExQ0RBQjQwMEI0MkIyNSAvKiBKU0hUTUxIUkVsZW1lbnQuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJMUE4NUIxOEYwQTFCMThBMjAwRDhDODdDIC8qIEpTSFRNTEh0bWxFbGVtZW50
LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTA3MDU4NTM4MTdGRTA0NEYwMDVGMkJDQiAvKiBNZWRp
YVRyYWNrQ29uc3RyYWludFNldC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCQzQ5MThDODBCRkVB
MDUwMDA5RDYzMTYgLyogSlNIVE1MSUZyYW1lRWxlbWVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQkxQUUyQUE5NzBBMUNERDJEMDBCNDJCMjUgLyogSlNIVE1MSW1hZ2VFbGVtZW50LmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCUE4MEU3RTk4MEExQTgzRTMwMDdGQjhDNSAvKiBKU0hUTUxJbnB1dEVs
ZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC0yNjE2MCw2ICsyNjMwNyw3IEBACiAJCQkJN0U0
NkY2RkExNjI3QTJDQTAwMDYyMjIzIC8qIEpTT0VTRWxlbWVudEluZGV4VWludC5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQk5MDAxNzg4MDEyRTAzNzA3MDA2NDg0NjIgLyogSlNPRVNTdGFuZGFyZERl
cml2YXRpdmVzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTZFQkYwRTc2MTJBOTg2ODgwMERCMTcw
OSAvKiBKU09FU1RleHR1cmVGbG9hdC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkwNzA1ODUzQTE3
RkUwNzcwMDA1RjJCQ0IgLyogTWVkaWFUcmFja0NvbnN0cmFpbnQuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJQTMxQzRFNTIxNkUwMkIwODAwMkY3OTU3IC8qIEpTT0VTVGV4dHVyZUhhbGZGbG9hdC5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQk3N0ExN0FBNjEyRjI4QjJBMDA0RTAyRjYgLyogSlNPRVNW
ZXJ0ZXhBcnJheU9iamVjdC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlGREY2QkFGODEzNEE0Qzk4
MDA4MjI5MjAgLyogSlNPZmZsaW5lQXVkaW9Db21wbGV0aW9uRXZlbnQuY3BwIGluIFNvdXJjZXMg
Ki8sCkBAIC0yNjUwMiw2ICsyNjY1MCw3IEBACiAJCQkJOTg1QkI5NkQxM0E5NDA1ODAwN0EwQjY5
IC8qIExpbmtSZWxBdHRyaWJ1dGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQkM3RkE2MjAwRDFG
MENCRDAwREIyMkE5IC8qIExpdmVOb2RlTGlzdC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwNzhF
MDkxMDE3RDE0Q0VFMDA0MjBBQTEgLyogUlRDU3RhdHNSZXNwb25zZS5jcHAgaW4gU291cmNlcyAq
LywKKwkJCQkwNzA1ODUwMjE3RkExMEQwMDA1RjJCQ0IgLyogSlNBbGxWaWRlb0NhcGFiaWxpdGll
cy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk5NzU5RTkzRTE0RUYxQ0Y4MDAyNkEyREQgLyogTG9h
ZGFibGVUZXh0VHJhY2suY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNjU2RDM3MzMwQURCQTVERTAw
QTQ1NTREIC8qIExvYWRlck5TVVJMRXh0cmFzLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJN0VFNjg0
NjgxMkQyNkUzODAwRTc5NDE1IC8qIExvYWRlclJ1bkxvb3BDRi5jcHAgaW4gU291cmNlcyAqLywK
QEAgLTI2NTE0LDYgKzI2NjYzLDcgQEAKIAkJCQlCQzI1QjUyQTEzMUM2RDM5MDAxODBFMTAgLyog
TG9jYWxpemVkU3RyaW5nc01hYy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCQ0UxQzQxQzBEOTgy
OTgxMDAzQjAyRjIgLyogTG9jYXRpb24uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMDc4RTA5MDgx
N0QxNENFRTAwNDIwQUExIC8qIFJUQ0RUTUZUb25lQ2hhbmdlRXZlbnQuY3BwIGluIFNvdXJjZXMg
Ki8sCisJCQkJMDcwNTg1MUExN0ZCNDRCNDAwNUYyQkNCIC8qIEpTQWxsQXVkaW9DYXBhYmlsaXRp
ZXMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTgyMzlFMDAwOUIzQ0Y4QTAwQjYwNjQxIC8qIExv
Z2dpbmcuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMTQwMjY0NUUwQUZEQzE5QjAwNTkxOUUyIC8q
IExvZ2dpbmdNYWMubW0gaW4gU291cmNlcyAqLywKIAkJCQkxQThGNkJDNTBEQjU1Q0RDMDAxREI3
OTQgLyogTWFuaWZlc3RQYXJzZXIuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC0yNjU4MCw2ICsyNjcz
MCw3IEBACiAJCQkJRDZFMjc2QUYxNDYzNzQ1NTAwMUQyODBBIC8qIE11dGF0aW9uT2JzZXJ2ZXJS
ZWdpc3RyYXRpb24uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQzZGMDhGQkMxNDMwRkU4RjAwNjg1
ODQ5IC8qIE11dGF0aW9uUmVjb3JkLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTUyQjZDOUM1MTVF
M0Y0REYwMDY5MEIwNSAvKiBOYW1lZEZsb3dDb2xsZWN0aW9uLmNwcCBpbiBTb3VyY2VzICovLAor
CQkJCTA3MDU4NTMzMTdGREU2RDkwMDVGMkJDQiAvKiBKU01lZGlhVHJhY2tDb25zdHJhaW50cy5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQlCQ0YzNEEzNzExQTIzMUNEMDBDNzE4MDQgLyogTmFtZWRO
b2RlTWFwLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE4MTg3MjI0MDk3N0QzQzAwMDU4MjZEOSAv
KiBOYW1lTm9kZUxpc3QuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRTEwQjlCNkQwQjc0NzU5OTAw
M0VEODkwIC8qIE5hdGl2ZVhQYXRoTlNSZXNvbHZlci5jcHAgaW4gU291cmNlcyAqLywKQEAgLTI2
ODQwLDYgKzI2OTkxLDcgQEAKIAkJCQk5MzRGNzEzRTBENUE2RjI4MDAwMThENjkgLyogUmVzb3Vy
Y2VFcnJvckJhc2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJN0VFNjg0NkIxMkQyNkUzODAwRTc5
NDE1IC8qIFJlc291cmNlRXJyb3JDRi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1MTRDNzY1MDBD
RTkyMzRFMDA3RUYzQ0QgLyogUmVzb3VyY2VFcnJvck1hYy5tbSBpbiBTb3VyY2VzICovLAorCQkJ
CTA3MDU4NTEyMTdGQTcxMDcwMDVGMkJDQiAvKiBKU01lZGlhU3RyZWFtQ2FwYWJpbGl0aWVzLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCTUxNEM3Njc4MENFOTIzQTEwMDdFRjNDRCAvKiBSZXNvdXJj
ZUhhbmRsZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk3RUU2ODQ2QzEyRDI2RTM4MDBFNzk0MTUg
LyogUmVzb3VyY2VIYW5kbGVDRk5ldC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlFMUJBMDAzMTE2
RkI5MkFDMDBCQTdBMzUgLyogUmVzb3VyY2VIYW5kbGVDbGllbnQuY3BwIGluIFNvdXJjZXMgKi8s
CkBAIC0yNzE0MSw2ICsyNzI5Myw3IEBACiAJCQkJQjIyMjc5QzQwRDAwQkYyMjAwNzFCNzgyIC8q
IFNWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQjIy
Mjc5QzcwRDAwQkYyMjAwNzFCNzgyIC8qIFNWR0ZFQmxlbmRFbGVtZW50LmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCUIyMjI3OUNBMEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdGRUNvbG9yTWF0cml4RWxl
bWVudC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkwNzA1ODUzNTE3RkRFNkQ5MDA1RjJCQ0IgLyog
SlNNZWRpYVRyYWNrQ29uc3RyYWludFNldC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCMjIyNzlD
RDBEMDBCRjIyMDA3MUI3ODIgLyogU1ZHRkVDb21wb25lbnRUcmFuc2ZlckVsZW1lbnQuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJQjIyMjc5RDAwRDAwQkYyMjAwNzFCNzgyIC8qIFNWR0ZFQ29tcG9z
aXRlRWxlbWVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxOTIxMzI3NDExQzBFNkJCMDA0NTYy
MzggLyogU1ZHRkVDb252b2x2ZU1hdHJpeEVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC0y
NzIwMyw2ICsyNzM1Niw3IEBACiAJCQkJQjIyMjdBM0IwRDAwQkYyMjAwNzFCNzgyIC8qIFNWR0xp
bmVFbGVtZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUIyMjI3QTQwMEQwMEJGMjIwMDcxQjc4
MiAvKiBTVkdMb2NhdGFibGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQjIyMjdBNDMwRDAwQkYy
MjAwNzFCNzgyIC8qIFNWR01hcmtlckVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMDcw
NTg1MTcxN0ZCNDBFOTAwNUYyQkNCIC8qIEpTTWVkaWFTdHJlYW1DYXBhYmlsaXRpZXNDdXN0b20u
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQjIyMjdBNDYwRDAwQkYyMjAwNzFCNzgyIC8qIFNWR01h
c2tFbGVtZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUIyMjI3QTRBMEQwMEJGMjIwMDcxQjc4
MiAvKiBTVkdNZXRhZGF0YUVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQjJBMUYyQjAw
Q0VGMEFCRjAwNDQyRjZBIC8qIFNWR01pc3NpbmdHbHlwaEVsZW1lbnQuY3BwIGluIFNvdXJjZXMg
Ki8sCkBAIC0yNzI2Niw2ICsyNzQyMCw3IEBACiAJCQkJQjIyMjdBRjIwRDAwQkYyMjAwNzFCNzgy
IC8qIFNWR1ZpZXdTcGVjLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTg0ODUyMjhBMTE5MDE3M0Mw
MDZFREM3RiAvKiBTVkdWS2VybkVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQjIyMjdB
RjUwRDAwQkYyMjAwNzFCNzgyIC8qIFNWR1pvb21BbmRQYW4uY3BwIGluIFNvdXJjZXMgKi8sCisJ
CQkJMDczQUI0QjcxN0Y5MkVDRjAwNkUwRDZGIC8qIEpTQ2FwYWJpbGl0eVJhbmdlLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCUIyRTRFQzk3MEQwMEMyMkIwMDQzMjY0MyAvKiBTVkdab29tRXZlbnQu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRTE4MDgxMTIxNkZDRjQyRjAwQjgwRDA3IC8qIFN5bmNo
cm9ub3VzTG9hZGVyQ2xpZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUUxODA4MTE2MTZGQ0Y5
Q0IwMEI4MEQwNyAvKiBTeW5jaHJvbm91c0xvYWRlckNsaWVudC5tbSBpbiBTb3VyY2VzICovLApA
QCAtMjc0NDYsNiArMjc2MDEsNyBAQAogCQkJCTk3QUFCRDFBMTRGQTA5RDUwMDc0NTdBRSAvKiBX
ZWJTb2NrZXQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJOTdBQUJEMUQxNEZBMDlENTAwNzQ1N0FF
IC8qIFdlYlNvY2tldENoYW5uZWwuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNEEzOEJGNTAxNEZF
MUMwOTAwNjEyNTEyIC8qIFdlYlNvY2tldERlZmxhdGVGcmFtZXIuY3BwIGluIFNvdXJjZXMgKi8s
CisJCQkJMDdDNTlCNzExN0Y3OUM3QzAwMEZCQ0JCIC8qIEpTTWVkaWFTb3VyY2VTdGF0ZXMuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJOTdBQUJEMjAxNEZBMDlENTAwNzQ1N0FFIC8qIFdlYlNvY2tl
dERlZmxhdGVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTk3QUFCRDIyMTRGQTA5RDUwMDc0NTdB
RSAvKiBXZWJTb2NrZXRFeHRlbnNpb25EaXNwYXRjaGVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CTRBNUEyQURCMTYxRTdFMDAwMDU4ODlERCAvKiBXZWJTb2NrZXRFeHRlbnNpb25QYXJzZXIuY3Bw
IGluIFNvdXJjZXMgKi8sCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU01lZGlh
U291cmNlU3RhdGVzQ3VzdG9tLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU01lZGlhU291cmNlU3RhdGVzQ3VzdG9tLmNwcAkocmV2aXNpb24gMCkKKysrIFNv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTWVkaWFTb3VyY2VTdGF0ZXNDdXN0b20uY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsODggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBB
TlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
ICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAor
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcu
aCIKKworI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCisKKyNpbmNsdWRlICJKU01lZGlhU291cmNl
U3RhdGVzLmgiCisKKyNpbmNsdWRlICJNZWRpYVNvdXJjZVN0YXRlcy5oIgorCit1c2luZyBuYW1l
c3BhY2UgSlNDOworCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK0pTVmFsdWUgSlNNZWRpYVNvdXJj
ZVN0YXRlczo6d2lkdGgoRXhlY1N0YXRlKikgY29uc3QKK3sKKyAgICBpZiAoIWltcGwoKS0+aGFz
VmlkZW9Tb3VyY2UoKSkKKyAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CisKKyAgICByZXR1
cm4ganNOdW1iZXIoaW1wbCgpLT53aWR0aCgpKTsKK30KKworSlNWYWx1ZSBKU01lZGlhU291cmNl
U3RhdGVzOjpoZWlnaHQoRXhlY1N0YXRlKikgY29uc3QKK3sKKyAgICBpZiAoIWltcGwoKS0+aGFz
VmlkZW9Tb3VyY2UoKSkKKyAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CisgICAgCisgICAg
cmV0dXJuIGpzTnVtYmVyKGltcGwoKS0+aGVpZ2h0KCkpOworfQorCitKU1ZhbHVlIEpTTWVkaWFT
b3VyY2VTdGF0ZXM6OmZyYW1lUmF0ZShFeGVjU3RhdGUqKSBjb25zdAoreworICAgIGlmICghaW1w
bCgpLT5oYXNWaWRlb1NvdXJjZSgpKQorICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKKyAg
ICAKKyAgICByZXR1cm4ganNOdW1iZXIoaW1wbCgpLT5mcmFtZVJhdGUoKSk7Cit9CisKK0pTVmFs
dWUgSlNNZWRpYVNvdXJjZVN0YXRlczo6YXNwZWN0UmF0aW8oRXhlY1N0YXRlKikgY29uc3QKK3sK
KyAgICBpZiAoIWltcGwoKS0+aGFzVmlkZW9Tb3VyY2UoKSkKKyAgICAgICAgcmV0dXJuIGpzVW5k
ZWZpbmVkKCk7CisgICAgCisgICAgcmV0dXJuIGpzTnVtYmVyKGltcGwoKS0+YXNwZWN0UmF0aW8o
KSk7Cit9CisKK0pTVmFsdWUgSlNNZWRpYVNvdXJjZVN0YXRlczo6ZmFjaW5nTW9kZShFeGVjU3Rh
dGUqIGV4ZWMpIGNvbnN0Cit7CisgICAgaWYgKCFpbXBsKCktPmhhc1ZpZGVvU291cmNlKCkpCisg
ICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOworCisgICAgcmV0dXJuIGpzU3RyaW5nV2l0aENh
Y2hlKGV4ZWMsIGltcGwoKS0+ZmFjaW5nTW9kZSgpKTsKK30KKworSlNWYWx1ZSBKU01lZGlhU291
cmNlU3RhdGVzOjp2b2x1bWUoRXhlY1N0YXRlKikgY29uc3QKK3sKKyAgICBpZiAoaW1wbCgpLT5o
YXNWaWRlb1NvdXJjZSgpKQorICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKKyAgICAKKyAg
ICByZXR1cm4ganNOdW1iZXIoaW1wbCgpLT52b2x1bWUoKSk7Cit9CisKK30gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKKworI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU01l
ZGlhU3RyZWFtQ2FwYWJpbGl0aWVzQ3VzdG9tLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU01lZGlhU3RyZWFtQ2FwYWJpbGl0aWVzQ3VzdG9tLmNwcAkocmV2
aXNpb24gMCkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTWVkaWFTdHJlYW1DYXBh
YmlsaXRpZXNDdXN0b20uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNDggQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMDkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIs
IElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwg
SU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAq
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAq
LworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiSlNNZWRpYVN0cmVhbUNhcGFiaWxp
dGllcy5oIgorCisjaW5jbHVkZSAiTWVkaWFTdHJlYW1DYXBhYmlsaXRpZXMuaCIKKyNpbmNsdWRl
ICJKU0FsbEF1ZGlvQ2FwYWJpbGl0aWVzLmgiCisjaW5jbHVkZSAiSlNBbGxWaWRlb0NhcGFiaWxp
dGllcy5oIgorCit1c2luZyBuYW1lc3BhY2UgSlNDOworCituYW1lc3BhY2UgV2ViQ29yZSB7CisK
K0pTQzo6SlNWYWx1ZSB0b0pTKEpTQzo6RXhlY1N0YXRlKiBleGVjLCBKU0RPTUdsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBNZWRpYVN0cmVhbUNhcGFiaWxpdGllcyogb2JqZWN0KQoreworICAg
IGlmICghb2JqZWN0KQorICAgICAgICByZXR1cm4ganNOdWxsKCk7CisKKyAgICBpZiAob2JqZWN0
LT5oYXNWaWRlb1NvdXJjZSgpKQorICAgICAgICByZXR1cm4gd3JhcDxKU0FsbFZpZGVvQ2FwYWJp
bGl0aWVzPihleGVjLCBnbG9iYWxPYmplY3QsIHN0YXRpY19jYXN0PEFsbFZpZGVvQ2FwYWJpbGl0
aWVzKj4ob2JqZWN0KSk7CisKKyAgICByZXR1cm4gd3JhcDxKU0FsbEF1ZGlvQ2FwYWJpbGl0aWVz
PihleGVjLCBnbG9iYWxPYmplY3QsIHN0YXRpY19jYXN0PEFsbEF1ZGlvQ2FwYWJpbGl0aWVzKj4o
b2JqZWN0KSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2RvbS9FdmVudE5hbWVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL0V2
ZW50TmFtZXMuaAkocmV2aXNpb24gMTU3MDE2KQorKysgU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50
TmFtZXMuaAkod29ya2luZyBjb3B5KQpAQCAtMjM4LDYgKzIzOCw3IEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKICAgICBtYWNybyhyZW1vdmVzdHJlYW0pIFwKICAgICBtYWNybyhzaWduYWxpbmdzdGF0
ZWNoYW5nZSkgXAogICAgIG1hY3JvKHJlbW92ZXRyYWNrKSBcCisgICAgbWFjcm8ob3ZlcmNvbnN0
cmFpbmVkKSBcCiAgICAgbWFjcm8obXV0ZSkgXAogICAgIG1hY3JvKHVubXV0ZSkgXAogICAgIG1h
Y3JvKHN0YXJ0ZWQpIFwKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFt
L01lZGlhU3RyZWFtQ2VudGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbUNlbnRlci5jcHAJKHJldmlzaW9uIDE1NzAxNikK
KysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtQ2VudGVy
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjcsMTEgKzY3LDYgQEAgTWVkaWFTdHJlYW1DZW50ZXI6
On5NZWRpYVN0cmVhbUNlbnRlcigpCiB7CiB9CiAKLXZvaWQgTWVkaWFTdHJlYW1DZW50ZXI6OmVu
ZExvY2FsTWVkaWFTdHJlYW0oTWVkaWFTdHJlYW1EZXNjcmlwdG9yKiBzdHJlYW1EZXNjcmlwdG9y
KQotewotICAgIHN0cmVhbURlc2NyaXB0b3ItPnNldEVuZGVkKCk7Ci19Ci0KIH0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEVOQUJMRShNRURJQV9TVFJFQU0pCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbUNlbnRlci5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlhU3RyZWFt
Q2VudGVyLmgJKHJldmlzaW9uIDE1NzAxNikKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21l
ZGlhc3RyZWFtL01lZGlhU3RyZWFtQ2VudGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTM0LDYgKzM0
LDcgQEAKIAogI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCiAKKyNpbmNsdWRlICJNZWRpYVN0cmVh
bVNvdXJjZS5oIgogI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL3Rl
eHQvV1RGU3RyaW5nLmg+CiAKQEAgLTQzLDkgKzQ0LDExIEBAIGNsYXNzIE1lZGlhQ29uc3RyYWlu
dHM7CiBjbGFzcyBNZWRpYVN0cmVhbUNyZWF0aW9uQ2xpZW50OwogY2xhc3MgTWVkaWFTdHJlYW1D
cmVhdGlvbkNsaWVudDsKIGNsYXNzIE1lZGlhU3RyZWFtRGVzY3JpcHRvcjsKLWNsYXNzIE1lZGlh
U3RyZWFtU291cmNlOworY2xhc3MgTWVkaWFTdHJlYW1Tb3VyY2VDYXBhYmlsaXRpZXM7CiBjbGFz
cyBNZWRpYVN0cmVhbVRyYWNrU291cmNlc1JlcXVlc3RDbGllbnQ7CiAKK3N0cnVjdCBNZWRpYVN0
cmVhbVNvdXJjZVN0YXRlczsKKwogY2xhc3MgTWVkaWFTdHJlYW1DZW50ZXIgewogcHVibGljOgog
ICAgIHZpcnR1YWwgfk1lZGlhU3RyZWFtQ2VudGVyKCk7CkBAIC01OSwxNCArNjIsNiBAQCBwdWJs
aWM6CiAKICAgICB2aXJ0dWFsIGJvb2wgZ2V0TWVkaWFTdHJlYW1UcmFja1NvdXJjZXMoUGFzc1Jl
ZlB0cjxNZWRpYVN0cmVhbVRyYWNrU291cmNlc1JlcXVlc3RDbGllbnQ+KSA9IDA7CiAKLSAgICB2
aXJ0dWFsIHZvaWQgZGlkU2V0TWVkaWFTdHJlYW1UcmFja0VuYWJsZWQoTWVkaWFTdHJlYW1Tb3Vy
Y2UqKSA9IDA7Ci0KLSAgICB2aXJ0dWFsIGJvb2wgZGlkQWRkTWVkaWFTdHJlYW1UcmFjayhNZWRp
YVN0cmVhbVNvdXJjZSopID0gMDsKLSAgICB2aXJ0dWFsIGJvb2wgZGlkUmVtb3ZlTWVkaWFTdHJl
YW1UcmFjayhNZWRpYVN0cmVhbVNvdXJjZSopID0gMDsKLQotICAgIHZpcnR1YWwgdm9pZCBkaWRT
dG9wTG9jYWxNZWRpYVN0cmVhbShNZWRpYVN0cmVhbURlc2NyaXB0b3IqKSA9IDA7Ci0gICAgdmly
dHVhbCB2b2lkIGRpZENyZWF0ZU1lZGlhU3RyZWFtKE1lZGlhU3RyZWFtRGVzY3JpcHRvciopID0g
MDsKLQogcHJvdGVjdGVkOgogICAgIE1lZGlhU3RyZWFtQ2VudGVyKCk7CiAKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtRGVzY3JpcHRvci5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFT
dHJlYW1EZXNjcmlwdG9yLmNwcAkocmV2aXNpb24gMTU3MDE2KQorKysgU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1EZXNjcmlwdG9yLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMzUsNiArMzUsNyBAQAogCiAjaW5jbHVkZSAiTWVkaWFTdHJlYW1EZXNjcmlwdG9y
LmgiCiAKKyNpbmNsdWRlICJNZWRpYVN0cmVhbUNlbnRlci5oIgogI2luY2x1ZGUgIk1lZGlhU3Ry
ZWFtU291cmNlLmgiCiAjaW5jbHVkZSAiVVVJRC5oIgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVk
Lmg+CkBAIC00Nyw2ICs0OCwxNSBAQCBQYXNzUmVmUHRyPE1lZGlhU3RyZWFtRGVzY3JpcHRvcj4g
TWVkaWFTCiAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBNZWRpYVN0cmVhbURlc2NyaXB0b3IoY3Jl
YXRlQ2Fub25pY2FsVVVJRFN0cmluZygpLCBhdWRpb1NvdXJjZXMsIHZpZGVvU291cmNlcykpOwog
fQogCitNZWRpYVN0cmVhbURlc2NyaXB0b3I6On5NZWRpYVN0cmVhbURlc2NyaXB0b3IoKQorewor
ICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9hdWRpb1N0cmVhbVNvdXJjZXMuc2l6ZSgpOyBp
KyspCisgICAgICAgIG1fYXVkaW9TdHJlYW1Tb3VyY2VzW2ldLT5zZXRTdHJlYW0oMCk7CisgICAg
CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX3ZpZGVvU3RyZWFtU291cmNlcy5zaXplKCk7
IGkrKykKKyAgICAgICAgbV92aWRlb1N0cmVhbVNvdXJjZXNbaV0tPnNldFN0cmVhbSgwKTsKK30K
Kwogdm9pZCBNZWRpYVN0cmVhbURlc2NyaXB0b3I6OmFkZFNvdXJjZShQYXNzUmVmUHRyPE1lZGlh
U3RyZWFtU291cmNlPiBzb3VyY2UpCiB7CiAgICAgc3dpdGNoIChzb3VyY2UtPnR5cGUoKSkgewpA
QCAtNjcsMTUgKzc3LDE5IEBAIHZvaWQgTWVkaWFTdHJlYW1EZXNjcmlwdG9yOjpyZW1vdmVTb3Vy
Y2UKICAgICBzd2l0Y2ggKHNvdXJjZS0+dHlwZSgpKSB7CiAgICAgY2FzZSBNZWRpYVN0cmVhbVNv
dXJjZTo6QXVkaW86CiAgICAgICAgIHBvcyA9IG1fYXVkaW9TdHJlYW1Tb3VyY2VzLmZpbmQoc291
cmNlKTsKLSAgICAgICAgaWYgKHBvcyAhPSBub3RGb3VuZCkKLSAgICAgICAgICAgIG1fYXVkaW9T
dHJlYW1Tb3VyY2VzLnJlbW92ZShwb3MpOworICAgICAgICBpZiAocG9zID09IG5vdEZvdW5kKQor
ICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBtX2F1ZGlvU3RyZWFtU291cmNlcy5yZW1vdmUo
cG9zKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBNZWRpYVN0cmVhbVNvdXJjZTo6VmlkZW86
CiAgICAgICAgIHBvcyA9IG1fdmlkZW9TdHJlYW1Tb3VyY2VzLmZpbmQoc291cmNlKTsKLSAgICAg
ICAgaWYgKHBvcyAhPSBub3RGb3VuZCkKLSAgICAgICAgICAgIG1fdmlkZW9TdHJlYW1Tb3VyY2Vz
LnJlbW92ZShwb3MpOworICAgICAgICBpZiAocG9zID09IG5vdEZvdW5kKQorICAgICAgICAgICAg
cmV0dXJuOworICAgICAgICBtX3ZpZGVvU3RyZWFtU291cmNlcy5yZW1vdmUocG9zKTsKICAgICAg
ICAgYnJlYWs7CiAgICAgfQorCisgICAgc291cmNlLT5zZXRTdHJlYW0oMCk7CiB9CiAKIHZvaWQg
TWVkaWFTdHJlYW1EZXNjcmlwdG9yOjphZGRSZW1vdGVTb3VyY2UoTWVkaWFTdHJlYW1Tb3VyY2Uq
IHNvdXJjZSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlh
U3RyZWFtRGVzY3JpcHRvci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21lZGlhc3RyZWFtL01lZGlhU3RyZWFtRGVzY3JpcHRvci5oCShyZXZpc2lvbiAxNTcwMTYpCisr
KyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbURlc2NyaXB0
b3IuaAkod29ya2luZyBjb3B5KQpAQCAtNTIsOSArNTIsMTAgQEAgcHVibGljOgogCiBjbGFzcyBN
ZWRpYVN0cmVhbURlc2NyaXB0b3IgOiBwdWJsaWMgUmVmQ291bnRlZDxNZWRpYVN0cmVhbURlc2Ny
aXB0b3I+IHsKIHB1YmxpYzoKLQogICAgIHN0YXRpYyBQYXNzUmVmUHRyPE1lZGlhU3RyZWFtRGVz
Y3JpcHRvcj4gY3JlYXRlKGNvbnN0IE1lZGlhU3RyZWFtU291cmNlVmVjdG9yJiBhdWRpb1NvdXJj
ZXMsIGNvbnN0IE1lZGlhU3RyZWFtU291cmNlVmVjdG9yJiB2aWRlb1NvdXJjZXMpOwogCisgICAg
dmlydHVhbCB+TWVkaWFTdHJlYW1EZXNjcmlwdG9yKCk7CisKICAgICBNZWRpYVN0cmVhbURlc2Ny
aXB0b3JDbGllbnQqIGNsaWVudCgpIGNvbnN0IHsgcmV0dXJuIG1fY2xpZW50OyB9CiAgICAgdm9p
ZCBzZXRDbGllbnQoTWVkaWFTdHJlYW1EZXNjcmlwdG9yQ2xpZW50KiBjbGllbnQpIHsgbV9jbGll
bnQgPSBjbGllbnQ7IH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJl
YW0vTWVkaWFTdHJlYW1Tb3VyY2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtU291cmNlLmNwcAkocmV2aXNpb24gMTU3MDE2
KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1Tb3Vy
Y2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNiBAQAogLyoKICAqIENvcHlyaWdodCAo
QykgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChD
KSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
ICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucwpAQCAtMzQsMjYgKzM1LDM5IEBACiAKICNpbmNsdWRlICJNZWRpYVN0cmVh
bVNvdXJjZS5oIgogCi0jaW5jbHVkZSAiQXVkaW9EZXN0aW5hdGlvbkNvbnN1bWVyLmgiCisjaW5j
bHVkZSAiTWVkaWFTdHJlYW1DZW50ZXIuaCIKKyNpbmNsdWRlICJNZWRpYVN0cmVhbVNvdXJjZUNh
cGFiaWxpdGllcy5oIgorI2luY2x1ZGUgIlVVSUQuaCIKKwogI2luY2x1ZGUgPHd0Zi9QYXNzT3du
UHRyLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotUGFzc1JlZlB0cjxNZWRpYVN0cmVhbVNv
dXJjZT4gTWVkaWFTdHJlYW1Tb3VyY2U6OmNyZWF0ZShjb25zdCBTdHJpbmcmIGlkLCBUeXBlIHR5
cGUsIGNvbnN0IFN0cmluZyYgbmFtZSwgUmVhZHlTdGF0ZSByZWFkeVN0YXRlLCBib29sIHJlcXVp
cmVzQ29uc3VtZXIpCi17Ci0gICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBNZWRpYVN0cmVhbVNvdXJj
ZShpZCwgdHlwZSwgbmFtZSwgcmVhZHlTdGF0ZSwgcmVxdWlyZXNDb25zdW1lcikpOwotfQotCi1N
ZWRpYVN0cmVhbVNvdXJjZTo6TWVkaWFTdHJlYW1Tb3VyY2UoY29uc3QgU3RyaW5nJiBpZCwgVHlw
ZSB0eXBlLCBjb25zdCBTdHJpbmcmIG5hbWUsIFJlYWR5U3RhdGUgcmVhZHlTdGF0ZSwgYm9vbCBy
ZXF1aXJlc0NvbnN1bWVyKQorTWVkaWFTdHJlYW1Tb3VyY2U6Ok1lZGlhU3RyZWFtU291cmNlKGNv
bnN0IFN0cmluZyYgaWQsIFR5cGUgdHlwZSwgY29uc3QgU3RyaW5nJiBuYW1lKQogICAgIDogbV9p
ZChpZCkKICAgICAsIG1fdHlwZSh0eXBlKQogICAgICwgbV9uYW1lKG5hbWUpCi0gICAgLCBtX3Jl
YWR5U3RhdGUocmVhZHlTdGF0ZSkKKyAgICAsIG1fcmVhZHlTdGF0ZShOZXcpCiAgICAgLCBtX3N0
cmVhbSgwKQotICAgICwgbV9yZXF1aXJlc0NvbnN1bWVyKHJlcXVpcmVzQ29uc3VtZXIpCiAgICAg
LCBtX2VuYWJsZWQodHJ1ZSkKICAgICAsIG1fbXV0ZWQoZmFsc2UpCisgICAgLCBtX3JlYWRvbmx5
KGZhbHNlKQorICAgICwgbV9yZW1vdGUoZmFsc2UpCiB7CisgICAgaWYgKCFtX2lkLmlzRW1wdHko
KSkKKyAgICAgICAgcmV0dXJuOworICAgIAorICAgIG1faWQgPSBjcmVhdGVDYW5vbmljYWxVVUlE
U3RyaW5nKCk7Cit9CisKK3ZvaWQgTWVkaWFTdHJlYW1Tb3VyY2U6OnJlc2V0KCkKK3sKKyAgICBt
X3JlYWR5U3RhdGUgPSBOZXc7CisgICAgbV9zdHJlYW0gPSAwOworICAgIG1fZW5hYmxlZCA9IHRy
dWU7CisgICAgbV9tdXRlZCA9IGZhbHNlOworICAgIG1fcmVhZG9ubHkgPSBmYWxzZTsKKyAgICBt
X3JlbW90ZSA9IGZhbHNlOwogfQogCiB2b2lkIE1lZGlhU3RyZWFtU291cmNlOjpzZXRSZWFkeVN0
YXRlKFJlYWR5U3RhdGUgcmVhZHlTdGF0ZSkKQEAgLTYzLDcgKzc3LDcgQEAgdm9pZCBNZWRpYVN0
cmVhbVNvdXJjZTo6c2V0UmVhZHlTdGF0ZShSZQogCiAgICAgbV9yZWFkeVN0YXRlID0gcmVhZHlT
dGF0ZTsKICAgICBmb3IgKFZlY3RvcjxPYnNlcnZlcio+OjppdGVyYXRvciBpID0gbV9vYnNlcnZl
cnMuYmVnaW4oKTsgaSAhPSBtX29ic2VydmVycy5lbmQoKTsgKytpKQotICAgICAgICAoKmkpLT5z
b3VyY2VDaGFuZ2VkU3RhdGUoKTsKKyAgICAgICAgKCppKS0+c291cmNlU3RhdGVDaGFuZ2VkKCk7
CiB9CiAKIHZvaWQgTWVkaWFTdHJlYW1Tb3VyY2U6OmFkZE9ic2VydmVyKE1lZGlhU3RyZWFtU291
cmNlOjpPYnNlcnZlciogb2JzZXJ2ZXIpCkBAIC04MCw1MyArOTQsNzQgQEAgdm9pZCBNZWRpYVN0
cmVhbVNvdXJjZTo6cmVtb3ZlT2JzZXJ2ZXIoTQogCiB2b2lkIE1lZGlhU3RyZWFtU291cmNlOjpz
ZXRTdHJlYW0oTWVkaWFTdHJlYW1EZXNjcmlwdG9yKiBzdHJlYW0pCiB7Ci0gICAgQVNTRVJUKCFt
X3N0cmVhbSAmJiBzdHJlYW0pOworICAgIC8vIEZJWE1FOiBBIHNvdXJjZSBzaG91bGQgbm90IG5l
ZWQgdG8ga25vdyBhYm91dCBpdHMgc3RyZWFtKHMpLiBUaGlzIHdpbGwgYmUgZml4ZWQgYXMgYSBw
YXJ0IG9mCisgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEy
MTk1NAogICAgIG1fc3RyZWFtID0gc3RyZWFtOwogfQogCitNZWRpYUNvbnN0cmFpbnRzKiBNZWRp
YVN0cmVhbVNvdXJjZTo6Y29uc3RyYWludHMoKSBjb25zdAoreworICAgIC8vIEZJWE1FOiBXaGls
ZSB0aGlzIHJldHVybnMgCisgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTEyMjQyOAorICAgIHJldHVybiBtX2NvbnN0cmFpbnRzLmdldCgpOworfQorICAgIAor
dm9pZCBNZWRpYVN0cmVhbVNvdXJjZTo6c2V0Q29uc3RyYWludHMoUGFzc1JlZlB0cjxNZWRpYUNv
bnN0cmFpbnRzPiBjb25zdHJhaW50cykKK3sKKyAgICBtX2NvbnN0cmFpbnRzID0gY29uc3RyYWlu
dHM7Cit9CisKIHZvaWQgTWVkaWFTdHJlYW1Tb3VyY2U6OnNldE11dGVkKGJvb2wgbXV0ZWQpCiB7
CiAgICAgaWYgKG1fbXV0ZWQgPT0gbXV0ZWQpCiAgICAgICAgIHJldHVybjsKIAogICAgIG1fbXV0
ZWQgPSBtdXRlZDsKKworICAgIGlmIChtX3JlYWR5U3RhdGUgPT0gRW5kZWQpCisgICAgICAgIHJl
dHVybjsKKwogICAgIGZvciAoVmVjdG9yPE9ic2VydmVyKj46Oml0ZXJhdG9yIGkgPSBtX29ic2Vy
dmVycy5iZWdpbigpOyBpICE9IG1fb2JzZXJ2ZXJzLmVuZCgpOyArK2kpCi0gICAgICAgICgqaSkt
PnNvdXJjZUNoYW5nZWRTdGF0ZSgpOworICAgICAgICAoKmkpLT5zb3VyY2VNdXRlZENoYW5nZWQo
KTsKIH0KIAotdm9pZCBNZWRpYVN0cmVhbVNvdXJjZTo6YWRkQXVkaW9Db25zdW1lcihQYXNzUmVm
UHRyPEF1ZGlvRGVzdGluYXRpb25Db25zdW1lcj4gY29uc3VtZXIpCit2b2lkIE1lZGlhU3RyZWFt
U291cmNlOjpzZXRFbmFibGVkKGJvb2wgZW5hYmxlZCkKIHsKLSAgICBBU1NFUlQobV9yZXF1aXJl
c0NvbnN1bWVyKTsKLSAgICBNdXRleExvY2tlciBsb2NrZXIobV9hdWRpb0NvbnN1bWVyc0xvY2sp
OwotICAgIG1fYXVkaW9Db25zdW1lcnMuYXBwZW5kKGNvbnN1bWVyKTsKLX0KKyAgICBpZiAobV9l
bmFibGVkID09IGVuYWJsZWQpCisgICAgICAgIHJldHVybjsKKyAgICAKKyAgICBtX2VuYWJsZWQg
PSBlbmFibGVkOwogCi1ib29sIE1lZGlhU3RyZWFtU291cmNlOjpyZW1vdmVBdWRpb0NvbnN1bWVy
KEF1ZGlvRGVzdGluYXRpb25Db25zdW1lciogY29uc3VtZXIpCi17Ci0gICAgQVNTRVJUKG1fcmVx
dWlyZXNDb25zdW1lcik7Ci0gICAgTXV0ZXhMb2NrZXIgbG9ja2VyKG1fYXVkaW9Db25zdW1lcnNM
b2NrKTsKLSAgICBzaXplX3QgcG9zID0gbV9hdWRpb0NvbnN1bWVycy5maW5kKGNvbnN1bWVyKTsK
LSAgICBpZiAocG9zICE9IG5vdEZvdW5kKSB7Ci0gICAgICAgIG1fYXVkaW9Db25zdW1lcnMucmVt
b3ZlKHBvcyk7Ci0gICAgICAgIHJldHVybiB0cnVlOwotICAgIH0KLSAgICByZXR1cm4gZmFsc2U7
CisgICAgaWYgKG1fcmVhZHlTdGF0ZSA9PSBFbmRlZCkKKyAgICAgICAgcmV0dXJuOworICAgIAor
ICAgIGZvciAoVmVjdG9yPE9ic2VydmVyKj46Oml0ZXJhdG9yIGkgPSBtX29ic2VydmVycy5iZWdp
bigpOyBpICE9IG1fb2JzZXJ2ZXJzLmVuZCgpOyArK2kpCisgICAgICAgICgqaSktPnNvdXJjZUVu
YWJsZWRDaGFuZ2VkKCk7CiB9CiAKLXZvaWQgTWVkaWFTdHJlYW1Tb3VyY2U6OnNldEF1ZGlvRm9y
bWF0KHNpemVfdCBudW1iZXJPZkNoYW5uZWxzLCBmbG9hdCBzYW1wbGVSYXRlKQorYm9vbCBNZWRp
YVN0cmVhbVNvdXJjZTo6cmVhZG9ubHkoKSBjb25zdAogewotICAgIEFTU0VSVChtX3JlcXVpcmVz
Q29uc3VtZXIpOwotICAgIE11dGV4TG9ja2VyIGxvY2tlcihtX2F1ZGlvQ29uc3VtZXJzTG9jayk7
Ci0gICAgZm9yIChWZWN0b3I8UmVmUHRyPEF1ZGlvRGVzdGluYXRpb25Db25zdW1lcj4gPjo6aXRl
cmF0b3IgaXQgPSBtX2F1ZGlvQ29uc3VtZXJzLmJlZ2luKCk7IGl0ICE9IG1fYXVkaW9Db25zdW1l
cnMuZW5kKCk7ICsraXQpCi0gICAgICAgICgqaXQpLT5zZXRGb3JtYXQobnVtYmVyT2ZDaGFubmVs
cywgc2FtcGxlUmF0ZSk7CisgICAgLy8gaHR0cDovL3d3dy53My5vcmcvVFIvbWVkaWFjYXB0dXJl
LXN0cmVhbXMvI3dpZGwtTWVkaWFTdHJlYW1UcmFjay1fcmVhZG9ubHkKKyAgICAvLyBJZiB0aGUg
dHJhY2sgKGF1ZGlvIG9yIHZpZGVvKSBpcyBiYWNrZWQgYnkgYSByZWFkLW9ubHkgc291cmNlIHN1
Y2ggYXMgYSBmaWxlLCBvciB0aGUgdHJhY2sgc291cmNlIAorICAgIC8vIGlzIGEgbG9jYWwgbWlj
cm9waG9uZSBvciBjYW1lcmEsIGJ1dCBpcyBzaGFyZWQgc28gdGhhdCB0aGlzIHRyYWNrIGNhbm5v
dCBtb2RpZnkgYW55IG9mIHRoZSBzb3VyY2UncworICAgIC8vIHNldHRpbmdzLCB0aGUgcmVhZG9u
bHkgYXR0cmlidXRlIG11c3QgcmV0dXJuIHRoZSB2YWx1ZSB0cnVlLiBPdGhlcndpc2UsIGl0IG11
c3QgcmV0dXJuIHRoZSB2YWx1ZSBmYWxzZS4KKyAgICByZXR1cm4gbV9yZWFkb25seTsKIH0KIAot
dm9pZCBNZWRpYVN0cmVhbVNvdXJjZTo6Y29uc3VtZUF1ZGlvKEF1ZGlvQnVzKiBidXMsIHNpemVf
dCBudW1iZXJPZkZyYW1lcykKK3ZvaWQgTWVkaWFTdHJlYW1Tb3VyY2U6OnN0b3AoKQogewotICAg
IEFTU0VSVChtX3JlcXVpcmVzQ29uc3VtZXIpOwotICAgIE11dGV4TG9ja2VyIGxvY2tlcihtX2F1
ZGlvQ29uc3VtZXJzTG9jayk7Ci0gICAgZm9yIChWZWN0b3I8UmVmUHRyPEF1ZGlvRGVzdGluYXRp
b25Db25zdW1lcj4gPjo6aXRlcmF0b3IgaXQgPSBtX2F1ZGlvQ29uc3VtZXJzLmJlZ2luKCk7IGl0
ICE9IG1fYXVkaW9Db25zdW1lcnMuZW5kKCk7ICsraXQpCi0gICAgICAgICgqaXQpLT5jb25zdW1l
QXVkaW8oYnVzLCBudW1iZXJPZkZyYW1lcyk7CisgICAgZm9yIChWZWN0b3I8T2JzZXJ2ZXIqPjo6
aXRlcmF0b3IgaSA9IG1fb2JzZXJ2ZXJzLmJlZ2luKCk7IGkgIT0gbV9vYnNlcnZlcnMuZW5kKCk7
ICsraSkgeworICAgICAgICBpZiAoISgqaSktPnN0b3BwZWQoKSkKKyAgICAgICAgICAgIHJldHVy
bjsKKyAgICB9CisKKyAgICAvLyBUaGVyZSBhcmUgbm8gbW9yZSBjb25zdW1lcnMgb2YgdGhpcyBz
b3VyY2UncyBkYXRhLCBzaHV0IGl0IGRvd24gYXMgYXBwcm9wcmlhdGUuCisgICAgc2V0UmVhZHlT
dGF0ZShFbmRlZCk7CisKKyAgICAvLyBodHRwOi8vd3d3LnczLm9yZy9UUi9tZWRpYWNhcHR1cmUt
c3RyZWFtcy8jd2lkbC1NZWRpYVN0cmVhbVRyYWNrLXN0b3Atdm9pZAorICAgIC8vIElmIHRoZSBk
YXRhIGlzIGJlaW5nIGdlbmVyYXRlZCBmcm9tIGEgbGl2ZSBzb3VyY2UgKGUuZy4sIGEgbWljcm9w
aG9uZSBvciBjYW1lcmEpLCB0aGVuIHRoZSB1c2VyIAorICAgIC8vIGFnZW50IHNob3VsZCByZW1v
dmUgYW55IGFjdGl2ZSAib24tYWlyIiBpbmRpY2F0b3IgZm9yIHRoYXQgc291cmNlLiBJZiB0aGUg
ZGF0YSBpcyBiZWluZyAKKyAgICAvLyBnZW5lcmF0ZWQgZnJvbSBhIHByZXJlY29yZGVkIHNvdXJj
ZSAoZS5nLiBhIHZpZGVvIGZpbGUpLCBhbnkgcmVtYWluaW5nIGNvbnRlbnQgaW4gdGhlIGZpbGUg
aXMgaWdub3JlZC4KIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1Tb3VyY2UuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVNvdXJj
ZS5oCShyZXZpc2lvbiAxNTcwMTYpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0
cmVhbS9NZWRpYVN0cmVhbVNvdXJjZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDYgKzEsNyBAQAog
LyoKICAqIENvcHlyaWdodCAoQykgMjAxMSBFcmljc3NvbiBBQi4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KICAqIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
ICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzYsNiArMzcsNyBAQAogCiAjaW5j
bHVkZSAiQXVkaW9EZXN0aW5hdGlvbkNvbnN1bWVyLmgiCiAjaW5jbHVkZSAiTWVkaWFDb25zdHJh
aW50cy5oIgorI2luY2x1ZGUgIk1lZGlhU3RyZWFtU291cmNlQ2FwYWJpbGl0aWVzLmgiCiAjaW5j
bHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAjaW5jbHVk
ZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CkBAIC00Myw3MiArNDUsODEgQEAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAogY2xhc3MgQXVkaW9CdXM7CitjbGFzcyBNZWRpYUNvbnN0cmFpbnRzOwogY2xh
c3MgTWVkaWFTdHJlYW1EZXNjcmlwdG9yOworc3RydWN0IE1lZGlhU3RyZWFtU291cmNlU3RhdGVz
OwogCiBjbGFzcyBNZWRpYVN0cmVhbVNvdXJjZSA6IHB1YmxpYyBSZWZDb3VudGVkPE1lZGlhU3Ry
ZWFtU291cmNlPiB7CiBwdWJsaWM6CiAgICAgY2xhc3MgT2JzZXJ2ZXIgewogICAgIHB1YmxpYzoK
ICAgICAgICAgdmlydHVhbCB+T2JzZXJ2ZXIoKSB7IH0KLSAgICAgICAgdmlydHVhbCB2b2lkIHNv
dXJjZUNoYW5nZWRTdGF0ZSgpID0gMDsKKyAgICAgICAgdmlydHVhbCB2b2lkIHNvdXJjZVN0YXRl
Q2hhbmdlZCgpID0gMDsKKyAgICAgICAgdmlydHVhbCB2b2lkIHNvdXJjZU11dGVkQ2hhbmdlZCgp
ID0gMDsKKyAgICAgICAgdmlydHVhbCB2b2lkIHNvdXJjZUVuYWJsZWRDaGFuZ2VkKCkgPSAwOwor
ICAgICAgICB2aXJ0dWFsIGJvb2wgc3RvcHBlZCgpID0gMDsKICAgICB9OwogCiAgICAgZW51bSBU
eXBlIHsgQXVkaW8sIFZpZGVvIH07CiAgICAgZW51bSBSZWFkeVN0YXRlIHsgTmV3ID0gMCwgTGl2
ZSA9IDEsIEVuZGVkID0gMiB9OwogCi0gICAgc3RhdGljIFBhc3NSZWZQdHI8TWVkaWFTdHJlYW1T
b3VyY2U+IGNyZWF0ZShjb25zdCBTdHJpbmcmIGlkLCBUeXBlLCBjb25zdCBTdHJpbmcmIG5hbWUs
IFJlYWR5U3RhdGUgPSBOZXcsIGJvb2wgcmVxdWlyZXNDb25zdW1lciA9IGZhbHNlKTsKKyAgICB2
aXJ0dWFsIH5NZWRpYVN0cmVhbVNvdXJjZSgpIHsgfQogCi0gICAgY29uc3QgU3RyaW5nJiBpZCgp
IGNvbnN0IHsgcmV0dXJuIG1faWQ7IH0KKyAgICB2aXJ0dWFsIGJvb2wgaXNBdWRpb1N0cmVhbVNv
dXJjZSgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdmlydHVhbCBib29sIHVzZUlERm9y
VHJhY2tJRCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CisKKyAgICB2b2lkIHJlc2V0KCk7CiAK
KyAgICBjb25zdCBTdHJpbmcmIGlkKCkgY29uc3QgeyByZXR1cm4gbV9pZDsgfQogICAgIFR5cGUg
dHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fdHlwZTsgfQogICAgIGNvbnN0IFN0cmluZyYgbmFtZSgp
IGNvbnN0IHsgcmV0dXJuIG1fbmFtZTsgfQogCisgICAgdmlydHVhbCBQYXNzUmVmUHRyPE1lZGlh
U3RyZWFtU291cmNlQ2FwYWJpbGl0aWVzPiBjYXBhYmlsaXRpZXMoKSBjb25zdCA9IDA7CisgICAg
dmlydHVhbCBjb25zdCBNZWRpYVN0cmVhbVNvdXJjZVN0YXRlcyYgc3RhdGVzKCkgPSAwOworICAg
IAogICAgIHZvaWQgc2V0UmVhZHlTdGF0ZShSZWFkeVN0YXRlKTsKICAgICBSZWFkeVN0YXRlIHJl
YWR5U3RhdGUoKSBjb25zdCB7IHJldHVybiBtX3JlYWR5U3RhdGU7IH0KIAogICAgIHZvaWQgYWRk
T2JzZXJ2ZXIoT2JzZXJ2ZXIqKTsKICAgICB2b2lkIHJlbW92ZU9ic2VydmVyKE9ic2VydmVyKik7
CiAKLSAgICB2b2lkIHNldENvbnN0cmFpbnRzKFBhc3NSZWZQdHI8TWVkaWFDb25zdHJhaW50cz4g
Y29uc3RyYWludHMpIHsgbV9jb25zdHJhaW50cyA9IGNvbnN0cmFpbnRzOyB9Ci0gICAgTWVkaWFD
b25zdHJhaW50cyogY29uc3RyYWludHMoKSBjb25zdCB7IHJldHVybiBtX2NvbnN0cmFpbnRzLmdl
dCgpOyB9Ci0KLSAgICBjb25zdCBTdHJpbmcmIGRldmljZUlkKCkgY29uc3QgeyByZXR1cm4gbV9k
ZXZpY2VJZDsgfQotICAgIHZvaWQgc2V0RGV2aWNlSWQoY29uc3QgU3RyaW5nJiBkZXZpY2VJZCkg
eyBtX2RldmljZUlkID0gZGV2aWNlSWQ7IH0KKyAgICB2b2lkIHNldENvbnN0cmFpbnRzKFBhc3NS
ZWZQdHI8TWVkaWFDb25zdHJhaW50cz4gY29uc3RyYWludHMpOworICAgIE1lZGlhQ29uc3RyYWlu
dHMqIGNvbnN0cmFpbnRzKCkgY29uc3Q7CiAKICAgICBib29sIGVuYWJsZWQoKSBjb25zdCB7IHJl
dHVybiBtX2VuYWJsZWQ7IH0KLSAgICB2b2lkIHNldEVuYWJsZWQoYm9vbCBlbmFibGVkKSB7IG1f
ZW5hYmxlZCA9IGVuYWJsZWQ7IH0KKyAgICB2b2lkIHNldEVuYWJsZWQoYm9vbCk7CiAKICAgICBi
b29sIG11dGVkKCkgY29uc3QgeyByZXR1cm4gbV9tdXRlZDsgfQogICAgIHZvaWQgc2V0TXV0ZWQo
Ym9vbCk7Ci0gICAgCi0gICAgdm9pZCBzZXRBdWRpb0Zvcm1hdChzaXplX3QgbnVtYmVyT2ZDaGFu
bmVscywgZmxvYXQgc2FtcGxlUmF0ZSk7Ci0gICAgdm9pZCBjb25zdW1lQXVkaW8oQXVkaW9CdXMq
LCBzaXplX3QgbnVtYmVyT2ZGcmFtZXMpOworCisgICAgYm9vbCByZWFkb25seSgpIGNvbnN0Owor
ICAgIHZvaWQgc2V0UmVhZG9ubHkoYm9vbCByZWFkb25seSkgeyBtX3JlYWRvbmx5ID0gcmVhZG9u
bHk7IH0KKworICAgIGJvb2wgcmVtb3RlKCkgY29uc3QgeyByZXR1cm4gbV9yZW1vdGU7IH0KKyAg
ICB2b2lkIHNldFJlbW90ZShib29sIHJlbW90ZSkgeyBtX3JlbW90ZSA9IHJlbW90ZTsgfQorCisg
ICAgdm9pZCBzdG9wKCk7CiAKICAgICBNZWRpYVN0cmVhbURlc2NyaXB0b3IqIHN0cmVhbSgpIGNv
bnN0IHsgcmV0dXJuIG1fc3RyZWFtOyB9CiAgICAgdm9pZCBzZXRTdHJlYW0oTWVkaWFTdHJlYW1E
ZXNjcmlwdG9yKik7Ci0KLSAgICBib29sIHJlcXVpcmVzQXVkaW9Db25zdW1lcigpIGNvbnN0IHsg
cmV0dXJuIG1fcmVxdWlyZXNDb25zdW1lcjsgfQotICAgIHZvaWQgYWRkQXVkaW9Db25zdW1lcihQ
YXNzUmVmUHRyPEF1ZGlvRGVzdGluYXRpb25Db25zdW1lcj4pOwotICAgIGJvb2wgcmVtb3ZlQXVk
aW9Db25zdW1lcihBdWRpb0Rlc3RpbmF0aW9uQ29uc3VtZXIqKTsKLSAgICBjb25zdCBWZWN0b3I8
UmVmUHRyPEF1ZGlvRGVzdGluYXRpb25Db25zdW1lcj4gPiYgYXVkaW9Db25zdW1lcnMoKSBjb25z
dCB7IHJldHVybiBtX2F1ZGlvQ29uc3VtZXJzOyB9CisgICAgCitwcm90ZWN0ZWQ6CisgICAgTWVk
aWFTdHJlYW1Tb3VyY2UoY29uc3QgU3RyaW5nJiBpZCwgVHlwZSwgY29uc3QgU3RyaW5nJiBuYW1l
KTsKIAogcHJpdmF0ZToKLSAgICBNZWRpYVN0cmVhbVNvdXJjZShjb25zdCBTdHJpbmcmIGlkLCBU
eXBlLCBjb25zdCBTdHJpbmcmIG5hbWUsIFJlYWR5U3RhdGUsIGJvb2wgcmVxdWlyZXNDb25zdW1l
cik7Ci0KICAgICBTdHJpbmcgbV9pZDsKICAgICBUeXBlIG1fdHlwZTsKICAgICBTdHJpbmcgbV9u
YW1lOwogICAgIFJlYWR5U3RhdGUgbV9yZWFkeVN0YXRlOwotICAgIFN0cmluZyBtX2RldmljZUlk
OwogICAgIFZlY3RvcjxPYnNlcnZlcio+IG1fb2JzZXJ2ZXJzOwotICAgIE11dGV4IG1fYXVkaW9D
b25zdW1lcnNMb2NrOwotICAgIFZlY3RvcjxSZWZQdHI8QXVkaW9EZXN0aW5hdGlvbkNvbnN1bWVy
Pj4gbV9hdWRpb0NvbnN1bWVyczsKICAgICBSZWZQdHI8TWVkaWFDb25zdHJhaW50cz4gbV9jb25z
dHJhaW50czsKICAgICBNZWRpYVN0cmVhbURlc2NyaXB0b3IqIG1fc3RyZWFtOworICAgIE1lZGlh
U3RyZWFtU291cmNlU3RhdGVzIG1fc3RhdGVzOwogCi0gICAgYm9vbCBtX3JlcXVpcmVzQ29uc3Vt
ZXI7CiAgICAgYm9vbCBtX2VuYWJsZWQ7CiAgICAgYm9vbCBtX211dGVkOworICAgIGJvb2wgbV9y
ZWFkb25seTsKKyAgICBib29sIG1fcmVtb3RlOwogfTsKIAogdHlwZWRlZiBWZWN0b3I8UmVmUHRy
PE1lZGlhU3RyZWFtU291cmNlPiA+IE1lZGlhU3RyZWFtU291cmNlVmVjdG9yOwpJbmRleDogU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1Tb3VyY2VDYXBhYmls
aXRpZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVh
bS9NZWRpYVN0cmVhbVNvdXJjZUNhcGFiaWxpdGllcy5oCShyZXZpc2lvbiAwKQorKysgU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1Tb3VyY2VDYXBhYmlsaXRp
ZXMuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDE3NSBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElT
JycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQor
ICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBN
ZWRpYVN0cmVhbVNvdXJjZUNhcGFiaWxpdGllc19oCisjZGVmaW5lIE1lZGlhU3RyZWFtU291cmNl
Q2FwYWJpbGl0aWVzX2gKKworI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCisKKyNpbmNsdWRlIDx3
dGYvUmVmQ291bnRlZC5oPgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKyNpbmNsdWRlIDx3dGYv
dGV4dC9BdG9taWNTdHJpbmcuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitzdHJ1Y3QgTWVk
aWFTdHJlYW1Tb3VyY2VTdGF0ZXMgeworcHVibGljOgorICAgIGVudW0gU291cmNlVHlwZSB7IE5v
bmUsIENhbWVyYSwgTWljcm9waG9uZSB9OworICAgIGVudW0gVmlkZW9GYWNpbmdNb2RlIHsgVXNl
ciwgRW52aXJvbm1lbnQsIExlZnQsIFJpZ2h0IH07CisKKyAgICBNZWRpYVN0cmVhbVNvdXJjZVN0
YXRlcygpCisgICAgICAgIDogc291cmNlVHlwZShOb25lKQorICAgICAgICAsIGZhY2luZ01vZGUo
VXNlcikKKyAgICAgICAgLCB3aWR0aCgwKQorICAgICAgICAsIGhlaWdodCgwKQorICAgICAgICAs
IGZyYW1lUmF0ZSgwKQorICAgICAgICAsIGFzcGVjdFJhdGlvKDApCisgICAgICAgICwgdm9sdW1l
KDApCisgICAgeworICAgIH0KKworICAgIFNvdXJjZVR5cGUgc291cmNlVHlwZTsKKyAgICBBdG9t
aWNTdHJpbmcgc291cmNlSWQ7CisgICAgVmlkZW9GYWNpbmdNb2RlIGZhY2luZ01vZGU7CisgICAg
dW5zaWduZWQgbG9uZyB3aWR0aDsKKyAgICB1bnNpZ25lZCBsb25nIGhlaWdodDsKKyAgICBmbG9h
dCBmcmFtZVJhdGU7CisgICAgZmxvYXQgYXNwZWN0UmF0aW87CisgICAgdW5zaWduZWQgbG9uZyB2
b2x1bWU7CisgICAgCisgICAgYm9vbCBoYXNWaWRlb1NvdXJjZTsKK307CisKK2NsYXNzIE1lZGlh
U3RyZWFtU291cmNlQ2FwYWJpbGl0eVJhbmdlIHsKK3B1YmxpYzoKKyAgICAKKyAgICBNZWRpYVN0
cmVhbVNvdXJjZUNhcGFiaWxpdHlSYW5nZShmbG9hdCBtaW4sIGZsb2F0IG1heCwgYm9vbCBzdXBw
b3J0ZWQgPSB0cnVlKQorICAgICAgICA6IG1fdHlwZShGbG9hdCkKKyAgICB7CisgICAgICAgIG1f
bWluLmFzRmxvYXQgPSBtaW47CisgICAgICAgIG1fbWF4LmFzRmxvYXQgPSBtYXg7CisgICAgICAg
IG1fc3VwcG9ydGVkID0gc3VwcG9ydGVkOworICAgIH0KKyAgICAKKyAgICBNZWRpYVN0cmVhbVNv
dXJjZUNhcGFiaWxpdHlSYW5nZSh1bnNpZ25lZCBsb25nIG1pbiwgdW5zaWduZWQgbG9uZyBtYXgs
IGJvb2wgc3VwcG9ydGVkID0gdHJ1ZSkKKyAgICAgICAgOiBtX3R5cGUoVUxvbmcpCisgICAgewor
ICAgICAgICBtX21pbi5hc1VMb25nID0gbWluOworICAgICAgICBtX21heC5hc1VMb25nID0gbWF4
OworICAgICAgICBtX3N1cHBvcnRlZCA9IHN1cHBvcnRlZDsKKyAgICB9CisgICAgCisgICAgTWVk
aWFTdHJlYW1Tb3VyY2VDYXBhYmlsaXR5UmFuZ2UoKQorICAgIHsKKyAgICAgICAgbV90eXBlID0g
VW5kZWZpbmVkOworICAgICAgICBtX21pbi5hc1VMb25nID0gMDsKKyAgICAgICAgbV9tYXguYXNV
TG9uZyA9IDA7CisgICAgICAgIG1fc3VwcG9ydGVkID0gZmFsc2U7CisgICAgfQorICAgIAorICAg
IGVudW0gVHlwZSB7IFVuZGVmaW5lZCwgRmxvYXQsIFVMb25nIH07CisgICAgCisgICAgdW5pb24g
VmFsdWVVbmlvbiB7CisgICAgICAgIHVuc2lnbmVkIGxvbmcgYXNVTG9uZzsKKyAgICAgICAgZmxv
YXQgYXNGbG9hdDsKKyAgICB9OworICAgIAorICAgIGNvbnN0IFZhbHVlVW5pb24mIG1pbigpIGNv
bnN0IHsgcmV0dXJuIG1fbWluOyB9CisgICAgY29uc3QgVmFsdWVVbmlvbiYgbWF4KCkgY29uc3Qg
eyByZXR1cm4gbV9tYXg7IH0KKyAgICBUeXBlIHR5cGUoKSBjb25zdCB7IHJldHVybiBtX3R5cGU7
IH0KKyAgICBib29sIHN1cHBvcnRlZCgpIGNvbnN0IHsgcmV0dXJuIG1fc3VwcG9ydGVkOyB9Cisg
ICAgCitwcml2YXRlOgorICAgIFZhbHVlVW5pb24gbV9taW47CisgICAgVmFsdWVVbmlvbiBtX21h
eDsKKyAgICBUeXBlIG1fdHlwZTsKKyAgICBib29sIG1fc3VwcG9ydGVkOworfTsKKworY2xhc3Mg
TWVkaWFTdHJlYW1Tb3VyY2VDYXBhYmlsaXRpZXMgOiBwdWJsaWMgUmVmQ291bnRlZDxNZWRpYVN0
cmVhbVNvdXJjZUNhcGFiaWxpdGllcz4geworcHVibGljOgorICAgIHN0YXRpYyBQYXNzUmVmUHRy
PE1lZGlhU3RyZWFtU291cmNlQ2FwYWJpbGl0aWVzPiBjcmVhdGUoKQorICAgIHsKKyAgICAgICAg
cmV0dXJuIGFkb3B0UmVmKG5ldyBNZWRpYVN0cmVhbVNvdXJjZUNhcGFiaWxpdGllcygpKTsKKyAg
ICB9CisKKyAgICB+TWVkaWFTdHJlYW1Tb3VyY2VDYXBhYmlsaXRpZXMoKSB7IH0KKworICAgIGNv
bnN0IFZlY3RvcjxNZWRpYVN0cmVhbVNvdXJjZVN0YXRlczo6U291cmNlVHlwZT4mIHNvdXJjZVR5
cGVzKCkgeyByZXR1cm4gbV9zb3VyY2VUeXBlOyB9CisgICAgdm9pZCBhZGRTb3VyY2VUeXBlKE1l
ZGlhU3RyZWFtU291cmNlU3RhdGVzOjpTb3VyY2VUeXBlIHNvdXJjZVR5cGUpCisgICAgeworICAg
ICAgICBpZiAoc291cmNlVHlwZSA9PSBNZWRpYVN0cmVhbVNvdXJjZVN0YXRlczo6Q2FtZXJhKQor
ICAgICAgICAgICAgbV92aWRlb1NvdXJjZSA9IHRydWU7CisgICAgICAgIG1fc291cmNlVHlwZS5h
cHBlbmQoc291cmNlVHlwZSk7CisgICAgfQorCisgICAgY29uc3QgVmVjdG9yPEF0b21pY1N0cmlu
Zz4mIHNvdXJjZUlkKCkgeyByZXR1cm4gbV9zb3VyY2VJZDsgfQorICAgIHZvaWQgc2V0U291cmNl
SWQoY29uc3QgQXRvbWljU3RyaW5nJiBpZCkgIHsgbV9zb3VyY2VJZC5yZXNlcnZlQ2FwYWNpdHko
MSk7IG1fc291cmNlSWQuaW5zZXJ0KDAsIGlkKTsgfQorCisgICAgY29uc3QgVmVjdG9yPE1lZGlh
U3RyZWFtU291cmNlU3RhdGVzOjpWaWRlb0ZhY2luZ01vZGU+JiBmYWNpbmdNb2RlcygpIHsgcmV0
dXJuIG1fZmFjaW5nTW9kZTsgfQorICAgIHZvaWQgYWRkRmFjaW5nTW9kZShNZWRpYVN0cmVhbVNv
dXJjZVN0YXRlczo6VmlkZW9GYWNpbmdNb2RlIG1vZGUpIHsgbV9mYWNpbmdNb2RlLmFwcGVuZCht
b2RlKTsgfQorCisgICAgY29uc3QgTWVkaWFTdHJlYW1Tb3VyY2VDYXBhYmlsaXR5UmFuZ2UmIHdp
ZHRoKCkgeyByZXR1cm4gbV93aWR0aDsgfQorICAgIHZvaWQgc2V0V2lkdGhSYW5nZShjb25zdCBN
ZWRpYVN0cmVhbVNvdXJjZUNhcGFiaWxpdHlSYW5nZSYgd2lkdGgpIHsgbV93aWR0aCA9IHdpZHRo
OyB9CisKKyAgICBjb25zdCBNZWRpYVN0cmVhbVNvdXJjZUNhcGFiaWxpdHlSYW5nZSYgaGVpZ2h0
KCkgeyByZXR1cm4gbV9oZWlnaHQ7IH0KKyAgICB2b2lkIHNldEhlaWdodFJhbmdlKGNvbnN0IE1l
ZGlhU3RyZWFtU291cmNlQ2FwYWJpbGl0eVJhbmdlJiBoZWlnaHQpIHsgbV9oZWlnaHQgPSBoZWln
aHQ7IH0KKworICAgIGNvbnN0IE1lZGlhU3RyZWFtU291cmNlQ2FwYWJpbGl0eVJhbmdlJiBmcmFt
ZVJhdGUoKSB7IHJldHVybiBtX2ZyYW1lUmF0ZTsgfQorICAgIHZvaWQgc2V0RnJhbWVSYXRlUmFu
Z2UoY29uc3QgTWVkaWFTdHJlYW1Tb3VyY2VDYXBhYmlsaXR5UmFuZ2UmIGZyYW1lUmF0ZSkgeyBt
X2ZyYW1lUmF0ZSA9IGZyYW1lUmF0ZTsgfQorCisgICAgY29uc3QgTWVkaWFTdHJlYW1Tb3VyY2VD
YXBhYmlsaXR5UmFuZ2UmIGFzcGVjdFJhdGlvKCkgeyByZXR1cm4gbV9hc3BlY3RSYXRpbzsgfQor
ICAgIHZvaWQgc2V0QXNwZWN0UmF0aW9SYW5nZShjb25zdCBNZWRpYVN0cmVhbVNvdXJjZUNhcGFi
aWxpdHlSYW5nZSYgYXNwZWN0UmF0aW8pIHsgbV9hc3BlY3RSYXRpbyA9IGFzcGVjdFJhdGlvOyB9
CisKKyAgICBjb25zdCBNZWRpYVN0cmVhbVNvdXJjZUNhcGFiaWxpdHlSYW5nZSYgdm9sdW1lKCkg
eyByZXR1cm4gbV92b2x1bWU7IH0KKyAgICB2b2lkIHNldFZvbHVtZVJhbmdlKGNvbnN0IE1lZGlh
U3RyZWFtU291cmNlQ2FwYWJpbGl0eVJhbmdlJiB2b2x1bWUpIHsgbV92b2x1bWUgPSB2b2x1bWU7
IH0KKworICAgIGJvb2wgaGFzVmlkZW9Tb3VyY2UoKSB7IHJldHVybiBtX3ZpZGVvU291cmNlOyB9
CisgICAgdm9pZCBzZXRIYXNWaWRlb1NvdXJjZShib29sIGlzVmlkZW8pIHsgbV92aWRlb1NvdXJj
ZSA9IGlzVmlkZW87OyB9CisKK3ByaXZhdGU6CisgICAgTWVkaWFTdHJlYW1Tb3VyY2VDYXBhYmls
aXRpZXMoKQorICAgICAgICA6IG1fdmlkZW9Tb3VyY2UoZmFsc2UpCisgICAgeworICAgIH0KKwor
ICAgIFZlY3RvcjxBdG9taWNTdHJpbmc+IG1fc291cmNlSWQ7CisgICAgVmVjdG9yPE1lZGlhU3Ry
ZWFtU291cmNlU3RhdGVzOjpTb3VyY2VUeXBlPiBtX3NvdXJjZVR5cGU7CisgICAgVmVjdG9yPE1l
ZGlhU3RyZWFtU291cmNlU3RhdGVzOjpWaWRlb0ZhY2luZ01vZGU+IG1fZmFjaW5nTW9kZTsKKwor
ICAgIE1lZGlhU3RyZWFtU291cmNlQ2FwYWJpbGl0eVJhbmdlIG1fd2lkdGg7CisgICAgTWVkaWFT
dHJlYW1Tb3VyY2VDYXBhYmlsaXR5UmFuZ2UgbV9oZWlnaHQ7CisgICAgTWVkaWFTdHJlYW1Tb3Vy
Y2VDYXBhYmlsaXR5UmFuZ2UgbV9mcmFtZVJhdGU7CisgICAgTWVkaWFTdHJlYW1Tb3VyY2VDYXBh
YmlsaXR5UmFuZ2UgbV9hc3BlY3RSYXRpbzsKKyAgICBNZWRpYVN0cmVhbVNvdXJjZUNhcGFiaWxp
dHlSYW5nZSBtX3ZvbHVtZTsKKworICAgIGJvb2wgbV92aWRlb1NvdXJjZTsKK307CisKK30gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIE1lZGlhU3RyZWFtU291cmNlQ2FwYWJpbGl0
aWVzX2gKKworI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVh
bS9ibGFja2JlcnJ5L01lZGlhU3RyZWFtQ2VudGVyQmxhY2tCZXJyeS5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vYmxhY2tiZXJyeS9NZWRpYVN0
cmVhbUNlbnRlckJsYWNrQmVycnkuY3BwCShyZXZpc2lvbiAxNTcwMTYpCisrKyBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9ibGFja2JlcnJ5L01lZGlhU3RyZWFtQ2VudGVyQmxh
Y2tCZXJyeS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM1LDggKzM1LDEwIEBACiAKICNpbmNsdWRl
ICJNZWRpYVN0cmVhbUNlbnRlckJsYWNrQmVycnkuaCIKIAorI2luY2x1ZGUgIk1lZGlhU3RyZWFt
Q3JlYXRpb25DbGllbnQuaCIKICNpbmNsdWRlICJNZWRpYVN0cmVhbURlc2NyaXB0b3IuaCIKLSNp
bmNsdWRlICJNZWRpYVN0cmVhbVNvdXJjZXNRdWVyeUNsaWVudC5oIgorI2luY2x1ZGUgIk1lZGlh
U3RyZWFtVHJhY2tTb3VyY2VzUmVxdWVzdENsaWVudC5oIgorI2luY2x1ZGUgIk5vdEltcGxlbWVu
dGVkLmgiCiAjaW5jbHVkZSA8d3RmL01haW5UaHJlYWQuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewpAQCAtNzIsMzMgKzc0LDYgQEAgYm9vbCBNZWRpYVN0cmVhbUNlbnRlckJsYWNrQmVycnk6Omdl
dE1lZAogICAgIHJldHVybiBmYWxzZTsKIH0KIAotdm9pZCBNZWRpYVN0cmVhbUNlbnRlckJsYWNr
QmVycnk6OmRpZFNldE1lZGlhU3RyZWFtVHJhY2tFbmFibGVkKE1lZGlhU3RyZWFtU291cmNlKikK
LXsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotfQotCi1ib29sIE1lZGlhU3RyZWFtQ2VudGVyQmxh
Y2tCZXJyeTo6ZGlkQWRkTWVkaWFTdHJlYW1UcmFjayhNZWRpYVN0cmVhbVNvdXJjZSopCi17Ci0g
ICAgbm90SW1wbGVtZW50ZWQoKTsKLSAgICByZXR1cm4gZmFsc2U7Ci19Ci0KLWJvb2wgTWVkaWFT
dHJlYW1DZW50ZXJCbGFja0JlcnJ5OjpkaWRSZW1vdmVNZWRpYVN0cmVhbVRyYWNrKE1lZGlhU3Ry
ZWFtU291cmNlKikKLXsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotICAgIHJldHVybiBmYWxzZTsK
LX0KLQotdm9pZCBNZWRpYVN0cmVhbUNlbnRlckJsYWNrQmVycnk6OmRpZFN0b3BMb2NhbE1lZGlh
U3RyZWFtKE1lZGlhU3RyZWFtRGVzY3JpcHRvciogc3RyZWFtKQotewotICAgIGVuZExvY2FsTWVk
aWFTdHJlYW0oc3RyZWFtKTsKLX0KLQotdm9pZCBNZWRpYVN0cmVhbUNlbnRlckJsYWNrQmVycnk6
OmRpZENyZWF0ZU1lZGlhU3RyZWFtKE1lZGlhU3RyZWFtRGVzY3JpcHRvciopCi17Ci0gICAgbm90
SW1wbGVtZW50ZWQoKTsKLX0KLQogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8g
RU5BQkxFKE1FRElBX1NUUkVBTSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlh
c3RyZWFtL2JsYWNrYmVycnkvTWVkaWFTdHJlYW1DZW50ZXJCbGFja0JlcnJ5LmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vYmxhY2tiZXJyeS9NZWRp
YVN0cmVhbUNlbnRlckJsYWNrQmVycnkuaAkocmV2aXNpb24gMTU3MDE2KQorKysgU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vYmxhY2tiZXJyeS9NZWRpYVN0cmVhbUNlbnRlckJs
YWNrQmVycnkuaAkod29ya2luZyBjb3B5KQpAQCAtNTAsMTUgKzUwLDkgQEAgcHVibGljOgogICAg
IE1lZGlhU3RyZWFtQ2VudGVyQmxhY2tCZXJyeSgpOwogICAgIH5NZWRpYVN0cmVhbUNlbnRlckJs
YWNrQmVycnkoKTsKIAotICAgIC8vIE1lZGlhU3RyZWFtQ2VudGVyCiAgICAgdmlydHVhbCB2b2lk
IHZhbGlkYXRlUmVxdWVzdENvbnN0cmFpbnRzKFBhc3NSZWZQdHI8TWVkaWFTdHJlYW1DcmVhdGlv
bkNsaWVudD4sIFBhc3NSZWZQdHI8TWVkaWFDb25zdHJhaW50cz4gYXVkaW9Db25zdHJhaW50cywg
UGFzc1JlZlB0cjxNZWRpYUNvbnN0cmFpbnRzPiB2aWRlb0NvbnN0cmFpbnRzKTsKICAgICB2aXJ0
dWFsIHZvaWQgY3JlYXRlTWVkaWFTdHJlYW0oUGFzc1JlZlB0cjxNZWRpYVN0cmVhbUNyZWF0aW9u
Q2xpZW50PiwgUGFzc1JlZlB0cjxNZWRpYUNvbnN0cmFpbnRzPiBhdWRpb0NvbnN0cmFpbnRzLCBQ
YXNzUmVmUHRyPE1lZGlhQ29uc3RyYWludHM+IHZpZGVvQ29uc3RyYWludHMpOwogICAgIHZpcnR1
YWwgYm9vbCBnZXRNZWRpYVN0cmVhbVRyYWNrU291cmNlcyhQYXNzUmVmUHRyPE1lZGlhU3RyZWFt
VHJhY2tTb3VyY2VzUmVxdWVzdENsaWVudD4pIE9WRVJSSURFOwotICAgIHZpcnR1YWwgdm9pZCBk
aWRTZXRNZWRpYVN0cmVhbVRyYWNrRW5hYmxlZChNZWRpYVN0cmVhbVNvdXJjZSopIE9WRVJSSURF
OwotICAgIHZpcnR1YWwgYm9vbCBkaWRBZGRNZWRpYVN0cmVhbVRyYWNrKE1lZGlhU3RyZWFtU291
cmNlKikgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCBib29sIGRpZFJlbW92ZU1lZGlhU3RyZWFtVHJh
Y2soTWVkaWFTdHJlYW1Tb3VyY2UqKSBPVkVSUklERTsKLSAgICB2aXJ0dWFsIHZvaWQgZGlkU3Rv
cExvY2FsTWVkaWFTdHJlYW0oTWVkaWFTdHJlYW1EZXNjcmlwdG9yKikgT1ZFUlJJREU7Ci0gICAg
dmlydHVhbCB2b2lkIGRpZENyZWF0ZU1lZGlhU3RyZWFtKE1lZGlhU3RyZWFtRGVzY3JpcHRvciop
IE9WRVJSSURFOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vZ3N0cmVhbWVyL01lZGlhU3RyZWFtQ2VudGVyR1N0
cmVhbWVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0
cmVhbS9nc3RyZWFtZXIvTWVkaWFTdHJlYW1DZW50ZXJHU3RyZWFtZXIuY3BwCShyZXZpc2lvbiAx
NTcwMTYpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9nc3RyZWFtZXIv
TWVkaWFTdHJlYW1DZW50ZXJHU3RyZWFtZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNSw3ICsz
NSwxMSBAQAogCiAjaW5jbHVkZSAiTWVkaWFTdHJlYW1DZW50ZXJHU3RyZWFtZXIuaCIKIAorI2lu
Y2x1ZGUgIk1lZGlhU3RyZWFtQ3JlYXRpb25DbGllbnQuaCIKICNpbmNsdWRlICJNZWRpYVN0cmVh
bURlc2NyaXB0b3IuaCIKKyNpbmNsdWRlICJNZWRpYVN0cmVhbVNvdXJjZUNhcGFiaWxpdGllcy5o
IgorI2luY2x1ZGUgIk1lZGlhU3RyZWFtU291cmNlU3RhdGVzLmgiCisjaW5jbHVkZSAiTWVkaWFT
dHJlYW1UcmFja1NvdXJjZXNSZXF1ZXN0Q2xpZW50LmgiCiAjaW5jbHVkZSAiTm90SW1wbGVtZW50
ZWQuaCIKICNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgogCkBAIC03MiwzMyArNzYsNiBAQCBi
b29sIE1lZGlhU3RyZWFtQ2VudGVyR1N0cmVhbWVyOjpnZXRNZWRpCiAgICAgcmV0dXJuIGZhbHNl
OwogfQogCi12b2lkIE1lZGlhU3RyZWFtQ2VudGVyR1N0cmVhbWVyOjpkaWRTZXRNZWRpYVN0cmVh
bVRyYWNrRW5hYmxlZChNZWRpYVN0cmVhbVNvdXJjZSopCi17Ci0gICAgbm90SW1wbGVtZW50ZWQo
KTsKLX0KLQotYm9vbCBNZWRpYVN0cmVhbUNlbnRlckdTdHJlYW1lcjo6ZGlkQWRkTWVkaWFTdHJl
YW1UcmFjayhNZWRpYVN0cmVhbVNvdXJjZSopCi17Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLSAg
ICByZXR1cm4gZmFsc2U7Ci19Ci0KLWJvb2wgTWVkaWFTdHJlYW1DZW50ZXJHU3RyZWFtZXI6OmRp
ZFJlbW92ZU1lZGlhU3RyZWFtVHJhY2soTWVkaWFTdHJlYW1Tb3VyY2UqKQotewotICAgIG5vdElt
cGxlbWVudGVkKCk7Ci0gICAgcmV0dXJuIGZhbHNlOwotfQotCi12b2lkIE1lZGlhU3RyZWFtQ2Vu
dGVyR1N0cmVhbWVyOjpkaWRTdG9wTG9jYWxNZWRpYVN0cmVhbShNZWRpYVN0cmVhbURlc2NyaXB0
b3IqIHN0cmVhbSkKLXsKLSAgICBlbmRMb2NhbE1lZGlhU3RyZWFtKHN0cmVhbSk7Ci19Ci0KLXZv
aWQgTWVkaWFTdHJlYW1DZW50ZXJHU3RyZWFtZXI6OmRpZENyZWF0ZU1lZGlhU3RyZWFtKE1lZGlh
U3RyZWFtRGVzY3JpcHRvciopCi17Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLX0KLQogfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5BQkxFKE1FRElBX1NUUkVBTSkKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2dzdHJlYW1lci9NZWRpYVN0cmVh
bUNlbnRlckdTdHJlYW1lci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21lZGlhc3RyZWFtL2dzdHJlYW1lci9NZWRpYVN0cmVhbUNlbnRlckdTdHJlYW1lci5oCShyZXZp
c2lvbiAxNTcwMTYpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9nc3Ry
ZWFtZXIvTWVkaWFTdHJlYW1DZW50ZXJHU3RyZWFtZXIuaAkod29ya2luZyBjb3B5KQpAQCAtNTAs
MTUgKzUwLDkgQEAgcHVibGljOgogICAgIE1lZGlhU3RyZWFtQ2VudGVyR1N0cmVhbWVyKCk7CiAg
ICAgfk1lZGlhU3RyZWFtQ2VudGVyR1N0cmVhbWVyKCk7CiAKLSAgICAvLyBNZWRpYVN0cmVhbUNl
bnRlcgogICAgIHZpcnR1YWwgdm9pZCB2YWxpZGF0ZVJlcXVlc3RDb25zdHJhaW50cyhQYXNzUmVm
UHRyPE1lZGlhU3RyZWFtQ3JlYXRpb25DbGllbnQ+LCBQYXNzUmVmUHRyPE1lZGlhQ29uc3RyYWlu
dHM+IGF1ZGlvQ29uc3RyYWludHMsIFBhc3NSZWZQdHI8TWVkaWFDb25zdHJhaW50cz4gdmlkZW9D
b25zdHJhaW50cyk7CiAgICAgdmlydHVhbCB2b2lkIGNyZWF0ZU1lZGlhU3RyZWFtKFBhc3NSZWZQ
dHI8TWVkaWFTdHJlYW1DcmVhdGlvbkNsaWVudD4sIFBhc3NSZWZQdHI8TWVkaWFDb25zdHJhaW50
cz4gYXVkaW9Db25zdHJhaW50cywgUGFzc1JlZlB0cjxNZWRpYUNvbnN0cmFpbnRzPiB2aWRlb0Nv
bnN0cmFpbnRzKTsKICAgICB2aXJ0dWFsIGJvb2wgZ2V0TWVkaWFTdHJlYW1UcmFja1NvdXJjZXMo
UGFzc1JlZlB0cjxNZWRpYVN0cmVhbVRyYWNrU291cmNlc1JlcXVlc3RDbGllbnQ+KSBPVkVSUklE
RTsKLSAgICB2aXJ0dWFsIHZvaWQgZGlkU2V0TWVkaWFTdHJlYW1UcmFja0VuYWJsZWQoTWVkaWFT
dHJlYW1Tb3VyY2UqKSBPVkVSUklERTsKLSAgICB2aXJ0dWFsIGJvb2wgZGlkQWRkTWVkaWFTdHJl
YW1UcmFjayhNZWRpYVN0cmVhbVNvdXJjZSopIE9WRVJSSURFOwotICAgIHZpcnR1YWwgYm9vbCBk
aWRSZW1vdmVNZWRpYVN0cmVhbVRyYWNrKE1lZGlhU3RyZWFtU291cmNlKikgT1ZFUlJJREU7Ci0g
ICAgdmlydHVhbCB2b2lkIGRpZFN0b3BMb2NhbE1lZGlhU3RyZWFtKE1lZGlhU3RyZWFtRGVzY3Jp
cHRvciopIE9WRVJSSURFOwotICAgIHZpcnR1YWwgdm9pZCBkaWRDcmVhdGVNZWRpYVN0cmVhbShN
ZWRpYVN0cmVhbURlc2NyaXB0b3IqKSBPVkVSUklERTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9NZWRp
YVN0cmVhbUNlbnRlck1hYy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWVkaWFzdHJlYW0vbWFjL01lZGlhU3RyZWFtQ2VudGVyTWFjLmNwcAkocmV2aXNpb24gMTU3
MDE2KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL01lZGlhU3Ry
ZWFtQ2VudGVyTWFjLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzMsMzMgKzczLDYgQEAgYm9vbCBN
ZWRpYVN0cmVhbUNlbnRlck1hYzo6Z2V0TWVkaWFTdHJlYQogICAgIHJldHVybiBmYWxzZTsKIH0K
IAotdm9pZCBNZWRpYVN0cmVhbUNlbnRlck1hYzo6ZGlkU2V0TWVkaWFTdHJlYW1UcmFja0VuYWJs
ZWQoTWVkaWFTdHJlYW1Tb3VyY2UqKQotewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci19Ci0KLWJv
b2wgTWVkaWFTdHJlYW1DZW50ZXJNYWM6OmRpZEFkZE1lZGlhU3RyZWFtVHJhY2soTWVkaWFTdHJl
YW1Tb3VyY2UqKQotewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci0gICAgcmV0dXJuIGZhbHNlOwot
fQotCi1ib29sIE1lZGlhU3RyZWFtQ2VudGVyTWFjOjpkaWRSZW1vdmVNZWRpYVN0cmVhbVRyYWNr
KE1lZGlhU3RyZWFtU291cmNlKikKLXsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotICAgIHJldHVy
biBmYWxzZTsKLX0KLQotdm9pZCBNZWRpYVN0cmVhbUNlbnRlck1hYzo6ZGlkU3RvcExvY2FsTWVk
aWFTdHJlYW0oTWVkaWFTdHJlYW1EZXNjcmlwdG9yKiBzdHJlYW0pCi17Ci0gICAgZW5kTG9jYWxN
ZWRpYVN0cmVhbShzdHJlYW0pOwotfQotCi12b2lkIE1lZGlhU3RyZWFtQ2VudGVyTWFjOjpkaWRD
cmVhdGVNZWRpYVN0cmVhbShNZWRpYVN0cmVhbURlc2NyaXB0b3IqKQotewotICAgIG5vdEltcGxl
bWVudGVkKCk7Ci19Ci0KIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEVOQUJM
RShNRURJQV9TVFJFQU0pCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVh
bS9tYWMvTWVkaWFTdHJlYW1DZW50ZXJNYWMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvTWVkaWFTdHJlYW1DZW50ZXJNYWMuaAkocmV2aXNp
b24gMTU3MDE2KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL01l
ZGlhU3RyZWFtQ2VudGVyTWFjLmgJKHdvcmtpbmcgY29weSkKQEAgLTM1LDI5ICszNSwyMCBAQAog
CiAjaW5jbHVkZSAiTWVkaWFTdHJlYW1DZW50ZXIuaCIKIAorI2luY2x1ZGUgIk1lZGlhU3RyZWFt
U291cmNlLmgiCiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvdGV4
dC9XVEZTdHJpbmcuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBNZWRpYVN0cmVh
bURlc2NyaXB0b3I7Ci1jbGFzcyBNZWRpYVN0cmVhbVNvdXJjZTsKLWNsYXNzIE1lZGlhU3RyZWFt
U291cmNlc1F1ZXJ5Q2xpZW50OwotCiBjbGFzcyBNZWRpYVN0cmVhbUNlbnRlck1hYyBGSU5BTCA6
IHB1YmxpYyBNZWRpYVN0cmVhbUNlbnRlciB7CiBwdWJsaWM6CiAgICAgTWVkaWFTdHJlYW1DZW50
ZXJNYWMoKTsKICAgICB+TWVkaWFTdHJlYW1DZW50ZXJNYWMoKTsKIAotICAgIC8vIE1lZGlhU3Ry
ZWFtQ2VudGVyCiAgICAgdmlydHVhbCB2b2lkIHZhbGlkYXRlUmVxdWVzdENvbnN0cmFpbnRzKFBh
c3NSZWZQdHI8TWVkaWFTdHJlYW1DcmVhdGlvbkNsaWVudD4sIFBhc3NSZWZQdHI8TWVkaWFDb25z
dHJhaW50cz4gYXVkaW9Db25zdHJhaW50cywgUGFzc1JlZlB0cjxNZWRpYUNvbnN0cmFpbnRzPiB2
aWRlb0NvbnN0cmFpbnRzKTsKICAgICB2aXJ0dWFsIHZvaWQgY3JlYXRlTWVkaWFTdHJlYW0oUGFz
c1JlZlB0cjxNZWRpYVN0cmVhbUNyZWF0aW9uQ2xpZW50PiwgUGFzc1JlZlB0cjxNZWRpYUNvbnN0
cmFpbnRzPiBhdWRpb0NvbnN0cmFpbnRzLCBQYXNzUmVmUHRyPE1lZGlhQ29uc3RyYWludHM+IHZp
ZGVvQ29uc3RyYWludHMpOwogICAgIHZpcnR1YWwgYm9vbCBnZXRNZWRpYVN0cmVhbVRyYWNrU291
cmNlcyhQYXNzUmVmUHRyPE1lZGlhU3RyZWFtVHJhY2tTb3VyY2VzUmVxdWVzdENsaWVudD4pIE9W
RVJSSURFOwotICAgIHZpcnR1YWwgdm9pZCBkaWRTZXRNZWRpYVN0cmVhbVRyYWNrRW5hYmxlZChN
ZWRpYVN0cmVhbVNvdXJjZSopIE9WRVJSSURFOwotICAgIHZpcnR1YWwgYm9vbCBkaWRBZGRNZWRp
YVN0cmVhbVRyYWNrKE1lZGlhU3RyZWFtU291cmNlKikgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCBi
b29sIGRpZFJlbW92ZU1lZGlhU3RyZWFtVHJhY2soTWVkaWFTdHJlYW1Tb3VyY2UqKSBPVkVSUklE
RTsKLSAgICB2aXJ0dWFsIHZvaWQgZGlkU3RvcExvY2FsTWVkaWFTdHJlYW0oTWVkaWFTdHJlYW1E
ZXNjcmlwdG9yKikgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCB2b2lkIGRpZENyZWF0ZU1lZGlhU3Ry
ZWFtKE1lZGlhU3RyZWFtRGVzY3JpcHRvciopIE9WRVJSSURFOwogfTsKIAogfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9Nb2NrTWVkaWFT
dHJlYW1DZW50ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21v
Y2svTW9ja01lZGlhU3RyZWFtQ2VudGVyLmNwcAkocmV2aXNpb24gMTU3MDE2KQorKysgU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbW9jay9Nb2NrTWVkaWFTdHJlYW1DZW50ZXIuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0zMiwxMiArMzIsOTcgQEAKICNpbmNsdWRlICJNZWRpYVN0cmVhbS5oIgogI2lu
Y2x1ZGUgIk1lZGlhU3RyZWFtQ3JlYXRpb25DbGllbnQuaCIKICNpbmNsdWRlICJNZWRpYVN0cmVh
bURlc2NyaXB0b3IuaCIKKyNpbmNsdWRlICJNZWRpYVN0cmVhbVNvdXJjZS5oIgorI2luY2x1ZGUg
Ik1lZGlhU3RyZWFtU291cmNlQ2FwYWJpbGl0aWVzLmgiCiAjaW5jbHVkZSAiTWVkaWFTdHJlYW1U
cmFjay5oIgogI2luY2x1ZGUgIk1lZGlhU3RyZWFtVHJhY2tTb3VyY2VzUmVxdWVzdENsaWVudC5o
IgotI2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCisjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJv
eWVkLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgTW9ja1NvdXJjZSA6IHB1Ymxp
YyBNZWRpYVN0cmVhbVNvdXJjZSB7CitwdWJsaWM6CisgICAgTW9ja1NvdXJjZShjb25zdCBBdG9t
aWNTdHJpbmcmIGlkLCBjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUsIE1lZGlhU3RyZWFtU291cmNl
OjpUeXBlIHR5cGUpCisgICAgICAgIDogTWVkaWFTdHJlYW1Tb3VyY2UoaWQsIHR5cGUsIG5hbWUp
CisgICAgeworICAgIH0KKworICAgIHZpcnR1YWwgfk1vY2tTb3VyY2UoKSB7IH0KKworICAgIHZp
cnR1YWwgUGFzc1JlZlB0cjxNZWRpYVN0cmVhbVNvdXJjZUNhcGFiaWxpdGllcz4gY2FwYWJpbGl0
aWVzKCkgY29uc3QgeyByZXR1cm4gbV9jYXBhYmlsaXRpZXM7IH0KKyAgICB2aXJ0dWFsIGNvbnN0
IE1lZGlhU3RyZWFtU291cmNlU3RhdGVzJiBzdGF0ZXMoKSB7IHJldHVybiBtX2N1cnJlbnRTdGF0
ZXM7IH0KKworICAgIFJlZlB0cjxNZWRpYVN0cmVhbVNvdXJjZUNhcGFiaWxpdGllcz4gbV9jYXBh
YmlsaXRpZXM7CisgICAgTWVkaWFTdHJlYW1Tb3VyY2VTdGF0ZXMgbV9jdXJyZW50U3RhdGVzOwor
fTsKKyAgICAKK3R5cGVkZWYgSGFzaE1hcDxTdHJpbmcsIFJlZlB0cjxNb2NrU291cmNlPj4gTW9j
a1NvdXJjZU1hcDsKKworc3RhdGljIE1vY2tTb3VyY2VNYXAmIG1vY2tTb3VyY2VNYXAoKQorewor
ICAgIERFRklORV9TVEFUSUNfTE9DQUwoTW9ja1NvdXJjZU1hcCwgbW9ja1NvdXJjZU1hcCwgKCkp
OworICAgIHJldHVybiBtb2NrU291cmNlTWFwOworfQorCitzdGF0aWMgY29uc3QgQXRvbWljU3Ry
aW5nJiBtb2NrQXVkaW9Tb3VyY2VJRCgpCit7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEF0
b21pY1N0cmluZz4gaWQoIjIzOWMyNGIxLTJiMTUtMTFlMy04MjI0LTA4MDAyMDBjOWE2NiIsIEF0
b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOworICAgIHJldHVybiBpZDsKK30KKwor
c3RhdGljIGNvbnN0IEF0b21pY1N0cmluZyYgbW9ja1ZpZGVvU291cmNlSUQoKQoreworICAgIHN0
YXRpYyBOZXZlckRlc3Ryb3llZDxBdG9taWNTdHJpbmc+IGlkKCIyMzljMjRiMC0yYjE1LTExZTMt
ODIyNC0wODAwMjAwYzlhNjYiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsK
KyAgICByZXR1cm4gaWQ7Cit9CisKK3N0YXRpYyB2b2lkIGluaXRpYWxpemVNb2NrU291cmNlcygp
Cit7CisgICAgUmVmUHRyPE1vY2tTb3VyY2U+IG1vY2tTb3VyY2UxID0gYWRvcHRSZWYobmV3IE1v
Y2tTb3VyY2UobW9ja1ZpZGVvU291cmNlSUQoKSwgIk1vY2sgdmlkZW8gZGV2aWNlIiwgTWVkaWFT
dHJlYW1Tb3VyY2U6OlZpZGVvKSk7CisgICAgbW9ja1NvdXJjZTEtPm1fY2FwYWJpbGl0aWVzID0g
TWVkaWFTdHJlYW1Tb3VyY2VDYXBhYmlsaXRpZXM6OmNyZWF0ZSgpOworICAgIG1vY2tTb3VyY2Ux
LT5tX2NhcGFiaWxpdGllcy0+c2V0U291cmNlSWQobW9ja1NvdXJjZTEtPmlkKCkpOworICAgIG1v
Y2tTb3VyY2UxLT5tX2NhcGFiaWxpdGllcy0+YWRkU291cmNlVHlwZShNZWRpYVN0cmVhbVNvdXJj
ZVN0YXRlczo6Q2FtZXJhKTsKKyAgICBtb2NrU291cmNlMS0+bV9jYXBhYmlsaXRpZXMtPmFkZFNv
dXJjZVR5cGUoTWVkaWFTdHJlYW1Tb3VyY2VTdGF0ZXM6Ok1pY3JvcGhvbmUpOworICAgIG1vY2tT
b3VyY2UxLT5tX2NhcGFiaWxpdGllcy0+YWRkRmFjaW5nTW9kZShNZWRpYVN0cmVhbVNvdXJjZVN0
YXRlczo6VXNlcik7CisgICAgbW9ja1NvdXJjZTEtPm1fY2FwYWJpbGl0aWVzLT5hZGRGYWNpbmdN
b2RlKE1lZGlhU3RyZWFtU291cmNlU3RhdGVzOjpFbnZpcm9ubWVudCk7CisgICAgbW9ja1NvdXJj
ZTEtPm1fY2FwYWJpbGl0aWVzLT5zZXRXaWR0aFJhbmdlKE1lZGlhU3RyZWFtU291cmNlQ2FwYWJp
bGl0eVJhbmdlKDMyMFVMLCAxOTIwVUwsIHRydWUpKTsKKyAgICBtb2NrU291cmNlMS0+bV9jYXBh
YmlsaXRpZXMtPnNldEhlaWdodFJhbmdlKE1lZGlhU3RyZWFtU291cmNlQ2FwYWJpbGl0eVJhbmdl
KDI0MFVMLCAxMDgwVUwsIHRydWUpKTsKKyAgICBtb2NrU291cmNlMS0+bV9jYXBhYmlsaXRpZXMt
PnNldEZyYW1lUmF0ZVJhbmdlKE1lZGlhU3RyZWFtU291cmNlQ2FwYWJpbGl0eVJhbmdlKDE1LjBm
LCA2MC4wZiwgdHJ1ZSkpOworICAgIG1vY2tTb3VyY2UxLT5tX2NhcGFiaWxpdGllcy0+c2V0QXNw
ZWN0UmF0aW9SYW5nZShNZWRpYVN0cmVhbVNvdXJjZUNhcGFiaWxpdHlSYW5nZSg0IC8gMy4wZiwg
MTYgLyA5LjBmLCB0cnVlKSk7CisgICAgbW9ja1NvdXJjZTEtPm1fY2FwYWJpbGl0aWVzLT5zZXRW
b2x1bWVSYW5nZShNZWRpYVN0cmVhbVNvdXJjZUNhcGFiaWxpdHlSYW5nZSgxMFVMLCA5MFVMLCB0
cnVlKSk7CisKKyAgICBtb2NrU291cmNlMS0+bV9jdXJyZW50U3RhdGVzLnNvdXJjZVR5cGUgPSBN
ZWRpYVN0cmVhbVNvdXJjZVN0YXRlczo6Q2FtZXJhOworICAgIG1vY2tTb3VyY2UxLT5tX2N1cnJl
bnRTdGF0ZXMuc291cmNlSWQgPSBtb2NrU291cmNlMS0+aWQoKTsKKyAgICBtb2NrU291cmNlMS0+
bV9jdXJyZW50U3RhdGVzLmZhY2luZ01vZGUgPSBNZWRpYVN0cmVhbVNvdXJjZVN0YXRlczo6VXNl
cjsKKyAgICBtb2NrU291cmNlMS0+bV9jdXJyZW50U3RhdGVzLndpZHRoID0gMTkyMDsKKyAgICBt
b2NrU291cmNlMS0+bV9jdXJyZW50U3RhdGVzLmhlaWdodCA9IDEwODA7CisgICAgbW9ja1NvdXJj
ZTEtPm1fY3VycmVudFN0YXRlcy5mcmFtZVJhdGUgPSAzMDsKKyAgICBtb2NrU291cmNlMS0+bV9j
dXJyZW50U3RhdGVzLmFzcGVjdFJhdGlvID0gMTYgLyA5LjBmOworICAgIG1vY2tTb3VyY2UxLT5t
X2N1cnJlbnRTdGF0ZXMudm9sdW1lID0gNzA7CisgICAgbW9ja1NvdXJjZU1hcCgpLmFkZChtb2Nr
U291cmNlMS0+aWQoKSwgbW9ja1NvdXJjZTEucmVsZWFzZSgpKTsKKworICAgIFJlZlB0cjxNb2Nr
U291cmNlPiBtb2NrU291cmNlMiA9IGFkb3B0UmVmKG5ldyBNb2NrU291cmNlKG1vY2tBdWRpb1Nv
dXJjZUlEKCksICJNb2NrIGF1ZGlvIGRldmljZSIsIE1lZGlhU3RyZWFtU291cmNlOjpBdWRpbykp
OworICAgIG1vY2tTb3VyY2UyLT5tX2NhcGFiaWxpdGllcyA9IE1lZGlhU3RyZWFtU291cmNlQ2Fw
YWJpbGl0aWVzOjpjcmVhdGUoKTsKKyAgICBtb2NrU291cmNlMi0+bV9jYXBhYmlsaXRpZXMtPnNl
dFNvdXJjZUlkKG1vY2tTb3VyY2UyLT5pZCgpKTsKKyAgICBtb2NrU291cmNlMi0+bV9jYXBhYmls
aXRpZXMtPnNldFZvbHVtZVJhbmdlKE1lZGlhU3RyZWFtU291cmNlQ2FwYWJpbGl0eVJhbmdlKDBV
TCwgMTAwVUwsIHRydWUpKTsKKworICAgIG1vY2tTb3VyY2UyLT5tX2N1cnJlbnRTdGF0ZXMuc291
cmNlVHlwZSA9IE1lZGlhU3RyZWFtU291cmNlU3RhdGVzOjpNaWNyb3Bob25lOworICAgIG1vY2tT
b3VyY2UyLT5tX2N1cnJlbnRTdGF0ZXMuc291cmNlSWQgPSBtb2NrU291cmNlMi0+aWQoKTsKKyAg
ICBtb2NrU291cmNlMi0+bV9jdXJyZW50U3RhdGVzLnZvbHVtZSA9IDUwOworICAgIG1vY2tTb3Vy
Y2VNYXAoKS5hZGQobW9ja1NvdXJjZTItPmlkKCksIG1vY2tTb3VyY2UyLnJlbGVhc2UoKSk7Cit9
CisKK3ZvaWQgTW9ja01lZGlhU3RyZWFtQ2VudGVyOjpyZWdpc3Rlck1vY2tNZWRpYVN0cmVhbUNl
bnRlcigpCit7CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChNb2NrTWVkaWFTdHJlYW1DZW50ZXIs
IGNlbnRlciwgKCkpOworICAgIHN0YXRpYyBib29sIHJlZ2lzdGVyZWQgPSBmYWxzZTsKKyAgICBp
ZiAoIXJlZ2lzdGVyZWQpIHsKKyAgICAgICAgcmVnaXN0ZXJlZCA9IHRydWU7CisgICAgICAgIE1l
ZGlhU3RyZWFtQ2VudGVyOjpzZXRTaGFyZWRTdHJlYW1DZW50ZXIoJmNlbnRlcik7CisgICAgICAg
IGluaXRpYWxpemVNb2NrU291cmNlcygpOworICAgIH0KK30KKwogc3RhdGljIGJvb2wgaXNTdXBw
b3J0ZWRNb2NrQ29uc3RyYWludChjb25zdCBTdHJpbmcmIGNvbnN0cmFpbnROYW1lKQogewogICAg
IHJldHVybiBub3RGb3VuZCAhPSBjb25zdHJhaW50TmFtZS5maW5kKCJfYW5kX3N1cHBvcnRlZF8i
KTsKQEAgLTc1LDE2ICsxNjAsNiBAQCBzdGF0aWMgU3RyaW5nIHZlcmlmeUNvbnN0cmFpbnRzKE1l
ZGlhQ29uCiAgICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7CiB9CiAKLXZvaWQgTW9ja01lZGlhU3Ry
ZWFtQ2VudGVyOjpyZWdpc3Rlck1vY2tNZWRpYVN0cmVhbUNlbnRlcigpCi17Ci0gICAgREVGSU5F
X1NUQVRJQ19MT0NBTChNb2NrTWVkaWFTdHJlYW1DZW50ZXIsIGNlbnRlciwgKCkpOwotICAgIHN0
YXRpYyBib29sIHJlZ2lzdGVyZWQgPSBmYWxzZTsKLSAgICBpZiAoIXJlZ2lzdGVyZWQpIHsKLSAg
ICAgICAgcmVnaXN0ZXJlZCA9IHRydWU7Ci0gICAgICAgIE1lZGlhU3RyZWFtQ2VudGVyOjpzZXRT
aGFyZWRTdHJlYW1DZW50ZXIoJmNlbnRlcik7Ci0gICAgfQotfQotCiB2b2lkIE1vY2tNZWRpYVN0
cmVhbUNlbnRlcjo6dmFsaWRhdGVSZXF1ZXN0Q29uc3RyYWludHMoUGFzc1JlZlB0cjxNZWRpYVN0
cmVhbUNyZWF0aW9uQ2xpZW50PiBwcnBRdWVyeUNsaWVudCwgUGFzc1JlZlB0cjxNZWRpYUNvbnN0
cmFpbnRzPiBhdWRpb0NvbnN0cmFpbnRzLCBQYXNzUmVmUHRyPE1lZGlhQ29uc3RyYWludHM+IHZp
ZGVvQ29uc3RyYWludHMpCiB7CiAgICAgUmVmUHRyPE1lZGlhU3RyZWFtQ3JlYXRpb25DbGllbnQ+
IGNsaWVudCA9IHBycFF1ZXJ5Q2xpZW50OwpAQCAtMTE4LDYgKzE5Myw3IEBAIHZvaWQgTW9ja01l
ZGlhU3RyZWFtQ2VudGVyOjpjcmVhdGVNZWRpYVMKICAgICAKICAgICBWZWN0b3I8UmVmUHRyPE1l
ZGlhU3RyZWFtU291cmNlPj4gYXVkaW9Tb3VyY2VzOwogICAgIFZlY3RvcjxSZWZQdHI8TWVkaWFT
dHJlYW1Tb3VyY2U+PiB2aWRlb1NvdXJjZXM7CisgICAgTW9ja1NvdXJjZU1hcCYgbWFwID0gbW9j
a1NvdXJjZU1hcCgpOwogCiAgICAgaWYgKGF1ZGlvQ29uc3RyYWludHMpIHsKICAgICAgICAgU3Ry
aW5nIGludmFsaWRRdWVyeSA9IHZlcmlmeUNvbnN0cmFpbnRzKGF1ZGlvQ29uc3RyYWludHMuZ2V0
KCkpOwpAQCAtMTI3LDcgKzIwMywxMSBAQCB2b2lkIE1vY2tNZWRpYVN0cmVhbUNlbnRlcjo6Y3Jl
YXRlTWVkaWFTCiAgICAgICAgIH0KIAogICAgICAgICBpZiAoYXVkaW9Db25zdHJhaW50cykgewot
ICAgICAgICAgICAgUmVmUHRyPE1lZGlhU3RyZWFtU291cmNlPiBhdWRpb1NvdXJjZSA9IE1lZGlh
U3RyZWFtU291cmNlOjpjcmVhdGUoZW1wdHlTdHJpbmcoKSwgTWVkaWFTdHJlYW1Tb3VyY2U6OkF1
ZGlvLCAiTW9jayBhdWRpbyBkZXZpY2UiKTsKKyAgICAgICAgICAgIE1vY2tTb3VyY2VNYXA6Oml0
ZXJhdG9yIGl0ID0gbWFwLmZpbmQobW9ja0F1ZGlvU291cmNlSUQoKSk7CisgICAgICAgICAgICBB
U1NFUlQoaXQgIT0gbWFwLmVuZCgpKTsKKworICAgICAgICAgICAgUmVmUHRyPE1lZGlhU3RyZWFt
U291cmNlPiBhdWRpb1NvdXJjZSA9IGl0LT52YWx1ZTsKKyAgICAgICAgICAgIGF1ZGlvU291cmNl
LT5yZXNldCgpOwogICAgICAgICAgICAgYXVkaW9Tb3VyY2UtPnNldFJlYWR5U3RhdGUoTWVkaWFT
dHJlYW1Tb3VyY2U6OkxpdmUpOwogICAgICAgICAgICAgYXVkaW9Tb3VyY2VzLmFwcGVuZChhdWRp
b1NvdXJjZS5yZWxlYXNlKCkpOwogICAgICAgICB9CkBAIC0xNDEsNyArMjIxLDExIEBAIHZvaWQg
TW9ja01lZGlhU3RyZWFtQ2VudGVyOjpjcmVhdGVNZWRpYVMKICAgICAgICAgfQogCiAgICAgICAg
IGlmICh2aWRlb0NvbnN0cmFpbnRzKSB7Ci0gICAgICAgICAgICBSZWZQdHI8TWVkaWFTdHJlYW1T
b3VyY2U+IHZpZGVvU291cmNlID0gTWVkaWFTdHJlYW1Tb3VyY2U6OmNyZWF0ZShlbXB0eVN0cmlu
ZygpLCBNZWRpYVN0cmVhbVNvdXJjZTo6VmlkZW8sICJNb2NrIHZpZGVvIGRldmljZSIpOworICAg
ICAgICAgICAgTW9ja1NvdXJjZU1hcDo6aXRlcmF0b3IgaXQgPSBtYXAuZmluZChtb2NrVmlkZW9T
b3VyY2VJRCgpKTsKKyAgICAgICAgICAgIEFTU0VSVChpdCAhPSBtYXAuZW5kKCkpOworCisgICAg
ICAgICAgICBSZWZQdHI8TWVkaWFTdHJlYW1Tb3VyY2U+IHZpZGVvU291cmNlID0gaXQtPnZhbHVl
OworICAgICAgICAgICAgdmlkZW9Tb3VyY2UtPnJlc2V0KCk7CiAgICAgICAgICAgICB2aWRlb1Nv
dXJjZS0+c2V0UmVhZHlTdGF0ZShNZWRpYVN0cmVhbVNvdXJjZTo6TGl2ZSk7CiAgICAgICAgICAg
ICB2aWRlb1NvdXJjZXMuYXBwZW5kKHZpZGVvU291cmNlLnJlbGVhc2UoKSk7CiAgICAgICAgIH0K
QEAgLTE1MywzOSArMjM3LDIwIEBAIHZvaWQgTW9ja01lZGlhU3RyZWFtQ2VudGVyOjpjcmVhdGVN
ZWRpYVMKIGJvb2wgTW9ja01lZGlhU3RyZWFtQ2VudGVyOjpnZXRNZWRpYVN0cmVhbVRyYWNrU291
cmNlcyhQYXNzUmVmUHRyPE1lZGlhU3RyZWFtVHJhY2tTb3VyY2VzUmVxdWVzdENsaWVudD4gcHJw
Q2xpZW50KQogewogICAgIFJlZlB0cjxNZWRpYVN0cmVhbVRyYWNrU291cmNlc1JlcXVlc3RDbGll
bnQ+IHJlcXVlc3RDbGllbnQgPSBwcnBDbGllbnQ7Ci0gICAgVmVjdG9yPFJlZlB0cjxUcmFja1Nv
dXJjZUluZm8+PiBzb3VyY2VzKDIpOworICAgIFZlY3RvcjxSZWZQdHI8VHJhY2tTb3VyY2VJbmZv
Pj4gc291cmNlczsKIAotICAgIHNvdXJjZXNbMF0gPSBUcmFja1NvdXJjZUluZm86OmNyZWF0ZSgi
TW9ja19hdWRpb19kZXZpY2VfSUQiLCBUcmFja1NvdXJjZUluZm86OkF1ZGlvLCAiTW9jayBhdWRp
byBkZXZpY2UiKTsKLSAgICBzb3VyY2VzWzFdID0gVHJhY2tTb3VyY2VJbmZvOjpjcmVhdGUoIk1v
Y2tfdmlkZW9fZGV2aWNlX0lEIiwgVHJhY2tTb3VyY2VJbmZvOjpWaWRlbywgIk1vY2sgdmlkZW8g
ZGV2aWNlIik7Ci0KLSAgICByZXF1ZXN0Q2xpZW50LT5kaWRDb21wbGV0ZVJlcXVlc3Qoc291cmNl
cyk7Ci0gICAgcmV0dXJuIHRydWU7Ci19CisgICAgTW9ja1NvdXJjZU1hcCYgbWFwID0gbW9ja1Nv
dXJjZU1hcCgpOworICAgIE1vY2tTb3VyY2VNYXA6Oml0ZXJhdG9yIGVuZCA9IG1hcC5lbmQoKTsK
KyAgICBmb3IgKE1vY2tTb3VyY2VNYXA6Oml0ZXJhdG9yIGl0ID0gbWFwLmJlZ2luKCk7IGl0ICE9
IGVuZDsgKytpdCkgeworICAgICAgICBNb2NrU291cmNlKiBzb3VyY2UgPSBpdC0+dmFsdWUuZ2V0
KCk7CiAKLXZvaWQgTW9ja01lZGlhU3RyZWFtQ2VudGVyOjpkaWRTZXRNZWRpYVN0cmVhbVRyYWNr
RW5hYmxlZChNZWRpYVN0cmVhbVNvdXJjZSogc291cmNlKQotewotICAgIHNvdXJjZS0+c2V0UmVh
ZHlTdGF0ZShNZWRpYVN0cmVhbVNvdXJjZTo6TGl2ZSk7Ci19Ci0KLWJvb2wgTW9ja01lZGlhU3Ry
ZWFtQ2VudGVyOjpkaWRBZGRNZWRpYVN0cmVhbVRyYWNrKE1lZGlhU3RyZWFtU291cmNlKikKLXsK
LSAgICByZXR1cm4gdHJ1ZTsKLX0KKyAgICAgICAgc291cmNlc1swXSA9IFRyYWNrU291cmNlSW5m
bzo6Y3JlYXRlKHNvdXJjZS0+aWQoKSwgc291cmNlLT50eXBlKCkgPT0gTWVkaWFTdHJlYW1Tb3Vy
Y2U6OlZpZGVvID8gVHJhY2tTb3VyY2VJbmZvOjpWaWRlbyA6IFRyYWNrU291cmNlSW5mbzo6QXVk
aW8sIHNvdXJjZS0+bmFtZSgpKTsKKyAgICB9CiAKLWJvb2wgTW9ja01lZGlhU3RyZWFtQ2VudGVy
OjpkaWRSZW1vdmVNZWRpYVN0cmVhbVRyYWNrKE1lZGlhU3RyZWFtU291cmNlKikKLXsKKyAgICBy
ZXF1ZXN0Q2xpZW50LT5kaWRDb21wbGV0ZVJlcXVlc3Qoc291cmNlcyk7CiAgICAgcmV0dXJuIHRy
dWU7CiB9CiAKLXZvaWQgTW9ja01lZGlhU3RyZWFtQ2VudGVyOjpkaWRTdG9wTG9jYWxNZWRpYVN0
cmVhbShNZWRpYVN0cmVhbURlc2NyaXB0b3IqIHN0cmVhbSkKLXsKLSAgICBlbmRMb2NhbE1lZGlh
U3RyZWFtKHN0cmVhbSk7Ci19Ci0KLXZvaWQgTW9ja01lZGlhU3RyZWFtQ2VudGVyOjpkaWRDcmVh
dGVNZWRpYVN0cmVhbShNZWRpYVN0cmVhbURlc2NyaXB0b3IqKQotewotfQotCiB9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBFTkFCTEUoTUVESUFfU1RSRUFNKQpJbmRleDogU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9Nb2NrTWVkaWFTdHJlYW1DZW50ZXIuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01vY2tNZWRpYVN0cmVhbUNlbnRl
ci5oCShyZXZpc2lvbiAxNTcwMTYpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01v
Y2tNZWRpYVN0cmVhbUNlbnRlci5oCSh3b3JraW5nIGNvcHkpCkBAIC00MCwxMSArNDAsNiBAQCBw
dWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHZhbGlkYXRlUmVxdWVzdENvbnN0cmFpbnRzKFBhc3NS
ZWZQdHI8TWVkaWFTdHJlYW1DcmVhdGlvbkNsaWVudD4sIFBhc3NSZWZQdHI8TWVkaWFDb25zdHJh
aW50cz4gYXVkaW9Db25zdHJhaW50cywgUGFzc1JlZlB0cjxNZWRpYUNvbnN0cmFpbnRzPiB2aWRl
b0NvbnN0cmFpbnRzKTsKICAgICB2aXJ0dWFsIHZvaWQgY3JlYXRlTWVkaWFTdHJlYW0oUGFzc1Jl
ZlB0cjxNZWRpYVN0cmVhbUNyZWF0aW9uQ2xpZW50PiwgUGFzc1JlZlB0cjxNZWRpYUNvbnN0cmFp
bnRzPiBhdWRpb0NvbnN0cmFpbnRzLCBQYXNzUmVmUHRyPE1lZGlhQ29uc3RyYWludHM+IHZpZGVv
Q29uc3RyYWludHMpOwogICAgIHZpcnR1YWwgYm9vbCBnZXRNZWRpYVN0cmVhbVRyYWNrU291cmNl
cyhQYXNzUmVmUHRyPE1lZGlhU3RyZWFtVHJhY2tTb3VyY2VzUmVxdWVzdENsaWVudD4pIE9WRVJS
SURFOwotICAgIHZpcnR1YWwgdm9pZCBkaWRTZXRNZWRpYVN0cmVhbVRyYWNrRW5hYmxlZChNZWRp
YVN0cmVhbVNvdXJjZSopIE9WRVJSSURFOwotICAgIHZpcnR1YWwgYm9vbCBkaWRBZGRNZWRpYVN0
cmVhbVRyYWNrKE1lZGlhU3RyZWFtU291cmNlKikgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCBib29s
IGRpZFJlbW92ZU1lZGlhU3RyZWFtVHJhY2soTWVkaWFTdHJlYW1Tb3VyY2UqKSBPVkVSUklERTsK
LSAgICB2aXJ0dWFsIHZvaWQgZGlkU3RvcExvY2FsTWVkaWFTdHJlYW0oTWVkaWFTdHJlYW1EZXNj
cmlwdG9yKikgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCB2b2lkIGRpZENyZWF0ZU1lZGlhU3RyZWFt
KE1lZGlhU3RyZWFtRGVzY3JpcHRvciopIE9WRVJSSURFOwogCiBwcml2YXRlOgogICAgIE1vY2tN
ZWRpYVN0cmVhbUNlbnRlcigpIHsgfQpJbmRleDogTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIExheW91dFRlc3RzL0NoYW5nZUxvZwkocmV2aXNpb24gMTU3MDE2KQorKysgTGF5
b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTIgQEAKKzIwMTMt
MTAtMDYgIEVyaWMgQ2FybHNvbiAgPGVyaWMuY2FybHNvbkBhcHBsZS5jb20+CisKKyAgICAgICAg
W01lZGlhU3RyZWFtIEFQSV0gdXBkYXRlIE1lZGlhU3RyZWFtVHJhY2sgb2JqZWN0IHRvIG1hdGNo
IHNwZWMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEy
MTk0MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICog
ZmFzdC9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVRyYWNrLmh0bWw6CisKIDIwMTMtMTAtMDYgIEZp
bGlwIFBpemxvICA8ZnBpemxvQGFwcGxlLmNvbT4KIAogICAgICAgICBVbmlmaWVkIHRlc3QgaW5m
cmFzdHJ1Y3R1cmUgdmlhIHRoZSBqc2Mgc2hlbGwKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvbWVk
aWFzdHJlYW0vTWVkaWFTdHJlYW1UcmFjay5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3Rz
L2Zhc3QvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1UcmFjay5odG1sCShyZXZpc2lvbiAxNTcwMTYp
CisrKyBMYXlvdXRUZXN0cy9mYXN0L21lZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJhY2suaHRtbAko
d29ya2luZyBjb3B5KQpAQCAtMSw3OSArMSwxNzAgQEAKIDwhRE9DVFlQRSBIVE1MIFBVQkxJQyAi
LS8vSUVURi8vRFREIEhUTUwvL0VOIj4KIDxodG1sPgotPGhlYWQ+Ci08c2NyaXB0IHNyYz0iLi4v
Li4vcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KLTwvaGVhZD4KLTxib2R5Pgot
PHAgaWQ9ImRlc2NyaXB0aW9uIj48L3A+Ci08ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KLTxzY3Jp
cHQ+Ci1kZXNjcmlwdGlvbigiVGVzdHMgTWVkaWFTdHJlYW1UcmFjayBjYWxsYmFja3MuIik7Ci0K
LS8vIE5vdGUgdGhhdCB0aGUgYmVsb3cgYmVoYXZpb3VyIGRvZXNuJ3QgcmVmbGVjdCBob3cgaXQg
d29ya3Mgb3V0c2lkZSBvZiBMYXlvdXRUZXN0cy4KLS8vIFRoZSB1bmRlcmx5aW5nIG1vY2sgaXMg
bW9kaWZpZWQgdG8gdHJpZ2dlciB0aGUgZXZlbnRzIHdoZW4gY2VydGFpbiBmdW5jdGlvbnMgYXJl
IGNhbGxlZC4KLS8vIFRoaXMgbW9kaWZpZWQgYmVoYXZpb3VyIGFsbG93cyB1cyB0byB0ZXN0IHRo
ZSBNZWRpYVN0cmVhbVRyYWNrIGNsYXNzIHByb3Blcmx5LgotCi12YXIgc3RyZWFtOwotdmFyIHRy
YWNrOwotCi1mdW5jdGlvbiBlcnJvcigpIHsKLSAgICB0ZXN0RmFpbGVkKCdTdHJlYW0gZ2VuZXJh
dGlvbiBmYWlsZWQuJyk7Ci0gICAgZmluaXNoSlNUZXN0KCk7Ci19Ci0KLWZ1bmN0aW9uIGdldFVz
ZXJNZWRpYShjb25zdHJhaW50cywgY2FsbGJhY2spIHsKLSAgICB0cnkgewotICAgICAgICBuYXZp
Z2F0b3Iud2Via2l0R2V0VXNlck1lZGlhKGNvbnN0cmFpbnRzLCBjYWxsYmFjaywgZXJyb3IpOwot
ICAgIH0gY2F0Y2ggKGUpIHsKLSAgICAgICAgdGVzdEZhaWxlZCgnd2Via2l0R2V0VXNlck1lZGlh
IHRocmV3IGV4Y2VwdGlvbiA6JyArIGUpOwotICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKLSAgICB9
Ci19Ci0KLWZ1bmN0aW9uIG9uVHJhY2tFbmRlZCgpIHsKLSAgICB0ZXN0UGFzc2VkKCdUcmFjayBv
bmVuZGVkIGNhbGxiYWNrIHN1Y2NlZWRlZC4nKTsKLQotICAgIHNob3VsZEJlRXF1YWxUb1N0cmlu
ZygndHJhY2sucmVhZHlTdGF0ZScsICdlbmRlZCcpOwotCi0gICAgZmluaXNoSlNUZXN0KCk7Ci19
Ci0KLWZ1bmN0aW9uIG9uVHJhY2tVbm11dGUoKSB7Ci0gICAgdGVzdFBhc3NlZCgnVHJhY2sgb251
bm11dGUgY2FsbGJhY2sgc3VjY2VlZGVkLicpOwotCi0gICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5n
KCd0cmFjay5yZWFkeVN0YXRlJywgJ2xpdmUnKTsKLQotICAgIHN0cmVhbS5zdG9wKCk7Ci19Ci0K
LWZ1bmN0aW9uIG9uVHJhY2tNdXRlKCkgewotICAgIHRlc3RQYXNzZWQoJ1RyYWNrIG9ubXV0ZSBj
YWxsYmFjayBzdWNjZWVkZWQuJyk7Ci0KLSAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoJ3RyYWNr
LnJlYWR5U3RhdGUnLCAnbXV0ZWQnKTsKLQotICAgIHRyYWNrLmVuYWJsZWQgPSB0cnVlOwotfQot
Ci1mdW5jdGlvbiBnb3RTdHJlYW0ocykgewotICAgIHRlc3RQYXNzZWQoJ2dldFVzZXJNZWRpYSBz
dWNjZWVkZWQuJyk7Ci0KLSAgICBzdHJlYW0gPSBzOwotICAgIHRyYWNrID0gc3RyZWFtLmdldFZp
ZGVvVHJhY2tzKClbMF07Ci0KLSAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoJ3RyYWNrLnJlYWR5
U3RhdGUnLCAnbGl2ZScpOwotCi0gICAgdHJhY2sub251bm11dGUgPSBvblRyYWNrVW5tdXRlOwot
ICAgIHRyYWNrLm9ubXV0ZSA9IG9uVHJhY2tNdXRlOwotICAgIHRyYWNrLm9uZW5kZWQgPSBvblRy
YWNrRW5kZWQ7Ci0KLSAgICB0cmFjay5lbmFibGVkID0gZmFsc2U7Ci19Ci0KLWdldFVzZXJNZWRp
YSh7YXVkaW86dHJ1ZSwgdmlkZW86dHJ1ZX0sIGdvdFN0cmVhbSk7Ci0KLXdpbmRvdy5qc1Rlc3RJ
c0FzeW5jID0gdHJ1ZTsKLXdpbmRvdy5zdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOwotPC9zY3Jp
cHQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3Jp
cHQ+Ci08L2JvZHk+CisgICAgPGhlYWQ+CisgICAgICAgIDxzY3JpcHQgc3JjPSIuLi8uLi9yZXNv
dXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorICAgICAgICA8c2NyaXB0PgorICAgICAg
ICAgICAgdmFyIG1lZGlhU3RyZWFtOworICAgICAgICAgICAgdmFyIHZpZGVvVHJhY2s7CisgICAg
ICAgICAgICB2YXIgdmlkZW9UcmFjazI7CisgICAgICAgICAgICB2YXIgYXVkaW9UcmFjazsKKyAg
ICAgICAgICAgIAorICAgICAgICAgICAgZnVuY3Rpb24gZXJyb3IoKQorICAgICAgICAgICAgewor
ICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoJ1N0cmVhbSBnZW5lcmF0aW9uIGZhaWxlZC4nKTsK
KyAgICAgICAgICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAgICAgICAgICAgIH0KKworICAgICAg
ICAgICAgZnVuY3Rpb24gZ2V0VXNlck1lZGlhKGNvbnN0cmFpbnRzLCBjYWxsYmFjaykKKyAgICAg
ICAgICAgIHsKKyAgICAgICAgICAgICAgICB0cnkgeworICAgICAgICAgICAgICAgICAgICBuYXZp
Z2F0b3Iud2Via2l0R2V0VXNlck1lZGlhKGNvbnN0cmFpbnRzLCBjYWxsYmFjaywgZXJyb3IpOwor
ICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHsKKyAgICAgICAgICAgICAgICAgICAgdGVzdEZh
aWxlZCgnd2Via2l0R2V0VXNlck1lZGlhIHRocmV3IGV4Y2VwdGlvbiA6JyArIGUpOworICAgICAg
ICAgICAgICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAg
ICAgICB9CisgICAgICAgICAgICAKKyAgICAgICAgICAgIGZ1bmN0aW9uIG9uVHJhY2tFbmRlZCgp
CisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgnVHJhY2sgb25lbmRl
ZCBjYWxsYmFjayBzdWNjZWVkZWQuJyk7CisgICAgICAgICAgICAgICAgc2hvdWxkQmVFcXVhbFRv
U3RyaW5nKCd2aWRlb1RyYWNrLnJlYWR5U3RhdGUnLCAnZW5kZWQnKTsKKyAgICAgICAgICAgICAg
ICBkZWJ1ZygiIik7CisgICAgICAgICAgICAgICAgZmluaXNoSlNUZXN0KCk7CisgICAgICAgICAg
ICB9CisKKyAgICAgICAgICAgIGZ1bmN0aW9uIG9uVHJhY2tTdGFydGVkKCkKKyAgICAgICAgICAg
IHsKKyAgICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCdUcmFjayBvbnN0YXJ0ZWQgY2FsbGJhY2sg
c3VjY2VlZGVkLicpOworICAgICAgICAgICAgICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygndmlk
ZW9UcmFjay5yZWFkeVN0YXRlJywgJ2xpdmUnKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAg
ICAgZnVuY3Rpb24gb25UcmFja092ZXJDb25zdHJhaW5lZCgpCisgICAgICAgICAgICB7CisgICAg
ICAgICAgICAgICAgdGVzdFBhc3NlZCgnVHJhY2sgb25vdmVyY29uc3RyYWluZWQgY2FsbGJhY2sg
c3VjY2VlZGVkLicpOworICAgICAgICAgICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAgICAgICAg
ICAgfQorCisgICAgICAgICAgICBmdW5jdGlvbiBvblRyYWNrVW5tdXRlKCkKKyAgICAgICAgICAg
IHsKKyAgICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCdUcmFjayBvbnVubXV0ZSBjYWxsYmFjayBz
dWNjZWVkZWQuJyk7CisgICAgICAgICAgICAgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCd2aWRl
b1RyYWNrLnJlYWR5U3RhdGUnLCAnbGl2ZScpOworICAgICAgICAgICAgICAgIHZpZGVvVHJhY2su
c3RvcCgpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBmdW5jdGlvbiBvblRyYWNrTXV0
ZSgpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgnVHJhY2sgb25t
dXRlIGNhbGxiYWNrIHN1Y2NlZWRlZC4nKTsKKyAgICAgICAgICAgICAgICBzaG91bGRCZUVxdWFs
KCd2aWRlb1RyYWNrLm11dGVkJywgdHJ1ZSk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAg
IGZ1bmN0aW9uIGxvZ0NhcGFiaWxpdHlSYW5nZShuYW1lLCByYW5nZSkKKyAgICAgICAgICAgIHsK
KyAgICAgICAgICAgICAgICBkZWJ1ZygiICAiICsgbmFtZSk7CisgICAgICAgICAgICAgICAgZGVi
dWcoIiAgIG1pbiA6ICIgKyByYW5nZS5taW4pOworICAgICAgICAgICAgICAgIGRlYnVnKCIgICBt
YXggOiAiICsgcmFuZ2UubWF4KTsKKyAgICAgICAgICAgICAgICBkZWJ1ZygiICAgc3VwcG9ydGVk
IDogIiArIHJhbmdlLnN1cHBvcnRlZCk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGZ1
bmN0aW9uIGxvZ0NhcGFiaWxpdHlMaXN0KG5hbWUsIGxpc3QpCisgICAgICAgICAgICB7CisgICAg
ICAgICAgICAgICAgZGVidWcoIiAgIiArIG5hbWUpOworICAgICAgICAgICAgICAgIGZvciAoaSA9
IDA7IGkgPCBsaXN0Lmxlbmd0aDsgaSsrKQorICAgICAgICAgICAgICAgIGRlYnVnKCIgICAgIiAr
IGkgKyAiIDogIiArIGxpc3RbaV0pOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBmdW5j
dGlvbiBjaGVja0NhcGFiaWxpdGllcyh0cmFjaykKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAg
ICAgICBkZWJ1ZygiY2hlY2tpbmcgdHJhY2suY2FwYWJpbGl0aWVzKCkiKTsKKyAgICAgICAgICAg
ICAgICBjYXBhYmlsaXRpZXMgPSB0cmFjay5jYXBhYmlsaXRpZXMoKTsKKyAgICAgICAgICAgICAg
ICBsb2dDYXBhYmlsaXR5TGlzdCgic291cmNlSWQiLCBjYXBhYmlsaXRpZXMuc291cmNlSWQpOwor
ICAgICAgICAgICAgICAgIGlmICh0cmFjay5raW5kID09ICJ2aWRlbyIpIHsKKyAgICAgICAgICAg
ICAgICAgICAgbG9nQ2FwYWJpbGl0eUxpc3QoInNvdXJjZVR5cGUiLCBjYXBhYmlsaXRpZXMuc291
cmNlVHlwZSk7CisgICAgICAgICAgICAgICAgICAgIGxvZ0NhcGFiaWxpdHlSYW5nZSgid2lkdGgi
LCBjYXBhYmlsaXRpZXMud2lkdGgpOworICAgICAgICAgICAgICAgICAgICBsb2dDYXBhYmlsaXR5
UmFuZ2UoImhlaWdodCIsIGNhcGFiaWxpdGllcy5oZWlnaHQpOworICAgICAgICAgICAgICAgICAg
ICBsb2dDYXBhYmlsaXR5UmFuZ2UoImZyYW1lUmF0ZSIsIGNhcGFiaWxpdGllcy5mcmFtZVJhdGUp
OworICAgICAgICAgICAgICAgICAgICBsb2dDYXBhYmlsaXR5UmFuZ2UoImFzcGVjdFJhdGlvIiwg
Y2FwYWJpbGl0aWVzLmFzcGVjdFJhdGlvKTsKKyAgICAgICAgICAgICAgICAgICAgbG9nQ2FwYWJp
bGl0eUxpc3QoImZhY2luZ01vZGUiLCBjYXBhYmlsaXRpZXMuZmFjaW5nTW9kZSk7CisgICAgICAg
ICAgICAgICAgfSBlbHNlCisgICAgICAgICAgICAgICAgICAgIGxvZ0NhcGFiaWxpdHlSYW5nZSgi
dm9sdW1lIiwgY2FwYWJpbGl0aWVzLnZvbHVtZSk7CisgICAgICAgICAgICB9CisKKyAgICAgICAg
ICAgIGZ1bmN0aW9uIGNoZWNrU3RhdGVzKHRyYWNrKQorICAgICAgICAgICAgeworICAgICAgICAg
ICAgICAgIGRlYnVnKCJjaGVja2luZyB0cmFjay5zdGF0ZXMoKSIpOworICAgICAgICAgICAgICAg
IGNhcGFiaWxpdGllcyA9IHRyYWNrLmNhcGFiaWxpdGllcygpOworICAgICAgICAgICAgICAgIHN0
YXRlcyA9IHRyYWNrLnN0YXRlcygpOworICAgICAgICAgICAgICAgIHNob3VsZEJlKCdzdGF0ZXMu
c291cmNlSWQnLCAnY2FwYWJpbGl0aWVzLnNvdXJjZUlkWzBdJyk7CisgICAgICAgICAgICAgICAg
aWYgKHRyYWNrLmtpbmQgPT0gInZpZGVvIikgeworICAgICAgICAgICAgICAgICAgICBzaG91bGRC
ZUVxdWFsVG9TdHJpbmcoJ3N0YXRlcy5zb3VyY2VUeXBlJywgJ2NhbWVyYScpOworICAgICAgICAg
ICAgICAgICAgICBkZWJ1ZygiICB3aWR0aCA6ICIgKyBzdGF0ZXMud2lkdGgpOworICAgICAgICAg
ICAgICAgICAgICBkZWJ1ZygiICBoZWlnaHQgOiAiICsgc3RhdGVzLmhlaWdodCk7CisgICAgICAg
ICAgICAgICAgICAgIGRlYnVnKCIgIGZyYW1lUmF0ZSA6ICIgKyBzdGF0ZXMuZnJhbWVSYXRlKTsK
KyAgICAgICAgICAgICAgICAgICAgZGVidWcoIiAgYXNwZWN0UmF0aW8gOiAiICsgc3RhdGVzLmFz
cGVjdFJhdGlvKTsKKyAgICAgICAgICAgICAgICAgICAgZGVidWcoIiAgZmFjaW5nTW9kZSA6ICIg
KyBzdGF0ZXMuZmFjaW5nTW9kZSk7CisgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAg
ICAgICAgICAgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCdzdGF0ZXMuc291cmNlVHlwZScsICdt
aWNyb3Bob25lJyk7CisgICAgICAgICAgICAgICAgICAgIGRlYnVnKCIgIHZvbHVtZSA6ICIgKyBz
dGF0ZXMudm9sdW1lKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAg
ICAgICAKKyAgICAgICAgICAgIGZ1bmN0aW9uIGNoZWNrVHJhY2sodCkKKyAgICAgICAgICAgIHsK
KyAgICAgICAgICAgICAgICB0cmFjayA9IHQ7CisgICAgICAgICAgICAgICAgc2hvdWxkQmVFcXVh
bFRvU3RyaW5nKCd0cmFjay5yZWFkeVN0YXRlJywgJ2xpdmUnKTsKKyAgICAgICAgICAgICAgICBj
aGVja0NhcGFiaWxpdGllcyh0cmFjayk7CisgICAgICAgICAgICAgICAgY2hlY2tTdGF0ZXModHJh
Y2spOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBmdW5jdGlvbiBnb3RTdHJlYW0oc3Ry
ZWFtKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIG1lZGlhU3RyZWFtID0gc3RyZWFt
OworICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoJ2dldFVzZXJNZWRpYSBzdWNjZWVkZWQuJyk7
CisgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICBkZWJ1ZygiIik7CisgICAgICAgICAgICAg
ICAgZXZhbEFuZExvZygidmlkZW9UcmFjayA9IG1lZGlhU3RyZWFtLmdldFZpZGVvVHJhY2tzKClb
MF0iKTsKKyAgICAgICAgICAgICAgICBjaGVja1RyYWNrKHZpZGVvVHJhY2spOworCisgICAgICAg
ICAgICAgICAgZGVidWcoIiIpOworICAgICAgICAgICAgICAgIGV2YWxBbmRMb2coImF1ZGlvVHJh
Y2sgPSBtZWRpYVN0cmVhbS5nZXRBdWRpb1RyYWNrcygpWzBdIik7CisgICAgICAgICAgICAgICAg
Y2hlY2tUcmFjayhhdWRpb1RyYWNrKTsKKworICAgICAgICAgICAgICAgIHZpZGVvVHJhY2sub25t
dXRlID0gb25UcmFja011dGU7CisgICAgICAgICAgICAgICAgdmlkZW9UcmFjay5vbnVubXV0ZSA9
IG9uVHJhY2tVbm11dGU7CisgICAgICAgICAgICAgICAgdmlkZW9UcmFjay5vbmVuZGVkID0gb25U
cmFja0VuZGVkOworICAgICAgICAgICAgICAgIHZpZGVvVHJhY2sub25zdGFydGVkID0gb25UcmFj
a1N0YXJ0ZWQ7CisgICAgICAgICAgICAgICAgdmlkZW9UcmFjay5vbm92ZXJjb25zdHJhaW5lZCA9
IG9uVHJhY2tPdmVyQ29uc3RyYWluZWQ7CisgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICBk
ZWJ1ZygiIik7CisgICAgICAgICAgICAgICAgZXZhbEFuZExvZygidmlkZW9UcmFjazIgPSB2aWRl
b1RyYWNrLmNsb25lKCkiKTsKKyAgICAgICAgICAgICAgICBjaGVja1RyYWNrKHZpZGVvVHJhY2sy
KTsKKyAgICAgICAgICAgICAgICBzaG91bGROb3RCZSgndmlkZW9UcmFjay5pZCcsICd2aWRlb1Ry
YWNrMi5pZCcpOworICAgICAgICAgICAgICAgIHNob3VsZEJlKCd2aWRlb1RyYWNrLmtpbmQnLCAn
dmlkZW9UcmFjazIua2luZCcpOworICAgICAgICAgICAgICAgIHNob3VsZEJlKCd2aWRlb1RyYWNr
LmxhYmVsJywgJ3ZpZGVvVHJhY2syLmxhYmVsJyk7CisgICAgICAgICAgICAgICAgc2hvdWxkQmUo
J3ZpZGVvVHJhY2subXV0ZWQnLCAndmlkZW9UcmFjazIubXV0ZWQnKTsKKyAgICAgICAgICAgICAg
ICBzaG91bGRCZSgndmlkZW9UcmFjay5lbmFibGVkJywgJ3ZpZGVvVHJhY2syLmVuYWJsZWQnKTsK
KyAgICAgICAgICAgICAgICBzaG91bGRCZSgndmlkZW9UcmFjay5yZWFkeVN0YXRlJywgJ3ZpZGVv
VHJhY2syLnJlYWR5U3RhdGUnKTsKKworICAgICAgICAgICAgICAgIGRlYnVnKCIiKTsKKyAgICAg
ICAgICAgICAgICBldmFsQW5kTG9nKCJ2aWRlb1RyYWNrLnN0b3AoKSIpOworICAgICAgICAgICAg
fQorCisgICAgICAgICAgICBmdW5jdGlvbiBzdGFydCgpCisgICAgICAgICAgICB7CisgICAgICAg
ICAgICAgICAgZGVzY3JpcHRpb24oIlRlc3RzIE1lZGlhU3RyZWFtVHJhY2sgY2FsbGJhY2tzLiIp
OworICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIC8vIE5vdGUgdGhhdCB0aGUgYmVs
b3cgYmVoYXZpb3VyIGRvZXNuJ3QgcmVmbGVjdCBob3cgaXQgd29ya3Mgb3V0c2lkZSBvZiBMYXlv
dXRUZXN0cy4KKyAgICAgICAgICAgICAgICAvLyBUaGUgdW5kZXJseWluZyBtb2NrIGlzIG1vZGlm
aWVkIHRvIHRyaWdnZXIgdGhlIGV2ZW50cyB3aGVuIGNlcnRhaW4gZnVuY3Rpb25zIGFyZSBjYWxs
ZWQuCisgICAgICAgICAgICAgICAgLy8gVGhpcyBtb2RpZmllZCBiZWhhdmlvdXIgYWxsb3dzIHVz
IHRvIHRlc3QgdGhlIE1lZGlhU3RyZWFtVHJhY2sgY2xhc3MgcHJvcGVybHkuCisgICAgICAgICAg
ICAgICAgZ2V0VXNlck1lZGlhKHthdWRpbzp0cnVlLCB2aWRlbzp0cnVlfSwgZ290U3RyZWFtKTsK
KyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgd2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVl
OworICAgICAgICAgICAgd2luZG93LnN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7CisgICAgICAg
IDwvc2NyaXB0PgorICAgIDwvaGVhZD4KKyAgICA8Ym9keSBvbmxvYWQ9InN0YXJ0KCkiPgorICAg
ICAgICA8cCBpZD0iZGVzY3JpcHRpb24iPjwvcD4KKyAgICAgICAgPGRpdiBpZD0iY29uc29sZSI+
PC9kaXY+CisgICAgICAgIDxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wb3N0
LmpzIj48L3NjcmlwdD4KKyAgICA8L2JvZHk+CiA8L2h0bWw+Cg==
</data>
<flag name="commit-queue"
          id="235927"
          type_id="3"
          status="-"
          setter="eflews.bot"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>213562</attachid>
            <date>2013-10-06 21:15:18 -0700</date>
            <delta_ts>2013-10-07 08:39:40 -0700</delta_ts>
            <desc>YARP</desc>
            <filename>track_spec_update_22.txt</filename>
            <type>text/plain</type>
            <size>214770</size>
            <attacher name="Eric Carlson">eric.carlson</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE1NzAxNikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE3OCBAQAorMjAxMy0xMC0wNiAgRXJpYyBD
YXJsc29uICA8ZXJpYy5jYXJsc29uQGFwcGxlLmNvbT4KKworICAgICAgICBbTWVkaWFTdHJlYW0g
QVBJXSB1cGRhdGUgTWVkaWFTdHJlYW1UcmFjayBvYmplY3QgdG8gbWF0Y2ggc3BlYworICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTIxOTQwCisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLCBl
eGlzdGluZyB0ZXN0IHVwZGF0ZWQuCisKKyAgICAgICAgQWRkIG5ldyBzb3VyY2UgZmlsZXMgdG8g
dGhlIHByb2plY3Q6CisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogRGVyaXZl
ZFNvdXJjZXMubWFrZToKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5saXN0LmFtOgorICAgICAgICAq
IFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKworICAgICAgICBOZXcgY2FwYWJp
bGl0eSBkaWN0aW9uYXJ5IG9iamVjdHM6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9B
bGxBdWRpb0NhcGFiaWxpdGllcy5oOiBBZGRlZC4KKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3Ry
ZWFtL0FsbEF1ZGlvQ2FwYWJpbGl0aWVzLmlkbDogQWRkZWQuCisgICAgICAgICogTW9kdWxlcy9t
ZWRpYXN0cmVhbS9BbGxWaWRlb0NhcGFiaWxpdGllcy5oOiBBZGRlZC4KKyAgICAgICAgKiBNb2R1
bGVzL21lZGlhc3RyZWFtL0FsbFZpZGVvQ2FwYWJpbGl0aWVzLmlkbDogQWRkZWQuCisKKyAgICAg
ICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL0F1ZGlvU3RyZWFtVHJhY2suY3BwOgorICAgICAgICAo
V2ViQ29yZTo6QXVkaW9TdHJlYW1UcmFjazo6Y3JlYXRlKTogTmV3IHZlcnNpb24gdGhhdCB0YWtl
cyBhIE1lZGlhU3RyZWFtVHJhY2sqLgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vQXVk
aW9TdHJlYW1UcmFjay5oOgorCisgICAgICAgIE5ldyBvYmplY3QgZm9yIGEgY2FwYWJpbGl0eSBy
YW5nZToKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL0NhcGFiaWxpdHlSYW5nZS5jcHA6
IEFkZGVkLgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vQ2FwYWJpbGl0eVJhbmdlLmg6
IEFkZGVkLgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vQ2FwYWJpbGl0eVJhbmdlLmlk
bDogQWRkZWQuCisKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhQ29uc3RyYWlu
dHNJbXBsLmg6IE1ha2UgaW5pdGlhbGl6ZSgpIHB1YmxpYy4KKworICAgICAgICBOZXcgb2JqZWN0
IGZvciB0aGUgY3VycmVudCBzdGF0ZXMgZm9yIGEgbWVkaWEgc291cmNlLgorICAgICAgICAqIE1v
ZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTb3VyY2VTdGF0ZXMuY3BwOiBBZGRlZC4KKyAgICAgICAg
KiBNb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU291cmNlU3RhdGVzLmg6IEFkZGVkLgorICAgICAg
ICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTb3VyY2VTdGF0ZXMuaWRsOiBBZGRlZC4KKwor
ICAgICAgICBEb24ndCBjYWxsIHRoZSBtZWRpYSBzdHJlYW0gY2VudGVyIHRvIG5vdGlmeSBpdCB3
aGVuIHRoZSBzdGF0ZSBvZiBvdGhlcgorICAgICAgICBvYmplY3RzIGNoYW5nZS4KKyAgICAgICAg
KiBNb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OnByb2Nlc3NUcmFjayk6IFJlbW92ZSB0aGUgc3RyZWFtIHNvdXJjZSBkdXBsaWNhdGlvbiBoYWNr
LgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlRnJvbVNvdXJjZVZlY3RvcnMpOiAKKyAgICAgICAg
KFdlYkNvcmU6Ok1lZGlhU3RyZWFtOjpNZWRpYVN0cmVhbSk6CisgICAgICAgIChXZWJDb3JlOjpN
ZWRpYVN0cmVhbTo6YWRkVHJhY2spOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTdHJlYW06OnJl
bW92ZVRyYWNrKToKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtLmg6
CisKKyAgICAgICAgTmV3IG9iamVjdCBmb3IgdGhlIGNhcGFiaWxpdGllcyBvZiBhIHNvdXJjZS4K
KyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtQ2FwYWJpbGl0aWVzLmNw
cDogQWRkZWQuCisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbUNhcGFi
aWxpdGllcy5oOiBBZGRlZC4KKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3Ry
ZWFtQ2FwYWJpbGl0aWVzLmlkbDogQWRkZWQuCisKKyAgICAgICAgVXBkYXRlIGludGVyZmFjZSB0
byBtYXRjaCBzcGVjLgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1U
cmFjay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbVRyYWNrOjpNZWRpYVN0cmVh
bVRyYWNrKTogRGVmaW5lIGEgY29weSBjb25zdHJ1Y3RvciB0byB1c2UgaW4gY2xvbmUoKS4KKyAg
ICAgICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFtVHJhY2s6OnNldFNvdXJjZSk6IENhbGwgcmVtb3Zl
T2JzZXJ2ZXIgaWYgdGhlIHRyYWNrIGFscmVhZHkgaGFzIGEgc291cmNlLgorICAgICAgICAgICAg
SW5pdGlhbGl6ZSBtX211dGVkIGZyb20gbmV3IHNvdXJjZSdzIG11dGVkIHN0YXRlLgorICAgICAg
ICAoV2ViQ29yZTo6TWVkaWFTdHJlYW1UcmFjazo6aWQpOiBBbGxvdyBzb3VyY2UgdG8gcHJvdmlk
ZSBJRCBhcyB0aGUgc3BlYyBzdWdnZXN0cy4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFt
VHJhY2s6OnNldEVuYWJsZWQpOiBBZGQgc29tZSBzcGVjIHRleHQgdG8gY2xhcmlmeSBsb2dpYy4g
QWx3YXlzIGNhbGwKKyAgICAgICAgICAgIHNvdXJjZS0+c2V0RW5hYmxlZCwgaXQgY2FuIGZpZ3Vy
ZSBvdXQgaWYgbm90aGluZyBuZWVkcyB0byBiZSBkb25lLgorICAgICAgICAoV2ViQ29yZTo6TWVk
aWFTdHJlYW1UcmFjazo6bXV0ZWQpOiBEb24ndCBjYWxsIHRoZSBzdHJlYW0gY2VudGVyIHdoZW4g
bXV0ZWQgY2hhbmdlcywgdGhlCisgICAgICAgICAgICBzb3VyY2UgY2FuIHRha2UgY2FyZSBvZiBu
b3RpZnlpbmcgaW50ZXJlc3RlZCBwYXJ0aWVzLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTdHJl
YW1UcmFjazo6cmVhZG9ubHkpOiBOZXcuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbVRy
YWNrOjpyZW1vdGUpOiBOZXcuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbVRyYWNrOjpj
b25zdHJhaW50cyk6IE5ldy4gCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbVRyYWNrOjpz
dGF0ZXMpOiBOZXcuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbVRyYWNrOjpjYXBhYmls
aXRpZXMpOiBOZXcuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbVRyYWNrOjphcHBseUNv
bnN0cmFpbnRzKTogTmV3LgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTdHJlYW1UcmFjazo6Y2xv
bmUpOiBOZXcuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbVRyYWNrOjpzdG9wUHJvZHVj
aW5nRGF0YSk6IE5ldy4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFtVHJhY2s6OnNvdXJj
ZVN0YXRlQ2hhbmdlZCk6IFJlbmFtZWQgZnJvbSBzb3VyY2VDaGFuZ2VkU3RhdGUuCisgICAgICAg
IChXZWJDb3JlOjpNZWRpYVN0cmVhbVRyYWNrOjpzb3VyY2VNdXRlZENoYW5nZWQpOiBOZXcuCisg
ICAgICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbVRyYWNrOjpzb3VyY2VFbmFibGVkQ2hhbmdlZCk6
IE5ldy4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFtVHJhY2s6OmNvbmZpZ3VyZVRyYWNr
UmVuZGVyaW5nKTogTmV3LgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTdHJlYW1UcmFjazo6c3Rv
cHBlZCk6IE5ldy4gCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbVRyYWNrOjpzdG9wKTog
Q2FsbCBzdG9wUHJvZHVjaW5nRGF0YS4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFtVHJh
Y2s6OnNjaGVkdWxlRXZlbnREaXNwYXRjaCk6IE5ldy4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlh
U3RyZWFtVHJhY2s6OmRpc3BhdGNoUXVldWVkRXZlbnRzKTogTmV3LgorICAgICAgICAqIE1vZHVs
ZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1UcmFjay5oOgorICAgICAgICAqIE1vZHVsZXMvbWVk
aWFzdHJlYW0vTWVkaWFTdHJlYW1UcmFjay5pZGw6CisKKyAgICAgICAgKiBNb2R1bGVzL21lZGlh
c3RyZWFtL01lZGlhVHJhY2tDb25zdHJhaW50LmNwcDogQWRkZWQuCisgICAgICAgICogTW9kdWxl
cy9tZWRpYXN0cmVhbS9NZWRpYVRyYWNrQ29uc3RyYWludC5oOiBBZGRlZC4KKyAgICAgICAgKiBN
b2R1bGVzL21lZGlhc3RyZWFtL01lZGlhVHJhY2tDb25zdHJhaW50LmlkbDogQWRkZWQuCisKKyAg
ICAgICAgLy8gQWRkIGVtcHR5IGNsYXNzZXMvSURMIGZvciB0cmFjayBjb25zdHJhaW50IG9iamVj
dHMuCisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVRyYWNrQ29uc3RyYWludFNl
dC5jcHA6IEFkZGVkLgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFUcmFja0Nv
bnN0cmFpbnRTZXQuaDogQWRkZWQuCisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRp
YVRyYWNrQ29uc3RyYWludFNldC5pZGw6IEFkZGVkLgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFz
dHJlYW0vTWVkaWFUcmFja0NvbnN0cmFpbnRzLmNwcDogQWRkZWQuCisgICAgICAgICogTW9kdWxl
cy9tZWRpYXN0cmVhbS9NZWRpYVRyYWNrQ29uc3RyYWludHMuaDogQWRkZWQuCisgICAgICAgICog
TW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVRyYWNrQ29uc3RyYWludHMuaWRsOiBBZGRlZC4KKwor
ICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vVXNlck1lZGlhUmVxdWVzdC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpVc2VyTWVkaWFSZXF1ZXN0OjpjYWxsU3VjY2Vzc0hhbmRsZXIpOiBEb24n
dCBjYWxsIHRoZSBzdHJlYW0gY2VudGVyLCB0aGUKKyAgICAgICAgICAgIHN0cmVhbSBjYW4gdGFr
ZSBjYXJlIG9mIG5vdGlmeWluZyBpbnRlcmVzdGVkIHBhcnRpZXMuCisKKyAgICAgICAgLy8gQWRk
IGEgY29uc3RydWN0b3IgYW5kIGNyZWF0ZSgpIHRoYXQgdGFrZSBhIE1lZGlhU3RyZWFtVHJhY2sq
LgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vVmlkZW9TdHJlYW1UcmFjay5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpWaWRlb1N0cmVhbVRyYWNrOjpjcmVhdGUpOiAKKyAgICAgICAgKFdl
YkNvcmU6OlZpZGVvU3RyZWFtVHJhY2s6OlZpZGVvU3RyZWFtVHJhY2spOgorICAgICAgICAqIE1v
ZHVsZXMvbWVkaWFzdHJlYW0vVmlkZW9TdHJlYW1UcmFjay5oOgorCisgICAgICAgIC8vIENyZWF0
ZSBhIE1lZGlhU3RyZWFtU291cmNlIHN1YmNsYXNzIGZvciBXZWJBdWRpbworICAgICAgICAqIE1v
ZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlv
Q29udGV4dDo6Y3JlYXRlTWVkaWFTdHJlYW1Tb3VyY2UpOiBDYWxsIGlzQXVkaW9TdHJlYW1Tb3Vy
Y2UgaW5zdGVhZAorICAgICAgICAgICAgb2YgY2hlY2tpbmcgZGV2aWNlSUQuCisgICAgICAgICog
TW9kdWxlcy93ZWJhdWRpby9NZWRpYVN0cmVhbUF1ZGlvRGVzdGluYXRpb25Ob2RlLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFtQXVkaW9EZXN0aW5hdGlvbk5vZGU6Ok1lZGlhU3Ry
ZWFtQXVkaW9EZXN0aW5hdGlvbk5vZGUpOiBDcmVhdGUgYQorICAgICAgICAgICAgTWVkaWFTdHJl
YW1BdWRpb1NvdXJjZSBpbnN0ZWFkIG9mIGEgTWVkaWFTdHJlYW1Tb3VyY2UuCisgICAgICAgICog
TW9kdWxlcy93ZWJhdWRpby9NZWRpYVN0cmVhbUF1ZGlvRGVzdGluYXRpb25Ob2RlLmg6CisgICAg
ICAgICogTW9kdWxlcy93ZWJhdWRpby9NZWRpYVN0cmVhbUF1ZGlvU291cmNlLmNwcDogQWRkZWQu
CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9NZWRpYVN0cmVhbUF1ZGlvU291cmNlLmg6IEFk
ZGVkLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTdHJlYW1BdWRpb1NvdXJjZTo6fk1lZGlhU3Ry
ZWFtQXVkaW9Tb3VyY2UpOgorCisgICAgICAgIC8vIEFkZCBuZXcgZ2VuZXJhdGVkIGZpbGVzLgor
ICAgICAgICAqIGJpbmRpbmdzL2pzL0pTTWVkaWFTb3VyY2VTdGF0ZXNDdXN0b20uY3BwOiBBZGRl
ZC4KKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU01lZGlhU3RyZWFtQ2FwYWJpbGl0aWVzQ3VzdG9t
LmNwcDogQWRkZWQuCisKKyAgICAgICAgKiBkb20vRXZlbnROYW1lcy5oOiBEZWZpbmVkICdvdmVy
Y29uc3RyYWluZWQnIGV2ZW50LgorCisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVk
aWFTdHJlYW1DZW50ZXIuaDogR2V0IHJpZCBvZiBhbGwgb2YgdGhlIG1ldGhvZHMgbm9ib2R5IHVz
ZXMuCisgICAgICAgICAgICBJdCBpc24ndCBjbGVhciB0aGF0IHRoZXkgYXJlIG5lY2Vzc2FyeSwg
YW5kIHdlIGNhbiBhZGQgdGhlbSBiYWNrIGlmL3doZW4gd2UgbmVlZCB0aGVtLgorCisgICAgICAg
ICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1EZXNjcmlwdG9yLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFtRGVzY3JpcHRvcjo6fk1lZGlhU3RyZWFtRGVzY3JpcHRv
cik6IENsZWFyIHRoZSBhbGwgc291cmNlIHN0cmVhbXMuCisgICAgICAgIChXZWJDb3JlOjpNZWRp
YVN0cmVhbURlc2NyaXB0b3I6OnJlbW92ZVNvdXJjZSk6IENsZWFyIHRoZSBzb3VyY2Ugc3RyZWFt
LgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtRGVzY3JpcHRvci5o
OgorCisgICAgICAgIC8vIE1ha2UgTWVkaWFTdHJlYW1Tb3VyY2UgYW4gYWJzdHJhY3QgYmFzZSBj
bGFzcywgYW5kIHJlbW92ZSBldmVyeXRpbmcgV2ViQXVkaW8tc3BlY2lmaWMKKyAgICAgICAgLy8g
IHRvIE1lZGlhU3RyZWFtQXVkaW9Tb3VyY2UuIAorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3Ry
ZWFtL01lZGlhU3RyZWFtU291cmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFt
U291cmNlOjpNZWRpYVN0cmVhbVNvdXJjZSk6IFJlbW92ZSByZWFkeVN0YXRlIGFuZCByZXF1aXJl
c0NvbnN1bWVyCisgICAgICAgICAgICBwYXJhbWV0ZXJzLiBDcmVhdGUgbmV3IFVVSUQgZm9yIGlk
IGlmIG5vbiB3YXMgcGFzc2VkLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTdHJlYW1Tb3VyY2U6
OnJlc2V0KTogUmVzZXQgaW50ZXJuYWwgc3RhdGUgdG8ganVzdC1jb25zdHJ1Y3RlZC4gVXNlZCBm
b3IgdGVzdGluZy4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFtU291cmNlOjpzZXRSZWFk
eVN0YXRlKTogc291cmNlQ2hhbmdlZFN0YXRlIC0+IHNvdXJjZVN0YXRlQ2hhbmdlZC4KKyAgICAg
ICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFtU291cmNlOjpzZXRTdHJlYW0pOiBSZW1vdmUgdGhlIEFT
U0VSVCB0aGF0IGNoZWNrIGZvciBhIHNvdXJjZSBiZWluZworICAgICAgICAgICAgYWRkZWQgdG8g
YSBuZXcgc3RyZWFtLiBUaGlzIGlzIHN0aWxsIGEgcHJvYmxlbSwgYnV0IGl0IGlzIHJlcXVpcmVk
IGZvciB0ZXN0aW5nIGFuZCB3aWxsCisgICAgICAgICAgICBiZSBmaXhlZCBhcyBhIHBhcnQgb2Yg
YnVnIDEyMTk1NC4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFtU291cmNlOjpzZXRDb25z
dHJhaW50cyk6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTdHJlYW1Tb3VyY2U6OnNl
dE11dGVkKTogTm90aWZ5IG9ic2VydmVycyB3aGVuIG11dGVkIGNoYW5nZXMuCisgICAgICAgIChX
ZWJDb3JlOjpNZWRpYVN0cmVhbVNvdXJjZTo6c2V0RW5hYmxlZCk6IE5vdGlmeSBvYnNlcnZlcnMg
d2hlbiBlbmFibGVkIGNoYW5nZXMuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbVNvdXJj
ZTo6cmVhZG9ubHkpOiBOZXcuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbVNvdXJjZTo6
c3RvcCk6IE5ldy4gU2V0IHN0YXRlIHRvIEVuZGVkIHdoZW4gYWxsIG9mIHRoZSBvYnNlcnZlcnMg
aGFzCisgICAgICAgICAgICBzdG9wcGVkLgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFt
L01lZGlhU3RyZWFtU291cmNlLmg6CisKKyAgICAgICAgLy8gRGVmaW5lIHBsYXRmb3JtIHZlcnNp
b25zIG9mIHRoZSBDYXBhYmlsaXRpZXMgY2xhc3Nlcy4KKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRp
YXN0cmVhbS9NZWRpYVN0cmVhbVNvdXJjZUNhcGFiaWxpdGllcy5oOiBBZGRlZC4KKworICAgICAg
ICAvLyBVcGRhdGUgdGhlIG5vbi1mdW5jdGlvbmFsIHBsYXRmb3JtIHN0cmVhbSBjZW50ZXJzIGZv
ciB0aGUgQVBJIGNoYW5nZXMuCisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vYmxhY2ti
ZXJyeS9NZWRpYVN0cmVhbUNlbnRlckJsYWNrQmVycnkuY3BwOgorICAgICAgICAqIHBsYXRmb3Jt
L21lZGlhc3RyZWFtL2JsYWNrYmVycnkvTWVkaWFTdHJlYW1DZW50ZXJCbGFja0JlcnJ5Lmg6Cisg
ICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vZ3N0cmVhbWVyL01lZGlhU3RyZWFtQ2VudGVy
R1N0cmVhbWVyLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9nc3RyZWFtZXIv
TWVkaWFTdHJlYW1DZW50ZXJHU3RyZWFtZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0
cmVhbS9tYWMvTWVkaWFTdHJlYW1DZW50ZXJNYWMuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL21l
ZGlhc3RyZWFtL21hYy9NZWRpYVN0cmVhbUNlbnRlck1hYy5oOgorCisgICAgICAgIC8vIFVwZGF0
ZSB0aGUgTW9jayBzdHJlYW0gY2VudGVyIGZvciB0aGUgQVBJIGNoYW5nZXMuIEFkZCBhIGNvbmNy
ZXRlIG1vY2sgTWVkaWFTdHJlYW1Tb3VyY2UKKyAgICAgICAgLy8gIHN1YmNsYXNzLgorICAgICAg
ICAqIHBsYXRmb3JtL21vY2svTW9ja01lZGlhU3RyZWFtQ2VudGVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6Ok1vY2tTb3VyY2U6Ok1vY2tTb3VyY2UpOiBOZXcsIHRoZSBtb2NrIG1lZGlhIHN0cmVh
bSBzb3VyY2UuCisgICAgICAgIChXZWJDb3JlOjpNb2NrU291cmNlOjp+TW9ja1NvdXJjZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpNb2NrU291cmNlOjpjYXBhYmlsaXRpZXMpOgorICAgICAgICAoV2Vi
Q29yZTo6TW9ja1NvdXJjZTo6c3RhdGVzKToKKyAgICAgICAgKFdlYkNvcmU6Om1vY2tTb3VyY2VN
YXApOgorICAgICAgICAoV2ViQ29yZTo6bW9ja0F1ZGlvU291cmNlSUQpOgorICAgICAgICAoV2Vi
Q29yZTo6bW9ja1ZpZGVvU291cmNlSUQpOgorICAgICAgICAoV2ViQ29yZTo6aW5pdGlhbGl6ZU1v
Y2tTb3VyY2VzKTogQ3JlYXRlIG9uZSBhdWRpbyBhbmQgb25lIHZpZGVvIG1vY2sgc291cmNlLgor
ICAgICAgICAoV2ViQ29yZTo6TW9ja01lZGlhU3RyZWFtQ2VudGVyOjpyZWdpc3Rlck1vY2tNZWRp
YVN0cmVhbUNlbnRlcik6IENhbGwgaW5pdGlhbGl6ZU1vY2tTb3VyY2VzLgorICAgICAgICAoV2Vi
Q29yZTo6TW9ja01lZGlhU3RyZWFtQ2VudGVyOjpjcmVhdGVNZWRpYVN0cmVhbSk6IFVzZSB0aGUg
YWxyZWFkeSBhbGxvY2F0ZWQgbW9jayBtZWRpYQorICAgICAgICAgICAgc291cmNlcy4KKyAgICAg
ICAgKFdlYkNvcmU6Ok1vY2tNZWRpYVN0cmVhbUNlbnRlcjo6Z2V0TWVkaWFTdHJlYW1UcmFja1Nv
dXJjZXMpOiBEaXR0by4KKyAgICAgICAgKiBwbGF0Zm9ybS9tb2NrL01vY2tNZWRpYVN0cmVhbUNl
bnRlci5oOgorCiAyMDEzLTEwLTA2ICBBbnR0aSBLb2l2aXN0byAgPGFudHRpQGFwcGxlLmNvbT4K
IAogICAgICAgICBGYWN0b3IgdGV4dCBwYWludCBzdHlsZSBjb21wdXRhdGlvbiBvdXQgZnJvbSBJ
bmxpbmVUZXh0Qm94CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAkocmV2aXNpb24gMTU3MDE2KQor
KysgU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQJKHdvcmtpbmcgY29weSkKQEAgLTE4Niwx
MiArMTg2LDIwIEBAIHNldChXZWJDb3JlX0lETF9GSUxFUwogICAgIE1vZHVsZXMvbWVkaWFzb3Vy
Y2UvV2ViS2l0U291cmNlQnVmZmVyLmlkbAogICAgIE1vZHVsZXMvbWVkaWFzb3VyY2UvV2ViS2l0
U291cmNlQnVmZmVyTGlzdC5pZGwKIAorICAgIE1vZHVsZXMvbWVkaWFzdHJlYW0vQWxsQXVkaW9D
YXBhYmlsaXRpZXMuaWRsCisgICAgTW9kdWxlcy9tZWRpYXN0cmVhbS9BbGxWaWRlb0NhcGFiaWxp
dGllcy5pZGwKICAgICBNb2R1bGVzL21lZGlhc3RyZWFtL0F1ZGlvU3RyZWFtVHJhY2suaWRsCisg
ICAgTW9kdWxlcy9tZWRpYXN0cmVhbS9DYXBhYmlsaXR5UmFuZ2UuaWRsCisgICAgTW9kdWxlcy9t
ZWRpYXN0cmVhbS9NZWRpYVNvdXJjZVN0YXRlcy5pZGwKICAgICBNb2R1bGVzL21lZGlhc3RyZWFt
L01lZGlhU3RyZWFtLmlkbAorICAgIE1vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1DYXBh
YmlsaXRpZXMuaWRsCiAgICAgTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbUV2ZW50Lmlk
bAogICAgIE1vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1UcmFjay5pZGwKICAgICBNb2R1
bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJhY2tFdmVudC5pZGwKICAgICBNb2R1bGVzL21l
ZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJhY2tTb3VyY2VzQ2FsbGJhY2suaWRsCisgICAgTW9kdWxl
cy9tZWRpYXN0cmVhbS9NZWRpYVRyYWNrQ29uc3RyYWludC5pZGwKKyAgICBNb2R1bGVzL21lZGlh
c3RyZWFtL01lZGlhVHJhY2tDb25zdHJhaW50U2V0LmlkbAorICAgIE1vZHVsZXMvbWVkaWFzdHJl
YW0vTWVkaWFUcmFja0NvbnN0cmFpbnRzLmlkbAogICAgIE1vZHVsZXMvbWVkaWFzdHJlYW0vTmF2
aWdhdG9yTWVkaWFTdHJlYW0uaWRsCiAgICAgTW9kdWxlcy9tZWRpYXN0cmVhbS9OYXZpZ2F0b3JV
c2VyTWVkaWFFcnJvci5pZGwKICAgICBNb2R1bGVzL21lZGlhc3RyZWFtL05hdmlnYXRvclVzZXJN
ZWRpYUVycm9yQ2FsbGJhY2suaWRsCkBAIC03ODYsMTMgKzc5NCwxOSBAQCBzZXQoV2ViQ29yZV9T
T1VSQ0VTCiAgICAgTW9kdWxlcy9tZWRpYXNvdXJjZS9Tb3VyY2VCdWZmZXJMaXN0LmNwcAogCiAg
ICAgTW9kdWxlcy9tZWRpYXN0cmVhbS9BdWRpb1N0cmVhbVRyYWNrLmNwcAorICAgIE1vZHVsZXMv
bWVkaWFzdHJlYW0vQ2FwYWJpbGl0eVJhbmdlLmNwcAogICAgIE1vZHVsZXMvbWVkaWFzdHJlYW0v
TWVkaWFDb25zdHJhaW50c0ltcGwuY3BwCisgICAgTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVNv
dXJjZVN0YXRlcy5jcHAKICAgICBNb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtLmNwcAor
ICAgIE1vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1DYXBhYmlsaXRpZXMuY3BwCiAgICAg
TW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbUV2ZW50LmNwcAogICAgIE1vZHVsZXMvbWVk
aWFzdHJlYW0vTWVkaWFTdHJlYW1SZWdpc3RyeS5jcHAKICAgICBNb2R1bGVzL21lZGlhc3RyZWFt
L01lZGlhU3RyZWFtVHJhY2suY3BwCiAgICAgTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVh
bVRyYWNrRXZlbnQuY3BwCiAgICAgTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVRyYWNr
U291cmNlc1JlcXVlc3QuY3BwCisgICAgTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVRyYWNrQ29u
c3RyYWludC5jcHAKKyAgICBNb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhVHJhY2tDb25zdHJhaW50
U2V0LmNwcAorICAgIE1vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFUcmFja0NvbnN0cmFpbnRzLmNw
cAogICAgIE1vZHVsZXMvbWVkaWFzdHJlYW0vTmF2aWdhdG9yTWVkaWFTdHJlYW0uY3BwCiAgICAg
TW9kdWxlcy9tZWRpYXN0cmVhbS9OYXZpZ2F0b3JVc2VyTWVkaWFFcnJvci5jcHAKICAgICBNb2R1
bGVzL21lZGlhc3RyZWFtL1JUQ0RUTUZTZW5kZXIuY3BwCkBAIC0xOTcxLDYgKzE5ODUsNyBAQCBz
ZXQoV2ViQ29yZV9TT1VSQ0VTCiAgICAgcGxhdGZvcm0vbGV2ZWxkYi9MZXZlbERCVHJhbnNhY3Rp
b24uY3BwCiAgICAgcGxhdGZvcm0vbGV2ZWxkYi9MZXZlbERCV3JpdGVCYXRjaC5jcHAKIAorICAg
IHBsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtQXVkaW9Tb3VyY2UuY3BwCiAgICAgcGxh
dGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1DZW50ZXIuY3BwCiAgICAgcGxhdGZvcm0vbWVk
aWFzdHJlYW0vTWVkaWFTdHJlYW1EZXNjcmlwdG9yLmNwcAogICAgIHBsYXRmb3JtL21lZGlhc3Ry
ZWFtL01lZGlhU3RyZWFtU291cmNlLmNwcApJbmRleDogU291cmNlL1dlYkNvcmUvRGVyaXZlZFNv
dXJjZXMubWFrZQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5t
YWtlCShyZXZpc2lvbiAxNTcwMTYpCisrKyBTb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5t
YWtlCSh3b3JraW5nIGNvcHkpCkBAIC0xMDEsMTIgKzEwMSwyMCBAQCBCSU5ESU5HX0lETFMgPSBc
CiAgICAgJChXZWJDb3JlKS9Nb2R1bGVzL21lZGlhc291cmNlL1dlYktpdFNvdXJjZUJ1ZmZlckxp
c3QuaWRsIFwKICAgICAkKFdlYkNvcmUpL01vZHVsZXMvbWVkaWFzb3VyY2UvU291cmNlQnVmZmVy
LmlkbCBcCiAgICAgJChXZWJDb3JlKS9Nb2R1bGVzL21lZGlhc291cmNlL1NvdXJjZUJ1ZmZlckxp
c3QuaWRsIFwKKwkkKFdlYkNvcmUpL01vZHVsZXMvbWVkaWFzdHJlYW0vQWxsVmlkZW9DYXBhYmls
aXRpZXMuaWRsIFwKKwkkKFdlYkNvcmUpL01vZHVsZXMvbWVkaWFzdHJlYW0vQWxsQXVkaW9DYXBh
YmlsaXRpZXMuaWRsIFwKIAkkKFdlYkNvcmUpL01vZHVsZXMvbWVkaWFzdHJlYW0vQXVkaW9TdHJl
YW1UcmFjay5pZGwgXAorICAgICQoV2ViQ29yZSkvTW9kdWxlcy9tZWRpYXN0cmVhbS9DYXBhYmls
aXR5UmFuZ2UuaWRsIFwKKyAgICAkKFdlYkNvcmUpL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFT
b3VyY2VTdGF0ZXMuaWRsIFwKIAkkKFdlYkNvcmUpL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFT
dHJlYW0uaWRsIFwKKwkkKFdlYkNvcmUpL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1D
YXBhYmlsaXRpZXMuaWRsIFwKICAgICAkKFdlYkNvcmUpL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVk
aWFTdHJlYW1FdmVudC5pZGwgXAogICAgICQoV2ViQ29yZSkvTW9kdWxlcy9tZWRpYXN0cmVhbS9N
ZWRpYVN0cmVhbVRyYWNrLmlkbCBcCiAgICAgJChXZWJDb3JlKS9Nb2R1bGVzL21lZGlhc3RyZWFt
L01lZGlhU3RyZWFtVHJhY2tFdmVudC5pZGwgXAogICAgICQoV2ViQ29yZSkvTW9kdWxlcy9tZWRp
YXN0cmVhbS9NZWRpYVN0cmVhbVRyYWNrU291cmNlc0NhbGxiYWNrLmlkbCBcCisgICAgJChXZWJD
b3JlKS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhVHJhY2tDb25zdHJhaW50LmlkbCBcCisgICAg
JChXZWJDb3JlKS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhVHJhY2tDb25zdHJhaW50cy5pZGwg
XAorICAgICQoV2ViQ29yZSkvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVRyYWNrQ29uc3RyYWlu
dFNldC5pZGwgXAogICAgICQoV2ViQ29yZSkvTW9kdWxlcy9tZWRpYXN0cmVhbS9OYXZpZ2F0b3JN
ZWRpYVN0cmVhbS5pZGwgXAogICAgICQoV2ViQ29yZSkvTW9kdWxlcy9tZWRpYXN0cmVhbS9OYXZp
Z2F0b3JVc2VyTWVkaWFFcnJvci5pZGwgXAogICAgICQoV2ViQ29yZSkvTW9kdWxlcy9tZWRpYXN0
cmVhbS9OYXZpZ2F0b3JVc2VyTWVkaWFFcnJvckNhbGxiYWNrLmlkbCBcCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L0dOVW1ha2VmaWxlLmxpc3QuYW0JKHJldmlzaW9uIDE1NzAxNikKKysrIFNvdXJjZS9XZWJDb3Jl
L0dOVW1ha2VmaWxlLmxpc3QuYW0JKHdvcmtpbmcgY29weSkKQEAgLTMxLDYgKzMxLDEwIEBAIHdl
YmNvcmVfYnVpbHRfc291cmNlcyArPSBcCiAJRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9JbnNwZWN0
b3JQcm90b2NvbFZlcnNpb24uaCBcCiAJRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0Fic3RyYWN0
V29ya2VyLmNwcCBcCiAJRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0Fic3RyYWN0V29ya2VyLmgg
XAorCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNBbGxBdWRpb0NhcGFiaWxpdGllcy5jcHAgXAor
CURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNBbGxBdWRpb0NhcGFiaWxpdGllcy5oIFwKKwlEZXJp
dmVkU291cmNlcy9XZWJDb3JlL0pTQWxsVmlkZW9DYXBhYmlsaXRpZXMuY3BwIFwKKwlEZXJpdmVk
U291cmNlcy9XZWJDb3JlL0pTQWxsVmlkZW9DYXBhYmlsaXRpZXMuaCBcCiAJRGVyaXZlZFNvdXJj
ZXMvV2ViQ29yZS9KU0F0dHIuY3BwIFwKIAlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTQXR0ci5o
IFwKIAlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTQXVkaW9CdWZmZXIuY3BwIFwKQEAgLTg3LDYg
KzkxLDggQEAgd2ViY29yZV9idWlsdF9zb3VyY2VzICs9IFwKIAlEZXJpdmVkU291cmNlcy9XZWJD
b3JlL0pTQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmggXAogCURlcml2ZWRTb3VyY2VzL1dlYkNv
cmUvSlNDYW52YXNSZW5kZXJpbmdDb250ZXh0LmNwcCBcCiAJRGVyaXZlZFNvdXJjZXMvV2ViQ29y
ZS9KU0NhbnZhc1JlbmRlcmluZ0NvbnRleHQuaCBcCisJRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9K
U0NhcGFiaWxpdHlSYW5nZS5jcHAgXAorCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNDYXBhYmls
aXR5UmFuZ2UuaCBcCiAJRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0NEQVRBU2VjdGlvbi5jcHAg
XAogCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNDREFUQVNlY3Rpb24uaCBcCiAJRGVyaXZlZFNv
dXJjZXMvV2ViQ29yZS9KU0NoYXJhY3RlckRhdGEuY3BwIFwKQEAgLTQ2MiwxMiArNDY4LDE4IEBA
IHdlYmNvcmVfYnVpbHRfc291cmNlcyArPSBcCiAJRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU01l
ZGlhU291cmNlLmggXAogCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNXZWJLaXRNZWRpYVNvdXJj
ZS5jcHAgXAogCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNXZWJLaXRNZWRpYVNvdXJjZS5oIFwK
KwlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTTWVkaWFTb3VyY2VTdGF0ZXMuY3BwIFwKKwlEZXJp
dmVkU291cmNlcy9XZWJDb3JlL0pTTWVkaWFTb3VyY2VTdGF0ZXMuaCBcCisJRGVyaXZlZFNvdXJj
ZXMvV2ViQ29yZS9KU01lZGlhU291cmNlU3RhdGVzQ3VzdG9tLmNwcCBcCiAJRGVyaXZlZFNvdXJj
ZXMvV2ViQ29yZS9KU01lZGlhU3RyZWFtLmNwcCBcCiAJRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9K
U01lZGlhU3RyZWFtLmggXAogCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNNZWRpYVN0cmVhbUF1
ZGlvU291cmNlTm9kZS5jcHAgXAogCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNNZWRpYVN0cmVh
bUF1ZGlvU291cmNlTm9kZS5oIFwKIAlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTTWVkaWFTdHJl
YW1BdWRpb0Rlc3RpbmF0aW9uTm9kZS5jcHAgXAogCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNN
ZWRpYVN0cmVhbUF1ZGlvRGVzdGluYXRpb25Ob2RlLmggXAorCURlcml2ZWRTb3VyY2VzL1dlYkNv
cmUvSlNNZWRpYVN0cmVhbUNhcGFiaWxpdGllcy5jcHAgXAorCURlcml2ZWRTb3VyY2VzL1dlYkNv
cmUvSlNNZWRpYVN0cmVhbUNhcGFiaWxpdGllcy5oIFwKKwlEZXJpdmVkU291cmNlcy9XZWJDb3Jl
L0pTTWVkaWFTdHJlYW1DYXBhYmlsaXRpZXNDdXN0b20uY3BwIFwKIAlEZXJpdmVkU291cmNlcy9X
ZWJDb3JlL0pTTWVkaWFTdHJlYW1FdmVudC5jcHAgXAogCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUv
SlNNZWRpYVN0cmVhbUV2ZW50LmggXAogCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNNZWRpYVN0
cmVhbVRyYWNrLmNwcCBcCkBAIC00ODAsNiArNDkyLDEyIEBAIHdlYmNvcmVfYnVpbHRfc291cmNl
cyArPSBcCiAJRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU01lZGlhUXVlcnlMaXN0LmggXAogCURl
cml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyLmNwcCBcCiAJRGVy
aXZlZFNvdXJjZXMvV2ViQ29yZS9KU01lZGlhUXVlcnlMaXN0TGlzdGVuZXIuaCBcCisJRGVyaXZl
ZFNvdXJjZXMvV2ViQ29yZS9KU01lZGlhVHJhY2tDb25zdHJhaW50LmNwcCBcCisJRGVyaXZlZFNv
dXJjZXMvV2ViQ29yZS9KU01lZGlhVHJhY2tDb25zdHJhaW50LmggXAorCURlcml2ZWRTb3VyY2Vz
L1dlYkNvcmUvSlNNZWRpYVRyYWNrQ29uc3RyYWludHMuY3BwIFwKKwlEZXJpdmVkU291cmNlcy9X
ZWJDb3JlL0pTTWVkaWFUcmFja0NvbnN0cmFpbnRzLmggXAorCURlcml2ZWRTb3VyY2VzL1dlYkNv
cmUvSlNNZWRpYVRyYWNrQ29uc3RyYWludFNldC5jcHAgXAorCURlcml2ZWRTb3VyY2VzL1dlYkNv
cmUvSlNNZWRpYVRyYWNrQ29uc3RyYWludFNldC5oIFwKIAlEZXJpdmVkU291cmNlcy9XZWJDb3Jl
L0pTTWVzc2FnZUNoYW5uZWwuY3BwIFwKIAlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTTWVzc2Fn
ZUNoYW5uZWwuaCBcCiAJRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU01lc3NhZ2VFdmVudC5jcHAg
XApAQCAtMTE4NiwxMiArMTIwNCwyMCBAQCBkb21fYmluZGluZ19pZGxzICs9IFwKIAkkKFdlYkNv
cmUpL01vZHVsZXMvbWVkaWFzb3VyY2UvV2ViS2l0TWVkaWFTb3VyY2UuaWRsIFwKIAkkKFdlYkNv
cmUpL01vZHVsZXMvbWVkaWFzb3VyY2UvV2ViS2l0U291cmNlQnVmZmVyLmlkbCBcCiAJJChXZWJD
b3JlKS9Nb2R1bGVzL21lZGlhc291cmNlL1dlYktpdFNvdXJjZUJ1ZmZlckxpc3QuaWRsIFwKKwkk
KFdlYkNvcmUpL01vZHVsZXMvbWVkaWFzdHJlYW0vQWxsVmlkZW9DYXBhYmlsaXRpZXMuaWRsIFwK
KwkkKFdlYkNvcmUpL01vZHVsZXMvbWVkaWFzdHJlYW0vQWxsQXVkaW9DYXBhYmlsaXRpZXMuaWRs
IFwKIAkkKFdlYkNvcmUpL01vZHVsZXMvbWVkaWFzdHJlYW0vQXVkaW9TdHJlYW1UcmFjay5pZGwg
XAorCSQoV2ViQ29yZSkvTW9kdWxlcy9tZWRpYXN0cmVhbS9DYXBhYmlsaXR5UmFuZ2UuaWRsIFwK
KwkkKFdlYkNvcmUpL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTb3VyY2VTdGF0ZXMuaWRsIFwK
IAkkKFdlYkNvcmUpL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW0uaWRsIFwKKwkkKFdl
YkNvcmUpL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1DYXBhYmlsaXRpZXMuaWRsIFwK
IAkkKFdlYkNvcmUpL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1FdmVudC5pZGwgXAog
CSQoV2ViQ29yZSkvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVRyYWNrLmlkbCBcCiAJ
JChXZWJDb3JlKS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJhY2tFdmVudC5pZGwg
XAogCSQoV2ViQ29yZSkvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVRyYWNrU291cmNl
c0NhbGxiYWNrLmlkbCBcCisJJChXZWJDb3JlKS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhVHJh
Y2tDb25zdHJhaW50LmlkbCBcCisJJChXZWJDb3JlKS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlh
VHJhY2tDb25zdHJhaW50cy5pZGwgXAorCSQoV2ViQ29yZSkvTW9kdWxlcy9tZWRpYXN0cmVhbS9N
ZWRpYVRyYWNrQ29uc3RyYWludFNldC5pZGwgXAogCSQoV2ViQ29yZSkvTW9kdWxlcy9tZWRpYXN0
cmVhbS9OYXZpZ2F0b3JNZWRpYVN0cmVhbS5pZGwgXAogCSQoV2ViQ29yZSkvTW9kdWxlcy9tZWRp
YXN0cmVhbS9OYXZpZ2F0b3JVc2VyTWVkaWFFcnJvci5pZGwgXAogCSQoV2ViQ29yZSkvTW9kdWxl
cy9tZWRpYXN0cmVhbS9OYXZpZ2F0b3JVc2VyTWVkaWFFcnJvckNhbGxiYWNrLmlkbCBcCkBAIC0x
ODQ1LDEyICsxODcxLDIwIEBAIHdlYmNvcmVfbW9kdWxlc19zb3VyY2VzICs9IFwKIAlTb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL21lZGlhc291cmNlL1dlYktpdFNvdXJjZUJ1ZmZlci5oIFwKIAlTb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc291cmNlL1dlYktpdFNvdXJjZUJ1ZmZlckxpc3QuY3Bw
IFwKIAlTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc291cmNlL1dlYktpdFNvdXJjZUJ1ZmZl
ckxpc3QuaCBcCisJU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9BbGxBdWRpb0Nh
cGFiaWxpdGllcy5oIFwKKwlTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL0FsbFZp
ZGVvQ2FwYWJpbGl0aWVzLmggXAogCVNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0v
QXVkaW9TdHJlYW1UcmFjay5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJl
YW0vQXVkaW9TdHJlYW1UcmFjay5oIFwKKwlTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3Ry
ZWFtL0NhcGFiaWxpdHlSYW5nZS5jcHAgXAorCVNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFz
dHJlYW0vQ2FwYWJpbGl0eVJhbmdlLmggXAogCVNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFz
dHJlYW0vTWVkaWFDb25zdHJhaW50c0ltcGwuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L21lZGlhc3RyZWFtL01lZGlhQ29uc3RyYWludHNJbXBsLmggXAorCVNvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTb3VyY2VTdGF0ZXMuY3BwIFwKKwlTb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU291cmNlU3RhdGVzLmggXAogCVNvdXJjZS9XZWJD
b3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW0uY3BwIFwKIAlTb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtLmggXAorCVNvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1DYXBhYmlsaXRpZXMuY3BwIFwKKwlTb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtQ2FwYWJpbGl0aWVzLmggXAog
CVNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1FdmVudC5jcHAg
XAogCVNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1FdmVudC5o
IFwKIAlTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtUmVnaXN0
cnkuY3BwIFwKQEAgLTE4NjIsNiArMTg5NiwxMiBAQCB3ZWJjb3JlX21vZHVsZXNfc291cmNlcyAr
PSBcCiAJU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVRyYWNr
U291cmNlc0NhbGxiYWNrLmggXAogCVNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0v
TWVkaWFTdHJlYW1UcmFja1NvdXJjZXNSZXF1ZXN0LmNwcCBcCiAJU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVRyYWNrU291cmNlc1JlcXVlc3QuaCBcCisJU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVRyYWNrQ29uc3RyYWludC5jcHAg
XAorCVNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFUcmFja0NvbnN0cmFp
bnQuaCBcCisJU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVRyYWNrQ29u
c3RyYWludFNldC5jcHAgXAorCVNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVk
aWFUcmFja0NvbnN0cmFpbnRTZXQuaCBcCisJU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0
cmVhbS9NZWRpYVRyYWNrQ29uc3RyYWludHMuY3BwIFwKKwlTb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L21lZGlhc3RyZWFtL01lZGlhVHJhY2tDb25zdHJhaW50cy5oIFwKIAlTb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL21lZGlhc3RyZWFtL05hdmlnYXRvck1lZGlhU3RyZWFtLmNwcCBcCiAJU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9OYXZpZ2F0b3JNZWRpYVN0cmVhbS5oIFwKIAlTb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL05hdmlnYXRvclVzZXJNZWRpYUVycm9yLmNw
cCBcCkBAIC01MzI4LDYgKzUzNjgsOCBAQCB3ZWJjb3JlX3BsYXRmb3JtX3NvdXJjZXMgKz0gXAog
CVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2xpbnV4L0dhbWVwYWREZXZpY2VMaW51eC5jcHAgXAog
CVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2xpbnV4L0dhbWVwYWREZXZpY2VMaW51eC5oIFwKIAlT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYUNvbnN0cmFpbnRzLmggXAor
CVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtQXVkaW9Tb3Vy
Y2UuY3BwIFwKKwlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYVN0cmVh
bUF1ZGlvU291cmNlLmggXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL01l
ZGlhU3RyZWFtQ2VudGVyLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJl
YW0vTWVkaWFTdHJlYW1DZW50ZXIuaCBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFz
dHJlYW0vTWVkaWFTdHJlYW1Db25zdHJhaW50c1ZhbGlkYXRpb25DbGllbnQuaCBcCkBAIC01MzM2
LDYgKzUzNzgsNyBAQCB3ZWJjb3JlX3BsYXRmb3JtX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtRGVzY3JpcHRvci5oIFwKIAlTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVNvdXJjZS5jcHAgXAog
CVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtU291cmNlLmgg
XAorCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtU291cmNl
Q2FwYWJpbGl0aWVzLmggXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL01l
ZGlhU3RyZWFtVHJhY2tTb3VyY2VzUmVxdWVzdENsaWVudC5oIFwKIAlTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tZWRpYXN0cmVhbS9SVENDb25maWd1cmF0aW9uLmggXAogCVNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21lZGlhc3RyZWFtL1JUQ0RUTUZTZW5kZXJIYW5kbGVyLmggXApJbmRleDogU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9BbGxBdWRpb0NhcGFiaWxpdGllcy5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vQWxsQXVkaW9D
YXBhYmlsaXRpZXMuaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVk
aWFzdHJlYW0vQWxsQXVkaW9DYXBhYmlsaXRpZXMuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsx
LDU5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjaWZuZGVmIEFsbEF1ZGlvQ2FwYWJpbGl0aWVzX2gKKyNkZWZpbmUg
QWxsQXVkaW9DYXBhYmlsaXRpZXNfaAorCisjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKKworI2lu
Y2x1ZGUgIk1lZGlhU3RyZWFtQ2FwYWJpbGl0aWVzLmgiCisjaW5jbHVkZSAiTWVkaWFTdHJlYW1T
b3VyY2VDYXBhYmlsaXRpZXMuaCIKKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KKwor
bmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBDYXBhYmlsaXR5UmFuZ2U7CitjbGFzcyBNZWRp
YVN0cmVhbVNvdXJjZUNhcGFiaWxpdGllczsKKworY2xhc3MgQWxsQXVkaW9DYXBhYmlsaXRpZXMg
OiBwdWJsaWMgTWVkaWFTdHJlYW1DYXBhYmlsaXRpZXMgeworcHVibGljOgorICAgIHN0YXRpYyBQ
YXNzUmVmUHRyPEFsbEF1ZGlvQ2FwYWJpbGl0aWVzPiBjcmVhdGUoUGFzc1JlZlB0cjxNZWRpYVN0
cmVhbVNvdXJjZUNhcGFiaWxpdGllcz4gY2FwYWJpbGl0aWVzKQorICAgIHsKKyAgICAgICAgcmV0
dXJuIGFkb3B0UmVmKG5ldyBBbGxBdWRpb0NhcGFiaWxpdGllcyhjYXBhYmlsaXRpZXMpKTsKKyAg
ICB9CisgICAgdmlydHVhbCB+QWxsQXVkaW9DYXBhYmlsaXRpZXMoKSB7IH0KKworcHJpdmF0ZToK
KyAgICBleHBsaWNpdCBBbGxBdWRpb0NhcGFiaWxpdGllcyhQYXNzUmVmUHRyPE1lZGlhU3RyZWFt
U291cmNlQ2FwYWJpbGl0aWVzPiBjYXBhYmlsaXRpZXMpCisgICAgICAgIDogTWVkaWFTdHJlYW1D
YXBhYmlsaXRpZXMoY2FwYWJpbGl0aWVzKQorICAgIHsKKyAgICB9Cit9OworCit9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBBbGxBdWRpb0NhcGFiaWxpdGllc19oCisKKyNlbmRp
ZgpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9BbGxBdWRpb0NhcGFi
aWxpdGllcy5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0
cmVhbS9BbGxBdWRpb0NhcGFiaWxpdGllcy5pZGwJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL0FsbEF1ZGlvQ2FwYWJpbGl0aWVzLmlkbAkod29ya2lu
ZyBjb3B5KQpAQCAtMCwwICsxLDMzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisg
KiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAor
ICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworWworICAgIE5vSW50ZXJmYWNlT2Jq
ZWN0LAorICAgIENvbmRpdGlvbmFsPU1FRElBX1NUUkVBTSwKKyAgICBKU0dlbmVyYXRlVG9KU09i
amVjdCwKK10gaW50ZXJmYWNlIEFsbEF1ZGlvQ2FwYWJpbGl0aWVzIDogTWVkaWFTdHJlYW1DYXBh
YmlsaXRpZXMgeworICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBET01TdHJpbmdbXSBzb3VyY2VJZDsK
KyAgICByZWFkb25seSBhdHRyaWJ1dGUgQ2FwYWJpbGl0eVJhbmdlIHZvbHVtZTsKK307CkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL0FsbFZpZGVvQ2FwYWJpbGl0aWVz
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9BbGxW
aWRlb0NhcGFiaWxpdGllcy5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9tZWRpYXN0cmVhbS9BbGxWaWRlb0NhcGFiaWxpdGllcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0w
LDAgKzEsNTcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisg
KiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisg
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgQWxsVmlkZW9DYXBhYmlsaXRpZXNfaAorI2Rl
ZmluZSBBbGxWaWRlb0NhcGFiaWxpdGllc19oCisKKyNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQor
CisjaW5jbHVkZSAiTWVkaWFTdHJlYW1DYXBhYmlsaXRpZXMuaCIKKworbmFtZXNwYWNlIFdlYkNv
cmUgeworCitjbGFzcyBDYXBhYmlsaXR5UmFuZ2U7CitjbGFzcyBNZWRpYVN0cmVhbVNvdXJjZUNh
cGFiaWxpdGllczsKKworY2xhc3MgQWxsVmlkZW9DYXBhYmlsaXRpZXMgOiBwdWJsaWMgTWVkaWFT
dHJlYW1DYXBhYmlsaXRpZXMgeworcHVibGljOgorICAgIHN0YXRpYyBQYXNzUmVmUHRyPEFsbFZp
ZGVvQ2FwYWJpbGl0aWVzPiBjcmVhdGUoUGFzc1JlZlB0cjxNZWRpYVN0cmVhbVNvdXJjZUNhcGFi
aWxpdGllcz4gY2FwYWJpbGl0aWVzKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5l
dyBBbGxWaWRlb0NhcGFiaWxpdGllcyhjYXBhYmlsaXRpZXMpKTsKKyAgICB9CisgICAgdmlydHVh
bCB+QWxsVmlkZW9DYXBhYmlsaXRpZXMoKSB7IH0KKworcHJpdmF0ZToKKyAgICBleHBsaWNpdCBB
bGxWaWRlb0NhcGFiaWxpdGllcyhQYXNzUmVmUHRyPE1lZGlhU3RyZWFtU291cmNlQ2FwYWJpbGl0
aWVzPiBjYXBhYmlsaXRpZXMpCisgICAgICAgIDogTWVkaWFTdHJlYW1DYXBhYmlsaXRpZXMoY2Fw
YWJpbGl0aWVzKQorICAgIHsKKyAgICB9Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisK
KyNlbmRpZiAvLyBBbGxWaWRlb0NhcGFiaWxpdGllc19oCisKKyNlbmRpZgpJbmRleDogU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9BbGxWaWRlb0NhcGFiaWxpdGllcy5pZGwKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9BbGxWaWRlb0Nh
cGFiaWxpdGllcy5pZGwJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21l
ZGlhc3RyZWFtL0FsbFZpZGVvQ2FwYWJpbGl0aWVzLmlkbAkod29ya2luZyBjb3B5KQpAQCAtMCww
ICsxLDM4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICog
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICog
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4gCisgKi8KKworWworICAgIE5vSW50ZXJmYWNlT2JqZWN0LAorICAgIENvbmRp
dGlvbmFsPU1FRElBX1NUUkVBTSwKKyAgICBKU0dlbmVyYXRlVG9KU09iamVjdCwKK10gaW50ZXJm
YWNlIEFsbFZpZGVvQ2FwYWJpbGl0aWVzIDogTWVkaWFTdHJlYW1DYXBhYmlsaXRpZXMgeworICAg
IHJlYWRvbmx5IGF0dHJpYnV0ZSBET01TdHJpbmdbXSBzb3VyY2VUeXBlOworICAgIHJlYWRvbmx5
IGF0dHJpYnV0ZSBET01TdHJpbmdbXSBzb3VyY2VJZDsKKyAgICByZWFkb25seSBhdHRyaWJ1dGUg
Q2FwYWJpbGl0eVJhbmdlIHdpZHRoOworICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBDYXBhYmlsaXR5
UmFuZ2UgaGVpZ2h0OworICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBDYXBhYmlsaXR5UmFuZ2UgZnJh
bWVSYXRlOworICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBDYXBhYmlsaXR5UmFuZ2UgYXNwZWN0UmF0
aW87CisgICAgcmVhZG9ubHkgYXR0cmlidXRlIERPTVN0cmluZ1tdICBmYWNpbmdNb2RlOworfTsK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vQXVkaW9TdHJlYW1UcmFj
ay5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9B
dWRpb1N0cmVhbVRyYWNrLmNwcAkocmV2aXNpb24gMTU3MDE2KQorKysgU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9tZWRpYXN0cmVhbS9BdWRpb1N0cmVhbVRyYWNrLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMzcsMTQgKzM3LDE3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogUGFzc1JlZlB0cjxBdWRp
b1N0cmVhbVRyYWNrPiBBdWRpb1N0cmVhbVRyYWNrOjpjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCogY29udGV4dCwgY29uc3QgRGljdGlvbmFyeSYgYXVkaW9Db25zdHJhaW50cykKIHsKLSAg
ICBSZWZQdHI8QXVkaW9TdHJlYW1UcmFjaz4gdHJhY2sgPSBhZG9wdFJlZihuZXcgQXVkaW9TdHJl
YW1UcmFjayhjb250ZXh0LCAwLCAmYXVkaW9Db25zdHJhaW50cykpOwotICAgIHJldHVybiB0cmFj
ay5yZWxlYXNlKCk7CisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBBdWRpb1N0cmVhbVRyYWNrKGNv
bnRleHQsIDAsICZhdWRpb0NvbnN0cmFpbnRzKSk7CiB9CiAKIFBhc3NSZWZQdHI8QXVkaW9TdHJl
YW1UcmFjaz4gQXVkaW9TdHJlYW1UcmFjazo6Y3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQq
IGNvbnRleHQsIE1lZGlhU3RyZWFtU291cmNlKiBzb3VyY2UpCiB7Ci0gICAgUmVmUHRyPEF1ZGlv
U3RyZWFtVHJhY2s+IHRyYWNrID0gYWRvcHRSZWYobmV3IEF1ZGlvU3RyZWFtVHJhY2soY29udGV4
dCwgc291cmNlLCAwKSk7Ci0gICAgcmV0dXJuIHRyYWNrLnJlbGVhc2UoKTsKKyAgICByZXR1cm4g
YWRvcHRSZWYobmV3IEF1ZGlvU3RyZWFtVHJhY2soY29udGV4dCwgc291cmNlLCAwKSk7Cit9CisK
K1Bhc3NSZWZQdHI8QXVkaW9TdHJlYW1UcmFjaz4gQXVkaW9TdHJlYW1UcmFjazo6Y3JlYXRlKE1l
ZGlhU3RyZWFtVHJhY2sqIHRyYWNrKQoreworICAgIHJldHVybiBhZG9wdFJlZihuZXcgQXVkaW9T
dHJlYW1UcmFjayh0cmFjaykpOwogfQogCiBBdWRpb1N0cmVhbVRyYWNrOjpBdWRpb1N0cmVhbVRy
YWNrKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIE1lZGlhU3RyZWFtU291cmNlKiBz
b3VyY2UsIGNvbnN0IERpY3Rpb25hcnkqIGF1ZGlvQ29uc3RyYWludHMpCkBAIC01Miw2ICs1NSwx
MSBAQCBBdWRpb1N0cmVhbVRyYWNrOjpBdWRpb1N0cmVhbVRyYWNrKFNjcmlwCiB7CiB9CiAKK0F1
ZGlvU3RyZWFtVHJhY2s6OkF1ZGlvU3RyZWFtVHJhY2soTWVkaWFTdHJlYW1UcmFjayogdHJhY2sp
CisgICAgOiBNZWRpYVN0cmVhbVRyYWNrKHRyYWNrKQoreworfQorCiBjb25zdCBBdG9taWNTdHJp
bmcmIEF1ZGlvU3RyZWFtVHJhY2s6OmtpbmQoKSBjb25zdAogewogICAgIHN0YXRpYyBOZXZlckRl
c3Ryb3llZDxBdG9taWNTdHJpbmc+IGF1ZGlvS2luZCgiYXVkaW8iLCBBdG9taWNTdHJpbmc6OkNv
bnN0cnVjdEZyb21MaXRlcmFsKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFz
dHJlYW0vQXVkaW9TdHJlYW1UcmFjay5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvbWVkaWFzdHJlYW0vQXVkaW9TdHJlYW1UcmFjay5oCShyZXZpc2lvbiAxNTcwMTYpCisr
KyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL0F1ZGlvU3RyZWFtVHJhY2suaAko
d29ya2luZyBjb3B5KQpAQCAtMjksMTggKzI5LDE5IEBACiAjaWYgRU5BQkxFKE1FRElBX1NUUkVB
TSkKIAogI2luY2x1ZGUgIk1lZGlhU3RyZWFtVHJhY2suaCIKLSNpbmNsdWRlIDx3dGYvVmVjdG9y
Lmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgTWVkaWFTdHJlYW1Tb3VyY2U7CiBjbGFz
cyBTY3JpcHRFeGVjdXRpb25Db250ZXh0OwogCi1jbGFzcyBBdWRpb1N0cmVhbVRyYWNrIDogcHVi
bGljIE1lZGlhU3RyZWFtVHJhY2sgeworY2xhc3MgQXVkaW9TdHJlYW1UcmFjayBGSU5BTCA6IHB1
YmxpYyBNZWRpYVN0cmVhbVRyYWNrIHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxB
dWRpb1N0cmVhbVRyYWNrPiBjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIGNvbnN0IERp
Y3Rpb25hcnkmKTsKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxBdWRpb1N0cmVhbVRyYWNrPiBjcmVh
dGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIE1lZGlhU3RyZWFtU291cmNlKik7CisgICAgc3Rh
dGljIFBhc3NSZWZQdHI8QXVkaW9TdHJlYW1UcmFjaz4gY3JlYXRlKE1lZGlhU3RyZWFtVHJhY2sq
KTsKIAogICAgIHZpcnR1YWwgfkF1ZGlvU3RyZWFtVHJhY2soKSB7IH0KIApAQCAtNDgsNiArNDks
NyBAQCBwdWJsaWM6CiAKIHByaXZhdGU6CiAgICAgQXVkaW9TdHJlYW1UcmFjayhTY3JpcHRFeGVj
dXRpb25Db250ZXh0KiwgTWVkaWFTdHJlYW1Tb3VyY2UqLCBjb25zdCBEaWN0aW9uYXJ5Kik7Cisg
ICAgZXhwbGljaXQgQXVkaW9TdHJlYW1UcmFjayhNZWRpYVN0cmVhbVRyYWNrKik7CiB9OwogCiB9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlh
c3RyZWFtL0NhcGFiaWxpdHlSYW5nZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9tZWRpYXN0cmVhbS9DYXBhYmlsaXR5UmFuZ2UuY3BwCShyZXZpc2lvbiAwKQorKysg
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9DYXBhYmlsaXR5UmFuZ2UuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsOTIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgor
CisjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKKworI2luY2x1ZGUgIkNhcGFiaWxpdHlSYW5nZS5o
IgorCisjaW5jbHVkZSAiSlNET01CaW5kaW5nLmgiCisjaW5jbHVkZSAiTWVkaWFTb3VyY2VTdGF0
ZXMuaCIKKyNpbmNsdWRlICJTY3JpcHRWYWx1ZS5oIgorI2luY2x1ZGUgPGludGVycHJldGVyL0Nh
bGxGcmFtZS5oPgorI2luY2x1ZGUgPHJ1bnRpbWUvSlNDSlNWYWx1ZS5oPgorCit1c2luZyBuYW1l
c3BhY2UgSlNDOworCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1Bhc3NSZWZQdHI8Q2FwYWJpbGl0
eVJhbmdlPiBDYXBhYmlsaXR5UmFuZ2U6OmNyZWF0ZShjb25zdCBNZWRpYVN0cmVhbVNvdXJjZUNh
cGFiaWxpdHlSYW5nZSYgcmFuZ2VJbmZvKQoreworICAgIHJldHVybiBhZG9wdFJlZihuZXcgQ2Fw
YWJpbGl0eVJhbmdlKHJhbmdlSW5mbykpOworfQorCitDYXBhYmlsaXR5UmFuZ2U6OkNhcGFiaWxp
dHlSYW5nZShjb25zdCBNZWRpYVN0cmVhbVNvdXJjZUNhcGFiaWxpdHlSYW5nZSYgcmFuZ2VJbmZv
KQorICAgIDogbV9yYW5nZUluZm8ocmFuZ2VJbmZvKQoreworfQorCitzdGF0aWMgU2NyaXB0VmFs
dWUgc2NyaXB0VmFsdWUoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBNZWRpYVN0cmVhbVNvdXJjZUNh
cGFiaWxpdHlSYW5nZTo6VmFsdWVVbmlvbiYgdmFsdWUsIE1lZGlhU3RyZWFtU291cmNlQ2FwYWJp
bGl0eVJhbmdlOjpUeXBlIHR5cGUpCit7CisgICAgLy8gTk9URTogdGhlIHNwZWMgc2F5czoKKyAg
ICAvLyAgICAgIC4uLiBhbiBpbXBsZW1lbnRhdGlvbiBzaG91bGQgbWFrZSBhIHJlYXNvbmFibGUg
YXR0ZW1wdCB0byB0cmFuc2xhdGUgYW5kIHNjYWxlIHRoZSBoYXJkd2FyZSdzIHNldHRpbmcKKyAg
ICAvLyAgICAgIG9udG8gdGhlIG1hcHBpbmcgcHJvdmlkZWQgYnkgdGhpcyBzcGVjaWZpY2F0aW9u
LiBJZiB0aGlzIGlzIG5vdCBwb3NzaWJsZSBkdWUgdG8gdGhlIHVzZXIgYWdlbnQncworICAgIC8v
ICAgICAgaW5hYmlsaXR5IHRvIHJldHJpZXZlIGEgZ2l2ZW4gY2FwYWJpbGl0eSBmcm9tIGEgc291
cmNlLCB0aGVuIGZvciBDYXBhYmlsaXR5UmFuZ2UtdHlwZWQgY2FwYWJpbGl0aWVzLAorICAgIC8v
ICAgICAgdGhlIG1pbiBhbmQgbWF4IGZpZWxkcyB3aWxsIG5vdCBiZSBwcmVzZW50IG9uIHRoZSBy
ZXR1cm5lZCBkaWN0aW9uYXJ5LCBhbmQgdGhlIHN1cHBvcnRlZCBmaWVsZCB3aWxsIGJlIGZhbHNl
LgorICAgIC8vIFdlIGRvbid0IGRvIHRoaXMgY3VycmVudGx5IGJlY2F1c2UgSSBkb24ndCBrbm93
IG9mIGFuIGluc3RhbmNlIHdoZXJlIGl0IGlzbid0IHBvc3NpYmxlIHRvIHJldHJpZXZlIGEgc291
cmNlCisgICAgLy8gY2FwYWJpbGl0eSwgYnV0IHdoZW4gd2UgaGF2ZSB0byBkZWFsIHdpdGggdGhp
cyB3ZSB3aWxsIG5lZWQgdG8gbWFyayBDYXBhYmlsaXR5UmFuZ2UubWluIGFuZCBDYXBhYmlsaXR5
UmFuZ2UubWF4IGFzCisgICAgLy8gIkN1c3RvbSIgYW5kIHJldHVybiBqc1VuZGVmaW5lZCgpIGZy
b20gdGhlIGN1c3RvbSBnZXR0ZXIgdG8gc3VwcG9ydCBpdC4KKyAgICAKKyAgICBzd2l0Y2ggKHR5
cGUpIHsKKyAgICBjYXNlIE1lZGlhU3RyZWFtU291cmNlQ2FwYWJpbGl0eVJhbmdlOjpGbG9hdDoK
KyAgICAgICAgcmV0dXJuIFNjcmlwdFZhbHVlKGV4ZWMtPnZtKCksIEpTVmFsdWUodmFsdWUuYXNG
bG9hdCkpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIE1lZGlhU3RyZWFtU291cmNlQ2FwYWJp
bGl0eVJhbmdlOjpVTG9uZzoKKyAgICAgICAgcmV0dXJuIFNjcmlwdFZhbHVlKGV4ZWMtPnZtKCks
IEpTVmFsdWUodmFsdWUuYXNVTG9uZykpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIE1lZGlh
U3RyZWFtU291cmNlQ2FwYWJpbGl0eVJhbmdlOjpVbmRlZmluZWQ6CisgICAgICAgIHJldHVybiBT
Y3JpcHRWYWx1ZShleGVjLT52bSgpLCBqc1VuZGVmaW5lZCgpKTsKKyAgICAgICAgYnJlYWs7Cisg
ICAgfQorCisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIFNjcmlwdFZhbHVl
KGV4ZWMtPnZtKCksIGpzVW5kZWZpbmVkKCkpOworfQorCitTY3JpcHRWYWx1ZSBDYXBhYmlsaXR5
UmFuZ2U6Om1pbihFeGVjU3RhdGUqIGV4ZWMpIGNvbnN0Cit7CisgICAgcmV0dXJuIHNjcmlwdFZh
bHVlKGV4ZWMsIG1fcmFuZ2VJbmZvLm1pbigpLCBtX3JhbmdlSW5mby50eXBlKCkpOworfQorCitT
Y3JpcHRWYWx1ZSBDYXBhYmlsaXR5UmFuZ2U6Om1heChFeGVjU3RhdGUqIGV4ZWMpIGNvbnN0Cit7
CisgICAgcmV0dXJuIHNjcmlwdFZhbHVlKGV4ZWMsIG1fcmFuZ2VJbmZvLm1heCgpLCBtX3Jhbmdl
SW5mby50eXBlKCkpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZgpJbmRl
eDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9DYXBhYmlsaXR5UmFuZ2UuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL0NhcGFiaWxp
dHlSYW5nZS5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0
cmVhbS9DYXBhYmlsaXR5UmFuZ2UuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDYwIEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFLCBJTkMu
IGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4g
T1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKgorICov
CisKKyNpZm5kZWYgQ2FwYWJpbGl0eVJhbmdlX2gKKyNkZWZpbmUgQ2FwYWJpbGl0eVJhbmdlX2gK
KworI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCisKKyNpbmNsdWRlICJNZWRpYVN0cmVhbVNvdXJj
ZUNhcGFiaWxpdGllcy5oIgorI2luY2x1ZGUgIlNjcmlwdFZhbHVlLmgiCisjaW5jbHVkZSAiU2Ny
aXB0V3JhcHBhYmxlLmgiCisjaW5jbHVkZSA8aW50ZXJwcmV0ZXIvQ2FsbEZyYW1lLmg+CisjaW5j
bHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBD
YXBhYmlsaXR5UmFuZ2UgOiBwdWJsaWMgUmVmQ291bnRlZDxDYXBhYmlsaXR5UmFuZ2U+LCBwdWJs
aWMgU2NyaXB0V3JhcHBhYmxlIHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIH5DYXBhYmlsaXR5UmFu
Z2UoKSB7IH0KKworICAgIHN0YXRpYyBQYXNzUmVmUHRyPENhcGFiaWxpdHlSYW5nZT4gY3JlYXRl
KGNvbnN0IE1lZGlhU3RyZWFtU291cmNlQ2FwYWJpbGl0eVJhbmdlJik7CisKKyAgICBTY3JpcHRW
YWx1ZSBtaW4oSlNDOjpFeGVjU3RhdGUqKSBjb25zdDsKKyAgICBTY3JpcHRWYWx1ZSBtYXgoSlND
OjpFeGVjU3RhdGUqKSBjb25zdDsKKyAgICBib29sIHN1cHBvcnRlZCgpIGNvbnN0IHsgcmV0dXJu
IG1fcmFuZ2VJbmZvLnN1cHBvcnRlZCgpOyB9CisKK3ByaXZhdGU6CisgICAgQ2FwYWJpbGl0eVJh
bmdlKGNvbnN0IE1lZGlhU3RyZWFtU291cmNlQ2FwYWJpbGl0eVJhbmdlJik7CisgICAgCisgICAg
TWVkaWFTdHJlYW1Tb3VyY2VDYXBhYmlsaXR5UmFuZ2UgbV9yYW5nZUluZm87Cit9OworCit9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBDYXBhYmlsaXR5UmFuZ2VfaAorCisjZW5k
aWYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vQ2FwYWJpbGl0eVJh
bmdlLmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFt
L0NhcGFiaWxpdHlSYW5nZS5pZGwJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL21lZGlhc3RyZWFtL0NhcGFiaWxpdHlSYW5nZS5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTAs
MCArMSwzMyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAq
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuIAorICovCisKK1sKKyAgICBOb0ludGVyZmFjZU9iamVjdCwKKyAgICBDb25k
aXRpb25hbD1NRURJQV9TVFJFQU0sCitdIGludGVyZmFjZSBDYXBhYmlsaXR5UmFuZ2UgeworICAg
IFtDYWxsV2l0aD1TY3JpcHRTdGF0ZV0gcmVhZG9ubHkgYXR0cmlidXRlIGFueSBtYXg7CisgICAg
W0NhbGxXaXRoPVNjcmlwdFN0YXRlXSByZWFkb25seSBhdHRyaWJ1dGUgYW55IG1pbjsKKyAgICBy
ZWFkb25seSBhdHRyaWJ1dGUgYm9vbGVhbiBzdXBwb3J0ZWQ7Cit9OwpJbmRleDogU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYUNvbnN0cmFpbnRzSW1wbC5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFDb25zdHJhaW50
c0ltcGwuaAkocmV2aXNpb24gMTU3MDE2KQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRp
YXN0cmVhbS9NZWRpYUNvbnN0cmFpbnRzSW1wbC5oCSh3b3JraW5nIGNvcHkpCkBAIC00NSw3ICs0
NSw5IEBAIGNsYXNzIE1lZGlhQ29uc3RyYWludHNJbXBsIDogcHVibGljIE1lZGkKIHB1YmxpYzoK
ICAgICBzdGF0aWMgUGFzc1JlZlB0cjxNZWRpYUNvbnN0cmFpbnRzSW1wbD4gY3JlYXRlKCk7CiAg
ICAgc3RhdGljIFBhc3NSZWZQdHI8TWVkaWFDb25zdHJhaW50c0ltcGw+IGNyZWF0ZShjb25zdCBE
aWN0aW9uYXJ5JiwgRXhjZXB0aW9uQ29kZSYpOworCiAgICAgdmlydHVhbCB+TWVkaWFDb25zdHJh
aW50c0ltcGwoKTsKKyAgICBib29sIGluaXRpYWxpemUoY29uc3QgRGljdGlvbmFyeSYpOwogCiAg
ICAgdmlydHVhbCB2b2lkIGdldE1hbmRhdG9yeUNvbnN0cmFpbnRzKFZlY3RvcjxNZWRpYUNvbnN0
cmFpbnQ+JikgY29uc3QgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIGdldE9wdGlvbmFsQ29u
c3RyYWludHMoVmVjdG9yPE1lZGlhQ29uc3RyYWludD4mKSBjb25zdCBPVkVSUklERTsKQEAgLTU1
LDcgKzU3LDYgQEAgcHVibGljOgogCiBwcml2YXRlOgogICAgIE1lZGlhQ29uc3RyYWludHNJbXBs
KCkgeyB9Ci0gICAgYm9vbCBpbml0aWFsaXplKGNvbnN0IERpY3Rpb25hcnkmKTsKIAogICAgIEhh
c2hNYXA8U3RyaW5nLCBTdHJpbmc+IG1fbWFuZGF0b3J5Q29uc3RyYWludHM7CiAgICAgVmVjdG9y
PE1lZGlhQ29uc3RyYWludD4gbV9vcHRpb25hbENvbnN0cmFpbnRzOwpJbmRleDogU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVNvdXJjZVN0YXRlcy5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVNvdXJjZVN0YXRl
cy5jcHAJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFt
L01lZGlhU291cmNlU3RhdGVzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDEwMCBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01Q
VVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBV
VEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkK
KworI2luY2x1ZGUgIk1lZGlhU291cmNlU3RhdGVzLmgiCisKKyNpbmNsdWRlIDx3dGYvTmV2ZXJE
ZXN0cm95ZWQuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitQYXNzUmVmUHRyPE1lZGlhU291
cmNlU3RhdGVzPiBNZWRpYVNvdXJjZVN0YXRlczo6Y3JlYXRlKGNvbnN0IE1lZGlhU3RyZWFtU291
cmNlU3RhdGVzJiBzdGF0ZXMpCit7CisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBNZWRpYVNvdXJj
ZVN0YXRlcyhzdGF0ZXMpKTsKK30KKworTWVkaWFTb3VyY2VTdGF0ZXM6Ok1lZGlhU291cmNlU3Rh
dGVzKGNvbnN0IE1lZGlhU3RyZWFtU291cmNlU3RhdGVzJiBzdGF0ZXMpCisgICAgOiBtX1NvdXJj
ZVN0YXRlcyhzdGF0ZXMpCit7Cit9CisKK2NvbnN0IEF0b21pY1N0cmluZyYgTWVkaWFTb3VyY2VT
dGF0ZXM6OmZhY2luZ01vZGUoTWVkaWFTdHJlYW1Tb3VyY2VTdGF0ZXM6OlZpZGVvRmFjaW5nTW9k
ZSBtb2RlKQoreworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxBdG9taWNTdHJpbmc+IHVzZXJG
YWNpbmcoInVzZXIiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKKyAgICBz
dGF0aWMgTmV2ZXJEZXN0cm95ZWQ8QXRvbWljU3RyaW5nPiBlbnZpcm9ubWVudEZhY2luZygiZW52
aXJvbm1lbnQiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKKyAgICBzdGF0
aWMgTmV2ZXJEZXN0cm95ZWQ8QXRvbWljU3RyaW5nPiBsZWZ0RmFjaW5nKCJsZWZ0IiwgQXRvbWlj
U3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVk
PEF0b21pY1N0cmluZz4gcmlnaHRGYWNpbmcoInJpZ2h0IiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1
Y3RGcm9tTGl0ZXJhbCk7CisgICAgCisgICAgc3dpdGNoIChtb2RlKSB7CisgICAgY2FzZSBNZWRp
YVN0cmVhbVNvdXJjZVN0YXRlczo6VXNlcjoKKyAgICAgICAgcmV0dXJuIHVzZXJGYWNpbmc7Cisg
ICAgY2FzZSBNZWRpYVN0cmVhbVNvdXJjZVN0YXRlczo6RW52aXJvbm1lbnQ6CisgICAgICAgIHJl
dHVybiBlbnZpcm9ubWVudEZhY2luZzsKKyAgICBjYXNlIE1lZGlhU3RyZWFtU291cmNlU3RhdGVz
OjpMZWZ0OgorICAgICAgICByZXR1cm4gbGVmdEZhY2luZzsKKyAgICBjYXNlIE1lZGlhU3RyZWFt
U291cmNlU3RhdGVzOjpSaWdodDoKKyAgICAgICAgcmV0dXJuIHJpZ2h0RmFjaW5nOworICAgIH0K
KworICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiBlbXB0eUF0b207Cit9CisK
K2NvbnN0IEF0b21pY1N0cmluZyYgTWVkaWFTb3VyY2VTdGF0ZXM6OnNvdXJjZVR5cGUoTWVkaWFT
dHJlYW1Tb3VyY2VTdGF0ZXM6OlNvdXJjZVR5cGUgc291cmNlVHlwZSkKK3sKKyAgICBzdGF0aWMg
TmV2ZXJEZXN0cm95ZWQ8QXRvbWljU3RyaW5nPiBub25lKCJub25lIiwgQXRvbWljU3RyaW5nOjpD
b25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEF0b21pY1N0
cmluZz4gY2FtZXJhKCJjYW1lcmEiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFs
KTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8QXRvbWljU3RyaW5nPiBtaWNyb3Bob25lKCJt
aWNyb3Bob25lIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CisKKyAgICBz
d2l0Y2ggKHNvdXJjZVR5cGUpIHsKKyAgICBjYXNlIE1lZGlhU3RyZWFtU291cmNlU3RhdGVzOjpO
b25lOgorICAgICAgICByZXR1cm4gbm9uZTsKKyAgICBjYXNlIE1lZGlhU3RyZWFtU291cmNlU3Rh
dGVzOjpDYW1lcmE6CisgICAgICAgIHJldHVybiBjYW1lcmE7CisgICAgY2FzZSBNZWRpYVN0cmVh
bVNvdXJjZVN0YXRlczo6TWljcm9waG9uZToKKyAgICAgICAgcmV0dXJuIG1pY3JvcGhvbmU7Cisg
ICAgfQorCisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIGVtcHR5QXRvbTsK
K30KKworY29uc3QgQXRvbWljU3RyaW5nJiBNZWRpYVNvdXJjZVN0YXRlczo6c291cmNlVHlwZSgp
IGNvbnN0Cit7CisgICAgcmV0dXJuIE1lZGlhU291cmNlU3RhdGVzOjpzb3VyY2VUeXBlKG1fU291
cmNlU3RhdGVzLnNvdXJjZVR5cGUpOworfQorCitjb25zdCBBdG9taWNTdHJpbmcmIE1lZGlhU291
cmNlU3RhdGVzOjpmYWNpbmdNb2RlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gTWVkaWFTb3VyY2VT
dGF0ZXM6OmZhY2luZ01vZGUobV9Tb3VyY2VTdGF0ZXMuZmFjaW5nTW9kZSk7Cit9CisKKworfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvbWVkaWFzdHJlYW0vTWVkaWFTb3VyY2VTdGF0ZXMuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU291cmNlU3RhdGVzLmgJKHJldmlzaW9u
IDApCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU291cmNlU3Rh
dGVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw2NiBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElT
JycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQor
ICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBN
ZWRpYVNvdXJjZVN0YXRlc19oCisjZGVmaW5lIE1lZGlhU291cmNlU3RhdGVzX2gKKworI2lmIEVO
QUJMRShNRURJQV9TVFJFQU0pCisKKyNpbmNsdWRlICJNZWRpYVN0cmVhbVNvdXJjZUNhcGFiaWxp
dGllcy5oIgorI2luY2x1ZGUgIlNjcmlwdFdyYXBwYWJsZS5oIgorI2luY2x1ZGUgPHd0Zi9Gb3J3
YXJkLmg+CisjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUg
eworCitjbGFzcyBNZWRpYVNvdXJjZVN0YXRlcyA6IHB1YmxpYyBSZWZDb3VudGVkPE1lZGlhU291
cmNlU3RhdGVzPiwgcHVibGljIFNjcmlwdFdyYXBwYWJsZSB7CitwdWJsaWM6CisgICAgc3RhdGlj
IFBhc3NSZWZQdHI8TWVkaWFTb3VyY2VTdGF0ZXM+IGNyZWF0ZShjb25zdCBNZWRpYVN0cmVhbVNv
dXJjZVN0YXRlcyYpOworCisgICAgc3RhdGljIGNvbnN0IEF0b21pY1N0cmluZyYgc291cmNlVHlw
ZShNZWRpYVN0cmVhbVNvdXJjZVN0YXRlczo6U291cmNlVHlwZSk7CisgICAgc3RhdGljIGNvbnN0
IEF0b21pY1N0cmluZyYgZmFjaW5nTW9kZShNZWRpYVN0cmVhbVNvdXJjZVN0YXRlczo6VmlkZW9G
YWNpbmdNb2RlKTsKKyAgICAKKyAgICBjb25zdCBBdG9taWNTdHJpbmcmIHNvdXJjZVR5cGUoKSBj
b25zdDsKKyAgICBjb25zdCBBdG9taWNTdHJpbmcmIHNvdXJjZUlkKCkgY29uc3QgeyByZXR1cm4g
bV9Tb3VyY2VTdGF0ZXMuc291cmNlSWQ7IH0KKyAgICB1bnNpZ25lZCBsb25nIHdpZHRoKCkgY29u
c3QgeyByZXR1cm4gbV9Tb3VyY2VTdGF0ZXMud2lkdGg7IH0KKyAgICB1bnNpZ25lZCBsb25nIGhl
aWdodCgpIGNvbnN0IHsgcmV0dXJuIG1fU291cmNlU3RhdGVzLmhlaWdodDsgfQorICAgIGZsb2F0
IGZyYW1lUmF0ZSgpIGNvbnN0IHsgcmV0dXJuIG1fU291cmNlU3RhdGVzLmZyYW1lUmF0ZTsgfQor
ICAgIGZsb2F0IGFzcGVjdFJhdGlvKCkgY29uc3QgeyByZXR1cm4gbV9Tb3VyY2VTdGF0ZXMuYXNw
ZWN0UmF0aW87IH0KKyAgICBjb25zdCBBdG9taWNTdHJpbmcmIGZhY2luZ01vZGUoKSBjb25zdDsK
KyAgICB1bnNpZ25lZCBsb25nIHZvbHVtZSgpIGNvbnN0IHsgcmV0dXJuIG1fU291cmNlU3RhdGVz
LnZvbHVtZTsgfQorICAgIAorICAgIGJvb2wgaGFzVmlkZW9Tb3VyY2UoKSBjb25zdCB7IHJldHVy
biBtX1NvdXJjZVN0YXRlcy5zb3VyY2VUeXBlID09IE1lZGlhU3RyZWFtU291cmNlU3RhdGVzOjpD
YW1lcmE7IH0KKworcHJpdmF0ZToKKyAgICBleHBsaWNpdCBNZWRpYVNvdXJjZVN0YXRlcyhjb25z
dCBNZWRpYVN0cmVhbVNvdXJjZVN0YXRlcyYpOworCisgICAgTWVkaWFTdHJlYW1Tb3VyY2VTdGF0
ZXMgbV9Tb3VyY2VTdGF0ZXM7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRp
ZiAvLyBNZWRpYVNvdXJjZVN0YXRlc19oCisKKyNlbmRpZgpJbmRleDogU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVNvdXJjZVN0YXRlcy5pZGwKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVNvdXJjZVN0YXRlcy5pZGwJ
KHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlh
U291cmNlU3RhdGVzLmlkbAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDQ0IEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJ
TkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElO
Qy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8K
KworZW51bSBTb3VyY2VUeXBlRW51bSB7ICJub25lIiwgImNhbWVyYSIsICJtaWNyb3Bob25lIiB9
OworZW51bSBWaWRlb0ZhY2luZ01vZGVFbnVtIHsgInVzZXIiLCAiZW52aXJvbm1lbnQiLCAibGVm
dCIsICJyaWdodCIgfTsKKworWworICAgIENvbmRpdGlvbmFsPU1FRElBX1NUUkVBTSwKKyAgICBJ
bXBsZW1lbnRhdGlvbkxhY2tzVlRhYmxlLAorICAgIE5vSW50ZXJmYWNlT2JqZWN0LAorXSBpbnRl
cmZhY2UgTWVkaWFTb3VyY2VTdGF0ZXMgeworICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTb3VyY2VU
eXBlRW51bSBzb3VyY2VUeXBlOworICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBET01TdHJpbmcgc291
cmNlSWQ7CisKKyAgICBbQ3VzdG9tR2V0dGVyXSByZWFkb25seSBhdHRyaWJ1dGUgdW5zaWduZWQg
bG9uZyB3aWR0aDsKKyAgICBbQ3VzdG9tR2V0dGVyXSByZWFkb25seSBhdHRyaWJ1dGUgdW5zaWdu
ZWQgbG9uZyBoZWlnaHQ7CisgICAgW0N1c3RvbUdldHRlcl0gcmVhZG9ubHkgYXR0cmlidXRlIGZs
b2F0IGZyYW1lUmF0ZTsKKyAgICBbQ3VzdG9tR2V0dGVyXSByZWFkb25seSBhdHRyaWJ1dGUgZmxv
YXQgYXNwZWN0UmF0aW87CisgICAgW0N1c3RvbUdldHRlcl0gcmVhZG9ubHkgYXR0cmlidXRlIFZp
ZGVvRmFjaW5nTW9kZUVudW0gZmFjaW5nTW9kZTsKKyAgICBbQ3VzdG9tR2V0dGVyXSByZWFkb25s
eSBhdHRyaWJ1dGUgdW5zaWduZWQgbG9uZyB2b2x1bWU7Cit9OworCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtLmNwcAkocmV2aXNp
b24gMTU3MDE2KQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0
cmVhbS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU2LDIyICs1NiwxMyBAQCBzdGF0aWMgdm9pZCBw
cm9jZXNzVHJhY2soTWVkaWFTdHJlYW1UcmFjCiAgICAgICAgIHJldHVybjsKIAogICAgIE1lZGlh
U3RyZWFtU291cmNlKiBzb3VyY2UgPSB0cmFjay0+c291cmNlKCk7Ci0gICAgaWYgKCFjb250YWlu
c1NvdXJjZShzb3VyY2VWZWN0b3IsIHNvdXJjZSkpIHsKLSAgICAgICAgaWYgKHNvdXJjZS0+c3Ry
ZWFtKCkpIHsKLSAgICAgICAgICAgIC8vIEZJWE1FOiB0aGlzIHNob3VsZCBub3QgYmUgbmVjZXNz
YXJ5IGJlY2F1c2UgdHJhY2tzIGFuZCBzdHJlYW1zIG11c3QgYmUgYWJsZSB0byBzaGFyZSBzb3Vy
Y2VzLCBidXQgb3VyIGNvZGUKLSAgICAgICAgICAgIC8vIGN1cnJlbmx0eSBhc3N1bWVzIGVhY2gg
c291cmNlIGlzIGF0dGFjaGVkIHRvIGp1c3Qgb25lIHRyYWNrLgotICAgICAgICAgICAgLy8gaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyMTk1NAotICAgICAgICAgICAg
c291cmNlVmVjdG9yLmFwcGVuZChNZWRpYVN0cmVhbVNvdXJjZTo6Y3JlYXRlKHNvdXJjZS0+aWQo
KSwgc291cmNlLT50eXBlKCksIHNvdXJjZS0+bmFtZSgpLCBzb3VyY2UtPnJlYWR5U3RhdGUoKSwg
c291cmNlLT5yZXF1aXJlc0F1ZGlvQ29uc3VtZXIoKSkuZ2V0KCkpOwotICAgICAgICB9IGVsc2UK
LSAgICAgICAgICAgIHNvdXJjZVZlY3Rvci5hcHBlbmQoc291cmNlKTsKLSAgICB9CisgICAgaWYg
KCFjb250YWluc1NvdXJjZShzb3VyY2VWZWN0b3IsIHNvdXJjZSkpCisgICAgICAgIHNvdXJjZVZl
Y3Rvci5hcHBlbmQoc291cmNlKTsKIH0KIAogc3RhdGljIFBhc3NSZWZQdHI8TWVkaWFTdHJlYW0+
IGNyZWF0ZUZyb21Tb3VyY2VWZWN0b3JzKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQs
IGNvbnN0IE1lZGlhU3RyZWFtU291cmNlVmVjdG9yJiBhdWRpb1NvdXJjZXMsIGNvbnN0IE1lZGlh
U3RyZWFtU291cmNlVmVjdG9yJiB2aWRlb1NvdXJjZXMpCiB7CiAgICAgUmVmUHRyPE1lZGlhU3Ry
ZWFtRGVzY3JpcHRvcj4gZGVzY3JpcHRvciA9IE1lZGlhU3RyZWFtRGVzY3JpcHRvcjo6Y3JlYXRl
KGF1ZGlvU291cmNlcywgdmlkZW9Tb3VyY2VzKTsKLSAgICBNZWRpYVN0cmVhbUNlbnRlcjo6c2hh
cmVkKCkuZGlkQ3JlYXRlTWVkaWFTdHJlYW0oZGVzY3JpcHRvci5nZXQoKSk7Ci0KICAgICByZXR1
cm4gTWVkaWFTdHJlYW06OmNyZWF0ZShjb250ZXh0LCBkZXNjcmlwdG9yLnJlbGVhc2UoKSk7CiB9
CiAKQEAgLTEyMSw2ICsxMTIsNyBAQCBNZWRpYVN0cmVhbTo6TWVkaWFTdHJlYW0oU2NyaXB0RXhl
Y3V0aW9uCiAgICAgLCBtX2Rlc2NyaXB0b3Ioc3RyZWFtRGVzY3JpcHRvcikKICAgICAsIG1fc2No
ZWR1bGVkRXZlbnRUaW1lcih0aGlzLCAmTWVkaWFTdHJlYW06OnNjaGVkdWxlZEV2ZW50VGltZXJG
aXJlZCkKIHsKKyAgICBBU1NFUlQobV9kZXNjcmlwdG9yKTsKICAgICBtX2Rlc2NyaXB0b3ItPnNl
dENsaWVudCh0aGlzKTsKIAogICAgIHNpemVfdCBudW1iZXJPZkF1ZGlvVHJhY2tzID0gbV9kZXNj
cmlwdG9yLT5udW1iZXJPZkF1ZGlvU3RyZWFtcygpOwpAQCAtMTU2LDcgKzE0OCw2IEBAIHZvaWQg
TWVkaWFTdHJlYW06OnN0b3AoKQogICAgIGlmIChlbmRlZCgpKQogICAgICAgICByZXR1cm47CiAK
LSAgICBNZWRpYVN0cmVhbUNlbnRlcjo6c2hhcmVkKCkuZGlkU3RvcExvY2FsTWVkaWFTdHJlYW0o
ZGVzY3JpcHRvcigpKTsKICAgICBzZXRFbmRlZCgpOwogfQogCkBAIC0xODQsOCArMTc1LDYgQEAg
dm9pZCBNZWRpYVN0cmVhbTo6YWRkVHJhY2soUGFzc1JlZlB0cjxNZQogICAgICAgICBtX3ZpZGVv
VHJhY2tzLmFwcGVuZCh0cmFjayk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KLQotICAgIE1lZGlh
U3RyZWFtQ2VudGVyOjpzaGFyZWQoKS5kaWRBZGRNZWRpYVN0cmVhbVRyYWNrKHRyYWNrLT5zb3Vy
Y2UoKSk7CiB9CiAKIHZvaWQgTWVkaWFTdHJlYW06OnJlbW92ZVRyYWNrKFBhc3NSZWZQdHI8TWVk
aWFTdHJlYW1UcmFjaz4gcHJwVHJhY2ssIEV4Y2VwdGlvbkNvZGUmIGVjKQpAQCAtMjIzLDggKzIx
Miw2IEBAIHZvaWQgTWVkaWFTdHJlYW06OnJlbW92ZVRyYWNrKFBhc3NSZWZQdHIKIAogICAgIGlm
ICghbV9hdWRpb1RyYWNrcy5zaXplKCkgJiYgIW1fdmlkZW9UcmFja3Muc2l6ZSgpKQogICAgICAg
ICBzZXRFbmRlZCgpOwotCi0gICAgTWVkaWFTdHJlYW1DZW50ZXI6OnNoYXJlZCgpLmRpZFJlbW92
ZU1lZGlhU3RyZWFtVHJhY2sodHJhY2stPnNvdXJjZSgpKTsKIH0KIAogTWVkaWFTdHJlYW1UcmFj
ayogTWVkaWFTdHJlYW06OmdldFRyYWNrQnlJZChTdHJpbmcgaWQpCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbS5oCShyZXZpc2lvbiAx
NTcwMTYpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFt
LmgJKHdvcmtpbmcgY29weSkKQEAgLTg4LDE1ICs4OCwxMyBAQCBwcm90ZWN0ZWQ6CiAgICAgdmly
dHVhbCB2b2lkIGNvbnRleHREZXN0cm95ZWQoKSBPVkVSUklERTsKIAogcHJpdmF0ZToKLSAgICAv
LyBNZWRpYVN0cmVhbURlc2NyaXB0b3JDbGllbnQKLSAgICB2aXJ0dWFsIHZvaWQgdHJhY2tEaWRF
bmQoKSBPVkVSUklERTsKLSAgICB2aXJ0dWFsIHZvaWQgc3RyZWFtRGlkRW5kKCkgT1ZFUlJJREU7
Ci0gICAgCiAgICAgLy8gRXZlbnRUYXJnZXQKICAgICB2aXJ0dWFsIHZvaWQgcmVmRXZlbnRUYXJn
ZXQoKSBPVkVSUklERSB7IHJlZigpOyB9CiAgICAgdmlydHVhbCB2b2lkIGRlcmVmRXZlbnRUYXJn
ZXQoKSBPVkVSUklERSB7IGRlcmVmKCk7IH0KIAogICAgIC8vIE1lZGlhU3RyZWFtRGVzY3JpcHRv
ckNsaWVudAorICAgIHZpcnR1YWwgdm9pZCB0cmFja0RpZEVuZCgpIE9WRVJSSURFOworICAgIHZp
cnR1YWwgdm9pZCBzdHJlYW1EaWRFbmQoKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgYWRk
UmVtb3RlU291cmNlKE1lZGlhU3RyZWFtU291cmNlKikgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2
b2lkIHJlbW92ZVJlbW90ZVNvdXJjZShNZWRpYVN0cmVhbVNvdXJjZSopIE9WRVJSSURFOwogCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtQ2FwYWJp
bGl0aWVzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3Ry
ZWFtL01lZGlhU3RyZWFtQ2FwYWJpbGl0aWVzLmNwcAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1DYXBhYmlsaXRpZXMuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTQyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEz
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQg
QU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
KyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmln
LmgiCisKKyNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQorCisjaW5jbHVkZSAiTWVkaWFTdHJlYW1D
YXBhYmlsaXRpZXMuaCIKKworI2luY2x1ZGUgIkFsbEF1ZGlvQ2FwYWJpbGl0aWVzLmgiCisjaW5j
bHVkZSAiQWxsVmlkZW9DYXBhYmlsaXRpZXMuaCIKKyNpbmNsdWRlICJDYXBhYmlsaXR5UmFuZ2Uu
aCIKKyNpbmNsdWRlICJNZWRpYVNvdXJjZVN0YXRlcy5oIgorI2luY2x1ZGUgIk1lZGlhU3RyZWFt
U291cmNlQ2FwYWJpbGl0aWVzLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworUGFzc1JlZlB0
cjxNZWRpYVN0cmVhbUNhcGFiaWxpdGllcz4gTWVkaWFTdHJlYW1DYXBhYmlsaXRpZXM6OmNyZWF0
ZShQYXNzUmVmUHRyPE1lZGlhU3RyZWFtU291cmNlQ2FwYWJpbGl0aWVzPiBjYXBhYmlsaXRpZXMp
Cit7CisgICAgaWYgKGNhcGFiaWxpdGllcy0+aGFzVmlkZW9Tb3VyY2UoKSkKKyAgICAgICAgcmV0
dXJuIEFsbFZpZGVvQ2FwYWJpbGl0aWVzOjpjcmVhdGUoY2FwYWJpbGl0aWVzKTsKKyAgICAKKyAg
ICByZXR1cm4gQWxsQXVkaW9DYXBhYmlsaXRpZXM6OmNyZWF0ZShjYXBhYmlsaXRpZXMpOworfQor
CitNZWRpYVN0cmVhbUNhcGFiaWxpdGllczo6TWVkaWFTdHJlYW1DYXBhYmlsaXRpZXMoUGFzc1Jl
ZlB0cjxNZWRpYVN0cmVhbVNvdXJjZUNhcGFiaWxpdGllcz4gY2FwYWJpbGl0aWVzKQorICAgIDog
bV9Tb3VyY2VDYXBhYmlsaXRpZXMoY2FwYWJpbGl0aWVzKQoreworfQorCitWZWN0b3I8U3RyaW5n
PiBNZWRpYVN0cmVhbUNhcGFiaWxpdGllczo6c291cmNlVHlwZSgpIGNvbnN0Cit7CisgICAgQVNT
RVJUKG1fU291cmNlQ2FwYWJpbGl0aWVzLT5oYXNWaWRlb1NvdXJjZSgpKTsKKyAgICAKKyAgICBz
aXplX3QgY291bnQgPSBtX1NvdXJjZUNhcGFiaWxpdGllcy0+c291cmNlVHlwZXMoKS5zaXplKCk7
CisgICAgaWYgKCFjb3VudCkKKyAgICAgICAgcmV0dXJuIFZlY3RvcjxTdHJpbmc+KCk7CisgICAg
CisgICAgY29uc3QgVmVjdG9yPE1lZGlhU3RyZWFtU291cmNlU3RhdGVzOjpTb3VyY2VUeXBlPiYg
c291cmNlVHlwZXMgPSBtX1NvdXJjZUNhcGFiaWxpdGllcy0+c291cmNlVHlwZXMoKTsKKyAgICBW
ZWN0b3I8U3RyaW5nPiBjYXBhYmlsaXRpZXM7CisgICAgY2FwYWJpbGl0aWVzLnJlc2VydmVDYXBh
Y2l0eShjb3VudCk7CisgICAgCisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBjb3VudDsgKytp
KQorICAgICAgICBjYXBhYmlsaXRpZXMuYXBwZW5kKE1lZGlhU291cmNlU3RhdGVzOjpzb3VyY2VU
eXBlKHNvdXJjZVR5cGVzW2ldKSk7CisgICAgCisgICAgcmV0dXJuIGNhcGFiaWxpdGllczsKK30K
KworVmVjdG9yPFN0cmluZz4gTWVkaWFTdHJlYW1DYXBhYmlsaXRpZXM6OnNvdXJjZUlkKCkgY29u
c3QKK3sKKyAgICBzaXplX3QgY291bnQgPSBtX1NvdXJjZUNhcGFiaWxpdGllcy0+c291cmNlSWQo
KS5zaXplKCk7CisgICAgaWYgKCFjb3VudCkKKyAgICAgICAgcmV0dXJuIFZlY3RvcjxTdHJpbmc+
KCk7CisgICAgCisgICAgY29uc3QgVmVjdG9yPEF0b21pY1N0cmluZz4mIHNvdXJjZUlkcyA9IG1f
U291cmNlQ2FwYWJpbGl0aWVzLT5zb3VyY2VJZCgpOworICAgIFZlY3RvcjxTdHJpbmc+IGNhcGFi
aWxpdGllczsKKyAgICBjYXBhYmlsaXRpZXMucmVzZXJ2ZUNhcGFjaXR5KGNvdW50KTsKKyAgICAK
KyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGNvdW50OyArK2kpCisgICAgICAgIGNhcGFiaWxp
dGllcy5hcHBlbmQoc291cmNlSWRzW2ldKTsKKyAgICAKKyAgICByZXR1cm4gY2FwYWJpbGl0aWVz
OworfQorCitWZWN0b3I8U3RyaW5nPiBNZWRpYVN0cmVhbUNhcGFiaWxpdGllczo6ZmFjaW5nTW9k
ZSgpIGNvbnN0Cit7CisgICAgQVNTRVJUKG1fU291cmNlQ2FwYWJpbGl0aWVzLT5oYXNWaWRlb1Nv
dXJjZSgpKTsKKyAgICAKKyAgICBzaXplX3QgY291bnQgPSBtX1NvdXJjZUNhcGFiaWxpdGllcy0+
ZmFjaW5nTW9kZXMoKS5zaXplKCk7CisgICAgaWYgKCFjb3VudCkKKyAgICAgICAgcmV0dXJuIFZl
Y3RvcjxTdHJpbmc+KCk7CisgICAgCisgICAgY29uc3QgVmVjdG9yPE1lZGlhU3RyZWFtU291cmNl
U3RhdGVzOjpWaWRlb0ZhY2luZ01vZGU+JiBmYWNpbmdNb2RlcyA9IG1fU291cmNlQ2FwYWJpbGl0
aWVzLT5mYWNpbmdNb2RlcygpOworICAgIFZlY3RvcjxTdHJpbmc+IGNhcGFiaWxpdGllczsKKyAg
ICBjYXBhYmlsaXRpZXMucmVzZXJ2ZUNhcGFjaXR5KGNvdW50KTsKKyAgICAKKyAgICBmb3IgKHNp
emVfdCBpID0gMDsgaSA8IGNvdW50OyArK2kpCisgICAgICAgIGNhcGFiaWxpdGllcy5hcHBlbmQo
TWVkaWFTb3VyY2VTdGF0ZXM6OmZhY2luZ01vZGUoZmFjaW5nTW9kZXNbaV0pKTsKKyAgICAKKyAg
ICByZXR1cm4gY2FwYWJpbGl0aWVzOworfQorCitSZWZQdHI8Q2FwYWJpbGl0eVJhbmdlPiBNZWRp
YVN0cmVhbUNhcGFiaWxpdGllczo6d2lkdGgoKSBjb25zdAoreworICAgIEFTU0VSVChtX1NvdXJj
ZUNhcGFiaWxpdGllcy0+aGFzVmlkZW9Tb3VyY2UoKSk7CisgICAgCisgICAgcmV0dXJuIENhcGFi
aWxpdHlSYW5nZTo6Y3JlYXRlKG1fU291cmNlQ2FwYWJpbGl0aWVzLT53aWR0aCgpKTsKK30KKwor
UmVmUHRyPENhcGFiaWxpdHlSYW5nZT4gTWVkaWFTdHJlYW1DYXBhYmlsaXRpZXM6OmhlaWdodCgp
IGNvbnN0Cit7CisgICAgQVNTRVJUKG1fU291cmNlQ2FwYWJpbGl0aWVzLT5oYXNWaWRlb1NvdXJj
ZSgpKTsKKyAgICAKKyAgICByZXR1cm4gQ2FwYWJpbGl0eVJhbmdlOjpjcmVhdGUobV9Tb3VyY2VD
YXBhYmlsaXRpZXMtPmhlaWdodCgpKTsKK30KKworUmVmUHRyPENhcGFiaWxpdHlSYW5nZT4gTWVk
aWFTdHJlYW1DYXBhYmlsaXRpZXM6OmZyYW1lUmF0ZSgpIGNvbnN0Cit7CisgICAgQVNTRVJUKG1f
U291cmNlQ2FwYWJpbGl0aWVzLT5oYXNWaWRlb1NvdXJjZSgpKTsKKyAgICAKKyAgICByZXR1cm4g
Q2FwYWJpbGl0eVJhbmdlOjpjcmVhdGUobV9Tb3VyY2VDYXBhYmlsaXRpZXMtPmZyYW1lUmF0ZSgp
KTsKK30KKworUmVmUHRyPENhcGFiaWxpdHlSYW5nZT4gTWVkaWFTdHJlYW1DYXBhYmlsaXRpZXM6
OmFzcGVjdFJhdGlvKCkgY29uc3QKK3sKKyAgICBBU1NFUlQobV9Tb3VyY2VDYXBhYmlsaXRpZXMt
Pmhhc1ZpZGVvU291cmNlKCkpOworICAgIAorICAgIHJldHVybiBDYXBhYmlsaXR5UmFuZ2U6OmNy
ZWF0ZShtX1NvdXJjZUNhcGFiaWxpdGllcy0+YXNwZWN0UmF0aW8oKSk7Cit9CisKK1JlZlB0cjxD
YXBhYmlsaXR5UmFuZ2U+IE1lZGlhU3RyZWFtQ2FwYWJpbGl0aWVzOjp2b2x1bWUoKSBjb25zdAor
eworICAgIEFTU0VSVCghbV9Tb3VyY2VDYXBhYmlsaXRpZXMtPmhhc1ZpZGVvU291cmNlKCkpOwor
ICAgIAorICAgIHJldHVybiBDYXBhYmlsaXR5UmFuZ2U6OmNyZWF0ZShtX1NvdXJjZUNhcGFiaWxp
dGllcy0+dm9sdW1lKCkpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZgpJ
bmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbUNhcGFi
aWxpdGllcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJl
YW0vTWVkaWFTdHJlYW1DYXBhYmlsaXRpZXMuaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9XZWJD
b3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1DYXBhYmlsaXRpZXMuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMCwwICsxLDY5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisg
KiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAor
ICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIE1lZGlhU3RyZWFtQ2Fw
YWJpbGl0aWVzX2gKKyNkZWZpbmUgTWVkaWFTdHJlYW1DYXBhYmlsaXRpZXNfaAorCisjaWYgRU5B
QkxFKE1FRElBX1NUUkVBTSkKKworI2luY2x1ZGUgIk1lZGlhU3RyZWFtQ2FwYWJpbGl0aWVzLmgi
CisjaW5jbHVkZSAiTWVkaWFTdHJlYW1Tb3VyY2VDYXBhYmlsaXRpZXMuaCIKKyNpbmNsdWRlICJT
Y3JpcHRXcmFwcGFibGUuaCIKKyNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgorI2luY2x1ZGUg
PHd0Zi9WZWN0b3IuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KKworbmFtZXNw
YWNlIFdlYkNvcmUgeworCitjbGFzcyBDYXBhYmlsaXR5UmFuZ2U7CitjbGFzcyBNZWRpYVN0cmVh
bVNvdXJjZUNhcGFiaWxpdGllczsKKworY2xhc3MgTWVkaWFTdHJlYW1DYXBhYmlsaXRpZXMgOiBw
dWJsaWMgUmVmQ291bnRlZDxNZWRpYVN0cmVhbUNhcGFiaWxpdGllcz4sIHB1YmxpYyBTY3JpcHRX
cmFwcGFibGUgeworcHVibGljOgorICAgIHN0YXRpYyBQYXNzUmVmUHRyPE1lZGlhU3RyZWFtQ2Fw
YWJpbGl0aWVzPiBjcmVhdGUoUGFzc1JlZlB0cjxNZWRpYVN0cmVhbVNvdXJjZUNhcGFiaWxpdGll
cz4pOworICAgIHZpcnR1YWwgfk1lZGlhU3RyZWFtQ2FwYWJpbGl0aWVzKCkgeyB9CisKKyAgICB2
aXJ0dWFsIFZlY3RvcjxTdHJpbmc+IHNvdXJjZVR5cGUoKSBjb25zdDsKKyAgICB2aXJ0dWFsIFZl
Y3RvcjxTdHJpbmc+IHNvdXJjZUlkKCkgY29uc3Q7CisgICAgdmlydHVhbCBSZWZQdHI8Q2FwYWJp
bGl0eVJhbmdlPiB3aWR0aCgpIGNvbnN0OworICAgIHZpcnR1YWwgUmVmUHRyPENhcGFiaWxpdHlS
YW5nZT4gaGVpZ2h0KCkgY29uc3Q7CisgICAgdmlydHVhbCBSZWZQdHI8Q2FwYWJpbGl0eVJhbmdl
PiBmcmFtZVJhdGUoKSBjb25zdDsKKyAgICB2aXJ0dWFsIFJlZlB0cjxDYXBhYmlsaXR5UmFuZ2U+
IGFzcGVjdFJhdGlvKCkgY29uc3Q7CisgICAgdmlydHVhbCBWZWN0b3I8U3RyaW5nPiBmYWNpbmdN
b2RlKCkgY29uc3Q7CisgICAgdmlydHVhbCBSZWZQdHI8Q2FwYWJpbGl0eVJhbmdlPiB2b2x1bWUo
KSBjb25zdDsKKyAgICAKKyAgICBib29sIGhhc1ZpZGVvU291cmNlKCkgeyByZXR1cm4gbV9Tb3Vy
Y2VDYXBhYmlsaXRpZXMtPmhhc1ZpZGVvU291cmNlKCk7IH0KKworcHJvdGVjdGVkOgorICAgIGV4
cGxpY2l0IE1lZGlhU3RyZWFtQ2FwYWJpbGl0aWVzKFBhc3NSZWZQdHI8TWVkaWFTdHJlYW1Tb3Vy
Y2VDYXBhYmlsaXRpZXM+KTsKKworICAgIFJlZlB0cjxNZWRpYVN0cmVhbVNvdXJjZUNhcGFiaWxp
dGllcz4gbV9Tb3VyY2VDYXBhYmlsaXRpZXM7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CisKKyNlbmRpZiAvLyBNZWRpYVN0cmVhbUNhcGFiaWxpdGllc19oCisKKyNlbmRpZgpJbmRleDog
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbUNhcGFiaWxpdGll
cy5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9N
ZWRpYVN0cmVhbUNhcGFiaWxpdGllcy5pZGwJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtQ2FwYWJpbGl0aWVzLmlkbAkod29ya2lu
ZyBjb3B5KQpAQCAtMCwwICsxLDMzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisg
KiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAor
ICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworWworICAgIENvbmRpdGlvbmFsPU1F
RElBX1NUUkVBTSwKKyAgICBOb0ludGVyZmFjZU9iamVjdCwKKyAgICBTa2lwVlRhYmxlVmFsaWRh
dGlvbiwKKyAgICBDdXN0b21Ub0pTT2JqZWN0LAorXSBpbnRlcmZhY2UgTWVkaWFTdHJlYW1DYXBh
YmlsaXRpZXMgeworfTsKKwpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVh
bS9NZWRpYVN0cmVhbVRyYWNrLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJhY2suY3BwCShyZXZpc2lvbiAxNTcwMTYpCisr
KyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJhY2suY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0yOSwzMiArMjksNjUgQEAKIAogI2lmIEVOQUJMRShNRURJQV9T
VFJFQU0pCiAKKyNpbmNsdWRlICJBbGxBdWRpb0NhcGFiaWxpdGllcy5oIgorI2luY2x1ZGUgIkFs
bFZpZGVvQ2FwYWJpbGl0aWVzLmgiCisjaW5jbHVkZSAiQXVkaW9TdHJlYW1UcmFjay5oIgogI2lu
Y2x1ZGUgIkRpY3Rpb25hcnkuaCIKICNpbmNsdWRlICJFdmVudC5oIgogI2luY2x1ZGUgIkV4Y2Vw
dGlvbkNvZGUuaCIKKyNpbmNsdWRlICJNZWRpYUNvbnN0cmFpbnRzSW1wbC5oIgorI2luY2x1ZGUg
Ik1lZGlhU291cmNlU3RhdGVzLmgiCiAjaW5jbHVkZSAiTWVkaWFTdHJlYW0uaCIKICNpbmNsdWRl
ICJNZWRpYVN0cmVhbUNlbnRlci5oIgogI2luY2x1ZGUgIk1lZGlhU3RyZWFtRGVzY3JpcHRvci5o
IgogI2luY2x1ZGUgIk1lZGlhU3RyZWFtVHJhY2tTb3VyY2VzQ2FsbGJhY2suaCIKICNpbmNsdWRl
ICJNZWRpYVN0cmVhbVRyYWNrU291cmNlc1JlcXVlc3QuaCIKKyNpbmNsdWRlICJNZWRpYVRyYWNr
Q29uc3RyYWludHMuaCIKKyNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgogI2luY2x1ZGUgIlVV
SUQuaCIKKyNpbmNsdWRlICJWaWRlb1N0cmVhbVRyYWNrLmgiCisjaW5jbHVkZSA8d3RmL0Z1bmN0
aW9uYWwuaD4KICNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCiBNZWRpYVN0cmVhbVRyYWNrOjpNZWRpYVN0cmVhbVRyYWNrKFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQqIGNvbnRleHQsIE1lZGlhU3RyZWFtU291cmNlKiBzb3VyY2UsIGNvbnN0IERp
Y3Rpb25hcnkqKQogICAgIDogQWN0aXZlRE9NT2JqZWN0KGNvbnRleHQpCi0gICAgLCBtX3NvdXJj
ZShzb3VyY2UpCisgICAgLCBtX3NvdXJjZSgwKQogICAgICwgbV9yZWFkeVN0YXRlKE1lZGlhU3Ry
ZWFtU291cmNlOjpOZXcpCiAgICAgLCBtX3N0b3BwZWQoZmFsc2UpCiAgICAgLCBtX2VuYWJsZWQo
dHJ1ZSkKICAgICAsIG1fbXV0ZWQoZmFsc2UpCisgICAgLCBtX2V2ZW50RGlzcGF0Y2hTY2hlZHVs
ZWQoZmFsc2UpCiB7CiAgICAgc3VzcGVuZElmTmVlZGVkKCk7Ci0gICAgaWYgKG1fc291cmNlKSB7
Ci0gICAgICAgIG1fc291cmNlLT5hZGRPYnNlcnZlcih0aGlzKTsKLSAgICAgICAgbV9tdXRlZCA9
IG1fc291cmNlLT5tdXRlZCgpOwotICAgIH0KKyAgICBpZiAoc291cmNlKQorICAgICAgICBzZXRT
b3VyY2Uoc291cmNlKTsKK30KKworTWVkaWFTdHJlYW1UcmFjazo6TWVkaWFTdHJlYW1UcmFjayhN
ZWRpYVN0cmVhbVRyYWNrKiBvdGhlcikKKyAgICA6IEFjdGl2ZURPTU9iamVjdChvdGhlci0+c2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCgpKQoreworICAgIHN1c3BlbmRJZk5lZWRlZCgpOworCisgICAg
Ly8gV2hlbiB0aGUgY2xvbmUoKSBtZXRob2QgaXMgaW52b2tlZCwgdGhlIHVzZXIgYWdlbnQgbXVz
dCBydW4gdGhlIGZvbGxvd2luZyBzdGVwczoKKyAgICAvLyAxLiBMZXQgdHJhY2tDbG9uZSBiZSBh
IG5ld2x5IGNvbnN0cnVjdGVkIE1lZGlhU3RyZWFtVHJhY2sgb2JqZWN0LgorICAgIC8vIDIuIElu
aXRpYWxpemUgdHJhY2tDbG9uZSdzIGlkIGF0dHJpYnV0ZSB0byBhIG5ld2x5IGdlbmVyYXRlZCB2
YWx1ZS4KKyAgICBtX2lkID0gY3JlYXRlQ2Fub25pY2FsVVVJRFN0cmluZygpOworCisgICAgLy8g
My4gTGV0IHRyYWNrQ2xvbmUgaW5oZXJpdCB0aGlzIHRyYWNrJ3MgdW5kZXJseWluZyBzb3VyY2Us
IGtpbmQsIGxhYmVsIGFuZCBlbmFibGVkIGF0dHJpYnV0ZXMuCisgICAgc2V0U291cmNlKG90aGVy
LT5zb3VyY2UoKSk7CisgICAgbV9yZWFkeVN0YXRlID0gbV9zb3VyY2UgPyBtX3NvdXJjZS0+cmVh
ZHlTdGF0ZSgpIDogTWVkaWFTdHJlYW1Tb3VyY2U6Ok5ldzsKKyAgICBtX2VuYWJsZWQgPSBvdGhl
ci0+ZW5hYmxlZCgpOworCisgICAgLy8gTm90ZTogdGhlICJjbG9uZSIgc3RlcHMgZG9uJ3Qgc2F5
IGFueXRoaW5nIGFib3V0ICdtdXRlZCcsIGJ1dCA0LjMuMSBzYXlzOgorICAgIC8vIEZvciBhIG5l
d2x5IGNyZWF0ZWQgTWVkaWFTdHJlYW1UcmFjayBvYmplY3QsIHRoZSBmb2xsb3dpbmcgYXBwbGll
cy4gVGhlIHRyYWNrIGlzIGFsd2F5cyBlbmFibGVkCisgICAgLy8gdW5sZXNzIHN0YXRlZCBvdGhl
cndpc2UgKGZvciBleGFtbHBlIHdoZW4gY2xvbmVkKSBhbmQgdGhlIG11dGVkIHN0YXRlIHJlZmxl
Y3RzIHRoZSBzdGF0ZSBvZiB0aGUKKyAgICAvLyBzb3VyY2UgYXQgdGhlIHRpbWUgdGhlIHRyYWNr
IGlzIGNyZWF0ZWQuCisgICAgbV9tdXRlZCA9IG90aGVyLT5tdXRlZCgpOworCisgICAgbV9ldmVu
dERpc3BhdGNoU2NoZWR1bGVkID1mYWxzZTsKKyAgICBtX3N0b3BwZWQgPSBvdGhlci0+c3RvcHBl
ZCgpOwogfQogCiBNZWRpYVN0cmVhbVRyYWNrOjp+TWVkaWFTdHJlYW1UcmFjaygpCkBAIC04NSw2
ICsxMTgsMTUgQEAgY29uc3QgQXRvbWljU3RyaW5nJiBNZWRpYVN0cmVhbVRyYWNrOjpraQogdm9p
ZCBNZWRpYVN0cmVhbVRyYWNrOjpzZXRTb3VyY2UoTWVkaWFTdHJlYW1Tb3VyY2UqIHNvdXJjZSkK
IHsKICAgICBBU1NFUlQoc291cmNlID09IG1fc291cmNlIHx8ICFtX3NvdXJjZSk7CisKKyAgICBp
ZiAobV9zb3VyY2UpCisgICAgICAgIG1fc291cmNlLT5yZW1vdmVPYnNlcnZlcih0aGlzKTsKKwor
ICAgIGlmIChzb3VyY2UpIHsKKyAgICAgICAgc291cmNlLT5hZGRPYnNlcnZlcih0aGlzKTsKKyAg
ICAgICAgbV9tdXRlZCA9IHNvdXJjZS0+bXV0ZWQoKTsKKyAgICB9CisKICAgICBtX3NvdXJjZSA9
IHNvdXJjZTsKIH0KIApAQCAtOTMsMTggKzEzNSwxMyBAQCBjb25zdCBTdHJpbmcmIE1lZGlhU3Ry
ZWFtVHJhY2s6OmlkKCkgY29uCiAgICAgaWYgKCFtX2lkLmlzRW1wdHkoKSkKICAgICAgICAgcmV0
dXJuIG1faWQ7CiAKLSAgICBpZiAoIW1fc291cmNlKQotICAgICAgICByZXR1cm4gZW1wdHlTdHJp
bmcoKTsKLQotICAgIGNvbnN0IFN0cmluZyYgaWQgPSBtX3NvdXJjZS0+aWQoKTsKLSAgICBpZiAo
IWlkLmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuIGlkOwotCiAgICAgLy8gVGhlIHNwZWMgc2F5
czoKICAgICAvLyAgIFVubGVzcyBhIE1lZGlhU3RyZWFtVHJhY2sgb2JqZWN0IGlzIGNyZWF0ZWQg
YXMgYSBwYXJ0IGEgb2Ygc3BlY2lhbCBwdXJwb3NlIGFsZ29yaXRobSB0aGF0CiAgICAgLy8gICBz
cGVjaWZpZXMgaG93IHRoZSB0cmFjayBpZCBtdXN0IGJlIGluaXRpYWxpemVkLCB0aGUgdXNlciBh
Z2VudCBtdXN0IGdlbmVyYXRlIGEgZ2xvYmFsbHkKICAgICAvLyAgIHVuaXF1ZSBpZGVudGlmaWVy
IHN0cmluZyBhbmQgaW5pdGlhbGl6ZSB0aGUgb2JqZWN0J3MgaWQgYXR0cmlidXRlIHRvIHRoYXQg
c3RyaW5nLgotICAgIC8vIHNvIGdlbmVyYXRlIGEgVVVJRCBpZiB0aGUgc291cmNlIGRvZXNuJ3Qg
aGF2ZSBhbiBJRC4KKyAgICBpZiAobV9zb3VyY2UgJiYgbV9zb3VyY2UtPnVzZUlERm9yVHJhY2tJ
RCgpKQorICAgICAgICByZXR1cm4gbV9zb3VyY2UtPmlkKCk7CisKICAgICBtX2lkID0gY3JlYXRl
Q2Fub25pY2FsVVVJRFN0cmluZygpOwogICAgIHJldHVybiBtX2lkOwogfQpAQCAtMTI1LDE4ICsx
NjIsNDAgQEAgdm9pZCBNZWRpYVN0cmVhbVRyYWNrOjpzZXRFbmFibGVkKGJvb2wgZQogewogICAg
IGlmIChtX3N0b3BwZWQpCiAgICAgICAgIHJldHVybjsKLSAgICAKKworICAgIC8vIDQuMy4zLjEK
KyAgICAvLyAuLi4gYWZ0ZXIgYSBNZWRpYVN0cmVhbVRyYWNrIGlzIGRpc2Fzc29jaWF0ZWQgZnJv
bSBpdHMgdHJhY2ssIGl0cyBlbmFibGVkIGF0dHJpYnV0ZSBzdGlsbAorICAgIC8vIGNoYW5nZXMg
dmFsdWUgd2hlbiBzZXQ7IGl0IGp1c3QgZG9lc24ndCBkbyBhbnl0aGluZyB3aXRoIHRoYXQgbmV3
IHZhbHVlLgogICAgIG1fZW5hYmxlZCA9IGVuYWJsZWQ7CiAKLSAgICBpZiAoIW1fc291cmNlIHx8
IGVuYWJsZWQgPT0gbV9zb3VyY2UtPmVuYWJsZWQoKSkKKyAgICBpZiAoIW1fc291cmNlKQogICAg
ICAgICByZXR1cm47CiAKICAgICBtX3NvdXJjZS0+c2V0RW5hYmxlZChlbmFibGVkKTsKK30KIAot
ICAgIGlmIChtX3NvdXJjZS0+c3RyZWFtKCktPmVuZGVkKCkpCi0gICAgICAgIHJldHVybjsKK2Jv
b2wgTWVkaWFTdHJlYW1UcmFjazo6bXV0ZWQoKSBjb25zdAoreworICAgIGlmIChtX3N0b3BwZWQg
fHwgIW1fc291cmNlKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICByZXR1cm4gbV9zb3Vy
Y2UtPm11dGVkKCk7Cit9CisKK2Jvb2wgTWVkaWFTdHJlYW1UcmFjazo6cmVhZG9ubHkoKSBjb25z
dAoreworICAgIGlmIChtX3N0b3BwZWQgfHwgIW1fc291cmNlKQorICAgICAgICByZXR1cm4gdHJ1
ZTsKKworICAgIHJldHVybiBtX3NvdXJjZS0+cmVhZG9ubHkoKTsKK30KKworYm9vbCBNZWRpYVN0
cmVhbVRyYWNrOjpyZW1vdGUoKSBjb25zdAoreworICAgIGlmICghbV9zb3VyY2UpCisgICAgICAg
IHJldHVybiBmYWxzZTsKIAotICAgIE1lZGlhU3RyZWFtQ2VudGVyOjpzaGFyZWQoKS5kaWRTZXRN
ZWRpYVN0cmVhbVRyYWNrRW5hYmxlZChtX3NvdXJjZS5nZXQoKSk7CisgICAgcmV0dXJuIG1fc291
cmNlLT5yZW1vdGUoKTsKIH0KIAogY29uc3QgQXRvbWljU3RyaW5nJiBNZWRpYVN0cmVhbVRyYWNr
OjpyZWFkeVN0YXRlKCkgY29uc3QKQEAgLTE3MSwxMiArMjMwLDY0IEBAIHZvaWQgTWVkaWFTdHJl
YW1UcmFjazo6Z2V0U291cmNlcyhTY3JpcHQKICAgICAgICAgZWMgPSBOT1RfU1VQUE9SVEVEX0VS
UjsKIH0KIAorUGFzc1JlZlB0cjxNZWRpYVRyYWNrQ29uc3RyYWludHM+IE1lZGlhU3RyZWFtVHJh
Y2s6OmNvbnN0cmFpbnRzKCkgY29uc3QKK3sKKyAgICAvLyBGSVhNRTogaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyMjQyOAorICAgIG5vdEltcGxlbWVudGVkKCk7Cisg
ICAgcmV0dXJuIDA7Cit9CisKK1Bhc3NSZWZQdHI8TWVkaWFTb3VyY2VTdGF0ZXM+IE1lZGlhU3Ry
ZWFtVHJhY2s6OnN0YXRlcygpIGNvbnN0Cit7CisgICAgaWYgKCFtX3NvdXJjZSkKKyAgICAgICAg
cmV0dXJuIDA7CisgICAgCisgICAgcmV0dXJuIE1lZGlhU291cmNlU3RhdGVzOjpjcmVhdGUobV9z
b3VyY2UtPnN0YXRlcygpKTsKK30KKworUGFzc1JlZlB0cjxNZWRpYVN0cmVhbUNhcGFiaWxpdGll
cz4gTWVkaWFTdHJlYW1UcmFjazo6Y2FwYWJpbGl0aWVzKCkgY29uc3QKK3sKKyAgICBpZiAoIW1f
c291cmNlKQorICAgICAgICByZXR1cm4gMDsKKworICAgIHJldHVybiBNZWRpYVN0cmVhbUNhcGFi
aWxpdGllczo6Y3JlYXRlKG1fc291cmNlLT5jYXBhYmlsaXRpZXMoKSk7Cit9CisKK3ZvaWQgTWVk
aWFTdHJlYW1UcmFjazo6YXBwbHlDb25zdHJhaW50cyhjb25zdCBEaWN0aW9uYXJ5JiBjb25zdHJh
aW50cykKK3sKKyAgICAvLyBGSVhNRTogYXBwbHkgdGhlIG5ldyBjb25zdHJhaW50cyB0byB0aGUg
dHJhY2sKKyAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTIy
NDI4CisgICAgbV9jb25zdHJhaW50cy0+aW5pdGlhbGl6ZShjb25zdHJhaW50cyk7Cit9CisKK1Bh
c3NSZWZQdHI8TWVkaWFTdHJlYW1UcmFjaz4gTWVkaWFTdHJlYW1UcmFjazo6Y2xvbmUoKQorewor
ICAgIGlmIChtX3NvdXJjZSAmJiBtX3NvdXJjZS0+dHlwZSgpID09IE1lZGlhU3RyZWFtU291cmNl
OjpBdWRpbykKKyAgICAgICAgcmV0dXJuIEF1ZGlvU3RyZWFtVHJhY2s6OmNyZWF0ZSh0aGlzKTsK
KworICAgIHJldHVybiBWaWRlb1N0cmVhbVRyYWNrOjpjcmVhdGUodGhpcyk7Cit9CisKK3ZvaWQg
TWVkaWFTdHJlYW1UcmFjazo6c3RvcFByb2R1Y2luZ0RhdGEoKQoreworICAgIGlmIChtX3N0b3Bw
ZWQgfHwgIW1fc291cmNlKQorICAgICAgICByZXR1cm47CisKKyAgICAvLyBTZXQgbV9zdG9wcGVk
IGJlZm9yZSBzdG9wcGluZyB0aGUgc291cmNlIGJlY2F1c2UgdGhhdCBtYXkgcmVzdWx0IGluIGEg
Y2FsbCB0byBzb3VyY2VDaGFuZ2VkU3RhdGUKKyAgICAvLyBhbmQgd2Ugb25seSB3YW50IHRvIGRp
c3BhdGNoIHRoZSAnZW5kZWQnIGV2ZW50IGlmIG5lY2Vzc2FyeS4KKyAgICBtX3N0b3BwZWQgPSB0
cnVlOworICAgIG1fc291cmNlLT5zdG9wKCk7CisKKyAgICBpZiAobV9yZWFkeVN0YXRlICE9IE1l
ZGlhU3RyZWFtU291cmNlOjpFbmRlZCkKKyAgICAgICAgc2NoZWR1bGVFdmVudERpc3BhdGNoKEV2
ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLmVuZGVkRXZlbnQsIGZhbHNlLCBmYWxzZSkpOworfQor
CiBib29sIE1lZGlhU3RyZWFtVHJhY2s6OmVuZGVkKCkgY29uc3QKIHsKICAgICByZXR1cm4gbV9z
dG9wcGVkIHx8IChtX3NvdXJjZSAmJiBtX3NvdXJjZS0+cmVhZHlTdGF0ZSgpID09IE1lZGlhU3Ry
ZWFtU291cmNlOjpFbmRlZCk7CiB9CiAKLXZvaWQgTWVkaWFTdHJlYW1UcmFjazo6c291cmNlQ2hh
bmdlZFN0YXRlKCkKK3ZvaWQgTWVkaWFTdHJlYW1UcmFjazo6c291cmNlU3RhdGVDaGFuZ2VkKCkK
IHsKICAgICBpZiAobV9zdG9wcGVkKQogICAgICAgICByZXR1cm47CkBAIC0xODUsMTggKzI5Niw1
MCBAQCB2b2lkIE1lZGlhU3RyZWFtVHJhY2s6OnNvdXJjZUNoYW5nZWRTdGF0CiAgICAgbV9yZWFk
eVN0YXRlID0gbV9zb3VyY2UtPnJlYWR5U3RhdGUoKTsKIAogICAgIGlmIChtX3JlYWR5U3RhdGUg
Pj0gTWVkaWFTdHJlYW1Tb3VyY2U6OkxpdmUgJiYgb2xkUmVhZHlTdGF0ZSA9PSBNZWRpYVN0cmVh
bVNvdXJjZTo6TmV3KQotICAgICAgICBkaXNwYXRjaEV2ZW50KEV2ZW50OjpjcmVhdGUoZXZlbnRO
YW1lcygpLnN0YXJ0ZWRFdmVudCwgZmFsc2UsIGZhbHNlKSk7CisgICAgICAgIHNjaGVkdWxlRXZl
bnREaXNwYXRjaChFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5zdGFydGVkRXZlbnQsIGZhbHNl
LCBmYWxzZSkpOwogICAgIGlmIChtX3JlYWR5U3RhdGUgPT0gTWVkaWFTdHJlYW1Tb3VyY2U6OkVu
ZGVkICYmIG9sZFJlYWR5U3RhdGUgIT0gTWVkaWFTdHJlYW1Tb3VyY2U6OkVuZGVkKQotICAgICAg
ICBkaXNwYXRjaEV2ZW50KEV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLmVuZGVkRXZlbnQsIGZh
bHNlLCBmYWxzZSkpOworICAgICAgICBzY2hlZHVsZUV2ZW50RGlzcGF0Y2goRXZlbnQ6OmNyZWF0
ZShldmVudE5hbWVzKCkuZW5kZWRFdmVudCwgZmFsc2UsIGZhbHNlKSk7Cit9CisgICAgCit2b2lk
IE1lZGlhU3RyZWFtVHJhY2s6OnNvdXJjZU11dGVkQ2hhbmdlZCgpCit7CisgICAgaWYgKG1fc3Rv
cHBlZCkKKyAgICAgICAgcmV0dXJuOwogCi0gICAgaWYgKG1fbXV0ZWQgPT0gbV9zb3VyY2UtPm11
dGVkKCkpCisgICAgYm9vbCBtdXRlZCA9IG1fc291cmNlLT5tdXRlZCgpOworICAgIGlmIChtX211
dGVkID09IG11dGVkKQogICAgICAgICByZXR1cm47CiAKLSAgICBtX211dGVkID0gbV9zb3VyY2Ut
Pm11dGVkKCk7CisgICAgbV9tdXRlZCA9IG11dGVkOwogICAgIGlmIChtX211dGVkKQotICAgICAg
ICBkaXNwYXRjaEV2ZW50KEV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLm11dGVFdmVudCwgZmFs
c2UsIGZhbHNlKSk7CisgICAgICAgIHNjaGVkdWxlRXZlbnREaXNwYXRjaChFdmVudDo6Y3JlYXRl
KGV2ZW50TmFtZXMoKS5tdXRlRXZlbnQsIGZhbHNlLCBmYWxzZSkpOwogICAgIGVsc2UKLSAgICAg
ICAgZGlzcGF0Y2hFdmVudChFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS51bm11dGVFdmVudCwg
ZmFsc2UsIGZhbHNlKSk7CisgICAgICAgIHNjaGVkdWxlRXZlbnREaXNwYXRjaChFdmVudDo6Y3Jl
YXRlKGV2ZW50TmFtZXMoKS51bm11dGVFdmVudCwgZmFsc2UsIGZhbHNlKSk7CisKKyAgICBjb25m
aWd1cmVUcmFja1JlbmRlcmluZygpOworfQorCit2b2lkIE1lZGlhU3RyZWFtVHJhY2s6OnNvdXJj
ZUVuYWJsZWRDaGFuZ2VkKCkKK3sKKyAgICBpZiAobV9zdG9wcGVkKQorICAgICAgICByZXR1cm47
CisgICAgCisgICAgLy8gbWVkaWEgZnJvbSB0aGUgc291cmNlIG9ubHkgZmxvd3Mgd2hlbiBhIE1l
ZGlhU3RyZWFtVHJhY2sgb2JqZWN0IGlzIGJvdGggdW5tdXRlZCBhbmQgZW5hYmxlZAorICAgIGNv
bmZpZ3VyZVRyYWNrUmVuZGVyaW5nKCk7Cit9CisKK3ZvaWQgTWVkaWFTdHJlYW1UcmFjazo6Y29u
ZmlndXJlVHJhY2tSZW5kZXJpbmcoKQoreworICAgIGlmIChtX3N0b3BwZWQpCisgICAgICAgIHJl
dHVybjsKKworICAgIC8vIDQuMy4xCisgICAgLy8gLi4uIG1lZGlhIGZyb20gdGhlIHNvdXJjZSBv
bmx5IGZsb3dzIHdoZW4gYSBNZWRpYVN0cmVhbVRyYWNrIG9iamVjdCBpcyBib3RoIHVubXV0ZWQg
YW5kIGVuYWJsZWQKK30KKworYm9vbCBNZWRpYVN0cmVhbVRyYWNrOjpzdG9wcGVkKCkKK3sKKyAg
ICByZXR1cm4gbV9zdG9wcGVkOwogfQogCiB2b2lkIE1lZGlhU3RyZWFtVHJhY2s6OnRyYWNrRGlk
RW5kKCkKQEAgLTIxMSw3ICszNTQsNDIgQEAgdm9pZCBNZWRpYVN0cmVhbVRyYWNrOjp0cmFja0Rp
ZEVuZCgpCiAKIHZvaWQgTWVkaWFTdHJlYW1UcmFjazo6c3RvcCgpCiB7Ci0gICAgbV9zdG9wcGVk
ID0gdHJ1ZTsKKyAgICBzdG9wUHJvZHVjaW5nRGF0YSgpOworfQorCit2b2lkIE1lZGlhU3RyZWFt
VHJhY2s6OnNjaGVkdWxlRXZlbnREaXNwYXRjaChQYXNzUmVmUHRyPEV2ZW50PiBldmVudCkKK3sK
KyAgICB7CisgICAgICAgIE11dGV4TG9ja2VyIGxvY2tlcihtX211dGV4KTsKKyAgICAgICAgbV9z
Y2hlZHVsZWRFdmVudHMuYXBwZW5kKGV2ZW50KTsKKyAgICAgICAgaWYgKG1fZXZlbnREaXNwYXRj
aFNjaGVkdWxlZCkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgbV9ldmVudERpc3BhdGNo
U2NoZWR1bGVkID0gdHJ1ZTsKKyAgICB9CisKKyAgICBjYWxsT25NYWluVGhyZWFkKGJpbmQoJk1l
ZGlhU3RyZWFtVHJhY2s6OmRpc3BhdGNoUXVldWVkRXZlbnRzLCB0aGlzKSk7Cit9CisKK3ZvaWQg
TWVkaWFTdHJlYW1UcmFjazo6ZGlzcGF0Y2hRdWV1ZWRFdmVudHMoKQoreworICAgIFZlY3RvcjxS
ZWZQdHI8RXZlbnQ+PiBldmVudHM7CisgICAgeworICAgICAgICBNdXRleExvY2tlciBsb2NrZXIo
bV9tdXRleCk7CisKKyAgICAgICAgbV9ldmVudERpc3BhdGNoU2NoZWR1bGVkID0gZmFsc2U7Cisg
ICAgICAgIGlmICghc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKSB7CisgICAgICAgICAgICBtX3Nj
aGVkdWxlZEV2ZW50cy5jbGVhcigpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisK
KyAgICAgICAgZXZlbnRzLnN3YXAobV9zY2hlZHVsZWRFdmVudHMpOworICAgIH0KKworICAgIFZl
Y3RvcjxSZWZQdHI8RXZlbnQ+ID46Oml0ZXJhdG9yIGl0ID0gZXZlbnRzLmJlZ2luKCk7CisgICAg
Zm9yICg7IGl0ICE9IGV2ZW50cy5lbmQoKTsgKytpdCkKKyAgICAgICAgZGlzcGF0Y2hFdmVudCgo
Kml0KS5yZWxlYXNlKCkpOworCisgICAgZXZlbnRzLmNsZWFyKCk7CiB9CiAKIH0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVk
aWFTdHJlYW1UcmFjay5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVk
aWFzdHJlYW0vTWVkaWFTdHJlYW1UcmFjay5oCShyZXZpc2lvbiAxNTcwMTYpCisrKyBTb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJhY2suaAkod29ya2luZyBj
b3B5KQpAQCAtNDEsMTAgKzQxLDEzIEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIERp
Y3Rpb25hcnk7Ci1jbGFzcyBNZWRpYUNvbnN0cmFpbnRzOworY2xhc3MgTWVkaWFDb25zdHJhaW50
c0ltcGw7CitjbGFzcyBNZWRpYVNvdXJjZVN0YXRlczsKIGNsYXNzIE1lZGlhU3RyZWFtVHJhY2tT
b3VyY2VzQ2FsbGJhY2s7CitjbGFzcyBNZWRpYVN0cmVhbUNhcGFiaWxpdGllczsKK2NsYXNzIE1l
ZGlhVHJhY2tDb25zdHJhaW50czsKIAotY2xhc3MgTWVkaWFTdHJlYW1UcmFjayBGSU5BTCA6IHB1
YmxpYyBSZWZDb3VudGVkPE1lZGlhU3RyZWFtVHJhY2s+LCBwdWJsaWMgU2NyaXB0V3JhcHBhYmxl
LCBwdWJsaWMgQWN0aXZlRE9NT2JqZWN0LCBwdWJsaWMgRXZlbnRUYXJnZXRXaXRoSW5saW5lRGF0
YSwgcHVibGljIE1lZGlhU3RyZWFtU291cmNlOjpPYnNlcnZlciB7CitjbGFzcyBNZWRpYVN0cmVh
bVRyYWNrIDogcHVibGljIFJlZkNvdW50ZWQ8TWVkaWFTdHJlYW1UcmFjaz4sIHB1YmxpYyBTY3Jp
cHRXcmFwcGFibGUsIHB1YmxpYyBBY3RpdmVET01PYmplY3QsIHB1YmxpYyBFdmVudFRhcmdldFdp
dGhJbmxpbmVEYXRhLCBwdWJsaWMgTWVkaWFTdHJlYW1Tb3VyY2U6Ok9ic2VydmVyIHsKIHB1Ymxp
YzoKICAgICB2aXJ0dWFsIH5NZWRpYVN0cmVhbVRyYWNrKCk7CiAKQEAgLTU0LDE3ICs1NywzMSBA
QCBwdWJsaWM6CiAKICAgICBib29sIGVuYWJsZWQoKSBjb25zdDsKICAgICB2b2lkIHNldEVuYWJs
ZWQoYm9vbCk7Ci0gICAgCisKKyAgICBib29sIG11dGVkKCkgY29uc3Q7CisgICAgYm9vbCByZWFk
b25seSgpIGNvbnN0OworICAgIGJvb2wgcmVtb3RlKCkgY29uc3Q7CisKICAgICBjb25zdCBBdG9t
aWNTdHJpbmcmIHJlYWR5U3RhdGUoKSBjb25zdDsKIAogICAgIHN0YXRpYyB2b2lkIGdldFNvdXJj
ZXMoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFBhc3NSZWZQdHI8TWVkaWFTdHJlYW1UcmFja1Nv
dXJjZXNDYWxsYmFjaz4sIEV4Y2VwdGlvbkNvZGUmKTsKIAotICAgIE1lZGlhU3RyZWFtU291cmNl
KiBzb3VyY2UoKSBjb25zdCB7IHJldHVybiBtX3NvdXJjZS5nZXQoKTsgfQotICAgIHZvaWQgc2V0
U291cmNlKE1lZGlhU3RyZWFtU291cmNlKik7CisgICAgUGFzc1JlZlB0cjxNZWRpYVRyYWNrQ29u
c3RyYWludHM+IGNvbnN0cmFpbnRzKCkgY29uc3Q7CisgICAgUGFzc1JlZlB0cjxNZWRpYVNvdXJj
ZVN0YXRlcz4gc3RhdGVzKCkgY29uc3Q7CisgICAgUGFzc1JlZlB0cjxNZWRpYVN0cmVhbUNhcGFi
aWxpdGllcz4gY2FwYWJpbGl0aWVzKCkgY29uc3Q7CisgICAgdm9pZCBhcHBseUNvbnN0cmFpbnRz
KGNvbnN0IERpY3Rpb25hcnkmKTsKKworICAgIFBhc3NSZWZQdHI8TWVkaWFTdHJlYW1UcmFjaz4g
Y2xvbmUoKTsKKyAgICB2b2lkIHN0b3BQcm9kdWNpbmdEYXRhKCk7CiAKICAgICBERUZJTkVfQVRU
UklCVVRFX0VWRU5UX0xJU1RFTkVSKG11dGUpOwogICAgIERFRklORV9BVFRSSUJVVEVfRVZFTlRf
TElTVEVORVIodW5tdXRlKTsKKyAgICBERUZJTkVfQVRUUklCVVRFX0VWRU5UX0xJU1RFTkVSKHN0
YXJ0ZWQpOwogICAgIERFRklORV9BVFRSSUJVVEVfRVZFTlRfTElTVEVORVIoZW5kZWQpOworICAg
IERFRklORV9BVFRSSUJVVEVfRVZFTlRfTElTVEVORVIob3ZlcmNvbnN0cmFpbmVkKTsKKworICAg
IE1lZGlhU3RyZWFtU291cmNlKiBzb3VyY2UoKSBjb25zdCB7IHJldHVybiBtX3NvdXJjZS5nZXQo
KTsgfQorICAgIHZvaWQgc2V0U291cmNlKE1lZGlhU3RyZWFtU291cmNlKik7CiAKICAgICBib29s
IGVuZGVkKCkgY29uc3Q7CiAKQEAgLTcyLDMzICs4OSw0NCBAQCBwdWJsaWM6CiAgICAgdmlydHVh
bCBFdmVudFRhcmdldEludGVyZmFjZSBldmVudFRhcmdldEludGVyZmFjZSgpIGNvbnN0IE9WRVJS
SURFIHsgcmV0dXJuIE1lZGlhU3RyZWFtVHJhY2tFdmVudFRhcmdldEludGVyZmFjZVR5cGU7IH0K
ICAgICB2aXJ0dWFsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQoKSBjb25zdCBPVkVSUklERSB7IHJldHVybiBBY3RpdmVET01PYmplY3Q6OnNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQoKTsgfQogCi0gICAgLy8gQWN0aXZlRE9NT2JqZWN0Ci0gICAgdmlydHVhbCB2
b2lkIHN0b3AoKSBPVkVSUklERTsKLQogICAgIHVzaW5nIFJlZkNvdW50ZWQ8TWVkaWFTdHJlYW1U
cmFjaz46OnJlZjsKICAgICB1c2luZyBSZWZDb3VudGVkPE1lZGlhU3RyZWFtVHJhY2s+OjpkZXJl
ZjsKIAogcHJvdGVjdGVkOgorICAgIGV4cGxpY2l0IE1lZGlhU3RyZWFtVHJhY2soTWVkaWFTdHJl
YW1UcmFjayopOwogICAgIE1lZGlhU3RyZWFtVHJhY2soU2NyaXB0RXhlY3V0aW9uQ29udGV4dCos
IE1lZGlhU3RyZWFtU291cmNlKiwgY29uc3QgRGljdGlvbmFyeSopOwogCiBwcml2YXRlOgorCisg
ICAgdm9pZCBjb25maWd1cmVUcmFja1JlbmRlcmluZygpOwogICAgIHZvaWQgdHJhY2tEaWRFbmQo
KTsKKyAgICB2b2lkIHNjaGVkdWxlRXZlbnREaXNwYXRjaChQYXNzUmVmUHRyPEV2ZW50Pik7Cisg
ICAgdm9pZCBkaXNwYXRjaFF1ZXVlZEV2ZW50cygpOworCisgICAgLy8gQWN0aXZlRE9NT2JqZWN0
CisgICAgdmlydHVhbCB2b2lkIHN0b3AoKSBPVkVSUklERTsKIAogICAgIC8vIEV2ZW50VGFyZ2V0
CiAgICAgdmlydHVhbCB2b2lkIHJlZkV2ZW50VGFyZ2V0KCkgT1ZFUlJJREUgeyByZWYoKTsgfQog
ICAgIHZpcnR1YWwgdm9pZCBkZXJlZkV2ZW50VGFyZ2V0KCkgT1ZFUlJJREUgeyBkZXJlZigpOyB9
CiAKICAgICAvLyBNZWRpYVN0cmVhbVNvdXJjZU9ic2VydmVyCi0gICAgdmlydHVhbCB2b2lkIHNv
dXJjZUNoYW5nZWRTdGF0ZSgpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBzb3VyY2VTdGF0
ZUNoYW5nZWQoKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgc291cmNlTXV0ZWRDaGFuZ2Vk
KCkgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIHNvdXJjZUVuYWJsZWRDaGFuZ2VkKCkgT1ZF
UlJJREU7CisgICAgdmlydHVhbCBib29sIHN0b3BwZWQoKSBPVkVSUklERTsKIAorICAgIFZlY3Rv
cjxSZWZQdHI8RXZlbnQ+PiBtX3NjaGVkdWxlZEV2ZW50czsKICAgICBSZWZQdHI8TWVkaWFTdHJl
YW1Tb3VyY2U+IG1fc291cmNlOwotICAgIFJlZlB0cjxNZWRpYUNvbnN0cmFpbnRzPiBtX2NvbnN0
cmFpbnRzOworICAgIFJlZlB0cjxNZWRpYUNvbnN0cmFpbnRzSW1wbD4gbV9jb25zdHJhaW50czsK
ICAgICBNZWRpYVN0cmVhbVNvdXJjZTo6UmVhZHlTdGF0ZSBtX3JlYWR5U3RhdGU7CiAgICAgbXV0
YWJsZSBTdHJpbmcgbV9pZDsKKyAgICBNdXRleCBtX211dGV4OwogCiAgICAgYm9vbCBtX3N0b3Bw
ZWQ7CiAgICAgYm9vbCBtX2VuYWJsZWQ7CiAgICAgYm9vbCBtX211dGVkOworICAgIGJvb2wgbV9l
dmVudERpc3BhdGNoU2NoZWR1bGVkOwogfTsKIAogdHlwZWRlZiBWZWN0b3I8UmVmUHRyPE1lZGlh
U3RyZWFtVHJhY2s+ID4gTWVkaWFTdHJlYW1UcmFja1ZlY3RvcjsKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1UcmFjay5pZGwKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVRyYWNrLmlk
bAkocmV2aXNpb24gMTU3MDE2KQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVh
bS9NZWRpYVN0cmVhbVRyYWNrLmlkbAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDYgQEAKIC8q
CiAgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAg
KgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTIyLDYgKzIzLDggQEAKICAqIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgog
ICovCiAKK2VudW0gTWVkaWFTdHJlYW1UcmFja1N0YXRlIHsgIm5ldyIsICJsaXZlIiwgImVuZGVk
IiB9OworCiBbCiAgICAgQ29uZGl0aW9uYWw9TUVESUFfU1RSRUFNLAogICAgIEV2ZW50VGFyZ2V0
LApAQCAtMzMsMTUgKzM2LDI5IEBACiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIERPTVN0cmluZyBp
ZDsKICAgICByZWFkb25seSBhdHRyaWJ1dGUgRE9NU3RyaW5nIGxhYmVsOwogICAgICAgICAgICAg
IGF0dHJpYnV0ZSBib29sZWFuIGVuYWJsZWQ7Ci0KLSAgICByZWFkb25seSBhdHRyaWJ1dGUgRE9N
U3RyaW5nIHJlYWR5U3RhdGU7Ci0KKyAgICByZWFkb25seSBhdHRyaWJ1dGUgYm9vbGVhbiBtdXRl
ZDsKICAgICBhdHRyaWJ1dGUgRXZlbnRMaXN0ZW5lciBvbm11dGU7CiAgICAgYXR0cmlidXRlIEV2
ZW50TGlzdGVuZXIgb251bm11dGU7CisgICAgcmVhZG9ubHkgYXR0cmlidXRlIGJvb2xlYW4gX3Jl
YWRvbmx5OworICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBib29sZWFuIHJlbW90ZTsKKyAgICByZWFk
b25seSBhdHRyaWJ1dGUgTWVkaWFTdHJlYW1UcmFja1N0YXRlIHJlYWR5U3RhdGU7CisgICAgYXR0
cmlidXRlIEV2ZW50TGlzdGVuZXIgb25zdGFydGVkOwogICAgIGF0dHJpYnV0ZSBFdmVudExpc3Rl
bmVyIG9uZW5kZWQ7CiAKICAgICBbQ2FsbFdpdGg9U2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgUmFp
c2VzRXhjZXB0aW9uXSBzdGF0aWMgdm9pZCBnZXRTb3VyY2VzKE1lZGlhU3RyZWFtVHJhY2tTb3Vy
Y2VzQ2FsbGJhY2sgY2FsbGJhY2spOwogCisgICAgTWVkaWFUcmFja0NvbnN0cmFpbnRzIGNvbnN0
cmFpbnRzKCk7CisKKyAgICBNZWRpYVNvdXJjZVN0YXRlcyBzdGF0ZXMoKTsKKworICAgIE1lZGlh
U3RyZWFtQ2FwYWJpbGl0aWVzIGNhcGFiaWxpdGllcygpOyAvLyByZXR1cm5zIGVpdGhlciBBbGxW
aWRlb0NhcGFiaWxpdGllcyBvciBBbGxBdWRpb0NhcGFiaWxpdGllcworCisgICAgdm9pZCBhcHBs
eUNvbnN0cmFpbnRzKERpY3Rpb25hcnkgY29uc3RyYWludHMpOworCisgICAgYXR0cmlidXRlIEV2
ZW50TGlzdGVuZXIgb25vdmVyY29uc3RyYWluZWQ7CisgICAgTWVkaWFTdHJlYW1UcmFjayBjbG9u
ZSgpOworICAgIFtJbXBsZW1lbnRlZEFzPXN0b3BQcm9kdWNpbmdEYXRhXSB2b2lkIHN0b3AoKTsK
KwogICAgIC8vIEV2ZW50VGFyZ2V0IGludGVyZmFjZQogICAgIHZvaWQgYWRkRXZlbnRMaXN0ZW5l
cihET01TdHJpbmcgdHlwZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgRXZlbnRMaXN0ZW5l
ciBsaXN0ZW5lciwKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVk
aWFUcmFja0NvbnN0cmFpbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvbWVkaWFzdHJlYW0vTWVkaWFUcmFja0NvbnN0cmFpbnQuY3BwCShyZXZpc2lvbiAwKQorKysg
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVRyYWNrQ29uc3RyYWludC5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw1MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQor
ICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwK
KyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICoKKyAqLworCisjaW5jbHVkZSAiY29uZmln
LmgiCisKKyNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQorCisjaW5jbHVkZSAiTWVkaWFUcmFja0Nv
bnN0cmFpbnQuaCIKKwordXNpbmcgbmFtZXNwYWNlIEpTQzsKKworbmFtZXNwYWNlIFdlYkNvcmUg
eworCitQYXNzUmVmUHRyPE1lZGlhVHJhY2tDb25zdHJhaW50PiBNZWRpYVRyYWNrQ29uc3RyYWlu
dDo6Y3JlYXRlKGNvbnN0IERpY3Rpb25hcnkmIGNvbnN0cmFpbnQpCit7CisgICAgcmV0dXJuIGFk
b3B0UmVmKG5ldyBNZWRpYVRyYWNrQ29uc3RyYWludChjb25zdHJhaW50KSk7Cit9CisKK01lZGlh
VHJhY2tDb25zdHJhaW50OjpNZWRpYVRyYWNrQ29uc3RyYWludChjb25zdCBEaWN0aW9uYXJ5JiBj
b25zdHJhaW50KQorICAgIDogbV9jb25zdHJhaW50KGNvbnN0cmFpbnQpCit7Cit9CisKK01lZGlh
VHJhY2tDb25zdHJhaW50Ojp+TWVkaWFUcmFja0NvbnN0cmFpbnQoKQoreworfQorCit9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZgpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9t
ZWRpYXN0cmVhbS9NZWRpYVRyYWNrQ29uc3RyYWludC5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFUcmFja0NvbnN0cmFpbnQuaAkocmV2aXNp
b24gMCkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFUcmFja0Nv
bnN0cmFpbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDU4IEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFLCBJTkMuIGBgQVMgSVMnJyBB
TkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKgorICovCisKKyNpZm5kZWYg
TWVkaWFUcmFja0NvbnN0cmFpbnRfaAorI2RlZmluZSBNZWRpYVRyYWNrQ29uc3RyYWludF9oCisK
KyNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQorCisjaW5jbHVkZSAiRGljdGlvbmFyeS5oIgorI2lu
Y2x1ZGUgIlNjcmlwdFdyYXBwYWJsZS5oIgorI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CisK
K25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgU2NyaXB0VmFsdWU7CisKK2NsYXNzIE1lZGlh
VHJhY2tDb25zdHJhaW50IDogcHVibGljIFJlZkNvdW50ZWQ8TWVkaWFUcmFja0NvbnN0cmFpbnQ+
LCBwdWJsaWMgU2NyaXB0V3JhcHBhYmxlIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc1JlZlB0
cjxNZWRpYVRyYWNrQ29uc3RyYWludD4gY3JlYXRlKGNvbnN0IERpY3Rpb25hcnkmKTsKKworICAg
IHZpcnR1YWwgfk1lZGlhVHJhY2tDb25zdHJhaW50KCk7CisKKyAgICBjb25zdCBEaWN0aW9uYXJ5
JiBjb25zdHJhaW50KCkgY29uc3QgeyByZXR1cm4gbV9jb25zdHJhaW50OyB9CisKK3ByaXZhdGU6
CisgICAgZXhwbGljaXQgTWVkaWFUcmFja0NvbnN0cmFpbnQoY29uc3QgRGljdGlvbmFyeSYpOwor
ICAgIAorICAgIGNvbnN0IERpY3Rpb25hcnkmIG1fY29uc3RyYWludDsKK307CisKK30gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIE1lZGlhVHJhY2tDb25zdHJhaW50X2gKKworI2Vu
ZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhVHJhY2tD
b25zdHJhaW50LmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlh
c3RyZWFtL01lZGlhVHJhY2tDb25zdHJhaW50LmlkbAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFUcmFja0NvbnN0cmFpbnQuaWRsCSh3b3Jr
aW5nIGNvcHkpCkBAIC0wLDAgKzEsMzEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkK
KyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
CisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCitbCisgICAgQ29uZGl0aW9uYWw9
TUVESUFfU1RSRUFNLAorICAgIE5vSW50ZXJmYWNlT2JqZWN0LAorXSBpbnRlcmZhY2UgTWVkaWFU
cmFja0NvbnN0cmFpbnQgeworfTsKKwpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRp
YXN0cmVhbS9NZWRpYVRyYWNrQ29uc3RyYWludFNldC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVRyYWNrQ29uc3RyYWludFNldC5jcHAJ
KHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlh
VHJhY2tDb25zdHJhaW50U2V0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDUzIEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFLCBJTkMu
IGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4g
T1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKgorICov
CisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCisKKyNp
bmNsdWRlICJNZWRpYVRyYWNrQ29uc3RyYWludFNldC5oIgorCit1c2luZyBuYW1lc3BhY2UgSlND
OworCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1Bhc3NSZWZQdHI8TWVkaWFUcmFja0NvbnN0cmFp
bnRTZXQ+IE1lZGlhVHJhY2tDb25zdHJhaW50U2V0OjpjcmVhdGUoY29uc3QgRGljdGlvbmFyeSYg
Y29uc3RyYWludHMpCit7CisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBNZWRpYVRyYWNrQ29uc3Ry
YWludFNldChjb25zdHJhaW50cykpOworfQorCitNZWRpYVRyYWNrQ29uc3RyYWludFNldDo6TWVk
aWFUcmFja0NvbnN0cmFpbnRTZXQoY29uc3QgRGljdGlvbmFyeSYgY29uc3RyYWludHMpCisgICAg
OiBtX2NvbnN0cmFpbnRzKGNvbnN0cmFpbnRzKQoreworfQorCitNZWRpYVRyYWNrQ29uc3RyYWlu
dFNldDo6fk1lZGlhVHJhY2tDb25zdHJhaW50U2V0KCkKK3sKK30KKworfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQorCisjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJl
YW0vTWVkaWFUcmFja0NvbnN0cmFpbnRTZXQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhVHJhY2tDb25zdHJhaW50U2V0LmgJKHJldmlzaW9u
IDApCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhVHJhY2tDb25z
dHJhaW50U2V0LmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw1NiBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSwgSU5DLiBgYEFTIElTJycg
QU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICog
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICoKKyAqLworCisjaWZuZGVm
IE1lZGlhVHJhY2tDb25zdHJhaW50U2V0X2gKKyNkZWZpbmUgTWVkaWFUcmFja0NvbnN0cmFpbnRT
ZXRfaAorCisjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKKworI2luY2x1ZGUgIkRpY3Rpb25hcnku
aCIKKyNpbmNsdWRlICJTY3JpcHRXcmFwcGFibGUuaCIKKyNpbmNsdWRlIDx3dGYvUmVmQ291bnRl
ZC5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIE1lZGlhVHJhY2tDb25zdHJhaW50
U2V0IDogcHVibGljIFJlZkNvdW50ZWQ8TWVkaWFUcmFja0NvbnN0cmFpbnRTZXQ+LCBwdWJsaWMg
U2NyaXB0V3JhcHBhYmxlIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxNZWRpYVRy
YWNrQ29uc3RyYWludFNldD4gY3JlYXRlKGNvbnN0IERpY3Rpb25hcnkmKTsKKworICAgIHZpcnR1
YWwgfk1lZGlhVHJhY2tDb25zdHJhaW50U2V0KCk7CisKKyAgICBjb25zdCBEaWN0aW9uYXJ5JiBj
b25zdHJhaW50cygpIGNvbnN0IHsgcmV0dXJuIG1fY29uc3RyYWludHM7IH0KKworcHJpdmF0ZToK
KyAgICBleHBsaWNpdCBNZWRpYVRyYWNrQ29uc3RyYWludFNldChjb25zdCBEaWN0aW9uYXJ5Jik7
CisgICAgCisgICAgY29uc3QgRGljdGlvbmFyeSYgbV9jb25zdHJhaW50czsKK307CisKK30gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIE1lZGlhVHJhY2tDb25zdHJhaW50U2V0X2gK
KworI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlh
VHJhY2tDb25zdHJhaW50U2V0LmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL21lZGlhc3RyZWFtL01lZGlhVHJhY2tDb25zdHJhaW50U2V0LmlkbAkocmV2aXNpb24gMCkK
KysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFUcmFja0NvbnN0cmFp
bnRTZXQuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMzMgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgR09PR0xFIElOQy4gYGBBUyBJUycnIEFO
RCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuICBJTiBOTyBFVkVOVCBTSEFMTCBHT09HTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisg
KiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKK1sKKyAgICBDb25kaXRpb25hbD1NRURJ
QV9TVFJFQU0sCisgICAgTm9JbnRlcmZhY2VPYmplY3QsCitdIGludGVyZmFjZSBNZWRpYVRyYWNr
Q29uc3RyYWludFNldCB7CisgICAgLy8gRklYTUU6IE5vdCBpbXBsZW1lbnRlZC4KKyAgICAvLyBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTIxOTU0Cit9OworCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhVHJhY2tDb25zdHJhaW50
cy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9N
ZWRpYVRyYWNrQ29uc3RyYWludHMuY3BwCShyZXZpc2lvbiAwKQorKysgU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVRyYWNrQ29uc3RyYWludHMuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0wLDAgKzEsNjcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisg
KiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisg
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLiAKKyAqCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaWYgRU5B
QkxFKE1FRElBX1NUUkVBTSkKKworI2luY2x1ZGUgIk1lZGlhVHJhY2tDb25zdHJhaW50cy5oIgor
CisjaW5jbHVkZSAiTWVkaWFUcmFja0NvbnN0cmFpbnQuaCIKKyNpbmNsdWRlICJNZWRpYVRyYWNr
Q29uc3RyYWludFNldC5oIgorI2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCisKK3VzaW5nIG5h
bWVzcGFjZSBKU0M7CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworUGFzc1JlZlB0cjxNZWRpYVRy
YWNrQ29uc3RyYWludHM+IE1lZGlhVHJhY2tDb25zdHJhaW50czo6Y3JlYXRlKFBhc3NSZWZQdHI8
TWVkaWFDb25zdHJhaW50c0ltcGw+IGNvbnN0cmFpbnRzKQoreworICAgIHJldHVybiBhZG9wdFJl
ZihuZXcgTWVkaWFUcmFja0NvbnN0cmFpbnRzKGNvbnN0cmFpbnRzKSk7Cit9CisKK01lZGlhVHJh
Y2tDb25zdHJhaW50czo6TWVkaWFUcmFja0NvbnN0cmFpbnRzKFBhc3NSZWZQdHI8TWVkaWFDb25z
dHJhaW50c0ltcGw+IGNvbnN0cmFpbnRzKQorICAgIDogbV9jb25zdHJhaW50cyhjb25zdHJhaW50
cykKK3sKK30KKworVmVjdG9yPFBhc3NSZWZQdHI8TWVkaWFUcmFja0NvbnN0cmFpbnQ+PiBNZWRp
YVRyYWNrQ29uc3RyYWludHM6Om9wdGlvbmFsKGJvb2wpIGNvbnN0Cit7CisgICAgLy8gaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyMTk1NAorICAgIG5vdEltcGxlbWVu
dGVkKCk7CisgICAgcmV0dXJuIFZlY3RvcjxQYXNzUmVmUHRyPE1lZGlhVHJhY2tDb25zdHJhaW50
Pj4oKTsKK30KKworUGFzc1JlZlB0cjxNZWRpYVRyYWNrQ29uc3RyYWludFNldD4gTWVkaWFUcmFj
a0NvbnN0cmFpbnRzOjptYW5kYXRvcnkoYm9vbCkgY29uc3QKK3sKKyAgICAvLyBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTIxOTU0CisgICAgbm90SW1wbGVtZW50ZWQo
KTsKKyAgICByZXR1cm4gbnVsbHB0cjsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisj
ZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFUcmFj
a0NvbnN0cmFpbnRzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRp
YXN0cmVhbS9NZWRpYVRyYWNrQ29uc3RyYWludHMuaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFUcmFja0NvbnN0cmFpbnRzLmgJKHdvcmtp
bmcgY29weSkKQEAgLTAsMCArMSw2MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBU
SEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuIAorICoKKyAqLworCisjaWZuZGVmIE1lZGlhVHJhY2tDb25zdHJh
aW50c19oCisjZGVmaW5lIE1lZGlhVHJhY2tDb25zdHJhaW50c19oCisKKyNpZiBFTkFCTEUoTUVE
SUFfU1RSRUFNKQorCisjaW5jbHVkZSAiTWVkaWFDb25zdHJhaW50c0ltcGwuaCIKKyNpbmNsdWRl
ICJTY3JpcHRXcmFwcGFibGUuaCIKKyNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgorCituYW1l
c3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIE1lZGlhVHJhY2tDb25zdHJhaW50OworY2xhc3MgTWVk
aWFUcmFja0NvbnN0cmFpbnRTZXQ7CisKK2NsYXNzIE1lZGlhVHJhY2tDb25zdHJhaW50cyA6IHB1
YmxpYyBSZWZDb3VudGVkPE1lZGlhVHJhY2tDb25zdHJhaW50cz4sIHB1YmxpYyBTY3JpcHRXcmFw
cGFibGUgeworcHVibGljOgorICAgIHZpcnR1YWwgfk1lZGlhVHJhY2tDb25zdHJhaW50cygpIHsg
fQorCisgICAgc3RhdGljIFBhc3NSZWZQdHI8TWVkaWFUcmFja0NvbnN0cmFpbnRzPiBjcmVhdGUo
UGFzc1JlZlB0cjxNZWRpYUNvbnN0cmFpbnRzSW1wbD4pOworCisgICAgVmVjdG9yPFBhc3NSZWZQ
dHI8TWVkaWFUcmFja0NvbnN0cmFpbnQ+PiBvcHRpb25hbChib29sKSBjb25zdDsKKyAgICBQYXNz
UmVmUHRyPE1lZGlhVHJhY2tDb25zdHJhaW50U2V0PiBtYW5kYXRvcnkoYm9vbCkgY29uc3Q7CisK
K3ByaXZhdGU6CisgICAgZXhwbGljaXQgTWVkaWFUcmFja0NvbnN0cmFpbnRzKFBhc3NSZWZQdHI8
TWVkaWFDb25zdHJhaW50c0ltcGw+KTsKKyAgICAKKyAgICBSZWZQdHI8TWVkaWFDb25zdHJhaW50
c0ltcGw+IG1fY29uc3RyYWludHM7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNl
bmRpZiAvLyBNZWRpYVRyYWNrQ29uc3RyYWludHNfaAorCisjZW5kaWYKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFUcmFja0NvbnN0cmFpbnRzLmlkbAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhVHJhY2tD
b25zdHJhaW50cy5pZGwJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21l
ZGlhc3RyZWFtL01lZGlhVHJhY2tDb25zdHJhaW50cy5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTAs
MCArMSwzMyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAq
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuIAorICovCisKK1sKKyAgICBDb25kaXRpb25hbD1NRURJQV9TVFJFQU0sCisg
ICAgTm9JbnRlcmZhY2VPYmplY3QsCitdIGludGVyZmFjZSBNZWRpYVRyYWNrQ29uc3RyYWludHMg
eworICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBNZWRpYVRyYWNrQ29uc3RyYWludFNldD8gbWFuZGF0
b3J5OworICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBNZWRpYVRyYWNrQ29uc3RyYWludFtdPyBvcHRp
b25hbDsKK307CisKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vVXNl
ck1lZGlhUmVxdWVzdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9t
ZWRpYXN0cmVhbS9Vc2VyTWVkaWFSZXF1ZXN0LmNwcAkocmV2aXNpb24gMTU3MDE2KQorKysgU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9Vc2VyTWVkaWFSZXF1ZXN0LmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMTczLDcgKzE3Myw2IEBAIHZvaWQgVXNlck1lZGlhUmVxdWVzdDo6Y2Fs
bFN1Y2Nlc3NIYW5kbGUKICAgICBmb3IgKE1lZGlhU3RyZWFtVHJhY2tWZWN0b3I6Oml0ZXJhdG9y
IGl0ZXIgPSB0cmFja3MuYmVnaW4oKTsgaXRlciAhPSB0cmFja3MuZW5kKCk7ICsraXRlcikKICAg
ICAgICAgKCppdGVyKS0+c291cmNlKCktPnNldENvbnN0cmFpbnRzKG1fdmlkZW9Db25zdHJhaW50
cyk7CiAKLSAgICBNZWRpYVN0cmVhbUNlbnRlcjo6c2hhcmVkKCkuZGlkQ3JlYXRlTWVkaWFTdHJl
YW0oc3RyZWFtRGVzY3JpcHRvci5nZXQoKSk7CiAgICAgbV9zdWNjZXNzQ2FsbGJhY2stPmhhbmRs
ZUV2ZW50KHN0cmVhbS5nZXQoKSk7CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMv
bWVkaWFzdHJlYW0vVmlkZW9TdHJlYW1UcmFjay5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9WaWRlb1N0cmVhbVRyYWNrLmNwcAkocmV2aXNpb24g
MTU3MDE2KQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9WaWRlb1N0cmVh
bVRyYWNrLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDcsMTEgKzQ3LDIxIEBAIFBhc3NSZWZQdHI8
VmlkZW9TdHJlYW1UcmFjaz4gVmlkZW9TdHJlYW0KICAgICByZXR1cm4gdHJhY2sucmVsZWFzZSgp
OwogfQogCitQYXNzUmVmUHRyPFZpZGVvU3RyZWFtVHJhY2s+IFZpZGVvU3RyZWFtVHJhY2s6OmNy
ZWF0ZShNZWRpYVN0cmVhbVRyYWNrKiB0cmFjaykKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3
IFZpZGVvU3RyZWFtVHJhY2sodHJhY2spKTsKK30KKwogVmlkZW9TdHJlYW1UcmFjazo6VmlkZW9T
dHJlYW1UcmFjayhTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBNZWRpYVN0cmVhbVNv
dXJjZSogc291cmNlLCBjb25zdCBEaWN0aW9uYXJ5KiB2aWRlb0NvbnN0cmFpbnRzKQogICAgIDog
TWVkaWFTdHJlYW1UcmFjayhjb250ZXh0LCBzb3VyY2UsIHZpZGVvQ29uc3RyYWludHMpCiB7CiB9
CiAKK1ZpZGVvU3RyZWFtVHJhY2s6OlZpZGVvU3RyZWFtVHJhY2soTWVkaWFTdHJlYW1UcmFjayog
dHJhY2spCisgICAgOiBNZWRpYVN0cmVhbVRyYWNrKHRyYWNrKQoreworfQorCiBjb25zdCBBdG9t
aWNTdHJpbmcmIFZpZGVvU3RyZWFtVHJhY2s6OmtpbmQoKSBjb25zdAogewogICAgIHN0YXRpYyBO
ZXZlckRlc3Ryb3llZDxBdG9taWNTdHJpbmc+IHZpZGVvS2luZCgidmlkZW8iLCBBdG9taWNTdHJp
bmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMv
bWVkaWFzdHJlYW0vVmlkZW9TdHJlYW1UcmFjay5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vVmlkZW9TdHJlYW1UcmFjay5oCShyZXZpc2lvbiAxNTcw
MTYpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1ZpZGVvU3RyZWFtVHJh
Y2suaAkod29ya2luZyBjb3B5KQpAQCAtMjksMTggKzI5LDE5IEBACiAjaWYgRU5BQkxFKE1FRElB
X1NUUkVBTSkKIAogI2luY2x1ZGUgIk1lZGlhU3RyZWFtVHJhY2suaCIKLSNpbmNsdWRlIDx3dGYv
VmVjdG9yLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KKyNpbmNsdWRlIDx3dGYvVmVj
dG9yLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgTWVkaWFTdHJlYW1Tb3VyY2U7
CiBjbGFzcyBTY3JpcHRFeGVjdXRpb25Db250ZXh0OwogCi1jbGFzcyBWaWRlb1N0cmVhbVRyYWNr
IDogcHVibGljIE1lZGlhU3RyZWFtVHJhY2sgeworY2xhc3MgVmlkZW9TdHJlYW1UcmFjayBGSU5B
TCA6IHB1YmxpYyBNZWRpYVN0cmVhbVRyYWNrIHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUGFzc1Jl
ZlB0cjxWaWRlb1N0cmVhbVRyYWNrPiBjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIGNv
bnN0IERpY3Rpb25hcnkmKTsKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxWaWRlb1N0cmVhbVRyYWNr
PiBjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIE1lZGlhU3RyZWFtU291cmNlKik7Cisg
ICAgc3RhdGljIFBhc3NSZWZQdHI8VmlkZW9TdHJlYW1UcmFjaz4gY3JlYXRlKE1lZGlhU3RyZWFt
VHJhY2sqKTsKIAogICAgIHZpcnR1YWwgflZpZGVvU3RyZWFtVHJhY2soKSB7IH0KIApAQCAtNDgs
NiArNDksNyBAQCBwdWJsaWM6CiAKIHByaXZhdGU6CiAgICAgVmlkZW9TdHJlYW1UcmFjayhTY3Jp
cHRFeGVjdXRpb25Db250ZXh0KiwgTWVkaWFTdHJlYW1Tb3VyY2UqLCBjb25zdCBEaWN0aW9uYXJ5
Kik7CisgICAgZXhwbGljaXQgVmlkZW9TdHJlYW1UcmFjayhNZWRpYVN0cmVhbVRyYWNrKik7CiB9
OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmF1ZGlvL0F1ZGlvQ29udGV4dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJhdWRpby9BdWRpb0NvbnRleHQuY3BwCShyZXZpc2lvbiAxNTcwMTYpCisrKyBT
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQ29udGV4dC5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTYzLDYgKzYzLDcgQEAKICNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQogI2luY2x1
ZGUgIk1lZGlhU3RyZWFtLmgiCiAjaW5jbHVkZSAiTWVkaWFTdHJlYW1BdWRpb0Rlc3RpbmF0aW9u
Tm9kZS5oIgorI2luY2x1ZGUgIk1lZGlhU3RyZWFtQXVkaW9Tb3VyY2UuaCIKICNpbmNsdWRlICJN
ZWRpYVN0cmVhbUF1ZGlvU291cmNlTm9kZS5oIgogI2VuZGlmCiAKQEAgLTQyMCwxMiArNDIxLDE0
IEBAIFBhc3NSZWZQdHI8TWVkaWFTdHJlYW1BdWRpb1NvdXJjZU5vZGU+IEEKICAgICAvLyBGSVhN
RTogZ2V0IGEgcHJvdmlkZXIgZm9yIG5vbi1sb2NhbCBNZWRpYVN0cmVhbXMgKGxpa2UgZnJvbSBh
IHJlbW90ZSBwZWVyKS4KICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGF1ZGlvVHJhY2tzLnNp
emUoKTsgKytpKSB7CiAgICAgICAgIFJlZlB0cjxNZWRpYVN0cmVhbVRyYWNrPiBsb2NhbEF1ZGlv
ID0gYXVkaW9UcmFja3NbaV07Ci0gICAgICAgIE1lZGlhU3RyZWFtU291cmNlKiBzb3VyY2UgPSBs
b2NhbEF1ZGlvLT5zb3VyY2UoKTsKLSAgICAgICAgaWYgKCFzb3VyY2UtPmRldmljZUlkKCkuaXNF
bXB0eSgpKSB7Ci0gICAgICAgICAgICBkZXN0aW5hdGlvbigpLT5lbmFibGVJbnB1dChzb3VyY2Ut
PmRldmljZUlkKCkpOwotICAgICAgICAgICAgcHJvdmlkZXIgPSBkZXN0aW5hdGlvbigpLT5sb2Nh
bEF1ZGlvSW5wdXRQcm92aWRlcigpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KKyAg
ICAgICAgaWYgKCFsb2NhbEF1ZGlvLT5zb3VyY2UoKS0+aXNBdWRpb1N0cmVhbVNvdXJjZSgpKQor
ICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgTWVkaWFTdHJlYW1BdWRpb1NvdXJjZSog
c291cmNlID0gc3RhdGljX2Nhc3Q8TWVkaWFTdHJlYW1BdWRpb1NvdXJjZSo+KGxvY2FsQXVkaW8t
PnNvdXJjZSgpKTsKKyAgICAgICAgQVNTRVJUKCFzb3VyY2UtPmRldmljZUlkKCkuaXNFbXB0eSgp
KTsKKyAgICAgICAgZGVzdGluYXRpb24oKS0+ZW5hYmxlSW5wdXQoc291cmNlLT5kZXZpY2VJZCgp
KTsKKyAgICAgICAgcHJvdmlkZXIgPSBkZXN0aW5hdGlvbigpLT5sb2NhbEF1ZGlvSW5wdXRQcm92
aWRlcigpOworICAgICAgICBicmVhazsKICAgICB9CiAKICAgICBSZWZQdHI8TWVkaWFTdHJlYW1B
dWRpb1NvdXJjZU5vZGU+IG5vZGUgPSBNZWRpYVN0cmVhbUF1ZGlvU291cmNlTm9kZTo6Y3JlYXRl
KHRoaXMsIG1lZGlhU3RyZWFtLCBwcm92aWRlcik7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmF1ZGlvL01lZGlhU3RyZWFtQXVkaW9EZXN0aW5hdGlvbk5vZGUuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vTWVkaWFTdHJlYW1BdWRpb0Rl
c3RpbmF0aW9uTm9kZS5jcHAJKHJldmlzaW9uIDE1NzAxNikKKysrIFNvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViYXVkaW8vTWVkaWFTdHJlYW1BdWRpb0Rlc3RpbmF0aW9uTm9kZS5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTMxLDkgKzMxLDggQEAKICNpbmNsdWRlICJBdWRpb0NvbnRleHQuaCIKICNp
bmNsdWRlICJBdWRpb05vZGVJbnB1dC5oIgogI2luY2x1ZGUgIk1lZGlhU3RyZWFtLmgiCi0jaW5j
bHVkZSAiTWVkaWFTdHJlYW1DZW50ZXIuaCIKKyNpbmNsdWRlICJNZWRpYVN0cmVhbUF1ZGlvU291
cmNlLmgiCiAjaW5jbHVkZSAiUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyLmgiCi0jaW5jbHVkZSAi
VVVJRC5oIgogI2luY2x1ZGUgPHd0Zi9Mb2NrZXIuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpA
QCAtNDksMTIgKzQ4LDEwIEBAIE1lZGlhU3RyZWFtQXVkaW9EZXN0aW5hdGlvbk5vZGU6Ok1lZGlh
U3QKIHsKICAgICBzZXROb2RlVHlwZShOb2RlVHlwZU1lZGlhU3RyZWFtQXVkaW9EZXN0aW5hdGlv
bik7CiAKLSAgICBtX3NvdXJjZSA9IE1lZGlhU3RyZWFtU291cmNlOjpjcmVhdGUoQVNDSUlMaXRl
cmFsKCJXZWJBdWRpby0iKSArIGNyZWF0ZUNhbm9uaWNhbFVVSURTdHJpbmcoKSwgTWVkaWFTdHJl
YW1Tb3VyY2U6OkF1ZGlvLCAiTWVkaWFTdHJlYW1BdWRpb0Rlc3RpbmF0aW9uTm9kZSIsIE1lZGlh
U3RyZWFtU291cmNlOjpMaXZlLCB0cnVlKTsKKyAgICBtX3NvdXJjZSA9IE1lZGlhU3RyZWFtQXVk
aW9Tb3VyY2U6OmNyZWF0ZSgpOwogICAgIE1lZGlhU3RyZWFtU291cmNlVmVjdG9yIGF1ZGlvU291
cmNlczsKICAgICBhdWRpb1NvdXJjZXMuYXBwZW5kKG1fc291cmNlKTsKLSAgICBNZWRpYVN0cmVh
bVNvdXJjZVZlY3RvciB2aWRlb1NvdXJjZXM7Ci0gICAgbV9zdHJlYW0gPSBNZWRpYVN0cmVhbTo6
Y3JlYXRlKGNvbnRleHQtPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgTWVkaWFTdHJlYW1EZXNj
cmlwdG9yOjpjcmVhdGUoYXVkaW9Tb3VyY2VzLCB2aWRlb1NvdXJjZXMpKTsKLSAgICBNZWRpYVN0
cmVhbUNlbnRlcjo6c2hhcmVkKCkuZGlkQ3JlYXRlTWVkaWFTdHJlYW0obV9zdHJlYW0tPmRlc2Ny
aXB0b3IoKSk7CisgICAgbV9zdHJlYW0gPSBNZWRpYVN0cmVhbTo6Y3JlYXRlKGNvbnRleHQtPnNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgTWVkaWFTdHJlYW1EZXNjcmlwdG9yOjpjcmVhdGUoYXVk
aW9Tb3VyY2VzLCBNZWRpYVN0cmVhbVNvdXJjZVZlY3RvcigpKSk7CiAKICAgICBtX3NvdXJjZS0+
c2V0QXVkaW9Gb3JtYXQobnVtYmVyT2ZDaGFubmVscywgY29udGV4dC0+c2FtcGxlUmF0ZSgpKTsK
IApJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9NZWRpYVN0cmVhbUF1ZGlv
RGVzdGluYXRpb25Ob2RlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJhdWRpby9NZWRpYVN0cmVhbUF1ZGlvRGVzdGluYXRpb25Ob2RlLmgJKHJldmlzaW9uIDE1NzAx
NikKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vTWVkaWFTdHJlYW1BdWRpb0Rl
c3RpbmF0aW9uTm9kZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNiw2ICszNiw3IEBACiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKIGNsYXNzIEF1ZGlvQ29udGV4dDsKK2NsYXNzIE1lZGlhU3RyZWFtQXVk
aW9Tb3VyY2U7CiAKIGNsYXNzIE1lZGlhU3RyZWFtQXVkaW9EZXN0aW5hdGlvbk5vZGUgOiBwdWJs
aWMgQXVkaW9CYXNpY0luc3BlY3Rvck5vZGUgewogcHVibGljOgpAQCAtNjEsNyArNjIsNyBAQCBw
cml2YXRlOgogICAgIHZpcnR1YWwgYm9vbCBwcm9wYWdhdGVzU2lsZW5jZSgpIGNvbnN0IE9WRVJS
SURFIHsgcmV0dXJuIGZhbHNlOyB9CiAKICAgICBSZWZQdHI8TWVkaWFTdHJlYW0+IG1fc3RyZWFt
OwotICAgIFJlZlB0cjxNZWRpYVN0cmVhbVNvdXJjZT4gbV9zb3VyY2U7CisgICAgUmVmUHRyPE1l
ZGlhU3RyZWFtQXVkaW9Tb3VyY2U+IG1fc291cmNlOwogICAgIFJlZlB0cjxBdWRpb0J1cz4gbV9t
aXhCdXM7CiB9OwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL01lZGlh
U3RyZWFtQXVkaW9Tb3VyY2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViYXVkaW8vTWVkaWFTdHJlYW1BdWRpb1NvdXJjZS5jcHAJKHJldmlzaW9uIDApCisrKyBT
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL01lZGlhU3RyZWFtQXVkaW9Tb3VyY2UuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsOTggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFO
RCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25m
aWcuaCIKKworI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCisKKyNpbmNsdWRlICJNZWRpYVN0cmVh
bUF1ZGlvU291cmNlLmgiCisKKyNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgorI2luY2x1ZGUg
IlVVSUQuaCIKKyNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgorCituYW1lc3BhY2UgV2ViQ29y
ZSB7CisKK1Bhc3NSZWZQdHI8TWVkaWFTdHJlYW1BdWRpb1NvdXJjZT4gTWVkaWFTdHJlYW1BdWRp
b1NvdXJjZTo6Y3JlYXRlKCkKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3IE1lZGlhU3RyZWFt
QXVkaW9Tb3VyY2UoKSk7Cit9CisKK01lZGlhU3RyZWFtQXVkaW9Tb3VyY2U6Ok1lZGlhU3RyZWFt
QXVkaW9Tb3VyY2UoKQorICAgIDogTWVkaWFTdHJlYW1Tb3VyY2UoQVNDSUlMaXRlcmFsKCJXZWJB
dWRpby0iKSArIGNyZWF0ZUNhbm9uaWNhbFVVSURTdHJpbmcoKSwgTWVkaWFTdHJlYW1Tb3VyY2U6
OkF1ZGlvLCAiTWVkaWFTdHJlYW1BdWRpb0Rlc3RpbmF0aW9uTm9kZSIpCit7Cit9CisKK1Bhc3NS
ZWZQdHI8TWVkaWFTdHJlYW1Tb3VyY2VDYXBhYmlsaXRpZXM+IE1lZGlhU3RyZWFtQXVkaW9Tb3Vy
Y2U6OmNhcGFiaWxpdGllcygpIGNvbnN0Cit7CisgICAgLy8gRklYTUU6IGltcGxlbWVudCB0aGlz
LgorICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjI0MzAK
KyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiAwOworfQorCitjb25zdCBNZWRpYVN0
cmVhbVNvdXJjZVN0YXRlcyYgTWVkaWFTdHJlYW1BdWRpb1NvdXJjZTo6c3RhdGVzKCkKK3sKKyAg
ICAvLyBGSVhNRTogaW1wbGVtZW50IHRoaXMuCisgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTEyMjQzMAorICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0
dXJuIG1fY3VycmVudFN0YXRlczsKKyAgICAKK30KKwordm9pZCBNZWRpYVN0cmVhbUF1ZGlvU291
cmNlOjphZGRBdWRpb0NvbnN1bWVyKFBhc3NSZWZQdHI8QXVkaW9EZXN0aW5hdGlvbkNvbnN1bWVy
PiBjb25zdW1lcikKK3sKKyAgICBNdXRleExvY2tlciBsb2NrZXIobV9hdWRpb0NvbnN1bWVyc0xv
Y2spOworICAgIG1fYXVkaW9Db25zdW1lcnMuYXBwZW5kKGNvbnN1bWVyKTsKK30KKworYm9vbCBN
ZWRpYVN0cmVhbUF1ZGlvU291cmNlOjpyZW1vdmVBdWRpb0NvbnN1bWVyKEF1ZGlvRGVzdGluYXRp
b25Db25zdW1lciogY29uc3VtZXIpCit7CisgICAgTXV0ZXhMb2NrZXIgbG9ja2VyKG1fYXVkaW9D
b25zdW1lcnNMb2NrKTsKKyAgICBzaXplX3QgcG9zID0gbV9hdWRpb0NvbnN1bWVycy5maW5kKGNv
bnN1bWVyKTsKKyAgICBpZiAocG9zICE9IG5vdEZvdW5kKSB7CisgICAgICAgIG1fYXVkaW9Db25z
dW1lcnMucmVtb3ZlKHBvcyk7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKyAgICByZXR1
cm4gZmFsc2U7Cit9CisKK3ZvaWQgTWVkaWFTdHJlYW1BdWRpb1NvdXJjZTo6c2V0QXVkaW9Gb3Jt
YXQoc2l6ZV90IG51bWJlck9mQ2hhbm5lbHMsIGZsb2F0IHNhbXBsZVJhdGUpCit7CisgICAgTXV0
ZXhMb2NrZXIgbG9ja2VyKG1fYXVkaW9Db25zdW1lcnNMb2NrKTsKKyAgICBmb3IgKFZlY3RvcjxS
ZWZQdHI8QXVkaW9EZXN0aW5hdGlvbkNvbnN1bWVyPiA+OjppdGVyYXRvciBpdCA9IG1fYXVkaW9D
b25zdW1lcnMuYmVnaW4oKTsgaXQgIT0gbV9hdWRpb0NvbnN1bWVycy5lbmQoKTsgKytpdCkKKyAg
ICAgICAgKCppdCktPnNldEZvcm1hdChudW1iZXJPZkNoYW5uZWxzLCBzYW1wbGVSYXRlKTsKK30K
Kwordm9pZCBNZWRpYVN0cmVhbUF1ZGlvU291cmNlOjpjb25zdW1lQXVkaW8oQXVkaW9CdXMqIGJ1
cywgc2l6ZV90IG51bWJlck9mRnJhbWVzKQoreworICAgIE11dGV4TG9ja2VyIGxvY2tlcihtX2F1
ZGlvQ29uc3VtZXJzTG9jayk7CisgICAgZm9yIChWZWN0b3I8UmVmUHRyPEF1ZGlvRGVzdGluYXRp
b25Db25zdW1lcj4gPjo6aXRlcmF0b3IgaXQgPSBtX2F1ZGlvQ29uc3VtZXJzLmJlZ2luKCk7IGl0
ICE9IG1fYXVkaW9Db25zdW1lcnMuZW5kKCk7ICsraXQpCisgICAgICAgICgqaXQpLT5jb25zdW1l
QXVkaW8oYnVzLCBudW1iZXJPZkZyYW1lcyk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
KworI2VuZGlmIC8vIEVOQUJMRShNRURJQV9TVFJFQU0pCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmF1ZGlvL01lZGlhU3RyZWFtQXVkaW9Tb3VyY2UuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL01lZGlhU3RyZWFtQXVkaW9Tb3VyY2UuaAko
cmV2aXNpb24gMCkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vTWVkaWFTdHJl
YW1BdWRpb1NvdXJjZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNzcgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElO
Qy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5D
LiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNpZm5kZWYgTWVkaWFTdHJlYW1BdWRpb1NvdXJjZV9oCisjZGVmaW5lIE1lZGlhU3RyZWFtQXVk
aW9Tb3VyY2VfaAorCisjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKKworI2luY2x1ZGUgIkF1ZGlv
RGVzdGluYXRpb25Db25zdW1lci5oIgorI2luY2x1ZGUgIk1lZGlhU3RyZWFtU291cmNlLmgiCisj
aW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisjaW5j
bHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xh
c3MgQXVkaW9CdXM7CitjbGFzcyBNZWRpYVN0cmVhbVNvdXJjZUNhcGFiaWxpdGllczsKKworY2xh
c3MgTWVkaWFTdHJlYW1BdWRpb1NvdXJjZSA6IHB1YmxpYyBNZWRpYVN0cmVhbVNvdXJjZSB7Citw
dWJsaWM6CisgICAgc3RhdGljIFBhc3NSZWZQdHI8TWVkaWFTdHJlYW1BdWRpb1NvdXJjZT4gY3Jl
YXRlKCk7CisKKyAgICB+TWVkaWFTdHJlYW1BdWRpb1NvdXJjZSgpIHsgfQorCisgICAgdmlydHVh
bCBib29sIGlzQXVkaW9TdHJlYW1Tb3VyY2UoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9CisgICAg
dmlydHVhbCBib29sIHVzZUlERm9yVHJhY2tJRCgpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KKwor
ICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxNZWRpYVN0cmVhbVNvdXJjZUNhcGFiaWxpdGllcz4gY2Fw
YWJpbGl0aWVzKCkgY29uc3Q7CisgICAgdmlydHVhbCBjb25zdCBNZWRpYVN0cmVhbVNvdXJjZVN0
YXRlcyYgc3RhdGVzKCk7CisgICAgCisgICAgY29uc3QgU3RyaW5nJiBkZXZpY2VJZCgpIGNvbnN0
IHsgcmV0dXJuIG1fZGV2aWNlSWQ7IH0KKyAgICB2b2lkIHNldERldmljZUlkKGNvbnN0IFN0cmlu
ZyYgZGV2aWNlSWQpIHsgbV9kZXZpY2VJZCA9IGRldmljZUlkOyB9CisKKyAgICB2b2lkIHNldEF1
ZGlvRm9ybWF0KHNpemVfdCBudW1iZXJPZkNoYW5uZWxzLCBmbG9hdCBzYW1wbGVSYXRlKTsKKyAg
ICB2b2lkIGNvbnN1bWVBdWRpbyhBdWRpb0J1cyosIHNpemVfdCBudW1iZXJPZkZyYW1lcyk7CisK
KyAgICB2b2lkIGFkZEF1ZGlvQ29uc3VtZXIoUGFzc1JlZlB0cjxBdWRpb0Rlc3RpbmF0aW9uQ29u
c3VtZXI+KTsKKyAgICBib29sIHJlbW92ZUF1ZGlvQ29uc3VtZXIoQXVkaW9EZXN0aW5hdGlvbkNv
bnN1bWVyKik7CisgICAgY29uc3QgVmVjdG9yPFJlZlB0cjxBdWRpb0Rlc3RpbmF0aW9uQ29uc3Vt
ZXI+PiYgYXVkaW9Db25zdW1lcnMoKSBjb25zdCB7IHJldHVybiBtX2F1ZGlvQ29uc3VtZXJzOyB9
CisKK3ByaXZhdGU6CisgICAgTWVkaWFTdHJlYW1BdWRpb1NvdXJjZSgpOworCisgICAgU3RyaW5n
IG1fZGV2aWNlSWQ7CisgICAgTXV0ZXggbV9hdWRpb0NvbnN1bWVyc0xvY2s7CisgICAgVmVjdG9y
PFJlZlB0cjxBdWRpb0Rlc3RpbmF0aW9uQ29uc3VtZXI+PiBtX2F1ZGlvQ29uc3VtZXJzOworICAg
IE1lZGlhU3RyZWFtU291cmNlU3RhdGVzIG1fY3VycmVudFN0YXRlczsKK307CisKK30gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShNRURJQV9TVFJFQU0pCisKKyNlbmRp
ZiAvLyBNZWRpYVN0cmVhbUF1ZGlvU291cmNlX2gKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDE1NzAxNikKKysr
IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2lu
ZyBjb3B5KQpAQCAtODQsNiArODQsMzAgQEAKIAkJMDcwMzM0RDcxNDU5RkZENTAwOEQ4RDQ1IC8q
IFRyYWNrQmFzZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMDcwMzM0RDYxNDU5RkZENTAwOEQ4RDQ1IC8qIFRyYWNrQmFzZS5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTA3MDMzNEQ5MTQ1QTAwNkYwMDhE
OEQ0NSAvKiBUcmFja0Jhc2UuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMDcwMzM0RDgxNDVBMDA2RjAwOEQ4RDQ1IC8qIFRyYWNrQmFzZS5jcHAgKi87
IH07CiAJCTA3MDMzNEU5MTQ1QTFGMzYwMDhEOEQ0NSAvKiBKU1RyYWNrQ3VzdG9tLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3MDMzNEU4MTQ1QTFG
MzUwMDhEOEQ0NSAvKiBKU1RyYWNrQ3VzdG9tLmNwcCAqLzsgfTsKKwkJMDcwNTg0RkQxN0Y5RDZE
RjAwNUYyQkNCIC8qIE1lZGlhU3RyZWFtU291cmNlQ2FwYWJpbGl0aWVzLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwNzA1ODRGQjE3RjlENkRGMDA1RjJC
Q0IgLyogTWVkaWFTdHJlYW1Tb3VyY2VDYXBhYmlsaXRpZXMuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQkwNzA1ODRGRjE3RjlGMDVFMDA1RjJCQ0Ig
LyogQ2FwYWJpbGl0eVJhbmdlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDA3MDU4NEZFMTdGOUYwNUUwMDVGMkJDQiAvKiBDYXBhYmlsaXR5UmFuZ2Uu
Y3BwICovOyB9OworCQkwNzA1ODUwMjE3RkExMEQwMDA1RjJCQ0IgLyogSlNBbGxWaWRlb0NhcGFi
aWxpdGllcy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAwNzA1ODUwMDE3RkExMEQwMDA1RjJCQ0IgLyogSlNBbGxWaWRlb0NhcGFiaWxpdGllcy5jcHAg
Ki87IH07CisJCTA3MDU4NTAzMTdGQTEwRDAwMDVGMkJDQiAvKiBKU0FsbFZpZGVvQ2FwYWJpbGl0
aWVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwNzA1
ODUwMTE3RkExMEQwMDA1RjJCQ0IgLyogSlNBbGxWaWRlb0NhcGFiaWxpdGllcy5oICovOyB9Owor
CQkwNzA1ODUwODE3RkE0Njg5MDA1RjJCQ0IgLyogQWxsQXVkaW9DYXBhYmlsaXRpZXMuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3MDU4NTA1MTdGQTQ2
ODkwMDVGMkJDQiAvKiBBbGxBdWRpb0NhcGFiaWxpdGllcy5oICovOyB9OworCQkwNzA1ODUwQjE3
RkE0ODI3MDA1RjJCQ0IgLyogTWVkaWFTdHJlYW1DYXBhYmlsaXRpZXMuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3MDU4NTBBMTdGQTQ4MjcwMDVGMkJD
QiAvKiBNZWRpYVN0cmVhbUNhcGFiaWxpdGllcy5oICovOyB9OworCQkwNzA1ODUxMjE3RkE3MTA3
MDA1RjJCQ0IgLyogSlNNZWRpYVN0cmVhbUNhcGFiaWxpdGllcy5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwNzA1ODUxMDE3RkE3MTA3MDA1RjJCQ0Ig
LyogSlNNZWRpYVN0cmVhbUNhcGFiaWxpdGllcy5jcHAgKi87IH07CisJCTA3MDU4NTEzMTdGQTcx
MDcwMDVGMkJDQiAvKiBKU01lZGlhU3RyZWFtQ2FwYWJpbGl0aWVzLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwNzA1ODUxMTE3RkE3MTA3MDA1RjJCQ0Ig
LyogSlNNZWRpYVN0cmVhbUNhcGFiaWxpdGllcy5oICovOyB9OworCQkwNzA1ODUxNTE3RkIwRUVB
MDA1RjJCQ0IgLyogTWVkaWFTdHJlYW1DYXBhYmlsaXRpZXMuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDcwNTg1MTQxN0ZCMEUyQzAwNUYyQkNCIC8q
IE1lZGlhU3RyZWFtQ2FwYWJpbGl0aWVzLmNwcCAqLzsgfTsKKwkJMDcwNTg1MTcxN0ZCNDBFOTAw
NUYyQkNCIC8qIEpTTWVkaWFTdHJlYW1DYXBhYmlsaXRpZXNDdXN0b20uY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDcwNTg1MTYxN0ZCNDBFOTAwNUYy
QkNCIC8qIEpTTWVkaWFTdHJlYW1DYXBhYmlsaXRpZXNDdXN0b20uY3BwICovOyB9OworCQkwNzA1
ODUxQTE3RkI0NEI0MDA1RjJCQ0IgLyogSlNBbGxBdWRpb0NhcGFiaWxpdGllcy5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwNzA1ODUxODE3RkI0NEI0
MDA1RjJCQ0IgLyogSlNBbGxBdWRpb0NhcGFiaWxpdGllcy5jcHAgKi87IH07CisJCTA3MDU4NTFC
MTdGQjQ0QjQwMDVGMkJDQiAvKiBKU0FsbEF1ZGlvQ2FwYWJpbGl0aWVzLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwNzA1ODUxOTE3RkI0NEI0MDA1RjJC
Q0IgLyogSlNBbGxBdWRpb0NhcGFiaWxpdGllcy5oICovOyB9OworCQkwNzA1ODUyMTE3RkRDMTQw
MDA1RjJCQ0IgLyogTWVkaWFUcmFja0NvbnN0cmFpbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3MDU4NTFEMTdGREMxNDAwMDVGMkJDQiAvKiBNZWRp
YVRyYWNrQ29uc3RyYWludC5oICovOyB9OworCQkwNzA1ODUyMzE3RkRDMTQwMDA1RjJCQ0IgLyog
TWVkaWFUcmFja0NvbnN0cmFpbnRzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDA3MDU4NTFGMTdGREMxNDAwMDVGMkJDQiAvKiBNZWRpYVRyYWNrQ29u
c3RyYWludHMuY3BwICovOyB9OworCQkwNzA1ODUyNDE3RkRDMTQwMDA1RjJCQ0IgLyogTWVkaWFU
cmFja0NvbnN0cmFpbnRzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAwNzA1ODUyMDE3RkRDMTQwMDA1RjJCQ0IgLyogTWVkaWFUcmFja0NvbnN0cmFpbnRz
LmggKi87IH07CisJCTA3MDU4NTI5MTdGREUwMkMwMDVGMkJDQiAvKiBNZWRpYVRyYWNrQ29uc3Ry
YWludFNldC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MDcwNTg1MjYxN0ZERTAyQjAwNUYyQkNCIC8qIE1lZGlhVHJhY2tDb25zdHJhaW50U2V0LmggKi87
IH07CisJCTA3MDU4NTMxMTdGREU2RDkwMDVGMkJDQiAvKiBKU01lZGlhVHJhY2tDb25zdHJhaW50
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3MDU4
NTJCMTdGREU2RDkwMDVGMkJDQiAvKiBKU01lZGlhVHJhY2tDb25zdHJhaW50LmNwcCAqLzsgfTsK
KwkJMDcwNTg1MzIxN0ZERTZEOTAwNUYyQkNCIC8qIEpTTWVkaWFUcmFja0NvbnN0cmFpbnQuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3MDU4NTJDMTdG
REU2RDkwMDVGMkJDQiAvKiBKU01lZGlhVHJhY2tDb25zdHJhaW50LmggKi87IH07CisJCTA3MDU4
NTMzMTdGREU2RDkwMDVGMkJDQiAvKiBKU01lZGlhVHJhY2tDb25zdHJhaW50cy5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwNzA1ODUyRDE3RkRFNkQ5
MDA1RjJCQ0IgLyogSlNNZWRpYVRyYWNrQ29uc3RyYWludHMuY3BwICovOyB9OworCQkwNzA1ODUz
NDE3RkRFNkQ5MDA1RjJCQ0IgLyogSlNNZWRpYVRyYWNrQ29uc3RyYWludHMuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3MDU4NTJFMTdGREU2RDkwMDVG
MkJDQiAvKiBKU01lZGlhVHJhY2tDb25zdHJhaW50cy5oICovOyB9OworCQkwNzA1ODUzNTE3RkRF
NkQ5MDA1RjJCQ0IgLyogSlNNZWRpYVRyYWNrQ29uc3RyYWludFNldC5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwNzA1ODUyRjE3RkRFNkQ5MDA1RjJC
Q0IgLyogSlNNZWRpYVRyYWNrQ29uc3RyYWludFNldC5jcHAgKi87IH07CisJCTA3MDU4NTM2MTdG
REU2RDkwMDVGMkJDQiAvKiBKU01lZGlhVHJhY2tDb25zdHJhaW50U2V0LmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwNzA1ODUzMDE3RkRFNkQ5MDA1RjJC
Q0IgLyogSlNNZWRpYVRyYWNrQ29uc3RyYWludFNldC5oICovOyB9OworCQkwNzA1ODUzODE3RkUw
NDRGMDA1RjJCQ0IgLyogTWVkaWFUcmFja0NvbnN0cmFpbnRTZXQuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDcwNTg1MzcxN0ZFMDQ0RjAwNUYyQkNC
IC8qIE1lZGlhVHJhY2tDb25zdHJhaW50U2V0LmNwcCAqLzsgfTsKKwkJMDcwNTg1M0ExN0ZFMDc3
MDAwNUYyQkNCIC8qIE1lZGlhVHJhY2tDb25zdHJhaW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3MDU4NTM5MTdGRTA3NzAwMDVGMkJDQiAvKiBN
ZWRpYVRyYWNrQ29uc3RyYWludC5jcHAgKi87IH07CiAJCTA3MDc1NjhCMTQyMjYyRDYwMDQxNDE2
MSAvKiBIVE1MVHJhY2tFbGVtZW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDA3MDc1Njg4MTQyMjYyRDYwMDQxNDE2MSAvKiBIVE1MVHJhY2tFbGVt
ZW50LmNwcCAqLzsgfTsKIAkJMDcwNzU2OEMxNDIyNjJENjAwNDE0MTYxIC8qIEhUTUxUcmFja0Vs
ZW1lbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3
MDc1Njg5MTQyMjYyRDYwMDQxNDE2MSAvKiBIVE1MVHJhY2tFbGVtZW50LmggKi87IH07CiAJCTA3
MDc1Njk0MTQyMjY2OEQwMDQxNDE2MSAvKiBKU1RleHRUcmFjay5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwNzA3NTY4RTE0MjI2NjhDMDA0MTQxNjEg
LyogSlNUZXh0VHJhY2suY3BwICovOyB9OwpAQCAtMTE5LDYgKzE0Myw5IEBACiAJCTA3MzVFRTZB
MEY0MEM1RTQwMDRBMjYwNCAvKiBNZWRpYVBsYXllclByb3h5LmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwNzM1RUU2OTBGNDBDNUU0MDA0QTI2MDQgLyog
TWVkaWFQbGF5ZXJQcm94eS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CiAJCTA3MzY3RERGMTcyQ0E2N0YwMEQ4NjFCOSAvKiBJbmJhbmRUZXh0VHJhY2tQ
cml2YXRlTGVnYWN5QVZGT2JqQy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMDczNjdEREQxNzJDQTY3RjAwRDg2MUI5IC8qIEluYmFuZFRleHRUcmFja1By
aXZhdGVMZWdhY3lBVkZPYmpDLmggKi87IH07CiAJCTA3MzY3REUwMTcyQ0E2ODIwMEQ4NjFCOSAv
KiBJbmJhbmRUZXh0VHJhY2tQcml2YXRlTGVnYWN5QVZGT2JqQy5tbSBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3MzY3RERFMTcyQ0E2N0YwMEQ4NjFCOSAv
KiBJbmJhbmRUZXh0VHJhY2tQcml2YXRlTGVnYWN5QVZGT2JqQy5tbSAqLzsgfTsKKwkJMDczQUI0
QjMxN0Y4QkFDQTAwNkUwRDZGIC8qIEFsbFZpZGVvQ2FwYWJpbGl0aWVzLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwNzNBQjRCMDE3RjhCQUNBMDA2RTBE
NkYgLyogQWxsVmlkZW9DYXBhYmlsaXRpZXMuaCAqLzsgfTsKKwkJMDczQUI0QjcxN0Y5MkVDRjAw
NkUwRDZGIC8qIEpTQ2FwYWJpbGl0eVJhbmdlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3M0FCNEI1MTdGOTJFQ0YwMDZFMEQ2RiAvKiBKU0NhcGFi
aWxpdHlSYW5nZS5jcHAgKi87IH07CisJCTA3M0FCNEI4MTdGOTJFQ0YwMDZFMEQ2RiAvKiBKU0Nh
cGFiaWxpdHlSYW5nZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMDczQUI0QjYxN0Y5MkVDRjAwNkUwRDZGIC8qIEpTQ2FwYWJpbGl0eVJhbmdlLmggKi87
IH07CiAJCTA3M0JFMzQwMTdEMTdFMDEwMDJCRDQzMSAvKiBKU05hdmlnYXRvck1lZGlhU3RyZWFt
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3M0JF
MzNFMTdEMTdFMDEwMDJCRDQzMSAvKiBKU05hdmlnYXRvck1lZGlhU3RyZWFtLmNwcCAqLzsgfTsK
IAkJMDczQkUzNDExN0QxN0UwMTAwMkJENDMxIC8qIEpTTmF2aWdhdG9yTWVkaWFTdHJlYW0uaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3M0JFMzNGMTdE
MTdFMDEwMDJCRDQzMSAvKiBKU05hdmlnYXRvck1lZGlhU3RyZWFtLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMDczQkUzNDgxN0QxN0U3QTAwMkJE
NDMxIC8qIEpTTmF2aWdhdG9yVXNlck1lZGlhRXJyb3IuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDczQkUzNDIxN0QxN0U3QTAwMkJENDMxIC8qIEpT
TmF2aWdhdG9yVXNlck1lZGlhRXJyb3IuY3BwICovOyB9OwpAQCAtMTQ1LDYgKzE3Miw4IEBACiAJ
CTA3Njk3MDg2MTQ2M0FEODcwMEY1MDJDRiAvKiBUZXh0VHJhY2tMaXN0LmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3Njk3MDg0MTQ2M0FEODcwMEY1
MDJDRiAvKiBUZXh0VHJhY2tMaXN0LmNwcCAqLzsgfTsKIAkJMDc2OTcwODcxNDYzQUQ4NzAwRjUw
MkNGIC8qIFRleHRUcmFja0xpc3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDA3Njk3MDg1MTQ2M0FEODcwMEY1MDJDRiAvKiBUZXh0VHJhY2tMaXN0Lmgg
Ki87IH07CiAJCTA3NkYwRDBFMTJCODE5MjcwMEMyNkFBNCAvKiBNZWRpYVBsYXllclByaXZhdGVB
VkZvdW5kYXRpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDA3NkYwRDBBMTJCODE5MjcwMEMyNkFBNCAvKiBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5k
YXRpb24uaCAqLzsgfTsKKwkJMDc4MzIyODQxODAxM0VEODAwOTk5RTBDIC8qIE1lZGlhU3RyZWFt
QXVkaW9Tb3VyY2UuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMDc4MzIyODIxODAxM0VENzAwOTk5RTBDIC8qIE1lZGlhU3RyZWFtQXVkaW9Tb3VyY2Uu
Y3BwICovOyB9OworCQkwNzgzMjI4NTE4MDEzRUQ4MDA5OTlFMEMgLyogTWVkaWFTdHJlYW1BdWRp
b1NvdXJjZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MDc4MzIyODMxODAxM0VEODAwOTk5RTBDIC8qIE1lZGlhU3RyZWFtQXVkaW9Tb3VyY2UuaCAqLzsg
fTsKIAkJMDc4NDYzNDIxNDVCMTUxQTAwQTU4REYxIC8qIEpTVHJhY2tFdmVudC5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwNzg0NjM0MDE0NUIxNTFB
MDBBNThERjEgLyogSlNUcmFja0V2ZW50LmNwcCAqLzsgfTsKIAkJMDc4NDYzNDMxNDVCMTUxQTAw
QTU4REYxIC8qIEpTVHJhY2tFdmVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMDc4NDYzNDExNDVCMTUxQTAwQTU4REYxIC8qIEpTVHJhY2tFdmVudC5o
ICovOyB9OwogCQkwNzg0NjM4NTE0NUIxQjhFMDBBNThERjEgLyogSlNUcmFja0N1c3RvbS5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDc4NDYzODQxNDVC
MUI4RTAwQTU4REYxIC8qIEpTVHJhY2tDdXN0b20uaCAqLzsgfTsKQEAgLTI3Niw2ICszMDUsMTIg
QEAKIAkJMDdDNTlCNjAxN0Y0QjIwODAwMEZCQ0JCIC8qIEpTVmlkZW9TdHJlYW1UcmFjay5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDdDNTlCNUMxN0Y0
QjIwODAwMEZCQ0JCIC8qIEpTVmlkZW9TdHJlYW1UcmFjay5oICovOyB9OwogCQkwN0M1OUI2MzE3
RjREMUJGMDAwRkJDQkIgLyogTW9ja01lZGlhU3RyZWFtQ2VudGVyLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3QzU5QjYxMTdGNENGODcwMDBGQkNC
QiAvKiBNb2NrTWVkaWFTdHJlYW1DZW50ZXIuY3BwICovOyB9OwogCQkwN0M1OUI2NDE3RjREMUM0
MDAwRkJDQkIgLyogTW9ja01lZGlhU3RyZWFtQ2VudGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwN0M1OUI2MjE3RjRDRjg3MDAwRkJDQkIgLyogTW9j
a01lZGlhU3RyZWFtQ2VudGVyLmggKi87IH07CisJCTA3QzU5QjY4MTdGNzg0QkEwMDBGQkNCQiAv
KiBNZWRpYVNvdXJjZVN0YXRlcy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAwN0M1OUI2NTE3Rjc4NEJBMDAwRkJDQkIgLyogTWVkaWFTb3VyY2VTdGF0
ZXMuY3BwICovOyB9OworCQkwN0M1OUI2OTE3Rjc4NEJBMDAwRkJDQkIgLyogTWVkaWFTb3VyY2VT
dGF0ZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3
QzU5QjY2MTdGNzg0QkEwMDBGQkNCQiAvKiBNZWRpYVNvdXJjZVN0YXRlcy5oICovOyB9OworCQkw
N0M1OUI2RTE3Rjc5NEY2MDAwRkJDQkIgLyogSlNNZWRpYVNvdXJjZVN0YXRlc0N1c3RvbS5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwN0M1OUI2RDE3
Rjc5NEY2MDAwRkJDQkIgLyogSlNNZWRpYVNvdXJjZVN0YXRlc0N1c3RvbS5jcHAgKi87IH07CisJ
CTA3QzU5QjcxMTdGNzlDN0MwMDBGQkNCQiAvKiBKU01lZGlhU291cmNlU3RhdGVzLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3QzU5QjZGMTdGNzlD
N0MwMDBGQkNCQiAvKiBKU01lZGlhU291cmNlU3RhdGVzLmNwcCAqLzsgfTsKKwkJMDdDNTlCNzIx
N0Y3OUM3QzAwMEZCQ0JCIC8qIEpTTWVkaWFTb3VyY2VTdGF0ZXMuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3QzU5QjcwMTdGNzlDN0MwMDBGQkNCQiAv
KiBKU01lZGlhU291cmNlU3RhdGVzLmggKi87IH07CisJCTA3QzU5Qjc2MTdGN0QwREIwMDBGQkNC
QiAvKiBDYXBhYmlsaXR5UmFuZ2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDA3QzU5Qjc0MTdGN0QwOUQwMDBGQkNCQiAvKiBDYXBhYmlsaXR5UmFuZ2Uu
aCAqLzsgfTsKIAkJMDdDRTc3RDUxNjcxMkE2QTAwQzU1QTQ3IC8qIEluYmFuZFRleHRUcmFja1By
aXZhdGVDbGllbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDA3Q0U3N0Q0MTY3MTJBNkEwMEM1NUE0NyAvKiBJbmJhbmRUZXh0VHJhY2tQcml2YXRlQ2xp
ZW50LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJ
MDdEQzVGRDQxN0QzRUVFOTAwOTlGODkwIC8qIEpTUlRDU3RhdHNSZXNwb25zZUN1c3RvbS5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwN0RDNUZEMzE3
RDNFRUU5MDA5OUY4OTAgLyogSlNSVENTdGF0c1Jlc3BvbnNlQ3VzdG9tLmNwcCAqLzsgfTsKIAkJ
MDdFMTE2QjExNDg5QzlBMTAwRUM1QUNFIC8qIEpTVGV4dFRyYWNrQ3VzdG9tLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3RTExNkIwMTQ4OUM5QTEw
MEVDNUFDRSAvKiBKU1RleHRUcmFja0N1c3RvbS5jcHAgKi87IH07CkBAIC02NDE0LDYgKzY0NDks
MzUgQEAKIAkJMDcwMzM0RDYxNDU5RkZENTAwOEQ4RDQ1IC8qIFRyYWNrQmFzZS5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBUcmFja0Jhc2UuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJMDcwMzM0RDgxNDVBMDA2RjAwOEQ4RDQ1IC8qIFRyYWNrQmFzZS5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBUcmFja0Jhc2UuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQkwNzAzMzRFODE0NUExRjM1MDA4RDhENDUgLyogSlNUcmFj
a0N1c3RvbS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU1RyYWNr
Q3VzdG9tLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMDcwNTg0RkIxN0Y5RDZE
RjAwNUYyQkNCIC8qIE1lZGlhU3RyZWFtU291cmNlQ2FwYWJpbGl0aWVzLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1lZGlhU3RyZWFtU291cmNlQ2FwYWJpbGl0aWVzLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTA3MDU4NEZFMTdGOUYwNUUwMDVGMkJDQiAvKiBD
YXBhYmlsaXR5UmFuZ2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
Q2FwYWJpbGl0eVJhbmdlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMDcwNTg1
MDAxN0ZBMTBEMDAwNUYyQkNCIC8qIEpTQWxsVmlkZW9DYXBhYmlsaXRpZXMuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNBbGxWaWRlb0NhcGFiaWxpdGllcy5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTA3MDU4NTAxMTdGQTEwRDAwMDVGMkJDQiAv
KiBKU0FsbFZpZGVvQ2FwYWJpbGl0aWVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IEpTQWxsVmlkZW9DYXBhYmlsaXRpZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJMDcwNTg1MDUxN0ZBNDY4OTAwNUYyQkNCIC8qIEFsbEF1ZGlvQ2FwYWJpbGl0aWVzLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFsbEF1ZGlvQ2FwYWJpbGl0aWVzLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTA3MDU4NTA2MTdGQTQ2ODkwMDVGMkJDQiAvKiBB
bGxBdWRpb0NhcGFiaWxpdGllcy5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gQWxsQXVkaW9D
YXBhYmlsaXRpZXMuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwNzA1ODUwQTE3
RkE0ODI3MDA1RjJCQ0IgLyogTWVkaWFTdHJlYW1DYXBhYmlsaXRpZXMuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gTWVkaWFTdHJlYW1DYXBhYmlsaXRpZXMuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMDcwNTg1MEUxN0ZBNkZCMTAwNUYyQkNCIC8qIE1lZGlhU3Ry
ZWFtQ2FwYWJpbGl0aWVzLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBNZWRpYVN0cmVhbUNh
cGFiaWxpdGllcy5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTA3MDU4NTEwMTdG
QTcxMDcwMDVGMkJDQiAvKiBKU01lZGlhU3RyZWFtQ2FwYWJpbGl0aWVzLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTTWVkaWFTdHJlYW1DYXBhYmlsaXRpZXMuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwNzA1ODUxMTE3RkE3MTA3MDA1RjJCQ0Ig
LyogSlNNZWRpYVN0cmVhbUNhcGFiaWxpdGllcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBKU01lZGlhU3RyZWFtQ2FwYWJpbGl0aWVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTA3MDU4NTE0MTdGQjBFMkMwMDVGMkJDQiAvKiBNZWRpYVN0cmVhbUNhcGFiaWxp
dGllcy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBNZWRpYVN0cmVh
bUNhcGFiaWxpdGllcy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTA3MDU4NTE2
MTdGQjQwRTkwMDVGMkJDQiAvKiBKU01lZGlhU3RyZWFtQ2FwYWJpbGl0aWVzQ3VzdG9tLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTTWVkaWFTdHJlYW1DYXBhYmls
aXRpZXNDdXN0b20uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwNzA1ODUxODE3
RkI0NEI0MDA1RjJCQ0IgLyogSlNBbGxBdWRpb0NhcGFiaWxpdGllcy5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0FsbEF1ZGlvQ2FwYWJpbGl0aWVzLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMDcwNTg1MTkxN0ZCNDRCNDAwNUYyQkNCIC8qIEpT
QWxsQXVkaW9DYXBhYmlsaXRpZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
SlNBbGxBdWRpb0NhcGFiaWxpdGllcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkw
NzA1ODUxQzE3RkRCMjNDMDA1RjJCQ0IgLyogTWVkaWFUcmFja0NvbnN0cmFpbnRzLmlkbCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGgg
PSBNZWRpYVRyYWNrQ29uc3RyYWludHMuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQkwNzA1ODUxRDE3RkRDMTQwMDA1RjJCQ0IgLyogTWVkaWFUcmFja0NvbnN0cmFpbnQuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTWVkaWFUcmFja0NvbnN0cmFpbnQuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMDcwNTg1MUUxN0ZEQzE0MDAwNUYyQkNCIC8qIE1l
ZGlhVHJhY2tDb25zdHJhaW50LmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBNZWRpYVRyYWNr
Q29uc3RyYWludC5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTA3MDU4NTFGMTdG
REMxNDAwMDVGMkJDQiAvKiBNZWRpYVRyYWNrQ29uc3RyYWludHMuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTWVkaWFUcmFja0NvbnN0cmFpbnRzLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMDcwNTg1MjAxN0ZEQzE0MDAwNUYyQkNCIC8qIE1lZGlh
VHJhY2tDb25zdHJhaW50cy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNZWRp
YVRyYWNrQ29uc3RyYWludHMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMDcwNTg1
MjYxN0ZERTAyQjAwNUYyQkNCIC8qIE1lZGlhVHJhY2tDb25zdHJhaW50U2V0LmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1lZGlhVHJhY2tDb25zdHJhaW50U2V0Lmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTA3MDU4NTI3MTdGREUwMkIwMDVGMkJDQiAvKiBNZWRp
YVRyYWNrQ29uc3RyYWludFNldC5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gTWVkaWFUcmFj
a0NvbnN0cmFpbnRTZXQuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwNzA1ODUy
QjE3RkRFNkQ5MDA1RjJCQ0IgLyogSlNNZWRpYVRyYWNrQ29uc3RyYWludC5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU01lZGlhVHJhY2tDb25zdHJhaW50LmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMDcwNTg1MkMxN0ZERTZEOTAwNUYyQkNCIC8q
IEpTTWVkaWFUcmFja0NvbnN0cmFpbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gSlNNZWRpYVRyYWNrQ29uc3RyYWludC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQkwNzA1ODUyRDE3RkRFNkQ5MDA1RjJCQ0IgLyogSlNNZWRpYVRyYWNrQ29uc3RyYWludHMuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNNZWRpYVRyYWNrQ29uc3Ry
YWludHMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwNzA1ODUyRTE3RkRFNkQ5
MDA1RjJCQ0IgLyogSlNNZWRpYVRyYWNrQ29uc3RyYWludHMuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gSlNNZWRpYVRyYWNrQ29uc3RyYWludHMuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJMDcwNTg1MkYxN0ZERTZEOTAwNUYyQkNCIC8qIEpTTWVkaWFUcmFja0Nv
bnN0cmFpbnRTZXQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNN
ZWRpYVRyYWNrQ29uc3RyYWludFNldC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTA3MDU4NTMwMTdGREU2RDkwMDVGMkJDQiAvKiBKU01lZGlhVHJhY2tDb25zdHJhaW50U2V0Lmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTTWVkaWFUcmFja0NvbnN0cmFpbnRT
ZXQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMDcwNTg1MzcxN0ZFMDQ0RjAwNUYy
QkNCIC8qIE1lZGlhVHJhY2tDb25zdHJhaW50U2V0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IE1lZGlhVHJhY2tDb25zdHJhaW50U2V0LmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJMDcwNTg1MzkxN0ZFMDc3MDAwNUYyQkNCIC8qIE1lZGlhVHJhY2tD
b25zdHJhaW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE1lZGlh
VHJhY2tDb25zdHJhaW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDcwNzU2
ODgxNDIyNjJENjAwNDE0MTYxIC8qIEhUTUxUcmFja0VsZW1lbnQuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSFRNTFRyYWNrRWxlbWVudC5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTA3MDc1Njg5MTQyMjYyRDYwMDQxNDE2MSAvKiBIVE1MVHJhY2tF
bGVtZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEhUTUxUcmFja0VsZW1l
bnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDcwNzU2OEExNDIyNjJENjAwNDE0
MTYxIC8qIEhUTUxUcmFja0VsZW1lbnQuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IEhUTUxU
cmFja0VsZW1lbnQuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNjU0OSw2ICs2
NjEzLDkgQEAKIAkJMDczNUVFNjkwRjQwQzVFNDAwNEEyNjA0IC8qIE1lZGlhUGxheWVyUHJveHku
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTWVkaWFQbGF5ZXJQcm94eS5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwNzM2N0RERDE3MkNBNjdGMDBEODYxQjkgLyog
SW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUxlZ2FjeUFWRk9iakMuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBuYW1lID0gSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUxlZ2FjeUFWRk9iakMuaDsgcGF0
aCA9IG9iamMvSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUxlZ2FjeUFWRk9iakMuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDczNjdEREUxNzJDQTY3RjAwRDg2MUI5IC8qIEluYmFuZFRl
eHRUcmFja1ByaXZhdGVMZWdhY3lBVkZPYmpDLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
b2JqY3BwOyBuYW1lID0gSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUxlZ2FjeUFWRk9iakMubW07IHBh
dGggPSBvYmpjL0luYmFuZFRleHRUcmFja1ByaXZhdGVMZWdhY3lBVkZPYmpDLm1tOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQkwNzNBQjRCMDE3RjhCQUNBMDA2RTBENkYgLyogQWxsVmlk
ZW9DYXBhYmlsaXRpZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQWxsVmlk
ZW9DYXBhYmlsaXRpZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMDczQUI0QjUx
N0Y5MkVDRjAwNkUwRDZGIC8qIEpTQ2FwYWJpbGl0eVJhbmdlLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTQ2FwYWJpbGl0eVJhbmdlLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJMDczQUI0QjYxN0Y5MkVDRjAwNkUwRDZGIC8qIEpTQ2FwYWJpbGl0
eVJhbmdlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTQ2FwYWJpbGl0eVJh
bmdlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA3M0JFMzNFMTdEMTdFMDEwMDJC
RDQzMSAvKiBKU05hdmlnYXRvck1lZGlhU3RyZWFtLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IEpTTmF2aWdhdG9yTWVkaWFTdHJlYW0uY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQkwNzNCRTMzRjE3RDE3RTAxMDAyQkQ0MzEgLyogSlNOYXZpZ2F0b3JN
ZWRpYVN0cmVhbS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU05hdmlnYXRv
ck1lZGlhU3RyZWFtLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA3M0JFMzQyMTdE
MTdFN0EwMDJCRDQzMSAvKiBKU05hdmlnYXRvclVzZXJNZWRpYUVycm9yLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTTmF2aWdhdG9yVXNlck1lZGlhRXJyb3IuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNjU3NSw2ICs2NjQyLDggQEAKIAkJMDc2
OTcwODUxNDYzQUQ4NzAwRjUwMkNGIC8qIFRleHRUcmFja0xpc3QuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gVGV4dFRyYWNrTGlzdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQkwNzZGMEQwOTEyQjgxOTI3MDBDMjZBQTQgLyogTWVkaWFQbGF5ZXJQcml2YXRlQVZG
b3VuZGF0aW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE1lZGlh
UGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTA3NkYwRDBBMTJCODE5MjcwMEMyNkFBNCAvKiBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5k
YXRpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTWVkaWFQbGF5ZXJQcml2
YXRlQVZGb3VuZGF0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTA3ODMyMjgy
MTgwMTNFRDcwMDk5OUUwQyAvKiBNZWRpYVN0cmVhbUF1ZGlvU291cmNlLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE1lZGlhU3RyZWFtQXVkaW9Tb3VyY2UuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwNzgzMjI4MzE4MDEzRUQ4MDA5OTlFMEMgLyog
TWVkaWFTdHJlYW1BdWRpb1NvdXJjZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBNZWRpYVN0cmVhbUF1ZGlvU291cmNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTA3ODQ2MzQwMTQ1QjE1MUEwMEE1OERGMSAvKiBKU1RyYWNrRXZlbnQuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNUcmFja0V2ZW50LmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJMDc4NDYzNDExNDVCMTUxQTAwQTU4REYxIC8qIEpTVHJhY2tFdmVu
dC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU1RyYWNrRXZlbnQuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDc4NDYzODQxNDVCMUI4RTAwQTU4REYxIC8qIEpT
VHJhY2tDdXN0b20uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNUcmFja0N1
c3RvbS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNjYzOSw2ICs2NzA4LDE1IEBA
CiAJCTA3QzU5QjVDMTdGNEIyMDgwMDBGQkNCQiAvKiBKU1ZpZGVvU3RyZWFtVHJhY2suaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNWaWRlb1N0cmVhbVRyYWNrLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA3QzU5QjYxMTdGNENGODcwMDBGQkNCQiAvKiBNb2Nr
TWVkaWFTdHJlYW1DZW50ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1l
ID0gTW9ja01lZGlhU3RyZWFtQ2VudGVyLmNwcDsgcGF0aCA9IG1vY2svTW9ja01lZGlhU3RyZWFt
Q2VudGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDdDNTlCNjIxN0Y0Q0Y4
NzAwMEZCQ0JCIC8qIE1vY2tNZWRpYVN0cmVhbUNlbnRlci5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IG5hbWUgPSBNb2NrTWVkaWFTdHJlYW1DZW50ZXIuaDsgcGF0aCA9IG1vY2svTW9ja01l
ZGlhU3RyZWFtQ2VudGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTA3QzU5QjY1
MTdGNzg0QkEwMDBGQkNCQiAvKiBNZWRpYVNvdXJjZVN0YXRlcy5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBNZWRpYVNvdXJjZVN0YXRlcy5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCTA3QzU5QjY2MTdGNzg0QkEwMDBGQkNCQiAvKiBNZWRpYVNvdXJj
ZVN0YXRlcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNZWRpYVNvdXJjZVN0
YXRlcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwN0M1OUI2NzE3Rjc4NEJBMDAw
RkJDQkIgLyogTWVkaWFTb3VyY2VTdGF0ZXMuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IE1l
ZGlhU291cmNlU3RhdGVzLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMDdDNTlC
NkQxN0Y3OTRGNjAwMEZCQ0JCIC8qIEpTTWVkaWFTb3VyY2VTdGF0ZXNDdXN0b20uY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNNZWRpYVNvdXJjZVN0YXRlc0N1c3Rv
bS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTA3QzU5QjZGMTdGNzlDN0MwMDBG
QkNCQiAvKiBKU01lZGlhU291cmNlU3RhdGVzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IEpTTWVkaWFTb3VyY2VTdGF0ZXMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQkwN0M1OUI3MDE3Rjc5QzdDMDAwRkJDQkIgLyogSlNNZWRpYVNvdXJjZVN0YXRl
cy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU01lZGlhU291cmNlU3RhdGVz
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTA3QzU5QjczMTdGN0QwOUQwMDBGQkNC
QiAvKiBBbGxWaWRlb0NhcGFiaWxpdGllcy5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gQWxs
VmlkZW9DYXBhYmlsaXRpZXMuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwN0M1
OUI3NDE3RjdEMDlEMDAwRkJDQkIgLyogQ2FwYWJpbGl0eVJhbmdlLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IENhcGFiaWxpdHlSYW5nZS5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQkwN0M1OUI3NTE3RjdEMDlEMDAwRkJDQkIgLyogQ2FwYWJpbGl0eVJhbmdlLmlk
bCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBDYXBhYmlsaXR5UmFuZ2UuaWRsOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQkwN0NFNzdENDE2NzEyQTZBMDBDNTVBNDcgLyogSW5iYW5kVGV4
dFRyYWNrUHJpdmF0ZUNsaWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJ
bmJhbmRUZXh0VHJhY2tQcml2YXRlQ2xpZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTA3REM1RkQzMTdEM0VFRTkwMDk5Rjg5MCAvKiBKU1JUQ1N0YXRzUmVzcG9uc2VDdXN0b20u
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNSVENTdGF0c1Jlc3Bv
bnNlQ3VzdG9tLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDdFMTE2QjAxNDg5
QzlBMTAwRUM1QUNFIC8qIEpTVGV4dFRyYWNrQ3VzdG9tLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IEpTVGV4dFRyYWNrQ3VzdG9tLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKQEAgLTEzMjA5LDEyICsxMzI4NywzNCBAQAogCQkwNzIyMUI0NjE3Q0VDMzI3
MDA4NDhFNTEgLyogbWVkaWFzdHJlYW0gKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNo
aWxkcmVuID0gKAorCQkJCTA3MDU4NTM5MTdGRTA3NzAwMDVGMkJDQiAvKiBNZWRpYVRyYWNrQ29u
c3RyYWludC5jcHAgKi8sCisJCQkJMDcwNTg1MzcxN0ZFMDQ0RjAwNUYyQkNCIC8qIE1lZGlhVHJh
Y2tDb25zdHJhaW50U2V0LmNwcCAqLywKKwkJCQkwNzA1ODUyNjE3RkRFMDJCMDA1RjJCQ0IgLyog
TWVkaWFUcmFja0NvbnN0cmFpbnRTZXQuaCAqLywKKwkJCQkwNzA1ODUyNzE3RkRFMDJCMDA1RjJC
Q0IgLyogTWVkaWFUcmFja0NvbnN0cmFpbnRTZXQuaWRsICovLAorCQkJCTA3MDU4NTFEMTdGREMx
NDAwMDVGMkJDQiAvKiBNZWRpYVRyYWNrQ29uc3RyYWludC5oICovLAorCQkJCTA3MDU4NTFFMTdG
REMxNDAwMDVGMkJDQiAvKiBNZWRpYVRyYWNrQ29uc3RyYWludC5pZGwgKi8sCisJCQkJMDcwNTg1
MUYxN0ZEQzE0MDAwNUYyQkNCIC8qIE1lZGlhVHJhY2tDb25zdHJhaW50cy5jcHAgKi8sCisJCQkJ
MDcwNTg1MjAxN0ZEQzE0MDAwNUYyQkNCIC8qIE1lZGlhVHJhY2tDb25zdHJhaW50cy5oICovLAor
CQkJCTA3MDU4NTFDMTdGREIyM0MwMDVGMkJDQiAvKiBNZWRpYVRyYWNrQ29uc3RyYWludHMuaWRs
ICovLAorCQkJCTA3MDU4NTA1MTdGQTQ2ODkwMDVGMkJDQiAvKiBBbGxBdWRpb0NhcGFiaWxpdGll
cy5oICovLAorCQkJCTA3MDU4NTA2MTdGQTQ2ODkwMDVGMkJDQiAvKiBBbGxBdWRpb0NhcGFiaWxp
dGllcy5pZGwgKi8sCisJCQkJMDcwNTg0RkUxN0Y5RjA1RTAwNUYyQkNCIC8qIENhcGFiaWxpdHlS
YW5nZS5jcHAgKi8sCisJCQkJMDczQUI0QjAxN0Y4QkFDQTAwNkUwRDZGIC8qIEFsbFZpZGVvQ2Fw
YWJpbGl0aWVzLmggKi8sCisJCQkJMDdDNTlCNzMxN0Y3RDA5RDAwMEZCQ0JCIC8qIEFsbFZpZGVv
Q2FwYWJpbGl0aWVzLmlkbCAqLywKKwkJCQkwN0M1OUI3NDE3RjdEMDlEMDAwRkJDQkIgLyogQ2Fw
YWJpbGl0eVJhbmdlLmggKi8sCisJCQkJMDdDNTlCNzUxN0Y3RDA5RDAwMEZCQ0JCIC8qIENhcGFi
aWxpdHlSYW5nZS5pZGwgKi8sCisJCQkJMDdDNTlCNjUxN0Y3ODRCQTAwMEZCQ0JCIC8qIE1lZGlh
U291cmNlU3RhdGVzLmNwcCAqLywKKwkJCQkwN0M1OUI2NjE3Rjc4NEJBMDAwRkJDQkIgLyogTWVk
aWFTb3VyY2VTdGF0ZXMuaCAqLywKKwkJCQkwN0M1OUI2NzE3Rjc4NEJBMDAwRkJDQkIgLyogTWVk
aWFTb3VyY2VTdGF0ZXMuaWRsICovLAogCQkJCTA3QzU5QjREMTdGNEFDMTUwMDBGQkNCQiAvKiBB
dWRpb1N0cmVhbVRyYWNrLmNwcCAqLywKIAkJCQkwN0M1OUI0RTE3RjRBQzE1MDAwRkJDQkIgLyog
QXVkaW9TdHJlYW1UcmFjay5oICovLAogCQkJCTA3QzU5QjRGMTdGNEFDMTUwMDBGQkNCQiAvKiBB
dWRpb1N0cmVhbVRyYWNrLmlkbCAqLywKIAkJCQkwN0M1OUI1MDE3RjRBQzE1MDAwRkJDQkIgLyog
VmlkZW9TdHJlYW1UcmFjay5jcHAgKi8sCiAJCQkJMDdDNTlCNTExN0Y0QUMxNTAwMEZCQ0JCIC8q
IFZpZGVvU3RyZWFtVHJhY2suaCAqLywKIAkJCQkwN0M1OUI1MjE3RjRBQzE1MDAwRkJDQkIgLyog
VmlkZW9TdHJlYW1UcmFjay5pZGwgKi8sCisJCQkJMDcwNTg1MTQxN0ZCMEUyQzAwNUYyQkNCIC8q
IE1lZGlhU3RyZWFtQ2FwYWJpbGl0aWVzLmNwcCAqLywKKwkJCQkwNzA1ODUwRTE3RkE2RkIxMDA1
RjJCQ0IgLyogTWVkaWFTdHJlYW1DYXBhYmlsaXRpZXMuaWRsICovLAorCQkJCTA3MDU4NTBBMTdG
QTQ4MjcwMDVGMkJDQiAvKiBNZWRpYVN0cmVhbUNhcGFiaWxpdGllcy5oICovLAogCQkJCTA3MjIx
QjRBMTdDRUMzMjcwMDg0OEU1MSAvKiBNZWRpYUNvbnN0cmFpbnRzSW1wbC5jcHAgKi8sCiAJCQkJ
MDcyMjFCNEIxN0NFQzMyNzAwODQ4RTUxIC8qIE1lZGlhQ29uc3RyYWludHNJbXBsLmggKi8sCiAJ
CQkJMDcyMjFCNEMxN0NFQzMyNzAwODQ4RTUxIC8qIE1lZGlhU3RyZWFtLmNwcCAqLywKQEAgLTEz
MzEzLDYgKzEzNDEzLDcgQEAKIAkJCQkwNzIyMUI5RDE3Q0YwQUQ0MDA4NDhFNTEgLyogTWVkaWFT
dHJlYW1EZXNjcmlwdG9yLmggKi8sCiAJCQkJMDcyMjFCOUUxN0NGMEFENDAwODQ4RTUxIC8qIE1l
ZGlhU3RyZWFtU291cmNlLmNwcCAqLywKIAkJCQkwNzIyMUI5RjE3Q0YwQUQ0MDA4NDhFNTEgLyog
TWVkaWFTdHJlYW1Tb3VyY2UuaCAqLywKKwkJCQkwNzA1ODRGQjE3RjlENkRGMDA1RjJCQ0IgLyog
TWVkaWFTdHJlYW1Tb3VyY2VDYXBhYmlsaXRpZXMuaCAqLywKIAkJCQkwNzYzMDZFMjE3RTIyQTQz
MDA1QTdDNEUgLyogTWVkaWFTdHJlYW1UcmFja1NvdXJjZXNSZXF1ZXN0Q2xpZW50LmggKi8sCiAJ
CQkJMDcyMjFCQTExN0NGMEFENDAwODQ4RTUxIC8qIFJUQ0NvbmZpZ3VyYXRpb24uaCAqLywKIAkJ
CQkwNzIyMUJBMjE3Q0YwQUQ0MDA4NDhFNTEgLyogUlRDRGF0YUNoYW5uZWxIYW5kbGVyLmggKi8s
CkBAIC0xMzM2MCw2ICsxMzQ2MSwxNiBAQAogCQkwN0NGRDk5MzE3RDAxNDA1MDAxQzRGRkMgLyog
TWVkaWFTdHJlYW0gKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAor
CQkJCTA3MDU4NTJCMTdGREU2RDkwMDVGMkJDQiAvKiBKU01lZGlhVHJhY2tDb25zdHJhaW50LmNw
cCAqLywKKwkJCQkwNzA1ODUyQzE3RkRFNkQ5MDA1RjJCQ0IgLyogSlNNZWRpYVRyYWNrQ29uc3Ry
YWludC5oICovLAorCQkJCTA3MDU4NTJEMTdGREU2RDkwMDVGMkJDQiAvKiBKU01lZGlhVHJhY2tD
b25zdHJhaW50cy5jcHAgKi8sCisJCQkJMDcwNTg1MkUxN0ZERTZEOTAwNUYyQkNCIC8qIEpTTWVk
aWFUcmFja0NvbnN0cmFpbnRzLmggKi8sCisJCQkJMDcwNTg1MkYxN0ZERTZEOTAwNUYyQkNCIC8q
IEpTTWVkaWFUcmFja0NvbnN0cmFpbnRTZXQuY3BwICovLAorCQkJCTA3MDU4NTMwMTdGREU2RDkw
MDVGMkJDQiAvKiBKU01lZGlhVHJhY2tDb25zdHJhaW50U2V0LmggKi8sCisJCQkJMDcwNTg1MTAx
N0ZBNzEwNzAwNUYyQkNCIC8qIEpTTWVkaWFTdHJlYW1DYXBhYmlsaXRpZXMuY3BwICovLAorCQkJ
CTA3MDU4NTExMTdGQTcxMDcwMDVGMkJDQiAvKiBKU01lZGlhU3RyZWFtQ2FwYWJpbGl0aWVzLmgg
Ki8sCisJCQkJMDdDNTlCNkYxN0Y3OUM3QzAwMEZCQ0JCIC8qIEpTTWVkaWFTb3VyY2VTdGF0ZXMu
Y3BwICovLAorCQkJCTA3QzU5QjcwMTdGNzlDN0MwMDBGQkNCQiAvKiBKU01lZGlhU291cmNlU3Rh
dGVzLmggKi8sCiAJCQkJMDdDNTlCNTkxN0Y0QjIwODAwMEZCQ0JCIC8qIEpTQXVkaW9TdHJlYW1U
cmFjay5jcHAgKi8sCiAJCQkJMDdDNTlCNUExN0Y0QjIwODAwMEZCQ0JCIC8qIEpTQXVkaW9TdHJl
YW1UcmFjay5oICovLAogCQkJCTA3QzU5QjVCMTdGNEIyMDgwMDBGQkNCQiAvKiBKU1ZpZGVvU3Ry
ZWFtVHJhY2suY3BwICovLApAQCAtMTkxNzksNiArMTkyOTAsOCBAQAogCQlCQzRFREVGNzBDMDhG
NDE0MDA3RURENDkgLyogQ3VzdG9tICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGls
ZHJlbiA9ICgKKwkJCQkwNzA1ODUxNjE3RkI0MEU5MDA1RjJCQ0IgLyogSlNNZWRpYVN0cmVhbUNh
cGFiaWxpdGllc0N1c3RvbS5jcHAgKi8sCisJCQkJMDdDNTlCNkQxN0Y3OTRGNjAwMEZCQ0JCIC8q
IEpTTWVkaWFTb3VyY2VTdGF0ZXNDdXN0b20uY3BwICovLAogCQkJCUJDMkVENkJCMEM2QkQyRjAw
MDkyMEJGRiAvKiBKU0F0dHJDdXN0b20uY3BwICovLAogCQkJCUZERUFBQUVGMTJCMDJFRTQwMERD
RjMzQiAvKiBKU0F1ZGlvQnVmZmVyU291cmNlTm9kZUN1c3RvbS5jcHAgKi8sCiAJCQkJRkRFQUFB
RjAxMkIwMkVFNDAwRENGMzNCIC8qIEpTQXVkaW9Db250ZXh0Q3VzdG9tLmNwcCAqLywKQEAgLTE5
Nzc1LDYgKzE5ODg4LDEyIEBACiAJCUNENjFGRTdCMTc5NENBMDIwMDQxMDFFQiAvKiBNZWRpYVNv
dXJjZSAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCisJCQkJMDcw
NTg1MTgxN0ZCNDRCNDAwNUYyQkNCIC8qIEpTQWxsQXVkaW9DYXBhYmlsaXRpZXMuY3BwICovLAor
CQkJCTA3MDU4NTE5MTdGQjQ0QjQwMDVGMkJDQiAvKiBKU0FsbEF1ZGlvQ2FwYWJpbGl0aWVzLmgg
Ki8sCisJCQkJMDcwNTg1MDAxN0ZBMTBEMDAwNUYyQkNCIC8qIEpTQWxsVmlkZW9DYXBhYmlsaXRp
ZXMuY3BwICovLAorCQkJCTA3MDU4NTAxMTdGQTEwRDAwMDVGMkJDQiAvKiBKU0FsbFZpZGVvQ2Fw
YWJpbGl0aWVzLmggKi8sCisJCQkJMDczQUI0QjUxN0Y5MkVDRjAwNkUwRDZGIC8qIEpTQ2FwYWJp
bGl0eVJhbmdlLmNwcCAqLywKKwkJCQkwNzNBQjRCNjE3RjkyRUNGMDA2RTBENkYgLyogSlNDYXBh
YmlsaXR5UmFuZ2UuaCAqLywKIAkJCQlDRDlERTE3MjE3QUFDNzRDMDBFQTM4NkQgLyogSlNNZWRp
YVNvdXJjZS5jcHAgKi8sCiAJCQkJQ0Q5REUxNzMxN0FBQzc0QzAwRUEzODZEIC8qIEpTTWVkaWFT
b3VyY2UuaCAqLywKIAkJCQlDRDlERTE3NjE3QUFDNzVCMDBFQTM4NkQgLyogSlNTb3VyY2VCdWZm
ZXIuY3BwICovLApAQCAtMjEwMjIsNiArMjExNDEsOCBAQAogCQlGRDMxNUZBMjEyQjAyNUIxMDBD
MUEzNTkgLyogd2ViYXVkaW8gKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVu
ID0gKAorCQkJCTA3ODMyMjgyMTgwMTNFRDcwMDk5OUUwQyAvKiBNZWRpYVN0cmVhbUF1ZGlvU291
cmNlLmNwcCAqLywKKwkJCQkwNzgzMjI4MzE4MDEzRUQ4MDA5OTlFMEMgLyogTWVkaWFTdHJlYW1B
dWRpb1NvdXJjZS5oICovLAogCQkJCUZEMzE1RkYzMTJCMDI2NzYwMEMxQTM1OSAvKiBBbmFseXNl
ck5vZGUuY3BwICovLAogCQkJCUZEMzE1RkY0MTJCMDI2NzYwMEMxQTM1OSAvKiBBbmFseXNlck5v
ZGUuaCAqLywKIAkJCQlGRDMxNUZGNTEyQjAyNjc2MDBDMUEzNTkgLyogQW5hbHlzZXJOb2RlLmlk
bCAqLywKQEAgLTIxNDE5LDYgKzIxNTQwLDcgQEAKIAkJCQlGRDMxNjBCRjEyQjAyNzJBMDBDMUEz
NTkgLyogQXVkaW9GaWxlUmVhZGVyTWFjLmggaW4gSGVhZGVycyAqLywKIAkJCQlGREUyRDU1QjE1
OUU2NkVCMDBEQ0NDRjggLyogQXVkaW9JT0NhbGxiYWNrLmggaW4gSGVhZGVycyAqLywKIAkJCQlG
RDMxNjAxMDEyQjAyNjc2MDBDMUEzNTkgLyogQXVkaW9MaXN0ZW5lci5oIGluIEhlYWRlcnMgKi8s
CisJCQkJMDcwNTg1MjQxN0ZEQzE0MDAwNUYyQkNCIC8qIE1lZGlhVHJhY2tDb25zdHJhaW50cy5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJRkQzMTYwMTMxMkIwMjY3NjAwQzFBMzU5IC8qIEF1ZGlvTm9k
ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRkQzMTYwMTYxMkIwMjY3NjAwQzFBMzU5IC8qIEF1ZGlv
Tm9kZUlucHV0LmggaW4gSGVhZGVycyAqLywKIAkJCQlGRDMxNjAxODEyQjAyNjc2MDBDMUEzNTkg
LyogQXVkaW9Ob2RlT3V0cHV0LmggaW4gSGVhZGVycyAqLywKQEAgLTIxNTgxLDYgKzIxNzAzLDcg
QEAKIAkJCQlCQzBCMzZBNTBDRDNDNjdDMDBBQzdFQjUgLyogQ29uc29sZS5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJMkRGMkU5RDUxNjZFMzk3NTAwMzVCRUYyIC8qIENvbnNvbGVBUElUeXBlcy5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJNDFGMDYxOEUwRjVGMDY5ODAwQTA3RUFDIC8qIENvbnNvbGVNZXNz
YWdlLmggaW4gSGVhZGVycyAqLywKKwkJCQkwNzNBQjRCMzE3RjhCQUNBMDA2RTBENkYgLyogQWxs
VmlkZW9DYXBhYmlsaXRpZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDRTU2NDRFMTM3QTM0RDYw
MDdEMjkzNCAvKiBDb25zb2xlVHlwZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCUE4MTg3MjFDMDk3
N0QzQzAwMDU4MjZEOSAvKiBDb250YWluZXJOb2RlLmggaW4gSGVhZGVycyAqLywKIAkJCQlFMUEx
NDcwODExMTAyQjE1MDBFRUMwRjMgLyogQ29udGFpbmVyTm9kZUFsZ29yaXRobXMuaCBpbiBIZWFk
ZXJzICovLApAQCAtMjE3MzcsNiArMjE4NjAsNyBAQAogCQkJCUE1NzMyQjBCMTM2QTE2MUQwMDVD
OEQ3QyAvKiBEYXRlQ29tcG9uZW50cy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRjU1QjNEQjYxMjUx
RjEyRDAwM0VGMjY5IC8qIERhdGVJbnB1dFR5cGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTQ1M0VC
NjM3MTU5QzU3MDQwMDAwMUJCNyAvKiBEYXRlVGltZUZvcm1hdC5oIGluIEhlYWRlcnMgKi8sCisJ
CQkJMDcwNTg1MDMxN0ZBMTBEMDAwNUYyQkNCIC8qIEpTQWxsVmlkZW9DYXBhYmlsaXRpZXMuaCBp
biBIZWFkZXJzICovLAogCQkJCUY1NUIzREI4MTI1MUYxMkQwMDNFRjI2OSAvKiBEYXRlVGltZUlu
cHV0VHlwZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRjU1QjNEQkExMjUxRjEyRDAwM0VGMjY5IC8q
IERhdGVUaW1lTG9jYWxJbnB1dFR5cGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTQ1RkVBNUQwMTU2
RERFOEMwMDY1NDEwMSAvKiBEZWNpbWFsLmggaW4gSGVhZGVycyAqLywKQEAgLTIxNzUwLDYgKzIx
ODc0LDcgQEAKIAkJCQlGRDMxNjAyRTEyQjAyNjc2MDBDMUEzNTkgLyogRGVsYXlOb2RlLmggaW4g
SGVhZGVycyAqLywKIAkJCQlGRDMxNjAzMTEyQjAyNjc2MDBDMUEzNTkgLyogRGVsYXlQcm9jZXNz
b3IuaCBpbiBIZWFkZXJzICovLAogCQkJCTFDNEM4RjY2MEFEODY1NUQwMDk0NzVDRSAvKiBEZWxl
dGVCdXR0b24uaCBpbiBIZWFkZXJzICovLAorCQkJCTA3MDU4NTMyMTdGREU2RDkwMDVGMkJDQiAv
KiBKU01lZGlhVHJhY2tDb25zdHJhaW50LmggaW4gSGVhZGVycyAqLywKIAkJCQkxQzRDOEYwMjBB
RDg1RDg3MDA5NDc1Q0UgLyogRGVsZXRlQnV0dG9uQ29udHJvbGxlci5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJOTMzMDlEREYwOTlFNjQ5MjAwNTZFNTgxIC8qIERlbGV0ZUZyb21UZXh0Tm9kZUNvbW1h
bmQuaCBpbiBIZWFkZXJzICovLAogCQkJCTA3QzU5QjY0MTdGNEQxQzQwMDBGQkNCQiAvKiBNb2Nr
TWVkaWFTdHJlYW1DZW50ZXIuaCBpbiBIZWFkZXJzICovLApAQCAtMjE3OTEsNiArMjE5MTYsNyBA
QAogCQkJCUNFMDU3RkE2MTIyMDczMTEwMEE0NzZENSAvKiBEb2N1bWVudE1hcmtlckNvbnRyb2xs
ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTE0OTQ3RkZFMTJGODBDRDIwMEEwRjYzMSAvKiBEb2N1
bWVudE9yZGVyZWRNYXAuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDQ0ZCQUU4MEI1MTUyRUQwMDAx
RjFENyAvKiBEb2N1bWVudFBhcnNlci5oIGluIEhlYWRlcnMgKi8sCisJCQkJMDcwNTg1MjkxN0ZE
RTAyQzAwNUYyQkNCIC8qIE1lZGlhVHJhY2tDb25zdHJhaW50U2V0LmggaW4gSGVhZGVycyAqLywK
IAkJCQk0QTRGNDhBQTE2QjBERkMwMDBFREJCMjkgLyogRG9jdW1lbnRSdWxlU2V0cy5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJQUQ2RTcxQUQxNjY4ODk5RDAwMzIwQzEzIC8qIERvY3VtZW50U2hhcmVk
T2JqZWN0UG9vbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTQ3RTI3NjUxNjAzNkVEMjAwRUUyQUZC
IC8qIERvY3VtZW50U3R5bGVTaGVldENvbGxlY3Rpb24uaCBpbiBIZWFkZXJzICovLApAQCAtMjE5
NDUsNiArMjIwNzEsNyBAQAogCQkJCTg1OTkyRUJBMEFBNTA2OTUwMEFDMDc4NSAvKiBET01IVE1M
SGVhZEVsZW1lbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTg1RTcxMUFEMEFDNUQ1MzUwMDUzMjcw
RiAvKiBET01IVE1MSGVhZEVsZW1lbnRJbnRlcm5hbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODUx
ODNCNDQwQUE2OTI2MTAwRjE5RkEzIC8qIERPTUhUTUxIZWFkaW5nRWxlbWVudC5oIGluIEhlYWRl
cnMgKi8sCisJCQkJMDcwNTg1MzYxN0ZERTZEOTAwNUYyQkNCIC8qIEpTTWVkaWFUcmFja0NvbnN0
cmFpbnRTZXQuaCBpbiBIZWFkZXJzICovLAogCQkJCTg1RTcxMUFFMEFDNUQ1MzUwMDUzMjcwRiAv
KiBET01IVE1MSGVhZGluZ0VsZW1lbnRJbnRlcm5hbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODVF
Q0JFRjEwQUE3NjI2OTAwNTQ0RjBCIC8qIERPTUhUTUxIUkVsZW1lbnQuaCBpbiBIZWFkZXJzICov
LAogCQkJCTg1RTcxMUFGMEFDNUQ1MzUwMDUzMjcwRiAvKiBET01IVE1MSFJFbGVtZW50SW50ZXJu
YWwuaCBpbiBIZWFkZXJzICovLApAQCAtMjIwNTcsNiArMjIxODQsNyBAQAogCQkJCTg1Q0E5NkVB
MEE5NjI0RTkwMDY5MENDRiAvKiBET01Ob3RhdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODVF
NzExRDQwQUM1RDUzNTAwNTMyNzBGIC8qIERPTU5vdGF0aW9uSW50ZXJuYWwuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTg1NkM4QUU0MEE5MTI2NDkwMDVDNjg3QiAvKiBET01PYmplY3QuaCBpbiBIZWFk
ZXJzICovLAorCQkJCTA3MDU4NTEzMTdGQTcxMDcwMDVGMkJDQiAvKiBKU01lZGlhU3RyZWFtQ2Fw
YWJpbGl0aWVzLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzUzREE2MDExNDMxNDFBMDAwRDgxN0Ug
LyogRE9NT2JqZWN0SGFzaFRhYmxlTWFwLmggaW4gSGVhZGVycyAqLywKIAkJCQk4NUM3RjVEMDBB
QUZCOEQ5MDA0MDE0REQgLyogRE9NT3ZlcmZsb3dFdmVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
ODU5ODlEQ0YwQUNDOEJCRDAwQTBCQzUxIC8qIERPTU92ZXJmbG93RXZlbnRJbnRlcm5hbC5oIGlu
IEhlYWRlcnMgKi8sCkBAIC0yMjUwMyw2ICsyMjYzMSw3IEBACiAJCQkJQkNDRDc0REMwQTRDOEQz
NTAwNUZEQTZEIC8qIEhUTUxWaWV3U291cmNlRG9jdW1lbnQuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTk3N0IzODdBMTIyODgzRTkwMEI4MUZGOCAvKiBIVE1MVmlld1NvdXJjZVBhcnNlci5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJNTE0Qzc2NzEwQ0U5MjNBMTAwN0VGM0NEIC8qIEhUVFBIZWFkZXJNYXAu
aCBpbiBIZWFkZXJzICovLAorCQkJCTA3M0FCNEI4MTdGOTJFQ0YwMDZFMEQ2RiAvKiBKU0NhcGFi
aWxpdHlSYW5nZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTE0Qzc2NzMwQ0U5MjNBMTAwN0VGM0NE
IC8qIEhUVFBQYXJzZXJzLmggaW4gSGVhZGVycyAqLywKIAkJCQkzNzVDRDIzMjExOUQ0M0M4MDBB
MkE4NTkgLyogSHlwaGVuYXRpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCUIyNzUzNTZFMEIwNTM4
MTQwMDJDRTY0RiAvKiBJY29uLmggaW4gSGVhZGVycyAqLywKQEAgLTIyNjA4LDYgKzIyNzM3LDcg
QEAKIAkJCQk3QTI0NTg3QzEwMjFFQUY0MDAwQTAwQUEgLyogSW5zcGVjdG9yRE9NQWdlbnQuaCBp
biBIZWFkZXJzICovLAogCQkJCUYzRDRDNDc5MTJFMDc2NjMwMDNEQTE1MCAvKiBJbnNwZWN0b3JE
T01EZWJ1Z2dlckFnZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQk3QTc0RUNCQjEwMTgzOUE2MDBC
RjkzOUUgLyogSW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50LmggaW4gSGVhZGVycyAqLywKKwkJCQkw
NzA1ODUzNDE3RkRFNkQ5MDA1RjJCQ0IgLyogSlNNZWRpYVRyYWNrQ29uc3RyYWludHMuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTU3OERBMjBFMTUyMEVCOEMwMDYxNDFDMSAvKiBJbnNwZWN0b3JGcm9u
dGVuZC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMjI3Nzc3NjAxMzQ1REVBOTAwOEVBNDU1IC8qIElu
c3BlY3RvckZyb250ZW5kQ2hhbm5lbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRjM0NEM3MTQxMTI1
QjgyQzAwRjI2RUVFIC8qIEluc3BlY3RvckZyb250ZW5kQ2xpZW50LmggaW4gSGVhZGVycyAqLywK
QEAgLTIzMDcyLDYgKzIzMjAyLDcgQEAKIAkJCQlCMkZBM0REQjBBQjc1QTZGMDAwRTVBQzQgLyog
SlNTVkdQYXRoU2VnTGlzdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjJGQTNEREQwQUI3NUE2RjAw
MEU1QUM0IC8qIEpTU1ZHUGF0aFNlZ01vdmV0b0Ficy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjJG
QTNEREYwQUI3NUE2RjAwMEU1QUM0IC8qIEpTU1ZHUGF0aFNlZ01vdmV0b1JlbC5oIGluIEhlYWRl
cnMgKi8sCisJCQkJMDcwNTg1MjExN0ZEQzE0MDAwNUYyQkNCIC8qIE1lZGlhVHJhY2tDb25zdHJh
aW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlCMkZBM0RFMTBBQjc1QTZGMDAwRTVBQzQgLyogSlNT
VkdQYXR0ZXJuRWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODU0MkE3OTUwQUU1Qzk0MTAw
REY1OERGIC8qIEpTU1ZHUG9pbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUIyRkEzREUzMEFCNzVB
NkYwMDBFNUFDNCAvKiBKU1NWR1BvaW50TGlzdC5oIGluIEhlYWRlcnMgKi8sCkBAIC0yMzU1OCw2
ICsyMzY4OSw3IEBACiAJCQkJNDM5MDQ2RTIxMkRBMjVFODAwQUY4MEEyIC8qIFJlbmRlck1hdGhN
TFJvb3QuaCBpbiBIZWFkZXJzICovLAogCQkJCTQzOTA0NkU0MTJEQTI1RTgwMEFGODBBMiAvKiBS
ZW5kZXJNYXRoTUxSb3cuaCBpbiBIZWFkZXJzICovLAogCQkJCTQzOTA0NkU2MTJEQTI1RTgwMEFG
ODBBMiAvKiBSZW5kZXJNYXRoTUxTcXVhcmVSb290LmggaW4gSGVhZGVycyAqLywKKwkJCQkwNzgz
MjI4NTE4MDEzRUQ4MDA5OTlFMEMgLyogTWVkaWFTdHJlYW1BdWRpb1NvdXJjZS5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJNDM5MDQ2RTgxMkRBMjVFODAwQUY4MEEyIC8qIFJlbmRlck1hdGhNTFNjcmlw
dHMuaCBpbiBIZWFkZXJzICovLAogCQkJCTQzOTA0NkVBMTJEQTI1RTgwMEFGODBBMiAvKiBSZW5k
ZXJNYXRoTUxVbmRlck92ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUU0QzI3OTU5MENGOTc0MTkw
MEU5N0I5OCAvKiBSZW5kZXJNZWRpYS5oIGluIEhlYWRlcnMgKi8sCkBAIC0yMzU3OCw2ICsyMzcx
MCw3IEBACiAJCQkJQTg3MURGRTMwQTE1Mzc2QjAwQjEyQTY4IC8qIFJlbmRlclJlcGxhY2VkLmgg
aW4gSGVhZGVycyAqLywKIAkJCQlCQ0E4NDZENzBEQzY3QTM1MDAyNkMzMDkgLyogUmVuZGVyUmVw
bGljYS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMTQ3OUZBRUUxMDlBRTM3NTAwREVENjU1IC8qIFJl
bmRlclJ1YnkuaCBpbiBIZWFkZXJzICovLAorCQkJCTA3MDU4NTA4MTdGQTQ2ODkwMDVGMkJDQiAv
KiBBbGxBdWRpb0NhcGFiaWxpdGllcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMTQ3OUZBRjAxMDlB
RTM3NTAwREVENjU1IC8qIFJlbmRlclJ1YnlCYXNlLmggaW4gSGVhZGVycyAqLywKIAkJCQkxNDc5
RkFGMjEwOUFFMzc1MDBERUQ2NTUgLyogUmVuZGVyUnVieVJ1bi5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJMTQ3OUZBRjQxMDlBRTM3NTAwREVENjU1IC8qIFJlbmRlclJ1YnlUZXh0LmggaW4gSGVhZGVy
cyAqLywKQEAgLTIzNjYwLDYgKzIzNzkzLDcgQEAKIAkJCQk5NzNFMzI1NzEwODgzQjdDMDA1QkM0
OTMgLyogUmVzb3VyY2VMb2FkTm90aWZpZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUU0Mjk1RkE0
MTJCMDYxNEUwMEQxQUNFMCAvKiBSZXNvdXJjZUxvYWRQcmlvcml0eS5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJRDBDRTU4RjkxMjVFNENDMjAwRjNGMTk5IC8qIFJlc291cmNlTG9hZFNjaGVkdWxlci5o
IGluIEhlYWRlcnMgKi8sCisJCQkJMDdDNTlCNzYxN0Y3RDBEQjAwMEZCQ0JCIC8qIENhcGFiaWxp
dHlSYW5nZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOEE4MUJGODUxMURDRkQ5MDAwREEyQjk4IC8q
IFJlc291cmNlTG9hZFRpbWluZy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJN0VFNjg0NkQxMkQyNkUz
ODAwRTc5NDE1IC8qIFJlc291cmNlUmVxdWVzdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTE0Qzc2
N0QwQ0U5MjNBMTAwN0VGM0NEIC8qIFJlc291cmNlUmVxdWVzdEJhc2UuaCBpbiBIZWFkZXJzICov
LApAQCAtMjM5NjksNiArMjQxMDMsNyBAQAogCQkJCTA3OEUwOTM4MTdEMTZCMkMwMDQyMEFBMSAv
KiBNZWRpYVN0cmVhbVNvdXJjZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjIyMjc5QjEwRDAwQkYy
MjAwNzFCNzgyIC8qIFNWR0Rlc2NFbGVtZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlCNUI3QTE3
MTE3QzEwQUMwMDBFNEFBMEEgLyogRWxlbWVudERhdGEuaCBpbiBIZWFkZXJzICovLAorCQkJCTA3
MDU4NTBCMTdGQTQ4MjcwMDVGMkJDQiAvKiBNZWRpYVN0cmVhbUNhcGFiaWxpdGllcy5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJQjIyMjc5QjQwRDAwQkYyMjAwNzFCNzgyIC8qIFNWR0RvY3VtZW50Lmgg
aW4gSGVhZGVycyAqLywKIAkJCQlCMjhDNkEyODBEMDBDNDQ4MDAzMzRBQTQgLyogU1ZHRG9jdW1l
bnRFeHRlbnNpb25zLmggaW4gSGVhZGVycyAqLywKIAkJCQlCMjIyNzlCNzBEMDBCRjIyMDA3MUI3
ODIgLyogU1ZHRWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCkBAIC0yNDA0Myw2ICsyNDE3OCw3IEBA
CiAJCQkJNzEzNDQ5NkUxNDY5NDFCMzAwNzIwMzEyIC8qIFNWR0xlbmd0aENvbnRleHQuaCBpbiBI
ZWFkZXJzICovLAogCQkJCUIyMjI3QTM2MEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdMZW5ndGhMaXN0
LmggaW4gSGVhZGVycyAqLywKIAkJCQlCMjIyN0EzOTBEMDBCRjIyMDA3MUI3ODIgLyogU1ZHTGlu
ZWFyR3JhZGllbnRFbGVtZW50LmggaW4gSGVhZGVycyAqLywKKwkJCQkwN0M1OUI2OTE3Rjc4NEJB
MDAwRkJDQkIgLyogTWVkaWFTb3VyY2VTdGF0ZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCUIyMjI3
QTNDMEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdMaW5lRWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJMDgxMDc2NDQxMjgyODU1NjAwN0M2M0JBIC8qIFNWR0xpc3RQcm9wZXJ0eS5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJMDg4QTBFMDkxMjZFRjFEQjAwOTc4RjdBIC8qIFNWR0xpc3RQcm9wZXJ0eVRl
YXJPZmYuaCBpbiBIZWFkZXJzICovLApAQCAtMjQyMzIsNiArMjQzNjgsNyBAQAogCQkJCUU0NDYx
M0IwMENENjMzMTAwMEZBREE3NSAvKiBUaW1lUmFuZ2VzLmggaW4gSGVhZGVycyAqLywKIAkJCQk0
OUU5MTJBRTBFRkFDOTA2MDA5RDBDQUYgLyogVGltaW5nRnVuY3Rpb24uaCBpbiBIZWFkZXJzICov
LAogCQkJCTA3MDMzNEQ3MTQ1OUZGRDUwMDhEOEQ0NSAvKiBUcmFja0Jhc2UuaCBpbiBIZWFkZXJz
ICovLAorCQkJCTA3MDU4NEZEMTdGOUQ2REYwMDVGMkJDQiAvKiBNZWRpYVN0cmVhbVNvdXJjZUNh
cGFiaWxpdGllcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkU4OEUwQzIxNzE1Q0UyNjAwNjU4RDk4
IC8qIFRyYWNrTGlzdEJhc2UuaCBpbiBIZWFkZXJzICovLAogCQkJCUNEM0E0OTVGMTdBOUQwMUIw
MDI3NEU0MiAvKiBNZWRpYVNvdXJjZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDlFOTExQzQwRUY4
NkQ0NzAwOUQwQ0FGIC8qIFRyYW5zZm9ybWF0aW9uTWF0cml4LmggaW4gSGVhZGVycyAqLywKQEAg
LTI0Mjg1LDYgKzI0NDIyLDcgQEAKIAkJCQlCRTg4RTBFMjE3MTVEMkEyMDA2NThEOTggLyogVmlk
ZW9UcmFja0xpc3QuaCBpbiBIZWFkZXJzICovLAogCQkJCUU0QzkxQTBFMTgwMjM0MzEwMEExN0Y2
RCAvKiBUZXh0UGFpbnRTdHlsZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkVGMjlFRUMxNzE1REQw
OTAwQzRCNEM5IC8qIFZpZGVvVHJhY2tQcml2YXRlLmggaW4gSGVhZGVycyAqLywKKwkJCQkwNzA1
ODUxQjE3RkI0NEI0MDA1RjJCQ0IgLyogSlNBbGxBdWRpb0NhcGFiaWxpdGllcy5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJQ0VGNDE4Q0YxMTc5Njc4QzAwOUQxMTJDIC8qIFZpZXdwb3J0QXJndW1lbnRz
LmggaW4gSGVhZGVycyAqLywKIAkJCQkzRkZGRjlBRTE1OUQ5QjA2MDAyMEJCRDUgLyogVmlld3Bv
cnRTdHlsZVJlc29sdmVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk5MzMwOUUyMDA5OUU2NDkyMDA1
NkU1ODEgLyogVmlzaWJsZVBvc2l0aW9uLmggaW4gSGVhZGVycyAqLywKQEAgLTI0NDc0LDYgKzI0
NjEyLDcgQEAKIAkJCQk4M0MxRDQyODE3OEQ1QUI0MDAxNDFFNjggLyogU1ZHUGF0aFNlZ0N1cnZl
dG9DdWJpY1JlbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODNDMUQ0MjkxNzhENUFCNDAwMTQxRTY4
IC8qIFNWR1BhdGhTZWdDdXJ2ZXRvQ3ViaWNTbW9vdGhBYnMuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTgzQzFENDJBMTc4RDVBQjQwMDE0MUU2OCAvKiBTVkdQYXRoU2VnQ3VydmV0b0N1YmljU21vb3Ro
UmVsLmggaW4gSGVhZGVycyAqLywKKwkJCQkwN0M1OUI3MjE3Rjc5QzdDMDAwRkJDQkIgLyogSlNN
ZWRpYVNvdXJjZVN0YXRlcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODNDMUQ0MkIxNzhENUFCNDAw
MTQxRTY4IC8qIFNWR1BhdGhTZWdDdXJ2ZXRvUXVhZHJhdGljQWJzLmggaW4gSGVhZGVycyAqLywK
IAkJCQk4M0MxRDQyQzE3OEQ1QUI1MDAxNDFFNjggLyogU1ZHUGF0aFNlZ0N1cnZldG9RdWFkcmF0
aWNSZWwuaCBpbiBIZWFkZXJzICovLAogCQkJCTgzQzFENDJEMTc4RDVBQjUwMDE0MUU2OCAvKiBT
VkdQYXRoU2VnQ3VydmV0b1F1YWRyYXRpY1Ntb290aEFicy5oIGluIEhlYWRlcnMgKi8sCkBAIC0y
NDk1OSw2ICsyNTA5OCw3IEBACiAJCQkJRkQzMTYwMjQxMkIwMjY3NjAwQzFBMzU5IC8qIEJpcXVh
ZERTUEtlcm5lbC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlGREM1NEYwNDEzOTlCMERBMDA4RDkx
MTcgLyogQmlxdWFkRmlsdGVyTm9kZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlGRDMxNjAyNjEy
QjAyNjc2MDBDMUEzNTkgLyogQmlxdWFkUHJvY2Vzc29yLmNwcCBpbiBTb3VyY2VzICovLAorCQkJ
CTA3MDU4NEZGMTdGOUYwNUUwMDVGMkJDQiAvKiBDYXBhYmlsaXR5UmFuZ2UuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJQTg5OTQzMjkwQjQyMzM4ODAwRDdDODAyIC8qIEJpdG1hcEltYWdlLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCTM3N0EzQTkwMTVFRkNFOUIwMDU5RjVDNyAvKiBCaXRtYXBJbWFn
ZUNHLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTk3NkQ2Qzc4MTIyQjhBM0QwMDFGRDFGNyAvKiBC
bG9iLmNwcCBpbiBTb3VyY2VzICovLApAQCAtMjUyNjIsNiArMjU0MDIsNyBAQAogCQkJCTg1Q0E5
NzVEMEE5NjJFNTQwMDY5MENDRiAvKiBET01Eb2N1bWVudFR5cGUubW0gaW4gU291cmNlcyAqLywK
IAkJCQk4NTE4RENFQTBBOUNDODBEMDA5MUI3QTYgLyogRE9NRE9NSW1wbGVtZW50YXRpb24ubW0g
aW4gU291cmNlcyAqLywKIAkJCQk1MkNDQTlFOTE1RTNGNjRDMDA1M0M3N0YgLyogRE9NRE9NTmFt
ZWRGbG93Q29sbGVjdGlvbi5tbSBpbiBTb3VyY2VzICovLAorCQkJCTA3ODMyMjg0MTgwMTNFRDgw
MDk5OUUwQyAvKiBNZWRpYVN0cmVhbUF1ZGlvU291cmNlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CTJEOUEyNDczMTVCOUMyRDEwMEQzNDUyNyAvKiBET01ET01TZWN1cml0eVBvbGljeS5tbSBpbiBT
b3VyY2VzICovLAogCQkJCTc2OTQ1NjVDMTIxNERCNjMwMDA3Q0JBRSAvKiBET01ET01Ub2tlbkxp
c3QubW0gaW4gU291cmNlcyAqLywKIAkJCQk3QUFCQTI1OTE0QkM2MTMzMDBBQTlBMTEgLyogRE9N
RWRpdG9yLmNwcCBpbiBTb3VyY2VzICovLApAQCAtMjUyODIsNiArMjU0MjMsNyBAQAogCQkJCTg1
OUE5QzQ4MEFBNUUzQkQwMEI2OTRCMiAvKiBET01IVE1MQmFzZUVsZW1lbnQubW0gaW4gU291cmNl
cyAqLywKIAkJCQkwNzhFMDkwNDE3RDE0Q0VFMDA0MjBBQTEgLyogTmF2aWdhdG9yTWVkaWFTdHJl
YW0uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJODVFQ0JFRUUwQUE3NjI2OTAwNTQ0RjBCIC8qIERP
TUhUTUxCYXNlRm9udEVsZW1lbnQubW0gaW4gU291cmNlcyAqLywKKwkJCQkwN0M1OUI2ODE3Rjc4
NEJBMDAwRkJDQkIgLyogTWVkaWFTb3VyY2VTdGF0ZXMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
ODU5QTlDNEEwQUE1RTNCRDAwQjY5NEIyIC8qIERPTUhUTUxCb2R5RWxlbWVudC5tbSBpbiBTb3Vy
Y2VzICovLAogCQkJCTg1MTgzQjQzMEFBNjkyNjEwMEYxOUZBMyAvKiBET01IVE1MQlJFbGVtZW50
Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJODVCQTRDREUwQUE2ODYxQjAwODgwNTJEIC8qIERPTUhU
TUxCdXR0b25FbGVtZW50Lm1tIGluIFNvdXJjZXMgKi8sCkBAIC0yNTI4OSw2ICsyNTQzMSw3IEBA
CiAJCQkJODVERjJGOEYwQUEzQzg4MTAwQUQ2NEM1IC8qIERPTUhUTUxDb2xsZWN0aW9uLm1tIGlu
IFNvdXJjZXMgKi8sCiAJCQkJMDc4RTA5MDAxN0QxNENFRTAwNDIwQUExIC8qIE1lZGlhU3RyZWFt
RXZlbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRjVDMDQxRTQwRkZDQTk2RDAwODM5RDRBIC8q
IERPTUhUTUxEYXRhTGlzdEVsZW1lbnQubW0gaW4gU291cmNlcyAqLywKKwkJCQkwNzA1ODUyMzE3
RkRDMTQwMDA1RjJCQ0IgLyogTWVkaWFUcmFja0NvbnN0cmFpbnRzLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCUQzNTlENzkyMTI5Q0EzQzAwMDA2RTVEMiAvKiBET01IVE1MRGV0YWlsc0VsZW1lbnQu
bW0gaW4gU291cmNlcyAqLywKIAkJCQk4NUJBNEQwQzBBQTY4ODY4MDA4ODA1MkQgLyogRE9NSFRN
TERpcmVjdG9yeUVsZW1lbnQubW0gaW4gU291cmNlcyAqLywKIAkJCQk4NUJBNEQwRTBBQTY4ODY4
MDA4ODA1MkQgLyogRE9NSFRNTERpdkVsZW1lbnQubW0gaW4gU291cmNlcyAqLywKQEAgLTI1NzQw
LDYgKzI1ODgzLDcgQEAKIAkJCQlCMjc1MzU4RTBCMDUzQTY2MDAyQ0U2NEYgLyogSWNvbk1hYy5t
bSBpbiBTb3VyY2VzICovLAogCQkJCTUxRTFFQ0MwMEM5MUM5MDQwMERDMjU1QiAvKiBJY29uUmVj
b3JkLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTQ1MDk5QzQxMTM3MEE3ODAwMDU4RDUxMyAvKiBJ
Y29uVVJMLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTA3MDU4NTE1MTdGQjBFRUEwMDVGMkJDQiAv
KiBNZWRpYVN0cmVhbUNhcGFiaWxpdGllcy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlDNTg1QTY2
MjExRDRGQUM1MDA0QzNFNEIgLyogSURCQmluZGluZ1V0aWxpdGllcy5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQk5NzEyQTVDNTE1MDA0RURBMDA0OEFGMTAgLyogSURCRGF0YWJhc2VDYWxsYmFja3NJ
bXBsLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTk3MTJBNUM5MTUwMDRFREEwMDQ4QUYxMCAvKiBJ
REJEYXRhYmFzZUV4Y2VwdGlvbi5jcHAgaW4gU291cmNlcyAqLywKQEAgLTI1NzQ3LDYgKzI1ODkx
LDcgQEAKIAkJCQk5NzEyQTVFRjE1MDA0RURBMDA0OEFGMTAgLyogSURCUGVuZGluZ1RyYW5zYWN0
aW9uTW9uaXRvci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk5NzEyQTVGRTE1MDA0RURBMDA0OEFG
MTAgLyogSURCVmVyc2lvbkNoYW5nZUV2ZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTFBNzFE
NTdCMEYzMzgxOTAwMEY5Q0U0RSAvKiBJZGVudGlmaWVyUmVwLmNwcCBpbiBTb3VyY2VzICovLAor
CQkJCTA3MDU4NTMxMTdGREU2RDkwMDVGMkJDQiAvKiBKU01lZGlhVHJhY2tDb25zdHJhaW50LmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCTU5MTNBMjQxMTNENDlFQkEwMEY1QjA1QyAvKiBJZGVudGlm
aWVyc0ZhY3RvcnkuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQzNDRjE3QTQxNUIwMDYzRjAwMjc2
RDM5IC8qIElkVGFyZ2V0T2JzZXJ2ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQzNDRjE3QTYx
NUIwMDYzRjAwMjc2RDM5IC8qIElkVGFyZ2V0T2JzZXJ2ZXJSZWdpc3RyeS5jcHAgaW4gU291cmNl
cyAqLywKQEAgLTI1OTE2LDYgKzI2MDYxLDcgQEAKIAkJCQk1MUVDOTI2NTBDRTkwREQ0MDBGOTAz
MDggLyogSlNDdXN0b21TUUxTdGF0ZW1lbnRFcnJvckNhbGxiYWNrLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCUUxMEI5M0MzMEI3M0MyOTEwMDNFRDg5MCAvKiBKU0N1c3RvbVhQYXRoTlNSZXNvbHZl
ci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxQUU4MkY4RjBDQUFGQTlEMDAyMjM3QUUgLyogSlNE
YXRhYmFzZS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkwN0M1OUI2RTE3Rjc5NEY2MDAwRkJDQkIg
LyogSlNNZWRpYVNvdXJjZVN0YXRlc0N1c3RvbS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCNTlE
RDY5QTExOTAyOUU1MDA3RTk2ODQgLyogSlNEYXRhYmFzZUNhbGxiYWNrLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCUI1OENFQjZBMTE5MTM2MDcwMDJBNjc5MCAvKiBKU0RhdGFiYXNlU3luYy5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQk0MTYyQTQ1NzEwMTE0NjQ3MDBERkYzRUQgLyogSlNEZWRpY2F0
ZWRXb3JrZXJHbG9iYWxTY29wZS5jcHAgaW4gU291cmNlcyAqLywKQEAgLTI2MDQ0LDYgKzI2MTkw
LDcgQEAKIAkJCQkxQUUyQUEyRTBBMUNEQUI0MDBCNDJCMjUgLyogSlNIVE1MSGVhZGluZ0VsZW1l
bnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMUFFMkFBMzAwQTFDREFCNDAwQjQyQjI1IC8qIEpT
SFRNTEhSRWxlbWVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxQTg1QjE4RjBBMUIxOEEyMDBE
OEM4N0MgLyogSlNIVE1MSHRtbEVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMDcwNTg1
MzgxN0ZFMDQ0RjAwNUYyQkNCIC8qIE1lZGlhVHJhY2tDb25zdHJhaW50U2V0LmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCUJDNDkxOEM4MEJGRUEwNTAwMDlENjMxNiAvKiBKU0hUTUxJRnJhbWVFbGVt
ZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTFBRTJBQTk3MEExQ0REMkQwMEI0MkIyNSAvKiBK
U0hUTUxJbWFnZUVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTgwRTdFOTgwQTFBODNF
MzAwN0ZCOEM1IC8qIEpTSFRNTElucHV0RWxlbWVudC5jcHAgaW4gU291cmNlcyAqLywKQEAgLTI2
MTYwLDYgKzI2MzA3LDcgQEAKIAkJCQk3RTQ2RjZGQTE2MjdBMkNBMDAwNjIyMjMgLyogSlNPRVNF
bGVtZW50SW5kZXhVaW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTkwMDE3ODgwMTJFMDM3MDcw
MDY0ODQ2MiAvKiBKU09FU1N0YW5kYXJkRGVyaXZhdGl2ZXMuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJNkVCRjBFNzYxMkE5ODY4ODAwREIxNzA5IC8qIEpTT0VTVGV4dHVyZUZsb2F0LmNwcCBpbiBT
b3VyY2VzICovLAorCQkJCTA3MDU4NTNBMTdGRTA3NzAwMDVGMkJDQiAvKiBNZWRpYVRyYWNrQ29u
c3RyYWludC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBMzFDNEU1MjE2RTAyQjA4MDAyRjc5NTcg
LyogSlNPRVNUZXh0dXJlSGFsZkZsb2F0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTc3QTE3QUE2
MTJGMjhCMkEwMDRFMDJGNiAvKiBKU09FU1ZlcnRleEFycmF5T2JqZWN0LmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCUZERjZCQUY4MTM0QTRDOTgwMDgyMjkyMCAvKiBKU09mZmxpbmVBdWRpb0NvbXBs
ZXRpb25FdmVudC5jcHAgaW4gU291cmNlcyAqLywKQEAgLTI2NTAyLDYgKzI2NjUwLDcgQEAKIAkJ
CQk5ODVCQjk2RDEzQTk0MDU4MDA3QTBCNjkgLyogTGlua1JlbEF0dHJpYnV0ZS5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQlCQzdGQTYyMDBEMUYwQ0JEMDBEQjIyQTkgLyogTGl2ZU5vZGVMaXN0LmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCTA3OEUwOTEwMTdEMTRDRUUwMDQyMEFBMSAvKiBSVENTdGF0
c1Jlc3BvbnNlLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTA3MDU4NTAyMTdGQTEwRDAwMDVGMkJD
QiAvKiBKU0FsbFZpZGVvQ2FwYWJpbGl0aWVzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTk3NTlF
OTNFMTRFRjFDRjgwMDI2QTJERCAvKiBMb2FkYWJsZVRleHRUcmFjay5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQk2NTZEMzczMzBBREJBNURFMDBBNDU1NEQgLyogTG9hZGVyTlNVUkxFeHRyYXMubW0g
aW4gU291cmNlcyAqLywKIAkJCQk3RUU2ODQ2ODEyRDI2RTM4MDBFNzk0MTUgLyogTG9hZGVyUnVu
TG9vcENGLmNwcCBpbiBTb3VyY2VzICovLApAQCAtMjY1MTQsNiArMjY2NjMsNyBAQAogCQkJCUJD
MjVCNTJBMTMxQzZEMzkwMDE4MEUxMCAvKiBMb2NhbGl6ZWRTdHJpbmdzTWFjLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCUJDRTFDNDFDMEQ5ODI5ODEwMDNCMDJGMiAvKiBMb2NhdGlvbi5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQkwNzhFMDkwODE3RDE0Q0VFMDA0MjBBQTEgLyogUlRDRFRNRlRvbmVD
aGFuZ2VFdmVudC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkwNzA1ODUxQTE3RkI0NEI0MDA1RjJC
Q0IgLyogSlNBbGxBdWRpb0NhcGFiaWxpdGllcy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBODIz
OUUwMDA5QjNDRjhBMDBCNjA2NDEgLyogTG9nZ2luZy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkx
NDAyNjQ1RTBBRkRDMTlCMDA1OTE5RTIgLyogTG9nZ2luZ01hYy5tbSBpbiBTb3VyY2VzICovLAog
CQkJCTFBOEY2QkM1MERCNTVDREMwMDFEQjc5NCAvKiBNYW5pZmVzdFBhcnNlci5jcHAgaW4gU291
cmNlcyAqLywKQEAgLTI2NTgwLDYgKzI2NzMwLDcgQEAKIAkJCQlENkUyNzZBRjE0NjM3NDU1MDAx
RDI4MEEgLyogTXV0YXRpb25PYnNlcnZlclJlZ2lzdHJhdGlvbi5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQlDNkYwOEZCQzE0MzBGRThGMDA2ODU4NDkgLyogTXV0YXRpb25SZWNvcmQuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJNTJCNkM5QzUxNUUzRjRERjAwNjkwQjA1IC8qIE5hbWVkRmxvd0NvbGxl
Y3Rpb24uY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMDcwNTg1MzMxN0ZERTZEOTAwNUYyQkNCIC8q
IEpTTWVkaWFUcmFja0NvbnN0cmFpbnRzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUJDRjM0QTM3
MTFBMjMxQ0QwMEM3MTgwNCAvKiBOYW1lZE5vZGVNYXAuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
QTgxODcyMjQwOTc3RDNDMDAwNTgyNkQ5IC8qIE5hbWVOb2RlTGlzdC5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQlFMTBCOUI2RDBCNzQ3NTk5MDAzRUQ4OTAgLyogTmF0aXZlWFBhdGhOU1Jlc29sdmVy
LmNwcCBpbiBTb3VyY2VzICovLApAQCAtMjY4NDAsNiArMjY5OTEsNyBAQAogCQkJCTkzNEY3MTNF
MEQ1QTZGMjgwMDAxOEQ2OSAvKiBSZXNvdXJjZUVycm9yQmFzZS5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQk3RUU2ODQ2QjEyRDI2RTM4MDBFNzk0MTUgLyogUmVzb3VyY2VFcnJvckNGLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCTUxNEM3NjUwMENFOTIzNEUwMDdFRjNDRCAvKiBSZXNvdXJjZUVycm9y
TWFjLm1tIGluIFNvdXJjZXMgKi8sCisJCQkJMDcwNTg1MTIxN0ZBNzEwNzAwNUYyQkNCIC8qIEpT
TWVkaWFTdHJlYW1DYXBhYmlsaXRpZXMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTE0Qzc2Nzgw
Q0U5MjNBMTAwN0VGM0NEIC8qIFJlc291cmNlSGFuZGxlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CTdFRTY4NDZDMTJEMjZFMzgwMEU3OTQxNSAvKiBSZXNvdXJjZUhhbmRsZUNGTmV0LmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCUUxQkEwMDMxMTZGQjkyQUMwMEJBN0EzNSAvKiBSZXNvdXJjZUhhbmRs
ZUNsaWVudC5jcHAgaW4gU291cmNlcyAqLywKQEAgLTI3MTQxLDYgKzI3MjkzLDcgQEAKIAkJCQlC
MjIyNzlDNDBEMDBCRjIyMDA3MUI3ODIgLyogU1ZHRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZC5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQlCMjIyNzlDNzBEMDBCRjIyMDA3MUI3ODIgLyogU1ZHRkVC
bGVuZEVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQjIyMjc5Q0EwRDAwQkYyMjAwNzFC
NzgyIC8qIFNWR0ZFQ29sb3JNYXRyaXhFbGVtZW50LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTA3
MDU4NTM1MTdGREU2RDkwMDVGMkJDQiAvKiBKU01lZGlhVHJhY2tDb25zdHJhaW50U2V0LmNwcCBp
biBTb3VyY2VzICovLAogCQkJCUIyMjI3OUNEMEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdGRUNvbXBv
bmVudFRyYW5zZmVyRWxlbWVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCMjIyNzlEMDBEMDBC
RjIyMDA3MUI3ODIgLyogU1ZHRkVDb21wb3NpdGVFbGVtZW50LmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCTE5MjEzMjc0MTFDMEU2QkIwMDQ1NjIzOCAvKiBTVkdGRUNvbnZvbHZlTWF0cml4RWxlbWVu
dC5jcHAgaW4gU291cmNlcyAqLywKQEAgLTI3MjAzLDYgKzI3MzU2LDcgQEAKIAkJCQlCMjIyN0Ez
QjBEMDBCRjIyMDA3MUI3ODIgLyogU1ZHTGluZUVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJQjIyMjdBNDAwRDAwQkYyMjAwNzFCNzgyIC8qIFNWR0xvY2F0YWJsZS5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQlCMjIyN0E0MzBEMDBCRjIyMDA3MUI3ODIgLyogU1ZHTWFya2VyRWxlbWVudC5j
cHAgaW4gU291cmNlcyAqLywKKwkJCQkwNzA1ODUxNzE3RkI0MEU5MDA1RjJCQ0IgLyogSlNNZWRp
YVN0cmVhbUNhcGFiaWxpdGllc0N1c3RvbS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCMjIyN0E0
NjBEMDBCRjIyMDA3MUI3ODIgLyogU1ZHTWFza0VsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJQjIyMjdBNEEwRDAwQkYyMjAwNzFCNzgyIC8qIFNWR01ldGFkYXRhRWxlbWVudC5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQlCMkExRjJCMDBDRUYwQUJGMDA0NDJGNkEgLyogU1ZHTWlzc2luZ0ds
eXBoRWxlbWVudC5jcHAgaW4gU291cmNlcyAqLywKQEAgLTI3MjY2LDYgKzI3NDIwLDcgQEAKIAkJ
CQlCMjIyN0FGMjBEMDBCRjIyMDA3MUI3ODIgLyogU1ZHVmlld1NwZWMuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJODQ4NTIyOEExMTkwMTczQzAwNkVEQzdGIC8qIFNWR1ZLZXJuRWxlbWVudC5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQlCMjIyN0FGNTBEMDBCRjIyMDA3MUI3ODIgLyogU1ZHWm9vbUFu
ZFBhbi5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkwNzNBQjRCNzE3RjkyRUNGMDA2RTBENkYgLyog
SlNDYXBhYmlsaXR5UmFuZ2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQjJFNEVDOTcwRDAwQzIy
QjAwNDMyNjQzIC8qIFNWR1pvb21FdmVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlFMTgwODEx
MjE2RkNGNDJGMDBCODBEMDcgLyogU3luY2hyb25vdXNMb2FkZXJDbGllbnQuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJRTE4MDgxMTYxNkZDRjlDQjAwQjgwRDA3IC8qIFN5bmNocm9ub3VzTG9hZGVy
Q2xpZW50Lm1tIGluIFNvdXJjZXMgKi8sCkBAIC0yNzQ0Niw2ICsyNzYwMSw3IEBACiAJCQkJOTdB
QUJEMUExNEZBMDlENTAwNzQ1N0FFIC8qIFdlYlNvY2tldC5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQk5N0FBQkQxRDE0RkEwOUQ1MDA3NDU3QUUgLyogV2ViU29ja2V0Q2hhbm5lbC5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQk0QTM4QkY1MDE0RkUxQzA5MDA2MTI1MTIgLyogV2ViU29ja2V0RGVmbGF0
ZUZyYW1lci5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkwN0M1OUI3MTE3Rjc5QzdDMDAwRkJDQkIg
LyogSlNNZWRpYVNvdXJjZVN0YXRlcy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk5N0FBQkQyMDE0
RkEwOUQ1MDA3NDU3QUUgLyogV2ViU29ja2V0RGVmbGF0ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJOTdBQUJEMjIxNEZBMDlENTAwNzQ1N0FFIC8qIFdlYlNvY2tldEV4dGVuc2lvbkRpc3BhdGNo
ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNEE1QTJBREIxNjFFN0UwMDAwNTg4OUREIC8qIFdl
YlNvY2tldEV4dGVuc2lvblBhcnNlci5jcHAgaW4gU291cmNlcyAqLywKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTTWVkaWFTb3VyY2VTdGF0ZXNDdXN0b20uY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTWVkaWFTb3VyY2VTdGF0ZXNDdXN0
b20uY3BwCShyZXZpc2lvbiAwKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNNZWRp
YVNvdXJjZVN0YXRlc0N1c3RvbS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw4OCBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01Q
VVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBV
VEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkK
KworI2luY2x1ZGUgIkpTTWVkaWFTb3VyY2VTdGF0ZXMuaCIKKworI2luY2x1ZGUgIk1lZGlhU291
cmNlU3RhdGVzLmgiCisKK3VzaW5nIG5hbWVzcGFjZSBKU0M7CisKK25hbWVzcGFjZSBXZWJDb3Jl
IHsKKworSlNWYWx1ZSBKU01lZGlhU291cmNlU3RhdGVzOjp3aWR0aChFeGVjU3RhdGUqKSBjb25z
dAoreworICAgIGlmICghaW1wbCgpLT5oYXNWaWRlb1NvdXJjZSgpKQorICAgICAgICByZXR1cm4g
anNVbmRlZmluZWQoKTsKKworICAgIHJldHVybiBqc051bWJlcihpbXBsKCktPndpZHRoKCkpOwor
fQorCitKU1ZhbHVlIEpTTWVkaWFTb3VyY2VTdGF0ZXM6OmhlaWdodChFeGVjU3RhdGUqKSBjb25z
dAoreworICAgIGlmICghaW1wbCgpLT5oYXNWaWRlb1NvdXJjZSgpKQorICAgICAgICByZXR1cm4g
anNVbmRlZmluZWQoKTsKKyAgICAKKyAgICByZXR1cm4ganNOdW1iZXIoaW1wbCgpLT5oZWlnaHQo
KSk7Cit9CisKK0pTVmFsdWUgSlNNZWRpYVNvdXJjZVN0YXRlczo6ZnJhbWVSYXRlKEV4ZWNTdGF0
ZSopIGNvbnN0Cit7CisgICAgaWYgKCFpbXBsKCktPmhhc1ZpZGVvU291cmNlKCkpCisgICAgICAg
IHJldHVybiBqc1VuZGVmaW5lZCgpOworICAgIAorICAgIHJldHVybiBqc051bWJlcihpbXBsKCkt
PmZyYW1lUmF0ZSgpKTsKK30KKworSlNWYWx1ZSBKU01lZGlhU291cmNlU3RhdGVzOjphc3BlY3RS
YXRpbyhFeGVjU3RhdGUqKSBjb25zdAoreworICAgIGlmICghaW1wbCgpLT5oYXNWaWRlb1NvdXJj
ZSgpKQorICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKKyAgICAKKyAgICByZXR1cm4ganNO
dW1iZXIoaW1wbCgpLT5hc3BlY3RSYXRpbygpKTsKK30KKworSlNWYWx1ZSBKU01lZGlhU291cmNl
U3RhdGVzOjpmYWNpbmdNb2RlKEV4ZWNTdGF0ZSogZXhlYykgY29uc3QKK3sKKyAgICBpZiAoIWlt
cGwoKS0+aGFzVmlkZW9Tb3VyY2UoKSkKKyAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CisK
KyAgICByZXR1cm4ganNTdHJpbmdXaXRoQ2FjaGUoZXhlYywgaW1wbCgpLT5mYWNpbmdNb2RlKCkp
OworfQorCitKU1ZhbHVlIEpTTWVkaWFTb3VyY2VTdGF0ZXM6OnZvbHVtZShFeGVjU3RhdGUqKSBj
b25zdAoreworICAgIGlmIChpbXBsKCktPmhhc1ZpZGVvU291cmNlKCkpCisgICAgICAgIHJldHVy
biBqc1VuZGVmaW5lZCgpOworICAgIAorICAgIHJldHVybiBqc051bWJlcihpbXBsKCktPnZvbHVt
ZSgpKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTWVkaWFTdHJlYW1DYXBhYmlsaXRpZXNDdXN0b20uY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTWVkaWFTdHJlYW1D
YXBhYmlsaXRpZXNDdXN0b20uY3BwCShyZXZpc2lvbiAwKQorKysgU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNNZWRpYVN0cmVhbUNhcGFiaWxpdGllc0N1c3RvbS5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTAsMCArMSw0OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwOSBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNs
dWRlICJKU01lZGlhU3RyZWFtQ2FwYWJpbGl0aWVzLmgiCisKKyNpbmNsdWRlICJNZWRpYVN0cmVh
bUNhcGFiaWxpdGllcy5oIgorI2luY2x1ZGUgIkpTQWxsQXVkaW9DYXBhYmlsaXRpZXMuaCIKKyNp
bmNsdWRlICJKU0FsbFZpZGVvQ2FwYWJpbGl0aWVzLmgiCisKK3VzaW5nIG5hbWVzcGFjZSBKU0M7
CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworSlNDOjpKU1ZhbHVlIHRvSlMoSlNDOjpFeGVjU3Rh
dGUqIGV4ZWMsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIE1lZGlhU3RyZWFtQ2Fw
YWJpbGl0aWVzKiBvYmplY3QpCit7CisgICAgaWYgKCFvYmplY3QpCisgICAgICAgIHJldHVybiBq
c051bGwoKTsKKworICAgIGlmIChvYmplY3QtPmhhc1ZpZGVvU291cmNlKCkpCisgICAgICAgIHJl
dHVybiB3cmFwPEpTQWxsVmlkZW9DYXBhYmlsaXRpZXM+KGV4ZWMsIGdsb2JhbE9iamVjdCwgc3Rh
dGljX2Nhc3Q8QWxsVmlkZW9DYXBhYmlsaXRpZXMqPihvYmplY3QpKTsKKworICAgIHJldHVybiB3
cmFwPEpTQWxsQXVkaW9DYXBhYmlsaXRpZXM+KGV4ZWMsIGdsb2JhbE9iamVjdCwgc3RhdGljX2Nh
c3Q8QWxsQXVkaW9DYXBhYmlsaXRpZXMqPihvYmplY3QpKTsKK30KKworfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50TmFtZXMuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vRXZlbnROYW1lcy5oCShyZXZpc2lvbiAxNTcwMTYpCisr
KyBTb3VyY2UvV2ViQ29yZS9kb20vRXZlbnROYW1lcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMzgs
NiArMjM4LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIG1hY3JvKHJlbW92ZXN0cmVhbSkg
XAogICAgIG1hY3JvKHNpZ25hbGluZ3N0YXRlY2hhbmdlKSBcCiAgICAgbWFjcm8ocmVtb3ZldHJh
Y2spIFwKKyAgICBtYWNybyhvdmVyY29uc3RyYWluZWQpIFwKICAgICBtYWNybyhtdXRlKSBcCiAg
ICAgbWFjcm8odW5tdXRlKSBcCiAgICAgbWFjcm8oc3RhcnRlZCkgXApJbmRleDogU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1DZW50ZXIuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtQ2Vu
dGVyLmNwcAkocmV2aXNpb24gMTU3MDE2KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVk
aWFzdHJlYW0vTWVkaWFTdHJlYW1DZW50ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02NywxMSAr
NjcsNiBAQCBNZWRpYVN0cmVhbUNlbnRlcjo6fk1lZGlhU3RyZWFtQ2VudGVyKCkKIHsKIH0KIAot
dm9pZCBNZWRpYVN0cmVhbUNlbnRlcjo6ZW5kTG9jYWxNZWRpYVN0cmVhbShNZWRpYVN0cmVhbURl
c2NyaXB0b3IqIHN0cmVhbURlc2NyaXB0b3IpCi17Ci0gICAgc3RyZWFtRGVzY3JpcHRvci0+c2V0
RW5kZWQoKTsKLX0KLQogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5BQkxF
KE1FRElBX1NUUkVBTSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFt
L01lZGlhU3RyZWFtQ2VudGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1DZW50ZXIuaAkocmV2aXNpb24gMTU3MDE2KQorKysg
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1DZW50ZXIuaAko
d29ya2luZyBjb3B5KQpAQCAtMzQsNiArMzQsNyBAQAogCiAjaWYgRU5BQkxFKE1FRElBX1NUUkVB
TSkKIAorI2luY2x1ZGUgIk1lZGlhU3RyZWFtU291cmNlLmgiCiAjaW5jbHVkZSA8d3RmL1Bhc3NS
ZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIApAQCAtNDMsOSArNDQs
MTEgQEAgY2xhc3MgTWVkaWFDb25zdHJhaW50czsKIGNsYXNzIE1lZGlhU3RyZWFtQ3JlYXRpb25D
bGllbnQ7CiBjbGFzcyBNZWRpYVN0cmVhbUNyZWF0aW9uQ2xpZW50OwogY2xhc3MgTWVkaWFTdHJl
YW1EZXNjcmlwdG9yOwotY2xhc3MgTWVkaWFTdHJlYW1Tb3VyY2U7CitjbGFzcyBNZWRpYVN0cmVh
bVNvdXJjZUNhcGFiaWxpdGllczsKIGNsYXNzIE1lZGlhU3RyZWFtVHJhY2tTb3VyY2VzUmVxdWVz
dENsaWVudDsKIAorc3RydWN0IE1lZGlhU3RyZWFtU291cmNlU3RhdGVzOworCiBjbGFzcyBNZWRp
YVN0cmVhbUNlbnRlciB7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB+TWVkaWFTdHJlYW1DZW50ZXIo
KTsKQEAgLTU5LDE0ICs2Miw2IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgYm9vbCBnZXRNZWRp
YVN0cmVhbVRyYWNrU291cmNlcyhQYXNzUmVmUHRyPE1lZGlhU3RyZWFtVHJhY2tTb3VyY2VzUmVx
dWVzdENsaWVudD4pID0gMDsKIAotICAgIHZpcnR1YWwgdm9pZCBkaWRTZXRNZWRpYVN0cmVhbVRy
YWNrRW5hYmxlZChNZWRpYVN0cmVhbVNvdXJjZSopID0gMDsKLQotICAgIHZpcnR1YWwgYm9vbCBk
aWRBZGRNZWRpYVN0cmVhbVRyYWNrKE1lZGlhU3RyZWFtU291cmNlKikgPSAwOwotICAgIHZpcnR1
YWwgYm9vbCBkaWRSZW1vdmVNZWRpYVN0cmVhbVRyYWNrKE1lZGlhU3RyZWFtU291cmNlKikgPSAw
OwotCi0gICAgdmlydHVhbCB2b2lkIGRpZFN0b3BMb2NhbE1lZGlhU3RyZWFtKE1lZGlhU3RyZWFt
RGVzY3JpcHRvciopID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgZGlkQ3JlYXRlTWVkaWFTdHJlYW0o
TWVkaWFTdHJlYW1EZXNjcmlwdG9yKikgPSAwOwotCiBwcm90ZWN0ZWQ6CiAgICAgTWVkaWFTdHJl
YW1DZW50ZXIoKTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0v
TWVkaWFTdHJlYW1EZXNjcmlwdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbURlc2NyaXB0b3IuY3BwCShyZXZpc2lvbiAx
NTcwMTYpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYVN0cmVh
bURlc2NyaXB0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNSw2ICszNSw3IEBACiAKICNpbmNs
dWRlICJNZWRpYVN0cmVhbURlc2NyaXB0b3IuaCIKIAorI2luY2x1ZGUgIk1lZGlhU3RyZWFtQ2Vu
dGVyLmgiCiAjaW5jbHVkZSAiTWVkaWFTdHJlYW1Tb3VyY2UuaCIKICNpbmNsdWRlICJVVUlELmgi
CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KQEAgLTQ3LDYgKzQ4LDE1IEBAIFBhc3NSZWZQ
dHI8TWVkaWFTdHJlYW1EZXNjcmlwdG9yPiBNZWRpYVMKICAgICByZXR1cm4gYWRvcHRSZWYobmV3
IE1lZGlhU3RyZWFtRGVzY3JpcHRvcihjcmVhdGVDYW5vbmljYWxVVUlEU3RyaW5nKCksIGF1ZGlv
U291cmNlcywgdmlkZW9Tb3VyY2VzKSk7CiB9CiAKK01lZGlhU3RyZWFtRGVzY3JpcHRvcjo6fk1l
ZGlhU3RyZWFtRGVzY3JpcHRvcigpCit7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX2F1
ZGlvU3RyZWFtU291cmNlcy5zaXplKCk7IGkrKykKKyAgICAgICAgbV9hdWRpb1N0cmVhbVNvdXJj
ZXNbaV0tPnNldFN0cmVhbSgwKTsKKyAgICAKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1f
dmlkZW9TdHJlYW1Tb3VyY2VzLnNpemUoKTsgaSsrKQorICAgICAgICBtX3ZpZGVvU3RyZWFtU291
cmNlc1tpXS0+c2V0U3RyZWFtKDApOworfQorCiB2b2lkIE1lZGlhU3RyZWFtRGVzY3JpcHRvcjo6
YWRkU291cmNlKFBhc3NSZWZQdHI8TWVkaWFTdHJlYW1Tb3VyY2U+IHNvdXJjZSkKIHsKICAgICBz
d2l0Y2ggKHNvdXJjZS0+dHlwZSgpKSB7CkBAIC02NywxNSArNzcsMTkgQEAgdm9pZCBNZWRpYVN0
cmVhbURlc2NyaXB0b3I6OnJlbW92ZVNvdXJjZQogICAgIHN3aXRjaCAoc291cmNlLT50eXBlKCkp
IHsKICAgICBjYXNlIE1lZGlhU3RyZWFtU291cmNlOjpBdWRpbzoKICAgICAgICAgcG9zID0gbV9h
dWRpb1N0cmVhbVNvdXJjZXMuZmluZChzb3VyY2UpOwotICAgICAgICBpZiAocG9zICE9IG5vdEZv
dW5kKQotICAgICAgICAgICAgbV9hdWRpb1N0cmVhbVNvdXJjZXMucmVtb3ZlKHBvcyk7CisgICAg
ICAgIGlmIChwb3MgPT0gbm90Rm91bmQpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIG1f
YXVkaW9TdHJlYW1Tb3VyY2VzLnJlbW92ZShwb3MpOwogICAgICAgICBicmVhazsKICAgICBjYXNl
IE1lZGlhU3RyZWFtU291cmNlOjpWaWRlbzoKICAgICAgICAgcG9zID0gbV92aWRlb1N0cmVhbVNv
dXJjZXMuZmluZChzb3VyY2UpOwotICAgICAgICBpZiAocG9zICE9IG5vdEZvdW5kKQotICAgICAg
ICAgICAgbV92aWRlb1N0cmVhbVNvdXJjZXMucmVtb3ZlKHBvcyk7CisgICAgICAgIGlmIChwb3Mg
PT0gbm90Rm91bmQpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIG1fdmlkZW9TdHJlYW1T
b3VyY2VzLnJlbW92ZShwb3MpOwogICAgICAgICBicmVhazsKICAgICB9CisKKyAgICBzb3VyY2Ut
PnNldFN0cmVhbSgwKTsKIH0KIAogdm9pZCBNZWRpYVN0cmVhbURlc2NyaXB0b3I6OmFkZFJlbW90
ZVNvdXJjZShNZWRpYVN0cmVhbVNvdXJjZSogc291cmNlKQpJbmRleDogU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1EZXNjcmlwdG9yLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1EZXNjcmlw
dG9yLmgJKHJldmlzaW9uIDE1NzAxNikKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlh
c3RyZWFtL01lZGlhU3RyZWFtRGVzY3JpcHRvci5oCSh3b3JraW5nIGNvcHkpCkBAIC01Miw5ICs1
MiwxMCBAQCBwdWJsaWM6CiAKIGNsYXNzIE1lZGlhU3RyZWFtRGVzY3JpcHRvciA6IHB1YmxpYyBS
ZWZDb3VudGVkPE1lZGlhU3RyZWFtRGVzY3JpcHRvcj4gewogcHVibGljOgotCiAgICAgc3RhdGlj
IFBhc3NSZWZQdHI8TWVkaWFTdHJlYW1EZXNjcmlwdG9yPiBjcmVhdGUoY29uc3QgTWVkaWFTdHJl
YW1Tb3VyY2VWZWN0b3ImIGF1ZGlvU291cmNlcywgY29uc3QgTWVkaWFTdHJlYW1Tb3VyY2VWZWN0
b3ImIHZpZGVvU291cmNlcyk7CiAKKyAgICB2aXJ0dWFsIH5NZWRpYVN0cmVhbURlc2NyaXB0b3Io
KTsKKwogICAgIE1lZGlhU3RyZWFtRGVzY3JpcHRvckNsaWVudCogY2xpZW50KCkgY29uc3QgeyBy
ZXR1cm4gbV9jbGllbnQ7IH0KICAgICB2b2lkIHNldENsaWVudChNZWRpYVN0cmVhbURlc2NyaXB0
b3JDbGllbnQqIGNsaWVudCkgeyBtX2NsaWVudCA9IGNsaWVudDsgfQogCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVNvdXJjZS5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1T
b3VyY2UuY3BwCShyZXZpc2lvbiAxNTcwMTYpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
ZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVNvdXJjZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSAr
MSw2IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zNCwyNiArMzUsMzkg
QEAKIAogI2luY2x1ZGUgIk1lZGlhU3RyZWFtU291cmNlLmgiCiAKLSNpbmNsdWRlICJBdWRpb0Rl
c3RpbmF0aW9uQ29uc3VtZXIuaCIKKyNpbmNsdWRlICJNZWRpYVN0cmVhbUNlbnRlci5oIgorI2lu
Y2x1ZGUgIk1lZGlhU3RyZWFtU291cmNlQ2FwYWJpbGl0aWVzLmgiCisjaW5jbHVkZSAiVVVJRC5o
IgorCiAjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
Ci1QYXNzUmVmUHRyPE1lZGlhU3RyZWFtU291cmNlPiBNZWRpYVN0cmVhbVNvdXJjZTo6Y3JlYXRl
KGNvbnN0IFN0cmluZyYgaWQsIFR5cGUgdHlwZSwgY29uc3QgU3RyaW5nJiBuYW1lLCBSZWFkeVN0
YXRlIHJlYWR5U3RhdGUsIGJvb2wgcmVxdWlyZXNDb25zdW1lcikKLXsKLSAgICByZXR1cm4gYWRv
cHRSZWYobmV3IE1lZGlhU3RyZWFtU291cmNlKGlkLCB0eXBlLCBuYW1lLCByZWFkeVN0YXRlLCBy
ZXF1aXJlc0NvbnN1bWVyKSk7Ci19Ci0KLU1lZGlhU3RyZWFtU291cmNlOjpNZWRpYVN0cmVhbVNv
dXJjZShjb25zdCBTdHJpbmcmIGlkLCBUeXBlIHR5cGUsIGNvbnN0IFN0cmluZyYgbmFtZSwgUmVh
ZHlTdGF0ZSByZWFkeVN0YXRlLCBib29sIHJlcXVpcmVzQ29uc3VtZXIpCitNZWRpYVN0cmVhbVNv
dXJjZTo6TWVkaWFTdHJlYW1Tb3VyY2UoY29uc3QgU3RyaW5nJiBpZCwgVHlwZSB0eXBlLCBjb25z
dCBTdHJpbmcmIG5hbWUpCiAgICAgOiBtX2lkKGlkKQogICAgICwgbV90eXBlKHR5cGUpCiAgICAg
LCBtX25hbWUobmFtZSkKLSAgICAsIG1fcmVhZHlTdGF0ZShyZWFkeVN0YXRlKQorICAgICwgbV9y
ZWFkeVN0YXRlKE5ldykKICAgICAsIG1fc3RyZWFtKDApCi0gICAgLCBtX3JlcXVpcmVzQ29uc3Vt
ZXIocmVxdWlyZXNDb25zdW1lcikKICAgICAsIG1fZW5hYmxlZCh0cnVlKQogICAgICwgbV9tdXRl
ZChmYWxzZSkKKyAgICAsIG1fcmVhZG9ubHkoZmFsc2UpCisgICAgLCBtX3JlbW90ZShmYWxzZSkK
IHsKKyAgICBpZiAoIW1faWQuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm47CisgICAgCisgICAg
bV9pZCA9IGNyZWF0ZUNhbm9uaWNhbFVVSURTdHJpbmcoKTsKK30KKwordm9pZCBNZWRpYVN0cmVh
bVNvdXJjZTo6cmVzZXQoKQoreworICAgIG1fcmVhZHlTdGF0ZSA9IE5ldzsKKyAgICBtX3N0cmVh
bSA9IDA7CisgICAgbV9lbmFibGVkID0gdHJ1ZTsKKyAgICBtX211dGVkID0gZmFsc2U7CisgICAg
bV9yZWFkb25seSA9IGZhbHNlOworICAgIG1fcmVtb3RlID0gZmFsc2U7CiB9CiAKIHZvaWQgTWVk
aWFTdHJlYW1Tb3VyY2U6OnNldFJlYWR5U3RhdGUoUmVhZHlTdGF0ZSByZWFkeVN0YXRlKQpAQCAt
NjMsNyArNzcsNyBAQCB2b2lkIE1lZGlhU3RyZWFtU291cmNlOjpzZXRSZWFkeVN0YXRlKFJlCiAK
ICAgICBtX3JlYWR5U3RhdGUgPSByZWFkeVN0YXRlOwogICAgIGZvciAoVmVjdG9yPE9ic2VydmVy
Kj46Oml0ZXJhdG9yIGkgPSBtX29ic2VydmVycy5iZWdpbigpOyBpICE9IG1fb2JzZXJ2ZXJzLmVu
ZCgpOyArK2kpCi0gICAgICAgICgqaSktPnNvdXJjZUNoYW5nZWRTdGF0ZSgpOworICAgICAgICAo
KmkpLT5zb3VyY2VTdGF0ZUNoYW5nZWQoKTsKIH0KIAogdm9pZCBNZWRpYVN0cmVhbVNvdXJjZTo6
YWRkT2JzZXJ2ZXIoTWVkaWFTdHJlYW1Tb3VyY2U6Ok9ic2VydmVyKiBvYnNlcnZlcikKQEAgLTgw
LDUzICs5NCw3NCBAQCB2b2lkIE1lZGlhU3RyZWFtU291cmNlOjpyZW1vdmVPYnNlcnZlcihNCiAK
IHZvaWQgTWVkaWFTdHJlYW1Tb3VyY2U6OnNldFN0cmVhbShNZWRpYVN0cmVhbURlc2NyaXB0b3Iq
IHN0cmVhbSkKIHsKLSAgICBBU1NFUlQoIW1fc3RyZWFtICYmIHN0cmVhbSk7CisgICAgLy8gRklY
TUU6IEEgc291cmNlIHNob3VsZCBub3QgbmVlZCB0byBrbm93IGFib3V0IGl0cyBzdHJlYW0ocyku
IFRoaXMgd2lsbCBiZSBmaXhlZCBhcyBhIHBhcnQgb2YKKyAgICAvLyBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTIxOTU0CiAgICAgbV9zdHJlYW0gPSBzdHJlYW07CiB9
CiAKK01lZGlhQ29uc3RyYWludHMqIE1lZGlhU3RyZWFtU291cmNlOjpjb25zdHJhaW50cygpIGNv
bnN0Cit7CisgICAgLy8gRklYTUU6IFdoaWxlIHRoaXMgcmV0dXJucyAKKyAgICAvLyBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTIyNDI4CisgICAgcmV0dXJuIG1fY29u
c3RyYWludHMuZ2V0KCk7Cit9CisgICAgCit2b2lkIE1lZGlhU3RyZWFtU291cmNlOjpzZXRDb25z
dHJhaW50cyhQYXNzUmVmUHRyPE1lZGlhQ29uc3RyYWludHM+IGNvbnN0cmFpbnRzKQoreworICAg
IG1fY29uc3RyYWludHMgPSBjb25zdHJhaW50czsKK30KKwogdm9pZCBNZWRpYVN0cmVhbVNvdXJj
ZTo6c2V0TXV0ZWQoYm9vbCBtdXRlZCkKIHsKICAgICBpZiAobV9tdXRlZCA9PSBtdXRlZCkKICAg
ICAgICAgcmV0dXJuOwogCiAgICAgbV9tdXRlZCA9IG11dGVkOworCisgICAgaWYgKG1fcmVhZHlT
dGF0ZSA9PSBFbmRlZCkKKyAgICAgICAgcmV0dXJuOworCiAgICAgZm9yIChWZWN0b3I8T2JzZXJ2
ZXIqPjo6aXRlcmF0b3IgaSA9IG1fb2JzZXJ2ZXJzLmJlZ2luKCk7IGkgIT0gbV9vYnNlcnZlcnMu
ZW5kKCk7ICsraSkKLSAgICAgICAgKCppKS0+c291cmNlQ2hhbmdlZFN0YXRlKCk7CisgICAgICAg
ICgqaSktPnNvdXJjZU11dGVkQ2hhbmdlZCgpOwogfQogCi12b2lkIE1lZGlhU3RyZWFtU291cmNl
OjphZGRBdWRpb0NvbnN1bWVyKFBhc3NSZWZQdHI8QXVkaW9EZXN0aW5hdGlvbkNvbnN1bWVyPiBj
b25zdW1lcikKK3ZvaWQgTWVkaWFTdHJlYW1Tb3VyY2U6OnNldEVuYWJsZWQoYm9vbCBlbmFibGVk
KQogewotICAgIEFTU0VSVChtX3JlcXVpcmVzQ29uc3VtZXIpOwotICAgIE11dGV4TG9ja2VyIGxv
Y2tlcihtX2F1ZGlvQ29uc3VtZXJzTG9jayk7Ci0gICAgbV9hdWRpb0NvbnN1bWVycy5hcHBlbmQo
Y29uc3VtZXIpOwotfQorICAgIGlmIChtX2VuYWJsZWQgPT0gZW5hYmxlZCkKKyAgICAgICAgcmV0
dXJuOworICAgIAorICAgIG1fZW5hYmxlZCA9IGVuYWJsZWQ7CiAKLWJvb2wgTWVkaWFTdHJlYW1T
b3VyY2U6OnJlbW92ZUF1ZGlvQ29uc3VtZXIoQXVkaW9EZXN0aW5hdGlvbkNvbnN1bWVyKiBjb25z
dW1lcikKLXsKLSAgICBBU1NFUlQobV9yZXF1aXJlc0NvbnN1bWVyKTsKLSAgICBNdXRleExvY2tl
ciBsb2NrZXIobV9hdWRpb0NvbnN1bWVyc0xvY2spOwotICAgIHNpemVfdCBwb3MgPSBtX2F1ZGlv
Q29uc3VtZXJzLmZpbmQoY29uc3VtZXIpOwotICAgIGlmIChwb3MgIT0gbm90Rm91bmQpIHsKLSAg
ICAgICAgbV9hdWRpb0NvbnN1bWVycy5yZW1vdmUocG9zKTsKLSAgICAgICAgcmV0dXJuIHRydWU7
Ci0gICAgfQotICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAobV9yZWFkeVN0YXRlID09IEVuZGVk
KQorICAgICAgICByZXR1cm47CisgICAgCisgICAgZm9yIChWZWN0b3I8T2JzZXJ2ZXIqPjo6aXRl
cmF0b3IgaSA9IG1fb2JzZXJ2ZXJzLmJlZ2luKCk7IGkgIT0gbV9vYnNlcnZlcnMuZW5kKCk7ICsr
aSkKKyAgICAgICAgKCppKS0+c291cmNlRW5hYmxlZENoYW5nZWQoKTsKIH0KIAotdm9pZCBNZWRp
YVN0cmVhbVNvdXJjZTo6c2V0QXVkaW9Gb3JtYXQoc2l6ZV90IG51bWJlck9mQ2hhbm5lbHMsIGZs
b2F0IHNhbXBsZVJhdGUpCitib29sIE1lZGlhU3RyZWFtU291cmNlOjpyZWFkb25seSgpIGNvbnN0
CiB7Ci0gICAgQVNTRVJUKG1fcmVxdWlyZXNDb25zdW1lcik7Ci0gICAgTXV0ZXhMb2NrZXIgbG9j
a2VyKG1fYXVkaW9Db25zdW1lcnNMb2NrKTsKLSAgICBmb3IgKFZlY3RvcjxSZWZQdHI8QXVkaW9E
ZXN0aW5hdGlvbkNvbnN1bWVyPiA+OjppdGVyYXRvciBpdCA9IG1fYXVkaW9Db25zdW1lcnMuYmVn
aW4oKTsgaXQgIT0gbV9hdWRpb0NvbnN1bWVycy5lbmQoKTsgKytpdCkKLSAgICAgICAgKCppdCkt
PnNldEZvcm1hdChudW1iZXJPZkNoYW5uZWxzLCBzYW1wbGVSYXRlKTsKKyAgICAvLyBodHRwOi8v
d3d3LnczLm9yZy9UUi9tZWRpYWNhcHR1cmUtc3RyZWFtcy8jd2lkbC1NZWRpYVN0cmVhbVRyYWNr
LV9yZWFkb25seQorICAgIC8vIElmIHRoZSB0cmFjayAoYXVkaW8gb3IgdmlkZW8pIGlzIGJhY2tl
ZCBieSBhIHJlYWQtb25seSBzb3VyY2Ugc3VjaCBhcyBhIGZpbGUsIG9yIHRoZSB0cmFjayBzb3Vy
Y2UgCisgICAgLy8gaXMgYSBsb2NhbCBtaWNyb3Bob25lIG9yIGNhbWVyYSwgYnV0IGlzIHNoYXJl
ZCBzbyB0aGF0IHRoaXMgdHJhY2sgY2Fubm90IG1vZGlmeSBhbnkgb2YgdGhlIHNvdXJjZSdzCisg
ICAgLy8gc2V0dGluZ3MsIHRoZSByZWFkb25seSBhdHRyaWJ1dGUgbXVzdCByZXR1cm4gdGhlIHZh
bHVlIHRydWUuIE90aGVyd2lzZSwgaXQgbXVzdCByZXR1cm4gdGhlIHZhbHVlIGZhbHNlLgorICAg
IHJldHVybiBtX3JlYWRvbmx5OwogfQogCi12b2lkIE1lZGlhU3RyZWFtU291cmNlOjpjb25zdW1l
QXVkaW8oQXVkaW9CdXMqIGJ1cywgc2l6ZV90IG51bWJlck9mRnJhbWVzKQordm9pZCBNZWRpYVN0
cmVhbVNvdXJjZTo6c3RvcCgpCiB7Ci0gICAgQVNTRVJUKG1fcmVxdWlyZXNDb25zdW1lcik7Ci0g
ICAgTXV0ZXhMb2NrZXIgbG9ja2VyKG1fYXVkaW9Db25zdW1lcnNMb2NrKTsKLSAgICBmb3IgKFZl
Y3RvcjxSZWZQdHI8QXVkaW9EZXN0aW5hdGlvbkNvbnN1bWVyPiA+OjppdGVyYXRvciBpdCA9IG1f
YXVkaW9Db25zdW1lcnMuYmVnaW4oKTsgaXQgIT0gbV9hdWRpb0NvbnN1bWVycy5lbmQoKTsgKytp
dCkKLSAgICAgICAgKCppdCktPmNvbnN1bWVBdWRpbyhidXMsIG51bWJlck9mRnJhbWVzKTsKKyAg
ICBmb3IgKFZlY3RvcjxPYnNlcnZlcio+OjppdGVyYXRvciBpID0gbV9vYnNlcnZlcnMuYmVnaW4o
KTsgaSAhPSBtX29ic2VydmVycy5lbmQoKTsgKytpKSB7CisgICAgICAgIGlmICghKCppKS0+c3Rv
cHBlZCgpKQorICAgICAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIC8vIFRoZXJlIGFyZSBu
byBtb3JlIGNvbnN1bWVycyBvZiB0aGlzIHNvdXJjZSdzIGRhdGEsIHNodXQgaXQgZG93biBhcyBh
cHByb3ByaWF0ZS4KKyAgICBzZXRSZWFkeVN0YXRlKEVuZGVkKTsKKworICAgIC8vIGh0dHA6Ly93
d3cudzMub3JnL1RSL21lZGlhY2FwdHVyZS1zdHJlYW1zLyN3aWRsLU1lZGlhU3RyZWFtVHJhY2st
c3RvcC12b2lkCisgICAgLy8gSWYgdGhlIGRhdGEgaXMgYmVpbmcgZ2VuZXJhdGVkIGZyb20gYSBs
aXZlIHNvdXJjZSAoZS5nLiwgYSBtaWNyb3Bob25lIG9yIGNhbWVyYSksIHRoZW4gdGhlIHVzZXIg
CisgICAgLy8gYWdlbnQgc2hvdWxkIHJlbW92ZSBhbnkgYWN0aXZlICJvbi1haXIiIGluZGljYXRv
ciBmb3IgdGhhdCBzb3VyY2UuIElmIHRoZSBkYXRhIGlzIGJlaW5nIAorICAgIC8vIGdlbmVyYXRl
ZCBmcm9tIGEgcHJlcmVjb3JkZWQgc291cmNlIChlLmcuIGEgdmlkZW8gZmlsZSksIGFueSByZW1h
aW5pbmcgY29udGVudCBpbiB0aGUgZmlsZSBpcyBpZ25vcmVkLgogfQogCiB9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRp
YVN0cmVhbVNvdXJjZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21l
ZGlhc3RyZWFtL01lZGlhU3RyZWFtU291cmNlLmgJKHJldmlzaW9uIDE1NzAxNikKKysrIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtU291cmNlLmgJKHdvcmtp
bmcgY29weSkKQEAgLTEsNiArMSw3IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDExIEVyaWNz
c29uIEFCLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2ds
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CkBAIC0zNiw2ICszNyw3IEBACiAKICNpbmNsdWRlICJBdWRpb0Rlc3RpbmF0aW9uQ29uc3VtZXIu
aCIKICNpbmNsdWRlICJNZWRpYUNvbnN0cmFpbnRzLmgiCisjaW5jbHVkZSAiTWVkaWFTdHJlYW1T
b3VyY2VDYXBhYmlsaXRpZXMuaCIKICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogI2luY2x1
ZGUgPHd0Zi9WZWN0b3IuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KQEAgLTQz
LDcyICs0NSw4MSBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBBdWRpb0J1czsKK2Ns
YXNzIE1lZGlhQ29uc3RyYWludHM7CiBjbGFzcyBNZWRpYVN0cmVhbURlc2NyaXB0b3I7CitzdHJ1
Y3QgTWVkaWFTdHJlYW1Tb3VyY2VTdGF0ZXM7CiAKIGNsYXNzIE1lZGlhU3RyZWFtU291cmNlIDog
cHVibGljIFJlZkNvdW50ZWQ8TWVkaWFTdHJlYW1Tb3VyY2U+IHsKIHB1YmxpYzoKICAgICBjbGFz
cyBPYnNlcnZlciB7CiAgICAgcHVibGljOgogICAgICAgICB2aXJ0dWFsIH5PYnNlcnZlcigpIHsg
fQotICAgICAgICB2aXJ0dWFsIHZvaWQgc291cmNlQ2hhbmdlZFN0YXRlKCkgPSAwOworICAgICAg
ICB2aXJ0dWFsIHZvaWQgc291cmNlU3RhdGVDaGFuZ2VkKCkgPSAwOworICAgICAgICB2aXJ0dWFs
IHZvaWQgc291cmNlTXV0ZWRDaGFuZ2VkKCkgPSAwOworICAgICAgICB2aXJ0dWFsIHZvaWQgc291
cmNlRW5hYmxlZENoYW5nZWQoKSA9IDA7CisgICAgICAgIHZpcnR1YWwgYm9vbCBzdG9wcGVkKCkg
PSAwOwogICAgIH07CiAKICAgICBlbnVtIFR5cGUgeyBBdWRpbywgVmlkZW8gfTsKICAgICBlbnVt
IFJlYWR5U3RhdGUgeyBOZXcgPSAwLCBMaXZlID0gMSwgRW5kZWQgPSAyIH07CiAKLSAgICBzdGF0
aWMgUGFzc1JlZlB0cjxNZWRpYVN0cmVhbVNvdXJjZT4gY3JlYXRlKGNvbnN0IFN0cmluZyYgaWQs
IFR5cGUsIGNvbnN0IFN0cmluZyYgbmFtZSwgUmVhZHlTdGF0ZSA9IE5ldywgYm9vbCByZXF1aXJl
c0NvbnN1bWVyID0gZmFsc2UpOworICAgIHZpcnR1YWwgfk1lZGlhU3RyZWFtU291cmNlKCkgeyB9
CiAKLSAgICBjb25zdCBTdHJpbmcmIGlkKCkgY29uc3QgeyByZXR1cm4gbV9pZDsgfQorICAgIHZp
cnR1YWwgYm9vbCBpc0F1ZGlvU3RyZWFtU291cmNlKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0K
KyAgICB2aXJ0dWFsIGJvb2wgdXNlSURGb3JUcmFja0lEKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7
IH0KKworICAgIHZvaWQgcmVzZXQoKTsKIAorICAgIGNvbnN0IFN0cmluZyYgaWQoKSBjb25zdCB7
IHJldHVybiBtX2lkOyB9CiAgICAgVHlwZSB0eXBlKCkgY29uc3QgeyByZXR1cm4gbV90eXBlOyB9
CiAgICAgY29uc3QgU3RyaW5nJiBuYW1lKCkgY29uc3QgeyByZXR1cm4gbV9uYW1lOyB9CiAKKyAg
ICB2aXJ0dWFsIFBhc3NSZWZQdHI8TWVkaWFTdHJlYW1Tb3VyY2VDYXBhYmlsaXRpZXM+IGNhcGFi
aWxpdGllcygpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGNvbnN0IE1lZGlhU3RyZWFtU291cmNl
U3RhdGVzJiBzdGF0ZXMoKSA9IDA7CisgICAgCiAgICAgdm9pZCBzZXRSZWFkeVN0YXRlKFJlYWR5
U3RhdGUpOwogICAgIFJlYWR5U3RhdGUgcmVhZHlTdGF0ZSgpIGNvbnN0IHsgcmV0dXJuIG1fcmVh
ZHlTdGF0ZTsgfQogCiAgICAgdm9pZCBhZGRPYnNlcnZlcihPYnNlcnZlciopOwogICAgIHZvaWQg
cmVtb3ZlT2JzZXJ2ZXIoT2JzZXJ2ZXIqKTsKIAotICAgIHZvaWQgc2V0Q29uc3RyYWludHMoUGFz
c1JlZlB0cjxNZWRpYUNvbnN0cmFpbnRzPiBjb25zdHJhaW50cykgeyBtX2NvbnN0cmFpbnRzID0g
Y29uc3RyYWludHM7IH0KLSAgICBNZWRpYUNvbnN0cmFpbnRzKiBjb25zdHJhaW50cygpIGNvbnN0
IHsgcmV0dXJuIG1fY29uc3RyYWludHMuZ2V0KCk7IH0KLQotICAgIGNvbnN0IFN0cmluZyYgZGV2
aWNlSWQoKSBjb25zdCB7IHJldHVybiBtX2RldmljZUlkOyB9Ci0gICAgdm9pZCBzZXREZXZpY2VJ
ZChjb25zdCBTdHJpbmcmIGRldmljZUlkKSB7IG1fZGV2aWNlSWQgPSBkZXZpY2VJZDsgfQorICAg
IHZvaWQgc2V0Q29uc3RyYWludHMoUGFzc1JlZlB0cjxNZWRpYUNvbnN0cmFpbnRzPik7CisgICAg
TWVkaWFDb25zdHJhaW50cyogY29uc3RyYWludHMoKSBjb25zdDsKIAogICAgIGJvb2wgZW5hYmxl
ZCgpIGNvbnN0IHsgcmV0dXJuIG1fZW5hYmxlZDsgfQotICAgIHZvaWQgc2V0RW5hYmxlZChib29s
IGVuYWJsZWQpIHsgbV9lbmFibGVkID0gZW5hYmxlZDsgfQorICAgIHZvaWQgc2V0RW5hYmxlZChi
b29sKTsKIAogICAgIGJvb2wgbXV0ZWQoKSBjb25zdCB7IHJldHVybiBtX211dGVkOyB9CiAgICAg
dm9pZCBzZXRNdXRlZChib29sKTsKLSAgICAKLSAgICB2b2lkIHNldEF1ZGlvRm9ybWF0KHNpemVf
dCBudW1iZXJPZkNoYW5uZWxzLCBmbG9hdCBzYW1wbGVSYXRlKTsKLSAgICB2b2lkIGNvbnN1bWVB
dWRpbyhBdWRpb0J1cyosIHNpemVfdCBudW1iZXJPZkZyYW1lcyk7CisKKyAgICBib29sIHJlYWRv
bmx5KCkgY29uc3Q7CisgICAgdm9pZCBzZXRSZWFkb25seShib29sIHJlYWRvbmx5KSB7IG1fcmVh
ZG9ubHkgPSByZWFkb25seTsgfQorCisgICAgYm9vbCByZW1vdGUoKSBjb25zdCB7IHJldHVybiBt
X3JlbW90ZTsgfQorICAgIHZvaWQgc2V0UmVtb3RlKGJvb2wgcmVtb3RlKSB7IG1fcmVtb3RlID0g
cmVtb3RlOyB9CisKKyAgICB2b2lkIHN0b3AoKTsKIAogICAgIE1lZGlhU3RyZWFtRGVzY3JpcHRv
ciogc3RyZWFtKCkgY29uc3QgeyByZXR1cm4gbV9zdHJlYW07IH0KICAgICB2b2lkIHNldFN0cmVh
bShNZWRpYVN0cmVhbURlc2NyaXB0b3IqKTsKLQotICAgIGJvb2wgcmVxdWlyZXNBdWRpb0NvbnN1
bWVyKCkgY29uc3QgeyByZXR1cm4gbV9yZXF1aXJlc0NvbnN1bWVyOyB9Ci0gICAgdm9pZCBhZGRB
dWRpb0NvbnN1bWVyKFBhc3NSZWZQdHI8QXVkaW9EZXN0aW5hdGlvbkNvbnN1bWVyPik7Ci0gICAg
Ym9vbCByZW1vdmVBdWRpb0NvbnN1bWVyKEF1ZGlvRGVzdGluYXRpb25Db25zdW1lciopOwotICAg
IGNvbnN0IFZlY3RvcjxSZWZQdHI8QXVkaW9EZXN0aW5hdGlvbkNvbnN1bWVyPiA+JiBhdWRpb0Nv
bnN1bWVycygpIGNvbnN0IHsgcmV0dXJuIG1fYXVkaW9Db25zdW1lcnM7IH0KKyAgICAKK3Byb3Rl
Y3RlZDoKKyAgICBNZWRpYVN0cmVhbVNvdXJjZShjb25zdCBTdHJpbmcmIGlkLCBUeXBlLCBjb25z
dCBTdHJpbmcmIG5hbWUpOwogCiBwcml2YXRlOgotICAgIE1lZGlhU3RyZWFtU291cmNlKGNvbnN0
IFN0cmluZyYgaWQsIFR5cGUsIGNvbnN0IFN0cmluZyYgbmFtZSwgUmVhZHlTdGF0ZSwgYm9vbCBy
ZXF1aXJlc0NvbnN1bWVyKTsKLQogICAgIFN0cmluZyBtX2lkOwogICAgIFR5cGUgbV90eXBlOwog
ICAgIFN0cmluZyBtX25hbWU7CiAgICAgUmVhZHlTdGF0ZSBtX3JlYWR5U3RhdGU7Ci0gICAgU3Ry
aW5nIG1fZGV2aWNlSWQ7CiAgICAgVmVjdG9yPE9ic2VydmVyKj4gbV9vYnNlcnZlcnM7Ci0gICAg
TXV0ZXggbV9hdWRpb0NvbnN1bWVyc0xvY2s7Ci0gICAgVmVjdG9yPFJlZlB0cjxBdWRpb0Rlc3Rp
bmF0aW9uQ29uc3VtZXI+PiBtX2F1ZGlvQ29uc3VtZXJzOwogICAgIFJlZlB0cjxNZWRpYUNvbnN0
cmFpbnRzPiBtX2NvbnN0cmFpbnRzOwogICAgIE1lZGlhU3RyZWFtRGVzY3JpcHRvciogbV9zdHJl
YW07CisgICAgTWVkaWFTdHJlYW1Tb3VyY2VTdGF0ZXMgbV9zdGF0ZXM7CiAKLSAgICBib29sIG1f
cmVxdWlyZXNDb25zdW1lcjsKICAgICBib29sIG1fZW5hYmxlZDsKICAgICBib29sIG1fbXV0ZWQ7
CisgICAgYm9vbCBtX3JlYWRvbmx5OworICAgIGJvb2wgbV9yZW1vdGU7CiB9OwogCiB0eXBlZGVm
IFZlY3RvcjxSZWZQdHI8TWVkaWFTdHJlYW1Tb3VyY2U+ID4gTWVkaWFTdHJlYW1Tb3VyY2VWZWN0
b3I7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYVN0cmVh
bVNvdXJjZUNhcGFiaWxpdGllcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtU291cmNlQ2FwYWJpbGl0aWVzLmgJKHJldmlzaW9u
IDApCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVNv
dXJjZUNhcGFiaWxpdGllcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTc1IEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVS
LCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIs
IElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisg
KiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjaWZuZGVmIE1lZGlhU3RyZWFtU291cmNlQ2FwYWJpbGl0aWVzX2gKKyNkZWZpbmUgTWVk
aWFTdHJlYW1Tb3VyY2VDYXBhYmlsaXRpZXNfaAorCisjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkK
KworI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgor
I2luY2x1ZGUgPHd0Zi90ZXh0L0F0b21pY1N0cmluZy5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7
CisKK3N0cnVjdCBNZWRpYVN0cmVhbVNvdXJjZVN0YXRlcyB7CitwdWJsaWM6CisgICAgZW51bSBT
b3VyY2VUeXBlIHsgTm9uZSwgQ2FtZXJhLCBNaWNyb3Bob25lIH07CisgICAgZW51bSBWaWRlb0Zh
Y2luZ01vZGUgeyBVc2VyLCBFbnZpcm9ubWVudCwgTGVmdCwgUmlnaHQgfTsKKworICAgIE1lZGlh
U3RyZWFtU291cmNlU3RhdGVzKCkKKyAgICAgICAgOiBzb3VyY2VUeXBlKE5vbmUpCisgICAgICAg
ICwgZmFjaW5nTW9kZShVc2VyKQorICAgICAgICAsIHdpZHRoKDApCisgICAgICAgICwgaGVpZ2h0
KDApCisgICAgICAgICwgZnJhbWVSYXRlKDApCisgICAgICAgICwgYXNwZWN0UmF0aW8oMCkKKyAg
ICAgICAgLCB2b2x1bWUoMCkKKyAgICB7CisgICAgfQorCisgICAgU291cmNlVHlwZSBzb3VyY2VU
eXBlOworICAgIEF0b21pY1N0cmluZyBzb3VyY2VJZDsKKyAgICBWaWRlb0ZhY2luZ01vZGUgZmFj
aW5nTW9kZTsKKyAgICB1bnNpZ25lZCBsb25nIHdpZHRoOworICAgIHVuc2lnbmVkIGxvbmcgaGVp
Z2h0OworICAgIGZsb2F0IGZyYW1lUmF0ZTsKKyAgICBmbG9hdCBhc3BlY3RSYXRpbzsKKyAgICB1
bnNpZ25lZCBsb25nIHZvbHVtZTsKKyAgICAKKyAgICBib29sIGhhc1ZpZGVvU291cmNlOworfTsK
KworY2xhc3MgTWVkaWFTdHJlYW1Tb3VyY2VDYXBhYmlsaXR5UmFuZ2UgeworcHVibGljOgorICAg
IAorICAgIE1lZGlhU3RyZWFtU291cmNlQ2FwYWJpbGl0eVJhbmdlKGZsb2F0IG1pbiwgZmxvYXQg
bWF4LCBib29sIHN1cHBvcnRlZCA9IHRydWUpCisgICAgICAgIDogbV90eXBlKEZsb2F0KQorICAg
IHsKKyAgICAgICAgbV9taW4uYXNGbG9hdCA9IG1pbjsKKyAgICAgICAgbV9tYXguYXNGbG9hdCA9
IG1heDsKKyAgICAgICAgbV9zdXBwb3J0ZWQgPSBzdXBwb3J0ZWQ7CisgICAgfQorICAgIAorICAg
IE1lZGlhU3RyZWFtU291cmNlQ2FwYWJpbGl0eVJhbmdlKHVuc2lnbmVkIGxvbmcgbWluLCB1bnNp
Z25lZCBsb25nIG1heCwgYm9vbCBzdXBwb3J0ZWQgPSB0cnVlKQorICAgICAgICA6IG1fdHlwZShV
TG9uZykKKyAgICB7CisgICAgICAgIG1fbWluLmFzVUxvbmcgPSBtaW47CisgICAgICAgIG1fbWF4
LmFzVUxvbmcgPSBtYXg7CisgICAgICAgIG1fc3VwcG9ydGVkID0gc3VwcG9ydGVkOworICAgIH0K
KyAgICAKKyAgICBNZWRpYVN0cmVhbVNvdXJjZUNhcGFiaWxpdHlSYW5nZSgpCisgICAgeworICAg
ICAgICBtX3R5cGUgPSBVbmRlZmluZWQ7CisgICAgICAgIG1fbWluLmFzVUxvbmcgPSAwOworICAg
ICAgICBtX21heC5hc1VMb25nID0gMDsKKyAgICAgICAgbV9zdXBwb3J0ZWQgPSBmYWxzZTsKKyAg
ICB9CisgICAgCisgICAgZW51bSBUeXBlIHsgVW5kZWZpbmVkLCBGbG9hdCwgVUxvbmcgfTsKKyAg
ICAKKyAgICB1bmlvbiBWYWx1ZVVuaW9uIHsKKyAgICAgICAgdW5zaWduZWQgbG9uZyBhc1VMb25n
OworICAgICAgICBmbG9hdCBhc0Zsb2F0OworICAgIH07CisgICAgCisgICAgY29uc3QgVmFsdWVV
bmlvbiYgbWluKCkgY29uc3QgeyByZXR1cm4gbV9taW47IH0KKyAgICBjb25zdCBWYWx1ZVVuaW9u
JiBtYXgoKSBjb25zdCB7IHJldHVybiBtX21heDsgfQorICAgIFR5cGUgdHlwZSgpIGNvbnN0IHsg
cmV0dXJuIG1fdHlwZTsgfQorICAgIGJvb2wgc3VwcG9ydGVkKCkgY29uc3QgeyByZXR1cm4gbV9z
dXBwb3J0ZWQ7IH0KKyAgICAKK3ByaXZhdGU6CisgICAgVmFsdWVVbmlvbiBtX21pbjsKKyAgICBW
YWx1ZVVuaW9uIG1fbWF4OworICAgIFR5cGUgbV90eXBlOworICAgIGJvb2wgbV9zdXBwb3J0ZWQ7
Cit9OworCitjbGFzcyBNZWRpYVN0cmVhbVNvdXJjZUNhcGFiaWxpdGllcyA6IHB1YmxpYyBSZWZD
b3VudGVkPE1lZGlhU3RyZWFtU291cmNlQ2FwYWJpbGl0aWVzPiB7CitwdWJsaWM6CisgICAgc3Rh
dGljIFBhc3NSZWZQdHI8TWVkaWFTdHJlYW1Tb3VyY2VDYXBhYmlsaXRpZXM+IGNyZWF0ZSgpCisg
ICAgeworICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IE1lZGlhU3RyZWFtU291cmNlQ2FwYWJp
bGl0aWVzKCkpOworICAgIH0KKworICAgIH5NZWRpYVN0cmVhbVNvdXJjZUNhcGFiaWxpdGllcygp
IHsgfQorCisgICAgY29uc3QgVmVjdG9yPE1lZGlhU3RyZWFtU291cmNlU3RhdGVzOjpTb3VyY2VU
eXBlPiYgc291cmNlVHlwZXMoKSB7IHJldHVybiBtX3NvdXJjZVR5cGU7IH0KKyAgICB2b2lkIGFk
ZFNvdXJjZVR5cGUoTWVkaWFTdHJlYW1Tb3VyY2VTdGF0ZXM6OlNvdXJjZVR5cGUgc291cmNlVHlw
ZSkKKyAgICB7CisgICAgICAgIGlmIChzb3VyY2VUeXBlID09IE1lZGlhU3RyZWFtU291cmNlU3Rh
dGVzOjpDYW1lcmEpCisgICAgICAgICAgICBtX3ZpZGVvU291cmNlID0gdHJ1ZTsKKyAgICAgICAg
bV9zb3VyY2VUeXBlLmFwcGVuZChzb3VyY2VUeXBlKTsKKyAgICB9CisKKyAgICBjb25zdCBWZWN0
b3I8QXRvbWljU3RyaW5nPiYgc291cmNlSWQoKSB7IHJldHVybiBtX3NvdXJjZUlkOyB9CisgICAg
dm9pZCBzZXRTb3VyY2VJZChjb25zdCBBdG9taWNTdHJpbmcmIGlkKSAgeyBtX3NvdXJjZUlkLnJl
c2VydmVDYXBhY2l0eSgxKTsgbV9zb3VyY2VJZC5pbnNlcnQoMCwgaWQpOyB9CisKKyAgICBjb25z
dCBWZWN0b3I8TWVkaWFTdHJlYW1Tb3VyY2VTdGF0ZXM6OlZpZGVvRmFjaW5nTW9kZT4mIGZhY2lu
Z01vZGVzKCkgeyByZXR1cm4gbV9mYWNpbmdNb2RlOyB9CisgICAgdm9pZCBhZGRGYWNpbmdNb2Rl
KE1lZGlhU3RyZWFtU291cmNlU3RhdGVzOjpWaWRlb0ZhY2luZ01vZGUgbW9kZSkgeyBtX2ZhY2lu
Z01vZGUuYXBwZW5kKG1vZGUpOyB9CisKKyAgICBjb25zdCBNZWRpYVN0cmVhbVNvdXJjZUNhcGFi
aWxpdHlSYW5nZSYgd2lkdGgoKSB7IHJldHVybiBtX3dpZHRoOyB9CisgICAgdm9pZCBzZXRXaWR0
aFJhbmdlKGNvbnN0IE1lZGlhU3RyZWFtU291cmNlQ2FwYWJpbGl0eVJhbmdlJiB3aWR0aCkgeyBt
X3dpZHRoID0gd2lkdGg7IH0KKworICAgIGNvbnN0IE1lZGlhU3RyZWFtU291cmNlQ2FwYWJpbGl0
eVJhbmdlJiBoZWlnaHQoKSB7IHJldHVybiBtX2hlaWdodDsgfQorICAgIHZvaWQgc2V0SGVpZ2h0
UmFuZ2UoY29uc3QgTWVkaWFTdHJlYW1Tb3VyY2VDYXBhYmlsaXR5UmFuZ2UmIGhlaWdodCkgeyBt
X2hlaWdodCA9IGhlaWdodDsgfQorCisgICAgY29uc3QgTWVkaWFTdHJlYW1Tb3VyY2VDYXBhYmls
aXR5UmFuZ2UmIGZyYW1lUmF0ZSgpIHsgcmV0dXJuIG1fZnJhbWVSYXRlOyB9CisgICAgdm9pZCBz
ZXRGcmFtZVJhdGVSYW5nZShjb25zdCBNZWRpYVN0cmVhbVNvdXJjZUNhcGFiaWxpdHlSYW5nZSYg
ZnJhbWVSYXRlKSB7IG1fZnJhbWVSYXRlID0gZnJhbWVSYXRlOyB9CisKKyAgICBjb25zdCBNZWRp
YVN0cmVhbVNvdXJjZUNhcGFiaWxpdHlSYW5nZSYgYXNwZWN0UmF0aW8oKSB7IHJldHVybiBtX2Fz
cGVjdFJhdGlvOyB9CisgICAgdm9pZCBzZXRBc3BlY3RSYXRpb1JhbmdlKGNvbnN0IE1lZGlhU3Ry
ZWFtU291cmNlQ2FwYWJpbGl0eVJhbmdlJiBhc3BlY3RSYXRpbykgeyBtX2FzcGVjdFJhdGlvID0g
YXNwZWN0UmF0aW87IH0KKworICAgIGNvbnN0IE1lZGlhU3RyZWFtU291cmNlQ2FwYWJpbGl0eVJh
bmdlJiB2b2x1bWUoKSB7IHJldHVybiBtX3ZvbHVtZTsgfQorICAgIHZvaWQgc2V0Vm9sdW1lUmFu
Z2UoY29uc3QgTWVkaWFTdHJlYW1Tb3VyY2VDYXBhYmlsaXR5UmFuZ2UmIHZvbHVtZSkgeyBtX3Zv
bHVtZSA9IHZvbHVtZTsgfQorCisgICAgYm9vbCBoYXNWaWRlb1NvdXJjZSgpIHsgcmV0dXJuIG1f
dmlkZW9Tb3VyY2U7IH0KKyAgICB2b2lkIHNldEhhc1ZpZGVvU291cmNlKGJvb2wgaXNWaWRlbykg
eyBtX3ZpZGVvU291cmNlID0gaXNWaWRlbzs7IH0KKworcHJpdmF0ZToKKyAgICBNZWRpYVN0cmVh
bVNvdXJjZUNhcGFiaWxpdGllcygpCisgICAgICAgIDogbV92aWRlb1NvdXJjZShmYWxzZSkKKyAg
ICB7CisgICAgfQorCisgICAgVmVjdG9yPEF0b21pY1N0cmluZz4gbV9zb3VyY2VJZDsKKyAgICBW
ZWN0b3I8TWVkaWFTdHJlYW1Tb3VyY2VTdGF0ZXM6OlNvdXJjZVR5cGU+IG1fc291cmNlVHlwZTsK
KyAgICBWZWN0b3I8TWVkaWFTdHJlYW1Tb3VyY2VTdGF0ZXM6OlZpZGVvRmFjaW5nTW9kZT4gbV9m
YWNpbmdNb2RlOworCisgICAgTWVkaWFTdHJlYW1Tb3VyY2VDYXBhYmlsaXR5UmFuZ2UgbV93aWR0
aDsKKyAgICBNZWRpYVN0cmVhbVNvdXJjZUNhcGFiaWxpdHlSYW5nZSBtX2hlaWdodDsKKyAgICBN
ZWRpYVN0cmVhbVNvdXJjZUNhcGFiaWxpdHlSYW5nZSBtX2ZyYW1lUmF0ZTsKKyAgICBNZWRpYVN0
cmVhbVNvdXJjZUNhcGFiaWxpdHlSYW5nZSBtX2FzcGVjdFJhdGlvOworICAgIE1lZGlhU3RyZWFt
U291cmNlQ2FwYWJpbGl0eVJhbmdlIG1fdm9sdW1lOworCisgICAgYm9vbCBtX3ZpZGVvU291cmNl
OworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gTWVkaWFTdHJlYW1T
b3VyY2VDYXBhYmlsaXRpZXNfaAorCisjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21lZGlhc3RyZWFtL2JsYWNrYmVycnkvTWVkaWFTdHJlYW1DZW50ZXJCbGFja0JlcnJ5LmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9ibGFj
a2JlcnJ5L01lZGlhU3RyZWFtQ2VudGVyQmxhY2tCZXJyeS5jcHAJKHJldmlzaW9uIDE1NzAxNikK
KysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2JsYWNrYmVycnkvTWVkaWFT
dHJlYW1DZW50ZXJCbGFja0JlcnJ5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzUsOCArMzUsMTAg
QEAKIAogI2luY2x1ZGUgIk1lZGlhU3RyZWFtQ2VudGVyQmxhY2tCZXJyeS5oIgogCisjaW5jbHVk
ZSAiTWVkaWFTdHJlYW1DcmVhdGlvbkNsaWVudC5oIgogI2luY2x1ZGUgIk1lZGlhU3RyZWFtRGVz
Y3JpcHRvci5oIgotI2luY2x1ZGUgIk1lZGlhU3RyZWFtU291cmNlc1F1ZXJ5Q2xpZW50LmgiCisj
aW5jbHVkZSAiTWVkaWFTdHJlYW1UcmFja1NvdXJjZXNSZXF1ZXN0Q2xpZW50LmgiCisjaW5jbHVk
ZSAiTm90SW1wbGVtZW50ZWQuaCIKICNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CkBAIC03MiwzMyArNzQsNiBAQCBib29sIE1lZGlhU3RyZWFtQ2VudGVy
QmxhY2tCZXJyeTo6Z2V0TWVkCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi12b2lkIE1lZGlhU3Ry
ZWFtQ2VudGVyQmxhY2tCZXJyeTo6ZGlkU2V0TWVkaWFTdHJlYW1UcmFja0VuYWJsZWQoTWVkaWFT
dHJlYW1Tb3VyY2UqKQotewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci19Ci0KLWJvb2wgTWVkaWFT
dHJlYW1DZW50ZXJCbGFja0JlcnJ5OjpkaWRBZGRNZWRpYVN0cmVhbVRyYWNrKE1lZGlhU3RyZWFt
U291cmNlKikKLXsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotICAgIHJldHVybiBmYWxzZTsKLX0K
LQotYm9vbCBNZWRpYVN0cmVhbUNlbnRlckJsYWNrQmVycnk6OmRpZFJlbW92ZU1lZGlhU3RyZWFt
VHJhY2soTWVkaWFTdHJlYW1Tb3VyY2UqKQotewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci0gICAg
cmV0dXJuIGZhbHNlOwotfQotCi12b2lkIE1lZGlhU3RyZWFtQ2VudGVyQmxhY2tCZXJyeTo6ZGlk
U3RvcExvY2FsTWVkaWFTdHJlYW0oTWVkaWFTdHJlYW1EZXNjcmlwdG9yKiBzdHJlYW0pCi17Ci0g
ICAgZW5kTG9jYWxNZWRpYVN0cmVhbShzdHJlYW0pOwotfQotCi12b2lkIE1lZGlhU3RyZWFtQ2Vu
dGVyQmxhY2tCZXJyeTo6ZGlkQ3JlYXRlTWVkaWFTdHJlYW0oTWVkaWFTdHJlYW1EZXNjcmlwdG9y
KikKLXsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotfQotCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CiAKICNlbmRpZiAvLyBFTkFCTEUoTUVESUFfU1RSRUFNKQpJbmRleDogU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWVkaWFzdHJlYW0vYmxhY2tiZXJyeS9NZWRpYVN0cmVhbUNlbnRlckJsYWNrQmVy
cnkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9i
bGFja2JlcnJ5L01lZGlhU3RyZWFtQ2VudGVyQmxhY2tCZXJyeS5oCShyZXZpc2lvbiAxNTcwMTYp
CisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9ibGFja2JlcnJ5L01lZGlh
U3RyZWFtQ2VudGVyQmxhY2tCZXJyeS5oCSh3b3JraW5nIGNvcHkpCkBAIC01MCwxNSArNTAsOSBA
QCBwdWJsaWM6CiAgICAgTWVkaWFTdHJlYW1DZW50ZXJCbGFja0JlcnJ5KCk7CiAgICAgfk1lZGlh
U3RyZWFtQ2VudGVyQmxhY2tCZXJyeSgpOwogCi0gICAgLy8gTWVkaWFTdHJlYW1DZW50ZXIKICAg
ICB2aXJ0dWFsIHZvaWQgdmFsaWRhdGVSZXF1ZXN0Q29uc3RyYWludHMoUGFzc1JlZlB0cjxNZWRp
YVN0cmVhbUNyZWF0aW9uQ2xpZW50PiwgUGFzc1JlZlB0cjxNZWRpYUNvbnN0cmFpbnRzPiBhdWRp
b0NvbnN0cmFpbnRzLCBQYXNzUmVmUHRyPE1lZGlhQ29uc3RyYWludHM+IHZpZGVvQ29uc3RyYWlu
dHMpOwogICAgIHZpcnR1YWwgdm9pZCBjcmVhdGVNZWRpYVN0cmVhbShQYXNzUmVmUHRyPE1lZGlh
U3RyZWFtQ3JlYXRpb25DbGllbnQ+LCBQYXNzUmVmUHRyPE1lZGlhQ29uc3RyYWludHM+IGF1ZGlv
Q29uc3RyYWludHMsIFBhc3NSZWZQdHI8TWVkaWFDb25zdHJhaW50cz4gdmlkZW9Db25zdHJhaW50
cyk7CiAgICAgdmlydHVhbCBib29sIGdldE1lZGlhU3RyZWFtVHJhY2tTb3VyY2VzKFBhc3NSZWZQ
dHI8TWVkaWFTdHJlYW1UcmFja1NvdXJjZXNSZXF1ZXN0Q2xpZW50PikgT1ZFUlJJREU7Ci0gICAg
dmlydHVhbCB2b2lkIGRpZFNldE1lZGlhU3RyZWFtVHJhY2tFbmFibGVkKE1lZGlhU3RyZWFtU291
cmNlKikgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCBib29sIGRpZEFkZE1lZGlhU3RyZWFtVHJhY2so
TWVkaWFTdHJlYW1Tb3VyY2UqKSBPVkVSUklERTsKLSAgICB2aXJ0dWFsIGJvb2wgZGlkUmVtb3Zl
TWVkaWFTdHJlYW1UcmFjayhNZWRpYVN0cmVhbVNvdXJjZSopIE9WRVJSSURFOwotICAgIHZpcnR1
YWwgdm9pZCBkaWRTdG9wTG9jYWxNZWRpYVN0cmVhbShNZWRpYVN0cmVhbURlc2NyaXB0b3IqKSBP
VkVSUklERTsKLSAgICB2aXJ0dWFsIHZvaWQgZGlkQ3JlYXRlTWVkaWFTdHJlYW0oTWVkaWFTdHJl
YW1EZXNjcmlwdG9yKikgT1ZFUlJJREU7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvTWVkaWFT
dHJlYW1DZW50ZXJHU3RyZWFtZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21lZGlhc3RyZWFtL2dzdHJlYW1lci9NZWRpYVN0cmVhbUNlbnRlckdTdHJlYW1lci5j
cHAJKHJldmlzaW9uIDE1NzAxNikKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3Ry
ZWFtL2dzdHJlYW1lci9NZWRpYVN0cmVhbUNlbnRlckdTdHJlYW1lci5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTM1LDcgKzM1LDExIEBACiAKICNpbmNsdWRlICJNZWRpYVN0cmVhbUNlbnRlckdTdHJl
YW1lci5oIgogCisjaW5jbHVkZSAiTWVkaWFTdHJlYW1DcmVhdGlvbkNsaWVudC5oIgogI2luY2x1
ZGUgIk1lZGlhU3RyZWFtRGVzY3JpcHRvci5oIgorI2luY2x1ZGUgIk1lZGlhU3RyZWFtU291cmNl
Q2FwYWJpbGl0aWVzLmgiCisjaW5jbHVkZSAiTWVkaWFTdHJlYW1Tb3VyY2VTdGF0ZXMuaCIKKyNp
bmNsdWRlICJNZWRpYVN0cmVhbVRyYWNrU291cmNlc1JlcXVlc3RDbGllbnQuaCIKICNpbmNsdWRl
ICJOb3RJbXBsZW1lbnRlZC5oIgogI2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+CiAKQEAgLTcy
LDMzICs3Niw2IEBAIGJvb2wgTWVkaWFTdHJlYW1DZW50ZXJHU3RyZWFtZXI6OmdldE1lZGkKICAg
ICByZXR1cm4gZmFsc2U7CiB9CiAKLXZvaWQgTWVkaWFTdHJlYW1DZW50ZXJHU3RyZWFtZXI6OmRp
ZFNldE1lZGlhU3RyZWFtVHJhY2tFbmFibGVkKE1lZGlhU3RyZWFtU291cmNlKikKLXsKLSAgICBu
b3RJbXBsZW1lbnRlZCgpOwotfQotCi1ib29sIE1lZGlhU3RyZWFtQ2VudGVyR1N0cmVhbWVyOjpk
aWRBZGRNZWRpYVN0cmVhbVRyYWNrKE1lZGlhU3RyZWFtU291cmNlKikKLXsKLSAgICBub3RJbXBs
ZW1lbnRlZCgpOwotICAgIHJldHVybiBmYWxzZTsKLX0KLQotYm9vbCBNZWRpYVN0cmVhbUNlbnRl
ckdTdHJlYW1lcjo6ZGlkUmVtb3ZlTWVkaWFTdHJlYW1UcmFjayhNZWRpYVN0cmVhbVNvdXJjZSop
Ci17Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLSAgICByZXR1cm4gZmFsc2U7Ci19Ci0KLXZvaWQg
TWVkaWFTdHJlYW1DZW50ZXJHU3RyZWFtZXI6OmRpZFN0b3BMb2NhbE1lZGlhU3RyZWFtKE1lZGlh
U3RyZWFtRGVzY3JpcHRvciogc3RyZWFtKQotewotICAgIGVuZExvY2FsTWVkaWFTdHJlYW0oc3Ry
ZWFtKTsKLX0KLQotdm9pZCBNZWRpYVN0cmVhbUNlbnRlckdTdHJlYW1lcjo6ZGlkQ3JlYXRlTWVk
aWFTdHJlYW0oTWVkaWFTdHJlYW1EZXNjcmlwdG9yKikKLXsKLSAgICBub3RJbXBsZW1lbnRlZCgp
OwotfQotCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBFTkFCTEUoTUVESUFf
U1RSRUFNKQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vZ3N0cmVh
bWVyL01lZGlhU3RyZWFtQ2VudGVyR1N0cmVhbWVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vZ3N0cmVhbWVyL01lZGlhU3RyZWFtQ2VudGVyR1N0
cmVhbWVyLmgJKHJldmlzaW9uIDE1NzAxNikKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21l
ZGlhc3RyZWFtL2dzdHJlYW1lci9NZWRpYVN0cmVhbUNlbnRlckdTdHJlYW1lci5oCSh3b3JraW5n
IGNvcHkpCkBAIC01MCwxNSArNTAsOSBAQCBwdWJsaWM6CiAgICAgTWVkaWFTdHJlYW1DZW50ZXJH
U3RyZWFtZXIoKTsKICAgICB+TWVkaWFTdHJlYW1DZW50ZXJHU3RyZWFtZXIoKTsKIAotICAgIC8v
IE1lZGlhU3RyZWFtQ2VudGVyCiAgICAgdmlydHVhbCB2b2lkIHZhbGlkYXRlUmVxdWVzdENvbnN0
cmFpbnRzKFBhc3NSZWZQdHI8TWVkaWFTdHJlYW1DcmVhdGlvbkNsaWVudD4sIFBhc3NSZWZQdHI8
TWVkaWFDb25zdHJhaW50cz4gYXVkaW9Db25zdHJhaW50cywgUGFzc1JlZlB0cjxNZWRpYUNvbnN0
cmFpbnRzPiB2aWRlb0NvbnN0cmFpbnRzKTsKICAgICB2aXJ0dWFsIHZvaWQgY3JlYXRlTWVkaWFT
dHJlYW0oUGFzc1JlZlB0cjxNZWRpYVN0cmVhbUNyZWF0aW9uQ2xpZW50PiwgUGFzc1JlZlB0cjxN
ZWRpYUNvbnN0cmFpbnRzPiBhdWRpb0NvbnN0cmFpbnRzLCBQYXNzUmVmUHRyPE1lZGlhQ29uc3Ry
YWludHM+IHZpZGVvQ29uc3RyYWludHMpOwogICAgIHZpcnR1YWwgYm9vbCBnZXRNZWRpYVN0cmVh
bVRyYWNrU291cmNlcyhQYXNzUmVmUHRyPE1lZGlhU3RyZWFtVHJhY2tTb3VyY2VzUmVxdWVzdENs
aWVudD4pIE9WRVJSSURFOwotICAgIHZpcnR1YWwgdm9pZCBkaWRTZXRNZWRpYVN0cmVhbVRyYWNr
RW5hYmxlZChNZWRpYVN0cmVhbVNvdXJjZSopIE9WRVJSSURFOwotICAgIHZpcnR1YWwgYm9vbCBk
aWRBZGRNZWRpYVN0cmVhbVRyYWNrKE1lZGlhU3RyZWFtU291cmNlKikgT1ZFUlJJREU7Ci0gICAg
dmlydHVhbCBib29sIGRpZFJlbW92ZU1lZGlhU3RyZWFtVHJhY2soTWVkaWFTdHJlYW1Tb3VyY2Uq
KSBPVkVSUklERTsKLSAgICB2aXJ0dWFsIHZvaWQgZGlkU3RvcExvY2FsTWVkaWFTdHJlYW0oTWVk
aWFTdHJlYW1EZXNjcmlwdG9yKikgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCB2b2lkIGRpZENyZWF0
ZU1lZGlhU3RyZWFtKE1lZGlhU3RyZWFtRGVzY3JpcHRvciopIE9WRVJSSURFOwogfTsKIAogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFz
dHJlYW0vbWFjL01lZGlhU3RyZWFtQ2VudGVyTWFjLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvTWVkaWFTdHJlYW1DZW50ZXJNYWMuY3Bw
CShyZXZpc2lvbiAxNTcwMTYpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVh
bS9tYWMvTWVkaWFTdHJlYW1DZW50ZXJNYWMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03MywzMyAr
NzMsNiBAQCBib29sIE1lZGlhU3RyZWFtQ2VudGVyTWFjOjpnZXRNZWRpYVN0cmVhCiAgICAgcmV0
dXJuIGZhbHNlOwogfQogCi12b2lkIE1lZGlhU3RyZWFtQ2VudGVyTWFjOjpkaWRTZXRNZWRpYVN0
cmVhbVRyYWNrRW5hYmxlZChNZWRpYVN0cmVhbVNvdXJjZSopCi17Ci0gICAgbm90SW1wbGVtZW50
ZWQoKTsKLX0KLQotYm9vbCBNZWRpYVN0cmVhbUNlbnRlck1hYzo6ZGlkQWRkTWVkaWFTdHJlYW1U
cmFjayhNZWRpYVN0cmVhbVNvdXJjZSopCi17Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLSAgICBy
ZXR1cm4gZmFsc2U7Ci19Ci0KLWJvb2wgTWVkaWFTdHJlYW1DZW50ZXJNYWM6OmRpZFJlbW92ZU1l
ZGlhU3RyZWFtVHJhY2soTWVkaWFTdHJlYW1Tb3VyY2UqKQotewotICAgIG5vdEltcGxlbWVudGVk
KCk7Ci0gICAgcmV0dXJuIGZhbHNlOwotfQotCi12b2lkIE1lZGlhU3RyZWFtQ2VudGVyTWFjOjpk
aWRTdG9wTG9jYWxNZWRpYVN0cmVhbShNZWRpYVN0cmVhbURlc2NyaXB0b3IqIHN0cmVhbSkKLXsK
LSAgICBlbmRMb2NhbE1lZGlhU3RyZWFtKHN0cmVhbSk7Ci19Ci0KLXZvaWQgTWVkaWFTdHJlYW1D
ZW50ZXJNYWM6OmRpZENyZWF0ZU1lZGlhU3RyZWFtKE1lZGlhU3RyZWFtRGVzY3JpcHRvciopCi17
Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLX0KLQogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAj
ZW5kaWYgLy8gRU5BQkxFKE1FRElBX1NUUkVBTSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21lZGlhc3RyZWFtL21hYy9NZWRpYVN0cmVhbUNlbnRlck1hYy5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9NZWRpYVN0cmVhbUNlbnRl
ck1hYy5oCShyZXZpc2lvbiAxNTcwMTYpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRp
YXN0cmVhbS9tYWMvTWVkaWFTdHJlYW1DZW50ZXJNYWMuaAkod29ya2luZyBjb3B5KQpAQCAtMzUs
MjkgKzM1LDIwIEBACiAKICNpbmNsdWRlICJNZWRpYVN0cmVhbUNlbnRlci5oIgogCisjaW5jbHVk
ZSAiTWVkaWFTdHJlYW1Tb3VyY2UuaCIKICNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgogI2lu
Y2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNs
YXNzIE1lZGlhU3RyZWFtRGVzY3JpcHRvcjsKLWNsYXNzIE1lZGlhU3RyZWFtU291cmNlOwotY2xh
c3MgTWVkaWFTdHJlYW1Tb3VyY2VzUXVlcnlDbGllbnQ7Ci0KIGNsYXNzIE1lZGlhU3RyZWFtQ2Vu
dGVyTWFjIEZJTkFMIDogcHVibGljIE1lZGlhU3RyZWFtQ2VudGVyIHsKIHB1YmxpYzoKICAgICBN
ZWRpYVN0cmVhbUNlbnRlck1hYygpOwogICAgIH5NZWRpYVN0cmVhbUNlbnRlck1hYygpOwogCi0g
ICAgLy8gTWVkaWFTdHJlYW1DZW50ZXIKICAgICB2aXJ0dWFsIHZvaWQgdmFsaWRhdGVSZXF1ZXN0
Q29uc3RyYWludHMoUGFzc1JlZlB0cjxNZWRpYVN0cmVhbUNyZWF0aW9uQ2xpZW50PiwgUGFzc1Jl
ZlB0cjxNZWRpYUNvbnN0cmFpbnRzPiBhdWRpb0NvbnN0cmFpbnRzLCBQYXNzUmVmUHRyPE1lZGlh
Q29uc3RyYWludHM+IHZpZGVvQ29uc3RyYWludHMpOwogICAgIHZpcnR1YWwgdm9pZCBjcmVhdGVN
ZWRpYVN0cmVhbShQYXNzUmVmUHRyPE1lZGlhU3RyZWFtQ3JlYXRpb25DbGllbnQ+LCBQYXNzUmVm
UHRyPE1lZGlhQ29uc3RyYWludHM+IGF1ZGlvQ29uc3RyYWludHMsIFBhc3NSZWZQdHI8TWVkaWFD
b25zdHJhaW50cz4gdmlkZW9Db25zdHJhaW50cyk7CiAgICAgdmlydHVhbCBib29sIGdldE1lZGlh
U3RyZWFtVHJhY2tTb3VyY2VzKFBhc3NSZWZQdHI8TWVkaWFTdHJlYW1UcmFja1NvdXJjZXNSZXF1
ZXN0Q2xpZW50PikgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCB2b2lkIGRpZFNldE1lZGlhU3RyZWFt
VHJhY2tFbmFibGVkKE1lZGlhU3RyZWFtU291cmNlKikgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCBi
b29sIGRpZEFkZE1lZGlhU3RyZWFtVHJhY2soTWVkaWFTdHJlYW1Tb3VyY2UqKSBPVkVSUklERTsK
LSAgICB2aXJ0dWFsIGJvb2wgZGlkUmVtb3ZlTWVkaWFTdHJlYW1UcmFjayhNZWRpYVN0cmVhbVNv
dXJjZSopIE9WRVJSSURFOwotICAgIHZpcnR1YWwgdm9pZCBkaWRTdG9wTG9jYWxNZWRpYVN0cmVh
bShNZWRpYVN0cmVhbURlc2NyaXB0b3IqKSBPVkVSUklERTsKLSAgICB2aXJ0dWFsIHZvaWQgZGlk
Q3JlYXRlTWVkaWFTdHJlYW0oTWVkaWFTdHJlYW1EZXNjcmlwdG9yKikgT1ZFUlJJREU7CiB9Owog
CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
b2NrL01vY2tNZWRpYVN0cmVhbUNlbnRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbW9jay9Nb2NrTWVkaWFTdHJlYW1DZW50ZXIuY3BwCShyZXZpc2lvbiAxNTcw
MTYpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01vY2tNZWRpYVN0cmVhbUNlbnRl
ci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMyLDEyICszMiw5NyBAQAogI2luY2x1ZGUgIk1lZGlh
U3RyZWFtLmgiCiAjaW5jbHVkZSAiTWVkaWFTdHJlYW1DcmVhdGlvbkNsaWVudC5oIgogI2luY2x1
ZGUgIk1lZGlhU3RyZWFtRGVzY3JpcHRvci5oIgorI2luY2x1ZGUgIk1lZGlhU3RyZWFtU291cmNl
LmgiCisjaW5jbHVkZSAiTWVkaWFTdHJlYW1Tb3VyY2VDYXBhYmlsaXRpZXMuaCIKICNpbmNsdWRl
ICJNZWRpYVN0cmVhbVRyYWNrLmgiCiAjaW5jbHVkZSAiTWVkaWFTdHJlYW1UcmFja1NvdXJjZXNS
ZXF1ZXN0Q2xpZW50LmgiCi0jaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKKyNpbmNsdWRlIDx3
dGYvTmV2ZXJEZXN0cm95ZWQuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitjbGFzcyBNb2Nr
U291cmNlIDogcHVibGljIE1lZGlhU3RyZWFtU291cmNlIHsKK3B1YmxpYzoKKyAgICBNb2NrU291
cmNlKGNvbnN0IEF0b21pY1N0cmluZyYgaWQsIGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSwgTWVk
aWFTdHJlYW1Tb3VyY2U6OlR5cGUgdHlwZSkKKyAgICAgICAgOiBNZWRpYVN0cmVhbVNvdXJjZShp
ZCwgdHlwZSwgbmFtZSkKKyAgICB7CisgICAgfQorCisgICAgdmlydHVhbCB+TW9ja1NvdXJjZSgp
IHsgfQorCisgICAgdmlydHVhbCBQYXNzUmVmUHRyPE1lZGlhU3RyZWFtU291cmNlQ2FwYWJpbGl0
aWVzPiBjYXBhYmlsaXRpZXMoKSBjb25zdCB7IHJldHVybiBtX2NhcGFiaWxpdGllczsgfQorICAg
IHZpcnR1YWwgY29uc3QgTWVkaWFTdHJlYW1Tb3VyY2VTdGF0ZXMmIHN0YXRlcygpIHsgcmV0dXJu
IG1fY3VycmVudFN0YXRlczsgfQorCisgICAgUmVmUHRyPE1lZGlhU3RyZWFtU291cmNlQ2FwYWJp
bGl0aWVzPiBtX2NhcGFiaWxpdGllczsKKyAgICBNZWRpYVN0cmVhbVNvdXJjZVN0YXRlcyBtX2N1
cnJlbnRTdGF0ZXM7Cit9OworICAgIAordHlwZWRlZiBIYXNoTWFwPFN0cmluZywgUmVmUHRyPE1v
Y2tTb3VyY2U+PiBNb2NrU291cmNlTWFwOworCitzdGF0aWMgTW9ja1NvdXJjZU1hcCYgbW9ja1Nv
dXJjZU1hcCgpCit7CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChNb2NrU291cmNlTWFwLCBtb2Nr
U291cmNlTWFwLCAoKSk7CisgICAgcmV0dXJuIG1vY2tTb3VyY2VNYXA7Cit9CisKK3N0YXRpYyBj
b25zdCBBdG9taWNTdHJpbmcmIG1vY2tBdWRpb1NvdXJjZUlEKCkKK3sKKyAgICBzdGF0aWMgTmV2
ZXJEZXN0cm95ZWQ8QXRvbWljU3RyaW5nPiBpZCgiMjM5YzI0YjEtMmIxNS0xMWUzLTgyMjQtMDgw
MDIwMGM5YTY2IiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CisgICAgcmV0
dXJuIGlkOworfQorCitzdGF0aWMgY29uc3QgQXRvbWljU3RyaW5nJiBtb2NrVmlkZW9Tb3VyY2VJ
RCgpCit7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEF0b21pY1N0cmluZz4gaWQoIjIzOWMy
NGIwLTJiMTUtMTFlMy04MjI0LTA4MDAyMDBjOWE2NiIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0
RnJvbUxpdGVyYWwpOworICAgIHJldHVybiBpZDsKK30KKworc3RhdGljIHZvaWQgaW5pdGlhbGl6
ZU1vY2tTb3VyY2VzKCkKK3sKKyAgICBSZWZQdHI8TW9ja1NvdXJjZT4gbW9ja1NvdXJjZTEgPSBh
ZG9wdFJlZihuZXcgTW9ja1NvdXJjZShtb2NrVmlkZW9Tb3VyY2VJRCgpLCAiTW9jayB2aWRlbyBk
ZXZpY2UiLCBNZWRpYVN0cmVhbVNvdXJjZTo6VmlkZW8pKTsKKyAgICBtb2NrU291cmNlMS0+bV9j
YXBhYmlsaXRpZXMgPSBNZWRpYVN0cmVhbVNvdXJjZUNhcGFiaWxpdGllczo6Y3JlYXRlKCk7Cisg
ICAgbW9ja1NvdXJjZTEtPm1fY2FwYWJpbGl0aWVzLT5zZXRTb3VyY2VJZChtb2NrU291cmNlMS0+
aWQoKSk7CisgICAgbW9ja1NvdXJjZTEtPm1fY2FwYWJpbGl0aWVzLT5hZGRTb3VyY2VUeXBlKE1l
ZGlhU3RyZWFtU291cmNlU3RhdGVzOjpDYW1lcmEpOworICAgIG1vY2tTb3VyY2UxLT5tX2NhcGFi
aWxpdGllcy0+YWRkU291cmNlVHlwZShNZWRpYVN0cmVhbVNvdXJjZVN0YXRlczo6TWljcm9waG9u
ZSk7CisgICAgbW9ja1NvdXJjZTEtPm1fY2FwYWJpbGl0aWVzLT5hZGRGYWNpbmdNb2RlKE1lZGlh
U3RyZWFtU291cmNlU3RhdGVzOjpVc2VyKTsKKyAgICBtb2NrU291cmNlMS0+bV9jYXBhYmlsaXRp
ZXMtPmFkZEZhY2luZ01vZGUoTWVkaWFTdHJlYW1Tb3VyY2VTdGF0ZXM6OkVudmlyb25tZW50KTsK
KyAgICBtb2NrU291cmNlMS0+bV9jYXBhYmlsaXRpZXMtPnNldFdpZHRoUmFuZ2UoTWVkaWFTdHJl
YW1Tb3VyY2VDYXBhYmlsaXR5UmFuZ2UoMzIwVUwsIDE5MjBVTCwgdHJ1ZSkpOworICAgIG1vY2tT
b3VyY2UxLT5tX2NhcGFiaWxpdGllcy0+c2V0SGVpZ2h0UmFuZ2UoTWVkaWFTdHJlYW1Tb3VyY2VD
YXBhYmlsaXR5UmFuZ2UoMjQwVUwsIDEwODBVTCwgdHJ1ZSkpOworICAgIG1vY2tTb3VyY2UxLT5t
X2NhcGFiaWxpdGllcy0+c2V0RnJhbWVSYXRlUmFuZ2UoTWVkaWFTdHJlYW1Tb3VyY2VDYXBhYmls
aXR5UmFuZ2UoMTUuMGYsIDYwLjBmLCB0cnVlKSk7CisgICAgbW9ja1NvdXJjZTEtPm1fY2FwYWJp
bGl0aWVzLT5zZXRBc3BlY3RSYXRpb1JhbmdlKE1lZGlhU3RyZWFtU291cmNlQ2FwYWJpbGl0eVJh
bmdlKDQgLyAzLjBmLCAxNiAvIDkuMGYsIHRydWUpKTsKKyAgICBtb2NrU291cmNlMS0+bV9jYXBh
YmlsaXRpZXMtPnNldFZvbHVtZVJhbmdlKE1lZGlhU3RyZWFtU291cmNlQ2FwYWJpbGl0eVJhbmdl
KDEwVUwsIDkwVUwsIHRydWUpKTsKKworICAgIG1vY2tTb3VyY2UxLT5tX2N1cnJlbnRTdGF0ZXMu
c291cmNlVHlwZSA9IE1lZGlhU3RyZWFtU291cmNlU3RhdGVzOjpDYW1lcmE7CisgICAgbW9ja1Nv
dXJjZTEtPm1fY3VycmVudFN0YXRlcy5zb3VyY2VJZCA9IG1vY2tTb3VyY2UxLT5pZCgpOworICAg
IG1vY2tTb3VyY2UxLT5tX2N1cnJlbnRTdGF0ZXMuZmFjaW5nTW9kZSA9IE1lZGlhU3RyZWFtU291
cmNlU3RhdGVzOjpVc2VyOworICAgIG1vY2tTb3VyY2UxLT5tX2N1cnJlbnRTdGF0ZXMud2lkdGgg
PSAxOTIwOworICAgIG1vY2tTb3VyY2UxLT5tX2N1cnJlbnRTdGF0ZXMuaGVpZ2h0ID0gMTA4MDsK
KyAgICBtb2NrU291cmNlMS0+bV9jdXJyZW50U3RhdGVzLmZyYW1lUmF0ZSA9IDMwOworICAgIG1v
Y2tTb3VyY2UxLT5tX2N1cnJlbnRTdGF0ZXMuYXNwZWN0UmF0aW8gPSAxNiAvIDkuMGY7CisgICAg
bW9ja1NvdXJjZTEtPm1fY3VycmVudFN0YXRlcy52b2x1bWUgPSA3MDsKKyAgICBtb2NrU291cmNl
TWFwKCkuYWRkKG1vY2tTb3VyY2UxLT5pZCgpLCBtb2NrU291cmNlMS5yZWxlYXNlKCkpOworCisg
ICAgUmVmUHRyPE1vY2tTb3VyY2U+IG1vY2tTb3VyY2UyID0gYWRvcHRSZWYobmV3IE1vY2tTb3Vy
Y2UobW9ja0F1ZGlvU291cmNlSUQoKSwgIk1vY2sgYXVkaW8gZGV2aWNlIiwgTWVkaWFTdHJlYW1T
b3VyY2U6OkF1ZGlvKSk7CisgICAgbW9ja1NvdXJjZTItPm1fY2FwYWJpbGl0aWVzID0gTWVkaWFT
dHJlYW1Tb3VyY2VDYXBhYmlsaXRpZXM6OmNyZWF0ZSgpOworICAgIG1vY2tTb3VyY2UyLT5tX2Nh
cGFiaWxpdGllcy0+c2V0U291cmNlSWQobW9ja1NvdXJjZTItPmlkKCkpOworICAgIG1vY2tTb3Vy
Y2UyLT5tX2NhcGFiaWxpdGllcy0+c2V0Vm9sdW1lUmFuZ2UoTWVkaWFTdHJlYW1Tb3VyY2VDYXBh
YmlsaXR5UmFuZ2UoMFVMLCAxMDBVTCwgdHJ1ZSkpOworCisgICAgbW9ja1NvdXJjZTItPm1fY3Vy
cmVudFN0YXRlcy5zb3VyY2VUeXBlID0gTWVkaWFTdHJlYW1Tb3VyY2VTdGF0ZXM6Ok1pY3JvcGhv
bmU7CisgICAgbW9ja1NvdXJjZTItPm1fY3VycmVudFN0YXRlcy5zb3VyY2VJZCA9IG1vY2tTb3Vy
Y2UyLT5pZCgpOworICAgIG1vY2tTb3VyY2UyLT5tX2N1cnJlbnRTdGF0ZXMudm9sdW1lID0gNTA7
CisgICAgbW9ja1NvdXJjZU1hcCgpLmFkZChtb2NrU291cmNlMi0+aWQoKSwgbW9ja1NvdXJjZTIu
cmVsZWFzZSgpKTsKK30KKwordm9pZCBNb2NrTWVkaWFTdHJlYW1DZW50ZXI6OnJlZ2lzdGVyTW9j
a01lZGlhU3RyZWFtQ2VudGVyKCkKK3sKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKE1vY2tNZWRp
YVN0cmVhbUNlbnRlciwgY2VudGVyLCAoKSk7CisgICAgc3RhdGljIGJvb2wgcmVnaXN0ZXJlZCA9
IGZhbHNlOworICAgIGlmICghcmVnaXN0ZXJlZCkgeworICAgICAgICByZWdpc3RlcmVkID0gdHJ1
ZTsKKyAgICAgICAgTWVkaWFTdHJlYW1DZW50ZXI6OnNldFNoYXJlZFN0cmVhbUNlbnRlcigmY2Vu
dGVyKTsKKyAgICAgICAgaW5pdGlhbGl6ZU1vY2tTb3VyY2VzKCk7CisgICAgfQorfQorCiBzdGF0
aWMgYm9vbCBpc1N1cHBvcnRlZE1vY2tDb25zdHJhaW50KGNvbnN0IFN0cmluZyYgY29uc3RyYWlu
dE5hbWUpCiB7CiAgICAgcmV0dXJuIG5vdEZvdW5kICE9IGNvbnN0cmFpbnROYW1lLmZpbmQoIl9h
bmRfc3VwcG9ydGVkXyIpOwpAQCAtNzUsMTYgKzE2MCw2IEBAIHN0YXRpYyBTdHJpbmcgdmVyaWZ5
Q29uc3RyYWludHMoTWVkaWFDb24KICAgICByZXR1cm4gZW1wdHlTdHJpbmcoKTsKIH0KIAotdm9p
ZCBNb2NrTWVkaWFTdHJlYW1DZW50ZXI6OnJlZ2lzdGVyTW9ja01lZGlhU3RyZWFtQ2VudGVyKCkK
LXsKLSAgICBERUZJTkVfU1RBVElDX0xPQ0FMKE1vY2tNZWRpYVN0cmVhbUNlbnRlciwgY2VudGVy
LCAoKSk7Ci0gICAgc3RhdGljIGJvb2wgcmVnaXN0ZXJlZCA9IGZhbHNlOwotICAgIGlmICghcmVn
aXN0ZXJlZCkgewotICAgICAgICByZWdpc3RlcmVkID0gdHJ1ZTsKLSAgICAgICAgTWVkaWFTdHJl
YW1DZW50ZXI6OnNldFNoYXJlZFN0cmVhbUNlbnRlcigmY2VudGVyKTsKLSAgICB9Ci19Ci0KIHZv
aWQgTW9ja01lZGlhU3RyZWFtQ2VudGVyOjp2YWxpZGF0ZVJlcXVlc3RDb25zdHJhaW50cyhQYXNz
UmVmUHRyPE1lZGlhU3RyZWFtQ3JlYXRpb25DbGllbnQ+IHBycFF1ZXJ5Q2xpZW50LCBQYXNzUmVm
UHRyPE1lZGlhQ29uc3RyYWludHM+IGF1ZGlvQ29uc3RyYWludHMsIFBhc3NSZWZQdHI8TWVkaWFD
b25zdHJhaW50cz4gdmlkZW9Db25zdHJhaW50cykKIHsKICAgICBSZWZQdHI8TWVkaWFTdHJlYW1D
cmVhdGlvbkNsaWVudD4gY2xpZW50ID0gcHJwUXVlcnlDbGllbnQ7CkBAIC0xMTgsNiArMTkzLDcg
QEAgdm9pZCBNb2NrTWVkaWFTdHJlYW1DZW50ZXI6OmNyZWF0ZU1lZGlhUwogICAgIAogICAgIFZl
Y3RvcjxSZWZQdHI8TWVkaWFTdHJlYW1Tb3VyY2U+PiBhdWRpb1NvdXJjZXM7CiAgICAgVmVjdG9y
PFJlZlB0cjxNZWRpYVN0cmVhbVNvdXJjZT4+IHZpZGVvU291cmNlczsKKyAgICBNb2NrU291cmNl
TWFwJiBtYXAgPSBtb2NrU291cmNlTWFwKCk7CiAKICAgICBpZiAoYXVkaW9Db25zdHJhaW50cykg
ewogICAgICAgICBTdHJpbmcgaW52YWxpZFF1ZXJ5ID0gdmVyaWZ5Q29uc3RyYWludHMoYXVkaW9D
b25zdHJhaW50cy5nZXQoKSk7CkBAIC0xMjcsNyArMjAzLDExIEBAIHZvaWQgTW9ja01lZGlhU3Ry
ZWFtQ2VudGVyOjpjcmVhdGVNZWRpYVMKICAgICAgICAgfQogCiAgICAgICAgIGlmIChhdWRpb0Nv
bnN0cmFpbnRzKSB7Ci0gICAgICAgICAgICBSZWZQdHI8TWVkaWFTdHJlYW1Tb3VyY2U+IGF1ZGlv
U291cmNlID0gTWVkaWFTdHJlYW1Tb3VyY2U6OmNyZWF0ZShlbXB0eVN0cmluZygpLCBNZWRpYVN0
cmVhbVNvdXJjZTo6QXVkaW8sICJNb2NrIGF1ZGlvIGRldmljZSIpOworICAgICAgICAgICAgTW9j
a1NvdXJjZU1hcDo6aXRlcmF0b3IgaXQgPSBtYXAuZmluZChtb2NrQXVkaW9Tb3VyY2VJRCgpKTsK
KyAgICAgICAgICAgIEFTU0VSVChpdCAhPSBtYXAuZW5kKCkpOworCisgICAgICAgICAgICBSZWZQ
dHI8TWVkaWFTdHJlYW1Tb3VyY2U+IGF1ZGlvU291cmNlID0gaXQtPnZhbHVlOworICAgICAgICAg
ICAgYXVkaW9Tb3VyY2UtPnJlc2V0KCk7CiAgICAgICAgICAgICBhdWRpb1NvdXJjZS0+c2V0UmVh
ZHlTdGF0ZShNZWRpYVN0cmVhbVNvdXJjZTo6TGl2ZSk7CiAgICAgICAgICAgICBhdWRpb1NvdXJj
ZXMuYXBwZW5kKGF1ZGlvU291cmNlLnJlbGVhc2UoKSk7CiAgICAgICAgIH0KQEAgLTE0MSw3ICsy
MjEsMTEgQEAgdm9pZCBNb2NrTWVkaWFTdHJlYW1DZW50ZXI6OmNyZWF0ZU1lZGlhUwogICAgICAg
ICB9CiAKICAgICAgICAgaWYgKHZpZGVvQ29uc3RyYWludHMpIHsKLSAgICAgICAgICAgIFJlZlB0
cjxNZWRpYVN0cmVhbVNvdXJjZT4gdmlkZW9Tb3VyY2UgPSBNZWRpYVN0cmVhbVNvdXJjZTo6Y3Jl
YXRlKGVtcHR5U3RyaW5nKCksIE1lZGlhU3RyZWFtU291cmNlOjpWaWRlbywgIk1vY2sgdmlkZW8g
ZGV2aWNlIik7CisgICAgICAgICAgICBNb2NrU291cmNlTWFwOjppdGVyYXRvciBpdCA9IG1hcC5m
aW5kKG1vY2tWaWRlb1NvdXJjZUlEKCkpOworICAgICAgICAgICAgQVNTRVJUKGl0ICE9IG1hcC5l
bmQoKSk7CisKKyAgICAgICAgICAgIFJlZlB0cjxNZWRpYVN0cmVhbVNvdXJjZT4gdmlkZW9Tb3Vy
Y2UgPSBpdC0+dmFsdWU7CisgICAgICAgICAgICB2aWRlb1NvdXJjZS0+cmVzZXQoKTsKICAgICAg
ICAgICAgIHZpZGVvU291cmNlLT5zZXRSZWFkeVN0YXRlKE1lZGlhU3RyZWFtU291cmNlOjpMaXZl
KTsKICAgICAgICAgICAgIHZpZGVvU291cmNlcy5hcHBlbmQodmlkZW9Tb3VyY2UucmVsZWFzZSgp
KTsKICAgICAgICAgfQpAQCAtMTUzLDM5ICsyMzcsMjAgQEAgdm9pZCBNb2NrTWVkaWFTdHJlYW1D
ZW50ZXI6OmNyZWF0ZU1lZGlhUwogYm9vbCBNb2NrTWVkaWFTdHJlYW1DZW50ZXI6OmdldE1lZGlh
U3RyZWFtVHJhY2tTb3VyY2VzKFBhc3NSZWZQdHI8TWVkaWFTdHJlYW1UcmFja1NvdXJjZXNSZXF1
ZXN0Q2xpZW50PiBwcnBDbGllbnQpCiB7CiAgICAgUmVmUHRyPE1lZGlhU3RyZWFtVHJhY2tTb3Vy
Y2VzUmVxdWVzdENsaWVudD4gcmVxdWVzdENsaWVudCA9IHBycENsaWVudDsKLSAgICBWZWN0b3I8
UmVmUHRyPFRyYWNrU291cmNlSW5mbz4+IHNvdXJjZXMoMik7CisgICAgVmVjdG9yPFJlZlB0cjxU
cmFja1NvdXJjZUluZm8+PiBzb3VyY2VzOwogCi0gICAgc291cmNlc1swXSA9IFRyYWNrU291cmNl
SW5mbzo6Y3JlYXRlKCJNb2NrX2F1ZGlvX2RldmljZV9JRCIsIFRyYWNrU291cmNlSW5mbzo6QXVk
aW8sICJNb2NrIGF1ZGlvIGRldmljZSIpOwotICAgIHNvdXJjZXNbMV0gPSBUcmFja1NvdXJjZUlu
Zm86OmNyZWF0ZSgiTW9ja192aWRlb19kZXZpY2VfSUQiLCBUcmFja1NvdXJjZUluZm86OlZpZGVv
LCAiTW9jayB2aWRlbyBkZXZpY2UiKTsKLQotICAgIHJlcXVlc3RDbGllbnQtPmRpZENvbXBsZXRl
UmVxdWVzdChzb3VyY2VzKTsKLSAgICByZXR1cm4gdHJ1ZTsKLX0KKyAgICBNb2NrU291cmNlTWFw
JiBtYXAgPSBtb2NrU291cmNlTWFwKCk7CisgICAgTW9ja1NvdXJjZU1hcDo6aXRlcmF0b3IgZW5k
ID0gbWFwLmVuZCgpOworICAgIGZvciAoTW9ja1NvdXJjZU1hcDo6aXRlcmF0b3IgaXQgPSBtYXAu
YmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KSB7CisgICAgICAgIE1vY2tTb3VyY2UqIHNvdXJjZSA9
IGl0LT52YWx1ZS5nZXQoKTsKIAotdm9pZCBNb2NrTWVkaWFTdHJlYW1DZW50ZXI6OmRpZFNldE1l
ZGlhU3RyZWFtVHJhY2tFbmFibGVkKE1lZGlhU3RyZWFtU291cmNlKiBzb3VyY2UpCi17Ci0gICAg
c291cmNlLT5zZXRSZWFkeVN0YXRlKE1lZGlhU3RyZWFtU291cmNlOjpMaXZlKTsKLX0KLQotYm9v
bCBNb2NrTWVkaWFTdHJlYW1DZW50ZXI6OmRpZEFkZE1lZGlhU3RyZWFtVHJhY2soTWVkaWFTdHJl
YW1Tb3VyY2UqKQotewotICAgIHJldHVybiB0cnVlOwotfQorICAgICAgICBzb3VyY2VzWzBdID0g
VHJhY2tTb3VyY2VJbmZvOjpjcmVhdGUoc291cmNlLT5pZCgpLCBzb3VyY2UtPnR5cGUoKSA9PSBN
ZWRpYVN0cmVhbVNvdXJjZTo6VmlkZW8gPyBUcmFja1NvdXJjZUluZm86OlZpZGVvIDogVHJhY2tT
b3VyY2VJbmZvOjpBdWRpbywgc291cmNlLT5uYW1lKCkpOworICAgIH0KIAotYm9vbCBNb2NrTWVk
aWFTdHJlYW1DZW50ZXI6OmRpZFJlbW92ZU1lZGlhU3RyZWFtVHJhY2soTWVkaWFTdHJlYW1Tb3Vy
Y2UqKQoteworICAgIHJlcXVlc3RDbGllbnQtPmRpZENvbXBsZXRlUmVxdWVzdChzb3VyY2VzKTsK
ICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotdm9pZCBNb2NrTWVkaWFTdHJlYW1DZW50ZXI6OmRpZFN0
b3BMb2NhbE1lZGlhU3RyZWFtKE1lZGlhU3RyZWFtRGVzY3JpcHRvciogc3RyZWFtKQotewotICAg
IGVuZExvY2FsTWVkaWFTdHJlYW0oc3RyZWFtKTsKLX0KLQotdm9pZCBNb2NrTWVkaWFTdHJlYW1D
ZW50ZXI6OmRpZENyZWF0ZU1lZGlhU3RyZWFtKE1lZGlhU3RyZWFtRGVzY3JpcHRvciopCi17Ci19
Ci0KIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEVOQUJMRShNRURJQV9TVFJF
QU0pCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01vY2tNZWRpYVN0cmVhbUNl
bnRlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTW9ja01l
ZGlhU3RyZWFtQ2VudGVyLmgJKHJldmlzaW9uIDE1NzAxNikKKysrIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21vY2svTW9ja01lZGlhU3RyZWFtQ2VudGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTQw
LDExICs0MCw2IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgdmFsaWRhdGVSZXF1ZXN0Q29u
c3RyYWludHMoUGFzc1JlZlB0cjxNZWRpYVN0cmVhbUNyZWF0aW9uQ2xpZW50PiwgUGFzc1JlZlB0
cjxNZWRpYUNvbnN0cmFpbnRzPiBhdWRpb0NvbnN0cmFpbnRzLCBQYXNzUmVmUHRyPE1lZGlhQ29u
c3RyYWludHM+IHZpZGVvQ29uc3RyYWludHMpOwogICAgIHZpcnR1YWwgdm9pZCBjcmVhdGVNZWRp
YVN0cmVhbShQYXNzUmVmUHRyPE1lZGlhU3RyZWFtQ3JlYXRpb25DbGllbnQ+LCBQYXNzUmVmUHRy
PE1lZGlhQ29uc3RyYWludHM+IGF1ZGlvQ29uc3RyYWludHMsIFBhc3NSZWZQdHI8TWVkaWFDb25z
dHJhaW50cz4gdmlkZW9Db25zdHJhaW50cyk7CiAgICAgdmlydHVhbCBib29sIGdldE1lZGlhU3Ry
ZWFtVHJhY2tTb3VyY2VzKFBhc3NSZWZQdHI8TWVkaWFTdHJlYW1UcmFja1NvdXJjZXNSZXF1ZXN0
Q2xpZW50PikgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCB2b2lkIGRpZFNldE1lZGlhU3RyZWFtVHJh
Y2tFbmFibGVkKE1lZGlhU3RyZWFtU291cmNlKikgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCBib29s
IGRpZEFkZE1lZGlhU3RyZWFtVHJhY2soTWVkaWFTdHJlYW1Tb3VyY2UqKSBPVkVSUklERTsKLSAg
ICB2aXJ0dWFsIGJvb2wgZGlkUmVtb3ZlTWVkaWFTdHJlYW1UcmFjayhNZWRpYVN0cmVhbVNvdXJj
ZSopIE9WRVJSSURFOwotICAgIHZpcnR1YWwgdm9pZCBkaWRTdG9wTG9jYWxNZWRpYVN0cmVhbShN
ZWRpYVN0cmVhbURlc2NyaXB0b3IqKSBPVkVSUklERTsKLSAgICB2aXJ0dWFsIHZvaWQgZGlkQ3Jl
YXRlTWVkaWFTdHJlYW0oTWVkaWFTdHJlYW1EZXNjcmlwdG9yKikgT1ZFUlJJREU7CiAKIHByaXZh
dGU6CiAgICAgTW9ja01lZGlhU3RyZWFtQ2VudGVyKCkgeyB9CkluZGV4OiBMYXlvdXRUZXN0cy9D
aGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAx
NTcwMTYpCisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyAr
MSwxMiBAQAorMjAxMy0xMC0wNiAgRXJpYyBDYXJsc29uICA8ZXJpYy5jYXJsc29uQGFwcGxlLmNv
bT4KKworICAgICAgICBbTWVkaWFTdHJlYW0gQVBJXSB1cGRhdGUgTWVkaWFTdHJlYW1UcmFjayBv
YmplY3QgdG8gbWF0Y2ggc3BlYworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTIxOTQwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgKiBmYXN0L21lZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJhY2suaHRtbDoKKwog
MjAxMy0xMC0wNiAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgogCiAgICAgICAgIFVu
aWZpZWQgdGVzdCBpbmZyYXN0cnVjdHVyZSB2aWEgdGhlIGpzYyBzaGVsbApJbmRleDogTGF5b3V0
VGVzdHMvZmFzdC9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVRyYWNrLmh0bWwKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gTGF5b3V0VGVzdHMvZmFzdC9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVRyYWNrLmh0bWwJKHJl
dmlzaW9uIDE1NzAxNikKKysrIExheW91dFRlc3RzL2Zhc3QvbWVkaWFzdHJlYW0vTWVkaWFTdHJl
YW1UcmFjay5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xLDc5ICsxLDE3MCBAQAogPCFET0NUWVBF
IEhUTUwgUFVCTElDICItLy9JRVRGLy9EVEQgSFRNTC8vRU4iPgogPGh0bWw+Ci08aGVhZD4KLTxz
Y3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgotPC9o
ZWFkPgotPGJvZHk+Ci08cCBpZD0iZGVzY3JpcHRpb24iPjwvcD4KLTxkaXYgaWQ9ImNvbnNvbGUi
PjwvZGl2PgotPHNjcmlwdD4KLWRlc2NyaXB0aW9uKCJUZXN0cyBNZWRpYVN0cmVhbVRyYWNrIGNh
bGxiYWNrcy4iKTsKLQotLy8gTm90ZSB0aGF0IHRoZSBiZWxvdyBiZWhhdmlvdXIgZG9lc24ndCBy
ZWZsZWN0IGhvdyBpdCB3b3JrcyBvdXRzaWRlIG9mIExheW91dFRlc3RzLgotLy8gVGhlIHVuZGVy
bHlpbmcgbW9jayBpcyBtb2RpZmllZCB0byB0cmlnZ2VyIHRoZSBldmVudHMgd2hlbiBjZXJ0YWlu
IGZ1bmN0aW9ucyBhcmUgY2FsbGVkLgotLy8gVGhpcyBtb2RpZmllZCBiZWhhdmlvdXIgYWxsb3dz
IHVzIHRvIHRlc3QgdGhlIE1lZGlhU3RyZWFtVHJhY2sgY2xhc3MgcHJvcGVybHkuCi0KLXZhciBz
dHJlYW07Ci12YXIgdHJhY2s7Ci0KLWZ1bmN0aW9uIGVycm9yKCkgewotICAgIHRlc3RGYWlsZWQo
J1N0cmVhbSBnZW5lcmF0aW9uIGZhaWxlZC4nKTsKLSAgICBmaW5pc2hKU1Rlc3QoKTsKLX0KLQot
ZnVuY3Rpb24gZ2V0VXNlck1lZGlhKGNvbnN0cmFpbnRzLCBjYWxsYmFjaykgewotICAgIHRyeSB7
Ci0gICAgICAgIG5hdmlnYXRvci53ZWJraXRHZXRVc2VyTWVkaWEoY29uc3RyYWludHMsIGNhbGxi
YWNrLCBlcnJvcik7Ci0gICAgfSBjYXRjaCAoZSkgewotICAgICAgICB0ZXN0RmFpbGVkKCd3ZWJr
aXRHZXRVc2VyTWVkaWEgdGhyZXcgZXhjZXB0aW9uIDonICsgZSk7Ci0gICAgICAgIGZpbmlzaEpT
VGVzdCgpOwotICAgIH0KLX0KLQotZnVuY3Rpb24gb25UcmFja0VuZGVkKCkgewotICAgIHRlc3RQ
YXNzZWQoJ1RyYWNrIG9uZW5kZWQgY2FsbGJhY2sgc3VjY2VlZGVkLicpOwotCi0gICAgc2hvdWxk
QmVFcXVhbFRvU3RyaW5nKCd0cmFjay5yZWFkeVN0YXRlJywgJ2VuZGVkJyk7Ci0KLSAgICBmaW5p
c2hKU1Rlc3QoKTsKLX0KLQotZnVuY3Rpb24gb25UcmFja1VubXV0ZSgpIHsKLSAgICB0ZXN0UGFz
c2VkKCdUcmFjayBvbnVubXV0ZSBjYWxsYmFjayBzdWNjZWVkZWQuJyk7Ci0KLSAgICBzaG91bGRC
ZUVxdWFsVG9TdHJpbmcoJ3RyYWNrLnJlYWR5U3RhdGUnLCAnbGl2ZScpOwotCi0gICAgc3RyZWFt
LnN0b3AoKTsKLX0KLQotZnVuY3Rpb24gb25UcmFja011dGUoKSB7Ci0gICAgdGVzdFBhc3NlZCgn
VHJhY2sgb25tdXRlIGNhbGxiYWNrIHN1Y2NlZWRlZC4nKTsKLQotICAgIHNob3VsZEJlRXF1YWxU
b1N0cmluZygndHJhY2sucmVhZHlTdGF0ZScsICdtdXRlZCcpOwotCi0gICAgdHJhY2suZW5hYmxl
ZCA9IHRydWU7Ci19Ci0KLWZ1bmN0aW9uIGdvdFN0cmVhbShzKSB7Ci0gICAgdGVzdFBhc3NlZCgn
Z2V0VXNlck1lZGlhIHN1Y2NlZWRlZC4nKTsKLQotICAgIHN0cmVhbSA9IHM7Ci0gICAgdHJhY2sg
PSBzdHJlYW0uZ2V0VmlkZW9UcmFja3MoKVswXTsKLQotICAgIHNob3VsZEJlRXF1YWxUb1N0cmlu
ZygndHJhY2sucmVhZHlTdGF0ZScsICdsaXZlJyk7Ci0KLSAgICB0cmFjay5vbnVubXV0ZSA9IG9u
VHJhY2tVbm11dGU7Ci0gICAgdHJhY2sub25tdXRlID0gb25UcmFja011dGU7Ci0gICAgdHJhY2su
b25lbmRlZCA9IG9uVHJhY2tFbmRlZDsKLQotICAgIHRyYWNrLmVuYWJsZWQgPSBmYWxzZTsKLX0K
LQotZ2V0VXNlck1lZGlhKHthdWRpbzp0cnVlLCB2aWRlbzp0cnVlfSwgZ290U3RyZWFtKTsKLQot
d2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOwotd2luZG93LnN1Y2Nlc3NmdWxseVBhcnNlZCA9
IHRydWU7Ci08L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1w
b3N0LmpzIj48L3NjcmlwdD4KLTwvYm9keT4KKyAgICA8aGVhZD4KKyAgICAgICAgPHNjcmlwdCBz
cmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+CisgICAgICAgIDxz
Y3JpcHQ+CisgICAgICAgICAgICB2YXIgbWVkaWFTdHJlYW07CisgICAgICAgICAgICB2YXIgdmlk
ZW9UcmFjazsKKyAgICAgICAgICAgIHZhciB2aWRlb1RyYWNrMjsKKyAgICAgICAgICAgIHZhciBh
dWRpb1RyYWNrOworICAgICAgICAgICAgCisgICAgICAgICAgICBmdW5jdGlvbiBlcnJvcigpCisg
ICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgnU3RyZWFtIGdlbmVyYXRp
b24gZmFpbGVkLicpOworICAgICAgICAgICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAgICAgICAg
ICAgfQorCisgICAgICAgICAgICBmdW5jdGlvbiBnZXRVc2VyTWVkaWEoY29uc3RyYWludHMsIGNh
bGxiYWNrKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHRyeSB7CisgICAgICAgICAg
ICAgICAgICAgIG5hdmlnYXRvci53ZWJraXRHZXRVc2VyTWVkaWEoY29uc3RyYWludHMsIGNhbGxi
YWNrLCBlcnJvcik7CisgICAgICAgICAgICAgICAgfSBjYXRjaCAoZSkgeworICAgICAgICAgICAg
ICAgICAgICB0ZXN0RmFpbGVkKCd3ZWJraXRHZXRVc2VyTWVkaWEgdGhyZXcgZXhjZXB0aW9uIDon
ICsgZSk7CisgICAgICAgICAgICAgICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAgICAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIAorICAgICAgICAgICAgZnVuY3Rpb24g
b25UcmFja0VuZGVkKCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICB0ZXN0UGFzc2Vk
KCdUcmFjayBvbmVuZGVkIGNhbGxiYWNrIHN1Y2NlZWRlZC4nKTsKKyAgICAgICAgICAgICAgICBz
aG91bGRCZUVxdWFsVG9TdHJpbmcoJ3ZpZGVvVHJhY2sucmVhZHlTdGF0ZScsICdlbmRlZCcpOwor
ICAgICAgICAgICAgICAgIGRlYnVnKCIiKTsKKyAgICAgICAgICAgICAgICBmaW5pc2hKU1Rlc3Qo
KTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgZnVuY3Rpb24gb25UcmFja1N0YXJ0ZWQo
KQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoJ1RyYWNrIG9uc3Rh
cnRlZCBjYWxsYmFjayBzdWNjZWVkZWQuJyk7CisgICAgICAgICAgICAgICAgc2hvdWxkQmVFcXVh
bFRvU3RyaW5nKCd2aWRlb1RyYWNrLnJlYWR5U3RhdGUnLCAnbGl2ZScpOworICAgICAgICAgICAg
fQorCisgICAgICAgICAgICBmdW5jdGlvbiBvblRyYWNrT3ZlckNvbnN0cmFpbmVkKCkKKyAgICAg
ICAgICAgIHsKKyAgICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCdUcmFjayBvbm92ZXJjb25zdHJh
aW5lZCBjYWxsYmFjayBzdWNjZWVkZWQuJyk7CisgICAgICAgICAgICAgICAgZmluaXNoSlNUZXN0
KCk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGZ1bmN0aW9uIG9uVHJhY2tVbm11dGUo
KQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoJ1RyYWNrIG9udW5t
dXRlIGNhbGxiYWNrIHN1Y2NlZWRlZC4nKTsKKyAgICAgICAgICAgICAgICBzaG91bGRCZUVxdWFs
VG9TdHJpbmcoJ3ZpZGVvVHJhY2sucmVhZHlTdGF0ZScsICdsaXZlJyk7CisgICAgICAgICAgICAg
ICAgdmlkZW9UcmFjay5zdG9wKCk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGZ1bmN0
aW9uIG9uVHJhY2tNdXRlKCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICB0ZXN0UGFz
c2VkKCdUcmFjayBvbm11dGUgY2FsbGJhY2sgc3VjY2VlZGVkLicpOworICAgICAgICAgICAgICAg
IHNob3VsZEJlRXF1YWwoJ3ZpZGVvVHJhY2subXV0ZWQnLCB0cnVlKTsKKyAgICAgICAgICAgIH0K
KworICAgICAgICAgICAgZnVuY3Rpb24gbG9nQ2FwYWJpbGl0eVJhbmdlKG5hbWUsIHJhbmdlKQor
ICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGRlYnVnKCIgICIgKyBuYW1lKTsKKyAgICAg
ICAgICAgICAgICBkZWJ1ZygiICAgbWluIDogIiArIHJhbmdlLm1pbik7CisgICAgICAgICAgICAg
ICAgZGVidWcoIiAgIG1heCA6ICIgKyByYW5nZS5tYXgpOworICAgICAgICAgICAgICAgIGRlYnVn
KCIgICBzdXBwb3J0ZWQgOiAiICsgcmFuZ2Uuc3VwcG9ydGVkKTsKKyAgICAgICAgICAgIH0KKwor
ICAgICAgICAgICAgZnVuY3Rpb24gbG9nQ2FwYWJpbGl0eUxpc3QobmFtZSwgbGlzdCkKKyAgICAg
ICAgICAgIHsKKyAgICAgICAgICAgICAgICBkZWJ1ZygiICAiICsgbmFtZSk7CisgICAgICAgICAg
ICAgICAgZm9yIChpID0gMDsgaSA8IGxpc3QubGVuZ3RoOyBpKyspCisgICAgICAgICAgICAgICAg
ZGVidWcoIiAgICAiICsgaSArICIgOiAiICsgbGlzdFtpXSk7CisgICAgICAgICAgICB9CisKKyAg
ICAgICAgICAgIGZ1bmN0aW9uIGNoZWNrQ2FwYWJpbGl0aWVzKHRyYWNrKQorICAgICAgICAgICAg
eworICAgICAgICAgICAgICAgIGRlYnVnKCJjaGVja2luZyB0cmFjay5jYXBhYmlsaXRpZXMoKSIp
OworICAgICAgICAgICAgICAgIGNhcGFiaWxpdGllcyA9IHRyYWNrLmNhcGFiaWxpdGllcygpOwor
ICAgICAgICAgICAgICAgIGxvZ0NhcGFiaWxpdHlMaXN0KCJzb3VyY2VJZCIsIGNhcGFiaWxpdGll
cy5zb3VyY2VJZCk7CisgICAgICAgICAgICAgICAgaWYgKHRyYWNrLmtpbmQgPT0gInZpZGVvIikg
eworICAgICAgICAgICAgICAgICAgICBsb2dDYXBhYmlsaXR5TGlzdCgic291cmNlVHlwZSIsIGNh
cGFiaWxpdGllcy5zb3VyY2VUeXBlKTsKKyAgICAgICAgICAgICAgICAgICAgbG9nQ2FwYWJpbGl0
eVJhbmdlKCJ3aWR0aCIsIGNhcGFiaWxpdGllcy53aWR0aCk7CisgICAgICAgICAgICAgICAgICAg
IGxvZ0NhcGFiaWxpdHlSYW5nZSgiaGVpZ2h0IiwgY2FwYWJpbGl0aWVzLmhlaWdodCk7CisgICAg
ICAgICAgICAgICAgICAgIGxvZ0NhcGFiaWxpdHlSYW5nZSgiZnJhbWVSYXRlIiwgY2FwYWJpbGl0
aWVzLmZyYW1lUmF0ZSk7CisgICAgICAgICAgICAgICAgICAgIGxvZ0NhcGFiaWxpdHlSYW5nZSgi
YXNwZWN0UmF0aW8iLCBjYXBhYmlsaXRpZXMuYXNwZWN0UmF0aW8pOworICAgICAgICAgICAgICAg
ICAgICBsb2dDYXBhYmlsaXR5TGlzdCgiZmFjaW5nTW9kZSIsIGNhcGFiaWxpdGllcy5mYWNpbmdN
b2RlKTsKKyAgICAgICAgICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgICAgICAgICAgbG9nQ2Fw
YWJpbGl0eVJhbmdlKCJ2b2x1bWUiLCBjYXBhYmlsaXRpZXMudm9sdW1lKTsKKyAgICAgICAgICAg
IH0KKworICAgICAgICAgICAgZnVuY3Rpb24gY2hlY2tTdGF0ZXModHJhY2spCisgICAgICAgICAg
ICB7CisgICAgICAgICAgICAgICAgZGVidWcoImNoZWNraW5nIHRyYWNrLnN0YXRlcygpIik7Cisg
ICAgICAgICAgICAgICAgY2FwYWJpbGl0aWVzID0gdHJhY2suY2FwYWJpbGl0aWVzKCk7CisgICAg
ICAgICAgICAgICAgc3RhdGVzID0gdHJhY2suc3RhdGVzKCk7CisgICAgICAgICAgICAgICAgc2hv
dWxkQmUoJ3N0YXRlcy5zb3VyY2VJZCcsICdjYXBhYmlsaXRpZXMuc291cmNlSWRbMF0nKTsKKyAg
ICAgICAgICAgICAgICBpZiAodHJhY2sua2luZCA9PSAidmlkZW8iKSB7CisgICAgICAgICAgICAg
ICAgICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygnc3RhdGVzLnNvdXJjZVR5cGUnLCAnY2FtZXJh
Jyk7CisgICAgICAgICAgICAgICAgICAgIGRlYnVnKCIgIHdpZHRoIDogIiArIHN0YXRlcy53aWR0
aCk7CisgICAgICAgICAgICAgICAgICAgIGRlYnVnKCIgIGhlaWdodCA6ICIgKyBzdGF0ZXMuaGVp
Z2h0KTsKKyAgICAgICAgICAgICAgICAgICAgZGVidWcoIiAgZnJhbWVSYXRlIDogIiArIHN0YXRl
cy5mcmFtZVJhdGUpOworICAgICAgICAgICAgICAgICAgICBkZWJ1ZygiICBhc3BlY3RSYXRpbyA6
ICIgKyBzdGF0ZXMuYXNwZWN0UmF0aW8pOworICAgICAgICAgICAgICAgICAgICBkZWJ1ZygiICBm
YWNpbmdNb2RlIDogIiArIHN0YXRlcy5mYWNpbmdNb2RlKTsKKyAgICAgICAgICAgICAgICB9IGVs
c2UgeworICAgICAgICAgICAgICAgICAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoJ3N0YXRlcy5z
b3VyY2VUeXBlJywgJ21pY3JvcGhvbmUnKTsKKyAgICAgICAgICAgICAgICAgICAgZGVidWcoIiAg
dm9sdW1lIDogIiArIHN0YXRlcy52b2x1bWUpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgIAorICAgICAgICAgICAgZnVuY3Rpb24gY2hlY2tUcmFjayh0KQor
ICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHRyYWNrID0gdDsKKyAgICAgICAgICAgICAg
ICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoJ3RyYWNrLnJlYWR5U3RhdGUnLCAnbGl2ZScpOworICAg
ICAgICAgICAgICAgIGNoZWNrQ2FwYWJpbGl0aWVzKHRyYWNrKTsKKyAgICAgICAgICAgICAgICBj
aGVja1N0YXRlcyh0cmFjayk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGZ1bmN0aW9u
IGdvdFN0cmVhbShzdHJlYW0pCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgbWVkaWFT
dHJlYW0gPSBzdHJlYW07CisgICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgnZ2V0VXNlck1lZGlh
IHN1Y2NlZWRlZC4nKTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIGRlYnVnKCIiKTsK
KyAgICAgICAgICAgICAgICBldmFsQW5kTG9nKCJ2aWRlb1RyYWNrID0gbWVkaWFTdHJlYW0uZ2V0
VmlkZW9UcmFja3MoKVswXSIpOworICAgICAgICAgICAgICAgIGNoZWNrVHJhY2sodmlkZW9UcmFj
ayk7CisKKyAgICAgICAgICAgICAgICBkZWJ1ZygiIik7CisgICAgICAgICAgICAgICAgZXZhbEFu
ZExvZygiYXVkaW9UcmFjayA9IG1lZGlhU3RyZWFtLmdldEF1ZGlvVHJhY2tzKClbMF0iKTsKKyAg
ICAgICAgICAgICAgICBjaGVja1RyYWNrKGF1ZGlvVHJhY2spOworCisgICAgICAgICAgICAgICAg
dmlkZW9UcmFjay5vbm11dGUgPSBvblRyYWNrTXV0ZTsKKyAgICAgICAgICAgICAgICB2aWRlb1Ry
YWNrLm9udW5tdXRlID0gb25UcmFja1VubXV0ZTsKKyAgICAgICAgICAgICAgICB2aWRlb1RyYWNr
Lm9uZW5kZWQgPSBvblRyYWNrRW5kZWQ7CisgICAgICAgICAgICAgICAgdmlkZW9UcmFjay5vbnN0
YXJ0ZWQgPSBvblRyYWNrU3RhcnRlZDsKKyAgICAgICAgICAgICAgICB2aWRlb1RyYWNrLm9ub3Zl
cmNvbnN0cmFpbmVkID0gb25UcmFja092ZXJDb25zdHJhaW5lZDsKKyAgICAgICAgICAgIAorICAg
ICAgICAgICAgICAgIGRlYnVnKCIiKTsKKyAgICAgICAgICAgICAgICBldmFsQW5kTG9nKCJ2aWRl
b1RyYWNrMiA9IHZpZGVvVHJhY2suY2xvbmUoKSIpOworICAgICAgICAgICAgICAgIGNoZWNrVHJh
Y2sodmlkZW9UcmFjazIpOworICAgICAgICAgICAgICAgIHNob3VsZE5vdEJlKCd2aWRlb1RyYWNr
LmlkJywgJ3ZpZGVvVHJhY2syLmlkJyk7CisgICAgICAgICAgICAgICAgc2hvdWxkQmUoJ3ZpZGVv
VHJhY2sua2luZCcsICd2aWRlb1RyYWNrMi5raW5kJyk7CisgICAgICAgICAgICAgICAgc2hvdWxk
QmUoJ3ZpZGVvVHJhY2subGFiZWwnLCAndmlkZW9UcmFjazIubGFiZWwnKTsKKyAgICAgICAgICAg
ICAgICBzaG91bGRCZSgndmlkZW9UcmFjay5tdXRlZCcsICd2aWRlb1RyYWNrMi5tdXRlZCcpOwor
ICAgICAgICAgICAgICAgIHNob3VsZEJlKCd2aWRlb1RyYWNrLmVuYWJsZWQnLCAndmlkZW9UcmFj
azIuZW5hYmxlZCcpOworICAgICAgICAgICAgICAgIHNob3VsZEJlKCd2aWRlb1RyYWNrLnJlYWR5
U3RhdGUnLCAndmlkZW9UcmFjazIucmVhZHlTdGF0ZScpOworCisgICAgICAgICAgICAgICAgZGVi
dWcoIiIpOworICAgICAgICAgICAgICAgIGV2YWxBbmRMb2coInZpZGVvVHJhY2suc3RvcCgpIik7
CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGZ1bmN0aW9uIHN0YXJ0KCkKKyAgICAgICAg
ICAgIHsKKyAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbigiVGVzdHMgTWVkaWFTdHJlYW1UcmFj
ayBjYWxsYmFja3MuIik7CisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgLy8gTm90
ZSB0aGF0IHRoZSBiZWxvdyBiZWhhdmlvdXIgZG9lc24ndCByZWZsZWN0IGhvdyBpdCB3b3JrcyBv
dXRzaWRlIG9mIExheW91dFRlc3RzLgorICAgICAgICAgICAgICAgIC8vIFRoZSB1bmRlcmx5aW5n
IG1vY2sgaXMgbW9kaWZpZWQgdG8gdHJpZ2dlciB0aGUgZXZlbnRzIHdoZW4gY2VydGFpbiBmdW5j
dGlvbnMgYXJlIGNhbGxlZC4KKyAgICAgICAgICAgICAgICAvLyBUaGlzIG1vZGlmaWVkIGJlaGF2
aW91ciBhbGxvd3MgdXMgdG8gdGVzdCB0aGUgTWVkaWFTdHJlYW1UcmFjayBjbGFzcyBwcm9wZXJs
eS4KKyAgICAgICAgICAgICAgICBnZXRVc2VyTWVkaWEoe2F1ZGlvOnRydWUsIHZpZGVvOnRydWV9
LCBnb3RTdHJlYW0pOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICB3aW5kb3cuanNUZXN0
SXNBc3luYyA9IHRydWU7CisgICAgICAgICAgICB3aW5kb3cuc3VjY2Vzc2Z1bGx5UGFyc2VkID0g
dHJ1ZTsKKyAgICAgICAgPC9zY3JpcHQ+CisgICAgPC9oZWFkPgorICAgIDxib2R5IG9ubG9hZD0i
c3RhcnQoKSI+CisgICAgICAgIDxwIGlkPSJkZXNjcmlwdGlvbiI+PC9wPgorICAgICAgICA8ZGl2
IGlkPSJjb25zb2xlIj48L2Rpdj4KKyAgICAgICAgPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNl
cy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorICAgIDwvYm9keT4KIDwvaHRtbD4K
</data>
<flag name="commit-queue"
          id="235929"
          type_id="3"
          status="-"
          setter="eflews.bot"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>213589</attachid>
            <date>2013-10-07 08:39:40 -0700</date>
            <delta_ts>2013-10-07 09:34:11 -0700</delta_ts>
            <desc>Add the missing compile flag</desc>
            <filename>track_spec_update_23.txt</filename>
            <type>text/plain</type>
            <size>214452</size>
            <attacher name="Eric Carlson">eric.carlson</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE1NzA0MSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE3OCBAQAorMjAxMy0xMC0wNiAgRXJpYyBD
YXJsc29uICA8ZXJpYy5jYXJsc29uQGFwcGxlLmNvbT4KKworICAgICAgICBbTWVkaWFTdHJlYW0g
QVBJXSB1cGRhdGUgTWVkaWFTdHJlYW1UcmFjayBvYmplY3QgdG8gbWF0Y2ggc3BlYworICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTIxOTQwCisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLCBl
eGlzdGluZyB0ZXN0IHVwZGF0ZWQuCisKKyAgICAgICAgQWRkIG5ldyBzb3VyY2UgZmlsZXMgdG8g
dGhlIHByb2plY3Q6CisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogRGVyaXZl
ZFNvdXJjZXMubWFrZToKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5saXN0LmFtOgorICAgICAgICAq
IFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKworICAgICAgICBOZXcgY2FwYWJp
bGl0eSBkaWN0aW9uYXJ5IG9iamVjdHM6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9B
bGxBdWRpb0NhcGFiaWxpdGllcy5oOiBBZGRlZC4KKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3Ry
ZWFtL0FsbEF1ZGlvQ2FwYWJpbGl0aWVzLmlkbDogQWRkZWQuCisgICAgICAgICogTW9kdWxlcy9t
ZWRpYXN0cmVhbS9BbGxWaWRlb0NhcGFiaWxpdGllcy5oOiBBZGRlZC4KKyAgICAgICAgKiBNb2R1
bGVzL21lZGlhc3RyZWFtL0FsbFZpZGVvQ2FwYWJpbGl0aWVzLmlkbDogQWRkZWQuCisKKyAgICAg
ICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL0F1ZGlvU3RyZWFtVHJhY2suY3BwOgorICAgICAgICAo
V2ViQ29yZTo6QXVkaW9TdHJlYW1UcmFjazo6Y3JlYXRlKTogTmV3IHZlcnNpb24gdGhhdCB0YWtl
cyBhIE1lZGlhU3RyZWFtVHJhY2sqLgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vQXVk
aW9TdHJlYW1UcmFjay5oOgorCisgICAgICAgIE5ldyBvYmplY3QgZm9yIGEgY2FwYWJpbGl0eSBy
YW5nZToKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL0NhcGFiaWxpdHlSYW5nZS5jcHA6
IEFkZGVkLgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vQ2FwYWJpbGl0eVJhbmdlLmg6
IEFkZGVkLgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vQ2FwYWJpbGl0eVJhbmdlLmlk
bDogQWRkZWQuCisKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhQ29uc3RyYWlu
dHNJbXBsLmg6IE1ha2UgaW5pdGlhbGl6ZSgpIHB1YmxpYy4KKworICAgICAgICBOZXcgb2JqZWN0
IGZvciB0aGUgY3VycmVudCBzdGF0ZXMgZm9yIGEgbWVkaWEgc291cmNlLgorICAgICAgICAqIE1v
ZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTb3VyY2VTdGF0ZXMuY3BwOiBBZGRlZC4KKyAgICAgICAg
KiBNb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU291cmNlU3RhdGVzLmg6IEFkZGVkLgorICAgICAg
ICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTb3VyY2VTdGF0ZXMuaWRsOiBBZGRlZC4KKwor
ICAgICAgICBEb24ndCBjYWxsIHRoZSBtZWRpYSBzdHJlYW0gY2VudGVyIHRvIG5vdGlmeSBpdCB3
aGVuIHRoZSBzdGF0ZSBvZiBvdGhlcgorICAgICAgICBvYmplY3RzIGNoYW5nZS4KKyAgICAgICAg
KiBNb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OnByb2Nlc3NUcmFjayk6IFJlbW92ZSB0aGUgc3RyZWFtIHNvdXJjZSBkdXBsaWNhdGlvbiBoYWNr
LgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlRnJvbVNvdXJjZVZlY3RvcnMpOiAKKyAgICAgICAg
KFdlYkNvcmU6Ok1lZGlhU3RyZWFtOjpNZWRpYVN0cmVhbSk6CisgICAgICAgIChXZWJDb3JlOjpN
ZWRpYVN0cmVhbTo6YWRkVHJhY2spOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTdHJlYW06OnJl
bW92ZVRyYWNrKToKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtLmg6
CisKKyAgICAgICAgTmV3IG9iamVjdCBmb3IgdGhlIGNhcGFiaWxpdGllcyBvZiBhIHNvdXJjZS4K
KyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtQ2FwYWJpbGl0aWVzLmNw
cDogQWRkZWQuCisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbUNhcGFi
aWxpdGllcy5oOiBBZGRlZC4KKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3Ry
ZWFtQ2FwYWJpbGl0aWVzLmlkbDogQWRkZWQuCisKKyAgICAgICAgVXBkYXRlIGludGVyZmFjZSB0
byBtYXRjaCBzcGVjLgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1U
cmFjay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbVRyYWNrOjpNZWRpYVN0cmVh
bVRyYWNrKTogRGVmaW5lIGEgY29weSBjb25zdHJ1Y3RvciB0byB1c2UgaW4gY2xvbmUoKS4KKyAg
ICAgICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFtVHJhY2s6OnNldFNvdXJjZSk6IENhbGwgcmVtb3Zl
T2JzZXJ2ZXIgaWYgdGhlIHRyYWNrIGFscmVhZHkgaGFzIGEgc291cmNlLgorICAgICAgICAgICAg
SW5pdGlhbGl6ZSBtX211dGVkIGZyb20gbmV3IHNvdXJjZSdzIG11dGVkIHN0YXRlLgorICAgICAg
ICAoV2ViQ29yZTo6TWVkaWFTdHJlYW1UcmFjazo6aWQpOiBBbGxvdyBzb3VyY2UgdG8gcHJvdmlk
ZSBJRCBhcyB0aGUgc3BlYyBzdWdnZXN0cy4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFt
VHJhY2s6OnNldEVuYWJsZWQpOiBBZGQgc29tZSBzcGVjIHRleHQgdG8gY2xhcmlmeSBsb2dpYy4g
QWx3YXlzIGNhbGwKKyAgICAgICAgICAgIHNvdXJjZS0+c2V0RW5hYmxlZCwgaXQgY2FuIGZpZ3Vy
ZSBvdXQgaWYgbm90aGluZyBuZWVkcyB0byBiZSBkb25lLgorICAgICAgICAoV2ViQ29yZTo6TWVk
aWFTdHJlYW1UcmFjazo6bXV0ZWQpOiBEb24ndCBjYWxsIHRoZSBzdHJlYW0gY2VudGVyIHdoZW4g
bXV0ZWQgY2hhbmdlcywgdGhlCisgICAgICAgICAgICBzb3VyY2UgY2FuIHRha2UgY2FyZSBvZiBu
b3RpZnlpbmcgaW50ZXJlc3RlZCBwYXJ0aWVzLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTdHJl
YW1UcmFjazo6cmVhZG9ubHkpOiBOZXcuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbVRy
YWNrOjpyZW1vdGUpOiBOZXcuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbVRyYWNrOjpj
b25zdHJhaW50cyk6IE5ldy4gCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbVRyYWNrOjpz
dGF0ZXMpOiBOZXcuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbVRyYWNrOjpjYXBhYmls
aXRpZXMpOiBOZXcuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbVRyYWNrOjphcHBseUNv
bnN0cmFpbnRzKTogTmV3LgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTdHJlYW1UcmFjazo6Y2xv
bmUpOiBOZXcuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbVRyYWNrOjpzdG9wUHJvZHVj
aW5nRGF0YSk6IE5ldy4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFtVHJhY2s6OnNvdXJj
ZVN0YXRlQ2hhbmdlZCk6IFJlbmFtZWQgZnJvbSBzb3VyY2VDaGFuZ2VkU3RhdGUuCisgICAgICAg
IChXZWJDb3JlOjpNZWRpYVN0cmVhbVRyYWNrOjpzb3VyY2VNdXRlZENoYW5nZWQpOiBOZXcuCisg
ICAgICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbVRyYWNrOjpzb3VyY2VFbmFibGVkQ2hhbmdlZCk6
IE5ldy4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFtVHJhY2s6OmNvbmZpZ3VyZVRyYWNr
UmVuZGVyaW5nKTogTmV3LgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTdHJlYW1UcmFjazo6c3Rv
cHBlZCk6IE5ldy4gCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbVRyYWNrOjpzdG9wKTog
Q2FsbCBzdG9wUHJvZHVjaW5nRGF0YS4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFtVHJh
Y2s6OnNjaGVkdWxlRXZlbnREaXNwYXRjaCk6IE5ldy4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlh
U3RyZWFtVHJhY2s6OmRpc3BhdGNoUXVldWVkRXZlbnRzKTogTmV3LgorICAgICAgICAqIE1vZHVs
ZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1UcmFjay5oOgorICAgICAgICAqIE1vZHVsZXMvbWVk
aWFzdHJlYW0vTWVkaWFTdHJlYW1UcmFjay5pZGw6CisKKyAgICAgICAgKiBNb2R1bGVzL21lZGlh
c3RyZWFtL01lZGlhVHJhY2tDb25zdHJhaW50LmNwcDogQWRkZWQuCisgICAgICAgICogTW9kdWxl
cy9tZWRpYXN0cmVhbS9NZWRpYVRyYWNrQ29uc3RyYWludC5oOiBBZGRlZC4KKyAgICAgICAgKiBN
b2R1bGVzL21lZGlhc3RyZWFtL01lZGlhVHJhY2tDb25zdHJhaW50LmlkbDogQWRkZWQuCisKKyAg
ICAgICAgLy8gQWRkIGVtcHR5IGNsYXNzZXMvSURMIGZvciB0cmFjayBjb25zdHJhaW50IG9iamVj
dHMuCisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVRyYWNrQ29uc3RyYWludFNl
dC5jcHA6IEFkZGVkLgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFUcmFja0Nv
bnN0cmFpbnRTZXQuaDogQWRkZWQuCisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRp
YVRyYWNrQ29uc3RyYWludFNldC5pZGw6IEFkZGVkLgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFz
dHJlYW0vTWVkaWFUcmFja0NvbnN0cmFpbnRzLmNwcDogQWRkZWQuCisgICAgICAgICogTW9kdWxl
cy9tZWRpYXN0cmVhbS9NZWRpYVRyYWNrQ29uc3RyYWludHMuaDogQWRkZWQuCisgICAgICAgICog
TW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVRyYWNrQ29uc3RyYWludHMuaWRsOiBBZGRlZC4KKwor
ICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vVXNlck1lZGlhUmVxdWVzdC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpVc2VyTWVkaWFSZXF1ZXN0OjpjYWxsU3VjY2Vzc0hhbmRsZXIpOiBEb24n
dCBjYWxsIHRoZSBzdHJlYW0gY2VudGVyLCB0aGUKKyAgICAgICAgICAgIHN0cmVhbSBjYW4gdGFr
ZSBjYXJlIG9mIG5vdGlmeWluZyBpbnRlcmVzdGVkIHBhcnRpZXMuCisKKyAgICAgICAgLy8gQWRk
IGEgY29uc3RydWN0b3IgYW5kIGNyZWF0ZSgpIHRoYXQgdGFrZSBhIE1lZGlhU3RyZWFtVHJhY2sq
LgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vVmlkZW9TdHJlYW1UcmFjay5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpWaWRlb1N0cmVhbVRyYWNrOjpjcmVhdGUpOiAKKyAgICAgICAgKFdl
YkNvcmU6OlZpZGVvU3RyZWFtVHJhY2s6OlZpZGVvU3RyZWFtVHJhY2spOgorICAgICAgICAqIE1v
ZHVsZXMvbWVkaWFzdHJlYW0vVmlkZW9TdHJlYW1UcmFjay5oOgorCisgICAgICAgIC8vIENyZWF0
ZSBhIE1lZGlhU3RyZWFtU291cmNlIHN1YmNsYXNzIGZvciBXZWJBdWRpbworICAgICAgICAqIE1v
ZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlv
Q29udGV4dDo6Y3JlYXRlTWVkaWFTdHJlYW1Tb3VyY2UpOiBDYWxsIGlzQXVkaW9TdHJlYW1Tb3Vy
Y2UgaW5zdGVhZAorICAgICAgICAgICAgb2YgY2hlY2tpbmcgZGV2aWNlSUQuCisgICAgICAgICog
TW9kdWxlcy93ZWJhdWRpby9NZWRpYVN0cmVhbUF1ZGlvRGVzdGluYXRpb25Ob2RlLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFtQXVkaW9EZXN0aW5hdGlvbk5vZGU6Ok1lZGlhU3Ry
ZWFtQXVkaW9EZXN0aW5hdGlvbk5vZGUpOiBDcmVhdGUgYQorICAgICAgICAgICAgTWVkaWFTdHJl
YW1BdWRpb1NvdXJjZSBpbnN0ZWFkIG9mIGEgTWVkaWFTdHJlYW1Tb3VyY2UuCisgICAgICAgICog
TW9kdWxlcy93ZWJhdWRpby9NZWRpYVN0cmVhbUF1ZGlvRGVzdGluYXRpb25Ob2RlLmg6CisgICAg
ICAgICogTW9kdWxlcy93ZWJhdWRpby9NZWRpYVN0cmVhbUF1ZGlvU291cmNlLmNwcDogQWRkZWQu
CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9NZWRpYVN0cmVhbUF1ZGlvU291cmNlLmg6IEFk
ZGVkLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTdHJlYW1BdWRpb1NvdXJjZTo6fk1lZGlhU3Ry
ZWFtQXVkaW9Tb3VyY2UpOgorCisgICAgICAgIC8vIEFkZCBuZXcgZ2VuZXJhdGVkIGZpbGVzLgor
ICAgICAgICAqIGJpbmRpbmdzL2pzL0pTTWVkaWFTb3VyY2VTdGF0ZXNDdXN0b20uY3BwOiBBZGRl
ZC4KKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU01lZGlhU3RyZWFtQ2FwYWJpbGl0aWVzQ3VzdG9t
LmNwcDogQWRkZWQuCisKKyAgICAgICAgKiBkb20vRXZlbnROYW1lcy5oOiBEZWZpbmVkICdvdmVy
Y29uc3RyYWluZWQnIGV2ZW50LgorCisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVk
aWFTdHJlYW1DZW50ZXIuaDogR2V0IHJpZCBvZiBhbGwgb2YgdGhlIG1ldGhvZHMgbm9ib2R5IHVz
ZXMuCisgICAgICAgICAgICBJdCBpc24ndCBjbGVhciB0aGF0IHRoZXkgYXJlIG5lY2Vzc2FyeSwg
YW5kIHdlIGNhbiBhZGQgdGhlbSBiYWNrIGlmL3doZW4gd2UgbmVlZCB0aGVtLgorCisgICAgICAg
ICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1EZXNjcmlwdG9yLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFtRGVzY3JpcHRvcjo6fk1lZGlhU3RyZWFtRGVzY3JpcHRv
cik6IENsZWFyIHRoZSBhbGwgc291cmNlIHN0cmVhbXMuCisgICAgICAgIChXZWJDb3JlOjpNZWRp
YVN0cmVhbURlc2NyaXB0b3I6OnJlbW92ZVNvdXJjZSk6IENsZWFyIHRoZSBzb3VyY2Ugc3RyZWFt
LgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtRGVzY3JpcHRvci5o
OgorCisgICAgICAgIC8vIE1ha2UgTWVkaWFTdHJlYW1Tb3VyY2UgYW4gYWJzdHJhY3QgYmFzZSBj
bGFzcywgYW5kIHJlbW92ZSBldmVyeXRpbmcgV2ViQXVkaW8tc3BlY2lmaWMKKyAgICAgICAgLy8g
IHRvIE1lZGlhU3RyZWFtQXVkaW9Tb3VyY2UuIAorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3Ry
ZWFtL01lZGlhU3RyZWFtU291cmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFt
U291cmNlOjpNZWRpYVN0cmVhbVNvdXJjZSk6IFJlbW92ZSByZWFkeVN0YXRlIGFuZCByZXF1aXJl
c0NvbnN1bWVyCisgICAgICAgICAgICBwYXJhbWV0ZXJzLiBDcmVhdGUgbmV3IFVVSUQgZm9yIGlk
IGlmIG5vbiB3YXMgcGFzc2VkLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTdHJlYW1Tb3VyY2U6
OnJlc2V0KTogUmVzZXQgaW50ZXJuYWwgc3RhdGUgdG8ganVzdC1jb25zdHJ1Y3RlZC4gVXNlZCBm
b3IgdGVzdGluZy4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFtU291cmNlOjpzZXRSZWFk
eVN0YXRlKTogc291cmNlQ2hhbmdlZFN0YXRlIC0+IHNvdXJjZVN0YXRlQ2hhbmdlZC4KKyAgICAg
ICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFtU291cmNlOjpzZXRTdHJlYW0pOiBSZW1vdmUgdGhlIEFT
U0VSVCB0aGF0IGNoZWNrIGZvciBhIHNvdXJjZSBiZWluZworICAgICAgICAgICAgYWRkZWQgdG8g
YSBuZXcgc3RyZWFtLiBUaGlzIGlzIHN0aWxsIGEgcHJvYmxlbSwgYnV0IGl0IGlzIHJlcXVpcmVk
IGZvciB0ZXN0aW5nIGFuZCB3aWxsCisgICAgICAgICAgICBiZSBmaXhlZCBhcyBhIHBhcnQgb2Yg
YnVnIDEyMTk1NC4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFtU291cmNlOjpzZXRDb25z
dHJhaW50cyk6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTdHJlYW1Tb3VyY2U6OnNl
dE11dGVkKTogTm90aWZ5IG9ic2VydmVycyB3aGVuIG11dGVkIGNoYW5nZXMuCisgICAgICAgIChX
ZWJDb3JlOjpNZWRpYVN0cmVhbVNvdXJjZTo6c2V0RW5hYmxlZCk6IE5vdGlmeSBvYnNlcnZlcnMg
d2hlbiBlbmFibGVkIGNoYW5nZXMuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbVNvdXJj
ZTo6cmVhZG9ubHkpOiBOZXcuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbVNvdXJjZTo6
c3RvcCk6IE5ldy4gU2V0IHN0YXRlIHRvIEVuZGVkIHdoZW4gYWxsIG9mIHRoZSBvYnNlcnZlcnMg
aGFzCisgICAgICAgICAgICBzdG9wcGVkLgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFt
L01lZGlhU3RyZWFtU291cmNlLmg6CisKKyAgICAgICAgLy8gRGVmaW5lIHBsYXRmb3JtIHZlcnNp
b25zIG9mIHRoZSBDYXBhYmlsaXRpZXMgY2xhc3Nlcy4KKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRp
YXN0cmVhbS9NZWRpYVN0cmVhbVNvdXJjZUNhcGFiaWxpdGllcy5oOiBBZGRlZC4KKworICAgICAg
ICAvLyBVcGRhdGUgdGhlIG5vbi1mdW5jdGlvbmFsIHBsYXRmb3JtIHN0cmVhbSBjZW50ZXJzIGZv
ciB0aGUgQVBJIGNoYW5nZXMuCisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vYmxhY2ti
ZXJyeS9NZWRpYVN0cmVhbUNlbnRlckJsYWNrQmVycnkuY3BwOgorICAgICAgICAqIHBsYXRmb3Jt
L21lZGlhc3RyZWFtL2JsYWNrYmVycnkvTWVkaWFTdHJlYW1DZW50ZXJCbGFja0JlcnJ5Lmg6Cisg
ICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vZ3N0cmVhbWVyL01lZGlhU3RyZWFtQ2VudGVy
R1N0cmVhbWVyLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9nc3RyZWFtZXIv
TWVkaWFTdHJlYW1DZW50ZXJHU3RyZWFtZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0
cmVhbS9tYWMvTWVkaWFTdHJlYW1DZW50ZXJNYWMuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL21l
ZGlhc3RyZWFtL21hYy9NZWRpYVN0cmVhbUNlbnRlck1hYy5oOgorCisgICAgICAgIC8vIFVwZGF0
ZSB0aGUgTW9jayBzdHJlYW0gY2VudGVyIGZvciB0aGUgQVBJIGNoYW5nZXMuIEFkZCBhIGNvbmNy
ZXRlIG1vY2sgTWVkaWFTdHJlYW1Tb3VyY2UKKyAgICAgICAgLy8gIHN1YmNsYXNzLgorICAgICAg
ICAqIHBsYXRmb3JtL21vY2svTW9ja01lZGlhU3RyZWFtQ2VudGVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6Ok1vY2tTb3VyY2U6Ok1vY2tTb3VyY2UpOiBOZXcsIHRoZSBtb2NrIG1lZGlhIHN0cmVh
bSBzb3VyY2UuCisgICAgICAgIChXZWJDb3JlOjpNb2NrU291cmNlOjp+TW9ja1NvdXJjZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpNb2NrU291cmNlOjpjYXBhYmlsaXRpZXMpOgorICAgICAgICAoV2Vi
Q29yZTo6TW9ja1NvdXJjZTo6c3RhdGVzKToKKyAgICAgICAgKFdlYkNvcmU6Om1vY2tTb3VyY2VN
YXApOgorICAgICAgICAoV2ViQ29yZTo6bW9ja0F1ZGlvU291cmNlSUQpOgorICAgICAgICAoV2Vi
Q29yZTo6bW9ja1ZpZGVvU291cmNlSUQpOgorICAgICAgICAoV2ViQ29yZTo6aW5pdGlhbGl6ZU1v
Y2tTb3VyY2VzKTogQ3JlYXRlIG9uZSBhdWRpbyBhbmQgb25lIHZpZGVvIG1vY2sgc291cmNlLgor
ICAgICAgICAoV2ViQ29yZTo6TW9ja01lZGlhU3RyZWFtQ2VudGVyOjpyZWdpc3Rlck1vY2tNZWRp
YVN0cmVhbUNlbnRlcik6IENhbGwgaW5pdGlhbGl6ZU1vY2tTb3VyY2VzLgorICAgICAgICAoV2Vi
Q29yZTo6TW9ja01lZGlhU3RyZWFtQ2VudGVyOjpjcmVhdGVNZWRpYVN0cmVhbSk6IFVzZSB0aGUg
YWxyZWFkeSBhbGxvY2F0ZWQgbW9jayBtZWRpYQorICAgICAgICAgICAgc291cmNlcy4KKyAgICAg
ICAgKFdlYkNvcmU6Ok1vY2tNZWRpYVN0cmVhbUNlbnRlcjo6Z2V0TWVkaWFTdHJlYW1UcmFja1Nv
dXJjZXMpOiBEaXR0by4KKyAgICAgICAgKiBwbGF0Zm9ybS9tb2NrL01vY2tNZWRpYVN0cmVhbUNl
bnRlci5oOgorCiAyMDEzLTEwLTA3ICBQaGlsaXBwZSBOb3JtYW5kICA8cG5vcm1hbmRAaWdhbGlh
LmNvbT4KIAogICAgICAgICBVUkxNZWRpYVN0cmVhbSBpcyB1bmd1YXJkZWQgYnkgRU5BQkxFKE1F
RElBX1NUUkVBTSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0Cj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CShyZXZpc2lvbiAxNTcwMTYpCisr
KyBTb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMTg2LDEy
ICsxODYsMjAgQEAgc2V0KFdlYkNvcmVfSURMX0ZJTEVTCiAgICAgTW9kdWxlcy9tZWRpYXNvdXJj
ZS9XZWJLaXRTb3VyY2VCdWZmZXIuaWRsCiAgICAgTW9kdWxlcy9tZWRpYXNvdXJjZS9XZWJLaXRT
b3VyY2VCdWZmZXJMaXN0LmlkbAogCisgICAgTW9kdWxlcy9tZWRpYXN0cmVhbS9BbGxBdWRpb0Nh
cGFiaWxpdGllcy5pZGwKKyAgICBNb2R1bGVzL21lZGlhc3RyZWFtL0FsbFZpZGVvQ2FwYWJpbGl0
aWVzLmlkbAogICAgIE1vZHVsZXMvbWVkaWFzdHJlYW0vQXVkaW9TdHJlYW1UcmFjay5pZGwKKyAg
ICBNb2R1bGVzL21lZGlhc3RyZWFtL0NhcGFiaWxpdHlSYW5nZS5pZGwKKyAgICBNb2R1bGVzL21l
ZGlhc3RyZWFtL01lZGlhU291cmNlU3RhdGVzLmlkbAogICAgIE1vZHVsZXMvbWVkaWFzdHJlYW0v
TWVkaWFTdHJlYW0uaWRsCisgICAgTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbUNhcGFi
aWxpdGllcy5pZGwKICAgICBNb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtRXZlbnQuaWRs
CiAgICAgTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVRyYWNrLmlkbAogICAgIE1vZHVs
ZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1UcmFja0V2ZW50LmlkbAogICAgIE1vZHVsZXMvbWVk
aWFzdHJlYW0vTWVkaWFTdHJlYW1UcmFja1NvdXJjZXNDYWxsYmFjay5pZGwKKyAgICBNb2R1bGVz
L21lZGlhc3RyZWFtL01lZGlhVHJhY2tDb25zdHJhaW50LmlkbAorICAgIE1vZHVsZXMvbWVkaWFz
dHJlYW0vTWVkaWFUcmFja0NvbnN0cmFpbnRTZXQuaWRsCisgICAgTW9kdWxlcy9tZWRpYXN0cmVh
bS9NZWRpYVRyYWNrQ29uc3RyYWludHMuaWRsCiAgICAgTW9kdWxlcy9tZWRpYXN0cmVhbS9OYXZp
Z2F0b3JNZWRpYVN0cmVhbS5pZGwKICAgICBNb2R1bGVzL21lZGlhc3RyZWFtL05hdmlnYXRvclVz
ZXJNZWRpYUVycm9yLmlkbAogICAgIE1vZHVsZXMvbWVkaWFzdHJlYW0vTmF2aWdhdG9yVXNlck1l
ZGlhRXJyb3JDYWxsYmFjay5pZGwKQEAgLTc4NiwxMyArNzk0LDE5IEBAIHNldChXZWJDb3JlX1NP
VVJDRVMKICAgICBNb2R1bGVzL21lZGlhc291cmNlL1NvdXJjZUJ1ZmZlckxpc3QuY3BwCiAKICAg
ICBNb2R1bGVzL21lZGlhc3RyZWFtL0F1ZGlvU3RyZWFtVHJhY2suY3BwCisgICAgTW9kdWxlcy9t
ZWRpYXN0cmVhbS9DYXBhYmlsaXR5UmFuZ2UuY3BwCiAgICAgTW9kdWxlcy9tZWRpYXN0cmVhbS9N
ZWRpYUNvbnN0cmFpbnRzSW1wbC5jcHAKKyAgICBNb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU291
cmNlU3RhdGVzLmNwcAogICAgIE1vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW0uY3BwCisg
ICAgTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbUNhcGFiaWxpdGllcy5jcHAKICAgICBN
b2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtRXZlbnQuY3BwCiAgICAgTW9kdWxlcy9tZWRp
YXN0cmVhbS9NZWRpYVN0cmVhbVJlZ2lzdHJ5LmNwcAogICAgIE1vZHVsZXMvbWVkaWFzdHJlYW0v
TWVkaWFTdHJlYW1UcmFjay5jcHAKICAgICBNb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFt
VHJhY2tFdmVudC5jcHAKICAgICBNb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJhY2tT
b3VyY2VzUmVxdWVzdC5jcHAKKyAgICBNb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhVHJhY2tDb25z
dHJhaW50LmNwcAorICAgIE1vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFUcmFja0NvbnN0cmFpbnRT
ZXQuY3BwCisgICAgTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVRyYWNrQ29uc3RyYWludHMuY3Bw
CiAgICAgTW9kdWxlcy9tZWRpYXN0cmVhbS9OYXZpZ2F0b3JNZWRpYVN0cmVhbS5jcHAKICAgICBN
b2R1bGVzL21lZGlhc3RyZWFtL05hdmlnYXRvclVzZXJNZWRpYUVycm9yLmNwcAogICAgIE1vZHVs
ZXMvbWVkaWFzdHJlYW0vUlRDRFRNRlNlbmRlci5jcHAKQEAgLTE5NzEsNiArMTk4NSw3IEBAIHNl
dChXZWJDb3JlX1NPVVJDRVMKICAgICBwbGF0Zm9ybS9sZXZlbGRiL0xldmVsREJUcmFuc2FjdGlv
bi5jcHAKICAgICBwbGF0Zm9ybS9sZXZlbGRiL0xldmVsREJXcml0ZUJhdGNoLmNwcAogCisgICAg
cGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1BdWRpb1NvdXJjZS5jcHAKICAgICBwbGF0
Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbUNlbnRlci5jcHAKICAgICBwbGF0Zm9ybS9tZWRp
YXN0cmVhbS9NZWRpYVN0cmVhbURlc2NyaXB0b3IuY3BwCiAgICAgcGxhdGZvcm0vbWVkaWFzdHJl
YW0vTWVkaWFTdHJlYW1Tb3VyY2UuY3BwCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291
cmNlcy5tYWtlCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1h
a2UJKHJldmlzaW9uIDE1NzAxNikKKysrIFNvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1h
a2UJKHdvcmtpbmcgY29weSkKQEAgLTEwMSwxMiArMTAxLDIwIEBAIEJJTkRJTkdfSURMUyA9IFwK
ICAgICAkKFdlYkNvcmUpL01vZHVsZXMvbWVkaWFzb3VyY2UvV2ViS2l0U291cmNlQnVmZmVyTGlz
dC5pZGwgXAogICAgICQoV2ViQ29yZSkvTW9kdWxlcy9tZWRpYXNvdXJjZS9Tb3VyY2VCdWZmZXIu
aWRsIFwKICAgICAkKFdlYkNvcmUpL01vZHVsZXMvbWVkaWFzb3VyY2UvU291cmNlQnVmZmVyTGlz
dC5pZGwgXAorCSQoV2ViQ29yZSkvTW9kdWxlcy9tZWRpYXN0cmVhbS9BbGxWaWRlb0NhcGFiaWxp
dGllcy5pZGwgXAorCSQoV2ViQ29yZSkvTW9kdWxlcy9tZWRpYXN0cmVhbS9BbGxBdWRpb0NhcGFi
aWxpdGllcy5pZGwgXAogCSQoV2ViQ29yZSkvTW9kdWxlcy9tZWRpYXN0cmVhbS9BdWRpb1N0cmVh
bVRyYWNrLmlkbCBcCisgICAgJChXZWJDb3JlKS9Nb2R1bGVzL21lZGlhc3RyZWFtL0NhcGFiaWxp
dHlSYW5nZS5pZGwgXAorICAgICQoV2ViQ29yZSkvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVNv
dXJjZVN0YXRlcy5pZGwgXAogCSQoV2ViQ29yZSkvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0
cmVhbS5pZGwgXAorCSQoV2ViQ29yZSkvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbUNh
cGFiaWxpdGllcy5pZGwgXAogICAgICQoV2ViQ29yZSkvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRp
YVN0cmVhbUV2ZW50LmlkbCBcCiAgICAgJChXZWJDb3JlKS9Nb2R1bGVzL21lZGlhc3RyZWFtL01l
ZGlhU3RyZWFtVHJhY2suaWRsIFwKICAgICAkKFdlYkNvcmUpL01vZHVsZXMvbWVkaWFzdHJlYW0v
TWVkaWFTdHJlYW1UcmFja0V2ZW50LmlkbCBcCiAgICAgJChXZWJDb3JlKS9Nb2R1bGVzL21lZGlh
c3RyZWFtL01lZGlhU3RyZWFtVHJhY2tTb3VyY2VzQ2FsbGJhY2suaWRsIFwKKyAgICAkKFdlYkNv
cmUpL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFUcmFja0NvbnN0cmFpbnQuaWRsIFwKKyAgICAk
KFdlYkNvcmUpL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFUcmFja0NvbnN0cmFpbnRzLmlkbCBc
CisgICAgJChXZWJDb3JlKS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhVHJhY2tDb25zdHJhaW50
U2V0LmlkbCBcCiAgICAgJChXZWJDb3JlKS9Nb2R1bGVzL21lZGlhc3RyZWFtL05hdmlnYXRvck1l
ZGlhU3RyZWFtLmlkbCBcCiAgICAgJChXZWJDb3JlKS9Nb2R1bGVzL21lZGlhc3RyZWFtL05hdmln
YXRvclVzZXJNZWRpYUVycm9yLmlkbCBcCiAgICAgJChXZWJDb3JlKS9Nb2R1bGVzL21lZGlhc3Ry
ZWFtL05hdmlnYXRvclVzZXJNZWRpYUVycm9yQ2FsbGJhY2suaWRsIFwKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
R05VbWFrZWZpbGUubGlzdC5hbQkocmV2aXNpb24gMTU3MDE2KQorKysgU291cmNlL1dlYkNvcmUv
R05VbWFrZWZpbGUubGlzdC5hbQkod29ya2luZyBjb3B5KQpAQCAtMzEsNiArMzEsMTAgQEAgd2Vi
Y29yZV9idWlsdF9zb3VyY2VzICs9IFwKIAlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0luc3BlY3Rv
clByb3RvY29sVmVyc2lvbi5oIFwKIAlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTQWJzdHJhY3RX
b3JrZXIuY3BwIFwKIAlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTQWJzdHJhY3RXb3JrZXIuaCBc
CisJRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0FsbEF1ZGlvQ2FwYWJpbGl0aWVzLmNwcCBcCisJ
RGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0FsbEF1ZGlvQ2FwYWJpbGl0aWVzLmggXAorCURlcml2
ZWRTb3VyY2VzL1dlYkNvcmUvSlNBbGxWaWRlb0NhcGFiaWxpdGllcy5jcHAgXAorCURlcml2ZWRT
b3VyY2VzL1dlYkNvcmUvSlNBbGxWaWRlb0NhcGFiaWxpdGllcy5oIFwKIAlEZXJpdmVkU291cmNl
cy9XZWJDb3JlL0pTQXR0ci5jcHAgXAogCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNBdHRyLmgg
XAogCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNBdWRpb0J1ZmZlci5jcHAgXApAQCAtODcsNiAr
OTEsOCBAQCB3ZWJjb3JlX2J1aWx0X3NvdXJjZXMgKz0gXAogCURlcml2ZWRTb3VyY2VzL1dlYkNv
cmUvSlNDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuaCBcCiAJRGVyaXZlZFNvdXJjZXMvV2ViQ29y
ZS9KU0NhbnZhc1JlbmRlcmluZ0NvbnRleHQuY3BwIFwKIAlEZXJpdmVkU291cmNlcy9XZWJDb3Jl
L0pTQ2FudmFzUmVuZGVyaW5nQ29udGV4dC5oIFwKKwlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pT
Q2FwYWJpbGl0eVJhbmdlLmNwcCBcCisJRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0NhcGFiaWxp
dHlSYW5nZS5oIFwKIAlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTQ0RBVEFTZWN0aW9uLmNwcCBc
CiAJRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0NEQVRBU2VjdGlvbi5oIFwKIAlEZXJpdmVkU291
cmNlcy9XZWJDb3JlL0pTQ2hhcmFjdGVyRGF0YS5jcHAgXApAQCAtNDYyLDEyICs0NjgsMTggQEAg
d2ViY29yZV9idWlsdF9zb3VyY2VzICs9IFwKIAlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTTWVk
aWFTb3VyY2UuaCBcCiAJRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU1dlYktpdE1lZGlhU291cmNl
LmNwcCBcCiAJRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU1dlYktpdE1lZGlhU291cmNlLmggXAor
CURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNNZWRpYVNvdXJjZVN0YXRlcy5jcHAgXAorCURlcml2
ZWRTb3VyY2VzL1dlYkNvcmUvSlNNZWRpYVNvdXJjZVN0YXRlcy5oIFwKKwlEZXJpdmVkU291cmNl
cy9XZWJDb3JlL0pTTWVkaWFTb3VyY2VTdGF0ZXNDdXN0b20uY3BwIFwKIAlEZXJpdmVkU291cmNl
cy9XZWJDb3JlL0pTTWVkaWFTdHJlYW0uY3BwIFwKIAlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pT
TWVkaWFTdHJlYW0uaCBcCiAJRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU01lZGlhU3RyZWFtQXVk
aW9Tb3VyY2VOb2RlLmNwcCBcCiAJRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU01lZGlhU3RyZWFt
QXVkaW9Tb3VyY2VOb2RlLmggXAogCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNNZWRpYVN0cmVh
bUF1ZGlvRGVzdGluYXRpb25Ob2RlLmNwcCBcCiAJRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU01l
ZGlhU3RyZWFtQXVkaW9EZXN0aW5hdGlvbk5vZGUuaCBcCisJRGVyaXZlZFNvdXJjZXMvV2ViQ29y
ZS9KU01lZGlhU3RyZWFtQ2FwYWJpbGl0aWVzLmNwcCBcCisJRGVyaXZlZFNvdXJjZXMvV2ViQ29y
ZS9KU01lZGlhU3RyZWFtQ2FwYWJpbGl0aWVzLmggXAorCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUv
SlNNZWRpYVN0cmVhbUNhcGFiaWxpdGllc0N1c3RvbS5jcHAgXAogCURlcml2ZWRTb3VyY2VzL1dl
YkNvcmUvSlNNZWRpYVN0cmVhbUV2ZW50LmNwcCBcCiAJRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9K
U01lZGlhU3RyZWFtRXZlbnQuaCBcCiAJRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU01lZGlhU3Ry
ZWFtVHJhY2suY3BwIFwKQEAgLTQ4MCw2ICs0OTIsMTIgQEAgd2ViY29yZV9idWlsdF9zb3VyY2Vz
ICs9IFwKIAlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTTWVkaWFRdWVyeUxpc3QuaCBcCiAJRGVy
aXZlZFNvdXJjZXMvV2ViQ29yZS9KU01lZGlhUXVlcnlMaXN0TGlzdGVuZXIuY3BwIFwKIAlEZXJp
dmVkU291cmNlcy9XZWJDb3JlL0pTTWVkaWFRdWVyeUxpc3RMaXN0ZW5lci5oIFwKKwlEZXJpdmVk
U291cmNlcy9XZWJDb3JlL0pTTWVkaWFUcmFja0NvbnN0cmFpbnQuY3BwIFwKKwlEZXJpdmVkU291
cmNlcy9XZWJDb3JlL0pTTWVkaWFUcmFja0NvbnN0cmFpbnQuaCBcCisJRGVyaXZlZFNvdXJjZXMv
V2ViQ29yZS9KU01lZGlhVHJhY2tDb25zdHJhaW50cy5jcHAgXAorCURlcml2ZWRTb3VyY2VzL1dl
YkNvcmUvSlNNZWRpYVRyYWNrQ29uc3RyYWludHMuaCBcCisJRGVyaXZlZFNvdXJjZXMvV2ViQ29y
ZS9KU01lZGlhVHJhY2tDb25zdHJhaW50U2V0LmNwcCBcCisJRGVyaXZlZFNvdXJjZXMvV2ViQ29y
ZS9KU01lZGlhVHJhY2tDb25zdHJhaW50U2V0LmggXAogCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUv
SlNNZXNzYWdlQ2hhbm5lbC5jcHAgXAogCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNNZXNzYWdl
Q2hhbm5lbC5oIFwKIAlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTTWVzc2FnZUV2ZW50LmNwcCBc
CkBAIC0xMTg2LDEyICsxMjA0LDIwIEBAIGRvbV9iaW5kaW5nX2lkbHMgKz0gXAogCSQoV2ViQ29y
ZSkvTW9kdWxlcy9tZWRpYXNvdXJjZS9XZWJLaXRNZWRpYVNvdXJjZS5pZGwgXAogCSQoV2ViQ29y
ZSkvTW9kdWxlcy9tZWRpYXNvdXJjZS9XZWJLaXRTb3VyY2VCdWZmZXIuaWRsIFwKIAkkKFdlYkNv
cmUpL01vZHVsZXMvbWVkaWFzb3VyY2UvV2ViS2l0U291cmNlQnVmZmVyTGlzdC5pZGwgXAorCSQo
V2ViQ29yZSkvTW9kdWxlcy9tZWRpYXN0cmVhbS9BbGxWaWRlb0NhcGFiaWxpdGllcy5pZGwgXAor
CSQoV2ViQ29yZSkvTW9kdWxlcy9tZWRpYXN0cmVhbS9BbGxBdWRpb0NhcGFiaWxpdGllcy5pZGwg
XAogCSQoV2ViQ29yZSkvTW9kdWxlcy9tZWRpYXN0cmVhbS9BdWRpb1N0cmVhbVRyYWNrLmlkbCBc
CisJJChXZWJDb3JlKS9Nb2R1bGVzL21lZGlhc3RyZWFtL0NhcGFiaWxpdHlSYW5nZS5pZGwgXAor
CSQoV2ViQ29yZSkvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVNvdXJjZVN0YXRlcy5pZGwgXAog
CSQoV2ViQ29yZSkvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbS5pZGwgXAorCSQoV2Vi
Q29yZSkvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbUNhcGFiaWxpdGllcy5pZGwgXAog
CSQoV2ViQ29yZSkvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbUV2ZW50LmlkbCBcCiAJ
JChXZWJDb3JlKS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJhY2suaWRsIFwKIAkk
KFdlYkNvcmUpL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1UcmFja0V2ZW50LmlkbCBc
CiAJJChXZWJDb3JlKS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJhY2tTb3VyY2Vz
Q2FsbGJhY2suaWRsIFwKKwkkKFdlYkNvcmUpL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFUcmFj
a0NvbnN0cmFpbnQuaWRsIFwKKwkkKFdlYkNvcmUpL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFU
cmFja0NvbnN0cmFpbnRzLmlkbCBcCisJJChXZWJDb3JlKS9Nb2R1bGVzL21lZGlhc3RyZWFtL01l
ZGlhVHJhY2tDb25zdHJhaW50U2V0LmlkbCBcCiAJJChXZWJDb3JlKS9Nb2R1bGVzL21lZGlhc3Ry
ZWFtL05hdmlnYXRvck1lZGlhU3RyZWFtLmlkbCBcCiAJJChXZWJDb3JlKS9Nb2R1bGVzL21lZGlh
c3RyZWFtL05hdmlnYXRvclVzZXJNZWRpYUVycm9yLmlkbCBcCiAJJChXZWJDb3JlKS9Nb2R1bGVz
L21lZGlhc3RyZWFtL05hdmlnYXRvclVzZXJNZWRpYUVycm9yQ2FsbGJhY2suaWRsIFwKQEAgLTE4
NDUsMTIgKzE4NzEsMjAgQEAgd2ViY29yZV9tb2R1bGVzX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvbWVkaWFzb3VyY2UvV2ViS2l0U291cmNlQnVmZmVyLmggXAogCVNvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzb3VyY2UvV2ViS2l0U291cmNlQnVmZmVyTGlzdC5jcHAg
XAogCVNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzb3VyY2UvV2ViS2l0U291cmNlQnVmZmVy
TGlzdC5oIFwKKwlTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL0FsbEF1ZGlvQ2Fw
YWJpbGl0aWVzLmggXAorCVNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vQWxsVmlk
ZW9DYXBhYmlsaXRpZXMuaCBcCiAJU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9B
dWRpb1N0cmVhbVRyYWNrLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVh
bS9BdWRpb1N0cmVhbVRyYWNrLmggXAorCVNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJl
YW0vQ2FwYWJpbGl0eVJhbmdlLmNwcCBcCisJU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0
cmVhbS9DYXBhYmlsaXR5UmFuZ2UuaCBcCiAJU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0
cmVhbS9NZWRpYUNvbnN0cmFpbnRzSW1wbC5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL01vZHVsZXMv
bWVkaWFzdHJlYW0vTWVkaWFDb25zdHJhaW50c0ltcGwuaCBcCisJU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9tZWRpYXN0cmVhbS9NZWRpYVNvdXJjZVN0YXRlcy5jcHAgXAorCVNvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTb3VyY2VTdGF0ZXMuaCBcCiAJU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbS5jcHAgXAogCVNvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW0uaCBcCisJU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbUNhcGFiaWxpdGllcy5jcHAgXAorCVNvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1DYXBhYmlsaXRpZXMuaCBcCiAJ
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbUV2ZW50LmNwcCBc
CiAJU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbUV2ZW50Lmgg
XAogCVNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1SZWdpc3Ry
eS5jcHAgXApAQCAtMTg2Miw2ICsxODk2LDEyIEBAIHdlYmNvcmVfbW9kdWxlc19zb3VyY2VzICs9
IFwKIAlTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJhY2tT
b3VyY2VzQ2FsbGJhY2suaCBcCiAJU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9N
ZWRpYVN0cmVhbVRyYWNrU291cmNlc1JlcXVlc3QuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJhY2tTb3VyY2VzUmVxdWVzdC5oIFwKKwlTb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhVHJhY2tDb25zdHJhaW50LmNwcCBc
CisJU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVRyYWNrQ29uc3RyYWlu
dC5oIFwKKwlTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhVHJhY2tDb25z
dHJhaW50U2V0LmNwcCBcCisJU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRp
YVRyYWNrQ29uc3RyYWludFNldC5oIFwKKwlTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3Ry
ZWFtL01lZGlhVHJhY2tDb25zdHJhaW50cy5jcHAgXAorCVNvdXJjZS9XZWJDb3JlL01vZHVsZXMv
bWVkaWFzdHJlYW0vTWVkaWFUcmFja0NvbnN0cmFpbnRzLmggXAogCVNvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvbWVkaWFzdHJlYW0vTmF2aWdhdG9yTWVkaWFTdHJlYW0uY3BwIFwKIAlTb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL05hdmlnYXRvck1lZGlhU3RyZWFtLmggXAogCVNvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTmF2aWdhdG9yVXNlck1lZGlhRXJyb3IuY3Bw
IFwKQEAgLTUzMjgsNiArNTM2OCw4IEBAIHdlYmNvcmVfcGxhdGZvcm1fc291cmNlcyArPSBcCiAJ
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbGludXgvR2FtZXBhZERldmljZUxpbnV4LmNwcCBcCiAJ
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbGludXgvR2FtZXBhZERldmljZUxpbnV4LmggXAogCVNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlhQ29uc3RyYWludHMuaCBcCisJ
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1BdWRpb1NvdXJj
ZS5jcHAgXAorCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlhU3RyZWFt
QXVkaW9Tb3VyY2UuaCBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVk
aWFTdHJlYW1DZW50ZXIuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVh
bS9NZWRpYVN0cmVhbUNlbnRlci5oIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0
cmVhbS9NZWRpYVN0cmVhbUNvbnN0cmFpbnRzVmFsaWRhdGlvbkNsaWVudC5oIFwKQEAgLTUzMzYs
NiArNTM3OCw3IEBAIHdlYmNvcmVfcGxhdGZvcm1fc291cmNlcyArPSBcCiAJU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1EZXNjcmlwdG9yLmggXAogCVNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtU291cmNlLmNwcCBcCiAJ
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1Tb3VyY2UuaCBc
CisJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1Tb3VyY2VD
YXBhYmlsaXRpZXMuaCBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVk
aWFTdHJlYW1UcmFja1NvdXJjZXNSZXF1ZXN0Q2xpZW50LmggXAogCVNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21lZGlhc3RyZWFtL1JUQ0NvbmZpZ3VyYXRpb24uaCBcCiAJU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWVkaWFzdHJlYW0vUlRDRFRNRlNlbmRlckhhbmRsZXIuaCBcCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL0FsbEF1ZGlvQ2FwYWJpbGl0aWVzLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9BbGxBdWRpb0Nh
cGFiaWxpdGllcy5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRp
YXN0cmVhbS9BbGxBdWRpb0NhcGFiaWxpdGllcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEs
NTkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNpZm5kZWYgQWxsQXVkaW9DYXBhYmlsaXRpZXNfaAorI2RlZmluZSBB
bGxBdWRpb0NhcGFiaWxpdGllc19oCisKKyNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQorCisjaW5j
bHVkZSAiTWVkaWFTdHJlYW1DYXBhYmlsaXRpZXMuaCIKKyNpbmNsdWRlICJNZWRpYVN0cmVhbVNv
dXJjZUNhcGFiaWxpdGllcy5oIgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgorCitu
YW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIENhcGFiaWxpdHlSYW5nZTsKK2NsYXNzIE1lZGlh
U3RyZWFtU291cmNlQ2FwYWJpbGl0aWVzOworCitjbGFzcyBBbGxBdWRpb0NhcGFiaWxpdGllcyA6
IHB1YmxpYyBNZWRpYVN0cmVhbUNhcGFiaWxpdGllcyB7CitwdWJsaWM6CisgICAgc3RhdGljIFBh
c3NSZWZQdHI8QWxsQXVkaW9DYXBhYmlsaXRpZXM+IGNyZWF0ZShQYXNzUmVmUHRyPE1lZGlhU3Ry
ZWFtU291cmNlQ2FwYWJpbGl0aWVzPiBjYXBhYmlsaXRpZXMpCisgICAgeworICAgICAgICByZXR1
cm4gYWRvcHRSZWYobmV3IEFsbEF1ZGlvQ2FwYWJpbGl0aWVzKGNhcGFiaWxpdGllcykpOworICAg
IH0KKyAgICB2aXJ0dWFsIH5BbGxBdWRpb0NhcGFiaWxpdGllcygpIHsgfQorCitwcml2YXRlOgor
ICAgIGV4cGxpY2l0IEFsbEF1ZGlvQ2FwYWJpbGl0aWVzKFBhc3NSZWZQdHI8TWVkaWFTdHJlYW1T
b3VyY2VDYXBhYmlsaXRpZXM+IGNhcGFiaWxpdGllcykKKyAgICAgICAgOiBNZWRpYVN0cmVhbUNh
cGFiaWxpdGllcyhjYXBhYmlsaXRpZXMpCisgICAgeworICAgIH0KK307CisKK30gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEFsbEF1ZGlvQ2FwYWJpbGl0aWVzX2gKKworI2VuZGlm
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL0FsbEF1ZGlvQ2FwYWJp
bGl0aWVzLmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3Ry
ZWFtL0FsbEF1ZGlvQ2FwYWJpbGl0aWVzLmlkbAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9XZWJD
b3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vQWxsQXVkaW9DYXBhYmlsaXRpZXMuaWRsCSh3b3JraW5n
IGNvcHkpCkBAIC0wLDAgKzEsMzMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAq
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisg
KiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCitbCisgICAgTm9JbnRlcmZhY2VPYmpl
Y3QsCisgICAgQ29uZGl0aW9uYWw9TUVESUFfU1RSRUFNLAorICAgIEpTR2VuZXJhdGVUb0pTT2Jq
ZWN0LAorXSBpbnRlcmZhY2UgQWxsQXVkaW9DYXBhYmlsaXRpZXMgOiBNZWRpYVN0cmVhbUNhcGFi
aWxpdGllcyB7CisgICAgcmVhZG9ubHkgYXR0cmlidXRlIERPTVN0cmluZ1tdIHNvdXJjZUlkOwor
ICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBDYXBhYmlsaXR5UmFuZ2Ugdm9sdW1lOworfTsKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vQWxsVmlkZW9DYXBhYmlsaXRpZXMu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL0FsbFZp
ZGVvQ2FwYWJpbGl0aWVzLmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L21lZGlhc3RyZWFtL0FsbFZpZGVvQ2FwYWJpbGl0aWVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTAs
MCArMSw1NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAq
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBBbGxWaWRlb0NhcGFiaWxpdGllc19oCisjZGVm
aW5lIEFsbFZpZGVvQ2FwYWJpbGl0aWVzX2gKKworI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCisK
KyNpbmNsdWRlICJNZWRpYVN0cmVhbUNhcGFiaWxpdGllcy5oIgorCituYW1lc3BhY2UgV2ViQ29y
ZSB7CisKK2NsYXNzIENhcGFiaWxpdHlSYW5nZTsKK2NsYXNzIE1lZGlhU3RyZWFtU291cmNlQ2Fw
YWJpbGl0aWVzOworCitjbGFzcyBBbGxWaWRlb0NhcGFiaWxpdGllcyA6IHB1YmxpYyBNZWRpYVN0
cmVhbUNhcGFiaWxpdGllcyB7CitwdWJsaWM6CisgICAgc3RhdGljIFBhc3NSZWZQdHI8QWxsVmlk
ZW9DYXBhYmlsaXRpZXM+IGNyZWF0ZShQYXNzUmVmUHRyPE1lZGlhU3RyZWFtU291cmNlQ2FwYWJp
bGl0aWVzPiBjYXBhYmlsaXRpZXMpCisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3
IEFsbFZpZGVvQ2FwYWJpbGl0aWVzKGNhcGFiaWxpdGllcykpOworICAgIH0KKyAgICB2aXJ0dWFs
IH5BbGxWaWRlb0NhcGFiaWxpdGllcygpIHsgfQorCitwcml2YXRlOgorICAgIGV4cGxpY2l0IEFs
bFZpZGVvQ2FwYWJpbGl0aWVzKFBhc3NSZWZQdHI8TWVkaWFTdHJlYW1Tb3VyY2VDYXBhYmlsaXRp
ZXM+IGNhcGFiaWxpdGllcykKKyAgICAgICAgOiBNZWRpYVN0cmVhbUNhcGFiaWxpdGllcyhjYXBh
YmlsaXRpZXMpCisgICAgeworICAgIH0KK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKwor
I2VuZGlmIC8vIEFsbFZpZGVvQ2FwYWJpbGl0aWVzX2gKKworI2VuZGlmCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL0FsbFZpZGVvQ2FwYWJpbGl0aWVzLmlkbAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL0FsbFZpZGVvQ2Fw
YWJpbGl0aWVzLmlkbAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVk
aWFzdHJlYW0vQWxsVmlkZW9DYXBhYmlsaXRpZXMuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAg
KzEsMzggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLiAKKyAqLworCitbCisgICAgTm9JbnRlcmZhY2VPYmplY3QsCisgICAgQ29uZGl0
aW9uYWw9TUVESUFfU1RSRUFNLAorICAgIEpTR2VuZXJhdGVUb0pTT2JqZWN0LAorXSBpbnRlcmZh
Y2UgQWxsVmlkZW9DYXBhYmlsaXRpZXMgOiBNZWRpYVN0cmVhbUNhcGFiaWxpdGllcyB7CisgICAg
cmVhZG9ubHkgYXR0cmlidXRlIERPTVN0cmluZ1tdIHNvdXJjZVR5cGU7CisgICAgcmVhZG9ubHkg
YXR0cmlidXRlIERPTVN0cmluZ1tdIHNvdXJjZUlkOworICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBD
YXBhYmlsaXR5UmFuZ2Ugd2lkdGg7CisgICAgcmVhZG9ubHkgYXR0cmlidXRlIENhcGFiaWxpdHlS
YW5nZSBoZWlnaHQ7CisgICAgcmVhZG9ubHkgYXR0cmlidXRlIENhcGFiaWxpdHlSYW5nZSBmcmFt
ZVJhdGU7CisgICAgcmVhZG9ubHkgYXR0cmlidXRlIENhcGFiaWxpdHlSYW5nZSBhc3BlY3RSYXRp
bzsKKyAgICByZWFkb25seSBhdHRyaWJ1dGUgRE9NU3RyaW5nW10gIGZhY2luZ01vZGU7Cit9OwpJ
bmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9BdWRpb1N0cmVhbVRyYWNr
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL0F1
ZGlvU3RyZWFtVHJhY2suY3BwCShyZXZpc2lvbiAxNTcwMTYpCisrKyBTb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL21lZGlhc3RyZWFtL0F1ZGlvU3RyZWFtVHJhY2suY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0zNywxNCArMzcsMTcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBQYXNzUmVmUHRyPEF1ZGlv
U3RyZWFtVHJhY2s+IEF1ZGlvU3RyZWFtVHJhY2s6OmNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250
ZXh0KiBjb250ZXh0LCBjb25zdCBEaWN0aW9uYXJ5JiBhdWRpb0NvbnN0cmFpbnRzKQogewotICAg
IFJlZlB0cjxBdWRpb1N0cmVhbVRyYWNrPiB0cmFjayA9IGFkb3B0UmVmKG5ldyBBdWRpb1N0cmVh
bVRyYWNrKGNvbnRleHQsIDAsICZhdWRpb0NvbnN0cmFpbnRzKSk7Ci0gICAgcmV0dXJuIHRyYWNr
LnJlbGVhc2UoKTsKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3IEF1ZGlvU3RyZWFtVHJhY2soY29u
dGV4dCwgMCwgJmF1ZGlvQ29uc3RyYWludHMpKTsKIH0KIAogUGFzc1JlZlB0cjxBdWRpb1N0cmVh
bVRyYWNrPiBBdWRpb1N0cmVhbVRyYWNrOjpjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCog
Y29udGV4dCwgTWVkaWFTdHJlYW1Tb3VyY2UqIHNvdXJjZSkKIHsKLSAgICBSZWZQdHI8QXVkaW9T
dHJlYW1UcmFjaz4gdHJhY2sgPSBhZG9wdFJlZihuZXcgQXVkaW9TdHJlYW1UcmFjayhjb250ZXh0
LCBzb3VyY2UsIDApKTsKLSAgICByZXR1cm4gdHJhY2sucmVsZWFzZSgpOworICAgIHJldHVybiBh
ZG9wdFJlZihuZXcgQXVkaW9TdHJlYW1UcmFjayhjb250ZXh0LCBzb3VyY2UsIDApKTsKK30KKwor
UGFzc1JlZlB0cjxBdWRpb1N0cmVhbVRyYWNrPiBBdWRpb1N0cmVhbVRyYWNrOjpjcmVhdGUoTWVk
aWFTdHJlYW1UcmFjayogdHJhY2spCit7CisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBBdWRpb1N0
cmVhbVRyYWNrKHRyYWNrKSk7CiB9CiAKIEF1ZGlvU3RyZWFtVHJhY2s6OkF1ZGlvU3RyZWFtVHJh
Y2soU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgTWVkaWFTdHJlYW1Tb3VyY2UqIHNv
dXJjZSwgY29uc3QgRGljdGlvbmFyeSogYXVkaW9Db25zdHJhaW50cykKQEAgLTUyLDYgKzU1LDEx
IEBAIEF1ZGlvU3RyZWFtVHJhY2s6OkF1ZGlvU3RyZWFtVHJhY2soU2NyaXAKIHsKIH0KIAorQXVk
aW9TdHJlYW1UcmFjazo6QXVkaW9TdHJlYW1UcmFjayhNZWRpYVN0cmVhbVRyYWNrKiB0cmFjaykK
KyAgICA6IE1lZGlhU3RyZWFtVHJhY2sodHJhY2spCit7Cit9CisKIGNvbnN0IEF0b21pY1N0cmlu
ZyYgQXVkaW9TdHJlYW1UcmFjazo6a2luZCgpIGNvbnN0CiB7CiAgICAgc3RhdGljIE5ldmVyRGVz
dHJveWVkPEF0b21pY1N0cmluZz4gYXVkaW9LaW5kKCJhdWRpbyIsIEF0b21pY1N0cmluZzo6Q29u
c3RydWN0RnJvbUxpdGVyYWwpOwpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0
cmVhbS9BdWRpb1N0cmVhbVRyYWNrLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9tZWRpYXN0cmVhbS9BdWRpb1N0cmVhbVRyYWNrLmgJKHJldmlzaW9uIDE1NzAzOSkKKysr
IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vQXVkaW9TdHJlYW1UcmFjay5oCSh3
b3JraW5nIGNvcHkpCkBAIC0yOSw4ICsyOSw4IEBACiAjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkK
IAogI2luY2x1ZGUgIk1lZGlhU3RyZWFtVHJhY2suaCIKLSNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+
CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtNDEsNiArNDEsNyBAQCBjbGFzcyBBdWRpb1N0cmVh
bVRyYWNrIEZJTkFMIDogcHVibGljIE1lCiBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8
QXVkaW9TdHJlYW1UcmFjaz4gY3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBjb25zdCBE
aWN0aW9uYXJ5Jik7CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8QXVkaW9TdHJlYW1UcmFjaz4gY3Jl
YXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBNZWRpYVN0cmVhbVNvdXJjZSopOworICAgIHN0
YXRpYyBQYXNzUmVmUHRyPEF1ZGlvU3RyZWFtVHJhY2s+IGNyZWF0ZShNZWRpYVN0cmVhbVRyYWNr
Kik7CiAKICAgICB2aXJ0dWFsIH5BdWRpb1N0cmVhbVRyYWNrKCkgeyB9CiAKQEAgLTQ4LDYgKzQ5
LDcgQEAgcHVibGljOgogCiBwcml2YXRlOgogICAgIEF1ZGlvU3RyZWFtVHJhY2soU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCosIE1lZGlhU3RyZWFtU291cmNlKiwgY29uc3QgRGljdGlvbmFyeSopOwor
ICAgIGV4cGxpY2l0IEF1ZGlvU3RyZWFtVHJhY2soTWVkaWFTdHJlYW1UcmFjayopOwogfTsKIAog
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRp
YXN0cmVhbS9DYXBhYmlsaXR5UmFuZ2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvbWVkaWFzdHJlYW0vQ2FwYWJpbGl0eVJhbmdlLmNwcAkocmV2aXNpb24gMCkKKysr
IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vQ2FwYWJpbGl0eVJhbmdlLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDkyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEz
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICog
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIK
KworI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCisKKyNpbmNsdWRlICJDYXBhYmlsaXR5UmFuZ2Uu
aCIKKworI2luY2x1ZGUgIkpTRE9NQmluZGluZy5oIgorI2luY2x1ZGUgIk1lZGlhU291cmNlU3Rh
dGVzLmgiCisjaW5jbHVkZSAiU2NyaXB0VmFsdWUuaCIKKyNpbmNsdWRlIDxpbnRlcnByZXRlci9D
YWxsRnJhbWUuaD4KKyNpbmNsdWRlIDxydW50aW1lL0pTQ0pTVmFsdWUuaD4KKwordXNpbmcgbmFt
ZXNwYWNlIEpTQzsKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitQYXNzUmVmUHRyPENhcGFiaWxp
dHlSYW5nZT4gQ2FwYWJpbGl0eVJhbmdlOjpjcmVhdGUoY29uc3QgTWVkaWFTdHJlYW1Tb3VyY2VD
YXBhYmlsaXR5UmFuZ2UmIHJhbmdlSW5mbykKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3IENh
cGFiaWxpdHlSYW5nZShyYW5nZUluZm8pKTsKK30KKworQ2FwYWJpbGl0eVJhbmdlOjpDYXBhYmls
aXR5UmFuZ2UoY29uc3QgTWVkaWFTdHJlYW1Tb3VyY2VDYXBhYmlsaXR5UmFuZ2UmIHJhbmdlSW5m
bykKKyAgICA6IG1fcmFuZ2VJbmZvKHJhbmdlSW5mbykKK3sKK30KKworc3RhdGljIFNjcmlwdFZh
bHVlIHNjcmlwdFZhbHVlKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgTWVkaWFTdHJlYW1Tb3VyY2VD
YXBhYmlsaXR5UmFuZ2U6OlZhbHVlVW5pb24mIHZhbHVlLCBNZWRpYVN0cmVhbVNvdXJjZUNhcGFi
aWxpdHlSYW5nZTo6VHlwZSB0eXBlKQoreworICAgIC8vIE5PVEU6IHRoZSBzcGVjIHNheXM6Cisg
ICAgLy8gICAgICAuLi4gYW4gaW1wbGVtZW50YXRpb24gc2hvdWxkIG1ha2UgYSByZWFzb25hYmxl
IGF0dGVtcHQgdG8gdHJhbnNsYXRlIGFuZCBzY2FsZSB0aGUgaGFyZHdhcmUncyBzZXR0aW5nCisg
ICAgLy8gICAgICBvbnRvIHRoZSBtYXBwaW5nIHByb3ZpZGVkIGJ5IHRoaXMgc3BlY2lmaWNhdGlv
bi4gSWYgdGhpcyBpcyBub3QgcG9zc2libGUgZHVlIHRvIHRoZSB1c2VyIGFnZW50J3MKKyAgICAv
LyAgICAgIGluYWJpbGl0eSB0byByZXRyaWV2ZSBhIGdpdmVuIGNhcGFiaWxpdHkgZnJvbSBhIHNv
dXJjZSwgdGhlbiBmb3IgQ2FwYWJpbGl0eVJhbmdlLXR5cGVkIGNhcGFiaWxpdGllcywKKyAgICAv
LyAgICAgIHRoZSBtaW4gYW5kIG1heCBmaWVsZHMgd2lsbCBub3QgYmUgcHJlc2VudCBvbiB0aGUg
cmV0dXJuZWQgZGljdGlvbmFyeSwgYW5kIHRoZSBzdXBwb3J0ZWQgZmllbGQgd2lsbCBiZSBmYWxz
ZS4KKyAgICAvLyBXZSBkb24ndCBkbyB0aGlzIGN1cnJlbnRseSBiZWNhdXNlIEkgZG9uJ3Qga25v
dyBvZiBhbiBpbnN0YW5jZSB3aGVyZSBpdCBpc24ndCBwb3NzaWJsZSB0byByZXRyaWV2ZSBhIHNv
dXJjZQorICAgIC8vIGNhcGFiaWxpdHksIGJ1dCB3aGVuIHdlIGhhdmUgdG8gZGVhbCB3aXRoIHRo
aXMgd2Ugd2lsbCBuZWVkIHRvIG1hcmsgQ2FwYWJpbGl0eVJhbmdlLm1pbiBhbmQgQ2FwYWJpbGl0
eVJhbmdlLm1heCBhcworICAgIC8vICJDdXN0b20iIGFuZCByZXR1cm4ganNVbmRlZmluZWQoKSBm
cm9tIHRoZSBjdXN0b20gZ2V0dGVyIHRvIHN1cHBvcnQgaXQuCisgICAgCisgICAgc3dpdGNoICh0
eXBlKSB7CisgICAgY2FzZSBNZWRpYVN0cmVhbVNvdXJjZUNhcGFiaWxpdHlSYW5nZTo6RmxvYXQ6
CisgICAgICAgIHJldHVybiBTY3JpcHRWYWx1ZShleGVjLT52bSgpLCBKU1ZhbHVlKHZhbHVlLmFz
RmxvYXQpKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBNZWRpYVN0cmVhbVNvdXJjZUNhcGFi
aWxpdHlSYW5nZTo6VUxvbmc6CisgICAgICAgIHJldHVybiBTY3JpcHRWYWx1ZShleGVjLT52bSgp
LCBKU1ZhbHVlKHZhbHVlLmFzVUxvbmcpKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBNZWRp
YVN0cmVhbVNvdXJjZUNhcGFiaWxpdHlSYW5nZTo6VW5kZWZpbmVkOgorICAgICAgICByZXR1cm4g
U2NyaXB0VmFsdWUoZXhlYy0+dm0oKSwganNVbmRlZmluZWQoKSk7CisgICAgICAgIGJyZWFrOwor
ICAgIH0KKworICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiBTY3JpcHRWYWx1
ZShleGVjLT52bSgpLCBqc1VuZGVmaW5lZCgpKTsKK30KKworU2NyaXB0VmFsdWUgQ2FwYWJpbGl0
eVJhbmdlOjptaW4oRXhlY1N0YXRlKiBleGVjKSBjb25zdAoreworICAgIHJldHVybiBzY3JpcHRW
YWx1ZShleGVjLCBtX3JhbmdlSW5mby5taW4oKSwgbV9yYW5nZUluZm8udHlwZSgpKTsKK30KKwor
U2NyaXB0VmFsdWUgQ2FwYWJpbGl0eVJhbmdlOjptYXgoRXhlY1N0YXRlKiBleGVjKSBjb25zdAor
eworICAgIHJldHVybiBzY3JpcHRWYWx1ZShleGVjLCBtX3JhbmdlSW5mby5tYXgoKSwgbV9yYW5n
ZUluZm8udHlwZSgpKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vQ2FwYWJpbGl0eVJhbmdlLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9DYXBhYmls
aXR5UmFuZ2UuaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFz
dHJlYW0vQ2FwYWJpbGl0eVJhbmdlLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw2MCBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSwgSU5D
LiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMu
IE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICoKKyAq
LworCisjaWZuZGVmIENhcGFiaWxpdHlSYW5nZV9oCisjZGVmaW5lIENhcGFiaWxpdHlSYW5nZV9o
CisKKyNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQorCisjaW5jbHVkZSAiTWVkaWFTdHJlYW1Tb3Vy
Y2VDYXBhYmlsaXRpZXMuaCIKKyNpbmNsdWRlICJTY3JpcHRWYWx1ZS5oIgorI2luY2x1ZGUgIlNj
cmlwdFdyYXBwYWJsZS5oIgorI2luY2x1ZGUgPGludGVycHJldGVyL0NhbGxGcmFtZS5oPgorI2lu
Y2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3Mg
Q2FwYWJpbGl0eVJhbmdlIDogcHVibGljIFJlZkNvdW50ZWQ8Q2FwYWJpbGl0eVJhbmdlPiwgcHVi
bGljIFNjcmlwdFdyYXBwYWJsZSB7CitwdWJsaWM6CisgICAgdmlydHVhbCB+Q2FwYWJpbGl0eVJh
bmdlKCkgeyB9CisKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxDYXBhYmlsaXR5UmFuZ2U+IGNyZWF0
ZShjb25zdCBNZWRpYVN0cmVhbVNvdXJjZUNhcGFiaWxpdHlSYW5nZSYpOworCisgICAgU2NyaXB0
VmFsdWUgbWluKEpTQzo6RXhlY1N0YXRlKikgY29uc3Q7CisgICAgU2NyaXB0VmFsdWUgbWF4KEpT
Qzo6RXhlY1N0YXRlKikgY29uc3Q7CisgICAgYm9vbCBzdXBwb3J0ZWQoKSBjb25zdCB7IHJldHVy
biBtX3JhbmdlSW5mby5zdXBwb3J0ZWQoKTsgfQorCitwcml2YXRlOgorICAgIENhcGFiaWxpdHlS
YW5nZShjb25zdCBNZWRpYVN0cmVhbVNvdXJjZUNhcGFiaWxpdHlSYW5nZSYpOworICAgIAorICAg
IE1lZGlhU3RyZWFtU291cmNlQ2FwYWJpbGl0eVJhbmdlIG1fcmFuZ2VJbmZvOworfTsKKworfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gQ2FwYWJpbGl0eVJhbmdlX2gKKworI2Vu
ZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL0NhcGFiaWxpdHlS
YW5nZS5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVh
bS9DYXBhYmlsaXR5UmFuZ2UuaWRsCShyZXZpc2lvbiAwKQorKysgU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9tZWRpYXN0cmVhbS9DYXBhYmlsaXR5UmFuZ2UuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0w
LDAgKzEsMzMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisg
KiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisg
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLiAKKyAqLworCitbCisgICAgTm9JbnRlcmZhY2VPYmplY3QsCisgICAgQ29u
ZGl0aW9uYWw9TUVESUFfU1RSRUFNLAorXSBpbnRlcmZhY2UgQ2FwYWJpbGl0eVJhbmdlIHsKKyAg
ICBbQ2FsbFdpdGg9U2NyaXB0U3RhdGVdIHJlYWRvbmx5IGF0dHJpYnV0ZSBhbnkgbWF4OworICAg
IFtDYWxsV2l0aD1TY3JpcHRTdGF0ZV0gcmVhZG9ubHkgYXR0cmlidXRlIGFueSBtaW47CisgICAg
cmVhZG9ubHkgYXR0cmlidXRlIGJvb2xlYW4gc3VwcG9ydGVkOworfTsKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFDb25zdHJhaW50c0ltcGwuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhQ29uc3RyYWlu
dHNJbXBsLmgJKHJldmlzaW9uIDE1NzAxNikKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVk
aWFzdHJlYW0vTWVkaWFDb25zdHJhaW50c0ltcGwuaAkod29ya2luZyBjb3B5KQpAQCAtNDUsNyAr
NDUsOSBAQCBjbGFzcyBNZWRpYUNvbnN0cmFpbnRzSW1wbCA6IHB1YmxpYyBNZWRpCiBwdWJsaWM6
CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8TWVkaWFDb25zdHJhaW50c0ltcGw+IGNyZWF0ZSgpOwog
ICAgIHN0YXRpYyBQYXNzUmVmUHRyPE1lZGlhQ29uc3RyYWludHNJbXBsPiBjcmVhdGUoY29uc3Qg
RGljdGlvbmFyeSYsIEV4Y2VwdGlvbkNvZGUmKTsKKwogICAgIHZpcnR1YWwgfk1lZGlhQ29uc3Ry
YWludHNJbXBsKCk7CisgICAgYm9vbCBpbml0aWFsaXplKGNvbnN0IERpY3Rpb25hcnkmKTsKIAog
ICAgIHZpcnR1YWwgdm9pZCBnZXRNYW5kYXRvcnlDb25zdHJhaW50cyhWZWN0b3I8TWVkaWFDb25z
dHJhaW50PiYpIGNvbnN0IE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBnZXRPcHRpb25hbENv
bnN0cmFpbnRzKFZlY3RvcjxNZWRpYUNvbnN0cmFpbnQ+JikgY29uc3QgT1ZFUlJJREU7CkBAIC01
NSw3ICs1Nyw2IEBAIHB1YmxpYzoKIAogcHJpdmF0ZToKICAgICBNZWRpYUNvbnN0cmFpbnRzSW1w
bCgpIHsgfQotICAgIGJvb2wgaW5pdGlhbGl6ZShjb25zdCBEaWN0aW9uYXJ5Jik7CiAKICAgICBI
YXNoTWFwPFN0cmluZywgU3RyaW5nPiBtX21hbmRhdG9yeUNvbnN0cmFpbnRzOwogICAgIFZlY3Rv
cjxNZWRpYUNvbnN0cmFpbnQ+IG1fb3B0aW9uYWxDb25zdHJhaW50czsKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTb3VyY2VTdGF0ZXMuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTb3VyY2VTdGF0
ZXMuY3BwCShyZXZpc2lvbiAwKQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVh
bS9NZWRpYVNvdXJjZVN0YXRlcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxMDAgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09N
UFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01Q
VVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2lmIEVOQUJMRShNRURJQV9TVFJFQU0p
CisKKyNpbmNsdWRlICJNZWRpYVNvdXJjZVN0YXRlcy5oIgorCisjaW5jbHVkZSA8d3RmL05ldmVy
RGVzdHJveWVkLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworUGFzc1JlZlB0cjxNZWRpYVNv
dXJjZVN0YXRlcz4gTWVkaWFTb3VyY2VTdGF0ZXM6OmNyZWF0ZShjb25zdCBNZWRpYVN0cmVhbVNv
dXJjZVN0YXRlcyYgc3RhdGVzKQoreworICAgIHJldHVybiBhZG9wdFJlZihuZXcgTWVkaWFTb3Vy
Y2VTdGF0ZXMoc3RhdGVzKSk7Cit9CisKK01lZGlhU291cmNlU3RhdGVzOjpNZWRpYVNvdXJjZVN0
YXRlcyhjb25zdCBNZWRpYVN0cmVhbVNvdXJjZVN0YXRlcyYgc3RhdGVzKQorICAgIDogbV9Tb3Vy
Y2VTdGF0ZXMoc3RhdGVzKQoreworfQorCitjb25zdCBBdG9taWNTdHJpbmcmIE1lZGlhU291cmNl
U3RhdGVzOjpmYWNpbmdNb2RlKE1lZGlhU3RyZWFtU291cmNlU3RhdGVzOjpWaWRlb0ZhY2luZ01v
ZGUgbW9kZSkKK3sKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8QXRvbWljU3RyaW5nPiB1c2Vy
RmFjaW5nKCJ1c2VyIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CisgICAg
c3RhdGljIE5ldmVyRGVzdHJveWVkPEF0b21pY1N0cmluZz4gZW52aXJvbm1lbnRGYWNpbmcoImVu
dmlyb25tZW50IiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CisgICAgc3Rh
dGljIE5ldmVyRGVzdHJveWVkPEF0b21pY1N0cmluZz4gbGVmdEZhY2luZygibGVmdCIsIEF0b21p
Y1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3ll
ZDxBdG9taWNTdHJpbmc+IHJpZ2h0RmFjaW5nKCJyaWdodCIsIEF0b21pY1N0cmluZzo6Q29uc3Ry
dWN0RnJvbUxpdGVyYWwpOworICAgIAorICAgIHN3aXRjaCAobW9kZSkgeworICAgIGNhc2UgTWVk
aWFTdHJlYW1Tb3VyY2VTdGF0ZXM6OlVzZXI6CisgICAgICAgIHJldHVybiB1c2VyRmFjaW5nOwor
ICAgIGNhc2UgTWVkaWFTdHJlYW1Tb3VyY2VTdGF0ZXM6OkVudmlyb25tZW50OgorICAgICAgICBy
ZXR1cm4gZW52aXJvbm1lbnRGYWNpbmc7CisgICAgY2FzZSBNZWRpYVN0cmVhbVNvdXJjZVN0YXRl
czo6TGVmdDoKKyAgICAgICAgcmV0dXJuIGxlZnRGYWNpbmc7CisgICAgY2FzZSBNZWRpYVN0cmVh
bVNvdXJjZVN0YXRlczo6UmlnaHQ6CisgICAgICAgIHJldHVybiByaWdodEZhY2luZzsKKyAgICB9
CisKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4gZW1wdHlBdG9tOworfQor
Citjb25zdCBBdG9taWNTdHJpbmcmIE1lZGlhU291cmNlU3RhdGVzOjpzb3VyY2VUeXBlKE1lZGlh
U3RyZWFtU291cmNlU3RhdGVzOjpTb3VyY2VUeXBlIHNvdXJjZVR5cGUpCit7CisgICAgc3RhdGlj
IE5ldmVyRGVzdHJveWVkPEF0b21pY1N0cmluZz4gbm9uZSgibm9uZSIsIEF0b21pY1N0cmluZzo6
Q29uc3RydWN0RnJvbUxpdGVyYWwpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxBdG9taWNT
dHJpbmc+IGNhbWVyYSgiY2FtZXJhIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJh
bCk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEF0b21pY1N0cmluZz4gbWljcm9waG9uZSgi
bWljcm9waG9uZSIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOworCisgICAg
c3dpdGNoIChzb3VyY2VUeXBlKSB7CisgICAgY2FzZSBNZWRpYVN0cmVhbVNvdXJjZVN0YXRlczo6
Tm9uZToKKyAgICAgICAgcmV0dXJuIG5vbmU7CisgICAgY2FzZSBNZWRpYVN0cmVhbVNvdXJjZVN0
YXRlczo6Q2FtZXJhOgorICAgICAgICByZXR1cm4gY2FtZXJhOworICAgIGNhc2UgTWVkaWFTdHJl
YW1Tb3VyY2VTdGF0ZXM6Ok1pY3JvcGhvbmU6CisgICAgICAgIHJldHVybiBtaWNyb3Bob25lOwor
ICAgIH0KKworICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiBlbXB0eUF0b207
Cit9CisKK2NvbnN0IEF0b21pY1N0cmluZyYgTWVkaWFTb3VyY2VTdGF0ZXM6OnNvdXJjZVR5cGUo
KSBjb25zdAoreworICAgIHJldHVybiBNZWRpYVNvdXJjZVN0YXRlczo6c291cmNlVHlwZShtX1Nv
dXJjZVN0YXRlcy5zb3VyY2VUeXBlKTsKK30KKworY29uc3QgQXRvbWljU3RyaW5nJiBNZWRpYVNv
dXJjZVN0YXRlczo6ZmFjaW5nTW9kZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE1lZGlhU291cmNl
U3RhdGVzOjpmYWNpbmdNb2RlKG1fU291cmNlU3RhdGVzLmZhY2luZ01vZGUpOworfQorCisKK30g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL21lZGlhc3RyZWFtL01lZGlhU291cmNlU3RhdGVzLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVNvdXJjZVN0YXRlcy5oCShyZXZpc2lv
biAwKQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVNvdXJjZVN0
YXRlcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNjYgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJ
UycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICog
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkK
KyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYg
TWVkaWFTb3VyY2VTdGF0ZXNfaAorI2RlZmluZSBNZWRpYVNvdXJjZVN0YXRlc19oCisKKyNpZiBF
TkFCTEUoTUVESUFfU1RSRUFNKQorCisjaW5jbHVkZSAiTWVkaWFTdHJlYW1Tb3VyY2VDYXBhYmls
aXRpZXMuaCIKKyNpbmNsdWRlICJTY3JpcHRXcmFwcGFibGUuaCIKKyNpbmNsdWRlIDx3dGYvRm9y
d2FyZC5oPgorI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CisKK25hbWVzcGFjZSBXZWJDb3Jl
IHsKKworY2xhc3MgTWVkaWFTb3VyY2VTdGF0ZXMgOiBwdWJsaWMgUmVmQ291bnRlZDxNZWRpYVNv
dXJjZVN0YXRlcz4sIHB1YmxpYyBTY3JpcHRXcmFwcGFibGUgeworcHVibGljOgorICAgIHN0YXRp
YyBQYXNzUmVmUHRyPE1lZGlhU291cmNlU3RhdGVzPiBjcmVhdGUoY29uc3QgTWVkaWFTdHJlYW1T
b3VyY2VTdGF0ZXMmKTsKKworICAgIHN0YXRpYyBjb25zdCBBdG9taWNTdHJpbmcmIHNvdXJjZVR5
cGUoTWVkaWFTdHJlYW1Tb3VyY2VTdGF0ZXM6OlNvdXJjZVR5cGUpOworICAgIHN0YXRpYyBjb25z
dCBBdG9taWNTdHJpbmcmIGZhY2luZ01vZGUoTWVkaWFTdHJlYW1Tb3VyY2VTdGF0ZXM6OlZpZGVv
RmFjaW5nTW9kZSk7CisgICAgCisgICAgY29uc3QgQXRvbWljU3RyaW5nJiBzb3VyY2VUeXBlKCkg
Y29uc3Q7CisgICAgY29uc3QgQXRvbWljU3RyaW5nJiBzb3VyY2VJZCgpIGNvbnN0IHsgcmV0dXJu
IG1fU291cmNlU3RhdGVzLnNvdXJjZUlkOyB9CisgICAgdW5zaWduZWQgbG9uZyB3aWR0aCgpIGNv
bnN0IHsgcmV0dXJuIG1fU291cmNlU3RhdGVzLndpZHRoOyB9CisgICAgdW5zaWduZWQgbG9uZyBo
ZWlnaHQoKSBjb25zdCB7IHJldHVybiBtX1NvdXJjZVN0YXRlcy5oZWlnaHQ7IH0KKyAgICBmbG9h
dCBmcmFtZVJhdGUoKSBjb25zdCB7IHJldHVybiBtX1NvdXJjZVN0YXRlcy5mcmFtZVJhdGU7IH0K
KyAgICBmbG9hdCBhc3BlY3RSYXRpbygpIGNvbnN0IHsgcmV0dXJuIG1fU291cmNlU3RhdGVzLmFz
cGVjdFJhdGlvOyB9CisgICAgY29uc3QgQXRvbWljU3RyaW5nJiBmYWNpbmdNb2RlKCkgY29uc3Q7
CisgICAgdW5zaWduZWQgbG9uZyB2b2x1bWUoKSBjb25zdCB7IHJldHVybiBtX1NvdXJjZVN0YXRl
cy52b2x1bWU7IH0KKyAgICAKKyAgICBib29sIGhhc1ZpZGVvU291cmNlKCkgY29uc3QgeyByZXR1
cm4gbV9Tb3VyY2VTdGF0ZXMuc291cmNlVHlwZSA9PSBNZWRpYVN0cmVhbVNvdXJjZVN0YXRlczo6
Q2FtZXJhOyB9CisKK3ByaXZhdGU6CisgICAgZXhwbGljaXQgTWVkaWFTb3VyY2VTdGF0ZXMoY29u
c3QgTWVkaWFTdHJlYW1Tb3VyY2VTdGF0ZXMmKTsKKworICAgIE1lZGlhU3RyZWFtU291cmNlU3Rh
dGVzIG1fU291cmNlU3RhdGVzOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5k
aWYgLy8gTWVkaWFTb3VyY2VTdGF0ZXNfaAorCisjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTb3VyY2VTdGF0ZXMuaWRsCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTb3VyY2VTdGF0ZXMuaWRs
CShyZXZpc2lvbiAwKQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRp
YVNvdXJjZVN0YXRlcy5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw0NCBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwg
SU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJ
TkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICog
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICov
CisKK2VudW0gU291cmNlVHlwZUVudW0geyAibm9uZSIsICJjYW1lcmEiLCAibWljcm9waG9uZSIg
fTsKK2VudW0gVmlkZW9GYWNpbmdNb2RlRW51bSB7ICJ1c2VyIiwgImVudmlyb25tZW50IiwgImxl
ZnQiLCAicmlnaHQiIH07CisKK1sKKyAgICBDb25kaXRpb25hbD1NRURJQV9TVFJFQU0sCisgICAg
SW1wbGVtZW50YXRpb25MYWNrc1ZUYWJsZSwKKyAgICBOb0ludGVyZmFjZU9iamVjdCwKK10gaW50
ZXJmYWNlIE1lZGlhU291cmNlU3RhdGVzIHsKKyAgICByZWFkb25seSBhdHRyaWJ1dGUgU291cmNl
VHlwZUVudW0gc291cmNlVHlwZTsKKyAgICByZWFkb25seSBhdHRyaWJ1dGUgRE9NU3RyaW5nIHNv
dXJjZUlkOworCisgICAgW0N1c3RvbUdldHRlcl0gcmVhZG9ubHkgYXR0cmlidXRlIHVuc2lnbmVk
IGxvbmcgd2lkdGg7CisgICAgW0N1c3RvbUdldHRlcl0gcmVhZG9ubHkgYXR0cmlidXRlIHVuc2ln
bmVkIGxvbmcgaGVpZ2h0OworICAgIFtDdXN0b21HZXR0ZXJdIHJlYWRvbmx5IGF0dHJpYnV0ZSBm
bG9hdCBmcmFtZVJhdGU7CisgICAgW0N1c3RvbUdldHRlcl0gcmVhZG9ubHkgYXR0cmlidXRlIGZs
b2F0IGFzcGVjdFJhdGlvOworICAgIFtDdXN0b21HZXR0ZXJdIHJlYWRvbmx5IGF0dHJpYnV0ZSBW
aWRlb0ZhY2luZ01vZGVFbnVtIGZhY2luZ01vZGU7CisgICAgW0N1c3RvbUdldHRlcl0gcmVhZG9u
bHkgYXR0cmlidXRlIHVuc2lnbmVkIGxvbmcgdm9sdW1lOworfTsKKwpJbmRleDogU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbS5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbS5jcHAJKHJldmlz
aW9uIDE1NzAxNikKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFT
dHJlYW0uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01NiwyMiArNTYsMTMgQEAgc3RhdGljIHZvaWQg
cHJvY2Vzc1RyYWNrKE1lZGlhU3RyZWFtVHJhYwogICAgICAgICByZXR1cm47CiAKICAgICBNZWRp
YVN0cmVhbVNvdXJjZSogc291cmNlID0gdHJhY2stPnNvdXJjZSgpOwotICAgIGlmICghY29udGFp
bnNTb3VyY2Uoc291cmNlVmVjdG9yLCBzb3VyY2UpKSB7Ci0gICAgICAgIGlmIChzb3VyY2UtPnN0
cmVhbSgpKSB7Ci0gICAgICAgICAgICAvLyBGSVhNRTogdGhpcyBzaG91bGQgbm90IGJlIG5lY2Vz
c2FyeSBiZWNhdXNlIHRyYWNrcyBhbmQgc3RyZWFtcyBtdXN0IGJlIGFibGUgdG8gc2hhcmUgc291
cmNlcywgYnV0IG91ciBjb2RlCi0gICAgICAgICAgICAvLyBjdXJyZW5sdHkgYXNzdW1lcyBlYWNo
IHNvdXJjZSBpcyBhdHRhY2hlZCB0byBqdXN0IG9uZSB0cmFjay4KLSAgICAgICAgICAgIC8vIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjE5NTQKLSAgICAgICAgICAg
IHNvdXJjZVZlY3Rvci5hcHBlbmQoTWVkaWFTdHJlYW1Tb3VyY2U6OmNyZWF0ZShzb3VyY2UtPmlk
KCksIHNvdXJjZS0+dHlwZSgpLCBzb3VyY2UtPm5hbWUoKSwgc291cmNlLT5yZWFkeVN0YXRlKCks
IHNvdXJjZS0+cmVxdWlyZXNBdWRpb0NvbnN1bWVyKCkpLmdldCgpKTsKLSAgICAgICAgfSBlbHNl
Ci0gICAgICAgICAgICBzb3VyY2VWZWN0b3IuYXBwZW5kKHNvdXJjZSk7Ci0gICAgfQorICAgIGlm
ICghY29udGFpbnNTb3VyY2Uoc291cmNlVmVjdG9yLCBzb3VyY2UpKQorICAgICAgICBzb3VyY2VW
ZWN0b3IuYXBwZW5kKHNvdXJjZSk7CiB9CiAKIHN0YXRpYyBQYXNzUmVmUHRyPE1lZGlhU3RyZWFt
PiBjcmVhdGVGcm9tU291cmNlVmVjdG9ycyhTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0
LCBjb25zdCBNZWRpYVN0cmVhbVNvdXJjZVZlY3RvciYgYXVkaW9Tb3VyY2VzLCBjb25zdCBNZWRp
YVN0cmVhbVNvdXJjZVZlY3RvciYgdmlkZW9Tb3VyY2VzKQogewogICAgIFJlZlB0cjxNZWRpYVN0
cmVhbURlc2NyaXB0b3I+IGRlc2NyaXB0b3IgPSBNZWRpYVN0cmVhbURlc2NyaXB0b3I6OmNyZWF0
ZShhdWRpb1NvdXJjZXMsIHZpZGVvU291cmNlcyk7Ci0gICAgTWVkaWFTdHJlYW1DZW50ZXI6OnNo
YXJlZCgpLmRpZENyZWF0ZU1lZGlhU3RyZWFtKGRlc2NyaXB0b3IuZ2V0KCkpOwotCiAgICAgcmV0
dXJuIE1lZGlhU3RyZWFtOjpjcmVhdGUoY29udGV4dCwgZGVzY3JpcHRvci5yZWxlYXNlKCkpOwog
fQogCkBAIC0xMjEsNiArMTEyLDcgQEAgTWVkaWFTdHJlYW06Ok1lZGlhU3RyZWFtKFNjcmlwdEV4
ZWN1dGlvbgogICAgICwgbV9kZXNjcmlwdG9yKHN0cmVhbURlc2NyaXB0b3IpCiAgICAgLCBtX3Nj
aGVkdWxlZEV2ZW50VGltZXIodGhpcywgJk1lZGlhU3RyZWFtOjpzY2hlZHVsZWRFdmVudFRpbWVy
RmlyZWQpCiB7CisgICAgQVNTRVJUKG1fZGVzY3JpcHRvcik7CiAgICAgbV9kZXNjcmlwdG9yLT5z
ZXRDbGllbnQodGhpcyk7CiAKICAgICBzaXplX3QgbnVtYmVyT2ZBdWRpb1RyYWNrcyA9IG1fZGVz
Y3JpcHRvci0+bnVtYmVyT2ZBdWRpb1N0cmVhbXMoKTsKQEAgLTE1Niw3ICsxNDgsNiBAQCB2b2lk
IE1lZGlhU3RyZWFtOjpzdG9wKCkKICAgICBpZiAoZW5kZWQoKSkKICAgICAgICAgcmV0dXJuOwog
Ci0gICAgTWVkaWFTdHJlYW1DZW50ZXI6OnNoYXJlZCgpLmRpZFN0b3BMb2NhbE1lZGlhU3RyZWFt
KGRlc2NyaXB0b3IoKSk7CiAgICAgc2V0RW5kZWQoKTsKIH0KIApAQCAtMTg0LDggKzE3NSw2IEBA
IHZvaWQgTWVkaWFTdHJlYW06OmFkZFRyYWNrKFBhc3NSZWZQdHI8TWUKICAgICAgICAgbV92aWRl
b1RyYWNrcy5hcHBlbmQodHJhY2spOwogICAgICAgICBicmVhazsKICAgICB9Ci0KLSAgICBNZWRp
YVN0cmVhbUNlbnRlcjo6c2hhcmVkKCkuZGlkQWRkTWVkaWFTdHJlYW1UcmFjayh0cmFjay0+c291
cmNlKCkpOwogfQogCiB2b2lkIE1lZGlhU3RyZWFtOjpyZW1vdmVUcmFjayhQYXNzUmVmUHRyPE1l
ZGlhU3RyZWFtVHJhY2s+IHBycFRyYWNrLCBFeGNlcHRpb25Db2RlJiBlYykKQEAgLTIyMyw4ICsy
MTIsNiBAQCB2b2lkIE1lZGlhU3RyZWFtOjpyZW1vdmVUcmFjayhQYXNzUmVmUHRyCiAKICAgICBp
ZiAoIW1fYXVkaW9UcmFja3Muc2l6ZSgpICYmICFtX3ZpZGVvVHJhY2tzLnNpemUoKSkKICAgICAg
ICAgc2V0RW5kZWQoKTsKLQotICAgIE1lZGlhU3RyZWFtQ2VudGVyOjpzaGFyZWQoKS5kaWRSZW1v
dmVNZWRpYVN0cmVhbVRyYWNrKHRyYWNrLT5zb3VyY2UoKSk7CiB9CiAKIE1lZGlhU3RyZWFtVHJh
Y2sqIE1lZGlhU3RyZWFtOjpnZXRUcmFja0J5SWQoU3RyaW5nIGlkKQpJbmRleDogU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbS5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW0uaAkocmV2aXNpb24g
MTU3MDE2KQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVh
bS5oCSh3b3JraW5nIGNvcHkpCkBAIC04OCwxNSArODgsMTMgQEAgcHJvdGVjdGVkOgogICAgIHZp
cnR1YWwgdm9pZCBjb250ZXh0RGVzdHJveWVkKCkgT1ZFUlJJREU7CiAKIHByaXZhdGU6Ci0gICAg
Ly8gTWVkaWFTdHJlYW1EZXNjcmlwdG9yQ2xpZW50Ci0gICAgdmlydHVhbCB2b2lkIHRyYWNrRGlk
RW5kKCkgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCB2b2lkIHN0cmVhbURpZEVuZCgpIE9WRVJSSURF
OwotICAgIAogICAgIC8vIEV2ZW50VGFyZ2V0CiAgICAgdmlydHVhbCB2b2lkIHJlZkV2ZW50VGFy
Z2V0KCkgT1ZFUlJJREUgeyByZWYoKTsgfQogICAgIHZpcnR1YWwgdm9pZCBkZXJlZkV2ZW50VGFy
Z2V0KCkgT1ZFUlJJREUgeyBkZXJlZigpOyB9CiAKICAgICAvLyBNZWRpYVN0cmVhbURlc2NyaXB0
b3JDbGllbnQKKyAgICB2aXJ0dWFsIHZvaWQgdHJhY2tEaWRFbmQoKSBPVkVSUklERTsKKyAgICB2
aXJ0dWFsIHZvaWQgc3RyZWFtRGlkRW5kKCkgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIGFk
ZFJlbW90ZVNvdXJjZShNZWRpYVN0cmVhbVNvdXJjZSopIE9WRVJSSURFOwogICAgIHZpcnR1YWwg
dm9pZCByZW1vdmVSZW1vdGVTb3VyY2UoTWVkaWFTdHJlYW1Tb3VyY2UqKSBPVkVSUklERTsKIApJ
bmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbUNhcGFi
aWxpdGllcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0
cmVhbS9NZWRpYVN0cmVhbUNhcGFiaWxpdGllcy5jcHAJKHJldmlzaW9uIDApCisrKyBTb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtQ2FwYWJpbGl0aWVzLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDE0MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
MyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5E
IEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
CisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZp
Zy5oIgorCisjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKKworI2luY2x1ZGUgIk1lZGlhU3RyZWFt
Q2FwYWJpbGl0aWVzLmgiCisKKyNpbmNsdWRlICJBbGxBdWRpb0NhcGFiaWxpdGllcy5oIgorI2lu
Y2x1ZGUgIkFsbFZpZGVvQ2FwYWJpbGl0aWVzLmgiCisjaW5jbHVkZSAiQ2FwYWJpbGl0eVJhbmdl
LmgiCisjaW5jbHVkZSAiTWVkaWFTb3VyY2VTdGF0ZXMuaCIKKyNpbmNsdWRlICJNZWRpYVN0cmVh
bVNvdXJjZUNhcGFiaWxpdGllcy5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1Bhc3NSZWZQ
dHI8TWVkaWFTdHJlYW1DYXBhYmlsaXRpZXM+IE1lZGlhU3RyZWFtQ2FwYWJpbGl0aWVzOjpjcmVh
dGUoUGFzc1JlZlB0cjxNZWRpYVN0cmVhbVNvdXJjZUNhcGFiaWxpdGllcz4gY2FwYWJpbGl0aWVz
KQoreworICAgIGlmIChjYXBhYmlsaXRpZXMtPmhhc1ZpZGVvU291cmNlKCkpCisgICAgICAgIHJl
dHVybiBBbGxWaWRlb0NhcGFiaWxpdGllczo6Y3JlYXRlKGNhcGFiaWxpdGllcyk7CisgICAgCisg
ICAgcmV0dXJuIEFsbEF1ZGlvQ2FwYWJpbGl0aWVzOjpjcmVhdGUoY2FwYWJpbGl0aWVzKTsKK30K
KworTWVkaWFTdHJlYW1DYXBhYmlsaXRpZXM6Ok1lZGlhU3RyZWFtQ2FwYWJpbGl0aWVzKFBhc3NS
ZWZQdHI8TWVkaWFTdHJlYW1Tb3VyY2VDYXBhYmlsaXRpZXM+IGNhcGFiaWxpdGllcykKKyAgICA6
IG1fU291cmNlQ2FwYWJpbGl0aWVzKGNhcGFiaWxpdGllcykKK3sKK30KKworVmVjdG9yPFN0cmlu
Zz4gTWVkaWFTdHJlYW1DYXBhYmlsaXRpZXM6OnNvdXJjZVR5cGUoKSBjb25zdAoreworICAgIEFT
U0VSVChtX1NvdXJjZUNhcGFiaWxpdGllcy0+aGFzVmlkZW9Tb3VyY2UoKSk7CisgICAgCisgICAg
c2l6ZV90IGNvdW50ID0gbV9Tb3VyY2VDYXBhYmlsaXRpZXMtPnNvdXJjZVR5cGVzKCkuc2l6ZSgp
OworICAgIGlmICghY291bnQpCisgICAgICAgIHJldHVybiBWZWN0b3I8U3RyaW5nPigpOworICAg
IAorICAgIGNvbnN0IFZlY3RvcjxNZWRpYVN0cmVhbVNvdXJjZVN0YXRlczo6U291cmNlVHlwZT4m
IHNvdXJjZVR5cGVzID0gbV9Tb3VyY2VDYXBhYmlsaXRpZXMtPnNvdXJjZVR5cGVzKCk7CisgICAg
VmVjdG9yPFN0cmluZz4gY2FwYWJpbGl0aWVzOworICAgIGNhcGFiaWxpdGllcy5yZXNlcnZlQ2Fw
YWNpdHkoY291bnQpOworICAgIAorICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgY291bnQ7ICsr
aSkKKyAgICAgICAgY2FwYWJpbGl0aWVzLmFwcGVuZChNZWRpYVNvdXJjZVN0YXRlczo6c291cmNl
VHlwZShzb3VyY2VUeXBlc1tpXSkpOworICAgIAorICAgIHJldHVybiBjYXBhYmlsaXRpZXM7Cit9
CisKK1ZlY3RvcjxTdHJpbmc+IE1lZGlhU3RyZWFtQ2FwYWJpbGl0aWVzOjpzb3VyY2VJZCgpIGNv
bnN0Cit7CisgICAgc2l6ZV90IGNvdW50ID0gbV9Tb3VyY2VDYXBhYmlsaXRpZXMtPnNvdXJjZUlk
KCkuc2l6ZSgpOworICAgIGlmICghY291bnQpCisgICAgICAgIHJldHVybiBWZWN0b3I8U3RyaW5n
PigpOworICAgIAorICAgIGNvbnN0IFZlY3RvcjxBdG9taWNTdHJpbmc+JiBzb3VyY2VJZHMgPSBt
X1NvdXJjZUNhcGFiaWxpdGllcy0+c291cmNlSWQoKTsKKyAgICBWZWN0b3I8U3RyaW5nPiBjYXBh
YmlsaXRpZXM7CisgICAgY2FwYWJpbGl0aWVzLnJlc2VydmVDYXBhY2l0eShjb3VudCk7CisgICAg
CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBjb3VudDsgKytpKQorICAgICAgICBjYXBhYmls
aXRpZXMuYXBwZW5kKHNvdXJjZUlkc1tpXSk7CisgICAgCisgICAgcmV0dXJuIGNhcGFiaWxpdGll
czsKK30KKworVmVjdG9yPFN0cmluZz4gTWVkaWFTdHJlYW1DYXBhYmlsaXRpZXM6OmZhY2luZ01v
ZGUoKSBjb25zdAoreworICAgIEFTU0VSVChtX1NvdXJjZUNhcGFiaWxpdGllcy0+aGFzVmlkZW9T
b3VyY2UoKSk7CisgICAgCisgICAgc2l6ZV90IGNvdW50ID0gbV9Tb3VyY2VDYXBhYmlsaXRpZXMt
PmZhY2luZ01vZGVzKCkuc2l6ZSgpOworICAgIGlmICghY291bnQpCisgICAgICAgIHJldHVybiBW
ZWN0b3I8U3RyaW5nPigpOworICAgIAorICAgIGNvbnN0IFZlY3RvcjxNZWRpYVN0cmVhbVNvdXJj
ZVN0YXRlczo6VmlkZW9GYWNpbmdNb2RlPiYgZmFjaW5nTW9kZXMgPSBtX1NvdXJjZUNhcGFiaWxp
dGllcy0+ZmFjaW5nTW9kZXMoKTsKKyAgICBWZWN0b3I8U3RyaW5nPiBjYXBhYmlsaXRpZXM7Cisg
ICAgY2FwYWJpbGl0aWVzLnJlc2VydmVDYXBhY2l0eShjb3VudCk7CisgICAgCisgICAgZm9yIChz
aXplX3QgaSA9IDA7IGkgPCBjb3VudDsgKytpKQorICAgICAgICBjYXBhYmlsaXRpZXMuYXBwZW5k
KE1lZGlhU291cmNlU3RhdGVzOjpmYWNpbmdNb2RlKGZhY2luZ01vZGVzW2ldKSk7CisgICAgCisg
ICAgcmV0dXJuIGNhcGFiaWxpdGllczsKK30KKworUmVmUHRyPENhcGFiaWxpdHlSYW5nZT4gTWVk
aWFTdHJlYW1DYXBhYmlsaXRpZXM6OndpZHRoKCkgY29uc3QKK3sKKyAgICBBU1NFUlQobV9Tb3Vy
Y2VDYXBhYmlsaXRpZXMtPmhhc1ZpZGVvU291cmNlKCkpOworICAgIAorICAgIHJldHVybiBDYXBh
YmlsaXR5UmFuZ2U6OmNyZWF0ZShtX1NvdXJjZUNhcGFiaWxpdGllcy0+d2lkdGgoKSk7Cit9CisK
K1JlZlB0cjxDYXBhYmlsaXR5UmFuZ2U+IE1lZGlhU3RyZWFtQ2FwYWJpbGl0aWVzOjpoZWlnaHQo
KSBjb25zdAoreworICAgIEFTU0VSVChtX1NvdXJjZUNhcGFiaWxpdGllcy0+aGFzVmlkZW9Tb3Vy
Y2UoKSk7CisgICAgCisgICAgcmV0dXJuIENhcGFiaWxpdHlSYW5nZTo6Y3JlYXRlKG1fU291cmNl
Q2FwYWJpbGl0aWVzLT5oZWlnaHQoKSk7Cit9CisKK1JlZlB0cjxDYXBhYmlsaXR5UmFuZ2U+IE1l
ZGlhU3RyZWFtQ2FwYWJpbGl0aWVzOjpmcmFtZVJhdGUoKSBjb25zdAoreworICAgIEFTU0VSVCht
X1NvdXJjZUNhcGFiaWxpdGllcy0+aGFzVmlkZW9Tb3VyY2UoKSk7CisgICAgCisgICAgcmV0dXJu
IENhcGFiaWxpdHlSYW5nZTo6Y3JlYXRlKG1fU291cmNlQ2FwYWJpbGl0aWVzLT5mcmFtZVJhdGUo
KSk7Cit9CisKK1JlZlB0cjxDYXBhYmlsaXR5UmFuZ2U+IE1lZGlhU3RyZWFtQ2FwYWJpbGl0aWVz
Ojphc3BlY3RSYXRpbygpIGNvbnN0Cit7CisgICAgQVNTRVJUKG1fU291cmNlQ2FwYWJpbGl0aWVz
LT5oYXNWaWRlb1NvdXJjZSgpKTsKKyAgICAKKyAgICByZXR1cm4gQ2FwYWJpbGl0eVJhbmdlOjpj
cmVhdGUobV9Tb3VyY2VDYXBhYmlsaXRpZXMtPmFzcGVjdFJhdGlvKCkpOworfQorCitSZWZQdHI8
Q2FwYWJpbGl0eVJhbmdlPiBNZWRpYVN0cmVhbUNhcGFiaWxpdGllczo6dm9sdW1lKCkgY29uc3QK
K3sKKyAgICBBU1NFUlQoIW1fU291cmNlQ2FwYWJpbGl0aWVzLT5oYXNWaWRlb1NvdXJjZSgpKTsK
KyAgICAKKyAgICByZXR1cm4gQ2FwYWJpbGl0eVJhbmdlOjpjcmVhdGUobV9Tb3VyY2VDYXBhYmls
aXRpZXMtPnZvbHVtZSgpKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1DYXBh
YmlsaXRpZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3Ry
ZWFtL01lZGlhU3RyZWFtQ2FwYWJpbGl0aWVzLmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtQ2FwYWJpbGl0aWVzLmgJKHdvcmtp
bmcgY29weSkKQEAgLTAsMCArMSw2OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQor
ICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwK
KyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBNZWRpYVN0cmVhbUNh
cGFiaWxpdGllc19oCisjZGVmaW5lIE1lZGlhU3RyZWFtQ2FwYWJpbGl0aWVzX2gKKworI2lmIEVO
QUJMRShNRURJQV9TVFJFQU0pCisKKyNpbmNsdWRlICJNZWRpYVN0cmVhbUNhcGFiaWxpdGllcy5o
IgorI2luY2x1ZGUgIk1lZGlhU3RyZWFtU291cmNlQ2FwYWJpbGl0aWVzLmgiCisjaW5jbHVkZSAi
U2NyaXB0V3JhcHBhYmxlLmgiCisjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KKyNpbmNsdWRl
IDx3dGYvVmVjdG9yLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CisKK25hbWVz
cGFjZSBXZWJDb3JlIHsKKworY2xhc3MgQ2FwYWJpbGl0eVJhbmdlOworY2xhc3MgTWVkaWFTdHJl
YW1Tb3VyY2VDYXBhYmlsaXRpZXM7CisKK2NsYXNzIE1lZGlhU3RyZWFtQ2FwYWJpbGl0aWVzIDog
cHVibGljIFJlZkNvdW50ZWQ8TWVkaWFTdHJlYW1DYXBhYmlsaXRpZXM+LCBwdWJsaWMgU2NyaXB0
V3JhcHBhYmxlIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxNZWRpYVN0cmVhbUNh
cGFiaWxpdGllcz4gY3JlYXRlKFBhc3NSZWZQdHI8TWVkaWFTdHJlYW1Tb3VyY2VDYXBhYmlsaXRp
ZXM+KTsKKyAgICB2aXJ0dWFsIH5NZWRpYVN0cmVhbUNhcGFiaWxpdGllcygpIHsgfQorCisgICAg
dmlydHVhbCBWZWN0b3I8U3RyaW5nPiBzb3VyY2VUeXBlKCkgY29uc3Q7CisgICAgdmlydHVhbCBW
ZWN0b3I8U3RyaW5nPiBzb3VyY2VJZCgpIGNvbnN0OworICAgIHZpcnR1YWwgUmVmUHRyPENhcGFi
aWxpdHlSYW5nZT4gd2lkdGgoKSBjb25zdDsKKyAgICB2aXJ0dWFsIFJlZlB0cjxDYXBhYmlsaXR5
UmFuZ2U+IGhlaWdodCgpIGNvbnN0OworICAgIHZpcnR1YWwgUmVmUHRyPENhcGFiaWxpdHlSYW5n
ZT4gZnJhbWVSYXRlKCkgY29uc3Q7CisgICAgdmlydHVhbCBSZWZQdHI8Q2FwYWJpbGl0eVJhbmdl
PiBhc3BlY3RSYXRpbygpIGNvbnN0OworICAgIHZpcnR1YWwgVmVjdG9yPFN0cmluZz4gZmFjaW5n
TW9kZSgpIGNvbnN0OworICAgIHZpcnR1YWwgUmVmUHRyPENhcGFiaWxpdHlSYW5nZT4gdm9sdW1l
KCkgY29uc3Q7CisgICAgCisgICAgYm9vbCBoYXNWaWRlb1NvdXJjZSgpIHsgcmV0dXJuIG1fU291
cmNlQ2FwYWJpbGl0aWVzLT5oYXNWaWRlb1NvdXJjZSgpOyB9CisKK3Byb3RlY3RlZDoKKyAgICBl
eHBsaWNpdCBNZWRpYVN0cmVhbUNhcGFiaWxpdGllcyhQYXNzUmVmUHRyPE1lZGlhU3RyZWFtU291
cmNlQ2FwYWJpbGl0aWVzPik7CisKKyAgICBSZWZQdHI8TWVkaWFTdHJlYW1Tb3VyY2VDYXBhYmls
aXRpZXM+IG1fU291cmNlQ2FwYWJpbGl0aWVzOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQorCisjZW5kaWYgLy8gTWVkaWFTdHJlYW1DYXBhYmlsaXRpZXNfaAorCisjZW5kaWYKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1DYXBhYmlsaXRp
ZXMuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0v
TWVkaWFTdHJlYW1DYXBhYmlsaXRpZXMuaWRsCShyZXZpc2lvbiAwKQorKysgU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbUNhcGFiaWxpdGllcy5pZGwJKHdvcmtp
bmcgY29weSkKQEAgLTAsMCArMSwzMyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQor
ICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwK
KyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKK1sKKyAgICBDb25kaXRpb25hbD1N
RURJQV9TVFJFQU0sCisgICAgTm9JbnRlcmZhY2VPYmplY3QsCisgICAgU2tpcFZUYWJsZVZhbGlk
YXRpb24sCisgICAgQ3VzdG9tVG9KU09iamVjdCwKK10gaW50ZXJmYWNlIE1lZGlhU3RyZWFtQ2Fw
YWJpbGl0aWVzIHsKK307CisKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJl
YW0vTWVkaWFTdHJlYW1UcmFjay5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVRyYWNrLmNwcAkocmV2aXNpb24gMTU3MDE2KQor
KysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVRyYWNrLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMjksMzIgKzI5LDY1IEBACiAKICNpZiBFTkFCTEUoTUVESUFf
U1RSRUFNKQogCisjaW5jbHVkZSAiQWxsQXVkaW9DYXBhYmlsaXRpZXMuaCIKKyNpbmNsdWRlICJB
bGxWaWRlb0NhcGFiaWxpdGllcy5oIgorI2luY2x1ZGUgIkF1ZGlvU3RyZWFtVHJhY2suaCIKICNp
bmNsdWRlICJEaWN0aW9uYXJ5LmgiCiAjaW5jbHVkZSAiRXZlbnQuaCIKICNpbmNsdWRlICJFeGNl
cHRpb25Db2RlLmgiCisjaW5jbHVkZSAiTWVkaWFDb25zdHJhaW50c0ltcGwuaCIKKyNpbmNsdWRl
ICJNZWRpYVNvdXJjZVN0YXRlcy5oIgogI2luY2x1ZGUgIk1lZGlhU3RyZWFtLmgiCiAjaW5jbHVk
ZSAiTWVkaWFTdHJlYW1DZW50ZXIuaCIKICNpbmNsdWRlICJNZWRpYVN0cmVhbURlc2NyaXB0b3Iu
aCIKICNpbmNsdWRlICJNZWRpYVN0cmVhbVRyYWNrU291cmNlc0NhbGxiYWNrLmgiCiAjaW5jbHVk
ZSAiTWVkaWFTdHJlYW1UcmFja1NvdXJjZXNSZXF1ZXN0LmgiCisjaW5jbHVkZSAiTWVkaWFUcmFj
a0NvbnN0cmFpbnRzLmgiCisjaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKICNpbmNsdWRlICJV
VUlELmgiCisjaW5jbHVkZSAiVmlkZW9TdHJlYW1UcmFjay5oIgorI2luY2x1ZGUgPHd0Zi9GdW5j
dGlvbmFsLmg+CiAjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAogTWVkaWFTdHJlYW1UcmFjazo6TWVkaWFTdHJlYW1UcmFjayhTY3JpcHRFeGVj
dXRpb25Db250ZXh0KiBjb250ZXh0LCBNZWRpYVN0cmVhbVNvdXJjZSogc291cmNlLCBjb25zdCBE
aWN0aW9uYXJ5KikKICAgICA6IEFjdGl2ZURPTU9iamVjdChjb250ZXh0KQotICAgICwgbV9zb3Vy
Y2Uoc291cmNlKQorICAgICwgbV9zb3VyY2UoMCkKICAgICAsIG1fcmVhZHlTdGF0ZShNZWRpYVN0
cmVhbVNvdXJjZTo6TmV3KQogICAgICwgbV9zdG9wcGVkKGZhbHNlKQogICAgICwgbV9lbmFibGVk
KHRydWUpCiAgICAgLCBtX211dGVkKGZhbHNlKQorICAgICwgbV9ldmVudERpc3BhdGNoU2NoZWR1
bGVkKGZhbHNlKQogewogICAgIHN1c3BlbmRJZk5lZWRlZCgpOwotICAgIGlmIChtX3NvdXJjZSkg
ewotICAgICAgICBtX3NvdXJjZS0+YWRkT2JzZXJ2ZXIodGhpcyk7Ci0gICAgICAgIG1fbXV0ZWQg
PSBtX3NvdXJjZS0+bXV0ZWQoKTsKLSAgICB9CisgICAgaWYgKHNvdXJjZSkKKyAgICAgICAgc2V0
U291cmNlKHNvdXJjZSk7Cit9CisKK01lZGlhU3RyZWFtVHJhY2s6Ok1lZGlhU3RyZWFtVHJhY2so
TWVkaWFTdHJlYW1UcmFjayogb3RoZXIpCisgICAgOiBBY3RpdmVET01PYmplY3Qob3RoZXItPnNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQoKSkKK3sKKyAgICBzdXNwZW5kSWZOZWVkZWQoKTsKKworICAg
IC8vIFdoZW4gdGhlIGNsb25lKCkgbWV0aG9kIGlzIGludm9rZWQsIHRoZSB1c2VyIGFnZW50IG11
c3QgcnVuIHRoZSBmb2xsb3dpbmcgc3RlcHM6CisgICAgLy8gMS4gTGV0IHRyYWNrQ2xvbmUgYmUg
YSBuZXdseSBjb25zdHJ1Y3RlZCBNZWRpYVN0cmVhbVRyYWNrIG9iamVjdC4KKyAgICAvLyAyLiBJ
bml0aWFsaXplIHRyYWNrQ2xvbmUncyBpZCBhdHRyaWJ1dGUgdG8gYSBuZXdseSBnZW5lcmF0ZWQg
dmFsdWUuCisgICAgbV9pZCA9IGNyZWF0ZUNhbm9uaWNhbFVVSURTdHJpbmcoKTsKKworICAgIC8v
IDMuIExldCB0cmFja0Nsb25lIGluaGVyaXQgdGhpcyB0cmFjaydzIHVuZGVybHlpbmcgc291cmNl
LCBraW5kLCBsYWJlbCBhbmQgZW5hYmxlZCBhdHRyaWJ1dGVzLgorICAgIHNldFNvdXJjZShvdGhl
ci0+c291cmNlKCkpOworICAgIG1fcmVhZHlTdGF0ZSA9IG1fc291cmNlID8gbV9zb3VyY2UtPnJl
YWR5U3RhdGUoKSA6IE1lZGlhU3RyZWFtU291cmNlOjpOZXc7CisgICAgbV9lbmFibGVkID0gb3Ro
ZXItPmVuYWJsZWQoKTsKKworICAgIC8vIE5vdGU6IHRoZSAiY2xvbmUiIHN0ZXBzIGRvbid0IHNh
eSBhbnl0aGluZyBhYm91dCAnbXV0ZWQnLCBidXQgNC4zLjEgc2F5czoKKyAgICAvLyBGb3IgYSBu
ZXdseSBjcmVhdGVkIE1lZGlhU3RyZWFtVHJhY2sgb2JqZWN0LCB0aGUgZm9sbG93aW5nIGFwcGxp
ZXMuIFRoZSB0cmFjayBpcyBhbHdheXMgZW5hYmxlZAorICAgIC8vIHVubGVzcyBzdGF0ZWQgb3Ro
ZXJ3aXNlIChmb3IgZXhhbWxwZSB3aGVuIGNsb25lZCkgYW5kIHRoZSBtdXRlZCBzdGF0ZSByZWZs
ZWN0cyB0aGUgc3RhdGUgb2YgdGhlCisgICAgLy8gc291cmNlIGF0IHRoZSB0aW1lIHRoZSB0cmFj
ayBpcyBjcmVhdGVkLgorICAgIG1fbXV0ZWQgPSBvdGhlci0+bXV0ZWQoKTsKKworICAgIG1fZXZl
bnREaXNwYXRjaFNjaGVkdWxlZCA9ZmFsc2U7CisgICAgbV9zdG9wcGVkID0gb3RoZXItPnN0b3Bw
ZWQoKTsKIH0KIAogTWVkaWFTdHJlYW1UcmFjazo6fk1lZGlhU3RyZWFtVHJhY2soKQpAQCAtODUs
NiArMTE4LDE1IEBAIGNvbnN0IEF0b21pY1N0cmluZyYgTWVkaWFTdHJlYW1UcmFjazo6a2kKIHZv
aWQgTWVkaWFTdHJlYW1UcmFjazo6c2V0U291cmNlKE1lZGlhU3RyZWFtU291cmNlKiBzb3VyY2Up
CiB7CiAgICAgQVNTRVJUKHNvdXJjZSA9PSBtX3NvdXJjZSB8fCAhbV9zb3VyY2UpOworCisgICAg
aWYgKG1fc291cmNlKQorICAgICAgICBtX3NvdXJjZS0+cmVtb3ZlT2JzZXJ2ZXIodGhpcyk7CisK
KyAgICBpZiAoc291cmNlKSB7CisgICAgICAgIHNvdXJjZS0+YWRkT2JzZXJ2ZXIodGhpcyk7Cisg
ICAgICAgIG1fbXV0ZWQgPSBzb3VyY2UtPm11dGVkKCk7CisgICAgfQorCiAgICAgbV9zb3VyY2Ug
PSBzb3VyY2U7CiB9CiAKQEAgLTkzLDE4ICsxMzUsMTMgQEAgY29uc3QgU3RyaW5nJiBNZWRpYVN0
cmVhbVRyYWNrOjppZCgpIGNvbgogICAgIGlmICghbV9pZC5pc0VtcHR5KCkpCiAgICAgICAgIHJl
dHVybiBtX2lkOwogCi0gICAgaWYgKCFtX3NvdXJjZSkKLSAgICAgICAgcmV0dXJuIGVtcHR5U3Ry
aW5nKCk7Ci0KLSAgICBjb25zdCBTdHJpbmcmIGlkID0gbV9zb3VyY2UtPmlkKCk7Ci0gICAgaWYg
KCFpZC5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVybiBpZDsKLQogICAgIC8vIFRoZSBzcGVjIHNh
eXM6CiAgICAgLy8gICBVbmxlc3MgYSBNZWRpYVN0cmVhbVRyYWNrIG9iamVjdCBpcyBjcmVhdGVk
IGFzIGEgcGFydCBhIG9mIHNwZWNpYWwgcHVycG9zZSBhbGdvcml0aG0gdGhhdAogICAgIC8vICAg
c3BlY2lmaWVzIGhvdyB0aGUgdHJhY2sgaWQgbXVzdCBiZSBpbml0aWFsaXplZCwgdGhlIHVzZXIg
YWdlbnQgbXVzdCBnZW5lcmF0ZSBhIGdsb2JhbGx5CiAgICAgLy8gICB1bmlxdWUgaWRlbnRpZmll
ciBzdHJpbmcgYW5kIGluaXRpYWxpemUgdGhlIG9iamVjdCdzIGlkIGF0dHJpYnV0ZSB0byB0aGF0
IHN0cmluZy4KLSAgICAvLyBzbyBnZW5lcmF0ZSBhIFVVSUQgaWYgdGhlIHNvdXJjZSBkb2Vzbid0
IGhhdmUgYW4gSUQuCisgICAgaWYgKG1fc291cmNlICYmIG1fc291cmNlLT51c2VJREZvclRyYWNr
SUQoKSkKKyAgICAgICAgcmV0dXJuIG1fc291cmNlLT5pZCgpOworCiAgICAgbV9pZCA9IGNyZWF0
ZUNhbm9uaWNhbFVVSURTdHJpbmcoKTsKICAgICByZXR1cm4gbV9pZDsKIH0KQEAgLTEyNSwxOCAr
MTYyLDQwIEBAIHZvaWQgTWVkaWFTdHJlYW1UcmFjazo6c2V0RW5hYmxlZChib29sIGUKIHsKICAg
ICBpZiAobV9zdG9wcGVkKQogICAgICAgICByZXR1cm47Ci0gICAgCisKKyAgICAvLyA0LjMuMy4x
CisgICAgLy8gLi4uIGFmdGVyIGEgTWVkaWFTdHJlYW1UcmFjayBpcyBkaXNhc3NvY2lhdGVkIGZy
b20gaXRzIHRyYWNrLCBpdHMgZW5hYmxlZCBhdHRyaWJ1dGUgc3RpbGwKKyAgICAvLyBjaGFuZ2Vz
IHZhbHVlIHdoZW4gc2V0OyBpdCBqdXN0IGRvZXNuJ3QgZG8gYW55dGhpbmcgd2l0aCB0aGF0IG5l
dyB2YWx1ZS4KICAgICBtX2VuYWJsZWQgPSBlbmFibGVkOwogCi0gICAgaWYgKCFtX3NvdXJjZSB8
fCBlbmFibGVkID09IG1fc291cmNlLT5lbmFibGVkKCkpCisgICAgaWYgKCFtX3NvdXJjZSkKICAg
ICAgICAgcmV0dXJuOwogCiAgICAgbV9zb3VyY2UtPnNldEVuYWJsZWQoZW5hYmxlZCk7Cit9CiAK
LSAgICBpZiAobV9zb3VyY2UtPnN0cmVhbSgpLT5lbmRlZCgpKQotICAgICAgICByZXR1cm47Citi
b29sIE1lZGlhU3RyZWFtVHJhY2s6Om11dGVkKCkgY29uc3QKK3sKKyAgICBpZiAobV9zdG9wcGVk
IHx8ICFtX3NvdXJjZSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgcmV0dXJuIG1fc291
cmNlLT5tdXRlZCgpOworfQorCitib29sIE1lZGlhU3RyZWFtVHJhY2s6OnJlYWRvbmx5KCkgY29u
c3QKK3sKKyAgICBpZiAobV9zdG9wcGVkIHx8ICFtX3NvdXJjZSkKKyAgICAgICAgcmV0dXJuIHRy
dWU7CisKKyAgICByZXR1cm4gbV9zb3VyY2UtPnJlYWRvbmx5KCk7Cit9CisKK2Jvb2wgTWVkaWFT
dHJlYW1UcmFjazo6cmVtb3RlKCkgY29uc3QKK3sKKyAgICBpZiAoIW1fc291cmNlKQorICAgICAg
ICByZXR1cm4gZmFsc2U7CiAKLSAgICBNZWRpYVN0cmVhbUNlbnRlcjo6c2hhcmVkKCkuZGlkU2V0
TWVkaWFTdHJlYW1UcmFja0VuYWJsZWQobV9zb3VyY2UuZ2V0KCkpOworICAgIHJldHVybiBtX3Nv
dXJjZS0+cmVtb3RlKCk7CiB9CiAKIGNvbnN0IEF0b21pY1N0cmluZyYgTWVkaWFTdHJlYW1UcmFj
azo6cmVhZHlTdGF0ZSgpIGNvbnN0CkBAIC0xNzEsMTIgKzIzMCw2NCBAQCB2b2lkIE1lZGlhU3Ry
ZWFtVHJhY2s6OmdldFNvdXJjZXMoU2NyaXB0CiAgICAgICAgIGVjID0gTk9UX1NVUFBPUlRFRF9F
UlI7CiB9CiAKK1Bhc3NSZWZQdHI8TWVkaWFUcmFja0NvbnN0cmFpbnRzPiBNZWRpYVN0cmVhbVRy
YWNrOjpjb25zdHJhaW50cygpIGNvbnN0Cit7CisgICAgLy8gRklYTUU6IGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjI0MjgKKyAgICBub3RJbXBsZW1lbnRlZCgpOwor
ICAgIHJldHVybiAwOworfQorCitQYXNzUmVmUHRyPE1lZGlhU291cmNlU3RhdGVzPiBNZWRpYVN0
cmVhbVRyYWNrOjpzdGF0ZXMoKSBjb25zdAoreworICAgIGlmICghbV9zb3VyY2UpCisgICAgICAg
IHJldHVybiAwOworICAgIAorICAgIHJldHVybiBNZWRpYVNvdXJjZVN0YXRlczo6Y3JlYXRlKG1f
c291cmNlLT5zdGF0ZXMoKSk7Cit9CisKK1Bhc3NSZWZQdHI8TWVkaWFTdHJlYW1DYXBhYmlsaXRp
ZXM+IE1lZGlhU3RyZWFtVHJhY2s6OmNhcGFiaWxpdGllcygpIGNvbnN0Cit7CisgICAgaWYgKCFt
X3NvdXJjZSkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICByZXR1cm4gTWVkaWFTdHJlYW1DYXBh
YmlsaXRpZXM6OmNyZWF0ZShtX3NvdXJjZS0+Y2FwYWJpbGl0aWVzKCkpOworfQorCit2b2lkIE1l
ZGlhU3RyZWFtVHJhY2s6OmFwcGx5Q29uc3RyYWludHMoY29uc3QgRGljdGlvbmFyeSYgY29uc3Ry
YWludHMpCit7CisgICAgLy8gRklYTUU6IGFwcGx5IHRoZSBuZXcgY29uc3RyYWludHMgdG8gdGhl
IHRyYWNrCisgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEy
MjQyOAorICAgIG1fY29uc3RyYWludHMtPmluaXRpYWxpemUoY29uc3RyYWludHMpOworfQorCitQ
YXNzUmVmUHRyPE1lZGlhU3RyZWFtVHJhY2s+IE1lZGlhU3RyZWFtVHJhY2s6OmNsb25lKCkKK3sK
KyAgICBpZiAobV9zb3VyY2UgJiYgbV9zb3VyY2UtPnR5cGUoKSA9PSBNZWRpYVN0cmVhbVNvdXJj
ZTo6QXVkaW8pCisgICAgICAgIHJldHVybiBBdWRpb1N0cmVhbVRyYWNrOjpjcmVhdGUodGhpcyk7
CisKKyAgICByZXR1cm4gVmlkZW9TdHJlYW1UcmFjazo6Y3JlYXRlKHRoaXMpOworfQorCit2b2lk
IE1lZGlhU3RyZWFtVHJhY2s6OnN0b3BQcm9kdWNpbmdEYXRhKCkKK3sKKyAgICBpZiAobV9zdG9w
cGVkIHx8ICFtX3NvdXJjZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgLy8gU2V0IG1fc3RvcHBl
ZCBiZWZvcmUgc3RvcHBpbmcgdGhlIHNvdXJjZSBiZWNhdXNlIHRoYXQgbWF5IHJlc3VsdCBpbiBh
IGNhbGwgdG8gc291cmNlQ2hhbmdlZFN0YXRlCisgICAgLy8gYW5kIHdlIG9ubHkgd2FudCB0byBk
aXNwYXRjaCB0aGUgJ2VuZGVkJyBldmVudCBpZiBuZWNlc3NhcnkuCisgICAgbV9zdG9wcGVkID0g
dHJ1ZTsKKyAgICBtX3NvdXJjZS0+c3RvcCgpOworCisgICAgaWYgKG1fcmVhZHlTdGF0ZSAhPSBN
ZWRpYVN0cmVhbVNvdXJjZTo6RW5kZWQpCisgICAgICAgIHNjaGVkdWxlRXZlbnREaXNwYXRjaChF
dmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5lbmRlZEV2ZW50LCBmYWxzZSwgZmFsc2UpKTsKK30K
KwogYm9vbCBNZWRpYVN0cmVhbVRyYWNrOjplbmRlZCgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1f
c3RvcHBlZCB8fCAobV9zb3VyY2UgJiYgbV9zb3VyY2UtPnJlYWR5U3RhdGUoKSA9PSBNZWRpYVN0
cmVhbVNvdXJjZTo6RW5kZWQpOwogfQogCi12b2lkIE1lZGlhU3RyZWFtVHJhY2s6OnNvdXJjZUNo
YW5nZWRTdGF0ZSgpCit2b2lkIE1lZGlhU3RyZWFtVHJhY2s6OnNvdXJjZVN0YXRlQ2hhbmdlZCgp
CiB7CiAgICAgaWYgKG1fc3RvcHBlZCkKICAgICAgICAgcmV0dXJuOwpAQCAtMTg1LDE4ICsyOTYs
NTAgQEAgdm9pZCBNZWRpYVN0cmVhbVRyYWNrOjpzb3VyY2VDaGFuZ2VkU3RhdAogICAgIG1fcmVh
ZHlTdGF0ZSA9IG1fc291cmNlLT5yZWFkeVN0YXRlKCk7CiAKICAgICBpZiAobV9yZWFkeVN0YXRl
ID49IE1lZGlhU3RyZWFtU291cmNlOjpMaXZlICYmIG9sZFJlYWR5U3RhdGUgPT0gTWVkaWFTdHJl
YW1Tb3VyY2U6Ok5ldykKLSAgICAgICAgZGlzcGF0Y2hFdmVudChFdmVudDo6Y3JlYXRlKGV2ZW50
TmFtZXMoKS5zdGFydGVkRXZlbnQsIGZhbHNlLCBmYWxzZSkpOworICAgICAgICBzY2hlZHVsZUV2
ZW50RGlzcGF0Y2goRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkuc3RhcnRlZEV2ZW50LCBmYWxz
ZSwgZmFsc2UpKTsKICAgICBpZiAobV9yZWFkeVN0YXRlID09IE1lZGlhU3RyZWFtU291cmNlOjpF
bmRlZCAmJiBvbGRSZWFkeVN0YXRlICE9IE1lZGlhU3RyZWFtU291cmNlOjpFbmRlZCkKLSAgICAg
ICAgZGlzcGF0Y2hFdmVudChFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5lbmRlZEV2ZW50LCBm
YWxzZSwgZmFsc2UpKTsKKyAgICAgICAgc2NoZWR1bGVFdmVudERpc3BhdGNoKEV2ZW50OjpjcmVh
dGUoZXZlbnROYW1lcygpLmVuZGVkRXZlbnQsIGZhbHNlLCBmYWxzZSkpOworfQorICAgIAordm9p
ZCBNZWRpYVN0cmVhbVRyYWNrOjpzb3VyY2VNdXRlZENoYW5nZWQoKQoreworICAgIGlmIChtX3N0
b3BwZWQpCisgICAgICAgIHJldHVybjsKIAotICAgIGlmIChtX211dGVkID09IG1fc291cmNlLT5t
dXRlZCgpKQorICAgIGJvb2wgbXV0ZWQgPSBtX3NvdXJjZS0+bXV0ZWQoKTsKKyAgICBpZiAobV9t
dXRlZCA9PSBtdXRlZCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9tdXRlZCA9IG1fc291cmNl
LT5tdXRlZCgpOworICAgIG1fbXV0ZWQgPSBtdXRlZDsKICAgICBpZiAobV9tdXRlZCkKLSAgICAg
ICAgZGlzcGF0Y2hFdmVudChFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5tdXRlRXZlbnQsIGZh
bHNlLCBmYWxzZSkpOworICAgICAgICBzY2hlZHVsZUV2ZW50RGlzcGF0Y2goRXZlbnQ6OmNyZWF0
ZShldmVudE5hbWVzKCkubXV0ZUV2ZW50LCBmYWxzZSwgZmFsc2UpKTsKICAgICBlbHNlCi0gICAg
ICAgIGRpc3BhdGNoRXZlbnQoRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkudW5tdXRlRXZlbnQs
IGZhbHNlLCBmYWxzZSkpOworICAgICAgICBzY2hlZHVsZUV2ZW50RGlzcGF0Y2goRXZlbnQ6OmNy
ZWF0ZShldmVudE5hbWVzKCkudW5tdXRlRXZlbnQsIGZhbHNlLCBmYWxzZSkpOworCisgICAgY29u
ZmlndXJlVHJhY2tSZW5kZXJpbmcoKTsKK30KKwordm9pZCBNZWRpYVN0cmVhbVRyYWNrOjpzb3Vy
Y2VFbmFibGVkQ2hhbmdlZCgpCit7CisgICAgaWYgKG1fc3RvcHBlZCkKKyAgICAgICAgcmV0dXJu
OworICAgIAorICAgIC8vIG1lZGlhIGZyb20gdGhlIHNvdXJjZSBvbmx5IGZsb3dzIHdoZW4gYSBN
ZWRpYVN0cmVhbVRyYWNrIG9iamVjdCBpcyBib3RoIHVubXV0ZWQgYW5kIGVuYWJsZWQKKyAgICBj
b25maWd1cmVUcmFja1JlbmRlcmluZygpOworfQorCit2b2lkIE1lZGlhU3RyZWFtVHJhY2s6OmNv
bmZpZ3VyZVRyYWNrUmVuZGVyaW5nKCkKK3sKKyAgICBpZiAobV9zdG9wcGVkKQorICAgICAgICBy
ZXR1cm47CisKKyAgICAvLyA0LjMuMQorICAgIC8vIC4uLiBtZWRpYSBmcm9tIHRoZSBzb3VyY2Ug
b25seSBmbG93cyB3aGVuIGEgTWVkaWFTdHJlYW1UcmFjayBvYmplY3QgaXMgYm90aCB1bm11dGVk
IGFuZCBlbmFibGVkCit9CisKK2Jvb2wgTWVkaWFTdHJlYW1UcmFjazo6c3RvcHBlZCgpCit7Cisg
ICAgcmV0dXJuIG1fc3RvcHBlZDsKIH0KIAogdm9pZCBNZWRpYVN0cmVhbVRyYWNrOjp0cmFja0Rp
ZEVuZCgpCkBAIC0yMTEsNyArMzU0LDQyIEBAIHZvaWQgTWVkaWFTdHJlYW1UcmFjazo6dHJhY2tE
aWRFbmQoKQogCiB2b2lkIE1lZGlhU3RyZWFtVHJhY2s6OnN0b3AoKQogewotICAgIG1fc3RvcHBl
ZCA9IHRydWU7CisgICAgc3RvcFByb2R1Y2luZ0RhdGEoKTsKK30KKwordm9pZCBNZWRpYVN0cmVh
bVRyYWNrOjpzY2hlZHVsZUV2ZW50RGlzcGF0Y2goUGFzc1JlZlB0cjxFdmVudD4gZXZlbnQpCit7
CisgICAgeworICAgICAgICBNdXRleExvY2tlciBsb2NrZXIobV9tdXRleCk7CisgICAgICAgIG1f
c2NoZWR1bGVkRXZlbnRzLmFwcGVuZChldmVudCk7CisgICAgICAgIGlmIChtX2V2ZW50RGlzcGF0
Y2hTY2hlZHVsZWQpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIG1fZXZlbnREaXNwYXRj
aFNjaGVkdWxlZCA9IHRydWU7CisgICAgfQorCisgICAgY2FsbE9uTWFpblRocmVhZChiaW5kKCZN
ZWRpYVN0cmVhbVRyYWNrOjpkaXNwYXRjaFF1ZXVlZEV2ZW50cywgdGhpcykpOworfQorCit2b2lk
IE1lZGlhU3RyZWFtVHJhY2s6OmRpc3BhdGNoUXVldWVkRXZlbnRzKCkKK3sKKyAgICBWZWN0b3I8
UmVmUHRyPEV2ZW50Pj4gZXZlbnRzOworICAgIHsKKyAgICAgICAgTXV0ZXhMb2NrZXIgbG9ja2Vy
KG1fbXV0ZXgpOworCisgICAgICAgIG1fZXZlbnREaXNwYXRjaFNjaGVkdWxlZCA9IGZhbHNlOwor
ICAgICAgICBpZiAoIXNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSkgeworICAgICAgICAgICAgbV9z
Y2hlZHVsZWRFdmVudHMuY2xlYXIoKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQor
CisgICAgICAgIGV2ZW50cy5zd2FwKG1fc2NoZWR1bGVkRXZlbnRzKTsKKyAgICB9CisKKyAgICBW
ZWN0b3I8UmVmUHRyPEV2ZW50PiA+OjppdGVyYXRvciBpdCA9IGV2ZW50cy5iZWdpbigpOworICAg
IGZvciAoOyBpdCAhPSBldmVudHMuZW5kKCk7ICsraXQpCisgICAgICAgIGRpc3BhdGNoRXZlbnQo
KCppdCkucmVsZWFzZSgpKTsKKworICAgIGV2ZW50cy5jbGVhcigpOwogfQogCiB9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01l
ZGlhU3RyZWFtVHJhY2suaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21l
ZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJhY2suaAkocmV2aXNpb24gMTU3MDM5KQorKysgU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVRyYWNrLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTQxLDggKzQxLDExIEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIERp
Y3Rpb25hcnk7Ci1jbGFzcyBNZWRpYUNvbnN0cmFpbnRzOworY2xhc3MgTWVkaWFDb25zdHJhaW50
c0ltcGw7CitjbGFzcyBNZWRpYVNvdXJjZVN0YXRlczsKIGNsYXNzIE1lZGlhU3RyZWFtVHJhY2tT
b3VyY2VzQ2FsbGJhY2s7CitjbGFzcyBNZWRpYVN0cmVhbUNhcGFiaWxpdGllczsKK2NsYXNzIE1l
ZGlhVHJhY2tDb25zdHJhaW50czsKIAogY2xhc3MgTWVkaWFTdHJlYW1UcmFjayA6IHB1YmxpYyBS
ZWZDb3VudGVkPE1lZGlhU3RyZWFtVHJhY2s+LCBwdWJsaWMgU2NyaXB0V3JhcHBhYmxlLCBwdWJs
aWMgQWN0aXZlRE9NT2JqZWN0LCBwdWJsaWMgRXZlbnRUYXJnZXRXaXRoSW5saW5lRGF0YSwgcHVi
bGljIE1lZGlhU3RyZWFtU291cmNlOjpPYnNlcnZlciB7CiBwdWJsaWM6CkBAIC01NCwxNyArNTcs
MzEgQEAgcHVibGljOgogCiAgICAgYm9vbCBlbmFibGVkKCkgY29uc3Q7CiAgICAgdm9pZCBzZXRF
bmFibGVkKGJvb2wpOwotICAgIAorCisgICAgYm9vbCBtdXRlZCgpIGNvbnN0OworICAgIGJvb2wg
cmVhZG9ubHkoKSBjb25zdDsKKyAgICBib29sIHJlbW90ZSgpIGNvbnN0OworCiAgICAgY29uc3Qg
QXRvbWljU3RyaW5nJiByZWFkeVN0YXRlKCkgY29uc3Q7CiAKICAgICBzdGF0aWMgdm9pZCBnZXRT
b3VyY2VzKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBQYXNzUmVmUHRyPE1lZGlhU3RyZWFtVHJh
Y2tTb3VyY2VzQ2FsbGJhY2s+LCBFeGNlcHRpb25Db2RlJik7CiAKLSAgICBNZWRpYVN0cmVhbVNv
dXJjZSogc291cmNlKCkgY29uc3QgeyByZXR1cm4gbV9zb3VyY2UuZ2V0KCk7IH0KLSAgICB2b2lk
IHNldFNvdXJjZShNZWRpYVN0cmVhbVNvdXJjZSopOworICAgIFBhc3NSZWZQdHI8TWVkaWFUcmFj
a0NvbnN0cmFpbnRzPiBjb25zdHJhaW50cygpIGNvbnN0OworICAgIFBhc3NSZWZQdHI8TWVkaWFT
b3VyY2VTdGF0ZXM+IHN0YXRlcygpIGNvbnN0OworICAgIFBhc3NSZWZQdHI8TWVkaWFTdHJlYW1D
YXBhYmlsaXRpZXM+IGNhcGFiaWxpdGllcygpIGNvbnN0OworICAgIHZvaWQgYXBwbHlDb25zdHJh
aW50cyhjb25zdCBEaWN0aW9uYXJ5Jik7CisKKyAgICBQYXNzUmVmUHRyPE1lZGlhU3RyZWFtVHJh
Y2s+IGNsb25lKCk7CisgICAgdm9pZCBzdG9wUHJvZHVjaW5nRGF0YSgpOwogCiAgICAgREVGSU5F
X0FUVFJJQlVURV9FVkVOVF9MSVNURU5FUihtdXRlKTsKICAgICBERUZJTkVfQVRUUklCVVRFX0VW
RU5UX0xJU1RFTkVSKHVubXV0ZSk7CisgICAgREVGSU5FX0FUVFJJQlVURV9FVkVOVF9MSVNURU5F
UihzdGFydGVkKTsKICAgICBERUZJTkVfQVRUUklCVVRFX0VWRU5UX0xJU1RFTkVSKGVuZGVkKTsK
KyAgICBERUZJTkVfQVRUUklCVVRFX0VWRU5UX0xJU1RFTkVSKG92ZXJjb25zdHJhaW5lZCk7CisK
KyAgICBNZWRpYVN0cmVhbVNvdXJjZSogc291cmNlKCkgY29uc3QgeyByZXR1cm4gbV9zb3VyY2Uu
Z2V0KCk7IH0KKyAgICB2b2lkIHNldFNvdXJjZShNZWRpYVN0cmVhbVNvdXJjZSopOwogCiAgICAg
Ym9vbCBlbmRlZCgpIGNvbnN0OwogCkBAIC03MiwzMyArODksNDUgQEAgcHVibGljOgogICAgIHZp
cnR1YWwgRXZlbnRUYXJnZXRJbnRlcmZhY2UgZXZlbnRUYXJnZXRJbnRlcmZhY2UoKSBjb25zdCBP
VkVSUklERSBGSU5BTCB7IHJldHVybiBNZWRpYVN0cmVhbVRyYWNrRXZlbnRUYXJnZXRJbnRlcmZh
Y2VUeXBlOyB9CiAgICAgdmlydHVhbCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVj
dXRpb25Db250ZXh0KCkgY29uc3QgT1ZFUlJJREUgRklOQUwgeyByZXR1cm4gQWN0aXZlRE9NT2Jq
ZWN0OjpzY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7IH0KIAotICAgIC8vIEFjdGl2ZURPTU9iamVj
dAotICAgIHZpcnR1YWwgdm9pZCBzdG9wKCkgT1ZFUlJJREUgRklOQUw7Ci0KICAgICB1c2luZyBS
ZWZDb3VudGVkPE1lZGlhU3RyZWFtVHJhY2s+OjpyZWY7CiAgICAgdXNpbmcgUmVmQ291bnRlZDxN
ZWRpYVN0cmVhbVRyYWNrPjo6ZGVyZWY7CiAKIHByb3RlY3RlZDoKKyAgICBleHBsaWNpdCBNZWRp
YVN0cmVhbVRyYWNrKE1lZGlhU3RyZWFtVHJhY2sqKTsKICAgICBNZWRpYVN0cmVhbVRyYWNrKFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBNZWRpYVN0cmVhbVNvdXJjZSosIGNvbnN0IERpY3Rpb25h
cnkqKTsKIAogcHJpdmF0ZToKKworICAgIHZvaWQgY29uZmlndXJlVHJhY2tSZW5kZXJpbmcoKTsK
ICAgICB2b2lkIHRyYWNrRGlkRW5kKCk7CisgICAgdm9pZCBzY2hlZHVsZUV2ZW50RGlzcGF0Y2go
UGFzc1JlZlB0cjxFdmVudD4pOworICAgIHZvaWQgZGlzcGF0Y2hRdWV1ZWRFdmVudHMoKTsKKwor
ICAgIC8vIEFjdGl2ZURPTU9iamVjdAorICAgIHZpcnR1YWwgdm9pZCBzdG9wKCkgT1ZFUlJJREUg
RklOQUw7CiAKICAgICAvLyBFdmVudFRhcmdldAogICAgIHZpcnR1YWwgdm9pZCByZWZFdmVudFRh
cmdldCgpIE9WRVJSSURFIEZJTkFMIHsgcmVmKCk7IH0KICAgICB2aXJ0dWFsIHZvaWQgZGVyZWZF
dmVudFRhcmdldCgpIE9WRVJSSURFIEZJTkFMIHsgZGVyZWYoKTsgfQogCiAgICAgLy8gTWVkaWFT
dHJlYW1Tb3VyY2VPYnNlcnZlcgotICAgIHZpcnR1YWwgdm9pZCBzb3VyY2VDaGFuZ2VkU3RhdGUo
KSBPVkVSUklERSBGSU5BTDsKKyAgICB2aXJ0dWFsIHZvaWQgc291cmNlU3RhdGVDaGFuZ2VkKCkg
T1ZFUlJJREUgRklOQUw7CisgICAgdmlydHVhbCB2b2lkIHNvdXJjZU11dGVkQ2hhbmdlZCgpIE9W
RVJSSURFIEZJTkFMOworICAgIHZpcnR1YWwgdm9pZCBzb3VyY2VFbmFibGVkQ2hhbmdlZCgpIE9W
RVJSSURFIEZJTkFMOworICAgIHZpcnR1YWwgYm9vbCBzdG9wcGVkKCkgT1ZFUlJJREUgRklOQUw7
CisKKyAgICBWZWN0b3I8UmVmUHRyPEV2ZW50Pj4gbV9zY2hlZHVsZWRFdmVudHM7CiAKICAgICBS
ZWZQdHI8TWVkaWFTdHJlYW1Tb3VyY2U+IG1fc291cmNlOwotICAgIFJlZlB0cjxNZWRpYUNvbnN0
cmFpbnRzPiBtX2NvbnN0cmFpbnRzOworICAgIFJlZlB0cjxNZWRpYUNvbnN0cmFpbnRzSW1wbD4g
bV9jb25zdHJhaW50czsKICAgICBNZWRpYVN0cmVhbVNvdXJjZTo6UmVhZHlTdGF0ZSBtX3JlYWR5
U3RhdGU7CiAgICAgbXV0YWJsZSBTdHJpbmcgbV9pZDsKKyAgICBNdXRleCBtX211dGV4OwogCiAg
ICAgYm9vbCBtX3N0b3BwZWQ7CiAgICAgYm9vbCBtX2VuYWJsZWQ7CiAgICAgYm9vbCBtX211dGVk
OworICAgIGJvb2wgbV9ldmVudERpc3BhdGNoU2NoZWR1bGVkOwogfTsKIAogdHlwZWRlZiBWZWN0
b3I8UmVmUHRyPE1lZGlhU3RyZWFtVHJhY2s+ID4gTWVkaWFTdHJlYW1UcmFja1ZlY3RvcjsKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1UcmFjay5p
ZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRp
YVN0cmVhbVRyYWNrLmlkbAkocmV2aXNpb24gMTU3MDE2KQorKysgU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVRyYWNrLmlkbAkod29ya2luZyBjb3B5KQpAQCAt
MSw1ICsxLDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTIyLDYgKzIz
LDggQEAKICAqIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgogICovCiAKK2VudW0gTWVkaWFTdHJlYW1UcmFja1N0YXRlIHsgIm5ldyIs
ICJsaXZlIiwgImVuZGVkIiB9OworCiBbCiAgICAgQ29uZGl0aW9uYWw9TUVESUFfU1RSRUFNLAog
ICAgIEV2ZW50VGFyZ2V0LApAQCAtMzMsMTUgKzM2LDI5IEBACiAgICAgcmVhZG9ubHkgYXR0cmli
dXRlIERPTVN0cmluZyBpZDsKICAgICByZWFkb25seSBhdHRyaWJ1dGUgRE9NU3RyaW5nIGxhYmVs
OwogICAgICAgICAgICAgIGF0dHJpYnV0ZSBib29sZWFuIGVuYWJsZWQ7Ci0KLSAgICByZWFkb25s
eSBhdHRyaWJ1dGUgRE9NU3RyaW5nIHJlYWR5U3RhdGU7Ci0KKyAgICByZWFkb25seSBhdHRyaWJ1
dGUgYm9vbGVhbiBtdXRlZDsKICAgICBhdHRyaWJ1dGUgRXZlbnRMaXN0ZW5lciBvbm11dGU7CiAg
ICAgYXR0cmlidXRlIEV2ZW50TGlzdGVuZXIgb251bm11dGU7CisgICAgcmVhZG9ubHkgYXR0cmli
dXRlIGJvb2xlYW4gX3JlYWRvbmx5OworICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBib29sZWFuIHJl
bW90ZTsKKyAgICByZWFkb25seSBhdHRyaWJ1dGUgTWVkaWFTdHJlYW1UcmFja1N0YXRlIHJlYWR5
U3RhdGU7CisgICAgYXR0cmlidXRlIEV2ZW50TGlzdGVuZXIgb25zdGFydGVkOwogICAgIGF0dHJp
YnV0ZSBFdmVudExpc3RlbmVyIG9uZW5kZWQ7CiAKICAgICBbQ2FsbFdpdGg9U2NyaXB0RXhlY3V0
aW9uQ29udGV4dCwgUmFpc2VzRXhjZXB0aW9uXSBzdGF0aWMgdm9pZCBnZXRTb3VyY2VzKE1lZGlh
U3RyZWFtVHJhY2tTb3VyY2VzQ2FsbGJhY2sgY2FsbGJhY2spOwogCisgICAgTWVkaWFUcmFja0Nv
bnN0cmFpbnRzIGNvbnN0cmFpbnRzKCk7CisKKyAgICBNZWRpYVNvdXJjZVN0YXRlcyBzdGF0ZXMo
KTsKKworICAgIE1lZGlhU3RyZWFtQ2FwYWJpbGl0aWVzIGNhcGFiaWxpdGllcygpOyAvLyByZXR1
cm5zIGVpdGhlciBBbGxWaWRlb0NhcGFiaWxpdGllcyBvciBBbGxBdWRpb0NhcGFiaWxpdGllcwor
CisgICAgdm9pZCBhcHBseUNvbnN0cmFpbnRzKERpY3Rpb25hcnkgY29uc3RyYWludHMpOworCisg
ICAgYXR0cmlidXRlIEV2ZW50TGlzdGVuZXIgb25vdmVyY29uc3RyYWluZWQ7CisgICAgTWVkaWFT
dHJlYW1UcmFjayBjbG9uZSgpOworICAgIFtJbXBsZW1lbnRlZEFzPXN0b3BQcm9kdWNpbmdEYXRh
XSB2b2lkIHN0b3AoKTsKKwogICAgIC8vIEV2ZW50VGFyZ2V0IGludGVyZmFjZQogICAgIHZvaWQg
YWRkRXZlbnRMaXN0ZW5lcihET01TdHJpbmcgdHlwZSwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgRXZlbnRMaXN0ZW5lciBsaXN0ZW5lciwKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMv
bWVkaWFzdHJlYW0vTWVkaWFUcmFja0NvbnN0cmFpbnQuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFUcmFja0NvbnN0cmFpbnQuY3BwCShy
ZXZpc2lvbiAwKQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVRy
YWNrQ29uc3RyYWludC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw1MyBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSwgSU5DLiBgYEFT
IElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisg
KiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICoKKyAqLworCisj
aW5jbHVkZSAiY29uZmlnLmgiCisKKyNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQorCisjaW5jbHVk
ZSAiTWVkaWFUcmFja0NvbnN0cmFpbnQuaCIKKwordXNpbmcgbmFtZXNwYWNlIEpTQzsKKworbmFt
ZXNwYWNlIFdlYkNvcmUgeworCitQYXNzUmVmUHRyPE1lZGlhVHJhY2tDb25zdHJhaW50PiBNZWRp
YVRyYWNrQ29uc3RyYWludDo6Y3JlYXRlKGNvbnN0IERpY3Rpb25hcnkmIGNvbnN0cmFpbnQpCit7
CisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBNZWRpYVRyYWNrQ29uc3RyYWludChjb25zdHJhaW50
KSk7Cit9CisKK01lZGlhVHJhY2tDb25zdHJhaW50OjpNZWRpYVRyYWNrQ29uc3RyYWludChjb25z
dCBEaWN0aW9uYXJ5JiBjb25zdHJhaW50KQorICAgIDogbV9jb25zdHJhaW50KGNvbnN0cmFpbnQp
Cit7Cit9CisKK01lZGlhVHJhY2tDb25zdHJhaW50Ojp+TWVkaWFUcmFja0NvbnN0cmFpbnQoKQor
eworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZgpJbmRleDogU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVRyYWNrQ29uc3RyYWludC5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFUcmFja0NvbnN0
cmFpbnQuaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJl
YW0vTWVkaWFUcmFja0NvbnN0cmFpbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDU4IEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFLCBJ
TkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElO
Qy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKgor
ICovCisKKyNpZm5kZWYgTWVkaWFUcmFja0NvbnN0cmFpbnRfaAorI2RlZmluZSBNZWRpYVRyYWNr
Q29uc3RyYWludF9oCisKKyNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQorCisjaW5jbHVkZSAiRGlj
dGlvbmFyeS5oIgorI2luY2x1ZGUgIlNjcmlwdFdyYXBwYWJsZS5oIgorI2luY2x1ZGUgPHd0Zi9S
ZWZDb3VudGVkLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgU2NyaXB0VmFsdWU7
CisKK2NsYXNzIE1lZGlhVHJhY2tDb25zdHJhaW50IDogcHVibGljIFJlZkNvdW50ZWQ8TWVkaWFU
cmFja0NvbnN0cmFpbnQ+LCBwdWJsaWMgU2NyaXB0V3JhcHBhYmxlIHsKK3B1YmxpYzoKKyAgICBz
dGF0aWMgUGFzc1JlZlB0cjxNZWRpYVRyYWNrQ29uc3RyYWludD4gY3JlYXRlKGNvbnN0IERpY3Rp
b25hcnkmKTsKKworICAgIHZpcnR1YWwgfk1lZGlhVHJhY2tDb25zdHJhaW50KCk7CisKKyAgICBj
b25zdCBEaWN0aW9uYXJ5JiBjb25zdHJhaW50KCkgY29uc3QgeyByZXR1cm4gbV9jb25zdHJhaW50
OyB9CisKK3ByaXZhdGU6CisgICAgZXhwbGljaXQgTWVkaWFUcmFja0NvbnN0cmFpbnQoY29uc3Qg
RGljdGlvbmFyeSYpOworICAgIAorICAgIGNvbnN0IERpY3Rpb25hcnkmIG1fY29uc3RyYWludDsK
K307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIE1lZGlhVHJhY2tDb25z
dHJhaW50X2gKKworI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3Ry
ZWFtL01lZGlhVHJhY2tDb25zdHJhaW50LmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhVHJhY2tDb25zdHJhaW50LmlkbAkocmV2aXNpb24g
MCkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFUcmFja0NvbnN0
cmFpbnQuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMzEgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBB
UyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgor
ICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCitbCisg
ICAgQ29uZGl0aW9uYWw9TUVESUFfU1RSRUFNLAorICAgIE5vSW50ZXJmYWNlT2JqZWN0LAorXSBp
bnRlcmZhY2UgTWVkaWFUcmFja0NvbnN0cmFpbnQgeworfTsKKwpJbmRleDogU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVRyYWNrQ29uc3RyYWludFNldC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVRyYWNrQ29u
c3RyYWludFNldC5jcHAJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21l
ZGlhc3RyZWFtL01lZGlhVHJhY2tDb25zdHJhaW50U2V0LmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MCwwICsxLDUzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
Q09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4gCisgKgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2lmIEVOQUJMRShNRURJ
QV9TVFJFQU0pCisKKyNpbmNsdWRlICJNZWRpYVRyYWNrQ29uc3RyYWludFNldC5oIgorCit1c2lu
ZyBuYW1lc3BhY2UgSlNDOworCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1Bhc3NSZWZQdHI8TWVk
aWFUcmFja0NvbnN0cmFpbnRTZXQ+IE1lZGlhVHJhY2tDb25zdHJhaW50U2V0OjpjcmVhdGUoY29u
c3QgRGljdGlvbmFyeSYgY29uc3RyYWludHMpCit7CisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBN
ZWRpYVRyYWNrQ29uc3RyYWludFNldChjb25zdHJhaW50cykpOworfQorCitNZWRpYVRyYWNrQ29u
c3RyYWludFNldDo6TWVkaWFUcmFja0NvbnN0cmFpbnRTZXQoY29uc3QgRGljdGlvbmFyeSYgY29u
c3RyYWludHMpCisgICAgOiBtX2NvbnN0cmFpbnRzKGNvbnN0cmFpbnRzKQoreworfQorCitNZWRp
YVRyYWNrQ29uc3RyYWludFNldDo6fk1lZGlhVHJhY2tDb25zdHJhaW50U2V0KCkKK3sKK30KKwor
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFUcmFja0NvbnN0cmFpbnRTZXQuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhVHJhY2tDb25zdHJhaW50
U2V0LmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFt
L01lZGlhVHJhY2tDb25zdHJhaW50U2V0LmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw1NiBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSwg
SU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJ
TkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICog
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICoK
KyAqLworCisjaWZuZGVmIE1lZGlhVHJhY2tDb25zdHJhaW50U2V0X2gKKyNkZWZpbmUgTWVkaWFU
cmFja0NvbnN0cmFpbnRTZXRfaAorCisjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKKworI2luY2x1
ZGUgIkRpY3Rpb25hcnkuaCIKKyNpbmNsdWRlICJTY3JpcHRXcmFwcGFibGUuaCIKKyNpbmNsdWRl
IDx3dGYvUmVmQ291bnRlZC5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIE1lZGlh
VHJhY2tDb25zdHJhaW50U2V0IDogcHVibGljIFJlZkNvdW50ZWQ8TWVkaWFUcmFja0NvbnN0cmFp
bnRTZXQ+LCBwdWJsaWMgU2NyaXB0V3JhcHBhYmxlIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFz
c1JlZlB0cjxNZWRpYVRyYWNrQ29uc3RyYWludFNldD4gY3JlYXRlKGNvbnN0IERpY3Rpb25hcnkm
KTsKKworICAgIHZpcnR1YWwgfk1lZGlhVHJhY2tDb25zdHJhaW50U2V0KCk7CisKKyAgICBjb25z
dCBEaWN0aW9uYXJ5JiBjb25zdHJhaW50cygpIGNvbnN0IHsgcmV0dXJuIG1fY29uc3RyYWludHM7
IH0KKworcHJpdmF0ZToKKyAgICBleHBsaWNpdCBNZWRpYVRyYWNrQ29uc3RyYWludFNldChjb25z
dCBEaWN0aW9uYXJ5Jik7CisgICAgCisgICAgY29uc3QgRGljdGlvbmFyeSYgbV9jb25zdHJhaW50
czsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIE1lZGlhVHJhY2tD
b25zdHJhaW50U2V0X2gKKworI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21l
ZGlhc3RyZWFtL01lZGlhVHJhY2tDb25zdHJhaW50U2V0LmlkbAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhVHJhY2tDb25zdHJhaW50U2V0Lmlk
bAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVk
aWFUcmFja0NvbnN0cmFpbnRTZXQuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMzMgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgR09PR0xFIElO
Qy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBHT09HTEUgSU5DLiBPUgorICog
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkK
KyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKK1sKKyAgICBD
b25kaXRpb25hbD1NRURJQV9TVFJFQU0sCisgICAgTm9JbnRlcmZhY2VPYmplY3QsCitdIGludGVy
ZmFjZSBNZWRpYVRyYWNrQ29uc3RyYWludFNldCB7CisgICAgLy8gRklYTUU6IE5vdCBpbXBsZW1l
bnRlZC4KKyAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTIx
OTU0Cit9OworCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlh
VHJhY2tDb25zdHJhaW50cy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9tZWRpYXN0cmVhbS9NZWRpYVRyYWNrQ29uc3RyYWludHMuY3BwCShyZXZpc2lvbiAwKQorKysg
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVRyYWNrQ29uc3RyYWludHMu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNjcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUsIElOQy4gYGBBUyBJUycnIEFORCBBTlkK
KyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
CisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqCisgKi8KKworI2luY2x1ZGUgImNvbmZp
Zy5oIgorCisjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKKworI2luY2x1ZGUgIk1lZGlhVHJhY2tD
b25zdHJhaW50cy5oIgorCisjaW5jbHVkZSAiTWVkaWFUcmFja0NvbnN0cmFpbnQuaCIKKyNpbmNs
dWRlICJNZWRpYVRyYWNrQ29uc3RyYWludFNldC5oIgorI2luY2x1ZGUgIk5vdEltcGxlbWVudGVk
LmgiCisKK3VzaW5nIG5hbWVzcGFjZSBKU0M7CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworUGFz
c1JlZlB0cjxNZWRpYVRyYWNrQ29uc3RyYWludHM+IE1lZGlhVHJhY2tDb25zdHJhaW50czo6Y3Jl
YXRlKFBhc3NSZWZQdHI8TWVkaWFDb25zdHJhaW50c0ltcGw+IGNvbnN0cmFpbnRzKQoreworICAg
IHJldHVybiBhZG9wdFJlZihuZXcgTWVkaWFUcmFja0NvbnN0cmFpbnRzKGNvbnN0cmFpbnRzKSk7
Cit9CisKK01lZGlhVHJhY2tDb25zdHJhaW50czo6TWVkaWFUcmFja0NvbnN0cmFpbnRzKFBhc3NS
ZWZQdHI8TWVkaWFDb25zdHJhaW50c0ltcGw+IGNvbnN0cmFpbnRzKQorICAgIDogbV9jb25zdHJh
aW50cyhjb25zdHJhaW50cykKK3sKK30KKworVmVjdG9yPFBhc3NSZWZQdHI8TWVkaWFUcmFja0Nv
bnN0cmFpbnQ+PiBNZWRpYVRyYWNrQ29uc3RyYWludHM6Om9wdGlvbmFsKGJvb2wpIGNvbnN0Cit7
CisgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyMTk1NAor
ICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIFZlY3RvcjxQYXNzUmVmUHRyPE1lZGlh
VHJhY2tDb25zdHJhaW50Pj4oKTsKK30KKworUGFzc1JlZlB0cjxNZWRpYVRyYWNrQ29uc3RyYWlu
dFNldD4gTWVkaWFUcmFja0NvbnN0cmFpbnRzOjptYW5kYXRvcnkoYm9vbCkgY29uc3QKK3sKKyAg
ICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTIxOTU0CisgICAg
bm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gbnVsbHB0cjsKK30KKworfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQorCisjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFz
dHJlYW0vTWVkaWFUcmFja0NvbnN0cmFpbnRzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVRyYWNrQ29uc3RyYWludHMuaAkocmV2aXNpb24g
MCkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFUcmFja0NvbnN0
cmFpbnRzLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw2MCBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSwgSU5DLiBgYEFTIElTJycgQU5E
IEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
CisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICoKKyAqLworCisjaWZuZGVmIE1l
ZGlhVHJhY2tDb25zdHJhaW50c19oCisjZGVmaW5lIE1lZGlhVHJhY2tDb25zdHJhaW50c19oCisK
KyNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQorCisjaW5jbHVkZSAiTWVkaWFDb25zdHJhaW50c0lt
cGwuaCIKKyNpbmNsdWRlICJTY3JpcHRXcmFwcGFibGUuaCIKKyNpbmNsdWRlIDx3dGYvUmVmQ291
bnRlZC5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIE1lZGlhVHJhY2tDb25zdHJh
aW50OworY2xhc3MgTWVkaWFUcmFja0NvbnN0cmFpbnRTZXQ7CisKK2NsYXNzIE1lZGlhVHJhY2tD
b25zdHJhaW50cyA6IHB1YmxpYyBSZWZDb3VudGVkPE1lZGlhVHJhY2tDb25zdHJhaW50cz4sIHB1
YmxpYyBTY3JpcHRXcmFwcGFibGUgeworcHVibGljOgorICAgIHZpcnR1YWwgfk1lZGlhVHJhY2tD
b25zdHJhaW50cygpIHsgfQorCisgICAgc3RhdGljIFBhc3NSZWZQdHI8TWVkaWFUcmFja0NvbnN0
cmFpbnRzPiBjcmVhdGUoUGFzc1JlZlB0cjxNZWRpYUNvbnN0cmFpbnRzSW1wbD4pOworCisgICAg
VmVjdG9yPFBhc3NSZWZQdHI8TWVkaWFUcmFja0NvbnN0cmFpbnQ+PiBvcHRpb25hbChib29sKSBj
b25zdDsKKyAgICBQYXNzUmVmUHRyPE1lZGlhVHJhY2tDb25zdHJhaW50U2V0PiBtYW5kYXRvcnko
Ym9vbCkgY29uc3Q7CisKK3ByaXZhdGU6CisgICAgZXhwbGljaXQgTWVkaWFUcmFja0NvbnN0cmFp
bnRzKFBhc3NSZWZQdHI8TWVkaWFDb25zdHJhaW50c0ltcGw+KTsKKyAgICAKKyAgICBSZWZQdHI8
TWVkaWFDb25zdHJhaW50c0ltcGw+IG1fY29uc3RyYWludHM7Cit9OworCit9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBNZWRpYVRyYWNrQ29uc3RyYWludHNfaAorCisjZW5kaWYK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFUcmFja0NvbnN0
cmFpbnRzLmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3Ry
ZWFtL01lZGlhVHJhY2tDb25zdHJhaW50cy5pZGwJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhVHJhY2tDb25zdHJhaW50cy5pZGwJKHdvcmtp
bmcgY29weSkKQEAgLTAsMCArMSwzMyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQor
ICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwK
KyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKK1sKKyAgICBDb25kaXRpb25hbD1N
RURJQV9TVFJFQU0sCisgICAgTm9JbnRlcmZhY2VPYmplY3QsCitdIGludGVyZmFjZSBNZWRpYVRy
YWNrQ29uc3RyYWludHMgeworICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBNZWRpYVRyYWNrQ29uc3Ry
YWludFNldD8gbWFuZGF0b3J5OworICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBNZWRpYVRyYWNrQ29u
c3RyYWludFtdPyBvcHRpb25hbDsKK307CisKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMv
bWVkaWFzdHJlYW0vVXNlck1lZGlhUmVxdWVzdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9Vc2VyTWVkaWFSZXF1ZXN0LmNwcAkocmV2aXNpb24g
MTU3MDE2KQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9Vc2VyTWVkaWFS
ZXF1ZXN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTczLDcgKzE3Myw2IEBAIHZvaWQgVXNlck1l
ZGlhUmVxdWVzdDo6Y2FsbFN1Y2Nlc3NIYW5kbGUKICAgICBmb3IgKE1lZGlhU3RyZWFtVHJhY2tW
ZWN0b3I6Oml0ZXJhdG9yIGl0ZXIgPSB0cmFja3MuYmVnaW4oKTsgaXRlciAhPSB0cmFja3MuZW5k
KCk7ICsraXRlcikKICAgICAgICAgKCppdGVyKS0+c291cmNlKCktPnNldENvbnN0cmFpbnRzKG1f
dmlkZW9Db25zdHJhaW50cyk7CiAKLSAgICBNZWRpYVN0cmVhbUNlbnRlcjo6c2hhcmVkKCkuZGlk
Q3JlYXRlTWVkaWFTdHJlYW0oc3RyZWFtRGVzY3JpcHRvci5nZXQoKSk7CiAgICAgbV9zdWNjZXNz
Q2FsbGJhY2stPmhhbmRsZUV2ZW50KHN0cmVhbS5nZXQoKSk7CiB9CiAKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vVmlkZW9TdHJlYW1UcmFjay5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9WaWRlb1N0cmVhbVRyYWNr
LmNwcAkocmV2aXNpb24gMTU3MDE2KQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0
cmVhbS9WaWRlb1N0cmVhbVRyYWNrLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDcsMTEgKzQ3LDIx
IEBAIFBhc3NSZWZQdHI8VmlkZW9TdHJlYW1UcmFjaz4gVmlkZW9TdHJlYW0KICAgICByZXR1cm4g
dHJhY2sucmVsZWFzZSgpOwogfQogCitQYXNzUmVmUHRyPFZpZGVvU3RyZWFtVHJhY2s+IFZpZGVv
U3RyZWFtVHJhY2s6OmNyZWF0ZShNZWRpYVN0cmVhbVRyYWNrKiB0cmFjaykKK3sKKyAgICByZXR1
cm4gYWRvcHRSZWYobmV3IFZpZGVvU3RyZWFtVHJhY2sodHJhY2spKTsKK30KKwogVmlkZW9TdHJl
YW1UcmFjazo6VmlkZW9TdHJlYW1UcmFjayhTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0
LCBNZWRpYVN0cmVhbVNvdXJjZSogc291cmNlLCBjb25zdCBEaWN0aW9uYXJ5KiB2aWRlb0NvbnN0
cmFpbnRzKQogICAgIDogTWVkaWFTdHJlYW1UcmFjayhjb250ZXh0LCBzb3VyY2UsIHZpZGVvQ29u
c3RyYWludHMpCiB7CiB9CiAKK1ZpZGVvU3RyZWFtVHJhY2s6OlZpZGVvU3RyZWFtVHJhY2soTWVk
aWFTdHJlYW1UcmFjayogdHJhY2spCisgICAgOiBNZWRpYVN0cmVhbVRyYWNrKHRyYWNrKQorewor
fQorCiBjb25zdCBBdG9taWNTdHJpbmcmIFZpZGVvU3RyZWFtVHJhY2s6OmtpbmQoKSBjb25zdAog
ewogICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxBdG9taWNTdHJpbmc+IHZpZGVvS2luZCgidmlk
ZW8iLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vVmlkZW9TdHJlYW1UcmFjay5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vVmlkZW9TdHJlYW1UcmFjay5o
CShyZXZpc2lvbiAxNTcwMzkpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFt
L1ZpZGVvU3RyZWFtVHJhY2suaAkod29ya2luZyBjb3B5KQpAQCAtMjksOCArMjksOCBAQAogI2lm
IEVOQUJMRShNRURJQV9TVFJFQU0pCiAKICNpbmNsdWRlICJNZWRpYVN0cmVhbVRyYWNrLmgiCi0j
aW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CisjaW5j
bHVkZSA8d3RmL1ZlY3Rvci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTQxLDYgKzQx
LDcgQEAgY2xhc3MgVmlkZW9TdHJlYW1UcmFjayBGSU5BTCA6IHB1YmxpYyBNZQogcHVibGljOgog
ICAgIHN0YXRpYyBQYXNzUmVmUHRyPFZpZGVvU3RyZWFtVHJhY2s+IGNyZWF0ZShTY3JpcHRFeGVj
dXRpb25Db250ZXh0KiwgY29uc3QgRGljdGlvbmFyeSYpOwogICAgIHN0YXRpYyBQYXNzUmVmUHRy
PFZpZGVvU3RyZWFtVHJhY2s+IGNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgTWVkaWFT
dHJlYW1Tb3VyY2UqKTsKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxWaWRlb1N0cmVhbVRyYWNrPiBj
cmVhdGUoTWVkaWFTdHJlYW1UcmFjayopOwogCiAgICAgdmlydHVhbCB+VmlkZW9TdHJlYW1UcmFj
aygpIHsgfQogCkBAIC00OCw2ICs0OSw3IEBAIHB1YmxpYzoKIAogcHJpdmF0ZToKICAgICBWaWRl
b1N0cmVhbVRyYWNrKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBNZWRpYVN0cmVhbVNvdXJjZSos
IGNvbnN0IERpY3Rpb25hcnkqKTsKKyAgICBleHBsaWNpdCBWaWRlb1N0cmVhbVRyYWNrKE1lZGlh
U3RyZWFtVHJhY2sqKTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0LmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQ29udGV4dC5jcHAJKHJldmlz
aW9uIDE1NzAxNikKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250
ZXh0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjMsNiArNjMsNyBAQAogI2lmIEVOQUJMRShNRURJ
QV9TVFJFQU0pCiAjaW5jbHVkZSAiTWVkaWFTdHJlYW0uaCIKICNpbmNsdWRlICJNZWRpYVN0cmVh
bUF1ZGlvRGVzdGluYXRpb25Ob2RlLmgiCisjaW5jbHVkZSAiTWVkaWFTdHJlYW1BdWRpb1NvdXJj
ZS5oIgogI2luY2x1ZGUgIk1lZGlhU3RyZWFtQXVkaW9Tb3VyY2VOb2RlLmgiCiAjZW5kaWYKIApA
QCAtNDIwLDEyICs0MjEsMTQgQEAgUGFzc1JlZlB0cjxNZWRpYVN0cmVhbUF1ZGlvU291cmNlTm9k
ZT4gQQogICAgIC8vIEZJWE1FOiBnZXQgYSBwcm92aWRlciBmb3Igbm9uLWxvY2FsIE1lZGlhU3Ry
ZWFtcyAobGlrZSBmcm9tIGEgcmVtb3RlIHBlZXIpLgogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBp
IDwgYXVkaW9UcmFja3Muc2l6ZSgpOyArK2kpIHsKICAgICAgICAgUmVmUHRyPE1lZGlhU3RyZWFt
VHJhY2s+IGxvY2FsQXVkaW8gPSBhdWRpb1RyYWNrc1tpXTsKLSAgICAgICAgTWVkaWFTdHJlYW1T
b3VyY2UqIHNvdXJjZSA9IGxvY2FsQXVkaW8tPnNvdXJjZSgpOwotICAgICAgICBpZiAoIXNvdXJj
ZS0+ZGV2aWNlSWQoKS5pc0VtcHR5KCkpIHsKLSAgICAgICAgICAgIGRlc3RpbmF0aW9uKCktPmVu
YWJsZUlucHV0KHNvdXJjZS0+ZGV2aWNlSWQoKSk7Ci0gICAgICAgICAgICBwcm92aWRlciA9IGRl
c3RpbmF0aW9uKCktPmxvY2FsQXVkaW9JbnB1dFByb3ZpZGVyKCk7Ci0gICAgICAgICAgICBicmVh
azsKLSAgICAgICAgfQorICAgICAgICBpZiAoIWxvY2FsQXVkaW8tPnNvdXJjZSgpLT5pc0F1ZGlv
U3RyZWFtU291cmNlKCkpCisgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICBNZWRpYVN0
cmVhbUF1ZGlvU291cmNlKiBzb3VyY2UgPSBzdGF0aWNfY2FzdDxNZWRpYVN0cmVhbUF1ZGlvU291
cmNlKj4obG9jYWxBdWRpby0+c291cmNlKCkpOworICAgICAgICBBU1NFUlQoIXNvdXJjZS0+ZGV2
aWNlSWQoKS5pc0VtcHR5KCkpOworICAgICAgICBkZXN0aW5hdGlvbigpLT5lbmFibGVJbnB1dChz
b3VyY2UtPmRldmljZUlkKCkpOworICAgICAgICBwcm92aWRlciA9IGRlc3RpbmF0aW9uKCktPmxv
Y2FsQXVkaW9JbnB1dFByb3ZpZGVyKCk7CisgICAgICAgIGJyZWFrOwogICAgIH0KIAogICAgIFJl
ZlB0cjxNZWRpYVN0cmVhbUF1ZGlvU291cmNlTm9kZT4gbm9kZSA9IE1lZGlhU3RyZWFtQXVkaW9T
b3VyY2VOb2RlOjpjcmVhdGUodGhpcywgbWVkaWFTdHJlYW0sIHByb3ZpZGVyKTsKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vTWVkaWFTdHJlYW1BdWRpb0Rlc3RpbmF0aW9u
Tm9kZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9N
ZWRpYVN0cmVhbUF1ZGlvRGVzdGluYXRpb25Ob2RlLmNwcAkocmV2aXNpb24gMTU3MDE2KQorKysg
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9NZWRpYVN0cmVhbUF1ZGlvRGVzdGluYXRp
b25Ob2RlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzEsOSArMzEsOCBAQAogI2luY2x1ZGUgIkF1
ZGlvQ29udGV4dC5oIgogI2luY2x1ZGUgIkF1ZGlvTm9kZUlucHV0LmgiCiAjaW5jbHVkZSAiTWVk
aWFTdHJlYW0uaCIKLSNpbmNsdWRlICJNZWRpYVN0cmVhbUNlbnRlci5oIgorI2luY2x1ZGUgIk1l
ZGlhU3RyZWFtQXVkaW9Tb3VyY2UuaCIKICNpbmNsdWRlICJSVENQZWVyQ29ubmVjdGlvbkhhbmRs
ZXIuaCIKLSNpbmNsdWRlICJVVUlELmgiCiAjaW5jbHVkZSA8d3RmL0xvY2tlci5oPgogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CkBAIC00OSwxMiArNDgsMTAgQEAgTWVkaWFTdHJlYW1BdWRpb0Rlc3Rp
bmF0aW9uTm9kZTo6TWVkaWFTdAogewogICAgIHNldE5vZGVUeXBlKE5vZGVUeXBlTWVkaWFTdHJl
YW1BdWRpb0Rlc3RpbmF0aW9uKTsKIAotICAgIG1fc291cmNlID0gTWVkaWFTdHJlYW1Tb3VyY2U6
OmNyZWF0ZShBU0NJSUxpdGVyYWwoIldlYkF1ZGlvLSIpICsgY3JlYXRlQ2Fub25pY2FsVVVJRFN0
cmluZygpLCBNZWRpYVN0cmVhbVNvdXJjZTo6QXVkaW8sICJNZWRpYVN0cmVhbUF1ZGlvRGVzdGlu
YXRpb25Ob2RlIiwgTWVkaWFTdHJlYW1Tb3VyY2U6OkxpdmUsIHRydWUpOworICAgIG1fc291cmNl
ID0gTWVkaWFTdHJlYW1BdWRpb1NvdXJjZTo6Y3JlYXRlKCk7CiAgICAgTWVkaWFTdHJlYW1Tb3Vy
Y2VWZWN0b3IgYXVkaW9Tb3VyY2VzOwogICAgIGF1ZGlvU291cmNlcy5hcHBlbmQobV9zb3VyY2Up
OwotICAgIE1lZGlhU3RyZWFtU291cmNlVmVjdG9yIHZpZGVvU291cmNlczsKLSAgICBtX3N0cmVh
bSA9IE1lZGlhU3RyZWFtOjpjcmVhdGUoY29udGV4dC0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgp
LCBNZWRpYVN0cmVhbURlc2NyaXB0b3I6OmNyZWF0ZShhdWRpb1NvdXJjZXMsIHZpZGVvU291cmNl
cykpOwotICAgIE1lZGlhU3RyZWFtQ2VudGVyOjpzaGFyZWQoKS5kaWRDcmVhdGVNZWRpYVN0cmVh
bShtX3N0cmVhbS0+ZGVzY3JpcHRvcigpKTsKKyAgICBtX3N0cmVhbSA9IE1lZGlhU3RyZWFtOjpj
cmVhdGUoY29udGV4dC0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLCBNZWRpYVN0cmVhbURlc2Ny
aXB0b3I6OmNyZWF0ZShhdWRpb1NvdXJjZXMsIE1lZGlhU3RyZWFtU291cmNlVmVjdG9yKCkpKTsK
IAogICAgIG1fc291cmNlLT5zZXRBdWRpb0Zvcm1hdChudW1iZXJPZkNoYW5uZWxzLCBjb250ZXh0
LT5zYW1wbGVSYXRlKCkpOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlv
L01lZGlhU3RyZWFtQXVkaW9EZXN0aW5hdGlvbk5vZGUuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL01lZGlhU3RyZWFtQXVkaW9EZXN0aW5hdGlvbk5vZGUu
aAkocmV2aXNpb24gMTU3MDE2KQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9N
ZWRpYVN0cmVhbUF1ZGlvRGVzdGluYXRpb25Ob2RlLmgJKHdvcmtpbmcgY29weSkKQEAgLTM2LDYg
KzM2LDcgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQXVkaW9Db250ZXh0OworY2xh
c3MgTWVkaWFTdHJlYW1BdWRpb1NvdXJjZTsKIAogY2xhc3MgTWVkaWFTdHJlYW1BdWRpb0Rlc3Rp
bmF0aW9uTm9kZSA6IHB1YmxpYyBBdWRpb0Jhc2ljSW5zcGVjdG9yTm9kZSB7CiBwdWJsaWM6CkBA
IC02MSw3ICs2Miw3IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCBib29sIHByb3BhZ2F0ZXNTaWxl
bmNlKCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4gZmFsc2U7IH0KIAogICAgIFJlZlB0cjxNZWRp
YVN0cmVhbT4gbV9zdHJlYW07Ci0gICAgUmVmUHRyPE1lZGlhU3RyZWFtU291cmNlPiBtX3NvdXJj
ZTsKKyAgICBSZWZQdHI8TWVkaWFTdHJlYW1BdWRpb1NvdXJjZT4gbV9zb3VyY2U7CiAgICAgUmVm
UHRyPEF1ZGlvQnVzPiBtX21peEJ1czsKIH07CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViYXVkaW8vTWVkaWFTdHJlYW1BdWRpb1NvdXJjZS5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9NZWRpYVN0cmVhbUF1ZGlvU291cmNlLmNwcAko
cmV2aXNpb24gMCkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vTWVkaWFTdHJl
YW1BdWRpb1NvdXJjZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw5OCBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwg
SU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJ
TkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICog
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKKworI2lu
Y2x1ZGUgIk1lZGlhU3RyZWFtQXVkaW9Tb3VyY2UuaCIKKworI2luY2x1ZGUgIk5vdEltcGxlbWVu
dGVkLmgiCisjaW5jbHVkZSAiVVVJRC5oIgorI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CisK
K25hbWVzcGFjZSBXZWJDb3JlIHsKKworUGFzc1JlZlB0cjxNZWRpYVN0cmVhbUF1ZGlvU291cmNl
PiBNZWRpYVN0cmVhbUF1ZGlvU291cmNlOjpjcmVhdGUoKQoreworICAgIHJldHVybiBhZG9wdFJl
ZihuZXcgTWVkaWFTdHJlYW1BdWRpb1NvdXJjZSgpKTsKK30KKworTWVkaWFTdHJlYW1BdWRpb1Nv
dXJjZTo6TWVkaWFTdHJlYW1BdWRpb1NvdXJjZSgpCisgICAgOiBNZWRpYVN0cmVhbVNvdXJjZShB
U0NJSUxpdGVyYWwoIldlYkF1ZGlvLSIpICsgY3JlYXRlQ2Fub25pY2FsVVVJRFN0cmluZygpLCBN
ZWRpYVN0cmVhbVNvdXJjZTo6QXVkaW8sICJNZWRpYVN0cmVhbUF1ZGlvRGVzdGluYXRpb25Ob2Rl
IikKK3sKK30KKworUGFzc1JlZlB0cjxNZWRpYVN0cmVhbVNvdXJjZUNhcGFiaWxpdGllcz4gTWVk
aWFTdHJlYW1BdWRpb1NvdXJjZTo6Y2FwYWJpbGl0aWVzKCkgY29uc3QKK3sKKyAgICAvLyBGSVhN
RTogaW1wbGVtZW50IHRoaXMuCisgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTEyMjQzMAorICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIDA7Cit9
CisKK2NvbnN0IE1lZGlhU3RyZWFtU291cmNlU3RhdGVzJiBNZWRpYVN0cmVhbUF1ZGlvU291cmNl
OjpzdGF0ZXMoKQoreworICAgIC8vIEZJWE1FOiBpbXBsZW1lbnQgdGhpcy4KKyAgICAvLyBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTIyNDMwCisgICAgbm90SW1wbGVt
ZW50ZWQoKTsKKyAgICByZXR1cm4gbV9jdXJyZW50U3RhdGVzOworICAgIAorfQorCit2b2lkIE1l
ZGlhU3RyZWFtQXVkaW9Tb3VyY2U6OmFkZEF1ZGlvQ29uc3VtZXIoUGFzc1JlZlB0cjxBdWRpb0Rl
c3RpbmF0aW9uQ29uc3VtZXI+IGNvbnN1bWVyKQoreworICAgIE11dGV4TG9ja2VyIGxvY2tlciht
X2F1ZGlvQ29uc3VtZXJzTG9jayk7CisgICAgbV9hdWRpb0NvbnN1bWVycy5hcHBlbmQoY29uc3Vt
ZXIpOworfQorCitib29sIE1lZGlhU3RyZWFtQXVkaW9Tb3VyY2U6OnJlbW92ZUF1ZGlvQ29uc3Vt
ZXIoQXVkaW9EZXN0aW5hdGlvbkNvbnN1bWVyKiBjb25zdW1lcikKK3sKKyAgICBNdXRleExvY2tl
ciBsb2NrZXIobV9hdWRpb0NvbnN1bWVyc0xvY2spOworICAgIHNpemVfdCBwb3MgPSBtX2F1ZGlv
Q29uc3VtZXJzLmZpbmQoY29uc3VtZXIpOworICAgIGlmIChwb3MgIT0gbm90Rm91bmQpIHsKKyAg
ICAgICAgbV9hdWRpb0NvbnN1bWVycy5yZW1vdmUocG9zKTsKKyAgICAgICAgcmV0dXJuIHRydWU7
CisgICAgfQorICAgIHJldHVybiBmYWxzZTsKK30KKwordm9pZCBNZWRpYVN0cmVhbUF1ZGlvU291
cmNlOjpzZXRBdWRpb0Zvcm1hdChzaXplX3QgbnVtYmVyT2ZDaGFubmVscywgZmxvYXQgc2FtcGxl
UmF0ZSkKK3sKKyAgICBNdXRleExvY2tlciBsb2NrZXIobV9hdWRpb0NvbnN1bWVyc0xvY2spOwor
ICAgIGZvciAoVmVjdG9yPFJlZlB0cjxBdWRpb0Rlc3RpbmF0aW9uQ29uc3VtZXI+ID46Oml0ZXJh
dG9yIGl0ID0gbV9hdWRpb0NvbnN1bWVycy5iZWdpbigpOyBpdCAhPSBtX2F1ZGlvQ29uc3VtZXJz
LmVuZCgpOyArK2l0KQorICAgICAgICAoKml0KS0+c2V0Rm9ybWF0KG51bWJlck9mQ2hhbm5lbHMs
IHNhbXBsZVJhdGUpOworfQorCit2b2lkIE1lZGlhU3RyZWFtQXVkaW9Tb3VyY2U6OmNvbnN1bWVB
dWRpbyhBdWRpb0J1cyogYnVzLCBzaXplX3QgbnVtYmVyT2ZGcmFtZXMpCit7CisgICAgTXV0ZXhM
b2NrZXIgbG9ja2VyKG1fYXVkaW9Db25zdW1lcnNMb2NrKTsKKyAgICBmb3IgKFZlY3RvcjxSZWZQ
dHI8QXVkaW9EZXN0aW5hdGlvbkNvbnN1bWVyPiA+OjppdGVyYXRvciBpdCA9IG1fYXVkaW9Db25z
dW1lcnMuYmVnaW4oKTsgaXQgIT0gbV9hdWRpb0NvbnN1bWVycy5lbmQoKTsgKytpdCkKKyAgICAg
ICAgKCppdCktPmNvbnN1bWVBdWRpbyhidXMsIG51bWJlck9mRnJhbWVzKTsKK30KKworfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKE1FRElBX1NUUkVBTSkKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vTWVkaWFTdHJlYW1BdWRpb1NvdXJjZS5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vTWVkaWFTdHJl
YW1BdWRpb1NvdXJjZS5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJhdWRpby9NZWRpYVN0cmVhbUF1ZGlvU291cmNlLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCAr
MSw3NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBNZWRpYVN0cmVhbUF1ZGlvU291cmNlX2gKKyNkZWZp
bmUgTWVkaWFTdHJlYW1BdWRpb1NvdXJjZV9oCisKKyNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQor
CisjaW5jbHVkZSAiQXVkaW9EZXN0aW5hdGlvbkNvbnN1bWVyLmgiCisjaW5jbHVkZSAiTWVkaWFT
dHJlYW1Tb3VyY2UuaCIKKyNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgorI2luY2x1ZGUgPHd0
Zi9WZWN0b3IuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KKworbmFtZXNwYWNl
IFdlYkNvcmUgeworCitjbGFzcyBBdWRpb0J1czsKK2NsYXNzIE1lZGlhU3RyZWFtU291cmNlQ2Fw
YWJpbGl0aWVzOworCitjbGFzcyBNZWRpYVN0cmVhbUF1ZGlvU291cmNlIDogcHVibGljIE1lZGlh
U3RyZWFtU291cmNlIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxNZWRpYVN0cmVh
bUF1ZGlvU291cmNlPiBjcmVhdGUoKTsKKworICAgIH5NZWRpYVN0cmVhbUF1ZGlvU291cmNlKCkg
eyB9CisKKyAgICB2aXJ0dWFsIGJvb2wgaXNBdWRpb1N0cmVhbVNvdXJjZSgpIGNvbnN0IHsgcmV0
dXJuIHRydWU7IH0KKyAgICB2aXJ0dWFsIGJvb2wgdXNlSURGb3JUcmFja0lEKCkgY29uc3QgeyBy
ZXR1cm4gdHJ1ZTsgfQorCisgICAgdmlydHVhbCBQYXNzUmVmUHRyPE1lZGlhU3RyZWFtU291cmNl
Q2FwYWJpbGl0aWVzPiBjYXBhYmlsaXRpZXMoKSBjb25zdDsKKyAgICB2aXJ0dWFsIGNvbnN0IE1l
ZGlhU3RyZWFtU291cmNlU3RhdGVzJiBzdGF0ZXMoKTsKKyAgICAKKyAgICBjb25zdCBTdHJpbmcm
IGRldmljZUlkKCkgY29uc3QgeyByZXR1cm4gbV9kZXZpY2VJZDsgfQorICAgIHZvaWQgc2V0RGV2
aWNlSWQoY29uc3QgU3RyaW5nJiBkZXZpY2VJZCkgeyBtX2RldmljZUlkID0gZGV2aWNlSWQ7IH0K
KworICAgIHZvaWQgc2V0QXVkaW9Gb3JtYXQoc2l6ZV90IG51bWJlck9mQ2hhbm5lbHMsIGZsb2F0
IHNhbXBsZVJhdGUpOworICAgIHZvaWQgY29uc3VtZUF1ZGlvKEF1ZGlvQnVzKiwgc2l6ZV90IG51
bWJlck9mRnJhbWVzKTsKKworICAgIHZvaWQgYWRkQXVkaW9Db25zdW1lcihQYXNzUmVmUHRyPEF1
ZGlvRGVzdGluYXRpb25Db25zdW1lcj4pOworICAgIGJvb2wgcmVtb3ZlQXVkaW9Db25zdW1lcihB
dWRpb0Rlc3RpbmF0aW9uQ29uc3VtZXIqKTsKKyAgICBjb25zdCBWZWN0b3I8UmVmUHRyPEF1ZGlv
RGVzdGluYXRpb25Db25zdW1lcj4+JiBhdWRpb0NvbnN1bWVycygpIGNvbnN0IHsgcmV0dXJuIG1f
YXVkaW9Db25zdW1lcnM7IH0KKworcHJpdmF0ZToKKyAgICBNZWRpYVN0cmVhbUF1ZGlvU291cmNl
KCk7CisKKyAgICBTdHJpbmcgbV9kZXZpY2VJZDsKKyAgICBNdXRleCBtX2F1ZGlvQ29uc3VtZXJz
TG9jazsKKyAgICBWZWN0b3I8UmVmUHRyPEF1ZGlvRGVzdGluYXRpb25Db25zdW1lcj4+IG1fYXVk
aW9Db25zdW1lcnM7CisgICAgTWVkaWFTdHJlYW1Tb3VyY2VTdGF0ZXMgbV9jdXJyZW50U3RhdGVz
OworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKE1FRElB
X1NUUkVBTSkKKworI2VuZGlmIC8vIE1lZGlhU3RyZWFtQXVkaW9Tb3VyY2VfaApJbmRleDogU291
cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2
aXNpb24gMTU3MDE2KQorKysgU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC04NCw2ICs4NCwzMCBAQAogCQkwNzAzMzRENzE0
NTlGRkQ1MDA4RDhENDUgLyogVHJhY2tCYXNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAwNzAzMzRENjE0NTlGRkQ1MDA4RDhENDUgLyogVHJhY2tCYXNl
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMDcw
MzM0RDkxNDVBMDA2RjAwOEQ4RDQ1IC8qIFRyYWNrQmFzZS5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwNzAzMzREODE0NUEwMDZGMDA4RDhENDUgLyog
VHJhY2tCYXNlLmNwcCAqLzsgfTsKIAkJMDcwMzM0RTkxNDVBMUYzNjAwOEQ4RDQ1IC8qIEpTVHJh
Y2tDdXN0b20uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMDcwMzM0RTgxNDVBMUYzNTAwOEQ4RDQ1IC8qIEpTVHJhY2tDdXN0b20uY3BwICovOyB9Owor
CQkwNzA1ODRGRDE3RjlENkRGMDA1RjJCQ0IgLyogTWVkaWFTdHJlYW1Tb3VyY2VDYXBhYmlsaXRp
ZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3MDU4
NEZCMTdGOUQ2REYwMDVGMkJDQiAvKiBNZWRpYVN0cmVhbVNvdXJjZUNhcGFiaWxpdGllcy5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTA3MDU4NEZG
MTdGOUYwNUUwMDVGMkJDQiAvKiBDYXBhYmlsaXR5UmFuZ2UuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDcwNTg0RkUxN0Y5RjA1RTAwNUYyQkNCIC8q
IENhcGFiaWxpdHlSYW5nZS5jcHAgKi87IH07CisJCTA3MDU4NTAyMTdGQTEwRDAwMDVGMkJDQiAv
KiBKU0FsbFZpZGVvQ2FwYWJpbGl0aWVzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDA3MDU4NTAwMTdGQTEwRDAwMDVGMkJDQiAvKiBKU0FsbFZpZGVv
Q2FwYWJpbGl0aWVzLmNwcCAqLzsgfTsKKwkJMDcwNTg1MDMxN0ZBMTBEMDAwNUYyQkNCIC8qIEpT
QWxsVmlkZW9DYXBhYmlsaXRpZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDA3MDU4NTAxMTdGQTEwRDAwMDVGMkJDQiAvKiBKU0FsbFZpZGVvQ2FwYWJp
bGl0aWVzLmggKi87IH07CisJCTA3MDU4NTA4MTdGQTQ2ODkwMDVGMkJDQiAvKiBBbGxBdWRpb0Nh
cGFiaWxpdGllcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMDcwNTg1MDUxN0ZBNDY4OTAwNUYyQkNCIC8qIEFsbEF1ZGlvQ2FwYWJpbGl0aWVzLmggKi87
IH07CisJCTA3MDU4NTBCMTdGQTQ4MjcwMDVGMkJDQiAvKiBNZWRpYVN0cmVhbUNhcGFiaWxpdGll
cy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDcwNTg1
MEExN0ZBNDgyNzAwNUYyQkNCIC8qIE1lZGlhU3RyZWFtQ2FwYWJpbGl0aWVzLmggKi87IH07CisJ
CTA3MDU4NTEyMTdGQTcxMDcwMDVGMkJDQiAvKiBKU01lZGlhU3RyZWFtQ2FwYWJpbGl0aWVzLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3MDU4NTEw
MTdGQTcxMDcwMDVGMkJDQiAvKiBKU01lZGlhU3RyZWFtQ2FwYWJpbGl0aWVzLmNwcCAqLzsgfTsK
KwkJMDcwNTg1MTMxN0ZBNzEwNzAwNUYyQkNCIC8qIEpTTWVkaWFTdHJlYW1DYXBhYmlsaXRpZXMu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3MDU4NTEx
MTdGQTcxMDcwMDVGMkJDQiAvKiBKU01lZGlhU3RyZWFtQ2FwYWJpbGl0aWVzLmggKi87IH07CisJ
CTA3MDU4NTE1MTdGQjBFRUEwMDVGMkJDQiAvKiBNZWRpYVN0cmVhbUNhcGFiaWxpdGllcy5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwNzA1ODUxNDE3
RkIwRTJDMDA1RjJCQ0IgLyogTWVkaWFTdHJlYW1DYXBhYmlsaXRpZXMuY3BwICovOyB9OworCQkw
NzA1ODUxNzE3RkI0MEU5MDA1RjJCQ0IgLyogSlNNZWRpYVN0cmVhbUNhcGFiaWxpdGllc0N1c3Rv
bS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwNzA1
ODUxNjE3RkI0MEU5MDA1RjJCQ0IgLyogSlNNZWRpYVN0cmVhbUNhcGFiaWxpdGllc0N1c3RvbS5j
cHAgKi87IH07CisJCTA3MDU4NTFBMTdGQjQ0QjQwMDVGMkJDQiAvKiBKU0FsbEF1ZGlvQ2FwYWJp
bGl0aWVzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDA3MDU4NTE4MTdGQjQ0QjQwMDVGMkJDQiAvKiBKU0FsbEF1ZGlvQ2FwYWJpbGl0aWVzLmNwcCAq
LzsgfTsKKwkJMDcwNTg1MUIxN0ZCNDRCNDAwNUYyQkNCIC8qIEpTQWxsQXVkaW9DYXBhYmlsaXRp
ZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3MDU4
NTE5MTdGQjQ0QjQwMDVGMkJDQiAvKiBKU0FsbEF1ZGlvQ2FwYWJpbGl0aWVzLmggKi87IH07CisJ
CTA3MDU4NTIxMTdGREMxNDAwMDVGMkJDQiAvKiBNZWRpYVRyYWNrQ29uc3RyYWludC5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDcwNTg1MUQxN0ZEQzE0
MDAwNUYyQkNCIC8qIE1lZGlhVHJhY2tDb25zdHJhaW50LmggKi87IH07CisJCTA3MDU4NTIzMTdG
REMxNDAwMDVGMkJDQiAvKiBNZWRpYVRyYWNrQ29uc3RyYWludHMuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDcwNTg1MUYxN0ZEQzE0MDAwNUYyQkNC
IC8qIE1lZGlhVHJhY2tDb25zdHJhaW50cy5jcHAgKi87IH07CisJCTA3MDU4NTI0MTdGREMxNDAw
MDVGMkJDQiAvKiBNZWRpYVRyYWNrQ29uc3RyYWludHMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3MDU4NTIwMTdGREMxNDAwMDVGMkJDQiAvKiBNZWRp
YVRyYWNrQ29uc3RyYWludHMuaCAqLzsgfTsKKwkJMDcwNTg1MjkxN0ZERTAyQzAwNUYyQkNCIC8q
IE1lZGlhVHJhY2tDb25zdHJhaW50U2V0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAwNzA1ODUyNjE3RkRFMDJCMDA1RjJCQ0IgLyogTWVkaWFUcmFja0Nv
bnN0cmFpbnRTZXQuaCAqLzsgfTsKKwkJMDcwNTg1MzExN0ZERTZEOTAwNUYyQkNCIC8qIEpTTWVk
aWFUcmFja0NvbnN0cmFpbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMDcwNTg1MkIxN0ZERTZEOTAwNUYyQkNCIC8qIEpTTWVkaWFUcmFja0NvbnN0
cmFpbnQuY3BwICovOyB9OworCQkwNzA1ODUzMjE3RkRFNkQ5MDA1RjJCQ0IgLyogSlNNZWRpYVRy
YWNrQ29uc3RyYWludC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMDcwNTg1MkMxN0ZERTZEOTAwNUYyQkNCIC8qIEpTTWVkaWFUcmFja0NvbnN0cmFpbnQu
aCAqLzsgfTsKKwkJMDcwNTg1MzMxN0ZERTZEOTAwNUYyQkNCIC8qIEpTTWVkaWFUcmFja0NvbnN0
cmFpbnRzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDA3MDU4NTJEMTdGREU2RDkwMDVGMkJDQiAvKiBKU01lZGlhVHJhY2tDb25zdHJhaW50cy5jcHAg
Ki87IH07CisJCTA3MDU4NTM0MTdGREU2RDkwMDVGMkJDQiAvKiBKU01lZGlhVHJhY2tDb25zdHJh
aW50cy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDcw
NTg1MkUxN0ZERTZEOTAwNUYyQkNCIC8qIEpTTWVkaWFUcmFja0NvbnN0cmFpbnRzLmggKi87IH07
CisJCTA3MDU4NTM1MTdGREU2RDkwMDVGMkJDQiAvKiBKU01lZGlhVHJhY2tDb25zdHJhaW50U2V0
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3MDU4
NTJGMTdGREU2RDkwMDVGMkJDQiAvKiBKU01lZGlhVHJhY2tDb25zdHJhaW50U2V0LmNwcCAqLzsg
fTsKKwkJMDcwNTg1MzYxN0ZERTZEOTAwNUYyQkNCIC8qIEpTTWVkaWFUcmFja0NvbnN0cmFpbnRT
ZXQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3MDU4
NTMwMTdGREU2RDkwMDVGMkJDQiAvKiBKU01lZGlhVHJhY2tDb25zdHJhaW50U2V0LmggKi87IH07
CisJCTA3MDU4NTM4MTdGRTA0NEYwMDVGMkJDQiAvKiBNZWRpYVRyYWNrQ29uc3RyYWludFNldC5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwNzA1ODUz
NzE3RkUwNDRGMDA1RjJCQ0IgLyogTWVkaWFUcmFja0NvbnN0cmFpbnRTZXQuY3BwICovOyB9Owor
CQkwNzA1ODUzQTE3RkUwNzcwMDA1RjJCQ0IgLyogTWVkaWFUcmFja0NvbnN0cmFpbnQuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDcwNTg1MzkxN0ZF
MDc3MDAwNUYyQkNCIC8qIE1lZGlhVHJhY2tDb25zdHJhaW50LmNwcCAqLzsgfTsKIAkJMDcwNzU2
OEIxNDIyNjJENjAwNDE0MTYxIC8qIEhUTUxUcmFja0VsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDcwNzU2ODgxNDIyNjJENjAwNDE0MTYx
IC8qIEhUTUxUcmFja0VsZW1lbnQuY3BwICovOyB9OwogCQkwNzA3NTY4QzE0MjI2MkQ2MDA0MTQx
NjEgLyogSFRNTFRyYWNrRWxlbWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMDcwNzU2ODkxNDIyNjJENjAwNDE0MTYxIC8qIEhUTUxUcmFja0VsZW1l
bnQuaCAqLzsgfTsKIAkJMDcwNzU2OTQxNDIyNjY4RDAwNDE0MTYxIC8qIEpTVGV4dFRyYWNrLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3MDc1NjhF
MTQyMjY2OEMwMDQxNDE2MSAvKiBKU1RleHRUcmFjay5jcHAgKi87IH07CkBAIC0xMTksNiArMTQz
LDkgQEAKIAkJMDczNUVFNkEwRjQwQzVFNDAwNEEyNjA0IC8qIE1lZGlhUGxheWVyUHJveHkuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3MzVFRTY5MEY0
MEM1RTQwMDRBMjYwNCAvKiBNZWRpYVBsYXllclByb3h5LmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMDczNjdEREYxNzJDQTY3RjAwRDg2MUI5IC8q
IEluYmFuZFRleHRUcmFja1ByaXZhdGVMZWdhY3lBVkZPYmpDLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwNzM2N0RERDE3MkNBNjdGMDBEODYxQjkgLyog
SW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUxlZ2FjeUFWRk9iakMuaCAqLzsgfTsKIAkJMDczNjdERTAx
NzJDQTY4MjAwRDg2MUI5IC8qIEluYmFuZFRleHRUcmFja1ByaXZhdGVMZWdhY3lBVkZPYmpDLm1t
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDczNjdEREUx
NzJDQTY3RjAwRDg2MUI5IC8qIEluYmFuZFRleHRUcmFja1ByaXZhdGVMZWdhY3lBVkZPYmpDLm1t
ICovOyB9OworCQkwNzNBQjRCMzE3RjhCQUNBMDA2RTBENkYgLyogQWxsVmlkZW9DYXBhYmlsaXRp
ZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3M0FC
NEIwMTdGOEJBQ0EwMDZFMEQ2RiAvKiBBbGxWaWRlb0NhcGFiaWxpdGllcy5oICovOyB9OworCQkw
NzNBQjRCNzE3RjkyRUNGMDA2RTBENkYgLyogSlNDYXBhYmlsaXR5UmFuZ2UuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDczQUI0QjUxN0Y5MkVDRjAw
NkUwRDZGIC8qIEpTQ2FwYWJpbGl0eVJhbmdlLmNwcCAqLzsgfTsKKwkJMDczQUI0QjgxN0Y5MkVD
RjAwNkUwRDZGIC8qIEpTQ2FwYWJpbGl0eVJhbmdlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwNzNBQjRCNjE3RjkyRUNGMDA2RTBENkYgLyogSlNDYXBh
YmlsaXR5UmFuZ2UuaCAqLzsgfTsKIAkJMDczQkUzNDAxN0QxN0UwMTAwMkJENDMxIC8qIEpTTmF2
aWdhdG9yTWVkaWFTdHJlYW0uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMDczQkUzM0UxN0QxN0UwMTAwMkJENDMxIC8qIEpTTmF2aWdhdG9yTWVkaWFT
dHJlYW0uY3BwICovOyB9OwogCQkwNzNCRTM0MTE3RDE3RTAxMDAyQkQ0MzEgLyogSlNOYXZpZ2F0
b3JNZWRpYVN0cmVhbS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMDczQkUzM0YxN0QxN0UwMTAwMkJENDMxIC8qIEpTTmF2aWdhdG9yTWVkaWFTdHJlYW0u
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwNzNC
RTM0ODE3RDE3RTdBMDAyQkQ0MzEgLyogSlNOYXZpZ2F0b3JVc2VyTWVkaWFFcnJvci5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwNzNCRTM0MjE3RDE3
RTdBMDAyQkQ0MzEgLyogSlNOYXZpZ2F0b3JVc2VyTWVkaWFFcnJvci5jcHAgKi87IH07CkBAIC0x
NDUsNiArMTcyLDggQEAKIAkJMDc2OTcwODYxNDYzQUQ4NzAwRjUwMkNGIC8qIFRleHRUcmFja0xp
c3QuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDc2
OTcwODQxNDYzQUQ4NzAwRjUwMkNGIC8qIFRleHRUcmFja0xpc3QuY3BwICovOyB9OwogCQkwNzY5
NzA4NzE0NjNBRDg3MDBGNTAyQ0YgLyogVGV4dFRyYWNrTGlzdC5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDc2OTcwODUxNDYzQUQ4NzAwRjUwMkNGIC8q
IFRleHRUcmFja0xpc3QuaCAqLzsgfTsKIAkJMDc2RjBEMEUxMkI4MTkyNzAwQzI2QUE0IC8qIE1l
ZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMDc2RjBEMEExMkI4MTkyNzAwQzI2QUE0IC8qIE1lZGlhUGxh
eWVyUHJpdmF0ZUFWRm91bmRhdGlvbi5oICovOyB9OworCQkwNzgzMjI4NDE4MDEzRUQ4MDA5OTlF
MEMgLyogTWVkaWFTdHJlYW1BdWRpb1NvdXJjZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwNzgzMjI4MjE4MDEzRUQ3MDA5OTlFMEMgLyogTWVkaWFT
dHJlYW1BdWRpb1NvdXJjZS5jcHAgKi87IH07CisJCTA3ODMyMjg1MTgwMTNFRDgwMDk5OUUwQyAv
KiBNZWRpYVN0cmVhbUF1ZGlvU291cmNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAwNzgzMjI4MzE4MDEzRUQ4MDA5OTlFMEMgLyogTWVkaWFTdHJlYW1B
dWRpb1NvdXJjZS5oICovOyB9OwogCQkwNzg0NjM0MjE0NUIxNTFBMDBBNThERjEgLyogSlNUcmFj
a0V2ZW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDA3ODQ2MzQwMTQ1QjE1MUEwMEE1OERGMSAvKiBKU1RyYWNrRXZlbnQuY3BwICovOyB9OwogCQkw
Nzg0NjM0MzE0NUIxNTFBMDBBNThERjEgLyogSlNUcmFja0V2ZW50LmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwNzg0NjM0MTE0NUIxNTFBMDBBNThERjEg
LyogSlNUcmFja0V2ZW50LmggKi87IH07CiAJCTA3ODQ2Mzg1MTQ1QjFCOEUwMEE1OERGMSAvKiBK
U1RyYWNrQ3VzdG9tLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAwNzg0NjM4NDE0NUIxQjhFMDBBNThERjEgLyogSlNUcmFja0N1c3RvbS5oICovOyB9OwpA
QCAtMjc2LDYgKzMwNSwxMiBAQAogCQkwN0M1OUI2MDE3RjRCMjA4MDAwRkJDQkIgLyogSlNWaWRl
b1N0cmVhbVRyYWNrLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAwN0M1OUI1QzE3RjRCMjA4MDAwRkJDQkIgLyogSlNWaWRlb1N0cmVhbVRyYWNrLmggKi87
IH07CiAJCTA3QzU5QjYzMTdGNEQxQkYwMDBGQkNCQiAvKiBNb2NrTWVkaWFTdHJlYW1DZW50ZXIu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDdDNTlC
NjExN0Y0Q0Y4NzAwMEZCQ0JCIC8qIE1vY2tNZWRpYVN0cmVhbUNlbnRlci5jcHAgKi87IH07CiAJ
CTA3QzU5QjY0MTdGNEQxQzQwMDBGQkNCQiAvKiBNb2NrTWVkaWFTdHJlYW1DZW50ZXIuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3QzU5QjYyMTdGNENG
ODcwMDBGQkNCQiAvKiBNb2NrTWVkaWFTdHJlYW1DZW50ZXIuaCAqLzsgfTsKKwkJMDdDNTlCNjgx
N0Y3ODRCQTAwMEZCQ0JCIC8qIE1lZGlhU291cmNlU3RhdGVzLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3QzU5QjY1MTdGNzg0QkEwMDBGQkNCQiAv
KiBNZWRpYVNvdXJjZVN0YXRlcy5jcHAgKi87IH07CisJCTA3QzU5QjY5MTdGNzg0QkEwMDBGQkNC
QiAvKiBNZWRpYVNvdXJjZVN0YXRlcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMDdDNTlCNjYxN0Y3ODRCQTAwMEZCQ0JCIC8qIE1lZGlhU291cmNlU3Rh
dGVzLmggKi87IH07CisJCTA3QzU5QjZFMTdGNzk0RjYwMDBGQkNCQiAvKiBKU01lZGlhU291cmNl
U3RhdGVzQ3VzdG9tLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDA3QzU5QjZEMTdGNzk0RjYwMDBGQkNCQiAvKiBKU01lZGlhU291cmNlU3RhdGVzQ3Vz
dG9tLmNwcCAqLzsgfTsKKwkJMDdDNTlCNzExN0Y3OUM3QzAwMEZCQ0JCIC8qIEpTTWVkaWFTb3Vy
Y2VTdGF0ZXMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMDdDNTlCNkYxN0Y3OUM3QzAwMEZCQ0JCIC8qIEpTTWVkaWFTb3VyY2VTdGF0ZXMuY3BwICov
OyB9OworCQkwN0M1OUI3MjE3Rjc5QzdDMDAwRkJDQkIgLyogSlNNZWRpYVNvdXJjZVN0YXRlcy5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDdDNTlCNzAx
N0Y3OUM3QzAwMEZCQ0JCIC8qIEpTTWVkaWFTb3VyY2VTdGF0ZXMuaCAqLzsgfTsKKwkJMDdDNTlC
NzYxN0Y3RDBEQjAwMEZCQ0JCIC8qIENhcGFiaWxpdHlSYW5nZS5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDdDNTlCNzQxN0Y3RDA5RDAwMEZCQ0JCIC8q
IENhcGFiaWxpdHlSYW5nZS5oICovOyB9OwogCQkwN0NFNzdENTE2NzEyQTZBMDBDNTVBNDcgLyog
SW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUNsaWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMDdDRTc3RDQxNjcxMkE2QTAwQzU1QTQ3IC8qIEluYmFuZFRl
eHRUcmFja1ByaXZhdGVDbGllbnQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwogCQkwN0RDNUZENDE3RDNFRUU5MDA5OUY4OTAgLyogSlNSVENTdGF0c1Jl
c3BvbnNlQ3VzdG9tLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDA3REM1RkQzMTdEM0VFRTkwMDk5Rjg5MCAvKiBKU1JUQ1N0YXRzUmVzcG9uc2VDdXN0
b20uY3BwICovOyB9OwogCQkwN0UxMTZCMTE0ODlDOUExMDBFQzVBQ0UgLyogSlNUZXh0VHJhY2tD
dXN0b20uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MDdFMTE2QjAxNDg5QzlBMTAwRUM1QUNFIC8qIEpTVGV4dFRyYWNrQ3VzdG9tLmNwcCAqLzsgfTsK
QEAgLTY0MTQsNiArNjQ0OSwzNSBAQAogCQkwNzAzMzRENjE0NTlGRkQ1MDA4RDhENDUgLyogVHJh
Y2tCYXNlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFRyYWNrQmFzZS5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwNzAzMzREODE0NUEwMDZGMDA4RDhENDUgLyog
VHJhY2tCYXNlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFRyYWNr
QmFzZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA3MDMzNEU4MTQ1QTFGMzUw
MDhEOEQ0NSAvKiBKU1RyYWNrQ3VzdG9tLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IEpTVHJhY2tDdXN0b20uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQkwNzA1ODRGQjE3RjlENkRGMDA1RjJCQ0IgLyogTWVkaWFTdHJlYW1Tb3VyY2VDYXBhYmlsaXRp
ZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTWVkaWFTdHJlYW1Tb3VyY2VD
YXBhYmlsaXRpZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMDcwNTg0RkUxN0Y5
RjA1RTAwNUYyQkNCIC8qIENhcGFiaWxpdHlSYW5nZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBDYXBhYmlsaXR5UmFuZ2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQkwNzA1ODUwMDE3RkExMEQwMDA1RjJCQ0IgLyogSlNBbGxWaWRlb0NhcGFiaWxp
dGllcy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0FsbFZpZGVv
Q2FwYWJpbGl0aWVzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMDcwNTg1MDEx
N0ZBMTBEMDAwNUYyQkNCIC8qIEpTQWxsVmlkZW9DYXBhYmlsaXRpZXMuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gSlNBbGxWaWRlb0NhcGFiaWxpdGllcy5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQkwNzA1ODUwNTE3RkE0Njg5MDA1RjJCQ0IgLyogQWxsQXVkaW9D
YXBhYmlsaXRpZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQWxsQXVkaW9D
YXBhYmlsaXRpZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMDcwNTg1MDYxN0ZB
NDY4OTAwNUYyQkNCIC8qIEFsbEF1ZGlvQ2FwYWJpbGl0aWVzLmlkbCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7
IHBhdGggPSBBbGxBdWRpb0NhcGFiaWxpdGllcy5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTA3MDU4NTBBMTdGQTQ4MjcwMDVGMkJDQiAvKiBNZWRpYVN0cmVhbUNhcGFiaWxpdGll
cy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNZWRpYVN0cmVhbUNhcGFiaWxp
dGllcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwNzA1ODUwRTE3RkE2RkIxMDA1
RjJCQ0IgLyogTWVkaWFTdHJlYW1DYXBhYmlsaXRpZXMuaWRsICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0
aCA9IE1lZGlhU3RyZWFtQ2FwYWJpbGl0aWVzLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJMDcwNTg1MTAxN0ZBNzEwNzAwNUYyQkNCIC8qIEpTTWVkaWFTdHJlYW1DYXBhYmlsaXRp
ZXMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNNZWRpYVN0cmVh
bUNhcGFiaWxpdGllcy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTA3MDU4NTEx
MTdGQTcxMDcwMDVGMkJDQiAvKiBKU01lZGlhU3RyZWFtQ2FwYWJpbGl0aWVzLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTTWVkaWFTdHJlYW1DYXBhYmlsaXRpZXMuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMDcwNTg1MTQxN0ZCMEUyQzAwNUYyQkNCIC8qIE1l
ZGlhU3RyZWFtQ2FwYWJpbGl0aWVzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IE1lZGlhU3RyZWFtQ2FwYWJpbGl0aWVzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJMDcwNTg1MTYxN0ZCNDBFOTAwNUYyQkNCIC8qIEpTTWVkaWFTdHJlYW1DYXBhYmls
aXRpZXNDdXN0b20uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNN
ZWRpYVN0cmVhbUNhcGFiaWxpdGllc0N1c3RvbS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTA3MDU4NTE4MTdGQjQ0QjQwMDVGMkJDQiAvKiBKU0FsbEF1ZGlvQ2FwYWJpbGl0aWVz
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTQWxsQXVkaW9DYXBh
YmlsaXRpZXMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwNzA1ODUxOTE3RkI0
NEI0MDA1RjJCQ0IgLyogSlNBbGxBdWRpb0NhcGFiaWxpdGllcy5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBKU0FsbEF1ZGlvQ2FwYWJpbGl0aWVzLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTA3MDU4NTFDMTdGREIyM0MwMDVGMkJDQiAvKiBNZWRpYVRyYWNrQ29u
c3RyYWludHMuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gdGV4dDsgcGF0aCA9IE1lZGlhVHJhY2tDb25zdHJhaW50cy5pZGw7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCTA3MDU4NTFEMTdGREMxNDAwMDVGMkJDQiAvKiBNZWRpYVRyYWNr
Q29uc3RyYWludC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNZWRpYVRyYWNr
Q29uc3RyYWludC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwNzA1ODUxRTE3RkRD
MTQwMDA1RjJCQ0IgLyogTWVkaWFUcmFja0NvbnN0cmFpbnQuaWRsICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsg
cGF0aCA9IE1lZGlhVHJhY2tDb25zdHJhaW50LmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJMDcwNTg1MUYxN0ZEQzE0MDAwNUYyQkNCIC8qIE1lZGlhVHJhY2tDb25zdHJhaW50cy5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBNZWRpYVRyYWNrQ29uc3Ry
YWludHMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwNzA1ODUyMDE3RkRDMTQw
MDA1RjJCQ0IgLyogTWVkaWFUcmFja0NvbnN0cmFpbnRzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IE1lZGlhVHJhY2tDb25zdHJhaW50cy5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQkwNzA1ODUyNjE3RkRFMDJCMDA1RjJCQ0IgLyogTWVkaWFUcmFja0NvbnN0cmFp
bnRTZXQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTWVkaWFUcmFja0NvbnN0
cmFpbnRTZXQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMDcwNTg1MjcxN0ZERTAy
QjAwNUYyQkNCIC8qIE1lZGlhVHJhY2tDb25zdHJhaW50U2V0LmlkbCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7
IHBhdGggPSBNZWRpYVRyYWNrQ29uc3RyYWludFNldC5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTA3MDU4NTJCMTdGREU2RDkwMDVGMkJDQiAvKiBKU01lZGlhVHJhY2tDb25zdHJh
aW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTTWVkaWFUcmFj
a0NvbnN0cmFpbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwNzA1ODUyQzE3
RkRFNkQ5MDA1RjJCQ0IgLyogSlNNZWRpYVRyYWNrQ29uc3RyYWludC5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBKU01lZGlhVHJhY2tDb25zdHJhaW50Lmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCTA3MDU4NTJEMTdGREU2RDkwMDVGMkJDQiAvKiBKU01lZGlhVHJh
Y2tDb25zdHJhaW50cy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBK
U01lZGlhVHJhY2tDb25zdHJhaW50cy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTA3MDU4NTJFMTdGREU2RDkwMDVGMkJDQiAvKiBKU01lZGlhVHJhY2tDb25zdHJhaW50cy5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU01lZGlhVHJhY2tDb25zdHJhaW50cy5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwNzA1ODUyRjE3RkRFNkQ5MDA1RjJCQ0Ig
LyogSlNNZWRpYVRyYWNrQ29uc3RyYWludFNldC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBKU01lZGlhVHJhY2tDb25zdHJhaW50U2V0LmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJMDcwNTg1MzAxN0ZERTZEOTAwNUYyQkNCIC8qIEpTTWVkaWFUcmFj
a0NvbnN0cmFpbnRTZXQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNNZWRp
YVRyYWNrQ29uc3RyYWludFNldC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwNzA1
ODUzNzE3RkUwNDRGMDA1RjJCQ0IgLyogTWVkaWFUcmFja0NvbnN0cmFpbnRTZXQuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTWVkaWFUcmFja0NvbnN0cmFpbnRTZXQu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwNzA1ODUzOTE3RkUwNzcwMDA1RjJC
Q0IgLyogTWVkaWFUcmFja0NvbnN0cmFpbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gTWVkaWFUcmFja0NvbnN0cmFpbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQkwNzA3NTY4ODE0MjI2MkQ2MDA0MTQxNjEgLyogSFRNTFRyYWNrRWxlbWVudC5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBIVE1MVHJhY2tFbGVtZW50
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDcwNzU2ODkxNDIyNjJENjAwNDE0
MTYxIC8qIEhUTUxUcmFja0VsZW1lbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gSFRNTFRyYWNrRWxlbWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwNzA3
NTY4QTE0MjI2MkQ2MDA0MTQxNjEgLyogSFRNTFRyYWNrRWxlbWVudC5pZGwgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0
ZXh0OyBwYXRoID0gSFRNTFRyYWNrRWxlbWVudC5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CkBAIC02NTQ5LDYgKzY2MTMsOSBAQAogCQkwNzM1RUU2OTBGNDBDNUU0MDA0QTI2MDQgLyog
TWVkaWFQbGF5ZXJQcm94eS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNZWRp
YVBsYXllclByb3h5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA3MzY3REREMTcy
Q0E2N0YwMEQ4NjFCOSAvKiBJbmJhbmRUZXh0VHJhY2tQcml2YXRlTGVnYWN5QVZGT2JqQy5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBJbmJhbmRUZXh0VHJhY2tQcml2YXRlTGVn
YWN5QVZGT2JqQy5oOyBwYXRoID0gb2JqYy9JbmJhbmRUZXh0VHJhY2tQcml2YXRlTGVnYWN5QVZG
T2JqQy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwNzM2N0RERTE3MkNBNjdGMDBE
ODYxQjkgLyogSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUxlZ2FjeUFWRk9iakMubW0gKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IG5hbWUgPSBJbmJhbmRUZXh0VHJhY2tQcml2YXRlTGVn
YWN5QVZGT2JqQy5tbTsgcGF0aCA9IG9iamMvSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUxlZ2FjeUFW
Rk9iakMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTA3M0FCNEIwMTdGOEJBQ0Ew
MDZFMEQ2RiAvKiBBbGxWaWRlb0NhcGFiaWxpdGllcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBBbGxWaWRlb0NhcGFiaWxpdGllcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQkwNzNBQjRCNTE3RjkyRUNGMDA2RTBENkYgLyogSlNDYXBhYmlsaXR5UmFuZ2UuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNDYXBhYmlsaXR5UmFuZ2Uu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwNzNBQjRCNjE3RjkyRUNGMDA2RTBE
NkYgLyogSlNDYXBhYmlsaXR5UmFuZ2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gSlNDYXBhYmlsaXR5UmFuZ2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDcz
QkUzM0UxN0QxN0UwMTAwMkJENDMxIC8qIEpTTmF2aWdhdG9yTWVkaWFTdHJlYW0uY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNOYXZpZ2F0b3JNZWRpYVN0cmVhbS5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA3M0JFMzNGMTdEMTdFMDEwMDJCRDQz
MSAvKiBKU05hdmlnYXRvck1lZGlhU3RyZWFtLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IEpTTmF2aWdhdG9yTWVkaWFTdHJlYW0uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJMDczQkUzNDIxN0QxN0U3QTAwMkJENDMxIC8qIEpTTmF2aWdhdG9yVXNlck1lZGlhRXJy
b3IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNOYXZpZ2F0b3JV
c2VyTWVkaWFFcnJvci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC02NTc1LDYg
KzY2NDIsOCBAQAogCQkwNzY5NzA4NTE0NjNBRDg3MDBGNTAyQ0YgLyogVGV4dFRyYWNrTGlzdC5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBUZXh0VHJhY2tMaXN0Lmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA3NkYwRDA5MTJCODE5MjcwMEMyNkFBNCAvKiBNZWRp
YVBsYXllclByaXZhdGVBVkZvdW5kYXRpb24uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDc2RjBEMEExMkI4MTkyNzAwQzI2QUE0IC8qIE1lZGlhUGxh
eWVyUHJpdmF0ZUFWRm91bmRhdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJMDc4MzIyODIxODAxM0VENzAwOTk5RTBDIC8qIE1lZGlhU3RyZWFtQXVkaW9Tb3Vy
Y2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTWVkaWFTdHJlYW1B
dWRpb1NvdXJjZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTA3ODMyMjgzMTgw
MTNFRDgwMDk5OUUwQyAvKiBNZWRpYVN0cmVhbUF1ZGlvU291cmNlLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IE1lZGlhU3RyZWFtQXVkaW9Tb3VyY2UuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJMDc4NDYzNDAxNDVCMTUxQTAwQTU4REYxIC8qIEpTVHJhY2tFdmVu
dC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU1RyYWNrRXZlbnQu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwNzg0NjM0MTE0NUIxNTFBMDBBNThE
RjEgLyogSlNUcmFja0V2ZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpT
VHJhY2tFdmVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwNzg0NjM4NDE0NUIx
QjhFMDBBNThERjEgLyogSlNUcmFja0N1c3RvbS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBKU1RyYWNrQ3VzdG9tLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC02
NjM5LDYgKzY3MDgsMTUgQEAKIAkJMDdDNTlCNUMxN0Y0QjIwODAwMEZCQ0JCIC8qIEpTVmlkZW9T
dHJlYW1UcmFjay5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU1ZpZGVvU3Ry
ZWFtVHJhY2suaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDdDNTlCNjExN0Y0Q0Y4
NzAwMEZCQ0JCIC8qIE1vY2tNZWRpYVN0cmVhbUNlbnRlci5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IG5hbWUgPSBNb2NrTWVkaWFTdHJlYW1DZW50ZXIuY3BwOyBwYXRoID0gbW9j
ay9Nb2NrTWVkaWFTdHJlYW1DZW50ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQkwN0M1OUI2MjE3RjRDRjg3MDAwRkJDQkIgLyogTW9ja01lZGlhU3RyZWFtQ2VudGVyLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IE1vY2tNZWRpYVN0cmVhbUNlbnRlci5oOyBw
YXRoID0gbW9jay9Nb2NrTWVkaWFTdHJlYW1DZW50ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJMDdDNTlCNjUxN0Y3ODRCQTAwMEZCQ0JCIC8qIE1lZGlhU291cmNlU3RhdGVzLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE1lZGlhU291cmNlU3RhdGVz
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMDdDNTlCNjYxN0Y3ODRCQTAwMEZC
Q0JCIC8qIE1lZGlhU291cmNlU3RhdGVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IE1lZGlhU291cmNlU3RhdGVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTA3
QzU5QjY3MTdGNzg0QkEwMDBGQkNCQiAvKiBNZWRpYVNvdXJjZVN0YXRlcy5pZGwgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSB0ZXh0OyBwYXRoID0gTWVkaWFTb3VyY2VTdGF0ZXMuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQkwN0M1OUI2RDE3Rjc5NEY2MDAwRkJDQkIgLyogSlNNZWRpYVNvdXJjZVN0YXRl
c0N1c3RvbS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU01lZGlh
U291cmNlU3RhdGVzQ3VzdG9tLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMDdD
NTlCNkYxN0Y3OUM3QzAwMEZCQ0JCIC8qIEpTTWVkaWFTb3VyY2VTdGF0ZXMuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNNZWRpYVNvdXJjZVN0YXRlcy5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTA3QzU5QjcwMTdGNzlDN0MwMDBGQkNCQiAvKiBK
U01lZGlhU291cmNlU3RhdGVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpT
TWVkaWFTb3VyY2VTdGF0ZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMDdDNTlC
NzMxN0Y3RDA5RDAwMEZCQ0JCIC8qIEFsbFZpZGVvQ2FwYWJpbGl0aWVzLmlkbCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHRleHQ7IHBhdGggPSBBbGxWaWRlb0NhcGFiaWxpdGllcy5pZGw7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCTA3QzU5Qjc0MTdGN0QwOUQwMDBGQkNCQiAvKiBDYXBhYmlsaXR5UmFuZ2Uu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ2FwYWJpbGl0eVJhbmdlLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTA3QzU5Qjc1MTdGN0QwOUQwMDBGQkNCQiAvKiBD
YXBhYmlsaXR5UmFuZ2UuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IENhcGFiaWxpdHlSYW5n
ZS5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA3Q0U3N0Q0MTY3MTJBNkEwMEM1
NUE0NyAvKiBJbmJhbmRUZXh0VHJhY2tQcml2YXRlQ2xpZW50LmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IEluYmFuZFRleHRUcmFja1ByaXZhdGVDbGllbnQuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDdEQzVGRDMxN0QzRUVFOTAwOTlGODkwIC8qIEpTUlRDU3Rh
dHNSZXNwb25zZUN1c3RvbS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBKU1JUQ1N0YXRzUmVzcG9uc2VDdXN0b20uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQkwN0UxMTZCMDE0ODlDOUExMDBFQzVBQ0UgLyogSlNUZXh0VHJhY2tDdXN0b20uY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNUZXh0VHJhY2tDdXN0b20uY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTMyMDksMTIgKzEzMjg3LDM0IEBACiAJ
CTA3MjIxQjQ2MTdDRUMzMjcwMDg0OEU1MSAvKiBtZWRpYXN0cmVhbSAqLyA9IHsKIAkJCWlzYSA9
IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCisJCQkJMDcwNTg1MzkxN0ZFMDc3MDAwNUYyQkNC
IC8qIE1lZGlhVHJhY2tDb25zdHJhaW50LmNwcCAqLywKKwkJCQkwNzA1ODUzNzE3RkUwNDRGMDA1
RjJCQ0IgLyogTWVkaWFUcmFja0NvbnN0cmFpbnRTZXQuY3BwICovLAorCQkJCTA3MDU4NTI2MTdG
REUwMkIwMDVGMkJDQiAvKiBNZWRpYVRyYWNrQ29uc3RyYWludFNldC5oICovLAorCQkJCTA3MDU4
NTI3MTdGREUwMkIwMDVGMkJDQiAvKiBNZWRpYVRyYWNrQ29uc3RyYWludFNldC5pZGwgKi8sCisJ
CQkJMDcwNTg1MUQxN0ZEQzE0MDAwNUYyQkNCIC8qIE1lZGlhVHJhY2tDb25zdHJhaW50LmggKi8s
CisJCQkJMDcwNTg1MUUxN0ZEQzE0MDAwNUYyQkNCIC8qIE1lZGlhVHJhY2tDb25zdHJhaW50Lmlk
bCAqLywKKwkJCQkwNzA1ODUxRjE3RkRDMTQwMDA1RjJCQ0IgLyogTWVkaWFUcmFja0NvbnN0cmFp
bnRzLmNwcCAqLywKKwkJCQkwNzA1ODUyMDE3RkRDMTQwMDA1RjJCQ0IgLyogTWVkaWFUcmFja0Nv
bnN0cmFpbnRzLmggKi8sCisJCQkJMDcwNTg1MUMxN0ZEQjIzQzAwNUYyQkNCIC8qIE1lZGlhVHJh
Y2tDb25zdHJhaW50cy5pZGwgKi8sCisJCQkJMDcwNTg1MDUxN0ZBNDY4OTAwNUYyQkNCIC8qIEFs
bEF1ZGlvQ2FwYWJpbGl0aWVzLmggKi8sCisJCQkJMDcwNTg1MDYxN0ZBNDY4OTAwNUYyQkNCIC8q
IEFsbEF1ZGlvQ2FwYWJpbGl0aWVzLmlkbCAqLywKKwkJCQkwNzA1ODRGRTE3RjlGMDVFMDA1RjJC
Q0IgLyogQ2FwYWJpbGl0eVJhbmdlLmNwcCAqLywKKwkJCQkwNzNBQjRCMDE3RjhCQUNBMDA2RTBE
NkYgLyogQWxsVmlkZW9DYXBhYmlsaXRpZXMuaCAqLywKKwkJCQkwN0M1OUI3MzE3RjdEMDlEMDAw
RkJDQkIgLyogQWxsVmlkZW9DYXBhYmlsaXRpZXMuaWRsICovLAorCQkJCTA3QzU5Qjc0MTdGN0Qw
OUQwMDBGQkNCQiAvKiBDYXBhYmlsaXR5UmFuZ2UuaCAqLywKKwkJCQkwN0M1OUI3NTE3RjdEMDlE
MDAwRkJDQkIgLyogQ2FwYWJpbGl0eVJhbmdlLmlkbCAqLywKKwkJCQkwN0M1OUI2NTE3Rjc4NEJB
MDAwRkJDQkIgLyogTWVkaWFTb3VyY2VTdGF0ZXMuY3BwICovLAorCQkJCTA3QzU5QjY2MTdGNzg0
QkEwMDBGQkNCQiAvKiBNZWRpYVNvdXJjZVN0YXRlcy5oICovLAorCQkJCTA3QzU5QjY3MTdGNzg0
QkEwMDBGQkNCQiAvKiBNZWRpYVNvdXJjZVN0YXRlcy5pZGwgKi8sCiAJCQkJMDdDNTlCNEQxN0Y0
QUMxNTAwMEZCQ0JCIC8qIEF1ZGlvU3RyZWFtVHJhY2suY3BwICovLAogCQkJCTA3QzU5QjRFMTdG
NEFDMTUwMDBGQkNCQiAvKiBBdWRpb1N0cmVhbVRyYWNrLmggKi8sCiAJCQkJMDdDNTlCNEYxN0Y0
QUMxNTAwMEZCQ0JCIC8qIEF1ZGlvU3RyZWFtVHJhY2suaWRsICovLAogCQkJCTA3QzU5QjUwMTdG
NEFDMTUwMDBGQkNCQiAvKiBWaWRlb1N0cmVhbVRyYWNrLmNwcCAqLywKIAkJCQkwN0M1OUI1MTE3
RjRBQzE1MDAwRkJDQkIgLyogVmlkZW9TdHJlYW1UcmFjay5oICovLAogCQkJCTA3QzU5QjUyMTdG
NEFDMTUwMDBGQkNCQiAvKiBWaWRlb1N0cmVhbVRyYWNrLmlkbCAqLywKKwkJCQkwNzA1ODUxNDE3
RkIwRTJDMDA1RjJCQ0IgLyogTWVkaWFTdHJlYW1DYXBhYmlsaXRpZXMuY3BwICovLAorCQkJCTA3
MDU4NTBFMTdGQTZGQjEwMDVGMkJDQiAvKiBNZWRpYVN0cmVhbUNhcGFiaWxpdGllcy5pZGwgKi8s
CisJCQkJMDcwNTg1MEExN0ZBNDgyNzAwNUYyQkNCIC8qIE1lZGlhU3RyZWFtQ2FwYWJpbGl0aWVz
LmggKi8sCiAJCQkJMDcyMjFCNEExN0NFQzMyNzAwODQ4RTUxIC8qIE1lZGlhQ29uc3RyYWludHNJ
bXBsLmNwcCAqLywKIAkJCQkwNzIyMUI0QjE3Q0VDMzI3MDA4NDhFNTEgLyogTWVkaWFDb25zdHJh
aW50c0ltcGwuaCAqLywKIAkJCQkwNzIyMUI0QzE3Q0VDMzI3MDA4NDhFNTEgLyogTWVkaWFTdHJl
YW0uY3BwICovLApAQCAtMTMzMTMsNiArMTM0MTMsNyBAQAogCQkJCTA3MjIxQjlEMTdDRjBBRDQw
MDg0OEU1MSAvKiBNZWRpYVN0cmVhbURlc2NyaXB0b3IuaCAqLywKIAkJCQkwNzIyMUI5RTE3Q0Yw
QUQ0MDA4NDhFNTEgLyogTWVkaWFTdHJlYW1Tb3VyY2UuY3BwICovLAogCQkJCTA3MjIxQjlGMTdD
RjBBRDQwMDg0OEU1MSAvKiBNZWRpYVN0cmVhbVNvdXJjZS5oICovLAorCQkJCTA3MDU4NEZCMTdG
OUQ2REYwMDVGMkJDQiAvKiBNZWRpYVN0cmVhbVNvdXJjZUNhcGFiaWxpdGllcy5oICovLAogCQkJ
CTA3NjMwNkUyMTdFMjJBNDMwMDVBN0M0RSAvKiBNZWRpYVN0cmVhbVRyYWNrU291cmNlc1JlcXVl
c3RDbGllbnQuaCAqLywKIAkJCQkwNzIyMUJBMTE3Q0YwQUQ0MDA4NDhFNTEgLyogUlRDQ29uZmln
dXJhdGlvbi5oICovLAogCQkJCTA3MjIxQkEyMTdDRjBBRDQwMDg0OEU1MSAvKiBSVENEYXRhQ2hh
bm5lbEhhbmRsZXIuaCAqLywKQEAgLTEzMzYwLDYgKzEzNDYxLDE2IEBACiAJCTA3Q0ZEOTkzMTdE
MDE0MDUwMDFDNEZGQyAvKiBNZWRpYVN0cmVhbSAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwog
CQkJY2hpbGRyZW4gPSAoCisJCQkJMDcwNTg1MkIxN0ZERTZEOTAwNUYyQkNCIC8qIEpTTWVkaWFU
cmFja0NvbnN0cmFpbnQuY3BwICovLAorCQkJCTA3MDU4NTJDMTdGREU2RDkwMDVGMkJDQiAvKiBK
U01lZGlhVHJhY2tDb25zdHJhaW50LmggKi8sCisJCQkJMDcwNTg1MkQxN0ZERTZEOTAwNUYyQkNC
IC8qIEpTTWVkaWFUcmFja0NvbnN0cmFpbnRzLmNwcCAqLywKKwkJCQkwNzA1ODUyRTE3RkRFNkQ5
MDA1RjJCQ0IgLyogSlNNZWRpYVRyYWNrQ29uc3RyYWludHMuaCAqLywKKwkJCQkwNzA1ODUyRjE3
RkRFNkQ5MDA1RjJCQ0IgLyogSlNNZWRpYVRyYWNrQ29uc3RyYWludFNldC5jcHAgKi8sCisJCQkJ
MDcwNTg1MzAxN0ZERTZEOTAwNUYyQkNCIC8qIEpTTWVkaWFUcmFja0NvbnN0cmFpbnRTZXQuaCAq
LywKKwkJCQkwNzA1ODUxMDE3RkE3MTA3MDA1RjJCQ0IgLyogSlNNZWRpYVN0cmVhbUNhcGFiaWxp
dGllcy5jcHAgKi8sCisJCQkJMDcwNTg1MTExN0ZBNzEwNzAwNUYyQkNCIC8qIEpTTWVkaWFTdHJl
YW1DYXBhYmlsaXRpZXMuaCAqLywKKwkJCQkwN0M1OUI2RjE3Rjc5QzdDMDAwRkJDQkIgLyogSlNN
ZWRpYVNvdXJjZVN0YXRlcy5jcHAgKi8sCisJCQkJMDdDNTlCNzAxN0Y3OUM3QzAwMEZCQ0JCIC8q
IEpTTWVkaWFTb3VyY2VTdGF0ZXMuaCAqLywKIAkJCQkwN0M1OUI1OTE3RjRCMjA4MDAwRkJDQkIg
LyogSlNBdWRpb1N0cmVhbVRyYWNrLmNwcCAqLywKIAkJCQkwN0M1OUI1QTE3RjRCMjA4MDAwRkJD
QkIgLyogSlNBdWRpb1N0cmVhbVRyYWNrLmggKi8sCiAJCQkJMDdDNTlCNUIxN0Y0QjIwODAwMEZC
Q0JCIC8qIEpTVmlkZW9TdHJlYW1UcmFjay5jcHAgKi8sCkBAIC0xOTE3OSw2ICsxOTI5MCw4IEBA
CiAJCUJDNEVERUY3MEMwOEY0MTQwMDdFREQ0OSAvKiBDdXN0b20gKi8gPSB7CiAJCQlpc2EgPSBQ
QlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAorCQkJCTA3MDU4NTE2MTdGQjQwRTkwMDVGMkJDQiAv
KiBKU01lZGlhU3RyZWFtQ2FwYWJpbGl0aWVzQ3VzdG9tLmNwcCAqLywKKwkJCQkwN0M1OUI2RDE3
Rjc5NEY2MDAwRkJDQkIgLyogSlNNZWRpYVNvdXJjZVN0YXRlc0N1c3RvbS5jcHAgKi8sCiAJCQkJ
QkMyRUQ2QkIwQzZCRDJGMDAwOTIwQkZGIC8qIEpTQXR0ckN1c3RvbS5jcHAgKi8sCiAJCQkJRkRF
QUFBRUYxMkIwMkVFNDAwRENGMzNCIC8qIEpTQXVkaW9CdWZmZXJTb3VyY2VOb2RlQ3VzdG9tLmNw
cCAqLywKIAkJCQlGREVBQUFGMDEyQjAyRUU0MDBEQ0YzM0IgLyogSlNBdWRpb0NvbnRleHRDdXN0
b20uY3BwICovLApAQCAtMTk3NzUsNiArMTk4ODgsMTIgQEAKIAkJQ0Q2MUZFN0IxNzk0Q0EwMjAw
NDEwMUVCIC8qIE1lZGlhU291cmNlICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGls
ZHJlbiA9ICgKKwkJCQkwNzA1ODUxODE3RkI0NEI0MDA1RjJCQ0IgLyogSlNBbGxBdWRpb0NhcGFi
aWxpdGllcy5jcHAgKi8sCisJCQkJMDcwNTg1MTkxN0ZCNDRCNDAwNUYyQkNCIC8qIEpTQWxsQXVk
aW9DYXBhYmlsaXRpZXMuaCAqLywKKwkJCQkwNzA1ODUwMDE3RkExMEQwMDA1RjJCQ0IgLyogSlNB
bGxWaWRlb0NhcGFiaWxpdGllcy5jcHAgKi8sCisJCQkJMDcwNTg1MDExN0ZBMTBEMDAwNUYyQkNC
IC8qIEpTQWxsVmlkZW9DYXBhYmlsaXRpZXMuaCAqLywKKwkJCQkwNzNBQjRCNTE3RjkyRUNGMDA2
RTBENkYgLyogSlNDYXBhYmlsaXR5UmFuZ2UuY3BwICovLAorCQkJCTA3M0FCNEI2MTdGOTJFQ0Yw
MDZFMEQ2RiAvKiBKU0NhcGFiaWxpdHlSYW5nZS5oICovLAogCQkJCUNEOURFMTcyMTdBQUM3NEMw
MEVBMzg2RCAvKiBKU01lZGlhU291cmNlLmNwcCAqLywKIAkJCQlDRDlERTE3MzE3QUFDNzRDMDBF
QTM4NkQgLyogSlNNZWRpYVNvdXJjZS5oICovLAogCQkJCUNEOURFMTc2MTdBQUM3NUIwMEVBMzg2
RCAvKiBKU1NvdXJjZUJ1ZmZlci5jcHAgKi8sCkBAIC0yMTAyMiw2ICsyMTE0MSw4IEBACiAJCUZE
MzE1RkEyMTJCMDI1QjEwMEMxQTM1OSAvKiB3ZWJhdWRpbyAqLyA9IHsKIAkJCWlzYSA9IFBCWEdy
b3VwOwogCQkJY2hpbGRyZW4gPSAoCisJCQkJMDc4MzIyODIxODAxM0VENzAwOTk5RTBDIC8qIE1l
ZGlhU3RyZWFtQXVkaW9Tb3VyY2UuY3BwICovLAorCQkJCTA3ODMyMjgzMTgwMTNFRDgwMDk5OUUw
QyAvKiBNZWRpYVN0cmVhbUF1ZGlvU291cmNlLmggKi8sCiAJCQkJRkQzMTVGRjMxMkIwMjY3NjAw
QzFBMzU5IC8qIEFuYWx5c2VyTm9kZS5jcHAgKi8sCiAJCQkJRkQzMTVGRjQxMkIwMjY3NjAwQzFB
MzU5IC8qIEFuYWx5c2VyTm9kZS5oICovLAogCQkJCUZEMzE1RkY1MTJCMDI2NzYwMEMxQTM1OSAv
KiBBbmFseXNlck5vZGUuaWRsICovLApAQCAtMjE0MTksNiArMjE1NDAsNyBAQAogCQkJCUZEMzE2
MEJGMTJCMDI3MkEwMEMxQTM1OSAvKiBBdWRpb0ZpbGVSZWFkZXJNYWMuaCBpbiBIZWFkZXJzICov
LAogCQkJCUZERTJENTVCMTU5RTY2RUIwMERDQ0NGOCAvKiBBdWRpb0lPQ2FsbGJhY2suaCBpbiBI
ZWFkZXJzICovLAogCQkJCUZEMzE2MDEwMTJCMDI2NzYwMEMxQTM1OSAvKiBBdWRpb0xpc3RlbmVy
LmggaW4gSGVhZGVycyAqLywKKwkJCQkwNzA1ODUyNDE3RkRDMTQwMDA1RjJCQ0IgLyogTWVkaWFU
cmFja0NvbnN0cmFpbnRzLmggaW4gSGVhZGVycyAqLywKIAkJCQlGRDMxNjAxMzEyQjAyNjc2MDBD
MUEzNTkgLyogQXVkaW9Ob2RlLmggaW4gSGVhZGVycyAqLywKIAkJCQlGRDMxNjAxNjEyQjAyNjc2
MDBDMUEzNTkgLyogQXVkaW9Ob2RlSW5wdXQuaCBpbiBIZWFkZXJzICovLAogCQkJCUZEMzE2MDE4
MTJCMDI2NzYwMEMxQTM1OSAvKiBBdWRpb05vZGVPdXRwdXQuaCBpbiBIZWFkZXJzICovLApAQCAt
MjE1ODEsNiArMjE3MDMsNyBAQAogCQkJCUJDMEIzNkE1MENEM0M2N0MwMEFDN0VCNSAvKiBDb25z
b2xlLmggaW4gSGVhZGVycyAqLywKIAkJCQkyREYyRTlENTE2NkUzOTc1MDAzNUJFRjIgLyogQ29u
c29sZUFQSVR5cGVzLmggaW4gSGVhZGVycyAqLywKIAkJCQk0MUYwNjE4RTBGNUYwNjk4MDBBMDdF
QUMgLyogQ29uc29sZU1lc3NhZ2UuaCBpbiBIZWFkZXJzICovLAorCQkJCTA3M0FCNEIzMTdGOEJB
Q0EwMDZFMEQ2RiAvKiBBbGxWaWRlb0NhcGFiaWxpdGllcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
QkNFNTY0NEUxMzdBMzRENjAwN0QyOTM0IC8qIENvbnNvbGVUeXBlcy5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJQTgxODcyMUMwOTc3RDNDMDAwNTgyNkQ5IC8qIENvbnRhaW5lck5vZGUuaCBpbiBIZWFk
ZXJzICovLAogCQkJCUUxQTE0NzA4MTExMDJCMTUwMEVFQzBGMyAvKiBDb250YWluZXJOb2RlQWxn
b3JpdGhtcy5oIGluIEhlYWRlcnMgKi8sCkBAIC0yMTczNyw2ICsyMTg2MCw3IEBACiAJCQkJQTU3
MzJCMEIxMzZBMTYxRDAwNUM4RDdDIC8qIERhdGVDb21wb25lbnRzLmggaW4gSGVhZGVycyAqLywK
IAkJCQlGNTVCM0RCNjEyNTFGMTJEMDAzRUYyNjkgLyogRGF0ZUlucHV0VHlwZS5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJNDUzRUI2MzcxNTlDNTcwNDAwMDAxQkI3IC8qIERhdGVUaW1lRm9ybWF0Lmgg
aW4gSGVhZGVycyAqLywKKwkJCQkwNzA1ODUwMzE3RkExMEQwMDA1RjJCQ0IgLyogSlNBbGxWaWRl
b0NhcGFiaWxpdGllcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRjU1QjNEQjgxMjUxRjEyRDAwM0VG
MjY5IC8qIERhdGVUaW1lSW5wdXRUeXBlLmggaW4gSGVhZGVycyAqLywKIAkJCQlGNTVCM0RCQTEy
NTFGMTJEMDAzRUYyNjkgLyogRGF0ZVRpbWVMb2NhbElucHV0VHlwZS5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJNDVGRUE1RDAxNTZEREU4QzAwNjU0MTAxIC8qIERlY2ltYWwuaCBpbiBIZWFkZXJzICov
LApAQCAtMjE3NTAsNiArMjE4NzQsNyBAQAogCQkJCUZEMzE2MDJFMTJCMDI2NzYwMEMxQTM1OSAv
KiBEZWxheU5vZGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUZEMzE2MDMxMTJCMDI2NzYwMEMxQTM1
OSAvKiBEZWxheVByb2Nlc3Nvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUM0QzhGNjYwQUQ4NjU1
RDAwOTQ3NUNFIC8qIERlbGV0ZUJ1dHRvbi5oIGluIEhlYWRlcnMgKi8sCisJCQkJMDcwNTg1MzIx
N0ZERTZEOTAwNUYyQkNCIC8qIEpTTWVkaWFUcmFja0NvbnN0cmFpbnQuaCBpbiBIZWFkZXJzICov
LAogCQkJCTFDNEM4RjAyMEFEODVEODcwMDk0NzVDRSAvKiBEZWxldGVCdXR0b25Db250cm9sbGVy
LmggaW4gSGVhZGVycyAqLywKIAkJCQk5MzMwOURERjA5OUU2NDkyMDA1NkU1ODEgLyogRGVsZXRl
RnJvbVRleHROb2RlQ29tbWFuZC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMDdDNTlCNjQxN0Y0RDFD
NDAwMEZCQ0JCIC8qIE1vY2tNZWRpYVN0cmVhbUNlbnRlci5oIGluIEhlYWRlcnMgKi8sCkBAIC0y
MTc5MSw2ICsyMTkxNiw3IEBACiAJCQkJQ0UwNTdGQTYxMjIwNzMxMTAwQTQ3NkQ1IC8qIERvY3Vt
ZW50TWFya2VyQ29udHJvbGxlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMTQ5NDdGRkUxMkY4MENE
MjAwQTBGNjMxIC8qIERvY3VtZW50T3JkZXJlZE1hcC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkND
RkJBRTgwQjUxNTJFRDAwMDFGMUQ3IC8qIERvY3VtZW50UGFyc2VyLmggaW4gSGVhZGVycyAqLywK
KwkJCQkwNzA1ODUyOTE3RkRFMDJDMDA1RjJCQ0IgLyogTWVkaWFUcmFja0NvbnN0cmFpbnRTZXQu
aCBpbiBIZWFkZXJzICovLAogCQkJCTRBNEY0OEFBMTZCMERGQzAwMEVEQkIyOSAvKiBEb2N1bWVu
dFJ1bGVTZXRzLmggaW4gSGVhZGVycyAqLywKIAkJCQlBRDZFNzFBRDE2Njg4OTlEMDAzMjBDMTMg
LyogRG9jdW1lbnRTaGFyZWRPYmplY3RQb29sLmggaW4gSGVhZGVycyAqLywKIAkJCQlFNDdFMjc2
NTE2MDM2RUQyMDBFRTJBRkIgLyogRG9jdW1lbnRTdHlsZVNoZWV0Q29sbGVjdGlvbi5oIGluIEhl
YWRlcnMgKi8sCkBAIC0yMTk0NSw2ICsyMjA3MSw3IEBACiAJCQkJODU5OTJFQkEwQUE1MDY5NTAw
QUMwNzg1IC8qIERPTUhUTUxIZWFkRWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODVFNzEx
QUQwQUM1RDUzNTAwNTMyNzBGIC8qIERPTUhUTUxIZWFkRWxlbWVudEludGVybmFsLmggaW4gSGVh
ZGVycyAqLywKIAkJCQk4NTE4M0I0NDBBQTY5MjYxMDBGMTlGQTMgLyogRE9NSFRNTEhlYWRpbmdF
bGVtZW50LmggaW4gSGVhZGVycyAqLywKKwkJCQkwNzA1ODUzNjE3RkRFNkQ5MDA1RjJCQ0IgLyog
SlNNZWRpYVRyYWNrQ29uc3RyYWludFNldC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODVFNzExQUUw
QUM1RDUzNTAwNTMyNzBGIC8qIERPTUhUTUxIZWFkaW5nRWxlbWVudEludGVybmFsLmggaW4gSGVh
ZGVycyAqLywKIAkJCQk4NUVDQkVGMTBBQTc2MjY5MDA1NDRGMEIgLyogRE9NSFRNTEhSRWxlbWVu
dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODVFNzExQUYwQUM1RDUzNTAwNTMyNzBGIC8qIERPTUhU
TUxIUkVsZW1lbnRJbnRlcm5hbC5oIGluIEhlYWRlcnMgKi8sCkBAIC0yMjA1Nyw2ICsyMjE4NCw3
IEBACiAJCQkJODVDQTk2RUEwQTk2MjRFOTAwNjkwQ0NGIC8qIERPTU5vdGF0aW9uLmggaW4gSGVh
ZGVycyAqLywKIAkJCQk4NUU3MTFENDBBQzVENTM1MDA1MzI3MEYgLyogRE9NTm90YXRpb25JbnRl
cm5hbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODU2QzhBRTQwQTkxMjY0OTAwNUM2ODdCIC8qIERP
TU9iamVjdC5oIGluIEhlYWRlcnMgKi8sCisJCQkJMDcwNTg1MTMxN0ZBNzEwNzAwNUYyQkNCIC8q
IEpTTWVkaWFTdHJlYW1DYXBhYmlsaXRpZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDNTNEQTYw
MTE0MzE0MUEwMDBEODE3RSAvKiBET01PYmplY3RIYXNoVGFibGVNYXAuaCBpbiBIZWFkZXJzICov
LAogCQkJCTg1QzdGNUQwMEFBRkI4RDkwMDQwMTRERCAvKiBET01PdmVyZmxvd0V2ZW50LmggaW4g
SGVhZGVycyAqLywKIAkJCQk4NTk4OURDRjBBQ0M4QkJEMDBBMEJDNTEgLyogRE9NT3ZlcmZsb3dF
dmVudEludGVybmFsLmggaW4gSGVhZGVycyAqLywKQEAgLTIyNTAzLDYgKzIyNjMxLDcgQEAKIAkJ
CQlCQ0NENzREQzBBNEM4RDM1MDA1RkRBNkQgLyogSFRNTFZpZXdTb3VyY2VEb2N1bWVudC5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJOTc3QjM4N0ExMjI4ODNFOTAwQjgxRkY4IC8qIEhUTUxWaWV3U291
cmNlUGFyc2VyLmggaW4gSGVhZGVycyAqLywKIAkJCQk1MTRDNzY3MTBDRTkyM0ExMDA3RUYzQ0Qg
LyogSFRUUEhlYWRlck1hcC5oIGluIEhlYWRlcnMgKi8sCisJCQkJMDczQUI0QjgxN0Y5MkVDRjAw
NkUwRDZGIC8qIEpTQ2FwYWJpbGl0eVJhbmdlLmggaW4gSGVhZGVycyAqLywKIAkJCQk1MTRDNzY3
MzBDRTkyM0ExMDA3RUYzQ0QgLyogSFRUUFBhcnNlcnMuaCBpbiBIZWFkZXJzICovLAogCQkJCTM3
NUNEMjMyMTE5RDQzQzgwMEEyQTg1OSAvKiBIeXBoZW5hdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJQjI3NTM1NkUwQjA1MzgxNDAwMkNFNjRGIC8qIEljb24uaCBpbiBIZWFkZXJzICovLApAQCAt
MjI2MDgsNiArMjI3MzcsNyBAQAogCQkJCTdBMjQ1ODdDMTAyMUVBRjQwMDBBMDBBQSAvKiBJbnNw
ZWN0b3JET01BZ2VudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRjNENEM0NzkxMkUwNzY2MzAwM0RB
MTUwIC8qIEluc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTdB
NzRFQ0JCMTAxODM5QTYwMEJGOTM5RSAvKiBJbnNwZWN0b3JET01TdG9yYWdlQWdlbnQuaCBpbiBI
ZWFkZXJzICovLAorCQkJCTA3MDU4NTM0MTdGREU2RDkwMDVGMkJDQiAvKiBKU01lZGlhVHJhY2tD
b25zdHJhaW50cy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTc4REEyMEUxNTIwRUI4QzAwNjE0MUMx
IC8qIEluc3BlY3RvckZyb250ZW5kLmggaW4gSGVhZGVycyAqLywKIAkJCQkyMjc3Nzc2MDEzNDVE
RUE5MDA4RUE0NTUgLyogSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsLmggaW4gSGVhZGVycyAqLywK
IAkJCQlGMzQ0QzcxNDExMjVCODJDMDBGMjZFRUUgLyogSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQu
aCBpbiBIZWFkZXJzICovLApAQCAtMjMwNzIsNiArMjMyMDIsNyBAQAogCQkJCUIyRkEzRERCMEFC
NzVBNkYwMDBFNUFDNCAvKiBKU1NWR1BhdGhTZWdMaXN0LmggaW4gSGVhZGVycyAqLywKIAkJCQlC
MkZBM0RERDBBQjc1QTZGMDAwRTVBQzQgLyogSlNTVkdQYXRoU2VnTW92ZXRvQWJzLmggaW4gSGVh
ZGVycyAqLywKIAkJCQlCMkZBM0RERjBBQjc1QTZGMDAwRTVBQzQgLyogSlNTVkdQYXRoU2VnTW92
ZXRvUmVsLmggaW4gSGVhZGVycyAqLywKKwkJCQkwNzA1ODUyMTE3RkRDMTQwMDA1RjJCQ0IgLyog
TWVkaWFUcmFja0NvbnN0cmFpbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUIyRkEzREUxMEFCNzVB
NkYwMDBFNUFDNCAvKiBKU1NWR1BhdHRlcm5FbGVtZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQk4
NTQyQTc5NTBBRTVDOTQxMDBERjU4REYgLyogSlNTVkdQb2ludC5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJQjJGQTNERTMwQUI3NUE2RjAwMEU1QUM0IC8qIEpTU1ZHUG9pbnRMaXN0LmggaW4gSGVhZGVy
cyAqLywKQEAgLTIzNTU4LDYgKzIzNjg5LDcgQEAKIAkJCQk0MzkwNDZFMjEyREEyNUU4MDBBRjgw
QTIgLyogUmVuZGVyTWF0aE1MUm9vdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDM5MDQ2RTQxMkRB
MjVFODAwQUY4MEEyIC8qIFJlbmRlck1hdGhNTFJvdy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDM5
MDQ2RTYxMkRBMjVFODAwQUY4MEEyIC8qIFJlbmRlck1hdGhNTFNxdWFyZVJvb3QuaCBpbiBIZWFk
ZXJzICovLAorCQkJCTA3ODMyMjg1MTgwMTNFRDgwMDk5OUUwQyAvKiBNZWRpYVN0cmVhbUF1ZGlv
U291cmNlLmggaW4gSGVhZGVycyAqLywKIAkJCQk0MzkwNDZFODEyREEyNUU4MDBBRjgwQTIgLyog
UmVuZGVyTWF0aE1MU2NyaXB0cy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDM5MDQ2RUExMkRBMjVF
ODAwQUY4MEEyIC8qIFJlbmRlck1hdGhNTFVuZGVyT3Zlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
RTRDMjc5NTkwQ0Y5NzQxOTAwRTk3Qjk4IC8qIFJlbmRlck1lZGlhLmggaW4gSGVhZGVycyAqLywK
QEAgLTIzNTc4LDYgKzIzNzEwLDcgQEAKIAkJCQlBODcxREZFMzBBMTUzNzZCMDBCMTJBNjggLyog
UmVuZGVyUmVwbGFjZWQuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDQTg0NkQ3MERDNjdBMzUwMDI2
QzMwOSAvKiBSZW5kZXJSZXBsaWNhLmggaW4gSGVhZGVycyAqLywKIAkJCQkxNDc5RkFFRTEwOUFF
Mzc1MDBERUQ2NTUgLyogUmVuZGVyUnVieS5oIGluIEhlYWRlcnMgKi8sCisJCQkJMDcwNTg1MDgx
N0ZBNDY4OTAwNUYyQkNCIC8qIEFsbEF1ZGlvQ2FwYWJpbGl0aWVzLmggaW4gSGVhZGVycyAqLywK
IAkJCQkxNDc5RkFGMDEwOUFFMzc1MDBERUQ2NTUgLyogUmVuZGVyUnVieUJhc2UuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTE0NzlGQUYyMTA5QUUzNzUwMERFRDY1NSAvKiBSZW5kZXJSdWJ5UnVuLmgg
aW4gSGVhZGVycyAqLywKIAkJCQkxNDc5RkFGNDEwOUFFMzc1MDBERUQ2NTUgLyogUmVuZGVyUnVi
eVRleHQuaCBpbiBIZWFkZXJzICovLApAQCAtMjM2NjAsNiArMjM3OTMsNyBAQAogCQkJCTk3M0Uz
MjU3MTA4ODNCN0MwMDVCQzQ5MyAvKiBSZXNvdXJjZUxvYWROb3RpZmllci5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJRTQyOTVGQTQxMkIwNjE0RTAwRDFBQ0UwIC8qIFJlc291cmNlTG9hZFByaW9yaXR5
LmggaW4gSGVhZGVycyAqLywKIAkJCQlEMENFNThGOTEyNUU0Q0MyMDBGM0YxOTkgLyogUmVzb3Vy
Y2VMb2FkU2NoZWR1bGVyLmggaW4gSGVhZGVycyAqLywKKwkJCQkwN0M1OUI3NjE3RjdEMERCMDAw
RkJDQkIgLyogQ2FwYWJpbGl0eVJhbmdlLmggaW4gSGVhZGVycyAqLywKIAkJCQk4QTgxQkY4NTEx
RENGRDkwMDBEQTJCOTggLyogUmVzb3VyY2VMb2FkVGltaW5nLmggaW4gSGVhZGVycyAqLywKIAkJ
CQk3RUU2ODQ2RDEyRDI2RTM4MDBFNzk0MTUgLyogUmVzb3VyY2VSZXF1ZXN0LmggaW4gSGVhZGVy
cyAqLywKIAkJCQk1MTRDNzY3RDBDRTkyM0ExMDA3RUYzQ0QgLyogUmVzb3VyY2VSZXF1ZXN0QmFz
ZS5oIGluIEhlYWRlcnMgKi8sCkBAIC0yMzk2OSw2ICsyNDEwMyw3IEBACiAJCQkJMDc4RTA5Mzgx
N0QxNkIyQzAwNDIwQUExIC8qIE1lZGlhU3RyZWFtU291cmNlLmggaW4gSGVhZGVycyAqLywKIAkJ
CQlCMjIyNzlCMTBEMDBCRjIyMDA3MUI3ODIgLyogU1ZHRGVzY0VsZW1lbnQuaCBpbiBIZWFkZXJz
ICovLAogCQkJCUI1QjdBMTcxMTdDMTBBQzAwMEU0QUEwQSAvKiBFbGVtZW50RGF0YS5oIGluIEhl
YWRlcnMgKi8sCisJCQkJMDcwNTg1MEIxN0ZBNDgyNzAwNUYyQkNCIC8qIE1lZGlhU3RyZWFtQ2Fw
YWJpbGl0aWVzLmggaW4gSGVhZGVycyAqLywKIAkJCQlCMjIyNzlCNDBEMDBCRjIyMDA3MUI3ODIg
LyogU1ZHRG9jdW1lbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUIyOEM2QTI4MEQwMEM0NDgwMDMz
NEFBNCAvKiBTVkdEb2N1bWVudEV4dGVuc2lvbnMuaCBpbiBIZWFkZXJzICovLAogCQkJCUIyMjI3
OUI3MEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdFbGVtZW50LmggaW4gSGVhZGVycyAqLywKQEAgLTI0
MDQzLDYgKzI0MTc4LDcgQEAKIAkJCQk3MTM0NDk2RTE0Njk0MUIzMDA3MjAzMTIgLyogU1ZHTGVu
Z3RoQ29udGV4dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjIyMjdBMzYwRDAwQkYyMjAwNzFCNzgy
IC8qIFNWR0xlbmd0aExpc3QuaCBpbiBIZWFkZXJzICovLAogCQkJCUIyMjI3QTM5MEQwMEJGMjIw
MDcxQjc4MiAvKiBTVkdMaW5lYXJHcmFkaWVudEVsZW1lbnQuaCBpbiBIZWFkZXJzICovLAorCQkJ
CTA3QzU5QjY5MTdGNzg0QkEwMDBGQkNCQiAvKiBNZWRpYVNvdXJjZVN0YXRlcy5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJQjIyMjdBM0MwRDAwQkYyMjAwNzFCNzgyIC8qIFNWR0xpbmVFbGVtZW50Lmgg
aW4gSGVhZGVycyAqLywKIAkJCQkwODEwNzY0NDEyODI4NTU2MDA3QzYzQkEgLyogU1ZHTGlzdFBy
b3BlcnR5LmggaW4gSGVhZGVycyAqLywKIAkJCQkwODhBMEUwOTEyNkVGMURCMDA5NzhGN0EgLyog
U1ZHTGlzdFByb3BlcnR5VGVhck9mZi5oIGluIEhlYWRlcnMgKi8sCkBAIC0yNDIzMiw2ICsyNDM2
OCw3IEBACiAJCQkJRTQ0NjEzQjAwQ0Q2MzMxMDAwRkFEQTc1IC8qIFRpbWVSYW5nZXMuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTQ5RTkxMkFFMEVGQUM5MDYwMDlEMENBRiAvKiBUaW1pbmdGdW5jdGlv
bi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMDcwMzM0RDcxNDU5RkZENTAwOEQ4RDQ1IC8qIFRyYWNr
QmFzZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJMDcwNTg0RkQxN0Y5RDZERjAwNUYyQkNCIC8qIE1l
ZGlhU3RyZWFtU291cmNlQ2FwYWJpbGl0aWVzLmggaW4gSGVhZGVycyAqLywKIAkJCQlCRTg4RTBD
MjE3MTVDRTI2MDA2NThEOTggLyogVHJhY2tMaXN0QmFzZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
Q0QzQTQ5NUYxN0E5RDAxQjAwMjc0RTQyIC8qIE1lZGlhU291cmNlLmggaW4gSGVhZGVycyAqLywK
IAkJCQk0OUU5MTFDNDBFRjg2RDQ3MDA5RDBDQUYgLyogVHJhbnNmb3JtYXRpb25NYXRyaXguaCBp
biBIZWFkZXJzICovLApAQCAtMjQyODUsNiArMjQ0MjIsNyBAQAogCQkJCUJFODhFMEUyMTcxNUQy
QTIwMDY1OEQ5OCAvKiBWaWRlb1RyYWNrTGlzdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTRDOTFB
MEUxODAyMzQzMTAwQTE3RjZEIC8qIFRleHRQYWludFN0eWxlLmggaW4gSGVhZGVycyAqLywKIAkJ
CQlCRUYyOUVFQzE3MTVERDA5MDBDNEI0QzkgLyogVmlkZW9UcmFja1ByaXZhdGUuaCBpbiBIZWFk
ZXJzICovLAorCQkJCTA3MDU4NTFCMTdGQjQ0QjQwMDVGMkJDQiAvKiBKU0FsbEF1ZGlvQ2FwYWJp
bGl0aWVzLmggaW4gSGVhZGVycyAqLywKIAkJCQlDRUY0MThDRjExNzk2NzhDMDA5RDExMkMgLyog
Vmlld3BvcnRBcmd1bWVudHMuaCBpbiBIZWFkZXJzICovLAogCQkJCTNGRkZGOUFFMTU5RDlCMDYw
MDIwQkJENSAvKiBWaWV3cG9ydFN0eWxlUmVzb2x2ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTkz
MzA5RTIwMDk5RTY0OTIwMDU2RTU4MSAvKiBWaXNpYmxlUG9zaXRpb24uaCBpbiBIZWFkZXJzICov
LApAQCAtMjQ0NzQsNiArMjQ2MTIsNyBAQAogCQkJCTgzQzFENDI4MTc4RDVBQjQwMDE0MUU2OCAv
KiBTVkdQYXRoU2VnQ3VydmV0b0N1YmljUmVsLmggaW4gSGVhZGVycyAqLywKIAkJCQk4M0MxRDQy
OTE3OEQ1QUI0MDAxNDFFNjggLyogU1ZHUGF0aFNlZ0N1cnZldG9DdWJpY1Ntb290aEFicy5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJODNDMUQ0MkExNzhENUFCNDAwMTQxRTY4IC8qIFNWR1BhdGhTZWdD
dXJ2ZXRvQ3ViaWNTbW9vdGhSZWwuaCBpbiBIZWFkZXJzICovLAorCQkJCTA3QzU5QjcyMTdGNzlD
N0MwMDBGQkNCQiAvKiBKU01lZGlhU291cmNlU3RhdGVzLmggaW4gSGVhZGVycyAqLywKIAkJCQk4
M0MxRDQyQjE3OEQ1QUI0MDAxNDFFNjggLyogU1ZHUGF0aFNlZ0N1cnZldG9RdWFkcmF0aWNBYnMu
aCBpbiBIZWFkZXJzICovLAogCQkJCTgzQzFENDJDMTc4RDVBQjUwMDE0MUU2OCAvKiBTVkdQYXRo
U2VnQ3VydmV0b1F1YWRyYXRpY1JlbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODNDMUQ0MkQxNzhE
NUFCNTAwMTQxRTY4IC8qIFNWR1BhdGhTZWdDdXJ2ZXRvUXVhZHJhdGljU21vb3RoQWJzLmggaW4g
SGVhZGVycyAqLywKQEAgLTI0OTU5LDYgKzI1MDk4LDcgQEAKIAkJCQlGRDMxNjAyNDEyQjAyNjc2
MDBDMUEzNTkgLyogQmlxdWFkRFNQS2VybmVsLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUZEQzU0
RjA0MTM5OUIwREEwMDhEOTExNyAvKiBCaXF1YWRGaWx0ZXJOb2RlLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCUZEMzE2MDI2MTJCMDI2NzYwMEMxQTM1OSAvKiBCaXF1YWRQcm9jZXNzb3IuY3BwIGlu
IFNvdXJjZXMgKi8sCisJCQkJMDcwNTg0RkYxN0Y5RjA1RTAwNUYyQkNCIC8qIENhcGFiaWxpdHlS
YW5nZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBODk5NDMyOTBCNDIzMzg4MDBEN0M4MDIgLyog
Qml0bWFwSW1hZ2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMzc3QTNBOTAxNUVGQ0U5QjAwNTlG
NUM3IC8qIEJpdG1hcEltYWdlQ0cuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJOTc2RDZDNzgxMjJC
OEEzRDAwMUZEMUY3IC8qIEJsb2IuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC0yNTI2Miw2ICsyNTQw
Miw3IEBACiAJCQkJODVDQTk3NUQwQTk2MkU1NDAwNjkwQ0NGIC8qIERPTURvY3VtZW50VHlwZS5t
bSBpbiBTb3VyY2VzICovLAogCQkJCTg1MThEQ0VBMEE5Q0M4MEQwMDkxQjdBNiAvKiBET01ET01J
bXBsZW1lbnRhdGlvbi5tbSBpbiBTb3VyY2VzICovLAogCQkJCTUyQ0NBOUU5MTVFM0Y2NEMwMDUz
Qzc3RiAvKiBET01ET01OYW1lZEZsb3dDb2xsZWN0aW9uLm1tIGluIFNvdXJjZXMgKi8sCisJCQkJ
MDc4MzIyODQxODAxM0VEODAwOTk5RTBDIC8qIE1lZGlhU3RyZWFtQXVkaW9Tb3VyY2UuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJMkQ5QTI0NzMxNUI5QzJEMTAwRDM0NTI3IC8qIERPTURPTVNlY3Vy
aXR5UG9saWN5Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJNzY5NDU2NUMxMjE0REI2MzAwMDdDQkFF
IC8qIERPTURPTVRva2VuTGlzdC5tbSBpbiBTb3VyY2VzICovLAogCQkJCTdBQUJBMjU5MTRCQzYx
MzMwMEFBOUExMSAvKiBET01FZGl0b3IuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC0yNTI4Miw2ICsy
NTQyMyw3IEBACiAJCQkJODU5QTlDNDgwQUE1RTNCRDAwQjY5NEIyIC8qIERPTUhUTUxCYXNlRWxl
bWVudC5tbSBpbiBTb3VyY2VzICovLAogCQkJCTA3OEUwOTA0MTdEMTRDRUUwMDQyMEFBMSAvKiBO
YXZpZ2F0b3JNZWRpYVN0cmVhbS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk4NUVDQkVFRTBBQTc2
MjY5MDA1NDRGMEIgLyogRE9NSFRNTEJhc2VGb250RWxlbWVudC5tbSBpbiBTb3VyY2VzICovLAor
CQkJCTA3QzU5QjY4MTdGNzg0QkEwMDBGQkNCQiAvKiBNZWRpYVNvdXJjZVN0YXRlcy5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQk4NTlBOUM0QTBBQTVFM0JEMDBCNjk0QjIgLyogRE9NSFRNTEJvZHlF
bGVtZW50Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJODUxODNCNDMwQUE2OTI2MTAwRjE5RkEzIC8q
IERPTUhUTUxCUkVsZW1lbnQubW0gaW4gU291cmNlcyAqLywKIAkJCQk4NUJBNENERTBBQTY4NjFC
MDA4ODA1MkQgLyogRE9NSFRNTEJ1dHRvbkVsZW1lbnQubW0gaW4gU291cmNlcyAqLywKQEAgLTI1
Mjg5LDYgKzI1NDMxLDcgQEAKIAkJCQk4NURGMkY4RjBBQTNDODgxMDBBRDY0QzUgLyogRE9NSFRN
TENvbGxlY3Rpb24ubW0gaW4gU291cmNlcyAqLywKIAkJCQkwNzhFMDkwMDE3RDE0Q0VFMDA0MjBB
QTEgLyogTWVkaWFTdHJlYW1FdmVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlGNUMwNDFFNDBG
RkNBOTZEMDA4MzlENEEgLyogRE9NSFRNTERhdGFMaXN0RWxlbWVudC5tbSBpbiBTb3VyY2VzICov
LAorCQkJCTA3MDU4NTIzMTdGREMxNDAwMDVGMkJDQiAvKiBNZWRpYVRyYWNrQ29uc3RyYWludHMu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRDM1OUQ3OTIxMjlDQTNDMDAwMDZFNUQyIC8qIERPTUhU
TUxEZXRhaWxzRWxlbWVudC5tbSBpbiBTb3VyY2VzICovLAogCQkJCTg1QkE0RDBDMEFBNjg4Njgw
MDg4MDUyRCAvKiBET01IVE1MRGlyZWN0b3J5RWxlbWVudC5tbSBpbiBTb3VyY2VzICovLAogCQkJ
CTg1QkE0RDBFMEFBNjg4NjgwMDg4MDUyRCAvKiBET01IVE1MRGl2RWxlbWVudC5tbSBpbiBTb3Vy
Y2VzICovLApAQCAtMjU3NDAsNiArMjU4ODMsNyBAQAogCQkJCUIyNzUzNThFMEIwNTNBNjYwMDJD
RTY0RiAvKiBJY29uTWFjLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJNTFFMUVDQzAwQzkxQzkwNDAw
REMyNTVCIC8qIEljb25SZWNvcmQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNDUwOTlDNDExMzcw
QTc4MDAwNThENTEzIC8qIEljb25VUkwuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMDcwNTg1MTUx
N0ZCMEVFQTAwNUYyQkNCIC8qIE1lZGlhU3RyZWFtQ2FwYWJpbGl0aWVzLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCUM1ODVBNjYyMTFENEZBQzUwMDRDM0U0QiAvKiBJREJCaW5kaW5nVXRpbGl0aWVz
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTk3MTJBNUM1MTUwMDRFREEwMDQ4QUYxMCAvKiBJREJE
YXRhYmFzZUNhbGxiYWNrc0ltcGwuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJOTcxMkE1QzkxNTAw
NEVEQTAwNDhBRjEwIC8qIElEQkRhdGFiYXNlRXhjZXB0aW9uLmNwcCBpbiBTb3VyY2VzICovLApA
QCAtMjU3NDcsNiArMjU4OTEsNyBAQAogCQkJCTk3MTJBNUVGMTUwMDRFREEwMDQ4QUYxMCAvKiBJ
REJQZW5kaW5nVHJhbnNhY3Rpb25Nb25pdG9yLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTk3MTJB
NUZFMTUwMDRFREEwMDQ4QUYxMCAvKiBJREJWZXJzaW9uQ2hhbmdlRXZlbnQuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJMUE3MUQ1N0IwRjMzODE5MDAwRjlDRTRFIC8qIElkZW50aWZpZXJSZXAuY3Bw
IGluIFNvdXJjZXMgKi8sCisJCQkJMDcwNTg1MzExN0ZERTZEOTAwNUYyQkNCIC8qIEpTTWVkaWFU
cmFja0NvbnN0cmFpbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTkxM0EyNDExM0Q0OUVCQTAw
RjVCMDVDIC8qIElkZW50aWZpZXJzRmFjdG9yeS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlDM0NG
MTdBNDE1QjAwNjNGMDAyNzZEMzkgLyogSWRUYXJnZXRPYnNlcnZlci5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQlDM0NGMTdBNjE1QjAwNjNGMDAyNzZEMzkgLyogSWRUYXJnZXRPYnNlcnZlclJlZ2lz
dHJ5LmNwcCBpbiBTb3VyY2VzICovLApAQCAtMjU5MTYsNiArMjYwNjEsNyBAQAogCQkJCTUxRUM5
MjY1MENFOTBERDQwMEY5MDMwOCAvKiBKU0N1c3RvbVNRTFN0YXRlbWVudEVycm9yQ2FsbGJhY2su
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRTEwQjkzQzMwQjczQzI5MTAwM0VEODkwIC8qIEpTQ3Vz
dG9tWFBhdGhOU1Jlc29sdmVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTFBRTgyRjhGMENBQUZB
OUQwMDIyMzdBRSAvKiBKU0RhdGFiYXNlLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTA3QzU5QjZF
MTdGNzk0RjYwMDBGQkNCQiAvKiBKU01lZGlhU291cmNlU3RhdGVzQ3VzdG9tLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCUI1OURENjlBMTE5MDI5RTUwMDdFOTY4NCAvKiBKU0RhdGFiYXNlQ2FsbGJh
Y2suY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQjU4Q0VCNkExMTkxMzYwNzAwMkE2NzkwIC8qIEpT
RGF0YWJhc2VTeW5jLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTQxNjJBNDU3MTAxMTQ2NDcwMERG
RjNFRCAvKiBKU0RlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlLmNwcCBpbiBTb3VyY2VzICovLApA
QCAtMjYwNDQsNiArMjYxOTAsNyBAQAogCQkJCTFBRTJBQTJFMEExQ0RBQjQwMEI0MkIyNSAvKiBK
U0hUTUxIZWFkaW5nRWxlbWVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxQUUyQUEzMDBBMUNE
QUI0MDBCNDJCMjUgLyogSlNIVE1MSFJFbGVtZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTFB
ODVCMThGMEExQjE4QTIwMEQ4Qzg3QyAvKiBKU0hUTUxIdG1sRWxlbWVudC5jcHAgaW4gU291cmNl
cyAqLywKKwkJCQkwNzA1ODUzODE3RkUwNDRGMDA1RjJCQ0IgLyogTWVkaWFUcmFja0NvbnN0cmFp
bnRTZXQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQkM0OTE4QzgwQkZFQTA1MDAwOUQ2MzE2IC8q
IEpTSFRNTElGcmFtZUVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMUFFMkFBOTcwQTFD
REQyRDAwQjQyQjI1IC8qIEpTSFRNTEltYWdlRWxlbWVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQlBODBFN0U5ODBBMUE4M0UzMDA3RkI4QzUgLyogSlNIVE1MSW5wdXRFbGVtZW50LmNwcCBpbiBT
b3VyY2VzICovLApAQCAtMjYxNjAsNiArMjYzMDcsNyBAQAogCQkJCTdFNDZGNkZBMTYyN0EyQ0Ew
MDA2MjIyMyAvKiBKU09FU0VsZW1lbnRJbmRleFVpbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
OTAwMTc4ODAxMkUwMzcwNzAwNjQ4NDYyIC8qIEpTT0VTU3RhbmRhcmREZXJpdmF0aXZlcy5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQk2RUJGMEU3NjEyQTk4Njg4MDBEQjE3MDkgLyogSlNPRVNUZXh0
dXJlRmxvYXQuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMDcwNTg1M0ExN0ZFMDc3MDAwNUYyQkNC
IC8qIE1lZGlhVHJhY2tDb25zdHJhaW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUEzMUM0RTUy
MTZFMDJCMDgwMDJGNzk1NyAvKiBKU09FU1RleHR1cmVIYWxmRmxvYXQuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJNzdBMTdBQTYxMkYyOEIyQTAwNEUwMkY2IC8qIEpTT0VTVmVydGV4QXJyYXlPYmpl
Y3QuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRkRGNkJBRjgxMzRBNEM5ODAwODIyOTIwIC8qIEpT
T2ZmbGluZUF1ZGlvQ29tcGxldGlvbkV2ZW50LmNwcCBpbiBTb3VyY2VzICovLApAQCAtMjY1MDIs
NiArMjY2NTAsNyBAQAogCQkJCTk4NUJCOTZEMTNBOTQwNTgwMDdBMEI2OSAvKiBMaW5rUmVsQXR0
cmlidXRlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUJDN0ZBNjIwMEQxRjBDQkQwMERCMjJBOSAv
KiBMaXZlTm9kZUxpc3QuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMDc4RTA5MTAxN0QxNENFRTAw
NDIwQUExIC8qIFJUQ1N0YXRzUmVzcG9uc2UuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMDcwNTg1
MDIxN0ZBMTBEMDAwNUYyQkNCIC8qIEpTQWxsVmlkZW9DYXBhYmlsaXRpZXMuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJOTc1OUU5M0UxNEVGMUNGODAwMjZBMkREIC8qIExvYWRhYmxlVGV4dFRyYWNr
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTY1NkQzNzMzMEFEQkE1REUwMEE0NTU0RCAvKiBMb2Fk
ZXJOU1VSTEV4dHJhcy5tbSBpbiBTb3VyY2VzICovLAogCQkJCTdFRTY4NDY4MTJEMjZFMzgwMEU3
OTQxNSAvKiBMb2FkZXJSdW5Mb29wQ0YuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC0yNjUxNCw2ICsy
NjY2Myw3IEBACiAJCQkJQkMyNUI1MkExMzFDNkQzOTAwMTgwRTEwIC8qIExvY2FsaXplZFN0cmlu
Z3NNYWMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQkNFMUM0MUMwRDk4Mjk4MTAwM0IwMkYyIC8q
IExvY2F0aW9uLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTA3OEUwOTA4MTdEMTRDRUUwMDQyMEFB
MSAvKiBSVENEVE1GVG9uZUNoYW5nZUV2ZW50LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTA3MDU4
NTFBMTdGQjQ0QjQwMDVGMkJDQiAvKiBKU0FsbEF1ZGlvQ2FwYWJpbGl0aWVzLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCUE4MjM5RTAwMDlCM0NGOEEwMEI2MDY0MSAvKiBMb2dnaW5nLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCTE0MDI2NDVFMEFGREMxOUIwMDU5MTlFMiAvKiBMb2dnaW5nTWFjLm1t
IGluIFNvdXJjZXMgKi8sCiAJCQkJMUE4RjZCQzUwREI1NUNEQzAwMURCNzk0IC8qIE1hbmlmZXN0
UGFyc2VyLmNwcCBpbiBTb3VyY2VzICovLApAQCAtMjY1ODAsNiArMjY3MzAsNyBAQAogCQkJCUQ2
RTI3NkFGMTQ2Mzc0NTUwMDFEMjgwQSAvKiBNdXRhdGlvbk9ic2VydmVyUmVnaXN0cmF0aW9uLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCUM2RjA4RkJDMTQzMEZFOEYwMDY4NTg0OSAvKiBNdXRhdGlv
blJlY29yZC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1MkI2QzlDNTE1RTNGNERGMDA2OTBCMDUg
LyogTmFtZWRGbG93Q29sbGVjdGlvbi5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkwNzA1ODUzMzE3
RkRFNkQ5MDA1RjJCQ0IgLyogSlNNZWRpYVRyYWNrQ29uc3RyYWludHMuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJQkNGMzRBMzcxMUEyMzFDRDAwQzcxODA0IC8qIE5hbWVkTm9kZU1hcC5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQlBODE4NzIyNDA5NzdEM0MwMDA1ODI2RDkgLyogTmFtZU5vZGVMaXN0
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUUxMEI5QjZEMEI3NDc1OTkwMDNFRDg5MCAvKiBOYXRp
dmVYUGF0aE5TUmVzb2x2ZXIuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC0yNjg0MCw2ICsyNjk5MSw3
IEBACiAJCQkJOTM0RjcxM0UwRDVBNkYyODAwMDE4RDY5IC8qIFJlc291cmNlRXJyb3JCYXNlLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCTdFRTY4NDZCMTJEMjZFMzgwMEU3OTQxNSAvKiBSZXNvdXJj
ZUVycm9yQ0YuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTE0Qzc2NTAwQ0U5MjM0RTAwN0VGM0NE
IC8qIFJlc291cmNlRXJyb3JNYWMubW0gaW4gU291cmNlcyAqLywKKwkJCQkwNzA1ODUxMjE3RkE3
MTA3MDA1RjJCQ0IgLyogSlNNZWRpYVN0cmVhbUNhcGFiaWxpdGllcy5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQk1MTRDNzY3ODBDRTkyM0ExMDA3RUYzQ0QgLyogUmVzb3VyY2VIYW5kbGUuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJN0VFNjg0NkMxMkQyNkUzODAwRTc5NDE1IC8qIFJlc291cmNlSGFu
ZGxlQ0ZOZXQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRTFCQTAwMzExNkZCOTJBQzAwQkE3QTM1
IC8qIFJlc291cmNlSGFuZGxlQ2xpZW50LmNwcCBpbiBTb3VyY2VzICovLApAQCAtMjcxNDEsNiAr
MjcyOTMsNyBAQAogCQkJCUIyMjI3OUM0MEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdFeHRlcm5hbFJl
c291cmNlc1JlcXVpcmVkLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUIyMjI3OUM3MEQwMEJGMjIw
MDcxQjc4MiAvKiBTVkdGRUJsZW5kRWxlbWVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCMjIy
NzlDQTBEMDBCRjIyMDA3MUI3ODIgLyogU1ZHRkVDb2xvck1hdHJpeEVsZW1lbnQuY3BwIGluIFNv
dXJjZXMgKi8sCisJCQkJMDcwNTg1MzUxN0ZERTZEOTAwNUYyQkNCIC8qIEpTTWVkaWFUcmFja0Nv
bnN0cmFpbnRTZXQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQjIyMjc5Q0QwRDAwQkYyMjAwNzFC
NzgyIC8qIFNWR0ZFQ29tcG9uZW50VHJhbnNmZXJFbGVtZW50LmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCUIyMjI3OUQwMEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdGRUNvbXBvc2l0ZUVsZW1lbnQuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJMTkyMTMyNzQxMUMwRTZCQjAwNDU2MjM4IC8qIFNWR0ZFQ29u
dm9sdmVNYXRyaXhFbGVtZW50LmNwcCBpbiBTb3VyY2VzICovLApAQCAtMjcyMDMsNiArMjczNTYs
NyBAQAogCQkJCUIyMjI3QTNCMEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdMaW5lRWxlbWVudC5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQlCMjIyN0E0MDBEMDBCRjIyMDA3MUI3ODIgLyogU1ZHTG9jYXRh
YmxlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUIyMjI3QTQzMEQwMEJGMjIwMDcxQjc4MiAvKiBT
VkdNYXJrZXJFbGVtZW50LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTA3MDU4NTE3MTdGQjQwRTkw
MDVGMkJDQiAvKiBKU01lZGlhU3RyZWFtQ2FwYWJpbGl0aWVzQ3VzdG9tLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCUIyMjI3QTQ2MEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdNYXNrRWxlbWVudC5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQlCMjIyN0E0QTBEMDBCRjIyMDA3MUI3ODIgLyogU1ZHTWV0YWRh
dGFFbGVtZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUIyQTFGMkIwMENFRjBBQkYwMDQ0MkY2
QSAvKiBTVkdNaXNzaW5nR2x5cGhFbGVtZW50LmNwcCBpbiBTb3VyY2VzICovLApAQCAtMjcyNjYs
NiArMjc0MjAsNyBAQAogCQkJCUIyMjI3QUYyMEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdWaWV3U3Bl
Yy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk4NDg1MjI4QTExOTAxNzNDMDA2RURDN0YgLyogU1ZH
Vktlcm5FbGVtZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUIyMjI3QUY1MEQwMEJGMjIwMDcx
Qjc4MiAvKiBTVkdab29tQW5kUGFuLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTA3M0FCNEI3MTdG
OTJFQ0YwMDZFMEQ2RiAvKiBKU0NhcGFiaWxpdHlSYW5nZS5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQlCMkU0RUM5NzBEMDBDMjJCMDA0MzI2NDMgLyogU1ZHWm9vbUV2ZW50LmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCUUxODA4MTEyMTZGQ0Y0MkYwMEI4MEQwNyAvKiBTeW5jaHJvbm91c0xvYWRlckNs
aWVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlFMTgwODExNjE2RkNGOUNCMDBCODBEMDcgLyog
U3luY2hyb25vdXNMb2FkZXJDbGllbnQubW0gaW4gU291cmNlcyAqLywKQEAgLTI3NDQ2LDYgKzI3
NjAxLDcgQEAKIAkJCQk5N0FBQkQxQTE0RkEwOUQ1MDA3NDU3QUUgLyogV2ViU29ja2V0LmNwcCBp
biBTb3VyY2VzICovLAogCQkJCTk3QUFCRDFEMTRGQTA5RDUwMDc0NTdBRSAvKiBXZWJTb2NrZXRD
aGFubmVsLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTRBMzhCRjUwMTRGRTFDMDkwMDYxMjUxMiAv
KiBXZWJTb2NrZXREZWZsYXRlRnJhbWVyLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTA3QzU5Qjcx
MTdGNzlDN0MwMDBGQkNCQiAvKiBKU01lZGlhU291cmNlU3RhdGVzLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCTk3QUFCRDIwMTRGQTA5RDUwMDc0NTdBRSAvKiBXZWJTb2NrZXREZWZsYXRlci5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQk5N0FBQkQyMjE0RkEwOUQ1MDA3NDU3QUUgLyogV2ViU29ja2V0
RXh0ZW5zaW9uRGlzcGF0Y2hlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk0QTVBMkFEQjE2MUU3
RTAwMDA1ODg5REQgLyogV2ViU29ja2V0RXh0ZW5zaW9uUGFyc2VyLmNwcCBpbiBTb3VyY2VzICov
LApJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNNZWRpYVNvdXJjZVN0YXRlc0N1
c3RvbS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNNZWRp
YVNvdXJjZVN0YXRlc0N1c3RvbS5jcHAJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU01lZGlhU291cmNlU3RhdGVzQ3VzdG9tLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMCwwICsxLDg4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpZiBFTkFC
TEUoTUVESUFfU1RSRUFNKQorCisjaW5jbHVkZSAiSlNNZWRpYVNvdXJjZVN0YXRlcy5oIgorCisj
aW5jbHVkZSAiTWVkaWFTb3VyY2VTdGF0ZXMuaCIKKwordXNpbmcgbmFtZXNwYWNlIEpTQzsKKwor
bmFtZXNwYWNlIFdlYkNvcmUgeworCitKU1ZhbHVlIEpTTWVkaWFTb3VyY2VTdGF0ZXM6OndpZHRo
KEV4ZWNTdGF0ZSopIGNvbnN0Cit7CisgICAgaWYgKCFpbXBsKCktPmhhc1ZpZGVvU291cmNlKCkp
CisgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOworCisgICAgcmV0dXJuIGpzTnVtYmVyKGlt
cGwoKS0+d2lkdGgoKSk7Cit9CisKK0pTVmFsdWUgSlNNZWRpYVNvdXJjZVN0YXRlczo6aGVpZ2h0
KEV4ZWNTdGF0ZSopIGNvbnN0Cit7CisgICAgaWYgKCFpbXBsKCktPmhhc1ZpZGVvU291cmNlKCkp
CisgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOworICAgIAorICAgIHJldHVybiBqc051bWJl
cihpbXBsKCktPmhlaWdodCgpKTsKK30KKworSlNWYWx1ZSBKU01lZGlhU291cmNlU3RhdGVzOjpm
cmFtZVJhdGUoRXhlY1N0YXRlKikgY29uc3QKK3sKKyAgICBpZiAoIWltcGwoKS0+aGFzVmlkZW9T
b3VyY2UoKSkKKyAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CisgICAgCisgICAgcmV0dXJu
IGpzTnVtYmVyKGltcGwoKS0+ZnJhbWVSYXRlKCkpOworfQorCitKU1ZhbHVlIEpTTWVkaWFTb3Vy
Y2VTdGF0ZXM6OmFzcGVjdFJhdGlvKEV4ZWNTdGF0ZSopIGNvbnN0Cit7CisgICAgaWYgKCFpbXBs
KCktPmhhc1ZpZGVvU291cmNlKCkpCisgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOworICAg
IAorICAgIHJldHVybiBqc051bWJlcihpbXBsKCktPmFzcGVjdFJhdGlvKCkpOworfQorCitKU1Zh
bHVlIEpTTWVkaWFTb3VyY2VTdGF0ZXM6OmZhY2luZ01vZGUoRXhlY1N0YXRlKiBleGVjKSBjb25z
dAoreworICAgIGlmICghaW1wbCgpLT5oYXNWaWRlb1NvdXJjZSgpKQorICAgICAgICByZXR1cm4g
anNVbmRlZmluZWQoKTsKKworICAgIHJldHVybiBqc1N0cmluZ1dpdGhDYWNoZShleGVjLCBpbXBs
KCktPmZhY2luZ01vZGUoKSk7Cit9CisKK0pTVmFsdWUgSlNNZWRpYVNvdXJjZVN0YXRlczo6dm9s
dW1lKEV4ZWNTdGF0ZSopIGNvbnN0Cit7CisgICAgaWYgKGltcGwoKS0+aGFzVmlkZW9Tb3VyY2Uo
KSkKKyAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CisgICAgCisgICAgcmV0dXJuIGpzTnVt
YmVyKGltcGwoKS0+dm9sdW1lKCkpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNl
bmRpZgpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNNZWRpYVN0cmVhbUNhcGFi
aWxpdGllc0N1c3RvbS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNNZWRpYVN0cmVhbUNhcGFiaWxpdGllc0N1c3RvbS5jcHAJKHJldmlzaW9uIDApCisrKyBT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU01lZGlhU3RyZWFtQ2FwYWJpbGl0aWVzQ3VzdG9t
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDUzIEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMn
JyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisg
KiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2luY2x1ZGUg
ImNvbmZpZy5oIgorCisjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKKworI2luY2x1ZGUgIkpTTWVk
aWFTdHJlYW1DYXBhYmlsaXRpZXMuaCIKKworI2luY2x1ZGUgIk1lZGlhU3RyZWFtQ2FwYWJpbGl0
aWVzLmgiCisjaW5jbHVkZSAiSlNBbGxBdWRpb0NhcGFiaWxpdGllcy5oIgorI2luY2x1ZGUgIkpT
QWxsVmlkZW9DYXBhYmlsaXRpZXMuaCIKKwordXNpbmcgbmFtZXNwYWNlIEpTQzsKKworbmFtZXNw
YWNlIFdlYkNvcmUgeworCitKU0M6OkpTVmFsdWUgdG9KUyhKU0M6OkV4ZWNTdGF0ZSogZXhlYywg
SlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgTWVkaWFTdHJlYW1DYXBhYmlsaXRpZXMq
IG9iamVjdCkKK3sKKyAgICBpZiAoIW9iamVjdCkKKyAgICAgICAgcmV0dXJuIGpzTnVsbCgpOwor
CisgICAgaWYgKG9iamVjdC0+aGFzVmlkZW9Tb3VyY2UoKSkKKyAgICAgICAgcmV0dXJuIHdyYXA8
SlNBbGxWaWRlb0NhcGFiaWxpdGllcz4oZXhlYywgZ2xvYmFsT2JqZWN0LCBzdGF0aWNfY2FzdDxB
bGxWaWRlb0NhcGFiaWxpdGllcyo+KG9iamVjdCkpOworCisgICAgcmV0dXJuIHdyYXA8SlNBbGxB
dWRpb0NhcGFiaWxpdGllcz4oZXhlYywgZ2xvYmFsT2JqZWN0LCBzdGF0aWNfY2FzdDxBbGxBdWRp
b0NhcGFiaWxpdGllcyo+KG9iamVjdCkpOworfQorCisjZW5kaWYgLy8gRU5BQkxFKE1FRElBX1NU
UkVBTSkKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvZG9t
L0V2ZW50TmFtZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vRXZlbnROYW1l
cy5oCShyZXZpc2lvbiAxNTcwMTYpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vRXZlbnROYW1lcy5o
CSh3b3JraW5nIGNvcHkpCkBAIC0yMzgsNiArMjM4LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
ICAgIG1hY3JvKHJlbW92ZXN0cmVhbSkgXAogICAgIG1hY3JvKHNpZ25hbGluZ3N0YXRlY2hhbmdl
KSBcCiAgICAgbWFjcm8ocmVtb3ZldHJhY2spIFwKKyAgICBtYWNybyhvdmVyY29uc3RyYWluZWQp
IFwKICAgICBtYWNybyhtdXRlKSBcCiAgICAgbWFjcm8odW5tdXRlKSBcCiAgICAgbWFjcm8oc3Rh
cnRlZCkgXApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFT
dHJlYW1DZW50ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21l
ZGlhc3RyZWFtL01lZGlhU3RyZWFtQ2VudGVyLmNwcAkocmV2aXNpb24gMTU3MDE2KQorKysgU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1DZW50ZXIuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC02NywxMSArNjcsNiBAQCBNZWRpYVN0cmVhbUNlbnRlcjo6fk1lZGlh
U3RyZWFtQ2VudGVyKCkKIHsKIH0KIAotdm9pZCBNZWRpYVN0cmVhbUNlbnRlcjo6ZW5kTG9jYWxN
ZWRpYVN0cmVhbShNZWRpYVN0cmVhbURlc2NyaXB0b3IqIHN0cmVhbURlc2NyaXB0b3IpCi17Ci0g
ICAgc3RyZWFtRGVzY3JpcHRvci0+c2V0RW5kZWQoKTsKLX0KLQogfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQogCiAjZW5kaWYgLy8gRU5BQkxFKE1FRElBX1NUUkVBTSkKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtQ2VudGVyLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1DZW50ZXIu
aAkocmV2aXNpb24gMTU3MDE2KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJl
YW0vTWVkaWFTdHJlYW1DZW50ZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMzQsNiArMzQsNyBAQAog
CiAjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKIAorI2luY2x1ZGUgIk1lZGlhU3RyZWFtU291cmNl
LmgiCiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZT
dHJpbmcuaD4KIApAQCAtNDMsOSArNDQsMTEgQEAgY2xhc3MgTWVkaWFDb25zdHJhaW50czsKIGNs
YXNzIE1lZGlhU3RyZWFtQ3JlYXRpb25DbGllbnQ7CiBjbGFzcyBNZWRpYVN0cmVhbUNyZWF0aW9u
Q2xpZW50OwogY2xhc3MgTWVkaWFTdHJlYW1EZXNjcmlwdG9yOwotY2xhc3MgTWVkaWFTdHJlYW1T
b3VyY2U7CitjbGFzcyBNZWRpYVN0cmVhbVNvdXJjZUNhcGFiaWxpdGllczsKIGNsYXNzIE1lZGlh
U3RyZWFtVHJhY2tTb3VyY2VzUmVxdWVzdENsaWVudDsKIAorc3RydWN0IE1lZGlhU3RyZWFtU291
cmNlU3RhdGVzOworCiBjbGFzcyBNZWRpYVN0cmVhbUNlbnRlciB7CiBwdWJsaWM6CiAgICAgdmly
dHVhbCB+TWVkaWFTdHJlYW1DZW50ZXIoKTsKQEAgLTU5LDE0ICs2Miw2IEBAIHB1YmxpYzoKIAog
ICAgIHZpcnR1YWwgYm9vbCBnZXRNZWRpYVN0cmVhbVRyYWNrU291cmNlcyhQYXNzUmVmUHRyPE1l
ZGlhU3RyZWFtVHJhY2tTb3VyY2VzUmVxdWVzdENsaWVudD4pID0gMDsKIAotICAgIHZpcnR1YWwg
dm9pZCBkaWRTZXRNZWRpYVN0cmVhbVRyYWNrRW5hYmxlZChNZWRpYVN0cmVhbVNvdXJjZSopID0g
MDsKLQotICAgIHZpcnR1YWwgYm9vbCBkaWRBZGRNZWRpYVN0cmVhbVRyYWNrKE1lZGlhU3RyZWFt
U291cmNlKikgPSAwOwotICAgIHZpcnR1YWwgYm9vbCBkaWRSZW1vdmVNZWRpYVN0cmVhbVRyYWNr
KE1lZGlhU3RyZWFtU291cmNlKikgPSAwOwotCi0gICAgdmlydHVhbCB2b2lkIGRpZFN0b3BMb2Nh
bE1lZGlhU3RyZWFtKE1lZGlhU3RyZWFtRGVzY3JpcHRvciopID0gMDsKLSAgICB2aXJ0dWFsIHZv
aWQgZGlkQ3JlYXRlTWVkaWFTdHJlYW0oTWVkaWFTdHJlYW1EZXNjcmlwdG9yKikgPSAwOwotCiBw
cm90ZWN0ZWQ6CiAgICAgTWVkaWFTdHJlYW1DZW50ZXIoKTsKIApJbmRleDogU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1EZXNjcmlwdG9yLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbURl
c2NyaXB0b3IuY3BwCShyZXZpc2lvbiAxNTcwMTYpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbURlc2NyaXB0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0zNSw2ICszNSw3IEBACiAKICNpbmNsdWRlICJNZWRpYVN0cmVhbURlc2NyaXB0b3IuaCIKIAor
I2luY2x1ZGUgIk1lZGlhU3RyZWFtQ2VudGVyLmgiCiAjaW5jbHVkZSAiTWVkaWFTdHJlYW1Tb3Vy
Y2UuaCIKICNpbmNsdWRlICJVVUlELmgiCiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KQEAg
LTQ3LDYgKzQ4LDE1IEBAIFBhc3NSZWZQdHI8TWVkaWFTdHJlYW1EZXNjcmlwdG9yPiBNZWRpYVMK
ICAgICByZXR1cm4gYWRvcHRSZWYobmV3IE1lZGlhU3RyZWFtRGVzY3JpcHRvcihjcmVhdGVDYW5v
bmljYWxVVUlEU3RyaW5nKCksIGF1ZGlvU291cmNlcywgdmlkZW9Tb3VyY2VzKSk7CiB9CiAKK01l
ZGlhU3RyZWFtRGVzY3JpcHRvcjo6fk1lZGlhU3RyZWFtRGVzY3JpcHRvcigpCit7CisgICAgZm9y
IChzaXplX3QgaSA9IDA7IGkgPCBtX2F1ZGlvU3RyZWFtU291cmNlcy5zaXplKCk7IGkrKykKKyAg
ICAgICAgbV9hdWRpb1N0cmVhbVNvdXJjZXNbaV0tPnNldFN0cmVhbSgwKTsKKyAgICAKKyAgICBm
b3IgKHNpemVfdCBpID0gMDsgaSA8IG1fdmlkZW9TdHJlYW1Tb3VyY2VzLnNpemUoKTsgaSsrKQor
ICAgICAgICBtX3ZpZGVvU3RyZWFtU291cmNlc1tpXS0+c2V0U3RyZWFtKDApOworfQorCiB2b2lk
IE1lZGlhU3RyZWFtRGVzY3JpcHRvcjo6YWRkU291cmNlKFBhc3NSZWZQdHI8TWVkaWFTdHJlYW1T
b3VyY2U+IHNvdXJjZSkKIHsKICAgICBzd2l0Y2ggKHNvdXJjZS0+dHlwZSgpKSB7CkBAIC02Nywx
NSArNzcsMTkgQEAgdm9pZCBNZWRpYVN0cmVhbURlc2NyaXB0b3I6OnJlbW92ZVNvdXJjZQogICAg
IHN3aXRjaCAoc291cmNlLT50eXBlKCkpIHsKICAgICBjYXNlIE1lZGlhU3RyZWFtU291cmNlOjpB
dWRpbzoKICAgICAgICAgcG9zID0gbV9hdWRpb1N0cmVhbVNvdXJjZXMuZmluZChzb3VyY2UpOwot
ICAgICAgICBpZiAocG9zICE9IG5vdEZvdW5kKQotICAgICAgICAgICAgbV9hdWRpb1N0cmVhbVNv
dXJjZXMucmVtb3ZlKHBvcyk7CisgICAgICAgIGlmIChwb3MgPT0gbm90Rm91bmQpCisgICAgICAg
ICAgICByZXR1cm47CisgICAgICAgIG1fYXVkaW9TdHJlYW1Tb3VyY2VzLnJlbW92ZShwb3MpOwog
ICAgICAgICBicmVhazsKICAgICBjYXNlIE1lZGlhU3RyZWFtU291cmNlOjpWaWRlbzoKICAgICAg
ICAgcG9zID0gbV92aWRlb1N0cmVhbVNvdXJjZXMuZmluZChzb3VyY2UpOwotICAgICAgICBpZiAo
cG9zICE9IG5vdEZvdW5kKQotICAgICAgICAgICAgbV92aWRlb1N0cmVhbVNvdXJjZXMucmVtb3Zl
KHBvcyk7CisgICAgICAgIGlmIChwb3MgPT0gbm90Rm91bmQpCisgICAgICAgICAgICByZXR1cm47
CisgICAgICAgIG1fdmlkZW9TdHJlYW1Tb3VyY2VzLnJlbW92ZShwb3MpOwogICAgICAgICBicmVh
azsKICAgICB9CisKKyAgICBzb3VyY2UtPnNldFN0cmVhbSgwKTsKIH0KIAogdm9pZCBNZWRpYVN0
cmVhbURlc2NyaXB0b3I6OmFkZFJlbW90ZVNvdXJjZShNZWRpYVN0cmVhbVNvdXJjZSogc291cmNl
KQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1E
ZXNjcmlwdG9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFz
dHJlYW0vTWVkaWFTdHJlYW1EZXNjcmlwdG9yLmgJKHJldmlzaW9uIDE1NzAxNikKKysrIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtRGVzY3JpcHRvci5oCSh3
b3JraW5nIGNvcHkpCkBAIC01Miw5ICs1MiwxMCBAQCBwdWJsaWM6CiAKIGNsYXNzIE1lZGlhU3Ry
ZWFtRGVzY3JpcHRvciA6IHB1YmxpYyBSZWZDb3VudGVkPE1lZGlhU3RyZWFtRGVzY3JpcHRvcj4g
ewogcHVibGljOgotCiAgICAgc3RhdGljIFBhc3NSZWZQdHI8TWVkaWFTdHJlYW1EZXNjcmlwdG9y
PiBjcmVhdGUoY29uc3QgTWVkaWFTdHJlYW1Tb3VyY2VWZWN0b3ImIGF1ZGlvU291cmNlcywgY29u
c3QgTWVkaWFTdHJlYW1Tb3VyY2VWZWN0b3ImIHZpZGVvU291cmNlcyk7CiAKKyAgICB2aXJ0dWFs
IH5NZWRpYVN0cmVhbURlc2NyaXB0b3IoKTsKKwogICAgIE1lZGlhU3RyZWFtRGVzY3JpcHRvckNs
aWVudCogY2xpZW50KCkgY29uc3QgeyByZXR1cm4gbV9jbGllbnQ7IH0KICAgICB2b2lkIHNldENs
aWVudChNZWRpYVN0cmVhbURlc2NyaXB0b3JDbGllbnQqIGNsaWVudCkgeyBtX2NsaWVudCA9IGNs
aWVudDsgfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRp
YVN0cmVhbVNvdXJjZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1Tb3VyY2UuY3BwCShyZXZpc2lvbiAxNTcwMTYpCisrKyBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVNvdXJjZS5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw2IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDEy
IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCkBAIC0zNCwyNiArMzUsMzkgQEAKIAogI2luY2x1ZGUgIk1lZGlhU3RyZWFtU291cmNl
LmgiCiAKLSNpbmNsdWRlICJBdWRpb0Rlc3RpbmF0aW9uQ29uc3VtZXIuaCIKKyNpbmNsdWRlICJN
ZWRpYVN0cmVhbUNlbnRlci5oIgorI2luY2x1ZGUgIk1lZGlhU3RyZWFtU291cmNlQ2FwYWJpbGl0
aWVzLmgiCisjaW5jbHVkZSAiVVVJRC5oIgorCiAjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4K
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1QYXNzUmVmUHRyPE1lZGlhU3RyZWFtU291cmNlPiBN
ZWRpYVN0cmVhbVNvdXJjZTo6Y3JlYXRlKGNvbnN0IFN0cmluZyYgaWQsIFR5cGUgdHlwZSwgY29u
c3QgU3RyaW5nJiBuYW1lLCBSZWFkeVN0YXRlIHJlYWR5U3RhdGUsIGJvb2wgcmVxdWlyZXNDb25z
dW1lcikKLXsKLSAgICByZXR1cm4gYWRvcHRSZWYobmV3IE1lZGlhU3RyZWFtU291cmNlKGlkLCB0
eXBlLCBuYW1lLCByZWFkeVN0YXRlLCByZXF1aXJlc0NvbnN1bWVyKSk7Ci19Ci0KLU1lZGlhU3Ry
ZWFtU291cmNlOjpNZWRpYVN0cmVhbVNvdXJjZShjb25zdCBTdHJpbmcmIGlkLCBUeXBlIHR5cGUs
IGNvbnN0IFN0cmluZyYgbmFtZSwgUmVhZHlTdGF0ZSByZWFkeVN0YXRlLCBib29sIHJlcXVpcmVz
Q29uc3VtZXIpCitNZWRpYVN0cmVhbVNvdXJjZTo6TWVkaWFTdHJlYW1Tb3VyY2UoY29uc3QgU3Ry
aW5nJiBpZCwgVHlwZSB0eXBlLCBjb25zdCBTdHJpbmcmIG5hbWUpCiAgICAgOiBtX2lkKGlkKQog
ICAgICwgbV90eXBlKHR5cGUpCiAgICAgLCBtX25hbWUobmFtZSkKLSAgICAsIG1fcmVhZHlTdGF0
ZShyZWFkeVN0YXRlKQorICAgICwgbV9yZWFkeVN0YXRlKE5ldykKICAgICAsIG1fc3RyZWFtKDAp
Ci0gICAgLCBtX3JlcXVpcmVzQ29uc3VtZXIocmVxdWlyZXNDb25zdW1lcikKICAgICAsIG1fZW5h
YmxlZCh0cnVlKQogICAgICwgbV9tdXRlZChmYWxzZSkKKyAgICAsIG1fcmVhZG9ubHkoZmFsc2Up
CisgICAgLCBtX3JlbW90ZShmYWxzZSkKIHsKKyAgICBpZiAoIW1faWQuaXNFbXB0eSgpKQorICAg
ICAgICByZXR1cm47CisgICAgCisgICAgbV9pZCA9IGNyZWF0ZUNhbm9uaWNhbFVVSURTdHJpbmco
KTsKK30KKwordm9pZCBNZWRpYVN0cmVhbVNvdXJjZTo6cmVzZXQoKQoreworICAgIG1fcmVhZHlT
dGF0ZSA9IE5ldzsKKyAgICBtX3N0cmVhbSA9IDA7CisgICAgbV9lbmFibGVkID0gdHJ1ZTsKKyAg
ICBtX211dGVkID0gZmFsc2U7CisgICAgbV9yZWFkb25seSA9IGZhbHNlOworICAgIG1fcmVtb3Rl
ID0gZmFsc2U7CiB9CiAKIHZvaWQgTWVkaWFTdHJlYW1Tb3VyY2U6OnNldFJlYWR5U3RhdGUoUmVh
ZHlTdGF0ZSByZWFkeVN0YXRlKQpAQCAtNjMsNyArNzcsNyBAQCB2b2lkIE1lZGlhU3RyZWFtU291
cmNlOjpzZXRSZWFkeVN0YXRlKFJlCiAKICAgICBtX3JlYWR5U3RhdGUgPSByZWFkeVN0YXRlOwog
ICAgIGZvciAoVmVjdG9yPE9ic2VydmVyKj46Oml0ZXJhdG9yIGkgPSBtX29ic2VydmVycy5iZWdp
bigpOyBpICE9IG1fb2JzZXJ2ZXJzLmVuZCgpOyArK2kpCi0gICAgICAgICgqaSktPnNvdXJjZUNo
YW5nZWRTdGF0ZSgpOworICAgICAgICAoKmkpLT5zb3VyY2VTdGF0ZUNoYW5nZWQoKTsKIH0KIAog
dm9pZCBNZWRpYVN0cmVhbVNvdXJjZTo6YWRkT2JzZXJ2ZXIoTWVkaWFTdHJlYW1Tb3VyY2U6Ok9i
c2VydmVyKiBvYnNlcnZlcikKQEAgLTgwLDUzICs5NCw3NCBAQCB2b2lkIE1lZGlhU3RyZWFtU291
cmNlOjpyZW1vdmVPYnNlcnZlcihNCiAKIHZvaWQgTWVkaWFTdHJlYW1Tb3VyY2U6OnNldFN0cmVh
bShNZWRpYVN0cmVhbURlc2NyaXB0b3IqIHN0cmVhbSkKIHsKLSAgICBBU1NFUlQoIW1fc3RyZWFt
ICYmIHN0cmVhbSk7CisgICAgLy8gRklYTUU6IEEgc291cmNlIHNob3VsZCBub3QgbmVlZCB0byBr
bm93IGFib3V0IGl0cyBzdHJlYW0ocykuIFRoaXMgd2lsbCBiZSBmaXhlZCBhcyBhIHBhcnQgb2YK
KyAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTIxOTU0CiAg
ICAgbV9zdHJlYW0gPSBzdHJlYW07CiB9CiAKK01lZGlhQ29uc3RyYWludHMqIE1lZGlhU3RyZWFt
U291cmNlOjpjb25zdHJhaW50cygpIGNvbnN0Cit7CisgICAgLy8gRklYTUU6IFdoaWxlIHRoaXMg
cmV0dXJucyAKKyAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTIyNDI4CisgICAgcmV0dXJuIG1fY29uc3RyYWludHMuZ2V0KCk7Cit9CisgICAgCit2b2lkIE1l
ZGlhU3RyZWFtU291cmNlOjpzZXRDb25zdHJhaW50cyhQYXNzUmVmUHRyPE1lZGlhQ29uc3RyYWlu
dHM+IGNvbnN0cmFpbnRzKQoreworICAgIG1fY29uc3RyYWludHMgPSBjb25zdHJhaW50czsKK30K
Kwogdm9pZCBNZWRpYVN0cmVhbVNvdXJjZTo6c2V0TXV0ZWQoYm9vbCBtdXRlZCkKIHsKICAgICBp
ZiAobV9tdXRlZCA9PSBtdXRlZCkKICAgICAgICAgcmV0dXJuOwogCiAgICAgbV9tdXRlZCA9IG11
dGVkOworCisgICAgaWYgKG1fcmVhZHlTdGF0ZSA9PSBFbmRlZCkKKyAgICAgICAgcmV0dXJuOwor
CiAgICAgZm9yIChWZWN0b3I8T2JzZXJ2ZXIqPjo6aXRlcmF0b3IgaSA9IG1fb2JzZXJ2ZXJzLmJl
Z2luKCk7IGkgIT0gbV9vYnNlcnZlcnMuZW5kKCk7ICsraSkKLSAgICAgICAgKCppKS0+c291cmNl
Q2hhbmdlZFN0YXRlKCk7CisgICAgICAgICgqaSktPnNvdXJjZU11dGVkQ2hhbmdlZCgpOwogfQog
Ci12b2lkIE1lZGlhU3RyZWFtU291cmNlOjphZGRBdWRpb0NvbnN1bWVyKFBhc3NSZWZQdHI8QXVk
aW9EZXN0aW5hdGlvbkNvbnN1bWVyPiBjb25zdW1lcikKK3ZvaWQgTWVkaWFTdHJlYW1Tb3VyY2U6
OnNldEVuYWJsZWQoYm9vbCBlbmFibGVkKQogewotICAgIEFTU0VSVChtX3JlcXVpcmVzQ29uc3Vt
ZXIpOwotICAgIE11dGV4TG9ja2VyIGxvY2tlcihtX2F1ZGlvQ29uc3VtZXJzTG9jayk7Ci0gICAg
bV9hdWRpb0NvbnN1bWVycy5hcHBlbmQoY29uc3VtZXIpOwotfQorICAgIGlmIChtX2VuYWJsZWQg
PT0gZW5hYmxlZCkKKyAgICAgICAgcmV0dXJuOworICAgIAorICAgIG1fZW5hYmxlZCA9IGVuYWJs
ZWQ7CiAKLWJvb2wgTWVkaWFTdHJlYW1Tb3VyY2U6OnJlbW92ZUF1ZGlvQ29uc3VtZXIoQXVkaW9E
ZXN0aW5hdGlvbkNvbnN1bWVyKiBjb25zdW1lcikKLXsKLSAgICBBU1NFUlQobV9yZXF1aXJlc0Nv
bnN1bWVyKTsKLSAgICBNdXRleExvY2tlciBsb2NrZXIobV9hdWRpb0NvbnN1bWVyc0xvY2spOwot
ICAgIHNpemVfdCBwb3MgPSBtX2F1ZGlvQ29uc3VtZXJzLmZpbmQoY29uc3VtZXIpOwotICAgIGlm
IChwb3MgIT0gbm90Rm91bmQpIHsKLSAgICAgICAgbV9hdWRpb0NvbnN1bWVycy5yZW1vdmUocG9z
KTsKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfQotICAgIHJldHVybiBmYWxzZTsKKyAgICBp
ZiAobV9yZWFkeVN0YXRlID09IEVuZGVkKQorICAgICAgICByZXR1cm47CisgICAgCisgICAgZm9y
IChWZWN0b3I8T2JzZXJ2ZXIqPjo6aXRlcmF0b3IgaSA9IG1fb2JzZXJ2ZXJzLmJlZ2luKCk7IGkg
IT0gbV9vYnNlcnZlcnMuZW5kKCk7ICsraSkKKyAgICAgICAgKCppKS0+c291cmNlRW5hYmxlZENo
YW5nZWQoKTsKIH0KIAotdm9pZCBNZWRpYVN0cmVhbVNvdXJjZTo6c2V0QXVkaW9Gb3JtYXQoc2l6
ZV90IG51bWJlck9mQ2hhbm5lbHMsIGZsb2F0IHNhbXBsZVJhdGUpCitib29sIE1lZGlhU3RyZWFt
U291cmNlOjpyZWFkb25seSgpIGNvbnN0CiB7Ci0gICAgQVNTRVJUKG1fcmVxdWlyZXNDb25zdW1l
cik7Ci0gICAgTXV0ZXhMb2NrZXIgbG9ja2VyKG1fYXVkaW9Db25zdW1lcnNMb2NrKTsKLSAgICBm
b3IgKFZlY3RvcjxSZWZQdHI8QXVkaW9EZXN0aW5hdGlvbkNvbnN1bWVyPiA+OjppdGVyYXRvciBp
dCA9IG1fYXVkaW9Db25zdW1lcnMuYmVnaW4oKTsgaXQgIT0gbV9hdWRpb0NvbnN1bWVycy5lbmQo
KTsgKytpdCkKLSAgICAgICAgKCppdCktPnNldEZvcm1hdChudW1iZXJPZkNoYW5uZWxzLCBzYW1w
bGVSYXRlKTsKKyAgICAvLyBodHRwOi8vd3d3LnczLm9yZy9UUi9tZWRpYWNhcHR1cmUtc3RyZWFt
cy8jd2lkbC1NZWRpYVN0cmVhbVRyYWNrLV9yZWFkb25seQorICAgIC8vIElmIHRoZSB0cmFjayAo
YXVkaW8gb3IgdmlkZW8pIGlzIGJhY2tlZCBieSBhIHJlYWQtb25seSBzb3VyY2Ugc3VjaCBhcyBh
IGZpbGUsIG9yIHRoZSB0cmFjayBzb3VyY2UgCisgICAgLy8gaXMgYSBsb2NhbCBtaWNyb3Bob25l
IG9yIGNhbWVyYSwgYnV0IGlzIHNoYXJlZCBzbyB0aGF0IHRoaXMgdHJhY2sgY2Fubm90IG1vZGlm
eSBhbnkgb2YgdGhlIHNvdXJjZSdzCisgICAgLy8gc2V0dGluZ3MsIHRoZSByZWFkb25seSBhdHRy
aWJ1dGUgbXVzdCByZXR1cm4gdGhlIHZhbHVlIHRydWUuIE90aGVyd2lzZSwgaXQgbXVzdCByZXR1
cm4gdGhlIHZhbHVlIGZhbHNlLgorICAgIHJldHVybiBtX3JlYWRvbmx5OwogfQogCi12b2lkIE1l
ZGlhU3RyZWFtU291cmNlOjpjb25zdW1lQXVkaW8oQXVkaW9CdXMqIGJ1cywgc2l6ZV90IG51bWJl
ck9mRnJhbWVzKQordm9pZCBNZWRpYVN0cmVhbVNvdXJjZTo6c3RvcCgpCiB7Ci0gICAgQVNTRVJU
KG1fcmVxdWlyZXNDb25zdW1lcik7Ci0gICAgTXV0ZXhMb2NrZXIgbG9ja2VyKG1fYXVkaW9Db25z
dW1lcnNMb2NrKTsKLSAgICBmb3IgKFZlY3RvcjxSZWZQdHI8QXVkaW9EZXN0aW5hdGlvbkNvbnN1
bWVyPiA+OjppdGVyYXRvciBpdCA9IG1fYXVkaW9Db25zdW1lcnMuYmVnaW4oKTsgaXQgIT0gbV9h
dWRpb0NvbnN1bWVycy5lbmQoKTsgKytpdCkKLSAgICAgICAgKCppdCktPmNvbnN1bWVBdWRpbyhi
dXMsIG51bWJlck9mRnJhbWVzKTsKKyAgICBmb3IgKFZlY3RvcjxPYnNlcnZlcio+OjppdGVyYXRv
ciBpID0gbV9vYnNlcnZlcnMuYmVnaW4oKTsgaSAhPSBtX29ic2VydmVycy5lbmQoKTsgKytpKSB7
CisgICAgICAgIGlmICghKCppKS0+c3RvcHBlZCgpKQorICAgICAgICAgICAgcmV0dXJuOworICAg
IH0KKworICAgIC8vIFRoZXJlIGFyZSBubyBtb3JlIGNvbnN1bWVycyBvZiB0aGlzIHNvdXJjZSdz
IGRhdGEsIHNodXQgaXQgZG93biBhcyBhcHByb3ByaWF0ZS4KKyAgICBzZXRSZWFkeVN0YXRlKEVu
ZGVkKTsKKworICAgIC8vIGh0dHA6Ly93d3cudzMub3JnL1RSL21lZGlhY2FwdHVyZS1zdHJlYW1z
LyN3aWRsLU1lZGlhU3RyZWFtVHJhY2stc3RvcC12b2lkCisgICAgLy8gSWYgdGhlIGRhdGEgaXMg
YmVpbmcgZ2VuZXJhdGVkIGZyb20gYSBsaXZlIHNvdXJjZSAoZS5nLiwgYSBtaWNyb3Bob25lIG9y
IGNhbWVyYSksIHRoZW4gdGhlIHVzZXIgCisgICAgLy8gYWdlbnQgc2hvdWxkIHJlbW92ZSBhbnkg
YWN0aXZlICJvbi1haXIiIGluZGljYXRvciBmb3IgdGhhdCBzb3VyY2UuIElmIHRoZSBkYXRhIGlz
IGJlaW5nIAorICAgIC8vIGdlbmVyYXRlZCBmcm9tIGEgcHJlcmVjb3JkZWQgc291cmNlIChlLmcu
IGEgdmlkZW8gZmlsZSksIGFueSByZW1haW5pbmcgY29udGVudCBpbiB0aGUgZmlsZSBpcyBpZ25v
cmVkLgogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVNvdXJjZS5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtU291cmNlLmgJKHJl
dmlzaW9uIDE1NzAxNikKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL01l
ZGlhU3RyZWFtU291cmNlLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNiArMSw3IEBACiAvKgogICog
Q29weXJpZ2h0IChDKSAyMDExIEVyaWNzc29uIEFCLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICog
Q29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zNiw2ICszNyw3IEBACiAKICNpbmNsdWRlICJB
dWRpb0Rlc3RpbmF0aW9uQ29uc3VtZXIuaCIKICNpbmNsdWRlICJNZWRpYUNvbnN0cmFpbnRzLmgi
CisjaW5jbHVkZSAiTWVkaWFTdHJlYW1Tb3VyY2VDYXBhYmlsaXRpZXMuaCIKICNpbmNsdWRlIDx3
dGYvUmVmQ291bnRlZC5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KICNpbmNsdWRlIDx3dGYv
dGV4dC9XVEZTdHJpbmcuaD4KQEAgLTQzLDcyICs0NSw4MSBAQAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCiBjbGFzcyBBdWRpb0J1czsKK2NsYXNzIE1lZGlhQ29uc3RyYWludHM7CiBjbGFzcyBNZWRp
YVN0cmVhbURlc2NyaXB0b3I7CitzdHJ1Y3QgTWVkaWFTdHJlYW1Tb3VyY2VTdGF0ZXM7CiAKIGNs
YXNzIE1lZGlhU3RyZWFtU291cmNlIDogcHVibGljIFJlZkNvdW50ZWQ8TWVkaWFTdHJlYW1Tb3Vy
Y2U+IHsKIHB1YmxpYzoKICAgICBjbGFzcyBPYnNlcnZlciB7CiAgICAgcHVibGljOgogICAgICAg
ICB2aXJ0dWFsIH5PYnNlcnZlcigpIHsgfQotICAgICAgICB2aXJ0dWFsIHZvaWQgc291cmNlQ2hh
bmdlZFN0YXRlKCkgPSAwOworICAgICAgICB2aXJ0dWFsIHZvaWQgc291cmNlU3RhdGVDaGFuZ2Vk
KCkgPSAwOworICAgICAgICB2aXJ0dWFsIHZvaWQgc291cmNlTXV0ZWRDaGFuZ2VkKCkgPSAwOwor
ICAgICAgICB2aXJ0dWFsIHZvaWQgc291cmNlRW5hYmxlZENoYW5nZWQoKSA9IDA7CisgICAgICAg
IHZpcnR1YWwgYm9vbCBzdG9wcGVkKCkgPSAwOwogICAgIH07CiAKICAgICBlbnVtIFR5cGUgeyBB
dWRpbywgVmlkZW8gfTsKICAgICBlbnVtIFJlYWR5U3RhdGUgeyBOZXcgPSAwLCBMaXZlID0gMSwg
RW5kZWQgPSAyIH07CiAKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxNZWRpYVN0cmVhbVNvdXJjZT4g
Y3JlYXRlKGNvbnN0IFN0cmluZyYgaWQsIFR5cGUsIGNvbnN0IFN0cmluZyYgbmFtZSwgUmVhZHlT
dGF0ZSA9IE5ldywgYm9vbCByZXF1aXJlc0NvbnN1bWVyID0gZmFsc2UpOworICAgIHZpcnR1YWwg
fk1lZGlhU3RyZWFtU291cmNlKCkgeyB9CiAKLSAgICBjb25zdCBTdHJpbmcmIGlkKCkgY29uc3Qg
eyByZXR1cm4gbV9pZDsgfQorICAgIHZpcnR1YWwgYm9vbCBpc0F1ZGlvU3RyZWFtU291cmNlKCkg
Y29uc3QgeyByZXR1cm4gZmFsc2U7IH0KKyAgICB2aXJ0dWFsIGJvb2wgdXNlSURGb3JUcmFja0lE
KCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KKworICAgIHZvaWQgcmVzZXQoKTsKIAorICAgIGNv
bnN0IFN0cmluZyYgaWQoKSBjb25zdCB7IHJldHVybiBtX2lkOyB9CiAgICAgVHlwZSB0eXBlKCkg
Y29uc3QgeyByZXR1cm4gbV90eXBlOyB9CiAgICAgY29uc3QgU3RyaW5nJiBuYW1lKCkgY29uc3Qg
eyByZXR1cm4gbV9uYW1lOyB9CiAKKyAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8TWVkaWFTdHJlYW1T
b3VyY2VDYXBhYmlsaXRpZXM+IGNhcGFiaWxpdGllcygpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFs
IGNvbnN0IE1lZGlhU3RyZWFtU291cmNlU3RhdGVzJiBzdGF0ZXMoKSA9IDA7CisgICAgCiAgICAg
dm9pZCBzZXRSZWFkeVN0YXRlKFJlYWR5U3RhdGUpOwogICAgIFJlYWR5U3RhdGUgcmVhZHlTdGF0
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fcmVhZHlTdGF0ZTsgfQogCiAgICAgdm9pZCBhZGRPYnNlcnZl
cihPYnNlcnZlciopOwogICAgIHZvaWQgcmVtb3ZlT2JzZXJ2ZXIoT2JzZXJ2ZXIqKTsKIAotICAg
IHZvaWQgc2V0Q29uc3RyYWludHMoUGFzc1JlZlB0cjxNZWRpYUNvbnN0cmFpbnRzPiBjb25zdHJh
aW50cykgeyBtX2NvbnN0cmFpbnRzID0gY29uc3RyYWludHM7IH0KLSAgICBNZWRpYUNvbnN0cmFp
bnRzKiBjb25zdHJhaW50cygpIGNvbnN0IHsgcmV0dXJuIG1fY29uc3RyYWludHMuZ2V0KCk7IH0K
LQotICAgIGNvbnN0IFN0cmluZyYgZGV2aWNlSWQoKSBjb25zdCB7IHJldHVybiBtX2RldmljZUlk
OyB9Ci0gICAgdm9pZCBzZXREZXZpY2VJZChjb25zdCBTdHJpbmcmIGRldmljZUlkKSB7IG1fZGV2
aWNlSWQgPSBkZXZpY2VJZDsgfQorICAgIHZvaWQgc2V0Q29uc3RyYWludHMoUGFzc1JlZlB0cjxN
ZWRpYUNvbnN0cmFpbnRzPik7CisgICAgTWVkaWFDb25zdHJhaW50cyogY29uc3RyYWludHMoKSBj
b25zdDsKIAogICAgIGJvb2wgZW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJuIG1fZW5hYmxlZDsgfQot
ICAgIHZvaWQgc2V0RW5hYmxlZChib29sIGVuYWJsZWQpIHsgbV9lbmFibGVkID0gZW5hYmxlZDsg
fQorICAgIHZvaWQgc2V0RW5hYmxlZChib29sKTsKIAogICAgIGJvb2wgbXV0ZWQoKSBjb25zdCB7
IHJldHVybiBtX211dGVkOyB9CiAgICAgdm9pZCBzZXRNdXRlZChib29sKTsKLSAgICAKLSAgICB2
b2lkIHNldEF1ZGlvRm9ybWF0KHNpemVfdCBudW1iZXJPZkNoYW5uZWxzLCBmbG9hdCBzYW1wbGVS
YXRlKTsKLSAgICB2b2lkIGNvbnN1bWVBdWRpbyhBdWRpb0J1cyosIHNpemVfdCBudW1iZXJPZkZy
YW1lcyk7CisKKyAgICBib29sIHJlYWRvbmx5KCkgY29uc3Q7CisgICAgdm9pZCBzZXRSZWFkb25s
eShib29sIHJlYWRvbmx5KSB7IG1fcmVhZG9ubHkgPSByZWFkb25seTsgfQorCisgICAgYm9vbCBy
ZW1vdGUoKSBjb25zdCB7IHJldHVybiBtX3JlbW90ZTsgfQorICAgIHZvaWQgc2V0UmVtb3RlKGJv
b2wgcmVtb3RlKSB7IG1fcmVtb3RlID0gcmVtb3RlOyB9CisKKyAgICB2b2lkIHN0b3AoKTsKIAog
ICAgIE1lZGlhU3RyZWFtRGVzY3JpcHRvciogc3RyZWFtKCkgY29uc3QgeyByZXR1cm4gbV9zdHJl
YW07IH0KICAgICB2b2lkIHNldFN0cmVhbShNZWRpYVN0cmVhbURlc2NyaXB0b3IqKTsKLQotICAg
IGJvb2wgcmVxdWlyZXNBdWRpb0NvbnN1bWVyKCkgY29uc3QgeyByZXR1cm4gbV9yZXF1aXJlc0Nv
bnN1bWVyOyB9Ci0gICAgdm9pZCBhZGRBdWRpb0NvbnN1bWVyKFBhc3NSZWZQdHI8QXVkaW9EZXN0
aW5hdGlvbkNvbnN1bWVyPik7Ci0gICAgYm9vbCByZW1vdmVBdWRpb0NvbnN1bWVyKEF1ZGlvRGVz
dGluYXRpb25Db25zdW1lciopOwotICAgIGNvbnN0IFZlY3RvcjxSZWZQdHI8QXVkaW9EZXN0aW5h
dGlvbkNvbnN1bWVyPiA+JiBhdWRpb0NvbnN1bWVycygpIGNvbnN0IHsgcmV0dXJuIG1fYXVkaW9D
b25zdW1lcnM7IH0KKyAgICAKK3Byb3RlY3RlZDoKKyAgICBNZWRpYVN0cmVhbVNvdXJjZShjb25z
dCBTdHJpbmcmIGlkLCBUeXBlLCBjb25zdCBTdHJpbmcmIG5hbWUpOwogCiBwcml2YXRlOgotICAg
IE1lZGlhU3RyZWFtU291cmNlKGNvbnN0IFN0cmluZyYgaWQsIFR5cGUsIGNvbnN0IFN0cmluZyYg
bmFtZSwgUmVhZHlTdGF0ZSwgYm9vbCByZXF1aXJlc0NvbnN1bWVyKTsKLQogICAgIFN0cmluZyBt
X2lkOwogICAgIFR5cGUgbV90eXBlOwogICAgIFN0cmluZyBtX25hbWU7CiAgICAgUmVhZHlTdGF0
ZSBtX3JlYWR5U3RhdGU7Ci0gICAgU3RyaW5nIG1fZGV2aWNlSWQ7CiAgICAgVmVjdG9yPE9ic2Vy
dmVyKj4gbV9vYnNlcnZlcnM7Ci0gICAgTXV0ZXggbV9hdWRpb0NvbnN1bWVyc0xvY2s7Ci0gICAg
VmVjdG9yPFJlZlB0cjxBdWRpb0Rlc3RpbmF0aW9uQ29uc3VtZXI+PiBtX2F1ZGlvQ29uc3VtZXJz
OwogICAgIFJlZlB0cjxNZWRpYUNvbnN0cmFpbnRzPiBtX2NvbnN0cmFpbnRzOwogICAgIE1lZGlh
U3RyZWFtRGVzY3JpcHRvciogbV9zdHJlYW07CisgICAgTWVkaWFTdHJlYW1Tb3VyY2VTdGF0ZXMg
bV9zdGF0ZXM7CiAKLSAgICBib29sIG1fcmVxdWlyZXNDb25zdW1lcjsKICAgICBib29sIG1fZW5h
YmxlZDsKICAgICBib29sIG1fbXV0ZWQ7CisgICAgYm9vbCBtX3JlYWRvbmx5OworICAgIGJvb2wg
bV9yZW1vdGU7CiB9OwogCiB0eXBlZGVmIFZlY3RvcjxSZWZQdHI8TWVkaWFTdHJlYW1Tb3VyY2U+
ID4gTWVkaWFTdHJlYW1Tb3VyY2VWZWN0b3I7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVNvdXJjZUNhcGFiaWxpdGllcy5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtU291cmNl
Q2FwYWJpbGl0aWVzLmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
ZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVNvdXJjZUNhcGFiaWxpdGllcy5oCSh3b3JraW5nIGNvcHkp
CkBAIC0wLDAgKzEsMTc1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIE1lZGlhU3RyZWFtU291cmNlQ2Fw
YWJpbGl0aWVzX2gKKyNkZWZpbmUgTWVkaWFTdHJlYW1Tb3VyY2VDYXBhYmlsaXRpZXNfaAorCisj
aWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKKworI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+Cisj
aW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L0F0b21pY1N0cmluZy5o
PgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3N0cnVjdCBNZWRpYVN0cmVhbVNvdXJjZVN0YXRl
cyB7CitwdWJsaWM6CisgICAgZW51bSBTb3VyY2VUeXBlIHsgTm9uZSwgQ2FtZXJhLCBNaWNyb3Bo
b25lIH07CisgICAgZW51bSBWaWRlb0ZhY2luZ01vZGUgeyBVc2VyLCBFbnZpcm9ubWVudCwgTGVm
dCwgUmlnaHQgfTsKKworICAgIE1lZGlhU3RyZWFtU291cmNlU3RhdGVzKCkKKyAgICAgICAgOiBz
b3VyY2VUeXBlKE5vbmUpCisgICAgICAgICwgZmFjaW5nTW9kZShVc2VyKQorICAgICAgICAsIHdp
ZHRoKDApCisgICAgICAgICwgaGVpZ2h0KDApCisgICAgICAgICwgZnJhbWVSYXRlKDApCisgICAg
ICAgICwgYXNwZWN0UmF0aW8oMCkKKyAgICAgICAgLCB2b2x1bWUoMCkKKyAgICB7CisgICAgfQor
CisgICAgU291cmNlVHlwZSBzb3VyY2VUeXBlOworICAgIEF0b21pY1N0cmluZyBzb3VyY2VJZDsK
KyAgICBWaWRlb0ZhY2luZ01vZGUgZmFjaW5nTW9kZTsKKyAgICB1bnNpZ25lZCBsb25nIHdpZHRo
OworICAgIHVuc2lnbmVkIGxvbmcgaGVpZ2h0OworICAgIGZsb2F0IGZyYW1lUmF0ZTsKKyAgICBm
bG9hdCBhc3BlY3RSYXRpbzsKKyAgICB1bnNpZ25lZCBsb25nIHZvbHVtZTsKKyAgICAKKyAgICBi
b29sIGhhc1ZpZGVvU291cmNlOworfTsKKworY2xhc3MgTWVkaWFTdHJlYW1Tb3VyY2VDYXBhYmls
aXR5UmFuZ2UgeworcHVibGljOgorICAgIAorICAgIE1lZGlhU3RyZWFtU291cmNlQ2FwYWJpbGl0
eVJhbmdlKGZsb2F0IG1pbiwgZmxvYXQgbWF4LCBib29sIHN1cHBvcnRlZCA9IHRydWUpCisgICAg
ICAgIDogbV90eXBlKEZsb2F0KQorICAgIHsKKyAgICAgICAgbV9taW4uYXNGbG9hdCA9IG1pbjsK
KyAgICAgICAgbV9tYXguYXNGbG9hdCA9IG1heDsKKyAgICAgICAgbV9zdXBwb3J0ZWQgPSBzdXBw
b3J0ZWQ7CisgICAgfQorICAgIAorICAgIE1lZGlhU3RyZWFtU291cmNlQ2FwYWJpbGl0eVJhbmdl
KHVuc2lnbmVkIGxvbmcgbWluLCB1bnNpZ25lZCBsb25nIG1heCwgYm9vbCBzdXBwb3J0ZWQgPSB0
cnVlKQorICAgICAgICA6IG1fdHlwZShVTG9uZykKKyAgICB7CisgICAgICAgIG1fbWluLmFzVUxv
bmcgPSBtaW47CisgICAgICAgIG1fbWF4LmFzVUxvbmcgPSBtYXg7CisgICAgICAgIG1fc3VwcG9y
dGVkID0gc3VwcG9ydGVkOworICAgIH0KKyAgICAKKyAgICBNZWRpYVN0cmVhbVNvdXJjZUNhcGFi
aWxpdHlSYW5nZSgpCisgICAgeworICAgICAgICBtX3R5cGUgPSBVbmRlZmluZWQ7CisgICAgICAg
IG1fbWluLmFzVUxvbmcgPSAwOworICAgICAgICBtX21heC5hc1VMb25nID0gMDsKKyAgICAgICAg
bV9zdXBwb3J0ZWQgPSBmYWxzZTsKKyAgICB9CisgICAgCisgICAgZW51bSBUeXBlIHsgVW5kZWZp
bmVkLCBGbG9hdCwgVUxvbmcgfTsKKyAgICAKKyAgICB1bmlvbiBWYWx1ZVVuaW9uIHsKKyAgICAg
ICAgdW5zaWduZWQgbG9uZyBhc1VMb25nOworICAgICAgICBmbG9hdCBhc0Zsb2F0OworICAgIH07
CisgICAgCisgICAgY29uc3QgVmFsdWVVbmlvbiYgbWluKCkgY29uc3QgeyByZXR1cm4gbV9taW47
IH0KKyAgICBjb25zdCBWYWx1ZVVuaW9uJiBtYXgoKSBjb25zdCB7IHJldHVybiBtX21heDsgfQor
ICAgIFR5cGUgdHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fdHlwZTsgfQorICAgIGJvb2wgc3VwcG9y
dGVkKCkgY29uc3QgeyByZXR1cm4gbV9zdXBwb3J0ZWQ7IH0KKyAgICAKK3ByaXZhdGU6CisgICAg
VmFsdWVVbmlvbiBtX21pbjsKKyAgICBWYWx1ZVVuaW9uIG1fbWF4OworICAgIFR5cGUgbV90eXBl
OworICAgIGJvb2wgbV9zdXBwb3J0ZWQ7Cit9OworCitjbGFzcyBNZWRpYVN0cmVhbVNvdXJjZUNh
cGFiaWxpdGllcyA6IHB1YmxpYyBSZWZDb3VudGVkPE1lZGlhU3RyZWFtU291cmNlQ2FwYWJpbGl0
aWVzPiB7CitwdWJsaWM6CisgICAgc3RhdGljIFBhc3NSZWZQdHI8TWVkaWFTdHJlYW1Tb3VyY2VD
YXBhYmlsaXRpZXM+IGNyZWF0ZSgpCisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3
IE1lZGlhU3RyZWFtU291cmNlQ2FwYWJpbGl0aWVzKCkpOworICAgIH0KKworICAgIH5NZWRpYVN0
cmVhbVNvdXJjZUNhcGFiaWxpdGllcygpIHsgfQorCisgICAgY29uc3QgVmVjdG9yPE1lZGlhU3Ry
ZWFtU291cmNlU3RhdGVzOjpTb3VyY2VUeXBlPiYgc291cmNlVHlwZXMoKSB7IHJldHVybiBtX3Nv
dXJjZVR5cGU7IH0KKyAgICB2b2lkIGFkZFNvdXJjZVR5cGUoTWVkaWFTdHJlYW1Tb3VyY2VTdGF0
ZXM6OlNvdXJjZVR5cGUgc291cmNlVHlwZSkKKyAgICB7CisgICAgICAgIGlmIChzb3VyY2VUeXBl
ID09IE1lZGlhU3RyZWFtU291cmNlU3RhdGVzOjpDYW1lcmEpCisgICAgICAgICAgICBtX3ZpZGVv
U291cmNlID0gdHJ1ZTsKKyAgICAgICAgbV9zb3VyY2VUeXBlLmFwcGVuZChzb3VyY2VUeXBlKTsK
KyAgICB9CisKKyAgICBjb25zdCBWZWN0b3I8QXRvbWljU3RyaW5nPiYgc291cmNlSWQoKSB7IHJl
dHVybiBtX3NvdXJjZUlkOyB9CisgICAgdm9pZCBzZXRTb3VyY2VJZChjb25zdCBBdG9taWNTdHJp
bmcmIGlkKSAgeyBtX3NvdXJjZUlkLnJlc2VydmVDYXBhY2l0eSgxKTsgbV9zb3VyY2VJZC5pbnNl
cnQoMCwgaWQpOyB9CisKKyAgICBjb25zdCBWZWN0b3I8TWVkaWFTdHJlYW1Tb3VyY2VTdGF0ZXM6
OlZpZGVvRmFjaW5nTW9kZT4mIGZhY2luZ01vZGVzKCkgeyByZXR1cm4gbV9mYWNpbmdNb2RlOyB9
CisgICAgdm9pZCBhZGRGYWNpbmdNb2RlKE1lZGlhU3RyZWFtU291cmNlU3RhdGVzOjpWaWRlb0Zh
Y2luZ01vZGUgbW9kZSkgeyBtX2ZhY2luZ01vZGUuYXBwZW5kKG1vZGUpOyB9CisKKyAgICBjb25z
dCBNZWRpYVN0cmVhbVNvdXJjZUNhcGFiaWxpdHlSYW5nZSYgd2lkdGgoKSB7IHJldHVybiBtX3dp
ZHRoOyB9CisgICAgdm9pZCBzZXRXaWR0aFJhbmdlKGNvbnN0IE1lZGlhU3RyZWFtU291cmNlQ2Fw
YWJpbGl0eVJhbmdlJiB3aWR0aCkgeyBtX3dpZHRoID0gd2lkdGg7IH0KKworICAgIGNvbnN0IE1l
ZGlhU3RyZWFtU291cmNlQ2FwYWJpbGl0eVJhbmdlJiBoZWlnaHQoKSB7IHJldHVybiBtX2hlaWdo
dDsgfQorICAgIHZvaWQgc2V0SGVpZ2h0UmFuZ2UoY29uc3QgTWVkaWFTdHJlYW1Tb3VyY2VDYXBh
YmlsaXR5UmFuZ2UmIGhlaWdodCkgeyBtX2hlaWdodCA9IGhlaWdodDsgfQorCisgICAgY29uc3Qg
TWVkaWFTdHJlYW1Tb3VyY2VDYXBhYmlsaXR5UmFuZ2UmIGZyYW1lUmF0ZSgpIHsgcmV0dXJuIG1f
ZnJhbWVSYXRlOyB9CisgICAgdm9pZCBzZXRGcmFtZVJhdGVSYW5nZShjb25zdCBNZWRpYVN0cmVh
bVNvdXJjZUNhcGFiaWxpdHlSYW5nZSYgZnJhbWVSYXRlKSB7IG1fZnJhbWVSYXRlID0gZnJhbWVS
YXRlOyB9CisKKyAgICBjb25zdCBNZWRpYVN0cmVhbVNvdXJjZUNhcGFiaWxpdHlSYW5nZSYgYXNw
ZWN0UmF0aW8oKSB7IHJldHVybiBtX2FzcGVjdFJhdGlvOyB9CisgICAgdm9pZCBzZXRBc3BlY3RS
YXRpb1JhbmdlKGNvbnN0IE1lZGlhU3RyZWFtU291cmNlQ2FwYWJpbGl0eVJhbmdlJiBhc3BlY3RS
YXRpbykgeyBtX2FzcGVjdFJhdGlvID0gYXNwZWN0UmF0aW87IH0KKworICAgIGNvbnN0IE1lZGlh
U3RyZWFtU291cmNlQ2FwYWJpbGl0eVJhbmdlJiB2b2x1bWUoKSB7IHJldHVybiBtX3ZvbHVtZTsg
fQorICAgIHZvaWQgc2V0Vm9sdW1lUmFuZ2UoY29uc3QgTWVkaWFTdHJlYW1Tb3VyY2VDYXBhYmls
aXR5UmFuZ2UmIHZvbHVtZSkgeyBtX3ZvbHVtZSA9IHZvbHVtZTsgfQorCisgICAgYm9vbCBoYXNW
aWRlb1NvdXJjZSgpIHsgcmV0dXJuIG1fdmlkZW9Tb3VyY2U7IH0KKyAgICB2b2lkIHNldEhhc1Zp
ZGVvU291cmNlKGJvb2wgaXNWaWRlbykgeyBtX3ZpZGVvU291cmNlID0gaXNWaWRlbzs7IH0KKwor
cHJpdmF0ZToKKyAgICBNZWRpYVN0cmVhbVNvdXJjZUNhcGFiaWxpdGllcygpCisgICAgICAgIDog
bV92aWRlb1NvdXJjZShmYWxzZSkKKyAgICB7CisgICAgfQorCisgICAgVmVjdG9yPEF0b21pY1N0
cmluZz4gbV9zb3VyY2VJZDsKKyAgICBWZWN0b3I8TWVkaWFTdHJlYW1Tb3VyY2VTdGF0ZXM6OlNv
dXJjZVR5cGU+IG1fc291cmNlVHlwZTsKKyAgICBWZWN0b3I8TWVkaWFTdHJlYW1Tb3VyY2VTdGF0
ZXM6OlZpZGVvRmFjaW5nTW9kZT4gbV9mYWNpbmdNb2RlOworCisgICAgTWVkaWFTdHJlYW1Tb3Vy
Y2VDYXBhYmlsaXR5UmFuZ2UgbV93aWR0aDsKKyAgICBNZWRpYVN0cmVhbVNvdXJjZUNhcGFiaWxp
dHlSYW5nZSBtX2hlaWdodDsKKyAgICBNZWRpYVN0cmVhbVNvdXJjZUNhcGFiaWxpdHlSYW5nZSBt
X2ZyYW1lUmF0ZTsKKyAgICBNZWRpYVN0cmVhbVNvdXJjZUNhcGFiaWxpdHlSYW5nZSBtX2FzcGVj
dFJhdGlvOworICAgIE1lZGlhU3RyZWFtU291cmNlQ2FwYWJpbGl0eVJhbmdlIG1fdm9sdW1lOwor
CisgICAgYm9vbCBtX3ZpZGVvU291cmNlOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQor
CisjZW5kaWYgLy8gTWVkaWFTdHJlYW1Tb3VyY2VDYXBhYmlsaXRpZXNfaAorCisjZW5kaWYKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2JsYWNrYmVycnkvTWVkaWFT
dHJlYW1DZW50ZXJCbGFja0JlcnJ5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tZWRpYXN0cmVhbS9ibGFja2JlcnJ5L01lZGlhU3RyZWFtQ2VudGVyQmxhY2tCZXJy
eS5jcHAJKHJldmlzaW9uIDE1NzAxNikKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlh
c3RyZWFtL2JsYWNrYmVycnkvTWVkaWFTdHJlYW1DZW50ZXJCbGFja0JlcnJ5LmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMzUsOCArMzUsMTAgQEAKIAogI2luY2x1ZGUgIk1lZGlhU3RyZWFtQ2VudGVy
QmxhY2tCZXJyeS5oIgogCisjaW5jbHVkZSAiTWVkaWFTdHJlYW1DcmVhdGlvbkNsaWVudC5oIgog
I2luY2x1ZGUgIk1lZGlhU3RyZWFtRGVzY3JpcHRvci5oIgotI2luY2x1ZGUgIk1lZGlhU3RyZWFt
U291cmNlc1F1ZXJ5Q2xpZW50LmgiCisjaW5jbHVkZSAiTWVkaWFTdHJlYW1UcmFja1NvdXJjZXNS
ZXF1ZXN0Q2xpZW50LmgiCisjaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKICNpbmNsdWRlIDx3
dGYvTWFpblRocmVhZC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC03MiwzMyArNzQsNiBA
QCBib29sIE1lZGlhU3RyZWFtQ2VudGVyQmxhY2tCZXJyeTo6Z2V0TWVkCiAgICAgcmV0dXJuIGZh
bHNlOwogfQogCi12b2lkIE1lZGlhU3RyZWFtQ2VudGVyQmxhY2tCZXJyeTo6ZGlkU2V0TWVkaWFT
dHJlYW1UcmFja0VuYWJsZWQoTWVkaWFTdHJlYW1Tb3VyY2UqKQotewotICAgIG5vdEltcGxlbWVu
dGVkKCk7Ci19Ci0KLWJvb2wgTWVkaWFTdHJlYW1DZW50ZXJCbGFja0JlcnJ5OjpkaWRBZGRNZWRp
YVN0cmVhbVRyYWNrKE1lZGlhU3RyZWFtU291cmNlKikKLXsKLSAgICBub3RJbXBsZW1lbnRlZCgp
OwotICAgIHJldHVybiBmYWxzZTsKLX0KLQotYm9vbCBNZWRpYVN0cmVhbUNlbnRlckJsYWNrQmVy
cnk6OmRpZFJlbW92ZU1lZGlhU3RyZWFtVHJhY2soTWVkaWFTdHJlYW1Tb3VyY2UqKQotewotICAg
IG5vdEltcGxlbWVudGVkKCk7Ci0gICAgcmV0dXJuIGZhbHNlOwotfQotCi12b2lkIE1lZGlhU3Ry
ZWFtQ2VudGVyQmxhY2tCZXJyeTo6ZGlkU3RvcExvY2FsTWVkaWFTdHJlYW0oTWVkaWFTdHJlYW1E
ZXNjcmlwdG9yKiBzdHJlYW0pCi17Ci0gICAgZW5kTG9jYWxNZWRpYVN0cmVhbShzdHJlYW0pOwot
fQotCi12b2lkIE1lZGlhU3RyZWFtQ2VudGVyQmxhY2tCZXJyeTo6ZGlkQ3JlYXRlTWVkaWFTdHJl
YW0oTWVkaWFTdHJlYW1EZXNjcmlwdG9yKikKLXsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotfQot
CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBFTkFCTEUoTUVESUFfU1RSRUFN
KQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vYmxhY2tiZXJyeS9N
ZWRpYVN0cmVhbUNlbnRlckJsYWNrQmVycnkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9ibGFja2JlcnJ5L01lZGlhU3RyZWFtQ2VudGVyQmxhY2tC
ZXJyeS5oCShyZXZpc2lvbiAxNTcwMTYpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRp
YXN0cmVhbS9ibGFja2JlcnJ5L01lZGlhU3RyZWFtQ2VudGVyQmxhY2tCZXJyeS5oCSh3b3JraW5n
IGNvcHkpCkBAIC01MCwxNSArNTAsOSBAQCBwdWJsaWM6CiAgICAgTWVkaWFTdHJlYW1DZW50ZXJC
bGFja0JlcnJ5KCk7CiAgICAgfk1lZGlhU3RyZWFtQ2VudGVyQmxhY2tCZXJyeSgpOwogCi0gICAg
Ly8gTWVkaWFTdHJlYW1DZW50ZXIKICAgICB2aXJ0dWFsIHZvaWQgdmFsaWRhdGVSZXF1ZXN0Q29u
c3RyYWludHMoUGFzc1JlZlB0cjxNZWRpYVN0cmVhbUNyZWF0aW9uQ2xpZW50PiwgUGFzc1JlZlB0
cjxNZWRpYUNvbnN0cmFpbnRzPiBhdWRpb0NvbnN0cmFpbnRzLCBQYXNzUmVmUHRyPE1lZGlhQ29u
c3RyYWludHM+IHZpZGVvQ29uc3RyYWludHMpOwogICAgIHZpcnR1YWwgdm9pZCBjcmVhdGVNZWRp
YVN0cmVhbShQYXNzUmVmUHRyPE1lZGlhU3RyZWFtQ3JlYXRpb25DbGllbnQ+LCBQYXNzUmVmUHRy
PE1lZGlhQ29uc3RyYWludHM+IGF1ZGlvQ29uc3RyYWludHMsIFBhc3NSZWZQdHI8TWVkaWFDb25z
dHJhaW50cz4gdmlkZW9Db25zdHJhaW50cyk7CiAgICAgdmlydHVhbCBib29sIGdldE1lZGlhU3Ry
ZWFtVHJhY2tTb3VyY2VzKFBhc3NSZWZQdHI8TWVkaWFTdHJlYW1UcmFja1NvdXJjZXNSZXF1ZXN0
Q2xpZW50PikgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCB2b2lkIGRpZFNldE1lZGlhU3RyZWFtVHJh
Y2tFbmFibGVkKE1lZGlhU3RyZWFtU291cmNlKikgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCBib29s
IGRpZEFkZE1lZGlhU3RyZWFtVHJhY2soTWVkaWFTdHJlYW1Tb3VyY2UqKSBPVkVSUklERTsKLSAg
ICB2aXJ0dWFsIGJvb2wgZGlkUmVtb3ZlTWVkaWFTdHJlYW1UcmFjayhNZWRpYVN0cmVhbVNvdXJj
ZSopIE9WRVJSSURFOwotICAgIHZpcnR1YWwgdm9pZCBkaWRTdG9wTG9jYWxNZWRpYVN0cmVhbShN
ZWRpYVN0cmVhbURlc2NyaXB0b3IqKSBPVkVSUklERTsKLSAgICB2aXJ0dWFsIHZvaWQgZGlkQ3Jl
YXRlTWVkaWFTdHJlYW0oTWVkaWFTdHJlYW1EZXNjcmlwdG9yKikgT1ZFUlJJREU7CiB9OwogCiB9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRp
YXN0cmVhbS9nc3RyZWFtZXIvTWVkaWFTdHJlYW1DZW50ZXJHU3RyZWFtZXIuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2dzdHJlYW1lci9NZWRp
YVN0cmVhbUNlbnRlckdTdHJlYW1lci5jcHAJKHJldmlzaW9uIDE1NzAxNikKKysrIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2dzdHJlYW1lci9NZWRpYVN0cmVhbUNlbnRlckdT
dHJlYW1lci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM1LDcgKzM1LDExIEBACiAKICNpbmNsdWRl
ICJNZWRpYVN0cmVhbUNlbnRlckdTdHJlYW1lci5oIgogCisjaW5jbHVkZSAiTWVkaWFTdHJlYW1D
cmVhdGlvbkNsaWVudC5oIgogI2luY2x1ZGUgIk1lZGlhU3RyZWFtRGVzY3JpcHRvci5oIgorI2lu
Y2x1ZGUgIk1lZGlhU3RyZWFtU291cmNlQ2FwYWJpbGl0aWVzLmgiCisjaW5jbHVkZSAiTWVkaWFT
dHJlYW1Tb3VyY2VTdGF0ZXMuaCIKKyNpbmNsdWRlICJNZWRpYVN0cmVhbVRyYWNrU291cmNlc1Jl
cXVlc3RDbGllbnQuaCIKICNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgogI2luY2x1ZGUgPHd0
Zi9NYWluVGhyZWFkLmg+CiAKQEAgLTcyLDMzICs3Niw2IEBAIGJvb2wgTWVkaWFTdHJlYW1DZW50
ZXJHU3RyZWFtZXI6OmdldE1lZGkKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLXZvaWQgTWVkaWFT
dHJlYW1DZW50ZXJHU3RyZWFtZXI6OmRpZFNldE1lZGlhU3RyZWFtVHJhY2tFbmFibGVkKE1lZGlh
U3RyZWFtU291cmNlKikKLXsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotfQotCi1ib29sIE1lZGlh
U3RyZWFtQ2VudGVyR1N0cmVhbWVyOjpkaWRBZGRNZWRpYVN0cmVhbVRyYWNrKE1lZGlhU3RyZWFt
U291cmNlKikKLXsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotICAgIHJldHVybiBmYWxzZTsKLX0K
LQotYm9vbCBNZWRpYVN0cmVhbUNlbnRlckdTdHJlYW1lcjo6ZGlkUmVtb3ZlTWVkaWFTdHJlYW1U
cmFjayhNZWRpYVN0cmVhbVNvdXJjZSopCi17Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLSAgICBy
ZXR1cm4gZmFsc2U7Ci19Ci0KLXZvaWQgTWVkaWFTdHJlYW1DZW50ZXJHU3RyZWFtZXI6OmRpZFN0
b3BMb2NhbE1lZGlhU3RyZWFtKE1lZGlhU3RyZWFtRGVzY3JpcHRvciogc3RyZWFtKQotewotICAg
IGVuZExvY2FsTWVkaWFTdHJlYW0oc3RyZWFtKTsKLX0KLQotdm9pZCBNZWRpYVN0cmVhbUNlbnRl
ckdTdHJlYW1lcjo6ZGlkQ3JlYXRlTWVkaWFTdHJlYW0oTWVkaWFTdHJlYW1EZXNjcmlwdG9yKikK
LXsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotfQotCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAK
ICNlbmRpZiAvLyBFTkFCTEUoTUVESUFfU1RSRUFNKQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWVkaWFzdHJlYW0vZ3N0cmVhbWVyL01lZGlhU3RyZWFtQ2VudGVyR1N0cmVhbWVyLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vZ3N0cmVh
bWVyL01lZGlhU3RyZWFtQ2VudGVyR1N0cmVhbWVyLmgJKHJldmlzaW9uIDE1NzAxNikKKysrIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2dzdHJlYW1lci9NZWRpYVN0cmVhbUNl
bnRlckdTdHJlYW1lci5oCSh3b3JraW5nIGNvcHkpCkBAIC01MCwxNSArNTAsOSBAQCBwdWJsaWM6
CiAgICAgTWVkaWFTdHJlYW1DZW50ZXJHU3RyZWFtZXIoKTsKICAgICB+TWVkaWFTdHJlYW1DZW50
ZXJHU3RyZWFtZXIoKTsKIAotICAgIC8vIE1lZGlhU3RyZWFtQ2VudGVyCiAgICAgdmlydHVhbCB2
b2lkIHZhbGlkYXRlUmVxdWVzdENvbnN0cmFpbnRzKFBhc3NSZWZQdHI8TWVkaWFTdHJlYW1DcmVh
dGlvbkNsaWVudD4sIFBhc3NSZWZQdHI8TWVkaWFDb25zdHJhaW50cz4gYXVkaW9Db25zdHJhaW50
cywgUGFzc1JlZlB0cjxNZWRpYUNvbnN0cmFpbnRzPiB2aWRlb0NvbnN0cmFpbnRzKTsKICAgICB2
aXJ0dWFsIHZvaWQgY3JlYXRlTWVkaWFTdHJlYW0oUGFzc1JlZlB0cjxNZWRpYVN0cmVhbUNyZWF0
aW9uQ2xpZW50PiwgUGFzc1JlZlB0cjxNZWRpYUNvbnN0cmFpbnRzPiBhdWRpb0NvbnN0cmFpbnRz
LCBQYXNzUmVmUHRyPE1lZGlhQ29uc3RyYWludHM+IHZpZGVvQ29uc3RyYWludHMpOwogICAgIHZp
cnR1YWwgYm9vbCBnZXRNZWRpYVN0cmVhbVRyYWNrU291cmNlcyhQYXNzUmVmUHRyPE1lZGlhU3Ry
ZWFtVHJhY2tTb3VyY2VzUmVxdWVzdENsaWVudD4pIE9WRVJSSURFOwotICAgIHZpcnR1YWwgdm9p
ZCBkaWRTZXRNZWRpYVN0cmVhbVRyYWNrRW5hYmxlZChNZWRpYVN0cmVhbVNvdXJjZSopIE9WRVJS
SURFOwotICAgIHZpcnR1YWwgYm9vbCBkaWRBZGRNZWRpYVN0cmVhbVRyYWNrKE1lZGlhU3RyZWFt
U291cmNlKikgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCBib29sIGRpZFJlbW92ZU1lZGlhU3RyZWFt
VHJhY2soTWVkaWFTdHJlYW1Tb3VyY2UqKSBPVkVSUklERTsKLSAgICB2aXJ0dWFsIHZvaWQgZGlk
U3RvcExvY2FsTWVkaWFTdHJlYW0oTWVkaWFTdHJlYW1EZXNjcmlwdG9yKikgT1ZFUlJJREU7Ci0g
ICAgdmlydHVhbCB2b2lkIGRpZENyZWF0ZU1lZGlhU3RyZWFtKE1lZGlhU3RyZWFtRGVzY3JpcHRv
ciopIE9WRVJSSURFOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL01lZGlhU3RyZWFtQ2VudGVyTWFjLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMv
TWVkaWFTdHJlYW1DZW50ZXJNYWMuY3BwCShyZXZpc2lvbiAxNTcwMTYpCisrKyBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvTWVkaWFTdHJlYW1DZW50ZXJNYWMuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC03MywzMyArNzMsNiBAQCBib29sIE1lZGlhU3RyZWFtQ2VudGVyTWFj
OjpnZXRNZWRpYVN0cmVhCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi12b2lkIE1lZGlhU3RyZWFt
Q2VudGVyTWFjOjpkaWRTZXRNZWRpYVN0cmVhbVRyYWNrRW5hYmxlZChNZWRpYVN0cmVhbVNvdXJj
ZSopCi17Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLX0KLQotYm9vbCBNZWRpYVN0cmVhbUNlbnRl
ck1hYzo6ZGlkQWRkTWVkaWFTdHJlYW1UcmFjayhNZWRpYVN0cmVhbVNvdXJjZSopCi17Ci0gICAg
bm90SW1wbGVtZW50ZWQoKTsKLSAgICByZXR1cm4gZmFsc2U7Ci19Ci0KLWJvb2wgTWVkaWFTdHJl
YW1DZW50ZXJNYWM6OmRpZFJlbW92ZU1lZGlhU3RyZWFtVHJhY2soTWVkaWFTdHJlYW1Tb3VyY2Uq
KQotewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci0gICAgcmV0dXJuIGZhbHNlOwotfQotCi12b2lk
IE1lZGlhU3RyZWFtQ2VudGVyTWFjOjpkaWRTdG9wTG9jYWxNZWRpYVN0cmVhbShNZWRpYVN0cmVh
bURlc2NyaXB0b3IqIHN0cmVhbSkKLXsKLSAgICBlbmRMb2NhbE1lZGlhU3RyZWFtKHN0cmVhbSk7
Ci19Ci0KLXZvaWQgTWVkaWFTdHJlYW1DZW50ZXJNYWM6OmRpZENyZWF0ZU1lZGlhU3RyZWFtKE1l
ZGlhU3RyZWFtRGVzY3JpcHRvciopCi17Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLX0KLQogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5BQkxFKE1FRElBX1NUUkVBTSkKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9NZWRpYVN0cmVhbUNl
bnRlck1hYy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3Ry
ZWFtL21hYy9NZWRpYVN0cmVhbUNlbnRlck1hYy5oCShyZXZpc2lvbiAxNTcwMTYpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvTWVkaWFTdHJlYW1DZW50ZXJNYWMu
aAkod29ya2luZyBjb3B5KQpAQCAtMzUsMjkgKzM1LDIwIEBACiAKICNpbmNsdWRlICJNZWRpYVN0
cmVhbUNlbnRlci5oIgogCisjaW5jbHVkZSAiTWVkaWFTdHJlYW1Tb3VyY2UuaCIKICNpbmNsdWRl
IDx3dGYvUGFzc1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIE1lZGlhU3RyZWFtRGVzY3JpcHRvcjsKLWNsYXNz
IE1lZGlhU3RyZWFtU291cmNlOwotY2xhc3MgTWVkaWFTdHJlYW1Tb3VyY2VzUXVlcnlDbGllbnQ7
Ci0KIGNsYXNzIE1lZGlhU3RyZWFtQ2VudGVyTWFjIEZJTkFMIDogcHVibGljIE1lZGlhU3RyZWFt
Q2VudGVyIHsKIHB1YmxpYzoKICAgICBNZWRpYVN0cmVhbUNlbnRlck1hYygpOwogICAgIH5NZWRp
YVN0cmVhbUNlbnRlck1hYygpOwogCi0gICAgLy8gTWVkaWFTdHJlYW1DZW50ZXIKICAgICB2aXJ0
dWFsIHZvaWQgdmFsaWRhdGVSZXF1ZXN0Q29uc3RyYWludHMoUGFzc1JlZlB0cjxNZWRpYVN0cmVh
bUNyZWF0aW9uQ2xpZW50PiwgUGFzc1JlZlB0cjxNZWRpYUNvbnN0cmFpbnRzPiBhdWRpb0NvbnN0
cmFpbnRzLCBQYXNzUmVmUHRyPE1lZGlhQ29uc3RyYWludHM+IHZpZGVvQ29uc3RyYWludHMpOwog
ICAgIHZpcnR1YWwgdm9pZCBjcmVhdGVNZWRpYVN0cmVhbShQYXNzUmVmUHRyPE1lZGlhU3RyZWFt
Q3JlYXRpb25DbGllbnQ+LCBQYXNzUmVmUHRyPE1lZGlhQ29uc3RyYWludHM+IGF1ZGlvQ29uc3Ry
YWludHMsIFBhc3NSZWZQdHI8TWVkaWFDb25zdHJhaW50cz4gdmlkZW9Db25zdHJhaW50cyk7CiAg
ICAgdmlydHVhbCBib29sIGdldE1lZGlhU3RyZWFtVHJhY2tTb3VyY2VzKFBhc3NSZWZQdHI8TWVk
aWFTdHJlYW1UcmFja1NvdXJjZXNSZXF1ZXN0Q2xpZW50PikgT1ZFUlJJREU7Ci0gICAgdmlydHVh
bCB2b2lkIGRpZFNldE1lZGlhU3RyZWFtVHJhY2tFbmFibGVkKE1lZGlhU3RyZWFtU291cmNlKikg
T1ZFUlJJREU7Ci0gICAgdmlydHVhbCBib29sIGRpZEFkZE1lZGlhU3RyZWFtVHJhY2soTWVkaWFT
dHJlYW1Tb3VyY2UqKSBPVkVSUklERTsKLSAgICB2aXJ0dWFsIGJvb2wgZGlkUmVtb3ZlTWVkaWFT
dHJlYW1UcmFjayhNZWRpYVN0cmVhbVNvdXJjZSopIE9WRVJSSURFOwotICAgIHZpcnR1YWwgdm9p
ZCBkaWRTdG9wTG9jYWxNZWRpYVN0cmVhbShNZWRpYVN0cmVhbURlc2NyaXB0b3IqKSBPVkVSUklE
RTsKLSAgICB2aXJ0dWFsIHZvaWQgZGlkQ3JlYXRlTWVkaWFTdHJlYW0oTWVkaWFTdHJlYW1EZXNj
cmlwdG9yKikgT1ZFUlJJREU7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01vY2tNZWRpYVN0cmVhbUNlbnRlci5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9Nb2NrTWVkaWFTdHJlYW1D
ZW50ZXIuY3BwCShyZXZpc2lvbiAxNTcwMTYpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
b2NrL01vY2tNZWRpYVN0cmVhbUNlbnRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMyLDEyICsz
Miw5NyBAQAogI2luY2x1ZGUgIk1lZGlhU3RyZWFtLmgiCiAjaW5jbHVkZSAiTWVkaWFTdHJlYW1D
cmVhdGlvbkNsaWVudC5oIgogI2luY2x1ZGUgIk1lZGlhU3RyZWFtRGVzY3JpcHRvci5oIgorI2lu
Y2x1ZGUgIk1lZGlhU3RyZWFtU291cmNlLmgiCisjaW5jbHVkZSAiTWVkaWFTdHJlYW1Tb3VyY2VD
YXBhYmlsaXRpZXMuaCIKICNpbmNsdWRlICJNZWRpYVN0cmVhbVRyYWNrLmgiCiAjaW5jbHVkZSAi
TWVkaWFTdHJlYW1UcmFja1NvdXJjZXNSZXF1ZXN0Q2xpZW50LmgiCi0jaW5jbHVkZSAiTm90SW1w
bGVtZW50ZWQuaCIKKyNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCitjbGFzcyBNb2NrU291cmNlIDogcHVibGljIE1lZGlhU3RyZWFtU291cmNl
IHsKK3B1YmxpYzoKKyAgICBNb2NrU291cmNlKGNvbnN0IEF0b21pY1N0cmluZyYgaWQsIGNvbnN0
IEF0b21pY1N0cmluZyYgbmFtZSwgTWVkaWFTdHJlYW1Tb3VyY2U6OlR5cGUgdHlwZSkKKyAgICAg
ICAgOiBNZWRpYVN0cmVhbVNvdXJjZShpZCwgdHlwZSwgbmFtZSkKKyAgICB7CisgICAgfQorCisg
ICAgdmlydHVhbCB+TW9ja1NvdXJjZSgpIHsgfQorCisgICAgdmlydHVhbCBQYXNzUmVmUHRyPE1l
ZGlhU3RyZWFtU291cmNlQ2FwYWJpbGl0aWVzPiBjYXBhYmlsaXRpZXMoKSBjb25zdCB7IHJldHVy
biBtX2NhcGFiaWxpdGllczsgfQorICAgIHZpcnR1YWwgY29uc3QgTWVkaWFTdHJlYW1Tb3VyY2VT
dGF0ZXMmIHN0YXRlcygpIHsgcmV0dXJuIG1fY3VycmVudFN0YXRlczsgfQorCisgICAgUmVmUHRy
PE1lZGlhU3RyZWFtU291cmNlQ2FwYWJpbGl0aWVzPiBtX2NhcGFiaWxpdGllczsKKyAgICBNZWRp
YVN0cmVhbVNvdXJjZVN0YXRlcyBtX2N1cnJlbnRTdGF0ZXM7Cit9OworICAgIAordHlwZWRlZiBI
YXNoTWFwPFN0cmluZywgUmVmUHRyPE1vY2tTb3VyY2U+PiBNb2NrU291cmNlTWFwOworCitzdGF0
aWMgTW9ja1NvdXJjZU1hcCYgbW9ja1NvdXJjZU1hcCgpCit7CisgICAgREVGSU5FX1NUQVRJQ19M
T0NBTChNb2NrU291cmNlTWFwLCBtb2NrU291cmNlTWFwLCAoKSk7CisgICAgcmV0dXJuIG1vY2tT
b3VyY2VNYXA7Cit9CisKK3N0YXRpYyBjb25zdCBBdG9taWNTdHJpbmcmIG1vY2tBdWRpb1NvdXJj
ZUlEKCkKK3sKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8QXRvbWljU3RyaW5nPiBpZCgiMjM5
YzI0YjEtMmIxNS0xMWUzLTgyMjQtMDgwMDIwMGM5YTY2IiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1
Y3RGcm9tTGl0ZXJhbCk7CisgICAgcmV0dXJuIGlkOworfQorCitzdGF0aWMgY29uc3QgQXRvbWlj
U3RyaW5nJiBtb2NrVmlkZW9Tb3VyY2VJRCgpCit7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVk
PEF0b21pY1N0cmluZz4gaWQoIjIzOWMyNGIwLTJiMTUtMTFlMy04MjI0LTA4MDAyMDBjOWE2NiIs
IEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOworICAgIHJldHVybiBpZDsKK30K
Kworc3RhdGljIHZvaWQgaW5pdGlhbGl6ZU1vY2tTb3VyY2VzKCkKK3sKKyAgICBSZWZQdHI8TW9j
a1NvdXJjZT4gbW9ja1NvdXJjZTEgPSBhZG9wdFJlZihuZXcgTW9ja1NvdXJjZShtb2NrVmlkZW9T
b3VyY2VJRCgpLCAiTW9jayB2aWRlbyBkZXZpY2UiLCBNZWRpYVN0cmVhbVNvdXJjZTo6VmlkZW8p
KTsKKyAgICBtb2NrU291cmNlMS0+bV9jYXBhYmlsaXRpZXMgPSBNZWRpYVN0cmVhbVNvdXJjZUNh
cGFiaWxpdGllczo6Y3JlYXRlKCk7CisgICAgbW9ja1NvdXJjZTEtPm1fY2FwYWJpbGl0aWVzLT5z
ZXRTb3VyY2VJZChtb2NrU291cmNlMS0+aWQoKSk7CisgICAgbW9ja1NvdXJjZTEtPm1fY2FwYWJp
bGl0aWVzLT5hZGRTb3VyY2VUeXBlKE1lZGlhU3RyZWFtU291cmNlU3RhdGVzOjpDYW1lcmEpOwor
ICAgIG1vY2tTb3VyY2UxLT5tX2NhcGFiaWxpdGllcy0+YWRkU291cmNlVHlwZShNZWRpYVN0cmVh
bVNvdXJjZVN0YXRlczo6TWljcm9waG9uZSk7CisgICAgbW9ja1NvdXJjZTEtPm1fY2FwYWJpbGl0
aWVzLT5hZGRGYWNpbmdNb2RlKE1lZGlhU3RyZWFtU291cmNlU3RhdGVzOjpVc2VyKTsKKyAgICBt
b2NrU291cmNlMS0+bV9jYXBhYmlsaXRpZXMtPmFkZEZhY2luZ01vZGUoTWVkaWFTdHJlYW1Tb3Vy
Y2VTdGF0ZXM6OkVudmlyb25tZW50KTsKKyAgICBtb2NrU291cmNlMS0+bV9jYXBhYmlsaXRpZXMt
PnNldFdpZHRoUmFuZ2UoTWVkaWFTdHJlYW1Tb3VyY2VDYXBhYmlsaXR5UmFuZ2UoMzIwVUwsIDE5
MjBVTCwgdHJ1ZSkpOworICAgIG1vY2tTb3VyY2UxLT5tX2NhcGFiaWxpdGllcy0+c2V0SGVpZ2h0
UmFuZ2UoTWVkaWFTdHJlYW1Tb3VyY2VDYXBhYmlsaXR5UmFuZ2UoMjQwVUwsIDEwODBVTCwgdHJ1
ZSkpOworICAgIG1vY2tTb3VyY2UxLT5tX2NhcGFiaWxpdGllcy0+c2V0RnJhbWVSYXRlUmFuZ2Uo
TWVkaWFTdHJlYW1Tb3VyY2VDYXBhYmlsaXR5UmFuZ2UoMTUuMGYsIDYwLjBmLCB0cnVlKSk7Cisg
ICAgbW9ja1NvdXJjZTEtPm1fY2FwYWJpbGl0aWVzLT5zZXRBc3BlY3RSYXRpb1JhbmdlKE1lZGlh
U3RyZWFtU291cmNlQ2FwYWJpbGl0eVJhbmdlKDQgLyAzLjBmLCAxNiAvIDkuMGYsIHRydWUpKTsK
KyAgICBtb2NrU291cmNlMS0+bV9jYXBhYmlsaXRpZXMtPnNldFZvbHVtZVJhbmdlKE1lZGlhU3Ry
ZWFtU291cmNlQ2FwYWJpbGl0eVJhbmdlKDEwVUwsIDkwVUwsIHRydWUpKTsKKworICAgIG1vY2tT
b3VyY2UxLT5tX2N1cnJlbnRTdGF0ZXMuc291cmNlVHlwZSA9IE1lZGlhU3RyZWFtU291cmNlU3Rh
dGVzOjpDYW1lcmE7CisgICAgbW9ja1NvdXJjZTEtPm1fY3VycmVudFN0YXRlcy5zb3VyY2VJZCA9
IG1vY2tTb3VyY2UxLT5pZCgpOworICAgIG1vY2tTb3VyY2UxLT5tX2N1cnJlbnRTdGF0ZXMuZmFj
aW5nTW9kZSA9IE1lZGlhU3RyZWFtU291cmNlU3RhdGVzOjpVc2VyOworICAgIG1vY2tTb3VyY2Ux
LT5tX2N1cnJlbnRTdGF0ZXMud2lkdGggPSAxOTIwOworICAgIG1vY2tTb3VyY2UxLT5tX2N1cnJl
bnRTdGF0ZXMuaGVpZ2h0ID0gMTA4MDsKKyAgICBtb2NrU291cmNlMS0+bV9jdXJyZW50U3RhdGVz
LmZyYW1lUmF0ZSA9IDMwOworICAgIG1vY2tTb3VyY2UxLT5tX2N1cnJlbnRTdGF0ZXMuYXNwZWN0
UmF0aW8gPSAxNiAvIDkuMGY7CisgICAgbW9ja1NvdXJjZTEtPm1fY3VycmVudFN0YXRlcy52b2x1
bWUgPSA3MDsKKyAgICBtb2NrU291cmNlTWFwKCkuYWRkKG1vY2tTb3VyY2UxLT5pZCgpLCBtb2Nr
U291cmNlMS5yZWxlYXNlKCkpOworCisgICAgUmVmUHRyPE1vY2tTb3VyY2U+IG1vY2tTb3VyY2Uy
ID0gYWRvcHRSZWYobmV3IE1vY2tTb3VyY2UobW9ja0F1ZGlvU291cmNlSUQoKSwgIk1vY2sgYXVk
aW8gZGV2aWNlIiwgTWVkaWFTdHJlYW1Tb3VyY2U6OkF1ZGlvKSk7CisgICAgbW9ja1NvdXJjZTIt
Pm1fY2FwYWJpbGl0aWVzID0gTWVkaWFTdHJlYW1Tb3VyY2VDYXBhYmlsaXRpZXM6OmNyZWF0ZSgp
OworICAgIG1vY2tTb3VyY2UyLT5tX2NhcGFiaWxpdGllcy0+c2V0U291cmNlSWQobW9ja1NvdXJj
ZTItPmlkKCkpOworICAgIG1vY2tTb3VyY2UyLT5tX2NhcGFiaWxpdGllcy0+c2V0Vm9sdW1lUmFu
Z2UoTWVkaWFTdHJlYW1Tb3VyY2VDYXBhYmlsaXR5UmFuZ2UoMFVMLCAxMDBVTCwgdHJ1ZSkpOwor
CisgICAgbW9ja1NvdXJjZTItPm1fY3VycmVudFN0YXRlcy5zb3VyY2VUeXBlID0gTWVkaWFTdHJl
YW1Tb3VyY2VTdGF0ZXM6Ok1pY3JvcGhvbmU7CisgICAgbW9ja1NvdXJjZTItPm1fY3VycmVudFN0
YXRlcy5zb3VyY2VJZCA9IG1vY2tTb3VyY2UyLT5pZCgpOworICAgIG1vY2tTb3VyY2UyLT5tX2N1
cnJlbnRTdGF0ZXMudm9sdW1lID0gNTA7CisgICAgbW9ja1NvdXJjZU1hcCgpLmFkZChtb2NrU291
cmNlMi0+aWQoKSwgbW9ja1NvdXJjZTIucmVsZWFzZSgpKTsKK30KKwordm9pZCBNb2NrTWVkaWFT
dHJlYW1DZW50ZXI6OnJlZ2lzdGVyTW9ja01lZGlhU3RyZWFtQ2VudGVyKCkKK3sKKyAgICBERUZJ
TkVfU1RBVElDX0xPQ0FMKE1vY2tNZWRpYVN0cmVhbUNlbnRlciwgY2VudGVyLCAoKSk7CisgICAg
c3RhdGljIGJvb2wgcmVnaXN0ZXJlZCA9IGZhbHNlOworICAgIGlmICghcmVnaXN0ZXJlZCkgewor
ICAgICAgICByZWdpc3RlcmVkID0gdHJ1ZTsKKyAgICAgICAgTWVkaWFTdHJlYW1DZW50ZXI6OnNl
dFNoYXJlZFN0cmVhbUNlbnRlcigmY2VudGVyKTsKKyAgICAgICAgaW5pdGlhbGl6ZU1vY2tTb3Vy
Y2VzKCk7CisgICAgfQorfQorCiBzdGF0aWMgYm9vbCBpc1N1cHBvcnRlZE1vY2tDb25zdHJhaW50
KGNvbnN0IFN0cmluZyYgY29uc3RyYWludE5hbWUpCiB7CiAgICAgcmV0dXJuIG5vdEZvdW5kICE9
IGNvbnN0cmFpbnROYW1lLmZpbmQoIl9hbmRfc3VwcG9ydGVkXyIpOwpAQCAtNzUsMTYgKzE2MCw2
IEBAIHN0YXRpYyBTdHJpbmcgdmVyaWZ5Q29uc3RyYWludHMoTWVkaWFDb24KICAgICByZXR1cm4g
ZW1wdHlTdHJpbmcoKTsKIH0KIAotdm9pZCBNb2NrTWVkaWFTdHJlYW1DZW50ZXI6OnJlZ2lzdGVy
TW9ja01lZGlhU3RyZWFtQ2VudGVyKCkKLXsKLSAgICBERUZJTkVfU1RBVElDX0xPQ0FMKE1vY2tN
ZWRpYVN0cmVhbUNlbnRlciwgY2VudGVyLCAoKSk7Ci0gICAgc3RhdGljIGJvb2wgcmVnaXN0ZXJl
ZCA9IGZhbHNlOwotICAgIGlmICghcmVnaXN0ZXJlZCkgewotICAgICAgICByZWdpc3RlcmVkID0g
dHJ1ZTsKLSAgICAgICAgTWVkaWFTdHJlYW1DZW50ZXI6OnNldFNoYXJlZFN0cmVhbUNlbnRlcigm
Y2VudGVyKTsKLSAgICB9Ci19Ci0KIHZvaWQgTW9ja01lZGlhU3RyZWFtQ2VudGVyOjp2YWxpZGF0
ZVJlcXVlc3RDb25zdHJhaW50cyhQYXNzUmVmUHRyPE1lZGlhU3RyZWFtQ3JlYXRpb25DbGllbnQ+
IHBycFF1ZXJ5Q2xpZW50LCBQYXNzUmVmUHRyPE1lZGlhQ29uc3RyYWludHM+IGF1ZGlvQ29uc3Ry
YWludHMsIFBhc3NSZWZQdHI8TWVkaWFDb25zdHJhaW50cz4gdmlkZW9Db25zdHJhaW50cykKIHsK
ICAgICBSZWZQdHI8TWVkaWFTdHJlYW1DcmVhdGlvbkNsaWVudD4gY2xpZW50ID0gcHJwUXVlcnlD
bGllbnQ7CkBAIC0xMTgsNiArMTkzLDcgQEAgdm9pZCBNb2NrTWVkaWFTdHJlYW1DZW50ZXI6OmNy
ZWF0ZU1lZGlhUwogICAgIAogICAgIFZlY3RvcjxSZWZQdHI8TWVkaWFTdHJlYW1Tb3VyY2U+PiBh
dWRpb1NvdXJjZXM7CiAgICAgVmVjdG9yPFJlZlB0cjxNZWRpYVN0cmVhbVNvdXJjZT4+IHZpZGVv
U291cmNlczsKKyAgICBNb2NrU291cmNlTWFwJiBtYXAgPSBtb2NrU291cmNlTWFwKCk7CiAKICAg
ICBpZiAoYXVkaW9Db25zdHJhaW50cykgewogICAgICAgICBTdHJpbmcgaW52YWxpZFF1ZXJ5ID0g
dmVyaWZ5Q29uc3RyYWludHMoYXVkaW9Db25zdHJhaW50cy5nZXQoKSk7CkBAIC0xMjcsNyArMjAz
LDExIEBAIHZvaWQgTW9ja01lZGlhU3RyZWFtQ2VudGVyOjpjcmVhdGVNZWRpYVMKICAgICAgICAg
fQogCiAgICAgICAgIGlmIChhdWRpb0NvbnN0cmFpbnRzKSB7Ci0gICAgICAgICAgICBSZWZQdHI8
TWVkaWFTdHJlYW1Tb3VyY2U+IGF1ZGlvU291cmNlID0gTWVkaWFTdHJlYW1Tb3VyY2U6OmNyZWF0
ZShlbXB0eVN0cmluZygpLCBNZWRpYVN0cmVhbVNvdXJjZTo6QXVkaW8sICJNb2NrIGF1ZGlvIGRl
dmljZSIpOworICAgICAgICAgICAgTW9ja1NvdXJjZU1hcDo6aXRlcmF0b3IgaXQgPSBtYXAuZmlu
ZChtb2NrQXVkaW9Tb3VyY2VJRCgpKTsKKyAgICAgICAgICAgIEFTU0VSVChpdCAhPSBtYXAuZW5k
KCkpOworCisgICAgICAgICAgICBSZWZQdHI8TWVkaWFTdHJlYW1Tb3VyY2U+IGF1ZGlvU291cmNl
ID0gaXQtPnZhbHVlOworICAgICAgICAgICAgYXVkaW9Tb3VyY2UtPnJlc2V0KCk7CiAgICAgICAg
ICAgICBhdWRpb1NvdXJjZS0+c2V0UmVhZHlTdGF0ZShNZWRpYVN0cmVhbVNvdXJjZTo6TGl2ZSk7
CiAgICAgICAgICAgICBhdWRpb1NvdXJjZXMuYXBwZW5kKGF1ZGlvU291cmNlLnJlbGVhc2UoKSk7
CiAgICAgICAgIH0KQEAgLTE0MSw3ICsyMjEsMTEgQEAgdm9pZCBNb2NrTWVkaWFTdHJlYW1DZW50
ZXI6OmNyZWF0ZU1lZGlhUwogICAgICAgICB9CiAKICAgICAgICAgaWYgKHZpZGVvQ29uc3RyYWlu
dHMpIHsKLSAgICAgICAgICAgIFJlZlB0cjxNZWRpYVN0cmVhbVNvdXJjZT4gdmlkZW9Tb3VyY2Ug
PSBNZWRpYVN0cmVhbVNvdXJjZTo6Y3JlYXRlKGVtcHR5U3RyaW5nKCksIE1lZGlhU3RyZWFtU291
cmNlOjpWaWRlbywgIk1vY2sgdmlkZW8gZGV2aWNlIik7CisgICAgICAgICAgICBNb2NrU291cmNl
TWFwOjppdGVyYXRvciBpdCA9IG1hcC5maW5kKG1vY2tWaWRlb1NvdXJjZUlEKCkpOworICAgICAg
ICAgICAgQVNTRVJUKGl0ICE9IG1hcC5lbmQoKSk7CisKKyAgICAgICAgICAgIFJlZlB0cjxNZWRp
YVN0cmVhbVNvdXJjZT4gdmlkZW9Tb3VyY2UgPSBpdC0+dmFsdWU7CisgICAgICAgICAgICB2aWRl
b1NvdXJjZS0+cmVzZXQoKTsKICAgICAgICAgICAgIHZpZGVvU291cmNlLT5zZXRSZWFkeVN0YXRl
KE1lZGlhU3RyZWFtU291cmNlOjpMaXZlKTsKICAgICAgICAgICAgIHZpZGVvU291cmNlcy5hcHBl
bmQodmlkZW9Tb3VyY2UucmVsZWFzZSgpKTsKICAgICAgICAgfQpAQCAtMTUzLDM5ICsyMzcsMjAg
QEAgdm9pZCBNb2NrTWVkaWFTdHJlYW1DZW50ZXI6OmNyZWF0ZU1lZGlhUwogYm9vbCBNb2NrTWVk
aWFTdHJlYW1DZW50ZXI6OmdldE1lZGlhU3RyZWFtVHJhY2tTb3VyY2VzKFBhc3NSZWZQdHI8TWVk
aWFTdHJlYW1UcmFja1NvdXJjZXNSZXF1ZXN0Q2xpZW50PiBwcnBDbGllbnQpCiB7CiAgICAgUmVm
UHRyPE1lZGlhU3RyZWFtVHJhY2tTb3VyY2VzUmVxdWVzdENsaWVudD4gcmVxdWVzdENsaWVudCA9
IHBycENsaWVudDsKLSAgICBWZWN0b3I8UmVmUHRyPFRyYWNrU291cmNlSW5mbz4+IHNvdXJjZXMo
Mik7CisgICAgVmVjdG9yPFJlZlB0cjxUcmFja1NvdXJjZUluZm8+PiBzb3VyY2VzOwogCi0gICAg
c291cmNlc1swXSA9IFRyYWNrU291cmNlSW5mbzo6Y3JlYXRlKCJNb2NrX2F1ZGlvX2RldmljZV9J
RCIsIFRyYWNrU291cmNlSW5mbzo6QXVkaW8sICJNb2NrIGF1ZGlvIGRldmljZSIpOwotICAgIHNv
dXJjZXNbMV0gPSBUcmFja1NvdXJjZUluZm86OmNyZWF0ZSgiTW9ja192aWRlb19kZXZpY2VfSUQi
LCBUcmFja1NvdXJjZUluZm86OlZpZGVvLCAiTW9jayB2aWRlbyBkZXZpY2UiKTsKLQotICAgIHJl
cXVlc3RDbGllbnQtPmRpZENvbXBsZXRlUmVxdWVzdChzb3VyY2VzKTsKLSAgICByZXR1cm4gdHJ1
ZTsKLX0KKyAgICBNb2NrU291cmNlTWFwJiBtYXAgPSBtb2NrU291cmNlTWFwKCk7CisgICAgTW9j
a1NvdXJjZU1hcDo6aXRlcmF0b3IgZW5kID0gbWFwLmVuZCgpOworICAgIGZvciAoTW9ja1NvdXJj
ZU1hcDo6aXRlcmF0b3IgaXQgPSBtYXAuYmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KSB7CisgICAg
ICAgIE1vY2tTb3VyY2UqIHNvdXJjZSA9IGl0LT52YWx1ZS5nZXQoKTsKIAotdm9pZCBNb2NrTWVk
aWFTdHJlYW1DZW50ZXI6OmRpZFNldE1lZGlhU3RyZWFtVHJhY2tFbmFibGVkKE1lZGlhU3RyZWFt
U291cmNlKiBzb3VyY2UpCi17Ci0gICAgc291cmNlLT5zZXRSZWFkeVN0YXRlKE1lZGlhU3RyZWFt
U291cmNlOjpMaXZlKTsKLX0KLQotYm9vbCBNb2NrTWVkaWFTdHJlYW1DZW50ZXI6OmRpZEFkZE1l
ZGlhU3RyZWFtVHJhY2soTWVkaWFTdHJlYW1Tb3VyY2UqKQotewotICAgIHJldHVybiB0cnVlOwot
fQorICAgICAgICBzb3VyY2VzWzBdID0gVHJhY2tTb3VyY2VJbmZvOjpjcmVhdGUoc291cmNlLT5p
ZCgpLCBzb3VyY2UtPnR5cGUoKSA9PSBNZWRpYVN0cmVhbVNvdXJjZTo6VmlkZW8gPyBUcmFja1Nv
dXJjZUluZm86OlZpZGVvIDogVHJhY2tTb3VyY2VJbmZvOjpBdWRpbywgc291cmNlLT5uYW1lKCkp
OworICAgIH0KIAotYm9vbCBNb2NrTWVkaWFTdHJlYW1DZW50ZXI6OmRpZFJlbW92ZU1lZGlhU3Ry
ZWFtVHJhY2soTWVkaWFTdHJlYW1Tb3VyY2UqKQoteworICAgIHJlcXVlc3RDbGllbnQtPmRpZENv
bXBsZXRlUmVxdWVzdChzb3VyY2VzKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotdm9pZCBNb2Nr
TWVkaWFTdHJlYW1DZW50ZXI6OmRpZFN0b3BMb2NhbE1lZGlhU3RyZWFtKE1lZGlhU3RyZWFtRGVz
Y3JpcHRvciogc3RyZWFtKQotewotICAgIGVuZExvY2FsTWVkaWFTdHJlYW0oc3RyZWFtKTsKLX0K
LQotdm9pZCBNb2NrTWVkaWFTdHJlYW1DZW50ZXI6OmRpZENyZWF0ZU1lZGlhU3RyZWFtKE1lZGlh
U3RyZWFtRGVzY3JpcHRvciopCi17Ci19Ci0KIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2Vu
ZGlmIC8vIEVOQUJMRShNRURJQV9TVFJFQU0pCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tb2NrL01vY2tNZWRpYVN0cmVhbUNlbnRlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21vY2svTW9ja01lZGlhU3RyZWFtQ2VudGVyLmgJKHJldmlzaW9uIDE1NzAx
NikKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTW9ja01lZGlhU3RyZWFtQ2VudGVy
LmgJKHdvcmtpbmcgY29weSkKQEAgLTQwLDExICs0MCw2IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFs
IHZvaWQgdmFsaWRhdGVSZXF1ZXN0Q29uc3RyYWludHMoUGFzc1JlZlB0cjxNZWRpYVN0cmVhbUNy
ZWF0aW9uQ2xpZW50PiwgUGFzc1JlZlB0cjxNZWRpYUNvbnN0cmFpbnRzPiBhdWRpb0NvbnN0cmFp
bnRzLCBQYXNzUmVmUHRyPE1lZGlhQ29uc3RyYWludHM+IHZpZGVvQ29uc3RyYWludHMpOwogICAg
IHZpcnR1YWwgdm9pZCBjcmVhdGVNZWRpYVN0cmVhbShQYXNzUmVmUHRyPE1lZGlhU3RyZWFtQ3Jl
YXRpb25DbGllbnQ+LCBQYXNzUmVmUHRyPE1lZGlhQ29uc3RyYWludHM+IGF1ZGlvQ29uc3RyYWlu
dHMsIFBhc3NSZWZQdHI8TWVkaWFDb25zdHJhaW50cz4gdmlkZW9Db25zdHJhaW50cyk7CiAgICAg
dmlydHVhbCBib29sIGdldE1lZGlhU3RyZWFtVHJhY2tTb3VyY2VzKFBhc3NSZWZQdHI8TWVkaWFT
dHJlYW1UcmFja1NvdXJjZXNSZXF1ZXN0Q2xpZW50PikgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCB2
b2lkIGRpZFNldE1lZGlhU3RyZWFtVHJhY2tFbmFibGVkKE1lZGlhU3RyZWFtU291cmNlKikgT1ZF
UlJJREU7Ci0gICAgdmlydHVhbCBib29sIGRpZEFkZE1lZGlhU3RyZWFtVHJhY2soTWVkaWFTdHJl
YW1Tb3VyY2UqKSBPVkVSUklERTsKLSAgICB2aXJ0dWFsIGJvb2wgZGlkUmVtb3ZlTWVkaWFTdHJl
YW1UcmFjayhNZWRpYVN0cmVhbVNvdXJjZSopIE9WRVJSSURFOwotICAgIHZpcnR1YWwgdm9pZCBk
aWRTdG9wTG9jYWxNZWRpYVN0cmVhbShNZWRpYVN0cmVhbURlc2NyaXB0b3IqKSBPVkVSUklERTsK
LSAgICB2aXJ0dWFsIHZvaWQgZGlkQ3JlYXRlTWVkaWFTdHJlYW0oTWVkaWFTdHJlYW1EZXNjcmlw
dG9yKikgT1ZFUlJJREU7CiAKIHByaXZhdGU6CiAgICAgTW9ja01lZGlhU3RyZWFtQ2VudGVyKCkg
eyB9CkluZGV4OiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAxNTcwMTYpCisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJ
KHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxMiBAQAorMjAxMy0xMC0wNiAgRXJpYyBDYXJsc29u
ICA8ZXJpYy5jYXJsc29uQGFwcGxlLmNvbT4KKworICAgICAgICBbTWVkaWFTdHJlYW0gQVBJXSB1
cGRhdGUgTWVkaWFTdHJlYW1UcmFjayBvYmplY3QgdG8gbWF0Y2ggc3BlYworICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTIxOTQwCisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBmYXN0L21lZGlhc3RyZWFtL01l
ZGlhU3RyZWFtVHJhY2suaHRtbDoKKwogMjAxMy0xMC0wNiAgRmlsaXAgUGl6bG8gIDxmcGl6bG9A
YXBwbGUuY29tPgogCiAgICAgICAgIFVuaWZpZWQgdGVzdCBpbmZyYXN0cnVjdHVyZSB2aWEgdGhl
IGpzYyBzaGVsbApJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9tZWRpYXN0cmVhbS9NZWRpYVN0cmVh
bVRyYWNrLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9tZWRpYXN0cmVhbS9N
ZWRpYVN0cmVhbVRyYWNrLmh0bWwJKHJldmlzaW9uIDE1NzAxNikKKysrIExheW91dFRlc3RzL2Zh
c3QvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1UcmFjay5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0x
LDc5ICsxLDE3MCBAQAogPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9JRVRGLy9EVEQgSFRNTC8v
RU4iPgogPGh0bWw+Ci08aGVhZD4KLTxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVz
dC1wcmUuanMiPjwvc2NyaXB0PgotPC9oZWFkPgotPGJvZHk+Ci08cCBpZD0iZGVzY3JpcHRpb24i
PjwvcD4KLTxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgotPHNjcmlwdD4KLWRlc2NyaXB0aW9uKCJU
ZXN0cyBNZWRpYVN0cmVhbVRyYWNrIGNhbGxiYWNrcy4iKTsKLQotLy8gTm90ZSB0aGF0IHRoZSBi
ZWxvdyBiZWhhdmlvdXIgZG9lc24ndCByZWZsZWN0IGhvdyBpdCB3b3JrcyBvdXRzaWRlIG9mIExh
eW91dFRlc3RzLgotLy8gVGhlIHVuZGVybHlpbmcgbW9jayBpcyBtb2RpZmllZCB0byB0cmlnZ2Vy
IHRoZSBldmVudHMgd2hlbiBjZXJ0YWluIGZ1bmN0aW9ucyBhcmUgY2FsbGVkLgotLy8gVGhpcyBt
b2RpZmllZCBiZWhhdmlvdXIgYWxsb3dzIHVzIHRvIHRlc3QgdGhlIE1lZGlhU3RyZWFtVHJhY2sg
Y2xhc3MgcHJvcGVybHkuCi0KLXZhciBzdHJlYW07Ci12YXIgdHJhY2s7Ci0KLWZ1bmN0aW9uIGVy
cm9yKCkgewotICAgIHRlc3RGYWlsZWQoJ1N0cmVhbSBnZW5lcmF0aW9uIGZhaWxlZC4nKTsKLSAg
ICBmaW5pc2hKU1Rlc3QoKTsKLX0KLQotZnVuY3Rpb24gZ2V0VXNlck1lZGlhKGNvbnN0cmFpbnRz
LCBjYWxsYmFjaykgewotICAgIHRyeSB7Ci0gICAgICAgIG5hdmlnYXRvci53ZWJraXRHZXRVc2Vy
TWVkaWEoY29uc3RyYWludHMsIGNhbGxiYWNrLCBlcnJvcik7Ci0gICAgfSBjYXRjaCAoZSkgewot
ICAgICAgICB0ZXN0RmFpbGVkKCd3ZWJraXRHZXRVc2VyTWVkaWEgdGhyZXcgZXhjZXB0aW9uIDon
ICsgZSk7Ci0gICAgICAgIGZpbmlzaEpTVGVzdCgpOwotICAgIH0KLX0KLQotZnVuY3Rpb24gb25U
cmFja0VuZGVkKCkgewotICAgIHRlc3RQYXNzZWQoJ1RyYWNrIG9uZW5kZWQgY2FsbGJhY2sgc3Vj
Y2VlZGVkLicpOwotCi0gICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCd0cmFjay5yZWFkeVN0YXRl
JywgJ2VuZGVkJyk7Ci0KLSAgICBmaW5pc2hKU1Rlc3QoKTsKLX0KLQotZnVuY3Rpb24gb25UcmFj
a1VubXV0ZSgpIHsKLSAgICB0ZXN0UGFzc2VkKCdUcmFjayBvbnVubXV0ZSBjYWxsYmFjayBzdWNj
ZWVkZWQuJyk7Ci0KLSAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoJ3RyYWNrLnJlYWR5U3RhdGUn
LCAnbGl2ZScpOwotCi0gICAgc3RyZWFtLnN0b3AoKTsKLX0KLQotZnVuY3Rpb24gb25UcmFja011
dGUoKSB7Ci0gICAgdGVzdFBhc3NlZCgnVHJhY2sgb25tdXRlIGNhbGxiYWNrIHN1Y2NlZWRlZC4n
KTsKLQotICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygndHJhY2sucmVhZHlTdGF0ZScsICdtdXRl
ZCcpOwotCi0gICAgdHJhY2suZW5hYmxlZCA9IHRydWU7Ci19Ci0KLWZ1bmN0aW9uIGdvdFN0cmVh
bShzKSB7Ci0gICAgdGVzdFBhc3NlZCgnZ2V0VXNlck1lZGlhIHN1Y2NlZWRlZC4nKTsKLQotICAg
IHN0cmVhbSA9IHM7Ci0gICAgdHJhY2sgPSBzdHJlYW0uZ2V0VmlkZW9UcmFja3MoKVswXTsKLQot
ICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygndHJhY2sucmVhZHlTdGF0ZScsICdsaXZlJyk7Ci0K
LSAgICB0cmFjay5vbnVubXV0ZSA9IG9uVHJhY2tVbm11dGU7Ci0gICAgdHJhY2sub25tdXRlID0g
b25UcmFja011dGU7Ci0gICAgdHJhY2sub25lbmRlZCA9IG9uVHJhY2tFbmRlZDsKLQotICAgIHRy
YWNrLmVuYWJsZWQgPSBmYWxzZTsKLX0KLQotZ2V0VXNlck1lZGlhKHthdWRpbzp0cnVlLCB2aWRl
bzp0cnVlfSwgZ290U3RyZWFtKTsKLQotd2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOwotd2lu
ZG93LnN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7Ci08L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIu
Li8uLi9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KLTwvYm9keT4KKyAgICA8
aGVhZD4KKyAgICAgICAgPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXByZS5q
cyI+PC9zY3JpcHQ+CisgICAgICAgIDxzY3JpcHQ+CisgICAgICAgICAgICB2YXIgbWVkaWFTdHJl
YW07CisgICAgICAgICAgICB2YXIgdmlkZW9UcmFjazsKKyAgICAgICAgICAgIHZhciB2aWRlb1Ry
YWNrMjsKKyAgICAgICAgICAgIHZhciBhdWRpb1RyYWNrOworICAgICAgICAgICAgCisgICAgICAg
ICAgICBmdW5jdGlvbiBlcnJvcigpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgdGVz
dEZhaWxlZCgnU3RyZWFtIGdlbmVyYXRpb24gZmFpbGVkLicpOworICAgICAgICAgICAgICAgIGZp
bmlzaEpTVGVzdCgpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBmdW5jdGlvbiBnZXRV
c2VyTWVkaWEoY29uc3RyYWludHMsIGNhbGxiYWNrKQorICAgICAgICAgICAgeworICAgICAgICAg
ICAgICAgIHRyeSB7CisgICAgICAgICAgICAgICAgICAgIG5hdmlnYXRvci53ZWJraXRHZXRVc2Vy
TWVkaWEoY29uc3RyYWludHMsIGNhbGxiYWNrLCBlcnJvcik7CisgICAgICAgICAgICAgICAgfSBj
YXRjaCAoZSkgeworICAgICAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCd3ZWJraXRHZXRVc2Vy
TWVkaWEgdGhyZXcgZXhjZXB0aW9uIDonICsgZSk7CisgICAgICAgICAgICAgICAgICAgIGZpbmlz
aEpTVGVzdCgpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAg
IAorICAgICAgICAgICAgZnVuY3Rpb24gb25UcmFja0VuZGVkKCkKKyAgICAgICAgICAgIHsKKyAg
ICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCdUcmFjayBvbmVuZGVkIGNhbGxiYWNrIHN1Y2NlZWRl
ZC4nKTsKKyAgICAgICAgICAgICAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoJ3ZpZGVvVHJhY2su
cmVhZHlTdGF0ZScsICdlbmRlZCcpOworICAgICAgICAgICAgICAgIGRlYnVnKCIiKTsKKyAgICAg
ICAgICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAg
ZnVuY3Rpb24gb25UcmFja1N0YXJ0ZWQoKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAg
IHRlc3RQYXNzZWQoJ1RyYWNrIG9uc3RhcnRlZCBjYWxsYmFjayBzdWNjZWVkZWQuJyk7CisgICAg
ICAgICAgICAgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCd2aWRlb1RyYWNrLnJlYWR5U3RhdGUn
LCAnbGl2ZScpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBmdW5jdGlvbiBvblRyYWNr
T3ZlckNvbnN0cmFpbmVkKCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICB0ZXN0UGFz
c2VkKCdUcmFjayBvbm92ZXJjb25zdHJhaW5lZCBjYWxsYmFjayBzdWNjZWVkZWQuJyk7CisgICAg
ICAgICAgICAgICAgZmluaXNoSlNUZXN0KCk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAg
IGZ1bmN0aW9uIG9uVHJhY2tVbm11dGUoKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAg
IHRlc3RQYXNzZWQoJ1RyYWNrIG9udW5tdXRlIGNhbGxiYWNrIHN1Y2NlZWRlZC4nKTsKKyAgICAg
ICAgICAgICAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoJ3ZpZGVvVHJhY2sucmVhZHlTdGF0ZScs
ICdsaXZlJyk7CisgICAgICAgICAgICAgICAgdmlkZW9UcmFjay5zdG9wKCk7CisgICAgICAgICAg
ICB9CisKKyAgICAgICAgICAgIGZ1bmN0aW9uIG9uVHJhY2tNdXRlKCkKKyAgICAgICAgICAgIHsK
KyAgICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCdUcmFjayBvbm11dGUgY2FsbGJhY2sgc3VjY2Vl
ZGVkLicpOworICAgICAgICAgICAgICAgIHNob3VsZEJlRXF1YWwoJ3ZpZGVvVHJhY2subXV0ZWQn
LCB0cnVlKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgZnVuY3Rpb24gbG9nQ2FwYWJp
bGl0eVJhbmdlKG5hbWUsIHJhbmdlKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGRl
YnVnKCIgICIgKyBuYW1lKTsKKyAgICAgICAgICAgICAgICBkZWJ1ZygiICAgbWluIDogIiArIHJh
bmdlLm1pbik7CisgICAgICAgICAgICAgICAgZGVidWcoIiAgIG1heCA6ICIgKyByYW5nZS5tYXgp
OworICAgICAgICAgICAgICAgIGRlYnVnKCIgICBzdXBwb3J0ZWQgOiAiICsgcmFuZ2Uuc3VwcG9y
dGVkKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgZnVuY3Rpb24gbG9nQ2FwYWJpbGl0
eUxpc3QobmFtZSwgbGlzdCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBkZWJ1Zygi
ICAiICsgbmFtZSk7CisgICAgICAgICAgICAgICAgZm9yIChpID0gMDsgaSA8IGxpc3QubGVuZ3Ro
OyBpKyspCisgICAgICAgICAgICAgICAgZGVidWcoIiAgICAiICsgaSArICIgOiAiICsgbGlzdFtp
XSk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGZ1bmN0aW9uIGNoZWNrQ2FwYWJpbGl0
aWVzKHRyYWNrKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGRlYnVnKCJjaGVja2lu
ZyB0cmFjay5jYXBhYmlsaXRpZXMoKSIpOworICAgICAgICAgICAgICAgIGNhcGFiaWxpdGllcyA9
IHRyYWNrLmNhcGFiaWxpdGllcygpOworICAgICAgICAgICAgICAgIGxvZ0NhcGFiaWxpdHlMaXN0
KCJzb3VyY2VJZCIsIGNhcGFiaWxpdGllcy5zb3VyY2VJZCk7CisgICAgICAgICAgICAgICAgaWYg
KHRyYWNrLmtpbmQgPT0gInZpZGVvIikgeworICAgICAgICAgICAgICAgICAgICBsb2dDYXBhYmls
aXR5TGlzdCgic291cmNlVHlwZSIsIGNhcGFiaWxpdGllcy5zb3VyY2VUeXBlKTsKKyAgICAgICAg
ICAgICAgICAgICAgbG9nQ2FwYWJpbGl0eVJhbmdlKCJ3aWR0aCIsIGNhcGFiaWxpdGllcy53aWR0
aCk7CisgICAgICAgICAgICAgICAgICAgIGxvZ0NhcGFiaWxpdHlSYW5nZSgiaGVpZ2h0IiwgY2Fw
YWJpbGl0aWVzLmhlaWdodCk7CisgICAgICAgICAgICAgICAgICAgIGxvZ0NhcGFiaWxpdHlSYW5n
ZSgiZnJhbWVSYXRlIiwgY2FwYWJpbGl0aWVzLmZyYW1lUmF0ZSk7CisgICAgICAgICAgICAgICAg
ICAgIGxvZ0NhcGFiaWxpdHlSYW5nZSgiYXNwZWN0UmF0aW8iLCBjYXBhYmlsaXRpZXMuYXNwZWN0
UmF0aW8pOworICAgICAgICAgICAgICAgICAgICBsb2dDYXBhYmlsaXR5TGlzdCgiZmFjaW5nTW9k
ZSIsIGNhcGFiaWxpdGllcy5mYWNpbmdNb2RlKTsKKyAgICAgICAgICAgICAgICB9IGVsc2UKKyAg
ICAgICAgICAgICAgICAgICAgbG9nQ2FwYWJpbGl0eVJhbmdlKCJ2b2x1bWUiLCBjYXBhYmlsaXRp
ZXMudm9sdW1lKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgZnVuY3Rpb24gY2hlY2tT
dGF0ZXModHJhY2spCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgZGVidWcoImNoZWNr
aW5nIHRyYWNrLnN0YXRlcygpIik7CisgICAgICAgICAgICAgICAgY2FwYWJpbGl0aWVzID0gdHJh
Y2suY2FwYWJpbGl0aWVzKCk7CisgICAgICAgICAgICAgICAgc3RhdGVzID0gdHJhY2suc3RhdGVz
KCk7CisgICAgICAgICAgICAgICAgc2hvdWxkQmUoJ3N0YXRlcy5zb3VyY2VJZCcsICdjYXBhYmls
aXRpZXMuc291cmNlSWRbMF0nKTsKKyAgICAgICAgICAgICAgICBpZiAodHJhY2sua2luZCA9PSAi
dmlkZW8iKSB7CisgICAgICAgICAgICAgICAgICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygnc3Rh
dGVzLnNvdXJjZVR5cGUnLCAnY2FtZXJhJyk7CisgICAgICAgICAgICAgICAgICAgIGRlYnVnKCIg
IHdpZHRoIDogIiArIHN0YXRlcy53aWR0aCk7CisgICAgICAgICAgICAgICAgICAgIGRlYnVnKCIg
IGhlaWdodCA6ICIgKyBzdGF0ZXMuaGVpZ2h0KTsKKyAgICAgICAgICAgICAgICAgICAgZGVidWco
IiAgZnJhbWVSYXRlIDogIiArIHN0YXRlcy5mcmFtZVJhdGUpOworICAgICAgICAgICAgICAgICAg
ICBkZWJ1ZygiICBhc3BlY3RSYXRpbyA6ICIgKyBzdGF0ZXMuYXNwZWN0UmF0aW8pOworICAgICAg
ICAgICAgICAgICAgICBkZWJ1ZygiICBmYWNpbmdNb2RlIDogIiArIHN0YXRlcy5mYWNpbmdNb2Rl
KTsKKyAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICBzaG91bGRC
ZUVxdWFsVG9TdHJpbmcoJ3N0YXRlcy5zb3VyY2VUeXBlJywgJ21pY3JvcGhvbmUnKTsKKyAgICAg
ICAgICAgICAgICAgICAgZGVidWcoIiAgdm9sdW1lIDogIiArIHN0YXRlcy52b2x1bWUpOworICAg
ICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIAorICAgICAgICAgICAg
ZnVuY3Rpb24gY2hlY2tUcmFjayh0KQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHRy
YWNrID0gdDsKKyAgICAgICAgICAgICAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoJ3RyYWNrLnJl
YWR5U3RhdGUnLCAnbGl2ZScpOworICAgICAgICAgICAgICAgIGNoZWNrQ2FwYWJpbGl0aWVzKHRy
YWNrKTsKKyAgICAgICAgICAgICAgICBjaGVja1N0YXRlcyh0cmFjayk7CisgICAgICAgICAgICB9
CisKKyAgICAgICAgICAgIGZ1bmN0aW9uIGdvdFN0cmVhbShzdHJlYW0pCisgICAgICAgICAgICB7
CisgICAgICAgICAgICAgICAgbWVkaWFTdHJlYW0gPSBzdHJlYW07CisgICAgICAgICAgICAgICAg
dGVzdFBhc3NlZCgnZ2V0VXNlck1lZGlhIHN1Y2NlZWRlZC4nKTsKKyAgICAgICAgICAgIAorICAg
ICAgICAgICAgICAgIGRlYnVnKCIiKTsKKyAgICAgICAgICAgICAgICBldmFsQW5kTG9nKCJ2aWRl
b1RyYWNrID0gbWVkaWFTdHJlYW0uZ2V0VmlkZW9UcmFja3MoKVswXSIpOworICAgICAgICAgICAg
ICAgIGNoZWNrVHJhY2sodmlkZW9UcmFjayk7CisKKyAgICAgICAgICAgICAgICBkZWJ1ZygiIik7
CisgICAgICAgICAgICAgICAgZXZhbEFuZExvZygiYXVkaW9UcmFjayA9IG1lZGlhU3RyZWFtLmdl
dEF1ZGlvVHJhY2tzKClbMF0iKTsKKyAgICAgICAgICAgICAgICBjaGVja1RyYWNrKGF1ZGlvVHJh
Y2spOworCisgICAgICAgICAgICAgICAgdmlkZW9UcmFjay5vbm11dGUgPSBvblRyYWNrTXV0ZTsK
KyAgICAgICAgICAgICAgICB2aWRlb1RyYWNrLm9udW5tdXRlID0gb25UcmFja1VubXV0ZTsKKyAg
ICAgICAgICAgICAgICB2aWRlb1RyYWNrLm9uZW5kZWQgPSBvblRyYWNrRW5kZWQ7CisgICAgICAg
ICAgICAgICAgdmlkZW9UcmFjay5vbnN0YXJ0ZWQgPSBvblRyYWNrU3RhcnRlZDsKKyAgICAgICAg
ICAgICAgICB2aWRlb1RyYWNrLm9ub3ZlcmNvbnN0cmFpbmVkID0gb25UcmFja092ZXJDb25zdHJh
aW5lZDsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIGRlYnVnKCIiKTsKKyAgICAgICAg
ICAgICAgICBldmFsQW5kTG9nKCJ2aWRlb1RyYWNrMiA9IHZpZGVvVHJhY2suY2xvbmUoKSIpOwor
ICAgICAgICAgICAgICAgIGNoZWNrVHJhY2sodmlkZW9UcmFjazIpOworICAgICAgICAgICAgICAg
IHNob3VsZE5vdEJlKCd2aWRlb1RyYWNrLmlkJywgJ3ZpZGVvVHJhY2syLmlkJyk7CisgICAgICAg
ICAgICAgICAgc2hvdWxkQmUoJ3ZpZGVvVHJhY2sua2luZCcsICd2aWRlb1RyYWNrMi5raW5kJyk7
CisgICAgICAgICAgICAgICAgc2hvdWxkQmUoJ3ZpZGVvVHJhY2subGFiZWwnLCAndmlkZW9UcmFj
azIubGFiZWwnKTsKKyAgICAgICAgICAgICAgICBzaG91bGRCZSgndmlkZW9UcmFjay5tdXRlZCcs
ICd2aWRlb1RyYWNrMi5tdXRlZCcpOworICAgICAgICAgICAgICAgIHNob3VsZEJlKCd2aWRlb1Ry
YWNrLmVuYWJsZWQnLCAndmlkZW9UcmFjazIuZW5hYmxlZCcpOworICAgICAgICAgICAgICAgIHNo
b3VsZEJlKCd2aWRlb1RyYWNrLnJlYWR5U3RhdGUnLCAndmlkZW9UcmFjazIucmVhZHlTdGF0ZScp
OworCisgICAgICAgICAgICAgICAgZGVidWcoIiIpOworICAgICAgICAgICAgICAgIGV2YWxBbmRM
b2coInZpZGVvVHJhY2suc3RvcCgpIik7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGZ1
bmN0aW9uIHN0YXJ0KCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBkZXNjcmlwdGlv
bigiVGVzdHMgTWVkaWFTdHJlYW1UcmFjayBjYWxsYmFja3MuIik7CisgICAgICAgICAgICAgICAg
CisgICAgICAgICAgICAgICAgLy8gTm90ZSB0aGF0IHRoZSBiZWxvdyBiZWhhdmlvdXIgZG9lc24n
dCByZWZsZWN0IGhvdyBpdCB3b3JrcyBvdXRzaWRlIG9mIExheW91dFRlc3RzLgorICAgICAgICAg
ICAgICAgIC8vIFRoZSB1bmRlcmx5aW5nIG1vY2sgaXMgbW9kaWZpZWQgdG8gdHJpZ2dlciB0aGUg
ZXZlbnRzIHdoZW4gY2VydGFpbiBmdW5jdGlvbnMgYXJlIGNhbGxlZC4KKyAgICAgICAgICAgICAg
ICAvLyBUaGlzIG1vZGlmaWVkIGJlaGF2aW91ciBhbGxvd3MgdXMgdG8gdGVzdCB0aGUgTWVkaWFT
dHJlYW1UcmFjayBjbGFzcyBwcm9wZXJseS4KKyAgICAgICAgICAgICAgICBnZXRVc2VyTWVkaWEo
e2F1ZGlvOnRydWUsIHZpZGVvOnRydWV9LCBnb3RTdHJlYW0pOworICAgICAgICAgICAgfQorCisg
ICAgICAgICAgICB3aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7CisgICAgICAgICAgICB3aW5k
b3cuc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKKyAgICAgICAgPC9zY3JpcHQ+CisgICAgPC9o
ZWFkPgorICAgIDxib2R5IG9ubG9hZD0ic3RhcnQoKSI+CisgICAgICAgIDxwIGlkPSJkZXNjcmlw
dGlvbiI+PC9wPgorICAgICAgICA8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKyAgICAgICAgPHNj
cmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorICAg
IDwvYm9keT4KIDwvaHRtbD4K
</data>
<flag name="commit-queue"
          id="235973"
          type_id="3"
          status="-"
          setter="eflews.bot"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="0"
              isprivate="0"
          >
            <attachid>213599</attachid>
            <date>2013-10-07 09:34:11 -0700</date>
            <delta_ts>2013-10-07 10:05:15 -0700</delta_ts>
            <desc>New patch to appease my style-bot master</desc>
            <filename>track_spec_update_24.txt</filename>
            <type>text/plain</type>
            <size>236521</size>
            <attacher name="Eric Carlson">eric.carlson</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XVEYvd3RmL0ZlYXR1cmVEZWZpbmVzLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dURi93dGYvRmVhdHVyZURlZmluZXMuaAkocmV2aXNpb24gMTU3MDE2KQorKysgU291cmNl
L1dURi93dGYvRmVhdHVyZURlZmluZXMuaAkod29ya2luZyBjb3B5KQpAQCAtMjIyLDYgKzIyMiwx
MCBAQAogI2RlZmluZSBFTkFCTEVfSU5QVVRfVFlQRV9DT0xPUl9QT1BPVkVSIDEKICNlbmRpZgog
CisjaWYgIWRlZmluZWQoRU5BQkxFX01FRElBX1NUUkVBTSkKKyNkZWZpbmUgRU5BQkxFX01FRElB
X1NUUkVBTSAxCisjZW5kaWYKKwogI2VuZGlmIC8qIFBMQVRGT1JNKE1BQykgJiYgIVBMQVRGT1JN
KElPUykgKi8KIAogLyogLS0tLS0tLS0tIEFwcGxlIFdpbmRvd3MgcG9ydCAtLS0tLS0tLS0gKi8K
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE1NzA0MSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE3OCBAQAorMjAxMy0xMC0wNiAgRXJpYyBD
YXJsc29uICA8ZXJpYy5jYXJsc29uQGFwcGxlLmNvbT4KKworICAgICAgICBbTWVkaWFTdHJlYW0g
QVBJXSB1cGRhdGUgTWVkaWFTdHJlYW1UcmFjayBvYmplY3QgdG8gbWF0Y2ggc3BlYworICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTIxOTQwCisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLCBl
eGlzdGluZyB0ZXN0IHVwZGF0ZWQuCisKKyAgICAgICAgQWRkIG5ldyBzb3VyY2UgZmlsZXMgdG8g
dGhlIHByb2plY3Q6CisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogRGVyaXZl
ZFNvdXJjZXMubWFrZToKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5saXN0LmFtOgorICAgICAgICAq
IFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKworICAgICAgICBOZXcgY2FwYWJp
bGl0eSBkaWN0aW9uYXJ5IG9iamVjdHM6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9B
bGxBdWRpb0NhcGFiaWxpdGllcy5oOiBBZGRlZC4KKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3Ry
ZWFtL0FsbEF1ZGlvQ2FwYWJpbGl0aWVzLmlkbDogQWRkZWQuCisgICAgICAgICogTW9kdWxlcy9t
ZWRpYXN0cmVhbS9BbGxWaWRlb0NhcGFiaWxpdGllcy5oOiBBZGRlZC4KKyAgICAgICAgKiBNb2R1
bGVzL21lZGlhc3RyZWFtL0FsbFZpZGVvQ2FwYWJpbGl0aWVzLmlkbDogQWRkZWQuCisKKyAgICAg
ICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL0F1ZGlvU3RyZWFtVHJhY2suY3BwOgorICAgICAgICAo
V2ViQ29yZTo6QXVkaW9TdHJlYW1UcmFjazo6Y3JlYXRlKTogTmV3IHZlcnNpb24gdGhhdCB0YWtl
cyBhIE1lZGlhU3RyZWFtVHJhY2sqLgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vQXVk
aW9TdHJlYW1UcmFjay5oOgorCisgICAgICAgIE5ldyBvYmplY3QgZm9yIGEgY2FwYWJpbGl0eSBy
YW5nZToKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL0NhcGFiaWxpdHlSYW5nZS5jcHA6
IEFkZGVkLgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vQ2FwYWJpbGl0eVJhbmdlLmg6
IEFkZGVkLgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vQ2FwYWJpbGl0eVJhbmdlLmlk
bDogQWRkZWQuCisKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhQ29uc3RyYWlu
dHNJbXBsLmg6IE1ha2UgaW5pdGlhbGl6ZSgpIHB1YmxpYy4KKworICAgICAgICBOZXcgb2JqZWN0
IGZvciB0aGUgY3VycmVudCBzdGF0ZXMgZm9yIGEgbWVkaWEgc291cmNlLgorICAgICAgICAqIE1v
ZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTb3VyY2VTdGF0ZXMuY3BwOiBBZGRlZC4KKyAgICAgICAg
KiBNb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU291cmNlU3RhdGVzLmg6IEFkZGVkLgorICAgICAg
ICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTb3VyY2VTdGF0ZXMuaWRsOiBBZGRlZC4KKwor
ICAgICAgICBEb24ndCBjYWxsIHRoZSBtZWRpYSBzdHJlYW0gY2VudGVyIHRvIG5vdGlmeSBpdCB3
aGVuIHRoZSBzdGF0ZSBvZiBvdGhlcgorICAgICAgICBvYmplY3RzIGNoYW5nZS4KKyAgICAgICAg
KiBNb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OnByb2Nlc3NUcmFjayk6IFJlbW92ZSB0aGUgc3RyZWFtIHNvdXJjZSBkdXBsaWNhdGlvbiBoYWNr
LgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlRnJvbVNvdXJjZVZlY3RvcnMpOiAKKyAgICAgICAg
KFdlYkNvcmU6Ok1lZGlhU3RyZWFtOjpNZWRpYVN0cmVhbSk6CisgICAgICAgIChXZWJDb3JlOjpN
ZWRpYVN0cmVhbTo6YWRkVHJhY2spOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTdHJlYW06OnJl
bW92ZVRyYWNrKToKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtLmg6
CisKKyAgICAgICAgTmV3IG9iamVjdCBmb3IgdGhlIGNhcGFiaWxpdGllcyBvZiBhIHNvdXJjZS4K
KyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtQ2FwYWJpbGl0aWVzLmNw
cDogQWRkZWQuCisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbUNhcGFi
aWxpdGllcy5oOiBBZGRlZC4KKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3Ry
ZWFtQ2FwYWJpbGl0aWVzLmlkbDogQWRkZWQuCisKKyAgICAgICAgVXBkYXRlIGludGVyZmFjZSB0
byBtYXRjaCBzcGVjLgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1U
cmFjay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbVRyYWNrOjpNZWRpYVN0cmVh
bVRyYWNrKTogRGVmaW5lIGEgY29weSBjb25zdHJ1Y3RvciB0byB1c2UgaW4gY2xvbmUoKS4KKyAg
ICAgICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFtVHJhY2s6OnNldFNvdXJjZSk6IENhbGwgcmVtb3Zl
T2JzZXJ2ZXIgaWYgdGhlIHRyYWNrIGFscmVhZHkgaGFzIGEgc291cmNlLgorICAgICAgICAgICAg
SW5pdGlhbGl6ZSBtX211dGVkIGZyb20gbmV3IHNvdXJjZSdzIG11dGVkIHN0YXRlLgorICAgICAg
ICAoV2ViQ29yZTo6TWVkaWFTdHJlYW1UcmFjazo6aWQpOiBBbGxvdyBzb3VyY2UgdG8gcHJvdmlk
ZSBJRCBhcyB0aGUgc3BlYyBzdWdnZXN0cy4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFt
VHJhY2s6OnNldEVuYWJsZWQpOiBBZGQgc29tZSBzcGVjIHRleHQgdG8gY2xhcmlmeSBsb2dpYy4g
QWx3YXlzIGNhbGwKKyAgICAgICAgICAgIHNvdXJjZS0+c2V0RW5hYmxlZCwgaXQgY2FuIGZpZ3Vy
ZSBvdXQgaWYgbm90aGluZyBuZWVkcyB0byBiZSBkb25lLgorICAgICAgICAoV2ViQ29yZTo6TWVk
aWFTdHJlYW1UcmFjazo6bXV0ZWQpOiBEb24ndCBjYWxsIHRoZSBzdHJlYW0gY2VudGVyIHdoZW4g
bXV0ZWQgY2hhbmdlcywgdGhlCisgICAgICAgICAgICBzb3VyY2UgY2FuIHRha2UgY2FyZSBvZiBu
b3RpZnlpbmcgaW50ZXJlc3RlZCBwYXJ0aWVzLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTdHJl
YW1UcmFjazo6cmVhZG9ubHkpOiBOZXcuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbVRy
YWNrOjpyZW1vdGUpOiBOZXcuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbVRyYWNrOjpj
b25zdHJhaW50cyk6IE5ldy4gCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbVRyYWNrOjpz
dGF0ZXMpOiBOZXcuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbVRyYWNrOjpjYXBhYmls
aXRpZXMpOiBOZXcuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbVRyYWNrOjphcHBseUNv
bnN0cmFpbnRzKTogTmV3LgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTdHJlYW1UcmFjazo6Y2xv
bmUpOiBOZXcuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbVRyYWNrOjpzdG9wUHJvZHVj
aW5nRGF0YSk6IE5ldy4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFtVHJhY2s6OnNvdXJj
ZVN0YXRlQ2hhbmdlZCk6IFJlbmFtZWQgZnJvbSBzb3VyY2VDaGFuZ2VkU3RhdGUuCisgICAgICAg
IChXZWJDb3JlOjpNZWRpYVN0cmVhbVRyYWNrOjpzb3VyY2VNdXRlZENoYW5nZWQpOiBOZXcuCisg
ICAgICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbVRyYWNrOjpzb3VyY2VFbmFibGVkQ2hhbmdlZCk6
IE5ldy4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFtVHJhY2s6OmNvbmZpZ3VyZVRyYWNr
UmVuZGVyaW5nKTogTmV3LgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTdHJlYW1UcmFjazo6c3Rv
cHBlZCk6IE5ldy4gCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbVRyYWNrOjpzdG9wKTog
Q2FsbCBzdG9wUHJvZHVjaW5nRGF0YS4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFtVHJh
Y2s6OnNjaGVkdWxlRXZlbnREaXNwYXRjaCk6IE5ldy4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlh
U3RyZWFtVHJhY2s6OmRpc3BhdGNoUXVldWVkRXZlbnRzKTogTmV3LgorICAgICAgICAqIE1vZHVs
ZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1UcmFjay5oOgorICAgICAgICAqIE1vZHVsZXMvbWVk
aWFzdHJlYW0vTWVkaWFTdHJlYW1UcmFjay5pZGw6CisKKyAgICAgICAgKiBNb2R1bGVzL21lZGlh
c3RyZWFtL01lZGlhVHJhY2tDb25zdHJhaW50LmNwcDogQWRkZWQuCisgICAgICAgICogTW9kdWxl
cy9tZWRpYXN0cmVhbS9NZWRpYVRyYWNrQ29uc3RyYWludC5oOiBBZGRlZC4KKyAgICAgICAgKiBN
b2R1bGVzL21lZGlhc3RyZWFtL01lZGlhVHJhY2tDb25zdHJhaW50LmlkbDogQWRkZWQuCisKKyAg
ICAgICAgLy8gQWRkIGVtcHR5IGNsYXNzZXMvSURMIGZvciB0cmFjayBjb25zdHJhaW50IG9iamVj
dHMuCisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVRyYWNrQ29uc3RyYWludFNl
dC5jcHA6IEFkZGVkLgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFUcmFja0Nv
bnN0cmFpbnRTZXQuaDogQWRkZWQuCisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRp
YVRyYWNrQ29uc3RyYWludFNldC5pZGw6IEFkZGVkLgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFz
dHJlYW0vTWVkaWFUcmFja0NvbnN0cmFpbnRzLmNwcDogQWRkZWQuCisgICAgICAgICogTW9kdWxl
cy9tZWRpYXN0cmVhbS9NZWRpYVRyYWNrQ29uc3RyYWludHMuaDogQWRkZWQuCisgICAgICAgICog
TW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVRyYWNrQ29uc3RyYWludHMuaWRsOiBBZGRlZC4KKwor
ICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vVXNlck1lZGlhUmVxdWVzdC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpVc2VyTWVkaWFSZXF1ZXN0OjpjYWxsU3VjY2Vzc0hhbmRsZXIpOiBEb24n
dCBjYWxsIHRoZSBzdHJlYW0gY2VudGVyLCB0aGUKKyAgICAgICAgICAgIHN0cmVhbSBjYW4gdGFr
ZSBjYXJlIG9mIG5vdGlmeWluZyBpbnRlcmVzdGVkIHBhcnRpZXMuCisKKyAgICAgICAgLy8gQWRk
IGEgY29uc3RydWN0b3IgYW5kIGNyZWF0ZSgpIHRoYXQgdGFrZSBhIE1lZGlhU3RyZWFtVHJhY2sq
LgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vVmlkZW9TdHJlYW1UcmFjay5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpWaWRlb1N0cmVhbVRyYWNrOjpjcmVhdGUpOiAKKyAgICAgICAgKFdl
YkNvcmU6OlZpZGVvU3RyZWFtVHJhY2s6OlZpZGVvU3RyZWFtVHJhY2spOgorICAgICAgICAqIE1v
ZHVsZXMvbWVkaWFzdHJlYW0vVmlkZW9TdHJlYW1UcmFjay5oOgorCisgICAgICAgIC8vIENyZWF0
ZSBhIE1lZGlhU3RyZWFtU291cmNlIHN1YmNsYXNzIGZvciBXZWJBdWRpbworICAgICAgICAqIE1v
ZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlv
Q29udGV4dDo6Y3JlYXRlTWVkaWFTdHJlYW1Tb3VyY2UpOiBDYWxsIGlzQXVkaW9TdHJlYW1Tb3Vy
Y2UgaW5zdGVhZAorICAgICAgICAgICAgb2YgY2hlY2tpbmcgZGV2aWNlSUQuCisgICAgICAgICog
TW9kdWxlcy93ZWJhdWRpby9NZWRpYVN0cmVhbUF1ZGlvRGVzdGluYXRpb25Ob2RlLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFtQXVkaW9EZXN0aW5hdGlvbk5vZGU6Ok1lZGlhU3Ry
ZWFtQXVkaW9EZXN0aW5hdGlvbk5vZGUpOiBDcmVhdGUgYQorICAgICAgICAgICAgTWVkaWFTdHJl
YW1BdWRpb1NvdXJjZSBpbnN0ZWFkIG9mIGEgTWVkaWFTdHJlYW1Tb3VyY2UuCisgICAgICAgICog
TW9kdWxlcy93ZWJhdWRpby9NZWRpYVN0cmVhbUF1ZGlvRGVzdGluYXRpb25Ob2RlLmg6CisgICAg
ICAgICogTW9kdWxlcy93ZWJhdWRpby9NZWRpYVN0cmVhbUF1ZGlvU291cmNlLmNwcDogQWRkZWQu
CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9NZWRpYVN0cmVhbUF1ZGlvU291cmNlLmg6IEFk
ZGVkLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTdHJlYW1BdWRpb1NvdXJjZTo6fk1lZGlhU3Ry
ZWFtQXVkaW9Tb3VyY2UpOgorCisgICAgICAgIC8vIEFkZCBuZXcgZ2VuZXJhdGVkIGZpbGVzLgor
ICAgICAgICAqIGJpbmRpbmdzL2pzL0pTTWVkaWFTb3VyY2VTdGF0ZXNDdXN0b20uY3BwOiBBZGRl
ZC4KKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU01lZGlhU3RyZWFtQ2FwYWJpbGl0aWVzQ3VzdG9t
LmNwcDogQWRkZWQuCisKKyAgICAgICAgKiBkb20vRXZlbnROYW1lcy5oOiBEZWZpbmVkICdvdmVy
Y29uc3RyYWluZWQnIGV2ZW50LgorCisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVk
aWFTdHJlYW1DZW50ZXIuaDogR2V0IHJpZCBvZiBhbGwgb2YgdGhlIG1ldGhvZHMgbm9ib2R5IHVz
ZXMuCisgICAgICAgICAgICBJdCBpc24ndCBjbGVhciB0aGF0IHRoZXkgYXJlIG5lY2Vzc2FyeSwg
YW5kIHdlIGNhbiBhZGQgdGhlbSBiYWNrIGlmL3doZW4gd2UgbmVlZCB0aGVtLgorCisgICAgICAg
ICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1EZXNjcmlwdG9yLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFtRGVzY3JpcHRvcjo6fk1lZGlhU3RyZWFtRGVzY3JpcHRv
cik6IENsZWFyIHRoZSBhbGwgc291cmNlIHN0cmVhbXMuCisgICAgICAgIChXZWJDb3JlOjpNZWRp
YVN0cmVhbURlc2NyaXB0b3I6OnJlbW92ZVNvdXJjZSk6IENsZWFyIHRoZSBzb3VyY2Ugc3RyZWFt
LgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtRGVzY3JpcHRvci5o
OgorCisgICAgICAgIC8vIE1ha2UgTWVkaWFTdHJlYW1Tb3VyY2UgYW4gYWJzdHJhY3QgYmFzZSBj
bGFzcywgYW5kIHJlbW92ZSBldmVyeXRpbmcgV2ViQXVkaW8tc3BlY2lmaWMKKyAgICAgICAgLy8g
IHRvIE1lZGlhU3RyZWFtQXVkaW9Tb3VyY2UuIAorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3Ry
ZWFtL01lZGlhU3RyZWFtU291cmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFt
U291cmNlOjpNZWRpYVN0cmVhbVNvdXJjZSk6IFJlbW92ZSByZWFkeVN0YXRlIGFuZCByZXF1aXJl
c0NvbnN1bWVyCisgICAgICAgICAgICBwYXJhbWV0ZXJzLiBDcmVhdGUgbmV3IFVVSUQgZm9yIGlk
IGlmIG5vbiB3YXMgcGFzc2VkLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTdHJlYW1Tb3VyY2U6
OnJlc2V0KTogUmVzZXQgaW50ZXJuYWwgc3RhdGUgdG8ganVzdC1jb25zdHJ1Y3RlZC4gVXNlZCBm
b3IgdGVzdGluZy4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFtU291cmNlOjpzZXRSZWFk
eVN0YXRlKTogc291cmNlQ2hhbmdlZFN0YXRlIC0+IHNvdXJjZVN0YXRlQ2hhbmdlZC4KKyAgICAg
ICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFtU291cmNlOjpzZXRTdHJlYW0pOiBSZW1vdmUgdGhlIEFT
U0VSVCB0aGF0IGNoZWNrIGZvciBhIHNvdXJjZSBiZWluZworICAgICAgICAgICAgYWRkZWQgdG8g
YSBuZXcgc3RyZWFtLiBUaGlzIGlzIHN0aWxsIGEgcHJvYmxlbSwgYnV0IGl0IGlzIHJlcXVpcmVk
IGZvciB0ZXN0aW5nIGFuZCB3aWxsCisgICAgICAgICAgICBiZSBmaXhlZCBhcyBhIHBhcnQgb2Yg
YnVnIDEyMTk1NC4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFtU291cmNlOjpzZXRDb25z
dHJhaW50cyk6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTdHJlYW1Tb3VyY2U6OnNl
dE11dGVkKTogTm90aWZ5IG9ic2VydmVycyB3aGVuIG11dGVkIGNoYW5nZXMuCisgICAgICAgIChX
ZWJDb3JlOjpNZWRpYVN0cmVhbVNvdXJjZTo6c2V0RW5hYmxlZCk6IE5vdGlmeSBvYnNlcnZlcnMg
d2hlbiBlbmFibGVkIGNoYW5nZXMuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbVNvdXJj
ZTo6cmVhZG9ubHkpOiBOZXcuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbVNvdXJjZTo6
c3RvcCk6IE5ldy4gU2V0IHN0YXRlIHRvIEVuZGVkIHdoZW4gYWxsIG9mIHRoZSBvYnNlcnZlcnMg
aGFzCisgICAgICAgICAgICBzdG9wcGVkLgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFt
L01lZGlhU3RyZWFtU291cmNlLmg6CisKKyAgICAgICAgLy8gRGVmaW5lIHBsYXRmb3JtIHZlcnNp
b25zIG9mIHRoZSBDYXBhYmlsaXRpZXMgY2xhc3Nlcy4KKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRp
YXN0cmVhbS9NZWRpYVN0cmVhbVNvdXJjZUNhcGFiaWxpdGllcy5oOiBBZGRlZC4KKworICAgICAg
ICAvLyBVcGRhdGUgdGhlIG5vbi1mdW5jdGlvbmFsIHBsYXRmb3JtIHN0cmVhbSBjZW50ZXJzIGZv
ciB0aGUgQVBJIGNoYW5nZXMuCisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vYmxhY2ti
ZXJyeS9NZWRpYVN0cmVhbUNlbnRlckJsYWNrQmVycnkuY3BwOgorICAgICAgICAqIHBsYXRmb3Jt
L21lZGlhc3RyZWFtL2JsYWNrYmVycnkvTWVkaWFTdHJlYW1DZW50ZXJCbGFja0JlcnJ5Lmg6Cisg
ICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vZ3N0cmVhbWVyL01lZGlhU3RyZWFtQ2VudGVy
R1N0cmVhbWVyLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9nc3RyZWFtZXIv
TWVkaWFTdHJlYW1DZW50ZXJHU3RyZWFtZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0
cmVhbS9tYWMvTWVkaWFTdHJlYW1DZW50ZXJNYWMuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL21l
ZGlhc3RyZWFtL21hYy9NZWRpYVN0cmVhbUNlbnRlck1hYy5oOgorCisgICAgICAgIC8vIFVwZGF0
ZSB0aGUgTW9jayBzdHJlYW0gY2VudGVyIGZvciB0aGUgQVBJIGNoYW5nZXMuIEFkZCBhIGNvbmNy
ZXRlIG1vY2sgTWVkaWFTdHJlYW1Tb3VyY2UKKyAgICAgICAgLy8gIHN1YmNsYXNzLgorICAgICAg
ICAqIHBsYXRmb3JtL21vY2svTW9ja01lZGlhU3RyZWFtQ2VudGVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6Ok1vY2tTb3VyY2U6Ok1vY2tTb3VyY2UpOiBOZXcsIHRoZSBtb2NrIG1lZGlhIHN0cmVh
bSBzb3VyY2UuCisgICAgICAgIChXZWJDb3JlOjpNb2NrU291cmNlOjp+TW9ja1NvdXJjZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpNb2NrU291cmNlOjpjYXBhYmlsaXRpZXMpOgorICAgICAgICAoV2Vi
Q29yZTo6TW9ja1NvdXJjZTo6c3RhdGVzKToKKyAgICAgICAgKFdlYkNvcmU6Om1vY2tTb3VyY2VN
YXApOgorICAgICAgICAoV2ViQ29yZTo6bW9ja0F1ZGlvU291cmNlSUQpOgorICAgICAgICAoV2Vi
Q29yZTo6bW9ja1ZpZGVvU291cmNlSUQpOgorICAgICAgICAoV2ViQ29yZTo6aW5pdGlhbGl6ZU1v
Y2tTb3VyY2VzKTogQ3JlYXRlIG9uZSBhdWRpbyBhbmQgb25lIHZpZGVvIG1vY2sgc291cmNlLgor
ICAgICAgICAoV2ViQ29yZTo6TW9ja01lZGlhU3RyZWFtQ2VudGVyOjpyZWdpc3Rlck1vY2tNZWRp
YVN0cmVhbUNlbnRlcik6IENhbGwgaW5pdGlhbGl6ZU1vY2tTb3VyY2VzLgorICAgICAgICAoV2Vi
Q29yZTo6TW9ja01lZGlhU3RyZWFtQ2VudGVyOjpjcmVhdGVNZWRpYVN0cmVhbSk6IFVzZSB0aGUg
YWxyZWFkeSBhbGxvY2F0ZWQgbW9jayBtZWRpYQorICAgICAgICAgICAgc291cmNlcy4KKyAgICAg
ICAgKFdlYkNvcmU6Ok1vY2tNZWRpYVN0cmVhbUNlbnRlcjo6Z2V0TWVkaWFTdHJlYW1UcmFja1Nv
dXJjZXMpOiBEaXR0by4KKyAgICAgICAgKiBwbGF0Zm9ybS9tb2NrL01vY2tNZWRpYVN0cmVhbUNl
bnRlci5oOgorCiAyMDEzLTEwLTA3ICBQaGlsaXBwZSBOb3JtYW5kICA8cG5vcm1hbmRAaWdhbGlh
LmNvbT4KIAogICAgICAgICBVUkxNZWRpYVN0cmVhbSBpcyB1bmd1YXJkZWQgYnkgRU5BQkxFKE1F
RElBX1NUUkVBTSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0Cj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CShyZXZpc2lvbiAxNTcwMTYpCisr
KyBTb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMTg2LDEy
ICsxODYsMjAgQEAgc2V0KFdlYkNvcmVfSURMX0ZJTEVTCiAgICAgTW9kdWxlcy9tZWRpYXNvdXJj
ZS9XZWJLaXRTb3VyY2VCdWZmZXIuaWRsCiAgICAgTW9kdWxlcy9tZWRpYXNvdXJjZS9XZWJLaXRT
b3VyY2VCdWZmZXJMaXN0LmlkbAogCisgICAgTW9kdWxlcy9tZWRpYXN0cmVhbS9BbGxBdWRpb0Nh
cGFiaWxpdGllcy5pZGwKKyAgICBNb2R1bGVzL21lZGlhc3RyZWFtL0FsbFZpZGVvQ2FwYWJpbGl0
aWVzLmlkbAogICAgIE1vZHVsZXMvbWVkaWFzdHJlYW0vQXVkaW9TdHJlYW1UcmFjay5pZGwKKyAg
ICBNb2R1bGVzL21lZGlhc3RyZWFtL0NhcGFiaWxpdHlSYW5nZS5pZGwKKyAgICBNb2R1bGVzL21l
ZGlhc3RyZWFtL01lZGlhU291cmNlU3RhdGVzLmlkbAogICAgIE1vZHVsZXMvbWVkaWFzdHJlYW0v
TWVkaWFTdHJlYW0uaWRsCisgICAgTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbUNhcGFi
aWxpdGllcy5pZGwKICAgICBNb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtRXZlbnQuaWRs
CiAgICAgTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVRyYWNrLmlkbAogICAgIE1vZHVs
ZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1UcmFja0V2ZW50LmlkbAogICAgIE1vZHVsZXMvbWVk
aWFzdHJlYW0vTWVkaWFTdHJlYW1UcmFja1NvdXJjZXNDYWxsYmFjay5pZGwKKyAgICBNb2R1bGVz
L21lZGlhc3RyZWFtL01lZGlhVHJhY2tDb25zdHJhaW50LmlkbAorICAgIE1vZHVsZXMvbWVkaWFz
dHJlYW0vTWVkaWFUcmFja0NvbnN0cmFpbnRTZXQuaWRsCisgICAgTW9kdWxlcy9tZWRpYXN0cmVh
bS9NZWRpYVRyYWNrQ29uc3RyYWludHMuaWRsCiAgICAgTW9kdWxlcy9tZWRpYXN0cmVhbS9OYXZp
Z2F0b3JNZWRpYVN0cmVhbS5pZGwKICAgICBNb2R1bGVzL21lZGlhc3RyZWFtL05hdmlnYXRvclVz
ZXJNZWRpYUVycm9yLmlkbAogICAgIE1vZHVsZXMvbWVkaWFzdHJlYW0vTmF2aWdhdG9yVXNlck1l
ZGlhRXJyb3JDYWxsYmFjay5pZGwKQEAgLTc4NiwxMyArNzk0LDE5IEBAIHNldChXZWJDb3JlX1NP
VVJDRVMKICAgICBNb2R1bGVzL21lZGlhc291cmNlL1NvdXJjZUJ1ZmZlckxpc3QuY3BwCiAKICAg
ICBNb2R1bGVzL21lZGlhc3RyZWFtL0F1ZGlvU3RyZWFtVHJhY2suY3BwCisgICAgTW9kdWxlcy9t
ZWRpYXN0cmVhbS9DYXBhYmlsaXR5UmFuZ2UuY3BwCiAgICAgTW9kdWxlcy9tZWRpYXN0cmVhbS9N
ZWRpYUNvbnN0cmFpbnRzSW1wbC5jcHAKKyAgICBNb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU291
cmNlU3RhdGVzLmNwcAogICAgIE1vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW0uY3BwCisg
ICAgTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbUNhcGFiaWxpdGllcy5jcHAKICAgICBN
b2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtRXZlbnQuY3BwCiAgICAgTW9kdWxlcy9tZWRp
YXN0cmVhbS9NZWRpYVN0cmVhbVJlZ2lzdHJ5LmNwcAogICAgIE1vZHVsZXMvbWVkaWFzdHJlYW0v
TWVkaWFTdHJlYW1UcmFjay5jcHAKICAgICBNb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFt
VHJhY2tFdmVudC5jcHAKICAgICBNb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJhY2tT
b3VyY2VzUmVxdWVzdC5jcHAKKyAgICBNb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhVHJhY2tDb25z
dHJhaW50LmNwcAorICAgIE1vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFUcmFja0NvbnN0cmFpbnRT
ZXQuY3BwCisgICAgTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVRyYWNrQ29uc3RyYWludHMuY3Bw
CiAgICAgTW9kdWxlcy9tZWRpYXN0cmVhbS9OYXZpZ2F0b3JNZWRpYVN0cmVhbS5jcHAKICAgICBN
b2R1bGVzL21lZGlhc3RyZWFtL05hdmlnYXRvclVzZXJNZWRpYUVycm9yLmNwcAogICAgIE1vZHVs
ZXMvbWVkaWFzdHJlYW0vUlRDRFRNRlNlbmRlci5jcHAKQEAgLTE5NzEsNiArMTk4NSw3IEBAIHNl
dChXZWJDb3JlX1NPVVJDRVMKICAgICBwbGF0Zm9ybS9sZXZlbGRiL0xldmVsREJUcmFuc2FjdGlv
bi5jcHAKICAgICBwbGF0Zm9ybS9sZXZlbGRiL0xldmVsREJXcml0ZUJhdGNoLmNwcAogCisgICAg
cGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1BdWRpb1NvdXJjZS5jcHAKICAgICBwbGF0
Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbUNlbnRlci5jcHAKICAgICBwbGF0Zm9ybS9tZWRp
YXN0cmVhbS9NZWRpYVN0cmVhbURlc2NyaXB0b3IuY3BwCiAgICAgcGxhdGZvcm0vbWVkaWFzdHJl
YW0vTWVkaWFTdHJlYW1Tb3VyY2UuY3BwCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291
cmNlcy5tYWtlCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1h
a2UJKHJldmlzaW9uIDE1NzAxNikKKysrIFNvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1h
a2UJKHdvcmtpbmcgY29weSkKQEAgLTEwMSwxMiArMTAxLDIwIEBAIEJJTkRJTkdfSURMUyA9IFwK
ICAgICAkKFdlYkNvcmUpL01vZHVsZXMvbWVkaWFzb3VyY2UvV2ViS2l0U291cmNlQnVmZmVyTGlz
dC5pZGwgXAogICAgICQoV2ViQ29yZSkvTW9kdWxlcy9tZWRpYXNvdXJjZS9Tb3VyY2VCdWZmZXIu
aWRsIFwKICAgICAkKFdlYkNvcmUpL01vZHVsZXMvbWVkaWFzb3VyY2UvU291cmNlQnVmZmVyTGlz
dC5pZGwgXAorCSQoV2ViQ29yZSkvTW9kdWxlcy9tZWRpYXN0cmVhbS9BbGxWaWRlb0NhcGFiaWxp
dGllcy5pZGwgXAorCSQoV2ViQ29yZSkvTW9kdWxlcy9tZWRpYXN0cmVhbS9BbGxBdWRpb0NhcGFi
aWxpdGllcy5pZGwgXAogCSQoV2ViQ29yZSkvTW9kdWxlcy9tZWRpYXN0cmVhbS9BdWRpb1N0cmVh
bVRyYWNrLmlkbCBcCisgICAgJChXZWJDb3JlKS9Nb2R1bGVzL21lZGlhc3RyZWFtL0NhcGFiaWxp
dHlSYW5nZS5pZGwgXAorICAgICQoV2ViQ29yZSkvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVNv
dXJjZVN0YXRlcy5pZGwgXAogCSQoV2ViQ29yZSkvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0
cmVhbS5pZGwgXAorCSQoV2ViQ29yZSkvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbUNh
cGFiaWxpdGllcy5pZGwgXAogICAgICQoV2ViQ29yZSkvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRp
YVN0cmVhbUV2ZW50LmlkbCBcCiAgICAgJChXZWJDb3JlKS9Nb2R1bGVzL21lZGlhc3RyZWFtL01l
ZGlhU3RyZWFtVHJhY2suaWRsIFwKICAgICAkKFdlYkNvcmUpL01vZHVsZXMvbWVkaWFzdHJlYW0v
TWVkaWFTdHJlYW1UcmFja0V2ZW50LmlkbCBcCiAgICAgJChXZWJDb3JlKS9Nb2R1bGVzL21lZGlh
c3RyZWFtL01lZGlhU3RyZWFtVHJhY2tTb3VyY2VzQ2FsbGJhY2suaWRsIFwKKyAgICAkKFdlYkNv
cmUpL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFUcmFja0NvbnN0cmFpbnQuaWRsIFwKKyAgICAk
KFdlYkNvcmUpL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFUcmFja0NvbnN0cmFpbnRzLmlkbCBc
CisgICAgJChXZWJDb3JlKS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhVHJhY2tDb25zdHJhaW50
U2V0LmlkbCBcCiAgICAgJChXZWJDb3JlKS9Nb2R1bGVzL21lZGlhc3RyZWFtL05hdmlnYXRvck1l
ZGlhU3RyZWFtLmlkbCBcCiAgICAgJChXZWJDb3JlKS9Nb2R1bGVzL21lZGlhc3RyZWFtL05hdmln
YXRvclVzZXJNZWRpYUVycm9yLmlkbCBcCiAgICAgJChXZWJDb3JlKS9Nb2R1bGVzL21lZGlhc3Ry
ZWFtL05hdmlnYXRvclVzZXJNZWRpYUVycm9yQ2FsbGJhY2suaWRsIFwKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
R05VbWFrZWZpbGUubGlzdC5hbQkocmV2aXNpb24gMTU3MDE2KQorKysgU291cmNlL1dlYkNvcmUv
R05VbWFrZWZpbGUubGlzdC5hbQkod29ya2luZyBjb3B5KQpAQCAtMzEsNiArMzEsMTAgQEAgd2Vi
Y29yZV9idWlsdF9zb3VyY2VzICs9IFwKIAlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0luc3BlY3Rv
clByb3RvY29sVmVyc2lvbi5oIFwKIAlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTQWJzdHJhY3RX
b3JrZXIuY3BwIFwKIAlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTQWJzdHJhY3RXb3JrZXIuaCBc
CisJRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0FsbEF1ZGlvQ2FwYWJpbGl0aWVzLmNwcCBcCisJ
RGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0FsbEF1ZGlvQ2FwYWJpbGl0aWVzLmggXAorCURlcml2
ZWRTb3VyY2VzL1dlYkNvcmUvSlNBbGxWaWRlb0NhcGFiaWxpdGllcy5jcHAgXAorCURlcml2ZWRT
b3VyY2VzL1dlYkNvcmUvSlNBbGxWaWRlb0NhcGFiaWxpdGllcy5oIFwKIAlEZXJpdmVkU291cmNl
cy9XZWJDb3JlL0pTQXR0ci5jcHAgXAogCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNBdHRyLmgg
XAogCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNBdWRpb0J1ZmZlci5jcHAgXApAQCAtODcsNiAr
OTEsOCBAQCB3ZWJjb3JlX2J1aWx0X3NvdXJjZXMgKz0gXAogCURlcml2ZWRTb3VyY2VzL1dlYkNv
cmUvSlNDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuaCBcCiAJRGVyaXZlZFNvdXJjZXMvV2ViQ29y
ZS9KU0NhbnZhc1JlbmRlcmluZ0NvbnRleHQuY3BwIFwKIAlEZXJpdmVkU291cmNlcy9XZWJDb3Jl
L0pTQ2FudmFzUmVuZGVyaW5nQ29udGV4dC5oIFwKKwlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pT
Q2FwYWJpbGl0eVJhbmdlLmNwcCBcCisJRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0NhcGFiaWxp
dHlSYW5nZS5oIFwKIAlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTQ0RBVEFTZWN0aW9uLmNwcCBc
CiAJRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0NEQVRBU2VjdGlvbi5oIFwKIAlEZXJpdmVkU291
cmNlcy9XZWJDb3JlL0pTQ2hhcmFjdGVyRGF0YS5jcHAgXApAQCAtNDYyLDEyICs0NjgsMTggQEAg
d2ViY29yZV9idWlsdF9zb3VyY2VzICs9IFwKIAlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTTWVk
aWFTb3VyY2UuaCBcCiAJRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU1dlYktpdE1lZGlhU291cmNl
LmNwcCBcCiAJRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU1dlYktpdE1lZGlhU291cmNlLmggXAor
CURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNNZWRpYVNvdXJjZVN0YXRlcy5jcHAgXAorCURlcml2
ZWRTb3VyY2VzL1dlYkNvcmUvSlNNZWRpYVNvdXJjZVN0YXRlcy5oIFwKKwlEZXJpdmVkU291cmNl
cy9XZWJDb3JlL0pTTWVkaWFTb3VyY2VTdGF0ZXNDdXN0b20uY3BwIFwKIAlEZXJpdmVkU291cmNl
cy9XZWJDb3JlL0pTTWVkaWFTdHJlYW0uY3BwIFwKIAlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pT
TWVkaWFTdHJlYW0uaCBcCiAJRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU01lZGlhU3RyZWFtQXVk
aW9Tb3VyY2VOb2RlLmNwcCBcCiAJRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU01lZGlhU3RyZWFt
QXVkaW9Tb3VyY2VOb2RlLmggXAogCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNNZWRpYVN0cmVh
bUF1ZGlvRGVzdGluYXRpb25Ob2RlLmNwcCBcCiAJRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU01l
ZGlhU3RyZWFtQXVkaW9EZXN0aW5hdGlvbk5vZGUuaCBcCisJRGVyaXZlZFNvdXJjZXMvV2ViQ29y
ZS9KU01lZGlhU3RyZWFtQ2FwYWJpbGl0aWVzLmNwcCBcCisJRGVyaXZlZFNvdXJjZXMvV2ViQ29y
ZS9KU01lZGlhU3RyZWFtQ2FwYWJpbGl0aWVzLmggXAorCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUv
SlNNZWRpYVN0cmVhbUNhcGFiaWxpdGllc0N1c3RvbS5jcHAgXAogCURlcml2ZWRTb3VyY2VzL1dl
YkNvcmUvSlNNZWRpYVN0cmVhbUV2ZW50LmNwcCBcCiAJRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9K
U01lZGlhU3RyZWFtRXZlbnQuaCBcCiAJRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU01lZGlhU3Ry
ZWFtVHJhY2suY3BwIFwKQEAgLTQ4MCw2ICs0OTIsMTIgQEAgd2ViY29yZV9idWlsdF9zb3VyY2Vz
ICs9IFwKIAlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTTWVkaWFRdWVyeUxpc3QuaCBcCiAJRGVy
aXZlZFNvdXJjZXMvV2ViQ29yZS9KU01lZGlhUXVlcnlMaXN0TGlzdGVuZXIuY3BwIFwKIAlEZXJp
dmVkU291cmNlcy9XZWJDb3JlL0pTTWVkaWFRdWVyeUxpc3RMaXN0ZW5lci5oIFwKKwlEZXJpdmVk
U291cmNlcy9XZWJDb3JlL0pTTWVkaWFUcmFja0NvbnN0cmFpbnQuY3BwIFwKKwlEZXJpdmVkU291
cmNlcy9XZWJDb3JlL0pTTWVkaWFUcmFja0NvbnN0cmFpbnQuaCBcCisJRGVyaXZlZFNvdXJjZXMv
V2ViQ29yZS9KU01lZGlhVHJhY2tDb25zdHJhaW50cy5jcHAgXAorCURlcml2ZWRTb3VyY2VzL1dl
YkNvcmUvSlNNZWRpYVRyYWNrQ29uc3RyYWludHMuaCBcCisJRGVyaXZlZFNvdXJjZXMvV2ViQ29y
ZS9KU01lZGlhVHJhY2tDb25zdHJhaW50U2V0LmNwcCBcCisJRGVyaXZlZFNvdXJjZXMvV2ViQ29y
ZS9KU01lZGlhVHJhY2tDb25zdHJhaW50U2V0LmggXAogCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUv
SlNNZXNzYWdlQ2hhbm5lbC5jcHAgXAogCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNNZXNzYWdl
Q2hhbm5lbC5oIFwKIAlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTTWVzc2FnZUV2ZW50LmNwcCBc
CkBAIC0xMTg2LDEyICsxMjA0LDIwIEBAIGRvbV9iaW5kaW5nX2lkbHMgKz0gXAogCSQoV2ViQ29y
ZSkvTW9kdWxlcy9tZWRpYXNvdXJjZS9XZWJLaXRNZWRpYVNvdXJjZS5pZGwgXAogCSQoV2ViQ29y
ZSkvTW9kdWxlcy9tZWRpYXNvdXJjZS9XZWJLaXRTb3VyY2VCdWZmZXIuaWRsIFwKIAkkKFdlYkNv
cmUpL01vZHVsZXMvbWVkaWFzb3VyY2UvV2ViS2l0U291cmNlQnVmZmVyTGlzdC5pZGwgXAorCSQo
V2ViQ29yZSkvTW9kdWxlcy9tZWRpYXN0cmVhbS9BbGxWaWRlb0NhcGFiaWxpdGllcy5pZGwgXAor
CSQoV2ViQ29yZSkvTW9kdWxlcy9tZWRpYXN0cmVhbS9BbGxBdWRpb0NhcGFiaWxpdGllcy5pZGwg
XAogCSQoV2ViQ29yZSkvTW9kdWxlcy9tZWRpYXN0cmVhbS9BdWRpb1N0cmVhbVRyYWNrLmlkbCBc
CisJJChXZWJDb3JlKS9Nb2R1bGVzL21lZGlhc3RyZWFtL0NhcGFiaWxpdHlSYW5nZS5pZGwgXAor
CSQoV2ViQ29yZSkvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVNvdXJjZVN0YXRlcy5pZGwgXAog
CSQoV2ViQ29yZSkvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbS5pZGwgXAorCSQoV2Vi
Q29yZSkvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbUNhcGFiaWxpdGllcy5pZGwgXAog
CSQoV2ViQ29yZSkvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbUV2ZW50LmlkbCBcCiAJ
JChXZWJDb3JlKS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJhY2suaWRsIFwKIAkk
KFdlYkNvcmUpL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1UcmFja0V2ZW50LmlkbCBc
CiAJJChXZWJDb3JlKS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJhY2tTb3VyY2Vz
Q2FsbGJhY2suaWRsIFwKKwkkKFdlYkNvcmUpL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFUcmFj
a0NvbnN0cmFpbnQuaWRsIFwKKwkkKFdlYkNvcmUpL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFU
cmFja0NvbnN0cmFpbnRzLmlkbCBcCisJJChXZWJDb3JlKS9Nb2R1bGVzL21lZGlhc3RyZWFtL01l
ZGlhVHJhY2tDb25zdHJhaW50U2V0LmlkbCBcCiAJJChXZWJDb3JlKS9Nb2R1bGVzL21lZGlhc3Ry
ZWFtL05hdmlnYXRvck1lZGlhU3RyZWFtLmlkbCBcCiAJJChXZWJDb3JlKS9Nb2R1bGVzL21lZGlh
c3RyZWFtL05hdmlnYXRvclVzZXJNZWRpYUVycm9yLmlkbCBcCiAJJChXZWJDb3JlKS9Nb2R1bGVz
L21lZGlhc3RyZWFtL05hdmlnYXRvclVzZXJNZWRpYUVycm9yQ2FsbGJhY2suaWRsIFwKQEAgLTE4
NDUsMTIgKzE4NzEsMjAgQEAgd2ViY29yZV9tb2R1bGVzX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvbWVkaWFzb3VyY2UvV2ViS2l0U291cmNlQnVmZmVyLmggXAogCVNvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzb3VyY2UvV2ViS2l0U291cmNlQnVmZmVyTGlzdC5jcHAg
XAogCVNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzb3VyY2UvV2ViS2l0U291cmNlQnVmZmVy
TGlzdC5oIFwKKwlTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL0FsbEF1ZGlvQ2Fw
YWJpbGl0aWVzLmggXAorCVNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vQWxsVmlk
ZW9DYXBhYmlsaXRpZXMuaCBcCiAJU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9B
dWRpb1N0cmVhbVRyYWNrLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVh
bS9BdWRpb1N0cmVhbVRyYWNrLmggXAorCVNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJl
YW0vQ2FwYWJpbGl0eVJhbmdlLmNwcCBcCisJU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0
cmVhbS9DYXBhYmlsaXR5UmFuZ2UuaCBcCiAJU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0
cmVhbS9NZWRpYUNvbnN0cmFpbnRzSW1wbC5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL01vZHVsZXMv
bWVkaWFzdHJlYW0vTWVkaWFDb25zdHJhaW50c0ltcGwuaCBcCisJU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9tZWRpYXN0cmVhbS9NZWRpYVNvdXJjZVN0YXRlcy5jcHAgXAorCVNvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTb3VyY2VTdGF0ZXMuaCBcCiAJU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbS5jcHAgXAogCVNvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW0uaCBcCisJU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbUNhcGFiaWxpdGllcy5jcHAgXAorCVNvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1DYXBhYmlsaXRpZXMuaCBcCiAJ
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbUV2ZW50LmNwcCBc
CiAJU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbUV2ZW50Lmgg
XAogCVNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1SZWdpc3Ry
eS5jcHAgXApAQCAtMTg2Miw2ICsxODk2LDEyIEBAIHdlYmNvcmVfbW9kdWxlc19zb3VyY2VzICs9
IFwKIAlTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJhY2tT
b3VyY2VzQ2FsbGJhY2suaCBcCiAJU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9N
ZWRpYVN0cmVhbVRyYWNrU291cmNlc1JlcXVlc3QuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJhY2tTb3VyY2VzUmVxdWVzdC5oIFwKKwlTb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhVHJhY2tDb25zdHJhaW50LmNwcCBc
CisJU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVRyYWNrQ29uc3RyYWlu
dC5oIFwKKwlTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhVHJhY2tDb25z
dHJhaW50U2V0LmNwcCBcCisJU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRp
YVRyYWNrQ29uc3RyYWludFNldC5oIFwKKwlTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3Ry
ZWFtL01lZGlhVHJhY2tDb25zdHJhaW50cy5jcHAgXAorCVNvdXJjZS9XZWJDb3JlL01vZHVsZXMv
bWVkaWFzdHJlYW0vTWVkaWFUcmFja0NvbnN0cmFpbnRzLmggXAogCVNvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvbWVkaWFzdHJlYW0vTmF2aWdhdG9yTWVkaWFTdHJlYW0uY3BwIFwKIAlTb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL05hdmlnYXRvck1lZGlhU3RyZWFtLmggXAogCVNvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTmF2aWdhdG9yVXNlck1lZGlhRXJyb3IuY3Bw
IFwKQEAgLTUzMjgsNiArNTM2OCw4IEBAIHdlYmNvcmVfcGxhdGZvcm1fc291cmNlcyArPSBcCiAJ
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbGludXgvR2FtZXBhZERldmljZUxpbnV4LmNwcCBcCiAJ
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbGludXgvR2FtZXBhZERldmljZUxpbnV4LmggXAogCVNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlhQ29uc3RyYWludHMuaCBcCisJ
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1BdWRpb1NvdXJj
ZS5jcHAgXAorCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlhU3RyZWFt
QXVkaW9Tb3VyY2UuaCBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVk
aWFTdHJlYW1DZW50ZXIuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVh
bS9NZWRpYVN0cmVhbUNlbnRlci5oIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0
cmVhbS9NZWRpYVN0cmVhbUNvbnN0cmFpbnRzVmFsaWRhdGlvbkNsaWVudC5oIFwKQEAgLTUzMzYs
NiArNTM3OCw3IEBAIHdlYmNvcmVfcGxhdGZvcm1fc291cmNlcyArPSBcCiAJU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1EZXNjcmlwdG9yLmggXAogCVNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtU291cmNlLmNwcCBcCiAJ
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1Tb3VyY2UuaCBc
CisJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1Tb3VyY2VD
YXBhYmlsaXRpZXMuaCBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVk
aWFTdHJlYW1UcmFja1NvdXJjZXNSZXF1ZXN0Q2xpZW50LmggXAogCVNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21lZGlhc3RyZWFtL1JUQ0NvbmZpZ3VyYXRpb24uaCBcCiAJU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWVkaWFzdHJlYW0vUlRDRFRNRlNlbmRlckhhbmRsZXIuaCBcCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9Db25maWd1cmF0aW9ucy9GZWF0dXJlRGVmaW5lcy54Y2NvbmZpZwo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Db25maWd1cmF0aW9ucy9GZWF0dXJlRGVmaW5lcy54Y2Nv
bmZpZwkocmV2aXNpb24gMTU3MDE2KQorKysgU291cmNlL1dlYkNvcmUvQ29uZmlndXJhdGlvbnMv
RmVhdHVyZURlZmluZXMueGNjb25maWcJKHdvcmtpbmcgY29weSkKQEAgLTgyLDYgKzgyLDcgQEAg
RU5BQkxFX0VOQ1JZUFRFRF9NRURJQV9WMl9tYWNvc3ggPSAkKEVOQQogRU5BQkxFX0VOQ1JZUFRF
RF9NRURJQV9WMl9tYWNvc3hfMTA3MCA9IDsKIEVOQUJMRV9FTkNSWVBURURfTUVESUFfVjJfbWFj
b3N4XzEwODAgPSA7CiBFTkFCTEVfRU5DUllQVEVEX01FRElBX1YyX21hY29zeF8xMDkwID0gRU5B
QkxFX0VOQ1JZUFRFRF9NRURJQV9WMjsKK0VOQUJMRV9NRURJQV9TVFJFQU0gPSBFTkFCTEVfTUVE
SUFfU1RSRUFNOwogRU5BQkxFX0ZJTFRFUlMgPSBFTkFCTEVfRklMVEVSUzsKIEVOQUJMRV9GT05U
X0xPQURfRVZFTlRTID0gOwogRU5BQkxFX0ZVTExTQ1JFRU5fQVBJID0gJChFTkFCTEVfRlVMTFND
UkVFTl9BUElfJChQTEFURk9STV9OQU1FKSk7CkBAIC0xODYsNCArMTg3LDQgQEAgRU5BQkxFX1hT
TFQgPSBFTkFCTEVfWFNMVDsKIAogRU5BQkxFX0ZUTF9KSVQgPSA7CiAKLUZFQVRVUkVfREVGSU5F
UyA9ICQoRU5BQkxFXzNEX1JFTkRFUklORykgJChFTkFCTEVfQUNDRUxFUkFURURfMkRfQ0FOVkFT
KSAkKEVOQUJMRV9CTE9CKSAkKEVOQUJMRV9DQUNIRV9QQVJUSVRJT05JTkcpICQoRU5BQkxFX0NB
TlZBU19QQVRIKSAkKEVOQUJMRV9DQU5WQVNfUFJPWFkpICQoRU5BQkxFX0NIQU5ORUxfTUVTU0FH
SU5HKSAkKEVOQUJMRV9DU1BfTkVYVCkgJChFTkFCTEVfQ1NTX0JPWF9ERUNPUkFUSU9OX0JSRUFL
KSAkKEVOQUJMRV9DU1NfQ09NUE9TSVRJTkcpICQoRU5BQkxFX0NTU19ERVZJQ0VfQURBUFRBVElP
TikgJChFTkFCTEVfQ1NTX0VYQ0xVU0lPTlMpICQoRU5BQkxFX0NTU19GSUxURVJTKSAkKEVOQUJM
RV9DU1NfSU1BR0VfT1JJRU5UQVRJT04pICQoRU5BQkxFX0NTU19JTUFHRV9SRVNPTFVUSU9OKSAk
KEVOQUJMRV9DU1NfUkVHSU9OUykgJChFTkFCTEVfQ1NTX1NIQURFUlMpICQoRU5BQkxFX0NTU19T
SEFQRVMpICQoRU5BQkxFX0NTU19TVElDS1lfUE9TSVRJT04pICQoRU5BQkxFX0NTU19UUkFOU0ZP
Uk1TX0FOSU1BVElPTlNfVU5QUkVGSVhFRCkgJChFTkFCTEVfQ1NTX1ZBUklBQkxFUykgJChFTkFC
TEVfQ1NTM19DT05ESVRJT05BTF9SVUxFUykgJChFTkFCTEVfQ1NTM19URVhUKSAkKEVOQUJMRV9D
U1MzX1RFWFRfTElORV9CUkVBSykgJChFTkFCTEVfQ1VSU09SX1ZJU0lCSUxJVFkpICQoRU5BQkxF
X0NVU1RPTV9TQ0hFTUVfSEFORExFUikgJChFTkFCTEVfREFTSEJPQVJEX1NVUFBPUlQpICQoRU5B
QkxFX0RBVEFMSVNUX0VMRU1FTlQpICQoRU5BQkxFX0RBVEFfVFJBTlNGRVJfSVRFTVMpICQoRU5B
QkxFX0RFVEFJTFNfRUxFTUVOVCkgJChFTkFCTEVfREVWSUNFX09SSUVOVEFUSU9OKSAkKEVOQUJM
RV9ESVJFQ1RPUllfVVBMT0FEKSAkKEVOQUJMRV9ET000X0VWRU5UU19DT05TVFJVQ1RPUikgJChF
TkFCTEVfRFJBR0dBQkxFX1JFR0lPTikgJChFTkFCTEVfRU5DUllQVEVEX01FRElBKSAkKEVOQUJM
RV9FTkNSWVBURURfTUVESUFfVjIpICQoRU5BQkxFX0ZJTFRFUlMpICQoRU5BQkxFX0ZPTlRfTE9B
RF9FVkVOVFMpICQoRU5BQkxFX0ZVTExTQ1JFRU5fQVBJKSAkKEVOQUJMRV9HQU1FUEFEKSAkKEVO
QUJMRV9HRU9MT0NBVElPTikgJChFTkFCTEVfSElEREVOX1BBR0VfRE9NX1RJTUVSX1RIUk9UVExJ
TkcpICQoRU5BQkxFX0hJR0hfRFBJX0NBTlZBUykgJChFTkFCTEVfSUNPTkRBVEFCQVNFKSAkKEVO
QUJMRV9JRlJBTUVfU0VBTUxFU1MpICQoRU5BQkxFX0lOREVYRURfREFUQUJBU0UpICQoRU5BQkxF
X0lORElFX1VJKSAkKEVOQUJMRV9JTlBVVF9TUEVFQ0gpICQoRU5BQkxFX0lOUFVUX1RZUEVfQ09M
T1IpICQoRU5BQkxFX0lOUFVUX1RZUEVfQ09MT1JfUE9QT1ZFUikgJChFTkFCTEVfSU5QVVRfVFlQ
RV9EQVRFKSAkKEVOQUJMRV9JTlBVVF9UWVBFX0RBVEVUSU1FX0lOQ09NUExFVEUpICQoRU5BQkxF
X0lOUFVUX1RZUEVfREFURVRJTUVMT0NBTCkgJChFTkFCTEVfSU5QVVRfVFlQRV9NT05USCkgJChF
TkFCTEVfSU5QVVRfVFlQRV9USU1FKSAkKEVOQUJMRV9JTlBVVF9UWVBFX1dFRUspICQoRU5BQkxF
X0pBVkFTQ1JJUFRfREVCVUdHRVIpICQoRU5BQkxFX0xFR0FDWV9DU1NfVkVORE9SX1BSRUZJWEVT
KSAkKEVOQUJMRV9MRUdBQ1lfTk9USUZJQ0FUSU9OUykgJChFTkFCTEVfTEVHQUNZX1ZFTkRPUl9Q
UkVGSVhFUykgJChFTkFCTEVfTEVHQUNZX1dFQl9BVURJTykgJChFTkFCTEVfTElOS19QUkVGRVRD
SCkgJChFTkFCTEVfTUFUSE1MKSAkKEVOQUJMRV9NRURJQV9DT05UUk9MU19TQ1JJUFQpICQoRU5B
QkxFX01FRElBX1NPVVJDRSkgJChFTkFCTEVfTUVESUFfU1RBVElTVElDUykgJChFTkFCTEVfTUVU
RVJfRUxFTUVOVCkgJChFTkFCTEVfTUhUTUwpICQoRU5BQkxFX01PVVNFX0NVUlNPUl9TQ0FMRSkg
JChFTkFCTEVfTkFWSUdBVE9SX0NPTlRFTlRfVVRJTFMpICQoRU5BQkxFX05PVElGSUNBVElPTlMp
ICQoRU5BQkxFX1BBR0VfVklTSUJJTElUWV9BUEkpICQoRU5BQkxFX1BERktJVF9QTFVHSU4pICQo
RU5BQkxFX1BMVUdJTl9QUk9YWV9GT1JfVklERU8pICQoRU5BQkxFX1BST0dSRVNTX0VMRU1FTlQp
ICQoRU5BQkxFX1BST01JU0VTKSAkKEVOQUJMRV9QUk9YSU1JVFlfRVZFTlRTKSAkKEVOQUJMRV9Q
VUJMSUNfU1VGRklYX0xJU1QpICQoRU5BQkxFX1FVT1RBKSAkKEVOQUJMRV9SRVFVRVNUX0FOSU1B
VElPTl9GUkFNRSkgJChFTkFCTEVfUkVTT0xVVElPTl9NRURJQV9RVUVSWSkgJChFTkFCTEVfU0NS
SVBURURfU1BFRUNIKSAkKEVOQUJMRV9TSEFET1dfRE9NKSAkKEVOQUJMRV9TSEFSRURfV09SS0VS
UykgJChFTkFCTEVfU1BFRUNIX1NZTlRIRVNJUykgJChFTkFCTEVfU1FMX0RBVEFCQVNFKSAkKEVO
QUJMRV9TVUJQSVhFTF9MQVlPVVQpICQoRU5BQkxFX1NWRykgJChFTkFCTEVfU1ZHX0ZPTlRTKSAk
KEVOQUJMRV9URU1QTEFURV9FTEVNRU5UKSAkKEVOQUJMRV9URVhUX0FVVE9TSVpJTkcpICQoRU5B
QkxFX1RIUkVBREVEX0hUTUxfUEFSU0VSKSAkKEVOQUJMRV9UT1VDSF9JQ09OX0xPQURJTkcpICQo
RU5BQkxFX1VTRVJTRUxFQ1RfQUxMKSAkKEVOQUJMRV9WSURFTykgJChFTkFCTEVfVklERU9fVFJB
Q0spICQoRU5BQkxFX1ZJRVdfTU9ERV9DU1NfTUVESUEpICQoRU5BQkxFX1dFQkdMKSAkKEVOQUJM
RV9XRUJfQVVESU8pICQoRU5BQkxFX1dFQl9TT0NLRVRTKSAkKEVOQUJMRV9XRUJfVElNSU5HKSAk
KEVOQUJMRV9XT1JLRVJTKSAkKEVOQUJMRV9YSFJfVElNRU9VVCkgJChFTkFCTEVfWFNMVCkgJChF
TkFCTEVfRlRMX0pJVCkgJChGRUFUVVJFX0RFRklORVNfJChQTEFURk9STV9OQU1FKSk7CitGRUFU
VVJFX0RFRklORVMgPSAkKEVOQUJMRV8zRF9SRU5ERVJJTkcpICQoRU5BQkxFX0FDQ0VMRVJBVEVE
XzJEX0NBTlZBUykgJChFTkFCTEVfQkxPQikgJChFTkFCTEVfQ0FDSEVfUEFSVElUSU9OSU5HKSAk
KEVOQUJMRV9DQU5WQVNfUEFUSCkgJChFTkFCTEVfQ0FOVkFTX1BST1hZKSAkKEVOQUJMRV9DSEFO
TkVMX01FU1NBR0lORykgJChFTkFCTEVfQ1NQX05FWFQpICQoRU5BQkxFX0NTU19CT1hfREVDT1JB
VElPTl9CUkVBSykgJChFTkFCTEVfQ1NTX0NPTVBPU0lUSU5HKSAkKEVOQUJMRV9DU1NfREVWSUNF
X0FEQVBUQVRJT04pICQoRU5BQkxFX0NTU19FWENMVVNJT05TKSAkKEVOQUJMRV9DU1NfRklMVEVS
UykgJChFTkFCTEVfQ1NTX0lNQUdFX09SSUVOVEFUSU9OKSAkKEVOQUJMRV9DU1NfSU1BR0VfUkVT
T0xVVElPTikgJChFTkFCTEVfQ1NTX1JFR0lPTlMpICQoRU5BQkxFX0NTU19TSEFERVJTKSAkKEVO
QUJMRV9DU1NfU0hBUEVTKSAkKEVOQUJMRV9DU1NfU1RJQ0tZX1BPU0lUSU9OKSAkKEVOQUJMRV9D
U1NfVFJBTlNGT1JNU19BTklNQVRJT05TX1VOUFJFRklYRUQpICQoRU5BQkxFX0NTU19WQVJJQUJM
RVMpICQoRU5BQkxFX0NTUzNfQ09ORElUSU9OQUxfUlVMRVMpICQoRU5BQkxFX0NTUzNfVEVYVCkg
JChFTkFCTEVfQ1NTM19URVhUX0xJTkVfQlJFQUspICQoRU5BQkxFX0NVUlNPUl9WSVNJQklMSVRZ
KSAkKEVOQUJMRV9DVVNUT01fU0NIRU1FX0hBTkRMRVIpICQoRU5BQkxFX0RBU0hCT0FSRF9TVVBQ
T1JUKSAkKEVOQUJMRV9EQVRBTElTVF9FTEVNRU5UKSAkKEVOQUJMRV9EQVRBX1RSQU5TRkVSX0lU
RU1TKSAkKEVOQUJMRV9ERVRBSUxTX0VMRU1FTlQpICQoRU5BQkxFX0RFVklDRV9PUklFTlRBVElP
TikgJChFTkFCTEVfRElSRUNUT1JZX1VQTE9BRCkgJChFTkFCTEVfRE9NNF9FVkVOVFNfQ09OU1RS
VUNUT1IpICQoRU5BQkxFX0RSQUdHQUJMRV9SRUdJT04pICQoRU5BQkxFX0VOQ1JZUFRFRF9NRURJ
QSkgJChFTkFCTEVfRU5DUllQVEVEX01FRElBX1YyKSAkKEVOQUJMRV9NRURJQV9TVFJFQU0pICQo
RU5BQkxFX0ZJTFRFUlMpICQoRU5BQkxFX0ZPTlRfTE9BRF9FVkVOVFMpICQoRU5BQkxFX0ZVTExT
Q1JFRU5fQVBJKSAkKEVOQUJMRV9HQU1FUEFEKSAkKEVOQUJMRV9HRU9MT0NBVElPTikgJChFTkFC
TEVfSElEREVOX1BBR0VfRE9NX1RJTUVSX1RIUk9UVExJTkcpICQoRU5BQkxFX0hJR0hfRFBJX0NB
TlZBUykgJChFTkFCTEVfSUNPTkRBVEFCQVNFKSAkKEVOQUJMRV9JRlJBTUVfU0VBTUxFU1MpICQo
RU5BQkxFX0lOREVYRURfREFUQUJBU0UpICQoRU5BQkxFX0lORElFX1VJKSAkKEVOQUJMRV9JTlBV
VF9TUEVFQ0gpICQoRU5BQkxFX0lOUFVUX1RZUEVfQ09MT1IpICQoRU5BQkxFX0lOUFVUX1RZUEVf
Q09MT1JfUE9QT1ZFUikgJChFTkFCTEVfSU5QVVRfVFlQRV9EQVRFKSAkKEVOQUJMRV9JTlBVVF9U
WVBFX0RBVEVUSU1FX0lOQ09NUExFVEUpICQoRU5BQkxFX0lOUFVUX1RZUEVfREFURVRJTUVMT0NB
TCkgJChFTkFCTEVfSU5QVVRfVFlQRV9NT05USCkgJChFTkFCTEVfSU5QVVRfVFlQRV9USU1FKSAk
KEVOQUJMRV9JTlBVVF9UWVBFX1dFRUspICQoRU5BQkxFX0pBVkFTQ1JJUFRfREVCVUdHRVIpICQo
RU5BQkxFX0xFR0FDWV9DU1NfVkVORE9SX1BSRUZJWEVTKSAkKEVOQUJMRV9MRUdBQ1lfTk9USUZJ
Q0FUSU9OUykgJChFTkFCTEVfTEVHQUNZX1ZFTkRPUl9QUkVGSVhFUykgJChFTkFCTEVfTEVHQUNZ
X1dFQl9BVURJTykgJChFTkFCTEVfTElOS19QUkVGRVRDSCkgJChFTkFCTEVfTUFUSE1MKSAkKEVO
QUJMRV9NRURJQV9DT05UUk9MU19TQ1JJUFQpICQoRU5BQkxFX01FRElBX1NPVVJDRSkgJChFTkFC
TEVfTUVESUFfU1RBVElTVElDUykgJChFTkFCTEVfTUVURVJfRUxFTUVOVCkgJChFTkFCTEVfTUhU
TUwpICQoRU5BQkxFX01PVVNFX0NVUlNPUl9TQ0FMRSkgJChFTkFCTEVfTkFWSUdBVE9SX0NPTlRF
TlRfVVRJTFMpICQoRU5BQkxFX05PVElGSUNBVElPTlMpICQoRU5BQkxFX1BBR0VfVklTSUJJTElU
WV9BUEkpICQoRU5BQkxFX1BERktJVF9QTFVHSU4pICQoRU5BQkxFX1BMVUdJTl9QUk9YWV9GT1Jf
VklERU8pICQoRU5BQkxFX1BST0dSRVNTX0VMRU1FTlQpICQoRU5BQkxFX1BST01JU0VTKSAkKEVO
QUJMRV9QUk9YSU1JVFlfRVZFTlRTKSAkKEVOQUJMRV9QVUJMSUNfU1VGRklYX0xJU1QpICQoRU5B
QkxFX1FVT1RBKSAkKEVOQUJMRV9SRVFVRVNUX0FOSU1BVElPTl9GUkFNRSkgJChFTkFCTEVfUkVT
T0xVVElPTl9NRURJQV9RVUVSWSkgJChFTkFCTEVfU0NSSVBURURfU1BFRUNIKSAkKEVOQUJMRV9T
SEFET1dfRE9NKSAkKEVOQUJMRV9TSEFSRURfV09SS0VSUykgJChFTkFCTEVfU1BFRUNIX1NZTlRI
RVNJUykgJChFTkFCTEVfU1FMX0RBVEFCQVNFKSAkKEVOQUJMRV9TVUJQSVhFTF9MQVlPVVQpICQo
RU5BQkxFX1NWRykgJChFTkFCTEVfU1ZHX0ZPTlRTKSAkKEVOQUJMRV9URU1QTEFURV9FTEVNRU5U
KSAkKEVOQUJMRV9URVhUX0FVVE9TSVpJTkcpICQoRU5BQkxFX1RIUkVBREVEX0hUTUxfUEFSU0VS
KSAkKEVOQUJMRV9UT1VDSF9JQ09OX0xPQURJTkcpICQoRU5BQkxFX1VTRVJTRUxFQ1RfQUxMKSAk
KEVOQUJMRV9WSURFTykgJChFTkFCTEVfVklERU9fVFJBQ0spICQoRU5BQkxFX1ZJRVdfTU9ERV9D
U1NfTUVESUEpICQoRU5BQkxFX1dFQkdMKSAkKEVOQUJMRV9XRUJfQVVESU8pICQoRU5BQkxFX1dF
Ql9TT0NLRVRTKSAkKEVOQUJMRV9XRUJfVElNSU5HKSAkKEVOQUJMRV9XT1JLRVJTKSAkKEVOQUJM
RV9YSFJfVElNRU9VVCkgJChFTkFCTEVfWFNMVCkgJChFTkFCTEVfRlRMX0pJVCkgJChGRUFUVVJF
X0RFRklORVNfJChQTEFURk9STV9OQU1FKSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L21lZGlhc3RyZWFtL0FsbEF1ZGlvQ2FwYWJpbGl0aWVzLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9BbGxBdWRpb0NhcGFiaWxpdGllcy5oCShyZXZp
c2lvbiAwKQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9BbGxBdWRpb0Nh
cGFiaWxpdGllcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNTkgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4g
YGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBP
UgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNp
Zm5kZWYgQWxsQXVkaW9DYXBhYmlsaXRpZXNfaAorI2RlZmluZSBBbGxBdWRpb0NhcGFiaWxpdGll
c19oCisKKyNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQorCisjaW5jbHVkZSAiTWVkaWFTdHJlYW1D
YXBhYmlsaXRpZXMuaCIKKyNpbmNsdWRlICJNZWRpYVN0cmVhbVNvdXJjZUNhcGFiaWxpdGllcy5o
IgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7
CisKK2NsYXNzIENhcGFiaWxpdHlSYW5nZTsKK2NsYXNzIE1lZGlhU3RyZWFtU291cmNlQ2FwYWJp
bGl0aWVzOworCitjbGFzcyBBbGxBdWRpb0NhcGFiaWxpdGllcyA6IHB1YmxpYyBNZWRpYVN0cmVh
bUNhcGFiaWxpdGllcyB7CitwdWJsaWM6CisgICAgc3RhdGljIFBhc3NSZWZQdHI8QWxsQXVkaW9D
YXBhYmlsaXRpZXM+IGNyZWF0ZShQYXNzUmVmUHRyPE1lZGlhU3RyZWFtU291cmNlQ2FwYWJpbGl0
aWVzPiBjYXBhYmlsaXRpZXMpCisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEFs
bEF1ZGlvQ2FwYWJpbGl0aWVzKGNhcGFiaWxpdGllcykpOworICAgIH0KKyAgICB2aXJ0dWFsIH5B
bGxBdWRpb0NhcGFiaWxpdGllcygpIHsgfQorCitwcml2YXRlOgorICAgIGV4cGxpY2l0IEFsbEF1
ZGlvQ2FwYWJpbGl0aWVzKFBhc3NSZWZQdHI8TWVkaWFTdHJlYW1Tb3VyY2VDYXBhYmlsaXRpZXM+
IGNhcGFiaWxpdGllcykKKyAgICAgICAgOiBNZWRpYVN0cmVhbUNhcGFiaWxpdGllcyhjYXBhYmls
aXRpZXMpCisgICAgeworICAgIH0KK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2Vu
ZGlmIC8vIEFsbEF1ZGlvQ2FwYWJpbGl0aWVzX2gKKworI2VuZGlmCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL0FsbEF1ZGlvQ2FwYWJpbGl0aWVzLmlkbAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL0FsbEF1ZGlvQ2FwYWJp
bGl0aWVzLmlkbAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFz
dHJlYW0vQWxsQXVkaW9DYXBhYmlsaXRpZXMuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEs
MzMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLiAKKyAqLworCitbCisgICAgTm9JbnRlcmZhY2VPYmplY3QsCisgICAgQ29uZGl0aW9u
YWw9TUVESUFfU1RSRUFNLAorICAgIEpTR2VuZXJhdGVUb0pTT2JqZWN0LAorXSBpbnRlcmZhY2Ug
QWxsQXVkaW9DYXBhYmlsaXRpZXMgOiBNZWRpYVN0cmVhbUNhcGFiaWxpdGllcyB7CisgICAgcmVh
ZG9ubHkgYXR0cmlidXRlIERPTVN0cmluZ1tdIHNvdXJjZUlkOworICAgIHJlYWRvbmx5IGF0dHJp
YnV0ZSBDYXBhYmlsaXR5UmFuZ2Ugdm9sdW1lOworfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvbWVkaWFzdHJlYW0vQWxsVmlkZW9DYXBhYmlsaXRpZXMuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL0FsbFZpZGVvQ2FwYWJpbGl0aWVzLmgJ
KHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL0FsbFZp
ZGVvQ2FwYWJpbGl0aWVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw1NyBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwg
SU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJ
TkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICog
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI2lmbmRlZiBBbGxWaWRlb0NhcGFiaWxpdGllc19oCisjZGVmaW5lIEFsbFZpZGVvQ2FwYWJp
bGl0aWVzX2gKKworI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCisKKyNpbmNsdWRlICJNZWRpYVN0
cmVhbUNhcGFiaWxpdGllcy5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIENhcGFi
aWxpdHlSYW5nZTsKK2NsYXNzIE1lZGlhU3RyZWFtU291cmNlQ2FwYWJpbGl0aWVzOworCitjbGFz
cyBBbGxWaWRlb0NhcGFiaWxpdGllcyA6IHB1YmxpYyBNZWRpYVN0cmVhbUNhcGFiaWxpdGllcyB7
CitwdWJsaWM6CisgICAgc3RhdGljIFBhc3NSZWZQdHI8QWxsVmlkZW9DYXBhYmlsaXRpZXM+IGNy
ZWF0ZShQYXNzUmVmUHRyPE1lZGlhU3RyZWFtU291cmNlQ2FwYWJpbGl0aWVzPiBjYXBhYmlsaXRp
ZXMpCisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEFsbFZpZGVvQ2FwYWJpbGl0
aWVzKGNhcGFiaWxpdGllcykpOworICAgIH0KKyAgICB2aXJ0dWFsIH5BbGxWaWRlb0NhcGFiaWxp
dGllcygpIHsgfQorCitwcml2YXRlOgorICAgIGV4cGxpY2l0IEFsbFZpZGVvQ2FwYWJpbGl0aWVz
KFBhc3NSZWZQdHI8TWVkaWFTdHJlYW1Tb3VyY2VDYXBhYmlsaXRpZXM+IGNhcGFiaWxpdGllcykK
KyAgICAgICAgOiBNZWRpYVN0cmVhbUNhcGFiaWxpdGllcyhjYXBhYmlsaXRpZXMpCisgICAgewor
ICAgIH0KK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEFsbFZpZGVv
Q2FwYWJpbGl0aWVzX2gKKworI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21l
ZGlhc3RyZWFtL0FsbFZpZGVvQ2FwYWJpbGl0aWVzLmlkbAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL0FsbFZpZGVvQ2FwYWJpbGl0aWVzLmlkbAkocmV2
aXNpb24gMCkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vQWxsVmlkZW9D
YXBhYmlsaXRpZXMuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMzggQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElO
Qy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5D
LiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLwor
CitbCisgICAgTm9JbnRlcmZhY2VPYmplY3QsCisgICAgQ29uZGl0aW9uYWw9TUVESUFfU1RSRUFN
LAorICAgIEpTR2VuZXJhdGVUb0pTT2JqZWN0LAorXSBpbnRlcmZhY2UgQWxsVmlkZW9DYXBhYmls
aXRpZXMgOiBNZWRpYVN0cmVhbUNhcGFiaWxpdGllcyB7CisgICAgcmVhZG9ubHkgYXR0cmlidXRl
IERPTVN0cmluZ1tdIHNvdXJjZVR5cGU7CisgICAgcmVhZG9ubHkgYXR0cmlidXRlIERPTVN0cmlu
Z1tdIHNvdXJjZUlkOworICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBDYXBhYmlsaXR5UmFuZ2Ugd2lk
dGg7CisgICAgcmVhZG9ubHkgYXR0cmlidXRlIENhcGFiaWxpdHlSYW5nZSBoZWlnaHQ7CisgICAg
cmVhZG9ubHkgYXR0cmlidXRlIENhcGFiaWxpdHlSYW5nZSBmcmFtZVJhdGU7CisgICAgcmVhZG9u
bHkgYXR0cmlidXRlIENhcGFiaWxpdHlSYW5nZSBhc3BlY3RSYXRpbzsKKyAgICByZWFkb25seSBh
dHRyaWJ1dGUgRE9NU3RyaW5nW10gIGZhY2luZ01vZGU7Cit9OwpJbmRleDogU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9BdWRpb1N0cmVhbVRyYWNrLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL0F1ZGlvU3RyZWFtVHJhY2suY3Bw
CShyZXZpc2lvbiAxNTcwMTYpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFt
L0F1ZGlvU3RyZWFtVHJhY2suY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNywxNCArMzcsMTcgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogCiBQYXNzUmVmUHRyPEF1ZGlvU3RyZWFtVHJhY2s+IEF1ZGlv
U3RyZWFtVHJhY2s6OmNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBjb25z
dCBEaWN0aW9uYXJ5JiBhdWRpb0NvbnN0cmFpbnRzKQogewotICAgIFJlZlB0cjxBdWRpb1N0cmVh
bVRyYWNrPiB0cmFjayA9IGFkb3B0UmVmKG5ldyBBdWRpb1N0cmVhbVRyYWNrKGNvbnRleHQsIDAs
ICZhdWRpb0NvbnN0cmFpbnRzKSk7Ci0gICAgcmV0dXJuIHRyYWNrLnJlbGVhc2UoKTsKKyAgICBy
ZXR1cm4gYWRvcHRSZWYobmV3IEF1ZGlvU3RyZWFtVHJhY2soY29udGV4dCwgMCwgJmF1ZGlvQ29u
c3RyYWludHMpKTsKIH0KIAogUGFzc1JlZlB0cjxBdWRpb1N0cmVhbVRyYWNrPiBBdWRpb1N0cmVh
bVRyYWNrOjpjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgTWVkaWFTdHJl
YW1Tb3VyY2UqIHNvdXJjZSkKIHsKLSAgICBSZWZQdHI8QXVkaW9TdHJlYW1UcmFjaz4gdHJhY2sg
PSBhZG9wdFJlZihuZXcgQXVkaW9TdHJlYW1UcmFjayhjb250ZXh0LCBzb3VyY2UsIDApKTsKLSAg
ICByZXR1cm4gdHJhY2sucmVsZWFzZSgpOworICAgIHJldHVybiBhZG9wdFJlZihuZXcgQXVkaW9T
dHJlYW1UcmFjayhjb250ZXh0LCBzb3VyY2UsIDApKTsKK30KKworUGFzc1JlZlB0cjxBdWRpb1N0
cmVhbVRyYWNrPiBBdWRpb1N0cmVhbVRyYWNrOjpjcmVhdGUoTWVkaWFTdHJlYW1UcmFjayogdHJh
Y2spCit7CisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBBdWRpb1N0cmVhbVRyYWNrKHRyYWNrKSk7
CiB9CiAKIEF1ZGlvU3RyZWFtVHJhY2s6OkF1ZGlvU3RyZWFtVHJhY2soU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCogY29udGV4dCwgTWVkaWFTdHJlYW1Tb3VyY2UqIHNvdXJjZSwgY29uc3QgRGljdGlv
bmFyeSogYXVkaW9Db25zdHJhaW50cykKQEAgLTUyLDYgKzU1LDExIEBAIEF1ZGlvU3RyZWFtVHJh
Y2s6OkF1ZGlvU3RyZWFtVHJhY2soU2NyaXAKIHsKIH0KIAorQXVkaW9TdHJlYW1UcmFjazo6QXVk
aW9TdHJlYW1UcmFjayhNZWRpYVN0cmVhbVRyYWNrKiB0cmFjaykKKyAgICA6IE1lZGlhU3RyZWFt
VHJhY2sodHJhY2spCit7Cit9CisKIGNvbnN0IEF0b21pY1N0cmluZyYgQXVkaW9TdHJlYW1UcmFj
azo6a2luZCgpIGNvbnN0CiB7CiAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEF0b21pY1N0cmlu
Zz4gYXVkaW9LaW5kKCJhdWRpbyIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwp
OwpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9BdWRpb1N0cmVhbVRy
YWNrLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9B
dWRpb1N0cmVhbVRyYWNrLmgJKHJldmlzaW9uIDE1NzAzOSkKKysrIFNvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvbWVkaWFzdHJlYW0vQXVkaW9TdHJlYW1UcmFjay5oCSh3b3JraW5nIGNvcHkpCkBAIC0y
OSw4ICsyOSw4IEBACiAjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKIAogI2luY2x1ZGUgIk1lZGlh
U3RyZWFtVHJhY2suaCIKLSNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAjaW5jbHVkZSA8d3RmL1Jl
ZkNvdW50ZWQuaD4KKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIApAQCAtNDEsNiArNDEsNyBAQCBjbGFzcyBBdWRpb1N0cmVhbVRyYWNrIEZJTkFMIDogcHVi
bGljIE1lCiBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8QXVkaW9TdHJlYW1UcmFjaz4g
Y3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBjb25zdCBEaWN0aW9uYXJ5Jik7CiAgICAg
c3RhdGljIFBhc3NSZWZQdHI8QXVkaW9TdHJlYW1UcmFjaz4gY3JlYXRlKFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQqLCBNZWRpYVN0cmVhbVNvdXJjZSopOworICAgIHN0YXRpYyBQYXNzUmVmUHRyPEF1
ZGlvU3RyZWFtVHJhY2s+IGNyZWF0ZShNZWRpYVN0cmVhbVRyYWNrKik7CiAKICAgICB2aXJ0dWFs
IH5BdWRpb1N0cmVhbVRyYWNrKCkgeyB9CiAKQEAgLTQ4LDYgKzQ5LDcgQEAgcHVibGljOgogCiBw
cml2YXRlOgogICAgIEF1ZGlvU3RyZWFtVHJhY2soU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIE1l
ZGlhU3RyZWFtU291cmNlKiwgY29uc3QgRGljdGlvbmFyeSopOworICAgIGV4cGxpY2l0IEF1ZGlv
U3RyZWFtVHJhY2soTWVkaWFTdHJlYW1UcmFjayopOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9DYXBhYmlsaXR5
UmFuZ2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJl
YW0vQ2FwYWJpbGl0eVJhbmdlLmNwcAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvbWVkaWFzdHJlYW0vQ2FwYWJpbGl0eVJhbmdlLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MCwwICsxLDkyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
Q09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4gCisgKgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2lmIEVOQUJMRShNRURJ
QV9TVFJFQU0pCisKKyNpbmNsdWRlICJDYXBhYmlsaXR5UmFuZ2UuaCIKKworI2luY2x1ZGUgIkpT
RE9NQmluZGluZy5oIgorI2luY2x1ZGUgIk1lZGlhU291cmNlU3RhdGVzLmgiCisjaW5jbHVkZSAi
U2NyaXB0VmFsdWUuaCIKKyNpbmNsdWRlIDxpbnRlcnByZXRlci9DYWxsRnJhbWUuaD4KKyNpbmNs
dWRlIDxydW50aW1lL0pTQ0pTVmFsdWUuaD4KKwordXNpbmcgbmFtZXNwYWNlIEpTQzsKKworbmFt
ZXNwYWNlIFdlYkNvcmUgeworCitQYXNzUmVmUHRyPENhcGFiaWxpdHlSYW5nZT4gQ2FwYWJpbGl0
eVJhbmdlOjpjcmVhdGUoY29uc3QgTWVkaWFTdHJlYW1Tb3VyY2VDYXBhYmlsaXR5UmFuZ2UmIHJh
bmdlSW5mbykKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3IENhcGFiaWxpdHlSYW5nZShyYW5n
ZUluZm8pKTsKK30KKworQ2FwYWJpbGl0eVJhbmdlOjpDYXBhYmlsaXR5UmFuZ2UoY29uc3QgTWVk
aWFTdHJlYW1Tb3VyY2VDYXBhYmlsaXR5UmFuZ2UmIHJhbmdlSW5mbykKKyAgICA6IG1fcmFuZ2VJ
bmZvKHJhbmdlSW5mbykKK3sKK30KKworc3RhdGljIFNjcmlwdFZhbHVlIHNjcmlwdFZhbHVlKEV4
ZWNTdGF0ZSogZXhlYywgY29uc3QgTWVkaWFTdHJlYW1Tb3VyY2VDYXBhYmlsaXR5UmFuZ2U6OlZh
bHVlVW5pb24mIHZhbHVlLCBNZWRpYVN0cmVhbVNvdXJjZUNhcGFiaWxpdHlSYW5nZTo6VHlwZSB0
eXBlKQoreworICAgIC8vIE5PVEU6IHRoZSBzcGVjIHNheXM6CisgICAgLy8gICAgICAuLi4gYW4g
aW1wbGVtZW50YXRpb24gc2hvdWxkIG1ha2UgYSByZWFzb25hYmxlIGF0dGVtcHQgdG8gdHJhbnNs
YXRlIGFuZCBzY2FsZSB0aGUgaGFyZHdhcmUncyBzZXR0aW5nCisgICAgLy8gICAgICBvbnRvIHRo
ZSBtYXBwaW5nIHByb3ZpZGVkIGJ5IHRoaXMgc3BlY2lmaWNhdGlvbi4gSWYgdGhpcyBpcyBub3Qg
cG9zc2libGUgZHVlIHRvIHRoZSB1c2VyIGFnZW50J3MKKyAgICAvLyAgICAgIGluYWJpbGl0eSB0
byByZXRyaWV2ZSBhIGdpdmVuIGNhcGFiaWxpdHkgZnJvbSBhIHNvdXJjZSwgdGhlbiBmb3IgQ2Fw
YWJpbGl0eVJhbmdlLXR5cGVkIGNhcGFiaWxpdGllcywKKyAgICAvLyAgICAgIHRoZSBtaW4gYW5k
IG1heCBmaWVsZHMgd2lsbCBub3QgYmUgcHJlc2VudCBvbiB0aGUgcmV0dXJuZWQgZGljdGlvbmFy
eSwgYW5kIHRoZSBzdXBwb3J0ZWQgZmllbGQgd2lsbCBiZSBmYWxzZS4KKyAgICAvLyBXZSBkb24n
dCBkbyB0aGlzIGN1cnJlbnRseSBiZWNhdXNlIEkgZG9uJ3Qga25vdyBvZiBhbiBpbnN0YW5jZSB3
aGVyZSBpdCBpc24ndCBwb3NzaWJsZSB0byByZXRyaWV2ZSBhIHNvdXJjZQorICAgIC8vIGNhcGFi
aWxpdHksIGJ1dCB3aGVuIHdlIGhhdmUgdG8gZGVhbCB3aXRoIHRoaXMgd2Ugd2lsbCBuZWVkIHRv
IG1hcmsgQ2FwYWJpbGl0eVJhbmdlLm1pbiBhbmQgQ2FwYWJpbGl0eVJhbmdlLm1heCBhcworICAg
IC8vICJDdXN0b20iIGFuZCByZXR1cm4ganNVbmRlZmluZWQoKSBmcm9tIHRoZSBjdXN0b20gZ2V0
dGVyIHRvIHN1cHBvcnQgaXQuCisgICAgCisgICAgc3dpdGNoICh0eXBlKSB7CisgICAgY2FzZSBN
ZWRpYVN0cmVhbVNvdXJjZUNhcGFiaWxpdHlSYW5nZTo6RmxvYXQ6CisgICAgICAgIHJldHVybiBT
Y3JpcHRWYWx1ZShleGVjLT52bSgpLCBKU1ZhbHVlKHZhbHVlLmFzRmxvYXQpKTsKKyAgICAgICAg
YnJlYWs7CisgICAgY2FzZSBNZWRpYVN0cmVhbVNvdXJjZUNhcGFiaWxpdHlSYW5nZTo6VUxvbmc6
CisgICAgICAgIHJldHVybiBTY3JpcHRWYWx1ZShleGVjLT52bSgpLCBKU1ZhbHVlKHZhbHVlLmFz
VUxvbmcpKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBNZWRpYVN0cmVhbVNvdXJjZUNhcGFi
aWxpdHlSYW5nZTo6VW5kZWZpbmVkOgorICAgICAgICByZXR1cm4gU2NyaXB0VmFsdWUoZXhlYy0+
dm0oKSwganNVbmRlZmluZWQoKSk7CisgICAgICAgIGJyZWFrOworICAgIH0KKworICAgIEFTU0VS
VF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiBTY3JpcHRWYWx1ZShleGVjLT52bSgpLCBqc1Vu
ZGVmaW5lZCgpKTsKK30KKworU2NyaXB0VmFsdWUgQ2FwYWJpbGl0eVJhbmdlOjptaW4oRXhlY1N0
YXRlKiBleGVjKSBjb25zdAoreworICAgIHJldHVybiBzY3JpcHRWYWx1ZShleGVjLCBtX3Jhbmdl
SW5mby5taW4oKSwgbV9yYW5nZUluZm8udHlwZSgpKTsKK30KKworU2NyaXB0VmFsdWUgQ2FwYWJp
bGl0eVJhbmdlOjptYXgoRXhlY1N0YXRlKiBleGVjKSBjb25zdAoreworICAgIHJldHVybiBzY3Jp
cHRWYWx1ZShleGVjLCBtX3JhbmdlSW5mby5tYXgoKSwgbV9yYW5nZUluZm8udHlwZSgpKTsKK30K
KworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvbWVkaWFzdHJlYW0vQ2FwYWJpbGl0eVJhbmdlLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9DYXBhYmlsaXR5UmFuZ2UuaAkocmV2aXNp
b24gMCkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vQ2FwYWJpbGl0eVJh
bmdlLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw2MCBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSwgSU5DLiBgYEFTIElTJycgQU5EIEFO
WQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisg
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICoKKyAqLworCisjaWZuZGVmIENhcGFi
aWxpdHlSYW5nZV9oCisjZGVmaW5lIENhcGFiaWxpdHlSYW5nZV9oCisKKyNpZiBFTkFCTEUoTUVE
SUFfU1RSRUFNKQorCisjaW5jbHVkZSAiTWVkaWFTdHJlYW1Tb3VyY2VDYXBhYmlsaXRpZXMuaCIK
KyNpbmNsdWRlICJTY3JpcHRWYWx1ZS5oIgorI2luY2x1ZGUgIlNjcmlwdFdyYXBwYWJsZS5oIgor
I2luY2x1ZGUgPGludGVycHJldGVyL0NhbGxGcmFtZS5oPgorI2luY2x1ZGUgPHd0Zi9SZWZDb3Vu
dGVkLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgQ2FwYWJpbGl0eVJhbmdlIDog
cHVibGljIFJlZkNvdW50ZWQ8Q2FwYWJpbGl0eVJhbmdlPiwgcHVibGljIFNjcmlwdFdyYXBwYWJs
ZSB7CitwdWJsaWM6CisgICAgdmlydHVhbCB+Q2FwYWJpbGl0eVJhbmdlKCkgeyB9CisKKyAgICBz
dGF0aWMgUGFzc1JlZlB0cjxDYXBhYmlsaXR5UmFuZ2U+IGNyZWF0ZShjb25zdCBNZWRpYVN0cmVh
bVNvdXJjZUNhcGFiaWxpdHlSYW5nZSYpOworCisgICAgU2NyaXB0VmFsdWUgbWluKEpTQzo6RXhl
Y1N0YXRlKikgY29uc3Q7CisgICAgU2NyaXB0VmFsdWUgbWF4KEpTQzo6RXhlY1N0YXRlKikgY29u
c3Q7CisgICAgYm9vbCBzdXBwb3J0ZWQoKSBjb25zdCB7IHJldHVybiBtX3JhbmdlSW5mby5zdXBw
b3J0ZWQoKTsgfQorCitwcml2YXRlOgorICAgIENhcGFiaWxpdHlSYW5nZShjb25zdCBNZWRpYVN0
cmVhbVNvdXJjZUNhcGFiaWxpdHlSYW5nZSYpOworICAgIAorICAgIE1lZGlhU3RyZWFtU291cmNl
Q2FwYWJpbGl0eVJhbmdlIG1fcmFuZ2VJbmZvOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQorCisjZW5kaWYgLy8gQ2FwYWJpbGl0eVJhbmdlX2gKKworI2VuZGlmCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL0NhcGFiaWxpdHlSYW5nZS5pZGwKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9DYXBhYmlsaXR5UmFuZ2Uu
aWRsCShyZXZpc2lvbiAwKQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9D
YXBhYmlsaXR5UmFuZ2UuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMzMgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIs
IElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwg
SU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAq
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAq
LworCitbCisgICAgTm9JbnRlcmZhY2VPYmplY3QsCisgICAgQ29uZGl0aW9uYWw9TUVESUFfU1RS
RUFNLAorXSBpbnRlcmZhY2UgQ2FwYWJpbGl0eVJhbmdlIHsKKyAgICBbQ2FsbFdpdGg9U2NyaXB0
U3RhdGVdIHJlYWRvbmx5IGF0dHJpYnV0ZSBhbnkgbWF4OworICAgIFtDYWxsV2l0aD1TY3JpcHRT
dGF0ZV0gcmVhZG9ubHkgYXR0cmlidXRlIGFueSBtaW47CisgICAgcmVhZG9ubHkgYXR0cmlidXRl
IGJvb2xlYW4gc3VwcG9ydGVkOworfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVk
aWFzdHJlYW0vTWVkaWFDb25zdHJhaW50c0ltcGwuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhQ29uc3RyYWludHNJbXBsLmgJKHJldmlzaW9u
IDE1NzAxNikKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFDb25z
dHJhaW50c0ltcGwuaAkod29ya2luZyBjb3B5KQpAQCAtNDUsNyArNDUsOSBAQCBjbGFzcyBNZWRp
YUNvbnN0cmFpbnRzSW1wbCA6IHB1YmxpYyBNZWRpCiBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NS
ZWZQdHI8TWVkaWFDb25zdHJhaW50c0ltcGw+IGNyZWF0ZSgpOwogICAgIHN0YXRpYyBQYXNzUmVm
UHRyPE1lZGlhQ29uc3RyYWludHNJbXBsPiBjcmVhdGUoY29uc3QgRGljdGlvbmFyeSYsIEV4Y2Vw
dGlvbkNvZGUmKTsKKwogICAgIHZpcnR1YWwgfk1lZGlhQ29uc3RyYWludHNJbXBsKCk7CisgICAg
Ym9vbCBpbml0aWFsaXplKGNvbnN0IERpY3Rpb25hcnkmKTsKIAogICAgIHZpcnR1YWwgdm9pZCBn
ZXRNYW5kYXRvcnlDb25zdHJhaW50cyhWZWN0b3I8TWVkaWFDb25zdHJhaW50PiYpIGNvbnN0IE9W
RVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBnZXRPcHRpb25hbENvbnN0cmFpbnRzKFZlY3RvcjxN
ZWRpYUNvbnN0cmFpbnQ+JikgY29uc3QgT1ZFUlJJREU7CkBAIC01NSw3ICs1Nyw2IEBAIHB1Ymxp
YzoKIAogcHJpdmF0ZToKICAgICBNZWRpYUNvbnN0cmFpbnRzSW1wbCgpIHsgfQotICAgIGJvb2wg
aW5pdGlhbGl6ZShjb25zdCBEaWN0aW9uYXJ5Jik7CiAKICAgICBIYXNoTWFwPFN0cmluZywgU3Ry
aW5nPiBtX21hbmRhdG9yeUNvbnN0cmFpbnRzOwogICAgIFZlY3RvcjxNZWRpYUNvbnN0cmFpbnQ+
IG1fb3B0aW9uYWxDb25zdHJhaW50czsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVk
aWFzdHJlYW0vTWVkaWFTb3VyY2VTdGF0ZXMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTb3VyY2VTdGF0ZXMuY3BwCShyZXZpc2lvbiAw
KQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVNvdXJjZVN0YXRl
cy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxMDAgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJ
UycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICog
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkK
KyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRl
ICJjb25maWcuaCIKKworI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCisKKyNpbmNsdWRlICJNZWRp
YVNvdXJjZVN0YXRlcy5oIgorCisjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CisKK25h
bWVzcGFjZSBXZWJDb3JlIHsKKworUGFzc1JlZlB0cjxNZWRpYVNvdXJjZVN0YXRlcz4gTWVkaWFT
b3VyY2VTdGF0ZXM6OmNyZWF0ZShjb25zdCBNZWRpYVN0cmVhbVNvdXJjZVN0YXRlcyYgc3RhdGVz
KQoreworICAgIHJldHVybiBhZG9wdFJlZihuZXcgTWVkaWFTb3VyY2VTdGF0ZXMoc3RhdGVzKSk7
Cit9CisKK01lZGlhU291cmNlU3RhdGVzOjpNZWRpYVNvdXJjZVN0YXRlcyhjb25zdCBNZWRpYVN0
cmVhbVNvdXJjZVN0YXRlcyYgc3RhdGVzKQorICAgIDogbV9Tb3VyY2VTdGF0ZXMoc3RhdGVzKQor
eworfQorCitjb25zdCBBdG9taWNTdHJpbmcmIE1lZGlhU291cmNlU3RhdGVzOjpmYWNpbmdNb2Rl
KE1lZGlhU3RyZWFtU291cmNlU3RhdGVzOjpWaWRlb0ZhY2luZ01vZGUgbW9kZSkKK3sKKyAgICBz
dGF0aWMgTmV2ZXJEZXN0cm95ZWQ8QXRvbWljU3RyaW5nPiB1c2VyRmFjaW5nKCJ1c2VyIiwgQXRv
bWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJv
eWVkPEF0b21pY1N0cmluZz4gZW52aXJvbm1lbnRGYWNpbmcoImVudmlyb25tZW50IiwgQXRvbWlj
U3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVk
PEF0b21pY1N0cmluZz4gbGVmdEZhY2luZygibGVmdCIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0
RnJvbUxpdGVyYWwpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxBdG9taWNTdHJpbmc+IHJp
Z2h0RmFjaW5nKCJyaWdodCIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwor
ICAgIAorICAgIHN3aXRjaCAobW9kZSkgeworICAgIGNhc2UgTWVkaWFTdHJlYW1Tb3VyY2VTdGF0
ZXM6OlVzZXI6CisgICAgICAgIHJldHVybiB1c2VyRmFjaW5nOworICAgIGNhc2UgTWVkaWFTdHJl
YW1Tb3VyY2VTdGF0ZXM6OkVudmlyb25tZW50OgorICAgICAgICByZXR1cm4gZW52aXJvbm1lbnRG
YWNpbmc7CisgICAgY2FzZSBNZWRpYVN0cmVhbVNvdXJjZVN0YXRlczo6TGVmdDoKKyAgICAgICAg
cmV0dXJuIGxlZnRGYWNpbmc7CisgICAgY2FzZSBNZWRpYVN0cmVhbVNvdXJjZVN0YXRlczo6Umln
aHQ6CisgICAgICAgIHJldHVybiByaWdodEZhY2luZzsKKyAgICB9CisKKyAgICBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsKKyAgICByZXR1cm4gZW1wdHlBdG9tOworfQorCitjb25zdCBBdG9taWNTdHJp
bmcmIE1lZGlhU291cmNlU3RhdGVzOjpzb3VyY2VUeXBlKE1lZGlhU3RyZWFtU291cmNlU3RhdGVz
OjpTb3VyY2VUeXBlIHNvdXJjZVR5cGUpCit7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEF0
b21pY1N0cmluZz4gbm9uZSgibm9uZSIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVy
YWwpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxBdG9taWNTdHJpbmc+IGNhbWVyYSgiY2Ft
ZXJhIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CisgICAgc3RhdGljIE5l
dmVyRGVzdHJveWVkPEF0b21pY1N0cmluZz4gbWljcm9waG9uZSgibWljcm9waG9uZSIsIEF0b21p
Y1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOworCisgICAgc3dpdGNoIChzb3VyY2VUeXBl
KSB7CisgICAgY2FzZSBNZWRpYVN0cmVhbVNvdXJjZVN0YXRlczo6Tm9uZToKKyAgICAgICAgcmV0
dXJuIG5vbmU7CisgICAgY2FzZSBNZWRpYVN0cmVhbVNvdXJjZVN0YXRlczo6Q2FtZXJhOgorICAg
ICAgICByZXR1cm4gY2FtZXJhOworICAgIGNhc2UgTWVkaWFTdHJlYW1Tb3VyY2VTdGF0ZXM6Ok1p
Y3JvcGhvbmU6CisgICAgICAgIHJldHVybiBtaWNyb3Bob25lOworICAgIH0KKworICAgIEFTU0VS
VF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiBlbXB0eUF0b207Cit9CisKK2NvbnN0IEF0b21p
Y1N0cmluZyYgTWVkaWFTb3VyY2VTdGF0ZXM6OnNvdXJjZVR5cGUoKSBjb25zdAoreworICAgIHJl
dHVybiBNZWRpYVNvdXJjZVN0YXRlczo6c291cmNlVHlwZShtX1NvdXJjZVN0YXRlcy5zb3VyY2VU
eXBlKTsKK30KKworY29uc3QgQXRvbWljU3RyaW5nJiBNZWRpYVNvdXJjZVN0YXRlczo6ZmFjaW5n
TW9kZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE1lZGlhU291cmNlU3RhdGVzOjpmYWNpbmdNb2Rl
KG1fU291cmNlU3RhdGVzLmZhY2luZ01vZGUpOworfQorCisKK30gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKKworI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01l
ZGlhU291cmNlU3RhdGVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9t
ZWRpYXN0cmVhbS9NZWRpYVNvdXJjZVN0YXRlcy5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVNvdXJjZVN0YXRlcy5oCSh3b3JraW5nIGNv
cHkpCkBAIC0wLDAgKzEsNjYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgTWVkaWFTb3VyY2VTdGF0ZXNf
aAorI2RlZmluZSBNZWRpYVNvdXJjZVN0YXRlc19oCisKKyNpZiBFTkFCTEUoTUVESUFfU1RSRUFN
KQorCisjaW5jbHVkZSAiTWVkaWFTdHJlYW1Tb3VyY2VDYXBhYmlsaXRpZXMuaCIKKyNpbmNsdWRl
ICJTY3JpcHRXcmFwcGFibGUuaCIKKyNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgorI2luY2x1ZGUg
PHd0Zi9SZWZDb3VudGVkLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgTWVkaWFT
b3VyY2VTdGF0ZXMgOiBwdWJsaWMgUmVmQ291bnRlZDxNZWRpYVNvdXJjZVN0YXRlcz4sIHB1Ymxp
YyBTY3JpcHRXcmFwcGFibGUgeworcHVibGljOgorICAgIHN0YXRpYyBQYXNzUmVmUHRyPE1lZGlh
U291cmNlU3RhdGVzPiBjcmVhdGUoY29uc3QgTWVkaWFTdHJlYW1Tb3VyY2VTdGF0ZXMmKTsKKwor
ICAgIHN0YXRpYyBjb25zdCBBdG9taWNTdHJpbmcmIHNvdXJjZVR5cGUoTWVkaWFTdHJlYW1Tb3Vy
Y2VTdGF0ZXM6OlNvdXJjZVR5cGUpOworICAgIHN0YXRpYyBjb25zdCBBdG9taWNTdHJpbmcmIGZh
Y2luZ01vZGUoTWVkaWFTdHJlYW1Tb3VyY2VTdGF0ZXM6OlZpZGVvRmFjaW5nTW9kZSk7CisgICAg
CisgICAgY29uc3QgQXRvbWljU3RyaW5nJiBzb3VyY2VUeXBlKCkgY29uc3Q7CisgICAgY29uc3Qg
QXRvbWljU3RyaW5nJiBzb3VyY2VJZCgpIGNvbnN0IHsgcmV0dXJuIG1fU291cmNlU3RhdGVzLnNv
dXJjZUlkOyB9CisgICAgdW5zaWduZWQgbG9uZyB3aWR0aCgpIGNvbnN0IHsgcmV0dXJuIG1fU291
cmNlU3RhdGVzLndpZHRoOyB9CisgICAgdW5zaWduZWQgbG9uZyBoZWlnaHQoKSBjb25zdCB7IHJl
dHVybiBtX1NvdXJjZVN0YXRlcy5oZWlnaHQ7IH0KKyAgICBmbG9hdCBmcmFtZVJhdGUoKSBjb25z
dCB7IHJldHVybiBtX1NvdXJjZVN0YXRlcy5mcmFtZVJhdGU7IH0KKyAgICBmbG9hdCBhc3BlY3RS
YXRpbygpIGNvbnN0IHsgcmV0dXJuIG1fU291cmNlU3RhdGVzLmFzcGVjdFJhdGlvOyB9CisgICAg
Y29uc3QgQXRvbWljU3RyaW5nJiBmYWNpbmdNb2RlKCkgY29uc3Q7CisgICAgdW5zaWduZWQgbG9u
ZyB2b2x1bWUoKSBjb25zdCB7IHJldHVybiBtX1NvdXJjZVN0YXRlcy52b2x1bWU7IH0KKyAgICAK
KyAgICBib29sIGhhc1ZpZGVvU291cmNlKCkgY29uc3QgeyByZXR1cm4gbV9Tb3VyY2VTdGF0ZXMu
c291cmNlVHlwZSA9PSBNZWRpYVN0cmVhbVNvdXJjZVN0YXRlczo6Q2FtZXJhOyB9CisKK3ByaXZh
dGU6CisgICAgZXhwbGljaXQgTWVkaWFTb3VyY2VTdGF0ZXMoY29uc3QgTWVkaWFTdHJlYW1Tb3Vy
Y2VTdGF0ZXMmKTsKKworICAgIE1lZGlhU3RyZWFtU291cmNlU3RhdGVzIG1fU291cmNlU3RhdGVz
OworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gTWVkaWFTb3VyY2VT
dGF0ZXNfaAorCisjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJl
YW0vTWVkaWFTb3VyY2VTdGF0ZXMuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTb3VyY2VTdGF0ZXMuaWRsCShyZXZpc2lvbiAwKQorKysg
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVNvdXJjZVN0YXRlcy5pZGwJ
KHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw0NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
MyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5E
IEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
CisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKK2VudW0gU291cmNlVHlw
ZUVudW0geyAibm9uZSIsICJjYW1lcmEiLCAibWljcm9waG9uZSIgfTsKK2VudW0gVmlkZW9GYWNp
bmdNb2RlRW51bSB7ICJ1c2VyIiwgImVudmlyb25tZW50IiwgImxlZnQiLCAicmlnaHQiIH07CisK
K1sKKyAgICBDb25kaXRpb25hbD1NRURJQV9TVFJFQU0sCisgICAgSW1wbGVtZW50YXRpb25MYWNr
c1ZUYWJsZSwKKyAgICBOb0ludGVyZmFjZU9iamVjdCwKK10gaW50ZXJmYWNlIE1lZGlhU291cmNl
U3RhdGVzIHsKKyAgICByZWFkb25seSBhdHRyaWJ1dGUgU291cmNlVHlwZUVudW0gc291cmNlVHlw
ZTsKKyAgICByZWFkb25seSBhdHRyaWJ1dGUgRE9NU3RyaW5nIHNvdXJjZUlkOworCisgICAgW0N1
c3RvbUdldHRlcl0gcmVhZG9ubHkgYXR0cmlidXRlIHVuc2lnbmVkIGxvbmcgd2lkdGg7CisgICAg
W0N1c3RvbUdldHRlcl0gcmVhZG9ubHkgYXR0cmlidXRlIHVuc2lnbmVkIGxvbmcgaGVpZ2h0Owor
ICAgIFtDdXN0b21HZXR0ZXJdIHJlYWRvbmx5IGF0dHJpYnV0ZSBmbG9hdCBmcmFtZVJhdGU7Cisg
ICAgW0N1c3RvbUdldHRlcl0gcmVhZG9ubHkgYXR0cmlidXRlIGZsb2F0IGFzcGVjdFJhdGlvOwor
ICAgIFtDdXN0b21HZXR0ZXJdIHJlYWRvbmx5IGF0dHJpYnV0ZSBWaWRlb0ZhY2luZ01vZGVFbnVt
IGZhY2luZ01vZGU7CisgICAgW0N1c3RvbUdldHRlcl0gcmVhZG9ubHkgYXR0cmlidXRlIHVuc2ln
bmVkIGxvbmcgdm9sdW1lOworfTsKKwpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRp
YXN0cmVhbS9NZWRpYVN0cmVhbS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbS5jcHAJKHJldmlzaW9uIDE1NzAxNikKKysrIFNv
dXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW0uY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC01NiwyMiArNTYsMTMgQEAgc3RhdGljIHZvaWQgcHJvY2Vzc1RyYWNrKE1lZGlh
U3RyZWFtVHJhYwogICAgICAgICByZXR1cm47CiAKICAgICBNZWRpYVN0cmVhbVNvdXJjZSogc291
cmNlID0gdHJhY2stPnNvdXJjZSgpOwotICAgIGlmICghY29udGFpbnNTb3VyY2Uoc291cmNlVmVj
dG9yLCBzb3VyY2UpKSB7Ci0gICAgICAgIGlmIChzb3VyY2UtPnN0cmVhbSgpKSB7Ci0gICAgICAg
ICAgICAvLyBGSVhNRTogdGhpcyBzaG91bGQgbm90IGJlIG5lY2Vzc2FyeSBiZWNhdXNlIHRyYWNr
cyBhbmQgc3RyZWFtcyBtdXN0IGJlIGFibGUgdG8gc2hhcmUgc291cmNlcywgYnV0IG91ciBjb2Rl
Ci0gICAgICAgICAgICAvLyBjdXJyZW5sdHkgYXNzdW1lcyBlYWNoIHNvdXJjZSBpcyBhdHRhY2hl
ZCB0byBqdXN0IG9uZSB0cmFjay4KLSAgICAgICAgICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xMjE5NTQKLSAgICAgICAgICAgIHNvdXJjZVZlY3Rvci5hcHBl
bmQoTWVkaWFTdHJlYW1Tb3VyY2U6OmNyZWF0ZShzb3VyY2UtPmlkKCksIHNvdXJjZS0+dHlwZSgp
LCBzb3VyY2UtPm5hbWUoKSwgc291cmNlLT5yZWFkeVN0YXRlKCksIHNvdXJjZS0+cmVxdWlyZXNB
dWRpb0NvbnN1bWVyKCkpLmdldCgpKTsKLSAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICBzb3Vy
Y2VWZWN0b3IuYXBwZW5kKHNvdXJjZSk7Ci0gICAgfQorICAgIGlmICghY29udGFpbnNTb3VyY2Uo
c291cmNlVmVjdG9yLCBzb3VyY2UpKQorICAgICAgICBzb3VyY2VWZWN0b3IuYXBwZW5kKHNvdXJj
ZSk7CiB9CiAKIHN0YXRpYyBQYXNzUmVmUHRyPE1lZGlhU3RyZWFtPiBjcmVhdGVGcm9tU291cmNl
VmVjdG9ycyhTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBjb25zdCBNZWRpYVN0cmVh
bVNvdXJjZVZlY3RvciYgYXVkaW9Tb3VyY2VzLCBjb25zdCBNZWRpYVN0cmVhbVNvdXJjZVZlY3Rv
ciYgdmlkZW9Tb3VyY2VzKQogewogICAgIFJlZlB0cjxNZWRpYVN0cmVhbURlc2NyaXB0b3I+IGRl
c2NyaXB0b3IgPSBNZWRpYVN0cmVhbURlc2NyaXB0b3I6OmNyZWF0ZShhdWRpb1NvdXJjZXMsIHZp
ZGVvU291cmNlcyk7Ci0gICAgTWVkaWFTdHJlYW1DZW50ZXI6OnNoYXJlZCgpLmRpZENyZWF0ZU1l
ZGlhU3RyZWFtKGRlc2NyaXB0b3IuZ2V0KCkpOwotCiAgICAgcmV0dXJuIE1lZGlhU3RyZWFtOjpj
cmVhdGUoY29udGV4dCwgZGVzY3JpcHRvci5yZWxlYXNlKCkpOwogfQogCkBAIC0xMjEsNiArMTEy
LDcgQEAgTWVkaWFTdHJlYW06Ok1lZGlhU3RyZWFtKFNjcmlwdEV4ZWN1dGlvbgogICAgICwgbV9k
ZXNjcmlwdG9yKHN0cmVhbURlc2NyaXB0b3IpCiAgICAgLCBtX3NjaGVkdWxlZEV2ZW50VGltZXIo
dGhpcywgJk1lZGlhU3RyZWFtOjpzY2hlZHVsZWRFdmVudFRpbWVyRmlyZWQpCiB7CisgICAgQVNT
RVJUKG1fZGVzY3JpcHRvcik7CiAgICAgbV9kZXNjcmlwdG9yLT5zZXRDbGllbnQodGhpcyk7CiAK
ICAgICBzaXplX3QgbnVtYmVyT2ZBdWRpb1RyYWNrcyA9IG1fZGVzY3JpcHRvci0+bnVtYmVyT2ZB
dWRpb1N0cmVhbXMoKTsKQEAgLTE1Niw3ICsxNDgsNiBAQCB2b2lkIE1lZGlhU3RyZWFtOjpzdG9w
KCkKICAgICBpZiAoZW5kZWQoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgTWVkaWFTdHJlYW1D
ZW50ZXI6OnNoYXJlZCgpLmRpZFN0b3BMb2NhbE1lZGlhU3RyZWFtKGRlc2NyaXB0b3IoKSk7CiAg
ICAgc2V0RW5kZWQoKTsKIH0KIApAQCAtMTg0LDggKzE3NSw2IEBAIHZvaWQgTWVkaWFTdHJlYW06
OmFkZFRyYWNrKFBhc3NSZWZQdHI8TWUKICAgICAgICAgbV92aWRlb1RyYWNrcy5hcHBlbmQodHJh
Y2spOwogICAgICAgICBicmVhazsKICAgICB9Ci0KLSAgICBNZWRpYVN0cmVhbUNlbnRlcjo6c2hh
cmVkKCkuZGlkQWRkTWVkaWFTdHJlYW1UcmFjayh0cmFjay0+c291cmNlKCkpOwogfQogCiB2b2lk
IE1lZGlhU3RyZWFtOjpyZW1vdmVUcmFjayhQYXNzUmVmUHRyPE1lZGlhU3RyZWFtVHJhY2s+IHBy
cFRyYWNrLCBFeGNlcHRpb25Db2RlJiBlYykKQEAgLTIyMyw4ICsyMTIsNiBAQCB2b2lkIE1lZGlh
U3RyZWFtOjpyZW1vdmVUcmFjayhQYXNzUmVmUHRyCiAKICAgICBpZiAoIW1fYXVkaW9UcmFja3Mu
c2l6ZSgpICYmICFtX3ZpZGVvVHJhY2tzLnNpemUoKSkKICAgICAgICAgc2V0RW5kZWQoKTsKLQot
ICAgIE1lZGlhU3RyZWFtQ2VudGVyOjpzaGFyZWQoKS5kaWRSZW1vdmVNZWRpYVN0cmVhbVRyYWNr
KHRyYWNrLT5zb3VyY2UoKSk7CiB9CiAKIE1lZGlhU3RyZWFtVHJhY2sqIE1lZGlhU3RyZWFtOjpn
ZXRUcmFja0J5SWQoU3RyaW5nIGlkKQpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRp
YXN0cmVhbS9NZWRpYVN0cmVhbS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW0uaAkocmV2aXNpb24gMTU3MDE2KQorKysgU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbS5oCSh3b3JraW5nIGNvcHkp
CkBAIC04OCwxNSArODgsMTMgQEAgcHJvdGVjdGVkOgogICAgIHZpcnR1YWwgdm9pZCBjb250ZXh0
RGVzdHJveWVkKCkgT1ZFUlJJREU7CiAKIHByaXZhdGU6Ci0gICAgLy8gTWVkaWFTdHJlYW1EZXNj
cmlwdG9yQ2xpZW50Ci0gICAgdmlydHVhbCB2b2lkIHRyYWNrRGlkRW5kKCkgT1ZFUlJJREU7Ci0g
ICAgdmlydHVhbCB2b2lkIHN0cmVhbURpZEVuZCgpIE9WRVJSSURFOwotICAgIAogICAgIC8vIEV2
ZW50VGFyZ2V0CiAgICAgdmlydHVhbCB2b2lkIHJlZkV2ZW50VGFyZ2V0KCkgT1ZFUlJJREUgeyBy
ZWYoKTsgfQogICAgIHZpcnR1YWwgdm9pZCBkZXJlZkV2ZW50VGFyZ2V0KCkgT1ZFUlJJREUgeyBk
ZXJlZigpOyB9CiAKICAgICAvLyBNZWRpYVN0cmVhbURlc2NyaXB0b3JDbGllbnQKKyAgICB2aXJ0
dWFsIHZvaWQgdHJhY2tEaWRFbmQoKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgc3RyZWFt
RGlkRW5kKCkgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIGFkZFJlbW90ZVNvdXJjZShNZWRp
YVN0cmVhbVNvdXJjZSopIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCByZW1vdmVSZW1vdGVT
b3VyY2UoTWVkaWFTdHJlYW1Tb3VyY2UqKSBPVkVSUklERTsKIApJbmRleDogU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbUNhcGFiaWxpdGllcy5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbUNh
cGFiaWxpdGllcy5jcHAJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21l
ZGlhc3RyZWFtL01lZGlhU3RyZWFtQ2FwYWJpbGl0aWVzLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MCwwICsxLDE0MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUK
KyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
KyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaWYgRU5BQkxF
KE1FRElBX1NUUkVBTSkKKworI2luY2x1ZGUgIk1lZGlhU3RyZWFtQ2FwYWJpbGl0aWVzLmgiCisK
KyNpbmNsdWRlICJBbGxBdWRpb0NhcGFiaWxpdGllcy5oIgorI2luY2x1ZGUgIkFsbFZpZGVvQ2Fw
YWJpbGl0aWVzLmgiCisjaW5jbHVkZSAiQ2FwYWJpbGl0eVJhbmdlLmgiCisjaW5jbHVkZSAiTWVk
aWFTb3VyY2VTdGF0ZXMuaCIKKyNpbmNsdWRlICJNZWRpYVN0cmVhbVNvdXJjZUNhcGFiaWxpdGll
cy5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1Bhc3NSZWZQdHI8TWVkaWFTdHJlYW1DYXBh
YmlsaXRpZXM+IE1lZGlhU3RyZWFtQ2FwYWJpbGl0aWVzOjpjcmVhdGUoUGFzc1JlZlB0cjxNZWRp
YVN0cmVhbVNvdXJjZUNhcGFiaWxpdGllcz4gY2FwYWJpbGl0aWVzKQoreworICAgIGlmIChjYXBh
YmlsaXRpZXMtPmhhc1ZpZGVvU291cmNlKCkpCisgICAgICAgIHJldHVybiBBbGxWaWRlb0NhcGFi
aWxpdGllczo6Y3JlYXRlKGNhcGFiaWxpdGllcyk7CisgICAgCisgICAgcmV0dXJuIEFsbEF1ZGlv
Q2FwYWJpbGl0aWVzOjpjcmVhdGUoY2FwYWJpbGl0aWVzKTsKK30KKworTWVkaWFTdHJlYW1DYXBh
YmlsaXRpZXM6Ok1lZGlhU3RyZWFtQ2FwYWJpbGl0aWVzKFBhc3NSZWZQdHI8TWVkaWFTdHJlYW1T
b3VyY2VDYXBhYmlsaXRpZXM+IGNhcGFiaWxpdGllcykKKyAgICA6IG1fU291cmNlQ2FwYWJpbGl0
aWVzKGNhcGFiaWxpdGllcykKK3sKK30KKworVmVjdG9yPFN0cmluZz4gTWVkaWFTdHJlYW1DYXBh
YmlsaXRpZXM6OnNvdXJjZVR5cGUoKSBjb25zdAoreworICAgIEFTU0VSVChtX1NvdXJjZUNhcGFi
aWxpdGllcy0+aGFzVmlkZW9Tb3VyY2UoKSk7CisgICAgCisgICAgc2l6ZV90IGNvdW50ID0gbV9T
b3VyY2VDYXBhYmlsaXRpZXMtPnNvdXJjZVR5cGVzKCkuc2l6ZSgpOworICAgIGlmICghY291bnQp
CisgICAgICAgIHJldHVybiBWZWN0b3I8U3RyaW5nPigpOworICAgIAorICAgIGNvbnN0IFZlY3Rv
cjxNZWRpYVN0cmVhbVNvdXJjZVN0YXRlczo6U291cmNlVHlwZT4mIHNvdXJjZVR5cGVzID0gbV9T
b3VyY2VDYXBhYmlsaXRpZXMtPnNvdXJjZVR5cGVzKCk7CisgICAgVmVjdG9yPFN0cmluZz4gY2Fw
YWJpbGl0aWVzOworICAgIGNhcGFiaWxpdGllcy5yZXNlcnZlQ2FwYWNpdHkoY291bnQpOworICAg
IAorICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgY291bnQ7ICsraSkKKyAgICAgICAgY2FwYWJp
bGl0aWVzLmFwcGVuZChNZWRpYVNvdXJjZVN0YXRlczo6c291cmNlVHlwZShzb3VyY2VUeXBlc1tp
XSkpOworICAgIAorICAgIHJldHVybiBjYXBhYmlsaXRpZXM7Cit9CisKK1ZlY3RvcjxTdHJpbmc+
IE1lZGlhU3RyZWFtQ2FwYWJpbGl0aWVzOjpzb3VyY2VJZCgpIGNvbnN0Cit7CisgICAgc2l6ZV90
IGNvdW50ID0gbV9Tb3VyY2VDYXBhYmlsaXRpZXMtPnNvdXJjZUlkKCkuc2l6ZSgpOworICAgIGlm
ICghY291bnQpCisgICAgICAgIHJldHVybiBWZWN0b3I8U3RyaW5nPigpOworICAgIAorICAgIGNv
bnN0IFZlY3RvcjxBdG9taWNTdHJpbmc+JiBzb3VyY2VJZHMgPSBtX1NvdXJjZUNhcGFiaWxpdGll
cy0+c291cmNlSWQoKTsKKyAgICBWZWN0b3I8U3RyaW5nPiBjYXBhYmlsaXRpZXM7CisgICAgY2Fw
YWJpbGl0aWVzLnJlc2VydmVDYXBhY2l0eShjb3VudCk7CisgICAgCisgICAgZm9yIChzaXplX3Qg
aSA9IDA7IGkgPCBjb3VudDsgKytpKQorICAgICAgICBjYXBhYmlsaXRpZXMuYXBwZW5kKHNvdXJj
ZUlkc1tpXSk7CisgICAgCisgICAgcmV0dXJuIGNhcGFiaWxpdGllczsKK30KKworVmVjdG9yPFN0
cmluZz4gTWVkaWFTdHJlYW1DYXBhYmlsaXRpZXM6OmZhY2luZ01vZGUoKSBjb25zdAoreworICAg
IEFTU0VSVChtX1NvdXJjZUNhcGFiaWxpdGllcy0+aGFzVmlkZW9Tb3VyY2UoKSk7CisgICAgCisg
ICAgc2l6ZV90IGNvdW50ID0gbV9Tb3VyY2VDYXBhYmlsaXRpZXMtPmZhY2luZ01vZGVzKCkuc2l6
ZSgpOworICAgIGlmICghY291bnQpCisgICAgICAgIHJldHVybiBWZWN0b3I8U3RyaW5nPigpOwor
ICAgIAorICAgIGNvbnN0IFZlY3RvcjxNZWRpYVN0cmVhbVNvdXJjZVN0YXRlczo6VmlkZW9GYWNp
bmdNb2RlPiYgZmFjaW5nTW9kZXMgPSBtX1NvdXJjZUNhcGFiaWxpdGllcy0+ZmFjaW5nTW9kZXMo
KTsKKyAgICBWZWN0b3I8U3RyaW5nPiBjYXBhYmlsaXRpZXM7CisgICAgY2FwYWJpbGl0aWVzLnJl
c2VydmVDYXBhY2l0eShjb3VudCk7CisgICAgCisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBj
b3VudDsgKytpKQorICAgICAgICBjYXBhYmlsaXRpZXMuYXBwZW5kKE1lZGlhU291cmNlU3RhdGVz
OjpmYWNpbmdNb2RlKGZhY2luZ01vZGVzW2ldKSk7CisgICAgCisgICAgcmV0dXJuIGNhcGFiaWxp
dGllczsKK30KKworUmVmUHRyPENhcGFiaWxpdHlSYW5nZT4gTWVkaWFTdHJlYW1DYXBhYmlsaXRp
ZXM6OndpZHRoKCkgY29uc3QKK3sKKyAgICBBU1NFUlQobV9Tb3VyY2VDYXBhYmlsaXRpZXMtPmhh
c1ZpZGVvU291cmNlKCkpOworICAgIAorICAgIHJldHVybiBDYXBhYmlsaXR5UmFuZ2U6OmNyZWF0
ZShtX1NvdXJjZUNhcGFiaWxpdGllcy0+d2lkdGgoKSk7Cit9CisKK1JlZlB0cjxDYXBhYmlsaXR5
UmFuZ2U+IE1lZGlhU3RyZWFtQ2FwYWJpbGl0aWVzOjpoZWlnaHQoKSBjb25zdAoreworICAgIEFT
U0VSVChtX1NvdXJjZUNhcGFiaWxpdGllcy0+aGFzVmlkZW9Tb3VyY2UoKSk7CisgICAgCisgICAg
cmV0dXJuIENhcGFiaWxpdHlSYW5nZTo6Y3JlYXRlKG1fU291cmNlQ2FwYWJpbGl0aWVzLT5oZWln
aHQoKSk7Cit9CisKK1JlZlB0cjxDYXBhYmlsaXR5UmFuZ2U+IE1lZGlhU3RyZWFtQ2FwYWJpbGl0
aWVzOjpmcmFtZVJhdGUoKSBjb25zdAoreworICAgIEFTU0VSVChtX1NvdXJjZUNhcGFiaWxpdGll
cy0+aGFzVmlkZW9Tb3VyY2UoKSk7CisgICAgCisgICAgcmV0dXJuIENhcGFiaWxpdHlSYW5nZTo6
Y3JlYXRlKG1fU291cmNlQ2FwYWJpbGl0aWVzLT5mcmFtZVJhdGUoKSk7Cit9CisKK1JlZlB0cjxD
YXBhYmlsaXR5UmFuZ2U+IE1lZGlhU3RyZWFtQ2FwYWJpbGl0aWVzOjphc3BlY3RSYXRpbygpIGNv
bnN0Cit7CisgICAgQVNTRVJUKG1fU291cmNlQ2FwYWJpbGl0aWVzLT5oYXNWaWRlb1NvdXJjZSgp
KTsKKyAgICAKKyAgICByZXR1cm4gQ2FwYWJpbGl0eVJhbmdlOjpjcmVhdGUobV9Tb3VyY2VDYXBh
YmlsaXRpZXMtPmFzcGVjdFJhdGlvKCkpOworfQorCitSZWZQdHI8Q2FwYWJpbGl0eVJhbmdlPiBN
ZWRpYVN0cmVhbUNhcGFiaWxpdGllczo6dm9sdW1lKCkgY29uc3QKK3sKKyAgICBBU1NFUlQoIW1f
U291cmNlQ2FwYWJpbGl0aWVzLT5oYXNWaWRlb1NvdXJjZSgpKTsKKyAgICAKKyAgICByZXR1cm4g
Q2FwYWJpbGl0eVJhbmdlOjpjcmVhdGUobV9Tb3VyY2VDYXBhYmlsaXRpZXMtPnZvbHVtZSgpKTsK
K30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1DYXBhYmlsaXRpZXMuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtQ2Fw
YWJpbGl0aWVzLmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlh
c3RyZWFtL01lZGlhU3RyZWFtQ2FwYWJpbGl0aWVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCAr
MSw2OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBNZWRpYVN0cmVhbUNhcGFiaWxpdGllc19oCisjZGVm
aW5lIE1lZGlhU3RyZWFtQ2FwYWJpbGl0aWVzX2gKKworI2lmIEVOQUJMRShNRURJQV9TVFJFQU0p
CisKKyNpbmNsdWRlICJNZWRpYVN0cmVhbUNhcGFiaWxpdGllcy5oIgorI2luY2x1ZGUgIk1lZGlh
U3RyZWFtU291cmNlQ2FwYWJpbGl0aWVzLmgiCisjaW5jbHVkZSAiU2NyaXB0V3JhcHBhYmxlLmgi
CisjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+Cisj
aW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwor
Y2xhc3MgQ2FwYWJpbGl0eVJhbmdlOworY2xhc3MgTWVkaWFTdHJlYW1Tb3VyY2VDYXBhYmlsaXRp
ZXM7CisKK2NsYXNzIE1lZGlhU3RyZWFtQ2FwYWJpbGl0aWVzIDogcHVibGljIFJlZkNvdW50ZWQ8
TWVkaWFTdHJlYW1DYXBhYmlsaXRpZXM+LCBwdWJsaWMgU2NyaXB0V3JhcHBhYmxlIHsKK3B1Ymxp
YzoKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxNZWRpYVN0cmVhbUNhcGFiaWxpdGllcz4gY3JlYXRl
KFBhc3NSZWZQdHI8TWVkaWFTdHJlYW1Tb3VyY2VDYXBhYmlsaXRpZXM+KTsKKyAgICB2aXJ0dWFs
IH5NZWRpYVN0cmVhbUNhcGFiaWxpdGllcygpIHsgfQorCisgICAgdmlydHVhbCBWZWN0b3I8U3Ry
aW5nPiBzb3VyY2VUeXBlKCkgY29uc3Q7CisgICAgdmlydHVhbCBWZWN0b3I8U3RyaW5nPiBzb3Vy
Y2VJZCgpIGNvbnN0OworICAgIHZpcnR1YWwgUmVmUHRyPENhcGFiaWxpdHlSYW5nZT4gd2lkdGgo
KSBjb25zdDsKKyAgICB2aXJ0dWFsIFJlZlB0cjxDYXBhYmlsaXR5UmFuZ2U+IGhlaWdodCgpIGNv
bnN0OworICAgIHZpcnR1YWwgUmVmUHRyPENhcGFiaWxpdHlSYW5nZT4gZnJhbWVSYXRlKCkgY29u
c3Q7CisgICAgdmlydHVhbCBSZWZQdHI8Q2FwYWJpbGl0eVJhbmdlPiBhc3BlY3RSYXRpbygpIGNv
bnN0OworICAgIHZpcnR1YWwgVmVjdG9yPFN0cmluZz4gZmFjaW5nTW9kZSgpIGNvbnN0OworICAg
IHZpcnR1YWwgUmVmUHRyPENhcGFiaWxpdHlSYW5nZT4gdm9sdW1lKCkgY29uc3Q7CisgICAgCisg
ICAgYm9vbCBoYXNWaWRlb1NvdXJjZSgpIHsgcmV0dXJuIG1fU291cmNlQ2FwYWJpbGl0aWVzLT5o
YXNWaWRlb1NvdXJjZSgpOyB9CisKK3Byb3RlY3RlZDoKKyAgICBleHBsaWNpdCBNZWRpYVN0cmVh
bUNhcGFiaWxpdGllcyhQYXNzUmVmUHRyPE1lZGlhU3RyZWFtU291cmNlQ2FwYWJpbGl0aWVzPik7
CisKKyAgICBSZWZQdHI8TWVkaWFTdHJlYW1Tb3VyY2VDYXBhYmlsaXRpZXM+IG1fU291cmNlQ2Fw
YWJpbGl0aWVzOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gTWVk
aWFTdHJlYW1DYXBhYmlsaXRpZXNfaAorCisjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1DYXBhYmlsaXRpZXMuaWRsCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1DYXBhYmls
aXRpZXMuaWRsCShyZXZpc2lvbiAwKQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0
cmVhbS9NZWRpYVN0cmVhbUNhcGFiaWxpdGllcy5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTAsMCAr
MSwzMyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuIAorICovCisKK1sKKyAgICBDb25kaXRpb25hbD1NRURJQV9TVFJFQU0sCisgICAg
Tm9JbnRlcmZhY2VPYmplY3QsCisgICAgU2tpcFZUYWJsZVZhbGlkYXRpb24sCisgICAgQ3VzdG9t
VG9KU09iamVjdCwKK10gaW50ZXJmYWNlIE1lZGlhU3RyZWFtQ2FwYWJpbGl0aWVzIHsKK307CisK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1UcmFj
ay5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9N
ZWRpYVN0cmVhbVRyYWNrLmNwcAkocmV2aXNpb24gMTU3MDE2KQorKysgU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVRyYWNrLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMjksMzIgKzI5LDY1IEBACiAKICNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQogCisjaW5jbHVk
ZSAiQWxsQXVkaW9DYXBhYmlsaXRpZXMuaCIKKyNpbmNsdWRlICJBbGxWaWRlb0NhcGFiaWxpdGll
cy5oIgorI2luY2x1ZGUgIkF1ZGlvU3RyZWFtVHJhY2suaCIKICNpbmNsdWRlICJEaWN0aW9uYXJ5
LmgiCiAjaW5jbHVkZSAiRXZlbnQuaCIKICNpbmNsdWRlICJFeGNlcHRpb25Db2RlLmgiCisjaW5j
bHVkZSAiTWVkaWFDb25zdHJhaW50c0ltcGwuaCIKKyNpbmNsdWRlICJNZWRpYVNvdXJjZVN0YXRl
cy5oIgogI2luY2x1ZGUgIk1lZGlhU3RyZWFtLmgiCiAjaW5jbHVkZSAiTWVkaWFTdHJlYW1DZW50
ZXIuaCIKICNpbmNsdWRlICJNZWRpYVN0cmVhbURlc2NyaXB0b3IuaCIKICNpbmNsdWRlICJNZWRp
YVN0cmVhbVRyYWNrU291cmNlc0NhbGxiYWNrLmgiCiAjaW5jbHVkZSAiTWVkaWFTdHJlYW1UcmFj
a1NvdXJjZXNSZXF1ZXN0LmgiCisjaW5jbHVkZSAiTWVkaWFUcmFja0NvbnN0cmFpbnRzLmgiCisj
aW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKICNpbmNsdWRlICJVVUlELmgiCisjaW5jbHVkZSAi
VmlkZW9TdHJlYW1UcmFjay5oIgorI2luY2x1ZGUgPHd0Zi9GdW5jdGlvbmFsLmg+CiAjaW5jbHVk
ZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogTWVkaWFT
dHJlYW1UcmFjazo6TWVkaWFTdHJlYW1UcmFjayhTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250
ZXh0LCBNZWRpYVN0cmVhbVNvdXJjZSogc291cmNlLCBjb25zdCBEaWN0aW9uYXJ5KikKICAgICA6
IEFjdGl2ZURPTU9iamVjdChjb250ZXh0KQotICAgICwgbV9zb3VyY2Uoc291cmNlKQorICAgICwg
bV9zb3VyY2UoMCkKICAgICAsIG1fcmVhZHlTdGF0ZShNZWRpYVN0cmVhbVNvdXJjZTo6TmV3KQog
ICAgICwgbV9zdG9wcGVkKGZhbHNlKQogICAgICwgbV9lbmFibGVkKHRydWUpCiAgICAgLCBtX211
dGVkKGZhbHNlKQorICAgICwgbV9ldmVudERpc3BhdGNoU2NoZWR1bGVkKGZhbHNlKQogewogICAg
IHN1c3BlbmRJZk5lZWRlZCgpOwotICAgIGlmIChtX3NvdXJjZSkgewotICAgICAgICBtX3NvdXJj
ZS0+YWRkT2JzZXJ2ZXIodGhpcyk7Ci0gICAgICAgIG1fbXV0ZWQgPSBtX3NvdXJjZS0+bXV0ZWQo
KTsKLSAgICB9CisgICAgaWYgKHNvdXJjZSkKKyAgICAgICAgc2V0U291cmNlKHNvdXJjZSk7Cit9
CisKK01lZGlhU3RyZWFtVHJhY2s6Ok1lZGlhU3RyZWFtVHJhY2soTWVkaWFTdHJlYW1UcmFjayog
b3RoZXIpCisgICAgOiBBY3RpdmVET01PYmplY3Qob3RoZXItPnNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQoKSkKK3sKKyAgICBzdXNwZW5kSWZOZWVkZWQoKTsKKworICAgIC8vIFdoZW4gdGhlIGNsb25l
KCkgbWV0aG9kIGlzIGludm9rZWQsIHRoZSB1c2VyIGFnZW50IG11c3QgcnVuIHRoZSBmb2xsb3dp
bmcgc3RlcHM6CisgICAgLy8gMS4gTGV0IHRyYWNrQ2xvbmUgYmUgYSBuZXdseSBjb25zdHJ1Y3Rl
ZCBNZWRpYVN0cmVhbVRyYWNrIG9iamVjdC4KKyAgICAvLyAyLiBJbml0aWFsaXplIHRyYWNrQ2xv
bmUncyBpZCBhdHRyaWJ1dGUgdG8gYSBuZXdseSBnZW5lcmF0ZWQgdmFsdWUuCisgICAgbV9pZCA9
IGNyZWF0ZUNhbm9uaWNhbFVVSURTdHJpbmcoKTsKKworICAgIC8vIDMuIExldCB0cmFja0Nsb25l
IGluaGVyaXQgdGhpcyB0cmFjaydzIHVuZGVybHlpbmcgc291cmNlLCBraW5kLCBsYWJlbCBhbmQg
ZW5hYmxlZCBhdHRyaWJ1dGVzLgorICAgIHNldFNvdXJjZShvdGhlci0+c291cmNlKCkpOworICAg
IG1fcmVhZHlTdGF0ZSA9IG1fc291cmNlID8gbV9zb3VyY2UtPnJlYWR5U3RhdGUoKSA6IE1lZGlh
U3RyZWFtU291cmNlOjpOZXc7CisgICAgbV9lbmFibGVkID0gb3RoZXItPmVuYWJsZWQoKTsKKwor
ICAgIC8vIE5vdGU6IHRoZSAiY2xvbmUiIHN0ZXBzIGRvbid0IHNheSBhbnl0aGluZyBhYm91dCAn
bXV0ZWQnLCBidXQgNC4zLjEgc2F5czoKKyAgICAvLyBGb3IgYSBuZXdseSBjcmVhdGVkIE1lZGlh
U3RyZWFtVHJhY2sgb2JqZWN0LCB0aGUgZm9sbG93aW5nIGFwcGxpZXMuIFRoZSB0cmFjayBpcyBh
bHdheXMgZW5hYmxlZAorICAgIC8vIHVubGVzcyBzdGF0ZWQgb3RoZXJ3aXNlIChmb3IgZXhhbWxw
ZSB3aGVuIGNsb25lZCkgYW5kIHRoZSBtdXRlZCBzdGF0ZSByZWZsZWN0cyB0aGUgc3RhdGUgb2Yg
dGhlCisgICAgLy8gc291cmNlIGF0IHRoZSB0aW1lIHRoZSB0cmFjayBpcyBjcmVhdGVkLgorICAg
IG1fbXV0ZWQgPSBvdGhlci0+bXV0ZWQoKTsKKworICAgIG1fZXZlbnREaXNwYXRjaFNjaGVkdWxl
ZCA9ZmFsc2U7CisgICAgbV9zdG9wcGVkID0gb3RoZXItPnN0b3BwZWQoKTsKIH0KIAogTWVkaWFT
dHJlYW1UcmFjazo6fk1lZGlhU3RyZWFtVHJhY2soKQpAQCAtODUsNiArMTE4LDE1IEBAIGNvbnN0
IEF0b21pY1N0cmluZyYgTWVkaWFTdHJlYW1UcmFjazo6a2kKIHZvaWQgTWVkaWFTdHJlYW1UcmFj
azo6c2V0U291cmNlKE1lZGlhU3RyZWFtU291cmNlKiBzb3VyY2UpCiB7CiAgICAgQVNTRVJUKHNv
dXJjZSA9PSBtX3NvdXJjZSB8fCAhbV9zb3VyY2UpOworCisgICAgaWYgKG1fc291cmNlKQorICAg
ICAgICBtX3NvdXJjZS0+cmVtb3ZlT2JzZXJ2ZXIodGhpcyk7CisKKyAgICBpZiAoc291cmNlKSB7
CisgICAgICAgIHNvdXJjZS0+YWRkT2JzZXJ2ZXIodGhpcyk7CisgICAgICAgIG1fbXV0ZWQgPSBz
b3VyY2UtPm11dGVkKCk7CisgICAgfQorCiAgICAgbV9zb3VyY2UgPSBzb3VyY2U7CiB9CiAKQEAg
LTkzLDE4ICsxMzUsMTMgQEAgY29uc3QgU3RyaW5nJiBNZWRpYVN0cmVhbVRyYWNrOjppZCgpIGNv
bgogICAgIGlmICghbV9pZC5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBtX2lkOwogCi0gICAg
aWYgKCFtX3NvdXJjZSkKLSAgICAgICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7Ci0KLSAgICBjb25z
dCBTdHJpbmcmIGlkID0gbV9zb3VyY2UtPmlkKCk7Ci0gICAgaWYgKCFpZC5pc0VtcHR5KCkpCi0g
ICAgICAgIHJldHVybiBpZDsKLQogICAgIC8vIFRoZSBzcGVjIHNheXM6CiAgICAgLy8gICBVbmxl
c3MgYSBNZWRpYVN0cmVhbVRyYWNrIG9iamVjdCBpcyBjcmVhdGVkIGFzIGEgcGFydCBhIG9mIHNw
ZWNpYWwgcHVycG9zZSBhbGdvcml0aG0gdGhhdAogICAgIC8vICAgc3BlY2lmaWVzIGhvdyB0aGUg
dHJhY2sgaWQgbXVzdCBiZSBpbml0aWFsaXplZCwgdGhlIHVzZXIgYWdlbnQgbXVzdCBnZW5lcmF0
ZSBhIGdsb2JhbGx5CiAgICAgLy8gICB1bmlxdWUgaWRlbnRpZmllciBzdHJpbmcgYW5kIGluaXRp
YWxpemUgdGhlIG9iamVjdCdzIGlkIGF0dHJpYnV0ZSB0byB0aGF0IHN0cmluZy4KLSAgICAvLyBz
byBnZW5lcmF0ZSBhIFVVSUQgaWYgdGhlIHNvdXJjZSBkb2Vzbid0IGhhdmUgYW4gSUQuCisgICAg
aWYgKG1fc291cmNlICYmIG1fc291cmNlLT51c2VJREZvclRyYWNrSUQoKSkKKyAgICAgICAgcmV0
dXJuIG1fc291cmNlLT5pZCgpOworCiAgICAgbV9pZCA9IGNyZWF0ZUNhbm9uaWNhbFVVSURTdHJp
bmcoKTsKICAgICByZXR1cm4gbV9pZDsKIH0KQEAgLTEyNSwxOCArMTYyLDQwIEBAIHZvaWQgTWVk
aWFTdHJlYW1UcmFjazo6c2V0RW5hYmxlZChib29sIGUKIHsKICAgICBpZiAobV9zdG9wcGVkKQog
ICAgICAgICByZXR1cm47Ci0gICAgCisKKyAgICAvLyA0LjMuMy4xCisgICAgLy8gLi4uIGFmdGVy
IGEgTWVkaWFTdHJlYW1UcmFjayBpcyBkaXNhc3NvY2lhdGVkIGZyb20gaXRzIHRyYWNrLCBpdHMg
ZW5hYmxlZCBhdHRyaWJ1dGUgc3RpbGwKKyAgICAvLyBjaGFuZ2VzIHZhbHVlIHdoZW4gc2V0OyBp
dCBqdXN0IGRvZXNuJ3QgZG8gYW55dGhpbmcgd2l0aCB0aGF0IG5ldyB2YWx1ZS4KICAgICBtX2Vu
YWJsZWQgPSBlbmFibGVkOwogCi0gICAgaWYgKCFtX3NvdXJjZSB8fCBlbmFibGVkID09IG1fc291
cmNlLT5lbmFibGVkKCkpCisgICAgaWYgKCFtX3NvdXJjZSkKICAgICAgICAgcmV0dXJuOwogCiAg
ICAgbV9zb3VyY2UtPnNldEVuYWJsZWQoZW5hYmxlZCk7Cit9CiAKLSAgICBpZiAobV9zb3VyY2Ut
PnN0cmVhbSgpLT5lbmRlZCgpKQotICAgICAgICByZXR1cm47Citib29sIE1lZGlhU3RyZWFtVHJh
Y2s6Om11dGVkKCkgY29uc3QKK3sKKyAgICBpZiAobV9zdG9wcGVkIHx8ICFtX3NvdXJjZSkKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgcmV0dXJuIG1fc291cmNlLT5tdXRlZCgpOworfQor
Citib29sIE1lZGlhU3RyZWFtVHJhY2s6OnJlYWRvbmx5KCkgY29uc3QKK3sKKyAgICBpZiAobV9z
dG9wcGVkIHx8ICFtX3NvdXJjZSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICByZXR1cm4g
bV9zb3VyY2UtPnJlYWRvbmx5KCk7Cit9CisKK2Jvb2wgTWVkaWFTdHJlYW1UcmFjazo6cmVtb3Rl
KCkgY29uc3QKK3sKKyAgICBpZiAoIW1fc291cmNlKQorICAgICAgICByZXR1cm4gZmFsc2U7CiAK
LSAgICBNZWRpYVN0cmVhbUNlbnRlcjo6c2hhcmVkKCkuZGlkU2V0TWVkaWFTdHJlYW1UcmFja0Vu
YWJsZWQobV9zb3VyY2UuZ2V0KCkpOworICAgIHJldHVybiBtX3NvdXJjZS0+cmVtb3RlKCk7CiB9
CiAKIGNvbnN0IEF0b21pY1N0cmluZyYgTWVkaWFTdHJlYW1UcmFjazo6cmVhZHlTdGF0ZSgpIGNv
bnN0CkBAIC0xNzEsMTIgKzIzMCw2NCBAQCB2b2lkIE1lZGlhU3RyZWFtVHJhY2s6OmdldFNvdXJj
ZXMoU2NyaXB0CiAgICAgICAgIGVjID0gTk9UX1NVUFBPUlRFRF9FUlI7CiB9CiAKK1Bhc3NSZWZQ
dHI8TWVkaWFUcmFja0NvbnN0cmFpbnRzPiBNZWRpYVN0cmVhbVRyYWNrOjpjb25zdHJhaW50cygp
IGNvbnN0Cit7CisgICAgLy8gRklYTUU6IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xMjI0MjgKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiAwOworfQor
CitQYXNzUmVmUHRyPE1lZGlhU291cmNlU3RhdGVzPiBNZWRpYVN0cmVhbVRyYWNrOjpzdGF0ZXMo
KSBjb25zdAoreworICAgIGlmICghbV9zb3VyY2UpCisgICAgICAgIHJldHVybiAwOworICAgIAor
ICAgIHJldHVybiBNZWRpYVNvdXJjZVN0YXRlczo6Y3JlYXRlKG1fc291cmNlLT5zdGF0ZXMoKSk7
Cit9CisKK1Bhc3NSZWZQdHI8TWVkaWFTdHJlYW1DYXBhYmlsaXRpZXM+IE1lZGlhU3RyZWFtVHJh
Y2s6OmNhcGFiaWxpdGllcygpIGNvbnN0Cit7CisgICAgaWYgKCFtX3NvdXJjZSkKKyAgICAgICAg
cmV0dXJuIDA7CisKKyAgICByZXR1cm4gTWVkaWFTdHJlYW1DYXBhYmlsaXRpZXM6OmNyZWF0ZSht
X3NvdXJjZS0+Y2FwYWJpbGl0aWVzKCkpOworfQorCit2b2lkIE1lZGlhU3RyZWFtVHJhY2s6OmFw
cGx5Q29uc3RyYWludHMoY29uc3QgRGljdGlvbmFyeSYgY29uc3RyYWludHMpCit7CisgICAgLy8g
RklYTUU6IGFwcGx5IHRoZSBuZXcgY29uc3RyYWludHMgdG8gdGhlIHRyYWNrCisgICAgLy8gaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyMjQyOAorICAgIG1fY29uc3Ry
YWludHMtPmluaXRpYWxpemUoY29uc3RyYWludHMpOworfQorCitQYXNzUmVmUHRyPE1lZGlhU3Ry
ZWFtVHJhY2s+IE1lZGlhU3RyZWFtVHJhY2s6OmNsb25lKCkKK3sKKyAgICBpZiAobV9zb3VyY2Ug
JiYgbV9zb3VyY2UtPnR5cGUoKSA9PSBNZWRpYVN0cmVhbVNvdXJjZTo6QXVkaW8pCisgICAgICAg
IHJldHVybiBBdWRpb1N0cmVhbVRyYWNrOjpjcmVhdGUodGhpcyk7CisKKyAgICByZXR1cm4gVmlk
ZW9TdHJlYW1UcmFjazo6Y3JlYXRlKHRoaXMpOworfQorCit2b2lkIE1lZGlhU3RyZWFtVHJhY2s6
OnN0b3BQcm9kdWNpbmdEYXRhKCkKK3sKKyAgICBpZiAobV9zdG9wcGVkIHx8ICFtX3NvdXJjZSkK
KyAgICAgICAgcmV0dXJuOworCisgICAgLy8gU2V0IG1fc3RvcHBlZCBiZWZvcmUgc3RvcHBpbmcg
dGhlIHNvdXJjZSBiZWNhdXNlIHRoYXQgbWF5IHJlc3VsdCBpbiBhIGNhbGwgdG8gc291cmNlQ2hh
bmdlZFN0YXRlCisgICAgLy8gYW5kIHdlIG9ubHkgd2FudCB0byBkaXNwYXRjaCB0aGUgJ2VuZGVk
JyBldmVudCBpZiBuZWNlc3NhcnkuCisgICAgbV9zdG9wcGVkID0gdHJ1ZTsKKyAgICBtX3NvdXJj
ZS0+c3RvcCgpOworCisgICAgaWYgKG1fcmVhZHlTdGF0ZSAhPSBNZWRpYVN0cmVhbVNvdXJjZTo6
RW5kZWQpCisgICAgICAgIHNjaGVkdWxlRXZlbnREaXNwYXRjaChFdmVudDo6Y3JlYXRlKGV2ZW50
TmFtZXMoKS5lbmRlZEV2ZW50LCBmYWxzZSwgZmFsc2UpKTsKK30KKwogYm9vbCBNZWRpYVN0cmVh
bVRyYWNrOjplbmRlZCgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1fc3RvcHBlZCB8fCAobV9zb3Vy
Y2UgJiYgbV9zb3VyY2UtPnJlYWR5U3RhdGUoKSA9PSBNZWRpYVN0cmVhbVNvdXJjZTo6RW5kZWQp
OwogfQogCi12b2lkIE1lZGlhU3RyZWFtVHJhY2s6OnNvdXJjZUNoYW5nZWRTdGF0ZSgpCit2b2lk
IE1lZGlhU3RyZWFtVHJhY2s6OnNvdXJjZVN0YXRlQ2hhbmdlZCgpCiB7CiAgICAgaWYgKG1fc3Rv
cHBlZCkKICAgICAgICAgcmV0dXJuOwpAQCAtMTg1LDE4ICsyOTYsNTAgQEAgdm9pZCBNZWRpYVN0
cmVhbVRyYWNrOjpzb3VyY2VDaGFuZ2VkU3RhdAogICAgIG1fcmVhZHlTdGF0ZSA9IG1fc291cmNl
LT5yZWFkeVN0YXRlKCk7CiAKICAgICBpZiAobV9yZWFkeVN0YXRlID49IE1lZGlhU3RyZWFtU291
cmNlOjpMaXZlICYmIG9sZFJlYWR5U3RhdGUgPT0gTWVkaWFTdHJlYW1Tb3VyY2U6Ok5ldykKLSAg
ICAgICAgZGlzcGF0Y2hFdmVudChFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5zdGFydGVkRXZl
bnQsIGZhbHNlLCBmYWxzZSkpOworICAgICAgICBzY2hlZHVsZUV2ZW50RGlzcGF0Y2goRXZlbnQ6
OmNyZWF0ZShldmVudE5hbWVzKCkuc3RhcnRlZEV2ZW50LCBmYWxzZSwgZmFsc2UpKTsKICAgICBp
ZiAobV9yZWFkeVN0YXRlID09IE1lZGlhU3RyZWFtU291cmNlOjpFbmRlZCAmJiBvbGRSZWFkeVN0
YXRlICE9IE1lZGlhU3RyZWFtU291cmNlOjpFbmRlZCkKLSAgICAgICAgZGlzcGF0Y2hFdmVudChF
dmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5lbmRlZEV2ZW50LCBmYWxzZSwgZmFsc2UpKTsKKyAg
ICAgICAgc2NoZWR1bGVFdmVudERpc3BhdGNoKEV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLmVu
ZGVkRXZlbnQsIGZhbHNlLCBmYWxzZSkpOworfQorICAgIAordm9pZCBNZWRpYVN0cmVhbVRyYWNr
Ojpzb3VyY2VNdXRlZENoYW5nZWQoKQoreworICAgIGlmIChtX3N0b3BwZWQpCisgICAgICAgIHJl
dHVybjsKIAotICAgIGlmIChtX211dGVkID09IG1fc291cmNlLT5tdXRlZCgpKQorICAgIGJvb2wg
bXV0ZWQgPSBtX3NvdXJjZS0+bXV0ZWQoKTsKKyAgICBpZiAobV9tdXRlZCA9PSBtdXRlZCkKICAg
ICAgICAgcmV0dXJuOwogCi0gICAgbV9tdXRlZCA9IG1fc291cmNlLT5tdXRlZCgpOworICAgIG1f
bXV0ZWQgPSBtdXRlZDsKICAgICBpZiAobV9tdXRlZCkKLSAgICAgICAgZGlzcGF0Y2hFdmVudChF
dmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5tdXRlRXZlbnQsIGZhbHNlLCBmYWxzZSkpOworICAg
ICAgICBzY2hlZHVsZUV2ZW50RGlzcGF0Y2goRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkubXV0
ZUV2ZW50LCBmYWxzZSwgZmFsc2UpKTsKICAgICBlbHNlCi0gICAgICAgIGRpc3BhdGNoRXZlbnQo
RXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkudW5tdXRlRXZlbnQsIGZhbHNlLCBmYWxzZSkpOwor
ICAgICAgICBzY2hlZHVsZUV2ZW50RGlzcGF0Y2goRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCku
dW5tdXRlRXZlbnQsIGZhbHNlLCBmYWxzZSkpOworCisgICAgY29uZmlndXJlVHJhY2tSZW5kZXJp
bmcoKTsKK30KKwordm9pZCBNZWRpYVN0cmVhbVRyYWNrOjpzb3VyY2VFbmFibGVkQ2hhbmdlZCgp
Cit7CisgICAgaWYgKG1fc3RvcHBlZCkKKyAgICAgICAgcmV0dXJuOworICAgIAorICAgIC8vIG1l
ZGlhIGZyb20gdGhlIHNvdXJjZSBvbmx5IGZsb3dzIHdoZW4gYSBNZWRpYVN0cmVhbVRyYWNrIG9i
amVjdCBpcyBib3RoIHVubXV0ZWQgYW5kIGVuYWJsZWQKKyAgICBjb25maWd1cmVUcmFja1JlbmRl
cmluZygpOworfQorCit2b2lkIE1lZGlhU3RyZWFtVHJhY2s6OmNvbmZpZ3VyZVRyYWNrUmVuZGVy
aW5nKCkKK3sKKyAgICBpZiAobV9zdG9wcGVkKQorICAgICAgICByZXR1cm47CisKKyAgICAvLyA0
LjMuMQorICAgIC8vIC4uLiBtZWRpYSBmcm9tIHRoZSBzb3VyY2Ugb25seSBmbG93cyB3aGVuIGEg
TWVkaWFTdHJlYW1UcmFjayBvYmplY3QgaXMgYm90aCB1bm11dGVkIGFuZCBlbmFibGVkCit9CisK
K2Jvb2wgTWVkaWFTdHJlYW1UcmFjazo6c3RvcHBlZCgpCit7CisgICAgcmV0dXJuIG1fc3RvcHBl
ZDsKIH0KIAogdm9pZCBNZWRpYVN0cmVhbVRyYWNrOjp0cmFja0RpZEVuZCgpCkBAIC0yMTEsNyAr
MzU0LDQyIEBAIHZvaWQgTWVkaWFTdHJlYW1UcmFjazo6dHJhY2tEaWRFbmQoKQogCiB2b2lkIE1l
ZGlhU3RyZWFtVHJhY2s6OnN0b3AoKQogewotICAgIG1fc3RvcHBlZCA9IHRydWU7CisgICAgc3Rv
cFByb2R1Y2luZ0RhdGEoKTsKK30KKwordm9pZCBNZWRpYVN0cmVhbVRyYWNrOjpzY2hlZHVsZUV2
ZW50RGlzcGF0Y2goUGFzc1JlZlB0cjxFdmVudD4gZXZlbnQpCit7CisgICAgeworICAgICAgICBN
dXRleExvY2tlciBsb2NrZXIobV9tdXRleCk7CisgICAgICAgIG1fc2NoZWR1bGVkRXZlbnRzLmFw
cGVuZChldmVudCk7CisgICAgICAgIGlmIChtX2V2ZW50RGlzcGF0Y2hTY2hlZHVsZWQpCisgICAg
ICAgICAgICByZXR1cm47CisgICAgICAgIG1fZXZlbnREaXNwYXRjaFNjaGVkdWxlZCA9IHRydWU7
CisgICAgfQorCisgICAgY2FsbE9uTWFpblRocmVhZChiaW5kKCZNZWRpYVN0cmVhbVRyYWNrOjpk
aXNwYXRjaFF1ZXVlZEV2ZW50cywgdGhpcykpOworfQorCit2b2lkIE1lZGlhU3RyZWFtVHJhY2s6
OmRpc3BhdGNoUXVldWVkRXZlbnRzKCkKK3sKKyAgICBWZWN0b3I8UmVmUHRyPEV2ZW50Pj4gZXZl
bnRzOworICAgIHsKKyAgICAgICAgTXV0ZXhMb2NrZXIgbG9ja2VyKG1fbXV0ZXgpOworCisgICAg
ICAgIG1fZXZlbnREaXNwYXRjaFNjaGVkdWxlZCA9IGZhbHNlOworICAgICAgICBpZiAoIXNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQoKSkgeworICAgICAgICAgICAgbV9zY2hlZHVsZWRFdmVudHMuY2xl
YXIoKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIGV2ZW50cy5z
d2FwKG1fc2NoZWR1bGVkRXZlbnRzKTsKKyAgICB9CisKKyAgICBWZWN0b3I8UmVmUHRyPEV2ZW50
PiA+OjppdGVyYXRvciBpdCA9IGV2ZW50cy5iZWdpbigpOworICAgIGZvciAoOyBpdCAhPSBldmVu
dHMuZW5kKCk7ICsraXQpCisgICAgICAgIGRpc3BhdGNoRXZlbnQoKCppdCkucmVsZWFzZSgpKTsK
KworICAgIGV2ZW50cy5jbGVhcigpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJhY2suaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3Ry
ZWFtVHJhY2suaAkocmV2aXNpb24gMTU3MDM5KQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9t
ZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVRyYWNrLmgJKHdvcmtpbmcgY29weSkKQEAgLTQxLDggKzQx
LDExIEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIERpY3Rpb25hcnk7Ci1jbGFzcyBN
ZWRpYUNvbnN0cmFpbnRzOworY2xhc3MgTWVkaWFDb25zdHJhaW50c0ltcGw7CitjbGFzcyBNZWRp
YVNvdXJjZVN0YXRlczsKIGNsYXNzIE1lZGlhU3RyZWFtVHJhY2tTb3VyY2VzQ2FsbGJhY2s7Citj
bGFzcyBNZWRpYVN0cmVhbUNhcGFiaWxpdGllczsKK2NsYXNzIE1lZGlhVHJhY2tDb25zdHJhaW50
czsKIAogY2xhc3MgTWVkaWFTdHJlYW1UcmFjayA6IHB1YmxpYyBSZWZDb3VudGVkPE1lZGlhU3Ry
ZWFtVHJhY2s+LCBwdWJsaWMgU2NyaXB0V3JhcHBhYmxlLCBwdWJsaWMgQWN0aXZlRE9NT2JqZWN0
LCBwdWJsaWMgRXZlbnRUYXJnZXRXaXRoSW5saW5lRGF0YSwgcHVibGljIE1lZGlhU3RyZWFtU291
cmNlOjpPYnNlcnZlciB7CiBwdWJsaWM6CkBAIC01NCwxNyArNTcsMzEgQEAgcHVibGljOgogCiAg
ICAgYm9vbCBlbmFibGVkKCkgY29uc3Q7CiAgICAgdm9pZCBzZXRFbmFibGVkKGJvb2wpOwotICAg
IAorCisgICAgYm9vbCBtdXRlZCgpIGNvbnN0OworICAgIGJvb2wgcmVhZG9ubHkoKSBjb25zdDsK
KyAgICBib29sIHJlbW90ZSgpIGNvbnN0OworCiAgICAgY29uc3QgQXRvbWljU3RyaW5nJiByZWFk
eVN0YXRlKCkgY29uc3Q7CiAKICAgICBzdGF0aWMgdm9pZCBnZXRTb3VyY2VzKFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQqLCBQYXNzUmVmUHRyPE1lZGlhU3RyZWFtVHJhY2tTb3VyY2VzQ2FsbGJhY2s+
LCBFeGNlcHRpb25Db2RlJik7CiAKLSAgICBNZWRpYVN0cmVhbVNvdXJjZSogc291cmNlKCkgY29u
c3QgeyByZXR1cm4gbV9zb3VyY2UuZ2V0KCk7IH0KLSAgICB2b2lkIHNldFNvdXJjZShNZWRpYVN0
cmVhbVNvdXJjZSopOworICAgIFBhc3NSZWZQdHI8TWVkaWFUcmFja0NvbnN0cmFpbnRzPiBjb25z
dHJhaW50cygpIGNvbnN0OworICAgIFBhc3NSZWZQdHI8TWVkaWFTb3VyY2VTdGF0ZXM+IHN0YXRl
cygpIGNvbnN0OworICAgIFBhc3NSZWZQdHI8TWVkaWFTdHJlYW1DYXBhYmlsaXRpZXM+IGNhcGFi
aWxpdGllcygpIGNvbnN0OworICAgIHZvaWQgYXBwbHlDb25zdHJhaW50cyhjb25zdCBEaWN0aW9u
YXJ5Jik7CisKKyAgICBQYXNzUmVmUHRyPE1lZGlhU3RyZWFtVHJhY2s+IGNsb25lKCk7CisgICAg
dm9pZCBzdG9wUHJvZHVjaW5nRGF0YSgpOwogCiAgICAgREVGSU5FX0FUVFJJQlVURV9FVkVOVF9M
SVNURU5FUihtdXRlKTsKICAgICBERUZJTkVfQVRUUklCVVRFX0VWRU5UX0xJU1RFTkVSKHVubXV0
ZSk7CisgICAgREVGSU5FX0FUVFJJQlVURV9FVkVOVF9MSVNURU5FUihzdGFydGVkKTsKICAgICBE
RUZJTkVfQVRUUklCVVRFX0VWRU5UX0xJU1RFTkVSKGVuZGVkKTsKKyAgICBERUZJTkVfQVRUUklC
VVRFX0VWRU5UX0xJU1RFTkVSKG92ZXJjb25zdHJhaW5lZCk7CisKKyAgICBNZWRpYVN0cmVhbVNv
dXJjZSogc291cmNlKCkgY29uc3QgeyByZXR1cm4gbV9zb3VyY2UuZ2V0KCk7IH0KKyAgICB2b2lk
IHNldFNvdXJjZShNZWRpYVN0cmVhbVNvdXJjZSopOwogCiAgICAgYm9vbCBlbmRlZCgpIGNvbnN0
OwogCkBAIC03MiwzMyArODksNDUgQEAgcHVibGljOgogICAgIHZpcnR1YWwgRXZlbnRUYXJnZXRJ
bnRlcmZhY2UgZXZlbnRUYXJnZXRJbnRlcmZhY2UoKSBjb25zdCBPVkVSUklERSBGSU5BTCB7IHJl
dHVybiBNZWRpYVN0cmVhbVRyYWNrRXZlbnRUYXJnZXRJbnRlcmZhY2VUeXBlOyB9CiAgICAgdmly
dHVhbCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkgY29u
c3QgT1ZFUlJJREUgRklOQUwgeyByZXR1cm4gQWN0aXZlRE9NT2JqZWN0OjpzY3JpcHRFeGVjdXRp
b25Db250ZXh0KCk7IH0KIAotICAgIC8vIEFjdGl2ZURPTU9iamVjdAotICAgIHZpcnR1YWwgdm9p
ZCBzdG9wKCkgT1ZFUlJJREUgRklOQUw7Ci0KICAgICB1c2luZyBSZWZDb3VudGVkPE1lZGlhU3Ry
ZWFtVHJhY2s+OjpyZWY7CiAgICAgdXNpbmcgUmVmQ291bnRlZDxNZWRpYVN0cmVhbVRyYWNrPjo6
ZGVyZWY7CiAKIHByb3RlY3RlZDoKKyAgICBleHBsaWNpdCBNZWRpYVN0cmVhbVRyYWNrKE1lZGlh
U3RyZWFtVHJhY2sqKTsKICAgICBNZWRpYVN0cmVhbVRyYWNrKFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQqLCBNZWRpYVN0cmVhbVNvdXJjZSosIGNvbnN0IERpY3Rpb25hcnkqKTsKIAogcHJpdmF0ZToK
KworICAgIHZvaWQgY29uZmlndXJlVHJhY2tSZW5kZXJpbmcoKTsKICAgICB2b2lkIHRyYWNrRGlk
RW5kKCk7CisgICAgdm9pZCBzY2hlZHVsZUV2ZW50RGlzcGF0Y2goUGFzc1JlZlB0cjxFdmVudD4p
OworICAgIHZvaWQgZGlzcGF0Y2hRdWV1ZWRFdmVudHMoKTsKKworICAgIC8vIEFjdGl2ZURPTU9i
amVjdAorICAgIHZpcnR1YWwgdm9pZCBzdG9wKCkgT1ZFUlJJREUgRklOQUw7CiAKICAgICAvLyBF
dmVudFRhcmdldAogICAgIHZpcnR1YWwgdm9pZCByZWZFdmVudFRhcmdldCgpIE9WRVJSSURFIEZJ
TkFMIHsgcmVmKCk7IH0KICAgICB2aXJ0dWFsIHZvaWQgZGVyZWZFdmVudFRhcmdldCgpIE9WRVJS
SURFIEZJTkFMIHsgZGVyZWYoKTsgfQogCiAgICAgLy8gTWVkaWFTdHJlYW1Tb3VyY2VPYnNlcnZl
cgotICAgIHZpcnR1YWwgdm9pZCBzb3VyY2VDaGFuZ2VkU3RhdGUoKSBPVkVSUklERSBGSU5BTDsK
KyAgICB2aXJ0dWFsIHZvaWQgc291cmNlU3RhdGVDaGFuZ2VkKCkgT1ZFUlJJREUgRklOQUw7Cisg
ICAgdmlydHVhbCB2b2lkIHNvdXJjZU11dGVkQ2hhbmdlZCgpIE9WRVJSSURFIEZJTkFMOworICAg
IHZpcnR1YWwgdm9pZCBzb3VyY2VFbmFibGVkQ2hhbmdlZCgpIE9WRVJSSURFIEZJTkFMOworICAg
IHZpcnR1YWwgYm9vbCBzdG9wcGVkKCkgT1ZFUlJJREUgRklOQUw7CisKKyAgICBWZWN0b3I8UmVm
UHRyPEV2ZW50Pj4gbV9zY2hlZHVsZWRFdmVudHM7CiAKICAgICBSZWZQdHI8TWVkaWFTdHJlYW1T
b3VyY2U+IG1fc291cmNlOwotICAgIFJlZlB0cjxNZWRpYUNvbnN0cmFpbnRzPiBtX2NvbnN0cmFp
bnRzOworICAgIFJlZlB0cjxNZWRpYUNvbnN0cmFpbnRzSW1wbD4gbV9jb25zdHJhaW50czsKICAg
ICBNZWRpYVN0cmVhbVNvdXJjZTo6UmVhZHlTdGF0ZSBtX3JlYWR5U3RhdGU7CiAgICAgbXV0YWJs
ZSBTdHJpbmcgbV9pZDsKKyAgICBNdXRleCBtX211dGV4OwogCiAgICAgYm9vbCBtX3N0b3BwZWQ7
CiAgICAgYm9vbCBtX2VuYWJsZWQ7CiAgICAgYm9vbCBtX211dGVkOworICAgIGJvb2wgbV9ldmVu
dERpc3BhdGNoU2NoZWR1bGVkOwogfTsKIAogdHlwZWRlZiBWZWN0b3I8UmVmUHRyPE1lZGlhU3Ry
ZWFtVHJhY2s+ID4gTWVkaWFTdHJlYW1UcmFja1ZlY3RvcjsKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1UcmFjay5pZGwKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVRyYWNrLmlkbAko
cmV2aXNpb24gMTU3MDE2KQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9N
ZWRpYVN0cmVhbVRyYWNrLmlkbAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDYgQEAKIC8qCiAg
KiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
IENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgog
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTIyLDYgKzIzLDggQEAKICAqIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICov
CiAKK2VudW0gTWVkaWFTdHJlYW1UcmFja1N0YXRlIHsgIm5ldyIsICJsaXZlIiwgImVuZGVkIiB9
OworCiBbCiAgICAgQ29uZGl0aW9uYWw9TUVESUFfU1RSRUFNLAogICAgIEV2ZW50VGFyZ2V0LApA
QCAtMzMsMTUgKzM2LDI5IEBACiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIERPTVN0cmluZyBpZDsK
ICAgICByZWFkb25seSBhdHRyaWJ1dGUgRE9NU3RyaW5nIGxhYmVsOwogICAgICAgICAgICAgIGF0
dHJpYnV0ZSBib29sZWFuIGVuYWJsZWQ7Ci0KLSAgICByZWFkb25seSBhdHRyaWJ1dGUgRE9NU3Ry
aW5nIHJlYWR5U3RhdGU7Ci0KKyAgICByZWFkb25seSBhdHRyaWJ1dGUgYm9vbGVhbiBtdXRlZDsK
ICAgICBhdHRyaWJ1dGUgRXZlbnRMaXN0ZW5lciBvbm11dGU7CiAgICAgYXR0cmlidXRlIEV2ZW50
TGlzdGVuZXIgb251bm11dGU7CisgICAgcmVhZG9ubHkgYXR0cmlidXRlIGJvb2xlYW4gX3JlYWRv
bmx5OworICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBib29sZWFuIHJlbW90ZTsKKyAgICByZWFkb25s
eSBhdHRyaWJ1dGUgTWVkaWFTdHJlYW1UcmFja1N0YXRlIHJlYWR5U3RhdGU7CisgICAgYXR0cmli
dXRlIEV2ZW50TGlzdGVuZXIgb25zdGFydGVkOwogICAgIGF0dHJpYnV0ZSBFdmVudExpc3RlbmVy
IG9uZW5kZWQ7CiAKICAgICBbQ2FsbFdpdGg9U2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgUmFpc2Vz
RXhjZXB0aW9uXSBzdGF0aWMgdm9pZCBnZXRTb3VyY2VzKE1lZGlhU3RyZWFtVHJhY2tTb3VyY2Vz
Q2FsbGJhY2sgY2FsbGJhY2spOwogCisgICAgTWVkaWFUcmFja0NvbnN0cmFpbnRzIGNvbnN0cmFp
bnRzKCk7CisKKyAgICBNZWRpYVNvdXJjZVN0YXRlcyBzdGF0ZXMoKTsKKworICAgIE1lZGlhU3Ry
ZWFtQ2FwYWJpbGl0aWVzIGNhcGFiaWxpdGllcygpOyAvLyByZXR1cm5zIGVpdGhlciBBbGxWaWRl
b0NhcGFiaWxpdGllcyBvciBBbGxBdWRpb0NhcGFiaWxpdGllcworCisgICAgdm9pZCBhcHBseUNv
bnN0cmFpbnRzKERpY3Rpb25hcnkgY29uc3RyYWludHMpOworCisgICAgYXR0cmlidXRlIEV2ZW50
TGlzdGVuZXIgb25vdmVyY29uc3RyYWluZWQ7CisgICAgTWVkaWFTdHJlYW1UcmFjayBjbG9uZSgp
OworICAgIFtJbXBsZW1lbnRlZEFzPXN0b3BQcm9kdWNpbmdEYXRhXSB2b2lkIHN0b3AoKTsKKwog
ICAgIC8vIEV2ZW50VGFyZ2V0IGludGVyZmFjZQogICAgIHZvaWQgYWRkRXZlbnRMaXN0ZW5lcihE
T01TdHJpbmcgdHlwZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgRXZlbnRMaXN0ZW5lciBs
aXN0ZW5lciwKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFU
cmFja0NvbnN0cmFpbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMv
bWVkaWFzdHJlYW0vTWVkaWFUcmFja0NvbnN0cmFpbnQuY3BwCShyZXZpc2lvbiAwKQorKysgU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVRyYWNrQ29uc3RyYWludC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw1MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
MyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICog
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAq
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICoKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgi
CisKKyNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQorCisjaW5jbHVkZSAiTWVkaWFUcmFja0NvbnN0
cmFpbnQuaCIKKwordXNpbmcgbmFtZXNwYWNlIEpTQzsKKworbmFtZXNwYWNlIFdlYkNvcmUgewor
CitQYXNzUmVmUHRyPE1lZGlhVHJhY2tDb25zdHJhaW50PiBNZWRpYVRyYWNrQ29uc3RyYWludDo6
Y3JlYXRlKGNvbnN0IERpY3Rpb25hcnkmIGNvbnN0cmFpbnQpCit7CisgICAgcmV0dXJuIGFkb3B0
UmVmKG5ldyBNZWRpYVRyYWNrQ29uc3RyYWludChjb25zdHJhaW50KSk7Cit9CisKK01lZGlhVHJh
Y2tDb25zdHJhaW50OjpNZWRpYVRyYWNrQ29uc3RyYWludChjb25zdCBEaWN0aW9uYXJ5JiBjb25z
dHJhaW50KQorICAgIDogbV9jb25zdHJhaW50KGNvbnN0cmFpbnQpCit7Cit9CisKK01lZGlhVHJh
Y2tDb25zdHJhaW50Ojp+TWVkaWFUcmFja0NvbnN0cmFpbnQoKQoreworfQorCit9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCisKKyNlbmRpZgpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRp
YXN0cmVhbS9NZWRpYVRyYWNrQ29uc3RyYWludC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFUcmFja0NvbnN0cmFpbnQuaAkocmV2aXNpb24g
MCkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFUcmFja0NvbnN0
cmFpbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDU4IEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFLCBJTkMuIGBgQVMgSVMnJyBBTkQg
QU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
KyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKgorICovCisKKyNpZm5kZWYgTWVk
aWFUcmFja0NvbnN0cmFpbnRfaAorI2RlZmluZSBNZWRpYVRyYWNrQ29uc3RyYWludF9oCisKKyNp
ZiBFTkFCTEUoTUVESUFfU1RSRUFNKQorCisjaW5jbHVkZSAiRGljdGlvbmFyeS5oIgorI2luY2x1
ZGUgIlNjcmlwdFdyYXBwYWJsZS5oIgorI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CisKK25h
bWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgU2NyaXB0VmFsdWU7CisKK2NsYXNzIE1lZGlhVHJh
Y2tDb25zdHJhaW50IDogcHVibGljIFJlZkNvdW50ZWQ8TWVkaWFUcmFja0NvbnN0cmFpbnQ+LCBw
dWJsaWMgU2NyaXB0V3JhcHBhYmxlIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxN
ZWRpYVRyYWNrQ29uc3RyYWludD4gY3JlYXRlKGNvbnN0IERpY3Rpb25hcnkmKTsKKworICAgIHZp
cnR1YWwgfk1lZGlhVHJhY2tDb25zdHJhaW50KCk7CisKKyAgICBjb25zdCBEaWN0aW9uYXJ5JiBj
b25zdHJhaW50KCkgY29uc3QgeyByZXR1cm4gbV9jb25zdHJhaW50OyB9CisKK3ByaXZhdGU6Cisg
ICAgZXhwbGljaXQgTWVkaWFUcmFja0NvbnN0cmFpbnQoY29uc3QgRGljdGlvbmFyeSYpOworICAg
IAorICAgIGNvbnN0IERpY3Rpb25hcnkmIG1fY29uc3RyYWludDsKK307CisKK30gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIE1lZGlhVHJhY2tDb25zdHJhaW50X2gKKworI2VuZGlm
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhVHJhY2tDb25z
dHJhaW50LmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3Ry
ZWFtL01lZGlhVHJhY2tDb25zdHJhaW50LmlkbAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9XZWJD
b3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFUcmFja0NvbnN0cmFpbnQuaWRsCSh3b3JraW5n
IGNvcHkpCkBAIC0wLDAgKzEsMzEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAq
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisg
KiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCitbCisgICAgQ29uZGl0aW9uYWw9TUVE
SUFfU1RSRUFNLAorICAgIE5vSW50ZXJmYWNlT2JqZWN0LAorXSBpbnRlcmZhY2UgTWVkaWFUcmFj
a0NvbnN0cmFpbnQgeworfTsKKwpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0
cmVhbS9NZWRpYVRyYWNrQ29uc3RyYWludFNldC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVRyYWNrQ29uc3RyYWludFNldC5jcHAJKHJl
dmlzaW9uIDApCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhVHJh
Y2tDb25zdHJhaW50U2V0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDUzIEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFLCBJTkMuIGBg
QVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IK
KyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKgorICovCisK
KyNpbmNsdWRlICJjb25maWcuaCIKKworI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCisKKyNpbmNs
dWRlICJNZWRpYVRyYWNrQ29uc3RyYWludFNldC5oIgorCit1c2luZyBuYW1lc3BhY2UgSlNDOwor
CituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1Bhc3NSZWZQdHI8TWVkaWFUcmFja0NvbnN0cmFpbnRT
ZXQ+IE1lZGlhVHJhY2tDb25zdHJhaW50U2V0OjpjcmVhdGUoY29uc3QgRGljdGlvbmFyeSYgY29u
c3RyYWludHMpCit7CisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBNZWRpYVRyYWNrQ29uc3RyYWlu
dFNldChjb25zdHJhaW50cykpOworfQorCitNZWRpYVRyYWNrQ29uc3RyYWludFNldDo6TWVkaWFU
cmFja0NvbnN0cmFpbnRTZXQoY29uc3QgRGljdGlvbmFyeSYgY29uc3RyYWludHMpCisgICAgOiBt
X2NvbnN0cmFpbnRzKGNvbnN0cmFpbnRzKQoreworfQorCitNZWRpYVRyYWNrQ29uc3RyYWludFNl
dDo6fk1lZGlhVHJhY2tDb25zdHJhaW50U2V0KCkKK3sKK30KKworfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQorCisjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0v
TWVkaWFUcmFja0NvbnN0cmFpbnRTZXQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL21lZGlhc3RyZWFtL01lZGlhVHJhY2tDb25zdHJhaW50U2V0LmgJKHJldmlzaW9uIDAp
CisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhVHJhY2tDb25zdHJh
aW50U2V0LmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw1NiBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSwgSU5DLiBgYEFTIElTJycgQU5E
IEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
CisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICoKKyAqLworCisjaWZuZGVmIE1l
ZGlhVHJhY2tDb25zdHJhaW50U2V0X2gKKyNkZWZpbmUgTWVkaWFUcmFja0NvbnN0cmFpbnRTZXRf
aAorCisjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKKworI2luY2x1ZGUgIkRpY3Rpb25hcnkuaCIK
KyNpbmNsdWRlICJTY3JpcHRXcmFwcGFibGUuaCIKKyNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5o
PgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIE1lZGlhVHJhY2tDb25zdHJhaW50U2V0
IDogcHVibGljIFJlZkNvdW50ZWQ8TWVkaWFUcmFja0NvbnN0cmFpbnRTZXQ+LCBwdWJsaWMgU2Ny
aXB0V3JhcHBhYmxlIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxNZWRpYVRyYWNr
Q29uc3RyYWludFNldD4gY3JlYXRlKGNvbnN0IERpY3Rpb25hcnkmKTsKKworICAgIHZpcnR1YWwg
fk1lZGlhVHJhY2tDb25zdHJhaW50U2V0KCk7CisKKyAgICBjb25zdCBEaWN0aW9uYXJ5JiBjb25z
dHJhaW50cygpIGNvbnN0IHsgcmV0dXJuIG1fY29uc3RyYWludHM7IH0KKworcHJpdmF0ZToKKyAg
ICBleHBsaWNpdCBNZWRpYVRyYWNrQ29uc3RyYWludFNldChjb25zdCBEaWN0aW9uYXJ5Jik7Cisg
ICAgCisgICAgY29uc3QgRGljdGlvbmFyeSYgbV9jb25zdHJhaW50czsKK307CisKK30gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIE1lZGlhVHJhY2tDb25zdHJhaW50U2V0X2gKKwor
I2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhVHJh
Y2tDb25zdHJhaW50U2V0LmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L21lZGlhc3RyZWFtL01lZGlhVHJhY2tDb25zdHJhaW50U2V0LmlkbAkocmV2aXNpb24gMCkKKysr
IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFUcmFja0NvbnN0cmFpbnRT
ZXQuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMzMgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgR09PR0xFIElOQy4gYGBBUyBJUycnIEFORCBB
TlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
ICBJTiBOTyBFVkVOVCBTSEFMTCBHT09HTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKK1sKKyAgICBDb25kaXRpb25hbD1NRURJQV9T
VFJFQU0sCisgICAgTm9JbnRlcmZhY2VPYmplY3QsCitdIGludGVyZmFjZSBNZWRpYVRyYWNrQ29u
c3RyYWludFNldCB7CisgICAgLy8gRklYTUU6IE5vdCBpbXBsZW1lbnRlZC4KKyAgICAvLyBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTIxOTU0Cit9OworCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhVHJhY2tDb25zdHJhaW50cy5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRp
YVRyYWNrQ29uc3RyYWludHMuY3BwCShyZXZpc2lvbiAwKQorKysgU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9tZWRpYXN0cmVhbS9NZWRpYVRyYWNrQ29uc3RyYWludHMuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0wLDAgKzEsNjcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLiAKKyAqCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaWYgRU5BQkxF
KE1FRElBX1NUUkVBTSkKKworI2luY2x1ZGUgIk1lZGlhVHJhY2tDb25zdHJhaW50cy5oIgorCisj
aW5jbHVkZSAiTWVkaWFUcmFja0NvbnN0cmFpbnQuaCIKKyNpbmNsdWRlICJNZWRpYVRyYWNrQ29u
c3RyYWludFNldC5oIgorI2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCisKK3VzaW5nIG5hbWVz
cGFjZSBKU0M7CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworUGFzc1JlZlB0cjxNZWRpYVRyYWNr
Q29uc3RyYWludHM+IE1lZGlhVHJhY2tDb25zdHJhaW50czo6Y3JlYXRlKFBhc3NSZWZQdHI8TWVk
aWFDb25zdHJhaW50c0ltcGw+IGNvbnN0cmFpbnRzKQoreworICAgIHJldHVybiBhZG9wdFJlZihu
ZXcgTWVkaWFUcmFja0NvbnN0cmFpbnRzKGNvbnN0cmFpbnRzKSk7Cit9CisKK01lZGlhVHJhY2tD
b25zdHJhaW50czo6TWVkaWFUcmFja0NvbnN0cmFpbnRzKFBhc3NSZWZQdHI8TWVkaWFDb25zdHJh
aW50c0ltcGw+IGNvbnN0cmFpbnRzKQorICAgIDogbV9jb25zdHJhaW50cyhjb25zdHJhaW50cykK
K3sKK30KKworVmVjdG9yPFBhc3NSZWZQdHI8TWVkaWFUcmFja0NvbnN0cmFpbnQ+PiBNZWRpYVRy
YWNrQ29uc3RyYWludHM6Om9wdGlvbmFsKGJvb2wpIGNvbnN0Cit7CisgICAgLy8gaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyMTk1NAorICAgIG5vdEltcGxlbWVudGVk
KCk7CisgICAgcmV0dXJuIFZlY3RvcjxQYXNzUmVmUHRyPE1lZGlhVHJhY2tDb25zdHJhaW50Pj4o
KTsKK30KKworUGFzc1JlZlB0cjxNZWRpYVRyYWNrQ29uc3RyYWludFNldD4gTWVkaWFUcmFja0Nv
bnN0cmFpbnRzOjptYW5kYXRvcnkoYm9vbCkgY29uc3QKK3sKKyAgICAvLyBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTIxOTU0CisgICAgbm90SW1wbGVtZW50ZWQoKTsK
KyAgICByZXR1cm4gbnVsbHB0cjsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5k
aWYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFUcmFja0Nv
bnN0cmFpbnRzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0
cmVhbS9NZWRpYVRyYWNrQ29uc3RyYWludHMuaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9XZWJD
b3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFUcmFja0NvbnN0cmFpbnRzLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTAsMCArMSw2MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUK
KyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
KyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuIAorICoKKyAqLworCisjaWZuZGVmIE1lZGlhVHJhY2tDb25zdHJhaW50
c19oCisjZGVmaW5lIE1lZGlhVHJhY2tDb25zdHJhaW50c19oCisKKyNpZiBFTkFCTEUoTUVESUFf
U1RSRUFNKQorCisjaW5jbHVkZSAiTWVkaWFDb25zdHJhaW50c0ltcGwuaCIKKyNpbmNsdWRlICJT
Y3JpcHRXcmFwcGFibGUuaCIKKyNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgorCituYW1lc3Bh
Y2UgV2ViQ29yZSB7CisKK2NsYXNzIE1lZGlhVHJhY2tDb25zdHJhaW50OworY2xhc3MgTWVkaWFU
cmFja0NvbnN0cmFpbnRTZXQ7CisKK2NsYXNzIE1lZGlhVHJhY2tDb25zdHJhaW50cyA6IHB1Ymxp
YyBSZWZDb3VudGVkPE1lZGlhVHJhY2tDb25zdHJhaW50cz4sIHB1YmxpYyBTY3JpcHRXcmFwcGFi
bGUgeworcHVibGljOgorICAgIHZpcnR1YWwgfk1lZGlhVHJhY2tDb25zdHJhaW50cygpIHsgfQor
CisgICAgc3RhdGljIFBhc3NSZWZQdHI8TWVkaWFUcmFja0NvbnN0cmFpbnRzPiBjcmVhdGUoUGFz
c1JlZlB0cjxNZWRpYUNvbnN0cmFpbnRzSW1wbD4pOworCisgICAgVmVjdG9yPFBhc3NSZWZQdHI8
TWVkaWFUcmFja0NvbnN0cmFpbnQ+PiBvcHRpb25hbChib29sKSBjb25zdDsKKyAgICBQYXNzUmVm
UHRyPE1lZGlhVHJhY2tDb25zdHJhaW50U2V0PiBtYW5kYXRvcnkoYm9vbCkgY29uc3Q7CisKK3By
aXZhdGU6CisgICAgZXhwbGljaXQgTWVkaWFUcmFja0NvbnN0cmFpbnRzKFBhc3NSZWZQdHI8TWVk
aWFDb25zdHJhaW50c0ltcGw+KTsKKyAgICAKKyAgICBSZWZQdHI8TWVkaWFDb25zdHJhaW50c0lt
cGw+IG1fY29uc3RyYWludHM7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRp
ZiAvLyBNZWRpYVRyYWNrQ29uc3RyYWludHNfaAorCisjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFUcmFja0NvbnN0cmFpbnRzLmlkbAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhVHJhY2tDb25z
dHJhaW50cy5pZGwJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlh
c3RyZWFtL01lZGlhVHJhY2tDb25zdHJhaW50cy5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTAsMCAr
MSwzMyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuIAorICovCisKK1sKKyAgICBDb25kaXRpb25hbD1NRURJQV9TVFJFQU0sCisgICAg
Tm9JbnRlcmZhY2VPYmplY3QsCitdIGludGVyZmFjZSBNZWRpYVRyYWNrQ29uc3RyYWludHMgewor
ICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBNZWRpYVRyYWNrQ29uc3RyYWludFNldD8gbWFuZGF0b3J5
OworICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBNZWRpYVRyYWNrQ29uc3RyYWludFtdPyBvcHRpb25h
bDsKK307CisKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTmF2aWdh
dG9yTWVkaWFTdHJlYW0uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMv
bWVkaWFzdHJlYW0vTmF2aWdhdG9yTWVkaWFTdHJlYW0uY3BwCShyZXZpc2lvbiAxNTcwMTYpCisr
KyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL05hdmlnYXRvck1lZGlhU3RyZWFt
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzYsOCArMzYsMjcgQEAKICNpbmNsdWRlICJVc2VyTWVk
aWFDb250cm9sbGVyLmgiCiAjaW5jbHVkZSAiVXNlck1lZGlhUmVxdWVzdC5oIgogCisvL0BAQEBA
CisjaW5jbHVkZSAiTWVkaWFTdHJlYW0uaCIKKyNpbmNsdWRlICJNb2NrTWVkaWFTdHJlYW1DZW50
ZXIuaCIKKyNpbmNsdWRlICJVc2VyTWVkaWFDbGllbnQuaCIKKy8vQEBAQEAKKwogbmFtZXNwYWNl
IFdlYkNvcmUgewogCisvL0BAQEBACitjbGFzcyBIYWNrVXNlck1lZGlhQ2xpZW50IEZJTkFMIDog
cHVibGljIFVzZXJNZWRpYUNsaWVudCB7CitwdWJsaWM6CisgICAgSGFja1VzZXJNZWRpYUNsaWVu
dCgpIHsgfQorICAgIH5IYWNrVXNlck1lZGlhQ2xpZW50KCkgeyB9CisgICAgCisgICAgLy8gVXNl
ck1lZGlhQ2xpZW50CisgICAgdmlydHVhbCB2b2lkIHJlcXVlc3RQZXJtaXNzaW9uKFBhc3NSZWZQ
dHI8VXNlck1lZGlhUmVxdWVzdD4gcmVxdWVzdCkgT1ZFUlJJREUgeyByZXF1ZXN0LT51c2VyTWVk
aWFBY2Nlc3NHcmFudGVkKCk7IH0KKyAgICB2aXJ0dWFsIHZvaWQgY2FuY2VsUmVxdWVzdChVc2Vy
TWVkaWFSZXF1ZXN0KikgT1ZFUlJJREUgeyB9CisgICAgdmlydHVhbCB2b2lkIHBhZ2VEZXN0cm95
ZWQoKSBPVkVSUklERSB7IH0KK307CisvL0BAQEBACisKIE5hdmlnYXRvck1lZGlhU3RyZWFtOjpO
YXZpZ2F0b3JNZWRpYVN0cmVhbSgpCiB7CiB9CkBAIC01MSw3ICs3MCwxMiBAQCB2b2lkIE5hdmln
YXRvck1lZGlhU3RyZWFtOjp3ZWJraXRHZXRVc2VyCiAgICAgaWYgKCFzdWNjZXNzQ2FsbGJhY2sp
CiAgICAgICAgIHJldHVybjsKIAorI2lmIDAKICAgICBVc2VyTWVkaWFDb250cm9sbGVyKiB1c2Vy
TWVkaWEgPSBVc2VyTWVkaWFDb250cm9sbGVyOjpmcm9tKG5hdmlnYXRvci0+ZnJhbWUoKSA/IG5h
dmlnYXRvci0+ZnJhbWUoKS0+cGFnZSgpIDogMCk7CisjZWxzZQorICAgIHN0YXRpYyBVc2VyTWVk
aWFDb250cm9sbGVyKiB1c2VyTWVkaWEgPSBVc2VyTWVkaWFDb250cm9sbGVyOjpjcmVhdGUobmV3
IEhhY2tVc2VyTWVkaWFDbGllbnQoKSkubGVha1B0cigpOworICAgIE1vY2tNZWRpYVN0cmVhbUNl
bnRlcjo6cmVnaXN0ZXJNb2NrTWVkaWFTdHJlYW1DZW50ZXIoKTsKKyNlbmRpZgogICAgIGlmICgh
dXNlck1lZGlhKSB7CiAgICAgICAgIGVjID0gTk9UX1NVUFBPUlRFRF9FUlI7CiAgICAgICAgIHJl
dHVybjsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vVXNlck1lZGlh
UmVxdWVzdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0
cmVhbS9Vc2VyTWVkaWFSZXF1ZXN0LmNwcAkocmV2aXNpb24gMTU3MDE2KQorKysgU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9Vc2VyTWVkaWFSZXF1ZXN0LmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMTczLDcgKzE3Myw2IEBAIHZvaWQgVXNlck1lZGlhUmVxdWVzdDo6Y2FsbFN1Y2Nl
c3NIYW5kbGUKICAgICBmb3IgKE1lZGlhU3RyZWFtVHJhY2tWZWN0b3I6Oml0ZXJhdG9yIGl0ZXIg
PSB0cmFja3MuYmVnaW4oKTsgaXRlciAhPSB0cmFja3MuZW5kKCk7ICsraXRlcikKICAgICAgICAg
KCppdGVyKS0+c291cmNlKCktPnNldENvbnN0cmFpbnRzKG1fdmlkZW9Db25zdHJhaW50cyk7CiAK
LSAgICBNZWRpYVN0cmVhbUNlbnRlcjo6c2hhcmVkKCkuZGlkQ3JlYXRlTWVkaWFTdHJlYW0oc3Ry
ZWFtRGVzY3JpcHRvci5nZXQoKSk7CiAgICAgbV9zdWNjZXNzQ2FsbGJhY2stPmhhbmRsZUV2ZW50
KHN0cmVhbS5nZXQoKSk7CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFz
dHJlYW0vVmlkZW9TdHJlYW1UcmFjay5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9tZWRpYXN0cmVhbS9WaWRlb1N0cmVhbVRyYWNrLmNwcAkocmV2aXNpb24gMTU3MDE2
KQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9WaWRlb1N0cmVhbVRyYWNr
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDcsMTEgKzQ3LDIxIEBAIFBhc3NSZWZQdHI8VmlkZW9T
dHJlYW1UcmFjaz4gVmlkZW9TdHJlYW0KICAgICByZXR1cm4gdHJhY2sucmVsZWFzZSgpOwogfQog
CitQYXNzUmVmUHRyPFZpZGVvU3RyZWFtVHJhY2s+IFZpZGVvU3RyZWFtVHJhY2s6OmNyZWF0ZShN
ZWRpYVN0cmVhbVRyYWNrKiB0cmFjaykKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3IFZpZGVv
U3RyZWFtVHJhY2sodHJhY2spKTsKK30KKwogVmlkZW9TdHJlYW1UcmFjazo6VmlkZW9TdHJlYW1U
cmFjayhTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBNZWRpYVN0cmVhbVNvdXJjZSog
c291cmNlLCBjb25zdCBEaWN0aW9uYXJ5KiB2aWRlb0NvbnN0cmFpbnRzKQogICAgIDogTWVkaWFT
dHJlYW1UcmFjayhjb250ZXh0LCBzb3VyY2UsIHZpZGVvQ29uc3RyYWludHMpCiB7CiB9CiAKK1Zp
ZGVvU3RyZWFtVHJhY2s6OlZpZGVvU3RyZWFtVHJhY2soTWVkaWFTdHJlYW1UcmFjayogdHJhY2sp
CisgICAgOiBNZWRpYVN0cmVhbVRyYWNrKHRyYWNrKQoreworfQorCiBjb25zdCBBdG9taWNTdHJp
bmcmIFZpZGVvU3RyZWFtVHJhY2s6OmtpbmQoKSBjb25zdAogewogICAgIHN0YXRpYyBOZXZlckRl
c3Ryb3llZDxBdG9taWNTdHJpbmc+IHZpZGVvS2luZCgidmlkZW8iLCBBdG9taWNTdHJpbmc6OkNv
bnN0cnVjdEZyb21MaXRlcmFsKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFz
dHJlYW0vVmlkZW9TdHJlYW1UcmFjay5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvbWVkaWFzdHJlYW0vVmlkZW9TdHJlYW1UcmFjay5oCShyZXZpc2lvbiAxNTcwMzkpCisr
KyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1ZpZGVvU3RyZWFtVHJhY2suaAko
d29ya2luZyBjb3B5KQpAQCAtMjksOCArMjksOCBAQAogI2lmIEVOQUJMRShNRURJQV9TVFJFQU0p
CiAKICNpbmNsdWRlICJNZWRpYVN0cmVhbVRyYWNrLmgiCi0jaW5jbHVkZSA8d3RmL1ZlY3Rvci5o
PgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTQxLDYgKzQxLDcgQEAgY2xhc3MgVmlkZW9TdHJl
YW1UcmFjayBGSU5BTCA6IHB1YmxpYyBNZQogcHVibGljOgogICAgIHN0YXRpYyBQYXNzUmVmUHRy
PFZpZGVvU3RyZWFtVHJhY2s+IGNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgY29uc3Qg
RGljdGlvbmFyeSYpOwogICAgIHN0YXRpYyBQYXNzUmVmUHRyPFZpZGVvU3RyZWFtVHJhY2s+IGNy
ZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgTWVkaWFTdHJlYW1Tb3VyY2UqKTsKKyAgICBz
dGF0aWMgUGFzc1JlZlB0cjxWaWRlb1N0cmVhbVRyYWNrPiBjcmVhdGUoTWVkaWFTdHJlYW1UcmFj
ayopOwogCiAgICAgdmlydHVhbCB+VmlkZW9TdHJlYW1UcmFjaygpIHsgfQogCkBAIC00OCw2ICs0
OSw3IEBAIHB1YmxpYzoKIAogcHJpdmF0ZToKICAgICBWaWRlb1N0cmVhbVRyYWNrKFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQqLCBNZWRpYVN0cmVhbVNvdXJjZSosIGNvbnN0IERpY3Rpb25hcnkqKTsK
KyAgICBleHBsaWNpdCBWaWRlb1N0cmVhbVRyYWNrKE1lZGlhU3RyZWFtVHJhY2sqKTsKIH07CiAK
IH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
YXVkaW8vQXVkaW9Db250ZXh0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmF1ZGlvL0F1ZGlvQ29udGV4dC5jcHAJKHJldmlzaW9uIDE1NzAxNikKKysrIFNvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0LmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNjMsNiArNjMsNyBAQAogI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCiAjaW5jbHVkZSAi
TWVkaWFTdHJlYW0uaCIKICNpbmNsdWRlICJNZWRpYVN0cmVhbUF1ZGlvRGVzdGluYXRpb25Ob2Rl
LmgiCisjaW5jbHVkZSAiTWVkaWFTdHJlYW1BdWRpb1NvdXJjZS5oIgogI2luY2x1ZGUgIk1lZGlh
U3RyZWFtQXVkaW9Tb3VyY2VOb2RlLmgiCiAjZW5kaWYKIApAQCAtNDIwLDEyICs0MjEsMTQgQEAg
UGFzc1JlZlB0cjxNZWRpYVN0cmVhbUF1ZGlvU291cmNlTm9kZT4gQQogICAgIC8vIEZJWE1FOiBn
ZXQgYSBwcm92aWRlciBmb3Igbm9uLWxvY2FsIE1lZGlhU3RyZWFtcyAobGlrZSBmcm9tIGEgcmVt
b3RlIHBlZXIpLgogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgYXVkaW9UcmFja3Muc2l6ZSgp
OyArK2kpIHsKICAgICAgICAgUmVmUHRyPE1lZGlhU3RyZWFtVHJhY2s+IGxvY2FsQXVkaW8gPSBh
dWRpb1RyYWNrc1tpXTsKLSAgICAgICAgTWVkaWFTdHJlYW1Tb3VyY2UqIHNvdXJjZSA9IGxvY2Fs
QXVkaW8tPnNvdXJjZSgpOwotICAgICAgICBpZiAoIXNvdXJjZS0+ZGV2aWNlSWQoKS5pc0VtcHR5
KCkpIHsKLSAgICAgICAgICAgIGRlc3RpbmF0aW9uKCktPmVuYWJsZUlucHV0KHNvdXJjZS0+ZGV2
aWNlSWQoKSk7Ci0gICAgICAgICAgICBwcm92aWRlciA9IGRlc3RpbmF0aW9uKCktPmxvY2FsQXVk
aW9JbnB1dFByb3ZpZGVyKCk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQorICAgICAg
ICBpZiAoIWxvY2FsQXVkaW8tPnNvdXJjZSgpLT5pc0F1ZGlvU3RyZWFtU291cmNlKCkpCisgICAg
ICAgICAgICBjb250aW51ZTsKKworICAgICAgICBNZWRpYVN0cmVhbUF1ZGlvU291cmNlKiBzb3Vy
Y2UgPSBzdGF0aWNfY2FzdDxNZWRpYVN0cmVhbUF1ZGlvU291cmNlKj4obG9jYWxBdWRpby0+c291
cmNlKCkpOworICAgICAgICBBU1NFUlQoIXNvdXJjZS0+ZGV2aWNlSWQoKS5pc0VtcHR5KCkpOwor
ICAgICAgICBkZXN0aW5hdGlvbigpLT5lbmFibGVJbnB1dChzb3VyY2UtPmRldmljZUlkKCkpOwor
ICAgICAgICBwcm92aWRlciA9IGRlc3RpbmF0aW9uKCktPmxvY2FsQXVkaW9JbnB1dFByb3ZpZGVy
KCk7CisgICAgICAgIGJyZWFrOwogICAgIH0KIAogICAgIFJlZlB0cjxNZWRpYVN0cmVhbUF1ZGlv
U291cmNlTm9kZT4gbm9kZSA9IE1lZGlhU3RyZWFtQXVkaW9Tb3VyY2VOb2RlOjpjcmVhdGUodGhp
cywgbWVkaWFTdHJlYW0sIHByb3ZpZGVyKTsKQEAgLTczMyw3ICs3MzYsNyBAQCB2b2lkIEF1ZGlv
Q29udGV4dDo6YWRkRGVmZXJyZWRGaW5pc2hEZXJlCiB2b2lkIEF1ZGlvQ29udGV4dDo6aGFuZGxl
UHJlUmVuZGVyVGFza3MoKQogewogICAgIEFTU0VSVChpc0F1ZGlvVGhyZWFkKCkpOwotIAorCiAg
ICAgLy8gQXQgdGhlIGJlZ2lubmluZyBvZiBldmVyeSByZW5kZXIgcXVhbnR1bSwgdHJ5IHRvIHVw
ZGF0ZSB0aGUgaW50ZXJuYWwgcmVuZGVyaW5nIGdyYXBoIHN0YXRlIChmcm9tIG1haW4gdGhyZWFk
IGNoYW5nZXMpLgogICAgIC8vIEl0J3MgT0sgaWYgdGhlIHRyeUxvY2soKSBmYWlscywgd2UnbGwg
anVzdCB0YWtlIHNsaWdodGx5IGxvbmdlciB0byBwaWNrIHVwIHRoZSBjaGFuZ2VzLgogICAgIGJv
b2wgbXVzdFJlbGVhc2VMb2NrOwpAQCAtNzUyLDggKzc1NSw4IEBAIHZvaWQgQXVkaW9Db250ZXh0
OjpoYW5kbGVQcmVSZW5kZXJUYXNrcygKIHZvaWQgQXVkaW9Db250ZXh0OjpoYW5kbGVQb3N0UmVu
ZGVyVGFza3MoKQogewogICAgIEFTU0VSVChpc0F1ZGlvVGhyZWFkKCkpOwotIAotICAgIC8vIE11
c3QgdXNlIGEgdHJ5TG9jaygpIGhlcmUgdG9vLiAgRG9uJ3Qgd29ycnksIHRoZSBsb2NrIHdpbGwg
dmVyeSByYXJlbHkgYmUgY29udGVuZGVkIGFuZCB0aGlzIG1ldGhvZCBpcyBjYWxsZWQgZnJlcXVl
bnRseS4KKworICAgIC8vIE11c3QgdXNlIGEgdHJ5TG9jaygpIGhlcmUgdG9vLiBEb24ndCB3b3Jy
eSwgdGhlIGxvY2sgd2lsbCB2ZXJ5IHJhcmVseSBiZSBjb250ZW5kZWQgYW5kIHRoaXMgbWV0aG9k
IGlzIGNhbGxlZCBmcmVxdWVudGx5LgogICAgIC8vIFRoZSB3b3JzdCB0aGF0IGNhbiBoYXBwZW4g
aXMgdGhhdCB0aGVyZSB3aWxsIGJlIHNvbWUgbm9kZXMgd2hpY2ggd2lsbCB0YWtlIHNsaWdodGx5
IGxvbmdlciB0aGFuIHVzdWFsIHRvIGJlIGRlbGV0ZWQgb3IgcmVtb3ZlZAogICAgIC8vIGZyb20g
dGhlIHJlbmRlciBncmFwaCAoaW4gd2hpY2ggY2FzZSB0aGV5J2xsIHJlbmRlciBzaWxlbmNlKS4K
ICAgICBib29sIG11c3RSZWxlYXNlTG9jazsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViYXVkaW8vTWVkaWFTdHJlYW1BdWRpb0Rlc3RpbmF0aW9uTm9kZS5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9NZWRpYVN0cmVhbUF1ZGlvRGVzdGlu
YXRpb25Ob2RlLmNwcAkocmV2aXNpb24gMTU3MDE2KQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJhdWRpby9NZWRpYVN0cmVhbUF1ZGlvRGVzdGluYXRpb25Ob2RlLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMzEsOSArMzEsOCBAQAogI2luY2x1ZGUgIkF1ZGlvQ29udGV4dC5oIgogI2luY2x1
ZGUgIkF1ZGlvTm9kZUlucHV0LmgiCiAjaW5jbHVkZSAiTWVkaWFTdHJlYW0uaCIKLSNpbmNsdWRl
ICJNZWRpYVN0cmVhbUNlbnRlci5oIgorI2luY2x1ZGUgIk1lZGlhU3RyZWFtQXVkaW9Tb3VyY2Uu
aCIKICNpbmNsdWRlICJSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXIuaCIKLSNpbmNsdWRlICJVVUlE
LmgiCiAjaW5jbHVkZSA8d3RmL0xvY2tlci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC00
OSwxMiArNDgsMTAgQEAgTWVkaWFTdHJlYW1BdWRpb0Rlc3RpbmF0aW9uTm9kZTo6TWVkaWFTdAog
ewogICAgIHNldE5vZGVUeXBlKE5vZGVUeXBlTWVkaWFTdHJlYW1BdWRpb0Rlc3RpbmF0aW9uKTsK
IAotICAgIG1fc291cmNlID0gTWVkaWFTdHJlYW1Tb3VyY2U6OmNyZWF0ZShBU0NJSUxpdGVyYWwo
IldlYkF1ZGlvLSIpICsgY3JlYXRlQ2Fub25pY2FsVVVJRFN0cmluZygpLCBNZWRpYVN0cmVhbVNv
dXJjZTo6QXVkaW8sICJNZWRpYVN0cmVhbUF1ZGlvRGVzdGluYXRpb25Ob2RlIiwgTWVkaWFTdHJl
YW1Tb3VyY2U6OkxpdmUsIHRydWUpOworICAgIG1fc291cmNlID0gTWVkaWFTdHJlYW1BdWRpb1Nv
dXJjZTo6Y3JlYXRlKCk7CiAgICAgTWVkaWFTdHJlYW1Tb3VyY2VWZWN0b3IgYXVkaW9Tb3VyY2Vz
OwogICAgIGF1ZGlvU291cmNlcy5hcHBlbmQobV9zb3VyY2UpOwotICAgIE1lZGlhU3RyZWFtU291
cmNlVmVjdG9yIHZpZGVvU291cmNlczsKLSAgICBtX3N0cmVhbSA9IE1lZGlhU3RyZWFtOjpjcmVh
dGUoY29udGV4dC0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLCBNZWRpYVN0cmVhbURlc2NyaXB0
b3I6OmNyZWF0ZShhdWRpb1NvdXJjZXMsIHZpZGVvU291cmNlcykpOwotICAgIE1lZGlhU3RyZWFt
Q2VudGVyOjpzaGFyZWQoKS5kaWRDcmVhdGVNZWRpYVN0cmVhbShtX3N0cmVhbS0+ZGVzY3JpcHRv
cigpKTsKKyAgICBtX3N0cmVhbSA9IE1lZGlhU3RyZWFtOjpjcmVhdGUoY29udGV4dC0+c2NyaXB0
RXhlY3V0aW9uQ29udGV4dCgpLCBNZWRpYVN0cmVhbURlc2NyaXB0b3I6OmNyZWF0ZShhdWRpb1Nv
dXJjZXMsIE1lZGlhU3RyZWFtU291cmNlVmVjdG9yKCkpKTsKIAogICAgIG1fc291cmNlLT5zZXRB
dWRpb0Zvcm1hdChudW1iZXJPZkNoYW5uZWxzLCBjb250ZXh0LT5zYW1wbGVSYXRlKCkpOwogCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL01lZGlhU3RyZWFtQXVkaW9EZXN0
aW5hdGlvbk5vZGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1
ZGlvL01lZGlhU3RyZWFtQXVkaW9EZXN0aW5hdGlvbk5vZGUuaAkocmV2aXNpb24gMTU3MDE2KQor
KysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9NZWRpYVN0cmVhbUF1ZGlvRGVzdGlu
YXRpb25Ob2RlLmgJKHdvcmtpbmcgY29weSkKQEAgLTM2LDYgKzM2LDcgQEAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAogY2xhc3MgQXVkaW9Db250ZXh0OworY2xhc3MgTWVkaWFTdHJlYW1BdWRpb1Nv
dXJjZTsKIAogY2xhc3MgTWVkaWFTdHJlYW1BdWRpb0Rlc3RpbmF0aW9uTm9kZSA6IHB1YmxpYyBB
dWRpb0Jhc2ljSW5zcGVjdG9yTm9kZSB7CiBwdWJsaWM6CkBAIC02MSw3ICs2Miw3IEBAIHByaXZh
dGU6CiAgICAgdmlydHVhbCBib29sIHByb3BhZ2F0ZXNTaWxlbmNlKCkgY29uc3QgT1ZFUlJJREUg
eyByZXR1cm4gZmFsc2U7IH0KIAogICAgIFJlZlB0cjxNZWRpYVN0cmVhbT4gbV9zdHJlYW07Ci0g
ICAgUmVmUHRyPE1lZGlhU3RyZWFtU291cmNlPiBtX3NvdXJjZTsKKyAgICBSZWZQdHI8TWVkaWFT
dHJlYW1BdWRpb1NvdXJjZT4gbV9zb3VyY2U7CiAgICAgUmVmUHRyPEF1ZGlvQnVzPiBtX21peEJ1
czsKIH07CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vTWVkaWFTdHJl
YW1BdWRpb1NvdXJjZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJhdWRpby9NZWRpYVN0cmVhbUF1ZGlvU291cmNlLmNwcAkocmV2aXNpb24gMCkKKysrIFNvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vTWVkaWFTdHJlYW1BdWRpb1NvdXJjZS5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTAsMCArMSw5OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFO
WQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisg
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5o
IgorCisjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKKworI2luY2x1ZGUgIk1lZGlhU3RyZWFtQXVk
aW9Tb3VyY2UuaCIKKworI2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCisjaW5jbHVkZSAiVVVJ
RC5oIgorI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsK
KworUGFzc1JlZlB0cjxNZWRpYVN0cmVhbUF1ZGlvU291cmNlPiBNZWRpYVN0cmVhbUF1ZGlvU291
cmNlOjpjcmVhdGUoKQoreworICAgIHJldHVybiBhZG9wdFJlZihuZXcgTWVkaWFTdHJlYW1BdWRp
b1NvdXJjZSgpKTsKK30KKworTWVkaWFTdHJlYW1BdWRpb1NvdXJjZTo6TWVkaWFTdHJlYW1BdWRp
b1NvdXJjZSgpCisgICAgOiBNZWRpYVN0cmVhbVNvdXJjZShBU0NJSUxpdGVyYWwoIldlYkF1ZGlv
LSIpICsgY3JlYXRlQ2Fub25pY2FsVVVJRFN0cmluZygpLCBNZWRpYVN0cmVhbVNvdXJjZTo6QXVk
aW8sICJNZWRpYVN0cmVhbUF1ZGlvRGVzdGluYXRpb25Ob2RlIikKK3sKK30KKworUGFzc1JlZlB0
cjxNZWRpYVN0cmVhbVNvdXJjZUNhcGFiaWxpdGllcz4gTWVkaWFTdHJlYW1BdWRpb1NvdXJjZTo6
Y2FwYWJpbGl0aWVzKCkgY29uc3QKK3sKKyAgICAvLyBGSVhNRTogaW1wbGVtZW50IHRoaXMuCisg
ICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyMjQzMAorICAg
IG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIDA7Cit9CisKK2NvbnN0IE1lZGlhU3RyZWFt
U291cmNlU3RhdGVzJiBNZWRpYVN0cmVhbUF1ZGlvU291cmNlOjpzdGF0ZXMoKQoreworICAgIC8v
IEZJWE1FOiBpbXBsZW1lbnQgdGhpcy4KKyAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTIyNDMwCisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4g
bV9jdXJyZW50U3RhdGVzOworICAgIAorfQorCit2b2lkIE1lZGlhU3RyZWFtQXVkaW9Tb3VyY2U6
OmFkZEF1ZGlvQ29uc3VtZXIoUGFzc1JlZlB0cjxBdWRpb0Rlc3RpbmF0aW9uQ29uc3VtZXI+IGNv
bnN1bWVyKQoreworICAgIE11dGV4TG9ja2VyIGxvY2tlcihtX2F1ZGlvQ29uc3VtZXJzTG9jayk7
CisgICAgbV9hdWRpb0NvbnN1bWVycy5hcHBlbmQoY29uc3VtZXIpOworfQorCitib29sIE1lZGlh
U3RyZWFtQXVkaW9Tb3VyY2U6OnJlbW92ZUF1ZGlvQ29uc3VtZXIoQXVkaW9EZXN0aW5hdGlvbkNv
bnN1bWVyKiBjb25zdW1lcikKK3sKKyAgICBNdXRleExvY2tlciBsb2NrZXIobV9hdWRpb0NvbnN1
bWVyc0xvY2spOworICAgIHNpemVfdCBwb3MgPSBtX2F1ZGlvQ29uc3VtZXJzLmZpbmQoY29uc3Vt
ZXIpOworICAgIGlmIChwb3MgIT0gbm90Rm91bmQpIHsKKyAgICAgICAgbV9hdWRpb0NvbnN1bWVy
cy5yZW1vdmUocG9zKTsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorICAgIHJldHVybiBm
YWxzZTsKK30KKwordm9pZCBNZWRpYVN0cmVhbUF1ZGlvU291cmNlOjpzZXRBdWRpb0Zvcm1hdChz
aXplX3QgbnVtYmVyT2ZDaGFubmVscywgZmxvYXQgc2FtcGxlUmF0ZSkKK3sKKyAgICBNdXRleExv
Y2tlciBsb2NrZXIobV9hdWRpb0NvbnN1bWVyc0xvY2spOworICAgIGZvciAoVmVjdG9yPFJlZlB0
cjxBdWRpb0Rlc3RpbmF0aW9uQ29uc3VtZXI+ID46Oml0ZXJhdG9yIGl0ID0gbV9hdWRpb0NvbnN1
bWVycy5iZWdpbigpOyBpdCAhPSBtX2F1ZGlvQ29uc3VtZXJzLmVuZCgpOyArK2l0KQorICAgICAg
ICAoKml0KS0+c2V0Rm9ybWF0KG51bWJlck9mQ2hhbm5lbHMsIHNhbXBsZVJhdGUpOworfQorCit2
b2lkIE1lZGlhU3RyZWFtQXVkaW9Tb3VyY2U6OmNvbnN1bWVBdWRpbyhBdWRpb0J1cyogYnVzLCBz
aXplX3QgbnVtYmVyT2ZGcmFtZXMpCit7CisgICAgTXV0ZXhMb2NrZXIgbG9ja2VyKG1fYXVkaW9D
b25zdW1lcnNMb2NrKTsKKyAgICBmb3IgKFZlY3RvcjxSZWZQdHI8QXVkaW9EZXN0aW5hdGlvbkNv
bnN1bWVyPiA+OjppdGVyYXRvciBpdCA9IG1fYXVkaW9Db25zdW1lcnMuYmVnaW4oKTsgaXQgIT0g
bV9hdWRpb0NvbnN1bWVycy5lbmQoKTsgKytpdCkKKyAgICAgICAgKCppdCktPmNvbnN1bWVBdWRp
byhidXMsIG51bWJlck9mRnJhbWVzKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisj
ZW5kaWYgLy8gRU5BQkxFKE1FRElBX1NUUkVBTSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViYXVkaW8vTWVkaWFTdHJlYW1BdWRpb1NvdXJjZS5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vTWVkaWFTdHJlYW1BdWRpb1NvdXJjZS5oCShyZXZp
c2lvbiAwKQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9NZWRpYVN0cmVhbUF1
ZGlvU291cmNlLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw3NyBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBg
YEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9S
CisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lm
bmRlZiBNZWRpYVN0cmVhbUF1ZGlvU291cmNlX2gKKyNkZWZpbmUgTWVkaWFTdHJlYW1BdWRpb1Nv
dXJjZV9oCisKKyNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQorCisjaW5jbHVkZSAiQXVkaW9EZXN0
aW5hdGlvbkNvbnN1bWVyLmgiCisjaW5jbHVkZSAiTWVkaWFTdHJlYW1Tb3VyY2UuaCIKKyNpbmNs
dWRlIDx3dGYvUmVmQ291bnRlZC5oPgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKyNpbmNsdWRl
IDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBB
dWRpb0J1czsKK2NsYXNzIE1lZGlhU3RyZWFtU291cmNlQ2FwYWJpbGl0aWVzOworCitjbGFzcyBN
ZWRpYVN0cmVhbUF1ZGlvU291cmNlIDogcHVibGljIE1lZGlhU3RyZWFtU291cmNlIHsKK3B1Ymxp
YzoKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxNZWRpYVN0cmVhbUF1ZGlvU291cmNlPiBjcmVhdGUo
KTsKKworICAgIH5NZWRpYVN0cmVhbUF1ZGlvU291cmNlKCkgeyB9CisKKyAgICB2aXJ0dWFsIGJv
b2wgaXNBdWRpb1N0cmVhbVNvdXJjZSgpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KKyAgICB2aXJ0
dWFsIGJvb2wgdXNlSURGb3JUcmFja0lEKCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQorCisgICAg
dmlydHVhbCBQYXNzUmVmUHRyPE1lZGlhU3RyZWFtU291cmNlQ2FwYWJpbGl0aWVzPiBjYXBhYmls
aXRpZXMoKSBjb25zdDsKKyAgICB2aXJ0dWFsIGNvbnN0IE1lZGlhU3RyZWFtU291cmNlU3RhdGVz
JiBzdGF0ZXMoKTsKKyAgICAKKyAgICBjb25zdCBTdHJpbmcmIGRldmljZUlkKCkgY29uc3QgeyBy
ZXR1cm4gbV9kZXZpY2VJZDsgfQorICAgIHZvaWQgc2V0RGV2aWNlSWQoY29uc3QgU3RyaW5nJiBk
ZXZpY2VJZCkgeyBtX2RldmljZUlkID0gZGV2aWNlSWQ7IH0KKworICAgIHZvaWQgc2V0QXVkaW9G
b3JtYXQoc2l6ZV90IG51bWJlck9mQ2hhbm5lbHMsIGZsb2F0IHNhbXBsZVJhdGUpOworICAgIHZv
aWQgY29uc3VtZUF1ZGlvKEF1ZGlvQnVzKiwgc2l6ZV90IG51bWJlck9mRnJhbWVzKTsKKworICAg
IHZvaWQgYWRkQXVkaW9Db25zdW1lcihQYXNzUmVmUHRyPEF1ZGlvRGVzdGluYXRpb25Db25zdW1l
cj4pOworICAgIGJvb2wgcmVtb3ZlQXVkaW9Db25zdW1lcihBdWRpb0Rlc3RpbmF0aW9uQ29uc3Vt
ZXIqKTsKKyAgICBjb25zdCBWZWN0b3I8UmVmUHRyPEF1ZGlvRGVzdGluYXRpb25Db25zdW1lcj4+
JiBhdWRpb0NvbnN1bWVycygpIGNvbnN0IHsgcmV0dXJuIG1fYXVkaW9Db25zdW1lcnM7IH0KKwor
cHJpdmF0ZToKKyAgICBNZWRpYVN0cmVhbUF1ZGlvU291cmNlKCk7CisKKyAgICBTdHJpbmcgbV9k
ZXZpY2VJZDsKKyAgICBNdXRleCBtX2F1ZGlvQ29uc3VtZXJzTG9jazsKKyAgICBWZWN0b3I8UmVm
UHRyPEF1ZGlvRGVzdGluYXRpb25Db25zdW1lcj4+IG1fYXVkaW9Db25zdW1lcnM7CisgICAgTWVk
aWFTdHJlYW1Tb3VyY2VTdGF0ZXMgbV9jdXJyZW50U3RhdGVzOworfTsKKworfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKE1FRElBX1NUUkVBTSkKKworI2VuZGlmIC8v
IE1lZGlhU3RyZWFtQXVkaW9Tb3VyY2VfaApJbmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dl
YkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMTU3MDE2KQorKysgU291
cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNv
cHkpCkBAIC04NCw2ICs4NCwzMCBAQAogCQkwNzAzMzRENzE0NTlGRkQ1MDA4RDhENDUgLyogVHJh
Y2tCYXNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAw
NzAzMzRENjE0NTlGRkQ1MDA4RDhENDUgLyogVHJhY2tCYXNlLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMDcwMzM0RDkxNDVBMDA2RjAwOEQ4RDQ1
IC8qIFRyYWNrQmFzZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAwNzAzMzREODE0NUEwMDZGMDA4RDhENDUgLyogVHJhY2tCYXNlLmNwcCAqLzsgfTsK
IAkJMDcwMzM0RTkxNDVBMUYzNjAwOEQ4RDQ1IC8qIEpTVHJhY2tDdXN0b20uY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDcwMzM0RTgxNDVBMUYzNTAw
OEQ4RDQ1IC8qIEpTVHJhY2tDdXN0b20uY3BwICovOyB9OworCQkwNzA1ODRGRDE3RjlENkRGMDA1
RjJCQ0IgLyogTWVkaWFTdHJlYW1Tb3VyY2VDYXBhYmlsaXRpZXMuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3MDU4NEZCMTdGOUQ2REYwMDVGMkJDQiAv
KiBNZWRpYVN0cmVhbVNvdXJjZUNhcGFiaWxpdGllcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTA3MDU4NEZGMTdGOUYwNUUwMDVGMkJDQiAvKiBD
YXBhYmlsaXR5UmFuZ2UuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMDcwNTg0RkUxN0Y5RjA1RTAwNUYyQkNCIC8qIENhcGFiaWxpdHlSYW5nZS5jcHAg
Ki87IH07CisJCTA3MDU4NTAyMTdGQTEwRDAwMDVGMkJDQiAvKiBKU0FsbFZpZGVvQ2FwYWJpbGl0
aWVzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3
MDU4NTAwMTdGQTEwRDAwMDVGMkJDQiAvKiBKU0FsbFZpZGVvQ2FwYWJpbGl0aWVzLmNwcCAqLzsg
fTsKKwkJMDcwNTg1MDMxN0ZBMTBEMDAwNUYyQkNCIC8qIEpTQWxsVmlkZW9DYXBhYmlsaXRpZXMu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3MDU4NTAx
MTdGQTEwRDAwMDVGMkJDQiAvKiBKU0FsbFZpZGVvQ2FwYWJpbGl0aWVzLmggKi87IH07CisJCTA3
MDU4NTA4MTdGQTQ2ODkwMDVGMkJDQiAvKiBBbGxBdWRpb0NhcGFiaWxpdGllcy5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDcwNTg1MDUxN0ZBNDY4OTAw
NUYyQkNCIC8qIEFsbEF1ZGlvQ2FwYWJpbGl0aWVzLmggKi87IH07CisJCTA3MDU4NTBCMTdGQTQ4
MjcwMDVGMkJDQiAvKiBNZWRpYVN0cmVhbUNhcGFiaWxpdGllcy5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDcwNTg1MEExN0ZBNDgyNzAwNUYyQkNCIC8q
IE1lZGlhU3RyZWFtQ2FwYWJpbGl0aWVzLmggKi87IH07CisJCTA3MDU4NTEyMTdGQTcxMDcwMDVG
MkJDQiAvKiBKU01lZGlhU3RyZWFtQ2FwYWJpbGl0aWVzLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3MDU4NTEwMTdGQTcxMDcwMDVGMkJDQiAvKiBK
U01lZGlhU3RyZWFtQ2FwYWJpbGl0aWVzLmNwcCAqLzsgfTsKKwkJMDcwNTg1MTMxN0ZBNzEwNzAw
NUYyQkNCIC8qIEpTTWVkaWFTdHJlYW1DYXBhYmlsaXRpZXMuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3MDU4NTExMTdGQTcxMDcwMDVGMkJDQiAvKiBK
U01lZGlhU3RyZWFtQ2FwYWJpbGl0aWVzLmggKi87IH07CisJCTA3MDU4NTE1MTdGQjBFRUEwMDVG
MkJDQiAvKiBNZWRpYVN0cmVhbUNhcGFiaWxpdGllcy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwNzA1ODUxNDE3RkIwRTJDMDA1RjJCQ0IgLyogTWVk
aWFTdHJlYW1DYXBhYmlsaXRpZXMuY3BwICovOyB9OworCQkwNzA1ODUxNzE3RkI0MEU5MDA1RjJC
Q0IgLyogSlNNZWRpYVN0cmVhbUNhcGFiaWxpdGllc0N1c3RvbS5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwNzA1ODUxNjE3RkI0MEU5MDA1RjJCQ0Ig
LyogSlNNZWRpYVN0cmVhbUNhcGFiaWxpdGllc0N1c3RvbS5jcHAgKi87IH07CisJCTA3MDU4NTFB
MTdGQjQ0QjQwMDVGMkJDQiAvKiBKU0FsbEF1ZGlvQ2FwYWJpbGl0aWVzLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3MDU4NTE4MTdGQjQ0QjQwMDVG
MkJDQiAvKiBKU0FsbEF1ZGlvQ2FwYWJpbGl0aWVzLmNwcCAqLzsgfTsKKwkJMDcwNTg1MUIxN0ZC
NDRCNDAwNUYyQkNCIC8qIEpTQWxsQXVkaW9DYXBhYmlsaXRpZXMuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3MDU4NTE5MTdGQjQ0QjQwMDVGMkJDQiAv
KiBKU0FsbEF1ZGlvQ2FwYWJpbGl0aWVzLmggKi87IH07CisJCTA3MDU4NTIxMTdGREMxNDAwMDVG
MkJDQiAvKiBNZWRpYVRyYWNrQ29uc3RyYWludC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMDcwNTg1MUQxN0ZEQzE0MDAwNUYyQkNCIC8qIE1lZGlhVHJh
Y2tDb25zdHJhaW50LmggKi87IH07CisJCTA3MDU4NTIzMTdGREMxNDAwMDVGMkJDQiAvKiBNZWRp
YVRyYWNrQ29uc3RyYWludHMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMDcwNTg1MUYxN0ZEQzE0MDAwNUYyQkNCIC8qIE1lZGlhVHJhY2tDb25zdHJh
aW50cy5jcHAgKi87IH07CisJCTA3MDU4NTI0MTdGREMxNDAwMDVGMkJDQiAvKiBNZWRpYVRyYWNr
Q29uc3RyYWludHMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDA3MDU4NTIwMTdGREMxNDAwMDVGMkJDQiAvKiBNZWRpYVRyYWNrQ29uc3RyYWludHMuaCAq
LzsgfTsKKwkJMDcwNTg1MjkxN0ZERTAyQzAwNUYyQkNCIC8qIE1lZGlhVHJhY2tDb25zdHJhaW50
U2V0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwNzA1
ODUyNjE3RkRFMDJCMDA1RjJCQ0IgLyogTWVkaWFUcmFja0NvbnN0cmFpbnRTZXQuaCAqLzsgfTsK
KwkJMDcwNTg1MzExN0ZERTZEOTAwNUYyQkNCIC8qIEpTTWVkaWFUcmFja0NvbnN0cmFpbnQuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDcwNTg1MkIx
N0ZERTZEOTAwNUYyQkNCIC8qIEpTTWVkaWFUcmFja0NvbnN0cmFpbnQuY3BwICovOyB9OworCQkw
NzA1ODUzMjE3RkRFNkQ5MDA1RjJCQ0IgLyogSlNNZWRpYVRyYWNrQ29uc3RyYWludC5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDcwNTg1MkMxN0ZERTZE
OTAwNUYyQkNCIC8qIEpTTWVkaWFUcmFja0NvbnN0cmFpbnQuaCAqLzsgfTsKKwkJMDcwNTg1MzMx
N0ZERTZEOTAwNUYyQkNCIC8qIEpTTWVkaWFUcmFja0NvbnN0cmFpbnRzLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3MDU4NTJEMTdGREU2RDkwMDVG
MkJDQiAvKiBKU01lZGlhVHJhY2tDb25zdHJhaW50cy5jcHAgKi87IH07CisJCTA3MDU4NTM0MTdG
REU2RDkwMDVGMkJDQiAvKiBKU01lZGlhVHJhY2tDb25zdHJhaW50cy5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDcwNTg1MkUxN0ZERTZEOTAwNUYyQkNC
IC8qIEpTTWVkaWFUcmFja0NvbnN0cmFpbnRzLmggKi87IH07CisJCTA3MDU4NTM1MTdGREU2RDkw
MDVGMkJDQiAvKiBKU01lZGlhVHJhY2tDb25zdHJhaW50U2V0LmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3MDU4NTJGMTdGREU2RDkwMDVGMkJDQiAv
KiBKU01lZGlhVHJhY2tDb25zdHJhaW50U2V0LmNwcCAqLzsgfTsKKwkJMDcwNTg1MzYxN0ZERTZE
OTAwNUYyQkNCIC8qIEpTTWVkaWFUcmFja0NvbnN0cmFpbnRTZXQuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3MDU4NTMwMTdGREU2RDkwMDVGMkJDQiAv
KiBKU01lZGlhVHJhY2tDb25zdHJhaW50U2V0LmggKi87IH07CisJCTA3MDU4NTM4MTdGRTA0NEYw
MDVGMkJDQiAvKiBNZWRpYVRyYWNrQ29uc3RyYWludFNldC5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwNzA1ODUzNzE3RkUwNDRGMDA1RjJCQ0IgLyog
TWVkaWFUcmFja0NvbnN0cmFpbnRTZXQuY3BwICovOyB9OworCQkwNzA1ODUzQTE3RkUwNzcwMDA1
RjJCQ0IgLyogTWVkaWFUcmFja0NvbnN0cmFpbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDcwNTg1MzkxN0ZFMDc3MDAwNUYyQkNCIC8qIE1lZGlh
VHJhY2tDb25zdHJhaW50LmNwcCAqLzsgfTsKIAkJMDcwNzU2OEIxNDIyNjJENjAwNDE0MTYxIC8q
IEhUTUxUcmFja0VsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMDcwNzU2ODgxNDIyNjJENjAwNDE0MTYxIC8qIEhUTUxUcmFja0VsZW1lbnQu
Y3BwICovOyB9OwogCQkwNzA3NTY4QzE0MjI2MkQ2MDA0MTQxNjEgLyogSFRNTFRyYWNrRWxlbWVu
dC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDcwNzU2
ODkxNDIyNjJENjAwNDE0MTYxIC8qIEhUTUxUcmFja0VsZW1lbnQuaCAqLzsgfTsKIAkJMDcwNzU2
OTQxNDIyNjY4RDAwNDE0MTYxIC8qIEpTVGV4dFRyYWNrLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3MDc1NjhFMTQyMjY2OEMwMDQxNDE2MSAvKiBK
U1RleHRUcmFjay5jcHAgKi87IH07CkBAIC0xMTksNiArMTQzLDkgQEAKIAkJMDczNUVFNkEwRjQw
QzVFNDAwNEEyNjA0IC8qIE1lZGlhUGxheWVyUHJveHkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3MzVFRTY5MEY0MEM1RTQwMDRBMjYwNCAvKiBNZWRp
YVBsYXllclByb3h5LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKIAkJMDczNjdEREYxNzJDQTY3RjAwRDg2MUI5IC8qIEluYmFuZFRleHRUcmFja1ByaXZh
dGVMZWdhY3lBVkZPYmpDLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAwNzM2N0RERDE3MkNBNjdGMDBEODYxQjkgLyogSW5iYW5kVGV4dFRyYWNrUHJpdmF0
ZUxlZ2FjeUFWRk9iakMuaCAqLzsgfTsKIAkJMDczNjdERTAxNzJDQTY4MjAwRDg2MUI5IC8qIElu
YmFuZFRleHRUcmFja1ByaXZhdGVMZWdhY3lBVkZPYmpDLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDczNjdEREUxNzJDQTY3RjAwRDg2MUI5IC8qIElu
YmFuZFRleHRUcmFja1ByaXZhdGVMZWdhY3lBVkZPYmpDLm1tICovOyB9OworCQkwNzNBQjRCMzE3
RjhCQUNBMDA2RTBENkYgLyogQWxsVmlkZW9DYXBhYmlsaXRpZXMuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3M0FCNEIwMTdGOEJBQ0EwMDZFMEQ2RiAv
KiBBbGxWaWRlb0NhcGFiaWxpdGllcy5oICovOyB9OworCQkwNzNBQjRCNzE3RjkyRUNGMDA2RTBE
NkYgLyogSlNDYXBhYmlsaXR5UmFuZ2UuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMDczQUI0QjUxN0Y5MkVDRjAwNkUwRDZGIC8qIEpTQ2FwYWJpbGl0
eVJhbmdlLmNwcCAqLzsgfTsKKwkJMDczQUI0QjgxN0Y5MkVDRjAwNkUwRDZGIC8qIEpTQ2FwYWJp
bGl0eVJhbmdlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAwNzNBQjRCNjE3RjkyRUNGMDA2RTBENkYgLyogSlNDYXBhYmlsaXR5UmFuZ2UuaCAqLzsgfTsK
IAkJMDczQkUzNDAxN0QxN0UwMTAwMkJENDMxIC8qIEpTTmF2aWdhdG9yTWVkaWFTdHJlYW0uY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDczQkUzM0Ux
N0QxN0UwMTAwMkJENDMxIC8qIEpTTmF2aWdhdG9yTWVkaWFTdHJlYW0uY3BwICovOyB9OwogCQkw
NzNCRTM0MTE3RDE3RTAxMDAyQkQ0MzEgLyogSlNOYXZpZ2F0b3JNZWRpYVN0cmVhbS5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDczQkUzM0YxN0QxN0Uw
MTAwMkJENDMxIC8qIEpTTmF2aWdhdG9yTWVkaWFTdHJlYW0uaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwNzNCRTM0ODE3RDE3RTdBMDAyQkQ0MzEg
LyogSlNOYXZpZ2F0b3JVc2VyTWVkaWFFcnJvci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwNzNCRTM0MjE3RDE3RTdBMDAyQkQ0MzEgLyogSlNOYXZp
Z2F0b3JVc2VyTWVkaWFFcnJvci5jcHAgKi87IH07CkBAIC0xNDUsNiArMTcyLDggQEAKIAkJMDc2
OTcwODYxNDYzQUQ4NzAwRjUwMkNGIC8qIFRleHRUcmFja0xpc3QuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDc2OTcwODQxNDYzQUQ4NzAwRjUwMkNG
IC8qIFRleHRUcmFja0xpc3QuY3BwICovOyB9OwogCQkwNzY5NzA4NzE0NjNBRDg3MDBGNTAyQ0Yg
LyogVGV4dFRyYWNrTGlzdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMDc2OTcwODUxNDYzQUQ4NzAwRjUwMkNGIC8qIFRleHRUcmFja0xpc3QuaCAqLzsg
fTsKIAkJMDc2RjBEMEUxMkI4MTkyNzAwQzI2QUE0IC8qIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91
bmRhdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MDc2RjBEMEExMkI4MTkyNzAwQzI2QUE0IC8qIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlv
bi5oICovOyB9OworCQkwNzgzMjI4NDE4MDEzRUQ4MDA5OTlFMEMgLyogTWVkaWFTdHJlYW1BdWRp
b1NvdXJjZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAwNzgzMjI4MjE4MDEzRUQ3MDA5OTlFMEMgLyogTWVkaWFTdHJlYW1BdWRpb1NvdXJjZS5jcHAg
Ki87IH07CisJCTA3ODMyMjg1MTgwMTNFRDgwMDk5OUUwQyAvKiBNZWRpYVN0cmVhbUF1ZGlvU291
cmNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwNzgz
MjI4MzE4MDEzRUQ4MDA5OTlFMEMgLyogTWVkaWFTdHJlYW1BdWRpb1NvdXJjZS5oICovOyB9Owog
CQkwNzg0NjM0MjE0NUIxNTFBMDBBNThERjEgLyogSlNUcmFja0V2ZW50LmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3ODQ2MzQwMTQ1QjE1MUEwMEE1
OERGMSAvKiBKU1RyYWNrRXZlbnQuY3BwICovOyB9OwogCQkwNzg0NjM0MzE0NUIxNTFBMDBBNThE
RjEgLyogSlNUcmFja0V2ZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAwNzg0NjM0MTE0NUIxNTFBMDBBNThERjEgLyogSlNUcmFja0V2ZW50LmggKi87
IH07CiAJCTA3ODQ2Mzg1MTQ1QjFCOEUwMEE1OERGMSAvKiBKU1RyYWNrQ3VzdG9tLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwNzg0NjM4NDE0NUIxQjhF
MDBBNThERjEgLyogSlNUcmFja0N1c3RvbS5oICovOyB9OwpAQCAtMjc2LDYgKzMwNSwxMiBAQAog
CQkwN0M1OUI2MDE3RjRCMjA4MDAwRkJDQkIgLyogSlNWaWRlb1N0cmVhbVRyYWNrLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwN0M1OUI1QzE3RjRCMjA4
MDAwRkJDQkIgLyogSlNWaWRlb1N0cmVhbVRyYWNrLmggKi87IH07CiAJCTA3QzU5QjYzMTdGNEQx
QkYwMDBGQkNCQiAvKiBNb2NrTWVkaWFTdHJlYW1DZW50ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDdDNTlCNjExN0Y0Q0Y4NzAwMEZCQ0JCIC8q
IE1vY2tNZWRpYVN0cmVhbUNlbnRlci5jcHAgKi87IH07CiAJCTA3QzU5QjY0MTdGNEQxQzQwMDBG
QkNCQiAvKiBNb2NrTWVkaWFTdHJlYW1DZW50ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3QzU5QjYyMTdGNENGODcwMDBGQkNCQiAvKiBNb2NrTWVk
aWFTdHJlYW1DZW50ZXIuaCAqLzsgfTsKKwkJMDdDNTlCNjgxN0Y3ODRCQTAwMEZCQ0JCIC8qIE1l
ZGlhU291cmNlU3RhdGVzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDA3QzU5QjY1MTdGNzg0QkEwMDBGQkNCQiAvKiBNZWRpYVNvdXJjZVN0YXRlcy5j
cHAgKi87IH07CisJCTA3QzU5QjY5MTdGNzg0QkEwMDBGQkNCQiAvKiBNZWRpYVNvdXJjZVN0YXRl
cy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDdDNTlC
NjYxN0Y3ODRCQTAwMEZCQ0JCIC8qIE1lZGlhU291cmNlU3RhdGVzLmggKi87IH07CisJCTA3QzU5
QjZFMTdGNzk0RjYwMDBGQkNCQiAvKiBKU01lZGlhU291cmNlU3RhdGVzQ3VzdG9tLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3QzU5QjZEMTdGNzk0
RjYwMDBGQkNCQiAvKiBKU01lZGlhU291cmNlU3RhdGVzQ3VzdG9tLmNwcCAqLzsgfTsKKwkJMDdD
NTlCNzExN0Y3OUM3QzAwMEZCQ0JCIC8qIEpTTWVkaWFTb3VyY2VTdGF0ZXMuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDdDNTlCNkYxN0Y3OUM3QzAw
MEZCQ0JCIC8qIEpTTWVkaWFTb3VyY2VTdGF0ZXMuY3BwICovOyB9OworCQkwN0M1OUI3MjE3Rjc5
QzdDMDAwRkJDQkIgLyogSlNNZWRpYVNvdXJjZVN0YXRlcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDdDNTlCNzAxN0Y3OUM3QzAwMEZCQ0JCIC8qIEpT
TWVkaWFTb3VyY2VTdGF0ZXMuaCAqLzsgfTsKKwkJMDdDNTlCNzYxN0Y3RDBEQjAwMEZCQ0JCIC8q
IENhcGFiaWxpdHlSYW5nZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMDdDNTlCNzQxN0Y3RDA5RDAwMEZCQ0JCIC8qIENhcGFiaWxpdHlSYW5nZS5oICov
OyB9OwogCQkwN0NFNzdENTE2NzEyQTZBMDBDNTVBNDcgLyogSW5iYW5kVGV4dFRyYWNrUHJpdmF0
ZUNsaWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MDdDRTc3RDQxNjcxMkE2QTAwQzU1QTQ3IC8qIEluYmFuZFRleHRUcmFja1ByaXZhdGVDbGllbnQu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwN0RD
NUZENDE3RDNFRUU5MDA5OUY4OTAgLyogSlNSVENTdGF0c1Jlc3BvbnNlQ3VzdG9tLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3REM1RkQzMTdEM0VF
RTkwMDk5Rjg5MCAvKiBKU1JUQ1N0YXRzUmVzcG9uc2VDdXN0b20uY3BwICovOyB9OwogCQkwN0Ux
MTZCMTE0ODlDOUExMDBFQzVBQ0UgLyogSlNUZXh0VHJhY2tDdXN0b20uY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDdFMTE2QjAxNDg5QzlBMTAwRUM1
QUNFIC8qIEpTVGV4dFRyYWNrQ3VzdG9tLmNwcCAqLzsgfTsKQEAgLTY0MTQsNiArNjQ0OSwzNSBA
QAogCQkwNzAzMzRENjE0NTlGRkQ1MDA4RDhENDUgLyogVHJhY2tCYXNlLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFRyYWNrQmFzZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQkwNzAzMzREODE0NUEwMDZGMDA4RDhENDUgLyogVHJhY2tCYXNlLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFRyYWNrQmFzZS5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTA3MDMzNEU4MTQ1QTFGMzUwMDhEOEQ0NSAvKiBKU1RyYWNrQ3Vz
dG9tLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTVHJhY2tDdXN0
b20uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwNzA1ODRGQjE3RjlENkRGMDA1
RjJCQ0IgLyogTWVkaWFTdHJlYW1Tb3VyY2VDYXBhYmlsaXRpZXMuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gTWVkaWFTdHJlYW1Tb3VyY2VDYXBhYmlsaXRpZXMuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMDcwNTg0RkUxN0Y5RjA1RTAwNUYyQkNCIC8qIENhcGFi
aWxpdHlSYW5nZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDYXBh
YmlsaXR5UmFuZ2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwNzA1ODUwMDE3
RkExMEQwMDA1RjJCQ0IgLyogSlNBbGxWaWRlb0NhcGFiaWxpdGllcy5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0FsbFZpZGVvQ2FwYWJpbGl0aWVzLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMDcwNTg1MDExN0ZBMTBEMDAwNUYyQkNCIC8qIEpT
QWxsVmlkZW9DYXBhYmlsaXRpZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
SlNBbGxWaWRlb0NhcGFiaWxpdGllcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkw
NzA1ODUwNTE3RkE0Njg5MDA1RjJCQ0IgLyogQWxsQXVkaW9DYXBhYmlsaXRpZXMuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQWxsQXVkaW9DYXBhYmlsaXRpZXMuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMDcwNTg1MDYxN0ZBNDY4OTAwNUYyQkNCIC8qIEFsbEF1
ZGlvQ2FwYWJpbGl0aWVzLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBBbGxBdWRpb0NhcGFi
aWxpdGllcy5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTA3MDU4NTBBMTdGQTQ4
MjcwMDVGMkJDQiAvKiBNZWRpYVN0cmVhbUNhcGFiaWxpdGllcy5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBNZWRpYVN0cmVhbUNhcGFiaWxpdGllcy5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQkwNzA1ODUwRTE3RkE2RkIxMDA1RjJCQ0IgLyogTWVkaWFTdHJlYW1D
YXBhYmlsaXRpZXMuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IE1lZGlhU3RyZWFtQ2FwYWJp
bGl0aWVzLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMDcwNTg1MTAxN0ZBNzEw
NzAwNUYyQkNCIC8qIEpTTWVkaWFTdHJlYW1DYXBhYmlsaXRpZXMuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNNZWRpYVN0cmVhbUNhcGFiaWxpdGllcy5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTA3MDU4NTExMTdGQTcxMDcwMDVGMkJDQiAvKiBK
U01lZGlhU3RyZWFtQ2FwYWJpbGl0aWVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IEpTTWVkaWFTdHJlYW1DYXBhYmlsaXRpZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJMDcwNTg1MTQxN0ZCMEUyQzAwNUYyQkNCIC8qIE1lZGlhU3RyZWFtQ2FwYWJpbGl0aWVz
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE1lZGlhU3RyZWFtQ2Fw
YWJpbGl0aWVzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMDcwNTg1MTYxN0ZC
NDBFOTAwNUYyQkNCIC8qIEpTTWVkaWFTdHJlYW1DYXBhYmlsaXRpZXNDdXN0b20uY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNNZWRpYVN0cmVhbUNhcGFiaWxpdGll
c0N1c3RvbS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTA3MDU4NTE4MTdGQjQ0
QjQwMDVGMkJDQiAvKiBKU0FsbEF1ZGlvQ2FwYWJpbGl0aWVzLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTQWxsQXVkaW9DYXBhYmlsaXRpZXMuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQkwNzA1ODUxOTE3RkI0NEI0MDA1RjJCQ0IgLyogSlNBbGxB
dWRpb0NhcGFiaWxpdGllcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU0Fs
bEF1ZGlvQ2FwYWJpbGl0aWVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTA3MDU4
NTFDMTdGREIyM0MwMDVGMkJDQiAvKiBNZWRpYVRyYWNrQ29uc3RyYWludHMuaWRsICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IE1l
ZGlhVHJhY2tDb25zdHJhaW50cy5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTA3
MDU4NTFEMTdGREMxNDAwMDVGMkJDQiAvKiBNZWRpYVRyYWNrQ29uc3RyYWludC5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNZWRpYVRyYWNrQ29uc3RyYWludC5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQkwNzA1ODUxRTE3RkRDMTQwMDA1RjJCQ0IgLyogTWVkaWFU
cmFja0NvbnN0cmFpbnQuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IE1lZGlhVHJhY2tDb25z
dHJhaW50LmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMDcwNTg1MUYxN0ZEQzE0
MDAwNUYyQkNCIC8qIE1lZGlhVHJhY2tDb25zdHJhaW50cy5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBNZWRpYVRyYWNrQ29uc3RyYWludHMuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQkwNzA1ODUyMDE3RkRDMTQwMDA1RjJCQ0IgLyogTWVkaWFUcmFj
a0NvbnN0cmFpbnRzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1lZGlhVHJh
Y2tDb25zdHJhaW50cy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwNzA1ODUyNjE3
RkRFMDJCMDA1RjJCQ0IgLyogTWVkaWFUcmFja0NvbnN0cmFpbnRTZXQuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gTWVkaWFUcmFja0NvbnN0cmFpbnRTZXQuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMDcwNTg1MjcxN0ZERTAyQjAwNUYyQkNCIC8qIE1lZGlhVHJh
Y2tDb25zdHJhaW50U2V0LmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBNZWRpYVRyYWNrQ29u
c3RyYWludFNldC5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTA3MDU4NTJCMTdG
REU2RDkwMDVGMkJDQiAvKiBKU01lZGlhVHJhY2tDb25zdHJhaW50LmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTTWVkaWFUcmFja0NvbnN0cmFpbnQuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwNzA1ODUyQzE3RkRFNkQ5MDA1RjJCQ0IgLyogSlNN
ZWRpYVRyYWNrQ29uc3RyYWludC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBK
U01lZGlhVHJhY2tDb25zdHJhaW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTA3
MDU4NTJEMTdGREU2RDkwMDVGMkJDQiAvKiBKU01lZGlhVHJhY2tDb25zdHJhaW50cy5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU01lZGlhVHJhY2tDb25zdHJhaW50
cy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTA3MDU4NTJFMTdGREU2RDkwMDVG
MkJDQiAvKiBKU01lZGlhVHJhY2tDb25zdHJhaW50cy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBKU01lZGlhVHJhY2tDb25zdHJhaW50cy5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQkwNzA1ODUyRjE3RkRFNkQ5MDA1RjJCQ0IgLyogSlNNZWRpYVRyYWNrQ29uc3Ry
YWludFNldC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU01lZGlh
VHJhY2tDb25zdHJhaW50U2V0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMDcw
NTg1MzAxN0ZERTZEOTAwNUYyQkNCIC8qIEpTTWVkaWFUcmFja0NvbnN0cmFpbnRTZXQuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNNZWRpYVRyYWNrQ29uc3RyYWludFNldC5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwNzA1ODUzNzE3RkUwNDRGMDA1RjJCQ0Ig
LyogTWVkaWFUcmFja0NvbnN0cmFpbnRTZXQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gTWVkaWFUcmFja0NvbnN0cmFpbnRTZXQuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQkwNzA1ODUzOTE3RkUwNzcwMDA1RjJCQ0IgLyogTWVkaWFUcmFja0NvbnN0
cmFpbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTWVkaWFUcmFj
a0NvbnN0cmFpbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwNzA3NTY4ODE0
MjI2MkQ2MDA0MTQxNjEgLyogSFRNTFRyYWNrRWxlbWVudC5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBIVE1MVHJhY2tFbGVtZW50LmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJMDcwNzU2ODkxNDIyNjJENjAwNDE0MTYxIC8qIEhUTUxUcmFja0VsZW1l
bnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSFRNTFRyYWNrRWxlbWVudC5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwNzA3NTY4QTE0MjI2MkQ2MDA0MTQxNjEg
LyogSFRNTFRyYWNrRWxlbWVudC5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gSFRNTFRyYWNr
RWxlbWVudC5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC02NTQ5LDYgKzY2MTMs
OSBAQAogCQkwNzM1RUU2OTBGNDBDNUU0MDA0QTI2MDQgLyogTWVkaWFQbGF5ZXJQcm94eS5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNZWRpYVBsYXllclByb3h5Lmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA3MzY3REREMTcyQ0E2N0YwMEQ4NjFCOSAvKiBJbmJh
bmRUZXh0VHJhY2tQcml2YXRlTGVnYWN5QVZGT2JqQy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IG5hbWUgPSBJbmJhbmRUZXh0VHJhY2tQcml2YXRlTGVnYWN5QVZGT2JqQy5oOyBwYXRoID0g
b2JqYy9JbmJhbmRUZXh0VHJhY2tQcml2YXRlTGVnYWN5QVZGT2JqQy5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQkwNzM2N0RERTE3MkNBNjdGMDBEODYxQjkgLyogSW5iYW5kVGV4dFRy
YWNrUHJpdmF0ZUxlZ2FjeUFWRk9iakMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpj
cHA7IG5hbWUgPSBJbmJhbmRUZXh0VHJhY2tQcml2YXRlTGVnYWN5QVZGT2JqQy5tbTsgcGF0aCA9
IG9iamMvSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUxlZ2FjeUFWRk9iakMubW07IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCTA3M0FCNEIwMTdGOEJBQ0EwMDZFMEQ2RiAvKiBBbGxWaWRlb0Nh
cGFiaWxpdGllcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBbGxWaWRlb0Nh
cGFiaWxpdGllcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwNzNBQjRCNTE3Rjky
RUNGMDA2RTBENkYgLyogSlNDYXBhYmlsaXR5UmFuZ2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gSlNDYXBhYmlsaXR5UmFuZ2UuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQkwNzNBQjRCNjE3RjkyRUNGMDA2RTBENkYgLyogSlNDYXBhYmlsaXR5UmFu
Z2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNDYXBhYmlsaXR5UmFuZ2Uu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDczQkUzM0UxN0QxN0UwMTAwMkJENDMx
IC8qIEpTTmF2aWdhdG9yTWVkaWFTdHJlYW0uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gSlNOYXZpZ2F0b3JNZWRpYVN0cmVhbS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTA3M0JFMzNGMTdEMTdFMDEwMDJCRDQzMSAvKiBKU05hdmlnYXRvck1lZGlh
U3RyZWFtLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTTmF2aWdhdG9yTWVk
aWFTdHJlYW0uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDczQkUzNDIxN0QxN0U3
QTAwMkJENDMxIC8qIEpTTmF2aWdhdG9yVXNlck1lZGlhRXJyb3IuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNOYXZpZ2F0b3JVc2VyTWVkaWFFcnJvci5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC02NTc1LDYgKzY2NDIsOCBAQAogCQkwNzY5NzA4
NTE0NjNBRDg3MDBGNTAyQ0YgLyogVGV4dFRyYWNrTGlzdC5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBUZXh0VHJhY2tMaXN0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTA3NkYwRDA5MTJCODE5MjcwMEMyNkFBNCAvKiBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5k
YXRpb24uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTWVkaWFQbGF5
ZXJQcml2YXRlQVZGb3VuZGF0aW9uLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
MDc2RjBEMEExMkI4MTkyNzAwQzI2QUE0IC8qIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlv
bi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNZWRpYVBsYXllclByaXZhdGVB
VkZvdW5kYXRpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMDc4MzIyODIxODAx
M0VENzAwOTk5RTBDIC8qIE1lZGlhU3RyZWFtQXVkaW9Tb3VyY2UuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTWVkaWFTdHJlYW1BdWRpb1NvdXJjZS5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTA3ODMyMjgzMTgwMTNFRDgwMDk5OUUwQyAvKiBNZWRp
YVN0cmVhbUF1ZGlvU291cmNlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1l
ZGlhU3RyZWFtQXVkaW9Tb3VyY2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDc4
NDYzNDAxNDVCMTUxQTAwQTU4REYxIC8qIEpTVHJhY2tFdmVudC5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU1RyYWNrRXZlbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQkwNzg0NjM0MTE0NUIxNTFBMDBBNThERjEgLyogSlNUcmFja0V2ZW50Lmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTVHJhY2tFdmVudC5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQkwNzg0NjM4NDE0NUIxQjhFMDBBNThERjEgLyogSlNUcmFj
a0N1c3RvbS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU1RyYWNrQ3VzdG9t
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC02NjM5LDYgKzY3MDgsMTUgQEAKIAkJ
MDdDNTlCNUMxN0Y0QjIwODAwMEZCQ0JCIC8qIEpTVmlkZW9TdHJlYW1UcmFjay5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU1ZpZGVvU3RyZWFtVHJhY2suaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDdDNTlCNjExN0Y0Q0Y4NzAwMEZCQ0JCIC8qIE1vY2tNZWRp
YVN0cmVhbUNlbnRlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBN
b2NrTWVkaWFTdHJlYW1DZW50ZXIuY3BwOyBwYXRoID0gbW9jay9Nb2NrTWVkaWFTdHJlYW1DZW50
ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwN0M1OUI2MjE3RjRDRjg3MDAw
RkJDQkIgLyogTW9ja01lZGlhU3RyZWFtQ2VudGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgbmFtZSA9IE1vY2tNZWRpYVN0cmVhbUNlbnRlci5oOyBwYXRoID0gbW9jay9Nb2NrTWVkaWFT
dHJlYW1DZW50ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMDdDNTlCNjUxN0Y3
ODRCQTAwMEZCQ0JCIC8qIE1lZGlhU291cmNlU3RhdGVzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IE1lZGlhU291cmNlU3RhdGVzLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJMDdDNTlCNjYxN0Y3ODRCQTAwMEZCQ0JCIC8qIE1lZGlhU291cmNlU3Rh
dGVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1lZGlhU291cmNlU3RhdGVz
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTA3QzU5QjY3MTdGNzg0QkEwMDBGQkNC
QiAvKiBNZWRpYVNvdXJjZVN0YXRlcy5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gTWVkaWFT
b3VyY2VTdGF0ZXMuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwN0M1OUI2RDE3
Rjc5NEY2MDAwRkJDQkIgLyogSlNNZWRpYVNvdXJjZVN0YXRlc0N1c3RvbS5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU01lZGlhU291cmNlU3RhdGVzQ3VzdG9tLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMDdDNTlCNkYxN0Y3OUM3QzAwMEZCQ0JC
IC8qIEpTTWVkaWFTb3VyY2VTdGF0ZXMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gSlNNZWRpYVNvdXJjZVN0YXRlcy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTA3QzU5QjcwMTdGNzlDN0MwMDBGQkNCQiAvKiBKU01lZGlhU291cmNlU3RhdGVzLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTTWVkaWFTb3VyY2VTdGF0ZXMuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMDdDNTlCNzMxN0Y3RDA5RDAwMEZCQ0JCIC8q
IEFsbFZpZGVvQ2FwYWJpbGl0aWVzLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBBbGxWaWRl
b0NhcGFiaWxpdGllcy5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTA3QzU5Qjc0
MTdGN0QwOUQwMDBGQkNCQiAvKiBDYXBhYmlsaXR5UmFuZ2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gQ2FwYWJpbGl0eVJhbmdlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTA3QzU5Qjc1MTdGN0QwOUQwMDBGQkNCQiAvKiBDYXBhYmlsaXR5UmFuZ2UuaWRsICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gdGV4dDsgcGF0aCA9IENhcGFiaWxpdHlSYW5nZS5pZGw7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTA3Q0U3N0Q0MTY3MTJBNkEwMEM1NUE0NyAvKiBJbmJhbmRUZXh0VHJh
Y2tQcml2YXRlQ2xpZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEluYmFu
ZFRleHRUcmFja1ByaXZhdGVDbGllbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
MDdEQzVGRDMxN0QzRUVFOTAwOTlGODkwIC8qIEpTUlRDU3RhdHNSZXNwb25zZUN1c3RvbS5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU1JUQ1N0YXRzUmVzcG9uc2VD
dXN0b20uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwN0UxMTZCMDE0ODlDOUEx
MDBFQzVBQ0UgLyogSlNUZXh0VHJhY2tDdXN0b20uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gSlNUZXh0VHJhY2tDdXN0b20uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwpAQCAtMTMyMDksMTIgKzEzMjg3LDM0IEBACiAJCTA3MjIxQjQ2MTdDRUMzMjcwMDg0
OEU1MSAvKiBtZWRpYXN0cmVhbSAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRy
ZW4gPSAoCisJCQkJMDcwNTg1MzkxN0ZFMDc3MDAwNUYyQkNCIC8qIE1lZGlhVHJhY2tDb25zdHJh
aW50LmNwcCAqLywKKwkJCQkwNzA1ODUzNzE3RkUwNDRGMDA1RjJCQ0IgLyogTWVkaWFUcmFja0Nv
bnN0cmFpbnRTZXQuY3BwICovLAorCQkJCTA3MDU4NTI2MTdGREUwMkIwMDVGMkJDQiAvKiBNZWRp
YVRyYWNrQ29uc3RyYWludFNldC5oICovLAorCQkJCTA3MDU4NTI3MTdGREUwMkIwMDVGMkJDQiAv
KiBNZWRpYVRyYWNrQ29uc3RyYWludFNldC5pZGwgKi8sCisJCQkJMDcwNTg1MUQxN0ZEQzE0MDAw
NUYyQkNCIC8qIE1lZGlhVHJhY2tDb25zdHJhaW50LmggKi8sCisJCQkJMDcwNTg1MUUxN0ZEQzE0
MDAwNUYyQkNCIC8qIE1lZGlhVHJhY2tDb25zdHJhaW50LmlkbCAqLywKKwkJCQkwNzA1ODUxRjE3
RkRDMTQwMDA1RjJCQ0IgLyogTWVkaWFUcmFja0NvbnN0cmFpbnRzLmNwcCAqLywKKwkJCQkwNzA1
ODUyMDE3RkRDMTQwMDA1RjJCQ0IgLyogTWVkaWFUcmFja0NvbnN0cmFpbnRzLmggKi8sCisJCQkJ
MDcwNTg1MUMxN0ZEQjIzQzAwNUYyQkNCIC8qIE1lZGlhVHJhY2tDb25zdHJhaW50cy5pZGwgKi8s
CisJCQkJMDcwNTg1MDUxN0ZBNDY4OTAwNUYyQkNCIC8qIEFsbEF1ZGlvQ2FwYWJpbGl0aWVzLmgg
Ki8sCisJCQkJMDcwNTg1MDYxN0ZBNDY4OTAwNUYyQkNCIC8qIEFsbEF1ZGlvQ2FwYWJpbGl0aWVz
LmlkbCAqLywKKwkJCQkwNzA1ODRGRTE3RjlGMDVFMDA1RjJCQ0IgLyogQ2FwYWJpbGl0eVJhbmdl
LmNwcCAqLywKKwkJCQkwNzNBQjRCMDE3RjhCQUNBMDA2RTBENkYgLyogQWxsVmlkZW9DYXBhYmls
aXRpZXMuaCAqLywKKwkJCQkwN0M1OUI3MzE3RjdEMDlEMDAwRkJDQkIgLyogQWxsVmlkZW9DYXBh
YmlsaXRpZXMuaWRsICovLAorCQkJCTA3QzU5Qjc0MTdGN0QwOUQwMDBGQkNCQiAvKiBDYXBhYmls
aXR5UmFuZ2UuaCAqLywKKwkJCQkwN0M1OUI3NTE3RjdEMDlEMDAwRkJDQkIgLyogQ2FwYWJpbGl0
eVJhbmdlLmlkbCAqLywKKwkJCQkwN0M1OUI2NTE3Rjc4NEJBMDAwRkJDQkIgLyogTWVkaWFTb3Vy
Y2VTdGF0ZXMuY3BwICovLAorCQkJCTA3QzU5QjY2MTdGNzg0QkEwMDBGQkNCQiAvKiBNZWRpYVNv
dXJjZVN0YXRlcy5oICovLAorCQkJCTA3QzU5QjY3MTdGNzg0QkEwMDBGQkNCQiAvKiBNZWRpYVNv
dXJjZVN0YXRlcy5pZGwgKi8sCiAJCQkJMDdDNTlCNEQxN0Y0QUMxNTAwMEZCQ0JCIC8qIEF1ZGlv
U3RyZWFtVHJhY2suY3BwICovLAogCQkJCTA3QzU5QjRFMTdGNEFDMTUwMDBGQkNCQiAvKiBBdWRp
b1N0cmVhbVRyYWNrLmggKi8sCiAJCQkJMDdDNTlCNEYxN0Y0QUMxNTAwMEZCQ0JCIC8qIEF1ZGlv
U3RyZWFtVHJhY2suaWRsICovLAogCQkJCTA3QzU5QjUwMTdGNEFDMTUwMDBGQkNCQiAvKiBWaWRl
b1N0cmVhbVRyYWNrLmNwcCAqLywKIAkJCQkwN0M1OUI1MTE3RjRBQzE1MDAwRkJDQkIgLyogVmlk
ZW9TdHJlYW1UcmFjay5oICovLAogCQkJCTA3QzU5QjUyMTdGNEFDMTUwMDBGQkNCQiAvKiBWaWRl
b1N0cmVhbVRyYWNrLmlkbCAqLywKKwkJCQkwNzA1ODUxNDE3RkIwRTJDMDA1RjJCQ0IgLyogTWVk
aWFTdHJlYW1DYXBhYmlsaXRpZXMuY3BwICovLAorCQkJCTA3MDU4NTBFMTdGQTZGQjEwMDVGMkJD
QiAvKiBNZWRpYVN0cmVhbUNhcGFiaWxpdGllcy5pZGwgKi8sCisJCQkJMDcwNTg1MEExN0ZBNDgy
NzAwNUYyQkNCIC8qIE1lZGlhU3RyZWFtQ2FwYWJpbGl0aWVzLmggKi8sCiAJCQkJMDcyMjFCNEEx
N0NFQzMyNzAwODQ4RTUxIC8qIE1lZGlhQ29uc3RyYWludHNJbXBsLmNwcCAqLywKIAkJCQkwNzIy
MUI0QjE3Q0VDMzI3MDA4NDhFNTEgLyogTWVkaWFDb25zdHJhaW50c0ltcGwuaCAqLywKIAkJCQkw
NzIyMUI0QzE3Q0VDMzI3MDA4NDhFNTEgLyogTWVkaWFTdHJlYW0uY3BwICovLApAQCAtMTMzMTMs
NiArMTM0MTMsNyBAQAogCQkJCTA3MjIxQjlEMTdDRjBBRDQwMDg0OEU1MSAvKiBNZWRpYVN0cmVh
bURlc2NyaXB0b3IuaCAqLywKIAkJCQkwNzIyMUI5RTE3Q0YwQUQ0MDA4NDhFNTEgLyogTWVkaWFT
dHJlYW1Tb3VyY2UuY3BwICovLAogCQkJCTA3MjIxQjlGMTdDRjBBRDQwMDg0OEU1MSAvKiBNZWRp
YVN0cmVhbVNvdXJjZS5oICovLAorCQkJCTA3MDU4NEZCMTdGOUQ2REYwMDVGMkJDQiAvKiBNZWRp
YVN0cmVhbVNvdXJjZUNhcGFiaWxpdGllcy5oICovLAogCQkJCTA3NjMwNkUyMTdFMjJBNDMwMDVB
N0M0RSAvKiBNZWRpYVN0cmVhbVRyYWNrU291cmNlc1JlcXVlc3RDbGllbnQuaCAqLywKIAkJCQkw
NzIyMUJBMTE3Q0YwQUQ0MDA4NDhFNTEgLyogUlRDQ29uZmlndXJhdGlvbi5oICovLAogCQkJCTA3
MjIxQkEyMTdDRjBBRDQwMDg0OEU1MSAvKiBSVENEYXRhQ2hhbm5lbEhhbmRsZXIuaCAqLywKQEAg
LTEzMzYwLDYgKzEzNDYxLDE2IEBACiAJCTA3Q0ZEOTkzMTdEMDE0MDUwMDFDNEZGQyAvKiBNZWRp
YVN0cmVhbSAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCisJCQkJ
MDcwNTg1MkIxN0ZERTZEOTAwNUYyQkNCIC8qIEpTTWVkaWFUcmFja0NvbnN0cmFpbnQuY3BwICov
LAorCQkJCTA3MDU4NTJDMTdGREU2RDkwMDVGMkJDQiAvKiBKU01lZGlhVHJhY2tDb25zdHJhaW50
LmggKi8sCisJCQkJMDcwNTg1MkQxN0ZERTZEOTAwNUYyQkNCIC8qIEpTTWVkaWFUcmFja0NvbnN0
cmFpbnRzLmNwcCAqLywKKwkJCQkwNzA1ODUyRTE3RkRFNkQ5MDA1RjJCQ0IgLyogSlNNZWRpYVRy
YWNrQ29uc3RyYWludHMuaCAqLywKKwkJCQkwNzA1ODUyRjE3RkRFNkQ5MDA1RjJCQ0IgLyogSlNN
ZWRpYVRyYWNrQ29uc3RyYWludFNldC5jcHAgKi8sCisJCQkJMDcwNTg1MzAxN0ZERTZEOTAwNUYy
QkNCIC8qIEpTTWVkaWFUcmFja0NvbnN0cmFpbnRTZXQuaCAqLywKKwkJCQkwNzA1ODUxMDE3RkE3
MTA3MDA1RjJCQ0IgLyogSlNNZWRpYVN0cmVhbUNhcGFiaWxpdGllcy5jcHAgKi8sCisJCQkJMDcw
NTg1MTExN0ZBNzEwNzAwNUYyQkNCIC8qIEpTTWVkaWFTdHJlYW1DYXBhYmlsaXRpZXMuaCAqLywK
KwkJCQkwN0M1OUI2RjE3Rjc5QzdDMDAwRkJDQkIgLyogSlNNZWRpYVNvdXJjZVN0YXRlcy5jcHAg
Ki8sCisJCQkJMDdDNTlCNzAxN0Y3OUM3QzAwMEZCQ0JCIC8qIEpTTWVkaWFTb3VyY2VTdGF0ZXMu
aCAqLywKIAkJCQkwN0M1OUI1OTE3RjRCMjA4MDAwRkJDQkIgLyogSlNBdWRpb1N0cmVhbVRyYWNr
LmNwcCAqLywKIAkJCQkwN0M1OUI1QTE3RjRCMjA4MDAwRkJDQkIgLyogSlNBdWRpb1N0cmVhbVRy
YWNrLmggKi8sCiAJCQkJMDdDNTlCNUIxN0Y0QjIwODAwMEZCQ0JCIC8qIEpTVmlkZW9TdHJlYW1U
cmFjay5jcHAgKi8sCkBAIC0xOTE3OSw2ICsxOTI5MCw4IEBACiAJCUJDNEVERUY3MEMwOEY0MTQw
MDdFREQ0OSAvKiBDdXN0b20gKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVu
ID0gKAorCQkJCTA3MDU4NTE2MTdGQjQwRTkwMDVGMkJDQiAvKiBKU01lZGlhU3RyZWFtQ2FwYWJp
bGl0aWVzQ3VzdG9tLmNwcCAqLywKKwkJCQkwN0M1OUI2RDE3Rjc5NEY2MDAwRkJDQkIgLyogSlNN
ZWRpYVNvdXJjZVN0YXRlc0N1c3RvbS5jcHAgKi8sCiAJCQkJQkMyRUQ2QkIwQzZCRDJGMDAwOTIw
QkZGIC8qIEpTQXR0ckN1c3RvbS5jcHAgKi8sCiAJCQkJRkRFQUFBRUYxMkIwMkVFNDAwRENGMzNC
IC8qIEpTQXVkaW9CdWZmZXJTb3VyY2VOb2RlQ3VzdG9tLmNwcCAqLywKIAkJCQlGREVBQUFGMDEy
QjAyRUU0MDBEQ0YzM0IgLyogSlNBdWRpb0NvbnRleHRDdXN0b20uY3BwICovLApAQCAtMTk3NzUs
NiArMTk4ODgsMTIgQEAKIAkJQ0Q2MUZFN0IxNzk0Q0EwMjAwNDEwMUVCIC8qIE1lZGlhU291cmNl
ICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJCQkwNzA1ODUx
ODE3RkI0NEI0MDA1RjJCQ0IgLyogSlNBbGxBdWRpb0NhcGFiaWxpdGllcy5jcHAgKi8sCisJCQkJ
MDcwNTg1MTkxN0ZCNDRCNDAwNUYyQkNCIC8qIEpTQWxsQXVkaW9DYXBhYmlsaXRpZXMuaCAqLywK
KwkJCQkwNzA1ODUwMDE3RkExMEQwMDA1RjJCQ0IgLyogSlNBbGxWaWRlb0NhcGFiaWxpdGllcy5j
cHAgKi8sCisJCQkJMDcwNTg1MDExN0ZBMTBEMDAwNUYyQkNCIC8qIEpTQWxsVmlkZW9DYXBhYmls
aXRpZXMuaCAqLywKKwkJCQkwNzNBQjRCNTE3RjkyRUNGMDA2RTBENkYgLyogSlNDYXBhYmlsaXR5
UmFuZ2UuY3BwICovLAorCQkJCTA3M0FCNEI2MTdGOTJFQ0YwMDZFMEQ2RiAvKiBKU0NhcGFiaWxp
dHlSYW5nZS5oICovLAogCQkJCUNEOURFMTcyMTdBQUM3NEMwMEVBMzg2RCAvKiBKU01lZGlhU291
cmNlLmNwcCAqLywKIAkJCQlDRDlERTE3MzE3QUFDNzRDMDBFQTM4NkQgLyogSlNNZWRpYVNvdXJj
ZS5oICovLAogCQkJCUNEOURFMTc2MTdBQUM3NUIwMEVBMzg2RCAvKiBKU1NvdXJjZUJ1ZmZlci5j
cHAgKi8sCkBAIC0yMTAyMiw2ICsyMTE0MSw4IEBACiAJCUZEMzE1RkEyMTJCMDI1QjEwMEMxQTM1
OSAvKiB3ZWJhdWRpbyAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAo
CisJCQkJMDc4MzIyODIxODAxM0VENzAwOTk5RTBDIC8qIE1lZGlhU3RyZWFtQXVkaW9Tb3VyY2Uu
Y3BwICovLAorCQkJCTA3ODMyMjgzMTgwMTNFRDgwMDk5OUUwQyAvKiBNZWRpYVN0cmVhbUF1ZGlv
U291cmNlLmggKi8sCiAJCQkJRkQzMTVGRjMxMkIwMjY3NjAwQzFBMzU5IC8qIEFuYWx5c2VyTm9k
ZS5jcHAgKi8sCiAJCQkJRkQzMTVGRjQxMkIwMjY3NjAwQzFBMzU5IC8qIEFuYWx5c2VyTm9kZS5o
ICovLAogCQkJCUZEMzE1RkY1MTJCMDI2NzYwMEMxQTM1OSAvKiBBbmFseXNlck5vZGUuaWRsICov
LApAQCAtMjE0MTksNiArMjE1NDAsNyBAQAogCQkJCUZEMzE2MEJGMTJCMDI3MkEwMEMxQTM1OSAv
KiBBdWRpb0ZpbGVSZWFkZXJNYWMuaCBpbiBIZWFkZXJzICovLAogCQkJCUZERTJENTVCMTU5RTY2
RUIwMERDQ0NGOCAvKiBBdWRpb0lPQ2FsbGJhY2suaCBpbiBIZWFkZXJzICovLAogCQkJCUZEMzE2
MDEwMTJCMDI2NzYwMEMxQTM1OSAvKiBBdWRpb0xpc3RlbmVyLmggaW4gSGVhZGVycyAqLywKKwkJ
CQkwNzA1ODUyNDE3RkRDMTQwMDA1RjJCQ0IgLyogTWVkaWFUcmFja0NvbnN0cmFpbnRzLmggaW4g
SGVhZGVycyAqLywKIAkJCQlGRDMxNjAxMzEyQjAyNjc2MDBDMUEzNTkgLyogQXVkaW9Ob2RlLmgg
aW4gSGVhZGVycyAqLywKIAkJCQlGRDMxNjAxNjEyQjAyNjc2MDBDMUEzNTkgLyogQXVkaW9Ob2Rl
SW5wdXQuaCBpbiBIZWFkZXJzICovLAogCQkJCUZEMzE2MDE4MTJCMDI2NzYwMEMxQTM1OSAvKiBB
dWRpb05vZGVPdXRwdXQuaCBpbiBIZWFkZXJzICovLApAQCAtMjE1ODEsNiArMjE3MDMsNyBAQAog
CQkJCUJDMEIzNkE1MENEM0M2N0MwMEFDN0VCNSAvKiBDb25zb2xlLmggaW4gSGVhZGVycyAqLywK
IAkJCQkyREYyRTlENTE2NkUzOTc1MDAzNUJFRjIgLyogQ29uc29sZUFQSVR5cGVzLmggaW4gSGVh
ZGVycyAqLywKIAkJCQk0MUYwNjE4RTBGNUYwNjk4MDBBMDdFQUMgLyogQ29uc29sZU1lc3NhZ2Uu
aCBpbiBIZWFkZXJzICovLAorCQkJCTA3M0FCNEIzMTdGOEJBQ0EwMDZFMEQ2RiAvKiBBbGxWaWRl
b0NhcGFiaWxpdGllcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkNFNTY0NEUxMzdBMzRENjAwN0Qy
OTM0IC8qIENvbnNvbGVUeXBlcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTgxODcyMUMwOTc3RDND
MDAwNTgyNkQ5IC8qIENvbnRhaW5lck5vZGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUUxQTE0NzA4
MTExMDJCMTUwMEVFQzBGMyAvKiBDb250YWluZXJOb2RlQWxnb3JpdGhtcy5oIGluIEhlYWRlcnMg
Ki8sCkBAIC0yMTczNyw2ICsyMTg2MCw3IEBACiAJCQkJQTU3MzJCMEIxMzZBMTYxRDAwNUM4RDdD
IC8qIERhdGVDb21wb25lbnRzLmggaW4gSGVhZGVycyAqLywKIAkJCQlGNTVCM0RCNjEyNTFGMTJE
MDAzRUYyNjkgLyogRGF0ZUlucHV0VHlwZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDUzRUI2Mzcx
NTlDNTcwNDAwMDAxQkI3IC8qIERhdGVUaW1lRm9ybWF0LmggaW4gSGVhZGVycyAqLywKKwkJCQkw
NzA1ODUwMzE3RkExMEQwMDA1RjJCQ0IgLyogSlNBbGxWaWRlb0NhcGFiaWxpdGllcy5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJRjU1QjNEQjgxMjUxRjEyRDAwM0VGMjY5IC8qIERhdGVUaW1lSW5wdXRU
eXBlLmggaW4gSGVhZGVycyAqLywKIAkJCQlGNTVCM0RCQTEyNTFGMTJEMDAzRUYyNjkgLyogRGF0
ZVRpbWVMb2NhbElucHV0VHlwZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDVGRUE1RDAxNTZEREU4
QzAwNjU0MTAxIC8qIERlY2ltYWwuaCBpbiBIZWFkZXJzICovLApAQCAtMjE3NTAsNiArMjE4NzQs
NyBAQAogCQkJCUZEMzE2MDJFMTJCMDI2NzYwMEMxQTM1OSAvKiBEZWxheU5vZGUuaCBpbiBIZWFk
ZXJzICovLAogCQkJCUZEMzE2MDMxMTJCMDI2NzYwMEMxQTM1OSAvKiBEZWxheVByb2Nlc3Nvci5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJMUM0QzhGNjYwQUQ4NjU1RDAwOTQ3NUNFIC8qIERlbGV0ZUJ1
dHRvbi5oIGluIEhlYWRlcnMgKi8sCisJCQkJMDcwNTg1MzIxN0ZERTZEOTAwNUYyQkNCIC8qIEpT
TWVkaWFUcmFja0NvbnN0cmFpbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTFDNEM4RjAyMEFEODVE
ODcwMDk0NzVDRSAvKiBEZWxldGVCdXR0b25Db250cm9sbGVyLmggaW4gSGVhZGVycyAqLywKIAkJ
CQk5MzMwOURERjA5OUU2NDkyMDA1NkU1ODEgLyogRGVsZXRlRnJvbVRleHROb2RlQ29tbWFuZC5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJMDdDNTlCNjQxN0Y0RDFDNDAwMEZCQ0JCIC8qIE1vY2tNZWRp
YVN0cmVhbUNlbnRlci5oIGluIEhlYWRlcnMgKi8sCkBAIC0yMTc5MSw2ICsyMTkxNiw3IEBACiAJ
CQkJQ0UwNTdGQTYxMjIwNzMxMTAwQTQ3NkQ1IC8qIERvY3VtZW50TWFya2VyQ29udHJvbGxlci5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJMTQ5NDdGRkUxMkY4MENEMjAwQTBGNjMxIC8qIERvY3VtZW50
T3JkZXJlZE1hcC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkNDRkJBRTgwQjUxNTJFRDAwMDFGMUQ3
IC8qIERvY3VtZW50UGFyc2VyLmggaW4gSGVhZGVycyAqLywKKwkJCQkwNzA1ODUyOTE3RkRFMDJD
MDA1RjJCQ0IgLyogTWVkaWFUcmFja0NvbnN0cmFpbnRTZXQuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTRBNEY0OEFBMTZCMERGQzAwMEVEQkIyOSAvKiBEb2N1bWVudFJ1bGVTZXRzLmggaW4gSGVhZGVy
cyAqLywKIAkJCQlBRDZFNzFBRDE2Njg4OTlEMDAzMjBDMTMgLyogRG9jdW1lbnRTaGFyZWRPYmpl
Y3RQb29sLmggaW4gSGVhZGVycyAqLywKIAkJCQlFNDdFMjc2NTE2MDM2RUQyMDBFRTJBRkIgLyog
RG9jdW1lbnRTdHlsZVNoZWV0Q29sbGVjdGlvbi5oIGluIEhlYWRlcnMgKi8sCkBAIC0yMTk0NSw2
ICsyMjA3MSw3IEBACiAJCQkJODU5OTJFQkEwQUE1MDY5NTAwQUMwNzg1IC8qIERPTUhUTUxIZWFk
RWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODVFNzExQUQwQUM1RDUzNTAwNTMyNzBGIC8q
IERPTUhUTUxIZWFkRWxlbWVudEludGVybmFsLmggaW4gSGVhZGVycyAqLywKIAkJCQk4NTE4M0I0
NDBBQTY5MjYxMDBGMTlGQTMgLyogRE9NSFRNTEhlYWRpbmdFbGVtZW50LmggaW4gSGVhZGVycyAq
LywKKwkJCQkwNzA1ODUzNjE3RkRFNkQ5MDA1RjJCQ0IgLyogSlNNZWRpYVRyYWNrQ29uc3RyYWlu
dFNldC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODVFNzExQUUwQUM1RDUzNTAwNTMyNzBGIC8qIERP
TUhUTUxIZWFkaW5nRWxlbWVudEludGVybmFsLmggaW4gSGVhZGVycyAqLywKIAkJCQk4NUVDQkVG
MTBBQTc2MjY5MDA1NDRGMEIgLyogRE9NSFRNTEhSRWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJODVFNzExQUYwQUM1RDUzNTAwNTMyNzBGIC8qIERPTUhUTUxIUkVsZW1lbnRJbnRlcm5hbC5o
IGluIEhlYWRlcnMgKi8sCkBAIC0yMjA1Nyw2ICsyMjE4NCw3IEBACiAJCQkJODVDQTk2RUEwQTk2
MjRFOTAwNjkwQ0NGIC8qIERPTU5vdGF0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQk4NUU3MTFE
NDBBQzVENTM1MDA1MzI3MEYgLyogRE9NTm90YXRpb25JbnRlcm5hbC5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJODU2QzhBRTQwQTkxMjY0OTAwNUM2ODdCIC8qIERPTU9iamVjdC5oIGluIEhlYWRlcnMg
Ki8sCisJCQkJMDcwNTg1MTMxN0ZBNzEwNzAwNUYyQkNCIC8qIEpTTWVkaWFTdHJlYW1DYXBhYmls
aXRpZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDNTNEQTYwMTE0MzE0MUEwMDBEODE3RSAvKiBE
T01PYmplY3RIYXNoVGFibGVNYXAuaCBpbiBIZWFkZXJzICovLAogCQkJCTg1QzdGNUQwMEFBRkI4
RDkwMDQwMTRERCAvKiBET01PdmVyZmxvd0V2ZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQk4NTk4
OURDRjBBQ0M4QkJEMDBBMEJDNTEgLyogRE9NT3ZlcmZsb3dFdmVudEludGVybmFsLmggaW4gSGVh
ZGVycyAqLywKQEAgLTIyNTAzLDYgKzIyNjMxLDcgQEAKIAkJCQlCQ0NENzREQzBBNEM4RDM1MDA1
RkRBNkQgLyogSFRNTFZpZXdTb3VyY2VEb2N1bWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTc3
QjM4N0ExMjI4ODNFOTAwQjgxRkY4IC8qIEhUTUxWaWV3U291cmNlUGFyc2VyLmggaW4gSGVhZGVy
cyAqLywKIAkJCQk1MTRDNzY3MTBDRTkyM0ExMDA3RUYzQ0QgLyogSFRUUEhlYWRlck1hcC5oIGlu
IEhlYWRlcnMgKi8sCisJCQkJMDczQUI0QjgxN0Y5MkVDRjAwNkUwRDZGIC8qIEpTQ2FwYWJpbGl0
eVJhbmdlLmggaW4gSGVhZGVycyAqLywKIAkJCQk1MTRDNzY3MzBDRTkyM0ExMDA3RUYzQ0QgLyog
SFRUUFBhcnNlcnMuaCBpbiBIZWFkZXJzICovLAogCQkJCTM3NUNEMjMyMTE5RDQzQzgwMEEyQTg1
OSAvKiBIeXBoZW5hdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjI3NTM1NkUwQjA1MzgxNDAw
MkNFNjRGIC8qIEljb24uaCBpbiBIZWFkZXJzICovLApAQCAtMjI2MDgsNiArMjI3MzcsNyBAQAog
CQkJCTdBMjQ1ODdDMTAyMUVBRjQwMDBBMDBBQSAvKiBJbnNwZWN0b3JET01BZ2VudC5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJRjNENEM0NzkxMkUwNzY2MzAwM0RBMTUwIC8qIEluc3BlY3RvckRPTURl
YnVnZ2VyQWdlbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTdBNzRFQ0JCMTAxODM5QTYwMEJGOTM5
RSAvKiBJbnNwZWN0b3JET01TdG9yYWdlQWdlbnQuaCBpbiBIZWFkZXJzICovLAorCQkJCTA3MDU4
NTM0MTdGREU2RDkwMDVGMkJDQiAvKiBKU01lZGlhVHJhY2tDb25zdHJhaW50cy5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJNTc4REEyMEUxNTIwRUI4QzAwNjE0MUMxIC8qIEluc3BlY3RvckZyb250ZW5k
LmggaW4gSGVhZGVycyAqLywKIAkJCQkyMjc3Nzc2MDEzNDVERUE5MDA4RUE0NTUgLyogSW5zcGVj
dG9yRnJvbnRlbmRDaGFubmVsLmggaW4gSGVhZGVycyAqLywKIAkJCQlGMzQ0QzcxNDExMjVCODJD
MDBGMjZFRUUgLyogSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQuaCBpbiBIZWFkZXJzICovLApAQCAt
MjMwNzIsNiArMjMyMDIsNyBAQAogCQkJCUIyRkEzRERCMEFCNzVBNkYwMDBFNUFDNCAvKiBKU1NW
R1BhdGhTZWdMaXN0LmggaW4gSGVhZGVycyAqLywKIAkJCQlCMkZBM0RERDBBQjc1QTZGMDAwRTVB
QzQgLyogSlNTVkdQYXRoU2VnTW92ZXRvQWJzLmggaW4gSGVhZGVycyAqLywKIAkJCQlCMkZBM0RE
RjBBQjc1QTZGMDAwRTVBQzQgLyogSlNTVkdQYXRoU2VnTW92ZXRvUmVsLmggaW4gSGVhZGVycyAq
LywKKwkJCQkwNzA1ODUyMTE3RkRDMTQwMDA1RjJCQ0IgLyogTWVkaWFUcmFja0NvbnN0cmFpbnQu
aCBpbiBIZWFkZXJzICovLAogCQkJCUIyRkEzREUxMEFCNzVBNkYwMDBFNUFDNCAvKiBKU1NWR1Bh
dHRlcm5FbGVtZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQk4NTQyQTc5NTBBRTVDOTQxMDBERjU4
REYgLyogSlNTVkdQb2ludC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjJGQTNERTMwQUI3NUE2RjAw
MEU1QUM0IC8qIEpTU1ZHUG9pbnRMaXN0LmggaW4gSGVhZGVycyAqLywKQEAgLTIzNTU4LDYgKzIz
Njg5LDcgQEAKIAkJCQk0MzkwNDZFMjEyREEyNUU4MDBBRjgwQTIgLyogUmVuZGVyTWF0aE1MUm9v
dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDM5MDQ2RTQxMkRBMjVFODAwQUY4MEEyIC8qIFJlbmRl
ck1hdGhNTFJvdy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDM5MDQ2RTYxMkRBMjVFODAwQUY4MEEy
IC8qIFJlbmRlck1hdGhNTFNxdWFyZVJvb3QuaCBpbiBIZWFkZXJzICovLAorCQkJCTA3ODMyMjg1
MTgwMTNFRDgwMDk5OUUwQyAvKiBNZWRpYVN0cmVhbUF1ZGlvU291cmNlLmggaW4gSGVhZGVycyAq
LywKIAkJCQk0MzkwNDZFODEyREEyNUU4MDBBRjgwQTIgLyogUmVuZGVyTWF0aE1MU2NyaXB0cy5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJNDM5MDQ2RUExMkRBMjVFODAwQUY4MEEyIC8qIFJlbmRlck1h
dGhNTFVuZGVyT3Zlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTRDMjc5NTkwQ0Y5NzQxOTAwRTk3
Qjk4IC8qIFJlbmRlck1lZGlhLmggaW4gSGVhZGVycyAqLywKQEAgLTIzNTc4LDYgKzIzNzEwLDcg
QEAKIAkJCQlBODcxREZFMzBBMTUzNzZCMDBCMTJBNjggLyogUmVuZGVyUmVwbGFjZWQuaCBpbiBI
ZWFkZXJzICovLAogCQkJCUJDQTg0NkQ3MERDNjdBMzUwMDI2QzMwOSAvKiBSZW5kZXJSZXBsaWNh
LmggaW4gSGVhZGVycyAqLywKIAkJCQkxNDc5RkFFRTEwOUFFMzc1MDBERUQ2NTUgLyogUmVuZGVy
UnVieS5oIGluIEhlYWRlcnMgKi8sCisJCQkJMDcwNTg1MDgxN0ZBNDY4OTAwNUYyQkNCIC8qIEFs
bEF1ZGlvQ2FwYWJpbGl0aWVzLmggaW4gSGVhZGVycyAqLywKIAkJCQkxNDc5RkFGMDEwOUFFMzc1
MDBERUQ2NTUgLyogUmVuZGVyUnVieUJhc2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTE0NzlGQUYy
MTA5QUUzNzUwMERFRDY1NSAvKiBSZW5kZXJSdWJ5UnVuLmggaW4gSGVhZGVycyAqLywKIAkJCQkx
NDc5RkFGNDEwOUFFMzc1MDBERUQ2NTUgLyogUmVuZGVyUnVieVRleHQuaCBpbiBIZWFkZXJzICov
LApAQCAtMjM2NjAsNiArMjM3OTMsNyBAQAogCQkJCTk3M0UzMjU3MTA4ODNCN0MwMDVCQzQ5MyAv
KiBSZXNvdXJjZUxvYWROb3RpZmllci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTQyOTVGQTQxMkIw
NjE0RTAwRDFBQ0UwIC8qIFJlc291cmNlTG9hZFByaW9yaXR5LmggaW4gSGVhZGVycyAqLywKIAkJ
CQlEMENFNThGOTEyNUU0Q0MyMDBGM0YxOTkgLyogUmVzb3VyY2VMb2FkU2NoZWR1bGVyLmggaW4g
SGVhZGVycyAqLywKKwkJCQkwN0M1OUI3NjE3RjdEMERCMDAwRkJDQkIgLyogQ2FwYWJpbGl0eVJh
bmdlLmggaW4gSGVhZGVycyAqLywKIAkJCQk4QTgxQkY4NTExRENGRDkwMDBEQTJCOTggLyogUmVz
b3VyY2VMb2FkVGltaW5nLmggaW4gSGVhZGVycyAqLywKIAkJCQk3RUU2ODQ2RDEyRDI2RTM4MDBF
Nzk0MTUgLyogUmVzb3VyY2VSZXF1ZXN0LmggaW4gSGVhZGVycyAqLywKIAkJCQk1MTRDNzY3RDBD
RTkyM0ExMDA3RUYzQ0QgLyogUmVzb3VyY2VSZXF1ZXN0QmFzZS5oIGluIEhlYWRlcnMgKi8sCkBA
IC0yMzk2OSw2ICsyNDEwMyw3IEBACiAJCQkJMDc4RTA5MzgxN0QxNkIyQzAwNDIwQUExIC8qIE1l
ZGlhU3RyZWFtU291cmNlLmggaW4gSGVhZGVycyAqLywKIAkJCQlCMjIyNzlCMTBEMDBCRjIyMDA3
MUI3ODIgLyogU1ZHRGVzY0VsZW1lbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUI1QjdBMTcxMTdD
MTBBQzAwMEU0QUEwQSAvKiBFbGVtZW50RGF0YS5oIGluIEhlYWRlcnMgKi8sCisJCQkJMDcwNTg1
MEIxN0ZBNDgyNzAwNUYyQkNCIC8qIE1lZGlhU3RyZWFtQ2FwYWJpbGl0aWVzLmggaW4gSGVhZGVy
cyAqLywKIAkJCQlCMjIyNzlCNDBEMDBCRjIyMDA3MUI3ODIgLyogU1ZHRG9jdW1lbnQuaCBpbiBI
ZWFkZXJzICovLAogCQkJCUIyOEM2QTI4MEQwMEM0NDgwMDMzNEFBNCAvKiBTVkdEb2N1bWVudEV4
dGVuc2lvbnMuaCBpbiBIZWFkZXJzICovLAogCQkJCUIyMjI3OUI3MEQwMEJGMjIwMDcxQjc4MiAv
KiBTVkdFbGVtZW50LmggaW4gSGVhZGVycyAqLywKQEAgLTI0MDQzLDYgKzI0MTc4LDcgQEAKIAkJ
CQk3MTM0NDk2RTE0Njk0MUIzMDA3MjAzMTIgLyogU1ZHTGVuZ3RoQ29udGV4dC5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJQjIyMjdBMzYwRDAwQkYyMjAwNzFCNzgyIC8qIFNWR0xlbmd0aExpc3QuaCBp
biBIZWFkZXJzICovLAogCQkJCUIyMjI3QTM5MEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdMaW5lYXJH
cmFkaWVudEVsZW1lbnQuaCBpbiBIZWFkZXJzICovLAorCQkJCTA3QzU5QjY5MTdGNzg0QkEwMDBG
QkNCQiAvKiBNZWRpYVNvdXJjZVN0YXRlcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjIyMjdBM0Mw
RDAwQkYyMjAwNzFCNzgyIC8qIFNWR0xpbmVFbGVtZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQkw
ODEwNzY0NDEyODI4NTU2MDA3QzYzQkEgLyogU1ZHTGlzdFByb3BlcnR5LmggaW4gSGVhZGVycyAq
LywKIAkJCQkwODhBMEUwOTEyNkVGMURCMDA5NzhGN0EgLyogU1ZHTGlzdFByb3BlcnR5VGVhck9m
Zi5oIGluIEhlYWRlcnMgKi8sCkBAIC0yNDIzMiw2ICsyNDM2OCw3IEBACiAJCQkJRTQ0NjEzQjAw
Q0Q2MzMxMDAwRkFEQTc1IC8qIFRpbWVSYW5nZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTQ5RTkx
MkFFMEVGQUM5MDYwMDlEMENBRiAvKiBUaW1pbmdGdW5jdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJMDcwMzM0RDcxNDU5RkZENTAwOEQ4RDQ1IC8qIFRyYWNrQmFzZS5oIGluIEhlYWRlcnMgKi8s
CisJCQkJMDcwNTg0RkQxN0Y5RDZERjAwNUYyQkNCIC8qIE1lZGlhU3RyZWFtU291cmNlQ2FwYWJp
bGl0aWVzLmggaW4gSGVhZGVycyAqLywKIAkJCQlCRTg4RTBDMjE3MTVDRTI2MDA2NThEOTggLyog
VHJhY2tMaXN0QmFzZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQ0QzQTQ5NUYxN0E5RDAxQjAwMjc0
RTQyIC8qIE1lZGlhU291cmNlLmggaW4gSGVhZGVycyAqLywKIAkJCQk0OUU5MTFDNDBFRjg2RDQ3
MDA5RDBDQUYgLyogVHJhbnNmb3JtYXRpb25NYXRyaXguaCBpbiBIZWFkZXJzICovLApAQCAtMjQy
ODUsNiArMjQ0MjIsNyBAQAogCQkJCUJFODhFMEUyMTcxNUQyQTIwMDY1OEQ5OCAvKiBWaWRlb1Ry
YWNrTGlzdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTRDOTFBMEUxODAyMzQzMTAwQTE3RjZEIC8q
IFRleHRQYWludFN0eWxlLmggaW4gSGVhZGVycyAqLywKIAkJCQlCRUYyOUVFQzE3MTVERDA5MDBD
NEI0QzkgLyogVmlkZW9UcmFja1ByaXZhdGUuaCBpbiBIZWFkZXJzICovLAorCQkJCTA3MDU4NTFC
MTdGQjQ0QjQwMDVGMkJDQiAvKiBKU0FsbEF1ZGlvQ2FwYWJpbGl0aWVzLmggaW4gSGVhZGVycyAq
LywKIAkJCQlDRUY0MThDRjExNzk2NzhDMDA5RDExMkMgLyogVmlld3BvcnRBcmd1bWVudHMuaCBp
biBIZWFkZXJzICovLAogCQkJCTNGRkZGOUFFMTU5RDlCMDYwMDIwQkJENSAvKiBWaWV3cG9ydFN0
eWxlUmVzb2x2ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTkzMzA5RTIwMDk5RTY0OTIwMDU2RTU4
MSAvKiBWaXNpYmxlUG9zaXRpb24uaCBpbiBIZWFkZXJzICovLApAQCAtMjQ0NzQsNiArMjQ2MTIs
NyBAQAogCQkJCTgzQzFENDI4MTc4RDVBQjQwMDE0MUU2OCAvKiBTVkdQYXRoU2VnQ3VydmV0b0N1
YmljUmVsLmggaW4gSGVhZGVycyAqLywKIAkJCQk4M0MxRDQyOTE3OEQ1QUI0MDAxNDFFNjggLyog
U1ZHUGF0aFNlZ0N1cnZldG9DdWJpY1Ntb290aEFicy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODND
MUQ0MkExNzhENUFCNDAwMTQxRTY4IC8qIFNWR1BhdGhTZWdDdXJ2ZXRvQ3ViaWNTbW9vdGhSZWwu
aCBpbiBIZWFkZXJzICovLAorCQkJCTA3QzU5QjcyMTdGNzlDN0MwMDBGQkNCQiAvKiBKU01lZGlh
U291cmNlU3RhdGVzLmggaW4gSGVhZGVycyAqLywKIAkJCQk4M0MxRDQyQjE3OEQ1QUI0MDAxNDFF
NjggLyogU1ZHUGF0aFNlZ0N1cnZldG9RdWFkcmF0aWNBYnMuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTgzQzFENDJDMTc4RDVBQjUwMDE0MUU2OCAvKiBTVkdQYXRoU2VnQ3VydmV0b1F1YWRyYXRpY1Jl
bC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODNDMUQ0MkQxNzhENUFCNTAwMTQxRTY4IC8qIFNWR1Bh
dGhTZWdDdXJ2ZXRvUXVhZHJhdGljU21vb3RoQWJzLmggaW4gSGVhZGVycyAqLywKQEAgLTI0OTU5
LDYgKzI1MDk4LDcgQEAKIAkJCQlGRDMxNjAyNDEyQjAyNjc2MDBDMUEzNTkgLyogQmlxdWFkRFNQ
S2VybmVsLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUZEQzU0RjA0MTM5OUIwREEwMDhEOTExNyAv
KiBCaXF1YWRGaWx0ZXJOb2RlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUZEMzE2MDI2MTJCMDI2
NzYwMEMxQTM1OSAvKiBCaXF1YWRQcm9jZXNzb3IuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMDcw
NTg0RkYxN0Y5RjA1RTAwNUYyQkNCIC8qIENhcGFiaWxpdHlSYW5nZS5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQlBODk5NDMyOTBCNDIzMzg4MDBEN0M4MDIgLyogQml0bWFwSW1hZ2UuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJMzc3QTNBOTAxNUVGQ0U5QjAwNTlGNUM3IC8qIEJpdG1hcEltYWdlQ0cu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJOTc2RDZDNzgxMjJCOEEzRDAwMUZEMUY3IC8qIEJsb2Iu
Y3BwIGluIFNvdXJjZXMgKi8sCkBAIC0yNTI2Miw2ICsyNTQwMiw3IEBACiAJCQkJODVDQTk3NUQw
QTk2MkU1NDAwNjkwQ0NGIC8qIERPTURvY3VtZW50VHlwZS5tbSBpbiBTb3VyY2VzICovLAogCQkJ
CTg1MThEQ0VBMEE5Q0M4MEQwMDkxQjdBNiAvKiBET01ET01JbXBsZW1lbnRhdGlvbi5tbSBpbiBT
b3VyY2VzICovLAogCQkJCTUyQ0NBOUU5MTVFM0Y2NEMwMDUzQzc3RiAvKiBET01ET01OYW1lZEZs
b3dDb2xsZWN0aW9uLm1tIGluIFNvdXJjZXMgKi8sCisJCQkJMDc4MzIyODQxODAxM0VEODAwOTk5
RTBDIC8qIE1lZGlhU3RyZWFtQXVkaW9Tb3VyY2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMkQ5
QTI0NzMxNUI5QzJEMTAwRDM0NTI3IC8qIERPTURPTVNlY3VyaXR5UG9saWN5Lm1tIGluIFNvdXJj
ZXMgKi8sCiAJCQkJNzY5NDU2NUMxMjE0REI2MzAwMDdDQkFFIC8qIERPTURPTVRva2VuTGlzdC5t
bSBpbiBTb3VyY2VzICovLAogCQkJCTdBQUJBMjU5MTRCQzYxMzMwMEFBOUExMSAvKiBET01FZGl0
b3IuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC0yNTI4Miw2ICsyNTQyMyw3IEBACiAJCQkJODU5QTlD
NDgwQUE1RTNCRDAwQjY5NEIyIC8qIERPTUhUTUxCYXNlRWxlbWVudC5tbSBpbiBTb3VyY2VzICov
LAogCQkJCTA3OEUwOTA0MTdEMTRDRUUwMDQyMEFBMSAvKiBOYXZpZ2F0b3JNZWRpYVN0cmVhbS5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQk4NUVDQkVFRTBBQTc2MjY5MDA1NDRGMEIgLyogRE9NSFRN
TEJhc2VGb250RWxlbWVudC5tbSBpbiBTb3VyY2VzICovLAorCQkJCTA3QzU5QjY4MTdGNzg0QkEw
MDBGQkNCQiAvKiBNZWRpYVNvdXJjZVN0YXRlcy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk4NTlB
OUM0QTBBQTVFM0JEMDBCNjk0QjIgLyogRE9NSFRNTEJvZHlFbGVtZW50Lm1tIGluIFNvdXJjZXMg
Ki8sCiAJCQkJODUxODNCNDMwQUE2OTI2MTAwRjE5RkEzIC8qIERPTUhUTUxCUkVsZW1lbnQubW0g
aW4gU291cmNlcyAqLywKIAkJCQk4NUJBNENERTBBQTY4NjFCMDA4ODA1MkQgLyogRE9NSFRNTEJ1
dHRvbkVsZW1lbnQubW0gaW4gU291cmNlcyAqLywKQEAgLTI1Mjg5LDYgKzI1NDMxLDcgQEAKIAkJ
CQk4NURGMkY4RjBBQTNDODgxMDBBRDY0QzUgLyogRE9NSFRNTENvbGxlY3Rpb24ubW0gaW4gU291
cmNlcyAqLywKIAkJCQkwNzhFMDkwMDE3RDE0Q0VFMDA0MjBBQTEgLyogTWVkaWFTdHJlYW1FdmVu
dC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlGNUMwNDFFNDBGRkNBOTZEMDA4MzlENEEgLyogRE9N
SFRNTERhdGFMaXN0RWxlbWVudC5tbSBpbiBTb3VyY2VzICovLAorCQkJCTA3MDU4NTIzMTdGREMx
NDAwMDVGMkJDQiAvKiBNZWRpYVRyYWNrQ29uc3RyYWludHMuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJRDM1OUQ3OTIxMjlDQTNDMDAwMDZFNUQyIC8qIERPTUhUTUxEZXRhaWxzRWxlbWVudC5tbSBp
biBTb3VyY2VzICovLAogCQkJCTg1QkE0RDBDMEFBNjg4NjgwMDg4MDUyRCAvKiBET01IVE1MRGly
ZWN0b3J5RWxlbWVudC5tbSBpbiBTb3VyY2VzICovLAogCQkJCTg1QkE0RDBFMEFBNjg4NjgwMDg4
MDUyRCAvKiBET01IVE1MRGl2RWxlbWVudC5tbSBpbiBTb3VyY2VzICovLApAQCAtMjU3NDAsNiAr
MjU4ODMsNyBAQAogCQkJCUIyNzUzNThFMEIwNTNBNjYwMDJDRTY0RiAvKiBJY29uTWFjLm1tIGlu
IFNvdXJjZXMgKi8sCiAJCQkJNTFFMUVDQzAwQzkxQzkwNDAwREMyNTVCIC8qIEljb25SZWNvcmQu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNDUwOTlDNDExMzcwQTc4MDAwNThENTEzIC8qIEljb25V
UkwuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMDcwNTg1MTUxN0ZCMEVFQTAwNUYyQkNCIC8qIE1l
ZGlhU3RyZWFtQ2FwYWJpbGl0aWVzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUM1ODVBNjYyMTFE
NEZBQzUwMDRDM0U0QiAvKiBJREJCaW5kaW5nVXRpbGl0aWVzLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCTk3MTJBNUM1MTUwMDRFREEwMDQ4QUYxMCAvKiBJREJEYXRhYmFzZUNhbGxiYWNrc0ltcGwu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJOTcxMkE1QzkxNTAwNEVEQTAwNDhBRjEwIC8qIElEQkRh
dGFiYXNlRXhjZXB0aW9uLmNwcCBpbiBTb3VyY2VzICovLApAQCAtMjU3NDcsNiArMjU4OTEsNyBA
QAogCQkJCTk3MTJBNUVGMTUwMDRFREEwMDQ4QUYxMCAvKiBJREJQZW5kaW5nVHJhbnNhY3Rpb25N
b25pdG9yLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTk3MTJBNUZFMTUwMDRFREEwMDQ4QUYxMCAv
KiBJREJWZXJzaW9uQ2hhbmdlRXZlbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMUE3MUQ1N0Iw
RjMzODE5MDAwRjlDRTRFIC8qIElkZW50aWZpZXJSZXAuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJ
MDcwNTg1MzExN0ZERTZEOTAwNUYyQkNCIC8qIEpTTWVkaWFUcmFja0NvbnN0cmFpbnQuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJNTkxM0EyNDExM0Q0OUVCQTAwRjVCMDVDIC8qIElkZW50aWZpZXJz
RmFjdG9yeS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlDM0NGMTdBNDE1QjAwNjNGMDAyNzZEMzkg
LyogSWRUYXJnZXRPYnNlcnZlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlDM0NGMTdBNjE1QjAw
NjNGMDAyNzZEMzkgLyogSWRUYXJnZXRPYnNlcnZlclJlZ2lzdHJ5LmNwcCBpbiBTb3VyY2VzICov
LApAQCAtMjU5MTYsNiArMjYwNjEsNyBAQAogCQkJCTUxRUM5MjY1MENFOTBERDQwMEY5MDMwOCAv
KiBKU0N1c3RvbVNRTFN0YXRlbWVudEVycm9yQ2FsbGJhY2suY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJRTEwQjkzQzMwQjczQzI5MTAwM0VEODkwIC8qIEpTQ3VzdG9tWFBhdGhOU1Jlc29sdmVyLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCTFBRTgyRjhGMENBQUZBOUQwMDIyMzdBRSAvKiBKU0RhdGFi
YXNlLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTA3QzU5QjZFMTdGNzk0RjYwMDBGQkNCQiAvKiBK
U01lZGlhU291cmNlU3RhdGVzQ3VzdG9tLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUI1OURENjlB
MTE5MDI5RTUwMDdFOTY4NCAvKiBKU0RhdGFiYXNlQ2FsbGJhY2suY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJQjU4Q0VCNkExMTkxMzYwNzAwMkE2NzkwIC8qIEpTRGF0YWJhc2VTeW5jLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCTQxNjJBNDU3MTAxMTQ2NDcwMERGRjNFRCAvKiBKU0RlZGljYXRlZFdv
cmtlckdsb2JhbFNjb3BlLmNwcCBpbiBTb3VyY2VzICovLApAQCAtMjYwNDQsNiArMjYxOTAsNyBA
QAogCQkJCTFBRTJBQTJFMEExQ0RBQjQwMEI0MkIyNSAvKiBKU0hUTUxIZWFkaW5nRWxlbWVudC5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQkxQUUyQUEzMDBBMUNEQUI0MDBCNDJCMjUgLyogSlNIVE1M
SFJFbGVtZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTFBODVCMThGMEExQjE4QTIwMEQ4Qzg3
QyAvKiBKU0hUTUxIdG1sRWxlbWVudC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkwNzA1ODUzODE3
RkUwNDRGMDA1RjJCQ0IgLyogTWVkaWFUcmFja0NvbnN0cmFpbnRTZXQuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJQkM0OTE4QzgwQkZFQTA1MDAwOUQ2MzE2IC8qIEpTSFRNTElGcmFtZUVsZW1lbnQu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMUFFMkFBOTcwQTFDREQyRDAwQjQyQjI1IC8qIEpTSFRN
TEltYWdlRWxlbWVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBODBFN0U5ODBBMUE4M0UzMDA3
RkI4QzUgLyogSlNIVE1MSW5wdXRFbGVtZW50LmNwcCBpbiBTb3VyY2VzICovLApAQCAtMjYxNjAs
NiArMjYzMDcsNyBAQAogCQkJCTdFNDZGNkZBMTYyN0EyQ0EwMDA2MjIyMyAvKiBKU09FU0VsZW1l
bnRJbmRleFVpbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJOTAwMTc4ODAxMkUwMzcwNzAwNjQ4
NDYyIC8qIEpTT0VTU3RhbmRhcmREZXJpdmF0aXZlcy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk2
RUJGMEU3NjEyQTk4Njg4MDBEQjE3MDkgLyogSlNPRVNUZXh0dXJlRmxvYXQuY3BwIGluIFNvdXJj
ZXMgKi8sCisJCQkJMDcwNTg1M0ExN0ZFMDc3MDAwNUYyQkNCIC8qIE1lZGlhVHJhY2tDb25zdHJh
aW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUEzMUM0RTUyMTZFMDJCMDgwMDJGNzk1NyAvKiBK
U09FU1RleHR1cmVIYWxmRmxvYXQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNzdBMTdBQTYxMkYy
OEIyQTAwNEUwMkY2IC8qIEpTT0VTVmVydGV4QXJyYXlPYmplY3QuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJRkRGNkJBRjgxMzRBNEM5ODAwODIyOTIwIC8qIEpTT2ZmbGluZUF1ZGlvQ29tcGxldGlv
bkV2ZW50LmNwcCBpbiBTb3VyY2VzICovLApAQCAtMjY1MDIsNiArMjY2NTAsNyBAQAogCQkJCTk4
NUJCOTZEMTNBOTQwNTgwMDdBMEI2OSAvKiBMaW5rUmVsQXR0cmlidXRlLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCUJDN0ZBNjIwMEQxRjBDQkQwMERCMjJBOSAvKiBMaXZlTm9kZUxpc3QuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJMDc4RTA5MTAxN0QxNENFRTAwNDIwQUExIC8qIFJUQ1N0YXRzUmVz
cG9uc2UuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMDcwNTg1MDIxN0ZBMTBEMDAwNUYyQkNCIC8q
IEpTQWxsVmlkZW9DYXBhYmlsaXRpZXMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJOTc1OUU5M0Ux
NEVGMUNGODAwMjZBMkREIC8qIExvYWRhYmxlVGV4dFRyYWNrLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCTY1NkQzNzMzMEFEQkE1REUwMEE0NTU0RCAvKiBMb2FkZXJOU1VSTEV4dHJhcy5tbSBpbiBT
b3VyY2VzICovLAogCQkJCTdFRTY4NDY4MTJEMjZFMzgwMEU3OTQxNSAvKiBMb2FkZXJSdW5Mb29w
Q0YuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC0yNjUxNCw2ICsyNjY2Myw3IEBACiAJCQkJQkMyNUI1
MkExMzFDNkQzOTAwMTgwRTEwIC8qIExvY2FsaXplZFN0cmluZ3NNYWMuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJQkNFMUM0MUMwRDk4Mjk4MTAwM0IwMkYyIC8qIExvY2F0aW9uLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTA3OEUwOTA4MTdEMTRDRUUwMDQyMEFBMSAvKiBSVENEVE1GVG9uZUNoYW5n
ZUV2ZW50LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTA3MDU4NTFBMTdGQjQ0QjQwMDVGMkJDQiAv
KiBKU0FsbEF1ZGlvQ2FwYWJpbGl0aWVzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE4MjM5RTAw
MDlCM0NGOEEwMEI2MDY0MSAvKiBMb2dnaW5nLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTE0MDI2
NDVFMEFGREMxOUIwMDU5MTlFMiAvKiBMb2dnaW5nTWFjLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJ
MUE4RjZCQzUwREI1NUNEQzAwMURCNzk0IC8qIE1hbmlmZXN0UGFyc2VyLmNwcCBpbiBTb3VyY2Vz
ICovLApAQCAtMjY1ODAsNiArMjY3MzAsNyBAQAogCQkJCUQ2RTI3NkFGMTQ2Mzc0NTUwMDFEMjgw
QSAvKiBNdXRhdGlvbk9ic2VydmVyUmVnaXN0cmF0aW9uLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CUM2RjA4RkJDMTQzMEZFOEYwMDY4NTg0OSAvKiBNdXRhdGlvblJlY29yZC5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQk1MkI2QzlDNTE1RTNGNERGMDA2OTBCMDUgLyogTmFtZWRGbG93Q29sbGVjdGlv
bi5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkwNzA1ODUzMzE3RkRFNkQ5MDA1RjJCQ0IgLyogSlNN
ZWRpYVRyYWNrQ29uc3RyYWludHMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQkNGMzRBMzcxMUEy
MzFDRDAwQzcxODA0IC8qIE5hbWVkTm9kZU1hcC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBODE4
NzIyNDA5NzdEM0MwMDA1ODI2RDkgLyogTmFtZU5vZGVMaXN0LmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCUUxMEI5QjZEMEI3NDc1OTkwMDNFRDg5MCAvKiBOYXRpdmVYUGF0aE5TUmVzb2x2ZXIuY3Bw
IGluIFNvdXJjZXMgKi8sCkBAIC0yNjg0MCw2ICsyNjk5MSw3IEBACiAJCQkJOTM0RjcxM0UwRDVB
NkYyODAwMDE4RDY5IC8qIFJlc291cmNlRXJyb3JCYXNlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CTdFRTY4NDZCMTJEMjZFMzgwMEU3OTQxNSAvKiBSZXNvdXJjZUVycm9yQ0YuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJNTE0Qzc2NTAwQ0U5MjM0RTAwN0VGM0NEIC8qIFJlc291cmNlRXJyb3JNYWMu
bW0gaW4gU291cmNlcyAqLywKKwkJCQkwNzA1ODUxMjE3RkE3MTA3MDA1RjJCQ0IgLyogSlNNZWRp
YVN0cmVhbUNhcGFiaWxpdGllcy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1MTRDNzY3ODBDRTky
M0ExMDA3RUYzQ0QgLyogUmVzb3VyY2VIYW5kbGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJN0VF
Njg0NkMxMkQyNkUzODAwRTc5NDE1IC8qIFJlc291cmNlSGFuZGxlQ0ZOZXQuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJRTFCQTAwMzExNkZCOTJBQzAwQkE3QTM1IC8qIFJlc291cmNlSGFuZGxlQ2xp
ZW50LmNwcCBpbiBTb3VyY2VzICovLApAQCAtMjcxNDEsNiArMjcyOTMsNyBAQAogCQkJCUIyMjI3
OUM0MEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCUIyMjI3OUM3MEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdGRUJsZW5k
RWxlbWVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCMjIyNzlDQTBEMDBCRjIyMDA3MUI3ODIg
LyogU1ZHRkVDb2xvck1hdHJpeEVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMDcwNTg1
MzUxN0ZERTZEOTAwNUYyQkNCIC8qIEpTTWVkaWFUcmFja0NvbnN0cmFpbnRTZXQuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJQjIyMjc5Q0QwRDAwQkYyMjAwNzFCNzgyIC8qIFNWR0ZFQ29tcG9uZW50
VHJhbnNmZXJFbGVtZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUIyMjI3OUQwMEQwMEJGMjIw
MDcxQjc4MiAvKiBTVkdGRUNvbXBvc2l0ZUVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
MTkyMTMyNzQxMUMwRTZCQjAwNDU2MjM4IC8qIFNWR0ZFQ29udm9sdmVNYXRyaXhFbGVtZW50LmNw
cCBpbiBTb3VyY2VzICovLApAQCAtMjcyMDMsNiArMjczNTYsNyBAQAogCQkJCUIyMjI3QTNCMEQw
MEJGMjIwMDcxQjc4MiAvKiBTVkdMaW5lRWxlbWVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlC
MjIyN0E0MDBEMDBCRjIyMDA3MUI3ODIgLyogU1ZHTG9jYXRhYmxlLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCUIyMjI3QTQzMEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdNYXJrZXJFbGVtZW50LmNwcCBp
biBTb3VyY2VzICovLAorCQkJCTA3MDU4NTE3MTdGQjQwRTkwMDVGMkJDQiAvKiBKU01lZGlhU3Ry
ZWFtQ2FwYWJpbGl0aWVzQ3VzdG9tLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUIyMjI3QTQ2MEQw
MEJGMjIwMDcxQjc4MiAvKiBTVkdNYXNrRWxlbWVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlC
MjIyN0E0QTBEMDBCRjIyMDA3MUI3ODIgLyogU1ZHTWV0YWRhdGFFbGVtZW50LmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCUIyQTFGMkIwMENFRjBBQkYwMDQ0MkY2QSAvKiBTVkdNaXNzaW5nR2x5cGhF
bGVtZW50LmNwcCBpbiBTb3VyY2VzICovLApAQCAtMjcyNjYsNiArMjc0MjAsNyBAQAogCQkJCUIy
MjI3QUYyMEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdWaWV3U3BlYy5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQk4NDg1MjI4QTExOTAxNzNDMDA2RURDN0YgLyogU1ZHVktlcm5FbGVtZW50LmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCUIyMjI3QUY1MEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdab29tQW5kUGFu
LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTA3M0FCNEI3MTdGOTJFQ0YwMDZFMEQ2RiAvKiBKU0Nh
cGFiaWxpdHlSYW5nZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCMkU0RUM5NzBEMDBDMjJCMDA0
MzI2NDMgLyogU1ZHWm9vbUV2ZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUUxODA4MTEyMTZG
Q0Y0MkYwMEI4MEQwNyAvKiBTeW5jaHJvbm91c0xvYWRlckNsaWVudC5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQlFMTgwODExNjE2RkNGOUNCMDBCODBEMDcgLyogU3luY2hyb25vdXNMb2FkZXJDbGll
bnQubW0gaW4gU291cmNlcyAqLywKQEAgLTI3NDQ2LDYgKzI3NjAxLDcgQEAKIAkJCQk5N0FBQkQx
QTE0RkEwOUQ1MDA3NDU3QUUgLyogV2ViU29ja2V0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTk3
QUFCRDFEMTRGQTA5RDUwMDc0NTdBRSAvKiBXZWJTb2NrZXRDaGFubmVsLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCTRBMzhCRjUwMTRGRTFDMDkwMDYxMjUxMiAvKiBXZWJTb2NrZXREZWZsYXRlRnJh
bWVyLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTA3QzU5QjcxMTdGNzlDN0MwMDBGQkNCQiAvKiBK
U01lZGlhU291cmNlU3RhdGVzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTk3QUFCRDIwMTRGQTA5
RDUwMDc0NTdBRSAvKiBXZWJTb2NrZXREZWZsYXRlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk5
N0FBQkQyMjE0RkEwOUQ1MDA3NDU3QUUgLyogV2ViU29ja2V0RXh0ZW5zaW9uRGlzcGF0Y2hlci5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQk0QTVBMkFEQjE2MUU3RTAwMDA1ODg5REQgLyogV2ViU29j
a2V0RXh0ZW5zaW9uUGFyc2VyLmNwcCBpbiBTb3VyY2VzICovLApJbmRleDogU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNNZWRpYVNvdXJjZVN0YXRlc0N1c3RvbS5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNNZWRpYVNvdXJjZVN0YXRlc0N1c3RvbS5j
cHAJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU01lZGlhU291
cmNlU3RhdGVzQ3VzdG9tLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDg4IEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVS
LCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIs
IElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisg
KiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQorCisj
aW5jbHVkZSAiSlNNZWRpYVNvdXJjZVN0YXRlcy5oIgorCisjaW5jbHVkZSAiTWVkaWFTb3VyY2VT
dGF0ZXMuaCIKKwordXNpbmcgbmFtZXNwYWNlIEpTQzsKKworbmFtZXNwYWNlIFdlYkNvcmUgewor
CitKU1ZhbHVlIEpTTWVkaWFTb3VyY2VTdGF0ZXM6OndpZHRoKEV4ZWNTdGF0ZSopIGNvbnN0Cit7
CisgICAgaWYgKCFpbXBsKCktPmhhc1ZpZGVvU291cmNlKCkpCisgICAgICAgIHJldHVybiBqc1Vu
ZGVmaW5lZCgpOworCisgICAgcmV0dXJuIGpzTnVtYmVyKGltcGwoKS0+d2lkdGgoKSk7Cit9CisK
K0pTVmFsdWUgSlNNZWRpYVNvdXJjZVN0YXRlczo6aGVpZ2h0KEV4ZWNTdGF0ZSopIGNvbnN0Cit7
CisgICAgaWYgKCFpbXBsKCktPmhhc1ZpZGVvU291cmNlKCkpCisgICAgICAgIHJldHVybiBqc1Vu
ZGVmaW5lZCgpOworICAgIAorICAgIHJldHVybiBqc051bWJlcihpbXBsKCktPmhlaWdodCgpKTsK
K30KKworSlNWYWx1ZSBKU01lZGlhU291cmNlU3RhdGVzOjpmcmFtZVJhdGUoRXhlY1N0YXRlKikg
Y29uc3QKK3sKKyAgICBpZiAoIWltcGwoKS0+aGFzVmlkZW9Tb3VyY2UoKSkKKyAgICAgICAgcmV0
dXJuIGpzVW5kZWZpbmVkKCk7CisgICAgCisgICAgcmV0dXJuIGpzTnVtYmVyKGltcGwoKS0+ZnJh
bWVSYXRlKCkpOworfQorCitKU1ZhbHVlIEpTTWVkaWFTb3VyY2VTdGF0ZXM6OmFzcGVjdFJhdGlv
KEV4ZWNTdGF0ZSopIGNvbnN0Cit7CisgICAgaWYgKCFpbXBsKCktPmhhc1ZpZGVvU291cmNlKCkp
CisgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOworICAgIAorICAgIHJldHVybiBqc051bWJl
cihpbXBsKCktPmFzcGVjdFJhdGlvKCkpOworfQorCitKU1ZhbHVlIEpTTWVkaWFTb3VyY2VTdGF0
ZXM6OmZhY2luZ01vZGUoRXhlY1N0YXRlKiBleGVjKSBjb25zdAoreworICAgIGlmICghaW1wbCgp
LT5oYXNWaWRlb1NvdXJjZSgpKQorICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKKworICAg
IHJldHVybiBqc1N0cmluZ1dpdGhDYWNoZShleGVjLCBpbXBsKCktPmZhY2luZ01vZGUoKSk7Cit9
CisKK0pTVmFsdWUgSlNNZWRpYVNvdXJjZVN0YXRlczo6dm9sdW1lKEV4ZWNTdGF0ZSopIGNvbnN0
Cit7CisgICAgaWYgKGltcGwoKS0+aGFzVmlkZW9Tb3VyY2UoKSkKKyAgICAgICAgcmV0dXJuIGpz
VW5kZWZpbmVkKCk7CisgICAgCisgICAgcmV0dXJuIGpzTnVtYmVyKGltcGwoKS0+dm9sdW1lKCkp
OworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZgpJbmRleDogU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNNZWRpYVN0cmVhbUNhcGFiaWxpdGllc0N1c3RvbS5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNNZWRpYVN0cmVhbUNhcGFi
aWxpdGllc0N1c3RvbS5jcHAJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU01lZGlhU3RyZWFtQ2FwYWJpbGl0aWVzQ3VzdG9tLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMCwwICsxLDUzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaWYgRU5B
QkxFKE1FRElBX1NUUkVBTSkKKworI2luY2x1ZGUgIkpTTWVkaWFTdHJlYW1DYXBhYmlsaXRpZXMu
aCIKKworI2luY2x1ZGUgIkpTQWxsQXVkaW9DYXBhYmlsaXRpZXMuaCIKKyNpbmNsdWRlICJKU0Fs
bFZpZGVvQ2FwYWJpbGl0aWVzLmgiCisjaW5jbHVkZSAiTWVkaWFTdHJlYW1DYXBhYmlsaXRpZXMu
aCIKKwordXNpbmcgbmFtZXNwYWNlIEpTQzsKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitKU0M6
OkpTVmFsdWUgdG9KUyhKU0M6OkV4ZWNTdGF0ZSogZXhlYywgSlNET01HbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgTWVkaWFTdHJlYW1DYXBhYmlsaXRpZXMqIG9iamVjdCkKK3sKKyAgICBpZiAo
IW9iamVjdCkKKyAgICAgICAgcmV0dXJuIGpzTnVsbCgpOworCisgICAgaWYgKG9iamVjdC0+aGFz
VmlkZW9Tb3VyY2UoKSkKKyAgICAgICAgcmV0dXJuIHdyYXA8SlNBbGxWaWRlb0NhcGFiaWxpdGll
cz4oZXhlYywgZ2xvYmFsT2JqZWN0LCBzdGF0aWNfY2FzdDxBbGxWaWRlb0NhcGFiaWxpdGllcyo+
KG9iamVjdCkpOworCisgICAgcmV0dXJuIHdyYXA8SlNBbGxBdWRpb0NhcGFiaWxpdGllcz4oZXhl
YywgZ2xvYmFsT2JqZWN0LCBzdGF0aWNfY2FzdDxBbGxBdWRpb0NhcGFiaWxpdGllcyo+KG9iamVj
dCkpOworfQorCisjZW5kaWYgLy8gRU5BQkxFKE1FRElBX1NUUkVBTSkKKworfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50TmFtZXMuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vRXZlbnROYW1lcy5oCShyZXZpc2lvbiAxNTcwMTYp
CisrKyBTb3VyY2UvV2ViQ29yZS9kb20vRXZlbnROYW1lcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0y
MzgsNiArMjM4LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIG1hY3JvKHJlbW92ZXN0cmVh
bSkgXAogICAgIG1hY3JvKHNpZ25hbGluZ3N0YXRlY2hhbmdlKSBcCiAgICAgbWFjcm8ocmVtb3Zl
dHJhY2spIFwKKyAgICBtYWNybyhvdmVyY29uc3RyYWluZWQpIFwKICAgICBtYWNybyhtdXRlKSBc
CiAgICAgbWFjcm8odW5tdXRlKSBcCiAgICAgbWFjcm8oc3RhcnRlZCkgXApJbmRleDogU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1DZW50ZXIuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlhU3RyZWFt
Q2VudGVyLmNwcAkocmV2aXNpb24gMTU3MDE2KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1DZW50ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02Nywx
MSArNjcsNiBAQCBNZWRpYVN0cmVhbUNlbnRlcjo6fk1lZGlhU3RyZWFtQ2VudGVyKCkKIHsKIH0K
IAotdm9pZCBNZWRpYVN0cmVhbUNlbnRlcjo6ZW5kTG9jYWxNZWRpYVN0cmVhbShNZWRpYVN0cmVh
bURlc2NyaXB0b3IqIHN0cmVhbURlc2NyaXB0b3IpCi17Ci0gICAgc3RyZWFtRGVzY3JpcHRvci0+
c2V0RW5kZWQoKTsKLX0KLQogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5B
QkxFKE1FRElBX1NUUkVBTSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3Ry
ZWFtL01lZGlhU3RyZWFtQ2VudGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1DZW50ZXIuaAkocmV2aXNpb24gMTU3MDE2KQor
KysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1DZW50ZXIu
aAkod29ya2luZyBjb3B5KQpAQCAtMzQsNiArMzQsNyBAQAogCiAjaWYgRU5BQkxFKE1FRElBX1NU
UkVBTSkKIAorI2luY2x1ZGUgIk1lZGlhU3RyZWFtU291cmNlLmgiCiAjaW5jbHVkZSA8d3RmL1Bh
c3NSZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIApAQCAtNDMsOSAr
NDQsMTEgQEAgY2xhc3MgTWVkaWFDb25zdHJhaW50czsKIGNsYXNzIE1lZGlhU3RyZWFtQ3JlYXRp
b25DbGllbnQ7CiBjbGFzcyBNZWRpYVN0cmVhbUNyZWF0aW9uQ2xpZW50OwogY2xhc3MgTWVkaWFT
dHJlYW1EZXNjcmlwdG9yOwotY2xhc3MgTWVkaWFTdHJlYW1Tb3VyY2U7CitjbGFzcyBNZWRpYVN0
cmVhbVNvdXJjZUNhcGFiaWxpdGllczsKIGNsYXNzIE1lZGlhU3RyZWFtVHJhY2tTb3VyY2VzUmVx
dWVzdENsaWVudDsKIAorc3RydWN0IE1lZGlhU3RyZWFtU291cmNlU3RhdGVzOworCiBjbGFzcyBN
ZWRpYVN0cmVhbUNlbnRlciB7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB+TWVkaWFTdHJlYW1DZW50
ZXIoKTsKQEAgLTU5LDE0ICs2Miw2IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgYm9vbCBnZXRN
ZWRpYVN0cmVhbVRyYWNrU291cmNlcyhQYXNzUmVmUHRyPE1lZGlhU3RyZWFtVHJhY2tTb3VyY2Vz
UmVxdWVzdENsaWVudD4pID0gMDsKIAotICAgIHZpcnR1YWwgdm9pZCBkaWRTZXRNZWRpYVN0cmVh
bVRyYWNrRW5hYmxlZChNZWRpYVN0cmVhbVNvdXJjZSopID0gMDsKLQotICAgIHZpcnR1YWwgYm9v
bCBkaWRBZGRNZWRpYVN0cmVhbVRyYWNrKE1lZGlhU3RyZWFtU291cmNlKikgPSAwOwotICAgIHZp
cnR1YWwgYm9vbCBkaWRSZW1vdmVNZWRpYVN0cmVhbVRyYWNrKE1lZGlhU3RyZWFtU291cmNlKikg
PSAwOwotCi0gICAgdmlydHVhbCB2b2lkIGRpZFN0b3BMb2NhbE1lZGlhU3RyZWFtKE1lZGlhU3Ry
ZWFtRGVzY3JpcHRvciopID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgZGlkQ3JlYXRlTWVkaWFTdHJl
YW0oTWVkaWFTdHJlYW1EZXNjcmlwdG9yKikgPSAwOwotCiBwcm90ZWN0ZWQ6CiAgICAgTWVkaWFT
dHJlYW1DZW50ZXIoKTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJl
YW0vTWVkaWFTdHJlYW1EZXNjcmlwdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbURlc2NyaXB0b3IuY3BwCShyZXZpc2lv
biAxNTcwMTYpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYVN0
cmVhbURlc2NyaXB0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNSw2ICszNSw3IEBACiAKICNp
bmNsdWRlICJNZWRpYVN0cmVhbURlc2NyaXB0b3IuaCIKIAorI2luY2x1ZGUgIk1lZGlhU3RyZWFt
Q2VudGVyLmgiCiAjaW5jbHVkZSAiTWVkaWFTdHJlYW1Tb3VyY2UuaCIKICNpbmNsdWRlICJVVUlE
LmgiCiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KQEAgLTQ3LDYgKzQ4LDE1IEBAIFBhc3NS
ZWZQdHI8TWVkaWFTdHJlYW1EZXNjcmlwdG9yPiBNZWRpYVMKICAgICByZXR1cm4gYWRvcHRSZWYo
bmV3IE1lZGlhU3RyZWFtRGVzY3JpcHRvcihjcmVhdGVDYW5vbmljYWxVVUlEU3RyaW5nKCksIGF1
ZGlvU291cmNlcywgdmlkZW9Tb3VyY2VzKSk7CiB9CiAKK01lZGlhU3RyZWFtRGVzY3JpcHRvcjo6
fk1lZGlhU3RyZWFtRGVzY3JpcHRvcigpCit7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBt
X2F1ZGlvU3RyZWFtU291cmNlcy5zaXplKCk7IGkrKykKKyAgICAgICAgbV9hdWRpb1N0cmVhbVNv
dXJjZXNbaV0tPnNldFN0cmVhbSgwKTsKKyAgICAKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8
IG1fdmlkZW9TdHJlYW1Tb3VyY2VzLnNpemUoKTsgaSsrKQorICAgICAgICBtX3ZpZGVvU3RyZWFt
U291cmNlc1tpXS0+c2V0U3RyZWFtKDApOworfQorCiB2b2lkIE1lZGlhU3RyZWFtRGVzY3JpcHRv
cjo6YWRkU291cmNlKFBhc3NSZWZQdHI8TWVkaWFTdHJlYW1Tb3VyY2U+IHNvdXJjZSkKIHsKICAg
ICBzd2l0Y2ggKHNvdXJjZS0+dHlwZSgpKSB7CkBAIC02NywxNSArNzcsMTkgQEAgdm9pZCBNZWRp
YVN0cmVhbURlc2NyaXB0b3I6OnJlbW92ZVNvdXJjZQogICAgIHN3aXRjaCAoc291cmNlLT50eXBl
KCkpIHsKICAgICBjYXNlIE1lZGlhU3RyZWFtU291cmNlOjpBdWRpbzoKICAgICAgICAgcG9zID0g
bV9hdWRpb1N0cmVhbVNvdXJjZXMuZmluZChzb3VyY2UpOwotICAgICAgICBpZiAocG9zICE9IG5v
dEZvdW5kKQotICAgICAgICAgICAgbV9hdWRpb1N0cmVhbVNvdXJjZXMucmVtb3ZlKHBvcyk7Cisg
ICAgICAgIGlmIChwb3MgPT0gbm90Rm91bmQpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAg
IG1fYXVkaW9TdHJlYW1Tb3VyY2VzLnJlbW92ZShwb3MpOwogICAgICAgICBicmVhazsKICAgICBj
YXNlIE1lZGlhU3RyZWFtU291cmNlOjpWaWRlbzoKICAgICAgICAgcG9zID0gbV92aWRlb1N0cmVh
bVNvdXJjZXMuZmluZChzb3VyY2UpOwotICAgICAgICBpZiAocG9zICE9IG5vdEZvdW5kKQotICAg
ICAgICAgICAgbV92aWRlb1N0cmVhbVNvdXJjZXMucmVtb3ZlKHBvcyk7CisgICAgICAgIGlmIChw
b3MgPT0gbm90Rm91bmQpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIG1fdmlkZW9TdHJl
YW1Tb3VyY2VzLnJlbW92ZShwb3MpOwogICAgICAgICBicmVhazsKICAgICB9CisKKyAgICBzb3Vy
Y2UtPnNldFN0cmVhbSgwKTsKIH0KIAogdm9pZCBNZWRpYVN0cmVhbURlc2NyaXB0b3I6OmFkZFJl
bW90ZVNvdXJjZShNZWRpYVN0cmVhbVNvdXJjZSogc291cmNlKQpJbmRleDogU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1EZXNjcmlwdG9yLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1EZXNj
cmlwdG9yLmgJKHJldmlzaW9uIDE1NzAxNikKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21l
ZGlhc3RyZWFtL01lZGlhU3RyZWFtRGVzY3JpcHRvci5oCSh3b3JraW5nIGNvcHkpCkBAIC01Miw5
ICs1MiwxMCBAQCBwdWJsaWM6CiAKIGNsYXNzIE1lZGlhU3RyZWFtRGVzY3JpcHRvciA6IHB1Ymxp
YyBSZWZDb3VudGVkPE1lZGlhU3RyZWFtRGVzY3JpcHRvcj4gewogcHVibGljOgotCiAgICAgc3Rh
dGljIFBhc3NSZWZQdHI8TWVkaWFTdHJlYW1EZXNjcmlwdG9yPiBjcmVhdGUoY29uc3QgTWVkaWFT
dHJlYW1Tb3VyY2VWZWN0b3ImIGF1ZGlvU291cmNlcywgY29uc3QgTWVkaWFTdHJlYW1Tb3VyY2VW
ZWN0b3ImIHZpZGVvU291cmNlcyk7CiAKKyAgICB2aXJ0dWFsIH5NZWRpYVN0cmVhbURlc2NyaXB0
b3IoKTsKKwogICAgIE1lZGlhU3RyZWFtRGVzY3JpcHRvckNsaWVudCogY2xpZW50KCkgY29uc3Qg
eyByZXR1cm4gbV9jbGllbnQ7IH0KICAgICB2b2lkIHNldENsaWVudChNZWRpYVN0cmVhbURlc2Ny
aXB0b3JDbGllbnQqIGNsaWVudCkgeyBtX2NsaWVudCA9IGNsaWVudDsgfQogCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVNvdXJjZS5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFTdHJl
YW1Tb3VyY2UuY3BwCShyZXZpc2lvbiAxNTcwMTYpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVNvdXJjZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEs
NSArMSw2IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zNCwyNiArMzUs
MzkgQEAKIAogI2luY2x1ZGUgIk1lZGlhU3RyZWFtU291cmNlLmgiCiAKLSNpbmNsdWRlICJBdWRp
b0Rlc3RpbmF0aW9uQ29uc3VtZXIuaCIKKyNpbmNsdWRlICJNZWRpYVN0cmVhbUNlbnRlci5oIgor
I2luY2x1ZGUgIk1lZGlhU3RyZWFtU291cmNlQ2FwYWJpbGl0aWVzLmgiCisjaW5jbHVkZSAiVVVJ
RC5oIgorCiAjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCi1QYXNzUmVmUHRyPE1lZGlhU3RyZWFtU291cmNlPiBNZWRpYVN0cmVhbVNvdXJjZTo6Y3Jl
YXRlKGNvbnN0IFN0cmluZyYgaWQsIFR5cGUgdHlwZSwgY29uc3QgU3RyaW5nJiBuYW1lLCBSZWFk
eVN0YXRlIHJlYWR5U3RhdGUsIGJvb2wgcmVxdWlyZXNDb25zdW1lcikKLXsKLSAgICByZXR1cm4g
YWRvcHRSZWYobmV3IE1lZGlhU3RyZWFtU291cmNlKGlkLCB0eXBlLCBuYW1lLCByZWFkeVN0YXRl
LCByZXF1aXJlc0NvbnN1bWVyKSk7Ci19Ci0KLU1lZGlhU3RyZWFtU291cmNlOjpNZWRpYVN0cmVh
bVNvdXJjZShjb25zdCBTdHJpbmcmIGlkLCBUeXBlIHR5cGUsIGNvbnN0IFN0cmluZyYgbmFtZSwg
UmVhZHlTdGF0ZSByZWFkeVN0YXRlLCBib29sIHJlcXVpcmVzQ29uc3VtZXIpCitNZWRpYVN0cmVh
bVNvdXJjZTo6TWVkaWFTdHJlYW1Tb3VyY2UoY29uc3QgU3RyaW5nJiBpZCwgVHlwZSB0eXBlLCBj
b25zdCBTdHJpbmcmIG5hbWUpCiAgICAgOiBtX2lkKGlkKQogICAgICwgbV90eXBlKHR5cGUpCiAg
ICAgLCBtX25hbWUobmFtZSkKLSAgICAsIG1fcmVhZHlTdGF0ZShyZWFkeVN0YXRlKQorICAgICwg
bV9yZWFkeVN0YXRlKE5ldykKICAgICAsIG1fc3RyZWFtKDApCi0gICAgLCBtX3JlcXVpcmVzQ29u
c3VtZXIocmVxdWlyZXNDb25zdW1lcikKICAgICAsIG1fZW5hYmxlZCh0cnVlKQogICAgICwgbV9t
dXRlZChmYWxzZSkKKyAgICAsIG1fcmVhZG9ubHkoZmFsc2UpCisgICAgLCBtX3JlbW90ZShmYWxz
ZSkKIHsKKyAgICBpZiAoIW1faWQuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm47CisgICAgCisg
ICAgbV9pZCA9IGNyZWF0ZUNhbm9uaWNhbFVVSURTdHJpbmcoKTsKK30KKwordm9pZCBNZWRpYVN0
cmVhbVNvdXJjZTo6cmVzZXQoKQoreworICAgIG1fcmVhZHlTdGF0ZSA9IE5ldzsKKyAgICBtX3N0
cmVhbSA9IDA7CisgICAgbV9lbmFibGVkID0gdHJ1ZTsKKyAgICBtX211dGVkID0gZmFsc2U7Cisg
ICAgbV9yZWFkb25seSA9IGZhbHNlOworICAgIG1fcmVtb3RlID0gZmFsc2U7CiB9CiAKIHZvaWQg
TWVkaWFTdHJlYW1Tb3VyY2U6OnNldFJlYWR5U3RhdGUoUmVhZHlTdGF0ZSByZWFkeVN0YXRlKQpA
QCAtNjMsNyArNzcsNyBAQCB2b2lkIE1lZGlhU3RyZWFtU291cmNlOjpzZXRSZWFkeVN0YXRlKFJl
CiAKICAgICBtX3JlYWR5U3RhdGUgPSByZWFkeVN0YXRlOwogICAgIGZvciAoVmVjdG9yPE9ic2Vy
dmVyKj46Oml0ZXJhdG9yIGkgPSBtX29ic2VydmVycy5iZWdpbigpOyBpICE9IG1fb2JzZXJ2ZXJz
LmVuZCgpOyArK2kpCi0gICAgICAgICgqaSktPnNvdXJjZUNoYW5nZWRTdGF0ZSgpOworICAgICAg
ICAoKmkpLT5zb3VyY2VTdGF0ZUNoYW5nZWQoKTsKIH0KIAogdm9pZCBNZWRpYVN0cmVhbVNvdXJj
ZTo6YWRkT2JzZXJ2ZXIoTWVkaWFTdHJlYW1Tb3VyY2U6Ok9ic2VydmVyKiBvYnNlcnZlcikKQEAg
LTgwLDUzICs5NCw3NCBAQCB2b2lkIE1lZGlhU3RyZWFtU291cmNlOjpyZW1vdmVPYnNlcnZlcihN
CiAKIHZvaWQgTWVkaWFTdHJlYW1Tb3VyY2U6OnNldFN0cmVhbShNZWRpYVN0cmVhbURlc2NyaXB0
b3IqIHN0cmVhbSkKIHsKLSAgICBBU1NFUlQoIW1fc3RyZWFtICYmIHN0cmVhbSk7CisgICAgLy8g
RklYTUU6IEEgc291cmNlIHNob3VsZCBub3QgbmVlZCB0byBrbm93IGFib3V0IGl0cyBzdHJlYW0o
cykuIFRoaXMgd2lsbCBiZSBmaXhlZCBhcyBhIHBhcnQgb2YKKyAgICAvLyBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTIxOTU0CiAgICAgbV9zdHJlYW0gPSBzdHJlYW07
CiB9CiAKK01lZGlhQ29uc3RyYWludHMqIE1lZGlhU3RyZWFtU291cmNlOjpjb25zdHJhaW50cygp
IGNvbnN0Cit7CisgICAgLy8gRklYTUU6IFdoaWxlIHRoaXMgcmV0dXJucyAKKyAgICAvLyBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTIyNDI4CisgICAgcmV0dXJuIG1f
Y29uc3RyYWludHMuZ2V0KCk7Cit9CisgICAgCit2b2lkIE1lZGlhU3RyZWFtU291cmNlOjpzZXRD
b25zdHJhaW50cyhQYXNzUmVmUHRyPE1lZGlhQ29uc3RyYWludHM+IGNvbnN0cmFpbnRzKQorewor
ICAgIG1fY29uc3RyYWludHMgPSBjb25zdHJhaW50czsKK30KKwogdm9pZCBNZWRpYVN0cmVhbVNv
dXJjZTo6c2V0TXV0ZWQoYm9vbCBtdXRlZCkKIHsKICAgICBpZiAobV9tdXRlZCA9PSBtdXRlZCkK
ICAgICAgICAgcmV0dXJuOwogCiAgICAgbV9tdXRlZCA9IG11dGVkOworCisgICAgaWYgKG1fcmVh
ZHlTdGF0ZSA9PSBFbmRlZCkKKyAgICAgICAgcmV0dXJuOworCiAgICAgZm9yIChWZWN0b3I8T2Jz
ZXJ2ZXIqPjo6aXRlcmF0b3IgaSA9IG1fb2JzZXJ2ZXJzLmJlZ2luKCk7IGkgIT0gbV9vYnNlcnZl
cnMuZW5kKCk7ICsraSkKLSAgICAgICAgKCppKS0+c291cmNlQ2hhbmdlZFN0YXRlKCk7CisgICAg
ICAgICgqaSktPnNvdXJjZU11dGVkQ2hhbmdlZCgpOwogfQogCi12b2lkIE1lZGlhU3RyZWFtU291
cmNlOjphZGRBdWRpb0NvbnN1bWVyKFBhc3NSZWZQdHI8QXVkaW9EZXN0aW5hdGlvbkNvbnN1bWVy
PiBjb25zdW1lcikKK3ZvaWQgTWVkaWFTdHJlYW1Tb3VyY2U6OnNldEVuYWJsZWQoYm9vbCBlbmFi
bGVkKQogewotICAgIEFTU0VSVChtX3JlcXVpcmVzQ29uc3VtZXIpOwotICAgIE11dGV4TG9ja2Vy
IGxvY2tlcihtX2F1ZGlvQ29uc3VtZXJzTG9jayk7Ci0gICAgbV9hdWRpb0NvbnN1bWVycy5hcHBl
bmQoY29uc3VtZXIpOwotfQorICAgIGlmIChtX2VuYWJsZWQgPT0gZW5hYmxlZCkKKyAgICAgICAg
cmV0dXJuOworICAgIAorICAgIG1fZW5hYmxlZCA9IGVuYWJsZWQ7CiAKLWJvb2wgTWVkaWFTdHJl
YW1Tb3VyY2U6OnJlbW92ZUF1ZGlvQ29uc3VtZXIoQXVkaW9EZXN0aW5hdGlvbkNvbnN1bWVyKiBj
b25zdW1lcikKLXsKLSAgICBBU1NFUlQobV9yZXF1aXJlc0NvbnN1bWVyKTsKLSAgICBNdXRleExv
Y2tlciBsb2NrZXIobV9hdWRpb0NvbnN1bWVyc0xvY2spOwotICAgIHNpemVfdCBwb3MgPSBtX2F1
ZGlvQ29uc3VtZXJzLmZpbmQoY29uc3VtZXIpOwotICAgIGlmIChwb3MgIT0gbm90Rm91bmQpIHsK
LSAgICAgICAgbV9hdWRpb0NvbnN1bWVycy5yZW1vdmUocG9zKTsKLSAgICAgICAgcmV0dXJuIHRy
dWU7Ci0gICAgfQotICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAobV9yZWFkeVN0YXRlID09IEVu
ZGVkKQorICAgICAgICByZXR1cm47CisgICAgCisgICAgZm9yIChWZWN0b3I8T2JzZXJ2ZXIqPjo6
aXRlcmF0b3IgaSA9IG1fb2JzZXJ2ZXJzLmJlZ2luKCk7IGkgIT0gbV9vYnNlcnZlcnMuZW5kKCk7
ICsraSkKKyAgICAgICAgKCppKS0+c291cmNlRW5hYmxlZENoYW5nZWQoKTsKIH0KIAotdm9pZCBN
ZWRpYVN0cmVhbVNvdXJjZTo6c2V0QXVkaW9Gb3JtYXQoc2l6ZV90IG51bWJlck9mQ2hhbm5lbHMs
IGZsb2F0IHNhbXBsZVJhdGUpCitib29sIE1lZGlhU3RyZWFtU291cmNlOjpyZWFkb25seSgpIGNv
bnN0CiB7Ci0gICAgQVNTRVJUKG1fcmVxdWlyZXNDb25zdW1lcik7Ci0gICAgTXV0ZXhMb2NrZXIg
bG9ja2VyKG1fYXVkaW9Db25zdW1lcnNMb2NrKTsKLSAgICBmb3IgKFZlY3RvcjxSZWZQdHI8QXVk
aW9EZXN0aW5hdGlvbkNvbnN1bWVyPiA+OjppdGVyYXRvciBpdCA9IG1fYXVkaW9Db25zdW1lcnMu
YmVnaW4oKTsgaXQgIT0gbV9hdWRpb0NvbnN1bWVycy5lbmQoKTsgKytpdCkKLSAgICAgICAgKCpp
dCktPnNldEZvcm1hdChudW1iZXJPZkNoYW5uZWxzLCBzYW1wbGVSYXRlKTsKKyAgICAvLyBodHRw
Oi8vd3d3LnczLm9yZy9UUi9tZWRpYWNhcHR1cmUtc3RyZWFtcy8jd2lkbC1NZWRpYVN0cmVhbVRy
YWNrLV9yZWFkb25seQorICAgIC8vIElmIHRoZSB0cmFjayAoYXVkaW8gb3IgdmlkZW8pIGlzIGJh
Y2tlZCBieSBhIHJlYWQtb25seSBzb3VyY2Ugc3VjaCBhcyBhIGZpbGUsIG9yIHRoZSB0cmFjayBz
b3VyY2UgCisgICAgLy8gaXMgYSBsb2NhbCBtaWNyb3Bob25lIG9yIGNhbWVyYSwgYnV0IGlzIHNo
YXJlZCBzbyB0aGF0IHRoaXMgdHJhY2sgY2Fubm90IG1vZGlmeSBhbnkgb2YgdGhlIHNvdXJjZSdz
CisgICAgLy8gc2V0dGluZ3MsIHRoZSByZWFkb25seSBhdHRyaWJ1dGUgbXVzdCByZXR1cm4gdGhl
IHZhbHVlIHRydWUuIE90aGVyd2lzZSwgaXQgbXVzdCByZXR1cm4gdGhlIHZhbHVlIGZhbHNlLgor
ICAgIHJldHVybiBtX3JlYWRvbmx5OwogfQogCi12b2lkIE1lZGlhU3RyZWFtU291cmNlOjpjb25z
dW1lQXVkaW8oQXVkaW9CdXMqIGJ1cywgc2l6ZV90IG51bWJlck9mRnJhbWVzKQordm9pZCBNZWRp
YVN0cmVhbVNvdXJjZTo6c3RvcCgpCiB7Ci0gICAgQVNTRVJUKG1fcmVxdWlyZXNDb25zdW1lcik7
Ci0gICAgTXV0ZXhMb2NrZXIgbG9ja2VyKG1fYXVkaW9Db25zdW1lcnNMb2NrKTsKLSAgICBmb3Ig
KFZlY3RvcjxSZWZQdHI8QXVkaW9EZXN0aW5hdGlvbkNvbnN1bWVyPiA+OjppdGVyYXRvciBpdCA9
IG1fYXVkaW9Db25zdW1lcnMuYmVnaW4oKTsgaXQgIT0gbV9hdWRpb0NvbnN1bWVycy5lbmQoKTsg
KytpdCkKLSAgICAgICAgKCppdCktPmNvbnN1bWVBdWRpbyhidXMsIG51bWJlck9mRnJhbWVzKTsK
KyAgICBmb3IgKFZlY3RvcjxPYnNlcnZlcio+OjppdGVyYXRvciBpID0gbV9vYnNlcnZlcnMuYmVn
aW4oKTsgaSAhPSBtX29ic2VydmVycy5lbmQoKTsgKytpKSB7CisgICAgICAgIGlmICghKCppKS0+
c3RvcHBlZCgpKQorICAgICAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIC8vIFRoZXJlIGFy
ZSBubyBtb3JlIGNvbnN1bWVycyBvZiB0aGlzIHNvdXJjZSdzIGRhdGEsIHNodXQgaXQgZG93biBh
cyBhcHByb3ByaWF0ZS4KKyAgICBzZXRSZWFkeVN0YXRlKEVuZGVkKTsKKworICAgIC8vIGh0dHA6
Ly93d3cudzMub3JnL1RSL21lZGlhY2FwdHVyZS1zdHJlYW1zLyN3aWRsLU1lZGlhU3RyZWFtVHJh
Y2stc3RvcC12b2lkCisgICAgLy8gSWYgdGhlIGRhdGEgaXMgYmVpbmcgZ2VuZXJhdGVkIGZyb20g
YSBsaXZlIHNvdXJjZSAoZS5nLiwgYSBtaWNyb3Bob25lIG9yIGNhbWVyYSksIHRoZW4gdGhlIHVz
ZXIgCisgICAgLy8gYWdlbnQgc2hvdWxkIHJlbW92ZSBhbnkgYWN0aXZlICJvbi1haXIiIGluZGlj
YXRvciBmb3IgdGhhdCBzb3VyY2UuIElmIHRoZSBkYXRhIGlzIGJlaW5nIAorICAgIC8vIGdlbmVy
YXRlZCBmcm9tIGEgcHJlcmVjb3JkZWQgc291cmNlIChlLmcuIGEgdmlkZW8gZmlsZSksIGFueSBy
ZW1haW5pbmcgY29udGVudCBpbiB0aGUgZmlsZSBpcyBpZ25vcmVkLgogfQogCiB9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9N
ZWRpYVN0cmVhbVNvdXJjZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21lZGlhc3RyZWFtL01lZGlhU3RyZWFtU291cmNlLmgJKHJldmlzaW9uIDE1NzAxNikKKysrIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtU291cmNlLmgJKHdv
cmtpbmcgY29weSkKQEAgLTEsNiArMSw3IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDExIEVy
aWNzc29uIEFCLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSAyMDEyIEdv
b2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCkBAIC0zNiw2ICszNyw3IEBACiAKICNpbmNsdWRlICJBdWRpb0Rlc3RpbmF0aW9uQ29uc3Vt
ZXIuaCIKICNpbmNsdWRlICJNZWRpYUNvbnN0cmFpbnRzLmgiCisjaW5jbHVkZSAiTWVkaWFTdHJl
YW1Tb3VyY2VDYXBhYmlsaXRpZXMuaCIKICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogI2lu
Y2x1ZGUgPHd0Zi9WZWN0b3IuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KQEAg
LTQzLDcyICs0NSw4MSBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBBdWRpb0J1czsK
K2NsYXNzIE1lZGlhQ29uc3RyYWludHM7CiBjbGFzcyBNZWRpYVN0cmVhbURlc2NyaXB0b3I7Citz
dHJ1Y3QgTWVkaWFTdHJlYW1Tb3VyY2VTdGF0ZXM7CiAKIGNsYXNzIE1lZGlhU3RyZWFtU291cmNl
IDogcHVibGljIFJlZkNvdW50ZWQ8TWVkaWFTdHJlYW1Tb3VyY2U+IHsKIHB1YmxpYzoKICAgICBj
bGFzcyBPYnNlcnZlciB7CiAgICAgcHVibGljOgogICAgICAgICB2aXJ0dWFsIH5PYnNlcnZlcigp
IHsgfQotICAgICAgICB2aXJ0dWFsIHZvaWQgc291cmNlQ2hhbmdlZFN0YXRlKCkgPSAwOworICAg
ICAgICB2aXJ0dWFsIHZvaWQgc291cmNlU3RhdGVDaGFuZ2VkKCkgPSAwOworICAgICAgICB2aXJ0
dWFsIHZvaWQgc291cmNlTXV0ZWRDaGFuZ2VkKCkgPSAwOworICAgICAgICB2aXJ0dWFsIHZvaWQg
c291cmNlRW5hYmxlZENoYW5nZWQoKSA9IDA7CisgICAgICAgIHZpcnR1YWwgYm9vbCBzdG9wcGVk
KCkgPSAwOwogICAgIH07CiAKICAgICBlbnVtIFR5cGUgeyBBdWRpbywgVmlkZW8gfTsKICAgICBl
bnVtIFJlYWR5U3RhdGUgeyBOZXcgPSAwLCBMaXZlID0gMSwgRW5kZWQgPSAyIH07CiAKLSAgICBz
dGF0aWMgUGFzc1JlZlB0cjxNZWRpYVN0cmVhbVNvdXJjZT4gY3JlYXRlKGNvbnN0IFN0cmluZyYg
aWQsIFR5cGUsIGNvbnN0IFN0cmluZyYgbmFtZSwgUmVhZHlTdGF0ZSA9IE5ldywgYm9vbCByZXF1
aXJlc0NvbnN1bWVyID0gZmFsc2UpOworICAgIHZpcnR1YWwgfk1lZGlhU3RyZWFtU291cmNlKCkg
eyB9CiAKLSAgICBjb25zdCBTdHJpbmcmIGlkKCkgY29uc3QgeyByZXR1cm4gbV9pZDsgfQorICAg
IHZpcnR1YWwgYm9vbCBpc0F1ZGlvU3RyZWFtU291cmNlKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7
IH0KKyAgICB2aXJ0dWFsIGJvb2wgdXNlSURGb3JUcmFja0lEKCkgY29uc3QgeyByZXR1cm4gZmFs
c2U7IH0KKworICAgIHZvaWQgcmVzZXQoKTsKIAorICAgIGNvbnN0IFN0cmluZyYgaWQoKSBjb25z
dCB7IHJldHVybiBtX2lkOyB9CiAgICAgVHlwZSB0eXBlKCkgY29uc3QgeyByZXR1cm4gbV90eXBl
OyB9CiAgICAgY29uc3QgU3RyaW5nJiBuYW1lKCkgY29uc3QgeyByZXR1cm4gbV9uYW1lOyB9CiAK
KyAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8TWVkaWFTdHJlYW1Tb3VyY2VDYXBhYmlsaXRpZXM+IGNh
cGFiaWxpdGllcygpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGNvbnN0IE1lZGlhU3RyZWFtU291
cmNlU3RhdGVzJiBzdGF0ZXMoKSA9IDA7CisgICAgCiAgICAgdm9pZCBzZXRSZWFkeVN0YXRlKFJl
YWR5U3RhdGUpOwogICAgIFJlYWR5U3RhdGUgcmVhZHlTdGF0ZSgpIGNvbnN0IHsgcmV0dXJuIG1f
cmVhZHlTdGF0ZTsgfQogCiAgICAgdm9pZCBhZGRPYnNlcnZlcihPYnNlcnZlciopOwogICAgIHZv
aWQgcmVtb3ZlT2JzZXJ2ZXIoT2JzZXJ2ZXIqKTsKIAotICAgIHZvaWQgc2V0Q29uc3RyYWludHMo
UGFzc1JlZlB0cjxNZWRpYUNvbnN0cmFpbnRzPiBjb25zdHJhaW50cykgeyBtX2NvbnN0cmFpbnRz
ID0gY29uc3RyYWludHM7IH0KLSAgICBNZWRpYUNvbnN0cmFpbnRzKiBjb25zdHJhaW50cygpIGNv
bnN0IHsgcmV0dXJuIG1fY29uc3RyYWludHMuZ2V0KCk7IH0KLQotICAgIGNvbnN0IFN0cmluZyYg
ZGV2aWNlSWQoKSBjb25zdCB7IHJldHVybiBtX2RldmljZUlkOyB9Ci0gICAgdm9pZCBzZXREZXZp
Y2VJZChjb25zdCBTdHJpbmcmIGRldmljZUlkKSB7IG1fZGV2aWNlSWQgPSBkZXZpY2VJZDsgfQor
ICAgIHZvaWQgc2V0Q29uc3RyYWludHMoUGFzc1JlZlB0cjxNZWRpYUNvbnN0cmFpbnRzPik7Cisg
ICAgTWVkaWFDb25zdHJhaW50cyogY29uc3RyYWludHMoKSBjb25zdDsKIAogICAgIGJvb2wgZW5h
YmxlZCgpIGNvbnN0IHsgcmV0dXJuIG1fZW5hYmxlZDsgfQotICAgIHZvaWQgc2V0RW5hYmxlZChi
b29sIGVuYWJsZWQpIHsgbV9lbmFibGVkID0gZW5hYmxlZDsgfQorICAgIHZvaWQgc2V0RW5hYmxl
ZChib29sKTsKIAogICAgIGJvb2wgbXV0ZWQoKSBjb25zdCB7IHJldHVybiBtX211dGVkOyB9CiAg
ICAgdm9pZCBzZXRNdXRlZChib29sKTsKLSAgICAKLSAgICB2b2lkIHNldEF1ZGlvRm9ybWF0KHNp
emVfdCBudW1iZXJPZkNoYW5uZWxzLCBmbG9hdCBzYW1wbGVSYXRlKTsKLSAgICB2b2lkIGNvbnN1
bWVBdWRpbyhBdWRpb0J1cyosIHNpemVfdCBudW1iZXJPZkZyYW1lcyk7CisKKyAgICBib29sIHJl
YWRvbmx5KCkgY29uc3Q7CisgICAgdm9pZCBzZXRSZWFkb25seShib29sIHJlYWRvbmx5KSB7IG1f
cmVhZG9ubHkgPSByZWFkb25seTsgfQorCisgICAgYm9vbCByZW1vdGUoKSBjb25zdCB7IHJldHVy
biBtX3JlbW90ZTsgfQorICAgIHZvaWQgc2V0UmVtb3RlKGJvb2wgcmVtb3RlKSB7IG1fcmVtb3Rl
ID0gcmVtb3RlOyB9CisKKyAgICB2b2lkIHN0b3AoKTsKIAogICAgIE1lZGlhU3RyZWFtRGVzY3Jp
cHRvciogc3RyZWFtKCkgY29uc3QgeyByZXR1cm4gbV9zdHJlYW07IH0KICAgICB2b2lkIHNldFN0
cmVhbShNZWRpYVN0cmVhbURlc2NyaXB0b3IqKTsKLQotICAgIGJvb2wgcmVxdWlyZXNBdWRpb0Nv
bnN1bWVyKCkgY29uc3QgeyByZXR1cm4gbV9yZXF1aXJlc0NvbnN1bWVyOyB9Ci0gICAgdm9pZCBh
ZGRBdWRpb0NvbnN1bWVyKFBhc3NSZWZQdHI8QXVkaW9EZXN0aW5hdGlvbkNvbnN1bWVyPik7Ci0g
ICAgYm9vbCByZW1vdmVBdWRpb0NvbnN1bWVyKEF1ZGlvRGVzdGluYXRpb25Db25zdW1lciopOwot
ICAgIGNvbnN0IFZlY3RvcjxSZWZQdHI8QXVkaW9EZXN0aW5hdGlvbkNvbnN1bWVyPiA+JiBhdWRp
b0NvbnN1bWVycygpIGNvbnN0IHsgcmV0dXJuIG1fYXVkaW9Db25zdW1lcnM7IH0KKyAgICAKK3By
b3RlY3RlZDoKKyAgICBNZWRpYVN0cmVhbVNvdXJjZShjb25zdCBTdHJpbmcmIGlkLCBUeXBlLCBj
b25zdCBTdHJpbmcmIG5hbWUpOwogCiBwcml2YXRlOgotICAgIE1lZGlhU3RyZWFtU291cmNlKGNv
bnN0IFN0cmluZyYgaWQsIFR5cGUsIGNvbnN0IFN0cmluZyYgbmFtZSwgUmVhZHlTdGF0ZSwgYm9v
bCByZXF1aXJlc0NvbnN1bWVyKTsKLQogICAgIFN0cmluZyBtX2lkOwogICAgIFR5cGUgbV90eXBl
OwogICAgIFN0cmluZyBtX25hbWU7CiAgICAgUmVhZHlTdGF0ZSBtX3JlYWR5U3RhdGU7Ci0gICAg
U3RyaW5nIG1fZGV2aWNlSWQ7CiAgICAgVmVjdG9yPE9ic2VydmVyKj4gbV9vYnNlcnZlcnM7Ci0g
ICAgTXV0ZXggbV9hdWRpb0NvbnN1bWVyc0xvY2s7Ci0gICAgVmVjdG9yPFJlZlB0cjxBdWRpb0Rl
c3RpbmF0aW9uQ29uc3VtZXI+PiBtX2F1ZGlvQ29uc3VtZXJzOwogICAgIFJlZlB0cjxNZWRpYUNv
bnN0cmFpbnRzPiBtX2NvbnN0cmFpbnRzOwogICAgIE1lZGlhU3RyZWFtRGVzY3JpcHRvciogbV9z
dHJlYW07CisgICAgTWVkaWFTdHJlYW1Tb3VyY2VTdGF0ZXMgbV9zdGF0ZXM7CiAKLSAgICBib29s
IG1fcmVxdWlyZXNDb25zdW1lcjsKICAgICBib29sIG1fZW5hYmxlZDsKICAgICBib29sIG1fbXV0
ZWQ7CisgICAgYm9vbCBtX3JlYWRvbmx5OworICAgIGJvb2wgbV9yZW1vdGU7CiB9OwogCiB0eXBl
ZGVmIFZlY3RvcjxSZWZQdHI8TWVkaWFTdHJlYW1Tb3VyY2U+ID4gTWVkaWFTdHJlYW1Tb3VyY2VW
ZWN0b3I7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYVN0
cmVhbVNvdXJjZUNhcGFiaWxpdGllcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtU291cmNlQ2FwYWJpbGl0aWVzLmgJKHJldmlz
aW9uIDApCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYVN0cmVh
bVNvdXJjZUNhcGFiaWxpdGllcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTc1IEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBV
VEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVU
RVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
CisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjaWZuZGVmIE1lZGlhU3RyZWFtU291cmNlQ2FwYWJpbGl0aWVzX2gKKyNkZWZpbmUg
TWVkaWFTdHJlYW1Tb3VyY2VDYXBhYmlsaXRpZXNfaAorCisjaWYgRU5BQkxFKE1FRElBX1NUUkVB
TSkKKworI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5o
PgorI2luY2x1ZGUgPHd0Zi90ZXh0L0F0b21pY1N0cmluZy5oPgorCituYW1lc3BhY2UgV2ViQ29y
ZSB7CisKK3N0cnVjdCBNZWRpYVN0cmVhbVNvdXJjZVN0YXRlcyB7CitwdWJsaWM6CisgICAgZW51
bSBTb3VyY2VUeXBlIHsgTm9uZSwgQ2FtZXJhLCBNaWNyb3Bob25lIH07CisgICAgZW51bSBWaWRl
b0ZhY2luZ01vZGUgeyBVc2VyLCBFbnZpcm9ubWVudCwgTGVmdCwgUmlnaHQgfTsKKworICAgIE1l
ZGlhU3RyZWFtU291cmNlU3RhdGVzKCkKKyAgICAgICAgOiBzb3VyY2VUeXBlKE5vbmUpCisgICAg
ICAgICwgZmFjaW5nTW9kZShVc2VyKQorICAgICAgICAsIHdpZHRoKDApCisgICAgICAgICwgaGVp
Z2h0KDApCisgICAgICAgICwgZnJhbWVSYXRlKDApCisgICAgICAgICwgYXNwZWN0UmF0aW8oMCkK
KyAgICAgICAgLCB2b2x1bWUoMCkKKyAgICB7CisgICAgfQorCisgICAgU291cmNlVHlwZSBzb3Vy
Y2VUeXBlOworICAgIEF0b21pY1N0cmluZyBzb3VyY2VJZDsKKyAgICBWaWRlb0ZhY2luZ01vZGUg
ZmFjaW5nTW9kZTsKKyAgICB1bnNpZ25lZCBsb25nIHdpZHRoOworICAgIHVuc2lnbmVkIGxvbmcg
aGVpZ2h0OworICAgIGZsb2F0IGZyYW1lUmF0ZTsKKyAgICBmbG9hdCBhc3BlY3RSYXRpbzsKKyAg
ICB1bnNpZ25lZCBsb25nIHZvbHVtZTsKKyAgICAKKyAgICBib29sIGhhc1ZpZGVvU291cmNlOwor
fTsKKworY2xhc3MgTWVkaWFTdHJlYW1Tb3VyY2VDYXBhYmlsaXR5UmFuZ2UgeworcHVibGljOgor
ICAgIAorICAgIE1lZGlhU3RyZWFtU291cmNlQ2FwYWJpbGl0eVJhbmdlKGZsb2F0IG1pbiwgZmxv
YXQgbWF4LCBib29sIHN1cHBvcnRlZCA9IHRydWUpCisgICAgICAgIDogbV90eXBlKEZsb2F0KQor
ICAgIHsKKyAgICAgICAgbV9taW4uYXNGbG9hdCA9IG1pbjsKKyAgICAgICAgbV9tYXguYXNGbG9h
dCA9IG1heDsKKyAgICAgICAgbV9zdXBwb3J0ZWQgPSBzdXBwb3J0ZWQ7CisgICAgfQorICAgIAor
ICAgIE1lZGlhU3RyZWFtU291cmNlQ2FwYWJpbGl0eVJhbmdlKHVuc2lnbmVkIGxvbmcgbWluLCB1
bnNpZ25lZCBsb25nIG1heCwgYm9vbCBzdXBwb3J0ZWQgPSB0cnVlKQorICAgICAgICA6IG1fdHlw
ZShVTG9uZykKKyAgICB7CisgICAgICAgIG1fbWluLmFzVUxvbmcgPSBtaW47CisgICAgICAgIG1f
bWF4LmFzVUxvbmcgPSBtYXg7CisgICAgICAgIG1fc3VwcG9ydGVkID0gc3VwcG9ydGVkOworICAg
IH0KKyAgICAKKyAgICBNZWRpYVN0cmVhbVNvdXJjZUNhcGFiaWxpdHlSYW5nZSgpCisgICAgewor
ICAgICAgICBtX3R5cGUgPSBVbmRlZmluZWQ7CisgICAgICAgIG1fbWluLmFzVUxvbmcgPSAwOwor
ICAgICAgICBtX21heC5hc1VMb25nID0gMDsKKyAgICAgICAgbV9zdXBwb3J0ZWQgPSBmYWxzZTsK
KyAgICB9CisgICAgCisgICAgZW51bSBUeXBlIHsgVW5kZWZpbmVkLCBGbG9hdCwgVUxvbmcgfTsK
KyAgICAKKyAgICB1bmlvbiBWYWx1ZVVuaW9uIHsKKyAgICAgICAgdW5zaWduZWQgbG9uZyBhc1VM
b25nOworICAgICAgICBmbG9hdCBhc0Zsb2F0OworICAgIH07CisgICAgCisgICAgY29uc3QgVmFs
dWVVbmlvbiYgbWluKCkgY29uc3QgeyByZXR1cm4gbV9taW47IH0KKyAgICBjb25zdCBWYWx1ZVVu
aW9uJiBtYXgoKSBjb25zdCB7IHJldHVybiBtX21heDsgfQorICAgIFR5cGUgdHlwZSgpIGNvbnN0
IHsgcmV0dXJuIG1fdHlwZTsgfQorICAgIGJvb2wgc3VwcG9ydGVkKCkgY29uc3QgeyByZXR1cm4g
bV9zdXBwb3J0ZWQ7IH0KKyAgICAKK3ByaXZhdGU6CisgICAgVmFsdWVVbmlvbiBtX21pbjsKKyAg
ICBWYWx1ZVVuaW9uIG1fbWF4OworICAgIFR5cGUgbV90eXBlOworICAgIGJvb2wgbV9zdXBwb3J0
ZWQ7Cit9OworCitjbGFzcyBNZWRpYVN0cmVhbVNvdXJjZUNhcGFiaWxpdGllcyA6IHB1YmxpYyBS
ZWZDb3VudGVkPE1lZGlhU3RyZWFtU291cmNlQ2FwYWJpbGl0aWVzPiB7CitwdWJsaWM6CisgICAg
c3RhdGljIFBhc3NSZWZQdHI8TWVkaWFTdHJlYW1Tb3VyY2VDYXBhYmlsaXRpZXM+IGNyZWF0ZSgp
CisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IE1lZGlhU3RyZWFtU291cmNlQ2Fw
YWJpbGl0aWVzKCkpOworICAgIH0KKworICAgIH5NZWRpYVN0cmVhbVNvdXJjZUNhcGFiaWxpdGll
cygpIHsgfQorCisgICAgY29uc3QgVmVjdG9yPE1lZGlhU3RyZWFtU291cmNlU3RhdGVzOjpTb3Vy
Y2VUeXBlPiYgc291cmNlVHlwZXMoKSB7IHJldHVybiBtX3NvdXJjZVR5cGU7IH0KKyAgICB2b2lk
IGFkZFNvdXJjZVR5cGUoTWVkaWFTdHJlYW1Tb3VyY2VTdGF0ZXM6OlNvdXJjZVR5cGUgc291cmNl
VHlwZSkKKyAgICB7CisgICAgICAgIGlmIChzb3VyY2VUeXBlID09IE1lZGlhU3RyZWFtU291cmNl
U3RhdGVzOjpDYW1lcmEpCisgICAgICAgICAgICBtX3ZpZGVvU291cmNlID0gdHJ1ZTsKKyAgICAg
ICAgbV9zb3VyY2VUeXBlLmFwcGVuZChzb3VyY2VUeXBlKTsKKyAgICB9CisKKyAgICBjb25zdCBW
ZWN0b3I8QXRvbWljU3RyaW5nPiYgc291cmNlSWQoKSB7IHJldHVybiBtX3NvdXJjZUlkOyB9Cisg
ICAgdm9pZCBzZXRTb3VyY2VJZChjb25zdCBBdG9taWNTdHJpbmcmIGlkKSAgeyBtX3NvdXJjZUlk
LnJlc2VydmVDYXBhY2l0eSgxKTsgbV9zb3VyY2VJZC5pbnNlcnQoMCwgaWQpOyB9CisKKyAgICBj
b25zdCBWZWN0b3I8TWVkaWFTdHJlYW1Tb3VyY2VTdGF0ZXM6OlZpZGVvRmFjaW5nTW9kZT4mIGZh
Y2luZ01vZGVzKCkgeyByZXR1cm4gbV9mYWNpbmdNb2RlOyB9CisgICAgdm9pZCBhZGRGYWNpbmdN
b2RlKE1lZGlhU3RyZWFtU291cmNlU3RhdGVzOjpWaWRlb0ZhY2luZ01vZGUgbW9kZSkgeyBtX2Zh
Y2luZ01vZGUuYXBwZW5kKG1vZGUpOyB9CisKKyAgICBjb25zdCBNZWRpYVN0cmVhbVNvdXJjZUNh
cGFiaWxpdHlSYW5nZSYgd2lkdGgoKSB7IHJldHVybiBtX3dpZHRoOyB9CisgICAgdm9pZCBzZXRX
aWR0aFJhbmdlKGNvbnN0IE1lZGlhU3RyZWFtU291cmNlQ2FwYWJpbGl0eVJhbmdlJiB3aWR0aCkg
eyBtX3dpZHRoID0gd2lkdGg7IH0KKworICAgIGNvbnN0IE1lZGlhU3RyZWFtU291cmNlQ2FwYWJp
bGl0eVJhbmdlJiBoZWlnaHQoKSB7IHJldHVybiBtX2hlaWdodDsgfQorICAgIHZvaWQgc2V0SGVp
Z2h0UmFuZ2UoY29uc3QgTWVkaWFTdHJlYW1Tb3VyY2VDYXBhYmlsaXR5UmFuZ2UmIGhlaWdodCkg
eyBtX2hlaWdodCA9IGhlaWdodDsgfQorCisgICAgY29uc3QgTWVkaWFTdHJlYW1Tb3VyY2VDYXBh
YmlsaXR5UmFuZ2UmIGZyYW1lUmF0ZSgpIHsgcmV0dXJuIG1fZnJhbWVSYXRlOyB9CisgICAgdm9p
ZCBzZXRGcmFtZVJhdGVSYW5nZShjb25zdCBNZWRpYVN0cmVhbVNvdXJjZUNhcGFiaWxpdHlSYW5n
ZSYgZnJhbWVSYXRlKSB7IG1fZnJhbWVSYXRlID0gZnJhbWVSYXRlOyB9CisKKyAgICBjb25zdCBN
ZWRpYVN0cmVhbVNvdXJjZUNhcGFiaWxpdHlSYW5nZSYgYXNwZWN0UmF0aW8oKSB7IHJldHVybiBt
X2FzcGVjdFJhdGlvOyB9CisgICAgdm9pZCBzZXRBc3BlY3RSYXRpb1JhbmdlKGNvbnN0IE1lZGlh
U3RyZWFtU291cmNlQ2FwYWJpbGl0eVJhbmdlJiBhc3BlY3RSYXRpbykgeyBtX2FzcGVjdFJhdGlv
ID0gYXNwZWN0UmF0aW87IH0KKworICAgIGNvbnN0IE1lZGlhU3RyZWFtU291cmNlQ2FwYWJpbGl0
eVJhbmdlJiB2b2x1bWUoKSB7IHJldHVybiBtX3ZvbHVtZTsgfQorICAgIHZvaWQgc2V0Vm9sdW1l
UmFuZ2UoY29uc3QgTWVkaWFTdHJlYW1Tb3VyY2VDYXBhYmlsaXR5UmFuZ2UmIHZvbHVtZSkgeyBt
X3ZvbHVtZSA9IHZvbHVtZTsgfQorCisgICAgYm9vbCBoYXNWaWRlb1NvdXJjZSgpIHsgcmV0dXJu
IG1fdmlkZW9Tb3VyY2U7IH0KKyAgICB2b2lkIHNldEhhc1ZpZGVvU291cmNlKGJvb2wgaXNWaWRl
bykgeyBtX3ZpZGVvU291cmNlID0gaXNWaWRlbzs7IH0KKworcHJpdmF0ZToKKyAgICBNZWRpYVN0
cmVhbVNvdXJjZUNhcGFiaWxpdGllcygpCisgICAgICAgIDogbV92aWRlb1NvdXJjZShmYWxzZSkK
KyAgICB7CisgICAgfQorCisgICAgVmVjdG9yPEF0b21pY1N0cmluZz4gbV9zb3VyY2VJZDsKKyAg
ICBWZWN0b3I8TWVkaWFTdHJlYW1Tb3VyY2VTdGF0ZXM6OlNvdXJjZVR5cGU+IG1fc291cmNlVHlw
ZTsKKyAgICBWZWN0b3I8TWVkaWFTdHJlYW1Tb3VyY2VTdGF0ZXM6OlZpZGVvRmFjaW5nTW9kZT4g
bV9mYWNpbmdNb2RlOworCisgICAgTWVkaWFTdHJlYW1Tb3VyY2VDYXBhYmlsaXR5UmFuZ2UgbV93
aWR0aDsKKyAgICBNZWRpYVN0cmVhbVNvdXJjZUNhcGFiaWxpdHlSYW5nZSBtX2hlaWdodDsKKyAg
ICBNZWRpYVN0cmVhbVNvdXJjZUNhcGFiaWxpdHlSYW5nZSBtX2ZyYW1lUmF0ZTsKKyAgICBNZWRp
YVN0cmVhbVNvdXJjZUNhcGFiaWxpdHlSYW5nZSBtX2FzcGVjdFJhdGlvOworICAgIE1lZGlhU3Ry
ZWFtU291cmNlQ2FwYWJpbGl0eVJhbmdlIG1fdm9sdW1lOworCisgICAgYm9vbCBtX3ZpZGVvU291
cmNlOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gTWVkaWFTdHJl
YW1Tb3VyY2VDYXBhYmlsaXRpZXNfaAorCisjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21lZGlhc3RyZWFtL2JsYWNrYmVycnkvTWVkaWFTdHJlYW1DZW50ZXJCbGFja0JlcnJ5
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9i
bGFja2JlcnJ5L01lZGlhU3RyZWFtQ2VudGVyQmxhY2tCZXJyeS5jcHAJKHJldmlzaW9uIDE1NzAx
NikKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2JsYWNrYmVycnkvTWVk
aWFTdHJlYW1DZW50ZXJCbGFja0JlcnJ5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzUsOCArMzUs
MTAgQEAKIAogI2luY2x1ZGUgIk1lZGlhU3RyZWFtQ2VudGVyQmxhY2tCZXJyeS5oIgogCisjaW5j
bHVkZSAiTWVkaWFTdHJlYW1DcmVhdGlvbkNsaWVudC5oIgogI2luY2x1ZGUgIk1lZGlhU3RyZWFt
RGVzY3JpcHRvci5oIgotI2luY2x1ZGUgIk1lZGlhU3RyZWFtU291cmNlc1F1ZXJ5Q2xpZW50Lmgi
CisjaW5jbHVkZSAiTWVkaWFTdHJlYW1UcmFja1NvdXJjZXNSZXF1ZXN0Q2xpZW50LmgiCisjaW5j
bHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKICNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CkBAIC03MiwzMyArNzQsNiBAQCBib29sIE1lZGlhU3RyZWFtQ2Vu
dGVyQmxhY2tCZXJyeTo6Z2V0TWVkCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi12b2lkIE1lZGlh
U3RyZWFtQ2VudGVyQmxhY2tCZXJyeTo6ZGlkU2V0TWVkaWFTdHJlYW1UcmFja0VuYWJsZWQoTWVk
aWFTdHJlYW1Tb3VyY2UqKQotewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci19Ci0KLWJvb2wgTWVk
aWFTdHJlYW1DZW50ZXJCbGFja0JlcnJ5OjpkaWRBZGRNZWRpYVN0cmVhbVRyYWNrKE1lZGlhU3Ry
ZWFtU291cmNlKikKLXsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotICAgIHJldHVybiBmYWxzZTsK
LX0KLQotYm9vbCBNZWRpYVN0cmVhbUNlbnRlckJsYWNrQmVycnk6OmRpZFJlbW92ZU1lZGlhU3Ry
ZWFtVHJhY2soTWVkaWFTdHJlYW1Tb3VyY2UqKQotewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci0g
ICAgcmV0dXJuIGZhbHNlOwotfQotCi12b2lkIE1lZGlhU3RyZWFtQ2VudGVyQmxhY2tCZXJyeTo6
ZGlkU3RvcExvY2FsTWVkaWFTdHJlYW0oTWVkaWFTdHJlYW1EZXNjcmlwdG9yKiBzdHJlYW0pCi17
Ci0gICAgZW5kTG9jYWxNZWRpYVN0cmVhbShzdHJlYW0pOwotfQotCi12b2lkIE1lZGlhU3RyZWFt
Q2VudGVyQmxhY2tCZXJyeTo6ZGlkQ3JlYXRlTWVkaWFTdHJlYW0oTWVkaWFTdHJlYW1EZXNjcmlw
dG9yKikKLXsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotfQotCiB9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCiAKICNlbmRpZiAvLyBFTkFCTEUoTUVESUFfU1RSRUFNKQpJbmRleDogU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vYmxhY2tiZXJyeS9NZWRpYVN0cmVhbUNlbnRlckJsYWNr
QmVycnkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVh
bS9ibGFja2JlcnJ5L01lZGlhU3RyZWFtQ2VudGVyQmxhY2tCZXJyeS5oCShyZXZpc2lvbiAxNTcw
MTYpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9ibGFja2JlcnJ5L01l
ZGlhU3RyZWFtQ2VudGVyQmxhY2tCZXJyeS5oCSh3b3JraW5nIGNvcHkpCkBAIC01MCwxNSArNTAs
OSBAQCBwdWJsaWM6CiAgICAgTWVkaWFTdHJlYW1DZW50ZXJCbGFja0JlcnJ5KCk7CiAgICAgfk1l
ZGlhU3RyZWFtQ2VudGVyQmxhY2tCZXJyeSgpOwogCi0gICAgLy8gTWVkaWFTdHJlYW1DZW50ZXIK
ICAgICB2aXJ0dWFsIHZvaWQgdmFsaWRhdGVSZXF1ZXN0Q29uc3RyYWludHMoUGFzc1JlZlB0cjxN
ZWRpYVN0cmVhbUNyZWF0aW9uQ2xpZW50PiwgUGFzc1JlZlB0cjxNZWRpYUNvbnN0cmFpbnRzPiBh
dWRpb0NvbnN0cmFpbnRzLCBQYXNzUmVmUHRyPE1lZGlhQ29uc3RyYWludHM+IHZpZGVvQ29uc3Ry
YWludHMpOwogICAgIHZpcnR1YWwgdm9pZCBjcmVhdGVNZWRpYVN0cmVhbShQYXNzUmVmUHRyPE1l
ZGlhU3RyZWFtQ3JlYXRpb25DbGllbnQ+LCBQYXNzUmVmUHRyPE1lZGlhQ29uc3RyYWludHM+IGF1
ZGlvQ29uc3RyYWludHMsIFBhc3NSZWZQdHI8TWVkaWFDb25zdHJhaW50cz4gdmlkZW9Db25zdHJh
aW50cyk7CiAgICAgdmlydHVhbCBib29sIGdldE1lZGlhU3RyZWFtVHJhY2tTb3VyY2VzKFBhc3NS
ZWZQdHI8TWVkaWFTdHJlYW1UcmFja1NvdXJjZXNSZXF1ZXN0Q2xpZW50PikgT1ZFUlJJREU7Ci0g
ICAgdmlydHVhbCB2b2lkIGRpZFNldE1lZGlhU3RyZWFtVHJhY2tFbmFibGVkKE1lZGlhU3RyZWFt
U291cmNlKikgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCBib29sIGRpZEFkZE1lZGlhU3RyZWFtVHJh
Y2soTWVkaWFTdHJlYW1Tb3VyY2UqKSBPVkVSUklERTsKLSAgICB2aXJ0dWFsIGJvb2wgZGlkUmVt
b3ZlTWVkaWFTdHJlYW1UcmFjayhNZWRpYVN0cmVhbVNvdXJjZSopIE9WRVJSSURFOwotICAgIHZp
cnR1YWwgdm9pZCBkaWRTdG9wTG9jYWxNZWRpYVN0cmVhbShNZWRpYVN0cmVhbURlc2NyaXB0b3Iq
KSBPVkVSUklERTsKLSAgICB2aXJ0dWFsIHZvaWQgZGlkQ3JlYXRlTWVkaWFTdHJlYW0oTWVkaWFT
dHJlYW1EZXNjcmlwdG9yKikgT1ZFUlJJREU7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvTWVk
aWFTdHJlYW1DZW50ZXJHU3RyZWFtZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21lZGlhc3RyZWFtL2dzdHJlYW1lci9NZWRpYVN0cmVhbUNlbnRlckdTdHJlYW1l
ci5jcHAJKHJldmlzaW9uIDE1NzAxNikKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlh
c3RyZWFtL2dzdHJlYW1lci9NZWRpYVN0cmVhbUNlbnRlckdTdHJlYW1lci5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTM1LDcgKzM1LDExIEBACiAKICNpbmNsdWRlICJNZWRpYVN0cmVhbUNlbnRlckdT
dHJlYW1lci5oIgogCisjaW5jbHVkZSAiTWVkaWFTdHJlYW1DcmVhdGlvbkNsaWVudC5oIgogI2lu
Y2x1ZGUgIk1lZGlhU3RyZWFtRGVzY3JpcHRvci5oIgorI2luY2x1ZGUgIk1lZGlhU3RyZWFtU291
cmNlQ2FwYWJpbGl0aWVzLmgiCisjaW5jbHVkZSAiTWVkaWFTdHJlYW1Tb3VyY2VTdGF0ZXMuaCIK
KyNpbmNsdWRlICJNZWRpYVN0cmVhbVRyYWNrU291cmNlc1JlcXVlc3RDbGllbnQuaCIKICNpbmNs
dWRlICJOb3RJbXBsZW1lbnRlZC5oIgogI2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+CiAKQEAg
LTcyLDMzICs3Niw2IEBAIGJvb2wgTWVkaWFTdHJlYW1DZW50ZXJHU3RyZWFtZXI6OmdldE1lZGkK
ICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLXZvaWQgTWVkaWFTdHJlYW1DZW50ZXJHU3RyZWFtZXI6
OmRpZFNldE1lZGlhU3RyZWFtVHJhY2tFbmFibGVkKE1lZGlhU3RyZWFtU291cmNlKikKLXsKLSAg
ICBub3RJbXBsZW1lbnRlZCgpOwotfQotCi1ib29sIE1lZGlhU3RyZWFtQ2VudGVyR1N0cmVhbWVy
OjpkaWRBZGRNZWRpYVN0cmVhbVRyYWNrKE1lZGlhU3RyZWFtU291cmNlKikKLXsKLSAgICBub3RJ
bXBsZW1lbnRlZCgpOwotICAgIHJldHVybiBmYWxzZTsKLX0KLQotYm9vbCBNZWRpYVN0cmVhbUNl
bnRlckdTdHJlYW1lcjo6ZGlkUmVtb3ZlTWVkaWFTdHJlYW1UcmFjayhNZWRpYVN0cmVhbVNvdXJj
ZSopCi17Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLSAgICByZXR1cm4gZmFsc2U7Ci19Ci0KLXZv
aWQgTWVkaWFTdHJlYW1DZW50ZXJHU3RyZWFtZXI6OmRpZFN0b3BMb2NhbE1lZGlhU3RyZWFtKE1l
ZGlhU3RyZWFtRGVzY3JpcHRvciogc3RyZWFtKQotewotICAgIGVuZExvY2FsTWVkaWFTdHJlYW0o
c3RyZWFtKTsKLX0KLQotdm9pZCBNZWRpYVN0cmVhbUNlbnRlckdTdHJlYW1lcjo6ZGlkQ3JlYXRl
TWVkaWFTdHJlYW0oTWVkaWFTdHJlYW1EZXNjcmlwdG9yKikKLXsKLSAgICBub3RJbXBsZW1lbnRl
ZCgpOwotfQotCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBFTkFCTEUoTUVE
SUFfU1RSRUFNKQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vZ3N0
cmVhbWVyL01lZGlhU3RyZWFtQ2VudGVyR1N0cmVhbWVyLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vZ3N0cmVhbWVyL01lZGlhU3RyZWFtQ2VudGVy
R1N0cmVhbWVyLmgJKHJldmlzaW9uIDE1NzAxNikKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21lZGlhc3RyZWFtL2dzdHJlYW1lci9NZWRpYVN0cmVhbUNlbnRlckdTdHJlYW1lci5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC01MCwxNSArNTAsOSBAQCBwdWJsaWM6CiAgICAgTWVkaWFTdHJlYW1DZW50
ZXJHU3RyZWFtZXIoKTsKICAgICB+TWVkaWFTdHJlYW1DZW50ZXJHU3RyZWFtZXIoKTsKIAotICAg
IC8vIE1lZGlhU3RyZWFtQ2VudGVyCiAgICAgdmlydHVhbCB2b2lkIHZhbGlkYXRlUmVxdWVzdENv
bnN0cmFpbnRzKFBhc3NSZWZQdHI8TWVkaWFTdHJlYW1DcmVhdGlvbkNsaWVudD4sIFBhc3NSZWZQ
dHI8TWVkaWFDb25zdHJhaW50cz4gYXVkaW9Db25zdHJhaW50cywgUGFzc1JlZlB0cjxNZWRpYUNv
bnN0cmFpbnRzPiB2aWRlb0NvbnN0cmFpbnRzKTsKICAgICB2aXJ0dWFsIHZvaWQgY3JlYXRlTWVk
aWFTdHJlYW0oUGFzc1JlZlB0cjxNZWRpYVN0cmVhbUNyZWF0aW9uQ2xpZW50PiwgUGFzc1JlZlB0
cjxNZWRpYUNvbnN0cmFpbnRzPiBhdWRpb0NvbnN0cmFpbnRzLCBQYXNzUmVmUHRyPE1lZGlhQ29u
c3RyYWludHM+IHZpZGVvQ29uc3RyYWludHMpOwogICAgIHZpcnR1YWwgYm9vbCBnZXRNZWRpYVN0
cmVhbVRyYWNrU291cmNlcyhQYXNzUmVmUHRyPE1lZGlhU3RyZWFtVHJhY2tTb3VyY2VzUmVxdWVz
dENsaWVudD4pIE9WRVJSSURFOwotICAgIHZpcnR1YWwgdm9pZCBkaWRTZXRNZWRpYVN0cmVhbVRy
YWNrRW5hYmxlZChNZWRpYVN0cmVhbVNvdXJjZSopIE9WRVJSSURFOwotICAgIHZpcnR1YWwgYm9v
bCBkaWRBZGRNZWRpYVN0cmVhbVRyYWNrKE1lZGlhU3RyZWFtU291cmNlKikgT1ZFUlJJREU7Ci0g
ICAgdmlydHVhbCBib29sIGRpZFJlbW92ZU1lZGlhU3RyZWFtVHJhY2soTWVkaWFTdHJlYW1Tb3Vy
Y2UqKSBPVkVSUklERTsKLSAgICB2aXJ0dWFsIHZvaWQgZGlkU3RvcExvY2FsTWVkaWFTdHJlYW0o
TWVkaWFTdHJlYW1EZXNjcmlwdG9yKikgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCB2b2lkIGRpZENy
ZWF0ZU1lZGlhU3RyZWFtKE1lZGlhU3RyZWFtRGVzY3JpcHRvciopIE9WRVJSSURFOwogfTsKIAog
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVk
aWFzdHJlYW0vbWFjL01lZGlhU3RyZWFtQ2VudGVyTWFjLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvTWVkaWFTdHJlYW1DZW50ZXJNYWMu
Y3BwCShyZXZpc2lvbiAxNTcwMTYpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0
cmVhbS9tYWMvTWVkaWFTdHJlYW1DZW50ZXJNYWMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03Mywz
MyArNzMsNiBAQCBib29sIE1lZGlhU3RyZWFtQ2VudGVyTWFjOjpnZXRNZWRpYVN0cmVhCiAgICAg
cmV0dXJuIGZhbHNlOwogfQogCi12b2lkIE1lZGlhU3RyZWFtQ2VudGVyTWFjOjpkaWRTZXRNZWRp
YVN0cmVhbVRyYWNrRW5hYmxlZChNZWRpYVN0cmVhbVNvdXJjZSopCi17Ci0gICAgbm90SW1wbGVt
ZW50ZWQoKTsKLX0KLQotYm9vbCBNZWRpYVN0cmVhbUNlbnRlck1hYzo6ZGlkQWRkTWVkaWFTdHJl
YW1UcmFjayhNZWRpYVN0cmVhbVNvdXJjZSopCi17Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLSAg
ICByZXR1cm4gZmFsc2U7Ci19Ci0KLWJvb2wgTWVkaWFTdHJlYW1DZW50ZXJNYWM6OmRpZFJlbW92
ZU1lZGlhU3RyZWFtVHJhY2soTWVkaWFTdHJlYW1Tb3VyY2UqKQotewotICAgIG5vdEltcGxlbWVu
dGVkKCk7Ci0gICAgcmV0dXJuIGZhbHNlOwotfQotCi12b2lkIE1lZGlhU3RyZWFtQ2VudGVyTWFj
OjpkaWRTdG9wTG9jYWxNZWRpYVN0cmVhbShNZWRpYVN0cmVhbURlc2NyaXB0b3IqIHN0cmVhbSkK
LXsKLSAgICBlbmRMb2NhbE1lZGlhU3RyZWFtKHN0cmVhbSk7Ci19Ci0KLXZvaWQgTWVkaWFTdHJl
YW1DZW50ZXJNYWM6OmRpZENyZWF0ZU1lZGlhU3RyZWFtKE1lZGlhU3RyZWFtRGVzY3JpcHRvciop
Ci17Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLX0KLQogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQog
CiAjZW5kaWYgLy8gRU5BQkxFKE1FRElBX1NUUkVBTSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21lZGlhc3RyZWFtL21hYy9NZWRpYVN0cmVhbUNlbnRlck1hYy5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9NZWRpYVN0cmVhbUNl
bnRlck1hYy5oCShyZXZpc2lvbiAxNTcwMTYpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
ZWRpYXN0cmVhbS9tYWMvTWVkaWFTdHJlYW1DZW50ZXJNYWMuaAkod29ya2luZyBjb3B5KQpAQCAt
MzUsMjkgKzM1LDIwIEBACiAKICNpbmNsdWRlICJNZWRpYVN0cmVhbUNlbnRlci5oIgogCisjaW5j
bHVkZSAiTWVkaWFTdHJlYW1Tb3VyY2UuaCIKICNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgog
I2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
LWNsYXNzIE1lZGlhU3RyZWFtRGVzY3JpcHRvcjsKLWNsYXNzIE1lZGlhU3RyZWFtU291cmNlOwot
Y2xhc3MgTWVkaWFTdHJlYW1Tb3VyY2VzUXVlcnlDbGllbnQ7Ci0KIGNsYXNzIE1lZGlhU3RyZWFt
Q2VudGVyTWFjIEZJTkFMIDogcHVibGljIE1lZGlhU3RyZWFtQ2VudGVyIHsKIHB1YmxpYzoKICAg
ICBNZWRpYVN0cmVhbUNlbnRlck1hYygpOwogICAgIH5NZWRpYVN0cmVhbUNlbnRlck1hYygpOwog
Ci0gICAgLy8gTWVkaWFTdHJlYW1DZW50ZXIKICAgICB2aXJ0dWFsIHZvaWQgdmFsaWRhdGVSZXF1
ZXN0Q29uc3RyYWludHMoUGFzc1JlZlB0cjxNZWRpYVN0cmVhbUNyZWF0aW9uQ2xpZW50PiwgUGFz
c1JlZlB0cjxNZWRpYUNvbnN0cmFpbnRzPiBhdWRpb0NvbnN0cmFpbnRzLCBQYXNzUmVmUHRyPE1l
ZGlhQ29uc3RyYWludHM+IHZpZGVvQ29uc3RyYWludHMpOwogICAgIHZpcnR1YWwgdm9pZCBjcmVh
dGVNZWRpYVN0cmVhbShQYXNzUmVmUHRyPE1lZGlhU3RyZWFtQ3JlYXRpb25DbGllbnQ+LCBQYXNz
UmVmUHRyPE1lZGlhQ29uc3RyYWludHM+IGF1ZGlvQ29uc3RyYWludHMsIFBhc3NSZWZQdHI8TWVk
aWFDb25zdHJhaW50cz4gdmlkZW9Db25zdHJhaW50cyk7CiAgICAgdmlydHVhbCBib29sIGdldE1l
ZGlhU3RyZWFtVHJhY2tTb3VyY2VzKFBhc3NSZWZQdHI8TWVkaWFTdHJlYW1UcmFja1NvdXJjZXNS
ZXF1ZXN0Q2xpZW50PikgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCB2b2lkIGRpZFNldE1lZGlhU3Ry
ZWFtVHJhY2tFbmFibGVkKE1lZGlhU3RyZWFtU291cmNlKikgT1ZFUlJJREU7Ci0gICAgdmlydHVh
bCBib29sIGRpZEFkZE1lZGlhU3RyZWFtVHJhY2soTWVkaWFTdHJlYW1Tb3VyY2UqKSBPVkVSUklE
RTsKLSAgICB2aXJ0dWFsIGJvb2wgZGlkUmVtb3ZlTWVkaWFTdHJlYW1UcmFjayhNZWRpYVN0cmVh
bVNvdXJjZSopIE9WRVJSSURFOwotICAgIHZpcnR1YWwgdm9pZCBkaWRTdG9wTG9jYWxNZWRpYVN0
cmVhbShNZWRpYVN0cmVhbURlc2NyaXB0b3IqKSBPVkVSUklERTsKLSAgICB2aXJ0dWFsIHZvaWQg
ZGlkQ3JlYXRlTWVkaWFTdHJlYW0oTWVkaWFTdHJlYW1EZXNjcmlwdG9yKikgT1ZFUlJJREU7CiB9
OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tb2NrL01vY2tNZWRpYVN0cmVhbUNlbnRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbW9jay9Nb2NrTWVkaWFTdHJlYW1DZW50ZXIuY3BwCShyZXZpc2lvbiAx
NTcwMTYpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01vY2tNZWRpYVN0cmVhbUNl
bnRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMyLDEyICszMiw5NyBAQAogI2luY2x1ZGUgIk1l
ZGlhU3RyZWFtLmgiCiAjaW5jbHVkZSAiTWVkaWFTdHJlYW1DcmVhdGlvbkNsaWVudC5oIgogI2lu
Y2x1ZGUgIk1lZGlhU3RyZWFtRGVzY3JpcHRvci5oIgorI2luY2x1ZGUgIk1lZGlhU3RyZWFtU291
cmNlLmgiCisjaW5jbHVkZSAiTWVkaWFTdHJlYW1Tb3VyY2VDYXBhYmlsaXRpZXMuaCIKICNpbmNs
dWRlICJNZWRpYVN0cmVhbVRyYWNrLmgiCiAjaW5jbHVkZSAiTWVkaWFTdHJlYW1UcmFja1NvdXJj
ZXNSZXF1ZXN0Q2xpZW50LmgiCi0jaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKKyNpbmNsdWRl
IDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitjbGFzcyBN
b2NrU291cmNlIDogcHVibGljIE1lZGlhU3RyZWFtU291cmNlIHsKK3B1YmxpYzoKKyAgICBNb2Nr
U291cmNlKGNvbnN0IEF0b21pY1N0cmluZyYgaWQsIGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSwg
TWVkaWFTdHJlYW1Tb3VyY2U6OlR5cGUgdHlwZSkKKyAgICAgICAgOiBNZWRpYVN0cmVhbVNvdXJj
ZShpZCwgdHlwZSwgbmFtZSkKKyAgICB7CisgICAgfQorCisgICAgdmlydHVhbCB+TW9ja1NvdXJj
ZSgpIHsgfQorCisgICAgdmlydHVhbCBQYXNzUmVmUHRyPE1lZGlhU3RyZWFtU291cmNlQ2FwYWJp
bGl0aWVzPiBjYXBhYmlsaXRpZXMoKSBjb25zdCB7IHJldHVybiBtX2NhcGFiaWxpdGllczsgfQor
ICAgIHZpcnR1YWwgY29uc3QgTWVkaWFTdHJlYW1Tb3VyY2VTdGF0ZXMmIHN0YXRlcygpIHsgcmV0
dXJuIG1fY3VycmVudFN0YXRlczsgfQorCisgICAgUmVmUHRyPE1lZGlhU3RyZWFtU291cmNlQ2Fw
YWJpbGl0aWVzPiBtX2NhcGFiaWxpdGllczsKKyAgICBNZWRpYVN0cmVhbVNvdXJjZVN0YXRlcyBt
X2N1cnJlbnRTdGF0ZXM7Cit9OworICAgIAordHlwZWRlZiBIYXNoTWFwPFN0cmluZywgUmVmUHRy
PE1vY2tTb3VyY2U+PiBNb2NrU291cmNlTWFwOworCitzdGF0aWMgTW9ja1NvdXJjZU1hcCYgbW9j
a1NvdXJjZU1hcCgpCit7CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChNb2NrU291cmNlTWFwLCBt
b2NrU291cmNlTWFwLCAoKSk7CisgICAgcmV0dXJuIG1vY2tTb3VyY2VNYXA7Cit9CisKK3N0YXRp
YyBjb25zdCBBdG9taWNTdHJpbmcmIG1vY2tBdWRpb1NvdXJjZUlEKCkKK3sKKyAgICBzdGF0aWMg
TmV2ZXJEZXN0cm95ZWQ8QXRvbWljU3RyaW5nPiBpZCgiMjM5YzI0YjEtMmIxNS0xMWUzLTgyMjQt
MDgwMDIwMGM5YTY2IiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CisgICAg
cmV0dXJuIGlkOworfQorCitzdGF0aWMgY29uc3QgQXRvbWljU3RyaW5nJiBtb2NrVmlkZW9Tb3Vy
Y2VJRCgpCit7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEF0b21pY1N0cmluZz4gaWQoIjIz
OWMyNGIwLTJiMTUtMTFlMy04MjI0LTA4MDAyMDBjOWE2NiIsIEF0b21pY1N0cmluZzo6Q29uc3Ry
dWN0RnJvbUxpdGVyYWwpOworICAgIHJldHVybiBpZDsKK30KKworc3RhdGljIHZvaWQgaW5pdGlh
bGl6ZU1vY2tTb3VyY2VzKCkKK3sKKyAgICBSZWZQdHI8TW9ja1NvdXJjZT4gbW9ja1NvdXJjZTEg
PSBhZG9wdFJlZihuZXcgTW9ja1NvdXJjZShtb2NrVmlkZW9Tb3VyY2VJRCgpLCAiTW9jayB2aWRl
byBkZXZpY2UiLCBNZWRpYVN0cmVhbVNvdXJjZTo6VmlkZW8pKTsKKyAgICBtb2NrU291cmNlMS0+
bV9jYXBhYmlsaXRpZXMgPSBNZWRpYVN0cmVhbVNvdXJjZUNhcGFiaWxpdGllczo6Y3JlYXRlKCk7
CisgICAgbW9ja1NvdXJjZTEtPm1fY2FwYWJpbGl0aWVzLT5zZXRTb3VyY2VJZChtb2NrU291cmNl
MS0+aWQoKSk7CisgICAgbW9ja1NvdXJjZTEtPm1fY2FwYWJpbGl0aWVzLT5hZGRTb3VyY2VUeXBl
KE1lZGlhU3RyZWFtU291cmNlU3RhdGVzOjpDYW1lcmEpOworICAgIG1vY2tTb3VyY2UxLT5tX2Nh
cGFiaWxpdGllcy0+YWRkU291cmNlVHlwZShNZWRpYVN0cmVhbVNvdXJjZVN0YXRlczo6TWljcm9w
aG9uZSk7CisgICAgbW9ja1NvdXJjZTEtPm1fY2FwYWJpbGl0aWVzLT5hZGRGYWNpbmdNb2RlKE1l
ZGlhU3RyZWFtU291cmNlU3RhdGVzOjpVc2VyKTsKKyAgICBtb2NrU291cmNlMS0+bV9jYXBhYmls
aXRpZXMtPmFkZEZhY2luZ01vZGUoTWVkaWFTdHJlYW1Tb3VyY2VTdGF0ZXM6OkVudmlyb25tZW50
KTsKKyAgICBtb2NrU291cmNlMS0+bV9jYXBhYmlsaXRpZXMtPnNldFdpZHRoUmFuZ2UoTWVkaWFT
dHJlYW1Tb3VyY2VDYXBhYmlsaXR5UmFuZ2UoMzIwVUwsIDE5MjBVTCwgdHJ1ZSkpOworICAgIG1v
Y2tTb3VyY2UxLT5tX2NhcGFiaWxpdGllcy0+c2V0SGVpZ2h0UmFuZ2UoTWVkaWFTdHJlYW1Tb3Vy
Y2VDYXBhYmlsaXR5UmFuZ2UoMjQwVUwsIDEwODBVTCwgdHJ1ZSkpOworICAgIG1vY2tTb3VyY2Ux
LT5tX2NhcGFiaWxpdGllcy0+c2V0RnJhbWVSYXRlUmFuZ2UoTWVkaWFTdHJlYW1Tb3VyY2VDYXBh
YmlsaXR5UmFuZ2UoMTUuMGYsIDYwLjBmLCB0cnVlKSk7CisgICAgbW9ja1NvdXJjZTEtPm1fY2Fw
YWJpbGl0aWVzLT5zZXRBc3BlY3RSYXRpb1JhbmdlKE1lZGlhU3RyZWFtU291cmNlQ2FwYWJpbGl0
eVJhbmdlKDQgLyAzLjBmLCAxNiAvIDkuMGYsIHRydWUpKTsKKyAgICBtb2NrU291cmNlMS0+bV9j
YXBhYmlsaXRpZXMtPnNldFZvbHVtZVJhbmdlKE1lZGlhU3RyZWFtU291cmNlQ2FwYWJpbGl0eVJh
bmdlKDEwVUwsIDkwVUwsIHRydWUpKTsKKworICAgIG1vY2tTb3VyY2UxLT5tX2N1cnJlbnRTdGF0
ZXMuc291cmNlVHlwZSA9IE1lZGlhU3RyZWFtU291cmNlU3RhdGVzOjpDYW1lcmE7CisgICAgbW9j
a1NvdXJjZTEtPm1fY3VycmVudFN0YXRlcy5zb3VyY2VJZCA9IG1vY2tTb3VyY2UxLT5pZCgpOwor
ICAgIG1vY2tTb3VyY2UxLT5tX2N1cnJlbnRTdGF0ZXMuZmFjaW5nTW9kZSA9IE1lZGlhU3RyZWFt
U291cmNlU3RhdGVzOjpVc2VyOworICAgIG1vY2tTb3VyY2UxLT5tX2N1cnJlbnRTdGF0ZXMud2lk
dGggPSAxOTIwOworICAgIG1vY2tTb3VyY2UxLT5tX2N1cnJlbnRTdGF0ZXMuaGVpZ2h0ID0gMTA4
MDsKKyAgICBtb2NrU291cmNlMS0+bV9jdXJyZW50U3RhdGVzLmZyYW1lUmF0ZSA9IDMwOworICAg
IG1vY2tTb3VyY2UxLT5tX2N1cnJlbnRTdGF0ZXMuYXNwZWN0UmF0aW8gPSAxNiAvIDkuMGY7Cisg
ICAgbW9ja1NvdXJjZTEtPm1fY3VycmVudFN0YXRlcy52b2x1bWUgPSA3MDsKKyAgICBtb2NrU291
cmNlTWFwKCkuYWRkKG1vY2tTb3VyY2UxLT5pZCgpLCBtb2NrU291cmNlMS5yZWxlYXNlKCkpOwor
CisgICAgUmVmUHRyPE1vY2tTb3VyY2U+IG1vY2tTb3VyY2UyID0gYWRvcHRSZWYobmV3IE1vY2tT
b3VyY2UobW9ja0F1ZGlvU291cmNlSUQoKSwgIk1vY2sgYXVkaW8gZGV2aWNlIiwgTWVkaWFTdHJl
YW1Tb3VyY2U6OkF1ZGlvKSk7CisgICAgbW9ja1NvdXJjZTItPm1fY2FwYWJpbGl0aWVzID0gTWVk
aWFTdHJlYW1Tb3VyY2VDYXBhYmlsaXRpZXM6OmNyZWF0ZSgpOworICAgIG1vY2tTb3VyY2UyLT5t
X2NhcGFiaWxpdGllcy0+c2V0U291cmNlSWQobW9ja1NvdXJjZTItPmlkKCkpOworICAgIG1vY2tT
b3VyY2UyLT5tX2NhcGFiaWxpdGllcy0+c2V0Vm9sdW1lUmFuZ2UoTWVkaWFTdHJlYW1Tb3VyY2VD
YXBhYmlsaXR5UmFuZ2UoMFVMLCAxMDBVTCwgdHJ1ZSkpOworCisgICAgbW9ja1NvdXJjZTItPm1f
Y3VycmVudFN0YXRlcy5zb3VyY2VUeXBlID0gTWVkaWFTdHJlYW1Tb3VyY2VTdGF0ZXM6Ok1pY3Jv
cGhvbmU7CisgICAgbW9ja1NvdXJjZTItPm1fY3VycmVudFN0YXRlcy5zb3VyY2VJZCA9IG1vY2tT
b3VyY2UyLT5pZCgpOworICAgIG1vY2tTb3VyY2UyLT5tX2N1cnJlbnRTdGF0ZXMudm9sdW1lID0g
NTA7CisgICAgbW9ja1NvdXJjZU1hcCgpLmFkZChtb2NrU291cmNlMi0+aWQoKSwgbW9ja1NvdXJj
ZTIucmVsZWFzZSgpKTsKK30KKwordm9pZCBNb2NrTWVkaWFTdHJlYW1DZW50ZXI6OnJlZ2lzdGVy
TW9ja01lZGlhU3RyZWFtQ2VudGVyKCkKK3sKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKE1vY2tN
ZWRpYVN0cmVhbUNlbnRlciwgY2VudGVyLCAoKSk7CisgICAgc3RhdGljIGJvb2wgcmVnaXN0ZXJl
ZCA9IGZhbHNlOworICAgIGlmICghcmVnaXN0ZXJlZCkgeworICAgICAgICByZWdpc3RlcmVkID0g
dHJ1ZTsKKyAgICAgICAgTWVkaWFTdHJlYW1DZW50ZXI6OnNldFNoYXJlZFN0cmVhbUNlbnRlcigm
Y2VudGVyKTsKKyAgICAgICAgaW5pdGlhbGl6ZU1vY2tTb3VyY2VzKCk7CisgICAgfQorfQorCiBz
dGF0aWMgYm9vbCBpc1N1cHBvcnRlZE1vY2tDb25zdHJhaW50KGNvbnN0IFN0cmluZyYgY29uc3Ry
YWludE5hbWUpCiB7CiAgICAgcmV0dXJuIG5vdEZvdW5kICE9IGNvbnN0cmFpbnROYW1lLmZpbmQo
Il9hbmRfc3VwcG9ydGVkXyIpOwpAQCAtNzUsMTYgKzE2MCw2IEBAIHN0YXRpYyBTdHJpbmcgdmVy
aWZ5Q29uc3RyYWludHMoTWVkaWFDb24KICAgICByZXR1cm4gZW1wdHlTdHJpbmcoKTsKIH0KIAot
dm9pZCBNb2NrTWVkaWFTdHJlYW1DZW50ZXI6OnJlZ2lzdGVyTW9ja01lZGlhU3RyZWFtQ2VudGVy
KCkKLXsKLSAgICBERUZJTkVfU1RBVElDX0xPQ0FMKE1vY2tNZWRpYVN0cmVhbUNlbnRlciwgY2Vu
dGVyLCAoKSk7Ci0gICAgc3RhdGljIGJvb2wgcmVnaXN0ZXJlZCA9IGZhbHNlOwotICAgIGlmICgh
cmVnaXN0ZXJlZCkgewotICAgICAgICByZWdpc3RlcmVkID0gdHJ1ZTsKLSAgICAgICAgTWVkaWFT
dHJlYW1DZW50ZXI6OnNldFNoYXJlZFN0cmVhbUNlbnRlcigmY2VudGVyKTsKLSAgICB9Ci19Ci0K
IHZvaWQgTW9ja01lZGlhU3RyZWFtQ2VudGVyOjp2YWxpZGF0ZVJlcXVlc3RDb25zdHJhaW50cyhQ
YXNzUmVmUHRyPE1lZGlhU3RyZWFtQ3JlYXRpb25DbGllbnQ+IHBycFF1ZXJ5Q2xpZW50LCBQYXNz
UmVmUHRyPE1lZGlhQ29uc3RyYWludHM+IGF1ZGlvQ29uc3RyYWludHMsIFBhc3NSZWZQdHI8TWVk
aWFDb25zdHJhaW50cz4gdmlkZW9Db25zdHJhaW50cykKIHsKICAgICBSZWZQdHI8TWVkaWFTdHJl
YW1DcmVhdGlvbkNsaWVudD4gY2xpZW50ID0gcHJwUXVlcnlDbGllbnQ7CkBAIC0xMTgsNiArMTkz
LDcgQEAgdm9pZCBNb2NrTWVkaWFTdHJlYW1DZW50ZXI6OmNyZWF0ZU1lZGlhUwogICAgIAogICAg
IFZlY3RvcjxSZWZQdHI8TWVkaWFTdHJlYW1Tb3VyY2U+PiBhdWRpb1NvdXJjZXM7CiAgICAgVmVj
dG9yPFJlZlB0cjxNZWRpYVN0cmVhbVNvdXJjZT4+IHZpZGVvU291cmNlczsKKyAgICBNb2NrU291
cmNlTWFwJiBtYXAgPSBtb2NrU291cmNlTWFwKCk7CiAKICAgICBpZiAoYXVkaW9Db25zdHJhaW50
cykgewogICAgICAgICBTdHJpbmcgaW52YWxpZFF1ZXJ5ID0gdmVyaWZ5Q29uc3RyYWludHMoYXVk
aW9Db25zdHJhaW50cy5nZXQoKSk7CkBAIC0xMjcsNyArMjAzLDExIEBAIHZvaWQgTW9ja01lZGlh
U3RyZWFtQ2VudGVyOjpjcmVhdGVNZWRpYVMKICAgICAgICAgfQogCiAgICAgICAgIGlmIChhdWRp
b0NvbnN0cmFpbnRzKSB7Ci0gICAgICAgICAgICBSZWZQdHI8TWVkaWFTdHJlYW1Tb3VyY2U+IGF1
ZGlvU291cmNlID0gTWVkaWFTdHJlYW1Tb3VyY2U6OmNyZWF0ZShlbXB0eVN0cmluZygpLCBNZWRp
YVN0cmVhbVNvdXJjZTo6QXVkaW8sICJNb2NrIGF1ZGlvIGRldmljZSIpOworICAgICAgICAgICAg
TW9ja1NvdXJjZU1hcDo6aXRlcmF0b3IgaXQgPSBtYXAuZmluZChtb2NrQXVkaW9Tb3VyY2VJRCgp
KTsKKyAgICAgICAgICAgIEFTU0VSVChpdCAhPSBtYXAuZW5kKCkpOworCisgICAgICAgICAgICBS
ZWZQdHI8TWVkaWFTdHJlYW1Tb3VyY2U+IGF1ZGlvU291cmNlID0gaXQtPnZhbHVlOworICAgICAg
ICAgICAgYXVkaW9Tb3VyY2UtPnJlc2V0KCk7CiAgICAgICAgICAgICBhdWRpb1NvdXJjZS0+c2V0
UmVhZHlTdGF0ZShNZWRpYVN0cmVhbVNvdXJjZTo6TGl2ZSk7CiAgICAgICAgICAgICBhdWRpb1Nv
dXJjZXMuYXBwZW5kKGF1ZGlvU291cmNlLnJlbGVhc2UoKSk7CiAgICAgICAgIH0KQEAgLTE0MSw3
ICsyMjEsMTEgQEAgdm9pZCBNb2NrTWVkaWFTdHJlYW1DZW50ZXI6OmNyZWF0ZU1lZGlhUwogICAg
ICAgICB9CiAKICAgICAgICAgaWYgKHZpZGVvQ29uc3RyYWludHMpIHsKLSAgICAgICAgICAgIFJl
ZlB0cjxNZWRpYVN0cmVhbVNvdXJjZT4gdmlkZW9Tb3VyY2UgPSBNZWRpYVN0cmVhbVNvdXJjZTo6
Y3JlYXRlKGVtcHR5U3RyaW5nKCksIE1lZGlhU3RyZWFtU291cmNlOjpWaWRlbywgIk1vY2sgdmlk
ZW8gZGV2aWNlIik7CisgICAgICAgICAgICBNb2NrU291cmNlTWFwOjppdGVyYXRvciBpdCA9IG1h
cC5maW5kKG1vY2tWaWRlb1NvdXJjZUlEKCkpOworICAgICAgICAgICAgQVNTRVJUKGl0ICE9IG1h
cC5lbmQoKSk7CisKKyAgICAgICAgICAgIFJlZlB0cjxNZWRpYVN0cmVhbVNvdXJjZT4gdmlkZW9T
b3VyY2UgPSBpdC0+dmFsdWU7CisgICAgICAgICAgICB2aWRlb1NvdXJjZS0+cmVzZXQoKTsKICAg
ICAgICAgICAgIHZpZGVvU291cmNlLT5zZXRSZWFkeVN0YXRlKE1lZGlhU3RyZWFtU291cmNlOjpM
aXZlKTsKICAgICAgICAgICAgIHZpZGVvU291cmNlcy5hcHBlbmQodmlkZW9Tb3VyY2UucmVsZWFz
ZSgpKTsKICAgICAgICAgfQpAQCAtMTUzLDM5ICsyMzcsMjAgQEAgdm9pZCBNb2NrTWVkaWFTdHJl
YW1DZW50ZXI6OmNyZWF0ZU1lZGlhUwogYm9vbCBNb2NrTWVkaWFTdHJlYW1DZW50ZXI6OmdldE1l
ZGlhU3RyZWFtVHJhY2tTb3VyY2VzKFBhc3NSZWZQdHI8TWVkaWFTdHJlYW1UcmFja1NvdXJjZXNS
ZXF1ZXN0Q2xpZW50PiBwcnBDbGllbnQpCiB7CiAgICAgUmVmUHRyPE1lZGlhU3RyZWFtVHJhY2tT
b3VyY2VzUmVxdWVzdENsaWVudD4gcmVxdWVzdENsaWVudCA9IHBycENsaWVudDsKLSAgICBWZWN0
b3I8UmVmUHRyPFRyYWNrU291cmNlSW5mbz4+IHNvdXJjZXMoMik7CisgICAgVmVjdG9yPFJlZlB0
cjxUcmFja1NvdXJjZUluZm8+PiBzb3VyY2VzOwogCi0gICAgc291cmNlc1swXSA9IFRyYWNrU291
cmNlSW5mbzo6Y3JlYXRlKCJNb2NrX2F1ZGlvX2RldmljZV9JRCIsIFRyYWNrU291cmNlSW5mbzo6
QXVkaW8sICJNb2NrIGF1ZGlvIGRldmljZSIpOwotICAgIHNvdXJjZXNbMV0gPSBUcmFja1NvdXJj
ZUluZm86OmNyZWF0ZSgiTW9ja192aWRlb19kZXZpY2VfSUQiLCBUcmFja1NvdXJjZUluZm86OlZp
ZGVvLCAiTW9jayB2aWRlbyBkZXZpY2UiKTsKLQotICAgIHJlcXVlc3RDbGllbnQtPmRpZENvbXBs
ZXRlUmVxdWVzdChzb3VyY2VzKTsKLSAgICByZXR1cm4gdHJ1ZTsKLX0KKyAgICBNb2NrU291cmNl
TWFwJiBtYXAgPSBtb2NrU291cmNlTWFwKCk7CisgICAgTW9ja1NvdXJjZU1hcDo6aXRlcmF0b3Ig
ZW5kID0gbWFwLmVuZCgpOworICAgIGZvciAoTW9ja1NvdXJjZU1hcDo6aXRlcmF0b3IgaXQgPSBt
YXAuYmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KSB7CisgICAgICAgIE1vY2tTb3VyY2UqIHNvdXJj
ZSA9IGl0LT52YWx1ZS5nZXQoKTsKIAotdm9pZCBNb2NrTWVkaWFTdHJlYW1DZW50ZXI6OmRpZFNl
dE1lZGlhU3RyZWFtVHJhY2tFbmFibGVkKE1lZGlhU3RyZWFtU291cmNlKiBzb3VyY2UpCi17Ci0g
ICAgc291cmNlLT5zZXRSZWFkeVN0YXRlKE1lZGlhU3RyZWFtU291cmNlOjpMaXZlKTsKLX0KLQot
Ym9vbCBNb2NrTWVkaWFTdHJlYW1DZW50ZXI6OmRpZEFkZE1lZGlhU3RyZWFtVHJhY2soTWVkaWFT
dHJlYW1Tb3VyY2UqKQotewotICAgIHJldHVybiB0cnVlOwotfQorICAgICAgICBzb3VyY2VzWzBd
ID0gVHJhY2tTb3VyY2VJbmZvOjpjcmVhdGUoc291cmNlLT5pZCgpLCBzb3VyY2UtPnR5cGUoKSA9
PSBNZWRpYVN0cmVhbVNvdXJjZTo6VmlkZW8gPyBUcmFja1NvdXJjZUluZm86OlZpZGVvIDogVHJh
Y2tTb3VyY2VJbmZvOjpBdWRpbywgc291cmNlLT5uYW1lKCkpOworICAgIH0KIAotYm9vbCBNb2Nr
TWVkaWFTdHJlYW1DZW50ZXI6OmRpZFJlbW92ZU1lZGlhU3RyZWFtVHJhY2soTWVkaWFTdHJlYW1T
b3VyY2UqKQoteworICAgIHJlcXVlc3RDbGllbnQtPmRpZENvbXBsZXRlUmVxdWVzdChzb3VyY2Vz
KTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotdm9pZCBNb2NrTWVkaWFTdHJlYW1DZW50ZXI6OmRp
ZFN0b3BMb2NhbE1lZGlhU3RyZWFtKE1lZGlhU3RyZWFtRGVzY3JpcHRvciogc3RyZWFtKQotewot
ICAgIGVuZExvY2FsTWVkaWFTdHJlYW0oc3RyZWFtKTsKLX0KLQotdm9pZCBNb2NrTWVkaWFTdHJl
YW1DZW50ZXI6OmRpZENyZWF0ZU1lZGlhU3RyZWFtKE1lZGlhU3RyZWFtRGVzY3JpcHRvciopCi17
Ci19Ci0KIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEVOQUJMRShNRURJQV9T
VFJFQU0pCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01vY2tNZWRpYVN0cmVh
bUNlbnRlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTW9j
a01lZGlhU3RyZWFtQ2VudGVyLmgJKHJldmlzaW9uIDE1NzAxNikKKysrIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21vY2svTW9ja01lZGlhU3RyZWFtQ2VudGVyLmgJKHdvcmtpbmcgY29weSkKQEAg
LTQwLDExICs0MCw2IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgdmFsaWRhdGVSZXF1ZXN0
Q29uc3RyYWludHMoUGFzc1JlZlB0cjxNZWRpYVN0cmVhbUNyZWF0aW9uQ2xpZW50PiwgUGFzc1Jl
ZlB0cjxNZWRpYUNvbnN0cmFpbnRzPiBhdWRpb0NvbnN0cmFpbnRzLCBQYXNzUmVmUHRyPE1lZGlh
Q29uc3RyYWludHM+IHZpZGVvQ29uc3RyYWludHMpOwogICAgIHZpcnR1YWwgdm9pZCBjcmVhdGVN
ZWRpYVN0cmVhbShQYXNzUmVmUHRyPE1lZGlhU3RyZWFtQ3JlYXRpb25DbGllbnQ+LCBQYXNzUmVm
UHRyPE1lZGlhQ29uc3RyYWludHM+IGF1ZGlvQ29uc3RyYWludHMsIFBhc3NSZWZQdHI8TWVkaWFD
b25zdHJhaW50cz4gdmlkZW9Db25zdHJhaW50cyk7CiAgICAgdmlydHVhbCBib29sIGdldE1lZGlh
U3RyZWFtVHJhY2tTb3VyY2VzKFBhc3NSZWZQdHI8TWVkaWFTdHJlYW1UcmFja1NvdXJjZXNSZXF1
ZXN0Q2xpZW50PikgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCB2b2lkIGRpZFNldE1lZGlhU3RyZWFt
VHJhY2tFbmFibGVkKE1lZGlhU3RyZWFtU291cmNlKikgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCBi
b29sIGRpZEFkZE1lZGlhU3RyZWFtVHJhY2soTWVkaWFTdHJlYW1Tb3VyY2UqKSBPVkVSUklERTsK
LSAgICB2aXJ0dWFsIGJvb2wgZGlkUmVtb3ZlTWVkaWFTdHJlYW1UcmFjayhNZWRpYVN0cmVhbVNv
dXJjZSopIE9WRVJSSURFOwotICAgIHZpcnR1YWwgdm9pZCBkaWRTdG9wTG9jYWxNZWRpYVN0cmVh
bShNZWRpYVN0cmVhbURlc2NyaXB0b3IqKSBPVkVSUklERTsKLSAgICB2aXJ0dWFsIHZvaWQgZGlk
Q3JlYXRlTWVkaWFTdHJlYW0oTWVkaWFTdHJlYW1EZXNjcmlwdG9yKikgT1ZFUlJJREU7CiAKIHBy
aXZhdGU6CiAgICAgTW9ja01lZGlhU3RyZWFtQ2VudGVyKCkgeyB9CkluZGV4OiBTb3VyY2UvV2Vi
S2l0Mi9Db25maWd1cmF0aW9ucy9GZWF0dXJlRGVmaW5lcy54Y2NvbmZpZwo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0Mi9Db25maWd1cmF0aW9ucy9GZWF0dXJlRGVmaW5lcy54Y2NvbmZpZwko
cmV2aXNpb24gMTU3MDE2KQorKysgU291cmNlL1dlYktpdDIvQ29uZmlndXJhdGlvbnMvRmVhdHVy
ZURlZmluZXMueGNjb25maWcJKHdvcmtpbmcgY29weSkKQEAgLTgyLDYgKzgyLDcgQEAgRU5BQkxF
X0VOQ1JZUFRFRF9NRURJQV9WMl9tYWNvc3ggPSAkKEVOQQogRU5BQkxFX0VOQ1JZUFRFRF9NRURJ
QV9WMl9tYWNvc3hfMTA3MCA9IDsKIEVOQUJMRV9FTkNSWVBURURfTUVESUFfVjJfbWFjb3N4XzEw
ODAgPSA7CiBFTkFCTEVfRU5DUllQVEVEX01FRElBX1YyX21hY29zeF8xMDkwID0gRU5BQkxFX0VO
Q1JZUFRFRF9NRURJQV9WMjsKK0VOQUJMRV9NRURJQV9TVFJFQU0gPSBFTkFCTEVfTUVESUFfU1RS
RUFNOwogRU5BQkxFX0ZJTFRFUlMgPSBFTkFCTEVfRklMVEVSUzsKIEVOQUJMRV9GT05UX0xPQURf
RVZFTlRTID0gOwogRU5BQkxFX0ZVTExTQ1JFRU5fQVBJID0gJChFTkFCTEVfRlVMTFNDUkVFTl9B
UElfJChQTEFURk9STV9OQU1FKSk7CkBAIC0xODYsNCArMTg3LDQgQEAgRU5BQkxFX1hTTFQgPSBF
TkFCTEVfWFNMVDsKIAogRU5BQkxFX0ZUTF9KSVQgPSA7CiAKLUZFQVRVUkVfREVGSU5FUyA9ICQo
RU5BQkxFXzNEX1JFTkRFUklORykgJChFTkFCTEVfQUNDRUxFUkFURURfMkRfQ0FOVkFTKSAkKEVO
QUJMRV9CTE9CKSAkKEVOQUJMRV9DQUNIRV9QQVJUSVRJT05JTkcpICQoRU5BQkxFX0NBTlZBU19Q
QVRIKSAkKEVOQUJMRV9DQU5WQVNfUFJPWFkpICQoRU5BQkxFX0NIQU5ORUxfTUVTU0FHSU5HKSAk
KEVOQUJMRV9DU1BfTkVYVCkgJChFTkFCTEVfQ1NTX0JPWF9ERUNPUkFUSU9OX0JSRUFLKSAkKEVO
QUJMRV9DU1NfQ09NUE9TSVRJTkcpICQoRU5BQkxFX0NTU19ERVZJQ0VfQURBUFRBVElPTikgJChF
TkFCTEVfQ1NTX0VYQ0xVU0lPTlMpICQoRU5BQkxFX0NTU19GSUxURVJTKSAkKEVOQUJMRV9DU1Nf
SU1BR0VfT1JJRU5UQVRJT04pICQoRU5BQkxFX0NTU19JTUFHRV9SRVNPTFVUSU9OKSAkKEVOQUJM
RV9DU1NfUkVHSU9OUykgJChFTkFCTEVfQ1NTX1NIQURFUlMpICQoRU5BQkxFX0NTU19TSEFQRVMp
ICQoRU5BQkxFX0NTU19TVElDS1lfUE9TSVRJT04pICQoRU5BQkxFX0NTU19UUkFOU0ZPUk1TX0FO
SU1BVElPTlNfVU5QUkVGSVhFRCkgJChFTkFCTEVfQ1NTX1ZBUklBQkxFUykgJChFTkFCTEVfQ1NT
M19DT05ESVRJT05BTF9SVUxFUykgJChFTkFCTEVfQ1NTM19URVhUKSAkKEVOQUJMRV9DU1MzX1RF
WFRfTElORV9CUkVBSykgJChFTkFCTEVfQ1VSU09SX1ZJU0lCSUxJVFkpICQoRU5BQkxFX0NVU1RP
TV9TQ0hFTUVfSEFORExFUikgJChFTkFCTEVfREFTSEJPQVJEX1NVUFBPUlQpICQoRU5BQkxFX0RB
VEFMSVNUX0VMRU1FTlQpICQoRU5BQkxFX0RBVEFfVFJBTlNGRVJfSVRFTVMpICQoRU5BQkxFX0RF
VEFJTFNfRUxFTUVOVCkgJChFTkFCTEVfREVWSUNFX09SSUVOVEFUSU9OKSAkKEVOQUJMRV9ESVJF
Q1RPUllfVVBMT0FEKSAkKEVOQUJMRV9ET000X0VWRU5UU19DT05TVFJVQ1RPUikgJChFTkFCTEVf
RFJBR0dBQkxFX1JFR0lPTikgJChFTkFCTEVfRU5DUllQVEVEX01FRElBKSAkKEVOQUJMRV9FTkNS
WVBURURfTUVESUFfVjIpICQoRU5BQkxFX0ZJTFRFUlMpICQoRU5BQkxFX0ZPTlRfTE9BRF9FVkVO
VFMpICQoRU5BQkxFX0ZVTExTQ1JFRU5fQVBJKSAkKEVOQUJMRV9HQU1FUEFEKSAkKEVOQUJMRV9H
RU9MT0NBVElPTikgJChFTkFCTEVfSElEREVOX1BBR0VfRE9NX1RJTUVSX1RIUk9UVExJTkcpICQo
RU5BQkxFX0hJR0hfRFBJX0NBTlZBUykgJChFTkFCTEVfSUNPTkRBVEFCQVNFKSAkKEVOQUJMRV9J
RlJBTUVfU0VBTUxFU1MpICQoRU5BQkxFX0lOREVYRURfREFUQUJBU0UpICQoRU5BQkxFX0lORElF
X1VJKSAkKEVOQUJMRV9JTlBVVF9TUEVFQ0gpICQoRU5BQkxFX0lOUFVUX1RZUEVfQ09MT1IpICQo
RU5BQkxFX0lOUFVUX1RZUEVfQ09MT1JfUE9QT1ZFUikgJChFTkFCTEVfSU5QVVRfVFlQRV9EQVRF
KSAkKEVOQUJMRV9JTlBVVF9UWVBFX0RBVEVUSU1FX0lOQ09NUExFVEUpICQoRU5BQkxFX0lOUFVU
X1RZUEVfREFURVRJTUVMT0NBTCkgJChFTkFCTEVfSU5QVVRfVFlQRV9NT05USCkgJChFTkFCTEVf
SU5QVVRfVFlQRV9USU1FKSAkKEVOQUJMRV9JTlBVVF9UWVBFX1dFRUspICQoRU5BQkxFX0pBVkFT
Q1JJUFRfREVCVUdHRVIpICQoRU5BQkxFX0xFR0FDWV9DU1NfVkVORE9SX1BSRUZJWEVTKSAkKEVO
QUJMRV9MRUdBQ1lfTk9USUZJQ0FUSU9OUykgJChFTkFCTEVfTEVHQUNZX1ZFTkRPUl9QUkVGSVhF
UykgJChFTkFCTEVfTEVHQUNZX1dFQl9BVURJTykgJChFTkFCTEVfTElOS19QUkVGRVRDSCkgJChF
TkFCTEVfTUFUSE1MKSAkKEVOQUJMRV9NRURJQV9DT05UUk9MU19TQ1JJUFQpICQoRU5BQkxFX01F
RElBX1NPVVJDRSkgJChFTkFCTEVfTUVESUFfU1RBVElTVElDUykgJChFTkFCTEVfTUVURVJfRUxF
TUVOVCkgJChFTkFCTEVfTUhUTUwpICQoRU5BQkxFX01PVVNFX0NVUlNPUl9TQ0FMRSkgJChFTkFC
TEVfTkFWSUdBVE9SX0NPTlRFTlRfVVRJTFMpICQoRU5BQkxFX05PVElGSUNBVElPTlMpICQoRU5B
QkxFX1BBR0VfVklTSUJJTElUWV9BUEkpICQoRU5BQkxFX1BERktJVF9QTFVHSU4pICQoRU5BQkxF
X1BMVUdJTl9QUk9YWV9GT1JfVklERU8pICQoRU5BQkxFX1BST0dSRVNTX0VMRU1FTlQpICQoRU5B
QkxFX1BST01JU0VTKSAkKEVOQUJMRV9QUk9YSU1JVFlfRVZFTlRTKSAkKEVOQUJMRV9QVUJMSUNf
U1VGRklYX0xJU1QpICQoRU5BQkxFX1FVT1RBKSAkKEVOQUJMRV9SRVFVRVNUX0FOSU1BVElPTl9G
UkFNRSkgJChFTkFCTEVfUkVTT0xVVElPTl9NRURJQV9RVUVSWSkgJChFTkFCTEVfU0NSSVBURURf
U1BFRUNIKSAkKEVOQUJMRV9TSEFET1dfRE9NKSAkKEVOQUJMRV9TSEFSRURfV09SS0VSUykgJChF
TkFCTEVfU1BFRUNIX1NZTlRIRVNJUykgJChFTkFCTEVfU1FMX0RBVEFCQVNFKSAkKEVOQUJMRV9T
VUJQSVhFTF9MQVlPVVQpICQoRU5BQkxFX1NWRykgJChFTkFCTEVfU1ZHX0ZPTlRTKSAkKEVOQUJM
RV9URU1QTEFURV9FTEVNRU5UKSAkKEVOQUJMRV9URVhUX0FVVE9TSVpJTkcpICQoRU5BQkxFX1RI
UkVBREVEX0hUTUxfUEFSU0VSKSAkKEVOQUJMRV9UT1VDSF9JQ09OX0xPQURJTkcpICQoRU5BQkxF
X1VTRVJTRUxFQ1RfQUxMKSAkKEVOQUJMRV9WSURFTykgJChFTkFCTEVfVklERU9fVFJBQ0spICQo
RU5BQkxFX1ZJRVdfTU9ERV9DU1NfTUVESUEpICQoRU5BQkxFX1dFQkdMKSAkKEVOQUJMRV9XRUJf
QVVESU8pICQoRU5BQkxFX1dFQl9TT0NLRVRTKSAkKEVOQUJMRV9XRUJfVElNSU5HKSAkKEVOQUJM
RV9XT1JLRVJTKSAkKEVOQUJMRV9YSFJfVElNRU9VVCkgJChFTkFCTEVfWFNMVCkgJChFTkFCTEVf
RlRMX0pJVCkgJChGRUFUVVJFX0RFRklORVNfJChQTEFURk9STV9OQU1FKSk7CitGRUFUVVJFX0RF
RklORVMgPSAkKEVOQUJMRV8zRF9SRU5ERVJJTkcpICQoRU5BQkxFX0FDQ0VMRVJBVEVEXzJEX0NB
TlZBUykgJChFTkFCTEVfQkxPQikgJChFTkFCTEVfQ0FDSEVfUEFSVElUSU9OSU5HKSAkKEVOQUJM
RV9DQU5WQVNfUEFUSCkgJChFTkFCTEVfQ0FOVkFTX1BST1hZKSAkKEVOQUJMRV9DSEFOTkVMX01F
U1NBR0lORykgJChFTkFCTEVfQ1NQX05FWFQpICQoRU5BQkxFX0NTU19CT1hfREVDT1JBVElPTl9C
UkVBSykgJChFTkFCTEVfQ1NTX0NPTVBPU0lUSU5HKSAkKEVOQUJMRV9DU1NfREVWSUNFX0FEQVBU
QVRJT04pICQoRU5BQkxFX0NTU19FWENMVVNJT05TKSAkKEVOQUJMRV9DU1NfRklMVEVSUykgJChF
TkFCTEVfQ1NTX0lNQUdFX09SSUVOVEFUSU9OKSAkKEVOQUJMRV9DU1NfSU1BR0VfUkVTT0xVVElP
TikgJChFTkFCTEVfQ1NTX1JFR0lPTlMpICQoRU5BQkxFX0NTU19TSEFERVJTKSAkKEVOQUJMRV9D
U1NfU0hBUEVTKSAkKEVOQUJMRV9DU1NfU1RJQ0tZX1BPU0lUSU9OKSAkKEVOQUJMRV9DU1NfVFJB
TlNGT1JNU19BTklNQVRJT05TX1VOUFJFRklYRUQpICQoRU5BQkxFX0NTU19WQVJJQUJMRVMpICQo
RU5BQkxFX0NTUzNfQ09ORElUSU9OQUxfUlVMRVMpICQoRU5BQkxFX0NTUzNfVEVYVCkgJChFTkFC
TEVfQ1NTM19URVhUX0xJTkVfQlJFQUspICQoRU5BQkxFX0NVUlNPUl9WSVNJQklMSVRZKSAkKEVO
QUJMRV9DVVNUT01fU0NIRU1FX0hBTkRMRVIpICQoRU5BQkxFX0RBU0hCT0FSRF9TVVBQT1JUKSAk
KEVOQUJMRV9EQVRBTElTVF9FTEVNRU5UKSAkKEVOQUJMRV9EQVRBX1RSQU5TRkVSX0lURU1TKSAk
KEVOQUJMRV9ERVRBSUxTX0VMRU1FTlQpICQoRU5BQkxFX0RFVklDRV9PUklFTlRBVElPTikgJChF
TkFCTEVfRElSRUNUT1JZX1VQTE9BRCkgJChFTkFCTEVfRE9NNF9FVkVOVFNfQ09OU1RSVUNUT1Ip
ICQoRU5BQkxFX0RSQUdHQUJMRV9SRUdJT04pICQoRU5BQkxFX0VOQ1JZUFRFRF9NRURJQSkgJChF
TkFCTEVfRU5DUllQVEVEX01FRElBX1YyKSAgJChFTkFCTEVfTUVESUFfU1RSRUFNKSAkKEVOQUJM
RV9GSUxURVJTKSAkKEVOQUJMRV9GT05UX0xPQURfRVZFTlRTKSAkKEVOQUJMRV9GVUxMU0NSRUVO
X0FQSSkgJChFTkFCTEVfR0FNRVBBRCkgJChFTkFCTEVfR0VPTE9DQVRJT04pICQoRU5BQkxFX0hJ
RERFTl9QQUdFX0RPTV9USU1FUl9USFJPVFRMSU5HKSAkKEVOQUJMRV9ISUdIX0RQSV9DQU5WQVMp
ICQoRU5BQkxFX0lDT05EQVRBQkFTRSkgJChFTkFCTEVfSUZSQU1FX1NFQU1MRVNTKSAkKEVOQUJM
RV9JTkRFWEVEX0RBVEFCQVNFKSAkKEVOQUJMRV9JTkRJRV9VSSkgJChFTkFCTEVfSU5QVVRfU1BF
RUNIKSAkKEVOQUJMRV9JTlBVVF9UWVBFX0NPTE9SKSAkKEVOQUJMRV9JTlBVVF9UWVBFX0NPTE9S
X1BPUE9WRVIpICQoRU5BQkxFX0lOUFVUX1RZUEVfREFURSkgJChFTkFCTEVfSU5QVVRfVFlQRV9E
QVRFVElNRV9JTkNPTVBMRVRFKSAkKEVOQUJMRV9JTlBVVF9UWVBFX0RBVEVUSU1FTE9DQUwpICQo
RU5BQkxFX0lOUFVUX1RZUEVfTU9OVEgpICQoRU5BQkxFX0lOUFVUX1RZUEVfVElNRSkgJChFTkFC
TEVfSU5QVVRfVFlQRV9XRUVLKSAkKEVOQUJMRV9KQVZBU0NSSVBUX0RFQlVHR0VSKSAkKEVOQUJM
RV9MRUdBQ1lfQ1NTX1ZFTkRPUl9QUkVGSVhFUykgJChFTkFCTEVfTEVHQUNZX05PVElGSUNBVElP
TlMpICQoRU5BQkxFX0xFR0FDWV9WRU5ET1JfUFJFRklYRVMpICQoRU5BQkxFX0xFR0FDWV9XRUJf
QVVESU8pICQoRU5BQkxFX0xJTktfUFJFRkVUQ0gpICQoRU5BQkxFX01BVEhNTCkgJChFTkFCTEVf
TUVESUFfQ09OVFJPTFNfU0NSSVBUKSAkKEVOQUJMRV9NRURJQV9TT1VSQ0UpICQoRU5BQkxFX01F
RElBX1NUQVRJU1RJQ1MpICQoRU5BQkxFX01FVEVSX0VMRU1FTlQpICQoRU5BQkxFX01IVE1MKSAk
KEVOQUJMRV9NT1VTRV9DVVJTT1JfU0NBTEUpICQoRU5BQkxFX05BVklHQVRPUl9DT05URU5UX1VU
SUxTKSAkKEVOQUJMRV9OT1RJRklDQVRJT05TKSAkKEVOQUJMRV9QQUdFX1ZJU0lCSUxJVFlfQVBJ
KSAkKEVOQUJMRV9QREZLSVRfUExVR0lOKSAkKEVOQUJMRV9QTFVHSU5fUFJPWFlfRk9SX1ZJREVP
KSAkKEVOQUJMRV9QUk9HUkVTU19FTEVNRU5UKSAkKEVOQUJMRV9QUk9NSVNFUykgJChFTkFCTEVf
UFJPWElNSVRZX0VWRU5UUykgJChFTkFCTEVfUFVCTElDX1NVRkZJWF9MSVNUKSAkKEVOQUJMRV9R
VU9UQSkgJChFTkFCTEVfUkVRVUVTVF9BTklNQVRJT05fRlJBTUUpICQoRU5BQkxFX1JFU09MVVRJ
T05fTUVESUFfUVVFUlkpICQoRU5BQkxFX1NDUklQVEVEX1NQRUVDSCkgJChFTkFCTEVfU0hBRE9X
X0RPTSkgJChFTkFCTEVfU0hBUkVEX1dPUktFUlMpICQoRU5BQkxFX1NQRUVDSF9TWU5USEVTSVMp
ICQoRU5BQkxFX1NRTF9EQVRBQkFTRSkgJChFTkFCTEVfU1VCUElYRUxfTEFZT1VUKSAkKEVOQUJM
RV9TVkcpICQoRU5BQkxFX1NWR19GT05UUykgJChFTkFCTEVfVEVNUExBVEVfRUxFTUVOVCkgJChF
TkFCTEVfVEVYVF9BVVRPU0laSU5HKSAkKEVOQUJMRV9USFJFQURFRF9IVE1MX1BBUlNFUikgJChF
TkFCTEVfVE9VQ0hfSUNPTl9MT0FESU5HKSAkKEVOQUJMRV9VU0VSU0VMRUNUX0FMTCkgJChFTkFC
TEVfVklERU8pICQoRU5BQkxFX1ZJREVPX1RSQUNLKSAkKEVOQUJMRV9WSUVXX01PREVfQ1NTX01F
RElBKSAkKEVOQUJMRV9XRUJHTCkgJChFTkFCTEVfV0VCX0FVRElPKSAkKEVOQUJMRV9XRUJfU09D
S0VUUykgJChFTkFCTEVfV0VCX1RJTUlORykgJChFTkFCTEVfV09SS0VSUykgJChFTkFCTEVfWEhS
X1RJTUVPVVQpICQoRU5BQkxFX1hTTFQpICQoRU5BQkxFX0ZUTF9KSVQpICQoRkVBVFVSRV9ERUZJ
TkVTXyQoUExBVEZPUk1fTkFNRSkpOwpJbmRleDogU291cmNlL1dlYktpdC9tYWMvQ29uZmlndXJh
dGlvbnMvRmVhdHVyZURlZmluZXMueGNjb25maWcKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dC9tYWMvQ29uZmlndXJhdGlvbnMvRmVhdHVyZURlZmluZXMueGNjb25maWcJKHJldmlzaW9uIDE1
NzAxNikKKysrIFNvdXJjZS9XZWJLaXQvbWFjL0NvbmZpZ3VyYXRpb25zL0ZlYXR1cmVEZWZpbmVz
LnhjY29uZmlnCSh3b3JraW5nIGNvcHkpCkBAIC04Miw2ICs4Miw3IEBAIEVOQUJMRV9FTkNSWVBU
RURfTUVESUFfVjJfbWFjb3N4ID0gJChFTkEKIEVOQUJMRV9FTkNSWVBURURfTUVESUFfVjJfbWFj
b3N4XzEwNzAgPSA7CiBFTkFCTEVfRU5DUllQVEVEX01FRElBX1YyX21hY29zeF8xMDgwID0gOwog
RU5BQkxFX0VOQ1JZUFRFRF9NRURJQV9WMl9tYWNvc3hfMTA5MCA9IEVOQUJMRV9FTkNSWVBURURf
TUVESUFfVjI7CitFTkFCTEVfTUVESUFfU1RSRUFNID0gRU5BQkxFX01FRElBX1NUUkVBTTsKIEVO
QUJMRV9GSUxURVJTID0gRU5BQkxFX0ZJTFRFUlM7CiBFTkFCTEVfRk9OVF9MT0FEX0VWRU5UUyA9
IDsKIEVOQUJMRV9GVUxMU0NSRUVOX0FQSSA9ICQoRU5BQkxFX0ZVTExTQ1JFRU5fQVBJXyQoUExB
VEZPUk1fTkFNRSkpOwpAQCAtMTg2LDQgKzE4Nyw0IEBAIEVOQUJMRV9YU0xUID0gRU5BQkxFX1hT
TFQ7CiAKIEVOQUJMRV9GVExfSklUID0gOwogCi1GRUFUVVJFX0RFRklORVMgPSAkKEVOQUJMRV8z
RF9SRU5ERVJJTkcpICQoRU5BQkxFX0FDQ0VMRVJBVEVEXzJEX0NBTlZBUykgJChFTkFCTEVfQkxP
QikgJChFTkFCTEVfQ0FDSEVfUEFSVElUSU9OSU5HKSAkKEVOQUJMRV9DQU5WQVNfUEFUSCkgJChF
TkFCTEVfQ0FOVkFTX1BST1hZKSAkKEVOQUJMRV9DSEFOTkVMX01FU1NBR0lORykgJChFTkFCTEVf
Q1NQX05FWFQpICQoRU5BQkxFX0NTU19CT1hfREVDT1JBVElPTl9CUkVBSykgJChFTkFCTEVfQ1NT
X0NPTVBPU0lUSU5HKSAkKEVOQUJMRV9DU1NfREVWSUNFX0FEQVBUQVRJT04pICQoRU5BQkxFX0NT
U19FWENMVVNJT05TKSAkKEVOQUJMRV9DU1NfRklMVEVSUykgJChFTkFCTEVfQ1NTX0lNQUdFX09S
SUVOVEFUSU9OKSAkKEVOQUJMRV9DU1NfSU1BR0VfUkVTT0xVVElPTikgJChFTkFCTEVfQ1NTX1JF
R0lPTlMpICQoRU5BQkxFX0NTU19TSEFERVJTKSAkKEVOQUJMRV9DU1NfU0hBUEVTKSAkKEVOQUJM
RV9DU1NfU1RJQ0tZX1BPU0lUSU9OKSAkKEVOQUJMRV9DU1NfVFJBTlNGT1JNU19BTklNQVRJT05T
X1VOUFJFRklYRUQpICQoRU5BQkxFX0NTU19WQVJJQUJMRVMpICQoRU5BQkxFX0NTUzNfQ09ORElU
SU9OQUxfUlVMRVMpICQoRU5BQkxFX0NTUzNfVEVYVCkgJChFTkFCTEVfQ1NTM19URVhUX0xJTkVf
QlJFQUspICQoRU5BQkxFX0NVUlNPUl9WSVNJQklMSVRZKSAkKEVOQUJMRV9DVVNUT01fU0NIRU1F
X0hBTkRMRVIpICQoRU5BQkxFX0RBU0hCT0FSRF9TVVBQT1JUKSAkKEVOQUJMRV9EQVRBTElTVF9F
TEVNRU5UKSAkKEVOQUJMRV9EQVRBX1RSQU5TRkVSX0lURU1TKSAkKEVOQUJMRV9ERVRBSUxTX0VM
RU1FTlQpICQoRU5BQkxFX0RFVklDRV9PUklFTlRBVElPTikgJChFTkFCTEVfRElSRUNUT1JZX1VQ
TE9BRCkgJChFTkFCTEVfRE9NNF9FVkVOVFNfQ09OU1RSVUNUT1IpICQoRU5BQkxFX0RSQUdHQUJM
RV9SRUdJT04pICQoRU5BQkxFX0VOQ1JZUFRFRF9NRURJQSkgJChFTkFCTEVfRU5DUllQVEVEX01F
RElBX1YyKSAkKEVOQUJMRV9GSUxURVJTKSAkKEVOQUJMRV9GT05UX0xPQURfRVZFTlRTKSAkKEVO
QUJMRV9GVUxMU0NSRUVOX0FQSSkgJChFTkFCTEVfR0FNRVBBRCkgJChFTkFCTEVfR0VPTE9DQVRJ
T04pICQoRU5BQkxFX0hJRERFTl9QQUdFX0RPTV9USU1FUl9USFJPVFRMSU5HKSAkKEVOQUJMRV9I
SUdIX0RQSV9DQU5WQVMpICQoRU5BQkxFX0lDT05EQVRBQkFTRSkgJChFTkFCTEVfSUZSQU1FX1NF
QU1MRVNTKSAkKEVOQUJMRV9JTkRFWEVEX0RBVEFCQVNFKSAkKEVOQUJMRV9JTkRJRV9VSSkgJChF
TkFCTEVfSU5QVVRfU1BFRUNIKSAkKEVOQUJMRV9JTlBVVF9UWVBFX0NPTE9SKSAkKEVOQUJMRV9J
TlBVVF9UWVBFX0NPTE9SX1BPUE9WRVIpICQoRU5BQkxFX0lOUFVUX1RZUEVfREFURSkgJChFTkFC
TEVfSU5QVVRfVFlQRV9EQVRFVElNRV9JTkNPTVBMRVRFKSAkKEVOQUJMRV9JTlBVVF9UWVBFX0RB
VEVUSU1FTE9DQUwpICQoRU5BQkxFX0lOUFVUX1RZUEVfTU9OVEgpICQoRU5BQkxFX0lOUFVUX1RZ
UEVfVElNRSkgJChFTkFCTEVfSU5QVVRfVFlQRV9XRUVLKSAkKEVOQUJMRV9KQVZBU0NSSVBUX0RF
QlVHR0VSKSAkKEVOQUJMRV9MRUdBQ1lfQ1NTX1ZFTkRPUl9QUkVGSVhFUykgJChFTkFCTEVfTEVH
QUNZX05PVElGSUNBVElPTlMpICQoRU5BQkxFX0xFR0FDWV9WRU5ET1JfUFJFRklYRVMpICQoRU5B
QkxFX0xFR0FDWV9XRUJfQVVESU8pICQoRU5BQkxFX0xJTktfUFJFRkVUQ0gpICQoRU5BQkxFX01B
VEhNTCkgJChFTkFCTEVfTUVESUFfQ09OVFJPTFNfU0NSSVBUKSAkKEVOQUJMRV9NRURJQV9TT1VS
Q0UpICQoRU5BQkxFX01FRElBX1NUQVRJU1RJQ1MpICQoRU5BQkxFX01FVEVSX0VMRU1FTlQpICQo
RU5BQkxFX01IVE1MKSAkKEVOQUJMRV9NT1VTRV9DVVJTT1JfU0NBTEUpICQoRU5BQkxFX05BVklH
QVRPUl9DT05URU5UX1VUSUxTKSAkKEVOQUJMRV9OT1RJRklDQVRJT05TKSAkKEVOQUJMRV9QQUdF
X1ZJU0lCSUxJVFlfQVBJKSAkKEVOQUJMRV9QREZLSVRfUExVR0lOKSAkKEVOQUJMRV9QTFVHSU5f
UFJPWFlfRk9SX1ZJREVPKSAkKEVOQUJMRV9QUk9HUkVTU19FTEVNRU5UKSAkKEVOQUJMRV9QUk9N
SVNFUykgJChFTkFCTEVfUFJPWElNSVRZX0VWRU5UUykgJChFTkFCTEVfUFVCTElDX1NVRkZJWF9M
SVNUKSAkKEVOQUJMRV9RVU9UQSkgJChFTkFCTEVfUkVRVUVTVF9BTklNQVRJT05fRlJBTUUpICQo
RU5BQkxFX1JFU09MVVRJT05fTUVESUFfUVVFUlkpICQoRU5BQkxFX1NDUklQVEVEX1NQRUVDSCkg
JChFTkFCTEVfU0hBRE9XX0RPTSkgJChFTkFCTEVfU0hBUkVEX1dPUktFUlMpICQoRU5BQkxFX1NQ
RUVDSF9TWU5USEVTSVMpICQoRU5BQkxFX1NRTF9EQVRBQkFTRSkgJChFTkFCTEVfU1VCUElYRUxf
TEFZT1VUKSAkKEVOQUJMRV9TVkcpICQoRU5BQkxFX1NWR19GT05UUykgJChFTkFCTEVfVEVNUExB
VEVfRUxFTUVOVCkgJChFTkFCTEVfVEVYVF9BVVRPU0laSU5HKSAkKEVOQUJMRV9USFJFQURFRF9I
VE1MX1BBUlNFUikgJChFTkFCTEVfVE9VQ0hfSUNPTl9MT0FESU5HKSAkKEVOQUJMRV9VU0VSU0VM
RUNUX0FMTCkgJChFTkFCTEVfVklERU8pICQoRU5BQkxFX1ZJREVPX1RSQUNLKSAkKEVOQUJMRV9W
SUVXX01PREVfQ1NTX01FRElBKSAkKEVOQUJMRV9XRUJHTCkgJChFTkFCTEVfV0VCX0FVRElPKSAk
KEVOQUJMRV9XRUJfU09DS0VUUykgJChFTkFCTEVfV0VCX1RJTUlORykgJChFTkFCTEVfV09SS0VS
UykgJChFTkFCTEVfWEhSX1RJTUVPVVQpICQoRU5BQkxFX1hTTFQpICQoRU5BQkxFX0ZUTF9KSVQp
ICQoRkVBVFVSRV9ERUZJTkVTXyQoUExBVEZPUk1fTkFNRSkpOworRkVBVFVSRV9ERUZJTkVTID0g
JChFTkFCTEVfM0RfUkVOREVSSU5HKSAkKEVOQUJMRV9BQ0NFTEVSQVRFRF8yRF9DQU5WQVMpICQo
RU5BQkxFX0JMT0IpICQoRU5BQkxFX0NBQ0hFX1BBUlRJVElPTklORykgJChFTkFCTEVfQ0FOVkFT
X1BBVEgpICQoRU5BQkxFX0NBTlZBU19QUk9YWSkgJChFTkFCTEVfQ0hBTk5FTF9NRVNTQUdJTkcp
ICQoRU5BQkxFX0NTUF9ORVhUKSAkKEVOQUJMRV9DU1NfQk9YX0RFQ09SQVRJT05fQlJFQUspICQo
RU5BQkxFX0NTU19DT01QT1NJVElORykgJChFTkFCTEVfQ1NTX0RFVklDRV9BREFQVEFUSU9OKSAk
KEVOQUJMRV9DU1NfRVhDTFVTSU9OUykgJChFTkFCTEVfQ1NTX0ZJTFRFUlMpICQoRU5BQkxFX0NT
U19JTUFHRV9PUklFTlRBVElPTikgJChFTkFCTEVfQ1NTX0lNQUdFX1JFU09MVVRJT04pICQoRU5B
QkxFX0NTU19SRUdJT05TKSAkKEVOQUJMRV9DU1NfU0hBREVSUykgJChFTkFCTEVfQ1NTX1NIQVBF
UykgJChFTkFCTEVfQ1NTX1NUSUNLWV9QT1NJVElPTikgJChFTkFCTEVfQ1NTX1RSQU5TRk9STVNf
QU5JTUFUSU9OU19VTlBSRUZJWEVEKSAkKEVOQUJMRV9DU1NfVkFSSUFCTEVTKSAkKEVOQUJMRV9D
U1MzX0NPTkRJVElPTkFMX1JVTEVTKSAkKEVOQUJMRV9DU1MzX1RFWFQpICQoRU5BQkxFX0NTUzNf
VEVYVF9MSU5FX0JSRUFLKSAkKEVOQUJMRV9DVVJTT1JfVklTSUJJTElUWSkgJChFTkFCTEVfQ1VT
VE9NX1NDSEVNRV9IQU5ETEVSKSAkKEVOQUJMRV9EQVNIQk9BUkRfU1VQUE9SVCkgJChFTkFCTEVf
REFUQUxJU1RfRUxFTUVOVCkgJChFTkFCTEVfREFUQV9UUkFOU0ZFUl9JVEVNUykgJChFTkFCTEVf
REVUQUlMU19FTEVNRU5UKSAkKEVOQUJMRV9ERVZJQ0VfT1JJRU5UQVRJT04pICQoRU5BQkxFX0RJ
UkVDVE9SWV9VUExPQUQpICQoRU5BQkxFX0RPTTRfRVZFTlRTX0NPTlNUUlVDVE9SKSAkKEVOQUJM
RV9EUkFHR0FCTEVfUkVHSU9OKSAkKEVOQUJMRV9FTkNSWVBURURfTUVESUEpICQoRU5BQkxFX0VO
Q1JZUFRFRF9NRURJQV9WMikgJChFTkFCTEVfTUVESUFfU1RSRUFNKSAkKEVOQUJMRV9GSUxURVJT
KSAkKEVOQUJMRV9GT05UX0xPQURfRVZFTlRTKSAkKEVOQUJMRV9GVUxMU0NSRUVOX0FQSSkgJChF
TkFCTEVfR0FNRVBBRCkgJChFTkFCTEVfR0VPTE9DQVRJT04pICQoRU5BQkxFX0hJRERFTl9QQUdF
X0RPTV9USU1FUl9USFJPVFRMSU5HKSAkKEVOQUJMRV9ISUdIX0RQSV9DQU5WQVMpICQoRU5BQkxF
X0lDT05EQVRBQkFTRSkgJChFTkFCTEVfSUZSQU1FX1NFQU1MRVNTKSAkKEVOQUJMRV9JTkRFWEVE
X0RBVEFCQVNFKSAkKEVOQUJMRV9JTkRJRV9VSSkgJChFTkFCTEVfSU5QVVRfU1BFRUNIKSAkKEVO
QUJMRV9JTlBVVF9UWVBFX0NPTE9SKSAkKEVOQUJMRV9JTlBVVF9UWVBFX0NPTE9SX1BPUE9WRVIp
ICQoRU5BQkxFX0lOUFVUX1RZUEVfREFURSkgJChFTkFCTEVfSU5QVVRfVFlQRV9EQVRFVElNRV9J
TkNPTVBMRVRFKSAkKEVOQUJMRV9JTlBVVF9UWVBFX0RBVEVUSU1FTE9DQUwpICQoRU5BQkxFX0lO
UFVUX1RZUEVfTU9OVEgpICQoRU5BQkxFX0lOUFVUX1RZUEVfVElNRSkgJChFTkFCTEVfSU5QVVRf
VFlQRV9XRUVLKSAkKEVOQUJMRV9KQVZBU0NSSVBUX0RFQlVHR0VSKSAkKEVOQUJMRV9MRUdBQ1lf
Q1NTX1ZFTkRPUl9QUkVGSVhFUykgJChFTkFCTEVfTEVHQUNZX05PVElGSUNBVElPTlMpICQoRU5B
QkxFX0xFR0FDWV9WRU5ET1JfUFJFRklYRVMpICQoRU5BQkxFX0xFR0FDWV9XRUJfQVVESU8pICQo
RU5BQkxFX0xJTktfUFJFRkVUQ0gpICQoRU5BQkxFX01BVEhNTCkgJChFTkFCTEVfTUVESUFfQ09O
VFJPTFNfU0NSSVBUKSAkKEVOQUJMRV9NRURJQV9TT1VSQ0UpICQoRU5BQkxFX01FRElBX1NUQVRJ
U1RJQ1MpICQoRU5BQkxFX01FVEVSX0VMRU1FTlQpICQoRU5BQkxFX01IVE1MKSAkKEVOQUJMRV9N
T1VTRV9DVVJTT1JfU0NBTEUpICQoRU5BQkxFX05BVklHQVRPUl9DT05URU5UX1VUSUxTKSAkKEVO
QUJMRV9OT1RJRklDQVRJT05TKSAkKEVOQUJMRV9QQUdFX1ZJU0lCSUxJVFlfQVBJKSAkKEVOQUJM
RV9QREZLSVRfUExVR0lOKSAkKEVOQUJMRV9QTFVHSU5fUFJPWFlfRk9SX1ZJREVPKSAkKEVOQUJM
RV9QUk9HUkVTU19FTEVNRU5UKSAkKEVOQUJMRV9QUk9NSVNFUykgJChFTkFCTEVfUFJPWElNSVRZ
X0VWRU5UUykgJChFTkFCTEVfUFVCTElDX1NVRkZJWF9MSVNUKSAkKEVOQUJMRV9RVU9UQSkgJChF
TkFCTEVfUkVRVUVTVF9BTklNQVRJT05fRlJBTUUpICQoRU5BQkxFX1JFU09MVVRJT05fTUVESUFf
UVVFUlkpICQoRU5BQkxFX1NDUklQVEVEX1NQRUVDSCkgJChFTkFCTEVfU0hBRE9XX0RPTSkgJChF
TkFCTEVfU0hBUkVEX1dPUktFUlMpICQoRU5BQkxFX1NQRUVDSF9TWU5USEVTSVMpICQoRU5BQkxF
X1NRTF9EQVRBQkFTRSkgJChFTkFCTEVfU1VCUElYRUxfTEFZT1VUKSAkKEVOQUJMRV9TVkcpICQo
RU5BQkxFX1NWR19GT05UUykgJChFTkFCTEVfVEVNUExBVEVfRUxFTUVOVCkgJChFTkFCTEVfVEVY
VF9BVVRPU0laSU5HKSAkKEVOQUJMRV9USFJFQURFRF9IVE1MX1BBUlNFUikgJChFTkFCTEVfVE9V
Q0hfSUNPTl9MT0FESU5HKSAkKEVOQUJMRV9VU0VSU0VMRUNUX0FMTCkgJChFTkFCTEVfVklERU8p
ICQoRU5BQkxFX1ZJREVPX1RSQUNLKSAkKEVOQUJMRV9WSUVXX01PREVfQ1NTX01FRElBKSAkKEVO
QUJMRV9XRUJHTCkgJChFTkFCTEVfV0VCX0FVRElPKSAkKEVOQUJMRV9XRUJfU09DS0VUUykgJChF
TkFCTEVfV0VCX1RJTUlORykgJChFTkFCTEVfV09SS0VSUykgJChFTkFCTEVfWEhSX1RJTUVPVVQp
ICQoRU5BQkxFX1hTTFQpICQoRU5BQkxFX0ZUTF9KSVQpICQoRkVBVFVSRV9ERUZJTkVTXyQoUExB
VEZPUk1fTkFNRSkpOwpJbmRleDogTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IExheW91dFRlc3RzL0NoYW5nZUxvZwkocmV2aXNpb24gMTU3MDE2KQorKysgTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTIgQEAKKzIwMTMtMTAtMDYgIEVy
aWMgQ2FybHNvbiAgPGVyaWMuY2FybHNvbkBhcHBsZS5jb20+CisKKyAgICAgICAgW01lZGlhU3Ry
ZWFtIEFQSV0gdXBkYXRlIE1lZGlhU3RyZWFtVHJhY2sgb2JqZWN0IHRvIG1hdGNoIHNwZWMKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyMTk0MAorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogZmFzdC9tZWRp
YXN0cmVhbS9NZWRpYVN0cmVhbVRyYWNrLmh0bWw6CisKIDIwMTMtMTAtMDYgIEZpbGlwIFBpemxv
ICA8ZnBpemxvQGFwcGxlLmNvbT4KIAogICAgICAgICBVbmlmaWVkIHRlc3QgaW5mcmFzdHJ1Y3R1
cmUgdmlhIHRoZSBqc2Mgc2hlbGwKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvbWVkaWFzdHJlYW0v
TWVkaWFTdHJlYW1UcmFjay5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvbWVk
aWFzdHJlYW0vTWVkaWFTdHJlYW1UcmFjay5odG1sCShyZXZpc2lvbiAxNTcwMTYpCisrKyBMYXlv
dXRUZXN0cy9mYXN0L21lZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJhY2suaHRtbAkod29ya2luZyBj
b3B5KQpAQCAtMSw3OSArMSwxNzAgQEAKIDwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vSUVURi8v
RFREIEhUTUwvL0VOIj4KIDxodG1sPgotPGhlYWQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3Vy
Y2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KLTwvaGVhZD4KLTxib2R5PgotPHAgaWQ9ImRl
c2NyaXB0aW9uIj48L3A+Ci08ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KLTxzY3JpcHQ+Ci1kZXNj
cmlwdGlvbigiVGVzdHMgTWVkaWFTdHJlYW1UcmFjayBjYWxsYmFja3MuIik7Ci0KLS8vIE5vdGUg
dGhhdCB0aGUgYmVsb3cgYmVoYXZpb3VyIGRvZXNuJ3QgcmVmbGVjdCBob3cgaXQgd29ya3Mgb3V0
c2lkZSBvZiBMYXlvdXRUZXN0cy4KLS8vIFRoZSB1bmRlcmx5aW5nIG1vY2sgaXMgbW9kaWZpZWQg
dG8gdHJpZ2dlciB0aGUgZXZlbnRzIHdoZW4gY2VydGFpbiBmdW5jdGlvbnMgYXJlIGNhbGxlZC4K
LS8vIFRoaXMgbW9kaWZpZWQgYmVoYXZpb3VyIGFsbG93cyB1cyB0byB0ZXN0IHRoZSBNZWRpYVN0
cmVhbVRyYWNrIGNsYXNzIHByb3Blcmx5LgotCi12YXIgc3RyZWFtOwotdmFyIHRyYWNrOwotCi1m
dW5jdGlvbiBlcnJvcigpIHsKLSAgICB0ZXN0RmFpbGVkKCdTdHJlYW0gZ2VuZXJhdGlvbiBmYWls
ZWQuJyk7Ci0gICAgZmluaXNoSlNUZXN0KCk7Ci19Ci0KLWZ1bmN0aW9uIGdldFVzZXJNZWRpYShj
b25zdHJhaW50cywgY2FsbGJhY2spIHsKLSAgICB0cnkgewotICAgICAgICBuYXZpZ2F0b3Iud2Vi
a2l0R2V0VXNlck1lZGlhKGNvbnN0cmFpbnRzLCBjYWxsYmFjaywgZXJyb3IpOwotICAgIH0gY2F0
Y2ggKGUpIHsKLSAgICAgICAgdGVzdEZhaWxlZCgnd2Via2l0R2V0VXNlck1lZGlhIHRocmV3IGV4
Y2VwdGlvbiA6JyArIGUpOwotICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKLSAgICB9Ci19Ci0KLWZ1
bmN0aW9uIG9uVHJhY2tFbmRlZCgpIHsKLSAgICB0ZXN0UGFzc2VkKCdUcmFjayBvbmVuZGVkIGNh
bGxiYWNrIHN1Y2NlZWRlZC4nKTsKLQotICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygndHJhY2su
cmVhZHlTdGF0ZScsICdlbmRlZCcpOwotCi0gICAgZmluaXNoSlNUZXN0KCk7Ci19Ci0KLWZ1bmN0
aW9uIG9uVHJhY2tVbm11dGUoKSB7Ci0gICAgdGVzdFBhc3NlZCgnVHJhY2sgb251bm11dGUgY2Fs
bGJhY2sgc3VjY2VlZGVkLicpOwotCi0gICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCd0cmFjay5y
ZWFkeVN0YXRlJywgJ2xpdmUnKTsKLQotICAgIHN0cmVhbS5zdG9wKCk7Ci19Ci0KLWZ1bmN0aW9u
IG9uVHJhY2tNdXRlKCkgewotICAgIHRlc3RQYXNzZWQoJ1RyYWNrIG9ubXV0ZSBjYWxsYmFjayBz
dWNjZWVkZWQuJyk7Ci0KLSAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoJ3RyYWNrLnJlYWR5U3Rh
dGUnLCAnbXV0ZWQnKTsKLQotICAgIHRyYWNrLmVuYWJsZWQgPSB0cnVlOwotfQotCi1mdW5jdGlv
biBnb3RTdHJlYW0ocykgewotICAgIHRlc3RQYXNzZWQoJ2dldFVzZXJNZWRpYSBzdWNjZWVkZWQu
Jyk7Ci0KLSAgICBzdHJlYW0gPSBzOwotICAgIHRyYWNrID0gc3RyZWFtLmdldFZpZGVvVHJhY2tz
KClbMF07Ci0KLSAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoJ3RyYWNrLnJlYWR5U3RhdGUnLCAn
bGl2ZScpOwotCi0gICAgdHJhY2sub251bm11dGUgPSBvblRyYWNrVW5tdXRlOwotICAgIHRyYWNr
Lm9ubXV0ZSA9IG9uVHJhY2tNdXRlOwotICAgIHRyYWNrLm9uZW5kZWQgPSBvblRyYWNrRW5kZWQ7
Ci0KLSAgICB0cmFjay5lbmFibGVkID0gZmFsc2U7Ci19Ci0KLWdldFVzZXJNZWRpYSh7YXVkaW86
dHJ1ZSwgdmlkZW86dHJ1ZX0sIGdvdFN0cmVhbSk7Ci0KLXdpbmRvdy5qc1Rlc3RJc0FzeW5jID0g
dHJ1ZTsKLXdpbmRvdy5zdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOwotPC9zY3JpcHQ+Ci08c2Ny
aXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Ci08L2Jv
ZHk+CisgICAgPGhlYWQ+CisgICAgICAgIDxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMt
dGVzdC1wcmUuanMiPjwvc2NyaXB0PgorICAgICAgICA8c2NyaXB0PgorICAgICAgICAgICAgdmFy
IG1lZGlhU3RyZWFtOworICAgICAgICAgICAgdmFyIHZpZGVvVHJhY2s7CisgICAgICAgICAgICB2
YXIgdmlkZW9UcmFjazI7CisgICAgICAgICAgICB2YXIgYXVkaW9UcmFjazsKKyAgICAgICAgICAg
IAorICAgICAgICAgICAgZnVuY3Rpb24gZXJyb3IoKQorICAgICAgICAgICAgeworICAgICAgICAg
ICAgICAgIHRlc3RGYWlsZWQoJ1N0cmVhbSBnZW5lcmF0aW9uIGZhaWxlZC4nKTsKKyAgICAgICAg
ICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgZnVu
Y3Rpb24gZ2V0VXNlck1lZGlhKGNvbnN0cmFpbnRzLCBjYWxsYmFjaykKKyAgICAgICAgICAgIHsK
KyAgICAgICAgICAgICAgICB0cnkgeworICAgICAgICAgICAgICAgICAgICBuYXZpZ2F0b3Iud2Vi
a2l0R2V0VXNlck1lZGlhKGNvbnN0cmFpbnRzLCBjYWxsYmFjaywgZXJyb3IpOworICAgICAgICAg
ICAgICAgIH0gY2F0Y2ggKGUpIHsKKyAgICAgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgnd2Vi
a2l0R2V0VXNlck1lZGlhIHRocmV3IGV4Y2VwdGlvbiA6JyArIGUpOworICAgICAgICAgICAgICAg
ICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9Cisg
ICAgICAgICAgICAKKyAgICAgICAgICAgIGZ1bmN0aW9uIG9uVHJhY2tFbmRlZCgpCisgICAgICAg
ICAgICB7CisgICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgnVHJhY2sgb25lbmRlZCBjYWxsYmFj
ayBzdWNjZWVkZWQuJyk7CisgICAgICAgICAgICAgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCd2
aWRlb1RyYWNrLnJlYWR5U3RhdGUnLCAnZW5kZWQnKTsKKyAgICAgICAgICAgICAgICBkZWJ1Zygi
Iik7CisgICAgICAgICAgICAgICAgZmluaXNoSlNUZXN0KCk7CisgICAgICAgICAgICB9CisKKyAg
ICAgICAgICAgIGZ1bmN0aW9uIG9uVHJhY2tTdGFydGVkKCkKKyAgICAgICAgICAgIHsKKyAgICAg
ICAgICAgICAgICB0ZXN0UGFzc2VkKCdUcmFjayBvbnN0YXJ0ZWQgY2FsbGJhY2sgc3VjY2VlZGVk
LicpOworICAgICAgICAgICAgICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygndmlkZW9UcmFjay5y
ZWFkeVN0YXRlJywgJ2xpdmUnKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgZnVuY3Rp
b24gb25UcmFja092ZXJDb25zdHJhaW5lZCgpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAg
ICAgdGVzdFBhc3NlZCgnVHJhY2sgb25vdmVyY29uc3RyYWluZWQgY2FsbGJhY2sgc3VjY2VlZGVk
LicpOworICAgICAgICAgICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAgICAgICAgICAgfQorCisg
ICAgICAgICAgICBmdW5jdGlvbiBvblRyYWNrVW5tdXRlKCkKKyAgICAgICAgICAgIHsKKyAgICAg
ICAgICAgICAgICB0ZXN0UGFzc2VkKCdUcmFjayBvbnVubXV0ZSBjYWxsYmFjayBzdWNjZWVkZWQu
Jyk7CisgICAgICAgICAgICAgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCd2aWRlb1RyYWNrLnJl
YWR5U3RhdGUnLCAnbGl2ZScpOworICAgICAgICAgICAgICAgIHZpZGVvVHJhY2suc3RvcCgpOwor
ICAgICAgICAgICAgfQorCisgICAgICAgICAgICBmdW5jdGlvbiBvblRyYWNrTXV0ZSgpCisgICAg
ICAgICAgICB7CisgICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgnVHJhY2sgb25tdXRlIGNhbGxi
YWNrIHN1Y2NlZWRlZC4nKTsKKyAgICAgICAgICAgICAgICBzaG91bGRCZUVxdWFsKCd2aWRlb1Ry
YWNrLm11dGVkJywgdHJ1ZSk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGZ1bmN0aW9u
IGxvZ0NhcGFiaWxpdHlSYW5nZShuYW1lLCByYW5nZSkKKyAgICAgICAgICAgIHsKKyAgICAgICAg
ICAgICAgICBkZWJ1ZygiICAiICsgbmFtZSk7CisgICAgICAgICAgICAgICAgZGVidWcoIiAgIG1p
biA6ICIgKyByYW5nZS5taW4pOworICAgICAgICAgICAgICAgIGRlYnVnKCIgICBtYXggOiAiICsg
cmFuZ2UubWF4KTsKKyAgICAgICAgICAgICAgICBkZWJ1ZygiICAgc3VwcG9ydGVkIDogIiArIHJh
bmdlLnN1cHBvcnRlZCk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGZ1bmN0aW9uIGxv
Z0NhcGFiaWxpdHlMaXN0KG5hbWUsIGxpc3QpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAg
ICAgZGVidWcoIiAgIiArIG5hbWUpOworICAgICAgICAgICAgICAgIGZvciAoaSA9IDA7IGkgPCBs
aXN0Lmxlbmd0aDsgaSsrKQorICAgICAgICAgICAgICAgIGRlYnVnKCIgICAgIiArIGkgKyAiIDog
IiArIGxpc3RbaV0pOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBmdW5jdGlvbiBjaGVj
a0NhcGFiaWxpdGllcyh0cmFjaykKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBkZWJ1
ZygiY2hlY2tpbmcgdHJhY2suY2FwYWJpbGl0aWVzKCkiKTsKKyAgICAgICAgICAgICAgICBjYXBh
YmlsaXRpZXMgPSB0cmFjay5jYXBhYmlsaXRpZXMoKTsKKyAgICAgICAgICAgICAgICBsb2dDYXBh
YmlsaXR5TGlzdCgic291cmNlSWQiLCBjYXBhYmlsaXRpZXMuc291cmNlSWQpOworICAgICAgICAg
ICAgICAgIGlmICh0cmFjay5raW5kID09ICJ2aWRlbyIpIHsKKyAgICAgICAgICAgICAgICAgICAg
bG9nQ2FwYWJpbGl0eUxpc3QoInNvdXJjZVR5cGUiLCBjYXBhYmlsaXRpZXMuc291cmNlVHlwZSk7
CisgICAgICAgICAgICAgICAgICAgIGxvZ0NhcGFiaWxpdHlSYW5nZSgid2lkdGgiLCBjYXBhYmls
aXRpZXMud2lkdGgpOworICAgICAgICAgICAgICAgICAgICBsb2dDYXBhYmlsaXR5UmFuZ2UoImhl
aWdodCIsIGNhcGFiaWxpdGllcy5oZWlnaHQpOworICAgICAgICAgICAgICAgICAgICBsb2dDYXBh
YmlsaXR5UmFuZ2UoImZyYW1lUmF0ZSIsIGNhcGFiaWxpdGllcy5mcmFtZVJhdGUpOworICAgICAg
ICAgICAgICAgICAgICBsb2dDYXBhYmlsaXR5UmFuZ2UoImFzcGVjdFJhdGlvIiwgY2FwYWJpbGl0
aWVzLmFzcGVjdFJhdGlvKTsKKyAgICAgICAgICAgICAgICAgICAgbG9nQ2FwYWJpbGl0eUxpc3Qo
ImZhY2luZ01vZGUiLCBjYXBhYmlsaXRpZXMuZmFjaW5nTW9kZSk7CisgICAgICAgICAgICAgICAg
fSBlbHNlCisgICAgICAgICAgICAgICAgICAgIGxvZ0NhcGFiaWxpdHlSYW5nZSgidm9sdW1lIiwg
Y2FwYWJpbGl0aWVzLnZvbHVtZSk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGZ1bmN0
aW9uIGNoZWNrU3RhdGVzKHRyYWNrKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGRl
YnVnKCJjaGVja2luZyB0cmFjay5zdGF0ZXMoKSIpOworICAgICAgICAgICAgICAgIGNhcGFiaWxp
dGllcyA9IHRyYWNrLmNhcGFiaWxpdGllcygpOworICAgICAgICAgICAgICAgIHN0YXRlcyA9IHRy
YWNrLnN0YXRlcygpOworICAgICAgICAgICAgICAgIHNob3VsZEJlKCdzdGF0ZXMuc291cmNlSWQn
LCAnY2FwYWJpbGl0aWVzLnNvdXJjZUlkWzBdJyk7CisgICAgICAgICAgICAgICAgaWYgKHRyYWNr
LmtpbmQgPT0gInZpZGVvIikgeworICAgICAgICAgICAgICAgICAgICBzaG91bGRCZUVxdWFsVG9T
dHJpbmcoJ3N0YXRlcy5zb3VyY2VUeXBlJywgJ2NhbWVyYScpOworICAgICAgICAgICAgICAgICAg
ICBkZWJ1ZygiICB3aWR0aCA6ICIgKyBzdGF0ZXMud2lkdGgpOworICAgICAgICAgICAgICAgICAg
ICBkZWJ1ZygiICBoZWlnaHQgOiAiICsgc3RhdGVzLmhlaWdodCk7CisgICAgICAgICAgICAgICAg
ICAgIGRlYnVnKCIgIGZyYW1lUmF0ZSA6ICIgKyBzdGF0ZXMuZnJhbWVSYXRlKTsKKyAgICAgICAg
ICAgICAgICAgICAgZGVidWcoIiAgYXNwZWN0UmF0aW8gOiAiICsgc3RhdGVzLmFzcGVjdFJhdGlv
KTsKKyAgICAgICAgICAgICAgICAgICAgZGVidWcoIiAgZmFjaW5nTW9kZSA6ICIgKyBzdGF0ZXMu
ZmFjaW5nTW9kZSk7CisgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAg
ICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCdzdGF0ZXMuc291cmNlVHlwZScsICdtaWNyb3Bob25l
Jyk7CisgICAgICAgICAgICAgICAgICAgIGRlYnVnKCIgIHZvbHVtZSA6ICIgKyBzdGF0ZXMudm9s
dW1lKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgICAKKyAg
ICAgICAgICAgIGZ1bmN0aW9uIGNoZWNrVHJhY2sodCkKKyAgICAgICAgICAgIHsKKyAgICAgICAg
ICAgICAgICB0cmFjayA9IHQ7CisgICAgICAgICAgICAgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5n
KCd0cmFjay5yZWFkeVN0YXRlJywgJ2xpdmUnKTsKKyAgICAgICAgICAgICAgICBjaGVja0NhcGFi
aWxpdGllcyh0cmFjayk7CisgICAgICAgICAgICAgICAgY2hlY2tTdGF0ZXModHJhY2spOworICAg
ICAgICAgICAgfQorCisgICAgICAgICAgICBmdW5jdGlvbiBnb3RTdHJlYW0oc3RyZWFtKQorICAg
ICAgICAgICAgeworICAgICAgICAgICAgICAgIG1lZGlhU3RyZWFtID0gc3RyZWFtOworICAgICAg
ICAgICAgICAgIHRlc3RQYXNzZWQoJ2dldFVzZXJNZWRpYSBzdWNjZWVkZWQuJyk7CisgICAgICAg
ICAgICAKKyAgICAgICAgICAgICAgICBkZWJ1ZygiIik7CisgICAgICAgICAgICAgICAgZXZhbEFu
ZExvZygidmlkZW9UcmFjayA9IG1lZGlhU3RyZWFtLmdldFZpZGVvVHJhY2tzKClbMF0iKTsKKyAg
ICAgICAgICAgICAgICBjaGVja1RyYWNrKHZpZGVvVHJhY2spOworCisgICAgICAgICAgICAgICAg
ZGVidWcoIiIpOworICAgICAgICAgICAgICAgIGV2YWxBbmRMb2coImF1ZGlvVHJhY2sgPSBtZWRp
YVN0cmVhbS5nZXRBdWRpb1RyYWNrcygpWzBdIik7CisgICAgICAgICAgICAgICAgY2hlY2tUcmFj
ayhhdWRpb1RyYWNrKTsKKworICAgICAgICAgICAgICAgIHZpZGVvVHJhY2sub25tdXRlID0gb25U
cmFja011dGU7CisgICAgICAgICAgICAgICAgdmlkZW9UcmFjay5vbnVubXV0ZSA9IG9uVHJhY2tV
bm11dGU7CisgICAgICAgICAgICAgICAgdmlkZW9UcmFjay5vbmVuZGVkID0gb25UcmFja0VuZGVk
OworICAgICAgICAgICAgICAgIHZpZGVvVHJhY2sub25zdGFydGVkID0gb25UcmFja1N0YXJ0ZWQ7
CisgICAgICAgICAgICAgICAgdmlkZW9UcmFjay5vbm92ZXJjb25zdHJhaW5lZCA9IG9uVHJhY2tP
dmVyQ29uc3RyYWluZWQ7CisgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICBkZWJ1ZygiIik7
CisgICAgICAgICAgICAgICAgZXZhbEFuZExvZygidmlkZW9UcmFjazIgPSB2aWRlb1RyYWNrLmNs
b25lKCkiKTsKKyAgICAgICAgICAgICAgICBjaGVja1RyYWNrKHZpZGVvVHJhY2syKTsKKyAgICAg
ICAgICAgICAgICBzaG91bGROb3RCZSgndmlkZW9UcmFjay5pZCcsICd2aWRlb1RyYWNrMi5pZCcp
OworICAgICAgICAgICAgICAgIHNob3VsZEJlKCd2aWRlb1RyYWNrLmtpbmQnLCAndmlkZW9UcmFj
azIua2luZCcpOworICAgICAgICAgICAgICAgIHNob3VsZEJlKCd2aWRlb1RyYWNrLmxhYmVsJywg
J3ZpZGVvVHJhY2syLmxhYmVsJyk7CisgICAgICAgICAgICAgICAgc2hvdWxkQmUoJ3ZpZGVvVHJh
Y2subXV0ZWQnLCAndmlkZW9UcmFjazIubXV0ZWQnKTsKKyAgICAgICAgICAgICAgICBzaG91bGRC
ZSgndmlkZW9UcmFjay5lbmFibGVkJywgJ3ZpZGVvVHJhY2syLmVuYWJsZWQnKTsKKyAgICAgICAg
ICAgICAgICBzaG91bGRCZSgndmlkZW9UcmFjay5yZWFkeVN0YXRlJywgJ3ZpZGVvVHJhY2syLnJl
YWR5U3RhdGUnKTsKKworICAgICAgICAgICAgICAgIGRlYnVnKCIiKTsKKyAgICAgICAgICAgICAg
ICBldmFsQW5kTG9nKCJ2aWRlb1RyYWNrLnN0b3AoKSIpOworICAgICAgICAgICAgfQorCisgICAg
ICAgICAgICBmdW5jdGlvbiBzdGFydCgpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAg
ZGVzY3JpcHRpb24oIlRlc3RzIE1lZGlhU3RyZWFtVHJhY2sgY2FsbGJhY2tzLiIpOworICAgICAg
ICAgICAgICAgIAorICAgICAgICAgICAgICAgIC8vIE5vdGUgdGhhdCB0aGUgYmVsb3cgYmVoYXZp
b3VyIGRvZXNuJ3QgcmVmbGVjdCBob3cgaXQgd29ya3Mgb3V0c2lkZSBvZiBMYXlvdXRUZXN0cy4K
KyAgICAgICAgICAgICAgICAvLyBUaGUgdW5kZXJseWluZyBtb2NrIGlzIG1vZGlmaWVkIHRvIHRy
aWdnZXIgdGhlIGV2ZW50cyB3aGVuIGNlcnRhaW4gZnVuY3Rpb25zIGFyZSBjYWxsZWQuCisgICAg
ICAgICAgICAgICAgLy8gVGhpcyBtb2RpZmllZCBiZWhhdmlvdXIgYWxsb3dzIHVzIHRvIHRlc3Qg
dGhlIE1lZGlhU3RyZWFtVHJhY2sgY2xhc3MgcHJvcGVybHkuCisgICAgICAgICAgICAgICAgZ2V0
VXNlck1lZGlhKHthdWRpbzp0cnVlLCB2aWRlbzp0cnVlfSwgZ290U3RyZWFtKTsKKyAgICAgICAg
ICAgIH0KKworICAgICAgICAgICAgd2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOworICAgICAg
ICAgICAgd2luZG93LnN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7CisgICAgICAgIDwvc2NyaXB0
PgorICAgIDwvaGVhZD4KKyAgICA8Ym9keSBvbmxvYWQ9InN0YXJ0KCkiPgorICAgICAgICA8cCBp
ZD0iZGVzY3JpcHRpb24iPjwvcD4KKyAgICAgICAgPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cisg
ICAgICAgIDxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3Nj
cmlwdD4KKyAgICA8L2JvZHk+CiA8L2h0bWw+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>213600</attachid>
            <date>2013-10-07 10:05:15 -0700</date>
            <delta_ts>2013-10-07 10:27:52 -0700</delta_ts>
            <desc>Updated patch</desc>
            <filename>track_spec_update_25.txt</filename>
            <type>text/plain</type>
            <size>216091</size>
            <attacher name="Eric Carlson">eric.carlson</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE1NzA0MSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE3OCBAQAorMjAxMy0xMC0wNiAgRXJpYyBD
YXJsc29uICA8ZXJpYy5jYXJsc29uQGFwcGxlLmNvbT4KKworICAgICAgICBbTWVkaWFTdHJlYW0g
QVBJXSB1cGRhdGUgTWVkaWFTdHJlYW1UcmFjayBvYmplY3QgdG8gbWF0Y2ggc3BlYworICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTIxOTQwCisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLCBl
eGlzdGluZyB0ZXN0IHVwZGF0ZWQuCisKKyAgICAgICAgQWRkIG5ldyBzb3VyY2UgZmlsZXMgdG8g
dGhlIHByb2plY3Q6CisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogRGVyaXZl
ZFNvdXJjZXMubWFrZToKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5saXN0LmFtOgorICAgICAgICAq
IFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKworICAgICAgICBOZXcgY2FwYWJp
bGl0eSBkaWN0aW9uYXJ5IG9iamVjdHM6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9B
bGxBdWRpb0NhcGFiaWxpdGllcy5oOiBBZGRlZC4KKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3Ry
ZWFtL0FsbEF1ZGlvQ2FwYWJpbGl0aWVzLmlkbDogQWRkZWQuCisgICAgICAgICogTW9kdWxlcy9t
ZWRpYXN0cmVhbS9BbGxWaWRlb0NhcGFiaWxpdGllcy5oOiBBZGRlZC4KKyAgICAgICAgKiBNb2R1
bGVzL21lZGlhc3RyZWFtL0FsbFZpZGVvQ2FwYWJpbGl0aWVzLmlkbDogQWRkZWQuCisKKyAgICAg
ICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL0F1ZGlvU3RyZWFtVHJhY2suY3BwOgorICAgICAgICAo
V2ViQ29yZTo6QXVkaW9TdHJlYW1UcmFjazo6Y3JlYXRlKTogTmV3IHZlcnNpb24gdGhhdCB0YWtl
cyBhIE1lZGlhU3RyZWFtVHJhY2sqLgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vQXVk
aW9TdHJlYW1UcmFjay5oOgorCisgICAgICAgIE5ldyBvYmplY3QgZm9yIGEgY2FwYWJpbGl0eSBy
YW5nZToKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL0NhcGFiaWxpdHlSYW5nZS5jcHA6
IEFkZGVkLgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vQ2FwYWJpbGl0eVJhbmdlLmg6
IEFkZGVkLgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vQ2FwYWJpbGl0eVJhbmdlLmlk
bDogQWRkZWQuCisKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhQ29uc3RyYWlu
dHNJbXBsLmg6IE1ha2UgaW5pdGlhbGl6ZSgpIHB1YmxpYy4KKworICAgICAgICBOZXcgb2JqZWN0
IGZvciB0aGUgY3VycmVudCBzdGF0ZXMgZm9yIGEgbWVkaWEgc291cmNlLgorICAgICAgICAqIE1v
ZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTb3VyY2VTdGF0ZXMuY3BwOiBBZGRlZC4KKyAgICAgICAg
KiBNb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU291cmNlU3RhdGVzLmg6IEFkZGVkLgorICAgICAg
ICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTb3VyY2VTdGF0ZXMuaWRsOiBBZGRlZC4KKwor
ICAgICAgICBEb24ndCBjYWxsIHRoZSBtZWRpYSBzdHJlYW0gY2VudGVyIHRvIG5vdGlmeSBpdCB3
aGVuIHRoZSBzdGF0ZSBvZiBvdGhlcgorICAgICAgICBvYmplY3RzIGNoYW5nZS4KKyAgICAgICAg
KiBNb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OnByb2Nlc3NUcmFjayk6IFJlbW92ZSB0aGUgc3RyZWFtIHNvdXJjZSBkdXBsaWNhdGlvbiBoYWNr
LgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlRnJvbVNvdXJjZVZlY3RvcnMpOiAKKyAgICAgICAg
KFdlYkNvcmU6Ok1lZGlhU3RyZWFtOjpNZWRpYVN0cmVhbSk6CisgICAgICAgIChXZWJDb3JlOjpN
ZWRpYVN0cmVhbTo6YWRkVHJhY2spOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTdHJlYW06OnJl
bW92ZVRyYWNrKToKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtLmg6
CisKKyAgICAgICAgTmV3IG9iamVjdCBmb3IgdGhlIGNhcGFiaWxpdGllcyBvZiBhIHNvdXJjZS4K
KyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtQ2FwYWJpbGl0aWVzLmNw
cDogQWRkZWQuCisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbUNhcGFi
aWxpdGllcy5oOiBBZGRlZC4KKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3Ry
ZWFtQ2FwYWJpbGl0aWVzLmlkbDogQWRkZWQuCisKKyAgICAgICAgVXBkYXRlIGludGVyZmFjZSB0
byBtYXRjaCBzcGVjLgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1U
cmFjay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbVRyYWNrOjpNZWRpYVN0cmVh
bVRyYWNrKTogRGVmaW5lIGEgY29weSBjb25zdHJ1Y3RvciB0byB1c2UgaW4gY2xvbmUoKS4KKyAg
ICAgICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFtVHJhY2s6OnNldFNvdXJjZSk6IENhbGwgcmVtb3Zl
T2JzZXJ2ZXIgaWYgdGhlIHRyYWNrIGFscmVhZHkgaGFzIGEgc291cmNlLgorICAgICAgICAgICAg
SW5pdGlhbGl6ZSBtX211dGVkIGZyb20gbmV3IHNvdXJjZSdzIG11dGVkIHN0YXRlLgorICAgICAg
ICAoV2ViQ29yZTo6TWVkaWFTdHJlYW1UcmFjazo6aWQpOiBBbGxvdyBzb3VyY2UgdG8gcHJvdmlk
ZSBJRCBhcyB0aGUgc3BlYyBzdWdnZXN0cy4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFt
VHJhY2s6OnNldEVuYWJsZWQpOiBBZGQgc29tZSBzcGVjIHRleHQgdG8gY2xhcmlmeSBsb2dpYy4g
QWx3YXlzIGNhbGwKKyAgICAgICAgICAgIHNvdXJjZS0+c2V0RW5hYmxlZCwgaXQgY2FuIGZpZ3Vy
ZSBvdXQgaWYgbm90aGluZyBuZWVkcyB0byBiZSBkb25lLgorICAgICAgICAoV2ViQ29yZTo6TWVk
aWFTdHJlYW1UcmFjazo6bXV0ZWQpOiBEb24ndCBjYWxsIHRoZSBzdHJlYW0gY2VudGVyIHdoZW4g
bXV0ZWQgY2hhbmdlcywgdGhlCisgICAgICAgICAgICBzb3VyY2UgY2FuIHRha2UgY2FyZSBvZiBu
b3RpZnlpbmcgaW50ZXJlc3RlZCBwYXJ0aWVzLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTdHJl
YW1UcmFjazo6cmVhZG9ubHkpOiBOZXcuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbVRy
YWNrOjpyZW1vdGUpOiBOZXcuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbVRyYWNrOjpj
b25zdHJhaW50cyk6IE5ldy4gCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbVRyYWNrOjpz
dGF0ZXMpOiBOZXcuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbVRyYWNrOjpjYXBhYmls
aXRpZXMpOiBOZXcuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbVRyYWNrOjphcHBseUNv
bnN0cmFpbnRzKTogTmV3LgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTdHJlYW1UcmFjazo6Y2xv
bmUpOiBOZXcuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbVRyYWNrOjpzdG9wUHJvZHVj
aW5nRGF0YSk6IE5ldy4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFtVHJhY2s6OnNvdXJj
ZVN0YXRlQ2hhbmdlZCk6IFJlbmFtZWQgZnJvbSBzb3VyY2VDaGFuZ2VkU3RhdGUuCisgICAgICAg
IChXZWJDb3JlOjpNZWRpYVN0cmVhbVRyYWNrOjpzb3VyY2VNdXRlZENoYW5nZWQpOiBOZXcuCisg
ICAgICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbVRyYWNrOjpzb3VyY2VFbmFibGVkQ2hhbmdlZCk6
IE5ldy4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFtVHJhY2s6OmNvbmZpZ3VyZVRyYWNr
UmVuZGVyaW5nKTogTmV3LgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTdHJlYW1UcmFjazo6c3Rv
cHBlZCk6IE5ldy4gCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbVRyYWNrOjpzdG9wKTog
Q2FsbCBzdG9wUHJvZHVjaW5nRGF0YS4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFtVHJh
Y2s6OnNjaGVkdWxlRXZlbnREaXNwYXRjaCk6IE5ldy4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlh
U3RyZWFtVHJhY2s6OmRpc3BhdGNoUXVldWVkRXZlbnRzKTogTmV3LgorICAgICAgICAqIE1vZHVs
ZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1UcmFjay5oOgorICAgICAgICAqIE1vZHVsZXMvbWVk
aWFzdHJlYW0vTWVkaWFTdHJlYW1UcmFjay5pZGw6CisKKyAgICAgICAgKiBNb2R1bGVzL21lZGlh
c3RyZWFtL01lZGlhVHJhY2tDb25zdHJhaW50LmNwcDogQWRkZWQuCisgICAgICAgICogTW9kdWxl
cy9tZWRpYXN0cmVhbS9NZWRpYVRyYWNrQ29uc3RyYWludC5oOiBBZGRlZC4KKyAgICAgICAgKiBN
b2R1bGVzL21lZGlhc3RyZWFtL01lZGlhVHJhY2tDb25zdHJhaW50LmlkbDogQWRkZWQuCisKKyAg
ICAgICAgLy8gQWRkIGVtcHR5IGNsYXNzZXMvSURMIGZvciB0cmFjayBjb25zdHJhaW50IG9iamVj
dHMuCisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVRyYWNrQ29uc3RyYWludFNl
dC5jcHA6IEFkZGVkLgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFUcmFja0Nv
bnN0cmFpbnRTZXQuaDogQWRkZWQuCisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRp
YVRyYWNrQ29uc3RyYWludFNldC5pZGw6IEFkZGVkLgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFz
dHJlYW0vTWVkaWFUcmFja0NvbnN0cmFpbnRzLmNwcDogQWRkZWQuCisgICAgICAgICogTW9kdWxl
cy9tZWRpYXN0cmVhbS9NZWRpYVRyYWNrQ29uc3RyYWludHMuaDogQWRkZWQuCisgICAgICAgICog
TW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVRyYWNrQ29uc3RyYWludHMuaWRsOiBBZGRlZC4KKwor
ICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vVXNlck1lZGlhUmVxdWVzdC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpVc2VyTWVkaWFSZXF1ZXN0OjpjYWxsU3VjY2Vzc0hhbmRsZXIpOiBEb24n
dCBjYWxsIHRoZSBzdHJlYW0gY2VudGVyLCB0aGUKKyAgICAgICAgICAgIHN0cmVhbSBjYW4gdGFr
ZSBjYXJlIG9mIG5vdGlmeWluZyBpbnRlcmVzdGVkIHBhcnRpZXMuCisKKyAgICAgICAgLy8gQWRk
IGEgY29uc3RydWN0b3IgYW5kIGNyZWF0ZSgpIHRoYXQgdGFrZSBhIE1lZGlhU3RyZWFtVHJhY2sq
LgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vVmlkZW9TdHJlYW1UcmFjay5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpWaWRlb1N0cmVhbVRyYWNrOjpjcmVhdGUpOiAKKyAgICAgICAgKFdl
YkNvcmU6OlZpZGVvU3RyZWFtVHJhY2s6OlZpZGVvU3RyZWFtVHJhY2spOgorICAgICAgICAqIE1v
ZHVsZXMvbWVkaWFzdHJlYW0vVmlkZW9TdHJlYW1UcmFjay5oOgorCisgICAgICAgIC8vIENyZWF0
ZSBhIE1lZGlhU3RyZWFtU291cmNlIHN1YmNsYXNzIGZvciBXZWJBdWRpbworICAgICAgICAqIE1v
ZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlv
Q29udGV4dDo6Y3JlYXRlTWVkaWFTdHJlYW1Tb3VyY2UpOiBDYWxsIGlzQXVkaW9TdHJlYW1Tb3Vy
Y2UgaW5zdGVhZAorICAgICAgICAgICAgb2YgY2hlY2tpbmcgZGV2aWNlSUQuCisgICAgICAgICog
TW9kdWxlcy93ZWJhdWRpby9NZWRpYVN0cmVhbUF1ZGlvRGVzdGluYXRpb25Ob2RlLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFtQXVkaW9EZXN0aW5hdGlvbk5vZGU6Ok1lZGlhU3Ry
ZWFtQXVkaW9EZXN0aW5hdGlvbk5vZGUpOiBDcmVhdGUgYQorICAgICAgICAgICAgTWVkaWFTdHJl
YW1BdWRpb1NvdXJjZSBpbnN0ZWFkIG9mIGEgTWVkaWFTdHJlYW1Tb3VyY2UuCisgICAgICAgICog
TW9kdWxlcy93ZWJhdWRpby9NZWRpYVN0cmVhbUF1ZGlvRGVzdGluYXRpb25Ob2RlLmg6CisgICAg
ICAgICogTW9kdWxlcy93ZWJhdWRpby9NZWRpYVN0cmVhbUF1ZGlvU291cmNlLmNwcDogQWRkZWQu
CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9NZWRpYVN0cmVhbUF1ZGlvU291cmNlLmg6IEFk
ZGVkLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTdHJlYW1BdWRpb1NvdXJjZTo6fk1lZGlhU3Ry
ZWFtQXVkaW9Tb3VyY2UpOgorCisgICAgICAgIC8vIEFkZCBuZXcgZ2VuZXJhdGVkIGZpbGVzLgor
ICAgICAgICAqIGJpbmRpbmdzL2pzL0pTTWVkaWFTb3VyY2VTdGF0ZXNDdXN0b20uY3BwOiBBZGRl
ZC4KKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU01lZGlhU3RyZWFtQ2FwYWJpbGl0aWVzQ3VzdG9t
LmNwcDogQWRkZWQuCisKKyAgICAgICAgKiBkb20vRXZlbnROYW1lcy5oOiBEZWZpbmVkICdvdmVy
Y29uc3RyYWluZWQnIGV2ZW50LgorCisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVk
aWFTdHJlYW1DZW50ZXIuaDogR2V0IHJpZCBvZiBhbGwgb2YgdGhlIG1ldGhvZHMgbm9ib2R5IHVz
ZXMuCisgICAgICAgICAgICBJdCBpc24ndCBjbGVhciB0aGF0IHRoZXkgYXJlIG5lY2Vzc2FyeSwg
YW5kIHdlIGNhbiBhZGQgdGhlbSBiYWNrIGlmL3doZW4gd2UgbmVlZCB0aGVtLgorCisgICAgICAg
ICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1EZXNjcmlwdG9yLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFtRGVzY3JpcHRvcjo6fk1lZGlhU3RyZWFtRGVzY3JpcHRv
cik6IENsZWFyIHRoZSBhbGwgc291cmNlIHN0cmVhbXMuCisgICAgICAgIChXZWJDb3JlOjpNZWRp
YVN0cmVhbURlc2NyaXB0b3I6OnJlbW92ZVNvdXJjZSk6IENsZWFyIHRoZSBzb3VyY2Ugc3RyZWFt
LgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtRGVzY3JpcHRvci5o
OgorCisgICAgICAgIC8vIE1ha2UgTWVkaWFTdHJlYW1Tb3VyY2UgYW4gYWJzdHJhY3QgYmFzZSBj
bGFzcywgYW5kIHJlbW92ZSBldmVyeXRpbmcgV2ViQXVkaW8tc3BlY2lmaWMKKyAgICAgICAgLy8g
IHRvIE1lZGlhU3RyZWFtQXVkaW9Tb3VyY2UuIAorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3Ry
ZWFtL01lZGlhU3RyZWFtU291cmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFt
U291cmNlOjpNZWRpYVN0cmVhbVNvdXJjZSk6IFJlbW92ZSByZWFkeVN0YXRlIGFuZCByZXF1aXJl
c0NvbnN1bWVyCisgICAgICAgICAgICBwYXJhbWV0ZXJzLiBDcmVhdGUgbmV3IFVVSUQgZm9yIGlk
IGlmIG5vbiB3YXMgcGFzc2VkLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTdHJlYW1Tb3VyY2U6
OnJlc2V0KTogUmVzZXQgaW50ZXJuYWwgc3RhdGUgdG8ganVzdC1jb25zdHJ1Y3RlZC4gVXNlZCBm
b3IgdGVzdGluZy4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFtU291cmNlOjpzZXRSZWFk
eVN0YXRlKTogc291cmNlQ2hhbmdlZFN0YXRlIC0+IHNvdXJjZVN0YXRlQ2hhbmdlZC4KKyAgICAg
ICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFtU291cmNlOjpzZXRTdHJlYW0pOiBSZW1vdmUgdGhlIEFT
U0VSVCB0aGF0IGNoZWNrIGZvciBhIHNvdXJjZSBiZWluZworICAgICAgICAgICAgYWRkZWQgdG8g
YSBuZXcgc3RyZWFtLiBUaGlzIGlzIHN0aWxsIGEgcHJvYmxlbSwgYnV0IGl0IGlzIHJlcXVpcmVk
IGZvciB0ZXN0aW5nIGFuZCB3aWxsCisgICAgICAgICAgICBiZSBmaXhlZCBhcyBhIHBhcnQgb2Yg
YnVnIDEyMTk1NC4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFtU291cmNlOjpzZXRDb25z
dHJhaW50cyk6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTdHJlYW1Tb3VyY2U6OnNl
dE11dGVkKTogTm90aWZ5IG9ic2VydmVycyB3aGVuIG11dGVkIGNoYW5nZXMuCisgICAgICAgIChX
ZWJDb3JlOjpNZWRpYVN0cmVhbVNvdXJjZTo6c2V0RW5hYmxlZCk6IE5vdGlmeSBvYnNlcnZlcnMg
d2hlbiBlbmFibGVkIGNoYW5nZXMuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbVNvdXJj
ZTo6cmVhZG9ubHkpOiBOZXcuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbVNvdXJjZTo6
c3RvcCk6IE5ldy4gU2V0IHN0YXRlIHRvIEVuZGVkIHdoZW4gYWxsIG9mIHRoZSBvYnNlcnZlcnMg
aGFzCisgICAgICAgICAgICBzdG9wcGVkLgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFt
L01lZGlhU3RyZWFtU291cmNlLmg6CisKKyAgICAgICAgLy8gRGVmaW5lIHBsYXRmb3JtIHZlcnNp
b25zIG9mIHRoZSBDYXBhYmlsaXRpZXMgY2xhc3Nlcy4KKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRp
YXN0cmVhbS9NZWRpYVN0cmVhbVNvdXJjZUNhcGFiaWxpdGllcy5oOiBBZGRlZC4KKworICAgICAg
ICAvLyBVcGRhdGUgdGhlIG5vbi1mdW5jdGlvbmFsIHBsYXRmb3JtIHN0cmVhbSBjZW50ZXJzIGZv
ciB0aGUgQVBJIGNoYW5nZXMuCisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vYmxhY2ti
ZXJyeS9NZWRpYVN0cmVhbUNlbnRlckJsYWNrQmVycnkuY3BwOgorICAgICAgICAqIHBsYXRmb3Jt
L21lZGlhc3RyZWFtL2JsYWNrYmVycnkvTWVkaWFTdHJlYW1DZW50ZXJCbGFja0JlcnJ5Lmg6Cisg
ICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vZ3N0cmVhbWVyL01lZGlhU3RyZWFtQ2VudGVy
R1N0cmVhbWVyLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9nc3RyZWFtZXIv
TWVkaWFTdHJlYW1DZW50ZXJHU3RyZWFtZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0
cmVhbS9tYWMvTWVkaWFTdHJlYW1DZW50ZXJNYWMuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL21l
ZGlhc3RyZWFtL21hYy9NZWRpYVN0cmVhbUNlbnRlck1hYy5oOgorCisgICAgICAgIC8vIFVwZGF0
ZSB0aGUgTW9jayBzdHJlYW0gY2VudGVyIGZvciB0aGUgQVBJIGNoYW5nZXMuIEFkZCBhIGNvbmNy
ZXRlIG1vY2sgTWVkaWFTdHJlYW1Tb3VyY2UKKyAgICAgICAgLy8gIHN1YmNsYXNzLgorICAgICAg
ICAqIHBsYXRmb3JtL21vY2svTW9ja01lZGlhU3RyZWFtQ2VudGVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6Ok1vY2tTb3VyY2U6Ok1vY2tTb3VyY2UpOiBOZXcsIHRoZSBtb2NrIG1lZGlhIHN0cmVh
bSBzb3VyY2UuCisgICAgICAgIChXZWJDb3JlOjpNb2NrU291cmNlOjp+TW9ja1NvdXJjZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpNb2NrU291cmNlOjpjYXBhYmlsaXRpZXMpOgorICAgICAgICAoV2Vi
Q29yZTo6TW9ja1NvdXJjZTo6c3RhdGVzKToKKyAgICAgICAgKFdlYkNvcmU6Om1vY2tTb3VyY2VN
YXApOgorICAgICAgICAoV2ViQ29yZTo6bW9ja0F1ZGlvU291cmNlSUQpOgorICAgICAgICAoV2Vi
Q29yZTo6bW9ja1ZpZGVvU291cmNlSUQpOgorICAgICAgICAoV2ViQ29yZTo6aW5pdGlhbGl6ZU1v
Y2tTb3VyY2VzKTogQ3JlYXRlIG9uZSBhdWRpbyBhbmQgb25lIHZpZGVvIG1vY2sgc291cmNlLgor
ICAgICAgICAoV2ViQ29yZTo6TW9ja01lZGlhU3RyZWFtQ2VudGVyOjpyZWdpc3Rlck1vY2tNZWRp
YVN0cmVhbUNlbnRlcik6IENhbGwgaW5pdGlhbGl6ZU1vY2tTb3VyY2VzLgorICAgICAgICAoV2Vi
Q29yZTo6TW9ja01lZGlhU3RyZWFtQ2VudGVyOjpjcmVhdGVNZWRpYVN0cmVhbSk6IFVzZSB0aGUg
YWxyZWFkeSBhbGxvY2F0ZWQgbW9jayBtZWRpYQorICAgICAgICAgICAgc291cmNlcy4KKyAgICAg
ICAgKFdlYkNvcmU6Ok1vY2tNZWRpYVN0cmVhbUNlbnRlcjo6Z2V0TWVkaWFTdHJlYW1UcmFja1Nv
dXJjZXMpOiBEaXR0by4KKyAgICAgICAgKiBwbGF0Zm9ybS9tb2NrL01vY2tNZWRpYVN0cmVhbUNl
bnRlci5oOgorCiAyMDEzLTEwLTA3ICBQaGlsaXBwZSBOb3JtYW5kICA8cG5vcm1hbmRAaWdhbGlh
LmNvbT4KIAogICAgICAgICBVUkxNZWRpYVN0cmVhbSBpcyB1bmd1YXJkZWQgYnkgRU5BQkxFKE1F
RElBX1NUUkVBTSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0Cj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CShyZXZpc2lvbiAxNTcwMTYpCisr
KyBTb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMTg2LDEy
ICsxODYsMjAgQEAgc2V0KFdlYkNvcmVfSURMX0ZJTEVTCiAgICAgTW9kdWxlcy9tZWRpYXNvdXJj
ZS9XZWJLaXRTb3VyY2VCdWZmZXIuaWRsCiAgICAgTW9kdWxlcy9tZWRpYXNvdXJjZS9XZWJLaXRT
b3VyY2VCdWZmZXJMaXN0LmlkbAogCisgICAgTW9kdWxlcy9tZWRpYXN0cmVhbS9BbGxBdWRpb0Nh
cGFiaWxpdGllcy5pZGwKKyAgICBNb2R1bGVzL21lZGlhc3RyZWFtL0FsbFZpZGVvQ2FwYWJpbGl0
aWVzLmlkbAogICAgIE1vZHVsZXMvbWVkaWFzdHJlYW0vQXVkaW9TdHJlYW1UcmFjay5pZGwKKyAg
ICBNb2R1bGVzL21lZGlhc3RyZWFtL0NhcGFiaWxpdHlSYW5nZS5pZGwKKyAgICBNb2R1bGVzL21l
ZGlhc3RyZWFtL01lZGlhU291cmNlU3RhdGVzLmlkbAogICAgIE1vZHVsZXMvbWVkaWFzdHJlYW0v
TWVkaWFTdHJlYW0uaWRsCisgICAgTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbUNhcGFi
aWxpdGllcy5pZGwKICAgICBNb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtRXZlbnQuaWRs
CiAgICAgTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVRyYWNrLmlkbAogICAgIE1vZHVs
ZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1UcmFja0V2ZW50LmlkbAogICAgIE1vZHVsZXMvbWVk
aWFzdHJlYW0vTWVkaWFTdHJlYW1UcmFja1NvdXJjZXNDYWxsYmFjay5pZGwKKyAgICBNb2R1bGVz
L21lZGlhc3RyZWFtL01lZGlhVHJhY2tDb25zdHJhaW50LmlkbAorICAgIE1vZHVsZXMvbWVkaWFz
dHJlYW0vTWVkaWFUcmFja0NvbnN0cmFpbnRTZXQuaWRsCisgICAgTW9kdWxlcy9tZWRpYXN0cmVh
bS9NZWRpYVRyYWNrQ29uc3RyYWludHMuaWRsCiAgICAgTW9kdWxlcy9tZWRpYXN0cmVhbS9OYXZp
Z2F0b3JNZWRpYVN0cmVhbS5pZGwKICAgICBNb2R1bGVzL21lZGlhc3RyZWFtL05hdmlnYXRvclVz
ZXJNZWRpYUVycm9yLmlkbAogICAgIE1vZHVsZXMvbWVkaWFzdHJlYW0vTmF2aWdhdG9yVXNlck1l
ZGlhRXJyb3JDYWxsYmFjay5pZGwKQEAgLTc4NiwxMyArNzk0LDE5IEBAIHNldChXZWJDb3JlX1NP
VVJDRVMKICAgICBNb2R1bGVzL21lZGlhc291cmNlL1NvdXJjZUJ1ZmZlckxpc3QuY3BwCiAKICAg
ICBNb2R1bGVzL21lZGlhc3RyZWFtL0F1ZGlvU3RyZWFtVHJhY2suY3BwCisgICAgTW9kdWxlcy9t
ZWRpYXN0cmVhbS9DYXBhYmlsaXR5UmFuZ2UuY3BwCiAgICAgTW9kdWxlcy9tZWRpYXN0cmVhbS9N
ZWRpYUNvbnN0cmFpbnRzSW1wbC5jcHAKKyAgICBNb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU291
cmNlU3RhdGVzLmNwcAogICAgIE1vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW0uY3BwCisg
ICAgTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbUNhcGFiaWxpdGllcy5jcHAKICAgICBN
b2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtRXZlbnQuY3BwCiAgICAgTW9kdWxlcy9tZWRp
YXN0cmVhbS9NZWRpYVN0cmVhbVJlZ2lzdHJ5LmNwcAogICAgIE1vZHVsZXMvbWVkaWFzdHJlYW0v
TWVkaWFTdHJlYW1UcmFjay5jcHAKICAgICBNb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFt
VHJhY2tFdmVudC5jcHAKICAgICBNb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJhY2tT
b3VyY2VzUmVxdWVzdC5jcHAKKyAgICBNb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhVHJhY2tDb25z
dHJhaW50LmNwcAorICAgIE1vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFUcmFja0NvbnN0cmFpbnRT
ZXQuY3BwCisgICAgTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVRyYWNrQ29uc3RyYWludHMuY3Bw
CiAgICAgTW9kdWxlcy9tZWRpYXN0cmVhbS9OYXZpZ2F0b3JNZWRpYVN0cmVhbS5jcHAKICAgICBN
b2R1bGVzL21lZGlhc3RyZWFtL05hdmlnYXRvclVzZXJNZWRpYUVycm9yLmNwcAogICAgIE1vZHVs
ZXMvbWVkaWFzdHJlYW0vUlRDRFRNRlNlbmRlci5jcHAKQEAgLTg2Myw2ICs4NzcsNyBAQCBzZXQo
V2ViQ29yZV9TT1VSQ0VTCiAgICAgTW9kdWxlcy93ZWJhdWRpby9HYWluTm9kZS5jcHAKICAgICBN
b2R1bGVzL3dlYmF1ZGlvL01lZGlhRWxlbWVudEF1ZGlvU291cmNlTm9kZS5jcHAKICAgICBNb2R1
bGVzL3dlYmF1ZGlvL01lZGlhU3RyZWFtQXVkaW9EZXN0aW5hdGlvbk5vZGUuY3BwCisgICAgTW9k
dWxlcy93ZWJhdWRpby9NZWRpYVN0cmVhbUF1ZGlvU291cmNlLmNwcAogICAgIE1vZHVsZXMvd2Vi
YXVkaW8vTWVkaWFTdHJlYW1BdWRpb1NvdXJjZU5vZGUuY3BwCiAgICAgTW9kdWxlcy93ZWJhdWRp
by9PZmZsaW5lQXVkaW9Db21wbGV0aW9uRXZlbnQuY3BwCiAgICAgTW9kdWxlcy93ZWJhdWRpby9P
ZmZsaW5lQXVkaW9Db250ZXh0LmNwcApJbmRleDogU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJj
ZXMubWFrZQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtl
CShyZXZpc2lvbiAxNTcwMTYpCisrKyBTb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtl
CSh3b3JraW5nIGNvcHkpCkBAIC0xMDEsMTIgKzEwMSwyMCBAQCBCSU5ESU5HX0lETFMgPSBcCiAg
ICAgJChXZWJDb3JlKS9Nb2R1bGVzL21lZGlhc291cmNlL1dlYktpdFNvdXJjZUJ1ZmZlckxpc3Qu
aWRsIFwKICAgICAkKFdlYkNvcmUpL01vZHVsZXMvbWVkaWFzb3VyY2UvU291cmNlQnVmZmVyLmlk
bCBcCiAgICAgJChXZWJDb3JlKS9Nb2R1bGVzL21lZGlhc291cmNlL1NvdXJjZUJ1ZmZlckxpc3Qu
aWRsIFwKKwkkKFdlYkNvcmUpL01vZHVsZXMvbWVkaWFzdHJlYW0vQWxsVmlkZW9DYXBhYmlsaXRp
ZXMuaWRsIFwKKwkkKFdlYkNvcmUpL01vZHVsZXMvbWVkaWFzdHJlYW0vQWxsQXVkaW9DYXBhYmls
aXRpZXMuaWRsIFwKIAkkKFdlYkNvcmUpL01vZHVsZXMvbWVkaWFzdHJlYW0vQXVkaW9TdHJlYW1U
cmFjay5pZGwgXAorICAgICQoV2ViQ29yZSkvTW9kdWxlcy9tZWRpYXN0cmVhbS9DYXBhYmlsaXR5
UmFuZ2UuaWRsIFwKKyAgICAkKFdlYkNvcmUpL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTb3Vy
Y2VTdGF0ZXMuaWRsIFwKIAkkKFdlYkNvcmUpL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJl
YW0uaWRsIFwKKwkkKFdlYkNvcmUpL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1DYXBh
YmlsaXRpZXMuaWRsIFwKICAgICAkKFdlYkNvcmUpL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFT
dHJlYW1FdmVudC5pZGwgXAogICAgICQoV2ViQ29yZSkvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRp
YVN0cmVhbVRyYWNrLmlkbCBcCiAgICAgJChXZWJDb3JlKS9Nb2R1bGVzL21lZGlhc3RyZWFtL01l
ZGlhU3RyZWFtVHJhY2tFdmVudC5pZGwgXAogICAgICQoV2ViQ29yZSkvTW9kdWxlcy9tZWRpYXN0
cmVhbS9NZWRpYVN0cmVhbVRyYWNrU291cmNlc0NhbGxiYWNrLmlkbCBcCisgICAgJChXZWJDb3Jl
KS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhVHJhY2tDb25zdHJhaW50LmlkbCBcCisgICAgJChX
ZWJDb3JlKS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhVHJhY2tDb25zdHJhaW50cy5pZGwgXAor
ICAgICQoV2ViQ29yZSkvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVRyYWNrQ29uc3RyYWludFNl
dC5pZGwgXAogICAgICQoV2ViQ29yZSkvTW9kdWxlcy9tZWRpYXN0cmVhbS9OYXZpZ2F0b3JNZWRp
YVN0cmVhbS5pZGwgXAogICAgICQoV2ViQ29yZSkvTW9kdWxlcy9tZWRpYXN0cmVhbS9OYXZpZ2F0
b3JVc2VyTWVkaWFFcnJvci5pZGwgXAogICAgICQoV2ViQ29yZSkvTW9kdWxlcy9tZWRpYXN0cmVh
bS9OYXZpZ2F0b3JVc2VyTWVkaWFFcnJvckNhbGxiYWNrLmlkbCBcCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL0dO
VW1ha2VmaWxlLmxpc3QuYW0JKHJldmlzaW9uIDE1NzAxNikKKysrIFNvdXJjZS9XZWJDb3JlL0dO
VW1ha2VmaWxlLmxpc3QuYW0JKHdvcmtpbmcgY29weSkKQEAgLTMxLDYgKzMxLDEwIEBAIHdlYmNv
cmVfYnVpbHRfc291cmNlcyArPSBcCiAJRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9JbnNwZWN0b3JQ
cm90b2NvbFZlcnNpb24uaCBcCiAJRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0Fic3RyYWN0V29y
a2VyLmNwcCBcCiAJRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0Fic3RyYWN0V29ya2VyLmggXAor
CURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNBbGxBdWRpb0NhcGFiaWxpdGllcy5jcHAgXAorCURl
cml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNBbGxBdWRpb0NhcGFiaWxpdGllcy5oIFwKKwlEZXJpdmVk
U291cmNlcy9XZWJDb3JlL0pTQWxsVmlkZW9DYXBhYmlsaXRpZXMuY3BwIFwKKwlEZXJpdmVkU291
cmNlcy9XZWJDb3JlL0pTQWxsVmlkZW9DYXBhYmlsaXRpZXMuaCBcCiAJRGVyaXZlZFNvdXJjZXMv
V2ViQ29yZS9KU0F0dHIuY3BwIFwKIAlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTQXR0ci5oIFwK
IAlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTQXVkaW9CdWZmZXIuY3BwIFwKQEAgLTg3LDYgKzkx
LDggQEAgd2ViY29yZV9idWlsdF9zb3VyY2VzICs9IFwKIAlEZXJpdmVkU291cmNlcy9XZWJDb3Jl
L0pTQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmggXAogCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUv
SlNDYW52YXNSZW5kZXJpbmdDb250ZXh0LmNwcCBcCiAJRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9K
U0NhbnZhc1JlbmRlcmluZ0NvbnRleHQuaCBcCisJRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0Nh
cGFiaWxpdHlSYW5nZS5jcHAgXAorCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNDYXBhYmlsaXR5
UmFuZ2UuaCBcCiAJRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0NEQVRBU2VjdGlvbi5jcHAgXAog
CURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNDREFUQVNlY3Rpb24uaCBcCiAJRGVyaXZlZFNvdXJj
ZXMvV2ViQ29yZS9KU0NoYXJhY3RlckRhdGEuY3BwIFwKQEAgLTQ2MiwxMiArNDY4LDE4IEBAIHdl
YmNvcmVfYnVpbHRfc291cmNlcyArPSBcCiAJRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU01lZGlh
U291cmNlLmggXAogCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNXZWJLaXRNZWRpYVNvdXJjZS5j
cHAgXAogCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNXZWJLaXRNZWRpYVNvdXJjZS5oIFwKKwlE
ZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTTWVkaWFTb3VyY2VTdGF0ZXMuY3BwIFwKKwlEZXJpdmVk
U291cmNlcy9XZWJDb3JlL0pTTWVkaWFTb3VyY2VTdGF0ZXMuaCBcCisJRGVyaXZlZFNvdXJjZXMv
V2ViQ29yZS9KU01lZGlhU291cmNlU3RhdGVzQ3VzdG9tLmNwcCBcCiAJRGVyaXZlZFNvdXJjZXMv
V2ViQ29yZS9KU01lZGlhU3RyZWFtLmNwcCBcCiAJRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU01l
ZGlhU3RyZWFtLmggXAogCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNNZWRpYVN0cmVhbUF1ZGlv
U291cmNlTm9kZS5jcHAgXAogCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNNZWRpYVN0cmVhbUF1
ZGlvU291cmNlTm9kZS5oIFwKIAlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTTWVkaWFTdHJlYW1B
dWRpb0Rlc3RpbmF0aW9uTm9kZS5jcHAgXAogCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNNZWRp
YVN0cmVhbUF1ZGlvRGVzdGluYXRpb25Ob2RlLmggXAorCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUv
SlNNZWRpYVN0cmVhbUNhcGFiaWxpdGllcy5jcHAgXAorCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUv
SlNNZWRpYVN0cmVhbUNhcGFiaWxpdGllcy5oIFwKKwlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pT
TWVkaWFTdHJlYW1DYXBhYmlsaXRpZXNDdXN0b20uY3BwIFwKIAlEZXJpdmVkU291cmNlcy9XZWJD
b3JlL0pTTWVkaWFTdHJlYW1FdmVudC5jcHAgXAogCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNN
ZWRpYVN0cmVhbUV2ZW50LmggXAogCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNNZWRpYVN0cmVh
bVRyYWNrLmNwcCBcCkBAIC00ODAsNiArNDkyLDEyIEBAIHdlYmNvcmVfYnVpbHRfc291cmNlcyAr
PSBcCiAJRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU01lZGlhUXVlcnlMaXN0LmggXAogCURlcml2
ZWRTb3VyY2VzL1dlYkNvcmUvSlNNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyLmNwcCBcCiAJRGVyaXZl
ZFNvdXJjZXMvV2ViQ29yZS9KU01lZGlhUXVlcnlMaXN0TGlzdGVuZXIuaCBcCisJRGVyaXZlZFNv
dXJjZXMvV2ViQ29yZS9KU01lZGlhVHJhY2tDb25zdHJhaW50LmNwcCBcCisJRGVyaXZlZFNvdXJj
ZXMvV2ViQ29yZS9KU01lZGlhVHJhY2tDb25zdHJhaW50LmggXAorCURlcml2ZWRTb3VyY2VzL1dl
YkNvcmUvSlNNZWRpYVRyYWNrQ29uc3RyYWludHMuY3BwIFwKKwlEZXJpdmVkU291cmNlcy9XZWJD
b3JlL0pTTWVkaWFUcmFja0NvbnN0cmFpbnRzLmggXAorCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUv
SlNNZWRpYVRyYWNrQ29uc3RyYWludFNldC5jcHAgXAorCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUv
SlNNZWRpYVRyYWNrQ29uc3RyYWludFNldC5oIFwKIAlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pT
TWVzc2FnZUNoYW5uZWwuY3BwIFwKIAlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTTWVzc2FnZUNo
YW5uZWwuaCBcCiAJRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU01lc3NhZ2VFdmVudC5jcHAgXApA
QCAtMTE4NiwxMiArMTIwNCwyMCBAQCBkb21fYmluZGluZ19pZGxzICs9IFwKIAkkKFdlYkNvcmUp
L01vZHVsZXMvbWVkaWFzb3VyY2UvV2ViS2l0TWVkaWFTb3VyY2UuaWRsIFwKIAkkKFdlYkNvcmUp
L01vZHVsZXMvbWVkaWFzb3VyY2UvV2ViS2l0U291cmNlQnVmZmVyLmlkbCBcCiAJJChXZWJDb3Jl
KS9Nb2R1bGVzL21lZGlhc291cmNlL1dlYktpdFNvdXJjZUJ1ZmZlckxpc3QuaWRsIFwKKwkkKFdl
YkNvcmUpL01vZHVsZXMvbWVkaWFzdHJlYW0vQWxsVmlkZW9DYXBhYmlsaXRpZXMuaWRsIFwKKwkk
KFdlYkNvcmUpL01vZHVsZXMvbWVkaWFzdHJlYW0vQWxsQXVkaW9DYXBhYmlsaXRpZXMuaWRsIFwK
IAkkKFdlYkNvcmUpL01vZHVsZXMvbWVkaWFzdHJlYW0vQXVkaW9TdHJlYW1UcmFjay5pZGwgXAor
CSQoV2ViQ29yZSkvTW9kdWxlcy9tZWRpYXN0cmVhbS9DYXBhYmlsaXR5UmFuZ2UuaWRsIFwKKwkk
KFdlYkNvcmUpL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTb3VyY2VTdGF0ZXMuaWRsIFwKIAkk
KFdlYkNvcmUpL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW0uaWRsIFwKKwkkKFdlYkNv
cmUpL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1DYXBhYmlsaXRpZXMuaWRsIFwKIAkk
KFdlYkNvcmUpL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1FdmVudC5pZGwgXAogCSQo
V2ViQ29yZSkvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVRyYWNrLmlkbCBcCiAJJChX
ZWJDb3JlKS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJhY2tFdmVudC5pZGwgXAog
CSQoV2ViQ29yZSkvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVRyYWNrU291cmNlc0Nh
bGxiYWNrLmlkbCBcCisJJChXZWJDb3JlKS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhVHJhY2tD
b25zdHJhaW50LmlkbCBcCisJJChXZWJDb3JlKS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhVHJh
Y2tDb25zdHJhaW50cy5pZGwgXAorCSQoV2ViQ29yZSkvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRp
YVRyYWNrQ29uc3RyYWludFNldC5pZGwgXAogCSQoV2ViQ29yZSkvTW9kdWxlcy9tZWRpYXN0cmVh
bS9OYXZpZ2F0b3JNZWRpYVN0cmVhbS5pZGwgXAogCSQoV2ViQ29yZSkvTW9kdWxlcy9tZWRpYXN0
cmVhbS9OYXZpZ2F0b3JVc2VyTWVkaWFFcnJvci5pZGwgXAogCSQoV2ViQ29yZSkvTW9kdWxlcy9t
ZWRpYXN0cmVhbS9OYXZpZ2F0b3JVc2VyTWVkaWFFcnJvckNhbGxiYWNrLmlkbCBcCkBAIC0xODQ1
LDEyICsxODcxLDIwIEBAIHdlYmNvcmVfbW9kdWxlc19zb3VyY2VzICs9IFwKIAlTb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL21lZGlhc291cmNlL1dlYktpdFNvdXJjZUJ1ZmZlci5oIFwKIAlTb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL21lZGlhc291cmNlL1dlYktpdFNvdXJjZUJ1ZmZlckxpc3QuY3BwIFwK
IAlTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc291cmNlL1dlYktpdFNvdXJjZUJ1ZmZlckxp
c3QuaCBcCisJU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9BbGxBdWRpb0NhcGFi
aWxpdGllcy5oIFwKKwlTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL0FsbFZpZGVv
Q2FwYWJpbGl0aWVzLmggXAogCVNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vQXVk
aW9TdHJlYW1UcmFjay5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0v
QXVkaW9TdHJlYW1UcmFjay5oIFwKKwlTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFt
L0NhcGFiaWxpdHlSYW5nZS5jcHAgXAorCVNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJl
YW0vQ2FwYWJpbGl0eVJhbmdlLmggXAogCVNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJl
YW0vTWVkaWFDb25zdHJhaW50c0ltcGwuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21l
ZGlhc3RyZWFtL01lZGlhQ29uc3RyYWludHNJbXBsLmggXAorCVNvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvbWVkaWFzdHJlYW0vTWVkaWFTb3VyY2VTdGF0ZXMuY3BwIFwKKwlTb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU291cmNlU3RhdGVzLmggXAogCVNvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW0uY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtLmggXAorCVNvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1DYXBhYmlsaXRpZXMuY3BwIFwKKwlTb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtQ2FwYWJpbGl0aWVzLmggXAogCVNv
dXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1FdmVudC5jcHAgXAog
CVNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1FdmVudC5oIFwK
IAlTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtUmVnaXN0cnku
Y3BwIFwKQEAgLTE4NjIsNiArMTg5NiwxMiBAQCB3ZWJjb3JlX21vZHVsZXNfc291cmNlcyArPSBc
CiAJU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVRyYWNrU291
cmNlc0NhbGxiYWNrLmggXAogCVNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVk
aWFTdHJlYW1UcmFja1NvdXJjZXNSZXF1ZXN0LmNwcCBcCiAJU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVRyYWNrU291cmNlc1JlcXVlc3QuaCBcCisJU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVRyYWNrQ29uc3RyYWludC5jcHAgXAor
CVNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFUcmFja0NvbnN0cmFpbnQu
aCBcCisJU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVRyYWNrQ29uc3Ry
YWludFNldC5jcHAgXAorCVNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFU
cmFja0NvbnN0cmFpbnRTZXQuaCBcCisJU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVh
bS9NZWRpYVRyYWNrQ29uc3RyYWludHMuY3BwIFwKKwlTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21l
ZGlhc3RyZWFtL01lZGlhVHJhY2tDb25zdHJhaW50cy5oIFwKIAlTb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL21lZGlhc3RyZWFtL05hdmlnYXRvck1lZGlhU3RyZWFtLmNwcCBcCiAJU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9OYXZpZ2F0b3JNZWRpYVN0cmVhbS5oIFwKIAlTb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL05hdmlnYXRvclVzZXJNZWRpYUVycm9yLmNwcCBc
CkBAIC01MzI4LDYgKzUzNjgsOCBAQCB3ZWJjb3JlX3BsYXRmb3JtX3NvdXJjZXMgKz0gXAogCVNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2xpbnV4L0dhbWVwYWREZXZpY2VMaW51eC5jcHAgXAogCVNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2xpbnV4L0dhbWVwYWREZXZpY2VMaW51eC5oIFwKIAlTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYUNvbnN0cmFpbnRzLmggXAorCVNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtQXVkaW9Tb3VyY2Uu
Y3BwIFwKKwlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbUF1
ZGlvU291cmNlLmggXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlh
U3RyZWFtQ2VudGVyLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0v
TWVkaWFTdHJlYW1DZW50ZXIuaCBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJl
YW0vTWVkaWFTdHJlYW1Db25zdHJhaW50c1ZhbGlkYXRpb25DbGllbnQuaCBcCkBAIC01MzM2LDYg
KzUzNzgsNyBAQCB3ZWJjb3JlX3BsYXRmb3JtX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtRGVzY3JpcHRvci5oIFwKIAlTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVNvdXJjZS5jcHAgXAogCVNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtU291cmNlLmggXAor
CVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtU291cmNlQ2Fw
YWJpbGl0aWVzLmggXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlh
U3RyZWFtVHJhY2tTb3VyY2VzUmVxdWVzdENsaWVudC5oIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tZWRpYXN0cmVhbS9SVENDb25maWd1cmF0aW9uLmggXAogCVNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21lZGlhc3RyZWFtL1JUQ0RUTUZTZW5kZXJIYW5kbGVyLmggXApJbmRleDogU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9BbGxBdWRpb0NhcGFiaWxpdGllcy5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vQWxsQXVkaW9DYXBh
YmlsaXRpZXMuaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFz
dHJlYW0vQWxsQXVkaW9DYXBhYmlsaXRpZXMuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDU5
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
Q09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjaWZuZGVmIEFsbEF1ZGlvQ2FwYWJpbGl0aWVzX2gKKyNkZWZpbmUgQWxs
QXVkaW9DYXBhYmlsaXRpZXNfaAorCisjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKKworI2luY2x1
ZGUgIk1lZGlhU3RyZWFtQ2FwYWJpbGl0aWVzLmgiCisjaW5jbHVkZSAiTWVkaWFTdHJlYW1Tb3Vy
Y2VDYXBhYmlsaXRpZXMuaCIKKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KKworbmFt
ZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBDYXBhYmlsaXR5UmFuZ2U7CitjbGFzcyBNZWRpYVN0
cmVhbVNvdXJjZUNhcGFiaWxpdGllczsKKworY2xhc3MgQWxsQXVkaW9DYXBhYmlsaXRpZXMgOiBw
dWJsaWMgTWVkaWFTdHJlYW1DYXBhYmlsaXRpZXMgeworcHVibGljOgorICAgIHN0YXRpYyBQYXNz
UmVmUHRyPEFsbEF1ZGlvQ2FwYWJpbGl0aWVzPiBjcmVhdGUoUGFzc1JlZlB0cjxNZWRpYVN0cmVh
bVNvdXJjZUNhcGFiaWxpdGllcz4gY2FwYWJpbGl0aWVzKQorICAgIHsKKyAgICAgICAgcmV0dXJu
IGFkb3B0UmVmKG5ldyBBbGxBdWRpb0NhcGFiaWxpdGllcyhjYXBhYmlsaXRpZXMpKTsKKyAgICB9
CisgICAgdmlydHVhbCB+QWxsQXVkaW9DYXBhYmlsaXRpZXMoKSB7IH0KKworcHJpdmF0ZToKKyAg
ICBleHBsaWNpdCBBbGxBdWRpb0NhcGFiaWxpdGllcyhQYXNzUmVmUHRyPE1lZGlhU3RyZWFtU291
cmNlQ2FwYWJpbGl0aWVzPiBjYXBhYmlsaXRpZXMpCisgICAgICAgIDogTWVkaWFTdHJlYW1DYXBh
YmlsaXRpZXMoY2FwYWJpbGl0aWVzKQorICAgIHsKKyAgICB9Cit9OworCit9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBBbGxBdWRpb0NhcGFiaWxpdGllc19oCisKKyNlbmRpZgpJ
bmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9BbGxBdWRpb0NhcGFiaWxp
dGllcy5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVh
bS9BbGxBdWRpb0NhcGFiaWxpdGllcy5pZGwJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL21lZGlhc3RyZWFtL0FsbEF1ZGlvQ2FwYWJpbGl0aWVzLmlkbAkod29ya2luZyBj
b3B5KQpAQCAtMCwwICsxLDMzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICog
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworWworICAgIE5vSW50ZXJmYWNlT2JqZWN0
LAorICAgIENvbmRpdGlvbmFsPU1FRElBX1NUUkVBTSwKKyAgICBKU0dlbmVyYXRlVG9KU09iamVj
dCwKK10gaW50ZXJmYWNlIEFsbEF1ZGlvQ2FwYWJpbGl0aWVzIDogTWVkaWFTdHJlYW1DYXBhYmls
aXRpZXMgeworICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBET01TdHJpbmdbXSBzb3VyY2VJZDsKKyAg
ICByZWFkb25seSBhdHRyaWJ1dGUgQ2FwYWJpbGl0eVJhbmdlIHZvbHVtZTsKK307CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL0FsbFZpZGVvQ2FwYWJpbGl0aWVzLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9BbGxWaWRl
b0NhcGFiaWxpdGllcy5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9t
ZWRpYXN0cmVhbS9BbGxWaWRlb0NhcGFiaWxpdGllcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAg
KzEsNTcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgQWxsVmlkZW9DYXBhYmlsaXRpZXNfaAorI2RlZmlu
ZSBBbGxWaWRlb0NhcGFiaWxpdGllc19oCisKKyNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQorCisj
aW5jbHVkZSAiTWVkaWFTdHJlYW1DYXBhYmlsaXRpZXMuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUg
eworCitjbGFzcyBDYXBhYmlsaXR5UmFuZ2U7CitjbGFzcyBNZWRpYVN0cmVhbVNvdXJjZUNhcGFi
aWxpdGllczsKKworY2xhc3MgQWxsVmlkZW9DYXBhYmlsaXRpZXMgOiBwdWJsaWMgTWVkaWFTdHJl
YW1DYXBhYmlsaXRpZXMgeworcHVibGljOgorICAgIHN0YXRpYyBQYXNzUmVmUHRyPEFsbFZpZGVv
Q2FwYWJpbGl0aWVzPiBjcmVhdGUoUGFzc1JlZlB0cjxNZWRpYVN0cmVhbVNvdXJjZUNhcGFiaWxp
dGllcz4gY2FwYWJpbGl0aWVzKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBB
bGxWaWRlb0NhcGFiaWxpdGllcyhjYXBhYmlsaXRpZXMpKTsKKyAgICB9CisgICAgdmlydHVhbCB+
QWxsVmlkZW9DYXBhYmlsaXRpZXMoKSB7IH0KKworcHJpdmF0ZToKKyAgICBleHBsaWNpdCBBbGxW
aWRlb0NhcGFiaWxpdGllcyhQYXNzUmVmUHRyPE1lZGlhU3RyZWFtU291cmNlQ2FwYWJpbGl0aWVz
PiBjYXBhYmlsaXRpZXMpCisgICAgICAgIDogTWVkaWFTdHJlYW1DYXBhYmlsaXRpZXMoY2FwYWJp
bGl0aWVzKQorICAgIHsKKyAgICB9Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNl
bmRpZiAvLyBBbGxWaWRlb0NhcGFiaWxpdGllc19oCisKKyNlbmRpZgpJbmRleDogU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9BbGxWaWRlb0NhcGFiaWxpdGllcy5pZGwKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9BbGxWaWRlb0NhcGFi
aWxpdGllcy5pZGwJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlh
c3RyZWFtL0FsbFZpZGVvQ2FwYWJpbGl0aWVzLmlkbAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsx
LDM4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4gCisgKi8KKworWworICAgIE5vSW50ZXJmYWNlT2JqZWN0LAorICAgIENvbmRpdGlv
bmFsPU1FRElBX1NUUkVBTSwKKyAgICBKU0dlbmVyYXRlVG9KU09iamVjdCwKK10gaW50ZXJmYWNl
IEFsbFZpZGVvQ2FwYWJpbGl0aWVzIDogTWVkaWFTdHJlYW1DYXBhYmlsaXRpZXMgeworICAgIHJl
YWRvbmx5IGF0dHJpYnV0ZSBET01TdHJpbmdbXSBzb3VyY2VUeXBlOworICAgIHJlYWRvbmx5IGF0
dHJpYnV0ZSBET01TdHJpbmdbXSBzb3VyY2VJZDsKKyAgICByZWFkb25seSBhdHRyaWJ1dGUgQ2Fw
YWJpbGl0eVJhbmdlIHdpZHRoOworICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBDYXBhYmlsaXR5UmFu
Z2UgaGVpZ2h0OworICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBDYXBhYmlsaXR5UmFuZ2UgZnJhbWVS
YXRlOworICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBDYXBhYmlsaXR5UmFuZ2UgYXNwZWN0UmF0aW87
CisgICAgcmVhZG9ubHkgYXR0cmlidXRlIERPTVN0cmluZ1tdICBmYWNpbmdNb2RlOworfTsKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vQXVkaW9TdHJlYW1UcmFjay5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9BdWRp
b1N0cmVhbVRyYWNrLmNwcAkocmV2aXNpb24gMTU3MDE2KQorKysgU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9tZWRpYXN0cmVhbS9BdWRpb1N0cmVhbVRyYWNrLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MzcsMTQgKzM3LDE3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogUGFzc1JlZlB0cjxBdWRpb1N0
cmVhbVRyYWNrPiBBdWRpb1N0cmVhbVRyYWNrOjpjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCogY29udGV4dCwgY29uc3QgRGljdGlvbmFyeSYgYXVkaW9Db25zdHJhaW50cykKIHsKLSAgICBS
ZWZQdHI8QXVkaW9TdHJlYW1UcmFjaz4gdHJhY2sgPSBhZG9wdFJlZihuZXcgQXVkaW9TdHJlYW1U
cmFjayhjb250ZXh0LCAwLCAmYXVkaW9Db25zdHJhaW50cykpOwotICAgIHJldHVybiB0cmFjay5y
ZWxlYXNlKCk7CisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBBdWRpb1N0cmVhbVRyYWNrKGNvbnRl
eHQsIDAsICZhdWRpb0NvbnN0cmFpbnRzKSk7CiB9CiAKIFBhc3NSZWZQdHI8QXVkaW9TdHJlYW1U
cmFjaz4gQXVkaW9TdHJlYW1UcmFjazo6Y3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNv
bnRleHQsIE1lZGlhU3RyZWFtU291cmNlKiBzb3VyY2UpCiB7Ci0gICAgUmVmUHRyPEF1ZGlvU3Ry
ZWFtVHJhY2s+IHRyYWNrID0gYWRvcHRSZWYobmV3IEF1ZGlvU3RyZWFtVHJhY2soY29udGV4dCwg
c291cmNlLCAwKSk7Ci0gICAgcmV0dXJuIHRyYWNrLnJlbGVhc2UoKTsKKyAgICByZXR1cm4gYWRv
cHRSZWYobmV3IEF1ZGlvU3RyZWFtVHJhY2soY29udGV4dCwgc291cmNlLCAwKSk7Cit9CisKK1Bh
c3NSZWZQdHI8QXVkaW9TdHJlYW1UcmFjaz4gQXVkaW9TdHJlYW1UcmFjazo6Y3JlYXRlKE1lZGlh
U3RyZWFtVHJhY2sqIHRyYWNrKQoreworICAgIHJldHVybiBhZG9wdFJlZihuZXcgQXVkaW9TdHJl
YW1UcmFjayh0cmFjaykpOwogfQogCiBBdWRpb1N0cmVhbVRyYWNrOjpBdWRpb1N0cmVhbVRyYWNr
KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIE1lZGlhU3RyZWFtU291cmNlKiBzb3Vy
Y2UsIGNvbnN0IERpY3Rpb25hcnkqIGF1ZGlvQ29uc3RyYWludHMpCkBAIC01Miw2ICs1NSwxMSBA
QCBBdWRpb1N0cmVhbVRyYWNrOjpBdWRpb1N0cmVhbVRyYWNrKFNjcmlwCiB7CiB9CiAKK0F1ZGlv
U3RyZWFtVHJhY2s6OkF1ZGlvU3RyZWFtVHJhY2soTWVkaWFTdHJlYW1UcmFjayogdHJhY2spCisg
ICAgOiBNZWRpYVN0cmVhbVRyYWNrKHRyYWNrKQoreworfQorCiBjb25zdCBBdG9taWNTdHJpbmcm
IEF1ZGlvU3RyZWFtVHJhY2s6OmtpbmQoKSBjb25zdAogewogICAgIHN0YXRpYyBOZXZlckRlc3Ry
b3llZDxBdG9taWNTdHJpbmc+IGF1ZGlvS2luZCgiYXVkaW8iLCBBdG9taWNTdHJpbmc6OkNvbnN0
cnVjdEZyb21MaXRlcmFsKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJl
YW0vQXVkaW9TdHJlYW1UcmFjay5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvbWVkaWFzdHJlYW0vQXVkaW9TdHJlYW1UcmFjay5oCShyZXZpc2lvbiAxNTcwMzkpCisrKyBT
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL0F1ZGlvU3RyZWFtVHJhY2suaAkod29y
a2luZyBjb3B5KQpAQCAtMjksOCArMjksOCBAQAogI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCiAK
ICNpbmNsdWRlICJNZWRpYVN0cmVhbVRyYWNrLmgiCi0jaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgog
I2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTQxLDYgKzQxLDcgQEAgY2xhc3MgQXVkaW9TdHJlYW1U
cmFjayBGSU5BTCA6IHB1YmxpYyBNZQogcHVibGljOgogICAgIHN0YXRpYyBQYXNzUmVmUHRyPEF1
ZGlvU3RyZWFtVHJhY2s+IGNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgY29uc3QgRGlj
dGlvbmFyeSYpOwogICAgIHN0YXRpYyBQYXNzUmVmUHRyPEF1ZGlvU3RyZWFtVHJhY2s+IGNyZWF0
ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgTWVkaWFTdHJlYW1Tb3VyY2UqKTsKKyAgICBzdGF0
aWMgUGFzc1JlZlB0cjxBdWRpb1N0cmVhbVRyYWNrPiBjcmVhdGUoTWVkaWFTdHJlYW1UcmFjayop
OwogCiAgICAgdmlydHVhbCB+QXVkaW9TdHJlYW1UcmFjaygpIHsgfQogCkBAIC00OCw2ICs0OSw3
IEBAIHB1YmxpYzoKIAogcHJpdmF0ZToKICAgICBBdWRpb1N0cmVhbVRyYWNrKFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQqLCBNZWRpYVN0cmVhbVNvdXJjZSosIGNvbnN0IERpY3Rpb25hcnkqKTsKKyAg
ICBleHBsaWNpdCBBdWRpb1N0cmVhbVRyYWNrKE1lZGlhU3RyZWFtVHJhY2sqKTsKIH07CiAKIH0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFz
dHJlYW0vQ2FwYWJpbGl0eVJhbmdlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL21lZGlhc3RyZWFtL0NhcGFiaWxpdHlSYW5nZS5jcHAJKHJldmlzaW9uIDApCisrKyBT
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL0NhcGFiaWxpdHlSYW5nZS5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTAsMCArMSw5MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICoKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisK
KyNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQorCisjaW5jbHVkZSAiQ2FwYWJpbGl0eVJhbmdlLmgi
CisKKyNpbmNsdWRlICJKU0RPTUJpbmRpbmcuaCIKKyNpbmNsdWRlICJNZWRpYVNvdXJjZVN0YXRl
cy5oIgorI2luY2x1ZGUgIlNjcmlwdFZhbHVlLmgiCisjaW5jbHVkZSA8aW50ZXJwcmV0ZXIvQ2Fs
bEZyYW1lLmg+CisjaW5jbHVkZSA8cnVudGltZS9KU0NKU1ZhbHVlLmg+CisKK3VzaW5nIG5hbWVz
cGFjZSBKU0M7CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworUGFzc1JlZlB0cjxDYXBhYmlsaXR5
UmFuZ2U+IENhcGFiaWxpdHlSYW5nZTo6Y3JlYXRlKGNvbnN0IE1lZGlhU3RyZWFtU291cmNlQ2Fw
YWJpbGl0eVJhbmdlJiByYW5nZUluZm8pCit7CisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBDYXBh
YmlsaXR5UmFuZ2UocmFuZ2VJbmZvKSk7Cit9CisKK0NhcGFiaWxpdHlSYW5nZTo6Q2FwYWJpbGl0
eVJhbmdlKGNvbnN0IE1lZGlhU3RyZWFtU291cmNlQ2FwYWJpbGl0eVJhbmdlJiByYW5nZUluZm8p
CisgICAgOiBtX3JhbmdlSW5mbyhyYW5nZUluZm8pCit7Cit9CisKK3N0YXRpYyBTY3JpcHRWYWx1
ZSBzY3JpcHRWYWx1ZShFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IE1lZGlhU3RyZWFtU291cmNlQ2Fw
YWJpbGl0eVJhbmdlOjpWYWx1ZVVuaW9uJiB2YWx1ZSwgTWVkaWFTdHJlYW1Tb3VyY2VDYXBhYmls
aXR5UmFuZ2U6OlR5cGUgdHlwZSkKK3sKKyAgICAvLyBOT1RFOiB0aGUgc3BlYyBzYXlzOgorICAg
IC8vICAgICAgLi4uIGFuIGltcGxlbWVudGF0aW9uIHNob3VsZCBtYWtlIGEgcmVhc29uYWJsZSBh
dHRlbXB0IHRvIHRyYW5zbGF0ZSBhbmQgc2NhbGUgdGhlIGhhcmR3YXJlJ3Mgc2V0dGluZworICAg
IC8vICAgICAgb250byB0aGUgbWFwcGluZyBwcm92aWRlZCBieSB0aGlzIHNwZWNpZmljYXRpb24u
IElmIHRoaXMgaXMgbm90IHBvc3NpYmxlIGR1ZSB0byB0aGUgdXNlciBhZ2VudCdzCisgICAgLy8g
ICAgICBpbmFiaWxpdHkgdG8gcmV0cmlldmUgYSBnaXZlbiBjYXBhYmlsaXR5IGZyb20gYSBzb3Vy
Y2UsIHRoZW4gZm9yIENhcGFiaWxpdHlSYW5nZS10eXBlZCBjYXBhYmlsaXRpZXMsCisgICAgLy8g
ICAgICB0aGUgbWluIGFuZCBtYXggZmllbGRzIHdpbGwgbm90IGJlIHByZXNlbnQgb24gdGhlIHJl
dHVybmVkIGRpY3Rpb25hcnksIGFuZCB0aGUgc3VwcG9ydGVkIGZpZWxkIHdpbGwgYmUgZmFsc2Uu
CisgICAgLy8gV2UgZG9uJ3QgZG8gdGhpcyBjdXJyZW50bHkgYmVjYXVzZSBJIGRvbid0IGtub3cg
b2YgYW4gaW5zdGFuY2Ugd2hlcmUgaXQgaXNuJ3QgcG9zc2libGUgdG8gcmV0cmlldmUgYSBzb3Vy
Y2UKKyAgICAvLyBjYXBhYmlsaXR5LCBidXQgd2hlbiB3ZSBoYXZlIHRvIGRlYWwgd2l0aCB0aGlz
IHdlIHdpbGwgbmVlZCB0byBtYXJrIENhcGFiaWxpdHlSYW5nZS5taW4gYW5kIENhcGFiaWxpdHlS
YW5nZS5tYXggYXMKKyAgICAvLyAiQ3VzdG9tIiBhbmQgcmV0dXJuIGpzVW5kZWZpbmVkKCkgZnJv
bSB0aGUgY3VzdG9tIGdldHRlciB0byBzdXBwb3J0IGl0LgorICAgIAorICAgIHN3aXRjaCAodHlw
ZSkgeworICAgIGNhc2UgTWVkaWFTdHJlYW1Tb3VyY2VDYXBhYmlsaXR5UmFuZ2U6OkZsb2F0Ogor
ICAgICAgICByZXR1cm4gU2NyaXB0VmFsdWUoZXhlYy0+dm0oKSwgSlNWYWx1ZSh2YWx1ZS5hc0Zs
b2F0KSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgTWVkaWFTdHJlYW1Tb3VyY2VDYXBhYmls
aXR5UmFuZ2U6OlVMb25nOgorICAgICAgICByZXR1cm4gU2NyaXB0VmFsdWUoZXhlYy0+dm0oKSwg
SlNWYWx1ZSh2YWx1ZS5hc1VMb25nKSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgTWVkaWFT
dHJlYW1Tb3VyY2VDYXBhYmlsaXR5UmFuZ2U6OlVuZGVmaW5lZDoKKyAgICAgICAgcmV0dXJuIFNj
cmlwdFZhbHVlKGV4ZWMtPnZtKCksIGpzVW5kZWZpbmVkKCkpOworICAgICAgICBicmVhazsKKyAg
ICB9CisKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4gU2NyaXB0VmFsdWUo
ZXhlYy0+dm0oKSwganNVbmRlZmluZWQoKSk7Cit9CisKK1NjcmlwdFZhbHVlIENhcGFiaWxpdHlS
YW5nZTo6bWluKEV4ZWNTdGF0ZSogZXhlYykgY29uc3QKK3sKKyAgICByZXR1cm4gc2NyaXB0VmFs
dWUoZXhlYywgbV9yYW5nZUluZm8ubWluKCksIG1fcmFuZ2VJbmZvLnR5cGUoKSk7Cit9CisKK1Nj
cmlwdFZhbHVlIENhcGFiaWxpdHlSYW5nZTo6bWF4KEV4ZWNTdGF0ZSogZXhlYykgY29uc3QKK3sK
KyAgICByZXR1cm4gc2NyaXB0VmFsdWUoZXhlYywgbV9yYW5nZUluZm8ubWF4KCksIG1fcmFuZ2VJ
bmZvLnR5cGUoKSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL0NhcGFiaWxpdHlSYW5nZS5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vQ2FwYWJpbGl0
eVJhbmdlLmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3Ry
ZWFtL0NhcGFiaWxpdHlSYW5nZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNjAgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUsIElOQy4g
YGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBP
UgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqCisgKi8K
KworI2lmbmRlZiBDYXBhYmlsaXR5UmFuZ2VfaAorI2RlZmluZSBDYXBhYmlsaXR5UmFuZ2VfaAor
CisjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKKworI2luY2x1ZGUgIk1lZGlhU3RyZWFtU291cmNl
Q2FwYWJpbGl0aWVzLmgiCisjaW5jbHVkZSAiU2NyaXB0VmFsdWUuaCIKKyNpbmNsdWRlICJTY3Jp
cHRXcmFwcGFibGUuaCIKKyNpbmNsdWRlIDxpbnRlcnByZXRlci9DYWxsRnJhbWUuaD4KKyNpbmNs
dWRlIDx3dGYvUmVmQ291bnRlZC5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIENh
cGFiaWxpdHlSYW5nZSA6IHB1YmxpYyBSZWZDb3VudGVkPENhcGFiaWxpdHlSYW5nZT4sIHB1Ymxp
YyBTY3JpcHRXcmFwcGFibGUgeworcHVibGljOgorICAgIHZpcnR1YWwgfkNhcGFiaWxpdHlSYW5n
ZSgpIHsgfQorCisgICAgc3RhdGljIFBhc3NSZWZQdHI8Q2FwYWJpbGl0eVJhbmdlPiBjcmVhdGUo
Y29uc3QgTWVkaWFTdHJlYW1Tb3VyY2VDYXBhYmlsaXR5UmFuZ2UmKTsKKworICAgIFNjcmlwdFZh
bHVlIG1pbihKU0M6OkV4ZWNTdGF0ZSopIGNvbnN0OworICAgIFNjcmlwdFZhbHVlIG1heChKU0M6
OkV4ZWNTdGF0ZSopIGNvbnN0OworICAgIGJvb2wgc3VwcG9ydGVkKCkgY29uc3QgeyByZXR1cm4g
bV9yYW5nZUluZm8uc3VwcG9ydGVkKCk7IH0KKworcHJpdmF0ZToKKyAgICBDYXBhYmlsaXR5UmFu
Z2UoY29uc3QgTWVkaWFTdHJlYW1Tb3VyY2VDYXBhYmlsaXR5UmFuZ2UmKTsKKyAgICAKKyAgICBN
ZWRpYVN0cmVhbVNvdXJjZUNhcGFiaWxpdHlSYW5nZSBtX3JhbmdlSW5mbzsKK307CisKK30gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIENhcGFiaWxpdHlSYW5nZV9oCisKKyNlbmRp
ZgpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9DYXBhYmlsaXR5UmFu
Z2UuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0v
Q2FwYWJpbGl0eVJhbmdlLmlkbAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvbWVkaWFzdHJlYW0vQ2FwYWJpbGl0eVJhbmdlLmlkbAkod29ya2luZyBjb3B5KQpAQCAtMCww
ICsxLDMzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICog
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICog
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4gCisgKi8KKworWworICAgIE5vSW50ZXJmYWNlT2JqZWN0LAorICAgIENvbmRp
dGlvbmFsPU1FRElBX1NUUkVBTSwKK10gaW50ZXJmYWNlIENhcGFiaWxpdHlSYW5nZSB7CisgICAg
W0NhbGxXaXRoPVNjcmlwdFN0YXRlXSByZWFkb25seSBhdHRyaWJ1dGUgYW55IG1heDsKKyAgICBb
Q2FsbFdpdGg9U2NyaXB0U3RhdGVdIHJlYWRvbmx5IGF0dHJpYnV0ZSBhbnkgbWluOworICAgIHJl
YWRvbmx5IGF0dHJpYnV0ZSBib29sZWFuIHN1cHBvcnRlZDsKK307CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhQ29uc3RyYWludHNJbXBsLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYUNvbnN0cmFpbnRz
SW1wbC5oCShyZXZpc2lvbiAxNTcwMTYpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlh
c3RyZWFtL01lZGlhQ29uc3RyYWludHNJbXBsLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ1LDcgKzQ1
LDkgQEAgY2xhc3MgTWVkaWFDb25zdHJhaW50c0ltcGwgOiBwdWJsaWMgTWVkaQogcHVibGljOgog
ICAgIHN0YXRpYyBQYXNzUmVmUHRyPE1lZGlhQ29uc3RyYWludHNJbXBsPiBjcmVhdGUoKTsKICAg
ICBzdGF0aWMgUGFzc1JlZlB0cjxNZWRpYUNvbnN0cmFpbnRzSW1wbD4gY3JlYXRlKGNvbnN0IERp
Y3Rpb25hcnkmLCBFeGNlcHRpb25Db2RlJik7CisKICAgICB2aXJ0dWFsIH5NZWRpYUNvbnN0cmFp
bnRzSW1wbCgpOworICAgIGJvb2wgaW5pdGlhbGl6ZShjb25zdCBEaWN0aW9uYXJ5Jik7CiAKICAg
ICB2aXJ0dWFsIHZvaWQgZ2V0TWFuZGF0b3J5Q29uc3RyYWludHMoVmVjdG9yPE1lZGlhQ29uc3Ry
YWludD4mKSBjb25zdCBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgZ2V0T3B0aW9uYWxDb25z
dHJhaW50cyhWZWN0b3I8TWVkaWFDb25zdHJhaW50PiYpIGNvbnN0IE9WRVJSSURFOwpAQCAtNTUs
NyArNTcsNiBAQCBwdWJsaWM6CiAKIHByaXZhdGU6CiAgICAgTWVkaWFDb25zdHJhaW50c0ltcGwo
KSB7IH0KLSAgICBib29sIGluaXRpYWxpemUoY29uc3QgRGljdGlvbmFyeSYpOwogCiAgICAgSGFz
aE1hcDxTdHJpbmcsIFN0cmluZz4gbV9tYW5kYXRvcnlDb25zdHJhaW50czsKICAgICBWZWN0b3I8
TWVkaWFDb25zdHJhaW50PiBtX29wdGlvbmFsQ29uc3RyYWludHM7CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU291cmNlU3RhdGVzLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU291cmNlU3RhdGVz
LmNwcAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0v
TWVkaWFTb3VyY2VTdGF0ZXMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTAwIEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBV
VEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVU
RVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
CisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQor
CisjaW5jbHVkZSAiTWVkaWFTb3VyY2VTdGF0ZXMuaCIKKworI2luY2x1ZGUgPHd0Zi9OZXZlckRl
c3Ryb3llZC5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1Bhc3NSZWZQdHI8TWVkaWFTb3Vy
Y2VTdGF0ZXM+IE1lZGlhU291cmNlU3RhdGVzOjpjcmVhdGUoY29uc3QgTWVkaWFTdHJlYW1Tb3Vy
Y2VTdGF0ZXMmIHN0YXRlcykKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3IE1lZGlhU291cmNl
U3RhdGVzKHN0YXRlcykpOworfQorCitNZWRpYVNvdXJjZVN0YXRlczo6TWVkaWFTb3VyY2VTdGF0
ZXMoY29uc3QgTWVkaWFTdHJlYW1Tb3VyY2VTdGF0ZXMmIHN0YXRlcykKKyAgICA6IG1fU291cmNl
U3RhdGVzKHN0YXRlcykKK3sKK30KKworY29uc3QgQXRvbWljU3RyaW5nJiBNZWRpYVNvdXJjZVN0
YXRlczo6ZmFjaW5nTW9kZShNZWRpYVN0cmVhbVNvdXJjZVN0YXRlczo6VmlkZW9GYWNpbmdNb2Rl
IG1vZGUpCit7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEF0b21pY1N0cmluZz4gdXNlckZh
Y2luZygidXNlciIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOworICAgIHN0
YXRpYyBOZXZlckRlc3Ryb3llZDxBdG9taWNTdHJpbmc+IGVudmlyb25tZW50RmFjaW5nKCJlbnZp
cm9ubWVudCIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOworICAgIHN0YXRp
YyBOZXZlckRlc3Ryb3llZDxBdG9taWNTdHJpbmc+IGxlZnRGYWNpbmcoImxlZnQiLCBBdG9taWNT
dHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8
QXRvbWljU3RyaW5nPiByaWdodEZhY2luZygicmlnaHQiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVj
dEZyb21MaXRlcmFsKTsKKyAgICAKKyAgICBzd2l0Y2ggKG1vZGUpIHsKKyAgICBjYXNlIE1lZGlh
U3RyZWFtU291cmNlU3RhdGVzOjpVc2VyOgorICAgICAgICByZXR1cm4gdXNlckZhY2luZzsKKyAg
ICBjYXNlIE1lZGlhU3RyZWFtU291cmNlU3RhdGVzOjpFbnZpcm9ubWVudDoKKyAgICAgICAgcmV0
dXJuIGVudmlyb25tZW50RmFjaW5nOworICAgIGNhc2UgTWVkaWFTdHJlYW1Tb3VyY2VTdGF0ZXM6
OkxlZnQ6CisgICAgICAgIHJldHVybiBsZWZ0RmFjaW5nOworICAgIGNhc2UgTWVkaWFTdHJlYW1T
b3VyY2VTdGF0ZXM6OlJpZ2h0OgorICAgICAgICByZXR1cm4gcmlnaHRGYWNpbmc7CisgICAgfQor
CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIGVtcHR5QXRvbTsKK30KKwor
Y29uc3QgQXRvbWljU3RyaW5nJiBNZWRpYVNvdXJjZVN0YXRlczo6c291cmNlVHlwZShNZWRpYVN0
cmVhbVNvdXJjZVN0YXRlczo6U291cmNlVHlwZSBzb3VyY2VUeXBlKQoreworICAgIHN0YXRpYyBO
ZXZlckRlc3Ryb3llZDxBdG9taWNTdHJpbmc+IG5vbmUoIm5vbmUiLCBBdG9taWNTdHJpbmc6OkNv
bnN0cnVjdEZyb21MaXRlcmFsKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8QXRvbWljU3Ry
aW5nPiBjYW1lcmEoImNhbWVyYSIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwp
OworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxBdG9taWNTdHJpbmc+IG1pY3JvcGhvbmUoIm1p
Y3JvcGhvbmUiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKKworICAgIHN3
aXRjaCAoc291cmNlVHlwZSkgeworICAgIGNhc2UgTWVkaWFTdHJlYW1Tb3VyY2VTdGF0ZXM6Ok5v
bmU6CisgICAgICAgIHJldHVybiBub25lOworICAgIGNhc2UgTWVkaWFTdHJlYW1Tb3VyY2VTdGF0
ZXM6OkNhbWVyYToKKyAgICAgICAgcmV0dXJuIGNhbWVyYTsKKyAgICBjYXNlIE1lZGlhU3RyZWFt
U291cmNlU3RhdGVzOjpNaWNyb3Bob25lOgorICAgICAgICByZXR1cm4gbWljcm9waG9uZTsKKyAg
ICB9CisKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4gZW1wdHlBdG9tOwor
fQorCitjb25zdCBBdG9taWNTdHJpbmcmIE1lZGlhU291cmNlU3RhdGVzOjpzb3VyY2VUeXBlKCkg
Y29uc3QKK3sKKyAgICByZXR1cm4gTWVkaWFTb3VyY2VTdGF0ZXM6OnNvdXJjZVR5cGUobV9Tb3Vy
Y2VTdGF0ZXMuc291cmNlVHlwZSk7Cit9CisKK2NvbnN0IEF0b21pY1N0cmluZyYgTWVkaWFTb3Vy
Y2VTdGF0ZXM6OmZhY2luZ01vZGUoKSBjb25zdAoreworICAgIHJldHVybiBNZWRpYVNvdXJjZVN0
YXRlczo6ZmFjaW5nTW9kZShtX1NvdXJjZVN0YXRlcy5mYWNpbmdNb2RlKTsKK30KKworCit9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZgpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9tZWRpYXN0cmVhbS9NZWRpYVNvdXJjZVN0YXRlcy5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTb3VyY2VTdGF0ZXMuaAkocmV2aXNpb24g
MCkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTb3VyY2VTdGF0
ZXMuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDY2IEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMn
JyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisg
KiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIE1l
ZGlhU291cmNlU3RhdGVzX2gKKyNkZWZpbmUgTWVkaWFTb3VyY2VTdGF0ZXNfaAorCisjaWYgRU5B
QkxFKE1FRElBX1NUUkVBTSkKKworI2luY2x1ZGUgIk1lZGlhU3RyZWFtU291cmNlQ2FwYWJpbGl0
aWVzLmgiCisjaW5jbHVkZSAiU2NyaXB0V3JhcHBhYmxlLmgiCisjaW5jbHVkZSA8d3RmL0Zvcndh
cmQuaD4KKyNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7
CisKK2NsYXNzIE1lZGlhU291cmNlU3RhdGVzIDogcHVibGljIFJlZkNvdW50ZWQ8TWVkaWFTb3Vy
Y2VTdGF0ZXM+LCBwdWJsaWMgU2NyaXB0V3JhcHBhYmxlIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMg
UGFzc1JlZlB0cjxNZWRpYVNvdXJjZVN0YXRlcz4gY3JlYXRlKGNvbnN0IE1lZGlhU3RyZWFtU291
cmNlU3RhdGVzJik7CisKKyAgICBzdGF0aWMgY29uc3QgQXRvbWljU3RyaW5nJiBzb3VyY2VUeXBl
KE1lZGlhU3RyZWFtU291cmNlU3RhdGVzOjpTb3VyY2VUeXBlKTsKKyAgICBzdGF0aWMgY29uc3Qg
QXRvbWljU3RyaW5nJiBmYWNpbmdNb2RlKE1lZGlhU3RyZWFtU291cmNlU3RhdGVzOjpWaWRlb0Zh
Y2luZ01vZGUpOworICAgIAorICAgIGNvbnN0IEF0b21pY1N0cmluZyYgc291cmNlVHlwZSgpIGNv
bnN0OworICAgIGNvbnN0IEF0b21pY1N0cmluZyYgc291cmNlSWQoKSBjb25zdCB7IHJldHVybiBt
X1NvdXJjZVN0YXRlcy5zb3VyY2VJZDsgfQorICAgIHVuc2lnbmVkIGxvbmcgd2lkdGgoKSBjb25z
dCB7IHJldHVybiBtX1NvdXJjZVN0YXRlcy53aWR0aDsgfQorICAgIHVuc2lnbmVkIGxvbmcgaGVp
Z2h0KCkgY29uc3QgeyByZXR1cm4gbV9Tb3VyY2VTdGF0ZXMuaGVpZ2h0OyB9CisgICAgZmxvYXQg
ZnJhbWVSYXRlKCkgY29uc3QgeyByZXR1cm4gbV9Tb3VyY2VTdGF0ZXMuZnJhbWVSYXRlOyB9Cisg
ICAgZmxvYXQgYXNwZWN0UmF0aW8oKSBjb25zdCB7IHJldHVybiBtX1NvdXJjZVN0YXRlcy5hc3Bl
Y3RSYXRpbzsgfQorICAgIGNvbnN0IEF0b21pY1N0cmluZyYgZmFjaW5nTW9kZSgpIGNvbnN0Owor
ICAgIHVuc2lnbmVkIGxvbmcgdm9sdW1lKCkgY29uc3QgeyByZXR1cm4gbV9Tb3VyY2VTdGF0ZXMu
dm9sdW1lOyB9CisgICAgCisgICAgYm9vbCBoYXNWaWRlb1NvdXJjZSgpIGNvbnN0IHsgcmV0dXJu
IG1fU291cmNlU3RhdGVzLnNvdXJjZVR5cGUgPT0gTWVkaWFTdHJlYW1Tb3VyY2VTdGF0ZXM6OkNh
bWVyYTsgfQorCitwcml2YXRlOgorICAgIGV4cGxpY2l0IE1lZGlhU291cmNlU3RhdGVzKGNvbnN0
IE1lZGlhU3RyZWFtU291cmNlU3RhdGVzJik7CisKKyAgICBNZWRpYVN0cmVhbVNvdXJjZVN0YXRl
cyBtX1NvdXJjZVN0YXRlczsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlm
IC8vIE1lZGlhU291cmNlU3RhdGVzX2gKKworI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU291cmNlU3RhdGVzLmlkbAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU291cmNlU3RhdGVzLmlkbAko
cmV2aXNpb24gMCkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFT
b3VyY2VTdGF0ZXMuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNDQgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElO
Qy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5D
LiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLwor
CitlbnVtIFNvdXJjZVR5cGVFbnVtIHsgIm5vbmUiLCAiY2FtZXJhIiwgIm1pY3JvcGhvbmUiIH07
CitlbnVtIFZpZGVvRmFjaW5nTW9kZUVudW0geyAidXNlciIsICJlbnZpcm9ubWVudCIsICJsZWZ0
IiwgInJpZ2h0IiB9OworCitbCisgICAgQ29uZGl0aW9uYWw9TUVESUFfU1RSRUFNLAorICAgIElt
cGxlbWVudGF0aW9uTGFja3NWVGFibGUsCisgICAgTm9JbnRlcmZhY2VPYmplY3QsCitdIGludGVy
ZmFjZSBNZWRpYVNvdXJjZVN0YXRlcyB7CisgICAgcmVhZG9ubHkgYXR0cmlidXRlIFNvdXJjZVR5
cGVFbnVtIHNvdXJjZVR5cGU7CisgICAgcmVhZG9ubHkgYXR0cmlidXRlIERPTVN0cmluZyBzb3Vy
Y2VJZDsKKworICAgIFtDdXN0b21HZXR0ZXJdIHJlYWRvbmx5IGF0dHJpYnV0ZSB1bnNpZ25lZCBs
b25nIHdpZHRoOworICAgIFtDdXN0b21HZXR0ZXJdIHJlYWRvbmx5IGF0dHJpYnV0ZSB1bnNpZ25l
ZCBsb25nIGhlaWdodDsKKyAgICBbQ3VzdG9tR2V0dGVyXSByZWFkb25seSBhdHRyaWJ1dGUgZmxv
YXQgZnJhbWVSYXRlOworICAgIFtDdXN0b21HZXR0ZXJdIHJlYWRvbmx5IGF0dHJpYnV0ZSBmbG9h
dCBhc3BlY3RSYXRpbzsKKyAgICBbQ3VzdG9tR2V0dGVyXSByZWFkb25seSBhdHRyaWJ1dGUgVmlk
ZW9GYWNpbmdNb2RlRW51bSBmYWNpbmdNb2RlOworICAgIFtDdXN0b21HZXR0ZXJdIHJlYWRvbmx5
IGF0dHJpYnV0ZSB1bnNpZ25lZCBsb25nIHZvbHVtZTsKK307CisKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW0uY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW0uY3BwCShyZXZpc2lv
biAxNTcwMTYpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3Ry
ZWFtLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTYsMjIgKzU2LDEzIEBAIHN0YXRpYyB2b2lkIHBy
b2Nlc3NUcmFjayhNZWRpYVN0cmVhbVRyYWMKICAgICAgICAgcmV0dXJuOwogCiAgICAgTWVkaWFT
dHJlYW1Tb3VyY2UqIHNvdXJjZSA9IHRyYWNrLT5zb3VyY2UoKTsKLSAgICBpZiAoIWNvbnRhaW5z
U291cmNlKHNvdXJjZVZlY3Rvciwgc291cmNlKSkgewotICAgICAgICBpZiAoc291cmNlLT5zdHJl
YW0oKSkgewotICAgICAgICAgICAgLy8gRklYTUU6IHRoaXMgc2hvdWxkIG5vdCBiZSBuZWNlc3Nh
cnkgYmVjYXVzZSB0cmFja3MgYW5kIHN0cmVhbXMgbXVzdCBiZSBhYmxlIHRvIHNoYXJlIHNvdXJj
ZXMsIGJ1dCBvdXIgY29kZQotICAgICAgICAgICAgLy8gY3VycmVubHR5IGFzc3VtZXMgZWFjaCBz
b3VyY2UgaXMgYXR0YWNoZWQgdG8ganVzdCBvbmUgdHJhY2suCi0gICAgICAgICAgICAvLyBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTIxOTU0Ci0gICAgICAgICAgICBz
b3VyY2VWZWN0b3IuYXBwZW5kKE1lZGlhU3RyZWFtU291cmNlOjpjcmVhdGUoc291cmNlLT5pZCgp
LCBzb3VyY2UtPnR5cGUoKSwgc291cmNlLT5uYW1lKCksIHNvdXJjZS0+cmVhZHlTdGF0ZSgpLCBz
b3VyY2UtPnJlcXVpcmVzQXVkaW9Db25zdW1lcigpKS5nZXQoKSk7Ci0gICAgICAgIH0gZWxzZQot
ICAgICAgICAgICAgc291cmNlVmVjdG9yLmFwcGVuZChzb3VyY2UpOwotICAgIH0KKyAgICBpZiAo
IWNvbnRhaW5zU291cmNlKHNvdXJjZVZlY3Rvciwgc291cmNlKSkKKyAgICAgICAgc291cmNlVmVj
dG9yLmFwcGVuZChzb3VyY2UpOwogfQogCiBzdGF0aWMgUGFzc1JlZlB0cjxNZWRpYVN0cmVhbT4g
Y3JlYXRlRnJvbVNvdXJjZVZlY3RvcnMoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwg
Y29uc3QgTWVkaWFTdHJlYW1Tb3VyY2VWZWN0b3ImIGF1ZGlvU291cmNlcywgY29uc3QgTWVkaWFT
dHJlYW1Tb3VyY2VWZWN0b3ImIHZpZGVvU291cmNlcykKIHsKICAgICBSZWZQdHI8TWVkaWFTdHJl
YW1EZXNjcmlwdG9yPiBkZXNjcmlwdG9yID0gTWVkaWFTdHJlYW1EZXNjcmlwdG9yOjpjcmVhdGUo
YXVkaW9Tb3VyY2VzLCB2aWRlb1NvdXJjZXMpOwotICAgIE1lZGlhU3RyZWFtQ2VudGVyOjpzaGFy
ZWQoKS5kaWRDcmVhdGVNZWRpYVN0cmVhbShkZXNjcmlwdG9yLmdldCgpKTsKLQogICAgIHJldHVy
biBNZWRpYVN0cmVhbTo6Y3JlYXRlKGNvbnRleHQsIGRlc2NyaXB0b3IucmVsZWFzZSgpKTsKIH0K
IApAQCAtMTIxLDYgKzExMiw3IEBAIE1lZGlhU3RyZWFtOjpNZWRpYVN0cmVhbShTY3JpcHRFeGVj
dXRpb24KICAgICAsIG1fZGVzY3JpcHRvcihzdHJlYW1EZXNjcmlwdG9yKQogICAgICwgbV9zY2hl
ZHVsZWRFdmVudFRpbWVyKHRoaXMsICZNZWRpYVN0cmVhbTo6c2NoZWR1bGVkRXZlbnRUaW1lckZp
cmVkKQogeworICAgIEFTU0VSVChtX2Rlc2NyaXB0b3IpOwogICAgIG1fZGVzY3JpcHRvci0+c2V0
Q2xpZW50KHRoaXMpOwogCiAgICAgc2l6ZV90IG51bWJlck9mQXVkaW9UcmFja3MgPSBtX2Rlc2Ny
aXB0b3ItPm51bWJlck9mQXVkaW9TdHJlYW1zKCk7CkBAIC0xNTYsNyArMTQ4LDYgQEAgdm9pZCBN
ZWRpYVN0cmVhbTo6c3RvcCgpCiAgICAgaWYgKGVuZGVkKCkpCiAgICAgICAgIHJldHVybjsKIAot
ICAgIE1lZGlhU3RyZWFtQ2VudGVyOjpzaGFyZWQoKS5kaWRTdG9wTG9jYWxNZWRpYVN0cmVhbShk
ZXNjcmlwdG9yKCkpOwogICAgIHNldEVuZGVkKCk7CiB9CiAKQEAgLTE4NCw4ICsxNzUsNiBAQCB2
b2lkIE1lZGlhU3RyZWFtOjphZGRUcmFjayhQYXNzUmVmUHRyPE1lCiAgICAgICAgIG1fdmlkZW9U
cmFja3MuYXBwZW5kKHRyYWNrKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQotCi0gICAgTWVkaWFT
dHJlYW1DZW50ZXI6OnNoYXJlZCgpLmRpZEFkZE1lZGlhU3RyZWFtVHJhY2sodHJhY2stPnNvdXJj
ZSgpKTsKIH0KIAogdm9pZCBNZWRpYVN0cmVhbTo6cmVtb3ZlVHJhY2soUGFzc1JlZlB0cjxNZWRp
YVN0cmVhbVRyYWNrPiBwcnBUcmFjaywgRXhjZXB0aW9uQ29kZSYgZWMpCkBAIC0yMjMsOCArMjEy
LDYgQEAgdm9pZCBNZWRpYVN0cmVhbTo6cmVtb3ZlVHJhY2soUGFzc1JlZlB0cgogCiAgICAgaWYg
KCFtX2F1ZGlvVHJhY2tzLnNpemUoKSAmJiAhbV92aWRlb1RyYWNrcy5zaXplKCkpCiAgICAgICAg
IHNldEVuZGVkKCk7Ci0KLSAgICBNZWRpYVN0cmVhbUNlbnRlcjo6c2hhcmVkKCkuZGlkUmVtb3Zl
TWVkaWFTdHJlYW1UcmFjayh0cmFjay0+c291cmNlKCkpOwogfQogCiBNZWRpYVN0cmVhbVRyYWNr
KiBNZWRpYVN0cmVhbTo6Z2V0VHJhY2tCeUlkKFN0cmluZyBpZCkKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW0uaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtLmgJKHJldmlzaW9uIDE1
NzAxNikKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW0u
aAkod29ya2luZyBjb3B5KQpAQCAtODUsMjAgKzg1LDE4IEBAIHByb3RlY3RlZDoKICAgICBNZWRp
YVN0cmVhbShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgUGFzc1JlZlB0cjxNZWRpYVN0cmVhbURl
c2NyaXB0b3I+KTsKIAogICAgIC8vIENvbnRleHREZXN0cnVjdGlvbk9ic2VydmVyCi0gICAgdmly
dHVhbCB2b2lkIGNvbnRleHREZXN0cm95ZWQoKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQg
Y29udGV4dERlc3Ryb3llZCgpIE9WRVJSSURFIEZJTkFMOwogCiBwcml2YXRlOgotICAgIC8vIE1l
ZGlhU3RyZWFtRGVzY3JpcHRvckNsaWVudAotICAgIHZpcnR1YWwgdm9pZCB0cmFja0RpZEVuZCgp
IE9WRVJSSURFOwotICAgIHZpcnR1YWwgdm9pZCBzdHJlYW1EaWRFbmQoKSBPVkVSUklERTsKLSAg
ICAKICAgICAvLyBFdmVudFRhcmdldAotICAgIHZpcnR1YWwgdm9pZCByZWZFdmVudFRhcmdldCgp
IE9WRVJSSURFIHsgcmVmKCk7IH0KLSAgICB2aXJ0dWFsIHZvaWQgZGVyZWZFdmVudFRhcmdldCgp
IE9WRVJSSURFIHsgZGVyZWYoKTsgfQorICAgIHZpcnR1YWwgdm9pZCByZWZFdmVudFRhcmdldCgp
IE9WRVJSSURFIEZJTkFMIHsgcmVmKCk7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZGVyZWZFdmVudFRh
cmdldCgpIE9WRVJSSURFIEZJTkFMIHsgZGVyZWYoKTsgfQogCiAgICAgLy8gTWVkaWFTdHJlYW1E
ZXNjcmlwdG9yQ2xpZW50Ci0gICAgdmlydHVhbCB2b2lkIGFkZFJlbW90ZVNvdXJjZShNZWRpYVN0
cmVhbVNvdXJjZSopIE9WRVJSSURFOwotICAgIHZpcnR1YWwgdm9pZCByZW1vdmVSZW1vdGVTb3Vy
Y2UoTWVkaWFTdHJlYW1Tb3VyY2UqKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgdHJhY2tE
aWRFbmQoKSBPVkVSUklERSBGSU5BTDsKKyAgICB2aXJ0dWFsIHZvaWQgc3RyZWFtRGlkRW5kKCkg
T1ZFUlJJREUgRklOQUw7CisgICAgdmlydHVhbCB2b2lkIGFkZFJlbW90ZVNvdXJjZShNZWRpYVN0
cmVhbVNvdXJjZSopIE9WRVJSSURFIEZJTkFMOworICAgIHZpcnR1YWwgdm9pZCByZW1vdmVSZW1v
dGVTb3VyY2UoTWVkaWFTdHJlYW1Tb3VyY2UqKSBPVkVSUklERSBGSU5BTDsKIAogICAgIHZvaWQg
c2NoZWR1bGVEaXNwYXRjaEV2ZW50KFBhc3NSZWZQdHI8RXZlbnQ+KTsKICAgICB2b2lkIHNjaGVk
dWxlZEV2ZW50VGltZXJGaXJlZChUaW1lcjxNZWRpYVN0cmVhbT4qKTsKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1DYXBhYmlsaXRpZXMuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJl
YW1DYXBhYmlsaXRpZXMuY3BwCShyZXZpc2lvbiAwKQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbUNhcGFiaWxpdGllcy5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTAsMCArMSwxNDIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2lmIEVO
QUJMRShNRURJQV9TVFJFQU0pCisKKyNpbmNsdWRlICJNZWRpYVN0cmVhbUNhcGFiaWxpdGllcy5o
IgorCisjaW5jbHVkZSAiQWxsQXVkaW9DYXBhYmlsaXRpZXMuaCIKKyNpbmNsdWRlICJBbGxWaWRl
b0NhcGFiaWxpdGllcy5oIgorI2luY2x1ZGUgIkNhcGFiaWxpdHlSYW5nZS5oIgorI2luY2x1ZGUg
Ik1lZGlhU291cmNlU3RhdGVzLmgiCisjaW5jbHVkZSAiTWVkaWFTdHJlYW1Tb3VyY2VDYXBhYmls
aXRpZXMuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitQYXNzUmVmUHRyPE1lZGlhU3RyZWFt
Q2FwYWJpbGl0aWVzPiBNZWRpYVN0cmVhbUNhcGFiaWxpdGllczo6Y3JlYXRlKFBhc3NSZWZQdHI8
TWVkaWFTdHJlYW1Tb3VyY2VDYXBhYmlsaXRpZXM+IGNhcGFiaWxpdGllcykKK3sKKyAgICBpZiAo
Y2FwYWJpbGl0aWVzLT5oYXNWaWRlb1NvdXJjZSgpKQorICAgICAgICByZXR1cm4gQWxsVmlkZW9D
YXBhYmlsaXRpZXM6OmNyZWF0ZShjYXBhYmlsaXRpZXMpOworICAgIAorICAgIHJldHVybiBBbGxB
dWRpb0NhcGFiaWxpdGllczo6Y3JlYXRlKGNhcGFiaWxpdGllcyk7Cit9CisKK01lZGlhU3RyZWFt
Q2FwYWJpbGl0aWVzOjpNZWRpYVN0cmVhbUNhcGFiaWxpdGllcyhQYXNzUmVmUHRyPE1lZGlhU3Ry
ZWFtU291cmNlQ2FwYWJpbGl0aWVzPiBjYXBhYmlsaXRpZXMpCisgICAgOiBtX1NvdXJjZUNhcGFi
aWxpdGllcyhjYXBhYmlsaXRpZXMpCit7Cit9CisKK1ZlY3RvcjxTdHJpbmc+IE1lZGlhU3RyZWFt
Q2FwYWJpbGl0aWVzOjpzb3VyY2VUeXBlKCkgY29uc3QKK3sKKyAgICBBU1NFUlQobV9Tb3VyY2VD
YXBhYmlsaXRpZXMtPmhhc1ZpZGVvU291cmNlKCkpOworICAgIAorICAgIHNpemVfdCBjb3VudCA9
IG1fU291cmNlQ2FwYWJpbGl0aWVzLT5zb3VyY2VUeXBlcygpLnNpemUoKTsKKyAgICBpZiAoIWNv
dW50KQorICAgICAgICByZXR1cm4gVmVjdG9yPFN0cmluZz4oKTsKKyAgICAKKyAgICBjb25zdCBW
ZWN0b3I8TWVkaWFTdHJlYW1Tb3VyY2VTdGF0ZXM6OlNvdXJjZVR5cGU+JiBzb3VyY2VUeXBlcyA9
IG1fU291cmNlQ2FwYWJpbGl0aWVzLT5zb3VyY2VUeXBlcygpOworICAgIFZlY3RvcjxTdHJpbmc+
IGNhcGFiaWxpdGllczsKKyAgICBjYXBhYmlsaXRpZXMucmVzZXJ2ZUNhcGFjaXR5KGNvdW50KTsK
KyAgICAKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGNvdW50OyArK2kpCisgICAgICAgIGNh
cGFiaWxpdGllcy5hcHBlbmQoTWVkaWFTb3VyY2VTdGF0ZXM6OnNvdXJjZVR5cGUoc291cmNlVHlw
ZXNbaV0pKTsKKyAgICAKKyAgICByZXR1cm4gY2FwYWJpbGl0aWVzOworfQorCitWZWN0b3I8U3Ry
aW5nPiBNZWRpYVN0cmVhbUNhcGFiaWxpdGllczo6c291cmNlSWQoKSBjb25zdAoreworICAgIHNp
emVfdCBjb3VudCA9IG1fU291cmNlQ2FwYWJpbGl0aWVzLT5zb3VyY2VJZCgpLnNpemUoKTsKKyAg
ICBpZiAoIWNvdW50KQorICAgICAgICByZXR1cm4gVmVjdG9yPFN0cmluZz4oKTsKKyAgICAKKyAg
ICBjb25zdCBWZWN0b3I8QXRvbWljU3RyaW5nPiYgc291cmNlSWRzID0gbV9Tb3VyY2VDYXBhYmls
aXRpZXMtPnNvdXJjZUlkKCk7CisgICAgVmVjdG9yPFN0cmluZz4gY2FwYWJpbGl0aWVzOworICAg
IGNhcGFiaWxpdGllcy5yZXNlcnZlQ2FwYWNpdHkoY291bnQpOworICAgIAorICAgIGZvciAoc2l6
ZV90IGkgPSAwOyBpIDwgY291bnQ7ICsraSkKKyAgICAgICAgY2FwYWJpbGl0aWVzLmFwcGVuZChz
b3VyY2VJZHNbaV0pOworICAgIAorICAgIHJldHVybiBjYXBhYmlsaXRpZXM7Cit9CisKK1ZlY3Rv
cjxTdHJpbmc+IE1lZGlhU3RyZWFtQ2FwYWJpbGl0aWVzOjpmYWNpbmdNb2RlKCkgY29uc3QKK3sK
KyAgICBBU1NFUlQobV9Tb3VyY2VDYXBhYmlsaXRpZXMtPmhhc1ZpZGVvU291cmNlKCkpOworICAg
IAorICAgIHNpemVfdCBjb3VudCA9IG1fU291cmNlQ2FwYWJpbGl0aWVzLT5mYWNpbmdNb2Rlcygp
LnNpemUoKTsKKyAgICBpZiAoIWNvdW50KQorICAgICAgICByZXR1cm4gVmVjdG9yPFN0cmluZz4o
KTsKKyAgICAKKyAgICBjb25zdCBWZWN0b3I8TWVkaWFTdHJlYW1Tb3VyY2VTdGF0ZXM6OlZpZGVv
RmFjaW5nTW9kZT4mIGZhY2luZ01vZGVzID0gbV9Tb3VyY2VDYXBhYmlsaXRpZXMtPmZhY2luZ01v
ZGVzKCk7CisgICAgVmVjdG9yPFN0cmluZz4gY2FwYWJpbGl0aWVzOworICAgIGNhcGFiaWxpdGll
cy5yZXNlcnZlQ2FwYWNpdHkoY291bnQpOworICAgIAorICAgIGZvciAoc2l6ZV90IGkgPSAwOyBp
IDwgY291bnQ7ICsraSkKKyAgICAgICAgY2FwYWJpbGl0aWVzLmFwcGVuZChNZWRpYVNvdXJjZVN0
YXRlczo6ZmFjaW5nTW9kZShmYWNpbmdNb2Rlc1tpXSkpOworICAgIAorICAgIHJldHVybiBjYXBh
YmlsaXRpZXM7Cit9CisKK1JlZlB0cjxDYXBhYmlsaXR5UmFuZ2U+IE1lZGlhU3RyZWFtQ2FwYWJp
bGl0aWVzOjp3aWR0aCgpIGNvbnN0Cit7CisgICAgQVNTRVJUKG1fU291cmNlQ2FwYWJpbGl0aWVz
LT5oYXNWaWRlb1NvdXJjZSgpKTsKKyAgICAKKyAgICByZXR1cm4gQ2FwYWJpbGl0eVJhbmdlOjpj
cmVhdGUobV9Tb3VyY2VDYXBhYmlsaXRpZXMtPndpZHRoKCkpOworfQorCitSZWZQdHI8Q2FwYWJp
bGl0eVJhbmdlPiBNZWRpYVN0cmVhbUNhcGFiaWxpdGllczo6aGVpZ2h0KCkgY29uc3QKK3sKKyAg
ICBBU1NFUlQobV9Tb3VyY2VDYXBhYmlsaXRpZXMtPmhhc1ZpZGVvU291cmNlKCkpOworICAgIAor
ICAgIHJldHVybiBDYXBhYmlsaXR5UmFuZ2U6OmNyZWF0ZShtX1NvdXJjZUNhcGFiaWxpdGllcy0+
aGVpZ2h0KCkpOworfQorCitSZWZQdHI8Q2FwYWJpbGl0eVJhbmdlPiBNZWRpYVN0cmVhbUNhcGFi
aWxpdGllczo6ZnJhbWVSYXRlKCkgY29uc3QKK3sKKyAgICBBU1NFUlQobV9Tb3VyY2VDYXBhYmls
aXRpZXMtPmhhc1ZpZGVvU291cmNlKCkpOworICAgIAorICAgIHJldHVybiBDYXBhYmlsaXR5UmFu
Z2U6OmNyZWF0ZShtX1NvdXJjZUNhcGFiaWxpdGllcy0+ZnJhbWVSYXRlKCkpOworfQorCitSZWZQ
dHI8Q2FwYWJpbGl0eVJhbmdlPiBNZWRpYVN0cmVhbUNhcGFiaWxpdGllczo6YXNwZWN0UmF0aW8o
KSBjb25zdAoreworICAgIEFTU0VSVChtX1NvdXJjZUNhcGFiaWxpdGllcy0+aGFzVmlkZW9Tb3Vy
Y2UoKSk7CisgICAgCisgICAgcmV0dXJuIENhcGFiaWxpdHlSYW5nZTo6Y3JlYXRlKG1fU291cmNl
Q2FwYWJpbGl0aWVzLT5hc3BlY3RSYXRpbygpKTsKK30KKworUmVmUHRyPENhcGFiaWxpdHlSYW5n
ZT4gTWVkaWFTdHJlYW1DYXBhYmlsaXRpZXM6OnZvbHVtZSgpIGNvbnN0Cit7CisgICAgQVNTRVJU
KCFtX1NvdXJjZUNhcGFiaWxpdGllcy0+aGFzVmlkZW9Tb3VyY2UoKSk7CisgICAgCisgICAgcmV0
dXJuIENhcGFiaWxpdHlSYW5nZTo6Y3JlYXRlKG1fU291cmNlQ2FwYWJpbGl0aWVzLT52b2x1bWUo
KSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtQ2FwYWJpbGl0aWVzLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVh
bUNhcGFiaWxpdGllcy5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9t
ZWRpYXN0cmVhbS9NZWRpYVN0cmVhbUNhcGFiaWxpdGllcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0w
LDAgKzEsNjkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisg
KiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisg
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgTWVkaWFTdHJlYW1DYXBhYmlsaXRpZXNfaAor
I2RlZmluZSBNZWRpYVN0cmVhbUNhcGFiaWxpdGllc19oCisKKyNpZiBFTkFCTEUoTUVESUFfU1RS
RUFNKQorCisjaW5jbHVkZSAiTWVkaWFTdHJlYW1DYXBhYmlsaXRpZXMuaCIKKyNpbmNsdWRlICJN
ZWRpYVN0cmVhbVNvdXJjZUNhcGFiaWxpdGllcy5oIgorI2luY2x1ZGUgIlNjcmlwdFdyYXBwYWJs
ZS5oIgorI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5o
PgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7
CisKK2NsYXNzIENhcGFiaWxpdHlSYW5nZTsKK2NsYXNzIE1lZGlhU3RyZWFtU291cmNlQ2FwYWJp
bGl0aWVzOworCitjbGFzcyBNZWRpYVN0cmVhbUNhcGFiaWxpdGllcyA6IHB1YmxpYyBSZWZDb3Vu
dGVkPE1lZGlhU3RyZWFtQ2FwYWJpbGl0aWVzPiwgcHVibGljIFNjcmlwdFdyYXBwYWJsZSB7Citw
dWJsaWM6CisgICAgc3RhdGljIFBhc3NSZWZQdHI8TWVkaWFTdHJlYW1DYXBhYmlsaXRpZXM+IGNy
ZWF0ZShQYXNzUmVmUHRyPE1lZGlhU3RyZWFtU291cmNlQ2FwYWJpbGl0aWVzPik7CisgICAgdmly
dHVhbCB+TWVkaWFTdHJlYW1DYXBhYmlsaXRpZXMoKSB7IH0KKworICAgIHZpcnR1YWwgVmVjdG9y
PFN0cmluZz4gc291cmNlVHlwZSgpIGNvbnN0OworICAgIHZpcnR1YWwgVmVjdG9yPFN0cmluZz4g
c291cmNlSWQoKSBjb25zdDsKKyAgICB2aXJ0dWFsIFJlZlB0cjxDYXBhYmlsaXR5UmFuZ2U+IHdp
ZHRoKCkgY29uc3Q7CisgICAgdmlydHVhbCBSZWZQdHI8Q2FwYWJpbGl0eVJhbmdlPiBoZWlnaHQo
KSBjb25zdDsKKyAgICB2aXJ0dWFsIFJlZlB0cjxDYXBhYmlsaXR5UmFuZ2U+IGZyYW1lUmF0ZSgp
IGNvbnN0OworICAgIHZpcnR1YWwgUmVmUHRyPENhcGFiaWxpdHlSYW5nZT4gYXNwZWN0UmF0aW8o
KSBjb25zdDsKKyAgICB2aXJ0dWFsIFZlY3RvcjxTdHJpbmc+IGZhY2luZ01vZGUoKSBjb25zdDsK
KyAgICB2aXJ0dWFsIFJlZlB0cjxDYXBhYmlsaXR5UmFuZ2U+IHZvbHVtZSgpIGNvbnN0OworICAg
IAorICAgIGJvb2wgaGFzVmlkZW9Tb3VyY2UoKSB7IHJldHVybiBtX1NvdXJjZUNhcGFiaWxpdGll
cy0+aGFzVmlkZW9Tb3VyY2UoKTsgfQorCitwcm90ZWN0ZWQ6CisgICAgZXhwbGljaXQgTWVkaWFT
dHJlYW1DYXBhYmlsaXRpZXMoUGFzc1JlZlB0cjxNZWRpYVN0cmVhbVNvdXJjZUNhcGFiaWxpdGll
cz4pOworCisgICAgUmVmUHRyPE1lZGlhU3RyZWFtU291cmNlQ2FwYWJpbGl0aWVzPiBtX1NvdXJj
ZUNhcGFiaWxpdGllczsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8v
IE1lZGlhU3RyZWFtQ2FwYWJpbGl0aWVzX2gKKworI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtQ2FwYWJpbGl0aWVzLmlkbAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtQ2Fw
YWJpbGl0aWVzLmlkbAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVk
aWFzdHJlYW0vTWVkaWFTdHJlYW1DYXBhYmlsaXRpZXMuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0w
LDAgKzEsMzMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisg
KiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisg
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLiAKKyAqLworCitbCisgICAgQ29uZGl0aW9uYWw9TUVESUFfU1RSRUFNLAor
ICAgIE5vSW50ZXJmYWNlT2JqZWN0LAorICAgIFNraXBWVGFibGVWYWxpZGF0aW9uLAorICAgIEN1
c3RvbVRvSlNPYmplY3QsCitdIGludGVyZmFjZSBNZWRpYVN0cmVhbUNhcGFiaWxpdGllcyB7Cit9
OworCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFt
VHJhY2suY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJl
YW0vTWVkaWFTdHJlYW1UcmFjay5jcHAJKHJldmlzaW9uIDE1NzAxNikKKysrIFNvdXJjZS9XZWJD
b3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1UcmFjay5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTI5LDMyICsyOSw2NSBAQAogCiAjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKIAorI2lu
Y2x1ZGUgIkFsbEF1ZGlvQ2FwYWJpbGl0aWVzLmgiCisjaW5jbHVkZSAiQWxsVmlkZW9DYXBhYmls
aXRpZXMuaCIKKyNpbmNsdWRlICJBdWRpb1N0cmVhbVRyYWNrLmgiCiAjaW5jbHVkZSAiRGljdGlv
bmFyeS5oIgogI2luY2x1ZGUgIkV2ZW50LmgiCiAjaW5jbHVkZSAiRXhjZXB0aW9uQ29kZS5oIgor
I2luY2x1ZGUgIk1lZGlhQ29uc3RyYWludHNJbXBsLmgiCisjaW5jbHVkZSAiTWVkaWFTb3VyY2VT
dGF0ZXMuaCIKICNpbmNsdWRlICJNZWRpYVN0cmVhbS5oIgogI2luY2x1ZGUgIk1lZGlhU3RyZWFt
Q2VudGVyLmgiCiAjaW5jbHVkZSAiTWVkaWFTdHJlYW1EZXNjcmlwdG9yLmgiCiAjaW5jbHVkZSAi
TWVkaWFTdHJlYW1UcmFja1NvdXJjZXNDYWxsYmFjay5oIgogI2luY2x1ZGUgIk1lZGlhU3RyZWFt
VHJhY2tTb3VyY2VzUmVxdWVzdC5oIgorI2luY2x1ZGUgIk1lZGlhVHJhY2tDb25zdHJhaW50cy5o
IgorI2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCiAjaW5jbHVkZSAiVVVJRC5oIgorI2luY2x1
ZGUgIlZpZGVvU3RyZWFtVHJhY2suaCIKKyNpbmNsdWRlIDx3dGYvRnVuY3Rpb25hbC5oPgogI2lu
Y2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIE1l
ZGlhU3RyZWFtVHJhY2s6Ok1lZGlhU3RyZWFtVHJhY2soU2NyaXB0RXhlY3V0aW9uQ29udGV4dCog
Y29udGV4dCwgTWVkaWFTdHJlYW1Tb3VyY2UqIHNvdXJjZSwgY29uc3QgRGljdGlvbmFyeSopCiAg
ICAgOiBBY3RpdmVET01PYmplY3QoY29udGV4dCkKLSAgICAsIG1fc291cmNlKHNvdXJjZSkKKyAg
ICAsIG1fc291cmNlKDApCiAgICAgLCBtX3JlYWR5U3RhdGUoTWVkaWFTdHJlYW1Tb3VyY2U6Ok5l
dykKICAgICAsIG1fc3RvcHBlZChmYWxzZSkKICAgICAsIG1fZW5hYmxlZCh0cnVlKQogICAgICwg
bV9tdXRlZChmYWxzZSkKKyAgICAsIG1fZXZlbnREaXNwYXRjaFNjaGVkdWxlZChmYWxzZSkKIHsK
ICAgICBzdXNwZW5kSWZOZWVkZWQoKTsKLSAgICBpZiAobV9zb3VyY2UpIHsKLSAgICAgICAgbV9z
b3VyY2UtPmFkZE9ic2VydmVyKHRoaXMpOwotICAgICAgICBtX211dGVkID0gbV9zb3VyY2UtPm11
dGVkKCk7Ci0gICAgfQorICAgIGlmIChzb3VyY2UpCisgICAgICAgIHNldFNvdXJjZShzb3VyY2Up
OworfQorCitNZWRpYVN0cmVhbVRyYWNrOjpNZWRpYVN0cmVhbVRyYWNrKE1lZGlhU3RyZWFtVHJh
Y2sqIG90aGVyKQorICAgIDogQWN0aXZlRE9NT2JqZWN0KG90aGVyLT5zY3JpcHRFeGVjdXRpb25D
b250ZXh0KCkpCit7CisgICAgc3VzcGVuZElmTmVlZGVkKCk7CisKKyAgICAvLyBXaGVuIHRoZSBj
bG9uZSgpIG1ldGhvZCBpcyBpbnZva2VkLCB0aGUgdXNlciBhZ2VudCBtdXN0IHJ1biB0aGUgZm9s
bG93aW5nIHN0ZXBzOgorICAgIC8vIDEuIExldCB0cmFja0Nsb25lIGJlIGEgbmV3bHkgY29uc3Ry
dWN0ZWQgTWVkaWFTdHJlYW1UcmFjayBvYmplY3QuCisgICAgLy8gMi4gSW5pdGlhbGl6ZSB0cmFj
a0Nsb25lJ3MgaWQgYXR0cmlidXRlIHRvIGEgbmV3bHkgZ2VuZXJhdGVkIHZhbHVlLgorICAgIG1f
aWQgPSBjcmVhdGVDYW5vbmljYWxVVUlEU3RyaW5nKCk7CisKKyAgICAvLyAzLiBMZXQgdHJhY2tD
bG9uZSBpbmhlcml0IHRoaXMgdHJhY2sncyB1bmRlcmx5aW5nIHNvdXJjZSwga2luZCwgbGFiZWwg
YW5kIGVuYWJsZWQgYXR0cmlidXRlcy4KKyAgICBzZXRTb3VyY2Uob3RoZXItPnNvdXJjZSgpKTsK
KyAgICBtX3JlYWR5U3RhdGUgPSBtX3NvdXJjZSA/IG1fc291cmNlLT5yZWFkeVN0YXRlKCkgOiBN
ZWRpYVN0cmVhbVNvdXJjZTo6TmV3OworICAgIG1fZW5hYmxlZCA9IG90aGVyLT5lbmFibGVkKCk7
CisKKyAgICAvLyBOb3RlOiB0aGUgImNsb25lIiBzdGVwcyBkb24ndCBzYXkgYW55dGhpbmcgYWJv
dXQgJ211dGVkJywgYnV0IDQuMy4xIHNheXM6CisgICAgLy8gRm9yIGEgbmV3bHkgY3JlYXRlZCBN
ZWRpYVN0cmVhbVRyYWNrIG9iamVjdCwgdGhlIGZvbGxvd2luZyBhcHBsaWVzLiBUaGUgdHJhY2sg
aXMgYWx3YXlzIGVuYWJsZWQKKyAgICAvLyB1bmxlc3Mgc3RhdGVkIG90aGVyd2lzZSAoZm9yIGV4
YW1scGUgd2hlbiBjbG9uZWQpIGFuZCB0aGUgbXV0ZWQgc3RhdGUgcmVmbGVjdHMgdGhlIHN0YXRl
IG9mIHRoZQorICAgIC8vIHNvdXJjZSBhdCB0aGUgdGltZSB0aGUgdHJhY2sgaXMgY3JlYXRlZC4K
KyAgICBtX211dGVkID0gb3RoZXItPm11dGVkKCk7CisKKyAgICBtX2V2ZW50RGlzcGF0Y2hTY2hl
ZHVsZWQgPWZhbHNlOworICAgIG1fc3RvcHBlZCA9IG90aGVyLT5zdG9wcGVkKCk7CiB9CiAKIE1l
ZGlhU3RyZWFtVHJhY2s6On5NZWRpYVN0cmVhbVRyYWNrKCkKQEAgLTg1LDYgKzExOCwxNSBAQCBj
b25zdCBBdG9taWNTdHJpbmcmIE1lZGlhU3RyZWFtVHJhY2s6OmtpCiB2b2lkIE1lZGlhU3RyZWFt
VHJhY2s6OnNldFNvdXJjZShNZWRpYVN0cmVhbVNvdXJjZSogc291cmNlKQogewogICAgIEFTU0VS
VChzb3VyY2UgPT0gbV9zb3VyY2UgfHwgIW1fc291cmNlKTsKKworICAgIGlmIChtX3NvdXJjZSkK
KyAgICAgICAgbV9zb3VyY2UtPnJlbW92ZU9ic2VydmVyKHRoaXMpOworCisgICAgaWYgKHNvdXJj
ZSkgeworICAgICAgICBzb3VyY2UtPmFkZE9ic2VydmVyKHRoaXMpOworICAgICAgICBtX211dGVk
ID0gc291cmNlLT5tdXRlZCgpOworICAgIH0KKwogICAgIG1fc291cmNlID0gc291cmNlOwogfQog
CkBAIC05MywxOCArMTM1LDEzIEBAIGNvbnN0IFN0cmluZyYgTWVkaWFTdHJlYW1UcmFjazo6aWQo
KSBjb24KICAgICBpZiAoIW1faWQuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gbV9pZDsKIAot
ICAgIGlmICghbV9zb3VyY2UpCi0gICAgICAgIHJldHVybiBlbXB0eVN0cmluZygpOwotCi0gICAg
Y29uc3QgU3RyaW5nJiBpZCA9IG1fc291cmNlLT5pZCgpOwotICAgIGlmICghaWQuaXNFbXB0eSgp
KQotICAgICAgICByZXR1cm4gaWQ7Ci0KICAgICAvLyBUaGUgc3BlYyBzYXlzOgogICAgIC8vICAg
VW5sZXNzIGEgTWVkaWFTdHJlYW1UcmFjayBvYmplY3QgaXMgY3JlYXRlZCBhcyBhIHBhcnQgYSBv
ZiBzcGVjaWFsIHB1cnBvc2UgYWxnb3JpdGhtIHRoYXQKICAgICAvLyAgIHNwZWNpZmllcyBob3cg
dGhlIHRyYWNrIGlkIG11c3QgYmUgaW5pdGlhbGl6ZWQsIHRoZSB1c2VyIGFnZW50IG11c3QgZ2Vu
ZXJhdGUgYSBnbG9iYWxseQogICAgIC8vICAgdW5pcXVlIGlkZW50aWZpZXIgc3RyaW5nIGFuZCBp
bml0aWFsaXplIHRoZSBvYmplY3QncyBpZCBhdHRyaWJ1dGUgdG8gdGhhdCBzdHJpbmcuCi0gICAg
Ly8gc28gZ2VuZXJhdGUgYSBVVUlEIGlmIHRoZSBzb3VyY2UgZG9lc24ndCBoYXZlIGFuIElELgor
ICAgIGlmIChtX3NvdXJjZSAmJiBtX3NvdXJjZS0+dXNlSURGb3JUcmFja0lEKCkpCisgICAgICAg
IHJldHVybiBtX3NvdXJjZS0+aWQoKTsKKwogICAgIG1faWQgPSBjcmVhdGVDYW5vbmljYWxVVUlE
U3RyaW5nKCk7CiAgICAgcmV0dXJuIG1faWQ7CiB9CkBAIC0xMjUsMTggKzE2Miw0MCBAQCB2b2lk
IE1lZGlhU3RyZWFtVHJhY2s6OnNldEVuYWJsZWQoYm9vbCBlCiB7CiAgICAgaWYgKG1fc3RvcHBl
ZCkKICAgICAgICAgcmV0dXJuOwotICAgIAorCisgICAgLy8gNC4zLjMuMQorICAgIC8vIC4uLiBh
ZnRlciBhIE1lZGlhU3RyZWFtVHJhY2sgaXMgZGlzYXNzb2NpYXRlZCBmcm9tIGl0cyB0cmFjaywg
aXRzIGVuYWJsZWQgYXR0cmlidXRlIHN0aWxsCisgICAgLy8gY2hhbmdlcyB2YWx1ZSB3aGVuIHNl
dDsgaXQganVzdCBkb2Vzbid0IGRvIGFueXRoaW5nIHdpdGggdGhhdCBuZXcgdmFsdWUuCiAgICAg
bV9lbmFibGVkID0gZW5hYmxlZDsKIAotICAgIGlmICghbV9zb3VyY2UgfHwgZW5hYmxlZCA9PSBt
X3NvdXJjZS0+ZW5hYmxlZCgpKQorICAgIGlmICghbV9zb3VyY2UpCiAgICAgICAgIHJldHVybjsK
IAogICAgIG1fc291cmNlLT5zZXRFbmFibGVkKGVuYWJsZWQpOworfQogCi0gICAgaWYgKG1fc291
cmNlLT5zdHJlYW0oKS0+ZW5kZWQoKSkKLSAgICAgICAgcmV0dXJuOworYm9vbCBNZWRpYVN0cmVh
bVRyYWNrOjptdXRlZCgpIGNvbnN0Cit7CisgICAgaWYgKG1fc3RvcHBlZCB8fCAhbV9zb3VyY2Up
CisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIHJldHVybiBtX3NvdXJjZS0+bXV0ZWQoKTsK
K30KKworYm9vbCBNZWRpYVN0cmVhbVRyYWNrOjpyZWFkb25seSgpIGNvbnN0Cit7CisgICAgaWYg
KG1fc3RvcHBlZCB8fCAhbV9zb3VyY2UpCisgICAgICAgIHJldHVybiB0cnVlOworCisgICAgcmV0
dXJuIG1fc291cmNlLT5yZWFkb25seSgpOworfQorCitib29sIE1lZGlhU3RyZWFtVHJhY2s6OnJl
bW90ZSgpIGNvbnN0Cit7CisgICAgaWYgKCFtX3NvdXJjZSkKKyAgICAgICAgcmV0dXJuIGZhbHNl
OwogCi0gICAgTWVkaWFTdHJlYW1DZW50ZXI6OnNoYXJlZCgpLmRpZFNldE1lZGlhU3RyZWFtVHJh
Y2tFbmFibGVkKG1fc291cmNlLmdldCgpKTsKKyAgICByZXR1cm4gbV9zb3VyY2UtPnJlbW90ZSgp
OwogfQogCiBjb25zdCBBdG9taWNTdHJpbmcmIE1lZGlhU3RyZWFtVHJhY2s6OnJlYWR5U3RhdGUo
KSBjb25zdApAQCAtMTcxLDEyICsyMzAsNjQgQEAgdm9pZCBNZWRpYVN0cmVhbVRyYWNrOjpnZXRT
b3VyY2VzKFNjcmlwdAogICAgICAgICBlYyA9IE5PVF9TVVBQT1JURURfRVJSOwogfQogCitQYXNz
UmVmUHRyPE1lZGlhVHJhY2tDb25zdHJhaW50cz4gTWVkaWFTdHJlYW1UcmFjazo6Y29uc3RyYWlu
dHMoKSBjb25zdAoreworICAgIC8vIEZJWE1FOiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTIyNDI4CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gMDsK
K30KKworUGFzc1JlZlB0cjxNZWRpYVNvdXJjZVN0YXRlcz4gTWVkaWFTdHJlYW1UcmFjazo6c3Rh
dGVzKCkgY29uc3QKK3sKKyAgICBpZiAoIW1fc291cmNlKQorICAgICAgICByZXR1cm4gMDsKKyAg
ICAKKyAgICByZXR1cm4gTWVkaWFTb3VyY2VTdGF0ZXM6OmNyZWF0ZShtX3NvdXJjZS0+c3RhdGVz
KCkpOworfQorCitQYXNzUmVmUHRyPE1lZGlhU3RyZWFtQ2FwYWJpbGl0aWVzPiBNZWRpYVN0cmVh
bVRyYWNrOjpjYXBhYmlsaXRpZXMoKSBjb25zdAoreworICAgIGlmICghbV9zb3VyY2UpCisgICAg
ICAgIHJldHVybiAwOworCisgICAgcmV0dXJuIE1lZGlhU3RyZWFtQ2FwYWJpbGl0aWVzOjpjcmVh
dGUobV9zb3VyY2UtPmNhcGFiaWxpdGllcygpKTsKK30KKwordm9pZCBNZWRpYVN0cmVhbVRyYWNr
OjphcHBseUNvbnN0cmFpbnRzKGNvbnN0IERpY3Rpb25hcnkmIGNvbnN0cmFpbnRzKQoreworICAg
IC8vIEZJWE1FOiBhcHBseSB0aGUgbmV3IGNvbnN0cmFpbnRzIHRvIHRoZSB0cmFjaworICAgIC8v
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjI0MjgKKyAgICBtX2Nv
bnN0cmFpbnRzLT5pbml0aWFsaXplKGNvbnN0cmFpbnRzKTsKK30KKworUGFzc1JlZlB0cjxNZWRp
YVN0cmVhbVRyYWNrPiBNZWRpYVN0cmVhbVRyYWNrOjpjbG9uZSgpCit7CisgICAgaWYgKG1fc291
cmNlICYmIG1fc291cmNlLT50eXBlKCkgPT0gTWVkaWFTdHJlYW1Tb3VyY2U6OkF1ZGlvKQorICAg
ICAgICByZXR1cm4gQXVkaW9TdHJlYW1UcmFjazo6Y3JlYXRlKHRoaXMpOworCisgICAgcmV0dXJu
IFZpZGVvU3RyZWFtVHJhY2s6OmNyZWF0ZSh0aGlzKTsKK30KKwordm9pZCBNZWRpYVN0cmVhbVRy
YWNrOjpzdG9wUHJvZHVjaW5nRGF0YSgpCit7CisgICAgaWYgKG1fc3RvcHBlZCB8fCAhbV9zb3Vy
Y2UpCisgICAgICAgIHJldHVybjsKKworICAgIC8vIFNldCBtX3N0b3BwZWQgYmVmb3JlIHN0b3Bw
aW5nIHRoZSBzb3VyY2UgYmVjYXVzZSB0aGF0IG1heSByZXN1bHQgaW4gYSBjYWxsIHRvIHNvdXJj
ZUNoYW5nZWRTdGF0ZQorICAgIC8vIGFuZCB3ZSBvbmx5IHdhbnQgdG8gZGlzcGF0Y2ggdGhlICdl
bmRlZCcgZXZlbnQgaWYgbmVjZXNzYXJ5LgorICAgIG1fc3RvcHBlZCA9IHRydWU7CisgICAgbV9z
b3VyY2UtPnN0b3AoKTsKKworICAgIGlmIChtX3JlYWR5U3RhdGUgIT0gTWVkaWFTdHJlYW1Tb3Vy
Y2U6OkVuZGVkKQorICAgICAgICBzY2hlZHVsZUV2ZW50RGlzcGF0Y2goRXZlbnQ6OmNyZWF0ZShl
dmVudE5hbWVzKCkuZW5kZWRFdmVudCwgZmFsc2UsIGZhbHNlKSk7Cit9CisKIGJvb2wgTWVkaWFT
dHJlYW1UcmFjazo6ZW5kZWQoKSBjb25zdAogewogICAgIHJldHVybiBtX3N0b3BwZWQgfHwgKG1f
c291cmNlICYmIG1fc291cmNlLT5yZWFkeVN0YXRlKCkgPT0gTWVkaWFTdHJlYW1Tb3VyY2U6OkVu
ZGVkKTsKIH0KIAotdm9pZCBNZWRpYVN0cmVhbVRyYWNrOjpzb3VyY2VDaGFuZ2VkU3RhdGUoKQor
dm9pZCBNZWRpYVN0cmVhbVRyYWNrOjpzb3VyY2VTdGF0ZUNoYW5nZWQoKQogewogICAgIGlmICht
X3N0b3BwZWQpCiAgICAgICAgIHJldHVybjsKQEAgLTE4NSwxOCArMjk2LDUwIEBAIHZvaWQgTWVk
aWFTdHJlYW1UcmFjazo6c291cmNlQ2hhbmdlZFN0YXQKICAgICBtX3JlYWR5U3RhdGUgPSBtX3Nv
dXJjZS0+cmVhZHlTdGF0ZSgpOwogCiAgICAgaWYgKG1fcmVhZHlTdGF0ZSA+PSBNZWRpYVN0cmVh
bVNvdXJjZTo6TGl2ZSAmJiBvbGRSZWFkeVN0YXRlID09IE1lZGlhU3RyZWFtU291cmNlOjpOZXcp
Ci0gICAgICAgIGRpc3BhdGNoRXZlbnQoRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkuc3RhcnRl
ZEV2ZW50LCBmYWxzZSwgZmFsc2UpKTsKKyAgICAgICAgc2NoZWR1bGVFdmVudERpc3BhdGNoKEV2
ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLnN0YXJ0ZWRFdmVudCwgZmFsc2UsIGZhbHNlKSk7CiAg
ICAgaWYgKG1fcmVhZHlTdGF0ZSA9PSBNZWRpYVN0cmVhbVNvdXJjZTo6RW5kZWQgJiYgb2xkUmVh
ZHlTdGF0ZSAhPSBNZWRpYVN0cmVhbVNvdXJjZTo6RW5kZWQpCi0gICAgICAgIGRpc3BhdGNoRXZl
bnQoRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkuZW5kZWRFdmVudCwgZmFsc2UsIGZhbHNlKSk7
CisgICAgICAgIHNjaGVkdWxlRXZlbnREaXNwYXRjaChFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMo
KS5lbmRlZEV2ZW50LCBmYWxzZSwgZmFsc2UpKTsKK30KKyAgICAKK3ZvaWQgTWVkaWFTdHJlYW1U
cmFjazo6c291cmNlTXV0ZWRDaGFuZ2VkKCkKK3sKKyAgICBpZiAobV9zdG9wcGVkKQorICAgICAg
ICByZXR1cm47CiAKLSAgICBpZiAobV9tdXRlZCA9PSBtX3NvdXJjZS0+bXV0ZWQoKSkKKyAgICBi
b29sIG11dGVkID0gbV9zb3VyY2UtPm11dGVkKCk7CisgICAgaWYgKG1fbXV0ZWQgPT0gbXV0ZWQp
CiAgICAgICAgIHJldHVybjsKIAotICAgIG1fbXV0ZWQgPSBtX3NvdXJjZS0+bXV0ZWQoKTsKKyAg
ICBtX211dGVkID0gbXV0ZWQ7CiAgICAgaWYgKG1fbXV0ZWQpCi0gICAgICAgIGRpc3BhdGNoRXZl
bnQoRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkubXV0ZUV2ZW50LCBmYWxzZSwgZmFsc2UpKTsK
KyAgICAgICAgc2NoZWR1bGVFdmVudERpc3BhdGNoKEV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygp
Lm11dGVFdmVudCwgZmFsc2UsIGZhbHNlKSk7CiAgICAgZWxzZQotICAgICAgICBkaXNwYXRjaEV2
ZW50KEV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLnVubXV0ZUV2ZW50LCBmYWxzZSwgZmFsc2Up
KTsKKyAgICAgICAgc2NoZWR1bGVFdmVudERpc3BhdGNoKEV2ZW50OjpjcmVhdGUoZXZlbnROYW1l
cygpLnVubXV0ZUV2ZW50LCBmYWxzZSwgZmFsc2UpKTsKKworICAgIGNvbmZpZ3VyZVRyYWNrUmVu
ZGVyaW5nKCk7Cit9CisKK3ZvaWQgTWVkaWFTdHJlYW1UcmFjazo6c291cmNlRW5hYmxlZENoYW5n
ZWQoKQoreworICAgIGlmIChtX3N0b3BwZWQpCisgICAgICAgIHJldHVybjsKKyAgICAKKyAgICAv
LyBtZWRpYSBmcm9tIHRoZSBzb3VyY2Ugb25seSBmbG93cyB3aGVuIGEgTWVkaWFTdHJlYW1UcmFj
ayBvYmplY3QgaXMgYm90aCB1bm11dGVkIGFuZCBlbmFibGVkCisgICAgY29uZmlndXJlVHJhY2tS
ZW5kZXJpbmcoKTsKK30KKwordm9pZCBNZWRpYVN0cmVhbVRyYWNrOjpjb25maWd1cmVUcmFja1Jl
bmRlcmluZygpCit7CisgICAgaWYgKG1fc3RvcHBlZCkKKyAgICAgICAgcmV0dXJuOworCisgICAg
Ly8gNC4zLjEKKyAgICAvLyAuLi4gbWVkaWEgZnJvbSB0aGUgc291cmNlIG9ubHkgZmxvd3Mgd2hl
biBhIE1lZGlhU3RyZWFtVHJhY2sgb2JqZWN0IGlzIGJvdGggdW5tdXRlZCBhbmQgZW5hYmxlZAor
fQorCitib29sIE1lZGlhU3RyZWFtVHJhY2s6OnN0b3BwZWQoKQoreworICAgIHJldHVybiBtX3N0
b3BwZWQ7CiB9CiAKIHZvaWQgTWVkaWFTdHJlYW1UcmFjazo6dHJhY2tEaWRFbmQoKQpAQCAtMjEx
LDcgKzM1NCw0MiBAQCB2b2lkIE1lZGlhU3RyZWFtVHJhY2s6OnRyYWNrRGlkRW5kKCkKIAogdm9p
ZCBNZWRpYVN0cmVhbVRyYWNrOjpzdG9wKCkKIHsKLSAgICBtX3N0b3BwZWQgPSB0cnVlOworICAg
IHN0b3BQcm9kdWNpbmdEYXRhKCk7Cit9CisKK3ZvaWQgTWVkaWFTdHJlYW1UcmFjazo6c2NoZWR1
bGVFdmVudERpc3BhdGNoKFBhc3NSZWZQdHI8RXZlbnQ+IGV2ZW50KQoreworICAgIHsKKyAgICAg
ICAgTXV0ZXhMb2NrZXIgbG9ja2VyKG1fbXV0ZXgpOworICAgICAgICBtX3NjaGVkdWxlZEV2ZW50
cy5hcHBlbmQoZXZlbnQpOworICAgICAgICBpZiAobV9ldmVudERpc3BhdGNoU2NoZWR1bGVkKQor
ICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBtX2V2ZW50RGlzcGF0Y2hTY2hlZHVsZWQgPSB0
cnVlOworICAgIH0KKworICAgIGNhbGxPbk1haW5UaHJlYWQoYmluZCgmTWVkaWFTdHJlYW1UcmFj
azo6ZGlzcGF0Y2hRdWV1ZWRFdmVudHMsIHRoaXMpKTsKK30KKwordm9pZCBNZWRpYVN0cmVhbVRy
YWNrOjpkaXNwYXRjaFF1ZXVlZEV2ZW50cygpCit7CisgICAgVmVjdG9yPFJlZlB0cjxFdmVudD4+
IGV2ZW50czsKKyAgICB7CisgICAgICAgIE11dGV4TG9ja2VyIGxvY2tlcihtX211dGV4KTsKKwor
ICAgICAgICBtX2V2ZW50RGlzcGF0Y2hTY2hlZHVsZWQgPSBmYWxzZTsKKyAgICAgICAgaWYgKCFz
Y3JpcHRFeGVjdXRpb25Db250ZXh0KCkpIHsKKyAgICAgICAgICAgIG1fc2NoZWR1bGVkRXZlbnRz
LmNsZWFyKCk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBldmVu
dHMuc3dhcChtX3NjaGVkdWxlZEV2ZW50cyk7CisgICAgfQorCisgICAgVmVjdG9yPFJlZlB0cjxF
dmVudD4gPjo6aXRlcmF0b3IgaXQgPSBldmVudHMuYmVnaW4oKTsKKyAgICBmb3IgKDsgaXQgIT0g
ZXZlbnRzLmVuZCgpOyArK2l0KQorICAgICAgICBkaXNwYXRjaEV2ZW50KCgqaXQpLnJlbGVhc2Uo
KSk7CisKKyAgICBldmVudHMuY2xlYXIoKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJ
bmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVRyYWNr
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRp
YVN0cmVhbVRyYWNrLmgJKHJldmlzaW9uIDE1NzAzOSkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1UcmFjay5oCSh3b3JraW5nIGNvcHkpCkBAIC00MSw4
ICs0MSwxMSBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBEaWN0aW9uYXJ5OwotY2xh
c3MgTWVkaWFDb25zdHJhaW50czsKK2NsYXNzIE1lZGlhQ29uc3RyYWludHNJbXBsOworY2xhc3Mg
TWVkaWFTb3VyY2VTdGF0ZXM7CiBjbGFzcyBNZWRpYVN0cmVhbVRyYWNrU291cmNlc0NhbGxiYWNr
OworY2xhc3MgTWVkaWFTdHJlYW1DYXBhYmlsaXRpZXM7CitjbGFzcyBNZWRpYVRyYWNrQ29uc3Ry
YWludHM7CiAKIGNsYXNzIE1lZGlhU3RyZWFtVHJhY2sgOiBwdWJsaWMgUmVmQ291bnRlZDxNZWRp
YVN0cmVhbVRyYWNrPiwgcHVibGljIFNjcmlwdFdyYXBwYWJsZSwgcHVibGljIEFjdGl2ZURPTU9i
amVjdCwgcHVibGljIEV2ZW50VGFyZ2V0V2l0aElubGluZURhdGEsIHB1YmxpYyBNZWRpYVN0cmVh
bVNvdXJjZTo6T2JzZXJ2ZXIgewogcHVibGljOgpAQCAtNTQsMTcgKzU3LDMxIEBAIHB1YmxpYzoK
IAogICAgIGJvb2wgZW5hYmxlZCgpIGNvbnN0OwogICAgIHZvaWQgc2V0RW5hYmxlZChib29sKTsK
LSAgICAKKworICAgIGJvb2wgbXV0ZWQoKSBjb25zdDsKKyAgICBib29sIHJlYWRvbmx5KCkgY29u
c3Q7CisgICAgYm9vbCByZW1vdGUoKSBjb25zdDsKKwogICAgIGNvbnN0IEF0b21pY1N0cmluZyYg
cmVhZHlTdGF0ZSgpIGNvbnN0OwogCiAgICAgc3RhdGljIHZvaWQgZ2V0U291cmNlcyhTY3JpcHRF
eGVjdXRpb25Db250ZXh0KiwgUGFzc1JlZlB0cjxNZWRpYVN0cmVhbVRyYWNrU291cmNlc0NhbGxi
YWNrPiwgRXhjZXB0aW9uQ29kZSYpOwogCi0gICAgTWVkaWFTdHJlYW1Tb3VyY2UqIHNvdXJjZSgp
IGNvbnN0IHsgcmV0dXJuIG1fc291cmNlLmdldCgpOyB9Ci0gICAgdm9pZCBzZXRTb3VyY2UoTWVk
aWFTdHJlYW1Tb3VyY2UqKTsKKyAgICBQYXNzUmVmUHRyPE1lZGlhVHJhY2tDb25zdHJhaW50cz4g
Y29uc3RyYWludHMoKSBjb25zdDsKKyAgICBQYXNzUmVmUHRyPE1lZGlhU291cmNlU3RhdGVzPiBz
dGF0ZXMoKSBjb25zdDsKKyAgICBQYXNzUmVmUHRyPE1lZGlhU3RyZWFtQ2FwYWJpbGl0aWVzPiBj
YXBhYmlsaXRpZXMoKSBjb25zdDsKKyAgICB2b2lkIGFwcGx5Q29uc3RyYWludHMoY29uc3QgRGlj
dGlvbmFyeSYpOworCisgICAgUGFzc1JlZlB0cjxNZWRpYVN0cmVhbVRyYWNrPiBjbG9uZSgpOwor
ICAgIHZvaWQgc3RvcFByb2R1Y2luZ0RhdGEoKTsKIAogICAgIERFRklORV9BVFRSSUJVVEVfRVZF
TlRfTElTVEVORVIobXV0ZSk7CiAgICAgREVGSU5FX0FUVFJJQlVURV9FVkVOVF9MSVNURU5FUih1
bm11dGUpOworICAgIERFRklORV9BVFRSSUJVVEVfRVZFTlRfTElTVEVORVIoc3RhcnRlZCk7CiAg
ICAgREVGSU5FX0FUVFJJQlVURV9FVkVOVF9MSVNURU5FUihlbmRlZCk7CisgICAgREVGSU5FX0FU
VFJJQlVURV9FVkVOVF9MSVNURU5FUihvdmVyY29uc3RyYWluZWQpOworCisgICAgTWVkaWFTdHJl
YW1Tb3VyY2UqIHNvdXJjZSgpIGNvbnN0IHsgcmV0dXJuIG1fc291cmNlLmdldCgpOyB9CisgICAg
dm9pZCBzZXRTb3VyY2UoTWVkaWFTdHJlYW1Tb3VyY2UqKTsKIAogICAgIGJvb2wgZW5kZWQoKSBj
b25zdDsKIApAQCAtNzIsMzMgKzg5LDQ1IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIEV2ZW50VGFy
Z2V0SW50ZXJmYWNlIGV2ZW50VGFyZ2V0SW50ZXJmYWNlKCkgY29uc3QgT1ZFUlJJREUgRklOQUwg
eyByZXR1cm4gTWVkaWFTdHJlYW1UcmFja0V2ZW50VGFyZ2V0SW50ZXJmYWNlVHlwZTsgfQogICAg
IHZpcnR1YWwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgp
IGNvbnN0IE9WRVJSSURFIEZJTkFMIHsgcmV0dXJuIEFjdGl2ZURPTU9iamVjdDo6c2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCgpOyB9CiAKLSAgICAvLyBBY3RpdmVET01PYmplY3QKLSAgICB2aXJ0dWFs
IHZvaWQgc3RvcCgpIE9WRVJSSURFIEZJTkFMOwotCiAgICAgdXNpbmcgUmVmQ291bnRlZDxNZWRp
YVN0cmVhbVRyYWNrPjo6cmVmOwogICAgIHVzaW5nIFJlZkNvdW50ZWQ8TWVkaWFTdHJlYW1UcmFj
az46OmRlcmVmOwogCiBwcm90ZWN0ZWQ6CisgICAgZXhwbGljaXQgTWVkaWFTdHJlYW1UcmFjayhN
ZWRpYVN0cmVhbVRyYWNrKik7CiAgICAgTWVkaWFTdHJlYW1UcmFjayhTY3JpcHRFeGVjdXRpb25D
b250ZXh0KiwgTWVkaWFTdHJlYW1Tb3VyY2UqLCBjb25zdCBEaWN0aW9uYXJ5Kik7CiAKIHByaXZh
dGU6CisKKyAgICB2b2lkIGNvbmZpZ3VyZVRyYWNrUmVuZGVyaW5nKCk7CiAgICAgdm9pZCB0cmFj
a0RpZEVuZCgpOworICAgIHZvaWQgc2NoZWR1bGVFdmVudERpc3BhdGNoKFBhc3NSZWZQdHI8RXZl
bnQ+KTsKKyAgICB2b2lkIGRpc3BhdGNoUXVldWVkRXZlbnRzKCk7CisKKyAgICAvLyBBY3RpdmVE
T01PYmplY3QKKyAgICB2aXJ0dWFsIHZvaWQgc3RvcCgpIE9WRVJSSURFIEZJTkFMOwogCiAgICAg
Ly8gRXZlbnRUYXJnZXQKICAgICB2aXJ0dWFsIHZvaWQgcmVmRXZlbnRUYXJnZXQoKSBPVkVSUklE
RSBGSU5BTCB7IHJlZigpOyB9CiAgICAgdmlydHVhbCB2b2lkIGRlcmVmRXZlbnRUYXJnZXQoKSBP
VkVSUklERSBGSU5BTCB7IGRlcmVmKCk7IH0KIAogICAgIC8vIE1lZGlhU3RyZWFtU291cmNlT2Jz
ZXJ2ZXIKLSAgICB2aXJ0dWFsIHZvaWQgc291cmNlQ2hhbmdlZFN0YXRlKCkgT1ZFUlJJREUgRklO
QUw7CisgICAgdmlydHVhbCB2b2lkIHNvdXJjZVN0YXRlQ2hhbmdlZCgpIE9WRVJSSURFIEZJTkFM
OworICAgIHZpcnR1YWwgdm9pZCBzb3VyY2VNdXRlZENoYW5nZWQoKSBPVkVSUklERSBGSU5BTDsK
KyAgICB2aXJ0dWFsIHZvaWQgc291cmNlRW5hYmxlZENoYW5nZWQoKSBPVkVSUklERSBGSU5BTDsK
KyAgICB2aXJ0dWFsIGJvb2wgc3RvcHBlZCgpIE9WRVJSSURFIEZJTkFMOworCisgICAgVmVjdG9y
PFJlZlB0cjxFdmVudD4+IG1fc2NoZWR1bGVkRXZlbnRzOwogCiAgICAgUmVmUHRyPE1lZGlhU3Ry
ZWFtU291cmNlPiBtX3NvdXJjZTsKLSAgICBSZWZQdHI8TWVkaWFDb25zdHJhaW50cz4gbV9jb25z
dHJhaW50czsKKyAgICBSZWZQdHI8TWVkaWFDb25zdHJhaW50c0ltcGw+IG1fY29uc3RyYWludHM7
CiAgICAgTWVkaWFTdHJlYW1Tb3VyY2U6OlJlYWR5U3RhdGUgbV9yZWFkeVN0YXRlOwogICAgIG11
dGFibGUgU3RyaW5nIG1faWQ7CisgICAgTXV0ZXggbV9tdXRleDsKIAogICAgIGJvb2wgbV9zdG9w
cGVkOwogICAgIGJvb2wgbV9lbmFibGVkOwogICAgIGJvb2wgbV9tdXRlZDsKKyAgICBib29sIG1f
ZXZlbnREaXNwYXRjaFNjaGVkdWxlZDsKIH07CiAKIHR5cGVkZWYgVmVjdG9yPFJlZlB0cjxNZWRp
YVN0cmVhbVRyYWNrPiA+IE1lZGlhU3RyZWFtVHJhY2tWZWN0b3I7CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJhY2suaWRsCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1UcmFjay5p
ZGwJKHJldmlzaW9uIDE1NzAxNikKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJl
YW0vTWVkaWFTdHJlYW1UcmFjay5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw2IEBACiAv
KgogICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgog
ICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yMiw2ICsyMyw4IEBACiAgKiBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
ICAqLwogCitlbnVtIE1lZGlhU3RyZWFtVHJhY2tTdGF0ZSB7ICJuZXciLCAibGl2ZSIsICJlbmRl
ZCIgfTsKKwogWwogICAgIENvbmRpdGlvbmFsPU1FRElBX1NUUkVBTSwKICAgICBFdmVudFRhcmdl
dCwKQEAgLTMzLDE1ICszNiwyOSBAQAogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBET01TdHJpbmcg
aWQ7CiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIERPTVN0cmluZyBsYWJlbDsKICAgICAgICAgICAg
ICBhdHRyaWJ1dGUgYm9vbGVhbiBlbmFibGVkOwotCi0gICAgcmVhZG9ubHkgYXR0cmlidXRlIERP
TVN0cmluZyByZWFkeVN0YXRlOwotCisgICAgcmVhZG9ubHkgYXR0cmlidXRlIGJvb2xlYW4gbXV0
ZWQ7CiAgICAgYXR0cmlidXRlIEV2ZW50TGlzdGVuZXIgb25tdXRlOwogICAgIGF0dHJpYnV0ZSBF
dmVudExpc3RlbmVyIG9udW5tdXRlOworICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBib29sZWFuIF9y
ZWFkb25seTsKKyAgICByZWFkb25seSBhdHRyaWJ1dGUgYm9vbGVhbiByZW1vdGU7CisgICAgcmVh
ZG9ubHkgYXR0cmlidXRlIE1lZGlhU3RyZWFtVHJhY2tTdGF0ZSByZWFkeVN0YXRlOworICAgIGF0
dHJpYnV0ZSBFdmVudExpc3RlbmVyIG9uc3RhcnRlZDsKICAgICBhdHRyaWJ1dGUgRXZlbnRMaXN0
ZW5lciBvbmVuZGVkOwogCiAgICAgW0NhbGxXaXRoPVNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsIFJh
aXNlc0V4Y2VwdGlvbl0gc3RhdGljIHZvaWQgZ2V0U291cmNlcyhNZWRpYVN0cmVhbVRyYWNrU291
cmNlc0NhbGxiYWNrIGNhbGxiYWNrKTsKIAorICAgIE1lZGlhVHJhY2tDb25zdHJhaW50cyBjb25z
dHJhaW50cygpOworCisgICAgTWVkaWFTb3VyY2VTdGF0ZXMgc3RhdGVzKCk7CisKKyAgICBNZWRp
YVN0cmVhbUNhcGFiaWxpdGllcyBjYXBhYmlsaXRpZXMoKTsgLy8gcmV0dXJucyBlaXRoZXIgQWxs
VmlkZW9DYXBhYmlsaXRpZXMgb3IgQWxsQXVkaW9DYXBhYmlsaXRpZXMKKworICAgIHZvaWQgYXBw
bHlDb25zdHJhaW50cyhEaWN0aW9uYXJ5IGNvbnN0cmFpbnRzKTsKKworICAgIGF0dHJpYnV0ZSBF
dmVudExpc3RlbmVyIG9ub3ZlcmNvbnN0cmFpbmVkOworICAgIE1lZGlhU3RyZWFtVHJhY2sgY2xv
bmUoKTsKKyAgICBbSW1wbGVtZW50ZWRBcz1zdG9wUHJvZHVjaW5nRGF0YV0gdm9pZCBzdG9wKCk7
CisKICAgICAvLyBFdmVudFRhcmdldCBpbnRlcmZhY2UKICAgICB2b2lkIGFkZEV2ZW50TGlzdGVu
ZXIoRE9NU3RyaW5nIHR5cGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIEV2ZW50TGlzdGVu
ZXIgbGlzdGVuZXIsCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01l
ZGlhVHJhY2tDb25zdHJhaW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL21lZGlhc3RyZWFtL01lZGlhVHJhY2tDb25zdHJhaW50LmNwcAkocmV2aXNpb24gMCkKKysr
IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFUcmFja0NvbnN0cmFpbnQu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNTMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUsIElOQy4gYGBBUyBJUycnIEFORCBBTlkK
KyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
CisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqCisgKi8KKworI2luY2x1ZGUgImNvbmZp
Zy5oIgorCisjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKKworI2luY2x1ZGUgIk1lZGlhVHJhY2tD
b25zdHJhaW50LmgiCisKK3VzaW5nIG5hbWVzcGFjZSBKU0M7CisKK25hbWVzcGFjZSBXZWJDb3Jl
IHsKKworUGFzc1JlZlB0cjxNZWRpYVRyYWNrQ29uc3RyYWludD4gTWVkaWFUcmFja0NvbnN0cmFp
bnQ6OmNyZWF0ZShjb25zdCBEaWN0aW9uYXJ5JiBjb25zdHJhaW50KQoreworICAgIHJldHVybiBh
ZG9wdFJlZihuZXcgTWVkaWFUcmFja0NvbnN0cmFpbnQoY29uc3RyYWludCkpOworfQorCitNZWRp
YVRyYWNrQ29uc3RyYWludDo6TWVkaWFUcmFja0NvbnN0cmFpbnQoY29uc3QgRGljdGlvbmFyeSYg
Y29uc3RyYWludCkKKyAgICA6IG1fY29uc3RyYWludChjb25zdHJhaW50KQoreworfQorCitNZWRp
YVRyYWNrQ29uc3RyYWludDo6fk1lZGlhVHJhY2tDb25zdHJhaW50KCkKK3sKK30KKworfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMv
bWVkaWFzdHJlYW0vTWVkaWFUcmFja0NvbnN0cmFpbnQuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhVHJhY2tDb25zdHJhaW50LmgJKHJldmlz
aW9uIDApCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhVHJhY2tD
b25zdHJhaW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw1OCBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSwgSU5DLiBgYEFTIElTJycg
QU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICog
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICoKKyAqLworCisjaWZuZGVm
IE1lZGlhVHJhY2tDb25zdHJhaW50X2gKKyNkZWZpbmUgTWVkaWFUcmFja0NvbnN0cmFpbnRfaAor
CisjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKKworI2luY2x1ZGUgIkRpY3Rpb25hcnkuaCIKKyNp
bmNsdWRlICJTY3JpcHRXcmFwcGFibGUuaCIKKyNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgor
CituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIFNjcmlwdFZhbHVlOworCitjbGFzcyBNZWRp
YVRyYWNrQ29uc3RyYWludCA6IHB1YmxpYyBSZWZDb3VudGVkPE1lZGlhVHJhY2tDb25zdHJhaW50
PiwgcHVibGljIFNjcmlwdFdyYXBwYWJsZSB7CitwdWJsaWM6CisgICAgc3RhdGljIFBhc3NSZWZQ
dHI8TWVkaWFUcmFja0NvbnN0cmFpbnQ+IGNyZWF0ZShjb25zdCBEaWN0aW9uYXJ5Jik7CisKKyAg
ICB2aXJ0dWFsIH5NZWRpYVRyYWNrQ29uc3RyYWludCgpOworCisgICAgY29uc3QgRGljdGlvbmFy
eSYgY29uc3RyYWludCgpIGNvbnN0IHsgcmV0dXJuIG1fY29uc3RyYWludDsgfQorCitwcml2YXRl
OgorICAgIGV4cGxpY2l0IE1lZGlhVHJhY2tDb25zdHJhaW50KGNvbnN0IERpY3Rpb25hcnkmKTsK
KyAgICAKKyAgICBjb25zdCBEaWN0aW9uYXJ5JiBtX2NvbnN0cmFpbnQ7Cit9OworCit9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBNZWRpYVRyYWNrQ29uc3RyYWludF9oCisKKyNl
bmRpZgpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVRyYWNr
Q29uc3RyYWludC5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRp
YXN0cmVhbS9NZWRpYVRyYWNrQ29uc3RyYWludC5pZGwJKHJldmlzaW9uIDApCisrKyBTb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhVHJhY2tDb25zdHJhaW50LmlkbAkod29y
a2luZyBjb3B5KQpAQCAtMCwwICsxLDMxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5Z
CisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAg
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworWworICAgIENvbmRpdGlvbmFs
PU1FRElBX1NUUkVBTSwKKyAgICBOb0ludGVyZmFjZU9iamVjdCwKK10gaW50ZXJmYWNlIE1lZGlh
VHJhY2tDb25zdHJhaW50IHsKK307CisKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVk
aWFzdHJlYW0vTWVkaWFUcmFja0NvbnN0cmFpbnRTZXQuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFUcmFja0NvbnN0cmFpbnRTZXQuY3Bw
CShyZXZpc2lvbiAwKQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRp
YVRyYWNrQ29uc3RyYWludFNldC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw1MyBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSwgSU5D
LiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMu
IE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICoKKyAq
LworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQorCisj
aW5jbHVkZSAiTWVkaWFUcmFja0NvbnN0cmFpbnRTZXQuaCIKKwordXNpbmcgbmFtZXNwYWNlIEpT
QzsKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitQYXNzUmVmUHRyPE1lZGlhVHJhY2tDb25zdHJh
aW50U2V0PiBNZWRpYVRyYWNrQ29uc3RyYWludFNldDo6Y3JlYXRlKGNvbnN0IERpY3Rpb25hcnkm
IGNvbnN0cmFpbnRzKQoreworICAgIHJldHVybiBhZG9wdFJlZihuZXcgTWVkaWFUcmFja0NvbnN0
cmFpbnRTZXQoY29uc3RyYWludHMpKTsKK30KKworTWVkaWFUcmFja0NvbnN0cmFpbnRTZXQ6Ok1l
ZGlhVHJhY2tDb25zdHJhaW50U2V0KGNvbnN0IERpY3Rpb25hcnkmIGNvbnN0cmFpbnRzKQorICAg
IDogbV9jb25zdHJhaW50cyhjb25zdHJhaW50cykKK3sKK30KKworTWVkaWFUcmFja0NvbnN0cmFp
bnRTZXQ6On5NZWRpYVRyYWNrQ29uc3RyYWludFNldCgpCit7Cit9CisKK30gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKKworI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3Ry
ZWFtL01lZGlhVHJhY2tDb25zdHJhaW50U2V0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVRyYWNrQ29uc3RyYWludFNldC5oCShyZXZpc2lv
biAwKQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVRyYWNrQ29u
c3RyYWludFNldC5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNTYgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUsIElOQy4gYGBBUyBJUycn
IEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAq
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqCisgKi8KKworI2lmbmRl
ZiBNZWRpYVRyYWNrQ29uc3RyYWludFNldF9oCisjZGVmaW5lIE1lZGlhVHJhY2tDb25zdHJhaW50
U2V0X2gKKworI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCisKKyNpbmNsdWRlICJEaWN0aW9uYXJ5
LmgiCisjaW5jbHVkZSAiU2NyaXB0V3JhcHBhYmxlLmgiCisjaW5jbHVkZSA8d3RmL1JlZkNvdW50
ZWQuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBNZWRpYVRyYWNrQ29uc3RyYWlu
dFNldCA6IHB1YmxpYyBSZWZDb3VudGVkPE1lZGlhVHJhY2tDb25zdHJhaW50U2V0PiwgcHVibGlj
IFNjcmlwdFdyYXBwYWJsZSB7CitwdWJsaWM6CisgICAgc3RhdGljIFBhc3NSZWZQdHI8TWVkaWFU
cmFja0NvbnN0cmFpbnRTZXQ+IGNyZWF0ZShjb25zdCBEaWN0aW9uYXJ5Jik7CisKKyAgICB2aXJ0
dWFsIH5NZWRpYVRyYWNrQ29uc3RyYWludFNldCgpOworCisgICAgY29uc3QgRGljdGlvbmFyeSYg
Y29uc3RyYWludHMoKSBjb25zdCB7IHJldHVybiBtX2NvbnN0cmFpbnRzOyB9CisKK3ByaXZhdGU6
CisgICAgZXhwbGljaXQgTWVkaWFUcmFja0NvbnN0cmFpbnRTZXQoY29uc3QgRGljdGlvbmFyeSYp
OworICAgIAorICAgIGNvbnN0IERpY3Rpb25hcnkmIG1fY29uc3RyYWludHM7Cit9OworCit9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBNZWRpYVRyYWNrQ29uc3RyYWludFNldF9o
CisKKyNlbmRpZgpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRp
YVRyYWNrQ29uc3RyYWludFNldC5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9tZWRpYXN0cmVhbS9NZWRpYVRyYWNrQ29uc3RyYWludFNldC5pZGwJKHJldmlzaW9uIDAp
CisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhVHJhY2tDb25zdHJh
aW50U2V0LmlkbAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDMzIEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEdPT0dMRSBJTkMuIGBgQVMgSVMnJyBB
TkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgR09PR0xFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAor
ICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCitbCisgICAgQ29uZGl0aW9uYWw9TUVE
SUFfU1RSRUFNLAorICAgIE5vSW50ZXJmYWNlT2JqZWN0LAorXSBpbnRlcmZhY2UgTWVkaWFUcmFj
a0NvbnN0cmFpbnRTZXQgeworICAgIC8vIEZJWE1FOiBOb3QgaW1wbGVtZW50ZWQuCisgICAgLy8g
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyMTk1NAorfTsKKwpJbmRl
eDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVRyYWNrQ29uc3RyYWlu
dHMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0v
TWVkaWFUcmFja0NvbnN0cmFpbnRzLmNwcAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFUcmFja0NvbnN0cmFpbnRzLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMCwwICsxLDY3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQor
ICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQor
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4gCisgKgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2lmIEVO
QUJMRShNRURJQV9TVFJFQU0pCisKKyNpbmNsdWRlICJNZWRpYVRyYWNrQ29uc3RyYWludHMuaCIK
KworI2luY2x1ZGUgIk1lZGlhVHJhY2tDb25zdHJhaW50LmgiCisjaW5jbHVkZSAiTWVkaWFUcmFj
a0NvbnN0cmFpbnRTZXQuaCIKKyNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgorCit1c2luZyBu
YW1lc3BhY2UgSlNDOworCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1Bhc3NSZWZQdHI8TWVkaWFU
cmFja0NvbnN0cmFpbnRzPiBNZWRpYVRyYWNrQ29uc3RyYWludHM6OmNyZWF0ZShQYXNzUmVmUHRy
PE1lZGlhQ29uc3RyYWludHNJbXBsPiBjb25zdHJhaW50cykKK3sKKyAgICByZXR1cm4gYWRvcHRS
ZWYobmV3IE1lZGlhVHJhY2tDb25zdHJhaW50cyhjb25zdHJhaW50cykpOworfQorCitNZWRpYVRy
YWNrQ29uc3RyYWludHM6Ok1lZGlhVHJhY2tDb25zdHJhaW50cyhQYXNzUmVmUHRyPE1lZGlhQ29u
c3RyYWludHNJbXBsPiBjb25zdHJhaW50cykKKyAgICA6IG1fY29uc3RyYWludHMoY29uc3RyYWlu
dHMpCit7Cit9CisKK1ZlY3RvcjxQYXNzUmVmUHRyPE1lZGlhVHJhY2tDb25zdHJhaW50Pj4gTWVk
aWFUcmFja0NvbnN0cmFpbnRzOjpvcHRpb25hbChib29sKSBjb25zdAoreworICAgIC8vIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjE5NTQKKyAgICBub3RJbXBsZW1l
bnRlZCgpOworICAgIHJldHVybiBWZWN0b3I8UGFzc1JlZlB0cjxNZWRpYVRyYWNrQ29uc3RyYWlu
dD4+KCk7Cit9CisKK1Bhc3NSZWZQdHI8TWVkaWFUcmFja0NvbnN0cmFpbnRTZXQ+IE1lZGlhVHJh
Y2tDb25zdHJhaW50czo6bWFuZGF0b3J5KGJvb2wpIGNvbnN0Cit7CisgICAgLy8gaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyMTk1NAorICAgIG5vdEltcGxlbWVudGVk
KCk7CisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKwor
I2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhVHJh
Y2tDb25zdHJhaW50cy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVk
aWFzdHJlYW0vTWVkaWFUcmFja0NvbnN0cmFpbnRzLmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhVHJhY2tDb25zdHJhaW50cy5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0wLDAgKzEsNjAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqCisgKi8KKworI2lmbmRlZiBNZWRpYVRyYWNrQ29uc3Ry
YWludHNfaAorI2RlZmluZSBNZWRpYVRyYWNrQ29uc3RyYWludHNfaAorCisjaWYgRU5BQkxFKE1F
RElBX1NUUkVBTSkKKworI2luY2x1ZGUgIk1lZGlhQ29uc3RyYWludHNJbXBsLmgiCisjaW5jbHVk
ZSAiU2NyaXB0V3JhcHBhYmxlLmgiCisjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KKworbmFt
ZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBNZWRpYVRyYWNrQ29uc3RyYWludDsKK2NsYXNzIE1l
ZGlhVHJhY2tDb25zdHJhaW50U2V0OworCitjbGFzcyBNZWRpYVRyYWNrQ29uc3RyYWludHMgOiBw
dWJsaWMgUmVmQ291bnRlZDxNZWRpYVRyYWNrQ29uc3RyYWludHM+LCBwdWJsaWMgU2NyaXB0V3Jh
cHBhYmxlIHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIH5NZWRpYVRyYWNrQ29uc3RyYWludHMoKSB7
IH0KKworICAgIHN0YXRpYyBQYXNzUmVmUHRyPE1lZGlhVHJhY2tDb25zdHJhaW50cz4gY3JlYXRl
KFBhc3NSZWZQdHI8TWVkaWFDb25zdHJhaW50c0ltcGw+KTsKKworICAgIFZlY3RvcjxQYXNzUmVm
UHRyPE1lZGlhVHJhY2tDb25zdHJhaW50Pj4gb3B0aW9uYWwoYm9vbCkgY29uc3Q7CisgICAgUGFz
c1JlZlB0cjxNZWRpYVRyYWNrQ29uc3RyYWludFNldD4gbWFuZGF0b3J5KGJvb2wpIGNvbnN0Owor
Citwcml2YXRlOgorICAgIGV4cGxpY2l0IE1lZGlhVHJhY2tDb25zdHJhaW50cyhQYXNzUmVmUHRy
PE1lZGlhQ29uc3RyYWludHNJbXBsPik7CisgICAgCisgICAgUmVmUHRyPE1lZGlhQ29uc3RyYWlu
dHNJbXBsPiBtX2NvbnN0cmFpbnRzOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisj
ZW5kaWYgLy8gTWVkaWFUcmFja0NvbnN0cmFpbnRzX2gKKworI2VuZGlmCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhVHJhY2tDb25zdHJhaW50cy5pZGwKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVRyYWNr
Q29uc3RyYWludHMuaWRsCShyZXZpc2lvbiAwKQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9t
ZWRpYXN0cmVhbS9NZWRpYVRyYWNrQ29uc3RyYWludHMuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0w
LDAgKzEsMzMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisg
KiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisg
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLiAKKyAqLworCitbCisgICAgQ29uZGl0aW9uYWw9TUVESUFfU1RSRUFNLAor
ICAgIE5vSW50ZXJmYWNlT2JqZWN0LAorXSBpbnRlcmZhY2UgTWVkaWFUcmFja0NvbnN0cmFpbnRz
IHsKKyAgICByZWFkb25seSBhdHRyaWJ1dGUgTWVkaWFUcmFja0NvbnN0cmFpbnRTZXQ/IG1hbmRh
dG9yeTsKKyAgICByZWFkb25seSBhdHRyaWJ1dGUgTWVkaWFUcmFja0NvbnN0cmFpbnRbXT8gb3B0
aW9uYWw7Cit9OworCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1Vz
ZXJNZWRpYVJlcXVlc3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMv
bWVkaWFzdHJlYW0vVXNlck1lZGlhUmVxdWVzdC5jcHAJKHJldmlzaW9uIDE1NzAxNikKKysrIFNv
dXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vVXNlck1lZGlhUmVxdWVzdC5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTE3Myw3ICsxNzMsNiBAQCB2b2lkIFVzZXJNZWRpYVJlcXVlc3Q6OmNh
bGxTdWNjZXNzSGFuZGxlCiAgICAgZm9yIChNZWRpYVN0cmVhbVRyYWNrVmVjdG9yOjppdGVyYXRv
ciBpdGVyID0gdHJhY2tzLmJlZ2luKCk7IGl0ZXIgIT0gdHJhY2tzLmVuZCgpOyArK2l0ZXIpCiAg
ICAgICAgICgqaXRlciktPnNvdXJjZSgpLT5zZXRDb25zdHJhaW50cyhtX3ZpZGVvQ29uc3RyYWlu
dHMpOwogCi0gICAgTWVkaWFTdHJlYW1DZW50ZXI6OnNoYXJlZCgpLmRpZENyZWF0ZU1lZGlhU3Ry
ZWFtKHN0cmVhbURlc2NyaXB0b3IuZ2V0KCkpOwogICAgIG1fc3VjY2Vzc0NhbGxiYWNrLT5oYW5k
bGVFdmVudChzdHJlYW0uZ2V0KCkpOwogfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L21lZGlhc3RyZWFtL1ZpZGVvU3RyZWFtVHJhY2suY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vVmlkZW9TdHJlYW1UcmFjay5jcHAJKHJldmlzaW9u
IDE1NzAxNikKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vVmlkZW9TdHJl
YW1UcmFjay5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ3LDExICs0NywyMSBAQCBQYXNzUmVmUHRy
PFZpZGVvU3RyZWFtVHJhY2s+IFZpZGVvU3RyZWFtCiAgICAgcmV0dXJuIHRyYWNrLnJlbGVhc2Uo
KTsKIH0KIAorUGFzc1JlZlB0cjxWaWRlb1N0cmVhbVRyYWNrPiBWaWRlb1N0cmVhbVRyYWNrOjpj
cmVhdGUoTWVkaWFTdHJlYW1UcmFjayogdHJhY2spCit7CisgICAgcmV0dXJuIGFkb3B0UmVmKG5l
dyBWaWRlb1N0cmVhbVRyYWNrKHRyYWNrKSk7Cit9CisKIFZpZGVvU3RyZWFtVHJhY2s6OlZpZGVv
U3RyZWFtVHJhY2soU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgTWVkaWFTdHJlYW1T
b3VyY2UqIHNvdXJjZSwgY29uc3QgRGljdGlvbmFyeSogdmlkZW9Db25zdHJhaW50cykKICAgICA6
IE1lZGlhU3RyZWFtVHJhY2soY29udGV4dCwgc291cmNlLCB2aWRlb0NvbnN0cmFpbnRzKQogewog
fQogCitWaWRlb1N0cmVhbVRyYWNrOjpWaWRlb1N0cmVhbVRyYWNrKE1lZGlhU3RyZWFtVHJhY2sq
IHRyYWNrKQorICAgIDogTWVkaWFTdHJlYW1UcmFjayh0cmFjaykKK3sKK30KKwogY29uc3QgQXRv
bWljU3RyaW5nJiBWaWRlb1N0cmVhbVRyYWNrOjpraW5kKCkgY29uc3QKIHsKICAgICBzdGF0aWMg
TmV2ZXJEZXN0cm95ZWQ8QXRvbWljU3RyaW5nPiB2aWRlb0tpbmQoInZpZGVvIiwgQXRvbWljU3Ry
aW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L21lZGlhc3RyZWFtL1ZpZGVvU3RyZWFtVHJhY2suaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1ZpZGVvU3RyZWFtVHJhY2suaAkocmV2aXNpb24gMTU3
MDM5KQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9WaWRlb1N0cmVhbVRy
YWNrLmgJKHdvcmtpbmcgY29weSkKQEAgLTI5LDggKzI5LDggQEAKICNpZiBFTkFCTEUoTUVESUFf
U1RSRUFNKQogCiAjaW5jbHVkZSAiTWVkaWFTdHJlYW1UcmFjay5oIgotI2luY2x1ZGUgPHd0Zi9W
ZWN0b3IuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgorI2luY2x1ZGUgPHd0Zi9WZWN0
b3IuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC00MSw2ICs0MSw3IEBAIGNsYXNzIFZp
ZGVvU3RyZWFtVHJhY2sgRklOQUwgOiBwdWJsaWMgTWUKIHB1YmxpYzoKICAgICBzdGF0aWMgUGFz
c1JlZlB0cjxWaWRlb1N0cmVhbVRyYWNrPiBjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCos
IGNvbnN0IERpY3Rpb25hcnkmKTsKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxWaWRlb1N0cmVhbVRy
YWNrPiBjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIE1lZGlhU3RyZWFtU291cmNlKik7
CisgICAgc3RhdGljIFBhc3NSZWZQdHI8VmlkZW9TdHJlYW1UcmFjaz4gY3JlYXRlKE1lZGlhU3Ry
ZWFtVHJhY2sqKTsKIAogICAgIHZpcnR1YWwgflZpZGVvU3RyZWFtVHJhY2soKSB7IH0KIApAQCAt
NDgsNiArNDksNyBAQCBwdWJsaWM6CiAKIHByaXZhdGU6CiAgICAgVmlkZW9TdHJlYW1UcmFjayhT
Y3JpcHRFeGVjdXRpb25Db250ZXh0KiwgTWVkaWFTdHJlYW1Tb3VyY2UqLCBjb25zdCBEaWN0aW9u
YXJ5Kik7CisgICAgZXhwbGljaXQgVmlkZW9TdHJlYW1UcmFjayhNZWRpYVN0cmVhbVRyYWNrKik7
CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmF1ZGlvL0F1ZGlvQ29udGV4dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0NvbnRleHQuY3BwCShyZXZpc2lvbiAxNTcwMTYpCisr
KyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQ29udGV4dC5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTYzLDYgKzYzLDcgQEAKICNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQogI2lu
Y2x1ZGUgIk1lZGlhU3RyZWFtLmgiCiAjaW5jbHVkZSAiTWVkaWFTdHJlYW1BdWRpb0Rlc3RpbmF0
aW9uTm9kZS5oIgorI2luY2x1ZGUgIk1lZGlhU3RyZWFtQXVkaW9Tb3VyY2UuaCIKICNpbmNsdWRl
ICJNZWRpYVN0cmVhbUF1ZGlvU291cmNlTm9kZS5oIgogI2VuZGlmCiAKQEAgLTQyMCwxMiArNDIx
LDE0IEBAIFBhc3NSZWZQdHI8TWVkaWFTdHJlYW1BdWRpb1NvdXJjZU5vZGU+IEEKICAgICAvLyBG
SVhNRTogZ2V0IGEgcHJvdmlkZXIgZm9yIG5vbi1sb2NhbCBNZWRpYVN0cmVhbXMgKGxpa2UgZnJv
bSBhIHJlbW90ZSBwZWVyKS4KICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGF1ZGlvVHJhY2tz
LnNpemUoKTsgKytpKSB7CiAgICAgICAgIFJlZlB0cjxNZWRpYVN0cmVhbVRyYWNrPiBsb2NhbEF1
ZGlvID0gYXVkaW9UcmFja3NbaV07Ci0gICAgICAgIE1lZGlhU3RyZWFtU291cmNlKiBzb3VyY2Ug
PSBsb2NhbEF1ZGlvLT5zb3VyY2UoKTsKLSAgICAgICAgaWYgKCFzb3VyY2UtPmRldmljZUlkKCku
aXNFbXB0eSgpKSB7Ci0gICAgICAgICAgICBkZXN0aW5hdGlvbigpLT5lbmFibGVJbnB1dChzb3Vy
Y2UtPmRldmljZUlkKCkpOwotICAgICAgICAgICAgcHJvdmlkZXIgPSBkZXN0aW5hdGlvbigpLT5s
b2NhbEF1ZGlvSW5wdXRQcm92aWRlcigpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0K
KyAgICAgICAgaWYgKCFsb2NhbEF1ZGlvLT5zb3VyY2UoKS0+aXNBdWRpb1N0cmVhbVNvdXJjZSgp
KQorICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgTWVkaWFTdHJlYW1BdWRpb1NvdXJj
ZSogc291cmNlID0gc3RhdGljX2Nhc3Q8TWVkaWFTdHJlYW1BdWRpb1NvdXJjZSo+KGxvY2FsQXVk
aW8tPnNvdXJjZSgpKTsKKyAgICAgICAgQVNTRVJUKCFzb3VyY2UtPmRldmljZUlkKCkuaXNFbXB0
eSgpKTsKKyAgICAgICAgZGVzdGluYXRpb24oKS0+ZW5hYmxlSW5wdXQoc291cmNlLT5kZXZpY2VJ
ZCgpKTsKKyAgICAgICAgcHJvdmlkZXIgPSBkZXN0aW5hdGlvbigpLT5sb2NhbEF1ZGlvSW5wdXRQ
cm92aWRlcigpOworICAgICAgICBicmVhazsKICAgICB9CiAKICAgICBSZWZQdHI8TWVkaWFTdHJl
YW1BdWRpb1NvdXJjZU5vZGU+IG5vZGUgPSBNZWRpYVN0cmVhbUF1ZGlvU291cmNlTm9kZTo6Y3Jl
YXRlKHRoaXMsIG1lZGlhU3RyZWFtLCBwcm92aWRlcik7CkBAIC03MzMsNyArNzM2LDcgQEAgdm9p
ZCBBdWRpb0NvbnRleHQ6OmFkZERlZmVycmVkRmluaXNoRGVyZQogdm9pZCBBdWRpb0NvbnRleHQ6
OmhhbmRsZVByZVJlbmRlclRhc2tzKCkKIHsKICAgICBBU1NFUlQoaXNBdWRpb1RocmVhZCgpKTsK
LSAKKwogICAgIC8vIEF0IHRoZSBiZWdpbm5pbmcgb2YgZXZlcnkgcmVuZGVyIHF1YW50dW0sIHRy
eSB0byB1cGRhdGUgdGhlIGludGVybmFsIHJlbmRlcmluZyBncmFwaCBzdGF0ZSAoZnJvbSBtYWlu
IHRocmVhZCBjaGFuZ2VzKS4KICAgICAvLyBJdCdzIE9LIGlmIHRoZSB0cnlMb2NrKCkgZmFpbHMs
IHdlJ2xsIGp1c3QgdGFrZSBzbGlnaHRseSBsb25nZXIgdG8gcGljayB1cCB0aGUgY2hhbmdlcy4K
ICAgICBib29sIG11c3RSZWxlYXNlTG9jazsKQEAgLTc1Miw4ICs3NTUsOCBAQCB2b2lkIEF1ZGlv
Q29udGV4dDo6aGFuZGxlUHJlUmVuZGVyVGFza3MoCiB2b2lkIEF1ZGlvQ29udGV4dDo6aGFuZGxl
UG9zdFJlbmRlclRhc2tzKCkKIHsKICAgICBBU1NFUlQoaXNBdWRpb1RocmVhZCgpKTsKLSAKLSAg
ICAvLyBNdXN0IHVzZSBhIHRyeUxvY2soKSBoZXJlIHRvby4gIERvbid0IHdvcnJ5LCB0aGUgbG9j
ayB3aWxsIHZlcnkgcmFyZWx5IGJlIGNvbnRlbmRlZCBhbmQgdGhpcyBtZXRob2QgaXMgY2FsbGVk
IGZyZXF1ZW50bHkuCisKKyAgICAvLyBNdXN0IHVzZSBhIHRyeUxvY2soKSBoZXJlIHRvby4gRG9u
J3Qgd29ycnksIHRoZSBsb2NrIHdpbGwgdmVyeSByYXJlbHkgYmUgY29udGVuZGVkIGFuZCB0aGlz
IG1ldGhvZCBpcyBjYWxsZWQgZnJlcXVlbnRseS4KICAgICAvLyBUaGUgd29yc3QgdGhhdCBjYW4g
aGFwcGVuIGlzIHRoYXQgdGhlcmUgd2lsbCBiZSBzb21lIG5vZGVzIHdoaWNoIHdpbGwgdGFrZSBz
bGlnaHRseSBsb25nZXIgdGhhbiB1c3VhbCB0byBiZSBkZWxldGVkIG9yIHJlbW92ZWQKICAgICAv
LyBmcm9tIHRoZSByZW5kZXIgZ3JhcGggKGluIHdoaWNoIGNhc2UgdGhleSdsbCByZW5kZXIgc2ls
ZW5jZSkuCiAgICAgYm9vbCBtdXN0UmVsZWFzZUxvY2s7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmF1ZGlvL01lZGlhU3RyZWFtQXVkaW9EZXN0aW5hdGlvbk5vZGUuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vTWVkaWFTdHJlYW1BdWRp
b0Rlc3RpbmF0aW9uTm9kZS5jcHAJKHJldmlzaW9uIDE1NzAxNikKKysrIFNvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViYXVkaW8vTWVkaWFTdHJlYW1BdWRpb0Rlc3RpbmF0aW9uTm9kZS5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTMxLDkgKzMxLDggQEAKICNpbmNsdWRlICJBdWRpb0NvbnRleHQuaCIK
ICNpbmNsdWRlICJBdWRpb05vZGVJbnB1dC5oIgogI2luY2x1ZGUgIk1lZGlhU3RyZWFtLmgiCi0j
aW5jbHVkZSAiTWVkaWFTdHJlYW1DZW50ZXIuaCIKKyNpbmNsdWRlICJNZWRpYVN0cmVhbUF1ZGlv
U291cmNlLmgiCiAjaW5jbHVkZSAiUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyLmgiCi0jaW5jbHVk
ZSAiVVVJRC5oIgogI2luY2x1ZGUgPHd0Zi9Mb2NrZXIuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewpAQCAtNDksMTIgKzQ4LDEwIEBAIE1lZGlhU3RyZWFtQXVkaW9EZXN0aW5hdGlvbk5vZGU6Ok1l
ZGlhU3QKIHsKICAgICBzZXROb2RlVHlwZShOb2RlVHlwZU1lZGlhU3RyZWFtQXVkaW9EZXN0aW5h
dGlvbik7CiAKLSAgICBtX3NvdXJjZSA9IE1lZGlhU3RyZWFtU291cmNlOjpjcmVhdGUoQVNDSUlM
aXRlcmFsKCJXZWJBdWRpby0iKSArIGNyZWF0ZUNhbm9uaWNhbFVVSURTdHJpbmcoKSwgTWVkaWFT
dHJlYW1Tb3VyY2U6OkF1ZGlvLCAiTWVkaWFTdHJlYW1BdWRpb0Rlc3RpbmF0aW9uTm9kZSIsIE1l
ZGlhU3RyZWFtU291cmNlOjpMaXZlLCB0cnVlKTsKKyAgICBtX3NvdXJjZSA9IE1lZGlhU3RyZWFt
QXVkaW9Tb3VyY2U6OmNyZWF0ZSgpOwogICAgIE1lZGlhU3RyZWFtU291cmNlVmVjdG9yIGF1ZGlv
U291cmNlczsKICAgICBhdWRpb1NvdXJjZXMuYXBwZW5kKG1fc291cmNlKTsKLSAgICBNZWRpYVN0
cmVhbVNvdXJjZVZlY3RvciB2aWRlb1NvdXJjZXM7Ci0gICAgbV9zdHJlYW0gPSBNZWRpYVN0cmVh
bTo6Y3JlYXRlKGNvbnRleHQtPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgTWVkaWFTdHJlYW1E
ZXNjcmlwdG9yOjpjcmVhdGUoYXVkaW9Tb3VyY2VzLCB2aWRlb1NvdXJjZXMpKTsKLSAgICBNZWRp
YVN0cmVhbUNlbnRlcjo6c2hhcmVkKCkuZGlkQ3JlYXRlTWVkaWFTdHJlYW0obV9zdHJlYW0tPmRl
c2NyaXB0b3IoKSk7CisgICAgbV9zdHJlYW0gPSBNZWRpYVN0cmVhbTo6Y3JlYXRlKGNvbnRleHQt
PnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgTWVkaWFTdHJlYW1EZXNjcmlwdG9yOjpjcmVhdGUo
YXVkaW9Tb3VyY2VzLCBNZWRpYVN0cmVhbVNvdXJjZVZlY3RvcigpKSk7CiAKICAgICBtX3NvdXJj
ZS0+c2V0QXVkaW9Gb3JtYXQobnVtYmVyT2ZDaGFubmVscywgY29udGV4dC0+c2FtcGxlUmF0ZSgp
KTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9NZWRpYVN0cmVhbUF1
ZGlvRGVzdGluYXRpb25Ob2RlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJhdWRpby9NZWRpYVN0cmVhbUF1ZGlvRGVzdGluYXRpb25Ob2RlLmgJKHJldmlzaW9uIDE1
NzAxNikKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vTWVkaWFTdHJlYW1BdWRp
b0Rlc3RpbmF0aW9uTm9kZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNiw2ICszNiw3IEBACiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEF1ZGlvQ29udGV4dDsKK2NsYXNzIE1lZGlhU3RyZWFt
QXVkaW9Tb3VyY2U7CiAKIGNsYXNzIE1lZGlhU3RyZWFtQXVkaW9EZXN0aW5hdGlvbk5vZGUgOiBw
dWJsaWMgQXVkaW9CYXNpY0luc3BlY3Rvck5vZGUgewogcHVibGljOgpAQCAtNjEsNyArNjIsNyBA
QCBwcml2YXRlOgogICAgIHZpcnR1YWwgYm9vbCBwcm9wYWdhdGVzU2lsZW5jZSgpIGNvbnN0IE9W
RVJSSURFIHsgcmV0dXJuIGZhbHNlOyB9CiAKICAgICBSZWZQdHI8TWVkaWFTdHJlYW0+IG1fc3Ry
ZWFtOwotICAgIFJlZlB0cjxNZWRpYVN0cmVhbVNvdXJjZT4gbV9zb3VyY2U7CisgICAgUmVmUHRy
PE1lZGlhU3RyZWFtQXVkaW9Tb3VyY2U+IG1fc291cmNlOwogICAgIFJlZlB0cjxBdWRpb0J1cz4g
bV9taXhCdXM7CiB9OwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL01l
ZGlhU3RyZWFtQXVkaW9Tb3VyY2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViYXVkaW8vTWVkaWFTdHJlYW1BdWRpb1NvdXJjZS5jcHAJKHJldmlzaW9uIDApCisr
KyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL01lZGlhU3RyZWFtQXVkaW9Tb3VyY2Uu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsOTggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycn
IEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAq
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJj
b25maWcuaCIKKworI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCisKKyNpbmNsdWRlICJNZWRpYVN0
cmVhbUF1ZGlvU291cmNlLmgiCisKKyNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgorI2luY2x1
ZGUgIlVVSUQuaCIKKyNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgorCituYW1lc3BhY2UgV2Vi
Q29yZSB7CisKK1Bhc3NSZWZQdHI8TWVkaWFTdHJlYW1BdWRpb1NvdXJjZT4gTWVkaWFTdHJlYW1B
dWRpb1NvdXJjZTo6Y3JlYXRlKCkKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3IE1lZGlhU3Ry
ZWFtQXVkaW9Tb3VyY2UoKSk7Cit9CisKK01lZGlhU3RyZWFtQXVkaW9Tb3VyY2U6Ok1lZGlhU3Ry
ZWFtQXVkaW9Tb3VyY2UoKQorICAgIDogTWVkaWFTdHJlYW1Tb3VyY2UoQVNDSUlMaXRlcmFsKCJX
ZWJBdWRpby0iKSArIGNyZWF0ZUNhbm9uaWNhbFVVSURTdHJpbmcoKSwgTWVkaWFTdHJlYW1Tb3Vy
Y2U6OkF1ZGlvLCAiTWVkaWFTdHJlYW1BdWRpb0Rlc3RpbmF0aW9uTm9kZSIpCit7Cit9CisKK1Bh
c3NSZWZQdHI8TWVkaWFTdHJlYW1Tb3VyY2VDYXBhYmlsaXRpZXM+IE1lZGlhU3RyZWFtQXVkaW9T
b3VyY2U6OmNhcGFiaWxpdGllcygpIGNvbnN0Cit7CisgICAgLy8gRklYTUU6IGltcGxlbWVudCB0
aGlzLgorICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjI0
MzAKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiAwOworfQorCitjb25zdCBNZWRp
YVN0cmVhbVNvdXJjZVN0YXRlcyYgTWVkaWFTdHJlYW1BdWRpb1NvdXJjZTo6c3RhdGVzKCkKK3sK
KyAgICAvLyBGSVhNRTogaW1wbGVtZW50IHRoaXMuCisgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTEyMjQzMAorICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAg
cmV0dXJuIG1fY3VycmVudFN0YXRlczsKKyAgICAKK30KKwordm9pZCBNZWRpYVN0cmVhbUF1ZGlv
U291cmNlOjphZGRBdWRpb0NvbnN1bWVyKFBhc3NSZWZQdHI8QXVkaW9EZXN0aW5hdGlvbkNvbnN1
bWVyPiBjb25zdW1lcikKK3sKKyAgICBNdXRleExvY2tlciBsb2NrZXIobV9hdWRpb0NvbnN1bWVy
c0xvY2spOworICAgIG1fYXVkaW9Db25zdW1lcnMuYXBwZW5kKGNvbnN1bWVyKTsKK30KKworYm9v
bCBNZWRpYVN0cmVhbUF1ZGlvU291cmNlOjpyZW1vdmVBdWRpb0NvbnN1bWVyKEF1ZGlvRGVzdGlu
YXRpb25Db25zdW1lciogY29uc3VtZXIpCit7CisgICAgTXV0ZXhMb2NrZXIgbG9ja2VyKG1fYXVk
aW9Db25zdW1lcnNMb2NrKTsKKyAgICBzaXplX3QgcG9zID0gbV9hdWRpb0NvbnN1bWVycy5maW5k
KGNvbnN1bWVyKTsKKyAgICBpZiAocG9zICE9IG5vdEZvdW5kKSB7CisgICAgICAgIG1fYXVkaW9D
b25zdW1lcnMucmVtb3ZlKHBvcyk7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKyAgICBy
ZXR1cm4gZmFsc2U7Cit9CisKK3ZvaWQgTWVkaWFTdHJlYW1BdWRpb1NvdXJjZTo6c2V0QXVkaW9G
b3JtYXQoc2l6ZV90IG51bWJlck9mQ2hhbm5lbHMsIGZsb2F0IHNhbXBsZVJhdGUpCit7CisgICAg
TXV0ZXhMb2NrZXIgbG9ja2VyKG1fYXVkaW9Db25zdW1lcnNMb2NrKTsKKyAgICBmb3IgKFZlY3Rv
cjxSZWZQdHI8QXVkaW9EZXN0aW5hdGlvbkNvbnN1bWVyPiA+OjppdGVyYXRvciBpdCA9IG1fYXVk
aW9Db25zdW1lcnMuYmVnaW4oKTsgaXQgIT0gbV9hdWRpb0NvbnN1bWVycy5lbmQoKTsgKytpdCkK
KyAgICAgICAgKCppdCktPnNldEZvcm1hdChudW1iZXJPZkNoYW5uZWxzLCBzYW1wbGVSYXRlKTsK
K30KKwordm9pZCBNZWRpYVN0cmVhbUF1ZGlvU291cmNlOjpjb25zdW1lQXVkaW8oQXVkaW9CdXMq
IGJ1cywgc2l6ZV90IG51bWJlck9mRnJhbWVzKQoreworICAgIE11dGV4TG9ja2VyIGxvY2tlciht
X2F1ZGlvQ29uc3VtZXJzTG9jayk7CisgICAgZm9yIChWZWN0b3I8UmVmUHRyPEF1ZGlvRGVzdGlu
YXRpb25Db25zdW1lcj4gPjo6aXRlcmF0b3IgaXQgPSBtX2F1ZGlvQ29uc3VtZXJzLmJlZ2luKCk7
IGl0ICE9IG1fYXVkaW9Db25zdW1lcnMuZW5kKCk7ICsraXQpCisgICAgICAgICgqaXQpLT5jb25z
dW1lQXVkaW8oYnVzLCBudW1iZXJPZkZyYW1lcyk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKKworI2VuZGlmIC8vIEVOQUJMRShNRURJQV9TVFJFQU0pCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmF1ZGlvL01lZGlhU3RyZWFtQXVkaW9Tb3VyY2UuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL01lZGlhU3RyZWFtQXVkaW9Tb3VyY2Uu
aAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vTWVkaWFT
dHJlYW1BdWRpb1NvdXJjZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNzcgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIs
IElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwg
SU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAq
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNpZm5kZWYgTWVkaWFTdHJlYW1BdWRpb1NvdXJjZV9oCisjZGVmaW5lIE1lZGlhU3RyZWFt
QXVkaW9Tb3VyY2VfaAorCisjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKKworI2luY2x1ZGUgIkF1
ZGlvRGVzdGluYXRpb25Db25zdW1lci5oIgorI2luY2x1ZGUgIk1lZGlhU3RyZWFtU291cmNlLmgi
CisjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+Cisj
aW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwor
Y2xhc3MgQXVkaW9CdXM7CitjbGFzcyBNZWRpYVN0cmVhbVNvdXJjZUNhcGFiaWxpdGllczsKKwor
Y2xhc3MgTWVkaWFTdHJlYW1BdWRpb1NvdXJjZSA6IHB1YmxpYyBNZWRpYVN0cmVhbVNvdXJjZSB7
CitwdWJsaWM6CisgICAgc3RhdGljIFBhc3NSZWZQdHI8TWVkaWFTdHJlYW1BdWRpb1NvdXJjZT4g
Y3JlYXRlKCk7CisKKyAgICB+TWVkaWFTdHJlYW1BdWRpb1NvdXJjZSgpIHsgfQorCisgICAgdmly
dHVhbCBib29sIGlzQXVkaW9TdHJlYW1Tb3VyY2UoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9Cisg
ICAgdmlydHVhbCBib29sIHVzZUlERm9yVHJhY2tJRCgpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0K
KworICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxNZWRpYVN0cmVhbVNvdXJjZUNhcGFiaWxpdGllcz4g
Y2FwYWJpbGl0aWVzKCkgY29uc3Q7CisgICAgdmlydHVhbCBjb25zdCBNZWRpYVN0cmVhbVNvdXJj
ZVN0YXRlcyYgc3RhdGVzKCk7CisgICAgCisgICAgY29uc3QgU3RyaW5nJiBkZXZpY2VJZCgpIGNv
bnN0IHsgcmV0dXJuIG1fZGV2aWNlSWQ7IH0KKyAgICB2b2lkIHNldERldmljZUlkKGNvbnN0IFN0
cmluZyYgZGV2aWNlSWQpIHsgbV9kZXZpY2VJZCA9IGRldmljZUlkOyB9CisKKyAgICB2b2lkIHNl
dEF1ZGlvRm9ybWF0KHNpemVfdCBudW1iZXJPZkNoYW5uZWxzLCBmbG9hdCBzYW1wbGVSYXRlKTsK
KyAgICB2b2lkIGNvbnN1bWVBdWRpbyhBdWRpb0J1cyosIHNpemVfdCBudW1iZXJPZkZyYW1lcyk7
CisKKyAgICB2b2lkIGFkZEF1ZGlvQ29uc3VtZXIoUGFzc1JlZlB0cjxBdWRpb0Rlc3RpbmF0aW9u
Q29uc3VtZXI+KTsKKyAgICBib29sIHJlbW92ZUF1ZGlvQ29uc3VtZXIoQXVkaW9EZXN0aW5hdGlv
bkNvbnN1bWVyKik7CisgICAgY29uc3QgVmVjdG9yPFJlZlB0cjxBdWRpb0Rlc3RpbmF0aW9uQ29u
c3VtZXI+PiYgYXVkaW9Db25zdW1lcnMoKSBjb25zdCB7IHJldHVybiBtX2F1ZGlvQ29uc3VtZXJz
OyB9CisKK3ByaXZhdGU6CisgICAgTWVkaWFTdHJlYW1BdWRpb1NvdXJjZSgpOworCisgICAgU3Ry
aW5nIG1fZGV2aWNlSWQ7CisgICAgTXV0ZXggbV9hdWRpb0NvbnN1bWVyc0xvY2s7CisgICAgVmVj
dG9yPFJlZlB0cjxBdWRpb0Rlc3RpbmF0aW9uQ29uc3VtZXI+PiBtX2F1ZGlvQ29uc3VtZXJzOwor
ICAgIE1lZGlhU3RyZWFtU291cmNlU3RhdGVzIG1fY3VycmVudFN0YXRlczsKK307CisKK30gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShNRURJQV9TVFJFQU0pCisKKyNl
bmRpZiAvLyBNZWRpYVN0cmVhbUF1ZGlvU291cmNlX2gKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dl
YkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDE1NzAxNikK
KysrIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29y
a2luZyBjb3B5KQpAQCAtODQsNiArODQsMzAgQEAKIAkJMDcwMzM0RDcxNDU5RkZENTAwOEQ4RDQ1
IC8qIFRyYWNrQmFzZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMDcwMzM0RDYxNDU5RkZENTAwOEQ4RDQ1IC8qIFRyYWNrQmFzZS5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTA3MDMzNEQ5MTQ1QTAwNkYw
MDhEOEQ0NSAvKiBUcmFja0Jhc2UuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMDcwMzM0RDgxNDVBMDA2RjAwOEQ4RDQ1IC8qIFRyYWNrQmFzZS5jcHAg
Ki87IH07CiAJCTA3MDMzNEU5MTQ1QTFGMzYwMDhEOEQ0NSAvKiBKU1RyYWNrQ3VzdG9tLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3MDMzNEU4MTQ1
QTFGMzUwMDhEOEQ0NSAvKiBKU1RyYWNrQ3VzdG9tLmNwcCAqLzsgfTsKKwkJMDcwNTg0RkQxN0Y5
RDZERjAwNUYyQkNCIC8qIE1lZGlhU3RyZWFtU291cmNlQ2FwYWJpbGl0aWVzLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwNzA1ODRGQjE3RjlENkRGMDA1
RjJCQ0IgLyogTWVkaWFTdHJlYW1Tb3VyY2VDYXBhYmlsaXRpZXMuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQkwNzA1ODRGRjE3RjlGMDVFMDA1RjJC
Q0IgLyogQ2FwYWJpbGl0eVJhbmdlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDA3MDU4NEZFMTdGOUYwNUUwMDVGMkJDQiAvKiBDYXBhYmlsaXR5UmFu
Z2UuY3BwICovOyB9OworCQkwNzA1ODUwMjE3RkExMEQwMDA1RjJCQ0IgLyogSlNBbGxWaWRlb0Nh
cGFiaWxpdGllcy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAwNzA1ODUwMDE3RkExMEQwMDA1RjJCQ0IgLyogSlNBbGxWaWRlb0NhcGFiaWxpdGllcy5j
cHAgKi87IH07CisJCTA3MDU4NTAzMTdGQTEwRDAwMDVGMkJDQiAvKiBKU0FsbFZpZGVvQ2FwYWJp
bGl0aWVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAw
NzA1ODUwMTE3RkExMEQwMDA1RjJCQ0IgLyogSlNBbGxWaWRlb0NhcGFiaWxpdGllcy5oICovOyB9
OworCQkwNzA1ODUwODE3RkE0Njg5MDA1RjJCQ0IgLyogQWxsQXVkaW9DYXBhYmlsaXRpZXMuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3MDU4NTA1MTdG
QTQ2ODkwMDVGMkJDQiAvKiBBbGxBdWRpb0NhcGFiaWxpdGllcy5oICovOyB9OworCQkwNzA1ODUw
QjE3RkE0ODI3MDA1RjJCQ0IgLyogTWVkaWFTdHJlYW1DYXBhYmlsaXRpZXMuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3MDU4NTBBMTdGQTQ4MjcwMDVG
MkJDQiAvKiBNZWRpYVN0cmVhbUNhcGFiaWxpdGllcy5oICovOyB9OworCQkwNzA1ODUxMjE3RkE3
MTA3MDA1RjJCQ0IgLyogSlNNZWRpYVN0cmVhbUNhcGFiaWxpdGllcy5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwNzA1ODUxMDE3RkE3MTA3MDA1RjJC
Q0IgLyogSlNNZWRpYVN0cmVhbUNhcGFiaWxpdGllcy5jcHAgKi87IH07CisJCTA3MDU4NTEzMTdG
QTcxMDcwMDVGMkJDQiAvKiBKU01lZGlhU3RyZWFtQ2FwYWJpbGl0aWVzLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwNzA1ODUxMTE3RkE3MTA3MDA1RjJC
Q0IgLyogSlNNZWRpYVN0cmVhbUNhcGFiaWxpdGllcy5oICovOyB9OworCQkwNzA1ODUxNTE3RkIw
RUVBMDA1RjJCQ0IgLyogTWVkaWFTdHJlYW1DYXBhYmlsaXRpZXMuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDcwNTg1MTQxN0ZCMEUyQzAwNUYyQkNC
IC8qIE1lZGlhU3RyZWFtQ2FwYWJpbGl0aWVzLmNwcCAqLzsgfTsKKwkJMDcwNTg1MTcxN0ZCNDBF
OTAwNUYyQkNCIC8qIEpTTWVkaWFTdHJlYW1DYXBhYmlsaXRpZXNDdXN0b20uY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDcwNTg1MTYxN0ZCNDBFOTAw
NUYyQkNCIC8qIEpTTWVkaWFTdHJlYW1DYXBhYmlsaXRpZXNDdXN0b20uY3BwICovOyB9OworCQkw
NzA1ODUxQTE3RkI0NEI0MDA1RjJCQ0IgLyogSlNBbGxBdWRpb0NhcGFiaWxpdGllcy5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwNzA1ODUxODE3RkI0
NEI0MDA1RjJCQ0IgLyogSlNBbGxBdWRpb0NhcGFiaWxpdGllcy5jcHAgKi87IH07CisJCTA3MDU4
NTFCMTdGQjQ0QjQwMDVGMkJDQiAvKiBKU0FsbEF1ZGlvQ2FwYWJpbGl0aWVzLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwNzA1ODUxOTE3RkI0NEI0MDA1
RjJCQ0IgLyogSlNBbGxBdWRpb0NhcGFiaWxpdGllcy5oICovOyB9OworCQkwNzA1ODUyMTE3RkRD
MTQwMDA1RjJCQ0IgLyogTWVkaWFUcmFja0NvbnN0cmFpbnQuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3MDU4NTFEMTdGREMxNDAwMDVGMkJDQiAvKiBN
ZWRpYVRyYWNrQ29uc3RyYWludC5oICovOyB9OworCQkwNzA1ODUyMzE3RkRDMTQwMDA1RjJCQ0Ig
LyogTWVkaWFUcmFja0NvbnN0cmFpbnRzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDA3MDU4NTFGMTdGREMxNDAwMDVGMkJDQiAvKiBNZWRpYVRyYWNr
Q29uc3RyYWludHMuY3BwICovOyB9OworCQkwNzA1ODUyNDE3RkRDMTQwMDA1RjJCQ0IgLyogTWVk
aWFUcmFja0NvbnN0cmFpbnRzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAwNzA1ODUyMDE3RkRDMTQwMDA1RjJCQ0IgLyogTWVkaWFUcmFja0NvbnN0cmFp
bnRzLmggKi87IH07CisJCTA3MDU4NTI5MTdGREUwMkMwMDVGMkJDQiAvKiBNZWRpYVRyYWNrQ29u
c3RyYWludFNldC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMDcwNTg1MjYxN0ZERTAyQjAwNUYyQkNCIC8qIE1lZGlhVHJhY2tDb25zdHJhaW50U2V0Lmgg
Ki87IH07CisJCTA3MDU4NTMxMTdGREU2RDkwMDVGMkJDQiAvKiBKU01lZGlhVHJhY2tDb25zdHJh
aW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3
MDU4NTJCMTdGREU2RDkwMDVGMkJDQiAvKiBKU01lZGlhVHJhY2tDb25zdHJhaW50LmNwcCAqLzsg
fTsKKwkJMDcwNTg1MzIxN0ZERTZEOTAwNUYyQkNCIC8qIEpTTWVkaWFUcmFja0NvbnN0cmFpbnQu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3MDU4NTJD
MTdGREU2RDkwMDVGMkJDQiAvKiBKU01lZGlhVHJhY2tDb25zdHJhaW50LmggKi87IH07CisJCTA3
MDU4NTMzMTdGREU2RDkwMDVGMkJDQiAvKiBKU01lZGlhVHJhY2tDb25zdHJhaW50cy5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwNzA1ODUyRDE3RkRF
NkQ5MDA1RjJCQ0IgLyogSlNNZWRpYVRyYWNrQ29uc3RyYWludHMuY3BwICovOyB9OworCQkwNzA1
ODUzNDE3RkRFNkQ5MDA1RjJCQ0IgLyogSlNNZWRpYVRyYWNrQ29uc3RyYWludHMuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3MDU4NTJFMTdGREU2RDkw
MDVGMkJDQiAvKiBKU01lZGlhVHJhY2tDb25zdHJhaW50cy5oICovOyB9OworCQkwNzA1ODUzNTE3
RkRFNkQ5MDA1RjJCQ0IgLyogSlNNZWRpYVRyYWNrQ29uc3RyYWludFNldC5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwNzA1ODUyRjE3RkRFNkQ5MDA1
RjJCQ0IgLyogSlNNZWRpYVRyYWNrQ29uc3RyYWludFNldC5jcHAgKi87IH07CisJCTA3MDU4NTM2
MTdGREU2RDkwMDVGMkJDQiAvKiBKU01lZGlhVHJhY2tDb25zdHJhaW50U2V0LmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwNzA1ODUzMDE3RkRFNkQ5MDA1
RjJCQ0IgLyogSlNNZWRpYVRyYWNrQ29uc3RyYWludFNldC5oICovOyB9OworCQkwNzA1ODUzODE3
RkUwNDRGMDA1RjJCQ0IgLyogTWVkaWFUcmFja0NvbnN0cmFpbnRTZXQuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDcwNTg1MzcxN0ZFMDQ0RjAwNUYy
QkNCIC8qIE1lZGlhVHJhY2tDb25zdHJhaW50U2V0LmNwcCAqLzsgfTsKKwkJMDcwNTg1M0ExN0ZF
MDc3MDAwNUYyQkNCIC8qIE1lZGlhVHJhY2tDb25zdHJhaW50LmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3MDU4NTM5MTdGRTA3NzAwMDVGMkJDQiAv
KiBNZWRpYVRyYWNrQ29uc3RyYWludC5jcHAgKi87IH07CiAJCTA3MDc1NjhCMTQyMjYyRDYwMDQx
NDE2MSAvKiBIVE1MVHJhY2tFbGVtZW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDA3MDc1Njg4MTQyMjYyRDYwMDQxNDE2MSAvKiBIVE1MVHJhY2tF
bGVtZW50LmNwcCAqLzsgfTsKIAkJMDcwNzU2OEMxNDIyNjJENjAwNDE0MTYxIC8qIEhUTUxUcmFj
a0VsZW1lbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDA3MDc1Njg5MTQyMjYyRDYwMDQxNDE2MSAvKiBIVE1MVHJhY2tFbGVtZW50LmggKi87IH07CiAJ
CTA3MDc1Njk0MTQyMjY2OEQwMDQxNDE2MSAvKiBKU1RleHRUcmFjay5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwNzA3NTY4RTE0MjI2NjhDMDA0MTQx
NjEgLyogSlNUZXh0VHJhY2suY3BwICovOyB9OwpAQCAtMTE5LDYgKzE0Myw5IEBACiAJCTA3MzVF
RTZBMEY0MEM1RTQwMDRBMjYwNCAvKiBNZWRpYVBsYXllclByb3h5LmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwNzM1RUU2OTBGNDBDNUU0MDA0QTI2MDQg
LyogTWVkaWFQbGF5ZXJQcm94eS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CiAJCTA3MzY3RERGMTcyQ0E2N0YwMEQ4NjFCOSAvKiBJbmJhbmRUZXh0VHJh
Y2tQcml2YXRlTGVnYWN5QVZGT2JqQy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMDczNjdEREQxNzJDQTY3RjAwRDg2MUI5IC8qIEluYmFuZFRleHRUcmFj
a1ByaXZhdGVMZWdhY3lBVkZPYmpDLmggKi87IH07CiAJCTA3MzY3REUwMTcyQ0E2ODIwMEQ4NjFC
OSAvKiBJbmJhbmRUZXh0VHJhY2tQcml2YXRlTGVnYWN5QVZGT2JqQy5tbSBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3MzY3RERFMTcyQ0E2N0YwMEQ4NjFC
OSAvKiBJbmJhbmRUZXh0VHJhY2tQcml2YXRlTGVnYWN5QVZGT2JqQy5tbSAqLzsgfTsKKwkJMDcz
QUI0QjMxN0Y4QkFDQTAwNkUwRDZGIC8qIEFsbFZpZGVvQ2FwYWJpbGl0aWVzLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwNzNBQjRCMDE3RjhCQUNBMDA2
RTBENkYgLyogQWxsVmlkZW9DYXBhYmlsaXRpZXMuaCAqLzsgfTsKKwkJMDczQUI0QjcxN0Y5MkVD
RjAwNkUwRDZGIC8qIEpTQ2FwYWJpbGl0eVJhbmdlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3M0FCNEI1MTdGOTJFQ0YwMDZFMEQ2RiAvKiBKU0Nh
cGFiaWxpdHlSYW5nZS5jcHAgKi87IH07CisJCTA3M0FCNEI4MTdGOTJFQ0YwMDZFMEQ2RiAvKiBK
U0NhcGFiaWxpdHlSYW5nZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMDczQUI0QjYxN0Y5MkVDRjAwNkUwRDZGIC8qIEpTQ2FwYWJpbGl0eVJhbmdlLmgg
Ki87IH07CiAJCTA3M0JFMzQwMTdEMTdFMDEwMDJCRDQzMSAvKiBKU05hdmlnYXRvck1lZGlhU3Ry
ZWFtLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3
M0JFMzNFMTdEMTdFMDEwMDJCRDQzMSAvKiBKU05hdmlnYXRvck1lZGlhU3RyZWFtLmNwcCAqLzsg
fTsKIAkJMDczQkUzNDExN0QxN0UwMTAwMkJENDMxIC8qIEpTTmF2aWdhdG9yTWVkaWFTdHJlYW0u
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3M0JFMzNG
MTdEMTdFMDEwMDJCRDQzMSAvKiBKU05hdmlnYXRvck1lZGlhU3RyZWFtLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMDczQkUzNDgxN0QxN0U3QTAw
MkJENDMxIC8qIEpTTmF2aWdhdG9yVXNlck1lZGlhRXJyb3IuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDczQkUzNDIxN0QxN0U3QTAwMkJENDMxIC8q
IEpTTmF2aWdhdG9yVXNlck1lZGlhRXJyb3IuY3BwICovOyB9OwpAQCAtMTQ1LDYgKzE3Miw4IEBA
CiAJCTA3Njk3MDg2MTQ2M0FEODcwMEY1MDJDRiAvKiBUZXh0VHJhY2tMaXN0LmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3Njk3MDg0MTQ2M0FEODcw
MEY1MDJDRiAvKiBUZXh0VHJhY2tMaXN0LmNwcCAqLzsgfTsKIAkJMDc2OTcwODcxNDYzQUQ4NzAw
RjUwMkNGIC8qIFRleHRUcmFja0xpc3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDA3Njk3MDg1MTQ2M0FEODcwMEY1MDJDRiAvKiBUZXh0VHJhY2tMaXN0
LmggKi87IH07CiAJCTA3NkYwRDBFMTJCODE5MjcwMEMyNkFBNCAvKiBNZWRpYVBsYXllclByaXZh
dGVBVkZvdW5kYXRpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDA3NkYwRDBBMTJCODE5MjcwMEMyNkFBNCAvKiBNZWRpYVBsYXllclByaXZhdGVBVkZv
dW5kYXRpb24uaCAqLzsgfTsKKwkJMDc4MzIyODQxODAxM0VEODAwOTk5RTBDIC8qIE1lZGlhU3Ry
ZWFtQXVkaW9Tb3VyY2UuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMDc4MzIyODIxODAxM0VENzAwOTk5RTBDIC8qIE1lZGlhU3RyZWFtQXVkaW9Tb3Vy
Y2UuY3BwICovOyB9OworCQkwNzgzMjI4NTE4MDEzRUQ4MDA5OTlFMEMgLyogTWVkaWFTdHJlYW1B
dWRpb1NvdXJjZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMDc4MzIyODMxODAxM0VEODAwOTk5RTBDIC8qIE1lZGlhU3RyZWFtQXVkaW9Tb3VyY2UuaCAq
LzsgfTsKIAkJMDc4NDYzNDIxNDVCMTUxQTAwQTU4REYxIC8qIEpTVHJhY2tFdmVudC5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwNzg0NjM0MDE0NUIx
NTFBMDBBNThERjEgLyogSlNUcmFja0V2ZW50LmNwcCAqLzsgfTsKIAkJMDc4NDYzNDMxNDVCMTUx
QTAwQTU4REYxIC8qIEpTVHJhY2tFdmVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMDc4NDYzNDExNDVCMTUxQTAwQTU4REYxIC8qIEpTVHJhY2tFdmVu
dC5oICovOyB9OwogCQkwNzg0NjM4NTE0NUIxQjhFMDBBNThERjEgLyogSlNUcmFja0N1c3RvbS5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDc4NDYzODQx
NDVCMUI4RTAwQTU4REYxIC8qIEpTVHJhY2tDdXN0b20uaCAqLzsgfTsKQEAgLTI3Niw2ICszMDUs
MTIgQEAKIAkJMDdDNTlCNjAxN0Y0QjIwODAwMEZCQ0JCIC8qIEpTVmlkZW9TdHJlYW1UcmFjay5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDdDNTlCNUMx
N0Y0QjIwODAwMEZCQ0JCIC8qIEpTVmlkZW9TdHJlYW1UcmFjay5oICovOyB9OwogCQkwN0M1OUI2
MzE3RjREMUJGMDAwRkJDQkIgLyogTW9ja01lZGlhU3RyZWFtQ2VudGVyLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3QzU5QjYxMTdGNENGODcwMDBG
QkNCQiAvKiBNb2NrTWVkaWFTdHJlYW1DZW50ZXIuY3BwICovOyB9OwogCQkwN0M1OUI2NDE3RjRE
MUM0MDAwRkJDQkIgLyogTW9ja01lZGlhU3RyZWFtQ2VudGVyLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwN0M1OUI2MjE3RjRDRjg3MDAwRkJDQkIgLyog
TW9ja01lZGlhU3RyZWFtQ2VudGVyLmggKi87IH07CisJCTA3QzU5QjY4MTdGNzg0QkEwMDBGQkNC
QiAvKiBNZWRpYVNvdXJjZVN0YXRlcy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAwN0M1OUI2NTE3Rjc4NEJBMDAwRkJDQkIgLyogTWVkaWFTb3VyY2VT
dGF0ZXMuY3BwICovOyB9OworCQkwN0M1OUI2OTE3Rjc4NEJBMDAwRkJDQkIgLyogTWVkaWFTb3Vy
Y2VTdGF0ZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDA3QzU5QjY2MTdGNzg0QkEwMDBGQkNCQiAvKiBNZWRpYVNvdXJjZVN0YXRlcy5oICovOyB9Owor
CQkwN0M1OUI2RTE3Rjc5NEY2MDAwRkJDQkIgLyogSlNNZWRpYVNvdXJjZVN0YXRlc0N1c3RvbS5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwN0M1OUI2
RDE3Rjc5NEY2MDAwRkJDQkIgLyogSlNNZWRpYVNvdXJjZVN0YXRlc0N1c3RvbS5jcHAgKi87IH07
CisJCTA3QzU5QjcxMTdGNzlDN0MwMDBGQkNCQiAvKiBKU01lZGlhU291cmNlU3RhdGVzLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3QzU5QjZGMTdG
NzlDN0MwMDBGQkNCQiAvKiBKU01lZGlhU291cmNlU3RhdGVzLmNwcCAqLzsgfTsKKwkJMDdDNTlC
NzIxN0Y3OUM3QzAwMEZCQ0JCIC8qIEpTTWVkaWFTb3VyY2VTdGF0ZXMuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3QzU5QjcwMTdGNzlDN0MwMDBGQkNC
QiAvKiBKU01lZGlhU291cmNlU3RhdGVzLmggKi87IH07CisJCTA3QzU5Qjc2MTdGN0QwREIwMDBG
QkNCQiAvKiBDYXBhYmlsaXR5UmFuZ2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDA3QzU5Qjc0MTdGN0QwOUQwMDBGQkNCQiAvKiBDYXBhYmlsaXR5UmFu
Z2UuaCAqLzsgfTsKIAkJMDdDRTc3RDUxNjcxMkE2QTAwQzU1QTQ3IC8qIEluYmFuZFRleHRUcmFj
a1ByaXZhdGVDbGllbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDA3Q0U3N0Q0MTY3MTJBNkEwMEM1NUE0NyAvKiBJbmJhbmRUZXh0VHJhY2tQcml2YXRl
Q2xpZW50LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
IAkJMDdEQzVGRDQxN0QzRUVFOTAwOTlGODkwIC8qIEpTUlRDU3RhdHNSZXNwb25zZUN1c3RvbS5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwN0RDNUZE
MzE3RDNFRUU5MDA5OUY4OTAgLyogSlNSVENTdGF0c1Jlc3BvbnNlQ3VzdG9tLmNwcCAqLzsgfTsK
IAkJMDdFMTE2QjExNDg5QzlBMTAwRUM1QUNFIC8qIEpTVGV4dFRyYWNrQ3VzdG9tLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3RTExNkIwMTQ4OUM5
QTEwMEVDNUFDRSAvKiBKU1RleHRUcmFja0N1c3RvbS5jcHAgKi87IH07CkBAIC02NDE0LDYgKzY0
NDksMzUgQEAKIAkJMDcwMzM0RDYxNDU5RkZENTAwOEQ4RDQ1IC8qIFRyYWNrQmFzZS5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBUcmFja0Jhc2UuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJMDcwMzM0RDgxNDVBMDA2RjAwOEQ4RDQ1IC8qIFRyYWNrQmFzZS5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBUcmFja0Jhc2UuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwNzAzMzRFODE0NUExRjM1MDA4RDhENDUgLyogSlNU
cmFja0N1c3RvbS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU1Ry
YWNrQ3VzdG9tLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMDcwNTg0RkIxN0Y5
RDZERjAwNUYyQkNCIC8qIE1lZGlhU3RyZWFtU291cmNlQ2FwYWJpbGl0aWVzLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1lZGlhU3RyZWFtU291cmNlQ2FwYWJpbGl0aWVzLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTA3MDU4NEZFMTdGOUYwNUUwMDVGMkJDQiAv
KiBDYXBhYmlsaXR5UmFuZ2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gQ2FwYWJpbGl0eVJhbmdlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMDcw
NTg1MDAxN0ZBMTBEMDAwNUYyQkNCIC8qIEpTQWxsVmlkZW9DYXBhYmlsaXRpZXMuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNBbGxWaWRlb0NhcGFiaWxpdGllcy5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTA3MDU4NTAxMTdGQTEwRDAwMDVGMkJD
QiAvKiBKU0FsbFZpZGVvQ2FwYWJpbGl0aWVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IEpTQWxsVmlkZW9DYXBhYmlsaXRpZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJMDcwNTg1MDUxN0ZBNDY4OTAwNUYyQkNCIC8qIEFsbEF1ZGlvQ2FwYWJpbGl0aWVzLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFsbEF1ZGlvQ2FwYWJpbGl0aWVzLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTA3MDU4NTA2MTdGQTQ2ODkwMDVGMkJDQiAv
KiBBbGxBdWRpb0NhcGFiaWxpdGllcy5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gQWxsQXVk
aW9DYXBhYmlsaXRpZXMuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwNzA1ODUw
QTE3RkE0ODI3MDA1RjJCQ0IgLyogTWVkaWFTdHJlYW1DYXBhYmlsaXRpZXMuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTWVkaWFTdHJlYW1DYXBhYmlsaXRpZXMuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMDcwNTg1MEUxN0ZBNkZCMTAwNUYyQkNCIC8qIE1lZGlh
U3RyZWFtQ2FwYWJpbGl0aWVzLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBNZWRpYVN0cmVh
bUNhcGFiaWxpdGllcy5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTA3MDU4NTEw
MTdGQTcxMDcwMDVGMkJDQiAvKiBKU01lZGlhU3RyZWFtQ2FwYWJpbGl0aWVzLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTTWVkaWFTdHJlYW1DYXBhYmlsaXRpZXMu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwNzA1ODUxMTE3RkE3MTA3MDA1RjJC
Q0IgLyogSlNNZWRpYVN0cmVhbUNhcGFiaWxpdGllcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBKU01lZGlhU3RyZWFtQ2FwYWJpbGl0aWVzLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCTA3MDU4NTE0MTdGQjBFMkMwMDVGMkJDQiAvKiBNZWRpYVN0cmVhbUNhcGFi
aWxpdGllcy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBNZWRpYVN0
cmVhbUNhcGFiaWxpdGllcy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTA3MDU4
NTE2MTdGQjQwRTkwMDVGMkJDQiAvKiBKU01lZGlhU3RyZWFtQ2FwYWJpbGl0aWVzQ3VzdG9tLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTTWVkaWFTdHJlYW1DYXBh
YmlsaXRpZXNDdXN0b20uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwNzA1ODUx
ODE3RkI0NEI0MDA1RjJCQ0IgLyogSlNBbGxBdWRpb0NhcGFiaWxpdGllcy5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0FsbEF1ZGlvQ2FwYWJpbGl0aWVzLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMDcwNTg1MTkxN0ZCNDRCNDAwNUYyQkNCIC8q
IEpTQWxsQXVkaW9DYXBhYmlsaXRpZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gSlNBbGxBdWRpb0NhcGFiaWxpdGllcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQkwNzA1ODUxQzE3RkRCMjNDMDA1RjJCQ0IgLyogTWVkaWFUcmFja0NvbnN0cmFpbnRzLmlkbCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBh
dGggPSBNZWRpYVRyYWNrQ29uc3RyYWludHMuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQkwNzA1ODUxRDE3RkRDMTQwMDA1RjJCQ0IgLyogTWVkaWFUcmFja0NvbnN0cmFpbnQuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTWVkaWFUcmFja0NvbnN0cmFpbnQuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMDcwNTg1MUUxN0ZEQzE0MDAwNUYyQkNCIC8q
IE1lZGlhVHJhY2tDb25zdHJhaW50LmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBNZWRpYVRy
YWNrQ29uc3RyYWludC5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTA3MDU4NTFG
MTdGREMxNDAwMDVGMkJDQiAvKiBNZWRpYVRyYWNrQ29uc3RyYWludHMuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTWVkaWFUcmFja0NvbnN0cmFpbnRzLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMDcwNTg1MjAxN0ZEQzE0MDAwNUYyQkNCIC8qIE1l
ZGlhVHJhY2tDb25zdHJhaW50cy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBN
ZWRpYVRyYWNrQ29uc3RyYWludHMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMDcw
NTg1MjYxN0ZERTAyQjAwNUYyQkNCIC8qIE1lZGlhVHJhY2tDb25zdHJhaW50U2V0LmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1lZGlhVHJhY2tDb25zdHJhaW50U2V0Lmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTA3MDU4NTI3MTdGREUwMkIwMDVGMkJDQiAvKiBN
ZWRpYVRyYWNrQ29uc3RyYWludFNldC5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gTWVkaWFU
cmFja0NvbnN0cmFpbnRTZXQuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwNzA1
ODUyQjE3RkRFNkQ5MDA1RjJCQ0IgLyogSlNNZWRpYVRyYWNrQ29uc3RyYWludC5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU01lZGlhVHJhY2tDb25zdHJhaW50LmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMDcwNTg1MkMxN0ZERTZEOTAwNUYyQkNC
IC8qIEpTTWVkaWFUcmFja0NvbnN0cmFpbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gSlNNZWRpYVRyYWNrQ29uc3RyYWludC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQkwNzA1ODUyRDE3RkRFNkQ5MDA1RjJCQ0IgLyogSlNNZWRpYVRyYWNrQ29uc3RyYWludHMu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNNZWRpYVRyYWNrQ29u
c3RyYWludHMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwNzA1ODUyRTE3RkRF
NkQ5MDA1RjJCQ0IgLyogSlNNZWRpYVRyYWNrQ29uc3RyYWludHMuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gSlNNZWRpYVRyYWNrQ29uc3RyYWludHMuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJMDcwNTg1MkYxN0ZERTZEOTAwNUYyQkNCIC8qIEpTTWVkaWFUcmFj
a0NvbnN0cmFpbnRTZXQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
SlNNZWRpYVRyYWNrQ29uc3RyYWludFNldC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCTA3MDU4NTMwMTdGREU2RDkwMDVGMkJDQiAvKiBKU01lZGlhVHJhY2tDb25zdHJhaW50U2V0
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTTWVkaWFUcmFja0NvbnN0cmFp
bnRTZXQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMDcwNTg1MzcxN0ZFMDQ0RjAw
NUYyQkNCIC8qIE1lZGlhVHJhY2tDb25zdHJhaW50U2V0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IE1lZGlhVHJhY2tDb25zdHJhaW50U2V0LmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMDcwNTg1MzkxN0ZFMDc3MDAwNUYyQkNCIC8qIE1lZGlhVHJh
Y2tDb25zdHJhaW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE1l
ZGlhVHJhY2tDb25zdHJhaW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDcw
NzU2ODgxNDIyNjJENjAwNDE0MTYxIC8qIEhUTUxUcmFja0VsZW1lbnQuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSFRNTFRyYWNrRWxlbWVudC5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA3MDc1Njg5MTQyMjYyRDYwMDQxNDE2MSAvKiBIVE1MVHJh
Y2tFbGVtZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEhUTUxUcmFja0Vs
ZW1lbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDcwNzU2OEExNDIyNjJENjAw
NDE0MTYxIC8qIEhUTUxUcmFja0VsZW1lbnQuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IEhU
TUxUcmFja0VsZW1lbnQuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNjU0OSw2
ICs2NjEzLDkgQEAKIAkJMDczNUVFNjkwRjQwQzVFNDAwNEEyNjA0IC8qIE1lZGlhUGxheWVyUHJv
eHkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTWVkaWFQbGF5ZXJQcm94eS5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwNzM2N0RERDE3MkNBNjdGMDBEODYxQjkg
LyogSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUxlZ2FjeUFWRk9iakMuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBuYW1lID0gSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUxlZ2FjeUFWRk9iakMuaDsg
cGF0aCA9IG9iamMvSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUxlZ2FjeUFWRk9iakMuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDczNjdEREUxNzJDQTY3RjAwRDg2MUI5IC8qIEluYmFu
ZFRleHRUcmFja1ByaXZhdGVMZWdhY3lBVkZPYmpDLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAub2JqY3BwOyBuYW1lID0gSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUxlZ2FjeUFWRk9iakMubW07
IHBhdGggPSBvYmpjL0luYmFuZFRleHRUcmFja1ByaXZhdGVMZWdhY3lBVkZPYmpDLm1tOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwNzNBQjRCMDE3RjhCQUNBMDA2RTBENkYgLyogQWxs
VmlkZW9DYXBhYmlsaXRpZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQWxs
VmlkZW9DYXBhYmlsaXRpZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMDczQUI0
QjUxN0Y5MkVDRjAwNkUwRDZGIC8qIEpTQ2FwYWJpbGl0eVJhbmdlLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTQ2FwYWJpbGl0eVJhbmdlLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMDczQUI0QjYxN0Y5MkVDRjAwNkUwRDZGIC8qIEpTQ2FwYWJp
bGl0eVJhbmdlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTQ2FwYWJpbGl0
eVJhbmdlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA3M0JFMzNFMTdEMTdFMDEw
MDJCRDQzMSAvKiBKU05hdmlnYXRvck1lZGlhU3RyZWFtLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IEpTTmF2aWdhdG9yTWVkaWFTdHJlYW0uY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQkwNzNCRTMzRjE3RDE3RTAxMDAyQkQ0MzEgLyogSlNOYXZpZ2F0
b3JNZWRpYVN0cmVhbS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU05hdmln
YXRvck1lZGlhU3RyZWFtLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA3M0JFMzQy
MTdEMTdFN0EwMDJCRDQzMSAvKiBKU05hdmlnYXRvclVzZXJNZWRpYUVycm9yLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTTmF2aWdhdG9yVXNlck1lZGlhRXJyb3Iu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNjU3NSw2ICs2NjQyLDggQEAKIAkJ
MDc2OTcwODUxNDYzQUQ4NzAwRjUwMkNGIC8qIFRleHRUcmFja0xpc3QuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gVGV4dFRyYWNrTGlzdC5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQkwNzZGMEQwOTEyQjgxOTI3MDBDMjZBQTQgLyogTWVkaWFQbGF5ZXJQcml2YXRl
QVZGb3VuZGF0aW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE1l
ZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTA3NkYwRDBBMTJCODE5MjcwMEMyNkFBNCAvKiBNZWRpYVBsYXllclByaXZhdGVBVkZv
dW5kYXRpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTWVkaWFQbGF5ZXJQ
cml2YXRlQVZGb3VuZGF0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTA3ODMy
MjgyMTgwMTNFRDcwMDk5OUUwQyAvKiBNZWRpYVN0cmVhbUF1ZGlvU291cmNlLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE1lZGlhU3RyZWFtQXVkaW9Tb3VyY2UuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwNzgzMjI4MzE4MDEzRUQ4MDA5OTlFMEMg
LyogTWVkaWFTdHJlYW1BdWRpb1NvdXJjZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBNZWRpYVN0cmVhbUF1ZGlvU291cmNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTA3ODQ2MzQwMTQ1QjE1MUEwMEE1OERGMSAvKiBKU1RyYWNrRXZlbnQuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNUcmFja0V2ZW50LmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDc4NDYzNDExNDVCMTUxQTAwQTU4REYxIC8qIEpTVHJhY2tF
dmVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU1RyYWNrRXZlbnQuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDc4NDYzODQxNDVCMUI4RTAwQTU4REYxIC8q
IEpTVHJhY2tDdXN0b20uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNUcmFj
a0N1c3RvbS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNjYzOSw2ICs2NzA4LDE1
IEBACiAJCTA3QzU5QjVDMTdGNEIyMDgwMDBGQkNCQiAvKiBKU1ZpZGVvU3RyZWFtVHJhY2suaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNWaWRlb1N0cmVhbVRyYWNrLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA3QzU5QjYxMTdGNENGODcwMDBGQkNCQiAvKiBN
b2NrTWVkaWFTdHJlYW1DZW50ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBu
YW1lID0gTW9ja01lZGlhU3RyZWFtQ2VudGVyLmNwcDsgcGF0aCA9IG1vY2svTW9ja01lZGlhU3Ry
ZWFtQ2VudGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDdDNTlCNjIxN0Y0
Q0Y4NzAwMEZCQ0JCIC8qIE1vY2tNZWRpYVN0cmVhbUNlbnRlci5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IG5hbWUgPSBNb2NrTWVkaWFTdHJlYW1DZW50ZXIuaDsgcGF0aCA9IG1vY2svTW9j
a01lZGlhU3RyZWFtQ2VudGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTA3QzU5
QjY1MTdGNzg0QkEwMDBGQkNCQiAvKiBNZWRpYVNvdXJjZVN0YXRlcy5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBNZWRpYVNvdXJjZVN0YXRlcy5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTA3QzU5QjY2MTdGNzg0QkEwMDBGQkNCQiAvKiBNZWRpYVNv
dXJjZVN0YXRlcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNZWRpYVNvdXJj
ZVN0YXRlcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwN0M1OUI2NzE3Rjc4NEJB
MDAwRkJDQkIgLyogTWVkaWFTb3VyY2VTdGF0ZXMuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9
IE1lZGlhU291cmNlU3RhdGVzLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMDdD
NTlCNkQxN0Y3OTRGNjAwMEZCQ0JCIC8qIEpTTWVkaWFTb3VyY2VTdGF0ZXNDdXN0b20uY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNNZWRpYVNvdXJjZVN0YXRlc0N1
c3RvbS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTA3QzU5QjZGMTdGNzlDN0Mw
MDBGQkNCQiAvKiBKU01lZGlhU291cmNlU3RhdGVzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IEpTTWVkaWFTb3VyY2VTdGF0ZXMuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQkwN0M1OUI3MDE3Rjc5QzdDMDAwRkJDQkIgLyogSlNNZWRpYVNvdXJjZVN0
YXRlcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU01lZGlhU291cmNlU3Rh
dGVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTA3QzU5QjczMTdGN0QwOUQwMDBG
QkNCQiAvKiBBbGxWaWRlb0NhcGFiaWxpdGllcy5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0g
QWxsVmlkZW9DYXBhYmlsaXRpZXMuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkw
N0M1OUI3NDE3RjdEMDlEMDAwRkJDQkIgLyogQ2FwYWJpbGl0eVJhbmdlLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENhcGFiaWxpdHlSYW5nZS5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQkwN0M1OUI3NTE3RjdEMDlEMDAwRkJDQkIgLyogQ2FwYWJpbGl0eVJhbmdl
LmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBDYXBhYmlsaXR5UmFuZ2UuaWRsOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQkwN0NFNzdENDE2NzEyQTZBMDBDNTVBNDcgLyogSW5iYW5k
VGV4dFRyYWNrUHJpdmF0ZUNsaWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBJbmJhbmRUZXh0VHJhY2tQcml2YXRlQ2xpZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTA3REM1RkQzMTdEM0VFRTkwMDk5Rjg5MCAvKiBKU1JUQ1N0YXRzUmVzcG9uc2VDdXN0
b20uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNSVENTdGF0c1Jl
c3BvbnNlQ3VzdG9tLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDdFMTE2QjAx
NDg5QzlBMTAwRUM1QUNFIC8qIEpTVGV4dFRyYWNrQ3VzdG9tLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTVGV4dFRyYWNrQ3VzdG9tLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKQEAgLTEzMjA5LDEyICsxMzI4NywzNCBAQAogCQkwNzIyMUI0NjE3Q0VD
MzI3MDA4NDhFNTEgLyogbWVkaWFzdHJlYW0gKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJ
CWNoaWxkcmVuID0gKAorCQkJCTA3MDU4NTM5MTdGRTA3NzAwMDVGMkJDQiAvKiBNZWRpYVRyYWNr
Q29uc3RyYWludC5jcHAgKi8sCisJCQkJMDcwNTg1MzcxN0ZFMDQ0RjAwNUYyQkNCIC8qIE1lZGlh
VHJhY2tDb25zdHJhaW50U2V0LmNwcCAqLywKKwkJCQkwNzA1ODUyNjE3RkRFMDJCMDA1RjJCQ0Ig
LyogTWVkaWFUcmFja0NvbnN0cmFpbnRTZXQuaCAqLywKKwkJCQkwNzA1ODUyNzE3RkRFMDJCMDA1
RjJCQ0IgLyogTWVkaWFUcmFja0NvbnN0cmFpbnRTZXQuaWRsICovLAorCQkJCTA3MDU4NTFEMTdG
REMxNDAwMDVGMkJDQiAvKiBNZWRpYVRyYWNrQ29uc3RyYWludC5oICovLAorCQkJCTA3MDU4NTFF
MTdGREMxNDAwMDVGMkJDQiAvKiBNZWRpYVRyYWNrQ29uc3RyYWludC5pZGwgKi8sCisJCQkJMDcw
NTg1MUYxN0ZEQzE0MDAwNUYyQkNCIC8qIE1lZGlhVHJhY2tDb25zdHJhaW50cy5jcHAgKi8sCisJ
CQkJMDcwNTg1MjAxN0ZEQzE0MDAwNUYyQkNCIC8qIE1lZGlhVHJhY2tDb25zdHJhaW50cy5oICov
LAorCQkJCTA3MDU4NTFDMTdGREIyM0MwMDVGMkJDQiAvKiBNZWRpYVRyYWNrQ29uc3RyYWludHMu
aWRsICovLAorCQkJCTA3MDU4NTA1MTdGQTQ2ODkwMDVGMkJDQiAvKiBBbGxBdWRpb0NhcGFiaWxp
dGllcy5oICovLAorCQkJCTA3MDU4NTA2MTdGQTQ2ODkwMDVGMkJDQiAvKiBBbGxBdWRpb0NhcGFi
aWxpdGllcy5pZGwgKi8sCisJCQkJMDcwNTg0RkUxN0Y5RjA1RTAwNUYyQkNCIC8qIENhcGFiaWxp
dHlSYW5nZS5jcHAgKi8sCisJCQkJMDczQUI0QjAxN0Y4QkFDQTAwNkUwRDZGIC8qIEFsbFZpZGVv
Q2FwYWJpbGl0aWVzLmggKi8sCisJCQkJMDdDNTlCNzMxN0Y3RDA5RDAwMEZCQ0JCIC8qIEFsbFZp
ZGVvQ2FwYWJpbGl0aWVzLmlkbCAqLywKKwkJCQkwN0M1OUI3NDE3RjdEMDlEMDAwRkJDQkIgLyog
Q2FwYWJpbGl0eVJhbmdlLmggKi8sCisJCQkJMDdDNTlCNzUxN0Y3RDA5RDAwMEZCQ0JCIC8qIENh
cGFiaWxpdHlSYW5nZS5pZGwgKi8sCisJCQkJMDdDNTlCNjUxN0Y3ODRCQTAwMEZCQ0JCIC8qIE1l
ZGlhU291cmNlU3RhdGVzLmNwcCAqLywKKwkJCQkwN0M1OUI2NjE3Rjc4NEJBMDAwRkJDQkIgLyog
TWVkaWFTb3VyY2VTdGF0ZXMuaCAqLywKKwkJCQkwN0M1OUI2NzE3Rjc4NEJBMDAwRkJDQkIgLyog
TWVkaWFTb3VyY2VTdGF0ZXMuaWRsICovLAogCQkJCTA3QzU5QjREMTdGNEFDMTUwMDBGQkNCQiAv
KiBBdWRpb1N0cmVhbVRyYWNrLmNwcCAqLywKIAkJCQkwN0M1OUI0RTE3RjRBQzE1MDAwRkJDQkIg
LyogQXVkaW9TdHJlYW1UcmFjay5oICovLAogCQkJCTA3QzU5QjRGMTdGNEFDMTUwMDBGQkNCQiAv
KiBBdWRpb1N0cmVhbVRyYWNrLmlkbCAqLywKIAkJCQkwN0M1OUI1MDE3RjRBQzE1MDAwRkJDQkIg
LyogVmlkZW9TdHJlYW1UcmFjay5jcHAgKi8sCiAJCQkJMDdDNTlCNTExN0Y0QUMxNTAwMEZCQ0JC
IC8qIFZpZGVvU3RyZWFtVHJhY2suaCAqLywKIAkJCQkwN0M1OUI1MjE3RjRBQzE1MDAwRkJDQkIg
LyogVmlkZW9TdHJlYW1UcmFjay5pZGwgKi8sCisJCQkJMDcwNTg1MTQxN0ZCMEUyQzAwNUYyQkNC
IC8qIE1lZGlhU3RyZWFtQ2FwYWJpbGl0aWVzLmNwcCAqLywKKwkJCQkwNzA1ODUwRTE3RkE2RkIx
MDA1RjJCQ0IgLyogTWVkaWFTdHJlYW1DYXBhYmlsaXRpZXMuaWRsICovLAorCQkJCTA3MDU4NTBB
MTdGQTQ4MjcwMDVGMkJDQiAvKiBNZWRpYVN0cmVhbUNhcGFiaWxpdGllcy5oICovLAogCQkJCTA3
MjIxQjRBMTdDRUMzMjcwMDg0OEU1MSAvKiBNZWRpYUNvbnN0cmFpbnRzSW1wbC5jcHAgKi8sCiAJ
CQkJMDcyMjFCNEIxN0NFQzMyNzAwODQ4RTUxIC8qIE1lZGlhQ29uc3RyYWludHNJbXBsLmggKi8s
CiAJCQkJMDcyMjFCNEMxN0NFQzMyNzAwODQ4RTUxIC8qIE1lZGlhU3RyZWFtLmNwcCAqLywKQEAg
LTEzMzEzLDYgKzEzNDEzLDcgQEAKIAkJCQkwNzIyMUI5RDE3Q0YwQUQ0MDA4NDhFNTEgLyogTWVk
aWFTdHJlYW1EZXNjcmlwdG9yLmggKi8sCiAJCQkJMDcyMjFCOUUxN0NGMEFENDAwODQ4RTUxIC8q
IE1lZGlhU3RyZWFtU291cmNlLmNwcCAqLywKIAkJCQkwNzIyMUI5RjE3Q0YwQUQ0MDA4NDhFNTEg
LyogTWVkaWFTdHJlYW1Tb3VyY2UuaCAqLywKKwkJCQkwNzA1ODRGQjE3RjlENkRGMDA1RjJCQ0Ig
LyogTWVkaWFTdHJlYW1Tb3VyY2VDYXBhYmlsaXRpZXMuaCAqLywKIAkJCQkwNzYzMDZFMjE3RTIy
QTQzMDA1QTdDNEUgLyogTWVkaWFTdHJlYW1UcmFja1NvdXJjZXNSZXF1ZXN0Q2xpZW50LmggKi8s
CiAJCQkJMDcyMjFCQTExN0NGMEFENDAwODQ4RTUxIC8qIFJUQ0NvbmZpZ3VyYXRpb24uaCAqLywK
IAkJCQkwNzIyMUJBMjE3Q0YwQUQ0MDA4NDhFNTEgLyogUlRDRGF0YUNoYW5uZWxIYW5kbGVyLmgg
Ki8sCkBAIC0xMzM2MCw2ICsxMzQ2MSwxNiBAQAogCQkwN0NGRDk5MzE3RDAxNDA1MDAxQzRGRkMg
LyogTWVkaWFTdHJlYW0gKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0g
KAorCQkJCTA3MDU4NTJCMTdGREU2RDkwMDVGMkJDQiAvKiBKU01lZGlhVHJhY2tDb25zdHJhaW50
LmNwcCAqLywKKwkJCQkwNzA1ODUyQzE3RkRFNkQ5MDA1RjJCQ0IgLyogSlNNZWRpYVRyYWNrQ29u
c3RyYWludC5oICovLAorCQkJCTA3MDU4NTJEMTdGREU2RDkwMDVGMkJDQiAvKiBKU01lZGlhVHJh
Y2tDb25zdHJhaW50cy5jcHAgKi8sCisJCQkJMDcwNTg1MkUxN0ZERTZEOTAwNUYyQkNCIC8qIEpT
TWVkaWFUcmFja0NvbnN0cmFpbnRzLmggKi8sCisJCQkJMDcwNTg1MkYxN0ZERTZEOTAwNUYyQkNC
IC8qIEpTTWVkaWFUcmFja0NvbnN0cmFpbnRTZXQuY3BwICovLAorCQkJCTA3MDU4NTMwMTdGREU2
RDkwMDVGMkJDQiAvKiBKU01lZGlhVHJhY2tDb25zdHJhaW50U2V0LmggKi8sCisJCQkJMDcwNTg1
MTAxN0ZBNzEwNzAwNUYyQkNCIC8qIEpTTWVkaWFTdHJlYW1DYXBhYmlsaXRpZXMuY3BwICovLAor
CQkJCTA3MDU4NTExMTdGQTcxMDcwMDVGMkJDQiAvKiBKU01lZGlhU3RyZWFtQ2FwYWJpbGl0aWVz
LmggKi8sCisJCQkJMDdDNTlCNkYxN0Y3OUM3QzAwMEZCQ0JCIC8qIEpTTWVkaWFTb3VyY2VTdGF0
ZXMuY3BwICovLAorCQkJCTA3QzU5QjcwMTdGNzlDN0MwMDBGQkNCQiAvKiBKU01lZGlhU291cmNl
U3RhdGVzLmggKi8sCiAJCQkJMDdDNTlCNTkxN0Y0QjIwODAwMEZCQ0JCIC8qIEpTQXVkaW9TdHJl
YW1UcmFjay5jcHAgKi8sCiAJCQkJMDdDNTlCNUExN0Y0QjIwODAwMEZCQ0JCIC8qIEpTQXVkaW9T
dHJlYW1UcmFjay5oICovLAogCQkJCTA3QzU5QjVCMTdGNEIyMDgwMDBGQkNCQiAvKiBKU1ZpZGVv
U3RyZWFtVHJhY2suY3BwICovLApAQCAtMTkxNzksNiArMTkyOTAsOCBAQAogCQlCQzRFREVGNzBD
MDhGNDE0MDA3RURENDkgLyogQ3VzdG9tICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQlj
aGlsZHJlbiA9ICgKKwkJCQkwNzA1ODUxNjE3RkI0MEU5MDA1RjJCQ0IgLyogSlNNZWRpYVN0cmVh
bUNhcGFiaWxpdGllc0N1c3RvbS5jcHAgKi8sCisJCQkJMDdDNTlCNkQxN0Y3OTRGNjAwMEZCQ0JC
IC8qIEpTTWVkaWFTb3VyY2VTdGF0ZXNDdXN0b20uY3BwICovLAogCQkJCUJDMkVENkJCMEM2QkQy
RjAwMDkyMEJGRiAvKiBKU0F0dHJDdXN0b20uY3BwICovLAogCQkJCUZERUFBQUVGMTJCMDJFRTQw
MERDRjMzQiAvKiBKU0F1ZGlvQnVmZmVyU291cmNlTm9kZUN1c3RvbS5jcHAgKi8sCiAJCQkJRkRF
QUFBRjAxMkIwMkVFNDAwRENGMzNCIC8qIEpTQXVkaW9Db250ZXh0Q3VzdG9tLmNwcCAqLywKQEAg
LTE5Nzc1LDYgKzE5ODg4LDEyIEBACiAJCUNENjFGRTdCMTc5NENBMDIwMDQxMDFFQiAvKiBNZWRp
YVNvdXJjZSAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCisJCQkJ
MDcwNTg1MTgxN0ZCNDRCNDAwNUYyQkNCIC8qIEpTQWxsQXVkaW9DYXBhYmlsaXRpZXMuY3BwICov
LAorCQkJCTA3MDU4NTE5MTdGQjQ0QjQwMDVGMkJDQiAvKiBKU0FsbEF1ZGlvQ2FwYWJpbGl0aWVz
LmggKi8sCisJCQkJMDcwNTg1MDAxN0ZBMTBEMDAwNUYyQkNCIC8qIEpTQWxsVmlkZW9DYXBhYmls
aXRpZXMuY3BwICovLAorCQkJCTA3MDU4NTAxMTdGQTEwRDAwMDVGMkJDQiAvKiBKU0FsbFZpZGVv
Q2FwYWJpbGl0aWVzLmggKi8sCisJCQkJMDczQUI0QjUxN0Y5MkVDRjAwNkUwRDZGIC8qIEpTQ2Fw
YWJpbGl0eVJhbmdlLmNwcCAqLywKKwkJCQkwNzNBQjRCNjE3RjkyRUNGMDA2RTBENkYgLyogSlND
YXBhYmlsaXR5UmFuZ2UuaCAqLywKIAkJCQlDRDlERTE3MjE3QUFDNzRDMDBFQTM4NkQgLyogSlNN
ZWRpYVNvdXJjZS5jcHAgKi8sCiAJCQkJQ0Q5REUxNzMxN0FBQzc0QzAwRUEzODZEIC8qIEpTTWVk
aWFTb3VyY2UuaCAqLywKIAkJCQlDRDlERTE3NjE3QUFDNzVCMDBFQTM4NkQgLyogSlNTb3VyY2VC
dWZmZXIuY3BwICovLApAQCAtMjEwMjIsNiArMjExNDEsOCBAQAogCQlGRDMxNUZBMjEyQjAyNUIx
MDBDMUEzNTkgLyogd2ViYXVkaW8gKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxk
cmVuID0gKAorCQkJCTA3ODMyMjgyMTgwMTNFRDcwMDk5OUUwQyAvKiBNZWRpYVN0cmVhbUF1ZGlv
U291cmNlLmNwcCAqLywKKwkJCQkwNzgzMjI4MzE4MDEzRUQ4MDA5OTlFMEMgLyogTWVkaWFTdHJl
YW1BdWRpb1NvdXJjZS5oICovLAogCQkJCUZEMzE1RkYzMTJCMDI2NzYwMEMxQTM1OSAvKiBBbmFs
eXNlck5vZGUuY3BwICovLAogCQkJCUZEMzE1RkY0MTJCMDI2NzYwMEMxQTM1OSAvKiBBbmFseXNl
ck5vZGUuaCAqLywKIAkJCQlGRDMxNUZGNTEyQjAyNjc2MDBDMUEzNTkgLyogQW5hbHlzZXJOb2Rl
LmlkbCAqLywKQEAgLTIxNDE5LDYgKzIxNTQwLDcgQEAKIAkJCQlGRDMxNjBCRjEyQjAyNzJBMDBD
MUEzNTkgLyogQXVkaW9GaWxlUmVhZGVyTWFjLmggaW4gSGVhZGVycyAqLywKIAkJCQlGREUyRDU1
QjE1OUU2NkVCMDBEQ0NDRjggLyogQXVkaW9JT0NhbGxiYWNrLmggaW4gSGVhZGVycyAqLywKIAkJ
CQlGRDMxNjAxMDEyQjAyNjc2MDBDMUEzNTkgLyogQXVkaW9MaXN0ZW5lci5oIGluIEhlYWRlcnMg
Ki8sCisJCQkJMDcwNTg1MjQxN0ZEQzE0MDAwNUYyQkNCIC8qIE1lZGlhVHJhY2tDb25zdHJhaW50
cy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRkQzMTYwMTMxMkIwMjY3NjAwQzFBMzU5IC8qIEF1ZGlv
Tm9kZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRkQzMTYwMTYxMkIwMjY3NjAwQzFBMzU5IC8qIEF1
ZGlvTm9kZUlucHV0LmggaW4gSGVhZGVycyAqLywKIAkJCQlGRDMxNjAxODEyQjAyNjc2MDBDMUEz
NTkgLyogQXVkaW9Ob2RlT3V0cHV0LmggaW4gSGVhZGVycyAqLywKQEAgLTIxNTgxLDYgKzIxNzAz
LDcgQEAKIAkJCQlCQzBCMzZBNTBDRDNDNjdDMDBBQzdFQjUgLyogQ29uc29sZS5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJMkRGMkU5RDUxNjZFMzk3NTAwMzVCRUYyIC8qIENvbnNvbGVBUElUeXBlcy5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJNDFGMDYxOEUwRjVGMDY5ODAwQTA3RUFDIC8qIENvbnNvbGVN
ZXNzYWdlLmggaW4gSGVhZGVycyAqLywKKwkJCQkwNzNBQjRCMzE3RjhCQUNBMDA2RTBENkYgLyog
QWxsVmlkZW9DYXBhYmlsaXRpZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDRTU2NDRFMTM3QTM0
RDYwMDdEMjkzNCAvKiBDb25zb2xlVHlwZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCUE4MTg3MjFD
MDk3N0QzQzAwMDU4MjZEOSAvKiBDb250YWluZXJOb2RlLmggaW4gSGVhZGVycyAqLywKIAkJCQlF
MUExNDcwODExMTAyQjE1MDBFRUMwRjMgLyogQ29udGFpbmVyTm9kZUFsZ29yaXRobXMuaCBpbiBI
ZWFkZXJzICovLApAQCAtMjE3MzcsNiArMjE4NjAsNyBAQAogCQkJCUE1NzMyQjBCMTM2QTE2MUQw
MDVDOEQ3QyAvKiBEYXRlQ29tcG9uZW50cy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRjU1QjNEQjYx
MjUxRjEyRDAwM0VGMjY5IC8qIERhdGVJbnB1dFR5cGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTQ1
M0VCNjM3MTU5QzU3MDQwMDAwMUJCNyAvKiBEYXRlVGltZUZvcm1hdC5oIGluIEhlYWRlcnMgKi8s
CisJCQkJMDcwNTg1MDMxN0ZBMTBEMDAwNUYyQkNCIC8qIEpTQWxsVmlkZW9DYXBhYmlsaXRpZXMu
aCBpbiBIZWFkZXJzICovLAogCQkJCUY1NUIzREI4MTI1MUYxMkQwMDNFRjI2OSAvKiBEYXRlVGlt
ZUlucHV0VHlwZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRjU1QjNEQkExMjUxRjEyRDAwM0VGMjY5
IC8qIERhdGVUaW1lTG9jYWxJbnB1dFR5cGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTQ1RkVBNUQw
MTU2RERFOEMwMDY1NDEwMSAvKiBEZWNpbWFsLmggaW4gSGVhZGVycyAqLywKQEAgLTIxNzUwLDYg
KzIxODc0LDcgQEAKIAkJCQlGRDMxNjAyRTEyQjAyNjc2MDBDMUEzNTkgLyogRGVsYXlOb2RlLmgg
aW4gSGVhZGVycyAqLywKIAkJCQlGRDMxNjAzMTEyQjAyNjc2MDBDMUEzNTkgLyogRGVsYXlQcm9j
ZXNzb3IuaCBpbiBIZWFkZXJzICovLAogCQkJCTFDNEM4RjY2MEFEODY1NUQwMDk0NzVDRSAvKiBE
ZWxldGVCdXR0b24uaCBpbiBIZWFkZXJzICovLAorCQkJCTA3MDU4NTMyMTdGREU2RDkwMDVGMkJD
QiAvKiBKU01lZGlhVHJhY2tDb25zdHJhaW50LmggaW4gSGVhZGVycyAqLywKIAkJCQkxQzRDOEYw
MjBBRDg1RDg3MDA5NDc1Q0UgLyogRGVsZXRlQnV0dG9uQ29udHJvbGxlci5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJOTMzMDlEREYwOTlFNjQ5MjAwNTZFNTgxIC8qIERlbGV0ZUZyb21UZXh0Tm9kZUNv
bW1hbmQuaCBpbiBIZWFkZXJzICovLAogCQkJCTA3QzU5QjY0MTdGNEQxQzQwMDBGQkNCQiAvKiBN
b2NrTWVkaWFTdHJlYW1DZW50ZXIuaCBpbiBIZWFkZXJzICovLApAQCAtMjE3OTEsNiArMjE5MTYs
NyBAQAogCQkJCUNFMDU3RkE2MTIyMDczMTEwMEE0NzZENSAvKiBEb2N1bWVudE1hcmtlckNvbnRy
b2xsZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTE0OTQ3RkZFMTJGODBDRDIwMEEwRjYzMSAvKiBE
b2N1bWVudE9yZGVyZWRNYXAuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDQ0ZCQUU4MEI1MTUyRUQw
MDAxRjFENyAvKiBEb2N1bWVudFBhcnNlci5oIGluIEhlYWRlcnMgKi8sCisJCQkJMDcwNTg1Mjkx
N0ZERTAyQzAwNUYyQkNCIC8qIE1lZGlhVHJhY2tDb25zdHJhaW50U2V0LmggaW4gSGVhZGVycyAq
LywKIAkJCQk0QTRGNDhBQTE2QjBERkMwMDBFREJCMjkgLyogRG9jdW1lbnRSdWxlU2V0cy5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJQUQ2RTcxQUQxNjY4ODk5RDAwMzIwQzEzIC8qIERvY3VtZW50U2hh
cmVkT2JqZWN0UG9vbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTQ3RTI3NjUxNjAzNkVEMjAwRUUy
QUZCIC8qIERvY3VtZW50U3R5bGVTaGVldENvbGxlY3Rpb24uaCBpbiBIZWFkZXJzICovLApAQCAt
MjE5NDUsNiArMjIwNzEsNyBAQAogCQkJCTg1OTkyRUJBMEFBNTA2OTUwMEFDMDc4NSAvKiBET01I
VE1MSGVhZEVsZW1lbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTg1RTcxMUFEMEFDNUQ1MzUwMDUz
MjcwRiAvKiBET01IVE1MSGVhZEVsZW1lbnRJbnRlcm5hbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
ODUxODNCNDQwQUE2OTI2MTAwRjE5RkEzIC8qIERPTUhUTUxIZWFkaW5nRWxlbWVudC5oIGluIEhl
YWRlcnMgKi8sCisJCQkJMDcwNTg1MzYxN0ZERTZEOTAwNUYyQkNCIC8qIEpTTWVkaWFUcmFja0Nv
bnN0cmFpbnRTZXQuaCBpbiBIZWFkZXJzICovLAogCQkJCTg1RTcxMUFFMEFDNUQ1MzUwMDUzMjcw
RiAvKiBET01IVE1MSGVhZGluZ0VsZW1lbnRJbnRlcm5hbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
ODVFQ0JFRjEwQUE3NjI2OTAwNTQ0RjBCIC8qIERPTUhUTUxIUkVsZW1lbnQuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTg1RTcxMUFGMEFDNUQ1MzUwMDUzMjcwRiAvKiBET01IVE1MSFJFbGVtZW50SW50
ZXJuYWwuaCBpbiBIZWFkZXJzICovLApAQCAtMjIwNTcsNiArMjIxODQsNyBAQAogCQkJCTg1Q0E5
NkVBMEE5NjI0RTkwMDY5MENDRiAvKiBET01Ob3RhdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
ODVFNzExRDQwQUM1RDUzNTAwNTMyNzBGIC8qIERPTU5vdGF0aW9uSW50ZXJuYWwuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTg1NkM4QUU0MEE5MTI2NDkwMDVDNjg3QiAvKiBET01PYmplY3QuaCBpbiBI
ZWFkZXJzICovLAorCQkJCTA3MDU4NTEzMTdGQTcxMDcwMDVGMkJDQiAvKiBKU01lZGlhU3RyZWFt
Q2FwYWJpbGl0aWVzLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzUzREE2MDExNDMxNDFBMDAwRDgx
N0UgLyogRE9NT2JqZWN0SGFzaFRhYmxlTWFwLmggaW4gSGVhZGVycyAqLywKIAkJCQk4NUM3RjVE
MDBBQUZCOEQ5MDA0MDE0REQgLyogRE9NT3ZlcmZsb3dFdmVudC5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJODU5ODlEQ0YwQUNDOEJCRDAwQTBCQzUxIC8qIERPTU92ZXJmbG93RXZlbnRJbnRlcm5hbC5o
IGluIEhlYWRlcnMgKi8sCkBAIC0yMjUwMyw2ICsyMjYzMSw3IEBACiAJCQkJQkNDRDc0REMwQTRD
OEQzNTAwNUZEQTZEIC8qIEhUTUxWaWV3U291cmNlRG9jdW1lbnQuaCBpbiBIZWFkZXJzICovLAog
CQkJCTk3N0IzODdBMTIyODgzRTkwMEI4MUZGOCAvKiBIVE1MVmlld1NvdXJjZVBhcnNlci5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJNTE0Qzc2NzEwQ0U5MjNBMTAwN0VGM0NEIC8qIEhUVFBIZWFkZXJN
YXAuaCBpbiBIZWFkZXJzICovLAorCQkJCTA3M0FCNEI4MTdGOTJFQ0YwMDZFMEQ2RiAvKiBKU0Nh
cGFiaWxpdHlSYW5nZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTE0Qzc2NzMwQ0U5MjNBMTAwN0VG
M0NEIC8qIEhUVFBQYXJzZXJzLmggaW4gSGVhZGVycyAqLywKIAkJCQkzNzVDRDIzMjExOUQ0M0M4
MDBBMkE4NTkgLyogSHlwaGVuYXRpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCUIyNzUzNTZFMEIw
NTM4MTQwMDJDRTY0RiAvKiBJY29uLmggaW4gSGVhZGVycyAqLywKQEAgLTIyNjA4LDYgKzIyNzM3
LDcgQEAKIAkJCQk3QTI0NTg3QzEwMjFFQUY0MDAwQTAwQUEgLyogSW5zcGVjdG9yRE9NQWdlbnQu
aCBpbiBIZWFkZXJzICovLAogCQkJCUYzRDRDNDc5MTJFMDc2NjMwMDNEQTE1MCAvKiBJbnNwZWN0
b3JET01EZWJ1Z2dlckFnZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQk3QTc0RUNCQjEwMTgzOUE2
MDBCRjkzOUUgLyogSW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50LmggaW4gSGVhZGVycyAqLywKKwkJ
CQkwNzA1ODUzNDE3RkRFNkQ5MDA1RjJCQ0IgLyogSlNNZWRpYVRyYWNrQ29uc3RyYWludHMuaCBp
biBIZWFkZXJzICovLAogCQkJCTU3OERBMjBFMTUyMEVCOEMwMDYxNDFDMSAvKiBJbnNwZWN0b3JG
cm9udGVuZC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMjI3Nzc3NjAxMzQ1REVBOTAwOEVBNDU1IC8q
IEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRjM0NEM3MTQx
MTI1QjgyQzAwRjI2RUVFIC8qIEluc3BlY3RvckZyb250ZW5kQ2xpZW50LmggaW4gSGVhZGVycyAq
LywKQEAgLTIzMDcyLDYgKzIzMjAyLDcgQEAKIAkJCQlCMkZBM0REQjBBQjc1QTZGMDAwRTVBQzQg
LyogSlNTVkdQYXRoU2VnTGlzdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjJGQTNEREQwQUI3NUE2
RjAwMEU1QUM0IC8qIEpTU1ZHUGF0aFNlZ01vdmV0b0Ficy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
QjJGQTNEREYwQUI3NUE2RjAwMEU1QUM0IC8qIEpTU1ZHUGF0aFNlZ01vdmV0b1JlbC5oIGluIEhl
YWRlcnMgKi8sCisJCQkJMDcwNTg1MjExN0ZEQzE0MDAwNUYyQkNCIC8qIE1lZGlhVHJhY2tDb25z
dHJhaW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlCMkZBM0RFMTBBQjc1QTZGMDAwRTVBQzQgLyog
SlNTVkdQYXR0ZXJuRWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODU0MkE3OTUwQUU1Qzk0
MTAwREY1OERGIC8qIEpTU1ZHUG9pbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUIyRkEzREUzMEFC
NzVBNkYwMDBFNUFDNCAvKiBKU1NWR1BvaW50TGlzdC5oIGluIEhlYWRlcnMgKi8sCkBAIC0yMzU1
OCw2ICsyMzY4OSw3IEBACiAJCQkJNDM5MDQ2RTIxMkRBMjVFODAwQUY4MEEyIC8qIFJlbmRlck1h
dGhNTFJvb3QuaCBpbiBIZWFkZXJzICovLAogCQkJCTQzOTA0NkU0MTJEQTI1RTgwMEFGODBBMiAv
KiBSZW5kZXJNYXRoTUxSb3cuaCBpbiBIZWFkZXJzICovLAogCQkJCTQzOTA0NkU2MTJEQTI1RTgw
MEFGODBBMiAvKiBSZW5kZXJNYXRoTUxTcXVhcmVSb290LmggaW4gSGVhZGVycyAqLywKKwkJCQkw
NzgzMjI4NTE4MDEzRUQ4MDA5OTlFMEMgLyogTWVkaWFTdHJlYW1BdWRpb1NvdXJjZS5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJNDM5MDQ2RTgxMkRBMjVFODAwQUY4MEEyIC8qIFJlbmRlck1hdGhNTFNj
cmlwdHMuaCBpbiBIZWFkZXJzICovLAogCQkJCTQzOTA0NkVBMTJEQTI1RTgwMEFGODBBMiAvKiBS
ZW5kZXJNYXRoTUxVbmRlck92ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUU0QzI3OTU5MENGOTc0
MTkwMEU5N0I5OCAvKiBSZW5kZXJNZWRpYS5oIGluIEhlYWRlcnMgKi8sCkBAIC0yMzU3OCw2ICsy
MzcxMCw3IEBACiAJCQkJQTg3MURGRTMwQTE1Mzc2QjAwQjEyQTY4IC8qIFJlbmRlclJlcGxhY2Vk
LmggaW4gSGVhZGVycyAqLywKIAkJCQlCQ0E4NDZENzBEQzY3QTM1MDAyNkMzMDkgLyogUmVuZGVy
UmVwbGljYS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMTQ3OUZBRUUxMDlBRTM3NTAwREVENjU1IC8q
IFJlbmRlclJ1YnkuaCBpbiBIZWFkZXJzICovLAorCQkJCTA3MDU4NTA4MTdGQTQ2ODkwMDVGMkJD
QiAvKiBBbGxBdWRpb0NhcGFiaWxpdGllcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMTQ3OUZBRjAx
MDlBRTM3NTAwREVENjU1IC8qIFJlbmRlclJ1YnlCYXNlLmggaW4gSGVhZGVycyAqLywKIAkJCQkx
NDc5RkFGMjEwOUFFMzc1MDBERUQ2NTUgLyogUmVuZGVyUnVieVJ1bi5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJMTQ3OUZBRjQxMDlBRTM3NTAwREVENjU1IC8qIFJlbmRlclJ1YnlUZXh0LmggaW4gSGVh
ZGVycyAqLywKQEAgLTIzNjYwLDYgKzIzNzkzLDcgQEAKIAkJCQk5NzNFMzI1NzEwODgzQjdDMDA1
QkM0OTMgLyogUmVzb3VyY2VMb2FkTm90aWZpZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUU0Mjk1
RkE0MTJCMDYxNEUwMEQxQUNFMCAvKiBSZXNvdXJjZUxvYWRQcmlvcml0eS5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJRDBDRTU4RjkxMjVFNENDMjAwRjNGMTk5IC8qIFJlc291cmNlTG9hZFNjaGVkdWxl
ci5oIGluIEhlYWRlcnMgKi8sCisJCQkJMDdDNTlCNzYxN0Y3RDBEQjAwMEZCQ0JCIC8qIENhcGFi
aWxpdHlSYW5nZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOEE4MUJGODUxMURDRkQ5MDAwREEyQjk4
IC8qIFJlc291cmNlTG9hZFRpbWluZy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJN0VFNjg0NkQxMkQy
NkUzODAwRTc5NDE1IC8qIFJlc291cmNlUmVxdWVzdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTE0
Qzc2N0QwQ0U5MjNBMTAwN0VGM0NEIC8qIFJlc291cmNlUmVxdWVzdEJhc2UuaCBpbiBIZWFkZXJz
ICovLApAQCAtMjM5NjksNiArMjQxMDMsNyBAQAogCQkJCTA3OEUwOTM4MTdEMTZCMkMwMDQyMEFB
MSAvKiBNZWRpYVN0cmVhbVNvdXJjZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjIyMjc5QjEwRDAw
QkYyMjAwNzFCNzgyIC8qIFNWR0Rlc2NFbGVtZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlCNUI3
QTE3MTE3QzEwQUMwMDBFNEFBMEEgLyogRWxlbWVudERhdGEuaCBpbiBIZWFkZXJzICovLAorCQkJ
CTA3MDU4NTBCMTdGQTQ4MjcwMDVGMkJDQiAvKiBNZWRpYVN0cmVhbUNhcGFiaWxpdGllcy5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJQjIyMjc5QjQwRDAwQkYyMjAwNzFCNzgyIC8qIFNWR0RvY3VtZW50
LmggaW4gSGVhZGVycyAqLywKIAkJCQlCMjhDNkEyODBEMDBDNDQ4MDAzMzRBQTQgLyogU1ZHRG9j
dW1lbnRFeHRlbnNpb25zLmggaW4gSGVhZGVycyAqLywKIAkJCQlCMjIyNzlCNzBEMDBCRjIyMDA3
MUI3ODIgLyogU1ZHRWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCkBAIC0yNDA0Myw2ICsyNDE3OCw3
IEBACiAJCQkJNzEzNDQ5NkUxNDY5NDFCMzAwNzIwMzEyIC8qIFNWR0xlbmd0aENvbnRleHQuaCBp
biBIZWFkZXJzICovLAogCQkJCUIyMjI3QTM2MEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdMZW5ndGhM
aXN0LmggaW4gSGVhZGVycyAqLywKIAkJCQlCMjIyN0EzOTBEMDBCRjIyMDA3MUI3ODIgLyogU1ZH
TGluZWFyR3JhZGllbnRFbGVtZW50LmggaW4gSGVhZGVycyAqLywKKwkJCQkwN0M1OUI2OTE3Rjc4
NEJBMDAwRkJDQkIgLyogTWVkaWFTb3VyY2VTdGF0ZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCUIy
MjI3QTNDMEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdMaW5lRWxlbWVudC5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJMDgxMDc2NDQxMjgyODU1NjAwN0M2M0JBIC8qIFNWR0xpc3RQcm9wZXJ0eS5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJMDg4QTBFMDkxMjZFRjFEQjAwOTc4RjdBIC8qIFNWR0xpc3RQcm9wZXJ0
eVRlYXJPZmYuaCBpbiBIZWFkZXJzICovLApAQCAtMjQyMzIsNiArMjQzNjgsNyBAQAogCQkJCUU0
NDYxM0IwMENENjMzMTAwMEZBREE3NSAvKiBUaW1lUmFuZ2VzLmggaW4gSGVhZGVycyAqLywKIAkJ
CQk0OUU5MTJBRTBFRkFDOTA2MDA5RDBDQUYgLyogVGltaW5nRnVuY3Rpb24uaCBpbiBIZWFkZXJz
ICovLAogCQkJCTA3MDMzNEQ3MTQ1OUZGRDUwMDhEOEQ0NSAvKiBUcmFja0Jhc2UuaCBpbiBIZWFk
ZXJzICovLAorCQkJCTA3MDU4NEZEMTdGOUQ2REYwMDVGMkJDQiAvKiBNZWRpYVN0cmVhbVNvdXJj
ZUNhcGFiaWxpdGllcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkU4OEUwQzIxNzE1Q0UyNjAwNjU4
RDk4IC8qIFRyYWNrTGlzdEJhc2UuaCBpbiBIZWFkZXJzICovLAogCQkJCUNEM0E0OTVGMTdBOUQw
MUIwMDI3NEU0MiAvKiBNZWRpYVNvdXJjZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDlFOTExQzQw
RUY4NkQ0NzAwOUQwQ0FGIC8qIFRyYW5zZm9ybWF0aW9uTWF0cml4LmggaW4gSGVhZGVycyAqLywK
QEAgLTI0Mjg1LDYgKzI0NDIyLDcgQEAKIAkJCQlCRTg4RTBFMjE3MTVEMkEyMDA2NThEOTggLyog
VmlkZW9UcmFja0xpc3QuaCBpbiBIZWFkZXJzICovLAogCQkJCUU0QzkxQTBFMTgwMjM0MzEwMEEx
N0Y2RCAvKiBUZXh0UGFpbnRTdHlsZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkVGMjlFRUMxNzE1
REQwOTAwQzRCNEM5IC8qIFZpZGVvVHJhY2tQcml2YXRlLmggaW4gSGVhZGVycyAqLywKKwkJCQkw
NzA1ODUxQjE3RkI0NEI0MDA1RjJCQ0IgLyogSlNBbGxBdWRpb0NhcGFiaWxpdGllcy5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJQ0VGNDE4Q0YxMTc5Njc4QzAwOUQxMTJDIC8qIFZpZXdwb3J0QXJndW1l
bnRzLmggaW4gSGVhZGVycyAqLywKIAkJCQkzRkZGRjlBRTE1OUQ5QjA2MDAyMEJCRDUgLyogVmll
d3BvcnRTdHlsZVJlc29sdmVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk5MzMwOUUyMDA5OUU2NDky
MDA1NkU1ODEgLyogVmlzaWJsZVBvc2l0aW9uLmggaW4gSGVhZGVycyAqLywKQEAgLTI0NDc0LDYg
KzI0NjEyLDcgQEAKIAkJCQk4M0MxRDQyODE3OEQ1QUI0MDAxNDFFNjggLyogU1ZHUGF0aFNlZ0N1
cnZldG9DdWJpY1JlbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODNDMUQ0MjkxNzhENUFCNDAwMTQx
RTY4IC8qIFNWR1BhdGhTZWdDdXJ2ZXRvQ3ViaWNTbW9vdGhBYnMuaCBpbiBIZWFkZXJzICovLAog
CQkJCTgzQzFENDJBMTc4RDVBQjQwMDE0MUU2OCAvKiBTVkdQYXRoU2VnQ3VydmV0b0N1YmljU21v
b3RoUmVsLmggaW4gSGVhZGVycyAqLywKKwkJCQkwN0M1OUI3MjE3Rjc5QzdDMDAwRkJDQkIgLyog
SlNNZWRpYVNvdXJjZVN0YXRlcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODNDMUQ0MkIxNzhENUFC
NDAwMTQxRTY4IC8qIFNWR1BhdGhTZWdDdXJ2ZXRvUXVhZHJhdGljQWJzLmggaW4gSGVhZGVycyAq
LywKIAkJCQk4M0MxRDQyQzE3OEQ1QUI1MDAxNDFFNjggLyogU1ZHUGF0aFNlZ0N1cnZldG9RdWFk
cmF0aWNSZWwuaCBpbiBIZWFkZXJzICovLAogCQkJCTgzQzFENDJEMTc4RDVBQjUwMDE0MUU2OCAv
KiBTVkdQYXRoU2VnQ3VydmV0b1F1YWRyYXRpY1Ntb290aEFicy5oIGluIEhlYWRlcnMgKi8sCkBA
IC0yNDk1OSw2ICsyNTA5OCw3IEBACiAJCQkJRkQzMTYwMjQxMkIwMjY3NjAwQzFBMzU5IC8qIEJp
cXVhZERTUEtlcm5lbC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlGREM1NEYwNDEzOTlCMERBMDA4
RDkxMTcgLyogQmlxdWFkRmlsdGVyTm9kZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlGRDMxNjAy
NjEyQjAyNjc2MDBDMUEzNTkgLyogQmlxdWFkUHJvY2Vzc29yLmNwcCBpbiBTb3VyY2VzICovLAor
CQkJCTA3MDU4NEZGMTdGOUYwNUUwMDVGMkJDQiAvKiBDYXBhYmlsaXR5UmFuZ2UuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJQTg5OTQzMjkwQjQyMzM4ODAwRDdDODAyIC8qIEJpdG1hcEltYWdlLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCTM3N0EzQTkwMTVFRkNFOUIwMDU5RjVDNyAvKiBCaXRtYXBJ
bWFnZUNHLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTk3NkQ2Qzc4MTIyQjhBM0QwMDFGRDFGNyAv
KiBCbG9iLmNwcCBpbiBTb3VyY2VzICovLApAQCAtMjUyNjIsNiArMjU0MDIsNyBAQAogCQkJCTg1
Q0E5NzVEMEE5NjJFNTQwMDY5MENDRiAvKiBET01Eb2N1bWVudFR5cGUubW0gaW4gU291cmNlcyAq
LywKIAkJCQk4NTE4RENFQTBBOUNDODBEMDA5MUI3QTYgLyogRE9NRE9NSW1wbGVtZW50YXRpb24u
bW0gaW4gU291cmNlcyAqLywKIAkJCQk1MkNDQTlFOTE1RTNGNjRDMDA1M0M3N0YgLyogRE9NRE9N
TmFtZWRGbG93Q29sbGVjdGlvbi5tbSBpbiBTb3VyY2VzICovLAorCQkJCTA3ODMyMjg0MTgwMTNF
RDgwMDk5OUUwQyAvKiBNZWRpYVN0cmVhbUF1ZGlvU291cmNlLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCTJEOUEyNDczMTVCOUMyRDEwMEQzNDUyNyAvKiBET01ET01TZWN1cml0eVBvbGljeS5tbSBp
biBTb3VyY2VzICovLAogCQkJCTc2OTQ1NjVDMTIxNERCNjMwMDA3Q0JBRSAvKiBET01ET01Ub2tl
bkxpc3QubW0gaW4gU291cmNlcyAqLywKIAkJCQk3QUFCQTI1OTE0QkM2MTMzMDBBQTlBMTEgLyog
RE9NRWRpdG9yLmNwcCBpbiBTb3VyY2VzICovLApAQCAtMjUyODIsNiArMjU0MjMsNyBAQAogCQkJ
CTg1OUE5QzQ4MEFBNUUzQkQwMEI2OTRCMiAvKiBET01IVE1MQmFzZUVsZW1lbnQubW0gaW4gU291
cmNlcyAqLywKIAkJCQkwNzhFMDkwNDE3RDE0Q0VFMDA0MjBBQTEgLyogTmF2aWdhdG9yTWVkaWFT
dHJlYW0uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJODVFQ0JFRUUwQUE3NjI2OTAwNTQ0RjBCIC8q
IERPTUhUTUxCYXNlRm9udEVsZW1lbnQubW0gaW4gU291cmNlcyAqLywKKwkJCQkwN0M1OUI2ODE3
Rjc4NEJBMDAwRkJDQkIgLyogTWVkaWFTb3VyY2VTdGF0ZXMuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJODU5QTlDNEEwQUE1RTNCRDAwQjY5NEIyIC8qIERPTUhUTUxCb2R5RWxlbWVudC5tbSBpbiBT
b3VyY2VzICovLAogCQkJCTg1MTgzQjQzMEFBNjkyNjEwMEYxOUZBMyAvKiBET01IVE1MQlJFbGVt
ZW50Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJODVCQTRDREUwQUE2ODYxQjAwODgwNTJEIC8qIERP
TUhUTUxCdXR0b25FbGVtZW50Lm1tIGluIFNvdXJjZXMgKi8sCkBAIC0yNTI4OSw2ICsyNTQzMSw3
IEBACiAJCQkJODVERjJGOEYwQUEzQzg4MTAwQUQ2NEM1IC8qIERPTUhUTUxDb2xsZWN0aW9uLm1t
IGluIFNvdXJjZXMgKi8sCiAJCQkJMDc4RTA5MDAxN0QxNENFRTAwNDIwQUExIC8qIE1lZGlhU3Ry
ZWFtRXZlbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRjVDMDQxRTQwRkZDQTk2RDAwODM5RDRB
IC8qIERPTUhUTUxEYXRhTGlzdEVsZW1lbnQubW0gaW4gU291cmNlcyAqLywKKwkJCQkwNzA1ODUy
MzE3RkRDMTQwMDA1RjJCQ0IgLyogTWVkaWFUcmFja0NvbnN0cmFpbnRzLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCUQzNTlENzkyMTI5Q0EzQzAwMDA2RTVEMiAvKiBET01IVE1MRGV0YWlsc0VsZW1l
bnQubW0gaW4gU291cmNlcyAqLywKIAkJCQk4NUJBNEQwQzBBQTY4ODY4MDA4ODA1MkQgLyogRE9N
SFRNTERpcmVjdG9yeUVsZW1lbnQubW0gaW4gU291cmNlcyAqLywKIAkJCQk4NUJBNEQwRTBBQTY4
ODY4MDA4ODA1MkQgLyogRE9NSFRNTERpdkVsZW1lbnQubW0gaW4gU291cmNlcyAqLywKQEAgLTI1
NzQwLDYgKzI1ODgzLDcgQEAKIAkJCQlCMjc1MzU4RTBCMDUzQTY2MDAyQ0U2NEYgLyogSWNvbk1h
Yy5tbSBpbiBTb3VyY2VzICovLAogCQkJCTUxRTFFQ0MwMEM5MUM5MDQwMERDMjU1QiAvKiBJY29u
UmVjb3JkLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTQ1MDk5QzQxMTM3MEE3ODAwMDU4RDUxMyAv
KiBJY29uVVJMLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTA3MDU4NTE1MTdGQjBFRUEwMDVGMkJD
QiAvKiBNZWRpYVN0cmVhbUNhcGFiaWxpdGllcy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlDNTg1
QTY2MjExRDRGQUM1MDA0QzNFNEIgLyogSURCQmluZGluZ1V0aWxpdGllcy5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQk5NzEyQTVDNTE1MDA0RURBMDA0OEFGMTAgLyogSURCRGF0YWJhc2VDYWxsYmFj
a3NJbXBsLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTk3MTJBNUM5MTUwMDRFREEwMDQ4QUYxMCAv
KiBJREJEYXRhYmFzZUV4Y2VwdGlvbi5jcHAgaW4gU291cmNlcyAqLywKQEAgLTI1NzQ3LDYgKzI1
ODkxLDcgQEAKIAkJCQk5NzEyQTVFRjE1MDA0RURBMDA0OEFGMTAgLyogSURCUGVuZGluZ1RyYW5z
YWN0aW9uTW9uaXRvci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk5NzEyQTVGRTE1MDA0RURBMDA0
OEFGMTAgLyogSURCVmVyc2lvbkNoYW5nZUV2ZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTFB
NzFENTdCMEYzMzgxOTAwMEY5Q0U0RSAvKiBJZGVudGlmaWVyUmVwLmNwcCBpbiBTb3VyY2VzICov
LAorCQkJCTA3MDU4NTMxMTdGREU2RDkwMDVGMkJDQiAvKiBKU01lZGlhVHJhY2tDb25zdHJhaW50
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTU5MTNBMjQxMTNENDlFQkEwMEY1QjA1QyAvKiBJZGVu
dGlmaWVyc0ZhY3RvcnkuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQzNDRjE3QTQxNUIwMDYzRjAw
Mjc2RDM5IC8qIElkVGFyZ2V0T2JzZXJ2ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQzNDRjE3
QTYxNUIwMDYzRjAwMjc2RDM5IC8qIElkVGFyZ2V0T2JzZXJ2ZXJSZWdpc3RyeS5jcHAgaW4gU291
cmNlcyAqLywKQEAgLTI1OTE2LDYgKzI2MDYxLDcgQEAKIAkJCQk1MUVDOTI2NTBDRTkwREQ0MDBG
OTAzMDggLyogSlNDdXN0b21TUUxTdGF0ZW1lbnRFcnJvckNhbGxiYWNrLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCUUxMEI5M0MzMEI3M0MyOTEwMDNFRDg5MCAvKiBKU0N1c3RvbVhQYXRoTlNSZXNv
bHZlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxQUU4MkY4RjBDQUFGQTlEMDAyMjM3QUUgLyog
SlNEYXRhYmFzZS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkwN0M1OUI2RTE3Rjc5NEY2MDAwRkJD
QkIgLyogSlNNZWRpYVNvdXJjZVN0YXRlc0N1c3RvbS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlC
NTlERDY5QTExOTAyOUU1MDA3RTk2ODQgLyogSlNEYXRhYmFzZUNhbGxiYWNrLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCUI1OENFQjZBMTE5MTM2MDcwMDJBNjc5MCAvKiBKU0RhdGFiYXNlU3luYy5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQk0MTYyQTQ1NzEwMTE0NjQ3MDBERkYzRUQgLyogSlNEZWRp
Y2F0ZWRXb3JrZXJHbG9iYWxTY29wZS5jcHAgaW4gU291cmNlcyAqLywKQEAgLTI2MDQ0LDYgKzI2
MTkwLDcgQEAKIAkJCQkxQUUyQUEyRTBBMUNEQUI0MDBCNDJCMjUgLyogSlNIVE1MSGVhZGluZ0Vs
ZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMUFFMkFBMzAwQTFDREFCNDAwQjQyQjI1IC8q
IEpTSFRNTEhSRWxlbWVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxQTg1QjE4RjBBMUIxOEEy
MDBEOEM4N0MgLyogSlNIVE1MSHRtbEVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMDcw
NTg1MzgxN0ZFMDQ0RjAwNUYyQkNCIC8qIE1lZGlhVHJhY2tDb25zdHJhaW50U2V0LmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCUJDNDkxOEM4MEJGRUEwNTAwMDlENjMxNiAvKiBKU0hUTUxJRnJhbWVF
bGVtZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTFBRTJBQTk3MEExQ0REMkQwMEI0MkIyNSAv
KiBKU0hUTUxJbWFnZUVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTgwRTdFOTgwQTFB
ODNFMzAwN0ZCOEM1IC8qIEpTSFRNTElucHV0RWxlbWVudC5jcHAgaW4gU291cmNlcyAqLywKQEAg
LTI2MTYwLDYgKzI2MzA3LDcgQEAKIAkJCQk3RTQ2RjZGQTE2MjdBMkNBMDAwNjIyMjMgLyogSlNP
RVNFbGVtZW50SW5kZXhVaW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTkwMDE3ODgwMTJFMDM3
MDcwMDY0ODQ2MiAvKiBKU09FU1N0YW5kYXJkRGVyaXZhdGl2ZXMuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJNkVCRjBFNzYxMkE5ODY4ODAwREIxNzA5IC8qIEpTT0VTVGV4dHVyZUZsb2F0LmNwcCBp
biBTb3VyY2VzICovLAorCQkJCTA3MDU4NTNBMTdGRTA3NzAwMDVGMkJDQiAvKiBNZWRpYVRyYWNr
Q29uc3RyYWludC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBMzFDNEU1MjE2RTAyQjA4MDAyRjc5
NTcgLyogSlNPRVNUZXh0dXJlSGFsZkZsb2F0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTc3QTE3
QUE2MTJGMjhCMkEwMDRFMDJGNiAvKiBKU09FU1ZlcnRleEFycmF5T2JqZWN0LmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCUZERjZCQUY4MTM0QTRDOTgwMDgyMjkyMCAvKiBKU09mZmxpbmVBdWRpb0Nv
bXBsZXRpb25FdmVudC5jcHAgaW4gU291cmNlcyAqLywKQEAgLTI2NTAyLDYgKzI2NjUwLDcgQEAK
IAkJCQk5ODVCQjk2RDEzQTk0MDU4MDA3QTBCNjkgLyogTGlua1JlbEF0dHJpYnV0ZS5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQlCQzdGQTYyMDBEMUYwQ0JEMDBEQjIyQTkgLyogTGl2ZU5vZGVMaXN0
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTA3OEUwOTEwMTdEMTRDRUUwMDQyMEFBMSAvKiBSVENT
dGF0c1Jlc3BvbnNlLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTA3MDU4NTAyMTdGQTEwRDAwMDVG
MkJDQiAvKiBKU0FsbFZpZGVvQ2FwYWJpbGl0aWVzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTk3
NTlFOTNFMTRFRjFDRjgwMDI2QTJERCAvKiBMb2FkYWJsZVRleHRUcmFjay5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQk2NTZEMzczMzBBREJBNURFMDBBNDU1NEQgLyogTG9hZGVyTlNVUkxFeHRyYXMu
bW0gaW4gU291cmNlcyAqLywKIAkJCQk3RUU2ODQ2ODEyRDI2RTM4MDBFNzk0MTUgLyogTG9hZGVy
UnVuTG9vcENGLmNwcCBpbiBTb3VyY2VzICovLApAQCAtMjY1MTQsNiArMjY2NjMsNyBAQAogCQkJ
CUJDMjVCNTJBMTMxQzZEMzkwMDE4MEUxMCAvKiBMb2NhbGl6ZWRTdHJpbmdzTWFjLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCUJDRTFDNDFDMEQ5ODI5ODEwMDNCMDJGMiAvKiBMb2NhdGlvbi5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQkwNzhFMDkwODE3RDE0Q0VFMDA0MjBBQTEgLyogUlRDRFRNRlRv
bmVDaGFuZ2VFdmVudC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkwNzA1ODUxQTE3RkI0NEI0MDA1
RjJCQ0IgLyogSlNBbGxBdWRpb0NhcGFiaWxpdGllcy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlB
ODIzOUUwMDA5QjNDRjhBMDBCNjA2NDEgLyogTG9nZ2luZy5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQkxNDAyNjQ1RTBBRkRDMTlCMDA1OTE5RTIgLyogTG9nZ2luZ01hYy5tbSBpbiBTb3VyY2VzICov
LAogCQkJCTFBOEY2QkM1MERCNTVDREMwMDFEQjc5NCAvKiBNYW5pZmVzdFBhcnNlci5jcHAgaW4g
U291cmNlcyAqLywKQEAgLTI2NTgwLDYgKzI2NzMwLDcgQEAKIAkJCQlENkUyNzZBRjE0NjM3NDU1
MDAxRDI4MEEgLyogTXV0YXRpb25PYnNlcnZlclJlZ2lzdHJhdGlvbi5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQlDNkYwOEZCQzE0MzBGRThGMDA2ODU4NDkgLyogTXV0YXRpb25SZWNvcmQuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJNTJCNkM5QzUxNUUzRjRERjAwNjkwQjA1IC8qIE5hbWVkRmxvd0Nv
bGxlY3Rpb24uY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMDcwNTg1MzMxN0ZERTZEOTAwNUYyQkNC
IC8qIEpTTWVkaWFUcmFja0NvbnN0cmFpbnRzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUJDRjM0
QTM3MTFBMjMxQ0QwMEM3MTgwNCAvKiBOYW1lZE5vZGVNYXAuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJQTgxODcyMjQwOTc3RDNDMDAwNTgyNkQ5IC8qIE5hbWVOb2RlTGlzdC5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQlFMTBCOUI2RDBCNzQ3NTk5MDAzRUQ4OTAgLyogTmF0aXZlWFBhdGhOU1Jlc29s
dmVyLmNwcCBpbiBTb3VyY2VzICovLApAQCAtMjY4NDAsNiArMjY5OTEsNyBAQAogCQkJCTkzNEY3
MTNFMEQ1QTZGMjgwMDAxOEQ2OSAvKiBSZXNvdXJjZUVycm9yQmFzZS5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQk3RUU2ODQ2QjEyRDI2RTM4MDBFNzk0MTUgLyogUmVzb3VyY2VFcnJvckNGLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCTUxNEM3NjUwMENFOTIzNEUwMDdFRjNDRCAvKiBSZXNvdXJjZUVy
cm9yTWFjLm1tIGluIFNvdXJjZXMgKi8sCisJCQkJMDcwNTg1MTIxN0ZBNzEwNzAwNUYyQkNCIC8q
IEpTTWVkaWFTdHJlYW1DYXBhYmlsaXRpZXMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTE0Qzc2
NzgwQ0U5MjNBMTAwN0VGM0NEIC8qIFJlc291cmNlSGFuZGxlLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCTdFRTY4NDZDMTJEMjZFMzgwMEU3OTQxNSAvKiBSZXNvdXJjZUhhbmRsZUNGTmV0LmNwcCBp
biBTb3VyY2VzICovLAogCQkJCUUxQkEwMDMxMTZGQjkyQUMwMEJBN0EzNSAvKiBSZXNvdXJjZUhh
bmRsZUNsaWVudC5jcHAgaW4gU291cmNlcyAqLywKQEAgLTI3MTQxLDYgKzI3MjkzLDcgQEAKIAkJ
CQlCMjIyNzlDNDBEMDBCRjIyMDA3MUI3ODIgLyogU1ZHRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJl
ZC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCMjIyNzlDNzBEMDBCRjIyMDA3MUI3ODIgLyogU1ZH
RkVCbGVuZEVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQjIyMjc5Q0EwRDAwQkYyMjAw
NzFCNzgyIC8qIFNWR0ZFQ29sb3JNYXRyaXhFbGVtZW50LmNwcCBpbiBTb3VyY2VzICovLAorCQkJ
CTA3MDU4NTM1MTdGREU2RDkwMDVGMkJDQiAvKiBKU01lZGlhVHJhY2tDb25zdHJhaW50U2V0LmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCUIyMjI3OUNEMEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdGRUNv
bXBvbmVudFRyYW5zZmVyRWxlbWVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCMjIyNzlEMDBE
MDBCRjIyMDA3MUI3ODIgLyogU1ZHRkVDb21wb3NpdGVFbGVtZW50LmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCTE5MjEzMjc0MTFDMEU2QkIwMDQ1NjIzOCAvKiBTVkdGRUNvbnZvbHZlTWF0cml4RWxl
bWVudC5jcHAgaW4gU291cmNlcyAqLywKQEAgLTI3MjAzLDYgKzI3MzU2LDcgQEAKIAkJCQlCMjIy
N0EzQjBEMDBCRjIyMDA3MUI3ODIgLyogU1ZHTGluZUVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJQjIyMjdBNDAwRDAwQkYyMjAwNzFCNzgyIC8qIFNWR0xvY2F0YWJsZS5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQlCMjIyN0E0MzBEMDBCRjIyMDA3MUI3ODIgLyogU1ZHTWFya2VyRWxlbWVu
dC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkwNzA1ODUxNzE3RkI0MEU5MDA1RjJCQ0IgLyogSlNN
ZWRpYVN0cmVhbUNhcGFiaWxpdGllc0N1c3RvbS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCMjIy
N0E0NjBEMDBCRjIyMDA3MUI3ODIgLyogU1ZHTWFza0VsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJQjIyMjdBNEEwRDAwQkYyMjAwNzFCNzgyIC8qIFNWR01ldGFkYXRhRWxlbWVudC5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQlCMkExRjJCMDBDRUYwQUJGMDA0NDJGNkEgLyogU1ZHTWlzc2lu
Z0dseXBoRWxlbWVudC5jcHAgaW4gU291cmNlcyAqLywKQEAgLTI3MjY2LDYgKzI3NDIwLDcgQEAK
IAkJCQlCMjIyN0FGMjBEMDBCRjIyMDA3MUI3ODIgLyogU1ZHVmlld1NwZWMuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJODQ4NTIyOEExMTkwMTczQzAwNkVEQzdGIC8qIFNWR1ZLZXJuRWxlbWVudC5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQlCMjIyN0FGNTBEMDBCRjIyMDA3MUI3ODIgLyogU1ZHWm9v
bUFuZFBhbi5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkwNzNBQjRCNzE3RjkyRUNGMDA2RTBENkYg
LyogSlNDYXBhYmlsaXR5UmFuZ2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQjJFNEVDOTcwRDAw
QzIyQjAwNDMyNjQzIC8qIFNWR1pvb21FdmVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlFMTgw
ODExMjE2RkNGNDJGMDBCODBEMDcgLyogU3luY2hyb25vdXNMb2FkZXJDbGllbnQuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJRTE4MDgxMTYxNkZDRjlDQjAwQjgwRDA3IC8qIFN5bmNocm9ub3VzTG9h
ZGVyQ2xpZW50Lm1tIGluIFNvdXJjZXMgKi8sCkBAIC0yNzQ0Niw2ICsyNzYwMSw3IEBACiAJCQkJ
OTdBQUJEMUExNEZBMDlENTAwNzQ1N0FFIC8qIFdlYlNvY2tldC5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQk5N0FBQkQxRDE0RkEwOUQ1MDA3NDU3QUUgLyogV2ViU29ja2V0Q2hhbm5lbC5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQk0QTM4QkY1MDE0RkUxQzA5MDA2MTI1MTIgLyogV2ViU29ja2V0RGVm
bGF0ZUZyYW1lci5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkwN0M1OUI3MTE3Rjc5QzdDMDAwRkJD
QkIgLyogSlNNZWRpYVNvdXJjZVN0YXRlcy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk5N0FBQkQy
MDE0RkEwOUQ1MDA3NDU3QUUgLyogV2ViU29ja2V0RGVmbGF0ZXIuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJOTdBQUJEMjIxNEZBMDlENTAwNzQ1N0FFIC8qIFdlYlNvY2tldEV4dGVuc2lvbkRpc3Bh
dGNoZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNEE1QTJBREIxNjFFN0UwMDAwNTg4OUREIC8q
IFdlYlNvY2tldEV4dGVuc2lvblBhcnNlci5jcHAgaW4gU291cmNlcyAqLywKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTWVkaWFTb3VyY2VTdGF0ZXNDdXN0b20uY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTWVkaWFTb3VyY2VTdGF0ZXND
dXN0b20uY3BwCShyZXZpc2lvbiAwKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNN
ZWRpYVNvdXJjZVN0YXRlc0N1c3RvbS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw4OCBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBD
T01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENP
TVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaWYgRU5BQkxFKE1FRElBX1NUUkVB
TSkKKworI2luY2x1ZGUgIkpTTWVkaWFTb3VyY2VTdGF0ZXMuaCIKKworI2luY2x1ZGUgIk1lZGlh
U291cmNlU3RhdGVzLmgiCisKK3VzaW5nIG5hbWVzcGFjZSBKU0M7CisKK25hbWVzcGFjZSBXZWJD
b3JlIHsKKworSlNWYWx1ZSBKU01lZGlhU291cmNlU3RhdGVzOjp3aWR0aChFeGVjU3RhdGUqKSBj
b25zdAoreworICAgIGlmICghaW1wbCgpLT5oYXNWaWRlb1NvdXJjZSgpKQorICAgICAgICByZXR1
cm4ganNVbmRlZmluZWQoKTsKKworICAgIHJldHVybiBqc051bWJlcihpbXBsKCktPndpZHRoKCkp
OworfQorCitKU1ZhbHVlIEpTTWVkaWFTb3VyY2VTdGF0ZXM6OmhlaWdodChFeGVjU3RhdGUqKSBj
b25zdAoreworICAgIGlmICghaW1wbCgpLT5oYXNWaWRlb1NvdXJjZSgpKQorICAgICAgICByZXR1
cm4ganNVbmRlZmluZWQoKTsKKyAgICAKKyAgICByZXR1cm4ganNOdW1iZXIoaW1wbCgpLT5oZWln
aHQoKSk7Cit9CisKK0pTVmFsdWUgSlNNZWRpYVNvdXJjZVN0YXRlczo6ZnJhbWVSYXRlKEV4ZWNT
dGF0ZSopIGNvbnN0Cit7CisgICAgaWYgKCFpbXBsKCktPmhhc1ZpZGVvU291cmNlKCkpCisgICAg
ICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOworICAgIAorICAgIHJldHVybiBqc051bWJlcihpbXBs
KCktPmZyYW1lUmF0ZSgpKTsKK30KKworSlNWYWx1ZSBKU01lZGlhU291cmNlU3RhdGVzOjphc3Bl
Y3RSYXRpbyhFeGVjU3RhdGUqKSBjb25zdAoreworICAgIGlmICghaW1wbCgpLT5oYXNWaWRlb1Nv
dXJjZSgpKQorICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKKyAgICAKKyAgICByZXR1cm4g
anNOdW1iZXIoaW1wbCgpLT5hc3BlY3RSYXRpbygpKTsKK30KKworSlNWYWx1ZSBKU01lZGlhU291
cmNlU3RhdGVzOjpmYWNpbmdNb2RlKEV4ZWNTdGF0ZSogZXhlYykgY29uc3QKK3sKKyAgICBpZiAo
IWltcGwoKS0+aGFzVmlkZW9Tb3VyY2UoKSkKKyAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7
CisKKyAgICByZXR1cm4ganNTdHJpbmdXaXRoQ2FjaGUoZXhlYywgaW1wbCgpLT5mYWNpbmdNb2Rl
KCkpOworfQorCitKU1ZhbHVlIEpTTWVkaWFTb3VyY2VTdGF0ZXM6OnZvbHVtZShFeGVjU3RhdGUq
KSBjb25zdAoreworICAgIGlmIChpbXBsKCktPmhhc1ZpZGVvU291cmNlKCkpCisgICAgICAgIHJl
dHVybiBqc1VuZGVmaW5lZCgpOworICAgIAorICAgIHJldHVybiBqc051bWJlcihpbXBsKCktPnZv
bHVtZSgpKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTWVkaWFTdHJlYW1DYXBhYmlsaXRpZXNDdXN0b20u
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTWVkaWFTdHJl
YW1DYXBhYmlsaXRpZXNDdXN0b20uY3BwCShyZXZpc2lvbiAwKQorKysgU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNNZWRpYVN0cmVhbUNhcGFiaWxpdGllc0N1c3RvbS5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTAsMCArMSw1MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICog
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAq
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKwor
I2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCisKKyNpbmNsdWRlICJKU01lZGlhU3RyZWFtQ2FwYWJp
bGl0aWVzLmgiCisKKyNpbmNsdWRlICJKU0FsbEF1ZGlvQ2FwYWJpbGl0aWVzLmgiCisjaW5jbHVk
ZSAiSlNBbGxWaWRlb0NhcGFiaWxpdGllcy5oIgorI2luY2x1ZGUgIk1lZGlhU3RyZWFtQ2FwYWJp
bGl0aWVzLmgiCisKK3VzaW5nIG5hbWVzcGFjZSBKU0M7CisKK25hbWVzcGFjZSBXZWJDb3JlIHsK
KworSlNDOjpKU1ZhbHVlIHRvSlMoSlNDOjpFeGVjU3RhdGUqIGV4ZWMsIEpTRE9NR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIE1lZGlhU3RyZWFtQ2FwYWJpbGl0aWVzKiBvYmplY3QpCit7Cisg
ICAgaWYgKCFvYmplY3QpCisgICAgICAgIHJldHVybiBqc051bGwoKTsKKworICAgIGlmIChvYmpl
Y3QtPmhhc1ZpZGVvU291cmNlKCkpCisgICAgICAgIHJldHVybiB3cmFwPEpTQWxsVmlkZW9DYXBh
YmlsaXRpZXM+KGV4ZWMsIGdsb2JhbE9iamVjdCwgc3RhdGljX2Nhc3Q8QWxsVmlkZW9DYXBhYmls
aXRpZXMqPihvYmplY3QpKTsKKworICAgIHJldHVybiB3cmFwPEpTQWxsQXVkaW9DYXBhYmlsaXRp
ZXM+KGV4ZWMsIGdsb2JhbE9iamVjdCwgc3RhdGljX2Nhc3Q8QWxsQXVkaW9DYXBhYmlsaXRpZXMq
PihvYmplY3QpKTsKK30KKworI2VuZGlmIC8vIEVOQUJMRShNRURJQV9TVFJFQU0pCisKK30gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9FdmVudE5hbWVzLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50TmFtZXMuaAkocmV2aXNpb24g
MTU3MDE2KQorKysgU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50TmFtZXMuaAkod29ya2luZyBjb3B5
KQpAQCAtMjM4LDYgKzIzOCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICBtYWNybyhyZW1v
dmVzdHJlYW0pIFwKICAgICBtYWNybyhzaWduYWxpbmdzdGF0ZWNoYW5nZSkgXAogICAgIG1hY3Jv
KHJlbW92ZXRyYWNrKSBcCisgICAgbWFjcm8ob3ZlcmNvbnN0cmFpbmVkKSBcCiAgICAgbWFjcm8o
bXV0ZSkgXAogICAgIG1hY3JvKHVubXV0ZSkgXAogICAgIG1hY3JvKHN0YXJ0ZWQpIFwKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtQ2VudGVyLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRp
YVN0cmVhbUNlbnRlci5jcHAJKHJldmlzaW9uIDE1NzAxNikKKysrIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtQ2VudGVyLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtNjcsMTEgKzY3LDYgQEAgTWVkaWFTdHJlYW1DZW50ZXI6On5NZWRpYVN0cmVhbUNlbnRlcigp
CiB7CiB9CiAKLXZvaWQgTWVkaWFTdHJlYW1DZW50ZXI6OmVuZExvY2FsTWVkaWFTdHJlYW0oTWVk
aWFTdHJlYW1EZXNjcmlwdG9yKiBzdHJlYW1EZXNjcmlwdG9yKQotewotICAgIHN0cmVhbURlc2Ny
aXB0b3ItPnNldEVuZGVkKCk7Ci19Ci0KIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlm
IC8vIEVOQUJMRShNRURJQV9TVFJFQU0pCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
ZWRpYXN0cmVhbS9NZWRpYVN0cmVhbUNlbnRlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtQ2VudGVyLmgJKHJldmlzaW9uIDE1
NzAxNikKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlhU3RyZWFt
Q2VudGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTM0LDYgKzM0LDcgQEAKIAogI2lmIEVOQUJMRShN
RURJQV9TVFJFQU0pCiAKKyNpbmNsdWRlICJNZWRpYVN0cmVhbVNvdXJjZS5oIgogI2luY2x1ZGUg
PHd0Zi9QYXNzUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKQEAg
LTQzLDkgKzQ0LDExIEBAIGNsYXNzIE1lZGlhQ29uc3RyYWludHM7CiBjbGFzcyBNZWRpYVN0cmVh
bUNyZWF0aW9uQ2xpZW50OwogY2xhc3MgTWVkaWFTdHJlYW1DcmVhdGlvbkNsaWVudDsKIGNsYXNz
IE1lZGlhU3RyZWFtRGVzY3JpcHRvcjsKLWNsYXNzIE1lZGlhU3RyZWFtU291cmNlOworY2xhc3Mg
TWVkaWFTdHJlYW1Tb3VyY2VDYXBhYmlsaXRpZXM7CiBjbGFzcyBNZWRpYVN0cmVhbVRyYWNrU291
cmNlc1JlcXVlc3RDbGllbnQ7CiAKK3N0cnVjdCBNZWRpYVN0cmVhbVNvdXJjZVN0YXRlczsKKwog
Y2xhc3MgTWVkaWFTdHJlYW1DZW50ZXIgewogcHVibGljOgogICAgIHZpcnR1YWwgfk1lZGlhU3Ry
ZWFtQ2VudGVyKCk7CkBAIC01OSwxNCArNjIsNiBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIGJv
b2wgZ2V0TWVkaWFTdHJlYW1UcmFja1NvdXJjZXMoUGFzc1JlZlB0cjxNZWRpYVN0cmVhbVRyYWNr
U291cmNlc1JlcXVlc3RDbGllbnQ+KSA9IDA7CiAKLSAgICB2aXJ0dWFsIHZvaWQgZGlkU2V0TWVk
aWFTdHJlYW1UcmFja0VuYWJsZWQoTWVkaWFTdHJlYW1Tb3VyY2UqKSA9IDA7Ci0KLSAgICB2aXJ0
dWFsIGJvb2wgZGlkQWRkTWVkaWFTdHJlYW1UcmFjayhNZWRpYVN0cmVhbVNvdXJjZSopID0gMDsK
LSAgICB2aXJ0dWFsIGJvb2wgZGlkUmVtb3ZlTWVkaWFTdHJlYW1UcmFjayhNZWRpYVN0cmVhbVNv
dXJjZSopID0gMDsKLQotICAgIHZpcnR1YWwgdm9pZCBkaWRTdG9wTG9jYWxNZWRpYVN0cmVhbShN
ZWRpYVN0cmVhbURlc2NyaXB0b3IqKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGRpZENyZWF0ZU1l
ZGlhU3RyZWFtKE1lZGlhU3RyZWFtRGVzY3JpcHRvciopID0gMDsKLQogcHJvdGVjdGVkOgogICAg
IE1lZGlhU3RyZWFtQ2VudGVyKCk7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21l
ZGlhc3RyZWFtL01lZGlhU3RyZWFtRGVzY3JpcHRvci5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1EZXNjcmlwdG9yLmNwcAko
cmV2aXNpb24gMTU3MDE2KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0v
TWVkaWFTdHJlYW1EZXNjcmlwdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzUsNiArMzUsNyBA
QAogCiAjaW5jbHVkZSAiTWVkaWFTdHJlYW1EZXNjcmlwdG9yLmgiCiAKKyNpbmNsdWRlICJNZWRp
YVN0cmVhbUNlbnRlci5oIgogI2luY2x1ZGUgIk1lZGlhU3RyZWFtU291cmNlLmgiCiAjaW5jbHVk
ZSAiVVVJRC5oIgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CkBAIC00Nyw2ICs0OCwxNSBA
QCBQYXNzUmVmUHRyPE1lZGlhU3RyZWFtRGVzY3JpcHRvcj4gTWVkaWFTCiAgICAgcmV0dXJuIGFk
b3B0UmVmKG5ldyBNZWRpYVN0cmVhbURlc2NyaXB0b3IoY3JlYXRlQ2Fub25pY2FsVVVJRFN0cmlu
ZygpLCBhdWRpb1NvdXJjZXMsIHZpZGVvU291cmNlcykpOwogfQogCitNZWRpYVN0cmVhbURlc2Ny
aXB0b3I6On5NZWRpYVN0cmVhbURlc2NyaXB0b3IoKQoreworICAgIGZvciAoc2l6ZV90IGkgPSAw
OyBpIDwgbV9hdWRpb1N0cmVhbVNvdXJjZXMuc2l6ZSgpOyBpKyspCisgICAgICAgIG1fYXVkaW9T
dHJlYW1Tb3VyY2VzW2ldLT5zZXRTdHJlYW0oMCk7CisgICAgCisgICAgZm9yIChzaXplX3QgaSA9
IDA7IGkgPCBtX3ZpZGVvU3RyZWFtU291cmNlcy5zaXplKCk7IGkrKykKKyAgICAgICAgbV92aWRl
b1N0cmVhbVNvdXJjZXNbaV0tPnNldFN0cmVhbSgwKTsKK30KKwogdm9pZCBNZWRpYVN0cmVhbURl
c2NyaXB0b3I6OmFkZFNvdXJjZShQYXNzUmVmUHRyPE1lZGlhU3RyZWFtU291cmNlPiBzb3VyY2Up
CiB7CiAgICAgc3dpdGNoIChzb3VyY2UtPnR5cGUoKSkgewpAQCAtNjcsMTUgKzc3LDE5IEBAIHZv
aWQgTWVkaWFTdHJlYW1EZXNjcmlwdG9yOjpyZW1vdmVTb3VyY2UKICAgICBzd2l0Y2ggKHNvdXJj
ZS0+dHlwZSgpKSB7CiAgICAgY2FzZSBNZWRpYVN0cmVhbVNvdXJjZTo6QXVkaW86CiAgICAgICAg
IHBvcyA9IG1fYXVkaW9TdHJlYW1Tb3VyY2VzLmZpbmQoc291cmNlKTsKLSAgICAgICAgaWYgKHBv
cyAhPSBub3RGb3VuZCkKLSAgICAgICAgICAgIG1fYXVkaW9TdHJlYW1Tb3VyY2VzLnJlbW92ZShw
b3MpOworICAgICAgICBpZiAocG9zID09IG5vdEZvdW5kKQorICAgICAgICAgICAgcmV0dXJuOwor
ICAgICAgICBtX2F1ZGlvU3RyZWFtU291cmNlcy5yZW1vdmUocG9zKTsKICAgICAgICAgYnJlYWs7
CiAgICAgY2FzZSBNZWRpYVN0cmVhbVNvdXJjZTo6VmlkZW86CiAgICAgICAgIHBvcyA9IG1fdmlk
ZW9TdHJlYW1Tb3VyY2VzLmZpbmQoc291cmNlKTsKLSAgICAgICAgaWYgKHBvcyAhPSBub3RGb3Vu
ZCkKLSAgICAgICAgICAgIG1fdmlkZW9TdHJlYW1Tb3VyY2VzLnJlbW92ZShwb3MpOworICAgICAg
ICBpZiAocG9zID09IG5vdEZvdW5kKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBtX3Zp
ZGVvU3RyZWFtU291cmNlcy5yZW1vdmUocG9zKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQorCisg
ICAgc291cmNlLT5zZXRTdHJlYW0oMCk7CiB9CiAKIHZvaWQgTWVkaWFTdHJlYW1EZXNjcmlwdG9y
OjphZGRSZW1vdGVTb3VyY2UoTWVkaWFTdHJlYW1Tb3VyY2UqIHNvdXJjZSkKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtRGVzY3JpcHRvci5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlhU3Ry
ZWFtRGVzY3JpcHRvci5oCShyZXZpc2lvbiAxNTcwMTYpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbURlc2NyaXB0b3IuaAkod29ya2luZyBjb3B5KQpA
QCAtNTIsOSArNTIsMTAgQEAgcHVibGljOgogCiBjbGFzcyBNZWRpYVN0cmVhbURlc2NyaXB0b3Ig
OiBwdWJsaWMgUmVmQ291bnRlZDxNZWRpYVN0cmVhbURlc2NyaXB0b3I+IHsKIHB1YmxpYzoKLQog
ICAgIHN0YXRpYyBQYXNzUmVmUHRyPE1lZGlhU3RyZWFtRGVzY3JpcHRvcj4gY3JlYXRlKGNvbnN0
IE1lZGlhU3RyZWFtU291cmNlVmVjdG9yJiBhdWRpb1NvdXJjZXMsIGNvbnN0IE1lZGlhU3RyZWFt
U291cmNlVmVjdG9yJiB2aWRlb1NvdXJjZXMpOwogCisgICAgdmlydHVhbCB+TWVkaWFTdHJlYW1E
ZXNjcmlwdG9yKCk7CisKICAgICBNZWRpYVN0cmVhbURlc2NyaXB0b3JDbGllbnQqIGNsaWVudCgp
IGNvbnN0IHsgcmV0dXJuIG1fY2xpZW50OyB9CiAgICAgdm9pZCBzZXRDbGllbnQoTWVkaWFTdHJl
YW1EZXNjcmlwdG9yQ2xpZW50KiBjbGllbnQpIHsgbV9jbGllbnQgPSBjbGllbnQ7IH0KIApJbmRl
eDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1Tb3VyY2Uu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL01l
ZGlhU3RyZWFtU291cmNlLmNwcAkocmV2aXNpb24gMTU3MDE2KQorKysgU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1Tb3VyY2UuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0xLDUgKzEsNiBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzQs
MjYgKzM1LDM5IEBACiAKICNpbmNsdWRlICJNZWRpYVN0cmVhbVNvdXJjZS5oIgogCi0jaW5jbHVk
ZSAiQXVkaW9EZXN0aW5hdGlvbkNvbnN1bWVyLmgiCisjaW5jbHVkZSAiTWVkaWFTdHJlYW1DZW50
ZXIuaCIKKyNpbmNsdWRlICJNZWRpYVN0cmVhbVNvdXJjZUNhcGFiaWxpdGllcy5oIgorI2luY2x1
ZGUgIlVVSUQuaCIKKwogI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAotUGFzc1JlZlB0cjxNZWRpYVN0cmVhbVNvdXJjZT4gTWVkaWFTdHJlYW1Tb3Vy
Y2U6OmNyZWF0ZShjb25zdCBTdHJpbmcmIGlkLCBUeXBlIHR5cGUsIGNvbnN0IFN0cmluZyYgbmFt
ZSwgUmVhZHlTdGF0ZSByZWFkeVN0YXRlLCBib29sIHJlcXVpcmVzQ29uc3VtZXIpCi17Ci0gICAg
cmV0dXJuIGFkb3B0UmVmKG5ldyBNZWRpYVN0cmVhbVNvdXJjZShpZCwgdHlwZSwgbmFtZSwgcmVh
ZHlTdGF0ZSwgcmVxdWlyZXNDb25zdW1lcikpOwotfQotCi1NZWRpYVN0cmVhbVNvdXJjZTo6TWVk
aWFTdHJlYW1Tb3VyY2UoY29uc3QgU3RyaW5nJiBpZCwgVHlwZSB0eXBlLCBjb25zdCBTdHJpbmcm
IG5hbWUsIFJlYWR5U3RhdGUgcmVhZHlTdGF0ZSwgYm9vbCByZXF1aXJlc0NvbnN1bWVyKQorTWVk
aWFTdHJlYW1Tb3VyY2U6Ok1lZGlhU3RyZWFtU291cmNlKGNvbnN0IFN0cmluZyYgaWQsIFR5cGUg
dHlwZSwgY29uc3QgU3RyaW5nJiBuYW1lKQogICAgIDogbV9pZChpZCkKICAgICAsIG1fdHlwZSh0
eXBlKQogICAgICwgbV9uYW1lKG5hbWUpCi0gICAgLCBtX3JlYWR5U3RhdGUocmVhZHlTdGF0ZSkK
KyAgICAsIG1fcmVhZHlTdGF0ZShOZXcpCiAgICAgLCBtX3N0cmVhbSgwKQotICAgICwgbV9yZXF1
aXJlc0NvbnN1bWVyKHJlcXVpcmVzQ29uc3VtZXIpCiAgICAgLCBtX2VuYWJsZWQodHJ1ZSkKICAg
ICAsIG1fbXV0ZWQoZmFsc2UpCisgICAgLCBtX3JlYWRvbmx5KGZhbHNlKQorICAgICwgbV9yZW1v
dGUoZmFsc2UpCiB7CisgICAgaWYgKCFtX2lkLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuOwor
ICAgIAorICAgIG1faWQgPSBjcmVhdGVDYW5vbmljYWxVVUlEU3RyaW5nKCk7Cit9CisKK3ZvaWQg
TWVkaWFTdHJlYW1Tb3VyY2U6OnJlc2V0KCkKK3sKKyAgICBtX3JlYWR5U3RhdGUgPSBOZXc7Cisg
ICAgbV9zdHJlYW0gPSAwOworICAgIG1fZW5hYmxlZCA9IHRydWU7CisgICAgbV9tdXRlZCA9IGZh
bHNlOworICAgIG1fcmVhZG9ubHkgPSBmYWxzZTsKKyAgICBtX3JlbW90ZSA9IGZhbHNlOwogfQog
CiB2b2lkIE1lZGlhU3RyZWFtU291cmNlOjpzZXRSZWFkeVN0YXRlKFJlYWR5U3RhdGUgcmVhZHlT
dGF0ZSkKQEAgLTYzLDcgKzc3LDcgQEAgdm9pZCBNZWRpYVN0cmVhbVNvdXJjZTo6c2V0UmVhZHlT
dGF0ZShSZQogCiAgICAgbV9yZWFkeVN0YXRlID0gcmVhZHlTdGF0ZTsKICAgICBmb3IgKFZlY3Rv
cjxPYnNlcnZlcio+OjppdGVyYXRvciBpID0gbV9vYnNlcnZlcnMuYmVnaW4oKTsgaSAhPSBtX29i
c2VydmVycy5lbmQoKTsgKytpKQotICAgICAgICAoKmkpLT5zb3VyY2VDaGFuZ2VkU3RhdGUoKTsK
KyAgICAgICAgKCppKS0+c291cmNlU3RhdGVDaGFuZ2VkKCk7CiB9CiAKIHZvaWQgTWVkaWFTdHJl
YW1Tb3VyY2U6OmFkZE9ic2VydmVyKE1lZGlhU3RyZWFtU291cmNlOjpPYnNlcnZlciogb2JzZXJ2
ZXIpCkBAIC04MCw1MyArOTQsNzQgQEAgdm9pZCBNZWRpYVN0cmVhbVNvdXJjZTo6cmVtb3ZlT2Jz
ZXJ2ZXIoTQogCiB2b2lkIE1lZGlhU3RyZWFtU291cmNlOjpzZXRTdHJlYW0oTWVkaWFTdHJlYW1E
ZXNjcmlwdG9yKiBzdHJlYW0pCiB7Ci0gICAgQVNTRVJUKCFtX3N0cmVhbSAmJiBzdHJlYW0pOwor
ICAgIC8vIEZJWE1FOiBBIHNvdXJjZSBzaG91bGQgbm90IG5lZWQgdG8ga25vdyBhYm91dCBpdHMg
c3RyZWFtKHMpLiBUaGlzIHdpbGwgYmUgZml4ZWQgYXMgYSBwYXJ0IG9mCisgICAgLy8gaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyMTk1NAogICAgIG1fc3RyZWFtID0g
c3RyZWFtOwogfQogCitNZWRpYUNvbnN0cmFpbnRzKiBNZWRpYVN0cmVhbVNvdXJjZTo6Y29uc3Ry
YWludHMoKSBjb25zdAoreworICAgIC8vIEZJWE1FOiBXaGlsZSB0aGlzIHJldHVybnMgCisgICAg
Ly8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyMjQyOAorICAgIHJl
dHVybiBtX2NvbnN0cmFpbnRzLmdldCgpOworfQorICAgIAordm9pZCBNZWRpYVN0cmVhbVNvdXJj
ZTo6c2V0Q29uc3RyYWludHMoUGFzc1JlZlB0cjxNZWRpYUNvbnN0cmFpbnRzPiBjb25zdHJhaW50
cykKK3sKKyAgICBtX2NvbnN0cmFpbnRzID0gY29uc3RyYWludHM7Cit9CisKIHZvaWQgTWVkaWFT
dHJlYW1Tb3VyY2U6OnNldE11dGVkKGJvb2wgbXV0ZWQpCiB7CiAgICAgaWYgKG1fbXV0ZWQgPT0g
bXV0ZWQpCiAgICAgICAgIHJldHVybjsKIAogICAgIG1fbXV0ZWQgPSBtdXRlZDsKKworICAgIGlm
IChtX3JlYWR5U3RhdGUgPT0gRW5kZWQpCisgICAgICAgIHJldHVybjsKKwogICAgIGZvciAoVmVj
dG9yPE9ic2VydmVyKj46Oml0ZXJhdG9yIGkgPSBtX29ic2VydmVycy5iZWdpbigpOyBpICE9IG1f
b2JzZXJ2ZXJzLmVuZCgpOyArK2kpCi0gICAgICAgICgqaSktPnNvdXJjZUNoYW5nZWRTdGF0ZSgp
OworICAgICAgICAoKmkpLT5zb3VyY2VNdXRlZENoYW5nZWQoKTsKIH0KIAotdm9pZCBNZWRpYVN0
cmVhbVNvdXJjZTo6YWRkQXVkaW9Db25zdW1lcihQYXNzUmVmUHRyPEF1ZGlvRGVzdGluYXRpb25D
b25zdW1lcj4gY29uc3VtZXIpCit2b2lkIE1lZGlhU3RyZWFtU291cmNlOjpzZXRFbmFibGVkKGJv
b2wgZW5hYmxlZCkKIHsKLSAgICBBU1NFUlQobV9yZXF1aXJlc0NvbnN1bWVyKTsKLSAgICBNdXRl
eExvY2tlciBsb2NrZXIobV9hdWRpb0NvbnN1bWVyc0xvY2spOwotICAgIG1fYXVkaW9Db25zdW1l
cnMuYXBwZW5kKGNvbnN1bWVyKTsKLX0KKyAgICBpZiAobV9lbmFibGVkID09IGVuYWJsZWQpCisg
ICAgICAgIHJldHVybjsKKyAgICAKKyAgICBtX2VuYWJsZWQgPSBlbmFibGVkOwogCi1ib29sIE1l
ZGlhU3RyZWFtU291cmNlOjpyZW1vdmVBdWRpb0NvbnN1bWVyKEF1ZGlvRGVzdGluYXRpb25Db25z
dW1lciogY29uc3VtZXIpCi17Ci0gICAgQVNTRVJUKG1fcmVxdWlyZXNDb25zdW1lcik7Ci0gICAg
TXV0ZXhMb2NrZXIgbG9ja2VyKG1fYXVkaW9Db25zdW1lcnNMb2NrKTsKLSAgICBzaXplX3QgcG9z
ID0gbV9hdWRpb0NvbnN1bWVycy5maW5kKGNvbnN1bWVyKTsKLSAgICBpZiAocG9zICE9IG5vdEZv
dW5kKSB7Ci0gICAgICAgIG1fYXVkaW9Db25zdW1lcnMucmVtb3ZlKHBvcyk7Ci0gICAgICAgIHJl
dHVybiB0cnVlOwotICAgIH0KLSAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKG1fcmVhZHlTdGF0
ZSA9PSBFbmRlZCkKKyAgICAgICAgcmV0dXJuOworICAgIAorICAgIGZvciAoVmVjdG9yPE9ic2Vy
dmVyKj46Oml0ZXJhdG9yIGkgPSBtX29ic2VydmVycy5iZWdpbigpOyBpICE9IG1fb2JzZXJ2ZXJz
LmVuZCgpOyArK2kpCisgICAgICAgICgqaSktPnNvdXJjZUVuYWJsZWRDaGFuZ2VkKCk7CiB9CiAK
LXZvaWQgTWVkaWFTdHJlYW1Tb3VyY2U6OnNldEF1ZGlvRm9ybWF0KHNpemVfdCBudW1iZXJPZkNo
YW5uZWxzLCBmbG9hdCBzYW1wbGVSYXRlKQorYm9vbCBNZWRpYVN0cmVhbVNvdXJjZTo6cmVhZG9u
bHkoKSBjb25zdAogewotICAgIEFTU0VSVChtX3JlcXVpcmVzQ29uc3VtZXIpOwotICAgIE11dGV4
TG9ja2VyIGxvY2tlcihtX2F1ZGlvQ29uc3VtZXJzTG9jayk7Ci0gICAgZm9yIChWZWN0b3I8UmVm
UHRyPEF1ZGlvRGVzdGluYXRpb25Db25zdW1lcj4gPjo6aXRlcmF0b3IgaXQgPSBtX2F1ZGlvQ29u
c3VtZXJzLmJlZ2luKCk7IGl0ICE9IG1fYXVkaW9Db25zdW1lcnMuZW5kKCk7ICsraXQpCi0gICAg
ICAgICgqaXQpLT5zZXRGb3JtYXQobnVtYmVyT2ZDaGFubmVscywgc2FtcGxlUmF0ZSk7CisgICAg
Ly8gaHR0cDovL3d3dy53My5vcmcvVFIvbWVkaWFjYXB0dXJlLXN0cmVhbXMvI3dpZGwtTWVkaWFT
dHJlYW1UcmFjay1fcmVhZG9ubHkKKyAgICAvLyBJZiB0aGUgdHJhY2sgKGF1ZGlvIG9yIHZpZGVv
KSBpcyBiYWNrZWQgYnkgYSByZWFkLW9ubHkgc291cmNlIHN1Y2ggYXMgYSBmaWxlLCBvciB0aGUg
dHJhY2sgc291cmNlIAorICAgIC8vIGlzIGEgbG9jYWwgbWljcm9waG9uZSBvciBjYW1lcmEsIGJ1
dCBpcyBzaGFyZWQgc28gdGhhdCB0aGlzIHRyYWNrIGNhbm5vdCBtb2RpZnkgYW55IG9mIHRoZSBz
b3VyY2UncworICAgIC8vIHNldHRpbmdzLCB0aGUgcmVhZG9ubHkgYXR0cmlidXRlIG11c3QgcmV0
dXJuIHRoZSB2YWx1ZSB0cnVlLiBPdGhlcndpc2UsIGl0IG11c3QgcmV0dXJuIHRoZSB2YWx1ZSBm
YWxzZS4KKyAgICByZXR1cm4gbV9yZWFkb25seTsKIH0KIAotdm9pZCBNZWRpYVN0cmVhbVNvdXJj
ZTo6Y29uc3VtZUF1ZGlvKEF1ZGlvQnVzKiBidXMsIHNpemVfdCBudW1iZXJPZkZyYW1lcykKK3Zv
aWQgTWVkaWFTdHJlYW1Tb3VyY2U6OnN0b3AoKQogewotICAgIEFTU0VSVChtX3JlcXVpcmVzQ29u
c3VtZXIpOwotICAgIE11dGV4TG9ja2VyIGxvY2tlcihtX2F1ZGlvQ29uc3VtZXJzTG9jayk7Ci0g
ICAgZm9yIChWZWN0b3I8UmVmUHRyPEF1ZGlvRGVzdGluYXRpb25Db25zdW1lcj4gPjo6aXRlcmF0
b3IgaXQgPSBtX2F1ZGlvQ29uc3VtZXJzLmJlZ2luKCk7IGl0ICE9IG1fYXVkaW9Db25zdW1lcnMu
ZW5kKCk7ICsraXQpCi0gICAgICAgICgqaXQpLT5jb25zdW1lQXVkaW8oYnVzLCBudW1iZXJPZkZy
YW1lcyk7CisgICAgZm9yIChWZWN0b3I8T2JzZXJ2ZXIqPjo6aXRlcmF0b3IgaSA9IG1fb2JzZXJ2
ZXJzLmJlZ2luKCk7IGkgIT0gbV9vYnNlcnZlcnMuZW5kKCk7ICsraSkgeworICAgICAgICBpZiAo
ISgqaSktPnN0b3BwZWQoKSkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICAvLyBU
aGVyZSBhcmUgbm8gbW9yZSBjb25zdW1lcnMgb2YgdGhpcyBzb3VyY2UncyBkYXRhLCBzaHV0IGl0
IGRvd24gYXMgYXBwcm9wcmlhdGUuCisgICAgc2V0UmVhZHlTdGF0ZShFbmRlZCk7CisKKyAgICAv
LyBodHRwOi8vd3d3LnczLm9yZy9UUi9tZWRpYWNhcHR1cmUtc3RyZWFtcy8jd2lkbC1NZWRpYVN0
cmVhbVRyYWNrLXN0b3Atdm9pZAorICAgIC8vIElmIHRoZSBkYXRhIGlzIGJlaW5nIGdlbmVyYXRl
ZCBmcm9tIGEgbGl2ZSBzb3VyY2UgKGUuZy4sIGEgbWljcm9waG9uZSBvciBjYW1lcmEpLCB0aGVu
IHRoZSB1c2VyIAorICAgIC8vIGFnZW50IHNob3VsZCByZW1vdmUgYW55IGFjdGl2ZSAib24tYWly
IiBpbmRpY2F0b3IgZm9yIHRoYXQgc291cmNlLiBJZiB0aGUgZGF0YSBpcyBiZWluZyAKKyAgICAv
LyBnZW5lcmF0ZWQgZnJvbSBhIHByZXJlY29yZGVkIHNvdXJjZSAoZS5nLiBhIHZpZGVvIGZpbGUp
LCBhbnkgcmVtYWluaW5nIGNvbnRlbnQgaW4gdGhlIGZpbGUgaXMgaWdub3JlZC4KIH0KIAogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFz
dHJlYW0vTWVkaWFTdHJlYW1Tb3VyY2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVNvdXJjZS5oCShyZXZpc2lvbiAxNTcwMTYp
CisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVNvdXJj
ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDYgKzEsNyBAQAogLyoKICAqIENvcHlyaWdodCAoQykg
MjAxMSBFcmljc3NvbiBBQi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykg
MjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAy
MDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucwpAQCAtMzYsNiArMzcsNyBAQAogCiAjaW5jbHVkZSAiQXVkaW9EZXN0aW5hdGlv
bkNvbnN1bWVyLmgiCiAjaW5jbHVkZSAiTWVkaWFDb25zdHJhaW50cy5oIgorI2luY2x1ZGUgIk1l
ZGlhU3RyZWFtU291cmNlQ2FwYWJpbGl0aWVzLmgiCiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQu
aD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5n
Lmg+CkBAIC00Myw3MiArNDUsODEgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQXVk
aW9CdXM7CitjbGFzcyBNZWRpYUNvbnN0cmFpbnRzOwogY2xhc3MgTWVkaWFTdHJlYW1EZXNjcmlw
dG9yOworc3RydWN0IE1lZGlhU3RyZWFtU291cmNlU3RhdGVzOwogCiBjbGFzcyBNZWRpYVN0cmVh
bVNvdXJjZSA6IHB1YmxpYyBSZWZDb3VudGVkPE1lZGlhU3RyZWFtU291cmNlPiB7CiBwdWJsaWM6
CiAgICAgY2xhc3MgT2JzZXJ2ZXIgewogICAgIHB1YmxpYzoKICAgICAgICAgdmlydHVhbCB+T2Jz
ZXJ2ZXIoKSB7IH0KLSAgICAgICAgdmlydHVhbCB2b2lkIHNvdXJjZUNoYW5nZWRTdGF0ZSgpID0g
MDsKKyAgICAgICAgdmlydHVhbCB2b2lkIHNvdXJjZVN0YXRlQ2hhbmdlZCgpID0gMDsKKyAgICAg
ICAgdmlydHVhbCB2b2lkIHNvdXJjZU11dGVkQ2hhbmdlZCgpID0gMDsKKyAgICAgICAgdmlydHVh
bCB2b2lkIHNvdXJjZUVuYWJsZWRDaGFuZ2VkKCkgPSAwOworICAgICAgICB2aXJ0dWFsIGJvb2wg
c3RvcHBlZCgpID0gMDsKICAgICB9OwogCiAgICAgZW51bSBUeXBlIHsgQXVkaW8sIFZpZGVvIH07
CiAgICAgZW51bSBSZWFkeVN0YXRlIHsgTmV3ID0gMCwgTGl2ZSA9IDEsIEVuZGVkID0gMiB9Owog
Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8TWVkaWFTdHJlYW1Tb3VyY2U+IGNyZWF0ZShjb25zdCBT
dHJpbmcmIGlkLCBUeXBlLCBjb25zdCBTdHJpbmcmIG5hbWUsIFJlYWR5U3RhdGUgPSBOZXcsIGJv
b2wgcmVxdWlyZXNDb25zdW1lciA9IGZhbHNlKTsKKyAgICB2aXJ0dWFsIH5NZWRpYVN0cmVhbVNv
dXJjZSgpIHsgfQogCi0gICAgY29uc3QgU3RyaW5nJiBpZCgpIGNvbnN0IHsgcmV0dXJuIG1faWQ7
IH0KKyAgICB2aXJ0dWFsIGJvb2wgaXNBdWRpb1N0cmVhbVNvdXJjZSgpIGNvbnN0IHsgcmV0dXJu
IGZhbHNlOyB9CisgICAgdmlydHVhbCBib29sIHVzZUlERm9yVHJhY2tJRCgpIGNvbnN0IHsgcmV0
dXJuIGZhbHNlOyB9CisKKyAgICB2b2lkIHJlc2V0KCk7CiAKKyAgICBjb25zdCBTdHJpbmcmIGlk
KCkgY29uc3QgeyByZXR1cm4gbV9pZDsgfQogICAgIFR5cGUgdHlwZSgpIGNvbnN0IHsgcmV0dXJu
IG1fdHlwZTsgfQogICAgIGNvbnN0IFN0cmluZyYgbmFtZSgpIGNvbnN0IHsgcmV0dXJuIG1fbmFt
ZTsgfQogCisgICAgdmlydHVhbCBQYXNzUmVmUHRyPE1lZGlhU3RyZWFtU291cmNlQ2FwYWJpbGl0
aWVzPiBjYXBhYmlsaXRpZXMoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBjb25zdCBNZWRpYVN0
cmVhbVNvdXJjZVN0YXRlcyYgc3RhdGVzKCkgPSAwOworICAgIAogICAgIHZvaWQgc2V0UmVhZHlT
dGF0ZShSZWFkeVN0YXRlKTsKICAgICBSZWFkeVN0YXRlIHJlYWR5U3RhdGUoKSBjb25zdCB7IHJl
dHVybiBtX3JlYWR5U3RhdGU7IH0KIAogICAgIHZvaWQgYWRkT2JzZXJ2ZXIoT2JzZXJ2ZXIqKTsK
ICAgICB2b2lkIHJlbW92ZU9ic2VydmVyKE9ic2VydmVyKik7CiAKLSAgICB2b2lkIHNldENvbnN0
cmFpbnRzKFBhc3NSZWZQdHI8TWVkaWFDb25zdHJhaW50cz4gY29uc3RyYWludHMpIHsgbV9jb25z
dHJhaW50cyA9IGNvbnN0cmFpbnRzOyB9Ci0gICAgTWVkaWFDb25zdHJhaW50cyogY29uc3RyYWlu
dHMoKSBjb25zdCB7IHJldHVybiBtX2NvbnN0cmFpbnRzLmdldCgpOyB9Ci0KLSAgICBjb25zdCBT
dHJpbmcmIGRldmljZUlkKCkgY29uc3QgeyByZXR1cm4gbV9kZXZpY2VJZDsgfQotICAgIHZvaWQg
c2V0RGV2aWNlSWQoY29uc3QgU3RyaW5nJiBkZXZpY2VJZCkgeyBtX2RldmljZUlkID0gZGV2aWNl
SWQ7IH0KKyAgICB2b2lkIHNldENvbnN0cmFpbnRzKFBhc3NSZWZQdHI8TWVkaWFDb25zdHJhaW50
cz4pOworICAgIE1lZGlhQ29uc3RyYWludHMqIGNvbnN0cmFpbnRzKCkgY29uc3Q7CiAKICAgICBi
b29sIGVuYWJsZWQoKSBjb25zdCB7IHJldHVybiBtX2VuYWJsZWQ7IH0KLSAgICB2b2lkIHNldEVu
YWJsZWQoYm9vbCBlbmFibGVkKSB7IG1fZW5hYmxlZCA9IGVuYWJsZWQ7IH0KKyAgICB2b2lkIHNl
dEVuYWJsZWQoYm9vbCk7CiAKICAgICBib29sIG11dGVkKCkgY29uc3QgeyByZXR1cm4gbV9tdXRl
ZDsgfQogICAgIHZvaWQgc2V0TXV0ZWQoYm9vbCk7Ci0gICAgCi0gICAgdm9pZCBzZXRBdWRpb0Zv
cm1hdChzaXplX3QgbnVtYmVyT2ZDaGFubmVscywgZmxvYXQgc2FtcGxlUmF0ZSk7Ci0gICAgdm9p
ZCBjb25zdW1lQXVkaW8oQXVkaW9CdXMqLCBzaXplX3QgbnVtYmVyT2ZGcmFtZXMpOworCisgICAg
Ym9vbCByZWFkb25seSgpIGNvbnN0OworICAgIHZvaWQgc2V0UmVhZG9ubHkoYm9vbCByZWFkb25s
eSkgeyBtX3JlYWRvbmx5ID0gcmVhZG9ubHk7IH0KKworICAgIGJvb2wgcmVtb3RlKCkgY29uc3Qg
eyByZXR1cm4gbV9yZW1vdGU7IH0KKyAgICB2b2lkIHNldFJlbW90ZShib29sIHJlbW90ZSkgeyBt
X3JlbW90ZSA9IHJlbW90ZTsgfQorCisgICAgdm9pZCBzdG9wKCk7CiAKICAgICBNZWRpYVN0cmVh
bURlc2NyaXB0b3IqIHN0cmVhbSgpIGNvbnN0IHsgcmV0dXJuIG1fc3RyZWFtOyB9CiAgICAgdm9p
ZCBzZXRTdHJlYW0oTWVkaWFTdHJlYW1EZXNjcmlwdG9yKik7Ci0KLSAgICBib29sIHJlcXVpcmVz
QXVkaW9Db25zdW1lcigpIGNvbnN0IHsgcmV0dXJuIG1fcmVxdWlyZXNDb25zdW1lcjsgfQotICAg
IHZvaWQgYWRkQXVkaW9Db25zdW1lcihQYXNzUmVmUHRyPEF1ZGlvRGVzdGluYXRpb25Db25zdW1l
cj4pOwotICAgIGJvb2wgcmVtb3ZlQXVkaW9Db25zdW1lcihBdWRpb0Rlc3RpbmF0aW9uQ29uc3Vt
ZXIqKTsKLSAgICBjb25zdCBWZWN0b3I8UmVmUHRyPEF1ZGlvRGVzdGluYXRpb25Db25zdW1lcj4g
PiYgYXVkaW9Db25zdW1lcnMoKSBjb25zdCB7IHJldHVybiBtX2F1ZGlvQ29uc3VtZXJzOyB9Cisg
ICAgCitwcm90ZWN0ZWQ6CisgICAgTWVkaWFTdHJlYW1Tb3VyY2UoY29uc3QgU3RyaW5nJiBpZCwg
VHlwZSwgY29uc3QgU3RyaW5nJiBuYW1lKTsKIAogcHJpdmF0ZToKLSAgICBNZWRpYVN0cmVhbVNv
dXJjZShjb25zdCBTdHJpbmcmIGlkLCBUeXBlLCBjb25zdCBTdHJpbmcmIG5hbWUsIFJlYWR5U3Rh
dGUsIGJvb2wgcmVxdWlyZXNDb25zdW1lcik7Ci0KICAgICBTdHJpbmcgbV9pZDsKICAgICBUeXBl
IG1fdHlwZTsKICAgICBTdHJpbmcgbV9uYW1lOwogICAgIFJlYWR5U3RhdGUgbV9yZWFkeVN0YXRl
OwotICAgIFN0cmluZyBtX2RldmljZUlkOwogICAgIFZlY3RvcjxPYnNlcnZlcio+IG1fb2JzZXJ2
ZXJzOwotICAgIE11dGV4IG1fYXVkaW9Db25zdW1lcnNMb2NrOwotICAgIFZlY3RvcjxSZWZQdHI8
QXVkaW9EZXN0aW5hdGlvbkNvbnN1bWVyPj4gbV9hdWRpb0NvbnN1bWVyczsKICAgICBSZWZQdHI8
TWVkaWFDb25zdHJhaW50cz4gbV9jb25zdHJhaW50czsKICAgICBNZWRpYVN0cmVhbURlc2NyaXB0
b3IqIG1fc3RyZWFtOworICAgIE1lZGlhU3RyZWFtU291cmNlU3RhdGVzIG1fc3RhdGVzOwogCi0g
ICAgYm9vbCBtX3JlcXVpcmVzQ29uc3VtZXI7CiAgICAgYm9vbCBtX2VuYWJsZWQ7CiAgICAgYm9v
bCBtX211dGVkOworICAgIGJvb2wgbV9yZWFkb25seTsKKyAgICBib29sIG1fcmVtb3RlOwogfTsK
IAogdHlwZWRlZiBWZWN0b3I8UmVmUHRyPE1lZGlhU3RyZWFtU291cmNlPiA+IE1lZGlhU3RyZWFt
U291cmNlVmVjdG9yOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0v
TWVkaWFTdHJlYW1Tb3VyY2VDYXBhYmlsaXRpZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVNvdXJjZUNhcGFiaWxpdGllcy5o
CShyZXZpc2lvbiAwKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVk
aWFTdHJlYW1Tb3VyY2VDYXBhYmlsaXRpZXMuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDE3
NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI2lmbmRlZiBNZWRpYVN0cmVhbVNvdXJjZUNhcGFiaWxpdGllc19oCisj
ZGVmaW5lIE1lZGlhU3RyZWFtU291cmNlQ2FwYWJpbGl0aWVzX2gKKworI2lmIEVOQUJMRShNRURJ
QV9TVFJFQU0pCisKKyNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgorI2luY2x1ZGUgPHd0Zi9W
ZWN0b3IuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9BdG9taWNTdHJpbmcuaD4KKworbmFtZXNwYWNl
IFdlYkNvcmUgeworCitzdHJ1Y3QgTWVkaWFTdHJlYW1Tb3VyY2VTdGF0ZXMgeworcHVibGljOgor
ICAgIGVudW0gU291cmNlVHlwZSB7IE5vbmUsIENhbWVyYSwgTWljcm9waG9uZSB9OworICAgIGVu
dW0gVmlkZW9GYWNpbmdNb2RlIHsgVXNlciwgRW52aXJvbm1lbnQsIExlZnQsIFJpZ2h0IH07CisK
KyAgICBNZWRpYVN0cmVhbVNvdXJjZVN0YXRlcygpCisgICAgICAgIDogc291cmNlVHlwZShOb25l
KQorICAgICAgICAsIGZhY2luZ01vZGUoVXNlcikKKyAgICAgICAgLCB3aWR0aCgwKQorICAgICAg
ICAsIGhlaWdodCgwKQorICAgICAgICAsIGZyYW1lUmF0ZSgwKQorICAgICAgICAsIGFzcGVjdFJh
dGlvKDApCisgICAgICAgICwgdm9sdW1lKDApCisgICAgeworICAgIH0KKworICAgIFNvdXJjZVR5
cGUgc291cmNlVHlwZTsKKyAgICBBdG9taWNTdHJpbmcgc291cmNlSWQ7CisgICAgVmlkZW9GYWNp
bmdNb2RlIGZhY2luZ01vZGU7CisgICAgdW5zaWduZWQgbG9uZyB3aWR0aDsKKyAgICB1bnNpZ25l
ZCBsb25nIGhlaWdodDsKKyAgICBmbG9hdCBmcmFtZVJhdGU7CisgICAgZmxvYXQgYXNwZWN0UmF0
aW87CisgICAgdW5zaWduZWQgbG9uZyB2b2x1bWU7CisgICAgCisgICAgYm9vbCBoYXNWaWRlb1Nv
dXJjZTsKK307CisKK2NsYXNzIE1lZGlhU3RyZWFtU291cmNlQ2FwYWJpbGl0eVJhbmdlIHsKK3B1
YmxpYzoKKyAgICAKKyAgICBNZWRpYVN0cmVhbVNvdXJjZUNhcGFiaWxpdHlSYW5nZShmbG9hdCBt
aW4sIGZsb2F0IG1heCwgYm9vbCBzdXBwb3J0ZWQgPSB0cnVlKQorICAgICAgICA6IG1fdHlwZShG
bG9hdCkKKyAgICB7CisgICAgICAgIG1fbWluLmFzRmxvYXQgPSBtaW47CisgICAgICAgIG1fbWF4
LmFzRmxvYXQgPSBtYXg7CisgICAgICAgIG1fc3VwcG9ydGVkID0gc3VwcG9ydGVkOworICAgIH0K
KyAgICAKKyAgICBNZWRpYVN0cmVhbVNvdXJjZUNhcGFiaWxpdHlSYW5nZSh1bnNpZ25lZCBsb25n
IG1pbiwgdW5zaWduZWQgbG9uZyBtYXgsIGJvb2wgc3VwcG9ydGVkID0gdHJ1ZSkKKyAgICAgICAg
OiBtX3R5cGUoVUxvbmcpCisgICAgeworICAgICAgICBtX21pbi5hc1VMb25nID0gbWluOworICAg
ICAgICBtX21heC5hc1VMb25nID0gbWF4OworICAgICAgICBtX3N1cHBvcnRlZCA9IHN1cHBvcnRl
ZDsKKyAgICB9CisgICAgCisgICAgTWVkaWFTdHJlYW1Tb3VyY2VDYXBhYmlsaXR5UmFuZ2UoKQor
ICAgIHsKKyAgICAgICAgbV90eXBlID0gVW5kZWZpbmVkOworICAgICAgICBtX21pbi5hc1VMb25n
ID0gMDsKKyAgICAgICAgbV9tYXguYXNVTG9uZyA9IDA7CisgICAgICAgIG1fc3VwcG9ydGVkID0g
ZmFsc2U7CisgICAgfQorICAgIAorICAgIGVudW0gVHlwZSB7IFVuZGVmaW5lZCwgRmxvYXQsIFVM
b25nIH07CisgICAgCisgICAgdW5pb24gVmFsdWVVbmlvbiB7CisgICAgICAgIHVuc2lnbmVkIGxv
bmcgYXNVTG9uZzsKKyAgICAgICAgZmxvYXQgYXNGbG9hdDsKKyAgICB9OworICAgIAorICAgIGNv
bnN0IFZhbHVlVW5pb24mIG1pbigpIGNvbnN0IHsgcmV0dXJuIG1fbWluOyB9CisgICAgY29uc3Qg
VmFsdWVVbmlvbiYgbWF4KCkgY29uc3QgeyByZXR1cm4gbV9tYXg7IH0KKyAgICBUeXBlIHR5cGUo
KSBjb25zdCB7IHJldHVybiBtX3R5cGU7IH0KKyAgICBib29sIHN1cHBvcnRlZCgpIGNvbnN0IHsg
cmV0dXJuIG1fc3VwcG9ydGVkOyB9CisgICAgCitwcml2YXRlOgorICAgIFZhbHVlVW5pb24gbV9t
aW47CisgICAgVmFsdWVVbmlvbiBtX21heDsKKyAgICBUeXBlIG1fdHlwZTsKKyAgICBib29sIG1f
c3VwcG9ydGVkOworfTsKKworY2xhc3MgTWVkaWFTdHJlYW1Tb3VyY2VDYXBhYmlsaXRpZXMgOiBw
dWJsaWMgUmVmQ291bnRlZDxNZWRpYVN0cmVhbVNvdXJjZUNhcGFiaWxpdGllcz4geworcHVibGlj
OgorICAgIHN0YXRpYyBQYXNzUmVmUHRyPE1lZGlhU3RyZWFtU291cmNlQ2FwYWJpbGl0aWVzPiBj
cmVhdGUoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBNZWRpYVN0cmVhbVNv
dXJjZUNhcGFiaWxpdGllcygpKTsKKyAgICB9CisKKyAgICB+TWVkaWFTdHJlYW1Tb3VyY2VDYXBh
YmlsaXRpZXMoKSB7IH0KKworICAgIGNvbnN0IFZlY3RvcjxNZWRpYVN0cmVhbVNvdXJjZVN0YXRl
czo6U291cmNlVHlwZT4mIHNvdXJjZVR5cGVzKCkgeyByZXR1cm4gbV9zb3VyY2VUeXBlOyB9Cisg
ICAgdm9pZCBhZGRTb3VyY2VUeXBlKE1lZGlhU3RyZWFtU291cmNlU3RhdGVzOjpTb3VyY2VUeXBl
IHNvdXJjZVR5cGUpCisgICAgeworICAgICAgICBpZiAoc291cmNlVHlwZSA9PSBNZWRpYVN0cmVh
bVNvdXJjZVN0YXRlczo6Q2FtZXJhKQorICAgICAgICAgICAgbV92aWRlb1NvdXJjZSA9IHRydWU7
CisgICAgICAgIG1fc291cmNlVHlwZS5hcHBlbmQoc291cmNlVHlwZSk7CisgICAgfQorCisgICAg
Y29uc3QgVmVjdG9yPEF0b21pY1N0cmluZz4mIHNvdXJjZUlkKCkgeyByZXR1cm4gbV9zb3VyY2VJ
ZDsgfQorICAgIHZvaWQgc2V0U291cmNlSWQoY29uc3QgQXRvbWljU3RyaW5nJiBpZCkgIHsgbV9z
b3VyY2VJZC5yZXNlcnZlQ2FwYWNpdHkoMSk7IG1fc291cmNlSWQuaW5zZXJ0KDAsIGlkKTsgfQor
CisgICAgY29uc3QgVmVjdG9yPE1lZGlhU3RyZWFtU291cmNlU3RhdGVzOjpWaWRlb0ZhY2luZ01v
ZGU+JiBmYWNpbmdNb2RlcygpIHsgcmV0dXJuIG1fZmFjaW5nTW9kZTsgfQorICAgIHZvaWQgYWRk
RmFjaW5nTW9kZShNZWRpYVN0cmVhbVNvdXJjZVN0YXRlczo6VmlkZW9GYWNpbmdNb2RlIG1vZGUp
IHsgbV9mYWNpbmdNb2RlLmFwcGVuZChtb2RlKTsgfQorCisgICAgY29uc3QgTWVkaWFTdHJlYW1T
b3VyY2VDYXBhYmlsaXR5UmFuZ2UmIHdpZHRoKCkgeyByZXR1cm4gbV93aWR0aDsgfQorICAgIHZv
aWQgc2V0V2lkdGhSYW5nZShjb25zdCBNZWRpYVN0cmVhbVNvdXJjZUNhcGFiaWxpdHlSYW5nZSYg
d2lkdGgpIHsgbV93aWR0aCA9IHdpZHRoOyB9CisKKyAgICBjb25zdCBNZWRpYVN0cmVhbVNvdXJj
ZUNhcGFiaWxpdHlSYW5nZSYgaGVpZ2h0KCkgeyByZXR1cm4gbV9oZWlnaHQ7IH0KKyAgICB2b2lk
IHNldEhlaWdodFJhbmdlKGNvbnN0IE1lZGlhU3RyZWFtU291cmNlQ2FwYWJpbGl0eVJhbmdlJiBo
ZWlnaHQpIHsgbV9oZWlnaHQgPSBoZWlnaHQ7IH0KKworICAgIGNvbnN0IE1lZGlhU3RyZWFtU291
cmNlQ2FwYWJpbGl0eVJhbmdlJiBmcmFtZVJhdGUoKSB7IHJldHVybiBtX2ZyYW1lUmF0ZTsgfQor
ICAgIHZvaWQgc2V0RnJhbWVSYXRlUmFuZ2UoY29uc3QgTWVkaWFTdHJlYW1Tb3VyY2VDYXBhYmls
aXR5UmFuZ2UmIGZyYW1lUmF0ZSkgeyBtX2ZyYW1lUmF0ZSA9IGZyYW1lUmF0ZTsgfQorCisgICAg
Y29uc3QgTWVkaWFTdHJlYW1Tb3VyY2VDYXBhYmlsaXR5UmFuZ2UmIGFzcGVjdFJhdGlvKCkgeyBy
ZXR1cm4gbV9hc3BlY3RSYXRpbzsgfQorICAgIHZvaWQgc2V0QXNwZWN0UmF0aW9SYW5nZShjb25z
dCBNZWRpYVN0cmVhbVNvdXJjZUNhcGFiaWxpdHlSYW5nZSYgYXNwZWN0UmF0aW8pIHsgbV9hc3Bl
Y3RSYXRpbyA9IGFzcGVjdFJhdGlvOyB9CisKKyAgICBjb25zdCBNZWRpYVN0cmVhbVNvdXJjZUNh
cGFiaWxpdHlSYW5nZSYgdm9sdW1lKCkgeyByZXR1cm4gbV92b2x1bWU7IH0KKyAgICB2b2lkIHNl
dFZvbHVtZVJhbmdlKGNvbnN0IE1lZGlhU3RyZWFtU291cmNlQ2FwYWJpbGl0eVJhbmdlJiB2b2x1
bWUpIHsgbV92b2x1bWUgPSB2b2x1bWU7IH0KKworICAgIGJvb2wgaGFzVmlkZW9Tb3VyY2UoKSB7
IHJldHVybiBtX3ZpZGVvU291cmNlOyB9CisgICAgdm9pZCBzZXRIYXNWaWRlb1NvdXJjZShib29s
IGlzVmlkZW8pIHsgbV92aWRlb1NvdXJjZSA9IGlzVmlkZW87OyB9CisKK3ByaXZhdGU6CisgICAg
TWVkaWFTdHJlYW1Tb3VyY2VDYXBhYmlsaXRpZXMoKQorICAgICAgICA6IG1fdmlkZW9Tb3VyY2Uo
ZmFsc2UpCisgICAgeworICAgIH0KKworICAgIFZlY3RvcjxBdG9taWNTdHJpbmc+IG1fc291cmNl
SWQ7CisgICAgVmVjdG9yPE1lZGlhU3RyZWFtU291cmNlU3RhdGVzOjpTb3VyY2VUeXBlPiBtX3Nv
dXJjZVR5cGU7CisgICAgVmVjdG9yPE1lZGlhU3RyZWFtU291cmNlU3RhdGVzOjpWaWRlb0ZhY2lu
Z01vZGU+IG1fZmFjaW5nTW9kZTsKKworICAgIE1lZGlhU3RyZWFtU291cmNlQ2FwYWJpbGl0eVJh
bmdlIG1fd2lkdGg7CisgICAgTWVkaWFTdHJlYW1Tb3VyY2VDYXBhYmlsaXR5UmFuZ2UgbV9oZWln
aHQ7CisgICAgTWVkaWFTdHJlYW1Tb3VyY2VDYXBhYmlsaXR5UmFuZ2UgbV9mcmFtZVJhdGU7Cisg
ICAgTWVkaWFTdHJlYW1Tb3VyY2VDYXBhYmlsaXR5UmFuZ2UgbV9hc3BlY3RSYXRpbzsKKyAgICBN
ZWRpYVN0cmVhbVNvdXJjZUNhcGFiaWxpdHlSYW5nZSBtX3ZvbHVtZTsKKworICAgIGJvb2wgbV92
aWRlb1NvdXJjZTsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIE1l
ZGlhU3RyZWFtU291cmNlQ2FwYWJpbGl0aWVzX2gKKworI2VuZGlmCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9ibGFja2JlcnJ5L01lZGlhU3RyZWFtQ2VudGVyQmxh
Y2tCZXJyeS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFz
dHJlYW0vYmxhY2tiZXJyeS9NZWRpYVN0cmVhbUNlbnRlckJsYWNrQmVycnkuY3BwCShyZXZpc2lv
biAxNTcwMTYpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9ibGFja2Jl
cnJ5L01lZGlhU3RyZWFtQ2VudGVyQmxhY2tCZXJyeS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM1
LDggKzM1LDEwIEBACiAKICNpbmNsdWRlICJNZWRpYVN0cmVhbUNlbnRlckJsYWNrQmVycnkuaCIK
IAorI2luY2x1ZGUgIk1lZGlhU3RyZWFtQ3JlYXRpb25DbGllbnQuaCIKICNpbmNsdWRlICJNZWRp
YVN0cmVhbURlc2NyaXB0b3IuaCIKLSNpbmNsdWRlICJNZWRpYVN0cmVhbVNvdXJjZXNRdWVyeUNs
aWVudC5oIgorI2luY2x1ZGUgIk1lZGlhU3RyZWFtVHJhY2tTb3VyY2VzUmVxdWVzdENsaWVudC5o
IgorI2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCiAjaW5jbHVkZSA8d3RmL01haW5UaHJlYWQu
aD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNzIsMzMgKzc0LDYgQEAgYm9vbCBNZWRpYVN0
cmVhbUNlbnRlckJsYWNrQmVycnk6OmdldE1lZAogICAgIHJldHVybiBmYWxzZTsKIH0KIAotdm9p
ZCBNZWRpYVN0cmVhbUNlbnRlckJsYWNrQmVycnk6OmRpZFNldE1lZGlhU3RyZWFtVHJhY2tFbmFi
bGVkKE1lZGlhU3RyZWFtU291cmNlKikKLXsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotfQotCi1i
b29sIE1lZGlhU3RyZWFtQ2VudGVyQmxhY2tCZXJyeTo6ZGlkQWRkTWVkaWFTdHJlYW1UcmFjayhN
ZWRpYVN0cmVhbVNvdXJjZSopCi17Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLSAgICByZXR1cm4g
ZmFsc2U7Ci19Ci0KLWJvb2wgTWVkaWFTdHJlYW1DZW50ZXJCbGFja0JlcnJ5OjpkaWRSZW1vdmVN
ZWRpYVN0cmVhbVRyYWNrKE1lZGlhU3RyZWFtU291cmNlKikKLXsKLSAgICBub3RJbXBsZW1lbnRl
ZCgpOwotICAgIHJldHVybiBmYWxzZTsKLX0KLQotdm9pZCBNZWRpYVN0cmVhbUNlbnRlckJsYWNr
QmVycnk6OmRpZFN0b3BMb2NhbE1lZGlhU3RyZWFtKE1lZGlhU3RyZWFtRGVzY3JpcHRvciogc3Ry
ZWFtKQotewotICAgIGVuZExvY2FsTWVkaWFTdHJlYW0oc3RyZWFtKTsKLX0KLQotdm9pZCBNZWRp
YVN0cmVhbUNlbnRlckJsYWNrQmVycnk6OmRpZENyZWF0ZU1lZGlhU3RyZWFtKE1lZGlhU3RyZWFt
RGVzY3JpcHRvciopCi17Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLX0KLQogfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5BQkxFKE1FRElBX1NUUkVBTSkKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2JsYWNrYmVycnkvTWVkaWFTdHJlYW1DZW50
ZXJCbGFja0JlcnJ5LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVk
aWFzdHJlYW0vYmxhY2tiZXJyeS9NZWRpYVN0cmVhbUNlbnRlckJsYWNrQmVycnkuaAkocmV2aXNp
b24gMTU3MDE2KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vYmxhY2ti
ZXJyeS9NZWRpYVN0cmVhbUNlbnRlckJsYWNrQmVycnkuaAkod29ya2luZyBjb3B5KQpAQCAtNTAs
MTUgKzUwLDkgQEAgcHVibGljOgogICAgIE1lZGlhU3RyZWFtQ2VudGVyQmxhY2tCZXJyeSgpOwog
ICAgIH5NZWRpYVN0cmVhbUNlbnRlckJsYWNrQmVycnkoKTsKIAotICAgIC8vIE1lZGlhU3RyZWFt
Q2VudGVyCiAgICAgdmlydHVhbCB2b2lkIHZhbGlkYXRlUmVxdWVzdENvbnN0cmFpbnRzKFBhc3NS
ZWZQdHI8TWVkaWFTdHJlYW1DcmVhdGlvbkNsaWVudD4sIFBhc3NSZWZQdHI8TWVkaWFDb25zdHJh
aW50cz4gYXVkaW9Db25zdHJhaW50cywgUGFzc1JlZlB0cjxNZWRpYUNvbnN0cmFpbnRzPiB2aWRl
b0NvbnN0cmFpbnRzKTsKICAgICB2aXJ0dWFsIHZvaWQgY3JlYXRlTWVkaWFTdHJlYW0oUGFzc1Jl
ZlB0cjxNZWRpYVN0cmVhbUNyZWF0aW9uQ2xpZW50PiwgUGFzc1JlZlB0cjxNZWRpYUNvbnN0cmFp
bnRzPiBhdWRpb0NvbnN0cmFpbnRzLCBQYXNzUmVmUHRyPE1lZGlhQ29uc3RyYWludHM+IHZpZGVv
Q29uc3RyYWludHMpOwogICAgIHZpcnR1YWwgYm9vbCBnZXRNZWRpYVN0cmVhbVRyYWNrU291cmNl
cyhQYXNzUmVmUHRyPE1lZGlhU3RyZWFtVHJhY2tTb3VyY2VzUmVxdWVzdENsaWVudD4pIE9WRVJS
SURFOwotICAgIHZpcnR1YWwgdm9pZCBkaWRTZXRNZWRpYVN0cmVhbVRyYWNrRW5hYmxlZChNZWRp
YVN0cmVhbVNvdXJjZSopIE9WRVJSSURFOwotICAgIHZpcnR1YWwgYm9vbCBkaWRBZGRNZWRpYVN0
cmVhbVRyYWNrKE1lZGlhU3RyZWFtU291cmNlKikgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCBib29s
IGRpZFJlbW92ZU1lZGlhU3RyZWFtVHJhY2soTWVkaWFTdHJlYW1Tb3VyY2UqKSBPVkVSUklERTsK
LSAgICB2aXJ0dWFsIHZvaWQgZGlkU3RvcExvY2FsTWVkaWFTdHJlYW0oTWVkaWFTdHJlYW1EZXNj
cmlwdG9yKikgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCB2b2lkIGRpZENyZWF0ZU1lZGlhU3RyZWFt
KE1lZGlhU3RyZWFtRGVzY3JpcHRvciopIE9WRVJSSURFOwogfTsKIAogfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vZ3N0cmVh
bWVyL01lZGlhU3RyZWFtQ2VudGVyR1N0cmVhbWVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvTWVkaWFTdHJlYW1DZW50ZXJH
U3RyZWFtZXIuY3BwCShyZXZpc2lvbiAxNTcwMTYpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvTWVkaWFTdHJlYW1DZW50ZXJHU3RyZWFtZXIuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0zNSw3ICszNSwxMSBAQAogCiAjaW5jbHVkZSAiTWVkaWFTdHJlYW1D
ZW50ZXJHU3RyZWFtZXIuaCIKIAorI2luY2x1ZGUgIk1lZGlhU3RyZWFtQ3JlYXRpb25DbGllbnQu
aCIKICNpbmNsdWRlICJNZWRpYVN0cmVhbURlc2NyaXB0b3IuaCIKKyNpbmNsdWRlICJNZWRpYVN0
cmVhbVNvdXJjZUNhcGFiaWxpdGllcy5oIgorI2luY2x1ZGUgIk1lZGlhU3RyZWFtU291cmNlU3Rh
dGVzLmgiCisjaW5jbHVkZSAiTWVkaWFTdHJlYW1UcmFja1NvdXJjZXNSZXF1ZXN0Q2xpZW50Lmgi
CiAjaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKICNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5o
PgogCkBAIC03MiwzMyArNzYsNiBAQCBib29sIE1lZGlhU3RyZWFtQ2VudGVyR1N0cmVhbWVyOjpn
ZXRNZWRpCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi12b2lkIE1lZGlhU3RyZWFtQ2VudGVyR1N0
cmVhbWVyOjpkaWRTZXRNZWRpYVN0cmVhbVRyYWNrRW5hYmxlZChNZWRpYVN0cmVhbVNvdXJjZSop
Ci17Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLX0KLQotYm9vbCBNZWRpYVN0cmVhbUNlbnRlckdT
dHJlYW1lcjo6ZGlkQWRkTWVkaWFTdHJlYW1UcmFjayhNZWRpYVN0cmVhbVNvdXJjZSopCi17Ci0g
ICAgbm90SW1wbGVtZW50ZWQoKTsKLSAgICByZXR1cm4gZmFsc2U7Ci19Ci0KLWJvb2wgTWVkaWFT
dHJlYW1DZW50ZXJHU3RyZWFtZXI6OmRpZFJlbW92ZU1lZGlhU3RyZWFtVHJhY2soTWVkaWFTdHJl
YW1Tb3VyY2UqKQotewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci0gICAgcmV0dXJuIGZhbHNlOwot
fQotCi12b2lkIE1lZGlhU3RyZWFtQ2VudGVyR1N0cmVhbWVyOjpkaWRTdG9wTG9jYWxNZWRpYVN0
cmVhbShNZWRpYVN0cmVhbURlc2NyaXB0b3IqIHN0cmVhbSkKLXsKLSAgICBlbmRMb2NhbE1lZGlh
U3RyZWFtKHN0cmVhbSk7Ci19Ci0KLXZvaWQgTWVkaWFTdHJlYW1DZW50ZXJHU3RyZWFtZXI6OmRp
ZENyZWF0ZU1lZGlhU3RyZWFtKE1lZGlhU3RyZWFtRGVzY3JpcHRvciopCi17Ci0gICAgbm90SW1w
bGVtZW50ZWQoKTsKLX0KLQogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5B
QkxFKE1FRElBX1NUUkVBTSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3Ry
ZWFtL2dzdHJlYW1lci9NZWRpYVN0cmVhbUNlbnRlckdTdHJlYW1lci5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2dzdHJlYW1lci9NZWRpYVN0cmVh
bUNlbnRlckdTdHJlYW1lci5oCShyZXZpc2lvbiAxNTcwMTYpCisrKyBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvTWVkaWFTdHJlYW1DZW50ZXJHU3RyZWFtZXIu
aAkod29ya2luZyBjb3B5KQpAQCAtNTAsMTUgKzUwLDkgQEAgcHVibGljOgogICAgIE1lZGlhU3Ry
ZWFtQ2VudGVyR1N0cmVhbWVyKCk7CiAgICAgfk1lZGlhU3RyZWFtQ2VudGVyR1N0cmVhbWVyKCk7
CiAKLSAgICAvLyBNZWRpYVN0cmVhbUNlbnRlcgogICAgIHZpcnR1YWwgdm9pZCB2YWxpZGF0ZVJl
cXVlc3RDb25zdHJhaW50cyhQYXNzUmVmUHRyPE1lZGlhU3RyZWFtQ3JlYXRpb25DbGllbnQ+LCBQ
YXNzUmVmUHRyPE1lZGlhQ29uc3RyYWludHM+IGF1ZGlvQ29uc3RyYWludHMsIFBhc3NSZWZQdHI8
TWVkaWFDb25zdHJhaW50cz4gdmlkZW9Db25zdHJhaW50cyk7CiAgICAgdmlydHVhbCB2b2lkIGNy
ZWF0ZU1lZGlhU3RyZWFtKFBhc3NSZWZQdHI8TWVkaWFTdHJlYW1DcmVhdGlvbkNsaWVudD4sIFBh
c3NSZWZQdHI8TWVkaWFDb25zdHJhaW50cz4gYXVkaW9Db25zdHJhaW50cywgUGFzc1JlZlB0cjxN
ZWRpYUNvbnN0cmFpbnRzPiB2aWRlb0NvbnN0cmFpbnRzKTsKICAgICB2aXJ0dWFsIGJvb2wgZ2V0
TWVkaWFTdHJlYW1UcmFja1NvdXJjZXMoUGFzc1JlZlB0cjxNZWRpYVN0cmVhbVRyYWNrU291cmNl
c1JlcXVlc3RDbGllbnQ+KSBPVkVSUklERTsKLSAgICB2aXJ0dWFsIHZvaWQgZGlkU2V0TWVkaWFT
dHJlYW1UcmFja0VuYWJsZWQoTWVkaWFTdHJlYW1Tb3VyY2UqKSBPVkVSUklERTsKLSAgICB2aXJ0
dWFsIGJvb2wgZGlkQWRkTWVkaWFTdHJlYW1UcmFjayhNZWRpYVN0cmVhbVNvdXJjZSopIE9WRVJS
SURFOwotICAgIHZpcnR1YWwgYm9vbCBkaWRSZW1vdmVNZWRpYVN0cmVhbVRyYWNrKE1lZGlhU3Ry
ZWFtU291cmNlKikgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCB2b2lkIGRpZFN0b3BMb2NhbE1lZGlh
U3RyZWFtKE1lZGlhU3RyZWFtRGVzY3JpcHRvciopIE9WRVJSSURFOwotICAgIHZpcnR1YWwgdm9p
ZCBkaWRDcmVhdGVNZWRpYVN0cmVhbShNZWRpYVN0cmVhbURlc2NyaXB0b3IqKSBPVkVSUklERTsK
IH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21lZGlhc3RyZWFtL21hYy9NZWRpYVN0cmVhbUNlbnRlck1hYy5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL01lZGlhU3RyZWFtQ2Vu
dGVyTWFjLmNwcAkocmV2aXNpb24gMTU3MDE2KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWVkaWFzdHJlYW0vbWFjL01lZGlhU3RyZWFtQ2VudGVyTWFjLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtNzMsMzMgKzczLDYgQEAgYm9vbCBNZWRpYVN0cmVhbUNlbnRlck1hYzo6Z2V0TWVkaWFTdHJl
YQogICAgIHJldHVybiBmYWxzZTsKIH0KIAotdm9pZCBNZWRpYVN0cmVhbUNlbnRlck1hYzo6ZGlk
U2V0TWVkaWFTdHJlYW1UcmFja0VuYWJsZWQoTWVkaWFTdHJlYW1Tb3VyY2UqKQotewotICAgIG5v
dEltcGxlbWVudGVkKCk7Ci19Ci0KLWJvb2wgTWVkaWFTdHJlYW1DZW50ZXJNYWM6OmRpZEFkZE1l
ZGlhU3RyZWFtVHJhY2soTWVkaWFTdHJlYW1Tb3VyY2UqKQotewotICAgIG5vdEltcGxlbWVudGVk
KCk7Ci0gICAgcmV0dXJuIGZhbHNlOwotfQotCi1ib29sIE1lZGlhU3RyZWFtQ2VudGVyTWFjOjpk
aWRSZW1vdmVNZWRpYVN0cmVhbVRyYWNrKE1lZGlhU3RyZWFtU291cmNlKikKLXsKLSAgICBub3RJ
bXBsZW1lbnRlZCgpOwotICAgIHJldHVybiBmYWxzZTsKLX0KLQotdm9pZCBNZWRpYVN0cmVhbUNl
bnRlck1hYzo6ZGlkU3RvcExvY2FsTWVkaWFTdHJlYW0oTWVkaWFTdHJlYW1EZXNjcmlwdG9yKiBz
dHJlYW0pCi17Ci0gICAgZW5kTG9jYWxNZWRpYVN0cmVhbShzdHJlYW0pOwotfQotCi12b2lkIE1l
ZGlhU3RyZWFtQ2VudGVyTWFjOjpkaWRDcmVhdGVNZWRpYVN0cmVhbShNZWRpYVN0cmVhbURlc2Ny
aXB0b3IqKQotewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci19Ci0KIH0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKIAogI2VuZGlmIC8vIEVOQUJMRShNRURJQV9TVFJFQU0pCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvTWVkaWFTdHJlYW1DZW50ZXJNYWMuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvTWVkaWFT
dHJlYW1DZW50ZXJNYWMuaAkocmV2aXNpb24gMTU3MDE2KQorKysgU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWVkaWFzdHJlYW0vbWFjL01lZGlhU3RyZWFtQ2VudGVyTWFjLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTM1LDI5ICszNSwyMCBAQAogCiAjaW5jbHVkZSAiTWVkaWFTdHJlYW1DZW50ZXIuaCIK
IAorI2luY2x1ZGUgIk1lZGlhU3RyZWFtU291cmNlLmgiCiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQ
dHIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCi1jbGFzcyBNZWRpYVN0cmVhbURlc2NyaXB0b3I7Ci1jbGFzcyBNZWRpYVN0cmVhbVNv
dXJjZTsKLWNsYXNzIE1lZGlhU3RyZWFtU291cmNlc1F1ZXJ5Q2xpZW50OwotCiBjbGFzcyBNZWRp
YVN0cmVhbUNlbnRlck1hYyBGSU5BTCA6IHB1YmxpYyBNZWRpYVN0cmVhbUNlbnRlciB7CiBwdWJs
aWM6CiAgICAgTWVkaWFTdHJlYW1DZW50ZXJNYWMoKTsKICAgICB+TWVkaWFTdHJlYW1DZW50ZXJN
YWMoKTsKIAotICAgIC8vIE1lZGlhU3RyZWFtQ2VudGVyCiAgICAgdmlydHVhbCB2b2lkIHZhbGlk
YXRlUmVxdWVzdENvbnN0cmFpbnRzKFBhc3NSZWZQdHI8TWVkaWFTdHJlYW1DcmVhdGlvbkNsaWVu
dD4sIFBhc3NSZWZQdHI8TWVkaWFDb25zdHJhaW50cz4gYXVkaW9Db25zdHJhaW50cywgUGFzc1Jl
ZlB0cjxNZWRpYUNvbnN0cmFpbnRzPiB2aWRlb0NvbnN0cmFpbnRzKTsKICAgICB2aXJ0dWFsIHZv
aWQgY3JlYXRlTWVkaWFTdHJlYW0oUGFzc1JlZlB0cjxNZWRpYVN0cmVhbUNyZWF0aW9uQ2xpZW50
PiwgUGFzc1JlZlB0cjxNZWRpYUNvbnN0cmFpbnRzPiBhdWRpb0NvbnN0cmFpbnRzLCBQYXNzUmVm
UHRyPE1lZGlhQ29uc3RyYWludHM+IHZpZGVvQ29uc3RyYWludHMpOwogICAgIHZpcnR1YWwgYm9v
bCBnZXRNZWRpYVN0cmVhbVRyYWNrU291cmNlcyhQYXNzUmVmUHRyPE1lZGlhU3RyZWFtVHJhY2tT
b3VyY2VzUmVxdWVzdENsaWVudD4pIE9WRVJSSURFOwotICAgIHZpcnR1YWwgdm9pZCBkaWRTZXRN
ZWRpYVN0cmVhbVRyYWNrRW5hYmxlZChNZWRpYVN0cmVhbVNvdXJjZSopIE9WRVJSSURFOwotICAg
IHZpcnR1YWwgYm9vbCBkaWRBZGRNZWRpYVN0cmVhbVRyYWNrKE1lZGlhU3RyZWFtU291cmNlKikg
T1ZFUlJJREU7Ci0gICAgdmlydHVhbCBib29sIGRpZFJlbW92ZU1lZGlhU3RyZWFtVHJhY2soTWVk
aWFTdHJlYW1Tb3VyY2UqKSBPVkVSUklERTsKLSAgICB2aXJ0dWFsIHZvaWQgZGlkU3RvcExvY2Fs
TWVkaWFTdHJlYW0oTWVkaWFTdHJlYW1EZXNjcmlwdG9yKikgT1ZFUlJJREU7Ci0gICAgdmlydHVh
bCB2b2lkIGRpZENyZWF0ZU1lZGlhU3RyZWFtKE1lZGlhU3RyZWFtRGVzY3JpcHRvciopIE9WRVJS
SURFOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbW9jay9Nb2NrTWVkaWFTdHJlYW1DZW50ZXIuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTW9ja01lZGlhU3RyZWFtQ2VudGVyLmNwcAkocmV2
aXNpb24gMTU3MDE2KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9Nb2NrTWVkaWFT
dHJlYW1DZW50ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMiwxMiArMzIsOTcgQEAKICNpbmNs
dWRlICJNZWRpYVN0cmVhbS5oIgogI2luY2x1ZGUgIk1lZGlhU3RyZWFtQ3JlYXRpb25DbGllbnQu
aCIKICNpbmNsdWRlICJNZWRpYVN0cmVhbURlc2NyaXB0b3IuaCIKKyNpbmNsdWRlICJNZWRpYVN0
cmVhbVNvdXJjZS5oIgorI2luY2x1ZGUgIk1lZGlhU3RyZWFtU291cmNlQ2FwYWJpbGl0aWVzLmgi
CiAjaW5jbHVkZSAiTWVkaWFTdHJlYW1UcmFjay5oIgogI2luY2x1ZGUgIk1lZGlhU3RyZWFtVHJh
Y2tTb3VyY2VzUmVxdWVzdENsaWVudC5oIgotI2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCisj
aW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAor
Y2xhc3MgTW9ja1NvdXJjZSA6IHB1YmxpYyBNZWRpYVN0cmVhbVNvdXJjZSB7CitwdWJsaWM6Cisg
ICAgTW9ja1NvdXJjZShjb25zdCBBdG9taWNTdHJpbmcmIGlkLCBjb25zdCBBdG9taWNTdHJpbmcm
IG5hbWUsIE1lZGlhU3RyZWFtU291cmNlOjpUeXBlIHR5cGUpCisgICAgICAgIDogTWVkaWFTdHJl
YW1Tb3VyY2UoaWQsIHR5cGUsIG5hbWUpCisgICAgeworICAgIH0KKworICAgIHZpcnR1YWwgfk1v
Y2tTb3VyY2UoKSB7IH0KKworICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxNZWRpYVN0cmVhbVNvdXJj
ZUNhcGFiaWxpdGllcz4gY2FwYWJpbGl0aWVzKCkgY29uc3QgeyByZXR1cm4gbV9jYXBhYmlsaXRp
ZXM7IH0KKyAgICB2aXJ0dWFsIGNvbnN0IE1lZGlhU3RyZWFtU291cmNlU3RhdGVzJiBzdGF0ZXMo
KSB7IHJldHVybiBtX2N1cnJlbnRTdGF0ZXM7IH0KKworICAgIFJlZlB0cjxNZWRpYVN0cmVhbVNv
dXJjZUNhcGFiaWxpdGllcz4gbV9jYXBhYmlsaXRpZXM7CisgICAgTWVkaWFTdHJlYW1Tb3VyY2VT
dGF0ZXMgbV9jdXJyZW50U3RhdGVzOworfTsKKyAgICAKK3R5cGVkZWYgSGFzaE1hcDxTdHJpbmcs
IFJlZlB0cjxNb2NrU291cmNlPj4gTW9ja1NvdXJjZU1hcDsKKworc3RhdGljIE1vY2tTb3VyY2VN
YXAmIG1vY2tTb3VyY2VNYXAoKQoreworICAgIERFRklORV9TVEFUSUNfTE9DQUwoTW9ja1NvdXJj
ZU1hcCwgbW9ja1NvdXJjZU1hcCwgKCkpOworICAgIHJldHVybiBtb2NrU291cmNlTWFwOworfQor
CitzdGF0aWMgY29uc3QgQXRvbWljU3RyaW5nJiBtb2NrQXVkaW9Tb3VyY2VJRCgpCit7CisgICAg
c3RhdGljIE5ldmVyRGVzdHJveWVkPEF0b21pY1N0cmluZz4gaWQoIjIzOWMyNGIxLTJiMTUtMTFl
My04MjI0LTA4MDAyMDBjOWE2NiIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwp
OworICAgIHJldHVybiBpZDsKK30KKworc3RhdGljIGNvbnN0IEF0b21pY1N0cmluZyYgbW9ja1Zp
ZGVvU291cmNlSUQoKQoreworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxBdG9taWNTdHJpbmc+
IGlkKCIyMzljMjRiMC0yYjE1LTExZTMtODIyNC0wODAwMjAwYzlhNjYiLCBBdG9taWNTdHJpbmc6
OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKKyAgICByZXR1cm4gaWQ7Cit9CisKK3N0YXRpYyB2b2lk
IGluaXRpYWxpemVNb2NrU291cmNlcygpCit7CisgICAgUmVmUHRyPE1vY2tTb3VyY2U+IG1vY2tT
b3VyY2UxID0gYWRvcHRSZWYobmV3IE1vY2tTb3VyY2UobW9ja1ZpZGVvU291cmNlSUQoKSwgIk1v
Y2sgdmlkZW8gZGV2aWNlIiwgTWVkaWFTdHJlYW1Tb3VyY2U6OlZpZGVvKSk7CisgICAgbW9ja1Nv
dXJjZTEtPm1fY2FwYWJpbGl0aWVzID0gTWVkaWFTdHJlYW1Tb3VyY2VDYXBhYmlsaXRpZXM6OmNy
ZWF0ZSgpOworICAgIG1vY2tTb3VyY2UxLT5tX2NhcGFiaWxpdGllcy0+c2V0U291cmNlSWQobW9j
a1NvdXJjZTEtPmlkKCkpOworICAgIG1vY2tTb3VyY2UxLT5tX2NhcGFiaWxpdGllcy0+YWRkU291
cmNlVHlwZShNZWRpYVN0cmVhbVNvdXJjZVN0YXRlczo6Q2FtZXJhKTsKKyAgICBtb2NrU291cmNl
MS0+bV9jYXBhYmlsaXRpZXMtPmFkZFNvdXJjZVR5cGUoTWVkaWFTdHJlYW1Tb3VyY2VTdGF0ZXM6
Ok1pY3JvcGhvbmUpOworICAgIG1vY2tTb3VyY2UxLT5tX2NhcGFiaWxpdGllcy0+YWRkRmFjaW5n
TW9kZShNZWRpYVN0cmVhbVNvdXJjZVN0YXRlczo6VXNlcik7CisgICAgbW9ja1NvdXJjZTEtPm1f
Y2FwYWJpbGl0aWVzLT5hZGRGYWNpbmdNb2RlKE1lZGlhU3RyZWFtU291cmNlU3RhdGVzOjpFbnZp
cm9ubWVudCk7CisgICAgbW9ja1NvdXJjZTEtPm1fY2FwYWJpbGl0aWVzLT5zZXRXaWR0aFJhbmdl
KE1lZGlhU3RyZWFtU291cmNlQ2FwYWJpbGl0eVJhbmdlKDMyMFVMLCAxOTIwVUwsIHRydWUpKTsK
KyAgICBtb2NrU291cmNlMS0+bV9jYXBhYmlsaXRpZXMtPnNldEhlaWdodFJhbmdlKE1lZGlhU3Ry
ZWFtU291cmNlQ2FwYWJpbGl0eVJhbmdlKDI0MFVMLCAxMDgwVUwsIHRydWUpKTsKKyAgICBtb2Nr
U291cmNlMS0+bV9jYXBhYmlsaXRpZXMtPnNldEZyYW1lUmF0ZVJhbmdlKE1lZGlhU3RyZWFtU291
cmNlQ2FwYWJpbGl0eVJhbmdlKDE1LjBmLCA2MC4wZiwgdHJ1ZSkpOworICAgIG1vY2tTb3VyY2Ux
LT5tX2NhcGFiaWxpdGllcy0+c2V0QXNwZWN0UmF0aW9SYW5nZShNZWRpYVN0cmVhbVNvdXJjZUNh
cGFiaWxpdHlSYW5nZSg0IC8gMy4wZiwgMTYgLyA5LjBmLCB0cnVlKSk7CisgICAgbW9ja1NvdXJj
ZTEtPm1fY2FwYWJpbGl0aWVzLT5zZXRWb2x1bWVSYW5nZShNZWRpYVN0cmVhbVNvdXJjZUNhcGFi
aWxpdHlSYW5nZSgxMFVMLCA5MFVMLCB0cnVlKSk7CisKKyAgICBtb2NrU291cmNlMS0+bV9jdXJy
ZW50U3RhdGVzLnNvdXJjZVR5cGUgPSBNZWRpYVN0cmVhbVNvdXJjZVN0YXRlczo6Q2FtZXJhOwor
ICAgIG1vY2tTb3VyY2UxLT5tX2N1cnJlbnRTdGF0ZXMuc291cmNlSWQgPSBtb2NrU291cmNlMS0+
aWQoKTsKKyAgICBtb2NrU291cmNlMS0+bV9jdXJyZW50U3RhdGVzLmZhY2luZ01vZGUgPSBNZWRp
YVN0cmVhbVNvdXJjZVN0YXRlczo6VXNlcjsKKyAgICBtb2NrU291cmNlMS0+bV9jdXJyZW50U3Rh
dGVzLndpZHRoID0gMTkyMDsKKyAgICBtb2NrU291cmNlMS0+bV9jdXJyZW50U3RhdGVzLmhlaWdo
dCA9IDEwODA7CisgICAgbW9ja1NvdXJjZTEtPm1fY3VycmVudFN0YXRlcy5mcmFtZVJhdGUgPSAz
MDsKKyAgICBtb2NrU291cmNlMS0+bV9jdXJyZW50U3RhdGVzLmFzcGVjdFJhdGlvID0gMTYgLyA5
LjBmOworICAgIG1vY2tTb3VyY2UxLT5tX2N1cnJlbnRTdGF0ZXMudm9sdW1lID0gNzA7CisgICAg
bW9ja1NvdXJjZU1hcCgpLmFkZChtb2NrU291cmNlMS0+aWQoKSwgbW9ja1NvdXJjZTEucmVsZWFz
ZSgpKTsKKworICAgIFJlZlB0cjxNb2NrU291cmNlPiBtb2NrU291cmNlMiA9IGFkb3B0UmVmKG5l
dyBNb2NrU291cmNlKG1vY2tBdWRpb1NvdXJjZUlEKCksICJNb2NrIGF1ZGlvIGRldmljZSIsIE1l
ZGlhU3RyZWFtU291cmNlOjpBdWRpbykpOworICAgIG1vY2tTb3VyY2UyLT5tX2NhcGFiaWxpdGll
cyA9IE1lZGlhU3RyZWFtU291cmNlQ2FwYWJpbGl0aWVzOjpjcmVhdGUoKTsKKyAgICBtb2NrU291
cmNlMi0+bV9jYXBhYmlsaXRpZXMtPnNldFNvdXJjZUlkKG1vY2tTb3VyY2UyLT5pZCgpKTsKKyAg
ICBtb2NrU291cmNlMi0+bV9jYXBhYmlsaXRpZXMtPnNldFZvbHVtZVJhbmdlKE1lZGlhU3RyZWFt
U291cmNlQ2FwYWJpbGl0eVJhbmdlKDBVTCwgMTAwVUwsIHRydWUpKTsKKworICAgIG1vY2tTb3Vy
Y2UyLT5tX2N1cnJlbnRTdGF0ZXMuc291cmNlVHlwZSA9IE1lZGlhU3RyZWFtU291cmNlU3RhdGVz
OjpNaWNyb3Bob25lOworICAgIG1vY2tTb3VyY2UyLT5tX2N1cnJlbnRTdGF0ZXMuc291cmNlSWQg
PSBtb2NrU291cmNlMi0+aWQoKTsKKyAgICBtb2NrU291cmNlMi0+bV9jdXJyZW50U3RhdGVzLnZv
bHVtZSA9IDUwOworICAgIG1vY2tTb3VyY2VNYXAoKS5hZGQobW9ja1NvdXJjZTItPmlkKCksIG1v
Y2tTb3VyY2UyLnJlbGVhc2UoKSk7Cit9CisKK3ZvaWQgTW9ja01lZGlhU3RyZWFtQ2VudGVyOjpy
ZWdpc3Rlck1vY2tNZWRpYVN0cmVhbUNlbnRlcigpCit7CisgICAgREVGSU5FX1NUQVRJQ19MT0NB
TChNb2NrTWVkaWFTdHJlYW1DZW50ZXIsIGNlbnRlciwgKCkpOworICAgIHN0YXRpYyBib29sIHJl
Z2lzdGVyZWQgPSBmYWxzZTsKKyAgICBpZiAoIXJlZ2lzdGVyZWQpIHsKKyAgICAgICAgcmVnaXN0
ZXJlZCA9IHRydWU7CisgICAgICAgIE1lZGlhU3RyZWFtQ2VudGVyOjpzZXRTaGFyZWRTdHJlYW1D
ZW50ZXIoJmNlbnRlcik7CisgICAgICAgIGluaXRpYWxpemVNb2NrU291cmNlcygpOworICAgIH0K
K30KKwogc3RhdGljIGJvb2wgaXNTdXBwb3J0ZWRNb2NrQ29uc3RyYWludChjb25zdCBTdHJpbmcm
IGNvbnN0cmFpbnROYW1lKQogewogICAgIHJldHVybiBub3RGb3VuZCAhPSBjb25zdHJhaW50TmFt
ZS5maW5kKCJfYW5kX3N1cHBvcnRlZF8iKTsKQEAgLTc1LDE2ICsxNjAsNiBAQCBzdGF0aWMgU3Ry
aW5nIHZlcmlmeUNvbnN0cmFpbnRzKE1lZGlhQ29uCiAgICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7
CiB9CiAKLXZvaWQgTW9ja01lZGlhU3RyZWFtQ2VudGVyOjpyZWdpc3Rlck1vY2tNZWRpYVN0cmVh
bUNlbnRlcigpCi17Ci0gICAgREVGSU5FX1NUQVRJQ19MT0NBTChNb2NrTWVkaWFTdHJlYW1DZW50
ZXIsIGNlbnRlciwgKCkpOwotICAgIHN0YXRpYyBib29sIHJlZ2lzdGVyZWQgPSBmYWxzZTsKLSAg
ICBpZiAoIXJlZ2lzdGVyZWQpIHsKLSAgICAgICAgcmVnaXN0ZXJlZCA9IHRydWU7Ci0gICAgICAg
IE1lZGlhU3RyZWFtQ2VudGVyOjpzZXRTaGFyZWRTdHJlYW1DZW50ZXIoJmNlbnRlcik7Ci0gICAg
fQotfQotCiB2b2lkIE1vY2tNZWRpYVN0cmVhbUNlbnRlcjo6dmFsaWRhdGVSZXF1ZXN0Q29uc3Ry
YWludHMoUGFzc1JlZlB0cjxNZWRpYVN0cmVhbUNyZWF0aW9uQ2xpZW50PiBwcnBRdWVyeUNsaWVu
dCwgUGFzc1JlZlB0cjxNZWRpYUNvbnN0cmFpbnRzPiBhdWRpb0NvbnN0cmFpbnRzLCBQYXNzUmVm
UHRyPE1lZGlhQ29uc3RyYWludHM+IHZpZGVvQ29uc3RyYWludHMpCiB7CiAgICAgUmVmUHRyPE1l
ZGlhU3RyZWFtQ3JlYXRpb25DbGllbnQ+IGNsaWVudCA9IHBycFF1ZXJ5Q2xpZW50OwpAQCAtMTE4
LDYgKzE5Myw3IEBAIHZvaWQgTW9ja01lZGlhU3RyZWFtQ2VudGVyOjpjcmVhdGVNZWRpYVMKICAg
ICAKICAgICBWZWN0b3I8UmVmUHRyPE1lZGlhU3RyZWFtU291cmNlPj4gYXVkaW9Tb3VyY2VzOwog
ICAgIFZlY3RvcjxSZWZQdHI8TWVkaWFTdHJlYW1Tb3VyY2U+PiB2aWRlb1NvdXJjZXM7CisgICAg
TW9ja1NvdXJjZU1hcCYgbWFwID0gbW9ja1NvdXJjZU1hcCgpOwogCiAgICAgaWYgKGF1ZGlvQ29u
c3RyYWludHMpIHsKICAgICAgICAgU3RyaW5nIGludmFsaWRRdWVyeSA9IHZlcmlmeUNvbnN0cmFp
bnRzKGF1ZGlvQ29uc3RyYWludHMuZ2V0KCkpOwpAQCAtMTI3LDcgKzIwMywxMSBAQCB2b2lkIE1v
Y2tNZWRpYVN0cmVhbUNlbnRlcjo6Y3JlYXRlTWVkaWFTCiAgICAgICAgIH0KIAogICAgICAgICBp
ZiAoYXVkaW9Db25zdHJhaW50cykgewotICAgICAgICAgICAgUmVmUHRyPE1lZGlhU3RyZWFtU291
cmNlPiBhdWRpb1NvdXJjZSA9IE1lZGlhU3RyZWFtU291cmNlOjpjcmVhdGUoZW1wdHlTdHJpbmco
KSwgTWVkaWFTdHJlYW1Tb3VyY2U6OkF1ZGlvLCAiTW9jayBhdWRpbyBkZXZpY2UiKTsKKyAgICAg
ICAgICAgIE1vY2tTb3VyY2VNYXA6Oml0ZXJhdG9yIGl0ID0gbWFwLmZpbmQobW9ja0F1ZGlvU291
cmNlSUQoKSk7CisgICAgICAgICAgICBBU1NFUlQoaXQgIT0gbWFwLmVuZCgpKTsKKworICAgICAg
ICAgICAgUmVmUHRyPE1lZGlhU3RyZWFtU291cmNlPiBhdWRpb1NvdXJjZSA9IGl0LT52YWx1ZTsK
KyAgICAgICAgICAgIGF1ZGlvU291cmNlLT5yZXNldCgpOwogICAgICAgICAgICAgYXVkaW9Tb3Vy
Y2UtPnNldFJlYWR5U3RhdGUoTWVkaWFTdHJlYW1Tb3VyY2U6OkxpdmUpOwogICAgICAgICAgICAg
YXVkaW9Tb3VyY2VzLmFwcGVuZChhdWRpb1NvdXJjZS5yZWxlYXNlKCkpOwogICAgICAgICB9CkBA
IC0xNDEsNyArMjIxLDExIEBAIHZvaWQgTW9ja01lZGlhU3RyZWFtQ2VudGVyOjpjcmVhdGVNZWRp
YVMKICAgICAgICAgfQogCiAgICAgICAgIGlmICh2aWRlb0NvbnN0cmFpbnRzKSB7Ci0gICAgICAg
ICAgICBSZWZQdHI8TWVkaWFTdHJlYW1Tb3VyY2U+IHZpZGVvU291cmNlID0gTWVkaWFTdHJlYW1T
b3VyY2U6OmNyZWF0ZShlbXB0eVN0cmluZygpLCBNZWRpYVN0cmVhbVNvdXJjZTo6VmlkZW8sICJN
b2NrIHZpZGVvIGRldmljZSIpOworICAgICAgICAgICAgTW9ja1NvdXJjZU1hcDo6aXRlcmF0b3Ig
aXQgPSBtYXAuZmluZChtb2NrVmlkZW9Tb3VyY2VJRCgpKTsKKyAgICAgICAgICAgIEFTU0VSVChp
dCAhPSBtYXAuZW5kKCkpOworCisgICAgICAgICAgICBSZWZQdHI8TWVkaWFTdHJlYW1Tb3VyY2U+
IHZpZGVvU291cmNlID0gaXQtPnZhbHVlOworICAgICAgICAgICAgdmlkZW9Tb3VyY2UtPnJlc2V0
KCk7CiAgICAgICAgICAgICB2aWRlb1NvdXJjZS0+c2V0UmVhZHlTdGF0ZShNZWRpYVN0cmVhbVNv
dXJjZTo6TGl2ZSk7CiAgICAgICAgICAgICB2aWRlb1NvdXJjZXMuYXBwZW5kKHZpZGVvU291cmNl
LnJlbGVhc2UoKSk7CiAgICAgICAgIH0KQEAgLTE1MywzOSArMjM3LDIwIEBAIHZvaWQgTW9ja01l
ZGlhU3RyZWFtQ2VudGVyOjpjcmVhdGVNZWRpYVMKIGJvb2wgTW9ja01lZGlhU3RyZWFtQ2VudGVy
OjpnZXRNZWRpYVN0cmVhbVRyYWNrU291cmNlcyhQYXNzUmVmUHRyPE1lZGlhU3RyZWFtVHJhY2tT
b3VyY2VzUmVxdWVzdENsaWVudD4gcHJwQ2xpZW50KQogewogICAgIFJlZlB0cjxNZWRpYVN0cmVh
bVRyYWNrU291cmNlc1JlcXVlc3RDbGllbnQ+IHJlcXVlc3RDbGllbnQgPSBwcnBDbGllbnQ7Ci0g
ICAgVmVjdG9yPFJlZlB0cjxUcmFja1NvdXJjZUluZm8+PiBzb3VyY2VzKDIpOworICAgIFZlY3Rv
cjxSZWZQdHI8VHJhY2tTb3VyY2VJbmZvPj4gc291cmNlczsKIAotICAgIHNvdXJjZXNbMF0gPSBU
cmFja1NvdXJjZUluZm86OmNyZWF0ZSgiTW9ja19hdWRpb19kZXZpY2VfSUQiLCBUcmFja1NvdXJj
ZUluZm86OkF1ZGlvLCAiTW9jayBhdWRpbyBkZXZpY2UiKTsKLSAgICBzb3VyY2VzWzFdID0gVHJh
Y2tTb3VyY2VJbmZvOjpjcmVhdGUoIk1vY2tfdmlkZW9fZGV2aWNlX0lEIiwgVHJhY2tTb3VyY2VJ
bmZvOjpWaWRlbywgIk1vY2sgdmlkZW8gZGV2aWNlIik7Ci0KLSAgICByZXF1ZXN0Q2xpZW50LT5k
aWRDb21wbGV0ZVJlcXVlc3Qoc291cmNlcyk7Ci0gICAgcmV0dXJuIHRydWU7Ci19CisgICAgTW9j
a1NvdXJjZU1hcCYgbWFwID0gbW9ja1NvdXJjZU1hcCgpOworICAgIE1vY2tTb3VyY2VNYXA6Oml0
ZXJhdG9yIGVuZCA9IG1hcC5lbmQoKTsKKyAgICBmb3IgKE1vY2tTb3VyY2VNYXA6Oml0ZXJhdG9y
IGl0ID0gbWFwLmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkgeworICAgICAgICBNb2NrU291cmNl
KiBzb3VyY2UgPSBpdC0+dmFsdWUuZ2V0KCk7CiAKLXZvaWQgTW9ja01lZGlhU3RyZWFtQ2VudGVy
OjpkaWRTZXRNZWRpYVN0cmVhbVRyYWNrRW5hYmxlZChNZWRpYVN0cmVhbVNvdXJjZSogc291cmNl
KQotewotICAgIHNvdXJjZS0+c2V0UmVhZHlTdGF0ZShNZWRpYVN0cmVhbVNvdXJjZTo6TGl2ZSk7
Ci19Ci0KLWJvb2wgTW9ja01lZGlhU3RyZWFtQ2VudGVyOjpkaWRBZGRNZWRpYVN0cmVhbVRyYWNr
KE1lZGlhU3RyZWFtU291cmNlKikKLXsKLSAgICByZXR1cm4gdHJ1ZTsKLX0KKyAgICAgICAgc291
cmNlc1swXSA9IFRyYWNrU291cmNlSW5mbzo6Y3JlYXRlKHNvdXJjZS0+aWQoKSwgc291cmNlLT50
eXBlKCkgPT0gTWVkaWFTdHJlYW1Tb3VyY2U6OlZpZGVvID8gVHJhY2tTb3VyY2VJbmZvOjpWaWRl
byA6IFRyYWNrU291cmNlSW5mbzo6QXVkaW8sIHNvdXJjZS0+bmFtZSgpKTsKKyAgICB9CiAKLWJv
b2wgTW9ja01lZGlhU3RyZWFtQ2VudGVyOjpkaWRSZW1vdmVNZWRpYVN0cmVhbVRyYWNrKE1lZGlh
U3RyZWFtU291cmNlKikKLXsKKyAgICByZXF1ZXN0Q2xpZW50LT5kaWRDb21wbGV0ZVJlcXVlc3Qo
c291cmNlcyk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXZvaWQgTW9ja01lZGlhU3RyZWFtQ2Vu
dGVyOjpkaWRTdG9wTG9jYWxNZWRpYVN0cmVhbShNZWRpYVN0cmVhbURlc2NyaXB0b3IqIHN0cmVh
bSkKLXsKLSAgICBlbmRMb2NhbE1lZGlhU3RyZWFtKHN0cmVhbSk7Ci19Ci0KLXZvaWQgTW9ja01l
ZGlhU3RyZWFtQ2VudGVyOjpkaWRDcmVhdGVNZWRpYVN0cmVhbShNZWRpYVN0cmVhbURlc2NyaXB0
b3IqKQotewotfQotCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBFTkFCTEUo
TUVESUFfU1RSRUFNKQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9Nb2NrTWVk
aWFTdHJlYW1DZW50ZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
b2NrL01vY2tNZWRpYVN0cmVhbUNlbnRlci5oCShyZXZpc2lvbiAxNTcwMTYpCisrKyBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01vY2tNZWRpYVN0cmVhbUNlbnRlci5oCSh3b3JraW5nIGNv
cHkpCkBAIC00MCwxMSArNDAsNiBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHZhbGlkYXRl
UmVxdWVzdENvbnN0cmFpbnRzKFBhc3NSZWZQdHI8TWVkaWFTdHJlYW1DcmVhdGlvbkNsaWVudD4s
IFBhc3NSZWZQdHI8TWVkaWFDb25zdHJhaW50cz4gYXVkaW9Db25zdHJhaW50cywgUGFzc1JlZlB0
cjxNZWRpYUNvbnN0cmFpbnRzPiB2aWRlb0NvbnN0cmFpbnRzKTsKICAgICB2aXJ0dWFsIHZvaWQg
Y3JlYXRlTWVkaWFTdHJlYW0oUGFzc1JlZlB0cjxNZWRpYVN0cmVhbUNyZWF0aW9uQ2xpZW50Piwg
UGFzc1JlZlB0cjxNZWRpYUNvbnN0cmFpbnRzPiBhdWRpb0NvbnN0cmFpbnRzLCBQYXNzUmVmUHRy
PE1lZGlhQ29uc3RyYWludHM+IHZpZGVvQ29uc3RyYWludHMpOwogICAgIHZpcnR1YWwgYm9vbCBn
ZXRNZWRpYVN0cmVhbVRyYWNrU291cmNlcyhQYXNzUmVmUHRyPE1lZGlhU3RyZWFtVHJhY2tTb3Vy
Y2VzUmVxdWVzdENsaWVudD4pIE9WRVJSSURFOwotICAgIHZpcnR1YWwgdm9pZCBkaWRTZXRNZWRp
YVN0cmVhbVRyYWNrRW5hYmxlZChNZWRpYVN0cmVhbVNvdXJjZSopIE9WRVJSSURFOwotICAgIHZp
cnR1YWwgYm9vbCBkaWRBZGRNZWRpYVN0cmVhbVRyYWNrKE1lZGlhU3RyZWFtU291cmNlKikgT1ZF
UlJJREU7Ci0gICAgdmlydHVhbCBib29sIGRpZFJlbW92ZU1lZGlhU3RyZWFtVHJhY2soTWVkaWFT
dHJlYW1Tb3VyY2UqKSBPVkVSUklERTsKLSAgICB2aXJ0dWFsIHZvaWQgZGlkU3RvcExvY2FsTWVk
aWFTdHJlYW0oTWVkaWFTdHJlYW1EZXNjcmlwdG9yKikgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCB2
b2lkIGRpZENyZWF0ZU1lZGlhU3RyZWFtKE1lZGlhU3RyZWFtRGVzY3JpcHRvciopIE9WRVJSSURF
OwogCiBwcml2YXRlOgogICAgIE1vY2tNZWRpYVN0cmVhbUNlbnRlcigpIHsgfQpJbmRleDogTGF5
b3V0VGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL0NoYW5nZUxvZwko
cmV2aXNpb24gMTU3MDE2KQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkp
CkBAIC0xLDMgKzEsMTIgQEAKKzIwMTMtMTAtMDYgIEVyaWMgQ2FybHNvbiAgPGVyaWMuY2FybHNv
bkBhcHBsZS5jb20+CisKKyAgICAgICAgW01lZGlhU3RyZWFtIEFQSV0gdXBkYXRlIE1lZGlhU3Ry
ZWFtVHJhY2sgb2JqZWN0IHRvIG1hdGNoIHNwZWMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTEyMTk0MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgICogZmFzdC9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVRyYWNr
Lmh0bWw6CisKIDIwMTMtMTAtMDYgIEZpbGlwIFBpemxvICA8ZnBpemxvQGFwcGxlLmNvbT4KIAog
ICAgICAgICBVbmlmaWVkIHRlc3QgaW5mcmFzdHJ1Y3R1cmUgdmlhIHRoZSBqc2Mgc2hlbGwKSW5k
ZXg6IExheW91dFRlc3RzL2Zhc3QvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1UcmFjay5odG1sCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1UcmFj
ay5odG1sCShyZXZpc2lvbiAxNTcwMTYpCisrKyBMYXlvdXRUZXN0cy9mYXN0L21lZGlhc3RyZWFt
L01lZGlhU3RyZWFtVHJhY2suaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMSw3OSArMSwxNzAgQEAK
IDwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vSUVURi8vRFREIEhUTUwvL0VOIj4KIDxodG1sPgot
PGhlYWQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3Nj
cmlwdD4KLTwvaGVhZD4KLTxib2R5PgotPHAgaWQ9ImRlc2NyaXB0aW9uIj48L3A+Ci08ZGl2IGlk
PSJjb25zb2xlIj48L2Rpdj4KLTxzY3JpcHQ+Ci1kZXNjcmlwdGlvbigiVGVzdHMgTWVkaWFTdHJl
YW1UcmFjayBjYWxsYmFja3MuIik7Ci0KLS8vIE5vdGUgdGhhdCB0aGUgYmVsb3cgYmVoYXZpb3Vy
IGRvZXNuJ3QgcmVmbGVjdCBob3cgaXQgd29ya3Mgb3V0c2lkZSBvZiBMYXlvdXRUZXN0cy4KLS8v
IFRoZSB1bmRlcmx5aW5nIG1vY2sgaXMgbW9kaWZpZWQgdG8gdHJpZ2dlciB0aGUgZXZlbnRzIHdo
ZW4gY2VydGFpbiBmdW5jdGlvbnMgYXJlIGNhbGxlZC4KLS8vIFRoaXMgbW9kaWZpZWQgYmVoYXZp
b3VyIGFsbG93cyB1cyB0byB0ZXN0IHRoZSBNZWRpYVN0cmVhbVRyYWNrIGNsYXNzIHByb3Blcmx5
LgotCi12YXIgc3RyZWFtOwotdmFyIHRyYWNrOwotCi1mdW5jdGlvbiBlcnJvcigpIHsKLSAgICB0
ZXN0RmFpbGVkKCdTdHJlYW0gZ2VuZXJhdGlvbiBmYWlsZWQuJyk7Ci0gICAgZmluaXNoSlNUZXN0
KCk7Ci19Ci0KLWZ1bmN0aW9uIGdldFVzZXJNZWRpYShjb25zdHJhaW50cywgY2FsbGJhY2spIHsK
LSAgICB0cnkgewotICAgICAgICBuYXZpZ2F0b3Iud2Via2l0R2V0VXNlck1lZGlhKGNvbnN0cmFp
bnRzLCBjYWxsYmFjaywgZXJyb3IpOwotICAgIH0gY2F0Y2ggKGUpIHsKLSAgICAgICAgdGVzdEZh
aWxlZCgnd2Via2l0R2V0VXNlck1lZGlhIHRocmV3IGV4Y2VwdGlvbiA6JyArIGUpOwotICAgICAg
ICBmaW5pc2hKU1Rlc3QoKTsKLSAgICB9Ci19Ci0KLWZ1bmN0aW9uIG9uVHJhY2tFbmRlZCgpIHsK
LSAgICB0ZXN0UGFzc2VkKCdUcmFjayBvbmVuZGVkIGNhbGxiYWNrIHN1Y2NlZWRlZC4nKTsKLQot
ICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygndHJhY2sucmVhZHlTdGF0ZScsICdlbmRlZCcpOwot
Ci0gICAgZmluaXNoSlNUZXN0KCk7Ci19Ci0KLWZ1bmN0aW9uIG9uVHJhY2tVbm11dGUoKSB7Ci0g
ICAgdGVzdFBhc3NlZCgnVHJhY2sgb251bm11dGUgY2FsbGJhY2sgc3VjY2VlZGVkLicpOwotCi0g
ICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCd0cmFjay5yZWFkeVN0YXRlJywgJ2xpdmUnKTsKLQot
ICAgIHN0cmVhbS5zdG9wKCk7Ci19Ci0KLWZ1bmN0aW9uIG9uVHJhY2tNdXRlKCkgewotICAgIHRl
c3RQYXNzZWQoJ1RyYWNrIG9ubXV0ZSBjYWxsYmFjayBzdWNjZWVkZWQuJyk7Ci0KLSAgICBzaG91
bGRCZUVxdWFsVG9TdHJpbmcoJ3RyYWNrLnJlYWR5U3RhdGUnLCAnbXV0ZWQnKTsKLQotICAgIHRy
YWNrLmVuYWJsZWQgPSB0cnVlOwotfQotCi1mdW5jdGlvbiBnb3RTdHJlYW0ocykgewotICAgIHRl
c3RQYXNzZWQoJ2dldFVzZXJNZWRpYSBzdWNjZWVkZWQuJyk7Ci0KLSAgICBzdHJlYW0gPSBzOwot
ICAgIHRyYWNrID0gc3RyZWFtLmdldFZpZGVvVHJhY2tzKClbMF07Ci0KLSAgICBzaG91bGRCZUVx
dWFsVG9TdHJpbmcoJ3RyYWNrLnJlYWR5U3RhdGUnLCAnbGl2ZScpOwotCi0gICAgdHJhY2sub251
bm11dGUgPSBvblRyYWNrVW5tdXRlOwotICAgIHRyYWNrLm9ubXV0ZSA9IG9uVHJhY2tNdXRlOwot
ICAgIHRyYWNrLm9uZW5kZWQgPSBvblRyYWNrRW5kZWQ7Ci0KLSAgICB0cmFjay5lbmFibGVkID0g
ZmFsc2U7Ci19Ci0KLWdldFVzZXJNZWRpYSh7YXVkaW86dHJ1ZSwgdmlkZW86dHJ1ZX0sIGdvdFN0
cmVhbSk7Ci0KLXdpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKLXdpbmRvdy5zdWNjZXNzZnVs
bHlQYXJzZWQgPSB0cnVlOwotPC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2Vz
L2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Ci08L2JvZHk+CisgICAgPGhlYWQ+CisgICAgICAg
IDxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0Pgor
ICAgICAgICA8c2NyaXB0PgorICAgICAgICAgICAgdmFyIG1lZGlhU3RyZWFtOworICAgICAgICAg
ICAgdmFyIHZpZGVvVHJhY2s7CisgICAgICAgICAgICB2YXIgdmlkZW9UcmFjazI7CisgICAgICAg
ICAgICB2YXIgYXVkaW9UcmFjazsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgZnVuY3Rpb24g
ZXJyb3IoKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoJ1N0cmVh
bSBnZW5lcmF0aW9uIGZhaWxlZC4nKTsKKyAgICAgICAgICAgICAgICBmaW5pc2hKU1Rlc3QoKTsK
KyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgZnVuY3Rpb24gZ2V0VXNlck1lZGlhKGNvbnN0
cmFpbnRzLCBjYWxsYmFjaykKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICB0cnkgewor
ICAgICAgICAgICAgICAgICAgICBuYXZpZ2F0b3Iud2Via2l0R2V0VXNlck1lZGlhKGNvbnN0cmFp
bnRzLCBjYWxsYmFjaywgZXJyb3IpOworICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHsKKyAg
ICAgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgnd2Via2l0R2V0VXNlck1lZGlhIHRocmV3IGV4
Y2VwdGlvbiA6JyArIGUpOworICAgICAgICAgICAgICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAg
ICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgICAKKyAgICAgICAgICAg
IGZ1bmN0aW9uIG9uVHJhY2tFbmRlZCgpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAg
dGVzdFBhc3NlZCgnVHJhY2sgb25lbmRlZCBjYWxsYmFjayBzdWNjZWVkZWQuJyk7CisgICAgICAg
ICAgICAgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCd2aWRlb1RyYWNrLnJlYWR5U3RhdGUnLCAn
ZW5kZWQnKTsKKyAgICAgICAgICAgICAgICBkZWJ1ZygiIik7CisgICAgICAgICAgICAgICAgZmlu
aXNoSlNUZXN0KCk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGZ1bmN0aW9uIG9uVHJh
Y2tTdGFydGVkKCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCdU
cmFjayBvbnN0YXJ0ZWQgY2FsbGJhY2sgc3VjY2VlZGVkLicpOworICAgICAgICAgICAgICAgIHNo
b3VsZEJlRXF1YWxUb1N0cmluZygndmlkZW9UcmFjay5yZWFkeVN0YXRlJywgJ2xpdmUnKTsKKyAg
ICAgICAgICAgIH0KKworICAgICAgICAgICAgZnVuY3Rpb24gb25UcmFja092ZXJDb25zdHJhaW5l
ZCgpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgnVHJhY2sgb25v
dmVyY29uc3RyYWluZWQgY2FsbGJhY2sgc3VjY2VlZGVkLicpOworICAgICAgICAgICAgICAgIGZp
bmlzaEpTVGVzdCgpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBmdW5jdGlvbiBvblRy
YWNrVW5tdXRlKCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCdU
cmFjayBvbnVubXV0ZSBjYWxsYmFjayBzdWNjZWVkZWQuJyk7CisgICAgICAgICAgICAgICAgc2hv
dWxkQmVFcXVhbFRvU3RyaW5nKCd2aWRlb1RyYWNrLnJlYWR5U3RhdGUnLCAnbGl2ZScpOworICAg
ICAgICAgICAgICAgIHZpZGVvVHJhY2suc3RvcCgpOworICAgICAgICAgICAgfQorCisgICAgICAg
ICAgICBmdW5jdGlvbiBvblRyYWNrTXV0ZSgpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAg
ICAgdGVzdFBhc3NlZCgnVHJhY2sgb25tdXRlIGNhbGxiYWNrIHN1Y2NlZWRlZC4nKTsKKyAgICAg
ICAgICAgICAgICBzaG91bGRCZUVxdWFsKCd2aWRlb1RyYWNrLm11dGVkJywgdHJ1ZSk7CisgICAg
ICAgICAgICB9CisKKyAgICAgICAgICAgIGZ1bmN0aW9uIGxvZ0NhcGFiaWxpdHlSYW5nZShuYW1l
LCByYW5nZSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBkZWJ1ZygiICAiICsgbmFt
ZSk7CisgICAgICAgICAgICAgICAgZGVidWcoIiAgIG1pbiA6ICIgKyByYW5nZS5taW4pOworICAg
ICAgICAgICAgICAgIGRlYnVnKCIgICBtYXggOiAiICsgcmFuZ2UubWF4KTsKKyAgICAgICAgICAg
ICAgICBkZWJ1ZygiICAgc3VwcG9ydGVkIDogIiArIHJhbmdlLnN1cHBvcnRlZCk7CisgICAgICAg
ICAgICB9CisKKyAgICAgICAgICAgIGZ1bmN0aW9uIGxvZ0NhcGFiaWxpdHlMaXN0KG5hbWUsIGxp
c3QpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgZGVidWcoIiAgIiArIG5hbWUpOwor
ICAgICAgICAgICAgICAgIGZvciAoaSA9IDA7IGkgPCBsaXN0Lmxlbmd0aDsgaSsrKQorICAgICAg
ICAgICAgICAgIGRlYnVnKCIgICAgIiArIGkgKyAiIDogIiArIGxpc3RbaV0pOworICAgICAgICAg
ICAgfQorCisgICAgICAgICAgICBmdW5jdGlvbiBjaGVja0NhcGFiaWxpdGllcyh0cmFjaykKKyAg
ICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBkZWJ1ZygiY2hlY2tpbmcgdHJhY2suY2FwYWJp
bGl0aWVzKCkiKTsKKyAgICAgICAgICAgICAgICBjYXBhYmlsaXRpZXMgPSB0cmFjay5jYXBhYmls
aXRpZXMoKTsKKyAgICAgICAgICAgICAgICBsb2dDYXBhYmlsaXR5TGlzdCgic291cmNlSWQiLCBj
YXBhYmlsaXRpZXMuc291cmNlSWQpOworICAgICAgICAgICAgICAgIGlmICh0cmFjay5raW5kID09
ICJ2aWRlbyIpIHsKKyAgICAgICAgICAgICAgICAgICAgbG9nQ2FwYWJpbGl0eUxpc3QoInNvdXJj
ZVR5cGUiLCBjYXBhYmlsaXRpZXMuc291cmNlVHlwZSk7CisgICAgICAgICAgICAgICAgICAgIGxv
Z0NhcGFiaWxpdHlSYW5nZSgid2lkdGgiLCBjYXBhYmlsaXRpZXMud2lkdGgpOworICAgICAgICAg
ICAgICAgICAgICBsb2dDYXBhYmlsaXR5UmFuZ2UoImhlaWdodCIsIGNhcGFiaWxpdGllcy5oZWln
aHQpOworICAgICAgICAgICAgICAgICAgICBsb2dDYXBhYmlsaXR5UmFuZ2UoImZyYW1lUmF0ZSIs
IGNhcGFiaWxpdGllcy5mcmFtZVJhdGUpOworICAgICAgICAgICAgICAgICAgICBsb2dDYXBhYmls
aXR5UmFuZ2UoImFzcGVjdFJhdGlvIiwgY2FwYWJpbGl0aWVzLmFzcGVjdFJhdGlvKTsKKyAgICAg
ICAgICAgICAgICAgICAgbG9nQ2FwYWJpbGl0eUxpc3QoImZhY2luZ01vZGUiLCBjYXBhYmlsaXRp
ZXMuZmFjaW5nTW9kZSk7CisgICAgICAgICAgICAgICAgfSBlbHNlCisgICAgICAgICAgICAgICAg
ICAgIGxvZ0NhcGFiaWxpdHlSYW5nZSgidm9sdW1lIiwgY2FwYWJpbGl0aWVzLnZvbHVtZSk7Cisg
ICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGZ1bmN0aW9uIGNoZWNrU3RhdGVzKHRyYWNrKQor
ICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGRlYnVnKCJjaGVja2luZyB0cmFjay5zdGF0
ZXMoKSIpOworICAgICAgICAgICAgICAgIGNhcGFiaWxpdGllcyA9IHRyYWNrLmNhcGFiaWxpdGll
cygpOworICAgICAgICAgICAgICAgIHN0YXRlcyA9IHRyYWNrLnN0YXRlcygpOworICAgICAgICAg
ICAgICAgIHNob3VsZEJlKCdzdGF0ZXMuc291cmNlSWQnLCAnY2FwYWJpbGl0aWVzLnNvdXJjZUlk
WzBdJyk7CisgICAgICAgICAgICAgICAgaWYgKHRyYWNrLmtpbmQgPT0gInZpZGVvIikgeworICAg
ICAgICAgICAgICAgICAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoJ3N0YXRlcy5zb3VyY2VUeXBl
JywgJ2NhbWVyYScpOworICAgICAgICAgICAgICAgICAgICBkZWJ1ZygiICB3aWR0aCA6ICIgKyBz
dGF0ZXMud2lkdGgpOworICAgICAgICAgICAgICAgICAgICBkZWJ1ZygiICBoZWlnaHQgOiAiICsg
c3RhdGVzLmhlaWdodCk7CisgICAgICAgICAgICAgICAgICAgIGRlYnVnKCIgIGZyYW1lUmF0ZSA6
ICIgKyBzdGF0ZXMuZnJhbWVSYXRlKTsKKyAgICAgICAgICAgICAgICAgICAgZGVidWcoIiAgYXNw
ZWN0UmF0aW8gOiAiICsgc3RhdGVzLmFzcGVjdFJhdGlvKTsKKyAgICAgICAgICAgICAgICAgICAg
ZGVidWcoIiAgZmFjaW5nTW9kZSA6ICIgKyBzdGF0ZXMuZmFjaW5nTW9kZSk7CisgICAgICAgICAg
ICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5n
KCdzdGF0ZXMuc291cmNlVHlwZScsICdtaWNyb3Bob25lJyk7CisgICAgICAgICAgICAgICAgICAg
IGRlYnVnKCIgIHZvbHVtZSA6ICIgKyBzdGF0ZXMudm9sdW1lKTsKKyAgICAgICAgICAgICAgICB9
CisgICAgICAgICAgICB9CisgICAgICAgICAgICAKKyAgICAgICAgICAgIGZ1bmN0aW9uIGNoZWNr
VHJhY2sodCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICB0cmFjayA9IHQ7CisgICAg
ICAgICAgICAgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCd0cmFjay5yZWFkeVN0YXRlJywgJ2xp
dmUnKTsKKyAgICAgICAgICAgICAgICBjaGVja0NhcGFiaWxpdGllcyh0cmFjayk7CisgICAgICAg
ICAgICAgICAgY2hlY2tTdGF0ZXModHJhY2spOworICAgICAgICAgICAgfQorCisgICAgICAgICAg
ICBmdW5jdGlvbiBnb3RTdHJlYW0oc3RyZWFtKQorICAgICAgICAgICAgeworICAgICAgICAgICAg
ICAgIG1lZGlhU3RyZWFtID0gc3RyZWFtOworICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoJ2dl
dFVzZXJNZWRpYSBzdWNjZWVkZWQuJyk7CisgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICBk
ZWJ1ZygiIik7CisgICAgICAgICAgICAgICAgZXZhbEFuZExvZygidmlkZW9UcmFjayA9IG1lZGlh
U3RyZWFtLmdldFZpZGVvVHJhY2tzKClbMF0iKTsKKyAgICAgICAgICAgICAgICBjaGVja1RyYWNr
KHZpZGVvVHJhY2spOworCisgICAgICAgICAgICAgICAgZGVidWcoIiIpOworICAgICAgICAgICAg
ICAgIGV2YWxBbmRMb2coImF1ZGlvVHJhY2sgPSBtZWRpYVN0cmVhbS5nZXRBdWRpb1RyYWNrcygp
WzBdIik7CisgICAgICAgICAgICAgICAgY2hlY2tUcmFjayhhdWRpb1RyYWNrKTsKKworICAgICAg
ICAgICAgICAgIHZpZGVvVHJhY2sub25tdXRlID0gb25UcmFja011dGU7CisgICAgICAgICAgICAg
ICAgdmlkZW9UcmFjay5vbnVubXV0ZSA9IG9uVHJhY2tVbm11dGU7CisgICAgICAgICAgICAgICAg
dmlkZW9UcmFjay5vbmVuZGVkID0gb25UcmFja0VuZGVkOworICAgICAgICAgICAgICAgIHZpZGVv
VHJhY2sub25zdGFydGVkID0gb25UcmFja1N0YXJ0ZWQ7CisgICAgICAgICAgICAgICAgdmlkZW9U
cmFjay5vbm92ZXJjb25zdHJhaW5lZCA9IG9uVHJhY2tPdmVyQ29uc3RyYWluZWQ7CisgICAgICAg
ICAgICAKKyAgICAgICAgICAgICAgICBkZWJ1ZygiIik7CisgICAgICAgICAgICAgICAgZXZhbEFu
ZExvZygidmlkZW9UcmFjazIgPSB2aWRlb1RyYWNrLmNsb25lKCkiKTsKKyAgICAgICAgICAgICAg
ICBjaGVja1RyYWNrKHZpZGVvVHJhY2syKTsKKyAgICAgICAgICAgICAgICBzaG91bGROb3RCZSgn
dmlkZW9UcmFjay5pZCcsICd2aWRlb1RyYWNrMi5pZCcpOworICAgICAgICAgICAgICAgIHNob3Vs
ZEJlKCd2aWRlb1RyYWNrLmtpbmQnLCAndmlkZW9UcmFjazIua2luZCcpOworICAgICAgICAgICAg
ICAgIHNob3VsZEJlKCd2aWRlb1RyYWNrLmxhYmVsJywgJ3ZpZGVvVHJhY2syLmxhYmVsJyk7Cisg
ICAgICAgICAgICAgICAgc2hvdWxkQmUoJ3ZpZGVvVHJhY2subXV0ZWQnLCAndmlkZW9UcmFjazIu
bXV0ZWQnKTsKKyAgICAgICAgICAgICAgICBzaG91bGRCZSgndmlkZW9UcmFjay5lbmFibGVkJywg
J3ZpZGVvVHJhY2syLmVuYWJsZWQnKTsKKyAgICAgICAgICAgICAgICBzaG91bGRCZSgndmlkZW9U
cmFjay5yZWFkeVN0YXRlJywgJ3ZpZGVvVHJhY2syLnJlYWR5U3RhdGUnKTsKKworICAgICAgICAg
ICAgICAgIGRlYnVnKCIiKTsKKyAgICAgICAgICAgICAgICBldmFsQW5kTG9nKCJ2aWRlb1RyYWNr
LnN0b3AoKSIpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBmdW5jdGlvbiBzdGFydCgp
CisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgZGVzY3JpcHRpb24oIlRlc3RzIE1lZGlh
U3RyZWFtVHJhY2sgY2FsbGJhY2tzLiIpOworICAgICAgICAgICAgICAgIAorICAgICAgICAgICAg
ICAgIC8vIE5vdGUgdGhhdCB0aGUgYmVsb3cgYmVoYXZpb3VyIGRvZXNuJ3QgcmVmbGVjdCBob3cg
aXQgd29ya3Mgb3V0c2lkZSBvZiBMYXlvdXRUZXN0cy4KKyAgICAgICAgICAgICAgICAvLyBUaGUg
dW5kZXJseWluZyBtb2NrIGlzIG1vZGlmaWVkIHRvIHRyaWdnZXIgdGhlIGV2ZW50cyB3aGVuIGNl
cnRhaW4gZnVuY3Rpb25zIGFyZSBjYWxsZWQuCisgICAgICAgICAgICAgICAgLy8gVGhpcyBtb2Rp
ZmllZCBiZWhhdmlvdXIgYWxsb3dzIHVzIHRvIHRlc3QgdGhlIE1lZGlhU3RyZWFtVHJhY2sgY2xh
c3MgcHJvcGVybHkuCisgICAgICAgICAgICAgICAgZ2V0VXNlck1lZGlhKHthdWRpbzp0cnVlLCB2
aWRlbzp0cnVlfSwgZ290U3RyZWFtKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgd2lu
ZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOworICAgICAgICAgICAgd2luZG93LnN1Y2Nlc3NmdWxs
eVBhcnNlZCA9IHRydWU7CisgICAgICAgIDwvc2NyaXB0PgorICAgIDwvaGVhZD4KKyAgICA8Ym9k
eSBvbmxvYWQ9InN0YXJ0KCkiPgorICAgICAgICA8cCBpZD0iZGVzY3JpcHRpb24iPjwvcD4KKyAg
ICAgICAgPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+CisgICAgICAgIDxzY3JpcHQgc3JjPSIuLi8u
Li9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKyAgICA8L2JvZHk+CiA8L2h0
bWw+Cg==
</data>
<flag name="review"
          id="235976"
          type_id="1"
          status="-"
          setter="pnormand"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>213603</attachid>
            <date>2013-10-07 10:27:52 -0700</date>
            <delta_ts>2013-10-07 12:33:10 -0700</delta_ts>
            <desc>Updated patch</desc>
            <filename>track_spec_update_26.txt</filename>
            <type>text/plain</type>
            <size>216415</size>
            <attacher name="Eric Carlson">eric.carlson</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE1NzA0MSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE3OCBAQAorMjAxMy0xMC0wNiAgRXJpYyBD
YXJsc29uICA8ZXJpYy5jYXJsc29uQGFwcGxlLmNvbT4KKworICAgICAgICBbTWVkaWFTdHJlYW0g
QVBJXSB1cGRhdGUgTWVkaWFTdHJlYW1UcmFjayBvYmplY3QgdG8gbWF0Y2ggc3BlYworICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTIxOTQwCisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLCBl
eGlzdGluZyB0ZXN0IHVwZGF0ZWQuCisKKyAgICAgICAgQWRkIG5ldyBzb3VyY2UgZmlsZXMgdG8g
dGhlIHByb2plY3Q6CisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogRGVyaXZl
ZFNvdXJjZXMubWFrZToKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5saXN0LmFtOgorICAgICAgICAq
IFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKworICAgICAgICBOZXcgY2FwYWJp
bGl0eSBkaWN0aW9uYXJ5IG9iamVjdHM6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9B
bGxBdWRpb0NhcGFiaWxpdGllcy5oOiBBZGRlZC4KKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3Ry
ZWFtL0FsbEF1ZGlvQ2FwYWJpbGl0aWVzLmlkbDogQWRkZWQuCisgICAgICAgICogTW9kdWxlcy9t
ZWRpYXN0cmVhbS9BbGxWaWRlb0NhcGFiaWxpdGllcy5oOiBBZGRlZC4KKyAgICAgICAgKiBNb2R1
bGVzL21lZGlhc3RyZWFtL0FsbFZpZGVvQ2FwYWJpbGl0aWVzLmlkbDogQWRkZWQuCisKKyAgICAg
ICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL0F1ZGlvU3RyZWFtVHJhY2suY3BwOgorICAgICAgICAo
V2ViQ29yZTo6QXVkaW9TdHJlYW1UcmFjazo6Y3JlYXRlKTogTmV3IHZlcnNpb24gdGhhdCB0YWtl
cyBhIE1lZGlhU3RyZWFtVHJhY2sqLgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vQXVk
aW9TdHJlYW1UcmFjay5oOgorCisgICAgICAgIE5ldyBvYmplY3QgZm9yIGEgY2FwYWJpbGl0eSBy
YW5nZToKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL0NhcGFiaWxpdHlSYW5nZS5jcHA6
IEFkZGVkLgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vQ2FwYWJpbGl0eVJhbmdlLmg6
IEFkZGVkLgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vQ2FwYWJpbGl0eVJhbmdlLmlk
bDogQWRkZWQuCisKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhQ29uc3RyYWlu
dHNJbXBsLmg6IE1ha2UgaW5pdGlhbGl6ZSgpIHB1YmxpYy4KKworICAgICAgICBOZXcgb2JqZWN0
IGZvciB0aGUgY3VycmVudCBzdGF0ZXMgZm9yIGEgbWVkaWEgc291cmNlLgorICAgICAgICAqIE1v
ZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTb3VyY2VTdGF0ZXMuY3BwOiBBZGRlZC4KKyAgICAgICAg
KiBNb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU291cmNlU3RhdGVzLmg6IEFkZGVkLgorICAgICAg
ICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTb3VyY2VTdGF0ZXMuaWRsOiBBZGRlZC4KKwor
ICAgICAgICBEb24ndCBjYWxsIHRoZSBtZWRpYSBzdHJlYW0gY2VudGVyIHRvIG5vdGlmeSBpdCB3
aGVuIHRoZSBzdGF0ZSBvZiBvdGhlcgorICAgICAgICBvYmplY3RzIGNoYW5nZS4KKyAgICAgICAg
KiBNb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OnByb2Nlc3NUcmFjayk6IFJlbW92ZSB0aGUgc3RyZWFtIHNvdXJjZSBkdXBsaWNhdGlvbiBoYWNr
LgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlRnJvbVNvdXJjZVZlY3RvcnMpOiAKKyAgICAgICAg
KFdlYkNvcmU6Ok1lZGlhU3RyZWFtOjpNZWRpYVN0cmVhbSk6CisgICAgICAgIChXZWJDb3JlOjpN
ZWRpYVN0cmVhbTo6YWRkVHJhY2spOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTdHJlYW06OnJl
bW92ZVRyYWNrKToKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtLmg6
CisKKyAgICAgICAgTmV3IG9iamVjdCBmb3IgdGhlIGNhcGFiaWxpdGllcyBvZiBhIHNvdXJjZS4K
KyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtQ2FwYWJpbGl0aWVzLmNw
cDogQWRkZWQuCisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbUNhcGFi
aWxpdGllcy5oOiBBZGRlZC4KKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3Ry
ZWFtQ2FwYWJpbGl0aWVzLmlkbDogQWRkZWQuCisKKyAgICAgICAgVXBkYXRlIGludGVyZmFjZSB0
byBtYXRjaCBzcGVjLgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1U
cmFjay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbVRyYWNrOjpNZWRpYVN0cmVh
bVRyYWNrKTogRGVmaW5lIGEgY29weSBjb25zdHJ1Y3RvciB0byB1c2UgaW4gY2xvbmUoKS4KKyAg
ICAgICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFtVHJhY2s6OnNldFNvdXJjZSk6IENhbGwgcmVtb3Zl
T2JzZXJ2ZXIgaWYgdGhlIHRyYWNrIGFscmVhZHkgaGFzIGEgc291cmNlLgorICAgICAgICAgICAg
SW5pdGlhbGl6ZSBtX211dGVkIGZyb20gbmV3IHNvdXJjZSdzIG11dGVkIHN0YXRlLgorICAgICAg
ICAoV2ViQ29yZTo6TWVkaWFTdHJlYW1UcmFjazo6aWQpOiBBbGxvdyBzb3VyY2UgdG8gcHJvdmlk
ZSBJRCBhcyB0aGUgc3BlYyBzdWdnZXN0cy4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFt
VHJhY2s6OnNldEVuYWJsZWQpOiBBZGQgc29tZSBzcGVjIHRleHQgdG8gY2xhcmlmeSBsb2dpYy4g
QWx3YXlzIGNhbGwKKyAgICAgICAgICAgIHNvdXJjZS0+c2V0RW5hYmxlZCwgaXQgY2FuIGZpZ3Vy
ZSBvdXQgaWYgbm90aGluZyBuZWVkcyB0byBiZSBkb25lLgorICAgICAgICAoV2ViQ29yZTo6TWVk
aWFTdHJlYW1UcmFjazo6bXV0ZWQpOiBEb24ndCBjYWxsIHRoZSBzdHJlYW0gY2VudGVyIHdoZW4g
bXV0ZWQgY2hhbmdlcywgdGhlCisgICAgICAgICAgICBzb3VyY2UgY2FuIHRha2UgY2FyZSBvZiBu
b3RpZnlpbmcgaW50ZXJlc3RlZCBwYXJ0aWVzLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTdHJl
YW1UcmFjazo6cmVhZG9ubHkpOiBOZXcuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbVRy
YWNrOjpyZW1vdGUpOiBOZXcuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbVRyYWNrOjpj
b25zdHJhaW50cyk6IE5ldy4gCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbVRyYWNrOjpz
dGF0ZXMpOiBOZXcuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbVRyYWNrOjpjYXBhYmls
aXRpZXMpOiBOZXcuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbVRyYWNrOjphcHBseUNv
bnN0cmFpbnRzKTogTmV3LgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTdHJlYW1UcmFjazo6Y2xv
bmUpOiBOZXcuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbVRyYWNrOjpzdG9wUHJvZHVj
aW5nRGF0YSk6IE5ldy4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFtVHJhY2s6OnNvdXJj
ZVN0YXRlQ2hhbmdlZCk6IFJlbmFtZWQgZnJvbSBzb3VyY2VDaGFuZ2VkU3RhdGUuCisgICAgICAg
IChXZWJDb3JlOjpNZWRpYVN0cmVhbVRyYWNrOjpzb3VyY2VNdXRlZENoYW5nZWQpOiBOZXcuCisg
ICAgICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbVRyYWNrOjpzb3VyY2VFbmFibGVkQ2hhbmdlZCk6
IE5ldy4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFtVHJhY2s6OmNvbmZpZ3VyZVRyYWNr
UmVuZGVyaW5nKTogTmV3LgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTdHJlYW1UcmFjazo6c3Rv
cHBlZCk6IE5ldy4gCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbVRyYWNrOjpzdG9wKTog
Q2FsbCBzdG9wUHJvZHVjaW5nRGF0YS4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFtVHJh
Y2s6OnNjaGVkdWxlRXZlbnREaXNwYXRjaCk6IE5ldy4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlh
U3RyZWFtVHJhY2s6OmRpc3BhdGNoUXVldWVkRXZlbnRzKTogTmV3LgorICAgICAgICAqIE1vZHVs
ZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1UcmFjay5oOgorICAgICAgICAqIE1vZHVsZXMvbWVk
aWFzdHJlYW0vTWVkaWFTdHJlYW1UcmFjay5pZGw6CisKKyAgICAgICAgKiBNb2R1bGVzL21lZGlh
c3RyZWFtL01lZGlhVHJhY2tDb25zdHJhaW50LmNwcDogQWRkZWQuCisgICAgICAgICogTW9kdWxl
cy9tZWRpYXN0cmVhbS9NZWRpYVRyYWNrQ29uc3RyYWludC5oOiBBZGRlZC4KKyAgICAgICAgKiBN
b2R1bGVzL21lZGlhc3RyZWFtL01lZGlhVHJhY2tDb25zdHJhaW50LmlkbDogQWRkZWQuCisKKyAg
ICAgICAgLy8gQWRkIGVtcHR5IGNsYXNzZXMvSURMIGZvciB0cmFjayBjb25zdHJhaW50IG9iamVj
dHMuCisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVRyYWNrQ29uc3RyYWludFNl
dC5jcHA6IEFkZGVkLgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFUcmFja0Nv
bnN0cmFpbnRTZXQuaDogQWRkZWQuCisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRp
YVRyYWNrQ29uc3RyYWludFNldC5pZGw6IEFkZGVkLgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFz
dHJlYW0vTWVkaWFUcmFja0NvbnN0cmFpbnRzLmNwcDogQWRkZWQuCisgICAgICAgICogTW9kdWxl
cy9tZWRpYXN0cmVhbS9NZWRpYVRyYWNrQ29uc3RyYWludHMuaDogQWRkZWQuCisgICAgICAgICog
TW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVRyYWNrQ29uc3RyYWludHMuaWRsOiBBZGRlZC4KKwor
ICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vVXNlck1lZGlhUmVxdWVzdC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpVc2VyTWVkaWFSZXF1ZXN0OjpjYWxsU3VjY2Vzc0hhbmRsZXIpOiBEb24n
dCBjYWxsIHRoZSBzdHJlYW0gY2VudGVyLCB0aGUKKyAgICAgICAgICAgIHN0cmVhbSBjYW4gdGFr
ZSBjYXJlIG9mIG5vdGlmeWluZyBpbnRlcmVzdGVkIHBhcnRpZXMuCisKKyAgICAgICAgLy8gQWRk
IGEgY29uc3RydWN0b3IgYW5kIGNyZWF0ZSgpIHRoYXQgdGFrZSBhIE1lZGlhU3RyZWFtVHJhY2sq
LgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vVmlkZW9TdHJlYW1UcmFjay5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpWaWRlb1N0cmVhbVRyYWNrOjpjcmVhdGUpOiAKKyAgICAgICAgKFdl
YkNvcmU6OlZpZGVvU3RyZWFtVHJhY2s6OlZpZGVvU3RyZWFtVHJhY2spOgorICAgICAgICAqIE1v
ZHVsZXMvbWVkaWFzdHJlYW0vVmlkZW9TdHJlYW1UcmFjay5oOgorCisgICAgICAgIC8vIENyZWF0
ZSBhIE1lZGlhU3RyZWFtU291cmNlIHN1YmNsYXNzIGZvciBXZWJBdWRpbworICAgICAgICAqIE1v
ZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlv
Q29udGV4dDo6Y3JlYXRlTWVkaWFTdHJlYW1Tb3VyY2UpOiBDYWxsIGlzQXVkaW9TdHJlYW1Tb3Vy
Y2UgaW5zdGVhZAorICAgICAgICAgICAgb2YgY2hlY2tpbmcgZGV2aWNlSUQuCisgICAgICAgICog
TW9kdWxlcy93ZWJhdWRpby9NZWRpYVN0cmVhbUF1ZGlvRGVzdGluYXRpb25Ob2RlLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFtQXVkaW9EZXN0aW5hdGlvbk5vZGU6Ok1lZGlhU3Ry
ZWFtQXVkaW9EZXN0aW5hdGlvbk5vZGUpOiBDcmVhdGUgYQorICAgICAgICAgICAgTWVkaWFTdHJl
YW1BdWRpb1NvdXJjZSBpbnN0ZWFkIG9mIGEgTWVkaWFTdHJlYW1Tb3VyY2UuCisgICAgICAgICog
TW9kdWxlcy93ZWJhdWRpby9NZWRpYVN0cmVhbUF1ZGlvRGVzdGluYXRpb25Ob2RlLmg6CisgICAg
ICAgICogTW9kdWxlcy93ZWJhdWRpby9NZWRpYVN0cmVhbUF1ZGlvU291cmNlLmNwcDogQWRkZWQu
CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9NZWRpYVN0cmVhbUF1ZGlvU291cmNlLmg6IEFk
ZGVkLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTdHJlYW1BdWRpb1NvdXJjZTo6fk1lZGlhU3Ry
ZWFtQXVkaW9Tb3VyY2UpOgorCisgICAgICAgIC8vIEFkZCBuZXcgZ2VuZXJhdGVkIGZpbGVzLgor
ICAgICAgICAqIGJpbmRpbmdzL2pzL0pTTWVkaWFTb3VyY2VTdGF0ZXNDdXN0b20uY3BwOiBBZGRl
ZC4KKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU01lZGlhU3RyZWFtQ2FwYWJpbGl0aWVzQ3VzdG9t
LmNwcDogQWRkZWQuCisKKyAgICAgICAgKiBkb20vRXZlbnROYW1lcy5oOiBEZWZpbmVkICdvdmVy
Y29uc3RyYWluZWQnIGV2ZW50LgorCisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVk
aWFTdHJlYW1DZW50ZXIuaDogR2V0IHJpZCBvZiBhbGwgb2YgdGhlIG1ldGhvZHMgbm9ib2R5IHVz
ZXMuCisgICAgICAgICAgICBJdCBpc24ndCBjbGVhciB0aGF0IHRoZXkgYXJlIG5lY2Vzc2FyeSwg
YW5kIHdlIGNhbiBhZGQgdGhlbSBiYWNrIGlmL3doZW4gd2UgbmVlZCB0aGVtLgorCisgICAgICAg
ICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1EZXNjcmlwdG9yLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFtRGVzY3JpcHRvcjo6fk1lZGlhU3RyZWFtRGVzY3JpcHRv
cik6IENsZWFyIHRoZSBhbGwgc291cmNlIHN0cmVhbXMuCisgICAgICAgIChXZWJDb3JlOjpNZWRp
YVN0cmVhbURlc2NyaXB0b3I6OnJlbW92ZVNvdXJjZSk6IENsZWFyIHRoZSBzb3VyY2Ugc3RyZWFt
LgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtRGVzY3JpcHRvci5o
OgorCisgICAgICAgIC8vIE1ha2UgTWVkaWFTdHJlYW1Tb3VyY2UgYW4gYWJzdHJhY3QgYmFzZSBj
bGFzcywgYW5kIHJlbW92ZSBldmVyeXRpbmcgV2ViQXVkaW8tc3BlY2lmaWMKKyAgICAgICAgLy8g
IHRvIE1lZGlhU3RyZWFtQXVkaW9Tb3VyY2UuIAorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3Ry
ZWFtL01lZGlhU3RyZWFtU291cmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFt
U291cmNlOjpNZWRpYVN0cmVhbVNvdXJjZSk6IFJlbW92ZSByZWFkeVN0YXRlIGFuZCByZXF1aXJl
c0NvbnN1bWVyCisgICAgICAgICAgICBwYXJhbWV0ZXJzLiBDcmVhdGUgbmV3IFVVSUQgZm9yIGlk
IGlmIG5vbiB3YXMgcGFzc2VkLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTdHJlYW1Tb3VyY2U6
OnJlc2V0KTogUmVzZXQgaW50ZXJuYWwgc3RhdGUgdG8ganVzdC1jb25zdHJ1Y3RlZC4gVXNlZCBm
b3IgdGVzdGluZy4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFtU291cmNlOjpzZXRSZWFk
eVN0YXRlKTogc291cmNlQ2hhbmdlZFN0YXRlIC0+IHNvdXJjZVN0YXRlQ2hhbmdlZC4KKyAgICAg
ICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFtU291cmNlOjpzZXRTdHJlYW0pOiBSZW1vdmUgdGhlIEFT
U0VSVCB0aGF0IGNoZWNrIGZvciBhIHNvdXJjZSBiZWluZworICAgICAgICAgICAgYWRkZWQgdG8g
YSBuZXcgc3RyZWFtLiBUaGlzIGlzIHN0aWxsIGEgcHJvYmxlbSwgYnV0IGl0IGlzIHJlcXVpcmVk
IGZvciB0ZXN0aW5nIGFuZCB3aWxsCisgICAgICAgICAgICBiZSBmaXhlZCBhcyBhIHBhcnQgb2Yg
YnVnIDEyMTk1NC4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFtU291cmNlOjpzZXRDb25z
dHJhaW50cyk6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTdHJlYW1Tb3VyY2U6OnNl
dE11dGVkKTogTm90aWZ5IG9ic2VydmVycyB3aGVuIG11dGVkIGNoYW5nZXMuCisgICAgICAgIChX
ZWJDb3JlOjpNZWRpYVN0cmVhbVNvdXJjZTo6c2V0RW5hYmxlZCk6IE5vdGlmeSBvYnNlcnZlcnMg
d2hlbiBlbmFibGVkIGNoYW5nZXMuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbVNvdXJj
ZTo6cmVhZG9ubHkpOiBOZXcuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbVNvdXJjZTo6
c3RvcCk6IE5ldy4gU2V0IHN0YXRlIHRvIEVuZGVkIHdoZW4gYWxsIG9mIHRoZSBvYnNlcnZlcnMg
aGFzCisgICAgICAgICAgICBzdG9wcGVkLgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFt
L01lZGlhU3RyZWFtU291cmNlLmg6CisKKyAgICAgICAgLy8gRGVmaW5lIHBsYXRmb3JtIHZlcnNp
b25zIG9mIHRoZSBDYXBhYmlsaXRpZXMgY2xhc3Nlcy4KKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRp
YXN0cmVhbS9NZWRpYVN0cmVhbVNvdXJjZUNhcGFiaWxpdGllcy5oOiBBZGRlZC4KKworICAgICAg
ICAvLyBVcGRhdGUgdGhlIG5vbi1mdW5jdGlvbmFsIHBsYXRmb3JtIHN0cmVhbSBjZW50ZXJzIGZv
ciB0aGUgQVBJIGNoYW5nZXMuCisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vYmxhY2ti
ZXJyeS9NZWRpYVN0cmVhbUNlbnRlckJsYWNrQmVycnkuY3BwOgorICAgICAgICAqIHBsYXRmb3Jt
L21lZGlhc3RyZWFtL2JsYWNrYmVycnkvTWVkaWFTdHJlYW1DZW50ZXJCbGFja0JlcnJ5Lmg6Cisg
ICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vZ3N0cmVhbWVyL01lZGlhU3RyZWFtQ2VudGVy
R1N0cmVhbWVyLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9nc3RyZWFtZXIv
TWVkaWFTdHJlYW1DZW50ZXJHU3RyZWFtZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0
cmVhbS9tYWMvTWVkaWFTdHJlYW1DZW50ZXJNYWMuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL21l
ZGlhc3RyZWFtL21hYy9NZWRpYVN0cmVhbUNlbnRlck1hYy5oOgorCisgICAgICAgIC8vIFVwZGF0
ZSB0aGUgTW9jayBzdHJlYW0gY2VudGVyIGZvciB0aGUgQVBJIGNoYW5nZXMuIEFkZCBhIGNvbmNy
ZXRlIG1vY2sgTWVkaWFTdHJlYW1Tb3VyY2UKKyAgICAgICAgLy8gIHN1YmNsYXNzLgorICAgICAg
ICAqIHBsYXRmb3JtL21vY2svTW9ja01lZGlhU3RyZWFtQ2VudGVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6Ok1vY2tTb3VyY2U6Ok1vY2tTb3VyY2UpOiBOZXcsIHRoZSBtb2NrIG1lZGlhIHN0cmVh
bSBzb3VyY2UuCisgICAgICAgIChXZWJDb3JlOjpNb2NrU291cmNlOjp+TW9ja1NvdXJjZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpNb2NrU291cmNlOjpjYXBhYmlsaXRpZXMpOgorICAgICAgICAoV2Vi
Q29yZTo6TW9ja1NvdXJjZTo6c3RhdGVzKToKKyAgICAgICAgKFdlYkNvcmU6Om1vY2tTb3VyY2VN
YXApOgorICAgICAgICAoV2ViQ29yZTo6bW9ja0F1ZGlvU291cmNlSUQpOgorICAgICAgICAoV2Vi
Q29yZTo6bW9ja1ZpZGVvU291cmNlSUQpOgorICAgICAgICAoV2ViQ29yZTo6aW5pdGlhbGl6ZU1v
Y2tTb3VyY2VzKTogQ3JlYXRlIG9uZSBhdWRpbyBhbmQgb25lIHZpZGVvIG1vY2sgc291cmNlLgor
ICAgICAgICAoV2ViQ29yZTo6TW9ja01lZGlhU3RyZWFtQ2VudGVyOjpyZWdpc3Rlck1vY2tNZWRp
YVN0cmVhbUNlbnRlcik6IENhbGwgaW5pdGlhbGl6ZU1vY2tTb3VyY2VzLgorICAgICAgICAoV2Vi
Q29yZTo6TW9ja01lZGlhU3RyZWFtQ2VudGVyOjpjcmVhdGVNZWRpYVN0cmVhbSk6IFVzZSB0aGUg
YWxyZWFkeSBhbGxvY2F0ZWQgbW9jayBtZWRpYQorICAgICAgICAgICAgc291cmNlcy4KKyAgICAg
ICAgKFdlYkNvcmU6Ok1vY2tNZWRpYVN0cmVhbUNlbnRlcjo6Z2V0TWVkaWFTdHJlYW1UcmFja1Nv
dXJjZXMpOiBEaXR0by4KKyAgICAgICAgKiBwbGF0Zm9ybS9tb2NrL01vY2tNZWRpYVN0cmVhbUNl
bnRlci5oOgorCiAyMDEzLTEwLTA3ICBQaGlsaXBwZSBOb3JtYW5kICA8cG5vcm1hbmRAaWdhbGlh
LmNvbT4KIAogICAgICAgICBVUkxNZWRpYVN0cmVhbSBpcyB1bmd1YXJkZWQgYnkgRU5BQkxFKE1F
RElBX1NUUkVBTSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0Cj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CShyZXZpc2lvbiAxNTcwMTYpCisr
KyBTb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMTg2LDEy
ICsxODYsMjAgQEAgc2V0KFdlYkNvcmVfSURMX0ZJTEVTCiAgICAgTW9kdWxlcy9tZWRpYXNvdXJj
ZS9XZWJLaXRTb3VyY2VCdWZmZXIuaWRsCiAgICAgTW9kdWxlcy9tZWRpYXNvdXJjZS9XZWJLaXRT
b3VyY2VCdWZmZXJMaXN0LmlkbAogCisgICAgTW9kdWxlcy9tZWRpYXN0cmVhbS9BbGxBdWRpb0Nh
cGFiaWxpdGllcy5pZGwKKyAgICBNb2R1bGVzL21lZGlhc3RyZWFtL0FsbFZpZGVvQ2FwYWJpbGl0
aWVzLmlkbAogICAgIE1vZHVsZXMvbWVkaWFzdHJlYW0vQXVkaW9TdHJlYW1UcmFjay5pZGwKKyAg
ICBNb2R1bGVzL21lZGlhc3RyZWFtL0NhcGFiaWxpdHlSYW5nZS5pZGwKKyAgICBNb2R1bGVzL21l
ZGlhc3RyZWFtL01lZGlhU291cmNlU3RhdGVzLmlkbAogICAgIE1vZHVsZXMvbWVkaWFzdHJlYW0v
TWVkaWFTdHJlYW0uaWRsCisgICAgTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbUNhcGFi
aWxpdGllcy5pZGwKICAgICBNb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtRXZlbnQuaWRs
CiAgICAgTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVRyYWNrLmlkbAogICAgIE1vZHVs
ZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1UcmFja0V2ZW50LmlkbAogICAgIE1vZHVsZXMvbWVk
aWFzdHJlYW0vTWVkaWFTdHJlYW1UcmFja1NvdXJjZXNDYWxsYmFjay5pZGwKKyAgICBNb2R1bGVz
L21lZGlhc3RyZWFtL01lZGlhVHJhY2tDb25zdHJhaW50LmlkbAorICAgIE1vZHVsZXMvbWVkaWFz
dHJlYW0vTWVkaWFUcmFja0NvbnN0cmFpbnRTZXQuaWRsCisgICAgTW9kdWxlcy9tZWRpYXN0cmVh
bS9NZWRpYVRyYWNrQ29uc3RyYWludHMuaWRsCiAgICAgTW9kdWxlcy9tZWRpYXN0cmVhbS9OYXZp
Z2F0b3JNZWRpYVN0cmVhbS5pZGwKICAgICBNb2R1bGVzL21lZGlhc3RyZWFtL05hdmlnYXRvclVz
ZXJNZWRpYUVycm9yLmlkbAogICAgIE1vZHVsZXMvbWVkaWFzdHJlYW0vTmF2aWdhdG9yVXNlck1l
ZGlhRXJyb3JDYWxsYmFjay5pZGwKQEAgLTc4NiwxMyArNzk0LDE5IEBAIHNldChXZWJDb3JlX1NP
VVJDRVMKICAgICBNb2R1bGVzL21lZGlhc291cmNlL1NvdXJjZUJ1ZmZlckxpc3QuY3BwCiAKICAg
ICBNb2R1bGVzL21lZGlhc3RyZWFtL0F1ZGlvU3RyZWFtVHJhY2suY3BwCisgICAgTW9kdWxlcy9t
ZWRpYXN0cmVhbS9DYXBhYmlsaXR5UmFuZ2UuY3BwCiAgICAgTW9kdWxlcy9tZWRpYXN0cmVhbS9N
ZWRpYUNvbnN0cmFpbnRzSW1wbC5jcHAKKyAgICBNb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU291
cmNlU3RhdGVzLmNwcAogICAgIE1vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW0uY3BwCisg
ICAgTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbUNhcGFiaWxpdGllcy5jcHAKICAgICBN
b2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtRXZlbnQuY3BwCiAgICAgTW9kdWxlcy9tZWRp
YXN0cmVhbS9NZWRpYVN0cmVhbVJlZ2lzdHJ5LmNwcAogICAgIE1vZHVsZXMvbWVkaWFzdHJlYW0v
TWVkaWFTdHJlYW1UcmFjay5jcHAKICAgICBNb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFt
VHJhY2tFdmVudC5jcHAKICAgICBNb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJhY2tT
b3VyY2VzUmVxdWVzdC5jcHAKKyAgICBNb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhVHJhY2tDb25z
dHJhaW50LmNwcAorICAgIE1vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFUcmFja0NvbnN0cmFpbnRT
ZXQuY3BwCisgICAgTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVRyYWNrQ29uc3RyYWludHMuY3Bw
CiAgICAgTW9kdWxlcy9tZWRpYXN0cmVhbS9OYXZpZ2F0b3JNZWRpYVN0cmVhbS5jcHAKICAgICBN
b2R1bGVzL21lZGlhc3RyZWFtL05hdmlnYXRvclVzZXJNZWRpYUVycm9yLmNwcAogICAgIE1vZHVs
ZXMvbWVkaWFzdHJlYW0vUlRDRFRNRlNlbmRlci5jcHAKQEAgLTg2Myw2ICs4NzcsNyBAQCBzZXQo
V2ViQ29yZV9TT1VSQ0VTCiAgICAgTW9kdWxlcy93ZWJhdWRpby9HYWluTm9kZS5jcHAKICAgICBN
b2R1bGVzL3dlYmF1ZGlvL01lZGlhRWxlbWVudEF1ZGlvU291cmNlTm9kZS5jcHAKICAgICBNb2R1
bGVzL3dlYmF1ZGlvL01lZGlhU3RyZWFtQXVkaW9EZXN0aW5hdGlvbk5vZGUuY3BwCisgICAgTW9k
dWxlcy93ZWJhdWRpby9NZWRpYVN0cmVhbUF1ZGlvU291cmNlLmNwcAogICAgIE1vZHVsZXMvd2Vi
YXVkaW8vTWVkaWFTdHJlYW1BdWRpb1NvdXJjZU5vZGUuY3BwCiAgICAgTW9kdWxlcy93ZWJhdWRp
by9PZmZsaW5lQXVkaW9Db21wbGV0aW9uRXZlbnQuY3BwCiAgICAgTW9kdWxlcy93ZWJhdWRpby9P
ZmZsaW5lQXVkaW9Db250ZXh0LmNwcApJbmRleDogU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJj
ZXMubWFrZQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtl
CShyZXZpc2lvbiAxNTcwMTYpCisrKyBTb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtl
CSh3b3JraW5nIGNvcHkpCkBAIC0xMDEsMTIgKzEwMSwyMCBAQCBCSU5ESU5HX0lETFMgPSBcCiAg
ICAgJChXZWJDb3JlKS9Nb2R1bGVzL21lZGlhc291cmNlL1dlYktpdFNvdXJjZUJ1ZmZlckxpc3Qu
aWRsIFwKICAgICAkKFdlYkNvcmUpL01vZHVsZXMvbWVkaWFzb3VyY2UvU291cmNlQnVmZmVyLmlk
bCBcCiAgICAgJChXZWJDb3JlKS9Nb2R1bGVzL21lZGlhc291cmNlL1NvdXJjZUJ1ZmZlckxpc3Qu
aWRsIFwKKwkkKFdlYkNvcmUpL01vZHVsZXMvbWVkaWFzdHJlYW0vQWxsVmlkZW9DYXBhYmlsaXRp
ZXMuaWRsIFwKKwkkKFdlYkNvcmUpL01vZHVsZXMvbWVkaWFzdHJlYW0vQWxsQXVkaW9DYXBhYmls
aXRpZXMuaWRsIFwKIAkkKFdlYkNvcmUpL01vZHVsZXMvbWVkaWFzdHJlYW0vQXVkaW9TdHJlYW1U
cmFjay5pZGwgXAorICAgICQoV2ViQ29yZSkvTW9kdWxlcy9tZWRpYXN0cmVhbS9DYXBhYmlsaXR5
UmFuZ2UuaWRsIFwKKyAgICAkKFdlYkNvcmUpL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTb3Vy
Y2VTdGF0ZXMuaWRsIFwKIAkkKFdlYkNvcmUpL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJl
YW0uaWRsIFwKKwkkKFdlYkNvcmUpL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1DYXBh
YmlsaXRpZXMuaWRsIFwKICAgICAkKFdlYkNvcmUpL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFT
dHJlYW1FdmVudC5pZGwgXAogICAgICQoV2ViQ29yZSkvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRp
YVN0cmVhbVRyYWNrLmlkbCBcCiAgICAgJChXZWJDb3JlKS9Nb2R1bGVzL21lZGlhc3RyZWFtL01l
ZGlhU3RyZWFtVHJhY2tFdmVudC5pZGwgXAogICAgICQoV2ViQ29yZSkvTW9kdWxlcy9tZWRpYXN0
cmVhbS9NZWRpYVN0cmVhbVRyYWNrU291cmNlc0NhbGxiYWNrLmlkbCBcCisgICAgJChXZWJDb3Jl
KS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhVHJhY2tDb25zdHJhaW50LmlkbCBcCisgICAgJChX
ZWJDb3JlKS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhVHJhY2tDb25zdHJhaW50cy5pZGwgXAor
ICAgICQoV2ViQ29yZSkvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVRyYWNrQ29uc3RyYWludFNl
dC5pZGwgXAogICAgICQoV2ViQ29yZSkvTW9kdWxlcy9tZWRpYXN0cmVhbS9OYXZpZ2F0b3JNZWRp
YVN0cmVhbS5pZGwgXAogICAgICQoV2ViQ29yZSkvTW9kdWxlcy9tZWRpYXN0cmVhbS9OYXZpZ2F0
b3JVc2VyTWVkaWFFcnJvci5pZGwgXAogICAgICQoV2ViQ29yZSkvTW9kdWxlcy9tZWRpYXN0cmVh
bS9OYXZpZ2F0b3JVc2VyTWVkaWFFcnJvckNhbGxiYWNrLmlkbCBcCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL0dO
VW1ha2VmaWxlLmxpc3QuYW0JKHJldmlzaW9uIDE1NzAxNikKKysrIFNvdXJjZS9XZWJDb3JlL0dO
VW1ha2VmaWxlLmxpc3QuYW0JKHdvcmtpbmcgY29weSkKQEAgLTMxLDYgKzMxLDEwIEBAIHdlYmNv
cmVfYnVpbHRfc291cmNlcyArPSBcCiAJRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9JbnNwZWN0b3JQ
cm90b2NvbFZlcnNpb24uaCBcCiAJRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0Fic3RyYWN0V29y
a2VyLmNwcCBcCiAJRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0Fic3RyYWN0V29ya2VyLmggXAor
CURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNBbGxBdWRpb0NhcGFiaWxpdGllcy5jcHAgXAorCURl
cml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNBbGxBdWRpb0NhcGFiaWxpdGllcy5oIFwKKwlEZXJpdmVk
U291cmNlcy9XZWJDb3JlL0pTQWxsVmlkZW9DYXBhYmlsaXRpZXMuY3BwIFwKKwlEZXJpdmVkU291
cmNlcy9XZWJDb3JlL0pTQWxsVmlkZW9DYXBhYmlsaXRpZXMuaCBcCiAJRGVyaXZlZFNvdXJjZXMv
V2ViQ29yZS9KU0F0dHIuY3BwIFwKIAlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTQXR0ci5oIFwK
IAlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTQXVkaW9CdWZmZXIuY3BwIFwKQEAgLTg3LDYgKzkx
LDggQEAgd2ViY29yZV9idWlsdF9zb3VyY2VzICs9IFwKIAlEZXJpdmVkU291cmNlcy9XZWJDb3Jl
L0pTQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmggXAogCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUv
SlNDYW52YXNSZW5kZXJpbmdDb250ZXh0LmNwcCBcCiAJRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9K
U0NhbnZhc1JlbmRlcmluZ0NvbnRleHQuaCBcCisJRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0Nh
cGFiaWxpdHlSYW5nZS5jcHAgXAorCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNDYXBhYmlsaXR5
UmFuZ2UuaCBcCiAJRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0NEQVRBU2VjdGlvbi5jcHAgXAog
CURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNDREFUQVNlY3Rpb24uaCBcCiAJRGVyaXZlZFNvdXJj
ZXMvV2ViQ29yZS9KU0NoYXJhY3RlckRhdGEuY3BwIFwKQEAgLTQ2MiwxMiArNDY4LDE2IEBAIHdl
YmNvcmVfYnVpbHRfc291cmNlcyArPSBcCiAJRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU01lZGlh
U291cmNlLmggXAogCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNXZWJLaXRNZWRpYVNvdXJjZS5j
cHAgXAogCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNXZWJLaXRNZWRpYVNvdXJjZS5oIFwKKwlE
ZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTTWVkaWFTb3VyY2VTdGF0ZXMuY3BwIFwKKwlEZXJpdmVk
U291cmNlcy9XZWJDb3JlL0pTTWVkaWFTb3VyY2VTdGF0ZXMuaCBcCiAJRGVyaXZlZFNvdXJjZXMv
V2ViQ29yZS9KU01lZGlhU3RyZWFtLmNwcCBcCiAJRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU01l
ZGlhU3RyZWFtLmggXAogCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNNZWRpYVN0cmVhbUF1ZGlv
U291cmNlTm9kZS5jcHAgXAogCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNNZWRpYVN0cmVhbUF1
ZGlvU291cmNlTm9kZS5oIFwKIAlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTTWVkaWFTdHJlYW1B
dWRpb0Rlc3RpbmF0aW9uTm9kZS5jcHAgXAogCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNNZWRp
YVN0cmVhbUF1ZGlvRGVzdGluYXRpb25Ob2RlLmggXAorCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUv
SlNNZWRpYVN0cmVhbUNhcGFiaWxpdGllcy5jcHAgXAorCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUv
SlNNZWRpYVN0cmVhbUNhcGFiaWxpdGllcy5oIFwKIAlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pT
TWVkaWFTdHJlYW1FdmVudC5jcHAgXAogCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNNZWRpYVN0
cmVhbUV2ZW50LmggXAogCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNNZWRpYVN0cmVhbVRyYWNr
LmNwcCBcCkBAIC00ODAsNiArNDkwLDEyIEBAIHdlYmNvcmVfYnVpbHRfc291cmNlcyArPSBcCiAJ
RGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU01lZGlhUXVlcnlMaXN0LmggXAogCURlcml2ZWRTb3Vy
Y2VzL1dlYkNvcmUvSlNNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyLmNwcCBcCiAJRGVyaXZlZFNvdXJj
ZXMvV2ViQ29yZS9KU01lZGlhUXVlcnlMaXN0TGlzdGVuZXIuaCBcCisJRGVyaXZlZFNvdXJjZXMv
V2ViQ29yZS9KU01lZGlhVHJhY2tDb25zdHJhaW50LmNwcCBcCisJRGVyaXZlZFNvdXJjZXMvV2Vi
Q29yZS9KU01lZGlhVHJhY2tDb25zdHJhaW50LmggXAorCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUv
SlNNZWRpYVRyYWNrQ29uc3RyYWludHMuY3BwIFwKKwlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pT
TWVkaWFUcmFja0NvbnN0cmFpbnRzLmggXAorCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNNZWRp
YVRyYWNrQ29uc3RyYWludFNldC5jcHAgXAorCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNNZWRp
YVRyYWNrQ29uc3RyYWludFNldC5oIFwKIAlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTTWVzc2Fn
ZUNoYW5uZWwuY3BwIFwKIAlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTTWVzc2FnZUNoYW5uZWwu
aCBcCiAJRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU01lc3NhZ2VFdmVudC5jcHAgXApAQCAtMTE4
NiwxMiArMTIwMiwyMCBAQCBkb21fYmluZGluZ19pZGxzICs9IFwKIAkkKFdlYkNvcmUpL01vZHVs
ZXMvbWVkaWFzb3VyY2UvV2ViS2l0TWVkaWFTb3VyY2UuaWRsIFwKIAkkKFdlYkNvcmUpL01vZHVs
ZXMvbWVkaWFzb3VyY2UvV2ViS2l0U291cmNlQnVmZmVyLmlkbCBcCiAJJChXZWJDb3JlKS9Nb2R1
bGVzL21lZGlhc291cmNlL1dlYktpdFNvdXJjZUJ1ZmZlckxpc3QuaWRsIFwKKwkkKFdlYkNvcmUp
L01vZHVsZXMvbWVkaWFzdHJlYW0vQWxsVmlkZW9DYXBhYmlsaXRpZXMuaWRsIFwKKwkkKFdlYkNv
cmUpL01vZHVsZXMvbWVkaWFzdHJlYW0vQWxsQXVkaW9DYXBhYmlsaXRpZXMuaWRsIFwKIAkkKFdl
YkNvcmUpL01vZHVsZXMvbWVkaWFzdHJlYW0vQXVkaW9TdHJlYW1UcmFjay5pZGwgXAorCSQoV2Vi
Q29yZSkvTW9kdWxlcy9tZWRpYXN0cmVhbS9DYXBhYmlsaXR5UmFuZ2UuaWRsIFwKKwkkKFdlYkNv
cmUpL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTb3VyY2VTdGF0ZXMuaWRsIFwKIAkkKFdlYkNv
cmUpL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW0uaWRsIFwKKwkkKFdlYkNvcmUpL01v
ZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1DYXBhYmlsaXRpZXMuaWRsIFwKIAkkKFdlYkNv
cmUpL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1FdmVudC5pZGwgXAogCSQoV2ViQ29y
ZSkvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVRyYWNrLmlkbCBcCiAJJChXZWJDb3Jl
KS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJhY2tFdmVudC5pZGwgXAogCSQoV2Vi
Q29yZSkvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVRyYWNrU291cmNlc0NhbGxiYWNr
LmlkbCBcCisJJChXZWJDb3JlKS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhVHJhY2tDb25zdHJh
aW50LmlkbCBcCisJJChXZWJDb3JlKS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhVHJhY2tDb25z
dHJhaW50cy5pZGwgXAorCSQoV2ViQ29yZSkvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVRyYWNr
Q29uc3RyYWludFNldC5pZGwgXAogCSQoV2ViQ29yZSkvTW9kdWxlcy9tZWRpYXN0cmVhbS9OYXZp
Z2F0b3JNZWRpYVN0cmVhbS5pZGwgXAogCSQoV2ViQ29yZSkvTW9kdWxlcy9tZWRpYXN0cmVhbS9O
YXZpZ2F0b3JVc2VyTWVkaWFFcnJvci5pZGwgXAogCSQoV2ViQ29yZSkvTW9kdWxlcy9tZWRpYXN0
cmVhbS9OYXZpZ2F0b3JVc2VyTWVkaWFFcnJvckNhbGxiYWNrLmlkbCBcCkBAIC0xODQ1LDEyICsx
ODY5LDIwIEBAIHdlYmNvcmVfbW9kdWxlc19zb3VyY2VzICs9IFwKIAlTb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL21lZGlhc291cmNlL1dlYktpdFNvdXJjZUJ1ZmZlci5oIFwKIAlTb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL21lZGlhc291cmNlL1dlYktpdFNvdXJjZUJ1ZmZlckxpc3QuY3BwIFwKIAlTb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc291cmNlL1dlYktpdFNvdXJjZUJ1ZmZlckxpc3QuaCBc
CisJU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9BbGxBdWRpb0NhcGFiaWxpdGll
cy5oIFwKKwlTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL0FsbFZpZGVvQ2FwYWJp
bGl0aWVzLmggXAogCVNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vQXVkaW9TdHJl
YW1UcmFjay5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vQXVkaW9T
dHJlYW1UcmFjay5oIFwKKwlTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL0NhcGFi
aWxpdHlSYW5nZS5jcHAgXAorCVNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vQ2Fw
YWJpbGl0eVJhbmdlLmggXAogCVNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVk
aWFDb25zdHJhaW50c0ltcGwuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3Ry
ZWFtL01lZGlhQ29uc3RyYWludHNJbXBsLmggXAorCVNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVk
aWFzdHJlYW0vTWVkaWFTb3VyY2VTdGF0ZXMuY3BwIFwKKwlTb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L21lZGlhc3RyZWFtL01lZGlhU291cmNlU3RhdGVzLmggXAogCVNvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW0uY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L21lZGlhc3RyZWFtL01lZGlhU3RyZWFtLmggXAorCVNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVk
aWFzdHJlYW0vTWVkaWFTdHJlYW1DYXBhYmlsaXRpZXMuY3BwIFwKKwlTb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtQ2FwYWJpbGl0aWVzLmggXAogCVNvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1FdmVudC5jcHAgXAogCVNvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1FdmVudC5oIFwKIAlTb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtUmVnaXN0cnkuY3BwIFwK
QEAgLTE4NjIsNiArMTg5NCwxMiBAQCB3ZWJjb3JlX21vZHVsZXNfc291cmNlcyArPSBcCiAJU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVRyYWNrU291cmNlc0Nh
bGxiYWNrLmggXAogCVNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJl
YW1UcmFja1NvdXJjZXNSZXF1ZXN0LmNwcCBcCiAJU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRp
YXN0cmVhbS9NZWRpYVN0cmVhbVRyYWNrU291cmNlc1JlcXVlc3QuaCBcCisJU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVRyYWNrQ29uc3RyYWludC5jcHAgXAorCVNvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFUcmFja0NvbnN0cmFpbnQuaCBcCisJ
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVRyYWNrQ29uc3RyYWludFNl
dC5jcHAgXAorCVNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFUcmFja0Nv
bnN0cmFpbnRTZXQuaCBcCisJU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRp
YVRyYWNrQ29uc3RyYWludHMuY3BwIFwKKwlTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3Ry
ZWFtL01lZGlhVHJhY2tDb25zdHJhaW50cy5oIFwKIAlTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21l
ZGlhc3RyZWFtL05hdmlnYXRvck1lZGlhU3RyZWFtLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9tZWRpYXN0cmVhbS9OYXZpZ2F0b3JNZWRpYVN0cmVhbS5oIFwKIAlTb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL21lZGlhc3RyZWFtL05hdmlnYXRvclVzZXJNZWRpYUVycm9yLmNwcCBcCkBAIC0y
MDA3LDYgKzIwNDUsOCBAQCB3ZWJjb3JlX21vZHVsZXNfc291cmNlcyArPSBcCiAJU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJhdWRpby9NZWRpYVN0cmVhbUF1ZGlvU291cmNlTm9kZS5oIFwKIAlT
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL01lZGlhU3RyZWFtQXVkaW9EZXN0aW5hdGlv
bk5vZGUuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL01lZGlhU3RyZWFt
QXVkaW9EZXN0aW5hdGlvbk5vZGUuaCBcCisJU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRp
by9NZWRpYVN0cmVhbUF1ZGlvU291cmNlLmNwcCBcCisJU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJhdWRpby9NZWRpYVN0cmVhbUF1ZGlvU291cmNlLmggXAogCVNvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViYXVkaW8vT2ZmbGluZUF1ZGlvQ29udGV4dC5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViYXVkaW8vT2ZmbGluZUF1ZGlvQ29udGV4dC5oIFwKIAlTb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmF1ZGlvL09mZmxpbmVBdWRpb0Rlc3RpbmF0aW9uTm9kZS5oIFwKQEAgLTIzMTIs
NiArMjM1Miw3IEBAIHdlYmNvcmVfc291cmNlcyArPSBcCiAJU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNNYWluVGhyZWFkRXhlY1N0YXRlLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNNYWluVGhyZWFkRXhlY1N0YXRlLmggXAogCVNvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTTWVkaWFMaXN0Q3VzdG9tLmggXAorCVNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
TWVkaWFTb3VyY2VTdGF0ZXNDdXN0b20uY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU01lc3NhZ2VDaGFubmVsQ3VzdG9tLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNNZXNzYWdlRXZlbnRDdXN0b20uY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU01lc3NhZ2VQb3J0Q3VzdG9tLmNwcCBcCkBAIC01MzM2LDYgKzUzNzcsNyBAQCB3ZWJjb3Jl
X3BsYXRmb3JtX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3Ry
ZWFtL01lZGlhU3RyZWFtRGVzY3JpcHRvci5oIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
ZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVNvdXJjZS5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtU291cmNlLmggXAorCVNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtU291cmNlQ2FwYWJpbGl0aWVzLmggXAogCVNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJhY2tTb3VyY2Vz
UmVxdWVzdENsaWVudC5oIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9S
VENDb25maWd1cmF0aW9uLmggXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFt
L1JUQ0RUTUZTZW5kZXJIYW5kbGVyLmggXApJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9t
ZWRpYXN0cmVhbS9BbGxBdWRpb0NhcGFiaWxpdGllcy5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vQWxsQXVkaW9DYXBhYmlsaXRpZXMuaAkocmV2aXNp
b24gMCkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vQWxsQXVkaW9DYXBh
YmlsaXRpZXMuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDU5IEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBg
QVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IK
KyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZu
ZGVmIEFsbEF1ZGlvQ2FwYWJpbGl0aWVzX2gKKyNkZWZpbmUgQWxsQXVkaW9DYXBhYmlsaXRpZXNf
aAorCisjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKKworI2luY2x1ZGUgIk1lZGlhU3RyZWFtQ2Fw
YWJpbGl0aWVzLmgiCisjaW5jbHVkZSAiTWVkaWFTdHJlYW1Tb3VyY2VDYXBhYmlsaXRpZXMuaCIK
KyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgewor
CitjbGFzcyBDYXBhYmlsaXR5UmFuZ2U7CitjbGFzcyBNZWRpYVN0cmVhbVNvdXJjZUNhcGFiaWxp
dGllczsKKworY2xhc3MgQWxsQXVkaW9DYXBhYmlsaXRpZXMgOiBwdWJsaWMgTWVkaWFTdHJlYW1D
YXBhYmlsaXRpZXMgeworcHVibGljOgorICAgIHN0YXRpYyBQYXNzUmVmUHRyPEFsbEF1ZGlvQ2Fw
YWJpbGl0aWVzPiBjcmVhdGUoUGFzc1JlZlB0cjxNZWRpYVN0cmVhbVNvdXJjZUNhcGFiaWxpdGll
cz4gY2FwYWJpbGl0aWVzKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBBbGxB
dWRpb0NhcGFiaWxpdGllcyhjYXBhYmlsaXRpZXMpKTsKKyAgICB9CisgICAgdmlydHVhbCB+QWxs
QXVkaW9DYXBhYmlsaXRpZXMoKSB7IH0KKworcHJpdmF0ZToKKyAgICBleHBsaWNpdCBBbGxBdWRp
b0NhcGFiaWxpdGllcyhQYXNzUmVmUHRyPE1lZGlhU3RyZWFtU291cmNlQ2FwYWJpbGl0aWVzPiBj
YXBhYmlsaXRpZXMpCisgICAgICAgIDogTWVkaWFTdHJlYW1DYXBhYmlsaXRpZXMoY2FwYWJpbGl0
aWVzKQorICAgIHsKKyAgICB9Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRp
ZiAvLyBBbGxBdWRpb0NhcGFiaWxpdGllc19oCisKKyNlbmRpZgpJbmRleDogU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9BbGxBdWRpb0NhcGFiaWxpdGllcy5pZGwKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9BbGxBdWRpb0NhcGFiaWxp
dGllcy5pZGwJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3Ry
ZWFtL0FsbEF1ZGlvQ2FwYWJpbGl0aWVzLmlkbAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDMz
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
Q09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4gCisgKi8KKworWworICAgIE5vSW50ZXJmYWNlT2JqZWN0LAorICAgIENvbmRpdGlvbmFs
PU1FRElBX1NUUkVBTSwKKyAgICBKU0dlbmVyYXRlVG9KU09iamVjdCwKK10gaW50ZXJmYWNlIEFs
bEF1ZGlvQ2FwYWJpbGl0aWVzIDogTWVkaWFTdHJlYW1DYXBhYmlsaXRpZXMgeworICAgIHJlYWRv
bmx5IGF0dHJpYnV0ZSBET01TdHJpbmdbXSBzb3VyY2VJZDsKKyAgICByZWFkb25seSBhdHRyaWJ1
dGUgQ2FwYWJpbGl0eVJhbmdlIHZvbHVtZTsKK307CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL21lZGlhc3RyZWFtL0FsbFZpZGVvQ2FwYWJpbGl0aWVzLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9BbGxWaWRlb0NhcGFiaWxpdGllcy5oCShy
ZXZpc2lvbiAwKQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9BbGxWaWRl
b0NhcGFiaWxpdGllcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNTcgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElO
Qy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5D
LiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNpZm5kZWYgQWxsVmlkZW9DYXBhYmlsaXRpZXNfaAorI2RlZmluZSBBbGxWaWRlb0NhcGFiaWxp
dGllc19oCisKKyNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQorCisjaW5jbHVkZSAiTWVkaWFTdHJl
YW1DYXBhYmlsaXRpZXMuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBDYXBhYmls
aXR5UmFuZ2U7CitjbGFzcyBNZWRpYVN0cmVhbVNvdXJjZUNhcGFiaWxpdGllczsKKworY2xhc3Mg
QWxsVmlkZW9DYXBhYmlsaXRpZXMgOiBwdWJsaWMgTWVkaWFTdHJlYW1DYXBhYmlsaXRpZXMgewor
cHVibGljOgorICAgIHN0YXRpYyBQYXNzUmVmUHRyPEFsbFZpZGVvQ2FwYWJpbGl0aWVzPiBjcmVh
dGUoUGFzc1JlZlB0cjxNZWRpYVN0cmVhbVNvdXJjZUNhcGFiaWxpdGllcz4gY2FwYWJpbGl0aWVz
KQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBBbGxWaWRlb0NhcGFiaWxpdGll
cyhjYXBhYmlsaXRpZXMpKTsKKyAgICB9CisgICAgdmlydHVhbCB+QWxsVmlkZW9DYXBhYmlsaXRp
ZXMoKSB7IH0KKworcHJpdmF0ZToKKyAgICBleHBsaWNpdCBBbGxWaWRlb0NhcGFiaWxpdGllcyhQ
YXNzUmVmUHRyPE1lZGlhU3RyZWFtU291cmNlQ2FwYWJpbGl0aWVzPiBjYXBhYmlsaXRpZXMpCisg
ICAgICAgIDogTWVkaWFTdHJlYW1DYXBhYmlsaXRpZXMoY2FwYWJpbGl0aWVzKQorICAgIHsKKyAg
ICB9Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBBbGxWaWRlb0Nh
cGFiaWxpdGllc19oCisKKyNlbmRpZgpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRp
YXN0cmVhbS9BbGxWaWRlb0NhcGFiaWxpdGllcy5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9BbGxWaWRlb0NhcGFiaWxpdGllcy5pZGwJKHJldmlz
aW9uIDApCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL0FsbFZpZGVvQ2Fw
YWJpbGl0aWVzLmlkbAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDM4IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMu
IGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4g
T1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKwor
WworICAgIE5vSW50ZXJmYWNlT2JqZWN0LAorICAgIENvbmRpdGlvbmFsPU1FRElBX1NUUkVBTSwK
KyAgICBKU0dlbmVyYXRlVG9KU09iamVjdCwKK10gaW50ZXJmYWNlIEFsbFZpZGVvQ2FwYWJpbGl0
aWVzIDogTWVkaWFTdHJlYW1DYXBhYmlsaXRpZXMgeworICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBE
T01TdHJpbmdbXSBzb3VyY2VUeXBlOworICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBET01TdHJpbmdb
XSBzb3VyY2VJZDsKKyAgICByZWFkb25seSBhdHRyaWJ1dGUgQ2FwYWJpbGl0eVJhbmdlIHdpZHRo
OworICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBDYXBhYmlsaXR5UmFuZ2UgaGVpZ2h0OworICAgIHJl
YWRvbmx5IGF0dHJpYnV0ZSBDYXBhYmlsaXR5UmFuZ2UgZnJhbWVSYXRlOworICAgIHJlYWRvbmx5
IGF0dHJpYnV0ZSBDYXBhYmlsaXR5UmFuZ2UgYXNwZWN0UmF0aW87CisgICAgcmVhZG9ubHkgYXR0
cmlidXRlIERPTVN0cmluZ1tdICBmYWNpbmdNb2RlOworfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvbWVkaWFzdHJlYW0vQXVkaW9TdHJlYW1UcmFjay5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9BdWRpb1N0cmVhbVRyYWNrLmNwcAko
cmV2aXNpb24gMTU3MDE2KQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9B
dWRpb1N0cmVhbVRyYWNrLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzcsMTQgKzM3LDE3IEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAogUGFzc1JlZlB0cjxBdWRpb1N0cmVhbVRyYWNrPiBBdWRpb1N0
cmVhbVRyYWNrOjpjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgY29uc3Qg
RGljdGlvbmFyeSYgYXVkaW9Db25zdHJhaW50cykKIHsKLSAgICBSZWZQdHI8QXVkaW9TdHJlYW1U
cmFjaz4gdHJhY2sgPSBhZG9wdFJlZihuZXcgQXVkaW9TdHJlYW1UcmFjayhjb250ZXh0LCAwLCAm
YXVkaW9Db25zdHJhaW50cykpOwotICAgIHJldHVybiB0cmFjay5yZWxlYXNlKCk7CisgICAgcmV0
dXJuIGFkb3B0UmVmKG5ldyBBdWRpb1N0cmVhbVRyYWNrKGNvbnRleHQsIDAsICZhdWRpb0NvbnN0
cmFpbnRzKSk7CiB9CiAKIFBhc3NSZWZQdHI8QXVkaW9TdHJlYW1UcmFjaz4gQXVkaW9TdHJlYW1U
cmFjazo6Y3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIE1lZGlhU3RyZWFt
U291cmNlKiBzb3VyY2UpCiB7Ci0gICAgUmVmUHRyPEF1ZGlvU3RyZWFtVHJhY2s+IHRyYWNrID0g
YWRvcHRSZWYobmV3IEF1ZGlvU3RyZWFtVHJhY2soY29udGV4dCwgc291cmNlLCAwKSk7Ci0gICAg
cmV0dXJuIHRyYWNrLnJlbGVhc2UoKTsKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3IEF1ZGlvU3Ry
ZWFtVHJhY2soY29udGV4dCwgc291cmNlLCAwKSk7Cit9CisKK1Bhc3NSZWZQdHI8QXVkaW9TdHJl
YW1UcmFjaz4gQXVkaW9TdHJlYW1UcmFjazo6Y3JlYXRlKE1lZGlhU3RyZWFtVHJhY2sqIHRyYWNr
KQoreworICAgIHJldHVybiBhZG9wdFJlZihuZXcgQXVkaW9TdHJlYW1UcmFjayh0cmFjaykpOwog
fQogCiBBdWRpb1N0cmVhbVRyYWNrOjpBdWRpb1N0cmVhbVRyYWNrKFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQqIGNvbnRleHQsIE1lZGlhU3RyZWFtU291cmNlKiBzb3VyY2UsIGNvbnN0IERpY3Rpb25h
cnkqIGF1ZGlvQ29uc3RyYWludHMpCkBAIC01Miw2ICs1NSwxMSBAQCBBdWRpb1N0cmVhbVRyYWNr
OjpBdWRpb1N0cmVhbVRyYWNrKFNjcmlwCiB7CiB9CiAKK0F1ZGlvU3RyZWFtVHJhY2s6OkF1ZGlv
U3RyZWFtVHJhY2soTWVkaWFTdHJlYW1UcmFjayogdHJhY2spCisgICAgOiBNZWRpYVN0cmVhbVRy
YWNrKHRyYWNrKQoreworfQorCiBjb25zdCBBdG9taWNTdHJpbmcmIEF1ZGlvU3RyZWFtVHJhY2s6
OmtpbmQoKSBjb25zdAogewogICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxBdG9taWNTdHJpbmc+
IGF1ZGlvS2luZCgiYXVkaW8iLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vQXVkaW9TdHJlYW1UcmFj
ay5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vQXVk
aW9TdHJlYW1UcmFjay5oCShyZXZpc2lvbiAxNTcwMzkpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL21lZGlhc3RyZWFtL0F1ZGlvU3RyZWFtVHJhY2suaAkod29ya2luZyBjb3B5KQpAQCAtMjks
OCArMjksOCBAQAogI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCiAKICNpbmNsdWRlICJNZWRpYVN0
cmVhbVRyYWNrLmgiCi0jaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogI2luY2x1ZGUgPHd0Zi9SZWZD
b3VudGVkLmg+CisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKQEAgLTQxLDYgKzQxLDcgQEAgY2xhc3MgQXVkaW9TdHJlYW1UcmFjayBGSU5BTCA6IHB1Ymxp
YyBNZQogcHVibGljOgogICAgIHN0YXRpYyBQYXNzUmVmUHRyPEF1ZGlvU3RyZWFtVHJhY2s+IGNy
ZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgY29uc3QgRGljdGlvbmFyeSYpOwogICAgIHN0
YXRpYyBQYXNzUmVmUHRyPEF1ZGlvU3RyZWFtVHJhY2s+IGNyZWF0ZShTY3JpcHRFeGVjdXRpb25D
b250ZXh0KiwgTWVkaWFTdHJlYW1Tb3VyY2UqKTsKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxBdWRp
b1N0cmVhbVRyYWNrPiBjcmVhdGUoTWVkaWFTdHJlYW1UcmFjayopOwogCiAgICAgdmlydHVhbCB+
QXVkaW9TdHJlYW1UcmFjaygpIHsgfQogCkBAIC00OCw2ICs0OSw3IEBAIHB1YmxpYzoKIAogcHJp
dmF0ZToKICAgICBBdWRpb1N0cmVhbVRyYWNrKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBNZWRp
YVN0cmVhbVNvdXJjZSosIGNvbnN0IERpY3Rpb25hcnkqKTsKKyAgICBleHBsaWNpdCBBdWRpb1N0
cmVhbVRyYWNrKE1lZGlhU3RyZWFtVHJhY2sqKTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vQ2FwYWJpbGl0eVJh
bmdlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFt
L0NhcGFiaWxpdHlSYW5nZS5jcHAJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL21lZGlhc3RyZWFtL0NhcGFiaWxpdHlSYW5nZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAs
MCArMSw5MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENP
TVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuIAorICoKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpZiBFTkFCTEUoTUVESUFf
U1RSRUFNKQorCisjaW5jbHVkZSAiQ2FwYWJpbGl0eVJhbmdlLmgiCisKKyNpbmNsdWRlICJKU0RP
TUJpbmRpbmcuaCIKKyNpbmNsdWRlICJNZWRpYVNvdXJjZVN0YXRlcy5oIgorI2luY2x1ZGUgIlNj
cmlwdFZhbHVlLmgiCisjaW5jbHVkZSA8aW50ZXJwcmV0ZXIvQ2FsbEZyYW1lLmg+CisjaW5jbHVk
ZSA8cnVudGltZS9KU0NKU1ZhbHVlLmg+CisKK3VzaW5nIG5hbWVzcGFjZSBKU0M7CisKK25hbWVz
cGFjZSBXZWJDb3JlIHsKKworUGFzc1JlZlB0cjxDYXBhYmlsaXR5UmFuZ2U+IENhcGFiaWxpdHlS
YW5nZTo6Y3JlYXRlKGNvbnN0IE1lZGlhU3RyZWFtU291cmNlQ2FwYWJpbGl0eVJhbmdlJiByYW5n
ZUluZm8pCit7CisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBDYXBhYmlsaXR5UmFuZ2UocmFuZ2VJ
bmZvKSk7Cit9CisKK0NhcGFiaWxpdHlSYW5nZTo6Q2FwYWJpbGl0eVJhbmdlKGNvbnN0IE1lZGlh
U3RyZWFtU291cmNlQ2FwYWJpbGl0eVJhbmdlJiByYW5nZUluZm8pCisgICAgOiBtX3JhbmdlSW5m
byhyYW5nZUluZm8pCit7Cit9CisKK3N0YXRpYyBTY3JpcHRWYWx1ZSBzY3JpcHRWYWx1ZShFeGVj
U3RhdGUqIGV4ZWMsIGNvbnN0IE1lZGlhU3RyZWFtU291cmNlQ2FwYWJpbGl0eVJhbmdlOjpWYWx1
ZVVuaW9uJiB2YWx1ZSwgTWVkaWFTdHJlYW1Tb3VyY2VDYXBhYmlsaXR5UmFuZ2U6OlR5cGUgdHlw
ZSkKK3sKKyAgICAvLyBOT1RFOiB0aGUgc3BlYyBzYXlzOgorICAgIC8vICAgICAgLi4uIGFuIGlt
cGxlbWVudGF0aW9uIHNob3VsZCBtYWtlIGEgcmVhc29uYWJsZSBhdHRlbXB0IHRvIHRyYW5zbGF0
ZSBhbmQgc2NhbGUgdGhlIGhhcmR3YXJlJ3Mgc2V0dGluZworICAgIC8vICAgICAgb250byB0aGUg
bWFwcGluZyBwcm92aWRlZCBieSB0aGlzIHNwZWNpZmljYXRpb24uIElmIHRoaXMgaXMgbm90IHBv
c3NpYmxlIGR1ZSB0byB0aGUgdXNlciBhZ2VudCdzCisgICAgLy8gICAgICBpbmFiaWxpdHkgdG8g
cmV0cmlldmUgYSBnaXZlbiBjYXBhYmlsaXR5IGZyb20gYSBzb3VyY2UsIHRoZW4gZm9yIENhcGFi
aWxpdHlSYW5nZS10eXBlZCBjYXBhYmlsaXRpZXMsCisgICAgLy8gICAgICB0aGUgbWluIGFuZCBt
YXggZmllbGRzIHdpbGwgbm90IGJlIHByZXNlbnQgb24gdGhlIHJldHVybmVkIGRpY3Rpb25hcnks
IGFuZCB0aGUgc3VwcG9ydGVkIGZpZWxkIHdpbGwgYmUgZmFsc2UuCisgICAgLy8gV2UgZG9uJ3Qg
ZG8gdGhpcyBjdXJyZW50bHkgYmVjYXVzZSBJIGRvbid0IGtub3cgb2YgYW4gaW5zdGFuY2Ugd2hl
cmUgaXQgaXNuJ3QgcG9zc2libGUgdG8gcmV0cmlldmUgYSBzb3VyY2UKKyAgICAvLyBjYXBhYmls
aXR5LCBidXQgd2hlbiB3ZSBoYXZlIHRvIGRlYWwgd2l0aCB0aGlzIHdlIHdpbGwgbmVlZCB0byBt
YXJrIENhcGFiaWxpdHlSYW5nZS5taW4gYW5kIENhcGFiaWxpdHlSYW5nZS5tYXggYXMKKyAgICAv
LyAiQ3VzdG9tIiBhbmQgcmV0dXJuIGpzVW5kZWZpbmVkKCkgZnJvbSB0aGUgY3VzdG9tIGdldHRl
ciB0byBzdXBwb3J0IGl0LgorICAgIAorICAgIHN3aXRjaCAodHlwZSkgeworICAgIGNhc2UgTWVk
aWFTdHJlYW1Tb3VyY2VDYXBhYmlsaXR5UmFuZ2U6OkZsb2F0OgorICAgICAgICByZXR1cm4gU2Ny
aXB0VmFsdWUoZXhlYy0+dm0oKSwgSlNWYWx1ZSh2YWx1ZS5hc0Zsb2F0KSk7CisgICAgICAgIGJy
ZWFrOworICAgIGNhc2UgTWVkaWFTdHJlYW1Tb3VyY2VDYXBhYmlsaXR5UmFuZ2U6OlVMb25nOgor
ICAgICAgICByZXR1cm4gU2NyaXB0VmFsdWUoZXhlYy0+dm0oKSwgSlNWYWx1ZSh2YWx1ZS5hc1VM
b25nKSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgTWVkaWFTdHJlYW1Tb3VyY2VDYXBhYmls
aXR5UmFuZ2U6OlVuZGVmaW5lZDoKKyAgICAgICAgcmV0dXJuIFNjcmlwdFZhbHVlKGV4ZWMtPnZt
KCksIGpzVW5kZWZpbmVkKCkpOworICAgICAgICBicmVhazsKKyAgICB9CisKKyAgICBBU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4gU2NyaXB0VmFsdWUoZXhlYy0+dm0oKSwganNVbmRl
ZmluZWQoKSk7Cit9CisKK1NjcmlwdFZhbHVlIENhcGFiaWxpdHlSYW5nZTo6bWluKEV4ZWNTdGF0
ZSogZXhlYykgY29uc3QKK3sKKyAgICByZXR1cm4gc2NyaXB0VmFsdWUoZXhlYywgbV9yYW5nZUlu
Zm8ubWluKCksIG1fcmFuZ2VJbmZvLnR5cGUoKSk7Cit9CisKK1NjcmlwdFZhbHVlIENhcGFiaWxp
dHlSYW5nZTo6bWF4KEV4ZWNTdGF0ZSogZXhlYykgY29uc3QKK3sKKyAgICByZXR1cm4gc2NyaXB0
VmFsdWUoZXhlYywgbV9yYW5nZUluZm8ubWF4KCksIG1fcmFuZ2VJbmZvLnR5cGUoKSk7Cit9CisK
K30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL21lZGlhc3RyZWFtL0NhcGFiaWxpdHlSYW5nZS5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vQ2FwYWJpbGl0eVJhbmdlLmgJKHJldmlzaW9u
IDApCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL0NhcGFiaWxpdHlSYW5n
ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNjAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUsIElOQy4gYGBBUyBJUycnIEFORCBBTlkK
KyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
CisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqCisgKi8KKworI2lmbmRlZiBDYXBhYmls
aXR5UmFuZ2VfaAorI2RlZmluZSBDYXBhYmlsaXR5UmFuZ2VfaAorCisjaWYgRU5BQkxFKE1FRElB
X1NUUkVBTSkKKworI2luY2x1ZGUgIk1lZGlhU3RyZWFtU291cmNlQ2FwYWJpbGl0aWVzLmgiCisj
aW5jbHVkZSAiU2NyaXB0VmFsdWUuaCIKKyNpbmNsdWRlICJTY3JpcHRXcmFwcGFibGUuaCIKKyNp
bmNsdWRlIDxpbnRlcnByZXRlci9DYWxsRnJhbWUuaD4KKyNpbmNsdWRlIDx3dGYvUmVmQ291bnRl
ZC5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIENhcGFiaWxpdHlSYW5nZSA6IHB1
YmxpYyBSZWZDb3VudGVkPENhcGFiaWxpdHlSYW5nZT4sIHB1YmxpYyBTY3JpcHRXcmFwcGFibGUg
eworcHVibGljOgorICAgIHZpcnR1YWwgfkNhcGFiaWxpdHlSYW5nZSgpIHsgfQorCisgICAgc3Rh
dGljIFBhc3NSZWZQdHI8Q2FwYWJpbGl0eVJhbmdlPiBjcmVhdGUoY29uc3QgTWVkaWFTdHJlYW1T
b3VyY2VDYXBhYmlsaXR5UmFuZ2UmKTsKKworICAgIFNjcmlwdFZhbHVlIG1pbihKU0M6OkV4ZWNT
dGF0ZSopIGNvbnN0OworICAgIFNjcmlwdFZhbHVlIG1heChKU0M6OkV4ZWNTdGF0ZSopIGNvbnN0
OworICAgIGJvb2wgc3VwcG9ydGVkKCkgY29uc3QgeyByZXR1cm4gbV9yYW5nZUluZm8uc3VwcG9y
dGVkKCk7IH0KKworcHJpdmF0ZToKKyAgICBDYXBhYmlsaXR5UmFuZ2UoY29uc3QgTWVkaWFTdHJl
YW1Tb3VyY2VDYXBhYmlsaXR5UmFuZ2UmKTsKKyAgICAKKyAgICBNZWRpYVN0cmVhbVNvdXJjZUNh
cGFiaWxpdHlSYW5nZSBtX3JhbmdlSW5mbzsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
KworI2VuZGlmIC8vIENhcGFiaWxpdHlSYW5nZV9oCisKKyNlbmRpZgpJbmRleDogU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9DYXBhYmlsaXR5UmFuZ2UuaWRsCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vQ2FwYWJpbGl0eVJhbmdlLmlk
bAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vQ2Fw
YWJpbGl0eVJhbmdlLmlkbAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDMzIEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJ
TkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElO
Qy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8K
KworWworICAgIE5vSW50ZXJmYWNlT2JqZWN0LAorICAgIENvbmRpdGlvbmFsPU1FRElBX1NUUkVB
TSwKK10gaW50ZXJmYWNlIENhcGFiaWxpdHlSYW5nZSB7CisgICAgW0NhbGxXaXRoPVNjcmlwdFN0
YXRlXSByZWFkb25seSBhdHRyaWJ1dGUgYW55IG1heDsKKyAgICBbQ2FsbFdpdGg9U2NyaXB0U3Rh
dGVdIHJlYWRvbmx5IGF0dHJpYnV0ZSBhbnkgbWluOworICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBi
b29sZWFuIHN1cHBvcnRlZDsKK307CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlh
c3RyZWFtL01lZGlhQ29uc3RyYWludHNJbXBsLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYUNvbnN0cmFpbnRzSW1wbC5oCShyZXZpc2lvbiAx
NTcwMTYpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhQ29uc3Ry
YWludHNJbXBsLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ1LDcgKzQ1LDkgQEAgY2xhc3MgTWVkaWFD
b25zdHJhaW50c0ltcGwgOiBwdWJsaWMgTWVkaQogcHVibGljOgogICAgIHN0YXRpYyBQYXNzUmVm
UHRyPE1lZGlhQ29uc3RyYWludHNJbXBsPiBjcmVhdGUoKTsKICAgICBzdGF0aWMgUGFzc1JlZlB0
cjxNZWRpYUNvbnN0cmFpbnRzSW1wbD4gY3JlYXRlKGNvbnN0IERpY3Rpb25hcnkmLCBFeGNlcHRp
b25Db2RlJik7CisKICAgICB2aXJ0dWFsIH5NZWRpYUNvbnN0cmFpbnRzSW1wbCgpOworICAgIGJv
b2wgaW5pdGlhbGl6ZShjb25zdCBEaWN0aW9uYXJ5Jik7CiAKICAgICB2aXJ0dWFsIHZvaWQgZ2V0
TWFuZGF0b3J5Q29uc3RyYWludHMoVmVjdG9yPE1lZGlhQ29uc3RyYWludD4mKSBjb25zdCBPVkVS
UklERTsKICAgICB2aXJ0dWFsIHZvaWQgZ2V0T3B0aW9uYWxDb25zdHJhaW50cyhWZWN0b3I8TWVk
aWFDb25zdHJhaW50PiYpIGNvbnN0IE9WRVJSSURFOwpAQCAtNTUsNyArNTcsNiBAQCBwdWJsaWM6
CiAKIHByaXZhdGU6CiAgICAgTWVkaWFDb25zdHJhaW50c0ltcGwoKSB7IH0KLSAgICBib29sIGlu
aXRpYWxpemUoY29uc3QgRGljdGlvbmFyeSYpOwogCiAgICAgSGFzaE1hcDxTdHJpbmcsIFN0cmlu
Zz4gbV9tYW5kYXRvcnlDb25zdHJhaW50czsKICAgICBWZWN0b3I8TWVkaWFDb25zdHJhaW50PiBt
X29wdGlvbmFsQ29uc3RyYWludHM7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlh
c3RyZWFtL01lZGlhU291cmNlU3RhdGVzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU291cmNlU3RhdGVzLmNwcAkocmV2aXNpb24gMCkK
KysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTb3VyY2VTdGF0ZXMu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTAwIEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMn
JyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisg
KiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAi
Y29uZmlnLmgiCisKKyNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQorCisjaW5jbHVkZSAiTWVkaWFT
b3VyY2VTdGF0ZXMuaCIKKworI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgorCituYW1l
c3BhY2UgV2ViQ29yZSB7CisKK1Bhc3NSZWZQdHI8TWVkaWFTb3VyY2VTdGF0ZXM+IE1lZGlhU291
cmNlU3RhdGVzOjpjcmVhdGUoY29uc3QgTWVkaWFTdHJlYW1Tb3VyY2VTdGF0ZXMmIHN0YXRlcykK
K3sKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3IE1lZGlhU291cmNlU3RhdGVzKHN0YXRlcykpOwor
fQorCitNZWRpYVNvdXJjZVN0YXRlczo6TWVkaWFTb3VyY2VTdGF0ZXMoY29uc3QgTWVkaWFTdHJl
YW1Tb3VyY2VTdGF0ZXMmIHN0YXRlcykKKyAgICA6IG1fU291cmNlU3RhdGVzKHN0YXRlcykKK3sK
K30KKworY29uc3QgQXRvbWljU3RyaW5nJiBNZWRpYVNvdXJjZVN0YXRlczo6ZmFjaW5nTW9kZShN
ZWRpYVN0cmVhbVNvdXJjZVN0YXRlczo6VmlkZW9GYWNpbmdNb2RlIG1vZGUpCit7CisgICAgc3Rh
dGljIE5ldmVyRGVzdHJveWVkPEF0b21pY1N0cmluZz4gdXNlckZhY2luZygidXNlciIsIEF0b21p
Y1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3ll
ZDxBdG9taWNTdHJpbmc+IGVudmlyb25tZW50RmFjaW5nKCJlbnZpcm9ubWVudCIsIEF0b21pY1N0
cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxB
dG9taWNTdHJpbmc+IGxlZnRGYWNpbmcoImxlZnQiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZy
b21MaXRlcmFsKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8QXRvbWljU3RyaW5nPiByaWdo
dEZhY2luZygicmlnaHQiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKKyAg
ICAKKyAgICBzd2l0Y2ggKG1vZGUpIHsKKyAgICBjYXNlIE1lZGlhU3RyZWFtU291cmNlU3RhdGVz
OjpVc2VyOgorICAgICAgICByZXR1cm4gdXNlckZhY2luZzsKKyAgICBjYXNlIE1lZGlhU3RyZWFt
U291cmNlU3RhdGVzOjpFbnZpcm9ubWVudDoKKyAgICAgICAgcmV0dXJuIGVudmlyb25tZW50RmFj
aW5nOworICAgIGNhc2UgTWVkaWFTdHJlYW1Tb3VyY2VTdGF0ZXM6OkxlZnQ6CisgICAgICAgIHJl
dHVybiBsZWZ0RmFjaW5nOworICAgIGNhc2UgTWVkaWFTdHJlYW1Tb3VyY2VTdGF0ZXM6OlJpZ2h0
OgorICAgICAgICByZXR1cm4gcmlnaHRGYWNpbmc7CisgICAgfQorCisgICAgQVNTRVJUX05PVF9S
RUFDSEVEKCk7CisgICAgcmV0dXJuIGVtcHR5QXRvbTsKK30KKworY29uc3QgQXRvbWljU3RyaW5n
JiBNZWRpYVNvdXJjZVN0YXRlczo6c291cmNlVHlwZShNZWRpYVN0cmVhbVNvdXJjZVN0YXRlczo6
U291cmNlVHlwZSBzb3VyY2VUeXBlKQoreworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxBdG9t
aWNTdHJpbmc+IG5vbmUoIm5vbmUiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFs
KTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8QXRvbWljU3RyaW5nPiBjYW1lcmEoImNhbWVy
YSIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOworICAgIHN0YXRpYyBOZXZl
ckRlc3Ryb3llZDxBdG9taWNTdHJpbmc+IG1pY3JvcGhvbmUoIm1pY3JvcGhvbmUiLCBBdG9taWNT
dHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKKworICAgIHN3aXRjaCAoc291cmNlVHlwZSkg
eworICAgIGNhc2UgTWVkaWFTdHJlYW1Tb3VyY2VTdGF0ZXM6Ok5vbmU6CisgICAgICAgIHJldHVy
biBub25lOworICAgIGNhc2UgTWVkaWFTdHJlYW1Tb3VyY2VTdGF0ZXM6OkNhbWVyYToKKyAgICAg
ICAgcmV0dXJuIGNhbWVyYTsKKyAgICBjYXNlIE1lZGlhU3RyZWFtU291cmNlU3RhdGVzOjpNaWNy
b3Bob25lOgorICAgICAgICByZXR1cm4gbWljcm9waG9uZTsKKyAgICB9CisKKyAgICBBU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4gZW1wdHlBdG9tOworfQorCitjb25zdCBBdG9taWNT
dHJpbmcmIE1lZGlhU291cmNlU3RhdGVzOjpzb3VyY2VUeXBlKCkgY29uc3QKK3sKKyAgICByZXR1
cm4gTWVkaWFTb3VyY2VTdGF0ZXM6OnNvdXJjZVR5cGUobV9Tb3VyY2VTdGF0ZXMuc291cmNlVHlw
ZSk7Cit9CisKK2NvbnN0IEF0b21pY1N0cmluZyYgTWVkaWFTb3VyY2VTdGF0ZXM6OmZhY2luZ01v
ZGUoKSBjb25zdAoreworICAgIHJldHVybiBNZWRpYVNvdXJjZVN0YXRlczo6ZmFjaW5nTW9kZSht
X1NvdXJjZVN0YXRlcy5mYWNpbmdNb2RlKTsKK30KKworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CisKKyNlbmRpZgpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRp
YVNvdXJjZVN0YXRlcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVk
aWFzdHJlYW0vTWVkaWFTb3VyY2VTdGF0ZXMuaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9XZWJD
b3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTb3VyY2VTdGF0ZXMuaAkod29ya2luZyBjb3B5
KQpAQCAtMCwwICsxLDY2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIE1lZGlhU291cmNlU3RhdGVzX2gK
KyNkZWZpbmUgTWVkaWFTb3VyY2VTdGF0ZXNfaAorCisjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkK
KworI2luY2x1ZGUgIk1lZGlhU3RyZWFtU291cmNlQ2FwYWJpbGl0aWVzLmgiCisjaW5jbHVkZSAi
U2NyaXB0V3JhcHBhYmxlLmgiCisjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KKyNpbmNsdWRlIDx3
dGYvUmVmQ291bnRlZC5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIE1lZGlhU291
cmNlU3RhdGVzIDogcHVibGljIFJlZkNvdW50ZWQ8TWVkaWFTb3VyY2VTdGF0ZXM+LCBwdWJsaWMg
U2NyaXB0V3JhcHBhYmxlIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxNZWRpYVNv
dXJjZVN0YXRlcz4gY3JlYXRlKGNvbnN0IE1lZGlhU3RyZWFtU291cmNlU3RhdGVzJik7CisKKyAg
ICBzdGF0aWMgY29uc3QgQXRvbWljU3RyaW5nJiBzb3VyY2VUeXBlKE1lZGlhU3RyZWFtU291cmNl
U3RhdGVzOjpTb3VyY2VUeXBlKTsKKyAgICBzdGF0aWMgY29uc3QgQXRvbWljU3RyaW5nJiBmYWNp
bmdNb2RlKE1lZGlhU3RyZWFtU291cmNlU3RhdGVzOjpWaWRlb0ZhY2luZ01vZGUpOworICAgIAor
ICAgIGNvbnN0IEF0b21pY1N0cmluZyYgc291cmNlVHlwZSgpIGNvbnN0OworICAgIGNvbnN0IEF0
b21pY1N0cmluZyYgc291cmNlSWQoKSBjb25zdCB7IHJldHVybiBtX1NvdXJjZVN0YXRlcy5zb3Vy
Y2VJZDsgfQorICAgIHVuc2lnbmVkIGxvbmcgd2lkdGgoKSBjb25zdCB7IHJldHVybiBtX1NvdXJj
ZVN0YXRlcy53aWR0aDsgfQorICAgIHVuc2lnbmVkIGxvbmcgaGVpZ2h0KCkgY29uc3QgeyByZXR1
cm4gbV9Tb3VyY2VTdGF0ZXMuaGVpZ2h0OyB9CisgICAgZmxvYXQgZnJhbWVSYXRlKCkgY29uc3Qg
eyByZXR1cm4gbV9Tb3VyY2VTdGF0ZXMuZnJhbWVSYXRlOyB9CisgICAgZmxvYXQgYXNwZWN0UmF0
aW8oKSBjb25zdCB7IHJldHVybiBtX1NvdXJjZVN0YXRlcy5hc3BlY3RSYXRpbzsgfQorICAgIGNv
bnN0IEF0b21pY1N0cmluZyYgZmFjaW5nTW9kZSgpIGNvbnN0OworICAgIHVuc2lnbmVkIGxvbmcg
dm9sdW1lKCkgY29uc3QgeyByZXR1cm4gbV9Tb3VyY2VTdGF0ZXMudm9sdW1lOyB9CisgICAgCisg
ICAgYm9vbCBoYXNWaWRlb1NvdXJjZSgpIGNvbnN0IHsgcmV0dXJuIG1fU291cmNlU3RhdGVzLnNv
dXJjZVR5cGUgPT0gTWVkaWFTdHJlYW1Tb3VyY2VTdGF0ZXM6OkNhbWVyYTsgfQorCitwcml2YXRl
OgorICAgIGV4cGxpY2l0IE1lZGlhU291cmNlU3RhdGVzKGNvbnN0IE1lZGlhU3RyZWFtU291cmNl
U3RhdGVzJik7CisKKyAgICBNZWRpYVN0cmVhbVNvdXJjZVN0YXRlcyBtX1NvdXJjZVN0YXRlczsK
K307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIE1lZGlhU291cmNlU3Rh
dGVzX2gKKworI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFt
L01lZGlhU291cmNlU3RhdGVzLmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL21lZGlhc3RyZWFtL01lZGlhU291cmNlU3RhdGVzLmlkbAkocmV2aXNpb24gMCkKKysrIFNv
dXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTb3VyY2VTdGF0ZXMuaWRsCSh3
b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNDQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBB
TlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
ICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAor
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCitlbnVtIFNvdXJjZVR5cGVF
bnVtIHsgIm5vbmUiLCAiY2FtZXJhIiwgIm1pY3JvcGhvbmUiIH07CitlbnVtIFZpZGVvRmFjaW5n
TW9kZUVudW0geyAidXNlciIsICJlbnZpcm9ubWVudCIsICJsZWZ0IiwgInJpZ2h0IiB9OworCitb
CisgICAgQ29uZGl0aW9uYWw9TUVESUFfU1RSRUFNLAorICAgIEltcGxlbWVudGF0aW9uTGFja3NW
VGFibGUsCisgICAgTm9JbnRlcmZhY2VPYmplY3QsCitdIGludGVyZmFjZSBNZWRpYVNvdXJjZVN0
YXRlcyB7CisgICAgcmVhZG9ubHkgYXR0cmlidXRlIFNvdXJjZVR5cGVFbnVtIHNvdXJjZVR5cGU7
CisgICAgcmVhZG9ubHkgYXR0cmlidXRlIERPTVN0cmluZyBzb3VyY2VJZDsKKworICAgIFtDdXN0
b21HZXR0ZXJdIHJlYWRvbmx5IGF0dHJpYnV0ZSB1bnNpZ25lZCBsb25nIHdpZHRoOworICAgIFtD
dXN0b21HZXR0ZXJdIHJlYWRvbmx5IGF0dHJpYnV0ZSB1bnNpZ25lZCBsb25nIGhlaWdodDsKKyAg
ICBbQ3VzdG9tR2V0dGVyXSByZWFkb25seSBhdHRyaWJ1dGUgZmxvYXQgZnJhbWVSYXRlOworICAg
IFtDdXN0b21HZXR0ZXJdIHJlYWRvbmx5IGF0dHJpYnV0ZSBmbG9hdCBhc3BlY3RSYXRpbzsKKyAg
ICBbQ3VzdG9tR2V0dGVyXSByZWFkb25seSBhdHRyaWJ1dGUgVmlkZW9GYWNpbmdNb2RlRW51bSBm
YWNpbmdNb2RlOworICAgIFtDdXN0b21HZXR0ZXJdIHJlYWRvbmx5IGF0dHJpYnV0ZSB1bnNpZ25l
ZCBsb25nIHZvbHVtZTsKK307CisKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFz
dHJlYW0vTWVkaWFTdHJlYW0uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW0uY3BwCShyZXZpc2lvbiAxNTcwMTYpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtNTYsMjIgKzU2LDEzIEBAIHN0YXRpYyB2b2lkIHByb2Nlc3NUcmFjayhNZWRpYVN0
cmVhbVRyYWMKICAgICAgICAgcmV0dXJuOwogCiAgICAgTWVkaWFTdHJlYW1Tb3VyY2UqIHNvdXJj
ZSA9IHRyYWNrLT5zb3VyY2UoKTsKLSAgICBpZiAoIWNvbnRhaW5zU291cmNlKHNvdXJjZVZlY3Rv
ciwgc291cmNlKSkgewotICAgICAgICBpZiAoc291cmNlLT5zdHJlYW0oKSkgewotICAgICAgICAg
ICAgLy8gRklYTUU6IHRoaXMgc2hvdWxkIG5vdCBiZSBuZWNlc3NhcnkgYmVjYXVzZSB0cmFja3Mg
YW5kIHN0cmVhbXMgbXVzdCBiZSBhYmxlIHRvIHNoYXJlIHNvdXJjZXMsIGJ1dCBvdXIgY29kZQot
ICAgICAgICAgICAgLy8gY3VycmVubHR5IGFzc3VtZXMgZWFjaCBzb3VyY2UgaXMgYXR0YWNoZWQg
dG8ganVzdCBvbmUgdHJhY2suCi0gICAgICAgICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTIxOTU0Ci0gICAgICAgICAgICBzb3VyY2VWZWN0b3IuYXBwZW5k
KE1lZGlhU3RyZWFtU291cmNlOjpjcmVhdGUoc291cmNlLT5pZCgpLCBzb3VyY2UtPnR5cGUoKSwg
c291cmNlLT5uYW1lKCksIHNvdXJjZS0+cmVhZHlTdGF0ZSgpLCBzb3VyY2UtPnJlcXVpcmVzQXVk
aW9Db25zdW1lcigpKS5nZXQoKSk7Ci0gICAgICAgIH0gZWxzZQotICAgICAgICAgICAgc291cmNl
VmVjdG9yLmFwcGVuZChzb3VyY2UpOwotICAgIH0KKyAgICBpZiAoIWNvbnRhaW5zU291cmNlKHNv
dXJjZVZlY3Rvciwgc291cmNlKSkKKyAgICAgICAgc291cmNlVmVjdG9yLmFwcGVuZChzb3VyY2Up
OwogfQogCiBzdGF0aWMgUGFzc1JlZlB0cjxNZWRpYVN0cmVhbT4gY3JlYXRlRnJvbVNvdXJjZVZl
Y3RvcnMoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgY29uc3QgTWVkaWFTdHJlYW1T
b3VyY2VWZWN0b3ImIGF1ZGlvU291cmNlcywgY29uc3QgTWVkaWFTdHJlYW1Tb3VyY2VWZWN0b3Im
IHZpZGVvU291cmNlcykKIHsKICAgICBSZWZQdHI8TWVkaWFTdHJlYW1EZXNjcmlwdG9yPiBkZXNj
cmlwdG9yID0gTWVkaWFTdHJlYW1EZXNjcmlwdG9yOjpjcmVhdGUoYXVkaW9Tb3VyY2VzLCB2aWRl
b1NvdXJjZXMpOwotICAgIE1lZGlhU3RyZWFtQ2VudGVyOjpzaGFyZWQoKS5kaWRDcmVhdGVNZWRp
YVN0cmVhbShkZXNjcmlwdG9yLmdldCgpKTsKLQogICAgIHJldHVybiBNZWRpYVN0cmVhbTo6Y3Jl
YXRlKGNvbnRleHQsIGRlc2NyaXB0b3IucmVsZWFzZSgpKTsKIH0KIApAQCAtMTIxLDYgKzExMiw3
IEBAIE1lZGlhU3RyZWFtOjpNZWRpYVN0cmVhbShTY3JpcHRFeGVjdXRpb24KICAgICAsIG1fZGVz
Y3JpcHRvcihzdHJlYW1EZXNjcmlwdG9yKQogICAgICwgbV9zY2hlZHVsZWRFdmVudFRpbWVyKHRo
aXMsICZNZWRpYVN0cmVhbTo6c2NoZWR1bGVkRXZlbnRUaW1lckZpcmVkKQogeworICAgIEFTU0VS
VChtX2Rlc2NyaXB0b3IpOwogICAgIG1fZGVzY3JpcHRvci0+c2V0Q2xpZW50KHRoaXMpOwogCiAg
ICAgc2l6ZV90IG51bWJlck9mQXVkaW9UcmFja3MgPSBtX2Rlc2NyaXB0b3ItPm51bWJlck9mQXVk
aW9TdHJlYW1zKCk7CkBAIC0xNTYsNyArMTQ4LDYgQEAgdm9pZCBNZWRpYVN0cmVhbTo6c3RvcCgp
CiAgICAgaWYgKGVuZGVkKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIE1lZGlhU3RyZWFtQ2Vu
dGVyOjpzaGFyZWQoKS5kaWRTdG9wTG9jYWxNZWRpYVN0cmVhbShkZXNjcmlwdG9yKCkpOwogICAg
IHNldEVuZGVkKCk7CiB9CiAKQEAgLTE4NCw4ICsxNzUsNiBAQCB2b2lkIE1lZGlhU3RyZWFtOjph
ZGRUcmFjayhQYXNzUmVmUHRyPE1lCiAgICAgICAgIG1fdmlkZW9UcmFja3MuYXBwZW5kKHRyYWNr
KTsKICAgICAgICAgYnJlYWs7CiAgICAgfQotCi0gICAgTWVkaWFTdHJlYW1DZW50ZXI6OnNoYXJl
ZCgpLmRpZEFkZE1lZGlhU3RyZWFtVHJhY2sodHJhY2stPnNvdXJjZSgpKTsKIH0KIAogdm9pZCBN
ZWRpYVN0cmVhbTo6cmVtb3ZlVHJhY2soUGFzc1JlZlB0cjxNZWRpYVN0cmVhbVRyYWNrPiBwcnBU
cmFjaywgRXhjZXB0aW9uQ29kZSYgZWMpCkBAIC0yMjMsOCArMjEyLDYgQEAgdm9pZCBNZWRpYVN0
cmVhbTo6cmVtb3ZlVHJhY2soUGFzc1JlZlB0cgogCiAgICAgaWYgKCFtX2F1ZGlvVHJhY2tzLnNp
emUoKSAmJiAhbV92aWRlb1RyYWNrcy5zaXplKCkpCiAgICAgICAgIHNldEVuZGVkKCk7Ci0KLSAg
ICBNZWRpYVN0cmVhbUNlbnRlcjo6c2hhcmVkKCkuZGlkUmVtb3ZlTWVkaWFTdHJlYW1UcmFjayh0
cmFjay0+c291cmNlKCkpOwogfQogCiBNZWRpYVN0cmVhbVRyYWNrKiBNZWRpYVN0cmVhbTo6Z2V0
VHJhY2tCeUlkKFN0cmluZyBpZCkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFz
dHJlYW0vTWVkaWFTdHJlYW0uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L21lZGlhc3RyZWFtL01lZGlhU3RyZWFtLmgJKHJldmlzaW9uIDE1NzAxNikKKysrIFNvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW0uaAkod29ya2luZyBjb3B5KQpA
QCAtODUsMjAgKzg1LDE4IEBAIHByb3RlY3RlZDoKICAgICBNZWRpYVN0cmVhbShTY3JpcHRFeGVj
dXRpb25Db250ZXh0KiwgUGFzc1JlZlB0cjxNZWRpYVN0cmVhbURlc2NyaXB0b3I+KTsKIAogICAg
IC8vIENvbnRleHREZXN0cnVjdGlvbk9ic2VydmVyCi0gICAgdmlydHVhbCB2b2lkIGNvbnRleHRE
ZXN0cm95ZWQoKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgY29udGV4dERlc3Ryb3llZCgp
IE9WRVJSSURFIEZJTkFMOwogCiBwcml2YXRlOgotICAgIC8vIE1lZGlhU3RyZWFtRGVzY3JpcHRv
ckNsaWVudAotICAgIHZpcnR1YWwgdm9pZCB0cmFja0RpZEVuZCgpIE9WRVJSSURFOwotICAgIHZp
cnR1YWwgdm9pZCBzdHJlYW1EaWRFbmQoKSBPVkVSUklERTsKLSAgICAKICAgICAvLyBFdmVudFRh
cmdldAotICAgIHZpcnR1YWwgdm9pZCByZWZFdmVudFRhcmdldCgpIE9WRVJSSURFIHsgcmVmKCk7
IH0KLSAgICB2aXJ0dWFsIHZvaWQgZGVyZWZFdmVudFRhcmdldCgpIE9WRVJSSURFIHsgZGVyZWYo
KTsgfQorICAgIHZpcnR1YWwgdm9pZCByZWZFdmVudFRhcmdldCgpIE9WRVJSSURFIEZJTkFMIHsg
cmVmKCk7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZGVyZWZFdmVudFRhcmdldCgpIE9WRVJSSURFIEZJ
TkFMIHsgZGVyZWYoKTsgfQogCiAgICAgLy8gTWVkaWFTdHJlYW1EZXNjcmlwdG9yQ2xpZW50Ci0g
ICAgdmlydHVhbCB2b2lkIGFkZFJlbW90ZVNvdXJjZShNZWRpYVN0cmVhbVNvdXJjZSopIE9WRVJS
SURFOwotICAgIHZpcnR1YWwgdm9pZCByZW1vdmVSZW1vdGVTb3VyY2UoTWVkaWFTdHJlYW1Tb3Vy
Y2UqKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgdHJhY2tEaWRFbmQoKSBPVkVSUklERSBG
SU5BTDsKKyAgICB2aXJ0dWFsIHZvaWQgc3RyZWFtRGlkRW5kKCkgT1ZFUlJJREUgRklOQUw7Cisg
ICAgdmlydHVhbCB2b2lkIGFkZFJlbW90ZVNvdXJjZShNZWRpYVN0cmVhbVNvdXJjZSopIE9WRVJS
SURFIEZJTkFMOworICAgIHZpcnR1YWwgdm9pZCByZW1vdmVSZW1vdGVTb3VyY2UoTWVkaWFTdHJl
YW1Tb3VyY2UqKSBPVkVSUklERSBGSU5BTDsKIAogICAgIHZvaWQgc2NoZWR1bGVEaXNwYXRjaEV2
ZW50KFBhc3NSZWZQdHI8RXZlbnQ+KTsKICAgICB2b2lkIHNjaGVkdWxlZEV2ZW50VGltZXJGaXJl
ZChUaW1lcjxNZWRpYVN0cmVhbT4qKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVk
aWFzdHJlYW0vTWVkaWFTdHJlYW1DYXBhYmlsaXRpZXMuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1DYXBhYmlsaXRpZXMuY3Bw
CShyZXZpc2lvbiAwKQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRp
YVN0cmVhbUNhcGFiaWxpdGllcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxNDIgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09N
UFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01Q
VVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2lmIEVOQUJMRShNRURJQV9TVFJFQU0p
CisKKyNpbmNsdWRlICJNZWRpYVN0cmVhbUNhcGFiaWxpdGllcy5oIgorCisjaW5jbHVkZSAiQWxs
QXVkaW9DYXBhYmlsaXRpZXMuaCIKKyNpbmNsdWRlICJBbGxWaWRlb0NhcGFiaWxpdGllcy5oIgor
I2luY2x1ZGUgIkNhcGFiaWxpdHlSYW5nZS5oIgorI2luY2x1ZGUgIk1lZGlhU291cmNlU3RhdGVz
LmgiCisjaW5jbHVkZSAiTWVkaWFTdHJlYW1Tb3VyY2VDYXBhYmlsaXRpZXMuaCIKKworbmFtZXNw
YWNlIFdlYkNvcmUgeworCitQYXNzUmVmUHRyPE1lZGlhU3RyZWFtQ2FwYWJpbGl0aWVzPiBNZWRp
YVN0cmVhbUNhcGFiaWxpdGllczo6Y3JlYXRlKFBhc3NSZWZQdHI8TWVkaWFTdHJlYW1Tb3VyY2VD
YXBhYmlsaXRpZXM+IGNhcGFiaWxpdGllcykKK3sKKyAgICBpZiAoY2FwYWJpbGl0aWVzLT5oYXNW
aWRlb1NvdXJjZSgpKQorICAgICAgICByZXR1cm4gQWxsVmlkZW9DYXBhYmlsaXRpZXM6OmNyZWF0
ZShjYXBhYmlsaXRpZXMpOworICAgIAorICAgIHJldHVybiBBbGxBdWRpb0NhcGFiaWxpdGllczo6
Y3JlYXRlKGNhcGFiaWxpdGllcyk7Cit9CisKK01lZGlhU3RyZWFtQ2FwYWJpbGl0aWVzOjpNZWRp
YVN0cmVhbUNhcGFiaWxpdGllcyhQYXNzUmVmUHRyPE1lZGlhU3RyZWFtU291cmNlQ2FwYWJpbGl0
aWVzPiBjYXBhYmlsaXRpZXMpCisgICAgOiBtX1NvdXJjZUNhcGFiaWxpdGllcyhjYXBhYmlsaXRp
ZXMpCit7Cit9CisKK1ZlY3RvcjxTdHJpbmc+IE1lZGlhU3RyZWFtQ2FwYWJpbGl0aWVzOjpzb3Vy
Y2VUeXBlKCkgY29uc3QKK3sKKyAgICBBU1NFUlQobV9Tb3VyY2VDYXBhYmlsaXRpZXMtPmhhc1Zp
ZGVvU291cmNlKCkpOworICAgIAorICAgIHNpemVfdCBjb3VudCA9IG1fU291cmNlQ2FwYWJpbGl0
aWVzLT5zb3VyY2VUeXBlcygpLnNpemUoKTsKKyAgICBpZiAoIWNvdW50KQorICAgICAgICByZXR1
cm4gVmVjdG9yPFN0cmluZz4oKTsKKyAgICAKKyAgICBjb25zdCBWZWN0b3I8TWVkaWFTdHJlYW1T
b3VyY2VTdGF0ZXM6OlNvdXJjZVR5cGU+JiBzb3VyY2VUeXBlcyA9IG1fU291cmNlQ2FwYWJpbGl0
aWVzLT5zb3VyY2VUeXBlcygpOworICAgIFZlY3RvcjxTdHJpbmc+IGNhcGFiaWxpdGllczsKKyAg
ICBjYXBhYmlsaXRpZXMucmVzZXJ2ZUNhcGFjaXR5KGNvdW50KTsKKyAgICAKKyAgICBmb3IgKHNp
emVfdCBpID0gMDsgaSA8IGNvdW50OyArK2kpCisgICAgICAgIGNhcGFiaWxpdGllcy5hcHBlbmQo
TWVkaWFTb3VyY2VTdGF0ZXM6OnNvdXJjZVR5cGUoc291cmNlVHlwZXNbaV0pKTsKKyAgICAKKyAg
ICByZXR1cm4gY2FwYWJpbGl0aWVzOworfQorCitWZWN0b3I8U3RyaW5nPiBNZWRpYVN0cmVhbUNh
cGFiaWxpdGllczo6c291cmNlSWQoKSBjb25zdAoreworICAgIHNpemVfdCBjb3VudCA9IG1fU291
cmNlQ2FwYWJpbGl0aWVzLT5zb3VyY2VJZCgpLnNpemUoKTsKKyAgICBpZiAoIWNvdW50KQorICAg
ICAgICByZXR1cm4gVmVjdG9yPFN0cmluZz4oKTsKKyAgICAKKyAgICBjb25zdCBWZWN0b3I8QXRv
bWljU3RyaW5nPiYgc291cmNlSWRzID0gbV9Tb3VyY2VDYXBhYmlsaXRpZXMtPnNvdXJjZUlkKCk7
CisgICAgVmVjdG9yPFN0cmluZz4gY2FwYWJpbGl0aWVzOworICAgIGNhcGFiaWxpdGllcy5yZXNl
cnZlQ2FwYWNpdHkoY291bnQpOworICAgIAorICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgY291
bnQ7ICsraSkKKyAgICAgICAgY2FwYWJpbGl0aWVzLmFwcGVuZChzb3VyY2VJZHNbaV0pOworICAg
IAorICAgIHJldHVybiBjYXBhYmlsaXRpZXM7Cit9CisKK1ZlY3RvcjxTdHJpbmc+IE1lZGlhU3Ry
ZWFtQ2FwYWJpbGl0aWVzOjpmYWNpbmdNb2RlKCkgY29uc3QKK3sKKyAgICBBU1NFUlQobV9Tb3Vy
Y2VDYXBhYmlsaXRpZXMtPmhhc1ZpZGVvU291cmNlKCkpOworICAgIAorICAgIHNpemVfdCBjb3Vu
dCA9IG1fU291cmNlQ2FwYWJpbGl0aWVzLT5mYWNpbmdNb2RlcygpLnNpemUoKTsKKyAgICBpZiAo
IWNvdW50KQorICAgICAgICByZXR1cm4gVmVjdG9yPFN0cmluZz4oKTsKKyAgICAKKyAgICBjb25z
dCBWZWN0b3I8TWVkaWFTdHJlYW1Tb3VyY2VTdGF0ZXM6OlZpZGVvRmFjaW5nTW9kZT4mIGZhY2lu
Z01vZGVzID0gbV9Tb3VyY2VDYXBhYmlsaXRpZXMtPmZhY2luZ01vZGVzKCk7CisgICAgVmVjdG9y
PFN0cmluZz4gY2FwYWJpbGl0aWVzOworICAgIGNhcGFiaWxpdGllcy5yZXNlcnZlQ2FwYWNpdHko
Y291bnQpOworICAgIAorICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgY291bnQ7ICsraSkKKyAg
ICAgICAgY2FwYWJpbGl0aWVzLmFwcGVuZChNZWRpYVNvdXJjZVN0YXRlczo6ZmFjaW5nTW9kZShm
YWNpbmdNb2Rlc1tpXSkpOworICAgIAorICAgIHJldHVybiBjYXBhYmlsaXRpZXM7Cit9CisKK1Jl
ZlB0cjxDYXBhYmlsaXR5UmFuZ2U+IE1lZGlhU3RyZWFtQ2FwYWJpbGl0aWVzOjp3aWR0aCgpIGNv
bnN0Cit7CisgICAgQVNTRVJUKG1fU291cmNlQ2FwYWJpbGl0aWVzLT5oYXNWaWRlb1NvdXJjZSgp
KTsKKyAgICAKKyAgICByZXR1cm4gQ2FwYWJpbGl0eVJhbmdlOjpjcmVhdGUobV9Tb3VyY2VDYXBh
YmlsaXRpZXMtPndpZHRoKCkpOworfQorCitSZWZQdHI8Q2FwYWJpbGl0eVJhbmdlPiBNZWRpYVN0
cmVhbUNhcGFiaWxpdGllczo6aGVpZ2h0KCkgY29uc3QKK3sKKyAgICBBU1NFUlQobV9Tb3VyY2VD
YXBhYmlsaXRpZXMtPmhhc1ZpZGVvU291cmNlKCkpOworICAgIAorICAgIHJldHVybiBDYXBhYmls
aXR5UmFuZ2U6OmNyZWF0ZShtX1NvdXJjZUNhcGFiaWxpdGllcy0+aGVpZ2h0KCkpOworfQorCitS
ZWZQdHI8Q2FwYWJpbGl0eVJhbmdlPiBNZWRpYVN0cmVhbUNhcGFiaWxpdGllczo6ZnJhbWVSYXRl
KCkgY29uc3QKK3sKKyAgICBBU1NFUlQobV9Tb3VyY2VDYXBhYmlsaXRpZXMtPmhhc1ZpZGVvU291
cmNlKCkpOworICAgIAorICAgIHJldHVybiBDYXBhYmlsaXR5UmFuZ2U6OmNyZWF0ZShtX1NvdXJj
ZUNhcGFiaWxpdGllcy0+ZnJhbWVSYXRlKCkpOworfQorCitSZWZQdHI8Q2FwYWJpbGl0eVJhbmdl
PiBNZWRpYVN0cmVhbUNhcGFiaWxpdGllczo6YXNwZWN0UmF0aW8oKSBjb25zdAoreworICAgIEFT
U0VSVChtX1NvdXJjZUNhcGFiaWxpdGllcy0+aGFzVmlkZW9Tb3VyY2UoKSk7CisgICAgCisgICAg
cmV0dXJuIENhcGFiaWxpdHlSYW5nZTo6Y3JlYXRlKG1fU291cmNlQ2FwYWJpbGl0aWVzLT5hc3Bl
Y3RSYXRpbygpKTsKK30KKworUmVmUHRyPENhcGFiaWxpdHlSYW5nZT4gTWVkaWFTdHJlYW1DYXBh
YmlsaXRpZXM6OnZvbHVtZSgpIGNvbnN0Cit7CisgICAgQVNTRVJUKCFtX1NvdXJjZUNhcGFiaWxp
dGllcy0+aGFzVmlkZW9Tb3VyY2UoKSk7CisgICAgCisgICAgcmV0dXJuIENhcGFiaWxpdHlSYW5n
ZTo6Y3JlYXRlKG1fU291cmNlQ2FwYWJpbGl0aWVzLT52b2x1bWUoKSk7Cit9CisKK30gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21l
ZGlhc3RyZWFtL01lZGlhU3RyZWFtQ2FwYWJpbGl0aWVzLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbUNhcGFiaWxpdGllcy5oCShy
ZXZpc2lvbiAwKQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0
cmVhbUNhcGFiaWxpdGllcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNjkgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIs
IElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwg
SU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAq
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNpZm5kZWYgTWVkaWFTdHJlYW1DYXBhYmlsaXRpZXNfaAorI2RlZmluZSBNZWRpYVN0cmVh
bUNhcGFiaWxpdGllc19oCisKKyNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQorCisjaW5jbHVkZSAi
TWVkaWFTdHJlYW1DYXBhYmlsaXRpZXMuaCIKKyNpbmNsdWRlICJNZWRpYVN0cmVhbVNvdXJjZUNh
cGFiaWxpdGllcy5oIgorI2luY2x1ZGUgIlNjcmlwdFdyYXBwYWJsZS5oIgorI2luY2x1ZGUgPHd0
Zi9SZWZDb3VudGVkLmg+CisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorI2luY2x1ZGUgPHd0Zi90
ZXh0L1dURlN0cmluZy5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIENhcGFiaWxp
dHlSYW5nZTsKK2NsYXNzIE1lZGlhU3RyZWFtU291cmNlQ2FwYWJpbGl0aWVzOworCitjbGFzcyBN
ZWRpYVN0cmVhbUNhcGFiaWxpdGllcyA6IHB1YmxpYyBSZWZDb3VudGVkPE1lZGlhU3RyZWFtQ2Fw
YWJpbGl0aWVzPiwgcHVibGljIFNjcmlwdFdyYXBwYWJsZSB7CitwdWJsaWM6CisgICAgc3RhdGlj
IFBhc3NSZWZQdHI8TWVkaWFTdHJlYW1DYXBhYmlsaXRpZXM+IGNyZWF0ZShQYXNzUmVmUHRyPE1l
ZGlhU3RyZWFtU291cmNlQ2FwYWJpbGl0aWVzPik7CisgICAgdmlydHVhbCB+TWVkaWFTdHJlYW1D
YXBhYmlsaXRpZXMoKSB7IH0KKworICAgIHZpcnR1YWwgVmVjdG9yPFN0cmluZz4gc291cmNlVHlw
ZSgpIGNvbnN0OworICAgIHZpcnR1YWwgVmVjdG9yPFN0cmluZz4gc291cmNlSWQoKSBjb25zdDsK
KyAgICB2aXJ0dWFsIFJlZlB0cjxDYXBhYmlsaXR5UmFuZ2U+IHdpZHRoKCkgY29uc3Q7CisgICAg
dmlydHVhbCBSZWZQdHI8Q2FwYWJpbGl0eVJhbmdlPiBoZWlnaHQoKSBjb25zdDsKKyAgICB2aXJ0
dWFsIFJlZlB0cjxDYXBhYmlsaXR5UmFuZ2U+IGZyYW1lUmF0ZSgpIGNvbnN0OworICAgIHZpcnR1
YWwgUmVmUHRyPENhcGFiaWxpdHlSYW5nZT4gYXNwZWN0UmF0aW8oKSBjb25zdDsKKyAgICB2aXJ0
dWFsIFZlY3RvcjxTdHJpbmc+IGZhY2luZ01vZGUoKSBjb25zdDsKKyAgICB2aXJ0dWFsIFJlZlB0
cjxDYXBhYmlsaXR5UmFuZ2U+IHZvbHVtZSgpIGNvbnN0OworICAgIAorICAgIGJvb2wgaGFzVmlk
ZW9Tb3VyY2UoKSB7IHJldHVybiBtX1NvdXJjZUNhcGFiaWxpdGllcy0+aGFzVmlkZW9Tb3VyY2Uo
KTsgfQorCitwcm90ZWN0ZWQ6CisgICAgZXhwbGljaXQgTWVkaWFTdHJlYW1DYXBhYmlsaXRpZXMo
UGFzc1JlZlB0cjxNZWRpYVN0cmVhbVNvdXJjZUNhcGFiaWxpdGllcz4pOworCisgICAgUmVmUHRy
PE1lZGlhU3RyZWFtU291cmNlQ2FwYWJpbGl0aWVzPiBtX1NvdXJjZUNhcGFiaWxpdGllczsKK307
CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIE1lZGlhU3RyZWFtQ2FwYWJp
bGl0aWVzX2gKKworI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3Ry
ZWFtL01lZGlhU3RyZWFtQ2FwYWJpbGl0aWVzLmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtQ2FwYWJpbGl0aWVzLmlkbAkocmV2
aXNpb24gMCkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJl
YW1DYXBhYmlsaXRpZXMuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMzMgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIs
IElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwg
SU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAq
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAq
LworCitbCisgICAgQ29uZGl0aW9uYWw9TUVESUFfU1RSRUFNLAorICAgIE5vSW50ZXJmYWNlT2Jq
ZWN0LAorICAgIFNraXBWVGFibGVWYWxpZGF0aW9uLAorICAgIEN1c3RvbVRvSlNPYmplY3QsCitd
IGludGVyZmFjZSBNZWRpYVN0cmVhbUNhcGFiaWxpdGllcyB7Cit9OworCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJhY2suY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1UcmFj
ay5jcHAJKHJldmlzaW9uIDE1NzAxNikKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFz
dHJlYW0vTWVkaWFTdHJlYW1UcmFjay5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI5LDMyICsyOSw2
NSBAQAogCiAjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKIAorI2luY2x1ZGUgIkFsbEF1ZGlvQ2Fw
YWJpbGl0aWVzLmgiCisjaW5jbHVkZSAiQWxsVmlkZW9DYXBhYmlsaXRpZXMuaCIKKyNpbmNsdWRl
ICJBdWRpb1N0cmVhbVRyYWNrLmgiCiAjaW5jbHVkZSAiRGljdGlvbmFyeS5oIgogI2luY2x1ZGUg
IkV2ZW50LmgiCiAjaW5jbHVkZSAiRXhjZXB0aW9uQ29kZS5oIgorI2luY2x1ZGUgIk1lZGlhQ29u
c3RyYWludHNJbXBsLmgiCisjaW5jbHVkZSAiTWVkaWFTb3VyY2VTdGF0ZXMuaCIKICNpbmNsdWRl
ICJNZWRpYVN0cmVhbS5oIgogI2luY2x1ZGUgIk1lZGlhU3RyZWFtQ2VudGVyLmgiCiAjaW5jbHVk
ZSAiTWVkaWFTdHJlYW1EZXNjcmlwdG9yLmgiCiAjaW5jbHVkZSAiTWVkaWFTdHJlYW1UcmFja1Nv
dXJjZXNDYWxsYmFjay5oIgogI2luY2x1ZGUgIk1lZGlhU3RyZWFtVHJhY2tTb3VyY2VzUmVxdWVz
dC5oIgorI2luY2x1ZGUgIk1lZGlhVHJhY2tDb25zdHJhaW50cy5oIgorI2luY2x1ZGUgIk5vdElt
cGxlbWVudGVkLmgiCiAjaW5jbHVkZSAiVVVJRC5oIgorI2luY2x1ZGUgIlZpZGVvU3RyZWFtVHJh
Y2suaCIKKyNpbmNsdWRlIDx3dGYvRnVuY3Rpb25hbC5oPgogI2luY2x1ZGUgPHd0Zi9OZXZlckRl
c3Ryb3llZC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIE1lZGlhU3RyZWFtVHJhY2s6Ok1l
ZGlhU3RyZWFtVHJhY2soU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgTWVkaWFTdHJl
YW1Tb3VyY2UqIHNvdXJjZSwgY29uc3QgRGljdGlvbmFyeSopCiAgICAgOiBBY3RpdmVET01PYmpl
Y3QoY29udGV4dCkKLSAgICAsIG1fc291cmNlKHNvdXJjZSkKKyAgICAsIG1fc291cmNlKDApCiAg
ICAgLCBtX3JlYWR5U3RhdGUoTWVkaWFTdHJlYW1Tb3VyY2U6Ok5ldykKICAgICAsIG1fc3RvcHBl
ZChmYWxzZSkKICAgICAsIG1fZW5hYmxlZCh0cnVlKQogICAgICwgbV9tdXRlZChmYWxzZSkKKyAg
ICAsIG1fZXZlbnREaXNwYXRjaFNjaGVkdWxlZChmYWxzZSkKIHsKICAgICBzdXNwZW5kSWZOZWVk
ZWQoKTsKLSAgICBpZiAobV9zb3VyY2UpIHsKLSAgICAgICAgbV9zb3VyY2UtPmFkZE9ic2VydmVy
KHRoaXMpOwotICAgICAgICBtX211dGVkID0gbV9zb3VyY2UtPm11dGVkKCk7Ci0gICAgfQorICAg
IGlmIChzb3VyY2UpCisgICAgICAgIHNldFNvdXJjZShzb3VyY2UpOworfQorCitNZWRpYVN0cmVh
bVRyYWNrOjpNZWRpYVN0cmVhbVRyYWNrKE1lZGlhU3RyZWFtVHJhY2sqIG90aGVyKQorICAgIDog
QWN0aXZlRE9NT2JqZWN0KG90aGVyLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpCit7CisgICAg
c3VzcGVuZElmTmVlZGVkKCk7CisKKyAgICAvLyBXaGVuIHRoZSBjbG9uZSgpIG1ldGhvZCBpcyBp
bnZva2VkLCB0aGUgdXNlciBhZ2VudCBtdXN0IHJ1biB0aGUgZm9sbG93aW5nIHN0ZXBzOgorICAg
IC8vIDEuIExldCB0cmFja0Nsb25lIGJlIGEgbmV3bHkgY29uc3RydWN0ZWQgTWVkaWFTdHJlYW1U
cmFjayBvYmplY3QuCisgICAgLy8gMi4gSW5pdGlhbGl6ZSB0cmFja0Nsb25lJ3MgaWQgYXR0cmli
dXRlIHRvIGEgbmV3bHkgZ2VuZXJhdGVkIHZhbHVlLgorICAgIG1faWQgPSBjcmVhdGVDYW5vbmlj
YWxVVUlEU3RyaW5nKCk7CisKKyAgICAvLyAzLiBMZXQgdHJhY2tDbG9uZSBpbmhlcml0IHRoaXMg
dHJhY2sncyB1bmRlcmx5aW5nIHNvdXJjZSwga2luZCwgbGFiZWwgYW5kIGVuYWJsZWQgYXR0cmli
dXRlcy4KKyAgICBzZXRTb3VyY2Uob3RoZXItPnNvdXJjZSgpKTsKKyAgICBtX3JlYWR5U3RhdGUg
PSBtX3NvdXJjZSA/IG1fc291cmNlLT5yZWFkeVN0YXRlKCkgOiBNZWRpYVN0cmVhbVNvdXJjZTo6
TmV3OworICAgIG1fZW5hYmxlZCA9IG90aGVyLT5lbmFibGVkKCk7CisKKyAgICAvLyBOb3RlOiB0
aGUgImNsb25lIiBzdGVwcyBkb24ndCBzYXkgYW55dGhpbmcgYWJvdXQgJ211dGVkJywgYnV0IDQu
My4xIHNheXM6CisgICAgLy8gRm9yIGEgbmV3bHkgY3JlYXRlZCBNZWRpYVN0cmVhbVRyYWNrIG9i
amVjdCwgdGhlIGZvbGxvd2luZyBhcHBsaWVzLiBUaGUgdHJhY2sgaXMgYWx3YXlzIGVuYWJsZWQK
KyAgICAvLyB1bmxlc3Mgc3RhdGVkIG90aGVyd2lzZSAoZm9yIGV4YW1scGUgd2hlbiBjbG9uZWQp
IGFuZCB0aGUgbXV0ZWQgc3RhdGUgcmVmbGVjdHMgdGhlIHN0YXRlIG9mIHRoZQorICAgIC8vIHNv
dXJjZSBhdCB0aGUgdGltZSB0aGUgdHJhY2sgaXMgY3JlYXRlZC4KKyAgICBtX211dGVkID0gb3Ro
ZXItPm11dGVkKCk7CisKKyAgICBtX2V2ZW50RGlzcGF0Y2hTY2hlZHVsZWQgPWZhbHNlOworICAg
IG1fc3RvcHBlZCA9IG90aGVyLT5zdG9wcGVkKCk7CiB9CiAKIE1lZGlhU3RyZWFtVHJhY2s6On5N
ZWRpYVN0cmVhbVRyYWNrKCkKQEAgLTg1LDYgKzExOCwxNSBAQCBjb25zdCBBdG9taWNTdHJpbmcm
IE1lZGlhU3RyZWFtVHJhY2s6OmtpCiB2b2lkIE1lZGlhU3RyZWFtVHJhY2s6OnNldFNvdXJjZShN
ZWRpYVN0cmVhbVNvdXJjZSogc291cmNlKQogewogICAgIEFTU0VSVChzb3VyY2UgPT0gbV9zb3Vy
Y2UgfHwgIW1fc291cmNlKTsKKworICAgIGlmIChtX3NvdXJjZSkKKyAgICAgICAgbV9zb3VyY2Ut
PnJlbW92ZU9ic2VydmVyKHRoaXMpOworCisgICAgaWYgKHNvdXJjZSkgeworICAgICAgICBzb3Vy
Y2UtPmFkZE9ic2VydmVyKHRoaXMpOworICAgICAgICBtX211dGVkID0gc291cmNlLT5tdXRlZCgp
OworICAgIH0KKwogICAgIG1fc291cmNlID0gc291cmNlOwogfQogCkBAIC05MywxOCArMTM1LDEz
IEBAIGNvbnN0IFN0cmluZyYgTWVkaWFTdHJlYW1UcmFjazo6aWQoKSBjb24KICAgICBpZiAoIW1f
aWQuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gbV9pZDsKIAotICAgIGlmICghbV9zb3VyY2Up
Ci0gICAgICAgIHJldHVybiBlbXB0eVN0cmluZygpOwotCi0gICAgY29uc3QgU3RyaW5nJiBpZCA9
IG1fc291cmNlLT5pZCgpOwotICAgIGlmICghaWQuaXNFbXB0eSgpKQotICAgICAgICByZXR1cm4g
aWQ7Ci0KICAgICAvLyBUaGUgc3BlYyBzYXlzOgogICAgIC8vICAgVW5sZXNzIGEgTWVkaWFTdHJl
YW1UcmFjayBvYmplY3QgaXMgY3JlYXRlZCBhcyBhIHBhcnQgYSBvZiBzcGVjaWFsIHB1cnBvc2Ug
YWxnb3JpdGhtIHRoYXQKICAgICAvLyAgIHNwZWNpZmllcyBob3cgdGhlIHRyYWNrIGlkIG11c3Qg
YmUgaW5pdGlhbGl6ZWQsIHRoZSB1c2VyIGFnZW50IG11c3QgZ2VuZXJhdGUgYSBnbG9iYWxseQog
ICAgIC8vICAgdW5pcXVlIGlkZW50aWZpZXIgc3RyaW5nIGFuZCBpbml0aWFsaXplIHRoZSBvYmpl
Y3QncyBpZCBhdHRyaWJ1dGUgdG8gdGhhdCBzdHJpbmcuCi0gICAgLy8gc28gZ2VuZXJhdGUgYSBV
VUlEIGlmIHRoZSBzb3VyY2UgZG9lc24ndCBoYXZlIGFuIElELgorICAgIGlmIChtX3NvdXJjZSAm
JiBtX3NvdXJjZS0+dXNlSURGb3JUcmFja0lEKCkpCisgICAgICAgIHJldHVybiBtX3NvdXJjZS0+
aWQoKTsKKwogICAgIG1faWQgPSBjcmVhdGVDYW5vbmljYWxVVUlEU3RyaW5nKCk7CiAgICAgcmV0
dXJuIG1faWQ7CiB9CkBAIC0xMjUsMTggKzE2Miw0MCBAQCB2b2lkIE1lZGlhU3RyZWFtVHJhY2s6
OnNldEVuYWJsZWQoYm9vbCBlCiB7CiAgICAgaWYgKG1fc3RvcHBlZCkKICAgICAgICAgcmV0dXJu
OwotICAgIAorCisgICAgLy8gNC4zLjMuMQorICAgIC8vIC4uLiBhZnRlciBhIE1lZGlhU3RyZWFt
VHJhY2sgaXMgZGlzYXNzb2NpYXRlZCBmcm9tIGl0cyB0cmFjaywgaXRzIGVuYWJsZWQgYXR0cmli
dXRlIHN0aWxsCisgICAgLy8gY2hhbmdlcyB2YWx1ZSB3aGVuIHNldDsgaXQganVzdCBkb2Vzbid0
IGRvIGFueXRoaW5nIHdpdGggdGhhdCBuZXcgdmFsdWUuCiAgICAgbV9lbmFibGVkID0gZW5hYmxl
ZDsKIAotICAgIGlmICghbV9zb3VyY2UgfHwgZW5hYmxlZCA9PSBtX3NvdXJjZS0+ZW5hYmxlZCgp
KQorICAgIGlmICghbV9zb3VyY2UpCiAgICAgICAgIHJldHVybjsKIAogICAgIG1fc291cmNlLT5z
ZXRFbmFibGVkKGVuYWJsZWQpOworfQogCi0gICAgaWYgKG1fc291cmNlLT5zdHJlYW0oKS0+ZW5k
ZWQoKSkKLSAgICAgICAgcmV0dXJuOworYm9vbCBNZWRpYVN0cmVhbVRyYWNrOjptdXRlZCgpIGNv
bnN0Cit7CisgICAgaWYgKG1fc3RvcHBlZCB8fCAhbV9zb3VyY2UpCisgICAgICAgIHJldHVybiBm
YWxzZTsKKworICAgIHJldHVybiBtX3NvdXJjZS0+bXV0ZWQoKTsKK30KKworYm9vbCBNZWRpYVN0
cmVhbVRyYWNrOjpyZWFkb25seSgpIGNvbnN0Cit7CisgICAgaWYgKG1fc3RvcHBlZCB8fCAhbV9z
b3VyY2UpCisgICAgICAgIHJldHVybiB0cnVlOworCisgICAgcmV0dXJuIG1fc291cmNlLT5yZWFk
b25seSgpOworfQorCitib29sIE1lZGlhU3RyZWFtVHJhY2s6OnJlbW90ZSgpIGNvbnN0Cit7Cisg
ICAgaWYgKCFtX3NvdXJjZSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgTWVkaWFTdHJl
YW1DZW50ZXI6OnNoYXJlZCgpLmRpZFNldE1lZGlhU3RyZWFtVHJhY2tFbmFibGVkKG1fc291cmNl
LmdldCgpKTsKKyAgICByZXR1cm4gbV9zb3VyY2UtPnJlbW90ZSgpOwogfQogCiBjb25zdCBBdG9t
aWNTdHJpbmcmIE1lZGlhU3RyZWFtVHJhY2s6OnJlYWR5U3RhdGUoKSBjb25zdApAQCAtMTcxLDEy
ICsyMzAsNjQgQEAgdm9pZCBNZWRpYVN0cmVhbVRyYWNrOjpnZXRTb3VyY2VzKFNjcmlwdAogICAg
ICAgICBlYyA9IE5PVF9TVVBQT1JURURfRVJSOwogfQogCitQYXNzUmVmUHRyPE1lZGlhVHJhY2tD
b25zdHJhaW50cz4gTWVkaWFTdHJlYW1UcmFjazo6Y29uc3RyYWludHMoKSBjb25zdAoreworICAg
IC8vIEZJWE1FOiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTIyNDI4
CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gMDsKK30KKworUGFzc1JlZlB0cjxN
ZWRpYVNvdXJjZVN0YXRlcz4gTWVkaWFTdHJlYW1UcmFjazo6c3RhdGVzKCkgY29uc3QKK3sKKyAg
ICBpZiAoIW1fc291cmNlKQorICAgICAgICByZXR1cm4gMDsKKyAgICAKKyAgICByZXR1cm4gTWVk
aWFTb3VyY2VTdGF0ZXM6OmNyZWF0ZShtX3NvdXJjZS0+c3RhdGVzKCkpOworfQorCitQYXNzUmVm
UHRyPE1lZGlhU3RyZWFtQ2FwYWJpbGl0aWVzPiBNZWRpYVN0cmVhbVRyYWNrOjpjYXBhYmlsaXRp
ZXMoKSBjb25zdAoreworICAgIGlmICghbV9zb3VyY2UpCisgICAgICAgIHJldHVybiAwOworCisg
ICAgcmV0dXJuIE1lZGlhU3RyZWFtQ2FwYWJpbGl0aWVzOjpjcmVhdGUobV9zb3VyY2UtPmNhcGFi
aWxpdGllcygpKTsKK30KKwordm9pZCBNZWRpYVN0cmVhbVRyYWNrOjphcHBseUNvbnN0cmFpbnRz
KGNvbnN0IERpY3Rpb25hcnkmIGNvbnN0cmFpbnRzKQoreworICAgIC8vIEZJWE1FOiBhcHBseSB0
aGUgbmV3IGNvbnN0cmFpbnRzIHRvIHRoZSB0cmFjaworICAgIC8vIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjI0MjgKKyAgICBtX2NvbnN0cmFpbnRzLT5pbml0aWFs
aXplKGNvbnN0cmFpbnRzKTsKK30KKworUGFzc1JlZlB0cjxNZWRpYVN0cmVhbVRyYWNrPiBNZWRp
YVN0cmVhbVRyYWNrOjpjbG9uZSgpCit7CisgICAgaWYgKG1fc291cmNlICYmIG1fc291cmNlLT50
eXBlKCkgPT0gTWVkaWFTdHJlYW1Tb3VyY2U6OkF1ZGlvKQorICAgICAgICByZXR1cm4gQXVkaW9T
dHJlYW1UcmFjazo6Y3JlYXRlKHRoaXMpOworCisgICAgcmV0dXJuIFZpZGVvU3RyZWFtVHJhY2s6
OmNyZWF0ZSh0aGlzKTsKK30KKwordm9pZCBNZWRpYVN0cmVhbVRyYWNrOjpzdG9wUHJvZHVjaW5n
RGF0YSgpCit7CisgICAgaWYgKG1fc3RvcHBlZCB8fCAhbV9zb3VyY2UpCisgICAgICAgIHJldHVy
bjsKKworICAgIC8vIFNldCBtX3N0b3BwZWQgYmVmb3JlIHN0b3BwaW5nIHRoZSBzb3VyY2UgYmVj
YXVzZSB0aGF0IG1heSByZXN1bHQgaW4gYSBjYWxsIHRvIHNvdXJjZUNoYW5nZWRTdGF0ZQorICAg
IC8vIGFuZCB3ZSBvbmx5IHdhbnQgdG8gZGlzcGF0Y2ggdGhlICdlbmRlZCcgZXZlbnQgaWYgbmVj
ZXNzYXJ5LgorICAgIG1fc3RvcHBlZCA9IHRydWU7CisgICAgbV9zb3VyY2UtPnN0b3AoKTsKKwor
ICAgIGlmIChtX3JlYWR5U3RhdGUgIT0gTWVkaWFTdHJlYW1Tb3VyY2U6OkVuZGVkKQorICAgICAg
ICBzY2hlZHVsZUV2ZW50RGlzcGF0Y2goRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkuZW5kZWRF
dmVudCwgZmFsc2UsIGZhbHNlKSk7Cit9CisKIGJvb2wgTWVkaWFTdHJlYW1UcmFjazo6ZW5kZWQo
KSBjb25zdAogewogICAgIHJldHVybiBtX3N0b3BwZWQgfHwgKG1fc291cmNlICYmIG1fc291cmNl
LT5yZWFkeVN0YXRlKCkgPT0gTWVkaWFTdHJlYW1Tb3VyY2U6OkVuZGVkKTsKIH0KIAotdm9pZCBN
ZWRpYVN0cmVhbVRyYWNrOjpzb3VyY2VDaGFuZ2VkU3RhdGUoKQordm9pZCBNZWRpYVN0cmVhbVRy
YWNrOjpzb3VyY2VTdGF0ZUNoYW5nZWQoKQogewogICAgIGlmIChtX3N0b3BwZWQpCiAgICAgICAg
IHJldHVybjsKQEAgLTE4NSwxOCArMjk2LDUwIEBAIHZvaWQgTWVkaWFTdHJlYW1UcmFjazo6c291
cmNlQ2hhbmdlZFN0YXQKICAgICBtX3JlYWR5U3RhdGUgPSBtX3NvdXJjZS0+cmVhZHlTdGF0ZSgp
OwogCiAgICAgaWYgKG1fcmVhZHlTdGF0ZSA+PSBNZWRpYVN0cmVhbVNvdXJjZTo6TGl2ZSAmJiBv
bGRSZWFkeVN0YXRlID09IE1lZGlhU3RyZWFtU291cmNlOjpOZXcpCi0gICAgICAgIGRpc3BhdGNo
RXZlbnQoRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkuc3RhcnRlZEV2ZW50LCBmYWxzZSwgZmFs
c2UpKTsKKyAgICAgICAgc2NoZWR1bGVFdmVudERpc3BhdGNoKEV2ZW50OjpjcmVhdGUoZXZlbnRO
YW1lcygpLnN0YXJ0ZWRFdmVudCwgZmFsc2UsIGZhbHNlKSk7CiAgICAgaWYgKG1fcmVhZHlTdGF0
ZSA9PSBNZWRpYVN0cmVhbVNvdXJjZTo6RW5kZWQgJiYgb2xkUmVhZHlTdGF0ZSAhPSBNZWRpYVN0
cmVhbVNvdXJjZTo6RW5kZWQpCi0gICAgICAgIGRpc3BhdGNoRXZlbnQoRXZlbnQ6OmNyZWF0ZShl
dmVudE5hbWVzKCkuZW5kZWRFdmVudCwgZmFsc2UsIGZhbHNlKSk7CisgICAgICAgIHNjaGVkdWxl
RXZlbnREaXNwYXRjaChFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5lbmRlZEV2ZW50LCBmYWxz
ZSwgZmFsc2UpKTsKK30KKyAgICAKK3ZvaWQgTWVkaWFTdHJlYW1UcmFjazo6c291cmNlTXV0ZWRD
aGFuZ2VkKCkKK3sKKyAgICBpZiAobV9zdG9wcGVkKQorICAgICAgICByZXR1cm47CiAKLSAgICBp
ZiAobV9tdXRlZCA9PSBtX3NvdXJjZS0+bXV0ZWQoKSkKKyAgICBib29sIG11dGVkID0gbV9zb3Vy
Y2UtPm11dGVkKCk7CisgICAgaWYgKG1fbXV0ZWQgPT0gbXV0ZWQpCiAgICAgICAgIHJldHVybjsK
IAotICAgIG1fbXV0ZWQgPSBtX3NvdXJjZS0+bXV0ZWQoKTsKKyAgICBtX211dGVkID0gbXV0ZWQ7
CiAgICAgaWYgKG1fbXV0ZWQpCi0gICAgICAgIGRpc3BhdGNoRXZlbnQoRXZlbnQ6OmNyZWF0ZShl
dmVudE5hbWVzKCkubXV0ZUV2ZW50LCBmYWxzZSwgZmFsc2UpKTsKKyAgICAgICAgc2NoZWR1bGVF
dmVudERpc3BhdGNoKEV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLm11dGVFdmVudCwgZmFsc2Us
IGZhbHNlKSk7CiAgICAgZWxzZQotICAgICAgICBkaXNwYXRjaEV2ZW50KEV2ZW50OjpjcmVhdGUo
ZXZlbnROYW1lcygpLnVubXV0ZUV2ZW50LCBmYWxzZSwgZmFsc2UpKTsKKyAgICAgICAgc2NoZWR1
bGVFdmVudERpc3BhdGNoKEV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLnVubXV0ZUV2ZW50LCBm
YWxzZSwgZmFsc2UpKTsKKworICAgIGNvbmZpZ3VyZVRyYWNrUmVuZGVyaW5nKCk7Cit9CisKK3Zv
aWQgTWVkaWFTdHJlYW1UcmFjazo6c291cmNlRW5hYmxlZENoYW5nZWQoKQoreworICAgIGlmICht
X3N0b3BwZWQpCisgICAgICAgIHJldHVybjsKKyAgICAKKyAgICAvLyBtZWRpYSBmcm9tIHRoZSBz
b3VyY2Ugb25seSBmbG93cyB3aGVuIGEgTWVkaWFTdHJlYW1UcmFjayBvYmplY3QgaXMgYm90aCB1
bm11dGVkIGFuZCBlbmFibGVkCisgICAgY29uZmlndXJlVHJhY2tSZW5kZXJpbmcoKTsKK30KKwor
dm9pZCBNZWRpYVN0cmVhbVRyYWNrOjpjb25maWd1cmVUcmFja1JlbmRlcmluZygpCit7CisgICAg
aWYgKG1fc3RvcHBlZCkKKyAgICAgICAgcmV0dXJuOworCisgICAgLy8gNC4zLjEKKyAgICAvLyAu
Li4gbWVkaWEgZnJvbSB0aGUgc291cmNlIG9ubHkgZmxvd3Mgd2hlbiBhIE1lZGlhU3RyZWFtVHJh
Y2sgb2JqZWN0IGlzIGJvdGggdW5tdXRlZCBhbmQgZW5hYmxlZAorfQorCitib29sIE1lZGlhU3Ry
ZWFtVHJhY2s6OnN0b3BwZWQoKQoreworICAgIHJldHVybiBtX3N0b3BwZWQ7CiB9CiAKIHZvaWQg
TWVkaWFTdHJlYW1UcmFjazo6dHJhY2tEaWRFbmQoKQpAQCAtMjExLDcgKzM1NCw0MiBAQCB2b2lk
IE1lZGlhU3RyZWFtVHJhY2s6OnRyYWNrRGlkRW5kKCkKIAogdm9pZCBNZWRpYVN0cmVhbVRyYWNr
OjpzdG9wKCkKIHsKLSAgICBtX3N0b3BwZWQgPSB0cnVlOworICAgIHN0b3BQcm9kdWNpbmdEYXRh
KCk7Cit9CisKK3ZvaWQgTWVkaWFTdHJlYW1UcmFjazo6c2NoZWR1bGVFdmVudERpc3BhdGNoKFBh
c3NSZWZQdHI8RXZlbnQ+IGV2ZW50KQoreworICAgIHsKKyAgICAgICAgTXV0ZXhMb2NrZXIgbG9j
a2VyKG1fbXV0ZXgpOworICAgICAgICBtX3NjaGVkdWxlZEV2ZW50cy5hcHBlbmQoZXZlbnQpOwor
ICAgICAgICBpZiAobV9ldmVudERpc3BhdGNoU2NoZWR1bGVkKQorICAgICAgICAgICAgcmV0dXJu
OworICAgICAgICBtX2V2ZW50RGlzcGF0Y2hTY2hlZHVsZWQgPSB0cnVlOworICAgIH0KKworICAg
IGNhbGxPbk1haW5UaHJlYWQoYmluZCgmTWVkaWFTdHJlYW1UcmFjazo6ZGlzcGF0Y2hRdWV1ZWRF
dmVudHMsIHRoaXMpKTsKK30KKwordm9pZCBNZWRpYVN0cmVhbVRyYWNrOjpkaXNwYXRjaFF1ZXVl
ZEV2ZW50cygpCit7CisgICAgVmVjdG9yPFJlZlB0cjxFdmVudD4+IGV2ZW50czsKKyAgICB7Cisg
ICAgICAgIE11dGV4TG9ja2VyIGxvY2tlcihtX211dGV4KTsKKworICAgICAgICBtX2V2ZW50RGlz
cGF0Y2hTY2hlZHVsZWQgPSBmYWxzZTsKKyAgICAgICAgaWYgKCFzY3JpcHRFeGVjdXRpb25Db250
ZXh0KCkpIHsKKyAgICAgICAgICAgIG1fc2NoZWR1bGVkRXZlbnRzLmNsZWFyKCk7CisgICAgICAg
ICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBldmVudHMuc3dhcChtX3NjaGVkdWxl
ZEV2ZW50cyk7CisgICAgfQorCisgICAgVmVjdG9yPFJlZlB0cjxFdmVudD4gPjo6aXRlcmF0b3Ig
aXQgPSBldmVudHMuYmVnaW4oKTsKKyAgICBmb3IgKDsgaXQgIT0gZXZlbnRzLmVuZCgpOyArK2l0
KQorICAgICAgICBkaXNwYXRjaEV2ZW50KCgqaXQpLnJlbGVhc2UoKSk7CisKKyAgICBldmVudHMu
Y2xlYXIoKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVRyYWNrLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVRyYWNrLmgJKHJl
dmlzaW9uIDE1NzAzOSkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVk
aWFTdHJlYW1UcmFjay5oCSh3b3JraW5nIGNvcHkpCkBAIC00MSw4ICs0MSwxMSBAQAogbmFtZXNw
YWNlIFdlYkNvcmUgewogCiBjbGFzcyBEaWN0aW9uYXJ5OwotY2xhc3MgTWVkaWFDb25zdHJhaW50
czsKK2NsYXNzIE1lZGlhQ29uc3RyYWludHNJbXBsOworY2xhc3MgTWVkaWFTb3VyY2VTdGF0ZXM7
CiBjbGFzcyBNZWRpYVN0cmVhbVRyYWNrU291cmNlc0NhbGxiYWNrOworY2xhc3MgTWVkaWFTdHJl
YW1DYXBhYmlsaXRpZXM7CitjbGFzcyBNZWRpYVRyYWNrQ29uc3RyYWludHM7CiAKIGNsYXNzIE1l
ZGlhU3RyZWFtVHJhY2sgOiBwdWJsaWMgUmVmQ291bnRlZDxNZWRpYVN0cmVhbVRyYWNrPiwgcHVi
bGljIFNjcmlwdFdyYXBwYWJsZSwgcHVibGljIEFjdGl2ZURPTU9iamVjdCwgcHVibGljIEV2ZW50
VGFyZ2V0V2l0aElubGluZURhdGEsIHB1YmxpYyBNZWRpYVN0cmVhbVNvdXJjZTo6T2JzZXJ2ZXIg
ewogcHVibGljOgpAQCAtNTQsMTcgKzU3LDMxIEBAIHB1YmxpYzoKIAogICAgIGJvb2wgZW5hYmxl
ZCgpIGNvbnN0OwogICAgIHZvaWQgc2V0RW5hYmxlZChib29sKTsKLSAgICAKKworICAgIGJvb2wg
bXV0ZWQoKSBjb25zdDsKKyAgICBib29sIHJlYWRvbmx5KCkgY29uc3Q7CisgICAgYm9vbCByZW1v
dGUoKSBjb25zdDsKKwogICAgIGNvbnN0IEF0b21pY1N0cmluZyYgcmVhZHlTdGF0ZSgpIGNvbnN0
OwogCiAgICAgc3RhdGljIHZvaWQgZ2V0U291cmNlcyhTY3JpcHRFeGVjdXRpb25Db250ZXh0Kiwg
UGFzc1JlZlB0cjxNZWRpYVN0cmVhbVRyYWNrU291cmNlc0NhbGxiYWNrPiwgRXhjZXB0aW9uQ29k
ZSYpOwogCi0gICAgTWVkaWFTdHJlYW1Tb3VyY2UqIHNvdXJjZSgpIGNvbnN0IHsgcmV0dXJuIG1f
c291cmNlLmdldCgpOyB9Ci0gICAgdm9pZCBzZXRTb3VyY2UoTWVkaWFTdHJlYW1Tb3VyY2UqKTsK
KyAgICBQYXNzUmVmUHRyPE1lZGlhVHJhY2tDb25zdHJhaW50cz4gY29uc3RyYWludHMoKSBjb25z
dDsKKyAgICBQYXNzUmVmUHRyPE1lZGlhU291cmNlU3RhdGVzPiBzdGF0ZXMoKSBjb25zdDsKKyAg
ICBQYXNzUmVmUHRyPE1lZGlhU3RyZWFtQ2FwYWJpbGl0aWVzPiBjYXBhYmlsaXRpZXMoKSBjb25z
dDsKKyAgICB2b2lkIGFwcGx5Q29uc3RyYWludHMoY29uc3QgRGljdGlvbmFyeSYpOworCisgICAg
UGFzc1JlZlB0cjxNZWRpYVN0cmVhbVRyYWNrPiBjbG9uZSgpOworICAgIHZvaWQgc3RvcFByb2R1
Y2luZ0RhdGEoKTsKIAogICAgIERFRklORV9BVFRSSUJVVEVfRVZFTlRfTElTVEVORVIobXV0ZSk7
CiAgICAgREVGSU5FX0FUVFJJQlVURV9FVkVOVF9MSVNURU5FUih1bm11dGUpOworICAgIERFRklO
RV9BVFRSSUJVVEVfRVZFTlRfTElTVEVORVIoc3RhcnRlZCk7CiAgICAgREVGSU5FX0FUVFJJQlVU
RV9FVkVOVF9MSVNURU5FUihlbmRlZCk7CisgICAgREVGSU5FX0FUVFJJQlVURV9FVkVOVF9MSVNU
RU5FUihvdmVyY29uc3RyYWluZWQpOworCisgICAgTWVkaWFTdHJlYW1Tb3VyY2UqIHNvdXJjZSgp
IGNvbnN0IHsgcmV0dXJuIG1fc291cmNlLmdldCgpOyB9CisgICAgdm9pZCBzZXRTb3VyY2UoTWVk
aWFTdHJlYW1Tb3VyY2UqKTsKIAogICAgIGJvb2wgZW5kZWQoKSBjb25zdDsKIApAQCAtNzIsMzMg
Kzg5LDQ1IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIEV2ZW50VGFyZ2V0SW50ZXJmYWNlIGV2ZW50
VGFyZ2V0SW50ZXJmYWNlKCkgY29uc3QgT1ZFUlJJREUgRklOQUwgeyByZXR1cm4gTWVkaWFTdHJl
YW1UcmFja0V2ZW50VGFyZ2V0SW50ZXJmYWNlVHlwZTsgfQogICAgIHZpcnR1YWwgU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpIGNvbnN0IE9WRVJSSURFIEZJ
TkFMIHsgcmV0dXJuIEFjdGl2ZURPTU9iamVjdDo6c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOyB9
CiAKLSAgICAvLyBBY3RpdmVET01PYmplY3QKLSAgICB2aXJ0dWFsIHZvaWQgc3RvcCgpIE9WRVJS
SURFIEZJTkFMOwotCiAgICAgdXNpbmcgUmVmQ291bnRlZDxNZWRpYVN0cmVhbVRyYWNrPjo6cmVm
OwogICAgIHVzaW5nIFJlZkNvdW50ZWQ8TWVkaWFTdHJlYW1UcmFjaz46OmRlcmVmOwogCiBwcm90
ZWN0ZWQ6CisgICAgZXhwbGljaXQgTWVkaWFTdHJlYW1UcmFjayhNZWRpYVN0cmVhbVRyYWNrKik7
CiAgICAgTWVkaWFTdHJlYW1UcmFjayhTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgTWVkaWFTdHJl
YW1Tb3VyY2UqLCBjb25zdCBEaWN0aW9uYXJ5Kik7CiAKIHByaXZhdGU6CisKKyAgICB2b2lkIGNv
bmZpZ3VyZVRyYWNrUmVuZGVyaW5nKCk7CiAgICAgdm9pZCB0cmFja0RpZEVuZCgpOworICAgIHZv
aWQgc2NoZWR1bGVFdmVudERpc3BhdGNoKFBhc3NSZWZQdHI8RXZlbnQ+KTsKKyAgICB2b2lkIGRp
c3BhdGNoUXVldWVkRXZlbnRzKCk7CisKKyAgICAvLyBBY3RpdmVET01PYmplY3QKKyAgICB2aXJ0
dWFsIHZvaWQgc3RvcCgpIE9WRVJSSURFIEZJTkFMOwogCiAgICAgLy8gRXZlbnRUYXJnZXQKICAg
ICB2aXJ0dWFsIHZvaWQgcmVmRXZlbnRUYXJnZXQoKSBPVkVSUklERSBGSU5BTCB7IHJlZigpOyB9
CiAgICAgdmlydHVhbCB2b2lkIGRlcmVmRXZlbnRUYXJnZXQoKSBPVkVSUklERSBGSU5BTCB7IGRl
cmVmKCk7IH0KIAogICAgIC8vIE1lZGlhU3RyZWFtU291cmNlT2JzZXJ2ZXIKLSAgICB2aXJ0dWFs
IHZvaWQgc291cmNlQ2hhbmdlZFN0YXRlKCkgT1ZFUlJJREUgRklOQUw7CisgICAgdmlydHVhbCB2
b2lkIHNvdXJjZVN0YXRlQ2hhbmdlZCgpIE9WRVJSSURFIEZJTkFMOworICAgIHZpcnR1YWwgdm9p
ZCBzb3VyY2VNdXRlZENoYW5nZWQoKSBPVkVSUklERSBGSU5BTDsKKyAgICB2aXJ0dWFsIHZvaWQg
c291cmNlRW5hYmxlZENoYW5nZWQoKSBPVkVSUklERSBGSU5BTDsKKyAgICB2aXJ0dWFsIGJvb2wg
c3RvcHBlZCgpIE9WRVJSSURFIEZJTkFMOworCisgICAgVmVjdG9yPFJlZlB0cjxFdmVudD4+IG1f
c2NoZWR1bGVkRXZlbnRzOwogCiAgICAgUmVmUHRyPE1lZGlhU3RyZWFtU291cmNlPiBtX3NvdXJj
ZTsKLSAgICBSZWZQdHI8TWVkaWFDb25zdHJhaW50cz4gbV9jb25zdHJhaW50czsKKyAgICBSZWZQ
dHI8TWVkaWFDb25zdHJhaW50c0ltcGw+IG1fY29uc3RyYWludHM7CiAgICAgTWVkaWFTdHJlYW1T
b3VyY2U6OlJlYWR5U3RhdGUgbV9yZWFkeVN0YXRlOwogICAgIG11dGFibGUgU3RyaW5nIG1faWQ7
CisgICAgTXV0ZXggbV9tdXRleDsKIAogICAgIGJvb2wgbV9zdG9wcGVkOwogICAgIGJvb2wgbV9l
bmFibGVkOwogICAgIGJvb2wgbV9tdXRlZDsKKyAgICBib29sIG1fZXZlbnREaXNwYXRjaFNjaGVk
dWxlZDsKIH07CiAKIHR5cGVkZWYgVmVjdG9yPFJlZlB0cjxNZWRpYVN0cmVhbVRyYWNrPiA+IE1l
ZGlhU3RyZWFtVHJhY2tWZWN0b3I7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlh
c3RyZWFtL01lZGlhU3RyZWFtVHJhY2suaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1UcmFjay5pZGwJKHJldmlzaW9uIDE1NzAx
NikKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1UcmFj
ay5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw2IEBACiAvKgogICogQ29weXJpZ2h0IChD
KSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAog
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCkBAIC0yMiw2ICsyMyw4IEBACiAgKiBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCitlbnVtIE1lZGlh
U3RyZWFtVHJhY2tTdGF0ZSB7ICJuZXciLCAibGl2ZSIsICJlbmRlZCIgfTsKKwogWwogICAgIENv
bmRpdGlvbmFsPU1FRElBX1NUUkVBTSwKICAgICBFdmVudFRhcmdldCwKQEAgLTMzLDE1ICszNiwy
OSBAQAogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBET01TdHJpbmcgaWQ7CiAgICAgcmVhZG9ubHkg
YXR0cmlidXRlIERPTVN0cmluZyBsYWJlbDsKICAgICAgICAgICAgICBhdHRyaWJ1dGUgYm9vbGVh
biBlbmFibGVkOwotCi0gICAgcmVhZG9ubHkgYXR0cmlidXRlIERPTVN0cmluZyByZWFkeVN0YXRl
OwotCisgICAgcmVhZG9ubHkgYXR0cmlidXRlIGJvb2xlYW4gbXV0ZWQ7CiAgICAgYXR0cmlidXRl
IEV2ZW50TGlzdGVuZXIgb25tdXRlOwogICAgIGF0dHJpYnV0ZSBFdmVudExpc3RlbmVyIG9udW5t
dXRlOworICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBib29sZWFuIF9yZWFkb25seTsKKyAgICByZWFk
b25seSBhdHRyaWJ1dGUgYm9vbGVhbiByZW1vdGU7CisgICAgcmVhZG9ubHkgYXR0cmlidXRlIE1l
ZGlhU3RyZWFtVHJhY2tTdGF0ZSByZWFkeVN0YXRlOworICAgIGF0dHJpYnV0ZSBFdmVudExpc3Rl
bmVyIG9uc3RhcnRlZDsKICAgICBhdHRyaWJ1dGUgRXZlbnRMaXN0ZW5lciBvbmVuZGVkOwogCiAg
ICAgW0NhbGxXaXRoPVNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsIFJhaXNlc0V4Y2VwdGlvbl0gc3Rh
dGljIHZvaWQgZ2V0U291cmNlcyhNZWRpYVN0cmVhbVRyYWNrU291cmNlc0NhbGxiYWNrIGNhbGxi
YWNrKTsKIAorICAgIE1lZGlhVHJhY2tDb25zdHJhaW50cyBjb25zdHJhaW50cygpOworCisgICAg
TWVkaWFTb3VyY2VTdGF0ZXMgc3RhdGVzKCk7CisKKyAgICBNZWRpYVN0cmVhbUNhcGFiaWxpdGll
cyBjYXBhYmlsaXRpZXMoKTsgLy8gcmV0dXJucyBlaXRoZXIgQWxsVmlkZW9DYXBhYmlsaXRpZXMg
b3IgQWxsQXVkaW9DYXBhYmlsaXRpZXMKKworICAgIHZvaWQgYXBwbHlDb25zdHJhaW50cyhEaWN0
aW9uYXJ5IGNvbnN0cmFpbnRzKTsKKworICAgIGF0dHJpYnV0ZSBFdmVudExpc3RlbmVyIG9ub3Zl
cmNvbnN0cmFpbmVkOworICAgIE1lZGlhU3RyZWFtVHJhY2sgY2xvbmUoKTsKKyAgICBbSW1wbGVt
ZW50ZWRBcz1zdG9wUHJvZHVjaW5nRGF0YV0gdm9pZCBzdG9wKCk7CisKICAgICAvLyBFdmVudFRh
cmdldCBpbnRlcmZhY2UKICAgICB2b2lkIGFkZEV2ZW50TGlzdGVuZXIoRE9NU3RyaW5nIHR5cGUs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgIEV2ZW50TGlzdGVuZXIgbGlzdGVuZXIsCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhVHJhY2tDb25zdHJhaW50
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01l
ZGlhVHJhY2tDb25zdHJhaW50LmNwcAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFUcmFja0NvbnN0cmFpbnQuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0wLDAgKzEsNTMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLiAKKyAqCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaWYgRU5BQkxF
KE1FRElBX1NUUkVBTSkKKworI2luY2x1ZGUgIk1lZGlhVHJhY2tDb25zdHJhaW50LmgiCisKK3Vz
aW5nIG5hbWVzcGFjZSBKU0M7CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworUGFzc1JlZlB0cjxN
ZWRpYVRyYWNrQ29uc3RyYWludD4gTWVkaWFUcmFja0NvbnN0cmFpbnQ6OmNyZWF0ZShjb25zdCBE
aWN0aW9uYXJ5JiBjb25zdHJhaW50KQoreworICAgIHJldHVybiBhZG9wdFJlZihuZXcgTWVkaWFU
cmFja0NvbnN0cmFpbnQoY29uc3RyYWludCkpOworfQorCitNZWRpYVRyYWNrQ29uc3RyYWludDo6
TWVkaWFUcmFja0NvbnN0cmFpbnQoY29uc3QgRGljdGlvbmFyeSYgY29uc3RyYWludCkKKyAgICA6
IG1fY29uc3RyYWludChjb25zdHJhaW50KQoreworfQorCitNZWRpYVRyYWNrQ29uc3RyYWludDo6
fk1lZGlhVHJhY2tDb25zdHJhaW50KCkKK3sKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQor
CisjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFU
cmFja0NvbnN0cmFpbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21l
ZGlhc3RyZWFtL01lZGlhVHJhY2tDb25zdHJhaW50LmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhVHJhY2tDb25zdHJhaW50LmgJKHdvcmtp
bmcgY29weSkKQEAgLTAsMCArMSw1OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBU
SEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuIAorICoKKyAqLworCisjaWZuZGVmIE1lZGlhVHJhY2tDb25zdHJh
aW50X2gKKyNkZWZpbmUgTWVkaWFUcmFja0NvbnN0cmFpbnRfaAorCisjaWYgRU5BQkxFKE1FRElB
X1NUUkVBTSkKKworI2luY2x1ZGUgIkRpY3Rpb25hcnkuaCIKKyNpbmNsdWRlICJTY3JpcHRXcmFw
cGFibGUuaCIKKyNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgorCituYW1lc3BhY2UgV2ViQ29y
ZSB7CisKK2NsYXNzIFNjcmlwdFZhbHVlOworCitjbGFzcyBNZWRpYVRyYWNrQ29uc3RyYWludCA6
IHB1YmxpYyBSZWZDb3VudGVkPE1lZGlhVHJhY2tDb25zdHJhaW50PiwgcHVibGljIFNjcmlwdFdy
YXBwYWJsZSB7CitwdWJsaWM6CisgICAgc3RhdGljIFBhc3NSZWZQdHI8TWVkaWFUcmFja0NvbnN0
cmFpbnQ+IGNyZWF0ZShjb25zdCBEaWN0aW9uYXJ5Jik7CisKKyAgICB2aXJ0dWFsIH5NZWRpYVRy
YWNrQ29uc3RyYWludCgpOworCisgICAgY29uc3QgRGljdGlvbmFyeSYgY29uc3RyYWludCgpIGNv
bnN0IHsgcmV0dXJuIG1fY29uc3RyYWludDsgfQorCitwcml2YXRlOgorICAgIGV4cGxpY2l0IE1l
ZGlhVHJhY2tDb25zdHJhaW50KGNvbnN0IERpY3Rpb25hcnkmKTsKKyAgICAKKyAgICBjb25zdCBE
aWN0aW9uYXJ5JiBtX2NvbnN0cmFpbnQ7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisK
KyNlbmRpZiAvLyBNZWRpYVRyYWNrQ29uc3RyYWludF9oCisKKyNlbmRpZgpJbmRleDogU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVRyYWNrQ29uc3RyYWludC5pZGwKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVRyYWNr
Q29uc3RyYWludC5pZGwJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21l
ZGlhc3RyZWFtL01lZGlhVHJhY2tDb25zdHJhaW50LmlkbAkod29ya2luZyBjb3B5KQpAQCAtMCww
ICsxLDMxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICog
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICog
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4gCisgKi8KKworWworICAgIENvbmRpdGlvbmFsPU1FRElBX1NUUkVBTSwKKyAg
ICBOb0ludGVyZmFjZU9iamVjdCwKK10gaW50ZXJmYWNlIE1lZGlhVHJhY2tDb25zdHJhaW50IHsK
K307CisKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFUcmFj
a0NvbnN0cmFpbnRTZXQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMv
bWVkaWFzdHJlYW0vTWVkaWFUcmFja0NvbnN0cmFpbnRTZXQuY3BwCShyZXZpc2lvbiAwKQorKysg
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVRyYWNrQ29uc3RyYWludFNl
dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw1MyBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSwgSU5DLiBgYEFTIElTJycgQU5EIEFO
WQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisg
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICoKKyAqLworCisjaW5jbHVkZSAiY29u
ZmlnLmgiCisKKyNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQorCisjaW5jbHVkZSAiTWVkaWFUcmFj
a0NvbnN0cmFpbnRTZXQuaCIKKwordXNpbmcgbmFtZXNwYWNlIEpTQzsKKworbmFtZXNwYWNlIFdl
YkNvcmUgeworCitQYXNzUmVmUHRyPE1lZGlhVHJhY2tDb25zdHJhaW50U2V0PiBNZWRpYVRyYWNr
Q29uc3RyYWludFNldDo6Y3JlYXRlKGNvbnN0IERpY3Rpb25hcnkmIGNvbnN0cmFpbnRzKQorewor
ICAgIHJldHVybiBhZG9wdFJlZihuZXcgTWVkaWFUcmFja0NvbnN0cmFpbnRTZXQoY29uc3RyYWlu
dHMpKTsKK30KKworTWVkaWFUcmFja0NvbnN0cmFpbnRTZXQ6Ok1lZGlhVHJhY2tDb25zdHJhaW50
U2V0KGNvbnN0IERpY3Rpb25hcnkmIGNvbnN0cmFpbnRzKQorICAgIDogbV9jb25zdHJhaW50cyhj
b25zdHJhaW50cykKK3sKK30KKworTWVkaWFUcmFja0NvbnN0cmFpbnRTZXQ6On5NZWRpYVRyYWNr
Q29uc3RyYWludFNldCgpCit7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlm
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhVHJhY2tDb25z
dHJhaW50U2V0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0
cmVhbS9NZWRpYVRyYWNrQ29uc3RyYWludFNldC5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVRyYWNrQ29uc3RyYWludFNldC5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0wLDAgKzEsNTYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqCisgKi8KKworI2lmbmRlZiBNZWRpYVRyYWNrQ29uc3Ry
YWludFNldF9oCisjZGVmaW5lIE1lZGlhVHJhY2tDb25zdHJhaW50U2V0X2gKKworI2lmIEVOQUJM
RShNRURJQV9TVFJFQU0pCisKKyNpbmNsdWRlICJEaWN0aW9uYXJ5LmgiCisjaW5jbHVkZSAiU2Ny
aXB0V3JhcHBhYmxlLmgiCisjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KKworbmFtZXNwYWNl
IFdlYkNvcmUgeworCitjbGFzcyBNZWRpYVRyYWNrQ29uc3RyYWludFNldCA6IHB1YmxpYyBSZWZD
b3VudGVkPE1lZGlhVHJhY2tDb25zdHJhaW50U2V0PiwgcHVibGljIFNjcmlwdFdyYXBwYWJsZSB7
CitwdWJsaWM6CisgICAgc3RhdGljIFBhc3NSZWZQdHI8TWVkaWFUcmFja0NvbnN0cmFpbnRTZXQ+
IGNyZWF0ZShjb25zdCBEaWN0aW9uYXJ5Jik7CisKKyAgICB2aXJ0dWFsIH5NZWRpYVRyYWNrQ29u
c3RyYWludFNldCgpOworCisgICAgY29uc3QgRGljdGlvbmFyeSYgY29uc3RyYWludHMoKSBjb25z
dCB7IHJldHVybiBtX2NvbnN0cmFpbnRzOyB9CisKK3ByaXZhdGU6CisgICAgZXhwbGljaXQgTWVk
aWFUcmFja0NvbnN0cmFpbnRTZXQoY29uc3QgRGljdGlvbmFyeSYpOworICAgIAorICAgIGNvbnN0
IERpY3Rpb25hcnkmIG1fY29uc3RyYWludHM7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CisKKyNlbmRpZiAvLyBNZWRpYVRyYWNrQ29uc3RyYWludFNldF9oCisKKyNlbmRpZgpJbmRleDog
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVRyYWNrQ29uc3RyYWludFNl
dC5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9N
ZWRpYVRyYWNrQ29uc3RyYWludFNldC5pZGwJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhVHJhY2tDb25zdHJhaW50U2V0LmlkbAkod29ya2lu
ZyBjb3B5KQpAQCAtMCwwICsxLDMzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEdPT0dMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQg
U0hBTEwgR09PR0xFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCitbCisgICAgQ29uZGl0aW9uYWw9TUVESUFfU1RSRUFNLAorICAgIE5v
SW50ZXJmYWNlT2JqZWN0LAorXSBpbnRlcmZhY2UgTWVkaWFUcmFja0NvbnN0cmFpbnRTZXQgewor
ICAgIC8vIEZJWE1FOiBOb3QgaW1wbGVtZW50ZWQuCisgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTEyMTk1NAorfTsKKwpJbmRleDogU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVRyYWNrQ29uc3RyYWludHMuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFUcmFja0NvbnN0cmFp
bnRzLmNwcAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJl
YW0vTWVkaWFUcmFja0NvbnN0cmFpbnRzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDY3
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
LCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIs
IElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisg
KiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisg
KgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2lmIEVOQUJMRShNRURJQV9TVFJFQU0p
CisKKyNpbmNsdWRlICJNZWRpYVRyYWNrQ29uc3RyYWludHMuaCIKKworI2luY2x1ZGUgIk1lZGlh
VHJhY2tDb25zdHJhaW50LmgiCisjaW5jbHVkZSAiTWVkaWFUcmFja0NvbnN0cmFpbnRTZXQuaCIK
KyNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgorCit1c2luZyBuYW1lc3BhY2UgSlNDOworCitu
YW1lc3BhY2UgV2ViQ29yZSB7CisKK1Bhc3NSZWZQdHI8TWVkaWFUcmFja0NvbnN0cmFpbnRzPiBN
ZWRpYVRyYWNrQ29uc3RyYWludHM6OmNyZWF0ZShQYXNzUmVmUHRyPE1lZGlhQ29uc3RyYWludHNJ
bXBsPiBjb25zdHJhaW50cykKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3IE1lZGlhVHJhY2tD
b25zdHJhaW50cyhjb25zdHJhaW50cykpOworfQorCitNZWRpYVRyYWNrQ29uc3RyYWludHM6Ok1l
ZGlhVHJhY2tDb25zdHJhaW50cyhQYXNzUmVmUHRyPE1lZGlhQ29uc3RyYWludHNJbXBsPiBjb25z
dHJhaW50cykKKyAgICA6IG1fY29uc3RyYWludHMoY29uc3RyYWludHMpCit7Cit9CisKK1ZlY3Rv
cjxQYXNzUmVmUHRyPE1lZGlhVHJhY2tDb25zdHJhaW50Pj4gTWVkaWFUcmFja0NvbnN0cmFpbnRz
OjpvcHRpb25hbChib29sKSBjb25zdAoreworICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xMjE5NTQKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVy
biBWZWN0b3I8UGFzc1JlZlB0cjxNZWRpYVRyYWNrQ29uc3RyYWludD4+KCk7Cit9CisKK1Bhc3NS
ZWZQdHI8TWVkaWFUcmFja0NvbnN0cmFpbnRTZXQ+IE1lZGlhVHJhY2tDb25zdHJhaW50czo6bWFu
ZGF0b3J5KGJvb2wpIGNvbnN0Cit7CisgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTEyMTk1NAorICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIG51
bGxwdHI7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhVHJhY2tDb25zdHJhaW50cy5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFUcmFj
a0NvbnN0cmFpbnRzLmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21l
ZGlhc3RyZWFtL01lZGlhVHJhY2tDb25zdHJhaW50cy5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAg
KzEsNjAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01Q
VVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LiAKKyAqCisgKi8KKworI2lmbmRlZiBNZWRpYVRyYWNrQ29uc3RyYWludHNfaAorI2RlZmluZSBN
ZWRpYVRyYWNrQ29uc3RyYWludHNfaAorCisjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKKworI2lu
Y2x1ZGUgIk1lZGlhQ29uc3RyYWludHNJbXBsLmgiCisjaW5jbHVkZSAiU2NyaXB0V3JhcHBhYmxl
LmgiCisjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgewor
CitjbGFzcyBNZWRpYVRyYWNrQ29uc3RyYWludDsKK2NsYXNzIE1lZGlhVHJhY2tDb25zdHJhaW50
U2V0OworCitjbGFzcyBNZWRpYVRyYWNrQ29uc3RyYWludHMgOiBwdWJsaWMgUmVmQ291bnRlZDxN
ZWRpYVRyYWNrQ29uc3RyYWludHM+LCBwdWJsaWMgU2NyaXB0V3JhcHBhYmxlIHsKK3B1YmxpYzoK
KyAgICB2aXJ0dWFsIH5NZWRpYVRyYWNrQ29uc3RyYWludHMoKSB7IH0KKworICAgIHN0YXRpYyBQ
YXNzUmVmUHRyPE1lZGlhVHJhY2tDb25zdHJhaW50cz4gY3JlYXRlKFBhc3NSZWZQdHI8TWVkaWFD
b25zdHJhaW50c0ltcGw+KTsKKworICAgIFZlY3RvcjxQYXNzUmVmUHRyPE1lZGlhVHJhY2tDb25z
dHJhaW50Pj4gb3B0aW9uYWwoYm9vbCkgY29uc3Q7CisgICAgUGFzc1JlZlB0cjxNZWRpYVRyYWNr
Q29uc3RyYWludFNldD4gbWFuZGF0b3J5KGJvb2wpIGNvbnN0OworCitwcml2YXRlOgorICAgIGV4
cGxpY2l0IE1lZGlhVHJhY2tDb25zdHJhaW50cyhQYXNzUmVmUHRyPE1lZGlhQ29uc3RyYWludHNJ
bXBsPik7CisgICAgCisgICAgUmVmUHRyPE1lZGlhQ29uc3RyYWludHNJbXBsPiBtX2NvbnN0cmFp
bnRzOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gTWVkaWFUcmFj
a0NvbnN0cmFpbnRzX2gKKworI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21l
ZGlhc3RyZWFtL01lZGlhVHJhY2tDb25zdHJhaW50cy5pZGwKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVRyYWNrQ29uc3RyYWludHMuaWRsCShy
ZXZpc2lvbiAwKQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVRy
YWNrQ29uc3RyYWludHMuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMzMgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIs
IElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwg
SU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAq
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAq
LworCitbCisgICAgQ29uZGl0aW9uYWw9TUVESUFfU1RSRUFNLAorICAgIE5vSW50ZXJmYWNlT2Jq
ZWN0LAorXSBpbnRlcmZhY2UgTWVkaWFUcmFja0NvbnN0cmFpbnRzIHsKKyAgICByZWFkb25seSBh
dHRyaWJ1dGUgTWVkaWFUcmFja0NvbnN0cmFpbnRTZXQ/IG1hbmRhdG9yeTsKKyAgICByZWFkb25s
eSBhdHRyaWJ1dGUgTWVkaWFUcmFja0NvbnN0cmFpbnRbXT8gb3B0aW9uYWw7Cit9OworCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1VzZXJNZWRpYVJlcXVlc3QuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vVXNlck1l
ZGlhUmVxdWVzdC5jcHAJKHJldmlzaW9uIDE1NzAxNikKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvbWVkaWFzdHJlYW0vVXNlck1lZGlhUmVxdWVzdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE3
Myw3ICsxNzMsNiBAQCB2b2lkIFVzZXJNZWRpYVJlcXVlc3Q6OmNhbGxTdWNjZXNzSGFuZGxlCiAg
ICAgZm9yIChNZWRpYVN0cmVhbVRyYWNrVmVjdG9yOjppdGVyYXRvciBpdGVyID0gdHJhY2tzLmJl
Z2luKCk7IGl0ZXIgIT0gdHJhY2tzLmVuZCgpOyArK2l0ZXIpCiAgICAgICAgICgqaXRlciktPnNv
dXJjZSgpLT5zZXRDb25zdHJhaW50cyhtX3ZpZGVvQ29uc3RyYWludHMpOwogCi0gICAgTWVkaWFT
dHJlYW1DZW50ZXI6OnNoYXJlZCgpLmRpZENyZWF0ZU1lZGlhU3RyZWFtKHN0cmVhbURlc2NyaXB0
b3IuZ2V0KCkpOwogICAgIG1fc3VjY2Vzc0NhbGxiYWNrLT5oYW5kbGVFdmVudChzdHJlYW0uZ2V0
KCkpOwogfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1ZpZGVv
U3RyZWFtVHJhY2suY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVk
aWFzdHJlYW0vVmlkZW9TdHJlYW1UcmFjay5jcHAJKHJldmlzaW9uIDE1NzAxNikKKysrIFNvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vVmlkZW9TdHJlYW1UcmFjay5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTQ3LDExICs0NywyMSBAQCBQYXNzUmVmUHRyPFZpZGVvU3RyZWFtVHJhY2s+
IFZpZGVvU3RyZWFtCiAgICAgcmV0dXJuIHRyYWNrLnJlbGVhc2UoKTsKIH0KIAorUGFzc1JlZlB0
cjxWaWRlb1N0cmVhbVRyYWNrPiBWaWRlb1N0cmVhbVRyYWNrOjpjcmVhdGUoTWVkaWFTdHJlYW1U
cmFjayogdHJhY2spCit7CisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBWaWRlb1N0cmVhbVRyYWNr
KHRyYWNrKSk7Cit9CisKIFZpZGVvU3RyZWFtVHJhY2s6OlZpZGVvU3RyZWFtVHJhY2soU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgTWVkaWFTdHJlYW1Tb3VyY2UqIHNvdXJjZSwgY29u
c3QgRGljdGlvbmFyeSogdmlkZW9Db25zdHJhaW50cykKICAgICA6IE1lZGlhU3RyZWFtVHJhY2so
Y29udGV4dCwgc291cmNlLCB2aWRlb0NvbnN0cmFpbnRzKQogewogfQogCitWaWRlb1N0cmVhbVRy
YWNrOjpWaWRlb1N0cmVhbVRyYWNrKE1lZGlhU3RyZWFtVHJhY2sqIHRyYWNrKQorICAgIDogTWVk
aWFTdHJlYW1UcmFjayh0cmFjaykKK3sKK30KKwogY29uc3QgQXRvbWljU3RyaW5nJiBWaWRlb1N0
cmVhbVRyYWNrOjpraW5kKCkgY29uc3QKIHsKICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8QXRv
bWljU3RyaW5nPiB2aWRlb0tpbmQoInZpZGVvIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9t
TGl0ZXJhbCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1ZpZGVv
U3RyZWFtVHJhY2suaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlh
c3RyZWFtL1ZpZGVvU3RyZWFtVHJhY2suaAkocmV2aXNpb24gMTU3MDM5KQorKysgU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9WaWRlb1N0cmVhbVRyYWNrLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTI5LDggKzI5LDggQEAKICNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQogCiAjaW5jbHVk
ZSAiTWVkaWFTdHJlYW1UcmFjay5oIgotI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KICNpbmNsdWRl
IDx3dGYvUmVmQ291bnRlZC5oPgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCkBAIC00MSw2ICs0MSw3IEBAIGNsYXNzIFZpZGVvU3RyZWFtVHJhY2sgRklO
QUwgOiBwdWJsaWMgTWUKIHB1YmxpYzoKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxWaWRlb1N0cmVh
bVRyYWNrPiBjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIGNvbnN0IERpY3Rpb25hcnkm
KTsKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxWaWRlb1N0cmVhbVRyYWNrPiBjcmVhdGUoU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCosIE1lZGlhU3RyZWFtU291cmNlKik7CisgICAgc3RhdGljIFBhc3NS
ZWZQdHI8VmlkZW9TdHJlYW1UcmFjaz4gY3JlYXRlKE1lZGlhU3RyZWFtVHJhY2sqKTsKIAogICAg
IHZpcnR1YWwgflZpZGVvU3RyZWFtVHJhY2soKSB7IH0KIApAQCAtNDgsNiArNDksNyBAQCBwdWJs
aWM6CiAKIHByaXZhdGU6CiAgICAgVmlkZW9TdHJlYW1UcmFjayhTY3JpcHRFeGVjdXRpb25Db250
ZXh0KiwgTWVkaWFTdHJlYW1Tb3VyY2UqLCBjb25zdCBEaWN0aW9uYXJ5Kik7CisgICAgZXhwbGlj
aXQgVmlkZW9TdHJlYW1UcmFjayhNZWRpYVN0cmVhbVRyYWNrKik7CiB9OwogCiB9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlv
Q29udGV4dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRp
by9BdWRpb0NvbnRleHQuY3BwCShyZXZpc2lvbiAxNTcwMTYpCisrKyBTb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQ29udGV4dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTYzLDYg
KzYzLDcgQEAKICNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQogI2luY2x1ZGUgIk1lZGlhU3RyZWFt
LmgiCiAjaW5jbHVkZSAiTWVkaWFTdHJlYW1BdWRpb0Rlc3RpbmF0aW9uTm9kZS5oIgorI2luY2x1
ZGUgIk1lZGlhU3RyZWFtQXVkaW9Tb3VyY2UuaCIKICNpbmNsdWRlICJNZWRpYVN0cmVhbUF1ZGlv
U291cmNlTm9kZS5oIgogI2VuZGlmCiAKQEAgLTQyMCwxMiArNDIxLDE0IEBAIFBhc3NSZWZQdHI8
TWVkaWFTdHJlYW1BdWRpb1NvdXJjZU5vZGU+IEEKICAgICAvLyBGSVhNRTogZ2V0IGEgcHJvdmlk
ZXIgZm9yIG5vbi1sb2NhbCBNZWRpYVN0cmVhbXMgKGxpa2UgZnJvbSBhIHJlbW90ZSBwZWVyKS4K
ICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGF1ZGlvVHJhY2tzLnNpemUoKTsgKytpKSB7CiAg
ICAgICAgIFJlZlB0cjxNZWRpYVN0cmVhbVRyYWNrPiBsb2NhbEF1ZGlvID0gYXVkaW9UcmFja3Nb
aV07Ci0gICAgICAgIE1lZGlhU3RyZWFtU291cmNlKiBzb3VyY2UgPSBsb2NhbEF1ZGlvLT5zb3Vy
Y2UoKTsKLSAgICAgICAgaWYgKCFzb3VyY2UtPmRldmljZUlkKCkuaXNFbXB0eSgpKSB7Ci0gICAg
ICAgICAgICBkZXN0aW5hdGlvbigpLT5lbmFibGVJbnB1dChzb3VyY2UtPmRldmljZUlkKCkpOwot
ICAgICAgICAgICAgcHJvdmlkZXIgPSBkZXN0aW5hdGlvbigpLT5sb2NhbEF1ZGlvSW5wdXRQcm92
aWRlcigpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KKyAgICAgICAgaWYgKCFsb2Nh
bEF1ZGlvLT5zb3VyY2UoKS0+aXNBdWRpb1N0cmVhbVNvdXJjZSgpKQorICAgICAgICAgICAgY29u
dGludWU7CisKKyAgICAgICAgTWVkaWFTdHJlYW1BdWRpb1NvdXJjZSogc291cmNlID0gc3RhdGlj
X2Nhc3Q8TWVkaWFTdHJlYW1BdWRpb1NvdXJjZSo+KGxvY2FsQXVkaW8tPnNvdXJjZSgpKTsKKyAg
ICAgICAgQVNTRVJUKCFzb3VyY2UtPmRldmljZUlkKCkuaXNFbXB0eSgpKTsKKyAgICAgICAgZGVz
dGluYXRpb24oKS0+ZW5hYmxlSW5wdXQoc291cmNlLT5kZXZpY2VJZCgpKTsKKyAgICAgICAgcHJv
dmlkZXIgPSBkZXN0aW5hdGlvbigpLT5sb2NhbEF1ZGlvSW5wdXRQcm92aWRlcigpOworICAgICAg
ICBicmVhazsKICAgICB9CiAKICAgICBSZWZQdHI8TWVkaWFTdHJlYW1BdWRpb1NvdXJjZU5vZGU+
IG5vZGUgPSBNZWRpYVN0cmVhbUF1ZGlvU291cmNlTm9kZTo6Y3JlYXRlKHRoaXMsIG1lZGlhU3Ry
ZWFtLCBwcm92aWRlcik7CkBAIC03MzMsNyArNzM2LDcgQEAgdm9pZCBBdWRpb0NvbnRleHQ6OmFk
ZERlZmVycmVkRmluaXNoRGVyZQogdm9pZCBBdWRpb0NvbnRleHQ6OmhhbmRsZVByZVJlbmRlclRh
c2tzKCkKIHsKICAgICBBU1NFUlQoaXNBdWRpb1RocmVhZCgpKTsKLSAKKwogICAgIC8vIEF0IHRo
ZSBiZWdpbm5pbmcgb2YgZXZlcnkgcmVuZGVyIHF1YW50dW0sIHRyeSB0byB1cGRhdGUgdGhlIGlu
dGVybmFsIHJlbmRlcmluZyBncmFwaCBzdGF0ZSAoZnJvbSBtYWluIHRocmVhZCBjaGFuZ2VzKS4K
ICAgICAvLyBJdCdzIE9LIGlmIHRoZSB0cnlMb2NrKCkgZmFpbHMsIHdlJ2xsIGp1c3QgdGFrZSBz
bGlnaHRseSBsb25nZXIgdG8gcGljayB1cCB0aGUgY2hhbmdlcy4KICAgICBib29sIG11c3RSZWxl
YXNlTG9jazsKQEAgLTc1Miw4ICs3NTUsOCBAQCB2b2lkIEF1ZGlvQ29udGV4dDo6aGFuZGxlUHJl
UmVuZGVyVGFza3MoCiB2b2lkIEF1ZGlvQ29udGV4dDo6aGFuZGxlUG9zdFJlbmRlclRhc2tzKCkK
IHsKICAgICBBU1NFUlQoaXNBdWRpb1RocmVhZCgpKTsKLSAKLSAgICAvLyBNdXN0IHVzZSBhIHRy
eUxvY2soKSBoZXJlIHRvby4gIERvbid0IHdvcnJ5LCB0aGUgbG9jayB3aWxsIHZlcnkgcmFyZWx5
IGJlIGNvbnRlbmRlZCBhbmQgdGhpcyBtZXRob2QgaXMgY2FsbGVkIGZyZXF1ZW50bHkuCisKKyAg
ICAvLyBNdXN0IHVzZSBhIHRyeUxvY2soKSBoZXJlIHRvby4gRG9uJ3Qgd29ycnksIHRoZSBsb2Nr
IHdpbGwgdmVyeSByYXJlbHkgYmUgY29udGVuZGVkIGFuZCB0aGlzIG1ldGhvZCBpcyBjYWxsZWQg
ZnJlcXVlbnRseS4KICAgICAvLyBUaGUgd29yc3QgdGhhdCBjYW4gaGFwcGVuIGlzIHRoYXQgdGhl
cmUgd2lsbCBiZSBzb21lIG5vZGVzIHdoaWNoIHdpbGwgdGFrZSBzbGlnaHRseSBsb25nZXIgdGhh
biB1c3VhbCB0byBiZSBkZWxldGVkIG9yIHJlbW92ZWQKICAgICAvLyBmcm9tIHRoZSByZW5kZXIg
Z3JhcGggKGluIHdoaWNoIGNhc2UgdGhleSdsbCByZW5kZXIgc2lsZW5jZSkuCiAgICAgYm9vbCBt
dXN0UmVsZWFzZUxvY2s7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL01l
ZGlhU3RyZWFtQXVkaW9EZXN0aW5hdGlvbk5vZGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vTWVkaWFTdHJlYW1BdWRpb0Rlc3RpbmF0aW9uTm9kZS5j
cHAJKHJldmlzaW9uIDE1NzAxNikKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8v
TWVkaWFTdHJlYW1BdWRpb0Rlc3RpbmF0aW9uTm9kZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMx
LDkgKzMxLDggQEAKICNpbmNsdWRlICJBdWRpb0NvbnRleHQuaCIKICNpbmNsdWRlICJBdWRpb05v
ZGVJbnB1dC5oIgogI2luY2x1ZGUgIk1lZGlhU3RyZWFtLmgiCi0jaW5jbHVkZSAiTWVkaWFTdHJl
YW1DZW50ZXIuaCIKKyNpbmNsdWRlICJNZWRpYVN0cmVhbUF1ZGlvU291cmNlLmgiCiAjaW5jbHVk
ZSAiUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyLmgiCi0jaW5jbHVkZSAiVVVJRC5oIgogI2luY2x1
ZGUgPHd0Zi9Mb2NrZXIuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNDksMTIgKzQ4LDEw
IEBAIE1lZGlhU3RyZWFtQXVkaW9EZXN0aW5hdGlvbk5vZGU6Ok1lZGlhU3QKIHsKICAgICBzZXRO
b2RlVHlwZShOb2RlVHlwZU1lZGlhU3RyZWFtQXVkaW9EZXN0aW5hdGlvbik7CiAKLSAgICBtX3Nv
dXJjZSA9IE1lZGlhU3RyZWFtU291cmNlOjpjcmVhdGUoQVNDSUlMaXRlcmFsKCJXZWJBdWRpby0i
KSArIGNyZWF0ZUNhbm9uaWNhbFVVSURTdHJpbmcoKSwgTWVkaWFTdHJlYW1Tb3VyY2U6OkF1ZGlv
LCAiTWVkaWFTdHJlYW1BdWRpb0Rlc3RpbmF0aW9uTm9kZSIsIE1lZGlhU3RyZWFtU291cmNlOjpM
aXZlLCB0cnVlKTsKKyAgICBtX3NvdXJjZSA9IE1lZGlhU3RyZWFtQXVkaW9Tb3VyY2U6OmNyZWF0
ZSgpOwogICAgIE1lZGlhU3RyZWFtU291cmNlVmVjdG9yIGF1ZGlvU291cmNlczsKICAgICBhdWRp
b1NvdXJjZXMuYXBwZW5kKG1fc291cmNlKTsKLSAgICBNZWRpYVN0cmVhbVNvdXJjZVZlY3RvciB2
aWRlb1NvdXJjZXM7Ci0gICAgbV9zdHJlYW0gPSBNZWRpYVN0cmVhbTo6Y3JlYXRlKGNvbnRleHQt
PnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgTWVkaWFTdHJlYW1EZXNjcmlwdG9yOjpjcmVhdGUo
YXVkaW9Tb3VyY2VzLCB2aWRlb1NvdXJjZXMpKTsKLSAgICBNZWRpYVN0cmVhbUNlbnRlcjo6c2hh
cmVkKCkuZGlkQ3JlYXRlTWVkaWFTdHJlYW0obV9zdHJlYW0tPmRlc2NyaXB0b3IoKSk7CisgICAg
bV9zdHJlYW0gPSBNZWRpYVN0cmVhbTo6Y3JlYXRlKGNvbnRleHQtPnNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQoKSwgTWVkaWFTdHJlYW1EZXNjcmlwdG9yOjpjcmVhdGUoYXVkaW9Tb3VyY2VzLCBNZWRp
YVN0cmVhbVNvdXJjZVZlY3RvcigpKSk7CiAKICAgICBtX3NvdXJjZS0+c2V0QXVkaW9Gb3JtYXQo
bnVtYmVyT2ZDaGFubmVscywgY29udGV4dC0+c2FtcGxlUmF0ZSgpKTsKIApJbmRleDogU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9NZWRpYVN0cmVhbUF1ZGlvRGVzdGluYXRpb25Ob2Rl
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9NZWRpYVN0
cmVhbUF1ZGlvRGVzdGluYXRpb25Ob2RlLmgJKHJldmlzaW9uIDE1NzAxNikKKysrIFNvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vTWVkaWFTdHJlYW1BdWRpb0Rlc3RpbmF0aW9uTm9kZS5o
CSh3b3JraW5nIGNvcHkpCkBAIC0zNiw2ICszNiw3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
IGNsYXNzIEF1ZGlvQ29udGV4dDsKK2NsYXNzIE1lZGlhU3RyZWFtQXVkaW9Tb3VyY2U7CiAKIGNs
YXNzIE1lZGlhU3RyZWFtQXVkaW9EZXN0aW5hdGlvbk5vZGUgOiBwdWJsaWMgQXVkaW9CYXNpY0lu
c3BlY3Rvck5vZGUgewogcHVibGljOgpAQCAtNjEsNyArNjIsNyBAQCBwcml2YXRlOgogICAgIHZp
cnR1YWwgYm9vbCBwcm9wYWdhdGVzU2lsZW5jZSgpIGNvbnN0IE9WRVJSSURFIHsgcmV0dXJuIGZh
bHNlOyB9CiAKICAgICBSZWZQdHI8TWVkaWFTdHJlYW0+IG1fc3RyZWFtOwotICAgIFJlZlB0cjxN
ZWRpYVN0cmVhbVNvdXJjZT4gbV9zb3VyY2U7CisgICAgUmVmUHRyPE1lZGlhU3RyZWFtQXVkaW9T
b3VyY2U+IG1fc291cmNlOwogICAgIFJlZlB0cjxBdWRpb0J1cz4gbV9taXhCdXM7CiB9OwogCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL01lZGlhU3RyZWFtQXVkaW9Tb3Vy
Y2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vTWVk
aWFTdHJlYW1BdWRpb1NvdXJjZS5jcHAJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmF1ZGlvL01lZGlhU3RyZWFtQXVkaW9Tb3VyY2UuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0wLDAgKzEsOTggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2lmIEVO
QUJMRShNRURJQV9TVFJFQU0pCisKKyNpbmNsdWRlICJNZWRpYVN0cmVhbUF1ZGlvU291cmNlLmgi
CisKKyNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgorI2luY2x1ZGUgIlVVSUQuaCIKKyNpbmNs
dWRlIDx3dGYvUGFzc093blB0ci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1Bhc3NSZWZQ
dHI8TWVkaWFTdHJlYW1BdWRpb1NvdXJjZT4gTWVkaWFTdHJlYW1BdWRpb1NvdXJjZTo6Y3JlYXRl
KCkKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3IE1lZGlhU3RyZWFtQXVkaW9Tb3VyY2UoKSk7
Cit9CisKK01lZGlhU3RyZWFtQXVkaW9Tb3VyY2U6Ok1lZGlhU3RyZWFtQXVkaW9Tb3VyY2UoKQor
ICAgIDogTWVkaWFTdHJlYW1Tb3VyY2UoQVNDSUlMaXRlcmFsKCJXZWJBdWRpby0iKSArIGNyZWF0
ZUNhbm9uaWNhbFVVSURTdHJpbmcoKSwgTWVkaWFTdHJlYW1Tb3VyY2U6OkF1ZGlvLCAiTWVkaWFT
dHJlYW1BdWRpb0Rlc3RpbmF0aW9uTm9kZSIpCit7Cit9CisKK1Bhc3NSZWZQdHI8TWVkaWFTdHJl
YW1Tb3VyY2VDYXBhYmlsaXRpZXM+IE1lZGlhU3RyZWFtQXVkaW9Tb3VyY2U6OmNhcGFiaWxpdGll
cygpIGNvbnN0Cit7CisgICAgLy8gRklYTUU6IGltcGxlbWVudCB0aGlzLgorICAgIC8vIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjI0MzAKKyAgICBub3RJbXBsZW1l
bnRlZCgpOworICAgIHJldHVybiAwOworfQorCitjb25zdCBNZWRpYVN0cmVhbVNvdXJjZVN0YXRl
cyYgTWVkaWFTdHJlYW1BdWRpb1NvdXJjZTo6c3RhdGVzKCkKK3sKKyAgICAvLyBGSVhNRTogaW1w
bGVtZW50IHRoaXMuCisgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTEyMjQzMAorICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIG1fY3VycmVudFN0
YXRlczsKKyAgICAKK30KKwordm9pZCBNZWRpYVN0cmVhbUF1ZGlvU291cmNlOjphZGRBdWRpb0Nv
bnN1bWVyKFBhc3NSZWZQdHI8QXVkaW9EZXN0aW5hdGlvbkNvbnN1bWVyPiBjb25zdW1lcikKK3sK
KyAgICBNdXRleExvY2tlciBsb2NrZXIobV9hdWRpb0NvbnN1bWVyc0xvY2spOworICAgIG1fYXVk
aW9Db25zdW1lcnMuYXBwZW5kKGNvbnN1bWVyKTsKK30KKworYm9vbCBNZWRpYVN0cmVhbUF1ZGlv
U291cmNlOjpyZW1vdmVBdWRpb0NvbnN1bWVyKEF1ZGlvRGVzdGluYXRpb25Db25zdW1lciogY29u
c3VtZXIpCit7CisgICAgTXV0ZXhMb2NrZXIgbG9ja2VyKG1fYXVkaW9Db25zdW1lcnNMb2NrKTsK
KyAgICBzaXplX3QgcG9zID0gbV9hdWRpb0NvbnN1bWVycy5maW5kKGNvbnN1bWVyKTsKKyAgICBp
ZiAocG9zICE9IG5vdEZvdW5kKSB7CisgICAgICAgIG1fYXVkaW9Db25zdW1lcnMucmVtb3ZlKHBv
cyk7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKyAgICByZXR1cm4gZmFsc2U7Cit9CisK
K3ZvaWQgTWVkaWFTdHJlYW1BdWRpb1NvdXJjZTo6c2V0QXVkaW9Gb3JtYXQoc2l6ZV90IG51bWJl
ck9mQ2hhbm5lbHMsIGZsb2F0IHNhbXBsZVJhdGUpCit7CisgICAgTXV0ZXhMb2NrZXIgbG9ja2Vy
KG1fYXVkaW9Db25zdW1lcnNMb2NrKTsKKyAgICBmb3IgKFZlY3RvcjxSZWZQdHI8QXVkaW9EZXN0
aW5hdGlvbkNvbnN1bWVyPiA+OjppdGVyYXRvciBpdCA9IG1fYXVkaW9Db25zdW1lcnMuYmVnaW4o
KTsgaXQgIT0gbV9hdWRpb0NvbnN1bWVycy5lbmQoKTsgKytpdCkKKyAgICAgICAgKCppdCktPnNl
dEZvcm1hdChudW1iZXJPZkNoYW5uZWxzLCBzYW1wbGVSYXRlKTsKK30KKwordm9pZCBNZWRpYVN0
cmVhbUF1ZGlvU291cmNlOjpjb25zdW1lQXVkaW8oQXVkaW9CdXMqIGJ1cywgc2l6ZV90IG51bWJl
ck9mRnJhbWVzKQoreworICAgIE11dGV4TG9ja2VyIGxvY2tlcihtX2F1ZGlvQ29uc3VtZXJzTG9j
ayk7CisgICAgZm9yIChWZWN0b3I8UmVmUHRyPEF1ZGlvRGVzdGluYXRpb25Db25zdW1lcj4gPjo6
aXRlcmF0b3IgaXQgPSBtX2F1ZGlvQ29uc3VtZXJzLmJlZ2luKCk7IGl0ICE9IG1fYXVkaW9Db25z
dW1lcnMuZW5kKCk7ICsraXQpCisgICAgICAgICgqaXQpLT5jb25zdW1lQXVkaW8oYnVzLCBudW1i
ZXJPZkZyYW1lcyk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVO
QUJMRShNRURJQV9TVFJFQU0pCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlv
L01lZGlhU3RyZWFtQXVkaW9Tb3VyY2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmF1ZGlvL01lZGlhU3RyZWFtQXVkaW9Tb3VyY2UuaAkocmV2aXNpb24gMCkKKysr
IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vTWVkaWFTdHJlYW1BdWRpb1NvdXJjZS5o
CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNzcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFO
RCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgTWVkaWFT
dHJlYW1BdWRpb1NvdXJjZV9oCisjZGVmaW5lIE1lZGlhU3RyZWFtQXVkaW9Tb3VyY2VfaAorCisj
aWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKKworI2luY2x1ZGUgIkF1ZGlvRGVzdGluYXRpb25Db25z
dW1lci5oIgorI2luY2x1ZGUgIk1lZGlhU3RyZWFtU291cmNlLmgiCisjaW5jbHVkZSA8d3RmL1Jl
ZkNvdW50ZWQuaD4KKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisjaW5jbHVkZSA8d3RmL3RleHQv
V1RGU3RyaW5nLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgQXVkaW9CdXM7Citj
bGFzcyBNZWRpYVN0cmVhbVNvdXJjZUNhcGFiaWxpdGllczsKKworY2xhc3MgTWVkaWFTdHJlYW1B
dWRpb1NvdXJjZSA6IHB1YmxpYyBNZWRpYVN0cmVhbVNvdXJjZSB7CitwdWJsaWM6CisgICAgc3Rh
dGljIFBhc3NSZWZQdHI8TWVkaWFTdHJlYW1BdWRpb1NvdXJjZT4gY3JlYXRlKCk7CisKKyAgICB+
TWVkaWFTdHJlYW1BdWRpb1NvdXJjZSgpIHsgfQorCisgICAgdmlydHVhbCBib29sIGlzQXVkaW9T
dHJlYW1Tb3VyY2UoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9CisgICAgdmlydHVhbCBib29sIHVz
ZUlERm9yVHJhY2tJRCgpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KKworICAgIHZpcnR1YWwgUGFz
c1JlZlB0cjxNZWRpYVN0cmVhbVNvdXJjZUNhcGFiaWxpdGllcz4gY2FwYWJpbGl0aWVzKCkgY29u
c3Q7CisgICAgdmlydHVhbCBjb25zdCBNZWRpYVN0cmVhbVNvdXJjZVN0YXRlcyYgc3RhdGVzKCk7
CisgICAgCisgICAgY29uc3QgU3RyaW5nJiBkZXZpY2VJZCgpIGNvbnN0IHsgcmV0dXJuIG1fZGV2
aWNlSWQ7IH0KKyAgICB2b2lkIHNldERldmljZUlkKGNvbnN0IFN0cmluZyYgZGV2aWNlSWQpIHsg
bV9kZXZpY2VJZCA9IGRldmljZUlkOyB9CisKKyAgICB2b2lkIHNldEF1ZGlvRm9ybWF0KHNpemVf
dCBudW1iZXJPZkNoYW5uZWxzLCBmbG9hdCBzYW1wbGVSYXRlKTsKKyAgICB2b2lkIGNvbnN1bWVB
dWRpbyhBdWRpb0J1cyosIHNpemVfdCBudW1iZXJPZkZyYW1lcyk7CisKKyAgICB2b2lkIGFkZEF1
ZGlvQ29uc3VtZXIoUGFzc1JlZlB0cjxBdWRpb0Rlc3RpbmF0aW9uQ29uc3VtZXI+KTsKKyAgICBi
b29sIHJlbW92ZUF1ZGlvQ29uc3VtZXIoQXVkaW9EZXN0aW5hdGlvbkNvbnN1bWVyKik7CisgICAg
Y29uc3QgVmVjdG9yPFJlZlB0cjxBdWRpb0Rlc3RpbmF0aW9uQ29uc3VtZXI+PiYgYXVkaW9Db25z
dW1lcnMoKSBjb25zdCB7IHJldHVybiBtX2F1ZGlvQ29uc3VtZXJzOyB9CisKK3ByaXZhdGU6Cisg
ICAgTWVkaWFTdHJlYW1BdWRpb1NvdXJjZSgpOworCisgICAgU3RyaW5nIG1fZGV2aWNlSWQ7Cisg
ICAgTXV0ZXggbV9hdWRpb0NvbnN1bWVyc0xvY2s7CisgICAgVmVjdG9yPFJlZlB0cjxBdWRpb0Rl
c3RpbmF0aW9uQ29uc3VtZXI+PiBtX2F1ZGlvQ29uc3VtZXJzOworICAgIE1lZGlhU3RyZWFtU291
cmNlU3RhdGVzIG1fY3VycmVudFN0YXRlczsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
KworI2VuZGlmIC8vIEVOQUJMRShNRURJQV9TVFJFQU0pCisKKyNlbmRpZiAvLyBNZWRpYVN0cmVh
bUF1ZGlvU291cmNlX2gKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDE1NzAxNikKKysrIFNvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtODQs
NiArODQsMzAgQEAKIAkJMDcwMzM0RDcxNDU5RkZENTAwOEQ4RDQ1IC8qIFRyYWNrQmFzZS5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDcwMzM0RDYxNDU5
RkZENTAwOEQ4RDQ1IC8qIFRyYWNrQmFzZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CiAJCTA3MDMzNEQ5MTQ1QTAwNkYwMDhEOEQ0NSAvKiBUcmFja0Jh
c2UuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDcw
MzM0RDgxNDVBMDA2RjAwOEQ4RDQ1IC8qIFRyYWNrQmFzZS5jcHAgKi87IH07CiAJCTA3MDMzNEU5
MTQ1QTFGMzYwMDhEOEQ0NSAvKiBKU1RyYWNrQ3VzdG9tLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3MDMzNEU4MTQ1QTFGMzUwMDhEOEQ0NSAvKiBK
U1RyYWNrQ3VzdG9tLmNwcCAqLzsgfTsKKwkJMDcwNTg0RkQxN0Y5RDZERjAwNUYyQkNCIC8qIE1l
ZGlhU3RyZWFtU291cmNlQ2FwYWJpbGl0aWVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAwNzA1ODRGQjE3RjlENkRGMDA1RjJCQ0IgLyogTWVkaWFTdHJl
YW1Tb3VyY2VDYXBhYmlsaXRpZXMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OworCQkwNzA1ODRGRjE3RjlGMDVFMDA1RjJCQ0IgLyogQ2FwYWJpbGl0eVJh
bmdlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3
MDU4NEZFMTdGOUYwNUUwMDVGMkJDQiAvKiBDYXBhYmlsaXR5UmFuZ2UuY3BwICovOyB9OworCQkw
NzA1ODUwMjE3RkExMEQwMDA1RjJCQ0IgLyogSlNBbGxWaWRlb0NhcGFiaWxpdGllcy5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwNzA1ODUwMDE3RkEx
MEQwMDA1RjJCQ0IgLyogSlNBbGxWaWRlb0NhcGFiaWxpdGllcy5jcHAgKi87IH07CisJCTA3MDU4
NTAzMTdGQTEwRDAwMDVGMkJDQiAvKiBKU0FsbFZpZGVvQ2FwYWJpbGl0aWVzLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwNzA1ODUwMTE3RkExMEQwMDA1
RjJCQ0IgLyogSlNBbGxWaWRlb0NhcGFiaWxpdGllcy5oICovOyB9OworCQkwNzA1ODUwODE3RkE0
Njg5MDA1RjJCQ0IgLyogQWxsQXVkaW9DYXBhYmlsaXRpZXMuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3MDU4NTA1MTdGQTQ2ODkwMDVGMkJDQiAvKiBB
bGxBdWRpb0NhcGFiaWxpdGllcy5oICovOyB9OworCQkwNzA1ODUwQjE3RkE0ODI3MDA1RjJCQ0Ig
LyogTWVkaWFTdHJlYW1DYXBhYmlsaXRpZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDA3MDU4NTBBMTdGQTQ4MjcwMDVGMkJDQiAvKiBNZWRpYVN0cmVh
bUNhcGFiaWxpdGllcy5oICovOyB9OworCQkwNzA1ODUxMjE3RkE3MTA3MDA1RjJCQ0IgLyogSlNN
ZWRpYVN0cmVhbUNhcGFiaWxpdGllcy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAwNzA1ODUxMDE3RkE3MTA3MDA1RjJCQ0IgLyogSlNNZWRpYVN0cmVh
bUNhcGFiaWxpdGllcy5jcHAgKi87IH07CisJCTA3MDU4NTEzMTdGQTcxMDcwMDVGMkJDQiAvKiBK
U01lZGlhU3RyZWFtQ2FwYWJpbGl0aWVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAwNzA1ODUxMTE3RkE3MTA3MDA1RjJCQ0IgLyogSlNNZWRpYVN0cmVh
bUNhcGFiaWxpdGllcy5oICovOyB9OworCQkwNzA1ODUxNTE3RkIwRUVBMDA1RjJCQ0IgLyogTWVk
aWFTdHJlYW1DYXBhYmlsaXRpZXMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMDcwNTg1MTQxN0ZCMEUyQzAwNUYyQkNCIC8qIE1lZGlhU3RyZWFtQ2Fw
YWJpbGl0aWVzLmNwcCAqLzsgfTsKKwkJMDcwNTg1MTcxN0ZCNDBFOTAwNUYyQkNCIC8qIEpTTWVk
aWFTdHJlYW1DYXBhYmlsaXRpZXNDdXN0b20uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMDcwNTg1MTYxN0ZCNDBFOTAwNUYyQkNCIC8qIEpTTWVkaWFT
dHJlYW1DYXBhYmlsaXRpZXNDdXN0b20uY3BwICovOyB9OworCQkwNzA1ODUxQTE3RkI0NEI0MDA1
RjJCQ0IgLyogSlNBbGxBdWRpb0NhcGFiaWxpdGllcy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwNzA1ODUxODE3RkI0NEI0MDA1RjJCQ0IgLyogSlNB
bGxBdWRpb0NhcGFiaWxpdGllcy5jcHAgKi87IH07CisJCTA3MDU4NTFCMTdGQjQ0QjQwMDVGMkJD
QiAvKiBKU0FsbEF1ZGlvQ2FwYWJpbGl0aWVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAwNzA1ODUxOTE3RkI0NEI0MDA1RjJCQ0IgLyogSlNBbGxBdWRp
b0NhcGFiaWxpdGllcy5oICovOyB9OworCQkwNzA1ODUyMTE3RkRDMTQwMDA1RjJCQ0IgLyogTWVk
aWFUcmFja0NvbnN0cmFpbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDA3MDU4NTFEMTdGREMxNDAwMDVGMkJDQiAvKiBNZWRpYVRyYWNrQ29uc3RyYWlu
dC5oICovOyB9OworCQkwNzA1ODUyMzE3RkRDMTQwMDA1RjJCQ0IgLyogTWVkaWFUcmFja0NvbnN0
cmFpbnRzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDA3MDU4NTFGMTdGREMxNDAwMDVGMkJDQiAvKiBNZWRpYVRyYWNrQ29uc3RyYWludHMuY3BwICov
OyB9OworCQkwNzA1ODUyNDE3RkRDMTQwMDA1RjJCQ0IgLyogTWVkaWFUcmFja0NvbnN0cmFpbnRz
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwNzA1ODUy
MDE3RkRDMTQwMDA1RjJCQ0IgLyogTWVkaWFUcmFja0NvbnN0cmFpbnRzLmggKi87IH07CisJCTA3
MDU4NTI5MTdGREUwMkMwMDVGMkJDQiAvKiBNZWRpYVRyYWNrQ29uc3RyYWludFNldC5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDcwNTg1MjYxN0ZERTAy
QjAwNUYyQkNCIC8qIE1lZGlhVHJhY2tDb25zdHJhaW50U2V0LmggKi87IH07CisJCTA3MDU4NTMx
MTdGREU2RDkwMDVGMkJDQiAvKiBKU01lZGlhVHJhY2tDb25zdHJhaW50LmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3MDU4NTJCMTdGREU2RDkwMDVG
MkJDQiAvKiBKU01lZGlhVHJhY2tDb25zdHJhaW50LmNwcCAqLzsgfTsKKwkJMDcwNTg1MzIxN0ZE
RTZEOTAwNUYyQkNCIC8qIEpTTWVkaWFUcmFja0NvbnN0cmFpbnQuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3MDU4NTJDMTdGREU2RDkwMDVGMkJDQiAv
KiBKU01lZGlhVHJhY2tDb25zdHJhaW50LmggKi87IH07CisJCTA3MDU4NTMzMTdGREU2RDkwMDVG
MkJDQiAvKiBKU01lZGlhVHJhY2tDb25zdHJhaW50cy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwNzA1ODUyRDE3RkRFNkQ5MDA1RjJCQ0IgLyogSlNN
ZWRpYVRyYWNrQ29uc3RyYWludHMuY3BwICovOyB9OworCQkwNzA1ODUzNDE3RkRFNkQ5MDA1RjJC
Q0IgLyogSlNNZWRpYVRyYWNrQ29uc3RyYWludHMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3MDU4NTJFMTdGREU2RDkwMDVGMkJDQiAvKiBKU01lZGlh
VHJhY2tDb25zdHJhaW50cy5oICovOyB9OworCQkwNzA1ODUzNTE3RkRFNkQ5MDA1RjJCQ0IgLyog
SlNNZWRpYVRyYWNrQ29uc3RyYWludFNldC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAwNzA1ODUyRjE3RkRFNkQ5MDA1RjJCQ0IgLyogSlNNZWRpYVRy
YWNrQ29uc3RyYWludFNldC5jcHAgKi87IH07CisJCTA3MDU4NTM2MTdGREU2RDkwMDVGMkJDQiAv
KiBKU01lZGlhVHJhY2tDb25zdHJhaW50U2V0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAwNzA1ODUzMDE3RkRFNkQ5MDA1RjJCQ0IgLyogSlNNZWRpYVRy
YWNrQ29uc3RyYWludFNldC5oICovOyB9OworCQkwNzA1ODUzODE3RkUwNDRGMDA1RjJCQ0IgLyog
TWVkaWFUcmFja0NvbnN0cmFpbnRTZXQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMDcwNTg1MzcxN0ZFMDQ0RjAwNUYyQkNCIC8qIE1lZGlhVHJhY2tD
b25zdHJhaW50U2V0LmNwcCAqLzsgfTsKKwkJMDcwNTg1M0ExN0ZFMDc3MDAwNUYyQkNCIC8qIE1l
ZGlhVHJhY2tDb25zdHJhaW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDA3MDU4NTM5MTdGRTA3NzAwMDVGMkJDQiAvKiBNZWRpYVRyYWNrQ29uc3Ry
YWludC5jcHAgKi87IH07CiAJCTA3MDc1NjhCMTQyMjYyRDYwMDQxNDE2MSAvKiBIVE1MVHJhY2tF
bGVtZW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDA3MDc1Njg4MTQyMjYyRDYwMDQxNDE2MSAvKiBIVE1MVHJhY2tFbGVtZW50LmNwcCAqLzsgfTsK
IAkJMDcwNzU2OEMxNDIyNjJENjAwNDE0MTYxIC8qIEhUTUxUcmFja0VsZW1lbnQuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3MDc1Njg5MTQyMjYyRDYw
MDQxNDE2MSAvKiBIVE1MVHJhY2tFbGVtZW50LmggKi87IH07CiAJCTA3MDc1Njk0MTQyMjY2OEQw
MDQxNDE2MSAvKiBKU1RleHRUcmFjay5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAwNzA3NTY4RTE0MjI2NjhDMDA0MTQxNjEgLyogSlNUZXh0VHJhY2su
Y3BwICovOyB9OwpAQCAtMTE5LDYgKzE0Myw5IEBACiAJCTA3MzVFRTZBMEY0MEM1RTQwMDRBMjYw
NCAvKiBNZWRpYVBsYXllclByb3h5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAwNzM1RUU2OTBGNDBDNUU0MDA0QTI2MDQgLyogTWVkaWFQbGF5ZXJQcm94
eS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTA3
MzY3RERGMTcyQ0E2N0YwMEQ4NjFCOSAvKiBJbmJhbmRUZXh0VHJhY2tQcml2YXRlTGVnYWN5QVZG
T2JqQy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDcz
NjdEREQxNzJDQTY3RjAwRDg2MUI5IC8qIEluYmFuZFRleHRUcmFja1ByaXZhdGVMZWdhY3lBVkZP
YmpDLmggKi87IH07CiAJCTA3MzY3REUwMTcyQ0E2ODIwMEQ4NjFCOSAvKiBJbmJhbmRUZXh0VHJh
Y2tQcml2YXRlTGVnYWN5QVZGT2JqQy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDA3MzY3RERFMTcyQ0E2N0YwMEQ4NjFCOSAvKiBJbmJhbmRUZXh0VHJh
Y2tQcml2YXRlTGVnYWN5QVZGT2JqQy5tbSAqLzsgfTsKKwkJMDczQUI0QjMxN0Y4QkFDQTAwNkUw
RDZGIC8qIEFsbFZpZGVvQ2FwYWJpbGl0aWVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAwNzNBQjRCMDE3RjhCQUNBMDA2RTBENkYgLyogQWxsVmlkZW9D
YXBhYmlsaXRpZXMuaCAqLzsgfTsKKwkJMDczQUI0QjcxN0Y5MkVDRjAwNkUwRDZGIC8qIEpTQ2Fw
YWJpbGl0eVJhbmdlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDA3M0FCNEI1MTdGOTJFQ0YwMDZFMEQ2RiAvKiBKU0NhcGFiaWxpdHlSYW5nZS5jcHAg
Ki87IH07CisJCTA3M0FCNEI4MTdGOTJFQ0YwMDZFMEQ2RiAvKiBKU0NhcGFiaWxpdHlSYW5nZS5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDczQUI0QjYx
N0Y5MkVDRjAwNkUwRDZGIC8qIEpTQ2FwYWJpbGl0eVJhbmdlLmggKi87IH07CiAJCTA3M0JFMzQw
MTdEMTdFMDEwMDJCRDQzMSAvKiBKU05hdmlnYXRvck1lZGlhU3RyZWFtLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3M0JFMzNFMTdEMTdFMDEwMDJC
RDQzMSAvKiBKU05hdmlnYXRvck1lZGlhU3RyZWFtLmNwcCAqLzsgfTsKIAkJMDczQkUzNDExN0Qx
N0UwMTAwMkJENDMxIC8qIEpTTmF2aWdhdG9yTWVkaWFTdHJlYW0uaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3M0JFMzNGMTdEMTdFMDEwMDJCRDQzMSAv
KiBKU05hdmlnYXRvck1lZGlhU3RyZWFtLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKIAkJMDczQkUzNDgxN0QxN0U3QTAwMkJENDMxIC8qIEpTTmF2aWdh
dG9yVXNlck1lZGlhRXJyb3IuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMDczQkUzNDIxN0QxN0U3QTAwMkJENDMxIC8qIEpTTmF2aWdhdG9yVXNlck1l
ZGlhRXJyb3IuY3BwICovOyB9OwpAQCAtMTQ1LDYgKzE3Miw4IEBACiAJCTA3Njk3MDg2MTQ2M0FE
ODcwMEY1MDJDRiAvKiBUZXh0VHJhY2tMaXN0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3Njk3MDg0MTQ2M0FEODcwMEY1MDJDRiAvKiBUZXh0VHJh
Y2tMaXN0LmNwcCAqLzsgfTsKIAkJMDc2OTcwODcxNDYzQUQ4NzAwRjUwMkNGIC8qIFRleHRUcmFj
a0xpc3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3
Njk3MDg1MTQ2M0FEODcwMEY1MDJDRiAvKiBUZXh0VHJhY2tMaXN0LmggKi87IH07CiAJCTA3NkYw
RDBFMTJCODE5MjcwMEMyNkFBNCAvKiBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb24uaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3NkYwRDBBMTJC
ODE5MjcwMEMyNkFBNCAvKiBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb24uaCAqLzsgfTsK
KwkJMDc4MzIyODQxODAxM0VEODAwOTk5RTBDIC8qIE1lZGlhU3RyZWFtQXVkaW9Tb3VyY2UuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDc4MzIyODIx
ODAxM0VENzAwOTk5RTBDIC8qIE1lZGlhU3RyZWFtQXVkaW9Tb3VyY2UuY3BwICovOyB9OworCQkw
NzgzMjI4NTE4MDEzRUQ4MDA5OTlFMEMgLyogTWVkaWFTdHJlYW1BdWRpb1NvdXJjZS5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDc4MzIyODMxODAxM0VE
ODAwOTk5RTBDIC8qIE1lZGlhU3RyZWFtQXVkaW9Tb3VyY2UuaCAqLzsgfTsKIAkJMDc4NDYzNDIx
NDVCMTUxQTAwQTU4REYxIC8qIEpTVHJhY2tFdmVudC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwNzg0NjM0MDE0NUIxNTFBMDBBNThERjEgLyogSlNU
cmFja0V2ZW50LmNwcCAqLzsgfTsKIAkJMDc4NDYzNDMxNDVCMTUxQTAwQTU4REYxIC8qIEpTVHJh
Y2tFdmVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MDc4NDYzNDExNDVCMTUxQTAwQTU4REYxIC8qIEpTVHJhY2tFdmVudC5oICovOyB9OwogCQkwNzg0
NjM4NTE0NUIxQjhFMDBBNThERjEgLyogSlNUcmFja0N1c3RvbS5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDc4NDYzODQxNDVCMUI4RTAwQTU4REYxIC8q
IEpTVHJhY2tDdXN0b20uaCAqLzsgfTsKQEAgLTI3Niw2ICszMDUsMTIgQEAKIAkJMDdDNTlCNjAx
N0Y0QjIwODAwMEZCQ0JCIC8qIEpTVmlkZW9TdHJlYW1UcmFjay5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDdDNTlCNUMxN0Y0QjIwODAwMEZCQ0JCIC8q
IEpTVmlkZW9TdHJlYW1UcmFjay5oICovOyB9OwogCQkwN0M1OUI2MzE3RjREMUJGMDAwRkJDQkIg
LyogTW9ja01lZGlhU3RyZWFtQ2VudGVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDA3QzU5QjYxMTdGNENGODcwMDBGQkNCQiAvKiBNb2NrTWVkaWFT
dHJlYW1DZW50ZXIuY3BwICovOyB9OwogCQkwN0M1OUI2NDE3RjREMUM0MDAwRkJDQkIgLyogTW9j
a01lZGlhU3RyZWFtQ2VudGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAwN0M1OUI2MjE3RjRDRjg3MDAwRkJDQkIgLyogTW9ja01lZGlhU3RyZWFtQ2Vu
dGVyLmggKi87IH07CisJCTA3QzU5QjY4MTdGNzg0QkEwMDBGQkNCQiAvKiBNZWRpYVNvdXJjZVN0
YXRlcy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAw
N0M1OUI2NTE3Rjc4NEJBMDAwRkJDQkIgLyogTWVkaWFTb3VyY2VTdGF0ZXMuY3BwICovOyB9Owor
CQkwN0M1OUI2OTE3Rjc4NEJBMDAwRkJDQkIgLyogTWVkaWFTb3VyY2VTdGF0ZXMuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3QzU5QjY2MTdGNzg0QkEw
MDBGQkNCQiAvKiBNZWRpYVNvdXJjZVN0YXRlcy5oICovOyB9OworCQkwN0M1OUI2RTE3Rjc5NEY2
MDAwRkJDQkIgLyogSlNNZWRpYVNvdXJjZVN0YXRlc0N1c3RvbS5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwN0M1OUI2RDE3Rjc5NEY2MDAwRkJDQkIg
LyogSlNNZWRpYVNvdXJjZVN0YXRlc0N1c3RvbS5jcHAgKi87IH07CisJCTA3QzU5QjcxMTdGNzlD
N0MwMDBGQkNCQiAvKiBKU01lZGlhU291cmNlU3RhdGVzLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3QzU5QjZGMTdGNzlDN0MwMDBGQkNCQiAvKiBK
U01lZGlhU291cmNlU3RhdGVzLmNwcCAqLzsgfTsKKwkJMDdDNTlCNzIxN0Y3OUM3QzAwMEZCQ0JC
IC8qIEpTTWVkaWFTb3VyY2VTdGF0ZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDA3QzU5QjcwMTdGNzlDN0MwMDBGQkNCQiAvKiBKU01lZGlhU291cmNl
U3RhdGVzLmggKi87IH07CisJCTA3QzU5Qjc2MTdGN0QwREIwMDBGQkNCQiAvKiBDYXBhYmlsaXR5
UmFuZ2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3
QzU5Qjc0MTdGN0QwOUQwMDBGQkNCQiAvKiBDYXBhYmlsaXR5UmFuZ2UuaCAqLzsgfTsKIAkJMDdD
RTc3RDUxNjcxMkE2QTAwQzU1QTQ3IC8qIEluYmFuZFRleHRUcmFja1ByaXZhdGVDbGllbnQuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3Q0U3N0Q0MTY3
MTJBNkEwMEM1NUE0NyAvKiBJbmJhbmRUZXh0VHJhY2tQcml2YXRlQ2xpZW50LmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMDdEQzVGRDQxN0QzRUVF
OTAwOTlGODkwIC8qIEpTUlRDU3RhdHNSZXNwb25zZUN1c3RvbS5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwN0RDNUZEMzE3RDNFRUU5MDA5OUY4OTAg
LyogSlNSVENTdGF0c1Jlc3BvbnNlQ3VzdG9tLmNwcCAqLzsgfTsKIAkJMDdFMTE2QjExNDg5QzlB
MTAwRUM1QUNFIC8qIEpTVGV4dFRyYWNrQ3VzdG9tLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3RTExNkIwMTQ4OUM5QTEwMEVDNUFDRSAvKiBKU1Rl
eHRUcmFja0N1c3RvbS5jcHAgKi87IH07CkBAIC02NDE0LDYgKzY0NDksMzUgQEAKIAkJMDcwMzM0
RDYxNDU5RkZENTAwOEQ4RDQ1IC8qIFRyYWNrQmFzZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBUcmFja0Jhc2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDcw
MzM0RDgxNDVBMDA2RjAwOEQ4RDQ1IC8qIFRyYWNrQmFzZS5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBUcmFja0Jhc2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQkwNzAzMzRFODE0NUExRjM1MDA4RDhENDUgLyogSlNUcmFja0N1c3RvbS5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU1RyYWNrQ3VzdG9tLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMDcwNTg0RkIxN0Y5RDZERjAwNUYyQkNCIC8qIE1l
ZGlhU3RyZWFtU291cmNlQ2FwYWJpbGl0aWVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IE1lZGlhU3RyZWFtU291cmNlQ2FwYWJpbGl0aWVzLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCTA3MDU4NEZFMTdGOUYwNUUwMDVGMkJDQiAvKiBDYXBhYmlsaXR5UmFuZ2Uu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ2FwYWJpbGl0eVJhbmdl
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMDcwNTg1MDAxN0ZBMTBEMDAwNUYy
QkNCIC8qIEpTQWxsVmlkZW9DYXBhYmlsaXRpZXMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gSlNBbGxWaWRlb0NhcGFiaWxpdGllcy5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTA3MDU4NTAxMTdGQTEwRDAwMDVGMkJDQiAvKiBKU0FsbFZpZGVvQ2Fw
YWJpbGl0aWVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTQWxsVmlkZW9D
YXBhYmlsaXRpZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMDcwNTg1MDUxN0ZB
NDY4OTAwNUYyQkNCIC8qIEFsbEF1ZGlvQ2FwYWJpbGl0aWVzLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IEFsbEF1ZGlvQ2FwYWJpbGl0aWVzLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCTA3MDU4NTA2MTdGQTQ2ODkwMDVGMkJDQiAvKiBBbGxBdWRpb0NhcGFiaWxp
dGllcy5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gQWxsQXVkaW9DYXBhYmlsaXRpZXMuaWRs
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwNzA1ODUwQTE3RkE0ODI3MDA1RjJCQ0Ig
LyogTWVkaWFTdHJlYW1DYXBhYmlsaXRpZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gTWVkaWFTdHJlYW1DYXBhYmlsaXRpZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJMDcwNTg1MEUxN0ZBNkZCMTAwNUYyQkNCIC8qIE1lZGlhU3RyZWFtQ2FwYWJpbGl0aWVz
LmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBNZWRpYVN0cmVhbUNhcGFiaWxpdGllcy5pZGw7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTA3MDU4NTEwMTdGQTcxMDcwMDVGMkJDQiAv
KiBKU01lZGlhU3RyZWFtQ2FwYWJpbGl0aWVzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IEpTTWVkaWFTdHJlYW1DYXBhYmlsaXRpZXMuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQkwNzA1ODUxMTE3RkE3MTA3MDA1RjJCQ0IgLyogSlNNZWRpYVN0cmVh
bUNhcGFiaWxpdGllcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU01lZGlh
U3RyZWFtQ2FwYWJpbGl0aWVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTA3MDU4
NTE0MTdGQjBFMkMwMDVGMkJDQiAvKiBNZWRpYVN0cmVhbUNhcGFiaWxpdGllcy5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBNZWRpYVN0cmVhbUNhcGFiaWxpdGllcy5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTA3MDU4NTE2MTdGQjQwRTkwMDVGMkJD
QiAvKiBKU01lZGlhU3RyZWFtQ2FwYWJpbGl0aWVzQ3VzdG9tLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTTWVkaWFTdHJlYW1DYXBhYmlsaXRpZXNDdXN0b20uY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwNzA1ODUxODE3RkI0NEI0MDA1RjJCQ0Ig
LyogSlNBbGxBdWRpb0NhcGFiaWxpdGllcy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBKU0FsbEF1ZGlvQ2FwYWJpbGl0aWVzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJMDcwNTg1MTkxN0ZCNDRCNDAwNUYyQkNCIC8qIEpTQWxsQXVkaW9DYXBhYmls
aXRpZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNBbGxBdWRpb0NhcGFi
aWxpdGllcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwNzA1ODUxQzE3RkRCMjND
MDA1RjJCQ0IgLyogTWVkaWFUcmFja0NvbnN0cmFpbnRzLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBNZWRpYVRyYWNrQ29u
c3RyYWludHMuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwNzA1ODUxRDE3RkRD
MTQwMDA1RjJCQ0IgLyogTWVkaWFUcmFja0NvbnN0cmFpbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gTWVkaWFUcmFja0NvbnN0cmFpbnQuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJMDcwNTg1MUUxN0ZEQzE0MDAwNUYyQkNCIC8qIE1lZGlhVHJhY2tDb25zdHJh
aW50LmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBNZWRpYVRyYWNrQ29uc3RyYWludC5pZGw7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTA3MDU4NTFGMTdGREMxNDAwMDVGMkJDQiAv
KiBNZWRpYVRyYWNrQ29uc3RyYWludHMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gTWVkaWFUcmFja0NvbnN0cmFpbnRzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJMDcwNTg1MjAxN0ZEQzE0MDAwNUYyQkNCIC8qIE1lZGlhVHJhY2tDb25zdHJhaW50
cy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNZWRpYVRyYWNrQ29uc3RyYWlu
dHMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMDcwNTg1MjYxN0ZERTAyQjAwNUYy
QkNCIC8qIE1lZGlhVHJhY2tDb25zdHJhaW50U2V0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IE1lZGlhVHJhY2tDb25zdHJhaW50U2V0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTA3MDU4NTI3MTdGREUwMkIwMDVGMkJDQiAvKiBNZWRpYVRyYWNrQ29uc3RyYWlu
dFNldC5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gTWVkaWFUcmFja0NvbnN0cmFpbnRTZXQu
aWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwNzA1ODUyQjE3RkRFNkQ5MDA1RjJC
Q0IgLyogSlNNZWRpYVRyYWNrQ29uc3RyYWludC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBKU01lZGlhVHJhY2tDb25zdHJhaW50LmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJMDcwNTg1MkMxN0ZERTZEOTAwNUYyQkNCIC8qIEpTTWVkaWFUcmFja0Nv
bnN0cmFpbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNNZWRpYVRyYWNr
Q29uc3RyYWludC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwNzA1ODUyRDE3RkRF
NkQ5MDA1RjJCQ0IgLyogSlNNZWRpYVRyYWNrQ29uc3RyYWludHMuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNNZWRpYVRyYWNrQ29uc3RyYWludHMuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwNzA1ODUyRTE3RkRFNkQ5MDA1RjJCQ0IgLyogSlNN
ZWRpYVRyYWNrQ29uc3RyYWludHMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
SlNNZWRpYVRyYWNrQ29uc3RyYWludHMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
MDcwNTg1MkYxN0ZERTZEOTAwNUYyQkNCIC8qIEpTTWVkaWFUcmFja0NvbnN0cmFpbnRTZXQuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNNZWRpYVRyYWNrQ29uc3Ry
YWludFNldC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTA3MDU4NTMwMTdGREU2
RDkwMDVGMkJDQiAvKiBKU01lZGlhVHJhY2tDb25zdHJhaW50U2V0LmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IEpTTWVkaWFUcmFja0NvbnN0cmFpbnRTZXQuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMDcwNTg1MzcxN0ZFMDQ0RjAwNUYyQkNCIC8qIE1lZGlhVHJh
Y2tDb25zdHJhaW50U2V0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IE1lZGlhVHJhY2tDb25zdHJhaW50U2V0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJMDcwNTg1MzkxN0ZFMDc3MDAwNUYyQkNCIC8qIE1lZGlhVHJhY2tDb25zdHJhaW50LmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE1lZGlhVHJhY2tDb25zdHJhaW50
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDcwNzU2ODgxNDIyNjJENjAwNDE0
MTYxIC8qIEhUTUxUcmFja0VsZW1lbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gSFRNTFRyYWNrRWxlbWVudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTA3MDc1Njg5MTQyMjYyRDYwMDQxNDE2MSAvKiBIVE1MVHJhY2tFbGVtZW50LmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEhUTUxUcmFja0VsZW1lbnQuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDcwNzU2OEExNDIyNjJENjAwNDE0MTYxIC8qIEhUTUxUcmFj
a0VsZW1lbnQuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IEhUTUxUcmFja0VsZW1lbnQuaWRs
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNjU0OSw2ICs2NjEzLDkgQEAKIAkJMDcz
NUVFNjkwRjQwQzVFNDAwNEEyNjA0IC8qIE1lZGlhUGxheWVyUHJveHkuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gTWVkaWFQbGF5ZXJQcm94eS5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQkwNzM2N0RERDE3MkNBNjdGMDBEODYxQjkgLyogSW5iYW5kVGV4dFRyYWNr
UHJpdmF0ZUxlZ2FjeUFWRk9iakMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0g
SW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUxlZ2FjeUFWRk9iakMuaDsgcGF0aCA9IG9iamMvSW5iYW5k
VGV4dFRyYWNrUHJpdmF0ZUxlZ2FjeUFWRk9iakMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJMDczNjdEREUxNzJDQTY3RjAwRDg2MUI5IC8qIEluYmFuZFRleHRUcmFja1ByaXZhdGVM
ZWdhY3lBVkZPYmpDLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBuYW1lID0g
SW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUxlZ2FjeUFWRk9iakMubW07IHBhdGggPSBvYmpjL0luYmFu
ZFRleHRUcmFja1ByaXZhdGVMZWdhY3lBVkZPYmpDLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQkwNzNBQjRCMDE3RjhCQUNBMDA2RTBENkYgLyogQWxsVmlkZW9DYXBhYmlsaXRpZXMu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQWxsVmlkZW9DYXBhYmlsaXRpZXMu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMDczQUI0QjUxN0Y5MkVDRjAwNkUwRDZG
IC8qIEpTQ2FwYWJpbGl0eVJhbmdlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IEpTQ2FwYWJpbGl0eVJhbmdlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJMDczQUI0QjYxN0Y5MkVDRjAwNkUwRDZGIC8qIEpTQ2FwYWJpbGl0eVJhbmdlLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTQ2FwYWJpbGl0eVJhbmdlLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA3M0JFMzNFMTdEMTdFMDEwMDJCRDQzMSAvKiBKU05hdmln
YXRvck1lZGlhU3RyZWFtLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IEpTTmF2aWdhdG9yTWVkaWFTdHJlYW0uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQkwNzNCRTMzRjE3RDE3RTAxMDAyQkQ0MzEgLyogSlNOYXZpZ2F0b3JNZWRpYVN0cmVhbS5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU05hdmlnYXRvck1lZGlhU3RyZWFtLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA3M0JFMzQyMTdEMTdFN0EwMDJCRDQzMSAv
KiBKU05hdmlnYXRvclVzZXJNZWRpYUVycm9yLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IEpTTmF2aWdhdG9yVXNlck1lZGlhRXJyb3IuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwpAQCAtNjU3NSw2ICs2NjQyLDggQEAKIAkJMDc2OTcwODUxNDYzQUQ4NzAw
RjUwMkNGIC8qIFRleHRUcmFja0xpc3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gVGV4dFRyYWNrTGlzdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwNzZGMEQw
OTEyQjgxOTI3MDBDMjZBQTQgLyogTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE1lZGlhUGxheWVyUHJpdmF0ZUFW
Rm91bmRhdGlvbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA3NkYwRDBBMTJC
ODE5MjcwMEMyNkFBNCAvKiBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb24uaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9u
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTA3ODMyMjgyMTgwMTNFRDcwMDk5OUUw
QyAvKiBNZWRpYVN0cmVhbUF1ZGlvU291cmNlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IE1lZGlhU3RyZWFtQXVkaW9Tb3VyY2UuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQkwNzgzMjI4MzE4MDEzRUQ4MDA5OTlFMEMgLyogTWVkaWFTdHJlYW1BdWRp
b1NvdXJjZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNZWRpYVN0cmVhbUF1
ZGlvU291cmNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA3ODQ2MzQwMTQ1QjE1
MUEwMEE1OERGMSAvKiBKU1RyYWNrRXZlbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gSlNUcmFja0V2ZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJMDc4NDYzNDExNDVCMTUxQTAwQTU4REYxIC8qIEpTVHJhY2tFdmVudC5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBKU1RyYWNrRXZlbnQuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJMDc4NDYzODQxNDVCMUI4RTAwQTU4REYxIC8qIEpTVHJhY2tDdXN0b20uaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNUcmFja0N1c3RvbS5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwpAQCAtNjYzOSw2ICs2NzA4LDE1IEBACiAJCTA3QzU5QjVDMTdG
NEIyMDgwMDBGQkNCQiAvKiBKU1ZpZGVvU3RyZWFtVHJhY2suaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gSlNWaWRlb1N0cmVhbVRyYWNrLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTA3QzU5QjYxMTdGNENGODcwMDBGQkNCQiAvKiBNb2NrTWVkaWFTdHJlYW1DZW50
ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gTW9ja01lZGlhU3Ry
ZWFtQ2VudGVyLmNwcDsgcGF0aCA9IG1vY2svTW9ja01lZGlhU3RyZWFtQ2VudGVyLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDdDNTlCNjIxN0Y0Q0Y4NzAwMEZCQ0JCIC8qIE1v
Y2tNZWRpYVN0cmVhbUNlbnRlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBN
b2NrTWVkaWFTdHJlYW1DZW50ZXIuaDsgcGF0aCA9IG1vY2svTW9ja01lZGlhU3RyZWFtQ2VudGVy
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTA3QzU5QjY1MTdGNzg0QkEwMDBGQkNC
QiAvKiBNZWRpYVNvdXJjZVN0YXRlcy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBNZWRpYVNvdXJjZVN0YXRlcy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCTA3QzU5QjY2MTdGNzg0QkEwMDBGQkNCQiAvKiBNZWRpYVNvdXJjZVN0YXRlcy5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNZWRpYVNvdXJjZVN0YXRlcy5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQkwN0M1OUI2NzE3Rjc4NEJBMDAwRkJDQkIgLyogTWVkaWFT
b3VyY2VTdGF0ZXMuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IE1lZGlhU291cmNlU3RhdGVz
LmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMDdDNTlCNkQxN0Y3OTRGNjAwMEZC
Q0JCIC8qIEpTTWVkaWFTb3VyY2VTdGF0ZXNDdXN0b20uY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gSlNNZWRpYVNvdXJjZVN0YXRlc0N1c3RvbS5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTA3QzU5QjZGMTdGNzlDN0MwMDBGQkNCQiAvKiBKU01lZGlh
U291cmNlU3RhdGVzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpT
TWVkaWFTb3VyY2VTdGF0ZXMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwN0M1
OUI3MDE3Rjc5QzdDMDAwRkJDQkIgLyogSlNNZWRpYVNvdXJjZVN0YXRlcy5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBKU01lZGlhU291cmNlU3RhdGVzLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCTA3QzU5QjczMTdGN0QwOUQwMDBGQkNCQiAvKiBBbGxWaWRlb0Nh
cGFiaWxpdGllcy5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gQWxsVmlkZW9DYXBhYmlsaXRp
ZXMuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwN0M1OUI3NDE3RjdEMDlEMDAw
RkJDQkIgLyogQ2FwYWJpbGl0eVJhbmdlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IENhcGFiaWxpdHlSYW5nZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwN0M1
OUI3NTE3RjdEMDlEMDAwRkJDQkIgLyogQ2FwYWJpbGl0eVJhbmdlLmlkbCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRl
eHQ7IHBhdGggPSBDYXBhYmlsaXR5UmFuZ2UuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQkwN0NFNzdENDE2NzEyQTZBMDBDNTVBNDcgLyogSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUNs
aWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbmJhbmRUZXh0VHJhY2tQ
cml2YXRlQ2xpZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA3REM1RkQzMTdE
M0VFRTkwMDk5Rjg5MCAvKiBKU1JUQ1N0YXRzUmVzcG9uc2VDdXN0b20uY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNSVENTdGF0c1Jlc3BvbnNlQ3VzdG9tLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDdFMTE2QjAxNDg5QzlBMTAwRUM1QUNFIC8q
IEpTVGV4dFRyYWNrQ3VzdG9tLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IEpTVGV4dFRyYWNrQ3VzdG9tLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAg
LTEzMjA5LDEyICsxMzI4NywzNCBAQAogCQkwNzIyMUI0NjE3Q0VDMzI3MDA4NDhFNTEgLyogbWVk
aWFzdHJlYW0gKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAorCQkJ
CTA3MDU4NTM5MTdGRTA3NzAwMDVGMkJDQiAvKiBNZWRpYVRyYWNrQ29uc3RyYWludC5jcHAgKi8s
CisJCQkJMDcwNTg1MzcxN0ZFMDQ0RjAwNUYyQkNCIC8qIE1lZGlhVHJhY2tDb25zdHJhaW50U2V0
LmNwcCAqLywKKwkJCQkwNzA1ODUyNjE3RkRFMDJCMDA1RjJCQ0IgLyogTWVkaWFUcmFja0NvbnN0
cmFpbnRTZXQuaCAqLywKKwkJCQkwNzA1ODUyNzE3RkRFMDJCMDA1RjJCQ0IgLyogTWVkaWFUcmFj
a0NvbnN0cmFpbnRTZXQuaWRsICovLAorCQkJCTA3MDU4NTFEMTdGREMxNDAwMDVGMkJDQiAvKiBN
ZWRpYVRyYWNrQ29uc3RyYWludC5oICovLAorCQkJCTA3MDU4NTFFMTdGREMxNDAwMDVGMkJDQiAv
KiBNZWRpYVRyYWNrQ29uc3RyYWludC5pZGwgKi8sCisJCQkJMDcwNTg1MUYxN0ZEQzE0MDAwNUYy
QkNCIC8qIE1lZGlhVHJhY2tDb25zdHJhaW50cy5jcHAgKi8sCisJCQkJMDcwNTg1MjAxN0ZEQzE0
MDAwNUYyQkNCIC8qIE1lZGlhVHJhY2tDb25zdHJhaW50cy5oICovLAorCQkJCTA3MDU4NTFDMTdG
REIyM0MwMDVGMkJDQiAvKiBNZWRpYVRyYWNrQ29uc3RyYWludHMuaWRsICovLAorCQkJCTA3MDU4
NTA1MTdGQTQ2ODkwMDVGMkJDQiAvKiBBbGxBdWRpb0NhcGFiaWxpdGllcy5oICovLAorCQkJCTA3
MDU4NTA2MTdGQTQ2ODkwMDVGMkJDQiAvKiBBbGxBdWRpb0NhcGFiaWxpdGllcy5pZGwgKi8sCisJ
CQkJMDcwNTg0RkUxN0Y5RjA1RTAwNUYyQkNCIC8qIENhcGFiaWxpdHlSYW5nZS5jcHAgKi8sCisJ
CQkJMDczQUI0QjAxN0Y4QkFDQTAwNkUwRDZGIC8qIEFsbFZpZGVvQ2FwYWJpbGl0aWVzLmggKi8s
CisJCQkJMDdDNTlCNzMxN0Y3RDA5RDAwMEZCQ0JCIC8qIEFsbFZpZGVvQ2FwYWJpbGl0aWVzLmlk
bCAqLywKKwkJCQkwN0M1OUI3NDE3RjdEMDlEMDAwRkJDQkIgLyogQ2FwYWJpbGl0eVJhbmdlLmgg
Ki8sCisJCQkJMDdDNTlCNzUxN0Y3RDA5RDAwMEZCQ0JCIC8qIENhcGFiaWxpdHlSYW5nZS5pZGwg
Ki8sCisJCQkJMDdDNTlCNjUxN0Y3ODRCQTAwMEZCQ0JCIC8qIE1lZGlhU291cmNlU3RhdGVzLmNw
cCAqLywKKwkJCQkwN0M1OUI2NjE3Rjc4NEJBMDAwRkJDQkIgLyogTWVkaWFTb3VyY2VTdGF0ZXMu
aCAqLywKKwkJCQkwN0M1OUI2NzE3Rjc4NEJBMDAwRkJDQkIgLyogTWVkaWFTb3VyY2VTdGF0ZXMu
aWRsICovLAogCQkJCTA3QzU5QjREMTdGNEFDMTUwMDBGQkNCQiAvKiBBdWRpb1N0cmVhbVRyYWNr
LmNwcCAqLywKIAkJCQkwN0M1OUI0RTE3RjRBQzE1MDAwRkJDQkIgLyogQXVkaW9TdHJlYW1UcmFj
ay5oICovLAogCQkJCTA3QzU5QjRGMTdGNEFDMTUwMDBGQkNCQiAvKiBBdWRpb1N0cmVhbVRyYWNr
LmlkbCAqLywKIAkJCQkwN0M1OUI1MDE3RjRBQzE1MDAwRkJDQkIgLyogVmlkZW9TdHJlYW1UcmFj
ay5jcHAgKi8sCiAJCQkJMDdDNTlCNTExN0Y0QUMxNTAwMEZCQ0JCIC8qIFZpZGVvU3RyZWFtVHJh
Y2suaCAqLywKIAkJCQkwN0M1OUI1MjE3RjRBQzE1MDAwRkJDQkIgLyogVmlkZW9TdHJlYW1UcmFj
ay5pZGwgKi8sCisJCQkJMDcwNTg1MTQxN0ZCMEUyQzAwNUYyQkNCIC8qIE1lZGlhU3RyZWFtQ2Fw
YWJpbGl0aWVzLmNwcCAqLywKKwkJCQkwNzA1ODUwRTE3RkE2RkIxMDA1RjJCQ0IgLyogTWVkaWFT
dHJlYW1DYXBhYmlsaXRpZXMuaWRsICovLAorCQkJCTA3MDU4NTBBMTdGQTQ4MjcwMDVGMkJDQiAv
KiBNZWRpYVN0cmVhbUNhcGFiaWxpdGllcy5oICovLAogCQkJCTA3MjIxQjRBMTdDRUMzMjcwMDg0
OEU1MSAvKiBNZWRpYUNvbnN0cmFpbnRzSW1wbC5jcHAgKi8sCiAJCQkJMDcyMjFCNEIxN0NFQzMy
NzAwODQ4RTUxIC8qIE1lZGlhQ29uc3RyYWludHNJbXBsLmggKi8sCiAJCQkJMDcyMjFCNEMxN0NF
QzMyNzAwODQ4RTUxIC8qIE1lZGlhU3RyZWFtLmNwcCAqLywKQEAgLTEzMzEzLDYgKzEzNDEzLDcg
QEAKIAkJCQkwNzIyMUI5RDE3Q0YwQUQ0MDA4NDhFNTEgLyogTWVkaWFTdHJlYW1EZXNjcmlwdG9y
LmggKi8sCiAJCQkJMDcyMjFCOUUxN0NGMEFENDAwODQ4RTUxIC8qIE1lZGlhU3RyZWFtU291cmNl
LmNwcCAqLywKIAkJCQkwNzIyMUI5RjE3Q0YwQUQ0MDA4NDhFNTEgLyogTWVkaWFTdHJlYW1Tb3Vy
Y2UuaCAqLywKKwkJCQkwNzA1ODRGQjE3RjlENkRGMDA1RjJCQ0IgLyogTWVkaWFTdHJlYW1Tb3Vy
Y2VDYXBhYmlsaXRpZXMuaCAqLywKIAkJCQkwNzYzMDZFMjE3RTIyQTQzMDA1QTdDNEUgLyogTWVk
aWFTdHJlYW1UcmFja1NvdXJjZXNSZXF1ZXN0Q2xpZW50LmggKi8sCiAJCQkJMDcyMjFCQTExN0NG
MEFENDAwODQ4RTUxIC8qIFJUQ0NvbmZpZ3VyYXRpb24uaCAqLywKIAkJCQkwNzIyMUJBMjE3Q0Yw
QUQ0MDA4NDhFNTEgLyogUlRDRGF0YUNoYW5uZWxIYW5kbGVyLmggKi8sCkBAIC0xMzM2MCw2ICsx
MzQ2MSwxNiBAQAogCQkwN0NGRDk5MzE3RDAxNDA1MDAxQzRGRkMgLyogTWVkaWFTdHJlYW0gKi8g
PSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAorCQkJCTA3MDU4NTJCMTdG
REU2RDkwMDVGMkJDQiAvKiBKU01lZGlhVHJhY2tDb25zdHJhaW50LmNwcCAqLywKKwkJCQkwNzA1
ODUyQzE3RkRFNkQ5MDA1RjJCQ0IgLyogSlNNZWRpYVRyYWNrQ29uc3RyYWludC5oICovLAorCQkJ
CTA3MDU4NTJEMTdGREU2RDkwMDVGMkJDQiAvKiBKU01lZGlhVHJhY2tDb25zdHJhaW50cy5jcHAg
Ki8sCisJCQkJMDcwNTg1MkUxN0ZERTZEOTAwNUYyQkNCIC8qIEpTTWVkaWFUcmFja0NvbnN0cmFp
bnRzLmggKi8sCisJCQkJMDcwNTg1MkYxN0ZERTZEOTAwNUYyQkNCIC8qIEpTTWVkaWFUcmFja0Nv
bnN0cmFpbnRTZXQuY3BwICovLAorCQkJCTA3MDU4NTMwMTdGREU2RDkwMDVGMkJDQiAvKiBKU01l
ZGlhVHJhY2tDb25zdHJhaW50U2V0LmggKi8sCisJCQkJMDcwNTg1MTAxN0ZBNzEwNzAwNUYyQkNC
IC8qIEpTTWVkaWFTdHJlYW1DYXBhYmlsaXRpZXMuY3BwICovLAorCQkJCTA3MDU4NTExMTdGQTcx
MDcwMDVGMkJDQiAvKiBKU01lZGlhU3RyZWFtQ2FwYWJpbGl0aWVzLmggKi8sCisJCQkJMDdDNTlC
NkYxN0Y3OUM3QzAwMEZCQ0JCIC8qIEpTTWVkaWFTb3VyY2VTdGF0ZXMuY3BwICovLAorCQkJCTA3
QzU5QjcwMTdGNzlDN0MwMDBGQkNCQiAvKiBKU01lZGlhU291cmNlU3RhdGVzLmggKi8sCiAJCQkJ
MDdDNTlCNTkxN0Y0QjIwODAwMEZCQ0JCIC8qIEpTQXVkaW9TdHJlYW1UcmFjay5jcHAgKi8sCiAJ
CQkJMDdDNTlCNUExN0Y0QjIwODAwMEZCQ0JCIC8qIEpTQXVkaW9TdHJlYW1UcmFjay5oICovLAog
CQkJCTA3QzU5QjVCMTdGNEIyMDgwMDBGQkNCQiAvKiBKU1ZpZGVvU3RyZWFtVHJhY2suY3BwICov
LApAQCAtMTkxNzksNiArMTkyOTAsOCBAQAogCQlCQzRFREVGNzBDMDhGNDE0MDA3RURENDkgLyog
Q3VzdG9tICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJCQkw
NzA1ODUxNjE3RkI0MEU5MDA1RjJCQ0IgLyogSlNNZWRpYVN0cmVhbUNhcGFiaWxpdGllc0N1c3Rv
bS5jcHAgKi8sCisJCQkJMDdDNTlCNkQxN0Y3OTRGNjAwMEZCQ0JCIC8qIEpTTWVkaWFTb3VyY2VT
dGF0ZXNDdXN0b20uY3BwICovLAogCQkJCUJDMkVENkJCMEM2QkQyRjAwMDkyMEJGRiAvKiBKU0F0
dHJDdXN0b20uY3BwICovLAogCQkJCUZERUFBQUVGMTJCMDJFRTQwMERDRjMzQiAvKiBKU0F1ZGlv
QnVmZmVyU291cmNlTm9kZUN1c3RvbS5jcHAgKi8sCiAJCQkJRkRFQUFBRjAxMkIwMkVFNDAwRENG
MzNCIC8qIEpTQXVkaW9Db250ZXh0Q3VzdG9tLmNwcCAqLywKQEAgLTE5Nzc1LDYgKzE5ODg4LDEy
IEBACiAJCUNENjFGRTdCMTc5NENBMDIwMDQxMDFFQiAvKiBNZWRpYVNvdXJjZSAqLyA9IHsKIAkJ
CWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCisJCQkJMDcwNTg1MTgxN0ZCNDRCNDAw
NUYyQkNCIC8qIEpTQWxsQXVkaW9DYXBhYmlsaXRpZXMuY3BwICovLAorCQkJCTA3MDU4NTE5MTdG
QjQ0QjQwMDVGMkJDQiAvKiBKU0FsbEF1ZGlvQ2FwYWJpbGl0aWVzLmggKi8sCisJCQkJMDcwNTg1
MDAxN0ZBMTBEMDAwNUYyQkNCIC8qIEpTQWxsVmlkZW9DYXBhYmlsaXRpZXMuY3BwICovLAorCQkJ
CTA3MDU4NTAxMTdGQTEwRDAwMDVGMkJDQiAvKiBKU0FsbFZpZGVvQ2FwYWJpbGl0aWVzLmggKi8s
CisJCQkJMDczQUI0QjUxN0Y5MkVDRjAwNkUwRDZGIC8qIEpTQ2FwYWJpbGl0eVJhbmdlLmNwcCAq
LywKKwkJCQkwNzNBQjRCNjE3RjkyRUNGMDA2RTBENkYgLyogSlNDYXBhYmlsaXR5UmFuZ2UuaCAq
LywKIAkJCQlDRDlERTE3MjE3QUFDNzRDMDBFQTM4NkQgLyogSlNNZWRpYVNvdXJjZS5jcHAgKi8s
CiAJCQkJQ0Q5REUxNzMxN0FBQzc0QzAwRUEzODZEIC8qIEpTTWVkaWFTb3VyY2UuaCAqLywKIAkJ
CQlDRDlERTE3NjE3QUFDNzVCMDBFQTM4NkQgLyogSlNTb3VyY2VCdWZmZXIuY3BwICovLApAQCAt
MjEwMjIsNiArMjExNDEsOCBAQAogCQlGRDMxNUZBMjEyQjAyNUIxMDBDMUEzNTkgLyogd2ViYXVk
aW8gKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAorCQkJCTA3ODMy
MjgyMTgwMTNFRDcwMDk5OUUwQyAvKiBNZWRpYVN0cmVhbUF1ZGlvU291cmNlLmNwcCAqLywKKwkJ
CQkwNzgzMjI4MzE4MDEzRUQ4MDA5OTlFMEMgLyogTWVkaWFTdHJlYW1BdWRpb1NvdXJjZS5oICov
LAogCQkJCUZEMzE1RkYzMTJCMDI2NzYwMEMxQTM1OSAvKiBBbmFseXNlck5vZGUuY3BwICovLAog
CQkJCUZEMzE1RkY0MTJCMDI2NzYwMEMxQTM1OSAvKiBBbmFseXNlck5vZGUuaCAqLywKIAkJCQlG
RDMxNUZGNTEyQjAyNjc2MDBDMUEzNTkgLyogQW5hbHlzZXJOb2RlLmlkbCAqLywKQEAgLTIxNDE5
LDYgKzIxNTQwLDcgQEAKIAkJCQlGRDMxNjBCRjEyQjAyNzJBMDBDMUEzNTkgLyogQXVkaW9GaWxl
UmVhZGVyTWFjLmggaW4gSGVhZGVycyAqLywKIAkJCQlGREUyRDU1QjE1OUU2NkVCMDBEQ0NDRjgg
LyogQXVkaW9JT0NhbGxiYWNrLmggaW4gSGVhZGVycyAqLywKIAkJCQlGRDMxNjAxMDEyQjAyNjc2
MDBDMUEzNTkgLyogQXVkaW9MaXN0ZW5lci5oIGluIEhlYWRlcnMgKi8sCisJCQkJMDcwNTg1MjQx
N0ZEQzE0MDAwNUYyQkNCIC8qIE1lZGlhVHJhY2tDb25zdHJhaW50cy5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJRkQzMTYwMTMxMkIwMjY3NjAwQzFBMzU5IC8qIEF1ZGlvTm9kZS5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJRkQzMTYwMTYxMkIwMjY3NjAwQzFBMzU5IC8qIEF1ZGlvTm9kZUlucHV0LmggaW4g
SGVhZGVycyAqLywKIAkJCQlGRDMxNjAxODEyQjAyNjc2MDBDMUEzNTkgLyogQXVkaW9Ob2RlT3V0
cHV0LmggaW4gSGVhZGVycyAqLywKQEAgLTIxNTgxLDYgKzIxNzAzLDcgQEAKIAkJCQlCQzBCMzZB
NTBDRDNDNjdDMDBBQzdFQjUgLyogQ29uc29sZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMkRGMkU5
RDUxNjZFMzk3NTAwMzVCRUYyIC8qIENvbnNvbGVBUElUeXBlcy5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJNDFGMDYxOEUwRjVGMDY5ODAwQTA3RUFDIC8qIENvbnNvbGVNZXNzYWdlLmggaW4gSGVhZGVy
cyAqLywKKwkJCQkwNzNBQjRCMzE3RjhCQUNBMDA2RTBENkYgLyogQWxsVmlkZW9DYXBhYmlsaXRp
ZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDRTU2NDRFMTM3QTM0RDYwMDdEMjkzNCAvKiBDb25z
b2xlVHlwZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCUE4MTg3MjFDMDk3N0QzQzAwMDU4MjZEOSAv
KiBDb250YWluZXJOb2RlLmggaW4gSGVhZGVycyAqLywKIAkJCQlFMUExNDcwODExMTAyQjE1MDBF
RUMwRjMgLyogQ29udGFpbmVyTm9kZUFsZ29yaXRobXMuaCBpbiBIZWFkZXJzICovLApAQCAtMjE3
MzcsNiArMjE4NjAsNyBAQAogCQkJCUE1NzMyQjBCMTM2QTE2MUQwMDVDOEQ3QyAvKiBEYXRlQ29t
cG9uZW50cy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRjU1QjNEQjYxMjUxRjEyRDAwM0VGMjY5IC8q
IERhdGVJbnB1dFR5cGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTQ1M0VCNjM3MTU5QzU3MDQwMDAw
MUJCNyAvKiBEYXRlVGltZUZvcm1hdC5oIGluIEhlYWRlcnMgKi8sCisJCQkJMDcwNTg1MDMxN0ZB
MTBEMDAwNUYyQkNCIC8qIEpTQWxsVmlkZW9DYXBhYmlsaXRpZXMuaCBpbiBIZWFkZXJzICovLAog
CQkJCUY1NUIzREI4MTI1MUYxMkQwMDNFRjI2OSAvKiBEYXRlVGltZUlucHV0VHlwZS5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJRjU1QjNEQkExMjUxRjEyRDAwM0VGMjY5IC8qIERhdGVUaW1lTG9jYWxJ
bnB1dFR5cGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTQ1RkVBNUQwMTU2RERFOEMwMDY1NDEwMSAv
KiBEZWNpbWFsLmggaW4gSGVhZGVycyAqLywKQEAgLTIxNzUwLDYgKzIxODc0LDcgQEAKIAkJCQlG
RDMxNjAyRTEyQjAyNjc2MDBDMUEzNTkgLyogRGVsYXlOb2RlLmggaW4gSGVhZGVycyAqLywKIAkJ
CQlGRDMxNjAzMTEyQjAyNjc2MDBDMUEzNTkgLyogRGVsYXlQcm9jZXNzb3IuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTFDNEM4RjY2MEFEODY1NUQwMDk0NzVDRSAvKiBEZWxldGVCdXR0b24uaCBpbiBI
ZWFkZXJzICovLAorCQkJCTA3MDU4NTMyMTdGREU2RDkwMDVGMkJDQiAvKiBKU01lZGlhVHJhY2tD
b25zdHJhaW50LmggaW4gSGVhZGVycyAqLywKIAkJCQkxQzRDOEYwMjBBRDg1RDg3MDA5NDc1Q0Ug
LyogRGVsZXRlQnV0dG9uQ29udHJvbGxlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTMzMDlEREYw
OTlFNjQ5MjAwNTZFNTgxIC8qIERlbGV0ZUZyb21UZXh0Tm9kZUNvbW1hbmQuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTA3QzU5QjY0MTdGNEQxQzQwMDBGQkNCQiAvKiBNb2NrTWVkaWFTdHJlYW1DZW50
ZXIuaCBpbiBIZWFkZXJzICovLApAQCAtMjE3OTEsNiArMjE5MTYsNyBAQAogCQkJCUNFMDU3RkE2
MTIyMDczMTEwMEE0NzZENSAvKiBEb2N1bWVudE1hcmtlckNvbnRyb2xsZXIuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTE0OTQ3RkZFMTJGODBDRDIwMEEwRjYzMSAvKiBEb2N1bWVudE9yZGVyZWRNYXAu
aCBpbiBIZWFkZXJzICovLAogCQkJCUJDQ0ZCQUU4MEI1MTUyRUQwMDAxRjFENyAvKiBEb2N1bWVu
dFBhcnNlci5oIGluIEhlYWRlcnMgKi8sCisJCQkJMDcwNTg1MjkxN0ZERTAyQzAwNUYyQkNCIC8q
IE1lZGlhVHJhY2tDb25zdHJhaW50U2V0LmggaW4gSGVhZGVycyAqLywKIAkJCQk0QTRGNDhBQTE2
QjBERkMwMDBFREJCMjkgLyogRG9jdW1lbnRSdWxlU2V0cy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
QUQ2RTcxQUQxNjY4ODk5RDAwMzIwQzEzIC8qIERvY3VtZW50U2hhcmVkT2JqZWN0UG9vbC5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJRTQ3RTI3NjUxNjAzNkVEMjAwRUUyQUZCIC8qIERvY3VtZW50U3R5
bGVTaGVldENvbGxlY3Rpb24uaCBpbiBIZWFkZXJzICovLApAQCAtMjE5NDUsNiArMjIwNzEsNyBA
QAogCQkJCTg1OTkyRUJBMEFBNTA2OTUwMEFDMDc4NSAvKiBET01IVE1MSGVhZEVsZW1lbnQuaCBp
biBIZWFkZXJzICovLAogCQkJCTg1RTcxMUFEMEFDNUQ1MzUwMDUzMjcwRiAvKiBET01IVE1MSGVh
ZEVsZW1lbnRJbnRlcm5hbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODUxODNCNDQwQUE2OTI2MTAw
RjE5RkEzIC8qIERPTUhUTUxIZWFkaW5nRWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCisJCQkJMDcw
NTg1MzYxN0ZERTZEOTAwNUYyQkNCIC8qIEpTTWVkaWFUcmFja0NvbnN0cmFpbnRTZXQuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTg1RTcxMUFFMEFDNUQ1MzUwMDUzMjcwRiAvKiBET01IVE1MSGVhZGlu
Z0VsZW1lbnRJbnRlcm5hbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODVFQ0JFRjEwQUE3NjI2OTAw
NTQ0RjBCIC8qIERPTUhUTUxIUkVsZW1lbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTg1RTcxMUFG
MEFDNUQ1MzUwMDUzMjcwRiAvKiBET01IVE1MSFJFbGVtZW50SW50ZXJuYWwuaCBpbiBIZWFkZXJz
ICovLApAQCAtMjIwNTcsNiArMjIxODQsNyBAQAogCQkJCTg1Q0E5NkVBMEE5NjI0RTkwMDY5MEND
RiAvKiBET01Ob3RhdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODVFNzExRDQwQUM1RDUzNTAw
NTMyNzBGIC8qIERPTU5vdGF0aW9uSW50ZXJuYWwuaCBpbiBIZWFkZXJzICovLAogCQkJCTg1NkM4
QUU0MEE5MTI2NDkwMDVDNjg3QiAvKiBET01PYmplY3QuaCBpbiBIZWFkZXJzICovLAorCQkJCTA3
MDU4NTEzMTdGQTcxMDcwMDVGMkJDQiAvKiBKU01lZGlhU3RyZWFtQ2FwYWJpbGl0aWVzLmggaW4g
SGVhZGVycyAqLywKIAkJCQlCQzUzREE2MDExNDMxNDFBMDAwRDgxN0UgLyogRE9NT2JqZWN0SGFz
aFRhYmxlTWFwLmggaW4gSGVhZGVycyAqLywKIAkJCQk4NUM3RjVEMDBBQUZCOEQ5MDA0MDE0REQg
LyogRE9NT3ZlcmZsb3dFdmVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODU5ODlEQ0YwQUNDOEJC
RDAwQTBCQzUxIC8qIERPTU92ZXJmbG93RXZlbnRJbnRlcm5hbC5oIGluIEhlYWRlcnMgKi8sCkBA
IC0yMjUwMyw2ICsyMjYzMSw3IEBACiAJCQkJQkNDRDc0REMwQTRDOEQzNTAwNUZEQTZEIC8qIEhU
TUxWaWV3U291cmNlRG9jdW1lbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTk3N0IzODdBMTIyODgz
RTkwMEI4MUZGOCAvKiBIVE1MVmlld1NvdXJjZVBhcnNlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
NTE0Qzc2NzEwQ0U5MjNBMTAwN0VGM0NEIC8qIEhUVFBIZWFkZXJNYXAuaCBpbiBIZWFkZXJzICov
LAorCQkJCTA3M0FCNEI4MTdGOTJFQ0YwMDZFMEQ2RiAvKiBKU0NhcGFiaWxpdHlSYW5nZS5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJNTE0Qzc2NzMwQ0U5MjNBMTAwN0VGM0NEIC8qIEhUVFBQYXJzZXJz
LmggaW4gSGVhZGVycyAqLywKIAkJCQkzNzVDRDIzMjExOUQ0M0M4MDBBMkE4NTkgLyogSHlwaGVu
YXRpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCUIyNzUzNTZFMEIwNTM4MTQwMDJDRTY0RiAvKiBJ
Y29uLmggaW4gSGVhZGVycyAqLywKQEAgLTIyNjA4LDYgKzIyNzM3LDcgQEAKIAkJCQk3QTI0NTg3
QzEwMjFFQUY0MDAwQTAwQUEgLyogSW5zcGVjdG9yRE9NQWdlbnQuaCBpbiBIZWFkZXJzICovLAog
CQkJCUYzRDRDNDc5MTJFMDc2NjMwMDNEQTE1MCAvKiBJbnNwZWN0b3JET01EZWJ1Z2dlckFnZW50
LmggaW4gSGVhZGVycyAqLywKIAkJCQk3QTc0RUNCQjEwMTgzOUE2MDBCRjkzOUUgLyogSW5zcGVj
dG9yRE9NU3RvcmFnZUFnZW50LmggaW4gSGVhZGVycyAqLywKKwkJCQkwNzA1ODUzNDE3RkRFNkQ5
MDA1RjJCQ0IgLyogSlNNZWRpYVRyYWNrQ29uc3RyYWludHMuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTU3OERBMjBFMTUyMEVCOEMwMDYxNDFDMSAvKiBJbnNwZWN0b3JGcm9udGVuZC5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJMjI3Nzc3NjAxMzQ1REVBOTAwOEVBNDU1IC8qIEluc3BlY3RvckZyb250ZW5k
Q2hhbm5lbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRjM0NEM3MTQxMTI1QjgyQzAwRjI2RUVFIC8q
IEluc3BlY3RvckZyb250ZW5kQ2xpZW50LmggaW4gSGVhZGVycyAqLywKQEAgLTIzMDcyLDYgKzIz
MjAyLDcgQEAKIAkJCQlCMkZBM0REQjBBQjc1QTZGMDAwRTVBQzQgLyogSlNTVkdQYXRoU2VnTGlz
dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjJGQTNEREQwQUI3NUE2RjAwMEU1QUM0IC8qIEpTU1ZH
UGF0aFNlZ01vdmV0b0Ficy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjJGQTNEREYwQUI3NUE2RjAw
MEU1QUM0IC8qIEpTU1ZHUGF0aFNlZ01vdmV0b1JlbC5oIGluIEhlYWRlcnMgKi8sCisJCQkJMDcw
NTg1MjExN0ZEQzE0MDAwNUYyQkNCIC8qIE1lZGlhVHJhY2tDb25zdHJhaW50LmggaW4gSGVhZGVy
cyAqLywKIAkJCQlCMkZBM0RFMTBBQjc1QTZGMDAwRTVBQzQgLyogSlNTVkdQYXR0ZXJuRWxlbWVu
dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODU0MkE3OTUwQUU1Qzk0MTAwREY1OERGIC8qIEpTU1ZH
UG9pbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUIyRkEzREUzMEFCNzVBNkYwMDBFNUFDNCAvKiBK
U1NWR1BvaW50TGlzdC5oIGluIEhlYWRlcnMgKi8sCkBAIC0yMzU1OCw2ICsyMzY4OSw3IEBACiAJ
CQkJNDM5MDQ2RTIxMkRBMjVFODAwQUY4MEEyIC8qIFJlbmRlck1hdGhNTFJvb3QuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTQzOTA0NkU0MTJEQTI1RTgwMEFGODBBMiAvKiBSZW5kZXJNYXRoTUxSb3cu
aCBpbiBIZWFkZXJzICovLAogCQkJCTQzOTA0NkU2MTJEQTI1RTgwMEFGODBBMiAvKiBSZW5kZXJN
YXRoTUxTcXVhcmVSb290LmggaW4gSGVhZGVycyAqLywKKwkJCQkwNzgzMjI4NTE4MDEzRUQ4MDA5
OTlFMEMgLyogTWVkaWFTdHJlYW1BdWRpb1NvdXJjZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDM5
MDQ2RTgxMkRBMjVFODAwQUY4MEEyIC8qIFJlbmRlck1hdGhNTFNjcmlwdHMuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTQzOTA0NkVBMTJEQTI1RTgwMEFGODBBMiAvKiBSZW5kZXJNYXRoTUxVbmRlck92
ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUU0QzI3OTU5MENGOTc0MTkwMEU5N0I5OCAvKiBSZW5k
ZXJNZWRpYS5oIGluIEhlYWRlcnMgKi8sCkBAIC0yMzU3OCw2ICsyMzcxMCw3IEBACiAJCQkJQTg3
MURGRTMwQTE1Mzc2QjAwQjEyQTY4IC8qIFJlbmRlclJlcGxhY2VkLmggaW4gSGVhZGVycyAqLywK
IAkJCQlCQ0E4NDZENzBEQzY3QTM1MDAyNkMzMDkgLyogUmVuZGVyUmVwbGljYS5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJMTQ3OUZBRUUxMDlBRTM3NTAwREVENjU1IC8qIFJlbmRlclJ1YnkuaCBpbiBI
ZWFkZXJzICovLAorCQkJCTA3MDU4NTA4MTdGQTQ2ODkwMDVGMkJDQiAvKiBBbGxBdWRpb0NhcGFi
aWxpdGllcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMTQ3OUZBRjAxMDlBRTM3NTAwREVENjU1IC8q
IFJlbmRlclJ1YnlCYXNlLmggaW4gSGVhZGVycyAqLywKIAkJCQkxNDc5RkFGMjEwOUFFMzc1MDBE
RUQ2NTUgLyogUmVuZGVyUnVieVJ1bi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMTQ3OUZBRjQxMDlB
RTM3NTAwREVENjU1IC8qIFJlbmRlclJ1YnlUZXh0LmggaW4gSGVhZGVycyAqLywKQEAgLTIzNjYw
LDYgKzIzNzkzLDcgQEAKIAkJCQk5NzNFMzI1NzEwODgzQjdDMDA1QkM0OTMgLyogUmVzb3VyY2VM
b2FkTm90aWZpZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUU0Mjk1RkE0MTJCMDYxNEUwMEQxQUNF
MCAvKiBSZXNvdXJjZUxvYWRQcmlvcml0eS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRDBDRTU4Rjkx
MjVFNENDMjAwRjNGMTk5IC8qIFJlc291cmNlTG9hZFNjaGVkdWxlci5oIGluIEhlYWRlcnMgKi8s
CisJCQkJMDdDNTlCNzYxN0Y3RDBEQjAwMEZCQ0JCIC8qIENhcGFiaWxpdHlSYW5nZS5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJOEE4MUJGODUxMURDRkQ5MDAwREEyQjk4IC8qIFJlc291cmNlTG9hZFRp
bWluZy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJN0VFNjg0NkQxMkQyNkUzODAwRTc5NDE1IC8qIFJl
c291cmNlUmVxdWVzdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTE0Qzc2N0QwQ0U5MjNBMTAwN0VG
M0NEIC8qIFJlc291cmNlUmVxdWVzdEJhc2UuaCBpbiBIZWFkZXJzICovLApAQCAtMjM5NjksNiAr
MjQxMDMsNyBAQAogCQkJCTA3OEUwOTM4MTdEMTZCMkMwMDQyMEFBMSAvKiBNZWRpYVN0cmVhbVNv
dXJjZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjIyMjc5QjEwRDAwQkYyMjAwNzFCNzgyIC8qIFNW
R0Rlc2NFbGVtZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlCNUI3QTE3MTE3QzEwQUMwMDBFNEFB
MEEgLyogRWxlbWVudERhdGEuaCBpbiBIZWFkZXJzICovLAorCQkJCTA3MDU4NTBCMTdGQTQ4Mjcw
MDVGMkJDQiAvKiBNZWRpYVN0cmVhbUNhcGFiaWxpdGllcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
QjIyMjc5QjQwRDAwQkYyMjAwNzFCNzgyIC8qIFNWR0RvY3VtZW50LmggaW4gSGVhZGVycyAqLywK
IAkJCQlCMjhDNkEyODBEMDBDNDQ4MDAzMzRBQTQgLyogU1ZHRG9jdW1lbnRFeHRlbnNpb25zLmgg
aW4gSGVhZGVycyAqLywKIAkJCQlCMjIyNzlCNzBEMDBCRjIyMDA3MUI3ODIgLyogU1ZHRWxlbWVu
dC5oIGluIEhlYWRlcnMgKi8sCkBAIC0yNDA0Myw2ICsyNDE3OCw3IEBACiAJCQkJNzEzNDQ5NkUx
NDY5NDFCMzAwNzIwMzEyIC8qIFNWR0xlbmd0aENvbnRleHQuaCBpbiBIZWFkZXJzICovLAogCQkJ
CUIyMjI3QTM2MEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdMZW5ndGhMaXN0LmggaW4gSGVhZGVycyAq
LywKIAkJCQlCMjIyN0EzOTBEMDBCRjIyMDA3MUI3ODIgLyogU1ZHTGluZWFyR3JhZGllbnRFbGVt
ZW50LmggaW4gSGVhZGVycyAqLywKKwkJCQkwN0M1OUI2OTE3Rjc4NEJBMDAwRkJDQkIgLyogTWVk
aWFTb3VyY2VTdGF0ZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCUIyMjI3QTNDMEQwMEJGMjIwMDcx
Qjc4MiAvKiBTVkdMaW5lRWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMDgxMDc2NDQxMjgy
ODU1NjAwN0M2M0JBIC8qIFNWR0xpc3RQcm9wZXJ0eS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMDg4
QTBFMDkxMjZFRjFEQjAwOTc4RjdBIC8qIFNWR0xpc3RQcm9wZXJ0eVRlYXJPZmYuaCBpbiBIZWFk
ZXJzICovLApAQCAtMjQyMzIsNiArMjQzNjgsNyBAQAogCQkJCUU0NDYxM0IwMENENjMzMTAwMEZB
REE3NSAvKiBUaW1lUmFuZ2VzLmggaW4gSGVhZGVycyAqLywKIAkJCQk0OUU5MTJBRTBFRkFDOTA2
MDA5RDBDQUYgLyogVGltaW5nRnVuY3Rpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCTA3MDMzNEQ3
MTQ1OUZGRDUwMDhEOEQ0NSAvKiBUcmFja0Jhc2UuaCBpbiBIZWFkZXJzICovLAorCQkJCTA3MDU4
NEZEMTdGOUQ2REYwMDVGMkJDQiAvKiBNZWRpYVN0cmVhbVNvdXJjZUNhcGFiaWxpdGllcy5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJQkU4OEUwQzIxNzE1Q0UyNjAwNjU4RDk4IC8qIFRyYWNrTGlzdEJh
c2UuaCBpbiBIZWFkZXJzICovLAogCQkJCUNEM0E0OTVGMTdBOUQwMUIwMDI3NEU0MiAvKiBNZWRp
YVNvdXJjZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDlFOTExQzQwRUY4NkQ0NzAwOUQwQ0FGIC8q
IFRyYW5zZm9ybWF0aW9uTWF0cml4LmggaW4gSGVhZGVycyAqLywKQEAgLTI0Mjg1LDYgKzI0NDIy
LDcgQEAKIAkJCQlCRTg4RTBFMjE3MTVEMkEyMDA2NThEOTggLyogVmlkZW9UcmFja0xpc3QuaCBp
biBIZWFkZXJzICovLAogCQkJCUU0QzkxQTBFMTgwMjM0MzEwMEExN0Y2RCAvKiBUZXh0UGFpbnRT
dHlsZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkVGMjlFRUMxNzE1REQwOTAwQzRCNEM5IC8qIFZp
ZGVvVHJhY2tQcml2YXRlLmggaW4gSGVhZGVycyAqLywKKwkJCQkwNzA1ODUxQjE3RkI0NEI0MDA1
RjJCQ0IgLyogSlNBbGxBdWRpb0NhcGFiaWxpdGllcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQ0VG
NDE4Q0YxMTc5Njc4QzAwOUQxMTJDIC8qIFZpZXdwb3J0QXJndW1lbnRzLmggaW4gSGVhZGVycyAq
LywKIAkJCQkzRkZGRjlBRTE1OUQ5QjA2MDAyMEJCRDUgLyogVmlld3BvcnRTdHlsZVJlc29sdmVy
LmggaW4gSGVhZGVycyAqLywKIAkJCQk5MzMwOUUyMDA5OUU2NDkyMDA1NkU1ODEgLyogVmlzaWJs
ZVBvc2l0aW9uLmggaW4gSGVhZGVycyAqLywKQEAgLTI0NDc0LDYgKzI0NjEyLDcgQEAKIAkJCQk4
M0MxRDQyODE3OEQ1QUI0MDAxNDFFNjggLyogU1ZHUGF0aFNlZ0N1cnZldG9DdWJpY1JlbC5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJODNDMUQ0MjkxNzhENUFCNDAwMTQxRTY4IC8qIFNWR1BhdGhTZWdD
dXJ2ZXRvQ3ViaWNTbW9vdGhBYnMuaCBpbiBIZWFkZXJzICovLAogCQkJCTgzQzFENDJBMTc4RDVB
QjQwMDE0MUU2OCAvKiBTVkdQYXRoU2VnQ3VydmV0b0N1YmljU21vb3RoUmVsLmggaW4gSGVhZGVy
cyAqLywKKwkJCQkwN0M1OUI3MjE3Rjc5QzdDMDAwRkJDQkIgLyogSlNNZWRpYVNvdXJjZVN0YXRl
cy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODNDMUQ0MkIxNzhENUFCNDAwMTQxRTY4IC8qIFNWR1Bh
dGhTZWdDdXJ2ZXRvUXVhZHJhdGljQWJzLmggaW4gSGVhZGVycyAqLywKIAkJCQk4M0MxRDQyQzE3
OEQ1QUI1MDAxNDFFNjggLyogU1ZHUGF0aFNlZ0N1cnZldG9RdWFkcmF0aWNSZWwuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTgzQzFENDJEMTc4RDVBQjUwMDE0MUU2OCAvKiBTVkdQYXRoU2VnQ3VydmV0
b1F1YWRyYXRpY1Ntb290aEFicy5oIGluIEhlYWRlcnMgKi8sCkBAIC0yNDk1OSw2ICsyNTA5OCw3
IEBACiAJCQkJRkQzMTYwMjQxMkIwMjY3NjAwQzFBMzU5IC8qIEJpcXVhZERTUEtlcm5lbC5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQlGREM1NEYwNDEzOTlCMERBMDA4RDkxMTcgLyogQmlxdWFkRmls
dGVyTm9kZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlGRDMxNjAyNjEyQjAyNjc2MDBDMUEzNTkg
LyogQmlxdWFkUHJvY2Vzc29yLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTA3MDU4NEZGMTdGOUYw
NUUwMDVGMkJDQiAvKiBDYXBhYmlsaXR5UmFuZ2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTg5
OTQzMjkwQjQyMzM4ODAwRDdDODAyIC8qIEJpdG1hcEltYWdlLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCTM3N0EzQTkwMTVFRkNFOUIwMDU5RjVDNyAvKiBCaXRtYXBJbWFnZUNHLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTk3NkQ2Qzc4MTIyQjhBM0QwMDFGRDFGNyAvKiBCbG9iLmNwcCBpbiBTb3Vy
Y2VzICovLApAQCAtMjUyNjIsNiArMjU0MDIsNyBAQAogCQkJCTg1Q0E5NzVEMEE5NjJFNTQwMDY5
MENDRiAvKiBET01Eb2N1bWVudFR5cGUubW0gaW4gU291cmNlcyAqLywKIAkJCQk4NTE4RENFQTBB
OUNDODBEMDA5MUI3QTYgLyogRE9NRE9NSW1wbGVtZW50YXRpb24ubW0gaW4gU291cmNlcyAqLywK
IAkJCQk1MkNDQTlFOTE1RTNGNjRDMDA1M0M3N0YgLyogRE9NRE9NTmFtZWRGbG93Q29sbGVjdGlv
bi5tbSBpbiBTb3VyY2VzICovLAorCQkJCTA3ODMyMjg0MTgwMTNFRDgwMDk5OUUwQyAvKiBNZWRp
YVN0cmVhbUF1ZGlvU291cmNlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTJEOUEyNDczMTVCOUMy
RDEwMEQzNDUyNyAvKiBET01ET01TZWN1cml0eVBvbGljeS5tbSBpbiBTb3VyY2VzICovLAogCQkJ
CTc2OTQ1NjVDMTIxNERCNjMwMDA3Q0JBRSAvKiBET01ET01Ub2tlbkxpc3QubW0gaW4gU291cmNl
cyAqLywKIAkJCQk3QUFCQTI1OTE0QkM2MTMzMDBBQTlBMTEgLyogRE9NRWRpdG9yLmNwcCBpbiBT
b3VyY2VzICovLApAQCAtMjUyODIsNiArMjU0MjMsNyBAQAogCQkJCTg1OUE5QzQ4MEFBNUUzQkQw
MEI2OTRCMiAvKiBET01IVE1MQmFzZUVsZW1lbnQubW0gaW4gU291cmNlcyAqLywKIAkJCQkwNzhF
MDkwNDE3RDE0Q0VFMDA0MjBBQTEgLyogTmF2aWdhdG9yTWVkaWFTdHJlYW0uY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJODVFQ0JFRUUwQUE3NjI2OTAwNTQ0RjBCIC8qIERPTUhUTUxCYXNlRm9udEVs
ZW1lbnQubW0gaW4gU291cmNlcyAqLywKKwkJCQkwN0M1OUI2ODE3Rjc4NEJBMDAwRkJDQkIgLyog
TWVkaWFTb3VyY2VTdGF0ZXMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJODU5QTlDNEEwQUE1RTNC
RDAwQjY5NEIyIC8qIERPTUhUTUxCb2R5RWxlbWVudC5tbSBpbiBTb3VyY2VzICovLAogCQkJCTg1
MTgzQjQzMEFBNjkyNjEwMEYxOUZBMyAvKiBET01IVE1MQlJFbGVtZW50Lm1tIGluIFNvdXJjZXMg
Ki8sCiAJCQkJODVCQTRDREUwQUE2ODYxQjAwODgwNTJEIC8qIERPTUhUTUxCdXR0b25FbGVtZW50
Lm1tIGluIFNvdXJjZXMgKi8sCkBAIC0yNTI4OSw2ICsyNTQzMSw3IEBACiAJCQkJODVERjJGOEYw
QUEzQzg4MTAwQUQ2NEM1IC8qIERPTUhUTUxDb2xsZWN0aW9uLm1tIGluIFNvdXJjZXMgKi8sCiAJ
CQkJMDc4RTA5MDAxN0QxNENFRTAwNDIwQUExIC8qIE1lZGlhU3RyZWFtRXZlbnQuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJRjVDMDQxRTQwRkZDQTk2RDAwODM5RDRBIC8qIERPTUhUTUxEYXRhTGlz
dEVsZW1lbnQubW0gaW4gU291cmNlcyAqLywKKwkJCQkwNzA1ODUyMzE3RkRDMTQwMDA1RjJCQ0Ig
LyogTWVkaWFUcmFja0NvbnN0cmFpbnRzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUQzNTlENzky
MTI5Q0EzQzAwMDA2RTVEMiAvKiBET01IVE1MRGV0YWlsc0VsZW1lbnQubW0gaW4gU291cmNlcyAq
LywKIAkJCQk4NUJBNEQwQzBBQTY4ODY4MDA4ODA1MkQgLyogRE9NSFRNTERpcmVjdG9yeUVsZW1l
bnQubW0gaW4gU291cmNlcyAqLywKIAkJCQk4NUJBNEQwRTBBQTY4ODY4MDA4ODA1MkQgLyogRE9N
SFRNTERpdkVsZW1lbnQubW0gaW4gU291cmNlcyAqLywKQEAgLTI1NzQwLDYgKzI1ODgzLDcgQEAK
IAkJCQlCMjc1MzU4RTBCMDUzQTY2MDAyQ0U2NEYgLyogSWNvbk1hYy5tbSBpbiBTb3VyY2VzICov
LAogCQkJCTUxRTFFQ0MwMEM5MUM5MDQwMERDMjU1QiAvKiBJY29uUmVjb3JkLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTQ1MDk5QzQxMTM3MEE3ODAwMDU4RDUxMyAvKiBJY29uVVJMLmNwcCBpbiBT
b3VyY2VzICovLAorCQkJCTA3MDU4NTE1MTdGQjBFRUEwMDVGMkJDQiAvKiBNZWRpYVN0cmVhbUNh
cGFiaWxpdGllcy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlDNTg1QTY2MjExRDRGQUM1MDA0QzNF
NEIgLyogSURCQmluZGluZ1V0aWxpdGllcy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk5NzEyQTVD
NTE1MDA0RURBMDA0OEFGMTAgLyogSURCRGF0YWJhc2VDYWxsYmFja3NJbXBsLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTk3MTJBNUM5MTUwMDRFREEwMDQ4QUYxMCAvKiBJREJEYXRhYmFzZUV4Y2Vw
dGlvbi5jcHAgaW4gU291cmNlcyAqLywKQEAgLTI1NzQ3LDYgKzI1ODkxLDcgQEAKIAkJCQk5NzEy
QTVFRjE1MDA0RURBMDA0OEFGMTAgLyogSURCUGVuZGluZ1RyYW5zYWN0aW9uTW9uaXRvci5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQk5NzEyQTVGRTE1MDA0RURBMDA0OEFGMTAgLyogSURCVmVyc2lv
bkNoYW5nZUV2ZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTFBNzFENTdCMEYzMzgxOTAwMEY5
Q0U0RSAvKiBJZGVudGlmaWVyUmVwLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTA3MDU4NTMxMTdG
REU2RDkwMDVGMkJDQiAvKiBKU01lZGlhVHJhY2tDb25zdHJhaW50LmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCTU5MTNBMjQxMTNENDlFQkEwMEY1QjA1QyAvKiBJZGVudGlmaWVyc0ZhY3RvcnkuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJQzNDRjE3QTQxNUIwMDYzRjAwMjc2RDM5IC8qIElkVGFyZ2V0
T2JzZXJ2ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQzNDRjE3QTYxNUIwMDYzRjAwMjc2RDM5
IC8qIElkVGFyZ2V0T2JzZXJ2ZXJSZWdpc3RyeS5jcHAgaW4gU291cmNlcyAqLywKQEAgLTI1OTE2
LDYgKzI2MDYxLDcgQEAKIAkJCQk1MUVDOTI2NTBDRTkwREQ0MDBGOTAzMDggLyogSlNDdXN0b21T
UUxTdGF0ZW1lbnRFcnJvckNhbGxiYWNrLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUUxMEI5M0Mz
MEI3M0MyOTEwMDNFRDg5MCAvKiBKU0N1c3RvbVhQYXRoTlNSZXNvbHZlci5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQkxQUU4MkY4RjBDQUFGQTlEMDAyMjM3QUUgLyogSlNEYXRhYmFzZS5jcHAgaW4g
U291cmNlcyAqLywKKwkJCQkwN0M1OUI2RTE3Rjc5NEY2MDAwRkJDQkIgLyogSlNNZWRpYVNvdXJj
ZVN0YXRlc0N1c3RvbS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCNTlERDY5QTExOTAyOUU1MDA3
RTk2ODQgLyogSlNEYXRhYmFzZUNhbGxiYWNrLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUI1OENF
QjZBMTE5MTM2MDcwMDJBNjc5MCAvKiBKU0RhdGFiYXNlU3luYy5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQk0MTYyQTQ1NzEwMTE0NjQ3MDBERkYzRUQgLyogSlNEZWRpY2F0ZWRXb3JrZXJHbG9iYWxT
Y29wZS5jcHAgaW4gU291cmNlcyAqLywKQEAgLTI2MDQ0LDYgKzI2MTkwLDcgQEAKIAkJCQkxQUUy
QUEyRTBBMUNEQUI0MDBCNDJCMjUgLyogSlNIVE1MSGVhZGluZ0VsZW1lbnQuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJMUFFMkFBMzAwQTFDREFCNDAwQjQyQjI1IC8qIEpTSFRNTEhSRWxlbWVudC5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQkxQTg1QjE4RjBBMUIxOEEyMDBEOEM4N0MgLyogSlNIVE1M
SHRtbEVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMDcwNTg1MzgxN0ZFMDQ0RjAwNUYy
QkNCIC8qIE1lZGlhVHJhY2tDb25zdHJhaW50U2V0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUJD
NDkxOEM4MEJGRUEwNTAwMDlENjMxNiAvKiBKU0hUTUxJRnJhbWVFbGVtZW50LmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTFBRTJBQTk3MEExQ0REMkQwMEI0MkIyNSAvKiBKU0hUTUxJbWFnZUVsZW1l
bnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTgwRTdFOTgwQTFBODNFMzAwN0ZCOEM1IC8qIEpT
SFRNTElucHV0RWxlbWVudC5jcHAgaW4gU291cmNlcyAqLywKQEAgLTI2MTYwLDYgKzI2MzA3LDcg
QEAKIAkJCQk3RTQ2RjZGQTE2MjdBMkNBMDAwNjIyMjMgLyogSlNPRVNFbGVtZW50SW5kZXhVaW50
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTkwMDE3ODgwMTJFMDM3MDcwMDY0ODQ2MiAvKiBKU09F
U1N0YW5kYXJkRGVyaXZhdGl2ZXMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNkVCRjBFNzYxMkE5
ODY4ODAwREIxNzA5IC8qIEpTT0VTVGV4dHVyZUZsb2F0LmNwcCBpbiBTb3VyY2VzICovLAorCQkJ
CTA3MDU4NTNBMTdGRTA3NzAwMDVGMkJDQiAvKiBNZWRpYVRyYWNrQ29uc3RyYWludC5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQlBMzFDNEU1MjE2RTAyQjA4MDAyRjc5NTcgLyogSlNPRVNUZXh0dXJl
SGFsZkZsb2F0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTc3QTE3QUE2MTJGMjhCMkEwMDRFMDJG
NiAvKiBKU09FU1ZlcnRleEFycmF5T2JqZWN0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUZERjZC
QUY4MTM0QTRDOTgwMDgyMjkyMCAvKiBKU09mZmxpbmVBdWRpb0NvbXBsZXRpb25FdmVudC5jcHAg
aW4gU291cmNlcyAqLywKQEAgLTI2NTAyLDYgKzI2NjUwLDcgQEAKIAkJCQk5ODVCQjk2RDEzQTk0
MDU4MDA3QTBCNjkgLyogTGlua1JlbEF0dHJpYnV0ZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlC
QzdGQTYyMDBEMUYwQ0JEMDBEQjIyQTkgLyogTGl2ZU5vZGVMaXN0LmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCTA3OEUwOTEwMTdEMTRDRUUwMDQyMEFBMSAvKiBSVENTdGF0c1Jlc3BvbnNlLmNwcCBp
biBTb3VyY2VzICovLAorCQkJCTA3MDU4NTAyMTdGQTEwRDAwMDVGMkJDQiAvKiBKU0FsbFZpZGVv
Q2FwYWJpbGl0aWVzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTk3NTlFOTNFMTRFRjFDRjgwMDI2
QTJERCAvKiBMb2FkYWJsZVRleHRUcmFjay5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk2NTZEMzcz
MzBBREJBNURFMDBBNDU1NEQgLyogTG9hZGVyTlNVUkxFeHRyYXMubW0gaW4gU291cmNlcyAqLywK
IAkJCQk3RUU2ODQ2ODEyRDI2RTM4MDBFNzk0MTUgLyogTG9hZGVyUnVuTG9vcENGLmNwcCBpbiBT
b3VyY2VzICovLApAQCAtMjY1MTQsNiArMjY2NjMsNyBAQAogCQkJCUJDMjVCNTJBMTMxQzZEMzkw
MDE4MEUxMCAvKiBMb2NhbGl6ZWRTdHJpbmdzTWFjLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUJD
RTFDNDFDMEQ5ODI5ODEwMDNCMDJGMiAvKiBMb2NhdGlvbi5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQkwNzhFMDkwODE3RDE0Q0VFMDA0MjBBQTEgLyogUlRDRFRNRlRvbmVDaGFuZ2VFdmVudC5jcHAg
aW4gU291cmNlcyAqLywKKwkJCQkwNzA1ODUxQTE3RkI0NEI0MDA1RjJCQ0IgLyogSlNBbGxBdWRp
b0NhcGFiaWxpdGllcy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBODIzOUUwMDA5QjNDRjhBMDBC
NjA2NDEgLyogTG9nZ2luZy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxNDAyNjQ1RTBBRkRDMTlC
MDA1OTE5RTIgLyogTG9nZ2luZ01hYy5tbSBpbiBTb3VyY2VzICovLAogCQkJCTFBOEY2QkM1MERC
NTVDREMwMDFEQjc5NCAvKiBNYW5pZmVzdFBhcnNlci5jcHAgaW4gU291cmNlcyAqLywKQEAgLTI2
NTgwLDYgKzI2NzMwLDcgQEAKIAkJCQlENkUyNzZBRjE0NjM3NDU1MDAxRDI4MEEgLyogTXV0YXRp
b25PYnNlcnZlclJlZ2lzdHJhdGlvbi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlDNkYwOEZCQzE0
MzBGRThGMDA2ODU4NDkgLyogTXV0YXRpb25SZWNvcmQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
NTJCNkM5QzUxNUUzRjRERjAwNjkwQjA1IC8qIE5hbWVkRmxvd0NvbGxlY3Rpb24uY3BwIGluIFNv
dXJjZXMgKi8sCisJCQkJMDcwNTg1MzMxN0ZERTZEOTAwNUYyQkNCIC8qIEpTTWVkaWFUcmFja0Nv
bnN0cmFpbnRzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUJDRjM0QTM3MTFBMjMxQ0QwMEM3MTgw
NCAvKiBOYW1lZE5vZGVNYXAuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTgxODcyMjQwOTc3RDND
MDAwNTgyNkQ5IC8qIE5hbWVOb2RlTGlzdC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlFMTBCOUI2
RDBCNzQ3NTk5MDAzRUQ4OTAgLyogTmF0aXZlWFBhdGhOU1Jlc29sdmVyLmNwcCBpbiBTb3VyY2Vz
ICovLApAQCAtMjY4NDAsNiArMjY5OTEsNyBAQAogCQkJCTkzNEY3MTNFMEQ1QTZGMjgwMDAxOEQ2
OSAvKiBSZXNvdXJjZUVycm9yQmFzZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk3RUU2ODQ2QjEy
RDI2RTM4MDBFNzk0MTUgLyogUmVzb3VyY2VFcnJvckNGLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CTUxNEM3NjUwMENFOTIzNEUwMDdFRjNDRCAvKiBSZXNvdXJjZUVycm9yTWFjLm1tIGluIFNvdXJj
ZXMgKi8sCisJCQkJMDcwNTg1MTIxN0ZBNzEwNzAwNUYyQkNCIC8qIEpTTWVkaWFTdHJlYW1DYXBh
YmlsaXRpZXMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTE0Qzc2NzgwQ0U5MjNBMTAwN0VGM0NE
IC8qIFJlc291cmNlSGFuZGxlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTdFRTY4NDZDMTJEMjZF
MzgwMEU3OTQxNSAvKiBSZXNvdXJjZUhhbmRsZUNGTmV0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CUUxQkEwMDMxMTZGQjkyQUMwMEJBN0EzNSAvKiBSZXNvdXJjZUhhbmRsZUNsaWVudC5jcHAgaW4g
U291cmNlcyAqLywKQEAgLTI3MTQxLDYgKzI3MjkzLDcgQEAKIAkJCQlCMjIyNzlDNDBEMDBCRjIy
MDA3MUI3ODIgLyogU1ZHRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZC5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQlCMjIyNzlDNzBEMDBCRjIyMDA3MUI3ODIgLyogU1ZHRkVCbGVuZEVsZW1lbnQuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJQjIyMjc5Q0EwRDAwQkYyMjAwNzFCNzgyIC8qIFNWR0ZFQ29s
b3JNYXRyaXhFbGVtZW50LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTA3MDU4NTM1MTdGREU2RDkw
MDVGMkJDQiAvKiBKU01lZGlhVHJhY2tDb25zdHJhaW50U2V0LmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCUIyMjI3OUNEMEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdGRUNvbXBvbmVudFRyYW5zZmVyRWxl
bWVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCMjIyNzlEMDBEMDBCRjIyMDA3MUI3ODIgLyog
U1ZHRkVDb21wb3NpdGVFbGVtZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTE5MjEzMjc0MTFD
MEU2QkIwMDQ1NjIzOCAvKiBTVkdGRUNvbnZvbHZlTWF0cml4RWxlbWVudC5jcHAgaW4gU291cmNl
cyAqLywKQEAgLTI3MjAzLDYgKzI3MzU2LDcgQEAKIAkJCQlCMjIyN0EzQjBEMDBCRjIyMDA3MUI3
ODIgLyogU1ZHTGluZUVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQjIyMjdBNDAwRDAw
QkYyMjAwNzFCNzgyIC8qIFNWR0xvY2F0YWJsZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCMjIy
N0E0MzBEMDBCRjIyMDA3MUI3ODIgLyogU1ZHTWFya2VyRWxlbWVudC5jcHAgaW4gU291cmNlcyAq
LywKKwkJCQkwNzA1ODUxNzE3RkI0MEU5MDA1RjJCQ0IgLyogSlNNZWRpYVN0cmVhbUNhcGFiaWxp
dGllc0N1c3RvbS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCMjIyN0E0NjBEMDBCRjIyMDA3MUI3
ODIgLyogU1ZHTWFza0VsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQjIyMjdBNEEwRDAw
QkYyMjAwNzFCNzgyIC8qIFNWR01ldGFkYXRhRWxlbWVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQlCMkExRjJCMDBDRUYwQUJGMDA0NDJGNkEgLyogU1ZHTWlzc2luZ0dseXBoRWxlbWVudC5jcHAg
aW4gU291cmNlcyAqLywKQEAgLTI3MjY2LDYgKzI3NDIwLDcgQEAKIAkJCQlCMjIyN0FGMjBEMDBC
RjIyMDA3MUI3ODIgLyogU1ZHVmlld1NwZWMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJODQ4NTIy
OEExMTkwMTczQzAwNkVEQzdGIC8qIFNWR1ZLZXJuRWxlbWVudC5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQlCMjIyN0FGNTBEMDBCRjIyMDA3MUI3ODIgLyogU1ZHWm9vbUFuZFBhbi5jcHAgaW4gU291
cmNlcyAqLywKKwkJCQkwNzNBQjRCNzE3RjkyRUNGMDA2RTBENkYgLyogSlNDYXBhYmlsaXR5UmFu
Z2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQjJFNEVDOTcwRDAwQzIyQjAwNDMyNjQzIC8qIFNW
R1pvb21FdmVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlFMTgwODExMjE2RkNGNDJGMDBCODBE
MDcgLyogU3luY2hyb25vdXNMb2FkZXJDbGllbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRTE4
MDgxMTYxNkZDRjlDQjAwQjgwRDA3IC8qIFN5bmNocm9ub3VzTG9hZGVyQ2xpZW50Lm1tIGluIFNv
dXJjZXMgKi8sCkBAIC0yNzQ0Niw2ICsyNzYwMSw3IEBACiAJCQkJOTdBQUJEMUExNEZBMDlENTAw
NzQ1N0FFIC8qIFdlYlNvY2tldC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk5N0FBQkQxRDE0RkEw
OUQ1MDA3NDU3QUUgLyogV2ViU29ja2V0Q2hhbm5lbC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk0
QTM4QkY1MDE0RkUxQzA5MDA2MTI1MTIgLyogV2ViU29ja2V0RGVmbGF0ZUZyYW1lci5jcHAgaW4g
U291cmNlcyAqLywKKwkJCQkwN0M1OUI3MTE3Rjc5QzdDMDAwRkJDQkIgLyogSlNNZWRpYVNvdXJj
ZVN0YXRlcy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk5N0FBQkQyMDE0RkEwOUQ1MDA3NDU3QUUg
LyogV2ViU29ja2V0RGVmbGF0ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJOTdBQUJEMjIxNEZB
MDlENTAwNzQ1N0FFIC8qIFdlYlNvY2tldEV4dGVuc2lvbkRpc3BhdGNoZXIuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJNEE1QTJBREIxNjFFN0UwMDAwNTg4OUREIC8qIFdlYlNvY2tldEV4dGVuc2lv
blBhcnNlci5jcHAgaW4gU291cmNlcyAqLywKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTTWVkaWFTb3VyY2VTdGF0ZXNDdXN0b20uY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTTWVkaWFTb3VyY2VTdGF0ZXNDdXN0b20uY3BwCShyZXZpc2lv
biAwKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNNZWRpYVNvdXJjZVN0YXRlc0N1
c3RvbS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw4OCBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFT
IElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisg
KiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1
ZGUgImNvbmZpZy5oIgorCisjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKKworI2luY2x1ZGUgIkpT
TWVkaWFTb3VyY2VTdGF0ZXMuaCIKKworI2luY2x1ZGUgIk1lZGlhU291cmNlU3RhdGVzLmgiCisK
K3VzaW5nIG5hbWVzcGFjZSBKU0M7CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworSlNWYWx1ZSBK
U01lZGlhU291cmNlU3RhdGVzOjp3aWR0aChFeGVjU3RhdGUqKSBjb25zdAoreworICAgIGlmICgh
aW1wbCgpLT5oYXNWaWRlb1NvdXJjZSgpKQorICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsK
KworICAgIHJldHVybiBqc051bWJlcihpbXBsKCktPndpZHRoKCkpOworfQorCitKU1ZhbHVlIEpT
TWVkaWFTb3VyY2VTdGF0ZXM6OmhlaWdodChFeGVjU3RhdGUqKSBjb25zdAoreworICAgIGlmICgh
aW1wbCgpLT5oYXNWaWRlb1NvdXJjZSgpKQorICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsK
KyAgICAKKyAgICByZXR1cm4ganNOdW1iZXIoaW1wbCgpLT5oZWlnaHQoKSk7Cit9CisKK0pTVmFs
dWUgSlNNZWRpYVNvdXJjZVN0YXRlczo6ZnJhbWVSYXRlKEV4ZWNTdGF0ZSopIGNvbnN0Cit7Cisg
ICAgaWYgKCFpbXBsKCktPmhhc1ZpZGVvU291cmNlKCkpCisgICAgICAgIHJldHVybiBqc1VuZGVm
aW5lZCgpOworICAgIAorICAgIHJldHVybiBqc051bWJlcihpbXBsKCktPmZyYW1lUmF0ZSgpKTsK
K30KKworSlNWYWx1ZSBKU01lZGlhU291cmNlU3RhdGVzOjphc3BlY3RSYXRpbyhFeGVjU3RhdGUq
KSBjb25zdAoreworICAgIGlmICghaW1wbCgpLT5oYXNWaWRlb1NvdXJjZSgpKQorICAgICAgICBy
ZXR1cm4ganNVbmRlZmluZWQoKTsKKyAgICAKKyAgICByZXR1cm4ganNOdW1iZXIoaW1wbCgpLT5h
c3BlY3RSYXRpbygpKTsKK30KKworSlNWYWx1ZSBKU01lZGlhU291cmNlU3RhdGVzOjpmYWNpbmdN
b2RlKEV4ZWNTdGF0ZSogZXhlYykgY29uc3QKK3sKKyAgICBpZiAoIWltcGwoKS0+aGFzVmlkZW9T
b3VyY2UoKSkKKyAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CisKKyAgICByZXR1cm4ganNT
dHJpbmdXaXRoQ2FjaGUoZXhlYywgaW1wbCgpLT5mYWNpbmdNb2RlKCkpOworfQorCitKU1ZhbHVl
IEpTTWVkaWFTb3VyY2VTdGF0ZXM6OnZvbHVtZShFeGVjU3RhdGUqKSBjb25zdAoreworICAgIGlm
IChpbXBsKCktPmhhc1ZpZGVvU291cmNlKCkpCisgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgp
OworICAgIAorICAgIHJldHVybiBqc051bWJlcihpbXBsKCktPnZvbHVtZSgpKTsKK30KKworfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTTWVkaWFTdHJlYW1DYXBhYmlsaXRpZXNDdXN0b20uY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTWVkaWFTdHJlYW1DYXBhYmlsaXRpZXNDdXN0
b20uY3BwCShyZXZpc2lvbiAwKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNNZWRp
YVN0cmVhbUNhcGFiaWxpdGllc0N1c3RvbS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw1
MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuIAorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2lmIEVOQUJMRShNRURJQV9T
VFJFQU0pCisKKyNpbmNsdWRlICJKU01lZGlhU3RyZWFtQ2FwYWJpbGl0aWVzLmgiCisKKyNpbmNs
dWRlICJKU0FsbEF1ZGlvQ2FwYWJpbGl0aWVzLmgiCisjaW5jbHVkZSAiSlNBbGxWaWRlb0NhcGFi
aWxpdGllcy5oIgorI2luY2x1ZGUgIk1lZGlhU3RyZWFtQ2FwYWJpbGl0aWVzLmgiCisKK3VzaW5n
IG5hbWVzcGFjZSBKU0M7CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworSlNDOjpKU1ZhbHVlIHRv
SlMoSlNDOjpFeGVjU3RhdGUqIGV4ZWMsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IE1lZGlhU3RyZWFtQ2FwYWJpbGl0aWVzKiBvYmplY3QpCit7CisgICAgaWYgKCFvYmplY3QpCisg
ICAgICAgIHJldHVybiBqc051bGwoKTsKKworICAgIGlmIChvYmplY3QtPmhhc1ZpZGVvU291cmNl
KCkpCisgICAgICAgIHJldHVybiB3cmFwPEpTQWxsVmlkZW9DYXBhYmlsaXRpZXM+KGV4ZWMsIGds
b2JhbE9iamVjdCwgc3RhdGljX2Nhc3Q8QWxsVmlkZW9DYXBhYmlsaXRpZXMqPihvYmplY3QpKTsK
KworICAgIHJldHVybiB3cmFwPEpTQWxsQXVkaW9DYXBhYmlsaXRpZXM+KGV4ZWMsIGdsb2JhbE9i
amVjdCwgc3RhdGljX2Nhc3Q8QWxsQXVkaW9DYXBhYmlsaXRpZXMqPihvYmplY3QpKTsKK30KKwor
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKE1FRElBX1NUUkVBTSkK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9FdmVudE5hbWVzLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvZG9tL0V2ZW50TmFtZXMuaAkocmV2aXNpb24gMTU3MDE2KQorKysgU291cmNl
L1dlYkNvcmUvZG9tL0V2ZW50TmFtZXMuaAkod29ya2luZyBjb3B5KQpAQCAtMjM4LDYgKzIzOCw3
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICBtYWNybyhyZW1vdmVzdHJlYW0pIFwKICAgICBt
YWNybyhzaWduYWxpbmdzdGF0ZWNoYW5nZSkgXAogICAgIG1hY3JvKHJlbW92ZXRyYWNrKSBcCisg
ICAgbWFjcm8ob3ZlcmNvbnN0cmFpbmVkKSBcCiAgICAgbWFjcm8obXV0ZSkgXAogICAgIG1hY3Jv
KHVubXV0ZSkgXAogICAgIG1hY3JvKHN0YXJ0ZWQpIFwKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtQ2VudGVyLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbUNlbnRlci5jcHAJ
KHJldmlzaW9uIDE1NzAxNikKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFt
L01lZGlhU3RyZWFtQ2VudGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjcsMTEgKzY3LDYgQEAg
TWVkaWFTdHJlYW1DZW50ZXI6On5NZWRpYVN0cmVhbUNlbnRlcigpCiB7CiB9CiAKLXZvaWQgTWVk
aWFTdHJlYW1DZW50ZXI6OmVuZExvY2FsTWVkaWFTdHJlYW0oTWVkaWFTdHJlYW1EZXNjcmlwdG9y
KiBzdHJlYW1EZXNjcmlwdG9yKQotewotICAgIHN0cmVhbURlc2NyaXB0b3ItPnNldEVuZGVkKCk7
Ci19Ci0KIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEVOQUJMRShNRURJQV9T
VFJFQU0pCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYVN0
cmVhbUNlbnRlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlh
c3RyZWFtL01lZGlhU3RyZWFtQ2VudGVyLmgJKHJldmlzaW9uIDE1NzAxNikKKysrIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtQ2VudGVyLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTM0LDYgKzM0LDcgQEAKIAogI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCiAKKyNp
bmNsdWRlICJNZWRpYVN0cmVhbVNvdXJjZS5oIgogI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+
CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKQEAgLTQzLDkgKzQ0LDExIEBAIGNs
YXNzIE1lZGlhQ29uc3RyYWludHM7CiBjbGFzcyBNZWRpYVN0cmVhbUNyZWF0aW9uQ2xpZW50Owog
Y2xhc3MgTWVkaWFTdHJlYW1DcmVhdGlvbkNsaWVudDsKIGNsYXNzIE1lZGlhU3RyZWFtRGVzY3Jp
cHRvcjsKLWNsYXNzIE1lZGlhU3RyZWFtU291cmNlOworY2xhc3MgTWVkaWFTdHJlYW1Tb3VyY2VD
YXBhYmlsaXRpZXM7CiBjbGFzcyBNZWRpYVN0cmVhbVRyYWNrU291cmNlc1JlcXVlc3RDbGllbnQ7
CiAKK3N0cnVjdCBNZWRpYVN0cmVhbVNvdXJjZVN0YXRlczsKKwogY2xhc3MgTWVkaWFTdHJlYW1D
ZW50ZXIgewogcHVibGljOgogICAgIHZpcnR1YWwgfk1lZGlhU3RyZWFtQ2VudGVyKCk7CkBAIC01
OSwxNCArNjIsNiBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIGJvb2wgZ2V0TWVkaWFTdHJlYW1U
cmFja1NvdXJjZXMoUGFzc1JlZlB0cjxNZWRpYVN0cmVhbVRyYWNrU291cmNlc1JlcXVlc3RDbGll
bnQ+KSA9IDA7CiAKLSAgICB2aXJ0dWFsIHZvaWQgZGlkU2V0TWVkaWFTdHJlYW1UcmFja0VuYWJs
ZWQoTWVkaWFTdHJlYW1Tb3VyY2UqKSA9IDA7Ci0KLSAgICB2aXJ0dWFsIGJvb2wgZGlkQWRkTWVk
aWFTdHJlYW1UcmFjayhNZWRpYVN0cmVhbVNvdXJjZSopID0gMDsKLSAgICB2aXJ0dWFsIGJvb2wg
ZGlkUmVtb3ZlTWVkaWFTdHJlYW1UcmFjayhNZWRpYVN0cmVhbVNvdXJjZSopID0gMDsKLQotICAg
IHZpcnR1YWwgdm9pZCBkaWRTdG9wTG9jYWxNZWRpYVN0cmVhbShNZWRpYVN0cmVhbURlc2NyaXB0
b3IqKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGRpZENyZWF0ZU1lZGlhU3RyZWFtKE1lZGlhU3Ry
ZWFtRGVzY3JpcHRvciopID0gMDsKLQogcHJvdGVjdGVkOgogICAgIE1lZGlhU3RyZWFtQ2VudGVy
KCk7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlhU3Ry
ZWFtRGVzY3JpcHRvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1EZXNjcmlwdG9yLmNwcAkocmV2aXNpb24gMTU3MDE2KQor
KysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1EZXNjcmlw
dG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzUsNiArMzUsNyBAQAogCiAjaW5jbHVkZSAiTWVk
aWFTdHJlYW1EZXNjcmlwdG9yLmgiCiAKKyNpbmNsdWRlICJNZWRpYVN0cmVhbUNlbnRlci5oIgog
I2luY2x1ZGUgIk1lZGlhU3RyZWFtU291cmNlLmgiCiAjaW5jbHVkZSAiVVVJRC5oIgogI2luY2x1
ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CkBAIC00Nyw2ICs0OCwxNSBAQCBQYXNzUmVmUHRyPE1lZGlh
U3RyZWFtRGVzY3JpcHRvcj4gTWVkaWFTCiAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBNZWRpYVN0
cmVhbURlc2NyaXB0b3IoY3JlYXRlQ2Fub25pY2FsVVVJRFN0cmluZygpLCBhdWRpb1NvdXJjZXMs
IHZpZGVvU291cmNlcykpOwogfQogCitNZWRpYVN0cmVhbURlc2NyaXB0b3I6On5NZWRpYVN0cmVh
bURlc2NyaXB0b3IoKQoreworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9hdWRpb1N0cmVh
bVNvdXJjZXMuc2l6ZSgpOyBpKyspCisgICAgICAgIG1fYXVkaW9TdHJlYW1Tb3VyY2VzW2ldLT5z
ZXRTdHJlYW0oMCk7CisgICAgCisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX3ZpZGVvU3Ry
ZWFtU291cmNlcy5zaXplKCk7IGkrKykKKyAgICAgICAgbV92aWRlb1N0cmVhbVNvdXJjZXNbaV0t
PnNldFN0cmVhbSgwKTsKK30KKwogdm9pZCBNZWRpYVN0cmVhbURlc2NyaXB0b3I6OmFkZFNvdXJj
ZShQYXNzUmVmUHRyPE1lZGlhU3RyZWFtU291cmNlPiBzb3VyY2UpCiB7CiAgICAgc3dpdGNoIChz
b3VyY2UtPnR5cGUoKSkgewpAQCAtNjcsMTUgKzc3LDE5IEBAIHZvaWQgTWVkaWFTdHJlYW1EZXNj
cmlwdG9yOjpyZW1vdmVTb3VyY2UKICAgICBzd2l0Y2ggKHNvdXJjZS0+dHlwZSgpKSB7CiAgICAg
Y2FzZSBNZWRpYVN0cmVhbVNvdXJjZTo6QXVkaW86CiAgICAgICAgIHBvcyA9IG1fYXVkaW9TdHJl
YW1Tb3VyY2VzLmZpbmQoc291cmNlKTsKLSAgICAgICAgaWYgKHBvcyAhPSBub3RGb3VuZCkKLSAg
ICAgICAgICAgIG1fYXVkaW9TdHJlYW1Tb3VyY2VzLnJlbW92ZShwb3MpOworICAgICAgICBpZiAo
cG9zID09IG5vdEZvdW5kKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBtX2F1ZGlvU3Ry
ZWFtU291cmNlcy5yZW1vdmUocG9zKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBNZWRpYVN0
cmVhbVNvdXJjZTo6VmlkZW86CiAgICAgICAgIHBvcyA9IG1fdmlkZW9TdHJlYW1Tb3VyY2VzLmZp
bmQoc291cmNlKTsKLSAgICAgICAgaWYgKHBvcyAhPSBub3RGb3VuZCkKLSAgICAgICAgICAgIG1f
dmlkZW9TdHJlYW1Tb3VyY2VzLnJlbW92ZShwb3MpOworICAgICAgICBpZiAocG9zID09IG5vdEZv
dW5kKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBtX3ZpZGVvU3RyZWFtU291cmNlcy5y
ZW1vdmUocG9zKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQorCisgICAgc291cmNlLT5zZXRTdHJl
YW0oMCk7CiB9CiAKIHZvaWQgTWVkaWFTdHJlYW1EZXNjcmlwdG9yOjphZGRSZW1vdGVTb3VyY2Uo
TWVkaWFTdHJlYW1Tb3VyY2UqIHNvdXJjZSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21lZGlhc3RyZWFtL01lZGlhU3RyZWFtRGVzY3JpcHRvci5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtRGVzY3JpcHRvci5oCShy
ZXZpc2lvbiAxNTcwMTYpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9N
ZWRpYVN0cmVhbURlc2NyaXB0b3IuaAkod29ya2luZyBjb3B5KQpAQCAtNTIsOSArNTIsMTAgQEAg
cHVibGljOgogCiBjbGFzcyBNZWRpYVN0cmVhbURlc2NyaXB0b3IgOiBwdWJsaWMgUmVmQ291bnRl
ZDxNZWRpYVN0cmVhbURlc2NyaXB0b3I+IHsKIHB1YmxpYzoKLQogICAgIHN0YXRpYyBQYXNzUmVm
UHRyPE1lZGlhU3RyZWFtRGVzY3JpcHRvcj4gY3JlYXRlKGNvbnN0IE1lZGlhU3RyZWFtU291cmNl
VmVjdG9yJiBhdWRpb1NvdXJjZXMsIGNvbnN0IE1lZGlhU3RyZWFtU291cmNlVmVjdG9yJiB2aWRl
b1NvdXJjZXMpOwogCisgICAgdmlydHVhbCB+TWVkaWFTdHJlYW1EZXNjcmlwdG9yKCk7CisKICAg
ICBNZWRpYVN0cmVhbURlc2NyaXB0b3JDbGllbnQqIGNsaWVudCgpIGNvbnN0IHsgcmV0dXJuIG1f
Y2xpZW50OyB9CiAgICAgdm9pZCBzZXRDbGllbnQoTWVkaWFTdHJlYW1EZXNjcmlwdG9yQ2xpZW50
KiBjbGllbnQpIHsgbV9jbGllbnQgPSBjbGllbnQ7IH0KIApJbmRleDogU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1Tb3VyY2UuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtU291cmNlLmNw
cAkocmV2aXNpb24gMTU3MDE2KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJl
YW0vTWVkaWFTdHJlYW1Tb3VyY2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNiBAQAog
LyoKICAqIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
ICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzQsMjYgKzM1LDM5IEBACiAKICNp
bmNsdWRlICJNZWRpYVN0cmVhbVNvdXJjZS5oIgogCi0jaW5jbHVkZSAiQXVkaW9EZXN0aW5hdGlv
bkNvbnN1bWVyLmgiCisjaW5jbHVkZSAiTWVkaWFTdHJlYW1DZW50ZXIuaCIKKyNpbmNsdWRlICJN
ZWRpYVN0cmVhbVNvdXJjZUNhcGFiaWxpdGllcy5oIgorI2luY2x1ZGUgIlVVSUQuaCIKKwogI2lu
Y2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotUGFzc1Jl
ZlB0cjxNZWRpYVN0cmVhbVNvdXJjZT4gTWVkaWFTdHJlYW1Tb3VyY2U6OmNyZWF0ZShjb25zdCBT
dHJpbmcmIGlkLCBUeXBlIHR5cGUsIGNvbnN0IFN0cmluZyYgbmFtZSwgUmVhZHlTdGF0ZSByZWFk
eVN0YXRlLCBib29sIHJlcXVpcmVzQ29uc3VtZXIpCi17Ci0gICAgcmV0dXJuIGFkb3B0UmVmKG5l
dyBNZWRpYVN0cmVhbVNvdXJjZShpZCwgdHlwZSwgbmFtZSwgcmVhZHlTdGF0ZSwgcmVxdWlyZXND
b25zdW1lcikpOwotfQotCi1NZWRpYVN0cmVhbVNvdXJjZTo6TWVkaWFTdHJlYW1Tb3VyY2UoY29u
c3QgU3RyaW5nJiBpZCwgVHlwZSB0eXBlLCBjb25zdCBTdHJpbmcmIG5hbWUsIFJlYWR5U3RhdGUg
cmVhZHlTdGF0ZSwgYm9vbCByZXF1aXJlc0NvbnN1bWVyKQorTWVkaWFTdHJlYW1Tb3VyY2U6Ok1l
ZGlhU3RyZWFtU291cmNlKGNvbnN0IFN0cmluZyYgaWQsIFR5cGUgdHlwZSwgY29uc3QgU3RyaW5n
JiBuYW1lKQogICAgIDogbV9pZChpZCkKICAgICAsIG1fdHlwZSh0eXBlKQogICAgICwgbV9uYW1l
KG5hbWUpCi0gICAgLCBtX3JlYWR5U3RhdGUocmVhZHlTdGF0ZSkKKyAgICAsIG1fcmVhZHlTdGF0
ZShOZXcpCiAgICAgLCBtX3N0cmVhbSgwKQotICAgICwgbV9yZXF1aXJlc0NvbnN1bWVyKHJlcXVp
cmVzQ29uc3VtZXIpCiAgICAgLCBtX2VuYWJsZWQodHJ1ZSkKICAgICAsIG1fbXV0ZWQoZmFsc2Up
CisgICAgLCBtX3JlYWRvbmx5KGZhbHNlKQorICAgICwgbV9yZW1vdGUoZmFsc2UpCiB7CisgICAg
aWYgKCFtX2lkLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuOworICAgIAorICAgIG1faWQgPSBj
cmVhdGVDYW5vbmljYWxVVUlEU3RyaW5nKCk7Cit9CisKK3ZvaWQgTWVkaWFTdHJlYW1Tb3VyY2U6
OnJlc2V0KCkKK3sKKyAgICBtX3JlYWR5U3RhdGUgPSBOZXc7CisgICAgbV9zdHJlYW0gPSAwOwor
ICAgIG1fZW5hYmxlZCA9IHRydWU7CisgICAgbV9tdXRlZCA9IGZhbHNlOworICAgIG1fcmVhZG9u
bHkgPSBmYWxzZTsKKyAgICBtX3JlbW90ZSA9IGZhbHNlOwogfQogCiB2b2lkIE1lZGlhU3RyZWFt
U291cmNlOjpzZXRSZWFkeVN0YXRlKFJlYWR5U3RhdGUgcmVhZHlTdGF0ZSkKQEAgLTYzLDcgKzc3
LDcgQEAgdm9pZCBNZWRpYVN0cmVhbVNvdXJjZTo6c2V0UmVhZHlTdGF0ZShSZQogCiAgICAgbV9y
ZWFkeVN0YXRlID0gcmVhZHlTdGF0ZTsKICAgICBmb3IgKFZlY3RvcjxPYnNlcnZlcio+OjppdGVy
YXRvciBpID0gbV9vYnNlcnZlcnMuYmVnaW4oKTsgaSAhPSBtX29ic2VydmVycy5lbmQoKTsgKytp
KQotICAgICAgICAoKmkpLT5zb3VyY2VDaGFuZ2VkU3RhdGUoKTsKKyAgICAgICAgKCppKS0+c291
cmNlU3RhdGVDaGFuZ2VkKCk7CiB9CiAKIHZvaWQgTWVkaWFTdHJlYW1Tb3VyY2U6OmFkZE9ic2Vy
dmVyKE1lZGlhU3RyZWFtU291cmNlOjpPYnNlcnZlciogb2JzZXJ2ZXIpCkBAIC04MCw1MyArOTQs
NzQgQEAgdm9pZCBNZWRpYVN0cmVhbVNvdXJjZTo6cmVtb3ZlT2JzZXJ2ZXIoTQogCiB2b2lkIE1l
ZGlhU3RyZWFtU291cmNlOjpzZXRTdHJlYW0oTWVkaWFTdHJlYW1EZXNjcmlwdG9yKiBzdHJlYW0p
CiB7Ci0gICAgQVNTRVJUKCFtX3N0cmVhbSAmJiBzdHJlYW0pOworICAgIC8vIEZJWE1FOiBBIHNv
dXJjZSBzaG91bGQgbm90IG5lZWQgdG8ga25vdyBhYm91dCBpdHMgc3RyZWFtKHMpLiBUaGlzIHdp
bGwgYmUgZml4ZWQgYXMgYSBwYXJ0IG9mCisgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTEyMTk1NAogICAgIG1fc3RyZWFtID0gc3RyZWFtOwogfQogCitNZWRp
YUNvbnN0cmFpbnRzKiBNZWRpYVN0cmVhbVNvdXJjZTo6Y29uc3RyYWludHMoKSBjb25zdAorewor
ICAgIC8vIEZJWE1FOiBXaGlsZSB0aGlzIHJldHVybnMgCisgICAgLy8gaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyMjQyOAorICAgIHJldHVybiBtX2NvbnN0cmFpbnRz
LmdldCgpOworfQorICAgIAordm9pZCBNZWRpYVN0cmVhbVNvdXJjZTo6c2V0Q29uc3RyYWludHMo
UGFzc1JlZlB0cjxNZWRpYUNvbnN0cmFpbnRzPiBjb25zdHJhaW50cykKK3sKKyAgICBtX2NvbnN0
cmFpbnRzID0gY29uc3RyYWludHM7Cit9CisKIHZvaWQgTWVkaWFTdHJlYW1Tb3VyY2U6OnNldE11
dGVkKGJvb2wgbXV0ZWQpCiB7CiAgICAgaWYgKG1fbXV0ZWQgPT0gbXV0ZWQpCiAgICAgICAgIHJl
dHVybjsKIAogICAgIG1fbXV0ZWQgPSBtdXRlZDsKKworICAgIGlmIChtX3JlYWR5U3RhdGUgPT0g
RW5kZWQpCisgICAgICAgIHJldHVybjsKKwogICAgIGZvciAoVmVjdG9yPE9ic2VydmVyKj46Oml0
ZXJhdG9yIGkgPSBtX29ic2VydmVycy5iZWdpbigpOyBpICE9IG1fb2JzZXJ2ZXJzLmVuZCgpOyAr
K2kpCi0gICAgICAgICgqaSktPnNvdXJjZUNoYW5nZWRTdGF0ZSgpOworICAgICAgICAoKmkpLT5z
b3VyY2VNdXRlZENoYW5nZWQoKTsKIH0KIAotdm9pZCBNZWRpYVN0cmVhbVNvdXJjZTo6YWRkQXVk
aW9Db25zdW1lcihQYXNzUmVmUHRyPEF1ZGlvRGVzdGluYXRpb25Db25zdW1lcj4gY29uc3VtZXIp
Cit2b2lkIE1lZGlhU3RyZWFtU291cmNlOjpzZXRFbmFibGVkKGJvb2wgZW5hYmxlZCkKIHsKLSAg
ICBBU1NFUlQobV9yZXF1aXJlc0NvbnN1bWVyKTsKLSAgICBNdXRleExvY2tlciBsb2NrZXIobV9h
dWRpb0NvbnN1bWVyc0xvY2spOwotICAgIG1fYXVkaW9Db25zdW1lcnMuYXBwZW5kKGNvbnN1bWVy
KTsKLX0KKyAgICBpZiAobV9lbmFibGVkID09IGVuYWJsZWQpCisgICAgICAgIHJldHVybjsKKyAg
ICAKKyAgICBtX2VuYWJsZWQgPSBlbmFibGVkOwogCi1ib29sIE1lZGlhU3RyZWFtU291cmNlOjpy
ZW1vdmVBdWRpb0NvbnN1bWVyKEF1ZGlvRGVzdGluYXRpb25Db25zdW1lciogY29uc3VtZXIpCi17
Ci0gICAgQVNTRVJUKG1fcmVxdWlyZXNDb25zdW1lcik7Ci0gICAgTXV0ZXhMb2NrZXIgbG9ja2Vy
KG1fYXVkaW9Db25zdW1lcnNMb2NrKTsKLSAgICBzaXplX3QgcG9zID0gbV9hdWRpb0NvbnN1bWVy
cy5maW5kKGNvbnN1bWVyKTsKLSAgICBpZiAocG9zICE9IG5vdEZvdW5kKSB7Ci0gICAgICAgIG1f
YXVkaW9Db25zdW1lcnMucmVtb3ZlKHBvcyk7Ci0gICAgICAgIHJldHVybiB0cnVlOwotICAgIH0K
LSAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKG1fcmVhZHlTdGF0ZSA9PSBFbmRlZCkKKyAgICAg
ICAgcmV0dXJuOworICAgIAorICAgIGZvciAoVmVjdG9yPE9ic2VydmVyKj46Oml0ZXJhdG9yIGkg
PSBtX29ic2VydmVycy5iZWdpbigpOyBpICE9IG1fb2JzZXJ2ZXJzLmVuZCgpOyArK2kpCisgICAg
ICAgICgqaSktPnNvdXJjZUVuYWJsZWRDaGFuZ2VkKCk7CiB9CiAKLXZvaWQgTWVkaWFTdHJlYW1T
b3VyY2U6OnNldEF1ZGlvRm9ybWF0KHNpemVfdCBudW1iZXJPZkNoYW5uZWxzLCBmbG9hdCBzYW1w
bGVSYXRlKQorYm9vbCBNZWRpYVN0cmVhbVNvdXJjZTo6cmVhZG9ubHkoKSBjb25zdAogewotICAg
IEFTU0VSVChtX3JlcXVpcmVzQ29uc3VtZXIpOwotICAgIE11dGV4TG9ja2VyIGxvY2tlcihtX2F1
ZGlvQ29uc3VtZXJzTG9jayk7Ci0gICAgZm9yIChWZWN0b3I8UmVmUHRyPEF1ZGlvRGVzdGluYXRp
b25Db25zdW1lcj4gPjo6aXRlcmF0b3IgaXQgPSBtX2F1ZGlvQ29uc3VtZXJzLmJlZ2luKCk7IGl0
ICE9IG1fYXVkaW9Db25zdW1lcnMuZW5kKCk7ICsraXQpCi0gICAgICAgICgqaXQpLT5zZXRGb3Jt
YXQobnVtYmVyT2ZDaGFubmVscywgc2FtcGxlUmF0ZSk7CisgICAgLy8gaHR0cDovL3d3dy53My5v
cmcvVFIvbWVkaWFjYXB0dXJlLXN0cmVhbXMvI3dpZGwtTWVkaWFTdHJlYW1UcmFjay1fcmVhZG9u
bHkKKyAgICAvLyBJZiB0aGUgdHJhY2sgKGF1ZGlvIG9yIHZpZGVvKSBpcyBiYWNrZWQgYnkgYSBy
ZWFkLW9ubHkgc291cmNlIHN1Y2ggYXMgYSBmaWxlLCBvciB0aGUgdHJhY2sgc291cmNlIAorICAg
IC8vIGlzIGEgbG9jYWwgbWljcm9waG9uZSBvciBjYW1lcmEsIGJ1dCBpcyBzaGFyZWQgc28gdGhh
dCB0aGlzIHRyYWNrIGNhbm5vdCBtb2RpZnkgYW55IG9mIHRoZSBzb3VyY2UncworICAgIC8vIHNl
dHRpbmdzLCB0aGUgcmVhZG9ubHkgYXR0cmlidXRlIG11c3QgcmV0dXJuIHRoZSB2YWx1ZSB0cnVl
LiBPdGhlcndpc2UsIGl0IG11c3QgcmV0dXJuIHRoZSB2YWx1ZSBmYWxzZS4KKyAgICByZXR1cm4g
bV9yZWFkb25seTsKIH0KIAotdm9pZCBNZWRpYVN0cmVhbVNvdXJjZTo6Y29uc3VtZUF1ZGlvKEF1
ZGlvQnVzKiBidXMsIHNpemVfdCBudW1iZXJPZkZyYW1lcykKK3ZvaWQgTWVkaWFTdHJlYW1Tb3Vy
Y2U6OnN0b3AoKQogewotICAgIEFTU0VSVChtX3JlcXVpcmVzQ29uc3VtZXIpOwotICAgIE11dGV4
TG9ja2VyIGxvY2tlcihtX2F1ZGlvQ29uc3VtZXJzTG9jayk7Ci0gICAgZm9yIChWZWN0b3I8UmVm
UHRyPEF1ZGlvRGVzdGluYXRpb25Db25zdW1lcj4gPjo6aXRlcmF0b3IgaXQgPSBtX2F1ZGlvQ29u
c3VtZXJzLmJlZ2luKCk7IGl0ICE9IG1fYXVkaW9Db25zdW1lcnMuZW5kKCk7ICsraXQpCi0gICAg
ICAgICgqaXQpLT5jb25zdW1lQXVkaW8oYnVzLCBudW1iZXJPZkZyYW1lcyk7CisgICAgZm9yIChW
ZWN0b3I8T2JzZXJ2ZXIqPjo6aXRlcmF0b3IgaSA9IG1fb2JzZXJ2ZXJzLmJlZ2luKCk7IGkgIT0g
bV9vYnNlcnZlcnMuZW5kKCk7ICsraSkgeworICAgICAgICBpZiAoISgqaSktPnN0b3BwZWQoKSkK
KyAgICAgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICAvLyBUaGVyZSBhcmUgbm8gbW9yZSBj
b25zdW1lcnMgb2YgdGhpcyBzb3VyY2UncyBkYXRhLCBzaHV0IGl0IGRvd24gYXMgYXBwcm9wcmlh
dGUuCisgICAgc2V0UmVhZHlTdGF0ZShFbmRlZCk7CisKKyAgICAvLyBodHRwOi8vd3d3LnczLm9y
Zy9UUi9tZWRpYWNhcHR1cmUtc3RyZWFtcy8jd2lkbC1NZWRpYVN0cmVhbVRyYWNrLXN0b3Atdm9p
ZAorICAgIC8vIElmIHRoZSBkYXRhIGlzIGJlaW5nIGdlbmVyYXRlZCBmcm9tIGEgbGl2ZSBzb3Vy
Y2UgKGUuZy4sIGEgbWljcm9waG9uZSBvciBjYW1lcmEpLCB0aGVuIHRoZSB1c2VyIAorICAgIC8v
IGFnZW50IHNob3VsZCByZW1vdmUgYW55IGFjdGl2ZSAib24tYWlyIiBpbmRpY2F0b3IgZm9yIHRo
YXQgc291cmNlLiBJZiB0aGUgZGF0YSBpcyBiZWluZyAKKyAgICAvLyBnZW5lcmF0ZWQgZnJvbSBh
IHByZXJlY29yZGVkIHNvdXJjZSAoZS5nLiBhIHZpZGVvIGZpbGUpLCBhbnkgcmVtYWluaW5nIGNv
bnRlbnQgaW4gdGhlIGZpbGUgaXMgaWdub3JlZC4KIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1T
b3VyY2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVh
bS9NZWRpYVN0cmVhbVNvdXJjZS5oCShyZXZpc2lvbiAxNTcwMTYpCisrKyBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVNvdXJjZS5oCSh3b3JraW5nIGNvcHkp
CkBAIC0xLDYgKzEsNyBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAxMSBFcmljc3NvbiBBQi4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzYs
NiArMzcsNyBAQAogCiAjaW5jbHVkZSAiQXVkaW9EZXN0aW5hdGlvbkNvbnN1bWVyLmgiCiAjaW5j
bHVkZSAiTWVkaWFDb25zdHJhaW50cy5oIgorI2luY2x1ZGUgIk1lZGlhU3RyZWFtU291cmNlQ2Fw
YWJpbGl0aWVzLmgiCiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KICNpbmNsdWRlIDx3dGYv
VmVjdG9yLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CkBAIC00Myw3MiArNDUs
ODEgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQXVkaW9CdXM7CitjbGFzcyBNZWRp
YUNvbnN0cmFpbnRzOwogY2xhc3MgTWVkaWFTdHJlYW1EZXNjcmlwdG9yOworc3RydWN0IE1lZGlh
U3RyZWFtU291cmNlU3RhdGVzOwogCiBjbGFzcyBNZWRpYVN0cmVhbVNvdXJjZSA6IHB1YmxpYyBS
ZWZDb3VudGVkPE1lZGlhU3RyZWFtU291cmNlPiB7CiBwdWJsaWM6CiAgICAgY2xhc3MgT2JzZXJ2
ZXIgewogICAgIHB1YmxpYzoKICAgICAgICAgdmlydHVhbCB+T2JzZXJ2ZXIoKSB7IH0KLSAgICAg
ICAgdmlydHVhbCB2b2lkIHNvdXJjZUNoYW5nZWRTdGF0ZSgpID0gMDsKKyAgICAgICAgdmlydHVh
bCB2b2lkIHNvdXJjZVN0YXRlQ2hhbmdlZCgpID0gMDsKKyAgICAgICAgdmlydHVhbCB2b2lkIHNv
dXJjZU11dGVkQ2hhbmdlZCgpID0gMDsKKyAgICAgICAgdmlydHVhbCB2b2lkIHNvdXJjZUVuYWJs
ZWRDaGFuZ2VkKCkgPSAwOworICAgICAgICB2aXJ0dWFsIGJvb2wgc3RvcHBlZCgpID0gMDsKICAg
ICB9OwogCiAgICAgZW51bSBUeXBlIHsgQXVkaW8sIFZpZGVvIH07CiAgICAgZW51bSBSZWFkeVN0
YXRlIHsgTmV3ID0gMCwgTGl2ZSA9IDEsIEVuZGVkID0gMiB9OwogCi0gICAgc3RhdGljIFBhc3NS
ZWZQdHI8TWVkaWFTdHJlYW1Tb3VyY2U+IGNyZWF0ZShjb25zdCBTdHJpbmcmIGlkLCBUeXBlLCBj
b25zdCBTdHJpbmcmIG5hbWUsIFJlYWR5U3RhdGUgPSBOZXcsIGJvb2wgcmVxdWlyZXNDb25zdW1l
ciA9IGZhbHNlKTsKKyAgICB2aXJ0dWFsIH5NZWRpYVN0cmVhbVNvdXJjZSgpIHsgfQogCi0gICAg
Y29uc3QgU3RyaW5nJiBpZCgpIGNvbnN0IHsgcmV0dXJuIG1faWQ7IH0KKyAgICB2aXJ0dWFsIGJv
b2wgaXNBdWRpb1N0cmVhbVNvdXJjZSgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdmly
dHVhbCBib29sIHVzZUlERm9yVHJhY2tJRCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CisKKyAg
ICB2b2lkIHJlc2V0KCk7CiAKKyAgICBjb25zdCBTdHJpbmcmIGlkKCkgY29uc3QgeyByZXR1cm4g
bV9pZDsgfQogICAgIFR5cGUgdHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fdHlwZTsgfQogICAgIGNv
bnN0IFN0cmluZyYgbmFtZSgpIGNvbnN0IHsgcmV0dXJuIG1fbmFtZTsgfQogCisgICAgdmlydHVh
bCBQYXNzUmVmUHRyPE1lZGlhU3RyZWFtU291cmNlQ2FwYWJpbGl0aWVzPiBjYXBhYmlsaXRpZXMo
KSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBjb25zdCBNZWRpYVN0cmVhbVNvdXJjZVN0YXRlcyYg
c3RhdGVzKCkgPSAwOworICAgIAogICAgIHZvaWQgc2V0UmVhZHlTdGF0ZShSZWFkeVN0YXRlKTsK
ICAgICBSZWFkeVN0YXRlIHJlYWR5U3RhdGUoKSBjb25zdCB7IHJldHVybiBtX3JlYWR5U3RhdGU7
IH0KIAogICAgIHZvaWQgYWRkT2JzZXJ2ZXIoT2JzZXJ2ZXIqKTsKICAgICB2b2lkIHJlbW92ZU9i
c2VydmVyKE9ic2VydmVyKik7CiAKLSAgICB2b2lkIHNldENvbnN0cmFpbnRzKFBhc3NSZWZQdHI8
TWVkaWFDb25zdHJhaW50cz4gY29uc3RyYWludHMpIHsgbV9jb25zdHJhaW50cyA9IGNvbnN0cmFp
bnRzOyB9Ci0gICAgTWVkaWFDb25zdHJhaW50cyogY29uc3RyYWludHMoKSBjb25zdCB7IHJldHVy
biBtX2NvbnN0cmFpbnRzLmdldCgpOyB9Ci0KLSAgICBjb25zdCBTdHJpbmcmIGRldmljZUlkKCkg
Y29uc3QgeyByZXR1cm4gbV9kZXZpY2VJZDsgfQotICAgIHZvaWQgc2V0RGV2aWNlSWQoY29uc3Qg
U3RyaW5nJiBkZXZpY2VJZCkgeyBtX2RldmljZUlkID0gZGV2aWNlSWQ7IH0KKyAgICB2b2lkIHNl
dENvbnN0cmFpbnRzKFBhc3NSZWZQdHI8TWVkaWFDb25zdHJhaW50cz4pOworICAgIE1lZGlhQ29u
c3RyYWludHMqIGNvbnN0cmFpbnRzKCkgY29uc3Q7CiAKICAgICBib29sIGVuYWJsZWQoKSBjb25z
dCB7IHJldHVybiBtX2VuYWJsZWQ7IH0KLSAgICB2b2lkIHNldEVuYWJsZWQoYm9vbCBlbmFibGVk
KSB7IG1fZW5hYmxlZCA9IGVuYWJsZWQ7IH0KKyAgICB2b2lkIHNldEVuYWJsZWQoYm9vbCk7CiAK
ICAgICBib29sIG11dGVkKCkgY29uc3QgeyByZXR1cm4gbV9tdXRlZDsgfQogICAgIHZvaWQgc2V0
TXV0ZWQoYm9vbCk7Ci0gICAgCi0gICAgdm9pZCBzZXRBdWRpb0Zvcm1hdChzaXplX3QgbnVtYmVy
T2ZDaGFubmVscywgZmxvYXQgc2FtcGxlUmF0ZSk7Ci0gICAgdm9pZCBjb25zdW1lQXVkaW8oQXVk
aW9CdXMqLCBzaXplX3QgbnVtYmVyT2ZGcmFtZXMpOworCisgICAgYm9vbCByZWFkb25seSgpIGNv
bnN0OworICAgIHZvaWQgc2V0UmVhZG9ubHkoYm9vbCByZWFkb25seSkgeyBtX3JlYWRvbmx5ID0g
cmVhZG9ubHk7IH0KKworICAgIGJvb2wgcmVtb3RlKCkgY29uc3QgeyByZXR1cm4gbV9yZW1vdGU7
IH0KKyAgICB2b2lkIHNldFJlbW90ZShib29sIHJlbW90ZSkgeyBtX3JlbW90ZSA9IHJlbW90ZTsg
fQorCisgICAgdm9pZCBzdG9wKCk7CiAKICAgICBNZWRpYVN0cmVhbURlc2NyaXB0b3IqIHN0cmVh
bSgpIGNvbnN0IHsgcmV0dXJuIG1fc3RyZWFtOyB9CiAgICAgdm9pZCBzZXRTdHJlYW0oTWVkaWFT
dHJlYW1EZXNjcmlwdG9yKik7Ci0KLSAgICBib29sIHJlcXVpcmVzQXVkaW9Db25zdW1lcigpIGNv
bnN0IHsgcmV0dXJuIG1fcmVxdWlyZXNDb25zdW1lcjsgfQotICAgIHZvaWQgYWRkQXVkaW9Db25z
dW1lcihQYXNzUmVmUHRyPEF1ZGlvRGVzdGluYXRpb25Db25zdW1lcj4pOwotICAgIGJvb2wgcmVt
b3ZlQXVkaW9Db25zdW1lcihBdWRpb0Rlc3RpbmF0aW9uQ29uc3VtZXIqKTsKLSAgICBjb25zdCBW
ZWN0b3I8UmVmUHRyPEF1ZGlvRGVzdGluYXRpb25Db25zdW1lcj4gPiYgYXVkaW9Db25zdW1lcnMo
KSBjb25zdCB7IHJldHVybiBtX2F1ZGlvQ29uc3VtZXJzOyB9CisgICAgCitwcm90ZWN0ZWQ6Cisg
ICAgTWVkaWFTdHJlYW1Tb3VyY2UoY29uc3QgU3RyaW5nJiBpZCwgVHlwZSwgY29uc3QgU3RyaW5n
JiBuYW1lKTsKIAogcHJpdmF0ZToKLSAgICBNZWRpYVN0cmVhbVNvdXJjZShjb25zdCBTdHJpbmcm
IGlkLCBUeXBlLCBjb25zdCBTdHJpbmcmIG5hbWUsIFJlYWR5U3RhdGUsIGJvb2wgcmVxdWlyZXND
b25zdW1lcik7Ci0KICAgICBTdHJpbmcgbV9pZDsKICAgICBUeXBlIG1fdHlwZTsKICAgICBTdHJp
bmcgbV9uYW1lOwogICAgIFJlYWR5U3RhdGUgbV9yZWFkeVN0YXRlOwotICAgIFN0cmluZyBtX2Rl
dmljZUlkOwogICAgIFZlY3RvcjxPYnNlcnZlcio+IG1fb2JzZXJ2ZXJzOwotICAgIE11dGV4IG1f
YXVkaW9Db25zdW1lcnNMb2NrOwotICAgIFZlY3RvcjxSZWZQdHI8QXVkaW9EZXN0aW5hdGlvbkNv
bnN1bWVyPj4gbV9hdWRpb0NvbnN1bWVyczsKICAgICBSZWZQdHI8TWVkaWFDb25zdHJhaW50cz4g
bV9jb25zdHJhaW50czsKICAgICBNZWRpYVN0cmVhbURlc2NyaXB0b3IqIG1fc3RyZWFtOworICAg
IE1lZGlhU3RyZWFtU291cmNlU3RhdGVzIG1fc3RhdGVzOwogCi0gICAgYm9vbCBtX3JlcXVpcmVz
Q29uc3VtZXI7CiAgICAgYm9vbCBtX2VuYWJsZWQ7CiAgICAgYm9vbCBtX211dGVkOworICAgIGJv
b2wgbV9yZWFkb25seTsKKyAgICBib29sIG1fcmVtb3RlOwogfTsKIAogdHlwZWRlZiBWZWN0b3I8
UmVmUHRyPE1lZGlhU3RyZWFtU291cmNlPiA+IE1lZGlhU3RyZWFtU291cmNlVmVjdG9yOwpJbmRl
eDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1Tb3VyY2VD
YXBhYmlsaXRpZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRp
YXN0cmVhbS9NZWRpYVN0cmVhbVNvdXJjZUNhcGFiaWxpdGllcy5oCShyZXZpc2lvbiAwKQorKysg
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1Tb3VyY2VDYXBh
YmlsaXRpZXMuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDE3NSBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBg
YEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9S
CisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lm
bmRlZiBNZWRpYVN0cmVhbVNvdXJjZUNhcGFiaWxpdGllc19oCisjZGVmaW5lIE1lZGlhU3RyZWFt
U291cmNlQ2FwYWJpbGl0aWVzX2gKKworI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCisKKyNpbmNs
dWRlIDx3dGYvUmVmQ291bnRlZC5oPgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKyNpbmNsdWRl
IDx3dGYvdGV4dC9BdG9taWNTdHJpbmcuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitzdHJ1
Y3QgTWVkaWFTdHJlYW1Tb3VyY2VTdGF0ZXMgeworcHVibGljOgorICAgIGVudW0gU291cmNlVHlw
ZSB7IE5vbmUsIENhbWVyYSwgTWljcm9waG9uZSB9OworICAgIGVudW0gVmlkZW9GYWNpbmdNb2Rl
IHsgVXNlciwgRW52aXJvbm1lbnQsIExlZnQsIFJpZ2h0IH07CisKKyAgICBNZWRpYVN0cmVhbVNv
dXJjZVN0YXRlcygpCisgICAgICAgIDogc291cmNlVHlwZShOb25lKQorICAgICAgICAsIGZhY2lu
Z01vZGUoVXNlcikKKyAgICAgICAgLCB3aWR0aCgwKQorICAgICAgICAsIGhlaWdodCgwKQorICAg
ICAgICAsIGZyYW1lUmF0ZSgwKQorICAgICAgICAsIGFzcGVjdFJhdGlvKDApCisgICAgICAgICwg
dm9sdW1lKDApCisgICAgeworICAgIH0KKworICAgIFNvdXJjZVR5cGUgc291cmNlVHlwZTsKKyAg
ICBBdG9taWNTdHJpbmcgc291cmNlSWQ7CisgICAgVmlkZW9GYWNpbmdNb2RlIGZhY2luZ01vZGU7
CisgICAgdW5zaWduZWQgbG9uZyB3aWR0aDsKKyAgICB1bnNpZ25lZCBsb25nIGhlaWdodDsKKyAg
ICBmbG9hdCBmcmFtZVJhdGU7CisgICAgZmxvYXQgYXNwZWN0UmF0aW87CisgICAgdW5zaWduZWQg
bG9uZyB2b2x1bWU7CisgICAgCisgICAgYm9vbCBoYXNWaWRlb1NvdXJjZTsKK307CisKK2NsYXNz
IE1lZGlhU3RyZWFtU291cmNlQ2FwYWJpbGl0eVJhbmdlIHsKK3B1YmxpYzoKKyAgICAKKyAgICBN
ZWRpYVN0cmVhbVNvdXJjZUNhcGFiaWxpdHlSYW5nZShmbG9hdCBtaW4sIGZsb2F0IG1heCwgYm9v
bCBzdXBwb3J0ZWQgPSB0cnVlKQorICAgICAgICA6IG1fdHlwZShGbG9hdCkKKyAgICB7CisgICAg
ICAgIG1fbWluLmFzRmxvYXQgPSBtaW47CisgICAgICAgIG1fbWF4LmFzRmxvYXQgPSBtYXg7Cisg
ICAgICAgIG1fc3VwcG9ydGVkID0gc3VwcG9ydGVkOworICAgIH0KKyAgICAKKyAgICBNZWRpYVN0
cmVhbVNvdXJjZUNhcGFiaWxpdHlSYW5nZSh1bnNpZ25lZCBsb25nIG1pbiwgdW5zaWduZWQgbG9u
ZyBtYXgsIGJvb2wgc3VwcG9ydGVkID0gdHJ1ZSkKKyAgICAgICAgOiBtX3R5cGUoVUxvbmcpCisg
ICAgeworICAgICAgICBtX21pbi5hc1VMb25nID0gbWluOworICAgICAgICBtX21heC5hc1VMb25n
ID0gbWF4OworICAgICAgICBtX3N1cHBvcnRlZCA9IHN1cHBvcnRlZDsKKyAgICB9CisgICAgCisg
ICAgTWVkaWFTdHJlYW1Tb3VyY2VDYXBhYmlsaXR5UmFuZ2UoKQorICAgIHsKKyAgICAgICAgbV90
eXBlID0gVW5kZWZpbmVkOworICAgICAgICBtX21pbi5hc1VMb25nID0gMDsKKyAgICAgICAgbV9t
YXguYXNVTG9uZyA9IDA7CisgICAgICAgIG1fc3VwcG9ydGVkID0gZmFsc2U7CisgICAgfQorICAg
IAorICAgIGVudW0gVHlwZSB7IFVuZGVmaW5lZCwgRmxvYXQsIFVMb25nIH07CisgICAgCisgICAg
dW5pb24gVmFsdWVVbmlvbiB7CisgICAgICAgIHVuc2lnbmVkIGxvbmcgYXNVTG9uZzsKKyAgICAg
ICAgZmxvYXQgYXNGbG9hdDsKKyAgICB9OworICAgIAorICAgIGNvbnN0IFZhbHVlVW5pb24mIG1p
bigpIGNvbnN0IHsgcmV0dXJuIG1fbWluOyB9CisgICAgY29uc3QgVmFsdWVVbmlvbiYgbWF4KCkg
Y29uc3QgeyByZXR1cm4gbV9tYXg7IH0KKyAgICBUeXBlIHR5cGUoKSBjb25zdCB7IHJldHVybiBt
X3R5cGU7IH0KKyAgICBib29sIHN1cHBvcnRlZCgpIGNvbnN0IHsgcmV0dXJuIG1fc3VwcG9ydGVk
OyB9CisgICAgCitwcml2YXRlOgorICAgIFZhbHVlVW5pb24gbV9taW47CisgICAgVmFsdWVVbmlv
biBtX21heDsKKyAgICBUeXBlIG1fdHlwZTsKKyAgICBib29sIG1fc3VwcG9ydGVkOworfTsKKwor
Y2xhc3MgTWVkaWFTdHJlYW1Tb3VyY2VDYXBhYmlsaXRpZXMgOiBwdWJsaWMgUmVmQ291bnRlZDxN
ZWRpYVN0cmVhbVNvdXJjZUNhcGFiaWxpdGllcz4geworcHVibGljOgorICAgIHN0YXRpYyBQYXNz
UmVmUHRyPE1lZGlhU3RyZWFtU291cmNlQ2FwYWJpbGl0aWVzPiBjcmVhdGUoKQorICAgIHsKKyAg
ICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBNZWRpYVN0cmVhbVNvdXJjZUNhcGFiaWxpdGllcygp
KTsKKyAgICB9CisKKyAgICB+TWVkaWFTdHJlYW1Tb3VyY2VDYXBhYmlsaXRpZXMoKSB7IH0KKwor
ICAgIGNvbnN0IFZlY3RvcjxNZWRpYVN0cmVhbVNvdXJjZVN0YXRlczo6U291cmNlVHlwZT4mIHNv
dXJjZVR5cGVzKCkgeyByZXR1cm4gbV9zb3VyY2VUeXBlOyB9CisgICAgdm9pZCBhZGRTb3VyY2VU
eXBlKE1lZGlhU3RyZWFtU291cmNlU3RhdGVzOjpTb3VyY2VUeXBlIHNvdXJjZVR5cGUpCisgICAg
eworICAgICAgICBpZiAoc291cmNlVHlwZSA9PSBNZWRpYVN0cmVhbVNvdXJjZVN0YXRlczo6Q2Ft
ZXJhKQorICAgICAgICAgICAgbV92aWRlb1NvdXJjZSA9IHRydWU7CisgICAgICAgIG1fc291cmNl
VHlwZS5hcHBlbmQoc291cmNlVHlwZSk7CisgICAgfQorCisgICAgY29uc3QgVmVjdG9yPEF0b21p
Y1N0cmluZz4mIHNvdXJjZUlkKCkgeyByZXR1cm4gbV9zb3VyY2VJZDsgfQorICAgIHZvaWQgc2V0
U291cmNlSWQoY29uc3QgQXRvbWljU3RyaW5nJiBpZCkgIHsgbV9zb3VyY2VJZC5yZXNlcnZlQ2Fw
YWNpdHkoMSk7IG1fc291cmNlSWQuaW5zZXJ0KDAsIGlkKTsgfQorCisgICAgY29uc3QgVmVjdG9y
PE1lZGlhU3RyZWFtU291cmNlU3RhdGVzOjpWaWRlb0ZhY2luZ01vZGU+JiBmYWNpbmdNb2Rlcygp
IHsgcmV0dXJuIG1fZmFjaW5nTW9kZTsgfQorICAgIHZvaWQgYWRkRmFjaW5nTW9kZShNZWRpYVN0
cmVhbVNvdXJjZVN0YXRlczo6VmlkZW9GYWNpbmdNb2RlIG1vZGUpIHsgbV9mYWNpbmdNb2RlLmFw
cGVuZChtb2RlKTsgfQorCisgICAgY29uc3QgTWVkaWFTdHJlYW1Tb3VyY2VDYXBhYmlsaXR5UmFu
Z2UmIHdpZHRoKCkgeyByZXR1cm4gbV93aWR0aDsgfQorICAgIHZvaWQgc2V0V2lkdGhSYW5nZShj
b25zdCBNZWRpYVN0cmVhbVNvdXJjZUNhcGFiaWxpdHlSYW5nZSYgd2lkdGgpIHsgbV93aWR0aCA9
IHdpZHRoOyB9CisKKyAgICBjb25zdCBNZWRpYVN0cmVhbVNvdXJjZUNhcGFiaWxpdHlSYW5nZSYg
aGVpZ2h0KCkgeyByZXR1cm4gbV9oZWlnaHQ7IH0KKyAgICB2b2lkIHNldEhlaWdodFJhbmdlKGNv
bnN0IE1lZGlhU3RyZWFtU291cmNlQ2FwYWJpbGl0eVJhbmdlJiBoZWlnaHQpIHsgbV9oZWlnaHQg
PSBoZWlnaHQ7IH0KKworICAgIGNvbnN0IE1lZGlhU3RyZWFtU291cmNlQ2FwYWJpbGl0eVJhbmdl
JiBmcmFtZVJhdGUoKSB7IHJldHVybiBtX2ZyYW1lUmF0ZTsgfQorICAgIHZvaWQgc2V0RnJhbWVS
YXRlUmFuZ2UoY29uc3QgTWVkaWFTdHJlYW1Tb3VyY2VDYXBhYmlsaXR5UmFuZ2UmIGZyYW1lUmF0
ZSkgeyBtX2ZyYW1lUmF0ZSA9IGZyYW1lUmF0ZTsgfQorCisgICAgY29uc3QgTWVkaWFTdHJlYW1T
b3VyY2VDYXBhYmlsaXR5UmFuZ2UmIGFzcGVjdFJhdGlvKCkgeyByZXR1cm4gbV9hc3BlY3RSYXRp
bzsgfQorICAgIHZvaWQgc2V0QXNwZWN0UmF0aW9SYW5nZShjb25zdCBNZWRpYVN0cmVhbVNvdXJj
ZUNhcGFiaWxpdHlSYW5nZSYgYXNwZWN0UmF0aW8pIHsgbV9hc3BlY3RSYXRpbyA9IGFzcGVjdFJh
dGlvOyB9CisKKyAgICBjb25zdCBNZWRpYVN0cmVhbVNvdXJjZUNhcGFiaWxpdHlSYW5nZSYgdm9s
dW1lKCkgeyByZXR1cm4gbV92b2x1bWU7IH0KKyAgICB2b2lkIHNldFZvbHVtZVJhbmdlKGNvbnN0
IE1lZGlhU3RyZWFtU291cmNlQ2FwYWJpbGl0eVJhbmdlJiB2b2x1bWUpIHsgbV92b2x1bWUgPSB2
b2x1bWU7IH0KKworICAgIGJvb2wgaGFzVmlkZW9Tb3VyY2UoKSB7IHJldHVybiBtX3ZpZGVvU291
cmNlOyB9CisgICAgdm9pZCBzZXRIYXNWaWRlb1NvdXJjZShib29sIGlzVmlkZW8pIHsgbV92aWRl
b1NvdXJjZSA9IGlzVmlkZW87OyB9CisKK3ByaXZhdGU6CisgICAgTWVkaWFTdHJlYW1Tb3VyY2VD
YXBhYmlsaXRpZXMoKQorICAgICAgICA6IG1fdmlkZW9Tb3VyY2UoZmFsc2UpCisgICAgeworICAg
IH0KKworICAgIFZlY3RvcjxBdG9taWNTdHJpbmc+IG1fc291cmNlSWQ7CisgICAgVmVjdG9yPE1l
ZGlhU3RyZWFtU291cmNlU3RhdGVzOjpTb3VyY2VUeXBlPiBtX3NvdXJjZVR5cGU7CisgICAgVmVj
dG9yPE1lZGlhU3RyZWFtU291cmNlU3RhdGVzOjpWaWRlb0ZhY2luZ01vZGU+IG1fZmFjaW5nTW9k
ZTsKKworICAgIE1lZGlhU3RyZWFtU291cmNlQ2FwYWJpbGl0eVJhbmdlIG1fd2lkdGg7CisgICAg
TWVkaWFTdHJlYW1Tb3VyY2VDYXBhYmlsaXR5UmFuZ2UgbV9oZWlnaHQ7CisgICAgTWVkaWFTdHJl
YW1Tb3VyY2VDYXBhYmlsaXR5UmFuZ2UgbV9mcmFtZVJhdGU7CisgICAgTWVkaWFTdHJlYW1Tb3Vy
Y2VDYXBhYmlsaXR5UmFuZ2UgbV9hc3BlY3RSYXRpbzsKKyAgICBNZWRpYVN0cmVhbVNvdXJjZUNh
cGFiaWxpdHlSYW5nZSBtX3ZvbHVtZTsKKworICAgIGJvb2wgbV92aWRlb1NvdXJjZTsKK307CisK
K30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIE1lZGlhU3RyZWFtU291cmNlQ2Fw
YWJpbGl0aWVzX2gKKworI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRp
YXN0cmVhbS9ibGFja2JlcnJ5L01lZGlhU3RyZWFtQ2VudGVyQmxhY2tCZXJyeS5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vYmxhY2tiZXJyeS9N
ZWRpYVN0cmVhbUNlbnRlckJsYWNrQmVycnkuY3BwCShyZXZpc2lvbiAxNTcwMTYpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9ibGFja2JlcnJ5L01lZGlhU3RyZWFtQ2Vu
dGVyQmxhY2tCZXJyeS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM1LDggKzM1LDEwIEBACiAKICNp
bmNsdWRlICJNZWRpYVN0cmVhbUNlbnRlckJsYWNrQmVycnkuaCIKIAorI2luY2x1ZGUgIk1lZGlh
U3RyZWFtQ3JlYXRpb25DbGllbnQuaCIKICNpbmNsdWRlICJNZWRpYVN0cmVhbURlc2NyaXB0b3Iu
aCIKLSNpbmNsdWRlICJNZWRpYVN0cmVhbVNvdXJjZXNRdWVyeUNsaWVudC5oIgorI2luY2x1ZGUg
Ik1lZGlhU3RyZWFtVHJhY2tTb3VyY2VzUmVxdWVzdENsaWVudC5oIgorI2luY2x1ZGUgIk5vdElt
cGxlbWVudGVkLmgiCiAjaW5jbHVkZSA8d3RmL01haW5UaHJlYWQuaD4KIAogbmFtZXNwYWNlIFdl
YkNvcmUgewpAQCAtNzIsMzMgKzc0LDYgQEAgYm9vbCBNZWRpYVN0cmVhbUNlbnRlckJsYWNrQmVy
cnk6OmdldE1lZAogICAgIHJldHVybiBmYWxzZTsKIH0KIAotdm9pZCBNZWRpYVN0cmVhbUNlbnRl
ckJsYWNrQmVycnk6OmRpZFNldE1lZGlhU3RyZWFtVHJhY2tFbmFibGVkKE1lZGlhU3RyZWFtU291
cmNlKikKLXsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotfQotCi1ib29sIE1lZGlhU3RyZWFtQ2Vu
dGVyQmxhY2tCZXJyeTo6ZGlkQWRkTWVkaWFTdHJlYW1UcmFjayhNZWRpYVN0cmVhbVNvdXJjZSop
Ci17Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLSAgICByZXR1cm4gZmFsc2U7Ci19Ci0KLWJvb2wg
TWVkaWFTdHJlYW1DZW50ZXJCbGFja0JlcnJ5OjpkaWRSZW1vdmVNZWRpYVN0cmVhbVRyYWNrKE1l
ZGlhU3RyZWFtU291cmNlKikKLXsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotICAgIHJldHVybiBm
YWxzZTsKLX0KLQotdm9pZCBNZWRpYVN0cmVhbUNlbnRlckJsYWNrQmVycnk6OmRpZFN0b3BMb2Nh
bE1lZGlhU3RyZWFtKE1lZGlhU3RyZWFtRGVzY3JpcHRvciogc3RyZWFtKQotewotICAgIGVuZExv
Y2FsTWVkaWFTdHJlYW0oc3RyZWFtKTsKLX0KLQotdm9pZCBNZWRpYVN0cmVhbUNlbnRlckJsYWNr
QmVycnk6OmRpZENyZWF0ZU1lZGlhU3RyZWFtKE1lZGlhU3RyZWFtRGVzY3JpcHRvciopCi17Ci0g
ICAgbm90SW1wbGVtZW50ZWQoKTsKLX0KLQogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5k
aWYgLy8gRU5BQkxFKE1FRElBX1NUUkVBTSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21lZGlhc3RyZWFtL2JsYWNrYmVycnkvTWVkaWFTdHJlYW1DZW50ZXJCbGFja0JlcnJ5LmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vYmxhY2tiZXJy
eS9NZWRpYVN0cmVhbUNlbnRlckJsYWNrQmVycnkuaAkocmV2aXNpb24gMTU3MDE2KQorKysgU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vYmxhY2tiZXJyeS9NZWRpYVN0cmVhbUNl
bnRlckJsYWNrQmVycnkuaAkod29ya2luZyBjb3B5KQpAQCAtNTAsMTUgKzUwLDkgQEAgcHVibGlj
OgogICAgIE1lZGlhU3RyZWFtQ2VudGVyQmxhY2tCZXJyeSgpOwogICAgIH5NZWRpYVN0cmVhbUNl
bnRlckJsYWNrQmVycnkoKTsKIAotICAgIC8vIE1lZGlhU3RyZWFtQ2VudGVyCiAgICAgdmlydHVh
bCB2b2lkIHZhbGlkYXRlUmVxdWVzdENvbnN0cmFpbnRzKFBhc3NSZWZQdHI8TWVkaWFTdHJlYW1D
cmVhdGlvbkNsaWVudD4sIFBhc3NSZWZQdHI8TWVkaWFDb25zdHJhaW50cz4gYXVkaW9Db25zdHJh
aW50cywgUGFzc1JlZlB0cjxNZWRpYUNvbnN0cmFpbnRzPiB2aWRlb0NvbnN0cmFpbnRzKTsKICAg
ICB2aXJ0dWFsIHZvaWQgY3JlYXRlTWVkaWFTdHJlYW0oUGFzc1JlZlB0cjxNZWRpYVN0cmVhbUNy
ZWF0aW9uQ2xpZW50PiwgUGFzc1JlZlB0cjxNZWRpYUNvbnN0cmFpbnRzPiBhdWRpb0NvbnN0cmFp
bnRzLCBQYXNzUmVmUHRyPE1lZGlhQ29uc3RyYWludHM+IHZpZGVvQ29uc3RyYWludHMpOwogICAg
IHZpcnR1YWwgYm9vbCBnZXRNZWRpYVN0cmVhbVRyYWNrU291cmNlcyhQYXNzUmVmUHRyPE1lZGlh
U3RyZWFtVHJhY2tTb3VyY2VzUmVxdWVzdENsaWVudD4pIE9WRVJSSURFOwotICAgIHZpcnR1YWwg
dm9pZCBkaWRTZXRNZWRpYVN0cmVhbVRyYWNrRW5hYmxlZChNZWRpYVN0cmVhbVNvdXJjZSopIE9W
RVJSSURFOwotICAgIHZpcnR1YWwgYm9vbCBkaWRBZGRNZWRpYVN0cmVhbVRyYWNrKE1lZGlhU3Ry
ZWFtU291cmNlKikgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCBib29sIGRpZFJlbW92ZU1lZGlhU3Ry
ZWFtVHJhY2soTWVkaWFTdHJlYW1Tb3VyY2UqKSBPVkVSUklERTsKLSAgICB2aXJ0dWFsIHZvaWQg
ZGlkU3RvcExvY2FsTWVkaWFTdHJlYW0oTWVkaWFTdHJlYW1EZXNjcmlwdG9yKikgT1ZFUlJJREU7
Ci0gICAgdmlydHVhbCB2b2lkIGRpZENyZWF0ZU1lZGlhU3RyZWFtKE1lZGlhU3RyZWFtRGVzY3Jp
cHRvciopIE9WRVJSSURFOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vZ3N0cmVhbWVyL01lZGlhU3RyZWFtQ2Vu
dGVyR1N0cmVhbWVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
ZWRpYXN0cmVhbS9nc3RyZWFtZXIvTWVkaWFTdHJlYW1DZW50ZXJHU3RyZWFtZXIuY3BwCShyZXZp
c2lvbiAxNTcwMTYpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9nc3Ry
ZWFtZXIvTWVkaWFTdHJlYW1DZW50ZXJHU3RyZWFtZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0z
NSw3ICszNSwxMSBAQAogCiAjaW5jbHVkZSAiTWVkaWFTdHJlYW1DZW50ZXJHU3RyZWFtZXIuaCIK
IAorI2luY2x1ZGUgIk1lZGlhU3RyZWFtQ3JlYXRpb25DbGllbnQuaCIKICNpbmNsdWRlICJNZWRp
YVN0cmVhbURlc2NyaXB0b3IuaCIKKyNpbmNsdWRlICJNZWRpYVN0cmVhbVNvdXJjZUNhcGFiaWxp
dGllcy5oIgorI2luY2x1ZGUgIk1lZGlhU3RyZWFtU291cmNlU3RhdGVzLmgiCisjaW5jbHVkZSAi
TWVkaWFTdHJlYW1UcmFja1NvdXJjZXNSZXF1ZXN0Q2xpZW50LmgiCiAjaW5jbHVkZSAiTm90SW1w
bGVtZW50ZWQuaCIKICNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgogCkBAIC03MiwzMyArNzYs
NiBAQCBib29sIE1lZGlhU3RyZWFtQ2VudGVyR1N0cmVhbWVyOjpnZXRNZWRpCiAgICAgcmV0dXJu
IGZhbHNlOwogfQogCi12b2lkIE1lZGlhU3RyZWFtQ2VudGVyR1N0cmVhbWVyOjpkaWRTZXRNZWRp
YVN0cmVhbVRyYWNrRW5hYmxlZChNZWRpYVN0cmVhbVNvdXJjZSopCi17Ci0gICAgbm90SW1wbGVt
ZW50ZWQoKTsKLX0KLQotYm9vbCBNZWRpYVN0cmVhbUNlbnRlckdTdHJlYW1lcjo6ZGlkQWRkTWVk
aWFTdHJlYW1UcmFjayhNZWRpYVN0cmVhbVNvdXJjZSopCi17Ci0gICAgbm90SW1wbGVtZW50ZWQo
KTsKLSAgICByZXR1cm4gZmFsc2U7Ci19Ci0KLWJvb2wgTWVkaWFTdHJlYW1DZW50ZXJHU3RyZWFt
ZXI6OmRpZFJlbW92ZU1lZGlhU3RyZWFtVHJhY2soTWVkaWFTdHJlYW1Tb3VyY2UqKQotewotICAg
IG5vdEltcGxlbWVudGVkKCk7Ci0gICAgcmV0dXJuIGZhbHNlOwotfQotCi12b2lkIE1lZGlhU3Ry
ZWFtQ2VudGVyR1N0cmVhbWVyOjpkaWRTdG9wTG9jYWxNZWRpYVN0cmVhbShNZWRpYVN0cmVhbURl
c2NyaXB0b3IqIHN0cmVhbSkKLXsKLSAgICBlbmRMb2NhbE1lZGlhU3RyZWFtKHN0cmVhbSk7Ci19
Ci0KLXZvaWQgTWVkaWFTdHJlYW1DZW50ZXJHU3RyZWFtZXI6OmRpZENyZWF0ZU1lZGlhU3RyZWFt
KE1lZGlhU3RyZWFtRGVzY3JpcHRvciopCi17Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLX0KLQog
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5BQkxFKE1FRElBX1NUUkVBTSkK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2dzdHJlYW1lci9NZWRp
YVN0cmVhbUNlbnRlckdTdHJlYW1lci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21lZGlhc3RyZWFtL2dzdHJlYW1lci9NZWRpYVN0cmVhbUNlbnRlckdTdHJlYW1lci5o
CShyZXZpc2lvbiAxNTcwMTYpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVh
bS9nc3RyZWFtZXIvTWVkaWFTdHJlYW1DZW50ZXJHU3RyZWFtZXIuaAkod29ya2luZyBjb3B5KQpA
QCAtNTAsMTUgKzUwLDkgQEAgcHVibGljOgogICAgIE1lZGlhU3RyZWFtQ2VudGVyR1N0cmVhbWVy
KCk7CiAgICAgfk1lZGlhU3RyZWFtQ2VudGVyR1N0cmVhbWVyKCk7CiAKLSAgICAvLyBNZWRpYVN0
cmVhbUNlbnRlcgogICAgIHZpcnR1YWwgdm9pZCB2YWxpZGF0ZVJlcXVlc3RDb25zdHJhaW50cyhQ
YXNzUmVmUHRyPE1lZGlhU3RyZWFtQ3JlYXRpb25DbGllbnQ+LCBQYXNzUmVmUHRyPE1lZGlhQ29u
c3RyYWludHM+IGF1ZGlvQ29uc3RyYWludHMsIFBhc3NSZWZQdHI8TWVkaWFDb25zdHJhaW50cz4g
dmlkZW9Db25zdHJhaW50cyk7CiAgICAgdmlydHVhbCB2b2lkIGNyZWF0ZU1lZGlhU3RyZWFtKFBh
c3NSZWZQdHI8TWVkaWFTdHJlYW1DcmVhdGlvbkNsaWVudD4sIFBhc3NSZWZQdHI8TWVkaWFDb25z
dHJhaW50cz4gYXVkaW9Db25zdHJhaW50cywgUGFzc1JlZlB0cjxNZWRpYUNvbnN0cmFpbnRzPiB2
aWRlb0NvbnN0cmFpbnRzKTsKICAgICB2aXJ0dWFsIGJvb2wgZ2V0TWVkaWFTdHJlYW1UcmFja1Nv
dXJjZXMoUGFzc1JlZlB0cjxNZWRpYVN0cmVhbVRyYWNrU291cmNlc1JlcXVlc3RDbGllbnQ+KSBP
VkVSUklERTsKLSAgICB2aXJ0dWFsIHZvaWQgZGlkU2V0TWVkaWFTdHJlYW1UcmFja0VuYWJsZWQo
TWVkaWFTdHJlYW1Tb3VyY2UqKSBPVkVSUklERTsKLSAgICB2aXJ0dWFsIGJvb2wgZGlkQWRkTWVk
aWFTdHJlYW1UcmFjayhNZWRpYVN0cmVhbVNvdXJjZSopIE9WRVJSSURFOwotICAgIHZpcnR1YWwg
Ym9vbCBkaWRSZW1vdmVNZWRpYVN0cmVhbVRyYWNrKE1lZGlhU3RyZWFtU291cmNlKikgT1ZFUlJJ
REU7Ci0gICAgdmlydHVhbCB2b2lkIGRpZFN0b3BMb2NhbE1lZGlhU3RyZWFtKE1lZGlhU3RyZWFt
RGVzY3JpcHRvciopIE9WRVJSSURFOwotICAgIHZpcnR1YWwgdm9pZCBkaWRDcmVhdGVNZWRpYVN0
cmVhbShNZWRpYVN0cmVhbURlc2NyaXB0b3IqKSBPVkVSUklERTsKIH07CiAKIH0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21h
Yy9NZWRpYVN0cmVhbUNlbnRlck1hYy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL01lZGlhU3RyZWFtQ2VudGVyTWFjLmNwcAkocmV2aXNp
b24gMTU3MDE2KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL01l
ZGlhU3RyZWFtQ2VudGVyTWFjLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzMsMzMgKzczLDYgQEAg
Ym9vbCBNZWRpYVN0cmVhbUNlbnRlck1hYzo6Z2V0TWVkaWFTdHJlYQogICAgIHJldHVybiBmYWxz
ZTsKIH0KIAotdm9pZCBNZWRpYVN0cmVhbUNlbnRlck1hYzo6ZGlkU2V0TWVkaWFTdHJlYW1UcmFj
a0VuYWJsZWQoTWVkaWFTdHJlYW1Tb3VyY2UqKQotewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci19
Ci0KLWJvb2wgTWVkaWFTdHJlYW1DZW50ZXJNYWM6OmRpZEFkZE1lZGlhU3RyZWFtVHJhY2soTWVk
aWFTdHJlYW1Tb3VyY2UqKQotewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci0gICAgcmV0dXJuIGZh
bHNlOwotfQotCi1ib29sIE1lZGlhU3RyZWFtQ2VudGVyTWFjOjpkaWRSZW1vdmVNZWRpYVN0cmVh
bVRyYWNrKE1lZGlhU3RyZWFtU291cmNlKikKLXsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotICAg
IHJldHVybiBmYWxzZTsKLX0KLQotdm9pZCBNZWRpYVN0cmVhbUNlbnRlck1hYzo6ZGlkU3RvcExv
Y2FsTWVkaWFTdHJlYW0oTWVkaWFTdHJlYW1EZXNjcmlwdG9yKiBzdHJlYW0pCi17Ci0gICAgZW5k
TG9jYWxNZWRpYVN0cmVhbShzdHJlYW0pOwotfQotCi12b2lkIE1lZGlhU3RyZWFtQ2VudGVyTWFj
OjpkaWRDcmVhdGVNZWRpYVN0cmVhbShNZWRpYVN0cmVhbURlc2NyaXB0b3IqKQotewotICAgIG5v
dEltcGxlbWVudGVkKCk7Ci19Ci0KIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8v
IEVOQUJMRShNRURJQV9TVFJFQU0pCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRp
YXN0cmVhbS9tYWMvTWVkaWFTdHJlYW1DZW50ZXJNYWMuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvTWVkaWFTdHJlYW1DZW50ZXJNYWMuaAko
cmV2aXNpb24gMTU3MDE2KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0v
bWFjL01lZGlhU3RyZWFtQ2VudGVyTWFjLmgJKHdvcmtpbmcgY29weSkKQEAgLTM1LDI5ICszNSwy
MCBAQAogCiAjaW5jbHVkZSAiTWVkaWFTdHJlYW1DZW50ZXIuaCIKIAorI2luY2x1ZGUgIk1lZGlh
U3RyZWFtU291cmNlLmgiCiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KICNpbmNsdWRlIDx3
dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBNZWRp
YVN0cmVhbURlc2NyaXB0b3I7Ci1jbGFzcyBNZWRpYVN0cmVhbVNvdXJjZTsKLWNsYXNzIE1lZGlh
U3RyZWFtU291cmNlc1F1ZXJ5Q2xpZW50OwotCiBjbGFzcyBNZWRpYVN0cmVhbUNlbnRlck1hYyBG
SU5BTCA6IHB1YmxpYyBNZWRpYVN0cmVhbUNlbnRlciB7CiBwdWJsaWM6CiAgICAgTWVkaWFTdHJl
YW1DZW50ZXJNYWMoKTsKICAgICB+TWVkaWFTdHJlYW1DZW50ZXJNYWMoKTsKIAotICAgIC8vIE1l
ZGlhU3RyZWFtQ2VudGVyCiAgICAgdmlydHVhbCB2b2lkIHZhbGlkYXRlUmVxdWVzdENvbnN0cmFp
bnRzKFBhc3NSZWZQdHI8TWVkaWFTdHJlYW1DcmVhdGlvbkNsaWVudD4sIFBhc3NSZWZQdHI8TWVk
aWFDb25zdHJhaW50cz4gYXVkaW9Db25zdHJhaW50cywgUGFzc1JlZlB0cjxNZWRpYUNvbnN0cmFp
bnRzPiB2aWRlb0NvbnN0cmFpbnRzKTsKICAgICB2aXJ0dWFsIHZvaWQgY3JlYXRlTWVkaWFTdHJl
YW0oUGFzc1JlZlB0cjxNZWRpYVN0cmVhbUNyZWF0aW9uQ2xpZW50PiwgUGFzc1JlZlB0cjxNZWRp
YUNvbnN0cmFpbnRzPiBhdWRpb0NvbnN0cmFpbnRzLCBQYXNzUmVmUHRyPE1lZGlhQ29uc3RyYWlu
dHM+IHZpZGVvQ29uc3RyYWludHMpOwogICAgIHZpcnR1YWwgYm9vbCBnZXRNZWRpYVN0cmVhbVRy
YWNrU291cmNlcyhQYXNzUmVmUHRyPE1lZGlhU3RyZWFtVHJhY2tTb3VyY2VzUmVxdWVzdENsaWVu
dD4pIE9WRVJSSURFOwotICAgIHZpcnR1YWwgdm9pZCBkaWRTZXRNZWRpYVN0cmVhbVRyYWNrRW5h
YmxlZChNZWRpYVN0cmVhbVNvdXJjZSopIE9WRVJSSURFOwotICAgIHZpcnR1YWwgYm9vbCBkaWRB
ZGRNZWRpYVN0cmVhbVRyYWNrKE1lZGlhU3RyZWFtU291cmNlKikgT1ZFUlJJREU7Ci0gICAgdmly
dHVhbCBib29sIGRpZFJlbW92ZU1lZGlhU3RyZWFtVHJhY2soTWVkaWFTdHJlYW1Tb3VyY2UqKSBP
VkVSUklERTsKLSAgICB2aXJ0dWFsIHZvaWQgZGlkU3RvcExvY2FsTWVkaWFTdHJlYW0oTWVkaWFT
dHJlYW1EZXNjcmlwdG9yKikgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCB2b2lkIGRpZENyZWF0ZU1l
ZGlhU3RyZWFtKE1lZGlhU3RyZWFtRGVzY3JpcHRvciopIE9WRVJSSURFOwogfTsKIAogfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9Nb2Nr
TWVkaWFTdHJlYW1DZW50ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21vY2svTW9ja01lZGlhU3RyZWFtQ2VudGVyLmNwcAkocmV2aXNpb24gMTU3MDE2KQorKysg
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9Nb2NrTWVkaWFTdHJlYW1DZW50ZXIuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0zMiwxMiArMzIsOTcgQEAKICNpbmNsdWRlICJNZWRpYVN0cmVhbS5o
IgogI2luY2x1ZGUgIk1lZGlhU3RyZWFtQ3JlYXRpb25DbGllbnQuaCIKICNpbmNsdWRlICJNZWRp
YVN0cmVhbURlc2NyaXB0b3IuaCIKKyNpbmNsdWRlICJNZWRpYVN0cmVhbVNvdXJjZS5oIgorI2lu
Y2x1ZGUgIk1lZGlhU3RyZWFtU291cmNlQ2FwYWJpbGl0aWVzLmgiCiAjaW5jbHVkZSAiTWVkaWFT
dHJlYW1UcmFjay5oIgogI2luY2x1ZGUgIk1lZGlhU3RyZWFtVHJhY2tTb3VyY2VzUmVxdWVzdENs
aWVudC5oIgotI2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCisjaW5jbHVkZSA8d3RmL05ldmVy
RGVzdHJveWVkLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgTW9ja1NvdXJjZSA6
IHB1YmxpYyBNZWRpYVN0cmVhbVNvdXJjZSB7CitwdWJsaWM6CisgICAgTW9ja1NvdXJjZShjb25z
dCBBdG9taWNTdHJpbmcmIGlkLCBjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUsIE1lZGlhU3RyZWFt
U291cmNlOjpUeXBlIHR5cGUpCisgICAgICAgIDogTWVkaWFTdHJlYW1Tb3VyY2UoaWQsIHR5cGUs
IG5hbWUpCisgICAgeworICAgIH0KKworICAgIHZpcnR1YWwgfk1vY2tTb3VyY2UoKSB7IH0KKwor
ICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxNZWRpYVN0cmVhbVNvdXJjZUNhcGFiaWxpdGllcz4gY2Fw
YWJpbGl0aWVzKCkgY29uc3QgeyByZXR1cm4gbV9jYXBhYmlsaXRpZXM7IH0KKyAgICB2aXJ0dWFs
IGNvbnN0IE1lZGlhU3RyZWFtU291cmNlU3RhdGVzJiBzdGF0ZXMoKSB7IHJldHVybiBtX2N1cnJl
bnRTdGF0ZXM7IH0KKworICAgIFJlZlB0cjxNZWRpYVN0cmVhbVNvdXJjZUNhcGFiaWxpdGllcz4g
bV9jYXBhYmlsaXRpZXM7CisgICAgTWVkaWFTdHJlYW1Tb3VyY2VTdGF0ZXMgbV9jdXJyZW50U3Rh
dGVzOworfTsKKyAgICAKK3R5cGVkZWYgSGFzaE1hcDxTdHJpbmcsIFJlZlB0cjxNb2NrU291cmNl
Pj4gTW9ja1NvdXJjZU1hcDsKKworc3RhdGljIE1vY2tTb3VyY2VNYXAmIG1vY2tTb3VyY2VNYXAo
KQoreworICAgIERFRklORV9TVEFUSUNfTE9DQUwoTW9ja1NvdXJjZU1hcCwgbW9ja1NvdXJjZU1h
cCwgKCkpOworICAgIHJldHVybiBtb2NrU291cmNlTWFwOworfQorCitzdGF0aWMgY29uc3QgQXRv
bWljU3RyaW5nJiBtb2NrQXVkaW9Tb3VyY2VJRCgpCit7CisgICAgc3RhdGljIE5ldmVyRGVzdHJv
eWVkPEF0b21pY1N0cmluZz4gaWQoIjIzOWMyNGIxLTJiMTUtMTFlMy04MjI0LTA4MDAyMDBjOWE2
NiIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOworICAgIHJldHVybiBpZDsK
K30KKworc3RhdGljIGNvbnN0IEF0b21pY1N0cmluZyYgbW9ja1ZpZGVvU291cmNlSUQoKQorewor
ICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxBdG9taWNTdHJpbmc+IGlkKCIyMzljMjRiMC0yYjE1
LTExZTMtODIyNC0wODAwMjAwYzlhNjYiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRl
cmFsKTsKKyAgICByZXR1cm4gaWQ7Cit9CisKK3N0YXRpYyB2b2lkIGluaXRpYWxpemVNb2NrU291
cmNlcygpCit7CisgICAgUmVmUHRyPE1vY2tTb3VyY2U+IG1vY2tTb3VyY2UxID0gYWRvcHRSZWYo
bmV3IE1vY2tTb3VyY2UobW9ja1ZpZGVvU291cmNlSUQoKSwgIk1vY2sgdmlkZW8gZGV2aWNlIiwg
TWVkaWFTdHJlYW1Tb3VyY2U6OlZpZGVvKSk7CisgICAgbW9ja1NvdXJjZTEtPm1fY2FwYWJpbGl0
aWVzID0gTWVkaWFTdHJlYW1Tb3VyY2VDYXBhYmlsaXRpZXM6OmNyZWF0ZSgpOworICAgIG1vY2tT
b3VyY2UxLT5tX2NhcGFiaWxpdGllcy0+c2V0U291cmNlSWQobW9ja1NvdXJjZTEtPmlkKCkpOwor
ICAgIG1vY2tTb3VyY2UxLT5tX2NhcGFiaWxpdGllcy0+YWRkU291cmNlVHlwZShNZWRpYVN0cmVh
bVNvdXJjZVN0YXRlczo6Q2FtZXJhKTsKKyAgICBtb2NrU291cmNlMS0+bV9jYXBhYmlsaXRpZXMt
PmFkZFNvdXJjZVR5cGUoTWVkaWFTdHJlYW1Tb3VyY2VTdGF0ZXM6Ok1pY3JvcGhvbmUpOworICAg
IG1vY2tTb3VyY2UxLT5tX2NhcGFiaWxpdGllcy0+YWRkRmFjaW5nTW9kZShNZWRpYVN0cmVhbVNv
dXJjZVN0YXRlczo6VXNlcik7CisgICAgbW9ja1NvdXJjZTEtPm1fY2FwYWJpbGl0aWVzLT5hZGRG
YWNpbmdNb2RlKE1lZGlhU3RyZWFtU291cmNlU3RhdGVzOjpFbnZpcm9ubWVudCk7CisgICAgbW9j
a1NvdXJjZTEtPm1fY2FwYWJpbGl0aWVzLT5zZXRXaWR0aFJhbmdlKE1lZGlhU3RyZWFtU291cmNl
Q2FwYWJpbGl0eVJhbmdlKDMyMFVMLCAxOTIwVUwsIHRydWUpKTsKKyAgICBtb2NrU291cmNlMS0+
bV9jYXBhYmlsaXRpZXMtPnNldEhlaWdodFJhbmdlKE1lZGlhU3RyZWFtU291cmNlQ2FwYWJpbGl0
eVJhbmdlKDI0MFVMLCAxMDgwVUwsIHRydWUpKTsKKyAgICBtb2NrU291cmNlMS0+bV9jYXBhYmls
aXRpZXMtPnNldEZyYW1lUmF0ZVJhbmdlKE1lZGlhU3RyZWFtU291cmNlQ2FwYWJpbGl0eVJhbmdl
KDE1LjBmLCA2MC4wZiwgdHJ1ZSkpOworICAgIG1vY2tTb3VyY2UxLT5tX2NhcGFiaWxpdGllcy0+
c2V0QXNwZWN0UmF0aW9SYW5nZShNZWRpYVN0cmVhbVNvdXJjZUNhcGFiaWxpdHlSYW5nZSg0IC8g
My4wZiwgMTYgLyA5LjBmLCB0cnVlKSk7CisgICAgbW9ja1NvdXJjZTEtPm1fY2FwYWJpbGl0aWVz
LT5zZXRWb2x1bWVSYW5nZShNZWRpYVN0cmVhbVNvdXJjZUNhcGFiaWxpdHlSYW5nZSgxMFVMLCA5
MFVMLCB0cnVlKSk7CisKKyAgICBtb2NrU291cmNlMS0+bV9jdXJyZW50U3RhdGVzLnNvdXJjZVR5
cGUgPSBNZWRpYVN0cmVhbVNvdXJjZVN0YXRlczo6Q2FtZXJhOworICAgIG1vY2tTb3VyY2UxLT5t
X2N1cnJlbnRTdGF0ZXMuc291cmNlSWQgPSBtb2NrU291cmNlMS0+aWQoKTsKKyAgICBtb2NrU291
cmNlMS0+bV9jdXJyZW50U3RhdGVzLmZhY2luZ01vZGUgPSBNZWRpYVN0cmVhbVNvdXJjZVN0YXRl
czo6VXNlcjsKKyAgICBtb2NrU291cmNlMS0+bV9jdXJyZW50U3RhdGVzLndpZHRoID0gMTkyMDsK
KyAgICBtb2NrU291cmNlMS0+bV9jdXJyZW50U3RhdGVzLmhlaWdodCA9IDEwODA7CisgICAgbW9j
a1NvdXJjZTEtPm1fY3VycmVudFN0YXRlcy5mcmFtZVJhdGUgPSAzMDsKKyAgICBtb2NrU291cmNl
MS0+bV9jdXJyZW50U3RhdGVzLmFzcGVjdFJhdGlvID0gMTYgLyA5LjBmOworICAgIG1vY2tTb3Vy
Y2UxLT5tX2N1cnJlbnRTdGF0ZXMudm9sdW1lID0gNzA7CisgICAgbW9ja1NvdXJjZU1hcCgpLmFk
ZChtb2NrU291cmNlMS0+aWQoKSwgbW9ja1NvdXJjZTEucmVsZWFzZSgpKTsKKworICAgIFJlZlB0
cjxNb2NrU291cmNlPiBtb2NrU291cmNlMiA9IGFkb3B0UmVmKG5ldyBNb2NrU291cmNlKG1vY2tB
dWRpb1NvdXJjZUlEKCksICJNb2NrIGF1ZGlvIGRldmljZSIsIE1lZGlhU3RyZWFtU291cmNlOjpB
dWRpbykpOworICAgIG1vY2tTb3VyY2UyLT5tX2NhcGFiaWxpdGllcyA9IE1lZGlhU3RyZWFtU291
cmNlQ2FwYWJpbGl0aWVzOjpjcmVhdGUoKTsKKyAgICBtb2NrU291cmNlMi0+bV9jYXBhYmlsaXRp
ZXMtPnNldFNvdXJjZUlkKG1vY2tTb3VyY2UyLT5pZCgpKTsKKyAgICBtb2NrU291cmNlMi0+bV9j
YXBhYmlsaXRpZXMtPnNldFZvbHVtZVJhbmdlKE1lZGlhU3RyZWFtU291cmNlQ2FwYWJpbGl0eVJh
bmdlKDBVTCwgMTAwVUwsIHRydWUpKTsKKworICAgIG1vY2tTb3VyY2UyLT5tX2N1cnJlbnRTdGF0
ZXMuc291cmNlVHlwZSA9IE1lZGlhU3RyZWFtU291cmNlU3RhdGVzOjpNaWNyb3Bob25lOworICAg
IG1vY2tTb3VyY2UyLT5tX2N1cnJlbnRTdGF0ZXMuc291cmNlSWQgPSBtb2NrU291cmNlMi0+aWQo
KTsKKyAgICBtb2NrU291cmNlMi0+bV9jdXJyZW50U3RhdGVzLnZvbHVtZSA9IDUwOworICAgIG1v
Y2tTb3VyY2VNYXAoKS5hZGQobW9ja1NvdXJjZTItPmlkKCksIG1vY2tTb3VyY2UyLnJlbGVhc2Uo
KSk7Cit9CisKK3ZvaWQgTW9ja01lZGlhU3RyZWFtQ2VudGVyOjpyZWdpc3Rlck1vY2tNZWRpYVN0
cmVhbUNlbnRlcigpCit7CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChNb2NrTWVkaWFTdHJlYW1D
ZW50ZXIsIGNlbnRlciwgKCkpOworICAgIHN0YXRpYyBib29sIHJlZ2lzdGVyZWQgPSBmYWxzZTsK
KyAgICBpZiAoIXJlZ2lzdGVyZWQpIHsKKyAgICAgICAgcmVnaXN0ZXJlZCA9IHRydWU7CisgICAg
ICAgIE1lZGlhU3RyZWFtQ2VudGVyOjpzZXRTaGFyZWRTdHJlYW1DZW50ZXIoJmNlbnRlcik7Cisg
ICAgICAgIGluaXRpYWxpemVNb2NrU291cmNlcygpOworICAgIH0KK30KKwogc3RhdGljIGJvb2wg
aXNTdXBwb3J0ZWRNb2NrQ29uc3RyYWludChjb25zdCBTdHJpbmcmIGNvbnN0cmFpbnROYW1lKQog
ewogICAgIHJldHVybiBub3RGb3VuZCAhPSBjb25zdHJhaW50TmFtZS5maW5kKCJfYW5kX3N1cHBv
cnRlZF8iKTsKQEAgLTc1LDE2ICsxNjAsNiBAQCBzdGF0aWMgU3RyaW5nIHZlcmlmeUNvbnN0cmFp
bnRzKE1lZGlhQ29uCiAgICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7CiB9CiAKLXZvaWQgTW9ja01l
ZGlhU3RyZWFtQ2VudGVyOjpyZWdpc3Rlck1vY2tNZWRpYVN0cmVhbUNlbnRlcigpCi17Ci0gICAg
REVGSU5FX1NUQVRJQ19MT0NBTChNb2NrTWVkaWFTdHJlYW1DZW50ZXIsIGNlbnRlciwgKCkpOwot
ICAgIHN0YXRpYyBib29sIHJlZ2lzdGVyZWQgPSBmYWxzZTsKLSAgICBpZiAoIXJlZ2lzdGVyZWQp
IHsKLSAgICAgICAgcmVnaXN0ZXJlZCA9IHRydWU7Ci0gICAgICAgIE1lZGlhU3RyZWFtQ2VudGVy
OjpzZXRTaGFyZWRTdHJlYW1DZW50ZXIoJmNlbnRlcik7Ci0gICAgfQotfQotCiB2b2lkIE1vY2tN
ZWRpYVN0cmVhbUNlbnRlcjo6dmFsaWRhdGVSZXF1ZXN0Q29uc3RyYWludHMoUGFzc1JlZlB0cjxN
ZWRpYVN0cmVhbUNyZWF0aW9uQ2xpZW50PiBwcnBRdWVyeUNsaWVudCwgUGFzc1JlZlB0cjxNZWRp
YUNvbnN0cmFpbnRzPiBhdWRpb0NvbnN0cmFpbnRzLCBQYXNzUmVmUHRyPE1lZGlhQ29uc3RyYWlu
dHM+IHZpZGVvQ29uc3RyYWludHMpCiB7CiAgICAgUmVmUHRyPE1lZGlhU3RyZWFtQ3JlYXRpb25D
bGllbnQ+IGNsaWVudCA9IHBycFF1ZXJ5Q2xpZW50OwpAQCAtMTE4LDYgKzE5Myw3IEBAIHZvaWQg
TW9ja01lZGlhU3RyZWFtQ2VudGVyOjpjcmVhdGVNZWRpYVMKICAgICAKICAgICBWZWN0b3I8UmVm
UHRyPE1lZGlhU3RyZWFtU291cmNlPj4gYXVkaW9Tb3VyY2VzOwogICAgIFZlY3RvcjxSZWZQdHI8
TWVkaWFTdHJlYW1Tb3VyY2U+PiB2aWRlb1NvdXJjZXM7CisgICAgTW9ja1NvdXJjZU1hcCYgbWFw
ID0gbW9ja1NvdXJjZU1hcCgpOwogCiAgICAgaWYgKGF1ZGlvQ29uc3RyYWludHMpIHsKICAgICAg
ICAgU3RyaW5nIGludmFsaWRRdWVyeSA9IHZlcmlmeUNvbnN0cmFpbnRzKGF1ZGlvQ29uc3RyYWlu
dHMuZ2V0KCkpOwpAQCAtMTI3LDcgKzIwMywxMSBAQCB2b2lkIE1vY2tNZWRpYVN0cmVhbUNlbnRl
cjo6Y3JlYXRlTWVkaWFTCiAgICAgICAgIH0KIAogICAgICAgICBpZiAoYXVkaW9Db25zdHJhaW50
cykgewotICAgICAgICAgICAgUmVmUHRyPE1lZGlhU3RyZWFtU291cmNlPiBhdWRpb1NvdXJjZSA9
IE1lZGlhU3RyZWFtU291cmNlOjpjcmVhdGUoZW1wdHlTdHJpbmcoKSwgTWVkaWFTdHJlYW1Tb3Vy
Y2U6OkF1ZGlvLCAiTW9jayBhdWRpbyBkZXZpY2UiKTsKKyAgICAgICAgICAgIE1vY2tTb3VyY2VN
YXA6Oml0ZXJhdG9yIGl0ID0gbWFwLmZpbmQobW9ja0F1ZGlvU291cmNlSUQoKSk7CisgICAgICAg
ICAgICBBU1NFUlQoaXQgIT0gbWFwLmVuZCgpKTsKKworICAgICAgICAgICAgUmVmUHRyPE1lZGlh
U3RyZWFtU291cmNlPiBhdWRpb1NvdXJjZSA9IGl0LT52YWx1ZTsKKyAgICAgICAgICAgIGF1ZGlv
U291cmNlLT5yZXNldCgpOwogICAgICAgICAgICAgYXVkaW9Tb3VyY2UtPnNldFJlYWR5U3RhdGUo
TWVkaWFTdHJlYW1Tb3VyY2U6OkxpdmUpOwogICAgICAgICAgICAgYXVkaW9Tb3VyY2VzLmFwcGVu
ZChhdWRpb1NvdXJjZS5yZWxlYXNlKCkpOwogICAgICAgICB9CkBAIC0xNDEsNyArMjIxLDExIEBA
IHZvaWQgTW9ja01lZGlhU3RyZWFtQ2VudGVyOjpjcmVhdGVNZWRpYVMKICAgICAgICAgfQogCiAg
ICAgICAgIGlmICh2aWRlb0NvbnN0cmFpbnRzKSB7Ci0gICAgICAgICAgICBSZWZQdHI8TWVkaWFT
dHJlYW1Tb3VyY2U+IHZpZGVvU291cmNlID0gTWVkaWFTdHJlYW1Tb3VyY2U6OmNyZWF0ZShlbXB0
eVN0cmluZygpLCBNZWRpYVN0cmVhbVNvdXJjZTo6VmlkZW8sICJNb2NrIHZpZGVvIGRldmljZSIp
OworICAgICAgICAgICAgTW9ja1NvdXJjZU1hcDo6aXRlcmF0b3IgaXQgPSBtYXAuZmluZChtb2Nr
VmlkZW9Tb3VyY2VJRCgpKTsKKyAgICAgICAgICAgIEFTU0VSVChpdCAhPSBtYXAuZW5kKCkpOwor
CisgICAgICAgICAgICBSZWZQdHI8TWVkaWFTdHJlYW1Tb3VyY2U+IHZpZGVvU291cmNlID0gaXQt
PnZhbHVlOworICAgICAgICAgICAgdmlkZW9Tb3VyY2UtPnJlc2V0KCk7CiAgICAgICAgICAgICB2
aWRlb1NvdXJjZS0+c2V0UmVhZHlTdGF0ZShNZWRpYVN0cmVhbVNvdXJjZTo6TGl2ZSk7CiAgICAg
ICAgICAgICB2aWRlb1NvdXJjZXMuYXBwZW5kKHZpZGVvU291cmNlLnJlbGVhc2UoKSk7CiAgICAg
ICAgIH0KQEAgLTE1MywzOSArMjM3LDIwIEBAIHZvaWQgTW9ja01lZGlhU3RyZWFtQ2VudGVyOjpj
cmVhdGVNZWRpYVMKIGJvb2wgTW9ja01lZGlhU3RyZWFtQ2VudGVyOjpnZXRNZWRpYVN0cmVhbVRy
YWNrU291cmNlcyhQYXNzUmVmUHRyPE1lZGlhU3RyZWFtVHJhY2tTb3VyY2VzUmVxdWVzdENsaWVu
dD4gcHJwQ2xpZW50KQogewogICAgIFJlZlB0cjxNZWRpYVN0cmVhbVRyYWNrU291cmNlc1JlcXVl
c3RDbGllbnQ+IHJlcXVlc3RDbGllbnQgPSBwcnBDbGllbnQ7Ci0gICAgVmVjdG9yPFJlZlB0cjxU
cmFja1NvdXJjZUluZm8+PiBzb3VyY2VzKDIpOworICAgIFZlY3RvcjxSZWZQdHI8VHJhY2tTb3Vy
Y2VJbmZvPj4gc291cmNlczsKIAotICAgIHNvdXJjZXNbMF0gPSBUcmFja1NvdXJjZUluZm86OmNy
ZWF0ZSgiTW9ja19hdWRpb19kZXZpY2VfSUQiLCBUcmFja1NvdXJjZUluZm86OkF1ZGlvLCAiTW9j
ayBhdWRpbyBkZXZpY2UiKTsKLSAgICBzb3VyY2VzWzFdID0gVHJhY2tTb3VyY2VJbmZvOjpjcmVh
dGUoIk1vY2tfdmlkZW9fZGV2aWNlX0lEIiwgVHJhY2tTb3VyY2VJbmZvOjpWaWRlbywgIk1vY2sg
dmlkZW8gZGV2aWNlIik7Ci0KLSAgICByZXF1ZXN0Q2xpZW50LT5kaWRDb21wbGV0ZVJlcXVlc3Qo
c291cmNlcyk7Ci0gICAgcmV0dXJuIHRydWU7Ci19CisgICAgTW9ja1NvdXJjZU1hcCYgbWFwID0g
bW9ja1NvdXJjZU1hcCgpOworICAgIE1vY2tTb3VyY2VNYXA6Oml0ZXJhdG9yIGVuZCA9IG1hcC5l
bmQoKTsKKyAgICBmb3IgKE1vY2tTb3VyY2VNYXA6Oml0ZXJhdG9yIGl0ID0gbWFwLmJlZ2luKCk7
IGl0ICE9IGVuZDsgKytpdCkgeworICAgICAgICBNb2NrU291cmNlKiBzb3VyY2UgPSBpdC0+dmFs
dWUuZ2V0KCk7CiAKLXZvaWQgTW9ja01lZGlhU3RyZWFtQ2VudGVyOjpkaWRTZXRNZWRpYVN0cmVh
bVRyYWNrRW5hYmxlZChNZWRpYVN0cmVhbVNvdXJjZSogc291cmNlKQotewotICAgIHNvdXJjZS0+
c2V0UmVhZHlTdGF0ZShNZWRpYVN0cmVhbVNvdXJjZTo6TGl2ZSk7Ci19Ci0KLWJvb2wgTW9ja01l
ZGlhU3RyZWFtQ2VudGVyOjpkaWRBZGRNZWRpYVN0cmVhbVRyYWNrKE1lZGlhU3RyZWFtU291cmNl
KikKLXsKLSAgICByZXR1cm4gdHJ1ZTsKLX0KKyAgICAgICAgc291cmNlc1swXSA9IFRyYWNrU291
cmNlSW5mbzo6Y3JlYXRlKHNvdXJjZS0+aWQoKSwgc291cmNlLT50eXBlKCkgPT0gTWVkaWFTdHJl
YW1Tb3VyY2U6OlZpZGVvID8gVHJhY2tTb3VyY2VJbmZvOjpWaWRlbyA6IFRyYWNrU291cmNlSW5m
bzo6QXVkaW8sIHNvdXJjZS0+bmFtZSgpKTsKKyAgICB9CiAKLWJvb2wgTW9ja01lZGlhU3RyZWFt
Q2VudGVyOjpkaWRSZW1vdmVNZWRpYVN0cmVhbVRyYWNrKE1lZGlhU3RyZWFtU291cmNlKikKLXsK
KyAgICByZXF1ZXN0Q2xpZW50LT5kaWRDb21wbGV0ZVJlcXVlc3Qoc291cmNlcyk7CiAgICAgcmV0
dXJuIHRydWU7CiB9CiAKLXZvaWQgTW9ja01lZGlhU3RyZWFtQ2VudGVyOjpkaWRTdG9wTG9jYWxN
ZWRpYVN0cmVhbShNZWRpYVN0cmVhbURlc2NyaXB0b3IqIHN0cmVhbSkKLXsKLSAgICBlbmRMb2Nh
bE1lZGlhU3RyZWFtKHN0cmVhbSk7Ci19Ci0KLXZvaWQgTW9ja01lZGlhU3RyZWFtQ2VudGVyOjpk
aWRDcmVhdGVNZWRpYVN0cmVhbShNZWRpYVN0cmVhbURlc2NyaXB0b3IqKQotewotfQotCiB9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBFTkFCTEUoTUVESUFfU1RSRUFNKQpJbmRl
eDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9Nb2NrTWVkaWFTdHJlYW1DZW50ZXIuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01vY2tNZWRpYVN0cmVh
bUNlbnRlci5oCShyZXZpc2lvbiAxNTcwMTYpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
b2NrL01vY2tNZWRpYVN0cmVhbUNlbnRlci5oCSh3b3JraW5nIGNvcHkpCkBAIC00MCwxMSArNDAs
NiBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHZhbGlkYXRlUmVxdWVzdENvbnN0cmFpbnRz
KFBhc3NSZWZQdHI8TWVkaWFTdHJlYW1DcmVhdGlvbkNsaWVudD4sIFBhc3NSZWZQdHI8TWVkaWFD
b25zdHJhaW50cz4gYXVkaW9Db25zdHJhaW50cywgUGFzc1JlZlB0cjxNZWRpYUNvbnN0cmFpbnRz
PiB2aWRlb0NvbnN0cmFpbnRzKTsKICAgICB2aXJ0dWFsIHZvaWQgY3JlYXRlTWVkaWFTdHJlYW0o
UGFzc1JlZlB0cjxNZWRpYVN0cmVhbUNyZWF0aW9uQ2xpZW50PiwgUGFzc1JlZlB0cjxNZWRpYUNv
bnN0cmFpbnRzPiBhdWRpb0NvbnN0cmFpbnRzLCBQYXNzUmVmUHRyPE1lZGlhQ29uc3RyYWludHM+
IHZpZGVvQ29uc3RyYWludHMpOwogICAgIHZpcnR1YWwgYm9vbCBnZXRNZWRpYVN0cmVhbVRyYWNr
U291cmNlcyhQYXNzUmVmUHRyPE1lZGlhU3RyZWFtVHJhY2tTb3VyY2VzUmVxdWVzdENsaWVudD4p
IE9WRVJSSURFOwotICAgIHZpcnR1YWwgdm9pZCBkaWRTZXRNZWRpYVN0cmVhbVRyYWNrRW5hYmxl
ZChNZWRpYVN0cmVhbVNvdXJjZSopIE9WRVJSSURFOwotICAgIHZpcnR1YWwgYm9vbCBkaWRBZGRN
ZWRpYVN0cmVhbVRyYWNrKE1lZGlhU3RyZWFtU291cmNlKikgT1ZFUlJJREU7Ci0gICAgdmlydHVh
bCBib29sIGRpZFJlbW92ZU1lZGlhU3RyZWFtVHJhY2soTWVkaWFTdHJlYW1Tb3VyY2UqKSBPVkVS
UklERTsKLSAgICB2aXJ0dWFsIHZvaWQgZGlkU3RvcExvY2FsTWVkaWFTdHJlYW0oTWVkaWFTdHJl
YW1EZXNjcmlwdG9yKikgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCB2b2lkIGRpZENyZWF0ZU1lZGlh
U3RyZWFtKE1lZGlhU3RyZWFtRGVzY3JpcHRvciopIE9WRVJSSURFOwogCiBwcml2YXRlOgogICAg
IE1vY2tNZWRpYVN0cmVhbUNlbnRlcigpIHsgfQpJbmRleDogTGF5b3V0VGVzdHMvQ2hhbmdlTG9n
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL0NoYW5nZUxvZwkocmV2aXNpb24gMTU3MDE2KQor
KysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTIgQEAK
KzIwMTMtMTAtMDYgIEVyaWMgQ2FybHNvbiAgPGVyaWMuY2FybHNvbkBhcHBsZS5jb20+CisKKyAg
ICAgICAgW01lZGlhU3RyZWFtIEFQSV0gdXBkYXRlIE1lZGlhU3RyZWFtVHJhY2sgb2JqZWN0IHRv
IG1hdGNoIHNwZWMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTEyMTk0MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgICogZmFzdC9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVRyYWNrLmh0bWw6CisKIDIwMTMtMTAt
MDYgIEZpbGlwIFBpemxvICA8ZnBpemxvQGFwcGxlLmNvbT4KIAogICAgICAgICBVbmlmaWVkIHRl
c3QgaW5mcmFzdHJ1Y3R1cmUgdmlhIHRoZSBqc2Mgc2hlbGwKSW5kZXg6IExheW91dFRlc3RzL2Zh
c3QvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1UcmFjay5odG1sCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91
dFRlc3RzL2Zhc3QvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1UcmFjay5odG1sCShyZXZpc2lvbiAx
NTcwMTYpCisrKyBMYXlvdXRUZXN0cy9mYXN0L21lZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJhY2su
aHRtbAkod29ya2luZyBjb3B5KQpAQCAtMSw3OSArMSwxNzAgQEAKIDwhRE9DVFlQRSBIVE1MIFBV
QkxJQyAiLS8vSUVURi8vRFREIEhUTUwvL0VOIj4KIDxodG1sPgotPGhlYWQ+Ci08c2NyaXB0IHNy
Yz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KLTwvaGVhZD4KLTxi
b2R5PgotPHAgaWQ9ImRlc2NyaXB0aW9uIj48L3A+Ci08ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4K
LTxzY3JpcHQ+Ci1kZXNjcmlwdGlvbigiVGVzdHMgTWVkaWFTdHJlYW1UcmFjayBjYWxsYmFja3Mu
Iik7Ci0KLS8vIE5vdGUgdGhhdCB0aGUgYmVsb3cgYmVoYXZpb3VyIGRvZXNuJ3QgcmVmbGVjdCBo
b3cgaXQgd29ya3Mgb3V0c2lkZSBvZiBMYXlvdXRUZXN0cy4KLS8vIFRoZSB1bmRlcmx5aW5nIG1v
Y2sgaXMgbW9kaWZpZWQgdG8gdHJpZ2dlciB0aGUgZXZlbnRzIHdoZW4gY2VydGFpbiBmdW5jdGlv
bnMgYXJlIGNhbGxlZC4KLS8vIFRoaXMgbW9kaWZpZWQgYmVoYXZpb3VyIGFsbG93cyB1cyB0byB0
ZXN0IHRoZSBNZWRpYVN0cmVhbVRyYWNrIGNsYXNzIHByb3Blcmx5LgotCi12YXIgc3RyZWFtOwot
dmFyIHRyYWNrOwotCi1mdW5jdGlvbiBlcnJvcigpIHsKLSAgICB0ZXN0RmFpbGVkKCdTdHJlYW0g
Z2VuZXJhdGlvbiBmYWlsZWQuJyk7Ci0gICAgZmluaXNoSlNUZXN0KCk7Ci19Ci0KLWZ1bmN0aW9u
IGdldFVzZXJNZWRpYShjb25zdHJhaW50cywgY2FsbGJhY2spIHsKLSAgICB0cnkgewotICAgICAg
ICBuYXZpZ2F0b3Iud2Via2l0R2V0VXNlck1lZGlhKGNvbnN0cmFpbnRzLCBjYWxsYmFjaywgZXJy
b3IpOwotICAgIH0gY2F0Y2ggKGUpIHsKLSAgICAgICAgdGVzdEZhaWxlZCgnd2Via2l0R2V0VXNl
ck1lZGlhIHRocmV3IGV4Y2VwdGlvbiA6JyArIGUpOwotICAgICAgICBmaW5pc2hKU1Rlc3QoKTsK
LSAgICB9Ci19Ci0KLWZ1bmN0aW9uIG9uVHJhY2tFbmRlZCgpIHsKLSAgICB0ZXN0UGFzc2VkKCdU
cmFjayBvbmVuZGVkIGNhbGxiYWNrIHN1Y2NlZWRlZC4nKTsKLQotICAgIHNob3VsZEJlRXF1YWxU
b1N0cmluZygndHJhY2sucmVhZHlTdGF0ZScsICdlbmRlZCcpOwotCi0gICAgZmluaXNoSlNUZXN0
KCk7Ci19Ci0KLWZ1bmN0aW9uIG9uVHJhY2tVbm11dGUoKSB7Ci0gICAgdGVzdFBhc3NlZCgnVHJh
Y2sgb251bm11dGUgY2FsbGJhY2sgc3VjY2VlZGVkLicpOwotCi0gICAgc2hvdWxkQmVFcXVhbFRv
U3RyaW5nKCd0cmFjay5yZWFkeVN0YXRlJywgJ2xpdmUnKTsKLQotICAgIHN0cmVhbS5zdG9wKCk7
Ci19Ci0KLWZ1bmN0aW9uIG9uVHJhY2tNdXRlKCkgewotICAgIHRlc3RQYXNzZWQoJ1RyYWNrIG9u
bXV0ZSBjYWxsYmFjayBzdWNjZWVkZWQuJyk7Ci0KLSAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmco
J3RyYWNrLnJlYWR5U3RhdGUnLCAnbXV0ZWQnKTsKLQotICAgIHRyYWNrLmVuYWJsZWQgPSB0cnVl
OwotfQotCi1mdW5jdGlvbiBnb3RTdHJlYW0ocykgewotICAgIHRlc3RQYXNzZWQoJ2dldFVzZXJN
ZWRpYSBzdWNjZWVkZWQuJyk7Ci0KLSAgICBzdHJlYW0gPSBzOwotICAgIHRyYWNrID0gc3RyZWFt
LmdldFZpZGVvVHJhY2tzKClbMF07Ci0KLSAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoJ3RyYWNr
LnJlYWR5U3RhdGUnLCAnbGl2ZScpOwotCi0gICAgdHJhY2sub251bm11dGUgPSBvblRyYWNrVW5t
dXRlOwotICAgIHRyYWNrLm9ubXV0ZSA9IG9uVHJhY2tNdXRlOwotICAgIHRyYWNrLm9uZW5kZWQg
PSBvblRyYWNrRW5kZWQ7Ci0KLSAgICB0cmFjay5lbmFibGVkID0gZmFsc2U7Ci19Ci0KLWdldFVz
ZXJNZWRpYSh7YXVkaW86dHJ1ZSwgdmlkZW86dHJ1ZX0sIGdvdFN0cmVhbSk7Ci0KLXdpbmRvdy5q
c1Rlc3RJc0FzeW5jID0gdHJ1ZTsKLXdpbmRvdy5zdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOwot
PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+
PC9zY3JpcHQ+Ci08L2JvZHk+CisgICAgPGhlYWQ+CisgICAgICAgIDxzY3JpcHQgc3JjPSIuLi8u
Li9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorICAgICAgICA8c2NyaXB0Pgor
ICAgICAgICAgICAgdmFyIG1lZGlhU3RyZWFtOworICAgICAgICAgICAgdmFyIHZpZGVvVHJhY2s7
CisgICAgICAgICAgICB2YXIgdmlkZW9UcmFjazI7CisgICAgICAgICAgICB2YXIgYXVkaW9UcmFj
azsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgZnVuY3Rpb24gZXJyb3IoKQorICAgICAgICAg
ICAgeworICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoJ1N0cmVhbSBnZW5lcmF0aW9uIGZhaWxl
ZC4nKTsKKyAgICAgICAgICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAgICAgICAgICAgIH0KKwor
ICAgICAgICAgICAgZnVuY3Rpb24gZ2V0VXNlck1lZGlhKGNvbnN0cmFpbnRzLCBjYWxsYmFjaykK
KyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICB0cnkgeworICAgICAgICAgICAgICAgICAg
ICBuYXZpZ2F0b3Iud2Via2l0R2V0VXNlck1lZGlhKGNvbnN0cmFpbnRzLCBjYWxsYmFjaywgZXJy
b3IpOworICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHsKKyAgICAgICAgICAgICAgICAgICAg
dGVzdEZhaWxlZCgnd2Via2l0R2V0VXNlck1lZGlhIHRocmV3IGV4Y2VwdGlvbiA6JyArIGUpOwor
ICAgICAgICAgICAgICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAgICAgICAgICAgICAgICB9Cisg
ICAgICAgICAgICB9CisgICAgICAgICAgICAKKyAgICAgICAgICAgIGZ1bmN0aW9uIG9uVHJhY2tF
bmRlZCgpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgnVHJhY2sg
b25lbmRlZCBjYWxsYmFjayBzdWNjZWVkZWQuJyk7CisgICAgICAgICAgICAgICAgc2hvdWxkQmVF
cXVhbFRvU3RyaW5nKCd2aWRlb1RyYWNrLnJlYWR5U3RhdGUnLCAnZW5kZWQnKTsKKyAgICAgICAg
ICAgICAgICBkZWJ1ZygiIik7CisgICAgICAgICAgICAgICAgZmluaXNoSlNUZXN0KCk7CisgICAg
ICAgICAgICB9CisKKyAgICAgICAgICAgIGZ1bmN0aW9uIG9uVHJhY2tTdGFydGVkKCkKKyAgICAg
ICAgICAgIHsKKyAgICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCdUcmFjayBvbnN0YXJ0ZWQgY2Fs
bGJhY2sgc3VjY2VlZGVkLicpOworICAgICAgICAgICAgICAgIHNob3VsZEJlRXF1YWxUb1N0cmlu
ZygndmlkZW9UcmFjay5yZWFkeVN0YXRlJywgJ2xpdmUnKTsKKyAgICAgICAgICAgIH0KKworICAg
ICAgICAgICAgZnVuY3Rpb24gb25UcmFja092ZXJDb25zdHJhaW5lZCgpCisgICAgICAgICAgICB7
CisgICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgnVHJhY2sgb25vdmVyY29uc3RyYWluZWQgY2Fs
bGJhY2sgc3VjY2VlZGVkLicpOworICAgICAgICAgICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAg
ICAgICAgICAgfQorCisgICAgICAgICAgICBmdW5jdGlvbiBvblRyYWNrVW5tdXRlKCkKKyAgICAg
ICAgICAgIHsKKyAgICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCdUcmFjayBvbnVubXV0ZSBjYWxs
YmFjayBzdWNjZWVkZWQuJyk7CisgICAgICAgICAgICAgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5n
KCd2aWRlb1RyYWNrLnJlYWR5U3RhdGUnLCAnbGl2ZScpOworICAgICAgICAgICAgICAgIHZpZGVv
VHJhY2suc3RvcCgpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBmdW5jdGlvbiBvblRy
YWNrTXV0ZSgpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgnVHJh
Y2sgb25tdXRlIGNhbGxiYWNrIHN1Y2NlZWRlZC4nKTsKKyAgICAgICAgICAgICAgICBzaG91bGRC
ZUVxdWFsKCd2aWRlb1RyYWNrLm11dGVkJywgdHJ1ZSk7CisgICAgICAgICAgICB9CisKKyAgICAg
ICAgICAgIGZ1bmN0aW9uIGxvZ0NhcGFiaWxpdHlSYW5nZShuYW1lLCByYW5nZSkKKyAgICAgICAg
ICAgIHsKKyAgICAgICAgICAgICAgICBkZWJ1ZygiICAiICsgbmFtZSk7CisgICAgICAgICAgICAg
ICAgZGVidWcoIiAgIG1pbiA6ICIgKyByYW5nZS5taW4pOworICAgICAgICAgICAgICAgIGRlYnVn
KCIgICBtYXggOiAiICsgcmFuZ2UubWF4KTsKKyAgICAgICAgICAgICAgICBkZWJ1ZygiICAgc3Vw
cG9ydGVkIDogIiArIHJhbmdlLnN1cHBvcnRlZCk7CisgICAgICAgICAgICB9CisKKyAgICAgICAg
ICAgIGZ1bmN0aW9uIGxvZ0NhcGFiaWxpdHlMaXN0KG5hbWUsIGxpc3QpCisgICAgICAgICAgICB7
CisgICAgICAgICAgICAgICAgZGVidWcoIiAgIiArIG5hbWUpOworICAgICAgICAgICAgICAgIGZv
ciAoaSA9IDA7IGkgPCBsaXN0Lmxlbmd0aDsgaSsrKQorICAgICAgICAgICAgICAgIGRlYnVnKCIg
ICAgIiArIGkgKyAiIDogIiArIGxpc3RbaV0pOworICAgICAgICAgICAgfQorCisgICAgICAgICAg
ICBmdW5jdGlvbiBjaGVja0NhcGFiaWxpdGllcyh0cmFjaykKKyAgICAgICAgICAgIHsKKyAgICAg
ICAgICAgICAgICBkZWJ1ZygiY2hlY2tpbmcgdHJhY2suY2FwYWJpbGl0aWVzKCkiKTsKKyAgICAg
ICAgICAgICAgICBjYXBhYmlsaXRpZXMgPSB0cmFjay5jYXBhYmlsaXRpZXMoKTsKKyAgICAgICAg
ICAgICAgICBsb2dDYXBhYmlsaXR5TGlzdCgic291cmNlSWQiLCBjYXBhYmlsaXRpZXMuc291cmNl
SWQpOworICAgICAgICAgICAgICAgIGlmICh0cmFjay5raW5kID09ICJ2aWRlbyIpIHsKKyAgICAg
ICAgICAgICAgICAgICAgbG9nQ2FwYWJpbGl0eUxpc3QoInNvdXJjZVR5cGUiLCBjYXBhYmlsaXRp
ZXMuc291cmNlVHlwZSk7CisgICAgICAgICAgICAgICAgICAgIGxvZ0NhcGFiaWxpdHlSYW5nZSgi
d2lkdGgiLCBjYXBhYmlsaXRpZXMud2lkdGgpOworICAgICAgICAgICAgICAgICAgICBsb2dDYXBh
YmlsaXR5UmFuZ2UoImhlaWdodCIsIGNhcGFiaWxpdGllcy5oZWlnaHQpOworICAgICAgICAgICAg
ICAgICAgICBsb2dDYXBhYmlsaXR5UmFuZ2UoImZyYW1lUmF0ZSIsIGNhcGFiaWxpdGllcy5mcmFt
ZVJhdGUpOworICAgICAgICAgICAgICAgICAgICBsb2dDYXBhYmlsaXR5UmFuZ2UoImFzcGVjdFJh
dGlvIiwgY2FwYWJpbGl0aWVzLmFzcGVjdFJhdGlvKTsKKyAgICAgICAgICAgICAgICAgICAgbG9n
Q2FwYWJpbGl0eUxpc3QoImZhY2luZ01vZGUiLCBjYXBhYmlsaXRpZXMuZmFjaW5nTW9kZSk7Cisg
ICAgICAgICAgICAgICAgfSBlbHNlCisgICAgICAgICAgICAgICAgICAgIGxvZ0NhcGFiaWxpdHlS
YW5nZSgidm9sdW1lIiwgY2FwYWJpbGl0aWVzLnZvbHVtZSk7CisgICAgICAgICAgICB9CisKKyAg
ICAgICAgICAgIGZ1bmN0aW9uIGNoZWNrU3RhdGVzKHRyYWNrKQorICAgICAgICAgICAgeworICAg
ICAgICAgICAgICAgIGRlYnVnKCJjaGVja2luZyB0cmFjay5zdGF0ZXMoKSIpOworICAgICAgICAg
ICAgICAgIGNhcGFiaWxpdGllcyA9IHRyYWNrLmNhcGFiaWxpdGllcygpOworICAgICAgICAgICAg
ICAgIHN0YXRlcyA9IHRyYWNrLnN0YXRlcygpOworICAgICAgICAgICAgICAgIHNob3VsZEJlKCdz
dGF0ZXMuc291cmNlSWQnLCAnY2FwYWJpbGl0aWVzLnNvdXJjZUlkWzBdJyk7CisgICAgICAgICAg
ICAgICAgaWYgKHRyYWNrLmtpbmQgPT0gInZpZGVvIikgeworICAgICAgICAgICAgICAgICAgICBz
aG91bGRCZUVxdWFsVG9TdHJpbmcoJ3N0YXRlcy5zb3VyY2VUeXBlJywgJ2NhbWVyYScpOworICAg
ICAgICAgICAgICAgICAgICBkZWJ1ZygiICB3aWR0aCA6ICIgKyBzdGF0ZXMud2lkdGgpOworICAg
ICAgICAgICAgICAgICAgICBkZWJ1ZygiICBoZWlnaHQgOiAiICsgc3RhdGVzLmhlaWdodCk7Cisg
ICAgICAgICAgICAgICAgICAgIGRlYnVnKCIgIGZyYW1lUmF0ZSA6ICIgKyBzdGF0ZXMuZnJhbWVS
YXRlKTsKKyAgICAgICAgICAgICAgICAgICAgZGVidWcoIiAgYXNwZWN0UmF0aW8gOiAiICsgc3Rh
dGVzLmFzcGVjdFJhdGlvKTsKKyAgICAgICAgICAgICAgICAgICAgZGVidWcoIiAgZmFjaW5nTW9k
ZSA6ICIgKyBzdGF0ZXMuZmFjaW5nTW9kZSk7CisgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAg
ICAgICAgICAgICAgICAgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCdzdGF0ZXMuc291cmNlVHlw
ZScsICdtaWNyb3Bob25lJyk7CisgICAgICAgICAgICAgICAgICAgIGRlYnVnKCIgIHZvbHVtZSA6
ICIgKyBzdGF0ZXMudm9sdW1lKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9Cisg
ICAgICAgICAgICAKKyAgICAgICAgICAgIGZ1bmN0aW9uIGNoZWNrVHJhY2sodCkKKyAgICAgICAg
ICAgIHsKKyAgICAgICAgICAgICAgICB0cmFjayA9IHQ7CisgICAgICAgICAgICAgICAgc2hvdWxk
QmVFcXVhbFRvU3RyaW5nKCd0cmFjay5yZWFkeVN0YXRlJywgJ2xpdmUnKTsKKyAgICAgICAgICAg
ICAgICBjaGVja0NhcGFiaWxpdGllcyh0cmFjayk7CisgICAgICAgICAgICAgICAgY2hlY2tTdGF0
ZXModHJhY2spOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBmdW5jdGlvbiBnb3RTdHJl
YW0oc3RyZWFtKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIG1lZGlhU3RyZWFtID0g
c3RyZWFtOworICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoJ2dldFVzZXJNZWRpYSBzdWNjZWVk
ZWQuJyk7CisgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICBkZWJ1ZygiIik7CisgICAgICAg
ICAgICAgICAgZXZhbEFuZExvZygidmlkZW9UcmFjayA9IG1lZGlhU3RyZWFtLmdldFZpZGVvVHJh
Y2tzKClbMF0iKTsKKyAgICAgICAgICAgICAgICBjaGVja1RyYWNrKHZpZGVvVHJhY2spOworCisg
ICAgICAgICAgICAgICAgZGVidWcoIiIpOworICAgICAgICAgICAgICAgIGV2YWxBbmRMb2coImF1
ZGlvVHJhY2sgPSBtZWRpYVN0cmVhbS5nZXRBdWRpb1RyYWNrcygpWzBdIik7CisgICAgICAgICAg
ICAgICAgY2hlY2tUcmFjayhhdWRpb1RyYWNrKTsKKworICAgICAgICAgICAgICAgIHZpZGVvVHJh
Y2sub25tdXRlID0gb25UcmFja011dGU7CisgICAgICAgICAgICAgICAgdmlkZW9UcmFjay5vbnVu
bXV0ZSA9IG9uVHJhY2tVbm11dGU7CisgICAgICAgICAgICAgICAgdmlkZW9UcmFjay5vbmVuZGVk
ID0gb25UcmFja0VuZGVkOworICAgICAgICAgICAgICAgIHZpZGVvVHJhY2sub25zdGFydGVkID0g
b25UcmFja1N0YXJ0ZWQ7CisgICAgICAgICAgICAgICAgdmlkZW9UcmFjay5vbm92ZXJjb25zdHJh
aW5lZCA9IG9uVHJhY2tPdmVyQ29uc3RyYWluZWQ7CisgICAgICAgICAgICAKKyAgICAgICAgICAg
ICAgICBkZWJ1ZygiIik7CisgICAgICAgICAgICAgICAgZXZhbEFuZExvZygidmlkZW9UcmFjazIg
PSB2aWRlb1RyYWNrLmNsb25lKCkiKTsKKyAgICAgICAgICAgICAgICBjaGVja1RyYWNrKHZpZGVv
VHJhY2syKTsKKyAgICAgICAgICAgICAgICBzaG91bGROb3RCZSgndmlkZW9UcmFjay5pZCcsICd2
aWRlb1RyYWNrMi5pZCcpOworICAgICAgICAgICAgICAgIHNob3VsZEJlKCd2aWRlb1RyYWNrLmtp
bmQnLCAndmlkZW9UcmFjazIua2luZCcpOworICAgICAgICAgICAgICAgIHNob3VsZEJlKCd2aWRl
b1RyYWNrLmxhYmVsJywgJ3ZpZGVvVHJhY2syLmxhYmVsJyk7CisgICAgICAgICAgICAgICAgc2hv
dWxkQmUoJ3ZpZGVvVHJhY2subXV0ZWQnLCAndmlkZW9UcmFjazIubXV0ZWQnKTsKKyAgICAgICAg
ICAgICAgICBzaG91bGRCZSgndmlkZW9UcmFjay5lbmFibGVkJywgJ3ZpZGVvVHJhY2syLmVuYWJs
ZWQnKTsKKyAgICAgICAgICAgICAgICBzaG91bGRCZSgndmlkZW9UcmFjay5yZWFkeVN0YXRlJywg
J3ZpZGVvVHJhY2syLnJlYWR5U3RhdGUnKTsKKworICAgICAgICAgICAgICAgIGRlYnVnKCIiKTsK
KyAgICAgICAgICAgICAgICBldmFsQW5kTG9nKCJ2aWRlb1RyYWNrLnN0b3AoKSIpOworICAgICAg
ICAgICAgfQorCisgICAgICAgICAgICBmdW5jdGlvbiBzdGFydCgpCisgICAgICAgICAgICB7Cisg
ICAgICAgICAgICAgICAgZGVzY3JpcHRpb24oIlRlc3RzIE1lZGlhU3RyZWFtVHJhY2sgY2FsbGJh
Y2tzLiIpOworICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIC8vIE5vdGUgdGhhdCB0
aGUgYmVsb3cgYmVoYXZpb3VyIGRvZXNuJ3QgcmVmbGVjdCBob3cgaXQgd29ya3Mgb3V0c2lkZSBv
ZiBMYXlvdXRUZXN0cy4KKyAgICAgICAgICAgICAgICAvLyBUaGUgdW5kZXJseWluZyBtb2NrIGlz
IG1vZGlmaWVkIHRvIHRyaWdnZXIgdGhlIGV2ZW50cyB3aGVuIGNlcnRhaW4gZnVuY3Rpb25zIGFy
ZSBjYWxsZWQuCisgICAgICAgICAgICAgICAgLy8gVGhpcyBtb2RpZmllZCBiZWhhdmlvdXIgYWxs
b3dzIHVzIHRvIHRlc3QgdGhlIE1lZGlhU3RyZWFtVHJhY2sgY2xhc3MgcHJvcGVybHkuCisgICAg
ICAgICAgICAgICAgZ2V0VXNlck1lZGlhKHthdWRpbzp0cnVlLCB2aWRlbzp0cnVlfSwgZ290U3Ry
ZWFtKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgd2luZG93LmpzVGVzdElzQXN5bmMg
PSB0cnVlOworICAgICAgICAgICAgd2luZG93LnN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7Cisg
ICAgICAgIDwvc2NyaXB0PgorICAgIDwvaGVhZD4KKyAgICA8Ym9keSBvbmxvYWQ9InN0YXJ0KCki
PgorICAgICAgICA8cCBpZD0iZGVzY3JpcHRpb24iPjwvcD4KKyAgICAgICAgPGRpdiBpZD0iY29u
c29sZSI+PC9kaXY+CisgICAgICAgIDxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVz
dC1wb3N0LmpzIj48L3NjcmlwdD4KKyAgICA8L2JvZHk+CiA8L2h0bWw+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>213612</attachid>
            <date>2013-10-07 12:33:10 -0700</date>
            <delta_ts>2013-10-07 16:50:52 -0700</delta_ts>
            <desc>Updated patch</desc>
            <filename>track_spec_update_27.txt</filename>
            <type>text/plain</type>
            <size>220325</size>
            <attacher name="Eric Carlson">eric.carlson</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE1NzA0MSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE3OCBAQAorMjAxMy0xMC0wNiAgRXJpYyBD
YXJsc29uICA8ZXJpYy5jYXJsc29uQGFwcGxlLmNvbT4KKworICAgICAgICBbTWVkaWFTdHJlYW0g
QVBJXSB1cGRhdGUgTWVkaWFTdHJlYW1UcmFjayBvYmplY3QgdG8gbWF0Y2ggc3BlYworICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTIxOTQwCisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLCBl
eGlzdGluZyB0ZXN0IHVwZGF0ZWQuCisKKyAgICAgICAgQWRkIG5ldyBzb3VyY2UgZmlsZXMgdG8g
dGhlIHByb2plY3Q6CisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogRGVyaXZl
ZFNvdXJjZXMubWFrZToKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5saXN0LmFtOgorICAgICAgICAq
IFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKworICAgICAgICBOZXcgY2FwYWJp
bGl0eSBkaWN0aW9uYXJ5IG9iamVjdHM6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9B
bGxBdWRpb0NhcGFiaWxpdGllcy5oOiBBZGRlZC4KKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3Ry
ZWFtL0FsbEF1ZGlvQ2FwYWJpbGl0aWVzLmlkbDogQWRkZWQuCisgICAgICAgICogTW9kdWxlcy9t
ZWRpYXN0cmVhbS9BbGxWaWRlb0NhcGFiaWxpdGllcy5oOiBBZGRlZC4KKyAgICAgICAgKiBNb2R1
bGVzL21lZGlhc3RyZWFtL0FsbFZpZGVvQ2FwYWJpbGl0aWVzLmlkbDogQWRkZWQuCisKKyAgICAg
ICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL0F1ZGlvU3RyZWFtVHJhY2suY3BwOgorICAgICAgICAo
V2ViQ29yZTo6QXVkaW9TdHJlYW1UcmFjazo6Y3JlYXRlKTogTmV3IHZlcnNpb24gdGhhdCB0YWtl
cyBhIE1lZGlhU3RyZWFtVHJhY2sqLgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vQXVk
aW9TdHJlYW1UcmFjay5oOgorCisgICAgICAgIE5ldyBvYmplY3QgZm9yIGEgY2FwYWJpbGl0eSBy
YW5nZToKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL0NhcGFiaWxpdHlSYW5nZS5jcHA6
IEFkZGVkLgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vQ2FwYWJpbGl0eVJhbmdlLmg6
IEFkZGVkLgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vQ2FwYWJpbGl0eVJhbmdlLmlk
bDogQWRkZWQuCisKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhQ29uc3RyYWlu
dHNJbXBsLmg6IE1ha2UgaW5pdGlhbGl6ZSgpIHB1YmxpYy4KKworICAgICAgICBOZXcgb2JqZWN0
IGZvciB0aGUgY3VycmVudCBzdGF0ZXMgZm9yIGEgbWVkaWEgc291cmNlLgorICAgICAgICAqIE1v
ZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTb3VyY2VTdGF0ZXMuY3BwOiBBZGRlZC4KKyAgICAgICAg
KiBNb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU291cmNlU3RhdGVzLmg6IEFkZGVkLgorICAgICAg
ICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTb3VyY2VTdGF0ZXMuaWRsOiBBZGRlZC4KKwor
ICAgICAgICBEb24ndCBjYWxsIHRoZSBtZWRpYSBzdHJlYW0gY2VudGVyIHRvIG5vdGlmeSBpdCB3
aGVuIHRoZSBzdGF0ZSBvZiBvdGhlcgorICAgICAgICBvYmplY3RzIGNoYW5nZS4KKyAgICAgICAg
KiBNb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OnByb2Nlc3NUcmFjayk6IFJlbW92ZSB0aGUgc3RyZWFtIHNvdXJjZSBkdXBsaWNhdGlvbiBoYWNr
LgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlRnJvbVNvdXJjZVZlY3RvcnMpOiAKKyAgICAgICAg
KFdlYkNvcmU6Ok1lZGlhU3RyZWFtOjpNZWRpYVN0cmVhbSk6CisgICAgICAgIChXZWJDb3JlOjpN
ZWRpYVN0cmVhbTo6YWRkVHJhY2spOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTdHJlYW06OnJl
bW92ZVRyYWNrKToKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtLmg6
CisKKyAgICAgICAgTmV3IG9iamVjdCBmb3IgdGhlIGNhcGFiaWxpdGllcyBvZiBhIHNvdXJjZS4K
KyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtQ2FwYWJpbGl0aWVzLmNw
cDogQWRkZWQuCisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbUNhcGFi
aWxpdGllcy5oOiBBZGRlZC4KKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3Ry
ZWFtQ2FwYWJpbGl0aWVzLmlkbDogQWRkZWQuCisKKyAgICAgICAgVXBkYXRlIGludGVyZmFjZSB0
byBtYXRjaCBzcGVjLgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1U
cmFjay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbVRyYWNrOjpNZWRpYVN0cmVh
bVRyYWNrKTogRGVmaW5lIGEgY29weSBjb25zdHJ1Y3RvciB0byB1c2UgaW4gY2xvbmUoKS4KKyAg
ICAgICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFtVHJhY2s6OnNldFNvdXJjZSk6IENhbGwgcmVtb3Zl
T2JzZXJ2ZXIgaWYgdGhlIHRyYWNrIGFscmVhZHkgaGFzIGEgc291cmNlLgorICAgICAgICAgICAg
SW5pdGlhbGl6ZSBtX211dGVkIGZyb20gbmV3IHNvdXJjZSdzIG11dGVkIHN0YXRlLgorICAgICAg
ICAoV2ViQ29yZTo6TWVkaWFTdHJlYW1UcmFjazo6aWQpOiBBbGxvdyBzb3VyY2UgdG8gcHJvdmlk
ZSBJRCBhcyB0aGUgc3BlYyBzdWdnZXN0cy4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFt
VHJhY2s6OnNldEVuYWJsZWQpOiBBZGQgc29tZSBzcGVjIHRleHQgdG8gY2xhcmlmeSBsb2dpYy4g
QWx3YXlzIGNhbGwKKyAgICAgICAgICAgIHNvdXJjZS0+c2V0RW5hYmxlZCwgaXQgY2FuIGZpZ3Vy
ZSBvdXQgaWYgbm90aGluZyBuZWVkcyB0byBiZSBkb25lLgorICAgICAgICAoV2ViQ29yZTo6TWVk
aWFTdHJlYW1UcmFjazo6bXV0ZWQpOiBEb24ndCBjYWxsIHRoZSBzdHJlYW0gY2VudGVyIHdoZW4g
bXV0ZWQgY2hhbmdlcywgdGhlCisgICAgICAgICAgICBzb3VyY2UgY2FuIHRha2UgY2FyZSBvZiBu
b3RpZnlpbmcgaW50ZXJlc3RlZCBwYXJ0aWVzLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTdHJl
YW1UcmFjazo6cmVhZG9ubHkpOiBOZXcuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbVRy
YWNrOjpyZW1vdGUpOiBOZXcuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbVRyYWNrOjpj
b25zdHJhaW50cyk6IE5ldy4gCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbVRyYWNrOjpz
dGF0ZXMpOiBOZXcuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbVRyYWNrOjpjYXBhYmls
aXRpZXMpOiBOZXcuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbVRyYWNrOjphcHBseUNv
bnN0cmFpbnRzKTogTmV3LgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTdHJlYW1UcmFjazo6Y2xv
bmUpOiBOZXcuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbVRyYWNrOjpzdG9wUHJvZHVj
aW5nRGF0YSk6IE5ldy4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFtVHJhY2s6OnNvdXJj
ZVN0YXRlQ2hhbmdlZCk6IFJlbmFtZWQgZnJvbSBzb3VyY2VDaGFuZ2VkU3RhdGUuCisgICAgICAg
IChXZWJDb3JlOjpNZWRpYVN0cmVhbVRyYWNrOjpzb3VyY2VNdXRlZENoYW5nZWQpOiBOZXcuCisg
ICAgICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbVRyYWNrOjpzb3VyY2VFbmFibGVkQ2hhbmdlZCk6
IE5ldy4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFtVHJhY2s6OmNvbmZpZ3VyZVRyYWNr
UmVuZGVyaW5nKTogTmV3LgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTdHJlYW1UcmFjazo6c3Rv
cHBlZCk6IE5ldy4gCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbVRyYWNrOjpzdG9wKTog
Q2FsbCBzdG9wUHJvZHVjaW5nRGF0YS4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFtVHJh
Y2s6OnNjaGVkdWxlRXZlbnREaXNwYXRjaCk6IE5ldy4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlh
U3RyZWFtVHJhY2s6OmRpc3BhdGNoUXVldWVkRXZlbnRzKTogTmV3LgorICAgICAgICAqIE1vZHVs
ZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1UcmFjay5oOgorICAgICAgICAqIE1vZHVsZXMvbWVk
aWFzdHJlYW0vTWVkaWFTdHJlYW1UcmFjay5pZGw6CisKKyAgICAgICAgKiBNb2R1bGVzL21lZGlh
c3RyZWFtL01lZGlhVHJhY2tDb25zdHJhaW50LmNwcDogQWRkZWQuCisgICAgICAgICogTW9kdWxl
cy9tZWRpYXN0cmVhbS9NZWRpYVRyYWNrQ29uc3RyYWludC5oOiBBZGRlZC4KKyAgICAgICAgKiBN
b2R1bGVzL21lZGlhc3RyZWFtL01lZGlhVHJhY2tDb25zdHJhaW50LmlkbDogQWRkZWQuCisKKyAg
ICAgICAgLy8gQWRkIGVtcHR5IGNsYXNzZXMvSURMIGZvciB0cmFjayBjb25zdHJhaW50IG9iamVj
dHMuCisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVRyYWNrQ29uc3RyYWludFNl
dC5jcHA6IEFkZGVkLgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFUcmFja0Nv
bnN0cmFpbnRTZXQuaDogQWRkZWQuCisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRp
YVRyYWNrQ29uc3RyYWludFNldC5pZGw6IEFkZGVkLgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFz
dHJlYW0vTWVkaWFUcmFja0NvbnN0cmFpbnRzLmNwcDogQWRkZWQuCisgICAgICAgICogTW9kdWxl
cy9tZWRpYXN0cmVhbS9NZWRpYVRyYWNrQ29uc3RyYWludHMuaDogQWRkZWQuCisgICAgICAgICog
TW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVRyYWNrQ29uc3RyYWludHMuaWRsOiBBZGRlZC4KKwor
ICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vVXNlck1lZGlhUmVxdWVzdC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpVc2VyTWVkaWFSZXF1ZXN0OjpjYWxsU3VjY2Vzc0hhbmRsZXIpOiBEb24n
dCBjYWxsIHRoZSBzdHJlYW0gY2VudGVyLCB0aGUKKyAgICAgICAgICAgIHN0cmVhbSBjYW4gdGFr
ZSBjYXJlIG9mIG5vdGlmeWluZyBpbnRlcmVzdGVkIHBhcnRpZXMuCisKKyAgICAgICAgLy8gQWRk
IGEgY29uc3RydWN0b3IgYW5kIGNyZWF0ZSgpIHRoYXQgdGFrZSBhIE1lZGlhU3RyZWFtVHJhY2sq
LgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vVmlkZW9TdHJlYW1UcmFjay5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpWaWRlb1N0cmVhbVRyYWNrOjpjcmVhdGUpOiAKKyAgICAgICAgKFdl
YkNvcmU6OlZpZGVvU3RyZWFtVHJhY2s6OlZpZGVvU3RyZWFtVHJhY2spOgorICAgICAgICAqIE1v
ZHVsZXMvbWVkaWFzdHJlYW0vVmlkZW9TdHJlYW1UcmFjay5oOgorCisgICAgICAgIC8vIENyZWF0
ZSBhIE1lZGlhU3RyZWFtU291cmNlIHN1YmNsYXNzIGZvciBXZWJBdWRpbworICAgICAgICAqIE1v
ZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlv
Q29udGV4dDo6Y3JlYXRlTWVkaWFTdHJlYW1Tb3VyY2UpOiBDYWxsIGlzQXVkaW9TdHJlYW1Tb3Vy
Y2UgaW5zdGVhZAorICAgICAgICAgICAgb2YgY2hlY2tpbmcgZGV2aWNlSUQuCisgICAgICAgICog
TW9kdWxlcy93ZWJhdWRpby9NZWRpYVN0cmVhbUF1ZGlvRGVzdGluYXRpb25Ob2RlLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFtQXVkaW9EZXN0aW5hdGlvbk5vZGU6Ok1lZGlhU3Ry
ZWFtQXVkaW9EZXN0aW5hdGlvbk5vZGUpOiBDcmVhdGUgYQorICAgICAgICAgICAgTWVkaWFTdHJl
YW1BdWRpb1NvdXJjZSBpbnN0ZWFkIG9mIGEgTWVkaWFTdHJlYW1Tb3VyY2UuCisgICAgICAgICog
TW9kdWxlcy93ZWJhdWRpby9NZWRpYVN0cmVhbUF1ZGlvRGVzdGluYXRpb25Ob2RlLmg6CisgICAg
ICAgICogTW9kdWxlcy93ZWJhdWRpby9NZWRpYVN0cmVhbUF1ZGlvU291cmNlLmNwcDogQWRkZWQu
CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9NZWRpYVN0cmVhbUF1ZGlvU291cmNlLmg6IEFk
ZGVkLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTdHJlYW1BdWRpb1NvdXJjZTo6fk1lZGlhU3Ry
ZWFtQXVkaW9Tb3VyY2UpOgorCisgICAgICAgIC8vIEFkZCBuZXcgZ2VuZXJhdGVkIGZpbGVzLgor
ICAgICAgICAqIGJpbmRpbmdzL2pzL0pTTWVkaWFTb3VyY2VTdGF0ZXNDdXN0b20uY3BwOiBBZGRl
ZC4KKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU01lZGlhU3RyZWFtQ2FwYWJpbGl0aWVzQ3VzdG9t
LmNwcDogQWRkZWQuCisKKyAgICAgICAgKiBkb20vRXZlbnROYW1lcy5oOiBEZWZpbmVkICdvdmVy
Y29uc3RyYWluZWQnIGV2ZW50LgorCisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVk
aWFTdHJlYW1DZW50ZXIuaDogR2V0IHJpZCBvZiBhbGwgb2YgdGhlIG1ldGhvZHMgbm9ib2R5IHVz
ZXMuCisgICAgICAgICAgICBJdCBpc24ndCBjbGVhciB0aGF0IHRoZXkgYXJlIG5lY2Vzc2FyeSwg
YW5kIHdlIGNhbiBhZGQgdGhlbSBiYWNrIGlmL3doZW4gd2UgbmVlZCB0aGVtLgorCisgICAgICAg
ICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1EZXNjcmlwdG9yLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFtRGVzY3JpcHRvcjo6fk1lZGlhU3RyZWFtRGVzY3JpcHRv
cik6IENsZWFyIHRoZSBhbGwgc291cmNlIHN0cmVhbXMuCisgICAgICAgIChXZWJDb3JlOjpNZWRp
YVN0cmVhbURlc2NyaXB0b3I6OnJlbW92ZVNvdXJjZSk6IENsZWFyIHRoZSBzb3VyY2Ugc3RyZWFt
LgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtRGVzY3JpcHRvci5o
OgorCisgICAgICAgIC8vIE1ha2UgTWVkaWFTdHJlYW1Tb3VyY2UgYW4gYWJzdHJhY3QgYmFzZSBj
bGFzcywgYW5kIHJlbW92ZSBldmVyeXRpbmcgV2ViQXVkaW8tc3BlY2lmaWMKKyAgICAgICAgLy8g
IHRvIE1lZGlhU3RyZWFtQXVkaW9Tb3VyY2UuIAorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3Ry
ZWFtL01lZGlhU3RyZWFtU291cmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFt
U291cmNlOjpNZWRpYVN0cmVhbVNvdXJjZSk6IFJlbW92ZSByZWFkeVN0YXRlIGFuZCByZXF1aXJl
c0NvbnN1bWVyCisgICAgICAgICAgICBwYXJhbWV0ZXJzLiBDcmVhdGUgbmV3IFVVSUQgZm9yIGlk
IGlmIG5vbiB3YXMgcGFzc2VkLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTdHJlYW1Tb3VyY2U6
OnJlc2V0KTogUmVzZXQgaW50ZXJuYWwgc3RhdGUgdG8ganVzdC1jb25zdHJ1Y3RlZC4gVXNlZCBm
b3IgdGVzdGluZy4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFtU291cmNlOjpzZXRSZWFk
eVN0YXRlKTogc291cmNlQ2hhbmdlZFN0YXRlIC0+IHNvdXJjZVN0YXRlQ2hhbmdlZC4KKyAgICAg
ICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFtU291cmNlOjpzZXRTdHJlYW0pOiBSZW1vdmUgdGhlIEFT
U0VSVCB0aGF0IGNoZWNrIGZvciBhIHNvdXJjZSBiZWluZworICAgICAgICAgICAgYWRkZWQgdG8g
YSBuZXcgc3RyZWFtLiBUaGlzIGlzIHN0aWxsIGEgcHJvYmxlbSwgYnV0IGl0IGlzIHJlcXVpcmVk
IGZvciB0ZXN0aW5nIGFuZCB3aWxsCisgICAgICAgICAgICBiZSBmaXhlZCBhcyBhIHBhcnQgb2Yg
YnVnIDEyMTk1NC4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFtU291cmNlOjpzZXRDb25z
dHJhaW50cyk6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTdHJlYW1Tb3VyY2U6OnNl
dE11dGVkKTogTm90aWZ5IG9ic2VydmVycyB3aGVuIG11dGVkIGNoYW5nZXMuCisgICAgICAgIChX
ZWJDb3JlOjpNZWRpYVN0cmVhbVNvdXJjZTo6c2V0RW5hYmxlZCk6IE5vdGlmeSBvYnNlcnZlcnMg
d2hlbiBlbmFibGVkIGNoYW5nZXMuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbVNvdXJj
ZTo6cmVhZG9ubHkpOiBOZXcuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbVNvdXJjZTo6
c3RvcCk6IE5ldy4gU2V0IHN0YXRlIHRvIEVuZGVkIHdoZW4gYWxsIG9mIHRoZSBvYnNlcnZlcnMg
aGFzCisgICAgICAgICAgICBzdG9wcGVkLgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFt
L01lZGlhU3RyZWFtU291cmNlLmg6CisKKyAgICAgICAgLy8gRGVmaW5lIHBsYXRmb3JtIHZlcnNp
b25zIG9mIHRoZSBDYXBhYmlsaXRpZXMgY2xhc3Nlcy4KKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRp
YXN0cmVhbS9NZWRpYVN0cmVhbVNvdXJjZUNhcGFiaWxpdGllcy5oOiBBZGRlZC4KKworICAgICAg
ICAvLyBVcGRhdGUgdGhlIG5vbi1mdW5jdGlvbmFsIHBsYXRmb3JtIHN0cmVhbSBjZW50ZXJzIGZv
ciB0aGUgQVBJIGNoYW5nZXMuCisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vYmxhY2ti
ZXJyeS9NZWRpYVN0cmVhbUNlbnRlckJsYWNrQmVycnkuY3BwOgorICAgICAgICAqIHBsYXRmb3Jt
L21lZGlhc3RyZWFtL2JsYWNrYmVycnkvTWVkaWFTdHJlYW1DZW50ZXJCbGFja0JlcnJ5Lmg6Cisg
ICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vZ3N0cmVhbWVyL01lZGlhU3RyZWFtQ2VudGVy
R1N0cmVhbWVyLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9nc3RyZWFtZXIv
TWVkaWFTdHJlYW1DZW50ZXJHU3RyZWFtZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0
cmVhbS9tYWMvTWVkaWFTdHJlYW1DZW50ZXJNYWMuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL21l
ZGlhc3RyZWFtL21hYy9NZWRpYVN0cmVhbUNlbnRlck1hYy5oOgorCisgICAgICAgIC8vIFVwZGF0
ZSB0aGUgTW9jayBzdHJlYW0gY2VudGVyIGZvciB0aGUgQVBJIGNoYW5nZXMuIEFkZCBhIGNvbmNy
ZXRlIG1vY2sgTWVkaWFTdHJlYW1Tb3VyY2UKKyAgICAgICAgLy8gIHN1YmNsYXNzLgorICAgICAg
ICAqIHBsYXRmb3JtL21vY2svTW9ja01lZGlhU3RyZWFtQ2VudGVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6Ok1vY2tTb3VyY2U6Ok1vY2tTb3VyY2UpOiBOZXcsIHRoZSBtb2NrIG1lZGlhIHN0cmVh
bSBzb3VyY2UuCisgICAgICAgIChXZWJDb3JlOjpNb2NrU291cmNlOjp+TW9ja1NvdXJjZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpNb2NrU291cmNlOjpjYXBhYmlsaXRpZXMpOgorICAgICAgICAoV2Vi
Q29yZTo6TW9ja1NvdXJjZTo6c3RhdGVzKToKKyAgICAgICAgKFdlYkNvcmU6Om1vY2tTb3VyY2VN
YXApOgorICAgICAgICAoV2ViQ29yZTo6bW9ja0F1ZGlvU291cmNlSUQpOgorICAgICAgICAoV2Vi
Q29yZTo6bW9ja1ZpZGVvU291cmNlSUQpOgorICAgICAgICAoV2ViQ29yZTo6aW5pdGlhbGl6ZU1v
Y2tTb3VyY2VzKTogQ3JlYXRlIG9uZSBhdWRpbyBhbmQgb25lIHZpZGVvIG1vY2sgc291cmNlLgor
ICAgICAgICAoV2ViQ29yZTo6TW9ja01lZGlhU3RyZWFtQ2VudGVyOjpyZWdpc3Rlck1vY2tNZWRp
YVN0cmVhbUNlbnRlcik6IENhbGwgaW5pdGlhbGl6ZU1vY2tTb3VyY2VzLgorICAgICAgICAoV2Vi
Q29yZTo6TW9ja01lZGlhU3RyZWFtQ2VudGVyOjpjcmVhdGVNZWRpYVN0cmVhbSk6IFVzZSB0aGUg
YWxyZWFkeSBhbGxvY2F0ZWQgbW9jayBtZWRpYQorICAgICAgICAgICAgc291cmNlcy4KKyAgICAg
ICAgKFdlYkNvcmU6Ok1vY2tNZWRpYVN0cmVhbUNlbnRlcjo6Z2V0TWVkaWFTdHJlYW1UcmFja1Nv
dXJjZXMpOiBEaXR0by4KKyAgICAgICAgKiBwbGF0Zm9ybS9tb2NrL01vY2tNZWRpYVN0cmVhbUNl
bnRlci5oOgorCiAyMDEzLTEwLTA3ICBQaGlsaXBwZSBOb3JtYW5kICA8cG5vcm1hbmRAaWdhbGlh
LmNvbT4KIAogICAgICAgICBVUkxNZWRpYVN0cmVhbSBpcyB1bmd1YXJkZWQgYnkgRU5BQkxFKE1F
RElBX1NUUkVBTSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0Cj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CShyZXZpc2lvbiAxNTcwMTYpCisr
KyBTb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMTg2LDEy
ICsxODYsMjAgQEAgc2V0KFdlYkNvcmVfSURMX0ZJTEVTCiAgICAgTW9kdWxlcy9tZWRpYXNvdXJj
ZS9XZWJLaXRTb3VyY2VCdWZmZXIuaWRsCiAgICAgTW9kdWxlcy9tZWRpYXNvdXJjZS9XZWJLaXRT
b3VyY2VCdWZmZXJMaXN0LmlkbAogCisgICAgTW9kdWxlcy9tZWRpYXN0cmVhbS9BbGxBdWRpb0Nh
cGFiaWxpdGllcy5pZGwKKyAgICBNb2R1bGVzL21lZGlhc3RyZWFtL0FsbFZpZGVvQ2FwYWJpbGl0
aWVzLmlkbAogICAgIE1vZHVsZXMvbWVkaWFzdHJlYW0vQXVkaW9TdHJlYW1UcmFjay5pZGwKKyAg
ICBNb2R1bGVzL21lZGlhc3RyZWFtL0NhcGFiaWxpdHlSYW5nZS5pZGwKKyAgICBNb2R1bGVzL21l
ZGlhc3RyZWFtL01lZGlhU291cmNlU3RhdGVzLmlkbAogICAgIE1vZHVsZXMvbWVkaWFzdHJlYW0v
TWVkaWFTdHJlYW0uaWRsCisgICAgTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbUNhcGFi
aWxpdGllcy5pZGwKICAgICBNb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtRXZlbnQuaWRs
CiAgICAgTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVRyYWNrLmlkbAogICAgIE1vZHVs
ZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1UcmFja0V2ZW50LmlkbAogICAgIE1vZHVsZXMvbWVk
aWFzdHJlYW0vTWVkaWFTdHJlYW1UcmFja1NvdXJjZXNDYWxsYmFjay5pZGwKKyAgICBNb2R1bGVz
L21lZGlhc3RyZWFtL01lZGlhVHJhY2tDb25zdHJhaW50LmlkbAorICAgIE1vZHVsZXMvbWVkaWFz
dHJlYW0vTWVkaWFUcmFja0NvbnN0cmFpbnRTZXQuaWRsCisgICAgTW9kdWxlcy9tZWRpYXN0cmVh
bS9NZWRpYVRyYWNrQ29uc3RyYWludHMuaWRsCiAgICAgTW9kdWxlcy9tZWRpYXN0cmVhbS9OYXZp
Z2F0b3JNZWRpYVN0cmVhbS5pZGwKICAgICBNb2R1bGVzL21lZGlhc3RyZWFtL05hdmlnYXRvclVz
ZXJNZWRpYUVycm9yLmlkbAogICAgIE1vZHVsZXMvbWVkaWFzdHJlYW0vTmF2aWdhdG9yVXNlck1l
ZGlhRXJyb3JDYWxsYmFjay5pZGwKQEAgLTc4NiwxMyArNzk0LDE5IEBAIHNldChXZWJDb3JlX1NP
VVJDRVMKICAgICBNb2R1bGVzL21lZGlhc291cmNlL1NvdXJjZUJ1ZmZlckxpc3QuY3BwCiAKICAg
ICBNb2R1bGVzL21lZGlhc3RyZWFtL0F1ZGlvU3RyZWFtVHJhY2suY3BwCisgICAgTW9kdWxlcy9t
ZWRpYXN0cmVhbS9DYXBhYmlsaXR5UmFuZ2UuY3BwCiAgICAgTW9kdWxlcy9tZWRpYXN0cmVhbS9N
ZWRpYUNvbnN0cmFpbnRzSW1wbC5jcHAKKyAgICBNb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU291
cmNlU3RhdGVzLmNwcAogICAgIE1vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW0uY3BwCisg
ICAgTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbUNhcGFiaWxpdGllcy5jcHAKICAgICBN
b2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtRXZlbnQuY3BwCiAgICAgTW9kdWxlcy9tZWRp
YXN0cmVhbS9NZWRpYVN0cmVhbVJlZ2lzdHJ5LmNwcAogICAgIE1vZHVsZXMvbWVkaWFzdHJlYW0v
TWVkaWFTdHJlYW1UcmFjay5jcHAKICAgICBNb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFt
VHJhY2tFdmVudC5jcHAKICAgICBNb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJhY2tT
b3VyY2VzUmVxdWVzdC5jcHAKKyAgICBNb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhVHJhY2tDb25z
dHJhaW50LmNwcAorICAgIE1vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFUcmFja0NvbnN0cmFpbnRT
ZXQuY3BwCisgICAgTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVRyYWNrQ29uc3RyYWludHMuY3Bw
CiAgICAgTW9kdWxlcy9tZWRpYXN0cmVhbS9OYXZpZ2F0b3JNZWRpYVN0cmVhbS5jcHAKICAgICBN
b2R1bGVzL21lZGlhc3RyZWFtL05hdmlnYXRvclVzZXJNZWRpYUVycm9yLmNwcAogICAgIE1vZHVs
ZXMvbWVkaWFzdHJlYW0vUlRDRFRNRlNlbmRlci5jcHAKQEAgLTg2Myw2ICs4NzcsNyBAQCBzZXQo
V2ViQ29yZV9TT1VSQ0VTCiAgICAgTW9kdWxlcy93ZWJhdWRpby9HYWluTm9kZS5jcHAKICAgICBN
b2R1bGVzL3dlYmF1ZGlvL01lZGlhRWxlbWVudEF1ZGlvU291cmNlTm9kZS5jcHAKICAgICBNb2R1
bGVzL3dlYmF1ZGlvL01lZGlhU3RyZWFtQXVkaW9EZXN0aW5hdGlvbk5vZGUuY3BwCisgICAgTW9k
dWxlcy93ZWJhdWRpby9NZWRpYVN0cmVhbUF1ZGlvU291cmNlLmNwcAogICAgIE1vZHVsZXMvd2Vi
YXVkaW8vTWVkaWFTdHJlYW1BdWRpb1NvdXJjZU5vZGUuY3BwCiAgICAgTW9kdWxlcy93ZWJhdWRp
by9PZmZsaW5lQXVkaW9Db21wbGV0aW9uRXZlbnQuY3BwCiAgICAgTW9kdWxlcy93ZWJhdWRpby9P
ZmZsaW5lQXVkaW9Db250ZXh0LmNwcApJbmRleDogU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJj
ZXMubWFrZQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtl
CShyZXZpc2lvbiAxNTcwMTYpCisrKyBTb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtl
CSh3b3JraW5nIGNvcHkpCkBAIC0xMDEsMTIgKzEwMSwyMCBAQCBCSU5ESU5HX0lETFMgPSBcCiAg
ICAgJChXZWJDb3JlKS9Nb2R1bGVzL21lZGlhc291cmNlL1dlYktpdFNvdXJjZUJ1ZmZlckxpc3Qu
aWRsIFwKICAgICAkKFdlYkNvcmUpL01vZHVsZXMvbWVkaWFzb3VyY2UvU291cmNlQnVmZmVyLmlk
bCBcCiAgICAgJChXZWJDb3JlKS9Nb2R1bGVzL21lZGlhc291cmNlL1NvdXJjZUJ1ZmZlckxpc3Qu
aWRsIFwKKwkkKFdlYkNvcmUpL01vZHVsZXMvbWVkaWFzdHJlYW0vQWxsVmlkZW9DYXBhYmlsaXRp
ZXMuaWRsIFwKKwkkKFdlYkNvcmUpL01vZHVsZXMvbWVkaWFzdHJlYW0vQWxsQXVkaW9DYXBhYmls
aXRpZXMuaWRsIFwKIAkkKFdlYkNvcmUpL01vZHVsZXMvbWVkaWFzdHJlYW0vQXVkaW9TdHJlYW1U
cmFjay5pZGwgXAorICAgICQoV2ViQ29yZSkvTW9kdWxlcy9tZWRpYXN0cmVhbS9DYXBhYmlsaXR5
UmFuZ2UuaWRsIFwKKyAgICAkKFdlYkNvcmUpL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTb3Vy
Y2VTdGF0ZXMuaWRsIFwKIAkkKFdlYkNvcmUpL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJl
YW0uaWRsIFwKKwkkKFdlYkNvcmUpL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1DYXBh
YmlsaXRpZXMuaWRsIFwKICAgICAkKFdlYkNvcmUpL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFT
dHJlYW1FdmVudC5pZGwgXAogICAgICQoV2ViQ29yZSkvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRp
YVN0cmVhbVRyYWNrLmlkbCBcCiAgICAgJChXZWJDb3JlKS9Nb2R1bGVzL21lZGlhc3RyZWFtL01l
ZGlhU3RyZWFtVHJhY2tFdmVudC5pZGwgXAogICAgICQoV2ViQ29yZSkvTW9kdWxlcy9tZWRpYXN0
cmVhbS9NZWRpYVN0cmVhbVRyYWNrU291cmNlc0NhbGxiYWNrLmlkbCBcCisgICAgJChXZWJDb3Jl
KS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhVHJhY2tDb25zdHJhaW50LmlkbCBcCisgICAgJChX
ZWJDb3JlKS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhVHJhY2tDb25zdHJhaW50cy5pZGwgXAor
ICAgICQoV2ViQ29yZSkvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVRyYWNrQ29uc3RyYWludFNl
dC5pZGwgXAogICAgICQoV2ViQ29yZSkvTW9kdWxlcy9tZWRpYXN0cmVhbS9OYXZpZ2F0b3JNZWRp
YVN0cmVhbS5pZGwgXAogICAgICQoV2ViQ29yZSkvTW9kdWxlcy9tZWRpYXN0cmVhbS9OYXZpZ2F0
b3JVc2VyTWVkaWFFcnJvci5pZGwgXAogICAgICQoV2ViQ29yZSkvTW9kdWxlcy9tZWRpYXN0cmVh
bS9OYXZpZ2F0b3JVc2VyTWVkaWFFcnJvckNhbGxiYWNrLmlkbCBcCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL0dO
VW1ha2VmaWxlLmxpc3QuYW0JKHJldmlzaW9uIDE1NzAxNikKKysrIFNvdXJjZS9XZWJDb3JlL0dO
VW1ha2VmaWxlLmxpc3QuYW0JKHdvcmtpbmcgY29weSkKQEAgLTMxLDYgKzMxLDEwIEBAIHdlYmNv
cmVfYnVpbHRfc291cmNlcyArPSBcCiAJRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9JbnNwZWN0b3JQ
cm90b2NvbFZlcnNpb24uaCBcCiAJRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0Fic3RyYWN0V29y
a2VyLmNwcCBcCiAJRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0Fic3RyYWN0V29ya2VyLmggXAor
CURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNBbGxBdWRpb0NhcGFiaWxpdGllcy5jcHAgXAorCURl
cml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNBbGxBdWRpb0NhcGFiaWxpdGllcy5oIFwKKwlEZXJpdmVk
U291cmNlcy9XZWJDb3JlL0pTQWxsVmlkZW9DYXBhYmlsaXRpZXMuY3BwIFwKKwlEZXJpdmVkU291
cmNlcy9XZWJDb3JlL0pTQWxsVmlkZW9DYXBhYmlsaXRpZXMuaCBcCiAJRGVyaXZlZFNvdXJjZXMv
V2ViQ29yZS9KU0F0dHIuY3BwIFwKIAlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTQXR0ci5oIFwK
IAlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTQXVkaW9CdWZmZXIuY3BwIFwKQEAgLTg3LDYgKzkx
LDggQEAgd2ViY29yZV9idWlsdF9zb3VyY2VzICs9IFwKIAlEZXJpdmVkU291cmNlcy9XZWJDb3Jl
L0pTQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmggXAogCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUv
SlNDYW52YXNSZW5kZXJpbmdDb250ZXh0LmNwcCBcCiAJRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9K
U0NhbnZhc1JlbmRlcmluZ0NvbnRleHQuaCBcCisJRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0Nh
cGFiaWxpdHlSYW5nZS5jcHAgXAorCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNDYXBhYmlsaXR5
UmFuZ2UuaCBcCiAJRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0NEQVRBU2VjdGlvbi5jcHAgXAog
CURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNDREFUQVNlY3Rpb24uaCBcCiAJRGVyaXZlZFNvdXJj
ZXMvV2ViQ29yZS9KU0NoYXJhY3RlckRhdGEuY3BwIFwKQEAgLTQ2MiwxMiArNDY4LDE2IEBAIHdl
YmNvcmVfYnVpbHRfc291cmNlcyArPSBcCiAJRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU01lZGlh
U291cmNlLmggXAogCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNXZWJLaXRNZWRpYVNvdXJjZS5j
cHAgXAogCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNXZWJLaXRNZWRpYVNvdXJjZS5oIFwKKwlE
ZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTTWVkaWFTb3VyY2VTdGF0ZXMuY3BwIFwKKwlEZXJpdmVk
U291cmNlcy9XZWJDb3JlL0pTTWVkaWFTb3VyY2VTdGF0ZXMuaCBcCiAJRGVyaXZlZFNvdXJjZXMv
V2ViQ29yZS9KU01lZGlhU3RyZWFtLmNwcCBcCiAJRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU01l
ZGlhU3RyZWFtLmggXAogCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNNZWRpYVN0cmVhbUF1ZGlv
U291cmNlTm9kZS5jcHAgXAogCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNNZWRpYVN0cmVhbUF1
ZGlvU291cmNlTm9kZS5oIFwKIAlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTTWVkaWFTdHJlYW1B
dWRpb0Rlc3RpbmF0aW9uTm9kZS5jcHAgXAogCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNNZWRp
YVN0cmVhbUF1ZGlvRGVzdGluYXRpb25Ob2RlLmggXAorCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUv
SlNNZWRpYVN0cmVhbUNhcGFiaWxpdGllcy5jcHAgXAorCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUv
SlNNZWRpYVN0cmVhbUNhcGFiaWxpdGllcy5oIFwKIAlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pT
TWVkaWFTdHJlYW1FdmVudC5jcHAgXAogCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNNZWRpYVN0
cmVhbUV2ZW50LmggXAogCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNNZWRpYVN0cmVhbVRyYWNr
LmNwcCBcCkBAIC00ODAsNiArNDkwLDEyIEBAIHdlYmNvcmVfYnVpbHRfc291cmNlcyArPSBcCiAJ
RGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU01lZGlhUXVlcnlMaXN0LmggXAogCURlcml2ZWRTb3Vy
Y2VzL1dlYkNvcmUvSlNNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyLmNwcCBcCiAJRGVyaXZlZFNvdXJj
ZXMvV2ViQ29yZS9KU01lZGlhUXVlcnlMaXN0TGlzdGVuZXIuaCBcCisJRGVyaXZlZFNvdXJjZXMv
V2ViQ29yZS9KU01lZGlhVHJhY2tDb25zdHJhaW50LmNwcCBcCisJRGVyaXZlZFNvdXJjZXMvV2Vi
Q29yZS9KU01lZGlhVHJhY2tDb25zdHJhaW50LmggXAorCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUv
SlNNZWRpYVRyYWNrQ29uc3RyYWludHMuY3BwIFwKKwlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pT
TWVkaWFUcmFja0NvbnN0cmFpbnRzLmggXAorCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNNZWRp
YVRyYWNrQ29uc3RyYWludFNldC5jcHAgXAorCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNNZWRp
YVRyYWNrQ29uc3RyYWludFNldC5oIFwKIAlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTTWVzc2Fn
ZUNoYW5uZWwuY3BwIFwKIAlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTTWVzc2FnZUNoYW5uZWwu
aCBcCiAJRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU01lc3NhZ2VFdmVudC5jcHAgXApAQCAtMTE4
NiwxMiArMTIwMiwyMCBAQCBkb21fYmluZGluZ19pZGxzICs9IFwKIAkkKFdlYkNvcmUpL01vZHVs
ZXMvbWVkaWFzb3VyY2UvV2ViS2l0TWVkaWFTb3VyY2UuaWRsIFwKIAkkKFdlYkNvcmUpL01vZHVs
ZXMvbWVkaWFzb3VyY2UvV2ViS2l0U291cmNlQnVmZmVyLmlkbCBcCiAJJChXZWJDb3JlKS9Nb2R1
bGVzL21lZGlhc291cmNlL1dlYktpdFNvdXJjZUJ1ZmZlckxpc3QuaWRsIFwKKwkkKFdlYkNvcmUp
L01vZHVsZXMvbWVkaWFzdHJlYW0vQWxsVmlkZW9DYXBhYmlsaXRpZXMuaWRsIFwKKwkkKFdlYkNv
cmUpL01vZHVsZXMvbWVkaWFzdHJlYW0vQWxsQXVkaW9DYXBhYmlsaXRpZXMuaWRsIFwKIAkkKFdl
YkNvcmUpL01vZHVsZXMvbWVkaWFzdHJlYW0vQXVkaW9TdHJlYW1UcmFjay5pZGwgXAorCSQoV2Vi
Q29yZSkvTW9kdWxlcy9tZWRpYXN0cmVhbS9DYXBhYmlsaXR5UmFuZ2UuaWRsIFwKKwkkKFdlYkNv
cmUpL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTb3VyY2VTdGF0ZXMuaWRsIFwKIAkkKFdlYkNv
cmUpL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW0uaWRsIFwKKwkkKFdlYkNvcmUpL01v
ZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1DYXBhYmlsaXRpZXMuaWRsIFwKIAkkKFdlYkNv
cmUpL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1FdmVudC5pZGwgXAogCSQoV2ViQ29y
ZSkvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVRyYWNrLmlkbCBcCiAJJChXZWJDb3Jl
KS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJhY2tFdmVudC5pZGwgXAogCSQoV2Vi
Q29yZSkvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVRyYWNrU291cmNlc0NhbGxiYWNr
LmlkbCBcCisJJChXZWJDb3JlKS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhVHJhY2tDb25zdHJh
aW50LmlkbCBcCisJJChXZWJDb3JlKS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhVHJhY2tDb25z
dHJhaW50cy5pZGwgXAorCSQoV2ViQ29yZSkvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVRyYWNr
Q29uc3RyYWludFNldC5pZGwgXAogCSQoV2ViQ29yZSkvTW9kdWxlcy9tZWRpYXN0cmVhbS9OYXZp
Z2F0b3JNZWRpYVN0cmVhbS5pZGwgXAogCSQoV2ViQ29yZSkvTW9kdWxlcy9tZWRpYXN0cmVhbS9O
YXZpZ2F0b3JVc2VyTWVkaWFFcnJvci5pZGwgXAogCSQoV2ViQ29yZSkvTW9kdWxlcy9tZWRpYXN0
cmVhbS9OYXZpZ2F0b3JVc2VyTWVkaWFFcnJvckNhbGxiYWNrLmlkbCBcCkBAIC0xODQ1LDEyICsx
ODY5LDIwIEBAIHdlYmNvcmVfbW9kdWxlc19zb3VyY2VzICs9IFwKIAlTb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL21lZGlhc291cmNlL1dlYktpdFNvdXJjZUJ1ZmZlci5oIFwKIAlTb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL21lZGlhc291cmNlL1dlYktpdFNvdXJjZUJ1ZmZlckxpc3QuY3BwIFwKIAlTb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc291cmNlL1dlYktpdFNvdXJjZUJ1ZmZlckxpc3QuaCBc
CisJU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9BbGxBdWRpb0NhcGFiaWxpdGll
cy5oIFwKKwlTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL0FsbFZpZGVvQ2FwYWJp
bGl0aWVzLmggXAogCVNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vQXVkaW9TdHJl
YW1UcmFjay5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vQXVkaW9T
dHJlYW1UcmFjay5oIFwKKwlTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL0NhcGFi
aWxpdHlSYW5nZS5jcHAgXAorCVNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vQ2Fw
YWJpbGl0eVJhbmdlLmggXAogCVNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVk
aWFDb25zdHJhaW50c0ltcGwuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3Ry
ZWFtL01lZGlhQ29uc3RyYWludHNJbXBsLmggXAorCVNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVk
aWFzdHJlYW0vTWVkaWFTb3VyY2VTdGF0ZXMuY3BwIFwKKwlTb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L21lZGlhc3RyZWFtL01lZGlhU291cmNlU3RhdGVzLmggXAogCVNvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW0uY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L21lZGlhc3RyZWFtL01lZGlhU3RyZWFtLmggXAorCVNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVk
aWFzdHJlYW0vTWVkaWFTdHJlYW1DYXBhYmlsaXRpZXMuY3BwIFwKKwlTb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtQ2FwYWJpbGl0aWVzLmggXAogCVNvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1FdmVudC5jcHAgXAogCVNvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1FdmVudC5oIFwKIAlTb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtUmVnaXN0cnkuY3BwIFwK
QEAgLTE4NjIsNiArMTg5NCwxMiBAQCB3ZWJjb3JlX21vZHVsZXNfc291cmNlcyArPSBcCiAJU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVRyYWNrU291cmNlc0Nh
bGxiYWNrLmggXAogCVNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJl
YW1UcmFja1NvdXJjZXNSZXF1ZXN0LmNwcCBcCiAJU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRp
YXN0cmVhbS9NZWRpYVN0cmVhbVRyYWNrU291cmNlc1JlcXVlc3QuaCBcCisJU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVRyYWNrQ29uc3RyYWludC5jcHAgXAorCVNvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFUcmFja0NvbnN0cmFpbnQuaCBcCisJ
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVRyYWNrQ29uc3RyYWludFNl
dC5jcHAgXAorCVNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFUcmFja0Nv
bnN0cmFpbnRTZXQuaCBcCisJU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRp
YVRyYWNrQ29uc3RyYWludHMuY3BwIFwKKwlTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3Ry
ZWFtL01lZGlhVHJhY2tDb25zdHJhaW50cy5oIFwKIAlTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21l
ZGlhc3RyZWFtL05hdmlnYXRvck1lZGlhU3RyZWFtLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9tZWRpYXN0cmVhbS9OYXZpZ2F0b3JNZWRpYVN0cmVhbS5oIFwKIAlTb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL21lZGlhc3RyZWFtL05hdmlnYXRvclVzZXJNZWRpYUVycm9yLmNwcCBcCkBAIC0y
MDA3LDYgKzIwNDUsOCBAQCB3ZWJjb3JlX21vZHVsZXNfc291cmNlcyArPSBcCiAJU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJhdWRpby9NZWRpYVN0cmVhbUF1ZGlvU291cmNlTm9kZS5oIFwKIAlT
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL01lZGlhU3RyZWFtQXVkaW9EZXN0aW5hdGlv
bk5vZGUuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL01lZGlhU3RyZWFt
QXVkaW9EZXN0aW5hdGlvbk5vZGUuaCBcCisJU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRp
by9NZWRpYVN0cmVhbUF1ZGlvU291cmNlLmNwcCBcCisJU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJhdWRpby9NZWRpYVN0cmVhbUF1ZGlvU291cmNlLmggXAogCVNvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViYXVkaW8vT2ZmbGluZUF1ZGlvQ29udGV4dC5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViYXVkaW8vT2ZmbGluZUF1ZGlvQ29udGV4dC5oIFwKIAlTb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmF1ZGlvL09mZmxpbmVBdWRpb0Rlc3RpbmF0aW9uTm9kZS5oIFwKQEAgLTIzMTIs
NiArMjM1Miw3IEBAIHdlYmNvcmVfc291cmNlcyArPSBcCiAJU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNNYWluVGhyZWFkRXhlY1N0YXRlLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNNYWluVGhyZWFkRXhlY1N0YXRlLmggXAogCVNvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTTWVkaWFMaXN0Q3VzdG9tLmggXAorCVNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
TWVkaWFTb3VyY2VTdGF0ZXNDdXN0b20uY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU01lc3NhZ2VDaGFubmVsQ3VzdG9tLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNNZXNzYWdlRXZlbnRDdXN0b20uY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU01lc3NhZ2VQb3J0Q3VzdG9tLmNwcCBcCkBAIC01MzM2LDYgKzUzNzcsNyBAQCB3ZWJjb3Jl
X3BsYXRmb3JtX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3Ry
ZWFtL01lZGlhU3RyZWFtRGVzY3JpcHRvci5oIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
ZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVNvdXJjZS5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtU291cmNlLmggXAorCVNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtU291cmNlQ2FwYWJpbGl0aWVzLmggXAogCVNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJhY2tTb3VyY2Vz
UmVxdWVzdENsaWVudC5oIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9S
VENDb25maWd1cmF0aW9uLmggXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFt
L1JUQ0RUTUZTZW5kZXJIYW5kbGVyLmggXApJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9t
ZWRpYXN0cmVhbS9BbGxBdWRpb0NhcGFiaWxpdGllcy5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vQWxsQXVkaW9DYXBhYmlsaXRpZXMuaAkocmV2aXNp
b24gMCkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vQWxsQXVkaW9DYXBh
YmlsaXRpZXMuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDU5IEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBg
QVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IK
KyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZu
ZGVmIEFsbEF1ZGlvQ2FwYWJpbGl0aWVzX2gKKyNkZWZpbmUgQWxsQXVkaW9DYXBhYmlsaXRpZXNf
aAorCisjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKKworI2luY2x1ZGUgIk1lZGlhU3RyZWFtQ2Fw
YWJpbGl0aWVzLmgiCisjaW5jbHVkZSAiTWVkaWFTdHJlYW1Tb3VyY2VDYXBhYmlsaXRpZXMuaCIK
KyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgewor
CitjbGFzcyBDYXBhYmlsaXR5UmFuZ2U7CitjbGFzcyBNZWRpYVN0cmVhbVNvdXJjZUNhcGFiaWxp
dGllczsKKworY2xhc3MgQWxsQXVkaW9DYXBhYmlsaXRpZXMgOiBwdWJsaWMgTWVkaWFTdHJlYW1D
YXBhYmlsaXRpZXMgeworcHVibGljOgorICAgIHN0YXRpYyBQYXNzUmVmUHRyPEFsbEF1ZGlvQ2Fw
YWJpbGl0aWVzPiBjcmVhdGUoUGFzc1JlZlB0cjxNZWRpYVN0cmVhbVNvdXJjZUNhcGFiaWxpdGll
cz4gY2FwYWJpbGl0aWVzKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBBbGxB
dWRpb0NhcGFiaWxpdGllcyhjYXBhYmlsaXRpZXMpKTsKKyAgICB9CisgICAgdmlydHVhbCB+QWxs
QXVkaW9DYXBhYmlsaXRpZXMoKSB7IH0KKworcHJpdmF0ZToKKyAgICBleHBsaWNpdCBBbGxBdWRp
b0NhcGFiaWxpdGllcyhQYXNzUmVmUHRyPE1lZGlhU3RyZWFtU291cmNlQ2FwYWJpbGl0aWVzPiBj
YXBhYmlsaXRpZXMpCisgICAgICAgIDogTWVkaWFTdHJlYW1DYXBhYmlsaXRpZXMoY2FwYWJpbGl0
aWVzKQorICAgIHsKKyAgICB9Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRp
ZiAvLyBBbGxBdWRpb0NhcGFiaWxpdGllc19oCisKKyNlbmRpZgpJbmRleDogU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9BbGxBdWRpb0NhcGFiaWxpdGllcy5pZGwKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9BbGxBdWRpb0NhcGFiaWxp
dGllcy5pZGwJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3Ry
ZWFtL0FsbEF1ZGlvQ2FwYWJpbGl0aWVzLmlkbAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDMz
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
Q09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4gCisgKi8KKworWworICAgIE5vSW50ZXJmYWNlT2JqZWN0LAorICAgIENvbmRpdGlvbmFs
PU1FRElBX1NUUkVBTSwKKyAgICBKU0dlbmVyYXRlVG9KU09iamVjdCwKK10gaW50ZXJmYWNlIEFs
bEF1ZGlvQ2FwYWJpbGl0aWVzIDogTWVkaWFTdHJlYW1DYXBhYmlsaXRpZXMgeworICAgIHJlYWRv
bmx5IGF0dHJpYnV0ZSBET01TdHJpbmdbXSBzb3VyY2VJZDsKKyAgICByZWFkb25seSBhdHRyaWJ1
dGUgQ2FwYWJpbGl0eVJhbmdlIHZvbHVtZTsKK307CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL21lZGlhc3RyZWFtL0FsbFZpZGVvQ2FwYWJpbGl0aWVzLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9BbGxWaWRlb0NhcGFiaWxpdGllcy5oCShy
ZXZpc2lvbiAwKQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9BbGxWaWRl
b0NhcGFiaWxpdGllcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNTcgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElO
Qy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5D
LiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNpZm5kZWYgQWxsVmlkZW9DYXBhYmlsaXRpZXNfaAorI2RlZmluZSBBbGxWaWRlb0NhcGFiaWxp
dGllc19oCisKKyNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQorCisjaW5jbHVkZSAiTWVkaWFTdHJl
YW1DYXBhYmlsaXRpZXMuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBDYXBhYmls
aXR5UmFuZ2U7CitjbGFzcyBNZWRpYVN0cmVhbVNvdXJjZUNhcGFiaWxpdGllczsKKworY2xhc3Mg
QWxsVmlkZW9DYXBhYmlsaXRpZXMgOiBwdWJsaWMgTWVkaWFTdHJlYW1DYXBhYmlsaXRpZXMgewor
cHVibGljOgorICAgIHN0YXRpYyBQYXNzUmVmUHRyPEFsbFZpZGVvQ2FwYWJpbGl0aWVzPiBjcmVh
dGUoUGFzc1JlZlB0cjxNZWRpYVN0cmVhbVNvdXJjZUNhcGFiaWxpdGllcz4gY2FwYWJpbGl0aWVz
KQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBBbGxWaWRlb0NhcGFiaWxpdGll
cyhjYXBhYmlsaXRpZXMpKTsKKyAgICB9CisgICAgdmlydHVhbCB+QWxsVmlkZW9DYXBhYmlsaXRp
ZXMoKSB7IH0KKworcHJpdmF0ZToKKyAgICBleHBsaWNpdCBBbGxWaWRlb0NhcGFiaWxpdGllcyhQ
YXNzUmVmUHRyPE1lZGlhU3RyZWFtU291cmNlQ2FwYWJpbGl0aWVzPiBjYXBhYmlsaXRpZXMpCisg
ICAgICAgIDogTWVkaWFTdHJlYW1DYXBhYmlsaXRpZXMoY2FwYWJpbGl0aWVzKQorICAgIHsKKyAg
ICB9Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBBbGxWaWRlb0Nh
cGFiaWxpdGllc19oCisKKyNlbmRpZgpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRp
YXN0cmVhbS9BbGxWaWRlb0NhcGFiaWxpdGllcy5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9BbGxWaWRlb0NhcGFiaWxpdGllcy5pZGwJKHJldmlz
aW9uIDApCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL0FsbFZpZGVvQ2Fw
YWJpbGl0aWVzLmlkbAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDM4IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMu
IGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4g
T1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKwor
WworICAgIE5vSW50ZXJmYWNlT2JqZWN0LAorICAgIENvbmRpdGlvbmFsPU1FRElBX1NUUkVBTSwK
KyAgICBKU0dlbmVyYXRlVG9KU09iamVjdCwKK10gaW50ZXJmYWNlIEFsbFZpZGVvQ2FwYWJpbGl0
aWVzIDogTWVkaWFTdHJlYW1DYXBhYmlsaXRpZXMgeworICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBE
T01TdHJpbmdbXSBzb3VyY2VUeXBlOworICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBET01TdHJpbmdb
XSBzb3VyY2VJZDsKKyAgICByZWFkb25seSBhdHRyaWJ1dGUgQ2FwYWJpbGl0eVJhbmdlIHdpZHRo
OworICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBDYXBhYmlsaXR5UmFuZ2UgaGVpZ2h0OworICAgIHJl
YWRvbmx5IGF0dHJpYnV0ZSBDYXBhYmlsaXR5UmFuZ2UgZnJhbWVSYXRlOworICAgIHJlYWRvbmx5
IGF0dHJpYnV0ZSBDYXBhYmlsaXR5UmFuZ2UgYXNwZWN0UmF0aW87CisgICAgcmVhZG9ubHkgYXR0
cmlidXRlIERPTVN0cmluZ1tdICBmYWNpbmdNb2RlOworfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvbWVkaWFzdHJlYW0vQXVkaW9TdHJlYW1UcmFjay5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9BdWRpb1N0cmVhbVRyYWNrLmNwcAko
cmV2aXNpb24gMTU3MDE2KQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9B
dWRpb1N0cmVhbVRyYWNrLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzcsMTQgKzM3LDE3IEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAogUGFzc1JlZlB0cjxBdWRpb1N0cmVhbVRyYWNrPiBBdWRpb1N0
cmVhbVRyYWNrOjpjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgY29uc3Qg
RGljdGlvbmFyeSYgYXVkaW9Db25zdHJhaW50cykKIHsKLSAgICBSZWZQdHI8QXVkaW9TdHJlYW1U
cmFjaz4gdHJhY2sgPSBhZG9wdFJlZihuZXcgQXVkaW9TdHJlYW1UcmFjayhjb250ZXh0LCAwLCAm
YXVkaW9Db25zdHJhaW50cykpOwotICAgIHJldHVybiB0cmFjay5yZWxlYXNlKCk7CisgICAgcmV0
dXJuIGFkb3B0UmVmKG5ldyBBdWRpb1N0cmVhbVRyYWNrKGNvbnRleHQsIDAsICZhdWRpb0NvbnN0
cmFpbnRzKSk7CiB9CiAKIFBhc3NSZWZQdHI8QXVkaW9TdHJlYW1UcmFjaz4gQXVkaW9TdHJlYW1U
cmFjazo6Y3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIE1lZGlhU3RyZWFt
U291cmNlKiBzb3VyY2UpCiB7Ci0gICAgUmVmUHRyPEF1ZGlvU3RyZWFtVHJhY2s+IHRyYWNrID0g
YWRvcHRSZWYobmV3IEF1ZGlvU3RyZWFtVHJhY2soY29udGV4dCwgc291cmNlLCAwKSk7Ci0gICAg
cmV0dXJuIHRyYWNrLnJlbGVhc2UoKTsKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3IEF1ZGlvU3Ry
ZWFtVHJhY2soY29udGV4dCwgc291cmNlLCAwKSk7Cit9CisKK1Bhc3NSZWZQdHI8QXVkaW9TdHJl
YW1UcmFjaz4gQXVkaW9TdHJlYW1UcmFjazo6Y3JlYXRlKE1lZGlhU3RyZWFtVHJhY2sqIHRyYWNr
KQoreworICAgIHJldHVybiBhZG9wdFJlZihuZXcgQXVkaW9TdHJlYW1UcmFjayh0cmFjaykpOwog
fQogCiBBdWRpb1N0cmVhbVRyYWNrOjpBdWRpb1N0cmVhbVRyYWNrKFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQqIGNvbnRleHQsIE1lZGlhU3RyZWFtU291cmNlKiBzb3VyY2UsIGNvbnN0IERpY3Rpb25h
cnkqIGF1ZGlvQ29uc3RyYWludHMpCkBAIC01Miw2ICs1NSwxMSBAQCBBdWRpb1N0cmVhbVRyYWNr
OjpBdWRpb1N0cmVhbVRyYWNrKFNjcmlwCiB7CiB9CiAKK0F1ZGlvU3RyZWFtVHJhY2s6OkF1ZGlv
U3RyZWFtVHJhY2soTWVkaWFTdHJlYW1UcmFjayogdHJhY2spCisgICAgOiBNZWRpYVN0cmVhbVRy
YWNrKHRyYWNrKQoreworfQorCiBjb25zdCBBdG9taWNTdHJpbmcmIEF1ZGlvU3RyZWFtVHJhY2s6
OmtpbmQoKSBjb25zdAogewogICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxBdG9taWNTdHJpbmc+
IGF1ZGlvS2luZCgiYXVkaW8iLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vQXVkaW9TdHJlYW1UcmFj
ay5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vQXVk
aW9TdHJlYW1UcmFjay5oCShyZXZpc2lvbiAxNTcwMzkpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL21lZGlhc3RyZWFtL0F1ZGlvU3RyZWFtVHJhY2suaAkod29ya2luZyBjb3B5KQpAQCAtMjks
OCArMjksOCBAQAogI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCiAKICNpbmNsdWRlICJNZWRpYVN0
cmVhbVRyYWNrLmgiCi0jaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogI2luY2x1ZGUgPHd0Zi9SZWZD
b3VudGVkLmg+CisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKQEAgLTQxLDYgKzQxLDcgQEAgY2xhc3MgQXVkaW9TdHJlYW1UcmFjayBGSU5BTCA6IHB1Ymxp
YyBNZQogcHVibGljOgogICAgIHN0YXRpYyBQYXNzUmVmUHRyPEF1ZGlvU3RyZWFtVHJhY2s+IGNy
ZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgY29uc3QgRGljdGlvbmFyeSYpOwogICAgIHN0
YXRpYyBQYXNzUmVmUHRyPEF1ZGlvU3RyZWFtVHJhY2s+IGNyZWF0ZShTY3JpcHRFeGVjdXRpb25D
b250ZXh0KiwgTWVkaWFTdHJlYW1Tb3VyY2UqKTsKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxBdWRp
b1N0cmVhbVRyYWNrPiBjcmVhdGUoTWVkaWFTdHJlYW1UcmFjayopOwogCiAgICAgdmlydHVhbCB+
QXVkaW9TdHJlYW1UcmFjaygpIHsgfQogCkBAIC00OCw2ICs0OSw3IEBAIHB1YmxpYzoKIAogcHJp
dmF0ZToKICAgICBBdWRpb1N0cmVhbVRyYWNrKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBNZWRp
YVN0cmVhbVNvdXJjZSosIGNvbnN0IERpY3Rpb25hcnkqKTsKKyAgICBleHBsaWNpdCBBdWRpb1N0
cmVhbVRyYWNrKE1lZGlhU3RyZWFtVHJhY2sqKTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vQ2FwYWJpbGl0eVJh
bmdlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFt
L0NhcGFiaWxpdHlSYW5nZS5jcHAJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL21lZGlhc3RyZWFtL0NhcGFiaWxpdHlSYW5nZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAs
MCArMSw5MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENP
TVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuIAorICoKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpZiBFTkFCTEUoTUVESUFf
U1RSRUFNKQorCisjaW5jbHVkZSAiQ2FwYWJpbGl0eVJhbmdlLmgiCisKKyNpbmNsdWRlICJKU0RP
TUJpbmRpbmcuaCIKKyNpbmNsdWRlICJNZWRpYVNvdXJjZVN0YXRlcy5oIgorI2luY2x1ZGUgIlNj
cmlwdFZhbHVlLmgiCisjaW5jbHVkZSA8aW50ZXJwcmV0ZXIvQ2FsbEZyYW1lLmg+CisjaW5jbHVk
ZSA8cnVudGltZS9KU0NKU1ZhbHVlLmg+CisKK3VzaW5nIG5hbWVzcGFjZSBKU0M7CisKK25hbWVz
cGFjZSBXZWJDb3JlIHsKKworUGFzc1JlZlB0cjxDYXBhYmlsaXR5UmFuZ2U+IENhcGFiaWxpdHlS
YW5nZTo6Y3JlYXRlKGNvbnN0IE1lZGlhU3RyZWFtU291cmNlQ2FwYWJpbGl0eVJhbmdlJiByYW5n
ZUluZm8pCit7CisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBDYXBhYmlsaXR5UmFuZ2UocmFuZ2VJ
bmZvKSk7Cit9CisKK0NhcGFiaWxpdHlSYW5nZTo6Q2FwYWJpbGl0eVJhbmdlKGNvbnN0IE1lZGlh
U3RyZWFtU291cmNlQ2FwYWJpbGl0eVJhbmdlJiByYW5nZUluZm8pCisgICAgOiBtX3JhbmdlSW5m
byhyYW5nZUluZm8pCit7Cit9CisKK3N0YXRpYyBTY3JpcHRWYWx1ZSBzY3JpcHRWYWx1ZShFeGVj
U3RhdGUqIGV4ZWMsIGNvbnN0IE1lZGlhU3RyZWFtU291cmNlQ2FwYWJpbGl0eVJhbmdlOjpWYWx1
ZVVuaW9uJiB2YWx1ZSwgTWVkaWFTdHJlYW1Tb3VyY2VDYXBhYmlsaXR5UmFuZ2U6OlR5cGUgdHlw
ZSkKK3sKKyAgICAvLyBOT1RFOiB0aGUgc3BlYyBzYXlzOgorICAgIC8vICAgICAgLi4uIGFuIGlt
cGxlbWVudGF0aW9uIHNob3VsZCBtYWtlIGEgcmVhc29uYWJsZSBhdHRlbXB0IHRvIHRyYW5zbGF0
ZSBhbmQgc2NhbGUgdGhlIGhhcmR3YXJlJ3Mgc2V0dGluZworICAgIC8vICAgICAgb250byB0aGUg
bWFwcGluZyBwcm92aWRlZCBieSB0aGlzIHNwZWNpZmljYXRpb24uIElmIHRoaXMgaXMgbm90IHBv
c3NpYmxlIGR1ZSB0byB0aGUgdXNlciBhZ2VudCdzCisgICAgLy8gICAgICBpbmFiaWxpdHkgdG8g
cmV0cmlldmUgYSBnaXZlbiBjYXBhYmlsaXR5IGZyb20gYSBzb3VyY2UsIHRoZW4gZm9yIENhcGFi
aWxpdHlSYW5nZS10eXBlZCBjYXBhYmlsaXRpZXMsCisgICAgLy8gICAgICB0aGUgbWluIGFuZCBt
YXggZmllbGRzIHdpbGwgbm90IGJlIHByZXNlbnQgb24gdGhlIHJldHVybmVkIGRpY3Rpb25hcnks
IGFuZCB0aGUgc3VwcG9ydGVkIGZpZWxkIHdpbGwgYmUgZmFsc2UuCisgICAgLy8gV2UgZG9uJ3Qg
ZG8gdGhpcyBjdXJyZW50bHkgYmVjYXVzZSBJIGRvbid0IGtub3cgb2YgYW4gaW5zdGFuY2Ugd2hl
cmUgaXQgaXNuJ3QgcG9zc2libGUgdG8gcmV0cmlldmUgYSBzb3VyY2UKKyAgICAvLyBjYXBhYmls
aXR5LCBidXQgd2hlbiB3ZSBoYXZlIHRvIGRlYWwgd2l0aCB0aGlzIHdlIHdpbGwgbmVlZCB0byBt
YXJrIENhcGFiaWxpdHlSYW5nZS5taW4gYW5kIENhcGFiaWxpdHlSYW5nZS5tYXggYXMKKyAgICAv
LyAiQ3VzdG9tIiBhbmQgcmV0dXJuIGpzVW5kZWZpbmVkKCkgZnJvbSB0aGUgY3VzdG9tIGdldHRl
ciB0byBzdXBwb3J0IGl0LgorICAgIAorICAgIHN3aXRjaCAodHlwZSkgeworICAgIGNhc2UgTWVk
aWFTdHJlYW1Tb3VyY2VDYXBhYmlsaXR5UmFuZ2U6OkZsb2F0OgorICAgICAgICByZXR1cm4gU2Ny
aXB0VmFsdWUoZXhlYy0+dm0oKSwgSlNWYWx1ZSh2YWx1ZS5hc0Zsb2F0KSk7CisgICAgICAgIGJy
ZWFrOworICAgIGNhc2UgTWVkaWFTdHJlYW1Tb3VyY2VDYXBhYmlsaXR5UmFuZ2U6OlVMb25nOgor
ICAgICAgICByZXR1cm4gU2NyaXB0VmFsdWUoZXhlYy0+dm0oKSwgSlNWYWx1ZSh2YWx1ZS5hc1VM
b25nKSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgTWVkaWFTdHJlYW1Tb3VyY2VDYXBhYmls
aXR5UmFuZ2U6OlVuZGVmaW5lZDoKKyAgICAgICAgcmV0dXJuIFNjcmlwdFZhbHVlKGV4ZWMtPnZt
KCksIGpzVW5kZWZpbmVkKCkpOworICAgICAgICBicmVhazsKKyAgICB9CisKKyAgICBBU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4gU2NyaXB0VmFsdWUoZXhlYy0+dm0oKSwganNVbmRl
ZmluZWQoKSk7Cit9CisKK1NjcmlwdFZhbHVlIENhcGFiaWxpdHlSYW5nZTo6bWluKEV4ZWNTdGF0
ZSogZXhlYykgY29uc3QKK3sKKyAgICByZXR1cm4gc2NyaXB0VmFsdWUoZXhlYywgbV9yYW5nZUlu
Zm8ubWluKCksIG1fcmFuZ2VJbmZvLnR5cGUoKSk7Cit9CisKK1NjcmlwdFZhbHVlIENhcGFiaWxp
dHlSYW5nZTo6bWF4KEV4ZWNTdGF0ZSogZXhlYykgY29uc3QKK3sKKyAgICByZXR1cm4gc2NyaXB0
VmFsdWUoZXhlYywgbV9yYW5nZUluZm8ubWF4KCksIG1fcmFuZ2VJbmZvLnR5cGUoKSk7Cit9CisK
K30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL21lZGlhc3RyZWFtL0NhcGFiaWxpdHlSYW5nZS5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vQ2FwYWJpbGl0eVJhbmdlLmgJKHJldmlzaW9u
IDApCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL0NhcGFiaWxpdHlSYW5n
ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNjAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUsIElOQy4gYGBBUyBJUycnIEFORCBBTlkK
KyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
CisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqCisgKi8KKworI2lmbmRlZiBDYXBhYmls
aXR5UmFuZ2VfaAorI2RlZmluZSBDYXBhYmlsaXR5UmFuZ2VfaAorCisjaWYgRU5BQkxFKE1FRElB
X1NUUkVBTSkKKworI2luY2x1ZGUgIk1lZGlhU3RyZWFtU291cmNlQ2FwYWJpbGl0aWVzLmgiCisj
aW5jbHVkZSAiU2NyaXB0VmFsdWUuaCIKKyNpbmNsdWRlICJTY3JpcHRXcmFwcGFibGUuaCIKKyNp
bmNsdWRlIDxpbnRlcnByZXRlci9DYWxsRnJhbWUuaD4KKyNpbmNsdWRlIDx3dGYvUmVmQ291bnRl
ZC5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIENhcGFiaWxpdHlSYW5nZSA6IHB1
YmxpYyBSZWZDb3VudGVkPENhcGFiaWxpdHlSYW5nZT4sIHB1YmxpYyBTY3JpcHRXcmFwcGFibGUg
eworcHVibGljOgorICAgIHZpcnR1YWwgfkNhcGFiaWxpdHlSYW5nZSgpIHsgfQorCisgICAgc3Rh
dGljIFBhc3NSZWZQdHI8Q2FwYWJpbGl0eVJhbmdlPiBjcmVhdGUoY29uc3QgTWVkaWFTdHJlYW1T
b3VyY2VDYXBhYmlsaXR5UmFuZ2UmKTsKKworICAgIFNjcmlwdFZhbHVlIG1pbihKU0M6OkV4ZWNT
dGF0ZSopIGNvbnN0OworICAgIFNjcmlwdFZhbHVlIG1heChKU0M6OkV4ZWNTdGF0ZSopIGNvbnN0
OworICAgIGJvb2wgc3VwcG9ydGVkKCkgY29uc3QgeyByZXR1cm4gbV9yYW5nZUluZm8uc3VwcG9y
dGVkKCk7IH0KKworcHJpdmF0ZToKKyAgICBDYXBhYmlsaXR5UmFuZ2UoY29uc3QgTWVkaWFTdHJl
YW1Tb3VyY2VDYXBhYmlsaXR5UmFuZ2UmKTsKKyAgICAKKyAgICBNZWRpYVN0cmVhbVNvdXJjZUNh
cGFiaWxpdHlSYW5nZSBtX3JhbmdlSW5mbzsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
KworI2VuZGlmIC8vIENhcGFiaWxpdHlSYW5nZV9oCisKKyNlbmRpZgpJbmRleDogU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9DYXBhYmlsaXR5UmFuZ2UuaWRsCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vQ2FwYWJpbGl0eVJhbmdlLmlk
bAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vQ2Fw
YWJpbGl0eVJhbmdlLmlkbAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDMzIEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJ
TkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElO
Qy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8K
KworWworICAgIE5vSW50ZXJmYWNlT2JqZWN0LAorICAgIENvbmRpdGlvbmFsPU1FRElBX1NUUkVB
TSwKK10gaW50ZXJmYWNlIENhcGFiaWxpdHlSYW5nZSB7CisgICAgW0NhbGxXaXRoPVNjcmlwdFN0
YXRlXSByZWFkb25seSBhdHRyaWJ1dGUgYW55IG1heDsKKyAgICBbQ2FsbFdpdGg9U2NyaXB0U3Rh
dGVdIHJlYWRvbmx5IGF0dHJpYnV0ZSBhbnkgbWluOworICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBi
b29sZWFuIHN1cHBvcnRlZDsKK307CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlh
c3RyZWFtL01lZGlhQ29uc3RyYWludHNJbXBsLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYUNvbnN0cmFpbnRzSW1wbC5oCShyZXZpc2lvbiAx
NTcwMTYpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhQ29uc3Ry
YWludHNJbXBsLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ1LDcgKzQ1LDkgQEAgY2xhc3MgTWVkaWFD
b25zdHJhaW50c0ltcGwgOiBwdWJsaWMgTWVkaQogcHVibGljOgogICAgIHN0YXRpYyBQYXNzUmVm
UHRyPE1lZGlhQ29uc3RyYWludHNJbXBsPiBjcmVhdGUoKTsKICAgICBzdGF0aWMgUGFzc1JlZlB0
cjxNZWRpYUNvbnN0cmFpbnRzSW1wbD4gY3JlYXRlKGNvbnN0IERpY3Rpb25hcnkmLCBFeGNlcHRp
b25Db2RlJik7CisKICAgICB2aXJ0dWFsIH5NZWRpYUNvbnN0cmFpbnRzSW1wbCgpOworICAgIGJv
b2wgaW5pdGlhbGl6ZShjb25zdCBEaWN0aW9uYXJ5Jik7CiAKICAgICB2aXJ0dWFsIHZvaWQgZ2V0
TWFuZGF0b3J5Q29uc3RyYWludHMoVmVjdG9yPE1lZGlhQ29uc3RyYWludD4mKSBjb25zdCBPVkVS
UklERTsKICAgICB2aXJ0dWFsIHZvaWQgZ2V0T3B0aW9uYWxDb25zdHJhaW50cyhWZWN0b3I8TWVk
aWFDb25zdHJhaW50PiYpIGNvbnN0IE9WRVJSSURFOwpAQCAtNTUsNyArNTcsNiBAQCBwdWJsaWM6
CiAKIHByaXZhdGU6CiAgICAgTWVkaWFDb25zdHJhaW50c0ltcGwoKSB7IH0KLSAgICBib29sIGlu
aXRpYWxpemUoY29uc3QgRGljdGlvbmFyeSYpOwogCiAgICAgSGFzaE1hcDxTdHJpbmcsIFN0cmlu
Zz4gbV9tYW5kYXRvcnlDb25zdHJhaW50czsKICAgICBWZWN0b3I8TWVkaWFDb25zdHJhaW50PiBt
X29wdGlvbmFsQ29uc3RyYWludHM7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlh
c3RyZWFtL01lZGlhU291cmNlU3RhdGVzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU291cmNlU3RhdGVzLmNwcAkocmV2aXNpb24gMCkK
KysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTb3VyY2VTdGF0ZXMu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTAwIEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMn
JyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisg
KiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAi
Y29uZmlnLmgiCisKKyNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQorCisjaW5jbHVkZSAiTWVkaWFT
b3VyY2VTdGF0ZXMuaCIKKworI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgorCituYW1l
c3BhY2UgV2ViQ29yZSB7CisKK1Bhc3NSZWZQdHI8TWVkaWFTb3VyY2VTdGF0ZXM+IE1lZGlhU291
cmNlU3RhdGVzOjpjcmVhdGUoY29uc3QgTWVkaWFTdHJlYW1Tb3VyY2VTdGF0ZXMmIHN0YXRlcykK
K3sKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3IE1lZGlhU291cmNlU3RhdGVzKHN0YXRlcykpOwor
fQorCitNZWRpYVNvdXJjZVN0YXRlczo6TWVkaWFTb3VyY2VTdGF0ZXMoY29uc3QgTWVkaWFTdHJl
YW1Tb3VyY2VTdGF0ZXMmIHN0YXRlcykKKyAgICA6IG1fU291cmNlU3RhdGVzKHN0YXRlcykKK3sK
K30KKworY29uc3QgQXRvbWljU3RyaW5nJiBNZWRpYVNvdXJjZVN0YXRlczo6ZmFjaW5nTW9kZShN
ZWRpYVN0cmVhbVNvdXJjZVN0YXRlczo6VmlkZW9GYWNpbmdNb2RlIG1vZGUpCit7CisgICAgc3Rh
dGljIE5ldmVyRGVzdHJveWVkPEF0b21pY1N0cmluZz4gdXNlckZhY2luZygidXNlciIsIEF0b21p
Y1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3ll
ZDxBdG9taWNTdHJpbmc+IGVudmlyb25tZW50RmFjaW5nKCJlbnZpcm9ubWVudCIsIEF0b21pY1N0
cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxB
dG9taWNTdHJpbmc+IGxlZnRGYWNpbmcoImxlZnQiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZy
b21MaXRlcmFsKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8QXRvbWljU3RyaW5nPiByaWdo
dEZhY2luZygicmlnaHQiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKKyAg
ICAKKyAgICBzd2l0Y2ggKG1vZGUpIHsKKyAgICBjYXNlIE1lZGlhU3RyZWFtU291cmNlU3RhdGVz
OjpVc2VyOgorICAgICAgICByZXR1cm4gdXNlckZhY2luZzsKKyAgICBjYXNlIE1lZGlhU3RyZWFt
U291cmNlU3RhdGVzOjpFbnZpcm9ubWVudDoKKyAgICAgICAgcmV0dXJuIGVudmlyb25tZW50RmFj
aW5nOworICAgIGNhc2UgTWVkaWFTdHJlYW1Tb3VyY2VTdGF0ZXM6OkxlZnQ6CisgICAgICAgIHJl
dHVybiBsZWZ0RmFjaW5nOworICAgIGNhc2UgTWVkaWFTdHJlYW1Tb3VyY2VTdGF0ZXM6OlJpZ2h0
OgorICAgICAgICByZXR1cm4gcmlnaHRGYWNpbmc7CisgICAgfQorCisgICAgQVNTRVJUX05PVF9S
RUFDSEVEKCk7CisgICAgcmV0dXJuIGVtcHR5QXRvbTsKK30KKworY29uc3QgQXRvbWljU3RyaW5n
JiBNZWRpYVNvdXJjZVN0YXRlczo6c291cmNlVHlwZShNZWRpYVN0cmVhbVNvdXJjZVN0YXRlczo6
U291cmNlVHlwZSBzb3VyY2VUeXBlKQoreworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxBdG9t
aWNTdHJpbmc+IG5vbmUoIm5vbmUiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFs
KTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8QXRvbWljU3RyaW5nPiBjYW1lcmEoImNhbWVy
YSIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOworICAgIHN0YXRpYyBOZXZl
ckRlc3Ryb3llZDxBdG9taWNTdHJpbmc+IG1pY3JvcGhvbmUoIm1pY3JvcGhvbmUiLCBBdG9taWNT
dHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKKworICAgIHN3aXRjaCAoc291cmNlVHlwZSkg
eworICAgIGNhc2UgTWVkaWFTdHJlYW1Tb3VyY2VTdGF0ZXM6Ok5vbmU6CisgICAgICAgIHJldHVy
biBub25lOworICAgIGNhc2UgTWVkaWFTdHJlYW1Tb3VyY2VTdGF0ZXM6OkNhbWVyYToKKyAgICAg
ICAgcmV0dXJuIGNhbWVyYTsKKyAgICBjYXNlIE1lZGlhU3RyZWFtU291cmNlU3RhdGVzOjpNaWNy
b3Bob25lOgorICAgICAgICByZXR1cm4gbWljcm9waG9uZTsKKyAgICB9CisKKyAgICBBU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4gZW1wdHlBdG9tOworfQorCitjb25zdCBBdG9taWNT
dHJpbmcmIE1lZGlhU291cmNlU3RhdGVzOjpzb3VyY2VUeXBlKCkgY29uc3QKK3sKKyAgICByZXR1
cm4gTWVkaWFTb3VyY2VTdGF0ZXM6OnNvdXJjZVR5cGUobV9Tb3VyY2VTdGF0ZXMuc291cmNlVHlw
ZSk7Cit9CisKK2NvbnN0IEF0b21pY1N0cmluZyYgTWVkaWFTb3VyY2VTdGF0ZXM6OmZhY2luZ01v
ZGUoKSBjb25zdAoreworICAgIHJldHVybiBNZWRpYVNvdXJjZVN0YXRlczo6ZmFjaW5nTW9kZSht
X1NvdXJjZVN0YXRlcy5mYWNpbmdNb2RlKTsKK30KKworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CisKKyNlbmRpZgpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRp
YVNvdXJjZVN0YXRlcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVk
aWFzdHJlYW0vTWVkaWFTb3VyY2VTdGF0ZXMuaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9XZWJD
b3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTb3VyY2VTdGF0ZXMuaAkod29ya2luZyBjb3B5
KQpAQCAtMCwwICsxLDY2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIE1lZGlhU291cmNlU3RhdGVzX2gK
KyNkZWZpbmUgTWVkaWFTb3VyY2VTdGF0ZXNfaAorCisjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkK
KworI2luY2x1ZGUgIk1lZGlhU3RyZWFtU291cmNlQ2FwYWJpbGl0aWVzLmgiCisjaW5jbHVkZSAi
U2NyaXB0V3JhcHBhYmxlLmgiCisjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KKyNpbmNsdWRlIDx3
dGYvUmVmQ291bnRlZC5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIE1lZGlhU291
cmNlU3RhdGVzIDogcHVibGljIFJlZkNvdW50ZWQ8TWVkaWFTb3VyY2VTdGF0ZXM+LCBwdWJsaWMg
U2NyaXB0V3JhcHBhYmxlIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxNZWRpYVNv
dXJjZVN0YXRlcz4gY3JlYXRlKGNvbnN0IE1lZGlhU3RyZWFtU291cmNlU3RhdGVzJik7CisKKyAg
ICBzdGF0aWMgY29uc3QgQXRvbWljU3RyaW5nJiBzb3VyY2VUeXBlKE1lZGlhU3RyZWFtU291cmNl
U3RhdGVzOjpTb3VyY2VUeXBlKTsKKyAgICBzdGF0aWMgY29uc3QgQXRvbWljU3RyaW5nJiBmYWNp
bmdNb2RlKE1lZGlhU3RyZWFtU291cmNlU3RhdGVzOjpWaWRlb0ZhY2luZ01vZGUpOworICAgIAor
ICAgIGNvbnN0IEF0b21pY1N0cmluZyYgc291cmNlVHlwZSgpIGNvbnN0OworICAgIGNvbnN0IEF0
b21pY1N0cmluZyYgc291cmNlSWQoKSBjb25zdCB7IHJldHVybiBtX1NvdXJjZVN0YXRlcy5zb3Vy
Y2VJZDsgfQorICAgIHVuc2lnbmVkIGxvbmcgd2lkdGgoKSBjb25zdCB7IHJldHVybiBtX1NvdXJj
ZVN0YXRlcy53aWR0aDsgfQorICAgIHVuc2lnbmVkIGxvbmcgaGVpZ2h0KCkgY29uc3QgeyByZXR1
cm4gbV9Tb3VyY2VTdGF0ZXMuaGVpZ2h0OyB9CisgICAgZmxvYXQgZnJhbWVSYXRlKCkgY29uc3Qg
eyByZXR1cm4gbV9Tb3VyY2VTdGF0ZXMuZnJhbWVSYXRlOyB9CisgICAgZmxvYXQgYXNwZWN0UmF0
aW8oKSBjb25zdCB7IHJldHVybiBtX1NvdXJjZVN0YXRlcy5hc3BlY3RSYXRpbzsgfQorICAgIGNv
bnN0IEF0b21pY1N0cmluZyYgZmFjaW5nTW9kZSgpIGNvbnN0OworICAgIHVuc2lnbmVkIGxvbmcg
dm9sdW1lKCkgY29uc3QgeyByZXR1cm4gbV9Tb3VyY2VTdGF0ZXMudm9sdW1lOyB9CisgICAgCisg
ICAgYm9vbCBoYXNWaWRlb1NvdXJjZSgpIGNvbnN0IHsgcmV0dXJuIG1fU291cmNlU3RhdGVzLnNv
dXJjZVR5cGUgPT0gTWVkaWFTdHJlYW1Tb3VyY2VTdGF0ZXM6OkNhbWVyYTsgfQorCitwcml2YXRl
OgorICAgIGV4cGxpY2l0IE1lZGlhU291cmNlU3RhdGVzKGNvbnN0IE1lZGlhU3RyZWFtU291cmNl
U3RhdGVzJik7CisKKyAgICBNZWRpYVN0cmVhbVNvdXJjZVN0YXRlcyBtX1NvdXJjZVN0YXRlczsK
K307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIE1lZGlhU291cmNlU3Rh
dGVzX2gKKworI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFt
L01lZGlhU291cmNlU3RhdGVzLmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL21lZGlhc3RyZWFtL01lZGlhU291cmNlU3RhdGVzLmlkbAkocmV2aXNpb24gMCkKKysrIFNv
dXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTb3VyY2VTdGF0ZXMuaWRsCSh3
b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNDQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBB
TlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
ICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAor
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCitlbnVtIFNvdXJjZVR5cGVF
bnVtIHsgIm5vbmUiLCAiY2FtZXJhIiwgIm1pY3JvcGhvbmUiIH07CitlbnVtIFZpZGVvRmFjaW5n
TW9kZUVudW0geyAidXNlciIsICJlbnZpcm9ubWVudCIsICJsZWZ0IiwgInJpZ2h0IiB9OworCitb
CisgICAgQ29uZGl0aW9uYWw9TUVESUFfU1RSRUFNLAorICAgIEltcGxlbWVudGF0aW9uTGFja3NW
VGFibGUsCisgICAgTm9JbnRlcmZhY2VPYmplY3QsCitdIGludGVyZmFjZSBNZWRpYVNvdXJjZVN0
YXRlcyB7CisgICAgcmVhZG9ubHkgYXR0cmlidXRlIFNvdXJjZVR5cGVFbnVtIHNvdXJjZVR5cGU7
CisgICAgcmVhZG9ubHkgYXR0cmlidXRlIERPTVN0cmluZyBzb3VyY2VJZDsKKworICAgIFtDdXN0
b21HZXR0ZXJdIHJlYWRvbmx5IGF0dHJpYnV0ZSB1bnNpZ25lZCBsb25nIHdpZHRoOworICAgIFtD
dXN0b21HZXR0ZXJdIHJlYWRvbmx5IGF0dHJpYnV0ZSB1bnNpZ25lZCBsb25nIGhlaWdodDsKKyAg
ICBbQ3VzdG9tR2V0dGVyXSByZWFkb25seSBhdHRyaWJ1dGUgZmxvYXQgZnJhbWVSYXRlOworICAg
IFtDdXN0b21HZXR0ZXJdIHJlYWRvbmx5IGF0dHJpYnV0ZSBmbG9hdCBhc3BlY3RSYXRpbzsKKyAg
ICBbQ3VzdG9tR2V0dGVyXSByZWFkb25seSBhdHRyaWJ1dGUgVmlkZW9GYWNpbmdNb2RlRW51bSBm
YWNpbmdNb2RlOworICAgIFtDdXN0b21HZXR0ZXJdIHJlYWRvbmx5IGF0dHJpYnV0ZSB1bnNpZ25l
ZCBsb25nIHZvbHVtZTsKK307CisKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFz
dHJlYW0vTWVkaWFTdHJlYW0uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW0uY3BwCShyZXZpc2lvbiAxNTcwMTYpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtNTYsMjIgKzU2LDEzIEBAIHN0YXRpYyB2b2lkIHByb2Nlc3NUcmFjayhNZWRpYVN0
cmVhbVRyYWMKICAgICAgICAgcmV0dXJuOwogCiAgICAgTWVkaWFTdHJlYW1Tb3VyY2UqIHNvdXJj
ZSA9IHRyYWNrLT5zb3VyY2UoKTsKLSAgICBpZiAoIWNvbnRhaW5zU291cmNlKHNvdXJjZVZlY3Rv
ciwgc291cmNlKSkgewotICAgICAgICBpZiAoc291cmNlLT5zdHJlYW0oKSkgewotICAgICAgICAg
ICAgLy8gRklYTUU6IHRoaXMgc2hvdWxkIG5vdCBiZSBuZWNlc3NhcnkgYmVjYXVzZSB0cmFja3Mg
YW5kIHN0cmVhbXMgbXVzdCBiZSBhYmxlIHRvIHNoYXJlIHNvdXJjZXMsIGJ1dCBvdXIgY29kZQot
ICAgICAgICAgICAgLy8gY3VycmVubHR5IGFzc3VtZXMgZWFjaCBzb3VyY2UgaXMgYXR0YWNoZWQg
dG8ganVzdCBvbmUgdHJhY2suCi0gICAgICAgICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTIxOTU0Ci0gICAgICAgICAgICBzb3VyY2VWZWN0b3IuYXBwZW5k
KE1lZGlhU3RyZWFtU291cmNlOjpjcmVhdGUoc291cmNlLT5pZCgpLCBzb3VyY2UtPnR5cGUoKSwg
c291cmNlLT5uYW1lKCksIHNvdXJjZS0+cmVhZHlTdGF0ZSgpLCBzb3VyY2UtPnJlcXVpcmVzQXVk
aW9Db25zdW1lcigpKS5nZXQoKSk7Ci0gICAgICAgIH0gZWxzZQotICAgICAgICAgICAgc291cmNl
VmVjdG9yLmFwcGVuZChzb3VyY2UpOwotICAgIH0KKyAgICBpZiAoIWNvbnRhaW5zU291cmNlKHNv
dXJjZVZlY3Rvciwgc291cmNlKSkKKyAgICAgICAgc291cmNlVmVjdG9yLmFwcGVuZChzb3VyY2Up
OwogfQogCiBzdGF0aWMgUGFzc1JlZlB0cjxNZWRpYVN0cmVhbT4gY3JlYXRlRnJvbVNvdXJjZVZl
Y3RvcnMoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgY29uc3QgTWVkaWFTdHJlYW1T
b3VyY2VWZWN0b3ImIGF1ZGlvU291cmNlcywgY29uc3QgTWVkaWFTdHJlYW1Tb3VyY2VWZWN0b3Im
IHZpZGVvU291cmNlcykKIHsKICAgICBSZWZQdHI8TWVkaWFTdHJlYW1EZXNjcmlwdG9yPiBkZXNj
cmlwdG9yID0gTWVkaWFTdHJlYW1EZXNjcmlwdG9yOjpjcmVhdGUoYXVkaW9Tb3VyY2VzLCB2aWRl
b1NvdXJjZXMpOwotICAgIE1lZGlhU3RyZWFtQ2VudGVyOjpzaGFyZWQoKS5kaWRDcmVhdGVNZWRp
YVN0cmVhbShkZXNjcmlwdG9yLmdldCgpKTsKLQogICAgIHJldHVybiBNZWRpYVN0cmVhbTo6Y3Jl
YXRlKGNvbnRleHQsIGRlc2NyaXB0b3IucmVsZWFzZSgpKTsKIH0KIApAQCAtMTIxLDYgKzExMiw3
IEBAIE1lZGlhU3RyZWFtOjpNZWRpYVN0cmVhbShTY3JpcHRFeGVjdXRpb24KICAgICAsIG1fZGVz
Y3JpcHRvcihzdHJlYW1EZXNjcmlwdG9yKQogICAgICwgbV9zY2hlZHVsZWRFdmVudFRpbWVyKHRo
aXMsICZNZWRpYVN0cmVhbTo6c2NoZWR1bGVkRXZlbnRUaW1lckZpcmVkKQogeworICAgIEFTU0VS
VChtX2Rlc2NyaXB0b3IpOwogICAgIG1fZGVzY3JpcHRvci0+c2V0Q2xpZW50KHRoaXMpOwogCiAg
ICAgc2l6ZV90IG51bWJlck9mQXVkaW9UcmFja3MgPSBtX2Rlc2NyaXB0b3ItPm51bWJlck9mQXVk
aW9TdHJlYW1zKCk7CkBAIC0xNTYsNyArMTQ4LDYgQEAgdm9pZCBNZWRpYVN0cmVhbTo6c3RvcCgp
CiAgICAgaWYgKGVuZGVkKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIE1lZGlhU3RyZWFtQ2Vu
dGVyOjpzaGFyZWQoKS5kaWRTdG9wTG9jYWxNZWRpYVN0cmVhbShkZXNjcmlwdG9yKCkpOwogICAg
IHNldEVuZGVkKCk7CiB9CiAKQEAgLTE4NCw4ICsxNzUsNiBAQCB2b2lkIE1lZGlhU3RyZWFtOjph
ZGRUcmFjayhQYXNzUmVmUHRyPE1lCiAgICAgICAgIG1fdmlkZW9UcmFja3MuYXBwZW5kKHRyYWNr
KTsKICAgICAgICAgYnJlYWs7CiAgICAgfQotCi0gICAgTWVkaWFTdHJlYW1DZW50ZXI6OnNoYXJl
ZCgpLmRpZEFkZE1lZGlhU3RyZWFtVHJhY2sodHJhY2stPnNvdXJjZSgpKTsKIH0KIAogdm9pZCBN
ZWRpYVN0cmVhbTo6cmVtb3ZlVHJhY2soUGFzc1JlZlB0cjxNZWRpYVN0cmVhbVRyYWNrPiBwcnBU
cmFjaywgRXhjZXB0aW9uQ29kZSYgZWMpCkBAIC0yMjMsOCArMjEyLDYgQEAgdm9pZCBNZWRpYVN0
cmVhbTo6cmVtb3ZlVHJhY2soUGFzc1JlZlB0cgogCiAgICAgaWYgKCFtX2F1ZGlvVHJhY2tzLnNp
emUoKSAmJiAhbV92aWRlb1RyYWNrcy5zaXplKCkpCiAgICAgICAgIHNldEVuZGVkKCk7Ci0KLSAg
ICBNZWRpYVN0cmVhbUNlbnRlcjo6c2hhcmVkKCkuZGlkUmVtb3ZlTWVkaWFTdHJlYW1UcmFjayh0
cmFjay0+c291cmNlKCkpOwogfQogCiBNZWRpYVN0cmVhbVRyYWNrKiBNZWRpYVN0cmVhbTo6Z2V0
VHJhY2tCeUlkKFN0cmluZyBpZCkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFz
dHJlYW0vTWVkaWFTdHJlYW0uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L21lZGlhc3RyZWFtL01lZGlhU3RyZWFtLmgJKHJldmlzaW9uIDE1NzAxNikKKysrIFNvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW0uaAkod29ya2luZyBjb3B5KQpA
QCAtODUsMjAgKzg1LDE4IEBAIHByb3RlY3RlZDoKICAgICBNZWRpYVN0cmVhbShTY3JpcHRFeGVj
dXRpb25Db250ZXh0KiwgUGFzc1JlZlB0cjxNZWRpYVN0cmVhbURlc2NyaXB0b3I+KTsKIAogICAg
IC8vIENvbnRleHREZXN0cnVjdGlvbk9ic2VydmVyCi0gICAgdmlydHVhbCB2b2lkIGNvbnRleHRE
ZXN0cm95ZWQoKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgY29udGV4dERlc3Ryb3llZCgp
IE9WRVJSSURFIEZJTkFMOwogCiBwcml2YXRlOgotICAgIC8vIE1lZGlhU3RyZWFtRGVzY3JpcHRv
ckNsaWVudAotICAgIHZpcnR1YWwgdm9pZCB0cmFja0RpZEVuZCgpIE9WRVJSSURFOwotICAgIHZp
cnR1YWwgdm9pZCBzdHJlYW1EaWRFbmQoKSBPVkVSUklERTsKLSAgICAKICAgICAvLyBFdmVudFRh
cmdldAotICAgIHZpcnR1YWwgdm9pZCByZWZFdmVudFRhcmdldCgpIE9WRVJSSURFIHsgcmVmKCk7
IH0KLSAgICB2aXJ0dWFsIHZvaWQgZGVyZWZFdmVudFRhcmdldCgpIE9WRVJSSURFIHsgZGVyZWYo
KTsgfQorICAgIHZpcnR1YWwgdm9pZCByZWZFdmVudFRhcmdldCgpIE9WRVJSSURFIEZJTkFMIHsg
cmVmKCk7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZGVyZWZFdmVudFRhcmdldCgpIE9WRVJSSURFIEZJ
TkFMIHsgZGVyZWYoKTsgfQogCiAgICAgLy8gTWVkaWFTdHJlYW1EZXNjcmlwdG9yQ2xpZW50Ci0g
ICAgdmlydHVhbCB2b2lkIGFkZFJlbW90ZVNvdXJjZShNZWRpYVN0cmVhbVNvdXJjZSopIE9WRVJS
SURFOwotICAgIHZpcnR1YWwgdm9pZCByZW1vdmVSZW1vdGVTb3VyY2UoTWVkaWFTdHJlYW1Tb3Vy
Y2UqKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgdHJhY2tEaWRFbmQoKSBPVkVSUklERSBG
SU5BTDsKKyAgICB2aXJ0dWFsIHZvaWQgc3RyZWFtRGlkRW5kKCkgT1ZFUlJJREUgRklOQUw7Cisg
ICAgdmlydHVhbCB2b2lkIGFkZFJlbW90ZVNvdXJjZShNZWRpYVN0cmVhbVNvdXJjZSopIE9WRVJS
SURFIEZJTkFMOworICAgIHZpcnR1YWwgdm9pZCByZW1vdmVSZW1vdGVTb3VyY2UoTWVkaWFTdHJl
YW1Tb3VyY2UqKSBPVkVSUklERSBGSU5BTDsKIAogICAgIHZvaWQgc2NoZWR1bGVEaXNwYXRjaEV2
ZW50KFBhc3NSZWZQdHI8RXZlbnQ+KTsKICAgICB2b2lkIHNjaGVkdWxlZEV2ZW50VGltZXJGaXJl
ZChUaW1lcjxNZWRpYVN0cmVhbT4qKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVk
aWFzdHJlYW0vTWVkaWFTdHJlYW1DYXBhYmlsaXRpZXMuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1DYXBhYmlsaXRpZXMuY3Bw
CShyZXZpc2lvbiAwKQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRp
YVN0cmVhbUNhcGFiaWxpdGllcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxNDIgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09N
UFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01Q
VVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2lmIEVOQUJMRShNRURJQV9TVFJFQU0p
CisKKyNpbmNsdWRlICJNZWRpYVN0cmVhbUNhcGFiaWxpdGllcy5oIgorCisjaW5jbHVkZSAiQWxs
QXVkaW9DYXBhYmlsaXRpZXMuaCIKKyNpbmNsdWRlICJBbGxWaWRlb0NhcGFiaWxpdGllcy5oIgor
I2luY2x1ZGUgIkNhcGFiaWxpdHlSYW5nZS5oIgorI2luY2x1ZGUgIk1lZGlhU291cmNlU3RhdGVz
LmgiCisjaW5jbHVkZSAiTWVkaWFTdHJlYW1Tb3VyY2VDYXBhYmlsaXRpZXMuaCIKKworbmFtZXNw
YWNlIFdlYkNvcmUgeworCitQYXNzUmVmUHRyPE1lZGlhU3RyZWFtQ2FwYWJpbGl0aWVzPiBNZWRp
YVN0cmVhbUNhcGFiaWxpdGllczo6Y3JlYXRlKFBhc3NSZWZQdHI8TWVkaWFTdHJlYW1Tb3VyY2VD
YXBhYmlsaXRpZXM+IGNhcGFiaWxpdGllcykKK3sKKyAgICBpZiAoY2FwYWJpbGl0aWVzLT5oYXNW
aWRlb1NvdXJjZSgpKQorICAgICAgICByZXR1cm4gQWxsVmlkZW9DYXBhYmlsaXRpZXM6OmNyZWF0
ZShjYXBhYmlsaXRpZXMpOworICAgIAorICAgIHJldHVybiBBbGxBdWRpb0NhcGFiaWxpdGllczo6
Y3JlYXRlKGNhcGFiaWxpdGllcyk7Cit9CisKK01lZGlhU3RyZWFtQ2FwYWJpbGl0aWVzOjpNZWRp
YVN0cmVhbUNhcGFiaWxpdGllcyhQYXNzUmVmUHRyPE1lZGlhU3RyZWFtU291cmNlQ2FwYWJpbGl0
aWVzPiBjYXBhYmlsaXRpZXMpCisgICAgOiBtX1NvdXJjZUNhcGFiaWxpdGllcyhjYXBhYmlsaXRp
ZXMpCit7Cit9CisKK1ZlY3RvcjxTdHJpbmc+IE1lZGlhU3RyZWFtQ2FwYWJpbGl0aWVzOjpzb3Vy
Y2VUeXBlKCkgY29uc3QKK3sKKyAgICBBU1NFUlQobV9Tb3VyY2VDYXBhYmlsaXRpZXMtPmhhc1Zp
ZGVvU291cmNlKCkpOworICAgIAorICAgIHNpemVfdCBjb3VudCA9IG1fU291cmNlQ2FwYWJpbGl0
aWVzLT5zb3VyY2VUeXBlcygpLnNpemUoKTsKKyAgICBpZiAoIWNvdW50KQorICAgICAgICByZXR1
cm4gVmVjdG9yPFN0cmluZz4oKTsKKyAgICAKKyAgICBjb25zdCBWZWN0b3I8TWVkaWFTdHJlYW1T
b3VyY2VTdGF0ZXM6OlNvdXJjZVR5cGU+JiBzb3VyY2VUeXBlcyA9IG1fU291cmNlQ2FwYWJpbGl0
aWVzLT5zb3VyY2VUeXBlcygpOworICAgIFZlY3RvcjxTdHJpbmc+IGNhcGFiaWxpdGllczsKKyAg
ICBjYXBhYmlsaXRpZXMucmVzZXJ2ZUNhcGFjaXR5KGNvdW50KTsKKyAgICAKKyAgICBmb3IgKHNp
emVfdCBpID0gMDsgaSA8IGNvdW50OyArK2kpCisgICAgICAgIGNhcGFiaWxpdGllcy5hcHBlbmQo
TWVkaWFTb3VyY2VTdGF0ZXM6OnNvdXJjZVR5cGUoc291cmNlVHlwZXNbaV0pKTsKKyAgICAKKyAg
ICByZXR1cm4gY2FwYWJpbGl0aWVzOworfQorCitWZWN0b3I8U3RyaW5nPiBNZWRpYVN0cmVhbUNh
cGFiaWxpdGllczo6c291cmNlSWQoKSBjb25zdAoreworICAgIHNpemVfdCBjb3VudCA9IG1fU291
cmNlQ2FwYWJpbGl0aWVzLT5zb3VyY2VJZCgpLnNpemUoKTsKKyAgICBpZiAoIWNvdW50KQorICAg
ICAgICByZXR1cm4gVmVjdG9yPFN0cmluZz4oKTsKKyAgICAKKyAgICBjb25zdCBWZWN0b3I8QXRv
bWljU3RyaW5nPiYgc291cmNlSWRzID0gbV9Tb3VyY2VDYXBhYmlsaXRpZXMtPnNvdXJjZUlkKCk7
CisgICAgVmVjdG9yPFN0cmluZz4gY2FwYWJpbGl0aWVzOworICAgIGNhcGFiaWxpdGllcy5yZXNl
cnZlQ2FwYWNpdHkoY291bnQpOworICAgIAorICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgY291
bnQ7ICsraSkKKyAgICAgICAgY2FwYWJpbGl0aWVzLmFwcGVuZChzb3VyY2VJZHNbaV0pOworICAg
IAorICAgIHJldHVybiBjYXBhYmlsaXRpZXM7Cit9CisKK1ZlY3RvcjxTdHJpbmc+IE1lZGlhU3Ry
ZWFtQ2FwYWJpbGl0aWVzOjpmYWNpbmdNb2RlKCkgY29uc3QKK3sKKyAgICBBU1NFUlQobV9Tb3Vy
Y2VDYXBhYmlsaXRpZXMtPmhhc1ZpZGVvU291cmNlKCkpOworICAgIAorICAgIHNpemVfdCBjb3Vu
dCA9IG1fU291cmNlQ2FwYWJpbGl0aWVzLT5mYWNpbmdNb2RlcygpLnNpemUoKTsKKyAgICBpZiAo
IWNvdW50KQorICAgICAgICByZXR1cm4gVmVjdG9yPFN0cmluZz4oKTsKKyAgICAKKyAgICBjb25z
dCBWZWN0b3I8TWVkaWFTdHJlYW1Tb3VyY2VTdGF0ZXM6OlZpZGVvRmFjaW5nTW9kZT4mIGZhY2lu
Z01vZGVzID0gbV9Tb3VyY2VDYXBhYmlsaXRpZXMtPmZhY2luZ01vZGVzKCk7CisgICAgVmVjdG9y
PFN0cmluZz4gY2FwYWJpbGl0aWVzOworICAgIGNhcGFiaWxpdGllcy5yZXNlcnZlQ2FwYWNpdHko
Y291bnQpOworICAgIAorICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgY291bnQ7ICsraSkKKyAg
ICAgICAgY2FwYWJpbGl0aWVzLmFwcGVuZChNZWRpYVNvdXJjZVN0YXRlczo6ZmFjaW5nTW9kZShm
YWNpbmdNb2Rlc1tpXSkpOworICAgIAorICAgIHJldHVybiBjYXBhYmlsaXRpZXM7Cit9CisKK1Jl
ZlB0cjxDYXBhYmlsaXR5UmFuZ2U+IE1lZGlhU3RyZWFtQ2FwYWJpbGl0aWVzOjp3aWR0aCgpIGNv
bnN0Cit7CisgICAgQVNTRVJUKG1fU291cmNlQ2FwYWJpbGl0aWVzLT5oYXNWaWRlb1NvdXJjZSgp
KTsKKyAgICAKKyAgICByZXR1cm4gQ2FwYWJpbGl0eVJhbmdlOjpjcmVhdGUobV9Tb3VyY2VDYXBh
YmlsaXRpZXMtPndpZHRoKCkpOworfQorCitSZWZQdHI8Q2FwYWJpbGl0eVJhbmdlPiBNZWRpYVN0
cmVhbUNhcGFiaWxpdGllczo6aGVpZ2h0KCkgY29uc3QKK3sKKyAgICBBU1NFUlQobV9Tb3VyY2VD
YXBhYmlsaXRpZXMtPmhhc1ZpZGVvU291cmNlKCkpOworICAgIAorICAgIHJldHVybiBDYXBhYmls
aXR5UmFuZ2U6OmNyZWF0ZShtX1NvdXJjZUNhcGFiaWxpdGllcy0+aGVpZ2h0KCkpOworfQorCitS
ZWZQdHI8Q2FwYWJpbGl0eVJhbmdlPiBNZWRpYVN0cmVhbUNhcGFiaWxpdGllczo6ZnJhbWVSYXRl
KCkgY29uc3QKK3sKKyAgICBBU1NFUlQobV9Tb3VyY2VDYXBhYmlsaXRpZXMtPmhhc1ZpZGVvU291
cmNlKCkpOworICAgIAorICAgIHJldHVybiBDYXBhYmlsaXR5UmFuZ2U6OmNyZWF0ZShtX1NvdXJj
ZUNhcGFiaWxpdGllcy0+ZnJhbWVSYXRlKCkpOworfQorCitSZWZQdHI8Q2FwYWJpbGl0eVJhbmdl
PiBNZWRpYVN0cmVhbUNhcGFiaWxpdGllczo6YXNwZWN0UmF0aW8oKSBjb25zdAoreworICAgIEFT
U0VSVChtX1NvdXJjZUNhcGFiaWxpdGllcy0+aGFzVmlkZW9Tb3VyY2UoKSk7CisgICAgCisgICAg
cmV0dXJuIENhcGFiaWxpdHlSYW5nZTo6Y3JlYXRlKG1fU291cmNlQ2FwYWJpbGl0aWVzLT5hc3Bl
Y3RSYXRpbygpKTsKK30KKworUmVmUHRyPENhcGFiaWxpdHlSYW5nZT4gTWVkaWFTdHJlYW1DYXBh
YmlsaXRpZXM6OnZvbHVtZSgpIGNvbnN0Cit7CisgICAgQVNTRVJUKCFtX1NvdXJjZUNhcGFiaWxp
dGllcy0+aGFzVmlkZW9Tb3VyY2UoKSk7CisgICAgCisgICAgcmV0dXJuIENhcGFiaWxpdHlSYW5n
ZTo6Y3JlYXRlKG1fU291cmNlQ2FwYWJpbGl0aWVzLT52b2x1bWUoKSk7Cit9CisKK30gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21l
ZGlhc3RyZWFtL01lZGlhU3RyZWFtQ2FwYWJpbGl0aWVzLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbUNhcGFiaWxpdGllcy5oCShy
ZXZpc2lvbiAwKQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0
cmVhbUNhcGFiaWxpdGllcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNjkgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIs
IElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwg
SU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAq
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNpZm5kZWYgTWVkaWFTdHJlYW1DYXBhYmlsaXRpZXNfaAorI2RlZmluZSBNZWRpYVN0cmVh
bUNhcGFiaWxpdGllc19oCisKKyNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQorCisjaW5jbHVkZSAi
TWVkaWFTdHJlYW1DYXBhYmlsaXRpZXMuaCIKKyNpbmNsdWRlICJNZWRpYVN0cmVhbVNvdXJjZUNh
cGFiaWxpdGllcy5oIgorI2luY2x1ZGUgIlNjcmlwdFdyYXBwYWJsZS5oIgorI2luY2x1ZGUgPHd0
Zi9SZWZDb3VudGVkLmg+CisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorI2luY2x1ZGUgPHd0Zi90
ZXh0L1dURlN0cmluZy5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIENhcGFiaWxp
dHlSYW5nZTsKK2NsYXNzIE1lZGlhU3RyZWFtU291cmNlQ2FwYWJpbGl0aWVzOworCitjbGFzcyBN
ZWRpYVN0cmVhbUNhcGFiaWxpdGllcyA6IHB1YmxpYyBSZWZDb3VudGVkPE1lZGlhU3RyZWFtQ2Fw
YWJpbGl0aWVzPiwgcHVibGljIFNjcmlwdFdyYXBwYWJsZSB7CitwdWJsaWM6CisgICAgc3RhdGlj
IFBhc3NSZWZQdHI8TWVkaWFTdHJlYW1DYXBhYmlsaXRpZXM+IGNyZWF0ZShQYXNzUmVmUHRyPE1l
ZGlhU3RyZWFtU291cmNlQ2FwYWJpbGl0aWVzPik7CisgICAgdmlydHVhbCB+TWVkaWFTdHJlYW1D
YXBhYmlsaXRpZXMoKSB7IH0KKworICAgIHZpcnR1YWwgVmVjdG9yPFN0cmluZz4gc291cmNlVHlw
ZSgpIGNvbnN0OworICAgIHZpcnR1YWwgVmVjdG9yPFN0cmluZz4gc291cmNlSWQoKSBjb25zdDsK
KyAgICB2aXJ0dWFsIFJlZlB0cjxDYXBhYmlsaXR5UmFuZ2U+IHdpZHRoKCkgY29uc3Q7CisgICAg
dmlydHVhbCBSZWZQdHI8Q2FwYWJpbGl0eVJhbmdlPiBoZWlnaHQoKSBjb25zdDsKKyAgICB2aXJ0
dWFsIFJlZlB0cjxDYXBhYmlsaXR5UmFuZ2U+IGZyYW1lUmF0ZSgpIGNvbnN0OworICAgIHZpcnR1
YWwgUmVmUHRyPENhcGFiaWxpdHlSYW5nZT4gYXNwZWN0UmF0aW8oKSBjb25zdDsKKyAgICB2aXJ0
dWFsIFZlY3RvcjxTdHJpbmc+IGZhY2luZ01vZGUoKSBjb25zdDsKKyAgICB2aXJ0dWFsIFJlZlB0
cjxDYXBhYmlsaXR5UmFuZ2U+IHZvbHVtZSgpIGNvbnN0OworICAgIAorICAgIGJvb2wgaGFzVmlk
ZW9Tb3VyY2UoKSB7IHJldHVybiBtX1NvdXJjZUNhcGFiaWxpdGllcy0+aGFzVmlkZW9Tb3VyY2Uo
KTsgfQorCitwcm90ZWN0ZWQ6CisgICAgZXhwbGljaXQgTWVkaWFTdHJlYW1DYXBhYmlsaXRpZXMo
UGFzc1JlZlB0cjxNZWRpYVN0cmVhbVNvdXJjZUNhcGFiaWxpdGllcz4pOworCisgICAgUmVmUHRy
PE1lZGlhU3RyZWFtU291cmNlQ2FwYWJpbGl0aWVzPiBtX1NvdXJjZUNhcGFiaWxpdGllczsKK307
CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIE1lZGlhU3RyZWFtQ2FwYWJp
bGl0aWVzX2gKKworI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3Ry
ZWFtL01lZGlhU3RyZWFtQ2FwYWJpbGl0aWVzLmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtQ2FwYWJpbGl0aWVzLmlkbAkocmV2
aXNpb24gMCkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJl
YW1DYXBhYmlsaXRpZXMuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMzMgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIs
IElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwg
SU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAq
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAq
LworCitbCisgICAgQ29uZGl0aW9uYWw9TUVESUFfU1RSRUFNLAorICAgIE5vSW50ZXJmYWNlT2Jq
ZWN0LAorICAgIFNraXBWVGFibGVWYWxpZGF0aW9uLAorICAgIEN1c3RvbVRvSlNPYmplY3QsCitd
IGludGVyZmFjZSBNZWRpYVN0cmVhbUNhcGFiaWxpdGllcyB7Cit9OworCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJhY2suY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1UcmFj
ay5jcHAJKHJldmlzaW9uIDE1NzAxNikKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFz
dHJlYW0vTWVkaWFTdHJlYW1UcmFjay5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI5LDMyICsyOSw2
NSBAQAogCiAjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKIAorI2luY2x1ZGUgIkFsbEF1ZGlvQ2Fw
YWJpbGl0aWVzLmgiCisjaW5jbHVkZSAiQWxsVmlkZW9DYXBhYmlsaXRpZXMuaCIKKyNpbmNsdWRl
ICJBdWRpb1N0cmVhbVRyYWNrLmgiCiAjaW5jbHVkZSAiRGljdGlvbmFyeS5oIgogI2luY2x1ZGUg
IkV2ZW50LmgiCiAjaW5jbHVkZSAiRXhjZXB0aW9uQ29kZS5oIgorI2luY2x1ZGUgIk1lZGlhQ29u
c3RyYWludHNJbXBsLmgiCisjaW5jbHVkZSAiTWVkaWFTb3VyY2VTdGF0ZXMuaCIKICNpbmNsdWRl
ICJNZWRpYVN0cmVhbS5oIgogI2luY2x1ZGUgIk1lZGlhU3RyZWFtQ2VudGVyLmgiCiAjaW5jbHVk
ZSAiTWVkaWFTdHJlYW1EZXNjcmlwdG9yLmgiCiAjaW5jbHVkZSAiTWVkaWFTdHJlYW1UcmFja1Nv
dXJjZXNDYWxsYmFjay5oIgogI2luY2x1ZGUgIk1lZGlhU3RyZWFtVHJhY2tTb3VyY2VzUmVxdWVz
dC5oIgorI2luY2x1ZGUgIk1lZGlhVHJhY2tDb25zdHJhaW50cy5oIgorI2luY2x1ZGUgIk5vdElt
cGxlbWVudGVkLmgiCiAjaW5jbHVkZSAiVVVJRC5oIgorI2luY2x1ZGUgIlZpZGVvU3RyZWFtVHJh
Y2suaCIKKyNpbmNsdWRlIDx3dGYvRnVuY3Rpb25hbC5oPgogI2luY2x1ZGUgPHd0Zi9OZXZlckRl
c3Ryb3llZC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIE1lZGlhU3RyZWFtVHJhY2s6Ok1l
ZGlhU3RyZWFtVHJhY2soU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgTWVkaWFTdHJl
YW1Tb3VyY2UqIHNvdXJjZSwgY29uc3QgRGljdGlvbmFyeSopCiAgICAgOiBBY3RpdmVET01PYmpl
Y3QoY29udGV4dCkKLSAgICAsIG1fc291cmNlKHNvdXJjZSkKKyAgICAsIG1fc291cmNlKDApCiAg
ICAgLCBtX3JlYWR5U3RhdGUoTWVkaWFTdHJlYW1Tb3VyY2U6Ok5ldykKICAgICAsIG1fc3RvcHBl
ZChmYWxzZSkKICAgICAsIG1fZW5hYmxlZCh0cnVlKQogICAgICwgbV9tdXRlZChmYWxzZSkKKyAg
ICAsIG1fZXZlbnREaXNwYXRjaFNjaGVkdWxlZChmYWxzZSkKIHsKICAgICBzdXNwZW5kSWZOZWVk
ZWQoKTsKLSAgICBpZiAobV9zb3VyY2UpIHsKLSAgICAgICAgbV9zb3VyY2UtPmFkZE9ic2VydmVy
KHRoaXMpOwotICAgICAgICBtX211dGVkID0gbV9zb3VyY2UtPm11dGVkKCk7Ci0gICAgfQorICAg
IGlmIChzb3VyY2UpCisgICAgICAgIHNldFNvdXJjZShzb3VyY2UpOworfQorCitNZWRpYVN0cmVh
bVRyYWNrOjpNZWRpYVN0cmVhbVRyYWNrKE1lZGlhU3RyZWFtVHJhY2sqIG90aGVyKQorICAgIDog
QWN0aXZlRE9NT2JqZWN0KG90aGVyLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpCit7CisgICAg
c3VzcGVuZElmTmVlZGVkKCk7CisKKyAgICAvLyBXaGVuIHRoZSBjbG9uZSgpIG1ldGhvZCBpcyBp
bnZva2VkLCB0aGUgdXNlciBhZ2VudCBtdXN0IHJ1biB0aGUgZm9sbG93aW5nIHN0ZXBzOgorICAg
IC8vIDEuIExldCB0cmFja0Nsb25lIGJlIGEgbmV3bHkgY29uc3RydWN0ZWQgTWVkaWFTdHJlYW1U
cmFjayBvYmplY3QuCisgICAgLy8gMi4gSW5pdGlhbGl6ZSB0cmFja0Nsb25lJ3MgaWQgYXR0cmli
dXRlIHRvIGEgbmV3bHkgZ2VuZXJhdGVkIHZhbHVlLgorICAgIG1faWQgPSBjcmVhdGVDYW5vbmlj
YWxVVUlEU3RyaW5nKCk7CisKKyAgICAvLyAzLiBMZXQgdHJhY2tDbG9uZSBpbmhlcml0IHRoaXMg
dHJhY2sncyB1bmRlcmx5aW5nIHNvdXJjZSwga2luZCwgbGFiZWwgYW5kIGVuYWJsZWQgYXR0cmli
dXRlcy4KKyAgICBzZXRTb3VyY2Uob3RoZXItPnNvdXJjZSgpKTsKKyAgICBtX3JlYWR5U3RhdGUg
PSBtX3NvdXJjZSA/IG1fc291cmNlLT5yZWFkeVN0YXRlKCkgOiBNZWRpYVN0cmVhbVNvdXJjZTo6
TmV3OworICAgIG1fZW5hYmxlZCA9IG90aGVyLT5lbmFibGVkKCk7CisKKyAgICAvLyBOb3RlOiB0
aGUgImNsb25lIiBzdGVwcyBkb24ndCBzYXkgYW55dGhpbmcgYWJvdXQgJ211dGVkJywgYnV0IDQu
My4xIHNheXM6CisgICAgLy8gRm9yIGEgbmV3bHkgY3JlYXRlZCBNZWRpYVN0cmVhbVRyYWNrIG9i
amVjdCwgdGhlIGZvbGxvd2luZyBhcHBsaWVzLiBUaGUgdHJhY2sgaXMgYWx3YXlzIGVuYWJsZWQK
KyAgICAvLyB1bmxlc3Mgc3RhdGVkIG90aGVyd2lzZSAoZm9yIGV4YW1scGUgd2hlbiBjbG9uZWQp
IGFuZCB0aGUgbXV0ZWQgc3RhdGUgcmVmbGVjdHMgdGhlIHN0YXRlIG9mIHRoZQorICAgIC8vIHNv
dXJjZSBhdCB0aGUgdGltZSB0aGUgdHJhY2sgaXMgY3JlYXRlZC4KKyAgICBtX211dGVkID0gb3Ro
ZXItPm11dGVkKCk7CisKKyAgICBtX2V2ZW50RGlzcGF0Y2hTY2hlZHVsZWQgPWZhbHNlOworICAg
IG1fc3RvcHBlZCA9IG90aGVyLT5zdG9wcGVkKCk7CiB9CiAKIE1lZGlhU3RyZWFtVHJhY2s6On5N
ZWRpYVN0cmVhbVRyYWNrKCkKQEAgLTg1LDYgKzExOCwxNSBAQCBjb25zdCBBdG9taWNTdHJpbmcm
IE1lZGlhU3RyZWFtVHJhY2s6OmtpCiB2b2lkIE1lZGlhU3RyZWFtVHJhY2s6OnNldFNvdXJjZShN
ZWRpYVN0cmVhbVNvdXJjZSogc291cmNlKQogewogICAgIEFTU0VSVChzb3VyY2UgPT0gbV9zb3Vy
Y2UgfHwgIW1fc291cmNlKTsKKworICAgIGlmIChtX3NvdXJjZSkKKyAgICAgICAgbV9zb3VyY2Ut
PnJlbW92ZU9ic2VydmVyKHRoaXMpOworCisgICAgaWYgKHNvdXJjZSkgeworICAgICAgICBzb3Vy
Y2UtPmFkZE9ic2VydmVyKHRoaXMpOworICAgICAgICBtX211dGVkID0gc291cmNlLT5tdXRlZCgp
OworICAgIH0KKwogICAgIG1fc291cmNlID0gc291cmNlOwogfQogCkBAIC05MywxOCArMTM1LDEz
IEBAIGNvbnN0IFN0cmluZyYgTWVkaWFTdHJlYW1UcmFjazo6aWQoKSBjb24KICAgICBpZiAoIW1f
aWQuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gbV9pZDsKIAotICAgIGlmICghbV9zb3VyY2Up
Ci0gICAgICAgIHJldHVybiBlbXB0eVN0cmluZygpOwotCi0gICAgY29uc3QgU3RyaW5nJiBpZCA9
IG1fc291cmNlLT5pZCgpOwotICAgIGlmICghaWQuaXNFbXB0eSgpKQotICAgICAgICByZXR1cm4g
aWQ7Ci0KICAgICAvLyBUaGUgc3BlYyBzYXlzOgogICAgIC8vICAgVW5sZXNzIGEgTWVkaWFTdHJl
YW1UcmFjayBvYmplY3QgaXMgY3JlYXRlZCBhcyBhIHBhcnQgYSBvZiBzcGVjaWFsIHB1cnBvc2Ug
YWxnb3JpdGhtIHRoYXQKICAgICAvLyAgIHNwZWNpZmllcyBob3cgdGhlIHRyYWNrIGlkIG11c3Qg
YmUgaW5pdGlhbGl6ZWQsIHRoZSB1c2VyIGFnZW50IG11c3QgZ2VuZXJhdGUgYSBnbG9iYWxseQog
ICAgIC8vICAgdW5pcXVlIGlkZW50aWZpZXIgc3RyaW5nIGFuZCBpbml0aWFsaXplIHRoZSBvYmpl
Y3QncyBpZCBhdHRyaWJ1dGUgdG8gdGhhdCBzdHJpbmcuCi0gICAgLy8gc28gZ2VuZXJhdGUgYSBV
VUlEIGlmIHRoZSBzb3VyY2UgZG9lc24ndCBoYXZlIGFuIElELgorICAgIGlmIChtX3NvdXJjZSAm
JiBtX3NvdXJjZS0+dXNlSURGb3JUcmFja0lEKCkpCisgICAgICAgIHJldHVybiBtX3NvdXJjZS0+
aWQoKTsKKwogICAgIG1faWQgPSBjcmVhdGVDYW5vbmljYWxVVUlEU3RyaW5nKCk7CiAgICAgcmV0
dXJuIG1faWQ7CiB9CkBAIC0xMjUsMTggKzE2Miw0MCBAQCB2b2lkIE1lZGlhU3RyZWFtVHJhY2s6
OnNldEVuYWJsZWQoYm9vbCBlCiB7CiAgICAgaWYgKG1fc3RvcHBlZCkKICAgICAgICAgcmV0dXJu
OwotICAgIAorCisgICAgLy8gNC4zLjMuMQorICAgIC8vIC4uLiBhZnRlciBhIE1lZGlhU3RyZWFt
VHJhY2sgaXMgZGlzYXNzb2NpYXRlZCBmcm9tIGl0cyB0cmFjaywgaXRzIGVuYWJsZWQgYXR0cmli
dXRlIHN0aWxsCisgICAgLy8gY2hhbmdlcyB2YWx1ZSB3aGVuIHNldDsgaXQganVzdCBkb2Vzbid0
IGRvIGFueXRoaW5nIHdpdGggdGhhdCBuZXcgdmFsdWUuCiAgICAgbV9lbmFibGVkID0gZW5hYmxl
ZDsKIAotICAgIGlmICghbV9zb3VyY2UgfHwgZW5hYmxlZCA9PSBtX3NvdXJjZS0+ZW5hYmxlZCgp
KQorICAgIGlmICghbV9zb3VyY2UpCiAgICAgICAgIHJldHVybjsKIAogICAgIG1fc291cmNlLT5z
ZXRFbmFibGVkKGVuYWJsZWQpOworfQogCi0gICAgaWYgKG1fc291cmNlLT5zdHJlYW0oKS0+ZW5k
ZWQoKSkKLSAgICAgICAgcmV0dXJuOworYm9vbCBNZWRpYVN0cmVhbVRyYWNrOjptdXRlZCgpIGNv
bnN0Cit7CisgICAgaWYgKG1fc3RvcHBlZCB8fCAhbV9zb3VyY2UpCisgICAgICAgIHJldHVybiBm
YWxzZTsKKworICAgIHJldHVybiBtX3NvdXJjZS0+bXV0ZWQoKTsKK30KKworYm9vbCBNZWRpYVN0
cmVhbVRyYWNrOjpyZWFkb25seSgpIGNvbnN0Cit7CisgICAgaWYgKG1fc3RvcHBlZCB8fCAhbV9z
b3VyY2UpCisgICAgICAgIHJldHVybiB0cnVlOworCisgICAgcmV0dXJuIG1fc291cmNlLT5yZWFk
b25seSgpOworfQorCitib29sIE1lZGlhU3RyZWFtVHJhY2s6OnJlbW90ZSgpIGNvbnN0Cit7Cisg
ICAgaWYgKCFtX3NvdXJjZSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgTWVkaWFTdHJl
YW1DZW50ZXI6OnNoYXJlZCgpLmRpZFNldE1lZGlhU3RyZWFtVHJhY2tFbmFibGVkKG1fc291cmNl
LmdldCgpKTsKKyAgICByZXR1cm4gbV9zb3VyY2UtPnJlbW90ZSgpOwogfQogCiBjb25zdCBBdG9t
aWNTdHJpbmcmIE1lZGlhU3RyZWFtVHJhY2s6OnJlYWR5U3RhdGUoKSBjb25zdApAQCAtMTcxLDEy
ICsyMzAsNjQgQEAgdm9pZCBNZWRpYVN0cmVhbVRyYWNrOjpnZXRTb3VyY2VzKFNjcmlwdAogICAg
ICAgICBlYyA9IE5PVF9TVVBQT1JURURfRVJSOwogfQogCitQYXNzUmVmUHRyPE1lZGlhVHJhY2tD
b25zdHJhaW50cz4gTWVkaWFTdHJlYW1UcmFjazo6Y29uc3RyYWludHMoKSBjb25zdAoreworICAg
IC8vIEZJWE1FOiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTIyNDI4
CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gMDsKK30KKworUGFzc1JlZlB0cjxN
ZWRpYVNvdXJjZVN0YXRlcz4gTWVkaWFTdHJlYW1UcmFjazo6c3RhdGVzKCkgY29uc3QKK3sKKyAg
ICBpZiAoIW1fc291cmNlKQorICAgICAgICByZXR1cm4gMDsKKyAgICAKKyAgICByZXR1cm4gTWVk
aWFTb3VyY2VTdGF0ZXM6OmNyZWF0ZShtX3NvdXJjZS0+c3RhdGVzKCkpOworfQorCitQYXNzUmVm
UHRyPE1lZGlhU3RyZWFtQ2FwYWJpbGl0aWVzPiBNZWRpYVN0cmVhbVRyYWNrOjpjYXBhYmlsaXRp
ZXMoKSBjb25zdAoreworICAgIGlmICghbV9zb3VyY2UpCisgICAgICAgIHJldHVybiAwOworCisg
ICAgcmV0dXJuIE1lZGlhU3RyZWFtQ2FwYWJpbGl0aWVzOjpjcmVhdGUobV9zb3VyY2UtPmNhcGFi
aWxpdGllcygpKTsKK30KKwordm9pZCBNZWRpYVN0cmVhbVRyYWNrOjphcHBseUNvbnN0cmFpbnRz
KGNvbnN0IERpY3Rpb25hcnkmIGNvbnN0cmFpbnRzKQoreworICAgIC8vIEZJWE1FOiBhcHBseSB0
aGUgbmV3IGNvbnN0cmFpbnRzIHRvIHRoZSB0cmFjaworICAgIC8vIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjI0MjgKKyAgICBtX2NvbnN0cmFpbnRzLT5pbml0aWFs
aXplKGNvbnN0cmFpbnRzKTsKK30KKworUGFzc1JlZlB0cjxNZWRpYVN0cmVhbVRyYWNrPiBNZWRp
YVN0cmVhbVRyYWNrOjpjbG9uZSgpCit7CisgICAgaWYgKG1fc291cmNlICYmIG1fc291cmNlLT50
eXBlKCkgPT0gTWVkaWFTdHJlYW1Tb3VyY2U6OkF1ZGlvKQorICAgICAgICByZXR1cm4gQXVkaW9T
dHJlYW1UcmFjazo6Y3JlYXRlKHRoaXMpOworCisgICAgcmV0dXJuIFZpZGVvU3RyZWFtVHJhY2s6
OmNyZWF0ZSh0aGlzKTsKK30KKwordm9pZCBNZWRpYVN0cmVhbVRyYWNrOjpzdG9wUHJvZHVjaW5n
RGF0YSgpCit7CisgICAgaWYgKG1fc3RvcHBlZCB8fCAhbV9zb3VyY2UpCisgICAgICAgIHJldHVy
bjsKKworICAgIC8vIFNldCBtX3N0b3BwZWQgYmVmb3JlIHN0b3BwaW5nIHRoZSBzb3VyY2UgYmVj
YXVzZSB0aGF0IG1heSByZXN1bHQgaW4gYSBjYWxsIHRvIHNvdXJjZUNoYW5nZWRTdGF0ZQorICAg
IC8vIGFuZCB3ZSBvbmx5IHdhbnQgdG8gZGlzcGF0Y2ggdGhlICdlbmRlZCcgZXZlbnQgaWYgbmVj
ZXNzYXJ5LgorICAgIG1fc3RvcHBlZCA9IHRydWU7CisgICAgbV9zb3VyY2UtPnN0b3AoKTsKKwor
ICAgIGlmIChtX3JlYWR5U3RhdGUgIT0gTWVkaWFTdHJlYW1Tb3VyY2U6OkVuZGVkKQorICAgICAg
ICBzY2hlZHVsZUV2ZW50RGlzcGF0Y2goRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkuZW5kZWRF
dmVudCwgZmFsc2UsIGZhbHNlKSk7Cit9CisKIGJvb2wgTWVkaWFTdHJlYW1UcmFjazo6ZW5kZWQo
KSBjb25zdAogewogICAgIHJldHVybiBtX3N0b3BwZWQgfHwgKG1fc291cmNlICYmIG1fc291cmNl
LT5yZWFkeVN0YXRlKCkgPT0gTWVkaWFTdHJlYW1Tb3VyY2U6OkVuZGVkKTsKIH0KIAotdm9pZCBN
ZWRpYVN0cmVhbVRyYWNrOjpzb3VyY2VDaGFuZ2VkU3RhdGUoKQordm9pZCBNZWRpYVN0cmVhbVRy
YWNrOjpzb3VyY2VTdGF0ZUNoYW5nZWQoKQogewogICAgIGlmIChtX3N0b3BwZWQpCiAgICAgICAg
IHJldHVybjsKQEAgLTE4NSwxOCArMjk2LDUwIEBAIHZvaWQgTWVkaWFTdHJlYW1UcmFjazo6c291
cmNlQ2hhbmdlZFN0YXQKICAgICBtX3JlYWR5U3RhdGUgPSBtX3NvdXJjZS0+cmVhZHlTdGF0ZSgp
OwogCiAgICAgaWYgKG1fcmVhZHlTdGF0ZSA+PSBNZWRpYVN0cmVhbVNvdXJjZTo6TGl2ZSAmJiBv
bGRSZWFkeVN0YXRlID09IE1lZGlhU3RyZWFtU291cmNlOjpOZXcpCi0gICAgICAgIGRpc3BhdGNo
RXZlbnQoRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkuc3RhcnRlZEV2ZW50LCBmYWxzZSwgZmFs
c2UpKTsKKyAgICAgICAgc2NoZWR1bGVFdmVudERpc3BhdGNoKEV2ZW50OjpjcmVhdGUoZXZlbnRO
YW1lcygpLnN0YXJ0ZWRFdmVudCwgZmFsc2UsIGZhbHNlKSk7CiAgICAgaWYgKG1fcmVhZHlTdGF0
ZSA9PSBNZWRpYVN0cmVhbVNvdXJjZTo6RW5kZWQgJiYgb2xkUmVhZHlTdGF0ZSAhPSBNZWRpYVN0
cmVhbVNvdXJjZTo6RW5kZWQpCi0gICAgICAgIGRpc3BhdGNoRXZlbnQoRXZlbnQ6OmNyZWF0ZShl
dmVudE5hbWVzKCkuZW5kZWRFdmVudCwgZmFsc2UsIGZhbHNlKSk7CisgICAgICAgIHNjaGVkdWxl
RXZlbnREaXNwYXRjaChFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5lbmRlZEV2ZW50LCBmYWxz
ZSwgZmFsc2UpKTsKK30KKyAgICAKK3ZvaWQgTWVkaWFTdHJlYW1UcmFjazo6c291cmNlTXV0ZWRD
aGFuZ2VkKCkKK3sKKyAgICBpZiAobV9zdG9wcGVkKQorICAgICAgICByZXR1cm47CiAKLSAgICBp
ZiAobV9tdXRlZCA9PSBtX3NvdXJjZS0+bXV0ZWQoKSkKKyAgICBib29sIG11dGVkID0gbV9zb3Vy
Y2UtPm11dGVkKCk7CisgICAgaWYgKG1fbXV0ZWQgPT0gbXV0ZWQpCiAgICAgICAgIHJldHVybjsK
IAotICAgIG1fbXV0ZWQgPSBtX3NvdXJjZS0+bXV0ZWQoKTsKKyAgICBtX211dGVkID0gbXV0ZWQ7
CiAgICAgaWYgKG1fbXV0ZWQpCi0gICAgICAgIGRpc3BhdGNoRXZlbnQoRXZlbnQ6OmNyZWF0ZShl
dmVudE5hbWVzKCkubXV0ZUV2ZW50LCBmYWxzZSwgZmFsc2UpKTsKKyAgICAgICAgc2NoZWR1bGVF
dmVudERpc3BhdGNoKEV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLm11dGVFdmVudCwgZmFsc2Us
IGZhbHNlKSk7CiAgICAgZWxzZQotICAgICAgICBkaXNwYXRjaEV2ZW50KEV2ZW50OjpjcmVhdGUo
ZXZlbnROYW1lcygpLnVubXV0ZUV2ZW50LCBmYWxzZSwgZmFsc2UpKTsKKyAgICAgICAgc2NoZWR1
bGVFdmVudERpc3BhdGNoKEV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLnVubXV0ZUV2ZW50LCBm
YWxzZSwgZmFsc2UpKTsKKworICAgIGNvbmZpZ3VyZVRyYWNrUmVuZGVyaW5nKCk7Cit9CisKK3Zv
aWQgTWVkaWFTdHJlYW1UcmFjazo6c291cmNlRW5hYmxlZENoYW5nZWQoKQoreworICAgIGlmICht
X3N0b3BwZWQpCisgICAgICAgIHJldHVybjsKKyAgICAKKyAgICAvLyBtZWRpYSBmcm9tIHRoZSBz
b3VyY2Ugb25seSBmbG93cyB3aGVuIGEgTWVkaWFTdHJlYW1UcmFjayBvYmplY3QgaXMgYm90aCB1
bm11dGVkIGFuZCBlbmFibGVkCisgICAgY29uZmlndXJlVHJhY2tSZW5kZXJpbmcoKTsKK30KKwor
dm9pZCBNZWRpYVN0cmVhbVRyYWNrOjpjb25maWd1cmVUcmFja1JlbmRlcmluZygpCit7CisgICAg
aWYgKG1fc3RvcHBlZCkKKyAgICAgICAgcmV0dXJuOworCisgICAgLy8gNC4zLjEKKyAgICAvLyAu
Li4gbWVkaWEgZnJvbSB0aGUgc291cmNlIG9ubHkgZmxvd3Mgd2hlbiBhIE1lZGlhU3RyZWFtVHJh
Y2sgb2JqZWN0IGlzIGJvdGggdW5tdXRlZCBhbmQgZW5hYmxlZAorfQorCitib29sIE1lZGlhU3Ry
ZWFtVHJhY2s6OnN0b3BwZWQoKQoreworICAgIHJldHVybiBtX3N0b3BwZWQ7CiB9CiAKIHZvaWQg
TWVkaWFTdHJlYW1UcmFjazo6dHJhY2tEaWRFbmQoKQpAQCAtMjExLDcgKzM1NCw0MiBAQCB2b2lk
IE1lZGlhU3RyZWFtVHJhY2s6OnRyYWNrRGlkRW5kKCkKIAogdm9pZCBNZWRpYVN0cmVhbVRyYWNr
OjpzdG9wKCkKIHsKLSAgICBtX3N0b3BwZWQgPSB0cnVlOworICAgIHN0b3BQcm9kdWNpbmdEYXRh
KCk7Cit9CisKK3ZvaWQgTWVkaWFTdHJlYW1UcmFjazo6c2NoZWR1bGVFdmVudERpc3BhdGNoKFBh
c3NSZWZQdHI8RXZlbnQ+IGV2ZW50KQoreworICAgIHsKKyAgICAgICAgTXV0ZXhMb2NrZXIgbG9j
a2VyKG1fbXV0ZXgpOworICAgICAgICBtX3NjaGVkdWxlZEV2ZW50cy5hcHBlbmQoZXZlbnQpOwor
ICAgICAgICBpZiAobV9ldmVudERpc3BhdGNoU2NoZWR1bGVkKQorICAgICAgICAgICAgcmV0dXJu
OworICAgICAgICBtX2V2ZW50RGlzcGF0Y2hTY2hlZHVsZWQgPSB0cnVlOworICAgIH0KKworICAg
IGNhbGxPbk1haW5UaHJlYWQoYmluZCgmTWVkaWFTdHJlYW1UcmFjazo6ZGlzcGF0Y2hRdWV1ZWRF
dmVudHMsIHRoaXMpKTsKK30KKwordm9pZCBNZWRpYVN0cmVhbVRyYWNrOjpkaXNwYXRjaFF1ZXVl
ZEV2ZW50cygpCit7CisgICAgVmVjdG9yPFJlZlB0cjxFdmVudD4+IGV2ZW50czsKKyAgICB7Cisg
ICAgICAgIE11dGV4TG9ja2VyIGxvY2tlcihtX211dGV4KTsKKworICAgICAgICBtX2V2ZW50RGlz
cGF0Y2hTY2hlZHVsZWQgPSBmYWxzZTsKKyAgICAgICAgaWYgKCFzY3JpcHRFeGVjdXRpb25Db250
ZXh0KCkpIHsKKyAgICAgICAgICAgIG1fc2NoZWR1bGVkRXZlbnRzLmNsZWFyKCk7CisgICAgICAg
ICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBldmVudHMuc3dhcChtX3NjaGVkdWxl
ZEV2ZW50cyk7CisgICAgfQorCisgICAgVmVjdG9yPFJlZlB0cjxFdmVudD4gPjo6aXRlcmF0b3Ig
aXQgPSBldmVudHMuYmVnaW4oKTsKKyAgICBmb3IgKDsgaXQgIT0gZXZlbnRzLmVuZCgpOyArK2l0
KQorICAgICAgICBkaXNwYXRjaEV2ZW50KCgqaXQpLnJlbGVhc2UoKSk7CisKKyAgICBldmVudHMu
Y2xlYXIoKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVRyYWNrLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVRyYWNrLmgJKHJl
dmlzaW9uIDE1NzAzOSkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVk
aWFTdHJlYW1UcmFjay5oCSh3b3JraW5nIGNvcHkpCkBAIC00MSw4ICs0MSwxMSBAQAogbmFtZXNw
YWNlIFdlYkNvcmUgewogCiBjbGFzcyBEaWN0aW9uYXJ5OwotY2xhc3MgTWVkaWFDb25zdHJhaW50
czsKK2NsYXNzIE1lZGlhQ29uc3RyYWludHNJbXBsOworY2xhc3MgTWVkaWFTb3VyY2VTdGF0ZXM7
CiBjbGFzcyBNZWRpYVN0cmVhbVRyYWNrU291cmNlc0NhbGxiYWNrOworY2xhc3MgTWVkaWFTdHJl
YW1DYXBhYmlsaXRpZXM7CitjbGFzcyBNZWRpYVRyYWNrQ29uc3RyYWludHM7CiAKIGNsYXNzIE1l
ZGlhU3RyZWFtVHJhY2sgOiBwdWJsaWMgUmVmQ291bnRlZDxNZWRpYVN0cmVhbVRyYWNrPiwgcHVi
bGljIFNjcmlwdFdyYXBwYWJsZSwgcHVibGljIEFjdGl2ZURPTU9iamVjdCwgcHVibGljIEV2ZW50
VGFyZ2V0V2l0aElubGluZURhdGEsIHB1YmxpYyBNZWRpYVN0cmVhbVNvdXJjZTo6T2JzZXJ2ZXIg
ewogcHVibGljOgpAQCAtNTQsMTcgKzU3LDMxIEBAIHB1YmxpYzoKIAogICAgIGJvb2wgZW5hYmxl
ZCgpIGNvbnN0OwogICAgIHZvaWQgc2V0RW5hYmxlZChib29sKTsKLSAgICAKKworICAgIGJvb2wg
bXV0ZWQoKSBjb25zdDsKKyAgICBib29sIHJlYWRvbmx5KCkgY29uc3Q7CisgICAgYm9vbCByZW1v
dGUoKSBjb25zdDsKKwogICAgIGNvbnN0IEF0b21pY1N0cmluZyYgcmVhZHlTdGF0ZSgpIGNvbnN0
OwogCiAgICAgc3RhdGljIHZvaWQgZ2V0U291cmNlcyhTY3JpcHRFeGVjdXRpb25Db250ZXh0Kiwg
UGFzc1JlZlB0cjxNZWRpYVN0cmVhbVRyYWNrU291cmNlc0NhbGxiYWNrPiwgRXhjZXB0aW9uQ29k
ZSYpOwogCi0gICAgTWVkaWFTdHJlYW1Tb3VyY2UqIHNvdXJjZSgpIGNvbnN0IHsgcmV0dXJuIG1f
c291cmNlLmdldCgpOyB9Ci0gICAgdm9pZCBzZXRTb3VyY2UoTWVkaWFTdHJlYW1Tb3VyY2UqKTsK
KyAgICBQYXNzUmVmUHRyPE1lZGlhVHJhY2tDb25zdHJhaW50cz4gY29uc3RyYWludHMoKSBjb25z
dDsKKyAgICBQYXNzUmVmUHRyPE1lZGlhU291cmNlU3RhdGVzPiBzdGF0ZXMoKSBjb25zdDsKKyAg
ICBQYXNzUmVmUHRyPE1lZGlhU3RyZWFtQ2FwYWJpbGl0aWVzPiBjYXBhYmlsaXRpZXMoKSBjb25z
dDsKKyAgICB2b2lkIGFwcGx5Q29uc3RyYWludHMoY29uc3QgRGljdGlvbmFyeSYpOworCisgICAg
UGFzc1JlZlB0cjxNZWRpYVN0cmVhbVRyYWNrPiBjbG9uZSgpOworICAgIHZvaWQgc3RvcFByb2R1
Y2luZ0RhdGEoKTsKIAogICAgIERFRklORV9BVFRSSUJVVEVfRVZFTlRfTElTVEVORVIobXV0ZSk7
CiAgICAgREVGSU5FX0FUVFJJQlVURV9FVkVOVF9MSVNURU5FUih1bm11dGUpOworICAgIERFRklO
RV9BVFRSSUJVVEVfRVZFTlRfTElTVEVORVIoc3RhcnRlZCk7CiAgICAgREVGSU5FX0FUVFJJQlVU
RV9FVkVOVF9MSVNURU5FUihlbmRlZCk7CisgICAgREVGSU5FX0FUVFJJQlVURV9FVkVOVF9MSVNU
RU5FUihvdmVyY29uc3RyYWluZWQpOworCisgICAgTWVkaWFTdHJlYW1Tb3VyY2UqIHNvdXJjZSgp
IGNvbnN0IHsgcmV0dXJuIG1fc291cmNlLmdldCgpOyB9CisgICAgdm9pZCBzZXRTb3VyY2UoTWVk
aWFTdHJlYW1Tb3VyY2UqKTsKIAogICAgIGJvb2wgZW5kZWQoKSBjb25zdDsKIApAQCAtNzIsMzMg
Kzg5LDQ1IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIEV2ZW50VGFyZ2V0SW50ZXJmYWNlIGV2ZW50
VGFyZ2V0SW50ZXJmYWNlKCkgY29uc3QgT1ZFUlJJREUgRklOQUwgeyByZXR1cm4gTWVkaWFTdHJl
YW1UcmFja0V2ZW50VGFyZ2V0SW50ZXJmYWNlVHlwZTsgfQogICAgIHZpcnR1YWwgU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpIGNvbnN0IE9WRVJSSURFIEZJ
TkFMIHsgcmV0dXJuIEFjdGl2ZURPTU9iamVjdDo6c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOyB9
CiAKLSAgICAvLyBBY3RpdmVET01PYmplY3QKLSAgICB2aXJ0dWFsIHZvaWQgc3RvcCgpIE9WRVJS
SURFIEZJTkFMOwotCiAgICAgdXNpbmcgUmVmQ291bnRlZDxNZWRpYVN0cmVhbVRyYWNrPjo6cmVm
OwogICAgIHVzaW5nIFJlZkNvdW50ZWQ8TWVkaWFTdHJlYW1UcmFjaz46OmRlcmVmOwogCiBwcm90
ZWN0ZWQ6CisgICAgZXhwbGljaXQgTWVkaWFTdHJlYW1UcmFjayhNZWRpYVN0cmVhbVRyYWNrKik7
CiAgICAgTWVkaWFTdHJlYW1UcmFjayhTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgTWVkaWFTdHJl
YW1Tb3VyY2UqLCBjb25zdCBEaWN0aW9uYXJ5Kik7CiAKIHByaXZhdGU6CisKKyAgICB2b2lkIGNv
bmZpZ3VyZVRyYWNrUmVuZGVyaW5nKCk7CiAgICAgdm9pZCB0cmFja0RpZEVuZCgpOworICAgIHZv
aWQgc2NoZWR1bGVFdmVudERpc3BhdGNoKFBhc3NSZWZQdHI8RXZlbnQ+KTsKKyAgICB2b2lkIGRp
c3BhdGNoUXVldWVkRXZlbnRzKCk7CisKKyAgICAvLyBBY3RpdmVET01PYmplY3QKKyAgICB2aXJ0
dWFsIHZvaWQgc3RvcCgpIE9WRVJSSURFIEZJTkFMOwogCiAgICAgLy8gRXZlbnRUYXJnZXQKICAg
ICB2aXJ0dWFsIHZvaWQgcmVmRXZlbnRUYXJnZXQoKSBPVkVSUklERSBGSU5BTCB7IHJlZigpOyB9
CiAgICAgdmlydHVhbCB2b2lkIGRlcmVmRXZlbnRUYXJnZXQoKSBPVkVSUklERSBGSU5BTCB7IGRl
cmVmKCk7IH0KIAogICAgIC8vIE1lZGlhU3RyZWFtU291cmNlT2JzZXJ2ZXIKLSAgICB2aXJ0dWFs
IHZvaWQgc291cmNlQ2hhbmdlZFN0YXRlKCkgT1ZFUlJJREUgRklOQUw7CisgICAgdmlydHVhbCB2
b2lkIHNvdXJjZVN0YXRlQ2hhbmdlZCgpIE9WRVJSSURFIEZJTkFMOworICAgIHZpcnR1YWwgdm9p
ZCBzb3VyY2VNdXRlZENoYW5nZWQoKSBPVkVSUklERSBGSU5BTDsKKyAgICB2aXJ0dWFsIHZvaWQg
c291cmNlRW5hYmxlZENoYW5nZWQoKSBPVkVSUklERSBGSU5BTDsKKyAgICB2aXJ0dWFsIGJvb2wg
c3RvcHBlZCgpIE9WRVJSSURFIEZJTkFMOworCisgICAgVmVjdG9yPFJlZlB0cjxFdmVudD4+IG1f
c2NoZWR1bGVkRXZlbnRzOwogCiAgICAgUmVmUHRyPE1lZGlhU3RyZWFtU291cmNlPiBtX3NvdXJj
ZTsKLSAgICBSZWZQdHI8TWVkaWFDb25zdHJhaW50cz4gbV9jb25zdHJhaW50czsKKyAgICBSZWZQ
dHI8TWVkaWFDb25zdHJhaW50c0ltcGw+IG1fY29uc3RyYWludHM7CiAgICAgTWVkaWFTdHJlYW1T
b3VyY2U6OlJlYWR5U3RhdGUgbV9yZWFkeVN0YXRlOwogICAgIG11dGFibGUgU3RyaW5nIG1faWQ7
CisgICAgTXV0ZXggbV9tdXRleDsKIAogICAgIGJvb2wgbV9zdG9wcGVkOwogICAgIGJvb2wgbV9l
bmFibGVkOwogICAgIGJvb2wgbV9tdXRlZDsKKyAgICBib29sIG1fZXZlbnREaXNwYXRjaFNjaGVk
dWxlZDsKIH07CiAKIHR5cGVkZWYgVmVjdG9yPFJlZlB0cjxNZWRpYVN0cmVhbVRyYWNrPiA+IE1l
ZGlhU3RyZWFtVHJhY2tWZWN0b3I7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlh
c3RyZWFtL01lZGlhU3RyZWFtVHJhY2suaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1UcmFjay5pZGwJKHJldmlzaW9uIDE1NzAx
NikKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1UcmFj
ay5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw2IEBACiAvKgogICogQ29weXJpZ2h0IChD
KSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAog
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCkBAIC0yMiw2ICsyMyw4IEBACiAgKiBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCitlbnVtIE1lZGlh
U3RyZWFtVHJhY2tTdGF0ZSB7ICJuZXciLCAibGl2ZSIsICJlbmRlZCIgfTsKKwogWwogICAgIENv
bmRpdGlvbmFsPU1FRElBX1NUUkVBTSwKICAgICBFdmVudFRhcmdldCwKQEAgLTMzLDE1ICszNiwy
OSBAQAogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBET01TdHJpbmcgaWQ7CiAgICAgcmVhZG9ubHkg
YXR0cmlidXRlIERPTVN0cmluZyBsYWJlbDsKICAgICAgICAgICAgICBhdHRyaWJ1dGUgYm9vbGVh
biBlbmFibGVkOwotCi0gICAgcmVhZG9ubHkgYXR0cmlidXRlIERPTVN0cmluZyByZWFkeVN0YXRl
OwotCisgICAgcmVhZG9ubHkgYXR0cmlidXRlIGJvb2xlYW4gbXV0ZWQ7CiAgICAgYXR0cmlidXRl
IEV2ZW50TGlzdGVuZXIgb25tdXRlOwogICAgIGF0dHJpYnV0ZSBFdmVudExpc3RlbmVyIG9udW5t
dXRlOworICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBib29sZWFuIF9yZWFkb25seTsKKyAgICByZWFk
b25seSBhdHRyaWJ1dGUgYm9vbGVhbiByZW1vdGU7CisgICAgcmVhZG9ubHkgYXR0cmlidXRlIE1l
ZGlhU3RyZWFtVHJhY2tTdGF0ZSByZWFkeVN0YXRlOworICAgIGF0dHJpYnV0ZSBFdmVudExpc3Rl
bmVyIG9uc3RhcnRlZDsKICAgICBhdHRyaWJ1dGUgRXZlbnRMaXN0ZW5lciBvbmVuZGVkOwogCiAg
ICAgW0NhbGxXaXRoPVNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsIFJhaXNlc0V4Y2VwdGlvbl0gc3Rh
dGljIHZvaWQgZ2V0U291cmNlcyhNZWRpYVN0cmVhbVRyYWNrU291cmNlc0NhbGxiYWNrIGNhbGxi
YWNrKTsKIAorICAgIE1lZGlhVHJhY2tDb25zdHJhaW50cyBjb25zdHJhaW50cygpOworCisgICAg
TWVkaWFTb3VyY2VTdGF0ZXMgc3RhdGVzKCk7CisKKyAgICBNZWRpYVN0cmVhbUNhcGFiaWxpdGll
cyBjYXBhYmlsaXRpZXMoKTsgLy8gcmV0dXJucyBlaXRoZXIgQWxsVmlkZW9DYXBhYmlsaXRpZXMg
b3IgQWxsQXVkaW9DYXBhYmlsaXRpZXMKKworICAgIHZvaWQgYXBwbHlDb25zdHJhaW50cyhEaWN0
aW9uYXJ5IGNvbnN0cmFpbnRzKTsKKworICAgIGF0dHJpYnV0ZSBFdmVudExpc3RlbmVyIG9ub3Zl
cmNvbnN0cmFpbmVkOworICAgIE1lZGlhU3RyZWFtVHJhY2sgY2xvbmUoKTsKKyAgICBbSW1wbGVt
ZW50ZWRBcz1zdG9wUHJvZHVjaW5nRGF0YV0gdm9pZCBzdG9wKCk7CisKICAgICAvLyBFdmVudFRh
cmdldCBpbnRlcmZhY2UKICAgICB2b2lkIGFkZEV2ZW50TGlzdGVuZXIoRE9NU3RyaW5nIHR5cGUs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgIEV2ZW50TGlzdGVuZXIgbGlzdGVuZXIsCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhVHJhY2tDb25zdHJhaW50
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01l
ZGlhVHJhY2tDb25zdHJhaW50LmNwcAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFUcmFja0NvbnN0cmFpbnQuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0wLDAgKzEsNTMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLiAKKyAqCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaWYgRU5BQkxF
KE1FRElBX1NUUkVBTSkKKworI2luY2x1ZGUgIk1lZGlhVHJhY2tDb25zdHJhaW50LmgiCisKK3Vz
aW5nIG5hbWVzcGFjZSBKU0M7CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworUGFzc1JlZlB0cjxN
ZWRpYVRyYWNrQ29uc3RyYWludD4gTWVkaWFUcmFja0NvbnN0cmFpbnQ6OmNyZWF0ZShjb25zdCBE
aWN0aW9uYXJ5JiBjb25zdHJhaW50KQoreworICAgIHJldHVybiBhZG9wdFJlZihuZXcgTWVkaWFU
cmFja0NvbnN0cmFpbnQoY29uc3RyYWludCkpOworfQorCitNZWRpYVRyYWNrQ29uc3RyYWludDo6
TWVkaWFUcmFja0NvbnN0cmFpbnQoY29uc3QgRGljdGlvbmFyeSYgY29uc3RyYWludCkKKyAgICA6
IG1fY29uc3RyYWludChjb25zdHJhaW50KQoreworfQorCitNZWRpYVRyYWNrQ29uc3RyYWludDo6
fk1lZGlhVHJhY2tDb25zdHJhaW50KCkKK3sKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQor
CisjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFU
cmFja0NvbnN0cmFpbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21l
ZGlhc3RyZWFtL01lZGlhVHJhY2tDb25zdHJhaW50LmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhVHJhY2tDb25zdHJhaW50LmgJKHdvcmtp
bmcgY29weSkKQEAgLTAsMCArMSw1OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBU
SEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuIAorICoKKyAqLworCisjaWZuZGVmIE1lZGlhVHJhY2tDb25zdHJh
aW50X2gKKyNkZWZpbmUgTWVkaWFUcmFja0NvbnN0cmFpbnRfaAorCisjaWYgRU5BQkxFKE1FRElB
X1NUUkVBTSkKKworI2luY2x1ZGUgIkRpY3Rpb25hcnkuaCIKKyNpbmNsdWRlICJTY3JpcHRXcmFw
cGFibGUuaCIKKyNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgorCituYW1lc3BhY2UgV2ViQ29y
ZSB7CisKK2NsYXNzIFNjcmlwdFZhbHVlOworCitjbGFzcyBNZWRpYVRyYWNrQ29uc3RyYWludCA6
IHB1YmxpYyBSZWZDb3VudGVkPE1lZGlhVHJhY2tDb25zdHJhaW50PiwgcHVibGljIFNjcmlwdFdy
YXBwYWJsZSB7CitwdWJsaWM6CisgICAgc3RhdGljIFBhc3NSZWZQdHI8TWVkaWFUcmFja0NvbnN0
cmFpbnQ+IGNyZWF0ZShjb25zdCBEaWN0aW9uYXJ5Jik7CisKKyAgICB2aXJ0dWFsIH5NZWRpYVRy
YWNrQ29uc3RyYWludCgpOworCisgICAgY29uc3QgRGljdGlvbmFyeSYgY29uc3RyYWludCgpIGNv
bnN0IHsgcmV0dXJuIG1fY29uc3RyYWludDsgfQorCitwcml2YXRlOgorICAgIGV4cGxpY2l0IE1l
ZGlhVHJhY2tDb25zdHJhaW50KGNvbnN0IERpY3Rpb25hcnkmKTsKKyAgICAKKyAgICBjb25zdCBE
aWN0aW9uYXJ5JiBtX2NvbnN0cmFpbnQ7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisK
KyNlbmRpZiAvLyBNZWRpYVRyYWNrQ29uc3RyYWludF9oCisKKyNlbmRpZgpJbmRleDogU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVRyYWNrQ29uc3RyYWludC5pZGwKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVRyYWNr
Q29uc3RyYWludC5pZGwJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21l
ZGlhc3RyZWFtL01lZGlhVHJhY2tDb25zdHJhaW50LmlkbAkod29ya2luZyBjb3B5KQpAQCAtMCww
ICsxLDMxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICog
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICog
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4gCisgKi8KKworWworICAgIENvbmRpdGlvbmFsPU1FRElBX1NUUkVBTSwKKyAg
ICBOb0ludGVyZmFjZU9iamVjdCwKK10gaW50ZXJmYWNlIE1lZGlhVHJhY2tDb25zdHJhaW50IHsK
K307CisKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFUcmFj
a0NvbnN0cmFpbnRTZXQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMv
bWVkaWFzdHJlYW0vTWVkaWFUcmFja0NvbnN0cmFpbnRTZXQuY3BwCShyZXZpc2lvbiAwKQorKysg
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVRyYWNrQ29uc3RyYWludFNl
dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw1MyBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSwgSU5DLiBgYEFTIElTJycgQU5EIEFO
WQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisg
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICoKKyAqLworCisjaW5jbHVkZSAiY29u
ZmlnLmgiCisKKyNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQorCisjaW5jbHVkZSAiTWVkaWFUcmFj
a0NvbnN0cmFpbnRTZXQuaCIKKwordXNpbmcgbmFtZXNwYWNlIEpTQzsKKworbmFtZXNwYWNlIFdl
YkNvcmUgeworCitQYXNzUmVmUHRyPE1lZGlhVHJhY2tDb25zdHJhaW50U2V0PiBNZWRpYVRyYWNr
Q29uc3RyYWludFNldDo6Y3JlYXRlKGNvbnN0IERpY3Rpb25hcnkmIGNvbnN0cmFpbnRzKQorewor
ICAgIHJldHVybiBhZG9wdFJlZihuZXcgTWVkaWFUcmFja0NvbnN0cmFpbnRTZXQoY29uc3RyYWlu
dHMpKTsKK30KKworTWVkaWFUcmFja0NvbnN0cmFpbnRTZXQ6Ok1lZGlhVHJhY2tDb25zdHJhaW50
U2V0KGNvbnN0IERpY3Rpb25hcnkmIGNvbnN0cmFpbnRzKQorICAgIDogbV9jb25zdHJhaW50cyhj
b25zdHJhaW50cykKK3sKK30KKworTWVkaWFUcmFja0NvbnN0cmFpbnRTZXQ6On5NZWRpYVRyYWNr
Q29uc3RyYWludFNldCgpCit7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlm
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhVHJhY2tDb25z
dHJhaW50U2V0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0
cmVhbS9NZWRpYVRyYWNrQ29uc3RyYWludFNldC5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVRyYWNrQ29uc3RyYWludFNldC5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0wLDAgKzEsNTYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqCisgKi8KKworI2lmbmRlZiBNZWRpYVRyYWNrQ29uc3Ry
YWludFNldF9oCisjZGVmaW5lIE1lZGlhVHJhY2tDb25zdHJhaW50U2V0X2gKKworI2lmIEVOQUJM
RShNRURJQV9TVFJFQU0pCisKKyNpbmNsdWRlICJEaWN0aW9uYXJ5LmgiCisjaW5jbHVkZSAiU2Ny
aXB0V3JhcHBhYmxlLmgiCisjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KKworbmFtZXNwYWNl
IFdlYkNvcmUgeworCitjbGFzcyBNZWRpYVRyYWNrQ29uc3RyYWludFNldCA6IHB1YmxpYyBSZWZD
b3VudGVkPE1lZGlhVHJhY2tDb25zdHJhaW50U2V0PiwgcHVibGljIFNjcmlwdFdyYXBwYWJsZSB7
CitwdWJsaWM6CisgICAgc3RhdGljIFBhc3NSZWZQdHI8TWVkaWFUcmFja0NvbnN0cmFpbnRTZXQ+
IGNyZWF0ZShjb25zdCBEaWN0aW9uYXJ5Jik7CisKKyAgICB2aXJ0dWFsIH5NZWRpYVRyYWNrQ29u
c3RyYWludFNldCgpOworCisgICAgY29uc3QgRGljdGlvbmFyeSYgY29uc3RyYWludHMoKSBjb25z
dCB7IHJldHVybiBtX2NvbnN0cmFpbnRzOyB9CisKK3ByaXZhdGU6CisgICAgZXhwbGljaXQgTWVk
aWFUcmFja0NvbnN0cmFpbnRTZXQoY29uc3QgRGljdGlvbmFyeSYpOworICAgIAorICAgIGNvbnN0
IERpY3Rpb25hcnkmIG1fY29uc3RyYWludHM7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CisKKyNlbmRpZiAvLyBNZWRpYVRyYWNrQ29uc3RyYWludFNldF9oCisKKyNlbmRpZgpJbmRleDog
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVRyYWNrQ29uc3RyYWludFNl
dC5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9N
ZWRpYVRyYWNrQ29uc3RyYWludFNldC5pZGwJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhVHJhY2tDb25zdHJhaW50U2V0LmlkbAkod29ya2lu
ZyBjb3B5KQpAQCAtMCwwICsxLDMzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEdPT0dMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQg
U0hBTEwgR09PR0xFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCitbCisgICAgQ29uZGl0aW9uYWw9TUVESUFfU1RSRUFNLAorICAgIE5v
SW50ZXJmYWNlT2JqZWN0LAorXSBpbnRlcmZhY2UgTWVkaWFUcmFja0NvbnN0cmFpbnRTZXQgewor
ICAgIC8vIEZJWE1FOiBOb3QgaW1wbGVtZW50ZWQuCisgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTEyMTk1NAorfTsKKwpJbmRleDogU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVRyYWNrQ29uc3RyYWludHMuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFUcmFja0NvbnN0cmFp
bnRzLmNwcAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJl
YW0vTWVkaWFUcmFja0NvbnN0cmFpbnRzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDY3
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
LCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIs
IElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisg
KiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisg
KgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2lmIEVOQUJMRShNRURJQV9TVFJFQU0p
CisKKyNpbmNsdWRlICJNZWRpYVRyYWNrQ29uc3RyYWludHMuaCIKKworI2luY2x1ZGUgIk1lZGlh
VHJhY2tDb25zdHJhaW50LmgiCisjaW5jbHVkZSAiTWVkaWFUcmFja0NvbnN0cmFpbnRTZXQuaCIK
KyNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgorCit1c2luZyBuYW1lc3BhY2UgSlNDOworCitu
YW1lc3BhY2UgV2ViQ29yZSB7CisKK1Bhc3NSZWZQdHI8TWVkaWFUcmFja0NvbnN0cmFpbnRzPiBN
ZWRpYVRyYWNrQ29uc3RyYWludHM6OmNyZWF0ZShQYXNzUmVmUHRyPE1lZGlhQ29uc3RyYWludHNJ
bXBsPiBjb25zdHJhaW50cykKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3IE1lZGlhVHJhY2tD
b25zdHJhaW50cyhjb25zdHJhaW50cykpOworfQorCitNZWRpYVRyYWNrQ29uc3RyYWludHM6Ok1l
ZGlhVHJhY2tDb25zdHJhaW50cyhQYXNzUmVmUHRyPE1lZGlhQ29uc3RyYWludHNJbXBsPiBjb25z
dHJhaW50cykKKyAgICA6IG1fY29uc3RyYWludHMoY29uc3RyYWludHMpCit7Cit9CisKK1ZlY3Rv
cjxQYXNzUmVmUHRyPE1lZGlhVHJhY2tDb25zdHJhaW50Pj4gTWVkaWFUcmFja0NvbnN0cmFpbnRz
OjpvcHRpb25hbChib29sKSBjb25zdAoreworICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xMjE5NTQKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVy
biBWZWN0b3I8UGFzc1JlZlB0cjxNZWRpYVRyYWNrQ29uc3RyYWludD4+KCk7Cit9CisKK1Bhc3NS
ZWZQdHI8TWVkaWFUcmFja0NvbnN0cmFpbnRTZXQ+IE1lZGlhVHJhY2tDb25zdHJhaW50czo6bWFu
ZGF0b3J5KGJvb2wpIGNvbnN0Cit7CisgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTEyMTk1NAorICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIG51
bGxwdHI7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhVHJhY2tDb25zdHJhaW50cy5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFUcmFj
a0NvbnN0cmFpbnRzLmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21l
ZGlhc3RyZWFtL01lZGlhVHJhY2tDb25zdHJhaW50cy5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAg
KzEsNjAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01Q
VVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LiAKKyAqCisgKi8KKworI2lmbmRlZiBNZWRpYVRyYWNrQ29uc3RyYWludHNfaAorI2RlZmluZSBN
ZWRpYVRyYWNrQ29uc3RyYWludHNfaAorCisjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKKworI2lu
Y2x1ZGUgIk1lZGlhQ29uc3RyYWludHNJbXBsLmgiCisjaW5jbHVkZSAiU2NyaXB0V3JhcHBhYmxl
LmgiCisjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgewor
CitjbGFzcyBNZWRpYVRyYWNrQ29uc3RyYWludDsKK2NsYXNzIE1lZGlhVHJhY2tDb25zdHJhaW50
U2V0OworCitjbGFzcyBNZWRpYVRyYWNrQ29uc3RyYWludHMgOiBwdWJsaWMgUmVmQ291bnRlZDxN
ZWRpYVRyYWNrQ29uc3RyYWludHM+LCBwdWJsaWMgU2NyaXB0V3JhcHBhYmxlIHsKK3B1YmxpYzoK
KyAgICB2aXJ0dWFsIH5NZWRpYVRyYWNrQ29uc3RyYWludHMoKSB7IH0KKworICAgIHN0YXRpYyBQ
YXNzUmVmUHRyPE1lZGlhVHJhY2tDb25zdHJhaW50cz4gY3JlYXRlKFBhc3NSZWZQdHI8TWVkaWFD
b25zdHJhaW50c0ltcGw+KTsKKworICAgIFZlY3RvcjxQYXNzUmVmUHRyPE1lZGlhVHJhY2tDb25z
dHJhaW50Pj4gb3B0aW9uYWwoYm9vbCkgY29uc3Q7CisgICAgUGFzc1JlZlB0cjxNZWRpYVRyYWNr
Q29uc3RyYWludFNldD4gbWFuZGF0b3J5KGJvb2wpIGNvbnN0OworCitwcml2YXRlOgorICAgIGV4
cGxpY2l0IE1lZGlhVHJhY2tDb25zdHJhaW50cyhQYXNzUmVmUHRyPE1lZGlhQ29uc3RyYWludHNJ
bXBsPik7CisgICAgCisgICAgUmVmUHRyPE1lZGlhQ29uc3RyYWludHNJbXBsPiBtX2NvbnN0cmFp
bnRzOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gTWVkaWFUcmFj
a0NvbnN0cmFpbnRzX2gKKworI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21l
ZGlhc3RyZWFtL01lZGlhVHJhY2tDb25zdHJhaW50cy5pZGwKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVRyYWNrQ29uc3RyYWludHMuaWRsCShy
ZXZpc2lvbiAwKQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVRy
YWNrQ29uc3RyYWludHMuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMzMgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIs
IElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwg
SU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAq
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAq
LworCitbCisgICAgQ29uZGl0aW9uYWw9TUVESUFfU1RSRUFNLAorICAgIE5vSW50ZXJmYWNlT2Jq
ZWN0LAorXSBpbnRlcmZhY2UgTWVkaWFUcmFja0NvbnN0cmFpbnRzIHsKKyAgICByZWFkb25seSBh
dHRyaWJ1dGUgTWVkaWFUcmFja0NvbnN0cmFpbnRTZXQ/IG1hbmRhdG9yeTsKKyAgICByZWFkb25s
eSBhdHRyaWJ1dGUgTWVkaWFUcmFja0NvbnN0cmFpbnRbXT8gb3B0aW9uYWw7Cit9OworCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1VzZXJNZWRpYVJlcXVlc3QuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vVXNlck1l
ZGlhUmVxdWVzdC5jcHAJKHJldmlzaW9uIDE1NzAxNikKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvbWVkaWFzdHJlYW0vVXNlck1lZGlhUmVxdWVzdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE3
Myw3ICsxNzMsNiBAQCB2b2lkIFVzZXJNZWRpYVJlcXVlc3Q6OmNhbGxTdWNjZXNzSGFuZGxlCiAg
ICAgZm9yIChNZWRpYVN0cmVhbVRyYWNrVmVjdG9yOjppdGVyYXRvciBpdGVyID0gdHJhY2tzLmJl
Z2luKCk7IGl0ZXIgIT0gdHJhY2tzLmVuZCgpOyArK2l0ZXIpCiAgICAgICAgICgqaXRlciktPnNv
dXJjZSgpLT5zZXRDb25zdHJhaW50cyhtX3ZpZGVvQ29uc3RyYWludHMpOwogCi0gICAgTWVkaWFT
dHJlYW1DZW50ZXI6OnNoYXJlZCgpLmRpZENyZWF0ZU1lZGlhU3RyZWFtKHN0cmVhbURlc2NyaXB0
b3IuZ2V0KCkpOwogICAgIG1fc3VjY2Vzc0NhbGxiYWNrLT5oYW5kbGVFdmVudChzdHJlYW0uZ2V0
KCkpOwogfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1ZpZGVv
U3RyZWFtVHJhY2suY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVk
aWFzdHJlYW0vVmlkZW9TdHJlYW1UcmFjay5jcHAJKHJldmlzaW9uIDE1NzAxNikKKysrIFNvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vVmlkZW9TdHJlYW1UcmFjay5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTQ3LDExICs0NywyMSBAQCBQYXNzUmVmUHRyPFZpZGVvU3RyZWFtVHJhY2s+
IFZpZGVvU3RyZWFtCiAgICAgcmV0dXJuIHRyYWNrLnJlbGVhc2UoKTsKIH0KIAorUGFzc1JlZlB0
cjxWaWRlb1N0cmVhbVRyYWNrPiBWaWRlb1N0cmVhbVRyYWNrOjpjcmVhdGUoTWVkaWFTdHJlYW1U
cmFjayogdHJhY2spCit7CisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBWaWRlb1N0cmVhbVRyYWNr
KHRyYWNrKSk7Cit9CisKIFZpZGVvU3RyZWFtVHJhY2s6OlZpZGVvU3RyZWFtVHJhY2soU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgTWVkaWFTdHJlYW1Tb3VyY2UqIHNvdXJjZSwgY29u
c3QgRGljdGlvbmFyeSogdmlkZW9Db25zdHJhaW50cykKICAgICA6IE1lZGlhU3RyZWFtVHJhY2so
Y29udGV4dCwgc291cmNlLCB2aWRlb0NvbnN0cmFpbnRzKQogewogfQogCitWaWRlb1N0cmVhbVRy
YWNrOjpWaWRlb1N0cmVhbVRyYWNrKE1lZGlhU3RyZWFtVHJhY2sqIHRyYWNrKQorICAgIDogTWVk
aWFTdHJlYW1UcmFjayh0cmFjaykKK3sKK30KKwogY29uc3QgQXRvbWljU3RyaW5nJiBWaWRlb1N0
cmVhbVRyYWNrOjpraW5kKCkgY29uc3QKIHsKICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8QXRv
bWljU3RyaW5nPiB2aWRlb0tpbmQoInZpZGVvIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9t
TGl0ZXJhbCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1ZpZGVv
U3RyZWFtVHJhY2suaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlh
c3RyZWFtL1ZpZGVvU3RyZWFtVHJhY2suaAkocmV2aXNpb24gMTU3MDM5KQorKysgU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9WaWRlb1N0cmVhbVRyYWNrLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTI5LDggKzI5LDggQEAKICNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQogCiAjaW5jbHVk
ZSAiTWVkaWFTdHJlYW1UcmFjay5oIgotI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KICNpbmNsdWRl
IDx3dGYvUmVmQ291bnRlZC5oPgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCkBAIC00MSw2ICs0MSw3IEBAIGNsYXNzIFZpZGVvU3RyZWFtVHJhY2sgRklO
QUwgOiBwdWJsaWMgTWUKIHB1YmxpYzoKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxWaWRlb1N0cmVh
bVRyYWNrPiBjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIGNvbnN0IERpY3Rpb25hcnkm
KTsKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxWaWRlb1N0cmVhbVRyYWNrPiBjcmVhdGUoU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCosIE1lZGlhU3RyZWFtU291cmNlKik7CisgICAgc3RhdGljIFBhc3NS
ZWZQdHI8VmlkZW9TdHJlYW1UcmFjaz4gY3JlYXRlKE1lZGlhU3RyZWFtVHJhY2sqKTsKIAogICAg
IHZpcnR1YWwgflZpZGVvU3RyZWFtVHJhY2soKSB7IH0KIApAQCAtNDgsNiArNDksNyBAQCBwdWJs
aWM6CiAKIHByaXZhdGU6CiAgICAgVmlkZW9TdHJlYW1UcmFjayhTY3JpcHRFeGVjdXRpb25Db250
ZXh0KiwgTWVkaWFTdHJlYW1Tb3VyY2UqLCBjb25zdCBEaWN0aW9uYXJ5Kik7CisgICAgZXhwbGlj
aXQgVmlkZW9TdHJlYW1UcmFjayhNZWRpYVN0cmVhbVRyYWNrKik7CiB9OwogCiB9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlv
Q29udGV4dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRp
by9BdWRpb0NvbnRleHQuY3BwCShyZXZpc2lvbiAxNTcwMTYpCisrKyBTb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQ29udGV4dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTYzLDYg
KzYzLDcgQEAKICNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQogI2luY2x1ZGUgIk1lZGlhU3RyZWFt
LmgiCiAjaW5jbHVkZSAiTWVkaWFTdHJlYW1BdWRpb0Rlc3RpbmF0aW9uTm9kZS5oIgorI2luY2x1
ZGUgIk1lZGlhU3RyZWFtQXVkaW9Tb3VyY2UuaCIKICNpbmNsdWRlICJNZWRpYVN0cmVhbUF1ZGlv
U291cmNlTm9kZS5oIgogI2VuZGlmCiAKQEAgLTQyMCwxMiArNDIxLDE0IEBAIFBhc3NSZWZQdHI8
TWVkaWFTdHJlYW1BdWRpb1NvdXJjZU5vZGU+IEEKICAgICAvLyBGSVhNRTogZ2V0IGEgcHJvdmlk
ZXIgZm9yIG5vbi1sb2NhbCBNZWRpYVN0cmVhbXMgKGxpa2UgZnJvbSBhIHJlbW90ZSBwZWVyKS4K
ICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGF1ZGlvVHJhY2tzLnNpemUoKTsgKytpKSB7CiAg
ICAgICAgIFJlZlB0cjxNZWRpYVN0cmVhbVRyYWNrPiBsb2NhbEF1ZGlvID0gYXVkaW9UcmFja3Nb
aV07Ci0gICAgICAgIE1lZGlhU3RyZWFtU291cmNlKiBzb3VyY2UgPSBsb2NhbEF1ZGlvLT5zb3Vy
Y2UoKTsKLSAgICAgICAgaWYgKCFzb3VyY2UtPmRldmljZUlkKCkuaXNFbXB0eSgpKSB7Ci0gICAg
ICAgICAgICBkZXN0aW5hdGlvbigpLT5lbmFibGVJbnB1dChzb3VyY2UtPmRldmljZUlkKCkpOwot
ICAgICAgICAgICAgcHJvdmlkZXIgPSBkZXN0aW5hdGlvbigpLT5sb2NhbEF1ZGlvSW5wdXRQcm92
aWRlcigpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KKyAgICAgICAgaWYgKCFsb2Nh
bEF1ZGlvLT5zb3VyY2UoKS0+aXNBdWRpb1N0cmVhbVNvdXJjZSgpKQorICAgICAgICAgICAgY29u
dGludWU7CisKKyAgICAgICAgTWVkaWFTdHJlYW1BdWRpb1NvdXJjZSogc291cmNlID0gc3RhdGlj
X2Nhc3Q8TWVkaWFTdHJlYW1BdWRpb1NvdXJjZSo+KGxvY2FsQXVkaW8tPnNvdXJjZSgpKTsKKyAg
ICAgICAgQVNTRVJUKCFzb3VyY2UtPmRldmljZUlkKCkuaXNFbXB0eSgpKTsKKyAgICAgICAgZGVz
dGluYXRpb24oKS0+ZW5hYmxlSW5wdXQoc291cmNlLT5kZXZpY2VJZCgpKTsKKyAgICAgICAgcHJv
dmlkZXIgPSBkZXN0aW5hdGlvbigpLT5sb2NhbEF1ZGlvSW5wdXRQcm92aWRlcigpOworICAgICAg
ICBicmVhazsKICAgICB9CiAKICAgICBSZWZQdHI8TWVkaWFTdHJlYW1BdWRpb1NvdXJjZU5vZGU+
IG5vZGUgPSBNZWRpYVN0cmVhbUF1ZGlvU291cmNlTm9kZTo6Y3JlYXRlKHRoaXMsIG1lZGlhU3Ry
ZWFtLCBwcm92aWRlcik7CkBAIC03MzMsNyArNzM2LDcgQEAgdm9pZCBBdWRpb0NvbnRleHQ6OmFk
ZERlZmVycmVkRmluaXNoRGVyZQogdm9pZCBBdWRpb0NvbnRleHQ6OmhhbmRsZVByZVJlbmRlclRh
c2tzKCkKIHsKICAgICBBU1NFUlQoaXNBdWRpb1RocmVhZCgpKTsKLSAKKwogICAgIC8vIEF0IHRo
ZSBiZWdpbm5pbmcgb2YgZXZlcnkgcmVuZGVyIHF1YW50dW0sIHRyeSB0byB1cGRhdGUgdGhlIGlu
dGVybmFsIHJlbmRlcmluZyBncmFwaCBzdGF0ZSAoZnJvbSBtYWluIHRocmVhZCBjaGFuZ2VzKS4K
ICAgICAvLyBJdCdzIE9LIGlmIHRoZSB0cnlMb2NrKCkgZmFpbHMsIHdlJ2xsIGp1c3QgdGFrZSBz
bGlnaHRseSBsb25nZXIgdG8gcGljayB1cCB0aGUgY2hhbmdlcy4KICAgICBib29sIG11c3RSZWxl
YXNlTG9jazsKQEAgLTc1Miw4ICs3NTUsOCBAQCB2b2lkIEF1ZGlvQ29udGV4dDo6aGFuZGxlUHJl
UmVuZGVyVGFza3MoCiB2b2lkIEF1ZGlvQ29udGV4dDo6aGFuZGxlUG9zdFJlbmRlclRhc2tzKCkK
IHsKICAgICBBU1NFUlQoaXNBdWRpb1RocmVhZCgpKTsKLSAKLSAgICAvLyBNdXN0IHVzZSBhIHRy
eUxvY2soKSBoZXJlIHRvby4gIERvbid0IHdvcnJ5LCB0aGUgbG9jayB3aWxsIHZlcnkgcmFyZWx5
IGJlIGNvbnRlbmRlZCBhbmQgdGhpcyBtZXRob2QgaXMgY2FsbGVkIGZyZXF1ZW50bHkuCisKKyAg
ICAvLyBNdXN0IHVzZSBhIHRyeUxvY2soKSBoZXJlIHRvby4gRG9uJ3Qgd29ycnksIHRoZSBsb2Nr
IHdpbGwgdmVyeSByYXJlbHkgYmUgY29udGVuZGVkIGFuZCB0aGlzIG1ldGhvZCBpcyBjYWxsZWQg
ZnJlcXVlbnRseS4KICAgICAvLyBUaGUgd29yc3QgdGhhdCBjYW4gaGFwcGVuIGlzIHRoYXQgdGhl
cmUgd2lsbCBiZSBzb21lIG5vZGVzIHdoaWNoIHdpbGwgdGFrZSBzbGlnaHRseSBsb25nZXIgdGhh
biB1c3VhbCB0byBiZSBkZWxldGVkIG9yIHJlbW92ZWQKICAgICAvLyBmcm9tIHRoZSByZW5kZXIg
Z3JhcGggKGluIHdoaWNoIGNhc2UgdGhleSdsbCByZW5kZXIgc2lsZW5jZSkuCiAgICAgYm9vbCBt
dXN0UmVsZWFzZUxvY2s7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL01l
ZGlhU3RyZWFtQXVkaW9EZXN0aW5hdGlvbk5vZGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vTWVkaWFTdHJlYW1BdWRpb0Rlc3RpbmF0aW9uTm9kZS5j
cHAJKHJldmlzaW9uIDE1NzAxNikKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8v
TWVkaWFTdHJlYW1BdWRpb0Rlc3RpbmF0aW9uTm9kZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMx
LDkgKzMxLDggQEAKICNpbmNsdWRlICJBdWRpb0NvbnRleHQuaCIKICNpbmNsdWRlICJBdWRpb05v
ZGVJbnB1dC5oIgogI2luY2x1ZGUgIk1lZGlhU3RyZWFtLmgiCi0jaW5jbHVkZSAiTWVkaWFTdHJl
YW1DZW50ZXIuaCIKKyNpbmNsdWRlICJNZWRpYVN0cmVhbUF1ZGlvU291cmNlLmgiCiAjaW5jbHVk
ZSAiUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyLmgiCi0jaW5jbHVkZSAiVVVJRC5oIgogI2luY2x1
ZGUgPHd0Zi9Mb2NrZXIuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNDksMTIgKzQ4LDEw
IEBAIE1lZGlhU3RyZWFtQXVkaW9EZXN0aW5hdGlvbk5vZGU6Ok1lZGlhU3QKIHsKICAgICBzZXRO
b2RlVHlwZShOb2RlVHlwZU1lZGlhU3RyZWFtQXVkaW9EZXN0aW5hdGlvbik7CiAKLSAgICBtX3Nv
dXJjZSA9IE1lZGlhU3RyZWFtU291cmNlOjpjcmVhdGUoQVNDSUlMaXRlcmFsKCJXZWJBdWRpby0i
KSArIGNyZWF0ZUNhbm9uaWNhbFVVSURTdHJpbmcoKSwgTWVkaWFTdHJlYW1Tb3VyY2U6OkF1ZGlv
LCAiTWVkaWFTdHJlYW1BdWRpb0Rlc3RpbmF0aW9uTm9kZSIsIE1lZGlhU3RyZWFtU291cmNlOjpM
aXZlLCB0cnVlKTsKKyAgICBtX3NvdXJjZSA9IE1lZGlhU3RyZWFtQXVkaW9Tb3VyY2U6OmNyZWF0
ZSgpOwogICAgIE1lZGlhU3RyZWFtU291cmNlVmVjdG9yIGF1ZGlvU291cmNlczsKICAgICBhdWRp
b1NvdXJjZXMuYXBwZW5kKG1fc291cmNlKTsKLSAgICBNZWRpYVN0cmVhbVNvdXJjZVZlY3RvciB2
aWRlb1NvdXJjZXM7Ci0gICAgbV9zdHJlYW0gPSBNZWRpYVN0cmVhbTo6Y3JlYXRlKGNvbnRleHQt
PnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgTWVkaWFTdHJlYW1EZXNjcmlwdG9yOjpjcmVhdGUo
YXVkaW9Tb3VyY2VzLCB2aWRlb1NvdXJjZXMpKTsKLSAgICBNZWRpYVN0cmVhbUNlbnRlcjo6c2hh
cmVkKCkuZGlkQ3JlYXRlTWVkaWFTdHJlYW0obV9zdHJlYW0tPmRlc2NyaXB0b3IoKSk7CisgICAg
bV9zdHJlYW0gPSBNZWRpYVN0cmVhbTo6Y3JlYXRlKGNvbnRleHQtPnNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQoKSwgTWVkaWFTdHJlYW1EZXNjcmlwdG9yOjpjcmVhdGUoYXVkaW9Tb3VyY2VzLCBNZWRp
YVN0cmVhbVNvdXJjZVZlY3RvcigpKSk7CiAKICAgICBtX3NvdXJjZS0+c2V0QXVkaW9Gb3JtYXQo
bnVtYmVyT2ZDaGFubmVscywgY29udGV4dC0+c2FtcGxlUmF0ZSgpKTsKIApJbmRleDogU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9NZWRpYVN0cmVhbUF1ZGlvRGVzdGluYXRpb25Ob2Rl
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9NZWRpYVN0
cmVhbUF1ZGlvRGVzdGluYXRpb25Ob2RlLmgJKHJldmlzaW9uIDE1NzAxNikKKysrIFNvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vTWVkaWFTdHJlYW1BdWRpb0Rlc3RpbmF0aW9uTm9kZS5o
CSh3b3JraW5nIGNvcHkpCkBAIC0zNiw2ICszNiw3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
IGNsYXNzIEF1ZGlvQ29udGV4dDsKK2NsYXNzIE1lZGlhU3RyZWFtQXVkaW9Tb3VyY2U7CiAKIGNs
YXNzIE1lZGlhU3RyZWFtQXVkaW9EZXN0aW5hdGlvbk5vZGUgOiBwdWJsaWMgQXVkaW9CYXNpY0lu
c3BlY3Rvck5vZGUgewogcHVibGljOgpAQCAtNjEsNyArNjIsNyBAQCBwcml2YXRlOgogICAgIHZp
cnR1YWwgYm9vbCBwcm9wYWdhdGVzU2lsZW5jZSgpIGNvbnN0IE9WRVJSSURFIHsgcmV0dXJuIGZh
bHNlOyB9CiAKICAgICBSZWZQdHI8TWVkaWFTdHJlYW0+IG1fc3RyZWFtOwotICAgIFJlZlB0cjxN
ZWRpYVN0cmVhbVNvdXJjZT4gbV9zb3VyY2U7CisgICAgUmVmUHRyPE1lZGlhU3RyZWFtQXVkaW9T
b3VyY2U+IG1fc291cmNlOwogICAgIFJlZlB0cjxBdWRpb0J1cz4gbV9taXhCdXM7CiB9OwogCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL01lZGlhU3RyZWFtQXVkaW9Tb3Vy
Y2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vTWVk
aWFTdHJlYW1BdWRpb1NvdXJjZS5jcHAJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmF1ZGlvL01lZGlhU3RyZWFtQXVkaW9Tb3VyY2UuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0wLDAgKzEsOTggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2lmIEVO
QUJMRShNRURJQV9TVFJFQU0pCisKKyNpbmNsdWRlICJNZWRpYVN0cmVhbUF1ZGlvU291cmNlLmgi
CisKKyNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgorI2luY2x1ZGUgIlVVSUQuaCIKKyNpbmNs
dWRlIDx3dGYvUGFzc093blB0ci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1Bhc3NSZWZQ
dHI8TWVkaWFTdHJlYW1BdWRpb1NvdXJjZT4gTWVkaWFTdHJlYW1BdWRpb1NvdXJjZTo6Y3JlYXRl
KCkKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3IE1lZGlhU3RyZWFtQXVkaW9Tb3VyY2UoKSk7
Cit9CisKK01lZGlhU3RyZWFtQXVkaW9Tb3VyY2U6Ok1lZGlhU3RyZWFtQXVkaW9Tb3VyY2UoKQor
ICAgIDogTWVkaWFTdHJlYW1Tb3VyY2UoQVNDSUlMaXRlcmFsKCJXZWJBdWRpby0iKSArIGNyZWF0
ZUNhbm9uaWNhbFVVSURTdHJpbmcoKSwgTWVkaWFTdHJlYW1Tb3VyY2U6OkF1ZGlvLCAiTWVkaWFT
dHJlYW1BdWRpb0Rlc3RpbmF0aW9uTm9kZSIpCit7Cit9CisKK1Bhc3NSZWZQdHI8TWVkaWFTdHJl
YW1Tb3VyY2VDYXBhYmlsaXRpZXM+IE1lZGlhU3RyZWFtQXVkaW9Tb3VyY2U6OmNhcGFiaWxpdGll
cygpIGNvbnN0Cit7CisgICAgLy8gRklYTUU6IGltcGxlbWVudCB0aGlzLgorICAgIC8vIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjI0MzAKKyAgICBub3RJbXBsZW1l
bnRlZCgpOworICAgIHJldHVybiAwOworfQorCitjb25zdCBNZWRpYVN0cmVhbVNvdXJjZVN0YXRl
cyYgTWVkaWFTdHJlYW1BdWRpb1NvdXJjZTo6c3RhdGVzKCkKK3sKKyAgICAvLyBGSVhNRTogaW1w
bGVtZW50IHRoaXMuCisgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTEyMjQzMAorICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIG1fY3VycmVudFN0
YXRlczsKKyAgICAKK30KKwordm9pZCBNZWRpYVN0cmVhbUF1ZGlvU291cmNlOjphZGRBdWRpb0Nv
bnN1bWVyKFBhc3NSZWZQdHI8QXVkaW9EZXN0aW5hdGlvbkNvbnN1bWVyPiBjb25zdW1lcikKK3sK
KyAgICBNdXRleExvY2tlciBsb2NrZXIobV9hdWRpb0NvbnN1bWVyc0xvY2spOworICAgIG1fYXVk
aW9Db25zdW1lcnMuYXBwZW5kKGNvbnN1bWVyKTsKK30KKworYm9vbCBNZWRpYVN0cmVhbUF1ZGlv
U291cmNlOjpyZW1vdmVBdWRpb0NvbnN1bWVyKEF1ZGlvRGVzdGluYXRpb25Db25zdW1lciogY29u
c3VtZXIpCit7CisgICAgTXV0ZXhMb2NrZXIgbG9ja2VyKG1fYXVkaW9Db25zdW1lcnNMb2NrKTsK
KyAgICBzaXplX3QgcG9zID0gbV9hdWRpb0NvbnN1bWVycy5maW5kKGNvbnN1bWVyKTsKKyAgICBp
ZiAocG9zICE9IG5vdEZvdW5kKSB7CisgICAgICAgIG1fYXVkaW9Db25zdW1lcnMucmVtb3ZlKHBv
cyk7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKyAgICByZXR1cm4gZmFsc2U7Cit9CisK
K3ZvaWQgTWVkaWFTdHJlYW1BdWRpb1NvdXJjZTo6c2V0QXVkaW9Gb3JtYXQoc2l6ZV90IG51bWJl
ck9mQ2hhbm5lbHMsIGZsb2F0IHNhbXBsZVJhdGUpCit7CisgICAgTXV0ZXhMb2NrZXIgbG9ja2Vy
KG1fYXVkaW9Db25zdW1lcnNMb2NrKTsKKyAgICBmb3IgKFZlY3RvcjxSZWZQdHI8QXVkaW9EZXN0
aW5hdGlvbkNvbnN1bWVyPiA+OjppdGVyYXRvciBpdCA9IG1fYXVkaW9Db25zdW1lcnMuYmVnaW4o
KTsgaXQgIT0gbV9hdWRpb0NvbnN1bWVycy5lbmQoKTsgKytpdCkKKyAgICAgICAgKCppdCktPnNl
dEZvcm1hdChudW1iZXJPZkNoYW5uZWxzLCBzYW1wbGVSYXRlKTsKK30KKwordm9pZCBNZWRpYVN0
cmVhbUF1ZGlvU291cmNlOjpjb25zdW1lQXVkaW8oQXVkaW9CdXMqIGJ1cywgc2l6ZV90IG51bWJl
ck9mRnJhbWVzKQoreworICAgIE11dGV4TG9ja2VyIGxvY2tlcihtX2F1ZGlvQ29uc3VtZXJzTG9j
ayk7CisgICAgZm9yIChWZWN0b3I8UmVmUHRyPEF1ZGlvRGVzdGluYXRpb25Db25zdW1lcj4gPjo6
aXRlcmF0b3IgaXQgPSBtX2F1ZGlvQ29uc3VtZXJzLmJlZ2luKCk7IGl0ICE9IG1fYXVkaW9Db25z
dW1lcnMuZW5kKCk7ICsraXQpCisgICAgICAgICgqaXQpLT5jb25zdW1lQXVkaW8oYnVzLCBudW1i
ZXJPZkZyYW1lcyk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVO
QUJMRShNRURJQV9TVFJFQU0pCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlv
L01lZGlhU3RyZWFtQXVkaW9Tb3VyY2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmF1ZGlvL01lZGlhU3RyZWFtQXVkaW9Tb3VyY2UuaAkocmV2aXNpb24gMCkKKysr
IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vTWVkaWFTdHJlYW1BdWRpb1NvdXJjZS5o
CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNzcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFO
RCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgTWVkaWFT
dHJlYW1BdWRpb1NvdXJjZV9oCisjZGVmaW5lIE1lZGlhU3RyZWFtQXVkaW9Tb3VyY2VfaAorCisj
aWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKKworI2luY2x1ZGUgIkF1ZGlvRGVzdGluYXRpb25Db25z
dW1lci5oIgorI2luY2x1ZGUgIk1lZGlhU3RyZWFtU291cmNlLmgiCisjaW5jbHVkZSA8d3RmL1Jl
ZkNvdW50ZWQuaD4KKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisjaW5jbHVkZSA8d3RmL3RleHQv
V1RGU3RyaW5nLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgQXVkaW9CdXM7Citj
bGFzcyBNZWRpYVN0cmVhbVNvdXJjZUNhcGFiaWxpdGllczsKKworY2xhc3MgTWVkaWFTdHJlYW1B
dWRpb1NvdXJjZSA6IHB1YmxpYyBNZWRpYVN0cmVhbVNvdXJjZSB7CitwdWJsaWM6CisgICAgc3Rh
dGljIFBhc3NSZWZQdHI8TWVkaWFTdHJlYW1BdWRpb1NvdXJjZT4gY3JlYXRlKCk7CisKKyAgICB+
TWVkaWFTdHJlYW1BdWRpb1NvdXJjZSgpIHsgfQorCisgICAgdmlydHVhbCBib29sIGlzQXVkaW9T
dHJlYW1Tb3VyY2UoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9CisgICAgdmlydHVhbCBib29sIHVz
ZUlERm9yVHJhY2tJRCgpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KKworICAgIHZpcnR1YWwgUGFz
c1JlZlB0cjxNZWRpYVN0cmVhbVNvdXJjZUNhcGFiaWxpdGllcz4gY2FwYWJpbGl0aWVzKCkgY29u
c3Q7CisgICAgdmlydHVhbCBjb25zdCBNZWRpYVN0cmVhbVNvdXJjZVN0YXRlcyYgc3RhdGVzKCk7
CisgICAgCisgICAgY29uc3QgU3RyaW5nJiBkZXZpY2VJZCgpIGNvbnN0IHsgcmV0dXJuIG1fZGV2
aWNlSWQ7IH0KKyAgICB2b2lkIHNldERldmljZUlkKGNvbnN0IFN0cmluZyYgZGV2aWNlSWQpIHsg
bV9kZXZpY2VJZCA9IGRldmljZUlkOyB9CisKKyAgICB2b2lkIHNldEF1ZGlvRm9ybWF0KHNpemVf
dCBudW1iZXJPZkNoYW5uZWxzLCBmbG9hdCBzYW1wbGVSYXRlKTsKKyAgICB2b2lkIGNvbnN1bWVB
dWRpbyhBdWRpb0J1cyosIHNpemVfdCBudW1iZXJPZkZyYW1lcyk7CisKKyAgICB2b2lkIGFkZEF1
ZGlvQ29uc3VtZXIoUGFzc1JlZlB0cjxBdWRpb0Rlc3RpbmF0aW9uQ29uc3VtZXI+KTsKKyAgICBi
b29sIHJlbW92ZUF1ZGlvQ29uc3VtZXIoQXVkaW9EZXN0aW5hdGlvbkNvbnN1bWVyKik7CisgICAg
Y29uc3QgVmVjdG9yPFJlZlB0cjxBdWRpb0Rlc3RpbmF0aW9uQ29uc3VtZXI+PiYgYXVkaW9Db25z
dW1lcnMoKSBjb25zdCB7IHJldHVybiBtX2F1ZGlvQ29uc3VtZXJzOyB9CisKK3ByaXZhdGU6Cisg
ICAgTWVkaWFTdHJlYW1BdWRpb1NvdXJjZSgpOworCisgICAgU3RyaW5nIG1fZGV2aWNlSWQ7Cisg
ICAgTXV0ZXggbV9hdWRpb0NvbnN1bWVyc0xvY2s7CisgICAgVmVjdG9yPFJlZlB0cjxBdWRpb0Rl
c3RpbmF0aW9uQ29uc3VtZXI+PiBtX2F1ZGlvQ29uc3VtZXJzOworICAgIE1lZGlhU3RyZWFtU291
cmNlU3RhdGVzIG1fY3VycmVudFN0YXRlczsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
KworI2VuZGlmIC8vIEVOQUJMRShNRURJQV9TVFJFQU0pCisKKyNlbmRpZiAvLyBNZWRpYVN0cmVh
bUF1ZGlvU291cmNlX2gKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDE1NzAxNikKKysrIFNvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtODQs
NiArODQsMzAgQEAKIAkJMDcwMzM0RDcxNDU5RkZENTAwOEQ4RDQ1IC8qIFRyYWNrQmFzZS5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDcwMzM0RDYxNDU5
RkZENTAwOEQ4RDQ1IC8qIFRyYWNrQmFzZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CiAJCTA3MDMzNEQ5MTQ1QTAwNkYwMDhEOEQ0NSAvKiBUcmFja0Jh
c2UuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDcw
MzM0RDgxNDVBMDA2RjAwOEQ4RDQ1IC8qIFRyYWNrQmFzZS5jcHAgKi87IH07CiAJCTA3MDMzNEU5
MTQ1QTFGMzYwMDhEOEQ0NSAvKiBKU1RyYWNrQ3VzdG9tLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3MDMzNEU4MTQ1QTFGMzUwMDhEOEQ0NSAvKiBK
U1RyYWNrQ3VzdG9tLmNwcCAqLzsgfTsKKwkJMDcwNTg0RkQxN0Y5RDZERjAwNUYyQkNCIC8qIE1l
ZGlhU3RyZWFtU291cmNlQ2FwYWJpbGl0aWVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAwNzA1ODRGQjE3RjlENkRGMDA1RjJCQ0IgLyogTWVkaWFTdHJl
YW1Tb3VyY2VDYXBhYmlsaXRpZXMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OworCQkwNzA1ODRGRjE3RjlGMDVFMDA1RjJCQ0IgLyogQ2FwYWJpbGl0eVJh
bmdlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3
MDU4NEZFMTdGOUYwNUUwMDVGMkJDQiAvKiBDYXBhYmlsaXR5UmFuZ2UuY3BwICovOyB9OworCQkw
NzA1ODUwMjE3RkExMEQwMDA1RjJCQ0IgLyogSlNBbGxWaWRlb0NhcGFiaWxpdGllcy5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwNzA1ODUwMDE3RkEx
MEQwMDA1RjJCQ0IgLyogSlNBbGxWaWRlb0NhcGFiaWxpdGllcy5jcHAgKi87IH07CisJCTA3MDU4
NTAzMTdGQTEwRDAwMDVGMkJDQiAvKiBKU0FsbFZpZGVvQ2FwYWJpbGl0aWVzLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwNzA1ODUwMTE3RkExMEQwMDA1
RjJCQ0IgLyogSlNBbGxWaWRlb0NhcGFiaWxpdGllcy5oICovOyB9OworCQkwNzA1ODUwODE3RkE0
Njg5MDA1RjJCQ0IgLyogQWxsQXVkaW9DYXBhYmlsaXRpZXMuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3MDU4NTA1MTdGQTQ2ODkwMDVGMkJDQiAvKiBB
bGxBdWRpb0NhcGFiaWxpdGllcy5oICovOyB9OworCQkwNzA1ODUwQjE3RkE0ODI3MDA1RjJCQ0Ig
LyogTWVkaWFTdHJlYW1DYXBhYmlsaXRpZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDA3MDU4NTBBMTdGQTQ4MjcwMDVGMkJDQiAvKiBNZWRpYVN0cmVh
bUNhcGFiaWxpdGllcy5oICovOyB9OworCQkwNzA1ODUxMjE3RkE3MTA3MDA1RjJCQ0IgLyogSlNN
ZWRpYVN0cmVhbUNhcGFiaWxpdGllcy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAwNzA1ODUxMDE3RkE3MTA3MDA1RjJCQ0IgLyogSlNNZWRpYVN0cmVh
bUNhcGFiaWxpdGllcy5jcHAgKi87IH07CisJCTA3MDU4NTEzMTdGQTcxMDcwMDVGMkJDQiAvKiBK
U01lZGlhU3RyZWFtQ2FwYWJpbGl0aWVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAwNzA1ODUxMTE3RkE3MTA3MDA1RjJCQ0IgLyogSlNNZWRpYVN0cmVh
bUNhcGFiaWxpdGllcy5oICovOyB9OworCQkwNzA1ODUxNTE3RkIwRUVBMDA1RjJCQ0IgLyogTWVk
aWFTdHJlYW1DYXBhYmlsaXRpZXMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMDcwNTg1MTQxN0ZCMEUyQzAwNUYyQkNCIC8qIE1lZGlhU3RyZWFtQ2Fw
YWJpbGl0aWVzLmNwcCAqLzsgfTsKKwkJMDcwNTg1MTcxN0ZCNDBFOTAwNUYyQkNCIC8qIEpTTWVk
aWFTdHJlYW1DYXBhYmlsaXRpZXNDdXN0b20uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMDcwNTg1MTYxN0ZCNDBFOTAwNUYyQkNCIC8qIEpTTWVkaWFT
dHJlYW1DYXBhYmlsaXRpZXNDdXN0b20uY3BwICovOyB9OworCQkwNzA1ODUxQTE3RkI0NEI0MDA1
RjJCQ0IgLyogSlNBbGxBdWRpb0NhcGFiaWxpdGllcy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwNzA1ODUxODE3RkI0NEI0MDA1RjJCQ0IgLyogSlNB
bGxBdWRpb0NhcGFiaWxpdGllcy5jcHAgKi87IH07CisJCTA3MDU4NTFCMTdGQjQ0QjQwMDVGMkJD
QiAvKiBKU0FsbEF1ZGlvQ2FwYWJpbGl0aWVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAwNzA1ODUxOTE3RkI0NEI0MDA1RjJCQ0IgLyogSlNBbGxBdWRp
b0NhcGFiaWxpdGllcy5oICovOyB9OworCQkwNzA1ODUyMTE3RkRDMTQwMDA1RjJCQ0IgLyogTWVk
aWFUcmFja0NvbnN0cmFpbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDA3MDU4NTFEMTdGREMxNDAwMDVGMkJDQiAvKiBNZWRpYVRyYWNrQ29uc3RyYWlu
dC5oICovOyB9OworCQkwNzA1ODUyMzE3RkRDMTQwMDA1RjJCQ0IgLyogTWVkaWFUcmFja0NvbnN0
cmFpbnRzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDA3MDU4NTFGMTdGREMxNDAwMDVGMkJDQiAvKiBNZWRpYVRyYWNrQ29uc3RyYWludHMuY3BwICov
OyB9OworCQkwNzA1ODUyNDE3RkRDMTQwMDA1RjJCQ0IgLyogTWVkaWFUcmFja0NvbnN0cmFpbnRz
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwNzA1ODUy
MDE3RkRDMTQwMDA1RjJCQ0IgLyogTWVkaWFUcmFja0NvbnN0cmFpbnRzLmggKi87IH07CisJCTA3
MDU4NTI5MTdGREUwMkMwMDVGMkJDQiAvKiBNZWRpYVRyYWNrQ29uc3RyYWludFNldC5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDcwNTg1MjYxN0ZERTAy
QjAwNUYyQkNCIC8qIE1lZGlhVHJhY2tDb25zdHJhaW50U2V0LmggKi87IH07CisJCTA3MDU4NTMx
MTdGREU2RDkwMDVGMkJDQiAvKiBKU01lZGlhVHJhY2tDb25zdHJhaW50LmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3MDU4NTJCMTdGREU2RDkwMDVG
MkJDQiAvKiBKU01lZGlhVHJhY2tDb25zdHJhaW50LmNwcCAqLzsgfTsKKwkJMDcwNTg1MzIxN0ZE
RTZEOTAwNUYyQkNCIC8qIEpTTWVkaWFUcmFja0NvbnN0cmFpbnQuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3MDU4NTJDMTdGREU2RDkwMDVGMkJDQiAv
KiBKU01lZGlhVHJhY2tDb25zdHJhaW50LmggKi87IH07CisJCTA3MDU4NTMzMTdGREU2RDkwMDVG
MkJDQiAvKiBKU01lZGlhVHJhY2tDb25zdHJhaW50cy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwNzA1ODUyRDE3RkRFNkQ5MDA1RjJCQ0IgLyogSlNN
ZWRpYVRyYWNrQ29uc3RyYWludHMuY3BwICovOyB9OworCQkwNzA1ODUzNDE3RkRFNkQ5MDA1RjJC
Q0IgLyogSlNNZWRpYVRyYWNrQ29uc3RyYWludHMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3MDU4NTJFMTdGREU2RDkwMDVGMkJDQiAvKiBKU01lZGlh
VHJhY2tDb25zdHJhaW50cy5oICovOyB9OworCQkwNzA1ODUzNTE3RkRFNkQ5MDA1RjJCQ0IgLyog
SlNNZWRpYVRyYWNrQ29uc3RyYWludFNldC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAwNzA1ODUyRjE3RkRFNkQ5MDA1RjJCQ0IgLyogSlNNZWRpYVRy
YWNrQ29uc3RyYWludFNldC5jcHAgKi87IH07CisJCTA3MDU4NTM2MTdGREU2RDkwMDVGMkJDQiAv
KiBKU01lZGlhVHJhY2tDb25zdHJhaW50U2V0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAwNzA1ODUzMDE3RkRFNkQ5MDA1RjJCQ0IgLyogSlNNZWRpYVRy
YWNrQ29uc3RyYWludFNldC5oICovOyB9OworCQkwNzA1ODUzODE3RkUwNDRGMDA1RjJCQ0IgLyog
TWVkaWFUcmFja0NvbnN0cmFpbnRTZXQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMDcwNTg1MzcxN0ZFMDQ0RjAwNUYyQkNCIC8qIE1lZGlhVHJhY2tD
b25zdHJhaW50U2V0LmNwcCAqLzsgfTsKKwkJMDcwNTg1M0ExN0ZFMDc3MDAwNUYyQkNCIC8qIE1l
ZGlhVHJhY2tDb25zdHJhaW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDA3MDU4NTM5MTdGRTA3NzAwMDVGMkJDQiAvKiBNZWRpYVRyYWNrQ29uc3Ry
YWludC5jcHAgKi87IH07CiAJCTA3MDc1NjhCMTQyMjYyRDYwMDQxNDE2MSAvKiBIVE1MVHJhY2tF
bGVtZW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDA3MDc1Njg4MTQyMjYyRDYwMDQxNDE2MSAvKiBIVE1MVHJhY2tFbGVtZW50LmNwcCAqLzsgfTsK
IAkJMDcwNzU2OEMxNDIyNjJENjAwNDE0MTYxIC8qIEhUTUxUcmFja0VsZW1lbnQuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3MDc1Njg5MTQyMjYyRDYw
MDQxNDE2MSAvKiBIVE1MVHJhY2tFbGVtZW50LmggKi87IH07CiAJCTA3MDc1Njk0MTQyMjY2OEQw
MDQxNDE2MSAvKiBKU1RleHRUcmFjay5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAwNzA3NTY4RTE0MjI2NjhDMDA0MTQxNjEgLyogSlNUZXh0VHJhY2su
Y3BwICovOyB9OwpAQCAtMTE5LDYgKzE0Myw5IEBACiAJCTA3MzVFRTZBMEY0MEM1RTQwMDRBMjYw
NCAvKiBNZWRpYVBsYXllclByb3h5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAwNzM1RUU2OTBGNDBDNUU0MDA0QTI2MDQgLyogTWVkaWFQbGF5ZXJQcm94
eS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTA3
MzY3RERGMTcyQ0E2N0YwMEQ4NjFCOSAvKiBJbmJhbmRUZXh0VHJhY2tQcml2YXRlTGVnYWN5QVZG
T2JqQy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDcz
NjdEREQxNzJDQTY3RjAwRDg2MUI5IC8qIEluYmFuZFRleHRUcmFja1ByaXZhdGVMZWdhY3lBVkZP
YmpDLmggKi87IH07CiAJCTA3MzY3REUwMTcyQ0E2ODIwMEQ4NjFCOSAvKiBJbmJhbmRUZXh0VHJh
Y2tQcml2YXRlTGVnYWN5QVZGT2JqQy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDA3MzY3RERFMTcyQ0E2N0YwMEQ4NjFCOSAvKiBJbmJhbmRUZXh0VHJh
Y2tQcml2YXRlTGVnYWN5QVZGT2JqQy5tbSAqLzsgfTsKKwkJMDczQUI0QjMxN0Y4QkFDQTAwNkUw
RDZGIC8qIEFsbFZpZGVvQ2FwYWJpbGl0aWVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAwNzNBQjRCMDE3RjhCQUNBMDA2RTBENkYgLyogQWxsVmlkZW9D
YXBhYmlsaXRpZXMuaCAqLzsgfTsKKwkJMDczQUI0QjcxN0Y5MkVDRjAwNkUwRDZGIC8qIEpTQ2Fw
YWJpbGl0eVJhbmdlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDA3M0FCNEI1MTdGOTJFQ0YwMDZFMEQ2RiAvKiBKU0NhcGFiaWxpdHlSYW5nZS5jcHAg
Ki87IH07CisJCTA3M0FCNEI4MTdGOTJFQ0YwMDZFMEQ2RiAvKiBKU0NhcGFiaWxpdHlSYW5nZS5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDczQUI0QjYx
N0Y5MkVDRjAwNkUwRDZGIC8qIEpTQ2FwYWJpbGl0eVJhbmdlLmggKi87IH07CiAJCTA3M0JFMzQw
MTdEMTdFMDEwMDJCRDQzMSAvKiBKU05hdmlnYXRvck1lZGlhU3RyZWFtLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3M0JFMzNFMTdEMTdFMDEwMDJC
RDQzMSAvKiBKU05hdmlnYXRvck1lZGlhU3RyZWFtLmNwcCAqLzsgfTsKIAkJMDczQkUzNDExN0Qx
N0UwMTAwMkJENDMxIC8qIEpTTmF2aWdhdG9yTWVkaWFTdHJlYW0uaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3M0JFMzNGMTdEMTdFMDEwMDJCRDQzMSAv
KiBKU05hdmlnYXRvck1lZGlhU3RyZWFtLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKIAkJMDczQkUzNDgxN0QxN0U3QTAwMkJENDMxIC8qIEpTTmF2aWdh
dG9yVXNlck1lZGlhRXJyb3IuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMDczQkUzNDIxN0QxN0U3QTAwMkJENDMxIC8qIEpTTmF2aWdhdG9yVXNlck1l
ZGlhRXJyb3IuY3BwICovOyB9OwpAQCAtMTQ1LDYgKzE3Miw4IEBACiAJCTA3Njk3MDg2MTQ2M0FE
ODcwMEY1MDJDRiAvKiBUZXh0VHJhY2tMaXN0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3Njk3MDg0MTQ2M0FEODcwMEY1MDJDRiAvKiBUZXh0VHJh
Y2tMaXN0LmNwcCAqLzsgfTsKIAkJMDc2OTcwODcxNDYzQUQ4NzAwRjUwMkNGIC8qIFRleHRUcmFj
a0xpc3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3
Njk3MDg1MTQ2M0FEODcwMEY1MDJDRiAvKiBUZXh0VHJhY2tMaXN0LmggKi87IH07CiAJCTA3NkYw
RDBFMTJCODE5MjcwMEMyNkFBNCAvKiBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb24uaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3NkYwRDBBMTJC
ODE5MjcwMEMyNkFBNCAvKiBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb24uaCAqLzsgfTsK
KwkJMDc4MzIyODQxODAxM0VEODAwOTk5RTBDIC8qIE1lZGlhU3RyZWFtQXVkaW9Tb3VyY2UuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDc4MzIyODIx
ODAxM0VENzAwOTk5RTBDIC8qIE1lZGlhU3RyZWFtQXVkaW9Tb3VyY2UuY3BwICovOyB9OworCQkw
NzgzMjI4NTE4MDEzRUQ4MDA5OTlFMEMgLyogTWVkaWFTdHJlYW1BdWRpb1NvdXJjZS5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDc4MzIyODMxODAxM0VE
ODAwOTk5RTBDIC8qIE1lZGlhU3RyZWFtQXVkaW9Tb3VyY2UuaCAqLzsgfTsKIAkJMDc4NDYzNDIx
NDVCMTUxQTAwQTU4REYxIC8qIEpTVHJhY2tFdmVudC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwNzg0NjM0MDE0NUIxNTFBMDBBNThERjEgLyogSlNU
cmFja0V2ZW50LmNwcCAqLzsgfTsKIAkJMDc4NDYzNDMxNDVCMTUxQTAwQTU4REYxIC8qIEpTVHJh
Y2tFdmVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MDc4NDYzNDExNDVCMTUxQTAwQTU4REYxIC8qIEpTVHJhY2tFdmVudC5oICovOyB9OwogCQkwNzg0
NjM4NTE0NUIxQjhFMDBBNThERjEgLyogSlNUcmFja0N1c3RvbS5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDc4NDYzODQxNDVCMUI4RTAwQTU4REYxIC8q
IEpTVHJhY2tDdXN0b20uaCAqLzsgfTsKQEAgLTI3Niw2ICszMDUsMTIgQEAKIAkJMDdDNTlCNjAx
N0Y0QjIwODAwMEZCQ0JCIC8qIEpTVmlkZW9TdHJlYW1UcmFjay5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDdDNTlCNUMxN0Y0QjIwODAwMEZCQ0JCIC8q
IEpTVmlkZW9TdHJlYW1UcmFjay5oICovOyB9OwogCQkwN0M1OUI2MzE3RjREMUJGMDAwRkJDQkIg
LyogTW9ja01lZGlhU3RyZWFtQ2VudGVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDA3QzU5QjYxMTdGNENGODcwMDBGQkNCQiAvKiBNb2NrTWVkaWFT
dHJlYW1DZW50ZXIuY3BwICovOyB9OwogCQkwN0M1OUI2NDE3RjREMUM0MDAwRkJDQkIgLyogTW9j
a01lZGlhU3RyZWFtQ2VudGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAwN0M1OUI2MjE3RjRDRjg3MDAwRkJDQkIgLyogTW9ja01lZGlhU3RyZWFtQ2Vu
dGVyLmggKi87IH07CisJCTA3QzU5QjY4MTdGNzg0QkEwMDBGQkNCQiAvKiBNZWRpYVNvdXJjZVN0
YXRlcy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAw
N0M1OUI2NTE3Rjc4NEJBMDAwRkJDQkIgLyogTWVkaWFTb3VyY2VTdGF0ZXMuY3BwICovOyB9Owor
CQkwN0M1OUI2OTE3Rjc4NEJBMDAwRkJDQkIgLyogTWVkaWFTb3VyY2VTdGF0ZXMuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3QzU5QjY2MTdGNzg0QkEw
MDBGQkNCQiAvKiBNZWRpYVNvdXJjZVN0YXRlcy5oICovOyB9OworCQkwN0M1OUI2RTE3Rjc5NEY2
MDAwRkJDQkIgLyogSlNNZWRpYVNvdXJjZVN0YXRlc0N1c3RvbS5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwN0M1OUI2RDE3Rjc5NEY2MDAwRkJDQkIg
LyogSlNNZWRpYVNvdXJjZVN0YXRlc0N1c3RvbS5jcHAgKi87IH07CisJCTA3QzU5QjcxMTdGNzlD
N0MwMDBGQkNCQiAvKiBKU01lZGlhU291cmNlU3RhdGVzLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3QzU5QjZGMTdGNzlDN0MwMDBGQkNCQiAvKiBK
U01lZGlhU291cmNlU3RhdGVzLmNwcCAqLzsgfTsKKwkJMDdDNTlCNzIxN0Y3OUM3QzAwMEZCQ0JC
IC8qIEpTTWVkaWFTb3VyY2VTdGF0ZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDA3QzU5QjcwMTdGNzlDN0MwMDBGQkNCQiAvKiBKU01lZGlhU291cmNl
U3RhdGVzLmggKi87IH07CisJCTA3QzU5Qjc2MTdGN0QwREIwMDBGQkNCQiAvKiBDYXBhYmlsaXR5
UmFuZ2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3
QzU5Qjc0MTdGN0QwOUQwMDBGQkNCQiAvKiBDYXBhYmlsaXR5UmFuZ2UuaCAqLzsgfTsKIAkJMDdD
RTc3RDUxNjcxMkE2QTAwQzU1QTQ3IC8qIEluYmFuZFRleHRUcmFja1ByaXZhdGVDbGllbnQuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3Q0U3N0Q0MTY3
MTJBNkEwMEM1NUE0NyAvKiBJbmJhbmRUZXh0VHJhY2tQcml2YXRlQ2xpZW50LmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMDdEQzVGRDQxN0QzRUVF
OTAwOTlGODkwIC8qIEpTUlRDU3RhdHNSZXNwb25zZUN1c3RvbS5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwN0RDNUZEMzE3RDNFRUU5MDA5OUY4OTAg
LyogSlNSVENTdGF0c1Jlc3BvbnNlQ3VzdG9tLmNwcCAqLzsgfTsKIAkJMDdFMTE2QjExNDg5QzlB
MTAwRUM1QUNFIC8qIEpTVGV4dFRyYWNrQ3VzdG9tLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3RTExNkIwMTQ4OUM5QTEwMEVDNUFDRSAvKiBKU1Rl
eHRUcmFja0N1c3RvbS5jcHAgKi87IH07CkBAIC02NDE0LDYgKzY0NDksMzUgQEAKIAkJMDcwMzM0
RDYxNDU5RkZENTAwOEQ4RDQ1IC8qIFRyYWNrQmFzZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBUcmFja0Jhc2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDcw
MzM0RDgxNDVBMDA2RjAwOEQ4RDQ1IC8qIFRyYWNrQmFzZS5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBUcmFja0Jhc2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQkwNzAzMzRFODE0NUExRjM1MDA4RDhENDUgLyogSlNUcmFja0N1c3RvbS5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU1RyYWNrQ3VzdG9tLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMDcwNTg0RkIxN0Y5RDZERjAwNUYyQkNCIC8qIE1l
ZGlhU3RyZWFtU291cmNlQ2FwYWJpbGl0aWVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IE1lZGlhU3RyZWFtU291cmNlQ2FwYWJpbGl0aWVzLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCTA3MDU4NEZFMTdGOUYwNUUwMDVGMkJDQiAvKiBDYXBhYmlsaXR5UmFuZ2Uu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ2FwYWJpbGl0eVJhbmdl
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMDcwNTg1MDAxN0ZBMTBEMDAwNUYy
QkNCIC8qIEpTQWxsVmlkZW9DYXBhYmlsaXRpZXMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gSlNBbGxWaWRlb0NhcGFiaWxpdGllcy5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTA3MDU4NTAxMTdGQTEwRDAwMDVGMkJDQiAvKiBKU0FsbFZpZGVvQ2Fw
YWJpbGl0aWVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTQWxsVmlkZW9D
YXBhYmlsaXRpZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMDcwNTg1MDUxN0ZB
NDY4OTAwNUYyQkNCIC8qIEFsbEF1ZGlvQ2FwYWJpbGl0aWVzLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IEFsbEF1ZGlvQ2FwYWJpbGl0aWVzLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCTA3MDU4NTA2MTdGQTQ2ODkwMDVGMkJDQiAvKiBBbGxBdWRpb0NhcGFiaWxp
dGllcy5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gQWxsQXVkaW9DYXBhYmlsaXRpZXMuaWRs
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwNzA1ODUwQTE3RkE0ODI3MDA1RjJCQ0Ig
LyogTWVkaWFTdHJlYW1DYXBhYmlsaXRpZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gTWVkaWFTdHJlYW1DYXBhYmlsaXRpZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJMDcwNTg1MEUxN0ZBNkZCMTAwNUYyQkNCIC8qIE1lZGlhU3RyZWFtQ2FwYWJpbGl0aWVz
LmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBNZWRpYVN0cmVhbUNhcGFiaWxpdGllcy5pZGw7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTA3MDU4NTEwMTdGQTcxMDcwMDVGMkJDQiAv
KiBKU01lZGlhU3RyZWFtQ2FwYWJpbGl0aWVzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IEpTTWVkaWFTdHJlYW1DYXBhYmlsaXRpZXMuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQkwNzA1ODUxMTE3RkE3MTA3MDA1RjJCQ0IgLyogSlNNZWRpYVN0cmVh
bUNhcGFiaWxpdGllcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU01lZGlh
U3RyZWFtQ2FwYWJpbGl0aWVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTA3MDU4
NTE0MTdGQjBFMkMwMDVGMkJDQiAvKiBNZWRpYVN0cmVhbUNhcGFiaWxpdGllcy5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBNZWRpYVN0cmVhbUNhcGFiaWxpdGllcy5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTA3MDU4NTE2MTdGQjQwRTkwMDVGMkJD
QiAvKiBKU01lZGlhU3RyZWFtQ2FwYWJpbGl0aWVzQ3VzdG9tLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTTWVkaWFTdHJlYW1DYXBhYmlsaXRpZXNDdXN0b20uY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwNzA1ODUxODE3RkI0NEI0MDA1RjJCQ0Ig
LyogSlNBbGxBdWRpb0NhcGFiaWxpdGllcy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBKU0FsbEF1ZGlvQ2FwYWJpbGl0aWVzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJMDcwNTg1MTkxN0ZCNDRCNDAwNUYyQkNCIC8qIEpTQWxsQXVkaW9DYXBhYmls
aXRpZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNBbGxBdWRpb0NhcGFi
aWxpdGllcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwNzA1ODUxQzE3RkRCMjND
MDA1RjJCQ0IgLyogTWVkaWFUcmFja0NvbnN0cmFpbnRzLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBNZWRpYVRyYWNrQ29u
c3RyYWludHMuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwNzA1ODUxRDE3RkRD
MTQwMDA1RjJCQ0IgLyogTWVkaWFUcmFja0NvbnN0cmFpbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gTWVkaWFUcmFja0NvbnN0cmFpbnQuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJMDcwNTg1MUUxN0ZEQzE0MDAwNUYyQkNCIC8qIE1lZGlhVHJhY2tDb25zdHJh
aW50LmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBNZWRpYVRyYWNrQ29uc3RyYWludC5pZGw7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTA3MDU4NTFGMTdGREMxNDAwMDVGMkJDQiAv
KiBNZWRpYVRyYWNrQ29uc3RyYWludHMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gTWVkaWFUcmFja0NvbnN0cmFpbnRzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJMDcwNTg1MjAxN0ZEQzE0MDAwNUYyQkNCIC8qIE1lZGlhVHJhY2tDb25zdHJhaW50
cy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNZWRpYVRyYWNrQ29uc3RyYWlu
dHMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMDcwNTg1MjYxN0ZERTAyQjAwNUYy
QkNCIC8qIE1lZGlhVHJhY2tDb25zdHJhaW50U2V0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IE1lZGlhVHJhY2tDb25zdHJhaW50U2V0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTA3MDU4NTI3MTdGREUwMkIwMDVGMkJDQiAvKiBNZWRpYVRyYWNrQ29uc3RyYWlu
dFNldC5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gTWVkaWFUcmFja0NvbnN0cmFpbnRTZXQu
aWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwNzA1ODUyQjE3RkRFNkQ5MDA1RjJC
Q0IgLyogSlNNZWRpYVRyYWNrQ29uc3RyYWludC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBKU01lZGlhVHJhY2tDb25zdHJhaW50LmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJMDcwNTg1MkMxN0ZERTZEOTAwNUYyQkNCIC8qIEpTTWVkaWFUcmFja0Nv
bnN0cmFpbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNNZWRpYVRyYWNr
Q29uc3RyYWludC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwNzA1ODUyRDE3RkRF
NkQ5MDA1RjJCQ0IgLyogSlNNZWRpYVRyYWNrQ29uc3RyYWludHMuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNNZWRpYVRyYWNrQ29uc3RyYWludHMuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwNzA1ODUyRTE3RkRFNkQ5MDA1RjJCQ0IgLyogSlNN
ZWRpYVRyYWNrQ29uc3RyYWludHMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
SlNNZWRpYVRyYWNrQ29uc3RyYWludHMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
MDcwNTg1MkYxN0ZERTZEOTAwNUYyQkNCIC8qIEpTTWVkaWFUcmFja0NvbnN0cmFpbnRTZXQuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNNZWRpYVRyYWNrQ29uc3Ry
YWludFNldC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTA3MDU4NTMwMTdGREU2
RDkwMDVGMkJDQiAvKiBKU01lZGlhVHJhY2tDb25zdHJhaW50U2V0LmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IEpTTWVkaWFUcmFja0NvbnN0cmFpbnRTZXQuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMDcwNTg1MzcxN0ZFMDQ0RjAwNUYyQkNCIC8qIE1lZGlhVHJh
Y2tDb25zdHJhaW50U2V0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IE1lZGlhVHJhY2tDb25zdHJhaW50U2V0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJMDcwNTg1MzkxN0ZFMDc3MDAwNUYyQkNCIC8qIE1lZGlhVHJhY2tDb25zdHJhaW50LmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE1lZGlhVHJhY2tDb25zdHJhaW50
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDcwNzU2ODgxNDIyNjJENjAwNDE0
MTYxIC8qIEhUTUxUcmFja0VsZW1lbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gSFRNTFRyYWNrRWxlbWVudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTA3MDc1Njg5MTQyMjYyRDYwMDQxNDE2MSAvKiBIVE1MVHJhY2tFbGVtZW50LmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEhUTUxUcmFja0VsZW1lbnQuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDcwNzU2OEExNDIyNjJENjAwNDE0MTYxIC8qIEhUTUxUcmFj
a0VsZW1lbnQuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IEhUTUxUcmFja0VsZW1lbnQuaWRs
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNjU0OSw2ICs2NjEzLDkgQEAKIAkJMDcz
NUVFNjkwRjQwQzVFNDAwNEEyNjA0IC8qIE1lZGlhUGxheWVyUHJveHkuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gTWVkaWFQbGF5ZXJQcm94eS5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQkwNzM2N0RERDE3MkNBNjdGMDBEODYxQjkgLyogSW5iYW5kVGV4dFRyYWNr
UHJpdmF0ZUxlZ2FjeUFWRk9iakMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0g
SW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUxlZ2FjeUFWRk9iakMuaDsgcGF0aCA9IG9iamMvSW5iYW5k
VGV4dFRyYWNrUHJpdmF0ZUxlZ2FjeUFWRk9iakMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJMDczNjdEREUxNzJDQTY3RjAwRDg2MUI5IC8qIEluYmFuZFRleHRUcmFja1ByaXZhdGVM
ZWdhY3lBVkZPYmpDLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBuYW1lID0g
SW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUxlZ2FjeUFWRk9iakMubW07IHBhdGggPSBvYmpjL0luYmFu
ZFRleHRUcmFja1ByaXZhdGVMZWdhY3lBVkZPYmpDLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQkwNzNBQjRCMDE3RjhCQUNBMDA2RTBENkYgLyogQWxsVmlkZW9DYXBhYmlsaXRpZXMu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQWxsVmlkZW9DYXBhYmlsaXRpZXMu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMDczQUI0QjUxN0Y5MkVDRjAwNkUwRDZG
IC8qIEpTQ2FwYWJpbGl0eVJhbmdlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IEpTQ2FwYWJpbGl0eVJhbmdlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJMDczQUI0QjYxN0Y5MkVDRjAwNkUwRDZGIC8qIEpTQ2FwYWJpbGl0eVJhbmdlLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTQ2FwYWJpbGl0eVJhbmdlLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA3M0JFMzNFMTdEMTdFMDEwMDJCRDQzMSAvKiBKU05hdmln
YXRvck1lZGlhU3RyZWFtLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IEpTTmF2aWdhdG9yTWVkaWFTdHJlYW0uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQkwNzNCRTMzRjE3RDE3RTAxMDAyQkQ0MzEgLyogSlNOYXZpZ2F0b3JNZWRpYVN0cmVhbS5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU05hdmlnYXRvck1lZGlhU3RyZWFtLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA3M0JFMzQyMTdEMTdFN0EwMDJCRDQzMSAv
KiBKU05hdmlnYXRvclVzZXJNZWRpYUVycm9yLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IEpTTmF2aWdhdG9yVXNlck1lZGlhRXJyb3IuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwpAQCAtNjU3NSw2ICs2NjQyLDggQEAKIAkJMDc2OTcwODUxNDYzQUQ4NzAw
RjUwMkNGIC8qIFRleHRUcmFja0xpc3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gVGV4dFRyYWNrTGlzdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwNzZGMEQw
OTEyQjgxOTI3MDBDMjZBQTQgLyogTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE1lZGlhUGxheWVyUHJpdmF0ZUFW
Rm91bmRhdGlvbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA3NkYwRDBBMTJC
ODE5MjcwMEMyNkFBNCAvKiBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb24uaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9u
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTA3ODMyMjgyMTgwMTNFRDcwMDk5OUUw
QyAvKiBNZWRpYVN0cmVhbUF1ZGlvU291cmNlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IE1lZGlhU3RyZWFtQXVkaW9Tb3VyY2UuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQkwNzgzMjI4MzE4MDEzRUQ4MDA5OTlFMEMgLyogTWVkaWFTdHJlYW1BdWRp
b1NvdXJjZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNZWRpYVN0cmVhbUF1
ZGlvU291cmNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA3ODQ2MzQwMTQ1QjE1
MUEwMEE1OERGMSAvKiBKU1RyYWNrRXZlbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gSlNUcmFja0V2ZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJMDc4NDYzNDExNDVCMTUxQTAwQTU4REYxIC8qIEpTVHJhY2tFdmVudC5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBKU1RyYWNrRXZlbnQuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJMDc4NDYzODQxNDVCMUI4RTAwQTU4REYxIC8qIEpTVHJhY2tDdXN0b20uaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNUcmFja0N1c3RvbS5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwpAQCAtNjYzOSw2ICs2NzA4LDE1IEBACiAJCTA3QzU5QjVDMTdG
NEIyMDgwMDBGQkNCQiAvKiBKU1ZpZGVvU3RyZWFtVHJhY2suaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gSlNWaWRlb1N0cmVhbVRyYWNrLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTA3QzU5QjYxMTdGNENGODcwMDBGQkNCQiAvKiBNb2NrTWVkaWFTdHJlYW1DZW50
ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gTW9ja01lZGlhU3Ry
ZWFtQ2VudGVyLmNwcDsgcGF0aCA9IG1vY2svTW9ja01lZGlhU3RyZWFtQ2VudGVyLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDdDNTlCNjIxN0Y0Q0Y4NzAwMEZCQ0JCIC8qIE1v
Y2tNZWRpYVN0cmVhbUNlbnRlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBN
b2NrTWVkaWFTdHJlYW1DZW50ZXIuaDsgcGF0aCA9IG1vY2svTW9ja01lZGlhU3RyZWFtQ2VudGVy
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTA3QzU5QjY1MTdGNzg0QkEwMDBGQkNC
QiAvKiBNZWRpYVNvdXJjZVN0YXRlcy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBNZWRpYVNvdXJjZVN0YXRlcy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCTA3QzU5QjY2MTdGNzg0QkEwMDBGQkNCQiAvKiBNZWRpYVNvdXJjZVN0YXRlcy5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNZWRpYVNvdXJjZVN0YXRlcy5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQkwN0M1OUI2NzE3Rjc4NEJBMDAwRkJDQkIgLyogTWVkaWFT
b3VyY2VTdGF0ZXMuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IE1lZGlhU291cmNlU3RhdGVz
LmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMDdDNTlCNkQxN0Y3OTRGNjAwMEZC
Q0JCIC8qIEpTTWVkaWFTb3VyY2VTdGF0ZXNDdXN0b20uY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gSlNNZWRpYVNvdXJjZVN0YXRlc0N1c3RvbS5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTA3QzU5QjZGMTdGNzlDN0MwMDBGQkNCQiAvKiBKU01lZGlh
U291cmNlU3RhdGVzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpT
TWVkaWFTb3VyY2VTdGF0ZXMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwN0M1
OUI3MDE3Rjc5QzdDMDAwRkJDQkIgLyogSlNNZWRpYVNvdXJjZVN0YXRlcy5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBKU01lZGlhU291cmNlU3RhdGVzLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCTA3QzU5QjczMTdGN0QwOUQwMDBGQkNCQiAvKiBBbGxWaWRlb0Nh
cGFiaWxpdGllcy5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gQWxsVmlkZW9DYXBhYmlsaXRp
ZXMuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwN0M1OUI3NDE3RjdEMDlEMDAw
RkJDQkIgLyogQ2FwYWJpbGl0eVJhbmdlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IENhcGFiaWxpdHlSYW5nZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwN0M1
OUI3NTE3RjdEMDlEMDAwRkJDQkIgLyogQ2FwYWJpbGl0eVJhbmdlLmlkbCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRl
eHQ7IHBhdGggPSBDYXBhYmlsaXR5UmFuZ2UuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQkwN0NFNzdENDE2NzEyQTZBMDBDNTVBNDcgLyogSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUNs
aWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbmJhbmRUZXh0VHJhY2tQ
cml2YXRlQ2xpZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA3REM1RkQzMTdE
M0VFRTkwMDk5Rjg5MCAvKiBKU1JUQ1N0YXRzUmVzcG9uc2VDdXN0b20uY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNSVENTdGF0c1Jlc3BvbnNlQ3VzdG9tLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDdFMTE2QjAxNDg5QzlBMTAwRUM1QUNFIC8q
IEpTVGV4dFRyYWNrQ3VzdG9tLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IEpTVGV4dFRyYWNrQ3VzdG9tLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAg
LTEzMjA5LDEyICsxMzI4NywzNCBAQAogCQkwNzIyMUI0NjE3Q0VDMzI3MDA4NDhFNTEgLyogbWVk
aWFzdHJlYW0gKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAorCQkJ
CTA3MDU4NTM5MTdGRTA3NzAwMDVGMkJDQiAvKiBNZWRpYVRyYWNrQ29uc3RyYWludC5jcHAgKi8s
CisJCQkJMDcwNTg1MzcxN0ZFMDQ0RjAwNUYyQkNCIC8qIE1lZGlhVHJhY2tDb25zdHJhaW50U2V0
LmNwcCAqLywKKwkJCQkwNzA1ODUyNjE3RkRFMDJCMDA1RjJCQ0IgLyogTWVkaWFUcmFja0NvbnN0
cmFpbnRTZXQuaCAqLywKKwkJCQkwNzA1ODUyNzE3RkRFMDJCMDA1RjJCQ0IgLyogTWVkaWFUcmFj
a0NvbnN0cmFpbnRTZXQuaWRsICovLAorCQkJCTA3MDU4NTFEMTdGREMxNDAwMDVGMkJDQiAvKiBN
ZWRpYVRyYWNrQ29uc3RyYWludC5oICovLAorCQkJCTA3MDU4NTFFMTdGREMxNDAwMDVGMkJDQiAv
KiBNZWRpYVRyYWNrQ29uc3RyYWludC5pZGwgKi8sCisJCQkJMDcwNTg1MUYxN0ZEQzE0MDAwNUYy
QkNCIC8qIE1lZGlhVHJhY2tDb25zdHJhaW50cy5jcHAgKi8sCisJCQkJMDcwNTg1MjAxN0ZEQzE0
MDAwNUYyQkNCIC8qIE1lZGlhVHJhY2tDb25zdHJhaW50cy5oICovLAorCQkJCTA3MDU4NTFDMTdG
REIyM0MwMDVGMkJDQiAvKiBNZWRpYVRyYWNrQ29uc3RyYWludHMuaWRsICovLAorCQkJCTA3MDU4
NTA1MTdGQTQ2ODkwMDVGMkJDQiAvKiBBbGxBdWRpb0NhcGFiaWxpdGllcy5oICovLAorCQkJCTA3
MDU4NTA2MTdGQTQ2ODkwMDVGMkJDQiAvKiBBbGxBdWRpb0NhcGFiaWxpdGllcy5pZGwgKi8sCisJ
CQkJMDcwNTg0RkUxN0Y5RjA1RTAwNUYyQkNCIC8qIENhcGFiaWxpdHlSYW5nZS5jcHAgKi8sCisJ
CQkJMDczQUI0QjAxN0Y4QkFDQTAwNkUwRDZGIC8qIEFsbFZpZGVvQ2FwYWJpbGl0aWVzLmggKi8s
CisJCQkJMDdDNTlCNzMxN0Y3RDA5RDAwMEZCQ0JCIC8qIEFsbFZpZGVvQ2FwYWJpbGl0aWVzLmlk
bCAqLywKKwkJCQkwN0M1OUI3NDE3RjdEMDlEMDAwRkJDQkIgLyogQ2FwYWJpbGl0eVJhbmdlLmgg
Ki8sCisJCQkJMDdDNTlCNzUxN0Y3RDA5RDAwMEZCQ0JCIC8qIENhcGFiaWxpdHlSYW5nZS5pZGwg
Ki8sCisJCQkJMDdDNTlCNjUxN0Y3ODRCQTAwMEZCQ0JCIC8qIE1lZGlhU291cmNlU3RhdGVzLmNw
cCAqLywKKwkJCQkwN0M1OUI2NjE3Rjc4NEJBMDAwRkJDQkIgLyogTWVkaWFTb3VyY2VTdGF0ZXMu
aCAqLywKKwkJCQkwN0M1OUI2NzE3Rjc4NEJBMDAwRkJDQkIgLyogTWVkaWFTb3VyY2VTdGF0ZXMu
aWRsICovLAogCQkJCTA3QzU5QjREMTdGNEFDMTUwMDBGQkNCQiAvKiBBdWRpb1N0cmVhbVRyYWNr
LmNwcCAqLywKIAkJCQkwN0M1OUI0RTE3RjRBQzE1MDAwRkJDQkIgLyogQXVkaW9TdHJlYW1UcmFj
ay5oICovLAogCQkJCTA3QzU5QjRGMTdGNEFDMTUwMDBGQkNCQiAvKiBBdWRpb1N0cmVhbVRyYWNr
LmlkbCAqLywKIAkJCQkwN0M1OUI1MDE3RjRBQzE1MDAwRkJDQkIgLyogVmlkZW9TdHJlYW1UcmFj
ay5jcHAgKi8sCiAJCQkJMDdDNTlCNTExN0Y0QUMxNTAwMEZCQ0JCIC8qIFZpZGVvU3RyZWFtVHJh
Y2suaCAqLywKIAkJCQkwN0M1OUI1MjE3RjRBQzE1MDAwRkJDQkIgLyogVmlkZW9TdHJlYW1UcmFj
ay5pZGwgKi8sCisJCQkJMDcwNTg1MTQxN0ZCMEUyQzAwNUYyQkNCIC8qIE1lZGlhU3RyZWFtQ2Fw
YWJpbGl0aWVzLmNwcCAqLywKKwkJCQkwNzA1ODUwRTE3RkE2RkIxMDA1RjJCQ0IgLyogTWVkaWFT
dHJlYW1DYXBhYmlsaXRpZXMuaWRsICovLAorCQkJCTA3MDU4NTBBMTdGQTQ4MjcwMDVGMkJDQiAv
KiBNZWRpYVN0cmVhbUNhcGFiaWxpdGllcy5oICovLAogCQkJCTA3MjIxQjRBMTdDRUMzMjcwMDg0
OEU1MSAvKiBNZWRpYUNvbnN0cmFpbnRzSW1wbC5jcHAgKi8sCiAJCQkJMDcyMjFCNEIxN0NFQzMy
NzAwODQ4RTUxIC8qIE1lZGlhQ29uc3RyYWludHNJbXBsLmggKi8sCiAJCQkJMDcyMjFCNEMxN0NF
QzMyNzAwODQ4RTUxIC8qIE1lZGlhU3RyZWFtLmNwcCAqLywKQEAgLTEzMzEzLDYgKzEzNDEzLDcg
QEAKIAkJCQkwNzIyMUI5RDE3Q0YwQUQ0MDA4NDhFNTEgLyogTWVkaWFTdHJlYW1EZXNjcmlwdG9y
LmggKi8sCiAJCQkJMDcyMjFCOUUxN0NGMEFENDAwODQ4RTUxIC8qIE1lZGlhU3RyZWFtU291cmNl
LmNwcCAqLywKIAkJCQkwNzIyMUI5RjE3Q0YwQUQ0MDA4NDhFNTEgLyogTWVkaWFTdHJlYW1Tb3Vy
Y2UuaCAqLywKKwkJCQkwNzA1ODRGQjE3RjlENkRGMDA1RjJCQ0IgLyogTWVkaWFTdHJlYW1Tb3Vy
Y2VDYXBhYmlsaXRpZXMuaCAqLywKIAkJCQkwNzYzMDZFMjE3RTIyQTQzMDA1QTdDNEUgLyogTWVk
aWFTdHJlYW1UcmFja1NvdXJjZXNSZXF1ZXN0Q2xpZW50LmggKi8sCiAJCQkJMDcyMjFCQTExN0NG
MEFENDAwODQ4RTUxIC8qIFJUQ0NvbmZpZ3VyYXRpb24uaCAqLywKIAkJCQkwNzIyMUJBMjE3Q0Yw
QUQ0MDA4NDhFNTEgLyogUlRDRGF0YUNoYW5uZWxIYW5kbGVyLmggKi8sCkBAIC0xMzM2MCw2ICsx
MzQ2MSwxNiBAQAogCQkwN0NGRDk5MzE3RDAxNDA1MDAxQzRGRkMgLyogTWVkaWFTdHJlYW0gKi8g
PSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAorCQkJCTA3MDU4NTJCMTdG
REU2RDkwMDVGMkJDQiAvKiBKU01lZGlhVHJhY2tDb25zdHJhaW50LmNwcCAqLywKKwkJCQkwNzA1
ODUyQzE3RkRFNkQ5MDA1RjJCQ0IgLyogSlNNZWRpYVRyYWNrQ29uc3RyYWludC5oICovLAorCQkJ
CTA3MDU4NTJEMTdGREU2RDkwMDVGMkJDQiAvKiBKU01lZGlhVHJhY2tDb25zdHJhaW50cy5jcHAg
Ki8sCisJCQkJMDcwNTg1MkUxN0ZERTZEOTAwNUYyQkNCIC8qIEpTTWVkaWFUcmFja0NvbnN0cmFp
bnRzLmggKi8sCisJCQkJMDcwNTg1MkYxN0ZERTZEOTAwNUYyQkNCIC8qIEpTTWVkaWFUcmFja0Nv
bnN0cmFpbnRTZXQuY3BwICovLAorCQkJCTA3MDU4NTMwMTdGREU2RDkwMDVGMkJDQiAvKiBKU01l
ZGlhVHJhY2tDb25zdHJhaW50U2V0LmggKi8sCisJCQkJMDcwNTg1MTAxN0ZBNzEwNzAwNUYyQkNC
IC8qIEpTTWVkaWFTdHJlYW1DYXBhYmlsaXRpZXMuY3BwICovLAorCQkJCTA3MDU4NTExMTdGQTcx
MDcwMDVGMkJDQiAvKiBKU01lZGlhU3RyZWFtQ2FwYWJpbGl0aWVzLmggKi8sCisJCQkJMDdDNTlC
NkYxN0Y3OUM3QzAwMEZCQ0JCIC8qIEpTTWVkaWFTb3VyY2VTdGF0ZXMuY3BwICovLAorCQkJCTA3
QzU5QjcwMTdGNzlDN0MwMDBGQkNCQiAvKiBKU01lZGlhU291cmNlU3RhdGVzLmggKi8sCiAJCQkJ
MDdDNTlCNTkxN0Y0QjIwODAwMEZCQ0JCIC8qIEpTQXVkaW9TdHJlYW1UcmFjay5jcHAgKi8sCiAJ
CQkJMDdDNTlCNUExN0Y0QjIwODAwMEZCQ0JCIC8qIEpTQXVkaW9TdHJlYW1UcmFjay5oICovLAog
CQkJCTA3QzU5QjVCMTdGNEIyMDgwMDBGQkNCQiAvKiBKU1ZpZGVvU3RyZWFtVHJhY2suY3BwICov
LApAQCAtMTkxNzksNiArMTkyOTAsOCBAQAogCQlCQzRFREVGNzBDMDhGNDE0MDA3RURENDkgLyog
Q3VzdG9tICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJCQkw
NzA1ODUxNjE3RkI0MEU5MDA1RjJCQ0IgLyogSlNNZWRpYVN0cmVhbUNhcGFiaWxpdGllc0N1c3Rv
bS5jcHAgKi8sCisJCQkJMDdDNTlCNkQxN0Y3OTRGNjAwMEZCQ0JCIC8qIEpTTWVkaWFTb3VyY2VT
dGF0ZXNDdXN0b20uY3BwICovLAogCQkJCUJDMkVENkJCMEM2QkQyRjAwMDkyMEJGRiAvKiBKU0F0
dHJDdXN0b20uY3BwICovLAogCQkJCUZERUFBQUVGMTJCMDJFRTQwMERDRjMzQiAvKiBKU0F1ZGlv
QnVmZmVyU291cmNlTm9kZUN1c3RvbS5jcHAgKi8sCiAJCQkJRkRFQUFBRjAxMkIwMkVFNDAwRENG
MzNCIC8qIEpTQXVkaW9Db250ZXh0Q3VzdG9tLmNwcCAqLywKQEAgLTE5Nzc1LDYgKzE5ODg4LDEy
IEBACiAJCUNENjFGRTdCMTc5NENBMDIwMDQxMDFFQiAvKiBNZWRpYVNvdXJjZSAqLyA9IHsKIAkJ
CWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCisJCQkJMDcwNTg1MTgxN0ZCNDRCNDAw
NUYyQkNCIC8qIEpTQWxsQXVkaW9DYXBhYmlsaXRpZXMuY3BwICovLAorCQkJCTA3MDU4NTE5MTdG
QjQ0QjQwMDVGMkJDQiAvKiBKU0FsbEF1ZGlvQ2FwYWJpbGl0aWVzLmggKi8sCisJCQkJMDcwNTg1
MDAxN0ZBMTBEMDAwNUYyQkNCIC8qIEpTQWxsVmlkZW9DYXBhYmlsaXRpZXMuY3BwICovLAorCQkJ
CTA3MDU4NTAxMTdGQTEwRDAwMDVGMkJDQiAvKiBKU0FsbFZpZGVvQ2FwYWJpbGl0aWVzLmggKi8s
CisJCQkJMDczQUI0QjUxN0Y5MkVDRjAwNkUwRDZGIC8qIEpTQ2FwYWJpbGl0eVJhbmdlLmNwcCAq
LywKKwkJCQkwNzNBQjRCNjE3RjkyRUNGMDA2RTBENkYgLyogSlNDYXBhYmlsaXR5UmFuZ2UuaCAq
LywKIAkJCQlDRDlERTE3MjE3QUFDNzRDMDBFQTM4NkQgLyogSlNNZWRpYVNvdXJjZS5jcHAgKi8s
CiAJCQkJQ0Q5REUxNzMxN0FBQzc0QzAwRUEzODZEIC8qIEpTTWVkaWFTb3VyY2UuaCAqLywKIAkJ
CQlDRDlERTE3NjE3QUFDNzVCMDBFQTM4NkQgLyogSlNTb3VyY2VCdWZmZXIuY3BwICovLApAQCAt
MjEwMjIsNiArMjExNDEsOCBAQAogCQlGRDMxNUZBMjEyQjAyNUIxMDBDMUEzNTkgLyogd2ViYXVk
aW8gKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAorCQkJCTA3ODMy
MjgyMTgwMTNFRDcwMDk5OUUwQyAvKiBNZWRpYVN0cmVhbUF1ZGlvU291cmNlLmNwcCAqLywKKwkJ
CQkwNzgzMjI4MzE4MDEzRUQ4MDA5OTlFMEMgLyogTWVkaWFTdHJlYW1BdWRpb1NvdXJjZS5oICov
LAogCQkJCUZEMzE1RkYzMTJCMDI2NzYwMEMxQTM1OSAvKiBBbmFseXNlck5vZGUuY3BwICovLAog
CQkJCUZEMzE1RkY0MTJCMDI2NzYwMEMxQTM1OSAvKiBBbmFseXNlck5vZGUuaCAqLywKIAkJCQlG
RDMxNUZGNTEyQjAyNjc2MDBDMUEzNTkgLyogQW5hbHlzZXJOb2RlLmlkbCAqLywKQEAgLTIxNDE5
LDYgKzIxNTQwLDcgQEAKIAkJCQlGRDMxNjBCRjEyQjAyNzJBMDBDMUEzNTkgLyogQXVkaW9GaWxl
UmVhZGVyTWFjLmggaW4gSGVhZGVycyAqLywKIAkJCQlGREUyRDU1QjE1OUU2NkVCMDBEQ0NDRjgg
LyogQXVkaW9JT0NhbGxiYWNrLmggaW4gSGVhZGVycyAqLywKIAkJCQlGRDMxNjAxMDEyQjAyNjc2
MDBDMUEzNTkgLyogQXVkaW9MaXN0ZW5lci5oIGluIEhlYWRlcnMgKi8sCisJCQkJMDcwNTg1MjQx
N0ZEQzE0MDAwNUYyQkNCIC8qIE1lZGlhVHJhY2tDb25zdHJhaW50cy5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJRkQzMTYwMTMxMkIwMjY3NjAwQzFBMzU5IC8qIEF1ZGlvTm9kZS5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJRkQzMTYwMTYxMkIwMjY3NjAwQzFBMzU5IC8qIEF1ZGlvTm9kZUlucHV0LmggaW4g
SGVhZGVycyAqLywKIAkJCQlGRDMxNjAxODEyQjAyNjc2MDBDMUEzNTkgLyogQXVkaW9Ob2RlT3V0
cHV0LmggaW4gSGVhZGVycyAqLywKQEAgLTIxNTgxLDYgKzIxNzAzLDcgQEAKIAkJCQlCQzBCMzZB
NTBDRDNDNjdDMDBBQzdFQjUgLyogQ29uc29sZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMkRGMkU5
RDUxNjZFMzk3NTAwMzVCRUYyIC8qIENvbnNvbGVBUElUeXBlcy5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJNDFGMDYxOEUwRjVGMDY5ODAwQTA3RUFDIC8qIENvbnNvbGVNZXNzYWdlLmggaW4gSGVhZGVy
cyAqLywKKwkJCQkwNzNBQjRCMzE3RjhCQUNBMDA2RTBENkYgLyogQWxsVmlkZW9DYXBhYmlsaXRp
ZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDRTU2NDRFMTM3QTM0RDYwMDdEMjkzNCAvKiBDb25z
b2xlVHlwZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCUE4MTg3MjFDMDk3N0QzQzAwMDU4MjZEOSAv
KiBDb250YWluZXJOb2RlLmggaW4gSGVhZGVycyAqLywKIAkJCQlFMUExNDcwODExMTAyQjE1MDBF
RUMwRjMgLyogQ29udGFpbmVyTm9kZUFsZ29yaXRobXMuaCBpbiBIZWFkZXJzICovLApAQCAtMjE3
MzcsNiArMjE4NjAsNyBAQAogCQkJCUE1NzMyQjBCMTM2QTE2MUQwMDVDOEQ3QyAvKiBEYXRlQ29t
cG9uZW50cy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRjU1QjNEQjYxMjUxRjEyRDAwM0VGMjY5IC8q
IERhdGVJbnB1dFR5cGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTQ1M0VCNjM3MTU5QzU3MDQwMDAw
MUJCNyAvKiBEYXRlVGltZUZvcm1hdC5oIGluIEhlYWRlcnMgKi8sCisJCQkJMDcwNTg1MDMxN0ZB
MTBEMDAwNUYyQkNCIC8qIEpTQWxsVmlkZW9DYXBhYmlsaXRpZXMuaCBpbiBIZWFkZXJzICovLAog
CQkJCUY1NUIzREI4MTI1MUYxMkQwMDNFRjI2OSAvKiBEYXRlVGltZUlucHV0VHlwZS5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJRjU1QjNEQkExMjUxRjEyRDAwM0VGMjY5IC8qIERhdGVUaW1lTG9jYWxJ
bnB1dFR5cGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTQ1RkVBNUQwMTU2RERFOEMwMDY1NDEwMSAv
KiBEZWNpbWFsLmggaW4gSGVhZGVycyAqLywKQEAgLTIxNzUwLDYgKzIxODc0LDcgQEAKIAkJCQlG
RDMxNjAyRTEyQjAyNjc2MDBDMUEzNTkgLyogRGVsYXlOb2RlLmggaW4gSGVhZGVycyAqLywKIAkJ
CQlGRDMxNjAzMTEyQjAyNjc2MDBDMUEzNTkgLyogRGVsYXlQcm9jZXNzb3IuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTFDNEM4RjY2MEFEODY1NUQwMDk0NzVDRSAvKiBEZWxldGVCdXR0b24uaCBpbiBI
ZWFkZXJzICovLAorCQkJCTA3MDU4NTMyMTdGREU2RDkwMDVGMkJDQiAvKiBKU01lZGlhVHJhY2tD
b25zdHJhaW50LmggaW4gSGVhZGVycyAqLywKIAkJCQkxQzRDOEYwMjBBRDg1RDg3MDA5NDc1Q0Ug
LyogRGVsZXRlQnV0dG9uQ29udHJvbGxlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTMzMDlEREYw
OTlFNjQ5MjAwNTZFNTgxIC8qIERlbGV0ZUZyb21UZXh0Tm9kZUNvbW1hbmQuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTA3QzU5QjY0MTdGNEQxQzQwMDBGQkNCQiAvKiBNb2NrTWVkaWFTdHJlYW1DZW50
ZXIuaCBpbiBIZWFkZXJzICovLApAQCAtMjE3OTEsNiArMjE5MTYsNyBAQAogCQkJCUNFMDU3RkE2
MTIyMDczMTEwMEE0NzZENSAvKiBEb2N1bWVudE1hcmtlckNvbnRyb2xsZXIuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTE0OTQ3RkZFMTJGODBDRDIwMEEwRjYzMSAvKiBEb2N1bWVudE9yZGVyZWRNYXAu
aCBpbiBIZWFkZXJzICovLAogCQkJCUJDQ0ZCQUU4MEI1MTUyRUQwMDAxRjFENyAvKiBEb2N1bWVu
dFBhcnNlci5oIGluIEhlYWRlcnMgKi8sCisJCQkJMDcwNTg1MjkxN0ZERTAyQzAwNUYyQkNCIC8q
IE1lZGlhVHJhY2tDb25zdHJhaW50U2V0LmggaW4gSGVhZGVycyAqLywKIAkJCQk0QTRGNDhBQTE2
QjBERkMwMDBFREJCMjkgLyogRG9jdW1lbnRSdWxlU2V0cy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
QUQ2RTcxQUQxNjY4ODk5RDAwMzIwQzEzIC8qIERvY3VtZW50U2hhcmVkT2JqZWN0UG9vbC5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJRTQ3RTI3NjUxNjAzNkVEMjAwRUUyQUZCIC8qIERvY3VtZW50U3R5
bGVTaGVldENvbGxlY3Rpb24uaCBpbiBIZWFkZXJzICovLApAQCAtMjE5NDUsNiArMjIwNzEsNyBA
QAogCQkJCTg1OTkyRUJBMEFBNTA2OTUwMEFDMDc4NSAvKiBET01IVE1MSGVhZEVsZW1lbnQuaCBp
biBIZWFkZXJzICovLAogCQkJCTg1RTcxMUFEMEFDNUQ1MzUwMDUzMjcwRiAvKiBET01IVE1MSGVh
ZEVsZW1lbnRJbnRlcm5hbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODUxODNCNDQwQUE2OTI2MTAw
RjE5RkEzIC8qIERPTUhUTUxIZWFkaW5nRWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCisJCQkJMDcw
NTg1MzYxN0ZERTZEOTAwNUYyQkNCIC8qIEpTTWVkaWFUcmFja0NvbnN0cmFpbnRTZXQuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTg1RTcxMUFFMEFDNUQ1MzUwMDUzMjcwRiAvKiBET01IVE1MSGVhZGlu
Z0VsZW1lbnRJbnRlcm5hbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODVFQ0JFRjEwQUE3NjI2OTAw
NTQ0RjBCIC8qIERPTUhUTUxIUkVsZW1lbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTg1RTcxMUFG
MEFDNUQ1MzUwMDUzMjcwRiAvKiBET01IVE1MSFJFbGVtZW50SW50ZXJuYWwuaCBpbiBIZWFkZXJz
ICovLApAQCAtMjIwNTcsNiArMjIxODQsNyBAQAogCQkJCTg1Q0E5NkVBMEE5NjI0RTkwMDY5MEND
RiAvKiBET01Ob3RhdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODVFNzExRDQwQUM1RDUzNTAw
NTMyNzBGIC8qIERPTU5vdGF0aW9uSW50ZXJuYWwuaCBpbiBIZWFkZXJzICovLAogCQkJCTg1NkM4
QUU0MEE5MTI2NDkwMDVDNjg3QiAvKiBET01PYmplY3QuaCBpbiBIZWFkZXJzICovLAorCQkJCTA3
MDU4NTEzMTdGQTcxMDcwMDVGMkJDQiAvKiBKU01lZGlhU3RyZWFtQ2FwYWJpbGl0aWVzLmggaW4g
SGVhZGVycyAqLywKIAkJCQlCQzUzREE2MDExNDMxNDFBMDAwRDgxN0UgLyogRE9NT2JqZWN0SGFz
aFRhYmxlTWFwLmggaW4gSGVhZGVycyAqLywKIAkJCQk4NUM3RjVEMDBBQUZCOEQ5MDA0MDE0REQg
LyogRE9NT3ZlcmZsb3dFdmVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODU5ODlEQ0YwQUNDOEJC
RDAwQTBCQzUxIC8qIERPTU92ZXJmbG93RXZlbnRJbnRlcm5hbC5oIGluIEhlYWRlcnMgKi8sCkBA
IC0yMjUwMyw2ICsyMjYzMSw3IEBACiAJCQkJQkNDRDc0REMwQTRDOEQzNTAwNUZEQTZEIC8qIEhU
TUxWaWV3U291cmNlRG9jdW1lbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTk3N0IzODdBMTIyODgz
RTkwMEI4MUZGOCAvKiBIVE1MVmlld1NvdXJjZVBhcnNlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
NTE0Qzc2NzEwQ0U5MjNBMTAwN0VGM0NEIC8qIEhUVFBIZWFkZXJNYXAuaCBpbiBIZWFkZXJzICov
LAorCQkJCTA3M0FCNEI4MTdGOTJFQ0YwMDZFMEQ2RiAvKiBKU0NhcGFiaWxpdHlSYW5nZS5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJNTE0Qzc2NzMwQ0U5MjNBMTAwN0VGM0NEIC8qIEhUVFBQYXJzZXJz
LmggaW4gSGVhZGVycyAqLywKIAkJCQkzNzVDRDIzMjExOUQ0M0M4MDBBMkE4NTkgLyogSHlwaGVu
YXRpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCUIyNzUzNTZFMEIwNTM4MTQwMDJDRTY0RiAvKiBJ
Y29uLmggaW4gSGVhZGVycyAqLywKQEAgLTIyNjA4LDYgKzIyNzM3LDcgQEAKIAkJCQk3QTI0NTg3
QzEwMjFFQUY0MDAwQTAwQUEgLyogSW5zcGVjdG9yRE9NQWdlbnQuaCBpbiBIZWFkZXJzICovLAog
CQkJCUYzRDRDNDc5MTJFMDc2NjMwMDNEQTE1MCAvKiBJbnNwZWN0b3JET01EZWJ1Z2dlckFnZW50
LmggaW4gSGVhZGVycyAqLywKIAkJCQk3QTc0RUNCQjEwMTgzOUE2MDBCRjkzOUUgLyogSW5zcGVj
dG9yRE9NU3RvcmFnZUFnZW50LmggaW4gSGVhZGVycyAqLywKKwkJCQkwNzA1ODUzNDE3RkRFNkQ5
MDA1RjJCQ0IgLyogSlNNZWRpYVRyYWNrQ29uc3RyYWludHMuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTU3OERBMjBFMTUyMEVCOEMwMDYxNDFDMSAvKiBJbnNwZWN0b3JGcm9udGVuZC5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJMjI3Nzc3NjAxMzQ1REVBOTAwOEVBNDU1IC8qIEluc3BlY3RvckZyb250ZW5k
Q2hhbm5lbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRjM0NEM3MTQxMTI1QjgyQzAwRjI2RUVFIC8q
IEluc3BlY3RvckZyb250ZW5kQ2xpZW50LmggaW4gSGVhZGVycyAqLywKQEAgLTIzMDcyLDYgKzIz
MjAyLDcgQEAKIAkJCQlCMkZBM0REQjBBQjc1QTZGMDAwRTVBQzQgLyogSlNTVkdQYXRoU2VnTGlz
dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjJGQTNEREQwQUI3NUE2RjAwMEU1QUM0IC8qIEpTU1ZH
UGF0aFNlZ01vdmV0b0Ficy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjJGQTNEREYwQUI3NUE2RjAw
MEU1QUM0IC8qIEpTU1ZHUGF0aFNlZ01vdmV0b1JlbC5oIGluIEhlYWRlcnMgKi8sCisJCQkJMDcw
NTg1MjExN0ZEQzE0MDAwNUYyQkNCIC8qIE1lZGlhVHJhY2tDb25zdHJhaW50LmggaW4gSGVhZGVy
cyAqLywKIAkJCQlCMkZBM0RFMTBBQjc1QTZGMDAwRTVBQzQgLyogSlNTVkdQYXR0ZXJuRWxlbWVu
dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODU0MkE3OTUwQUU1Qzk0MTAwREY1OERGIC8qIEpTU1ZH
UG9pbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUIyRkEzREUzMEFCNzVBNkYwMDBFNUFDNCAvKiBK
U1NWR1BvaW50TGlzdC5oIGluIEhlYWRlcnMgKi8sCkBAIC0yMzU1OCw2ICsyMzY4OSw3IEBACiAJ
CQkJNDM5MDQ2RTIxMkRBMjVFODAwQUY4MEEyIC8qIFJlbmRlck1hdGhNTFJvb3QuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTQzOTA0NkU0MTJEQTI1RTgwMEFGODBBMiAvKiBSZW5kZXJNYXRoTUxSb3cu
aCBpbiBIZWFkZXJzICovLAogCQkJCTQzOTA0NkU2MTJEQTI1RTgwMEFGODBBMiAvKiBSZW5kZXJN
YXRoTUxTcXVhcmVSb290LmggaW4gSGVhZGVycyAqLywKKwkJCQkwNzgzMjI4NTE4MDEzRUQ4MDA5
OTlFMEMgLyogTWVkaWFTdHJlYW1BdWRpb1NvdXJjZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDM5
MDQ2RTgxMkRBMjVFODAwQUY4MEEyIC8qIFJlbmRlck1hdGhNTFNjcmlwdHMuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTQzOTA0NkVBMTJEQTI1RTgwMEFGODBBMiAvKiBSZW5kZXJNYXRoTUxVbmRlck92
ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUU0QzI3OTU5MENGOTc0MTkwMEU5N0I5OCAvKiBSZW5k
ZXJNZWRpYS5oIGluIEhlYWRlcnMgKi8sCkBAIC0yMzU3OCw2ICsyMzcxMCw3IEBACiAJCQkJQTg3
MURGRTMwQTE1Mzc2QjAwQjEyQTY4IC8qIFJlbmRlclJlcGxhY2VkLmggaW4gSGVhZGVycyAqLywK
IAkJCQlCQ0E4NDZENzBEQzY3QTM1MDAyNkMzMDkgLyogUmVuZGVyUmVwbGljYS5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJMTQ3OUZBRUUxMDlBRTM3NTAwREVENjU1IC8qIFJlbmRlclJ1YnkuaCBpbiBI
ZWFkZXJzICovLAorCQkJCTA3MDU4NTA4MTdGQTQ2ODkwMDVGMkJDQiAvKiBBbGxBdWRpb0NhcGFi
aWxpdGllcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMTQ3OUZBRjAxMDlBRTM3NTAwREVENjU1IC8q
IFJlbmRlclJ1YnlCYXNlLmggaW4gSGVhZGVycyAqLywKIAkJCQkxNDc5RkFGMjEwOUFFMzc1MDBE
RUQ2NTUgLyogUmVuZGVyUnVieVJ1bi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMTQ3OUZBRjQxMDlB
RTM3NTAwREVENjU1IC8qIFJlbmRlclJ1YnlUZXh0LmggaW4gSGVhZGVycyAqLywKQEAgLTIzNjYw
LDYgKzIzNzkzLDcgQEAKIAkJCQk5NzNFMzI1NzEwODgzQjdDMDA1QkM0OTMgLyogUmVzb3VyY2VM
b2FkTm90aWZpZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUU0Mjk1RkE0MTJCMDYxNEUwMEQxQUNF
MCAvKiBSZXNvdXJjZUxvYWRQcmlvcml0eS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRDBDRTU4Rjkx
MjVFNENDMjAwRjNGMTk5IC8qIFJlc291cmNlTG9hZFNjaGVkdWxlci5oIGluIEhlYWRlcnMgKi8s
CisJCQkJMDdDNTlCNzYxN0Y3RDBEQjAwMEZCQ0JCIC8qIENhcGFiaWxpdHlSYW5nZS5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJOEE4MUJGODUxMURDRkQ5MDAwREEyQjk4IC8qIFJlc291cmNlTG9hZFRp
bWluZy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJN0VFNjg0NkQxMkQyNkUzODAwRTc5NDE1IC8qIFJl
c291cmNlUmVxdWVzdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTE0Qzc2N0QwQ0U5MjNBMTAwN0VG
M0NEIC8qIFJlc291cmNlUmVxdWVzdEJhc2UuaCBpbiBIZWFkZXJzICovLApAQCAtMjM5NjksNiAr
MjQxMDMsNyBAQAogCQkJCTA3OEUwOTM4MTdEMTZCMkMwMDQyMEFBMSAvKiBNZWRpYVN0cmVhbVNv
dXJjZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjIyMjc5QjEwRDAwQkYyMjAwNzFCNzgyIC8qIFNW
R0Rlc2NFbGVtZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlCNUI3QTE3MTE3QzEwQUMwMDBFNEFB
MEEgLyogRWxlbWVudERhdGEuaCBpbiBIZWFkZXJzICovLAorCQkJCTA3MDU4NTBCMTdGQTQ4Mjcw
MDVGMkJDQiAvKiBNZWRpYVN0cmVhbUNhcGFiaWxpdGllcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
QjIyMjc5QjQwRDAwQkYyMjAwNzFCNzgyIC8qIFNWR0RvY3VtZW50LmggaW4gSGVhZGVycyAqLywK
IAkJCQlCMjhDNkEyODBEMDBDNDQ4MDAzMzRBQTQgLyogU1ZHRG9jdW1lbnRFeHRlbnNpb25zLmgg
aW4gSGVhZGVycyAqLywKIAkJCQlCMjIyNzlCNzBEMDBCRjIyMDA3MUI3ODIgLyogU1ZHRWxlbWVu
dC5oIGluIEhlYWRlcnMgKi8sCkBAIC0yNDA0Myw2ICsyNDE3OCw3IEBACiAJCQkJNzEzNDQ5NkUx
NDY5NDFCMzAwNzIwMzEyIC8qIFNWR0xlbmd0aENvbnRleHQuaCBpbiBIZWFkZXJzICovLAogCQkJ
CUIyMjI3QTM2MEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdMZW5ndGhMaXN0LmggaW4gSGVhZGVycyAq
LywKIAkJCQlCMjIyN0EzOTBEMDBCRjIyMDA3MUI3ODIgLyogU1ZHTGluZWFyR3JhZGllbnRFbGVt
ZW50LmggaW4gSGVhZGVycyAqLywKKwkJCQkwN0M1OUI2OTE3Rjc4NEJBMDAwRkJDQkIgLyogTWVk
aWFTb3VyY2VTdGF0ZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCUIyMjI3QTNDMEQwMEJGMjIwMDcx
Qjc4MiAvKiBTVkdMaW5lRWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMDgxMDc2NDQxMjgy
ODU1NjAwN0M2M0JBIC8qIFNWR0xpc3RQcm9wZXJ0eS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMDg4
QTBFMDkxMjZFRjFEQjAwOTc4RjdBIC8qIFNWR0xpc3RQcm9wZXJ0eVRlYXJPZmYuaCBpbiBIZWFk
ZXJzICovLApAQCAtMjQyMzIsNiArMjQzNjgsNyBAQAogCQkJCUU0NDYxM0IwMENENjMzMTAwMEZB
REE3NSAvKiBUaW1lUmFuZ2VzLmggaW4gSGVhZGVycyAqLywKIAkJCQk0OUU5MTJBRTBFRkFDOTA2
MDA5RDBDQUYgLyogVGltaW5nRnVuY3Rpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCTA3MDMzNEQ3
MTQ1OUZGRDUwMDhEOEQ0NSAvKiBUcmFja0Jhc2UuaCBpbiBIZWFkZXJzICovLAorCQkJCTA3MDU4
NEZEMTdGOUQ2REYwMDVGMkJDQiAvKiBNZWRpYVN0cmVhbVNvdXJjZUNhcGFiaWxpdGllcy5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJQkU4OEUwQzIxNzE1Q0UyNjAwNjU4RDk4IC8qIFRyYWNrTGlzdEJh
c2UuaCBpbiBIZWFkZXJzICovLAogCQkJCUNEM0E0OTVGMTdBOUQwMUIwMDI3NEU0MiAvKiBNZWRp
YVNvdXJjZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDlFOTExQzQwRUY4NkQ0NzAwOUQwQ0FGIC8q
IFRyYW5zZm9ybWF0aW9uTWF0cml4LmggaW4gSGVhZGVycyAqLywKQEAgLTI0Mjg1LDYgKzI0NDIy
LDcgQEAKIAkJCQlCRTg4RTBFMjE3MTVEMkEyMDA2NThEOTggLyogVmlkZW9UcmFja0xpc3QuaCBp
biBIZWFkZXJzICovLAogCQkJCUU0QzkxQTBFMTgwMjM0MzEwMEExN0Y2RCAvKiBUZXh0UGFpbnRT
dHlsZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkVGMjlFRUMxNzE1REQwOTAwQzRCNEM5IC8qIFZp
ZGVvVHJhY2tQcml2YXRlLmggaW4gSGVhZGVycyAqLywKKwkJCQkwNzA1ODUxQjE3RkI0NEI0MDA1
RjJCQ0IgLyogSlNBbGxBdWRpb0NhcGFiaWxpdGllcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQ0VG
NDE4Q0YxMTc5Njc4QzAwOUQxMTJDIC8qIFZpZXdwb3J0QXJndW1lbnRzLmggaW4gSGVhZGVycyAq
LywKIAkJCQkzRkZGRjlBRTE1OUQ5QjA2MDAyMEJCRDUgLyogVmlld3BvcnRTdHlsZVJlc29sdmVy
LmggaW4gSGVhZGVycyAqLywKIAkJCQk5MzMwOUUyMDA5OUU2NDkyMDA1NkU1ODEgLyogVmlzaWJs
ZVBvc2l0aW9uLmggaW4gSGVhZGVycyAqLywKQEAgLTI0NDc0LDYgKzI0NjEyLDcgQEAKIAkJCQk4
M0MxRDQyODE3OEQ1QUI0MDAxNDFFNjggLyogU1ZHUGF0aFNlZ0N1cnZldG9DdWJpY1JlbC5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJODNDMUQ0MjkxNzhENUFCNDAwMTQxRTY4IC8qIFNWR1BhdGhTZWdD
dXJ2ZXRvQ3ViaWNTbW9vdGhBYnMuaCBpbiBIZWFkZXJzICovLAogCQkJCTgzQzFENDJBMTc4RDVB
QjQwMDE0MUU2OCAvKiBTVkdQYXRoU2VnQ3VydmV0b0N1YmljU21vb3RoUmVsLmggaW4gSGVhZGVy
cyAqLywKKwkJCQkwN0M1OUI3MjE3Rjc5QzdDMDAwRkJDQkIgLyogSlNNZWRpYVNvdXJjZVN0YXRl
cy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODNDMUQ0MkIxNzhENUFCNDAwMTQxRTY4IC8qIFNWR1Bh
dGhTZWdDdXJ2ZXRvUXVhZHJhdGljQWJzLmggaW4gSGVhZGVycyAqLywKIAkJCQk4M0MxRDQyQzE3
OEQ1QUI1MDAxNDFFNjggLyogU1ZHUGF0aFNlZ0N1cnZldG9RdWFkcmF0aWNSZWwuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTgzQzFENDJEMTc4RDVBQjUwMDE0MUU2OCAvKiBTVkdQYXRoU2VnQ3VydmV0
b1F1YWRyYXRpY1Ntb290aEFicy5oIGluIEhlYWRlcnMgKi8sCkBAIC0yNDk1OSw2ICsyNTA5OCw3
IEBACiAJCQkJRkQzMTYwMjQxMkIwMjY3NjAwQzFBMzU5IC8qIEJpcXVhZERTUEtlcm5lbC5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQlGREM1NEYwNDEzOTlCMERBMDA4RDkxMTcgLyogQmlxdWFkRmls
dGVyTm9kZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlGRDMxNjAyNjEyQjAyNjc2MDBDMUEzNTkg
LyogQmlxdWFkUHJvY2Vzc29yLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTA3MDU4NEZGMTdGOUYw
NUUwMDVGMkJDQiAvKiBDYXBhYmlsaXR5UmFuZ2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTg5
OTQzMjkwQjQyMzM4ODAwRDdDODAyIC8qIEJpdG1hcEltYWdlLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCTM3N0EzQTkwMTVFRkNFOUIwMDU5RjVDNyAvKiBCaXRtYXBJbWFnZUNHLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTk3NkQ2Qzc4MTIyQjhBM0QwMDFGRDFGNyAvKiBCbG9iLmNwcCBpbiBTb3Vy
Y2VzICovLApAQCAtMjUyNjIsNiArMjU0MDIsNyBAQAogCQkJCTg1Q0E5NzVEMEE5NjJFNTQwMDY5
MENDRiAvKiBET01Eb2N1bWVudFR5cGUubW0gaW4gU291cmNlcyAqLywKIAkJCQk4NTE4RENFQTBB
OUNDODBEMDA5MUI3QTYgLyogRE9NRE9NSW1wbGVtZW50YXRpb24ubW0gaW4gU291cmNlcyAqLywK
IAkJCQk1MkNDQTlFOTE1RTNGNjRDMDA1M0M3N0YgLyogRE9NRE9NTmFtZWRGbG93Q29sbGVjdGlv
bi5tbSBpbiBTb3VyY2VzICovLAorCQkJCTA3ODMyMjg0MTgwMTNFRDgwMDk5OUUwQyAvKiBNZWRp
YVN0cmVhbUF1ZGlvU291cmNlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTJEOUEyNDczMTVCOUMy
RDEwMEQzNDUyNyAvKiBET01ET01TZWN1cml0eVBvbGljeS5tbSBpbiBTb3VyY2VzICovLAogCQkJ
CTc2OTQ1NjVDMTIxNERCNjMwMDA3Q0JBRSAvKiBET01ET01Ub2tlbkxpc3QubW0gaW4gU291cmNl
cyAqLywKIAkJCQk3QUFCQTI1OTE0QkM2MTMzMDBBQTlBMTEgLyogRE9NRWRpdG9yLmNwcCBpbiBT
b3VyY2VzICovLApAQCAtMjUyODIsNiArMjU0MjMsNyBAQAogCQkJCTg1OUE5QzQ4MEFBNUUzQkQw
MEI2OTRCMiAvKiBET01IVE1MQmFzZUVsZW1lbnQubW0gaW4gU291cmNlcyAqLywKIAkJCQkwNzhF
MDkwNDE3RDE0Q0VFMDA0MjBBQTEgLyogTmF2aWdhdG9yTWVkaWFTdHJlYW0uY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJODVFQ0JFRUUwQUE3NjI2OTAwNTQ0RjBCIC8qIERPTUhUTUxCYXNlRm9udEVs
ZW1lbnQubW0gaW4gU291cmNlcyAqLywKKwkJCQkwN0M1OUI2ODE3Rjc4NEJBMDAwRkJDQkIgLyog
TWVkaWFTb3VyY2VTdGF0ZXMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJODU5QTlDNEEwQUE1RTNC
RDAwQjY5NEIyIC8qIERPTUhUTUxCb2R5RWxlbWVudC5tbSBpbiBTb3VyY2VzICovLAogCQkJCTg1
MTgzQjQzMEFBNjkyNjEwMEYxOUZBMyAvKiBET01IVE1MQlJFbGVtZW50Lm1tIGluIFNvdXJjZXMg
Ki8sCiAJCQkJODVCQTRDREUwQUE2ODYxQjAwODgwNTJEIC8qIERPTUhUTUxCdXR0b25FbGVtZW50
Lm1tIGluIFNvdXJjZXMgKi8sCkBAIC0yNTI4OSw2ICsyNTQzMSw3IEBACiAJCQkJODVERjJGOEYw
QUEzQzg4MTAwQUQ2NEM1IC8qIERPTUhUTUxDb2xsZWN0aW9uLm1tIGluIFNvdXJjZXMgKi8sCiAJ
CQkJMDc4RTA5MDAxN0QxNENFRTAwNDIwQUExIC8qIE1lZGlhU3RyZWFtRXZlbnQuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJRjVDMDQxRTQwRkZDQTk2RDAwODM5RDRBIC8qIERPTUhUTUxEYXRhTGlz
dEVsZW1lbnQubW0gaW4gU291cmNlcyAqLywKKwkJCQkwNzA1ODUyMzE3RkRDMTQwMDA1RjJCQ0Ig
LyogTWVkaWFUcmFja0NvbnN0cmFpbnRzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUQzNTlENzky
MTI5Q0EzQzAwMDA2RTVEMiAvKiBET01IVE1MRGV0YWlsc0VsZW1lbnQubW0gaW4gU291cmNlcyAq
LywKIAkJCQk4NUJBNEQwQzBBQTY4ODY4MDA4ODA1MkQgLyogRE9NSFRNTERpcmVjdG9yeUVsZW1l
bnQubW0gaW4gU291cmNlcyAqLywKIAkJCQk4NUJBNEQwRTBBQTY4ODY4MDA4ODA1MkQgLyogRE9N
SFRNTERpdkVsZW1lbnQubW0gaW4gU291cmNlcyAqLywKQEAgLTI1NzQwLDYgKzI1ODgzLDcgQEAK
IAkJCQlCMjc1MzU4RTBCMDUzQTY2MDAyQ0U2NEYgLyogSWNvbk1hYy5tbSBpbiBTb3VyY2VzICov
LAogCQkJCTUxRTFFQ0MwMEM5MUM5MDQwMERDMjU1QiAvKiBJY29uUmVjb3JkLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTQ1MDk5QzQxMTM3MEE3ODAwMDU4RDUxMyAvKiBJY29uVVJMLmNwcCBpbiBT
b3VyY2VzICovLAorCQkJCTA3MDU4NTE1MTdGQjBFRUEwMDVGMkJDQiAvKiBNZWRpYVN0cmVhbUNh
cGFiaWxpdGllcy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlDNTg1QTY2MjExRDRGQUM1MDA0QzNF
NEIgLyogSURCQmluZGluZ1V0aWxpdGllcy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk5NzEyQTVD
NTE1MDA0RURBMDA0OEFGMTAgLyogSURCRGF0YWJhc2VDYWxsYmFja3NJbXBsLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTk3MTJBNUM5MTUwMDRFREEwMDQ4QUYxMCAvKiBJREJEYXRhYmFzZUV4Y2Vw
dGlvbi5jcHAgaW4gU291cmNlcyAqLywKQEAgLTI1NzQ3LDYgKzI1ODkxLDcgQEAKIAkJCQk5NzEy
QTVFRjE1MDA0RURBMDA0OEFGMTAgLyogSURCUGVuZGluZ1RyYW5zYWN0aW9uTW9uaXRvci5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQk5NzEyQTVGRTE1MDA0RURBMDA0OEFGMTAgLyogSURCVmVyc2lv
bkNoYW5nZUV2ZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTFBNzFENTdCMEYzMzgxOTAwMEY5
Q0U0RSAvKiBJZGVudGlmaWVyUmVwLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTA3MDU4NTMxMTdG
REU2RDkwMDVGMkJDQiAvKiBKU01lZGlhVHJhY2tDb25zdHJhaW50LmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCTU5MTNBMjQxMTNENDlFQkEwMEY1QjA1QyAvKiBJZGVudGlmaWVyc0ZhY3RvcnkuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJQzNDRjE3QTQxNUIwMDYzRjAwMjc2RDM5IC8qIElkVGFyZ2V0
T2JzZXJ2ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQzNDRjE3QTYxNUIwMDYzRjAwMjc2RDM5
IC8qIElkVGFyZ2V0T2JzZXJ2ZXJSZWdpc3RyeS5jcHAgaW4gU291cmNlcyAqLywKQEAgLTI1OTE2
LDYgKzI2MDYxLDcgQEAKIAkJCQk1MUVDOTI2NTBDRTkwREQ0MDBGOTAzMDggLyogSlNDdXN0b21T
UUxTdGF0ZW1lbnRFcnJvckNhbGxiYWNrLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUUxMEI5M0Mz
MEI3M0MyOTEwMDNFRDg5MCAvKiBKU0N1c3RvbVhQYXRoTlNSZXNvbHZlci5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQkxQUU4MkY4RjBDQUFGQTlEMDAyMjM3QUUgLyogSlNEYXRhYmFzZS5jcHAgaW4g
U291cmNlcyAqLywKKwkJCQkwN0M1OUI2RTE3Rjc5NEY2MDAwRkJDQkIgLyogSlNNZWRpYVNvdXJj
ZVN0YXRlc0N1c3RvbS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCNTlERDY5QTExOTAyOUU1MDA3
RTk2ODQgLyogSlNEYXRhYmFzZUNhbGxiYWNrLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUI1OENF
QjZBMTE5MTM2MDcwMDJBNjc5MCAvKiBKU0RhdGFiYXNlU3luYy5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQk0MTYyQTQ1NzEwMTE0NjQ3MDBERkYzRUQgLyogSlNEZWRpY2F0ZWRXb3JrZXJHbG9iYWxT
Y29wZS5jcHAgaW4gU291cmNlcyAqLywKQEAgLTI2MDQ0LDYgKzI2MTkwLDcgQEAKIAkJCQkxQUUy
QUEyRTBBMUNEQUI0MDBCNDJCMjUgLyogSlNIVE1MSGVhZGluZ0VsZW1lbnQuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJMUFFMkFBMzAwQTFDREFCNDAwQjQyQjI1IC8qIEpTSFRNTEhSRWxlbWVudC5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQkxQTg1QjE4RjBBMUIxOEEyMDBEOEM4N0MgLyogSlNIVE1M
SHRtbEVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMDcwNTg1MzgxN0ZFMDQ0RjAwNUYy
QkNCIC8qIE1lZGlhVHJhY2tDb25zdHJhaW50U2V0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUJD
NDkxOEM4MEJGRUEwNTAwMDlENjMxNiAvKiBKU0hUTUxJRnJhbWVFbGVtZW50LmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTFBRTJBQTk3MEExQ0REMkQwMEI0MkIyNSAvKiBKU0hUTUxJbWFnZUVsZW1l
bnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTgwRTdFOTgwQTFBODNFMzAwN0ZCOEM1IC8qIEpT
SFRNTElucHV0RWxlbWVudC5jcHAgaW4gU291cmNlcyAqLywKQEAgLTI2MTYwLDYgKzI2MzA3LDcg
QEAKIAkJCQk3RTQ2RjZGQTE2MjdBMkNBMDAwNjIyMjMgLyogSlNPRVNFbGVtZW50SW5kZXhVaW50
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTkwMDE3ODgwMTJFMDM3MDcwMDY0ODQ2MiAvKiBKU09F
U1N0YW5kYXJkRGVyaXZhdGl2ZXMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNkVCRjBFNzYxMkE5
ODY4ODAwREIxNzA5IC8qIEpTT0VTVGV4dHVyZUZsb2F0LmNwcCBpbiBTb3VyY2VzICovLAorCQkJ
CTA3MDU4NTNBMTdGRTA3NzAwMDVGMkJDQiAvKiBNZWRpYVRyYWNrQ29uc3RyYWludC5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQlBMzFDNEU1MjE2RTAyQjA4MDAyRjc5NTcgLyogSlNPRVNUZXh0dXJl
SGFsZkZsb2F0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTc3QTE3QUE2MTJGMjhCMkEwMDRFMDJG
NiAvKiBKU09FU1ZlcnRleEFycmF5T2JqZWN0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUZERjZC
QUY4MTM0QTRDOTgwMDgyMjkyMCAvKiBKU09mZmxpbmVBdWRpb0NvbXBsZXRpb25FdmVudC5jcHAg
aW4gU291cmNlcyAqLywKQEAgLTI2NTAyLDYgKzI2NjUwLDcgQEAKIAkJCQk5ODVCQjk2RDEzQTk0
MDU4MDA3QTBCNjkgLyogTGlua1JlbEF0dHJpYnV0ZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlC
QzdGQTYyMDBEMUYwQ0JEMDBEQjIyQTkgLyogTGl2ZU5vZGVMaXN0LmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCTA3OEUwOTEwMTdEMTRDRUUwMDQyMEFBMSAvKiBSVENTdGF0c1Jlc3BvbnNlLmNwcCBp
biBTb3VyY2VzICovLAorCQkJCTA3MDU4NTAyMTdGQTEwRDAwMDVGMkJDQiAvKiBKU0FsbFZpZGVv
Q2FwYWJpbGl0aWVzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTk3NTlFOTNFMTRFRjFDRjgwMDI2
QTJERCAvKiBMb2FkYWJsZVRleHRUcmFjay5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk2NTZEMzcz
MzBBREJBNURFMDBBNDU1NEQgLyogTG9hZGVyTlNVUkxFeHRyYXMubW0gaW4gU291cmNlcyAqLywK
IAkJCQk3RUU2ODQ2ODEyRDI2RTM4MDBFNzk0MTUgLyogTG9hZGVyUnVuTG9vcENGLmNwcCBpbiBT
b3VyY2VzICovLApAQCAtMjY1MTQsNiArMjY2NjMsNyBAQAogCQkJCUJDMjVCNTJBMTMxQzZEMzkw
MDE4MEUxMCAvKiBMb2NhbGl6ZWRTdHJpbmdzTWFjLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUJD
RTFDNDFDMEQ5ODI5ODEwMDNCMDJGMiAvKiBMb2NhdGlvbi5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQkwNzhFMDkwODE3RDE0Q0VFMDA0MjBBQTEgLyogUlRDRFRNRlRvbmVDaGFuZ2VFdmVudC5jcHAg
aW4gU291cmNlcyAqLywKKwkJCQkwNzA1ODUxQTE3RkI0NEI0MDA1RjJCQ0IgLyogSlNBbGxBdWRp
b0NhcGFiaWxpdGllcy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBODIzOUUwMDA5QjNDRjhBMDBC
NjA2NDEgLyogTG9nZ2luZy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxNDAyNjQ1RTBBRkRDMTlC
MDA1OTE5RTIgLyogTG9nZ2luZ01hYy5tbSBpbiBTb3VyY2VzICovLAogCQkJCTFBOEY2QkM1MERC
NTVDREMwMDFEQjc5NCAvKiBNYW5pZmVzdFBhcnNlci5jcHAgaW4gU291cmNlcyAqLywKQEAgLTI2
NTgwLDYgKzI2NzMwLDcgQEAKIAkJCQlENkUyNzZBRjE0NjM3NDU1MDAxRDI4MEEgLyogTXV0YXRp
b25PYnNlcnZlclJlZ2lzdHJhdGlvbi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlDNkYwOEZCQzE0
MzBGRThGMDA2ODU4NDkgLyogTXV0YXRpb25SZWNvcmQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
NTJCNkM5QzUxNUUzRjRERjAwNjkwQjA1IC8qIE5hbWVkRmxvd0NvbGxlY3Rpb24uY3BwIGluIFNv
dXJjZXMgKi8sCisJCQkJMDcwNTg1MzMxN0ZERTZEOTAwNUYyQkNCIC8qIEpTTWVkaWFUcmFja0Nv
bnN0cmFpbnRzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUJDRjM0QTM3MTFBMjMxQ0QwMEM3MTgw
NCAvKiBOYW1lZE5vZGVNYXAuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTgxODcyMjQwOTc3RDND
MDAwNTgyNkQ5IC8qIE5hbWVOb2RlTGlzdC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlFMTBCOUI2
RDBCNzQ3NTk5MDAzRUQ4OTAgLyogTmF0aXZlWFBhdGhOU1Jlc29sdmVyLmNwcCBpbiBTb3VyY2Vz
ICovLApAQCAtMjY4NDAsNiArMjY5OTEsNyBAQAogCQkJCTkzNEY3MTNFMEQ1QTZGMjgwMDAxOEQ2
OSAvKiBSZXNvdXJjZUVycm9yQmFzZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk3RUU2ODQ2QjEy
RDI2RTM4MDBFNzk0MTUgLyogUmVzb3VyY2VFcnJvckNGLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CTUxNEM3NjUwMENFOTIzNEUwMDdFRjNDRCAvKiBSZXNvdXJjZUVycm9yTWFjLm1tIGluIFNvdXJj
ZXMgKi8sCisJCQkJMDcwNTg1MTIxN0ZBNzEwNzAwNUYyQkNCIC8qIEpTTWVkaWFTdHJlYW1DYXBh
YmlsaXRpZXMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTE0Qzc2NzgwQ0U5MjNBMTAwN0VGM0NE
IC8qIFJlc291cmNlSGFuZGxlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTdFRTY4NDZDMTJEMjZF
MzgwMEU3OTQxNSAvKiBSZXNvdXJjZUhhbmRsZUNGTmV0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CUUxQkEwMDMxMTZGQjkyQUMwMEJBN0EzNSAvKiBSZXNvdXJjZUhhbmRsZUNsaWVudC5jcHAgaW4g
U291cmNlcyAqLywKQEAgLTI3MTQxLDYgKzI3MjkzLDcgQEAKIAkJCQlCMjIyNzlDNDBEMDBCRjIy
MDA3MUI3ODIgLyogU1ZHRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZC5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQlCMjIyNzlDNzBEMDBCRjIyMDA3MUI3ODIgLyogU1ZHRkVCbGVuZEVsZW1lbnQuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJQjIyMjc5Q0EwRDAwQkYyMjAwNzFCNzgyIC8qIFNWR0ZFQ29s
b3JNYXRyaXhFbGVtZW50LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTA3MDU4NTM1MTdGREU2RDkw
MDVGMkJDQiAvKiBKU01lZGlhVHJhY2tDb25zdHJhaW50U2V0LmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCUIyMjI3OUNEMEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdGRUNvbXBvbmVudFRyYW5zZmVyRWxl
bWVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCMjIyNzlEMDBEMDBCRjIyMDA3MUI3ODIgLyog
U1ZHRkVDb21wb3NpdGVFbGVtZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTE5MjEzMjc0MTFD
MEU2QkIwMDQ1NjIzOCAvKiBTVkdGRUNvbnZvbHZlTWF0cml4RWxlbWVudC5jcHAgaW4gU291cmNl
cyAqLywKQEAgLTI3MjAzLDYgKzI3MzU2LDcgQEAKIAkJCQlCMjIyN0EzQjBEMDBCRjIyMDA3MUI3
ODIgLyogU1ZHTGluZUVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQjIyMjdBNDAwRDAw
QkYyMjAwNzFCNzgyIC8qIFNWR0xvY2F0YWJsZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCMjIy
N0E0MzBEMDBCRjIyMDA3MUI3ODIgLyogU1ZHTWFya2VyRWxlbWVudC5jcHAgaW4gU291cmNlcyAq
LywKKwkJCQkwNzA1ODUxNzE3RkI0MEU5MDA1RjJCQ0IgLyogSlNNZWRpYVN0cmVhbUNhcGFiaWxp
dGllc0N1c3RvbS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCMjIyN0E0NjBEMDBCRjIyMDA3MUI3
ODIgLyogU1ZHTWFza0VsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQjIyMjdBNEEwRDAw
QkYyMjAwNzFCNzgyIC8qIFNWR01ldGFkYXRhRWxlbWVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQlCMkExRjJCMDBDRUYwQUJGMDA0NDJGNkEgLyogU1ZHTWlzc2luZ0dseXBoRWxlbWVudC5jcHAg
aW4gU291cmNlcyAqLywKQEAgLTI3MjY2LDYgKzI3NDIwLDcgQEAKIAkJCQlCMjIyN0FGMjBEMDBC
RjIyMDA3MUI3ODIgLyogU1ZHVmlld1NwZWMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJODQ4NTIy
OEExMTkwMTczQzAwNkVEQzdGIC8qIFNWR1ZLZXJuRWxlbWVudC5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQlCMjIyN0FGNTBEMDBCRjIyMDA3MUI3ODIgLyogU1ZHWm9vbUFuZFBhbi5jcHAgaW4gU291
cmNlcyAqLywKKwkJCQkwNzNBQjRCNzE3RjkyRUNGMDA2RTBENkYgLyogSlNDYXBhYmlsaXR5UmFu
Z2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQjJFNEVDOTcwRDAwQzIyQjAwNDMyNjQzIC8qIFNW
R1pvb21FdmVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlFMTgwODExMjE2RkNGNDJGMDBCODBE
MDcgLyogU3luY2hyb25vdXNMb2FkZXJDbGllbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRTE4
MDgxMTYxNkZDRjlDQjAwQjgwRDA3IC8qIFN5bmNocm9ub3VzTG9hZGVyQ2xpZW50Lm1tIGluIFNv
dXJjZXMgKi8sCkBAIC0yNzQ0Niw2ICsyNzYwMSw3IEBACiAJCQkJOTdBQUJEMUExNEZBMDlENTAw
NzQ1N0FFIC8qIFdlYlNvY2tldC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk5N0FBQkQxRDE0RkEw
OUQ1MDA3NDU3QUUgLyogV2ViU29ja2V0Q2hhbm5lbC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk0
QTM4QkY1MDE0RkUxQzA5MDA2MTI1MTIgLyogV2ViU29ja2V0RGVmbGF0ZUZyYW1lci5jcHAgaW4g
U291cmNlcyAqLywKKwkJCQkwN0M1OUI3MTE3Rjc5QzdDMDAwRkJDQkIgLyogSlNNZWRpYVNvdXJj
ZVN0YXRlcy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk5N0FBQkQyMDE0RkEwOUQ1MDA3NDU3QUUg
LyogV2ViU29ja2V0RGVmbGF0ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJOTdBQUJEMjIxNEZB
MDlENTAwNzQ1N0FFIC8qIFdlYlNvY2tldEV4dGVuc2lvbkRpc3BhdGNoZXIuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJNEE1QTJBREIxNjFFN0UwMDAwNTg4OUREIC8qIFdlYlNvY2tldEV4dGVuc2lv
blBhcnNlci5jcHAgaW4gU291cmNlcyAqLywKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTTWVkaWFTb3VyY2VTdGF0ZXNDdXN0b20uY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTTWVkaWFTb3VyY2VTdGF0ZXNDdXN0b20uY3BwCShyZXZpc2lv
biAwKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNNZWRpYVNvdXJjZVN0YXRlc0N1
c3RvbS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw4OCBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFT
IElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisg
KiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1
ZGUgImNvbmZpZy5oIgorCisjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKKworI2luY2x1ZGUgIkpT
TWVkaWFTb3VyY2VTdGF0ZXMuaCIKKworI2luY2x1ZGUgIk1lZGlhU291cmNlU3RhdGVzLmgiCisK
K3VzaW5nIG5hbWVzcGFjZSBKU0M7CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworSlNWYWx1ZSBK
U01lZGlhU291cmNlU3RhdGVzOjp3aWR0aChFeGVjU3RhdGUqKSBjb25zdAoreworICAgIGlmICgh
aW1wbCgpLT5oYXNWaWRlb1NvdXJjZSgpKQorICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsK
KworICAgIHJldHVybiBqc051bWJlcihpbXBsKCktPndpZHRoKCkpOworfQorCitKU1ZhbHVlIEpT
TWVkaWFTb3VyY2VTdGF0ZXM6OmhlaWdodChFeGVjU3RhdGUqKSBjb25zdAoreworICAgIGlmICgh
aW1wbCgpLT5oYXNWaWRlb1NvdXJjZSgpKQorICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsK
KyAgICAKKyAgICByZXR1cm4ganNOdW1iZXIoaW1wbCgpLT5oZWlnaHQoKSk7Cit9CisKK0pTVmFs
dWUgSlNNZWRpYVNvdXJjZVN0YXRlczo6ZnJhbWVSYXRlKEV4ZWNTdGF0ZSopIGNvbnN0Cit7Cisg
ICAgaWYgKCFpbXBsKCktPmhhc1ZpZGVvU291cmNlKCkpCisgICAgICAgIHJldHVybiBqc1VuZGVm
aW5lZCgpOworICAgIAorICAgIHJldHVybiBqc051bWJlcihpbXBsKCktPmZyYW1lUmF0ZSgpKTsK
K30KKworSlNWYWx1ZSBKU01lZGlhU291cmNlU3RhdGVzOjphc3BlY3RSYXRpbyhFeGVjU3RhdGUq
KSBjb25zdAoreworICAgIGlmICghaW1wbCgpLT5oYXNWaWRlb1NvdXJjZSgpKQorICAgICAgICBy
ZXR1cm4ganNVbmRlZmluZWQoKTsKKyAgICAKKyAgICByZXR1cm4ganNOdW1iZXIoaW1wbCgpLT5h
c3BlY3RSYXRpbygpKTsKK30KKworSlNWYWx1ZSBKU01lZGlhU291cmNlU3RhdGVzOjpmYWNpbmdN
b2RlKEV4ZWNTdGF0ZSogZXhlYykgY29uc3QKK3sKKyAgICBpZiAoIWltcGwoKS0+aGFzVmlkZW9T
b3VyY2UoKSkKKyAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CisKKyAgICByZXR1cm4ganNT
dHJpbmdXaXRoQ2FjaGUoZXhlYywgaW1wbCgpLT5mYWNpbmdNb2RlKCkpOworfQorCitKU1ZhbHVl
IEpTTWVkaWFTb3VyY2VTdGF0ZXM6OnZvbHVtZShFeGVjU3RhdGUqKSBjb25zdAoreworICAgIGlm
IChpbXBsKCktPmhhc1ZpZGVvU291cmNlKCkpCisgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgp
OworICAgIAorICAgIHJldHVybiBqc051bWJlcihpbXBsKCktPnZvbHVtZSgpKTsKK30KKworfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTTWVkaWFTdHJlYW1DYXBhYmlsaXRpZXNDdXN0b20uY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTWVkaWFTdHJlYW1DYXBhYmlsaXRpZXNDdXN0
b20uY3BwCShyZXZpc2lvbiAwKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNNZWRp
YVN0cmVhbUNhcGFiaWxpdGllc0N1c3RvbS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw1
MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuIAorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2lmIEVOQUJMRShNRURJQV9T
VFJFQU0pCisKKyNpbmNsdWRlICJKU01lZGlhU3RyZWFtQ2FwYWJpbGl0aWVzLmgiCisKKyNpbmNs
dWRlICJKU0FsbEF1ZGlvQ2FwYWJpbGl0aWVzLmgiCisjaW5jbHVkZSAiSlNBbGxWaWRlb0NhcGFi
aWxpdGllcy5oIgorI2luY2x1ZGUgIk1lZGlhU3RyZWFtQ2FwYWJpbGl0aWVzLmgiCisKK3VzaW5n
IG5hbWVzcGFjZSBKU0M7CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworSlNDOjpKU1ZhbHVlIHRv
SlMoSlNDOjpFeGVjU3RhdGUqIGV4ZWMsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IE1lZGlhU3RyZWFtQ2FwYWJpbGl0aWVzKiBvYmplY3QpCit7CisgICAgaWYgKCFvYmplY3QpCisg
ICAgICAgIHJldHVybiBqc051bGwoKTsKKworICAgIGlmIChvYmplY3QtPmhhc1ZpZGVvU291cmNl
KCkpCisgICAgICAgIHJldHVybiB3cmFwPEpTQWxsVmlkZW9DYXBhYmlsaXRpZXM+KGV4ZWMsIGds
b2JhbE9iamVjdCwgc3RhdGljX2Nhc3Q8QWxsVmlkZW9DYXBhYmlsaXRpZXMqPihvYmplY3QpKTsK
KworICAgIHJldHVybiB3cmFwPEpTQWxsQXVkaW9DYXBhYmlsaXRpZXM+KGV4ZWMsIGdsb2JhbE9i
amVjdCwgc3RhdGljX2Nhc3Q8QWxsQXVkaW9DYXBhYmlsaXRpZXMqPihvYmplY3QpKTsKK30KKwor
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKE1FRElBX1NUUkVBTSkK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9FdmVudE5hbWVzLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvZG9tL0V2ZW50TmFtZXMuaAkocmV2aXNpb24gMTU3MDE2KQorKysgU291cmNl
L1dlYkNvcmUvZG9tL0V2ZW50TmFtZXMuaAkod29ya2luZyBjb3B5KQpAQCAtMjM4LDYgKzIzOCw3
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICBtYWNybyhyZW1vdmVzdHJlYW0pIFwKICAgICBt
YWNybyhzaWduYWxpbmdzdGF0ZWNoYW5nZSkgXAogICAgIG1hY3JvKHJlbW92ZXRyYWNrKSBcCisg
ICAgbWFjcm8ob3ZlcmNvbnN0cmFpbmVkKSBcCiAgICAgbWFjcm8obXV0ZSkgXAogICAgIG1hY3Jv
KHVubXV0ZSkgXAogICAgIG1hY3JvKHN0YXJ0ZWQpIFwKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtQ2VudGVyLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbUNlbnRlci5jcHAJ
KHJldmlzaW9uIDE1NzAxNikKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFt
L01lZGlhU3RyZWFtQ2VudGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjcsMTEgKzY3LDYgQEAg
TWVkaWFTdHJlYW1DZW50ZXI6On5NZWRpYVN0cmVhbUNlbnRlcigpCiB7CiB9CiAKLXZvaWQgTWVk
aWFTdHJlYW1DZW50ZXI6OmVuZExvY2FsTWVkaWFTdHJlYW0oTWVkaWFTdHJlYW1EZXNjcmlwdG9y
KiBzdHJlYW1EZXNjcmlwdG9yKQotewotICAgIHN0cmVhbURlc2NyaXB0b3ItPnNldEVuZGVkKCk7
Ci19Ci0KIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEVOQUJMRShNRURJQV9T
VFJFQU0pCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYVN0
cmVhbUNlbnRlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlh
c3RyZWFtL01lZGlhU3RyZWFtQ2VudGVyLmgJKHJldmlzaW9uIDE1NzAxNikKKysrIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtQ2VudGVyLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTM0LDYgKzM0LDcgQEAKIAogI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCiAKKyNp
bmNsdWRlICJNZWRpYVN0cmVhbVNvdXJjZS5oIgogI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+
CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKQEAgLTQzLDkgKzQ0LDExIEBAIGNs
YXNzIE1lZGlhQ29uc3RyYWludHM7CiBjbGFzcyBNZWRpYVN0cmVhbUNyZWF0aW9uQ2xpZW50Owog
Y2xhc3MgTWVkaWFTdHJlYW1DcmVhdGlvbkNsaWVudDsKIGNsYXNzIE1lZGlhU3RyZWFtRGVzY3Jp
cHRvcjsKLWNsYXNzIE1lZGlhU3RyZWFtU291cmNlOworY2xhc3MgTWVkaWFTdHJlYW1Tb3VyY2VD
YXBhYmlsaXRpZXM7CiBjbGFzcyBNZWRpYVN0cmVhbVRyYWNrU291cmNlc1JlcXVlc3RDbGllbnQ7
CiAKK3N0cnVjdCBNZWRpYVN0cmVhbVNvdXJjZVN0YXRlczsKKwogY2xhc3MgTWVkaWFTdHJlYW1D
ZW50ZXIgewogcHVibGljOgogICAgIHZpcnR1YWwgfk1lZGlhU3RyZWFtQ2VudGVyKCk7CkBAIC01
OSwxNCArNjIsNiBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIGJvb2wgZ2V0TWVkaWFTdHJlYW1U
cmFja1NvdXJjZXMoUGFzc1JlZlB0cjxNZWRpYVN0cmVhbVRyYWNrU291cmNlc1JlcXVlc3RDbGll
bnQ+KSA9IDA7CiAKLSAgICB2aXJ0dWFsIHZvaWQgZGlkU2V0TWVkaWFTdHJlYW1UcmFja0VuYWJs
ZWQoTWVkaWFTdHJlYW1Tb3VyY2UqKSA9IDA7Ci0KLSAgICB2aXJ0dWFsIGJvb2wgZGlkQWRkTWVk
aWFTdHJlYW1UcmFjayhNZWRpYVN0cmVhbVNvdXJjZSopID0gMDsKLSAgICB2aXJ0dWFsIGJvb2wg
ZGlkUmVtb3ZlTWVkaWFTdHJlYW1UcmFjayhNZWRpYVN0cmVhbVNvdXJjZSopID0gMDsKLQotICAg
IHZpcnR1YWwgdm9pZCBkaWRTdG9wTG9jYWxNZWRpYVN0cmVhbShNZWRpYVN0cmVhbURlc2NyaXB0
b3IqKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGRpZENyZWF0ZU1lZGlhU3RyZWFtKE1lZGlhU3Ry
ZWFtRGVzY3JpcHRvciopID0gMDsKLQogcHJvdGVjdGVkOgogICAgIE1lZGlhU3RyZWFtQ2VudGVy
KCk7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlhU3Ry
ZWFtRGVzY3JpcHRvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1EZXNjcmlwdG9yLmNwcAkocmV2aXNpb24gMTU3MDE2KQor
KysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1EZXNjcmlw
dG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzUsNiArMzUsNyBAQAogCiAjaW5jbHVkZSAiTWVk
aWFTdHJlYW1EZXNjcmlwdG9yLmgiCiAKKyNpbmNsdWRlICJNZWRpYVN0cmVhbUNlbnRlci5oIgog
I2luY2x1ZGUgIk1lZGlhU3RyZWFtU291cmNlLmgiCiAjaW5jbHVkZSAiVVVJRC5oIgogI2luY2x1
ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CkBAIC00Nyw2ICs0OCwxNSBAQCBQYXNzUmVmUHRyPE1lZGlh
U3RyZWFtRGVzY3JpcHRvcj4gTWVkaWFTCiAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBNZWRpYVN0
cmVhbURlc2NyaXB0b3IoY3JlYXRlQ2Fub25pY2FsVVVJRFN0cmluZygpLCBhdWRpb1NvdXJjZXMs
IHZpZGVvU291cmNlcykpOwogfQogCitNZWRpYVN0cmVhbURlc2NyaXB0b3I6On5NZWRpYVN0cmVh
bURlc2NyaXB0b3IoKQoreworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9hdWRpb1N0cmVh
bVNvdXJjZXMuc2l6ZSgpOyBpKyspCisgICAgICAgIG1fYXVkaW9TdHJlYW1Tb3VyY2VzW2ldLT5z
ZXRTdHJlYW0oMCk7CisgICAgCisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX3ZpZGVvU3Ry
ZWFtU291cmNlcy5zaXplKCk7IGkrKykKKyAgICAgICAgbV92aWRlb1N0cmVhbVNvdXJjZXNbaV0t
PnNldFN0cmVhbSgwKTsKK30KKwogdm9pZCBNZWRpYVN0cmVhbURlc2NyaXB0b3I6OmFkZFNvdXJj
ZShQYXNzUmVmUHRyPE1lZGlhU3RyZWFtU291cmNlPiBzb3VyY2UpCiB7CiAgICAgc3dpdGNoIChz
b3VyY2UtPnR5cGUoKSkgewpAQCAtNjcsMTUgKzc3LDE5IEBAIHZvaWQgTWVkaWFTdHJlYW1EZXNj
cmlwdG9yOjpyZW1vdmVTb3VyY2UKICAgICBzd2l0Y2ggKHNvdXJjZS0+dHlwZSgpKSB7CiAgICAg
Y2FzZSBNZWRpYVN0cmVhbVNvdXJjZTo6QXVkaW86CiAgICAgICAgIHBvcyA9IG1fYXVkaW9TdHJl
YW1Tb3VyY2VzLmZpbmQoc291cmNlKTsKLSAgICAgICAgaWYgKHBvcyAhPSBub3RGb3VuZCkKLSAg
ICAgICAgICAgIG1fYXVkaW9TdHJlYW1Tb3VyY2VzLnJlbW92ZShwb3MpOworICAgICAgICBpZiAo
cG9zID09IG5vdEZvdW5kKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBtX2F1ZGlvU3Ry
ZWFtU291cmNlcy5yZW1vdmUocG9zKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBNZWRpYVN0
cmVhbVNvdXJjZTo6VmlkZW86CiAgICAgICAgIHBvcyA9IG1fdmlkZW9TdHJlYW1Tb3VyY2VzLmZp
bmQoc291cmNlKTsKLSAgICAgICAgaWYgKHBvcyAhPSBub3RGb3VuZCkKLSAgICAgICAgICAgIG1f
dmlkZW9TdHJlYW1Tb3VyY2VzLnJlbW92ZShwb3MpOworICAgICAgICBpZiAocG9zID09IG5vdEZv
dW5kKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBtX3ZpZGVvU3RyZWFtU291cmNlcy5y
ZW1vdmUocG9zKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQorCisgICAgc291cmNlLT5zZXRTdHJl
YW0oMCk7CiB9CiAKIHZvaWQgTWVkaWFTdHJlYW1EZXNjcmlwdG9yOjphZGRSZW1vdGVTb3VyY2Uo
TWVkaWFTdHJlYW1Tb3VyY2UqIHNvdXJjZSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21lZGlhc3RyZWFtL01lZGlhU3RyZWFtRGVzY3JpcHRvci5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtRGVzY3JpcHRvci5oCShy
ZXZpc2lvbiAxNTcwMTYpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9N
ZWRpYVN0cmVhbURlc2NyaXB0b3IuaAkod29ya2luZyBjb3B5KQpAQCAtNTIsOSArNTIsMTAgQEAg
cHVibGljOgogCiBjbGFzcyBNZWRpYVN0cmVhbURlc2NyaXB0b3IgOiBwdWJsaWMgUmVmQ291bnRl
ZDxNZWRpYVN0cmVhbURlc2NyaXB0b3I+IHsKIHB1YmxpYzoKLQogICAgIHN0YXRpYyBQYXNzUmVm
UHRyPE1lZGlhU3RyZWFtRGVzY3JpcHRvcj4gY3JlYXRlKGNvbnN0IE1lZGlhU3RyZWFtU291cmNl
VmVjdG9yJiBhdWRpb1NvdXJjZXMsIGNvbnN0IE1lZGlhU3RyZWFtU291cmNlVmVjdG9yJiB2aWRl
b1NvdXJjZXMpOwogCisgICAgdmlydHVhbCB+TWVkaWFTdHJlYW1EZXNjcmlwdG9yKCk7CisKICAg
ICBNZWRpYVN0cmVhbURlc2NyaXB0b3JDbGllbnQqIGNsaWVudCgpIGNvbnN0IHsgcmV0dXJuIG1f
Y2xpZW50OyB9CiAgICAgdm9pZCBzZXRDbGllbnQoTWVkaWFTdHJlYW1EZXNjcmlwdG9yQ2xpZW50
KiBjbGllbnQpIHsgbV9jbGllbnQgPSBjbGllbnQ7IH0KIApJbmRleDogU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1Tb3VyY2UuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtU291cmNlLmNw
cAkocmV2aXNpb24gMTU3MDE2KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJl
YW0vTWVkaWFTdHJlYW1Tb3VyY2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNiBAQAog
LyoKICAqIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
ICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzQsMjYgKzM1LDM5IEBACiAKICNp
bmNsdWRlICJNZWRpYVN0cmVhbVNvdXJjZS5oIgogCi0jaW5jbHVkZSAiQXVkaW9EZXN0aW5hdGlv
bkNvbnN1bWVyLmgiCisjaW5jbHVkZSAiTWVkaWFTdHJlYW1DZW50ZXIuaCIKKyNpbmNsdWRlICJN
ZWRpYVN0cmVhbVNvdXJjZUNhcGFiaWxpdGllcy5oIgorI2luY2x1ZGUgIlVVSUQuaCIKKwogI2lu
Y2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotUGFzc1Jl
ZlB0cjxNZWRpYVN0cmVhbVNvdXJjZT4gTWVkaWFTdHJlYW1Tb3VyY2U6OmNyZWF0ZShjb25zdCBT
dHJpbmcmIGlkLCBUeXBlIHR5cGUsIGNvbnN0IFN0cmluZyYgbmFtZSwgUmVhZHlTdGF0ZSByZWFk
eVN0YXRlLCBib29sIHJlcXVpcmVzQ29uc3VtZXIpCi17Ci0gICAgcmV0dXJuIGFkb3B0UmVmKG5l
dyBNZWRpYVN0cmVhbVNvdXJjZShpZCwgdHlwZSwgbmFtZSwgcmVhZHlTdGF0ZSwgcmVxdWlyZXND
b25zdW1lcikpOwotfQotCi1NZWRpYVN0cmVhbVNvdXJjZTo6TWVkaWFTdHJlYW1Tb3VyY2UoY29u
c3QgU3RyaW5nJiBpZCwgVHlwZSB0eXBlLCBjb25zdCBTdHJpbmcmIG5hbWUsIFJlYWR5U3RhdGUg
cmVhZHlTdGF0ZSwgYm9vbCByZXF1aXJlc0NvbnN1bWVyKQorTWVkaWFTdHJlYW1Tb3VyY2U6Ok1l
ZGlhU3RyZWFtU291cmNlKGNvbnN0IFN0cmluZyYgaWQsIFR5cGUgdHlwZSwgY29uc3QgU3RyaW5n
JiBuYW1lKQogICAgIDogbV9pZChpZCkKICAgICAsIG1fdHlwZSh0eXBlKQogICAgICwgbV9uYW1l
KG5hbWUpCi0gICAgLCBtX3JlYWR5U3RhdGUocmVhZHlTdGF0ZSkKKyAgICAsIG1fcmVhZHlTdGF0
ZShOZXcpCiAgICAgLCBtX3N0cmVhbSgwKQotICAgICwgbV9yZXF1aXJlc0NvbnN1bWVyKHJlcXVp
cmVzQ29uc3VtZXIpCiAgICAgLCBtX2VuYWJsZWQodHJ1ZSkKICAgICAsIG1fbXV0ZWQoZmFsc2Up
CisgICAgLCBtX3JlYWRvbmx5KGZhbHNlKQorICAgICwgbV9yZW1vdGUoZmFsc2UpCiB7CisgICAg
aWYgKCFtX2lkLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuOworICAgIAorICAgIG1faWQgPSBj
cmVhdGVDYW5vbmljYWxVVUlEU3RyaW5nKCk7Cit9CisKK3ZvaWQgTWVkaWFTdHJlYW1Tb3VyY2U6
OnJlc2V0KCkKK3sKKyAgICBtX3JlYWR5U3RhdGUgPSBOZXc7CisgICAgbV9zdHJlYW0gPSAwOwor
ICAgIG1fZW5hYmxlZCA9IHRydWU7CisgICAgbV9tdXRlZCA9IGZhbHNlOworICAgIG1fcmVhZG9u
bHkgPSBmYWxzZTsKKyAgICBtX3JlbW90ZSA9IGZhbHNlOwogfQogCiB2b2lkIE1lZGlhU3RyZWFt
U291cmNlOjpzZXRSZWFkeVN0YXRlKFJlYWR5U3RhdGUgcmVhZHlTdGF0ZSkKQEAgLTYzLDcgKzc3
LDcgQEAgdm9pZCBNZWRpYVN0cmVhbVNvdXJjZTo6c2V0UmVhZHlTdGF0ZShSZQogCiAgICAgbV9y
ZWFkeVN0YXRlID0gcmVhZHlTdGF0ZTsKICAgICBmb3IgKFZlY3RvcjxPYnNlcnZlcio+OjppdGVy
YXRvciBpID0gbV9vYnNlcnZlcnMuYmVnaW4oKTsgaSAhPSBtX29ic2VydmVycy5lbmQoKTsgKytp
KQotICAgICAgICAoKmkpLT5zb3VyY2VDaGFuZ2VkU3RhdGUoKTsKKyAgICAgICAgKCppKS0+c291
cmNlU3RhdGVDaGFuZ2VkKCk7CiB9CiAKIHZvaWQgTWVkaWFTdHJlYW1Tb3VyY2U6OmFkZE9ic2Vy
dmVyKE1lZGlhU3RyZWFtU291cmNlOjpPYnNlcnZlciogb2JzZXJ2ZXIpCkBAIC04MCw1MyArOTQs
NzQgQEAgdm9pZCBNZWRpYVN0cmVhbVNvdXJjZTo6cmVtb3ZlT2JzZXJ2ZXIoTQogCiB2b2lkIE1l
ZGlhU3RyZWFtU291cmNlOjpzZXRTdHJlYW0oTWVkaWFTdHJlYW1EZXNjcmlwdG9yKiBzdHJlYW0p
CiB7Ci0gICAgQVNTRVJUKCFtX3N0cmVhbSAmJiBzdHJlYW0pOworICAgIC8vIEZJWE1FOiBBIHNv
dXJjZSBzaG91bGQgbm90IG5lZWQgdG8ga25vdyBhYm91dCBpdHMgc3RyZWFtKHMpLiBUaGlzIHdp
bGwgYmUgZml4ZWQgYXMgYSBwYXJ0IG9mCisgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTEyMTk1NAogICAgIG1fc3RyZWFtID0gc3RyZWFtOwogfQogCitNZWRp
YUNvbnN0cmFpbnRzKiBNZWRpYVN0cmVhbVNvdXJjZTo6Y29uc3RyYWludHMoKSBjb25zdAorewor
ICAgIC8vIEZJWE1FOiBXaGlsZSB0aGlzIHJldHVybnMgCisgICAgLy8gaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyMjQyOAorICAgIHJldHVybiBtX2NvbnN0cmFpbnRz
LmdldCgpOworfQorICAgIAordm9pZCBNZWRpYVN0cmVhbVNvdXJjZTo6c2V0Q29uc3RyYWludHMo
UGFzc1JlZlB0cjxNZWRpYUNvbnN0cmFpbnRzPiBjb25zdHJhaW50cykKK3sKKyAgICBtX2NvbnN0
cmFpbnRzID0gY29uc3RyYWludHM7Cit9CisKIHZvaWQgTWVkaWFTdHJlYW1Tb3VyY2U6OnNldE11
dGVkKGJvb2wgbXV0ZWQpCiB7CiAgICAgaWYgKG1fbXV0ZWQgPT0gbXV0ZWQpCiAgICAgICAgIHJl
dHVybjsKIAogICAgIG1fbXV0ZWQgPSBtdXRlZDsKKworICAgIGlmIChtX3JlYWR5U3RhdGUgPT0g
RW5kZWQpCisgICAgICAgIHJldHVybjsKKwogICAgIGZvciAoVmVjdG9yPE9ic2VydmVyKj46Oml0
ZXJhdG9yIGkgPSBtX29ic2VydmVycy5iZWdpbigpOyBpICE9IG1fb2JzZXJ2ZXJzLmVuZCgpOyAr
K2kpCi0gICAgICAgICgqaSktPnNvdXJjZUNoYW5nZWRTdGF0ZSgpOworICAgICAgICAoKmkpLT5z
b3VyY2VNdXRlZENoYW5nZWQoKTsKIH0KIAotdm9pZCBNZWRpYVN0cmVhbVNvdXJjZTo6YWRkQXVk
aW9Db25zdW1lcihQYXNzUmVmUHRyPEF1ZGlvRGVzdGluYXRpb25Db25zdW1lcj4gY29uc3VtZXIp
Cit2b2lkIE1lZGlhU3RyZWFtU291cmNlOjpzZXRFbmFibGVkKGJvb2wgZW5hYmxlZCkKIHsKLSAg
ICBBU1NFUlQobV9yZXF1aXJlc0NvbnN1bWVyKTsKLSAgICBNdXRleExvY2tlciBsb2NrZXIobV9h
dWRpb0NvbnN1bWVyc0xvY2spOwotICAgIG1fYXVkaW9Db25zdW1lcnMuYXBwZW5kKGNvbnN1bWVy
KTsKLX0KKyAgICBpZiAobV9lbmFibGVkID09IGVuYWJsZWQpCisgICAgICAgIHJldHVybjsKKyAg
ICAKKyAgICBtX2VuYWJsZWQgPSBlbmFibGVkOwogCi1ib29sIE1lZGlhU3RyZWFtU291cmNlOjpy
ZW1vdmVBdWRpb0NvbnN1bWVyKEF1ZGlvRGVzdGluYXRpb25Db25zdW1lciogY29uc3VtZXIpCi17
Ci0gICAgQVNTRVJUKG1fcmVxdWlyZXNDb25zdW1lcik7Ci0gICAgTXV0ZXhMb2NrZXIgbG9ja2Vy
KG1fYXVkaW9Db25zdW1lcnNMb2NrKTsKLSAgICBzaXplX3QgcG9zID0gbV9hdWRpb0NvbnN1bWVy
cy5maW5kKGNvbnN1bWVyKTsKLSAgICBpZiAocG9zICE9IG5vdEZvdW5kKSB7Ci0gICAgICAgIG1f
YXVkaW9Db25zdW1lcnMucmVtb3ZlKHBvcyk7Ci0gICAgICAgIHJldHVybiB0cnVlOwotICAgIH0K
LSAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKG1fcmVhZHlTdGF0ZSA9PSBFbmRlZCkKKyAgICAg
ICAgcmV0dXJuOworICAgIAorICAgIGZvciAoVmVjdG9yPE9ic2VydmVyKj46Oml0ZXJhdG9yIGkg
PSBtX29ic2VydmVycy5iZWdpbigpOyBpICE9IG1fb2JzZXJ2ZXJzLmVuZCgpOyArK2kpCisgICAg
ICAgICgqaSktPnNvdXJjZUVuYWJsZWRDaGFuZ2VkKCk7CiB9CiAKLXZvaWQgTWVkaWFTdHJlYW1T
b3VyY2U6OnNldEF1ZGlvRm9ybWF0KHNpemVfdCBudW1iZXJPZkNoYW5uZWxzLCBmbG9hdCBzYW1w
bGVSYXRlKQorYm9vbCBNZWRpYVN0cmVhbVNvdXJjZTo6cmVhZG9ubHkoKSBjb25zdAogewotICAg
IEFTU0VSVChtX3JlcXVpcmVzQ29uc3VtZXIpOwotICAgIE11dGV4TG9ja2VyIGxvY2tlcihtX2F1
ZGlvQ29uc3VtZXJzTG9jayk7Ci0gICAgZm9yIChWZWN0b3I8UmVmUHRyPEF1ZGlvRGVzdGluYXRp
b25Db25zdW1lcj4gPjo6aXRlcmF0b3IgaXQgPSBtX2F1ZGlvQ29uc3VtZXJzLmJlZ2luKCk7IGl0
ICE9IG1fYXVkaW9Db25zdW1lcnMuZW5kKCk7ICsraXQpCi0gICAgICAgICgqaXQpLT5zZXRGb3Jt
YXQobnVtYmVyT2ZDaGFubmVscywgc2FtcGxlUmF0ZSk7CisgICAgLy8gaHR0cDovL3d3dy53My5v
cmcvVFIvbWVkaWFjYXB0dXJlLXN0cmVhbXMvI3dpZGwtTWVkaWFTdHJlYW1UcmFjay1fcmVhZG9u
bHkKKyAgICAvLyBJZiB0aGUgdHJhY2sgKGF1ZGlvIG9yIHZpZGVvKSBpcyBiYWNrZWQgYnkgYSBy
ZWFkLW9ubHkgc291cmNlIHN1Y2ggYXMgYSBmaWxlLCBvciB0aGUgdHJhY2sgc291cmNlIAorICAg
IC8vIGlzIGEgbG9jYWwgbWljcm9waG9uZSBvciBjYW1lcmEsIGJ1dCBpcyBzaGFyZWQgc28gdGhh
dCB0aGlzIHRyYWNrIGNhbm5vdCBtb2RpZnkgYW55IG9mIHRoZSBzb3VyY2UncworICAgIC8vIHNl
dHRpbmdzLCB0aGUgcmVhZG9ubHkgYXR0cmlidXRlIG11c3QgcmV0dXJuIHRoZSB2YWx1ZSB0cnVl
LiBPdGhlcndpc2UsIGl0IG11c3QgcmV0dXJuIHRoZSB2YWx1ZSBmYWxzZS4KKyAgICByZXR1cm4g
bV9yZWFkb25seTsKIH0KIAotdm9pZCBNZWRpYVN0cmVhbVNvdXJjZTo6Y29uc3VtZUF1ZGlvKEF1
ZGlvQnVzKiBidXMsIHNpemVfdCBudW1iZXJPZkZyYW1lcykKK3ZvaWQgTWVkaWFTdHJlYW1Tb3Vy
Y2U6OnN0b3AoKQogewotICAgIEFTU0VSVChtX3JlcXVpcmVzQ29uc3VtZXIpOwotICAgIE11dGV4
TG9ja2VyIGxvY2tlcihtX2F1ZGlvQ29uc3VtZXJzTG9jayk7Ci0gICAgZm9yIChWZWN0b3I8UmVm
UHRyPEF1ZGlvRGVzdGluYXRpb25Db25zdW1lcj4gPjo6aXRlcmF0b3IgaXQgPSBtX2F1ZGlvQ29u
c3VtZXJzLmJlZ2luKCk7IGl0ICE9IG1fYXVkaW9Db25zdW1lcnMuZW5kKCk7ICsraXQpCi0gICAg
ICAgICgqaXQpLT5jb25zdW1lQXVkaW8oYnVzLCBudW1iZXJPZkZyYW1lcyk7CisgICAgZm9yIChW
ZWN0b3I8T2JzZXJ2ZXIqPjo6aXRlcmF0b3IgaSA9IG1fb2JzZXJ2ZXJzLmJlZ2luKCk7IGkgIT0g
bV9vYnNlcnZlcnMuZW5kKCk7ICsraSkgeworICAgICAgICBpZiAoISgqaSktPnN0b3BwZWQoKSkK
KyAgICAgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICAvLyBUaGVyZSBhcmUgbm8gbW9yZSBj
b25zdW1lcnMgb2YgdGhpcyBzb3VyY2UncyBkYXRhLCBzaHV0IGl0IGRvd24gYXMgYXBwcm9wcmlh
dGUuCisgICAgc2V0UmVhZHlTdGF0ZShFbmRlZCk7CisKKyAgICAvLyBodHRwOi8vd3d3LnczLm9y
Zy9UUi9tZWRpYWNhcHR1cmUtc3RyZWFtcy8jd2lkbC1NZWRpYVN0cmVhbVRyYWNrLXN0b3Atdm9p
ZAorICAgIC8vIElmIHRoZSBkYXRhIGlzIGJlaW5nIGdlbmVyYXRlZCBmcm9tIGEgbGl2ZSBzb3Vy
Y2UgKGUuZy4sIGEgbWljcm9waG9uZSBvciBjYW1lcmEpLCB0aGVuIHRoZSB1c2VyIAorICAgIC8v
IGFnZW50IHNob3VsZCByZW1vdmUgYW55IGFjdGl2ZSAib24tYWlyIiBpbmRpY2F0b3IgZm9yIHRo
YXQgc291cmNlLiBJZiB0aGUgZGF0YSBpcyBiZWluZyAKKyAgICAvLyBnZW5lcmF0ZWQgZnJvbSBh
IHByZXJlY29yZGVkIHNvdXJjZSAoZS5nLiBhIHZpZGVvIGZpbGUpLCBhbnkgcmVtYWluaW5nIGNv
bnRlbnQgaW4gdGhlIGZpbGUgaXMgaWdub3JlZC4KIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1T
b3VyY2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVh
bS9NZWRpYVN0cmVhbVNvdXJjZS5oCShyZXZpc2lvbiAxNTcwMTYpCisrKyBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVNvdXJjZS5oCSh3b3JraW5nIGNvcHkp
CkBAIC0xLDYgKzEsNyBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAxMSBFcmljc3NvbiBBQi4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzYs
NiArMzcsNyBAQAogCiAjaW5jbHVkZSAiQXVkaW9EZXN0aW5hdGlvbkNvbnN1bWVyLmgiCiAjaW5j
bHVkZSAiTWVkaWFDb25zdHJhaW50cy5oIgorI2luY2x1ZGUgIk1lZGlhU3RyZWFtU291cmNlQ2Fw
YWJpbGl0aWVzLmgiCiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KICNpbmNsdWRlIDx3dGYv
VmVjdG9yLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CkBAIC00Myw3MiArNDUs
ODEgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQXVkaW9CdXM7CitjbGFzcyBNZWRp
YUNvbnN0cmFpbnRzOwogY2xhc3MgTWVkaWFTdHJlYW1EZXNjcmlwdG9yOworc3RydWN0IE1lZGlh
U3RyZWFtU291cmNlU3RhdGVzOwogCiBjbGFzcyBNZWRpYVN0cmVhbVNvdXJjZSA6IHB1YmxpYyBS
ZWZDb3VudGVkPE1lZGlhU3RyZWFtU291cmNlPiB7CiBwdWJsaWM6CiAgICAgY2xhc3MgT2JzZXJ2
ZXIgewogICAgIHB1YmxpYzoKICAgICAgICAgdmlydHVhbCB+T2JzZXJ2ZXIoKSB7IH0KLSAgICAg
ICAgdmlydHVhbCB2b2lkIHNvdXJjZUNoYW5nZWRTdGF0ZSgpID0gMDsKKyAgICAgICAgdmlydHVh
bCB2b2lkIHNvdXJjZVN0YXRlQ2hhbmdlZCgpID0gMDsKKyAgICAgICAgdmlydHVhbCB2b2lkIHNv
dXJjZU11dGVkQ2hhbmdlZCgpID0gMDsKKyAgICAgICAgdmlydHVhbCB2b2lkIHNvdXJjZUVuYWJs
ZWRDaGFuZ2VkKCkgPSAwOworICAgICAgICB2aXJ0dWFsIGJvb2wgc3RvcHBlZCgpID0gMDsKICAg
ICB9OwogCiAgICAgZW51bSBUeXBlIHsgQXVkaW8sIFZpZGVvIH07CiAgICAgZW51bSBSZWFkeVN0
YXRlIHsgTmV3ID0gMCwgTGl2ZSA9IDEsIEVuZGVkID0gMiB9OwogCi0gICAgc3RhdGljIFBhc3NS
ZWZQdHI8TWVkaWFTdHJlYW1Tb3VyY2U+IGNyZWF0ZShjb25zdCBTdHJpbmcmIGlkLCBUeXBlLCBj
b25zdCBTdHJpbmcmIG5hbWUsIFJlYWR5U3RhdGUgPSBOZXcsIGJvb2wgcmVxdWlyZXNDb25zdW1l
ciA9IGZhbHNlKTsKKyAgICB2aXJ0dWFsIH5NZWRpYVN0cmVhbVNvdXJjZSgpIHsgfQogCi0gICAg
Y29uc3QgU3RyaW5nJiBpZCgpIGNvbnN0IHsgcmV0dXJuIG1faWQ7IH0KKyAgICB2aXJ0dWFsIGJv
b2wgaXNBdWRpb1N0cmVhbVNvdXJjZSgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdmly
dHVhbCBib29sIHVzZUlERm9yVHJhY2tJRCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CisKKyAg
ICB2b2lkIHJlc2V0KCk7CiAKKyAgICBjb25zdCBTdHJpbmcmIGlkKCkgY29uc3QgeyByZXR1cm4g
bV9pZDsgfQogICAgIFR5cGUgdHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fdHlwZTsgfQogICAgIGNv
bnN0IFN0cmluZyYgbmFtZSgpIGNvbnN0IHsgcmV0dXJuIG1fbmFtZTsgfQogCisgICAgdmlydHVh
bCBQYXNzUmVmUHRyPE1lZGlhU3RyZWFtU291cmNlQ2FwYWJpbGl0aWVzPiBjYXBhYmlsaXRpZXMo
KSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBjb25zdCBNZWRpYVN0cmVhbVNvdXJjZVN0YXRlcyYg
c3RhdGVzKCkgPSAwOworICAgIAogICAgIHZvaWQgc2V0UmVhZHlTdGF0ZShSZWFkeVN0YXRlKTsK
ICAgICBSZWFkeVN0YXRlIHJlYWR5U3RhdGUoKSBjb25zdCB7IHJldHVybiBtX3JlYWR5U3RhdGU7
IH0KIAogICAgIHZvaWQgYWRkT2JzZXJ2ZXIoT2JzZXJ2ZXIqKTsKICAgICB2b2lkIHJlbW92ZU9i
c2VydmVyKE9ic2VydmVyKik7CiAKLSAgICB2b2lkIHNldENvbnN0cmFpbnRzKFBhc3NSZWZQdHI8
TWVkaWFDb25zdHJhaW50cz4gY29uc3RyYWludHMpIHsgbV9jb25zdHJhaW50cyA9IGNvbnN0cmFp
bnRzOyB9Ci0gICAgTWVkaWFDb25zdHJhaW50cyogY29uc3RyYWludHMoKSBjb25zdCB7IHJldHVy
biBtX2NvbnN0cmFpbnRzLmdldCgpOyB9Ci0KLSAgICBjb25zdCBTdHJpbmcmIGRldmljZUlkKCkg
Y29uc3QgeyByZXR1cm4gbV9kZXZpY2VJZDsgfQotICAgIHZvaWQgc2V0RGV2aWNlSWQoY29uc3Qg
U3RyaW5nJiBkZXZpY2VJZCkgeyBtX2RldmljZUlkID0gZGV2aWNlSWQ7IH0KKyAgICB2b2lkIHNl
dENvbnN0cmFpbnRzKFBhc3NSZWZQdHI8TWVkaWFDb25zdHJhaW50cz4pOworICAgIE1lZGlhQ29u
c3RyYWludHMqIGNvbnN0cmFpbnRzKCkgY29uc3Q7CiAKICAgICBib29sIGVuYWJsZWQoKSBjb25z
dCB7IHJldHVybiBtX2VuYWJsZWQ7IH0KLSAgICB2b2lkIHNldEVuYWJsZWQoYm9vbCBlbmFibGVk
KSB7IG1fZW5hYmxlZCA9IGVuYWJsZWQ7IH0KKyAgICB2b2lkIHNldEVuYWJsZWQoYm9vbCk7CiAK
ICAgICBib29sIG11dGVkKCkgY29uc3QgeyByZXR1cm4gbV9tdXRlZDsgfQogICAgIHZvaWQgc2V0
TXV0ZWQoYm9vbCk7Ci0gICAgCi0gICAgdm9pZCBzZXRBdWRpb0Zvcm1hdChzaXplX3QgbnVtYmVy
T2ZDaGFubmVscywgZmxvYXQgc2FtcGxlUmF0ZSk7Ci0gICAgdm9pZCBjb25zdW1lQXVkaW8oQXVk
aW9CdXMqLCBzaXplX3QgbnVtYmVyT2ZGcmFtZXMpOworCisgICAgYm9vbCByZWFkb25seSgpIGNv
bnN0OworICAgIHZvaWQgc2V0UmVhZG9ubHkoYm9vbCByZWFkb25seSkgeyBtX3JlYWRvbmx5ID0g
cmVhZG9ubHk7IH0KKworICAgIGJvb2wgcmVtb3RlKCkgY29uc3QgeyByZXR1cm4gbV9yZW1vdGU7
IH0KKyAgICB2b2lkIHNldFJlbW90ZShib29sIHJlbW90ZSkgeyBtX3JlbW90ZSA9IHJlbW90ZTsg
fQorCisgICAgdm9pZCBzdG9wKCk7CiAKICAgICBNZWRpYVN0cmVhbURlc2NyaXB0b3IqIHN0cmVh
bSgpIGNvbnN0IHsgcmV0dXJuIG1fc3RyZWFtOyB9CiAgICAgdm9pZCBzZXRTdHJlYW0oTWVkaWFT
dHJlYW1EZXNjcmlwdG9yKik7Ci0KLSAgICBib29sIHJlcXVpcmVzQXVkaW9Db25zdW1lcigpIGNv
bnN0IHsgcmV0dXJuIG1fcmVxdWlyZXNDb25zdW1lcjsgfQotICAgIHZvaWQgYWRkQXVkaW9Db25z
dW1lcihQYXNzUmVmUHRyPEF1ZGlvRGVzdGluYXRpb25Db25zdW1lcj4pOwotICAgIGJvb2wgcmVt
b3ZlQXVkaW9Db25zdW1lcihBdWRpb0Rlc3RpbmF0aW9uQ29uc3VtZXIqKTsKLSAgICBjb25zdCBW
ZWN0b3I8UmVmUHRyPEF1ZGlvRGVzdGluYXRpb25Db25zdW1lcj4gPiYgYXVkaW9Db25zdW1lcnMo
KSBjb25zdCB7IHJldHVybiBtX2F1ZGlvQ29uc3VtZXJzOyB9CisgICAgCitwcm90ZWN0ZWQ6Cisg
ICAgTWVkaWFTdHJlYW1Tb3VyY2UoY29uc3QgU3RyaW5nJiBpZCwgVHlwZSwgY29uc3QgU3RyaW5n
JiBuYW1lKTsKIAogcHJpdmF0ZToKLSAgICBNZWRpYVN0cmVhbVNvdXJjZShjb25zdCBTdHJpbmcm
IGlkLCBUeXBlLCBjb25zdCBTdHJpbmcmIG5hbWUsIFJlYWR5U3RhdGUsIGJvb2wgcmVxdWlyZXND
b25zdW1lcik7Ci0KICAgICBTdHJpbmcgbV9pZDsKICAgICBUeXBlIG1fdHlwZTsKICAgICBTdHJp
bmcgbV9uYW1lOwogICAgIFJlYWR5U3RhdGUgbV9yZWFkeVN0YXRlOwotICAgIFN0cmluZyBtX2Rl
dmljZUlkOwogICAgIFZlY3RvcjxPYnNlcnZlcio+IG1fb2JzZXJ2ZXJzOwotICAgIE11dGV4IG1f
YXVkaW9Db25zdW1lcnNMb2NrOwotICAgIFZlY3RvcjxSZWZQdHI8QXVkaW9EZXN0aW5hdGlvbkNv
bnN1bWVyPj4gbV9hdWRpb0NvbnN1bWVyczsKICAgICBSZWZQdHI8TWVkaWFDb25zdHJhaW50cz4g
bV9jb25zdHJhaW50czsKICAgICBNZWRpYVN0cmVhbURlc2NyaXB0b3IqIG1fc3RyZWFtOworICAg
IE1lZGlhU3RyZWFtU291cmNlU3RhdGVzIG1fc3RhdGVzOwogCi0gICAgYm9vbCBtX3JlcXVpcmVz
Q29uc3VtZXI7CiAgICAgYm9vbCBtX2VuYWJsZWQ7CiAgICAgYm9vbCBtX211dGVkOworICAgIGJv
b2wgbV9yZWFkb25seTsKKyAgICBib29sIG1fcmVtb3RlOwogfTsKIAogdHlwZWRlZiBWZWN0b3I8
UmVmUHRyPE1lZGlhU3RyZWFtU291cmNlPiA+IE1lZGlhU3RyZWFtU291cmNlVmVjdG9yOwpJbmRl
eDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1Tb3VyY2VD
YXBhYmlsaXRpZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRp
YXN0cmVhbS9NZWRpYVN0cmVhbVNvdXJjZUNhcGFiaWxpdGllcy5oCShyZXZpc2lvbiAwKQorKysg
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1Tb3VyY2VDYXBh
YmlsaXRpZXMuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDE3NSBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBg
YEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9S
CisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lm
bmRlZiBNZWRpYVN0cmVhbVNvdXJjZUNhcGFiaWxpdGllc19oCisjZGVmaW5lIE1lZGlhU3RyZWFt
U291cmNlQ2FwYWJpbGl0aWVzX2gKKworI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCisKKyNpbmNs
dWRlIDx3dGYvUmVmQ291bnRlZC5oPgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKyNpbmNsdWRl
IDx3dGYvdGV4dC9BdG9taWNTdHJpbmcuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitzdHJ1
Y3QgTWVkaWFTdHJlYW1Tb3VyY2VTdGF0ZXMgeworcHVibGljOgorICAgIGVudW0gU291cmNlVHlw
ZSB7IE5vbmUsIENhbWVyYSwgTWljcm9waG9uZSB9OworICAgIGVudW0gVmlkZW9GYWNpbmdNb2Rl
IHsgVXNlciwgRW52aXJvbm1lbnQsIExlZnQsIFJpZ2h0IH07CisKKyAgICBNZWRpYVN0cmVhbVNv
dXJjZVN0YXRlcygpCisgICAgICAgIDogc291cmNlVHlwZShOb25lKQorICAgICAgICAsIGZhY2lu
Z01vZGUoVXNlcikKKyAgICAgICAgLCB3aWR0aCgwKQorICAgICAgICAsIGhlaWdodCgwKQorICAg
ICAgICAsIGZyYW1lUmF0ZSgwKQorICAgICAgICAsIGFzcGVjdFJhdGlvKDApCisgICAgICAgICwg
dm9sdW1lKDApCisgICAgeworICAgIH0KKworICAgIFNvdXJjZVR5cGUgc291cmNlVHlwZTsKKyAg
ICBBdG9taWNTdHJpbmcgc291cmNlSWQ7CisgICAgVmlkZW9GYWNpbmdNb2RlIGZhY2luZ01vZGU7
CisgICAgdW5zaWduZWQgbG9uZyB3aWR0aDsKKyAgICB1bnNpZ25lZCBsb25nIGhlaWdodDsKKyAg
ICBmbG9hdCBmcmFtZVJhdGU7CisgICAgZmxvYXQgYXNwZWN0UmF0aW87CisgICAgdW5zaWduZWQg
bG9uZyB2b2x1bWU7CisgICAgCisgICAgYm9vbCBoYXNWaWRlb1NvdXJjZTsKK307CisKK2NsYXNz
IE1lZGlhU3RyZWFtU291cmNlQ2FwYWJpbGl0eVJhbmdlIHsKK3B1YmxpYzoKKyAgICAKKyAgICBN
ZWRpYVN0cmVhbVNvdXJjZUNhcGFiaWxpdHlSYW5nZShmbG9hdCBtaW4sIGZsb2F0IG1heCwgYm9v
bCBzdXBwb3J0ZWQgPSB0cnVlKQorICAgICAgICA6IG1fdHlwZShGbG9hdCkKKyAgICB7CisgICAg
ICAgIG1fbWluLmFzRmxvYXQgPSBtaW47CisgICAgICAgIG1fbWF4LmFzRmxvYXQgPSBtYXg7Cisg
ICAgICAgIG1fc3VwcG9ydGVkID0gc3VwcG9ydGVkOworICAgIH0KKyAgICAKKyAgICBNZWRpYVN0
cmVhbVNvdXJjZUNhcGFiaWxpdHlSYW5nZSh1bnNpZ25lZCBsb25nIG1pbiwgdW5zaWduZWQgbG9u
ZyBtYXgsIGJvb2wgc3VwcG9ydGVkID0gdHJ1ZSkKKyAgICAgICAgOiBtX3R5cGUoVUxvbmcpCisg
ICAgeworICAgICAgICBtX21pbi5hc1VMb25nID0gbWluOworICAgICAgICBtX21heC5hc1VMb25n
ID0gbWF4OworICAgICAgICBtX3N1cHBvcnRlZCA9IHN1cHBvcnRlZDsKKyAgICB9CisgICAgCisg
ICAgTWVkaWFTdHJlYW1Tb3VyY2VDYXBhYmlsaXR5UmFuZ2UoKQorICAgIHsKKyAgICAgICAgbV90
eXBlID0gVW5kZWZpbmVkOworICAgICAgICBtX21pbi5hc1VMb25nID0gMDsKKyAgICAgICAgbV9t
YXguYXNVTG9uZyA9IDA7CisgICAgICAgIG1fc3VwcG9ydGVkID0gZmFsc2U7CisgICAgfQorICAg
IAorICAgIGVudW0gVHlwZSB7IFVuZGVmaW5lZCwgRmxvYXQsIFVMb25nIH07CisgICAgCisgICAg
dW5pb24gVmFsdWVVbmlvbiB7CisgICAgICAgIHVuc2lnbmVkIGxvbmcgYXNVTG9uZzsKKyAgICAg
ICAgZmxvYXQgYXNGbG9hdDsKKyAgICB9OworICAgIAorICAgIGNvbnN0IFZhbHVlVW5pb24mIG1p
bigpIGNvbnN0IHsgcmV0dXJuIG1fbWluOyB9CisgICAgY29uc3QgVmFsdWVVbmlvbiYgbWF4KCkg
Y29uc3QgeyByZXR1cm4gbV9tYXg7IH0KKyAgICBUeXBlIHR5cGUoKSBjb25zdCB7IHJldHVybiBt
X3R5cGU7IH0KKyAgICBib29sIHN1cHBvcnRlZCgpIGNvbnN0IHsgcmV0dXJuIG1fc3VwcG9ydGVk
OyB9CisgICAgCitwcml2YXRlOgorICAgIFZhbHVlVW5pb24gbV9taW47CisgICAgVmFsdWVVbmlv
biBtX21heDsKKyAgICBUeXBlIG1fdHlwZTsKKyAgICBib29sIG1fc3VwcG9ydGVkOworfTsKKwor
Y2xhc3MgTWVkaWFTdHJlYW1Tb3VyY2VDYXBhYmlsaXRpZXMgOiBwdWJsaWMgUmVmQ291bnRlZDxN
ZWRpYVN0cmVhbVNvdXJjZUNhcGFiaWxpdGllcz4geworcHVibGljOgorICAgIHN0YXRpYyBQYXNz
UmVmUHRyPE1lZGlhU3RyZWFtU291cmNlQ2FwYWJpbGl0aWVzPiBjcmVhdGUoKQorICAgIHsKKyAg
ICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBNZWRpYVN0cmVhbVNvdXJjZUNhcGFiaWxpdGllcygp
KTsKKyAgICB9CisKKyAgICB+TWVkaWFTdHJlYW1Tb3VyY2VDYXBhYmlsaXRpZXMoKSB7IH0KKwor
ICAgIGNvbnN0IFZlY3RvcjxNZWRpYVN0cmVhbVNvdXJjZVN0YXRlczo6U291cmNlVHlwZT4mIHNv
dXJjZVR5cGVzKCkgeyByZXR1cm4gbV9zb3VyY2VUeXBlOyB9CisgICAgdm9pZCBhZGRTb3VyY2VU
eXBlKE1lZGlhU3RyZWFtU291cmNlU3RhdGVzOjpTb3VyY2VUeXBlIHNvdXJjZVR5cGUpCisgICAg
eworICAgICAgICBpZiAoc291cmNlVHlwZSA9PSBNZWRpYVN0cmVhbVNvdXJjZVN0YXRlczo6Q2Ft
ZXJhKQorICAgICAgICAgICAgbV92aWRlb1NvdXJjZSA9IHRydWU7CisgICAgICAgIG1fc291cmNl
VHlwZS5hcHBlbmQoc291cmNlVHlwZSk7CisgICAgfQorCisgICAgY29uc3QgVmVjdG9yPEF0b21p
Y1N0cmluZz4mIHNvdXJjZUlkKCkgeyByZXR1cm4gbV9zb3VyY2VJZDsgfQorICAgIHZvaWQgc2V0
U291cmNlSWQoY29uc3QgQXRvbWljU3RyaW5nJiBpZCkgIHsgbV9zb3VyY2VJZC5yZXNlcnZlQ2Fw
YWNpdHkoMSk7IG1fc291cmNlSWQuaW5zZXJ0KDAsIGlkKTsgfQorCisgICAgY29uc3QgVmVjdG9y
PE1lZGlhU3RyZWFtU291cmNlU3RhdGVzOjpWaWRlb0ZhY2luZ01vZGU+JiBmYWNpbmdNb2Rlcygp
IHsgcmV0dXJuIG1fZmFjaW5nTW9kZTsgfQorICAgIHZvaWQgYWRkRmFjaW5nTW9kZShNZWRpYVN0
cmVhbVNvdXJjZVN0YXRlczo6VmlkZW9GYWNpbmdNb2RlIG1vZGUpIHsgbV9mYWNpbmdNb2RlLmFw
cGVuZChtb2RlKTsgfQorCisgICAgY29uc3QgTWVkaWFTdHJlYW1Tb3VyY2VDYXBhYmlsaXR5UmFu
Z2UmIHdpZHRoKCkgeyByZXR1cm4gbV93aWR0aDsgfQorICAgIHZvaWQgc2V0V2lkdGhSYW5nZShj
b25zdCBNZWRpYVN0cmVhbVNvdXJjZUNhcGFiaWxpdHlSYW5nZSYgd2lkdGgpIHsgbV93aWR0aCA9
IHdpZHRoOyB9CisKKyAgICBjb25zdCBNZWRpYVN0cmVhbVNvdXJjZUNhcGFiaWxpdHlSYW5nZSYg
aGVpZ2h0KCkgeyByZXR1cm4gbV9oZWlnaHQ7IH0KKyAgICB2b2lkIHNldEhlaWdodFJhbmdlKGNv
bnN0IE1lZGlhU3RyZWFtU291cmNlQ2FwYWJpbGl0eVJhbmdlJiBoZWlnaHQpIHsgbV9oZWlnaHQg
PSBoZWlnaHQ7IH0KKworICAgIGNvbnN0IE1lZGlhU3RyZWFtU291cmNlQ2FwYWJpbGl0eVJhbmdl
JiBmcmFtZVJhdGUoKSB7IHJldHVybiBtX2ZyYW1lUmF0ZTsgfQorICAgIHZvaWQgc2V0RnJhbWVS
YXRlUmFuZ2UoY29uc3QgTWVkaWFTdHJlYW1Tb3VyY2VDYXBhYmlsaXR5UmFuZ2UmIGZyYW1lUmF0
ZSkgeyBtX2ZyYW1lUmF0ZSA9IGZyYW1lUmF0ZTsgfQorCisgICAgY29uc3QgTWVkaWFTdHJlYW1T
b3VyY2VDYXBhYmlsaXR5UmFuZ2UmIGFzcGVjdFJhdGlvKCkgeyByZXR1cm4gbV9hc3BlY3RSYXRp
bzsgfQorICAgIHZvaWQgc2V0QXNwZWN0UmF0aW9SYW5nZShjb25zdCBNZWRpYVN0cmVhbVNvdXJj
ZUNhcGFiaWxpdHlSYW5nZSYgYXNwZWN0UmF0aW8pIHsgbV9hc3BlY3RSYXRpbyA9IGFzcGVjdFJh
dGlvOyB9CisKKyAgICBjb25zdCBNZWRpYVN0cmVhbVNvdXJjZUNhcGFiaWxpdHlSYW5nZSYgdm9s
dW1lKCkgeyByZXR1cm4gbV92b2x1bWU7IH0KKyAgICB2b2lkIHNldFZvbHVtZVJhbmdlKGNvbnN0
IE1lZGlhU3RyZWFtU291cmNlQ2FwYWJpbGl0eVJhbmdlJiB2b2x1bWUpIHsgbV92b2x1bWUgPSB2
b2x1bWU7IH0KKworICAgIGJvb2wgaGFzVmlkZW9Tb3VyY2UoKSB7IHJldHVybiBtX3ZpZGVvU291
cmNlOyB9CisgICAgdm9pZCBzZXRIYXNWaWRlb1NvdXJjZShib29sIGlzVmlkZW8pIHsgbV92aWRl
b1NvdXJjZSA9IGlzVmlkZW87OyB9CisKK3ByaXZhdGU6CisgICAgTWVkaWFTdHJlYW1Tb3VyY2VD
YXBhYmlsaXRpZXMoKQorICAgICAgICA6IG1fdmlkZW9Tb3VyY2UoZmFsc2UpCisgICAgeworICAg
IH0KKworICAgIFZlY3RvcjxBdG9taWNTdHJpbmc+IG1fc291cmNlSWQ7CisgICAgVmVjdG9yPE1l
ZGlhU3RyZWFtU291cmNlU3RhdGVzOjpTb3VyY2VUeXBlPiBtX3NvdXJjZVR5cGU7CisgICAgVmVj
dG9yPE1lZGlhU3RyZWFtU291cmNlU3RhdGVzOjpWaWRlb0ZhY2luZ01vZGU+IG1fZmFjaW5nTW9k
ZTsKKworICAgIE1lZGlhU3RyZWFtU291cmNlQ2FwYWJpbGl0eVJhbmdlIG1fd2lkdGg7CisgICAg
TWVkaWFTdHJlYW1Tb3VyY2VDYXBhYmlsaXR5UmFuZ2UgbV9oZWlnaHQ7CisgICAgTWVkaWFTdHJl
YW1Tb3VyY2VDYXBhYmlsaXR5UmFuZ2UgbV9mcmFtZVJhdGU7CisgICAgTWVkaWFTdHJlYW1Tb3Vy
Y2VDYXBhYmlsaXR5UmFuZ2UgbV9hc3BlY3RSYXRpbzsKKyAgICBNZWRpYVN0cmVhbVNvdXJjZUNh
cGFiaWxpdHlSYW5nZSBtX3ZvbHVtZTsKKworICAgIGJvb2wgbV92aWRlb1NvdXJjZTsKK307CisK
K30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIE1lZGlhU3RyZWFtU291cmNlQ2Fw
YWJpbGl0aWVzX2gKKworI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRp
YXN0cmVhbS9ibGFja2JlcnJ5L01lZGlhU3RyZWFtQ2VudGVyQmxhY2tCZXJyeS5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vYmxhY2tiZXJyeS9N
ZWRpYVN0cmVhbUNlbnRlckJsYWNrQmVycnkuY3BwCShyZXZpc2lvbiAxNTcwMTYpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9ibGFja2JlcnJ5L01lZGlhU3RyZWFtQ2Vu
dGVyQmxhY2tCZXJyeS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM1LDggKzM1LDEwIEBACiAKICNp
bmNsdWRlICJNZWRpYVN0cmVhbUNlbnRlckJsYWNrQmVycnkuaCIKIAorI2luY2x1ZGUgIk1lZGlh
U3RyZWFtQ3JlYXRpb25DbGllbnQuaCIKICNpbmNsdWRlICJNZWRpYVN0cmVhbURlc2NyaXB0b3Iu
aCIKLSNpbmNsdWRlICJNZWRpYVN0cmVhbVNvdXJjZXNRdWVyeUNsaWVudC5oIgorI2luY2x1ZGUg
Ik1lZGlhU3RyZWFtVHJhY2tTb3VyY2VzUmVxdWVzdENsaWVudC5oIgorI2luY2x1ZGUgIk5vdElt
cGxlbWVudGVkLmgiCiAjaW5jbHVkZSA8d3RmL01haW5UaHJlYWQuaD4KIAogbmFtZXNwYWNlIFdl
YkNvcmUgewpAQCAtNzIsMzMgKzc0LDYgQEAgYm9vbCBNZWRpYVN0cmVhbUNlbnRlckJsYWNrQmVy
cnk6OmdldE1lZAogICAgIHJldHVybiBmYWxzZTsKIH0KIAotdm9pZCBNZWRpYVN0cmVhbUNlbnRl
ckJsYWNrQmVycnk6OmRpZFNldE1lZGlhU3RyZWFtVHJhY2tFbmFibGVkKE1lZGlhU3RyZWFtU291
cmNlKikKLXsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotfQotCi1ib29sIE1lZGlhU3RyZWFtQ2Vu
dGVyQmxhY2tCZXJyeTo6ZGlkQWRkTWVkaWFTdHJlYW1UcmFjayhNZWRpYVN0cmVhbVNvdXJjZSop
Ci17Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLSAgICByZXR1cm4gZmFsc2U7Ci19Ci0KLWJvb2wg
TWVkaWFTdHJlYW1DZW50ZXJCbGFja0JlcnJ5OjpkaWRSZW1vdmVNZWRpYVN0cmVhbVRyYWNrKE1l
ZGlhU3RyZWFtU291cmNlKikKLXsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotICAgIHJldHVybiBm
YWxzZTsKLX0KLQotdm9pZCBNZWRpYVN0cmVhbUNlbnRlckJsYWNrQmVycnk6OmRpZFN0b3BMb2Nh
bE1lZGlhU3RyZWFtKE1lZGlhU3RyZWFtRGVzY3JpcHRvciogc3RyZWFtKQotewotICAgIGVuZExv
Y2FsTWVkaWFTdHJlYW0oc3RyZWFtKTsKLX0KLQotdm9pZCBNZWRpYVN0cmVhbUNlbnRlckJsYWNr
QmVycnk6OmRpZENyZWF0ZU1lZGlhU3RyZWFtKE1lZGlhU3RyZWFtRGVzY3JpcHRvciopCi17Ci0g
ICAgbm90SW1wbGVtZW50ZWQoKTsKLX0KLQogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5k
aWYgLy8gRU5BQkxFKE1FRElBX1NUUkVBTSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21lZGlhc3RyZWFtL2JsYWNrYmVycnkvTWVkaWFTdHJlYW1DZW50ZXJCbGFja0JlcnJ5LmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vYmxhY2tiZXJy
eS9NZWRpYVN0cmVhbUNlbnRlckJsYWNrQmVycnkuaAkocmV2aXNpb24gMTU3MDE2KQorKysgU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vYmxhY2tiZXJyeS9NZWRpYVN0cmVhbUNl
bnRlckJsYWNrQmVycnkuaAkod29ya2luZyBjb3B5KQpAQCAtNTAsMTUgKzUwLDkgQEAgcHVibGlj
OgogICAgIE1lZGlhU3RyZWFtQ2VudGVyQmxhY2tCZXJyeSgpOwogICAgIH5NZWRpYVN0cmVhbUNl
bnRlckJsYWNrQmVycnkoKTsKIAotICAgIC8vIE1lZGlhU3RyZWFtQ2VudGVyCiAgICAgdmlydHVh
bCB2b2lkIHZhbGlkYXRlUmVxdWVzdENvbnN0cmFpbnRzKFBhc3NSZWZQdHI8TWVkaWFTdHJlYW1D
cmVhdGlvbkNsaWVudD4sIFBhc3NSZWZQdHI8TWVkaWFDb25zdHJhaW50cz4gYXVkaW9Db25zdHJh
aW50cywgUGFzc1JlZlB0cjxNZWRpYUNvbnN0cmFpbnRzPiB2aWRlb0NvbnN0cmFpbnRzKTsKICAg
ICB2aXJ0dWFsIHZvaWQgY3JlYXRlTWVkaWFTdHJlYW0oUGFzc1JlZlB0cjxNZWRpYVN0cmVhbUNy
ZWF0aW9uQ2xpZW50PiwgUGFzc1JlZlB0cjxNZWRpYUNvbnN0cmFpbnRzPiBhdWRpb0NvbnN0cmFp
bnRzLCBQYXNzUmVmUHRyPE1lZGlhQ29uc3RyYWludHM+IHZpZGVvQ29uc3RyYWludHMpOwogICAg
IHZpcnR1YWwgYm9vbCBnZXRNZWRpYVN0cmVhbVRyYWNrU291cmNlcyhQYXNzUmVmUHRyPE1lZGlh
U3RyZWFtVHJhY2tTb3VyY2VzUmVxdWVzdENsaWVudD4pIE9WRVJSSURFOwotICAgIHZpcnR1YWwg
dm9pZCBkaWRTZXRNZWRpYVN0cmVhbVRyYWNrRW5hYmxlZChNZWRpYVN0cmVhbVNvdXJjZSopIE9W
RVJSSURFOwotICAgIHZpcnR1YWwgYm9vbCBkaWRBZGRNZWRpYVN0cmVhbVRyYWNrKE1lZGlhU3Ry
ZWFtU291cmNlKikgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCBib29sIGRpZFJlbW92ZU1lZGlhU3Ry
ZWFtVHJhY2soTWVkaWFTdHJlYW1Tb3VyY2UqKSBPVkVSUklERTsKLSAgICB2aXJ0dWFsIHZvaWQg
ZGlkU3RvcExvY2FsTWVkaWFTdHJlYW0oTWVkaWFTdHJlYW1EZXNjcmlwdG9yKikgT1ZFUlJJREU7
Ci0gICAgdmlydHVhbCB2b2lkIGRpZENyZWF0ZU1lZGlhU3RyZWFtKE1lZGlhU3RyZWFtRGVzY3Jp
cHRvciopIE9WRVJSSURFOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vZ3N0cmVhbWVyL01lZGlhU3RyZWFtQ2Vu
dGVyR1N0cmVhbWVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
ZWRpYXN0cmVhbS9nc3RyZWFtZXIvTWVkaWFTdHJlYW1DZW50ZXJHU3RyZWFtZXIuY3BwCShyZXZp
c2lvbiAxNTcwMTYpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9nc3Ry
ZWFtZXIvTWVkaWFTdHJlYW1DZW50ZXJHU3RyZWFtZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0z
NSw3ICszNSwxMSBAQAogCiAjaW5jbHVkZSAiTWVkaWFTdHJlYW1DZW50ZXJHU3RyZWFtZXIuaCIK
IAorI2luY2x1ZGUgIk1lZGlhU3RyZWFtQ3JlYXRpb25DbGllbnQuaCIKICNpbmNsdWRlICJNZWRp
YVN0cmVhbURlc2NyaXB0b3IuaCIKKyNpbmNsdWRlICJNZWRpYVN0cmVhbVNvdXJjZUNhcGFiaWxp
dGllcy5oIgorI2luY2x1ZGUgIk1lZGlhU3RyZWFtU291cmNlU3RhdGVzLmgiCisjaW5jbHVkZSAi
TWVkaWFTdHJlYW1UcmFja1NvdXJjZXNSZXF1ZXN0Q2xpZW50LmgiCiAjaW5jbHVkZSAiTm90SW1w
bGVtZW50ZWQuaCIKICNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgogCkBAIC03MiwzMyArNzYs
NiBAQCBib29sIE1lZGlhU3RyZWFtQ2VudGVyR1N0cmVhbWVyOjpnZXRNZWRpCiAgICAgcmV0dXJu
IGZhbHNlOwogfQogCi12b2lkIE1lZGlhU3RyZWFtQ2VudGVyR1N0cmVhbWVyOjpkaWRTZXRNZWRp
YVN0cmVhbVRyYWNrRW5hYmxlZChNZWRpYVN0cmVhbVNvdXJjZSopCi17Ci0gICAgbm90SW1wbGVt
ZW50ZWQoKTsKLX0KLQotYm9vbCBNZWRpYVN0cmVhbUNlbnRlckdTdHJlYW1lcjo6ZGlkQWRkTWVk
aWFTdHJlYW1UcmFjayhNZWRpYVN0cmVhbVNvdXJjZSopCi17Ci0gICAgbm90SW1wbGVtZW50ZWQo
KTsKLSAgICByZXR1cm4gZmFsc2U7Ci19Ci0KLWJvb2wgTWVkaWFTdHJlYW1DZW50ZXJHU3RyZWFt
ZXI6OmRpZFJlbW92ZU1lZGlhU3RyZWFtVHJhY2soTWVkaWFTdHJlYW1Tb3VyY2UqKQotewotICAg
IG5vdEltcGxlbWVudGVkKCk7Ci0gICAgcmV0dXJuIGZhbHNlOwotfQotCi12b2lkIE1lZGlhU3Ry
ZWFtQ2VudGVyR1N0cmVhbWVyOjpkaWRTdG9wTG9jYWxNZWRpYVN0cmVhbShNZWRpYVN0cmVhbURl
c2NyaXB0b3IqIHN0cmVhbSkKLXsKLSAgICBlbmRMb2NhbE1lZGlhU3RyZWFtKHN0cmVhbSk7Ci19
Ci0KLXZvaWQgTWVkaWFTdHJlYW1DZW50ZXJHU3RyZWFtZXI6OmRpZENyZWF0ZU1lZGlhU3RyZWFt
KE1lZGlhU3RyZWFtRGVzY3JpcHRvciopCi17Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLX0KLQog
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5BQkxFKE1FRElBX1NUUkVBTSkK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2dzdHJlYW1lci9NZWRp
YVN0cmVhbUNlbnRlckdTdHJlYW1lci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21lZGlhc3RyZWFtL2dzdHJlYW1lci9NZWRpYVN0cmVhbUNlbnRlckdTdHJlYW1lci5o
CShyZXZpc2lvbiAxNTcwMTYpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVh
bS9nc3RyZWFtZXIvTWVkaWFTdHJlYW1DZW50ZXJHU3RyZWFtZXIuaAkod29ya2luZyBjb3B5KQpA
QCAtNTAsMTUgKzUwLDkgQEAgcHVibGljOgogICAgIE1lZGlhU3RyZWFtQ2VudGVyR1N0cmVhbWVy
KCk7CiAgICAgfk1lZGlhU3RyZWFtQ2VudGVyR1N0cmVhbWVyKCk7CiAKLSAgICAvLyBNZWRpYVN0
cmVhbUNlbnRlcgogICAgIHZpcnR1YWwgdm9pZCB2YWxpZGF0ZVJlcXVlc3RDb25zdHJhaW50cyhQ
YXNzUmVmUHRyPE1lZGlhU3RyZWFtQ3JlYXRpb25DbGllbnQ+LCBQYXNzUmVmUHRyPE1lZGlhQ29u
c3RyYWludHM+IGF1ZGlvQ29uc3RyYWludHMsIFBhc3NSZWZQdHI8TWVkaWFDb25zdHJhaW50cz4g
dmlkZW9Db25zdHJhaW50cyk7CiAgICAgdmlydHVhbCB2b2lkIGNyZWF0ZU1lZGlhU3RyZWFtKFBh
c3NSZWZQdHI8TWVkaWFTdHJlYW1DcmVhdGlvbkNsaWVudD4sIFBhc3NSZWZQdHI8TWVkaWFDb25z
dHJhaW50cz4gYXVkaW9Db25zdHJhaW50cywgUGFzc1JlZlB0cjxNZWRpYUNvbnN0cmFpbnRzPiB2
aWRlb0NvbnN0cmFpbnRzKTsKICAgICB2aXJ0dWFsIGJvb2wgZ2V0TWVkaWFTdHJlYW1UcmFja1Nv
dXJjZXMoUGFzc1JlZlB0cjxNZWRpYVN0cmVhbVRyYWNrU291cmNlc1JlcXVlc3RDbGllbnQ+KSBP
VkVSUklERTsKLSAgICB2aXJ0dWFsIHZvaWQgZGlkU2V0TWVkaWFTdHJlYW1UcmFja0VuYWJsZWQo
TWVkaWFTdHJlYW1Tb3VyY2UqKSBPVkVSUklERTsKLSAgICB2aXJ0dWFsIGJvb2wgZGlkQWRkTWVk
aWFTdHJlYW1UcmFjayhNZWRpYVN0cmVhbVNvdXJjZSopIE9WRVJSSURFOwotICAgIHZpcnR1YWwg
Ym9vbCBkaWRSZW1vdmVNZWRpYVN0cmVhbVRyYWNrKE1lZGlhU3RyZWFtU291cmNlKikgT1ZFUlJJ
REU7Ci0gICAgdmlydHVhbCB2b2lkIGRpZFN0b3BMb2NhbE1lZGlhU3RyZWFtKE1lZGlhU3RyZWFt
RGVzY3JpcHRvciopIE9WRVJSSURFOwotICAgIHZpcnR1YWwgdm9pZCBkaWRDcmVhdGVNZWRpYVN0
cmVhbShNZWRpYVN0cmVhbURlc2NyaXB0b3IqKSBPVkVSUklERTsKIH07CiAKIH0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21h
Yy9NZWRpYVN0cmVhbUNlbnRlck1hYy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL01lZGlhU3RyZWFtQ2VudGVyTWFjLmNwcAkocmV2aXNp
b24gMTU3MDE2KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL01l
ZGlhU3RyZWFtQ2VudGVyTWFjLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzMsMzMgKzczLDYgQEAg
Ym9vbCBNZWRpYVN0cmVhbUNlbnRlck1hYzo6Z2V0TWVkaWFTdHJlYQogICAgIHJldHVybiBmYWxz
ZTsKIH0KIAotdm9pZCBNZWRpYVN0cmVhbUNlbnRlck1hYzo6ZGlkU2V0TWVkaWFTdHJlYW1UcmFj
a0VuYWJsZWQoTWVkaWFTdHJlYW1Tb3VyY2UqKQotewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci19
Ci0KLWJvb2wgTWVkaWFTdHJlYW1DZW50ZXJNYWM6OmRpZEFkZE1lZGlhU3RyZWFtVHJhY2soTWVk
aWFTdHJlYW1Tb3VyY2UqKQotewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci0gICAgcmV0dXJuIGZh
bHNlOwotfQotCi1ib29sIE1lZGlhU3RyZWFtQ2VudGVyTWFjOjpkaWRSZW1vdmVNZWRpYVN0cmVh
bVRyYWNrKE1lZGlhU3RyZWFtU291cmNlKikKLXsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotICAg
IHJldHVybiBmYWxzZTsKLX0KLQotdm9pZCBNZWRpYVN0cmVhbUNlbnRlck1hYzo6ZGlkU3RvcExv
Y2FsTWVkaWFTdHJlYW0oTWVkaWFTdHJlYW1EZXNjcmlwdG9yKiBzdHJlYW0pCi17Ci0gICAgZW5k
TG9jYWxNZWRpYVN0cmVhbShzdHJlYW0pOwotfQotCi12b2lkIE1lZGlhU3RyZWFtQ2VudGVyTWFj
OjpkaWRDcmVhdGVNZWRpYVN0cmVhbShNZWRpYVN0cmVhbURlc2NyaXB0b3IqKQotewotICAgIG5v
dEltcGxlbWVudGVkKCk7Ci19Ci0KIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8v
IEVOQUJMRShNRURJQV9TVFJFQU0pCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRp
YXN0cmVhbS9tYWMvTWVkaWFTdHJlYW1DZW50ZXJNYWMuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvTWVkaWFTdHJlYW1DZW50ZXJNYWMuaAko
cmV2aXNpb24gMTU3MDE2KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0v
bWFjL01lZGlhU3RyZWFtQ2VudGVyTWFjLmgJKHdvcmtpbmcgY29weSkKQEAgLTM1LDI5ICszNSwy
MCBAQAogCiAjaW5jbHVkZSAiTWVkaWFTdHJlYW1DZW50ZXIuaCIKIAorI2luY2x1ZGUgIk1lZGlh
U3RyZWFtU291cmNlLmgiCiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KICNpbmNsdWRlIDx3
dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBNZWRp
YVN0cmVhbURlc2NyaXB0b3I7Ci1jbGFzcyBNZWRpYVN0cmVhbVNvdXJjZTsKLWNsYXNzIE1lZGlh
U3RyZWFtU291cmNlc1F1ZXJ5Q2xpZW50OwotCiBjbGFzcyBNZWRpYVN0cmVhbUNlbnRlck1hYyBG
SU5BTCA6IHB1YmxpYyBNZWRpYVN0cmVhbUNlbnRlciB7CiBwdWJsaWM6CiAgICAgTWVkaWFTdHJl
YW1DZW50ZXJNYWMoKTsKICAgICB+TWVkaWFTdHJlYW1DZW50ZXJNYWMoKTsKIAotICAgIC8vIE1l
ZGlhU3RyZWFtQ2VudGVyCiAgICAgdmlydHVhbCB2b2lkIHZhbGlkYXRlUmVxdWVzdENvbnN0cmFp
bnRzKFBhc3NSZWZQdHI8TWVkaWFTdHJlYW1DcmVhdGlvbkNsaWVudD4sIFBhc3NSZWZQdHI8TWVk
aWFDb25zdHJhaW50cz4gYXVkaW9Db25zdHJhaW50cywgUGFzc1JlZlB0cjxNZWRpYUNvbnN0cmFp
bnRzPiB2aWRlb0NvbnN0cmFpbnRzKTsKICAgICB2aXJ0dWFsIHZvaWQgY3JlYXRlTWVkaWFTdHJl
YW0oUGFzc1JlZlB0cjxNZWRpYVN0cmVhbUNyZWF0aW9uQ2xpZW50PiwgUGFzc1JlZlB0cjxNZWRp
YUNvbnN0cmFpbnRzPiBhdWRpb0NvbnN0cmFpbnRzLCBQYXNzUmVmUHRyPE1lZGlhQ29uc3RyYWlu
dHM+IHZpZGVvQ29uc3RyYWludHMpOwogICAgIHZpcnR1YWwgYm9vbCBnZXRNZWRpYVN0cmVhbVRy
YWNrU291cmNlcyhQYXNzUmVmUHRyPE1lZGlhU3RyZWFtVHJhY2tTb3VyY2VzUmVxdWVzdENsaWVu
dD4pIE9WRVJSSURFOwotICAgIHZpcnR1YWwgdm9pZCBkaWRTZXRNZWRpYVN0cmVhbVRyYWNrRW5h
YmxlZChNZWRpYVN0cmVhbVNvdXJjZSopIE9WRVJSSURFOwotICAgIHZpcnR1YWwgYm9vbCBkaWRB
ZGRNZWRpYVN0cmVhbVRyYWNrKE1lZGlhU3RyZWFtU291cmNlKikgT1ZFUlJJREU7Ci0gICAgdmly
dHVhbCBib29sIGRpZFJlbW92ZU1lZGlhU3RyZWFtVHJhY2soTWVkaWFTdHJlYW1Tb3VyY2UqKSBP
VkVSUklERTsKLSAgICB2aXJ0dWFsIHZvaWQgZGlkU3RvcExvY2FsTWVkaWFTdHJlYW0oTWVkaWFT
dHJlYW1EZXNjcmlwdG9yKikgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCB2b2lkIGRpZENyZWF0ZU1l
ZGlhU3RyZWFtKE1lZGlhU3RyZWFtRGVzY3JpcHRvciopIE9WRVJSSURFOwogfTsKIAogfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9Nb2Nr
TWVkaWFTdHJlYW1DZW50ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21vY2svTW9ja01lZGlhU3RyZWFtQ2VudGVyLmNwcAkocmV2aXNpb24gMTU3MDE2KQorKysg
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9Nb2NrTWVkaWFTdHJlYW1DZW50ZXIuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0zMiwxMiArMzIsOTcgQEAKICNpbmNsdWRlICJNZWRpYVN0cmVhbS5o
IgogI2luY2x1ZGUgIk1lZGlhU3RyZWFtQ3JlYXRpb25DbGllbnQuaCIKICNpbmNsdWRlICJNZWRp
YVN0cmVhbURlc2NyaXB0b3IuaCIKKyNpbmNsdWRlICJNZWRpYVN0cmVhbVNvdXJjZS5oIgorI2lu
Y2x1ZGUgIk1lZGlhU3RyZWFtU291cmNlQ2FwYWJpbGl0aWVzLmgiCiAjaW5jbHVkZSAiTWVkaWFT
dHJlYW1UcmFjay5oIgogI2luY2x1ZGUgIk1lZGlhU3RyZWFtVHJhY2tTb3VyY2VzUmVxdWVzdENs
aWVudC5oIgotI2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCisjaW5jbHVkZSA8d3RmL05ldmVy
RGVzdHJveWVkLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgTW9ja1NvdXJjZSA6
IHB1YmxpYyBNZWRpYVN0cmVhbVNvdXJjZSB7CitwdWJsaWM6CisgICAgTW9ja1NvdXJjZShjb25z
dCBBdG9taWNTdHJpbmcmIGlkLCBjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUsIE1lZGlhU3RyZWFt
U291cmNlOjpUeXBlIHR5cGUpCisgICAgICAgIDogTWVkaWFTdHJlYW1Tb3VyY2UoaWQsIHR5cGUs
IG5hbWUpCisgICAgeworICAgIH0KKworICAgIHZpcnR1YWwgfk1vY2tTb3VyY2UoKSB7IH0KKwor
ICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxNZWRpYVN0cmVhbVNvdXJjZUNhcGFiaWxpdGllcz4gY2Fw
YWJpbGl0aWVzKCkgY29uc3QgeyByZXR1cm4gbV9jYXBhYmlsaXRpZXM7IH0KKyAgICB2aXJ0dWFs
IGNvbnN0IE1lZGlhU3RyZWFtU291cmNlU3RhdGVzJiBzdGF0ZXMoKSB7IHJldHVybiBtX2N1cnJl
bnRTdGF0ZXM7IH0KKworICAgIFJlZlB0cjxNZWRpYVN0cmVhbVNvdXJjZUNhcGFiaWxpdGllcz4g
bV9jYXBhYmlsaXRpZXM7CisgICAgTWVkaWFTdHJlYW1Tb3VyY2VTdGF0ZXMgbV9jdXJyZW50U3Rh
dGVzOworfTsKKyAgICAKK3R5cGVkZWYgSGFzaE1hcDxTdHJpbmcsIFJlZlB0cjxNb2NrU291cmNl
Pj4gTW9ja1NvdXJjZU1hcDsKKworc3RhdGljIE1vY2tTb3VyY2VNYXAmIG1vY2tTb3VyY2VNYXAo
KQoreworICAgIERFRklORV9TVEFUSUNfTE9DQUwoTW9ja1NvdXJjZU1hcCwgbW9ja1NvdXJjZU1h
cCwgKCkpOworICAgIHJldHVybiBtb2NrU291cmNlTWFwOworfQorCitzdGF0aWMgY29uc3QgQXRv
bWljU3RyaW5nJiBtb2NrQXVkaW9Tb3VyY2VJRCgpCit7CisgICAgc3RhdGljIE5ldmVyRGVzdHJv
eWVkPEF0b21pY1N0cmluZz4gaWQoIjIzOWMyNGIxLTJiMTUtMTFlMy04MjI0LTA4MDAyMDBjOWE2
NiIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOworICAgIHJldHVybiBpZDsK
K30KKworc3RhdGljIGNvbnN0IEF0b21pY1N0cmluZyYgbW9ja1ZpZGVvU291cmNlSUQoKQorewor
ICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxBdG9taWNTdHJpbmc+IGlkKCIyMzljMjRiMC0yYjE1
LTExZTMtODIyNC0wODAwMjAwYzlhNjYiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRl
cmFsKTsKKyAgICByZXR1cm4gaWQ7Cit9CisKK3N0YXRpYyB2b2lkIGluaXRpYWxpemVNb2NrU291
cmNlcygpCit7CisgICAgUmVmUHRyPE1vY2tTb3VyY2U+IG1vY2tTb3VyY2UxID0gYWRvcHRSZWYo
bmV3IE1vY2tTb3VyY2UobW9ja1ZpZGVvU291cmNlSUQoKSwgIk1vY2sgdmlkZW8gZGV2aWNlIiwg
TWVkaWFTdHJlYW1Tb3VyY2U6OlZpZGVvKSk7CisgICAgbW9ja1NvdXJjZTEtPm1fY2FwYWJpbGl0
aWVzID0gTWVkaWFTdHJlYW1Tb3VyY2VDYXBhYmlsaXRpZXM6OmNyZWF0ZSgpOworICAgIG1vY2tT
b3VyY2UxLT5tX2NhcGFiaWxpdGllcy0+c2V0U291cmNlSWQobW9ja1NvdXJjZTEtPmlkKCkpOwor
ICAgIG1vY2tTb3VyY2UxLT5tX2NhcGFiaWxpdGllcy0+YWRkU291cmNlVHlwZShNZWRpYVN0cmVh
bVNvdXJjZVN0YXRlczo6Q2FtZXJhKTsKKyAgICBtb2NrU291cmNlMS0+bV9jYXBhYmlsaXRpZXMt
PmFkZFNvdXJjZVR5cGUoTWVkaWFTdHJlYW1Tb3VyY2VTdGF0ZXM6Ok1pY3JvcGhvbmUpOworICAg
IG1vY2tTb3VyY2UxLT5tX2NhcGFiaWxpdGllcy0+YWRkRmFjaW5nTW9kZShNZWRpYVN0cmVhbVNv
dXJjZVN0YXRlczo6VXNlcik7CisgICAgbW9ja1NvdXJjZTEtPm1fY2FwYWJpbGl0aWVzLT5hZGRG
YWNpbmdNb2RlKE1lZGlhU3RyZWFtU291cmNlU3RhdGVzOjpFbnZpcm9ubWVudCk7CisgICAgbW9j
a1NvdXJjZTEtPm1fY2FwYWJpbGl0aWVzLT5zZXRXaWR0aFJhbmdlKE1lZGlhU3RyZWFtU291cmNl
Q2FwYWJpbGl0eVJhbmdlKDMyMFVMLCAxOTIwVUwsIHRydWUpKTsKKyAgICBtb2NrU291cmNlMS0+
bV9jYXBhYmlsaXRpZXMtPnNldEhlaWdodFJhbmdlKE1lZGlhU3RyZWFtU291cmNlQ2FwYWJpbGl0
eVJhbmdlKDI0MFVMLCAxMDgwVUwsIHRydWUpKTsKKyAgICBtb2NrU291cmNlMS0+bV9jYXBhYmls
aXRpZXMtPnNldEZyYW1lUmF0ZVJhbmdlKE1lZGlhU3RyZWFtU291cmNlQ2FwYWJpbGl0eVJhbmdl
KDE1LjBmLCA2MC4wZiwgdHJ1ZSkpOworICAgIG1vY2tTb3VyY2UxLT5tX2NhcGFiaWxpdGllcy0+
c2V0QXNwZWN0UmF0aW9SYW5nZShNZWRpYVN0cmVhbVNvdXJjZUNhcGFiaWxpdHlSYW5nZSg0IC8g
My4wZiwgMTYgLyA5LjBmLCB0cnVlKSk7CisgICAgbW9ja1NvdXJjZTEtPm1fY2FwYWJpbGl0aWVz
LT5zZXRWb2x1bWVSYW5nZShNZWRpYVN0cmVhbVNvdXJjZUNhcGFiaWxpdHlSYW5nZSgxMFVMLCA5
MFVMLCB0cnVlKSk7CisKKyAgICBtb2NrU291cmNlMS0+bV9jdXJyZW50U3RhdGVzLnNvdXJjZVR5
cGUgPSBNZWRpYVN0cmVhbVNvdXJjZVN0YXRlczo6Q2FtZXJhOworICAgIG1vY2tTb3VyY2UxLT5t
X2N1cnJlbnRTdGF0ZXMuc291cmNlSWQgPSBtb2NrU291cmNlMS0+aWQoKTsKKyAgICBtb2NrU291
cmNlMS0+bV9jdXJyZW50U3RhdGVzLmZhY2luZ01vZGUgPSBNZWRpYVN0cmVhbVNvdXJjZVN0YXRl
czo6VXNlcjsKKyAgICBtb2NrU291cmNlMS0+bV9jdXJyZW50U3RhdGVzLndpZHRoID0gMTkyMDsK
KyAgICBtb2NrU291cmNlMS0+bV9jdXJyZW50U3RhdGVzLmhlaWdodCA9IDEwODA7CisgICAgbW9j
a1NvdXJjZTEtPm1fY3VycmVudFN0YXRlcy5mcmFtZVJhdGUgPSAzMDsKKyAgICBtb2NrU291cmNl
MS0+bV9jdXJyZW50U3RhdGVzLmFzcGVjdFJhdGlvID0gMTYgLyA5LjBmOworICAgIG1vY2tTb3Vy
Y2UxLT5tX2N1cnJlbnRTdGF0ZXMudm9sdW1lID0gNzA7CisgICAgbW9ja1NvdXJjZU1hcCgpLmFk
ZChtb2NrU291cmNlMS0+aWQoKSwgbW9ja1NvdXJjZTEucmVsZWFzZSgpKTsKKworICAgIFJlZlB0
cjxNb2NrU291cmNlPiBtb2NrU291cmNlMiA9IGFkb3B0UmVmKG5ldyBNb2NrU291cmNlKG1vY2tB
dWRpb1NvdXJjZUlEKCksICJNb2NrIGF1ZGlvIGRldmljZSIsIE1lZGlhU3RyZWFtU291cmNlOjpB
dWRpbykpOworICAgIG1vY2tTb3VyY2UyLT5tX2NhcGFiaWxpdGllcyA9IE1lZGlhU3RyZWFtU291
cmNlQ2FwYWJpbGl0aWVzOjpjcmVhdGUoKTsKKyAgICBtb2NrU291cmNlMi0+bV9jYXBhYmlsaXRp
ZXMtPnNldFNvdXJjZUlkKG1vY2tTb3VyY2UyLT5pZCgpKTsKKyAgICBtb2NrU291cmNlMi0+bV9j
YXBhYmlsaXRpZXMtPnNldFZvbHVtZVJhbmdlKE1lZGlhU3RyZWFtU291cmNlQ2FwYWJpbGl0eVJh
bmdlKDBVTCwgMTAwVUwsIHRydWUpKTsKKworICAgIG1vY2tTb3VyY2UyLT5tX2N1cnJlbnRTdGF0
ZXMuc291cmNlVHlwZSA9IE1lZGlhU3RyZWFtU291cmNlU3RhdGVzOjpNaWNyb3Bob25lOworICAg
IG1vY2tTb3VyY2UyLT5tX2N1cnJlbnRTdGF0ZXMuc291cmNlSWQgPSBtb2NrU291cmNlMi0+aWQo
KTsKKyAgICBtb2NrU291cmNlMi0+bV9jdXJyZW50U3RhdGVzLnZvbHVtZSA9IDUwOworICAgIG1v
Y2tTb3VyY2VNYXAoKS5hZGQobW9ja1NvdXJjZTItPmlkKCksIG1vY2tTb3VyY2UyLnJlbGVhc2Uo
KSk7Cit9CisKK3ZvaWQgTW9ja01lZGlhU3RyZWFtQ2VudGVyOjpyZWdpc3Rlck1vY2tNZWRpYVN0
cmVhbUNlbnRlcigpCit7CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChNb2NrTWVkaWFTdHJlYW1D
ZW50ZXIsIGNlbnRlciwgKCkpOworICAgIHN0YXRpYyBib29sIHJlZ2lzdGVyZWQgPSBmYWxzZTsK
KyAgICBpZiAoIXJlZ2lzdGVyZWQpIHsKKyAgICAgICAgcmVnaXN0ZXJlZCA9IHRydWU7CisgICAg
ICAgIE1lZGlhU3RyZWFtQ2VudGVyOjpzZXRTaGFyZWRTdHJlYW1DZW50ZXIoJmNlbnRlcik7Cisg
ICAgICAgIGluaXRpYWxpemVNb2NrU291cmNlcygpOworICAgIH0KK30KKwogc3RhdGljIGJvb2wg
aXNTdXBwb3J0ZWRNb2NrQ29uc3RyYWludChjb25zdCBTdHJpbmcmIGNvbnN0cmFpbnROYW1lKQog
ewogICAgIHJldHVybiBub3RGb3VuZCAhPSBjb25zdHJhaW50TmFtZS5maW5kKCJfYW5kX3N1cHBv
cnRlZF8iKTsKQEAgLTc1LDE2ICsxNjAsNiBAQCBzdGF0aWMgU3RyaW5nIHZlcmlmeUNvbnN0cmFp
bnRzKE1lZGlhQ29uCiAgICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7CiB9CiAKLXZvaWQgTW9ja01l
ZGlhU3RyZWFtQ2VudGVyOjpyZWdpc3Rlck1vY2tNZWRpYVN0cmVhbUNlbnRlcigpCi17Ci0gICAg
REVGSU5FX1NUQVRJQ19MT0NBTChNb2NrTWVkaWFTdHJlYW1DZW50ZXIsIGNlbnRlciwgKCkpOwot
ICAgIHN0YXRpYyBib29sIHJlZ2lzdGVyZWQgPSBmYWxzZTsKLSAgICBpZiAoIXJlZ2lzdGVyZWQp
IHsKLSAgICAgICAgcmVnaXN0ZXJlZCA9IHRydWU7Ci0gICAgICAgIE1lZGlhU3RyZWFtQ2VudGVy
OjpzZXRTaGFyZWRTdHJlYW1DZW50ZXIoJmNlbnRlcik7Ci0gICAgfQotfQotCiB2b2lkIE1vY2tN
ZWRpYVN0cmVhbUNlbnRlcjo6dmFsaWRhdGVSZXF1ZXN0Q29uc3RyYWludHMoUGFzc1JlZlB0cjxN
ZWRpYVN0cmVhbUNyZWF0aW9uQ2xpZW50PiBwcnBRdWVyeUNsaWVudCwgUGFzc1JlZlB0cjxNZWRp
YUNvbnN0cmFpbnRzPiBhdWRpb0NvbnN0cmFpbnRzLCBQYXNzUmVmUHRyPE1lZGlhQ29uc3RyYWlu
dHM+IHZpZGVvQ29uc3RyYWludHMpCiB7CiAgICAgUmVmUHRyPE1lZGlhU3RyZWFtQ3JlYXRpb25D
bGllbnQ+IGNsaWVudCA9IHBycFF1ZXJ5Q2xpZW50OwpAQCAtMTE4LDYgKzE5Myw3IEBAIHZvaWQg
TW9ja01lZGlhU3RyZWFtQ2VudGVyOjpjcmVhdGVNZWRpYVMKICAgICAKICAgICBWZWN0b3I8UmVm
UHRyPE1lZGlhU3RyZWFtU291cmNlPj4gYXVkaW9Tb3VyY2VzOwogICAgIFZlY3RvcjxSZWZQdHI8
TWVkaWFTdHJlYW1Tb3VyY2U+PiB2aWRlb1NvdXJjZXM7CisgICAgTW9ja1NvdXJjZU1hcCYgbWFw
ID0gbW9ja1NvdXJjZU1hcCgpOwogCiAgICAgaWYgKGF1ZGlvQ29uc3RyYWludHMpIHsKICAgICAg
ICAgU3RyaW5nIGludmFsaWRRdWVyeSA9IHZlcmlmeUNvbnN0cmFpbnRzKGF1ZGlvQ29uc3RyYWlu
dHMuZ2V0KCkpOwpAQCAtMTI3LDcgKzIwMywxMSBAQCB2b2lkIE1vY2tNZWRpYVN0cmVhbUNlbnRl
cjo6Y3JlYXRlTWVkaWFTCiAgICAgICAgIH0KIAogICAgICAgICBpZiAoYXVkaW9Db25zdHJhaW50
cykgewotICAgICAgICAgICAgUmVmUHRyPE1lZGlhU3RyZWFtU291cmNlPiBhdWRpb1NvdXJjZSA9
IE1lZGlhU3RyZWFtU291cmNlOjpjcmVhdGUoZW1wdHlTdHJpbmcoKSwgTWVkaWFTdHJlYW1Tb3Vy
Y2U6OkF1ZGlvLCAiTW9jayBhdWRpbyBkZXZpY2UiKTsKKyAgICAgICAgICAgIE1vY2tTb3VyY2VN
YXA6Oml0ZXJhdG9yIGl0ID0gbWFwLmZpbmQobW9ja0F1ZGlvU291cmNlSUQoKSk7CisgICAgICAg
ICAgICBBU1NFUlQoaXQgIT0gbWFwLmVuZCgpKTsKKworICAgICAgICAgICAgUmVmUHRyPE1lZGlh
U3RyZWFtU291cmNlPiBhdWRpb1NvdXJjZSA9IGl0LT52YWx1ZTsKKyAgICAgICAgICAgIGF1ZGlv
U291cmNlLT5yZXNldCgpOwogICAgICAgICAgICAgYXVkaW9Tb3VyY2UtPnNldFJlYWR5U3RhdGUo
TWVkaWFTdHJlYW1Tb3VyY2U6OkxpdmUpOwogICAgICAgICAgICAgYXVkaW9Tb3VyY2VzLmFwcGVu
ZChhdWRpb1NvdXJjZS5yZWxlYXNlKCkpOwogICAgICAgICB9CkBAIC0xNDEsNyArMjIxLDExIEBA
IHZvaWQgTW9ja01lZGlhU3RyZWFtQ2VudGVyOjpjcmVhdGVNZWRpYVMKICAgICAgICAgfQogCiAg
ICAgICAgIGlmICh2aWRlb0NvbnN0cmFpbnRzKSB7Ci0gICAgICAgICAgICBSZWZQdHI8TWVkaWFT
dHJlYW1Tb3VyY2U+IHZpZGVvU291cmNlID0gTWVkaWFTdHJlYW1Tb3VyY2U6OmNyZWF0ZShlbXB0
eVN0cmluZygpLCBNZWRpYVN0cmVhbVNvdXJjZTo6VmlkZW8sICJNb2NrIHZpZGVvIGRldmljZSIp
OworICAgICAgICAgICAgTW9ja1NvdXJjZU1hcDo6aXRlcmF0b3IgaXQgPSBtYXAuZmluZChtb2Nr
VmlkZW9Tb3VyY2VJRCgpKTsKKyAgICAgICAgICAgIEFTU0VSVChpdCAhPSBtYXAuZW5kKCkpOwor
CisgICAgICAgICAgICBSZWZQdHI8TWVkaWFTdHJlYW1Tb3VyY2U+IHZpZGVvU291cmNlID0gaXQt
PnZhbHVlOworICAgICAgICAgICAgdmlkZW9Tb3VyY2UtPnJlc2V0KCk7CiAgICAgICAgICAgICB2
aWRlb1NvdXJjZS0+c2V0UmVhZHlTdGF0ZShNZWRpYVN0cmVhbVNvdXJjZTo6TGl2ZSk7CiAgICAg
ICAgICAgICB2aWRlb1NvdXJjZXMuYXBwZW5kKHZpZGVvU291cmNlLnJlbGVhc2UoKSk7CiAgICAg
ICAgIH0KQEAgLTE1MywzOSArMjM3LDIwIEBAIHZvaWQgTW9ja01lZGlhU3RyZWFtQ2VudGVyOjpj
cmVhdGVNZWRpYVMKIGJvb2wgTW9ja01lZGlhU3RyZWFtQ2VudGVyOjpnZXRNZWRpYVN0cmVhbVRy
YWNrU291cmNlcyhQYXNzUmVmUHRyPE1lZGlhU3RyZWFtVHJhY2tTb3VyY2VzUmVxdWVzdENsaWVu
dD4gcHJwQ2xpZW50KQogewogICAgIFJlZlB0cjxNZWRpYVN0cmVhbVRyYWNrU291cmNlc1JlcXVl
c3RDbGllbnQ+IHJlcXVlc3RDbGllbnQgPSBwcnBDbGllbnQ7Ci0gICAgVmVjdG9yPFJlZlB0cjxU
cmFja1NvdXJjZUluZm8+PiBzb3VyY2VzKDIpOworICAgIFZlY3RvcjxSZWZQdHI8VHJhY2tTb3Vy
Y2VJbmZvPj4gc291cmNlczsKIAotICAgIHNvdXJjZXNbMF0gPSBUcmFja1NvdXJjZUluZm86OmNy
ZWF0ZSgiTW9ja19hdWRpb19kZXZpY2VfSUQiLCBUcmFja1NvdXJjZUluZm86OkF1ZGlvLCAiTW9j
ayBhdWRpbyBkZXZpY2UiKTsKLSAgICBzb3VyY2VzWzFdID0gVHJhY2tTb3VyY2VJbmZvOjpjcmVh
dGUoIk1vY2tfdmlkZW9fZGV2aWNlX0lEIiwgVHJhY2tTb3VyY2VJbmZvOjpWaWRlbywgIk1vY2sg
dmlkZW8gZGV2aWNlIik7Ci0KLSAgICByZXF1ZXN0Q2xpZW50LT5kaWRDb21wbGV0ZVJlcXVlc3Qo
c291cmNlcyk7Ci0gICAgcmV0dXJuIHRydWU7Ci19CisgICAgTW9ja1NvdXJjZU1hcCYgbWFwID0g
bW9ja1NvdXJjZU1hcCgpOworICAgIE1vY2tTb3VyY2VNYXA6Oml0ZXJhdG9yIGVuZCA9IG1hcC5l
bmQoKTsKKyAgICBmb3IgKE1vY2tTb3VyY2VNYXA6Oml0ZXJhdG9yIGl0ID0gbWFwLmJlZ2luKCk7
IGl0ICE9IGVuZDsgKytpdCkgeworICAgICAgICBNb2NrU291cmNlKiBzb3VyY2UgPSBpdC0+dmFs
dWUuZ2V0KCk7CiAKLXZvaWQgTW9ja01lZGlhU3RyZWFtQ2VudGVyOjpkaWRTZXRNZWRpYVN0cmVh
bVRyYWNrRW5hYmxlZChNZWRpYVN0cmVhbVNvdXJjZSogc291cmNlKQotewotICAgIHNvdXJjZS0+
c2V0UmVhZHlTdGF0ZShNZWRpYVN0cmVhbVNvdXJjZTo6TGl2ZSk7Ci19Ci0KLWJvb2wgTW9ja01l
ZGlhU3RyZWFtQ2VudGVyOjpkaWRBZGRNZWRpYVN0cmVhbVRyYWNrKE1lZGlhU3RyZWFtU291cmNl
KikKLXsKLSAgICByZXR1cm4gdHJ1ZTsKLX0KKyAgICAgICAgc291cmNlcy5hcHBlbmQoVHJhY2tT
b3VyY2VJbmZvOjpjcmVhdGUoc291cmNlLT5pZCgpLCBzb3VyY2UtPnR5cGUoKSA9PSBNZWRpYVN0
cmVhbVNvdXJjZTo6VmlkZW8gPyBUcmFja1NvdXJjZUluZm86OlZpZGVvIDogVHJhY2tTb3VyY2VJ
bmZvOjpBdWRpbywgc291cmNlLT5uYW1lKCkpKTsKKyAgICB9CiAKLWJvb2wgTW9ja01lZGlhU3Ry
ZWFtQ2VudGVyOjpkaWRSZW1vdmVNZWRpYVN0cmVhbVRyYWNrKE1lZGlhU3RyZWFtU291cmNlKikK
LXsKKyAgICByZXF1ZXN0Q2xpZW50LT5kaWRDb21wbGV0ZVJlcXVlc3Qoc291cmNlcyk7CiAgICAg
cmV0dXJuIHRydWU7CiB9CiAKLXZvaWQgTW9ja01lZGlhU3RyZWFtQ2VudGVyOjpkaWRTdG9wTG9j
YWxNZWRpYVN0cmVhbShNZWRpYVN0cmVhbURlc2NyaXB0b3IqIHN0cmVhbSkKLXsKLSAgICBlbmRM
b2NhbE1lZGlhU3RyZWFtKHN0cmVhbSk7Ci19Ci0KLXZvaWQgTW9ja01lZGlhU3RyZWFtQ2VudGVy
OjpkaWRDcmVhdGVNZWRpYVN0cmVhbShNZWRpYVN0cmVhbURlc2NyaXB0b3IqKQotewotfQotCiB9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBFTkFCTEUoTUVESUFfU1RSRUFNKQpJ
bmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9Nb2NrTWVkaWFTdHJlYW1DZW50ZXIu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01vY2tNZWRpYVN0
cmVhbUNlbnRlci5oCShyZXZpc2lvbiAxNTcwMTYpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tb2NrL01vY2tNZWRpYVN0cmVhbUNlbnRlci5oCSh3b3JraW5nIGNvcHkpCkBAIC00MCwxMSAr
NDAsNiBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHZhbGlkYXRlUmVxdWVzdENvbnN0cmFp
bnRzKFBhc3NSZWZQdHI8TWVkaWFTdHJlYW1DcmVhdGlvbkNsaWVudD4sIFBhc3NSZWZQdHI8TWVk
aWFDb25zdHJhaW50cz4gYXVkaW9Db25zdHJhaW50cywgUGFzc1JlZlB0cjxNZWRpYUNvbnN0cmFp
bnRzPiB2aWRlb0NvbnN0cmFpbnRzKTsKICAgICB2aXJ0dWFsIHZvaWQgY3JlYXRlTWVkaWFTdHJl
YW0oUGFzc1JlZlB0cjxNZWRpYVN0cmVhbUNyZWF0aW9uQ2xpZW50PiwgUGFzc1JlZlB0cjxNZWRp
YUNvbnN0cmFpbnRzPiBhdWRpb0NvbnN0cmFpbnRzLCBQYXNzUmVmUHRyPE1lZGlhQ29uc3RyYWlu
dHM+IHZpZGVvQ29uc3RyYWludHMpOwogICAgIHZpcnR1YWwgYm9vbCBnZXRNZWRpYVN0cmVhbVRy
YWNrU291cmNlcyhQYXNzUmVmUHRyPE1lZGlhU3RyZWFtVHJhY2tTb3VyY2VzUmVxdWVzdENsaWVu
dD4pIE9WRVJSSURFOwotICAgIHZpcnR1YWwgdm9pZCBkaWRTZXRNZWRpYVN0cmVhbVRyYWNrRW5h
YmxlZChNZWRpYVN0cmVhbVNvdXJjZSopIE9WRVJSSURFOwotICAgIHZpcnR1YWwgYm9vbCBkaWRB
ZGRNZWRpYVN0cmVhbVRyYWNrKE1lZGlhU3RyZWFtU291cmNlKikgT1ZFUlJJREU7Ci0gICAgdmly
dHVhbCBib29sIGRpZFJlbW92ZU1lZGlhU3RyZWFtVHJhY2soTWVkaWFTdHJlYW1Tb3VyY2UqKSBP
VkVSUklERTsKLSAgICB2aXJ0dWFsIHZvaWQgZGlkU3RvcExvY2FsTWVkaWFTdHJlYW0oTWVkaWFT
dHJlYW1EZXNjcmlwdG9yKikgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCB2b2lkIGRpZENyZWF0ZU1l
ZGlhU3RyZWFtKE1lZGlhU3RyZWFtRGVzY3JpcHRvciopIE9WRVJSSURFOwogCiBwcml2YXRlOgog
ICAgIE1vY2tNZWRpYVN0cmVhbUNlbnRlcigpIHsgfQpJbmRleDogTGF5b3V0VGVzdHMvQ2hhbmdl
TG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL0NoYW5nZUxvZwkocmV2aXNpb24gMTU3MDE2
KQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTUg
QEAKKzIwMTMtMTAtMDYgIEVyaWMgQ2FybHNvbiAgPGVyaWMuY2FybHNvbkBhcHBsZS5jb20+CisK
KyAgICAgICAgW01lZGlhU3RyZWFtIEFQSV0gdXBkYXRlIE1lZGlhU3RyZWFtVHJhY2sgb2JqZWN0
IHRvIG1hdGNoIHNwZWMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTEyMTk0MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgICogZmFzdC9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVRyYWNrLWV4cGVjdGVkLnR4dDoK
KyAgICAgICAgKiBmYXN0L21lZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJhY2suaHRtbDoKKyAgICAg
ICAgKiBmYXN0L21lZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJhY2stZ2V0U291cmNlcy1leHBlY3Rl
ZC50eHQ6CisgICAgICAgICogZmFzdC9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVRyYWNrLWdldFNv
dXJjZXMuaHRtbDoKKwogMjAxMy0xMC0wNiAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29t
PgogCiAgICAgICAgIFVuaWZpZWQgdGVzdCBpbmZyYXN0cnVjdHVyZSB2aWEgdGhlIGpzYyBzaGVs
bApJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVRyYWNrLWV4
cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L21lZGlhc3RyZWFtL01l
ZGlhU3RyZWFtVHJhY2stZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAxNTcwMTYpCisrKyBMYXlvdXRU
ZXN0cy9mYXN0L21lZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJhY2stZXhwZWN0ZWQudHh0CSh3b3Jr
aW5nIGNvcHkpCkBAIC00LDEzICs0LDEwMyBAQCBPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBz
ZXJpZXMgb2YgIlBBCiAKIAogUEFTUyBnZXRVc2VyTWVkaWEgc3VjY2VlZGVkLgorCit2aWRlb1Ry
YWNrID0gbWVkaWFTdHJlYW0uZ2V0VmlkZW9UcmFja3MoKVswXQorUEFTUyB0cmFjay5yZWFkeVN0
YXRlIGlzICJsaXZlIgorY2hlY2tpbmcgdHJhY2suY2FwYWJpbGl0aWVzKCkKKyAgc291cmNlSWQK
KyAgICAwIDogMjM5YzI0YjAtMmIxNS0xMWUzLTgyMjQtMDgwMDIwMGM5YTY2CisgIHNvdXJjZVR5
cGUKKyAgICAwIDogY2FtZXJhCisgICAgMSA6IG1pY3JvcGhvbmUKKyAgd2lkdGgKKyAgIG1pbiA6
IDMyMAorICAgbWF4IDogMTkyMAorICAgc3VwcG9ydGVkIDogdHJ1ZQorICBoZWlnaHQKKyAgIG1p
biA6IDI0MAorICAgbWF4IDogMTA4MAorICAgc3VwcG9ydGVkIDogdHJ1ZQorICBmcmFtZVJhdGUK
KyAgIG1pbiA6IDE1CisgICBtYXggOiA2MAorICAgc3VwcG9ydGVkIDogdHJ1ZQorICBhc3BlY3RS
YXRpbworICAgbWluIDogMS4zMzMzMzMzNzMwNjk3NjMyCisgICBtYXggOiAxLjc3Nzc3Nzc5MTAy
MzI1NDQKKyAgIHN1cHBvcnRlZCA6IHRydWUKKyAgZmFjaW5nTW9kZQorICAgIDAgOiB1c2VyCisg
ICAgMSA6IGVudmlyb25tZW50CitjaGVja2luZyB0cmFjay5zdGF0ZXMoKQorUEFTUyBzdGF0ZXMu
c291cmNlSWQgaXMgY2FwYWJpbGl0aWVzLnNvdXJjZUlkWzBdCitQQVNTIHN0YXRlcy5zb3VyY2VU
eXBlIGlzICJjYW1lcmEiCisgIHdpZHRoIDogMTkyMAorICBoZWlnaHQgOiAxMDgwCisgIGZyYW1l
UmF0ZSA6IDMwCisgIGFzcGVjdFJhdGlvIDogMS43Nzc3Nzc3OTEwMjMyNTQ0CisgIGZhY2luZ01v
ZGUgOiB1c2VyCisKK2F1ZGlvVHJhY2sgPSBtZWRpYVN0cmVhbS5nZXRBdWRpb1RyYWNrcygpWzBd
CiBQQVNTIHRyYWNrLnJlYWR5U3RhdGUgaXMgImxpdmUiCi1QQVNTIFRyYWNrIG9ubXV0ZSBjYWxs
YmFjayBzdWNjZWVkZWQuCi1QQVNTIHRyYWNrLnJlYWR5U3RhdGUgaXMgIm11dGVkIgotUEFTUyBU
cmFjayBvbnVubXV0ZSBjYWxsYmFjayBzdWNjZWVkZWQuCitjaGVja2luZyB0cmFjay5jYXBhYmls
aXRpZXMoKQorICBzb3VyY2VJZAorICAgIDAgOiAyMzljMjRiMS0yYjE1LTExZTMtODIyNC0wODAw
MjAwYzlhNjYKKyAgdm9sdW1lCisgICBtaW4gOiAwCisgICBtYXggOiAxMDAKKyAgIHN1cHBvcnRl
ZCA6IHRydWUKK2NoZWNraW5nIHRyYWNrLnN0YXRlcygpCitQQVNTIHN0YXRlcy5zb3VyY2VJZCBp
cyBjYXBhYmlsaXRpZXMuc291cmNlSWRbMF0KK1BBU1Mgc3RhdGVzLnNvdXJjZVR5cGUgaXMgIm1p
Y3JvcGhvbmUiCisgIHZvbHVtZSA6IDUwCisKK3ZpZGVvVHJhY2syID0gdmlkZW9UcmFjay5jbG9u
ZSgpCiBQQVNTIHRyYWNrLnJlYWR5U3RhdGUgaXMgImxpdmUiCitjaGVja2luZyB0cmFjay5jYXBh
YmlsaXRpZXMoKQorICBzb3VyY2VJZAorICAgIDAgOiAyMzljMjRiMC0yYjE1LTExZTMtODIyNC0w
ODAwMjAwYzlhNjYKKyAgc291cmNlVHlwZQorICAgIDAgOiBjYW1lcmEKKyAgICAxIDogbWljcm9w
aG9uZQorICB3aWR0aAorICAgbWluIDogMzIwCisgICBtYXggOiAxOTIwCisgICBzdXBwb3J0ZWQg
OiB0cnVlCisgIGhlaWdodAorICAgbWluIDogMjQwCisgICBtYXggOiAxMDgwCisgICBzdXBwb3J0
ZWQgOiB0cnVlCisgIGZyYW1lUmF0ZQorICAgbWluIDogMTUKKyAgIG1heCA6IDYwCisgICBzdXBw
b3J0ZWQgOiB0cnVlCisgIGFzcGVjdFJhdGlvCisgICBtaW4gOiAxLjMzMzMzMzM3MzA2OTc2MzIK
KyAgIG1heCA6IDEuNzc3Nzc3NzkxMDIzMjU0NAorICAgc3VwcG9ydGVkIDogdHJ1ZQorICBmYWNp
bmdNb2RlCisgICAgMCA6IHVzZXIKKyAgICAxIDogZW52aXJvbm1lbnQKK2NoZWNraW5nIHRyYWNr
LnN0YXRlcygpCitQQVNTIHN0YXRlcy5zb3VyY2VJZCBpcyBjYXBhYmlsaXRpZXMuc291cmNlSWRb
MF0KK1BBU1Mgc3RhdGVzLnNvdXJjZVR5cGUgaXMgImNhbWVyYSIKKyAgd2lkdGggOiAxOTIwCisg
IGhlaWdodCA6IDEwODAKKyAgZnJhbWVSYXRlIDogMzAKKyAgYXNwZWN0UmF0aW8gOiAxLjc3Nzc3
Nzc5MTAyMzI1NDQKKyAgZmFjaW5nTW9kZSA6IHVzZXIKK1BBU1MgdmlkZW9UcmFjay5pZCBpcyBu
b3QgdmlkZW9UcmFjazIuaWQKK1BBU1MgdmlkZW9UcmFjay5raW5kIGlzIHZpZGVvVHJhY2syLmtp
bmQKK1BBU1MgdmlkZW9UcmFjay5sYWJlbCBpcyB2aWRlb1RyYWNrMi5sYWJlbAorUEFTUyB2aWRl
b1RyYWNrLm11dGVkIGlzIHZpZGVvVHJhY2syLm11dGVkCitQQVNTIHZpZGVvVHJhY2suZW5hYmxl
ZCBpcyB2aWRlb1RyYWNrMi5lbmFibGVkCitQQVNTIHZpZGVvVHJhY2sucmVhZHlTdGF0ZSBpcyB2
aWRlb1RyYWNrMi5yZWFkeVN0YXRlCisKK3ZpZGVvVHJhY2suc3RvcCgpCiBQQVNTIFRyYWNrIG9u
ZW5kZWQgY2FsbGJhY2sgc3VjY2VlZGVkLgotUEFTUyB0cmFjay5yZWFkeVN0YXRlIGlzICJlbmRl
ZCIKK1BBU1MgdmlkZW9UcmFjay5yZWFkeVN0YXRlIGlzICJlbmRlZCIKKwogUEFTUyBzdWNjZXNz
ZnVsbHlQYXJzZWQgaXMgdHJ1ZQogCiBURVNUIENPTVBMRVRFCkluZGV4OiBMYXlvdXRUZXN0cy9m
YXN0L21lZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJhY2stZ2V0U291cmNlcy1leHBlY3RlZC50eHQK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVRy
YWNrLWdldFNvdXJjZXMtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAxNTcwMTYpCisrKyBMYXlvdXRU
ZXN0cy9mYXN0L21lZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJhY2stZ2V0U291cmNlcy1leHBlY3Rl
ZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTcsMTAgKzcsMTAgQEAgT24gc3VjY2VzcywgeW91IHdp
bGwgc2VlIGEgc2VyaWVzIG9mICJQQQogKioqIGNhbGxpbmcgTWVkaWFTdHJlYW1UcmFjay5nZXRT
b3VyY2VzKCkgKioqCiBQQVNTIE1lZGlhU3RyZWFtVHJhY2suZ2V0U291cmNlcyhnb3RTb3VyY2Vz
MSk7IGRpZCBub3QgdGhyb3cgZXhjZXB0aW9uLgogUEFTUyBjYWxsYmFjayBjYWxsZWQuCi1zb3Vy
Y2VzMVswXS5zb3VyY2VJZCA9ICJNb2NrX2F1ZGlvX2RldmljZV9JRCIKK3NvdXJjZXMxWzBdLnNv
dXJjZUlkID0gIjIzOWMyNGIxLTJiMTUtMTFlMy04MjI0LTA4MDAyMDBjOWE2NiIKIHNvdXJjZXMx
WzBdLmxhYmVsID0gIk1vY2sgYXVkaW8gZGV2aWNlIgogc291cmNlczFbMF0ua2luZCA9ICJhdWRp
byIKLXNvdXJjZXMxWzFdLnNvdXJjZUlkID0gIk1vY2tfdmlkZW9fZGV2aWNlX0lEIgorc291cmNl
czFbMV0uc291cmNlSWQgPSAiMjM5YzI0YjAtMmIxNS0xMWUzLTgyMjQtMDgwMDIwMGM5YTY2Igog
c291cmNlczFbMV0ubGFiZWwgPSAiTW9jayB2aWRlbyBkZXZpY2UiCiBzb3VyY2VzMVsxXS5raW5k
ID0gInZpZGVvIgogCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L21lZGlhc3RyZWFtL01lZGlhU3Ry
ZWFtVHJhY2suaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L21lZGlhc3RyZWFt
L01lZGlhU3RyZWFtVHJhY2suaHRtbAkocmV2aXNpb24gMTU3MDE2KQorKysgTGF5b3V0VGVzdHMv
ZmFzdC9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVRyYWNrLmh0bWwJKHdvcmtpbmcgY29weSkKQEAg
LTEsNzkgKzEsMTcwIEBACiA8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL0lFVEYvL0RURCBIVE1M
Ly9FTiI+CiA8aHRtbD4KLTxoZWFkPgotPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10
ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Ci08L2hlYWQ+Ci08Ym9keT4KLTxwIGlkPSJkZXNjcmlwdGlv
biI+PC9wPgotPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Ci08c2NyaXB0PgotZGVzY3JpcHRpb24o
IlRlc3RzIE1lZGlhU3RyZWFtVHJhY2sgY2FsbGJhY2tzLiIpOwotCi0vLyBOb3RlIHRoYXQgdGhl
IGJlbG93IGJlaGF2aW91ciBkb2Vzbid0IHJlZmxlY3QgaG93IGl0IHdvcmtzIG91dHNpZGUgb2Yg
TGF5b3V0VGVzdHMuCi0vLyBUaGUgdW5kZXJseWluZyBtb2NrIGlzIG1vZGlmaWVkIHRvIHRyaWdn
ZXIgdGhlIGV2ZW50cyB3aGVuIGNlcnRhaW4gZnVuY3Rpb25zIGFyZSBjYWxsZWQuCi0vLyBUaGlz
IG1vZGlmaWVkIGJlaGF2aW91ciBhbGxvd3MgdXMgdG8gdGVzdCB0aGUgTWVkaWFTdHJlYW1UcmFj
ayBjbGFzcyBwcm9wZXJseS4KLQotdmFyIHN0cmVhbTsKLXZhciB0cmFjazsKLQotZnVuY3Rpb24g
ZXJyb3IoKSB7Ci0gICAgdGVzdEZhaWxlZCgnU3RyZWFtIGdlbmVyYXRpb24gZmFpbGVkLicpOwot
ICAgIGZpbmlzaEpTVGVzdCgpOwotfQotCi1mdW5jdGlvbiBnZXRVc2VyTWVkaWEoY29uc3RyYWlu
dHMsIGNhbGxiYWNrKSB7Ci0gICAgdHJ5IHsKLSAgICAgICAgbmF2aWdhdG9yLndlYmtpdEdldFVz
ZXJNZWRpYShjb25zdHJhaW50cywgY2FsbGJhY2ssIGVycm9yKTsKLSAgICB9IGNhdGNoIChlKSB7
Ci0gICAgICAgIHRlc3RGYWlsZWQoJ3dlYmtpdEdldFVzZXJNZWRpYSB0aHJldyBleGNlcHRpb24g
OicgKyBlKTsKLSAgICAgICAgZmluaXNoSlNUZXN0KCk7Ci0gICAgfQotfQotCi1mdW5jdGlvbiBv
blRyYWNrRW5kZWQoKSB7Ci0gICAgdGVzdFBhc3NlZCgnVHJhY2sgb25lbmRlZCBjYWxsYmFjayBz
dWNjZWVkZWQuJyk7Ci0KLSAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoJ3RyYWNrLnJlYWR5U3Rh
dGUnLCAnZW5kZWQnKTsKLQotICAgIGZpbmlzaEpTVGVzdCgpOwotfQotCi1mdW5jdGlvbiBvblRy
YWNrVW5tdXRlKCkgewotICAgIHRlc3RQYXNzZWQoJ1RyYWNrIG9udW5tdXRlIGNhbGxiYWNrIHN1
Y2NlZWRlZC4nKTsKLQotICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygndHJhY2sucmVhZHlTdGF0
ZScsICdsaXZlJyk7Ci0KLSAgICBzdHJlYW0uc3RvcCgpOwotfQotCi1mdW5jdGlvbiBvblRyYWNr
TXV0ZSgpIHsKLSAgICB0ZXN0UGFzc2VkKCdUcmFjayBvbm11dGUgY2FsbGJhY2sgc3VjY2VlZGVk
LicpOwotCi0gICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCd0cmFjay5yZWFkeVN0YXRlJywgJ211
dGVkJyk7Ci0KLSAgICB0cmFjay5lbmFibGVkID0gdHJ1ZTsKLX0KLQotZnVuY3Rpb24gZ290U3Ry
ZWFtKHMpIHsKLSAgICB0ZXN0UGFzc2VkKCdnZXRVc2VyTWVkaWEgc3VjY2VlZGVkLicpOwotCi0g
ICAgc3RyZWFtID0gczsKLSAgICB0cmFjayA9IHN0cmVhbS5nZXRWaWRlb1RyYWNrcygpWzBdOwot
Ci0gICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCd0cmFjay5yZWFkeVN0YXRlJywgJ2xpdmUnKTsK
LQotICAgIHRyYWNrLm9udW5tdXRlID0gb25UcmFja1VubXV0ZTsKLSAgICB0cmFjay5vbm11dGUg
PSBvblRyYWNrTXV0ZTsKLSAgICB0cmFjay5vbmVuZGVkID0gb25UcmFja0VuZGVkOwotCi0gICAg
dHJhY2suZW5hYmxlZCA9IGZhbHNlOwotfQotCi1nZXRVc2VyTWVkaWEoe2F1ZGlvOnRydWUsIHZp
ZGVvOnRydWV9LCBnb3RTdHJlYW0pOwotCi13aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7Ci13
aW5kb3cuc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKLTwvc2NyaXB0PgotPHNjcmlwdCBzcmM9
Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgotPC9ib2R5PgorICAg
IDxoZWFkPgorICAgICAgICA8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcHJl
LmpzIj48L3NjcmlwdD4KKyAgICAgICAgPHNjcmlwdD4KKyAgICAgICAgICAgIHZhciBtZWRpYVN0
cmVhbTsKKyAgICAgICAgICAgIHZhciB2aWRlb1RyYWNrOworICAgICAgICAgICAgdmFyIHZpZGVv
VHJhY2syOworICAgICAgICAgICAgdmFyIGF1ZGlvVHJhY2s7CisgICAgICAgICAgICAKKyAgICAg
ICAgICAgIGZ1bmN0aW9uIGVycm9yKCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICB0
ZXN0RmFpbGVkKCdTdHJlYW0gZ2VuZXJhdGlvbiBmYWlsZWQuJyk7CisgICAgICAgICAgICAgICAg
ZmluaXNoSlNUZXN0KCk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGZ1bmN0aW9uIGdl
dFVzZXJNZWRpYShjb25zdHJhaW50cywgY2FsbGJhY2spCisgICAgICAgICAgICB7CisgICAgICAg
ICAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgICAgICAgICAgbmF2aWdhdG9yLndlYmtpdEdldFVz
ZXJNZWRpYShjb25zdHJhaW50cywgY2FsbGJhY2ssIGVycm9yKTsKKyAgICAgICAgICAgICAgICB9
IGNhdGNoIChlKSB7CisgICAgICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoJ3dlYmtpdEdldFVz
ZXJNZWRpYSB0aHJldyBleGNlcHRpb24gOicgKyBlKTsKKyAgICAgICAgICAgICAgICAgICAgZmlu
aXNoSlNUZXN0KCk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAg
ICAgCisgICAgICAgICAgICBmdW5jdGlvbiBvblRyYWNrRW5kZWQoKQorICAgICAgICAgICAgewor
ICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoJ1RyYWNrIG9uZW5kZWQgY2FsbGJhY2sgc3VjY2Vl
ZGVkLicpOworICAgICAgICAgICAgICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygndmlkZW9UcmFj
ay5yZWFkeVN0YXRlJywgJ2VuZGVkJyk7CisgICAgICAgICAgICAgICAgZGVidWcoIiIpOworICAg
ICAgICAgICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAgICAgICAgICAgfQorCisgICAgICAgICAg
ICBmdW5jdGlvbiBvblRyYWNrU3RhcnRlZCgpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAg
ICAgdGVzdFBhc3NlZCgnVHJhY2sgb25zdGFydGVkIGNhbGxiYWNrIHN1Y2NlZWRlZC4nKTsKKyAg
ICAgICAgICAgICAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoJ3ZpZGVvVHJhY2sucmVhZHlTdGF0
ZScsICdsaXZlJyk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGZ1bmN0aW9uIG9uVHJh
Y2tPdmVyQ29uc3RyYWluZWQoKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHRlc3RQ
YXNzZWQoJ1RyYWNrIG9ub3ZlcmNvbnN0cmFpbmVkIGNhbGxiYWNrIHN1Y2NlZWRlZC4nKTsKKyAg
ICAgICAgICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAg
ICAgZnVuY3Rpb24gb25UcmFja1VubXV0ZSgpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAg
ICAgdGVzdFBhc3NlZCgnVHJhY2sgb251bm11dGUgY2FsbGJhY2sgc3VjY2VlZGVkLicpOworICAg
ICAgICAgICAgICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygndmlkZW9UcmFjay5yZWFkeVN0YXRl
JywgJ2xpdmUnKTsKKyAgICAgICAgICAgICAgICB2aWRlb1RyYWNrLnN0b3AoKTsKKyAgICAgICAg
ICAgIH0KKworICAgICAgICAgICAgZnVuY3Rpb24gb25UcmFja011dGUoKQorICAgICAgICAgICAg
eworICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoJ1RyYWNrIG9ubXV0ZSBjYWxsYmFjayBzdWNj
ZWVkZWQuJyk7CisgICAgICAgICAgICAgICAgc2hvdWxkQmVFcXVhbCgndmlkZW9UcmFjay5tdXRl
ZCcsIHRydWUpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBmdW5jdGlvbiBsb2dDYXBh
YmlsaXR5UmFuZ2UobmFtZSwgcmFuZ2UpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAg
ZGVidWcoIiAgIiArIG5hbWUpOworICAgICAgICAgICAgICAgIGRlYnVnKCIgICBtaW4gOiAiICsg
cmFuZ2UubWluKTsKKyAgICAgICAgICAgICAgICBkZWJ1ZygiICAgbWF4IDogIiArIHJhbmdlLm1h
eCk7CisgICAgICAgICAgICAgICAgZGVidWcoIiAgIHN1cHBvcnRlZCA6ICIgKyByYW5nZS5zdXBw
b3J0ZWQpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBmdW5jdGlvbiBsb2dDYXBhYmls
aXR5TGlzdChuYW1lLCBsaXN0KQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGRlYnVn
KCIgICIgKyBuYW1lKTsKKyAgICAgICAgICAgICAgICBmb3IgKGkgPSAwOyBpIDwgbGlzdC5sZW5n
dGg7IGkrKykKKyAgICAgICAgICAgICAgICBkZWJ1ZygiICAgICIgKyBpICsgIiA6ICIgKyBsaXN0
W2ldKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgZnVuY3Rpb24gY2hlY2tDYXBhYmls
aXRpZXModHJhY2spCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgZGVidWcoImNoZWNr
aW5nIHRyYWNrLmNhcGFiaWxpdGllcygpIik7CisgICAgICAgICAgICAgICAgY2FwYWJpbGl0aWVz
ID0gdHJhY2suY2FwYWJpbGl0aWVzKCk7CisgICAgICAgICAgICAgICAgbG9nQ2FwYWJpbGl0eUxp
c3QoInNvdXJjZUlkIiwgY2FwYWJpbGl0aWVzLnNvdXJjZUlkKTsKKyAgICAgICAgICAgICAgICBp
ZiAodHJhY2sua2luZCA9PSAidmlkZW8iKSB7CisgICAgICAgICAgICAgICAgICAgIGxvZ0NhcGFi
aWxpdHlMaXN0KCJzb3VyY2VUeXBlIiwgY2FwYWJpbGl0aWVzLnNvdXJjZVR5cGUpOworICAgICAg
ICAgICAgICAgICAgICBsb2dDYXBhYmlsaXR5UmFuZ2UoIndpZHRoIiwgY2FwYWJpbGl0aWVzLndp
ZHRoKTsKKyAgICAgICAgICAgICAgICAgICAgbG9nQ2FwYWJpbGl0eVJhbmdlKCJoZWlnaHQiLCBj
YXBhYmlsaXRpZXMuaGVpZ2h0KTsKKyAgICAgICAgICAgICAgICAgICAgbG9nQ2FwYWJpbGl0eVJh
bmdlKCJmcmFtZVJhdGUiLCBjYXBhYmlsaXRpZXMuZnJhbWVSYXRlKTsKKyAgICAgICAgICAgICAg
ICAgICAgbG9nQ2FwYWJpbGl0eVJhbmdlKCJhc3BlY3RSYXRpbyIsIGNhcGFiaWxpdGllcy5hc3Bl
Y3RSYXRpbyk7CisgICAgICAgICAgICAgICAgICAgIGxvZ0NhcGFiaWxpdHlMaXN0KCJmYWNpbmdN
b2RlIiwgY2FwYWJpbGl0aWVzLmZhY2luZ01vZGUpOworICAgICAgICAgICAgICAgIH0gZWxzZQor
ICAgICAgICAgICAgICAgICAgICBsb2dDYXBhYmlsaXR5UmFuZ2UoInZvbHVtZSIsIGNhcGFiaWxp
dGllcy52b2x1bWUpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBmdW5jdGlvbiBjaGVj
a1N0YXRlcyh0cmFjaykKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBkZWJ1ZygiY2hl
Y2tpbmcgdHJhY2suc3RhdGVzKCkiKTsKKyAgICAgICAgICAgICAgICBjYXBhYmlsaXRpZXMgPSB0
cmFjay5jYXBhYmlsaXRpZXMoKTsKKyAgICAgICAgICAgICAgICBzdGF0ZXMgPSB0cmFjay5zdGF0
ZXMoKTsKKyAgICAgICAgICAgICAgICBzaG91bGRCZSgnc3RhdGVzLnNvdXJjZUlkJywgJ2NhcGFi
aWxpdGllcy5zb3VyY2VJZFswXScpOworICAgICAgICAgICAgICAgIGlmICh0cmFjay5raW5kID09
ICJ2aWRlbyIpIHsKKyAgICAgICAgICAgICAgICAgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCdz
dGF0ZXMuc291cmNlVHlwZScsICdjYW1lcmEnKTsKKyAgICAgICAgICAgICAgICAgICAgZGVidWco
IiAgd2lkdGggOiAiICsgc3RhdGVzLndpZHRoKTsKKyAgICAgICAgICAgICAgICAgICAgZGVidWco
IiAgaGVpZ2h0IDogIiArIHN0YXRlcy5oZWlnaHQpOworICAgICAgICAgICAgICAgICAgICBkZWJ1
ZygiICBmcmFtZVJhdGUgOiAiICsgc3RhdGVzLmZyYW1lUmF0ZSk7CisgICAgICAgICAgICAgICAg
ICAgIGRlYnVnKCIgIGFzcGVjdFJhdGlvIDogIiArIHN0YXRlcy5hc3BlY3RSYXRpbyk7CisgICAg
ICAgICAgICAgICAgICAgIGRlYnVnKCIgIGZhY2luZ01vZGUgOiAiICsgc3RhdGVzLmZhY2luZ01v
ZGUpOworICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIHNob3Vs
ZEJlRXF1YWxUb1N0cmluZygnc3RhdGVzLnNvdXJjZVR5cGUnLCAnbWljcm9waG9uZScpOworICAg
ICAgICAgICAgICAgICAgICBkZWJ1ZygiICB2b2x1bWUgOiAiICsgc3RhdGVzLnZvbHVtZSk7Cisg
ICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgICAgCisgICAgICAgICAg
ICBmdW5jdGlvbiBjaGVja1RyYWNrKHQpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAg
dHJhY2sgPSB0OworICAgICAgICAgICAgICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygndHJhY2su
cmVhZHlTdGF0ZScsICdsaXZlJyk7CisgICAgICAgICAgICAgICAgY2hlY2tDYXBhYmlsaXRpZXMo
dHJhY2spOworICAgICAgICAgICAgICAgIGNoZWNrU3RhdGVzKHRyYWNrKTsKKyAgICAgICAgICAg
IH0KKworICAgICAgICAgICAgZnVuY3Rpb24gZ290U3RyZWFtKHN0cmVhbSkKKyAgICAgICAgICAg
IHsKKyAgICAgICAgICAgICAgICBtZWRpYVN0cmVhbSA9IHN0cmVhbTsKKyAgICAgICAgICAgICAg
ICB0ZXN0UGFzc2VkKCdnZXRVc2VyTWVkaWEgc3VjY2VlZGVkLicpOworICAgICAgICAgICAgCisg
ICAgICAgICAgICAgICAgZGVidWcoIiIpOworICAgICAgICAgICAgICAgIGV2YWxBbmRMb2coInZp
ZGVvVHJhY2sgPSBtZWRpYVN0cmVhbS5nZXRWaWRlb1RyYWNrcygpWzBdIik7CisgICAgICAgICAg
ICAgICAgY2hlY2tUcmFjayh2aWRlb1RyYWNrKTsKKworICAgICAgICAgICAgICAgIGRlYnVnKCIi
KTsKKyAgICAgICAgICAgICAgICBldmFsQW5kTG9nKCJhdWRpb1RyYWNrID0gbWVkaWFTdHJlYW0u
Z2V0QXVkaW9UcmFja3MoKVswXSIpOworICAgICAgICAgICAgICAgIGNoZWNrVHJhY2soYXVkaW9U
cmFjayk7CisKKyAgICAgICAgICAgICAgICB2aWRlb1RyYWNrLm9ubXV0ZSA9IG9uVHJhY2tNdXRl
OworICAgICAgICAgICAgICAgIHZpZGVvVHJhY2sub251bm11dGUgPSBvblRyYWNrVW5tdXRlOwor
ICAgICAgICAgICAgICAgIHZpZGVvVHJhY2sub25lbmRlZCA9IG9uVHJhY2tFbmRlZDsKKyAgICAg
ICAgICAgICAgICB2aWRlb1RyYWNrLm9uc3RhcnRlZCA9IG9uVHJhY2tTdGFydGVkOworICAgICAg
ICAgICAgICAgIHZpZGVvVHJhY2sub25vdmVyY29uc3RyYWluZWQgPSBvblRyYWNrT3ZlckNvbnN0
cmFpbmVkOworICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgZGVidWcoIiIpOworICAgICAg
ICAgICAgICAgIGV2YWxBbmRMb2coInZpZGVvVHJhY2syID0gdmlkZW9UcmFjay5jbG9uZSgpIik7
CisgICAgICAgICAgICAgICAgY2hlY2tUcmFjayh2aWRlb1RyYWNrMik7CisgICAgICAgICAgICAg
ICAgc2hvdWxkTm90QmUoJ3ZpZGVvVHJhY2suaWQnLCAndmlkZW9UcmFjazIuaWQnKTsKKyAgICAg
ICAgICAgICAgICBzaG91bGRCZSgndmlkZW9UcmFjay5raW5kJywgJ3ZpZGVvVHJhY2syLmtpbmQn
KTsKKyAgICAgICAgICAgICAgICBzaG91bGRCZSgndmlkZW9UcmFjay5sYWJlbCcsICd2aWRlb1Ry
YWNrMi5sYWJlbCcpOworICAgICAgICAgICAgICAgIHNob3VsZEJlKCd2aWRlb1RyYWNrLm11dGVk
JywgJ3ZpZGVvVHJhY2syLm11dGVkJyk7CisgICAgICAgICAgICAgICAgc2hvdWxkQmUoJ3ZpZGVv
VHJhY2suZW5hYmxlZCcsICd2aWRlb1RyYWNrMi5lbmFibGVkJyk7CisgICAgICAgICAgICAgICAg
c2hvdWxkQmUoJ3ZpZGVvVHJhY2sucmVhZHlTdGF0ZScsICd2aWRlb1RyYWNrMi5yZWFkeVN0YXRl
Jyk7CisKKyAgICAgICAgICAgICAgICBkZWJ1ZygiIik7CisgICAgICAgICAgICAgICAgZXZhbEFu
ZExvZygidmlkZW9UcmFjay5zdG9wKCkiKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAg
ZnVuY3Rpb24gc3RhcnQoKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGRlc2NyaXB0
aW9uKCJUZXN0cyBNZWRpYVN0cmVhbVRyYWNrIGNhbGxiYWNrcy4iKTsKKyAgICAgICAgICAgICAg
ICAKKyAgICAgICAgICAgICAgICAvLyBOb3RlIHRoYXQgdGhlIGJlbG93IGJlaGF2aW91ciBkb2Vz
bid0IHJlZmxlY3QgaG93IGl0IHdvcmtzIG91dHNpZGUgb2YgTGF5b3V0VGVzdHMuCisgICAgICAg
ICAgICAgICAgLy8gVGhlIHVuZGVybHlpbmcgbW9jayBpcyBtb2RpZmllZCB0byB0cmlnZ2VyIHRo
ZSBldmVudHMgd2hlbiBjZXJ0YWluIGZ1bmN0aW9ucyBhcmUgY2FsbGVkLgorICAgICAgICAgICAg
ICAgIC8vIFRoaXMgbW9kaWZpZWQgYmVoYXZpb3VyIGFsbG93cyB1cyB0byB0ZXN0IHRoZSBNZWRp
YVN0cmVhbVRyYWNrIGNsYXNzIHByb3Blcmx5LgorICAgICAgICAgICAgICAgIGdldFVzZXJNZWRp
YSh7YXVkaW86dHJ1ZSwgdmlkZW86dHJ1ZX0sIGdvdFN0cmVhbSk7CisgICAgICAgICAgICB9CisK
KyAgICAgICAgICAgIHdpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKyAgICAgICAgICAgIHdp
bmRvdy5zdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOworICAgICAgICA8L3NjcmlwdD4KKyAgICA8
L2hlYWQ+CisgICAgPGJvZHkgb25sb2FkPSJzdGFydCgpIj4KKyAgICAgICAgPHAgaWQ9ImRlc2Ny
aXB0aW9uIj48L3A+CisgICAgICAgIDxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorICAgICAgICA8
c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cisg
ICAgPC9ib2R5PgogPC9odG1sPgo=
</data>

          </attachment>
      

    </bug>

</bugzilla>