<?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>126698</bug_id>
          
          <creation_ts>2014-01-09 07:50:14 -0800</creation_ts>
          <short_desc>[iOS] Upstream WebCore and Tools miscellaneous changes</short_desc>
          <delta_ts>2014-01-13 10:42:14 -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>WebKit 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></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>126916</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Daniel Bates">dbates</reporter>
          <assigned_to name="Daniel Bates">dbates</assigned_to>
          <cc>aestes</cc>
    
    <cc>buildbot</cc>
    
    <cc>commit-queue</cc>
    
    <cc>ddkilzer</cc>
    
    <cc>eflews.bot</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>joepeck</cc>
    
    <cc>mrowe</cc>
    
    <cc>rniwa</cc>
    
    <cc>sam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>965900</commentid>
    <comment_count>0</comment_count>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2014-01-09 07:50:14 -0800</bug_when>
    <thetext>Upstream iOS miscellaneous changes to WebCore and Tools.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>965909</commentid>
    <comment_count>1</comment_count>
      <attachid>220739</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2014-01-09 08:15:15 -0800</bug_when>
    <thetext>Created attachment 220739
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>965911</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-01-09 08:17:06 -0800</bug_when>
    <thetext>Attachment 220739 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebCore/ChangeLog&apos;, u&apos;Source/WebCore/Configurations/Base.xcconfig&apos;, u&apos;Source/WebCore/Configurations/WebCore.xcconfig&apos;, u&apos;Source/WebCore/Configurations/WebCoreTestSupport.xcconfig&apos;, u&apos;Source/WebCore/Configurations/iOS.xcconfig&apos;, u&apos;Source/WebCore/DerivedSources.make&apos;, u&apos;Source/WebCore/English.lproj/Localizable.strings&apos;, u&apos;Source/WebCore/Modules/airplay/WebKitPlaybackTargetAvailabilityEvent.cpp&apos;, u&apos;Source/WebCore/Modules/airplay/WebKitPlaybackTargetAvailabilityEvent.h&apos;, u&apos;Source/WebCore/Modules/airplay/WebKitPlaybackTargetAvailabilityEvent.idl&apos;, u&apos;Source/WebCore/Modules/geolocation/Geolocation.cpp&apos;, u&apos;Source/WebCore/Modules/geolocation/Geolocation.h&apos;, u&apos;Source/WebCore/Modules/geolocation/NavigatorGeolocation.cpp&apos;, u&apos;Source/WebCore/Modules/geolocation/NavigatorGeolocation.h&apos;, u&apos;Source/WebCore/Modules/speech/SpeechSynthesis.cpp&apos;, u&apos;Source/WebCore/Modules/speech/SpeechSynthesis.h&apos;, u&apos;Source/WebCore/Modules/webaudio/AudioContext.cpp&apos;, u&apos;Source/WebCore/Modules/webaudio/AudioContext.h&apos;, u&apos;Source/WebCore/Modules/webaudio/AudioScheduledSourceNode.cpp&apos;, u&apos;Source/WebCore/Modules/webdatabase/Database.cpp&apos;, u&apos;Source/WebCore/Modules/webdatabase/DatabaseBackendBase.cpp&apos;, u&apos;Source/WebCore/Modules/webdatabase/DatabaseContext.cpp&apos;, u&apos;Source/WebCore/Modules/webdatabase/DatabaseContext.h&apos;, u&apos;Source/WebCore/Modules/webdatabase/DatabaseManagerClient.h&apos;, u&apos;Source/WebCore/Modules/webdatabase/DatabaseTask.cpp&apos;, u&apos;Source/WebCore/Modules/webdatabase/DatabaseTask.h&apos;, u&apos;Source/WebCore/Modules/webdatabase/DatabaseThread.cpp&apos;, u&apos;Source/WebCore/Modules/webdatabase/DatabaseThread.h&apos;, u&apos;Source/WebCore/Modules/webdatabase/DatabaseTracker.cpp&apos;, u&apos;Source/WebCore/Modules/webdatabase/DatabaseTracker.h&apos;, u&apos;Source/WebCore/Modules/webdatabase/SQLTransactionBackend.cpp&apos;, u&apos;Source/WebCore/Modules/webdatabase/SQLTransactionBackend.h&apos;, u&apos;Source/WebCore/Resources/DictationPhraseWithAlternativesDot.png&apos;, u&apos;Source/WebCore/Resources/DictationPhraseWithAlternativesDot@2x.png&apos;, u&apos;Source/WebCore/Resources/SpellingDot.png&apos;, u&apos;Source/WebCore/Resources/SpellingDot@2x.png&apos;, u&apos;Source/WebCore/Resources/decrementArrow.tiff&apos;, u&apos;Source/WebCore/Resources/hScrollControl_left.png&apos;, u&apos;Source/WebCore/Resources/hScrollControl_middle.png&apos;, u&apos;Source/WebCore/Resources/hScrollControl_right.png&apos;, u&apos;Source/WebCore/Resources/incrementArrow.tiff&apos;, u&apos;Source/WebCore/Resources/markedLeft.png&apos;, u&apos;Source/WebCore/Resources/markedMiddle.png&apos;, u&apos;Source/WebCore/Resources/markedRight.png&apos;, u&apos;Source/WebCore/Resources/vScrollControl_bottom.png&apos;, u&apos;Source/WebCore/Resources/vScrollControl_middle.png&apos;, u&apos;Source/WebCore/Resources/vScrollControl_top.png&apos;, u&apos;Source/WebCore/WebCore.xcodeproj/project.pbxproj&apos;, u&apos;Source/WebCore/bindings/js/GCController.cpp&apos;, u&apos;Source/WebCore/bindings/js/GCController.h&apos;, u&apos;Source/WebCore/bindings/js/JSCallbackData.h&apos;, u&apos;Source/WebCore/bindings/js/JSDOMWindowBase.cpp&apos;, u&apos;Source/WebCore/bindings/js/JSDOMWindowCustom.cpp&apos;, u&apos;Source/WebCore/bindings/js/JSDeviceOrientationEventCustom.cpp&apos;, u&apos;Source/WebCore/bindings/js/JSMainThreadExecState.h&apos;, u&apos;Source/WebCore/bindings/js/JSTouchCustom.cpp&apos;, u&apos;Source/WebCore/bindings/js/JSTouchListCustom.cpp&apos;, u&apos;Source/WebCore/bindings/js/PageScriptDebugServer.cpp&apos;, u&apos;Source/WebCore/bindings/js/ScriptController.cpp&apos;, u&apos;Source/WebCore/bindings/js/ScriptDebugServer.cpp&apos;, u&apos;Source/WebCore/bindings/js/ios/TouchConstructors.cpp&apos;, u&apos;Source/WebCore/bindings/objc/DOM.mm&apos;, u&apos;Source/WebCore/bindings/objc/DOMEvents.h&apos;, u&apos;Source/WebCore/bindings/objc/DOMEvents.mm&apos;, u&apos;Source/WebCore/bindings/objc/DOMExtensions.h&apos;, u&apos;Source/WebCore/bindings/objc/DOMHTML.mm&apos;, u&apos;Source/WebCore/bindings/objc/DOMInternal.h&apos;, u&apos;Source/WebCore/bindings/objc/DOMInternal.mm&apos;, u&apos;Source/WebCore/bindings/objc/DOMPrivate.h&apos;, u&apos;Source/WebCore/bindings/objc/DOMUIKitExtensions.h&apos;, u&apos;Source/WebCore/bindings/objc/DOMUIKitExtensions.mm&apos;, u&apos;Source/WebCore/bindings/objc/PublicDOMInterfaces.h&apos;, u&apos;Source/WebCore/bindings/scripts/CodeGeneratorJS.pm&apos;, u&apos;Source/WebCore/bindings/scripts/CodeGeneratorObjC.pm&apos;, u&apos;Source/WebCore/bindings/scripts/IDLAttributes.txt&apos;, u&apos;Source/WebCore/bindings/scripts/preprocessor.pm&apos;, u&apos;Source/WebCore/bridge/objc/objc_class.mm&apos;, u&apos;Source/WebCore/bridge/objc/objc_instance.mm&apos;, u&apos;Source/WebCore/config.h&apos;, u&apos;Source/WebCore/dom/Document.cpp&apos;, u&apos;Source/WebCore/dom/Document.h&apos;, u&apos;Source/WebCore/dom/Document.idl&apos;, u&apos;Source/WebCore/dom/ios/TouchEvents.cpp&apos;, u&apos;Source/WebCore/editing/ApplyStyleCommand.cpp&apos;, u&apos;Source/WebCore/editing/CompositeEditCommand.cpp&apos;, u&apos;Source/WebCore/editing/CompositeEditCommand.h&apos;, u&apos;Source/WebCore/editing/DeleteButton.h&apos;, u&apos;Source/WebCore/editing/DeleteButtonController.cpp&apos;, u&apos;Source/WebCore/editing/DeleteSelectionCommand.cpp&apos;, u&apos;Source/WebCore/editing/DeleteSelectionCommand.h&apos;, u&apos;Source/WebCore/editing/EditAction.h&apos;, u&apos;Source/WebCore/editing/EditCommand.h&apos;, u&apos;Source/WebCore/editing/EditingStyle.cpp&apos;, u&apos;Source/WebCore/editing/Editor.cpp&apos;, u&apos;Source/WebCore/editing/Editor.h&apos;, u&apos;Source/WebCore/editing/EditorCommand.cpp&apos;, u&apos;Source/WebCore/editing/FrameSelection.cpp&apos;, u&apos;Source/WebCore/editing/FrameSelection.h&apos;, u&apos;Source/WebCore/editing/InsertIntoTextNodeCommand.cpp&apos;, u&apos;Source/WebCore/editing/InsertIntoTextNodeCommand.h&apos;, u&apos;Source/WebCore/editing/InsertTextCommand.h&apos;, u&apos;Source/WebCore/editing/ReplaceSelectionCommand.cpp&apos;, u&apos;Source/WebCore/editing/TextAffinity.h&apos;, u&apos;Source/WebCore/editing/TextCheckingHelper.cpp&apos;, u&apos;Source/WebCore/editing/TextGranularity.h&apos;, u&apos;Source/WebCore/editing/TextIterator.cpp&apos;, u&apos;Source/WebCore/editing/TypingCommand.cpp&apos;, u&apos;Source/WebCore/editing/TypingCommand.h&apos;, u&apos;Source/WebCore/editing/VisiblePosition.h&apos;, u&apos;Source/WebCore/editing/VisibleSelection.cpp&apos;, u&apos;Source/WebCore/editing/VisibleUnits.cpp&apos;, u&apos;Source/WebCore/editing/VisibleUnits.h&apos;, u&apos;Source/WebCore/editing/ios/DictationCommandIOS.cpp&apos;, u&apos;Source/WebCore/editing/ios/DictationCommandIOS.h&apos;, u&apos;Source/WebCore/editing/mac/FrameSelectionMac.mm&apos;, u&apos;Source/WebCore/fileapi/AsyncFileStream.cpp&apos;, u&apos;Source/WebCore/generate-export-file&apos;, u&apos;Source/WebCore/inspector/InspectorCounters.h&apos;, u&apos;Source/WebCore/inspector/InspectorFrontendHost.h&apos;, u&apos;Source/WebCore/inspector/InspectorPageAgent.cpp&apos;, u&apos;Source/WebCore/make-export-file-generator&apos;, u&apos;Source/WebCore/plugins/PluginPackage.h&apos;, u&apos;Source/WebCore/plugins/PluginViewBase.h&apos;, u&apos;Source/WebCore/style/StyleResolveForDocument.cpp&apos;, u&apos;Source/WebCore/style/StyleResolveTree.cpp&apos;, u&apos;Source/WebCore/testing/Internals.cpp&apos;, u&apos;Source/WebCore/workers/WorkerThread.cpp&apos;, u&apos;Source/WebKit/ChangeLog&apos;, u&apos;Source/WebKit/WebKit.xcodeproj/project.pbxproj&apos;, u&apos;Source/WebKit/mac/ChangeLog&apos;, u&apos;Source/WebKit/mac/MigrateHeaders.make&apos;, u&apos;Source/WebKit/mac/scrub-ifdefs.pl&apos;, u&apos;Tools/ChangeLog&apos;, u&apos;Tools/Scripts/check-for-inappropriate-objc-class-names&apos;, u&apos;Tools/Scripts/check-for-webkit-framework-include-consistency&apos;, &apos;--commit-queue&apos;]&quot; exit_code: 1
Traceback (most recent call last):
  File &quot;Tools/Scripts/check-webkit-style&quot;, line 48, in &lt;module&gt;
    sys.exit(CheckWebKitStyle().main())
  File &quot;/Volumes/Data/StyleQueue/WebKit/Tools/Scripts/webkitpy/style/main.py&quot;, line 154, in main
    patch_checker.check(patch)
  File &quot;/Volumes/Data/StyleQueue/WebKit/Tools/Scripts/webkitpy/style/patchreader.py&quot;, line 71, in check
    self._text_file_reader.process_file(file_path=path, line_numbers=None)
  File &quot;/Volumes/Data/StyleQueue/WebKit/Tools/Scripts/webkitpy/style/filereader.py&quot;, line 118, in process_file
    lines = self._read_lines(file_path)
  File &quot;/Volumes/Data/StyleQueue/WebKit/Tools/Scripts/webkitpy/style/filereader.py&quot;, line 86, in _read_lines
    contents = file.read()
  File &quot;/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/codecs.py&quot;, line 671, in read
    return self.reader.read(size)
  File &quot;/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/codecs.py&quot;, line 477, in read
    newchars, decodedbytes = self.decode(data, self.errors)
UnicodeDecodeError: &apos;utf8&apos; codec can&apos;t decode byte 0x89 in position 0: invalid start byte


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>965915</commentid>
    <comment_count>3</comment_count>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2014-01-09 08:31:21 -0800</bug_when>
    <thetext>(In reply to comment #2)
&gt; Attachment 220739 [details] did not pass style-queue:
&gt; 
&gt; ...
&gt; Traceback (most recent call last):
&gt;   File &quot;Tools/Scripts/check-webkit-style&quot;, line 48, in &lt;module&gt;
&gt;     sys.exit(CheckWebKitStyle().main())
&gt;  ...
&gt;   File &quot;/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/codecs.py&quot;, line 477, in read
&gt;     newchars, decodedbytes = self.decode(data, self.errors)
&gt; UnicodeDecodeError: &apos;utf8&apos; codec can&apos;t decode byte 0x89 in position 0: invalid start byte
&gt; 
&gt; 
&gt; If any of these errors are false positives, please file a bug against check-webkit-style.

Filed bug #126702.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>965925</commentid>
    <comment_count>4</comment_count>
      <attachid>220739</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2014-01-09 08:51:31 -0800</bug_when>
    <thetext>Comment on attachment 220739
Patch

Attachment 220739 did not pass mac-wk2-ews (mac-wk2):
Output: http://webkit-queues.appspot.com/results/4878008569561088</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>965930</commentid>
    <comment_count>5</comment_count>
      <attachid>220739</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2014-01-09 09:00:50 -0800</bug_when>
    <thetext>Comment on attachment 220739
Patch

Attachment 220739 did not pass mac-ews (mac):
Output: http://webkit-queues.appspot.com/results/4646782831165440</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>965935</commentid>
    <comment_count>6</comment_count>
      <attachid>220739</attachid>
    <who name="EFL EWS Bot">eflews.bot</who>
    <bug_when>2014-01-09 09:12:33 -0800</bug_when>
    <thetext>Comment on attachment 220739
Patch

Attachment 220739 did not pass efl-ews (efl):
Output: http://webkit-queues.appspot.com/results/5901838175961088</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>965953</commentid>
    <comment_count>7</comment_count>
      <attachid>220746</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2014-01-09 09:47:45 -0800</bug_when>
    <thetext>Created attachment 220746
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>965959</commentid>
    <comment_count>8</comment_count>
      <attachid>220748</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2014-01-09 10:12:03 -0800</bug_when>
    <thetext>Created attachment 220748
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>965960</commentid>
    <comment_count>9</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-01-09 10:14:41 -0800</bug_when>
    <thetext>Attachment 220748 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebCore/ChangeLog&apos;, u&apos;Source/WebCore/Configurations/Base.xcconfig&apos;, u&apos;Source/WebCore/Configurations/WebCore.xcconfig&apos;, u&apos;Source/WebCore/Configurations/WebCoreTestSupport.xcconfig&apos;, u&apos;Source/WebCore/Configurations/iOS.xcconfig&apos;, u&apos;Source/WebCore/DerivedSources.make&apos;, u&apos;Source/WebCore/English.lproj/Localizable.strings&apos;, u&apos;Source/WebCore/Modules/airplay/WebKitPlaybackTargetAvailabilityEvent.cpp&apos;, u&apos;Source/WebCore/Modules/airplay/WebKitPlaybackTargetAvailabilityEvent.h&apos;, u&apos;Source/WebCore/Modules/airplay/WebKitPlaybackTargetAvailabilityEvent.idl&apos;, u&apos;Source/WebCore/Modules/geolocation/Geolocation.cpp&apos;, u&apos;Source/WebCore/Modules/geolocation/Geolocation.h&apos;, u&apos;Source/WebCore/Modules/geolocation/NavigatorGeolocation.cpp&apos;, u&apos;Source/WebCore/Modules/geolocation/NavigatorGeolocation.h&apos;, u&apos;Source/WebCore/Modules/speech/SpeechSynthesis.cpp&apos;, u&apos;Source/WebCore/Modules/speech/SpeechSynthesis.h&apos;, u&apos;Source/WebCore/Modules/webaudio/AudioContext.cpp&apos;, u&apos;Source/WebCore/Modules/webaudio/AudioContext.h&apos;, u&apos;Source/WebCore/Modules/webaudio/AudioScheduledSourceNode.cpp&apos;, u&apos;Source/WebCore/Modules/webdatabase/Database.cpp&apos;, u&apos;Source/WebCore/Modules/webdatabase/DatabaseBackendBase.cpp&apos;, u&apos;Source/WebCore/Modules/webdatabase/DatabaseContext.cpp&apos;, u&apos;Source/WebCore/Modules/webdatabase/DatabaseContext.h&apos;, u&apos;Source/WebCore/Modules/webdatabase/DatabaseManagerClient.h&apos;, u&apos;Source/WebCore/Modules/webdatabase/DatabaseTask.cpp&apos;, u&apos;Source/WebCore/Modules/webdatabase/DatabaseTask.h&apos;, u&apos;Source/WebCore/Modules/webdatabase/DatabaseThread.cpp&apos;, u&apos;Source/WebCore/Modules/webdatabase/DatabaseThread.h&apos;, u&apos;Source/WebCore/Modules/webdatabase/DatabaseTracker.cpp&apos;, u&apos;Source/WebCore/Modules/webdatabase/DatabaseTracker.h&apos;, u&apos;Source/WebCore/Modules/webdatabase/SQLTransactionBackend.cpp&apos;, u&apos;Source/WebCore/Modules/webdatabase/SQLTransactionBackend.h&apos;, u&apos;Source/WebCore/Resources/DictationPhraseWithAlternativesDot.png&apos;, u&apos;Source/WebCore/Resources/DictationPhraseWithAlternativesDot@2x.png&apos;, u&apos;Source/WebCore/Resources/SpellingDot.png&apos;, u&apos;Source/WebCore/Resources/SpellingDot@2x.png&apos;, u&apos;Source/WebCore/Resources/decrementArrow.tiff&apos;, u&apos;Source/WebCore/Resources/hScrollControl_left.png&apos;, u&apos;Source/WebCore/Resources/hScrollControl_middle.png&apos;, u&apos;Source/WebCore/Resources/hScrollControl_right.png&apos;, u&apos;Source/WebCore/Resources/incrementArrow.tiff&apos;, u&apos;Source/WebCore/Resources/markedLeft.png&apos;, u&apos;Source/WebCore/Resources/markedMiddle.png&apos;, u&apos;Source/WebCore/Resources/markedRight.png&apos;, u&apos;Source/WebCore/Resources/vScrollControl_bottom.png&apos;, u&apos;Source/WebCore/Resources/vScrollControl_middle.png&apos;, u&apos;Source/WebCore/Resources/vScrollControl_top.png&apos;, u&apos;Source/WebCore/WebCore.xcodeproj/project.pbxproj&apos;, u&apos;Source/WebCore/bindings/js/GCController.cpp&apos;, u&apos;Source/WebCore/bindings/js/GCController.h&apos;, u&apos;Source/WebCore/bindings/js/JSCallbackData.h&apos;, u&apos;Source/WebCore/bindings/js/JSDOMWindowBase.cpp&apos;, u&apos;Source/WebCore/bindings/js/JSDOMWindowCustom.cpp&apos;, u&apos;Source/WebCore/bindings/js/JSDeviceOrientationEventCustom.cpp&apos;, u&apos;Source/WebCore/bindings/js/JSMainThreadExecState.h&apos;, u&apos;Source/WebCore/bindings/js/JSTouchCustom.cpp&apos;, u&apos;Source/WebCore/bindings/js/JSTouchListCustom.cpp&apos;, u&apos;Source/WebCore/bindings/js/PageScriptDebugServer.cpp&apos;, u&apos;Source/WebCore/bindings/js/ScriptController.cpp&apos;, u&apos;Source/WebCore/bindings/js/ScriptDebugServer.cpp&apos;, u&apos;Source/WebCore/bindings/js/ios/TouchConstructors.cpp&apos;, u&apos;Source/WebCore/bindings/objc/DOM.mm&apos;, u&apos;Source/WebCore/bindings/objc/DOMEvents.h&apos;, u&apos;Source/WebCore/bindings/objc/DOMEvents.mm&apos;, u&apos;Source/WebCore/bindings/objc/DOMExtensions.h&apos;, u&apos;Source/WebCore/bindings/objc/DOMHTML.mm&apos;, u&apos;Source/WebCore/bindings/objc/DOMInternal.h&apos;, u&apos;Source/WebCore/bindings/objc/DOMInternal.mm&apos;, u&apos;Source/WebCore/bindings/objc/DOMPrivate.h&apos;, u&apos;Source/WebCore/bindings/objc/DOMUIKitExtensions.h&apos;, u&apos;Source/WebCore/bindings/objc/DOMUIKitExtensions.mm&apos;, u&apos;Source/WebCore/bindings/objc/PublicDOMInterfaces.h&apos;, u&apos;Source/WebCore/bindings/scripts/CodeGeneratorJS.pm&apos;, u&apos;Source/WebCore/bindings/scripts/CodeGeneratorObjC.pm&apos;, u&apos;Source/WebCore/bindings/scripts/IDLAttributes.txt&apos;, u&apos;Source/WebCore/bindings/scripts/preprocessor.pm&apos;, u&apos;Source/WebCore/bridge/objc/objc_class.mm&apos;, u&apos;Source/WebCore/bridge/objc/objc_instance.mm&apos;, u&apos;Source/WebCore/config.h&apos;, u&apos;Source/WebCore/dom/Document.cpp&apos;, u&apos;Source/WebCore/dom/Document.h&apos;, u&apos;Source/WebCore/dom/Document.idl&apos;, u&apos;Source/WebCore/dom/ios/TouchEvents.cpp&apos;, u&apos;Source/WebCore/editing/ApplyStyleCommand.cpp&apos;, u&apos;Source/WebCore/editing/CompositeEditCommand.cpp&apos;, u&apos;Source/WebCore/editing/CompositeEditCommand.h&apos;, u&apos;Source/WebCore/editing/DeleteButton.h&apos;, u&apos;Source/WebCore/editing/DeleteButtonController.cpp&apos;, u&apos;Source/WebCore/editing/DeleteSelectionCommand.cpp&apos;, u&apos;Source/WebCore/editing/DeleteSelectionCommand.h&apos;, u&apos;Source/WebCore/editing/EditAction.h&apos;, u&apos;Source/WebCore/editing/EditCommand.h&apos;, u&apos;Source/WebCore/editing/EditingStyle.cpp&apos;, u&apos;Source/WebCore/editing/Editor.cpp&apos;, u&apos;Source/WebCore/editing/Editor.h&apos;, u&apos;Source/WebCore/editing/EditorCommand.cpp&apos;, u&apos;Source/WebCore/editing/FrameSelection.cpp&apos;, u&apos;Source/WebCore/editing/FrameSelection.h&apos;, u&apos;Source/WebCore/editing/InsertIntoTextNodeCommand.cpp&apos;, u&apos;Source/WebCore/editing/InsertIntoTextNodeCommand.h&apos;, u&apos;Source/WebCore/editing/InsertTextCommand.h&apos;, u&apos;Source/WebCore/editing/ReplaceSelectionCommand.cpp&apos;, u&apos;Source/WebCore/editing/TextAffinity.h&apos;, u&apos;Source/WebCore/editing/TextCheckingHelper.cpp&apos;, u&apos;Source/WebCore/editing/TextGranularity.h&apos;, u&apos;Source/WebCore/editing/TextIterator.cpp&apos;, u&apos;Source/WebCore/editing/TypingCommand.cpp&apos;, u&apos;Source/WebCore/editing/TypingCommand.h&apos;, u&apos;Source/WebCore/editing/VisiblePosition.h&apos;, u&apos;Source/WebCore/editing/VisibleSelection.cpp&apos;, u&apos;Source/WebCore/editing/VisibleUnits.cpp&apos;, u&apos;Source/WebCore/editing/VisibleUnits.h&apos;, u&apos;Source/WebCore/editing/ios/DictationCommandIOS.cpp&apos;, u&apos;Source/WebCore/editing/ios/DictationCommandIOS.h&apos;, u&apos;Source/WebCore/editing/mac/FrameSelectionMac.mm&apos;, u&apos;Source/WebCore/fileapi/AsyncFileStream.cpp&apos;, u&apos;Source/WebCore/generate-export-file&apos;, u&apos;Source/WebCore/inspector/InspectorCounters.h&apos;, u&apos;Source/WebCore/inspector/InspectorFrontendHost.h&apos;, u&apos;Source/WebCore/make-export-file-generator&apos;, u&apos;Source/WebCore/plugins/PluginPackage.h&apos;, u&apos;Source/WebCore/plugins/PluginViewBase.h&apos;, u&apos;Source/WebCore/style/StyleResolveForDocument.cpp&apos;, u&apos;Source/WebCore/style/StyleResolveTree.cpp&apos;, u&apos;Source/WebCore/testing/Internals.cpp&apos;, u&apos;Source/WebCore/workers/WorkerThread.cpp&apos;, u&apos;Source/WebKit/ChangeLog&apos;, u&apos;Source/WebKit/WebKit.xcodeproj/project.pbxproj&apos;, u&apos;Source/WebKit/mac/ChangeLog&apos;, u&apos;Source/WebKit/mac/MigrateHeaders.make&apos;, u&apos;Source/WebKit/mac/scrub-ifdefs.pl&apos;, u&apos;Tools/ChangeLog&apos;, u&apos;Tools/Scripts/check-for-inappropriate-objc-class-names&apos;, u&apos;Tools/Scripts/check-for-webkit-framework-include-consistency&apos;, &apos;--commit-queue&apos;]&quot; exit_code: 1
Traceback (most recent call last):
  File &quot;Tools/Scripts/check-webkit-style&quot;, line 48, in &lt;module&gt;
    sys.exit(CheckWebKitStyle().main())
  File &quot;/Volumes/Data/StyleQueue/WebKit/Tools/Scripts/webkitpy/style/main.py&quot;, line 154, in main
    patch_checker.check(patch)
  File &quot;/Volumes/Data/StyleQueue/WebKit/Tools/Scripts/webkitpy/style/patchreader.py&quot;, line 71, in check
    self._text_file_reader.process_file(file_path=path, line_numbers=None)
  File &quot;/Volumes/Data/StyleQueue/WebKit/Tools/Scripts/webkitpy/style/filereader.py&quot;, line 118, in process_file
    lines = self._read_lines(file_path)
  File &quot;/Volumes/Data/StyleQueue/WebKit/Tools/Scripts/webkitpy/style/filereader.py&quot;, line 86, in _read_lines
    contents = file.read()
  File &quot;/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/codecs.py&quot;, line 671, in read
    return self.reader.read(size)
  File &quot;/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/codecs.py&quot;, line 477, in read
    newchars, decodedbytes = self.decode(data, self.errors)
UnicodeDecodeError: &apos;utf8&apos; codec can&apos;t decode byte 0x89 in position 0: invalid start byte


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>966109</commentid>
    <comment_count>10</comment_count>
      <attachid>220748</attachid>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2014-01-09 16:01:28 -0800</bug_when>
    <thetext>Comment on attachment 220748
Patch

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

rs=me.  Please wait to land until build fixes from the previous merge commit are settled.

&gt; Source/WebCore/Configurations/WebCore.xcconfig:37
&gt; +EXPORTED_SYMBOLS_FILE_ppc64 = $(BUILT_PRODUCTS_DIR)/DerivedSources/WebCore/WebCore.LP64.exp;

We shouldn&apos;t bring back ppc64.

Nit: And we could remove ppc.

&gt; Source/WebCore/bindings/objc/PublicDOMInterfaces.h:29
&gt; +#include &lt;wtf/Platform.h&gt;

I know we include this, but if this is a public header, we should not include it at all.  Needs to be fixed before the next release.

&gt; Source/WebKit/WebKit.xcodeproj/project.pbxproj:833
&gt; +		CE2616AB187E6675007955F3 /* scrub-ifdefs.pl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.script.perl; name = &quot;scrub-ifdefs.pl&quot;; path = &quot;mac/scrub-ifdefs.pl&quot;; sourceTree = &quot;&lt;group&gt;&quot;; };

The scrub-ifdefs.pl script is not needed in open source.  Andy Estes implemented them differently using the &quot;Postprocess Headers&quot; phase.

All of the changes to Source/WebKit/WebKit.xcodeproj/project.pbxproj can be dropped.

&gt; Source/WebKit/mac/scrub-ifdefs.pl:1
&gt; +#!/usr/bin/perl -w

This whole script does not need to be upstreamed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>966236</commentid>
    <comment_count>11</comment_count>
      <attachid>220748</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2014-01-09 22:59:32 -0800</bug_when>
    <thetext>Comment on attachment 220748
Patch

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

&gt;&gt; Source/WebCore/Configurations/WebCore.xcconfig:37
&gt;&gt; +EXPORTED_SYMBOLS_FILE_ppc64 = $(BUILT_PRODUCTS_DIR)/DerivedSources/WebCore/WebCore.LP64.exp;
&gt; 
&gt; We shouldn&apos;t bring back ppc64.
&gt; 
&gt; Nit: And we could remove ppc.

Will remove ppc64 and ppc.

&gt;&gt; Source/WebKit/WebKit.xcodeproj/project.pbxproj:833
&gt;&gt; +		CE2616AB187E6675007955F3 /* scrub-ifdefs.pl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.script.perl; name = &quot;scrub-ifdefs.pl&quot;; path = &quot;mac/scrub-ifdefs.pl&quot;; sourceTree = &quot;&lt;group&gt;&quot;; };
&gt; 
&gt; The scrub-ifdefs.pl script is not needed in open source.  Andy Estes implemented them differently using the &quot;Postprocess Headers&quot; phase.
&gt; 
&gt; All of the changes to Source/WebKit/WebKit.xcodeproj/project.pbxproj can be dropped.

Neither the &quot;Postprocess Headers&quot; script in OpenSource nor the &quot;Postprocess Headers&quot; script we use internally seem to work. I&apos;ll take a look at the &quot;Postprocess header&quot; script tomorrow and work with Andy to ensure we post process the headers.

For completeness, when I remove scrub-ifdefs.pl and build WebKit I get the following error:

...
Ld WebKit
PhaseScriptExecution Check\
PhaseScriptExecution Check\
PhaseScriptExecution Check\
error: WebKit.framework/Versions/A/Headers/DOMEvents.h included &lt;WebKit/DOMTouchEvent.h&gt; but I could not find a header of that name!
error: WebKit.framework/Versions/A/Headers/DOMEvents.h included &lt;WebKit/DOMGestureEvent.h&gt; but I could not find a header of that name!
error: WebKit.framework/Versions/A/PrivateHeaders/DOMPrivate.h included &lt;WebKit/WebAutocapitalize.h&gt; but I could not find a header of that name!
** BUILD FAILED **

The following build commands failed:
	PhaseScriptExecution Check\ For\ Framework\ Include\ Consistency /WebKitDev/OpenSource/WebKitBuild/WebKit.build/Debug/WebKit.build/Script-5D88EE6C11407DE800BC3ABC.sh
(1 failure)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>966237</commentid>
    <comment_count>12</comment_count>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2014-01-09 23:01:11 -0800</bug_when>
    <thetext>(In reply to comment #11)
&gt; (From update of attachment 220748 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=220748&amp;action=review
&gt; [...]
&gt; 
&gt; For completeness, when I remove scrub-ifdefs.pl and build WebKit I get the following error:

*build WebKit for OS X (e.g. Tools/Scripts/build-webkit)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>966375</commentid>
    <comment_count>13</comment_count>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2014-01-10 08:33:13 -0800</bug_when>
    <thetext>(In reply to comment #11)
&gt; (From update of attachment 220748 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=220748&amp;action=review
&gt; [...]
&gt; &gt;&gt; Source/WebKit/WebKit.xcodeproj/project.pbxproj:833
&gt; &gt;&gt; +		CE2616AB187E6675007955F3 /* scrub-ifdefs.pl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.script.perl; name = &quot;scrub-ifdefs.pl&quot;; path = &quot;mac/scrub-ifdefs.pl&quot;; sourceTree = &quot;&lt;group&gt;&quot;; };
&gt; &gt; 
&gt; &gt; The scrub-ifdefs.pl script is not needed in open source.  Andy Estes implemented them differently using the &quot;Postprocess Headers&quot; phase.
&gt; &gt; 
&gt; &gt; All of the changes to Source/WebKit/WebKit.xcodeproj/project.pbxproj can be dropped.
&gt; 
&gt; Neither the &quot;Postprocess Headers&quot; script in OpenSource nor the &quot;Postprocess Headers&quot; script we use internally seem to work. I&apos;ll take a look at the &quot;Postprocess header&quot; script tomorrow and work with Andy to ensure we post process the headers.

I resolved the issue by teaching the script about the defines ENABLE_IOS_TOUCH_EVENTS and ENABLE_IOS_GESTURE_EVENTS and substituting TARGET_OS_EMBEDDED for PLATFORM(IOS) in the header files in Source/WebCore/bindings/objc.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>966388</commentid>
    <comment_count>14</comment_count>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2014-01-10 09:02:56 -0800</bug_when>
    <thetext>Committed r161638: &lt;http://trac.webkit.org/changeset/161638&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>967401</commentid>
    <comment_count>15</comment_count>
      <attachid>220748</attachid>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2014-01-13 10:42:14 -0800</bug_when>
    <thetext>Comment on attachment 220748
Patch

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

&gt; Source/WebCore/DerivedSources.make:745
&gt; +ADDITIONAL_BINDING_IDLS = \
&gt; +	GestureEvent.idl \
&gt; +	Touch.idl \
&gt; +	TouchEvent.idl \
&gt; +	TouchList.idl

It is incorrect, because these bindings weren&apos;t inside MACOS guard
and it broke the Windows build. See https://bugs.webkit.org/show_bug.cgi?id=126916
for details.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>220739</attachid>
            <date>2014-01-09 08:15:15 -0800</date>
            <delta_ts>2014-01-09 09:47:42 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-126698-20140109081514.patch</filename>
            <type>text/plain</type>
            <size>397872</size>
            <attacher name="Daniel Bates">dbates</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTYxNTUzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggY2M4ODdhNWY3ZTFmYmJk
OTdjNGQyNDg1M2M3NzZjNzhjNGE1NzI2Zi4uNjc3ZWJjNmQ5ZmFhY2FhY2I1ZTk3MzY3YWM4ZjAz
M2VmZTg5N2U2MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQwMSBAQAorMjAxNC0wMS0wOSAgRGFu
aWVsIEJhdGVzICA8ZGFiYXRlc0BhcHBsZS5jb20+CisKKyAgICAgICAgW2lPU10gVXBzdHJlYW0g
V2ViQ29yZSBhbmQgVG9vbHMgbWlzY2VsbGFuZW91cyBjaGFuZ2VzCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjY2OTgKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIENvbmZpZ3VyYXRpb25zL0Jhc2UueGNj
b25maWc6CisgICAgICAgICogQ29uZmlndXJhdGlvbnMvV2ViQ29yZS54Y2NvbmZpZzoKKyAgICAg
ICAgKiBDb25maWd1cmF0aW9ucy9XZWJDb3JlVGVzdFN1cHBvcnQueGNjb25maWc6CisgICAgICAg
ICogQ29uZmlndXJhdGlvbnMvaU9TLnhjY29uZmlnOiBBZGRlZC4KKyAgICAgICAgKiBEZXJpdmVk
U291cmNlcy5tYWtlOgorICAgICAgICAqIEVuZ2xpc2gubHByb2ovTG9jYWxpemFibGUuc3RyaW5n
czoKKyAgICAgICAgKiBNb2R1bGVzL2FpcnBsYXkvV2ViS2l0UGxheWJhY2tUYXJnZXRBdmFpbGFi
aWxpdHlFdmVudC5jcHA6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dEFm
ZmluaXR5LmguCisgICAgICAgICogTW9kdWxlcy9haXJwbGF5L1dlYktpdFBsYXliYWNrVGFyZ2V0
QXZhaWxhYmlsaXR5RXZlbnQuaDogQWRkZWQuCisgICAgICAgICogTW9kdWxlcy9haXJwbGF5L1dl
YktpdFBsYXliYWNrVGFyZ2V0QXZhaWxhYmlsaXR5RXZlbnQuaWRsOiBDb3BpZWQgZnJvbSBTb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL0RlbGV0ZUJ1dHRvbi5oLgorICAgICAgICAqIE1vZHVsZXMvZ2Vv
bG9jYXRpb24vR2VvbG9jYXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6R2VvbG9jYXRpb246
Okdlb2xvY2F0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6Okdlb2xvY2F0aW9uOjpjYW5TdXNwZW5k
KToKKyAgICAgICAgKFdlYkNvcmU6Okdlb2xvY2F0aW9uOjpzdXNwZW5kKToKKyAgICAgICAgKFdl
YkNvcmU6Okdlb2xvY2F0aW9uOjpyZXN1bWUpOgorICAgICAgICAoV2ViQ29yZTo6R2VvbG9jYXRp
b246OnJlc3VtZVRpbWVyRmlyZWQpOgorICAgICAgICAoV2ViQ29yZTo6R2VvbG9jYXRpb246OnJl
c2V0QWxsR2VvbG9jYXRpb25QZXJtaXNzaW9uKToKKyAgICAgICAgKFdlYkNvcmU6Okdlb2xvY2F0
aW9uOjpzdG9wKToKKyAgICAgICAgKFdlYkNvcmU6Okdlb2xvY2F0aW9uOjpzZXRJc0FsbG93ZWQp
OgorICAgICAgICAoV2ViQ29yZTo6R2VvbG9jYXRpb246OnBvc2l0aW9uQ2hhbmdlZCk6CisgICAg
ICAgIChXZWJDb3JlOjpHZW9sb2NhdGlvbjo6c2V0RXJyb3IpOgorICAgICAgICAqIE1vZHVsZXMv
Z2VvbG9jYXRpb24vR2VvbG9jYXRpb24uaDoKKyAgICAgICAgKiBNb2R1bGVzL2dlb2xvY2F0aW9u
L05hdmlnYXRvckdlb2xvY2F0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok5hdmlnYXRvckdl
b2xvY2F0aW9uOjpyZXNldEFsbEdlb2xvY2F0aW9uUGVybWlzc2lvbik6CisgICAgICAgICogTW9k
dWxlcy9nZW9sb2NhdGlvbi9OYXZpZ2F0b3JHZW9sb2NhdGlvbi5oOgorICAgICAgICAqIE1vZHVs
ZXMvc3BlZWNoL1NwZWVjaFN5bnRoZXNpcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTcGVlY2hT
eW50aGVzaXM6OlNwZWVjaFN5bnRoZXNpcyk6CisgICAgICAgIChXZWJDb3JlOjpTcGVlY2hTeW50
aGVzaXM6OnNwZWFrKToKKyAgICAgICAgKiBNb2R1bGVzL3NwZWVjaC9TcGVlY2hTeW50aGVzaXMu
aDoKKyAgICAgICAgKFdlYkNvcmU6OlNwZWVjaFN5bnRoZXNpczo6dXNlckdlc3R1cmVSZXF1aXJl
ZEZvclNwZWVjaFN0YXJ0KToKKyAgICAgICAgKFdlYkNvcmU6OlNwZWVjaFN5bnRoZXNpczo6cmVt
b3ZlQmVoYXZpb3JSZXN0cmljdGlvbik6CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9BdWRp
b0NvbnRleHQuY3BwOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0Lmg6
CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9BdWRpb1NjaGVkdWxlZFNvdXJjZU5vZGUuY3Bw
OgorICAgICAgICAqIE1vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2UuY3BwOgorICAgICAgICAq
IE1vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VCYWNrZW5kQmFzZS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpEYXRhYmFzZUJhY2tlbmRCYXNlOjpwZXJmb3JtT3BlbkFuZFZlcmlmeSk6CisgICAg
ICAgIChXZWJDb3JlOjpEYXRhYmFzZUJhY2tlbmRCYXNlOjppbmNyZW1lbnRhbFZhY3V1bUlmTmVl
ZGVkKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlQ29udGV4dC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZUNvbnRleHQ6OkRhdGFiYXNlQ29udGV4dCk6Cisg
ICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZUNvbnRleHQ6OmRhdGFiYXNlVGhyZWFkKToKKyAgICAg
ICAgKFdlYkNvcmU6OkRhdGFiYXNlQ29udGV4dDo6c2V0UGF1c2VkKToKKyAgICAgICAgKiBNb2R1
bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlQ29udGV4dC5oOgorICAgICAgICAqIE1vZHVsZXMvd2Vi
ZGF0YWJhc2UvRGF0YWJhc2VNYW5hZ2VyQ2xpZW50Lmg6CisgICAgICAgICogTW9kdWxlcy93ZWJk
YXRhYmFzZS9EYXRhYmFzZVRhc2suY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGF0YWJhc2VUYXNr
OjpwZXJmb3JtVGFzayk6CisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZTo6RGF0YWJhc2VUcmFu
c2FjdGlvblRhc2s6OnNob3VsZFBlcmZvcm1XaGlsZVBhdXNlZCk6CisgICAgICAgICogTW9kdWxl
cy93ZWJkYXRhYmFzZS9EYXRhYmFzZVRhc2suaDoKKyAgICAgICAgKiBNb2R1bGVzL3dlYmRhdGFi
YXNlL0RhdGFiYXNlVGhyZWFkLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFiYXNlVGhyZWFk
OjpEYXRhYmFzZVRocmVhZCk6CisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZVRocmVhZDo6cmVx
dWVzdFRlcm1pbmF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFiYXNlVW5wYXVzZVRhc2s6
OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZVVucGF1c2VUYXNrOjpzaG91bGRQ
ZXJmb3JtV2hpbGVQYXVzZWQpOgorICAgICAgICAoV2ViQ29yZTo6RGF0YWJhc2VVbnBhdXNlVGFz
azo6RGF0YWJhc2VVbnBhdXNlVGFzayk6CisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZVVucGF1
c2VUYXNrOjpkb1BlcmZvcm1UYXNrKToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFiYXNlVW5wYXVz
ZVRhc2s6OmRlYnVnVGFza05hbWUpOgorICAgICAgICAoV2ViQ29yZTo6RGF0YWJhc2VUaHJlYWQ6
OnNldFBhdXNlZCk6CisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZVRocmVhZDo6aGFuZGxlUGF1
c2VkUXVldWUpOgorICAgICAgICAoV2ViQ29yZTo6RGF0YWJhc2VUaHJlYWQ6OmRhdGFiYXNlVGhy
ZWFkKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlVGhyZWFkLmg6Cisg
ICAgICAgICogTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZVRyYWNrZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6RGF0YWJhc2VUcmFja2VyOjpzZXRRdW90YSk6CisgICAgICAgIChXZWJDb3Jl
OjpEYXRhYmFzZVRyYWNrZXI6OmRlbGV0ZU9yaWdpbik6CisgICAgICAgIChXZWJDb3JlOjpEYXRh
YmFzZVRyYWNrZXI6OmRlbGV0ZURhdGFiYXNlKToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFiYXNl
VHJhY2tlcjo6ZGVsZXRlRGF0YWJhc2VGaWxlKToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFiYXNl
VHJhY2tlcjo6cmVtb3ZlRGVsZXRlZE9wZW5lZERhdGFiYXNlcyk6CisgICAgICAgIChXZWJDb3Jl
Ojppc1plcm9CeXRlRmlsZSk6CisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZVRyYWNrZXI6OmRl
bGV0ZURhdGFiYXNlRmlsZUlmRW1wdHkpOgorICAgICAgICAoV2ViQ29yZTo6RGF0YWJhc2VUcmFj
a2VyOjpvcGVuRGF0YWJhc2VNdXRleCk6CisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZVRyYWNr
ZXI6OmVtcHR5RGF0YWJhc2VGaWxlc1JlbW92YWxUYXNrV2lsbEJlU2NoZWR1bGVkKToKKyAgICAg
ICAgKFdlYkNvcmU6OkRhdGFiYXNlVHJhY2tlcjo6ZW1wdHlEYXRhYmFzZUZpbGVzUmVtb3ZhbFRh
c2tEaWRGaW5pc2gpOgorICAgICAgICAoV2ViQ29yZTo6RGF0YWJhc2VUcmFja2VyOjpzZXREYXRh
YmFzZXNQYXVzZWQpOgorICAgICAgICAqIE1vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VUcmFj
a2VyLmg6CisgICAgICAgICogTW9kdWxlcy93ZWJkYXRhYmFzZS9TUUxUcmFuc2FjdGlvbkJhY2tl
bmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1FMVHJhbnNhY3Rpb25CYWNrZW5kOjpzaG91bGRQ
ZXJmb3JtV2hpbGVQYXVzZWQpOgorICAgICAgICAqIE1vZHVsZXMvd2ViZGF0YWJhc2UvU1FMVHJh
bnNhY3Rpb25CYWNrZW5kLmg6CisgICAgICAgICogUmVzb3VyY2VzL0RpY3RhdGlvblBocmFzZVdp
dGhBbHRlcm5hdGl2ZXNEb3QucG5nOiBBZGRlZC4KKyAgICAgICAgKiBSZXNvdXJjZXMvRGljdGF0
aW9uUGhyYXNlV2l0aEFsdGVybmF0aXZlc0RvdEAyeC5wbmc6IEFkZGVkLgorICAgICAgICAqIFJl
c291cmNlcy9TcGVsbGluZ0RvdC5wbmc6IEFkZGVkLgorICAgICAgICAqIFJlc291cmNlcy9TcGVs
bGluZ0RvdEAyeC5wbmc6IEFkZGVkLgorICAgICAgICAqIFJlc291cmNlcy9kZWNyZW1lbnRBcnJv
dy50aWZmOiBBZGRlZC4KKyAgICAgICAgKiBSZXNvdXJjZXMvaFNjcm9sbENvbnRyb2xfbGVmdC5w
bmc6IEFkZGVkLgorICAgICAgICAqIFJlc291cmNlcy9oU2Nyb2xsQ29udHJvbF9taWRkbGUucG5n
OiBBZGRlZC4KKyAgICAgICAgKiBSZXNvdXJjZXMvaFNjcm9sbENvbnRyb2xfcmlnaHQucG5nOiBB
ZGRlZC4KKyAgICAgICAgKiBSZXNvdXJjZXMvaW5jcmVtZW50QXJyb3cudGlmZjogQWRkZWQuCisg
ICAgICAgICogUmVzb3VyY2VzL21hcmtlZExlZnQucG5nOiBBZGRlZC4KKyAgICAgICAgKiBSZXNv
dXJjZXMvbWFya2VkTWlkZGxlLnBuZzogQWRkZWQuCisgICAgICAgICogUmVzb3VyY2VzL21hcmtl
ZFJpZ2h0LnBuZzogQWRkZWQuCisgICAgICAgICogUmVzb3VyY2VzL3ZTY3JvbGxDb250cm9sX2Jv
dHRvbS5wbmc6IEFkZGVkLgorICAgICAgICAqIFJlc291cmNlcy92U2Nyb2xsQ29udHJvbF9taWRk
bGUucG5nOiBBZGRlZC4KKyAgICAgICAgKiBSZXNvdXJjZXMvdlNjcm9sbENvbnRyb2xfdG9wLnBu
ZzogQWRkZWQuCisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgor
ICAgICAgICAqIGJpbmRpbmdzL2pzL0dDQ29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpHQ0NvbnRyb2xsZXI6OmdhcmJhZ2VDb2xsZWN0Tm93KToKKyAgICAgICAgKFdlYkNvcmU6OkdD
Q29udHJvbGxlcjo6cmVsZWFzZUV4ZWN1dGFibGVNZW1vcnkpOgorICAgICAgICAqIGJpbmRpbmdz
L2pzL0dDQ29udHJvbGxlci5oOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTQ2FsbGJhY2tEYXRh
Lmg6CisgICAgICAgIChXZWJDb3JlOjpKU0NhbGxiYWNrRGF0YTo6fkpTQ2FsbGJhY2tEYXRhKToK
KyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0Jhc2UuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6SlNET01XaW5kb3dCYXNlOjpzdXBwb3J0c1Byb2ZpbGluZyk6CisgICAgICAgIChXZWJD
b3JlOjpKU0RPTVdpbmRvd0Jhc2U6OnNob3VsZEludGVycnVwdFNjcmlwdEJlZm9yZVRpbWVvdXQp
OgorICAgICAgICAoV2ViQ29yZTo6SlNET01XaW5kb3dCYXNlOjpjb21tb25WTSk6CisgICAgICAg
IChXZWJDb3JlOjpKU0RPTVdpbmRvd0Jhc2U6OmNvbW1vblZNRXhpc3RzKToKKyAgICAgICAgKFdl
YkNvcmU6OkpTRE9NV2luZG93QmFzZTo6Y29tbW9uVk1JbnRlcm5hbCk6CisgICAgICAgICogYmlu
ZGluZ3MvanMvSlNET01XaW5kb3dDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNET01X
aW5kb3c6OnRvdWNoKToKKyAgICAgICAgKFdlYkNvcmU6OkpTRE9NV2luZG93Ojp0b3VjaExpc3Qp
OgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRGV2aWNlT3JpZW50YXRpb25FdmVudEN1c3RvbS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpKU0RldmljZU9yaWVudGF0aW9uRXZlbnQ6OndlYmtpdENv
bXBhc3NIZWFkaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OkpTRGV2aWNlT3JpZW50YXRpb25FdmVu
dDo6d2Via2l0Q29tcGFzc0FjY3VyYWN5KToKKyAgICAgICAgKFdlYkNvcmU6OkpTRGV2aWNlT3Jp
ZW50YXRpb25FdmVudDo6aW5pdERldmljZU9yaWVudGF0aW9uRXZlbnQpOgorICAgICAgICAqIGJp
bmRpbmdzL2pzL0pTTWFpblRocmVhZEV4ZWNTdGF0ZS5oOgorICAgICAgICAqIGJpbmRpbmdzL2pz
L0pTVG91Y2hDdXN0b20uY3BwOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTVG91Y2hMaXN0Q3Vz
dG9tLmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9QYWdlU2NyaXB0RGVidWdTZXJ2ZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6UGFnZVNjcmlwdERlYnVnU2VydmVyOjpkaWRDb250aW51ZSk6
CisgICAgICAgICogYmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpTY3JpcHRDb250cm9sbGVyOjppbml0aWFsaXplVGhyZWFkaW5nKToKKyAgICAgICAg
KiBiaW5kaW5ncy9qcy9TY3JpcHREZWJ1Z1NlcnZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpT
Y3JpcHREZWJ1Z1NlcnZlcjo6aGFuZGxlUGF1c2UpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL2lv
cy9Ub3VjaENvbnN0cnVjdG9ycy5jcHA6IEFkZGVkLgorICAgICAgICAqIGJpbmRpbmdzL29iamMv
RE9NLm1tOgorICAgICAgICAoV2ViQ29yZTo6d2tRdWFkRnJvbUZsb2F0UXVhZCk6CisgICAgICAg
IChXZWJDb3JlOjpraXQpOgorICAgICAgICAoV2ViQ29yZTo6bWluNCk6CisgICAgICAgIChXZWJD
b3JlOjptYXg0KToKKyAgICAgICAgKFdlYkNvcmU6OmVtcHR5UXVhZCk6CisgICAgICAgICgtW1dL
UXVhZE9iamVjdCBpbml0V2l0aFF1YWQ6XSk6CisgICAgICAgICgtW1dLUXVhZE9iamVjdCBxdWFk
XSk6CisgICAgICAgICgtW1dLUXVhZE9iamVjdCBib3VuZGluZ0JveF0pOgorICAgICAgICAoLVtE
T01Ob2RlIGJvdW5kaW5nQm94XSk6CisgICAgICAgICgtW0RPTU5vZGUgYWJzb2x1dGVRdWFkXSk6
CisgICAgICAgICgtW0RPTU5vZGUgYWJzb2x1dGVRdWFkQW5kSW5zaWRlRml4ZWRQb3NpdGlvbjpd
KToKKyAgICAgICAgKC1bRE9NTm9kZSBib3VuZGluZ0JveFVzaW5nVHJhbnNmb3Jtc10pOgorICAg
ICAgICAoLVtET01Ob2RlIGxpbmVCb3hRdWFkc10pOgorICAgICAgICAoLVtET01Ob2RlIF9saW5r
RWxlbWVudF0pOgorICAgICAgICAoLVtET01Ob2RlIGhyZWZVUkxdKToKKyAgICAgICAgKC1bRE9N
Tm9kZSBocmVmVGFyZ2V0XSk6CisgICAgICAgICgtW0RPTU5vZGUgaHJlZkZyYW1lXSk6CisgICAg
ICAgICgtW0RPTU5vZGUgaHJlZkxhYmVsXSk6CisgICAgICAgICgtW0RPTU5vZGUgaHJlZlRpdGxl
XSk6CisgICAgICAgICgtW0RPTU5vZGUgYm91bmRpbmdGcmFtZV0pOgorICAgICAgICAoLVtET01O
b2RlIGlubmVyRnJhbWVRdWFkXSk6CisgICAgICAgICgtW0RPTU5vZGUgY29tcHV0ZWRGb250U2l6
ZV0pOgorICAgICAgICAoLVtET01Ob2RlIG5leHRGb2N1c05vZGVdKToKKyAgICAgICAgKC1bRE9N
Tm9kZSBwcmV2aW91c0ZvY3VzTm9kZV0pOgorICAgICAgICAoLVtET01SYW5nZSBib3VuZGluZ0Jv
eF0pOgorICAgICAgICAoLVtET01SYW5nZSByZW5kZXJlZEltYWdlRm9yY2luZ0JsYWNrVGV4dDpy
ZW5kZXJlZEltYWdlRm9yY2luZ0JsYWNrVGV4dDpdKToKKyAgICAgICAgKC1bRE9NRWxlbWVudCBf
Zm9udF0pOgorICAgICAgICAoLVtET01IVE1MTGlua0VsZW1lbnQgX21lZGlhUXVlcnlNYXRjaGVz
Rm9yT3JpZW50YXRpb246XSk6CisgICAgICAgICgtW0RPTUhUTUxMaW5rRWxlbWVudCBfbWVkaWFR
dWVyeU1hdGNoZXNdKToKKyAgICAgICAgKiBiaW5kaW5ncy9vYmpjL0RPTUV2ZW50cy5oOgorICAg
ICAgICAqIGJpbmRpbmdzL29iamMvRE9NRXZlbnRzLm1tOgorICAgICAgICAoa2l0Q2xhc3MpOgor
ICAgICAgICAqIGJpbmRpbmdzL29iamMvRE9NRXh0ZW5zaW9ucy5oOgorICAgICAgICAqIGJpbmRp
bmdzL29iamMvRE9NSFRNTC5tbToKKyAgICAgICAgKC1bRE9NSFRNTEVsZW1lbnQgc2Nyb2xsWU9m
ZnNldF0pOgorICAgICAgICAoLVtET01IVE1MRWxlbWVudCBzZXRTY3JvbGxYT2Zmc2V0OnNjcm9s
bFlPZmZzZXQ6XSk6CisgICAgICAgICgtW0RPTUhUTUxFbGVtZW50IHNldFNjcm9sbFhPZmZzZXQ6
c2Nyb2xsWU9mZnNldDphZGp1c3RGb3JJT1NDYXJldDpdKToKKyAgICAgICAgKC1bRE9NSFRNTEVs
ZW1lbnQgYWJzb2x1dGVQb3NpdGlvbjo6OjpdKToKKyAgICAgICAgKC1bRE9NSFRNTElucHV0RWxl
bWVudCBfYXV0b2NhcGl0YWxpemVUeXBlXSk6CisgICAgICAgICgtW0RPTUhUTUxUZXh0QXJlYUVs
ZW1lbnQgX2F1dG9jYXBpdGFsaXplVHlwZV0pOgorICAgICAgICAoLVtET01IVE1MSW5wdXRFbGVt
ZW50IHNldFZhbHVlV2l0aENoYW5nZUV2ZW50Ol0pOgorICAgICAgICAoLVtET01IVE1MSW5wdXRF
bGVtZW50IHNldFZhbHVlQXNOdW1iZXJXaXRoQ2hhbmdlRXZlbnQ6XSk6CisgICAgICAgICogYmlu
ZGluZ3Mvb2JqYy9ET01JbnRlcm5hbC5oOgorICAgICAgICAqIGJpbmRpbmdzL29iamMvRE9NSW50
ZXJuYWwubW06CisgICAgICAgICh3cmFwcGVyQ2FjaGVMb2NrKToKKyAgICAgICAgKGdldERPTVdy
YXBwZXIpOgorICAgICAgICAoYWRkRE9NV3JhcHBlcik6CisgICAgICAgIChyZW1vdmVET01XcmFw
cGVyKToKKyAgICAgICAgKiBiaW5kaW5ncy9vYmpjL0RPTVByaXZhdGUuaDoKKyAgICAgICAgKiBi
aW5kaW5ncy9vYmpjL0RPTVVJS2l0RXh0ZW5zaW9ucy5oOiBBZGRlZC4KKyAgICAgICAgKiBiaW5k
aW5ncy9vYmpjL0RPTVVJS2l0RXh0ZW5zaW9ucy5tbTogQWRkZWQuCisgICAgICAgICgtW0RPTVJh
bmdlIG1vdmU6aW5EaXJlY3Rpb246XSk6CisgICAgICAgICgtW0RPTVJhbmdlIGV4dGVuZDppbkRp
cmVjdGlvbjpdKToKKyAgICAgICAgKC1bRE9NUmFuZ2UgZmlyc3ROb2RlXSk6CisgICAgICAgICgt
W0RPTU5vZGUgYm91bmRpbmdCb3hlc10pOgorICAgICAgICAoLVtET01Ob2RlIGFic29sdXRlUXVh
ZHNdKToKKyAgICAgICAgKC1bRE9NTm9kZSBib3JkZXJSYWRpaV0pOgorICAgICAgICAoLVtET01O
b2RlIGNvbnRhaW5zT25seUlubGluZU9iamVjdHNdKToKKyAgICAgICAgKC1bRE9NTm9kZSBpc1Nl
bGVjdGFibGVCbG9ja10pOgorICAgICAgICAoLVtET01Ob2RlIHJhbmdlT2ZDb250YWluaW5nUGFy
YWdyYXBoXSk6CisgICAgICAgICgtW0RPTU5vZGUgdGV4dEhlaWdodF0pOgorICAgICAgICAoLVtE
T01Ob2RlIGZpbmRFeHBsb2RlZFRleHROb2RlQXRQb2ludDpdKToKKyAgICAgICAgKC1bRE9NSFRN
TEVsZW1lbnQgc3RydWN0dXJhbENvbXBsZXhpdHlDb250cmlidXRpb25dKToKKyAgICAgICAgKC1b
RE9NSFRNTEFyZWFFbGVtZW50IGJvdW5kaW5nQm94V2l0aE93bmVyOl0pOgorICAgICAgICAoLVtE
T01IVE1MQXJlYUVsZW1lbnQgYWJzb2x1dGVRdWFkV2l0aE93bmVyOl0pOgorICAgICAgICAoLVtE
T01IVE1MQXJlYUVsZW1lbnQgYm91bmRpbmdCb3hlc1dpdGhPd25lcjpdKToKKyAgICAgICAgKC1b
RE9NSFRNTEFyZWFFbGVtZW50IGFic29sdXRlUXVhZHNXaXRoT3duZXI6XSk6CisgICAgICAgICgt
W0RPTUhUTUxTZWxlY3RFbGVtZW50IGNvbXBsZXRlTGVuZ3RoXSk6CisgICAgICAgICgtW0RPTUhU
TUxTZWxlY3RFbGVtZW50IGxpc3RJdGVtQXRJbmRleDpdKToKKyAgICAgICAgKC1bRE9NSFRNTElt
YWdlRWxlbWVudCBkYXRhUmVwcmVzZW50YXRpb246XSk6CisgICAgICAgICgtW0RPTUhUTUxJbWFn
ZUVsZW1lbnQgbWltZVR5cGVdKToKKyAgICAgICAgKiBiaW5kaW5ncy9vYmpjL1B1YmxpY0RPTUlu
dGVyZmFjZXMuaDoKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5w
bToKKyAgICAgICAgKEdlbmVyYXRlSGVhZGVyQ29udGVudEhlYWRlcik6CisgICAgICAgIChHZW5l
cmF0ZUltcGxlbWVudGF0aW9uQ29udGVudEhlYWRlcik6CisgICAgICAgIChHZW5lcmF0ZUhlYWRl
cik6CisgICAgICAgIChHZW5lcmF0ZUltcGxlbWVudGF0aW9uKToKKyAgICAgICAgKEdlbmVyYXRl
Q2FsbGJhY2tJbXBsZW1lbnRhdGlvbik6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy9Db2Rl
R2VuZXJhdG9yT2JqQy5wbToKKyAgICAgICAgKFJlYWRQdWJsaWNJbnRlcmZhY2VzKToKKyAgICAg
ICAgKEdldENsYXNzTmFtZSk6CisgICAgICAgIChJc0NvcmVGb3VuZGF0aW9uVHlwZSk6CisgICAg
ICAgIChHZXRPYmpDVHlwZSk6CisgICAgICAgIChBZGRJbmNsdWRlc0ZvclR5cGUpOgorICAgICAg
ICAoR2VuZXJhdGVIZWFkZXIpOgorICAgICAgICAoR2VuZXJhdGVJbXBsZW1lbnRhdGlvbik6Cisg
ICAgICAgIChXcml0ZURhdGEpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvSURMQXR0cmli
dXRlcy50eHQ6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy9wcmVwcm9jZXNzb3IucG06Cisg
ICAgICAgIChhcHBseVByZXByb2Nlc3Nvcik6CisgICAgICAgICogYnJpZGdlL29iamMvb2JqY19j
bGFzcy5tbToKKyAgICAgICAgKEpTQzo6QmluZGluZ3M6Ok9iamNDbGFzczo6ZmllbGROYW1lZCk6
CisgICAgICAgICogYnJpZGdlL29iamMvb2JqY19pbnN0YW5jZS5tbToKKyAgICAgICAgKiBjb25m
aWcuaDoKKyAgICAgICAgKiBkb20vRG9jdW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9j
dW1lbnQ6OmFkZEF1dG9TaXppbmdOb2RlKToKKyAgICAgICAgKiBkb20vRG9jdW1lbnQuaDoKKyAg
ICAgICAgKiBkb20vRG9jdW1lbnQuaWRsOgorICAgICAgICAqIGRvbS9pb3MvVG91Y2hFdmVudHMu
Y3BwOiBBZGRlZC4KKyAgICAgICAgKiBlZGl0aW5nL0FwcGx5U3R5bGVDb21tYW5kLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkFwcGx5U3R5bGVDb21tYW5kOjphcHBseUJsb2NrU3R5bGUpOgorICAg
ICAgICAqIGVkaXRpbmcvQ29tcG9zaXRlRWRpdENvbW1hbmQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6RWRpdENvbW1hbmRDb21wb3NpdGlvbjo6dW5hcHBseSk6CisgICAgICAgIChXZWJDb3JlOjpD
b21wb3NpdGVFZGl0Q29tbWFuZDo6YXBwbHkpOgorICAgICAgICAoV2ViQ29yZTo6Q29tcG9zaXRl
RWRpdENvbW1hbmQ6OmlucHV0VGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpDb21wb3NpdGVFZGl0
Q29tbWFuZDo6cmVwbGFjZVRleHRJbk5vZGVQcmVzZXJ2aW5nTWFya2Vycyk6CisgICAgICAgIChX
ZWJDb3JlOjpDb21wb3NpdGVFZGl0Q29tbWFuZDo6bW92ZVBhcmFncmFwaHMpOgorICAgICAgICAq
IGVkaXRpbmcvQ29tcG9zaXRlRWRpdENvbW1hbmQuaDoKKyAgICAgICAgKiBlZGl0aW5nL0RlbGV0
ZUJ1dHRvbi5oOgorICAgICAgICAqIGVkaXRpbmcvRGVsZXRlQnV0dG9uQ29udHJvbGxlci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpEZWxldGVCdXR0b25Db250cm9sbGVyOjplbmFibGUpOgorICAg
ICAgICAoV2ViQ29yZTo6RGVsZXRlQnV0dG9uQ29udHJvbGxlcjo6ZGlzYWJsZSk6CisgICAgICAg
ICogZWRpdGluZy9EZWxldGVTZWxlY3Rpb25Db21tYW5kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkRlbGV0ZVNlbGVjdGlvbkNvbW1hbmQ6OmRvQXBwbHkpOgorICAgICAgICAqIGVkaXRpbmcvRGVs
ZXRlU2VsZWN0aW9uQ29tbWFuZC5oOgorICAgICAgICAqIGVkaXRpbmcvRWRpdEFjdGlvbi5oOgor
ICAgICAgICAqIGVkaXRpbmcvRWRpdENvbW1hbmQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRD
b21tYW5kOjppc0luc2VydFRleHRDb21tYW5kKToKKyAgICAgICAgKiBlZGl0aW5nL0VkaXRpbmdT
dHlsZS5jcHA6CisgICAgICAgICogZWRpdGluZy9FZGl0b3IuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Q2xlYXJUZXh0Q29tbWFuZDo6Q2xlYXJUZXh0Q29tbWFuZCk6CisgICAgICAgIChXZWJDb3Jl
OjpDbGVhclRleHRDb21tYW5kOjplZGl0aW5nQWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkNs
ZWFyVGV4dENvbW1hbmQ6OkNyZWF0ZUFuZEFwcGx5KToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRv
cjo6aGFuZGxlVGV4dEV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6Y2xlYXJUZXh0
KToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6aW5zZXJ0RGljdGF0aW9uUGhyYXNlcyk6Cisg
ICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OnNldERpY3RhdGlvblBocmFzZXNBc0NoaWxkT2ZFbGVt
ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6Y29uZmlybU1hcmtlZFRleHQpOgorICAg
ICAgICAoV2ViQ29yZTo6RWRpdG9yOjpzZXRUZXh0QXNDaGlsZE9mRWxlbWVudCk6CisgICAgICAg
IChXZWJDb3JlOjpFZGl0b3I6Om5vdGlmeUNvbXBvbmVudHNPbkNoYW5nZWRTZWxlY3Rpb24pOgor
ICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjplbnN1cmVMYXN0RWRpdENvbW1hbmRIYXNDdXJyZW50
U2VsZWN0aW9uSWZPcGVuRm9yTW9yZVR5cGluZyk6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6
OmNvcHkpOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjpzZXRCYXNlV3JpdGluZ0RpcmVjdGlv
bik6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OnNldENvbXBvc2l0aW9uKToKKyAgICAgICAg
KFdlYkNvcmU6OkVkaXRvcjo6c2hvd1NwZWxsaW5nR3Vlc3NQYW5lbCk6CisgICAgICAgIChXZWJD
b3JlOjpFZGl0b3I6Om1hcmtNaXNzcGVsbGluZ3NBZnRlclR5cGluZ1RvV29yZCk6CisgICAgICAg
IChXZWJDb3JlOjpFZGl0b3I6Om1hcmtNaXNzcGVsbGluZ3NPckJhZEdyYW1tYXIpOgorICAgICAg
ICAoV2ViQ29yZTo6RWRpdG9yOjpjaGFuZ2VCYWNrVG9SZXBsYWNlZFN0cmluZyk6CisgICAgICAg
IChXZWJDb3JlOjpFZGl0b3I6OnVwZGF0ZU1hcmtlcnNGb3JXb3Jkc0FmZmVjdGVkQnlFZGl0aW5n
KToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6c2V0SWdub3JlQ29tcG9zaXRpb25TZWxlY3Rp
b25DaGFuZ2UpOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjpjaGFuZ2VTZWxlY3Rpb25BZnRl
ckNvbW1hbmQpOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjpzaG91bGRDaGFuZ2VTZWxlY3Rp
b24pOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjpyZXNwb25kVG9DaGFuZ2VkU2VsZWN0aW9u
KToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6cmVzb2x2ZVRleHRDaGVja2luZ1R5cGVNYXNr
KToKKyAgICAgICAgKiBlZGl0aW5nL0VkaXRvci5oOgorICAgICAgICAqIGVkaXRpbmcvRWRpdG9y
Q29tbWFuZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpleGVjdXRlQ2xlYXJUZXh0KToKKyAgICAg
ICAgKFdlYkNvcmU6OmVuYWJsZWRDb3B5KToKKyAgICAgICAgKFdlYkNvcmU6OmVuYWJsZWRDdXQp
OgorICAgICAgICAoV2ViQ29yZTo6ZW5hYmxlZENsZWFyVGV4dCk6CisgICAgICAgIChXZWJDb3Jl
OjpjcmVhdGVDb21tYW5kTWFwKToKKyAgICAgICAgKiBlZGl0aW5nL0ZyYW1lU2VsZWN0aW9uLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lU2VsZWN0aW9uOjpGcmFtZVNlbGVjdGlvbik6Cisg
ICAgICAgIChXZWJDb3JlOjpGcmFtZVNlbGVjdGlvbjo6c2V0U2VsZWN0aW9uKToKKyAgICAgICAg
KFdlYkNvcmU6OkZyYW1lU2VsZWN0aW9uOjptb2RpZnlFeHRlbmRpbmdSaWdodCk6CisgICAgICAg
IChXZWJDb3JlOjpGcmFtZVNlbGVjdGlvbjo6bW9kaWZ5RXh0ZW5kaW5nRm9yd2FyZCk6CisgICAg
ICAgIChXZWJDb3JlOjpGcmFtZVNlbGVjdGlvbjo6bW9kaWZ5TW92aW5nUmlnaHQpOgorICAgICAg
ICAoV2ViQ29yZTo6RnJhbWVTZWxlY3Rpb246Om1vZGlmeU1vdmluZ0ZvcndhcmQpOgorICAgICAg
ICAoV2ViQ29yZTo6RnJhbWVTZWxlY3Rpb246Om1vZGlmeUV4dGVuZGluZ0xlZnQpOgorICAgICAg
ICAoV2ViQ29yZTo6RnJhbWVTZWxlY3Rpb246Om1vZGlmeUV4dGVuZGluZ0JhY2t3YXJkKToKKyAg
ICAgICAgKFdlYkNvcmU6OkZyYW1lU2VsZWN0aW9uOjptb2RpZnlNb3ZpbmdMZWZ0KToKKyAgICAg
ICAgKFdlYkNvcmU6OkZyYW1lU2VsZWN0aW9uOjptb2RpZnlNb3ZpbmdCYWNrd2FyZCk6CisgICAg
ICAgIChXZWJDb3JlOjpGcmFtZVNlbGVjdGlvbjo6c2V0U2VsZWN0ZWRSYW5nZSk6CisgICAgICAg
IChXZWJDb3JlOjpGcmFtZVNlbGVjdGlvbjo6Zm9jdXNlZE9yQWN0aXZlU3RhdGVDaGFuZ2VkKToK
KyAgICAgICAgKFdlYkNvcmU6OkZyYW1lU2VsZWN0aW9uOjp1cGRhdGVBcHBlYXJhbmNlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkZyYW1lU2VsZWN0aW9uOjpzaG91bGREZWxldGVTZWxlY3Rpb24pOgor
ICAgICAgICAoV2ViQ29yZTo6RnJhbWVTZWxlY3Rpb246OnJldmVhbFNlbGVjdGlvbik6CisgICAg
ICAgIChXZWJDb3JlOjpGcmFtZVNlbGVjdGlvbjo6c2V0U2VsZWN0aW9uRnJvbU5vbmUpOgorICAg
ICAgICAoV2ViQ29yZTo6RnJhbWVTZWxlY3Rpb246OnNob3VsZENoYW5nZVNlbGVjdGlvbik6Cisg
ICAgICAgIChXZWJDb3JlOjpGcmFtZVNlbGVjdGlvbjo6ZXhwYW5kU2VsZWN0aW9uVG9FbGVtZW50
Q29udGFpbmluZ0NhcmV0U2VsZWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lU2VsZWN0
aW9uOjplbGVtZW50UmFuZ2VDb250YWluaW5nQ2FyZXRTZWxlY3Rpb24pOgorICAgICAgICAoV2Vi
Q29yZTo6RnJhbWVTZWxlY3Rpb246OmV4cGFuZFNlbGVjdGlvblRvV29yZENvbnRhaW5pbmdDYXJl
dFNlbGVjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZVNlbGVjdGlvbjo6d29yZFJhbmdl
Q29udGFpbmluZ0NhcmV0U2VsZWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lU2VsZWN0
aW9uOjpleHBhbmRTZWxlY3Rpb25Ub1N0YXJ0T2ZXb3JkQ29udGFpbmluZ0NhcmV0U2VsZWN0aW9u
KToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lU2VsZWN0aW9uOjpjaGFyYWN0ZXJJblJlbGF0aW9u
VG9DYXJldFNlbGVjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZVNlbGVjdGlvbjo6Y2hh
cmFjdGVyQmVmb3JlQ2FyZXRTZWxlY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVTZWxl
Y3Rpb246OmNoYXJhY3RlckFmdGVyQ2FyZXRTZWxlY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6
RnJhbWVTZWxlY3Rpb246OndvcmRPZmZzZXRJblJhbmdlKToKKyAgICAgICAgKFdlYkNvcmU6OkZy
YW1lU2VsZWN0aW9uOjpzcGFjZUZvbGxvd3NXb3JkSW5SYW5nZSk6CisgICAgICAgIChXZWJDb3Jl
OjpGcmFtZVNlbGVjdGlvbjo6c2VsZWN0aW9uQXREb2N1bWVudFN0YXJ0KToKKyAgICAgICAgKFdl
YkNvcmU6OkZyYW1lU2VsZWN0aW9uOjpzZWxlY3Rpb25BdFNlbnRlbmNlU3RhcnQpOgorICAgICAg
ICAoV2ViQ29yZTo6RnJhbWVTZWxlY3Rpb246OnNlbGVjdGlvbkF0V29yZFN0YXJ0KToKKyAgICAg
ICAgKFdlYkNvcmU6OkZyYW1lU2VsZWN0aW9uOjpyYW5nZUJ5TW92aW5nQ3VycmVudFNlbGVjdGlv
bik6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZVNlbGVjdGlvbjo6cmFuZ2VCeUV4dGVuZGluZ0N1
cnJlbnRTZWxlY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVTZWxlY3Rpb246OnNlbGVj
dFJhbmdlT25FbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lU2VsZWN0aW9uOjp3b3Jk
U2VsZWN0aW9uQ29udGFpbmluZ0NhcmV0U2VsZWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkZy
YW1lU2VsZWN0aW9uOjphY3R1YWxTZWxlY3Rpb25BdFNlbnRlbmNlU3RhcnQpOgorICAgICAgICAo
V2ViQ29yZTo6RnJhbWVTZWxlY3Rpb246OnJhbmdlQnlBbHRlcmluZ0N1cnJlbnRTZWxlY3Rpb24p
OgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVTZWxlY3Rpb246OmNsZWFyQ3VycmVudFNlbGVjdGlv
bik6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZVNlbGVjdGlvbjo6c2V0Q2FyZXRCbGlua3MpOgor
ICAgICAgICAoV2ViQ29yZTo6RnJhbWVTZWxlY3Rpb246OnNldENhcmV0Q29sb3IpOgorICAgICAg
ICAqIGVkaXRpbmcvRnJhbWVTZWxlY3Rpb24uaDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lU2Vs
ZWN0aW9uOjpzdXBwcmVzc0Nsb3NlVHlwaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lU2Vs
ZWN0aW9uOjpyZXN0b3JlQ2xvc2VUeXBpbmcpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVTZWxl
Y3Rpb246OnNldFVwZGF0ZUFwcGVhcmFuY2VFbmFibGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkZy
YW1lU2VsZWN0aW9uOjpzdXBwcmVzc1Njcm9sbGluZyk6CisgICAgICAgIChXZWJDb3JlOjpGcmFt
ZVNlbGVjdGlvbjo6cmVzdG9yZVNjcm9sbGluZyk6CisgICAgICAgICogZWRpdGluZy9JbnNlcnRJ
bnRvVGV4dE5vZGVDb21tYW5kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc2VydEludG9UZXh0
Tm9kZUNvbW1hbmQ6OmRvUmVhcHBseSk6CisgICAgICAgICogZWRpdGluZy9JbnNlcnRJbnRvVGV4
dE5vZGVDb21tYW5kLmg6CisgICAgICAgICogZWRpdGluZy9JbnNlcnRUZXh0Q29tbWFuZC5oOgor
ICAgICAgICAqIGVkaXRpbmcvUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6UmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQ6OmRvQXBwbHkpOgorICAgICAgICAqIGVk
aXRpbmcvVGV4dEFmZmluaXR5Lmg6CisgICAgICAgICogZWRpdGluZy9UZXh0Q2hlY2tpbmdIZWxw
ZXIuY3BwOgorICAgICAgICAqIGVkaXRpbmcvVGV4dEdyYW51bGFyaXR5Lmg6CisgICAgICAgICog
ZWRpdGluZy9UZXh0SXRlcmF0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6aXNSZW5kZXJlclJl
cGxhY2VkRWxlbWVudCk6CisgICAgICAgICogZWRpdGluZy9UeXBpbmdDb21tYW5kLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlR5cGluZ0NvbW1hbmQ6OmVuc3VyZUxhc3RFZGl0Q29tbWFuZEhhc0N1
cnJlbnRTZWxlY3Rpb25JZk9wZW5Gb3JNb3JlVHlwaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OlR5
cGluZ0NvbW1hbmQ6Om1hcmtNaXNzcGVsbGluZ3NBZnRlclR5cGluZyk6CisgICAgICAgIChXZWJD
b3JlOjpUeXBpbmdDb21tYW5kOjpkZWxldGVLZXlQcmVzc2VkKToKKyAgICAgICAgKFdlYkNvcmU6
OlR5cGluZ0NvbW1hbmQ6OmZvcndhcmREZWxldGVLZXlQcmVzc2VkKToKKyAgICAgICAgKFdlYkNv
cmU6OkZyaWVuZGx5RWRpdENvbW1hbmQ6OnNldEVuZGluZ1NlbGVjdGlvbik6CisgICAgICAgIChX
ZWJDb3JlOjpUeXBpbmdDb21tYW5kOjpzZXRFbmRpbmdTZWxlY3Rpb25Pbkxhc3RJbnNlcnRDb21t
YW5kKToKKyAgICAgICAgKiBlZGl0aW5nL1R5cGluZ0NvbW1hbmQuaDoKKyAgICAgICAgKiBlZGl0
aW5nL1Zpc2libGVQb3NpdGlvbi5oOgorICAgICAgICAoV2ViQ29yZTo6b3BlcmF0b3I8KToKKyAg
ICAgICAgKFdlYkNvcmU6Om9wZXJhdG9yPik6CisgICAgICAgIChXZWJDb3JlOjpvcGVyYXRvcjw9
KToKKyAgICAgICAgKFdlYkNvcmU6Om9wZXJhdG9yPj0pOgorICAgICAgICAqIGVkaXRpbmcvVmlz
aWJsZVNlbGVjdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpWaXNpYmxlU2VsZWN0aW9uOjpz
ZXRTdGFydEFuZEVuZEZyb21CYXNlQW5kRXh0ZW50UmVzcGVjdGluZ0dyYW51bGFyaXR5KToKKyAg
ICAgICAgKFdlYkNvcmU6OlZpc2libGVTZWxlY3Rpb246OmFkanVzdFNlbGVjdGlvblRvQXZvaWRD
cm9zc2luZ0VkaXRpbmdCb3VuZGFyaWVzKToKKyAgICAgICAgKiBlZGl0aW5nL1Zpc2libGVVbml0
cy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpwcmV2aW91c0JvdW5kYXJ5KToKKyAgICAgICAgKFdl
YkNvcmU6Om5leHRCb3VuZGFyeSk6CisgICAgICAgIChXZWJDb3JlOjpzdGFydE9mRG9jdW1lbnQp
OgorICAgICAgICAoV2ViQ29yZTo6ZW5kT2ZEb2N1bWVudCk6CisgICAgICAgIChXZWJDb3JlOjpk
aXJlY3Rpb25Jc0Rvd25zdHJlYW0pOgorICAgICAgICAoV2ViQ29yZTo6YXRCb3VuZGFyeU9mR3Jh
bnVsYXJpdHkpOgorICAgICAgICAoV2ViQ29yZTo6d2l0aGluVGV4dFVuaXRPZkdyYW51bGFyaXR5
KToKKyAgICAgICAgKFdlYkNvcmU6Om5leHRDaGFyYWN0ZXJCb3VuZGFyeUluRGlyZWN0aW9uKToK
KyAgICAgICAgKFdlYkNvcmU6Om5leHRXb3JkQm91bmRhcnlJbkRpcmVjdGlvbik6CisgICAgICAg
IChXZWJDb3JlOjpuZXh0U2VudGVuY2VCb3VuZGFyeUluRGlyZWN0aW9uKToKKyAgICAgICAgKFdl
YkNvcmU6Om5leHRMaW5lQm91bmRhcnlJbkRpcmVjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpu
ZXh0UGFyYWdyYXBoQm91bmRhcnlJbkRpcmVjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpuZXh0
RG9jdW1lbnRCb3VuZGFyeUluRGlyZWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OnBvc2l0aW9u
T2ZOZXh0Qm91bmRhcnlPZkdyYW51bGFyaXR5KToKKyAgICAgICAgKFdlYkNvcmU6OmVuY2xvc2lu
Z1RleHRVbml0T2ZHcmFudWxhcml0eSk6CisgICAgICAgIChXZWJDb3JlOjpkaXN0YW5jZUJldHdl
ZW5Qb3NpdGlvbnMpOgorICAgICAgICAoV2ViQ29yZTo6d29yZFJhbmdlRnJvbVBvc2l0aW9uKToK
KyAgICAgICAgKFdlYkNvcmU6OmNsb3Nlc3RXb3JkQm91bmRhcnlGb3JQb3NpdGlvbik6CisgICAg
ICAgICogZWRpdGluZy9WaXNpYmxlVW5pdHMuaDoKKyAgICAgICAgKiBlZGl0aW5nL2lvcy9EaWN0
YXRpb25Db21tYW5kSU9TLmNwcDogQWRkZWQuCisgICAgICAgICogZWRpdGluZy9pb3MvRGljdGF0
aW9uQ29tbWFuZElPUy5oOiBBZGRlZC4KKyAgICAgICAgKiBlZGl0aW5nL21hYy9GcmFtZVNlbGVj
dGlvbk1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lU2VsZWN0aW9uOjpub3RpZnlBY2Nl
c3NpYmlsaXR5Rm9yU2VsZWN0aW9uQ2hhbmdlKToKKyAgICAgICAgKiBmaWxlYXBpL0FzeW5jRmls
ZVN0cmVhbS5jcHA6CisgICAgICAgICogZ2VuZXJhdGUtZXhwb3J0LWZpbGU6IEFkZGVkLgorICAg
ICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JDb3VudGVycy5oOgorICAgICAgICAqIGluc3BlY3Rv
ci9JbnNwZWN0b3JGcm9udGVuZEhvc3QuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9y
UGFnZUFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclBhZ2VBZ2VudDo6c2V0
RGV2aWNlT3JpZW50YXRpb25PdmVycmlkZSk6CisgICAgICAgICogbWFrZS1leHBvcnQtZmlsZS1n
ZW5lcmF0b3I6CisgICAgICAgICogcGx1Z2lucy9QbHVnaW5QYWNrYWdlLmg6CisgICAgICAgICog
cGx1Z2lucy9QbHVnaW5WaWV3QmFzZS5oOgorICAgICAgICAoV2ViQ29yZTo6UGx1Z2luVmlld0Jh
c2U6OndpbGxQcm92aWRlUGx1Z2luTGF5ZXIpOgorICAgICAgICAoV2ViQ29yZTo6UGx1Z2luVmll
d0Jhc2U6OmF0dGFjaFBsdWdpbkxheWVyKToKKyAgICAgICAgKFdlYkNvcmU6OlBsdWdpblZpZXdC
YXNlOjpkZXRhY2hQbHVnaW5MYXllcik6CisgICAgICAgICogc3R5bGUvU3R5bGVSZXNvbHZlRm9y
RG9jdW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGU6OnJlc29sdmVGb3JEb2N1bWVu
dCk6CisgICAgICAgICogc3R5bGUvU3R5bGVSZXNvbHZlVHJlZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpTdHlsZTo6ZWxlbWVudEltcGxpY2l0VmlzaWJpbGl0eSk6CisgICAgICAgICogdGVzdGlu
Zy9JbnRlcm5hbHMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW50ZXJuYWxzOjpnZXRDdXJyZW50
Q3Vyc29ySW5mbyk6CisgICAgICAgIChXZWJDb3JlOjpJbnRlcm5hbHM6OmlzU2VsZWN0UG9wdXBW
aXNpYmxlKToKKyAgICAgICAgKiB3b3JrZXJzL1dvcmtlclRocmVhZC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpXb3JrZXJUaHJlYWQ6OndvcmtlclRocmVhZCk6CisKIDIwMTQtMDEtMDggIERhbmll
bCBCYXRlcyAgPGRhYmF0ZXNAYXBwbGUuY29tPgogCiAgICAgICAgIFtpT1NdIFVwc3RyZWFtIFdl
YkNvcmUvcGxhdGZvcm0gY2hhbmdlcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VM
b2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCA4MDYyNjM3YzVjYWY2MDI2MmZmMTA1
NWFmMTJkNjAwYTNjOTY4MzExLi5jZDY2Yjc2OGU4NDBjYmM4MzY5ZTVhZDQyNWUxYTU2YjkwNTA1
ZmNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2Vi
S2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyIEBACisyMDE0LTAxLTA5ICBEYW5pZWwgQmF0ZXMg
IDxkYWJhdGVzQGFwcGxlLmNvbT4KKworICAgICAgICBbaU9TXSBVcHN0cmVhbSBXZWJDb3JlIGFu
ZCBUb29scyBtaXNjZWxsYW5lb3VzIGNoYW5nZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTEyNjY5OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgICogV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6
CisKIDIwMTQtMDEtMDggIFJ5dWFuIENob2kgIDxyeXVhbi5jaG9pQHNhbXN1bmcuY29tPgogCiAg
ICAgICAgIFtFRkxdIE1lcmdlIGV3a192aWV3X3NpbmdsZSBpbnRvIGV3a192aWV3CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L21hYy9DaGFu
Z2VMb2cKaW5kZXggNGMxM2JjNzQyYTBiODkzOTk2NmJkMTAwNTY1YjY5ODA1NTFhOGVhMS4uZmQw
NTkzOTI2YWUxNDlhZWIyMzQyOWVkY2QwNGViNGE0ZTVmYzcyNSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9tYWMvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwpA
QCAtMSwzICsxLDEzIEBACisyMDE0LTAxLTA5ICBEYW5pZWwgQmF0ZXMgIDxkYWJhdGVzQGFwcGxl
LmNvbT4KKworICAgICAgICBbaU9TXSBVcHN0cmVhbSBXZWJDb3JlIGFuZCBUb29scyBtaXNjZWxs
YW5lb3VzIGNoYW5nZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTEyNjY5OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgICogTWlncmF0ZUhlYWRlcnMubWFrZToKKyAgICAgICAgKiBzY3J1Yi1pZmRlZnMucGw6
IEFkZGVkLgorCiAyMDE0LTAxLTA4ICBBbmRlcnMgQ2FybHNzb24gIDxhbmRlcnNjYUBhcHBsZS5j
b20+CiAKICAgICAgICAgQWRkIFdURjo6U3RyaW5nVmlldyBhbmQgdXNlIGl0IGZvciBncmFtbWFy
IGNoZWNraW5nCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Db25maWd1cmF0aW9ucy9CYXNl
LnhjY29uZmlnIGIvU291cmNlL1dlYkNvcmUvQ29uZmlndXJhdGlvbnMvQmFzZS54Y2NvbmZpZwpp
bmRleCBmZDRmNjBiODFhYjIyYjM3Mjc5OTc4ZDRmNjNiMDE5N2UyNjI1NDFlLi4wMjIxMTUxMmQ4
ZjI2NWFjOTIzNmY4MGNmYzQ3ZjJiNDMzMDA3NGM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Db25maWd1cmF0aW9ucy9CYXNlLnhjY29uZmlnCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NvbmZp
Z3VyYXRpb25zL0Jhc2UueGNjb25maWcKQEAgLTIxLDYgKzIxLDggQEAKIC8vIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQogLy8gT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4gCiAKKyNpbmNsdWRlICJpT1MueGNjb25maWciCisKIENMQU5HX0NY
WF9MQU5HVUFHRV9TVEFOREFSRCA9IGdudSsrMHg7CiBDTEFOR19DWFhfTElCUkFSWSA9IGxpYmMr
KzsKIENMQU5HX1dBUk5fQk9PTF9DT05WRVJTSU9OID0gWUVTOwpAQCAtNTYsNiArNTgsNyBAQCBH
Q0NfV0FSTl82NF9UT18zMl9CSVRfQ09OVkVSU0lPTiA9ICQoR0NDX1dBUk5fNjRfVE9fMzJfQklU
X0NPTlZFUlNJT05fJChDVVJSRU5UXwogR0NDX1dBUk5fNjRfVE9fMzJfQklUX0NPTlZFUlNJT05f
ID0gWUVTOwogR0NDX1dBUk5fNjRfVE9fMzJfQklUX0NPTlZFUlNJT05fYXJtdjcgPSBZRVM7CiBH
Q0NfV0FSTl82NF9UT18zMl9CSVRfQ09OVkVSU0lPTl9hcm12N3MgPSBZRVM7CitHQ0NfV0FSTl82
NF9UT18zMl9CSVRfQ09OVkVSU0lPTl9hcm02NCA9IE5POwogR0NDX1dBUk5fNjRfVE9fMzJfQklU
X0NPTlZFUlNJT05faTM4NiA9IFlFUzsKIEdDQ19XQVJOXzY0X1RPXzMyX0JJVF9DT05WRVJTSU9O
X3g4Nl82NCA9IE5POwogR0NDX1dBUk5fQUJPVVRfREVQUkVDQVRFRF9GVU5DVElPTlMgPSBOTzsK
QEAgLTgyLDcgKzg1LDEwIEBAIERFQlVHX0RFRklORVNfbm9ybWFsID0gTkRFQlVHOwogREVCVUdf
REVGSU5FUyA9ICQoREVCVUdfREVGSU5FU18kKENVUlJFTlRfVkFSSUFOVCkpOwogCiBHQ0NfT1BU
SU1JWkFUSU9OX0xFVkVMID0gJChHQ0NfT1BUSU1JWkFUSU9OX0xFVkVMXyQoQ1VSUkVOVF9WQVJJ
QU5UKSk7Ci1HQ0NfT1BUSU1JWkFUSU9OX0xFVkVMX25vcm1hbCA9IDI7CitHQ0NfT1BUSU1JWkFU
SU9OX0xFVkVMX25vcm1hbCA9ICQoR0NDX09QVElNSVpBVElPTl9MRVZFTF9ub3JtYWxfJChQTEFU
Rk9STV9OQU1FKSk7CitHQ0NfT1BUSU1JWkFUSU9OX0xFVkVMX25vcm1hbF9pcGhvbmVvcyA9IDM7
CitHQ0NfT1BUSU1JWkFUSU9OX0xFVkVMX25vcm1hbF9pcGhvbmVzaW11bGF0b3IgPSAzOworR0ND
X09QVElNSVpBVElPTl9MRVZFTF9ub3JtYWxfbWFjb3N4ID0gMjsKIEdDQ19PUFRJTUlaQVRJT05f
TEVWRUxfZGVidWcgPSAwOwogCiBTVFJJUF9JTlNUQUxMRURfUFJPRFVDVCA9ICQoU1RSSVBfSU5T
VEFMTEVEX1BST0RVQ1RfJChDVVJSRU5UX1ZBUklBTlQpKTsKQEAgLTkzLDcgKzk5LDkgQEAgREVB
RF9DT0RFX1NUUklQUElOR19kZWJ1ZyA9IE5POwogREVBRF9DT0RFX1NUUklQUElOR19ub3JtYWwg
PSBZRVM7CiBERUFEX0NPREVfU1RSSVBQSU5HID0gJChERUFEX0NPREVfU1RSSVBQSU5HXyQoQ1VS
UkVOVF9WQVJJQU5UKSk7CiAKLVNFQ1RPUkRFUl9GTEFHUyA9IC1XbCwtb3JkZXJfZmlsZSxXZWJD
b3JlLm9yZGVyOworU0VDVE9SREVSX0ZMQUdTID0gJChTRUNUT1JERVJfRkxBR1NfJChQTEFURk9S
TV9OQU1FKSk7CitTRUNUT1JERVJfRkxBR1NfaXBob25lb3MgPSAtV2wsLW9yZGVyX2ZpbGUsJChT
REtST09UKS9BcHBsZUludGVybmFsL09yZGVyRmlsZXMvV2ViQ29yZS5vcmRlcjsKK1NFQ1RPUkRF
Ul9GTEFHU19tYWNvc3ggPSAtV2wsLW9yZGVyX2ZpbGUsV2ViQ29yZS5vcmRlcjsKIAogV0VCQ09S
RV9TUUxJVEUzX0hFQURFUl9TRUFSQ0hfUEFUSFMgPSAkKE5FWFRfUk9PVCkvdXNyL2xvY2FsL2lu
Y2x1ZGUvV2ViQ29yZVNRTGl0ZTM7CiBTUUxJVEUzX0hFQURFUl9TRUFSQ0hfUEFUSFMgPSAkKFNR
TElURTNfSEVBREVSX1NFQVJDSF9QQVRIU18kKFBMQVRGT1JNX05BTUUpKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL0NvbmZpZ3VyYXRpb25zL1dlYkNvcmUueGNjb25maWcgYi9Tb3VyY2Uv
V2ViQ29yZS9Db25maWd1cmF0aW9ucy9XZWJDb3JlLnhjY29uZmlnCmluZGV4IDEwMDk1NzA4NDY4
NDMyZTRhZjkzZmRhYzE3YmFiYTAwNDIzYWE0YWQuLjNhYjIzMjJiZDYwM2FjODJlNGQwY2ExZGRk
ZTMyY2ViYjRhYmMyYjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NvbmZpZ3VyYXRpb25z
L1dlYkNvcmUueGNjb25maWcKKysrIGIvU291cmNlL1dlYkNvcmUvQ29uZmlndXJhdGlvbnMvV2Vi
Q29yZS54Y2NvbmZpZwpAQCAtMzQsNyArMzQsMTAgQEAgRVhQT1JURURfU1lNQk9MU19GSUxFX2kz
ODYgPSAkKEVYUE9SVEVEX1NZTUJPTFNfRklMRV9pMzg2XyQoUExBVEZPUk1fTkFNRSkpOwogRVhQ
T1JURURfU1lNQk9MU19GSUxFX2kzODZfaXBob25lc2ltdWxhdG9yID0gJChCVUlMVF9QUk9EVUNU
U19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvV2ViQ29yZS5MUDY0LmkzODYuZXhwOwogRVhQ
T1JURURfU1lNQk9MU19GSUxFX2kzODZfbWFjb3N4ID0gJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rl
cml2ZWRTb3VyY2VzL1dlYkNvcmUvV2ViQ29yZS5leHA7CiBFWFBPUlRFRF9TWU1CT0xTX0ZJTEVf
cHBjID0gJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvV2ViQ29y
ZS5leHA7Ci1FWFBPUlRFRF9TWU1CT0xTX0ZJTEVfeDg2XzY0ID0gJChCVUlMVF9QUk9EVUNUU19E
SVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvV2ViQ29yZS5MUDY0LmV4cDsKK0VYUE9SVEVEX1NZ
TUJPTFNfRklMRV9wcGM2NCA9ICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9X
ZWJDb3JlL1dlYkNvcmUuTFA2NC5leHA7CitFWFBPUlRFRF9TWU1CT0xTX0ZJTEVfeDg2XzY0ID0g
JChFWFBPUlRFRF9TWU1CT0xTX0ZJTEVfeDg2XzY0XyQoUExBVEZPUk1fTkFNRSkpOworRVhQT1JU
RURfU1lNQk9MU19GSUxFX3g4Nl82NF9pcGhvbmVzaW11bGF0b3IgPSAkKEJVSUxUX1BST0RVQ1RT
X0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9XZWJDb3JlLkxQNjQueDg2XzY0LmV4cDsKK0VY
UE9SVEVEX1NZTUJPTFNfRklMRV94ODZfNjRfbWFjb3N4ID0gJChCVUlMVF9QUk9EVUNUU19ESVIp
L0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvV2ViQ29yZS5MUDY0LmV4cDsKIEdDQ19QUkVGSVhfSEVB
REVSID0gV2ViQ29yZVByZWZpeC5oOwogR0NDX1BSRVBST0NFU1NPUl9ERUZJTklUSU9OUyA9ICQo
REVCVUdfREVGSU5FUykgJChGRUFUVVJFX0RFRklORVMpIFdFQktJVF9WRVJTSU9OX01JTl9SRVFV
SVJFRD1XRUJLSVRfVkVSU0lPTl9MQVRFU1QgJChHQ0NfUFJFUFJPQ0VTU09SX0RFRklOSVRJT05T
KTsKIEZSQU1FV09SS19TRUFSQ0hfUEFUSFMgPSAkKEZSQU1FV09SS19TRUFSQ0hfUEFUSFNfJChQ
TEFURk9STV9OQU1FKSk7CkBAIC01MSw3ICs1NCw5IEBAIE9USEVSX0NQTFVTUExVU0ZMQUdTID0g
JChPVEhFUl9DRkxBR1MpOwogU1RBR0VEX0ZSQU1FV09SS1NfU0VBUkNIX1BBVEggPSAkKFNUQUdF
RF9GUkFNRVdPUktTX1NFQVJDSF9QQVRIXyQoVVNFX1NUQUdJTkdfSU5TVEFMTF9QQVRIKSk7CiBT
VEFHRURfRlJBTUVXT1JLU19TRUFSQ0hfUEFUSF9ZRVMgPSAkKE5FWFRfUk9PVCkkKFNZU1RFTV9M
SUJSQVJZX0RJUikvU3RhZ2VkRnJhbWV3b3Jrcy9TYWZhcmk7CiAKLUhFQURFUl9TRUFSQ0hfUEFU
SFMgPSBGb3J3YXJkaW5nSGVhZGVycyBpY3UgL3Vzci9pbmNsdWRlL2xpYnhzbHQgL3Vzci9pbmNs
dWRlL2xpYnhtbDIgIiR7QlVJTFRfUFJPRFVDVFNfRElSfS9EZXJpdmVkU291cmNlcy9XZWJDb3Jl
IiAiJHtCVUlMVF9QUk9EVUNUU19ESVJ9L3Vzci9sb2NhbC9pbmNsdWRlIiAkKEhFQURFUl9TRUFS
Q0hfUEFUSFMpOworV0VCS0lUQURESVRJT05TX0hFQURFUl9TRUFSQ0hfUEFUSFMgPSAkKEJVSUxU
X1BST0RVQ1RTX0RJUikvdXNyL2xvY2FsL2luY2x1ZGUvV2ViS2l0QWRkaXRpb25zICQoU0RLUk9P
VCkvdXNyL2xvY2FsL2luY2x1ZGUvV2ViS2l0QWRkaXRpb25zOworCitIRUFERVJfU0VBUkNIX1BB
VEhTID0gRm9yd2FyZGluZ0hlYWRlcnMgaWN1IC91c3IvaW5jbHVkZS9saWJ4c2x0IC91c3IvaW5j
bHVkZS9saWJ4bWwyICQoU1FMSVRFM19IRUFERVJfU0VBUkNIX1BBVEhTKSAiJHtCVUlMVF9QUk9E
VUNUU19ESVJ9L0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUiICIkKEJVSUxUX1BST0RVQ1RTX0RJUikv
dXNyL2xvY2FsL2luY2x1ZGUiICQoV0VCS0lUQURESVRJT05TX0hFQURFUl9TRUFSQ0hfUEFUSFMp
ICQoSEVBREVSX1NFQVJDSF9QQVRIUyk7CiBJTkZPUExJU1RfRklMRSA9IEluZm8ucGxpc3Q7CiBJ
TlNUQUxMX1BBVEggPSAkKElOU1RBTExfUEFUSF8kKFBMQVRGT1JNX05BTUUpKTsKIElOU1RBTExf
UEFUSF9pcGhvbmVvcyA9ICQoU1lTVEVNX0xJQlJBUllfRElSKS9Qcml2YXRlRnJhbWV3b3JrczsK
QEAgLTY4LDggKzczLDggQEAgSU5TVEFMTEhEUlNfU0NSSVBUX1BIQVNFID0gWUVTOwogUFJPRFVD
VF9OQU1FID0gV2ViQ29yZTsKIE9USEVSX0xERkxBR1NfQkFTRSA9IC1sc3FsaXRlMyAtbG9iamMg
LWxBTkdMRSAtYWxsb3dhYmxlX2NsaWVudCBXZWJDb3JlVGVzdFN1cHBvcnQ7CiBPVEhFUl9MREZM
QUdTID0gJChpbmhlcml0ZWQpICQoT1RIRVJfTERGTEFHU18kKFBMQVRGT1JNX05BTUUpKTsKLU9U
SEVSX0xERkxBR1NfaXBob25lb3MgPSAkKE9USEVSX0xERkxBR1NfQkFTRSkgLWZyYW1ld29yayBD
Rk5ldHdvcmsgLWZyYW1ld29yayBDb3JlRm91bmRhdGlvbiAtZnJhbWV3b3JrIENvcmVHcmFwaGlj
cyAtZnJhbWV3b3JrIENvcmVUZXh0IC1mcmFtZXdvcmsgRm91bmRhdGlvbiAtZnJhbWV3b3JrIEdy
YXBoaWNzU2VydmljZXMgLWZyYW1ld29yayBJbWFnZUlPIC1mcmFtZXdvcmsgUXVhcnR6Q29yZTsK
LU9USEVSX0xERkxBR1NfaXBob25lc2ltdWxhdG9yID0gJChPVEhFUl9MREZMQUdTX2lwaG9uZW9z
KTsKK09USEVSX0xERkxBR1NfaXBob25lb3MgPSAkKE9USEVSX0xERkxBR1NfaXBob25lc2ltdWxh
dG9yKSAtZnJhbWV3b3JrIElPU3VyZmFjZTsKK09USEVSX0xERkxBR1NfaXBob25lc2ltdWxhdG9y
ID0gJChPVEhFUl9MREZMQUdTX0JBU0UpIC1mcmFtZXdvcmsgQWNjZWxlcmF0ZSAtZnJhbWV3b3Jr
IENGTmV0d29yayAtZnJhbWV3b3JrIENvcmVGb3VuZGF0aW9uIC1mcmFtZXdvcmsgQ29yZUdyYXBo
aWNzIC1mcmFtZXdvcmsgQ29yZVRleHQgLWZyYW1ld29yayBGb3VuZGF0aW9uIC1mcmFtZXdvcmsg
R3JhcGhpY3NTZXJ2aWNlcyAtZnJhbWV3b3JrIEltYWdlSU8gLWZyYW1ld29yayBPcGVuR0xFUyAt
ZnJhbWV3b3JrIFF1YXJ0ekNvcmUgLWxNb2JpbGVHZXN0YWx0OwogT1RIRVJfTERGTEFHU19tYWNv
c3ggPSAkKE9USEVSX0xERkxBR1NfQkFTRSkgLXN1Yl9saWJyYXJ5IGxpYm9iamMgLXVtYnJlbGxh
IFdlYktpdCAtYWxsb3dhYmxlX2NsaWVudCBXZWJLaXQyIC1mcmFtZXdvcmsgSU9TdXJmYWNlOwog
CiBOT1JNQUxfV0VCQ09SRV9GUkFNRVdPUktTX0RJUiA9ICQoTk9STUFMX1dFQkNPUkVfRlJBTUVX
T1JLU19ESVJfJChQTEFURk9STV9OQU1FKSk7CkBAIC0xMDIsMTAgKzEwNywxMyBAQCBQUk9EVUNU
SU9OX0ZSQU1FV09SS1NfRElSX21hY29zeF9VU0VfU1RBR0lOR19JTlNUQUxMX1BBVEhfWUVTID0g
JChORVhUX1JPT1QpJChTWQogSkFWQVNDUklQVENPUkVfUFJJVkFURV9IRUFERVJTX0RJUiA9ICQo
SkFWQVNDUklQVENPUkVfUFJJVkFURV9IRUFERVJTX0RJUl8kKENPTkZJR1VSQVRJT04pKTsKIEpB
VkFTQ1JJUFRDT1JFX1BSSVZBVEVfSEVBREVSU19ESVJfUmVsZWFzZSA9ICQoSkFWQVNDUklQVENP
UkVfUFJJVkFURV9IRUFERVJTX2VuZ2luZWVyaW5nKTsKIEpBVkFTQ1JJUFRDT1JFX1BSSVZBVEVf
SEVBREVSU19ESVJfRGVidWcgPSAkKEpBVkFTQ1JJUFRDT1JFX1BSSVZBVEVfSEVBREVSU19lbmdp
bmVlcmluZyk7Ci1KQVZBU0NSSVBUQ09SRV9QUklWQVRFX0hFQURFUlNfRElSX1Byb2R1Y3Rpb24g
PSAkKFNES1JPT1QpJChQUk9EVUNUSU9OX0ZSQU1FV09SS1NfRElSKS9KYXZhU2NyaXB0Q29yZS5m
cmFtZXdvcmsvUHJpdmF0ZUhlYWRlcnM7CitKQVZBU0NSSVBUQ09SRV9QUklWQVRFX0hFQURFUlNf
RElSX1Byb2R1Y3Rpb24gPSAkKEpBVkFTQ1JJUFRDT1JFX1BSSVZBVEVfSEVBREVSU19Qcm9kdWN0
aW9uXyQoUExBVEZPUk1fTkFNRSkpOworSkFWQVNDUklQVENPUkVfUFJJVkFURV9IRUFERVJTX0RJ
Ul9Qcm9kdWN0aW9uX2lwaG9uZW9zID0gJChTREtST09UKS8kKFNZU1RFTV9MSUJSQVJZX0RJUikv
RnJhbWV3b3Jrcy9KYXZhU2NyaXB0Q29yZS5mcmFtZXdvcmsvSGVhZGVyczsKK0pBVkFTQ1JJUFRD
T1JFX1BSSVZBVEVfSEVBREVSU19ESVJfUHJvZHVjdGlvbl9pcGhvbmVzaW11bGF0b3IgPSAkKEpB
VkFTQ1JJUFRDT1JFX1BSSVZBVEVfSEVBREVSU19ESVJfUHJvZHVjdGlvbl9pcGhvbmVvcyk7CitK
QVZBU0NSSVBUQ09SRV9QUklWQVRFX0hFQURFUlNfRElSX1Byb2R1Y3Rpb25fbWFjb3N4ID0gJChT
REtST09UKSQoUFJPRFVDVElPTl9GUkFNRVdPUktTX0RJUikvSmF2YVNjcmlwdENvcmUuZnJhbWV3
b3JrL1ByaXZhdGVIZWFkZXJzOwogSkFWQVNDUklQVENPUkVfUFJJVkFURV9IRUFERVJTX2VuZ2lu
ZWVyaW5nID0gJChCVUlMVF9QUk9EVUNUU19ESVIpL0phdmFTY3JpcHRDb3JlLmZyYW1ld29yay9Q
cml2YXRlSGVhZGVyczsKIAogRVhDTFVERURfU09VUkNFX0ZJTEVfTkFNRVMgPSAkKEVYQ0xVREVE
X1NPVVJDRV9GSUxFX05BTUVTXyQoUExBVEZPUk1fTkFNRSkpOwotRVhDTFVERURfU09VUkNFX0ZJ
TEVfTkFNRVNfaXBob25lb3MgPSAqLnRpZmYgKkN1cnNvci5wbmcgQ3Vyc29yLmNwcCBDdXJzb3JN
YWMubW0gRXZlbnRIYW5kbGVyTWFjLm1tIEhUTUxDb252ZXJ0ZXIubW0gS2lsbFJpbmdNYWMubW0g
UGxhdGZvcm1FdmVudEZhY3RvcnlNYWMubW0gU1NMS2V5R2VuZXJhdG9yTWFjLmNwcCBTZWFyY2hQ
b3B1cE1lbnVNYWMubW0gU2hhcmVkVGltZXJNYWMubW0gV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJv
bGxlci5tbSBXZWJWaWRlb0Z1bGxzY3JlZW5IVURXaW5kb3dDb250cm9sbGVyLm1tIFdlYldpbmRv
d0FuaW1hdGlvbi5tbTsKK0VYQ0xVREVEX1NPVVJDRV9GSUxFX05BTUVTX2lwaG9uZW9zID0gKi50
aWZmICpDdXJzb3IucG5nIEFjY2Vzc2liaWxpdHlPYmplY3RNYWMubW0gQVhPYmplY3RDYWNoZU1h
Yy5tbSBDbGlwYm9hcmRNYWMubW0gQ29sb3JNYWMubW0gQ3Vyc29yLmNwcCBDdXJzb3JNYWMubW0g
RWRpdG9yTWFjLm1tIEV2ZW50SGFuZGxlck1hYy5tbSBFdmVudExvb3BNYWMubW0gR2VvbG9jYXRp
b25TZXJ2aWNlTWFjLm1tIEdyYXBoaWNzQ29udGV4dDNET3BlbkdMRVMuY3BwIEljb25EYXRhYmFz
ZS5jcHAgSWNvbk1hYy5tbSBLZXlFdmVudE1hYy5tbSBLaWxsUmluZ01hYy5tbSBMb2NhbEN1cnJl
bnRHcmFwaGljc0NvbnRleHQubW0gTUlNRVR5cGVSZWdpc3RyeU1hYy5tbSBNZWRpYVBsYXllclBy
aXZhdGVRVEtpdC5tbSBOU1Njcm9sbGVySW1wRGV0YWlscy5tbSBOZXR3b3JrU3RhdGVOb3RpZmll
ck1hYy5jcHAgUGFzdGVib2FyZE1hYy5tbSBQbGF0Zm9ybUV2ZW50RmFjdG9yeU1hYy5tbSBQbGF0
Zm9ybU1vdXNlRXZlbnRNYWMubW0gUGxhdGZvcm1QYXN0ZWJvYXJkTWFjLm1tIFBsYXRmb3JtU2Ny
ZWVuTWFjLm1tIFBsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXJNYWMubW0gUGx1Z2luTWFpblRocmVh
ZFNjaGVkdWxlci5jcHAgUnVuTG9vcE1hYy5tbSBTU0xLZXlHZW5lcmF0b3JNYWMuY3BwIFNjcm9s
bFZpZXdNYWMubW0gU2Nyb2xsYmFyVGhlbWVNYWMubW0gU2hhcmVkVGltZXJNYWMubW0gU291bmRN
YWMubW0gU3lzdGVtVGltZU1hYy5jcHAgVGhlbWVNYWMubW0gVGhyZWFkQ2hlY2subW0gV2ViQWNj
ZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJNYWMubW0gV2ViQ29yZVN5c3RlbUludGVyZmFjZS5tbSBX
ZWJDb3JlVVJMUmVzcG9uc2UubW0gV2ViQ29yZVZpZXcubSBXZWJGb250Q2FjaGUubW0gV2ViVmlk
ZW9GdWxsc2NyZWVuQ29udHJvbGxlci5tbSBXZWJWaWRlb0Z1bGxzY3JlZW5IVURXaW5kb3dDb250
cm9sbGVyLm1tIFdlYldpbmRvd0FuaW1hdGlvbi5tbSBXaGVlbEV2ZW50TWFjLm1tIFdpZGdldE1h
Yy5tbSBtYWMvTGF5ZXJQb29sLm1tIERpc3BsYXlSZWZyZXNoTW9uaXRvck1hYy5tbTsKIEVYQ0xV
REVEX1NPVVJDRV9GSUxFX05BTUVTX2lwaG9uZXNpbXVsYXRvciA9ICQoRVhDTFVERURfU09VUkNF
X0ZJTEVfTkFNRVNfaXBob25lb3MpOwogRVhDTFVERURfU09VUkNFX0ZJTEVfTkFNRVNfbWFjb3N4
ID0gKklPUy5oICpJT1MuY3BwICpJT1MubW0gS2lsbFJpbmdOb25lLmNwcDsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL0NvbmZpZ3VyYXRpb25zL1dlYkNvcmVUZXN0U3VwcG9ydC54Y2NvbmZp
ZyBiL1NvdXJjZS9XZWJDb3JlL0NvbmZpZ3VyYXRpb25zL1dlYkNvcmVUZXN0U3VwcG9ydC54Y2Nv
bmZpZwppbmRleCA4NGJlNzYzNmFmNDA0Y2Y5YWRiNmRkZjhjOWM3NGM5ODVmMjkyNTIxLi42Y2U4
MGJiNDI0YmQ3NDhhY2Q1OWFkYzEwMzRmZThhM2Q2MTRjM2IwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9Db25maWd1cmF0aW9ucy9XZWJDb3JlVGVzdFN1cHBvcnQueGNjb25maWcKKysrIGIv
U291cmNlL1dlYkNvcmUvQ29uZmlndXJhdGlvbnMvV2ViQ29yZVRlc3RTdXBwb3J0LnhjY29uZmln
CkBAIC0yNiwxMCArMjYsMTUgQEAKIFBSSVZBVEVfSEVBREVSU19GT0xERVJfUEFUSCA9ICQoUFJJ
VkFURV9IRUFERVJTX0ZPTERFUl9QQVRIXyQoQ09ORklHVVJBVElPTikpOwogUFJJVkFURV9IRUFE
RVJTX0ZPTERFUl9QQVRIX0RlYnVnID0gV2ViQ29yZVRlc3RTdXBwb3J0OwogUFJJVkFURV9IRUFE
RVJTX0ZPTERFUl9QQVRIX1JlbGVhc2UgPSAkKFBSSVZBVEVfSEVBREVSU19GT0xERVJfUEFUSF9E
ZWJ1Zyk7Ci1QUklWQVRFX0hFQURFUlNfRk9MREVSX1BBVEhfUHJvZHVjdGlvbiA9IC91c3IvbG9j
YWwvaW5jbHVkZS9XZWJDb3JlVGVzdFN1cHBvcnQ7CitQUklWQVRFX0hFQURFUlNfRk9MREVSX1BB
VEhfUHJvZHVjdGlvbiA9ICQoUFJJVkFURV9IRUFERVJTX0ZPTERFUl9QQVRIX1Byb2R1Y3Rpb25f
JChQTEFURk9STV9OQU1FKSk7CitQUklWQVRFX0hFQURFUlNfRk9MREVSX1BBVEhfUHJvZHVjdGlv
bl9pcGhvbmVvcyA9IC91c3IvbG9jYWwvaW5jbHVkZS9XZWJDb3JlVGVzdFN1cHBvcnQ7CitQUklW
QVRFX0hFQURFUlNfRk9MREVSX1BBVEhfUHJvZHVjdGlvbl9pcGhvbmVzaW11bGF0b3IgPSAkKElO
RElHT19JTlNUQUxMX1BBVEhfUFJFRklYKSQoUFJJVkFURV9IRUFERVJTX0ZPTERFUl9QQVRIX1By
b2R1Y3Rpb25faXBob25lb3MpOworUFJJVkFURV9IRUFERVJTX0ZPTERFUl9QQVRIX1Byb2R1Y3Rp
b25fbWFjb3N4ID0gL3Vzci9sb2NhbC9pbmNsdWRlL1dlYkNvcmVUZXN0U3VwcG9ydDsKIAotSU5T
VEFMTF9QQVRIID0gJChJTlNUQUxMX1BBVEhfJChDT05GSUdVUkFUSU9OKSk7Ci1JTlNUQUxMX1BB
VEhfUHJvZHVjdGlvbiA9IC91c3IvbG9jYWwvbGliOworSU5TVEFMTF9QQVRIID0gJChJTlNUQUxM
X1BBVEhfJChDT05GSUdVUkFUSU9OKV8kKFBMQVRGT1JNX05BTUUpKTsKK0lOU1RBTExfUEFUSF9Q
cm9kdWN0aW9uX2lwaG9uZW9zID0gL3Vzci9sb2NhbC9saWI7CitJTlNUQUxMX1BBVEhfUHJvZHVj
dGlvbl9pcGhvbmVzaW11bGF0b3IgPSAkKElORElHT19JTlNUQUxMX1BBVEhfUFJFRklYKSQoSU5T
VEFMTF9QQVRIX1Byb2R1Y3Rpb25faXBob25lb3MpOworSU5TVEFMTF9QQVRIX1Byb2R1Y3Rpb25f
bWFjb3N4ID0gL3Vzci9sb2NhbC9saWI7CiAKIFNLSVBfSU5TVEFMTCA9ICQoU0tJUF9JTlNUQUxM
XyQoRk9SQ0VfVE9PTF9JTlNUQUxMKSk7CiBTS0lQX0lOU1RBTExfID0gWUVTOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvQ29uZmlndXJhdGlvbnMvaU9TLnhjY29uZmlnIGIvU291cmNlL1dl
YkNvcmUvQ29uZmlndXJhdGlvbnMvaU9TLnhjY29uZmlnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjAwYWUwZmYxZWI3
YmJkOTE3ZWZkNDc0YzQ4ZjFiMTZlY2I5ZDZmZDkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Db25maWd1cmF0aW9ucy9pT1MueGNjb25maWcKQEAgLTAsMCArMSwzIEBACisjaW5j
bHVkZSAiPERFVkVMT1BFUl9ESVI+L0FwcGxlSW50ZXJuYWwvWGNvZGVDb25maWcvQXNwZW5GYW1p
bHkueGNjb25maWciCisKK1VTRV9JTlRFUk5BTF9TREsgPSBZRVM7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtlIGIvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNv
dXJjZXMubWFrZQppbmRleCBjNDljN2E3OGViYzhhZmU3M2EyNWY1MWNmODBkMDlkMzZhZjAzNzdi
Li5lY2VjMjc1ZjU4ZGVkOTE0MzE4Yjk2ZDYwYmRmMWViZjIwODFkOTE0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtlCisrKyBiL1NvdXJjZS9XZWJDb3JlL0Rl
cml2ZWRTb3VyY2VzLm1ha2UKQEAgLTI4LDYgKzI4LDcgQEAKIAogVlBBVEggPSBcCiAgICAgJChX
ZWJDb3JlKSBcCisgICAgJChXZWJDb3JlKS9Nb2R1bGVzL2FpcnBsYXkgXAogICAgICQoV2ViQ29y
ZSkvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYSBcCiAgICAgJChXZWJDb3JlKS9Nb2R1bGVzL2dlb2xv
Y2F0aW9uIFwKICAgICAkKFdlYkNvcmUpL01vZHVsZXMvaW5kZXhlZGRiIFwKQEAgLTY3LDYgKzY4
LDcgQEAgVlBBVEggPSBcCiAjCiAKIEJJTkRJTkdfSURMUyA9IFwKKyAgICAkKFdlYkNvcmUpL01v
ZHVsZXMvYWlycGxheS9XZWJLaXRQbGF5YmFja1RhcmdldEF2YWlsYWJpbGl0eUV2ZW50LmlkbCBc
CiAgICAgJChXZWJDb3JlKS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5TWVzc2FnZUV2
ZW50LmlkbCBcCiAgICAgJChXZWJDb3JlKS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5
TmVlZGVkRXZlbnQuaWRsIFwKICAgICAkKFdlYkNvcmUpL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEv
TWVkaWFLZXlTZXNzaW9uLmlkbCBcCkBAIC03MjAsNiArNzIyLDEyIEBAIGlmbmVxICgkKFNES1JP
T1QpLCkKIAlTREtfRkxBR1M9LWlzeXNyb290ICQoU0RLUk9PVCkKIGVuZGlmCiAKK2lmZXEgKCQo
c2hlbGwgJChDQykgLWlzeXNyb290ICQoU0RLUk9PVCkgLXN0ZD1nbnUrKzExIC14IGMrKyAtRSAt
UCAtZE0gLUYgJChCVUlMVF9QUk9EVUNUU19ESVIpICQoRlJBTUVXT1JLX0ZMQUdTKSAkKEhFQURF
Ul9GTEFHUykgLWluY2x1ZGUgInd0Zi9QbGF0Zm9ybS5oIiAvZGV2L251bGwgfCBncmVwICcgV1RG
X1BMQVRGT1JNX0lPUyAnIHwgY3V0IC1kJyAnIC1mMyksIDEpCisgICAgV1RGX1BMQVRGT1JNX0lP
UyA9IDEKK2Vsc2UKKyAgICBXVEZfUExBVEZPUk1fSU9TID0gMAorZW5kaWYKKwogaWZlcSAoJChz
aGVsbCAkKENDKSAtc3RkPWdudSsrMTEgLXggYysrIC1FIC1QIC1kTSAkKFNES19GTEFHUykgJChG
UkFNRVdPUktfRkxBR1MpICQoSEVBREVSX0ZMQUdTKSAtaW5jbHVkZSAid3RmL1BsYXRmb3JtLmgi
IC9kZXYvbnVsbCB8IGdyZXAgRU5BQkxFX09SSUVOVEFUSU9OX0VWRU5UUyB8IGN1dCAtZCcgJyAt
ZjMpLCAxKQogICAgIEVOQUJMRV9PUklFTlRBVElPTl9FVkVOVFMgPSAxCiBlbmRpZgpAQCAtNzI4
LDYgKzczNiwyNSBAQCBpZmVxICgkKFBMQVRGT1JNX0ZFQVRVUkVfREVGSU5FUyksKQogUExBVEZP
Uk1fRkVBVFVSRV9ERUZJTkVTID0gQ29uZmlndXJhdGlvbnMvRmVhdHVyZURlZmluZXMueGNjb25m
aWcKIGVuZGlmCiAKK2lmZXEgKCQoV1RGX1BMQVRGT1JNX0lPUyksIDEpCisKK0FERElUSU9OQUxf
QklORElOR19JRExTID0gXAorCUdlc3R1cmVFdmVudC5pZGwgXAorCVRvdWNoLmlkbCBcCisJVG91
Y2hFdmVudC5pZGwgXAorCVRvdWNoTGlzdC5pZGwKKworQklORElOR19JRExTICs9ICQoQURESVRJ
T05BTF9CSU5ESU5HX0lETFMpCisKK2FsbCA6ICQoQURESVRJT05BTF9CSU5ESU5HX0lETFM6JS5p
ZGw9SlMlLmgpCisKK3ZwYXRoICUuaWRsICQoQlVJTFRfUFJPRFVDVFNfRElSKS91c3IvbG9jYWwv
aW5jbHVkZSAkKFNES1JPT1QpL3Vzci9sb2NhbC9pbmNsdWRlCisKKyQoQURESVRJT05BTF9CSU5E
SU5HX0lETFMpIDogJSA6IFdlYktpdEFkZGl0aW9ucy8lCisJY3AgJDwgLgorCitlbmRpZgorCiBl
bmRpZiAjIE1BQ09TCiAKIGlmbmRlZiBFTkFCTEVfT1JJRU5UQVRJT05fRVZFTlRTCkBAIC0xMTY0
LDE1ICsxMTkxLDUyIEBAIENoYXJzZXREYXRhLmNwcCA6IHBsYXRmb3JtL3RleHQvbWFjL21ha2Ut
Y2hhcnNldC10YWJsZS5wbCBwbGF0Zm9ybS90ZXh0L21hYy9jaGFyCiAKIGlmbmVxICgkKEFDVElP
TiksaW5zdGFsbGhkcnMpCiAKK2lmZXEgKCQoV1RGX1BMQVRGT1JNX0lPUyksMSkKKworaWZlcSAo
JChmaW5kc3RyaW5nIGFybXY2LCQoQVJDSFMpKSwgYXJtdjYpCisgICAgV0VCQ09SRV9FWFBPUlRf
RklMRVMgOj0gJChXRUJDT1JFX0VYUE9SVF9GSUxFUykgV2ViQ29yZS5MUDY0LmFybXY2LmV4cAor
ZW5kaWYKK2lmZXEgKCQoZmluZHN0cmluZyBhcm12N2YsJChBUkNIUykpLCBhcm12N2YpCisgICAg
V0VCQ09SRV9FWFBPUlRfRklMRVMgOj0gJChXRUJDT1JFX0VYUE9SVF9GSUxFUykgV2ViQ29yZS5M
UDY0LmFybXY3Zi5leHAKK2VuZGlmCitpZmVxICgkKGZpbmRzdHJpbmcgYXJtdjdzLCQoQVJDSFMp
KSwgYXJtdjdzKQorICAgIFdFQkNPUkVfRVhQT1JUX0ZJTEVTIDo9ICQoV0VCQ09SRV9FWFBPUlRf
RklMRVMpIFdlYkNvcmUuTFA2NC5hcm12N3MuZXhwCitlbmRpZgoraWZlcSAoJChmaW5kc3RyaW5n
IGFybXY3LCQoQVJDSFMpKSwgYXJtdjcpCisgICAgV0VCQ09SRV9FWFBPUlRfRklMRVMgOj0gJChX
RUJDT1JFX0VYUE9SVF9GSUxFUykgV2ViQ29yZS5MUDY0LmFybXY3LmV4cAorZW5kaWYKK2lmZXEg
KCQoZmluZHN0cmluZyBhcm02NCwkKEFSQ0hTKSksIGFybTY0KQorICAgIFdFQkNPUkVfRVhQT1JU
X0ZJTEVTIDo9ICQoV0VCQ09SRV9FWFBPUlRfRklMRVMpIFdlYkNvcmUuTFA2NC5hcm02NC5leHAK
K2VuZGlmCitpZmVxICgkKGZpbmRzdHJpbmcgaTM4NiwkKEFSQ0hTKSksIGkzODYpCisgICAgV0VC
Q09SRV9FWFBPUlRfRklMRVMgOj0gJChXRUJDT1JFX0VYUE9SVF9GSUxFUykgV2ViQ29yZS5MUDY0
LmkzODYuZXhwCitlbmRpZgoraWZlcSAoJChmaW5kc3RyaW5nIHg4Nl82NCwkKEFSQ0hTKSksIHg4
Nl82NCkKKyAgICBXRUJDT1JFX0VYUE9SVF9GSUxFUyA6PSAkKFdFQkNPUkVfRVhQT1JUX0ZJTEVT
KSBXZWJDb3JlLkxQNjQueDg2XzY0LmV4cAorZW5kaWYKKworYWxsIDogJChXRUJDT1JFX0VYUE9S
VF9GSUxFUykKKworV2ViQ29yZS4lLmV4cCA6IGdlbmVyYXRlLWV4cG9ydC1maWxlIFdlYkNvcmUu
ZXhwLmluCisJJF4gJEAKKworIyBTd2l0Y2ggTlNSZWN0LCBOU1NpemUgYW5kIE5TUG9pbnQgd2l0
aCB0aGVpciBDRyBjb3VudGVycGFydHMgZm9yIHRoZSA2NC1iaXQgZXhwb3J0cyBmaWxlLgorV2Vi
Q29yZS5MUDY0LiUuZXhwIDogV2ViQ29yZS4lLmV4cAorCWNhdCAkXiB8IHNlZCAtZSBzLzdfTlNS
ZWN0LzZDR1JlY3QvIC1lIHMvN19OU1NpemUvNkNHU2l6ZS8gLWUgcy84X05TUG9pbnQvN0NHUG9p
bnQvID4gJEAKKworZWxzZQorCiBhbGwgOiBXZWJDb3JlLmV4cCBXZWJDb3JlLkxQNjQuZXhwCiAK
IFdlYkNvcmUuZXhwIDogJChCVUlMVF9QUk9EVUNUU19ESVIpL1dlYkNvcmVFeHBvcnRGaWxlR2Vu
ZXJhdG9yCi0JJF4gPiAkQAorCSReIHwgZ3JlcCAtdiAnXiMgJyB8IHNlZCAtZSAncy9eIy8vJyA+
ICRACiAKICMgU3dpdGNoIE5TUmVjdCwgTlNTaXplIGFuZCBOU1BvaW50IHdpdGggdGhlaXIgQ0cg
Y291bnRlcnBhcnRzIGZvciB0aGUgNjQtYml0IGV4cG9ydHMgZmlsZS4KIFdlYkNvcmUuTFA2NC5l
eHAgOiBXZWJDb3JlLmV4cAogCWNhdCAkXiB8IHNlZCAtZSBzLzdfTlNSZWN0LzZDR1JlY3QvIC1l
IHMvN19OU1NpemUvNkNHU2l6ZS8gLWUgcy84X05TUG9pbnQvN0NHUG9pbnQvID4gJEAKIAorZW5k
aWYgIyBXVEZfUExBVEZPUk1fSU9TCisKIGVuZGlmICMgaW5zdGFsbGhkcnMKIAogIyAtLS0tLS0t
LQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvRW5nbGlzaC5scHJvai9Mb2NhbGl6YWJsZS5z
dHJpbmdzIGIvU291cmNlL1dlYkNvcmUvRW5nbGlzaC5scHJvai9Mb2NhbGl6YWJsZS5zdHJpbmdz
CmluZGV4IGMzN2Y3ODhkMmU2MDEyYWQyOThlNDM3ZGViYjI3YTllOWE3NzA5NjcuLjUwMGM5NDFh
Y2I3ZTEzYzA3NzZhYmY1NDk2YWM1MmE0Nzk1ODY3OWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL0VuZ2xpc2gubHByb2ovTG9jYWxpemFibGUuc3RyaW5ncworKysgYi9Tb3VyY2UvV2ViQ29y
ZS9FbmdsaXNoLmxwcm9qL0xvY2FsaXphYmxlLnN0cmluZ3MKQEAgLTExMiw2ICsxMTIsMTIgQEAK
IC8qIHRpdGxlIGZvciBhIG11bHRpcGxlIGZpbGUgY2hvb3NlciBidXR0b24gdXNlZCBpbiBIVE1M
IGZvcm1zLiBUaGlzIHRpdGxlIHNob3VsZCBiZSBhcyBzaG9ydCBhcyBwb3NzaWJsZS4gKi8KICJD
aG9vc2UgRmlsZXMiID0gIkNob29zZSBGaWxlcyI7CiAKKy8qIFBMQVRGT1JNKElPUykgdGl0bGUg
Zm9yIGZpbGUgYnV0dG9uIHVzZWQgaW4gSFRNTCBmb3JtcyBmb3IgbWVkaWEgZmlsZXMgKi8KKyJD
aG9vc2UgTWVkaWEgKFNpbmdsZSkiID0gIkNob29zZSBQaG90byI7CisKKy8qIFBMQVRGT1JNKElP
UykgdGl0bGUgZm9yIGZpbGUgYnV0dG9uIHVzZWQgaW4gSFRNTDUgZm9ybXMgZm9yIG11bHRpcGxl
IG1lZGlhIGZpbGVzICovCisiQ2hvb3NlIE1lZGlhIChNdWx0aXBsZSkiID0gIkNob29zZSBQaG90
b3MiOworCiAvKiBtZW51IGl0ZW0gaW4gUmVjZW50IFNlYXJjaGVzIG1lbnUgdGhhdCBlbXB0aWVz
IG1lbnUncyBjb250ZW50cyAqLwogIkNsZWFyIFJlY2VudCBTZWFyY2hlcyIgPSAiQ2xlYXIgUmVj
ZW50IFNlYXJjaGVzIjsKIApAQCAtMTU3LDYgKzE2MywxMiBAQAogLyogRGVmYXVsdCB3cml0aW5n
IGRpcmVjdGlvbiBjb250ZXh0IG1lbnUgaXRlbSAqLwogIkRlZmF1bHQiID0gIkRlZmF1bHQiOwog
CisvKiBQTEFURk9STShJT1MpIFVuZG8gYWN0aW9uIG5hbWUgKi8KKyJEZWxldGUgKFVuZG8gYWN0
aW9uIG5hbWUpIiA9ICJEZWxldGUiOworCisvKiBQTEFURk9STShJT1MpIFVuZG8gYWN0aW9uIG5h
bWUgKi8KKyJEaWN0YXRpb24gKFVuZG8gYWN0aW9uIG5hbWUpIiA9ICJEaWN0YXRpb24iOworCiAv
KiB0ZXh0IHRvIGRpc3BsYXkgaW4gPGRldGFpbHM+IHRhZyB3aGVuIGl0IGhhcyBubyA8c3VtbWFy
eT4gY2hpbGQgKi8KICJEZXRhaWxzIiA9ICJEZXRhaWxzIjsKIApAQCAtNzgxLDYgKzc5MywxMiBA
QAogLyogdGV4dCB0byBkaXNwbGF5IGluIGZpbGUgYnV0dG9uIHVzZWQgaW4gSFRNTCBmb3JtcyB3
aGVuIG5vIGZpbGVzIGFyZSBzZWxlY3RlZCBhbmQgdGhlIGJ1dHRvbiBhbGxvd3MgbXVsdGlwbGUg
ZmlsZXMgdG8gYmUgc2VsZWN0ZWQgKi8KICJubyBmaWxlcyBzZWxlY3RlZCIgPSAibm8gZmlsZXMg
c2VsZWN0ZWQiOwogCisvKiBQTEFURk9STShJT1MpIHRleHQgdG8gZGlzcGxheSBpbiBmaWxlIGJ1
dHRvbiB1c2VkIGluIEhUTUwgZm9ybXMgZm9yIG1lZGlhIGZpbGVzIHdoZW4gbm8gbWVkaWEgZmls
ZSBpcyBzZWxlY3RlZCAqLworIm5vIG1lZGlhIHNlbGVjdGVkIChzaW5nbGUpIiA9ICJubyBwaG90
byBzZWxlY3RlZCI7CisKKy8qIFBMQVRGT1JNKElPUykgdGV4dCB0byBkaXNwbGF5IGluIGZpbGUg
YnV0dG9uIHVzZWQgaW4gSFRNTCBmb3JtcyBmb3IgbWVkaWEgZmlsZXMgd2hlbiBubyBtZWRpYSBm
aWxlcyBhcmUgc2VsZWN0ZWQgYW5kIHRoZSBidXR0b24gYWxsb3dzIG11bHRpcGxlIGZpbGVzIHRv
IGJlIHNlbGVjdGVkICovCisibm8gbWVkaWEgc2VsZWN0ZWQgKG11bHRpcGxlKSIgPSAibm8gcGhv
dG9zIHNlbGVjdGVkIjsKKwogLyogSFRUUCByZXN1bHQgY29kZSBzdHJpbmcgKi8KICJubyBsb25n
ZXIgZXhpc3RzIiA9ICJubyBsb25nZXIgZXhpc3RzIjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9haXJwbGF5L1dlYktpdFBsYXliYWNrVGFyZ2V0QXZhaWxhYmlsaXR5RXZl
bnQuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9haXJwbGF5L1dlYktpdFBsYXliYWNrVGFy
Z2V0QXZhaWxhYmlsaXR5RXZlbnQuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmY3NTU4NjBkMjYxNzdiOWRkOWI4
NTdjOGVmMWI1MWU2MTFmZDI5ODIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2FpcnBsYXkvV2ViS2l0UGxheWJhY2tUYXJnZXRBdmFpbGFiaWxpdHlFdmVudC5jcHAK
QEAgLTAsMCArMSw1OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBU
SEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUg
IldlYktpdFBsYXliYWNrVGFyZ2V0QXZhaWxhYmlsaXR5RXZlbnQuaCIKKworI2lmIEVOQUJMRShJ
T1NfQUlSUExBWSkKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitzdGF0aWMgY29uc3QgQXRvbWlj
U3RyaW5nJiBzdHJpbmdGb3JQbGF5YmFja1RhcmdldEF2YWlsYWJpbGl0eShib29sIGF2YWlsYWJs
ZSkKK3sKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKEF0b21pY1N0cmluZywgYXZhaWxhYmxlU3Ry
aW5nLCAoImF2YWlsYWJsZSIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsK
KyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKEF0b21pY1N0cmluZywgbm90QXZhaWxhYmxlU3RyaW5n
LCAoIm5vdC1hdmFpbGFibGUiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7
CisKKyAgICByZXR1cm4gYXZhaWxhYmxlID8gYXZhaWxhYmxlU3RyaW5nIDogbm90QXZhaWxhYmxl
U3RyaW5nOworfQorCitXZWJLaXRQbGF5YmFja1RhcmdldEF2YWlsYWJpbGl0eUV2ZW50OjpXZWJL
aXRQbGF5YmFja1RhcmdldEF2YWlsYWJpbGl0eUV2ZW50KCkKK3sKK30KKworV2ViS2l0UGxheWJh
Y2tUYXJnZXRBdmFpbGFiaWxpdHlFdmVudDo6V2ViS2l0UGxheWJhY2tUYXJnZXRBdmFpbGFiaWxp
dHlFdmVudChjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgYm9vbCBhdmFpbGFibGUpCisg
ICAgOiBFdmVudChldmVudFR5cGUsIGZhbHNlLCBmYWxzZSkKKyAgICAsIG1fYXZhaWxhYmlsaXR5
KHN0cmluZ0ZvclBsYXliYWNrVGFyZ2V0QXZhaWxhYmlsaXR5KGF2YWlsYWJsZSkpCit7Cit9CisK
K1dlYktpdFBsYXliYWNrVGFyZ2V0QXZhaWxhYmlsaXR5RXZlbnQ6OldlYktpdFBsYXliYWNrVGFy
Z2V0QXZhaWxhYmlsaXR5RXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIGNvbnN0
IFdlYktpdFBsYXliYWNrVGFyZ2V0QXZhaWxhYmlsaXR5RXZlbnRJbml0JiBpbml0aWFsaXplcikK
KyAgICA6IEV2ZW50KGV2ZW50VHlwZSwgaW5pdGlhbGl6ZXIpCisgICAgLCBtX2F2YWlsYWJpbGl0
eShpbml0aWFsaXplci5hdmFpbGFiaWxpdHkpCit7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKKworI2VuZGlmIC8vIEVOQUJMRShJT1NfQUlSUExBWSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvYWlycGxheS9XZWJLaXRQbGF5YmFja1RhcmdldEF2YWlsYWJpbGl0eUV2
ZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FpcnBsYXkvV2ViS2l0UGxheWJhY2tUYXJn
ZXRBdmFpbGFiaWxpdHlFdmVudC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmRiYmZkZTczZDMzNTk3M2MzNzkxYzY5
ZjRhZmQ1NjNmMjEzMDFlM2YKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2FpcnBsYXkvV2ViS2l0UGxheWJhY2tUYXJnZXRBdmFpbGFiaWxpdHlFdmVudC5oCkBAIC0w
LDAgKzEsNzkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisg
KiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisg
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgV2ViS2l0UGxheWJhY2tUYXJnZXRBdmFpbGFi
aWxpdHlFdmVudF9oCisjZGVmaW5lIFdlYktpdFBsYXliYWNrVGFyZ2V0QXZhaWxhYmlsaXR5RXZl
bnRfaAorCisjaWYgRU5BQkxFKElPU19BSVJQTEFZKQorCisjaW5jbHVkZSAiRXZlbnQuaCIKKyNp
bmNsdWRlICJFdmVudE5hbWVzLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworc3RydWN0IFdl
YktpdFBsYXliYWNrVGFyZ2V0QXZhaWxhYmlsaXR5RXZlbnRJbml0IDogcHVibGljIEV2ZW50SW5p
dCB7CisgICAgV2ViS2l0UGxheWJhY2tUYXJnZXRBdmFpbGFiaWxpdHlFdmVudEluaXQoKQorICAg
IHsKKyAgICB9OworCisgICAgU3RyaW5nIGF2YWlsYWJpbGl0eTsKK307CisKK2NsYXNzIFdlYktp
dFBsYXliYWNrVGFyZ2V0QXZhaWxhYmlsaXR5RXZlbnQgOiBwdWJsaWMgRXZlbnQgeworcHVibGlj
OgorICAgIH5XZWJLaXRQbGF5YmFja1RhcmdldEF2YWlsYWJpbGl0eUV2ZW50KCkgeyB9CisKKyAg
ICBzdGF0aWMgUGFzc1JlZlB0cjxXZWJLaXRQbGF5YmFja1RhcmdldEF2YWlsYWJpbGl0eUV2ZW50
PiBjcmVhdGUoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBXZWJLaXRQbGF5
YmFja1RhcmdldEF2YWlsYWJpbGl0eUV2ZW50KTsKKyAgICB9CisKKyAgICBzdGF0aWMgUGFzc1Jl
ZlB0cjxXZWJLaXRQbGF5YmFja1RhcmdldEF2YWlsYWJpbGl0eUV2ZW50PiBjcmVhdGUoY29uc3Qg
QXRvbWljU3RyaW5nJiBldmVudFR5cGUsIGJvb2wgYXZhaWxhYmxlKQorICAgIHsKKyAgICAgICAg
cmV0dXJuIGFkb3B0UmVmKG5ldyBXZWJLaXRQbGF5YmFja1RhcmdldEF2YWlsYWJpbGl0eUV2ZW50
KGV2ZW50VHlwZSwgYXZhaWxhYmxlKSk7CisgICAgfQorCisgICAgc3RhdGljIFBhc3NSZWZQdHI8
V2ViS2l0UGxheWJhY2tUYXJnZXRBdmFpbGFiaWxpdHlFdmVudD4gY3JlYXRlKGNvbnN0IEF0b21p
Y1N0cmluZyYgZXZlbnRUeXBlLCBjb25zdCBXZWJLaXRQbGF5YmFja1RhcmdldEF2YWlsYWJpbGl0
eUV2ZW50SW5pdCYgaW5pdGlhbGl6ZXIpCisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRSZWYo
bmV3IFdlYktpdFBsYXliYWNrVGFyZ2V0QXZhaWxhYmlsaXR5RXZlbnQoZXZlbnRUeXBlLCBpbml0
aWFsaXplcikpOworICAgIH0KKworICAgIFN0cmluZyBhdmFpbGFiaWxpdHkoKSBjb25zdCB7IHJl
dHVybiBtX2F2YWlsYWJpbGl0eTsgfQorCisgICAgdmlydHVhbCBFdmVudEludGVyZmFjZSBldmVu
dEludGVyZmFjZSgpIGNvbnN0IE9WRVJSSURFIHsgcmV0dXJuIFdlYktpdFBsYXliYWNrVGFyZ2V0
QXZhaWxhYmlsaXR5RXZlbnRJbnRlcmZhY2VUeXBlOyB9CisKK3ByaXZhdGU6CisgICAgV2ViS2l0
UGxheWJhY2tUYXJnZXRBdmFpbGFiaWxpdHlFdmVudCgpOworICAgIGV4cGxpY2l0IFdlYktpdFBs
YXliYWNrVGFyZ2V0QXZhaWxhYmlsaXR5RXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5
cGUsIGJvb2wgYXZhaWxhYmxlKTsKKyAgICBXZWJLaXRQbGF5YmFja1RhcmdldEF2YWlsYWJpbGl0
eUV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBjb25zdCBXZWJLaXRQbGF5YmFj
a1RhcmdldEF2YWlsYWJpbGl0eUV2ZW50SW5pdCYpOworCisgICAgU3RyaW5nIG1fYXZhaWxhYmls
aXR5OworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKElP
U19BSVJQTEFZKQorCisjZW5kaWYgLy8gV2ViS2l0UGxheWJhY2tUYXJnZXRBdmFpbGFiaWxpdHlF
dmVudF9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FpcnBsYXkvV2ViS2l0
UGxheWJhY2tUYXJnZXRBdmFpbGFiaWxpdHlFdmVudC5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2FpcnBsYXkvV2ViS2l0UGxheWJhY2tUYXJnZXRBdmFpbGFiaWxpdHlFdmVudC5pZGwKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uMDBlM2JmZTY2MjYxYTE3YTZkYmRlNGNjMmIyNjJmMmMwZjdjZDg1ZAotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYWlycGxheS9XZWJLaXRQbGF5YmFj
a1RhcmdldEF2YWlsYWJpbGl0eUV2ZW50LmlkbApAQCAtMCwwICsxLDMzIEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFLCBJTkMuIGBgQVMgSVMn
JyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisg
KiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKgorICovCisKK1sKKyAg
ICBDb25kaXRpb25hbD1JT1NfQUlSUExBWSwKKyAgICBDb25zdHJ1Y3RvclRlbXBsYXRlPUV2ZW50
CitdIGludGVyZmFjZSBXZWJLaXRQbGF5YmFja1RhcmdldEF2YWlsYWJpbGl0eUV2ZW50IDogRXZl
bnQgeworICAgIFtJbml0aWFsaXplZEJ5RXZlbnRDb25zdHJ1Y3Rvcl0gcmVhZG9ubHkgYXR0cmli
dXRlIERPTVN0cmluZyBhdmFpbGFiaWxpdHk7Cit9OworCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2dlb2xvY2F0aW9uL0dlb2xvY2F0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvZ2VvbG9jYXRpb24vR2VvbG9jYXRpb24uY3BwCmluZGV4IDA3MzU5OTY1MWJmNjIy
MDk2NWI0NzkzMWNkYzUwNWE3Y2QzYmQwMjAuLjA0NzEyYzFiOWY5OTkxNmE3MzQxYmNlNTEzM2M0
NjNiOGE5NDlhMDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZ2VvbG9jYXRp
b24vR2VvbG9jYXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZ2VvbG9jYXRp
b24vR2VvbG9jYXRpb24uY3BwCkBAIC0yMzUsNiArMjM1LDExIEBAIFBhc3NSZWZQdHI8R2VvbG9j
YXRpb24+IEdlb2xvY2F0aW9uOjpjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4
dCkKIEdlb2xvY2F0aW9uOjpHZW9sb2NhdGlvbihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250
ZXh0KQogICAgIDogQWN0aXZlRE9NT2JqZWN0KGNvbnRleHQpCiAgICAgLCBtX2FsbG93R2VvbG9j
YXRpb24oVW5rbm93bikKKyNpZiBQTEFURk9STShJT1MpCisgICAgLCBtX2lzU3VzcGVuZGVkKGZh
bHNlKQorICAgICwgbV9oYXNDaGFuZ2VkUG9zaXRpb24oZmFsc2UpCisgICAgLCBtX3Jlc3VtZVRp
bWVyKHRoaXMsICZHZW9sb2NhdGlvbjo6cmVzdW1lVGltZXJGaXJlZCkKKyNlbmRpZgogewogfQog
CkBAIC0yNTgsNiArMjYzLDEyMyBAQCBQYWdlKiBHZW9sb2NhdGlvbjo6cGFnZSgpIGNvbnN0CiAg
ICAgcmV0dXJuIGRvY3VtZW50KCkgPyBkb2N1bWVudCgpLT5wYWdlKCkgOiAwOwogfQogCisjaWYg
UExBVEZPUk0oSU9TKQorYm9vbCBHZW9sb2NhdGlvbjo6Y2FuU3VzcGVuZCgpIGNvbnN0Cit7Cisg
ICAgcmV0dXJuICFoYXNMaXN0ZW5lcnMoKTsKK30KKwordm9pZCBHZW9sb2NhdGlvbjo6c3VzcGVu
ZChSZWFzb25Gb3JTdXNwZW5zaW9uIHJlYXNvbikKK3sKKyAgICAvLyBBbGxvdyBwYWdlcyB0aGF0
IG5vIGxvbmdlciBoYXZlIGxpc3RlbmVycyB0byBlbnRlciB0aGUgcGFnZSBjYWNoZS4KKyAgICAv
LyBIYXZlIHRoZW0gc3RvcCB1cGRhdGluZyBhbmQgcmVzZXQgZ2VvbG9jYXRpb24gcGVybWlzc2lv
bnMgd2hlbiB0aGUgcGFnZSBpcyByZXN1bWVkLgorICAgIGlmIChyZWFzb24gPT0gQWN0aXZlRE9N
T2JqZWN0OjpEb2N1bWVudFdpbGxCZWNvbWVJbmFjdGl2ZSkgeworICAgICAgICBBU1NFUlQoIWhh
c0xpc3RlbmVycygpKTsKKyAgICAgICAgc3RvcCgpOworICAgICAgICBtX3Jlc2V0T25SZXN1bWUg
PSB0cnVlOworICAgIH0KKworICAgIC8vIFN1c3BlbmQgR2VvTm90aWZpZXIgdGltZW91dCB0aW1l
cnMuCisgICAgaWYgKGhhc0xpc3RlbmVycygpKQorICAgICAgICBzdG9wVGltZXJzKCk7CisKKyAg
ICBtX2lzU3VzcGVuZGVkID0gdHJ1ZTsKKyAgICBtX3Jlc3VtZVRpbWVyLnN0b3AoKTsKKyAgICBB
Y3RpdmVET01PYmplY3Q6OnN1c3BlbmQocmVhc29uKTsKK30KKwordm9pZCBHZW9sb2NhdGlvbjo6
cmVzdW1lKCkKK3sKKyAgICBBU1NFUlQoV2ViVGhyZWFkSXNMb2NrZWRPckRpc2FibGVkKCkpOwor
ICAgIEFjdGl2ZURPTU9iamVjdDo6cmVzdW1lKCk7CisKKyAgICBpZiAoIW1fcmVzdW1lVGltZXIu
aXNBY3RpdmUoKSkKKyAgICAgICAgbV9yZXN1bWVUaW1lci5zdGFydE9uZVNob3QoMCk7Cit9CisK
K3ZvaWQgR2VvbG9jYXRpb246OnJlc3VtZVRpbWVyRmlyZWQoVGltZXI8R2VvbG9jYXRpb24+KikK
K3sKKyAgICBtX2lzU3VzcGVuZGVkID0gZmFsc2U7CisKKyAgICBpZiAobV9yZXNldE9uUmVzdW1l
KSB7CisgICAgICAgIHJlc2V0QWxsR2VvbG9jYXRpb25QZXJtaXNzaW9uKCk7CisgICAgICAgIG1f
cmVzZXRPblJlc3VtZSA9IGZhbHNlOworICAgIH0KKworICAgIC8vIFJlc3VtZSBHZW9Ob3RpZmll
ciB0aW1lb3V0IHRpbWVycy4KKyAgICBpZiAoaGFzTGlzdGVuZXJzKCkpIHsKKyAgICAgICAgR2Vv
Tm90aWZpZXJTZXQ6OmNvbnN0X2l0ZXJhdG9yIGVuZCA9IG1fb25lU2hvdHMuZW5kKCk7CisgICAg
ICAgIGZvciAoR2VvTm90aWZpZXJTZXQ6OmNvbnN0X2l0ZXJhdG9yIGl0ID0gbV9vbmVTaG90cy5i
ZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpCisgICAgICAgICAgICAoKml0KS0+c3RhcnRUaW1lcklm
TmVlZGVkKCk7CisgICAgICAgIEdlb05vdGlmaWVyVmVjdG9yIHdhdGNoZXJDb3B5OworICAgICAg
ICBtX3dhdGNoZXJzLmdldE5vdGlmaWVyc1ZlY3Rvcih3YXRjaGVyQ29weSk7CisgICAgICAgIGZv
ciAoc2l6ZV90IGkgPSAwOyBpIDwgd2F0Y2hlckNvcHkuc2l6ZSgpOyArK2kpCisgICAgICAgICAg
ICB3YXRjaGVyQ29weVtpXS0+c3RhcnRUaW1lcklmTmVlZGVkKCk7CisgICAgfQorCisgICAgaWYg
KChpc0FsbG93ZWQoKSB8fCBpc0RlbmllZCgpKSAmJiAhbV9wZW5kaW5nRm9yUGVybWlzc2lvbk5v
dGlmaWVycy5pc0VtcHR5KCkpIHsKKyAgICAgICAgLy8gVGhlIHBlbmRpbmcgcGVybWlzc2lvbiB3
YXMgZ3JhbnRlZCB3aGlsZSB0aGUgb2JqZWN0IHdhcyBzdXNwZW5kZWQuCisgICAgICAgIHNldElz
QWxsb3dlZChpc0FsbG93ZWQoKSk7CisgICAgICAgIEFTU0VSVCghbV9oYXNDaGFuZ2VkUG9zaXRp
b24pOworICAgICAgICBBU1NFUlQoIW1fZXJyb3JXYWl0aW5nRm9yUmVzdW1lKTsKKyAgICAgICAg
cmV0dXJuOworICAgIH0KKworICAgIGlmIChpc0RlbmllZCgpICYmIGhhc0xpc3RlbmVycygpKSB7
CisgICAgICAgIC8vIFRoZSBwZXJtaXNzaW9uIHdhcyByZXZva2VkIHdoaWxlIHRoZSBvYmplY3Qg
d2FzIHN1c3BlbmRlZC4KKyAgICAgICAgc2V0SXNBbGxvd2VkKGZhbHNlKTsKKyAgICAgICAgcmV0
dXJuOworICAgIH0KKworICAgIGlmIChtX2hhc0NoYW5nZWRQb3NpdGlvbikgeworICAgICAgICBw
b3NpdGlvbkNoYW5nZWQoKTsKKyAgICAgICAgbV9oYXNDaGFuZ2VkUG9zaXRpb24gPSBmYWxzZTsK
KyAgICB9CisKKyAgICBpZiAobV9lcnJvcldhaXRpbmdGb3JSZXN1bWUpIHsKKyAgICAgICAgaGFu
ZGxlRXJyb3IobV9lcnJvcldhaXRpbmdGb3JSZXN1bWUuZ2V0KCkpOworICAgICAgICBtX2Vycm9y
V2FpdGluZ0ZvclJlc3VtZSA9IG51bGxwdHI7CisgICAgfQorfQorCit2b2lkIEdlb2xvY2F0aW9u
OjpyZXNldEFsbEdlb2xvY2F0aW9uUGVybWlzc2lvbigpCit7CisgICAgaWYgKG1faXNTdXNwZW5k
ZWQpIHsKKyAgICAgICAgbV9yZXNldE9uUmVzdW1lID0gdHJ1ZTsKKyAgICAgICAgcmV0dXJuOwor
ICAgIH0KKworICAgIGlmIChtX2FsbG93R2VvbG9jYXRpb24gPT0gSW5Qcm9ncmVzcykgeworICAg
ICAgICBQYWdlKiBwYWdlID0gdGhpcy0+cGFnZSgpOworICAgICAgICBpZiAocGFnZSkKKyAgICAg
ICAgICAgIEdlb2xvY2F0aW9uQ29udHJvbGxlcjo6ZnJvbShwYWdlKS0+Y2FuY2VsUGVybWlzc2lv
blJlcXVlc3QodGhpcyk7CisKKyAgICAgICAgLy8gVGhpcyByZXR1cm4gaXMgbm90IHRlY2huaWNh
bGx5IGNvcnJlY3QgYXMgR2VvbG9jYXRpb25Db250cm9sbGVyOjpjYW5jZWxQZXJtaXNzaW9uUmVx
dWVzdCgpIHNob3VsZCBoYXZlIGNsZWFyZWQgdGhlIGFjdGl2ZSByZXF1ZXN0LgorICAgICAgICAv
LyBOZWl0aGVyIGlPUyBub3IgT1MgWCBzdXBwb3J0cyBjYW5jZWxQZXJtaXNzaW9uUmVxdWVzdCgp
IChodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODk1MjQpLCBzbyB3ZSB3
b3JrYXJvdW5kIHRoYXQgYW5kIGxldCBvbmdvaW5nIHJlcXVlc3RzIGNvbXBsZXRlLiA6KAorICAg
ICAgICByZXR1cm47CisgICAgfQorCisgICAgLy8gMSkgUmVzZXQgb3VyIG93biBzdGF0ZS4KKyAg
ICBzdG9wVXBkYXRpbmcoKTsKKyAgICBtX2FsbG93R2VvbG9jYXRpb24gPSBVbmtub3duOworICAg
IG1faGFzQ2hhbmdlZFBvc2l0aW9uID0gZmFsc2U7CisgICAgbV9lcnJvcldhaXRpbmdGb3JSZXN1
bWUgPSBudWxscHRyOworCisgICAgLy8gMikgUmVxdWVzdCBuZXcgcGVybWlzc2lvbiBmb3IgdGhl
IGFjdGl2ZSBub3RpZmllcnMuCisgICAgc3RvcFRpbWVycygpOworCisgICAgLy8gR28gb3ZlciB0
aGUgb25lIHNob3QgYW5kIHJlLXJlcXVlc3QgcGVybWlzc2lvbi4KKyAgICBHZW9Ob3RpZmllclNl
dDo6aXRlcmF0b3IgZW5kID0gbV9vbmVTaG90cy5lbmQoKTsKKyAgICBmb3IgKEdlb05vdGlmaWVy
U2V0OjppdGVyYXRvciBpdCA9IG1fb25lU2hvdHMuYmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KQor
ICAgICAgICBzdGFydFJlcXVlc3QoKCppdCkuZ2V0KCkpOworICAgIC8vIEdvIG92ZXIgdGhlIHdh
dGNoZXJzIGFuZCByZS1yZXF1ZXN0IHBlcm1pc3Npb24uCisgICAgR2VvTm90aWZpZXJWZWN0b3Ig
d2F0Y2hlckNvcHk7CisgICAgbV93YXRjaGVycy5nZXROb3RpZmllcnNWZWN0b3Iod2F0Y2hlckNv
cHkpOworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgd2F0Y2hlckNvcHkuc2l6ZSgpOyArK2kp
CisgICAgICAgIHN0YXJ0UmVxdWVzdCh3YXRjaGVyQ29weVtpXS5nZXQoKSk7Cit9CisjZW5kaWYg
Ly8gUExBVEZPUk0oSU9TKQorCiB2b2lkIEdlb2xvY2F0aW9uOjpzdG9wKCkKIHsKICAgICBQYWdl
KiBwYWdlID0gdGhpcy0+cGFnZSgpOwpAQCAtMjY3LDYgKzM4OSwxMCBAQCB2b2lkIEdlb2xvY2F0
aW9uOjpzdG9wKCkKICAgICBtX2FsbG93R2VvbG9jYXRpb24gPSBVbmtub3duOwogICAgIGNhbmNl
bEFsbFJlcXVlc3RzKCk7CiAgICAgc3RvcFVwZGF0aW5nKCk7CisjaWYgUExBVEZPUk0oSU9TKQor
ICAgIG1faGFzQ2hhbmdlZFBvc2l0aW9uID0gZmFsc2U7CisgICAgbV9lcnJvcldhaXRpbmdGb3JS
ZXN1bWUgPSBudWxscHRyOworI2VuZGlmIC8vIFBMQVRGT1JNKElPUykKICAgICBtX3BlbmRpbmdG
b3JQZXJtaXNzaW9uTm90aWZpZXJzLmNsZWFyKCk7CiB9CiAKQEAgLTQyOSw2ICs1NTUsMTEgQEAg
dm9pZCBHZW9sb2NhdGlvbjo6c2V0SXNBbGxvd2VkKGJvb2wgYWxsb3dlZCkKICAgICAvLyBwb3Np
dGlvbi4KICAgICBtX2FsbG93R2VvbG9jYXRpb24gPSBhbGxvd2VkID8gWWVzIDogTm87CiAgICAg
CisjaWYgUExBVEZPUk0oSU9TKQorICAgIGlmIChtX2lzU3VzcGVuZGVkKQorICAgICAgICByZXR1
cm47CisjZW5kaWYKKwogICAgIC8vIFBlcm1pc3Npb24gcmVxdWVzdCB3YXMgbWFkZSBkdXJpbmcg
dGhlIHN0YXJ0UmVxdWVzdCBwcm9jZXNzCiAgICAgaWYgKCFtX3BlbmRpbmdGb3JQZXJtaXNzaW9u
Tm90aWZpZXJzLmlzRW1wdHkoKSkgewogICAgICAgICBoYW5kbGVQZW5kaW5nUGVybWlzc2lvbk5v
dGlmaWVycygpOwpAQCAtNDQxLDYgKzU3MiwxMSBAQCB2b2lkIEdlb2xvY2F0aW9uOjpzZXRJc0Fs
bG93ZWQoYm9vbCBhbGxvd2VkKQogICAgICAgICBlcnJvci0+c2V0SXNGYXRhbCh0cnVlKTsKICAg
ICAgICAgaGFuZGxlRXJyb3IoZXJyb3IuZ2V0KCkpOwogICAgICAgICBtX3JlcXVlc3RzQXdhaXRp
bmdDYWNoZWRQb3NpdGlvbi5jbGVhcigpOworI2lmIFBMQVRGT1JNKElPUykKKyAgICAgICAgbV9o
YXNDaGFuZ2VkUG9zaXRpb24gPSBmYWxzZTsKKyAgICAgICAgbV9lcnJvcldhaXRpbmdGb3JSZXN1
bWUgPSBudWxscHRyOworI2VuZGlmCisKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtNjIw
LDExICs3NTYsMjQgQEAgdm9pZCBHZW9sb2NhdGlvbjo6cG9zaXRpb25DaGFuZ2VkKCkKICAgICAv
LyBTdG9wIGFsbCBjdXJyZW50bHkgcnVubmluZyB0aW1lcnMuCiAgICAgc3RvcFRpbWVycygpOwog
CisjaWYgUExBVEZPUk0oSU9TKQorICAgIGlmIChtX2lzU3VzcGVuZGVkKSB7CisgICAgICAgIG1f
aGFzQ2hhbmdlZFBvc2l0aW9uID0gdHJ1ZTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyNlbmRp
ZgorCiAgICAgbWFrZVN1Y2Nlc3NDYWxsYmFja3MoKTsKIH0KIAogdm9pZCBHZW9sb2NhdGlvbjo6
c2V0RXJyb3IoR2VvbG9jYXRpb25FcnJvciogZXJyb3IpCiB7CisjaWYgUExBVEZPUk0oSU9TKQor
ICAgIGlmIChtX2lzU3VzcGVuZGVkKSB7CisgICAgICAgIG1fZXJyb3JXYWl0aW5nRm9yUmVzdW1l
ID0gY3JlYXRlUG9zaXRpb25FcnJvcihlcnJvcik7CisgICAgICAgIHJldHVybjsKKyAgICB9Cisj
ZW5kaWYKICAgICBSZWZQdHI8UG9zaXRpb25FcnJvcj4gcG9zaXRpb25FcnJvciA9IGNyZWF0ZVBv
c2l0aW9uRXJyb3IoZXJyb3IpOwogICAgIGhhbmRsZUVycm9yKHBvc2l0aW9uRXJyb3IuZ2V0KCkp
OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9nZW9sb2NhdGlvbi9HZW9s
b2NhdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9nZW9sb2NhdGlvbi9HZW9sb2NhdGlv
bi5oCmluZGV4IDU1NjRjMTEyZWI0OWVmNTEzY2I0YWEzNDNlNzJmOThlMjRkMzE1NTYuLjQ2MWI0
MTMxNzQ4NzYzOWRmZjY4ZWUyNThmZmYzYWRkYWEzOTg2YTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvZ2VvbG9jYXRpb24vR2VvbG9jYXRpb24uaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2dlb2xvY2F0aW9uL0dlb2xvY2F0aW9uLmgKQEAgLTU0LDYgKzU0LDEyIEBA
IHB1YmxpYzoKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxHZW9sb2NhdGlvbj4gY3JlYXRlKFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQqKTsKICAgICB+R2VvbG9jYXRpb24oKTsKIAorI2lmIFBMQVRGT1JN
KElPUykKKyAgICB2aXJ0dWFsIGJvb2wgY2FuU3VzcGVuZCgpIGNvbnN0IE9WRVJSSURFOworICAg
IHZpcnR1YWwgdm9pZCBzdXNwZW5kKFJlYXNvbkZvclN1c3BlbnNpb24pIE9WRVJSSURFOworICAg
IHZpcnR1YWwgdm9pZCByZXN1bWUoKSBPVkVSUklERTsKKyAgICB2b2lkIHJlc2V0QWxsR2VvbG9j
YXRpb25QZXJtaXNzaW9uKCk7CisjZW5kaWYgLy8gUExBVEZPUk0oSU9TKQogICAgIERvY3VtZW50
KiBkb2N1bWVudCgpIGNvbnN0OwogICAgIEZyYW1lKiBmcmFtZSgpIGNvbnN0OwogCkBAIC0xNzQs
NiArMTgwLDE1IEBAIHByaXZhdGU6CiAgICAgICAgIFllcywKICAgICAgICAgTm8KICAgICB9IG1f
YWxsb3dHZW9sb2NhdGlvbjsKKyNpZiBQTEFURk9STShJT1MpCisgICAgYm9vbCBtX2lzU3VzcGVu
ZGVkOworICAgIGJvb2wgbV9yZXNldE9uUmVzdW1lOworICAgIGJvb2wgbV9oYXNDaGFuZ2VkUG9z
aXRpb247CisgICAgUmVmUHRyPFBvc2l0aW9uRXJyb3I+IG1fZXJyb3JXYWl0aW5nRm9yUmVzdW1l
OworCisgICAgdm9pZCByZXN1bWVUaW1lckZpcmVkKFRpbWVyPEdlb2xvY2F0aW9uPiopOworICAg
IFRpbWVyPEdlb2xvY2F0aW9uPiBtX3Jlc3VtZVRpbWVyOworI2VuZGlmIC8vIFBMQVRGT1JNKElP
UykKIAogICAgIEdlb05vdGlmaWVyU2V0IG1fcmVxdWVzdHNBd2FpdGluZ0NhY2hlZFBvc2l0aW9u
OwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZ2VvbG9jYXRpb24vTmF2
aWdhdG9yR2VvbG9jYXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9nZW9sb2NhdGlv
bi9OYXZpZ2F0b3JHZW9sb2NhdGlvbi5jcHAKaW5kZXggODhiZDRiOTdjYzU5NjQ5ZjQxZjEyNmQz
OGZjYjU3MDU2NGYzZGVkNC4uY2I5ZTk3YTI4ZWI2ZTg5NjYxY2JlYWNlNDA0ZDllOWIxNDY1NGI5
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9nZW9sb2NhdGlvbi9OYXZpZ2F0
b3JHZW9sb2NhdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9nZW9sb2NhdGlv
bi9OYXZpZ2F0b3JHZW9sb2NhdGlvbi5jcHAKQEAgLTU3LDYgKzU3LDE0IEBAIE5hdmlnYXRvckdl
b2xvY2F0aW9uKiBOYXZpZ2F0b3JHZW9sb2NhdGlvbjo6ZnJvbShOYXZpZ2F0b3IqIG5hdmlnYXRv
cikKICAgICByZXR1cm4gc3VwcGxlbWVudDsKIH0KIAorI2lmIFBMQVRGT1JNKElPUykKK3ZvaWQg
TmF2aWdhdG9yR2VvbG9jYXRpb246OnJlc2V0QWxsR2VvbG9jYXRpb25QZXJtaXNzaW9uKCkKK3sK
KyAgICBpZiAobV9nZW9sb2NhdGlvbikKKyAgICAgICAgbV9nZW9sb2NhdGlvbi0+cmVzZXRBbGxH
ZW9sb2NhdGlvblBlcm1pc3Npb24oKTsKK30KKyNlbmRpZiAvLyBQTEFURk9STShJT1MpCisKIEdl
b2xvY2F0aW9uKiBOYXZpZ2F0b3JHZW9sb2NhdGlvbjo6Z2VvbG9jYXRpb24oTmF2aWdhdG9yKiBu
YXZpZ2F0b3IpCiB7CiAgICAgcmV0dXJuIE5hdmlnYXRvckdlb2xvY2F0aW9uOjpmcm9tKG5hdmln
YXRvciktPmdlb2xvY2F0aW9uKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2dlb2xvY2F0aW9uL05hdmlnYXRvckdlb2xvY2F0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2dlb2xvY2F0aW9uL05hdmlnYXRvckdlb2xvY2F0aW9uLmgKaW5kZXggMDEzMGEyY2YwNmE4
MGY0MDkzZDgwNDNkNzdjMjNkZDA2YWNhNzFkYy4uYzVmNjU0MDAyNWY0MWEwYWRmMWNlOWFjZWJj
NTg1YjExMzExNzE3ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9nZW9sb2Nh
dGlvbi9OYXZpZ2F0b3JHZW9sb2NhdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
Z2VvbG9jYXRpb24vTmF2aWdhdG9yR2VvbG9jYXRpb24uaApAQCAtMzksNiArMzksMTAgQEAgcHVi
bGljOgogICAgIHN0YXRpYyBHZW9sb2NhdGlvbiogZ2VvbG9jYXRpb24oTmF2aWdhdG9yKik7CiAg
ICAgR2VvbG9jYXRpb24qIGdlb2xvY2F0aW9uKCkgY29uc3Q7CiAKKyNpZiBQTEFURk9STShJT1Mp
CisgICAgdm9pZCByZXNldEFsbEdlb2xvY2F0aW9uUGVybWlzc2lvbigpOworI2VuZGlmIC8vIFBM
QVRGT1JNKElPUykKKwogcHJpdmF0ZToKICAgICBOYXZpZ2F0b3JHZW9sb2NhdGlvbihGcmFtZSop
OwogICAgIHN0YXRpYyBjb25zdCBjaGFyKiBzdXBwbGVtZW50TmFtZSgpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNoU3ludGhlc2lzLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNoL1NwZWVjaFN5bnRoZXNpcy5jcHAKaW5kZXggZTQ1NjMy
YTk0NDFhZTZjMjUwNDIxMmI2MDg4NjI0ZmEzNmNkYjliNy4uMTBjMzNlYmVkZDA0MDkxODI1OTg0
MmFkOGE2ZDQyNjgwNTFhMGQ4NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9z
cGVlY2gvU3BlZWNoU3ludGhlc2lzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3Nw
ZWVjaC9TcGVlY2hTeW50aGVzaXMuY3BwCkBAIC0zMCw2ICszMCw3IEBACiAKICNpbmNsdWRlICJQ
bGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1ZvaWNlLmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1TcGVlY2hT
eW50aGVzaXplci5oIgorI2luY2x1ZGUgIlNjcmlwdENvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJT
cGVlY2hTeW50aGVzaXNFdmVudC5oIgogI2luY2x1ZGUgIlNwZWVjaFN5bnRoZXNpc1V0dGVyYW5j
ZS5oIgogI2luY2x1ZGUgPHd0Zi9DdXJyZW50VGltZS5oPgpAQCAtNDQsNiArNDUsOSBAQCBQYXNz
UmVmUHRyPFNwZWVjaFN5bnRoZXNpcz4gU3BlZWNoU3ludGhlc2lzOjpjcmVhdGUoKQogU3BlZWNo
U3ludGhlc2lzOjpTcGVlY2hTeW50aGVzaXMoKQogICAgIDogbV9jdXJyZW50U3BlZWNoVXR0ZXJh
bmNlKDApCiAgICAgLCBtX2lzUGF1c2VkKGZhbHNlKQorI2lmIFBMQVRGT1JNKElPUykKKyAgICAs
IG1fcmVzdHJpY3Rpb25zKFJlcXVpcmVVc2VyR2VzdHVyZUZvclNwZWVjaFN0YXJ0UmVzdHJpY3Rp
b24pCisjZW5kaWYKIHsKIH0KICAgICAKQEAgLTExMiw2ICsxMTYsMTQgQEAgdm9pZCBTcGVlY2hT
eW50aGVzaXM6OnNwZWFrKFNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZSogdXR0ZXJhbmNlKQogewog
ICAgIGlmICghdXR0ZXJhbmNlKQogICAgICAgICByZXR1cm47CisgCisgICAgLy8gTGlrZSBBdWRp
bywgd2Ugc2hvdWxkIHJlcXVpcmUgdGhhdCB0aGUgdXNlciBpbnRlcmFjdCB0byBzdGFydCBhIHNw
ZWVjaCBzeW50aGVzaXMgc2Vzc2lvbi4KKyNpZiBQTEFURk9STShJT1MpCisgICAgaWYgKFNjcmlw
dENvbnRyb2xsZXI6OnByb2Nlc3NpbmdVc2VyR2VzdHVyZSgpKQorICAgICAgICByZW1vdmVCZWhh
dmlvclJlc3RyaWN0aW9uKFJlcXVpcmVVc2VyR2VzdHVyZUZvclNwZWVjaFN0YXJ0UmVzdHJpY3Rp
b24pOworICAgIGVsc2UgaWYgKHVzZXJHZXN0dXJlUmVxdWlyZWRGb3JTcGVlY2hTdGFydCgpKQor
ICAgICAgICByZXR1cm47CisjZW5kaWYKICAgICAKICAgICBtX3V0dGVyYW5jZVF1ZXVlLmFwcGVu
ZCh1dHRlcmFuY2UpOwogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9z
cGVlY2gvU3BlZWNoU3ludGhlc2lzLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9T
cGVlY2hTeW50aGVzaXMuaAppbmRleCA5Yzc4N2EwNzNhMWIxY2MwZWU1NzY2NzRkYzk1ZDUzZWM5
ODBiODA3Li5jZTFlNDdjOWM0N2VjMWY4ZDMxMjMxZDVhMzA2MDM1OThhNWJlMzljIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9TcGVlY2hTeW50aGVzaXMuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9TcGVlY2hTeW50aGVzaXMuaApAQCAtNzYs
MTEgKzc2LDI2IEBAIHByaXZhdGU6CiAgICAgdm9pZCBoYW5kbGVTcGVha2luZ0NvbXBsZXRlZChT
cGVlY2hTeW50aGVzaXNVdHRlcmFuY2UqLCBib29sIGVycm9yT2NjdXJyZWQpOwogICAgIHZvaWQg
ZmlyZUV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwgU3BlZWNoU3ludGhlc2lzVXR0ZXJh
bmNlKiwgdW5zaWduZWQgbG9uZyBjaGFySW5kZXgsIGNvbnN0IFN0cmluZyYgbmFtZSk7CiAgICAg
CisjaWYgUExBVEZPUk0oSU9TKQorICAgIC8vIFJlc3RyaWN0aW9ucyB0byBjaGFuZ2UgZGVmYXVs
dCBiZWhhdmlvcnMuCisgICAgZW51bSBCZWhhdmlvclJlc3RyaWN0aW9uRmxhZ3MgeworICAgICAg
ICBOb1Jlc3RyaWN0aW9ucyA9IDAsCisgICAgICAgIFJlcXVpcmVVc2VyR2VzdHVyZUZvclNwZWVj
aFN0YXJ0UmVzdHJpY3Rpb24gPSAxIDw8IDAsCisgICAgfTsKKyAgICB0eXBlZGVmIHVuc2lnbmVk
IEJlaGF2aW9yUmVzdHJpY3Rpb25zOworICAgIAorICAgIGJvb2wgdXNlckdlc3R1cmVSZXF1aXJl
ZEZvclNwZWVjaFN0YXJ0KCkgY29uc3QgeyByZXR1cm4gbV9yZXN0cmljdGlvbnMgJiBSZXF1aXJl
VXNlckdlc3R1cmVGb3JTcGVlY2hTdGFydFJlc3RyaWN0aW9uOyB9CisgICAgdm9pZCByZW1vdmVC
ZWhhdmlvclJlc3RyaWN0aW9uKEJlaGF2aW9yUmVzdHJpY3Rpb25zIHJlc3RyaWN0aW9uKSB7IG1f
cmVzdHJpY3Rpb25zICY9IH5yZXN0cmljdGlvbjsgfQorI2VuZGlmCisgICAgCiAgICAgT3duUHRy
PFBsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXI+IG1fcGxhdGZvcm1TcGVlY2hTeW50aGVzaXplcjsK
ICAgICBWZWN0b3I8UmVmUHRyPFNwZWVjaFN5bnRoZXNpc1ZvaWNlPj4gbV92b2ljZUxpc3Q7CiAg
ICAgU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlKiBtX2N1cnJlbnRTcGVlY2hVdHRlcmFuY2U7CiAg
ICAgRGVxdWU8UmVmUHRyPFNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZT4+IG1fdXR0ZXJhbmNlUXVl
dWU7CiAgICAgYm9vbCBtX2lzUGF1c2VkOworI2lmIFBMQVRGT1JNKElPUykKKyAgICBCZWhhdmlv
clJlc3RyaWN0aW9ucyBtX3Jlc3RyaWN0aW9uczsKKyNlbmRpZgogfTsKICAgICAKIH0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVk
aW8vQXVkaW9Db250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVk
aW9Db250ZXh0LmNwcAppbmRleCAyMDczY2Q3Y2E2NzA0Zjk5ZGM0ZTVjNzI4YzRhODJmYmRmZjRj
YmE1Li4wZjJlZTdmZWRkMmUxYWZiZTk2MmRmNmZiZjFmMGY5NGNmMzgyNDcwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQ29udGV4dC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0NvbnRleHQuY3BwCkBAIC04MCw2
ICs4MCwxMSBAQAogI2luY2x1ZGUgIkdTdHJlYW1lclV0aWxpdGllcy5oIgogI2VuZGlmCiAKKyNp
ZiBQTEFURk9STShJT1MpCisjaW5jbHVkZSAiU2NyaXB0Q29udHJvbGxlci5oIgorI2luY2x1ZGUg
IlNldHRpbmdzLmgiCisjZW5kaWYKKwogI2luY2x1ZGUgPHJ1bnRpbWUvQXJyYXlCdWZmZXIuaD4K
ICNpbmNsdWRlIDx3dGYvQXRvbWljcy5oPgogI2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQ29udGV4dC5o
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0NvbnRleHQuaAppbmRleCBk
NDFhOTc0N2Q2YzE2Mjc5YTk0NzEwZWM0ZDU0YjZjOTgxOWVlNDkxLi5jMjZiYmI4NmE4YjEzZDgx
YWQzZmE1YzY4YTI5ZDRhMzRiMTJiNmIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmF1ZGlvL0F1ZGlvQ29udGV4dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViYXVkaW8vQXVkaW9Db250ZXh0LmgKQEAgLTk2LDcgKzk2LDYgQEAgcHVibGljOgogICAgIHZp
cnR1YWwgdm9pZCBzdG9wKCkgT1ZFUlJJREU7CiAKICAgICBEb2N1bWVudCogZG9jdW1lbnQoKSBj
b25zdDsgLy8gQVNTRVJUcyBpZiBkb2N1bWVudCBubyBsb25nZXIgZXhpc3RzLgotICAgIGJvb2wg
aGFzRG9jdW1lbnQoKTsKIAogICAgIEF1ZGlvRGVzdGluYXRpb25Ob2RlKiBkZXN0aW5hdGlvbigp
IHsgcmV0dXJuIG1fZGVzdGluYXRpb25Ob2RlLmdldCgpOyB9CiAgICAgc2l6ZV90IGN1cnJlbnRT
YW1wbGVGcmFtZSgpIGNvbnN0IHsgcmV0dXJuIG1fZGVzdGluYXRpb25Ob2RlLT5jdXJyZW50U2Ft
cGxlRnJhbWUoKTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRp
by9BdWRpb1NjaGVkdWxlZFNvdXJjZU5vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJhdWRpby9BdWRpb1NjaGVkdWxlZFNvdXJjZU5vZGUuY3BwCmluZGV4IDY3YzAzNTk5ZTQzM2Yz
NmJhNzcxMDljMDRlMTM3M2E2NDMxMjZhZTAuLjBkYzJhODI5YThhMzIyZDBjZjhiZGM4NTQ1MDg3
NzQxZjhjZGRhZTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8v
QXVkaW9TY2hlZHVsZWRTb3VyY2VOb2RlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmF1ZGlvL0F1ZGlvU2NoZWR1bGVkU291cmNlTm9kZS5jcHAKQEAgLTM1LDYgKzM1LDEwIEBA
CiAjaW5jbHVkZSA8YWxnb3JpdGhtPgogI2luY2x1ZGUgPHd0Zi9NYXRoRXh0cmFzLmg+CiAKKyNp
ZiBQTEFURk9STShJT1MpCisjaW5jbHVkZSAiU2NyaXB0Q29udHJvbGxlci5oIgorI2VuZGlmCisK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY29uc3QgZG91YmxlIEF1ZGlvU2NoZWR1bGVkU291cmNl
Tm9kZTo6VW5rbm93blRpbWUgPSAtMTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJk
YXRhYmFzZS9EYXRhYmFzZS5jcHAKaW5kZXggODY5Yzg1ZjBkNzBiM2M5NmVhNmE4MDc1NTU5ZmRj
MjM0ZmJlZWMxOC4uZTE4Mjc5NWJlOWE4MThmM2I0MjBlNTBkY2U4NGNkMTRmMWI5ODA0ZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZS5jcHAKQEAg
LTYwLDYgKzYwLDEwIEBACiAjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgogI2luY2x1ZGUg
PHd0Zi90ZXh0L0NTdHJpbmcuaD4KIAorI2lmIFBMQVRGT1JNKElPUykKKyNpbmNsdWRlICJTUUxp
dGVEYXRhYmFzZVRyYWNrZXIuaCIKKyNlbmRpZgorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFBh
c3NSZWZQdHI8RGF0YWJhc2U+IERhdGFiYXNlOjpjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCosIFBhc3NSZWZQdHI8RGF0YWJhc2VCYWNrZW5kQmFzZT4gYmFja2VuZCkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VCYWNrZW5kQmFzZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlQmFja2VuZEJh
c2UuY3BwCmluZGV4IDVhOWY3MWUxYmE5ODVlYzVmZmM5NGMyZmY0MDI5NDViY2FmMTAzMGYuLjc0
NWQ1NjNhMDhlOTkwMjFlYWNhMGZiYWJkOWYxMjQyNjZjMjZmYWEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VCYWNrZW5kQmFzZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZUJhY2tlbmRCYXNl
LmNwcApAQCAtNTIsNiArNTIsMTAgQEAKICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAj
aW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nSGFzaC5oPgogCisjaWYgUExBVEZPUk0oSU9TKQorI2lu
Y2x1ZGUgIlNRTGl0ZURhdGFiYXNlVHJhY2tlci5oIgorI2VuZGlmCisKIC8vIFJlZ2lzdGVyaW5n
ICJvcGVuZWQiIGRhdGFiYXNlcyB3aXRoIHRoZSBEYXRhYmFzZVRyYWNrZXIKIC8vID09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KIC8vIFRoZSBE
YXRhYmFzZVRyYWNrZXIgbWFpbnRhaW5zIGEgbGlzdCBvZiBkYXRhYmFzZXMgdGhhdCBoYXZlIGJl
ZW4KQEAgLTMxNCw2ICszMTgsMTQgQEAgYm9vbCBEYXRhYmFzZUJhY2tlbmRCYXNlOjpwZXJmb3Jt
T3BlbkFuZFZlcmlmeShib29sIHNob3VsZFNldFZlcnNpb25Jbk5ld0RhdGFiYXMKIAogICAgIGNv
bnN0IGludCBtYXhTcWxpdGVCdXN5V2FpdFRpbWUgPSAzMDAwMDsKIAorI2lmIFBMQVRGT1JNKElP
UykKKyAgICB7CisgICAgICAgIC8vIE1ha2Ugc3VyZSB3ZSB3YWl0IHRpbGwgdGhlIGJhY2tncm91
bmQgcmVtb3ZhbCBvZiB0aGUgZW1wdHkgZGF0YWJhc2UgZmlsZXMgZmluaXNoZWQgYmVmb3JlIHRy
eWluZyB0byBvcGVuIGFueSBkYXRhYmFzZS4KKyAgICAgICAgTXV0ZXhMb2NrZXIgbG9ja2VyKERh
dGFiYXNlVHJhY2tlcjo6b3BlbkRhdGFiYXNlTXV0ZXgoKSk7CisgICAgfQorICAgIFNRTGl0ZVRy
YW5zYWN0aW9uSW5Qcm9ncmVzc0F1dG9Db3VudGVyIHRyYW5zYWN0aW9uQ291bnRlcjsKKyNlbmRp
ZgorCiAgICAgaWYgKCFtX3NxbGl0ZURhdGFiYXNlLm9wZW4obV9maWxlbmFtZSwgdHJ1ZSkpIHsK
ICAgICAgICAgZXJyb3JNZXNzYWdlID0gZm9ybWF0RXJyb3JNZXNzYWdlKCJ1bmFibGUgdG8gb3Bl
biBkYXRhYmFzZSIsIG1fc3FsaXRlRGF0YWJhc2UubGFzdEVycm9yKCksIG1fc3FsaXRlRGF0YWJh
c2UubGFzdEVycm9yTXNnKCkpOwogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC01NjQsNiArNTc2
LDkgQEAgdW5zaWduZWQgbG9uZyBsb25nIERhdGFiYXNlQmFja2VuZEJhc2U6Om1heGltdW1TaXpl
KCkgY29uc3QKIAogdm9pZCBEYXRhYmFzZUJhY2tlbmRCYXNlOjppbmNyZW1lbnRhbFZhY3V1bUlm
TmVlZGVkKCkKIHsKKyNpZiBQTEFURk9STShJT1MpCisgICAgU1FMaXRlVHJhbnNhY3Rpb25JblBy
b2dyZXNzQXV0b0NvdW50ZXIgdHJhbnNhY3Rpb25Db3VudGVyOworI2VuZGlmCiAgICAgaW50NjRf
dCBmcmVlU3BhY2VTaXplID0gbV9zcWxpdGVEYXRhYmFzZS5mcmVlU3BhY2VTaXplKCk7CiAgICAg
aW50NjRfdCB0b3RhbFNpemUgPSBtX3NxbGl0ZURhdGFiYXNlLnRvdGFsU2l6ZSgpOwogICAgIGlm
ICh0b3RhbFNpemUgPD0gMTAgKiBmcmVlU3BhY2VTaXplKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlQ29udGV4dC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlQ29udGV4dC5jcHAKaW5kZXggMjVi
N2FhMGY3MDBiOTAzNzE4YTk3NjUyYWNmOTM1ZWNmYmM5NjgzYS4uNzUyZTI5ZTQ4MGI1Zjk5OTU4
NmVlMTM2Zjg3MjE1MTNiMWUwNGQwZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJkYXRhYmFzZS9EYXRhYmFzZUNvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VDb250ZXh0LmNwcApAQCAtMTAyLDYgKzEwMiw5IEBA
IERhdGFiYXNlQ29udGV4dDo6RGF0YWJhc2VDb250ZXh0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQq
IGNvbnRleHQpCiAgICAgLCBtX2hhc09wZW5EYXRhYmFzZXMoZmFsc2UpCiAgICAgLCBtX2lzUmVn
aXN0ZXJlZCh0cnVlKSAvLyB3aWxsIHJlZ2lzdGVyIG9uIGNvbnN0cnVjdGlvbiBiZWxvdy4KICAg
ICAsIG1faGFzUmVxdWVzdGVkVGVybWluYXRpb24oZmFsc2UpCisjaWYgUExBVEZPUk0oSU9TKQor
ICAgICwgbV9wYXVzZWQoZmFsc2UpCisjZW5kaWYgLy9QTEFURk9STShJT1MpCiB7CiAgICAgLy8g
QWN0aXZlRE9NT2JqZWN0IGV4cGVjdHMgdGhpcyB0byBiZSBjYWxsZWQgdG8gc2V0IGludGVybmFs
IGZsYWdzLgogICAgIHN1c3BlbmRJZk5lZWRlZCgpOwpAQCAtMTYxLDYgKzE2NCw5IEBAIFBhc3NS
ZWZQdHI8RGF0YWJhc2VCYWNrZW5kQ29udGV4dD4gRGF0YWJhc2VDb250ZXh0OjpiYWNrZW5kKCkK
IERhdGFiYXNlVGhyZWFkKiBEYXRhYmFzZUNvbnRleHQ6OmRhdGFiYXNlVGhyZWFkKCkKIHsKICAg
ICBpZiAoIW1fZGF0YWJhc2VUaHJlYWQgJiYgIW1faGFzT3BlbkRhdGFiYXNlcykgeworI2lmIFBM
QVRGT1JNKElPUykKKyAgICAgICAgTXV0ZXhMb2NrZXIgbG9jayhtX2RhdGFiYXNlVGhyZWFkTXV0
ZXgpOworI2VuZGlmIC8vUExBVEZPUk0oSU9TKQogICAgICAgICAvLyBJdCdzIE9LIHRvIGFzayBm
b3IgdGhlIG1fZGF0YWJhc2VUaHJlYWQgYWZ0ZXIgd2UndmUgcmVxdWVzdGVkCiAgICAgICAgIC8v
IHRlcm1pbmF0aW9uIGJlY2F1c2Ugd2UncmUgc3RpbGwgdXNpbmcgaXQgdG8gZXhlY3V0ZSB0aGUg
Y2xvc2luZwogICAgICAgICAvLyBvZiB0aGUgZGF0YWJhc2UuIEhvd2V2ZXIsIGl0IGlzIE5PVCBP
SyB0byBjcmVhdGUgYSBuZXcgdGhyZWFkCkBAIC0xNzIsMTEgKzE3OCwyNiBAQCBEYXRhYmFzZVRo
cmVhZCogRGF0YWJhc2VDb250ZXh0OjpkYXRhYmFzZVRocmVhZCgpCiAgICAgICAgIG1fZGF0YWJh
c2VUaHJlYWQgPSBEYXRhYmFzZVRocmVhZDo6Y3JlYXRlKCk7CiAgICAgICAgIGlmICghbV9kYXRh
YmFzZVRocmVhZC0+c3RhcnQoKSkKICAgICAgICAgICAgIG1fZGF0YWJhc2VUaHJlYWQgPSAwOwor
I2lmIFBMQVRGT1JNKElPUykKKyAgICAgICAgaWYgKG1fZGF0YWJhc2VUaHJlYWQpCisgICAgICAg
ICAgICBtX2RhdGFiYXNlVGhyZWFkLT5zZXRQYXVzZWQobV9wYXVzZWQpOworI2VuZGlmIC8vUExB
VEZPUk0oSU9TKQogICAgIH0KIAogICAgIHJldHVybiBtX2RhdGFiYXNlVGhyZWFkLmdldCgpOwog
fQogCisjaWYgUExBVEZPUk0oSU9TKQordm9pZCBEYXRhYmFzZUNvbnRleHQ6OnNldFBhdXNlZChi
b29sIHBhdXNlZCkKK3sKKyAgICBNdXRleExvY2tlciBsb2NrKG1fZGF0YWJhc2VUaHJlYWRNdXRl
eCk7CisKKyAgICBtX3BhdXNlZCA9IHBhdXNlZDsKKyAgICBpZiAobV9kYXRhYmFzZVRocmVhZCkK
KyAgICAgICAgbV9kYXRhYmFzZVRocmVhZC0+c2V0UGF1c2VkKG1fcGF1c2VkKTsKK30KKyNlbmRp
ZiAvLyBQTEFURk9STShJT1MpCisKIGJvb2wgRGF0YWJhc2VDb250ZXh0OjpzdG9wRGF0YWJhc2Vz
KERhdGFiYXNlVGFza1N5bmNocm9uaXplciogY2xlYW51cFN5bmMpCiB7CiAgICAgaWYgKG1faXNS
ZWdpc3RlcmVkKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFi
YXNlL0RhdGFiYXNlQ29udGV4dC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFz
ZS9EYXRhYmFzZUNvbnRleHQuaAppbmRleCBlYTEzNjAwM2EwMDIzMTlkYjA3NzZiZDhkNDk2YTVm
YWMyODc2NmVkLi40ODUxMGQzZDA3NGE5ODg5NzUwMThkYWM4M2ZjNjFmZDVhNGNhNWI0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlQ29udGV4
dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VDb250
ZXh0LmgKQEAgLTM1LDYgKzM1LDEwIEBACiAjaW5jbHVkZSA8d3RmL0Fzc2VydGlvbnMuaD4KICNp
bmNsdWRlIDx3dGYvVGhyZWFkU2FmZVJlZkNvdW50ZWQuaD4KIAorI2lmIFBMQVRGT1JNKElPUykK
KyNpbmNsdWRlIDx3dGYvVGhyZWFkaW5nLmg+CisjZW5kaWYgLy8gUExBVEZPUk0oSU9TKQorCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIERhdGFiYXNlOwpAQCAtNTMsNiArNTcsOSBAQCBw
dWJsaWM6CiAKICAgICBQYXNzUmVmUHRyPERhdGFiYXNlQmFja2VuZENvbnRleHQ+IGJhY2tlbmQo
KTsKICAgICBEYXRhYmFzZVRocmVhZCogZGF0YWJhc2VUaHJlYWQoKTsKKyNpZiBQTEFURk9STShJ
T1MpCisgICAgdm9pZCBzZXRQYXVzZWQoYm9vbCk7CisjZW5kaWYgLy8gUExBVEZPUk0oSU9TKQog
CiAgICAgdm9pZCBzZXRIYXNPcGVuRGF0YWJhc2VzKCkgeyBtX2hhc09wZW5EYXRhYmFzZXMgPSB0
cnVlOyB9CiAgICAgYm9vbCBoYXNPcGVuRGF0YWJhc2VzKCkgeyByZXR1cm4gbV9oYXNPcGVuRGF0
YWJhc2VzOyB9CkBAIC03NSw2ICs4MiwxMSBAQCBwcml2YXRlOgogCiAgICAgZnJpZW5kIGNsYXNz
IERhdGFiYXNlQmFja2VuZENvbnRleHQ7CiAgICAgZnJpZW5kIGNsYXNzIERhdGFiYXNlTWFuYWdl
cjsKKworI2lmIFBMQVRGT1JNKElPUykKKyAgICBNdXRleCBtX2RhdGFiYXNlVGhyZWFkTXV0ZXg7
CisgICAgYm9vbCBtX3BhdXNlZDsKKyNlbmRpZiAvLyBQTEFURk9STShJT1MpCiB9OwogCiB9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmRhdGFiYXNlL0RhdGFiYXNlTWFuYWdlckNsaWVudC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJkYXRhYmFzZS9EYXRhYmFzZU1hbmFnZXJDbGllbnQuaAppbmRleCBmNGRhNTQ2ZTNkYjYy
NjUwNGE4YTU0M2M2ZjFkOTA2ZWRjZThjZWE3Li5hZmM2OWY4Y2I1YTU3MmYwMmNiMTM5ZmVkOGVi
OTBhZDRhOWU0ODVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFi
YXNlL0RhdGFiYXNlTWFuYWdlckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViZGF0YWJhc2UvRGF0YWJhc2VNYW5hZ2VyQ2xpZW50LmgKQEAgLTM4LDYgKzM4LDEyIEBAIHB1
YmxpYzoKICAgICB2aXJ0dWFsIH5EYXRhYmFzZU1hbmFnZXJDbGllbnQoKSB7IH0KICAgICB2aXJ0
dWFsIHZvaWQgZGlzcGF0Y2hEaWRNb2RpZnlPcmlnaW4oU2VjdXJpdHlPcmlnaW4qKSA9IDA7CiAg
ICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkTW9kaWZ5RGF0YWJhc2UoU2VjdXJpdHlPcmlnaW4q
LCBjb25zdCBTdHJpbmcmIGRhdGFiYXNlTmFtZSkgPSAwOworCisjaWYgUExBVEZPUk0oSU9TKQor
ICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZEFkZE5ld09yaWdpbihTZWN1cml0eU9yaWdpbiop
ID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWREZWxldGVEYXRhYmFzZSgpID0gMDsK
KyAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWREZWxldGVEYXRhYmFzZU9yaWdpbigpID0gMDsK
KyNlbmRpZgogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZVRhc2suY3BwIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZVRhc2suY3BwCmluZGV4IDdiNzk0Njg4
NzVmZDcyMjU4M2NiNGUwZjljMDlhZjFhZjFlNDRkYzguLjhjZjhlYTIxYTc3OGQyMjQyN2U4MjM4
ZWNlNzY5ODM2YWU2NzJmNDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
ZGF0YWJhc2UvRGF0YWJhc2VUYXNrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmRhdGFiYXNlL0RhdGFiYXNlVGFzay5jcHAKQEAgLTg1LDcgKzg1LDEzIEBAIHZvaWQgRGF0YWJh
c2VUYXNrOjpwZXJmb3JtVGFzaygpCiAKICAgICBMT0coU3RvcmFnZUFQSSwgIlBlcmZvcm1pbmcg
JXMgJXBcbiIsIGRlYnVnVGFza05hbWUoKSwgdGhpcyk7CiAKKyNpZiAhUExBVEZPUk0oSU9TKQog
ICAgIG1fZGF0YWJhc2UtPnJlc2V0QXV0aG9yaXplcigpOworI2Vsc2UKKyAgICBpZiAobV9kYXRh
YmFzZSkKKyAgICAgICAgbV9kYXRhYmFzZS0+cmVzZXRBdXRob3JpemVyKCk7CisjZW5kaWYKKwog
ICAgIGRvUGVyZm9ybVRhc2soKTsKIAogICAgIGlmIChtX3N5bmNocm9uaXplcikKQEAgLTE2OCw2
ICsxNzQsMTMgQEAgRGF0YWJhc2VCYWNrZW5kOjpEYXRhYmFzZVRyYW5zYWN0aW9uVGFzazo6fkRh
dGFiYXNlVHJhbnNhY3Rpb25UYXNrKCkKICAgICAgICAgbV90cmFuc2FjdGlvbi0+bm90aWZ5RGF0
YWJhc2VUaHJlYWRJc1NodXR0aW5nRG93bigpOwogfQogCisjaWYgUExBVEZPUk0oSU9TKQorYm9v
bCBEYXRhYmFzZTo6RGF0YWJhc2VUcmFuc2FjdGlvblRhc2s6OnNob3VsZFBlcmZvcm1XaGlsZVBh
dXNlZCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fdHJhbnNhY3Rpb24tPnNob3VsZFBlcmZvcm1X
aGlsZVBhdXNlZCgpOworfQorI2VuZGlmCisKIHZvaWQgRGF0YWJhc2VCYWNrZW5kOjpEYXRhYmFz
ZVRyYW5zYWN0aW9uVGFzazo6ZG9QZXJmb3JtVGFzaygpCiB7CiAgICAgbV90cmFuc2FjdGlvbi0+
cGVyZm9ybU5leHRTdGVwKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmRhdGFiYXNlL0RhdGFiYXNlVGFzay5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRh
YmFzZS9EYXRhYmFzZVRhc2suaAppbmRleCBiM2E1NTA4NjdjMDY5ZmU3N2JiZTEwZmQ4ZTU2Yzk0
YmU2YTRiYjc5Li5mNmZjZWQ1YmM4N2QwYjc5NDQxMGNmZDExNTVhODNhNDI2NWY3NWE5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlVGFzay5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VUYXNrLmgK
QEAgLTc1LDYgKzc1LDEwIEBAIGNsYXNzIERhdGFiYXNlVGFzayB7CiBwdWJsaWM6CiAgICAgdmly
dHVhbCB+RGF0YWJhc2VUYXNrKCk7CiAKKyNpZiBQTEFURk9STShJT1MpCisgICAgdmlydHVhbCBi
b29sIHNob3VsZFBlcmZvcm1XaGlsZVBhdXNlZCgpIGNvbnN0ID0gMDsKKyNlbmRpZgorCiAgICAg
dm9pZCBwZXJmb3JtVGFzaygpOwogCiAgICAgRGF0YWJhc2VCYWNrZW5kKiBkYXRhYmFzZSgpIGNv
bnN0IHsgcmV0dXJuIG1fZGF0YWJhc2U7IH0KQEAgLTEwNCw2ICsxMDgsMTAgQEAgcHVibGljOgog
ICAgIHsKICAgICAgICAgcmV0dXJuIHN0ZDo6dW5pcXVlX3B0cjxEYXRhYmFzZU9wZW5UYXNrPihu
ZXcgRGF0YWJhc2VPcGVuVGFzayhkYiwgc2V0VmVyc2lvbkluTmV3RGF0YWJhc2UsIHN5bmNocm9u
aXplciwgZXJyb3IsIGVycm9yTWVzc2FnZSwgc3VjY2VzcykpOwogICAgIH0KKyAgICAKKyNpZiBQ
TEFURk9STShJT1MpCisgICAgdmlydHVhbCBib29sIHNob3VsZFBlcmZvcm1XaGlsZVBhdXNlZCgp
IGNvbnN0IE9WRVJSSURFIHsgcmV0dXJuIHRydWU7IH0KKyNlbmRpZgogCiBwcml2YXRlOgogICAg
IERhdGFiYXNlT3BlblRhc2soRGF0YWJhc2VCYWNrZW5kKiwgYm9vbCBzZXRWZXJzaW9uSW5OZXdE
YXRhYmFzZSwgRGF0YWJhc2VUYXNrU3luY2hyb25pemVyKiwgRGF0YWJhc2VFcnJvciYsIFN0cmlu
ZyYgZXJyb3JNZXNzYWdlLCBib29sJiBzdWNjZXNzKTsKQEAgLTEyNiw2ICsxMzQsMTAgQEAgcHVi
bGljOgogICAgICAgICByZXR1cm4gc3RkOjp1bmlxdWVfcHRyPERhdGFiYXNlQ2xvc2VUYXNrPihu
ZXcgRGF0YWJhc2VDbG9zZVRhc2soZGIsIHN5bmNocm9uaXplcikpOwogICAgIH0KIAorI2lmIFBM
QVRGT1JNKElPUykKKyAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkUGVyZm9ybVdoaWxlUGF1c2VkKCkg
Y29uc3QgT1ZFUlJJREUgeyByZXR1cm4gdHJ1ZTsgfQorI2VuZGlmCisKIHByaXZhdGU6CiAgICAg
RGF0YWJhc2VDbG9zZVRhc2soRGF0YWJhc2VCYWNrZW5kKiwgRGF0YWJhc2VUYXNrU3luY2hyb25p
emVyKik7CiAKQEAgLTE0NSw2ICsxNTcsMTAgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gc3Rk
Ojp1bmlxdWVfcHRyPERhdGFiYXNlVHJhbnNhY3Rpb25UYXNrPihuZXcgRGF0YWJhc2VUcmFuc2Fj
dGlvblRhc2sodHJhbnNhY3Rpb24pKTsKICAgICB9CiAKKyNpZiBQTEFURk9STShJT1MpCisgICAg
dmlydHVhbCBib29sIHNob3VsZFBlcmZvcm1XaGlsZVBhdXNlZCgpIGNvbnN0IE9WRVJSSURFOwor
I2VuZGlmCisKICAgICBTUUxUcmFuc2FjdGlvbkJhY2tlbmQqIHRyYW5zYWN0aW9uKCkgY29uc3Qg
eyByZXR1cm4gbV90cmFuc2FjdGlvbi5nZXQoKTsgfQogCiBwcml2YXRlOgpAQCAtMTY2LDYgKzE4
MiwxMCBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBzdGQ6OnVuaXF1ZV9wdHI8RGF0YWJhc2VU
YWJsZU5hbWVzVGFzaz4obmV3IERhdGFiYXNlVGFibGVOYW1lc1Rhc2soZGIsIHN5bmNocm9uaXpl
ciwgbmFtZXMpKTsKICAgICB9CiAKKyNpZiBQTEFURk9STShJT1MpCisgICAgdmlydHVhbCBib29s
IHNob3VsZFBlcmZvcm1XaGlsZVBhdXNlZCgpIGNvbnN0IE9WRVJSSURFIHsgcmV0dXJuIHRydWU7
IH0KKyNlbmRpZgorCiBwcml2YXRlOgogICAgIERhdGFiYXNlVGFibGVOYW1lc1Rhc2soRGF0YWJh
c2VCYWNrZW5kKiwgRGF0YWJhc2VUYXNrU3luY2hyb25pemVyKiwgVmVjdG9yPFN0cmluZz4mIG5h
bWVzKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9E
YXRhYmFzZVRocmVhZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0Rh
dGFiYXNlVGhyZWFkLmNwcAppbmRleCBlMGQ0Nzk2ZWYzZTZlNmQ0M2JhYTI3ZTkxNDlhZTVmOTcz
MjhlOTczLi43ZWU3NjRjYTBlZGVjZTI1YTk2YTdjZjU4YWIwMzRhMDYyY2I0ZmFhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlVGhyZWFkLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlVGhyZWFk
LmNwcApAQCAtNDIsNiArNDIsOSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIERhdGFiYXNlVGhy
ZWFkOjpEYXRhYmFzZVRocmVhZCgpCiAgICAgOiBtX3RocmVhZElEKDApCisjaWYgUExBVEZPUk0o
SU9TKQorICAgICwgbV9wYXVzZWQoZmFsc2UpCisjZW5kaWYKICAgICAsIG1fdHJhbnNhY3Rpb25D
bGllbnQoYWRvcHRQdHIobmV3IFNRTFRyYW5zYWN0aW9uQ2xpZW50KCkpKQogICAgICwgbV90cmFu
c2FjdGlvbkNvb3JkaW5hdG9yKGFkb3B0UHRyKG5ldyBTUUxUcmFuc2FjdGlvbkNvb3JkaW5hdG9y
KCkpKQogICAgICwgbV9jbGVhbnVwU3luYygwKQpAQCAtNzcsNiArODAsOSBAQCB2b2lkIERhdGFi
YXNlVGhyZWFkOjpyZXF1ZXN0VGVybWluYXRpb24oRGF0YWJhc2VUYXNrU3luY2hyb25pemVyICpj
bGVhbnVwU3luYykKIHsKICAgICBtX2NsZWFudXBTeW5jID0gY2xlYW51cFN5bmM7CiAgICAgTE9H
KFN0b3JhZ2VBUEksICJEYXRhYmFzZVRocmVhZCAlcCB3YXMgYXNrZWQgdG8gdGVybWluYXRlXG4i
LCB0aGlzKTsKKyNpZiBQTEFURk9STShJT1MpCisgICAgbV9wYXVzZWRRdWV1ZS5raWxsKCk7Cisj
ZW5kaWYKICAgICBtX3F1ZXVlLmtpbGwoKTsKIH0KIApAQCAtOTgsNiArMTA0LDgwIEBAIHZvaWQg
RGF0YWJhc2VUaHJlYWQ6OmRhdGFiYXNlVGhyZWFkU3RhcnQodm9pZCogdkRhdGFiYXNlVGhyZWFk
KQogICAgIGRiVGhyZWFkLT5kYXRhYmFzZVRocmVhZCgpOwogfQogCisjaWYgUExBVEZPUk0oSU9T
KQorY2xhc3MgRGF0YWJhc2VVbnBhdXNlVGFzayA6IHB1YmxpYyBEYXRhYmFzZVRhc2sgeworcHVi
bGljOgorICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8RGF0YWJhc2VVbnBhdXNlVGFzaz4gY3Jl
YXRlKERhdGFiYXNlVGhyZWFkKiB0aHJlYWQpCisgICAgeworICAgICAgICByZXR1cm4gc3RkOjp1
bmlxdWVfcHRyPERhdGFiYXNlVW5wYXVzZVRhc2s+KG5ldyBEYXRhYmFzZVVucGF1c2VUYXNrKHRo
cmVhZCkpOworICAgIH0KKyAgICAKKyAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkUGVyZm9ybVdoaWxl
UGF1c2VkKCkgY29uc3QgCisgICAgeworICAgICAgICAvLyBTaW5jZSB3ZSdyZSBub3QgbG9ja2lu
ZyB0aGUgRGF0YWJhc2VUaHJlYWQ6Om1fcGF1c2VkIGluIHRoZSBtYWluIGRhdGFiYXNlIHRocmVh
ZCBsb29wLCBpdCdzIHBvc3NpYmxlIHRoYXQKKyAgICAgICAgLy8gYSBEYXRhYmFzZVVucGF1c2VU
YXNrIG1pZ2h0IGJlIGFkZGVkIHRvIHRoZSBtX3BhdXNlZFF1ZXVlIGFuZCBwZXJmb3JtZWQgZnJv
bSB3aXRoaW4gOjpoYW5kbGVQYXVzZWRRdWV1ZS4KKyAgICAgICAgLy8gVG8gcHJvdGVjdCBhZ2Fp
bnN0IHRoaXMsIHdlIGFsbG93IGl0IHRvIGJlIHBlcmZvcm1lZCBldmVuIGlmIHRoZSBkYXRhYmFz
ZSBpcyBwYXVzZWQuCisgICAgICAgIC8vIElmIHRoZSB0aHJlYWQgaXMgcGF1c2VkIHdoZW4gaXQg
aXMgYmVpbmcgcGVyZm9ybWVkLCB0aGUgdGFza3MgZnJvbSB0aGUgcGF1c2VkIHF1ZXVlIHdpbGwg
c2ltcGx5IGJlCisgICAgICAgIC8vIHJlcXVldWVkIGluc3RlYWQgb2YgcGVyZm9ybWVkLgorICAg
ICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgRGF0YWJhc2VVbnBhdXNl
VGFzayhEYXRhYmFzZVRocmVhZCogdGhyZWFkKQorICAgICAgICA6IERhdGFiYXNlVGFzaygwLCAw
KQorICAgICAgICAsIG1fdGhyZWFkKHRocmVhZCkKKyAgICB7fQorCisgICAgdmlydHVhbCB2b2lk
IGRvUGVyZm9ybVRhc2soKQorICAgIHsKKyAgICAgICAgbV90aHJlYWQtPmhhbmRsZVBhdXNlZFF1
ZXVlKCk7CisgICAgfQorI2lmICFMT0dfRElTQUJMRUQKKyAgICB2aXJ0dWFsIGNvbnN0IGNoYXIq
IGRlYnVnVGFza05hbWUoKSBjb25zdCB7IHJldHVybiAiRGF0YWJhc2VVbnBhdXNlVGFzayI7IH0K
KyNlbmRpZgorCisgICAgRGF0YWJhc2VUaHJlYWQqIG1fdGhyZWFkOworfTsKKworCit2b2lkIERh
dGFiYXNlVGhyZWFkOjpzZXRQYXVzZWQoYm9vbCBwYXVzZWQpCit7CisgICAgaWYgKG1fcGF1c2Vk
ID09IHBhdXNlZCkKKyAgICAgICAgcmV0dXJuOworCisgICAgTXV0ZXhMb2NrZXIgcGF1c2VkTG9j
a2VyKG1fcGF1c2VkTXV0ZXgpOworICAgIG1fcGF1c2VkID0gcGF1c2VkOworICAgIGlmICghbV9w
YXVzZWQpCisgICAgICAgIHNjaGVkdWxlVGFzayhEYXRhYmFzZVVucGF1c2VUYXNrOjpjcmVhdGUo
dGhpcykpOworfQorCit2b2lkIERhdGFiYXNlVGhyZWFkOjpoYW5kbGVQYXVzZWRRdWV1ZSgpCit7
CisgICAgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxEYXRhYmFzZVRhc2s+ID4gcGF1c2VkVGFza3M7
CisgICAgd2hpbGUgKGF1dG8gdGFzayA9IG1fcGF1c2VkUXVldWUudHJ5R2V0TWVzc2FnZSgpKQor
ICAgICAgICBwYXVzZWRUYXNrcy5hcHBlbmQoc3RkOjptb3ZlKHRhc2spKTsKKworICAgIGZvciAo
dW5zaWduZWQgaSA9IDA7IGkgPCBwYXVzZWRUYXNrcy5zaXplKCk7ICsraSkgeworICAgICAgICBB
dXRvZHJhaW5lZFBvb2wgcG9vbDsKKworICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8RGF0YWJhc2VU
YXNrPiB0YXNrKHBhdXNlZFRhc2tzW2ldLnJlbGVhc2UoKSk7CisgICAgICAgIHsKKyAgICAgICAg
ICAgIE11dGV4TG9ja2VyIHBhdXNlZExvY2tlcihtX3BhdXNlZE11dGV4KTsKKyAgICAgICAgICAg
IGlmIChtX3BhdXNlZCkgeworICAgICAgICAgICAgICAgIG1fcGF1c2VkUXVldWUuYXBwZW5kKHN0
ZDo6bW92ZSh0YXNrKSk7CisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICB9
CisgICAgICAgIH0KKyAgICAgICAgICAgIAorICAgICAgICBpZiAodGVybWluYXRpb25SZXF1ZXN0
ZWQoKSkKKyAgICAgICAgICAgIGJyZWFrOworICAgIAorICAgICAgICB0YXNrLT5wZXJmb3JtVGFz
aygpOworICAgIH0KK30KKyNlbmRpZiAvL1BMQVRGT1JNKElPUykKKworCiB2b2lkIERhdGFiYXNl
VGhyZWFkOjpkYXRhYmFzZVRocmVhZCgpCiB7CiAgICAgewpAQCAtMTA5LDcgKzE4OSwxNCBAQCB2
b2lkIERhdGFiYXNlVGhyZWFkOjpkYXRhYmFzZVRocmVhZCgpCiAgICAgd2hpbGUgKGF1dG8gdGFz
ayA9IG1fcXVldWUud2FpdEZvck1lc3NhZ2UoKSkgewogICAgICAgICBBdXRvZHJhaW5lZFBvb2wg
cG9vbDsKIAorI2lmIFBMQVRGT1JNKElPUykKKyAgICAgICAgaWYgKCFtX3BhdXNlZCB8fCB0YXNr
LT5zaG91bGRQZXJmb3JtV2hpbGVQYXVzZWQoKSkKKyAgICAgICAgICAgIHRhc2stPnBlcmZvcm1U
YXNrKCk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIG1fcGF1c2VkUXVldWUuYXBwZW5kKHN0
ZDo6bW92ZSh0YXNrKSk7CisjZWxzZQogICAgICAgICB0YXNrLT5wZXJmb3JtVGFzaygpOworI2Vu
ZGlmCiAgICAgfQogCiAgICAgLy8gQ2xlYW4gdXAgdGhlIGxpc3Qgb2YgYWxsIHBlbmRpbmcgdHJh
bnNhY3Rpb25zIG9uIHRoaXMgZGF0YWJhc2UgdGhyZWFkCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlVGhyZWFkLmggYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlVGhyZWFkLmgKaW5kZXggNGIyMDJlZWYyNWE4
ZjA2ZWNiNTRlNDcxYjhlZjY2NmMyMGNjOTYwZC4uYzA1OTc5ZTVhZGE1YmE5NmU3OGUzMmU4Njhj
MjRiYTRmZjg1Y2VlOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRh
YmFzZS9EYXRhYmFzZVRocmVhZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0
YWJhc2UvRGF0YWJhc2VUaHJlYWQuaApAQCAtNjksNiArNjksMTEgQEAgcHVibGljOgogICAgIFNR
TFRyYW5zYWN0aW9uQ2xpZW50KiB0cmFuc2FjdGlvbkNsaWVudCgpIHsgcmV0dXJuIG1fdHJhbnNh
Y3Rpb25DbGllbnQuZ2V0KCk7IH0KICAgICBTUUxUcmFuc2FjdGlvbkNvb3JkaW5hdG9yKiB0cmFu
c2FjdGlvbkNvb3JkaW5hdG9yKCkgeyByZXR1cm4gbV90cmFuc2FjdGlvbkNvb3JkaW5hdG9yLmdl
dCgpOyB9CiAKKyNpZiBQTEFURk9STShJT1MpCisgICAgdm9pZCBzZXRQYXVzZWQoYm9vbCk7Cisg
ICAgdm9pZCBoYW5kbGVQYXVzZWRRdWV1ZSgpOworI2VuZGlmCisKIHByaXZhdGU6CiAgICAgRGF0
YWJhc2VUaHJlYWQoKTsKIApAQCAtODAsNiArODUsMTEgQEAgcHJpdmF0ZToKICAgICBSZWZQdHI8
RGF0YWJhc2VUaHJlYWQ+IG1fc2VsZlJlZjsKIAogICAgIE1lc3NhZ2VRdWV1ZTxEYXRhYmFzZVRh
c2s+IG1fcXVldWU7CisjaWYgUExBVEZPUk0oSU9TKQorICAgIE1lc3NhZ2VRdWV1ZTxEYXRhYmFz
ZVRhc2s+IG1fcGF1c2VkUXVldWU7CisgICAgTXV0ZXggbV9wYXVzZWRNdXRleDsKKyAgICB2b2xh
dGlsZSBib29sIG1fcGF1c2VkOworI2VuZGlmCiAKICAgICAvLyBUaGlzIHNldCBrZWVwcyB0cmFj
ayBvZiB0aGUgb3BlbiBkYXRhYmFzZXMgdGhhdCBoYXZlIGJlZW4gdXNlZCBvbiB0aGlzIHRocmVh
ZC4KICAgICB0eXBlZGVmIEhhc2hTZXQ8UmVmUHRyPERhdGFiYXNlQmFja2VuZD4+IERhdGFiYXNl
U2V0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRh
YmFzZVRyYWNrZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRh
YmFzZVRyYWNrZXIuY3BwCmluZGV4IDM4ZWMxYzU3MjEwMmVmNGQ0ZGYxODkzY2YyOTRlYWIyYTY4
ZTYyMzIuLjFkZTE2NDc4NDg2NWY1ZDBmZTUwNTZiZjJiNDlmODgzMzY1MzYyYjggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VUcmFja2VyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlVHJhY2tl
ci5jcHAKQEAgLTMzLDYgKzMzLDcgQEAKIAogI2luY2x1ZGUgIkNocm9tZS5oIgogI2luY2x1ZGUg
IkNocm9tZUNsaWVudC5oIgorI2luY2x1ZGUgIkRhdGFiYXNlLmgiCiAjaW5jbHVkZSAiRGF0YWJh
c2VCYWNrZW5kQmFzZS5oIgogI2luY2x1ZGUgIkRhdGFiYXNlQmFja2VuZENvbnRleHQuaCIKICNp
bmNsdWRlICJEYXRhYmFzZU1hbmFnZXIuaCIKQEAgLTUwLDYgKzUxLDEwIEBACiAjaW5jbHVkZSA8
d3RmL1N0ZExpYkV4dHJhcy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KIAorI2lm
IFBMQVRGT1JNKElPUykKKyNpbmNsdWRlICJXZWJDb3JlVGhyZWFkLmgiCisjZW5kaWYKKwogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCiBzdGF0aWMgRGF0YWJhc2VUcmFja2VyKiBzdGF0aWNUcmFja2Vy
ID0gMDsKQEAgLTc0MSw2ICs3NDYsMTAgQEAgdm9pZCBEYXRhYmFzZVRyYWNrZXI6OnNldFF1b3Rh
KFNlY3VyaXR5T3JpZ2luKiBvcmlnaW4sIHVuc2lnbmVkIGxvbmcgbG9uZyBxdW90YSkKICAgICBv
cGVuVHJhY2tlckRhdGFiYXNlKENyZWF0ZUlmRG9lc05vdEV4aXN0KTsKICAgICBpZiAoIW1fZGF0
YWJhc2UuaXNPcGVuKCkpCiAgICAgICAgIHJldHVybjsKKyAgICAKKyNpZiBQTEFURk9STShJT1Mp
CisgICAgYm9vbCBpbnNlcnRlZE5ld09yaWdpbiA9IGZhbHNlOworI2VuZGlmCiAKICAgICBib29s
IG9yaWdpbkVudHJ5RXhpc3RzID0gaGFzRW50cnlGb3JPcmlnaW5Ob0xvY2sob3JpZ2luKTsKICAg
ICBpZiAoIW9yaWdpbkVudHJ5RXhpc3RzKSB7CkBAIC03NTMsNiArNzYyLDEwIEBAIHZvaWQgRGF0
YWJhc2VUcmFja2VyOjpzZXRRdW90YShTZWN1cml0eU9yaWdpbiogb3JpZ2luLCB1bnNpZ25lZCBs
b25nIGxvbmcgcXVvdGEpCiAKICAgICAgICAgICAgIGlmIChzdGF0ZW1lbnQuc3RlcCgpICE9IFNR
TFJlc3VsdERvbmUpCiAgICAgICAgICAgICAgICAgTE9HX0VSUk9SKCJVbmFibGUgdG8gZXN0YWJs
aXNoIG9yaWdpbiAlcyBpbiB0aGUgdHJhY2tlciIsIG9yaWdpbi0+ZGF0YWJhc2VJZGVudGlmaWVy
KCkuYXNjaWkoKS5kYXRhKCkpOworI2lmIFBMQVRGT1JNKElPUykKKyAgICAgICAgICAgIGVsc2UK
KyAgICAgICAgICAgICAgICBpbnNlcnRlZE5ld09yaWdpbiA9IHRydWU7CisjZW5kaWYKICAgICAg
ICAgfQogICAgIH0gZWxzZSB7CiAgICAgICAgIFNRTGl0ZVN0YXRlbWVudCBzdGF0ZW1lbnQobV9k
YXRhYmFzZSwgIlVQREFURSBPcmlnaW5zIFNFVCBxdW90YT0/IFdIRVJFIG9yaWdpbj0/Iik7CkBA
IC03NjksNyArNzgyLDE1IEBAIHZvaWQgRGF0YWJhc2VUcmFja2VyOjpzZXRRdW90YShTZWN1cml0
eU9yaWdpbiogb3JpZ2luLCB1bnNpZ25lZCBsb25nIGxvbmcgcXVvdGEpCiAgICAgfQogCiAgICAg
aWYgKG1fY2xpZW50KQorI2lmIFBMQVRGT1JNKElPUykKKyAgICB7CisgICAgICAgIGlmIChpbnNl
cnRlZE5ld09yaWdpbikKKyAgICAgICAgICAgIG1fY2xpZW50LT5kaXNwYXRjaERpZEFkZE5ld09y
aWdpbihvcmlnaW4pOworI2VuZGlmCiAgICAgICAgIG1fY2xpZW50LT5kaXNwYXRjaERpZE1vZGlm
eU9yaWdpbihvcmlnaW4pOworI2lmIFBMQVRGT1JNKElPUykKKyAgICB9CisjZW5kaWYKIH0KIAog
Ym9vbCBEYXRhYmFzZVRyYWNrZXI6OmFkZERhdGFiYXNlKFNlY3VyaXR5T3JpZ2luKiBvcmlnaW4s
IGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiBwYXRoKQpAQCAtODk3LDYgKzkxOCw5
IEBAIGJvb2wgRGF0YWJhc2VUcmFja2VyOjpkZWxldGVPcmlnaW4oU2VjdXJpdHlPcmlnaW4qIG9y
aWdpbikKIAogICAgICAgICBpZiAobV9jbGllbnQpIHsKICAgICAgICAgICAgIG1fY2xpZW50LT5k
aXNwYXRjaERpZE1vZGlmeU9yaWdpbihvcmlnaW4pOworI2lmIFBMQVRGT1JNKElPUykKKyAgICAg
ICAgICAgIG1fY2xpZW50LT5kaXNwYXRjaERpZERlbGV0ZURhdGFiYXNlT3JpZ2luKCk7CisjZW5k
aWYKICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBkYXRhYmFzZU5hbWVzLnNp
emUoKTsgKytpKQogICAgICAgICAgICAgICAgIG1fY2xpZW50LT5kaXNwYXRjaERpZE1vZGlmeURh
dGFiYXNlKG9yaWdpbiwgZGF0YWJhc2VOYW1lc1tpXSk7CiAgICAgICAgIH0KQEAgLTEwNjIsNiAr
MTA4Niw5IEBAIGJvb2wgRGF0YWJhc2VUcmFja2VyOjpkZWxldGVEYXRhYmFzZShTZWN1cml0eU9y
aWdpbiogb3JpZ2luLCBjb25zdCBTdHJpbmcmIG5hbWUpCiAgICAgaWYgKG1fY2xpZW50KSB7CiAg
ICAgICAgIG1fY2xpZW50LT5kaXNwYXRjaERpZE1vZGlmeU9yaWdpbihvcmlnaW4pOwogICAgICAg
ICBtX2NsaWVudC0+ZGlzcGF0Y2hEaWRNb2RpZnlEYXRhYmFzZShvcmlnaW4sIG5hbWUpOworI2lm
IFBMQVRGT1JNKElPUykKKyAgICAgICAgbV9jbGllbnQtPmRpc3BhdGNoRGlkRGVsZXRlRGF0YWJh
c2UoKTsKKyNlbmRpZgogICAgIH0KICAgICBkb25lRGVsZXRpbmdEYXRhYmFzZShvcmlnaW4sIG5h
bWUpOwogICAgIApAQCAtMTExMCw4ICsxMTM3LDIwMiBAQCBib29sIERhdGFiYXNlVHJhY2tlcjo6
ZGVsZXRlRGF0YWJhc2VGaWxlKFNlY3VyaXR5T3JpZ2luKiBvcmlnaW4sIGNvbnN0IFN0cmluZyYg
bgogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBkZWxldGVkRGF0YWJhc2VzLnNpemUoKTsg
KytpKQogICAgICAgICBkZWxldGVkRGF0YWJhc2VzW2ldLT5tYXJrQXNEZWxldGVkQW5kQ2xvc2Uo
KTsKIAorI2lmICFQTEFURk9STShJT1MpCiAgICAgcmV0dXJuIFNRTGl0ZUZpbGVTeXN0ZW06OmRl
bGV0ZURhdGFiYXNlRmlsZShmdWxsUGF0aCk7CisjZWxzZQorICAgIC8vIE9uIHRoZSBwaG9uZSwg
b3RoZXIgYmFja2dyb3VuZCBwcm9jZXNzZXMgbWF5IHN0aWxsIGJlIGFjY2Vzc2luZyB0aGlzIGRh
dGFiYXNlLiAgRGVsZXRpbmcgdGhlIGRhdGFiYXNlIGRpcmVjdGx5CisgICAgLy8gd291bGQgbnVr
ZSB0aGUgUE9TSVggZmlsZSBsb2NrcywgcG90ZW50aWFsbHkgY2F1c2luZyBTYWZhcmkvV2ViQXBw
IHRvIGNvcnJ1cHQgdGhlIG5ldyBkYiBpZiBpdCdzIHJ1bm5pbmcgaW4gdGhlIGJhY2tncm91bmQu
CisgICAgLy8gV2UnbGwgaW5zdGVhZCB0cnVuY2F0ZSB0aGUgZGF0YWJhc2UgZmlsZSB0byAwIGJ5
dGVzLiAgSWYgYW5vdGhlciBwcm9jZXNzIGlzIG9wZXJhdGluZyBvbiB0aGlzIHNhbWUgZGF0YWJh
c2UgZmlsZSBhZnRlcgorICAgIC8vIHRoZSB0cnVuY2F0aW9uLCBpdCBzaG91bGQgZ2V0IGFuIGVy
cm9yIHNpbmNlIHRoZSBkYXRhYmFzZSBmaWxlIGlzIG5vIGxvbmdlciB2YWxpZC4gIFdoZW4gU2Fm
YXJpIGlzIGxhdW5jaGVkCisgICAgLy8gbmV4dCB0aW1lLCBpdCdsbCBnbyB0aHJvdWdoIHRoZSBk
YXRhYmFzZSBmaWxlcyBhbmQgY2xlYW4gdXAgYW55IHplcm8tYnl0ZXMgb25lcy4KKyAgICBTUUxp
dGVEYXRhYmFzZSBkYXRhYmFzZTsKKyAgICBpZiAoZGF0YWJhc2Uub3BlbihmdWxsUGF0aCkpCisg
ICAgICAgIHJldHVybiBTUUxpdGVGaWxlU3lzdGVtOjp0cnVuY2F0ZURhdGFiYXNlRmlsZShkYXRh
YmFzZS5zcWxpdGUzSGFuZGxlKCkpOworICAgIHJldHVybiBmYWxzZTsKKyNlbmRpZgorfQorICAg
IAorI2lmIFBMQVRGT1JNKElPUykKK3ZvaWQgRGF0YWJhc2VUcmFja2VyOjpyZW1vdmVEZWxldGVk
T3BlbmVkRGF0YWJhc2VzKCkKK3sKKyAgICAvLyBUaGlzIGlzIGNhbGxlZCB3aGVuIGFub3RoZXIg
YXBwIGhhcyBkZWxldGVkIGEgZGF0YWJhc2UuICBHbyB0aHJvdWdoIGFsbCBvcGVuZWQgZGF0YWJh
c2VzIGluIHRoaXMKKyAgICAvLyB0cmFja2VyIGFuZCBjbG9zZSBhbnkgdGhhdCdzIG5vIGxvbmdl
ciBiZWluZyB0cmFja2VkIGluIHRoZSBkYXRhYmFzZS4KKyAgICAKKyAgICB7CisgICAgICAgIC8v
IEFjcXVpcmUgdGhlIGxvY2sgYmVmb3JlIGNhbGxpbmcgb3BlblRyYWNrZXJEYXRhYmFzZS4KKyAg
ICAgICAgTXV0ZXhMb2NrZXIgbG9ja0RhdGFiYXNlKG1fZGF0YWJhc2VHdWFyZCk7CisgICAgICAg
IG9wZW5UcmFja2VyRGF0YWJhc2UoRG9udENyZWF0ZUlmRG9lc05vdEV4aXN0KTsKKyAgICB9CisK
KyAgICBpZiAoIW1fZGF0YWJhc2UuaXNPcGVuKCkpCisgICAgICAgIHJldHVybjsKKyAgICAKKyAg
ICAvLyBLZWVwIHRyYWNrIG9mIHdoaWNoIG9wZW5lZCBkYXRhYmFzZXMgaGF2ZSBiZWVuIGRlbGV0
ZWQuCisgICAgVmVjdG9yPFJlZlB0cjxEYXRhYmFzZT4gPiBkZWxldGVkRGF0YWJhc2VzOworICAg
IHR5cGVkZWYgSGFzaE1hcDxSZWZQdHI8U2VjdXJpdHlPcmlnaW4+LCBWZWN0b3I8U3RyaW5nPiA+
IERlbGV0ZWREYXRhYmFzZU1hcDsKKyAgICBEZWxldGVkRGF0YWJhc2VNYXAgZGVsZXRlZERhdGFi
YXNlTWFwOworICAgIAorICAgIC8vIE1ha2Ugc3VyZSBub3QgdG8gaG9sZCB0aGUgbV9vcGVuRGF0
YWJhc2VNYXBHdWFyZCBtdXRleCB3aGVuIGNhbGxpbmcKKyAgICAvLyBEYXRhYmFzZTo6bWFya0Fz
RGVsZXRlZEFuZENsb3NlKCksIHNpbmNlIHRoYXQgY2FuIGNhdXNlIGEgZGVhZGxvY2sKKyAgICAv
LyBkdXJpbmcgdGhlIHN5bmNocm9ub3VzIERhdGFiYXNlVGhyZWFkIGNhbGwgaXQgdHJpZ2dlcnMu
CisgICAgeworICAgICAgICBNdXRleExvY2tlciBvcGVuRGF0YWJhc2VNYXBMb2NrKG1fb3BlbkRh
dGFiYXNlTWFwR3VhcmQpOworICAgICAgICBpZiAobV9vcGVuRGF0YWJhc2VNYXApIHsKKyAgICAg
ICAgICAgIERhdGFiYXNlT3JpZ2luTWFwOjpjb25zdF9pdGVyYXRvciBvcmlnaW5NYXBFbmQgPSBt
X29wZW5EYXRhYmFzZU1hcC0+ZW5kKCk7CisgICAgICAgICAgICBmb3IgKERhdGFiYXNlT3JpZ2lu
TWFwOjpjb25zdF9pdGVyYXRvciBvcmlnaW5NYXBJdCA9IG1fb3BlbkRhdGFiYXNlTWFwLT5iZWdp
bigpOyBvcmlnaW5NYXBJdCAhPSBvcmlnaW5NYXBFbmQ7ICsrb3JpZ2luTWFwSXQpIHsKKyAgICAg
ICAgICAgICAgICBSZWZQdHI8U2VjdXJpdHlPcmlnaW4+IG9yaWdpbiA9IG9yaWdpbk1hcEl0LT5r
ZXk7CisgICAgICAgICAgICAgICAgRGF0YWJhc2VOYW1lTWFwKiBkYXRhYmFzZU5hbWVNYXAgPSBv
cmlnaW5NYXBJdC0+dmFsdWU7CisgICAgICAgICAgICAgICAgVmVjdG9yPFN0cmluZz4gZGVsZXRl
ZERhdGFiYXNlTmFtZXNGb3JUaGlzT3JpZ2luOworCisgICAgICAgICAgICAgICAgLy8gTG9vcCB0
aHJvdWdoIGFsbCBvcGVuZWQgZGF0YWJhc2VzIGluIHRoaXMgb3JpZ2luLiAgR2V0IHRoZSBjdXJy
ZW50IGRhdGFiYXNlIGZpbGUgcGF0aCBvZiBlYWNoIGRhdGFiYXNlIGFuZCBzZWUgaWYKKyAgICAg
ICAgICAgICAgICAvLyBpdCBzdGlsbCBtYXRjaGVzIHRoZSBwYXRoIHN0b3JlZCBpbiB0aGUgb3Bl
bmVkIGRhdGFiYXNlIG9iamVjdC4KKyAgICAgICAgICAgICAgICBEYXRhYmFzZU5hbWVNYXA6OmNv
bnN0X2l0ZXJhdG9yIGRiTmFtZU1hcEVuZCA9IGRhdGFiYXNlTmFtZU1hcC0+ZW5kKCk7CisgICAg
ICAgICAgICAgICAgZm9yIChEYXRhYmFzZU5hbWVNYXA6OmNvbnN0X2l0ZXJhdG9yIGRiTmFtZU1h
cEl0ID0gZGF0YWJhc2VOYW1lTWFwLT5iZWdpbigpOyBkYk5hbWVNYXBJdCAhPSBkYk5hbWVNYXBF
bmQ7ICsrZGJOYW1lTWFwSXQpIHsKKyAgICAgICAgICAgICAgICAgICAgU3RyaW5nIGRhdGFiYXNl
TmFtZSA9IGRiTmFtZU1hcEl0LT5rZXk7CisgICAgICAgICAgICAgICAgICAgIFN0cmluZyBkYXRh
YmFzZUZpbGVOYW1lOworICAgICAgICAgICAgICAgICAgICBTUUxpdGVTdGF0ZW1lbnQgc3RhdGVt
ZW50KG1fZGF0YWJhc2UsICJTRUxFQ1QgcGF0aCBGUk9NIERhdGFiYXNlcyBXSEVSRSBvcmlnaW49
PyBBTkQgbmFtZT0/OyIpOworICAgICAgICAgICAgICAgICAgICBpZiAoc3RhdGVtZW50LnByZXBh
cmUoKSA9PSBTUUxSZXN1bHRPaykgeworICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGVtZW50
LmJpbmRUZXh0KDEsIG9yaWdpbi0+ZGF0YWJhc2VJZGVudGlmaWVyKCkpOworICAgICAgICAgICAg
ICAgICAgICAgICAgc3RhdGVtZW50LmJpbmRUZXh0KDIsIGRhdGFiYXNlTmFtZSk7CisgICAgICAg
ICAgICAgICAgICAgICAgICBpZiAoc3RhdGVtZW50LnN0ZXAoKSA9PSBTUUxSZXN1bHRSb3cpCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YWJhc2VGaWxlTmFtZSA9IHN0YXRlbWVudC5n
ZXRDb2x1bW5UZXh0KDApOworICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGVtZW50LmZpbmFs
aXplKCk7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgCisgICAg
ICAgICAgICAgICAgICAgIGJvb2wgZm91bmREZWxldGVkRGF0YWJhc2UgPSBmYWxzZTsKKyAgICAg
ICAgICAgICAgICAgICAgRGF0YWJhc2VTZXQqIGRhdGFiYXNlU2V0ID0gZGJOYW1lTWFwSXQtPnZh
bHVlOworICAgICAgICAgICAgICAgICAgICBEYXRhYmFzZVNldDo6Y29uc3RfaXRlcmF0b3IgZGJF
bmQgPSBkYXRhYmFzZVNldC0+ZW5kKCk7CisgICAgICAgICAgICAgICAgICAgIGZvciAoRGF0YWJh
c2VTZXQ6OmNvbnN0X2l0ZXJhdG9yIGRiSXQgPSBkYXRhYmFzZVNldC0+YmVnaW4oKTsgZGJJdCAh
PSBkYkVuZDsgKytkYkl0KSB7CisgICAgICAgICAgICAgICAgICAgICAgICBEYXRhYmFzZSogZGIg
PSBzdGF0aWNfY2FzdDxEYXRhYmFzZSo+KCpkYkl0KTsKKyAgICAgICAgICAgICAgICAgICAgICAg
IAorICAgICAgICAgICAgICAgICAgICAgICAgLy8gV2UgYXJlIGRvbmUgaWYgdGhpcyBkYXRhYmFz
ZSBoYXMgYWxyZWFkeSBiZWVuIG1hcmtlZCBhcyBkZWxldGVkLgorICAgICAgICAgICAgICAgICAg
ICAgICAgaWYgKGRiLT5kZWxldGVkKCkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29u
dGludWU7CisgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgICAg
IC8vIElmIHRoaXMgZGF0YWJhc2UgaGFzIGJlZW4gZGVsZXRlZCBvciBpZiBpdHMgZGF0YWJhc2Ug
ZmlsZSBubyBsb25nZXIgbWF0Y2hlcyB0aGUgY3VycmVudCB2ZXJzaW9uLCB0aGlzIGRhdGFiYXNl
IGlzIG5vIGxvbmdlciB2YWxpZCBhbmQgaXQgc2hvdWxkIGJlIG1hcmtlZCBhcyBkZWxldGVkLgor
ICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGRhdGFiYXNlRmlsZU5hbWUuaXNOdWxsKCkgfHwg
ZGF0YWJhc2VGaWxlTmFtZSAhPSBwYXRoR2V0RmlsZU5hbWUoZGItPmZpbGVOYW1lKCkpKSB7Cisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVsZXRlZERhdGFiYXNlcy5hcHBlbmQoZGIpOwor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvdW5kRGVsZXRlZERhdGFiYXNlID0gdHJ1ZTsK
KyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAg
ICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgLy8gSWYgdGhlIGRhdGFiYXNlIG5v
IGxvbmdlciBleGlzdHMsIHdlIHNob3VsZCByZW1lbWJlciB0byByZW1vdmUgaXQgZnJvbSB0aGUg
T3JpZ2luUXVvdGFNYW5hZ2VyIGxhdGVyLgorICAgICAgICAgICAgICAgICAgICBpZiAoZm91bmRE
ZWxldGVkRGF0YWJhc2UgJiYgZGF0YWJhc2VGaWxlTmFtZS5pc051bGwoKSkKKyAgICAgICAgICAg
ICAgICAgICAgICAgIGRlbGV0ZWREYXRhYmFzZU5hbWVzRm9yVGhpc09yaWdpbi5hcHBlbmQoZGF0
YWJhc2VOYW1lKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgCisgICAgICAg
ICAgICAgICAgaWYgKCFkZWxldGVkRGF0YWJhc2VOYW1lc0ZvclRoaXNPcmlnaW4uaXNFbXB0eSgp
KQorICAgICAgICAgICAgICAgICAgICBkZWxldGVkRGF0YWJhc2VNYXAuc2V0KG9yaWdpbiwgZGVs
ZXRlZERhdGFiYXNlTmFtZXNGb3JUaGlzT3JpZ2luKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAg
fQorICAgIH0KKyAgICAKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgZGVsZXRlZERhdGFi
YXNlcy5zaXplKCk7ICsraSkKKyAgICAgICAgZGVsZXRlZERhdGFiYXNlc1tpXS0+bWFya0FzRGVs
ZXRlZEFuZENsb3NlKCk7CisgICAgCisgICAgRGVsZXRlZERhdGFiYXNlTWFwOjpjb25zdF9pdGVy
YXRvciBlbmQgPSBkZWxldGVkRGF0YWJhc2VNYXAuZW5kKCk7CisgICAgZm9yIChEZWxldGVkRGF0
YWJhc2VNYXA6OmNvbnN0X2l0ZXJhdG9yIGl0ID0gZGVsZXRlZERhdGFiYXNlTWFwLmJlZ2luKCk7
IGl0ICE9IGVuZDsgKytpdCkgeworICAgICAgICBTZWN1cml0eU9yaWdpbiogb3JpZ2luID0gaXQt
PmtleS5nZXQoKTsKKyAgICAgICAgaWYgKG1fY2xpZW50KQorICAgICAgICAgICAgbV9jbGllbnQt
PmRpc3BhdGNoRGlkTW9kaWZ5T3JpZ2luKG9yaWdpbik7CisgICAgICAgIAorICAgICAgICBjb25z
dCBWZWN0b3I8U3RyaW5nPiYgZGF0YWJhc2VOYW1lcyA9IGl0LT52YWx1ZTsKKyAgICAgICAgZm9y
ICh1bnNpZ25lZCBpID0gMDsgaSA8IGRhdGFiYXNlTmFtZXMuc2l6ZSgpOyArK2kpIHsKKyAgICAg
ICAgICAgIGlmIChtX2NsaWVudCkKKyAgICAgICAgICAgICAgICBtX2NsaWVudC0+ZGlzcGF0Y2hE
aWRNb2RpZnlEYXRhYmFzZShvcmlnaW4sIGRhdGFiYXNlTmFtZXNbaV0pOworICAgICAgICB9ICAg
ICAgICAKKyAgICB9CiB9CisgICAgCitzdGF0aWMgYm9vbCBpc1plcm9CeXRlRmlsZShjb25zdCBT
dHJpbmcmIHBhdGgpCit7CisgICAgbG9uZyBsb25nIHNpemUgPSAwOworICAgIHJldHVybiBnZXRG
aWxlU2l6ZShwYXRoLCBzaXplKSAmJiAhc2l6ZTsKK30KKyAgICAKK2Jvb2wgRGF0YWJhc2VUcmFj
a2VyOjpkZWxldGVEYXRhYmFzZUZpbGVJZkVtcHR5KGNvbnN0IFN0cmluZyYgcGF0aCkKK3sKKyAg
ICBpZiAoIWlzWmVyb0J5dGVGaWxlKHBhdGgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
CisgICAgU1FMaXRlRGF0YWJhc2UgZGF0YWJhc2U7CisgICAgaWYgKCFkYXRhYmFzZS5vcGVuKHBh
dGgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgCisgICAgLy8gU3BlY2lmeSB0aGF0IHdl
IHdhbnQgdGhlIGV4Y2x1c2l2ZSBsb2NraW5nIG1vZGUsIHNvIGFmdGVyIHRoZSBuZXh0IHJlYWQs
CisgICAgLy8gd2UnbGwgYmUgaG9sZGluZyB0aGUgbG9jayB0byB0aGlzIGRhdGFiYXNlIGZpbGUu
CisgICAgU1FMaXRlU3RhdGVtZW50IGxvY2tTdGF0ZW1lbnQoZGF0YWJhc2UsICJQUkFHTUEgbG9j
a2luZ19tb2RlPUVYQ0xVU0lWRTsiKTsKKyAgICBpZiAobG9ja1N0YXRlbWVudC5wcmVwYXJlKCkg
IT0gU1FMUmVzdWx0T2spCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBpbnQgcmVzdWx0ID0g
bG9ja1N0YXRlbWVudC5zdGVwKCk7CisgICAgaWYgKHJlc3VsdCAhPSBTUUxSZXN1bHRSb3cgJiYg
cmVzdWx0ICE9IFNRTFJlc3VsdERvbmUpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBsb2Nr
U3RhdGVtZW50LmZpbmFsaXplKCk7CisKKyAgICAvLyBFdmVyeSBzcWxpdGUgZGF0YWJhc2UgaGFz
IGEgc3FsaXRlX21hc3RlciB0YWJsZSB0aGF0IGNvbnRhaW5zIHRoZSBzY2hlbWEgZm9yIHRoZSBk
YXRhYmFzZS4KKyAgICAvLyBodHRwOi8vd3d3LnNxbGl0ZS5vcmcvZmFxLmh0bWwjcTcKKyAgICBT
UUxpdGVTdGF0ZW1lbnQgcmVhZFN0YXRlbWVudChkYXRhYmFzZSwgIlNFTEVDVCAqIEZST00gc3Fs
aXRlX21hc3RlciBMSU1JVCAxOyIpOyAgICAKKyAgICBpZiAocmVhZFN0YXRlbWVudC5wcmVwYXJl
KCkgIT0gU1FMUmVzdWx0T2spCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAvLyBXZSBzaG91
bGRuJ3QgZXhwZWN0IGFueSByZXN1bHQuCisgICAgaWYgKHJlYWRTdGF0ZW1lbnQuc3RlcCgpICE9
IFNRTFJlc3VsdERvbmUpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICByZWFkU3RhdGVtZW50
LmZpbmFsaXplKCk7CisgICAgCisgICAgLy8gQXQgdGhpcyBwb2ludCwgd2UgaG9sZCB0aGUgZXhj
bHVzaXZlIGxvY2sgdG8gdGhpcyBmaWxlLiAgRG91YmxlLWNoZWNrIGFnYWluIHRvIG1ha2Ugc3Vy
ZQorICAgIC8vIGl0J3Mgc3RpbGwgemVybyBieXRlcy4KKyAgICBpZiAoIWlzWmVyb0J5dGVGaWxl
KHBhdGgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgCisgICAgcmV0dXJuIFNRTGl0ZUZp
bGVTeXN0ZW06OmRlbGV0ZURhdGFiYXNlRmlsZShwYXRoKTsKK30KKworTXV0ZXgmIERhdGFiYXNl
VHJhY2tlcjo6b3BlbkRhdGFiYXNlTXV0ZXgoKQoreworICAgIERFRklORV9TVEFUSUNfTE9DQUwo
TXV0ZXgsIG11dGV4LCAoKSk7CisgICAgcmV0dXJuIG11dGV4OworfQorCit2b2lkIERhdGFiYXNl
VHJhY2tlcjo6ZW1wdHlEYXRhYmFzZUZpbGVzUmVtb3ZhbFRhc2tXaWxsQmVTY2hlZHVsZWQoKQor
eworICAgIC8vIExvY2sgdGhlIGRhdGFiYXNlIGZyb20gb3BlbmluZyBhbnkgZGF0YWJhc2UgdW50
aWwgd2UgYXJlIGRvbmUgd2l0aCBzY2FubmluZyB0aGUgZmlsZSBzeXN0ZW0gZm9yCisgICAgLy8g
emVybyBieXRlIGRhdGFiYXNlIGZpbGVzIHRvIHJlbW92ZS4KKyAgICBvcGVuRGF0YWJhc2VNdXRl
eCgpLmxvY2soKTsKK30KKwordm9pZCBEYXRhYmFzZVRyYWNrZXI6OmVtcHR5RGF0YWJhc2VGaWxl
c1JlbW92YWxUYXNrRGlkRmluaXNoKCkKK3sKKyAgICBvcGVuRGF0YWJhc2VNdXRleCgpLnVubG9j
aygpOworfQorCit2b2lkIERhdGFiYXNlVHJhY2tlcjo6c2V0RGF0YWJhc2VzUGF1c2VkKGJvb2wg
cGF1c2VkKQoreworICAgIE11dGV4TG9ja2VyIG9wZW5EYXRhYmFzZU1hcExvY2sobV9vcGVuRGF0
YWJhc2VNYXBHdWFyZCk7CisgICAgaWYgKCFtX29wZW5EYXRhYmFzZU1hcCkKKyAgICAgICAgcmV0
dXJuOworCisgICAgLy8gVGhpcyB3YWxraW5nIGlzIC0gc2FkbHkgLSB0aGUgb25seSByZWxpYWJs
ZSB3YXkgdG8gZ2V0IGF0IGVhY2ggb3BlbiBkYXRhYmFzZSB0aHJlYWQuCisgICAgLy8gVGhpcyB3
aWxsIGJlIGNsZWFuZXIgb25jZSA8cmRhcjovL3Byb2JsZW0vNTY4MDQ0MT4gb3Igc29tZSBvdGhl
ciBEQiB0aHJlYWQgY29uc29saWRhdGlvbiB0YWtlcyBwbGFjZS4KKyAgICBEYXRhYmFzZU9yaWdp
bk1hcDo6aXRlcmF0b3IgaSA9IG1fb3BlbkRhdGFiYXNlTWFwLmdldCgpLT5iZWdpbigpOworICAg
IERhdGFiYXNlT3JpZ2luTWFwOjppdGVyYXRvciBlbmQgPSBtX29wZW5EYXRhYmFzZU1hcC5nZXQo
KS0+ZW5kKCk7CisgICAgCisgICAgZm9yICg7IGkgIT0gZW5kOyArK2kpIHsKKyAgICAgICAgRGF0
YWJhc2VOYW1lTWFwKiBkYXRhYmFzZU5hbWVNYXAgPSBpLT52YWx1ZTsKKyAgICAgICAgRGF0YWJh
c2VOYW1lTWFwOjppdGVyYXRvciBqID0gZGF0YWJhc2VOYW1lTWFwLT5iZWdpbigpOworICAgICAg
ICBEYXRhYmFzZU5hbWVNYXA6Oml0ZXJhdG9yIGRiTmFtZU1hcEVuZCA9IGRhdGFiYXNlTmFtZU1h
cC0+ZW5kKCk7CisgICAgICAgIGZvciAoOyBqICE9IGRiTmFtZU1hcEVuZDsgKytqKSB7CisgICAg
ICAgICAgICBEYXRhYmFzZVNldCogZGF0YWJhc2VTZXQgPSBqLT52YWx1ZTsKKyAgICAgICAgICAg
IERhdGFiYXNlU2V0OjppdGVyYXRvciBrID0gZGF0YWJhc2VTZXQtPmJlZ2luKCk7CisgICAgICAg
ICAgICBEYXRhYmFzZVNldDo6aXRlcmF0b3IgZGJTZXRFbmQgPSBkYXRhYmFzZVNldC0+ZW5kKCk7
CisgICAgICAgICAgICBmb3IgKDsgayAhPSBkYlNldEVuZDsgKytrKSB7CisgICAgICAgICAgICAg
ICAgRGF0YWJhc2VDb250ZXh0KiBjb250ZXh0ID0gKCprKS0+ZGF0YWJhc2VDb250ZXh0KCk7Cisg
ICAgICAgICAgICAgICAgY29udGV4dC0+c2V0UGF1c2VkKHBhdXNlZCk7CisgICAgICAgICAgICB9
CisgICAgICAgIH0KKyAgICB9Cit9CisKKyNlbmRpZgogCiB2b2lkIERhdGFiYXNlVHJhY2tlcjo6
c2V0Q2xpZW50KERhdGFiYXNlTWFuYWdlckNsaWVudCogY2xpZW50KQogewpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZVRyYWNrZXIuaCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VUcmFja2VyLmgKaW5kZXgg
MzUyMzc0MDdhZjg1YTU5YzVmODZhNmVkOWY3ZjMwOThhOWIxYjk4MS4uZjhhNWQxMjY2YWFhODU1
N2JmZTlmMTdlNTk2NTc1ZjgxZmY1YzBiYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZVRyYWNrZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlVHJhY2tlci5oCkBAIC0xMDAsNiArMTAwLDIxIEBA
IHB1YmxpYzoKICAgICBib29sIGRlbGV0ZU9yaWdpbihTZWN1cml0eU9yaWdpbiopOwogICAgIGJv
b2wgZGVsZXRlRGF0YWJhc2UoU2VjdXJpdHlPcmlnaW4qLCBjb25zdCBTdHJpbmcmIG5hbWUpOwog
CisjaWYgUExBVEZPUk0oSU9TKQorICAgIHZvaWQgcmVtb3ZlRGVsZXRlZE9wZW5lZERhdGFiYXNl
cygpOworICAgIHN0YXRpYyBib29sIGRlbGV0ZURhdGFiYXNlRmlsZUlmRW1wdHkoY29uc3QgU3Ry
aW5nJik7CisKKyAgICAvLyBNb2JpbGVTYWZhcmkgd2lsbCBncmFiIHRoaXMgbXV0ZXggb24gdGhl
IG1haW4gdGhyZWFkIGJlZm9yZSBkaXNwYXRjaGluZyB0aGUgdGFzayB0byAKKyAgICAvLyBjbGVh
biB1cCB6ZXJvIGJ5dGUgZGF0YWJhc2UgZmlsZXMuICBBbnkgb3BlcmF0aW9ucyB0byBvcGVuIG5l
dyBkYXRhYmFzZSB3aWxsIGhhdmUgdG8KKyAgICAvLyB3YWl0IGZvciB0aGF0IHRhc2sgdG8gZmlu
aXNoIGJ5IHdhaXRpbmcgb24gdGhpcyBtdXRleC4KKyAgICBzdGF0aWMgTXV0ZXgmIG9wZW5EYXRh
YmFzZU11dGV4KCk7CisgICAgCisgICAgc3RhdGljIHZvaWQgZW1wdHlEYXRhYmFzZUZpbGVzUmVt
b3ZhbFRhc2tXaWxsQmVTY2hlZHVsZWQoKTsKKyAgICBzdGF0aWMgdm9pZCBlbXB0eURhdGFiYXNl
RmlsZXNSZW1vdmFsVGFza0RpZEZpbmlzaCgpOworICAgIAorICAgIHZvaWQgc2V0RGF0YWJhc2Vz
UGF1c2VkKGJvb2wpOworI2VuZGlmCisgICAgCiAgICAgdm9pZCBzZXRDbGllbnQoRGF0YWJhc2VN
YW5hZ2VyQ2xpZW50Kik7CiAKICAgICAvLyBGcm9tIGEgc2Vjb25kYXJ5IHRocmVhZCwgbXVzdCBi
ZSB0aHJlYWQgc2FmZSB3aXRoIGl0cyBkYXRhCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmRhdGFiYXNlL1NRTFRyYW5zYWN0aW9uQmFja2VuZC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL1NRTFRyYW5zYWN0aW9uQmFja2VuZC5jcHAKaW5kZXgg
NTY4YmU5N2QwZWNkNzNjNjI5MWYyODA5NjgzNjdiNTBlM2ZiNmYxMy4uMjQ0ZjI4NTY2ZjdmZTNh
NzQzODhkMWFlZTIzMmI2ZjQ2ODllNzRhYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJkYXRhYmFzZS9TUUxUcmFuc2FjdGlvbkJhY2tlbmQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvU1FMVHJhbnNhY3Rpb25CYWNrZW5kLmNwcApAQCAt
NTE4LDYgKzUxOCwxNCBAQCB2b2lkIFNRTFRyYW5zYWN0aW9uQmFja2VuZDo6cGVyZm9ybU5leHRT
dGVwKCkKICAgICBydW5TdGF0ZU1hY2hpbmUoKTsKIH0KIAorI2lmIFBMQVRGT1JNKElPUykKK2Jv
b2wgU1FMVHJhbnNhY3Rpb25CYWNrZW5kOjpzaG91bGRQZXJmb3JtV2hpbGVQYXVzZWQoKSBjb25z
dAoreworICAgIC8vIFNRTFRyYW5zYWN0aW9ucyBzaG91bGQgb25seSBydW4td2hpbGUtcGF1c2Vk
IGlmIHRoZXkgaGF2ZSBwcm9ncmVzc2VkIHBhc3NlZCB0aGUgZmlyc3QgdHJhbnNhY3Rpb24gc3Rl
cC4KKyAgICByZXR1cm4gbV9uZXh0U3RhdGUgIT0gU1FMVHJhbnNhY3Rpb25TdGF0ZTo6QWNxdWly
ZUxvY2s7Cit9CisjZW5kaWYKKwogdm9pZCBTUUxUcmFuc2FjdGlvbkJhY2tlbmQ6OmV4ZWN1dGVT
UUwoUGFzc093blB0cjxBYnN0cmFjdFNRTFN0YXRlbWVudD4gc3RhdGVtZW50LAogICAgIGNvbnN0
IFN0cmluZyYgc3FsU3RhdGVtZW50LCBjb25zdCBWZWN0b3I8U1FMVmFsdWU+JiBhcmd1bWVudHMs
IGludCBwZXJtaXNzaW9ucykKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViZGF0YWJhc2UvU1FMVHJhbnNhY3Rpb25CYWNrZW5kLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmRhdGFiYXNlL1NRTFRyYW5zYWN0aW9uQmFja2VuZC5oCmluZGV4IDZlZmM3NTFmZjE0
NWI0NDhlMDQxMTU1MjViN2NiOTY2YzI4YTM4YTEuLmZlYzM2NjEwYTE1ZjlhZTNlNTBjNTgyNTRi
YmY1MDUxZTIzZTljZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0
YWJhc2UvU1FMVHJhbnNhY3Rpb25CYWNrZW5kLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJkYXRhYmFzZS9TUUxUcmFuc2FjdGlvbkJhY2tlbmQuaApAQCAtNjgsNiArNjgsMTAgQEAg
cHVibGljOgogICAgIHZvaWQgbG9ja0FjcXVpcmVkKCk7CiAgICAgdm9pZCBwZXJmb3JtTmV4dFN0
ZXAoKTsKIAorI2lmIFBMQVRGT1JNKElPUykKKyAgICBib29sIHNob3VsZFBlcmZvcm1XaGlsZVBh
dXNlZCgpIGNvbnN0OworI2VuZGlmCisKICAgICBEYXRhYmFzZUJhY2tlbmQqIGRhdGFiYXNlKCkg
eyByZXR1cm4gbV9kYXRhYmFzZS5nZXQoKTsgfQogICAgIGJvb2wgaXNSZWFkT25seSgpIHsgcmV0
dXJuIG1fcmVhZE9ubHk7IH0KICAgICB2b2lkIG5vdGlmeURhdGFiYXNlVGhyZWFkSXNTaHV0dGlu
Z0Rvd24oKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1Jlc291cmNlcy9EaWN0YXRpb25Q
aHJhc2VXaXRoQWx0ZXJuYXRpdmVzRG90LnBuZyBiL1NvdXJjZS9XZWJDb3JlL1Jlc291cmNlcy9E
aWN0YXRpb25QaHJhc2VXaXRoQWx0ZXJuYXRpdmVzRG90LnBuZwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40MmUxMGY4
Y2E2NjcwMjBkZGRiOGJlODRmOTY4NDk1MTc0Mzg1MDYxCkdJVCBiaW5hcnkgcGF0Y2gKbGl0ZXJh
bCAxODMKemNtZUFTQE4/KG9sSHlgdVZCcSFpYTB2cF5FSWBjNiEzSEZeZHw3dTROTzJaO0w+NG5K
YTBgUGxCZzNwWTU8byRQCnpXUkQ8VTI4SnFDMjhNPWEyOE4maWYlSG9UaEVmOXRoRjF2OzN8MkUz
N3t2MUAjVUZKOHM8cmlXYVNXLXIjZDZTKQp6Pnd0bSkhQDtaayhHZ2xJdCEyfnA9YCVWYCohK1JM
e00/VDFrJkhxQ15GNis4KClseEFAaWJHemVDT1hjUHMhWTMKYWU4PUYoQnp9X0ZaZX1qZkFPPXJZ
S2JMaCoyfjdaYE1LdWlvCgpsaXRlcmFsIDAKSGNtVj9kMDAwMDEKCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9SZXNvdXJjZXMvRGljdGF0aW9uUGhyYXNlV2l0aEFsdGVybmF0aXZlc0RvdEAy
eC5wbmcgYi9Tb3VyY2UvV2ViQ29yZS9SZXNvdXJjZXMvRGljdGF0aW9uUGhyYXNlV2l0aEFsdGVy
bmF0aXZlc0RvdEAyeC5wbmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZmYzNjlmYjQ4NjlkZmY5OTA2MmJkNjAzMmNl
ZDI5OTAwOGEyNTdiZgpHSVQgYmluYXJ5IHBhdGNoCmxpdGVyYWwgMjY3CnpjbWVBU0BOPyhvbEh5
YHVWQnEhaWEwdnBeOTYtIyohM0hHJXZFS2c7cSZOI2FCOHdScXhQP0tPa3p2KngzODBgdAp6dlBZ
MEYxNEVUNjE0QmJJMUg7ZSVLPjgmRUwjWTcrIT5hQGEyQ0VxaTRDNDhkOypZdWspbFQkdWFTVy1y
PCNXb0sKej55VSM0IV4yNFAkakoqQD1iZ1RFJUlrIXhpMGoyX2orSHEmZHFiYClOVnBleUQxUmR0
cFU/TXxyJGMrVHpPZ3pqCnpibGBgfHpWbjU0aTx2KiV2dXVDZjlVOH1RcHlFaUhsX1BVRGdUQWst
VXcqKDxKe1FGalR8KjZheHBLd1IzKk83Rgp6QFZkYXx6LVcrPlpFM3BuTHcmVU9BIzs3TThgOFNW
RzlubVErS01lZ1pwOzdSVlghKUI8R3xUPkc4NT1IMjJXUSUKSm12djRGTyN0QE9TaUFyTAoKbGl0
ZXJhbCAwCkhjbVY/ZDAwMDAxCgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUmVzb3VyY2Vz
L1NwZWxsaW5nRG90LnBuZyBiL1NvdXJjZS9XZWJDb3JlL1Jlc291cmNlcy9TcGVsbGluZ0RvdC5w
bmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNzYxYTliNzg4ZDQ0MDYyODkyYzVkMzc2MjY4Njg3NGVmMDcxZjUyNApH
SVQgYmluYXJ5IHBhdGNoCmxpdGVyYWwgMTk1CnpjbWVBU0BOPyhvbEh5YHVWQnEhaWEwdnBeRUlg
YzYhMy1wdXdjQF5qMWt4UlM5VF55fC1NSGMoVkZjdCRtYmdaZwp6MW1+eGZscVZMWUdCfkU+QyM1
UVE8fGR9NjJCanZaUjJINjB3RS0lVTQpNihhe2VTaTl6dHlZJWhLSyp9cFlZR1kKejthYDlNVXdR
ZHw7U3ZBO3wySzRGeSRlKnZTclgoSTRDSTBWTCRINV41WGJeZzdzcnJfVFMqQkNER3c0N2tga1hN
CmdCJX4la1c4ZzRnVjY8ajE0T19BaHNEXj5UKTc4JnFvbGA7KzBEY29obyZXIzwKCmxpdGVyYWwg
MApIY21WP2QwMDAwMQoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1Jlc291cmNlcy9TcGVs
bGluZ0RvdEAyeC5wbmcgYi9Tb3VyY2UvV2ViQ29yZS9SZXNvdXJjZXMvU3BlbGxpbmdEb3RAMngu
cG5nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLmZhOGUzMWMyZGFhNTgzZTA0MzVhNTNhNGJjMWJlMzUzYjEzNTBlZjcK
R0lUIGJpbmFyeSBwYXRjaApsaXRlcmFsIDI1Ngp6Y21lQVNATj8ob2xIeWB1VkJxIWlhMHZwXjk2
LSMqITNIRyV2RUtnO3EmTiNhQjh3UnF4UD9LT2t6dip4MzgwYHQKenZQWTBGMTRFVDYxNEJiSTFI
JV59LUV4dEVBdmQwWjtZQUp1Z0gxT0JnTEZqbWJNXnxMK0JRIVkkQj5GIUEqVktTCnpIOTFIZV8q
bm50P240RERpKGdUR3pLIX5jQkNkUGdBNiQ4NHtqI0x7Z0txbX0mMShmNlV1TV8wPVU8T31fUzI2
ZQp6b25jTGA7V083elJ0Q3Fmb210Sl84NzhFTGNSa3tXTnFYXkg+VXFNZkIjJlQ/KF5kUzM4T3xO
dGJWUHdrYWY0dlUKentoczh7OyoqeCNaOHFlO2NKPEw7JklYKFIzUHJhTTx1bUFQKXhHZzNeeHM+
Y2l4QG16e2FuXkxCe1RzNW98YXg1CgpsaXRlcmFsIDAKSGNtVj9kMDAwMDEKCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9SZXNvdXJjZXMvZGVjcmVtZW50QXJyb3cudGlmZiBiL1NvdXJjZS9X
ZWJDb3JlL1Jlc291cmNlcy9kZWNyZW1lbnRBcnJvdy50aWZmCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjcxNGYwMjRi
YTI3ZjkyMDY0NWViNDVlNjEzYmRhNzc5ZDIwNjc0NzAKR0lUIGJpbmFyeSBwYXRjaApsaXRlcmFs
IDU1MAp6Y21haXYhNDNnSTQySipDdmYpQlZrUlo8RDVwWjtIdW92RDF1WjApJWNWOz9pbU4xaVV8
TWRVYiZOZEE7ZlNtQ0EKej59Y1A9QWl8bj9GS1BgdD1HfEJAJiQ0PVpoUihFRko4JFZke3soRily
I3FDQDhTTmdIJTJEPnBGeEdZIXp6Smc/CnpuUm5LUU96ZT1xUm5aZ2xgNE9pPilFeXd5UXNwe2Zz
azA4JEJoWTZyKDM3IWFDUngqIW5LNSNaSWw3NHQxNmRTMwpkbThJKWx5Wkw4VnplS0k/UyNidDhy
aDd+U1ZWU1JxX1lHRktBYlM3KwoKbGl0ZXJhbCAwCkhjbVY/ZDAwMDAxCgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvUmVzb3VyY2VzL2hTY3JvbGxDb250cm9sX2xlZnQucG5nIGIvU291cmNl
L1dlYkNvcmUvUmVzb3VyY2VzL2hTY3JvbGxDb250cm9sX2xlZnQucG5nCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmI3
YmQ4N2Q3MTMwZDhiNzAyODA0Mjg2MGE2MzBmMTI5MDljNThlMjUKR0lUIGJpbmFyeSBwYXRjaAps
aXRlcmFsIDMwMzIKemNtVjt9M24lbzZQKTxoOzNLfExrMDAwZTFOSkxUcTAwMEw3MDAwZEwxXkBz
Nld5eTU0MDAwMDlhN2JCbTAwMFhVCnowMDBYVTBSV251N3l0a1lPPSZ8elAqNy1aYlo+S0xaKlUr
PExxaX5OYSZLbTdZLUlvZGMtb3kpY1VZNzY3Q3p0aQp6V2UtK0Qqem1FSlk9SG5HQmRpRj41THUh
U2teb19aNUU0TWVnQF83UDZjckppTkw5cHcpZTE8Umh+bDZxeE14OSUKemgrMnpQVHNaQ0ArXjRt
RGRoaE0rYGA3IXQ9YlkjSyZVdyFkZkRzWlZrPjtYbTA2OXtISlVaQVBrNTVSJSQtUklBCno2LWVM
JkFRMHh1IWU8ND0wMDhnPGQzYih3dXN7Myh1V3RZWDBDM2VWQm9mRXJ8QVY/dkNSWUY7a3BTUSM2
NlhzNgp6a1d2ODFFPnlAQTBMVH5zdXY0PlMzSUxQPDBCbWBETEx2YUY0RkslKU5qP1B0KnJ9Nzs3
WGE5ejlIfEhaalI2M2UKekNgVGokSylWMjdSZUA0MDA+SHVtcHNZWTVFKEV9PzBmMVN5R0RpWXt5
IylZdmojIVduS3d0b1huTDtlZzAzYkw1CnowN0QpViU+eTd6MUU0VXt6dT43fmFEfSk/MFJYX3Vt
Q2N0KyhsWnBlbUN6YkBeNj1vfEE+elZwdXxpPU5ERys3fQp6PFJZQXhuPEVvUT1MMWE2MzsrTmNg
Tyg0dEk2c2kqPUglaCNYNkoxMF51P243WXcmTChKfFhlbns9QUY9MU9PMEQKeiYrcG5fPD5sNGBh
S3swI2ItIXo9VEw5V3QwQkdPJlR7R0pXcGpyeWhkaWpmYUlRJjIhb31wMDRKUktZZzNrJlRmCnpW
eGhlLTxCTEIzR3ZST0dpKz1YfUtweV92ZGhoXm9ubjBQWXpAdmx4YWJhJER1MlBRWSVMR0MoWnVq
UlN7Pk8hWAp6e2Y7VG87eHdeYkVFUzZKU2MkayRCMkNBNnhsKWx0QTwzMkU2NnQ/M0BnSjdgMzZw
bVgwSVleanopclJZd2FhWTQKemUobkpSaXc7PVFiXnQocl5EVEBUM3l9YTJYRVpXLV9XJUhzenhq
X3FEKip0X20hI3RXMEtEaUpUJlI+Nk92VlRSCnowN1JnSER6SEhaNDhhdHZ6eiY/ajlsWEY3MCR+
UDNLbnhfbkpQPCsjPGJXSXNwJXw3eThDMVlKKmFXcSgwfigrYQp6biZBKyUhNyhAdT1pbX10ZiRN
TT0yNEVQVCFXZ2BVMj9SbU4yb3FyO0kqMVdzakBUbTMycDVALTFSYE5iRz9JWCUKekFuQXd7UTZr
MDJhLTsmT0xUWnMrTkYod3NhdWhqQFR0TkRlK3NHZz9pdXtWYU09X0x2dlFZIW4wKEMmU3MyPmBO
CnojLU1aMmJUa2lMZlI+X2IoSGdXS0olRn5Ocl9vRjNiI3dySWlqSEd8KEo+QllqTS1zYWpFNjtG
aUM3dlkjfTtHZAp6U1QkQ1VIRGV1RUgrQl5wekBCMDYycVhmRmZEYE5wVVc1P0JZPVYlR01fNWMp
TCNRUn1CZVc4XzJ2LVMlZ2ZZUz0KekI5b3wzdj9ZMkhgTlZpKUk8YiZnTXl3fDhBcyEpfkMwLXtF
NkpMYF5CbzRgdjxXMzQ5QzZGPm4zclRCOCtlal4+CnpRPX5yOTVOVnVEQ2hMJUckPT43JHZWZzIw
bXl4JVM1MEZvaWBebSVQdy1oP1hofmk4TXE5anRKbG9Db2NXazJOdgp6ckpwaUZuVl9tcyY4ZVEk
MiYjeFdwSVMrNnBtdEMlUS1gUyZHPEJMSyY2XmZPJWNMISUpekYlMFhLRDluRlg/bzsKejNFaEpw
TVZIVyoocmY0az5GNFEjXm1oeW1oN0UocU5NYX0lWVotZVByeD4+eEZQVGlIMT1FK0EkVyQ9Ykc4
PnNeCnptPUJuNVJhaCRhRHRyfUAkYFh9Mmx+JEYwbUZLRWRSZFpFOClwQEU1Ukk2MUZ0Nm8tcHJi
Ym4+UH4paXkpRTJBTgp6c1UyMGpzV3pfOFFnPjMxUHxzMGNxclBBTGc4RXwodldBNjVwb1UxSlJB
YVpzOEkyKHAjeGlCYFNWR292UnMtdVMKelluVi05VGVBNz1PbStxUDgrST55T2pBUjFzJUVUYWsh
R0ZkYW1AaF4jPEFlPUlvWF5fJkxQZVgmVS1CYkVrNy0+CnopQHJTMHQkd1hIK0lyZikrRzZjOz9I
MjlwK1Y2RjZvanshfG8lSzN4SWA/JTZ4O0RCfHhgbiNpYjxnVFAoX2B5LQp6PT9WNDleJHpMWChN
Uj1kXnJRNmA+aElSPyhIfVEzR3pkMTM4RWkyKVdBTXo3VzlWeWBYfUhud2d5RTxXJVZAZmgKeiNB
dV9ATnV3dllDaG11NDwyODV9SzR6P005QWQwQS1ldWZ0SllpeUtHVFdyWXF7WmFFRGIxOD9ucjZE
dXc5fENWCnolKlpVPHRrfHJ7PzJiOXJvTkp6OHpTK0Zue0VkYUJNViFTLWkjQ2hMbWZEdGwlTFNI
QW1pTWZmUno2bUZSYHBpYgp6dFZ6fmY+biFWUyk+bXYkOCZ7aFFuPnc0end5M1J9dDtCWWxaUW01
KTZwdHk9RGZMcnMrQS18Pj48YTlmPjt+O1EKel9GP3VWX0hGamg5bjJnTzlvOVFeSkE4NjxiPEIy
YmFKPWlKO1dXZGsjSHF2U1M3I2UlcD52KHtINWFCIWtqb082CnpjOSQxWlpLc04tWmw4TH5tRXtg
bHkzKTFOXmBvMStvN31EMFpQZVkmSjtpO2lgJU55SjhfOFk2Sj99eUVAYl81YQp6YW0/ZUxyPDxx
M15Oe0IrVVVwdHRVaS1ac1BxVW1ScDRLcEokbEp0UTtKd1J4VV4rZk1XJXx6UDEzdHorMC10KUgK
emhyWHUxQkh1bH1CWXhJP25TS1pTcDhHcmMlbChofHp1fGZFN1YlQzZVOyk3YTxwSTVjOGlCSXxZ
WGN0eW5GT1Q9CnpIM2Z8WXk5T0B8SnszWD8yQFAydmErN2JzN3hFa1ZWPjhAbUVTa3wzJF9Ta21T
e3dRPiVxQzE4KSk5X3wmantaVAp6ZXM4QXZPekYoRjIjRFpFWT4yb1lYJklScGBGI3tBRGwpMXI+
UVNeKWJhOGF8RVlfXiNTXkg8YmpgNUdGakpaNDgKellQTkVBWFJLOyRRZnk9Rm80QTB1czw/cjho
eGtTRG1sQVhuQm5qPF88aXl5LUomRUlVMF9TWCtHbzBqX1JGLXNPCnp1STFkS3hma1o/JmRaKjZK
WHRrYWtiRjNXbT1jJD1Lam5pVUxRcFJsUHZ4Zz5PJnReUmdxd3Y9TVpUaHFxRVdIOAp6eEpvPmQ9
QUJsUl9CaD07ZU05PGFoRUdPeSN4bl58UVkoM3A4SXJqcF5HI01uKjUwaG8qPlR3fEloMzR+b1RF
fD0KelhfbUFyKkQkdnp3QCtwKEUwWWM2ZEZFfSg4PFU2MV92OW5fYk14QzNZPXVuR3FxSWA0UCEx
TU1GUV9ZY1ROcW4tCnp4SmJRN1RHVFYmWDghOD1CTVg4U2U3JXNjUGBJJE8qdG1GRUAhJXJBTVl8
UndpJkdiT0UtX3RGeEAzNTFAWH4kRAp6WHY/eWV7WlFncVFkUlA1ZEVEfWpRaUlaXnI5JiUlUzJV
SFdsKiE5KHVKbF5EVi07YlFXTDU4S20oXlFWZTx+TjEKelUjeEpmc0lLXzFNITRxVVM1OUJtZUQh
JjQrUz1ZcXg2MUE3TmI5OFFabWpvTnpwcU5ZWUMrWXxoVlR1bzh9V19oCno4KChjby1nS2RRWVcw
ckl3OVUlUjEydGhhP09WKll0bFJSVEhseX0+b3F0YCtSe2dFM3g0empYK1NiM19jWUVePQp6Z0I9
dystdFV5YHl0T05NUzhLZ1JlZjRoQT90PE5xOGUkdXx6dmgxM3hKUCRTI2gjQ1FyRiNlVk1lcGxz
Ylo+MGoKenVmTTt0MzJqbX5qVUdya2FPSW5UWmB6eWZucz5FdVN9RzMwTEZLX0ctPT0oZjw1MXxL
JmNvY3AmRUpgU3hBaDM/CnpOTz4jTEk9XitTRXUoRnFKKXludD0hflBDOWJPJHJ6UEpCPT89ajxK
YjttVzJTRHY3cUNfVkF7PGJzcHFyKH55fAp6b2xaWUopUzI5UV9lfWhtWWg2KVl5PU96dW88QTNL
P283OHxfc1IzIz1ae19SeW0wZylfaFE+NndAYS0odTAyUDcKemFRKSModVVse0hXJXRZTlMzSXRD
XmlBdEsoZUtsTGBmOSt7Ykp6SVNFP3U4X3ozO35DOEBGeUktNWpfank3bDtXCnpfVSN2VTNocXFZ
VTMhbXJ1bCZCK3twdHQkNTkpdWt7O180aVpRJUd8eitsaEFTcjZ8SDM1VEJrbD5nSSo7bkdMVQp6
TjdXLW5CYU0lcEEwSGJIOG9seWwmWGVKJXZab1d6JTY/WT1kRnlrbD1pbUx9YCVCTVF7TWhnZGBI
Um9MdTZlMlIKemFfXzZEdVI2eWcjfi19VGN8R3hfe0hATzBlZWJ5TXk1R21XQURKbHBLPmtxayhm
VlZAcl9mTExLSWVTP3s0ZSl9CnpeWk87enBFQ2RlMDBkYDJPK2YkdnY1dEtFUUlofXcwM2MmWFFj
VkI9ZEw7az1mUCgtNGBUcWFfZmF3NExidWEoYAp6PlI8bz5JK3k/ZTdqS2VaI1lPLUMwUUVea0t+
IzkhV1JOalYhJDEmNHxMJn1KKlBjWUNpM3xsT1NUc1E+ckU4MHgKelI1PTA/TV82KFhwOTZec2k1
dkozWnN7bHhtU3NEXnJpZCokRndOKm9QeEpxTGlQSTVOcEB1QzFiTzhEdzIkdDZPCnpaJUUyM0Yj
cmJ1PU1TNkJRPDVaKUw9Kn1rVyYoZilhUShkN3klPUx8bzJFaEVfZVlQfWQ+JVJILXBqSUZ8TTc9
KAp6JmZRbTR3STFue0stUVJyWiFOeWQ1X01mOzNNbkdgUWNCQDAzfl52YStxUCk7ZHZzan5EdklK
V1AxN3hhKERPVzQKellyKUs1V3toYzlTKGQjaXI3b3RZWCgtPyQmK31KaV9UbzZjR3skSkhISH4h
PGZGQSZlcUcpQlV5Xn5UZHxHaFI5CmF6WEpkWnV8IXUofEpnVkkwMDAwPE1OVU1uTFNUWWlBaU0k
cQoKbGl0ZXJhbCAwCkhjbVY/ZDAwMDAxCgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUmVz
b3VyY2VzL2hTY3JvbGxDb250cm9sX21pZGRsZS5wbmcgYi9Tb3VyY2UvV2ViQ29yZS9SZXNvdXJj
ZXMvaFNjcm9sbENvbnRyb2xfbWlkZGxlLnBuZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zYzM1MTE2ODBkMjllZmQ4
ZThiYWU2ZWU1OTI0ZTc0ODc1MDU3MTQwCkdJVCBiaW5hcnkgcGF0Y2gKbGl0ZXJhbCAyODYyCnpj
bVYrfTMoQHE2UCk8aDszS3xMazAwMGUxTkpMVHEwMDA2MjAwMGRMMV5AczZnVyRqTTAwMDA5YTdi
Qm0wMDBYVQp6MDAwWFUwUldudTd5dGtZTz0mfHpQKjctWmJaPktMWipVKzxMcWl+TmEmS203WS1J
b2RjLW95KWNVWTc2N0N6dGkKeldlLStEKnptRUpZPUhuR0JkaUY+NUx1IVNrXm9fWjVFNE1lZ0Bf
N1A2Y3JKaU5MOXB3KWUxPFJofmw2cXhNeDklCnpoKzJ6UFRzWkNAK140bURkaGhNK2BgNyF0PWJZ
I0smVXchZGZEc1pWaz47WG0wNjl7SEpVWkFQazU1UiUkLVJJQQp6Ni1lTCZBUTB4dSFlPDQ9MDA4
ZzxkM2Iod3VzezModVd0WVgwQzNlVkJvZkVyfEFWP3ZDUllGO2twU1EjNjZYczYKemtXdjgxRT55
QEEwTFR+c3V2ND5TM0lMUDwwQm1gRExMdmFGNEZLJSlOaj9QdCpyfTc7N1hhOXo5SHxIWmpSNjNl
CnpDYFRqJEspVjI3UmVANDAwPkh1bXBzWVk1RShFfT8wZjFTeUdEaVl7eSMpWXZqIyFXbkt3dG9Y
bkw7ZWcwM2JMNQp6MDdEKVYlPnk3ejFFNFV7enU+N35hRH0pPzBSWF91bUNjdCsobFpwZW1DemJA
XjY9b3xBPnpWcHV8aT1OREcrN30KejxSWUF4bjxFb1E9TDFhNjM7K05jYE8oNHRJNnNpKj1IJWgj
WDZKMTBedT9uN1l3JkwoSnxYZW57PUFGPTFPTzBECnomK3BuXzw+bDRgYUt7MCNiLSF6PVRMOVd0
MEJHTyZUe0dKV3BqcnloZGlqZmFJUSYyIW99cDA0SlJLWWczayZUZgp6VnhoZS08QkxCM0d2Uk9H
aSs9WH1LcHlfdmRoaF5vbm4wUFl6QHZseGFiYSREdTJQUVklTEdDKFp1alJTez5PIVgKentmO1Rv
O3h3XmJFRVM2SlNjJGskQjJDQTZ4bClsdEE8MzJFNjZ0PzNAZ0o3YDM2cG1YMElZXmp6KXJSWXdh
YVk0CnplKG5KUml3Oz1RYl50KHJeRFRAVDN5fWEyWEVaVy1fVyVIc3p4al9xRCoqdF9tISN0VzBL
RGlKVCZSPjZPdlZUUgp6MDdSZ0hEekhIWjQ4YXR2enomP2o5bFhGNzAkflAzS254X25KUDwrIzxi
V0lzcCV8N3k4QzFZSiphV3EoMH4oK2EKem4mQSslITcoQHU9aW19dGYkTU09MjRFUFQhV2dgVTI/
Um1OMm9xcjtJKjFXc2pAVG0zMnA1QC0xUmBOYkc/SVglCnpBbkF3e1E2azAyYS07Jk9MVFpzK05G
KHdzYXVoakBUdE5EZStzR2c/aXV7VmFNPV9MdnZRWSFuMChDJlNzMj5gTgp6Iy1NWjJiVGtpTGZS
Pl9iKEhnV0tKJUZ+TnJfb0YzYiN3cklpakhHfChKPkJZak0tc2FqRTY7RmlDN3ZZI307R2QKelNU
JENVSERldUVIK0JecHpAQjA2MnFYZkZmRGBOcFVXNT9CWT1WJUdNXzVjKUwjUVJ9QmVXOF8ydi1T
JWdmWVM9CnpCOW98M3Y/WTJIYE5WaSlJPGImZ015d3w4QXMhKX5DMC17RTZKTGBeQm80YHY8VzM0
OUM2Rj5uM3JUQjgrZWpePgp6UT1+cjk1TlZ1RENoTCVHJD0+NyR2VmcyMG15eCVTNTBGb2lgXm0l
UHctaD9YaH5pOE1xOWp0SmxvQ29jV2syTnYKenJKcGlGblZfbXMmOGVRJDImI3hXcElTKzZwbXRD
JVEtYFMmRzxCTEsmNl5mTyVjTCElKXpGJTBYS0Q5bkZYP287CnozRWhKcE1WSFcqKHJmNGs+RjRR
I15taHltaDdFKHFOTWF9JVlaLWVQcng+PnhGUFRpSDE9RStBJFckPWJHOD5zXgp6bT1CbjVSYWgk
YUR0cn1AJGBYfTJsfiRGMG1GS0VkUmRaRTgpcEBFNVJJNjFGdDZvLXByYmJuPlB+KWl5KUUyQU4K
enNVMjBqc1d6XzhRZz4zMVB8czBjcXJQQUxnOEV8KHZXQTY1cG9VMUpSQWFaczhJMihwI3hpQmBT
VkdvdlJzLXVTCnpZblYtOVRlQTc9T20rcVA4K0k+eU9qQVIxcyVFVGFrIUdGZGFtQGheIzxBZT1J
b1heXyZMUGVYJlUtQmJFazctPgp6KUByUzB0JHdYSCtJcmYpK0c2Yzs/SDI5cCtWNkY2b2p7IXxv
JUszeElgPyU2eDtEQnx4YG4jaWI8Z1RQKF9geS0Kej0/VjQ5XiR6TFgoTVI9ZF5yUTZgPmhJUj8o
SH1RM0d6ZDEzOEVpMilXQU16N1c5VnlgWH1IbndneUU8VyVWQGZoCnojQXVfQE51d3ZZQ2htdTQ8
Mjg1fUs0ej9NOUFkMEEtZXVmdEpZaXlLR1RXcllxe1phRURiMTg/bnI2RHV3OXxDVgp6JSpaVTx0
a3xyez8yYjlyb05Kejh6UytGbntFZGFCTVYhUy1pI0NoTG1mRHRsJUxTSEFtaU1mZlJ6Nm1GUmBw
aWIKenRWen5mPm4hVlMpPm12JDgme2hRbj53NHp3eTNSfXQ7QllsWlFtNSk2cHR5PURmTHJzK0Et
fD4+PGE5Zj47fjtRCnpfRj91Vl9IRmpoOW4yZ085bzlRXkpBODY8YjxCMmJhSj1pSjtXV2RrI0hx
dlNTNyNlJXA+dih7SDVhQiFram9PNgp6YzkkMVpaS3NOLVpsOEx+bUV7YGx5MykxTl5gbzErbzd9
RDBaUGVZJko7aTtpYCVOeUo4XzhZNko/fXlFQGJfNWEKemFtP2VMcjw8cTNeTntCK1VVcHR0VWkt
WnNQcVVtUnA0S3BKJGxKdFE7SndSeFVeK2ZNVyV8elAxM3R6KzAtdClICnpoclh1MUJIdWx9Qll4
ST9uU0taU3A4R3JjJWwoaHx6dXxmRTdWJUM2VTspN2E8cEk1YzhpQkl8WVhjdHluRk9UPQp6SDNm
fFl5OU9AfEp7M1g/MkBQMnZhKzdiczd4RWtWVj44QG1FU2t8MyRfU2ttU3t3UT4lcUMxOCkpOV98
Jmp7WlQKemVzOEF2T3pGKEYyI0RaRVk+Mm9ZWCZJUnBgRiN7QURsKTFyPlFTXiliYThhfEVZX14j
U15IPGJqYDVHRmpKWjQ4CnpZUE5FQVhSSzskUWZ5PUZvNEEwdXM8P3I4aHhrU0RtbEFYbkJuajxf
PGl5eS1KJkVJVTBfU1grR28wal9SRi1zTwp6dUkxZEt4ZmtaPyZkWio2Slh0a2FrYkYzV209YyQ9
S2puaVVMUXBSbFB2eGc+TyZ0XlJncXd2PU1aVGhxcUVXSDgKenhKbz5kPUFCbFJfQmg9O2VNOTxh
aEVHT3kjeG5efFFZKDNwOElyanBeRyNNbio1MGhvKj5Ud3xJaDM0fm9URXw9CnpYX21BcipEJHZ6
d0ArcChFMFljNmRGRX0oODxVNjFfdjluX2JNeEMzWT11bkdxcUlgNFAhMU1NRlFfWWNUTnFuLQp6
eEpiUTdUR1RWJlg4ITg9Qk1YOFNlNyVzY1BgSSRPKnRtRkVAISVyQU1ZfFJ3aSZHYk9FLV90RnhA
MzUxQFh+JEQKelh2P3lle1pRZ3FRZFJQNWRFRH1qUWlJWl5yOSYlJVMyVUhXbCohOSh1SmxeRFYt
O2JRV0w1OEttKF5RVmU8fk4xCnpVI3hKZnNJS18xTSE0cVVTNTlCbWVEISY0K1M9WXF4NjFBN05i
OThRWm1qb056cHFOWVlDK1l8aFZUdW84fVdfaAp6OCgoY28tZ0tkUVlXMHJJdzlVJVIxMnRoYT9P
VipZdGxSUlRIbHl9Pm9xdGArUntnRTN4NHpqWCtTYjNfY1lFXj0KemdCPXcrLXRVeWB5dE9OTVM4
S2dSZWY0aEE/dDxOcThlJHV8enZoMTN4SlAkUyNoI0NRckYjZVZNZXBsc2JaPjBqCnp1Zk07dDMy
am1+alVHcmthT0luVFpgenlmbnM+RXVTfUczMExGS19HLT09KGY8NTF8SyZjb2NwJkVKYFN4QWgz
Pwp6Tk8+I0xJPV4rU0V1KEZxSil5bnQ9IX5QQzliTyRyelBKQj0/PWo8SmI7bVcyU0R2N3FDX1ZB
ezxic3Bxcih+eXwKem9sWllKKVMyOVFfZX1obVloNilZeT1PenVvPEEzSz9vNzh8X3NSMyM9Wntf
UnltMGcpX2hRPjZ3QGEtKHUwMlA3CnphUSkjKHVVbHtIVyV0WU5TM0l0Q15pQXRLKGVLbExgZjkr
e2JKeklTRT91OF96Mzt+QzhARnlJLTVqX2p5N2w7Vwp6X1UjdlUzaHFxWVUzIW1ydWwmQit7cHR0
JDU5KXVreztfNGlaUSVHfHorbGhBU3I2fEgzNVRCa2w+Z0kqO25HTFUKek43Vy1uQmFNJXBBMEhi
SDhvbHlsJlhlSiV2Wm9XeiU2P1k9ZEZ5a2w9aW1MfWAlQk1Re01oZ2RgSFJvTHU2ZTJSCnphX182
RHVSNnlnI34tfVRjfEd4X3tIQE8wZWVieU15NUdtV0FESmxwSz5rcWsoZlZWQHJfZkxMS0llUz97
NGUpfQp6XlpPO3pwRUNkZTAwZGAyTytmJHZ2NXRLRVFJaH13MDNjJlhRY1ZCPWRMO2s9ZlAoLTRg
VHFhX2ZhdzRMYnVhKGAKej5SPG8+SSt5P2U3aktlWiNZTy1DMDgyP2tLfiM5IUpqKT54eiN0My0o
R0EwKFZpe180IShPNFA5MmJ4SDY9fVFiCnpuSnRvI2chU0d9MEs0WkRLd1dEQVA8Wj1NQl8mI0dp
RFFoIS1hRnkkMDlac14wUU96YTA1ZllBZWJ8Mj5nYTd+bApNMDcqcW9NNk48JGZASWxrWGFFMkoK
CmxpdGVyYWwgMApIY21WP2QwMDAwMQoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1Jlc291
cmNlcy9oU2Nyb2xsQ29udHJvbF9yaWdodC5wbmcgYi9Tb3VyY2UvV2ViQ29yZS9SZXNvdXJjZXMv
aFNjcm9sbENvbnRyb2xfcmlnaHQucG5nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQ1NzMyZWM3NzUxNDY4NzQwOThi
OTFiZjZlMjljMmFmNWY1ZTg1M2YKR0lUIGJpbmFyeSBwYXRjaApsaXRlcmFsIDMwMjAKemNtVjst
M3A0YklQKTxoOzNLfExrMDAwZTFOSkxUcTAwMEk2MDAwZEwxXkBzNmlWR2kkMDAwMDlhN2JCbTAw
MFhVCnowMDBYVTBSV251N3l0a1lPPSZ8elAqNy1aYlo+S0xaKlUrPExxaX5OYSZLbTdZLUlvZGMt
b3kpY1VZNzY3Q3p0aQp6V2UtK0Qqem1FSlk9SG5HQmRpRj41THUhU2teb19aNUU0TWVnQF83UDZj
ckppTkw5cHcpZTE8Umh+bDZxeE14OSUKemgrMnpQVHNaQ0ArXjRtRGRoaE0rYGA3IXQ9YlkjSyZV
dyFkZkRzWlZrPjtYbTA2OXtISlVaQVBrNTVSJSQtUklBCno2LWVMJkFRMHh1IWU8ND0wMDhnPGQz
Yih3dXN7Myh1V3RZWDBDM2VWQm9mRXJ8QVY/dkNSWUY7a3BTUSM2NlhzNgp6a1d2ODFFPnlAQTBM
VH5zdXY0PlMzSUxQPDBCbWBETEx2YUY0RkslKU5qP1B0KnJ9Nzs3WGE5ejlIfEhaalI2M2UKekNg
VGokSylWMjdSZUA0MDA+SHVtcHNZWTVFKEV9PzBmMVN5R0RpWXt5IylZdmojIVduS3d0b1huTDtl
ZzAzYkw1CnowN0QpViU+eTd6MUU0VXt6dT43fmFEfSk/MFJYX3VtQ2N0KyhsWnBlbUN6YkBeNj1v
fEE+elZwdXxpPU5ERys3fQp6PFJZQXhuPEVvUT1MMWE2MzsrTmNgTyg0dEk2c2kqPUglaCNYNkox
MF51P243WXcmTChKfFhlbns9QUY9MU9PMEQKeiYrcG5fPD5sNGBhS3swI2ItIXo9VEw5V3QwQkdP
JlR7R0pXcGpyeWhkaWpmYUlRJjIhb31wMDRKUktZZzNrJlRmCnpWeGhlLTxCTEIzR3ZST0dpKz1Y
fUtweV92ZGhoXm9ubjBQWXpAdmx4YWJhJER1MlBRWSVMR0MoWnVqUlN7Pk8hWAp6e2Y7VG87eHde
YkVFUzZKU2MkayRCMkNBNnhsKWx0QTwzMkU2NnQ/M0BnSjdgMzZwbVgwSVleanopclJZd2FhWTQK
emUobkpSaXc7PVFiXnQocl5EVEBUM3l9YTJYRVpXLV9XJUhzenhqX3FEKip0X20hI3RXMEtEaUpU
JlI+Nk92VlRSCnowN1JnSER6SEhaNDhhdHZ6eiY/ajlsWEY3MCR+UDNLbnhfbkpQPCsjPGJXSXNw
JXw3eThDMVlKKmFXcSgwfigrYQp6biZBKyUhNyhAdT1pbX10ZiRNTT0yNEVQVCFXZ2BVMj9SbU4y
b3FyO0kqMVdzakBUbTMycDVALTFSYE5iRz9JWCUKekFuQXd7UTZrMDJhLTsmT0xUWnMrTkYod3Nh
dWhqQFR0TkRlK3NHZz9pdXtWYU09X0x2dlFZIW4wKEMmU3MyPmBOCnojLU1aMmJUa2lMZlI+X2Io
SGdXS0olRn5Ocl9vRjNiI3dySWlqSEd8KEo+QllqTS1zYWpFNjtGaUM3dlkjfTtHZAp6U1QkQ1VI
RGV1RUgrQl5wekBCMDYycVhmRmZEYE5wVVc1P0JZPVYlR01fNWMpTCNRUn1CZVc4XzJ2LVMlZ2ZZ
Uz0KekI5b3wzdj9ZMkhgTlZpKUk8YiZnTXl3fDhBcyEpfkMwLXtFNkpMYF5CbzRgdjxXMzQ5QzZG
Pm4zclRCOCtlal4+CnpRPX5yOTVOVnVEQ2hMJUckPT43JHZWZzIwbXl4JVM1MEZvaWBebSVQdy1o
P1hofmk4TXE5anRKbG9Db2NXazJOdgp6ckpwaUZuVl9tcyY4ZVEkMiYjeFdwSVMrNnBtdEMlUS1g
UyZHPEJMSyY2XmZPJWNMISUpekYlMFhLRDluRlg/bzsKejNFaEpwTVZIVyoocmY0az5GNFEjXm1o
eW1oN0UocU5NYX0lWVotZVByeD4+eEZQVGlIMT1FK0EkVyQ9Ykc4PnNeCnptPUJuNVJhaCRhRHRy
fUAkYFh9Mmx+JEYwbUZLRWRSZFpFOClwQEU1Ukk2MUZ0Nm8tcHJiYm4+UH4paXkpRTJBTgp6c1Uy
MGpzV3pfOFFnPjMxUHxzMGNxclBBTGc4RXwodldBNjVwb1UxSlJBYVpzOEkyKHAjeGlCYFNWR292
UnMtdVMKelluVi05VGVBNz1PbStxUDgrST55T2pBUjFzJUVUYWshR0ZkYW1AaF4jPEFlPUlvWF5f
JkxQZVgmVS1CYkVrNy0+CnopQHJTMHQkd1hIK0lyZikrRzZjOz9IMjlwK1Y2RjZvanshfG8lSzN4
SWA/JTZ4O0RCfHhgbiNpYjxnVFAoX2B5LQp6PT9WNDleJHpMWChNUj1kXnJRNmA+aElSPyhIfVEz
R3pkMTM4RWkyKVdBTXo3VzlWeWBYfUhud2d5RTxXJVZAZmgKeiNBdV9ATnV3dllDaG11NDwyODV9
SzR6P005QWQwQS1ldWZ0SllpeUtHVFdyWXF7WmFFRGIxOD9ucjZEdXc5fENWCnolKlpVPHRrfHJ7
PzJiOXJvTkp6OHpTK0Zue0VkYUJNViFTLWkjQ2hMbWZEdGwlTFNIQW1pTWZmUno2bUZSYHBpYgp6
dFZ6fmY+biFWUyk+bXYkOCZ7aFFuPnc0end5M1J9dDtCWWxaUW01KTZwdHk9RGZMcnMrQS18Pj48
YTlmPjt+O1EKel9GP3VWX0hGamg5bjJnTzlvOVFeSkE4NjxiPEIyYmFKPWlKO1dXZGsjSHF2U1M3
I2UlcD52KHtINWFCIWtqb082CnpjOSQxWlpLc04tWmw4TH5tRXtgbHkzKTFOXmBvMStvN31EMFpQ
ZVkmSjtpO2lgJU55SjhfOFk2Sj99eUVAYl81YQp6YW0/ZUxyPDxxM15Oe0IrVVVwdHRVaS1ac1Bx
VW1ScDRLcEokbEp0UTtKd1J4VV4rZk1XJXx6UDEzdHorMC10KUgKemhyWHUxQkh1bH1CWXhJP25T
S1pTcDhHcmMlbChofHp1fGZFN1YlQzZVOyk3YTxwSTVjOGlCSXxZWGN0eW5GT1Q9CnpIM2Z8WXk5
T0B8SnszWD8yQFAydmErN2JzN3hFa1ZWPjhAbUVTa3wzJF9Ta21Te3dRPiVxQzE4KSk5X3wmanta
VAp6ZXM4QXZPekYoRjIjRFpFWT4yb1lYJklScGBGI3tBRGwpMXI+UVNeKWJhOGF8RVlfXiNTXkg8
YmpgNUdGakpaNDgKellQTkVBWFJLOyRRZnk9Rm80QTB1czw/cjhoeGtTRG1sQVhuQm5qPF88aXl5
LUomRUlVMF9TWCtHbzBqX1JGLXNPCnp1STFkS3hma1o/JmRaKjZKWHRrYWtiRjNXbT1jJD1Lam5p
VUxRcFJsUHZ4Zz5PJnReUmdxd3Y9TVpUaHFxRVdIOAp6eEpvPmQ9QUJsUl9CaD07ZU05PGFoRUdP
eSN4bl58UVkoM3A4SXJqcF5HI01uKjUwaG8qPlR3fEloMzR+b1RFfD0KelhfbUFyKkQkdnp3QCtw
KEUwWWM2ZEZFfSg4PFU2MV92OW5fYk14QzNZPXVuR3FxSWA0UCExTU1GUV9ZY1ROcW4tCnp4SmJR
N1RHVFYmWDghOD1CTVg4U2U3JXNjUGBJJE8qdG1GRUAhJXJBTVl8UndpJkdiT0UtX3RGeEAzNTFA
WH4kRAp6WHY/eWV7WlFncVFkUlA1ZEVEfWpRaUlaXnI5JiUlUzJVSFdsKiE5KHVKbF5EVi07YlFX
TDU4S20oXlFWZTx+TjEKelUjeEpmc0lLXzFNITRxVVM1OUJtZUQhJjQrUz1ZcXg2MUE3TmI5OFFa
bWpvTnpwcU5ZWUMrWXxoVlR1bzh9V19oCno4KChjby1nS2RRWVcwckl3OVUlUjEydGhhP09WKll0
bFJSVEhseX0+b3F0YCtSe2dFM3g0empYK1NiM19jWUVePQp6Z0I9dystdFV5YHl0T05NUzhLZ1Jl
ZjRoQT90PE5xOGUkdXx6dmgxM3hKUCRTI2gjQ1FyRiNlVk1lcGxzYlo+MGoKenVmTTt0MzJqbX5q
VUdya2FPSW5UWmB6eWZucz5FdVN9RzMwTEZLX0ctPT0oZjw1MXxLJmNvY3AmRUpgU3hBaDM/CnpO
Tz4jTEk9XitTRXUoRnFKKXludD0hflBDOWJPJHJ6UEpCPT89ajxKYjttVzJTRHY3cUNfVkF7PGJz
cHFyKH55fAp6b2xaWUopUzI5UV9lfWhtWWg2KVl5PU96dW88QTNLP283OHxfc1IzIz1ae19SeW0w
ZylfaFE+NndAYS0odTAyUDcKemFRKSModVVse0hXJXRZTlMzSXRDXmlBdEsoZUtsTGBmOSt7Ykp6
SVNFP3U4X3ozO35DOEBGeUktNWpfank3bDtXCnpfVSN2VTNocXFZVTMhbXJ1bCZCK3twdHQkNTkp
dWt7O180aVpRJUd8eitsaEFTcjZ8SDM1VEJrbD5nSSo7bkdMVQp6TjdXLW5CYU0lcEEwSGJIOG9s
eWwmWGVKJXZab1d6JTY/WT1kRnlrbD1pbUx9YCVCTVF7TWhnZGBIUm9MdTZlMlIKemFfXzZEdVI2
eWcjfi19VGN8R3hfe0hATzBlZWJ5TXk1R21XQURKbHBLPmtxayhmVlZAcl9mTExLSWVTP3s0ZSl9
CnpeWk87enBFQ2RlMDBkYDJPK2YkdnY1dEtFUUlofXcwM2MmWFFjVkI9ZEw7az1mUCgtNGBUcWFf
ZmF3NExidWEoYAp6PlI8bz5JK3k/ZTdqS2VaI1lPLUMwTz82WUt+IzkhVCN6d05naXNpUz1qVlM5
b2BMNSFLdG5AZUxTYlFMPERPJHIKekt3KWRRRztVKlFYSXh7IzVvcW5hME5vT0F1eD84c0chalZt
d19DfGhIPGAobyVtRHYjME1OO1dWWXNyXlVZYH1mCnprREpaelpuPDF0RSozWFk5UkdhcF9YaHc+
PiFKYE1nNkRZPGs+OXAkaT97OWVSUk1zQVU+RjdmeFVra2ZYSWJ7OAp6V145TkVoeyg8Sns2VUd4
RFI4eGhAQjEqdVRxJEQ9dntLTm4zcy05PnJOR1B3Ni1OPD5YaWh2ZlA0blZSKH1aeXgKeiFPVVJo
VzdsPDBXbSRmekFQNH1VdD9QUSVfeCpjU1JVWkh4cS1sRGVCKzJkaF4wfDJhKSF6VmJQKHhpZy1N
ezRrCk8wMDAwPE1OVU1uTFNUWkw2MV9WQgoKbGl0ZXJhbCAwCkhjbVY/ZDAwMDAxCgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvUmVzb3VyY2VzL2luY3JlbWVudEFycm93LnRpZmYgYi9Tb3Vy
Y2UvV2ViQ29yZS9SZXNvdXJjZXMvaW5jcmVtZW50QXJyb3cudGlmZgpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kNmY0
YjdmMDY4ZThkN2ZhZTUwMzkzODk1MTY5Zjk0ZjZmNTk4NDQ5CkdJVCBiaW5hcnkgcGF0Y2gKbGl0
ZXJhbCA1NTAKemNtYUtvRiVINW8zYE9rfXM8TURVMHdoNHBoJDg/YTB8UTspRWBANlc3diVwbU1p
ej9WJG5qVStrSz92JldpTyZ2Cno1cVRueSRXblgmbmRhNHUqKnNQc0BVWEE8OHZDIzhkcklDbllB
RnZIJlZJYlpIXn58UDRZQ2V0akdWI3E3YyQ0bAp6ODcwO2BDaXVoKFFlfWlxb2VvaENMXykxcUkp
Xz43cXl6TCt6fmYoUGJtbHpzcShPQ1E5ekUreWhQXitHYl5YJXwKYy1NRzZ1Klo9MHU/QEBEfVo1
K0xreEdyZWB0QyVMUEZRc29GZGpKM2MKCmxpdGVyYWwgMApIY21WP2QwMDAwMQoKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL1Jlc291cmNlcy9tYXJrZWRMZWZ0LnBuZyBiL1NvdXJjZS9XZWJD
b3JlL1Jlc291cmNlcy9tYXJrZWRMZWZ0LnBuZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yNjhlZGExZTBhNGIzMGUz
MjY5YTkwZGFmZDk1NGUzZDUxNDgwOWNhCkdJVCBiaW5hcnkgcGF0Y2gKbGl0ZXJhbCAyOTg3Cnpj
bVY7YzNzbSVwUCk8aDszS3xMazAwMGUxTkpMVHEwMDBGNTAwMH5hMV5AczZza1V7dDAwMDA5YTdi
Qm0wMDBYVQp6MDAwWFUwUldudTd5dGtZUGlhRiNQKjctWmJaPktMWipVKzxMcWl+TmEmS203WS1J
b2RjLW95KVhILSteN0NyYWcKel5nPklCZlJzeWJRV1hkd1FiTFA+NnA8ej5BcWZ5bGgje2ZiNjta
KHZNTVZTfiRlQFM9aipmdGc2O1VoPGlWRH5WCno8UlBNdGdRSkx3JUtQRGFxaWZjQF92WCQxd2J3
cjl0bjswLSZqLUs9NDM8YlVROGo9SnNYYHRSO0RnNysjXkt+SAp6SyFGTSpafnpicHZ0JUsye1Va
U1lfPGxTKkQ8WiVMejVvR3UoK2RheXopaFJMRmRUPmY1OSZnaFRtZ1dEMGw7KlQKekk3PGtDNmFZ
WWFqelhwWUt0PSg4b3RQJDUwSDZjX1Y5UjQtO3taQEMwQU1HNz1GPFJ4byVvcjEwUlVUK0FyJTNq
CnprcExoUVdyIyFvWGdkSWAmc0tePjA5WV5wNmxQMXJJUk14IzA1Q35jVz1IX0F3KmJKLTVEVCZa
Mm4reClRSFhecAp6MDBlc2dWOHxtUWNtUlolMDJEXkBTM0wxNnRgTyVjMDA0Tkl2T0t2WUlZb2g2
MnJZMzNTNjQwYEQ5JVkyRC08P2kKejAlNGohRjJaQDQ4OFUlMTU4KDY2MDA1d282JXBXcl5aal92
NHpBQTVIamNJcVVvR210MkxCPnJWJm5laCYjUTFpCnowMDd+MWUkb0NjRlM4bmVJfGhKbHstUCFC
MVpaOWhwbXEwKVgwaWBKd0UmPiQrRT8+JV88bFMqTVdLK24rMWNnZgp6PGsoOFlMUig/VlNBRzZ4
IWU3OHd7Y1FQdUpwQXxkO0opR3tmaWhpek0rRXJiIXAhdGNyNXcrYTM0fihZPThzNEcKencrc0xM
OW4mSmpObipLSkRpcV5VNV47YDFudkMtQHI2UCQha30xVXsoKkk9US16QHRCS0hvSX11eGRVNWR5
eUB1CnpVMUowR09EN09tYmltXkcwMDhwNFpeNl9rMm1ecDxnVz1EMnxMO0hqTjEhRERmTSFYT2FS
Mn5iTD9rWCQlQ2tTbQp6Mm1rOz9wbilvfEteeWVKNyVhZEI5S2krTCEzK0ZnSGlTWVgjS0otbExK
RE1uOUNCYk90YiMlKWhSdmBZRHF0X3YKektwaXh8UUR9eWZhMUppUVJrI2o0YTFaKW4yJWY8eHlu
elY+TEM2UmJWSWtVeDBiK18rQmFSM2NuVDdadiFBSnhXCnppekZiKWghanlHT09aODVGO2E/REFY
UHttQDshMF9JZnE8RXh7KjdgMDVYRjdoUCsySGwhM0JRSj02QGZMJUZDbwp6OGlZb28zKCNiQUZg
QURTcHF0UWd2Pkg4KEhsZ1J4dDdzM31rM0tga0Z1Pj4tMlEkUU1GZlBXIUxhe2gzMzZvPlgKenVf
Q010dEh2NnpSOyZaTmlTPVg4djNDUiNma25VeEhVeEo8QVltUnNOTFdsKlBTe0FPQVJIdCM1IXdr
aTI/Szt0CnohWTNrPXM3dGdheClKJXI3LUJMcGhnZTd+QmkwZys2RTZeWmgocDlUQm9jezNHQUZy
XjAhZ3U/Uk1IYUNNJCZGbAp6QmszJXVuPjB1b0JhX002V05XZXFJZ342UUU2OWM5byNleWhHdnBp
T0FAVy1hb25rPDdyMSg/ZkN7b0k1TipVITQKejx1djY2V3RjS1NSaW0weC1LZTJkNWpCcm1MYW17
O1FtO3ttczFyMUdubU5zYjdELUVgdClpOUY4ZlhgMl9pMy1fCnpiaDs3VWxeI3gpJnt4dlM9fHx8
Nz1tWWUzMz1NYEFnVTUoeEM+Zmc9Mk4tNz1jTm5qak9ye3lyaXk2bU1GZ0cjbAp6bkNGPWZuUXY4
Q0R6KytvNl9Mc2NsfWVRK2xeWkhBUkg+P19zQHwjI1JyNktMUkZBMSVRKz0qUlJXbm9Mc1JgN1UK
enQ1dkY8UTByNDBRKWo2PXNFNFgmc0JjdDFxPCZmYmkzVkIyT3Y2dEBxKjApO1UqbypTQVBadnx2
dkAyYVlZblQwCnpiJThhK0NiNy1nZTBEMGtuRWY1UWkjQDhUcCpjZXtOOzZscFF1Q0IlS0xfS09h
cm01Y1A2XzhJcjxlMTdpcnk2Twp6RGRIJmByWmh+c0Y9YnE5cytPMFFTZ1N+QFFMOUpteSo5NHhy
PTZ5fk1ZfiExZmV0fihOKyg8PU1gd0BEMSliK3AKeio7QyE4M2ExdUxKdiNOU0V+O3kjOD08Pklj
ZlczQD93RnB3VVZ4clZaPlFkUXozMktJZUp9a357Y1paRV4reWE/CnoyRDF6IzJIT25JNyhCJV9h
Yz97d0ZVUTtRUUExdEJLdHJXcm0wXzNSZ3BzKz9KZnFie2pZYmNRWH50YVJCOyMkeQp6Wk57U30x
fH1nVU9ISnhjP3dWM2Z4dXorbUo0YCFGJElaO21xUnJOc0hKZCMjKkR+anU9YlA3Py0/dn58Y3Y+
dkIKenNKNkllTndWWnhyZGpUYHlsI2JCSWEjR3hSYSN4TU15O0sjQ0R5eUd5UWRNU3hsV1QjdERl
P3AhPzV3VCQrb0d0Cno4TDtLcDJIVVEtWk1KPTNYSlF2O3g1Y2kqP3Z1VGZlWSQ7KHtYR1dfaHVJ
RlI5YTxmSmJGXnw0SSN4UX5uJERjPQp6S1loalltZ3o1TlNrRG04KmZabXs2VSE7WVhgTkc+KD9A
MylYU3M4T15ONVJ5T009VFRtcCgzPTheK3pwejJyKUMKel4+Sk97ZGVaZnNvM29xMz9XbyhZP2wk
Z2U/dVhvOyVydWBWbz4/PDwoOElfPjs4RXEjS01TOWdGbCpuZWVvc1NCCnpmb0hZbkJRSWt3a3lv
d1B1KHpkbXNgcHs8N2U0a3JhLVpXcTwyKk9zR1R2RVYlczBUZCRoWFQrISo4Qm5oMktNZQp6Qm1a
Um9kakhWP3IrXzVeWDlKMFdMNGpLV2B9bGYlQS18NDRJQEBMVHZmMXJIakcoemU2K3dASnQlQnZq
dHMhWDAKej8yeFM/X3ZlXy1rPE11amc7MEx6KjNidUc9MyRHJmVoZXB0aGxOKiRLYU95U1NRXm5X
bW88ME0rKFVFVU1FWFJRCnpNQmJaY0Y7NitLRWxNPmlLQl9LaUpsWiQ5R2BjXj1FQG9ORyltV1dh
Tm8tM1RJVzgpJEhnMFViLX44P0todko+JAp6MyombmltQG1qKGFDeEU1IXR7bHc3TzVeMEVJTzd6
T28mYzZsPCt8aUR5U0JXQ0dyekBDNXtTdCFYM2hBQX1gVDQKeihUTGJYVHErKDtAPD1MOGRYbnNz
eWZ0fHcjV1NUVzwrKzM+c2dTJSg0TlRwZUktVkFxYnw3c3NKdnpOSGdPWlZ1CnphWUN2Z09fUjF+
PlN5TD1jRlV8fmd8aHl8Wml9fXM5K2R+bFlxT0I3MXo5WiR3bkM9cFI5WXo0RGhJTT5XbWpndQp6
JjU2bzZtYUNwQyZGIyN5JUc7MVBvYlI5aT9Hbk5nO2dZdGNoRCVwMTlhIWVRdFpGJjNKYUt2MzNn
Wjw4RH40N0UKenRVUzFpd2ttRGFQcGo9JG0jJSlqQ1ZFWTRmbkxHTmcyQS1gWXdIVkQzZ3Z9Oz4p
aEF2VH5BbXFTPkxyYGBpN2t3CnpKezVfSXRgeXJCbWxjMjVEQk83RTg7NVZvem5SPld3NWhBYXhu
JDJ+KHFgJUEtWXVTNjR3a0J5PTlkbWA0Y1hlWAp6NGN9SUA/ZStGVytiQF5SREJIVih3bk1xMnpk
WDNTV3Y5dWAle3hDLXEqVX0mYGN5WFYoJXJSVCpaNk1IP2kraSYKel9COEMoK2dyVCV7WFdVUStm
QE5vUDFSPUFXJjI2e3YtZHgpaUteLU5taXVqOHR4aiFtP1oqU3MxTntkaDR6fTAxCnopWVRvKkp5
Y1NVKStfNXI0I3l3OXsrO2k0RWUkcGVSZ0lqKzt2O1pHZEYxSyQzRSVlfjRMYUkoakMtdSUyaCQm
Ugp6OWNMWGNZQ0BYd25ucyZibilfUX5UZT9yb0tHRHxkLWdeODsrYUN7e0coMV4oTzdtMzdZMS0r
NikwMWNOJnkxYXcKem9xY3tUYFBeWEpxUEJiSVc2c31kNHt6X2Y1T20/dk1nTlFFSkc/djJUPUtZ
ZF4wTTNJNklaeGJueSkldlpSJkxECnpKcFBsQFBzaDhReVBCQEtUeCtAUmRjQyFLWDd9a0VvO1N8
al51MmxVN1hRfU9vO2Z8O3o0TGwrX3I+QDEteGwzfAp6YXdxLUglZSZja0MrQEFoUHJQNkJLPHo9
PEwqMGtmS1VAQ1gqemVxYllRVDQoXlU+VCNfWGRUNyY7Rjcxan1Kb3kKemtDfjZsaDdFQDZvO1dA
XklwUk5ae3B0THRMKGdRLUNZfjRtcVc7VVM3Wnh2bV98QHl6JmU1M0JwX2xUUGxmUHx6CnpyVHl4
Xz5sdkB4Iz1eIVB6UjdxcUY8JGdtYHxaSlorOzwpQ3F1Jm90PGF7ODFERjB+cnZHcjVYcn44dWBs
YXYxaAp6MUROeXRWPjJ6PTAwMDA0WEYqTHQwMDZPJGVFVSg4MDAwMFdWQE9nPjAwNFI9MDA0bDQw
MDg7XzAwNG1MMDA0Q2AKejAwOFA+MDAyNmUwMDArbmwzJkZ9MDAwMlNOa2w8WmMtb0FUeT0/K1A2
b2tLLVVGNShgVD4lST1BLTV9VjM5ZisoCnpEMVpiWj1lUUhnQkJLSk15Uz9YdDZOMEBCSmtsaGUt
cD4yY2liP0Nrdkk5Tj5JISlqZXY1aGVSKEU3MEs1WFZTRAp6e1N7ezVVQ0MkJmtSflgtIzFQeW8l
T2J8ezBvcFJQdklNcChoeWN9PEJEc1BGTFloQ1hkdTBKbW9AWipfOW57S1AKejxWSSFrZT0tNGJZ
T0xBWlR9aDJBKWd1azE7UUFuIUdSJWhlclN5Qi1KUSYhVnpSd1djP0FffH4+JG1pOHI9SyZECmh1
Q0JrJF5XdiVkOHZ4RG9HZGVVKzw9X0FTMDAyb3ZQREhMa1YxaFhga0hQPXwKCmxpdGVyYWwgMApI
Y21WP2QwMDAwMQoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1Jlc291cmNlcy9tYXJrZWRN
aWRkbGUucG5nIGIvU291cmNlL1dlYkNvcmUvUmVzb3VyY2VzL21hcmtlZE1pZGRsZS5wbmcKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNTE3YWUxNDE4MTRlMTdjYjdjODQ1YmE4OGJiMTMxY2QxY2U3YmY0NgpHSVQgYmlu
YXJ5IHBhdGNoCmxpdGVyYWwgMjgxNwp6Y21WK2MzO3kocFApPGg7M0t8TGswMDBlMU5KTFRxMDAw
NjIwMDB+YTBzc0kyIzBkR0EwMDAwOWE3YkJtMDAwWFUKejAwMFhVMFJXbnU3eXRrWVBpYUYjUCo3
LVpiWj5LTFoqVSs8THFpfk5hJkttN1ktSW9kYy1veSlYSC0rXjdDcmFnCnpeZz5JQmZSc3liUVdY
ZHdRYkxQPjZwPHo+QXFmeWxoI3tmYjY7Wih2TU1WU34kZUBTPWoqZnRnNjtVaDxpVkR+Vgp6PFJQ
TXRnUUpMdyVLUERhcWlmY0BfdlgkMXdid3I5dG47MC0mai1LPTQzPGJVUThqPUpzWGB0UjtEZzcr
I15LfkgKekshRk0qWn56YnB2dCVLMntVWlNZXzxsUypEPFolTHo1b0d1KCtkYXl6KWhSTEZkVD5m
NTkmZ2hUbWdXRDBsOypUCnpJNzxrQzZhWVlhanpYcFlLdD0oOG90UCQ1MEg2Y19WOVI0LTt7WkBD
MEFNRzc9RjxSeG8lb3IxMFJVVCtBciUzagp6a3BMaFFXciMhb1hnZElgJnNLXj4wOVlecDZsUDFy
SVJNeCMwNUN+Y1c9SF9BdypiSi01RFQmWjJuK3gpUUhYXnAKejAwZXNnVjh8bVFjbVJaJTAyRF5A
UzNMMTZ0YE8lYzAwNE5Jdk9LdllJWW9oNjJyWTMzUzY0MGBEOSVZMkQtPD9pCnowJTRqIUYyWkA0
ODhVJTE1OCg2NjAwNXdvNiVwV3JeWmpfdjR6QUE1SGpjSXFVb0dtdDJMQj5yViZuZWgmI1ExaQp6
MDA3fjFlJG9DY0ZTOG5lSXxoSmx7LVAhQjFaWjlocG1xMClYMGlgSndFJj4kK0U/PiVfPGxTKk1X
SytuKzFjZ2YKejxrKDhZTFIoP1ZTQUc2eCFlNzh3e2NRUHVKcEF8ZDtKKUd7ZmloaXpNK0VyYiFw
IXRjcjV3K2EzNH4oWT04czRHCnp3K3NMTDluJkpqTm4qS0pEaXFeVTVeO2AxbnZDLUByNlAkIWt9
MVV7KCpJPVEtekB0QktIb0l9dXhkVTVkeXlAdQp6VTFKMEdPRDdPbWJpbV5HMDA4cDRaXjZfazJt
XnA8Z1c9RDJ8TDtIak4xIUREZk0hWE9hUjJ+Ykw/a1gkJUNrU20KejJtazs/cG4pb3xLXnllSjcl
YWRCOUtpK0whMytGZ0hpU1lYI0tKLWxMSkRNbjlDQmJPdGIjJSloUnZgWURxdF92CnpLcGl4fFFE
fXlmYTFKaVFSayNqNGExWiluMiVmPHh5bnpWPkxDNlJiVklrVXgwYitfK0JhUjNjblQ3WnYhQUp4
Vwp6aXpGYiloIWp5R09PWjg1RjthP0RBWFB7bUA7ITBfSWZxPEV4eyo3YDA1WEY3aFArMkhsITNC
UUo9NkBmTCVGQ28KejhpWW9vMygjYkFGYEFEU3BxdFFndj5IOChIbGdSeHQ3czN9azNLYGtGdT4+
LTJRJFFNRmZQVyFMYXtoMzM2bz5YCnp1X0NNdHRIdjZ6UjsmWk5pUz1YOHYzQ1IjZmtuVXhIVXhK
PEFZbVJzTkxXbCpQU3tBT0FSSHQjNSF3a2kyP0s7dAp6IVkzaz1zN3RnYXgpSiVyNy1CTHBoZ2U3
fkJpMGcrNkU2XlpoKHA5VEJvY3szR0FGcl4wIWd1P1JNSGFDTSQmRmwKekJrMyV1bj4wdW9CYV9N
NldOV2VxSWd+NlFFNjljOW8jZXloR3ZwaU9BQFctYW9uazw3cjEoP2ZDe29JNU4qVSE0Cno8dXY2
Nld0Y0tTUmltMHgtS2UyZDVqQnJtTGFteztRbTt7bXMxcjFHbm1Oc2I3RC1FYHQpaTlGOGZYYDJf
aTMtXwp6Ymg7N1VsXiN4KSZ7eHZTPXx8fDc9bVllMzM9TWBBZ1U1KHhDPmZnPTJOLTc9Y05uampP
cnt5cml5Nm1NRmdHI2wKem5DRj1mblF2OENEeisrbzZfTHNjbH1lUStsXlpIQVJIPj9fc0B8IyNS
cjZLTFJGQTElUSs9KlJSV25vTHNSYDdVCnp0NXZGPFEwcjQwUSlqNj1zRTRYJnNCY3QxcTwmZmJp
M1ZCMk92NnRAcSowKTtVKm8qU0FQWnZ8dnZAMmFZWW5UMAp6YiU4YStDYjctZ2UwRDBrbkVmNVFp
I0A4VHAqY2V7Tjs2bHBRdUNCJUtMX0tPYXJtNWNQNl84SXI8ZTE3aXJ5Nk8KekRkSCZgclpofnNG
PWJxOXMrTzBRU2dTfkBRTDlKbXkqOTR4cj02eX5NWX4hMWZldH4oTisoPD1NYHdARDEpYitwCnoq
O0MhODNhMXVMSnYjTlNFfjt5Izg9PD5JY2ZXM0A/d0Zwd1VWeHJWWj5RZFF6MzJLSWVKfWt+e2Na
WkVeK3lhPwp6MkQxeiMySE9uSTcoQiVfYWM/e3dGVVE7UVFBMXRCS3RyV3JtMF8zUmdwcys/SmZx
YntqWWJjUVh+dGFSQjsjJHkKelpOe1N9MXx9Z1VPSEp4Yz93VjNmeHV6K21KNGAhRiRJWjttcVJy
TnNISmQjIypEfmp1PWJQNz8tP3Z+fGN2PnZCCnpzSjZJZU53Vlp4cmRqVGB5bCNiQklhI0d4UmEj
eE1NeTtLI0NEeXlHeVFkTVN4bFdUI3REZT9wIT81d1QkK29HdAp6OEw7S3AySFVRLVpNSj0zWEpR
djt4NWNpKj92dVRmZVkkOyh7WEdXX2h1SUZSOWE8ZkpiRl58NEkjeFF+biREYz0KektZaGpZbWd6
NU5Ta0RtOCpmWm17NlUhO1lYYE5HPig/QDMpWFNzOE9eTjVSeU9NPVRUbXAoMz04Xit6cHoycilD
CnpePkpPe2RlWmZzbzNvcTM/V28oWT9sJGdlP3VYbzslcnVgVm8+Pzw8KDhJXz47OEVxI0tNUzln
RmwqbmVlb3NTQgp6Zm9IWW5CUUlrd2t5b3dQdSh6ZG1zYHB7PDdlNGtyYS1aV3E8MipPc0dUdkVW
JXMwVGQkaFhUKyEqOEJuaDJLTWUKekJtWlJvZGpIVj9yK181Xlg5SjBXTDRqS1dgfWxmJUEtfDQ0
SUBATFR2ZjFySGpHKHplNit3QEp0JUJ2anRzIVgwCno/MnhTP192ZV8tazxNdWpnOzBMeiozYnVH
PTMkRyZlaGVwdGhsTiokS2FPeVNTUV5uV21vPDBNKyhVRVVNRVhSUQp6TUJiWmNGOzYrS0VsTT5p
S0JfS2lKbFokOUdgY149RUBvTkcpbVdXYU5vLTNUSVc4KSRIZzBVYi1+OD9LaHZKPiQKejMqJm5p
bUBtaihhQ3hFNSF0e2x3N081XjBFSU83ek9vJmM2bDwrfGlEeVNCV0NHcnpAQzV7U3QhWDNoQUF9
YFQ0CnooVExiWFRxKyg7QDw9TDhkWG5zc3lmdHx3I1dTVFc8KyszPnNnUyUoNE5UcGVJLVZBcWJ8
N3NzSnZ6TkhnT1pWdQp6YVlDdmdPX1Ixfj5TeUw9Y0ZVfH5nfGh5fFppfX1zOStkfmxZcU9CNzF6
OVokd25DPXBSOVl6NERoSU0+V21qZ3UKeiY1Nm82bWFDcEMmRiMjeSVHOzFQb2JSOWk/R25OZztn
WXRjaEQlcDE5YSFlUXRaRiYzSmFLdjMzZ1o8OER+NDdFCnp0VVMxaXdrbURhUHBqPSRtIyUpakNW
RVk0Zm5MR05nMkEtYFl3SFZEM2d2fTs+KWhBdlR+QW1xUz5McmBgaTdrdwp6Sns1X0l0YHlyQm1s
YzI1REJPN0U4OzVWb3puUj5XdzVoQWF4biQyfihxYCVBLVl1UzY0d2tCeT05ZG1gNGNYZVgKejRj
fUlAP2UrRlcrYkBeUkRCSFYod25NcTJ6ZFgzU1d2OXVgJXt4Qy1xKlV9JmBjeVhWKCVyUlQqWjZN
SD9pK2kmCnpfQjhDKCtnclQle1hXVVErZkBOb1AxUj1BVyYyNnt2LWR4KWlLXi1ObWl1ajh0eGoh
bT9aKlNzMU57ZGg0en0wMQp6KVlUbypKeWNTVSkrXzVyNCN5dzl7KztpNEVlJHBlUmdJais7djta
R2RGMUskM0UlZX40TGFJKGpDLXUlMmgkJlIKejljTFhjWUNAWHdubnMmYm4pX1F+VGU/cm9LR0R8
ZC1nXjg7K2FDe3tHKDFeKE83bTM3WTEtKzYpMDFjTiZ5MWF3CnpvcWN7VGBQXlhKcVBCYklXNnN9
ZDR7el9mNU9tP3ZNZ05RRUpHP3YyVD1LWWReME0zSTZJWnhibnkpJXZaUiZMRAp6SnBQbEBQc2g4
UXlQQkBLVHgrQFJkY0MhS1g3fWtFbztTfGpedTJsVTdYUX1PbztmfDt6NExsK19yPkAxLXhsM3wK
emF3cS1IJWUmY2tDK0BBaFByUDZCSzx6PTxMKjBrZktVQENYKnplcWJZUVQ0KF5VPlQjX1hkVDcm
O0Y3MWp9Sm95CnprQ342bGg3RUA2bztXQF5JcFJOWntwdEx0TChnUS1DWX40bXFXO1VTN1p4dm1f
fEB5eiZlNTNCcF9sVFBsZlB8egp6clR5eF8+bHZAeCM9XiFQelI3cXFGPCRnbWB8WkpaKzs8KUNx
dSZvdDxhezgxREYwfnJ2R3I1WHJ+OHVgbGF2MWgKejFETnl0Vj4yej0wMDAwNFhGKkx0MDA2TyRl
RVUoODAwMDBXVkBPZz4wMDRSPTAwNGw0MDA4O18wMDRtTDAwNENgCnowMDhQPjAwMjZlMDAwK25s
MyZGfTAwMDBTTmtsPFpjLW1yUWh+TFAtemAoQDd6JVhQZjAwMDAwfE5qRjM8RCZzYwpUWCg3KGMw
MDAwME5rdlhYdTBtamZmSi08YQoKbGl0ZXJhbCAwCkhjbVY/ZDAwMDAxCgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvUmVzb3VyY2VzL21hcmtlZFJpZ2h0LnBuZyBiL1NvdXJjZS9XZWJDb3Jl
L1Jlc291cmNlcy9tYXJrZWRSaWdodC5wbmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDc0OTdkMzU2NTIxOGZkN2Yz
OGMxZjU4ZjRjOTIwM2ExOWQxNTk2NwpHSVQgYmluYXJ5IHBhdGNoCmxpdGVyYWwgMjk5OAp6Y21W
O24zclh+ZVApPGg7M0t8TGswMDBlMU5KTFRxMDAwRjUwMDB+YTFeQHM2c2tVe3QwMDAwOWE3YkJt
MDAwWFUKejAwMFhVMFJXbnU3eXRrWVBpYUYjUCo3LVpiWj5LTFoqVSs8THFpfk5hJkttN1ktSW9k
Yy1veSlYSC0rXjdDcmFnCnpeZz5JQmZSc3liUVdYZHdRYkxQPjZwPHo+QXFmeWxoI3tmYjY7Wih2
TU1WU34kZUBTPWoqZnRnNjtVaDxpVkR+Vgp6PFJQTXRnUUpMdyVLUERhcWlmY0BfdlgkMXdid3I5
dG47MC0mai1LPTQzPGJVUThqPUpzWGB0UjtEZzcrI15LfkgKekshRk0qWn56YnB2dCVLMntVWlNZ
XzxsUypEPFolTHo1b0d1KCtkYXl6KWhSTEZkVD5mNTkmZ2hUbWdXRDBsOypUCnpJNzxrQzZhWVlh
anpYcFlLdD0oOG90UCQ1MEg2Y19WOVI0LTt7WkBDMEFNRzc9RjxSeG8lb3IxMFJVVCtBciUzagp6
a3BMaFFXciMhb1hnZElgJnNLXj4wOVlecDZsUDFySVJNeCMwNUN+Y1c9SF9BdypiSi01RFQmWjJu
K3gpUUhYXnAKejAwZXNnVjh8bVFjbVJaJTAyRF5AUzNMMTZ0YE8lYzAwNE5Jdk9LdllJWW9oNjJy
WTMzUzY0MGBEOSVZMkQtPD9pCnowJTRqIUYyWkA0ODhVJTE1OCg2NjAwNXdvNiVwV3JeWmpfdjR6
QUE1SGpjSXFVb0dtdDJMQj5yViZuZWgmI1ExaQp6MDA3fjFlJG9DY0ZTOG5lSXxoSmx7LVAhQjFa
WjlocG1xMClYMGlgSndFJj4kK0U/PiVfPGxTKk1XSytuKzFjZ2YKejxrKDhZTFIoP1ZTQUc2eCFl
Nzh3e2NRUHVKcEF8ZDtKKUd7ZmloaXpNK0VyYiFwIXRjcjV3K2EzNH4oWT04czRHCnp3K3NMTDlu
JkpqTm4qS0pEaXFeVTVeO2AxbnZDLUByNlAkIWt9MVV7KCpJPVEtekB0QktIb0l9dXhkVTVkeXlA
dQp6VTFKMEdPRDdPbWJpbV5HMDA4cDRaXjZfazJtXnA8Z1c9RDJ8TDtIak4xIUREZk0hWE9hUjJ+
Ykw/a1gkJUNrU20KejJtazs/cG4pb3xLXnllSjclYWRCOUtpK0whMytGZ0hpU1lYI0tKLWxMSkRN
bjlDQmJPdGIjJSloUnZgWURxdF92CnpLcGl4fFFEfXlmYTFKaVFSayNqNGExWiluMiVmPHh5bnpW
PkxDNlJiVklrVXgwYitfK0JhUjNjblQ3WnYhQUp4Vwp6aXpGYiloIWp5R09PWjg1RjthP0RBWFB7
bUA7ITBfSWZxPEV4eyo3YDA1WEY3aFArMkhsITNCUUo9NkBmTCVGQ28KejhpWW9vMygjYkFGYEFE
U3BxdFFndj5IOChIbGdSeHQ3czN9azNLYGtGdT4+LTJRJFFNRmZQVyFMYXtoMzM2bz5YCnp1X0NN
dHRIdjZ6UjsmWk5pUz1YOHYzQ1IjZmtuVXhIVXhKPEFZbVJzTkxXbCpQU3tBT0FSSHQjNSF3a2ky
P0s7dAp6IVkzaz1zN3RnYXgpSiVyNy1CTHBoZ2U3fkJpMGcrNkU2XlpoKHA5VEJvY3szR0FGcl4w
IWd1P1JNSGFDTSQmRmwKekJrMyV1bj4wdW9CYV9NNldOV2VxSWd+NlFFNjljOW8jZXloR3ZwaU9B
QFctYW9uazw3cjEoP2ZDe29JNU4qVSE0Cno8dXY2Nld0Y0tTUmltMHgtS2UyZDVqQnJtTGFteztR
bTt7bXMxcjFHbm1Oc2I3RC1FYHQpaTlGOGZYYDJfaTMtXwp6Ymg7N1VsXiN4KSZ7eHZTPXx8fDc9
bVllMzM9TWBBZ1U1KHhDPmZnPTJOLTc9Y05uampPcnt5cml5Nm1NRmdHI2wKem5DRj1mblF2OENE
eisrbzZfTHNjbH1lUStsXlpIQVJIPj9fc0B8IyNScjZLTFJGQTElUSs9KlJSV25vTHNSYDdVCnp0
NXZGPFEwcjQwUSlqNj1zRTRYJnNCY3QxcTwmZmJpM1ZCMk92NnRAcSowKTtVKm8qU0FQWnZ8dnZA
MmFZWW5UMAp6YiU4YStDYjctZ2UwRDBrbkVmNVFpI0A4VHAqY2V7Tjs2bHBRdUNCJUtMX0tPYXJt
NWNQNl84SXI8ZTE3aXJ5Nk8KekRkSCZgclpofnNGPWJxOXMrTzBRU2dTfkBRTDlKbXkqOTR4cj02
eX5NWX4hMWZldH4oTisoPD1NYHdARDEpYitwCnoqO0MhODNhMXVMSnYjTlNFfjt5Izg9PD5JY2ZX
M0A/d0Zwd1VWeHJWWj5RZFF6MzJLSWVKfWt+e2NaWkVeK3lhPwp6MkQxeiMySE9uSTcoQiVfYWM/
e3dGVVE7UVFBMXRCS3RyV3JtMF8zUmdwcys/SmZxYntqWWJjUVh+dGFSQjsjJHkKelpOe1N9MXx9
Z1VPSEp4Yz93VjNmeHV6K21KNGAhRiRJWjttcVJyTnNISmQjIypEfmp1PWJQNz8tP3Z+fGN2PnZC
CnpzSjZJZU53Vlp4cmRqVGB5bCNiQklhI0d4UmEjeE1NeTtLI0NEeXlHeVFkTVN4bFdUI3REZT9w
IT81d1QkK29HdAp6OEw7S3AySFVRLVpNSj0zWEpRdjt4NWNpKj92dVRmZVkkOyh7WEdXX2h1SUZS
OWE8ZkpiRl58NEkjeFF+biREYz0KektZaGpZbWd6NU5Ta0RtOCpmWm17NlUhO1lYYE5HPig/QDMp
WFNzOE9eTjVSeU9NPVRUbXAoMz04Xit6cHoycilDCnpePkpPe2RlWmZzbzNvcTM/V28oWT9sJGdl
P3VYbzslcnVgVm8+Pzw8KDhJXz47OEVxI0tNUzlnRmwqbmVlb3NTQgp6Zm9IWW5CUUlrd2t5b3dQ
dSh6ZG1zYHB7PDdlNGtyYS1aV3E8MipPc0dUdkVWJXMwVGQkaFhUKyEqOEJuaDJLTWUKekJtWlJv
ZGpIVj9yK181Xlg5SjBXTDRqS1dgfWxmJUEtfDQ0SUBATFR2ZjFySGpHKHplNit3QEp0JUJ2anRz
IVgwCno/MnhTP192ZV8tazxNdWpnOzBMeiozYnVHPTMkRyZlaGVwdGhsTiokS2FPeVNTUV5uV21v
PDBNKyhVRVVNRVhSUQp6TUJiWmNGOzYrS0VsTT5pS0JfS2lKbFokOUdgY149RUBvTkcpbVdXYU5v
LTNUSVc4KSRIZzBVYi1+OD9LaHZKPiQKejMqJm5pbUBtaihhQ3hFNSF0e2x3N081XjBFSU83ek9v
JmM2bDwrfGlEeVNCV0NHcnpAQzV7U3QhWDNoQUF9YFQ0CnooVExiWFRxKyg7QDw9TDhkWG5zc3lm
dHx3I1dTVFc8KyszPnNnUyUoNE5UcGVJLVZBcWJ8N3NzSnZ6TkhnT1pWdQp6YVlDdmdPX1Ixfj5T
eUw9Y0ZVfH5nfGh5fFppfX1zOStkfmxZcU9CNzF6OVokd25DPXBSOVl6NERoSU0+V21qZ3UKeiY1
Nm82bWFDcEMmRiMjeSVHOzFQb2JSOWk/R25OZztnWXRjaEQlcDE5YSFlUXRaRiYzSmFLdjMzZ1o8
OER+NDdFCnp0VVMxaXdrbURhUHBqPSRtIyUpakNWRVk0Zm5MR05nMkEtYFl3SFZEM2d2fTs+KWhB
dlR+QW1xUz5McmBgaTdrdwp6Sns1X0l0YHlyQm1sYzI1REJPN0U4OzVWb3puUj5XdzVoQWF4biQy
fihxYCVBLVl1UzY0d2tCeT05ZG1gNGNYZVgKejRjfUlAP2UrRlcrYkBeUkRCSFYod25NcTJ6ZFgz
U1d2OXVgJXt4Qy1xKlV9JmBjeVhWKCVyUlQqWjZNSD9pK2kmCnpfQjhDKCtnclQle1hXVVErZkBO
b1AxUj1BVyYyNnt2LWR4KWlLXi1ObWl1ajh0eGohbT9aKlNzMU57ZGg0en0wMQp6KVlUbypKeWNT
VSkrXzVyNCN5dzl7KztpNEVlJHBlUmdJais7djtaR2RGMUskM0UlZX40TGFJKGpDLXUlMmgkJlIK
ejljTFhjWUNAWHdubnMmYm4pX1F+VGU/cm9LR0R8ZC1nXjg7K2FDe3tHKDFeKE83bTM3WTEtKzYp
MDFjTiZ5MWF3CnpvcWN7VGBQXlhKcVBCYklXNnN9ZDR7el9mNU9tP3ZNZ05RRUpHP3YyVD1LWWRe
ME0zSTZJWnhibnkpJXZaUiZMRAp6SnBQbEBQc2g4UXlQQkBLVHgrQFJkY0MhS1g3fWtFbztTfGpe
dTJsVTdYUX1PbztmfDt6NExsK19yPkAxLXhsM3wKemF3cS1IJWUmY2tDK0BBaFByUDZCSzx6PTxM
KjBrZktVQENYKnplcWJZUVQ0KF5VPlQjX1hkVDcmO0Y3MWp9Sm95CnprQ342bGg3RUA2bztXQF5J
cFJOWntwdEx0TChnUS1DWX40bXFXO1VTN1p4dm1ffEB5eiZlNTNCcF9sVFBsZlB8egp6clR5eF8+
bHZAeCM9XiFQelI3cXFGPCRnbWB8WkpaKzs8KUNxdSZvdDxhezgxREYwfnJ2R3I1WHJ+OHVgbGF2
MWgKejFETnl0Vj4yej0wMDAwNFhGKkx0MDA2TyRlRVUoODAwMDBXVkBPZz4wMDRSPTAwNGw0MDA4
O18wMDRtTDAwNENgCnowMDhQPjAwMjZlMDAwK25sMyZGfTAwMDJkTmtsPFpjLW19fEYtYCtQM2BP
N2ZJUU4ybjY7WTVMUFFWI0IwX1I4cgp6UUZgXyQwWW19Uk5HIVdFcmJDJlRiQH16fT88WlQ9aGFt
KGJhS0dPa00qdCYmaGAyeUo/KyhLYWZPYnpxMEtgVHAKejJMeldVMn0jJWpOKE9NfSFDNVQ8KHZf
bzFNcklnSW5HODNwYnFPMylpd0lCRmghU3BVbyM1NnVEWioyI2dHdmNwCnpVMyRUX0hnbl4oXkxI
d0VZVElGTHJmXlJre3Q3JDdsfiZrME9zIXhwSXJxeT9kRmd8dUpVPT5UQ3dlPTUwekNZOwpzem4o
dCQkQEFAZ2RtUjEhPCV7b21zQH4+cjBMKU5BUHk/QVBlKmdkZzA3KnFvTTZOPCRmK2QyOFF+Jj9+
CgpsaXRlcmFsIDAKSGNtVj9kMDAwMDEKCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9SZXNv
dXJjZXMvdlNjcm9sbENvbnRyb2xfYm90dG9tLnBuZyBiL1NvdXJjZS9XZWJDb3JlL1Jlc291cmNl
cy92U2Nyb2xsQ29udHJvbF9ib3R0b20ucG5nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmY4YjBmMmVlMmYyNzAyMWE2
YzcwMDhkNzlhMDg4OTBkYjA1OGQ2ZDQKR0lUIGJpbmFyeSBwYXRjaApsaXRlcmFsIDM2Ngp6Y21l
QVNATj8ob2xIeWB1VkJxIWlhMHZwQEsrTUwkMXwlaFBNRF96SSZIfDZmVmc/M29WR3czeW1eRFdO
RDlEb1QKej08Q1M5dSg3WV5jaT8wb1VtQDhlJGRgZWtOfGt9M3BfemY8PVlKc21sN1hTcmZQdnZ2
MHQxODkzPGRgQXs3TGFnCnotR0ZNSmMpQj0tUk5SV2AtfE4+THp+RllDUm5LMCFRKERKe3oxamNL
eUdRUjFYa1hib0o2aVZFSWE1Tyh6YSRsXwp6bFRTYDE5VFpUUTd+UW07K3hMcGArXjAxcylmcENQ
P0RDbkVhYFVAd2tlQSl9PmI2NyZqKVI9e3p3P2BTQTlXMjQKeiYxTyFKSVVjQCVOeChAI3hCRVZh
Oyo0YzR5KXtEX0JwTT44SkB1WkpubV9NM3FlQVgpfDBmb0ZtR2tVTlYhIWlBCnp1emdeQHU8aC1x
Qyk9am4yd0pxMiVefn01P0RlbTJfYmZhYyp8U0spP3ZjZntiKzZ9anxMaDZrZFRfenk/QU5sKgp6
SH47bVVCck1EUENESGI8U2IheWNUQj5JQnNwWSRgeklzKStKXkZtT1RFazw4ZyFyZ2FxODRHKks+
c3AkeTg1fVMKSWI0cTllMEFuR0hTTzVTMwoKbGl0ZXJhbCAwCkhjbVY/ZDAwMDAxCgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvUmVzb3VyY2VzL3ZTY3JvbGxDb250cm9sX21pZGRsZS5wbmcg
Yi9Tb3VyY2UvV2ViQ29yZS9SZXNvdXJjZXMvdlNjcm9sbENvbnRyb2xfbWlkZGxlLnBuZwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi5hMjFjZDdkNjcxYjNhNWYyZWYyNGMzODQyMTY5MTQzYjczYWQ1YjdlCkdJVCBiaW5h
cnkgcGF0Y2gKbGl0ZXJhbCAyMDQKemNtZUFTQE4/KG9sSHlgdVZCcSFpYTB2cEBLK01GITF8KnlK
aE9Hb3JvQ098eyNTOUdHIVhWN1pGbCZ3a1A+PzB2CnooYnRpSVZQanYtQDQoNEd6Q3lBYGtTX3k2
bF9+PjZMbykteiY7TE9CQj9DakwwUnpMVTFPXjdIODRMe0tgSUYrMAp6eCZoVFhkQWN9O1JOUEFY
Xlombm5eUTF7WiQpVGE0Y2M8JmVPR0hGUU8yK019SXItdUJiJHZFQkgjYXMzMFJlJTgKcTdxOCN5
KV9pPytsfF94czIma0xrfDlAdE52PnAtMFBoQXBDQWlrJW9wVVhPQGdlQ3lseEh9WDgKCmxpdGVy
YWwgMApIY21WP2QwMDAwMQoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1Jlc291cmNlcy92
U2Nyb2xsQ29udHJvbF90b3AucG5nIGIvU291cmNlL1dlYkNvcmUvUmVzb3VyY2VzL3ZTY3JvbGxD
b250cm9sX3RvcC5wbmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmEyMmM1YzZiMDFlZmVhMDEwNjJhZGY3Y2FjYWM0
Mjg3ZWM2ZGU2NQpHSVQgYmluYXJ5IHBhdGNoCmxpdGVyYWwgMzk0CnpjbVY7NTBkQFh+UCk8aDsz
S3xMazAwMGUxTkpMVHEwMDBkRDAwMExGMV5AczYoe1JUYzAwMDA5YTdiQm0wMDBYVQp6MDAwWFUw
UldudTd5dGtPMVpQMV9LPnpAO2oocSEzbEs9biFBWSh7VU8jbEZUQj4oX2BnOCVeZXt7UjRoPT5Q
ekEKekZhUUFSVTtxRiptO2VBNVo8MWZkTWdSWi0wNypuYVJDd0I0a0ZpUmBLbWJKRlpsY0tyO2xL
bDxPfUhZQkJIRT0kCnpZbl84QGB+cEZeKCNuSkwxSmI5PEtVbW48YDRNKTBnTG9EUldWNHNlVDl+
TiNWN2VKKk0pMW9YQW1UVmFUQ0ctQgp6IythI1UreEktclUrU3YqMWJVelk1SlNLTDN+KlZOPHh8
ciVrPUJ9ej9Vbz0yVUxRN19ZdjJ1I0tyZUBvbmF5VCMKelE1NFR3PiZPXkdSbzU2fXNPJFJUZSFZ
R0tqKXlrbkFoSW1HYjZ4aVlwekF1NlFWOClxI1BodGZZX1lmPDNXTm11CnpGYnElQUcraXBDME1K
QHZ0XkdPTXdrPTdMK3lwQHwyZG82fWVnOWt0YVgxP0ZacFVBJndLJEc1XihUe2ZvUUlUaApvNCh5
TUh6Vkc+dTVhUGcqRzZNSi0wMnxDPEdBZzk4Mj48ezkwNypxb002TjwkZzVuJlQ8cDJOeAoKbGl0
ZXJhbCAwCkhjbVY/ZDAwMDAxCgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDBkNTBjZmNkMzdmODljYzRhOTk2MjdlYmFmNWZmZmIx
YzRmNTNjNTcuLjFhYjA0MDUwMjA0ZjdjMGViOGJlMWVhOWM5ODcwNzc1NTQ0YzRjNTggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagor
KysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAg
LTYzLDYgKzYzLDcgQEAKIAkJMDFEM0NGODUxNEJEMEEzMDAwRkU5OTcwIC8qIFdlYkdMQ29udGV4
dE9iamVjdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MDFEM0NGN0YxNEJEMEEzMDAwRkU5OTcwIC8qIFdlYkdMQ29udGV4dE9iamVjdC5oICovOyB9Owog
CQkwMUQzQ0Y4NjE0QkQwQTMwMDBGRTk5NzAgLyogV2ViR0xTaGFyZWRPYmplY3QuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDFEM0NGODAxNEJEMEEz
MDAwRkU5OTcwIC8qIFdlYkdMU2hhcmVkT2JqZWN0LmNwcCAqLzsgfTsKIAkJMDFEM0NGODcxNEJE
MEEzMDAwRkU5OTcwIC8qIFdlYkdMU2hhcmVkT2JqZWN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwMUQzQ0Y4MTE0QkQwQTMwMDBGRTk5NzAgLyogV2Vi
R0xTaGFyZWRPYmplY3QuaCAqLzsgfTsKKwkJMDFFNkMyRTQxMTk0QjI4MjAwNTA4MjFDIC8qIFNw
ZWxsaW5nRG90QDJ4LnBuZyBpbiBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMDFFNkMyRTMxMTk0QjI4MjAwNTA4MjFDIC8qIFNwZWxsaW5nRG90QDJ4LnBuZyAq
LzsgfTsKIAkJMDU2MkY5NDYxNTczRUNFQjAwMzFDQTE2IC8qIFdlYktpdENTU1NWR0RvY3VtZW50
VmFsdWUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MDU2MkY5NDQxNTczRUNFQjAwMzFDQTE2IC8qIFdlYktpdENTU1NWR0RvY3VtZW50VmFsdWUuY3Bw
ICovOyB9OwogCQkwNTYyRjk0NzE1NzNFQ0VCMDAzMUNBMTYgLyogV2ViS2l0Q1NTU1ZHRG9jdW1l
bnRWYWx1ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MDU2MkY5NDUxNTczRUNFQjAwMzFDQTE2IC8qIFdlYktpdENTU1NWR0RvY3VtZW50VmFsdWUuaCAq
LzsgfTsKIAkJMDU2MkY5NjExNTczRjg4RjAwMzFDQTE2IC8qIFBsYXRmb3JtTGF5ZXIuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA1NjJGOTYwMTU3M0Y4
OEYwMDMxQ0ExNiAvKiBQbGF0Zm9ybUxheWVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTM1MzQsNiArMzUzNSw4IEBACiAJCUExN0M4MTIyMEYy
QTVDRjcwMDVEQUFFQiAvKiBIVE1MRWxlbWVudEZhY3RvcnkuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTE3QzgxMjAwRjJBNUNGNzAwNURBQUVCIC8q
IEhUTUxFbGVtZW50RmFjdG9yeS5jcHAgKi87IH07CiAJCUExN0M4MTIzMEYyQTVDRjcwMDVEQUFF
QiAvKiBIVE1MRWxlbWVudEZhY3RvcnkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEExN0M4MTIxMEYyQTVDRjcwMDVEQUFFQiAvKiBIVE1MRWxlbWVudEZh
Y3RvcnkuaCAqLzsgfTsKIAkJQTFDN0ZBQTIxMzNBNUQzNTAwRDY3MzJEIC8qIEpTWFBhdGhSZXN1
bHRDdXN0b20uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQTFDN0ZBQTExMzNBNUQzNTAwRDY3MzJEIC8qIEpTWFBhdGhSZXN1bHRDdXN0b20uY3BwICov
OyB9OworCQlBMURFNzEyRDE4NjEyQUMxMDA3MzQxOTIgLyogVG91Y2hFdmVudHMuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTFERTcxMkIxODYxMkFD
MTAwNzM0MTkyIC8qIFRvdWNoRXZlbnRzLmNwcCAqLzsgfTsKKwkJQTFERTcxMzIxODYxMzIyMjAw
NzM0MTkyIC8qIFRvdWNoQ29uc3RydWN0b3JzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExREU3MTMwMTg2MTMyMjIwMDczNDE5MiAvKiBUb3VjaENv
bnN0cnVjdG9ycy5jcHAgKi87IH07CiAJCUExRTExNTQ0MTMwMTVDM0QwMDU0QUM4QyAvKiBEaXN0
YW50TGlnaHRTb3VyY2UuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQTFFMTE1NDMxMzAxNUMzRDAwNTRBQzhDIC8qIERpc3RhbnRMaWdodFNvdXJjZS5j
cHAgKi87IH07CiAJCUExRTExNTQ2MTMwMTVDNEUwMDU0QUM4QyAvKiBQb2ludExpZ2h0U291cmNl
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExRTEx
NTQ1MTMwMTVDNEUwMDU0QUM4QyAvKiBQb2ludExpZ2h0U291cmNlLmNwcCAqLzsgfTsKIAkJQTFF
MTE1NDgxMzAxNUM1RDAwNTRBQzhDIC8qIFNwb3RMaWdodFNvdXJjZS5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMUUxMTU0NzEzMDE1QzVEMDA1NEFD
OEMgLyogU3BvdExpZ2h0U291cmNlLmNwcCAqLzsgfTsKQEAgLTM2MDIsNiArMzYwNSw4IEBACiAJ
CUE1QUZCMzRGMTE1MTUxQTcwMEIwNDVDQiAvKiBTdGVwUmFuZ2UuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTVBRkIzNEQxMTUxNTFBNzAwQjA0NUNC
IC8qIFN0ZXBSYW5nZS5jcHAgKi87IH07CiAJCUE1QUZCMzUwMTE1MTUxQTcwMEIwNDVDQiAvKiBT
dGVwUmFuZ2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEE1QUZCMzRFMTE1MTUxQTcwMEIwNDVDQiAvKiBTdGVwUmFuZ2UuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlBNUM1NjZBQjEyN0EzQUFEMDBFOEEz
RkYgLyogRGlza0ltYWdlQ2FjaGVDbGllbnRJT1MuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1QzU2NkFBMTI3QTNBQUQwMEU4QTNGRiAvKiBEaXNrSW1h
Z2VDYWNoZUNsaWVudElPUy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CisJCUE1REVCREEzMTZGQjkwODcwMDgzNkZFMCAvKiBXZWJLaXRQbGF5YmFja1Rh
cmdldEF2YWlsYWJpbGl0eUV2ZW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEE1REVCRDlGMTZGQjkwODcwMDgzNkZFMCAvKiBXZWJLaXRQbGF5YmFj
a1RhcmdldEF2YWlsYWJpbGl0eUV2ZW50LmNwcCAqLzsgfTsKKwkJQTVERUJEQTQxNkZCOTA4NzAw
ODM2RkUwIC8qIFdlYktpdFBsYXliYWNrVGFyZ2V0QXZhaWxhYmlsaXR5RXZlbnQuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1REVCREEwMTZGQjkwODcw
MDgzNkZFMCAvKiBXZWJLaXRQbGF5YmFja1RhcmdldEF2YWlsYWJpbGl0eUV2ZW50LmggKi87IH07
CiAJCUE1RjZFMTZCMTMyRUQ0NkUwMDhFREFFMyAvKiBBdXRvY2FwaXRhbGl6ZS5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNUY2RTE2QzEzMkVENDZF
MDA4RURBRTMgLyogQXV0b2NhcGl0YWxpemUuY3BwICovOyB9OwogCQlBNUY5RUY3MDEyNjY3NTBE
MDBGQ0NGNTIgLyogRGlza0ltYWdlQ2FjaGVJT1MubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNUY5RUY2RTEyNjY3NTBEMDBGQ0NGNTIgLyogRGlza0lt
YWdlQ2FjaGVJT1MubW0gKi87IH07CiAJCUE1RjlFRjcxMTI2Njc1MEQwMEZDQ0Y1MiAvKiBEaXNr
SW1hZ2VDYWNoZUlPUy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQTVGOUVGNkYxMjY2NzUwRDAwRkNDRjUyIC8qIERpc2tJbWFnZUNhY2hlSU9TLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTUyOTUsNiAr
NTMwMCw3IEBACiAJCUJFODhFMERGMTcxNUQyQTIwMDY1OEQ5OCAvKiBWaWRlb1RyYWNrLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCRTg4RTBEMzE3MTVE
MkEyMDA2NThEOTggLyogVmlkZW9UcmFjay5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CiAJCUJFODhFMEUxMTcxNUQyQTIwMDY1OEQ5OCAvKiBWaWRlb1Ry
YWNrTGlzdC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBCRTg4RTBENTE3MTVEMkEyMDA2NThEOTggLyogVmlkZW9UcmFja0xpc3QuY3BwICovOyB9Owog
CQlCRTg4RTBFMjE3MTVEMkEyMDA2NThEOTggLyogVmlkZW9UcmFja0xpc3QuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJFODhFMEQ2MTcxNUQyQTIwMDY1
OEQ5OCAvKiBWaWRlb1RyYWNrTGlzdC5oICovOyB9OworCQlCRThDNzUzMTEwNjgxMzI0MDAxRTkz
RjUgLyogU3BlbGxpbmdEb3QucG5nIGluIFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBCRThDNzUzMDEwNjgxMzI0MDAxRTkzRjUgLyogU3BlbGxpbmdEb3QucG5n
ICovOyB9OwogCQlCRThFRjA0MjE3MUM4RkY5MDA5QjQ4QzMgLyogSlNBdWRpb1RyYWNrLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJFOEVGMDNFMTcx
QzhGRjkwMDlCNDhDMyAvKiBKU0F1ZGlvVHJhY2suY3BwICovOyB9OwogCQlCRThFRjA0MzE3MUM4
RkY5MDA5QjQ4QzMgLyogSlNBdWRpb1RyYWNrLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBCRThFRjAzRjE3MUM4RkY5MDA5QjQ4QzMgLyogSlNBdWRpb1Ry
YWNrLmggKi87IH07CiAJCUJFOEVGMDQ0MTcxQzhGRjkwMDlCNDhDMyAvKiBKU0F1ZGlvVHJhY2tM
aXN0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJF
OEVGMDQwMTcxQzhGRjkwMDlCNDhDMyAvKiBKU0F1ZGlvVHJhY2tMaXN0LmNwcCAqLzsgfTsKQEAg
LTU1NDcsNiArNTU1Myw4IEBACiAJCUQwMDBFRDI4MTFDMUI5Q0QwMEM0NzcyNiAvKiBTdWJmcmFt
ZUxvYWRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
RDAwMEVEMjYxMUMxQjlDRDAwQzQ3NzI2IC8qIFN1YmZyYW1lTG9hZGVyLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRDAxQTI3QUQxMEM5QkZEODAw
MDI2QTQyIC8qIFNwYWNlU3BsaXRTdHJpbmcuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gRDAxQTI3QUIxMEM5QkZEODAwMDI2QTQyIC8qIFNwYWNlU3Bs
aXRTdHJpbmcuY3BwICovOyB9OwogCQlEMDFBMjdBRTEwQzlCRkQ4MDAwMjZBNDIgLyogU3BhY2VT
cGxpdFN0cmluZy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gRDAxQTI3QUMxMEM5QkZEODAwMDI2QTQyIC8qIFNwYWNlU3BsaXRTdHJpbmcuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlEMDJCNjRCMjE0MDg5
RTU2MDA2RUZBMjEgLyogRGljdGF0aW9uUGhyYXNlV2l0aEFsdGVybmF0aXZlc0RvdC5wbmcgaW4g
UmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEQwMkI2NEIwMTQw
ODlFNTYwMDZFRkEyMSAvKiBEaWN0YXRpb25QaHJhc2VXaXRoQWx0ZXJuYXRpdmVzRG90LnBuZyAq
LzsgfTsKKwkJRDAyQjY0QjMxNDA4OUU1NjAwNkVGQTIxIC8qIERpY3RhdGlvblBocmFzZVdpdGhB
bHRlcm5hdGl2ZXNEb3RAMngucG5nIGluIFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBEMDJCNjRCMTE0MDg5RTU2MDA2RUZBMjEgLyogRGljdGF0aW9uUGhyYXNl
V2l0aEFsdGVybmF0aXZlc0RvdEAyeC5wbmcgKi87IH07CiAJCUQwNUNFRDI5MEE0MEJCMkMwMEM1
QUYzOCAvKiBGb3JtYXRCbG9ja0NvbW1hbmQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gRDA1Q0VEMjcwQTQwQkIyQzAwQzVBRjM4IC8qIEZvcm1hdEJs
b2NrQ29tbWFuZC5jcHAgKi87IH07CiAJCUQwNUNFRDJBMEE0MEJCMkMwMEM1QUYzOCAvKiBGb3Jt
YXRCbG9ja0NvbW1hbmQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEQwNUNFRDI4MEE0MEJCMkMwMEM1QUYzOCAvKiBGb3JtYXRCbG9ja0NvbW1hbmQuaCAq
LzsgfTsKIAkJRDA2QzBEOEYwQ0ZEMTE0NjAwNjVGNDNGIC8qIFJlbW92ZUZvcm1hdENvbW1hbmQu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEQwNkMwRDhE
MENGRDExNDYwMDY1RjQzRiAvKiBSZW1vdmVGb3JtYXRDb21tYW5kLmggKi87IH07CkBAIC01NTU5
LDYgKzU1NjcsOCBAQAogCQlEMEIwNTU2ODA5QzY3MDAxMDAzMDdFNDMgLyogQ3JlYXRlTGlua0Nv
bW1hbmQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEQw
QjA1NTY2MDlDNjcwMDEwMDMwN0U0MyAvKiBDcmVhdGVMaW5rQ29tbWFuZC5oICovOyB9OwogCQlE
MEIwNTU2OTA5QzY3MDAxMDAzMDdFNDMgLyogQ3JlYXRlTGlua0NvbW1hbmQuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRDBCMDU1NjcwOUM2NzAwMTAw
MzA3RTQzIC8qIENyZWF0ZUxpbmtDb21tYW5kLmNwcCAqLzsgfTsKIAkJRDBCQzU0NDkxNDQzQUM0
QTAwRTEwNURBIC8qIENhY2hlZFN0eWxlU2hlZXRDbGllbnQuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEQwQkM1NDQ4MTQ0M0FDNEEwMEUxMDVEQSAvKiBD
YWNoZWRTdHlsZVNoZWV0Q2xpZW50LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKKwkJRDBCRDRGNUMxNDA4ODUwRjAwNjgzOUI2IC8qIERpY3RhdGlvbkNv
bW1hbmRJT1MuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gRDBCRDRGNUExNDA4ODUwRjAwNjgzOUI2IC8qIERpY3RhdGlvbkNvbW1hbmRJT1MuY3BwICov
OyB9OworCQlEMEJENEY1RDE0MDg4NTBGMDA2ODM5QjYgLyogRGljdGF0aW9uQ29tbWFuZElPUy5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRDBCRDRGNUIx
NDA4ODUwRjAwNjgzOUI2IC8qIERpY3RhdGlvbkNvbW1hbmRJT1MuaCAqLzsgfTsKIAkJRDBDRTU4
RjgxMjVFNENDMjAwRjNGMTk5IC8qIFJlc291cmNlTG9hZFNjaGVkdWxlci5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBEMENFNThGNjEyNUU0Q0MyMDBG
M0YxOTkgLyogUmVzb3VyY2VMb2FkU2NoZWR1bGVyLmNwcCAqLzsgfTsKIAkJRDBDRTU4RjkxMjVF
NENDMjAwRjNGMTk5IC8qIFJlc291cmNlTG9hZFNjaGVkdWxlci5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRDBDRTU4RjcxMjVFNENDMjAwRjNGMTk5IC8q
IFJlc291cmNlTG9hZFNjaGVkdWxlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CiAJCUQwRURBNzc0MTQzRTMwM0MwMDI4RTM4MyAvKiBDYWNoZWRSYXdS
ZXNvdXJjZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBEMEVEQTc3MjE0M0UzMDNDMDAyOEUzODMgLyogQ2FjaGVkUmF3UmVzb3VyY2UuY3BwICovOyB9
OwpAQCAtNjQyNyw2ICs2NDM3LDggQEAKIAkJRkVCMjZEMjgxNjdBOEYyQTAwRkREMjZCIC8qIERh
dGFiYXNlU2VydmVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEZFQjI2RDI3MTY3QThGMkEwMEZERDI2QiAvKiBEYXRhYmFzZVNlcnZlci5jcHAgKi87
IH07CiAJCUZFQkM1RjMxMTZCRDBDQzMwMDY1OUJEMyAvKiBEYXRhYmFzZUJhc2UuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkVCQzVGMkYxNkJEMEND
MzAwNjU5QkQzIC8qIERhdGFiYXNlQmFzZS5jcHAgKi87IH07CiAJCUZFQkM1RjMyMTZCRDBDQzMw
MDY1OUJEMyAvKiBEYXRhYmFzZUJhc2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEZFQkM1RjMwMTZCRDBDQzMwMDY1OUJEMyAvKiBEYXRhYmFzZUJhc2Uu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlGRUQx
M0QyQTBDRUE5MURGMDBEODk0NjYgLyogRE9NVUlLaXRFeHRlbnNpb25zLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRUQxM0QyNjBDRUE5MURGMDBEODk0
NjYgLyogRE9NVUlLaXRFeHRlbnNpb25zLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKKwkJRkVEMTNEMkIwQ0VBOTFERjAwRDg5NDY2IC8qIERPTVVJS2l0
RXh0ZW5zaW9ucy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEZFRDEzRDI3MENFQTkxREYwMEQ4OTQ2NiAvKiBET01VSUtpdEV4dGVuc2lvbnMubW0gKi87
IH07CiAJCUZFRDEzRDNBMENFQTkzNDYwMEQ4OTQ2NiAvKiBFZGl0b3JJT1MubW0gaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRUQxM0QzOTBDRUE5MzQ2MDBE
ODk0NjYgLyogRWRpdG9ySU9TLm1tICovOyB9OwogCQlGRUQxM0QzRDBDRUE5MzZBMDBEODk0NjYg
LyogRnJhbWVJT1MubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBGRUQxM0QzQjBDRUE5MzZBMDBEODk0NjYgLyogRnJhbWVJT1MubW0gKi87IH07CiAJCUZF
RDEzRDQwMENFQTkzOTQwMEQ4OTQ2NiAvKiBJY29uSU9TLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkVEMTNEM0YwQ0VBOTM5NDAwRDg5NDY2IC8qIElj
b25JT1MubW0gKi87IH07CkBAIC02NzA5LDYgKzY3MjEsNyBAQAogCQkwMUQzQ0Y3RjE0QkQwQTMw
MDBGRTk5NzAgLyogV2ViR0xDb250ZXh0T2JqZWN0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgbmFtZSA9IFdlYkdMQ29udGV4dE9iamVjdC5oOyBwYXRoID0gY2FudmFzL1dlYkdMQ29udGV4
dE9iamVjdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwMUQzQ0Y4MDE0QkQwQTMw
MDBGRTk5NzAgLyogV2ViR0xTaGFyZWRPYmplY3QuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBuYW1lID0gV2ViR0xTaGFyZWRPYmplY3QuY3BwOyBwYXRoID0gY2FudmFzL1dlYkdM
U2hhcmVkT2JqZWN0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDFEM0NGODEx
NEJEMEEzMDAwRkU5OTcwIC8qIFdlYkdMU2hhcmVkT2JqZWN0LmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgbmFtZSA9IFdlYkdMU2hhcmVkT2JqZWN0Lmg7IHBhdGggPSBjYW52YXMvV2ViR0xT
aGFyZWRPYmplY3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMDFFNkMyRTMxMTk0
QjI4MjAwNTA4MjFDIC8qIFNwZWxsaW5nRG90QDJ4LnBuZyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IGltYWdlLnBuZzsgcGF0aCA9ICJTcGVsbGluZ0Rv
dEAyeC5wbmciOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwNTYyRjk0NDE1NzNFQ0VC
MDAzMUNBMTYgLyogV2ViS2l0Q1NTU1ZHRG9jdW1lbnRWYWx1ZS5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJLaXRDU1NTVkdEb2N1bWVudFZhbHVlLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDU2MkY5NDUxNTczRUNFQjAwMzFDQTE2IC8qIFdl
YktpdENTU1NWR0RvY3VtZW50VmFsdWUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gV2ViS2l0Q1NTU1ZHRG9jdW1lbnRWYWx1ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQkwNTYyRjk2MDE1NzNGODhGMDAzMUNBMTYgLyogUGxhdGZvcm1MYXllci5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQbGF0Zm9ybUxheWVyLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CkBAIC0xMDQ2MSw2ICsxMDQ3NCw4IEBACiAJCUExN0M4MTIwMEYyQTVDRjcw
MDVEQUFFQiAvKiBIVE1MRWxlbWVudEZhY3RvcnkuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gSFRNTEVsZW1lbnRGYWN0b3J5LmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJQTE3QzgxMjEwRjJBNUNGNzAwNURBQUVCIC8qIEhUTUxFbGVtZW50RmFjdG9y
eS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBIVE1MRWxlbWVudEZhY3Rvcnku
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTFDN0ZBQTExMzNBNUQzNTAwRDY3MzJE
IC8qIEpTWFBhdGhSZXN1bHRDdXN0b20uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gSlNYUGF0aFJlc3VsdEN1c3RvbS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCUExREU3MTJCMTg2MTJBQzEwMDczNDE5MiAvKiBUb3VjaEV2ZW50cy5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBUb3VjaEV2ZW50cy5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCUExREU3MTMwMTg2MTMyMjIwMDczNDE5MiAvKiBUb3VjaENv
bnN0cnVjdG9ycy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBUb3Vj
aENvbnN0cnVjdG9ycy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUExRTExNTQz
MTMwMTVDM0QwMDU0QUM4QyAvKiBEaXN0YW50TGlnaHRTb3VyY2UuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gRGlzdGFudExpZ2h0U291cmNlLmNwcDsgcGF0aCA9IGZp
bHRlcnMvRGlzdGFudExpZ2h0U291cmNlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJQTFFMTE1NDUxMzAxNUM0RTAwNTRBQzhDIC8qIFBvaW50TGlnaHRTb3VyY2UuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gUG9pbnRMaWdodFNvdXJjZS5jcHA7IHBh
dGggPSBmaWx0ZXJzL1BvaW50TGlnaHRTb3VyY2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQlBMUUxMTU0NzEzMDE1QzVEMDA1NEFDOEMgLyogU3BvdExpZ2h0U291cmNlLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IFNwb3RMaWdodFNvdXJjZS5jcHA7
IHBhdGggPSBmaWx0ZXJzL1Nwb3RMaWdodFNvdXJjZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CkBAIC0xMDUzOCw2ICsxMDU1Myw5IEBACiAJCUE1QzU2NkFBMTI3QTNBQUQwMEU4QTNG
RiAvKiBEaXNrSW1hZ2VDYWNoZUNsaWVudElPUy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBEaXNrSW1hZ2VDYWNoZUNsaWVudElPUy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQlBNUM5NzRDRjExNDg1RkYxMDA2NkYyQUIgLyogS2V5RXZlbnRDb2NvYS5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBLZXlFdmVudENvY29hLmg7IHBhdGggPSBjb2Nv
YS9LZXlFdmVudENvY29hLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE1Qzk3NEQw
MTE0ODVGRjEwMDY2RjJBQiAvKiBLZXlFdmVudENvY29hLm1tICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAub2JqY3BwOyBuYW1lID0gS2V5RXZlbnRDb2NvYS5tbTsgcGF0aCA9IGNvY29hL0tleUV2
ZW50Q29jb2EubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUE1REVCRDlGMTZGQjkw
ODcwMDgzNkZFMCAvKiBXZWJLaXRQbGF5YmFja1RhcmdldEF2YWlsYWJpbGl0eUV2ZW50LmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYktpdFBsYXliYWNrVGFyZ2V0
QXZhaWxhYmlsaXR5RXZlbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBNURF
QkRBMDE2RkI5MDg3MDA4MzZGRTAgLyogV2ViS2l0UGxheWJhY2tUYXJnZXRBdmFpbGFiaWxpdHlF
dmVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJLaXRQbGF5YmFja1Rh
cmdldEF2YWlsYWJpbGl0eUV2ZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUE1
REVCREExMTZGQjkwODcwMDgzNkZFMCAvKiBXZWJLaXRQbGF5YmFja1RhcmdldEF2YWlsYWJpbGl0
eUV2ZW50LmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBXZWJLaXRQbGF5YmFja1RhcmdldEF2
YWlsYWJpbGl0eUV2ZW50LmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTVGNkUx
NkMxMzJFRDQ2RTAwOEVEQUUzIC8qIEF1dG9jYXBpdGFsaXplLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEF1dG9jYXBpdGFsaXplLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJQTVGOUVGNkUxMjY2NzUwRDAwRkNDRjUyIC8qIERpc2tJbWFnZUNhY2hl
SU9TLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gRGlza0ltYWdl
Q2FjaGVJT1MubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE1RjlFRjZGMTI2Njc1
MEQwMEZDQ0Y1MiAvKiBEaXNrSW1hZ2VDYWNoZUlPUy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBEaXNrSW1hZ2VDYWNoZUlPUy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwpAQCAtMTI0NzUsNiArMTI0OTMsNyBAQAogCQlCRTg4RTBENTE3MTVEMkEyMDA2NThEOTggLyog
VmlkZW9UcmFja0xpc3QuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
VmlkZW9UcmFja0xpc3QuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCRTg4RTBE
NjE3MTVEMkEyMDA2NThEOTggLyogVmlkZW9UcmFja0xpc3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gVmlkZW9UcmFja0xpc3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJQkU4OEUwRDcxNzE1RDJBMjAwNjU4RDk4IC8qIFZpZGVvVHJhY2tMaXN0LmlkbCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHRleHQ7IHBhdGggPSBWaWRlb1RyYWNrTGlzdC5pZGw7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCUJFOEM3NTMwMTA2ODEzMjQwMDFFOTNGNSAvKiBTcGVsbGluZ0RvdC5wbmcg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBpbWFnZS5w
bmc7IHBhdGggPSBTcGVsbGluZ0RvdC5wbmc7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CUJFOEVGMDNFMTcxQzhGRjkwMDlCNDhDMyAvKiBKU0F1ZGlvVHJhY2suY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNBdWRpb1RyYWNrLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJQkU4RUYwM0YxNzFDOEZGOTAwOUI0OEMzIC8qIEpTQXVkaW9UcmFj
ay5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU0F1ZGlvVHJhY2suaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkU4RUYwNDAxNzFDOEZGOTAwOUI0OEMzIC8qIEpT
QXVkaW9UcmFja0xpc3QuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
SlNBdWRpb1RyYWNrTGlzdC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xMjc4
Nyw2ICsxMjgwNiw4IEBACiAJCUQwMDBFRDI2MTFDMUI5Q0QwMEM0NzcyNiAvKiBTdWJmcmFtZUxv
YWRlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTdWJmcmFtZUxvYWRlci5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlEMDFBMjdBQjEwQzlCRkQ4MDAwMjZBNDIg
LyogU3BhY2VTcGxpdFN0cmluZy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBTcGFjZVNwbGl0U3RyaW5nLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
RDAxQTI3QUMxMEM5QkZEODAwMDI2QTQyIC8qIFNwYWNlU3BsaXRTdHJpbmcuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU3BhY2VTcGxpdFN0cmluZy5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQlEMDJCNjRCMDE0MDg5RTU2MDA2RUZBMjEgLyogRGljdGF0aW9uUGhy
YXNlV2l0aEFsdGVybmF0aXZlc0RvdC5wbmcgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSBpbWFnZS5wbmc7IHBhdGggPSBEaWN0YXRpb25QaHJhc2VXaXRo
QWx0ZXJuYXRpdmVzRG90LnBuZzsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRDAyQjY0
QjExNDA4OUU1NjAwNkVGQTIxIC8qIERpY3RhdGlvblBocmFzZVdpdGhBbHRlcm5hdGl2ZXNEb3RA
MngucG5nICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
aW1hZ2UucG5nOyBwYXRoID0gIkRpY3RhdGlvblBocmFzZVdpdGhBbHRlcm5hdGl2ZXNEb3RAMngu
cG5nIjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRDA1Q0VEMjcwQTQwQkIyQzAwQzVB
RjM4IC8qIEZvcm1hdEJsb2NrQ29tbWFuZC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gRm9ybWF0QmxvY2tDb21tYW5kLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJRDA1Q0VEMjgwQTQwQkIyQzAwQzVBRjM4IC8qIEZvcm1hdEJsb2NrQ29tbWFuZC5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRm9ybWF0QmxvY2tDb21tYW5kLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUQwNkMwRDhEMENGRDExNDYwMDY1RjQzRiAv
KiBSZW1vdmVGb3JtYXRDb21tYW5kLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFJlbW92ZUZvcm1hdENvbW1hbmQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTEy
Nzk5LDYgKzEyODIwLDggQEAKIAkJRDBCMDU1NjYwOUM2NzAwMTAwMzA3RTQzIC8qIENyZWF0ZUxp
bmtDb21tYW5kLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENyZWF0ZUxpbmtD
b21tYW5kLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUQwQjA1NTY3MDlDNjcwMDEw
MDMwN0U0MyAvKiBDcmVhdGVMaW5rQ29tbWFuZC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBDcmVhdGVMaW5rQ29tbWFuZC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCUQwQkM1NDQ4MTQ0M0FDNEEwMEUxMDVEQSAvKiBDYWNoZWRTdHlsZVNoZWV0Q2xp
ZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENhY2hlZFN0eWxlU2hlZXRD
bGllbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRDBCRDRGNUExNDA4ODUwRjAw
NjgzOUI2IC8qIERpY3RhdGlvbkNvbW1hbmRJT1MuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gRGljdGF0aW9uQ29tbWFuZElPUy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCUQwQkQ0RjVCMTQwODg1MEYwMDY4MzlCNiAvKiBEaWN0YXRpb25Db21tYW5k
SU9TLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERpY3RhdGlvbkNvbW1hbmRJ
T1MuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRDBDRTU4RjYxMjVFNENDMjAwRjNG
MTk5IC8qIFJlc291cmNlTG9hZFNjaGVkdWxlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBSZXNvdXJjZUxvYWRTY2hlZHVsZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQlEMENFNThGNzEyNUU0Q0MyMDBGM0YxOTkgLyogUmVzb3VyY2VMb2FkU2No
ZWR1bGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlc291cmNlTG9hZFNj
aGVkdWxlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlEMEVEQTc3MjE0M0UzMDND
MDAyOEUzODMgLyogQ2FjaGVkUmF3UmVzb3VyY2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gQ2FjaGVkUmF3UmVzb3VyY2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwpAQCAtMTM3NjIsNiArMTM3ODUsOCBAQAogCQlGRUIyNkQyNzE2N0E4RjJBMDBGREQy
NkIgLyogRGF0YWJhc2VTZXJ2ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gRGF0YWJhc2VTZXJ2ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlG
RUJDNUYyRjE2QkQwQ0MzMDA2NTlCRDMgLyogRGF0YWJhc2VCYXNlLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IERhdGFiYXNlQmFzZS5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCUZFQkM1RjMwMTZCRDBDQzMwMDY1OUJEMyAvKiBEYXRhYmFzZUJhc2Uu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRGF0YWJhc2VCYXNlLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUZFRDEzRDI2MENFQTkxREYwMEQ4OTQ2NiAvKiBET01V
SUtpdEV4dGVuc2lvbnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRE9NVUlL
aXRFeHRlbnNpb25zLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUZFRDEzRDI3MENF
QTkxREYwMEQ4OTQ2NiAvKiBET01VSUtpdEV4dGVuc2lvbnMubW0gKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5vYmpjcHA7IHBhdGggPSBET01VSUtpdEV4dGVuc2lvbnMubW07IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCUZFRDEzRDM5MENFQTkzNDYwMEQ4OTQ2NiAvKiBFZGl0b3JJT1Mu
bW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBFZGl0b3JJT1MubW07
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUZFRDEzRDNCMENFQTkzNkEwMEQ4OTQ2NiAv
KiBGcmFtZUlPUy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEZy
YW1lSU9TLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGRUQxM0QzRjBDRUE5Mzk0
MDBEODk0NjYgLyogSWNvbklPUy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsg
cGF0aCA9IEljb25JT1MubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xMzc3MCw2
ICsxMzc5NSw3IEBACiAJCUZFREVGODQwMTY3OTcxMDgwMDBFNDQ0QSAvKiBEYXRhYmFzZVN0cmF0
ZWd5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERhdGFiYXNlU3RyYXRlZ3ku
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkVFMTgxMTExNkMzMTlFODAwMDg0ODQ5
IC8qIFNRTFRyYW5zYWN0aW9uQmFja2VuZC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBTUUxUcmFuc2FjdGlvbkJhY2tlbmQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQlGRUUxODExMjE2QzMxOUU4MDAwODQ4NDkgLyogU1FMVHJhbnNhY3Rpb25CYWNr
ZW5kLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNRTFRyYW5zYWN0aW9uQmFj
a2VuZC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlGRUU3RDY2MTBEOTlBRDE2MDA1
MzUxRjYgLyogaU9TLnhjY29uZmlnICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC54Y2NvbmZpZzsgcGF0aCA9IGlP
Uy54Y2NvbmZpZzsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkY5NDVFQzkxNjFGN0Yz
NjAwOTcxQkM4IC8qIFBzZXVkb0VsZW1lbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gUHNldWRvRWxlbWVudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCUZGOTQ1RUNBMTYxRjdGMzYwMDk3MUJDOCAvKiBQc2V1ZG9FbGVtZW50LmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBzZXVkb0VsZW1lbnQuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJRkZBQzMwRkMxODRGQjE0NTAwOEM0RjFFIC8qIFRyYWlsaW5nT2JqZWN0
cy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBUcmFpbGluZ09iamVjdHMuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE0MzU3LDYgKzE0MzgzLDcgQEAKIAkJCWlz
YSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCiAJCQkJQ0QwREJCM0UxNDIyNzRFNjAwMjgw
MjYzIC8qIGF1ZGlvICovLAorCQkJCTY1OTk4QTY1MEU1RjVGRDMwMDRFMDk3QSAvKiBpbWFnZXMg
Ki8sCiAJCQkJNDZGOUQ1REEwQjBENjAxNzAwMjhFRTM2IC8qIGFsaWFzQ3Vyc29yLnBuZyAqLywK
IAkJCQk0NkQ0RjI0NjBBRjk3RTgxMDAzNTM4NUEgLyogY2VsbEN1cnNvci5wbmcgKi8sCiAJCQkJ
OTMxNTNCREQxNDE5NTlGNDAwRkNGNUJFIC8qIGRlbGV0ZUJ1dHRvbi5wbmcgKi8sCkBAIC0xNDg2
MCw2ICsxNDg4Nyw3IEBACiAJCQkJMUNERDQ1RTYwQkE5Qzg0NjAwRjkwMTQ3IC8qIEJhc2UueGNj
b25maWcgKi8sCiAJCQkJMUNERDQ1RTQwQkE5Qzg0NjAwRjkwMTQ3IC8qIERlYnVnUmVsZWFzZS54
Y2NvbmZpZyAqLywKIAkJCQk0NDkwOThCMTBGOEY4MjUyMDA3NkEzMjcgLyogRmVhdHVyZURlZmlu
ZXMueGNjb25maWcgKi8sCisJCQkJRkVFN0Q2NjEwRDk5QUQxNjAwNTM1MUY2IC8qIGlPUy54Y2Nv
bmZpZyAqLywKIAkJCQkxQzkwNERGOTBCQTlEMkM4MDA4MUU5RDAgLyogVmVyc2lvbi54Y2NvbmZp
ZyAqLywKIAkJCQkxQ0RENDVFNTBCQTlDODQ2MDBGOTAxNDcgLyogV2ViQ29yZS54Y2NvbmZpZyAq
LywKIAkJCQlFMUJBNjZGMjE3NDJCRENDMDBDMjAyNTEgLyogV2ViQ29yZVRlc3RTaGltLnhjY29u
ZmlnICovLApAQCAtMTUyMjEsNiArMTUyNDksOCBAQAogCQk0NDMyOTJDMTBFQkE2RDczMDBFNjIw
MTYgLyogaW9zICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJ
CQlEMEJENEY1QTE0MDg4NTBGMDA2ODM5QjYgLyogRGljdGF0aW9uQ29tbWFuZElPUy5jcHAgKi8s
CisJCQkJRDBCRDRGNUIxNDA4ODUwRjAwNjgzOUI2IC8qIERpY3RhdGlvbkNvbW1hbmRJT1MuaCAq
LywKIAkJCQlGRUQxM0QzOTBDRUE5MzQ2MDBEODk0NjYgLyogRWRpdG9ySU9TLm1tICovLAogCQkJ
KTsKIAkJCXBhdGggPSBpb3M7CkBAIC0xNTk0MSw2ICsxNTk3MSwxNyBAQAogCQkJcGF0aCA9IG1h
YzsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CiAJCX07CisJCTY1OTk4QTY1MEU1RjVGRDMw
MDRFMDk3QSAvKiBpbWFnZXMgKi8gPSB7CisJCQlpc2EgPSBQQlhHcm91cDsKKwkJCWNoaWxkcmVu
ID0gKAorCQkJCUQwMkI2NEIwMTQwODlFNTYwMDZFRkEyMSAvKiBEaWN0YXRpb25QaHJhc2VXaXRo
QWx0ZXJuYXRpdmVzRG90LnBuZyAqLywKKwkJCQlEMDJCNjRCMTE0MDg5RTU2MDA2RUZBMjEgLyog
RGljdGF0aW9uUGhyYXNlV2l0aEFsdGVybmF0aXZlc0RvdEAyeC5wbmcgKi8sCisJCQkJQkU4Qzc1
MzAxMDY4MTMyNDAwMUU5M0Y1IC8qIFNwZWxsaW5nRG90LnBuZyAqLywKKwkJCQkwMUU2QzJFMzEx
OTRCMjgyMDA1MDgyMUMgLyogU3BlbGxpbmdEb3RAMngucG5nICovLAorCQkJKTsKKwkJCW5hbWUg
PSBpbWFnZXM7CisJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOworCQl9OwogCQk2NUJGMDIxODA5
NzQ4MDYzMDBDNDMxOTYgLyogcGFnZSAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hp
bGRyZW4gPSAoCkBAIC0xNzM2NCw2ICsxNzQwNSw3IEBACiAJCTk3MTE0NUZFMTRFRjAwNkUwMDY3
NEZEOSAvKiBNb2R1bGVzICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9
ICgKKwkJCQlDRTI2MTY5RDE4N0U2NTU0MDA3OTU1RjMgLyogYWlycGxheSAqLywKIAkJCQkwNzJB
RTFERTE4M0MwNTEzMDAwQTU5ODggLyogcGx1Z2lucyAqLywKIAkJCQlDREE5OERCRDE2MDE0RTA4
MDBGRUEzQjEgLyogZW5jcnlwdGVkbWVkaWEgKi8sCiAJCQkJOTcxMTQ1RkYxNEVGMDA3OTAwNjc0
RkQ5IC8qIGdlb2xvY2F0aW9uICovLApAQCAtMjAwOTksNiArMjAxNDEsOCBAQAogCQkJCTg1MzhG
MDg0MEFENzJDQjYwMDZBODFEMSAvKiBET01SYW5nZXMuaCAqLywKIAkJCQlCQzFBMzdBNzA5N0M3
MTVGMDAxOUYzRDggLyogRE9NU3R5bGVzaGVldHMuaCAqLywKIAkJCQlCQzFBMzdBODA5N0M3MTVG
MDAxOUYzRDggLyogRE9NVHJhdmVyc2FsLmggKi8sCisJCQkJRkVEMTNEMjYwQ0VBOTFERjAwRDg5
NDY2IC8qIERPTVVJS2l0RXh0ZW5zaW9ucy5oICovLAorCQkJCUZFRDEzRDI3MENFQTkxREYwMEQ4
OTQ2NiAvKiBET01VSUtpdEV4dGVuc2lvbnMubW0gKi8sCiAJCQkJQkMxQTM3QTkwOTdDNzE1RjAw
MTlGM0Q4IC8qIERPTVV0aWxpdHkubW0gKi8sCiAJCQkJQkMxQTM3QUEwOTdDNzE1RjAwMTlGM0Q4
IC8qIERPTVZpZXdzLmggKi8sCiAJCQkJMUExRDEzN0UwQTUzMjU1MjAwNjRCRjVGIC8qIERPTVhQ
YXRoLmggKi8sCkBAIC0yMDUxNSw2ICsyMDU1OSw3IEBACiAJCUJDQ0U1OEI0MTA2MUU5MjUwMDhG
QjM1QSAvKiBDb25zdHJ1Y3RvcnMgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxk
cmVuID0gKAorCQkJCUNFMjYxNjk0MTg3RTY0NjkwMDc5NTVGMyAvKiBpb3MgKi8sCiAJCQkJQkM2
QzQ5RjEwRDdEQkEwNTAwRkZBNTU4IC8qIEpTSW1hZ2VDb25zdHJ1Y3Rvci5jcHAgKi8sCiAJCQkJ
QkM2QzQ5RjIwRDdEQkEwNTAwRkZBNTU4IC8qIEpTSW1hZ2VDb25zdHJ1Y3Rvci5oICovLAogCQkJ
KTsKQEAgLTIwODI1LDYgKzIwODcwLDMyIEBACiAJCQlwYXRoID0gbWVkaWFzb3VyY2U7CiAJCQlz
b3VyY2VUcmVlID0gIjxncm91cD4iOwogCQl9OworCQlDRTI2MTY5NDE4N0U2NDY5MDA3OTU1RjMg
LyogaW9zICovID0geworCQkJaXNhID0gUEJYR3JvdXA7CisJCQljaGlsZHJlbiA9ICgKKwkJCQlB
MURFNzEzMDE4NjEzMjIyMDA3MzQxOTIgLyogVG91Y2hDb25zdHJ1Y3RvcnMuY3BwICovLAorCQkJ
KTsKKwkJCXBhdGggPSBpb3M7CisJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOworCQl9OworCQlD
RTI2MTY5RDE4N0U2NTU0MDA3OTU1RjMgLyogYWlycGxheSAqLyA9IHsKKwkJCWlzYSA9IFBCWEdy
b3VwOworCQkJY2hpbGRyZW4gPSAoCisJCQkJQTVERUJEOUYxNkZCOTA4NzAwODM2RkUwIC8qIFdl
YktpdFBsYXliYWNrVGFyZ2V0QXZhaWxhYmlsaXR5RXZlbnQuY3BwICovLAorCQkJCUE1REVCREEw
MTZGQjkwODcwMDgzNkZFMCAvKiBXZWJLaXRQbGF5YmFja1RhcmdldEF2YWlsYWJpbGl0eUV2ZW50
LmggKi8sCisJCQkJQTVERUJEQTExNkZCOTA4NzAwODM2RkUwIC8qIFdlYktpdFBsYXliYWNrVGFy
Z2V0QXZhaWxhYmlsaXR5RXZlbnQuaWRsICovLAorCQkJKTsKKwkJCXBhdGggPSBhaXJwbGF5Owor
CQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKKwkJfTsKKwkJQ0UyNjE2QTQxODdFNjVDMTAwNzk1
NUYzIC8qIGlvcyAqLyA9IHsKKwkJCWlzYSA9IFBCWEdyb3VwOworCQkJY2hpbGRyZW4gPSAoCisJ
CQkJQTFERTcxMkIxODYxMkFDMTAwNzM0MTkyIC8qIFRvdWNoRXZlbnRzLmNwcCAqLywKKwkJCSk7
CisJCQlwYXRoID0gaW9zOworCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKKwkJfTsKIAkJQ0U3
OUQ2ODYxN0YyMjBFRDAwODE1QzAwIC8qIGlvcyAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwog
CQkJY2hpbGRyZW4gPSAoCkBAIC0yMTY5NCw2ICsyMTc2NSw3IEBACiAJCUY1MjNEMzI0MDJERTQ0
NzgwMTg2MzVDQSAvKiBkb20gKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVu
ID0gKAorCQkJCUNFMjYxNkE0MTg3RTY1QzEwMDc5NTVGMyAvKiBpb3MgKi8sCiAJCQkJRTFDNERF
NkQwRUE3NUM2NTAwMjNDQ0Q2IC8qIEFjdGl2ZURPTU9iamVjdC5jcHAgKi8sCiAJCQkJRTFDNERF
NjgwRUE3NUMxRTAwMjNDQ0Q2IC8qIEFjdGl2ZURPTU9iamVjdC5oICovLAogCQkJCUE4QzRBN0ZD
MDlENTYzMjcwMDAzQUM4RCAvKiBBdHRyLmNwcCAqLywKQEAgLTIzMjQ5LDYgKzIzMzIxLDcgQEAK
IAkJCQk4NTZDOEFFNDBBOTEyNjQ5MDA1QzY4N0IgLyogRE9NT2JqZWN0LmggaW4gSGVhZGVycyAq
LywKIAkJCQkwNzA1ODUxMzE3RkE3MTA3MDA1RjJCQ0IgLyogSlNNZWRpYVN0cmVhbUNhcGFiaWxp
dGllcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkM1M0RBNjAxMTQzMTQxQTAwMEQ4MTdFIC8qIERP
TU9iamVjdEhhc2hUYWJsZU1hcC5oIGluIEhlYWRlcnMgKi8sCisJCQkJRkVEMTNEMkEwQ0VBOTFE
RjAwRDg5NDY2IC8qIERPTVVJS2l0RXh0ZW5zaW9ucy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODVD
N0Y1RDAwQUFGQjhEOTAwNDAxNEREIC8qIERPTU92ZXJmbG93RXZlbnQuaCBpbiBIZWFkZXJzICov
LAogCQkJCTg1OTg5RENGMEFDQzhCQkQwMEEwQkM1MSAvKiBET01PdmVyZmxvd0V2ZW50SW50ZXJu
YWwuaCBpbiBIZWFkZXJzICovLAogCQkJCUUxMjg0QkQ2MTA0NEEwMUUwMEVBRUI1MiAvKiBET01Q
YWdlVHJhbnNpdGlvbkV2ZW50LmggaW4gSGVhZGVycyAqLywKQEAgLTI0OTE2LDYgKzI0OTg5LDcg
QEAKIAkJCQlGNTVCM0REMDEyNTFGMTJEMDAzRUYyNjkgLyogUmVzZXRJbnB1dFR5cGUuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTUxNEJDODQzMTYxQ0YwNUMwMDRENTJGNCAvKiBSZXNvdXJjZUJ1ZmZl
ci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJN0VFNjg0NkExMkQyNkUzODAwRTc5NDE1IC8qIFJlc291
cmNlRXJyb3IuaCBpbiBIZWFkZXJzICovLAorCQkJCUQwQkQ0RjVEMTQwODg1MEYwMDY4MzlCNiAv
KiBEaWN0YXRpb25Db21tYW5kSU9TLmggaW4gSGVhZGVycyAqLywKIAkJCQk5MzRGNzEzQzBENUE2
RjE5MDAwMThENjkgLyogUmVzb3VyY2VFcnJvckJhc2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTUx
NEM3Njc5MENFOTIzQTEwMDdFRjNDRCAvKiBSZXNvdXJjZUhhbmRsZS5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJMjZGQUU0Q0QxODUyRTNBNTAwNEM4QzQ2IC8qIFJlc291cmNlSGFuZGxlQ0ZVUkxDb25u
ZWN0aW9uRGVsZWdhdGUuaCBpbiBIZWFkZXJzICovLApAQCAtMjU1ODAsNiArMjU2NTQsNyBAQAog
CQkJCUY1QTE1NDI4MTI3OTUzNEQwMEQwQjBDMCAvKiBWYWxpZGF0aW9uTWVzc2FnZS5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJRjUxM0EzRUExNUZGNDg0MTAwMTUyNkRCIC8qIFZhbGlkYXRpb25NZXNz
YWdlQ2xpZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQkxNUM3NzA4RDEwMEQzQzZCMDA1QkEyNjcg
LyogVmFsaWRpdHlTdGF0ZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJQTVERUJEQTQxNkZCOTA4NzAw
ODM2RkUwIC8qIFdlYktpdFBsYXliYWNrVGFyZ2V0QXZhaWxhYmlsaXR5RXZlbnQuaCBpbiBIZWFk
ZXJzICovLAogCQkJCUZEMzE2MEFGMTJCMDI2RjcwMEMxQTM1OSAvKiBWZWN0b3JNYXRoLmggaW4g
SGVhZGVycyAqLywKIAkJCQlCQ0EyNTcxNTEyOTNDMDEwMDA3QTI2M0QgLyogVmVydGljYWxQb3Np
dGlvbkNhY2hlLmggaW4gSGVhZGVycyAqLywKIAkJCQlCRTg4RTBERjE3MTVEMkEyMDA2NThEOTgg
LyogVmlkZW9UcmFjay5oIGluIEhlYWRlcnMgKi8sCkBAIC0yNTk0MywxNSArMjYwMTgsMTkgQEAK
IAkJCWlzYSA9IFBCWFJlc291cmNlc0J1aWxkUGhhc2U7CiAJCQlidWlsZEFjdGlvbk1hc2sgPSAy
MTQ3NDgzNjQ3OwogCQkJZmlsZXMgPSAoCisJCQkJRDAyQjY0QjIxNDA4OUU1NjAwNkVGQTIxIC8q
IERpY3RhdGlvblBocmFzZVdpdGhBbHRlcm5hdGl2ZXNEb3QucG5nIGluIFJlc291cmNlcyAqLywK
IAkJCQk0NkY5RDVERDBCMEQ2MDE3MDAyOEVFMzYgLyogYWxpYXNDdXJzb3IucG5nIGluIFJlc291
cmNlcyAqLywKKwkJCQlEMDJCNjRCMzE0MDg5RTU2MDA2RUZBMjEgLyogRGljdGF0aW9uUGhyYXNl
V2l0aEFsdGVybmF0aXZlc0RvdEAyeC5wbmcgaW4gUmVzb3VyY2VzICovLAogCQkJCTQ2RDRGMjQ5
MEFGOTdFODEwMDM1Mzg1QSAvKiBjZWxsQ3Vyc29yLnBuZyBpbiBSZXNvdXJjZXMgKi8sCiAJCQkJ
OTMxNTNCREUxNDE5NTlGNDAwRkNGNUJFIC8qIGRlbGV0ZUJ1dHRvbi5wbmcgaW4gUmVzb3VyY2Vz
ICovLAorCQkJCUJFOEM3NTMxMTA2ODEzMjQwMDFFOTNGNSAvKiBTcGVsbGluZ0RvdC5wbmcgaW4g
UmVzb3VyY2VzICovLAogCQkJCTkzMTUzQkNEMTQxN0ZCQkYwMEZDRjVCRSAvKiBkZWxldGVCdXR0
b25AMngucG5nIGluIFJlc291cmNlcyAqLywKIAkJCQk5MzE1M0JFMDE0MTk1QTI4MDBGQ0Y1QkUg
LyogZGVsZXRlQnV0dG9uUHJlc3NlZC5wbmcgaW4gUmVzb3VyY2VzICovLAogCQkJCTkzMTUzQkNG
MTQxN0ZCREIwMEZDRjVCRSAvKiBkZWxldGVCdXR0b25QcmVzc2VkQDJ4LnBuZyBpbiBSZXNvdXJj
ZXMgKi8sCiAJCQkJODUxMzZDOTkwQUVENjY1OTAwRjkwQTNEIC8qIGVhc3RSZXNpemVDdXJzb3Iu
cG5nIGluIFJlc291cmNlcyAqLywKIAkJCQk4NTEzNkM5QTBBRUQ2NjU5MDBGOTBBM0QgLyogZWFz
dFdlc3RSZXNpemVDdXJzb3IucG5nIGluIFJlc291cmNlcyAqLywKIAkJCQk4NTEzNkM5QjBBRUQ2
NjU5MDBGOTBBM0QgLyogaGVscEN1cnNvci5wbmcgaW4gUmVzb3VyY2VzICovLAorCQkJCTAxRTZD
MkU0MTE5NEIyODIwMDUwODIxQyAvKiBTcGVsbGluZ0RvdEAyeC5wbmcgaW4gUmVzb3VyY2VzICov
LAogCQkJCTdDQzdFM0Q3MTcyMDhDMEYwMDNDNTI3NyAvKiBJRE5TY3JpcHRXaGl0ZUxpc3QudHh0
IGluIFJlc291cmNlcyAqLywKIAkJCQk5MzE1M0JFNDE0MTk1QjJBMDBGQ0Y1QkUgLyogaW5wdXRT
cGVlY2gucG5nIGluIFJlc291cmNlcyAqLywKIAkJCQkyRDlGMEUxMzE0RkYxQ0JGMDBCQTBGRjcg
LyogbGluZWFyU1JHQi5pY2MgaW4gUmVzb3VyY2VzICovLApAQCAtMjYzNzQsNiArMjY0NTMsNyBA
QAogCQkJCUJDNjRCNEQ3MENCNDI5OEEwMDVGMkI2MiAvKiBDU1NGb250RmFjZVNvdXJjZS5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQlCQzY0QjREOTBDQjQyOThBMDA1RjJCNjIgLyogQ1NTRm9udEZh
Y2VTcmNWYWx1ZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk0QTZFOUZDMzEzQzE3RDFEMDA0NkE3
RjggLyogQ1NTRm9udEZlYXR1cmVWYWx1ZS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlBNURFQkRB
MzE2RkI5MDg3MDA4MzZGRTAgLyogV2ViS2l0UGxheWJhY2tUYXJnZXRBdmFpbGFiaWxpdHlFdmVu
dC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCQzY0QjREQjBDQjQyOThBMDA1RjJCNjIgLyogQ1NT
Rm9udFNlbGVjdG9yLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE4MEU2Q0YxMEExOTg5Q0EwMDdG
QjhDNSAvKiBDU1NGb250VmFsdWUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQkMwMkE2NDYwRTA5
QUFFOTAwNEI2RDJCIC8qIENTU0Z1bmN0aW9uVmFsdWUuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC0y
NzA3Myw2ICsyNzE1Myw3IEBACiAJCQkJOTcyMDVBQjUxMjM5MjkxMDAwQjE3MzgwIC8qIEltYWdl
RG9jdW1lbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRjU1QjNEQzExMjUxRjEyRDAwM0VGMjY5
IC8qIEltYWdlSW5wdXRUeXBlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTUxRDcxOUU2MTgxMTA2
RTAwMDE2REM1MSAvKiBJREJPcGVuREJSZXF1ZXN0LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUZF
RDEzRDJCMENFQTkxREYwMEQ4OTQ2NiAvKiBET01VSUtpdEV4dGVuc2lvbnMubW0gaW4gU291cmNl
cyAqLywKIAkJCQkwODk1ODI1NTBFODU3QTdFMDBGODJDODMgLyogSW1hZ2VMb2FkZXIuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJQjI3NTM1N0IwQjA1MzgxNDAwMkNFNjRGIC8qIEltYWdlTWFjLm1t
IGluIFNvdXJjZXMgKi8sCiAJCQkJMkQ1QTU5MkYxNTI1MjUyMzAwMzZFRTUxIC8qIEltYWdlT3Jp
ZW50YXRpb24uY3BwIGluIFNvdXJjZXMgKi8sCkBAIC0yNzI1OCw2ICsyNzMzOSw3IEBACiAJCQkJ
MUE0OTRFREUwQTEyM0Y0QzAwRkRBRkMxIC8qIEpTRG9jdW1lbnRGcmFnbWVudC5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQk2NURGMzFGNTA5RDFDQzYwMDAwQkUzMjUgLyogSlNEb2N1bWVudFR5cGUu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMUFDMjI2MEMwREI2OUYxOTAwODlCNjY5IC8qIEpTRE9N
QXBwbGljYXRpb25DYWNoZS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlBMURFNzEyRDE4NjEyQUMx
MDA3MzQxOTIgLyogVG91Y2hFdmVudHMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJOTNCNzBENjMw
OUVCMEM3QzAwOUQ4NDY4IC8qIEpTRE9NQmluZGluZy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlC
QzYwRDdDMDBEMjlBNDYzMDBCOTkxOEYgLyogSlNET01Db3JlRXhjZXB0aW9uLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTQwRUNBRTgxMTZCOEI2OEEwMEMzNjEwMyAvKiBKU0RPTUVycm9yLmNwcCBp
biBTb3VyY2VzICovLApAQCAtMjc0MjEsNiArMjc1MDMsNyBAQAogCQkJCUJDMDZFRDA2MEJGRDVC
QUUwMDg1NkU5RCAvKiBKU0hUTUxUYWJsZVNlY3Rpb25FbGVtZW50LmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCUQ2NDg5RDI1MTY2RkZDRjEwMDdDMDMxQiAvKiBKU0hUTUxUZW1wbGF0ZUVsZW1lbnQu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRDZGNzk2MEQxNjZGRkVDRTAwNzZERDE4IC8qIEpTSFRN
TFRlbXBsYXRlRWxlbWVudEN1c3RvbS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlBMURFNzEzMjE4
NjEzMjIyMDA3MzQxOTIgLyogVG91Y2hDb25zdHJ1Y3RvcnMuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJQTgwRTdFOUUwQTFBODNFMzAwN0ZCOEM1IC8qIEpTSFRNTFRleHRBcmVhRWxlbWVudC5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQlBODBFN0IxMzBBMTlENjA2MDA3RkI4QzUgLyogSlNIVE1MVGl0
bGVFbGVtZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTA3MDc1NkQzMTQyMzlBNEUwMDQxNDE2
MSAvKiBKU0hUTUxUcmFja0VsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC0yODkzNCw2ICsy
OTAxNyw3IEBACiAJCQkJMUFCN0ZDNzgwQThCOTJFQzAwRDlEMzdCIC8qIFhQYXRoUGFyc2VyLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCTQ0NzY1MzFCMTMzMTcwOTkwMDA2Qjc4OSAvKiBTU0xLZXlH
ZW5lcmF0b3JJT1MuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMUFCN0ZDN0EwQThCOTJFQzAwRDlE
MzdCIC8qIFhQYXRoUGF0aC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlEMEJENEY1QzE0MDg4NTBG
MDA2ODM5QjYgLyogRGljdGF0aW9uQ29tbWFuZElPUy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkx
QUI3RkM3QzBBOEI5MkVDMDBEOUQzN0IgLyogWFBhdGhQcmVkaWNhdGUuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJMUFCN0ZDN0UwQThCOTJFQzAwRDlEMzdCIC8qIFhQYXRoUmVzdWx0LmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCTFBQjdGQzgxMEE4QjkyRUMwMEQ5RDM3QiAvKiBYUGF0aFN0ZXAuY3Bw
IGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9H
Q0NvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvR0NDb250cm9sbGVy
LmNwcAppbmRleCBhYWJmYjAxOWJiMzFmMTkyNjJkMjJmOWNlMWRhYzVlMTU3ODBhNWYwLi5mOTEw
ZGI2YTY4OTY5YTgwMzg0ZmZlNGYyZGVhMTcyOGMxZGExOTQzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9HQ0NvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0dDQ29udHJvbGxlci5jcHAKQEAgLTgxLDYgKzgxLDEyIEBAIHZvaWQgR0ND
b250cm9sbGVyOjpnY1RpbWVyRmlyZWQoVGltZXI8R0NDb250cm9sbGVyPiopCiB2b2lkIEdDQ29u
dHJvbGxlcjo6Z2FyYmFnZUNvbGxlY3ROb3coKQogewogICAgIEpTTG9ja0hvbGRlciBsb2NrKEpT
RE9NV2luZG93Ojpjb21tb25WTSgpKTsKKyNpZiBQTEFURk9STShJT1MpCisgICAgLy8gSWYgSmF2
YVNjcmlwdCB3YXMgbmV2ZXIgcnVuIGluIHRoaXMgcHJvY2VzcywgdGhlcmUncyBubyBuZWVkIHRv
IGNhbGwgR0Mgd2hpY2ggd2lsbAorICAgIC8vIGVuZCB1cCBjcmVhdGluZyBhIFZNIHVubmVjZXNz
YXJpbHkuCisgICAgaWYgKCFKU0RPTVdpbmRvdzo6Y29tbW9uVk1FeGlzdHMoKSkKKyAgICAgICAg
cmV0dXJuOworI2VuZGlmCiAgICAgaWYgKCFKU0RPTVdpbmRvdzo6Y29tbW9uVk0oKS0+aGVhcC5p
c0J1c3koKSkKICAgICAgICAgSlNET01XaW5kb3c6OmNvbW1vblZNKCktPmhlYXAuY29sbGVjdEFs
bEdhcmJhZ2UoKTsKIH0KQEAgLTk3LDYgKzEwMywyNiBAQCB2b2lkIEdDQ29udHJvbGxlcjo6Z2Fy
YmFnZUNvbGxlY3RPbkFsdGVybmF0ZVRocmVhZEZvckRlYnVnZ2luZyhib29sIHdhaXRVbnRpbERv
bgogICAgIGRldGFjaFRocmVhZCh0aHJlYWRJRCk7CiB9CiAKKyNpZiBQTEFURk9STShJT1MpCit2
b2lkIEdDQ29udHJvbGxlcjo6cmVsZWFzZUV4ZWN1dGFibGVNZW1vcnkoKQoreworICAgIEpTTG9j
a0hvbGRlciBsb2NrKEpTRE9NV2luZG93Ojpjb21tb25WTSgpKTsKKworICAgIGlmICghSlNET01X
aW5kb3c6OmNvbW1vblZNRXhpc3RzKCkpCisgICAgICAgIHJldHVybjsKKworICAgIC8vIFdlIHNo
b3VsZG4ndCBoYXZlIGFueSBqYXZhc2NyaXB0IHJ1bm5pbmcgb24gb3VyIHN0YWNrIHdoZW4gdGhp
cyBmdW5jdGlvbiBpcyBjYWxsZWQuIFRoZQorICAgIC8vIGZvbGxvd2luZyBsaW5lIGFzc2VydHMg
dGhhdC4KKyAgICBBU1NFUlQoIUpTRE9NV2luZG93Ojpjb21tb25WTSgpLT5keW5hbWljR2xvYmFs
T2JqZWN0KTsKKworICAgIC8vIEJ1dCBiZSBzYWZlIGluIHJlbGVhc2UgYnVpbGRzIGp1c3QgaW4g
Y2FzZS4uLgorICAgIGlmIChKU0RPTVdpbmRvdzo6Y29tbW9uVk0oKS0+ZHluYW1pY0dsb2JhbE9i
amVjdCkKKyAgICAgICAgcmV0dXJuOworCisgICAgSlNET01XaW5kb3c6OmNvbW1vblZNKCktPnJl
bGVhc2VFeGVjdXRhYmxlTWVtb3J5KCk7Cit9CisjZW5kaWYKKwogdm9pZCBHQ0NvbnRyb2xsZXI6
OnNldEphdmFTY3JpcHRHYXJiYWdlQ29sbGVjdG9yVGltZXJFbmFibGVkKGJvb2wgZW5hYmxlKQog
ewogICAgIEpTRE9NV2luZG93Ojpjb21tb25WTSgpLT5oZWFwLnNldEdhcmJhZ2VDb2xsZWN0aW9u
VGltZXJFbmFibGVkKGVuYWJsZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9HQ0NvbnRyb2xsZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0dDQ29udHJv
bGxlci5oCmluZGV4IDhhMjRjYjBlMDgyZTA2NGUyODVlOWFhZTFmM2M2MDkzZWI0ZTdmNWQuLmZk
MjMyYjA4MjExNmQ5MTQzYTdkNjUzODY1YjZkNWZkMmQ4NmJiMGUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0dDQ29udHJvbGxlci5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0dDQ29udHJvbGxlci5oCkBAIC00NCw2ICs0NCw5IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKICAgICAgICAgdm9pZCBnYXJiYWdlQ29sbGVjdE5vdygpOyAvLyBJdCdzIGJldHRl
ciB0byBjYWxsIGdhcmJhZ2VDb2xsZWN0U29vbiwgdW5sZXNzIHlvdSBoYXZlIGEgc3BlY2lmaWMg
cmVhc29uIG5vdCB0by4KIAogICAgICAgICB2b2lkIGdhcmJhZ2VDb2xsZWN0T25BbHRlcm5hdGVU
aHJlYWRGb3JEZWJ1Z2dpbmcoYm9vbCB3YWl0VW50aWxEb25lKTsgLy8gVXNlZCBmb3Igc3RyZXNz
IHRlc3RpbmcuCisjaWYgUExBVEZPUk0oSU9TKQorICAgICAgICB2b2lkIHJlbGVhc2VFeGVjdXRh
YmxlTWVtb3J5KCk7CisjZW5kaWYKICAgICAgICAgdm9pZCBzZXRKYXZhU2NyaXB0R2FyYmFnZUNv
bGxlY3RvclRpbWVyRW5hYmxlZChib29sKTsKICAgICAgICAgdm9pZCBkaXNjYXJkQWxsQ29tcGls
ZWRDb2RlKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ2Fs
bGJhY2tEYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0NhbGxiYWNrRGF0YS5o
CmluZGV4IGQzMjFjNTdmMDVjOWYwMjMyZjFlN2QwNGNhNDQyMWMzNzRiMDg2MjUuLmZmNzZhOWU4
NTM3MjVmMzg4NGU4N2ZjNDUyMmYyODZlMWRhYTY4ZDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTQ2FsbGJhY2tEYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNDYWxsYmFja0RhdGEuaApAQCAtNTgsNyArNTgsOSBAQCBwdWJsaWM6CiAgICAg
CiAgICAgfkpTQ2FsbGJhY2tEYXRhKCkKICAgICB7CisjaWYgIVBMQVRGT1JNKElPUykKICAgICAg
ICAgQVNTRVJUKG1fdGhyZWFkID09IGN1cnJlbnRUaHJlYWQoKSk7CisjZW5kaWYKICAgICB9CiAK
ICAgICBKU0M6OkpTT2JqZWN0KiBjYWxsYmFjaygpIHsgcmV0dXJuIG1fY2FsbGJhY2suZ2V0KCk7
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93QmFz
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0Jhc2UuY3BwCmlu
ZGV4IDUwMDRhMTk2NmQ0N2JiNTljOGVmMDdhNWVmOTFjOGU2OWEyMWIyNzguLjJiOGRkNDNjZjUx
YWZmZWZkMzRjYTAxZGRiNTJiMTFlNDFmMzU1MGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTRE9NV2luZG93QmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNET01XaW5kb3dCYXNlLmNwcApAQCAtNDAsNiArNDAsMTIgQEAKICNpbmNsdWRl
IDxydW50aW1lL01pY3JvdGFzay5oPgogI2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+CiAKKyNp
ZiBQTEFURk9STShJT1MpCisjaW5jbHVkZSAiQ2hyb21lQ2xpZW50LmgiCisjaW5jbHVkZSAiV2Vi
U2FmZUdDQWN0aXZpdHlDYWxsYmFja0lPUy5oIgorI2luY2x1ZGUgIldlYlNhZmVJbmNyZW1lbnRh
bFN3ZWVwZXJJT1MuaCIKKyNlbmRpZgorCiB1c2luZyBuYW1lc3BhY2UgSlNDOwogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CkBAIC0xMTAsNyArMTE2LDExIEBAIGJvb2wgSlNET01XaW5kb3dCYXNlOjpz
dXBwb3J0c1Byb2ZpbGluZyhjb25zdCBKU0dsb2JhbE9iamVjdCogb2JqZWN0KQogICAgIGlmICgh
cGFnZSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCisjaWYgRU5BQkxFKElOU1BFQ1RPUikKICAg
ICByZXR1cm4gcGFnZS0+aW5zcGVjdG9yQ29udHJvbGxlcigpLT5wcm9maWxlckVuYWJsZWQoKTsK
KyNlbHNlCisgICAgcmV0dXJuIGZhbHNlOworI2VuZGlmIC8vIEVOQUJMRShJTlNQRUNUT1IpCiAj
ZW5kaWYKIH0KIApAQCAtMTY2LDcgKzE3Niw3IEBAIGJvb2wgSlNET01XaW5kb3dCYXNlOjpzaG91
bGRJbnRlcnJ1cHRTY3JpcHRCZWZvcmVUaW1lb3V0KGNvbnN0IEpTR2xvYmFsT2JqZWN0KiBvCiAg
ICAgICAgIHJldHVybiB0cnVlOwogCiAjaWYgUExBVEZPUk0oSU9TKQotICAgIGlmIChwYWdlLT5j
aHJvbWUoKS5jbGllbnQoKS0+aXNTdG9wcGluZygpKQorICAgIGlmIChwYWdlLT5jaHJvbWUoKS5j
bGllbnQoKS5pc1N0b3BwaW5nKCkpCiAgICAgICAgIHJldHVybiB0cnVlOwogI2VuZGlmCiAKQEAg
LTIwMiwxNyArMjEyLDQ0IEBAIFZNKiBKU0RPTVdpbmRvd0Jhc2U6OmNvbW1vblZNKCkKIHsKICAg
ICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogCisjaWYgIVBMQVRGT1JNKElPUykKICAgICBzdGF0
aWMgVk0qIHZtID0gMDsKKyNlbHNlCisgICAgVk0qJiB2bSA9IGNvbW1vblZNSW50ZXJuYWwoKTsK
KyNlbmRpZgogICAgIGlmICghdm0pIHsKICAgICAgICAgU2NyaXB0Q29udHJvbGxlcjo6aW5pdGlh
bGl6ZVRocmVhZGluZygpOwogICAgICAgICB2bSA9IFZNOjpjcmVhdGVMZWFrZWQoTGFyZ2VIZWFw
KS5sZWFrUmVmKCk7CisjaWYgUExBVEZPUk0oSU9TKQorICAgICAgICBQYXNzT3duUHRyPFdlYlNh
ZmVHQ0FjdGl2aXR5Q2FsbGJhY2s+IGFjdGl2aXR5Q2FsbGJhY2sgPSBXZWJTYWZlR0NBY3Rpdml0
eUNhbGxiYWNrOjpjcmVhdGUoJnZtLT5oZWFwKTsKKyAgICAgICAgdm0tPmhlYXAuc2V0QWN0aXZp
dHlDYWxsYmFjayhhY3Rpdml0eUNhbGxiYWNrKTsKKyAgICAgICAgUGFzc093blB0cjxXZWJTYWZl
SW5jcmVtZW50YWxTd2VlcGVyPiBpbmNyZW1lbnRhbFN3ZWVwZXIgPSBXZWJTYWZlSW5jcmVtZW50
YWxTd2VlcGVyOjpjcmVhdGUoJnZtLT5oZWFwKTsKKyAgICAgICAgdm0tPmhlYXAuc2V0SW5jcmVt
ZW50YWxTd2VlcGVyKGluY3JlbWVudGFsU3dlZXBlcik7CisgICAgICAgIHZtLT5tYWtlVXNhYmxl
RnJvbU11bHRpcGxlVGhyZWFkcygpOworICAgICAgICB2bS0+aGVhcC5tYWNoaW5lVGhyZWFkcygp
LmFkZEN1cnJlbnRUaHJlYWQoKTsKKyNlbHNlCiAgICAgICAgIHZtLT5leGNsdXNpdmVUaHJlYWQg
PSBjdXJyZW50VGhyZWFkKCk7CisjZW5kaWYgLy8gIVBMQVRGT1JNKElPUykKICAgICAgICAgaW5p
dE5vcm1hbFdvcmxkQ2xpZW50RGF0YSh2bSk7CiAgICAgfQogCiAgICAgcmV0dXJuIHZtOwogfQog
CisjaWYgUExBVEZPUk0oSU9TKQorYm9vbCBKU0RPTVdpbmRvd0Jhc2U6OmNvbW1vblZNRXhpc3Rz
KCkKK3sKKyAgICByZXR1cm4gY29tbW9uVk1JbnRlcm5hbCgpOworfQorCitWTSomIEpTRE9NV2lu
ZG93QmFzZTo6Y29tbW9uVk1JbnRlcm5hbCgpCit7CisgICAgQVNTRVJUKGlzTWFpblRocmVhZCgp
KTsKKyAgICBzdGF0aWMgVk0qIGNvbW1vblZNOworICAgIHJldHVybiBjb21tb25WTTsKK30KKyNl
bmRpZgorCiAvLyBKU0RPTUdsb2JhbE9iamVjdCogaXMgaWdub3JlZCwgYWNjZXNzaW5nIGEgd2lu
ZG93IGluIGFueSBjb250ZXh0IHdpbGwKIC8vIHVzZSB0aGF0IERPTVdpbmRvdydzIHByb3RvdHlw
ZSBjaGFpbi4KIEpTVmFsdWUgdG9KUyhFeGVjU3RhdGUqIGV4ZWMsIEpTRE9NR2xvYmFsT2JqZWN0
KiwgRE9NV2luZG93KiBkb21XaW5kb3cpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU0RPTVdpbmRvd0N1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0RPTVdpbmRvd0N1c3RvbS5jcHAKaW5kZXggMzFhM2JkMmMxOGM0YjM2ZWE3ZTZmMmZhNzYy
YTA0YTU1ZTYyMDM5NC4uNDgxOTM4ZGU0ODE1YzY4M2JlNThhOGI1N2FhMGI4NmUwMWNlYjIwMiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dDdXN0b20u
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93Q3VzdG9tLmNw
cApAQCAtNDEsNiArNDEsMTEgQEAKICNpbmNsdWRlICJKU1NoYXJlZFdvcmtlci5oIgogI2VuZGlm
CiAKKyNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQorI2luY2x1ZGUgIkpTVG91Y2hDb25zdHJ1Y3Rv
ci5oIgorI2luY2x1ZGUgIkpTVG91Y2hMaXN0Q29uc3RydWN0b3IuaCIKKyNlbmRpZgorCiAjaWYg
RU5BQkxFKFdFQl9BVURJTykKICNpbmNsdWRlICJKU0F1ZGlvQ29udGV4dC5oIgogI2VuZGlmCkBA
IC00NTIsNiArNDU3LDE4IEBAIEpTVmFsdWUgSlNET01XaW5kb3c6OmltYWdlKEV4ZWNTdGF0ZSog
ZXhlYykgY29uc3QKICAgICByZXR1cm4gZ2V0RE9NQ29uc3RydWN0b3I8SlNJbWFnZUNvbnN0cnVj
dG9yPihleGVjLT52bSgpLCB0aGlzKTsKIH0KIAorI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMpCitK
U1ZhbHVlIEpTRE9NV2luZG93Ojp0b3VjaChFeGVjU3RhdGUqIGV4ZWMpIGNvbnN0Cit7CisgICAg
cmV0dXJuIGdldERPTUNvbnN0cnVjdG9yPEpTVG91Y2hDb25zdHJ1Y3Rvcj4oZXhlYy0+dm0oKSwg
dGhpcyk7Cit9CisKK0pTVmFsdWUgSlNET01XaW5kb3c6OnRvdWNoTGlzdChFeGVjU3RhdGUqIGV4
ZWMpIGNvbnN0Cit7CisgICAgcmV0dXJuIGdldERPTUNvbnN0cnVjdG9yPEpTVG91Y2hMaXN0Q29u
c3RydWN0b3I+KGV4ZWMtPnZtKCksIHRoaXMpOworfQorI2VuZGlmCisKIC8vIEN1c3RvbSBmdW5j
dGlvbnMKIAogSlNWYWx1ZSBKU0RPTVdpbmRvdzo6b3BlbihFeGVjU3RhdGUqIGV4ZWMpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RldmljZU9yaWVudGF0aW9uRXZl
bnRDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNEZXZpY2VPcmllbnRh
dGlvbkV2ZW50Q3VzdG9tLmNwcAppbmRleCA2NWVjY2IzYjk0NTM0YzY4MDYxZDBmZTRkMDNjYjVk
OWMwOTNhYmMwLi44NmRkYzk2YWE3YWQzNzNiYTQ5NWFmYzhiZTZhNWJjMDMyNTVjNzQ0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RldmljZU9yaWVudGF0aW9uRXZl
bnRDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRGV2aWNlT3Jp
ZW50YXRpb25FdmVudEN1c3RvbS5jcHAKQEAgLTYwLDYgKzYwLDI1IEBAIEpTVmFsdWUgSlNEZXZp
Y2VPcmllbnRhdGlvbkV2ZW50OjpnYW1tYShFeGVjU3RhdGUqKSBjb25zdAogICAgIHJldHVybiBq
c051bWJlcihpbXAub3JpZW50YXRpb24oKS0+Z2FtbWEoKSk7CiB9CiAKKyNpZiBQTEFURk9STShJ
T1MpCitKU1ZhbHVlIEpTRGV2aWNlT3JpZW50YXRpb25FdmVudDo6d2Via2l0Q29tcGFzc0hlYWRp
bmcoRXhlY1N0YXRlKikgY29uc3QKK3sKKyAgICBEZXZpY2VPcmllbnRhdGlvbkV2ZW50JiBpbXAg
PSBpbXBsKCk7CisgICAgaWYgKCFpbXAub3JpZW50YXRpb24oKS0+Y2FuUHJvdmlkZUNvbXBhc3NI
ZWFkaW5nKCkpCisgICAgICAgIHJldHVybiBqc051bGwoKTsKKyAgICByZXR1cm4ganNOdW1iZXIo
aW1wLm9yaWVudGF0aW9uKCktPmNvbXBhc3NIZWFkaW5nKCkpOworfQorCitKU1ZhbHVlIEpTRGV2
aWNlT3JpZW50YXRpb25FdmVudDo6d2Via2l0Q29tcGFzc0FjY3VyYWN5KEV4ZWNTdGF0ZSopIGNv
bnN0Cit7CisgICAgRGV2aWNlT3JpZW50YXRpb25FdmVudCYgaW1wID0gaW1wbCgpOworICAgIGlm
ICghaW1wLm9yaWVudGF0aW9uKCktPmNhblByb3ZpZGVDb21wYXNzQWNjdXJhY3koKSkKKyAgICAg
ICAgcmV0dXJuIGpzTnVsbCgpOworICAgIHJldHVybiBqc051bWJlcihpbXAub3JpZW50YXRpb24o
KS0+Y29tcGFzc0FjY3VyYWN5KCkpOworfQorI2VuZGlmCisKKyNpZiAhUExBVEZPUk0oSU9TKQog
SlNWYWx1ZSBKU0RldmljZU9yaWVudGF0aW9uRXZlbnQ6OmFic29sdXRlKEV4ZWNTdGF0ZSopIGNv
bnN0CiB7CiAgICAgRGV2aWNlT3JpZW50YXRpb25FdmVudCYgaW1wID0gaW1wbCgpOwpAQCAtNjcs
NiArODYsNyBAQCBKU1ZhbHVlIEpTRGV2aWNlT3JpZW50YXRpb25FdmVudDo6YWJzb2x1dGUoRXhl
Y1N0YXRlKikgY29uc3QKICAgICAgICAgcmV0dXJuIGpzTnVsbCgpOwogICAgIHJldHVybiBqc0Jv
b2xlYW4oaW1wLm9yaWVudGF0aW9uKCktPmFic29sdXRlKCkpOwogfQorI2VuZGlmCiAKIEpTVmFs
dWUgSlNEZXZpY2VPcmllbnRhdGlvbkV2ZW50Ojppbml0RGV2aWNlT3JpZW50YXRpb25FdmVudChF
eGVjU3RhdGUqIGV4ZWMpCiB7CkBAIC04MSw5ICsxMDEsMTcgQEAgSlNWYWx1ZSBKU0RldmljZU9y
aWVudGF0aW9uRXZlbnQ6OmluaXREZXZpY2VPcmllbnRhdGlvbkV2ZW50KEV4ZWNTdGF0ZSogZXhl
YykKICAgICBkb3VibGUgYmV0YSA9IGV4ZWMtPmFyZ3VtZW50KDQpLnRvTnVtYmVyKGV4ZWMpOwog
ICAgIGJvb2wgZ2FtbWFQcm92aWRlZCA9ICFleGVjLT5hcmd1bWVudCg1KS5pc1VuZGVmaW5lZE9y
TnVsbCgpOwogICAgIGRvdWJsZSBnYW1tYSA9IGV4ZWMtPmFyZ3VtZW50KDUpLnRvTnVtYmVyKGV4
ZWMpOworI2lmIFBMQVRGT1JNKElPUykKKyAgICBib29sIGNvbXBhc3NIZWFkaW5nUHJvdmlkZWQg
PSAhZXhlYy0+YXJndW1lbnQoNikuaXNVbmRlZmluZWRPck51bGwoKTsKKyAgICBkb3VibGUgY29t
cGFzc0hlYWRpbmcgPSBleGVjLT5hcmd1bWVudCg2KS50b051bWJlcihleGVjKTsKKyAgICBib29s
IGNvbXBhc3NBY2N1cmFjeVByb3ZpZGVkID0gIWV4ZWMtPmFyZ3VtZW50KDcpLmlzVW5kZWZpbmVk
T3JOdWxsKCk7CisgICAgZG91YmxlIGNvbXBhc3NBY2N1cmFjeSA9IGV4ZWMtPmFyZ3VtZW50KDcp
LnRvTnVtYmVyKGV4ZWMpOworICAgIFJlZlB0cjxEZXZpY2VPcmllbnRhdGlvbkRhdGE+IG9yaWVu
dGF0aW9uID0gRGV2aWNlT3JpZW50YXRpb25EYXRhOjpjcmVhdGUoYWxwaGFQcm92aWRlZCwgYWxw
aGEsIGJldGFQcm92aWRlZCwgYmV0YSwgZ2FtbWFQcm92aWRlZCwgZ2FtbWEsIGNvbXBhc3NIZWFk
aW5nUHJvdmlkZWQsIGNvbXBhc3NIZWFkaW5nLCBjb21wYXNzQWNjdXJhY3lQcm92aWRlZCwgY29t
cGFzc0FjY3VyYWN5KTsKKyNlbHNlCiAgICAgYm9vbCBhYnNvbHV0ZVByb3ZpZGVkID0gIWV4ZWMt
PmFyZ3VtZW50KDYpLmlzVW5kZWZpbmVkT3JOdWxsKCk7CiAgICAgYm9vbCBhYnNvbHV0ZSA9IGV4
ZWMtPmFyZ3VtZW50KDYpLnRvQm9vbGVhbihleGVjKTsKICAgICBSZWZQdHI8RGV2aWNlT3JpZW50
YXRpb25EYXRhPiBvcmllbnRhdGlvbiA9IERldmljZU9yaWVudGF0aW9uRGF0YTo6Y3JlYXRlKGFs
cGhhUHJvdmlkZWQsIGFscGhhLCBiZXRhUHJvdmlkZWQsIGJldGEsIGdhbW1hUHJvdmlkZWQsIGdh
bW1hLCBhYnNvbHV0ZVByb3ZpZGVkLCBhYnNvbHV0ZSk7CisjZW5kaWYKICAgICBpbXBsKCkuaW5p
dERldmljZU9yaWVudGF0aW9uRXZlbnQodHlwZSwgYnViYmxlcywgY2FuY2VsYWJsZSwgb3JpZW50
YXRpb24uZ2V0KCkpOwogICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNNYWluVGhyZWFkRXhlY1N0YXRlLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU01haW5UaHJlYWRFeGVjU3RhdGUuaAppbmRleCAyZmE2
NjI5YzQ4MmFmYTdjNzA3N2RlOGFiZjNmZDk0YzFmNjk0NDQ5Li5mMmI0MDA3ZGZhMzU4ZDA2MDY1
ZjllOTdiYTA2YzhkZjNlYmY0MmExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU01haW5UaHJlYWRFeGVjU3RhdGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU01haW5UaHJlYWRFeGVjU3RhdGUuaApAQCAtMzAsNiArMzAsMTAgQEAKICNpbmNsdWRl
IDxydW50aW1lL0NvbXBsZXRpb24uaD4KICNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgogCisj
aWYgUExBVEZPUk0oSU9TKQorI2luY2x1ZGUgIldlYkNvcmVUaHJlYWQuaCIKKyNlbmRpZgorCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tp
ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTVG91Y2hDdXN0b20u
Y3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNUb3VjaEN1c3RvbS5jcHAKaW5kZXgg
ODBlMjFmNjNiODFlOTdlMTBiYTQ5OWZmMzI1ZGRjNzhlOTM5OGM4YS4uZDk0MzRjMGYyYzBhOWM2
ZGQ0YWZkYzgyNWU0ODY0ZDRjMTA4ZTEwNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNUb3VjaEN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNUb3VjaEN1c3RvbS5jcHAKQEAgLTI1LDYgKzI1LDcgQEAKIAogI2luY2x1ZGUgImNvbmZp
Zy5oIgogCisjaWYgIVBMQVRGT1JNKElPUykKICNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQogCiAj
aW5jbHVkZSAiSlNUb3VjaC5oIgpAQCAtNDYsMyArNDcsNCBAQCBKU1ZhbHVlIHRvSlNOZXdseUNy
ZWF0ZWQoRXhlY1N0YXRlKiBleGVjLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBU
b3VjaAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5BQkxFKFRPVUNIX0VW
RU5UUykKKyNlbmRpZiAvLyAhUExBVEZPUk0oSU9TKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNUb3VjaExpc3RDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNUb3VjaExpc3RDdXN0b20uY3BwCmluZGV4IGI2MGVmZGI5NWIyZGY4YWZhMTEx
NDZkZGY3ZTVmZGU2OGFmYzIyY2QuLjExMzE4YzAwNTM5MmVjNGQ1ZWZjZTI4ZjQzZmY1ZThiODY5
ZDkzZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTVG91Y2hMaXN0
Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1RvdWNoTGlzdEN1
c3RvbS5jcHAKQEAgLTI1LDYgKzI1LDcgQEAKIAogI2luY2x1ZGUgImNvbmZpZy5oIgogCisjaWYg
IVBMQVRGT1JNKElPUykKICNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQogCiAjaW5jbHVkZSAiSlNU
b3VjaExpc3QuaCIKQEAgLTQ2LDMgKzQ3LDQgQEAgSlNWYWx1ZSB0b0pTTmV3bHlDcmVhdGVkKEV4
ZWNTdGF0ZSogZXhlYywgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgVG91Y2gKIH0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEVOQUJMRShUT1VDSF9FVkVOVFMpCisj
ZW5kaWYgLy8gIVBMQVRGT1JNKElPUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL1BhZ2VTY3JpcHREZWJ1Z1NlcnZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9QYWdlU2NyaXB0RGVidWdTZXJ2ZXIuY3BwCmluZGV4IDIxNTU3N2QyN2MxMjBmYTg2ZTJk
ZjNjNWQ0MjAxNTIwYmUxY2RhYjYuLmMzZmI3ZGRjMTA1MWJlMzVlNGQ2NmVjZmIxZmQzZjU1MTE0
MDc1YWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1BhZ2VTY3JpcHRE
ZWJ1Z1NlcnZlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvUGFnZVNjcmlw
dERlYnVnU2VydmVyLmNwcApAQCAtMTQ4LDYgKzE0OCwxMSBAQCB2b2lkIFBhZ2VTY3JpcHREZWJ1
Z1NlcnZlcjo6ZGlkQ29udGludWUoSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQog
ewogICAgIC8vIFBhZ2UgY2FuIGJlIG51bGwgaWYgd2UgYXJlIGNvbnRpbnVpbmcgYmVjYXVzZSB0
aGUgUGFnZSBjbG9zZWQuCiAgICAgUGFnZSogcGFnZSA9IHRvUGFnZShnbG9iYWxPYmplY3QpOwor
I2lmIFBMQVRGT1JNKElPUykKKyAgICAvLyBGSVhNRTogQ2FuIHRoaXMgaGFwcGVuIGluIG9wZW4g
c291cmNlIHRvbywgb3IgaXMgdGhpcyBpT1MgKG11bHRpLXRocmVhZGVkKSBvbmx5PworICAgIGlm
ICghcGFnZSkKKyAgICAgICAgcmV0dXJuOworI2VuZGlmCiAgICAgQVNTRVJUKCFwYWdlIHx8IHBh
Z2UgPT0gbV9wYXVzZWRQYWdlKTsKIAogICAgIG1fcGF1c2VkUGFnZSA9IDA7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXIuY3BwCmluZGV4IDAwN2IwMzJj
Nzc3YTQ3Zjc1YzVlOWY5YzQ5N2I5MDExOGY0MWM0ZWUuLjcxOGY4ODg0MzBhN2EzN2YzMTRlNjhh
NWM5OTEzODA0YjY3MzBmYTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L1NjcmlwdENvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1Nj
cmlwdENvbnRyb2xsZXIuY3BwCkBAIC02MSw4ICs2MSwxMCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKIHZvaWQgU2NyaXB0Q29udHJvbGxlcjo6aW5pdGlhbGl6ZVRocmVhZGluZygpCiB7CisjaWYg
IVBMQVRGT1JNKElPUykKICAgICBKU0M6OmluaXRpYWxpemVUaHJlYWRpbmcoKTsKICAgICBXVEY6
OmluaXRpYWxpemVNYWluVGhyZWFkKCk7CisjZW5kaWYKIH0KIAogU2NyaXB0Q29udHJvbGxlcjo6
U2NyaXB0Q29udHJvbGxlcihGcmFtZSYgZnJhbWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9TY3JpcHREZWJ1Z1NlcnZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9TY3JpcHREZWJ1Z1NlcnZlci5jcHAKaW5kZXggNDJhYTU5ZWNmODc2NzI5YTE3ODJj
ZTExODFmZDJhNDY3YTRkMzhjNC4uNzFjNmEzMTQyZDNlOTQ2ZWQ5Y2Y2ZWM0MWY3ZmIwYjJkNjQ2
NzU5ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0RGVidWdT
ZXJ2ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdERlYnVnU2Vy
dmVyLmNwcApAQCAtMzQsNiArMzQsNyBAQAogI2luY2x1ZGUgIlNjcmlwdERlYnVnU2VydmVyLmgi
CiAKICNpbmNsdWRlICJDb250ZW50U2VhcmNoVXRpbHMuaCIKKyNpbmNsdWRlICJFdmVudExvb3Au
aCIKICNpbmNsdWRlICJGcmFtZS5oIgogI2luY2x1ZGUgIkpTRE9NV2luZG93Q3VzdG9tLmgiCiAj
aW5jbHVkZSAiSlNKYXZhU2NyaXB0Q2FsbEZyYW1lLmgiCkBAIC00OSw2ICs1MCwxMSBAQAogI2lu
Y2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+
CiAKKyNpZiBQTEFURk9STShJT1MpCisjaW5jbHVkZSAiSlNET01XaW5kb3dCYXNlLmgiCisjaW5j
bHVkZSAiV2ViQ29yZVRocmVhZEludGVybmFsLmgiCisjZW5kaWYKKwogdXNpbmcgbmFtZXNwYWNl
IEpTQzsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtMjk1LDExICszMDEsMjcgQEAgdm9pZCBT
Y3JpcHREZWJ1Z1NlcnZlcjo6aGFuZGxlUGF1c2UoRGVidWdnZXI6OlJlYXNvbkZvclBhdXNlLCBK
U0dsb2JhbE9iamVjdCogdm0KIAogICAgIFRpbWVyQmFzZTo6ZmlyZVRpbWVyc0luTmVzdGVkRXZl
bnRMb29wKCk7CiAKKyNpZiBQTEFURk9STShJT1MpCisgICAgLy8gT24gaU9TLCBydW5uaW5nIGFu
IEV2ZW50TG9vcCBjYXVzZXMgdXMgdG8gcnVuIGEgbmVzdGVkIFdlYlJ1bkxvb3AuCisgICAgLy8g
U2luY2UgdGhlIFdlYlRocmVhZCBpcyBhdXRvcmVsZWFzZWQgYXQgdGhlIGVuZCBvZiBydW4gbG9v
cCBpdGVyYXRpb25zCisgICAgLy8gd2UgbmVlZCB0byBncmFjZWZ1bGx5IGhhbmRsZSByZWxlYXNp
bmcgYW5kIHJlYWNxdWlyaW5nIHRoZSBsb2NrLgorICAgIEFTU0VSVChXZWJUaHJlYWRJc0xvY2tl
ZE9yRGlzYWJsZWQoKSk7CisgICAgeworICAgICAgICBpZiAoV2ViVGhyZWFkSXNFbmFibGVkKCkp
CisgICAgICAgICAgICBKU0M6OkpTTG9jazo6RHJvcEFsbExvY2tzIGRyb3BBbGxMb2NrcyhXZWJD
b3JlOjpKU0RPTVdpbmRvd0Jhc2U6OmNvbW1vblZNKCksIEpTQzo6SlNMb2NrOjpEcm9wQWxsTG9j
a3M6OkFsd2F5c0Ryb3BMb2Nrcyk7CisgICAgICAgIFdlYlJ1bkxvb3BFbmFibGVOZXN0ZWQoKTsK
KyNlbmRpZgorCiAgICAgbV9ydW5uaW5nTmVzdGVkTWVzc2FnZUxvb3AgPSB0cnVlOwogICAgIG1f
ZG9uZVByb2Nlc3NpbmdEZWJ1Z2dlckV2ZW50cyA9IGZhbHNlOwogICAgIHJ1bkV2ZW50TG9vcFdo
aWxlUGF1c2VkKCk7CiAgICAgbV9ydW5uaW5nTmVzdGVkTWVzc2FnZUxvb3AgPSBmYWxzZTsKIAor
I2lmIFBMQVRGT1JNKElPUykKKyAgICAgICAgV2ViUnVuTG9vcERpc2FibGVOZXN0ZWQoKTsKKyAg
ICB9CisgICAgQVNTRVJUKFdlYlRocmVhZElzTG9ja2VkT3JEaXNhYmxlZCgpKTsKKyNlbmRpZgog
ICAgIGRpZENvbnRpbnVlKHZtRW50cnlHbG9iYWxPYmplY3QpOwogICAgIGRpc3BhdGNoRnVuY3Rp
b25Ub0xpc3RlbmVycygmU2NyaXB0RGVidWdTZXJ2ZXI6OmRpc3BhdGNoRGlkQ29udGludWUsIHZt
RW50cnlHbG9iYWxPYmplY3QpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvaW9zL1RvdWNoQ29uc3RydWN0b3JzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL2lvcy9Ub3VjaENvbnN0cnVjdG9ycy5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzY3YjE3OGYzNDBlYzFh
OGUzZmFmZDkzM2I3NzNkYWUxNjkxM2U0OAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL2lvcy9Ub3VjaENvbnN0cnVjdG9ycy5jcHAKQEAgLTAsMCArMSwzMyBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2lmIFBMQVRGT1JNKElPUykg
JiYgRU5BQkxFKFRPVUNIX0VWRU5UUykKKworI2luY2x1ZGUgPFdlYktpdEFkZGl0aW9ucy9KU1Rv
dWNoQ29uc3RydWN0b3IuY3BwPgorI2luY2x1ZGUgPFdlYktpdEFkZGl0aW9ucy9KU1RvdWNoTGlz
dENvbnN0cnVjdG9yLmNwcD4KKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9vYmpjL0RPTS5tbSBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL29iamMvRE9NLm1t
CmluZGV4IDEyODY0YjkwZTY2ODQ1ZWMzZDhmNzBhYmQ5ZWJlYmY1NzVkZTJhY2MuLjIyYmQ5ZDNh
YjVhNzg3MzRkN2FlNjlkZjQxYjFjMDM1OTZhNDEyMjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL29iamMvRE9NLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL29i
amMvRE9NLm1tCkBAIC01Myw2ICs1MywyMiBAQAogI2ltcG9ydCA8SmF2YVNjcmlwdENvcmUvQVBJ
Q2FzdC5oPgogI2ltcG9ydCA8d3RmL0hhc2hNYXAuaD4KIAorI2lmIFBMQVRGT1JNKElPUykKKyNp
bXBvcnQgIkZvY3VzQ29udHJvbGxlci5oIgorI2ltcG9ydCAiSFRNTExpbmtFbGVtZW50LmgiCisj
aW1wb3J0ICJLZXlib2FyZEV2ZW50LmgiCisjaW1wb3J0ICJVUkwuaCIKKyNpbXBvcnQgIk1lZGlh
TGlzdC5oIgorI2ltcG9ydCAiTWVkaWFRdWVyeUV2YWx1YXRvci5oIgorI2ltcG9ydCAiTm9kZVJl
bmRlclN0eWxlLmgiCisjaW1wb3J0ICJQYWdlLmgiCisjaW1wb3J0ICJSZW5kZXJWaWV3LmgiCisj
aW1wb3J0ICJUb3VjaC5oIgorI2ltcG9ydCAiV0FLQXBwS2l0U3R1YnMuaCIKKyNpbXBvcnQgIldB
S1dpbmRvdy5oIgorI2ltcG9ydCAiV2ViQ29yZVRocmVhZE1lc3NhZ2UuaCIKKyNlbmRpZgorCiB1
c2luZyBuYW1lc3BhY2UgSlNDOwogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKQEAgLTE3Niw4
ICsxOTIsODAgQEAgc3RhdGljIE5TQXJyYXkgKmtpdChjb25zdCBWZWN0b3I8SW50UmVjdD4mIHJl
Y3RzKQogICAgIHJldHVybiBhcnJheTsKIH0KIAorI2lmIFBMQVRGT1JNKElPUykKK3N0YXRpYyBX
S1F1YWQgd2tRdWFkRnJvbUZsb2F0UXVhZChjb25zdCBGbG9hdFF1YWQmIGluUXVhZCkKK3sKKyAg
ICBXS1F1YWQgIHRoZVF1YWQ7CisgICAgdGhlUXVhZC5wMSA9IGluUXVhZC5wMSgpOworICAgIHRo
ZVF1YWQucDIgPSBpblF1YWQucDIoKTsKKyAgICB0aGVRdWFkLnAzID0gaW5RdWFkLnAzKCk7Cisg
ICAgdGhlUXVhZC5wNCA9IGluUXVhZC5wNCgpOworICAgIAorICAgIHJldHVybiB0aGVRdWFkOwor
fQorCitzdGF0aWMgTlNBcnJheSAqa2l0KGNvbnN0IFZlY3RvcjxGbG9hdFF1YWQ+JiBxdWFkcykK
K3sKKyAgICBzaXplX3Qgc2l6ZSA9IHF1YWRzLnNpemUoKTsKKyAgICBOU011dGFibGVBcnJheSAq
YXJyYXkgPSBbTlNNdXRhYmxlQXJyYXkgYXJyYXlXaXRoQ2FwYWNpdHk6c2l6ZV07CisgICAgZm9y
IChzaXplX3QgaSA9IDA7IGkgPCBzaXplOyArK2kpIHsKKyAgICAgICAgV0tRdWFkT2JqZWN0KiBx
dWFkT2JqZWN0ID0gW1tXS1F1YWRPYmplY3QgYWxsb2NdIGluaXRXaXRoUXVhZDp3a1F1YWRGcm9t
RmxvYXRRdWFkKHF1YWRzW2ldKV07CisgICAgICAgIFthcnJheSBhZGRPYmplY3Q6cXVhZE9iamVj
dF07CisgICAgICAgIFtxdWFkT2JqZWN0IHJlbGVhc2VdOworICAgIH0KKyAgICByZXR1cm4gYXJy
YXk7Cit9CisKK3N0YXRpYyBpbmxpbmUgZmxvYXQgbWluNChmbG9hdCBhLCBmbG9hdCBiLCBmbG9h
dCBjLCBmbG9hdCBkKQoreworICAgIHJldHVybiBzdGQ6Om1pbihzdGQ6Om1pbihhLCBiKSwgc3Rk
OjptaW4oYywgZCkpOworfQorCitzdGF0aWMgaW5saW5lIGZsb2F0IG1heDQoZmxvYXQgYSwgZmxv
YXQgYiwgZmxvYXQgYywgZmxvYXQgZCkKK3sKKyAgICByZXR1cm4gc3RkOjptYXgoc3RkOjptYXgo
YSwgYiksIHN0ZDo6bWF4KGMsIGQpKTsKK30KKworc3RhdGljIGlubGluZSBXS1F1YWQgZW1wdHlR
dWFkKCkKK3sKKyAgICBXS1F1YWQgemVyb1F1YWQgPSB7IENHUG9pbnRaZXJvLCBDR1BvaW50WmVy
bywgQ0dQb2ludFplcm8sIENHUG9pbnRaZXJvIH07CisgICAgcmV0dXJuIHplcm9RdWFkOworfQor
I2VuZGlmCisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAorI2lmIFBMQVRGT1JNKElPUykKK0Bp
bXBsZW1lbnRhdGlvbiBXS1F1YWRPYmplY3QKKworLSAoaWQpaW5pdFdpdGhRdWFkOihXS1F1YWQp
cXVhZAoreworICAgIGlmICgoc2VsZiA9IFtzdXBlciBpbml0XSkpCisgICAgeworICAgICAgICBf
cXVhZCA9IHF1YWQ7CisgICAgfQorICAgIHJldHVybiBzZWxmOworfQorCistIChXS1F1YWQpcXVh
ZAoreworICAgIHJldHVybiBfcXVhZDsKK30KKworLSAoQ0dSZWN0KWJvdW5kaW5nQm94Cit7Cisg
ICAgZmxvYXQgbGVmdCAgICAgID0gV2ViQ29yZTo6bWluNChfcXVhZC5wMS54LCBfcXVhZC5wMi54
LCBfcXVhZC5wMy54LCBfcXVhZC5wNC54KTsKKyAgICBmbG9hdCB0b3AgICAgICAgPSBXZWJDb3Jl
OjptaW40KF9xdWFkLnAxLnksIF9xdWFkLnAyLnksIF9xdWFkLnAzLnksIF9xdWFkLnA0LnkpOwor
ICAgIAorICAgIGZsb2F0IHJpZ2h0ICAgICA9IFdlYkNvcmU6Om1heDQoX3F1YWQucDEueCwgX3F1
YWQucDIueCwgX3F1YWQucDMueCwgX3F1YWQucDQueCk7CisgICAgZmxvYXQgYm90dG9tICAgID0g
V2ViQ29yZTo6bWF4NChfcXVhZC5wMS55LCBfcXVhZC5wMi55LCBfcXVhZC5wMy55LCBfcXVhZC5w
NC55KTsKKyAgICAKKyAgICByZXR1cm4gQ0dSZWN0TWFrZShsZWZ0LCB0b3AsIHJpZ2h0IC0gbGVm
dCwgYm90dG9tIC0gdG9wKTsKK30KKworQGVuZAorI2VuZGlmCisKIEBpbXBsZW1lbnRhdGlvbiBE
T01Ob2RlIChXZWJDb3JlSW50ZXJuYWwpCiAKICNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBwdXNo
CkBAIC0yNjMsMTMgKzM1MSwyMSBAQCBpZCA8RE9NRXZlbnRUYXJnZXQ+IGtpdChXZWJDb3JlOjpF
dmVudFRhcmdldCogZXZlbnRUYXJnZXQpCiAKIEBpbXBsZW1lbnRhdGlvbiBET01Ob2RlIChET01O
b2RlRXh0ZW5zaW9ucykKIAorI2lmIFBMQVRGT1JNKElPUykKKy0gKENHUmVjdClib3VuZGluZ0Jv
eAorI2Vsc2UKIC0gKE5TUmVjdClib3VuZGluZ0JveAorI2VuZGlmCiB7CiAgICAgLy8gRklYTUU6
IENvdWxkIHdlIG1vdmUgdGhpcyBmdW5jdGlvbiB0byBXZWJDb3JlOjpOb2RlIGFuZCBhdXRvZ2Vu
ZXJhdGU/CiAgICAgY29yZShzZWxmKS0+ZG9jdW1lbnQoKS51cGRhdGVMYXlvdXRJZ25vcmVQZW5k
aW5nU3R5bGVzaGVldHMoKTsKICAgICBXZWJDb3JlOjpSZW5kZXJPYmplY3QqIHJlbmRlcmVyID0g
Y29yZShzZWxmKS0+cmVuZGVyZXIoKTsKICAgICBpZiAoIXJlbmRlcmVyKQorI2lmIFBMQVRGT1JN
KElPUykKKyAgICAgICAgcmV0dXJuIENHUmVjdFplcm87CisjZWxzZQogICAgICAgICByZXR1cm4g
TlNaZXJvUmVjdDsKKyNlbmRpZgogICAgIHJldHVybiByZW5kZXJlci0+YWJzb2x1dGVCb3VuZGlu
Z0JveFJlY3QoKTsKIH0KIApAQCAtMjc4LDEwICszNzQsMTgwIEBAIGlkIDxET01FdmVudFRhcmdl
dD4ga2l0KFdlYkNvcmU6OkV2ZW50VGFyZ2V0KiBldmVudFRhcmdldCkKICAgICByZXR1cm4gW3Nl
bGYgdGV4dFJlY3RzXTsKIH0KIAorI2lmIFBMQVRGT1JNKElPUykKKy8vIHF1YWQgaW4gcGFnZSBj
b29yZGluYXRlcywgdGFraW5nIHRyYW5zZm9ybXMgaW50byBhY2NvdW50LiBjLmYuIC0gKE5TUmVj
dClib3VuZGluZ0JveDsKKy0gKFdLUXVhZClhYnNvbHV0ZVF1YWQKK3sKKyAgICByZXR1cm4gW3Nl
bGYgYWJzb2x1dGVRdWFkQW5kSW5zaWRlRml4ZWRQb3NpdGlvbjowXTsKK30KKworLSAoV0tRdWFk
KWFic29sdXRlUXVhZEFuZEluc2lkZUZpeGVkUG9zaXRpb246KEJPT0wgKilpbnNpZGVGaXhlZAor
eworICAgIGNvcmUoc2VsZiktPmRvY3VtZW50KCkudXBkYXRlTGF5b3V0SWdub3JlUGVuZGluZ1N0
eWxlc2hlZXRzKCk7CisgICAgV2ViQ29yZTo6UmVuZGVyT2JqZWN0ICpyZW5kZXJlciA9IGNvcmUo
c2VsZiktPnJlbmRlcmVyKCk7CisgICAgaWYgKHJlbmRlcmVyKSB7CisgICAgICAgIFZlY3RvcjxG
bG9hdFF1YWQ+IHF1YWRzOworICAgICAgICBib29sIHdhc0ZpeGVkID0gZmFsc2U7CisgICAgICAg
IHJlbmRlcmVyLT5hYnNvbHV0ZVF1YWRzKHF1YWRzLCAmd2FzRml4ZWQpOworICAgICAgICBpZiAo
aW5zaWRlRml4ZWQpCisgICAgICAgICAgICAqaW5zaWRlRml4ZWQgPSB3YXNGaXhlZDsKKworICAg
ICAgICBpZiAocXVhZHMuc2l6ZSgpID09IDApCisgICAgICAgICAgICByZXR1cm4gV2ViQ29yZTo6
ZW1wdHlRdWFkKCk7CisgICAgICAgIAorICAgICAgICBpZiAocXVhZHMuc2l6ZSgpID09IDEpCisg
ICAgICAgICAgICByZXR1cm4gd2tRdWFkRnJvbUZsb2F0UXVhZChxdWFkc1swXSk7CisKKyAgICAg
ICAgRmxvYXRSZWN0IGJvdW5kaW5nUmVjdCA9IHF1YWRzWzBdLmJvdW5kaW5nQm94KCk7CisgICAg
ICAgIGZvciAoc2l6ZV90IGkgPSAxOyBpIDwgcXVhZHMuc2l6ZSgpOyArK2kpCisgICAgICAgICAg
ICBib3VuZGluZ1JlY3QudW5pdGUocXVhZHNbaV0uYm91bmRpbmdCb3goKSk7CisKKyAgICAgICAg
cmV0dXJuIHdrUXVhZEZyb21GbG9hdFF1YWQoYm91bmRpbmdSZWN0KTsKKyAgICB9CisKKyAgICBy
ZXR1cm4gV2ViQ29yZTo6ZW1wdHlRdWFkKCk7Cit9CisKKy8vIHRoaXMgbWV0aG9kIGlzIGxpa2Ug
LSAoQ0dSZWN0KWJvdW5kaW5nQm94LCBidXQgaXQgYWNjb3VudHMgZm9yIGZvciB0cmFuc2Zvcm1z
CistIChDR1JlY3QpYm91bmRpbmdCb3hVc2luZ1RyYW5zZm9ybXMKK3sKKyAgICBjb3JlKHNlbGYp
LT5kb2N1bWVudCgpLnVwZGF0ZUxheW91dElnbm9yZVBlbmRpbmdTdHlsZXNoZWV0cygpOworICAg
IFdlYkNvcmU6OlJlbmRlck9iamVjdCogcmVuZGVyZXIgPSBjb3JlKHNlbGYpLT5yZW5kZXJlcigp
OworICAgIGlmICghcmVuZGVyZXIpCisgICAgICAgIHJldHVybiBDR1JlY3RaZXJvOworICAgIHJl
dHVybiByZW5kZXJlci0+YWJzb2x1dGVCb3VuZGluZ0JveFJlY3QodHJ1ZSk7Cit9CisKKy8vIHJl
dHVybnMgYXJyYXkgb2YgV0tRdWFkT2JqZWN0CistIChOU0FycmF5ICopbGluZUJveFF1YWRzCit7
CisgICAgY29yZShzZWxmKS0+ZG9jdW1lbnQoKS51cGRhdGVMYXlvdXRJZ25vcmVQZW5kaW5nU3R5
bGVzaGVldHMoKTsKKyAgICBXZWJDb3JlOjpSZW5kZXJPYmplY3QgKnJlbmRlcmVyID0gY29yZShz
ZWxmKS0+cmVuZGVyZXIoKTsKKyAgICBpZiAocmVuZGVyZXIpIHsKKyAgICAgICAgVmVjdG9yPFdl
YkNvcmU6OkZsb2F0UXVhZD4gcXVhZHM7CisgICAgICAgIHJlbmRlcmVyLT5hYnNvbHV0ZVF1YWRz
KHF1YWRzKTsKKyAgICAgICAgcmV0dXJuIGtpdChxdWFkcyk7CisgICAgfQorICAgIHJldHVybiBu
aWw7Cit9CisKKy0gKEVsZW1lbnQgKilfbGlua0VsZW1lbnQKK3sKKyAgICBXZWJDb3JlOjpOb2Rl
KiBub2RlID0gY29yZShzZWxmKTsKKyAgICAKKyAgICB3aGlsZSAobm9kZSkgeworICAgICAgICBp
ZiAobm9kZS0+aXNMaW5rKCkpCisgICAgICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8V2ViQ29y
ZTo6RWxlbWVudCo+KG5vZGUpOworICAgICAgICBub2RlID0gbm9kZS0+cGFyZW50Tm9kZSgpOwor
ICAgIH0KKyAgICAKKyAgICByZXR1cm4gMDsKK30KKworLSAoTlNVUkwgKilocmVmVVJMCit7Cisg
ICAgRWxlbWVudCAqbGluaz0gW3NlbGYgX2xpbmtFbGVtZW50XTsKKyAgICBpZiAobGluaykKKyAg
ICAgICAgcmV0dXJuIGxpbmstPmRvY3VtZW50KCkuY29tcGxldGVVUkwoc3RyaXBMZWFkaW5nQW5k
VHJhaWxpbmdIVE1MU3BhY2VzKGxpbmstPmdldEF0dHJpYnV0ZShIVE1MTmFtZXM6OmhyZWZBdHRy
KSkpOworICAgIAorICAgIHJldHVybiBuaWw7Cit9CisKKy0gKE5TU3RyaW5nICopaHJlZlRhcmdl
dAoreworICAgIEVsZW1lbnQgKnRhcmdldCA9IFtzZWxmIF9saW5rRWxlbWVudF07CisgICAgCisg
ICAgaWYodGFyZ2V0KSByZXR1cm4gdGFyZ2V0LT5nZXRBdHRyaWJ1dGUoSFRNTE5hbWVzOjp0YXJn
ZXRBdHRyKTsKKyAgICAKKyAgICByZXR1cm4gbmlsOworfQorCistIChDR1JlY3QpaHJlZkZyYW1l
Cit7CisgICAgUmVuZGVyT2JqZWN0ICpyZW5kZXJlciA9IFtzZWxmIF9saW5rRWxlbWVudF0tPnJl
bmRlcmVyKCk7CisgICAgCisgICAgaWYocmVuZGVyZXIpIHJldHVybiByZW5kZXJlci0+YWJzb2x1
dGVCb3VuZGluZ0JveFJlY3QoKTsKKyAgICAKKyAgICByZXR1cm4gTlNaZXJvUmVjdDsKK30KKwor
LSAoTlNTdHJpbmcgKilocmVmTGFiZWwKK3sKKyAgICBFbGVtZW50ICpsaW5rPSBbc2VsZiBfbGlu
a0VsZW1lbnRdOworICAgIAorICAgIGlmICghbGluaykgcmV0dXJuIG5pbDsKKyAgICAKKyAgICBy
ZXR1cm4gbGluay0+dGV4dENvbnRlbnQoKTsKK30KKworLSAoTlNTdHJpbmcgKilocmVmVGl0bGUK
K3sKKyAgICBFbGVtZW50ICpsaW5rPSBbc2VsZiBfbGlua0VsZW1lbnRdOworICAgIAorICAgIGlm
ICghbGluaykgcmV0dXJuIG5pbDsKKyAgICAKKyAgICByZXR1cm4gbGluay0+ZG9jdW1lbnQoKS5k
aXNwbGF5U3RyaW5nTW9kaWZpZWRCeUVuY29kaW5nKHN0YXRpY19jYXN0PEhUTUxFbGVtZW50ICo+
KGxpbmspLT50aXRsZSgpKTsKK30KKworLSAoQ0dSZWN0KWJvdW5kaW5nRnJhbWUKK3sKKyAgICBy
ZXR1cm4gW3NlbGYgYm91bmRpbmdCb3hdOworfQorCistIChXS1F1YWQpaW5uZXJGcmFtZVF1YWQg
ICAgICAgLy8gdGFrZXMgdHJhbnNmb3JtcyBpbnRvIGFjY291bnQKK3sKKyAgICBjb3JlKHNlbGYp
LT5kb2N1bWVudCgpLnVwZGF0ZUxheW91dElnbm9yZVBlbmRpbmdTdHlsZXNoZWV0cygpOworICAg
IFJlbmRlck9iamVjdCogcmVuZGVyZXIgPSBjb3JlKHNlbGYpLT5yZW5kZXJlcigpOworICAgIGlm
ICghcmVuZGVyZXIpCisgICAgICAgIHJldHVybiBlbXB0eVF1YWQoKTsKKworICAgIFJlbmRlclN0
eWxlJiBzdHlsZSA9IHJlbmRlcmVyLT5zdHlsZSgpOworICAgIEludFJlY3QgYm91bmRpbmdCb3gg
PSByZW5kZXJlci0+YWJzb2x1dGVCb3VuZGluZ0JveFJlY3QodHJ1ZSAvKiB1c2UgdHJhbnNmb3Jt
cyovKTsKKworICAgIGJvdW5kaW5nQm94Lm1vdmUoc3R5bGUuYm9yZGVyTGVmdFdpZHRoKCksIHN0
eWxlLmJvcmRlclRvcFdpZHRoKCkpOworICAgIGJvdW5kaW5nQm94LnNldFdpZHRoKGJvdW5kaW5n
Qm94LndpZHRoKCkgLSBzdHlsZS5ib3JkZXJMZWZ0V2lkdGgoKSAtIHN0eWxlLmJvcmRlclJpZ2h0
V2lkdGgoKSk7CisgICAgYm91bmRpbmdCb3guc2V0SGVpZ2h0KGJvdW5kaW5nQm94LmhlaWdodCgp
IC0gc3R5bGUuYm9yZGVyQm90dG9tV2lkdGgoKSAtIHN0eWxlLmJvcmRlclRvcFdpZHRoKCkpOwor
CisgICAgLy8gRklYTUU6IFRoaXMgZnVuY3Rpb24gYWR2ZXJ0aXNlcyByZXR1cm5pbmcgYSBxdWFk
LCBidXQgaXQgYWN0dWFsbHkgcmV0dXJucyBhIGJvdW5kaW5nIGJveCAoc28gdGhlcmUgaXMgbm8g
cm90YXRpb24sIGZvciBpbnN0YW5jZSkuCisgICAgcmV0dXJuIHdrUXVhZEZyb21GbG9hdFF1YWQo
RmxvYXRRdWFkKGJvdW5kaW5nQm94KSk7Cit9CisKKy0gKGZsb2F0KWNvbXB1dGVkRm9udFNpemUK
K3sKKyAgICBXZWJDb3JlOjpOb2RlICpub2RlID0gY29yZShzZWxmKTsKKyAgICBSZW5kZXJTdHls
ZSAqc3R5bGUgPSBub2RlLT5yZW5kZXJTdHlsZSgpOworICAgIGlmICghc3R5bGUpCisgICAgICAg
IHJldHVybiAwLjBmOworICAgIHJldHVybiBzdHlsZS0+Zm9udERlc2NyaXB0aW9uKCkuY29tcHV0
ZWRTaXplKCk7Cit9CisKKy0gKERPTU5vZGUgKiluZXh0Rm9jdXNOb2RlCit7CisgICAgUGFnZSAq
cGFnZSA9IGNvcmUoc2VsZiktPmRvY3VtZW50KCkucGFnZSgpOworICAgIGlmICghcGFnZSkKKyAg
ICAgICAgcmV0dXJuIG5pbDsKKworICAgIFJlZlB0cjxLZXlib2FyZEV2ZW50PiBrZXkgPSBLZXli
b2FyZEV2ZW50OjpjcmVhdGUoKTsKKyAgICByZXR1cm4ga2l0KHBhZ2UtPmZvY3VzQ29udHJvbGxl
cigpLm5leHRGb2N1c2FibGVFbGVtZW50KEZvY3VzTmF2aWdhdGlvblNjb3BlOjpmb2N1c05hdmln
YXRpb25TY29wZU9mKCZjb3JlKHNlbGYpLT5kb2N1bWVudCgpKSwgY29yZShzZWxmKSwga2V5Lmdl
dCgpKSk7Cit9CisKKy0gKERPTU5vZGUgKilwcmV2aW91c0ZvY3VzTm9kZQoreworICAgIFBhZ2Ug
KnBhZ2UgPSBjb3JlKHNlbGYpLT5kb2N1bWVudCgpLnBhZ2UoKTsKKyAgICBpZiAoIXBhZ2UpCisg
ICAgICAgIHJldHVybiBuaWw7CisKKyAgICBSZWZQdHI8S2V5Ym9hcmRFdmVudD4ga2V5ID0gS2V5
Ym9hcmRFdmVudDo6Y3JlYXRlKCk7CisgICAgcmV0dXJuIGtpdChwYWdlLT5mb2N1c0NvbnRyb2xs
ZXIoKS5wcmV2aW91c0ZvY3VzYWJsZUVsZW1lbnQoRm9jdXNOYXZpZ2F0aW9uU2NvcGU6OmZvY3Vz
TmF2aWdhdGlvblNjb3BlT2YoJmNvcmUoc2VsZiktPmRvY3VtZW50KCkpLCBjb3JlKHNlbGYpLCBr
ZXkuZ2V0KCkpKTsKK30KKworI2VuZGlmIC8vIFBMQVRGT1JNKElPUykKKwogQGVuZAogCiBAaW1w
bGVtZW50YXRpb24gRE9NTm9kZSAoRE9NTm9kZUV4dGVuc2lvbnNQZW5kaW5nUHVibGljKQogCisj
aWYgIVBMQVRGT1JNKElPUykKIC0gKE5TSW1hZ2UgKilyZW5kZXJlZEltYWdlCiB7CiAgICAgLy8g
RklYTUU6IENvdWxkIHdlIG1vdmUgdGhpcyBmdW5jdGlvbiB0byBXZWJDb3JlOjpOb2RlIGFuZCBh
dXRvZ2VuZXJhdGU/CkBAIC0yOTEsNiArNTU3LDcgQEAgaWQgPERPTUV2ZW50VGFyZ2V0PiBraXQo
V2ViQ29yZTo6RXZlbnRUYXJnZXQqIGV2ZW50VGFyZ2V0KQogICAgICAgICByZXR1cm4gbmlsOwog
ICAgIHJldHVybiBbY3JlYXRlRHJhZ0ltYWdlRm9yTm9kZSgqZnJhbWUsICpub2RlKS5sZWFrUmVm
KCkgYXV0b3JlbGVhc2VdOwogfQorI2VuZGlmCiAKIC0gKE5TQXJyYXkgKil0ZXh0UmVjdHMKIHsK
QEAgLTMyMSwxNCArNTg4LDIyIEBAIGlkIDxET01FdmVudFRhcmdldD4ga2l0KFdlYkNvcmU6OkV2
ZW50VGFyZ2V0KiBldmVudFRhcmdldCkKIAogQGltcGxlbWVudGF0aW9uIERPTVJhbmdlIChET01S
YW5nZUV4dGVuc2lvbnMpCiAKKyNpZiBQTEFURk9STShJT1MpCistIChDR1JlY3QpYm91bmRpbmdC
b3gKKyNlbHNlCiAtIChOU1JlY3QpYm91bmRpbmdCb3gKKyNlbmRpZgogewogICAgIC8vIEZJWE1F
OiBUaGUgY2FsbCB0byB1cGRhdGVMYXlvdXRJZ25vcmVQZW5kaW5nU3R5bGVzaGVldHMgc2hvdWxk
IGJlIG1vdmVkIGludG8gV2ViQ29yZTo6UmFuZ2UuCiAgICAgY29yZShzZWxmKS0+b3duZXJEb2N1
bWVudCgpLnVwZGF0ZUxheW91dElnbm9yZVBlbmRpbmdTdHlsZXNoZWV0cygpOwogICAgIHJldHVy
biBjb3JlKHNlbGYpLT5ib3VuZGluZ0JveCgpOwogfQogCisjaWYgIVBMQVRGT1JNKElPUykKIC0g
KE5TSW1hZ2UgKilyZW5kZXJlZEltYWdlRm9yY2luZ0JsYWNrVGV4dDooQk9PTClmb3JjZUJsYWNr
VGV4dAorI2Vsc2UKKy0gKENHSW1hZ2VSZWYpcmVuZGVyZWRJbWFnZUZvcmNpbmdCbGFja1RleHQ6
KEJPT0wpZm9yY2VCbGFja1RleHQKKyNlbmRpZgogewogICAgIFdlYkNvcmU6OlJhbmdlKiByYW5n
ZSA9IGNvcmUoc2VsZik7CiAgICAgV2ViQ29yZTo6RnJhbWUqIGZyYW1lID0gcmFuZ2UtPm93bmVy
RG9jdW1lbnQoKS5mcmFtZSgpOwpAQCAtMzYwLDYgKzYzNSw3IEBAIGlkIDxET01FdmVudFRhcmdl
dD4ga2l0KFdlYkNvcmU6OkV2ZW50VGFyZ2V0KiBldmVudFRhcmdldCkKIAogQGltcGxlbWVudGF0
aW9uIERPTUVsZW1lbnQgKERPTUVsZW1lbnRBcHBLaXRFeHRlbnNpb25zKQogCisjaWYgIVBMQVRG
T1JNKElPUykKIC0gKE5TSW1hZ2UqKWltYWdlCiB7CiAgICAgLy8gRklYTUU6IENvdWxkIHdlIG1v
dmUgdGhpcyBmdW5jdGlvbiB0byBXZWJDb3JlOjpOb2RlIGFuZCBhdXRvZ2VuZXJhdGU/CkBAIC0z
NzEsMTEgKzY0NywxMyBAQCBpZCA8RE9NRXZlbnRUYXJnZXQ+IGtpdChXZWJDb3JlOjpFdmVudFRh
cmdldCogZXZlbnRUYXJnZXQpCiAgICAgICAgIHJldHVybiBuaWw7CiAgICAgcmV0dXJuIGNhY2hl
ZEltYWdlLT5pbWFnZUZvclJlbmRlcmVyKHRvUmVuZGVySW1hZ2UocmVuZGVyZXIpKS0+Z2V0TlNJ
bWFnZSgpOwogfQorI2VuZGlmCiAKIEBlbmQKIAogQGltcGxlbWVudGF0aW9uIERPTUVsZW1lbnQg
KFdlYlByaXZhdGUpCiAKKyNpZiAhUExBVEZPUk0oSU9TKQogLSAoTlNGb250ICopX2ZvbnQKIHsK
ICAgICAvLyBGSVhNRTogQ291bGQgd2UgbW92ZSB0aGlzIGZ1bmN0aW9uIHRvIFdlYkNvcmU6OkVs
ZW1lbnQgYW5kIGF1dG9nZW5lcmF0ZT8KQEAgLTM4NCw3ICs2NjIsMTcgQEAgaWQgPERPTUV2ZW50
VGFyZ2V0PiBraXQoV2ViQ29yZTo6RXZlbnRUYXJnZXQqIGV2ZW50VGFyZ2V0KQogICAgICAgICBy
ZXR1cm4gbmlsOwogICAgIHJldHVybiByZW5kZXJlci0+c3R5bGUoKS5mb250KCkucHJpbWFyeUZv
bnQoKS0+Z2V0TlNGb250KCk7CiB9CisjZWxzZQorLSAoQ1RGb250UmVmKV9mb250Cit7CisgICAg
UmVuZGVyT2JqZWN0KiByZW5kZXJlciA9IGNvcmUoc2VsZiktPnJlbmRlcmVyKCk7CisgICAgaWYg
KCFyZW5kZXJlcikKKyAgICAgICAgcmV0dXJuIG5pbDsKKyAgICByZXR1cm4gcmVuZGVyZXItPnN0
eWxlKCkuZm9udCgpLnByaW1hcnlGb250KCktPmdldENURm9udCgpOworfQorI2VuZGlmCiAKKyNp
ZiAhUExBVEZPUk0oSU9TKQogLSAoTlNEYXRhICopX2ltYWdlVElGRlJlcHJlc2VudGF0aW9uCiB7
CiAgICAgLy8gRklYTUU6IENvdWxkIHdlIG1vdmUgdGhpcyBmdW5jdGlvbiB0byBXZWJDb3JlOjpF
bGVtZW50IGFuZCBhdXRvZ2VuZXJhdGU/CkBAIC0zOTYsNiArNjg0LDcgQEAgaWQgPERPTUV2ZW50
VGFyZ2V0PiBraXQoV2ViQ29yZTo6RXZlbnRUYXJnZXQqIGV2ZW50VGFyZ2V0KQogICAgICAgICBy
ZXR1cm4gbmlsOwogICAgIHJldHVybiAoTlNEYXRhICopY2FjaGVkSW1hZ2UtPmltYWdlRm9yUmVu
ZGVyZXIocmVuZGVyZXIpLT5nZXRUSUZGUmVwcmVzZW50YXRpb24oKTsKIH0KKyNlbmRpZgogCiAt
IChOU1VSTCAqKV9nZXRVUkxBdHRyaWJ1dGU6KE5TU3RyaW5nICopbmFtZQogewpAQCAtNDE1LDYg
KzcwNCw0OSBAQCBpZCA8RE9NRXZlbnRUYXJnZXQ+IGtpdChXZWJDb3JlOjpFdmVudFRhcmdldCog
ZXZlbnRUYXJnZXQpCiAKIEBlbmQKIAorI2lmIFBMQVRGT1JNKElPUykKK0BpbXBsZW1lbnRhdGlv
biBET01IVE1MTGlua0VsZW1lbnQgKFdlYlByaXZhdGUpCistIChCT09MKV9tZWRpYVF1ZXJ5TWF0
Y2hlc0Zvck9yaWVudGF0aW9uOihpbnQpb3JpZW50YXRpb24KK3sKKyAgICBEb2N1bWVudCYgZG9j
dW1lbnQgPSBzdGF0aWNfY2FzdDxIVE1MTGlua0VsZW1lbnQqPihjb3JlKHNlbGYpKS0+ZG9jdW1l
bnQoKTsKKyAgICBGcmFtZVZpZXcqIGZyYW1lVmlldyA9IGRvY3VtZW50LmZyYW1lKCkgPyBkb2N1
bWVudC5mcmFtZSgpLT52aWV3KCkgOiAwOworICAgIGlmICghZnJhbWVWaWV3KQorICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgaW50IGxheW91dFdpZHRoID0gZnJhbWVWaWV3LT5sYXlvdXRXaWR0
aCgpOworICAgIGludCBsYXlvdXRIZWlnaHQgPSBmcmFtZVZpZXctPmxheW91dEhlaWdodCgpOwor
ICAgIEludFNpemUgc2F2ZWRGaXhlZExheW91dFNpemUgPSBmcmFtZVZpZXctPmZpeGVkTGF5b3V0
U2l6ZSgpOworICAgIGJvb2wgc2F2ZWRVc2VGaXhlZExheW91dCA9IGZyYW1lVmlldy0+dXNlRml4
ZWRMYXlvdXQoKTsKKyAgICBpZiAoKG9yaWVudGF0aW9uID09IFdlYk1lZGlhUXVlcnlPcmllbnRh
dGlvblBvcnRyYWl0ICYmIGxheW91dFdpZHRoID4gbGF5b3V0SGVpZ2h0KSB8fAorICAgICAgICAo
b3JpZW50YXRpb24gPT0gV2ViTWVkaWFRdWVyeU9yaWVudGF0aW9uTGFuZHNjYXBlICYmIGxheW91
dFdpZHRoIDwgbGF5b3V0SGVpZ2h0KSkgeworICAgICAgICAvLyB0ZW1wb3JhcmlseSBzd2FwIHRo
ZSBvcmllbnRhdGlvbiBmb3IgdGhlIGV2YWx1YXRpb24KKyAgICAgICAgZnJhbWVWaWV3LT5zZXRG
aXhlZExheW91dFNpemUoSW50U2l6ZShsYXlvdXRIZWlnaHQsIGxheW91dFdpZHRoKSk7CisgICAg
ICAgIGZyYW1lVmlldy0+c2V0VXNlRml4ZWRMYXlvdXQodHJ1ZSk7CisgICAgfQorICAgICAgICAK
KyAgICBib29sIHJlc3VsdCA9IFtzZWxmIF9tZWRpYVF1ZXJ5TWF0Y2hlc107CisKKyAgICBmcmFt
ZVZpZXctPnNldEZpeGVkTGF5b3V0U2l6ZShzYXZlZEZpeGVkTGF5b3V0U2l6ZSk7CisgICAgZnJh
bWVWaWV3LT5zZXRVc2VGaXhlZExheW91dChzYXZlZFVzZUZpeGVkTGF5b3V0KTsKKworICAgIHJl
dHVybiByZXN1bHQ7Cit9CisKKy0gKEJPT0wpX21lZGlhUXVlcnlNYXRjaGVzCit7CisgICAgSFRN
TExpbmtFbGVtZW50KiBsaW5rID0gc3RhdGljX2Nhc3Q8SFRNTExpbmtFbGVtZW50Kj4oY29yZShz
ZWxmKSk7CisgICAgU3RyaW5nIG1lZGlhID0gbGluay0+Z2V0QXR0cmlidXRlKEhUTUxOYW1lczo6
bWVkaWFBdHRyKTsKKyAgICBpZiAobWVkaWEuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm4gdHJ1
ZTsKKyAgICBEb2N1bWVudCYgZG9jdW1lbnQgPSBsaW5rLT5kb2N1bWVudCgpOworCisgICAgUmVm
UHRyPE1lZGlhUXVlcnlTZXQ+IG1lZGlhUXVlcnlTZXQgPSBNZWRpYVF1ZXJ5U2V0OjpjcmVhdGVB
bGxvd2luZ0Rlc2NyaXB0aW9uU3ludGF4KG1lZGlhKTsKKyAgICBNZWRpYVF1ZXJ5RXZhbHVhdG9y
IHNjcmVlbkV2YWwoInNjcmVlbiIsIGRvY3VtZW50LmZyYW1lKCksIGRvY3VtZW50LnJlbmRlclZp
ZXcoKSA/ICZkb2N1bWVudC5yZW5kZXJWaWV3KCktPnN0eWxlKCkgOiAwKTsKKworICAgIHJldHVy
biBzY3JlZW5FdmFsLmV2YWwobWVkaWFRdWVyeVNldC5nZXQoKSk7Cit9CitAZW5kCisjZW5kaWYK
KwogLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIC8vIERPTVJhbmdlCiAKQEAg
LTQ0MiwxMiArNzc0LDE0IEBAIGlkIDxET01FdmVudFRhcmdldD4ga2l0KFdlYkNvcmU6OkV2ZW50
VGFyZ2V0KiBldmVudFRhcmdldCkKIAogQGltcGxlbWVudGF0aW9uIERPTVJHQkNvbG9yIChXZWJQ
cml2YXRlKQogCisjaWYgIVBMQVRGT1JNKElPUykKIC8vIEZJWE1FOiBUaGlzIHNob3VsZCBiZSBy
ZW1vdmVkIGFzIHNvb24gYXMgYWxsIGludGVybmFsIEFwcGxlIHVzZXMgb2YgaXQgaGF2ZSBiZWVu
IHJlcGxhY2VkIHdpdGgKIC8vIGNhbGxzIHRvIHRoZSBwdWJsaWMgbWV0aG9kIC0gKE5TQ29sb3Ig
Kiljb2xvci4KIC0gKE5TQ29sb3IgKilfY29sb3IKIHsKICAgICByZXR1cm4gW3NlbGYgY29sb3Jd
OwogfQorI2VuZGlmCiAKIEBlbmQKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvb2JqYy9ET01FdmVudHMuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL29iamMvRE9NRXZl
bnRzLmgKaW5kZXggNGUyZDgyNWM2YTVkNmZiZTcwNDRhNzYzOTk0MTFkODRhMWY3ZGNkOC4uYWMx
YTNiYzhiZThhZWYyYzU2M2U4YjlkMjNjNDdlYzMxN2YwNjk5MyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvb2JqYy9ET01FdmVudHMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9vYmpjL0RPTUV2ZW50cy5oCkBAIC00MCwzICs0MCwxMSBAQAogI2ltcG9ydCA8V2Vi
Q29yZS9ET01Qcm9ncmVzc0V2ZW50Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL0RPTVVJRXZlbnQuaD4K
ICNpbXBvcnQgPFdlYkNvcmUvRE9NV2hlZWxFdmVudC5oPgorCisjaWYgRU5BQkxFKFRPVUNIX0VW
RU5UUykKKyNpbXBvcnQgPFdlYkNvcmUvRE9NVG91Y2hFdmVudC5oPgorI2VuZGlmCisKKyNpZiBF
TkFCTEUoSU9TX0dFU1RVUkVfRVZFTlRTKQorI2ltcG9ydCA8V2ViQ29yZS9ET01HZXN0dXJlRXZl
bnQuaD4KKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvb2JqYy9E
T01FdmVudHMubW0gYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9vYmpjL0RPTUV2ZW50cy5tbQpp
bmRleCBiZGQxN2M2NDVlNDdjZjlmYmIwZDVhNmJkNzkwZGU2Y2Q0YTg0MDAyLi40ZTlmYjhiNDhl
NzUxNWEyMjJiYTMzZWQzNGQ2YzNhZjE5OGQwZDgwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9vYmpjL0RPTUV2ZW50cy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9vYmpjL0RPTUV2ZW50cy5tbQpAQCAtNDAsNiArNDAsMTQgQEAKICNpbXBvcnQgIkV2ZW50Lmgi
CiAjaW1wb3J0ICJFdmVudE5hbWVzLmgiCiAKKyNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQorI2lt
cG9ydCAiRE9NVG91Y2hFdmVudC5oIgorI2VuZGlmCisKKyNpZiBFTkFCTEUoSU9TX0dFU1RVUkVf
RVZFTlRTKQorI2ltcG9ydCAiRE9NR2VzdHVyZUV2ZW50LmgiCisjZW5kaWYKKwogdXNpbmcgV2Vi
Q29yZTo6ZXZlbnROYW1lczsKIAogQ2xhc3Mga2l0Q2xhc3MoV2ViQ29yZTo6RXZlbnQqIGltcGwp
CkBAIC01NCw3ICs2MiwxNSBAQCBDbGFzcyBraXRDbGFzcyhXZWJDb3JlOjpFdmVudCogaW1wbCkK
ICAgICAgICAgaWYgKGRlc2lyZWRJbnRlcmZhY2UgPT0gV2ViQ29yZTo6VGV4dEV2ZW50SW50ZXJm
YWNlVHlwZSkKICAgICAgICAgICAgIHJldHVybiBbRE9NVGV4dEV2ZW50IGNsYXNzXTsKICAgICAg
ICAgaWYgKGRlc2lyZWRJbnRlcmZhY2UgPT0gV2ViQ29yZTo6V2hlZWxFdmVudEludGVyZmFjZVR5
cGUpCi0gICAgICAgICAgICByZXR1cm4gW0RPTVdoZWVsRXZlbnQgY2xhc3NdOworICAgICAgICAg
ICAgcmV0dXJuIFtET01XaGVlbEV2ZW50IGNsYXNzXTsgICAgICAgIAorI2lmIFBMQVRGT1JNKElP
UykgJiYgRU5BQkxFKFRPVUNIX0VWRU5UUykKKyAgICAgICAgaWYgKGRlc2lyZWRJbnRlcmZhY2Ug
PT0gV2ViQ29yZTo6VG91Y2hFdmVudEludGVyZmFjZVR5cGUpIAorICAgICAgICAgICAgcmV0dXJu
IFtET01Ub3VjaEV2ZW50IGNsYXNzXTsKKyNlbmRpZgorI2lmIEVOQUJMRShJT1NfR0VTVFVSRV9F
VkVOVFMpCisgICAgICAgIGlmIChkZXNpcmVkSW50ZXJmYWNlID09IFdlYkNvcmU6Okdlc3R1cmVF
dmVudEludGVyZmFjZVR5cGUpCisgICAgICAgICAgICByZXR1cm4gW0RPTUdlc3R1cmVFdmVudCBj
bGFzc107CisjZW5kaWYKICAgICAgICAgcmV0dXJuIFtET01VSUV2ZW50IGNsYXNzXTsKICAgICB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL29iamMvRE9NRXh0ZW5zaW9u
cy5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvb2JqYy9ET01FeHRlbnNpb25zLmgKaW5kZXgg
Y2VjMzU2MDBlMjFjNmZmNWIzNTY3NDk4YjdkYjUyMTJkMjIyOWYyMy4uN2IxOGQ0NGEwMTZjNjUx
Y2IyNmQ5NzUwNzYwYjAxOTY1NzM5NzBjOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvb2JqYy9ET01FeHRlbnNpb25zLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
b2JqYy9ET01FeHRlbnNpb25zLmgKQEAgLTQzLDIwICs0Myw4OSBAQAogI2ltcG9ydCA8V2ViQ29y
ZS9ET01SR0JDb2xvci5oPgogI2ltcG9ydCA8V2ViQ29yZS9ET01SYW5nZS5oPgogCisjaWYgUExB
VEZPUk0oSU9TKQorI2ltcG9ydCA8Q29yZUdyYXBoaWNzL0NvcmVHcmFwaGljcy5oPgorI2VuZGlm
CisKIEBjbGFzcyBOU0FycmF5OwogQGNsYXNzIE5TSW1hZ2U7CiBAY2xhc3MgTlNVUkw7CiAKKwor
I2lmIFBMQVRGT1JNKElPUykKK0BpbnRlcmZhY2UgRE9NSFRNTEVsZW1lbnQgKERPTUhUTUxFbGVt
ZW50RXh0ZW5zaW9ucykKKy0gKGludClzY3JvbGxYT2Zmc2V0OworLSAoaW50KXNjcm9sbFlPZmZz
ZXQ7CistICh2b2lkKXNldFNjcm9sbFhPZmZzZXQ6KGludCl4IHNjcm9sbFlPZmZzZXQ6KGludCl5
OworLSAodm9pZClzZXRTY3JvbGxYT2Zmc2V0OihpbnQpeCBzY3JvbGxZT2Zmc2V0OihpbnQpeSBh
ZGp1c3RGb3JJT1NDYXJldDooQk9PTClhZGp1c3RGb3JJT1NDYXJldDsKKy0gKHZvaWQpYWJzb2x1
dGVQb3NpdGlvbjooaW50ICopeCA6KGludCAqKXkgOihpbnQgKil3IDooaW50ICopaDsKK0BlbmQK
KyNlbmRpZgorCisjaWYgUExBVEZPUk0oSU9TKQordHlwZWRlZiBzdHJ1Y3QgX1dLUXVhZCB7Cisg
ICAgQ0dQb2ludCBwMTsKKyAgICBDR1BvaW50IHAyOworICAgIENHUG9pbnQgcDM7CisgICAgQ0dQ
b2ludCBwNDsKK30gV0tRdWFkOworCitAaW50ZXJmYWNlIFdLUXVhZE9iamVjdCA6IE5TT2JqZWN0
Cit7CisgICAgV0tRdWFkICBfcXVhZDsKK30KKworLSAoaWQpaW5pdFdpdGhRdWFkOihXS1F1YWQp
cXVhZDsKKy0gKFdLUXVhZClxdWFkOworLSAoQ0dSZWN0KWJvdW5kaW5nQm94OworQGVuZAorI2Vu
ZGlmCisKIEBpbnRlcmZhY2UgRE9NTm9kZSAoRE9NTm9kZUV4dGVuc2lvbnMpCisjaWYgUExBVEZP
Uk0oSU9TKQorLSAoQ0dSZWN0KWJvdW5kaW5nQm94OworI2Vsc2UKIC0gKE5TUmVjdClib3VuZGlu
Z0JveCBXRUJLSVRfQVZBSUxBQkxFX01BQygxMF81KTsKKyNlbmRpZgogLSAoTlNBcnJheSAqKWxp
bmVCb3hSZWN0cyBXRUJLSVRfQVZBSUxBQkxFX01BQygxMF81KTsKKworI2lmIFBMQVRGT1JNKElP
UykKKy0gKENHUmVjdClib3VuZGluZ0JveFVzaW5nVHJhbnNmb3JtczsgLy8gdGFrZXMgdHJhbnNm
b3JtcyBpbnRvIGFjY291bnQKKworLSAoV0tRdWFkKWFic29sdXRlUXVhZDsKKy0gKFdLUXVhZClh
YnNvbHV0ZVF1YWRBbmRJbnNpZGVGaXhlZFBvc2l0aW9uOihCT09MICopaW5zaWRlRml4ZWQ7Cist
IChOU0FycmF5ICopbGluZUJveFF1YWRzOyAgICAgIC8vIHJldHVybnMgYXJyYXkgb2YgV0tRdWFk
T2JqZWN0CisKKy0gKE5TVVJMICopaHJlZlVSTDsKKy0gKENHUmVjdClocmVmRnJhbWU7CistIChO
U1N0cmluZyAqKWhyZWZUYXJnZXQ7CistIChOU1N0cmluZyAqKWhyZWZMYWJlbDsKKy0gKE5TU3Ry
aW5nICopaHJlZlRpdGxlOworLSAoQ0dSZWN0KWJvdW5kaW5nRnJhbWU7CistIChXS1F1YWQpaW5u
ZXJGcmFtZVF1YWQ7ICAgICAgIC8vIHRha2VzIHRyYW5zZm9ybXMgaW50byBhY2NvdW50CistIChm
bG9hdCljb21wdXRlZEZvbnRTaXplOworLSAoRE9NTm9kZSAqKW5leHRGb2N1c05vZGU7CistIChE
T01Ob2RlICopcHJldmlvdXNGb2N1c05vZGU7CisjZW5kaWYKIEBlbmQKIAogQGludGVyZmFjZSBE
T01FbGVtZW50IChET01FbGVtZW50QXBwS2l0RXh0ZW5zaW9ucykKKyNpZiAhUExBVEZPUk0oSU9T
KQogLSAoTlNJbWFnZSAqKWltYWdlIFdFQktJVF9BVkFJTEFCTEVfTUFDKDEwXzUpOworI2VuZGlm
CiBAZW5kCiAKIEBpbnRlcmZhY2UgRE9NSFRNTERvY3VtZW50IChET01IVE1MRG9jdW1lbnRFeHRl
bnNpb25zKQogLSAoRE9NRG9jdW1lbnRGcmFnbWVudCAqKWNyZWF0ZURvY3VtZW50RnJhZ21lbnRX
aXRoTWFya3VwU3RyaW5nOihOU1N0cmluZyAqKW1hcmt1cFN0cmluZyBiYXNlVVJMOihOU1VSTCAq
KWJhc2VVUkwgV0VCS0lUX0FWQUlMQUJMRV9NQUMoMTBfNSk7CiAtIChET01Eb2N1bWVudEZyYWdt
ZW50ICopY3JlYXRlRG9jdW1lbnRGcmFnbWVudFdpdGhUZXh0OihOU1N0cmluZyAqKXRleHQgV0VC
S0lUX0FWQUlMQUJMRV9NQUMoMTBfNSk7CiBAZW5kCisKKyNpZiBQTEFURk9STShJT1MpCitAaW50
ZXJmYWNlIERPTUhUTUxBcmVhRWxlbWVudCAoRE9NSFRNTEFyZWFFbGVtZW50RXh0ZW5zaW9ucykK
Ky0gKENHUmVjdClib3VuZGluZ0ZyYW1lRm9yT3duZXI6KERPTU5vZGUgKilhbk93bmVyOworQGVu
ZAorCitAaW50ZXJmYWNlIERPTUhUTUxTZWxlY3RFbGVtZW50IChET01IVE1MU2VsZWN0RWxlbWVu
dEV4dGVuc2lvbnMpCistIChET01Ob2RlICopbGlzdEl0ZW1BdEluZGV4OihpbnQpYW5JbmRleDsK
K0BlbmQKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvb2JqYy9E
T01IVE1MLm1tIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvb2JqYy9ET01IVE1MLm1tCmluZGV4
IGMzMzM1MTRiOWIyNmQzYTRmZTVhMjExZjZjMjEyNGQ2OTg3OGE1MDguLmJhNDExMjJiZDc3YTlh
YjFiYTVjZjgxMTE1MzQzYzJmYTM5OWIzYzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL29iamMvRE9NSFRNTC5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9vYmpj
L0RPTUhUTUwubW0KQEAgLTQ5LDYgKzQ5LDk5IEBACiAjaW1wb3J0ICJTZXR0aW5ncy5oIgogI2lt
cG9ydCAibWFya3VwLmgiCiAKKyNpZiBQTEFURk9STShJT1MpCisjaW1wb3J0ICJBdXRvY2FwaXRh
bGl6ZS5oIgorI2ltcG9ydCAiRE9NSFRNTEVsZW1lbnRJbnRlcm5hbC5oIgorI2ltcG9ydCAiSFRN
TFRleHRGb3JtQ29udHJvbEVsZW1lbnQuaCIKKyNpbXBvcnQgIkpTTWFpblRocmVhZEV4ZWNTdGF0
ZS5oIgorI2ltcG9ydCAiUmVuZGVyTGF5ZXIuaCIKKyNpbXBvcnQgIldBS1dpbmRvdy5oIgorI2lt
cG9ydCAiV2ViQ29yZVRocmVhZE1lc3NhZ2UuaCIKKyNlbmRpZgorCisjaWYgUExBVEZPUk0oSU9T
KQorCit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKKworQGltcGxlbWVudGF0aW9uIERPTUhUTUxF
bGVtZW50IChET01IVE1MRWxlbWVudEV4dGVuc2lvbnMpCisKKy0gKGludClzY3JvbGxYT2Zmc2V0
Cit7CisgICAgUmVuZGVyT2JqZWN0ICpyZW5kZXJlciA9IGNvcmUoc2VsZiktPnJlbmRlcmVyKCk7
CisgICAgaWYgKCFyZW5kZXJlcikKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICBpZiAoIXJlbmRl
cmVyLT5pc1JlbmRlckJsb2NrRmxvdygpKQorICAgICAgICByZW5kZXJlciA9IHJlbmRlcmVyLT5j
b250YWluaW5nQmxvY2soKTsKKworICAgIGlmICghcmVuZGVyZXItPmlzQm94KCkgfHwgIXJlbmRl
cmVyLT5oYXNPdmVyZmxvd0NsaXAoKSkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICBSZW5kZXJC
b3ggKnJlbmRlckJveCA9IHRvUmVuZGVyQm94KHJlbmRlcmVyKTsKKyAgICByZXR1cm4gcmVuZGVy
Qm94LT5sYXllcigpLT5zY3JvbGxYT2Zmc2V0KCk7Cit9CisKKy0gKGludClzY3JvbGxZT2Zmc2V0
Cit7CisgICAgUmVuZGVyT2JqZWN0ICpyZW5kZXJlciA9IGNvcmUoc2VsZiktPnJlbmRlcmVyKCk7
CisgICAgaWYgKCFyZW5kZXJlcikKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICBpZiAoIXJlbmRl
cmVyLT5pc1JlbmRlckJsb2NrRmxvdygpKQorICAgICAgICByZW5kZXJlciA9IHJlbmRlcmVyLT5j
b250YWluaW5nQmxvY2soKTsKKyAgICBpZiAoIXJlbmRlcmVyLT5pc0JveCgpIHx8ICFyZW5kZXJl
ci0+aGFzT3ZlcmZsb3dDbGlwKCkpCisgICAgICAgIHJldHVybiAwOworCisgICAgUmVuZGVyQm94
ICpyZW5kZXJCb3ggPSB0b1JlbmRlckJveChyZW5kZXJlcik7CisgICAgcmV0dXJuIHJlbmRlckJv
eC0+bGF5ZXIoKS0+c2Nyb2xsWU9mZnNldCgpOworfQorCistICh2b2lkKXNldFNjcm9sbFhPZmZz
ZXQ6KGludCl4IHNjcm9sbFlPZmZzZXQ6KGludCl5Cit7CisgICAgW3NlbGYgc2V0U2Nyb2xsWE9m
ZnNldDp4IHNjcm9sbFlPZmZzZXQ6eSBhZGp1c3RGb3JJT1NDYXJldDpOT107Cit9CisKKy0gKHZv
aWQpc2V0U2Nyb2xsWE9mZnNldDooaW50KXggc2Nyb2xsWU9mZnNldDooaW50KXkgYWRqdXN0Rm9y
SU9TQ2FyZXQ6KEJPT0wpYWRqdXN0Rm9ySU9TQ2FyZXQKK3sKKyAgICBSZW5kZXJPYmplY3QgKnJl
bmRlcmVyID0gY29yZShzZWxmKS0+cmVuZGVyZXIoKTsKKyAgICBpZiAoIXJlbmRlcmVyKQorICAg
ICAgICByZXR1cm47CisKKyAgICBpZiAoIXJlbmRlcmVyLT5pc1JlbmRlckJsb2NrRmxvdygpKQor
ICAgICAgICByZW5kZXJlciA9IHJlbmRlcmVyLT5jb250YWluaW5nQmxvY2soKTsKKyAgICBpZiAo
IXJlbmRlcmVyLT5oYXNPdmVyZmxvd0NsaXAoKSB8fCAhcmVuZGVyZXItPmlzQm94KCkpCisgICAg
ICAgIHJldHVybjsKKworICAgIFJlbmRlckJveCAqcmVuZGVyQm94ID0gdG9SZW5kZXJCb3gocmVu
ZGVyZXIpOworICAgIFJlbmRlckxheWVyICpsYXllciA9IHJlbmRlckJveC0+bGF5ZXIoKTsKKyAg
ICBpZiAoYWRqdXN0Rm9ySU9TQ2FyZXQpCisgICAgICAgIGxheWVyLT5zZXRBZGp1c3RGb3JJT1ND
YXJldFdoZW5TY3JvbGxpbmcodHJ1ZSk7CisgICAgbGF5ZXItPnNjcm9sbFRvT2Zmc2V0KEludFNp
emUoeCwgeSkpOworICAgIGlmIChhZGp1c3RGb3JJT1NDYXJldCkKKyAgICAgICAgbGF5ZXItPnNl
dEFkanVzdEZvcklPU0NhcmV0V2hlblNjcm9sbGluZyhmYWxzZSk7Cit9CisKKy0gKHZvaWQpYWJz
b2x1dGVQb3NpdGlvbjooaW50ICopeCA6KGludCAqKXkgOihpbnQgKil3IDooaW50ICopaCB7Cisg
ICAgUmVuZGVyQm94ICpyZW5kZXJlciA9IGNvcmUoc2VsZiktPnJlbmRlckJveCgpOworICAgIGlm
IChyZW5kZXJlcikgeworICAgICAgICBpZiAodykKKyAgICAgICAgICAgICp3ID0gcmVuZGVyZXIt
PndpZHRoKCk7CisgICAgICAgIGlmIChoKQorICAgICAgICAgICAgKmggPSByZW5kZXJlci0+d2lk
dGgoKTsKKyAgICAgICAgaWYgKHggJiYgeSkgeworICAgICAgICAgICAgRmxvYXRQb2ludCBmbG9h
dFBvaW50KCp4LCAqeSk7CisgICAgICAgICAgICByZW5kZXJlci0+bG9jYWxUb0Fic29sdXRlKGZs
b2F0UG9pbnQpOworICAgICAgICAgICAgSW50UG9pbnQgcG9pbnQgPSByb3VuZGVkSW50UG9pbnQo
ZmxvYXRQb2ludCk7CisgICAgICAgICAgICAqeCA9IHBvaW50LngoKTsKKyAgICAgICAgICAgICp5
ID0gcG9pbnQueSgpOworICAgICAgICB9CisgICAgfQorfQorCitAZW5kCisKKyNlbmRpZiAvLyBQ
TEFURk9STShJT1MpCisKIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAvLyBE
T01IVE1MRG9jdW1lbnQKIApAQCAtOTAsNiArMTgzLDcgQEAKICAgICByZXR1cm4gY29yZShzZWxm
KS0+aXNUZXh0RmllbGQoKTsKIH0KIAorI2lmICFQTEFURk9STShJT1MpCiAtIChOU1JlY3QpX3Jl
Y3RPblNjcmVlbgogewogICAgIC8vIFJldHVybnMgYm91bmRpbmcgcmVjdCBvZiB0ZXh0IGZpZWxk
LCBpbiBzY3JlZW4gY29vcmRpbmF0ZXMuCkBAIC0xMDUsNiArMTk5LDcgQEAKICNwcmFnbWEgY2xh
bmcgZGlhZ25vc3RpYyBwb3AKICAgICByZXR1cm4gcmVzdWx0OwogfQorI2VuZGlmCiAKIC0gKHZv
aWQpX3JlcGxhY2VDaGFyYWN0ZXJzSW5SYW5nZTooTlNSYW5nZSl0YXJnZXRSYW5nZSB3aXRoU3Ry
aW5nOihOU1N0cmluZyAqKXJlcGxhY2VtZW50U3RyaW5nIHNlbGVjdGluZ0Zyb21JbmRleDooaW50
KWluZGV4CiB7CkBAIC0xODEsNiArMjc2LDQ1IEBACiAKIEBlbmQKIAorI2lmIFBMQVRGT1JNKElP
UykKK0BpbXBsZW1lbnRhdGlvbiBET01IVE1MSW5wdXRFbGVtZW50IChBdXRvY2FwaXRhbGl6ZUFk
ZGl0aW9ucykKKworLSAoV2ViQXV0b2NhcGl0YWxpemVUeXBlKV9hdXRvY2FwaXRhbGl6ZVR5cGUK
K3sKKyAgICBXZWJDb3JlOjpIVE1MSW5wdXRFbGVtZW50KiBpbnB1dEVsZW1lbnQgPSBjb3JlKHNl
bGYpOworICAgIHJldHVybiBzdGF0aWNfY2FzdDxXZWJBdXRvY2FwaXRhbGl6ZVR5cGU+KGlucHV0
RWxlbWVudC0+YXV0b2NhcGl0YWxpemVUeXBlKCkpOworfQorCitAZW5kCisKK0BpbXBsZW1lbnRh
dGlvbiBET01IVE1MVGV4dEFyZWFFbGVtZW50IChBdXRvY2FwaXRhbGl6ZUFkZGl0aW9ucykKKwor
LSAoV2ViQXV0b2NhcGl0YWxpemVUeXBlKV9hdXRvY2FwaXRhbGl6ZVR5cGUKK3sKKyAgICBXZWJD
b3JlOjpIVE1MVGV4dEFyZWFFbGVtZW50KiB0ZXh0YXJlYUVsZW1lbnQgPSBjb3JlKHNlbGYpOwor
ICAgIHJldHVybiBzdGF0aWNfY2FzdDxXZWJBdXRvY2FwaXRhbGl6ZVR5cGU+KHRleHRhcmVhRWxl
bWVudC0+YXV0b2NhcGl0YWxpemVUeXBlKCkpOworfQorCitAZW5kCisKK0BpbXBsZW1lbnRhdGlv
biBET01IVE1MSW5wdXRFbGVtZW50IChXZWJJbnB1dENoYW5nZUV2ZW50QWRkaXRpb25zKQorCist
ICh2b2lkKXNldFZhbHVlV2l0aENoYW5nZUV2ZW50OihOU1N0cmluZyAqKW5ld1ZhbHVlCit7Cisg
ICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOworICAgIGNvcmUoc2VsZikt
PnNldFZhbHVlKG5ld1ZhbHVlLCBEaXNwYXRjaElucHV0QW5kQ2hhbmdlRXZlbnQpOworfQorCist
ICh2b2lkKXNldFZhbHVlQXNOdW1iZXJXaXRoQ2hhbmdlRXZlbnQ6KGRvdWJsZSluZXdWYWx1ZUFz
TnVtYmVyCit7CisgICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOworICAg
IFdlYkNvcmU6OkV4Y2VwdGlvbkNvZGUgZWMgPSAwOworICAgIGNvcmUoc2VsZiktPnNldFZhbHVl
QXNOdW1iZXIobmV3VmFsdWVBc051bWJlciwgZWMsIERpc3BhdGNoSW5wdXRBbmRDaGFuZ2VFdmVu
dCk7Cit9CisKK0BlbmQKKyNlbmRpZgorCiBDbGFzcyBraXRDbGFzcyhXZWJDb3JlOjpIVE1MQ29s
bGVjdGlvbiogY29sbGVjdGlvbikKIHsKICAgICBpZiAoY29sbGVjdGlvbi0+dHlwZSgpID09IFdl
YkNvcmU6OlNlbGVjdE9wdGlvbnMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9vYmpjL0RPTUludGVybmFsLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9vYmpjL0RPTUlu
dGVybmFsLmgKaW5kZXggZDIyYjMxODkzNWEzOWFkMjRmOTU1MTdjNzkyY2YyZDM2ZTUxNDI2Yi4u
MTBjNDhlMTk5OTdhOWQxMjc5Zjc5NjIzM2UyNzU0MzJiZGVkNDU0NyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvb2JqYy9ET01JbnRlcm5hbC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL29iamMvRE9NSW50ZXJuYWwuaApAQCAtNDUsNiArNDUsOSBAQCBuYW1lc3Bh
Y2UgSlNDIHsKIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICBjbGFzcyBOb2RlRmlsdGVyOwogICAg
IGNsYXNzIFhQYXRoTlNSZXNvbHZlcjsKKyNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQorICAgIGNs
YXNzIFRvdWNoOworI2VuZGlmCiB9CiAKIEBpbnRlcmZhY2UgRE9NTm9kZUZpbHRlciA6IERPTU9i
amVjdCA8RE9NTm9kZUZpbHRlcj4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L29iamMvRE9NSW50ZXJuYWwubW0gYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9vYmpjL0RPTUlu
dGVybmFsLm1tCmluZGV4IDM0MTA0YjljOTJjOTk2Y2EwNjhlNWEyYjAwZGNiNDY2YzVkMjhkNWQu
LjgxMzI2OThmMTQ0YjcyNDhjZmE5NDMxODJmN2QzMDBlMmQ1NzA5ZGIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL29iamMvRE9NSW50ZXJuYWwubW0KKysrIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvb2JqYy9ET01JbnRlcm5hbC5tbQpAQCAtMzMsMTAgKzMzLDIyIEBACiAj
aW1wb3J0ICJXZWJTY3JpcHRPYmplY3RQcml2YXRlLmgiCiAjaW1wb3J0ICJydW50aW1lX3Jvb3Qu
aCIKIAorI2lmIFBMQVRGT1JNKElPUykKKyNkZWZpbmUgTkVFRFNfV1JBUFBFUl9DQUNIRV9MT0NL
IDEKKyNlbmRpZgorCiAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogLy8gV3Jh
cHBpbmcgV2ViQ29yZSBpbXBsZW1lbnRhdGlvbiBvYmplY3RzCiAKIHN0YXRpYyBOU01hcFRhYmxl
KiBET01XcmFwcGVyQ2FjaGU7CisgICAgCisjaWZkZWYgTkVFRFNfV1JBUFBFUl9DQUNIRV9MT0NL
CitzdGF0aWMgTXV0ZXgmIHdyYXBwZXJDYWNoZUxvY2soKQoreworICAgIERFRklORV9TVEFUSUNf
TE9DQUwoTXV0ZXgsIHdyYXBwZXJDYWNoZU11dGV4LCAoKSk7CisgICAgcmV0dXJuIHdyYXBwZXJD
YWNoZU11dGV4OworfQorI2VuZGlmCiAKICNpZiBDT01QSUxFUihDTEFORykKICNwcmFnbWEgY2xh
bmcgZGlhZ25vc3RpYyBwdXNoCkBAIC01Nyw2ICs2OSw5IEBAIE5TTWFwVGFibGUqIGNyZWF0ZVdy
YXBwZXJDYWNoZSgpCiAKIE5TT2JqZWN0KiBnZXRET01XcmFwcGVyKERPTU9iamVjdEludGVybmFs
KiBpbXBsKQogeworI2lmZGVmIE5FRURTX1dSQVBQRVJfQ0FDSEVfTE9DSworICAgIE11dGV4TG9j
a2VyIGxvY2tlcih3cmFwcGVyQ2FjaGVMb2NrKCkpOworI2VuZGlmCiAgICAgaWYgKCFET01XcmFw
cGVyQ2FjaGUpCiAgICAgICAgIHJldHVybiBuaWw7CiAgICAgcmV0dXJuIHN0YXRpY19jYXN0PE5T
T2JqZWN0Kj4oTlNNYXBHZXQoRE9NV3JhcHBlckNhY2hlLCBpbXBsKSk7CkBAIC02NCw2ICs3OSw5
IEBAIE5TT2JqZWN0KiBnZXRET01XcmFwcGVyKERPTU9iamVjdEludGVybmFsKiBpbXBsKQogCiB2
b2lkIGFkZERPTVdyYXBwZXIoTlNPYmplY3QqIHdyYXBwZXIsIERPTU9iamVjdEludGVybmFsKiBp
bXBsKQogeworI2lmZGVmIE5FRURTX1dSQVBQRVJfQ0FDSEVfTE9DSworICAgIE11dGV4TG9ja2Vy
IGxvY2tlcih3cmFwcGVyQ2FjaGVMb2NrKCkpOworI2VuZGlmCiAgICAgaWYgKCFET01XcmFwcGVy
Q2FjaGUpCiAgICAgICAgIERPTVdyYXBwZXJDYWNoZSA9IGNyZWF0ZVdyYXBwZXJDYWNoZSgpOwog
ICAgIE5TTWFwSW5zZXJ0KERPTVdyYXBwZXJDYWNoZSwgaW1wbCwgd3JhcHBlcik7CkBAIC03MSw2
ICs4OSw5IEBAIHZvaWQgYWRkRE9NV3JhcHBlcihOU09iamVjdCogd3JhcHBlciwgRE9NT2JqZWN0
SW50ZXJuYWwqIGltcGwpCiAKIHZvaWQgcmVtb3ZlRE9NV3JhcHBlcihET01PYmplY3RJbnRlcm5h
bCogaW1wbCkKIHsKKyNpZmRlZiBORUVEU19XUkFQUEVSX0NBQ0hFX0xPQ0sKKyAgICBNdXRleExv
Y2tlciBsb2NrZXIod3JhcHBlckNhY2hlTG9jaygpKTsKKyNlbmRpZgogICAgIGlmICghRE9NV3Jh
cHBlckNhY2hlKQogICAgICAgICByZXR1cm47CiAgICAgTlNNYXBSZW1vdmUoRE9NV3JhcHBlckNh
Y2hlLCBpbXBsKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL29iamMvRE9N
UHJpdmF0ZS5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvb2JqYy9ET01Qcml2YXRlLmgKaW5k
ZXggNDRhOGJkNmU4MGI0YWFmYzljNWIwZGZhMDZlMWM0MGMwYzc4ZDQ0ZS4uZTNmNGNlZWNhYTE4
NjI5ODRjNzNlNWEzZGY3MGFiODE4OTI3MjI4NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvb2JqYy9ET01Qcml2YXRlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
b2JqYy9ET01Qcml2YXRlLmgKQEAgLTI2LDggKzI2LDE1IEBACiAKICNpbXBvcnQgPFdlYkNvcmUv
RE9NLmg+CiAKKyNpZiBQTEFURk9STShJT1MpCisjaW1wb3J0IDxXZWJDb3JlL1dlYkF1dG9jYXBp
dGFsaXplLmg+CisjaW1wb3J0IDxDb3JlVGV4dC9Db3JlVGV4dC5oPgorI2VuZGlmCisKIEBpbnRl
cmZhY2UgRE9NTm9kZSAoRE9NTm9kZUV4dGVuc2lvbnNQZW5kaW5nUHVibGljKQorI2lmICFQTEFU
Rk9STShJT1MpCiAtIChOU0ltYWdlICopcmVuZGVyZWRJbWFnZTsKKyNlbmRpZgogLSAoTlNBcnJh
eSAqKXRleHRSZWN0czsKIEBlbmQKIApAQCAtMzgsNyArNDUsOSBAQAogLy8gRklYTUU6IHRoaXMg
c2hvdWxkIGJlIHJlbW92ZWQgYXMgc29vbiBhcyBhbGwgaW50ZXJuYWwgQXBwbGUgdXNlcyBvZiBp
dCBoYXZlIGJlZW4gcmVwbGFjZWQgd2l0aAogLy8gY2FsbHMgdG8gdGhlIHB1YmxpYyBtZXRob2Qg
LSAoTlNDb2xvciAqKWNvbG9yLgogQGludGVyZmFjZSBET01SR0JDb2xvciAoV2ViUHJpdmF0ZSkK
KyNpZiAhUExBVEZPUk0oSU9TKQogLSAoTlNDb2xvciAqKV9jb2xvcjsKKyNlbmRpZgogQGVuZAog
CiAvLyBGSVhNRTogdGhpcyBzaG91bGQgYmUgcmVtb3ZlZCBhcyBzb29uIGFzIGFsbCBpbnRlcm5h
bCBBcHBsZSB1c2VzIG9mIGl0IGhhdmUgYmVlbiByZXBsYWNlZCB3aXRoCkBAIC00OCwxNSArNTcs
MjcgQEAKIEBlbmQKIAogQGludGVyZmFjZSBET01SYW5nZSAoRE9NUmFuZ2VFeHRlbnNpb25zKQor
I2lmIFBMQVRGT1JNKElPUykKKy0gKENHUmVjdClib3VuZGluZ0JveDsKKyNlbHNlCiAtIChOU1Jl
Y3QpYm91bmRpbmdCb3g7CisjZW5kaWYKKyNpZiAhUExBVEZPUk0oSU9TKQogLSAoTlNJbWFnZSAq
KXJlbmRlcmVkSW1hZ2VGb3JjaW5nQmxhY2tUZXh0OihCT09MKWZvcmNlQmxhY2tUZXh0OworI2Vs
c2UKKy0gKENHSW1hZ2VSZWYpcmVuZGVyZWRJbWFnZUZvcmNpbmdCbGFja1RleHQ6KEJPT0wpZm9y
Y2VCbGFja1RleHQ7CisjZW5kaWYKIC0gKE5TQXJyYXkgKilsaW5lQm94UmVjdHM7IC8vIERlcHJl
Y2F0ZWQuIFVzZSB0ZXh0UmVjdHMgaW5zdGVhZC4KIC0gKE5TQXJyYXkgKil0ZXh0UmVjdHM7CiBA
ZW5kCiAKIEBpbnRlcmZhY2UgRE9NRWxlbWVudCAoV2ViUHJpdmF0ZSkKKyNpZiAhUExBVEZPUk0o
SU9TKQogLSAoTlNGb250ICopX2ZvbnQ7CiAtIChOU0RhdGEgKilfaW1hZ2VUSUZGUmVwcmVzZW50
YXRpb247CisjZWxzZQorLSAoQ1RGb250UmVmKV9mb250OworI2VuZGlmCiAtIChOU1VSTCAqKV9n
ZXRVUkxBdHRyaWJ1dGU6KE5TU3RyaW5nICopbmFtZTsKIC0gKEJPT0wpaXNGb2N1c2VkOwogQGVu
ZApAQCAtODEsNyArMTAyLDkgQEAKIEBpbnRlcmZhY2UgRE9NSFRNTElucHV0RWxlbWVudCAoRm9y
bUF1dG9GaWxsVHJhbnNpdGlvbikKIC0gKEJPT0wpX2lzQXV0b2ZpbGxlZDsKIC0gKEJPT0wpX2lz
VGV4dEZpZWxkOworI2lmICFQTEFURk9STShJT1MpCiAtIChOU1JlY3QpX3JlY3RPblNjcmVlbjsg
Ly8gYm91bmRpbmcgYm94IG9mIHRoZSB0ZXh0IGZpZWxkLCBpbiBzY3JlZW4gY29vcmRpbmF0ZXMK
KyNlbmRpZgogLSAodm9pZClfcmVwbGFjZUNoYXJhY3RlcnNJblJhbmdlOihOU1JhbmdlKXRhcmdl
dFJhbmdlIHdpdGhTdHJpbmc6KE5TU3RyaW5nICopcmVwbGFjZW1lbnRTdHJpbmcgc2VsZWN0aW5n
RnJvbUluZGV4OihpbnQpaW5kZXg7CiAtIChOU1JhbmdlKV9zZWxlY3RlZFJhbmdlOwogLSAodm9p
ZClfc2V0QXV0b2ZpbGxlZDooQk9PTClmaWxsZWQ7CkBAIC0xMDUsMyArMTI4LDI2IEBACiAtICh2
b2lkKV9hY3RpdmF0ZUl0ZW1BdEluZGV4OihpbnQpaW5kZXg7CiAtICh2b2lkKV9hY3RpdmF0ZUl0
ZW1BdEluZGV4OihpbnQpaW5kZXggYWxsb3dNdWx0aXBsZVNlbGVjdGlvbjooQk9PTClhbGxvd011
bHRpcGxlU2VsZWN0aW9uOwogQGVuZAorCisjaWYgUExBVEZPUk0oSU9TKQorZW51bSB7IFdlYk1l
ZGlhUXVlcnlPcmllbnRhdGlvbkN1cnJlbnQsIFdlYk1lZGlhUXVlcnlPcmllbnRhdGlvblBvcnRy
YWl0LCBXZWJNZWRpYVF1ZXJ5T3JpZW50YXRpb25MYW5kc2NhcGUgfTsKK0BpbnRlcmZhY2UgRE9N
SFRNTExpbmtFbGVtZW50IChXZWJQcml2YXRlKQorLSAoQk9PTClfbWVkaWFRdWVyeU1hdGNoZXNG
b3JPcmllbnRhdGlvbjooaW50KW9yaWVudGF0aW9uOworLSAoQk9PTClfbWVkaWFRdWVyeU1hdGNo
ZXM7CitAZW5kCisKKy8vIFRoZXNlIGNoYW5nZXMgYXJlIHVzZWZ1bCB0byBnZXQgdGhlIEF1dG9j
YXBpdGFsaXplVHlwZSBvbiBwYXJ0aWN1bGFyIGZvcm0gY29udHJvbHMuCitAaW50ZXJmYWNlIERP
TUhUTUxJbnB1dEVsZW1lbnQgKEF1dG9jYXBpdGFsaXplQWRkaXRpb25zKQorLSAoV2ViQXV0b2Nh
cGl0YWxpemVUeXBlKV9hdXRvY2FwaXRhbGl6ZVR5cGU7CitAZW5kCisKK0BpbnRlcmZhY2UgRE9N
SFRNTFRleHRBcmVhRWxlbWVudCAoQXV0b2NhcGl0YWxpemVBZGRpdGlvbnMpCistIChXZWJBdXRv
Y2FwaXRhbGl6ZVR5cGUpX2F1dG9jYXBpdGFsaXplVHlwZTsKK0BlbmQKKworLy8gVGhlc2UgYXJl
IHVzZWQgYnkgRGF0ZSBhbmQgVGltZSBpbnB1dCB0eXBlcyBiZWNhdXNlIHRoZSBnZW5lcmF0ZWQg
T2JqQyBtZXRob2RzIGRlZmF1bHQgdG8gbm90IGRpc3BhdGNoaW5nIGV2ZW50cy4KK0BpbnRlcmZh
Y2UgRE9NSFRNTElucHV0RWxlbWVudCAoV2ViSW5wdXRDaGFuZ2VFdmVudEFkZGl0aW9ucykKKy0g
KHZvaWQpc2V0VmFsdWVXaXRoQ2hhbmdlRXZlbnQ6KE5TU3RyaW5nICopbmV3VmFsdWU7CistICh2
b2lkKXNldFZhbHVlQXNOdW1iZXJXaXRoQ2hhbmdlRXZlbnQ6KGRvdWJsZSluZXdWYWx1ZUFzTnVt
YmVyOworQGVuZAorI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9v
YmpjL0RPTVVJS2l0RXh0ZW5zaW9ucy5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvb2JqYy9E
T01VSUtpdEV4dGVuc2lvbnMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lMDViZDJmYWRiYjVkYTNlMWYwZDZjMmMx
MjU4MzY3NmZkODM2MDViCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvb2JqYy9ET01VSUtpdEV4dGVuc2lvbnMuaApAQCAtMCwwICsxLDg5IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDA3LCAyMDA4IEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFLCBJTkMuIGBg
QVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IK
KyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKgorICovCisK
KyNpZiBQTEFURk9STShJT1MpCisKKyNpbXBvcnQgPFdlYkNvcmUvRE9NRWxlbWVudC5oPgorI2lt
cG9ydCA8V2ViQ29yZS9ET01FeHRlbnNpb25zLmg+CisjaW1wb3J0IDxXZWJDb3JlL0RPTUhUTUxB
cmVhRWxlbWVudC5oPgorI2ltcG9ydCA8V2ViQ29yZS9ET01IVE1MSW1hZ2VFbGVtZW50Lmg+Cisj
aW1wb3J0IDxXZWJDb3JlL0RPTUhUTUxTZWxlY3RFbGVtZW50Lmg+CisjaW1wb3J0IDxXZWJDb3Jl
L0RPTU5vZGUuaD4KKyNpbXBvcnQgPFdlYkNvcmUvRE9NUmFuZ2UuaD4KKwordHlwZWRlZiBlbnVt
IHsgCisgICAgLy8gVGhlIGZpcnN0IGZvdXIgbWF0Y2ggU2VsZWN0aW9uRGlyZWN0aW9uLiAgVGhl
IGxhc3QgdHdvIGRvbid0IGhhdmUgV2ViS2l0IGNvdW50ZXJwYXJ0cyBiZWNhdXNlCisgICAgLy8g
dGhleSBhcmVuJ3QgbmVjZXNzYXJ5IHVudGlsIHRoZXJlIGlzIHN1cHBvcnQgdmVydGljYWwgbGF5
b3V0LgorICAgIFdlYlRleHRBZGp1c3RtZW50Rm9yd2FyZCwKKyAgICBXZWJUZXh0QWRqdXN0bWVu
dEJhY2t3YXJkLAorICAgIFdlYlRleHRBZGp1c3RtZW50UmlnaHQsCisgICAgV2ViVGV4dEFkanVz
dG1lbnRMZWZ0LAorICAgIFdlYlRleHRBZGp1c3RtZW50VXAsCisgICAgV2ViVGV4dEFkanVzdG1l
bnREb3duCit9IFdlYlRleHRBZGp1c3RtZW50RGlyZWN0aW9uOyAKKworQGludGVyZmFjZSBET01S
YW5nZSAoVUlLaXRFeHRlbnNpb25zKQorCistICh2b2lkKW1vdmU6KFVJbnQzMilhbW91bnQgaW5E
aXJlY3Rpb246KFdlYlRleHRBZGp1c3RtZW50RGlyZWN0aW9uKWRpcmVjdGlvbjsKKy0gKHZvaWQp
ZXh0ZW5kOihVSW50MzIpYW1vdW50IGluRGlyZWN0aW9uOihXZWJUZXh0QWRqdXN0bWVudERpcmVj
dGlvbilkaXJlY3Rpb247CistIChET01Ob2RlICopZmlyc3ROb2RlOworCitAZW5kCisKK0BpbnRl
cmZhY2UgRE9NTm9kZSAoVUlLaXRFeHRlbnNpb25zKQorLSAoTlNBcnJheSAqKWJvcmRlclJhZGlp
OworLSAoTlNBcnJheSAqKWJvdW5kaW5nQm94ZXM7CistIChOU0FycmF5ICopYWJzb2x1dGVRdWFk
czsgICAgIC8vIHJldHVybiBhcnJheSBvZiBXS1F1YWRPYmplY3RzLiB0YWtlcyB0cmFuc2Zvcm1z
IGludG8gYWNjb3VudAorCistIChCT09MKWNvbnRhaW5zT25seUlubGluZU9iamVjdHM7CistIChC
T09MKWlzU2VsZWN0YWJsZUJsb2NrOworLSAoRE9NUmFuZ2UgKilyYW5nZU9mQ29udGFpbmluZ1Bh
cmFncmFwaDsKKy0gKENHRmxvYXQpdGV4dEhlaWdodDsKKy0gKERPTU5vZGUgKilmaW5kRXhwbG9k
ZWRUZXh0Tm9kZUF0UG9pbnQ6KENHUG9pbnQpcG9pbnQ7ICAvLyBBIHNlY29uZC1jaGFuY2UgcGFz
cyB0byBsb29rIGZvciB0ZXh0IG5vZGVzIG1pc3NlZCBieSB0aGUgaGl0IHRlc3QuCitAZW5kCisK
K0BpbnRlcmZhY2UgRE9NSFRNTEFyZWFFbGVtZW50IChVSUtpdEV4dGVuc2lvbnMpCistIChDR1Jl
Y3QpYm91bmRpbmdCb3hXaXRoT3duZXI6KERPTU5vZGUgKilhbk93bmVyOworLSAoV0tRdWFkKWFi
c29sdXRlUXVhZFdpdGhPd25lcjooRE9NTm9kZSAqKWFuT3duZXI7ICAgICAvLyB0YWtlcyB0cmFu
c2Zvcm1zIGludG8gYWNjb3VudAorLSAoTlNBcnJheSAqKWJvdW5kaW5nQm94ZXNXaXRoT3duZXI6
KERPTU5vZGUgKilhbk93bmVyOworLSAoTlNBcnJheSAqKWFic29sdXRlUXVhZHNXaXRoT3duZXI6
KERPTU5vZGUgKilhbk93bmVyOyAvLyByZXR1cm4gYXJyYXkgb2YgV0tRdWFkT2JqZWN0cy4gdGFr
ZXMgdHJhbnNmb3JtcyBpbnRvIGFjY291bnQKK0BlbmQKKworQGludGVyZmFjZSBET01IVE1MU2Vs
ZWN0RWxlbWVudCAoVUlLaXRFeHRlbnNpb25zKQorLSAodW5zaWduZWQpY29tcGxldGVMZW5ndGg7
CistIChET01Ob2RlICopbGlzdEl0ZW1BdEluZGV4OihpbnQpYW5JbmRleDsKK0BlbmQKKworQGlu
dGVyZmFjZSBET01IVE1MSW1hZ2VFbGVtZW50IChXZWJET01IVE1MSW1hZ2VFbGVtZW50T3BlcmF0
aW9uc1ByaXZhdGUpCistIChOU0RhdGEgKilkYXRhUmVwcmVzZW50YXRpb246KEJPT0wpcmF3SW1h
Z2VEYXRhOworLSAoTlNTdHJpbmcgKiltaW1lVHlwZTsKK0BlbmQKKworQGludGVyZmFjZSBET01F
bGVtZW50IChET01VSUtpdENvbXBsZXhpdHlFeHRlbnNpb25zKSAKKy0gKGludClzdHJ1Y3R1cmFs
Q29tcGxleGl0eUNvbnRyaWJ1dGlvbjsgLy8gRG9lcyBub3QgaW5jbHVkZSBjaGlsZHJlbi4KK0Bl
bmQKKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9vYmpjL0RP
TVVJS2l0RXh0ZW5zaW9ucy5tbSBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL29iamMvRE9NVUlL
aXRFeHRlbnNpb25zLm1tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjBjZTBiYzQ4NDViZmFmYWJlZTA3NDQ4YzNiYTNm
ZmQ4ZGY5YTQxY2QKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9v
YmpjL0RPTVVJS2l0RXh0ZW5zaW9ucy5tbQpAQCAtMCwwICsxLDUwNyBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAwNywgMjAwOCwgMjAwOSwgMjAxMyBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVS
LCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgor
ICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAor
ICoKKyAqLworCisjaWYgUExBVEZPUk0oSU9TKQorCisjaW1wb3J0ICJjb25maWcuaCIKKyNpbXBv
cnQgImh0bWxlZGl0aW5nLmgiCisKKyNpbXBvcnQgIkNhY2hlZEltYWdlLmgiCisjaW1wb3J0ICJE
T00uaCIKKyNpbXBvcnQgIkRPTUNvcmUuaCIKKyNpbXBvcnQgIkRPTUV4dGVuc2lvbnMuaCIKKyNp
bXBvcnQgIkRPTUhUTUwuaCIKKyNpbXBvcnQgIkRPTUhUTUxBcmVhRWxlbWVudEludGVybmFsLmgi
CisjaW1wb3J0ICJET01IVE1MRWxlbWVudEludGVybmFsLmgiCisjaW1wb3J0ICJET01IVE1MSW1h
Z2VFbGVtZW50SW50ZXJuYWwuaCIKKyNpbXBvcnQgIkRPTUhUTUxTZWxlY3RFbGVtZW50SW50ZXJu
YWwuaCIKKyNpbXBvcnQgIkRPTUludGVybmFsLmgiCisjaW1wb3J0ICJET01Ob2RlSW50ZXJuYWwu
aCIKKyNpbXBvcnQgIkRPTVJhbmdlSW50ZXJuYWwuaCIKKyNpbXBvcnQgIkRPTVVJS2l0RXh0ZW5z
aW9ucy5oIgorI2ltcG9ydCAiRmxvYXRQb2ludC5oIgorI2ltcG9ydCAiRm9udC5oIgorI2ltcG9y
dCAiRnJhbWVTZWxlY3Rpb24uaCIKKyNpbXBvcnQgIkhUTUxBcmVhRWxlbWVudC5oIgorI2ltcG9y
dCAiSFRNTEltYWdlRWxlbWVudC5oIgorI2ltcG9ydCAiSFRNTElucHV0RWxlbWVudC5oIgorI2lt
cG9ydCAiSFRNTFNlbGVjdEVsZW1lbnQuaCIKKyNpbXBvcnQgIkhUTUxUZXh0QXJlYUVsZW1lbnQu
aCIKKyNpbXBvcnQgIkltYWdlLmgiCisjaW1wb3J0ICJJbmxpbmVCb3guaCIKKyNpbXBvcnQgIk5v
ZGUuaCIKKyNpbXBvcnQgIlJhbmdlLmgiCisjaW1wb3J0ICJSZW5kZXJCbG9jay5oIgorI2ltcG9y
dCAiUmVuZGVyQmxvY2tGbG93LmgiCisjaW1wb3J0ICJSZW5kZXJCb3guaCIKKyNpbXBvcnQgIlJv
dW5kZWRSZWN0LmgiCisjaW1wb3J0ICJSZW5kZXJPYmplY3QuaCIKKyNpbXBvcnQgIlJlbmRlclN0
eWxlQ29uc3RhbnRzLmgiCisjaW1wb3J0ICJSZW5kZXJUZXh0LmgiCisjaW1wb3J0ICJSZXNvdXJj
ZUJ1ZmZlci5oIgorI2ltcG9ydCAiU2hhcmVkQnVmZmVyLmgiCisjaW1wb3J0ICJUZXh0SXRlcmF0
b3IuaCIKKyNpbXBvcnQgIlZpc2libGVQb3NpdGlvbi5oIgorI2ltcG9ydCAiVmlzaWJsZVVuaXRz
LmgiCisKKyNpbXBvcnQgIldBS0FwcEtpdFN0dWJzLmgiCisKK3VzaW5nIG5hbWVzcGFjZSBXZWJD
b3JlOworCit1c2luZyBXZWJDb3JlOjpGbG9hdFBvaW50OwordXNpbmcgV2ViQ29yZTo6Rm9udDsK
K3VzaW5nIFdlYkNvcmU6OkhUTUxBcmVhRWxlbWVudDsKK3VzaW5nIFdlYkNvcmU6OkhUTUxJbWFn
ZUVsZW1lbnQ7Cit1c2luZyBXZWJDb3JlOjpIVE1MU2VsZWN0RWxlbWVudDsKK3VzaW5nIFdlYkNv
cmU6OklubGluZUJveDsKK3VzaW5nIFdlYkNvcmU6OkludFJlY3Q7Cit1c2luZyBXZWJDb3JlOjpO
b2RlOwordXNpbmcgV2ViQ29yZTo6UG9zaXRpb247Cit1c2luZyBXZWJDb3JlOjpSYW5nZTsKK3Vz
aW5nIFdlYkNvcmU6OlJlbmRlckJsb2NrOwordXNpbmcgV2ViQ29yZTo6UmVuZGVyQm94OwordXNp
bmcgV2ViQ29yZTo6UmVuZGVyT2JqZWN0OwordXNpbmcgV2ViQ29yZTo6UmVuZGVyU3R5bGU7Cit1
c2luZyBXZWJDb3JlOjpSZW5kZXJUZXh0OwordXNpbmcgV2ViQ29yZTo6Um9vdElubGluZUJveDsK
K3VzaW5nIFdlYkNvcmU6OlRleHRJdGVyYXRvcjsKK3VzaW5nIFdlYkNvcmU6OlZpc2libGVQb3Np
dGlvbjsKKworQGltcGxlbWVudGF0aW9uIERPTVJhbmdlIChVSUtpdEV4dGVuc2lvbnMpCisKKy0g
KHZvaWQpbW92ZTooVUludDMyKWFtb3VudCBpbkRpcmVjdGlvbjooV2ViVGV4dEFkanVzdG1lbnRE
aXJlY3Rpb24pZGlyZWN0aW9uCit7CisgICAgUmFuZ2UgKnJhbmdlID0gY29yZShzZWxmKTsKKyAg
ICBGcmFtZVNlbGVjdGlvbiBmcmFtZVNlbGVjdGlvbjsKKyAgICBmcmFtZVNlbGVjdGlvbi5tb3Zl
VG8ocmFuZ2UsIERPV05TVFJFQU0pOworICAgIAorICAgIFRleHRHcmFudWxhcml0eSBncmFudWxh
cml0eSA9IENoYXJhY3RlckdyYW51bGFyaXR5OworICAgIC8vIFVudGlsIFdlYktpdCBzdXBwb3J0
cyB2ZXJ0aWNhbCBsYXlvdXQsICJkb3duIiBpcyBlcXVpdmFsZW50IHRvICJmb3J3YXJkIGJ5IGEg
bGluZSIgYW5kCisgICAgLy8gInVwIiBpcyBlcXVpdmFsZW50IHRvICJiYWNrd2FyZCBieSBhIGxp
bmUiLgorICAgIGlmIChkaXJlY3Rpb24gPT0gV2ViVGV4dEFkanVzdG1lbnREb3duKSB7CisgICAg
ICAgIGRpcmVjdGlvbiA9IFdlYlRleHRBZGp1c3RtZW50Rm9yd2FyZDsKKyAgICAgICAgZ3JhbnVs
YXJpdHkgPSBMaW5lR3JhbnVsYXJpdHk7CisgICAgfSBlbHNlIGlmIChkaXJlY3Rpb24gPT0gV2Vi
VGV4dEFkanVzdG1lbnRVcCkgeworICAgICAgICBkaXJlY3Rpb24gPSBXZWJUZXh0QWRqdXN0bWVu
dEJhY2t3YXJkOworICAgICAgICBncmFudWxhcml0eSA9IExpbmVHcmFudWxhcml0eTsKKyAgICB9
CisgICAgCisgICAgZm9yIChVSW50MzIgaSA9IDA7IGkgPCBhbW91bnQ7IGkrKykKKyAgICAgICAg
ZnJhbWVTZWxlY3Rpb24ubW9kaWZ5KEZyYW1lU2VsZWN0aW9uOjpBbHRlcmF0aW9uTW92ZSwgKFNl
bGVjdGlvbkRpcmVjdGlvbilkaXJlY3Rpb24sIGdyYW51bGFyaXR5KTsKKyAgICAKKyAgICBFeGNl
cHRpb25Db2RlIGlnbm9yZWQ7CisgICAgcmFuZ2UtPnNldFN0YXJ0KGZyYW1lU2VsZWN0aW9uLnN0
YXJ0KCkuYW5jaG9yTm9kZSgpLCBmcmFtZVNlbGVjdGlvbi5zdGFydCgpLmRlcHJlY2F0ZWRFZGl0
aW5nT2Zmc2V0KCksIGlnbm9yZWQpOworICAgIHJhbmdlLT5zZXRFbmQoZnJhbWVTZWxlY3Rpb24u
ZW5kKCkuYW5jaG9yTm9kZSgpLCBmcmFtZVNlbGVjdGlvbi5lbmQoKS5kZXByZWNhdGVkRWRpdGlu
Z09mZnNldCgpLCBpZ25vcmVkKTsKK30KKworLSAodm9pZClleHRlbmQ6KFVJbnQzMilhbW91bnQg
aW5EaXJlY3Rpb246KFdlYlRleHRBZGp1c3RtZW50RGlyZWN0aW9uKWRpcmVjdGlvbgoreworICAg
IFJhbmdlICpyYW5nZSA9IGNvcmUoc2VsZik7CisgICAgRnJhbWVTZWxlY3Rpb24gZnJhbWVTZWxl
Y3Rpb247CisgICAgZnJhbWVTZWxlY3Rpb24ubW92ZVRvKHJhbmdlLCBET1dOU1RSRUFNKTsKKyAg
ICAKKyAgICBmb3IgKFVJbnQzMiBpID0gMDsgaSA8IGFtb3VudDsgaSsrKQorICAgICAgICBmcmFt
ZVNlbGVjdGlvbi5tb2RpZnkoRnJhbWVTZWxlY3Rpb246OkFsdGVyYXRpb25FeHRlbmQsIChTZWxl
Y3Rpb25EaXJlY3Rpb24pZGlyZWN0aW9uLCBDaGFyYWN0ZXJHcmFudWxhcml0eSk7ICAgIAorICAg
IAorICAgIEV4Y2VwdGlvbkNvZGUgaWdub3JlZDsKKyAgICByYW5nZS0+c2V0U3RhcnQoZnJhbWVT
ZWxlY3Rpb24uc3RhcnQoKS5hbmNob3JOb2RlKCksIGZyYW1lU2VsZWN0aW9uLnN0YXJ0KCkuZGVw
cmVjYXRlZEVkaXRpbmdPZmZzZXQoKSwgaWdub3JlZCk7CisgICAgcmFuZ2UtPnNldEVuZChmcmFt
ZVNlbGVjdGlvbi5lbmQoKS5hbmNob3JOb2RlKCksIGZyYW1lU2VsZWN0aW9uLmVuZCgpLmRlcHJl
Y2F0ZWRFZGl0aW5nT2Zmc2V0KCksIGlnbm9yZWQpOyAgICAKK30KKworLSAoRE9NTm9kZSAqKWZp
cnN0Tm9kZQoreworICAgIHJldHVybiBraXQoY29yZShzZWxmKS0+Zmlyc3ROb2RlKCkpOworfQor
CitAZW5kCisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLQorCitAaW1wbGVtZW50YXRpb24gRE9NTm9k
ZSAoVUlLaXRFeHRlbnNpb25zKQorCisvLyBOT1RFOiBDb2RlIGJsYXRhbnRseSBjb3BpZWQgZnJv
bSBbV2ViSW5zcGVjdG9yIF9oaWdodE5vZGU6XSBpbiBXZWJLaXQvV2ViSW5zcGVjdG9yL1dlYklu
c3BlY3Rvci5tQDE5ODYxCistIChOU0FycmF5ICopYm91bmRpbmdCb3hlcworeworICAgIE5TQXJy
YXkgKnJlY3RzID0gbmlsOworICAgIE5TUmVjdCBib3VuZHMgPSBbc2VsZiBib3VuZGluZ0JveF07
CisgICAgaWYgKCFOU0lzRW1wdHlSZWN0KGJvdW5kcykpIHsKKyAgICAgICAgaWYgKFtzZWxmIGlz
S2luZE9mQ2xhc3M6W0RPTUVsZW1lbnQgY2xhc3NdXSkgeworICAgICAgICAgICAgRE9NRG9jdW1l
bnQgKmRvY3VtZW50ID0gW3NlbGYgb3duZXJEb2N1bWVudF07CisgICAgICAgICAgICBET01DU1NT
dHlsZURlY2xhcmF0aW9uICpzdHlsZSA9IFtkb2N1bWVudCBnZXRDb21wdXRlZFN0eWxlOihET01F
bGVtZW50ICopc2VsZiBwc2V1ZG9FbGVtZW50OkAiIl07CisgICAgICAgICAgICBpZiAoW1tzdHls
ZSBnZXRQcm9wZXJ0eVZhbHVlOkAiZGlzcGxheSJdIGlzRXF1YWxUb1N0cmluZzpAImlubGluZSJd
KQorICAgICAgICAgICAgICAgIHJlY3RzID0gW3NlbGYgbGluZUJveFJlY3RzXTsKKyAgICAgICAg
fSBlbHNlIGlmIChbc2VsZiBpc0tpbmRPZkNsYXNzOltET01UZXh0IGNsYXNzXV0KKyNpZiBFTkFC
TEUoU1ZHX0RPTV9PQkpDX0JJTkRJTkdTKQorICAgICAgICAgICAgICAgICAgICYmICFbW3NlbGYg
cGFyZW50Tm9kZV0gaXNLaW5kT2ZDbGFzczpOU0NsYXNzRnJvbVN0cmluZyhAIkRPTVNWR0VsZW1l
bnQiKV0KKyNlbmRpZgorICAgICAgICAgICAgICAgICAgKQorICAgICAgICAgICAgcmVjdHMgPSBb
c2VsZiBsaW5lQm94UmVjdHNdOworICAgIH0KKworICAgIGlmICghW3JlY3RzIGNvdW50XSkKKyAg
ICAgICAgcmVjdHMgPSBbTlNBcnJheSBhcnJheVdpdGhPYmplY3Q6W05TVmFsdWUgdmFsdWVXaXRo
UmVjdDpib3VuZHNdXTsKKworICAgIHJldHVybiByZWN0czsKK30KKworLSAoTlNBcnJheSAqKWFi
c29sdXRlUXVhZHMKK3sKKyAgICBOU0FycmF5ICpxdWFkcyA9IG5pbDsKKyAgICBOU1JlY3QgYm91
bmRzID0gW3NlbGYgYm91bmRpbmdCb3hdOworICAgIGlmICghTlNJc0VtcHR5UmVjdChib3VuZHMp
KSB7CisgICAgICAgIGlmIChbc2VsZiBpc0tpbmRPZkNsYXNzOltET01FbGVtZW50IGNsYXNzXV0p
IHsKKyAgICAgICAgICAgIERPTURvY3VtZW50ICpkb2N1bWVudCA9IFtzZWxmIG93bmVyRG9jdW1l
bnRdOworICAgICAgICAgICAgRE9NQ1NTU3R5bGVEZWNsYXJhdGlvbiAqc3R5bGUgPSBbZG9jdW1l
bnQgZ2V0Q29tcHV0ZWRTdHlsZTooRE9NRWxlbWVudCAqKXNlbGYgcHNldWRvRWxlbWVudDpAIiJd
OworICAgICAgICAgICAgaWYgKFtbc3R5bGUgZ2V0UHJvcGVydHlWYWx1ZTpAImRpc3BsYXkiXSBp
c0VxdWFsVG9TdHJpbmc6QCJpbmxpbmUiXSkKKyAgICAgICAgICAgICAgICBxdWFkcyA9IFtzZWxm
IGxpbmVCb3hRdWFkc107CisgICAgICAgIH0gZWxzZSBpZiAoW3NlbGYgaXNLaW5kT2ZDbGFzczpb
RE9NVGV4dCBjbGFzc11dCisjaWYgRU5BQkxFKFNWR19ET01fT0JKQ19CSU5ESU5HUykKKyAgICAg
ICAgICAgICAgICAgICAmJiAhW1tzZWxmIHBhcmVudE5vZGVdIGlzS2luZE9mQ2xhc3M6TlNDbGFz
c0Zyb21TdHJpbmcoQCJET01TVkdFbGVtZW50IildCisjZW5kaWYKKyAgICAgICAgICAgICAgICAg
ICApCisgICAgICAgICAgICBxdWFkcyA9IFtzZWxmIGxpbmVCb3hRdWFkc107CisgICAgfQorCisg
ICAgaWYgKCFbcXVhZHMgY291bnRdKSB7CisgICAgICAgIFdLUXVhZE9iamVjdCogcXVhZE9iamVj
dCA9IFtbV0tRdWFkT2JqZWN0IGFsbG9jXSBpbml0V2l0aFF1YWQ6W3NlbGYgYWJzb2x1dGVRdWFk
XV07CisgICAgICAgIHF1YWRzID0gW05TQXJyYXkgYXJyYXlXaXRoT2JqZWN0OnF1YWRPYmplY3Rd
OworICAgICAgICBbcXVhZE9iamVjdCByZWxlYXNlXTsKKyAgICB9CisKKyAgICByZXR1cm4gcXVh
ZHM7Cit9CisKKy0gKE5TQXJyYXkgKilib3JkZXJSYWRpaQoreworICAgIFJlbmRlck9iamVjdCog
cmVuZGVyZXIgPSBjb3JlKHNlbGYpLT5yZW5kZXJlcigpOworICAgIAorCisgICAgaWYgKHJlbmRl
cmVyICYmIHJlbmRlcmVyLT5pc0JveCgpKSB7CisgICAgICAgIFJvdW5kZWRSZWN0OjpSYWRpaSBy
YWRpaSA9IHRvUmVuZGVyQm94KHJlbmRlcmVyKS0+Ym9yZGVyUmFkaWkoKTsKKyAgICAgICAgcmV0
dXJuIEBbW05TVmFsdWUgdmFsdWVXaXRoU2l6ZTooQ0dTaXplKXJhZGlpLnRvcExlZnQoKV0sCisg
ICAgICAgICAgICAgICAgIFtOU1ZhbHVlIHZhbHVlV2l0aFNpemU6KENHU2l6ZSlyYWRpaS50b3BS
aWdodCgpXSwKKyAgICAgICAgICAgICAgICAgW05TVmFsdWUgdmFsdWVXaXRoU2l6ZTooQ0dTaXpl
KXJhZGlpLmJvdHRvbUxlZnQoKV0sCisgICAgICAgICAgICAgICAgIFtOU1ZhbHVlIHZhbHVlV2l0
aFNpemU6KENHU2l6ZSlyYWRpaS5ib3R0b21SaWdodCgpXV07CisgICAgfQorICAgIE5TVmFsdWUg
KmVtcHR5VmFsdWUgPSBbTlNWYWx1ZSB2YWx1ZVdpdGhTaXplOkNHU2l6ZVplcm9dOworICAgIHJl
dHVybiBAW2VtcHR5VmFsdWUsIGVtcHR5VmFsdWUsIGVtcHR5VmFsdWUsIGVtcHR5VmFsdWVdOwor
fQorCistIChCT09MKWNvbnRhaW5zT25seUlubGluZU9iamVjdHMKK3sKKyAgICBSZW5kZXJPYmpl
Y3QgKiByZW5kZXJlciA9IGNvcmUoc2VsZiktPnJlbmRlcmVyKCk7CisgICAgcmV0dXJuICAocmVu
ZGVyZXIgJiYKKyAgICAgICAgICAgICByZW5kZXJlci0+Y2hpbGRyZW5JbmxpbmUoKSAmJgorICAg
ICAgICAgICAgIChyZW5kZXJlci0+aXNSZW5kZXJCbG9jaygpICYmIHRvUmVuZGVyQmxvY2socmVu
ZGVyZXIpLT5pbmxpbmVFbGVtZW50Q29udGludWF0aW9uKCkgPT0gbmlsKSAmJgorICAgICAgICAg
ICAgICFyZW5kZXJlci0+aXNUYWJsZSgpKTsKK30KKworLSAoQk9PTClpc1NlbGVjdGFibGVCbG9j
aworeworICAgIFJlbmRlck9iamVjdCAqIHJlbmRlcmVyID0gY29yZShzZWxmKS0+cmVuZGVyZXIo
KTsKKyAgICByZXR1cm4gKHJlbmRlcmVyICYmIChyZW5kZXJlci0+aXNSZW5kZXJCbG9ja0Zsb3co
KSB8fCAocmVuZGVyZXItPmlzUmVuZGVyQmxvY2soKSAmJiB0b1JlbmRlckJsb2NrKHJlbmRlcmVy
KS0+aW5saW5lRWxlbWVudENvbnRpbnVhdGlvbigpICE9IG5pbCkpKTsKK30KKworLSAoRE9NUmFu
Z2UgKilyYW5nZU9mQ29udGFpbmluZ1BhcmFncmFwaAoreworICAgIERPTVJhbmdlICpyZXN1bHQg
PSBuaWw7CisgICAgCisgICAgTm9kZSAqbm9kZSA9IGNvcmUoc2VsZik7ICAgIAorICAgIFZpc2li
bGVQb3NpdGlvbiB2aXNpYmxlUG9zaXRpb24oY3JlYXRlTGVnYWN5RWRpdGluZ1Bvc2l0aW9uKG5v
ZGUsIDApLCBXZWJDb3JlOjpET1dOU1RSRUFNKTsKKyAgICBWaXNpYmxlUG9zaXRpb24gdmlzaWJs
ZVBhcmFncmFwaFN0YXJ0ID0gc3RhcnRPZlBhcmFncmFwaCh2aXNpYmxlUG9zaXRpb24pOworICAg
IFZpc2libGVQb3NpdGlvbiB2aXNpYmxlUGFyYWdyYXBoRW5kID0gZW5kT2ZQYXJhZ3JhcGgodmlz
aWJsZVBvc2l0aW9uKTsKKyAgICAKKyAgICBQb3NpdGlvbiBwYXJhZ3JhcGhTdGFydCA9IHZpc2li
bGVQYXJhZ3JhcGhTdGFydC5kZWVwRXF1aXZhbGVudCgpLnBhcmVudEFuY2hvcmVkRXF1aXZhbGVu
dCgpOworICAgIFBvc2l0aW9uIHBhcmFncmFwaEVuZCA9IHZpc2libGVQYXJhZ3JhcGhFbmQuZGVl
cEVxdWl2YWxlbnQoKS5wYXJlbnRBbmNob3JlZEVxdWl2YWxlbnQoKTsgICAgCisgICAgCisgICAg
aWYgKHBhcmFncmFwaFN0YXJ0LmlzTm90TnVsbCgpICYmIHBhcmFncmFwaEVuZC5pc05vdE51bGwo
KSkgeworICAgICAgICBQYXNzUmVmUHRyPFJhbmdlPiByYW5nZSA9IFJhbmdlOjpjcmVhdGUoKm5v
ZGUtPm93bmVyRG9jdW1lbnQoKSwgcGFyYWdyYXBoU3RhcnQsIHBhcmFncmFwaEVuZCk7CisgICAg
ICAgIHJlc3VsdCA9IGtpdChyYW5nZS5nZXQoKSk7CisgICAgfQorICAgIAorICAgIHJldHVybiBy
ZXN1bHQ7Cit9CisKKy0gKENHRmxvYXQpdGV4dEhlaWdodAoreyAgCisgICAgUmVuZGVyT2JqZWN0
ICpvID0gY29yZShzZWxmKS0+cmVuZGVyZXIoKTsKKyAgICBpZiAobyAmJiBvLT5pc1RleHQoKSkg
eworICAgICAgICBSZW5kZXJUZXh0ICp0ID0gdG9SZW5kZXJUZXh0KG8pOworICAgICAgICByZXR1
cm4gdC0+c3R5bGUoKS5jb21wdXRlZExpbmVIZWlnaHQoKTs7CisgICAgfQorICAgIAorICAgIHJl
dHVybiBDR0ZMT0FUX01BWDsKK30KKworLSAoRE9NTm9kZSAqKWZpbmRFeHBsb2RlZFRleHROb2Rl
QXRQb2ludDooQ0dQb2ludClwb2ludAoreworICAgIC8vIEEgbGlnaHQsIG5vbi1yZWN1cnNpdmUg
dmVyc2lvbiBvZiBSZW5kZXJCbG9jazo6cG9zaXRpb25Gb3JDb29yZGluYXRlcyB0aGF0IGxvb2tz
IGF0CisgICAgLy8gd2hldGhlciBhIHBvaW50IGxpZXMgd2l0aGluIHRoZSBnYXBzIGJldHdlZW4g
aXRzIHJvb3QgbGluZSBib3hlcywgdG8gYmUgY2FsbGVkIGFnYWluc3QKKyAgICAvLyBhIG5vZGUg
cmV0dXJuZWQgZnJvbSBlbGVtZW50QXRQb2ludC4gIFdlIG1ha2UgdGhlIGFzc3VtcHRpb24gdGhh
dCBlaXRoZXIgdGhlIG5vZGUgb3Igb25lCisgICAgLy8gb2YgaXRzIGltbWVkaWF0ZSBjaGlsZHJl
biBjb250YWlucyB0aGUgcm9vdCBsaW5lIGJveGVzIGluIHF1ZXN0aW9uLgorICAgIC8vIFNlZSA8
cmRhcjovL3Byb2JsZW0vNjgyNDY1MD4gZm9yIGNvbnRleHQuCisgICAgUmVuZGVyT2JqZWN0ICpy
ZW5kZXJlciA9IGNvcmUoc2VsZiktPnJlbmRlcmVyKCk7CisgICAgaWYgKCFyZW5kZXJlciB8fCAh
cmVuZGVyZXItPmlzUmVuZGVyQmxvY2tGbG93KCkpCisgICAgICAgIHJldHVybiBuaWw7CisKKyAg
ICBSZW5kZXJCbG9jayAqYmxvY2sgPSBzdGF0aWNfY2FzdDxSZW5kZXJCbG9jayAqPihyZW5kZXJl
cik7CisgICAgCisgICAgRmxvYXRQb2ludCBhYnNQb2ludChwb2ludCk7CisgICAgRmxvYXRQb2lu
dCBsb2NhbFBvaW50ID0gYmxvY2stPmFic29sdXRlVG9Mb2NhbChhYnNQb2ludCk7CisKKyAgICBp
ZiAoIWJsb2NrLT5jaGlsZHJlbklubGluZSgpKSB7CisgICAgICAgIC8vIExvb2sgYW1vbmcgb3Vy
IGltbWVkaWF0ZSBjaGlsZHJlbiBmb3IgYW4gYWx0ZXJuYXRlIGJveCB0aGF0IGNvbnRhaW5zIHRo
ZSBwb2ludC4KKyAgICAgICAgZm9yIChSZW5kZXJCb3gqIGNoaWxkID0gYmxvY2stPmZpcnN0Q2hp
bGRCb3goKTsgY2hpbGQ7IGNoaWxkID0gY2hpbGQtPm5leHRTaWJsaW5nQm94KCkpIHsKKyAgICAg
ICAgICAgIGlmIChjaGlsZC0+aGVpZ2h0KCkgPT0gMCB8fCBjaGlsZC0+c3R5bGUoKS52aXNpYmls
aXR5KCkgIT0gV2ViQ29yZTo6VklTSUJMRSB8fCBjaGlsZC0+aXNGbG9hdGluZ09yT3V0T2ZGbG93
UG9zaXRpb25lZCgpKQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgZmxv
YXQgdG9wID0gY2hpbGQtPnkoKTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgUmVuZGVyQm94
KiBuZXh0Q2hpbGQgPSBjaGlsZC0+bmV4dFNpYmxpbmdCb3goKTsKKyAgICAgICAgICAgIHdoaWxl
IChuZXh0Q2hpbGQgJiYgbmV4dENoaWxkLT5pc0Zsb2F0aW5nT3JPdXRPZkZsb3dQb3NpdGlvbmVk
KCkpCisgICAgICAgICAgICAgICAgbmV4dENoaWxkID0gbmV4dENoaWxkLT5uZXh0U2libGluZ0Jv
eCgpOworICAgICAgICAgICAgaWYgKCFuZXh0Q2hpbGQpIHsKKyAgICAgICAgICAgICAgICBpZiAo
bG9jYWxQb2ludC55KCkgPj0gdG9wKSB7CisgICAgICAgICAgICAgICAgICAgIGJsb2NrID0gc3Rh
dGljX2Nhc3Q8UmVuZGVyQmxvY2sgKj4oY2hpbGQpOworICAgICAgICAgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAg
ICAgICB9CisgICAgICAgICAgICAKKyAgICAgICAgICAgIGZsb2F0IGJvdHRvbSA9IG5leHRDaGls
ZC0+eSgpOworICAgICAgICAgICAgCisgICAgICAgICAgICBpZiAobG9jYWxQb2ludC55KCkgPj0g
dG9wICYmIGxvY2FsUG9pbnQueSgpIDwgYm90dG9tICYmIGNoaWxkLT5pc1JlbmRlckJsb2NrKCkp
IHsKKyAgICAgICAgICAgICAgICBibG9jayA9IHN0YXRpY19jYXN0PFJlbmRlckJsb2NrICo+KGNo
aWxkKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0gICAgICAgICAgICAg
ICAgCisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIGlmICghYmxvY2stPmNoaWxkcmVuSW5s
aW5lKCkpCisgICAgICAgICAgICByZXR1cm4gbmlsOworICAgICAgICAKKyAgICAgICAgbG9jYWxQ
b2ludCA9IGJsb2NrLT5hYnNvbHV0ZVRvTG9jYWwoYWJzUG9pbnQpOworICAgIH0KKworICAgIFJl
bmRlckJsb2NrRmxvdyAqYmxvY2tGbG93ID0gdG9SZW5kZXJCbG9ja0Zsb3coYmxvY2spOworICAg
IAorICAgIC8vIE9ubHkgY2hlY2sgdGhlIGdhcHMgYmV0d2VlbiB0aGUgcm9vdCBsaW5lIGJveGVz
LiAgV2UgZGVsaWJlcmF0ZWx5IGlnbm9yZSBvdmVyZmxvdyBiZWNhdXNlCisgICAgLy8gZXhwZXJp
ZW5jZSBoYXMgc2hvd24gdGhhdCBoaXQgdGVzdHMgb24gYW4gZXhwbG9kZWQgdGV4dCBub2RlIGNh
biBmYWlsIHdoZW4gd2l0aGluIHRoZQorICAgIC8vIG92ZXJmbG93IHJlZ2lvbi4KKyAgICBmb3Ig
KFJvb3RJbmxpbmVCb3ggKmN1ciA9IGJsb2NrRmxvdy0+Zmlyc3RSb290Qm94KCk7IGN1ciAmJiBj
dXIgIT0gYmxvY2tGbG93LT5sYXN0Um9vdEJveCgpOyBjdXIgPSBjdXItPm5leHRSb290Qm94KCkp
IHsKKyAgICAgICAgZmxvYXQgY3VycmVudEJvdHRvbSA9IGN1ci0+eSgpICsgY3VyLT5sb2dpY2Fs
SGVpZ2h0KCk7ICAgICAgICAKKyAgICAgICAgaWYgKGxvY2FsUG9pbnQueSgpIDwgY3VycmVudEJv
dHRvbSkKKyAgICAgICAgICAgIHJldHVybiBuaWw7CisKKyAgICAgICAgUm9vdElubGluZUJveCAq
bmV4dCA9IGN1ci0+bmV4dFJvb3RCb3goKTsKKyAgICAgICAgZmxvYXQgbmV4dFRvcCA9IG5leHQt
PnkoKTsKKyAgICAgICAgaWYgKGxvY2FsUG9pbnQueSgpIDwgbmV4dFRvcCkgeworICAgICAgICAg
ICAgSW5saW5lQm94ICppbmxpbmVCb3ggPSBjdXItPmNsb3Nlc3RMZWFmQ2hpbGRGb3JMb2dpY2Fs
TGVmdFBvc2l0aW9uKGxvY2FsUG9pbnQueCgpKTsKKyAgICAgICAgICAgIGlmIChpbmxpbmVCb3gg
JiYgaW5saW5lQm94LT5iZWhhdmVzTGlrZVRleHQoKSAmJiBpbmxpbmVCb3gtPnJlbmRlcmVyKCku
aXNUZXh0KCkpIHsKKyAgICAgICAgICAgICAgICBSZW5kZXJUZXh0ICp0ID0gdG9SZW5kZXJUZXh0
KCZpbmxpbmVCb3gtPnJlbmRlcmVyKCkpOworICAgICAgICAgICAgICAgIGlmICh0LT50ZXh0Tm9k
ZSgpKSB7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBraXQodC0+dGV4dE5vZGUoKSk7Cisg
ICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICB9CisgICAg
cmV0dXJuIG5pbDsgICAgCit9CisKK0BlbmQKKworLy8tLS0tLS0tLS0tLS0tLS0tLQorCitAaW1w
bGVtZW50YXRpb24gRE9NRWxlbWVudCAoRE9NVUlLaXRDb21wbGV4aXR5RXh0ZW5zaW9ucykgCisK
Ky0gKGludClzdHJ1Y3R1cmFsQ29tcGxleGl0eUNvbnRyaWJ1dGlvbiB7IHJldHVybiAwOyB9CisK
K0BlbmQKKworQGltcGxlbWVudGF0aW9uIERPTUhUTUxFbGVtZW50IChET01VSUtpdENvbXBsZXhp
dHlFeHRlbnNpb25zKSAKKworLSAoaW50KXN0cnVjdHVyYWxDb21wbGV4aXR5Q29udHJpYnV0aW9u
Cit7CisgICAgaW50IHJlc3VsdCA9IDA7CisgICAgUmVuZGVyT2JqZWN0ICogcmVuZGVyZXIgPSBj
b3JlKHNlbGYpLT5yZW5kZXJlcigpOworICAgIGlmIChyZW5kZXJlcikgeworICAgICAgICBpZiAo
cmVuZGVyZXItPmlzRmxvYXRpbmdPck91dE9mRmxvd1Bvc2l0aW9uZWQoKSB8fAorICAgICAgICAg
ICAgcmVuZGVyZXItPmlzV2lkZ2V0KCkpIHsKKyAgICAgICAgICAgIHJlc3VsdCA9IElOVF9NQVg7
CisgICAgICAgIH0gZWxzZSBpZiAocmVuZGVyZXItPmlzRW1wdHkoKSkgeworICAgICAgICAgICAg
cmVzdWx0ID0gMDsKKyAgICAgICAgfSBlbHNlIGlmIChyZW5kZXJlci0+aXNSZW5kZXJCbG9ja0Zs
b3coKSB8fCAocmVuZGVyZXItPmlzUmVuZGVyQmxvY2soKSAmJiB0b1JlbmRlckJsb2NrKHJlbmRl
cmVyKS0+aW5saW5lRWxlbWVudENvbnRpbnVhdGlvbigpICE9IDApKSB7CisgICAgICAgICAgICBC
T09MIG5vQ29zdCA9IE5POworICAgICAgICAgICAgaWYgKHJlbmRlcmVyLT5pc0JveCgpKSB7Cisg
ICAgICAgICAgICAgICAgUmVuZGVyQm94ICphc0JveCA9IHJlbmRlcmVyLT5lbmNsb3NpbmdCb3go
KTsKKyAgICAgICAgICAgICAgICBSZW5kZXJPYmplY3QgKnBhcmVudCA9IGFzQm94LT5wYXJlbnQo
KTsKKyAgICAgICAgICAgICAgICBSZW5kZXJCb3ggKnBhcmVudFJlbmRlckJveCA9IChwYXJlbnQg
JiYgcGFyZW50LT5pc0JveCgpKSA/IHRvUmVuZGVyQm94KHBhcmVudCkgOiAwOworICAgICAgICAg
ICAgICAgIGlmIChwYXJlbnRSZW5kZXJCb3ggJiYgYXNCb3ggJiYgYXNCb3gtPndpZHRoKCkgPT0g
cGFyZW50UmVuZGVyQm94LT53aWR0aCgpKSB7CisgICAgICAgICAgICAgICAgICAgIG5vQ29zdCA9
IFlFUzsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CQorICAgICAgICAgICAgcmVz
dWx0ID0gKG5vQ29zdCA/IDAgOiAxKTsKKyAgICAgICAgfSBlbHNlIGlmIChyZW5kZXJlci0+aGFz
VHJhbnNmb3JtKCkpIHsKKyAgICAgICAgICAgIHJlc3VsdCA9IElOVF9NQVg7CisgICAgICAgIH0K
KyAgICB9CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworQGVuZAorCitAaW1wbGVtZW50YXRpb24g
RE9NSFRNTEJvZHlFbGVtZW50IChET01VSUtpdENvbXBsZXhpdHlFeHRlbnNpb25zKQorLSAoaW50
KXN0cnVjdHVyYWxDb21wbGV4aXR5Q29udHJpYnV0aW9uIHsgcmV0dXJuIDA7IH0KK0BlbmQKKwor
CisvLyBNYXhpbWFsbHkgY29tcGxleCBlbGVtZW50cworCitAaW1wbGVtZW50YXRpb24gRE9NSFRN
TEZvcm1FbGVtZW50IChET01VSUtpdENvbXBsZXhpdHlFeHRlbnNpb25zKQorLSAoaW50KXN0cnVj
dHVyYWxDb21wbGV4aXR5Q29udHJpYnV0aW9uIHsgcmV0dXJuIElOVF9NQVg7IH0KK0BlbmQKKwor
QGltcGxlbWVudGF0aW9uIERPTUhUTUxUYWJsZUVsZW1lbnQgKERPTVVJS2l0Q29tcGxleGl0eUV4
dGVuc2lvbnMpCistIChpbnQpc3RydWN0dXJhbENvbXBsZXhpdHlDb250cmlidXRpb24geyByZXR1
cm4gSU5UX01BWDsgfQorQGVuZAorCitAaW1wbGVtZW50YXRpb24gRE9NSFRNTEZyYW1lRWxlbWVu
dCAoRE9NVUlLaXRDb21wbGV4aXR5RXh0ZW5zaW9ucykKKy0gKGludClzdHJ1Y3R1cmFsQ29tcGxl
eGl0eUNvbnRyaWJ1dGlvbiB7IHJldHVybiBJTlRfTUFYOyB9CitAZW5kCisKK0BpbXBsZW1lbnRh
dGlvbiBET01IVE1MSUZyYW1lRWxlbWVudCAoRE9NVUlLaXRDb21wbGV4aXR5RXh0ZW5zaW9ucykK
Ky0gKGludClzdHJ1Y3R1cmFsQ29tcGxleGl0eUNvbnRyaWJ1dGlvbiB7IHJldHVybiBJTlRfTUFY
OyB9CitAZW5kCisKK0BpbXBsZW1lbnRhdGlvbiBET01IVE1MQnV0dG9uRWxlbWVudCAoRE9NVUlL
aXRDb21wbGV4aXR5RXh0ZW5zaW9ucykKKy0gKGludClzdHJ1Y3R1cmFsQ29tcGxleGl0eUNvbnRy
aWJ1dGlvbiB7IHJldHVybiBJTlRfTUFYOyB9CitAZW5kCisKK0BpbXBsZW1lbnRhdGlvbiBET01I
VE1MVGV4dEFyZWFFbGVtZW50IChET01VSUtpdENvbXBsZXhpdHlFeHRlbnNpb25zKQorLSAoaW50
KXN0cnVjdHVyYWxDb21wbGV4aXR5Q29udHJpYnV0aW9uIHsgcmV0dXJuIElOVF9NQVg7IH0KK0Bl
bmQKKworQGltcGxlbWVudGF0aW9uIERPTUhUTUxJbnB1dEVsZW1lbnQgKERPTVVJS2l0Q29tcGxl
eGl0eUV4dGVuc2lvbnMpCistIChpbnQpc3RydWN0dXJhbENvbXBsZXhpdHlDb250cmlidXRpb24g
eyByZXR1cm4gSU5UX01BWDsgfQorQGVuZAorCitAaW1wbGVtZW50YXRpb24gRE9NSFRNTFNlbGVj
dEVsZW1lbnQgKERPTVVJS2l0Q29tcGxleGl0eUV4dGVuc2lvbnMpCistIChpbnQpc3RydWN0dXJh
bENvbXBsZXhpdHlDb250cmlidXRpb24geyByZXR1cm4gSU5UX01BWDsgfQorQGVuZAorCisKKy8v
LS0tLS0tLS0tLS0tLS0tLS0KKyAgICAgICAgCitAaW1wbGVtZW50YXRpb24gRE9NSFRNTEFyZWFF
bGVtZW50IChET01VSUtpdEV4dGVuc2lvbnMpCisKKy0gKENHUmVjdClib3VuZGluZ0JveFdpdGhP
d25lcjooRE9NTm9kZSAqKWFuT3duZXIKK3sKKyAgICAvLyBpZ25vcmVzIHRyYW5zZm9ybXMKKyAg
ICByZXR1cm4gYW5Pd25lciA/IHBpeGVsU25hcHBlZEludFJlY3QoY29yZShzZWxmKS0+Y29tcHV0
ZVJlY3QoY29yZShhbk93bmVyKS0+cmVuZGVyZXIoKSkpIDogQ0dSZWN0WmVybzsKK30KKworLSAo
V0tRdWFkKWFic29sdXRlUXVhZFdpdGhPd25lcjooRE9NTm9kZSAqKWFuT3duZXIKK3sKKyAgICBp
ZiAoYW5Pd25lcikgeworICAgICAgICAvLyBGSVhNRTogRUNMQUlSCisgICAgICAgIC8vV2ViQ29y
ZTo6RmxvYXRRdWFkIHRoZVF1YWQgPSBjb3JlKHNlbGYpLT5nZXRBYnNvbHV0ZVF1YWQoY29yZShh
bk93bmVyKS0+cmVuZGVyZXIoKSk7CisgICAgICAgIFdlYkNvcmU6OkludFJlY3QgcmVjdCA9IHBp
eGVsU25hcHBlZEludFJlY3QoY29yZShzZWxmKS0+Y29tcHV0ZVJlY3QoY29yZShhbk93bmVyKS0+
cmVuZGVyZXIoKSkpOworICAgICAgICBXS1F1YWQgcXVhZDsKKyAgICAgICAgcXVhZC5wMSA9IENH
UG9pbnRNYWtlKHJlY3QueCgpLCByZWN0LnkoKSk7CisgICAgICAgIHF1YWQucDIgPSBDR1BvaW50
TWFrZShyZWN0Lm1heFgoKSwgcmVjdC55KCkpOworICAgICAgICBxdWFkLnAzID0gQ0dQb2ludE1h
a2UocmVjdC5tYXhYKCksIHJlY3QubWF4WSgpKTsKKyAgICAgICAgcXVhZC5wNCA9IENHUG9pbnRN
YWtlKHJlY3QueCgpLCByZWN0Lm1heFkoKSk7CisgICAgICAgIHJldHVybiBxdWFkOworICAgIH0K
KworICAgIFdLUXVhZCB6ZXJvUXVhZCA9IHsgQ0dQb2ludFplcm8sIENHUG9pbnRaZXJvLCBDR1Bv
aW50WmVybywgQ0dQb2ludFplcm8gfTsKKyAgICByZXR1cm4gemVyb1F1YWQ7Cit9CisKKy0gKE5T
QXJyYXkgKilib3VuZGluZ0JveGVzV2l0aE93bmVyOihET01Ob2RlICopYW5Pd25lcgoreworICAg
IHJldHVybiBbTlNBcnJheSBhcnJheVdpdGhPYmplY3Q6W05TVmFsdWUgdmFsdWVXaXRoUmVjdDpb
c2VsZiBib3VuZGluZ0JveFdpdGhPd25lcjphbk93bmVyXV1dOworfQorCistIChOU0FycmF5ICop
YWJzb2x1dGVRdWFkc1dpdGhPd25lcjooRE9NTm9kZSAqKWFuT3duZXIKK3sKKyAgICBXS1F1YWRP
YmplY3QqIHF1YWRPYmplY3QgPSBbW1dLUXVhZE9iamVjdCBhbGxvY10gaW5pdFdpdGhRdWFkOltz
ZWxmIGFic29sdXRlUXVhZFdpdGhPd25lcjphbk93bmVyXV07CisgICAgTlNBcnJheSogICAgcXVh
ZEFycmF5ID0gW05TQXJyYXkgYXJyYXlXaXRoT2JqZWN0OnF1YWRPYmplY3RdOworICAgIFtxdWFk
T2JqZWN0IHJlbGVhc2VdOworICAgIHJldHVybiBxdWFkQXJyYXk7Cit9CisKK0BlbmQKKworQGlt
cGxlbWVudGF0aW9uIERPTUhUTUxTZWxlY3RFbGVtZW50IChET01VSUtpdEV4dGVuc2lvbnMpCisK
Ky0gKHVuc2lnbmVkKWNvbXBsZXRlTGVuZ3RoCit7CisgICAgcmV0dXJuIGNvcmUoc2VsZiktPmxp
c3RJdGVtcygpLnNpemUoKTsKK30KKworLSAoRE9NTm9kZSAqKWxpc3RJdGVtQXRJbmRleDooaW50
KWFuSW5kZXgKK3sKKyAgICByZXR1cm4ga2l0KGNvcmUoc2VsZiktPmxpc3RJdGVtcygpW2FuSW5k
ZXhdKTsKK30KKworQGVuZAorCitAaW1wbGVtZW50YXRpb24gRE9NSFRNTEltYWdlRWxlbWVudCAo
V2ViRE9NSFRNTEltYWdlRWxlbWVudE9wZXJhdGlvbnNQcml2YXRlKQorCistIChOU0RhdGEgKilk
YXRhUmVwcmVzZW50YXRpb246KEJPT0wpcmF3SW1hZ2VEYXRhCit7CisgICAgV2ViQ29yZTo6Q2Fj
aGVkSW1hZ2UgKmNhY2hlZEltYWdlID0gY29yZShzZWxmKS0+Y2FjaGVkSW1hZ2UoKTsKKyAgICBp
ZiAoIWNhY2hlZEltYWdlKQorICAgICAgICByZXR1cm4gbmlsOworICAgIFdlYkNvcmU6OkltYWdl
ICppbWFnZSA9IGNhY2hlZEltYWdlLT5pbWFnZSgpOworICAgIGlmICghaW1hZ2UpCisgICAgICAg
IHJldHVybiBuaWw7CisgICAgV2ViQ29yZTo6U2hhcmVkQnVmZmVyICpkYXRhID0gbmlsOworICAg
IGlmIChyYXdJbWFnZURhdGEpIHsKKyAgICAgICAgUmVzb3VyY2VCdWZmZXIgKnJlc291cmNlQnVm
ZmVyID0gY2FjaGVkSW1hZ2UtPnJlc291cmNlQnVmZmVyKCk7CisgICAgICAgIGlmIChyZXNvdXJj
ZUJ1ZmZlcikKKyAgICAgICAgICAgIGRhdGEgPSByZXNvdXJjZUJ1ZmZlci0+c2hhcmVkQnVmZmVy
KCk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgZGF0YSA9IGltYWdlLT5kYXRhKCk7CisgICAgfQor
ICAgIGlmICghZGF0YSkKKyAgICAgICAgcmV0dXJuIG5pbDsKKyAgICAKKyAgICByZXR1cm4gW2Rh
dGEtPmNyZWF0ZU5TRGF0YSgpLmxlYWtSZWYoKSBhdXRvcmVsZWFzZV07Cit9CisKKy0gKE5TU3Ry
aW5nICopbWltZVR5cGUKK3sKKyAgICBXZWJDb3JlOjpDYWNoZWRJbWFnZSAqY2FjaGVkSW1hZ2Ug
PSBjb3JlKHNlbGYpLT5jYWNoZWRJbWFnZSgpOworICAgIGlmICghY2FjaGVkSW1hZ2UgfHwgIWNh
Y2hlZEltYWdlLT5pbWFnZSgpKQorICAgICAgICByZXR1cm4gbmlsOworICAgIAorICAgIHJldHVy
biBjYWNoZWRJbWFnZS0+cmVzcG9uc2UoKS5taW1lVHlwZSgpOworfQorCitAZW5kCisKKyNlbmRp
ZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvb2JqYy9QdWJsaWNET01JbnRl
cmZhY2VzLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9vYmpjL1B1YmxpY0RPTUludGVyZmFj
ZXMuaAppbmRleCBjYWFhYjlhODFiNDY2ZTM4YTIwNTZhZmE1ZmYyN2RhM2RlMTliZGFmLi5hNjQz
ZjUyY2ZjMzIzZDFhNWRhZmE2ZjNhYjdiOThjZTY2NGRkZWM0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9vYmpjL1B1YmxpY0RPTUludGVyZmFjZXMuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9vYmpjL1B1YmxpY0RPTUludGVyZmFjZXMuaApAQCAtMjYsNiArMjYs
OCBAQAogLy8gQWxsIHB1YmxpYyBET00gY2xhc3MgaW50ZXJmYWNlcywgcHJvcGVydGllcyBhbmQg
bWV0aG9kcyBuZWVkIHRvIGJlIGluIHRoaXMgZmlsZS4KIC8vIEFueXRoaW5nIG5vdCBpbiB0aGUg
ZmlsZSB3aWxsIGJlIGdlbmVyYXRlZCBpbnRvIHRoZSBhcHByb3ByaWF0ZSBwcml2YXRlIGhlYWRl
ciBmaWxlLgogCisjaW5jbHVkZSA8d3RmL1BsYXRmb3JtLmg+CisKICNpZm5kZWYgT0JKQ19DT0RF
X0dFTkVSQVRJT04KICNlcnJvciBEbyBub3QgaW5jbHVkZSB0aGlzIGhlYWRlciwgaW5zdGVhZCBp
bmNsdWRlIHRoZSBhcHByb3ByaWF0ZSBET00gaGVhZGVyLgogI2VuZGlmCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbSBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCmluZGV4IGRkZGFi
YzlmOWU2ZmRhMTNiOTQ1NjMwNmYzMTAyYzQ4MDg2MWNkMWQuLjg3ODNlNzYyZGY5MTI5YzU3ZGVl
ZDIzMjk4MzBkMDhkYTgxMmJmNDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCkBAIC00OSw2ICs0OSw0MCBAQCBteSBAZGVwc0Nv
bnRlbnQgPSAoKTsKIG15ICRudW1DYWNoZWRBdHRyaWJ1dGVzID0gMDsKIG15ICRjdXJyZW50Q2Fj
aGVkQXR0cmlidXRlID0gMDsKIAorbXkgJGJlZ2luQXBwbGVDb3B5cmlnaHRGb3JIZWFkZXJGaWxl
cyA9IDw8RU5EOworLy8gLS0tLS0tLSBCZWdpbiBBcHBsZSBDb3B5cmlnaHQgLS0tLS0tLQorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAwOCwgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFBlcm1pc3Npb24gaXMgZ3JhbnRlZCBieSBBcHBsZSB0byB1c2UgdGhpcyBmaWxlIHRv
IHRoZSBleHRlbnQKKyAqIG5lY2Vzc2FyeSB0byByZWxpbmsgd2l0aCBMR1BMIFdlYktpdCBmaWxl
cy4KKyAqCisgKiBObyBsaWNlbnNlIG9yIHJpZ2h0cyBhcmUgZ3JhbnRlZCBieSBBcHBsZSBleHBy
ZXNzbHkgb3IgYnkKKyAqIGltcGxpY2F0aW9uLCBlc3RvcHBlbCwgb3Igb3RoZXJ3aXNlLCB0byBB
cHBsZSBwYXRlbnRzIGFuZAorICogdHJhZGVtYXJrcy4gRm9yIHRoZSBzYWtlIG9mIGNsYXJpdHks
IG5vIGxpY2Vuc2Ugb3IgcmlnaHRzIGFyZQorICogZ3JhbnRlZCBieSBBcHBsZSBleHByZXNzbHkg
b3IgYnkgaW1wbGljYXRpb24sIGVzdG9wcGVsLCBvciBvdGhlcndpc2UsCisgKiB1bmRlciBhbnkg
QXBwbGUgcGF0ZW50cywgY29weXJpZ2h0cyBhbmQgdHJhZGVtYXJrcyB0byB1bmRlcmx5aW5nCisg
KiBpbXBsZW1lbnRhdGlvbnMgb2YgYW55IGFwcGxpY2F0aW9uIHByb2dyYW1taW5nIGludGVyZmFj
ZXMgKEFQSXMpCisgKiBvciB0byBhbnkgZnVuY3Rpb25hbGl0eSB0aGF0IGlzIGludm9rZWQgYnkg
Y2FsbGluZyBhbnkgQVBJLgorICovCisKK0VORAorbXkgJGJlZ2luQXBwbGVDb3B5cmlnaHRGb3JT
b3VyY2VGaWxlcyA9IDw8RU5EOworLy8gLS0tLS0tLSBCZWdpbiBBcHBsZSBDb3B5cmlnaHQgLS0t
LS0tLQorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwOCwgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIE5vIGxpY2Vuc2Ugb3IgcmlnaHRzIGFyZSBncmFudGVkIGJ5IEFwcGxl
IGV4cHJlc3NseSBvciBieSBpbXBsaWNhdGlvbiwKKyAqIGVzdG9wcGVsLCBvciBvdGhlcndpc2Us
IHRvIEFwcGxlIGNvcHlyaWdodHMsIHBhdGVudHMsIHRyYWRlbWFya3MsIHRyYWRlCisgKiBzZWNy
ZXRzIG9yIG90aGVyIHJpZ2h0cy4KKyAqLworCitFTkQKK215ICRlbmRBcHBsZUNvcHlyaWdodCAg
ID0gPDxFTkQ7CisvLyAtLS0tLS0tIEVuZCBBcHBsZSBDb3B5cmlnaHQgICAtLS0tLS0tCisKK0VO
RAorCiAjIERlZmF1bHQgLmggdGVtcGxhdGUKIG15ICRoZWFkZXJUZW1wbGF0ZSA9IDw8ICJFT0Yi
OwogLyoKQEAgLTQ0OCw3ICs0ODIsMTIgQEAgc3ViIEdlbmVyYXRlSGVhZGVyQ29udGVudEhlYWRl
cgogICAgIG15ICRpbnRlcmZhY2UgPSBzaGlmdDsKICAgICBteSAkY2xhc3NOYW1lID0gIkpTIiAu
ICRpbnRlcmZhY2UtPm5hbWU7CiAKLSAgICBteSBAaGVhZGVyQ29udGVudEhlYWRlciA9IHNwbGl0
KCJcciIsICRoZWFkZXJUZW1wbGF0ZSk7CisgICAgbXkgQGhlYWRlckNvbnRlbnRIZWFkZXI7Cisg
ICAgaWYgKCRpbnRlcmZhY2UtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJBcHBsZUNvcHlyaWdodCJ9
KSB7CisgICAgICAgIEBoZWFkZXJDb250ZW50SGVhZGVyID0gc3BsaXQoIlxyIiwgJGJlZ2luQXBw
bGVDb3B5cmlnaHRGb3JIZWFkZXJGaWxlcyk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgQGhlYWRl
ckNvbnRlbnRIZWFkZXIgPSBzcGxpdCgiXHIiLCAkaGVhZGVyVGVtcGxhdGUpOworICAgIH0KIAog
ICAgICMgLSBBZGQgaGVhZGVyIHByb3RlY3Rpb24KICAgICBwdXNoKEBoZWFkZXJDb250ZW50SGVh
ZGVyLCAiXG4jaWZuZGVmICRjbGFzc05hbWUiIC4gIl9oIik7CkBAIC00NjQsNyArNTAzLDEyIEBA
IHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uQ29udGVudEhlYWRlcgogICAgIG15ICRpbnRlcmZh
Y2UgPSBzaGlmdDsKICAgICBteSAkY2xhc3NOYW1lID0gIkpTIiAuICRpbnRlcmZhY2UtPm5hbWU7
CiAKLSAgICBteSBAaW1wbENvbnRlbnRIZWFkZXIgPSBzcGxpdCgiXHIiLCAkaGVhZGVyVGVtcGxh
dGUpOworICAgIG15IEBpbXBsQ29udGVudEhlYWRlcjsKKyAgICBpZiAoJGludGVyZmFjZS0+ZXh0
ZW5kZWRBdHRyaWJ1dGVzLT57IkFwcGxlQ29weXJpZ2h0In0pIHsKKyAgICAgICAgQGltcGxDb250
ZW50SGVhZGVyID0gc3BsaXQoIlxyIiwgJGJlZ2luQXBwbGVDb3B5cmlnaHRGb3JTb3VyY2VGaWxl
cyk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgQGltcGxDb250ZW50SGVhZGVyID0gc3BsaXQoIlxy
IiwgJGhlYWRlclRlbXBsYXRlKTsKKyAgICB9CiAKICAgICBwdXNoKEBpbXBsQ29udGVudEhlYWRl
ciwgIlxuI2luY2x1ZGUgXCJjb25maWcuaFwiXG4iKTsKICAgICBteSAkY29uZGl0aW9uYWxTdHJp
bmcgPSAkY29kZUdlbmVyYXRvci0+R2VuZXJhdGVDb25kaXRpb25hbFN0cmluZygkaW50ZXJmYWNl
KTsKQEAgLTg2Nyw4ICs5MTEsMjEgQEAgc3ViIEdlbmVyYXRlSGVhZGVyCiAgICAgfQogCiAgICAg
aWYgKCRudW1DdXN0b21GdW5jdGlvbnMgPiAwKSB7CisgICAgICAgIG15ICRpbkFwcGxlQ29weXJp
Z2h0ID0gMDsKICAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIlxuICAgIC8vIEN1c3RvbSBm
dW5jdGlvbnNcbiIpOwogICAgICAgICBmb3JlYWNoIG15ICRmdW5jdGlvbiAoQHskaW50ZXJmYWNl
LT5mdW5jdGlvbnN9KSB7CisgICAgICAgICAgICAjIFBMQVRGT1JNX0lPUworICAgICAgICAgICAg
bXkgJG5lZWRzQXBwbGVDb3B5cmlnaHQgPSAkZnVuY3Rpb24tPnNpZ25hdHVyZS0+ZXh0ZW5kZWRB
dHRyaWJ1dGVzLT57IkFwcGxlQ29weXJpZ2h0In07CisgICAgICAgICAgICBpZiAoJG5lZWRzQXBw
bGVDb3B5cmlnaHQpIHsKKyAgICAgICAgICAgICAgICBpZiAoISRpbkFwcGxlQ29weXJpZ2h0KSB7
CisgICAgICAgICAgICAgICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICRiZWdpbkFwcGxlQ29w
eXJpZ2h0Rm9ySGVhZGVyRmlsZXMpOworICAgICAgICAgICAgICAgICAgICAkaW5BcHBsZUNvcHly
aWdodCA9IDE7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfSBlbHNpZiAoJGluQXBw
bGVDb3B5cmlnaHQpIHsKKyAgICAgICAgICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAkZW5k
QXBwbGVDb3B5cmlnaHQpOworICAgICAgICAgICAgICAgICRpbkFwcGxlQ29weXJpZ2h0ID0gMDsK
KyAgICAgICAgICAgIH0KKyAgICAgICAgICAgICMgZW5kIFBMQVRGT1JNX0lPUwogICAgICAgICAg
ICAgbmV4dCB1bmxlc3MgSGFzQ3VzdG9tTWV0aG9kKCRmdW5jdGlvbi0+c2lnbmF0dXJlLT5leHRl
bmRlZEF0dHJpYnV0ZXMpOwogICAgICAgICAgICAgbmV4dCBpZiAkZnVuY3Rpb24tPntvdmVybG9h
ZHN9ICYmICRmdW5jdGlvbi0+e292ZXJsb2FkSW5kZXh9ICE9IDE7CiAgICAgICAgICAgICBteSAk
Y29uZGl0aW9uYWxTdHJpbmcgPSAkY29kZUdlbmVyYXRvci0+R2VuZXJhdGVDb25kaXRpb25hbFN0
cmluZygkZnVuY3Rpb24tPnNpZ25hdHVyZSk7CkBAIC04NzcsNiArOTM0LDcgQEAgc3ViIEdlbmVy
YXRlSGVhZGVyCiAgICAgICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAgICIgLiAoJGZ1
bmN0aW9uLT5pc1N0YXRpYyA/ICJzdGF0aWMgIiA6ICIiKSAuICJKU0M6OkpTVmFsdWUgIiAuICRm
dW5jdGlvbkltcGxlbWVudGF0aW9uTmFtZSAuICIoSlNDOjpFeGVjU3RhdGUqKTtcbiIpOwogICAg
ICAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiNlbmRpZlxuIikgaWYgJGNvbmRpdGlvbmFs
U3RyaW5nOwogICAgICAgICB9CisgICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICRlbmRBcHBs
ZUNvcHlyaWdodCkgaWYgJGluQXBwbGVDb3B5cmlnaHQ7CiAgICAgfQogCiAgICAgaWYgKCEkaGFz
UGFyZW50KSB7CkBAIC0xMDQzLDE1ICsxMTAxLDI5IEBAIHN1YiBHZW5lcmF0ZUhlYWRlcgogICAg
IH0KIAogICAgIGlmICgkbnVtRnVuY3Rpb25zID4gMCkgeworICAgICAgICBteSAkaW5BcHBsZUNv
cHlyaWdodCA9IDA7CiAgICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsIi8vIEZ1bmN0aW9uc1xu
XG4iKTsKICAgICAgICAgZm9yZWFjaCBteSAkZnVuY3Rpb24gKEB7JGludGVyZmFjZS0+ZnVuY3Rp
b25zfSkgewogICAgICAgICAgICAgbmV4dCBpZiAkZnVuY3Rpb24tPntvdmVybG9hZEluZGV4fSAm
JiAkZnVuY3Rpb24tPntvdmVybG9hZEluZGV4fSA+IDE7CisgICAgICAgICAgICBteSAkbmVlZHNB
cHBsZUNvcHlyaWdodCA9ICRmdW5jdGlvbi0+c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMt
PnsiQXBwbGVDb3B5cmlnaHQifTsKKyAgICAgICAgICAgIGlmICgkbmVlZHNBcHBsZUNvcHlyaWdo
dCkgeworICAgICAgICAgICAgICAgIGlmICghJGluQXBwbGVDb3B5cmlnaHQpIHsKKyAgICAgICAg
ICAgICAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgJGJlZ2luQXBwbGVDb3B5cmlnaHRGb3JI
ZWFkZXJGaWxlcyk7CisgICAgICAgICAgICAgICAgICAgICRpbkFwcGxlQ29weXJpZ2h0ID0gMTsK
KyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9IGVsc2lmICgkaW5BcHBsZUNvcHlyaWdo
dCkgeworICAgICAgICAgICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICRlbmRBcHBsZUNvcHly
aWdodCk7CisgICAgICAgICAgICAgICAgJGluQXBwbGVDb3B5cmlnaHQgPSAwOworICAgICAgICAg
ICAgfQorCiAgICAgICAgICAgICBteSAkY29uZGl0aW9uYWxTdHJpbmcgPSAkY29kZUdlbmVyYXRv
ci0+R2VuZXJhdGVDb25kaXRpb25hbFN0cmluZygkZnVuY3Rpb24tPnNpZ25hdHVyZSk7CiAgICAg
ICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiI2lmICR7Y29uZGl0aW9uYWxTdHJpbmd9XG4i
KSBpZiAkY29uZGl0aW9uYWxTdHJpbmc7CiAgICAgICAgICAgICBteSAkZnVuY3Rpb25OYW1lID0g
R2V0RnVuY3Rpb25OYW1lKCRjbGFzc05hbWUsICRmdW5jdGlvbik7CiAgICAgICAgICAgICBwdXNo
KEBoZWFkZXJDb250ZW50LCAiSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMICR7ZnVu
Y3Rpb25OYW1lfShKU0M6OkV4ZWNTdGF0ZSopO1xuIik7CiAgICAgICAgICAgICBwdXNoKEBoZWFk
ZXJDb250ZW50LCAiI2VuZGlmXG4iKSBpZiAkY29uZGl0aW9uYWxTdHJpbmc7CiAgICAgICAgIH0K
KworICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAkZW5kQXBwbGVDb3B5cmlnaHQpIGlmICRp
bkFwcGxlQ29weXJpZ2h0OwogICAgIH0KIAogICAgIGlmICgkbnVtQXR0cmlidXRlcyA+IDAgfHwg
ISRpbnRlcmZhY2UtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJOb0ludGVyZmFjZU9iamVjdCJ9KSB7
CkBAIC0xMDk0LDYgKzExNjYsMTAgQEAgc3ViIEdlbmVyYXRlSGVhZGVyCiAgICAgcHVzaChAaGVh
ZGVyQ29udGVudCwgIlxufSAvLyBuYW1lc3BhY2UgV2ViQ29yZVxuXG4iKTsKICAgICBwdXNoKEBo
ZWFkZXJDb250ZW50LCAiI2VuZGlmIC8vICR7Y29uZGl0aW9uYWxTdHJpbmd9XG5cbiIpIGlmICRj
b25kaXRpb25hbFN0cmluZzsKICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiI2VuZGlmXG4iKTsK
KworICAgIGlmICgkaW50ZXJmYWNlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiQXBwbGVDb3B5cmln
aHQifSkgeworICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCBzcGxpdCgiXHIiLCAkZW5kQXBw
bGVDb3B5cmlnaHQpKTsKKyAgICB9CiB9CiAKIHN1YiBHZW5lcmF0ZUF0dHJpYnV0ZXNIYXNoVGFi
bGUoJCQpCkBAIC0yMzgyLDcgKzI0NTgsMTkgQEAgc3ViIEdlbmVyYXRlSW1wbGVtZW50YXRpb24K
IAogICAgICMgRnVuY3Rpb25zCiAgICAgaWYgKCRudW1GdW5jdGlvbnMgPiAwKSB7CisgICAgICAg
IG15ICRpbkFwcGxlQ29weXJpZ2h0ID0gMDsKICAgICAgICAgZm9yZWFjaCBteSAkZnVuY3Rpb24g
KEB7JGludGVyZmFjZS0+ZnVuY3Rpb25zfSkgeworICAgICAgICAgICAgbXkgJG5lZWRzQXBwbGVD
b3B5cmlnaHQgPSAkZnVuY3Rpb24tPnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkFw
cGxlQ29weXJpZ2h0In07CisgICAgICAgICAgICBpZiAoJG5lZWRzQXBwbGVDb3B5cmlnaHQpIHsK
KyAgICAgICAgICAgICAgICBpZiAoISRpbkFwcGxlQ29weXJpZ2h0KSB7CisgICAgICAgICAgICAg
ICAgICAgIHB1c2goQGltcGxDb250ZW50LCAkYmVnaW5BcHBsZUNvcHlyaWdodEZvclNvdXJjZUZp
bGVzKTsKKyAgICAgICAgICAgICAgICAgICAgJGluQXBwbGVDb3B5cmlnaHQgPSAxOworICAgICAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgIH0gZWxzaWYgKCRpbkFwcGxlQ29weXJpZ2h0KSB7Cisg
ICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICRlbmRBcHBsZUNvcHlyaWdodCk7Cisg
ICAgICAgICAgICAgICAgJGluQXBwbGVDb3B5cmlnaHQgPSAwOworICAgICAgICAgICAgfQorCiAg
ICAgICAgICAgICBteSAkaXNDdXN0b20gPSBIYXNDdXN0b21NZXRob2QoJGZ1bmN0aW9uLT5zaWdu
YXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcyk7CiAgICAgICAgICAgICBteSAkaXNPdmVybG9hZGVk
ID0gJGZ1bmN0aW9uLT57b3ZlcmxvYWRzfSAmJiBAeyRmdW5jdGlvbi0+e292ZXJsb2Fkc319ID4g
MTsKICAgICAgICAgICAgIG15ICRyYWlzZXNFeGNlcHRpb24gPSAkZnVuY3Rpb24tPnNpZ25hdHVy
ZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IlJhaXNlc0V4Y2VwdGlvbiJ9OwpAQCAtMjQ5Nyw2ICsy
NTg1LDkgQEAgc3ViIEdlbmVyYXRlSW1wbGVtZW50YXRpb24KICAgICAgICAgICAgIH0KIAogICAg
ICAgICB9CisKKyAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICRlbmRBcHBsZUNvcHlyaWdodCkg
aWYgJGluQXBwbGVDb3B5cmlnaHQ7CisKICAgICB9CiAKICAgICBpZiAoJG5lZWRzTWFya0NoaWxk
cmVuICYmICEkaW50ZXJmYWNlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiSlNDdXN0b21NYXJrRnVu
Y3Rpb24ifSkgewpAQCAtMzIyOSw2ICszMzIwLDEwIEBAIHN1YiBHZW5lcmF0ZUNhbGxiYWNrSW1w
bGVtZW50YXRpb24KICAgICBwdXNoKEBpbXBsQ29udGVudCwgIlxufVxuIik7CiAgICAgbXkgJGNv
bmRpdGlvbmFsU3RyaW5nID0gJGNvZGVHZW5lcmF0b3ItPkdlbmVyYXRlQ29uZGl0aW9uYWxTdHJp
bmcoJGludGVyZmFjZSk7CiAgICAgcHVzaChAaW1wbENvbnRlbnQsICJcbiNlbmRpZiAvLyAke2Nv
bmRpdGlvbmFsU3RyaW5nfVxuIikgaWYgJGNvbmRpdGlvbmFsU3RyaW5nOworCisgICAgaWYgKCRp
bnRlcmZhY2UtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJBcHBsZUNvcHlyaWdodCJ9KSB7CisgICAg
ICAgIHB1c2goQGltcGxDb250ZW50LCBzcGxpdCgiXHIiLCAkZW5kQXBwbGVDb3B5cmlnaHQpKTsK
KyAgICB9CiB9CiAKIHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uRnVuY3Rpb25DYWxsKCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvck9i
akMucG0gYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JPYmpD
LnBtCmluZGV4IGViMTUzMjkzNDVhOGEwZjM5ZmE3YjhlMzA5ZmU0NWYxYjJjYzBmMWIuLjg2MWM1
NmZiZTFlYTkyNmRlZTY2M2RiYjJkMDJkOTJkOTYyMWUzYTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvck9iakMucG0KKysrIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yT2JqQy5wbQpAQCAtNDgsMTEg
KzQ4LDQ2IEBAIG15ICVwcml2YXRlSGVhZGVyRm9yd2FyZERlY2xhcmF0aW9uc0ZvclByb3RvY29s
cyA9ICgpOwogCiBteSBAaW50ZXJuYWxIZWFkZXJDb250ZW50ID0gKCk7CiAKK215IEBpbXBsQ29u
ZGl0aW9uYWxJbmNsdWRlcyA9ICgpOwogbXkgQGltcGxDb250ZW50SGVhZGVyID0gKCk7CiBteSBA
aW1wbENvbnRlbnQgPSAoKTsKIG15ICVpbXBsSW5jbHVkZXMgPSAoKTsKIG15IEBkZXBzQ29udGVu
dCA9ICgpOwogCitteSAkYmVnaW5BcHBsZUNvcHlyaWdodEZvckhlYWRlckZpbGVzID0gPDxFTkQ7
CisvLyAtLS0tLS0tIEJlZ2luIEFwcGxlIENvcHlyaWdodCAtLS0tLS0tCisvKgorICogQ29weXJp
Z2h0IChDKSAyMDA4LCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUGVy
bWlzc2lvbiBpcyBncmFudGVkIGJ5IEFwcGxlIHRvIHVzZSB0aGlzIGZpbGUgdG8gdGhlIGV4dGVu
dAorICogbmVjZXNzYXJ5IHRvIHJlbGluayB3aXRoIExHUEwgV2ViS2l0IGZpbGVzLgorICoKKyAq
IE5vIGxpY2Vuc2Ugb3IgcmlnaHRzIGFyZSBncmFudGVkIGJ5IEFwcGxlIGV4cHJlc3NseSBvciBi
eQorICogaW1wbGljYXRpb24sIGVzdG9wcGVsLCBvciBvdGhlcndpc2UsIHRvIEFwcGxlIHBhdGVu
dHMgYW5kCisgKiB0cmFkZW1hcmtzLiBGb3IgdGhlIHNha2Ugb2YgY2xhcml0eSwgbm8gbGljZW5z
ZSBvciByaWdodHMgYXJlCisgKiBncmFudGVkIGJ5IEFwcGxlIGV4cHJlc3NseSBvciBieSBpbXBs
aWNhdGlvbiwgZXN0b3BwZWwsIG9yIG90aGVyd2lzZSwKKyAqIHVuZGVyIGFueSBBcHBsZSBwYXRl
bnRzLCBjb3B5cmlnaHRzIGFuZCB0cmFkZW1hcmtzIHRvIHVuZGVybHlpbmcKKyAqIGltcGxlbWVu
dGF0aW9ucyBvZiBhbnkgYXBwbGljYXRpb24gcHJvZ3JhbW1pbmcgaW50ZXJmYWNlcyAoQVBJcykK
KyAqIG9yIHRvIGFueSBmdW5jdGlvbmFsaXR5IHRoYXQgaXMgaW52b2tlZCBieSBjYWxsaW5nIGFu
eSBBUEkuCisgKi8KKworRU5ECitteSAkYmVnaW5BcHBsZUNvcHlyaWdodEZvclNvdXJjZUZpbGVz
ID0gPDxFTkQ7CisvLyAtLS0tLS0tIEJlZ2luIEFwcGxlIENvcHlyaWdodCAtLS0tLS0tCisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDA4LCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogTm8gbGljZW5zZSBvciByaWdodHMgYXJlIGdyYW50ZWQgYnkgQXBwbGUgZXhwcmVzc2x5
IG9yIGJ5IGltcGxpY2F0aW9uLAorICogZXN0b3BwZWwsIG9yIG90aGVyd2lzZSwgdG8gQXBwbGUg
Y29weXJpZ2h0cywgcGF0ZW50cywgdHJhZGVtYXJrcywgdHJhZGUKKyAqIHNlY3JldHMgb3Igb3Ro
ZXIgcmlnaHRzLgorICovCisKK0VORAorbXkgJGVuZEFwcGxlQ29weXJpZ2h0ICAgPSA8PEVORDsK
Ky8vIC0tLS0tLS0gRW5kIEFwcGxlIENvcHlyaWdodCAgIC0tLS0tLS0KKworRU5ECisKICMgSGFz
aGVzCiBteSAlcHJvdG9jb2xUeXBlSGFzaCA9ICgiWFBhdGhOU1Jlc29sdmVyIiA9PiAxLCAiRXZl
bnRMaXN0ZW5lciIgPT4gMSwgIkV2ZW50VGFyZ2V0IiA9PiAxLCAiTm9kZUZpbHRlciIgPT4gMSwK
ICAgICAgICAgICAgICAgICAgICAgICAgICJTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJp
YnV0ZXMiID0+IDEsIApAQCAtNzYsNiArMTExLDcgQEAgbXkgJWJhc2VUeXBlSGFzaCA9ICgiT2Jq
ZWN0IiA9PiAxLCAiTm9kZSIgPT4gMSwgIk5vZGVMaXN0IiA9PiAxLCAiTmFtZWROb2RlTWFwIgog
ICAgICAgICAgICAgICAgICAgICAiU1ZHU3RyaW5nTGlzdCIgPT4gMSwgIlNWR1RyYW5zZm9ybSIg
PT4gMSwgIlNWR1RyYW5zZm9ybUxpc3QiID0+IDEsICJTVkdVbml0VHlwZXMiID0+IDEpOwogCiAj
IENvbnN0YW50cworbXkgJGJ1aWxkaW5nRm9ySVBob25lID0gKCRFTlZ7UExBVEZPUk1fTkFNRX0g
ZXEgImlwaG9uZW9zIiBvciAkRU5We1BMQVRGT1JNX05BTUV9IGVxICJpcGhvbmVzaW11bGF0b3Ii
KTsKIG15ICRudWxsYWJsZUluaXQgPSAiYm9vbCBpc051bGwgPSBmYWxzZTsiOwogbXkgJGV4Y2Vw
dGlvbkluaXQgPSAiV2ViQ29yZTo6RXhjZXB0aW9uQ29kZSBlYyA9IDA7IjsKIG15ICRqc0NvbnRl
eHRTZXR0ZXIgPSAiV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOyI7CkBAIC0y
MTQsNiArMjUwLDE4IEBAIHN1YiBSZWFkUHVibGljSW50ZXJmYWNlcwogICAgIG15ICRhY3R1YWxT
dXBlckNsYXNzOwogICAgICVwdWJsaWNJbnRlcmZhY2VzID0gKCk7CiAKKyAgICBteSBAYXJncyA9
IHF3KC1FIC1QIC14IG9iamVjdGl2ZS1jKTsKKyAgICAjIFNldCBpbmNsdWRlIHBhdGggdG8gZmlu
ZCA8d3RmL1BsYXRmb3JtLmg+LiAgV2Ugc2VhcmNoIEJVSUxUX1BST0RVQ1RTX0RJUgorICAgICMg
Zmlyc3QgZm9yIGxvY2FsIGRldmVsb3BlciBidWlsZHMsIHRoZW4gdGhlIGluc3RhbGxhdGlvbiBw
YXRoIGZvciBCJkkKKyAgICAjIGJ1aWxkcy4KKyAgICBwdXNoKEBhcmdzLCAiLUkiIC4gJEVOVntC
VUlMVF9QUk9EVUNUU19ESVJ9IC4gIi91c3IvbG9jYWwvaW5jbHVkZSIpIGlmICRFTlZ7QlVJTFRf
UFJPRFVDVFNfRElSfTsKKyAgICBwdXNoKEBhcmdzLCAiLUkiIC4gJEVOVntCVUlMVF9QUk9EVUNU
U19ESVJ9IC4gJEVOVntTREtST09UfSAuICIvdXNyL2xvY2FsL2luY2x1ZGUiKSBpZiAkRU5We0JV
SUxUX1BST0RVQ1RTX0RJUn07CisKKyAgICAjIFhjb2RlIDMuMSBpcyByZXF1aXJlZCBmb3IgU0RL
Uk9PVCB0byBiZSBzZXQuCisgICAgaWYgKCRFTlZ7U0RLUk9PVH0gJiYgJEVOVntTWVNURU1fTElC
UkFSWV9ESVJ9KSB7CisgICAgICAgIHB1c2goQGFyZ3MsICItSSIgLiAkRU5We0JVSUxUX1BST0RV
Q1RTX0RJUn0gLiAkRU5We1NES1JPT1R9IC4gIi91c3IvbG9jYWwvaW5jbHVkZSIpIGlmICRFTlZ7
QlVJTFRfUFJPRFVDVFNfRElSfTsKKyAgICAgICAgcHVzaChAYXJncywgIi1JIiAuICRFTlZ7U0RL
Uk9PVH0gLiAiL3Vzci9sb2NhbC9pbmNsdWRlIik7CisgICAgfQogICAgIG15ICRmaWxlTmFtZSA9
ICJXZWJDb3JlL2JpbmRpbmdzL29iamMvUHVibGljRE9NSW50ZXJmYWNlcy5oIjsKICAgICBteSAk
Z2NjTG9jYXRpb24gPSAiIjsKICAgICBpZiAoJEVOVntDQ30pIHsKQEAgLTIyNSw3ICsyNzMsMTMg
QEAgc3ViIFJlYWRQdWJsaWNJbnRlcmZhY2VzCiAgICAgfSBlbHNlIHsKICAgICAgICAgJGdjY0xv
Y2F0aW9uID0gIi91c3IvYmluL2djYyI7CiAgICAgfQotICAgIG9wZW4gRklMRSwgIi18IiwgJGdj
Y0xvY2F0aW9uLCAiLUUiLCAiLVAiLCAiLXgiLCAib2JqZWN0aXZlLWMiLAorCisgICAgaWYgKCRF
TlZ7U0RLUk9PVH0pIHsKKyAgICAgICAgIyBQTEFURk9STShJT1MpCisgICAgICAgIHB1c2goQGFy
Z3MsICItaXN5c3Jvb3QiLCAkRU5We1NES1JPT1R9KTsKKyAgICB9CisKKyAgICBvcGVuIEZJTEUs
ICItfCIsICRnY2NMb2NhdGlvbiwgQGFyZ3MsCiAgICAgICAgIChtYXAgeyAiLUQkXyIgfSBzcGxp
dCgvICsvLCAkZGVmaW5lcykpLCAiLURPQkpDX0NPREVfR0VORVJBVElPTiIsICRmaWxlTmFtZSBv
ciBkaWUgIkNvdWxkIG5vdCBvcGVuICRmaWxlTmFtZSI7CiAgICAgbXkgQGRvY3VtZW50Q29udGVu
dCA9IDxGSUxFPjsKICAgICBjbG9zZSBGSUxFOwpAQCAtMzUzLDYgKzQwNyw3IEBAIHN1YiBHZXRD
bGFzc05hbWUKIAogICAgICMgc3BlY2lhbCBjYXNlcwogICAgIHJldHVybiAiTlNTdHJpbmciIGlm
ICRjb2RlR2VuZXJhdG9yLT5Jc1N0cmluZ1R5cGUoJG5hbWUpIG9yICRuYW1lIGVxICJTZXJpYWxp
emVkU2NyaXB0VmFsdWUiOworICAgIHJldHVybiAiQ0dDb2xvclJlZiIgaWYgJG5hbWUgZXEgIkNv
bG9yIiBhbmQgJGJ1aWxkaW5nRm9ySVBob25lOwogICAgIHJldHVybiAiTlMkbmFtZSIgaWYgSXNO
YXRpdmVPYmpDVHlwZSgkbmFtZSk7CiAgICAgcmV0dXJuICJCT09MIiBpZiAkbmFtZSBlcSAiYm9v
bGVhbiI7CiAgICAgcmV0dXJuICJ1bnNpZ25lZCBjaGFyIiBpZiAkbmFtZSBlcSAib2N0ZXQiOwpA
QCAtNDgzLDYgKzUzOCwxNCBAQCBzdWIgSXNOYXRpdmVPYmpDVHlwZQogICAgIHJldHVybiAwOwog
fQogCitzdWIgSXNDb3JlRm91bmRhdGlvblR5cGUKK3sKKyAgICBteSAkdHlwZSA9IHNoaWZ0Owor
CisgICAgcmV0dXJuIDEgaWYgJHR5cGUgPX4gL14oQ0Z8Q0cpW0EtWmEtel0rUmVmJC87CisgICAg
cmV0dXJuIDA7Cit9CisKIHN1YiBTa2lwRnVuY3Rpb24KIHsKICAgICBteSAkZnVuY3Rpb24gPSBz
aGlmdDsKQEAgLTUxOCw3ICs1ODEsNiBAQCBzdWIgU2tpcEF0dHJpYnV0ZQogICAgIHJldHVybiAw
OwogfQogCi0KIHN1YiBHZXRPYmpDVHlwZQogewogICAgIG15ICR0eXBlID0gc2hpZnQ7CkBAIC01
MjcsNiArNTg5LDcgQEAgc3ViIEdldE9iakNUeXBlCiAgICAgcmV0dXJuICJpZCA8JG5hbWU+IiBp
ZiBJc1Byb3RvY29sVHlwZSgkdHlwZSk7CiAgICAgcmV0dXJuICRuYW1lIGlmICRjb2RlR2VuZXJh
dG9yLT5Jc1ByaW1pdGl2ZVR5cGUoJHR5cGUpIG9yICR0eXBlIGVxICJET01UaW1lU3RhbXAiOwog
ICAgIHJldHVybiAidW5zaWduZWQgc2hvcnQiIGlmICR0eXBlIGVxICJDb21wYXJlSG93IjsKKyAg
ICByZXR1cm4gJG5hbWUgaWYgSXNDb3JlRm91bmRhdGlvblR5cGUoJG5hbWUpOwogICAgIHJldHVy
biAiJG5hbWUgKiI7CiB9CiAKQEAgLTYxMiw3ICs2NzUsMTEgQEAgc3ViIEFkZEluY2x1ZGVzRm9y
VHlwZQogCiAgICAgaWYgKElzTmF0aXZlT2JqQ1R5cGUoJHR5cGUpKSB7CiAgICAgICAgIGlmICgk
dHlwZSBlcSAiQ29sb3IiKSB7Ci0gICAgICAgICAgICAkaW1wbEluY2x1ZGVzeyJDb2xvck1hYy5o
In0gPSAxOworICAgICAgICAgICAgaWYgKCRidWlsZGluZ0ZvcklQaG9uZSkgeworICAgICAgICAg
ICAgICAgICRpbXBsSW5jbHVkZXN7IkNvbG9yU3BhY2UuaCJ9ID0gMTsKKyAgICAgICAgICAgIH0g
ZWxzZSB7CisgICAgICAgICAgICAgICAgJGltcGxJbmNsdWRlc3siQ29sb3JNYWMuaCJ9ID0gMTsK
KyAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtNzUy
LDcgKzgxOSwxMSBAQCBzdWIgR2VuZXJhdGVIZWFkZXIKICAgICBteSAkbnVtRnVuY3Rpb25zID0g
QHskaW50ZXJmYWNlLT5mdW5jdGlvbnN9OwogCiAgICAgIyAtIEFkZCBkZWZhdWx0IGhlYWRlciB0
ZW1wbGF0ZQotICAgIEBoZWFkZXJDb250ZW50SGVhZGVyID0gc3BsaXQoIlxyIiwgJGhlYWRlckxp
Y2Vuc2VUZW1wbGF0ZSk7CisgICAgaWYgKCRpbnRlcmZhY2UtPmV4dGVuZGVkQXR0cmlidXRlcy0+
eyJBcHBsZUNvcHlyaWdodCJ9KSB7CisgICAgICAgIEBoZWFkZXJDb250ZW50SGVhZGVyID0gc3Bs
aXQoIlxyIiwgJGJlZ2luQXBwbGVDb3B5cmlnaHRGb3JIZWFkZXJGaWxlcyk7CisgICAgfSBlbHNl
IHsKKyAgICAgICAgQGhlYWRlckNvbnRlbnRIZWFkZXIgPSBzcGxpdCgiXHIiLCAkaGVhZGVyTGlj
ZW5zZVRlbXBsYXRlKTsKKyAgICB9CiAgICAgcHVzaChAaGVhZGVyQ29udGVudEhlYWRlciwgIlxu
Iik7CiAKICAgICAjIC0gSU5DTFVERVMgLQpAQCAtODQ4LDYgKzkxOSwxMSBAQCBzdWIgR2VuZXJh
dGVIZWFkZXIKIAogICAgICAgICAgICAgbXkgJHB1YmxpY0ludGVyZmFjZUtleSA9ICRwcm9wZXJ0
eSAuICI7IjsKIAorICAgICAgICAgICAgIyBGSVhNRTogVGhpcyBvbmx5IHdvcmtzIGZvciB0aGUg
Z2V0dGVyLCBidXQgbm90IHRoZSBzZXR0ZXIuICBOZWVkIHRvIHJlZmFjdG9yIHRoaXMgY29kZS4K
KyAgICAgICAgICAgIGlmICgkYnVpbGRpbmdGb3JUaWdlck9yRWFybGllciAmJiAhJGJ1aWxkaW5n
Rm9ySVBob25lIHx8IElzQ29yZUZvdW5kYXRpb25UeXBlKCRhdHRyaWJ1dGVUeXBlKSkgeworICAg
ICAgICAgICAgICAgICRwdWJsaWNJbnRlcmZhY2VLZXkgPSAiLSAoIiAuICRhdHRyaWJ1dGVUeXBl
IC4gIikiIC4gJGF0dHJpYnV0ZU5hbWUgLiAiOyI7CisgICAgICAgICAgICB9CisKICAgICAgICAg
ICAgIG15ICRhdmFpbGFiaWxpdHlNYWNybyA9ICIiOwogICAgICAgICAgICAgaWYgKGRlZmluZWQg
JHB1YmxpY0ludGVyZmFjZXN7JHB1YmxpY0ludGVyZmFjZUtleX0gYW5kIGxlbmd0aCAkcHVibGlj
SW50ZXJmYWNlc3skcHVibGljSW50ZXJmYWNlS2V5fSkgewogICAgICAgICAgICAgICAgICRhdmFp
bGFiaWxpdHlNYWNybyA9ICRwdWJsaWNJbnRlcmZhY2VzeyRwdWJsaWNJbnRlcmZhY2VLZXl9OwpA
QCAtODc1LDkgKzk1MSwzNCBAQCBzdWIgR2VuZXJhdGVIZWFkZXIKICAgICAgICAgICAgICAgICAk
ZmF0YWxFcnJvciA9IDE7CiAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgICRwcm9wZXJ0eSAu
PSAkZGVjbGFyYXRpb25TdWZmaXg7Ci0gICAgICAgICAgICBwdXNoKEBoZWFkZXJBdHRyaWJ1dGVz
LCAkcHJvcGVydHkpIGlmICRwdWJsaWM7Ci0gICAgICAgICAgICBwdXNoKEBwcml2YXRlSGVhZGVy
QXR0cmlidXRlcywgJHByb3BlcnR5KSB1bmxlc3MgJHB1YmxpYzsKKyAgICAgICAgICAgIGlmICgh
SXNDb3JlRm91bmRhdGlvblR5cGUoJGF0dHJpYnV0ZVR5cGUpKSB7CisgICAgICAgICAgICAgICAg
JHByb3BlcnR5IC49ICRkZWNsYXJhdGlvblN1ZmZpeDsKKyAgICAgICAgICAgICAgICBwdXNoKEBo
ZWFkZXJBdHRyaWJ1dGVzLCAkcHJvcGVydHkpIGlmICRwdWJsaWM7CisgICAgICAgICAgICAgICAg
cHVzaChAcHJpdmF0ZUhlYWRlckF0dHJpYnV0ZXMsICRwcm9wZXJ0eSkgdW5sZXNzICRwdWJsaWM7
CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIG15ICRhdHRyaWJ1dGVDb25k
aXRpb25hbFN0cmluZyA9ICRjb2RlR2VuZXJhdG9yLT5HZW5lcmF0ZUNvbmRpdGlvbmFsU3RyaW5n
KCRhdHRyaWJ1dGUtPnNpZ25hdHVyZSk7CisgICAgICAgICAgICAgICAgaWYgKCRhdHRyaWJ1dGVD
b25kaXRpb25hbFN0cmluZykgeworICAgICAgICAgICAgICAgICAgICBwdXNoKEBoZWFkZXJBdHRy
aWJ1dGVzLCAiI2lmICR7YXR0cmlidXRlQ29uZGl0aW9uYWxTdHJpbmd9XG4iKSBpZiAkcHVibGlj
OworICAgICAgICAgICAgICAgICAgICBwdXNoKEBwcml2YXRlSGVhZGVyQXR0cmlidXRlcywgIiNp
ZiAke2F0dHJpYnV0ZUNvbmRpdGlvbmFsU3RyaW5nfVxuIikgdW5sZXNzICRwdWJsaWM7CisgICAg
ICAgICAgICAgICAgfQorIAorICAgICAgICAgICAgICAgICMgLSBHRVRURVIKKyAgICAgICAgICAg
ICAgICBteSAkZ2V0dGVyID0gIi0gKCIgLiAkYXR0cmlidXRlVHlwZSAuICIpIiAuICRhdHRyaWJ1
dGVOYW1lIC4gJGRlY2xhcmF0aW9uU3VmZml4OworICAgICAgICAgICAgICAgIHB1c2goQGhlYWRl
ckF0dHJpYnV0ZXMsICRnZXR0ZXIpIGlmICRwdWJsaWM7CisgICAgICAgICAgICAgICAgcHVzaChA
cHJpdmF0ZUhlYWRlckF0dHJpYnV0ZXMsICRnZXR0ZXIpIHVubGVzcyAkcHVibGljOworIAorICAg
ICAgICAgICAgICAgICMgLSBTRVRURVIKKyAgICAgICAgICAgICAgICBpZiAoISRhdHRyaWJ1dGUt
PmlzUmVhZE9ubHkpIHsKKyAgICAgICAgICAgICAgICAgICAgbXkgJHNldHRlciA9ICItICh2b2lk
KSRzZXR0ZXJOYW1lKCIgLiAkYXR0cmlidXRlVHlwZSAuICIpbmV3IiAuIHVjZmlyc3QoJGF0dHJp
YnV0ZU5hbWUpIC4gJGRlY2xhcmF0aW9uU3VmZml4OworICAgICAgICAgICAgICAgICAgICBwdXNo
KEBoZWFkZXJBdHRyaWJ1dGVzLCAkc2V0dGVyKSBpZiAkcHVibGljOworICAgICAgICAgICAgICAg
ICAgICBwdXNoKEBwcml2YXRlSGVhZGVyQXR0cmlidXRlcywgJHNldHRlcikgdW5sZXNzICRwdWJs
aWM7CisgICAgICAgICAgICAgICAgfQorIAorICAgICAgICAgICAgICAgIGlmICgkYXR0cmlidXRl
Q29uZGl0aW9uYWxTdHJpbmcpIHsKKyAgICAgICAgICAgICAgICAgICAgcHVzaChAaGVhZGVyQXR0
cmlidXRlcywgIiNlbmRpZlxuIikgaWYgJHB1YmxpYzsKKyAgICAgICAgICAgICAgICAgICAgcHVz
aChAcHJpdmF0ZUhlYWRlckF0dHJpYnV0ZXMsICIjZW5kaWZcbiIpIHVubGVzcyAkcHVibGljOwor
ICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KICAgICAgICAgfQogCiAgICAgICAgIHB1
c2goQGhlYWRlckNvbnRlbnQsIEBoZWFkZXJBdHRyaWJ1dGVzKSBpZiBAaGVhZGVyQXR0cmlidXRl
cyA+IDA7CkBAIC04ODksNiArOTkwLDcgQEAgc3ViIEdlbmVyYXRlSGVhZGVyCiAKICAgICAjIC0g
QWRkIGZ1bmN0aW9ucy4KICAgICBpZiAoJG51bUZ1bmN0aW9ucyA+IDApIHsKKyAgICAgICAgbXkg
JWluQXBwbGVDb3B5cmlnaHQgPSAocHVibGljID0+IDAsIHByaXZhdGUgPT4gMCk7CiAgICAgICAg
IGZvcmVhY2ggbXkgJGZ1bmN0aW9uIChAeyRpbnRlcmZhY2UtPmZ1bmN0aW9uc30pIHsKICAgICAg
ICAgICAgIG5leHQgaWYgU2tpcEZ1bmN0aW9uKCRmdW5jdGlvbik7CiAgICAgICAgICAgICBuZXh0
IGlmICgkZnVuY3Rpb24tPnNpZ25hdHVyZS0+bmFtZSBlcSAic2V0IiBhbmQgJGludGVyZmFjZS0+
ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IlR5cGVkQXJyYXkifSk7CkBAIC04OTYsNiArOTk4LDcgQEAg
c3ViIEdlbmVyYXRlSGVhZGVyCiAKICAgICAgICAgICAgIG15ICRyZXR1cm5UeXBlID0gR2V0T2Jq
Q1R5cGUoJGZ1bmN0aW9uLT5zaWduYXR1cmUtPnR5cGUpOwogICAgICAgICAgICAgbXkgJG5lZWRz
RGVwcmVjYXRlZFZlcnNpb24gPSAoQHskZnVuY3Rpb24tPnBhcmFtZXRlcnN9ID4gMSBhbmQgJGZ1
bmN0aW9uLT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJPYmpDTGVnYWN5VW5uYW1l
ZFBhcmFtZXRlcnMifSk7CisgICAgICAgICAgICBteSAkbmVlZHNBcHBsZUNvcHlyaWdodCA9ICRm
dW5jdGlvbi0+c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiQXBwbGVDb3B5cmlnaHQi
fTsKICAgICAgICAgICAgIG15ICRudW1iZXJPZlBhcmFtZXRlcnMgPSBAeyRmdW5jdGlvbi0+cGFy
YW1ldGVyc307CiAgICAgICAgICAgICBteSAldHlwZXNUb0ZvcndhcmREZWNsYXJlID0gKCRmdW5j
dGlvbi0+c2lnbmF0dXJlLT50eXBlID0+IDEpOwogCkBAIC05NTAsNiArMTA1MywxOCBAQCBzdWIg
R2VuZXJhdGVIZWFkZXIKICAgICAgICAgICAgICAgICBBZGRGb3J3YXJkRGVjbGFyYXRpb25zRm9y
VHlwZSgkdHlwZSwgJHB1YmxpYykgdW5sZXNzICRwdWJsaWMgYW5kICRuZWVkc0RlcHJlY2F0ZWRW
ZXJzaW9uOwogICAgICAgICAgICAgfQogCisgICAgICAgICAgICBpZiAoJG5lZWRzQXBwbGVDb3B5
cmlnaHQpIHsKKyAgICAgICAgICAgICAgICBpZiAoISRpbkFwcGxlQ29weXJpZ2h0eyRwdWJsaWMg
PyAicHVibGljIiA6ICJwcml2YXRlIn0pIHsKKyAgICAgICAgICAgICAgICAgICAgcHVzaChAaGVh
ZGVyRnVuY3Rpb25zLCAkYmVnaW5BcHBsZUNvcHlyaWdodEZvckhlYWRlckZpbGVzKSBpZiAkcHVi
bGljOworICAgICAgICAgICAgICAgICAgICBwdXNoKEBwcml2YXRlSGVhZGVyRnVuY3Rpb25zLCAk
YmVnaW5BcHBsZUNvcHlyaWdodEZvckhlYWRlckZpbGVzKSB1bmxlc3MgJHB1YmxpYzsKKyAgICAg
ICAgICAgICAgICAgICAgJGluQXBwbGVDb3B5cmlnaHR7JHB1YmxpYyA/ICJwdWJsaWMiIDogInBy
aXZhdGUifSA9IDE7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfSBlbHNpZiAoJGlu
QXBwbGVDb3B5cmlnaHR7JHB1YmxpYyA/ICJwdWJsaWMiIDogInByaXZhdGUifSkgeworICAgICAg
ICAgICAgICAgIHB1c2goQGhlYWRlckZ1bmN0aW9ucywgJGVuZEFwcGxlQ29weXJpZ2h0KSBpZiAk
cHVibGljOworICAgICAgICAgICAgICAgIHB1c2goQHByaXZhdGVIZWFkZXJGdW5jdGlvbnMsICRl
bmRBcHBsZUNvcHlyaWdodCkgdW5sZXNzICRwdWJsaWM7CisgICAgICAgICAgICAgICAgJGluQXBw
bGVDb3B5cmlnaHR7JHB1YmxpYyA/ICJwdWJsaWMiIDogInByaXZhdGUifSA9IDA7CisJCQl9CisK
ICAgICAgICAgICAgIG15ICRmdW5jdGlvbkNvbmRpdGlvbmFsU3RyaW5nID0gJGNvZGVHZW5lcmF0
b3ItPkdlbmVyYXRlQ29uZGl0aW9uYWxTdHJpbmcoJGZ1bmN0aW9uLT5zaWduYXR1cmUpOwogICAg
ICAgICAgICAgaWYgKCRmdW5jdGlvbkNvbmRpdGlvbmFsU3RyaW5nKSB7CiAgICAgICAgICAgICAg
ICAgcHVzaChAaGVhZGVyRnVuY3Rpb25zLCAiI2lmICR7ZnVuY3Rpb25Db25kaXRpb25hbFN0cmlu
Z31cbiIpIGlmICRwdWJsaWM7CkBAIC05OTEsNiArMTEwNiw5IEBAIHN1YiBHZW5lcmF0ZUhlYWRl
cgogICAgICAgICAgICAgfQogICAgICAgICB9CiAKKyAgICAgICAgcHVzaChAaGVhZGVyRnVuY3Rp
b25zLCAkZW5kQXBwbGVDb3B5cmlnaHQpIGlmICRpbkFwcGxlQ29weXJpZ2h0eyJwdWJsaWMifTsK
KyAgICAgICAgcHVzaChAcHJpdmF0ZUhlYWRlckZ1bmN0aW9ucywgJGVuZEFwcGxlQ29weXJpZ2h0
KSBpZiAkaW5BcHBsZUNvcHlyaWdodHsicHJpdmF0ZSJ9OworCiAgICAgICAgIGlmIChAaGVhZGVy
RnVuY3Rpb25zID4gMCkgewogICAgICAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIlxuIikg
aWYgQGhlYWRlckF0dHJpYnV0ZXMgPiAwOwogICAgICAgICAgICAgcHVzaChAaGVhZGVyQ29udGVu
dCwgQGhlYWRlckZ1bmN0aW9ucyk7CkBAIC0xMDExLDExICsxMTI5LDE5IEBAIHN1YiBHZW5lcmF0
ZUhlYWRlcgogICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiXEBlbmRcbiIpOwogICAgIH0K
IAorICAgIGlmICgkaW50ZXJmYWNlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiQXBwbGVDb3B5cmln
aHQifSkgeworICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCBzcGxpdCgiXHIiLCAkZW5kQXBw
bGVDb3B5cmlnaHQpKTsKKyAgICB9CisKICAgICBteSAlYWx3YXlzR2VuZXJhdGVGb3JOb1NWR0J1
aWxkID0gbWFwIHsgJF8gPT4gMSB9IHF3KERPTUhUTUxFbWJlZEVsZW1lbnQgRE9NSFRNTE9iamVj
dEVsZW1lbnQpOwogCiAgICAgaWYgKEBwcml2YXRlSGVhZGVyQXR0cmlidXRlcyA+IDAgb3IgQHBy
aXZhdGVIZWFkZXJGdW5jdGlvbnMgPiAwIG9yIGV4aXN0cyAkYWx3YXlzR2VuZXJhdGVGb3JOb1NW
R0J1aWxkeyRjbGFzc05hbWV9KSB7CiAgICAgICAgICMgLSBQcml2YXRlIGNhdGVnb3J5IEBpbnRl
cmZhY2UKLSAgICAgICAgQHByaXZhdGVIZWFkZXJDb250ZW50SGVhZGVyID0gc3BsaXQoIlxyIiwg
JGhlYWRlckxpY2Vuc2VUZW1wbGF0ZSk7CisgICAgICAgIGlmICgkaW50ZXJmYWNlLT5leHRlbmRl
ZEF0dHJpYnV0ZXMtPnsiQXBwbGVDb3B5cmlnaHQifSkgeworICAgICAgICAgICAgQHByaXZhdGVI
ZWFkZXJDb250ZW50SGVhZGVyID0gc3BsaXQoIlxyIiwgJGJlZ2luQXBwbGVDb3B5cmlnaHRGb3JI
ZWFkZXJGaWxlcyk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBAcHJpdmF0ZUhlYWRl
ckNvbnRlbnRIZWFkZXIgPSBzcGxpdCgiXHIiLCAkaGVhZGVyTGljZW5zZVRlbXBsYXRlKTsKKyAg
ICAgICAgfQogICAgICAgICBwdXNoKEBwcml2YXRlSGVhZGVyQ29udGVudEhlYWRlciwgIlxuIik7
CiAKICAgICAgICAgbXkgJGNsYXNzSGVhZGVyTmFtZSA9IEdldENsYXNzSGVhZGVyTmFtZSgkY2xh
c3NOYW1lKTsKQEAgLTEwMjcsNiArMTE1MywxMCBAQCBzdWIgR2VuZXJhdGVIZWFkZXIKICAgICAg
ICAgcHVzaChAcHJpdmF0ZUhlYWRlckNvbnRlbnQsICJcbiIpIGlmIEBwcml2YXRlSGVhZGVyQXR0
cmlidXRlcyA+IDAgYW5kIEBwcml2YXRlSGVhZGVyRnVuY3Rpb25zID4gMDsKICAgICAgICAgcHVz
aChAcHJpdmF0ZUhlYWRlckNvbnRlbnQsIEBwcml2YXRlSGVhZGVyRnVuY3Rpb25zKSBpZiBAcHJp
dmF0ZUhlYWRlckZ1bmN0aW9ucyA+IDA7CiAgICAgICAgIHB1c2goQHByaXZhdGVIZWFkZXJDb250
ZW50LCAiXEBlbmRcbiIpOworCisgICAgICAgIGlmICgkaW50ZXJmYWNlLT5leHRlbmRlZEF0dHJp
YnV0ZXMtPnsiQXBwbGVDb3B5cmlnaHQifSkgeworICAgICAgICAgICAgcHVzaChAcHJpdmF0ZUhl
YWRlckNvbnRlbnQsIHNwbGl0KCJcciIsICRlbmRBcHBsZUNvcHlyaWdodCkpOworICAgICAgICB9
CiAgICAgfQogCiAgICAgdW5sZXNzICgkaXNQcm90b2NvbCkgewpAQCAtMTAzOSw3ICsxMTY5LDEx
IEBAIHN1YiBHZW5lcmF0ZUhlYWRlcgogICAgICAgICAkaW1wbFR5cGUgPSAkc3ZnTmF0aXZlVHlw
ZSBpZiAkc3ZnTmF0aXZlVHlwZTsKIAogICAgICAgICAjIEdlbmVyYXRlIGludGVyZmFjZSBkZWZp
bml0aW9ucy4gCi0gICAgICAgIEBpbnRlcm5hbEhlYWRlckNvbnRlbnQgPSBzcGxpdCgiXHIiLCAk
aW1wbGVtZW50YXRpb25MaWNlbnNlVGVtcGxhdGUpOworICAgICAgICBpZiAoJGludGVyZmFjZS0+
ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkFwcGxlQ29weXJpZ2h0In0pIHsKKyAgICAgICAgICAgIEBp
bnRlcm5hbEhlYWRlckNvbnRlbnQgPSBzcGxpdCgiXHIiLCAkYmVnaW5BcHBsZUNvcHlyaWdodEZv
ckhlYWRlckZpbGVzKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIEBpbnRlcm5hbEhl
YWRlckNvbnRlbnQgPSBzcGxpdCgiXHIiLCAkaW1wbGVtZW50YXRpb25MaWNlbnNlVGVtcGxhdGUp
OworICAgICAgICB9CiAKICAgICAgICAgcHVzaChAaW50ZXJuYWxIZWFkZXJDb250ZW50LCAiXG4j
aW1wb3J0IDxXZWJDb3JlLyRjbGFzc05hbWUuaD5cblxuIik7CiAgICAgICAgIHB1c2goQGludGVy
bmFsSGVhZGVyQ29udGVudCwgIiNpbXBvcnQgPFdlYkNvcmUvU1ZHQW5pbWF0ZWRQcm9wZXJ0eVRl
YXJPZmYuaD5cblxuIikgaWYgJHN2Z1Byb3BlcnR5VHlwZTsKQEAgLTExMDgsNyArMTI0MiwxMSBA
QCBzdWIgR2VuZXJhdGVJbXBsZW1lbnRhdGlvbgogICAgICRpbXBsVHlwZSA9ICRzdmdOYXRpdmVU
eXBlIGlmICRzdmdOYXRpdmVUeXBlOwogCiAgICAgIyAtIEFkZCBkZWZhdWx0IGhlYWRlciB0ZW1w
bGF0ZS4KLSAgICBAaW1wbENvbnRlbnRIZWFkZXIgPSBzcGxpdCgiXHIiLCAkaW1wbGVtZW50YXRp
b25MaWNlbnNlVGVtcGxhdGUpOworICAgIGlmICgkaW50ZXJmYWNlLT5leHRlbmRlZEF0dHJpYnV0
ZXMtPnsiQXBwbGVDb3B5cmlnaHQifSkgeworICAgICAgICBAaW1wbENvbnRlbnRIZWFkZXIgPSBz
cGxpdCgiXHIiLCAkYmVnaW5BcHBsZUNvcHlyaWdodEZvclNvdXJjZUZpbGVzKTsKKyAgICB9IGVs
c2UgeworICAgICAgICBAaW1wbENvbnRlbnRIZWFkZXIgPSBzcGxpdCgiXHIiLCAkaW1wbGVtZW50
YXRpb25MaWNlbnNlVGVtcGxhdGUpOworICAgIH0KIAogICAgICMgLSBJTkNMVURFUyAtCiAgICAg
cHVzaChAaW1wbENvbnRlbnRIZWFkZXIsICJcbiNpbXBvcnQgXCJjb25maWcuaFwiXG4iKTsKQEAg
LTEzMzUsOCArMTQ3MywxMyBAQCBzdWIgR2VuZXJhdGVJbXBsZW1lbnRhdGlvbgogICAgICAgICAg
ICAgICAgICRnZXR0ZXJDb250ZW50SGVhZCA9ICJraXQoJGdldHRlckNvbnRlbnRIZWFkIjsKICAg
ICAgICAgICAgICAgICAkZ2V0dGVyQ29udGVudFRhaWwgLj0gIikiOwogICAgICAgICAgICAgfSBl
bHNpZiAoJGlkbFR5cGUgZXEgIkNvbG9yIikgewotICAgICAgICAgICAgICAgICRnZXR0ZXJDb250
ZW50SGVhZCA9ICJXZWJDb3JlOjpuc0NvbG9yKCRnZXR0ZXJDb250ZW50SGVhZCI7Ci0gICAgICAg
ICAgICAgICAgJGdldHRlckNvbnRlbnRUYWlsIC49ICIpIjsKKyAgICAgICAgICAgICAgICBpZiAo
JGJ1aWxkaW5nRm9ySVBob25lKSB7CisgICAgICAgICAgICAgICAgICAgICRnZXR0ZXJDb250ZW50
SGVhZCA9ICJXZWJDb3JlOjpjYWNoZWRDR0NvbG9yKCRnZXR0ZXJDb250ZW50SGVhZCI7CisgICAg
ICAgICAgICAgICAgICAgICRnZXR0ZXJDb250ZW50VGFpbCAuPSAiLCBXZWJDb3JlOjpDb2xvclNw
YWNlRGV2aWNlUkdCKSI7CisgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAg
ICAgICAgJGdldHRlckNvbnRlbnRIZWFkID0gIldlYkNvcmU6Om5zQ29sb3IoJGdldHRlckNvbnRl
bnRIZWFkIjsKKyAgICAgICAgICAgICAgICAgICAgJGdldHRlckNvbnRlbnRUYWlsIC49ICIpIjsK
KyAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9IGVsc2lmICgkYXR0cmlidXRlLT5zaWdu
YXR1cmUtPnR5cGUgZXEgIlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSIpIHsKICAgICAgICAgICAgICAg
ICAkZ2V0dGVyQ29udGVudEhlYWQgPSAiJGdldHRlckNvbnRlbnRIZWFkIjsKICAgICAgICAgICAg
ICAgICAkZ2V0dGVyQ29udGVudFRhaWwgLj0gIi0+dG9TdHJpbmcoKSI7ICAgICAgICAgICAgICAg
IApAQCAtMTUwNyw2ICsxNjUwLDcgQEAgc3ViIEdlbmVyYXRlSW1wbGVtZW50YXRpb24KIAogICAg
ICMgLSBGdW5jdGlvbnMKICAgICBpZiAoJG51bUZ1bmN0aW9ucyA+IDApIHsKKyAgICAgICAgbXkg
JGluQXBwbGVDb3B5cmlnaHQgPSAwOwogICAgICAgICBmb3JlYWNoIG15ICRmdW5jdGlvbiAoQHsk
aW50ZXJmYWNlLT5mdW5jdGlvbnN9KSB7CiAgICAgICAgICAgICBuZXh0IGlmIFNraXBGdW5jdGlv
bigkZnVuY3Rpb24pOwogICAgICAgICAgICAgbmV4dCBpZiAoJGZ1bmN0aW9uLT5zaWduYXR1cmUt
Pm5hbWUgZXEgInNldCIgYW5kICRpbnRlcmZhY2UtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJUeXBl
ZEFycmF5In0pOwpAQCAtMTUxNCw2ICsxNjU4LDcgQEAgc3ViIEdlbmVyYXRlSW1wbGVtZW50YXRp
b24KIAogICAgICAgICAgICAgbXkgJGZ1bmN0aW9uTmFtZSA9ICRmdW5jdGlvbi0+c2lnbmF0dXJl
LT5uYW1lOwogICAgICAgICAgICAgbXkgJHJldHVyblR5cGUgPSBHZXRPYmpDVHlwZSgkZnVuY3Rp
b24tPnNpZ25hdHVyZS0+dHlwZSk7CisgICAgICAgICAgICBteSAkbmVlZHNBcHBsZUNvcHlyaWdo
dCA9ICRmdW5jdGlvbi0+c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiQXBwbGVDb3B5
cmlnaHQifTsKICAgICAgICAgICAgIG15ICRoYXNQYXJhbWV0ZXJzID0gQHskZnVuY3Rpb24tPnBh
cmFtZXRlcnN9OwogICAgICAgICAgICAgbXkgJHJhaXNlc0V4Y2VwdGlvbnMgPSAkZnVuY3Rpb24t
PnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IlJhaXNlc0V4Y2VwdGlvbiJ9OwogCkBA
IC0xNzI0LDYgKzE4NjksMTYgQEAgc3ViIEdlbmVyYXRlSW1wbGVtZW50YXRpb24KICAgICAgICAg
ICAgICAgICB9CiAgICAgICAgICAgICB9CiAKKyAgICAgICAgICAgIGlmICgkbmVlZHNBcHBsZUNv
cHlyaWdodCkgeworICAgICAgICAgICAgICAgIGlmICghJGluQXBwbGVDb3B5cmlnaHQpIHsKKyAg
ICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICRiZWdpbkFwcGxlQ29weXJpZ2h0
Rm9yU291cmNlRmlsZXMpOworICAgICAgICAgICAgICAgICAgICAkaW5BcHBsZUNvcHlyaWdodCA9
IDE7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfSBlbHNpZiAoJGluQXBwbGVDb3B5
cmlnaHQpIHsKKyAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgJGVuZEFwcGxlQ29w
eXJpZ2h0KTsKKyAgICAgICAgICAgICAgICAkaW5BcHBsZUNvcHlyaWdodCA9IDA7CisgICAgICAg
ICAgICB9CisKICAgICAgICAgICAgIG15ICRjb25kaXRpb25hbFN0cmluZyA9ICRjb2RlR2VuZXJh
dG9yLT5HZW5lcmF0ZUNvbmRpdGlvbmFsU3RyaW5nKCRmdW5jdGlvbi0+c2lnbmF0dXJlKTsKICAg
ICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiXG4jaWYgJHtjb25kaXRpb25hbFN0cmluZ31c
biIpIGlmICRjb25kaXRpb25hbFN0cmluZzsKIApAQCAtMTc1MCwxMSArMTkwNSwxNiBAQCBzdWIg
R2VuZXJhdGVJbXBsZW1lbnRhdGlvbgogICAgICAgICAgICAgIyBDbGVhciB0aGUgaGFzaAogICAg
ICAgICAgICAgJW5lZWRzQ3VzdG9tID0gKCk7CiAgICAgICAgIH0KKyAgICAgICAgcHVzaChAaW1w
bENvbnRlbnQsICRlbmRBcHBsZUNvcHlyaWdodCkgaWYgJGluQXBwbGVDb3B5cmlnaHQ7CiAgICAg
fQogCiAgICAgIyBFTkQgaW1wbGVtZW50YXRpb24KICAgICBwdXNoKEBpbXBsQ29udGVudCwgIlxA
ZW5kXG4iKTsKIAorICAgIGlmICgkaW50ZXJmYWNlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiQXBw
bGVDb3B5cmlnaHQifSkgeworICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgc3BsaXQoIlxyIiwg
JGVuZEFwcGxlQ29weXJpZ2h0KSk7CisgICAgfQorCiAgICAgIyBHZW5lcmF0ZSBpbnRlcm5hbCBp
bnRlcmZhY2VzCiAgICAgcHVzaChAaW1wbENvbnRlbnQsICJcbiRpbXBsVHlwZSogY29yZSgkY2xh
c3NOYW1lICp3cmFwcGVyKVxuIik7CiAgICAgcHVzaChAaW1wbENvbnRlbnQsICJ7XG4iKTsKQEAg
LTE3OTIsNiArMTk1MiwxMCBAQCBzdWIgR2VuZXJhdGVJbXBsZW1lbnRhdGlvbgogICAgICMgLSBF
bmQgdGhlIGlmZGVmIGNvbmRpdGlvbmFsIGlmIG5lY2Vzc2FyeQogICAgIHB1c2goQGltcGxDb250
ZW50LCAiXG4jZW5kaWYgLy8gJHtjb25kaXRpb25hbFN0cmluZ31cbiIpIGlmICRjb25kaXRpb25h
bFN0cmluZzsKIAorICAgIGlmICgkaW50ZXJmYWNlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiQXBw
bGVDb3B5cmlnaHQifSkgeworICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgc3BsaXQoIlxyIiwg
JGVuZEFwcGxlQ29weXJpZ2h0KSk7CisgICAgfQorCiAgICAgIyAtIEdlbmVyYXRlIGRlcGVuZGVu
Y2llcy4KICAgICBpZiAoJHdyaXRlRGVwZW5kZW5jaWVzICYmIEBhbmNlc3RvckludGVyZmFjZU5h
bWVzKSB7CiAgICAgICAgIHB1c2goQGRlcHNDb250ZW50LCAiJGNsYXNzTmFtZS5oIDogIiwgam9p
bigiICIsIG1hcCB7ICIkXy5pZGwiIH0gQGFuY2VzdG9ySW50ZXJmYWNlTmFtZXMpLCAiXG4iKTsK
QEAgLTE4MDMsMTEgKzE5NjcsMTEgQEAgc3ViIEdlbmVyYXRlSW1wbGVtZW50YXRpb24KIHN1YiBX
cml0ZURhdGEKIHsKICAgICBteSAkb2JqZWN0ID0gc2hpZnQ7Ci0gICAgbXkgJGRhdGFOb2RlID0g
c2hpZnQ7CisgICAgbXkgJGludGVyZmFjZSA9IHNoaWZ0OwogICAgIG15ICRvdXRwdXREaXIgPSBz
aGlmdDsKIAogICAgICMgT3BlbiBmaWxlcyBmb3Igd3JpdGluZy4uLgotICAgIG15ICRuYW1lID0g
JGRhdGFOb2RlLT5uYW1lOworICAgIG15ICRuYW1lID0gJGludGVyZmFjZS0+bmFtZTsKICAgICBt
eSAkcHJlZml4ID0gRmlsZU5hbWVQcmVmaXg7CiAgICAgbXkgJGhlYWRlckZpbGVOYW1lID0gIiRv
dXRwdXREaXIvJHByZWZpeCRuYW1lLmgiOwogICAgIG15ICRwcml2YXRlSGVhZGVyRmlsZU5hbWUg
PSAiJG91dHB1dERpci8kcHJlZml4JHtuYW1lfVByaXZhdGUuaCI7CkBAIC0xODE3LDcgKzE5ODEs
NyBAQCBzdWIgV3JpdGVEYXRhCiAKICAgICAjIFdyaXRlIHB1YmxpYyBoZWFkZXIuCiAgICAgbXkg
JGNvbnRlbnRzID0gam9pbiAiIiwgQGhlYWRlckNvbnRlbnRIZWFkZXI7Ci0gICAgbWFwIHsgJGNv
bnRlbnRzIC49ICJcQGNsYXNzICRfO1xuIiB9IHNvcnQga2V5cyglaGVhZGVyRm9yd2FyZERlY2xh
cmF0aW9ucyk7CisgICAgbWFwIHsgJGNvbnRlbnRzIC49IChJc0NvcmVGb3VuZGF0aW9uVHlwZSgk
XykgPyAidHlwZWRlZiBzdHJ1Y3QgIiAuIHN1YnN0cigkXywgMCwgLTMpIC4gIiogJF87XG4iIDog
IlxAY2xhc3MgJF87XG4iKSB9IHNvcnQga2V5cyglaGVhZGVyRm9yd2FyZERlY2xhcmF0aW9ucyk7
CiAgICAgbWFwIHsgJGNvbnRlbnRzIC49ICJcQHByb3RvY29sICRfO1xuIiB9IHNvcnQga2V5cygl
aGVhZGVyRm9yd2FyZERlY2xhcmF0aW9uc0ZvclByb3RvY29scyk7CiAKICAgICBteSAkaGFzRm9y
d2FyZERlY2xhcmF0aW9ucyA9IGtleXMoJWhlYWRlckZvcndhcmREZWNsYXJhdGlvbnMpICsga2V5
cyglaGVhZGVyRm9yd2FyZERlY2xhcmF0aW9uc0ZvclByb3RvY29scyk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0lETEF0dHJpYnV0ZXMudHh0IGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9JRExBdHRyaWJ1dGVzLnR4dAppbmRleCBlNGMyOTJi
MmMwM2E5ZDNkNTkxMWNjYmE4OTI1MjYxOWE5YmI1Nzg0Li44NWVhZDcxNWRjZDE3MmVjMGViNDQw
NTNjY2M3MDc1ZmZhNDEwM2U2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL0lETEF0dHJpYnV0ZXMudHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvSURMQXR0cmlidXRlcy50eHQKQEAgLTEwNywzICsxMDcsNiBAQCBUcmVhdFJldHVybmVk
TnVsbFN0cmluZ0FzPU51bGx8VW5kZWZpbmVkCiBUcmVhdFVuZGVmaW5lZEFzPU51bGxTdHJpbmcK
IFR5cGVkQXJyYXk9KgogVVJMCisKKyMgUExBVEZPUk0oSU9TKQorQXBwbGVDb3B5cmlnaHQKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvcHJlcHJvY2Vzc29yLnBt
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9wcmVwcm9jZXNzb3IucG0KaW5kZXgg
Y2IzMGY4MGMwMTZmZjc2MjNhOTBkM2M5YTk5ZGJjOGM0OTM3MmNkMi4uZTg0Y2Q0YWIwZGNhM2Rk
MGNkNWQyOTgzNmQxNWUzZTMzNGRmNzQ0NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy9wcmVwcm9jZXNzb3IucG0KKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy9wcmVwcm9jZXNzb3IucG0KQEAgLTU3LDYgKzU3LDkgQEAgc3ViIGFwcGx5UHJl
cHJvY2Vzc29yCiAgICAgICAgIHB1c2goQGFyZ3MsIHF3KC1FIC1QIC14IGMrKykpOwogICAgIH0K
IAorICAgIHB1c2goQGFyZ3MsICItSSIgLiAkRU5We0JVSUxUX1BST0RVQ1RTX0RJUn0gLiAiL3Vz
ci9sb2NhbC9pbmNsdWRlIikgaWYgJEVOVntCVUlMVF9QUk9EVUNUU19ESVJ9OworICAgIHB1c2go
QGFyZ3MsICItaXN5c3Jvb3QiLCAkRU5We1NES1JPT1R9KSBpZiAkRU5We1NES1JPT1R9OworCiAg
ICAgIyBSZW1vdmUgZG91YmxlIHF1b3RhdGlvbnMgZnJvbSAkZGVmaW5lcyBhbmQgZXh0cmFjdCBt
YWNyb3MuCiAgICAgIyBGb3IgZXhhbXBsZSwgaWYgJGRlZmluZXMgaXMgJyAiQT0xIiAiQj0xIiBD
PTEgIiIgICAgRCAgJywKICAgICAjIHRoZW4gaXQgaXMgY29udmVydGVkIGludG8gZm91ciBtYWNy
b3MgLURBPTEsIC1EQj0xLCAtREM9MSBhbmQgLURELgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYnJpZGdlL29iamMvb2JqY19jbGFzcy5tbSBiL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9vYmpj
L29iamNfY2xhc3MubW0KaW5kZXggNWJhY2Y3YTNlNDQ4MzAyYjVlNDcxNDE1YmQwY2EzMGVmNmU0
ZDk3ZC4uYThlZjUwZWQzNzliZTM1ZThlOGUwMWNjMTljNTczZTNjOWNkNjQ0NSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL29iamMvb2JqY19jbGFzcy5tbQorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9icmlkZ2Uvb2JqYy9vYmpjX2NsYXNzLm1tCkBAIC0xNjEsNyArMTYxLDExIEBAIEZp
ZWxkKiBPYmpjQ2xhc3M6OmZpZWxkTmFtZWQoUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSW5z
dGFuY2UqIGluc3RhbmNlKSBjb25zCiAgICAgQ1N0cmluZyBqc05hbWUgPSBuYW1lLmFzY2lpKCk7
CiAgICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBmaWVsZE5hbWUgPSBhZG9wdENGKENGU3RyaW5n
Q3JlYXRlV2l0aENTdHJpbmcoTlVMTCwganNOYW1lLmRhdGEoKSwga0NGU3RyaW5nRW5jb2RpbmdB
U0NJSSkpOwogICAgIGlkIHRhcmdldE9iamVjdCA9IChzdGF0aWNfY2FzdDxPYmpjSW5zdGFuY2Uq
PihpbnN0YW5jZSkpLT5nZXRPYmplY3QoKTsKKyNpZiBQTEFURk9STShJT1MpCisgICAgaWQgYXR0
cmlidXRlcyA9IFt0YXJnZXRPYmplY3QgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3RvcihhdHRy
aWJ1dGVLZXlzKV0gPyBbdGFyZ2V0T2JqZWN0IHBlcmZvcm1TZWxlY3RvcjpAc2VsZWN0b3IoYXR0
cmlidXRlS2V5cyldIDogbmlsOworI2Vsc2UKICAgICBpZCBhdHRyaWJ1dGVzID0gW3RhcmdldE9i
amVjdCBhdHRyaWJ1dGVLZXlzXTsKKyNlbmRpZgogICAgIGlmIChhdHRyaWJ1dGVzKSB7CiAgICAg
ICAgIC8vIENsYXNzIG92ZXJyaWRlcyBhdHRyaWJ1dGVLZXlzLCB1c2UgdGhhdCBhcnJheSBvZiBr
ZXkgbmFtZXMuCiAgICAgICAgIHVuc2lnbmVkIGNvdW50ID0gW2F0dHJpYnV0ZXMgY291bnRdOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL29iamMvb2JqY19pbnN0YW5jZS5tbSBi
L1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9vYmpjL29iamNfaW5zdGFuY2UubW0KaW5kZXggZDFkMzdm
NTdmODdlYWVmNWJlZTgxMjdjYjg4Y2I2NDQyNDBkZjNkYi4uM2NhNzM1N2YxMzhkZTdlZWI2MDc4
MzgwY2E0NTU5NDVjZjA3MDlmMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL29i
amMvb2JqY19pbnN0YW5jZS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2Uvb2JqYy9vYmpj
X2luc3RhbmNlLm1tCkBAIC0zNyw2ICszNywxMCBAQAogI2ltcG9ydCAicnVudGltZS9GdW5jdGlv
blByb3RvdHlwZS5oIgogI2ltcG9ydCA8d3RmL0Fzc2VydGlvbnMuaD4KIAorI2lmIFBMQVRGT1JN
KElPUykKKyNpbXBvcnQgPEZvdW5kYXRpb24vTlNNYXBUYWJsZS5oPgorI2VuZGlmIC8vIFBMQVRG
T1JNKElPUykKKwogI2lmZGVmIE5ERUJVRwogI2RlZmluZSBPQkpDX0xPRyhmb3JtYXRBbmRBcmdz
Li4uKSAoKHZvaWQpMCkKICNlbHNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jb25maWcu
aCBiL1NvdXJjZS9XZWJDb3JlL2NvbmZpZy5oCmluZGV4IDY1MzczMWMyYTlhYzBkZjY1ZjVjMWM5
NTVjZTRlYjQ5ZTdkNmRiMmQuLmZmNjNjZDU4MDMxYjNiM2E2ODdmNmJkMjA2NTI0NTYwNjBmYjI2
YjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2NvbmZpZy5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2NvbmZpZy5oCkBAIC0xMDAsNyArMTAwLDcgQEAKICNlbmRpZgogI2VuZGlmCiAKLSNpZiBQ
TEFURk9STShNQUMpCisjaWYgUExBVEZPUk0oTUFDKSAmJiAhUExBVEZPUk0oSU9TKQogLy8gTmV3
IHRoZW1lCiAjZGVmaW5lIFdURl9VU0VfTkVXX1RIRU1FIDEKICNlbmRpZiAvLyBQTEFURk9STShN
QUMpCkBAIC0xMjUsNiArMTI1LDExIEBAIHR5cGVkZWYgZmxvYXQgQ0dGbG9hdDsKICNkZWZpbmUg
V1RGX1VTRV9DQSAxCiAjZW5kaWYKIAorI2lmIFBMQVRGT1JNKElPUykKKyNkZWZpbmUgV0VCQ09S
RV9OQVZJR0FUT1JfUExBVEZPUk0gd2tHZXRQbGF0Zm9ybU5hbWVGb3JOYXZpZ2F0b3IoKTsKKyNk
ZWZpbmUgV0VCQ09SRV9OQVZJR0FUT1JfVkVORE9SIHdrR2V0VmVuZG9yTmFtZUZvck5hdmlnYXRv
cigpOworI2VuZGlmCisKIC8vIEZJWE1FOiBNb3ZlIHRoaXMgdG8gSmF2YVNjcmlwdENvcmUvd3Rm
L1BsYXRmb3JtLmgsIHdoaWNoIGlzIHdoZXJlIHdlIGRlZmluZSBXVEZfVVNFX0FWRk9VTkRBVElP
TiBvbiB0aGUgTWFjLgogLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTY3MzM0CiAjaWYgUExBVEZPUk0oV0lOKSAmJiBVU0UoQ0cpICYmIEhBVkUoQVZDRikKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9k
b20vRG9jdW1lbnQuY3BwCmluZGV4IGU4NmRmOWZkNzFjZGYzMjBjOGU0MjhjMzRkNTllZTljN2Fj
NTRhZWIuLjRiNWE4ODI3N2EwMmIyMThiZjZmYzIyYThjMTU1YzEyNjI5YTRiMzEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
ZG9tL0RvY3VtZW50LmNwcApAQCAtNDc4OSw3ICs0Nzg5LDcgQEAgSFRNTENhbnZhc0VsZW1lbnQq
IERvY3VtZW50OjpnZXRDU1NDYW52YXNFbGVtZW50KGNvbnN0IFN0cmluZyYgbmFtZSkKICNpZiBF
TkFCTEUoSU9TX1RFWFRfQVVUT1NJWklORykKIHZvaWQgRG9jdW1lbnQ6OmFkZEF1dG9TaXppbmdO
b2RlKE5vZGUqIG5vZGUsIGZsb2F0IGNhbmRpZGF0ZVNpemUpCiB7Ci0gICAgVGV4dEF1dG9TaXpp
bmdLZXkga2V5KG5vZGUtPnJlbmRlcmVyKCktPnN0eWxlKCksICZkb2N1bWVudCgpKTsKKyAgICBU
ZXh0QXV0b1NpemluZ0tleSBrZXkoJm5vZGUtPnJlbmRlcmVyKCktPnN0eWxlKCksICZkb2N1bWVu
dCgpKTsKICAgICBUZXh0QXV0b1NpemluZ01hcDo6QWRkUmVzdWx0IHJlc3VsdCA9IG1fdGV4dEF1
dG9TaXplZE5vZGVzLmFkZChrZXksIG51bGxwdHIpOwogICAgIGlmIChyZXN1bHQuaXNOZXdFbnRy
eSkKICAgICAgICAgcmVzdWx0Lml0ZXJhdG9yLT52YWx1ZSA9IFRleHRBdXRvU2l6aW5nVmFsdWU6
OmNyZWF0ZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmggYi9T
b3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaAppbmRleCA0YmEwYzVjNzQzZWQyMTA3MmJkNzBi
Y2U1NzIxZmFmMzk5OWUyYTVjLi4zMGQ0MmRjZDlhYWM3NWNjNzdkNzM4M2Q5YzkxMjAyZmMxZDMy
ODIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaApAQCAtMTY1LDggKzE2NSw4IEBAIHN0cnVjdCBBbm5v
dGF0ZWRSZWdpb25WYWx1ZTsKIAogI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMpCiAjaWYgUExBVEZP
Uk0oSU9TKQotI2luY2x1ZGUgIkRvY3VtZW50SU9TRm9yd2FyZC5oIgotI2VuZGlmCisjaW5jbHVk
ZSA8V2ViS2l0QWRkaXRpb25zL0RvY3VtZW50SU9TRm9yd2FyZC5oPgorI2VuZGlmIC8vIFBMQVRG
T1JNKElPUykKIGNsYXNzIFRvdWNoOwogY2xhc3MgVG91Y2hMaXN0OwogI2VuZGlmCkBAIC0xMTE0
LDcgKzExMTQsNyBAQCBwdWJsaWM6CiAKICNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQogI2lmIFBM
QVRGT1JNKElPUykKLSNpbmNsdWRlICJEb2N1bWVudElPUy5oIgorI2luY2x1ZGUgPFdlYktpdEFk
ZGl0aW9ucy9Eb2N1bWVudElPUy5oPgogI2Vsc2UKICAgICBQYXNzUmVmUHRyPFRvdWNoPiBjcmVh
dGVUb3VjaChET01XaW5kb3cqLCBFdmVudFRhcmdldCosIGludCBpZGVudGlmaWVyLCBpbnQgcGFn
ZVgsIGludCBwYWdlWSwgaW50IHNjcmVlblgsIGludCBzY3JlZW5ZLCBpbnQgcmFkaXVzWCwgaW50
IHJhZGl1c1ksIGZsb2F0IHJvdGF0aW9uQW5nbGUsIGZsb2F0IGZvcmNlLCBFeGNlcHRpb25Db2Rl
JikgY29uc3Q7CiAjZW5kaWYgLy8gUExBVEZPUk0oSU9TKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvZG9tL0RvY3VtZW50LmlkbCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5pZGwK
aW5kZXggYjBkOGQyZmI2ZWMxNDk0Njg1N2FkYzk4ZTEwZjc4OGE5NjI2MmFiNC4uZTg0YjU4NmVl
YjM1ZDlmMmNiOTQ4YTNhYjc3ZmQyMzExODA0NjY2YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvZG9tL0RvY3VtZW50LmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaWRs
CkBAIC0zMjMsNyArMzIzLDcgQEAKICAgICAvLyBGSVhNRTogQ29uc2lkZXIgZGVmaW5pbmcgYW4g
RU5BQkxFIG1hY3JvIGZvciBpT1MgdG91Y2ggZXZlbnQgY29kZSwgc2F5IElPU19UT1VDSF9FVkVO
VFMsCiAgICAgLy8gYW5kL29yIG1vZGlmeWluZyB0aGUgYmluZGluZ3Mgc2NyaXB0cyB0byBzdXBw
b3J0IGdlbmVyYXRpbmcgbW9yZSBjb21wbGljYXRlZCBjb25kaXRpb25hbCBjb2RlLgogI2lmIGRl
ZmluZWQoV1RGX1BMQVRGT1JNX0lPUykgJiYgV1RGX1BMQVRGT1JNX0lPUwotI2luY2x1ZGUgIkRv
Y3VtZW50SU9TLmlkbCIKKyNpbmNsdWRlIDxXZWJLaXRBZGRpdGlvbnMvRG9jdW1lbnRJT1MuaWRs
PgogI2Vsc2UKICAgICBbUmV0dXJuTmV3T2JqZWN0LCBSYWlzZXNFeGNlcHRpb25dIFRvdWNoIGNy
ZWF0ZVRvdWNoKFtEZWZhdWx0PVVuZGVmaW5lZF0gb3B0aW9uYWwgRE9NV2luZG93IHdpbmRvdywK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW0Rl
ZmF1bHQ9VW5kZWZpbmVkXSBvcHRpb25hbCBFdmVudFRhcmdldCB0YXJnZXQsCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9kb20vaW9zL1RvdWNoRXZlbnRzLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9pb3MvVG91Y2hFdmVudHMuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQwY2Y3YTZkYzFiOTkwOTE5YWJl
ZDk2MzMzZDQ0Y2ZiMWJhNWQ5NTMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9k
b20vaW9zL1RvdWNoRXZlbnRzLmNwcApAQCAtMCwwICsxLDM2IEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRT
IENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lu
Y2x1ZGUgImNvbmZpZy5oIgorCisjaWYgUExBVEZPUk0oSU9TKSAmJiBFTkFCTEUoVE9VQ0hfRVZF
TlRTKQorCisjaW5jbHVkZSA8V2ViS2l0QWRkaXRpb25zL0RvY3VtZW50SU9TLmNwcD4KKyNpbmNs
dWRlIDxXZWJLaXRBZGRpdGlvbnMvR2VzdHVyZUV2ZW50SU9TLmNwcD4KKyNpbmNsdWRlIDxXZWJL
aXRBZGRpdGlvbnMvVG91Y2guY3BwPgorI2luY2x1ZGUgPFdlYktpdEFkZGl0aW9ucy9Ub3VjaEV2
ZW50LmNwcD4KKyNpbmNsdWRlIDxXZWJLaXRBZGRpdGlvbnMvVG91Y2hMaXN0LmNwcD4KKworI2Vu
ZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0FwcGx5U3R5bGVDb21tYW5k
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvQXBwbHlTdHlsZUNvbW1hbmQuY3BwCmluZGV4
IGQzMDdhZjBhYmZmMmVmMzRmNjMwYTlmNWM0N2YzZTliYTg4YzEwMjUuLjk1MzEwZjVmMjY5Y2Y5
NzM2NjEwZTcyMzAwYTNmMjU3NjdiYjJkNjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvQXBwbHlTdHlsZUNvbW1hbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
QXBwbHlTdHlsZUNvbW1hbmQuY3BwCkBAIC0yNTUsMTAgKzI1NSwxOCBAQCB2b2lkIEFwcGx5U3R5
bGVDb21tYW5kOjphcHBseUJsb2NrU3R5bGUoRWRpdGluZ1N0eWxlICpzdHlsZSkKICAgICBpZiAo
dmlzaWJsZVN0YXJ0LmlzTnVsbCgpIHx8IHZpc2libGVTdGFydC5pc09ycGhhbigpIHx8IHZpc2li
bGVFbmQuaXNOdWxsKCkgfHwgdmlzaWJsZUVuZC5pc09ycGhhbigpKQogICAgICAgICByZXR1cm47
CiAKKyNpZiAhUExBVEZPUk0oSU9TKQogICAgIC8vIFNhdmUgYW5kIHJlc3RvcmUgdGhlIHNlbGVj
dGlvbiBlbmRwb2ludHMgdXNpbmcgdGhlaXIgaW5kaWNlcyBpbiB0aGUgZG9jdW1lbnQsIHNpbmNl
CisjZWxzZQorICAgIC8vIFNhdmUgYW5kIHJlc3RvcmUgdGhlIHNlbGVjdGlvbiBlbmRwb2ludHMg
dXNpbmcgdGhlaXIgaW5kaWNlcyBpbiB0aGUgZWRpdGFibGUgcm9vdCwgc2luY2UKKyNlbmRpZgog
ICAgIC8vIGFkZEJsb2NrU3R5bGVJZk5lZWRlZCBtYXkgbW92ZVBhcmFncmFwaHMsIHdoaWNoIGNh
biByZW1vdmUgdGhlc2UgZW5kcG9pbnRzLgogICAgIC8vIENhbGN1bGF0ZSBzdGFydCBhbmQgZW5k
IGluZGljZXMgZnJvbSB0aGUgc3RhcnQgb2YgdGhlIHRyZWUgdGhhdCB0aGV5J3JlIGluLgorI2lm
ICFQTEFURk9STShJT1MpCiAgICAgTm9kZSogc2NvcGUgPSBoaWdoZXN0QW5jZXN0b3IodmlzaWJs
ZVN0YXJ0LmRlZXBFcXVpdmFsZW50KCkuZGVwcmVjYXRlZE5vZGUoKSk7CisjZWxzZQorICAgIE5v
ZGUqIHNjb3BlID0gaGlnaGVzdEVkaXRhYmxlUm9vdCh2aXNpYmxlU3RhcnQuZGVlcEVxdWl2YWxl
bnQoKSk7CisjZW5kaWYKICAgICBSZWZQdHI8UmFuZ2U+IHN0YXJ0UmFuZ2UgPSBSYW5nZTo6Y3Jl
YXRlKGRvY3VtZW50KCksIGZpcnN0UG9zaXRpb25Jbk5vZGUoc2NvcGUpLCB2aXNpYmxlU3RhcnQu
ZGVlcEVxdWl2YWxlbnQoKS5wYXJlbnRBbmNob3JlZEVxdWl2YWxlbnQoKSk7CiAgICAgUmVmUHRy
PFJhbmdlPiBlbmRSYW5nZSA9IFJhbmdlOjpjcmVhdGUoZG9jdW1lbnQoKSwgZmlyc3RQb3NpdGlv
bkluTm9kZShzY29wZSksIHZpc2libGVFbmQuZGVlcEVxdWl2YWxlbnQoKS5wYXJlbnRBbmNob3Jl
ZEVxdWl2YWxlbnQoKSk7CiAgICAgaW50IHN0YXJ0SW5kZXggPSBUZXh0SXRlcmF0b3I6OnJhbmdl
TGVuZ3RoKHN0YXJ0UmFuZ2UuZ2V0KCksIHRydWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvZWRpdGluZy9Db21wb3NpdGVFZGl0Q29tbWFuZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL0NvbXBvc2l0ZUVkaXRDb21tYW5kLmNwcAppbmRleCBhNjMwNzQ3MDUyMTgyMDViM2UwODAy
MTAyZjFiODFiMzM4YWJhOTg1Li4wNjlkNGQ2MTZhYmJjMGMwMGU0ODdiN2E2OGMyNzNmNWYxMTRl
NzVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0NvbXBvc2l0ZUVkaXRDb21t
YW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0NvbXBvc2l0ZUVkaXRDb21tYW5k
LmNwcApAQCAtNzIsNiArNzIsMTAgQEAKICNpbmNsdWRlICJEZWxldGVCdXR0b25Db250cm9sbGVy
LmgiCiAjZW5kaWYKIAorI2lmIFBMQVRGT1JNKElPUykKKyNpbmNsdWRlICJCcmVha0Jsb2NrcXVv
dGVDb21tYW5kLmgiCisjZW5kaWYKKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiB1c2luZyBuYW1l
c3BhY2UgSFRNTE5hbWVzOwpAQCAtMTAyLDYgKzEwNiwxNCBAQCB2b2lkIEVkaXRDb21tYW5kQ29t
cG9zaXRpb246OnVuYXBwbHkoKQogICAgIC8vIExvdyBsZXZlbCBvcGVyYXRpb25zLCBsaWtlIFJl
bW92ZU5vZGVDb21tYW5kLCBkb24ndCByZXF1aXJlIGEgbGF5b3V0IGJlY2F1c2UgdGhlIGhpZ2gg
bGV2ZWwgb3BlcmF0aW9ucyB0aGF0IHVzZSB0aGVtIHBlcmZvcm0gb25lCiAgICAgLy8gaWYgb25l
IGlzIG5lY2Vzc2FyeSAobGlrZSBmb3IgdGhlIGNyZWF0aW9uIG9mIFZpc2libGVQb3NpdGlvbnMp
LgogICAgIG1fZG9jdW1lbnQtPnVwZGF0ZUxheW91dElnbm9yZVBlbmRpbmdTdHlsZXNoZWV0cygp
OworI2lmIFBMQVRGT1JNKElPUykKKyAgICAvLyBGSVhNRTogV2hlcmUgc2hvdWxkIGlQaG9uZSBj
b2RlIGRlYWwgd2l0aCB0aGUgY29tcG9zaXRpb24/CisgICAgLy8gU2luY2UgZWRpdGluZyBjb21t
YW5kcyBkb24ndCBzYXZlL3Jlc3RvcmUgdGhlIGNvbXBvc2l0aW9uLCB1bmRvaW5nIHdpdGhvdXQg
Zml4aW5nCisgICAgLy8gdXAgdGhlIGNvbXBvc2l0aW9uIHdpbGwgbGVhdmUgYSBzdGFsZSwgaW52
YWxpZCBjb21wb3NpdGlvbiwgYXMgaW4gPHJkYXI6Ly9wcm9ibGVtLzY4MzE2Mzc+LgorICAgIC8v
IERlc2t0b3AgaGFuZGxlcyB0aGlzIGluIC1bV2ViSFRNTFZpZXcgX3VwZGF0ZVNlbGVjdGlvbkZv
cklucHV0TWFuYWdlcl0sIGJ1dCB0aGUgcGhvbmUKKyAgICAvLyBnb2VzIGFub3RoZXIgcm91dGUu
CisgICAgZnJhbWUtPmVkaXRvcigpLmNhbmNlbENvbXBvc2l0aW9uKCk7CisjZW5kaWYKIAogICAg
IHsKICNpZiBFTkFCTEUoREVMRVRJT05fVUkpCkBAIC0xOTAsNiArMjAyLDEwIEBAIHZvaWQgQ29t
cG9zaXRlRWRpdENvbW1hbmQ6OmFwcGx5KCkKICAgICAgICAgY2FzZSBFZGl0QWN0aW9uU2V0V3Jp
dGluZ0RpcmVjdGlvbjoKICAgICAgICAgY2FzZSBFZGl0QWN0aW9uQ3V0OgogICAgICAgICBjYXNl
IEVkaXRBY3Rpb25VbnNwZWNpZmllZDoKKyNpZiBQTEFURk9STShJT1MpCisgICAgICAgIGNhc2Ug
RWRpdEFjdGlvbkRlbGV0ZToKKyAgICAgICAgY2FzZSBFZGl0QWN0aW9uRGljdGF0aW9uOgorI2Vu
ZGlmCiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgIEFT
U0VSVF9OT1RfUkVBQ0hFRCgpOwpAQCAtNDg2LDYgKzUwMiw0OSBAQCB2b2lkIENvbXBvc2l0ZUVk
aXRDb21tYW5kOjpzcGxpdFRleHROb2RlQ29udGFpbmluZ0VsZW1lbnQoUGFzc1JlZlB0cjxUZXh0
PiB0ZXh0LAogICAgIGFwcGx5Q29tbWFuZFRvQ29tcG9zaXRlKFNwbGl0VGV4dE5vZGVDb250YWlu
aW5nRWxlbWVudENvbW1hbmQ6OmNyZWF0ZSh0ZXh0LCBvZmZzZXQpKTsKIH0KIAorI2lmIFBMQVRG
T1JNKElPUykKK3ZvaWQgQ29tcG9zaXRlRWRpdENvbW1hbmQ6OmlucHV0VGV4dChjb25zdCBTdHJp
bmcmIHRleHQsIGJvb2wgc2VsZWN0SW5zZXJ0ZWRUZXh0KQoreworICAgIHVuc2lnbmVkIG9mZnNl
dCA9IDA7CisgICAgdW5zaWduZWQgbGVuZ3RoID0gdGV4dC5sZW5ndGgoKTsKKyAgICAKKyAgICBS
ZWZQdHI8Q29udGFpbmVyTm9kZT4gc2NvcGU7CisgICAgdW5zaWduZWQgc3RhcnRJbmRleCA9IGlu
ZGV4Rm9yVmlzaWJsZVBvc2l0aW9uKGVuZGluZ1NlbGVjdGlvbigpLnZpc2libGVTdGFydCgpLCBz
Y29wZSk7CisgICAgCisgICAgc2l6ZV90IG5ld2xpbmU7CisgICAgZG8geworICAgICAgICBuZXds
aW5lID0gdGV4dC5maW5kKCdcbicsIG9mZnNldCk7CisgICAgICAgIGlmIChuZXdsaW5lICE9IG9m
ZnNldCkgeworICAgICAgICAgICAgaW50IHN1YnN0cmluZ0xlbmd0aCA9IG5ld2xpbmUgPT0gbm90
Rm91bmQgPyBsZW5ndGggLSBvZmZzZXQgOiBuZXdsaW5lIC0gb2Zmc2V0OworICAgICAgICAgICAg
UmVmUHRyPEluc2VydFRleHRDb21tYW5kPiBjb21tYW5kID0gSW5zZXJ0VGV4dENvbW1hbmQ6OmNy
ZWF0ZShkb2N1bWVudCgpLCB0ZXh0LnN1YnN0cmluZyhvZmZzZXQsIHN1YnN0cmluZ0xlbmd0aCks
IGZhbHNlKTsKKyAgICAgICAgICAgIGFwcGx5Q29tbWFuZFRvQ29tcG9zaXRlKGNvbW1hbmQpOwor
ICAgICAgICB9CisgICAgICAgIGlmIChuZXdsaW5lICE9IG5vdEZvdW5kKSB7CisgICAgICAgICAg
ICBWaXNpYmxlUG9zaXRpb24gY2FyZXQoZW5kaW5nU2VsZWN0aW9uKCkudmlzaWJsZVN0YXJ0KCkp
OworICAgICAgICAgICAgaWYgKGVuY2xvc2luZ05vZGVPZlR5cGUoY2FyZXQuZGVlcEVxdWl2YWxl
bnQoKSwgJmlzTWFpbEJsb2NrcXVvdGUpKSB7CisgICAgICAgICAgICAgICAgLy8gRklYTUU6IEJy
ZWFraW5nIGEgYmxvY2txdW90ZSB3aGVuIHRoZSBjYXJldCBpcyBqdXN0IGFmdGVyIGEgc3BhY2Ug
d2lsbCBjb2xsYXBzZSB0aGUgCisgICAgICAgICAgICAgICAgLy8gc3BhY2UuIE1vZGlmeSBzdGFy
dEluZGV4IG9yIGxlbmd0aCB0byBjb21wZW5zYXRlIGZvciB0aGlzIHNvIHRoYXQgdGhlIGVuZGlu
ZyBzZWxlY3Rpb24gCisgICAgICAgICAgICAgICAgLy8gd2lsbCBiZSBwb3NpdGlvbmVkIGNvcnJl
Y3RseS4KKyAgICAgICAgICAgICAgICAvLyA8cmRhcjovL3Byb2JsZW0vOTkxNDQ2Mj4gYnJlYWtp
bmcgYSBNYWlsIGJsb2NrcXVvdGUganVzdCBhZnRlciBhIHNwYWNlIGNvbGxhcHNlcyB0aGUgc3Bh
Y2UKKyAgICAgICAgICAgICAgICBpZiAoY2FyZXQucHJldmlvdXMoKS5jaGFyYWN0ZXJBZnRlcigp
ID09ICcgJykgeworICAgICAgICAgICAgICAgICAgICBpZiAoIW9mZnNldCAmJiAhc3RhcnRJbmRl
eCkKKyAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0SW5kZXgtLTsKKyAgICAgICAgICAgICAg
ICAgICAgZWxzZSBpZiAoIWxlbmd0aCkKKyAgICAgICAgICAgICAgICAgICAgICAgIGxlbmd0aC0t
OworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBhcHBseUNvbW1hbmRUb0NvbXBv
c2l0ZShCcmVha0Jsb2NrcXVvdGVDb21tYW5kOjpjcmVhdGUoZG9jdW1lbnQoKSkpOworICAgICAg
ICAgICAgfSBlbHNlCisgICAgICAgICAgICAgICAgaW5zZXJ0TGluZUJyZWFrKCk7CisgICAgICAg
IH0KKyAgICAgICAgICAgIAorICAgICAgICBvZmZzZXQgPSBuZXdsaW5lICsgMTsKKyAgICB9IHdo
aWxlIChuZXdsaW5lICE9IG5vdEZvdW5kICYmIG9mZnNldCAhPSBsZW5ndGgpOworICAgIAorICAg
IGlmIChzZWxlY3RJbnNlcnRlZFRleHQpCisgICAgICAgIHNldEVuZGluZ1NlbGVjdGlvbihWaXNp
YmxlU2VsZWN0aW9uKHZpc2libGVQb3NpdGlvbkZvckluZGV4KHN0YXJ0SW5kZXgsIHNjb3BlLmdl
dCgpKSwgdmlzaWJsZVBvc2l0aW9uRm9ySW5kZXgoc3RhcnRJbmRleCArIGxlbmd0aCwgc2NvcGUu
Z2V0KCkpKSk7Cit9CisjZW5kaWYKKwogdm9pZCBDb21wb3NpdGVFZGl0Q29tbWFuZDo6aW5zZXJ0
VGV4dEludG9Ob2RlKFBhc3NSZWZQdHI8VGV4dD4gbm9kZSwgdW5zaWduZWQgb2Zmc2V0LCBjb25z
dCBTdHJpbmcmIHRleHQpCiB7CiAgICAgaWYgKCF0ZXh0LmlzRW1wdHkoKSkKQEAgLTUzNSw3ICs1
OTQsMTEgQEAgdm9pZCBDb21wb3NpdGVFZGl0Q29tbWFuZDo6cmVwbGFjZVRleHRJbk5vZGVQcmVz
ZXJ2aW5nTWFya2VycyhQYXNzUmVmUHRyPFRleHQ+IHAKICAgICByZXBsYWNlVGV4dEluTm9kZShu
b2RlLCBvZmZzZXQsIGNvdW50LCByZXBsYWNlbWVudFRleHQpOwogICAgIFJlZlB0cjxSYW5nZT4g
bmV3UmFuZ2UgPSBSYW5nZTo6Y3JlYXRlKGRvY3VtZW50KCksIG5vZGUsIG9mZnNldCwgbm9kZSwg
b2Zmc2V0ICsgcmVwbGFjZW1lbnRUZXh0Lmxlbmd0aCgpKTsKICAgICBmb3IgKHNpemVfdCBpID0g
MDsgaSA8IG1hcmtlcnMuc2l6ZSgpOyArK2kpCisjaWYgUExBVEZPUk0oSU9TKQorICAgICAgICBt
YXJrZXJDb250cm9sbGVyLmFkZE1hcmtlcihuZXdSYW5nZS5nZXQoKSwgbWFya2Vyc1tpXS50eXBl
KCksIG1hcmtlcnNbaV0uZGVzY3JpcHRpb24oKSwgbWFya2Vyc1tpXS5hbHRlcm5hdGl2ZXMoKSwg
bWFya2Vyc1tpXS5tZXRhZGF0YSgpKTsKKyNlbHNlCiAgICAgICAgIG1hcmtlckNvbnRyb2xsZXIu
YWRkTWFya2VyKG5ld1JhbmdlLmdldCgpLCBtYXJrZXJzW2ldLnR5cGUoKSwgbWFya2Vyc1tpXS5k
ZXNjcmlwdGlvbigpKTsKKyNlbmRpZiAvLyBQTEFURk9STShJT1MpCiB9CiAKIFBvc2l0aW9uIENv
bXBvc2l0ZUVkaXRDb21tYW5kOjpwb3NpdGlvbk91dHNpZGVUYWJTcGFuKGNvbnN0IFBvc2l0aW9u
JiBwb3MpCkBAIC0xMjAxLDcgKzEyNjQsMTEgQEAgdm9pZCBDb21wb3NpdGVFZGl0Q29tbWFuZDo6
bW92ZVBhcmFncmFwaHMoY29uc3QgVmlzaWJsZVBvc2l0aW9uJiBzdGFydE9mUGFyYWdyYXAKICAg
ICAvLyBhbnl0aGluZyBpZiB3ZSdyZSBnaXZlbiBhbiBlbXB0eSBwYXJhZ3JhcGgsIGJ1dCBhbiBl
bXB0eSBwYXJhZ3JhcGggY2FuIGhhdmUgc3R5bGUKICAgICAvLyB0b28sIDxkaXY+PGI+PGJyPjwv
Yj48L2Rpdj4gZm9yIGV4YW1wbGUuICBTYXZlIGl0IHNvIHRoYXQgd2UgY2FuIHByZXNlcnZlIGl0
IGxhdGVyLgogICAgIFJlZlB0cjxFZGl0aW5nU3R5bGU+IHN0eWxlSW5FbXB0eVBhcmFncmFwaDsK
KyNpZiAhUExBVEZPUk0oSU9TKQogICAgIGlmIChzdGFydE9mUGFyYWdyYXBoVG9Nb3ZlID09IGVu
ZE9mUGFyYWdyYXBoVG9Nb3ZlICYmIHByZXNlcnZlU3R5bGUpIHsKKyNlbHNlCisgICAgaWYgKHN0
YXJ0T2ZQYXJhZ3JhcGhUb01vdmUgPT0gZW5kT2ZQYXJhZ3JhcGhUb01vdmUgJiYgcHJlc2VydmVT
dHlsZSAmJiBpc1JpY2hseUVkaXRhYmxlUG9zaXRpb24oZGVzdGluYXRpb24uZGVlcEVxdWl2YWxl
bnQoKSkpIHsKKyNlbmRpZgogICAgICAgICBzdHlsZUluRW1wdHlQYXJhZ3JhcGggPSBFZGl0aW5n
U3R5bGU6OmNyZWF0ZShzdGFydE9mUGFyYWdyYXBoVG9Nb3ZlLmRlZXBFcXVpdmFsZW50KCkpOwog
ICAgICAgICBzdHlsZUluRW1wdHlQYXJhZ3JhcGgtPm1lcmdlVHlwaW5nU3R5bGUoZG9jdW1lbnQo
KSk7CiAgICAgICAgIC8vIFRoZSBtb3ZlZCBwYXJhZ3JhcGggc2hvdWxkIGFzc3VtZSB0aGUgYmxv
Y2sgc3R5bGUgb2YgdGhlIGRlc3RpbmF0aW9uLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9Db21wb3NpdGVFZGl0Q29tbWFuZC5oIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9D
b21wb3NpdGVFZGl0Q29tbWFuZC5oCmluZGV4IGUyYTQ5OTJiNzBkNjdkNThkNmY1ZTg2YjBlYjc2
NjMxZDFjZTU0YmQuLjI4ZjcwMmRiMjMwNjMyNDI1ZDI0MjZjZWM0ZmE1NjM4OGZlMjc5OGUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvQ29tcG9zaXRlRWRpdENvbW1hbmQuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0NvbXBvc2l0ZUVkaXRDb21tYW5kLmgKQEAgLTEw
NCw2ICsxMDQsOSBAQCBwcm90ZWN0ZWQ6CiAgICAgdm9pZCBkZWxldGVTZWxlY3Rpb24oYm9vbCBz
bWFydERlbGV0ZSA9IGZhbHNlLCBib29sIG1lcmdlQmxvY2tzQWZ0ZXJEZWxldGUgPSB0cnVlLCBi
b29sIHJlcGxhY2UgPSBmYWxzZSwgYm9vbCBleHBhbmRGb3JTcGVjaWFsRWxlbWVudHMgPSB0cnVl
LCBib29sIHNhbml0aXplTWFya3VwID0gdHJ1ZSk7CiAgICAgdm9pZCBkZWxldGVTZWxlY3Rpb24o
Y29uc3QgVmlzaWJsZVNlbGVjdGlvbiYsIGJvb2wgc21hcnREZWxldGUgPSBmYWxzZSwgYm9vbCBt
ZXJnZUJsb2Nrc0FmdGVyRGVsZXRlID0gdHJ1ZSwgYm9vbCByZXBsYWNlID0gZmFsc2UsIGJvb2wg
ZXhwYW5kRm9yU3BlY2lhbEVsZW1lbnRzID0gdHJ1ZSwgYm9vbCBzYW5pdGl6ZU1hcmt1cCA9IHRy
dWUpOwogICAgIHZpcnR1YWwgdm9pZCBkZWxldGVUZXh0RnJvbU5vZGUoUGFzc1JlZlB0cjxUZXh0
PiwgdW5zaWduZWQgb2Zmc2V0LCB1bnNpZ25lZCBjb3VudCk7CisjaWYgUExBVEZPUk0oSU9TKQor
ICAgIHZvaWQgaW5wdXRUZXh0KGNvbnN0IFN0cmluZyYsIGJvb2wgc2VsZWN0SW5zZXJ0ZWRUZXh0
ID0gZmFsc2UpOworI2VuZGlmCiAgICAgYm9vbCBpc1JlbW92YWJsZUJsb2NrKGNvbnN0IE5vZGUq
KTsKICAgICB2b2lkIGluc2VydE5vZGVBZnRlcihQYXNzUmVmUHRyPE5vZGU+LCBQYXNzUmVmUHRy
PE5vZGU+IHJlZkNoaWxkKTsKICAgICB2b2lkIGluc2VydE5vZGVBdChQYXNzUmVmUHRyPE5vZGU+
LCBjb25zdCBQb3NpdGlvbiYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9E
ZWxldGVCdXR0b24uaCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRGVsZXRlQnV0dG9uLmgKaW5k
ZXggZGVjMWZjYTNiNWJlZGFhMjNhZmVhOWJlMGQxMGRiNWRlNGU5MzFlMy4uMzRlNGNjMDVjNDMy
YWIxNjA1MTMzMGEyZjE1Mzg5MTJmN2ZhNGM0YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9EZWxldGVCdXR0b24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0RlbGV0
ZUJ1dHRvbi5oCkBAIC0zNCw3ICszNCw5IEBAIGNsYXNzIERlbGV0ZUJ1dHRvbiA6IHB1YmxpYyBI
VE1MSW1hZ2VFbGVtZW50IHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxEZWxldGVC
dXR0b24+IGNyZWF0ZShEb2N1bWVudCYpOwogCisjaWYgIVBMQVRGT1JNKElPUykKICAgICB2aXJ0
dWFsIGJvb2wgd2lsbFJlc3BvbmRUb01vdXNlQ2xpY2tFdmVudHMoKSBPVkVSUklERSB7IHJldHVy
biB0cnVlOyB9CisjZW5kaWYgLy8gIVBMQVRGT1JNKElPUykKIAogcHJpdmF0ZToKICAgICBleHBs
aWNpdCBEZWxldGVCdXR0b24oRG9jdW1lbnQmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvRGVsZXRlQnV0dG9uQ29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL0RlbGV0ZUJ1dHRvbkNvbnRyb2xsZXIuY3BwCmluZGV4IGVmNzg2YjliN2MzZTc1YjlmM2Fj
MzM5MzMwNjNlODY5MzNmNjY3MDQuLmE3ODc2OWMzZjMzYzAwZDFiZWZjNDZiZDVkMDE4YTY5YzJk
OTI0YTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRGVsZXRlQnV0dG9uQ29u
dHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9EZWxldGVCdXR0b25Db250
cm9sbGVyLmNwcApAQCAtMzMxLDYgKzMzMSw3IEBAIHZvaWQgRGVsZXRlQnV0dG9uQ29udHJvbGxl
cjo6aGlkZSgpCiAKIHZvaWQgRGVsZXRlQnV0dG9uQ29udHJvbGxlcjo6ZW5hYmxlKCkKIHsKKyNp
ZiAhUExBVEZPUk0oSU9TKQogICAgIEFTU0VSVChtX2Rpc2FibGVTdGFjayA+IDApOwogICAgIGlm
IChtX2Rpc2FibGVTdGFjayA+IDApCiAgICAgICAgIG1fZGlzYWJsZVN0YWNrLS07CkBAIC0zNDEs
MTMgKzM0MiwxNiBAQCB2b2lkIERlbGV0ZUJ1dHRvbkNvbnRyb2xsZXI6OmVuYWJsZSgpCiAgICAg
ICAgIG1fZnJhbWUuZG9jdW1lbnQoKS0+dXBkYXRlU3R5bGVJZk5lZWRlZCgpOwogICAgICAgICBz
aG93KGVuY2xvc2luZ0RlbGV0YWJsZUVsZW1lbnQobV9mcmFtZS5zZWxlY3Rpb24oKS5zZWxlY3Rp
b24oKSkpOwogICAgIH0KKyNlbmRpZgogfQogCiB2b2lkIERlbGV0ZUJ1dHRvbkNvbnRyb2xsZXI6
OmRpc2FibGUoKQogeworI2lmICFQTEFURk9STShJT1MpCiAgICAgaWYgKGVuYWJsZWQoKSkKICAg
ICAgICAgaGlkZSgpOwogICAgIG1fZGlzYWJsZVN0YWNrKys7CisjZW5kaWYKIH0KIAogY2xhc3Mg
UmVtb3ZlVGFyZ2V0Q29tbWFuZCA6IHB1YmxpYyBDb21wb3NpdGVFZGl0Q29tbWFuZCB7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0RlbGV0ZVNlbGVjdGlvbkNvbW1hbmQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9EZWxldGVTZWxlY3Rpb25Db21tYW5kLmNwcAppbmRl
eCBiM2FjNTAwNWM0MThmZGNhNWQxYzJlMmI2YThiYmFjZDc3ZDFkNGY3Li4yYjU0NTdmYzMyZTAy
YjYzZTBhODkzYjQ3OGQyZWY3ZDY5ZTFkNzEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL0RlbGV0ZVNlbGVjdGlvbkNvbW1hbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvRGVsZXRlU2VsZWN0aW9uQ29tbWFuZC5jcHAKQEAgLTg2MSw3ICs4NjEsMjQgQEAgdm9p
ZCBEZWxldGVTZWxlY3Rpb25Db21tYW5kOjpkb0FwcGx5KCkKICAgICAgICAgaW5zZXJ0Tm9kZUF0
KHBsYWNlaG9sZGVyLmdldCgpLCBtX2VuZGluZ1Bvc2l0aW9uKTsKICAgICB9CiAKKyNpZiBQTEFU
Rk9STShJT1MpCisgICAgLy8gVGhpcyBjaGVja2luZyBpcyBkdWUgdG8gaXBob25lIHNob3dzIHRo
ZSBsYXN0IGVudGVyZWQgY2hhcmFjdGVyIG1vbWVudGFyaWx5LCByZW1vdmluZyBhbmQgYWRkaW5n
IGJhY2sgdGhlIAorICAgIC8vIHNwYWNlIHdoZW4gZGVsZXRpbmcgcGFzc3dvcmQgY2F1c2Ugc3Bh
Y2UgYmVlbiBzaG93ZWQgaW5zZWN1cmVseS4KKyAgICBib29sIGlzU2VjdXJlID0gTk87CisgICAg
Tm9kZSogbm9kZSA9IG1fZW5kaW5nUG9zaXRpb24uZGVwcmVjYXRlZE5vZGUoKTsKKyAgICBpZiAo
bm9kZSAmJiBub2RlLT5pc1RleHROb2RlKCkpIHsKKyAgICAgICAgVGV4dCogdGV4dE5vZGUgPSBz
dGF0aWNfY2FzdDxUZXh0Kj4obm9kZSk7ICAgIAorICAgICAgICBpZiAodGV4dE5vZGUtPmxlbmd0
aCgpID4gMCkgeworICAgICAgICAgICAgUmVuZGVyT2JqZWN0KiByZW5kZXJlciA9IHRleHROb2Rl
LT5yZW5kZXJlcigpOworICAgICAgICAgICAgaXNTZWN1cmUgPSByZW5kZXJlci0+c3R5bGUoKS50
ZXh0U2VjdXJpdHkoKSAhPSBUU05PTkU7CisgICAgICAgIH0KKyAgICB9CisgICAgICAgIAorICAg
IGlmICghaXNTZWN1cmUpCisgICAgICAgIHJlYmFsYW5jZVdoaXRlc3BhY2VBdChtX2VuZGluZ1Bv
c2l0aW9uKTsKKyNlbHNlCiAgICAgcmViYWxhbmNlV2hpdGVzcGFjZUF0KG1fZW5kaW5nUG9zaXRp
b24pOworI2VuZGlmCiAKICAgICBjYWxjdWxhdGVUeXBpbmdTdHlsZUFmdGVyRGVsZXRlKCk7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRGVsZXRlU2VsZWN0aW9uQ29tbWFu
ZC5oIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9EZWxldGVTZWxlY3Rpb25Db21tYW5kLmgKaW5k
ZXggMzQyYjRiNzk0NTRiYmMyZTEwODI1ZWE3ZDk3ZWRjYjM0ZTlhYTJlNy4uNGMwZjcyM2RlZTQz
NzdhYThkMWE4NGVmMTBjNzdiZjNmZTMxYjczMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9EZWxldGVTZWxlY3Rpb25Db21tYW5kLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZWRp
dGluZy9EZWxldGVTZWxlY3Rpb25Db21tYW5kLmgKQEAgLTQzLDggKzQzLDEwIEBAIHB1YmxpYzoK
ICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBEZWxldGVTZWxlY3Rpb25Db21tYW5kKHNlbGVj
dGlvbiwgc21hcnREZWxldGUsIG1lcmdlQmxvY2tzQWZ0ZXJEZWxldGUsIHJlcGxhY2UsIGV4cGFu
ZEZvclNwZWNpYWxFbGVtZW50cywgc2FuaXRpemVNYXJrdXApKTsKICAgICB9CiAKLXByaXZhdGU6
Citwcm90ZWN0ZWQ6CiAgICAgRGVsZXRlU2VsZWN0aW9uQ29tbWFuZChEb2N1bWVudCYsIGJvb2wg
c21hcnREZWxldGUsIGJvb2wgbWVyZ2VCbG9ja3NBZnRlckRlbGV0ZSwgYm9vbCByZXBsYWNlLCBi
b29sIGV4cGFuZEZvclNwZWNpYWxFbGVtZW50cywgYm9vbCBzYW50aXplTWFya3VwKTsKKworcHJp
dmF0ZToKICAgICBEZWxldGVTZWxlY3Rpb25Db21tYW5kKGNvbnN0IFZpc2libGVTZWxlY3Rpb24m
LCBib29sIHNtYXJ0RGVsZXRlLCBib29sIG1lcmdlQmxvY2tzQWZ0ZXJEZWxldGUsIGJvb2wgcmVw
bGFjZSwgYm9vbCBleHBhbmRGb3JTcGVjaWFsRWxlbWVudHMsIGJvb2wgc2FuaXRpemVNYXJrdXAp
OwogCiAgICAgdmlydHVhbCB2b2lkIGRvQXBwbHkoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvRWRpdEFjdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0QWN0
aW9uLmgKaW5kZXggOTEyZTkzMTJiM2VhMjI3ZjY4MGIzMjk5ZjBlOTdkMGY0N2Q2ZGMzOC4uM2Qz
OTc1OTliNWYzY2RlNTkxOTRhZDE1NjFiY2IzM2YwYWE5OTUxNSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvZWRpdGluZy9FZGl0QWN0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9FZGl0QWN0aW9uLmgKQEAgLTU3LDYgKzU3LDEwIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAg
ICAgICAgRWRpdEFjdGlvbkN1dCwKICAgICAgICAgRWRpdEFjdGlvbkJvbGQsCiAgICAgICAgIEVk
aXRBY3Rpb25JdGFsaWNzLAorI2lmIFBMQVRGT1JNKElPUykKKyAgICAgICAgRWRpdEFjdGlvbkRl
bGV0ZSwKKyAgICAgICAgRWRpdEFjdGlvbkRpY3RhdGlvbiwKKyNlbmRpZgogICAgICAgICBFZGl0
QWN0aW9uUGFzdGUsCiAgICAgICAgIEVkaXRBY3Rpb25QYXN0ZUZvbnQsCiAgICAgICAgIEVkaXRB
Y3Rpb25QYXN0ZVJ1bGVyLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0
Q29tbWFuZC5oIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0Q29tbWFuZC5oCmluZGV4IDJl
MzRhYWZiYzc5Mjg4MWQxNzk2YmZhNDMxMDgyNmIyMWIzZGM5MjMuLjI0YzQxMDQ3YTE4NzY4ZGNi
MWUzOTkwOTUxMThkNmIzZWVlYjliYTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvRWRpdENvbW1hbmQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRDb21tYW5k
LmgKQEAgLTUxLDYgKzUxLDEwIEBAIHB1YmxpYzoKICAgICBjb25zdCBWaXNpYmxlU2VsZWN0aW9u
JiBzdGFydGluZ1NlbGVjdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fc3RhcnRpbmdTZWxlY3Rpb247
IH0KICAgICBjb25zdCBWaXNpYmxlU2VsZWN0aW9uJiBlbmRpbmdTZWxlY3Rpb24oKSBjb25zdCB7
IHJldHVybiBtX2VuZGluZ1NlbGVjdGlvbjsgfQogCisjaWYgUExBVEZPUk0oSU9TKQorICAgIHZp
cnR1YWwgYm9vbCBpc0luc2VydFRleHRDb21tYW5kKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0K
KyNlbmRpZgorICAgIAogICAgIHZpcnR1YWwgYm9vbCBpc1NpbXBsZUVkaXRDb21tYW5kKCkgY29u
c3QgeyByZXR1cm4gZmFsc2U7IH0KICAgICB2aXJ0dWFsIGJvb2wgaXNDb21wb3NpdGVFZGl0Q29t
bWFuZCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdmlydHVhbCBib29sIGlzRWRpdENv
bW1hbmRDb21wb3NpdGlvbigpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRpbmdTdHlsZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL0VkaXRpbmdTdHlsZS5jcHAKaW5kZXggYWRkZGIxMmE4NzY4NWVlZWRhMGQ5ZmE3ZTk3
Y2NiZjY2MjFkOTgxMS4uMzY0ZmY4MDU0Y2NmZTQxZDhjYjAyYmQ2M2M2NGZmNTQzYTUwNzk4NyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0aW5nU3R5bGUuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdGluZ1N0eWxlLmNwcApAQCAtNzEsNiArNzEsMTAg
QEAgc3RhdGljIGNvbnN0IENTU1Byb3BlcnR5SUQgZWRpdGluZ1Byb3BlcnRpZXNbXSA9IHsKICAg
ICBDU1NQcm9wZXJ0eVdoaXRlU3BhY2UsCiAgICAgQ1NTUHJvcGVydHlXaWRvd3MsCiAgICAgQ1NT
UHJvcGVydHlXb3JkU3BhY2luZywKKyNpZiBQTEFURk9STShJT1MpCisgICAgQ1NTUHJvcGVydHlX
ZWJraXRUYXBIaWdobGlnaHRDb2xvciwKKyAgICBDU1NQcm9wZXJ0eVdlYmtpdENvbXBvc2l0aW9u
RmlsbENvbG9yLAorI2VuZGlmCiAgICAgQ1NTUHJvcGVydHlXZWJraXRUZXh0RGVjb3JhdGlvbnNJ
bkVmZmVjdCwKICAgICBDU1NQcm9wZXJ0eVdlYmtpdFRleHRGaWxsQ29sb3IsCiAjaWYgRU5BQkxF
KElPU19URVhUX0FVVE9TSVpJTkcpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L0VkaXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAKaW5kZXggYzcx
M2IxYmUzYTU5YjJhMTk1MWMzNjczNWFiYjFlMjhkMTIyOGMxNi4uMTMxY2Y3NzEyOGM4YzI0YjVi
NTZlZjFiNjhkMzRiNzM3NjQ4M2JmNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9FZGl0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcApAQCAt
OTUsOCArOTUsNTAgQEAKICNpbmNsdWRlICJEZWxldGVCdXR0b25Db250cm9sbGVyLmgiCiAjZW5k
aWYKIAorI2lmIFBMQVRGT1JNKElPUykKKyNpbmNsdWRlICJEaWN0YXRpb25Db21tYW5kSU9TLmgi
CisjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0
L1dURlN0cmluZy5oPgorI2VuZGlmCisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorI2lmIFBMQVRG
T1JNKElPUykKK2NsYXNzIENsZWFyVGV4dENvbW1hbmQgOiBwdWJsaWMgRGVsZXRlU2VsZWN0aW9u
Q29tbWFuZCB7CitwdWJsaWM6CisgICAgQ2xlYXJUZXh0Q29tbWFuZChEb2N1bWVudCYgZG9jdW1l
bnQpOworICAgIHN0YXRpYyB2b2lkIENyZWF0ZUFuZEFwcGx5KGNvbnN0IFJlZlB0cjxGcmFtZT4g
ZnJhbWUpOworICAgIAorcHJpdmF0ZToKKyAgICB2aXJ0dWFsIEVkaXRBY3Rpb24gZWRpdGluZ0Fj
dGlvbigpIGNvbnN0OworfTsKKworQ2xlYXJUZXh0Q29tbWFuZDo6Q2xlYXJUZXh0Q29tbWFuZChE
b2N1bWVudCYgZG9jdW1lbnQpCisgICAgOiBEZWxldGVTZWxlY3Rpb25Db21tYW5kKGRvY3VtZW50
LCBmYWxzZSwgdHJ1ZSwgZmFsc2UsIGZhbHNlLCB0cnVlKQoreworfQorCitFZGl0QWN0aW9uIENs
ZWFyVGV4dENvbW1hbmQ6OmVkaXRpbmdBY3Rpb24oKSBjb25zdAoreworICAgIHJldHVybiBFZGl0
QWN0aW9uRGVsZXRlOworfQorCit2b2lkIENsZWFyVGV4dENvbW1hbmQ6OkNyZWF0ZUFuZEFwcGx5
KGNvbnN0IFJlZlB0cjxGcmFtZT4gZnJhbWUpCit7CisgICAgaWYgKGZyYW1lLT5zZWxlY3Rpb24o
KS5pc05vbmUoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgLy8gRG9uJ3QgbGVhdmUgYXJvdW5k
IHN0YWxlIGNvbXBvc2l0aW9uIHN0YXRlLgorICAgIGZyYW1lLT5lZGl0b3IoKS5jbGVhcigpOwor
ICAgIAorICAgIGNvbnN0IFZpc2libGVTZWxlY3Rpb24gb2xkU2VsZWN0aW9uID0gZnJhbWUtPnNl
bGVjdGlvbigpLnNlbGVjdGlvbigpOworICAgIGZyYW1lLT5zZWxlY3Rpb24oKS5zZWxlY3RBbGwo
KTsKKyAgICBSZWZQdHI8Q2xlYXJUZXh0Q29tbWFuZD4gY2xlYXJDb21tYW5kID0gYWRvcHRSZWYo
bmV3IENsZWFyVGV4dENvbW1hbmQoKmZyYW1lLT5kb2N1bWVudCgpKSk7CisgICAgY2xlYXJDb21t
YW5kLT5zZXRTdGFydGluZ1NlbGVjdGlvbihvbGRTZWxlY3Rpb24pOworICAgIGFwcGx5Q29tbWFu
ZChjbGVhckNvbW1hbmQucmVsZWFzZSgpKTsKK30KKyNlbmRpZgorCiB1c2luZyBuYW1lc3BhY2Ug
SFRNTE5hbWVzOwogdXNpbmcgbmFtZXNwYWNlIFdURjsKIHVzaW5nIG5hbWVzcGFjZSBVbmljb2Rl
OwpAQCAtMjE4LDcgKzI2MCwxNSBAQCBib29sIEVkaXRvcjo6aGFuZGxlVGV4dEV2ZW50KFRleHRF
dmVudCogZXZlbnQpCiAKICAgICBpZiAoZXZlbnQtPmlzUGFzdGUoKSkgewogICAgICAgICBpZiAo
ZXZlbnQtPnBhc3RpbmdGcmFnbWVudCgpKQorI2lmIFBMQVRGT1JNKElPUykKKyAgICAgICAgewor
ICAgICAgICAgICAgaWYgKGNsaWVudCgpLT5wZXJmb3Jtc1R3b1N0ZXBQYXN0ZShldmVudC0+cGFz
dGluZ0ZyYWdtZW50KCkpKQorICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworI2VuZGlmCiAg
ICAgICAgICAgICByZXBsYWNlU2VsZWN0aW9uV2l0aEZyYWdtZW50KGV2ZW50LT5wYXN0aW5nRnJh
Z21lbnQoKSwgZmFsc2UsIGV2ZW50LT5zaG91bGRTbWFydFJlcGxhY2UoKSwgZXZlbnQtPnNob3Vs
ZE1hdGNoU3R5bGUoKSk7CisjaWYgUExBVEZPUk0oSU9TKQorICAgICAgICB9CisjZW5kaWYKICAg
ICAgICAgZWxzZSAKICAgICAgICAgICAgIHJlcGxhY2VTZWxlY3Rpb25XaXRoVGV4dChldmVudC0+
ZGF0YSgpLCBmYWxzZSwgZXZlbnQtPnNob3VsZFNtYXJ0UmVwbGFjZSgpKTsKICAgICAgICAgcmV0
dXJuIHRydWU7CkBAIC0zOTEsNiArNDQxLDg0IEBAIHZvaWQgRWRpdG9yOjpkZWxldGVTZWxlY3Rp
b25XaXRoU21hcnREZWxldGUoYm9vbCBzbWFydERlbGV0ZSkKICAgICBhcHBseUNvbW1hbmQoRGVs
ZXRlU2VsZWN0aW9uQ29tbWFuZDo6Y3JlYXRlKGRvY3VtZW50KCksIHNtYXJ0RGVsZXRlKSk7CiB9
CiAKKyNpZiBQTEFURk9STShJT1MpCit2b2lkIEVkaXRvcjo6Y2xlYXJUZXh0KCkKK3sKKyAgICBD
bGVhclRleHRDb21tYW5kOjpDcmVhdGVBbmRBcHBseSgmbV9mcmFtZSk7Cit9CisKK3ZvaWQgRWRp
dG9yOjppbnNlcnREaWN0YXRpb25QaHJhc2VzKFBhc3NPd25QdHI8VmVjdG9yPFZlY3RvcjxTdHJp
bmc+ID4gPiBkaWN0YXRpb25QaHJhc2VzLCBSZXRhaW5QdHI8aWQ+IG1ldGFkYXRhKQoreworICAg
IGlmIChtX2ZyYW1lLnNlbGVjdGlvbigpLmlzTm9uZSgpKQorICAgICAgICByZXR1cm47CisgICAg
ICAgIAorICAgIGlmIChkaWN0YXRpb25QaHJhc2VzLT5pc0VtcHR5KCkpCisgICAgICAgIHJldHVy
bjsKKyAgICAgICAgCisgICAgYXBwbHlDb21tYW5kKERpY3RhdGlvbkNvbW1hbmRJT1M6OmNyZWF0
ZShkb2N1bWVudCgpLCBkaWN0YXRpb25QaHJhc2VzLCBtZXRhZGF0YSkpOworfQorCit2b2lkIEVk
aXRvcjo6c2V0RGljdGF0aW9uUGhyYXNlc0FzQ2hpbGRPZkVsZW1lbnQoUGFzc093blB0cjxWZWN0
b3I8VmVjdG9yPFN0cmluZz4gPiA+IGRpY3RhdGlvblBocmFzZXMsIFJldGFpblB0cjxpZD4gbWV0
YWRhdGEsIEVsZW1lbnQqIGVsZW1lbnQpCit7CisgICAgLy8gQ2xlYXIgdGhlIGNvbXBvc2l0aW9u
LgorICAgIGNsZWFyKCk7CisgICAgCisgICAgLy8gQ2xlYXIgdGhlIFVuZG8gc3RhY2ssIHNpbmNl
IHRoZSBvcGVyYXRpb25zIHRoYXQgZm9sbG93IGFyZSBub3QgVW5kb2FibGUsIGFuZCB3aWxsIGNv
cnJ1cHQgdGhlIHN0YWNrLiAgU29tZSBkYXkKKyAgICAvLyB3ZSBjb3VsZCBtYWtlIHRoZW0gVW5k
b2FibGUsIGFuZCBsZXQgY2FsbGVycyBjbGVhciB0aGUgVW5kbyBzdGFjayBleHBsaWNpdGx5IGlm
IHRoZXkgd2lzaC4KKyAgICBjbGVhclVuZG9SZWRvT3BlcmF0aW9ucygpOworICAgIAorICAgIG1f
ZnJhbWUuc2VsZWN0aW9uKCkuY2xlYXIoKTsKKyAgICAKKyAgICBlbGVtZW50LT5yZW1vdmVDaGls
ZHJlbigpOworICAgIAorICAgIGlmIChkaWN0YXRpb25QaHJhc2VzLT5pc0VtcHR5KCkpIHsKKyAg
ICAgICAgY2xpZW50KCktPnJlc3BvbmRUb0NoYW5nZWRDb250ZW50cygpOworICAgICAgICByZXR1
cm47CisgICAgfQorICAgIAorICAgIEV4Y2VwdGlvbkNvZGUgZWM7ICAgIAorICAgIFJlZlB0cjxS
YW5nZT4gY29udGV4dCA9IGRvY3VtZW50KCkuY3JlYXRlUmFuZ2UoKTsKKyAgICBjb250ZXh0LT5z
ZWxlY3ROb2RlQ29udGVudHMoZWxlbWVudCwgZWMpOworICAgIAorICAgIFN0cmluZ0J1aWxkZXIg
ZGljdGF0aW9uUGhyYXNlc0J1aWxkZXI7CisgICAgc2l6ZV90IGRpY3RhdGlvblBocmFzZUNvdW50
ID0gZGljdGF0aW9uUGhyYXNlcy0+c2l6ZSgpOworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwg
ZGljdGF0aW9uUGhyYXNlQ291bnQ7IGkrKykgeworICAgICAgICBjb25zdCBTdHJpbmcmIGZpcnN0
SW50ZXJwcmV0YXRpb24gPSBkaWN0YXRpb25QaHJhc2VzLT5hdChpKVswXTsKKyAgICAgICAgZGlj
dGF0aW9uUGhyYXNlc0J1aWxkZXIuYXBwZW5kKGZpcnN0SW50ZXJwcmV0YXRpb24pOworICAgIH0K
KyAgICBTdHJpbmcgc2VyaWFsaXplZERpY3RhdGlvblBocmFzZXMgPSBkaWN0YXRpb25QaHJhc2Vz
QnVpbGRlci50b1N0cmluZygpOworICAgIAorICAgIGVsZW1lbnQtPmFwcGVuZENoaWxkKGNyZWF0
ZUZyYWdtZW50RnJvbVRleHQoKmNvbnRleHQuZ2V0KCksIHNlcmlhbGl6ZWREaWN0YXRpb25QaHJh
c2VzKSwgZWMpOworICAgIAorICAgIC8vIFdlIG5lZWQgYSBsYXlvdXQgaW4gb3JkZXIgdG8gYWRk
IG1hcmtlcnMgYmVsb3cuCisgICAgZG9jdW1lbnQoKS51cGRhdGVMYXlvdXQoKTsKKyAgICAKKyAg
ICBpZiAoIWVsZW1lbnQtPmZpcnN0Q2hpbGQoKS0+aXNUZXh0Tm9kZSgpKSB7CisgICAgICAgIC8v
IFNob3VsZG4ndCBoYXBwZW4uCisgICAgICAgIEFTU0VSVChlbGVtZW50LT5maXJzdENoaWxkKCkt
PmlzVGV4dE5vZGUoKSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgICAgIAorICAgIFRl
eHQqIHRleHROb2RlID0gc3RhdGljX2Nhc3Q8VGV4dCo+KGVsZW1lbnQtPmZpcnN0Q2hpbGQoKSk7
CisgICAgaW50IHByZXZpb3VzRGljdGF0aW9uUGhyYXNlU3RhcnQgPSAwOworICAgIGZvciAoc2l6
ZV90IGkgPSAwOyBpIDwgZGljdGF0aW9uUGhyYXNlQ291bnQ7IGkrKykgeworICAgICAgICBjb25z
dCBWZWN0b3I8U3RyaW5nPiYgaW50ZXJwcmV0YXRpb25zID0gZGljdGF0aW9uUGhyYXNlcy0+YXQo
aSk7CisgICAgICAgIGludCBkaWN0YXRpb25QaHJhc2VMZW5ndGggPSBpbnRlcnByZXRhdGlvbnNb
MF0ubGVuZ3RoKCk7CisgICAgICAgIGludCBkaWN0YXRpb25QaHJhc2VFbmQgPSBwcmV2aW91c0Rp
Y3RhdGlvblBocmFzZVN0YXJ0ICsgZGljdGF0aW9uUGhyYXNlTGVuZ3RoOworICAgICAgICBpZiAo
aW50ZXJwcmV0YXRpb25zLnNpemUoKSA+IDEpIHsKKyAgICAgICAgICAgIFJlZlB0cjxSYW5nZT4g
ZGljdGF0aW9uUGhyYXNlUmFuZ2UgPSBSYW5nZTo6Y3JlYXRlKGRvY3VtZW50KCksIHRleHROb2Rl
LCBwcmV2aW91c0RpY3RhdGlvblBocmFzZVN0YXJ0LCB0ZXh0Tm9kZSwgZGljdGF0aW9uUGhyYXNl
RW5kKTsKKyAgICAgICAgICAgIGRvY3VtZW50KCkubWFya2VycygpLmFkZERpY3RhdGlvblBocmFz
ZVdpdGhBbHRlcm5hdGl2ZXNNYXJrZXIoZGljdGF0aW9uUGhyYXNlUmFuZ2UuZ2V0KCksIGludGVy
cHJldGF0aW9ucyk7CisgICAgICAgIH0KKyAgICAgICAgcHJldmlvdXNEaWN0YXRpb25QaHJhc2VT
dGFydCA9IGRpY3RhdGlvblBocmFzZUVuZDsKKyAgICB9CisgICAgCisgICAgUmVmUHRyPFJhbmdl
PiByZXN1bHRSYW5nZSA9IFJhbmdlOjpjcmVhdGUoZG9jdW1lbnQoKSwgdGV4dE5vZGUsIDAsIHRl
eHROb2RlLCB0ZXh0Tm9kZS0+bGVuZ3RoKCkpOworICAgIGRvY3VtZW50KCkubWFya2VycygpLmFk
ZERpY3RhdGlvblJlc3VsdE1hcmtlcihyZXN1bHRSYW5nZS5nZXQoKSwgbWV0YWRhdGEpOworICAg
IAorICAgIGNsaWVudCgpLT5yZXNwb25kVG9DaGFuZ2VkQ29udGVudHMoKTsKK30KKyNlbmRpZgor
CiB2b2lkIEVkaXRvcjo6cGFzdGVBc1BsYWluVGV4dChjb25zdCBTdHJpbmcmIHBhc3RpbmdUZXh0
LCBib29sIHNtYXJ0UmVwbGFjZSkKIHsKICAgICBOb2RlKiB0YXJnZXQgPSBmaW5kRXZlbnRUYXJn
ZXRGcm9tU2VsZWN0aW9uKCk7CkBAIC01MDcsNiArNjM1LDg2IEBAIFBhc3NSZWZQdHI8UmFuZ2U+
IEVkaXRvcjo6c2VsZWN0ZWRSYW5nZSgpCiAgICAgcmV0dXJuIG1fZnJhbWUuc2VsZWN0aW9uKCku
dG9Ob3JtYWxpemVkUmFuZ2UoKTsKIH0KIAorI2lmIFBMQVRGT1JNKElPUykKK3ZvaWQgRWRpdG9y
Ojpjb25maXJtTWFya2VkVGV4dCgpCit7CisgICAgLy8gRklYTUU6IFRoaXMgaXMgYSBoYWNreSB3
b3JrYXJvdW5kIGZvciB0aGUga2V5Ym9hcmQgY2FsbGluZyB0aGlzIG1ldGhvZCB0b28gbGF0ZSAt
CisgICAgLy8gYWZ0ZXIgdGhlIHNlbGVjdGlvbiBhbmQgZm9jdXMgaGF2ZSBhbHJlYWR5IGNoYW5n
ZWQuICBTZWUgPHJkYXI6Ly9wcm9ibGVtLzU5NzU1NTk+CisgICAgRWxlbWVudCogZm9jdXNlZCA9
IGRvY3VtZW50KCkuZm9jdXNlZEVsZW1lbnQoKTsKKyAgICBOb2RlKiBjb21wb3NpdGlvbiA9IGNv
bXBvc2l0aW9uTm9kZSgpOworICAgIAorICAgIGlmIChjb21wb3NpdGlvbiAmJiBmb2N1c2VkICYm
IGZvY3VzZWQgIT0gY29tcG9zaXRpb24gJiYgIWNvbXBvc2l0aW9uLT5pc0Rlc2NlbmRhbnRPclNo
YWRvd0Rlc2NlbmRhbnRPZihmb2N1c2VkKSkgeworICAgICAgICBjYW5jZWxDb21wb3NpdGlvbigp
OworICAgICAgICBkb2N1bWVudCgpLnNldEZvY3VzZWRFbGVtZW50KGZvY3VzZWQpOworICAgIH0g
ZWxzZQorICAgICAgICBjb25maXJtQ29tcG9zaXRpb24oKTsKK30KKwordm9pZCBFZGl0b3I6OnNl
dFRleHRBc0NoaWxkT2ZFbGVtZW50KGNvbnN0IFN0cmluZyYgdGV4dCwgRWxlbWVudCogZWxlbSkK
K3sKKyAgICAvLyBDbGVhciB0aGUgY29tcG9zaXRpb24KKyAgICBjbGVhcigpOworICAgIAorICAg
IC8vIENsZWFyIHRoZSBVbmRvIHN0YWNrLCBzaW5jZSB0aGUgb3BlcmF0aW9ucyB0aGF0IGZvbGxv
dyBhcmUgbm90IFVuZG9hYmxlLCBhbmQgd2lsbCBjb3JydXB0IHRoZSBzdGFjay4gIFNvbWUgZGF5
CisgICAgLy8gd2UgY291bGQgbWFrZSB0aGVtIFVuZG9hYmxlLCBhbmQgbGV0IGNhbGxlcnMgY2xl
YXIgdGhlIFVuZG8gc3RhY2sgZXhwbGljaXRseSBpZiB0aGV5IHdpc2guCisgICAgY2xlYXJVbmRv
UmVkb09wZXJhdGlvbnMoKTsKKyAgICAKKyAgICAvLyBJZiB0aGUgZWxlbWVudCBpcyBlbXB0eSBh
bHJlYWR5IGFuZCB3ZSdyZSBub3QgYWRkaW5nIHRleHQsIHdlIGNhbiBlYXJseSByZXR1cm4gYW5k
IGF2b2lkIGNsZWFyaW5nL3NldHRpbmcKKyAgICAvLyBhIHNlbGVjdGlvbiBhdCBbMCwgMF0gYW5k
IHRoZSBleHBlbnNlIGludm9sdmVkIGluIGNyZWF0aW9uIFZpc2libGVQb3NpdGlvbnMuCisgICAg
aWYgKCFlbGVtLT5maXJzdENoaWxkKCkgJiYgdGV4dC5pc0VtcHR5KCkpCisgICAgICAgIHJldHVy
bjsKKyAgICAKKyAgICAvLyBBcyBhIHNpZGUgZWZmZWN0IHRoaXMgZnVuY3Rpb24gc2V0cyBhIGNh
cmV0IHNlbGVjdGlvbiBhZnRlciB0aGUgaW5zZXJ0ZWQgY29udGVudC4gIE11Y2ggb2Ygd2hhdCAK
KyAgICAvLyBmb2xsb3dzIGlzIG1vcmUgZXhwZW5zaXZlIGlmIHRoZXJlIGlzIGEgc2VsZWN0aW9u
LCBzbyBjbGVhciBpdCBzaW5jZSBpdCdzIGdvaW5nIHRvIGNoYW5nZSBhbnl3YXkuCisgICAgbV9m
cmFtZS5zZWxlY3Rpb24oKS5jbGVhcigpOworICAgIAorICAgIC8vIGNsZWFyIG91dCBhbGwgY3Vy
cmVudCBjaGlsZHJlbiBvZiBlbGVtZW50CisgICAgZWxlbS0+cmVtb3ZlQ2hpbGRyZW4oKTsKKwor
ICAgIGlmICh0ZXh0Lmxlbmd0aCgpKSB7CisgICAgICAgIC8vIGluc2VydCBuZXcgdGV4dAorICAg
ICAgICAvLyByZW1vdmUgZWxlbWVudCBmcm9tIHRyZWUgd2hpbGUgZG9pbmcgaXQKKyAgICAgICAg
Ly8gRklYTUU6IFRoZSBlbGVtZW50IHdlJ3JlIGluc2VydGluZyBpbnRvIGlzIG9mdGVuIHRoZSBi
b2R5IGVsZW1lbnQuICBJdCBzZWVtcyBzdHJhbmdlIHRvIGJlIHJlbW92aW5nIGl0CisgICAgICAg
IC8vIChldmVuIGlmIGl0IGlzIG9ubHkgdGVtcG9yYXJ5KS4gIFJlcGxhY2VTZWxlY3Rpb25Db21t
YW5kIGRvZXNuJ3QgYm90aGVyIGRvaW5nIHRoaXMgd2hlbiBpdCBpbnNlcnRzCisgICAgICAgIC8v
IGNvbnRlbnQsIHdoeSBzaG91bGQgd2UgaGVyZT8KKyAgICAgICAgRXhjZXB0aW9uQ29kZSBlYzsK
KyAgICAgICAgUmVmUHRyPE5vZGU+IHBhcmVudCA9IGVsZW0tPnBhcmVudE5vZGUoKTsKKyAgICAg
ICAgUmVmUHRyPE5vZGU+IHNpYmxpbmdBZnRlciA9IGVsZW0tPm5leHRTaWJsaW5nKCk7CisgICAg
ICAgIGlmIChwYXJlbnQpCisgICAgICAgICAgICBlbGVtLT5yZW1vdmUoZWMpOyAgICAKKyAgICAg
ICAgICAgIAorICAgICAgICBSZWZQdHI8UmFuZ2U+IGNvbnRleHQgPSBkb2N1bWVudCgpLmNyZWF0
ZVJhbmdlKCk7CisgICAgICAgIGNvbnRleHQtPnNlbGVjdE5vZGVDb250ZW50cyhlbGVtLCBlYyk7
CisgICAgICAgIFJlZlB0cjxEb2N1bWVudEZyYWdtZW50PiBmcmFnbWVudCA9IGNyZWF0ZUZyYWdt
ZW50RnJvbVRleHQoKmNvbnRleHQuZ2V0KCksIHRleHQpOworICAgICAgICBlbGVtLT5hcHBlbmRD
aGlsZChmcmFnbWVudCwgZWMpOworICAgIAorICAgICAgICAvLyByZXN0b3JlIGVsZW1lbnQgdG8g
ZG9jdW1lbnQKKyAgICAgICAgaWYgKHBhcmVudCkgeworICAgICAgICAgICAgaWYgKHNpYmxpbmdB
ZnRlcikKKyAgICAgICAgICAgICAgICBwYXJlbnQtPmluc2VydEJlZm9yZShlbGVtLCBzaWJsaW5n
QWZ0ZXIuZ2V0KCksIGVjKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBwYXJl
bnQtPmFwcGVuZENoaWxkKGVsZW0sIGVjKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIC8vIHNl
dCB0aGUgc2VsZWN0aW9uIHRvIHRoZSBlbmQKKyAgICBWaXNpYmxlU2VsZWN0aW9uIHNlbGVjdGlv
bjsKKworICAgIFBvc2l0aW9uIHBvcyA9IGNyZWF0ZUxlZ2FjeUVkaXRpbmdQb3NpdGlvbihlbGVt
LCBlbGVtLT5jaGlsZE5vZGVDb3VudCgpKTsKKworICAgIFZpc2libGVQb3NpdGlvbiB2aXNpYmxl
UG9zKHBvcywgVlBfREVGQVVMVF9BRkZJTklUWSk7CisgICAgaWYgKHZpc2libGVQb3MuaXNOdWxs
KCkpCisgICAgICAgIHJldHVybjsKKworICAgIHNlbGVjdGlvbi5zZXRCYXNlKHZpc2libGVQb3Mp
OworICAgIHNlbGVjdGlvbi5zZXRFeHRlbnQodmlzaWJsZVBvcyk7CisgICAgIAorICAgIG1fZnJh
bWUuc2VsZWN0aW9uKCkuc2V0U2VsZWN0aW9uKHNlbGVjdGlvbik7CisgICAgCisgICAgY2xpZW50
KCktPnJlc3BvbmRUb0NoYW5nZWRDb250ZW50cygpOworfQorI2VuZGlmCisKIGJvb2wgRWRpdG9y
OjpzaG91bGREZWxldGVSYW5nZShSYW5nZSogcmFuZ2UpIGNvbnN0CiB7CiAgICAgaWYgKCFyYW5n
ZSB8fCByYW5nZS0+Y29sbGFwc2VkKElHTk9SRV9FWENFUFRJT04pKQpAQCAtNTQ2LDYgKzc1NCwx
MiBAQCBib29sIEVkaXRvcjo6c2hvdWxkSW5zZXJ0VGV4dChjb25zdCBTdHJpbmcmIHRleHQsIFJh
bmdlKiByYW5nZSwgRWRpdG9ySW5zZXJ0QWN0aQogCiB2b2lkIEVkaXRvcjo6bm90aWZ5Q29tcG9u
ZW50c09uQ2hhbmdlZFNlbGVjdGlvbihjb25zdCBWaXNpYmxlU2VsZWN0aW9uJiBvbGRTZWxlY3Rp
b24sIEZyYW1lU2VsZWN0aW9uOjpTZXRTZWxlY3Rpb25PcHRpb25zIG9wdGlvbnMpCiB7CisjaWYg
UExBVEZPUk0oSU9TKQorICAgIC8vIEZJWE1FOiBNZXJnZSB0aGlzIHRvIG9wZW4gc291cmNlIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zODgzMAorICAgIGlmIChtX2ln
bm9yZUNvbXBvc2l0aW9uU2VsZWN0aW9uQ2hhbmdlKQorICAgICAgICByZXR1cm47CisjZW5kaWYK
KwogICAgIGlmIChjbGllbnQoKSkKICAgICAgICAgY2xpZW50KCktPnJlc3BvbmRUb0NoYW5nZWRT
ZWxlY3Rpb24oJm1fZnJhbWUpOwogICAgIHNldFN0YXJ0TmV3S2lsbFJpbmdTZXF1ZW5jZSh0cnVl
KTsKQEAgLTcwNCw2ICs5MTgsMTQgQEAgdm9pZCBFZGl0b3I6OmNsZWFyTGFzdEVkaXRDb21tYW5k
KCkKIHsKICAgICBtX2xhc3RFZGl0Q29tbWFuZC5jbGVhcigpOwogfQorI2lmIFBMQVRGT1JNKElP
UykKKy8vIElmIHRoZSBzZWxlY3Rpb24gaXMgYWRqdXN0ZWQgZnJvbSBVSUtpdCB3aXRob3V0IGNs
b3NpbmcgdGhlIHR5cGluZywgdGhlIHR5cGluZyBjb21tYW5kIG1heQorLy8gaGF2ZSBhIHN0YWxl
IHNlbGVjdGlvbi4KK3ZvaWQgRWRpdG9yOjplbnN1cmVMYXN0RWRpdENvbW1hbmRIYXNDdXJyZW50
U2VsZWN0aW9uSWZPcGVuRm9yTW9yZVR5cGluZygpCit7CisgICAgVHlwaW5nQ29tbWFuZDo6ZW5z
dXJlTGFzdEVkaXRDb21tYW5kSGFzQ3VycmVudFNlbGVjdGlvbklmT3BlbkZvck1vcmVUeXBpbmco
Jm1fZnJhbWUsIG1fZnJhbWUuc2VsZWN0aW9uKCkuc2VsZWN0aW9uKCkpOworfQorI2VuZGlmCiAK
IC8vIFJldHVybnMgd2hldGhlciBjYWxsZXIgc2hvdWxkIGNvbnRpbnVlIHdpdGggInRoZSBkZWZh
dWx0IHByb2Nlc3NpbmciLCB3aGljaCBpcyB0aGUgc2FtZSBhcyAKIC8vIHRoZSBldmVudCBoYW5k
bGVyIE5PVCBzZXR0aW5nIHRoZSByZXR1cm4gdmFsdWUgdG8gZmFsc2UKQEAgLTEwODgsMTMgKzEz
MTAsMTMgQEAgdm9pZCBFZGl0b3I6OmNvcHkoKQogICAgICAgICAgICAgY2FuU21hcnRDb3B5T3JE
ZWxldGUoKSA/IFBhc3RlYm9hcmQ6OkNhblNtYXJ0UmVwbGFjZSA6IFBhc3RlYm9hcmQ6OkNhbm5v
dFNtYXJ0UmVwbGFjZSk7CiAgICAgfSBlbHNlIHsKICAgICAgICAgaWYgKEhUTUxJbWFnZUVsZW1l
bnQqIGltYWdlRWxlbWVudCA9IGltYWdlRWxlbWVudEZyb21JbWFnZURvY3VtZW50KGRvY3VtZW50
KCkpKSB7Ci0jaWYgKFBMQVRGT1JNKE1BQykgJiYgIVBMQVRGT1JNKElPUykpIHx8IFBMQVRGT1JN
KEVGTCkgfHwgUExBVEZPUk0oTklYKQorI2lmIFBMQVRGT1JNKE1BQykgfHwgUExBVEZPUk0oRUZM
KSB8fCBQTEFURk9STShOSVgpCiAgICAgICAgICAgICB3cml0ZUltYWdlVG9QYXN0ZWJvYXJkKCpQ
YXN0ZWJvYXJkOjpjcmVhdGVGb3JDb3B5QW5kUGFzdGUoKSwgKmltYWdlRWxlbWVudCwgZG9jdW1l
bnQoKS51cmwoKSwgZG9jdW1lbnQoKS50aXRsZSgpKTsKICNlbHNlCiAgICAgICAgICAgICBQYXN0
ZWJvYXJkOjpjcmVhdGVGb3JDb3B5QW5kUGFzdGUoKS0+d3JpdGVJbWFnZSgqaW1hZ2VFbGVtZW50
LCBkb2N1bWVudCgpLnVybCgpLCBkb2N1bWVudCgpLnRpdGxlKCkpOwogI2VuZGlmCiAgICAgICAg
IH0gZWxzZSB7Ci0jaWYgKFBMQVRGT1JNKE1BQykgJiYgIVBMQVRGT1JNKElPUykpIHx8IFBMQVRG
T1JNKEVGTCkgfHwgUExBVEZPUk0oTklYKQorI2lmIFBMQVRGT1JNKE1BQykgfHwgUExBVEZPUk0o
RUZMKSB8fCBQTEFURk9STShOSVgpCiAgICAgICAgICAgICB3cml0ZVNlbGVjdGlvblRvUGFzdGVi
b2FyZCgqUGFzdGVib2FyZDo6Y3JlYXRlRm9yQ29weUFuZFBhc3RlKCkpOwogI2Vsc2UKICAgICAg
ICAgICAgIC8vIEZJWE1FOiBDb252ZXJ0IGFsbCBvdGhlciBwbGF0Zm9ybXMgdG8gbWF0Y2ggTWFj
IGFuZCBkZWxldGUgdGhpcy4KQEAgLTExNjksNiArMTM5MSw3IEBAIHZvaWQgRWRpdG9yOjpzaW1w
bGlmeU1hcmt1cChOb2RlKiBzdGFydE5vZGUsIE5vZGUqIGVuZE5vZGUpCiAgICAgYXBwbHlDb21t
YW5kKFNpbXBsaWZ5TWFya3VwQ29tbWFuZDo6Y3JlYXRlKGRvY3VtZW50KCksIHN0YXJ0Tm9kZSwg
KGVuZE5vZGUpID8gTm9kZVRyYXZlcnNhbDo6bmV4dChlbmROb2RlKSA6IDApKTsKIH0KIAorI2lm
ICFQTEFURk9STShJT1MpCiB2b2lkIEVkaXRvcjo6Y29weVVSTChjb25zdCBVUkwmIHVybCwgY29u
c3QgU3RyaW5nJiB0aXRsZSkKIHsKICAgICBjb3B5VVJMKHVybCwgdGl0bGUsICpQYXN0ZWJvYXJk
OjpjcmVhdGVGb3JDb3B5QW5kUGFzdGUoKSk7CkBAIC0xMjAzLDYgKzE0MjYsNyBAQCB2b2lkIEVk
aXRvcjo6Y29weUltYWdlKGNvbnN0IEhpdFRlc3RSZXN1bHQmIHJlc3VsdCkKICAgICBQYXN0ZWJv
YXJkOjpjcmVhdGVGb3JDb3B5QW5kUGFzdGUoKS0+d3JpdGVJbWFnZSgqZWxlbWVudCwgdXJsLCBy
ZXN1bHQuYWx0RGlzcGxheVN0cmluZygpKTsKICNlbmRpZgogfQorI2VuZGlmCiAKIGJvb2wgRWRp
dG9yOjppc0NvbnRpbnVvdXNTcGVsbENoZWNraW5nRW5hYmxlZCgpIGNvbnN0CiB7CkBAIC0xNDEz
LDYgKzE2MzcsMTIgQEAgdm9pZCBFZGl0b3I6OnRvZ2dsZVVuZGVybGluZSgpCiAKIHZvaWQgRWRp
dG9yOjpzZXRCYXNlV3JpdGluZ0RpcmVjdGlvbihXcml0aW5nRGlyZWN0aW9uIGRpcmVjdGlvbikK
IHsKKyNpZiBQTEFURk9STShJT1MpCisgICAgaWYgKGluU2FtZVBhcmFncmFwaChtX2ZyYW1lLnNl
bGVjdGlvbigpLnNlbGVjdGlvbigpLnZpc2libGVTdGFydCgpLCBtX2ZyYW1lLnNlbGVjdGlvbigp
LnNlbGVjdGlvbigpLnZpc2libGVFbmQoKSkgJiYgCisgICAgICAgIGJhc2VXcml0aW5nRGlyZWN0
aW9uRm9yU2VsZWN0aW9uU3RhcnQoKSA9PSBkaXJlY3Rpb24pCisgICAgICAgIHJldHVybjsKKyNl
bmRpZgorICAgICAgICAKICAgICBFbGVtZW50KiBmb2N1c2VkRWxlbWVudCA9IGRvY3VtZW50KCku
Zm9jdXNlZEVsZW1lbnQoKTsKICAgICBpZiAoZm9jdXNlZEVsZW1lbnQgJiYgaXNIVE1MVGV4dEZv
cm1Db250cm9sRWxlbWVudCgqZm9jdXNlZEVsZW1lbnQpKSB7CiAgICAgICAgIGlmIChkaXJlY3Rp
b24gPT0gTmF0dXJhbFdyaXRpbmdEaXJlY3Rpb24pCkBAIC0xNTYxLDYgKzE3OTEsMTAgQEAgdm9p
ZCBFZGl0b3I6OnNldENvbXBvc2l0aW9uKGNvbnN0IFN0cmluZyYgdGV4dCwgY29uc3QgVmVjdG9y
PENvbXBvc2l0aW9uVW5kZXJsaW4KICAgICAgICAgcmV0dXJuOwogICAgIH0KIAorI2lmIFBMQVRG
T1JNKElPUykKKyAgICBjbGllbnQoKS0+c3RhcnREZWxheWluZ0FuZENvYWxlc2NpbmdDb250ZW50
Q2hhbmdlTm90aWZpY2F0aW9ucygpOworI2VuZGlmCisKICAgICBFbGVtZW50KiB0YXJnZXQgPSBk
b2N1bWVudCgpLmZvY3VzZWRFbGVtZW50KCk7CiAgICAgaWYgKHRhcmdldCkgewogICAgICAgICAv
LyBEaXNwYXRjaCBhbiBhcHByb3ByaWF0ZSBjb21wb3NpdGlvbiBldmVudCB0byB0aGUgZm9jdXNl
ZCBub2RlLgpAQCAtMTYzNiw2ICsxODcwLDEwIEBAIHZvaWQgRWRpdG9yOjpzZXRDb21wb3NpdGlv
bihjb25zdCBTdHJpbmcmIHRleHQsIGNvbnN0IFZlY3RvcjxDb21wb3NpdGlvblVuZGVybGluCiAg
ICAgfQogCiAgICAgc2V0SWdub3JlQ29tcG9zaXRpb25TZWxlY3Rpb25DaGFuZ2UoZmFsc2UpOwor
CisjaWYgUExBVEZPUk0oSU9TKSAgICAgICAgCisgICAgY2xpZW50KCktPnN0b3BEZWxheWluZ0Fu
ZENvYWxlc2NpbmdDb250ZW50Q2hhbmdlTm90aWZpY2F0aW9ucygpOworI2VuZGlmCiB9CiAKIHZv
aWQgRWRpdG9yOjppZ25vcmVTcGVsbGluZygpCkBAIC0xNjY4LDYgKzE5MDYsNyBAQCB2b2lkIEVk
aXRvcjo6bGVhcm5TcGVsbGluZygpCiAgICAgdGV4dENoZWNrZXIoKS0+bGVhcm5Xb3JkKHRleHQp
OwogfQogCisjaWYgIVBMQVRGT1JNKElPUykKIHZvaWQgRWRpdG9yOjphZHZhbmNlVG9OZXh0TWlz
c3BlbGxpbmcoYm9vbCBzdGFydEJlZm9yZVNlbGVjdGlvbikKIHsKICAgICAvLyBUaGUgYmFzaWMg
YXBwcm9hY2ggaXMgdG8gc2VhcmNoIGluIHR3byBwaGFzZXMgLSBmcm9tIHRoZSBzZWxlY3Rpb24g
ZW5kIHRvIHRoZSBlbmQgb2YgdGhlIGRvYywgYW5kCkBAIC0xODQwLDYgKzIwNzksNyBAQCB2b2lk
IEVkaXRvcjo6YWR2YW5jZVRvTmV4dE1pc3NwZWxsaW5nKGJvb2wgc3RhcnRCZWZvcmVTZWxlY3Rp
b24pCiAgICAgICAgIGRvY3VtZW50KCkubWFya2VycygpLmFkZE1hcmtlcihtaXNzcGVsbGluZ1Jh
bmdlLmdldCgpLCBEb2N1bWVudE1hcmtlcjo6U3BlbGxpbmcpOwogICAgIH0KIH0KKyNlbmRpZiAv
LyAhUExBVEZPUk0oSU9TKQogCiBTdHJpbmcgRWRpdG9yOjptaXNzcGVsbGVkV29yZEF0Q2FyZXRP
clJhbmdlKE5vZGUqIGNsaWNrZWROb2RlKSBjb25zdAogewpAQCAtMTk1NCw4ICsyMTk0LDEwIEBA
IHZvaWQgRWRpdG9yOjpzaG93U3BlbGxpbmdHdWVzc1BhbmVsKCkKICAgICAgICAgY2xpZW50KCkt
PnNob3dTcGVsbGluZ1VJKGZhbHNlKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICAKKwor
I2lmICFQTEFURk9STShJT1MpCiAgICAgYWR2YW5jZVRvTmV4dE1pc3NwZWxsaW5nKHRydWUpOwor
I2VuZGlmCiAgICAgY2xpZW50KCktPnNob3dTcGVsbGluZ1VJKHRydWUpOwogfQogCkBAIC0xOTgy
LDYgKzIyMjQsMTggQEAgdm9pZCBFZGl0b3I6Om1hcmtNaXNzcGVsbGluZ3NBbmRCYWRHcmFtbWFy
KGNvbnN0IFZpc2libGVTZWxlY3Rpb24gJm1vdmluZ1NlbGVjdGkKIAogdm9pZCBFZGl0b3I6Om1h
cmtNaXNzcGVsbGluZ3NBZnRlclR5cGluZ1RvV29yZChjb25zdCBWaXNpYmxlUG9zaXRpb24gJndv
cmRTdGFydCwgY29uc3QgVmlzaWJsZVNlbGVjdGlvbiYgc2VsZWN0aW9uQWZ0ZXJUeXBpbmcsIGJv
b2wgZG9SZXBsYWNlbWVudCkKIHsKKyNpZiBQTEFURk9STShJT1MpCisgICAgVU5VU0VEX1BBUkFN
KHNlbGVjdGlvbkFmdGVyVHlwaW5nKTsKKyAgICBVTlVTRURfUEFSQU0oZG9SZXBsYWNlbWVudCk7
CisgICAgVGV4dENoZWNraW5nVHlwZU1hc2sgdGV4dENoZWNraW5nT3B0aW9ucyA9IDA7CisgICAg
aWYgKGlzQ29udGludW91c1NwZWxsQ2hlY2tpbmdFbmFibGVkKCkpCisgICAgICAgIHRleHRDaGVj
a2luZ09wdGlvbnMgfD0gVGV4dENoZWNraW5nVHlwZVNwZWxsaW5nOworICAgIGlmICghKHRleHRD
aGVja2luZ09wdGlvbnMgJiBUZXh0Q2hlY2tpbmdUeXBlU3BlbGxpbmcpKQorICAgICAgICByZXR1
cm47CisKKyAgICBWaXNpYmxlU2VsZWN0aW9uIGFkamFjZW50V29yZHMgPSBWaXNpYmxlU2VsZWN0
aW9uKHN0YXJ0T2ZXb3JkKHdvcmRTdGFydCwgTGVmdFdvcmRJZk9uQm91bmRhcnkpLCBlbmRPZldv
cmQod29yZFN0YXJ0LCBSaWdodFdvcmRJZk9uQm91bmRhcnkpKTsKKyAgICBtYXJrQWxsTWlzc3Bl
bGxpbmdzQW5kQmFkR3JhbW1hckluUmFuZ2VzKHRleHRDaGVja2luZ09wdGlvbnMsIGFkamFjZW50
V29yZHMudG9Ob3JtYWxpemVkUmFuZ2UoKS5nZXQoKSwgYWRqYWNlbnRXb3Jkcy50b05vcm1hbGl6
ZWRSYW5nZSgpLmdldCgpKTsKKyNlbHNlCiAjaWYgIVVTRShBVVRPTUFUSUNfVEVYVF9SRVBMQUNF
TUVOVCkKICAgICBVTlVTRURfUEFSQU0oZG9SZXBsYWNlbWVudCk7CiAjZW5kaWYKQEAgLTIwNTYs
MTAgKzIzMTAsMTIgQEAgdm9pZCBFZGl0b3I6Om1hcmtNaXNzcGVsbGluZ3NBZnRlclR5cGluZ1Rv
V29yZChjb25zdCBWaXNpYmxlUG9zaXRpb24gJndvcmRTdGFydCwKICAgICAKICAgICAvLyBDaGVj
ayBncmFtbWFyIG9mIGVudGlyZSBzZW50ZW5jZQogICAgIG1hcmtCYWRHcmFtbWFyKFZpc2libGVT
ZWxlY3Rpb24oc3RhcnRPZlNlbnRlbmNlKHdvcmRTdGFydCksIGVuZE9mU2VudGVuY2Uod29yZFN0
YXJ0KSkpOworI2VuZGlmCiB9CiAgICAgCiB2b2lkIEVkaXRvcjo6bWFya01pc3NwZWxsaW5nc09y
QmFkR3JhbW1hcihjb25zdCBWaXNpYmxlU2VsZWN0aW9uJiBzZWxlY3Rpb24sIGJvb2wgY2hlY2tT
cGVsbGluZywgUmVmUHRyPFJhbmdlPiYgZmlyc3RNaXNzcGVsbGluZ1JhbmdlKQogeworI2lmICFQ
TEFURk9STShJT1MpCiAgICAgLy8gVGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQgd2l0aCBhIHNlbGVj
dGlvbiBhbHJlYWR5IGV4cGFuZGVkIHRvIHdvcmQgYm91bmRhcmllcy4KICAgICAvLyBNaWdodCBi
ZSBuaWNlIHRvIGFzc2VydCB0aGF0IGhlcmUuCiAgICAgCkBAIC0yMDk1LDYgKzIzNTEsMTEgQEAg
dm9pZCBFZGl0b3I6Om1hcmtNaXNzcGVsbGluZ3NPckJhZEdyYW1tYXIoY29uc3QgVmlzaWJsZVNl
bGVjdGlvbiYgc2VsZWN0aW9uLCBib28KICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAj
ZW5kaWYKICAgICB9ICAgIAorI2Vsc2UKKyAgICAgICAgVU5VU0VEX1BBUkFNKHNlbGVjdGlvbik7
CisgICAgICAgIFVOVVNFRF9QQVJBTShjaGVja1NwZWxsaW5nKTsKKyAgICAgICAgVU5VU0VEX1BB
UkFNKGZpcnN0TWlzc3BlbGxpbmdSYW5nZSk7CisjZW5kaWYgLy8gIVBMQVRGT1JNKElPUykKIH0K
IAogYm9vbCBFZGl0b3I6OmlzU3BlbGxDaGVja2luZ0VuYWJsZWRGb3IoTm9kZSogbm9kZSkgY29u
c3QKQEAgLTIzNzIsNiArMjYzMyw3IEBAIHZvaWQgRWRpdG9yOjptYXJrQW5kUmVwbGFjZUZvcihQ
YXNzUmVmUHRyPFNwZWxsQ2hlY2tSZXF1ZXN0PiByZXF1ZXN0LCBjb25zdCBWZWN0CiAKIHZvaWQg
RWRpdG9yOjpjaGFuZ2VCYWNrVG9SZXBsYWNlZFN0cmluZyhjb25zdCBTdHJpbmcmIHJlcGxhY2Vk
U3RyaW5nKQogeworI2lmICFQTEFURk9STShJT1MpCiAgICAgQVNTRVJUKHVuaWZpZWRUZXh0Q2hl
Y2tlckVuYWJsZWQoKSk7CiAKICAgICBpZiAocmVwbGFjZWRTdHJpbmcuaXNFbXB0eSgpKQpAQCAt
MjM4Nyw2ICsyNjQ5LDEwIEBAIHZvaWQgRWRpdG9yOjpjaGFuZ2VCYWNrVG9SZXBsYWNlZFN0cmlu
Zyhjb25zdCBTdHJpbmcmIHJlcGxhY2VkU3RyaW5nKQogICAgIFJlZlB0cjxSYW5nZT4gY2hhbmdl
ZFJhbmdlID0gcGFyYWdyYXBoLnN1YnJhbmdlKHBhcmFncmFwaC5jaGVja2luZ1N0YXJ0KCksIHJl
cGxhY2VkU3RyaW5nLmxlbmd0aCgpKTsKICAgICBjaGFuZ2VkUmFuZ2UtPnN0YXJ0Q29udGFpbmVy
KCktPmRvY3VtZW50KCkubWFya2VycygpLmFkZE1hcmtlcihjaGFuZ2VkUmFuZ2UuZ2V0KCksIERv
Y3VtZW50TWFya2VyOjpSZXBsYWNlbWVudCwgU3RyaW5nKCkpOwogICAgIG1fYWx0ZXJuYXRpdmVU
ZXh0Q29udHJvbGxlci0+bWFya1JldmVyc2VkKGNoYW5nZWRSYW5nZS5nZXQoKSk7CisjZWxzZQor
ICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIFVOVVNFRF9QQVJBTShyZXBsYWNlZFN0cmlu
Zyk7CisjZW5kaWYgLy8gIVBMQVRGT1JNKElPUykKIH0KIAogCkBAIC0yNDg3LDcgKzI3NTMsMTEg
QEAgdm9pZCBFZGl0b3I6OnVwZGF0ZU1hcmtlcnNGb3JXb3Jkc0FmZmVjdGVkQnlFZGl0aW5nKGJv
b2wgZG9Ob3RSZW1vdmVJZlNlbGVjdGlvbkEKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1h
cmtlcnMuc2l6ZSgpOyArK2kpCiAgICAgICAgIG1fYWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxlci0+
cmVtb3ZlRGljdGF0aW9uQWx0ZXJuYXRpdmVzRm9yTWFya2VyKG1hcmtlcnNbaV0pOwogCisjaWYg
UExBVEZPUk0oSU9TKQorICAgIGRvY3VtZW50KCkubWFya2VycygpLnJlbW92ZU1hcmtlcnMod29y
ZFJhbmdlLmdldCgpLCBEb2N1bWVudE1hcmtlcjo6U3BlbGxpbmcgfCBEb2N1bWVudE1hcmtlcjo6
Q29ycmVjdGlvbkluZGljYXRvciB8IERvY3VtZW50TWFya2VyOjpTcGVsbENoZWNraW5nRXhlbXB0
aW9uIHwgRG9jdW1lbnRNYXJrZXI6OkRpY3RhdGlvbkFsdGVybmF0aXZlcyB8IERvY3VtZW50TWFy
a2VyOjpEaWN0YXRpb25QaHJhc2VXaXRoQWx0ZXJuYXRpdmVzLCBEb2N1bWVudE1hcmtlckNvbnRy
b2xsZXI6OlJlbW92ZVBhcnRpYWxseU92ZXJsYXBwaW5nTWFya2VyKTsKKyNlbHNlCiAgICAgZG9j
dW1lbnQoKS5tYXJrZXJzKCkucmVtb3ZlTWFya2Vycyh3b3JkUmFuZ2UuZ2V0KCksIERvY3VtZW50
TWFya2VyOjpTcGVsbGluZyB8IERvY3VtZW50TWFya2VyOjpHcmFtbWFyIHwgRG9jdW1lbnRNYXJr
ZXI6OkNvcnJlY3Rpb25JbmRpY2F0b3IgfCBEb2N1bWVudE1hcmtlcjo6U3BlbGxDaGVja2luZ0V4
ZW1wdGlvbiB8IERvY3VtZW50TWFya2VyOjpEaWN0YXRpb25BbHRlcm5hdGl2ZXMsIERvY3VtZW50
TWFya2VyQ29udHJvbGxlcjo6UmVtb3ZlUGFydGlhbGx5T3ZlcmxhcHBpbmdNYXJrZXIpOworI2Vu
ZGlmCiAgICAgZG9jdW1lbnQoKS5tYXJrZXJzKCkuY2xlYXJEZXNjcmlwdGlvbk9uTWFya2Vyc0lu
dGVyc2VjdGluZ1JhbmdlKHdvcmRSYW5nZS5nZXQoKSwgRG9jdW1lbnRNYXJrZXI6OlJlcGxhY2Vt
ZW50KTsKIH0KIApAQCAtMjUyNyw2ICsyNzk3LDExIEBAIHZvaWQgRWRpdG9yOjpzZXRJZ25vcmVD
b21wb3NpdGlvblNlbGVjdGlvbkNoYW5nZShib29sIGlnbm9yZSkKICAgICAgICAgcmV0dXJuOwog
CiAgICAgbV9pZ25vcmVDb21wb3NpdGlvblNlbGVjdGlvbkNoYW5nZSA9IGlnbm9yZTsKKyNpZiBQ
TEFURk9STShJT1MpCisgICAgLy8gRklYTUU6IE1lcmdlIHRoaXMgdG8gb3BlbiBzb3VyY2UgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM4ODMwCisgICAgaWYgKCFpZ25v
cmUpCisgICAgICAgIG5vdGlmeUNvbXBvbmVudHNPbkNoYW5nZWRTZWxlY3Rpb24obV9mcmFtZS5z
ZWxlY3Rpb24oKS5zZWxlY3Rpb24oKSwgMCk7CisjZW5kaWYKICAgICBpZiAoIWlnbm9yZSkKICAg
ICAgICAgcmV2ZWFsU2VsZWN0aW9uQWZ0ZXJFZGl0aW5nT3BlcmF0aW9uKFNjcm9sbEFsaWdubWVu
dDo6YWxpZ25Ub0VkZ2VJZk5lZWRlZCwgUmV2ZWFsRXh0ZW50KTsKIH0KQEAgLTI2NTYsNiArMjkz
MSwxMSBAQCB2b2lkIEVkaXRvcjo6Y2hhbmdlU2VsZWN0aW9uQWZ0ZXJDb21tYW5kKGNvbnN0IFZp
c2libGVTZWxlY3Rpb24mIG5ld1NlbGVjdGlvbiwKICAgICAvLyBjaGFuZ2UgdGhlIGNhcmV0J3Mg
RE9NIHBvc2l0aW9uIChbImhlbGxvIiwgMF0pLiBJbiB0aGVzZSBzaXR1YXRpb25zIHRoZSBhYm92
ZSBGcmFtZVNlbGVjdGlvbjo6c2V0U2VsZWN0aW9uIGNhbGwKICAgICAvLyBkb2VzIG5vdCBjYWxs
IEVkaXRvckNsaWVudDo6cmVzcG9uZFRvQ2hhbmdlZFNlbGVjdGlvbigpLCB3aGljaCwgb24gdGhl
IE1hYywgc2VuZHMgc2VsZWN0aW9uIGNoYW5nZSBub3RpZmljYXRpb25zIGFuZAogICAgIC8vIHN0
YXJ0cyBhIG5ldyBraWxsIHJpbmcgc2VxdWVuY2UsIGJ1dCB3ZSB3YW50IHRvIGRvIHRoZXNlIHRo
aW5ncyAobWF0Y2hlcyBBcHBLaXQpLgorI2lmIFBMQVRGT1JNKElPUykKKyAgICAvLyBGSVhNRTog
TWVyZ2UgdGhpcyB0byBvcGVuIHNvdXJjZSBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9Mzg4MzAKKyAgICBpZiAobV9pZ25vcmVDb21wb3NpdGlvblNlbGVjdGlvbkNoYW5n
ZSkKKyAgICAgICAgcmV0dXJuOworI2VuZGlmCiAgICAgaWYgKHNlbGVjdGlvbkRpZE5vdENoYW5n
ZURPTVBvc2l0aW9uICYmIGNsaWVudCgpKQogICAgICAgICBjbGllbnQoKS0+cmVzcG9uZFRvQ2hh
bmdlZFNlbGVjdGlvbigmbV9mcmFtZSk7CiB9CkBAIC0yNzI3LDYgKzMwMDcsMTAgQEAgSW50UmVj
dCBFZGl0b3I6OmZpcnN0UmVjdEZvclJhbmdlKFJhbmdlKiByYW5nZSkgY29uc3QKIAogYm9vbCBF
ZGl0b3I6OnNob3VsZENoYW5nZVNlbGVjdGlvbihjb25zdCBWaXNpYmxlU2VsZWN0aW9uJiBvbGRT
ZWxlY3Rpb24sIGNvbnN0IFZpc2libGVTZWxlY3Rpb24mIG5ld1NlbGVjdGlvbiwgRUFmZmluaXR5
IGFmZmluaXR5LCBib29sIHN0aWxsU2VsZWN0aW5nKSBjb25zdAogeworI2lmIFBMQVRGT1JNKElP
UykKKyAgICBpZiAobV9mcmFtZS5zZWxlY3Rpb25DaGFuZ2VDYWxsYmFja3NEaXNhYmxlZCgpKQor
ICAgICAgICByZXR1cm4gdHJ1ZTsKKyNlbmRpZgogICAgIHJldHVybiBjbGllbnQoKSAmJiBjbGll
bnQoKS0+c2hvdWxkQ2hhbmdlU2VsZWN0ZWRSYW5nZShvbGRTZWxlY3Rpb24udG9Ob3JtYWxpemVk
UmFuZ2UoKS5nZXQoKSwgbmV3U2VsZWN0aW9uLnRvTm9ybWFsaXplZFJhbmdlKCkuZ2V0KCksIGFm
ZmluaXR5LCBzdGlsbFNlbGVjdGluZyk7CiB9CiAKQEAgLTMwMjEsNyArMzMwNSwyMCBAQCB2b2lk
IEVkaXRvcjo6cmVzcG9uZFRvQ2hhbmdlZFNlbGVjdGlvbihjb25zdCBWaXNpYmxlU2VsZWN0aW9u
JiBvbGRTZWxlY3Rpb24sIEZyYQogICAgICAgICBib29sIGNhcmV0QnJvd3NpbmcgPSBtX2ZyYW1l
LnNldHRpbmdzKCkuY2FyZXRCcm93c2luZ0VuYWJsZWQoKTsKICAgICAgICAgaWYgKG1fZnJhbWUu
c2VsZWN0aW9uKCkuc2VsZWN0aW9uKCkuaXNDb250ZW50RWRpdGFibGUoKSB8fCBjYXJldEJyb3dz
aW5nKSB7CiAgICAgICAgICAgICBWaXNpYmxlUG9zaXRpb24gbmV3U3RhcnQobV9mcmFtZS5zZWxl
Y3Rpb24oKS5zZWxlY3Rpb24oKS52aXNpYmxlU3RhcnQoKSk7CisjaWYgIVBMQVRGT1JNKElPUykK
ICAgICAgICAgICAgIG5ld0FkamFjZW50V29yZHMgPSBWaXNpYmxlU2VsZWN0aW9uKHN0YXJ0T2ZX
b3JkKG5ld1N0YXJ0LCBMZWZ0V29yZElmT25Cb3VuZGFyeSksIGVuZE9mV29yZChuZXdTdGFydCwg
UmlnaHRXb3JkSWZPbkJvdW5kYXJ5KSk7CisjZWxzZQorICAgICAgICAgICAgLy8gSWYgdGhpcyBi
dWcgZ2V0cyBmaXhlZCwgdGhpcyBQTEFURk9STShJT1MpIGNvZGUgY291bGQgYmUgcmVtb3ZlZDoK
KyAgICAgICAgICAgIC8vIDxyZGFyOi8vcHJvYmxlbS83MjU5NjExPiBXb3JkIGJvdW5kYXJ5IGNv
ZGUgb24gaVBob25lIGdpdmVzIGRpZmZlcmVudCByZXN1bHRzIHRoYW4gZGVza3RvcAorICAgICAg
ICAgICAgRVdvcmRTaWRlIHN0YXJ0V29yZFNpZGUgPSBMZWZ0V29yZElmT25Cb3VuZGFyeTsKKyAg
ICAgICAgICAgIFVDaGFyMzIgYyA9IG5ld1N0YXJ0LmNoYXJhY3RlckJlZm9yZSgpOworICAgICAg
ICAgICAgLy8gRklYTUU6IFZpc2libGVQb3NpdGlvbjo6Y2hhcmFjdGVyQWZ0ZXIoKSBhbmQgY2hh
cmFjdGVyQmVmb3JlKCkgZG8gbm90IGVtaXQgbmV3bGluZXMgdGhlIHNhbWUKKyAgICAgICAgICAg
IC8vIHdheSBhcyBUZXh0SXRlcmF0b3IsIHNvIHdlIGRvIGFuIGlzU3RhcnRPZlBhcmFncmFwaCBj
aGVjayBoZXJlLgorICAgICAgICAgICAgaWYgKGlzU3BhY2VPck5ld2xpbmUoYykgfHwgYyA9PSAw
eEEwIHx8IGlzU3RhcnRPZlBhcmFncmFwaChuZXdTdGFydCkpIHsKKyAgICAgICAgICAgICAgICBz
dGFydFdvcmRTaWRlID0gUmlnaHRXb3JkSWZPbkJvdW5kYXJ5OworICAgICAgICAgICAgfQorICAg
ICAgICAgICAgbmV3QWRqYWNlbnRXb3JkcyA9IFZpc2libGVTZWxlY3Rpb24oc3RhcnRPZldvcmQo
bmV3U3RhcnQsIHN0YXJ0V29yZFNpZGUpLCBlbmRPZldvcmQobmV3U3RhcnQsIFJpZ2h0V29yZElm
T25Cb3VuZGFyeSkpOworI2VuZGlmIC8vICFQTEFURk9STShJT1MpCiAgICAgICAgICAgICBpZiAo
aXNDb250aW51b3VzR3JhbW1hckNoZWNraW5nRW5hYmxlZCkKICAgICAgICAgICAgICAgICBuZXdT
ZWxlY3RlZFNlbnRlbmNlID0gVmlzaWJsZVNlbGVjdGlvbihzdGFydE9mU2VudGVuY2UobmV3U3Rh
cnQpLCBlbmRPZlNlbnRlbmNlKG5ld1N0YXJ0KSk7CiAgICAgICAgIH0KQEAgLTMxMDMsMTQgKzM0
MDAsMTcgQEAgVGV4dENoZWNraW5nVHlwZU1hc2sgRWRpdG9yOjpyZXNvbHZlVGV4dENoZWNraW5n
VHlwZU1hc2soVGV4dENoZWNraW5nVHlwZU1hc2sgdGUKIHsKICAgICBib29sIHNob3VsZE1hcmtT
cGVsbGluZyA9IHRleHRDaGVja2luZ09wdGlvbnMgJiBUZXh0Q2hlY2tpbmdUeXBlU3BlbGxpbmc7
CiAgICAgYm9vbCBzaG91bGRNYXJrR3JhbW1hciA9IHRleHRDaGVja2luZ09wdGlvbnMgJiBUZXh0
Q2hlY2tpbmdUeXBlR3JhbW1hcjsKKyNpZiAhUExBVEZPUk0oSU9TKQogICAgIGJvb2wgc2hvdWxk
U2hvd0NvcnJlY3Rpb25QYW5lbCA9IHRleHRDaGVja2luZ09wdGlvbnMgJiBUZXh0Q2hlY2tpbmdU
eXBlU2hvd0NvcnJlY3Rpb25QYW5lbDsKICAgICBib29sIHNob3VsZENoZWNrRm9yQ29ycmVjdGlv
biA9IHNob3VsZFNob3dDb3JyZWN0aW9uUGFuZWwgfHwgKHRleHRDaGVja2luZ09wdGlvbnMgJiBU
ZXh0Q2hlY2tpbmdUeXBlQ29ycmVjdGlvbik7CisjZW5kaWYKIAogICAgIFRleHRDaGVja2luZ1R5
cGVNYXNrIGNoZWNraW5nVHlwZXMgPSAwOwogICAgIGlmIChzaG91bGRNYXJrU3BlbGxpbmcpCiAg
ICAgICAgIGNoZWNraW5nVHlwZXMgfD0gVGV4dENoZWNraW5nVHlwZVNwZWxsaW5nOwogICAgIGlm
IChzaG91bGRNYXJrR3JhbW1hcikKICAgICAgICAgY2hlY2tpbmdUeXBlcyB8PSBUZXh0Q2hlY2tp
bmdUeXBlR3JhbW1hcjsKKyNpZiAhUExBVEZPUk0oSU9TKQogICAgIGlmIChzaG91bGRDaGVja0Zv
ckNvcnJlY3Rpb24pCiAgICAgICAgIGNoZWNraW5nVHlwZXMgfD0gVGV4dENoZWNraW5nVHlwZUNv
cnJlY3Rpb247CiAgICAgaWYgKHNob3VsZFNob3dDb3JyZWN0aW9uUGFuZWwpCkBAIC0zMTMxLDYg
KzM0MzEsNyBAQCBUZXh0Q2hlY2tpbmdUeXBlTWFzayBFZGl0b3I6OnJlc29sdmVUZXh0Q2hlY2tp
bmdUeXBlTWFzayhUZXh0Q2hlY2tpbmdUeXBlTWFzayB0ZQogICAgICAgICAgICAgY2hlY2tpbmdU
eXBlcyB8PSBUZXh0Q2hlY2tpbmdUeXBlQ29ycmVjdGlvbjsKICAgICB9CiAjZW5kaWYKKyNlbmRp
ZiAvLyAhUExBVEZPUk0oSU9TKQogCiAgICAgcmV0dXJuIGNoZWNraW5nVHlwZXM7CiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5oIGIvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9FZGl0b3IuaAppbmRleCBkOWJiNWM1OWViNTdiZmY2OWE5YjY1MTUzMmJjNDUyYmVh
Njk1MTZiLi4yMGUxNzRiNWU1YmE3NDYyODMxMmMwMjQ4MWY0YjIzMmEzMTE2YWYxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvRWRpdG9yLmgKQEAgLTEyNiw5ICsxMjYsMTEgQEAgcHVibGljOgogICAgIHZvaWQg
cGFzdGVBc1BsYWluVGV4dCgpOwogICAgIHZvaWQgcGVyZm9ybURlbGV0ZSgpOwogCisjaWYgIVBM
QVRGT1JNKElPUykKICAgICB2b2lkIGNvcHlVUkwoY29uc3QgVVJMJiwgY29uc3QgU3RyaW5nJiB0
aXRsZSk7CiAgICAgdm9pZCBjb3B5VVJMKGNvbnN0IFVSTCYsIGNvbnN0IFN0cmluZyYgdGl0bGUs
IFBhc3RlYm9hcmQmKTsKICAgICB2b2lkIGNvcHlJbWFnZShjb25zdCBIaXRUZXN0UmVzdWx0Jik7
CisjZW5kaWYKIAogICAgIFN0cmluZyByZWFkUGxhaW5UZXh0RnJvbVBhc3RlYm9hcmQoUGFzdGVi
b2FyZCYpOwogCkBAIC0xNjEsOSArMTYzLDE3IEBAIHB1YmxpYzoKICAgICB2b2lkIHJlbW92ZUZv
cm1hdHRpbmdBbmRTdHlsZSgpOwogCiAgICAgdm9pZCBjbGVhckxhc3RFZGl0Q29tbWFuZCgpOwor
I2lmIFBMQVRGT1JNKElPUykKKyAgICB2b2lkIGVuc3VyZUxhc3RFZGl0Q29tbWFuZEhhc0N1cnJl
bnRTZWxlY3Rpb25JZk9wZW5Gb3JNb3JlVHlwaW5nKCk7CisjZW5kaWYKIAogICAgIGJvb2wgZGVs
ZXRlV2l0aERpcmVjdGlvbihTZWxlY3Rpb25EaXJlY3Rpb24sIFRleHRHcmFudWxhcml0eSwgYm9v
bCBraWxsUmluZywgYm9vbCBpc1R5cGluZ0FjdGlvbik7CiAgICAgdm9pZCBkZWxldGVTZWxlY3Rp
b25XaXRoU21hcnREZWxldGUoYm9vbCBzbWFydERlbGV0ZSk7CisjaWYgUExBVEZPUk0oSU9TKQor
ICAgIHZvaWQgY2xlYXJUZXh0KCk7CisgICAgdm9pZCByZW1vdmVVbmNoYW5nZWFibGVTdHlsZXMo
KTsKKyNlbmRpZgorICAgIAogICAgIGJvb2wgZGlzcGF0Y2hDUFBFdmVudChjb25zdCBBdG9taWNT
dHJpbmcmLCBDbGlwYm9hcmRBY2Nlc3NQb2xpY3kpOwogICAgIAogICAgIHZvaWQgYXBwbHlTdHls
ZShTdHlsZVByb3BlcnRpZXMqLCBFZGl0QWN0aW9uID0gRWRpdEFjdGlvblVuc3BlY2lmaWVkKTsK
QEAgLTIzNSw5ICsyNDUsMTQgQEAgcHVibGljOgogICAgIHZvaWQgdG9nZ2xlT3ZlcndyaXRlTW9k
ZUVuYWJsZWQoKTsKIAogICAgIHZvaWQgbWFya0FsbE1pc3NwZWxsaW5nc0FuZEJhZEdyYW1tYXJJ
blJhbmdlcyhUZXh0Q2hlY2tpbmdUeXBlTWFzaywgUmFuZ2UqIHNwZWxsaW5nUmFuZ2UsIFJhbmdl
KiBncmFtbWFyUmFuZ2UpOworI2lmIFBMQVRGT1JNKElPUykKKyAgICBOT19SRVRVUk5fRFVFX1RP
X0FTU0VSVAorI2VuZGlmCiAgICAgdm9pZCBjaGFuZ2VCYWNrVG9SZXBsYWNlZFN0cmluZyhjb25z
dCBTdHJpbmcmIHJlcGxhY2VkU3RyaW5nKTsKIAorI2lmICFQTEFURk9STShJT1MpCiAgICAgdm9p
ZCBhZHZhbmNlVG9OZXh0TWlzc3BlbGxpbmcoYm9vbCBzdGFydEJlZm9yZVNlbGVjdGlvbiA9IGZh
bHNlKTsKKyNlbmRpZiAvLyAhUExBVEZPUk0oSU9TKQogICAgIHZvaWQgc2hvd1NwZWxsaW5nR3Vl
c3NQYW5lbCgpOwogICAgIGJvb2wgc3BlbGxpbmdQYW5lbElzU2hvd2luZygpOwogCkBAIC0zMDMs
NiArMzE4LDE0IEBAIHB1YmxpYzoKICAgICBFZGl0aW5nQmVoYXZpb3IgYmVoYXZpb3IoKSBjb25z
dDsKIAogICAgIFBhc3NSZWZQdHI8UmFuZ2U+IHNlbGVjdGVkUmFuZ2UoKTsKKworI2lmIFBMQVRG
T1JNKElPUykKKyAgICB2b2lkIGNvbmZpcm1NYXJrZWRUZXh0KCk7CisgICAgdm9pZCBzZXRUZXh0
QXNDaGlsZE9mRWxlbWVudChjb25zdCBTdHJpbmcmLCBFbGVtZW50Kik7CisgICAgdm9pZCBzZXRU
ZXh0QWxpZ25tZW50Rm9yQ2hhbmdlZEJhc2VXcml0aW5nRGlyZWN0aW9uKFdyaXRpbmdEaXJlY3Rp
b24pOworICAgIHZvaWQgaW5zZXJ0RGljdGF0aW9uUGhyYXNlcyhQYXNzT3duUHRyPFZlY3RvcjxW
ZWN0b3I8U3RyaW5nPiA+ID4gZGljdGF0aW9uUGhyYXNlcywgUmV0YWluUHRyPGlkPiBtZXRhZGF0
YSk7CisgICAgdm9pZCBzZXREaWN0YXRpb25QaHJhc2VzQXNDaGlsZE9mRWxlbWVudChQYXNzT3du
UHRyPFZlY3RvcjxWZWN0b3I8U3RyaW5nPiA+ID4gZGljdGF0aW9uUGhyYXNlcywgUmV0YWluUHRy
PGlkPiBtZXRhZGF0YSwgRWxlbWVudCogZWxlbWVudCk7CisjZW5kaWYKICAgICAKICAgICB2b2lk
IGFkZFRvS2lsbFJpbmcoUmFuZ2UqLCBib29sIHByZXBlbmQpOwogCkBAIC00MDAsMTMgKzQyMywx
NSBAQCBwdWJsaWM6CiAgICAgYm9vbCBpbnNlcnRQYXJhZ3JhcGhTZXBhcmF0b3JJblF1b3RlZENv
bnRlbnQoKTsKICAgICBjb25zdCBTaW1wbGVGb250RGF0YSogZm9udEZvclNlbGVjdGlvbihib29s
JikgY29uc3Q7CiAgICAgTlNEaWN0aW9uYXJ5KiBmb250QXR0cmlidXRlc0ZvclNlbGVjdGlvblN0
YXJ0KCkgY29uc3Q7CisgICAgU3RyaW5nIHN0cmluZ1NlbGVjdGlvbkZvclBhc3RlYm9hcmQoKTsK
KyAgICBTdHJpbmcgc3RyaW5nU2VsZWN0aW9uRm9yUGFzdGVib2FyZFdpdGhJbWFnZUFsdFRleHQo
KTsKKyAgICBQYXNzUmVmUHRyPERvY3VtZW50RnJhZ21lbnQ+IHdlYkNvbnRlbnRGcm9tUGFzdGVi
b2FyZChQYXN0ZWJvYXJkJiwgUmFuZ2UmIGNvbnRleHQsIGJvb2wgYWxsb3dQbGFpblRleHQsIGJv
b2wmIGNob3NlUGxhaW5UZXh0KTsKKyNpZiAhUExBVEZPUk0oSU9TKQogICAgIGJvb2wgY2FuQ29w
eUV4Y2x1ZGluZ1N0YW5kYWxvbmVJbWFnZXMoKTsKICAgICB2b2lkIHRha2VGaW5kU3RyaW5nRnJv
bVNlbGVjdGlvbigpOwogICAgIHZvaWQgcmVhZFNlbGVjdGlvbkZyb21QYXN0ZWJvYXJkKGNvbnN0
IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpOwotICAgIFN0cmluZyBzdHJpbmdTZWxlY3Rpb25Gb3JQ
YXN0ZWJvYXJkKCk7Ci0gICAgU3RyaW5nIHN0cmluZ1NlbGVjdGlvbkZvclBhc3RlYm9hcmRXaXRo
SW1hZ2VBbHRUZXh0KCk7CiAgICAgUGFzc1JlZlB0cjxTaGFyZWRCdWZmZXI+IGRhdGFTZWxlY3Rp
b25Gb3JQYXN0ZWJvYXJkKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpOwotICAgIFBhc3NS
ZWZQdHI8RG9jdW1lbnRGcmFnbWVudD4gd2ViQ29udGVudEZyb21QYXN0ZWJvYXJkKFBhc3RlYm9h
cmQmLCBSYW5nZSYgY29udGV4dCwgYm9vbCBhbGxvd1BsYWluVGV4dCwgYm9vbCYgY2hvc2VQbGFp
blRleHQpOworI2VuZGlmIC8vICFQTEFURk9STShJT1MpCiAjZW5kaWYKIAogI2lmIFBMQVRGT1JN
KE1BQykgfHwgUExBVEZPUk0oRUZMKSB8fCBQTEFURk9STShOSVgpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvckNvbW1hbmQuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRp
dGluZy9FZGl0b3JDb21tYW5kLmNwcAppbmRleCAwMTUwNjM1MmNmYjRhYTNiODgyNjBmMTAyYjRl
ZGQ2YjEwZTk0MDMxLi4yYmUzZDQ4YjFlYjZmMmUzMzBiNzk4YzM2NTBiNDQxNzViYmRiZmIwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvckNvbW1hbmQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yQ29tbWFuZC5jcHAKQEAgLTMwMiw2ICszMDIs
MTQgQEAgc3RhdGljIGJvb2wgZXhlY3V0ZUN1dChGcmFtZSYgZnJhbWUsIEV2ZW50KiwgRWRpdG9y
Q29tbWFuZFNvdXJjZSBzb3VyY2UsIGNvbnN0IFMKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAorI2lm
IFBMQVRGT1JNKElPUykKK3N0YXRpYyBib29sIGV4ZWN1dGVDbGVhclRleHQoRnJhbWUmIGZyYW1l
LCBFdmVudCosIEVkaXRvckNvbW1hbmRTb3VyY2UsIGNvbnN0IFN0cmluZyYpCit7CisgICAgZnJh
bWUuZWRpdG9yKCkuY2xlYXJUZXh0KCk7CisgICAgcmV0dXJuIHRydWU7Cit9CisjZW5kaWYKKwog
c3RhdGljIGJvb2wgZXhlY3V0ZURlZmF1bHRQYXJhZ3JhcGhTZXBhcmF0b3IoRnJhbWUmIGZyYW1l
LCBFdmVudCosIEVkaXRvckNvbW1hbmRTb3VyY2UsIGNvbnN0IFN0cmluZyYgdmFsdWUpCiB7CiAg
ICAgaWYgKGVxdWFsSWdub3JpbmdDYXNlKHZhbHVlLCAiZGl2IikpCkBAIC0xMDkzLDcgKzExMDEs
NyBAQCBzdGF0aWMgYm9vbCBleGVjdXRlU3dhcFdpdGhNYXJrKEZyYW1lJiBmcmFtZSwgRXZlbnQq
LCBFZGl0b3JDb21tYW5kU291cmNlLCBjb25zdAogICAgIHJldHVybiB0cnVlOwogfQogCi0jaWYg
UExBVEZPUk0oTUFDKQorI2lmIFBMQVRGT1JNKE1BQykgJiYgIVBMQVRGT1JNKElPUykKIHN0YXRp
YyBib29sIGV4ZWN1dGVUYWtlRmluZFN0cmluZ0Zyb21TZWxlY3Rpb24oRnJhbWUmIGZyYW1lLCBF
dmVudCosIEVkaXRvckNvbW1hbmRTb3VyY2UsIGNvbnN0IFN0cmluZyYpCiB7CiAgICAgZnJhbWUu
ZWRpdG9yKCkudGFrZUZpbmRTdHJpbmdGcm9tU2VsZWN0aW9uKCk7CkBAIC0xMjM3LDEzICsxMjQ1
LDI5IEBAIHN0YXRpYyBib29sIGVuYWJsZUNhcmV0SW5FZGl0YWJsZVRleHQoRnJhbWUmIGZyYW1l
LCBFdmVudCogZXZlbnQsIEVkaXRvckNvbW1hbmRTCiAKIHN0YXRpYyBib29sIGVuYWJsZWRDb3B5
KEZyYW1lJiBmcmFtZSwgRXZlbnQqLCBFZGl0b3JDb21tYW5kU291cmNlKQogeworI2lmICFQTEFU
Rk9STShJT1MpCiAgICAgcmV0dXJuIGZyYW1lLmVkaXRvcigpLmNhbkRIVE1MQ29weSgpIHx8IGZy
YW1lLmVkaXRvcigpLmNhbkNvcHkoKTsKKyNlbHNlCisgICAgcmV0dXJuIGZyYW1lLmVkaXRvcigp
LmNhbkNvcHkoKTsKKyNlbmRpZgogfQogCiBzdGF0aWMgYm9vbCBlbmFibGVkQ3V0KEZyYW1lJiBm
cmFtZSwgRXZlbnQqLCBFZGl0b3JDb21tYW5kU291cmNlKQogeworI2lmICFQTEFURk9STShJT1Mp
CiAgICAgcmV0dXJuIGZyYW1lLmVkaXRvcigpLmNhbkRIVE1MQ3V0KCkgfHwgZnJhbWUuZWRpdG9y
KCkuY2FuQ3V0KCk7CisjZWxzZQorICAgIHJldHVybiBmcmFtZS5lZGl0b3IoKS5jYW5DdXQoKTsK
KyNlbmRpZgorfQorCisjaWYgUExBVEZPUk0oSU9TKQorc3RhdGljIGJvb2wgZW5hYmxlZENsZWFy
VGV4dChGcmFtZSYgZnJhbWUsIEV2ZW50KiwgRWRpdG9yQ29tbWFuZFNvdXJjZSkKK3sKKyAgICBV
TlVTRURfUEFSQU0oZnJhbWUpOworICAgIHJldHVybiBmYWxzZTsKIH0KKyNlbmRpZgogCiBzdGF0
aWMgYm9vbCBlbmFibGVkSW5FZGl0YWJsZVRleHQoRnJhbWUmIGZyYW1lLCBFdmVudCogZXZlbnQs
IEVkaXRvckNvbW1hbmRTb3VyY2UpCiB7CkBAIC0xMjk2LDcgKzEzMjAsNyBAQCBzdGF0aWMgYm9v
bCBlbmFibGVkUmVkbyhGcmFtZSYgZnJhbWUsIEV2ZW50KiwgRWRpdG9yQ29tbWFuZFNvdXJjZSkK
ICAgICByZXR1cm4gZnJhbWUuZWRpdG9yKCkuY2FuUmVkbygpOwogfQogCi0jaWYgUExBVEZPUk0o
TUFDKQorI2lmIFBMQVRGT1JNKE1BQykgJiYgIVBMQVRGT1JNKElPUykKIHN0YXRpYyBib29sIGVu
YWJsZWRUYWtlRmluZFN0cmluZ0Zyb21TZWxlY3Rpb24oRnJhbWUmIGZyYW1lLCBFdmVudCosIEVk
aXRvckNvbW1hbmRTb3VyY2UpCiB7CiAgICAgcmV0dXJuIGZyYW1lLmVkaXRvcigpLmNhbkNvcHlF
eGNsdWRpbmdTdGFuZGFsb25lSW1hZ2VzKCk7CkBAIC0xNjAzLDkgKzE2MjcsMTYgQEAgc3RhdGlj
IGNvbnN0IENvbW1hbmRNYXAmIGNyZWF0ZUNvbW1hbmRNYXAoKQogICAgICAgICB7ICJQYXN0ZUds
b2JhbFNlbGVjdGlvbiIsIHsgZXhlY3V0ZVBhc3RlR2xvYmFsU2VsZWN0aW9uLCBzdXBwb3J0ZWRG
cm9tTWVudU9yS2V5QmluZGluZywgZW5hYmxlZFBhc3RlLCBzdGF0ZU5vbmUsIHZhbHVlTnVsbCwg
bm90VGV4dEluc2VydGlvbiwgYWxsb3dFeGVjdXRpb25XaGVuRGlzYWJsZWQgfSB9LAogI2VuZGlm
CiAKLSNpZiBQTEFURk9STShNQUMpCisjaWYgUExBVEZPUk0oTUFDKSAmJiAhUExBVEZPUk0oSU9T
KQogICAgICAgICB7ICJUYWtlRmluZFN0cmluZ0Zyb21TZWxlY3Rpb24iLCB7IGV4ZWN1dGVUYWtl
RmluZFN0cmluZ0Zyb21TZWxlY3Rpb24sIHN1cHBvcnRlZEZyb21NZW51T3JLZXlCaW5kaW5nLCBl
bmFibGVkVGFrZUZpbmRTdHJpbmdGcm9tU2VsZWN0aW9uLCBzdGF0ZU5vbmUsIHZhbHVlTnVsbCwg
bm90VGV4dEluc2VydGlvbiwgZG9Ob3RBbGxvd0V4ZWN1dGlvbldoZW5EaXNhYmxlZCB9IH0sCiAj
ZW5kaWYKKyNpZiBQTEFURk9STShJT1MpCisgICAgICAgIHsgIkNsZWFyVGV4dCIsIHsgZXhlY3V0
ZUNsZWFyVGV4dCwgc3VwcG9ydGVkLCBlbmFibGVkQ2xlYXJUZXh0LCBzdGF0ZU5vbmUsIHZhbHVl
TnVsbCwgbm90VGV4dEluc2VydGlvbiwgYWxsb3dFeGVjdXRpb25XaGVuRGlzYWJsZWQgfSB9LAor
I2VuZGlmCisKKyNpZiBQTEFURk9STShHVEspIHx8IFBMQVRGT1JNKFFUKQorICAgICAgICB7ICJQ
YXN0ZUdsb2JhbFNlbGVjdGlvbiIsIHsgZXhlY3V0ZVBhc3RlR2xvYmFsU2VsZWN0aW9uLCBzdXBw
b3J0ZWRGcm9tTWVudU9yS2V5QmluZGluZywgZW5hYmxlZFBhc3RlLCBzdGF0ZU5vbmUsIHZhbHVl
TnVsbCwgbm90VGV4dEluc2VydGlvbiwgYWxsb3dFeGVjdXRpb25XaGVuRGlzYWJsZWQgfSB9LAor
I2VuZGlmCiAgICAgfTsKIAogICAgIC8vIFRoZXNlIHVuc3VwcG9ydGVkIGNvbW1hbmRzIGFyZSBs
aXN0ZWQgaGVyZSBzaW5jZSB0aGV5IGFwcGVhciBpbiB0aGUgTWljcm9zb2Z0CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0ZyYW1lU2VsZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvRnJhbWVTZWxlY3Rpb24uY3BwCmluZGV4IDRiMWU2N2RjNTA4OTVjNGNmYzU2
Mzg1ZGUxNTUzNDVkZWU4NzA4YjAuLjRhMDg4M2UyMDc2Y2VmNGIyOTU5MGY5ZjU5M2Q1MzBjNzk5
YmE2MTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRnJhbWVTZWxlY3Rpb24u
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRnJhbWVTZWxlY3Rpb24uY3BwCkBAIC02
NSw2ICs2NSwxNSBAQAogI2luY2x1ZGUgPHN0ZGlvLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0
cmluZy5oPgogCisjaWYgUExBVEZPUk0oSU9TKQorI2luY2x1ZGUgIkNocm9tZS5oIgorI2luY2x1
ZGUgIkNocm9tZUNsaWVudC5oIgorI2luY2x1ZGUgIkNvbG9yLmgiCisjaW5jbHVkZSAiUmVuZGVy
TGF5ZXIuaCIKKyNpbmNsdWRlICJSZW5kZXJPYmplY3QuaCIKKyNpbmNsdWRlICJSZW5kZXJTdHls
ZS5oIgorI2VuZGlmCisKICNkZWZpbmUgRURJVF9ERUJVRyAwCiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKQEAgLTEwNyw2ICsxMTYsMTIgQEAgRnJhbWVTZWxlY3Rpb246OkZyYW1lU2VsZWN0aW9uKEZy
YW1lKiBmcmFtZSkKICAgICAsIG1faXNDYXJldEJsaW5raW5nU3VzcGVuZGVkKGZhbHNlKQogICAg
ICwgbV9mb2N1c2VkKGZyYW1lICYmIGZyYW1lLT5wYWdlKCkgJiYgZnJhbWUtPnBhZ2UoKS0+Zm9j
dXNDb250cm9sbGVyKCkuZm9jdXNlZEZyYW1lKCkgPT0gZnJhbWUpCiAgICAgLCBtX3Nob3VsZFNo
b3dCbG9ja0N1cnNvcihmYWxzZSkKKyNpZiBQTEFURk9STShJT1MpCisgICAgLCBtX3VwZGF0ZUFw
cGVhcmFuY2VFbmFibGVkKGZhbHNlKQorICAgICwgbV9jYXJldEJsaW5rcyh0cnVlKQorICAgICwg
bV9jbG9zZVR5cGluZ1N1cHByZXNzaW9ucygwKQorICAgICwgbV9zY3JvbGxpbmdTdXBwcmVzc0Nv
dW50KDApCisjZW5kaWYKIHsKICAgICBpZiAoc2hvdWxkQWx3YXlzVXNlRGlyZWN0aW9uYWxTZWxl
Y3Rpb24obV9mcmFtZSkpCiAgICAgICAgIG1fc2VsZWN0aW9uLnNldElzRGlyZWN0aW9uYWwodHJ1
ZSk7CkBAIC0yNjgsNyArMjgzLDExIEBAIHZvaWQgRnJhbWVTZWxlY3Rpb246OnNldFNlbGVjdGlv
bihjb25zdCBWaXNpYmxlU2VsZWN0aW9uJiBuZXdTZWxlY3Rpb24sIFNldFNlbGVjCiAKICAgICBt
X2dyYW51bGFyaXR5ID0gZ3JhbnVsYXJpdHk7CiAKKyNpZiBQTEFURk9STShJT1MpCisgICAgaWYg
KGNsb3NlVHlwaW5nICYmIG1fY2xvc2VUeXBpbmdTdXBwcmVzc2lvbnMgPT0gMCkKKyNlbHNlCiAg
ICAgaWYgKGNsb3NlVHlwaW5nKQorI2VuZGlmCiAgICAgICAgIFR5cGluZ0NvbW1hbmQ6OmNsb3Nl
VHlwaW5nKG1fZnJhbWUpOwogCiAgICAgaWYgKHNob3VsZENsZWFyVHlwaW5nU3R5bGUpCkBAIC02
MjAsNiArNjM5LDExIEBAIFZpc2libGVQb3NpdGlvbiBGcmFtZVNlbGVjdGlvbjo6bW9kaWZ5RXh0
ZW5kaW5nUmlnaHQoVGV4dEdyYW51bGFyaXR5IGdyYW51bGFyaXR5CiAgICAgICAgIC8vIEZJWE1F
OiBpbXBsZW1lbnQgYWxsIG9mIHRoZSBhYm92ZT8KICAgICAgICAgcG9zID0gbW9kaWZ5RXh0ZW5k
aW5nRm9yd2FyZChncmFudWxhcml0eSk7CiAgICAgICAgIGJyZWFrOworI2lmIFBMQVRGT1JNKElP
UykKKyAgICBjYXNlIERvY3VtZW50R3JhbnVsYXJpdHk6CisgICAgICAgIEFTU0VSVF9OT1RfUkVB
Q0hFRCgpOworICAgICAgICBicmVhazsKKyNlbmRpZgogICAgIH0KICNpZiBFTkFCTEUoVVNFUlNF
TEVDVF9BTEwpCiAgICAgYWRqdXN0UG9zaXRpb25Gb3JVc2VyU2VsZWN0QWxsKHBvcywgZGlyZWN0
aW9uT2ZFbmNsb3NpbmdCbG9jaygpID09IExUUik7CkBAIC02NDYsNiArNjcwLDExIEBAIFZpc2li
bGVQb3NpdGlvbiBGcmFtZVNlbGVjdGlvbjo6bW9kaWZ5RXh0ZW5kaW5nRm9yd2FyZChUZXh0R3Jh
bnVsYXJpdHkgZ3JhbnVsYXJpCiAgICAgY2FzZSBQYXJhZ3JhcGhHcmFudWxhcml0eToKICAgICAg
ICAgcG9zID0gbmV4dFBhcmFncmFwaFBvc2l0aW9uKHBvcywgbGluZURpcmVjdGlvblBvaW50Rm9y
QmxvY2tEaXJlY3Rpb25OYXZpZ2F0aW9uKEVYVEVOVCkpOwogICAgICAgICBicmVhazsKKyNpZiBQ
TEFURk9STShJT1MpCisgICAgY2FzZSBEb2N1bWVudEdyYW51bGFyaXR5OgorICAgICAgICBBU1NF
UlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgYnJlYWs7CisjZW5kaWYKICAgICBjYXNlIFNlbnRl
bmNlQm91bmRhcnk6CiAgICAgICAgIHBvcyA9IGVuZE9mU2VudGVuY2UoZW5kRm9yUGxhdGZvcm0o
KSk7CiAgICAgICAgIGJyZWFrOwpAQCAtNzAzLDYgKzczMiwxMSBAQCBWaXNpYmxlUG9zaXRpb24g
RnJhbWVTZWxlY3Rpb246Om1vZGlmeU1vdmluZ1JpZ2h0KFRleHRHcmFudWxhcml0eSBncmFudWxh
cml0eSkKICAgICBjYXNlIExpbmVCb3VuZGFyeToKICAgICAgICAgcG9zID0gcmlnaHRCb3VuZGFy
eU9mTGluZShzdGFydEZvclBsYXRmb3JtKCksIGRpcmVjdGlvbk9mRW5jbG9zaW5nQmxvY2soKSk7
CiAgICAgICAgIGJyZWFrOworI2lmIFBMQVRGT1JNKElPUykKKyAgICBjYXNlIERvY3VtZW50R3Jh
bnVsYXJpdHk6CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICBicmVhazsK
KyNlbmRpZgogICAgIH0KICAgICByZXR1cm4gcG9zOwogfQpAQCAtNzM1LDYgKzc2OSwxMSBAQCBW
aXNpYmxlUG9zaXRpb24gRnJhbWVTZWxlY3Rpb246Om1vZGlmeU1vdmluZ0ZvcndhcmQoVGV4dEdy
YW51bGFyaXR5IGdyYW51bGFyaXR5KQogICAgIGNhc2UgUGFyYWdyYXBoR3JhbnVsYXJpdHk6CiAg
ICAgICAgIHBvcyA9IG5leHRQYXJhZ3JhcGhQb3NpdGlvbihlbmRGb3JQbGF0Zm9ybSgpLCBsaW5l
RGlyZWN0aW9uUG9pbnRGb3JCbG9ja0RpcmVjdGlvbk5hdmlnYXRpb24oU1RBUlQpKTsKICAgICAg
ICAgYnJlYWs7CisjaWYgUExBVEZPUk0oSU9TKQorICAgIGNhc2UgRG9jdW1lbnRHcmFudWxhcml0
eToKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIGJyZWFrOworI2VuZGlm
CiAgICAgY2FzZSBTZW50ZW5jZUJvdW5kYXJ5OgogICAgICAgICBwb3MgPSBlbmRPZlNlbnRlbmNl
KGVuZEZvclBsYXRmb3JtKCkpOwogICAgICAgICBicmVhazsKQEAgLTc5MSw2ICs4MzAsMTEgQEAg
VmlzaWJsZVBvc2l0aW9uIEZyYW1lU2VsZWN0aW9uOjptb2RpZnlFeHRlbmRpbmdMZWZ0KFRleHRH
cmFudWxhcml0eSBncmFudWxhcml0eSkKICAgICBjYXNlIERvY3VtZW50Qm91bmRhcnk6CiAgICAg
ICAgIHBvcyA9IG1vZGlmeUV4dGVuZGluZ0JhY2t3YXJkKGdyYW51bGFyaXR5KTsKICAgICAgICAg
YnJlYWs7CisjaWYgUExBVEZPUk0oSU9TKQorICAgIGNhc2UgRG9jdW1lbnRHcmFudWxhcml0eToK
KyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIGJyZWFrOworI2VuZGlmCiAg
ICAgfQogI2lmIEVOQUJMRShVU0VSU0VMRUNUX0FMTCkKICAgICBhZGp1c3RQb3NpdGlvbkZvclVz
ZXJTZWxlY3RBbGwocG9zLCAhKGRpcmVjdGlvbk9mRW5jbG9zaW5nQmxvY2soKSA9PSBMVFIpKTsK
QEAgLTgzOCw2ICs4ODIsMTEgQEAgVmlzaWJsZVBvc2l0aW9uIEZyYW1lU2VsZWN0aW9uOjptb2Rp
ZnlFeHRlbmRpbmdCYWNrd2FyZChUZXh0R3JhbnVsYXJpdHkgZ3JhbnVsYXIKICAgICAgICAgZWxz
ZQogICAgICAgICAgICAgcG9zID0gc3RhcnRPZkRvY3VtZW50KHBvcyk7CiAgICAgICAgIGJyZWFr
OworI2lmIFBMQVRGT1JNKElPUykKKyAgICBjYXNlIERvY3VtZW50R3JhbnVsYXJpdHk6CisgICAg
ICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICBicmVhazsKKyNlbmRpZgogICAgIH0K
ICNpZiBFTkFCTEUoVVNFUlNFTEVDVF9BTEwpCiAgICAgYWRqdXN0UG9zaXRpb25Gb3JVc2VyU2Vs
ZWN0QWxsKHBvcywgIShkaXJlY3Rpb25PZkVuY2xvc2luZ0Jsb2NrKCkgPT0gTFRSKSk7CkBAIC04
NzcsNiArOTI2LDExIEBAIFZpc2libGVQb3NpdGlvbiBGcmFtZVNlbGVjdGlvbjo6bW9kaWZ5TW92
aW5nTGVmdChUZXh0R3JhbnVsYXJpdHkgZ3JhbnVsYXJpdHkpCiAgICAgY2FzZSBMaW5lQm91bmRh
cnk6CiAgICAgICAgIHBvcyA9IGxlZnRCb3VuZGFyeU9mTGluZShzdGFydEZvclBsYXRmb3JtKCks
IGRpcmVjdGlvbk9mRW5jbG9zaW5nQmxvY2soKSk7CiAgICAgICAgIGJyZWFrOworI2lmIFBMQVRG
T1JNKElPUykKKyAgICBjYXNlIERvY3VtZW50R3JhbnVsYXJpdHk6CisgICAgICAgIEFTU0VSVF9O
T1RfUkVBQ0hFRCgpOworICAgICAgICBicmVhazsKKyNlbmRpZgogICAgIH0KICAgICByZXR1cm4g
cG9zOwogfQpAQCAtOTE5LDYgKzk3MywxMSBAQCBWaXNpYmxlUG9zaXRpb24gRnJhbWVTZWxlY3Rp
b246Om1vZGlmeU1vdmluZ0JhY2t3YXJkKFRleHRHcmFudWxhcml0eSBncmFudWxhcml0eQogICAg
ICAgICBlbHNlCiAgICAgICAgICAgICBwb3MgPSBzdGFydE9mRG9jdW1lbnQocG9zKTsKICAgICAg
ICAgYnJlYWs7CisjaWYgUExBVEZPUk0oSU9TKQorICAgIGNhc2UgRG9jdW1lbnRHcmFudWxhcml0
eToKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIGJyZWFrOworI2VuZGlm
CiAgICAgfQogICAgIHJldHVybiBwb3M7CiB9CkBAIC0xNjY4LDYgKzE3MjcsMTIgQEAgYm9vbCBG
cmFtZVNlbGVjdGlvbjo6c2V0U2VsZWN0ZWRSYW5nZShSYW5nZSogcmFuZ2UsIEVBZmZpbml0eSBh
ZmZpbml0eSwgYm9vbCBjbG8KICAgICAvLyBGSVhNRTogQ2FuIHdlIHByb3ZpZGUgZXh0ZW50QWZm
aW5pdHk/CiAgICAgVmlzaWJsZVBvc2l0aW9uIHZpc2libGVTdGFydChyYW5nZS0+c3RhcnRQb3Np
dGlvbigpLCBjb2xsYXBzZWQgPyBhZmZpbml0eSA6IERPV05TVFJFQU0pOwogICAgIFZpc2libGVQ
b3NpdGlvbiB2aXNpYmxlRW5kKHJhbmdlLT5lbmRQb3NpdGlvbigpLCBTRUxfREVGQVVMVF9BRkZJ
TklUWSk7CisjaWYgUExBVEZPUk0oSU9TKQorICAgIGlmIChyYW5nZS0+c3RhcnRDb250YWluZXIo
KSAmJiB2aXNpYmxlU3RhcnQuaXNOdWxsKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBp
ZiAocmFuZ2UtPmVuZENvbnRhaW5lcigpICYmIHZpc2libGVFbmQuaXNOdWxsKCkpCisgICAgICAg
IHJldHVybiBmYWxzZTsKKyNlbmRpZgogICAgIHNldFNlbGVjdGlvbihWaXNpYmxlU2VsZWN0aW9u
KHZpc2libGVTdGFydCwgdmlzaWJsZUVuZCksIENsZWFyVHlwaW5nU3R5bGUgfCAoY2xvc2VUeXBp
bmcgPyBDbG9zZVR5cGluZyA6IDApKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KQEAgLTE2ODUsNiAr
MTc1MCwxMiBAQCB2b2lkIEZyYW1lU2VsZWN0aW9uOjpmb2N1c2VkT3JBY3RpdmVTdGF0ZUNoYW5n
ZWQoKQogCiAgICAgZG9jdW1lbnQtPnVwZGF0ZVN0eWxlSWZOZWVkZWQoKTsKIAorI2lmIFVTRShV
SUtJVF9FRElUSU5HKQorICAgIC8vIENhcmV0IGJsaW5raW5nIChibGlua3MgfCBkb2VzIG5vdCBi
bGluaykKKyAgICBpZiAoYWN0aXZlQW5kRm9jdXNlZCkKKyAgICAgICAgc2V0U2VsZWN0aW9uRnJv
bU5vbmUoKTsKKyAgICBzZXRDYXJldFZpc2libGUoYWN0aXZlQW5kRm9jdXNlZCk7CisjZWxzZQog
ICAgIC8vIEJlY2F1c2UgUmVuZGVyT2JqZWN0OjpzZWxlY3Rpb25CYWNrZ3JvdW5kQ29sb3IoKSBh
bmQKICAgICAvLyBSZW5kZXJPYmplY3Q6OnNlbGVjdGlvbkZvcmVncm91bmRDb2xvcigpIGNoZWNr
IGlmIHRoZSBmcmFtZSBpcyBhY3RpdmUsCiAgICAgLy8gd2UgaGF2ZSB0byB1cGRhdGUgcGxhY2Vz
IHRob3NlIGNvbG9ycyB3ZXJlIHBhaW50ZWQuCkBAIC0xNzA4LDYgKzE3NzksNyBAQCB2b2lkIEZy
YW1lU2VsZWN0aW9uOjpmb2N1c2VkT3JBY3RpdmVTdGF0ZUNoYW5nZWQoKQogICAgICAgICAgICAg
aWYgKHJlbmRlcmVyICYmIHJlbmRlcmVyLT5zdHlsZSgpLmhhc0FwcGVhcmFuY2UoKSkKICAgICAg
ICAgICAgICAgICByZW5kZXJlci0+dGhlbWUoKS5zdGF0ZUNoYW5nZWQocmVuZGVyZXIsIEZvY3Vz
U3RhdGUpOwogICAgIH0KKyNlbmRpZgogfQogCiB2b2lkIEZyYW1lU2VsZWN0aW9uOjpwYWdlQWN0
aXZhdGlvbkNoYW5nZWQoKQpAQCAtMTczOCw2ICsxODEwLDExIEBAIGlubGluZSBzdGF0aWMgYm9v
bCBzaG91bGRTdG9wQmxpbmtpbmdEdWVUb1R5cGluZ0NvbW1hbmQoRnJhbWUqIGZyYW1lKQogCiB2
b2lkIEZyYW1lU2VsZWN0aW9uOjp1cGRhdGVBcHBlYXJhbmNlKCkKIHsKKyNpZiBQTEFURk9STShJ
T1MpCisgICAgaWYgKCFtX3VwZGF0ZUFwcGVhcmFuY2VFbmFibGVkKQorICAgICAgICByZXR1cm47
CisjZW5kaWYKKwogICAgIC8vIFBhaW50IGEgYmxvY2sgY3Vyc29yIGluc3RlYWQgb2YgYSBjYXJl
dCBpbiBvdmVydHlwZSBtb2RlIHVubGVzcyB0aGUgY2FyZXQgaXMgYXQgdGhlIGVuZCBvZiBhIGxp
bmUgKGluIHRoaXMgY2FzZQogICAgIC8vIHRoZSBGcmFtZVNlbGVjdGlvbiB3aWxsIHBhaW50IGEg
YmxpbmtpbmcgY2FyZXQgYXMgdXN1YWwpLgogICAgIFZpc2libGVQb3NpdGlvbiBmb3J3YXJkUG9z
aXRpb247CkBAIC0xOTEyLDYgKzE5ODksMTAgQEAgUGFzc1JlZlB0cjxNdXRhYmxlU3R5bGVQcm9w
ZXJ0aWVzPiBGcmFtZVNlbGVjdGlvbjo6Y29weVR5cGluZ1N0eWxlKCkgY29uc3QKIAogYm9vbCBG
cmFtZVNlbGVjdGlvbjo6c2hvdWxkRGVsZXRlU2VsZWN0aW9uKGNvbnN0IFZpc2libGVTZWxlY3Rp
b24mIHNlbGVjdGlvbikgY29uc3QKIHsKKyNpZiBQTEFURk9STShJT1MpCisgICAgaWYgKG1fZnJh
bWUtPnNlbGVjdGlvbkNoYW5nZUNhbGxiYWNrc0Rpc2FibGVkKCkpCisgICAgICAgIHJldHVybiB0
cnVlOworI2VuZGlmCiAgICAgcmV0dXJuIG1fZnJhbWUtPmVkaXRvcigpLmNsaWVudCgpLT5zaG91
bGREZWxldGVSYW5nZShzZWxlY3Rpb24udG9Ob3JtYWxpemVkUmFuZ2UoKS5nZXQoKSk7CiB9CiAK
QEAgLTIwMTAsMTEgKzIwOTEsMjQgQEAgdm9pZCBGcmFtZVNlbGVjdGlvbjo6cmV2ZWFsU2VsZWN0
aW9uKGNvbnN0IFNjcm9sbEFsaWdubWVudCYgYWxpZ25tZW50LCBSZXZlYWxFeHQKICAgICBQb3Np
dGlvbiBzdGFydCA9IHRoaXMtPnN0YXJ0KCk7CiAgICAgQVNTRVJUKHN0YXJ0LmRlcHJlY2F0ZWRO
b2RlKCkpOwogICAgIGlmIChzdGFydC5kZXByZWNhdGVkTm9kZSgpICYmIHN0YXJ0LmRlcHJlY2F0
ZWROb2RlKCktPnJlbmRlcmVyKCkpIHsKKyNpZiBQTEFURk9STShJT1MpCisgICAgICAgIGlmIChS
ZW5kZXJMYXllciogbGF5ZXIgPSBzdGFydC5kZXByZWNhdGVkTm9kZSgpLT5yZW5kZXJlcigpLT5l
bmNsb3NpbmdMYXllcigpKSB7CisgICAgICAgICAgICBpZiAoIW1fc2Nyb2xsaW5nU3VwcHJlc3ND
b3VudCkgeworICAgICAgICAgICAgICAgIGxheWVyLT5zZXRBZGp1c3RGb3JJT1NDYXJldFdoZW5T
Y3JvbGxpbmcodHJ1ZSk7CisgICAgICAgICAgICAgICAgbGF5ZXItPnNjcm9sbFJlY3RUb1Zpc2li
bGUocmVjdCwgYWxpZ25tZW50LCBhbGlnbm1lbnQpOworICAgICAgICAgICAgICAgIGxheWVyLT5z
ZXRBZGp1c3RGb3JJT1NDYXJldFdoZW5TY3JvbGxpbmcoZmFsc2UpOworICAgICAgICAgICAgICAg
IHVwZGF0ZUFwcGVhcmFuY2UoKTsKKyAgICAgICAgICAgICAgICBpZiAobV9mcmFtZS0+cGFnZSgp
KQorICAgICAgICAgICAgICAgICAgICBtX2ZyYW1lLT5wYWdlKCktPmNocm9tZSgpLmNsaWVudCgp
Lm5vdGlmeVJldmVhbGVkU2VsZWN0aW9uQnlTY3JvbGxpbmdGcmFtZShtX2ZyYW1lKTsKKyAgICAg
ICAgICAgIH0KKyAgICAgICAgfQorI2Vsc2UKICAgICAgICAgLy8gRklYTUU6IFRoaXMgY29kZSBv
bmx5IGhhbmRsZXMgc2Nyb2xsaW5nIHRoZSBzdGFydENvbnRhaW5lcidzIGxheWVyLCBidXQKICAg
ICAgICAgLy8gdGhlIHNlbGVjdGlvbiByZWN0IGNvdWxkIGludGVyc2VjdCBtb3JlIHRoYW4ganVz
dCB0aGF0LgogICAgICAgICAvLyBTZWUgPHJkYXI6Ly9wcm9ibGVtLzQ3OTk4OTk+LgogICAgICAg
ICBpZiAoc3RhcnQuZGVwcmVjYXRlZE5vZGUoKS0+cmVuZGVyZXIoKS0+c2Nyb2xsUmVjdFRvVmlz
aWJsZShyZWN0LCBhbGlnbm1lbnQsIGFsaWdubWVudCkpCiAgICAgICAgICAgICB1cGRhdGVBcHBl
YXJhbmNlKCk7CisjZW5kaWYKICAgICB9CiB9CiAKQEAgLTIwMjQsOSArMjExOCwxNCBAQCB2b2lk
IEZyYW1lU2VsZWN0aW9uOjpzZXRTZWxlY3Rpb25Gcm9tTm9uZSgpCiAgICAgLy8gZW50aXJlIFdl
YlZpZXcgaXMgZWRpdGFibGUgb3IgZGVzaWduTW9kZSBpcyBvbiBmb3IgdGhpcyBkb2N1bWVudCku
CiAKICAgICBEb2N1bWVudCogZG9jdW1lbnQgPSBtX2ZyYW1lLT5kb2N1bWVudCgpOworI2lmICFQ
TEFURk9STShJT1MpCiAgICAgYm9vbCBjYXJldEJyb3dzaW5nID0gbV9mcmFtZS0+c2V0dGluZ3Mo
KS5jYXJldEJyb3dzaW5nRW5hYmxlZCgpOwogICAgIGlmICghaXNOb25lKCkgfHwgIShkb2N1bWVu
dC0+aGFzRWRpdGFibGVTdHlsZSgpIHx8IGNhcmV0QnJvd3NpbmcpKQogICAgICAgICByZXR1cm47
CisjZWxzZQorICAgIGlmICghZG9jdW1lbnQgfHwgIShpc05vbmUoKSB8fCBpc1N0YXJ0T2ZEb2N1
bWVudChWaXNpYmxlUG9zaXRpb24oc2VsZWN0aW9uKCkuc3RhcnQoKSwgc2VsZWN0aW9uKCkuYWZm
aW5pdHkoKSkpKSB8fCAhZG9jdW1lbnQtPnJlbmRlcmVySXNFZGl0YWJsZSgpKQorICAgICAgICBy
ZXR1cm47CisjZW5kaWYKIAogICAgIE5vZGUqIG5vZGUgPSBkb2N1bWVudC0+ZG9jdW1lbnRFbGVt
ZW50KCk7CiAgICAgd2hpbGUgKG5vZGUgJiYgIW5vZGUtPmhhc1RhZ05hbWUoYm9keVRhZykpCkBA
IC0yMDM3LDYgKzIxMzYsMTAgQEAgdm9pZCBGcmFtZVNlbGVjdGlvbjo6c2V0U2VsZWN0aW9uRnJv
bU5vbmUoKQogCiBib29sIEZyYW1lU2VsZWN0aW9uOjpzaG91bGRDaGFuZ2VTZWxlY3Rpb24oY29u
c3QgVmlzaWJsZVNlbGVjdGlvbiYgbmV3U2VsZWN0aW9uKSBjb25zdAogeworI2lmIFBMQVRGT1JN
KElPUykKKyAgICBpZiAobV9mcmFtZS0+c2VsZWN0aW9uQ2hhbmdlQ2FsbGJhY2tzRGlzYWJsZWQo
KSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisjZW5kaWYKICAgICByZXR1cm4gbV9mcmFtZS0+ZWRp
dG9yKCkuc2hvdWxkQ2hhbmdlU2VsZWN0aW9uKHNlbGVjdGlvbigpLCBuZXdTZWxlY3Rpb24sIG5l
d1NlbGVjdGlvbi5hZmZpbml0eSgpLCBmYWxzZSk7CiB9CiAKQEAgLTIwNzIsNiArMjE3NSw0Mjkg
QEAgdm9pZCBGcmFtZVNlbGVjdGlvbjo6c2hvd1RyZWVGb3JUaGlzKCkgY29uc3QKIAogI2VuZGlm
CiAKKyNpZiBQTEFURk9STShJT1MpCit2b2lkIEZyYW1lU2VsZWN0aW9uOjpleHBhbmRTZWxlY3Rp
b25Ub0VsZW1lbnRDb250YWluaW5nQ2FyZXRTZWxlY3Rpb24oKQoreworICAgIFJlZlB0cjxSYW5n
ZT4gcmFuZ2UgPSBlbGVtZW50UmFuZ2VDb250YWluaW5nQ2FyZXRTZWxlY3Rpb24oKTsKKyAgICBp
ZiAoIXJhbmdlKQorICAgICAgICByZXR1cm47CisgICAgVmlzaWJsZVNlbGVjdGlvbiBzZWxlY3Rp
b24ocmFuZ2UuZ2V0KCksIERPV05TVFJFQU0pOworICAgIHNldFNlbGVjdGlvbihzZWxlY3Rpb24p
OworfQorCitQYXNzUmVmUHRyPFJhbmdlPiBGcmFtZVNlbGVjdGlvbjo6ZWxlbWVudFJhbmdlQ29u
dGFpbmluZ0NhcmV0U2VsZWN0aW9uKCkgY29uc3QKK3sKKyAgICBpZiAobV9zZWxlY3Rpb24uaXNO
b25lKCkpCisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgVmlzaWJsZVNlbGVjdGlvbiBz
ZWxlY3Rpb24gPSBtX3NlbGVjdGlvbjsKKyAgICBpZiAoc2VsZWN0aW9uLmlzTm9uZSgpKQorICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIFZpc2libGVQb3NpdGlvbiB2aXNpYmxlUG9zKHNl
bGVjdGlvbi5zdGFydCgpLCBWUF9ERUZBVUxUX0FGRklOSVRZKTsKKyAgICBpZiAodmlzaWJsZVBv
cy5pc051bGwoKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICBOb2RlKiBub2RlID0g
dmlzaWJsZVBvcy5kZWVwRXF1aXZhbGVudCgpLmRlcHJlY2F0ZWROb2RlKCk7CisgICAgRWxlbWVu
dCogZWxlbWVudCA9IGRlcHJlY2F0ZWRFbmNsb3NpbmdCbG9ja0Zsb3dFbGVtZW50KG5vZGUpOwor
ICAgIGlmICghZWxlbWVudCkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICBQb3NpdGlv
biBzdGFydFBvcyA9IGNyZWF0ZUxlZ2FjeUVkaXRpbmdQb3NpdGlvbihlbGVtZW50LCAwKTsKKyAg
ICBQb3NpdGlvbiBlbmRQb3MgPSBjcmVhdGVMZWdhY3lFZGl0aW5nUG9zaXRpb24oZWxlbWVudCwg
ZWxlbWVudC0+Y2hpbGROb2RlQ291bnQoKSk7CisgICAgCisgICAgVmlzaWJsZVBvc2l0aW9uIHN0
YXJ0VmlzaWJsZVBvcyhzdGFydFBvcywgVlBfREVGQVVMVF9BRkZJTklUWSk7CisgICAgVmlzaWJs
ZVBvc2l0aW9uIGVuZFZpc2libGVQb3MoZW5kUG9zLCBWUF9ERUZBVUxUX0FGRklOSVRZKTsKKyAg
ICBpZiAoc3RhcnRWaXNpYmxlUG9zLmlzTnVsbCgpIHx8IGVuZFZpc2libGVQb3MuaXNOdWxsKCkp
CisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgc2VsZWN0aW9uLnNldEJhc2Uoc3RhcnRW
aXNpYmxlUG9zKTsKKyAgICBzZWxlY3Rpb24uc2V0RXh0ZW50KGVuZFZpc2libGVQb3MpOworCisg
ICAgcmV0dXJuIHNlbGVjdGlvbi50b05vcm1hbGl6ZWRSYW5nZSgpOworfQorCit2b2lkIEZyYW1l
U2VsZWN0aW9uOjpleHBhbmRTZWxlY3Rpb25Ub1dvcmRDb250YWluaW5nQ2FyZXRTZWxlY3Rpb24o
KQoreworICAgIFZpc2libGVTZWxlY3Rpb24gc2VsZWN0aW9uKHdvcmRTZWxlY3Rpb25Db250YWlu
aW5nQ2FyZXRTZWxlY3Rpb24obV9zZWxlY3Rpb24pKTsgICAgICAgIAorICAgIGlmIChzZWxlY3Rp
b24uaXNDYXJldE9yUmFuZ2UoKSkKKyAgICAgICAgc2V0U2VsZWN0aW9uKHNlbGVjdGlvbik7Cit9
CisKK1Bhc3NSZWZQdHI8UmFuZ2U+IEZyYW1lU2VsZWN0aW9uOjp3b3JkUmFuZ2VDb250YWluaW5n
Q2FyZXRTZWxlY3Rpb24oKQoreworICAgIHJldHVybiB3b3JkU2VsZWN0aW9uQ29udGFpbmluZ0Nh
cmV0U2VsZWN0aW9uKG1fc2VsZWN0aW9uKS50b05vcm1hbGl6ZWRSYW5nZSgpOworfQorCit2b2lk
IEZyYW1lU2VsZWN0aW9uOjpleHBhbmRTZWxlY3Rpb25Ub1N0YXJ0T2ZXb3JkQ29udGFpbmluZ0Nh
cmV0U2VsZWN0aW9uKCkKK3sKKyAgICBpZiAobV9zZWxlY3Rpb24uaXNOb25lKCkgfHwgaXNTdGFy
dE9mRG9jdW1lbnQobV9zZWxlY3Rpb24uc3RhcnQoKSkpCisgICAgICAgIHJldHVybjsKKworICAg
IFZpc2libGVQb3NpdGlvbiBzMShtX3NlbGVjdGlvbi5zdGFydCgpKTsKKyAgICBWaXNpYmxlUG9z
aXRpb24gZTEobV9zZWxlY3Rpb24uZW5kKCkpOworCisgICAgVmlzaWJsZVNlbGVjdGlvbiBleHBh
bmRlZCh3b3JkU2VsZWN0aW9uQ29udGFpbmluZ0NhcmV0U2VsZWN0aW9uKG1fc2VsZWN0aW9uKSk7
CisgICAgVmlzaWJsZVBvc2l0aW9uIHMyKGV4cGFuZGVkLnN0YXJ0KCkpOworCisgICAgLy8gRG9u
J3QgYWxsb3cgdGhlIHN0YXJ0IHRvIGJlY29tZSBncmVhdGVyIGFmdGVyIHRoZSBleHBhbnNpb24u
CisgICAgaWYgKHMyLmlzTnVsbCgpIHx8IHMyID4gczEpCisgICAgICAgIHMyID0gczE7CisKKyAg
ICBtb3ZlVG8oczIsIGUxKTsKK30KKworVUNoYXIgRnJhbWVTZWxlY3Rpb246OmNoYXJhY3Rlcklu
UmVsYXRpb25Ub0NhcmV0U2VsZWN0aW9uKGludCBhbW91bnQpIGNvbnN0Cit7CisgICAgaWYgKG1f
c2VsZWN0aW9uLmlzTm9uZSgpKQorICAgICAgICByZXR1cm4gMDsKKworICAgIFZpc2libGVTZWxl
Y3Rpb24gc2VsZWN0aW9uID0gbV9zZWxlY3Rpb247CisgICAgQVNTRVJUKHNlbGVjdGlvbi5pc0Nh
cmV0T3JSYW5nZSgpKTsKKworICAgIFZpc2libGVQb3NpdGlvbiB2aXNpYmxlUG9zaXRpb24oc2Vs
ZWN0aW9uLnN0YXJ0KCksIFZQX0RFRkFVTFRfQUZGSU5JVFkpOworCisgICAgaWYgKGFtb3VudCA8
IDApIHsKKyAgICAgICAgaW50IGNvdW50ID0gYWJzKGFtb3VudCk7CisgICAgICAgIGZvciAoaW50
IGkgPSAwOyBpIDwgY291bnQ7IGkrKykKKyAgICAgICAgICAgIHZpc2libGVQb3NpdGlvbiA9IHZp
c2libGVQb3NpdGlvbi5wcmV2aW91cygpOyAgICAKKyAgICAgICAgcmV0dXJuIHZpc2libGVQb3Np
dGlvbi5jaGFyYWN0ZXJCZWZvcmUoKTsKKyAgICB9CisgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBh
bW91bnQ7IGkrKykKKyAgICAgICAgdmlzaWJsZVBvc2l0aW9uID0gdmlzaWJsZVBvc2l0aW9uLm5l
eHQoKTsgICAgCisgICAgcmV0dXJuIHZpc2libGVQb3NpdGlvbi5jaGFyYWN0ZXJBZnRlcigpOwor
fQorCitVQ2hhciBGcmFtZVNlbGVjdGlvbjo6Y2hhcmFjdGVyQmVmb3JlQ2FyZXRTZWxlY3Rpb24o
KSBjb25zdAoreworICAgIGlmIChtX3NlbGVjdGlvbi5pc05vbmUoKSkKKyAgICAgICAgcmV0dXJu
IDA7CisKKyAgICBWaXNpYmxlU2VsZWN0aW9uIHNlbGVjdGlvbiA9IG1fc2VsZWN0aW9uOworICAg
IEFTU0VSVChzZWxlY3Rpb24uaXNDYXJldE9yUmFuZ2UoKSk7CisKKyAgICBWaXNpYmxlUG9zaXRp
b24gdmlzaWJsZVBvc2l0aW9uKHNlbGVjdGlvbi5zdGFydCgpLCBWUF9ERUZBVUxUX0FGRklOSVRZ
KTsKKyAgICByZXR1cm4gdmlzaWJsZVBvc2l0aW9uLmNoYXJhY3RlckJlZm9yZSgpOworfQorCitV
Q2hhciBGcmFtZVNlbGVjdGlvbjo6Y2hhcmFjdGVyQWZ0ZXJDYXJldFNlbGVjdGlvbigpIGNvbnN0
Cit7CisgICAgaWYgKG1fc2VsZWN0aW9uLmlzTm9uZSgpKQorICAgICAgICByZXR1cm4gMDsKKwor
ICAgIFZpc2libGVTZWxlY3Rpb24gc2VsZWN0aW9uID0gbV9zZWxlY3Rpb247CisgICAgQVNTRVJU
KHNlbGVjdGlvbi5pc0NhcmV0T3JSYW5nZSgpKTsKKworICAgIFZpc2libGVQb3NpdGlvbiB2aXNp
YmxlUG9zaXRpb24oc2VsZWN0aW9uLmVuZCgpLCBWUF9ERUZBVUxUX0FGRklOSVRZKTsKKyAgICBy
ZXR1cm4gdmlzaWJsZVBvc2l0aW9uLmNoYXJhY3RlckFmdGVyKCk7Cit9CisKK2ludCBGcmFtZVNl
bGVjdGlvbjo6d29yZE9mZnNldEluUmFuZ2UoY29uc3QgUmFuZ2UgKnJhbmdlKSBjb25zdAorewor
ICAgIGlmICghcmFuZ2UpCisgICAgICAgIHJldHVybiAtMTsKKworICAgIFZpc2libGVTZWxlY3Rp
b24gc2VsZWN0aW9uID0gbV9zZWxlY3Rpb247CisgICAgaWYgKCFzZWxlY3Rpb24uaXNDYXJldCgp
KQorICAgICAgICByZXR1cm4gLTE7CisKKyAgICAvLyBGSVhNRTogVGhpcyB3aWxsIG9ubHkgd29y
ayBpbiBjYXNlcyB3aGVyZSB0aGUgc2VsZWN0aW9uIHJlbWFpbnMgaW4KKyAgICAvLyB0aGUgc2Ft
ZSBub2RlIGFmdGVyIGl0IGlzIGV4cGFuZGVkLiBJbXByb3ZlIHRvIGhhbmRsZSBtb3JlIGNvbXBs
aWNhdGVkCisgICAgLy8gY2FzZXMuCisgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CisgICAgaW50
IHJlc3VsdCA9IHNlbGVjdGlvbi5zdGFydCgpLmRlcHJlY2F0ZWRFZGl0aW5nT2Zmc2V0KCkgLSBy
YW5nZS0+c3RhcnRPZmZzZXQoZWMpOworICAgIEFTU0VSVCghZWMpOworICAgIGlmIChyZXN1bHQg
PCAwKQorICAgICAgICByZXN1bHQgPSAwOworICAgIHJldHVybiByZXN1bHQ7Cit9CisKK2Jvb2wg
RnJhbWVTZWxlY3Rpb246OnNwYWNlRm9sbG93c1dvcmRJblJhbmdlKGNvbnN0IFJhbmdlICpyYW5n
ZSkgY29uc3QKK3sKKyAgICBpZiAoIXJhbmdlKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
RXhjZXB0aW9uQ29kZSBlYyA9IDA7CisgICAgTm9kZSogbm9kZSA9IHJhbmdlLT5lbmRDb250YWlu
ZXIoZWMpOworICAgIEFTU0VSVCghZWMpOworICAgIGludCBlbmRPZmZzZXQgPSByYW5nZS0+ZW5k
T2Zmc2V0KGVjKTsKKyAgICBBU1NFUlQoIWVjKTsKKyAgICBWaXNpYmxlUG9zaXRpb24gcG9zKGNy
ZWF0ZUxlZ2FjeUVkaXRpbmdQb3NpdGlvbihub2RlLCBlbmRPZmZzZXQpLCBWUF9ERUZBVUxUX0FG
RklOSVRZKTsKKyAgICByZXR1cm4gaXNTcGFjZU9yTmV3bGluZShwb3MuY2hhcmFjdGVyQWZ0ZXIo
KSk7Cit9CisKK2Jvb2wgRnJhbWVTZWxlY3Rpb246OnNlbGVjdGlvbkF0RG9jdW1lbnRTdGFydCgp
IGNvbnN0Cit7CisgICAgVmlzaWJsZVNlbGVjdGlvbiBzZWxlY3Rpb24gPSBtX3NlbGVjdGlvbjsK
KyAgICBpZiAoc2VsZWN0aW9uLmlzTm9uZSgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAg
ICBQb3NpdGlvbiBzdGFydFBvcyhzZWxlY3Rpb24uc3RhcnQoKSk7CisgICAgVmlzaWJsZVBvc2l0
aW9uIHBvcyhjcmVhdGVMZWdhY3lFZGl0aW5nUG9zaXRpb24oc3RhcnRQb3MuZGVwcmVjYXRlZE5v
ZGUoKSwgc3RhcnRQb3MuZGVwcmVjYXRlZEVkaXRpbmdPZmZzZXQoKSksIFZQX0RFRkFVTFRfQUZG
SU5JVFkpOworICAgIGlmIChwb3MuaXNOdWxsKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKwor
ICAgIHJldHVybiBpc1N0YXJ0T2ZEb2N1bWVudChwb3MpOworfQorCitib29sIEZyYW1lU2VsZWN0
aW9uOjpzZWxlY3Rpb25BdFNlbnRlbmNlU3RhcnQoKSBjb25zdAoreworICAgIFZpc2libGVTZWxl
Y3Rpb24gc2VsZWN0aW9uID0gbV9zZWxlY3Rpb247CisgICAgaWYgKHNlbGVjdGlvbi5pc05vbmUo
KSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgcmV0dXJuIGFjdHVhbFNlbGVjdGlvbkF0
U2VudGVuY2VTdGFydChzZWxlY3Rpb24pOworfQorCitib29sIEZyYW1lU2VsZWN0aW9uOjpzZWxl
Y3Rpb25BdFdvcmRTdGFydCgpIGNvbnN0Cit7CisgICAgVmlzaWJsZVNlbGVjdGlvbiBzZWxlY3Rp
b24gPSBtX3NlbGVjdGlvbjsKKyAgICBpZiAoc2VsZWN0aW9uLmlzTm9uZSgpKQorICAgICAgICBy
ZXR1cm4gZmFsc2U7CisKKyAgICBQb3NpdGlvbiBzdGFydFBvcyhzZWxlY3Rpb24uc3RhcnQoKSk7
CisgICAgVmlzaWJsZVBvc2l0aW9uIHBvcyhjcmVhdGVMZWdhY3lFZGl0aW5nUG9zaXRpb24oc3Rh
cnRQb3MuZGVwcmVjYXRlZE5vZGUoKSwgc3RhcnRQb3MuZGVwcmVjYXRlZEVkaXRpbmdPZmZzZXQo
KSksIFZQX0RFRkFVTFRfQUZGSU5JVFkpOworICAgIGlmIChwb3MuaXNOdWxsKCkpCisgICAgICAg
IHJldHVybiBmYWxzZTsKKworICAgIGlmIChpc1N0YXJ0T2ZQYXJhZ3JhcGgocG9zKSkKKyAgICAg
ICAgcmV0dXJuIHRydWU7CisgICAgICAgIAorICAgIGJvb2wgcmVzdWx0ID0gdHJ1ZTsKKyAgICB1
bnNpZ25lZCBwcmV2aW91c0NvdW50ID0gMDsKKyAgICBmb3IgKHBvcyA9IHBvcy5wcmV2aW91cygp
OyAhcG9zLmlzTnVsbCgpOyBwb3MgPSBwb3MucHJldmlvdXMoKSkgeworICAgICAgICBwcmV2aW91
c0NvdW50Kys7CisgICAgICAgIGlmIChpc1N0YXJ0T2ZQYXJhZ3JhcGgocG9zKSkgeworICAgICAg
ICAgICAgaWYgKHByZXZpb3VzQ291bnQgPT0gMSkKKyAgICAgICAgICAgICAgICByZXN1bHQgPSBm
YWxzZTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIFVDaGFyIGMocG9z
LmNoYXJhY3RlckFmdGVyKCkpOworICAgICAgICBpZiAoYykgeworICAgICAgICAgICAgcmVzdWx0
ID0gaXNTcGFjZU9yTmV3bGluZShjKSB8fCBjID09IDB4QTAgfHwgKHVfaXNwdW5jdChjKSAmJiBj
ICE9ICcsJyAmJiBjICE9ICctJyAmJiBjICE9ICdcJycpOworICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgIH0KKyAgICB9CisKKyAgICByZXR1cm4gcmVzdWx0OworfQorCitQYXNzUmVmUHRyPFJh
bmdlPiBGcmFtZVNlbGVjdGlvbjo6cmFuZ2VCeU1vdmluZ0N1cnJlbnRTZWxlY3Rpb24oaW50IGFt
b3VudCkgY29uc3QKK3sKKyAgICByZXR1cm4gcmFuZ2VCeUFsdGVyaW5nQ3VycmVudFNlbGVjdGlv
bihBbHRlcmF0aW9uTW92ZSwgYW1vdW50KTsKK30KKworUGFzc1JlZlB0cjxSYW5nZT4gRnJhbWVT
ZWxlY3Rpb246OnJhbmdlQnlFeHRlbmRpbmdDdXJyZW50U2VsZWN0aW9uKGludCBhbW91bnQpIGNv
bnN0Cit7CisgICAgcmV0dXJuIHJhbmdlQnlBbHRlcmluZ0N1cnJlbnRTZWxlY3Rpb24oQWx0ZXJh
dGlvbkV4dGVuZCwgYW1vdW50KTsKK30KKwordm9pZCBGcmFtZVNlbGVjdGlvbjo6c2VsZWN0UmFu
Z2VPbkVsZW1lbnQodW5zaWduZWQgbG9jYXRpb24sIHVuc2lnbmVkIGxlbmd0aCwgTm9kZSogbm9k
ZSkKK3sKKyAgICBSZWZQdHI8UmFuZ2U+IHJlc3VsdFJhbmdlID0gbV9mcmFtZS0+ZG9jdW1lbnQo
KS0+Y3JlYXRlUmFuZ2UoKTsKKyAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKKyAgICByZXN1bHRS
YW5nZS0+c2V0U3RhcnQobm9kZSwgbG9jYXRpb24sIGVjKTsKKyAgICBBU1NFUlQoIWVjKTsKKyAg
ICByZXN1bHRSYW5nZS0+c2V0RW5kKG5vZGUsIGxvY2F0aW9uICsgbGVuZ3RoLCBlYyk7CisgICAg
QVNTRVJUKCFlYyk7CisgICAgVmlzaWJsZVNlbGVjdGlvbiBzZWxlY3Rpb24gPSBWaXNpYmxlU2Vs
ZWN0aW9uKHJlc3VsdFJhbmdlLmdldCgpLCBTRUxfREVGQVVMVF9BRkZJTklUWSk7CisgICAgc2V0
U2VsZWN0aW9uKHNlbGVjdGlvbiwgdHJ1ZSk7Cit9CisKK1Zpc2libGVTZWxlY3Rpb24gRnJhbWVT
ZWxlY3Rpb246OndvcmRTZWxlY3Rpb25Db250YWluaW5nQ2FyZXRTZWxlY3Rpb24oY29uc3QgVmlz
aWJsZVNlbGVjdGlvbiYgc2VsZWN0aW9uKQoreworICAgIGlmIChzZWxlY3Rpb24uaXNOb25lKCkp
CisgICAgICAgIHJldHVybiBWaXNpYmxlU2VsZWN0aW9uKCk7CisKKyAgICBBU1NFUlQoc2VsZWN0
aW9uLmlzQ2FyZXRPclJhbmdlKCkpOworICAgIEZyYW1lU2VsZWN0aW9uIGZyYW1lU2VsZWN0aW9u
OworICAgIGZyYW1lU2VsZWN0aW9uLnNldFNlbGVjdGlvbihzZWxlY3Rpb24pOworCisgICAgUG9z
aXRpb24gc3RhcnRQb3NCZWZvcmVFeHBhbnNpb24oc2VsZWN0aW9uLnN0YXJ0KCkpOworICAgIFBv
c2l0aW9uIGVuZFBvc0JlZm9yZUV4cGFuc2lvbihzZWxlY3Rpb24uZW5kKCkpOworICAgIFZpc2li
bGVQb3NpdGlvbiBzdGFydFZpc2libGVQb3NCZWZvcmVFeHBhbnNpb24oc3RhcnRQb3NCZWZvcmVF
eHBhbnNpb24sIFZQX0RFRkFVTFRfQUZGSU5JVFkpOworICAgIFZpc2libGVQb3NpdGlvbiBlbmRW
aXNpYmxlUG9zQmVmb3JlRXhwYW5zaW9uKGVuZFBvc0JlZm9yZUV4cGFuc2lvbiwgVlBfREVGQVVM
VF9BRkZJTklUWSk7CisgICAgaWYgKGVuZFZpc2libGVQb3NCZWZvcmVFeHBhbnNpb24uaXNOdWxs
KCkpCisgICAgICAgIHJldHVybiBWaXNpYmxlU2VsZWN0aW9uKCk7CisKKyAgICBpZiAoaXNFbmRP
ZlBhcmFncmFwaChlbmRWaXNpYmxlUG9zQmVmb3JlRXhwYW5zaW9uKSkgeworICAgICAgICBVQ2hh
ciBjKGVuZFZpc2libGVQb3NCZWZvcmVFeHBhbnNpb24uY2hhcmFjdGVyQmVmb3JlKCkpOworICAg
ICAgICBpZiAoaXNTcGFjZU9yTmV3bGluZShjKSB8fCBjID09IDB4QTApIHsKKyAgICAgICAgICAg
IC8vIEVuZCBvZiBwYXJhZ3JhcGggd2l0aCBzcGFjZS4KKyAgICAgICAgICAgIHJldHVybiBWaXNp
YmxlU2VsZWN0aW9uKCk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvLyBJZiBhdCBlbmQgb2Yg
cGFyYWdyYXBoLCBtb3ZlIGJhY2t3YXJkcyBvbmUgY2hhcmFjdGVyLgorICAgIC8vIFRoaXMgaGFz
IHRoZSBlZmZlY3Qgb2Ygc2VsZWN0aW5nIHRoZSB3b3JkIG9uIHRoZSBsaW5lICh3aGljaCBpcwor
ICAgIC8vIHdoYXQgd2Ugd2FudCwgcmF0aGVyIHRoYW4gc2VsZWN0aW5nIHBhc3QgdGhlIGVuZCBv
ZiB0aGUgbGluZSkuCisgICAgaWYgKGlzRW5kT2ZQYXJhZ3JhcGgoZW5kVmlzaWJsZVBvc0JlZm9y
ZUV4cGFuc2lvbikgJiYgIWlzU3RhcnRPZlBhcmFncmFwaChlbmRWaXNpYmxlUG9zQmVmb3JlRXhw
YW5zaW9uKSkKKyAgICAgICAgZnJhbWVTZWxlY3Rpb24ubW9kaWZ5KEZyYW1lU2VsZWN0aW9uOjpB
bHRlcmF0aW9uTW92ZSwgRGlyZWN0aW9uQmFja3dhcmQsIENoYXJhY3RlckdyYW51bGFyaXR5KTsK
KworICAgIFZpc2libGVTZWxlY3Rpb24gbmV3U2VsZWN0aW9uID0gZnJhbWVTZWxlY3Rpb24uc2Vs
ZWN0aW9uKCk7CisgICAgbmV3U2VsZWN0aW9uLmV4cGFuZFVzaW5nR3JhbnVsYXJpdHkoV29yZEdy
YW51bGFyaXR5KTsKKyAgICBmcmFtZVNlbGVjdGlvbi5zZXRTZWxlY3Rpb24obmV3U2VsZWN0aW9u
LCBmcmFtZVNlbGVjdGlvbi5ncmFudWxhcml0eSgpKTsKKworICAgIFBvc2l0aW9uIHN0YXJ0UG9z
KGZyYW1lU2VsZWN0aW9uLnNlbGVjdGlvbigpLnN0YXJ0KCkpOworICAgIFBvc2l0aW9uIGVuZFBv
cyhmcmFtZVNlbGVjdGlvbi5zZWxlY3Rpb24oKS5lbmQoKSk7CisKKyAgICAvLyBFeHBhbnNpb24g
Y2Fubm90IGJlIGFsbG93ZWQgdG8gY2hhbmdlIHNlbGVjdGlvbiBzbyB0aGF0IGl0IGlzIG5vIGxv
bmdlcgorICAgIC8vIHRvdWNoZXMgKG9yIGNvbnRhaW5zKSB0aGUgb3JpZ2luYWwsIHVuZXhwYW5k
ZWQgc2VsZWN0aW9uLgorICAgIC8vIEVuZm9yY2UgdGhpcyBvbiB0aGUgd2F5IGludG8gdGhlc2Ug
YWRkaXRpb25hbCBjYWxjdWxhdGlvbnMgdG8gZ2l2ZSB0aGVtCisgICAgLy8gdGhlIGJlc3QgY2hh
bmNlIHRvIHlpZWxkIGEgc3VpdGFibGUgYW5zd2VyLgorICAgIGlmIChzdGFydFBvcyA+IHN0YXJ0
UG9zQmVmb3JlRXhwYW5zaW9uKQorICAgICAgICBzdGFydFBvcyA9IHN0YXJ0UG9zQmVmb3JlRXhw
YW5zaW9uOworICAgIGlmIChlbmRQb3MgPCBlbmRQb3NCZWZvcmVFeHBhbnNpb24pCisgICAgICAg
IGVuZFBvcyA9IGVuZFBvc0JlZm9yZUV4cGFuc2lvbjsKKworICAgIFZpc2libGVQb3NpdGlvbiBz
dGFydFZpc2libGVQb3Moc3RhcnRQb3MsIFZQX0RFRkFVTFRfQUZGSU5JVFkpOworICAgIFZpc2li
bGVQb3NpdGlvbiBlbmRWaXNpYmxlUG9zKGVuZFBvcywgVlBfREVGQVVMVF9BRkZJTklUWSk7CisK
KyAgICBpZiAoc3RhcnRWaXNpYmxlUG9zLmlzTnVsbCgpIHx8IGVuZFZpc2libGVQb3MuaXNOdWxs
KCkpIHsKKyAgICAgICAgLy8gU3RhcnQgb3IgZW5kIGlzIG5pbAorICAgICAgICByZXR1cm4gVmlz
aWJsZVNlbGVjdGlvbigpOworICAgIH0KKworICAgIGlmIChpc0VuZE9mTGluZShlbmRWaXNpYmxl
UG9zQmVmb3JlRXhwYW5zaW9uKSkgeworICAgICAgICBWaXNpYmxlUG9zaXRpb24gcHJldmlvdXMo
ZW5kVmlzaWJsZVBvcy5wcmV2aW91cygpKTsKKyAgICAgICAgaWYgKHByZXZpb3VzID09IGVuZFZp
c2libGVQb3MpIHsKKyAgICAgICAgICAgIC8vIEVtcHR5IGRvY3VtZW50CisgICAgICAgICAgICBy
ZXR1cm4gVmlzaWJsZVNlbGVjdGlvbigpOworICAgICAgICB9CisgICAgICAgIFVDaGFyIGMocHJl
dmlvdXMuY2hhcmFjdGVyQWZ0ZXIoKSk7CisgICAgICAgIGlmIChpc1NwYWNlT3JOZXdsaW5lKGMp
IHx8IGMgPT0gMHhBMCkgeworICAgICAgICAgICAgLy8gU3BhY2UgYXQgZW5kIG9mIGxpbmUKKyAg
ICAgICAgICAgIHJldHVybiBWaXNpYmxlU2VsZWN0aW9uKCk7CisgICAgICAgIH0KKyAgICB9CisK
KyAgICAvLyBFeHBhbnNpb24gaGFzIHNlbGVjdGVkIHBhc3QgZW5kIG9mIGxpbmUuCisgICAgLy8g
VHJ5IHJlcG9zaXRpb25pbmcgYmFja3dhcmRzLgorICAgIGlmIChpc0VuZE9mTGluZShzdGFydFZp
c2libGVQb3MpICYmIGlzU3RhcnRPZkxpbmUoZW5kVmlzaWJsZVBvcykpIHsKKyAgICAgICAgVmlz
aWJsZVBvc2l0aW9uIHByZXZpb3VzKHN0YXJ0VmlzaWJsZVBvcy5wcmV2aW91cygpKTsKKyAgICAg
ICAgaWYgKGlzRW5kT2ZMaW5lKHByZXZpb3VzKSkgeworICAgICAgICAgICAgLy8gT24gZW1wdHkg
bGluZQorICAgICAgICAgICAgcmV0dXJuIFZpc2libGVTZWxlY3Rpb24oKTsKKyAgICAgICAgfQor
ICAgICAgICBVQ2hhciBjKHByZXZpb3VzLmNoYXJhY3RlckFmdGVyKCkpOworICAgICAgICBpZiAo
aXNTcGFjZU9yTmV3bGluZShjKSB8fCBjID09IDB4QTApIHsKKyAgICAgICAgICAgIC8vIFNwYWNl
IGF0IGVuZCBvZiBsaW5lCisgICAgICAgICAgICByZXR1cm4gVmlzaWJsZVNlbGVjdGlvbigpOwor
ICAgICAgICB9CisgICAgICAgIGZyYW1lU2VsZWN0aW9uLm1vdmVUbyhzdGFydFZpc2libGVQb3Mp
OworICAgICAgICBmcmFtZVNlbGVjdGlvbi5tb2RpZnkoRnJhbWVTZWxlY3Rpb246OkFsdGVyYXRp
b25FeHRlbmQsIERpcmVjdGlvbkJhY2t3YXJkLCBXb3JkR3JhbnVsYXJpdHkpOworICAgICAgICBz
dGFydFBvcyA9IGZyYW1lU2VsZWN0aW9uLnNlbGVjdGlvbigpLnN0YXJ0KCk7CisgICAgICAgIGVu
ZFBvcyA9IGZyYW1lU2VsZWN0aW9uLnNlbGVjdGlvbigpLmVuZCgpOworICAgICAgICBzdGFydFZp
c2libGVQb3MgPSBWaXNpYmxlUG9zaXRpb24oc3RhcnRQb3MsIFZQX0RFRkFVTFRfQUZGSU5JVFkp
OworICAgICAgICBlbmRWaXNpYmxlUG9zID0gVmlzaWJsZVBvc2l0aW9uKGVuZFBvcywgVlBfREVG
QVVMVF9BRkZJTklUWSk7CisgICAgICAgIGlmIChzdGFydFZpc2libGVQb3MuaXNOdWxsKCkgfHwg
ZW5kVmlzaWJsZVBvcy5pc051bGwoKSkgeworICAgICAgICAgICAgLy8gU3RhcnQgb3IgZW5kIGlz
IG5pbAorICAgICAgICAgICAgcmV0dXJuIFZpc2libGVTZWxlY3Rpb24oKTsKKyAgICAgICAgfQor
ICAgIH0KKworICAgIC8vIE5vdyBsb29wIGJhY2t3YXJkcyB1bnRpbCB3ZSBmaW5kIGEgbm9uLXNw
YWNlLgorICAgIHdoaWxlIChlbmRWaXNpYmxlUG9zICE9IHN0YXJ0VmlzaWJsZVBvcykgeworICAg
ICAgICBWaXNpYmxlUG9zaXRpb24gcHJldmlvdXMoZW5kVmlzaWJsZVBvcy5wcmV2aW91cygpKTsK
KyAgICAgICAgVUNoYXIgYyhwcmV2aW91cy5jaGFyYWN0ZXJBZnRlcigpKTsKKyAgICAgICAgaWYg
KCFpc1NwYWNlT3JOZXdsaW5lKGMpICYmIGMgIT0gMHhBMCkKKyAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICBlbmRWaXNpYmxlUG9zID0gcHJldmlvdXM7CisgICAgfQorCisgICAgLy8gRXhwYW5z
aW9uIGNhbm5vdCBiZSBhbGxvd2VkIHRvIGNoYW5nZSBzZWxlY3Rpb24gc28gdGhhdCBpdCBpcyBu
byBsb25nZXIKKyAgICAvLyB0b3VjaGVzIChvciBjb250YWlucykgdGhlIG9yaWdpbmFsLCB1bmV4
cGFuZGVkIHNlbGVjdGlvbi4KKyAgICAvLyBFbmZvcmNlIHRoaXMgb24gdGhlIHdheSBvdXQgb2Yg
dGhlIGZ1bmN0aW9uIHRvIHByZXNlcnZlIHRoZSBpbnZhcmlhbnQuCisgICAgaWYgKHN0YXJ0Vmlz
aWJsZVBvcyA+IHN0YXJ0VmlzaWJsZVBvc0JlZm9yZUV4cGFuc2lvbikKKyAgICAgICAgc3RhcnRW
aXNpYmxlUG9zID0gc3RhcnRWaXNpYmxlUG9zQmVmb3JlRXhwYW5zaW9uOworICAgIGlmIChlbmRW
aXNpYmxlUG9zIDwgZW5kVmlzaWJsZVBvc0JlZm9yZUV4cGFuc2lvbikKKyAgICAgICAgZW5kVmlz
aWJsZVBvcyA9IGVuZFZpc2libGVQb3NCZWZvcmVFeHBhbnNpb247CisKKyAgICByZXR1cm4gVmlz
aWJsZVNlbGVjdGlvbihzdGFydFZpc2libGVQb3MsIGVuZFZpc2libGVQb3MpOyAgICAKK30KKwor
Ym9vbCBGcmFtZVNlbGVjdGlvbjo6YWN0dWFsU2VsZWN0aW9uQXRTZW50ZW5jZVN0YXJ0KGNvbnN0
IFZpc2libGVTZWxlY3Rpb24mIHNlbCkgY29uc3QKK3sKKyAgICBQb3NpdGlvbiBzdGFydFBvcyhz
ZWwuc3RhcnQoKSk7CisgICAgVmlzaWJsZVBvc2l0aW9uIHBvcyhjcmVhdGVMZWdhY3lFZGl0aW5n
UG9zaXRpb24oc3RhcnRQb3MuZGVwcmVjYXRlZE5vZGUoKSwgc3RhcnRQb3MuZGVwcmVjYXRlZEVk
aXRpbmdPZmZzZXQoKSksIFZQX0RFRkFVTFRfQUZGSU5JVFkpOworICAgIGlmIChwb3MuaXNOdWxs
KCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGlmIChpc1N0YXJ0T2ZQYXJhZ3JhcGgo
cG9zKSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisgCisgICAgYm9vbCByZXN1bHQgPSB0cnVlOwor
ICAgIGJvb2wgc2F3U3BhY2UgPSBmYWxzZTsKKyAgICB1bnNpZ25lZCBwcmV2aW91c0NvdW50ID0g
MDsKKyAgICBmb3IgKHBvcyA9IHBvcy5wcmV2aW91cygpOyAhcG9zLmlzTnVsbCgpOyBwb3MgPSBw
b3MucHJldmlvdXMoKSkgeworICAgICAgICBwcmV2aW91c0NvdW50Kys7CisgICAgICAgIGlmIChp
c1N0YXJ0T2ZQYXJhZ3JhcGgocG9zKSkgeworICAgICAgICAgICAgaWYgKHByZXZpb3VzQ291bnQg
PT0gMSB8fCAocHJldmlvdXNDb3VudCA9PSAyICYmIHNhd1NwYWNlKSkKKyAgICAgICAgICAgICAg
ICByZXN1bHQgPSBmYWxzZTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAg
IFVDaGFyIGMocG9zLmNoYXJhY3RlckFmdGVyKCkpOworICAgICAgICBpZiAoYykgeworICAgICAg
ICAgICAgaWYgKGlzU3BhY2VPck5ld2xpbmUoYykgfHwgYyA9PSAweEEwKSB7CisgICAgICAgICAg
ICAgICAgc2F3U3BhY2UgPSB0cnVlOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSB7
CisgICAgICAgICAgICAgICAgcmVzdWx0ID0gKGMgPT0gJy4nIHx8IGMgPT0gJyEnIHx8IGMgPT0g
Jz8nKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQor
ICAgIH0KKyAgICAKKyAgICByZXR1cm4gcmVzdWx0OworfQorCitQYXNzUmVmUHRyPFJhbmdlPiBG
cmFtZVNlbGVjdGlvbjo6cmFuZ2VCeUFsdGVyaW5nQ3VycmVudFNlbGVjdGlvbihFQWx0ZXJhdGlv
biBhbHRlcmF0aW9uLCBpbnQgYW1vdW50KSBjb25zdAoreworICAgIGlmIChtX3NlbGVjdGlvbi5p
c05vbmUoKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICBpZiAoIWFtb3VudCkKKyAg
ICAgICAgcmV0dXJuIHRvTm9ybWFsaXplZFJhbmdlKCk7CisKKyAgICBGcmFtZVNlbGVjdGlvbiBm
cmFtZVNlbGVjdGlvbjsKKyAgICBmcmFtZVNlbGVjdGlvbi5zZXRTZWxlY3Rpb24obV9zZWxlY3Rp
b24pOworICAgIFNlbGVjdGlvbkRpcmVjdGlvbiBkaXJlY3Rpb24gPSBhbW91bnQgPiAwID8gRGly
ZWN0aW9uRm9yd2FyZCA6IERpcmVjdGlvbkJhY2t3YXJkOworICAgIGZvciAoaW50IGkgPSAwOyBp
IDwgYWJzKGFtb3VudCk7IGkrKykKKyAgICAgICAgZnJhbWVTZWxlY3Rpb24ubW9kaWZ5KGFsdGVy
YXRpb24sIGRpcmVjdGlvbiwgQ2hhcmFjdGVyR3JhbnVsYXJpdHkpOworICAgIHJldHVybiBmcmFt
ZVNlbGVjdGlvbi50b05vcm1hbGl6ZWRSYW5nZSgpOworfQorCit2b2lkIEZyYW1lU2VsZWN0aW9u
OjpjbGVhckN1cnJlbnRTZWxlY3Rpb24oKQoreworICAgIHNldFNlbGVjdGlvbihWaXNpYmxlU2Vs
ZWN0aW9uKCkpOworfQorCit2b2lkIEZyYW1lU2VsZWN0aW9uOjpzZXRDYXJldEJsaW5rcyhib29s
IGNhcmV0QmxpbmtzKQoreworICAgIGlmIChtX2NhcmV0QmxpbmtzID09IGNhcmV0QmxpbmtzKQor
ICAgICAgICByZXR1cm47CisjaWYgRU5BQkxFKFRFWFRfQ0FSRVQpCisgICAgbV9mcmFtZS0+ZG9j
dW1lbnQoKS0+dXBkYXRlTGF5b3V0SWdub3JlUGVuZGluZ1N0eWxlc2hlZXRzKCk7IAorICAgIGlm
IChtX2NhcmV0UGFpbnQpIHsKKyAgICAgICAgbV9jYXJldFBhaW50ID0gZmFsc2U7IAorICAgICAg
ICBpbnZhbGlkYXRlQ2FyZXRSZWN0KCk7IAorICAgIH0KKyNlbmRpZgorICAgIGlmIChjYXJldEJs
aW5rcykKKyAgICAgICAgc2V0Rm9jdXNlZEVsZW1lbnRJZk5lZWRlZCgpOworICAgIG1fY2FyZXRC
bGlua3MgPSBjYXJldEJsaW5rczsKKyAgICB1cGRhdGVBcHBlYXJhbmNlKCk7Cit9CisKK3ZvaWQg
RnJhbWVTZWxlY3Rpb246OnNldENhcmV0Q29sb3IoY29uc3QgQ29sb3ImIGNhcmV0Q29sb3IpCit7
CisgICAgaWYgKG1fY2FyZXRDb2xvciAhPSBjYXJldENvbG9yKSB7CisgICAgICAgIG1fY2FyZXRD
b2xvciA9IGNhcmV0Q29sb3I7CisgICAgICAgIGlmIChjYXJldElzVmlzaWJsZSgpICYmIG1fY2Fy
ZXRCbGlua3MgJiYgaXNDYXJldCgpKQorICAgICAgICAgICAgaW52YWxpZGF0ZUNhcmV0UmVjdCgp
OworICAgIH0KK30KKyNlbmRpZiAvLyBQTEFURk9STShJT1MpCisKIH0KIAogI2lmbmRlZiBOREVC
VUcKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRnJhbWVTZWxlY3Rpb24uaCBi
L1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRnJhbWVTZWxlY3Rpb24uaAppbmRleCBlODgwNWMxMDgx
NzZjYWVmNWU5YThkMTE1ZGNmZWYzMmRiNTVlN2VjLi5lYTdkOTAyZDcxNWM5M2JlYWQwMzk3OTk1
MzUzNDc2Yzc1NzM0N2E1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0ZyYW1l
U2VsZWN0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9GcmFtZVNlbGVjdGlvbi5o
CkBAIC0zNSw2ICszNSwxMCBAQAogI2luY2x1ZGUgIlZpc2libGVTZWxlY3Rpb24uaCIKICNpbmNs
dWRlIDx3dGYvTm9uY29weWFibGUuaD4KIAorI2lmIFBMQVRGT1JNKElPUykKKyNpbmNsdWRlICJD
b2xvci5oIgorI2VuZGlmCisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQ2hhcmFjdGVy
RGF0YTsKQEAgLTIyOCw2ICsyMzIsNDMgQEAgcHVibGljOgogICAgIHZvaWQgc2hvd1RyZWVGb3JU
aGlzKCkgY29uc3Q7CiAjZW5kaWYKIAorI2lmIFBMQVRGT1JNKElPUykKK3B1YmxpYzoKKyAgICB2
b2lkIGV4cGFuZFNlbGVjdGlvblRvRWxlbWVudENvbnRhaW5pbmdDYXJldFNlbGVjdGlvbigpOwor
ICAgIFBhc3NSZWZQdHI8UmFuZ2U+IGVsZW1lbnRSYW5nZUNvbnRhaW5pbmdDYXJldFNlbGVjdGlv
bigpIGNvbnN0OworICAgIHZvaWQgZXhwYW5kU2VsZWN0aW9uVG9Xb3JkQ29udGFpbmluZ0NhcmV0
U2VsZWN0aW9uKCk7CisgICAgUGFzc1JlZlB0cjxSYW5nZT4gd29yZFJhbmdlQ29udGFpbmluZ0Nh
cmV0U2VsZWN0aW9uKCk7CisgICAgdm9pZCBleHBhbmRTZWxlY3Rpb25Ub1N0YXJ0T2ZXb3JkQ29u
dGFpbmluZ0NhcmV0U2VsZWN0aW9uKCk7CisgICAgVUNoYXIgY2hhcmFjdGVySW5SZWxhdGlvblRv
Q2FyZXRTZWxlY3Rpb24oaW50IGFtb3VudCkgY29uc3Q7CisgICAgVUNoYXIgY2hhcmFjdGVyQmVm
b3JlQ2FyZXRTZWxlY3Rpb24oKSBjb25zdDsKKyAgICBVQ2hhciBjaGFyYWN0ZXJBZnRlckNhcmV0
U2VsZWN0aW9uKCkgY29uc3Q7CisgICAgaW50IHdvcmRPZmZzZXRJblJhbmdlKGNvbnN0IFJhbmdl
KikgY29uc3Q7CisgICAgYm9vbCBzcGFjZUZvbGxvd3NXb3JkSW5SYW5nZShjb25zdCBSYW5nZSop
IGNvbnN0OworICAgIGJvb2wgc2VsZWN0aW9uQXREb2N1bWVudFN0YXJ0KCkgY29uc3Q7CisgICAg
Ym9vbCBzZWxlY3Rpb25BdFNlbnRlbmNlU3RhcnQoKSBjb25zdDsKKyAgICBib29sIHNlbGVjdGlv
bkF0V29yZFN0YXJ0KCkgY29uc3Q7CisgICAgUGFzc1JlZlB0cjxSYW5nZT4gcmFuZ2VCeU1vdmlu
Z0N1cnJlbnRTZWxlY3Rpb24oaW50IGFtb3VudCkgY29uc3Q7CisgICAgUGFzc1JlZlB0cjxSYW5n
ZT4gcmFuZ2VCeUV4dGVuZGluZ0N1cnJlbnRTZWxlY3Rpb24oaW50IGFtb3VudCkgY29uc3Q7Cisg
ICAgdm9pZCBzZWxlY3RSYW5nZU9uRWxlbWVudCh1bnNpZ25lZCBsb2NhdGlvbiwgdW5zaWduZWQg
bGVuZ3RoLCBOb2RlKik7CisgICAgdm9pZCBzdXBwcmVzc0Nsb3NlVHlwaW5nKCkgeyArK21fY2xv
c2VUeXBpbmdTdXBwcmVzc2lvbnM7IH0KKyAgICB2b2lkIHJlc3RvcmVDbG9zZVR5cGluZygpIHsg
LS1tX2Nsb3NlVHlwaW5nU3VwcHJlc3Npb25zOyB9CisgICAgdm9pZCBjbGVhckN1cnJlbnRTZWxl
Y3Rpb24oKTsKKyAgICB2b2lkIHNldENhcmV0QmxpbmtzKGJvb2wgY2FyZXRCbGlua3MgPSB0cnVl
KTsKKyAgICB2b2lkIHNldENhcmV0Q29sb3IoY29uc3QgQ29sb3ImKTsKKyAgICBzdGF0aWMgVmlz
aWJsZVNlbGVjdGlvbiB3b3JkU2VsZWN0aW9uQ29udGFpbmluZ0NhcmV0U2VsZWN0aW9uKGNvbnN0
IFZpc2libGVTZWxlY3Rpb24mKTsKKyAgICB2b2lkIHNldFVwZGF0ZUFwcGVhcmFuY2VFbmFibGVk
KGJvb2wgZW5hYmxlZCkgeyBtX3VwZGF0ZUFwcGVhcmFuY2VFbmFibGVkID0gZW5hYmxlZDsgfQor
ICAgIHZvaWQgc3VwcHJlc3NTY3JvbGxpbmcoKSB7ICsrbV9zY3JvbGxpbmdTdXBwcmVzc0NvdW50
OyB9CisgICAgdm9pZCByZXN0b3JlU2Nyb2xsaW5nKCkKKyAgICB7CisgICAgICAgIEFTU0VSVCht
X3Njcm9sbGluZ1N1cHByZXNzQ291bnQpOworICAgICAgICAtLW1fc2Nyb2xsaW5nU3VwcHJlc3ND
b3VudDsKKyAgICB9Citwcml2YXRlOgorICAgIGJvb2wgYWN0dWFsU2VsZWN0aW9uQXRTZW50ZW5j
ZVN0YXJ0KGNvbnN0IFZpc2libGVTZWxlY3Rpb24mKSBjb25zdDsKKyAgICBQYXNzUmVmUHRyPFJh
bmdlPiByYW5nZUJ5QWx0ZXJpbmdDdXJyZW50U2VsZWN0aW9uKEVBbHRlcmF0aW9uLCBpbnQgYW1v
dW50KSBjb25zdDsKK3B1YmxpYzoKKyNlbmRpZgorCiAgICAgYm9vbCBzaG91bGRDaGFuZ2VTZWxl
Y3Rpb24oY29uc3QgVmlzaWJsZVNlbGVjdGlvbiYpIGNvbnN0OwogICAgIGJvb2wgc2hvdWxkRGVs
ZXRlU2VsZWN0aW9uKGNvbnN0IFZpc2libGVTZWxlY3Rpb24mKSBjb25zdDsKICAgICBlbnVtIEVu
ZFBvaW50c0FkanVzdG1lbnRNb2RlIHsgQWRqdXN0RW5kcG9pbnRzQXRCaWRpQm91bmRhcnksIERv
Tm90QWRqc3V0RW5kcG9pbnRzIH07CkBAIC0zMDksNiArMzUwLDE0IEBAIHByaXZhdGU6CiAgICAg
Ym9vbCBtX2lzQ2FyZXRCbGlua2luZ1N1c3BlbmRlZCA6IDE7CiAgICAgYm9vbCBtX2ZvY3VzZWQg
OiAxOwogICAgIGJvb2wgbV9zaG91bGRTaG93QmxvY2tDdXJzb3IgOiAxOworCisjaWYgUExBVEZP
Uk0oSU9TKQorICAgIGJvb2wgbV91cGRhdGVBcHBlYXJhbmNlRW5hYmxlZCA6IDE7CisgICAgYm9v
bCBtX2NhcmV0QmxpbmtzIDogMTsKKyAgICBDb2xvciBtX2NhcmV0Q29sb3I7CisgICAgaW50IG1f
Y2xvc2VUeXBpbmdTdXBwcmVzc2lvbnM7CisgICAgaW50IG1fc2Nyb2xsaW5nU3VwcHJlc3NDb3Vu
dDsKKyNlbmRpZgogfTsKIAogaW5saW5lIEVkaXRpbmdTdHlsZSogRnJhbWVTZWxlY3Rpb246OnR5
cGluZ1N0eWxlKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvSW5z
ZXJ0SW50b1RleHROb2RlQ29tbWFuZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0luc2Vy
dEludG9UZXh0Tm9kZUNvbW1hbmQuY3BwCmluZGV4IGI1ZDA2YjJlZjI0Yjk3ZTAzNjcwNjY5ZWEw
NzBhNjNiYzhlZjc4OTIuLjM3MGQ0YmY0ZTViOTg2MWRjNDY1Mzk1MGI4M2FmZGZhNWFkMWU3Yzgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvSW5zZXJ0SW50b1RleHROb2RlQ29t
bWFuZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9JbnNlcnRJbnRvVGV4dE5vZGVD
b21tYW5kLmNwcApAQCAtMzIsNiArMzIsOSBAQAogI2luY2x1ZGUgIlJlbmRlclRleHQuaCIKICNp
bmNsdWRlICJTZXR0aW5ncy5oIgogI2luY2x1ZGUgIlRleHQuaCIKKyNpZiBQTEFURk9STShJT1Mp
CisjaW5jbHVkZSAiUmVuZGVyVGV4dC5oIgorI2VuZGlmCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IApAQCAtNjgsNiArNzEsMTQgQEAgdm9pZCBJbnNlcnRJbnRvVGV4dE5vZGVDb21tYW5kOjpkb0Fw
cGx5KCkKICAgICAgICAgY2FjaGUtPm5vZGVUZXh0Q2hhbmdlTm90aWZpY2F0aW9uKG1fbm9kZS5n
ZXQoKSwgQVhPYmplY3RDYWNoZTo6QVhUZXh0SW5zZXJ0ZWQsIG1fb2Zmc2V0LCBtX3RleHQpOwog
fQogCisjaWYgUExBVEZPUk0oSU9TKQordm9pZCBJbnNlcnRJbnRvVGV4dE5vZGVDb21tYW5kOjpk
b1JlYXBwbHkoKQoreworICAgIEV4Y2VwdGlvbkNvZGUgZWM7CisgICAgbV9ub2RlLT5pbnNlcnRE
YXRhKG1fb2Zmc2V0LCBtX3RleHQsIGVjKTsKK30KKyNlbmRpZgorICAgIAogdm9pZCBJbnNlcnRJ
bnRvVGV4dE5vZGVDb21tYW5kOjpkb1VuYXBwbHkoKQogewogICAgIGlmICghbV9ub2RlLT5oYXNF
ZGl0YWJsZVN0eWxlKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0luc2Vy
dEludG9UZXh0Tm9kZUNvbW1hbmQuaCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvSW5zZXJ0SW50
b1RleHROb2RlQ29tbWFuZC5oCmluZGV4IGY2ODU0NzIxYmExYTFiNWI5MzU3OGY3OWNhNzg5NTI2
YzE4NjMxZTMuLjY5ZDFjNGM2YjEyNGQyZjk0MTdmMTk1OTY3ZjkzOGRmMGFmYzYyZDMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvSW5zZXJ0SW50b1RleHROb2RlQ29tbWFuZC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvSW5zZXJ0SW50b1RleHROb2RlQ29tbWFuZC5o
CkBAIC00NCw2ICs0NCw5IEBAIHByaXZhdGU6CiAKICAgICB2aXJ0dWFsIHZvaWQgZG9BcHBseSgp
IE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBkb1VuYXBwbHkoKSBPVkVSUklERTsKKyNpZiBQ
TEFURk9STShJT1MpCisgICAgdmlydHVhbCB2b2lkIGRvUmVhcHBseSgpIE9WRVJSSURFOworI2Vu
ZGlmCiAgICAgCiAjaWZuZGVmIE5ERUJVRwogICAgIHZpcnR1YWwgdm9pZCBnZXROb2Rlc0luQ29t
bWFuZChIYXNoU2V0PE5vZGUqPiYpIE9WRVJSSURFOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvZWRpdGluZy9JbnNlcnRUZXh0Q29tbWFuZC5oIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9J
bnNlcnRUZXh0Q29tbWFuZC5oCmluZGV4IDcxZDlmNjRlN2JiZDIxNjNlZjI0ZWU5N2UxZTQ3M2Iz
MDY5NzgzNmMuLjY2NmZlOTVhODM2OWJhZjc5MTIzYWNiMmIzMDBjODM4MmEzZjk1YjYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvSW5zZXJ0VGV4dENvbW1hbmQuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL0luc2VydFRleHRDb21tYW5kLmgKQEAgLTY4LDYgKzY4LDEw
IEBAIHByaXZhdGU6CiAKICAgICB2aXJ0dWFsIHZvaWQgZG9BcHBseSgpOwogCisjaWYgUExBVEZP
Uk0oSU9TKQorICAgIHZpcnR1YWwgYm9vbCBpc0luc2VydFRleHRDb21tYW5kKCkgY29uc3QgT1ZF
UlJJREUgeyByZXR1cm4gdHJ1ZTsgfQorI2VuZGlmCisKICAgICBQb3NpdGlvbiBwb3NpdGlvbklu
c2lkZVRleHROb2RlKGNvbnN0IFBvc2l0aW9uJik7CiAgICAgUG9zaXRpb24gaW5zZXJ0VGFiKGNv
bnN0IFBvc2l0aW9uJik7CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L1JlcGxhY2VTZWxlY3Rpb25Db21tYW5kLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvUmVw
bGFjZVNlbGVjdGlvbkNvbW1hbmQuY3BwCmluZGV4IDE2ZTNmZjRlZDQzNWE3YjIxYzc4NjJkNTc3
NmE4NzczNmYxZmZjMGIuLmQzZDc4ODJmOTc2YTU0MmNhMTcwNzkxZTQwYTE5YjJlMTg4MzA3MDEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvUmVwbGFjZVNlbGVjdGlvbkNvbW1h
bmQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvUmVwbGFjZVNlbGVjdGlvbkNvbW1h
bmQuY3BwCkBAIC04OTksNiArODk5LDEzIEBAIHZvaWQgUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQ6
OmRvQXBwbHkoKQogICAgIGlmICghc2VsZWN0aW9uLnJvb3RFZGl0YWJsZUVsZW1lbnQoKSkKICAg
ICAgICAgcmV0dXJuOwogCisjaWYgUExBVEZPUk0oSU9TKQorICAgIC8vIEluIHBsYWluIHRleHQg
b25seSByZWdpb25zLCB3ZSBjcmVhdGUgc3R5bGUtbGVzcyBmcmFnbWVudHMsIHNvIHRoZSBpbnNl
cnRlZCBjb250ZW50IHdpbGwgYXV0b21hdGljYWxseQorICAgIC8vIG1hdGNoIHRoZSBzdHlsZSBv
ZiB0aGUgc3Vycm91bmRpbmcgYXJlYSBhbmQgc28gd2UgY2FuIGF2b2lkIHVubmVjZXNzYXJ5IHdv
cmsgYmVsb3cgZm9yIG1fbWF0Y2hTdHlsZS4KKyAgICBpZiAoIXNlbGVjdGlvbi5pc0NvbnRlbnRS
aWNobHlFZGl0YWJsZSgpKQorICAgICAgICBtX21hdGNoU3R5bGUgPSBmYWxzZTsKKyNlbmRpZgor
CiAgICAgUmVwbGFjZW1lbnRGcmFnbWVudCBmcmFnbWVudChkb2N1bWVudCgpLCBtX2RvY3VtZW50
RnJhZ21lbnQuZ2V0KCksIHNlbGVjdGlvbik7CiAgICAgaWYgKHBlcmZvcm1Ucml2aWFsUmVwbGFj
ZShmcmFnbWVudCkpCiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvVGV4dEFmZmluaXR5LmggYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1RleHRBZmZp
bml0eS5oCmluZGV4IDUzMTBjYTk2ZjI2NzJjOGQ5ZjJkZjAwMjFmODYxNWFmZDNmZmQ0NDMuLjkw
ZTY2NWQzYjc1NWY1MzU2MTUzZjc5OTEyNmI5MWRlZjE2NWFhYzcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvVGV4dEFmZmluaXR5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZWRp
dGluZy9UZXh0QWZmaW5pdHkuaApAQCAtMjcsNyArMjcsMTEgQEAKICNkZWZpbmUgVGV4dEFmZmlu
aXR5X2gKIAogI2lmZGVmIF9fT0JKQ19fCisjaWYgIVBMQVRGT1JNKElPUykKICNpbmNsdWRlIDxB
cHBLaXQvTlNUZXh0Vmlldy5oPgorI2Vsc2UKKyNpbmNsdWRlICJXQUtBcHBLaXRTdHVicy5oIgor
I2VuZGlmIC8vICFQTEFURk9STShJT1MpCiAjZW5kaWYKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0Q2hlY2tpbmdIZWxwZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0Q2hlY2tpbmdIZWxwZXIuY3BwCmluZGV4IGUx
Y2UxNDYwZTA5YmIwM2M5MWQ4NmI3ZGQ3YTU0ZTdmZTE1YzRlMDYuLjY1ZjE0MzE0NjM2NmY1MTkx
NzgxOGM2NjEzYzg0NWJmZTY0MjZiYjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvVGV4dENoZWNraW5nSGVscGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1Rl
eHRDaGVja2luZ0hlbHBlci5jcHAKQEAgLTIzMyw2ICsyMzMsNyBAQCBUZXh0Q2hlY2tpbmdIZWxw
ZXI6On5UZXh0Q2hlY2tpbmdIZWxwZXIoKQogewogfQogCisjaWYgIVBMQVRGT1JNKElPUykKIFN0
cmluZyBUZXh0Q2hlY2tpbmdIZWxwZXI6OmZpbmRGaXJzdE1pc3NwZWxsaW5nKGludCYgZmlyc3RN
aXNzcGVsbGluZ09mZnNldCwgYm9vbCBtYXJrQWxsLCBSZWZQdHI8UmFuZ2U+JiBmaXJzdE1pc3Nw
ZWxsaW5nUmFuZ2UpCiB7CiAgICAgV29yZEF3YXJlSXRlcmF0b3IgaXQobV9yYW5nZS5nZXQoKSk7
CkBAIC00MTMsNiArNDE0LDcgQEAgU3RyaW5nIFRleHRDaGVja2luZ0hlbHBlcjo6ZmluZEZpcnN0
TWlzc3BlbGxpbmdPckJhZEdyYW1tYXIoYm9vbCBjaGVja0dyYW1tYXIsIGIKICAgICB9CiAgICAg
cmV0dXJuIGZpcnN0Rm91bmRJdGVtOwogfQorI2VuZGlmIC8vICFQTEFURk9STShJT1MpCiAKICNp
ZiBVU0UoR1JBTU1BUl9DSEVDS0lORykKIGludCBUZXh0Q2hlY2tpbmdIZWxwZXI6OmZpbmRGaXJz
dEdyYW1tYXJEZXRhaWwoY29uc3QgVmVjdG9yPEdyYW1tYXJEZXRhaWw+JiBncmFtbWFyRGV0YWls
cywgaW50IGJhZEdyYW1tYXJQaHJhc2VMb2NhdGlvbiwgaW50IHN0YXJ0T2Zmc2V0LCBpbnQgZW5k
T2Zmc2V0LCBib29sIG1hcmtBbGwpIGNvbnN0CkBAIC02MTIsNiArNjE0LDcgQEAgVmVjdG9yPFN0
cmluZz4gVGV4dENoZWNraW5nSGVscGVyOjpndWVzc2VzRm9yTWlzc3BlbGxlZE9yVW5ncmFtbWF0
aWNhbFJhbmdlKGJvb2wKIH0KIAogCisjaWYgIVBMQVRGT1JNKElPUykKIHZvaWQgVGV4dENoZWNr
aW5nSGVscGVyOjptYXJrQWxsTWlzc3BlbGxpbmdzKFJlZlB0cjxSYW5nZT4mIGZpcnN0TWlzc3Bl
bGxpbmdSYW5nZSkKIHsKICAgICAvLyBVc2UgdGhlICJtYXJrQWxsIiBmZWF0dXJlIG9mIGZpbmRG
aXJzdE1pc3NwZWxsaW5nLiBJZ25vcmUgdGhlIHJldHVybiB2YWx1ZSBhbmQgdGhlICJvdXQgcGFy
YW1ldGVyIjsKQEAgLTYzMCw2ICs2MzMsNyBAQCB2b2lkIFRleHRDaGVja2luZ0hlbHBlcjo6bWFy
a0FsbEJhZEdyYW1tYXIoKQogICAgIGZpbmRGaXJzdEJhZEdyYW1tYXIoaWdub3JlZEdyYW1tYXJE
ZXRhaWwsIGlnbm9yZWRPZmZzZXQsIHRydWUpOwogfQogI2VuZGlmCisjZW5kaWYgLy8gIVBMQVRG
T1JNKElPUykKIAogYm9vbCBUZXh0Q2hlY2tpbmdIZWxwZXI6OnVuaWZpZWRUZXh0Q2hlY2tlckVu
YWJsZWQoKSBjb25zdAogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0
R3JhbnVsYXJpdHkuaCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dEdyYW51bGFyaXR5LmgK
aW5kZXggMDljYzRlZGQ3NTZlYjU0NDZhNDA3MTcxMjRlMGUwODM3YmI3NjM2MC4uYWFhM2Q3ZDEx
MjczZDUxMzg0YThhZmE1YTI3MjBjYjg5MzNkZGE1YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvZWRpdGluZy9UZXh0R3JhbnVsYXJpdHkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L1RleHRHcmFudWxhcml0eS5oCkBAIC0zNiw2ICszNiw5IEBAIGVudW0gVGV4dEdyYW51bGFyaXR5
IHsKICAgICBTZW50ZW5jZUdyYW51bGFyaXR5LAogICAgIExpbmVHcmFudWxhcml0eSwKICAgICBQ
YXJhZ3JhcGhHcmFudWxhcml0eSwKKyNpZiBQTEFURk9STShJT1MpCisgICAgRG9jdW1lbnRHcmFu
dWxhcml0eSwKKyNlbmRpZgogICAgIFNlbnRlbmNlQm91bmRhcnksCiAgICAgTGluZUJvdW5kYXJ5
LAogICAgIFBhcmFncmFwaEJvdW5kYXJ5LApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRp
dGluZy9UZXh0SXRlcmF0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0SXRlcmF0
b3IuY3BwCmluZGV4IDRjMmMyN2MzZTZlYjliMWZlOTE5MjUzMTgyMDgxYmE3NTg3MTM4ZWYuLjVi
NDhjMjY4ZDUyNjI4NzdhZTE4NTdjNDk2NGI4N2MyNmQ3MDhiOWYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvVGV4dEl0ZXJhdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL1RleHRJdGVyYXRvci5jcHAKQEAgLTI1MCw4ICsyNTAsMjEgQEAgYm9vbCBpc1JlbmRl
cmVyUmVwbGFjZWRFbGVtZW50KFJlbmRlck9iamVjdCogcmVuZGVyZXIpCiAgICAgaWYgKCFyZW5k
ZXJlcikKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIAorI2lmIEVOQUJMRShQTFVHSU5fUFJP
WFlfRk9SX1ZJREVPKQorICAgIGlmIChyZW5kZXJlci0+aXNJbWFnZSgpIHx8IHJlbmRlcmVyLT5p
c01lZGlhKCkpCisgICAgICAgIHJldHVybiB0cnVlOworICAgIGlmIChyZW5kZXJlci0+aXNXaWRn
ZXQoKSkgeworICAgICAgICBpZiAocmVuZGVyZXItPm5vZGUoKSAmJiByZW5kZXJlci0+bm9kZSgp
LT5pc0VsZW1lbnROb2RlKCkpIHsKKyAgICAgICAgICAgIEVsZW1lbnQqIGVsZW1lbnQgPSB0b0Vs
ZW1lbnQocmVuZGVyZXItPm5vZGUoKSk7CisgICAgICAgICAgICBpZiAoZWxlbWVudC0+aGFzVGFn
TmFtZSh2aWRlb1RhZykgfHwgIWVsZW1lbnQtPmhhc1RhZ05hbWUoYXVkaW9UYWcpKQorICAgICAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsgLy8gU2VlIDxyZGFyOi8vcHJvYmxlbS82ODkzNzkzPi4K
KyAgICAgICAgfQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisjZWxzZQogICAgIGlmIChy
ZW5kZXJlci0+aXNJbWFnZSgpIHx8IHJlbmRlcmVyLT5pc1dpZGdldCgpIHx8IHJlbmRlcmVyLT5p
c01lZGlhKCkpCiAgICAgICAgIHJldHVybiB0cnVlOworI2VuZGlmCiAgICAgCiAgICAgaWYgKHJl
bmRlcmVyLT5ub2RlKCkgJiYgcmVuZGVyZXItPm5vZGUoKS0+aXNFbGVtZW50Tm9kZSgpKSB7CiAg
ICAgICAgIEVsZW1lbnQqIGVsZW1lbnQgPSB0b0VsZW1lbnQocmVuZGVyZXItPm5vZGUoKSk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1R5cGluZ0NvbW1hbmQuY3BwIGIvU291
cmNlL1dlYkNvcmUvZWRpdGluZy9UeXBpbmdDb21tYW5kLmNwcAppbmRleCA4ZWIwZDM5ZGFmNjc4
NzI3ZjE1MTBlMThmYzI3OTI1MTliNDg3MGQ1Li4xMDA2ODQ5YzlmOTQ5YTViNTY3Zjg2NTM3YTcy
ODZiNDAyZGRkZjhjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1R5cGluZ0Nv
bW1hbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVHlwaW5nQ29tbWFuZC5jcHAK
QEAgLTIzNiw2ICsyMzYsMTYgQEAgdm9pZCBUeXBpbmdDb21tYW5kOjpjbG9zZVR5cGluZyhGcmFt
ZSogZnJhbWUpCiAgICAgICAgIGxhc3RUeXBpbmdDb21tYW5kLT5jbG9zZVR5cGluZygpOwogfQog
CisjaWYgUExBVEZPUk0oSU9TKQordm9pZCBUeXBpbmdDb21tYW5kOjplbnN1cmVMYXN0RWRpdENv
bW1hbmRIYXNDdXJyZW50U2VsZWN0aW9uSWZPcGVuRm9yTW9yZVR5cGluZyhGcmFtZSogZnJhbWUs
IGNvbnN0IFZpc2libGVTZWxlY3Rpb24mIG5ld1NlbGVjdGlvbikKK3sKKyAgICBpZiAoUmVmUHRy
PFR5cGluZ0NvbW1hbmQ+IGxhc3RUeXBpbmdDb21tYW5kID0gbGFzdFR5cGluZ0NvbW1hbmRJZlN0
aWxsT3BlbkZvclR5cGluZyhmcmFtZSkpIHsKKyAgICAgICAgbGFzdFR5cGluZ0NvbW1hbmQtPnNl
dEVuZGluZ1NlbGVjdGlvbihuZXdTZWxlY3Rpb24pOworICAgICAgICBsYXN0VHlwaW5nQ29tbWFu
ZC0+c2V0RW5kaW5nU2VsZWN0aW9uT25MYXN0SW5zZXJ0Q29tbWFuZChuZXdTZWxlY3Rpb24pOwor
ICAgIH0KK30KKyNlbmRpZgorCiB2b2lkIFR5cGluZ0NvbW1hbmQ6OmRvQXBwbHkoKQogewogICAg
IGlmICghZW5kaW5nU2VsZWN0aW9uKCkuaXNOb25PcnBoYW5lZENhcmV0T3JSYW5nZSgpKQpAQCAt
MjgxLDcgKzI5MSw3IEBAIHZvaWQgVHlwaW5nQ29tbWFuZDo6bWFya01pc3NwZWxsaW5nc0FmdGVy
VHlwaW5nKEVUeXBpbmdDb21tYW5kIGNvbW1hbmRUeXBlKQogewogICAgIEZyYW1lJiBmcmFtZSA9
IHRoaXMtPmZyYW1lKCk7CiAKLSNpZiBQTEFURk9STShNQUMpCisjaWYgUExBVEZPUk0oTUFDKSAm
JiAhUExBVEZPUk0oSU9TKQogICAgIGlmICghZnJhbWUuZWRpdG9yKCkuaXNDb250aW51b3VzU3Bl
bGxDaGVja2luZ0VuYWJsZWQoKQogICAgICAgICAmJiAhZnJhbWUuZWRpdG9yKCkuaXNBdXRvbWF0
aWNRdW90ZVN1YnN0aXR1dGlvbkVuYWJsZWQoKQogICAgICAgICAmJiAhZnJhbWUuZWRpdG9yKCku
aXNBdXRvbWF0aWNMaW5rRGV0ZWN0aW9uRW5hYmxlZCgpCkBAIC0yOTksNiArMzA5LDcgQEAgdm9p
ZCBUeXBpbmdDb21tYW5kOjptYXJrTWlzc3BlbGxpbmdzQWZ0ZXJUeXBpbmcoRVR5cGluZ0NvbW1h
bmQgY29tbWFuZFR5cGUpCiAgICAgVmlzaWJsZVBvc2l0aW9uIHN0YXJ0KGVuZGluZ1NlbGVjdGlv
bigpLnN0YXJ0KCksIGVuZGluZ1NlbGVjdGlvbigpLmFmZmluaXR5KCkpOwogICAgIFZpc2libGVQ
b3NpdGlvbiBwcmV2aW91cyA9IHN0YXJ0LnByZXZpb3VzKCk7CiAgICAgaWYgKHByZXZpb3VzLmlz
Tm90TnVsbCgpKSB7CisjaWYgIVBMQVRGT1JNKElPUykKICAgICAgICAgVmlzaWJsZVBvc2l0aW9u
IHAxID0gc3RhcnRPZldvcmQocHJldmlvdXMsIExlZnRXb3JkSWZPbkJvdW5kYXJ5KTsKICAgICAg
ICAgVmlzaWJsZVBvc2l0aW9uIHAyID0gc3RhcnRPZldvcmQoc3RhcnQsIExlZnRXb3JkSWZPbkJv
dW5kYXJ5KTsKICAgICAgICAgaWYgKHAxICE9IHAyKSB7CkBAIC0zMDksNiArMzIwLDIyIEBAIHZv
aWQgVHlwaW5nQ29tbWFuZDo6bWFya01pc3NwZWxsaW5nc0FmdGVyVHlwaW5nKEVUeXBpbmdDb21t
YW5kIGNvbW1hbmRUeXBlKQogICAgICAgICAgICAgZnJhbWUuZWRpdG9yKCkubWFya01pc3NwZWxs
aW5nc0FmdGVyVHlwaW5nVG9Xb3JkKHAxLCBlbmRpbmdTZWxlY3Rpb24oKSwgIXN0cmlwcGVkUHJl
dmlvdXNXb3JkLmlzRW1wdHkoKSk7CiAgICAgICAgIH0gZWxzZSBpZiAoY29tbWFuZFR5cGUgPT0g
VHlwaW5nQ29tbWFuZDo6SW5zZXJ0VGV4dCkKICAgICAgICAgICAgIGZyYW1lLmVkaXRvcigpLnN0
YXJ0QWx0ZXJuYXRpdmVUZXh0VUlUaW1lcigpOworI2Vsc2UKKyAgICAgICAgVU5VU0VEX1BBUkFN
KGNvbW1hbmRUeXBlKTsKKyAgICAgICAgLy8gSWYgdGhpcyBidWcgZ2V0cyBmaXhlZCwgdGhpcyBQ
TEFURk9STShJT1MpIGNvZGUgY291bGQgYmUgcmVtb3ZlZDoKKyAgICAgICAgLy8gPHJkYXI6Ly9w
cm9ibGVtLzcyNTk2MTE+IFdvcmQgYm91bmRhcnkgY29kZSBvbiBpUGhvbmUgZ2l2ZXMgZGlmZmVy
ZW50IHJlc3VsdHMgdGhhbiBkZXNrdG9wCisgICAgICAgIEVXb3JkU2lkZSBzdGFydFdvcmRTaWRl
ID0gTGVmdFdvcmRJZk9uQm91bmRhcnk7CisgICAgICAgIFVDaGFyMzIgYyA9IHByZXZpb3VzLmNo
YXJhY3RlckFmdGVyKCk7CisgICAgICAgIC8vIEZJWE1FOiBWaXNpYmxlUG9zaXRpb246OmNoYXJh
Y3RlckFmdGVyKCkgYW5kIGNoYXJhY3RlckJlZm9yZSgpIGRvIG5vdCBlbWl0IG5ld2xpbmVzIHRo
ZSBzYW1lCisgICAgICAgIC8vIHdheSBhcyBUZXh0SXRlcmF0b3IsIHNvIHdlIGRvIGFuIGlzRW5k
T2ZQYXJhZ3JhcGggY2hlY2sgaGVyZS4KKyAgICAgICAgaWYgKGlzU3BhY2VPck5ld2xpbmUoYykg
fHwgYyA9PSAweEEwIHx8IGlzRW5kT2ZQYXJhZ3JhcGgocHJldmlvdXMpKSB7CisgICAgICAgICAg
ICBzdGFydFdvcmRTaWRlID0gUmlnaHRXb3JkSWZPbkJvdW5kYXJ5OworICAgICAgICB9CisgICAg
ICAgIFZpc2libGVQb3NpdGlvbiBwMSA9IHN0YXJ0T2ZXb3JkKHByZXZpb3VzLCBzdGFydFdvcmRT
aWRlKTsKKyAgICAgICAgVmlzaWJsZVBvc2l0aW9uIHAyID0gc3RhcnRPZldvcmQoc3RhcnQsIHN0
YXJ0V29yZFNpZGUpOworICAgICAgICBpZiAocDEgIT0gcDIpCisgICAgICAgICAgICBmcmFtZS5l
ZGl0b3IoKS5tYXJrTWlzc3BlbGxpbmdzQWZ0ZXJUeXBpbmdUb1dvcmQocDEsIGVuZGluZ1NlbGVj
dGlvbigpLCBmYWxzZSk7CisjZW5kaWYgLy8gIVBMQVRGT1JNKElPUykKICAgICB9CiB9CiAKQEAg
LTQ4Nyw4ICs1MTQsMTUgQEAgdm9pZCBUeXBpbmdDb21tYW5kOjpkZWxldGVLZXlQcmVzc2VkKFRl
eHRHcmFudWxhcml0eSBncmFudWxhcml0eSwgYm9vbCBraWxsUmluZykKICAgICB9CiAgICAgCiAg
ICAgQVNTRVJUKCFzZWxlY3Rpb25Ub0RlbGV0ZS5pc05vbmUoKSk7Ci0gICAgaWYgKHNlbGVjdGlv
blRvRGVsZXRlLmlzTm9uZSgpKQorICAgIGlmIChzZWxlY3Rpb25Ub0RlbGV0ZS5pc05vbmUoKSkg
eworI2lmIFBMQVRGT1JNKElPUykKKyAgICAgICAgLy8gV29ya2Fyb3VuZCBmb3IgdGhpcyBidWc6
CisgICAgICAgIC8vIDxyZGFyOi8vcHJvYmxlbS80NjUzNzU1PiBVSUtpdCB0ZXh0IHdpZGdldHMg
c2hvdWxkIHVzZSBXZWJLaXQgZWRpdGluZyBBUEkgdG8gbWFuaXB1bGF0ZSB0ZXh0CisgICAgICAg
IHNldEVuZGluZ1NlbGVjdGlvbihmcmFtZS5zZWxlY3Rpb24oKS5zZWxlY3Rpb24oKSk7CisgICAg
ICAgIGNsb3NlVHlwaW5nKCZmcmFtZSk7CisjZW5kaWYKICAgICAgICAgcmV0dXJuOworICAgIH0K
ICAgICAKICAgICBpZiAoc2VsZWN0aW9uVG9EZWxldGUuaXNDYXJldCgpIHx8ICFmcmFtZS5zZWxl
Y3Rpb24oKS5zaG91bGREZWxldGVTZWxlY3Rpb24oc2VsZWN0aW9uVG9EZWxldGUpKQogICAgICAg
ICByZXR1cm47CkBAIC01NzgsOCArNjEyLDE1IEBAIHZvaWQgVHlwaW5nQ29tbWFuZDo6Zm9yd2Fy
ZERlbGV0ZUtleVByZXNzZWQoVGV4dEdyYW51bGFyaXR5IGdyYW51bGFyaXR5LCBib29sIGtpCiAg
ICAgfQogICAgIAogICAgIEFTU0VSVCghc2VsZWN0aW9uVG9EZWxldGUuaXNOb25lKCkpOwotICAg
IGlmIChzZWxlY3Rpb25Ub0RlbGV0ZS5pc05vbmUoKSkKKyAgICBpZiAoc2VsZWN0aW9uVG9EZWxl
dGUuaXNOb25lKCkpIHsKKyNpZiBQTEFURk9STShJT1MpCisgICAgICAgIC8vIFdvcmthcm91bmQg
Zm9yIHRoaXMgYnVnOgorICAgICAgICAvLyA8cmRhcjovL3Byb2JsZW0vNDY1Mzc1NT4gVUlLaXQg
dGV4dCB3aWRnZXRzIHNob3VsZCB1c2UgV2ViS2l0IGVkaXRpbmcgQVBJIHRvIG1hbmlwdWxhdGUg
dGV4dAorICAgICAgICBzZXRFbmRpbmdTZWxlY3Rpb24oZnJhbWUuc2VsZWN0aW9uKCkuc2VsZWN0
aW9uKCkpOworICAgICAgICBjbG9zZVR5cGluZygmZnJhbWUpOworI2VuZGlmCiAgICAgICAgIHJl
dHVybjsKKyAgICB9CiAgICAgCiAgICAgaWYgKHNlbGVjdGlvblRvRGVsZXRlLmlzQ2FyZXQoKSB8
fCAhZnJhbWUuc2VsZWN0aW9uKCkuc2hvdWxkRGVsZXRlU2VsZWN0aW9uKHNlbGVjdGlvblRvRGVs
ZXRlKSkKICAgICAgICAgcmV0dXJuOwpAQCAtNTk5LDYgKzY0MCwyNSBAQCB2b2lkIFR5cGluZ0Nv
bW1hbmQ6OmRlbGV0ZVNlbGVjdGlvbihib29sIHNtYXJ0RGVsZXRlKQogICAgIHR5cGluZ0FkZGVk
VG9PcGVuQ29tbWFuZChEZWxldGVTZWxlY3Rpb24pOwogfQogCisjaWYgUExBVEZPUk0oSU9TKQor
Y2xhc3MgRnJpZW5kbHlFZGl0Q29tbWFuZCA6IHB1YmxpYyBFZGl0Q29tbWFuZCB7CitwdWJsaWM6
CisgICAgdm9pZCBzZXRFbmRpbmdTZWxlY3Rpb24oY29uc3QgVmlzaWJsZVNlbGVjdGlvbiYgc2Vs
ZWN0aW9uKQorICAgIHsKKyAgICAgICAgRWRpdENvbW1hbmQ6OnNldEVuZGluZ1NlbGVjdGlvbihz
ZWxlY3Rpb24pOworICAgIH0KK307CisKK3ZvaWQgVHlwaW5nQ29tbWFuZDo6c2V0RW5kaW5nU2Vs
ZWN0aW9uT25MYXN0SW5zZXJ0Q29tbWFuZChjb25zdCBWaXNpYmxlU2VsZWN0aW9uJiBzZWxlY3Rp
b24pCit7CisgICAgaWYgKCFtX2NvbW1hbmRzLmlzRW1wdHkoKSkgeworICAgICAgICBFZGl0Q29t
bWFuZCogbGFzdENvbW1hbmQgPSBtX2NvbW1hbmRzLmxhc3QoKS5nZXQoKTsKKyAgICAgICAgaWYg
KGxhc3RDb21tYW5kLT5pc0luc2VydFRleHRDb21tYW5kKCkpCisgICAgICAgICAgICBzdGF0aWNf
Y2FzdDxGcmllbmRseUVkaXRDb21tYW5kKj4obGFzdENvbW1hbmQpLT5zZXRFbmRpbmdTZWxlY3Rp
b24oc2VsZWN0aW9uKTsKKyAgICB9Cit9CisjZW5kaWYKKwogdm9pZCBUeXBpbmdDb21tYW5kOjp1
cGRhdGVQcmVzZXJ2ZXNUeXBpbmdTdHlsZShFVHlwaW5nQ29tbWFuZCBjb21tYW5kVHlwZSkKIHsK
ICAgICBzd2l0Y2ggKGNvbW1hbmRUeXBlKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL1R5cGluZ0NvbW1hbmQuaCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVHlwaW5nQ29t
bWFuZC5oCmluZGV4IDJkOGMzN2ZkMzAyOGI1ZmUwMGIxYmQ0YTllZTNhMzY0YjMyZGExYzAuLmUy
NDlhMzRiMTRhYzg3YTFhYzQzNTk2NmQ0NGJkNzIzMzUyZTY2M2IgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvVHlwaW5nQ29tbWFuZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvVHlwaW5nQ29tbWFuZC5oCkBAIC02Niw2ICs2Niw5IEBAIHB1YmxpYzoKICAgICBzdGF0
aWMgdm9pZCBpbnNlcnRQYXJhZ3JhcGhTZXBhcmF0b3IoRG9jdW1lbnQmLCBPcHRpb25zKTsKICAg
ICBzdGF0aWMgdm9pZCBpbnNlcnRQYXJhZ3JhcGhTZXBhcmF0b3JJblF1b3RlZENvbnRlbnQoRG9j
dW1lbnQmKTsKICAgICBzdGF0aWMgdm9pZCBjbG9zZVR5cGluZyhGcmFtZSopOworI2lmIFBMQVRG
T1JNKElPUykKKyAgICBzdGF0aWMgdm9pZCBlbnN1cmVMYXN0RWRpdENvbW1hbmRIYXNDdXJyZW50
U2VsZWN0aW9uSWZPcGVuRm9yTW9yZVR5cGluZyhGcmFtZSosIGNvbnN0IFZpc2libGVTZWxlY3Rp
b24mKTsKKyNlbmRpZgogCiAgICAgdm9pZCBpbnNlcnRUZXh0KGNvbnN0IFN0cmluZyAmdGV4dCwg
Ym9vbCBzZWxlY3RJbnNlcnRlZFRleHQpOwogICAgIHZvaWQgaW5zZXJ0VGV4dFJ1bldpdGhvdXRO
ZXdsaW5lcyhjb25zdCBTdHJpbmcgJnRleHQsIGJvb2wgc2VsZWN0SW5zZXJ0ZWRUZXh0KTsKQEAg
LTc3LDYgKzgwLDEwIEBAIHB1YmxpYzoKICAgICB2b2lkIGRlbGV0ZVNlbGVjdGlvbihib29sIHNt
YXJ0RGVsZXRlKTsKICAgICB2b2lkIHNldENvbXBvc2l0aW9uVHlwZShUZXh0Q29tcG9zaXRpb25U
eXBlIHR5cGUpIHsgbV9jb21wb3NpdGlvblR5cGUgPSB0eXBlOyB9CiAKKyNpZiBQTEFURk9STShJ
T1MpCisgICAgdm9pZCBzZXRFbmRpbmdTZWxlY3Rpb25Pbkxhc3RJbnNlcnRDb21tYW5kKGNvbnN0
IFZpc2libGVTZWxlY3Rpb24mIHNlbGVjdGlvbik7CisjZW5kaWYKKwogcHJpdmF0ZToKICAgICBz
dGF0aWMgUGFzc1JlZlB0cjxUeXBpbmdDb21tYW5kPiBjcmVhdGUoRG9jdW1lbnQmIGRvY3VtZW50
LCBFVHlwaW5nQ29tbWFuZCBjb21tYW5kLCBjb25zdCBTdHJpbmcmIHRleHQgPSAiIiwgT3B0aW9u
cyBvcHRpb25zID0gMCwgVGV4dEdyYW51bGFyaXR5IGdyYW51bGFyaXR5ID0gQ2hhcmFjdGVyR3Jh
bnVsYXJpdHkpCiAgICAgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9WaXNp
YmxlUG9zaXRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVmlzaWJsZVBvc2l0aW9uLmgK
aW5kZXggMWY1OGY2OGM0NGZmN2MxMjk3NjVmMzI0NzBjMjRlNDU0YTY4NjUxZi4uMGNlNzhmNDQ0
MDRhOTYyYzg4ZDQ5MmQ5OWQ4YmQ3ZWMwYThlNmNhNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvZWRpdGluZy9WaXNpYmxlUG9zaXRpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L1Zpc2libGVQb3NpdGlvbi5oCkBAIC0xMjcsNiArMTI3LDI4IEBAIGlubGluZSBib29sIG9wZXJh
dG9yIT0oY29uc3QgVmlzaWJsZVBvc2l0aW9uJiBhLCBjb25zdCBWaXNpYmxlUG9zaXRpb24mIGIp
CiB7CiAgICAgcmV0dXJuICEoYSA9PSBiKTsKIH0KKyAgICAKKyNpZiBQTEFURk9STShJT1MpCitp
bmxpbmUgYm9vbCBvcGVyYXRvcjwoY29uc3QgVmlzaWJsZVBvc2l0aW9uJiBhLCBjb25zdCBWaXNp
YmxlUG9zaXRpb24mIGIpCit7CisgICAgcmV0dXJuIGEuZGVlcEVxdWl2YWxlbnQoKSA8IGIuZGVl
cEVxdWl2YWxlbnQoKTsKK30KKworaW5saW5lIGJvb2wgb3BlcmF0b3I+KGNvbnN0IFZpc2libGVQ
b3NpdGlvbiYgYSwgY29uc3QgVmlzaWJsZVBvc2l0aW9uJiBiKSAKK3sKKyAgICByZXR1cm4gYS5k
ZWVwRXF1aXZhbGVudCgpID4gYi5kZWVwRXF1aXZhbGVudCgpOworfQorCitpbmxpbmUgYm9vbCBv
cGVyYXRvcjw9KGNvbnN0IFZpc2libGVQb3NpdGlvbiYgYSwgY29uc3QgVmlzaWJsZVBvc2l0aW9u
JiBiKQoreworICAgIHJldHVybiBhLmRlZXBFcXVpdmFsZW50KCkgPD0gYi5kZWVwRXF1aXZhbGVu
dCgpOworfQorCitpbmxpbmUgYm9vbCBvcGVyYXRvcj49KGNvbnN0IFZpc2libGVQb3NpdGlvbiYg
YSwgY29uc3QgVmlzaWJsZVBvc2l0aW9uJiBiKSAKK3sKKyAgICByZXR1cm4gYS5kZWVwRXF1aXZh
bGVudCgpID49IGIuZGVlcEVxdWl2YWxlbnQoKTsKK30gICAgCisjZW5kaWYKIAogUGFzc1JlZlB0
cjxSYW5nZT4gbWFrZVJhbmdlKGNvbnN0IFZpc2libGVQb3NpdGlvbiYsIGNvbnN0IFZpc2libGVQ
b3NpdGlvbiYpOwogYm9vbCBzZXRTdGFydChSYW5nZSosIGNvbnN0IFZpc2libGVQb3NpdGlvbiYp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9WaXNpYmxlU2VsZWN0aW9uLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVmlzaWJsZVNlbGVjdGlvbi5jcHAKaW5kZXggMmE2
MWQ0ZWJhYzFmYjBkMTUxYTkwYjg3MDkyZjZmNTUwZDI4OWQ0MS4uNzlmNjExOTlkYjBmNTE0ODg1
ZDgwOTY0MzdkNWM2ZGU2MTE2YWI0YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9WaXNpYmxlU2VsZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1Zpc2li
bGVTZWxlY3Rpb24uY3BwCkBAIC0zMjEsNiArMzIxLDE0IEBAIHZvaWQgVmlzaWJsZVNlbGVjdGlv
bjo6c2V0U3RhcnRBbmRFbmRGcm9tQmFzZUFuZEV4dGVudFJlc3BlY3RpbmdHcmFudWxhcml0eShU
ZXh0CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICBtX2VuZCA9
IGVuZC5kZWVwRXF1aXZhbGVudCgpOworI2lmIFBMQVRGT1JNKElPUykKKyAgICAgICAgICAgIC8v
IEVuZCBtdXN0IG5vdCBiZSBiZWZvcmUgc3RhcnQuCisgICAgICAgICAgICBpZiAobV9zdGFydC5k
ZXByZWNhdGVkTm9kZSgpID09IG1fZW5kLmRlcHJlY2F0ZWROb2RlKCkgJiYgbV9zdGFydC5kZXBy
ZWNhdGVkRWRpdGluZ09mZnNldCgpID4gbV9lbmQuZGVwcmVjYXRlZEVkaXRpbmdPZmZzZXQoKSkg
eworICAgICAgICAgICAgICAgIFBvc2l0aW9uIHN3YXAobV9zdGFydCk7CisgICAgICAgICAgICAg
ICAgbV9zdGFydCA9IG1fZW5kOyAgICAKKyAgICAgICAgICAgICAgICBtX2VuZCA9IHN3YXA7ICAg
IAorICAgICAgICAgICAgfQorI2VuZGlmCiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQog
ICAgICAgICBjYXNlIFNlbnRlbmNlR3JhbnVsYXJpdHk6IHsKQEAgLTM4NCw2ICszOTIsMTEgQEAg
dm9pZCBWaXNpYmxlU2VsZWN0aW9uOjpzZXRTdGFydEFuZEVuZEZyb21CYXNlQW5kRXh0ZW50UmVz
cGVjdGluZ0dyYW51bGFyaXR5KFRleHQKICAgICAgICAgICAgIG1fc3RhcnQgPSBzdGFydE9mU2Vu
dGVuY2UoVmlzaWJsZVBvc2l0aW9uKG1fc3RhcnQsIG1fYWZmaW5pdHkpKS5kZWVwRXF1aXZhbGVu
dCgpOwogICAgICAgICAgICAgbV9lbmQgPSBlbmRPZlNlbnRlbmNlKFZpc2libGVQb3NpdGlvbiht
X2VuZCwgbV9hZmZpbml0eSkpLmRlZXBFcXVpdmFsZW50KCk7CiAgICAgICAgICAgICBicmVhazsK
KyNpZiBQTEFURk9STShJT1MpCisgICAgICAgIGNhc2UgRG9jdW1lbnRHcmFudWxhcml0eToKKyAg
ICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICAgICAgYnJlYWs7CisjZW5k
aWYKICAgICB9CiAgICAgCiAgICAgLy8gTWFrZSBzdXJlIHdlIGRvIG5vdCBoYXZlIGEgZGFuZ2xp
bmcgc3RhcnQgb3IgZW5kLgpAQCAtNTE5LDYgKzUzMiwxMyBAQCB2b2lkIFZpc2libGVTZWxlY3Rp
b246OmFkanVzdFNlbGVjdGlvblRvQXZvaWRDcm9zc2luZ0VkaXRpbmdCb3VuZGFyaWVzKCkKICAg
ICBpZiAobV9iYXNlLmlzTnVsbCgpIHx8IG1fc3RhcnQuaXNOdWxsKCkgfHwgbV9lbmQuaXNOdWxs
KCkpCiAgICAgICAgIHJldHVybjsKIAorI2lmIFBMQVRGT1JNKElPUykKKyAgICAvLyBFYXJseSBy
ZXR1cm4gaW4gdGhlIGNhcmV0IGNhc2UgKHRoZSBzdGF0ZSBoYXNuJ3QgYWN0dWFsbHkgYmVlbiBz
ZXQgeWV0LCBzbyB3ZSBjYW4ndCB1c2UgaXNDYXJldCgpKSB0byBhdm9pZCB0aGUgCisgICAgLy8g
ZXhwZW5zZSBvZiBjb21wdXRpbmcgaGlnaGVzdEVkaXRhYmxlUm9vdC4KKyAgICBpZiAobV9iYXNl
ID09IG1fc3RhcnQgJiYgbV9iYXNlID09IG1fZW5kKQorICAgICAgICByZXR1cm47CisjZW5kaWYK
KwogICAgIE5vZGUqIGJhc2VSb290ID0gaGlnaGVzdEVkaXRhYmxlUm9vdChtX2Jhc2UpOwogICAg
IE5vZGUqIHN0YXJ0Um9vdCA9IGhpZ2hlc3RFZGl0YWJsZVJvb3QobV9zdGFydCk7CiAgICAgTm9k
ZSogZW5kUm9vdCA9IGhpZ2hlc3RFZGl0YWJsZVJvb3QobV9lbmQpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvZWRpdGluZy9WaXNpYmxlVW5pdHMuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRp
dGluZy9WaXNpYmxlVW5pdHMuY3BwCmluZGV4IGE0MmE5YTM2ODBkYWM0M2YwNWRjOTk2M2FiYmRi
ODk3NmE5NmY1ZjYuLjgwZWJmMzE3Y2Y0MzRiNWYyMzQ5ZTkxYTcyYzk4NTJmMzBlOTY2YTYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVmlzaWJsZVVuaXRzLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL1Zpc2libGVVbml0cy5jcHAKQEAgLTQ5Nyw3ICs0OTcsMTEg
QEAgc3RhdGljIFZpc2libGVQb3NpdGlvbiBwcmV2aW91c0JvdW5kYXJ5KGNvbnN0IFZpc2libGVQ
b3NpdGlvbiYgYywgQm91bmRhcnlTZWFyY2gKICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAv
LyBUcmVhdCBidWxsZXRzIHVzZWQgaW4gdGhlIHRleHQgc2VjdXJpdHkgbW9kZSBhcyByZWd1bGFy
IGNoYXJhY3RlcnMgd2hlbiBsb29raW5nIGZvciBib3VuZGFyaWVzCiAgICAgICAgICAgICBTdHJp
bmcgaXRlcmF0b3JTdHJpbmcoaXQuY2hhcmFjdGVycygpLCBpdC5sZW5ndGgoKSk7CisjaWYgUExB
VEZPUk0oSU9TKQorICAgICAgICAgICAgaXRlcmF0b3JTdHJpbmcgPSBpdGVyYXRvclN0cmluZy5p
bXBsKCktPmZpbGwoJ3gnKTsKKyNlbHNlCiAgICAgICAgICAgICBpdGVyYXRvclN0cmluZy5maWxs
KCd4Jyk7CisjZW5kaWYKICAgICAgICAgICAgIHN0cmluZy5pbnNlcnQoMCwgaXRlcmF0b3JTdHJp
bmcuY2hhcmFjdGVycygpLCBpdGVyYXRvclN0cmluZy5sZW5ndGgoKSk7CiAgICAgICAgIH0KICAg
ICAgICAgbmV4dCA9IHNlYXJjaEZ1bmN0aW9uKHN0cmluZy5kYXRhKCksIHN0cmluZy5zaXplKCks
IHN0cmluZy5zaXplKCkgLSBzdWZmaXhMZW5ndGgsIE1heUhhdmVNb3JlQ29udGV4dCwgbmVlZE1v
cmVDb250ZXh0KTsKQEAgLTU3MSw3ICs1NzUsMTEgQEAgc3RhdGljIFZpc2libGVQb3NpdGlvbiBu
ZXh0Qm91bmRhcnkoY29uc3QgVmlzaWJsZVBvc2l0aW9uJiBjLCBCb3VuZGFyeVNlYXJjaEZ1bmMK
ICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAvLyBUcmVhdCBidWxsZXRzIHVzZWQgaW4gdGhl
IHRleHQgc2VjdXJpdHkgbW9kZSBhcyByZWd1bGFyIGNoYXJhY3RlcnMgd2hlbiBsb29raW5nIGZv
ciBib3VuZGFyaWVzCiAgICAgICAgICAgICBTdHJpbmcgaXRlcmF0b3JTdHJpbmcoaXQuY2hhcmFj
dGVycygpLCBpdC5sZW5ndGgoKSk7CisjaWYgUExBVEZPUk0oSU9TKQorICAgICAgICAgICAgaXRl
cmF0b3JTdHJpbmcgPSBpdGVyYXRvclN0cmluZy5pbXBsKCktPmZpbGwoJ3gnKTsKKyNlbHNlCiAg
ICAgICAgICAgICBpdGVyYXRvclN0cmluZy5maWxsKCd4Jyk7CisjZW5kaWYKICAgICAgICAgICAg
IHN0cmluZy5hcHBlbmQoaXRlcmF0b3JTdHJpbmcuY2hhcmFjdGVycygpLCBpdGVyYXRvclN0cmlu
Zy5sZW5ndGgoKSk7CiAgICAgICAgIH0KICAgICAgICAgbmV4dCA9IHNlYXJjaEZ1bmN0aW9uKHN0
cmluZy5kYXRhKCksIHN0cmluZy5zaXplKCksIHByZWZpeExlbmd0aCwgTWF5SGF2ZU1vcmVDb250
ZXh0LCBuZWVkTW9yZUNvbnRleHQpOwpAQCAtMTMzMiw3ICsxMzQwLDE4IEBAIFZpc2libGVQb3Np
dGlvbiBzdGFydE9mRG9jdW1lbnQoY29uc3QgTm9kZSogbm9kZSkKICAgICBpZiAoIW5vZGUgfHwg
IW5vZGUtPmRvY3VtZW50KCkuZG9jdW1lbnRFbGVtZW50KCkpCiAgICAgICAgIHJldHVybiBWaXNp
YmxlUG9zaXRpb24oKTsKICAgICAKKyNpZiBQTEFURk9STShJT1MpCisgICAgLy8gVGhlIGNhbm9u
aWNhbGl6YXRpb24gb2YgdGhlIHBvc2l0aW9uIGF0IChkb2N1bWVudEVsZW1lbnQsIDApIGNhbiB0
dXJuIHRoZSB2aXNpYmxlCisgICAgLy8gcG9zaXRpb24gdG8gbnVsbCwgZXZlbiB3aGVuIHRoZXJl
J3MgYSB2YWxpZCBjYW5kaWRhdGUgdG8gYmUgaGFkLCBiZWNhdXNlIHRoZSByb290IEhUTUwgZWxl
bWVudAorICAgIC8vIGlzIG5vdCBjb250ZW50IGVkaXRhYmxlLiAgU28gd2UgY29uc3RydWN0IGRp
cmVjdGx5IGZyb20gdGhlIHZhbGlkIGNhbmRpZGF0ZS4KKyAgICAvLyBGSVhNRTogTWVyZ2UgdGhp
cyB0byBPcGVuIFNvdXJjZS4gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTU2NDM3CisgICAgUG9zaXRpb24gZmlyc3RDYW5kaWRhdGUgPSBuZXh0Q2FuZGlkYXRlKGNyZWF0
ZUxlZ2FjeUVkaXRpbmdQb3NpdGlvbihub2RlLT5kb2N1bWVudCgpLmRvY3VtZW50RWxlbWVudCgp
LCAwKSk7CisgICAgaWYgKGZpcnN0Q2FuZGlkYXRlLmlzTnVsbCgpKQorICAgICAgICByZXR1cm4g
VmlzaWJsZVBvc2l0aW9uKCk7CisgICAgcmV0dXJuIFZpc2libGVQb3NpdGlvbihmaXJzdENhbmRp
ZGF0ZSk7CisjZWxzZQogICAgIHJldHVybiBWaXNpYmxlUG9zaXRpb24oZmlyc3RQb3NpdGlvbklu
Tm9kZShub2RlLT5kb2N1bWVudCgpLmRvY3VtZW50RWxlbWVudCgpKSwgRE9XTlNUUkVBTSk7Cisj
ZW5kaWYKIH0KIAogVmlzaWJsZVBvc2l0aW9uIHN0YXJ0T2ZEb2N1bWVudChjb25zdCBWaXNpYmxl
UG9zaXRpb24gJmMpCkBAIC0xMzQ1LDcgKzEzNjQsMjAgQEAgVmlzaWJsZVBvc2l0aW9uIGVuZE9m
RG9jdW1lbnQoY29uc3QgTm9kZSogbm9kZSkKICAgICBpZiAoIW5vZGUgfHwgIW5vZGUtPmRvY3Vt
ZW50KCkuZG9jdW1lbnRFbGVtZW50KCkpCiAgICAgICAgIHJldHVybiBWaXNpYmxlUG9zaXRpb24o
KTsKICAgICAKKyNpZiBQTEFURk9STShJT1MpCisgICAgLy8gKEFzIGFib3ZlLCBpbiBzdGFydE9m
RG9jdW1lbnQuKSAgVGhlIGNhbm9uaWNhbGl6YXRpb24gY2FuIHJlamVjdCB2YWxpZCB2aXNpYmxl
IHBvc2l0aW9ucworICAgIC8vIHdoZW4gZGVzY2VuZGluZyBmcm9tIHRoZSByb290IGVsZW1lbnQs
IHNvIHdlIGNvbnN0cnVjdCB0aGUgdmlzaWJsZSBwb3NpdGlvbiBkaXJlY3RseSBmcm9tIGEKKyAg
ICAvLyB2YWxpZCBjYW5kaWRhdGUuCisgICAgLy8gRklYTUU6IE1lcmdlIHRoaXMgdG8gT3BlbiBT
b3VyY2UuIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01NjQzNworI2Vu
ZGlmCiAgICAgRWxlbWVudCogZG9jID0gbm9kZS0+ZG9jdW1lbnQoKS5kb2N1bWVudEVsZW1lbnQo
KTsKKyNpZiBQTEFURk9STShJT1MpCisgICAgUG9zaXRpb24gbGFzdFBvc2l0aW9uID0gY3JlYXRl
TGVnYWN5RWRpdGluZ1Bvc2l0aW9uKG5vZGUtPmRvY3VtZW50KCkuZG9jdW1lbnRFbGVtZW50KCks
IGRvYy0+Y2hpbGROb2RlQ291bnQoKSk7CisgICAgUG9zaXRpb24gbGFzdENhbmRpZGF0ZSA9IHBy
ZXZpb3VzQ2FuZGlkYXRlKGxhc3RQb3NpdGlvbik7CisgICAgaWYgKGxhc3RDYW5kaWRhdGUuaXNO
dWxsKCkpCisgICAgICAgIHJldHVybiBWaXNpYmxlUG9zaXRpb24oKTsKKyAgICByZXR1cm4gVmlz
aWJsZVBvc2l0aW9uKGxhc3RDYW5kaWRhdGUpOworI2VuZGlmCiAgICAgcmV0dXJuIFZpc2libGVQ
b3NpdGlvbihsYXN0UG9zaXRpb25Jbk5vZGUoZG9jKSwgRE9XTlNUUkVBTSk7CiB9CiAKQEAgLTE0
MTMsNCArMTQ0NSw0NDMgQEAgVmlzaWJsZVBvc2l0aW9uIHJpZ2h0Qm91bmRhcnlPZkxpbmUoY29u
c3QgVmlzaWJsZVBvc2l0aW9uJiBjLCBUZXh0RGlyZWN0aW9uIGRpcmUKICAgICByZXR1cm4gZGly
ZWN0aW9uID09IExUUiA/IGxvZ2ljYWxFbmRPZkxpbmUoYykgOiBsb2dpY2FsU3RhcnRPZkxpbmUo
Yyk7CiB9CiAKKyNpZiBQTEFURk9STShJT1MpCitzdGF0aWMgYm9vbCBkaXJlY3Rpb25Jc0Rvd25z
dHJlYW0oU2VsZWN0aW9uRGlyZWN0aW9uIGRpcmVjdGlvbikKK3sKKyAgICBpZiAoZGlyZWN0aW9u
ID09IERpcmVjdGlvbkJhY2t3YXJkKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgZWxzZSBp
ZiAoZGlyZWN0aW9uID09IERpcmVjdGlvbkZvcndhcmQpCisgICAgICAgIHJldHVybiB0cnVlOwor
CisgICAgLy8gRklYTUU6IHRoaXMgY29kZSBkb2Vzbid0IHRha2UgaW50byBhY2NvdW50IHRoZSBv
cmlnaW5hbCBkaXJlY3Rpb24gb2YgdGhlIGVsZW1lbnQuCisgICAgLy8gSSdtIG5vdCBmaXhpbmcg
dGhpcyBub3cgYmVjYXVzZSBJJ20gYWZyYWlkIHRoZXJlIGlzIHNvbWUgY29kZSBpbiBVSUtpdCBy
ZWx5aW5nIG9uCisgICAgLy8gdGhpcyB3cm9uZyBiZWhhdmlvci4KKyAgICByZXR1cm4gZGlyZWN0
aW9uID09IERpcmVjdGlvblJpZ2h0OworfQorCitib29sIGF0Qm91bmRhcnlPZkdyYW51bGFyaXR5
KGNvbnN0IFZpc2libGVQb3NpdGlvbiYgdnAsIFRleHRHcmFudWxhcml0eSBncmFudWxhcml0eSwg
U2VsZWN0aW9uRGlyZWN0aW9uIGRpcmVjdGlvbikKK3sKKyAgICBpZiAoZ3JhbnVsYXJpdHkgPT0g
Q2hhcmFjdGVyR3JhbnVsYXJpdHkpCisgICAgICAgIHJldHVybiB0cnVlOworCisgICAgVmlzaWJs
ZVBvc2l0aW9uIGJvdW5kYXJ5OworCisgICAgYm9vbCB1c2VEb3duc3RyZWFtID0gZGlyZWN0aW9u
SXNEb3duc3RyZWFtKGRpcmVjdGlvbik7CisKKyAgICBzd2l0Y2ggKGdyYW51bGFyaXR5KSB7Cisg
ICAgY2FzZSBXb3JkR3JhbnVsYXJpdHk6CisgICAgICAgIC8vIHZpc2libGVfdW5pdHMgY2xhaW1z
IGVycm9uZW91c2x5IHRoYXQgdGhlIHN0YXJ0IGFuZCB0aGUgZW5kCisgICAgICAgIC8vIG9mIGEg
cGFyYWdyYXBoIGFyZSB0aGUgZW5kIGFuZCBzdGFydCBvZiBhIHdvcmQsIHJlc3BlY3RpdmVseS4K
KyAgICAgICAgaWYgKCh1c2VEb3duc3RyZWFtICYmIGlzU3RhcnRPZlBhcmFncmFwaCh2cCkpIHx8
ICghdXNlRG93bnN0cmVhbSAmJiBpc0VuZE9mUGFyYWdyYXBoKHZwKSkpCisgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CisKKyAgICAgICAgLy8gTm90ZSB0aGF0ICJMZWZ0IiBhbmQgIlJpZ2h0IiBp
biB0aGlzIGNvbnRleHQgYXBwYXJlbnRseSBtZWFuICJ1cHN0cmVhbS9wcmV2aW91cyIgYW5kICJk
b3duc3RyZWFtL25leHQiLgorICAgICAgICBib3VuZGFyeSA9IHVzZURvd25zdHJlYW0gPyBlbmRP
ZldvcmQodnAsIExlZnRXb3JkSWZPbkJvdW5kYXJ5KSA6IHN0YXJ0T2ZXb3JkKHZwLCBSaWdodFdv
cmRJZk9uQm91bmRhcnkpOworICAgICAgICBicmVhazsKKworICAgIGNhc2UgU2VudGVuY2VHcmFu
dWxhcml0eToKKyAgICAgICAgYm91bmRhcnkgPSB1c2VEb3duc3RyZWFtID8gZW5kT2ZTZW50ZW5j
ZSh2cCkgOiBzdGFydE9mU2VudGVuY2UodnApOworICAgICAgICBicmVhazsKKworICAgIGNhc2Ug
TGluZUdyYW51bGFyaXR5OgorICAgICAgICAvLyBBZmZpbml0eSBoYXMgdG8gYmUgc2V0IHRvIGdl
dCByaWdodCBib3VuZGFyeSBvZiB0aGUgbGluZS4KKyAgICAgICAgYm91bmRhcnkgPSB2cDsKKyAg
ICAgICAgYm91bmRhcnkuc2V0QWZmaW5pdHkodXNlRG93bnN0cmVhbSA/IFZQX1VQU1RSRUFNX0lG
X1BPU1NJQkxFIDogRE9XTlNUUkVBTSk7CisgICAgICAgIGJvdW5kYXJ5ID0gdXNlRG93bnN0cmVh
bSA/IGVuZE9mTGluZShib3VuZGFyeSkgOiBzdGFydE9mTGluZShib3VuZGFyeSk7CisgICAgICAg
IGJyZWFrOworCisgICAgY2FzZSBQYXJhZ3JhcGhHcmFudWxhcml0eToKKyAgICAgICAgYm91bmRh
cnkgPSB1c2VEb3duc3RyZWFtID8gZW5kT2ZQYXJhZ3JhcGgodnApIDogc3RhcnRPZlBhcmFncmFw
aCh2cCk7CisgICAgICAgIGJyZWFrOworCisgICAgY2FzZSBEb2N1bWVudEdyYW51bGFyaXR5Ogor
ICAgICAgICBib3VuZGFyeSA9IHVzZURvd25zdHJlYW0gPyBlbmRPZkRvY3VtZW50KHZwKSA6IHN0
YXJ0T2ZEb2N1bWVudCh2cCk7CisgICAgICAgIGJyZWFrOworCisgICAgZGVmYXVsdDoKKyAgICAg
ICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIGJyZWFrOworICAgIH0KKworICAgIHJl
dHVybiB2cCA9PSBib3VuZGFyeTsKK30KKworYm9vbCB3aXRoaW5UZXh0VW5pdE9mR3JhbnVsYXJp
dHkoY29uc3QgVmlzaWJsZVBvc2l0aW9uJiB2cCwgVGV4dEdyYW51bGFyaXR5IGdyYW51bGFyaXR5
LCBTZWxlY3Rpb25EaXJlY3Rpb24gZGlyZWN0aW9uKQoreworICAgIGlmIChncmFudWxhcml0eSA9
PSBDaGFyYWN0ZXJHcmFudWxhcml0eSB8fCBncmFudWxhcml0eSA9PSBEb2N1bWVudEdyYW51bGFy
aXR5KQorICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAgIGJvb2wgdXNlRG93bnN0cmVhbSA9IGRp
cmVjdGlvbklzRG93bnN0cmVhbShkaXJlY3Rpb24pOworCisgICAgVmlzaWJsZVBvc2l0aW9uIHBy
ZXZCb3VuZGFyeTsKKyAgICBWaXNpYmxlUG9zaXRpb24gbmV4dEJvdW5kYXJ5OworICAgIAorICAg
IHN3aXRjaCAoZ3JhbnVsYXJpdHkpIHsKKyAgICBjYXNlIFdvcmRHcmFudWxhcml0eToKKyAgICAg
ICAgLy8gTm90ZSB0aGF0ICJMZWZ0IiBhbmQgIlJpZ2h0IiBpbiB0aGlzIGNvbnRleHQgYXBwYXJl
bnRseSBtZWFuICJ1cHN0cmVhbS9wcmV2aW91cyIgYW5kICJkb3duc3RyZWFtL25leHQiLgorICAg
ICAgICBwcmV2Qm91bmRhcnkgPSBzdGFydE9mV29yZCh2cCwgKHVzZURvd25zdHJlYW0gPyBSaWdo
dFdvcmRJZk9uQm91bmRhcnkgOiBMZWZ0V29yZElmT25Cb3VuZGFyeSkpOworICAgICAgICBuZXh0
Qm91bmRhcnkgPSBlbmRPZldvcmQodnAsICh1c2VEb3duc3RyZWFtID8gUmlnaHRXb3JkSWZPbkJv
dW5kYXJ5IDogTGVmdFdvcmRJZk9uQm91bmRhcnkpKTsKKyAgICAKKyAgICAgICAgLy8gV29ya2Fy
b3VuZCBmb3IgPHJkYXI6Ly9wcm9ibGVtLzcyNTk2MTE+IFdvcmQgYm91bmRhcnkgY29kZSBvbiBp
UGhvbmUgZ2l2ZXMgZGlmZmVyZW50IHJlc3VsdHMgdGhhbiBkZXNrdG9wCisgICAgICAgIGlmIChl
bmRPZldvcmQocHJldkJvdW5kYXJ5LCBSaWdodFdvcmRJZk9uQm91bmRhcnkpICE9IG5leHRCb3Vu
ZGFyeSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgICAgICBicmVhazsKKworICAg
IGNhc2UgU2VudGVuY2VHcmFudWxhcml0eToKKyAgICAgICAgcHJldkJvdW5kYXJ5ID0gc3RhcnRP
ZlNlbnRlbmNlKHZwKTsKKyAgICAgICAgbmV4dEJvdW5kYXJ5ID0gZW5kT2ZTZW50ZW5jZSh2cCk7
CisgICAgICAgIGJyZWFrOworCisgICAgY2FzZSBMaW5lR3JhbnVsYXJpdHk6CisgICAgICAgIHBy
ZXZCb3VuZGFyeSA9IHN0YXJ0T2ZMaW5lKHZwKTsKKyAgICAgICAgbmV4dEJvdW5kYXJ5ID0gZW5k
T2ZMaW5lKHZwKTsKKworICAgICAgICBpZiAocHJldkJvdW5kYXJ5ID09IG5leHRCb3VuZGFyeSkg
eworICAgICAgICAgICAgbmV4dEJvdW5kYXJ5ID0gbmV4dExpbmVQb3NpdGlvbihuZXh0Qm91bmRh
cnksIDApOworICAgICAgICAgICAgbmV4dEJvdW5kYXJ5LnNldEFmZmluaXR5KFVQU1RSRUFNKTsK
KyAgICAgICAgICAgIGlmICghaW5TYW1lTGluZShwcmV2Qm91bmRhcnksIG5leHRCb3VuZGFyeSkp
CisgICAgICAgICAgICAgICAgbmV4dEJvdW5kYXJ5ID0gdnAubmV4dCgpOworICAgICAgICB9Cisg
ICAgICAgIGJyZWFrOworCisgICAgY2FzZSBQYXJhZ3JhcGhHcmFudWxhcml0eToKKyAgICAgICAg
cHJldkJvdW5kYXJ5ID0gc3RhcnRPZlBhcmFncmFwaCh2cCk7CisgICAgICAgIG5leHRCb3VuZGFy
eSA9IGVuZE9mUGFyYWdyYXBoKHZwKTsKKyAgICAgICAgYnJlYWs7CisKKyAgICBkZWZhdWx0Ogor
ICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorCisg
ICAgaWYgKHByZXZCb3VuZGFyeSA9PSBuZXh0Qm91bmRhcnkpCisgICAgICAgIHJldHVybiBmYWxz
ZTsKKworICAgIGlmICh2cCA9PSBwcmV2Qm91bmRhcnkpCisgICAgICAgIHJldHVybiB1c2VEb3du
c3RyZWFtOworCisgICAgaWYgKHZwID09IG5leHRCb3VuZGFyeSkKKyAgICAgICAgcmV0dXJuICF1
c2VEb3duc3RyZWFtOworCisgICAgcmV0dXJuIChwcmV2Qm91bmRhcnkgPCB2cCAmJiB2cCA8IG5l
eHRCb3VuZGFyeSk7Cit9CisKK3N0YXRpYyBWaXNpYmxlUG9zaXRpb24gbmV4dENoYXJhY3RlckJv
dW5kYXJ5SW5EaXJlY3Rpb24oY29uc3QgVmlzaWJsZVBvc2l0aW9uJiB2cCwgU2VsZWN0aW9uRGly
ZWN0aW9uIGRpcmVjdGlvbikKK3sKKyAgICByZXR1cm4gZGlyZWN0aW9uSXNEb3duc3RyZWFtKGRp
cmVjdGlvbikgPyB2cC5uZXh0KCkgOiB2cC5wcmV2aW91cygpOworfQorCitzdGF0aWMgVmlzaWJs
ZVBvc2l0aW9uIG5leHRXb3JkQm91bmRhcnlJbkRpcmVjdGlvbihjb25zdCBWaXNpYmxlUG9zaXRp
b24mIHZwLCBTZWxlY3Rpb25EaXJlY3Rpb24gZGlyZWN0aW9uKQoreworICAgIGJvb2wgdXNlRG93
bnN0cmVhbSA9IGRpcmVjdGlvbklzRG93bnN0cmVhbShkaXJlY3Rpb24pOworICAgIGJvb2wgd2l0
aGluVW5pdE9mR3JhbnVsYXJpdHkgPSB3aXRoaW5UZXh0VW5pdE9mR3JhbnVsYXJpdHkodnAsIFdv
cmRHcmFudWxhcml0eSwgZGlyZWN0aW9uKTsKKyAgICBWaXNpYmxlUG9zaXRpb24gcmVzdWx0Owor
ICAgIAorICAgIGlmICh1c2VEb3duc3RyZWFtKSB7CisgICAgICAgIGlmICh3aXRoaW5Vbml0T2ZH
cmFudWxhcml0eSkKKyAgICAgICAgICAgIHJlc3VsdCA9IGVuZE9mV29yZCh2cCwgUmlnaHRXb3Jk
SWZPbkJvdW5kYXJ5KTsKKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBWaXNpYmxlUG9zaXRp
b24gc3RhcnQgPSBzdGFydE9mV29yZCh2cCwgUmlnaHRXb3JkSWZPbkJvdW5kYXJ5KTsKKyAgICAg
ICAgICAgIGlmIChzdGFydCA+IHZwICYmIHN0YXJ0ICE9IGVuZE9mV29yZChzdGFydCkpCisgICAg
ICAgICAgICAgICAgcmVzdWx0ID0gc3RhcnQ7CisgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAg
ICAgICAgICAvLyBEbyBzYW1lIHRoaW5nIGFzIGJhY2t3YXJkcyB0cmF2ZWxpbmcgYmVsb3cuCisg
ICAgICAgICAgICAgICAgc3RhcnQgPSB2cDsKKyAgICAgICAgICAgICAgICB3aGlsZSAodHJ1ZSkg
eworICAgICAgICAgICAgICAgICAgICByZXN1bHQgPSBzdGFydE9mV29yZChuZXh0V29yZFBvc2l0
aW9uKHN0YXJ0KSwgUmlnaHRXb3JkSWZPbkJvdW5kYXJ5KTsKKworICAgICAgICAgICAgICAgICAg
ICBpZiAocmVzdWx0ID09IHN0YXJ0KQorICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisK
KyAgICAgICAgICAgICAgICAgICAgLy8gV2UgZmFpbGVkIHRvIGZpbmQgYSB3b3JkIGJvdW5kYXJ5
LgorICAgICAgICAgICAgICAgICAgICBpZiAocmVzdWx0LmlzTnVsbCgpIHx8IHJlc3VsdCA8IHN0
YXJ0KQorICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFZpc2libGVQb3NpdGlvbigpOwor
CisgICAgICAgICAgICAgICAgICAgIC8vIFdlIGNvbnNpZGVyIHN1Y2Nlc3NzIGFsc28gdGhlIGNh
c2Ugd2hlcmUgc3RhcnQgaXMgYmVmb3JlIGVsZW1lbnQgYW5kIHJlc3VsdCBpcyBhZnRlci4KKyAg
ICAgICAgICAgICAgICAgICAgLy8gVGhpcyBjb3ZlcnMgbW92aW5nIHBhc3QgaW1hZ2VzIGxpa2Ug
d29yZHMuCisgICAgICAgICAgICAgICAgICAgIGlmIChyZXN1bHQgIT0gZW5kT2ZXb3JkKHJlc3Vs
dCkKKyAgICAgICAgICAgICAgICAgICAgICAgIHx8IChyZXN1bHQuZGVlcEVxdWl2YWxlbnQoKS5h
bmNob3JOb2RlKCkgPT0gc3RhcnQuZGVlcEVxdWl2YWxlbnQoKS5hbmNob3JOb2RlKCkKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAmJiByZXN1bHQuZGVlcEVxdWl2YWxlbnQoKS5hbmNob3JU
eXBlKCkgPT0gUG9zaXRpb246OlBvc2l0aW9uSXNBZnRlckFuY2hvcgorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICYmIHN0YXJ0LmRlZXBFcXVpdmFsZW50KCkuYW5jaG9yVHlwZSgpID09IFBv
c2l0aW9uOjpQb3NpdGlvbklzQmVmb3JlQW5jaG9yKSkKKyAgICAgICAgICAgICAgICAgICAgICAg
IGJyZWFrOworCisgICAgICAgICAgICAgICAgICAgIHN0YXJ0ID0gcmVzdWx0OworICAgICAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0gZWxzZSB7CisgICAgICAg
IGlmICh3aXRoaW5Vbml0T2ZHcmFudWxhcml0eSkKKyAgICAgICAgICAgIHJlc3VsdCA9IHN0YXJ0
T2ZXb3JkKHZwLCBMZWZ0V29yZElmT25Cb3VuZGFyeSk7CisgICAgICAgIGVsc2UgeworICAgICAg
ICAgICAgLy8gVGhpcyBpcyBjb21wbGljYXRlZCBiZWNhdXNlOgorICAgICAgICAgICAgLy8gICBX
aGVuIGdpdmVuICJCbGFoIGJsYWgufCIsIGVuZE9mV29yZCBpcyAiQmxhaCBibGFofC4iLCBhbmQg
cHJldmlvdXNXb3JkUG9zaXRpb24gaXMgIkJsYWh8IGJsYWguIgorICAgICAgICAgICAgLy8gICBX
aGVuIGdpdmVuICJCbGFoIGJsYWguIHwiLCBlbmRPZldvcmQgaXMgIkJsYWggYmxhaC58ICIsIGFu
ZCBwcmV2aW91c1dvcmRQb3NpdGlvbiBpcyAiQmxhaCB8YmxhaC4gIi4KKyAgICAgICAgICAgIFZp
c2libGVQb3NpdGlvbiBlbmQgPSBlbmRPZldvcmQodnAsIExlZnRXb3JkSWZPbkJvdW5kYXJ5KTsK
KyAgICAgICAgICAgIGlmIChlbmQgPCB2cCAmJiBlbmQgIT0gc3RhcnRPZldvcmQoZW5kKSkKKyAg
ICAgICAgICAgICAgICByZXN1bHQgPSBlbmQ7CisgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAg
ICAgICAgICBlbmQgPSB2cDsKKyAgICAgICAgICAgICAgICB3aGlsZSAodHJ1ZSkgeworICAgICAg
ICAgICAgICAgICAgICByZXN1bHQgPSBlbmRPZldvcmQocHJldmlvdXNXb3JkUG9zaXRpb24oZW5k
KSwgUmlnaHRXb3JkSWZPbkJvdW5kYXJ5KTsKKworICAgICAgICAgICAgICAgICAgICBpZiAocmVz
dWx0ID09IGVuZCkKKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgICAg
ICAgICAgICAgIGlmIChyZXN1bHQuaXNOdWxsKCkgfHwgcmVzdWx0ID4gZW5kKQorICAgICAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuIFZpc2libGVQb3NpdGlvbigpOworCisgICAgICAgICAgICAg
ICAgICAgIGlmIChyZXN1bHQgIT0gc3RhcnRPZldvcmQocmVzdWx0KSkKKyAgICAgICAgICAgICAg
ICAgICAgICAgIGJyZWFrOworCisgICAgICAgICAgICAgICAgICAgIGVuZCA9IHJlc3VsdDsKKyAg
ICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisgICAgCisg
ICAgaWYgKHJlc3VsdCA9PSB2cCkKKyAgICAgICAgcmV0dXJuIFZpc2libGVQb3NpdGlvbigpOwor
ICAgIAorICAgIHJldHVybiByZXN1bHQ7Cit9CisKK3N0YXRpYyBWaXNpYmxlUG9zaXRpb24gbmV4
dFNlbnRlbmNlQm91bmRhcnlJbkRpcmVjdGlvbihjb25zdCBWaXNpYmxlUG9zaXRpb24mIHZwLCBT
ZWxlY3Rpb25EaXJlY3Rpb24gZGlyZWN0aW9uKQoreworICAgIGJvb2wgdXNlRG93bnN0cmVhbSA9
IGRpcmVjdGlvbklzRG93bnN0cmVhbShkaXJlY3Rpb24pOworICAgIGJvb2wgd2l0aGluVW5pdE9m
R3JhbnVsYXJpdHkgPSB3aXRoaW5UZXh0VW5pdE9mR3JhbnVsYXJpdHkodnAsIFNlbnRlbmNlR3Jh
bnVsYXJpdHksIGRpcmVjdGlvbik7CisgICAgVmlzaWJsZVBvc2l0aW9uIHJlc3VsdDsKKworICAg
IGlmICh3aXRoaW5Vbml0T2ZHcmFudWxhcml0eSkKKyAgICAgICAgcmVzdWx0ID0gdXNlRG93bnN0
cmVhbSA/IGVuZE9mU2VudGVuY2UodnApIDogc3RhcnRPZlNlbnRlbmNlKHZwKTsKKyAgICBlbHNl
IHsKKyAgICAgICAgcmVzdWx0ID0gdXNlRG93bnN0cmVhbSA/IG5leHRTZW50ZW5jZVBvc2l0aW9u
KHZwKSA6IHByZXZpb3VzU2VudGVuY2VQb3NpdGlvbih2cCk7CisgICAgICAgIGlmIChyZXN1bHQu
aXNOdWxsKCkgfHwgcmVzdWx0ID09IHZwKQorICAgICAgICAgICAgcmV0dXJuIFZpc2libGVQb3Np
dGlvbigpOworCisgICAgICAgIHJlc3VsdCA9IHVzZURvd25zdHJlYW0gPyBzdGFydE9mU2VudGVu
Y2UodnApIDogZW5kT2ZTZW50ZW5jZSh2cCk7CisgICAgfQorCisgICAgaWYgKHJlc3VsdCA9PSB2
cCkKKyAgICAgICAgcmV0dXJuIFZpc2libGVQb3NpdGlvbigpOworCisgICAgQVNTRVJUKHVzZURv
d25zdHJlYW0gPyAocmVzdWx0ID4gdnApIDogKHJlc3VsdCA8IHZwKSk7CisKKyAgICByZXR1cm4g
cmVzdWx0OworfQorCitzdGF0aWMgVmlzaWJsZVBvc2l0aW9uIG5leHRMaW5lQm91bmRhcnlJbkRp
cmVjdGlvbihjb25zdCBWaXNpYmxlUG9zaXRpb24mIHZwLCBTZWxlY3Rpb25EaXJlY3Rpb24gZGly
ZWN0aW9uKQoreworICAgIGJvb2wgdXNlRG93bnN0cmVhbSA9IGRpcmVjdGlvbklzRG93bnN0cmVh
bShkaXJlY3Rpb24pOworICAgIFZpc2libGVQb3NpdGlvbiByZXN1bHQgPSB2cDsKKworICAgIGlm
ICh1c2VEb3duc3RyZWFtKSB7CisgICAgICAgIHJlc3VsdC5zZXRBZmZpbml0eShET1dOU1RSRUFN
KTsKKyAgICAgICAgcmVzdWx0ID0gaXNFbmRPZkxpbmUocmVzdWx0KSA/IHN0YXJ0T2ZMaW5lKG5l
eHRMaW5lUG9zaXRpb24ocmVzdWx0LCByZXN1bHQubGluZURpcmVjdGlvblBvaW50Rm9yQmxvY2tE
aXJlY3Rpb25OYXZpZ2F0aW9uKCkpKSA6IGVuZE9mTGluZShyZXN1bHQpOworICAgIH0gZWxzZSB7
CisgICAgICAgIHJlc3VsdC5zZXRBZmZpbml0eShWUF9VUFNUUkVBTV9JRl9QT1NTSUJMRSk7Cisg
ICAgICAgIHJlc3VsdCA9IGlzU3RhcnRPZkxpbmUocmVzdWx0KSA/IGVuZE9mTGluZShwcmV2aW91
c0xpbmVQb3NpdGlvbihyZXN1bHQsIHJlc3VsdC5saW5lRGlyZWN0aW9uUG9pbnRGb3JCbG9ja0Rp
cmVjdGlvbk5hdmlnYXRpb24oKSkpIDogc3RhcnRPZkxpbmUocmVzdWx0KTsKKyAgICB9CisKKyAg
ICByZXR1cm4gcmVzdWx0OworfQorCitzdGF0aWMgVmlzaWJsZVBvc2l0aW9uIG5leHRQYXJhZ3Jh
cGhCb3VuZGFyeUluRGlyZWN0aW9uKGNvbnN0IFZpc2libGVQb3NpdGlvbiYgdnAsIFNlbGVjdGlv
bkRpcmVjdGlvbiBkaXJlY3Rpb24pCit7CisgICAgYm9vbCB1c2VEb3duc3RyZWFtID0gZGlyZWN0
aW9uSXNEb3duc3RyZWFtKGRpcmVjdGlvbik7CisgICAgYm9vbCB3aXRoaW5Vbml0T2ZHcmFudWxh
cml0eSA9IHdpdGhpblRleHRVbml0T2ZHcmFudWxhcml0eSh2cCwgUGFyYWdyYXBoR3JhbnVsYXJp
dHksIGRpcmVjdGlvbik7CisgICAgVmlzaWJsZVBvc2l0aW9uIHJlc3VsdDsKKworICAgIGlmICgh
d2l0aGluVW5pdE9mR3JhbnVsYXJpdHkpCisgICAgICAgIHJlc3VsdCA9ICB1c2VEb3duc3RyZWFt
ID8gc3RhcnRPZlBhcmFncmFwaChuZXh0UGFyYWdyYXBoUG9zaXRpb24odnAsIHZwLmxpbmVEaXJl
Y3Rpb25Qb2ludEZvckJsb2NrRGlyZWN0aW9uTmF2aWdhdGlvbigpKSkgOiBlbmRPZlBhcmFncmFw
aChwcmV2aW91c1BhcmFncmFwaFBvc2l0aW9uKHZwLCB2cC5saW5lRGlyZWN0aW9uUG9pbnRGb3JC
bG9ja0RpcmVjdGlvbk5hdmlnYXRpb24oKSkpOworICAgIGVsc2UKKyAgICAgICAgcmVzdWx0ID0g
dXNlRG93bnN0cmVhbSA/IGVuZE9mUGFyYWdyYXBoKHZwKSA6IHN0YXJ0T2ZQYXJhZ3JhcGgodnAp
OworCisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworc3RhdGljIFZpc2libGVQb3NpdGlvbiBuZXh0
RG9jdW1lbnRCb3VuZGFyeUluRGlyZWN0aW9uKGNvbnN0IFZpc2libGVQb3NpdGlvbiYgdnAsIFNl
bGVjdGlvbkRpcmVjdGlvbiBkaXJlY3Rpb24pCit7CisgICAgcmV0dXJuIGRpcmVjdGlvbklzRG93
bnN0cmVhbShkaXJlY3Rpb24pID8gZW5kT2ZEb2N1bWVudCh2cCkgOiBzdGFydE9mRG9jdW1lbnQo
dnApOworfQorCitWaXNpYmxlUG9zaXRpb24gcG9zaXRpb25PZk5leHRCb3VuZGFyeU9mR3JhbnVs
YXJpdHkoY29uc3QgVmlzaWJsZVBvc2l0aW9uJiB2cCwgVGV4dEdyYW51bGFyaXR5IGdyYW51bGFy
aXR5LCBTZWxlY3Rpb25EaXJlY3Rpb24gZGlyZWN0aW9uKQoreworICAgIHN3aXRjaCAoZ3JhbnVs
YXJpdHkpIHsKKyAgICBjYXNlIENoYXJhY3RlckdyYW51bGFyaXR5OgorICAgICAgICByZXR1cm4g
bmV4dENoYXJhY3RlckJvdW5kYXJ5SW5EaXJlY3Rpb24odnAsIGRpcmVjdGlvbik7CisgICAgY2Fz
ZSBXb3JkR3JhbnVsYXJpdHk6CisgICAgICAgIHJldHVybiBuZXh0V29yZEJvdW5kYXJ5SW5EaXJl
Y3Rpb24odnAsIGRpcmVjdGlvbik7CisgICAgY2FzZSBTZW50ZW5jZUdyYW51bGFyaXR5OgorICAg
ICAgICByZXR1cm4gbmV4dFNlbnRlbmNlQm91bmRhcnlJbkRpcmVjdGlvbih2cCwgZGlyZWN0aW9u
KTsKKyAgICBjYXNlIExpbmVHcmFudWxhcml0eToKKyAgICAgICAgcmV0dXJuIG5leHRMaW5lQm91
bmRhcnlJbkRpcmVjdGlvbih2cCwgZGlyZWN0aW9uKTsKKyAgICBjYXNlIFBhcmFncmFwaEdyYW51
bGFyaXR5OgorICAgICAgICByZXR1cm4gbmV4dFBhcmFncmFwaEJvdW5kYXJ5SW5EaXJlY3Rpb24o
dnAsIGRpcmVjdGlvbik7CisgICAgY2FzZSBEb2N1bWVudEdyYW51bGFyaXR5OgorICAgICAgICBy
ZXR1cm4gbmV4dERvY3VtZW50Qm91bmRhcnlJbkRpcmVjdGlvbih2cCwgZGlyZWN0aW9uKTsKKyAg
ICBkZWZhdWx0OgorICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgcmV0dXJu
IFZpc2libGVQb3NpdGlvbigpOworICAgIH0KK30KKworUGFzc1JlZlB0cjxSYW5nZT4gZW5jbG9z
aW5nVGV4dFVuaXRPZkdyYW51bGFyaXR5KGNvbnN0IFZpc2libGVQb3NpdGlvbiYgdnAsIFRleHRH
cmFudWxhcml0eSBncmFudWxhcml0eSwgU2VsZWN0aW9uRGlyZWN0aW9uIGRpcmVjdGlvbikKK3sK
KyAgICAvLyBUaGlzIGlzIHBhcnRpY3VsYXJseSBpbmVmZmljaWVudC4gIFdlIGNvdWxkIGVhc2ls
eSBvYnRhaW4gdGhlIGFuc3dlciB3aXRoIHRoZSBib3VuZGFyaWVzIGNvbXB1dGVkIGJlbG93Lgor
ICAgIGlmICghd2l0aGluVGV4dFVuaXRPZkdyYW51bGFyaXR5KHZwLCBncmFudWxhcml0eSwgZGly
ZWN0aW9uKSkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICBWaXNpYmxlUG9zaXRpb24gcHJldkJv
dW5kYXJ5OworICAgIFZpc2libGVQb3NpdGlvbiBuZXh0Qm91bmRhcnk7CisgICAgYm9vbCB1c2VE
b3duc3RyZWFtID0gZGlyZWN0aW9uSXNEb3duc3RyZWFtKGRpcmVjdGlvbik7CisKKyAgICBzd2l0
Y2ggKGdyYW51bGFyaXR5KSB7CisgICAgICAgIGNhc2UgQ2hhcmFjdGVyR3JhbnVsYXJpdHk6Cisg
ICAgICAgICAgICBwcmV2Qm91bmRhcnkgPSB2cDsKKyAgICAgICAgICAgIG5leHRCb3VuZGFyeSA9
IHByZXZCb3VuZGFyeS5uZXh0KCk7CisgICAgICAgICAgICBicmVhazsKKworICAgICAgICBjYXNl
IFdvcmRHcmFudWxhcml0eToKKyAgICAgICAgICAgIC8vIE5COiAiTGVmdCIgYW5kICJSaWdodCIg
aW4gdGhpcyBjb250ZXh0IGFwcGFyZW50bHkgbWVhbiAidXBzdHJlYW0vcHJldmlvdXMiIGFuZCAi
ZG93bnN0cmVhbS9uZXh0Ii4KKyAgICAgICAgICAgIGlmICh1c2VEb3duc3RyZWFtKSB7CisgICAg
ICAgICAgICAgICAgcHJldkJvdW5kYXJ5ID0gc3RhcnRPZldvcmQodnAsIFJpZ2h0V29yZElmT25C
b3VuZGFyeSk7CisgICAgICAgICAgICAgICAgbmV4dEJvdW5kYXJ5ID0gZW5kT2ZXb3JkKHZwLCBS
aWdodFdvcmRJZk9uQm91bmRhcnkpOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAg
ICAgICBwcmV2Qm91bmRhcnkgPSBzdGFydE9mV29yZCh2cCwgTGVmdFdvcmRJZk9uQm91bmRhcnkp
OworICAgICAgICAgICAgICAgIG5leHRCb3VuZGFyeSA9IGVuZE9mV29yZCh2cCwgTGVmdFdvcmRJ
Zk9uQm91bmRhcnkpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgYnJlYWs7CisKKyAgICAg
ICAgY2FzZSBTZW50ZW5jZUdyYW51bGFyaXR5OgorICAgICAgICAgICAgcHJldkJvdW5kYXJ5ID0g
c3RhcnRPZlNlbnRlbmNlKHZwKTsKKyAgICAgICAgICAgIG5leHRCb3VuZGFyeSA9IGVuZE9mU2Vu
dGVuY2UodnApOworICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSBMaW5lR3JhbnVs
YXJpdHk6CisgICAgICAgICAgICBwcmV2Qm91bmRhcnkgPSBzdGFydE9mTGluZSh2cCk7CisgICAg
ICAgICAgICBuZXh0Qm91bmRhcnkgPSBlbmRPZkxpbmUodnApOworCisgICAgICAgICAgICBpZiAo
cHJldkJvdW5kYXJ5ID09IG5leHRCb3VuZGFyeSkgeworICAgICAgICAgICAgICAgIG5leHRCb3Vu
ZGFyeSA9IG5leHRMaW5lUG9zaXRpb24obmV4dEJvdW5kYXJ5LCAwKTsKKyAgICAgICAgICAgICAg
ICBuZXh0Qm91bmRhcnkuc2V0QWZmaW5pdHkoVVBTVFJFQU0pOworICAgICAgICAgICAgICAgIGlm
ICghaW5TYW1lTGluZShwcmV2Qm91bmRhcnksIG5leHRCb3VuZGFyeSkpCisgICAgICAgICAgICAg
ICAgICAgIG5leHRCb3VuZGFyeSA9IHZwLm5leHQoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgIGJyZWFrOworCisgICAgICAgIGNhc2UgUGFyYWdyYXBoR3JhbnVsYXJpdHk6CisgICAgICAg
ICAgICBwcmV2Qm91bmRhcnkgPSBzdGFydE9mUGFyYWdyYXBoKHZwKTsKKyAgICAgICAgICAgIG5l
eHRCb3VuZGFyeSA9IGVuZE9mUGFyYWdyYXBoKHZwKTsKKyAgICAgICAgICAgIGJyZWFrOworCisg
ICAgICAgIGNhc2UgRG9jdW1lbnRHcmFudWxhcml0eToKKyAgICAgICAgICAgIHByZXZCb3VuZGFy
eSA9IHN0YXJ0T2ZEb2N1bWVudCh2cCk7CisgICAgICAgICAgICBuZXh0Qm91bmRhcnkgPSBlbmRP
ZkRvY3VtZW50KHZwKTsKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGRlZmF1bHQ6Cisg
ICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgICAgIHJldHVybiAwOwor
ICAgIH0KKworICAgIGlmIChwcmV2Qm91bmRhcnkuaXNOdWxsKCkgfHwgbmV4dEJvdW5kYXJ5Lmlz
TnVsbCgpKQorICAgICAgICByZXR1cm4gMDsKKworICAgIGlmICh2cCA8IHByZXZCb3VuZGFyeSB8
fCB2cCA+IG5leHRCb3VuZGFyeSkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICBSZWZQdHI8UmFu
Z2U+IHJhbmdlID0gUmFuZ2U6OmNyZWF0ZShwcmV2Qm91bmRhcnkuZGVlcEVxdWl2YWxlbnQoKS5k
ZXByZWNhdGVkTm9kZSgpLT5kb2N1bWVudCgpLCBwcmV2Qm91bmRhcnksIG5leHRCb3VuZGFyeSk7
CisKKyAgICByZXR1cm4gcmFuZ2U7Cit9CisKK2ludCBkaXN0YW5jZUJldHdlZW5Qb3NpdGlvbnMo
Y29uc3QgVmlzaWJsZVBvc2l0aW9uJiB2cCwgY29uc3QgVmlzaWJsZVBvc2l0aW9uJiBvdGhlcikK
K3sKKyAgICBpZiAodnAuaXNOdWxsKCkgfHwgb3RoZXIuaXNOdWxsKCkpCisgICAgICAgIHJldHVy
biAwOworCisgICAgYm9vbCB0aGlzSXNTdGFydCA9ICh2cCA8IG90aGVyKTsKKworICAgIC8vIFN0
YXJ0IG11c3QgY29tZSBmaXJzdCBpbiB0aGUgUmFuZ2UgY29uc3RydWN0b3IuCisgICAgUmVmUHRy
PFJhbmdlPiByYW5nZSA9IFJhbmdlOjpjcmVhdGUodnAuZGVlcEVxdWl2YWxlbnQoKS5kZXByZWNh
dGVkTm9kZSgpLT5kb2N1bWVudCgpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICh0aGlzSXNTdGFydCA/IHZwIDogb3RoZXIpLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICh0aGlzSXNTdGFydCA/IG90aGVyIDogdnApKTsKKyAgICBpbnQg
ZGlzdGFuY2UgPSBUZXh0SXRlcmF0b3I6OnJhbmdlTGVuZ3RoKHJhbmdlLmdldCgpKTsKKworICAg
IHJldHVybiAodGhpc0lzU3RhcnQgPyAtZGlzdGFuY2UgOiBkaXN0YW5jZSk7Cit9CisKK1Bhc3NS
ZWZQdHI8UmFuZ2U+IHdvcmRSYW5nZUZyb21Qb3NpdGlvbihjb25zdCBWaXNpYmxlUG9zaXRpb24m
IHBvc2l0aW9uKQoreworICAgIEFTU0VSVChwb3NpdGlvbi5pc05vdE51bGwoKSk7CisKKyAgICBS
ZWZQdHI8UmFuZ2U+IHJhbmdlID0gZW5jbG9zaW5nVGV4dFVuaXRPZkdyYW51bGFyaXR5KHBvc2l0
aW9uLCBXb3JkR3JhbnVsYXJpdHksIERpcmVjdGlvbkJhY2t3YXJkKTsKKworICAgIGlmICghcmFu
Z2UpIHsKKyAgICAgICAgLy8gV2UgY291bGQgYmUgYXQgdGhlIHN0YXJ0IG9mIGEgd29yZCwgdHJ5
IGZvcndhcmQuCisgICAgICAgIHJhbmdlID0gZW5jbG9zaW5nVGV4dFVuaXRPZkdyYW51bGFyaXR5
KHBvc2l0aW9uLCBXb3JkR3JhbnVsYXJpdHksIERpcmVjdGlvbkZvcndhcmQpOworICAgIH0KKyAg
ICBpZiAocmFuZ2UpCisgICAgICAgIHJldHVybiByYW5nZTsKKworICAgIFZpc2libGVQb3NpdGlv
biBjdXJyZW50UG9zaXRpb24gPSBwb3NpdGlvbjsKKyAgICBkbyB7CisgICAgICAgIGN1cnJlbnRQ
b3NpdGlvbiA9IHBvc2l0aW9uT2ZOZXh0Qm91bmRhcnlPZkdyYW51bGFyaXR5KGN1cnJlbnRQb3Np
dGlvbiwgV29yZEdyYW51bGFyaXR5LCBEaXJlY3Rpb25CYWNrd2FyZCk7CisgICAgfSB3aGlsZSAo
Y3VycmVudFBvc2l0aW9uLmlzTm90TnVsbCgpICYmICFhdEJvdW5kYXJ5T2ZHcmFudWxhcml0eShj
dXJyZW50UG9zaXRpb24sIFdvcmRHcmFudWxhcml0eSwgRGlyZWN0aW9uQmFja3dhcmQpKTsKKwor
ICAgIC8vIElmIHRoZSBwb3NpdGlvbiBpcyBhbiBlbXB0eSBwYXJhZ3JhcGggYW5kIGF0IHRoZSBl
bmQgb2YgdGhlIGRvY3VtZW50CisgICAgLy8gdGhlIHdvcmQgaXRlcmF0b3IgY291bGQgbm90IHBh
c3MgdGhlIHBhcmFncmFwaCBib3VuZGFyeSwgdGhlcmVmb3JlIGl0ZXJhdGluZyB0bworICAgIC8v
IHRoZSBwcmV2aW91cyBsaW5lIGlzIHJlcXVpcmVkLgorICAgIGlmIChjdXJyZW50UG9zaXRpb24u
aXNOdWxsKCkgJiYgaXNFbmRPZkRvY3VtZW50KHBvc2l0aW9uKSkgeworICAgICAgICBWaXNpYmxl
UG9zaXRpb24gcHJldmlvdXNMaW5lUG9zaXRpb24gPSBwb3NpdGlvbk9mTmV4dEJvdW5kYXJ5T2ZH
cmFudWxhcml0eShwb3NpdGlvbiwgTGluZUdyYW51bGFyaXR5LCBEaXJlY3Rpb25CYWNrd2FyZCk7
CisgICAgICAgIGlmIChwcmV2aW91c0xpbmVQb3NpdGlvbi5pc05vdE51bGwoKSkgeworICAgICAg
ICAgICAgY3VycmVudFBvc2l0aW9uID0gcG9zaXRpb25PZk5leHRCb3VuZGFyeU9mR3JhbnVsYXJp
dHkocHJldmlvdXNMaW5lUG9zaXRpb24sIFdvcmRHcmFudWxhcml0eSwgRGlyZWN0aW9uQmFja3dh
cmQpOworICAgICAgICAgICAgaWYgKGN1cnJlbnRQb3NpdGlvbi5pc051bGwoKSkKKyAgICAgICAg
ICAgICAgICBjdXJyZW50UG9zaXRpb24gPSBwcmV2aW91c0xpbmVQb3NpdGlvbjsKKyAgICAgICAg
fQorICAgIH0KKworICAgIGlmIChjdXJyZW50UG9zaXRpb24uaXNOdWxsKCkpCisgICAgICAgIGN1
cnJlbnRQb3NpdGlvbiA9IHBvc2l0aW9uT2ZOZXh0Qm91bmRhcnlPZkdyYW51bGFyaXR5KHBvc2l0
aW9uLCBXb3JkR3JhbnVsYXJpdHksIERpcmVjdGlvbkZvcndhcmQpOworCisgICAgaWYgKGN1cnJl
bnRQb3NpdGlvbi5pc05vdE51bGwoKSkgeworICAgICAgICByYW5nZSA9IFJhbmdlOjpjcmVhdGUo
cG9zaXRpb24uZGVlcEVxdWl2YWxlbnQoKS5kZXByZWNhdGVkTm9kZSgpLT5kb2N1bWVudCgpLCBj
dXJyZW50UG9zaXRpb24sIHBvc2l0aW9uKTsKKyAgICAgICAgQVNTRVJUKHJhbmdlKTsKKyAgICB9
CisgICAgcmV0dXJuIHJhbmdlOworfQorCitWaXNpYmxlUG9zaXRpb24gY2xvc2VzdFdvcmRCb3Vu
ZGFyeUZvclBvc2l0aW9uKGNvbnN0IFZpc2libGVQb3NpdGlvbiYgcG9zaXRpb24pCit7CisgICAg
VmlzaWJsZVBvc2l0aW9uIHJlc3VsdDsKKworICAgIC8vIG1vdmUgdGhlIHRoZSBwb3NpdGlvbiBh
dCB0aGUgZW5kIG9mIHRoZSB3b3JkCisgICAgaWYgKGF0Qm91bmRhcnlPZkdyYW51bGFyaXR5KHBv
c2l0aW9uLCBMaW5lR3JhbnVsYXJpdHksIERpcmVjdGlvbkZvcndhcmQpKSB7CisgICAgICAgIC8v
IERvbid0IGNyb3NzIGxpbmUgYm91bmRhcmllcy4KKyAgICAgICAgcmVzdWx0ID0gcG9zaXRpb247
CisgICAgfSBlbHNlIGlmICh3aXRoaW5UZXh0VW5pdE9mR3JhbnVsYXJpdHkocG9zaXRpb24sIFdv
cmRHcmFudWxhcml0eSwgRGlyZWN0aW9uRm9yd2FyZCkpIHsKKyAgICAgICAgLy8gVGhlIHBvc2l0
aW9uIGxpZXMgd2l0aGluIGEgd29yZC4KKyAgICAgICAgUmVmUHRyPFJhbmdlPiB3b3JkUmFuZ2Ug
PSBlbmNsb3NpbmdUZXh0VW5pdE9mR3JhbnVsYXJpdHkocG9zaXRpb24sIFdvcmRHcmFudWxhcml0
eSwgRGlyZWN0aW9uRm9yd2FyZCk7CisKKyAgICAgICAgcmVzdWx0ID0gd29yZFJhbmdlLT5zdGFy
dFBvc2l0aW9uKCk7CisgICAgICAgIGlmIChkaXN0YW5jZUJldHdlZW5Qb3NpdGlvbnMocG9zaXRp
b24sIHJlc3VsdCkgPiAxKQorICAgICAgICAgICAgcmVzdWx0ID0gd29yZFJhbmdlLT5lbmRQb3Np
dGlvbigpOworICAgIH0gZWxzZSBpZiAoYXRCb3VuZGFyeU9mR3JhbnVsYXJpdHkocG9zaXRpb24s
IFdvcmRHcmFudWxhcml0eSwgRGlyZWN0aW9uQmFja3dhcmQpKSB7CisgICAgICAgIC8vIFRoZSBw
b3NpdGlvbiBpcyBhdCB0aGUgZW5kIG9mIGEgd29yZC4KKyAgICAgICAgcmVzdWx0ID0gcG9zaXRp
b247CisgICAgfSBlbHNlIHsKKyAgICAgICAgLy8gVGhlIHBvc2l0aW9uIGlzIG5vdCB3aXRoaW4g
YSB3b3JkLgorICAgICAgICAvLyBHbyB0byB0aGUgbmV4dCBib3VuZGFyeS4KKyAgICAgICAgcmVz
dWx0ID0gcG9zaXRpb25PZk5leHRCb3VuZGFyeU9mR3JhbnVsYXJpdHkocG9zaXRpb24sIFdvcmRH
cmFudWxhcml0eSwgRGlyZWN0aW9uRm9yd2FyZCk7CisKKyAgICAgICAgLy8gSWYgdGhlcmUgaXMg
bm8gc3VjaCBib3VuZGFyeSB3ZSBnbyB0byB0aGUgZW5kIG9mIHRoZSBlbGVtZW50LgorICAgICAg
ICBpZiAocmVzdWx0LmlzTnVsbCgpKQorICAgICAgICAgICAgcmVzdWx0ID0gZW5kT2ZFZGl0YWJs
ZUNvbnRlbnQocG9zaXRpb24pOworICAgIH0KKyAgICByZXR1cm4gcmVzdWx0OworfQorCisjZW5k
aWYKKwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9WaXNpYmxlVW5pdHMu
aCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVmlzaWJsZVVuaXRzLmgKaW5kZXggNTUxMDQzMDY4
YTNkZjgzM2FlMjM3MzcxNDgzZmJkOTQxNGY1OThjMy4uMGIxZTQzNmQ5MTQ0ZTU1YWVmMjIyZjM5
MmE1NTcxODJlNmJiMGZlYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9WaXNp
YmxlVW5pdHMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1Zpc2libGVVbml0cy5oCkBA
IC0yOCw2ICsyOCw3IEBACiAKICNpbmNsdWRlICJFZGl0aW5nQm91bmRhcnkuaCIKICNpbmNsdWRl
ICJUZXh0RGlyZWN0aW9uLmgiCisjaW5jbHVkZSAiVmlzaWJsZVNlbGVjdGlvbi5oIgogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKQEAgLTk1LDYgKzk2LDE1IEBAIFZpc2libGVQb3NpdGlvbiBzdGFy
dE9mRWRpdGFibGVDb250ZW50KGNvbnN0IFZpc2libGVQb3NpdGlvbiYpOwogVmlzaWJsZVBvc2l0
aW9uIGVuZE9mRWRpdGFibGVDb250ZW50KGNvbnN0IFZpc2libGVQb3NpdGlvbiYpOwogYm9vbCBp
c0VuZE9mRWRpdGFibGVPck5vbkVkaXRhYmxlQ29udGVudChjb25zdCBWaXNpYmxlUG9zaXRpb24m
KTsKIAorI2lmIFBMQVRGT1JNKElPUykKK2Jvb2wgYXRCb3VuZGFyeU9mR3JhbnVsYXJpdHkoY29u
c3QgVmlzaWJsZVBvc2l0aW9uJiwgVGV4dEdyYW51bGFyaXR5LCBTZWxlY3Rpb25EaXJlY3Rpb24p
OworYm9vbCB3aXRoaW5UZXh0VW5pdE9mR3JhbnVsYXJpdHkoY29uc3QgVmlzaWJsZVBvc2l0aW9u
JiwgVGV4dEdyYW51bGFyaXR5LCBTZWxlY3Rpb25EaXJlY3Rpb24pOworVmlzaWJsZVBvc2l0aW9u
IHBvc2l0aW9uT2ZOZXh0Qm91bmRhcnlPZkdyYW51bGFyaXR5KGNvbnN0IFZpc2libGVQb3NpdGlv
biYsIFRleHRHcmFudWxhcml0eSwgU2VsZWN0aW9uRGlyZWN0aW9uKTsKK1Bhc3NSZWZQdHI8UmFu
Z2U+IGVuY2xvc2luZ1RleHRVbml0T2ZHcmFudWxhcml0eShjb25zdCBWaXNpYmxlUG9zaXRpb24m
LCBUZXh0R3JhbnVsYXJpdHksIFNlbGVjdGlvbkRpcmVjdGlvbik7CitpbnQgZGlzdGFuY2VCZXR3
ZWVuUG9zaXRpb25zKGNvbnN0IFZpc2libGVQb3NpdGlvbiYsIGNvbnN0IFZpc2libGVQb3NpdGlv
biYpOworUGFzc1JlZlB0cjxSYW5nZT4gd29yZFJhbmdlRnJvbVBvc2l0aW9uKGNvbnN0IFZpc2li
bGVQb3NpdGlvbiYgcG9zaXRpb24pOworVmlzaWJsZVBvc2l0aW9uIGNsb3Nlc3RXb3JkQm91bmRh
cnlGb3JQb3NpdGlvbihjb25zdCBWaXNpYmxlUG9zaXRpb24mIHBvc2l0aW9uKTsKKyNlbmRpZgog
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gVmlzaWJsZVVuaXRzX2gKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvaW9zL0RpY3RhdGlvbkNvbW1hbmRJT1MuY3Bw
IGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9pb3MvRGljdGF0aW9uQ29tbWFuZElPUy5jcHAKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uYWFhYjE0YzcyN2ZmYzQ2YWY5OTIzMTIwZmQxMDg3YzhjMzU4ZTM3MQotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvaW9zL0RpY3RhdGlvbkNvbW1hbmRJ
T1MuY3BwCkBAIC0wLDAgKzEsODUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
KyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisg
KiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgi
CisjaW5jbHVkZSAiRGljdGF0aW9uQ29tbWFuZElPUy5oIgorCisjaW5jbHVkZSAiRG9jdW1lbnQu
aCIKKyNpbmNsdWRlICJEb2N1bWVudE1hcmtlckNvbnRyb2xsZXIuaCIKKyNpbmNsdWRlICJFbGVt
ZW50LmgiCisjaW5jbHVkZSAiUG9zaXRpb24uaCIKKyNpbmNsdWRlICJSYW5nZS5oIgorI2luY2x1
ZGUgIlNtYXJ0UmVwbGFjZS5oIgorI2luY2x1ZGUgIlRleHRJdGVyYXRvci5oIgorI2luY2x1ZGUg
IlZpc2libGVVbml0cy5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK0RpY3RhdGlvbkNvbW1h
bmRJT1M6OkRpY3RhdGlvbkNvbW1hbmRJT1MoRG9jdW1lbnQmIGRvY3VtZW50LCBQYXNzT3duUHRy
PFZlY3RvcjxWZWN0b3I8U3RyaW5nPiA+ID4gZGljdGF0aW9uUGhyYXNlcywgUmV0YWluUHRyPGlk
PiBtZXRhZGF0YSkKKyAgICA6IENvbXBvc2l0ZUVkaXRDb21tYW5kKGRvY3VtZW50KQorICAgICwg
bV9kaWN0YXRpb25QaHJhc2VzKGRpY3RhdGlvblBocmFzZXMpCisgICAgLCBtX21ldGFkYXRhKG1l
dGFkYXRhKQoreworfQorCitEaWN0YXRpb25Db21tYW5kSU9TOjp+RGljdGF0aW9uQ29tbWFuZElP
UygpCit7Cit9CisKK3ZvaWQgRGljdGF0aW9uQ29tbWFuZElPUzo6ZG9BcHBseSgpCit7CisgICAg
VmlzaWJsZVBvc2l0aW9uIGluc2VydGlvblBvc2l0aW9uKHN0YXJ0aW5nU2VsZWN0aW9uKCkudmlz
aWJsZVN0YXJ0KCkpOworICAgIAorICAgIHVuc2lnbmVkIHJlc3VsdExlbmd0aCA9IDA7CisgICAg
c2l6ZV90IGRpY3RhdGlvblBocmFzZUNvdW50ID0gbV9kaWN0YXRpb25QaHJhc2VzLT5zaXplKCk7
CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBkaWN0YXRpb25QaHJhc2VDb3VudDsgaSsrKSB7
CisgICAgCisgICAgICAgIGNvbnN0IFN0cmluZyYgZmlyc3RJbnRlcnByZXRhdGlvbiA9IG1fZGlj
dGF0aW9uUGhyYXNlcy0+YXQoaSlbMF07CisgICAgICAgIHJlc3VsdExlbmd0aCArPSBmaXJzdElu
dGVycHJldGF0aW9uLmxlbmd0aCgpOworICAgICAgICBpbnB1dFRleHQoZmlyc3RJbnRlcnByZXRh
dGlvbiwgdHJ1ZSk7CisgICAgICAgIAorICAgICAgICBjb25zdCBWZWN0b3I8U3RyaW5nPiYgaW50
ZXJwcmV0YXRpb25zID0gbV9kaWN0YXRpb25QaHJhc2VzLT5hdChpKTsKKyAgICAgICAgCisgICAg
ICAgIGlmIChpbnRlcnByZXRhdGlvbnMuc2l6ZSgpID4gMSkKKyAgICAgICAgICAgIGRvY3VtZW50
KCkubWFya2VycygpLmFkZERpY3RhdGlvblBocmFzZVdpdGhBbHRlcm5hdGl2ZXNNYXJrZXIoZW5k
aW5nU2VsZWN0aW9uKCkudG9Ob3JtYWxpemVkUmFuZ2UoKS5nZXQoKSwgaW50ZXJwcmV0YXRpb25z
KTsKKyAgICAgICAgICAgIAorICAgICAgICBzZXRFbmRpbmdTZWxlY3Rpb24oVmlzaWJsZVNlbGVj
dGlvbihlbmRpbmdTZWxlY3Rpb24oKS52aXNpYmxlRW5kKCkpKTsKKyAgICB9CisgICAgCisgICAg
VmlzaWJsZVBvc2l0aW9uIGFmdGVyUmVzdWx0cyhlbmRpbmdTZWxlY3Rpb24oKS52aXNpYmxlRW5k
KCkpOworICAgIAorICAgIEVsZW1lbnQqIHJvb3QgPSBhZnRlclJlc3VsdHMucm9vdEVkaXRhYmxl
RWxlbWVudCgpOworICAgIC8vIEZJWE1FOiBBZGQgdGhlIHJlc3VsdCBtYXJrZXIgdXNpbmcgYSBQ
b3NpdGlvbiBjYWNoZWQgYmVmb3JlIHJlc3VsdHMgYXJlIGluc2VydGVkLCBpbnN0ZWFkIG9mIHJl
bHlpbmcgb24gVGV4dEl0ZXJhdG9ycy4KKyAgICBSZWZQdHI8UmFuZ2U+IHJhbmdlVG9FbmQgPSBS
YW5nZTo6Y3JlYXRlKGRvY3VtZW50KCksIGNyZWF0ZUxlZ2FjeUVkaXRpbmdQb3NpdGlvbigoTm9k
ZSAqKXJvb3QsIDApLCBhZnRlclJlc3VsdHMuZGVlcEVxdWl2YWxlbnQoKSk7CisgICAgaW50IGVu
ZEluZGV4ID0gVGV4dEl0ZXJhdG9yOjpyYW5nZUxlbmd0aChyYW5nZVRvRW5kLmdldCgpLCB0cnVl
KTsKKyAgICBpbnQgc3RhcnRJbmRleCA9IGVuZEluZGV4IC0gcmVzdWx0TGVuZ3RoOworICAgIAor
ICAgIGlmIChzdGFydEluZGV4ID49IDApIHsKKyAgICAgICAgUmVmUHRyPFJhbmdlPiByZXN1bHRS
YW5nZSA9IFRleHRJdGVyYXRvcjo6cmFuZ2VGcm9tTG9jYXRpb25BbmRMZW5ndGgoZG9jdW1lbnQo
KS5kb2N1bWVudEVsZW1lbnQoKSwgc3RhcnRJbmRleCwgZW5kSW5kZXgsIHRydWUpOworICAgICAg
ICBkb2N1bWVudCgpLm1hcmtlcnMoKS5hZGREaWN0YXRpb25SZXN1bHRNYXJrZXIocmVzdWx0UmFu
Z2UuZ2V0KCksIG1fbWV0YWRhdGEpOworICAgIH0KK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9pb3MvRGljdGF0aW9uQ29tbWFu
ZElPUy5oIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9pb3MvRGljdGF0aW9uQ29tbWFuZElPUy5o
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLmVkZGYwNTIwZWUyNjc3ZDAwMjdkYTkzYjIzNWYwMGRhOWY2ZmM4OTQKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2lvcy9EaWN0YXRpb25Db21t
YW5kSU9TLmgKQEAgLTAsMCArMSw1NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMK
KyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAq
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICog
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgRGljdGF0aW9u
Q29tbWFuZElPU19oCisjZGVmaW5lIERpY3RhdGlvbkNvbW1hbmRJT1NfaAorCisjaW5jbHVkZSAi
Q29tcG9zaXRlRWRpdENvbW1hbmQuaCIKKworI2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgorCit0
eXBlZGVmIHN0cnVjdCBvYmpjX29iamVjdCAqaWQ7CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwor
Y2xhc3MgRGljdGF0aW9uQ29tbWFuZElPUyA6IHB1YmxpYyBDb21wb3NpdGVFZGl0Q29tbWFuZCB7
CitwdWJsaWM6CisgICAgc3RhdGljIFBhc3NSZWZQdHI8RGljdGF0aW9uQ29tbWFuZElPUz4gY3Jl
YXRlKERvY3VtZW50JiBkb2N1bWVudCwgUGFzc093blB0cjxWZWN0b3I8VmVjdG9yPFN0cmluZz4g
PiA+IGRpY3RhdGlvblBocmFzZSwgUmV0YWluUHRyPGlkPiBtZXRhZGF0YSkKKyAgICB7CisgICAg
ICAgIHJldHVybiBhZG9wdFJlZihuZXcgRGljdGF0aW9uQ29tbWFuZElPUyhkb2N1bWVudCwgZGlj
dGF0aW9uUGhyYXNlLCBtZXRhZGF0YSkpOworICAgIH0KKyAgICAKKyAgICB2aXJ0dWFsIH5EaWN0
YXRpb25Db21tYW5kSU9TKCk7Citwcml2YXRlOgorICAgIERpY3RhdGlvbkNvbW1hbmRJT1MoRG9j
dW1lbnQmIGRvY3VtZW50LCBQYXNzT3duUHRyPFZlY3RvcjxWZWN0b3I8U3RyaW5nPiA+ID4gZGlj
dGF0aW9uUGhyYXNlLCBSZXRhaW5QdHI8aWQ+IG1ldGFkYXRhKTsKKyAgICAKKyAgICB2aXJ0dWFs
IHZvaWQgZG9BcHBseSgpOworICAgIHZpcnR1YWwgRWRpdEFjdGlvbiBlZGl0aW5nQWN0aW9uKCkg
Y29uc3QgeyByZXR1cm4gRWRpdEFjdGlvbkRpY3RhdGlvbjsgfQorICAgIAorICAgIE93blB0cjxW
ZWN0b3I8VmVjdG9yPFN0cmluZz4gPiA+IG1fZGljdGF0aW9uUGhyYXNlczsKKyAgICBSZXRhaW5Q
dHI8aWQ+IG1fbWV0YWRhdGE7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRp
ZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYWMvRnJhbWVTZWxlY3Rpb25N
YWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hYy9GcmFtZVNlbGVjdGlvbk1hYy5tbQpp
bmRleCBjNjIxYjMzZDAwMjI0Y2Y4NzU5OTQ4YTk5YjkyODQ1YjlhNTk0ODljLi5iYTRjMGNmOGFm
NjlkN2Q4OGIyYzJmMTU5ZDA3ZWU2ZmZlYzBlYjA2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL21hYy9GcmFtZVNlbGVjdGlvbk1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL21hYy9GcmFtZVNlbGVjdGlvbk1hYy5tbQpAQCAtMzIsNiArMzIsNyBAQAogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKKyNpZiAhUExBVEZPUk0oSU9TKQogc3RhdGljIENHUmVjdCBhY2Nl
c3NpYmlsaXR5Q29udmVydFNjcmVlblJlY3QoQ0dSZWN0IGJvdW5kcykKIHsKICAgICBOU0FycmF5
ICpzY3JlZW5zID0gW05TU2NyZWVuIHNjcmVlbnNdOwpAQCAtNDMsNiArNDQsNyBAQCBzdGF0aWMg
Q0dSZWN0IGFjY2Vzc2liaWxpdHlDb252ZXJ0U2NyZWVuUmVjdChDR1JlY3QgYm91bmRzKQogICAg
IAogICAgIHJldHVybiBib3VuZHM7CiB9CisjZW5kaWYgLy8gIVBMQVRGT1JNKElPUykKICAgICAK
ICAgICAKIHZvaWQgRnJhbWVTZWxlY3Rpb246Om5vdGlmeUFjY2Vzc2liaWxpdHlGb3JTZWxlY3Rp
b25DaGFuZ2UoKQpAQCAtNTQsNiArNTYsNyBAQCB2b2lkIEZyYW1lU2VsZWN0aW9uOjpub3RpZnlB
Y2Nlc3NpYmlsaXR5Rm9yU2VsZWN0aW9uQ2hhbmdlKCkKICAgICAgICAgICAgIGNhY2hlLT5wb3N0
Tm90aWZpY2F0aW9uKG1fc2VsZWN0aW9uLnN0YXJ0KCkuZGVwcmVjYXRlZE5vZGUoKS0+cmVuZGVy
ZXIoKSwgQVhPYmplY3RDYWNoZTo6QVhTZWxlY3RlZFRleHRDaGFuZ2VkLCBUYXJnZXRPYnNlcnZh
YmxlUGFyZW50KTsKICAgICB9CiAKKyNpZiAhUExBVEZPUk0oSU9TKQogICAgIC8vIGlmIHpvb20g
ZmVhdHVyZSBpcyBlbmFibGVkLCBpbnNlcnRpb24gcG9pbnQgY2hhbmdlcyBzaG91bGQgdXBkYXRl
IHRoZSB6b29tCiAgICAgaWYgKCFVQVpvb21FbmFibGVkKCkgfHwgIW1fc2VsZWN0aW9uLmlzQ2Fy
ZXQoKSkKICAgICAgICAgcmV0dXJuOwpAQCAtNzYsNiArNzksNyBAQCB2b2lkIEZyYW1lU2VsZWN0
aW9uOjpub3RpZnlBY2Nlc3NpYmlsaXR5Rm9yU2VsZWN0aW9uQ2hhbmdlKCkKICAgICBjZ1ZpZXdS
ZWN0ID0gYWNjZXNzaWJpbGl0eUNvbnZlcnRTY3JlZW5SZWN0KGNnVmlld1JlY3QpOwogCiAgICAg
VUFab29tQ2hhbmdlRm9jdXMoJmNnVmlld1JlY3QsICZjZ0NhcmV0UmVjdCwga1VBWm9vbUZvY3Vz
VHlwZUluc2VydGlvblBvaW50KTsKKyNlbmRpZiAvLyAhUExBVEZPUk0oSU9TKQogfQogCiB9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0Fz
eW5jRmlsZVN0cmVhbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0FzeW5jRmlsZVN0cmVh
bS5jcHAKaW5kZXggYzZiNDhkYWZjMWJlMzU0YzBhNzI0Yjc5ODYyNTIwZTRjNTFlMDhkMi4uMzc0
ZmFjMGUzNDc4ZDgzYzZlOWM3ZDY3ZjEzMjNmMzI5ZWExN2U4OSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvZmlsZWFwaS9Bc3luY0ZpbGVTdHJlYW0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2ZpbGVhcGkvQXN5bmNGaWxlU3RyZWFtLmNwcApAQCAtNDQsNiArNDQsMTAgQEAKICNpbmNsdWRl
IDx3dGYvTWFpblRocmVhZC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCisj
aWYgUExBVEZPUk0oSU9TKQorI2luY2x1ZGUgIldlYkNvcmVUaHJlYWQuaCIKKyNlbmRpZgorCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKIHN0YXRpYyBQYXNzUmVmUHRyPEZpbGVUaHJlYWQ+IGNyZWF0
ZUZpbGVUaHJlYWQoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZ2VuZXJhdGUtZXhwb3J0
LWZpbGUgYi9Tb3VyY2UvV2ViQ29yZS9nZW5lcmF0ZS1leHBvcnQtZmlsZQpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40
M2E5OTI3MDBlZGNkYzZhODE0YTFmYmFmMjZlODU0OGViODYxZDkwCi0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1dlYkNvcmUvZ2VuZXJhdGUtZXhwb3J0LWZpbGUKQEAgLTAsMCArMSwxNTUgQEAK
KyMhL3Vzci9iaW4vcGVybCAtdworIworIyBDb3B5cmlnaHQgKEMpIDIwMDcsIDIwMDgsIDIwMDks
IDIwMTAgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisj
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworIyBhcmUgbWV0OgorIyAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgMi4gIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisjICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisjICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorIworIyBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnIEFORCBBTlkKKyMgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorIyBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisjIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWQorIyBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworIyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7CisjIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTgorIyBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorIyAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUworIyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKwordXNlIHN0cmljdDsKK3VzZSB3YXJuaW5nczsKKwor
dXNlIEZpbGU6OkJhc2VuYW1lOwordXNlIEZpbGU6OkZpbmQ7Cit1c2UgRmlsZTo6VGVtcCBxdyh0
ZW1wZmlsZSk7Cit1c2UgR2V0b3B0OjpMb25nOworCitzdWIgcHJlcHJvY2Vzc29yRmxhZ3MoKTsK
K3N1YiBwcmVwcm9jZXNzb3JNYWNyb3MoJFxAKTsKK3N1YiBwcm9jZXNzKCQkJCk7CisKK215ICRz
aG93SGVscCA9IDA7CitteSAkdmVyYm9zZSA9IDE7CisKK215ICRyZXN1bHQgPSBHZXRPcHRpb25z
KAorICAgICJoZWxwIiAgICAgICAgPT4gXCRzaG93SGVscCwKKyAgICAidmVyYm9zZSIgICAgID0+
IFwkdmVyYm9zZSwKKyk7CitpZiAoISRyZXN1bHQgfHwgJHNob3dIZWxwIHx8IHNjYWxhcihAQVJH
VikgIT0gMikgeworICAgIHByaW50IFNUREVSUiBiYXNlbmFtZSgkMCkgLiAiIFstaHwtLWhlbHBd
IFstdnwtLXZlcmJvc2VdIGluZmlsZSBvdXRmaWxlXG4iOworICAgIGV4aXQgMTsKK30KKworbXkg
JGluRmlsZSA9IHNoaWZ0IEBBUkdWOworbXkgJG91dEZpbGUgPSBzaGlmdCBAQVJHVjsKKworbXkg
JGFyY2g7CitpZiAoJG91dEZpbGUgPX4gL1wuKFteLl0rKVwuZXhwJC8pIHsKKyAgICAkYXJjaCA9
ICQxOworfQorZGllICJVbmtub3duIGFyY2ghIiBpZiAhZGVmaW5lZCgkYXJjaCkgfHwgISRhcmNo
OworCitwcmludCAiUHJvY2Vzc2luZyAkaW5GaWxlIGZvciAkYXJjaC4uLlxuIiBpZiAkdmVyYm9z
ZTsKK3Byb2Nlc3MoJGluRmlsZSwgJG91dEZpbGUsICRhcmNoKTsKKworZXhpdCAwOworCitzdWIg
cHJlcHJvY2Vzc29yRmxhZ3MoKQoreworICAgIG15IEBmZWF0dXJlcyA9IHNwbGl0KC9ccysvLCAk
RU5We0dDQ19QUkVQUk9DRVNTT1JfREVGSU5JVElPTlN9KTsKKyAgICByZXR1cm4gQGZlYXR1cmVz
OworfQorCitzdWIgcHJlcHJvY2Vzc29yTWFjcm9zKCRcQCkKK3sKKyAgICBteSAoJGNjLCAkY2Nf
YXJncykgPSBAXzsKKworICAgIG15IEBhcmdzID0gQCRjY19hcmdzOworCisgICAgcHVzaChAYXJn
cywgbWFwIHsgIi1EIiAuICRfIH0gcHJlcHJvY2Vzc29yRmxhZ3MoKSk7CisKKyAgICBwdXNoKEBh
cmdzLCBxdygtaW5jbHVkZSB3dGYvUGxhdGZvcm0uaCAtaW5jbHVkZSB3dGYvQXNzZXJ0aW9ucy5o
KSk7CisgICAgIyBTZXQgZnJhbWV3b3JrIHNlYXJjaCBwYXRocyB0byBmaW5kIDxKYXZhU2NyaXB0
Q29yZS9QbGF0Zm9ybS5oPi4gIFdpdGhvdXQgdGhlc2UsIGNjCisgICAgIyBmaW5kcyAvU3lzdGVt
L0xpYnJhcnkvRnJhbWV3b3Jrcy9KYXZhU2NyaXB0Q29yZS5mcmFtZXdvcmsvUHJpdmF0ZUhlYWRl
cnMvUGxhdGZvcm0uaAorICAgICMgb3IgY29tcGxhaW5zIGlmIHlvdSBkb24ndCBoYXZlIHRoYXQg
aW5zdGFsbGVkLiAgV2Ugc2VhcmNoIEJVSUxUX1BST0RVQ1RTX0RJUiBmaXJzdAorICAgICMgZm9y
IGxvY2FsIGRldmVsb3BlciBidWlsZHMsIHRoZW4gdGhlIGluc3RhbGxhdGlvbiBwYXRoIGZvciBC
JkkgYnVpbGRzLgorICAgIHB1c2goQGFyZ3MsICItRiIgLiAkRU5We0JVSUxUX1BST0RVQ1RTX0RJ
Un0pIGlmICRFTlZ7QlVJTFRfUFJPRFVDVFNfRElSfTsKKyAgICBwdXNoKEBhcmdzLCAiLUkiIC4g
JEVOVntCVUlMVF9QUk9EVUNUU19ESVJ9IC4gIi91c3IvbG9jYWwvaW5jbHVkZSIpIGlmICRFTlZ7
QlVJTFRfUFJPRFVDVFNfRElSfTsKKyAgICBwdXNoKEBhcmdzLCAiLUkiIC4gJEVOVntCVUlMVF9Q
Uk9EVUNUU19ESVJ9IC4gJEVOVntTREtST09UfSAuICIvdXNyL2xvY2FsL2luY2x1ZGUiKSBpZiAk
RU5We0JVSUxUX1BST0RVQ1RTX0RJUn07CisgICAgIyBYY29kZSAzLjEgaXMgcmVxdWlyZWQgZm9y
IFNES1JPT1QgdG8gYmUgc2V0LgorICAgIGlmIChleGlzdHMgJEVOVntTWVNURU1fTElCUkFSWV9E
SVJ9ICYmICRFTlZ7U1lTVEVNX0xJQlJBUllfRElSfSkgeworICAgICAgICBteSAkZnJhbWV3b3Jr
U2VhcmNoUGF0aCA9ICRFTlZ7U0RLUk9PVH0gLiAkRU5We1NZU1RFTV9MSUJSQVJZX0RJUn07Cisg
ICAgICAgIGlmICgkRU5We1BMQVRGT1JNX05BTUV9IGVxICJpcGhvbmVvcyIgfHwgJEVOVntQTEFU
Rk9STV9OQU1FfSBlcSAiaXBob25lc2ltdWxhdG9yIikgeworICAgICAgICAgICAgJGZyYW1ld29y
a1NlYXJjaFBhdGggLj0gIi9Qcml2YXRlRnJhbWV3b3JrcyI7CisgICAgICAgIH0gZWxzZSB7Cisg
ICAgICAgICAgICAkZnJhbWV3b3JrU2VhcmNoUGF0aCAuPSAiL0ZyYW1ld29ya3MiOworICAgICAg
ICB9CisgICAgICAgIHB1c2goQGFyZ3MsICItRiIgLiAkZnJhbWV3b3JrU2VhcmNoUGF0aCk7Cisg
ICAgfQorCisgICAgcHVzaChAYXJncywgIi1JIiAuICRFTlZ7QlVJTFRfUFJPRFVDVFNfRElSfSAu
ICRFTlZ7U0RLUk9PVH0gLiAiL3Vzci9sb2NhbC9pbmNsdWRlIikgaWYgJEVOVntCVUlMVF9QUk9E
VUNUU19ESVJ9OworICAgIHB1c2goQGFyZ3MsICItSSIgLiAkRU5We1NES1JPT1R9IC4gIi91c3Iv
bG9jYWwvaW5jbHVkZSIpOworCisgICAgIyBQcmludCBvdXQgI2RlZmluZSBsaW5lcyBmb3IgYWxs
IG1hY3Jvcy4KKyAgICBwdXNoKEBhcmdzLCBxdygtZE0gL2Rldi9udWxsKSk7CisKKyAgICBwcmlu
dCBqb2luKCIgIiwgJGNjLCBAYXJncyksICJcbiIgaWYgJHZlcmJvc2U7CisgICAgbG9jYWwgJC8g
PSB1bmRlZjsKKyAgICBvcGVuKENDLCAiLXwiLCAkY2MsIEBhcmdzKSBvciBkaWUgIiQhIjsKKyAg
ICBteSAkbWFjcm9zID0gPENDPjsKKyAgICBjbG9zZShDQyk7CisKKyAgICByZXR1cm4gJG1hY3Jv
czsKK30KKworc3ViIHByb2Nlc3MoJCQkKQoreworICAgIG15ICgkaW5GaWxlLCAkb3V0RmlsZSwg
JGFyY2gpID0gQF87CisKKyAgICBpZiAoIWV4aXN0cyAkRU5We1NES1JPT1R9IG9yICEkRU5We1NE
S1JPT1R9KSB7CisgICAgICAgIGRpZSAiU0RLUk9PVCBlbnZpcm9ubWVudCB2YXJpYWJsZSBub3Qg
Zm91bmQiOworICAgIH0KKworICAgIGNob21wIChteSAkY2MgPSBgeGNydW4gLWZpbmQgY2NgKTsK
KworICAgICMgUnVuIGNwcCAoLUUpIGJ1dCBkb24ndCBwcmludCB0aGUgbGluZSBudW1iZXIgaW5m
byAoLVApLgorICAgIG15IEBhcmdzID0gcXcoLUUgLVApOworCisgICAgIyBQcm92aWRlIGEgZGVm
YXVsdCBzb3VyY2UgdHlwZSBzaW5jZSAqLmluIGlzbid0IGEga25vd24gZmlsZSBleHRlbnNpb24u
CisgICAgcHVzaChAYXJncywgcXcoLXN0ZD1nbnUrKzExIC14IGMrKykpOworCisgICAgIyBNYWtl
IHN1cmUgY2Mga25vd3Mgd2hpY2ggU0RLIHdlJ3JlIHVzaW5nLgorICAgIHB1c2goQGFyZ3MsICIt
aXN5c3Jvb3QiLCAkRU5We1NES1JPT1R9KTsKKworICAgIHB1c2goQGFyZ3MsICItYXJjaCIsICRh
cmNoKTsKKworICAgIG15ICRtYWNyb3MgPSBwcmVwcm9jZXNzb3JNYWNyb3MoJGNjLCBAYXJncyk7
CisKKyAgICBwdXNoKEBhcmdzLCAiLW8iLCAkb3V0RmlsZSk7CisgICAgcHVzaChAYXJncywgIi0i
KTsKKworICAgIHByaW50IGpvaW4oIiAiLCAkY2MsIEBhcmdzKSwgIlxuIiBpZiAkdmVyYm9zZTsK
KyAgICBvcGVuKENDLCAifC0iLCAkY2MsIEBhcmdzKSBvciBkaWUgIiQhIjsKKyAgICBvcGVuKElO
LCAiPCIsICRpbkZpbGUpIG9yIGRpZSAiJCEiOworCisgICAgcHJpbnQgQ0MgJG1hY3JvczsKKyAg
ICB3aGlsZSAobXkgJGxpbmUgPSA8SU4+KSB7CisgICAgICAgIG5leHQgaWYgKCRsaW5lID1+IC9e
Iy8gJiYgJGxpbmUgIX4gL14jXHMqKGlmfGlmZGVmfGlmbmRlZnxlbHNlfGVsaWZ8ZW5kaWYpLyk7
CisgICAgICAgIHByaW50IENDICRsaW5lOworICAgIH0KKworICAgIGNsb3NlKElOKTsKKyAgICBj
bG9zZShDQyk7CisKKyAgICBteSAkZmlsZUNvdW50ID0gY2htb2QgMDY0NCwgJG91dEZpbGU7Cisg
ICAgaWYgKCRmaWxlQ291bnQgIT0gMSkgeworICAgICAgICBkaWUgIkNvdWxkIG5vdCBjaG1vZCAw
NjQ0ICRvdXRGaWxlOiAkISI7CisgICAgfQorfQorCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ291bnRlcnMuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JDb3VudGVycy5oCmluZGV4IDdhMWM3NThlMTBkM2Q5MTNkNGU0MjA3NjZiZjE2
ZWVlYzg0NWRmNjkuLjI5YmQxYmQ2MmRlOGZkZGIxNzkwYzIwMmQ1MDYzM2IxNTc5Y2JkMjggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb3VudGVycy5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb3VudGVycy5oCkBAIC0zNSw2
ICszNSw5IEBACiAKICNpZiAhQVNTRVJUX0RJU0FCTEVECiAjaW5jbHVkZSA8d3RmL01haW5UaHJl
YWQuaD4KKyNpZiBQTEFURk9STShJT1MpCisjaW5jbHVkZSAiV2ViQ29yZVRocmVhZC5oIgorI2Vu
ZGlmCiAjZW5kaWYKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kSG9zdC5oIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kSG9zdC5oCmluZGV4IDI2M2U3YWQ4OGQyY2I5NDVk
OGUwYThiYjQ0YzhmZDc1ZTNhNGQzMmUuLjlkYzY3YjBjNzc3ZDA4NjdjOWU2NzQ5MzEzZDBkMjk2
MDYxYjEzNjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JG
cm9udGVuZEhvc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJv
bnRlbmRIb3N0LmgKQEAgLTc3LDggKzc3LDEwIEBAIHB1YmxpYzoKICAgICB2b2lkIGFwcGVuZChj
b25zdCBTdHJpbmcmIHVybCwgY29uc3QgU3RyaW5nJiBjb250ZW50KTsKICAgICB2b2lkIGNsb3Nl
KGNvbnN0IFN0cmluZyYgdXJsKTsKIAorI2lmIEVOQUJMRShDT05URVhUX01FTlVTKQogICAgIC8v
IENhbGxlZCBmcm9tIFtDdXN0b21dIGltcGxlbWVudGF0aW9ucy4KICAgICB2b2lkIHNob3dDb250
ZXh0TWVudShFdmVudCosIGNvbnN0IFZlY3RvcjxDb250ZXh0TWVudUl0ZW0+JiBpdGVtcyk7Cisj
ZW5kaWYKICAgICB2b2lkIHNlbmRNZXNzYWdlVG9CYWNrZW5kKGNvbnN0IFN0cmluZyYgbWVzc2Fn
ZSk7CiAgICAgdm9pZCBkaXNwYXRjaEV2ZW50QXNDb250ZXh0TWVudUV2ZW50KEV2ZW50Kik7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JQYWdlQWdlbnQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclBhZ2VBZ2VudC5jcHAKaW5k
ZXggMTJkMGI3ZTc4ZTgzODU5NDhiODYxMjRmZTY1ZmY1MTdjZTVlNmUyNS4uZTk5ZWIzZWExNjJi
MDBkZmUzNTU0OWFkYmIzYTIzMWJlOGFkOWI0ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3RvclBhZ2VBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3RvclBhZ2VBZ2VudC5jcHAKQEAgLTExMDcsNyArMTEwNywxMSBAQCB2b2lk
IEluc3BlY3RvclBhZ2VBZ2VudDo6c2V0RGV2aWNlT3JpZW50YXRpb25PdmVycmlkZShFcnJvclN0
cmluZyogZXJyb3IsIGRvdWJsZQogICAgIEVycm9yU3RyaW5nIGNsZWFyRXJyb3I7CiAgICAgY2xl
YXJEZXZpY2VPcmllbnRhdGlvbk92ZXJyaWRlKCZjbGVhckVycm9yKTsKIAorI2lmIFBMQVRGT1JN
KElPUykKKyAgICBtX2RldmljZU9yaWVudGF0aW9uID0gRGV2aWNlT3JpZW50YXRpb25EYXRhOjpj
cmVhdGUodHJ1ZSwgYWxwaGEsIHRydWUsIGJldGEsIHRydWUsIGdhbW1hLCBmYWxzZSwgMCwgZmFs
c2UsIDApOworI2Vsc2UKICAgICBtX2RldmljZU9yaWVudGF0aW9uID0gRGV2aWNlT3JpZW50YXRp
b25EYXRhOjpjcmVhdGUodHJ1ZSwgYWxwaGEsIHRydWUsIGJldGEsIHRydWUsIGdhbW1hKTsKKyNl
bmRpZgogICAgIGNvbnRyb2xsZXItPmRpZENoYW5nZURldmljZU9yaWVudGF0aW9uKG1fZGV2aWNl
T3JpZW50YXRpb24uZ2V0KCkpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9tYWtl
LWV4cG9ydC1maWxlLWdlbmVyYXRvciBiL1NvdXJjZS9XZWJDb3JlL21ha2UtZXhwb3J0LWZpbGUt
Z2VuZXJhdG9yCmluZGV4IDYxNzM2M2MyNDBmYzkzMjNjNGU4YWU3OGM3ZmFlZjg0N2ZlMjgzYTQu
LjczMjM2OTI4ZmMyNGRhNzk2Nzg1ZGNmZjdjOTY0NTY0NDY1NTg0Y2UgMTAwNzU1Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL21ha2UtZXhwb3J0LWZpbGUtZ2VuZXJhdG9yCisrKyBiL1NvdXJjZS9XZWJD
b3JlL21ha2UtZXhwb3J0LWZpbGUtZ2VuZXJhdG9yCkBAIC0yOSw3ICsyOSw3IEBAIG91dHB1dF9m
aWxlID0gQVJHVlsxXQogcmVxdWlyZSAnZXJiJwogCiBkZWYgbGluZV9mb3Jfb3V0cHV0IGxpbmUK
LSAgcmV0dXJuIGxpbmUuY2hvbXAgaWYgbGluZSA9fiAvIy8KKyAgcmV0dXJuIGxpbmUuY2hvbXAg
aWYgbGluZSA9fiAvXiNccyooaWZ8aWZkZWZ8aWZuZGVmfGVsc2V8ZWxpZnxlbmRpZikvCiAgICIg
ICAgdmFsaWRhdGVBbmRQcmludChcIiN7bGluZS5jaG9tcH1cIik7IgogZW5kCiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsdWdpbnMvUGx1Z2luUGFja2FnZS5oIGIvU291cmNlL1dlYkNv
cmUvcGx1Z2lucy9QbHVnaW5QYWNrYWdlLmgKaW5kZXggNWYzMWU4YTE2OGQyNGNiNzBjNzJkZTY3
OTYwNWJkZTJkODRhZTk2Ny4uMTg4NjU0NTg2YzQ4ZjVhNTlhZTMyODY0NDZhNWE0ZGFiYTEzMWZm
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGx1Z2lucy9QbHVnaW5QYWNrYWdlLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGx1Z2lucy9QbHVnaW5QYWNrYWdlLmgKQEAgLTMwLDcgKzMwLDkg
QEAKICNpbmNsdWRlICJGaWxlU3lzdGVtLmgiCiAjaW5jbHVkZSAiUGx1Z2luUXVpcmtTZXQuaCIK
ICNpbmNsdWRlICJUaW1lci5oIgorI2lmIEVOQUJMRShORVRTQ0FQRV9QTFVHSU5fQVBJKQogI2lu
Y2x1ZGUgIm5wcnVudGltZV9pbnRlcm5hbC5oIgorI2VuZGlmCiAjaW5jbHVkZSA8d3RmL0hhc2hN
YXAuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0
cmluZ0hhc2guaD4KQEAgLTcwLDcgKzcyLDkgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAg
ICBib29sIGlzRW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJuIG1faXNFbmFibGVkOyB9CiAgICAgICAg
IHZvaWQgc2V0RW5hYmxlZChib29sKTsKIAorI2lmIEVOQUJMRShORVRTQ0FQRV9QTFVHSU5fQVBJ
KQogICAgICAgICBjb25zdCBOUFBsdWdpbkZ1bmNzKiBwbHVnaW5GdW5jcygpIGNvbnN0IHsgcmV0
dXJuICZtX3BsdWdpbkZ1bmNzOyB9CisjZW5kaWYKICAgICAgICAgaW50IGNvbXBhcmVGaWxlVmVy
c2lvbihjb25zdCBQbGF0Zm9ybU1vZHVsZVZlcnNpb24mKSBjb25zdDsKICAgICAgICAgaW50IGNv
bXBhcmUoY29uc3QgUGx1Z2luUGFja2FnZSYpIGNvbnN0OwogICAgICAgICBQbHVnaW5RdWlya1Nl
dCBxdWlya3MoKSBjb25zdCB7IHJldHVybiBtX3F1aXJrczsgfQpAQCAtMTA5LDkgKzExMywxMSBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIFBsYXRmb3JtTW9kdWxlIG1fbW9kdWxlOwog
ICAgICAgICB0aW1lX3QgbV9sYXN0TW9kaWZpZWQ7CiAKKyNpZiBFTkFCTEUoTkVUU0NBUEVfUExV
R0lOX0FQSSkKICAgICAgICAgTlBQX1NodXRkb3duUHJvY1B0ciBtX05QUF9TaHV0ZG93bjsKICAg
ICAgICAgTlBQbHVnaW5GdW5jcyBtX3BsdWdpbkZ1bmNzOwogICAgICAgICBOUE5ldHNjYXBlRnVu
Y3MgbV9icm93c2VyRnVuY3M7CisjZW5kaWYKIAogICAgICAgICB2b2lkIGZyZWVMaWJyYXJ5U29v
bigpOwogICAgICAgICB2b2lkIGZyZWVMaWJyYXJ5VGltZXJGaXJlZChUaW1lcjxQbHVnaW5QYWNr
YWdlPiopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGx1Z2lucy9QbHVnaW5WaWV3QmFz
ZS5oIGIvU291cmNlL1dlYkNvcmUvcGx1Z2lucy9QbHVnaW5WaWV3QmFzZS5oCmluZGV4IDdhMDRm
NGU5NGNmMjBlMmY5Njk0ODk2ZWUwMjRkOTBlZTdkN2Y1ZTMuLjg0Y2Q1ZjgxYjFkNTljMWE4NWU0
YTg5ODUzMzI0NGFlMDE2OGIxNTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsdWdpbnMv
UGx1Z2luVmlld0Jhc2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbHVnaW5zL1BsdWdpblZpZXdC
YXNlLmgKQEAgLTQ2LDYgKzQ2LDExIEBAIGNsYXNzIFBsdWdpblZpZXdCYXNlIDogcHVibGljIFdp
ZGdldCB7CiBwdWJsaWM6CiAjaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQogICAgIHZp
cnR1YWwgUGxhdGZvcm1MYXllciogcGxhdGZvcm1MYXllcigpIGNvbnN0IHsgcmV0dXJuIDA7IH0K
KyNpZiBQTEFURk9STShJT1MpCisgICAgdmlydHVhbCBib29sIHdpbGxQcm92aWRlUGx1Z2luTGF5
ZXIoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQorICAgIHZpcnR1YWwgdm9pZCBhdHRhY2hQbHVn
aW5MYXllcigpIHsgfQorICAgIHZpcnR1YWwgdm9pZCBkZXRhY2hQbHVnaW5MYXllcigpIHsgfQor
I2VuZGlmCiAjZW5kaWYKIAogICAgIHZpcnR1YWwgSlNDOjpKU09iamVjdCogc2NyaXB0T2JqZWN0
KEpTQzo6SlNHbG9iYWxPYmplY3QqKSB7IHJldHVybiAwOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9zdHlsZS9TdHlsZVJlc29sdmVGb3JEb2N1bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9zdHlsZS9TdHlsZVJlc29sdmVGb3JEb2N1bWVudC5jcHAKaW5kZXggYjMzOWUyODNlZGUwOTA3
NmM5ZTc4OTdkMWE3MTk4ZDMxNWNhZDc1My4uMWRiM2IwNTI0ZWQyZDY1ZTdlYjU4MDY4Y2MyOGZh
NjI2Nzc5OGFiYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVSZXNvbHZl
Rm9yRG9jdW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlUmVzb2x2ZUZv
ckRvY3VtZW50LmNwcApAQCAtNzUsNiArNzUsMTAgQEAgUGFzc1JlZjxSZW5kZXJTdHlsZT4gcmVz
b2x2ZUZvckRvY3VtZW50KGNvbnN0IERvY3VtZW50JiBkb2N1bWVudCkKICAgICB9CiAgICAgLy8g
VGhpcyBvdmVycmlkZXMgYW55IC13ZWJraXQtdXNlci1tb2RpZnkgaW5oZXJpdGVkIGZyb20gdGhl
IHBhcmVudCBpZnJhbWUuCiAgICAgZG9jdW1lbnRTdHlsZS5nZXQoKS5zZXRVc2VyTW9kaWZ5KGRv
Y3VtZW50LmluRGVzaWduTW9kZSgpID8gUkVBRF9XUklURSA6IFJFQURfT05MWSk7CisjaWYgUExB
VEZPUk0oSU9TKQorICAgIGlmIChkb2N1bWVudC5pbkRlc2lnbk1vZGUoKSkKKyAgICAgICAgZG9j
dW1lbnRTdHlsZS5nZXQoKS5zZXRUZXh0U2l6ZUFkanVzdChUZXh0U2l6ZUFkanVzdG1lbnQoTm9U
ZXh0U2l6ZUFkanVzdG1lbnQpKTsKKyNlbmRpZgogCiAgICAgRWxlbWVudCogZG9jRWxlbWVudCA9
IGRvY3VtZW50LmRvY3VtZW50RWxlbWVudCgpOwogICAgIFJlbmRlck9iamVjdCogZG9jRWxlbWVu
dFJlbmRlcmVyID0gZG9jRWxlbWVudCA/IGRvY0VsZW1lbnQtPnJlbmRlcmVyKCkgOiAwOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVSZXNvbHZlVHJlZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9zdHlsZS9TdHlsZVJlc29sdmVUcmVlLmNwcAppbmRleCA0MmIxMzY0MmM1ZmUw
MDI4NmQzY2E2MGZkOGNmNDc4NjAyMDhmZGMwLi5mYmFiMjE0NzI3YTg1NGQ3ODhmMjk4MDk0Y2I1
YzA1OGMxYTczODk4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZVJlc29s
dmVUcmVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZVJlc29sdmVUcmVlLmNw
cApAQCAtNzY5LDE3ICs3NjksMTUgQEAgc3RhdGljIEVWaXNpYmlsaXR5IGVsZW1lbnRJbXBsaWNp
dFZpc2liaWxpdHkoY29uc3QgRWxlbWVudCogZWxlbWVudCkKICAgICBpZiAoIXJlbmRlcmVyKQog
ICAgICAgICByZXR1cm4gVklTSUJMRTsKIAotICAgIFJlbmRlclN0eWxlKiBzdHlsZSA9IHJlbmRl
cmVyLT5zdHlsZSgpOwotICAgIGlmICghc3R5bGUpCi0gICAgICAgIHJldHVybiBWSVNJQkxFOwor
ICAgIFJlbmRlclN0eWxlJiBzdHlsZSA9IHJlbmRlcmVyLT5zdHlsZSgpOwogCi0gICAgTGVuZ3Ro
IHdpZHRoKHN0eWxlLT53aWR0aCgpKTsKLSAgICBMZW5ndGggaGVpZ2h0KHN0eWxlLT5oZWlnaHQo
KSk7CisgICAgTGVuZ3RoIHdpZHRoKHN0eWxlLndpZHRoKCkpOworICAgIExlbmd0aCBoZWlnaHQo
c3R5bGUuaGVpZ2h0KCkpOwogICAgIGlmICgod2lkdGguaXNGaXhlZCgpICYmIHdpZHRoLnZhbHVl
KCkgPD0gMCkgfHwgKGhlaWdodC5pc0ZpeGVkKCkgJiYgaGVpZ2h0LnZhbHVlKCkgPD0gMCkpCiAg
ICAgICAgIHJldHVybiBISURERU47CiAKLSAgICBMZW5ndGggdG9wKHN0eWxlLT50b3AoKSk7Ci0g
ICAgTGVuZ3RoIGxlZnQoc3R5bGUtPmxlZnQoKSk7CisgICAgTGVuZ3RoIHRvcChzdHlsZS50b3Ao
KSk7CisgICAgTGVuZ3RoIGxlZnQoc3R5bGUubGVmdCgpKTsKICAgICBpZiAobGVmdC5pc0ZpeGVk
KCkgJiYgd2lkdGguaXNGaXhlZCgpICYmIC1sZWZ0LnZhbHVlKCkgPj0gd2lkdGgudmFsdWUoKSkK
ICAgICAgICAgcmV0dXJuIEhJRERFTjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVz
dGluZy9JbnRlcm5hbHMuY3BwIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3Bw
CmluZGV4IDM4NTM5ZWVkOGM4ZjI0MmJlOTI3ODllZDgzMTkwOTQ0MTNhNGQ3ZmIuLmQyMjU4YjU0
MmY1ZjQzMjFiZDRmZmQ0MmJlMDIxZjMxMGFjMzAxZWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0lu
dGVybmFscy5jcHAKQEAgLTE5NjgsNyArMTk2OCw3IEBAIHZvaWQgSW50ZXJuYWxzOjpzdG9wVHJh
Y2tpbmdSZXBhaW50cyhFeGNlcHRpb25Db2RlJiBlYykKICAgICBmcmFtZVZpZXctPnNldFRyYWNr
c1JlcGFpbnRzKGZhbHNlKTsKIH0KIAotI2lmIFVTRShMQVpZX05BVElWRV9DVVJTT1IpCisjaWYg
IVBMQVRGT1JNKElPUykgJiYgVVNFKExBWllfTkFUSVZFX0NVUlNPUikKIHN0YXRpYyBjb25zdCBj
aGFyKiBjdXJzb3JUeXBlVG9TdHJpbmcoQ3Vyc29yOjpUeXBlIGN1cnNvclR5cGUpCiB7CiAgICAg
c3dpdGNoIChjdXJzb3JUeXBlKSB7CkBAIC0yMDMxLDkgKzIwMzEsOSBAQCBTdHJpbmcgSW50ZXJu
YWxzOjpnZXRDdXJyZW50Q3Vyc29ySW5mbyhFeGNlcHRpb25Db2RlJiBlYykKICAgICAgICAgcmV0
dXJuIFN0cmluZygpOwogICAgIH0KIAorI2lmICFQTEFURk9STShJT1MpICYmIFVTRShMQVpZX05B
VElWRV9DVVJTT1IpCiAgICAgQ3Vyc29yIGN1cnNvciA9IGRvY3VtZW50LT5mcmFtZSgpLT5ldmVu
dEhhbmRsZXIoKS5jdXJyZW50TW91c2VDdXJzb3IoKTsKIAotI2lmIFVTRShMQVpZX05BVElWRV9D
VVJTT1IpCiAgICAgU3RyaW5nQnVpbGRlciByZXN1bHQ7CiAgICAgcmVzdWx0LmFwcGVuZCgidHlw
ZT0iKTsKICAgICByZXN1bHQuYXBwZW5kKGN1cnNvclR5cGVUb1N0cmluZyhjdXJzb3IudHlwZSgp
KSk7CkBAIC0yMTMyLDggKzIxMzIsMTIgQEAgYm9vbCBJbnRlcm5hbHM6OmlzU2VsZWN0UG9wdXBW
aXNpYmxlKE5vZGUqIG5vZGUpCiAgICAgaWYgKCFyZW5kZXJlci0+aXNNZW51TGlzdCgpKQogICAg
ICAgICByZXR1cm4gZmFsc2U7CiAKKyNpZiAhUExBVEZPUk0oSU9TKQogICAgIFJlbmRlck1lbnVM
aXN0KiBtZW51TGlzdCA9IHRvUmVuZGVyTWVudUxpc3QocmVuZGVyZXIpOwogICAgIHJldHVybiBt
ZW51TGlzdC0+cG9wdXBJc1Zpc2libGUoKTsKKyNlbHNlCisgICAgcmV0dXJuIGZhbHNlOworI2Vu
ZGlmIC8vICFQTEFURk9STShJT1MpCiB9CiAKIFN0cmluZyBJbnRlcm5hbHM6OmNhcHRpb25zU3R5
bGVTaGVldE92ZXJyaWRlKEV4Y2VwdGlvbkNvZGUmIGVjKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvd29ya2Vycy9Xb3JrZXJUaHJlYWQuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9X
b3JrZXJUaHJlYWQuY3BwCmluZGV4IGZlZjNlNTRhNDFjOGM4NWUwZjFjZjVhMjU1Njg0NGU5MzFh
NzJjMjUuLjliNmFkZTRmNWNhMzc1OTYxOTRlNmFlNjg2OTg4ZGI5ZTMzM2JmMWUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyVGhyZWFkLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS93b3JrZXJzL1dvcmtlclRocmVhZC5jcHAKQEAgLTQzLDYgKzQzLDEwIEBACiAjaW5j
bHVkZSAiRGF0YWJhc2VUYXNrLmgiCiAjZW5kaWYKIAorI2lmIFBMQVRGT1JNKElPUykKKyNpbmNs
dWRlICJXZWJDb3JlVGhyZWFkLmgiCisjZW5kaWYKKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBz
dGF0aWMgTXV0ZXgmIHRocmVhZFNldE11dGV4KCkKQEAgLTE0MSw2ICsxNDUsMTEgQEAgdm9pZCBX
b3JrZXJUaHJlYWQ6OndvcmtlclRocmVhZFN0YXJ0KHZvaWQqIHRocmVhZCkKIAogdm9pZCBXb3Jr
ZXJUaHJlYWQ6OndvcmtlclRocmVhZCgpCiB7CisgICAgLy8gUHJvcGFnYXRlIHRoZSBtYWluVGhy
ZWFkJ3MgZmVudiB0byB3b3JrZXJzLgorI2lmIFBMQVRGT1JNKElPUykKKyAgICBmZXNldGVudigm
bWFpblRocmVhZEZFbnYpOworI2VuZGlmCisKICAgICB7CiAgICAgICAgIE11dGV4TG9ja2VyIGxv
Y2sobV90aHJlYWRDcmVhdGlvbk11dGV4KTsKICAgICAgICAgbV93b3JrZXJHbG9iYWxTY29wZSA9
IGNyZWF0ZVdvcmtlckdsb2JhbFNjb3BlKG1fc3RhcnR1cERhdGEtPm1fc2NyaXB0VVJMLCBtX3N0
YXJ0dXBEYXRhLT5tX3VzZXJBZ2VudCwgc3RkOjptb3ZlKG1fc3RhcnR1cERhdGEtPm1fZ3JvdXBT
ZXR0aW5ncyksIG1fc3RhcnR1cERhdGEtPm1fY29udGVudFNlY3VyaXR5UG9saWN5LCBtX3N0YXJ0
dXBEYXRhLT5tX2NvbnRlbnRTZWN1cml0eVBvbGljeVR5cGUsIG1fc3RhcnR1cERhdGEtPm1fdG9w
T3JpZ2luLnJlbGVhc2UoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagppbmRleCAyNGRjOTU4MmQ1OTI4MDA5YmJlMDIyMmFjOWM5YTM2M2Y0Mjdi
N2E2Li43NTlhNTEzNTcyMGY2MGRmNGRkMmQ1ZDBkZmMwNWI4ZjZjYzU0OWU4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1Nv
dXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTgzMCw2ICs4
MzAsNyBAQAogCQlDRDhFQUM3MjExQ0FDOUEzMDA3NzQwNzUgLyogSU9LaXQuZnJhbWV3b3JrICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gd3JhcHBlci5m
cmFtZXdvcms7IG5hbWUgPSBJT0tpdC5mcmFtZXdvcms7IHBhdGggPSAvU3lzdGVtL0xpYnJhcnkv
RnJhbWV3b3Jrcy9JT0tpdC5mcmFtZXdvcms7IHNvdXJjZVRyZWUgPSAiPGFic29sdXRlPiI7IH07
CiAJCUNEQTYyQUUwMTI1Rjg3QzIwMDdGRDExOCAvKiBXZWJGdWxsU2NyZWVuQ29udHJvbGxlci5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJGdWxsU2NyZWVuQ29udHJvbGxl
ci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDREE2MkFFMTEyNUY4N0MyMDA3RkQx
MTggLyogV2ViRnVsbFNjcmVlbkNvbnRyb2xsZXIubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5vYmpjcHA7IHBhdGggPSBXZWJGdWxsU2NyZWVuQ29udHJvbGxlci5tbTsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJQ0UyNjE2QUIxODdFNjY3NTAwNzk1NUYzIC8qIHNjcnViLWlmZGVm
cy5wbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHRleHQuc2NyaXB0LnBlcmw7IG5hbWUgPSAic2NydWItaWZkZWZzLnBs
IjsgcGF0aCA9ICJtYWMvc2NydWItaWZkZWZzLnBsIjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJQ0VEQTEyRDkxNTJDQkU2ODAwRDlFMDhEIC8qIFdlYkFsdGVybmF0aXZlVGV4dENsaWVu
dC5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdlYkFsdGVybmF0
aXZlVGV4dENsaWVudC5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0VEQTEyREEx
NTJDQkU2ODAwRDlFMDhEIC8qIFdlYkFsdGVybmF0aXZlVGV4dENsaWVudC5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJBbHRlcm5hdGl2ZVRleHRDbGllbnQuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJREQ3Q0RFRTYwQTIzQkE5RTAwMDY5OTI4IC8qIFdlYlR5
cGVzSW50ZXJuYWwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViVHlwZXNJ
bnRlcm5hbC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtOTI4LDYgKzkyOSw3IEBA
CiAJCTA4NjdENjkxRkU4NDAyOEZDMDJBQUMwNyAvKiBXZWJLaXQgKi8gPSB7CiAJCQlpc2EgPSBQ
QlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAorCQkJCUNFMjYxNkFCMTg3RTY2NzUwMDc5NTVGMyAv
KiBzY3J1Yi1pZmRlZnMucGwgKi8sCiAJCQkJMUM2Q0IwM0UwQUE2MzkxRDAwRDIzQkZEIC8qIE1p
Z3JhdGVIZWFkZXJzLm1ha2UgKi8sCiAJCQkJRjVGNzMyRDIwMkZGNEQ0RjAxQTgwMTgwIC8qIFdl
YktpdC5leHAgKi8sCiAJCQkJQTEwQzFEOEYxODIwMzA3RDAwMzY4ODNBIC8qIFdlYktpdC5pT1Mu
ZXhwICovLApAQCAtMTkzOSw2ICsxOTQxLDcgQEAKIAkJCQkxQzM5NURFMjBDNkJFOEUwMDAwRDFF
NTIgLyogR2VuZXJhdGUgNjQtYml0IEV4cG9ydCBGaWxlICovLAogCQkJCTkzOTgxMTI3MDgyNEJG
MDEwMDhERjAzOCAvKiBGcmFtZXdvcmtzICovLAogCQkJCTVEMEQ1NDIxMEU5ODYzMUQwMDI5RTIy
MyAvKiBDaGVjayBGb3IgV2VhayBWVGFibGVzIGFuZCBFeHRlcm5hbHMgKi8sCisJCQkJNDQ1OEE2
M0EwRDVDMjE0MDAwQjc0RkM4IC8qIFNjcnViIEluc3RhbGxlZCBIZWFkZXJzICovLAogCQkJCTM3
MTNGMDE4MTQyOTA1QjcwMDM2Mzg3RiAvKiBDaGVjayBGb3IgSW5hcHByb3ByaWF0ZSBPYmplY3Rp
dmUtQyBDbGFzcyBOYW1lcyAqLywKIAkJCQk1RDg4RUU2QzExNDA3REU4MDBCQzNBQkMgLyogQ2hl
Y2sgRm9yIEZyYW1ld29yayBJbmNsdWRlIENvbnNpc3RlbmN5ICovLAogCQkJCUE1NURFQUE1MTY3
MDNGOUYwMDNEQjg0MSAvKiBDaGVjayBGb3IgSW5hcHByb3ByaWF0ZSBNYWNyb3MgaW4gRXh0ZXJu
YWwgSGVhZGVycyAqLywKQEAgLTIwNDgsNiArMjA1MSwyMSBAQAogCQkJc2hlbGxQYXRoID0gL2Jp
bi9zaDsKIAkJCXNoZWxsU2NyaXB0ID0gImlmIFsgXCIke0FDVElPTn1cIiA9IFwiaW5zdGFsbGhk
cnNcIiBdOyB0aGVuXG4gICAgZXhpdCAwO1xuZmlcblxuaWYgWyAtZiAuLi8uLi9Ub29scy9TY3Jp
cHRzL2NoZWNrLWZvci1pbmFwcHJvcHJpYXRlLW9iamMtY2xhc3MtbmFtZXMgXTsgdGhlblxuICAg
IC4uLy4uL1Rvb2xzL1NjcmlwdHMvY2hlY2stZm9yLWluYXBwcm9wcmlhdGUtb2JqYy1jbGFzcy1u
YW1lcyBXZWIgX1dlYiB8fCBleGl0ICQ/XG5maSI7CiAJCX07CisJCTQ0NThBNjNBMEQ1QzIxNDAw
MEI3NEZDOCAvKiBTY3J1YiBJbnN0YWxsZWQgSGVhZGVycyAqLyA9IHsKKwkJCWlzYSA9IFBCWFNo
ZWxsU2NyaXB0QnVpbGRQaGFzZTsKKwkJCWJ1aWxkQWN0aW9uTWFzayA9IDIxNDc0ODM2NDc7CisJ
CQlmaWxlcyA9ICgKKwkJCSk7CisJCQlpbnB1dFBhdGhzID0gKAorCQkJCSIkKFNSQ1JPT1QpL21h
Yy9zY3J1Yi1pZmRlZnMucGwiLAorCQkJKTsKKwkJCW5hbWUgPSAiU2NydWIgSW5zdGFsbGVkIEhl
YWRlcnMiOworCQkJb3V0cHV0UGF0aHMgPSAoCisJCQkpOworCQkJcnVuT25seUZvckRlcGxveW1l
bnRQb3N0cHJvY2Vzc2luZyA9IDA7CisJCQlzaGVsbFBhdGggPSAvYmluL3NoOworCQkJc2hlbGxT
Y3JpcHQgPSAiLi9tYWMvc2NydWItaWZkZWZzLnBsICRUQVJHRVRfQlVJTERfRElSLyRQUklWQVRF
X0hFQURFUlNfRk9MREVSX1BBVEhcbi4vbWFjL3NjcnViLWlmZGVmcy5wbCAkVEFSR0VUX0JVSUxE
X0RJUi8kUFVCTElDX0hFQURFUlNfRk9MREVSX1BBVEhcbiI7CisJCX07CiAJCTVEMEQ1NDIxMEU5
ODYzMUQwMDI5RTIyMyAvKiBDaGVjayBGb3IgV2VhayBWVGFibGVzIGFuZCBFeHRlcm5hbHMgKi8g
PSB7CiAJCQlpc2EgPSBQQlhTaGVsbFNjcmlwdEJ1aWxkUGhhc2U7CiAJCQlidWlsZEFjdGlvbk1h
c2sgPSAyMTQ3NDgzNjQ3OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvTWlncmF0ZUhl
YWRlcnMubWFrZSBiL1NvdXJjZS9XZWJLaXQvbWFjL01pZ3JhdGVIZWFkZXJzLm1ha2UKaW5kZXgg
MzRjYTQ5YTUzMjk0Y2MxZDUyOTM4MTYzNTZmZTNlOGM3YzcxMjlkYy4uMTliNjM1OWMxNTVhNDAy
ZTk4ODFkMTRkNWJjMjE1YTUyNGRkZDczOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMv
TWlncmF0ZUhlYWRlcnMubWFrZQorKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9NaWdyYXRlSGVhZGVy
cy5tYWtlCkBAIC0xOTAsMTAgKzE5MCw1MiBAQCBhbGwgOiBcCiAgICAgJChQVUJMSUNfSEVBREVS
U19ESVIpL25wdHlwZXMuaCBcCiAjCiAKK2lmZXEgKCQoZmluZHN0cmluZyBXVEZfUExBVEZPUk1f
SU9TLCQoRkVBVFVSRV9ERUZJTkVTKSksIFdURl9QTEFURk9STV9JT1MpCisKK2FsbCA6IFwKKyAg
ICAkKFBVQkxJQ19IRUFERVJTX0RJUikvRE9NR2VzdHVyZUV2ZW50LmggXAorICAgICQoUFJJVkFU
RV9IRUFERVJTX0RJUikvRE9NSFRNTFRleHRBcmVhRWxlbWVudFByaXZhdGUuaCBcCisgICAgJChQ
VUJMSUNfSEVBREVSU19ESVIpL0RPTVRvdWNoLmggXAorICAgICQoUFVCTElDX0hFQURFUlNfRElS
KS9ET01Ub3VjaEV2ZW50LmggXAorICAgICQoUFVCTElDX0hFQURFUlNfRElSKS9ET01Ub3VjaExp
c3QuaCBcCisgICAgJChQUklWQVRFX0hFQURFUlNfRElSKS9ET01VSUtpdEV4dGVuc2lvbnMuaCBc
CisgICAgJChQUklWQVRFX0hFQURFUlNfRElSKS9LZXlFdmVudENvZGVzSU9TLmggXAorICAgICQo
UFJJVkFURV9IRUFERVJTX0RJUikvTWVkaWFQbGF5ZXJQcm94eS5oIFwKKyAgICAkKFBSSVZBVEVf
SEVBREVSU19ESVIpL1BsdWdpbkRhdGEuaCBcCisgICAgJChQUklWQVRFX0hFQURFUlNfRElSKS9T
Y3JvbGxUeXBlcy5oIFwKKyAgICAkKFBSSVZBVEVfSEVBREVSU19ESVIpL1N5c3RlbU1lbW9yeS5o
IFwKKyAgICAkKFBSSVZBVEVfSEVBREVSU19ESVIpL1dBS0FwcEtpdFN0dWJzLmggXAorICAgICQo
UFJJVkFURV9IRUFERVJTX0RJUikvV0FLUmVzcG9uZGVyLmggXAorICAgICQoUFJJVkFURV9IRUFE
RVJTX0RJUikvV0FLU2Nyb2xsVmlldy5oIFwKKyAgICAkKFBSSVZBVEVfSEVBREVSU19ESVIpL1dB
S1ZpZXcuaCBcCisgICAgJChQUklWQVRFX0hFQURFUlNfRElSKS9XQUtWaWV3UHJpdmF0ZS5oIFwK
KyAgICAkKFBSSVZBVEVfSEVBREVSU19ESVIpL1dBS1dpbmRvdy5oIFwKKyAgICAkKFBSSVZBVEVf
SEVBREVSU19ESVIpL1dLQ29udGVudE9ic2VydmF0aW9uLmggXAorICAgICQoUFJJVkFURV9IRUFE
RVJTX0RJUikvV0tHcmFwaGljcy5oIFwKKyAgICAkKFBSSVZBVEVfSEVBREVSU19ESVIpL1dLVHlw
ZXMuaCBcCisgICAgJChQUklWQVRFX0hFQURFUlNfRElSKS9XS1V0aWxpdGllcy5oIFwKKyAgICAk
KFBSSVZBVEVfSEVBREVSU19ESVIpL1dLVmlldy5oIFwKKyAgICAkKFBSSVZBVEVfSEVBREVSU19E
SVIpL1dlYkF1dG9jYXBpdGFsaXplLmggXAorICAgICQoUFJJVkFURV9IRUFERVJTX0RJUikvV2Vi
Q29yZUZyYW1lVmlldy5oIFwKKyAgICAkKFBSSVZBVEVfSEVBREVSU19ESVIpL1dlYkNvcmVUaHJl
YWQuaCBcCisgICAgJChQUklWQVRFX0hFQURFUlNfRElSKS9XZWJDb3JlVGhyZWFkTWVzc2FnZS5o
IFwKKyAgICAkKFBSSVZBVEVfSEVBREVSU19ESVIpL1dlYkNvcmVUaHJlYWRSdW4uaCBcCisgICAg
JChQUklWQVRFX0hFQURFUlNfRElSKS9XZWJFdmVudC5oIFwKKyAgICAkKFBSSVZBVEVfSEVBREVS
U19ESVIpL1dlYkV2ZW50UmVnaW9uLmggXAorCitlbmRpZgorCiBSRVBMQUNFX1JVTEVTID0gLWUg
cy9cPFdlYkNvcmUvXDxXZWJLaXQvIC1lIHMvRE9NRE9NSW1wbGVtZW50YXRpb24vRE9NSW1wbGVt
ZW50YXRpb24vCiBIRUFERVJfTUlHUkFURV9DTUQgPSBzZWQgJChSRVBMQUNFX1JVTEVTKSAkPCA+
ICRACiBQVUJMSUNfSEVBREVSX0NIRUNLX0NNRCA9IEBpZiBncmVwIC1xICJBVkFJTEFCTEUuKlRC
RCIgIiQ8IjsgdGhlbiBsaW5lPSQkKGF3ayAiL0FWQUlMQUJMRS4qVEJELyB7IHByaW50IEZOUjsg
ZXhpdCB9IiAiJDwiICk7IGVjaG8gIiQ8OiQkbGluZTogZXJyb3I6IEEgY2xhc3Mgd2l0aGluIGEg
cHVibGljIGhlYWRlciBoYXMgdW5zcGVjaWZpZWQgYXZhaWxhYmlsaXR5LiI7IGZhbHNlOyBmaQog
CitpZmVxICgkKGZpbmRzdHJpbmcgV1RGX1BMQVRGT1JNX0lPUywkKEZFQVRVUkVfREVGSU5FUykp
LCBXVEZfUExBVEZPUk1fSU9TKQorCiskKFBSSVZBVEVfSEVBREVSU19ESVIpL1dBS1Njcm9sbFZp
ZXcuaCA6IFdBS1Njcm9sbFZpZXcuaCBNaWdyYXRlSGVhZGVycy5tYWtlCisJY2F0ICQ8ICQoUFJP
Q0VTU19IRUFERVJfRk9SX01BQ09TWF9UQVJHRVRfQ01EKSA+ICRACisKK2VuZGlmCisKICQoUFVC
TElDX0hFQURFUlNfRElSKS9ET00lIDogRE9NRE9NJSBNaWdyYXRlSGVhZGVycy5tYWtlCiAJJChQ
VUJMSUNfSEVBREVSX0NIRUNLX0NNRCkKIAkkKEhFQURFUl9NSUdSQVRFX0NNRCkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvbWFjL3NjcnViLWlmZGVmcy5wbCBiL1NvdXJjZS9XZWJLaXQvbWFj
L3NjcnViLWlmZGVmcy5wbApuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40Y2I5ZDgxMTdhODYwZWI4MzEyYjFmOTI4YjZl
YzU3ZDk5OWZmOTJjCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9tYWMvc2NydWIt
aWZkZWZzLnBsCkBAIC0wLDAgKzEsMzI4IEBACisjIS91c3IvYmluL3BlcmwgLXcKKyMKKyMgQ29w
eXJpZ2h0IChDKSAyMDA3LCAyMDA4LCAyMDA5LCAyMDEwLCAyMDExIEFwcGxlIEluYy4gIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoK
KyMgMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisjICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorIyAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQgQU5ZCisjIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFIElNUExJRUQKKyMgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorIyBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyMg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMKKyMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworIyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04KKyMgQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKKyMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisKK3VzZSBzdHJpY3Q7Cit1c2Ugd2FybmluZ3M7CisKK3VzZSBGaWxlOjpCYXNlbmFtZTsKK3Vz
ZSBGaWxlOjpGaW5kOwordXNlIEZpbGU6OlRlbXAgcXcodGVtcGZpbGUpOwordXNlIEdldG9wdDo6
TG9uZzsKKworc3ViIGVuYWJsZU1hY3JvcygkKTsKK3N1YiBmZWF0dXJlRGVmaW5lcygpOworc3Vi
IGZpbmRGaWxlcyhcQCk7CitzdWIgbmVnYXRlTWFjcm8oJCk7CitzdWIgcHJvY2VzcygkKTsKKwor
bXkgJHNob3dIZWxwID0gMDsKK215ICRibGFua0xpbmVzOworbXkgJHZlcmJvc2UgPSAwOworCitt
eSAkcmVzdWx0ID0gR2V0T3B0aW9ucygKKyAgICAiaGVscCIgICAgICAgID0+IFwkc2hvd0hlbHAs
CisgICAgImJsYW5rLWxpbmVzIiA9PiBcJGJsYW5rTGluZXMsCisgICAgInZlcmJvc2UiICAgICA9
PiBcJHZlcmJvc2UsCispOworaWYgKCEkcmVzdWx0IHx8ICRzaG93SGVscCB8fCAhQEFSR1YpIHsK
KyAgICBwcmludCBTVERFUlIgYmFzZW5hbWUoJDApIC4gIiBbLWh8LS1oZWxwXSBbLS1ibGFuay1s
aW5lc10gWy12fC0tdmVyYm9zZV0gZGlyMSBbZGlyMiAuLi5dXG4iOworICAgIGV4aXQgMTsKK30K
KworbXkgQGtlZXBNYWNyb3MgPSAoZmVhdHVyZURlZmluZXMoKSwgZW5hYmxlTWFjcm9zKDEpKTsK
K215IEBkZWxldGVNYWNyb3MgPSAoZW5hYmxlTWFjcm9zKDApKTsKKworZGllICJQTEFURk9STV9O
QU1FIGVudmlyb25tZW50IHZhcmlhYmxlIG5vdCBkZWZpbmVkIiBpZiAhZXhpc3RzICRFTlZ7UExB
VEZPUk1fTkFNRX0gb3IgISRFTlZ7UExBVEZPUk1fTkFNRX07CisKK2lmICgkRU5We1BMQVRGT1JN
X05BTUV9IGVxICJtYWNvc3giKSB7CisgICAgcHVzaCBAZGVsZXRlTWFjcm9zLCAiUExBVEZPUk0o
SU9TKSIsICJQTEFURk9STShJT1NfU0lNVUxBVE9SKSIsICJFTkFCTEUoSU9TX0dFU1RVUkVfRVZF
TlRTKSI7Cit9IGVsc2lmICgkRU5We1BMQVRGT1JNX05BTUV9IGVxICJpcGhvbmVvcyIpIHsKKyAg
ICBwdXNoIEBrZWVwTWFjcm9zLCAiUExBVEZPUk0oSU9TKSI7CisgICAgcHVzaCBAZGVsZXRlTWFj
cm9zLCAiUExBVEZPUk0oSU9TX1NJTVVMQVRPUikiOworfSBlbHNpZiAoJEVOVntQTEFURk9STV9O
QU1FfSBlcSAiaXBob25lc2ltdWxhdG9yIikgeworICAgIHB1c2ggQGtlZXBNYWNyb3MsICJQTEFU
Rk9STShJT1MpIiwgIlBMQVRGT1JNKElPU19TSU1VTEFUT1IpIjsKK30gZWxzZSB7CisgICAgZGll
ICJVbmtub3duIFBMQVRGT1JNX05BTUUgPSAkRU5We1BMQVRGT1JNX05BTUV9IjsKK30KKworbXkg
JWtlZXBfaWZkZWZzID0gbWFwIHsgJF8gPT4gMSB9IEBrZWVwTWFjcm9zLCAobWFwIHsgbmVnYXRl
TWFjcm8oJF8pIH0gQGRlbGV0ZU1hY3Jvcyk7CitteSAlZGVsZXRlX2lmZGVmcyA9IG1hcCB7ICRf
ID0+IDEgfSBAZGVsZXRlTWFjcm9zLCAobWFwIHsgbmVnYXRlTWFjcm8oJF8pIH0gQGtlZXBNYWNy
b3MpOworCitteSAka2VlcF9pZmRlZnNfcmVnZXggPSBqb2luKCJ8IiwgbWFwIHsgcXVvdGVtZXRh
KCRfKSB9IGtleXMgJWtlZXBfaWZkZWZzKTsKK215ICRkZWxldGVfaWZkZWZzX3JlZ2V4ID0gam9p
bigifCIsIG1hcCB7IHF1b3RlbWV0YSgkXykgfSBrZXlzICVkZWxldGVfaWZkZWZzKTsKKworbXkg
QGZpbGVzOworZmluZEZpbGVzKEBBUkdWKTsKKworZm9yIG15ICRmaWxlIChAZmlsZXMpIHsKKyAg
ICBwcmludCAiUHJvY2Vzc2luZyAkZmlsZS4uLlxuIiBpZiAkdmVyYm9zZTsKKyAgICBwcm9jZXNz
KCRmaWxlKTsKK30KKworcHJpbnQgIkRvbmUhXG4iIGlmICR2ZXJib3NlOworCitleGl0IDA7CisK
K3N1YiBlbmFibGVNYWNyb3MoJCkKK3sKKyAgICBteSAoJG1hY3JvVmFsdWUpID0gQF87CisgICAg
bXkgQHJlc3VsdCA9ICgpOworCisgICAgaWYgKCRtYWNyb1ZhbHVlIG5lICIwIiBhbmQgJG1hY3Jv
VmFsdWUgbmUgIjEiKSB7CisgICAgICAgIHdhcm4gIkludmFsaWQgdmFsdWUgcGFzc2VkIHRvIGVu
YWJsZU1hY3JvcygpIjsKKyAgICAgICAgcmV0dXJuIEByZXN1bHQ7CisgICAgfQorCisgICAgaWYg
KCFleGlzdHMgJEVOVntTREtST09UfSBvciAhJEVOVntTREtST09UfSkgeworICAgICAgICB3YXJu
ICJTREtST09UIGVudmlyb25tZW50IHZhcmlhYmxlIG5vdCBmb3VuZCI7CisgICAgICAgIHJldHVy
biBAcmVzdWx0OworICAgIH0KKworICAgIGNob21wIChteSAkY2MgPSBgeGNydW4gLWZpbmQgY2Mg
LXNkayAkRU5We1NES1JPT1R9YCk7CisgICAgbXkgQGFyZ3MgPSBxdygtRSAtZE0gLWluY2x1ZGUg
d3RmL1BsYXRmb3JtLmgpOworICAgICMgU2V0IGZyYW1ld29yayBzZWFyY2ggcGF0aHMgdG8gZmlu
ZCA8SmF2YVNjcmlwdENvcmUvUGxhdGZvcm0uaD4uICBXaXRob3V0IHRoZXNlLCBjYworICAgICMg
ZmluZHMgL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvSmF2YVNjcmlwdENvcmUuZnJhbWV3b3Jr
L1ByaXZhdGVIZWFkZXJzL1BsYXRmb3JtLmgKKyAgICAjIG9yIGNvbXBsYWlucyBpZiB5b3UgZG9u
J3QgaGF2ZSB0aGF0IGluc3RhbGxlZC4gIFdlIHNlYXJjaCBCVUlMVF9QUk9EVUNUU19ESVIgZmly
c3QKKyAgICAjIGZvciBsb2NhbCBkZXZlbG9wZXIgYnVpbGRzLCB0aGVuIHRoZSBpbnN0YWxsYXRp
b24gcGF0aCBmb3IgQiZJIGJ1aWxkcy4KKyAgICBwdXNoKEBhcmdzLCAiLUYiIC4gJEVOVntCVUlM
VF9QUk9EVUNUU19ESVJ9KSBpZiAkRU5We0JVSUxUX1BST0RVQ1RTX0RJUn07CisgICAgcHVzaChA
YXJncywgIi1JIiAuICRFTlZ7QlVJTFRfUFJPRFVDVFNfRElSfSAuICIvdXNyL2xvY2FsL2luY2x1
ZGUiKSBpZiAkRU5We0JVSUxUX1BST0RVQ1RTX0RJUn07CisgICAgcHVzaChAYXJncywgIi1JIiAu
ICRFTlZ7QlVJTFRfUFJPRFVDVFNfRElSfSAuICRFTlZ7U0RLUk9PVH0gLiAiL3Vzci9sb2NhbC9p
bmNsdWRlIikgaWYgJEVOVntCVUlMVF9QUk9EVUNUU19ESVJ9OworICAgICMgWGNvZGUgMy4xIGlz
IHJlcXVpcmVkIGZvciBTREtST09UIHRvIGJlIHNldC4KKyAgICAjIFhjb2RlIDMuMSBpcyByZXF1
aXJlZCBmb3IgU0RLUk9PVCB0byBiZSBzZXQuCisgICAgaWYgKGV4aXN0cyAkRU5We1NZU1RFTV9M
SUJSQVJZX0RJUn0gJiYgJEVOVntTWVNURU1fTElCUkFSWV9ESVJ9KSB7CisgICAgICAgIG15ICRm
cmFtZXdvcmtTZWFyY2hQYXRoID0gJEVOVntTREtST09UfSAuICRFTlZ7U1lTVEVNX0xJQlJBUllf
RElSfTsKKyAgICAgICAgaWYgKCRFTlZ7UExBVEZPUk1fTkFNRX0gZXEgImlwaG9uZW9zIiB8fCAk
RU5We1BMQVRGT1JNX05BTUV9IGVxICJpcGhvbmVzaW11bGF0b3IiKSB7CisgICAgICAgICAgICAk
ZnJhbWV3b3JrU2VhcmNoUGF0aCAuPSAiL1ByaXZhdGVGcmFtZXdvcmtzIjsKKyAgICAgICAgfSBl
bHNlIHsKKyAgICAgICAgICAgICRmcmFtZXdvcmtTZWFyY2hQYXRoIC49ICIvRnJhbWV3b3JrcyI7
CisgICAgICAgIH0KKyAgICAgICAgcHVzaChAYXJncywgIi1GIiAuICRmcmFtZXdvcmtTZWFyY2hQ
YXRoKTsKKyAgICB9CisKKyAgICBwdXNoKEBhcmdzLCAiLUkiIC4gJEVOVntCVUlMVF9QUk9EVUNU
U19ESVJ9IC4gJEVOVntTREtST09UfSAuICIvdXNyL2xvY2FsL2luY2x1ZGUiKSBpZiAkRU5We0JV
SUxUX1BST0RVQ1RTX0RJUn07CisgICAgcHVzaChAYXJncywgIi1JIiAuICRFTlZ7U0RLUk9PVH0g
LiAiL3Vzci9sb2NhbC9pbmNsdWRlIik7CisKKyAgICAjIE1ha2Ugc3VyZSBjYyBrbm93cyB3aGlj
aCBTREsgd2UncmUgdXNpbmcuCisgICAgcHVzaChAYXJncywgIi1pc3lzcm9vdCIsICRFTlZ7U0RL
Uk9PVH0pOworCisgICAgIyBXZSBvbmx5IG5lZWQgb25lIC1hcmNoIGZsYWcgd2hlbiBwcmVwcm9j
ZXNzaW5nIHdpdGggLWlzeXNyb290IHNldC4KKyAgICBteSBAYXJjaHMgPSBncmVwIHsgJF8gfSBz
cGxpdCgvXHMrLywgJEVOVntBUkNIU30pOworICAgIHB1c2goQGFyZ3MsICItYXJjaCIsICRhcmNo
c1swXSk7CisKKyAgICAjIENvbXBpbGUgd2l0aCBzYW1lIEZlYXR1cmVEZWZpbmVzIGl0IHdvdWxk
IG5vcm1hbGx5IGJlIGNvbXBpbGVkIHdpdGguCisgICAgbXkgQGZlYXR1cmVEZWZpbmVzID0gZmVh
dHVyZURlZmluZXMoKTsKKyAgICBmb3JlYWNoIChAZmVhdHVyZURlZmluZXMpIHsKKyAgICAgICAg
cHVzaChAYXJncywgIi1EJF8iKSBpZiAkXyA9fiAvXkVOQUJMRV8vOworICAgIH0KKworICAgIG9w
ZW4oQ0MsICItfCIsIHFxe2VjaG8gIiIgfCAiJGNjIiB9IC4gam9pbigiICIsIEBhcmdzLCAiLSIp
KSBvciBkaWUgIiQhIjsKKyAgICB3aGlsZSAobXkgJG1hY3JvID0gPENDPikgeworICAgICAgICBp
ZiAoJG1hY3JvID1+IC9eI2RlZmluZSAoRU5BQkxFX1tBLVpfXSspICRtYWNyb1ZhbHVlJC8gfHwg
JG1hY3JvID1+IC9eI2RlZmluZSAoV1RGX1VTRV9bQS1aX10rKSAkbWFjcm9WYWx1ZSQvKSB7Cisg
ICAgICAgICAgICBwdXNoIEByZXN1bHQsICQxOworICAgICAgICB9CisgICAgfQorICAgIGNsb3Nl
KENDKSBvciBkaWUgIiQhIjsKKworICAgIG15IEBtYWNyb3MgPSBncmVwIHsgbS9eRU5BQkxFXygu
KykkLyB8fCBtL15XVEZfVVNFXyguKykkLyB8fCAoKSB9IEByZXN1bHQ7CisgICAgQHJlc3VsdCA9
IChAbWFjcm9zKTsKKyAgICBwdXNoKEByZXN1bHQsIGdyZXAgeyBzL15FTkFCTEVfKC4rKSQvRU5B
QkxFKCQxKS8gfHwgcy9eV1RGX1VTRV8oLispJC9VU0UoJDEpLyB8fCAoKSB9IEBtYWNyb3MpOwor
ICAgIHJldHVybiBAcmVzdWx0OworfQorCitzdWIgZmVhdHVyZURlZmluZXMoKQoreworICAgIG15
IEBmZWF0dXJlcyA9IGdyZXAgeyAkXyB8fCAoKSB9IHNwbGl0KC9ccysvLCAkRU5We0ZFQVRVUkVf
REVGSU5FU30pOworICAgIG15IEByZXN1bHRzID0gKEBmZWF0dXJlcyk7CisgICAgcHVzaChAcmVz
dWx0cywgZ3JlcCB7IHMvXkVOQUJMRV8oLispJC9FTkFCTEUoJDEpLyB8fCAoKSB9IEBmZWF0dXJl
cyk7CisgICAgcmV0dXJuIEByZXN1bHRzOworfQorCitzdWIgZmluZEZpbGVzKFxAKQoreworICAg
IG15ICgkZGlycykgPSBAXzsKKworICAgIG15ICR3YW50ZWQgPSBzdWIgeworICAgICAgICBpZiAo
LWYgIiRGaWxlOjpGaW5kOjpuYW1lIikgeworICAgICAgICAgICAgbXkgJGNvbnRlbnRzOworICAg
ICAgICAgICAgb3BlbihGSUxFLCAiPCIsICRGaWxlOjpGaW5kOjpuYW1lKSBvciBkaWUgIiQhIjsK
KyAgICAgICAgICAgIHsgbG9jYWwgJC8gPSB1bmRlZjsgJGNvbnRlbnRzID0gPEZJTEU+OyB9Cisg
ICAgICAgICAgICBjbG9zZShGSUxFKSBvciBkaWUgIiQhIjsKKyAgICAgICAgICAgIGlmICgkY29u
dGVudHMgPX4gLyRrZWVwX2lmZGVmc19yZWdleC9tIHx8ICRjb250ZW50cyA9fiAvJGRlbGV0ZV9p
ZmRlZnNfcmVnZXgvbSkgeworICAgICAgICAgICAgICAgIHB1c2goQGZpbGVzLCAkRmlsZTo6Rmlu
ZDo6bmFtZSk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0K
KyAgICAgICAgJEZpbGU6OkZpbmQ6OnBydW5lID0gMSBpZiAoLWQgJEZpbGU6OkZpbmQ6Om5hbWUg
JiYgYmFzZW5hbWUoJEZpbGU6OkZpbmQ6Om5hbWUpIGVxICIuc3ZuIik7CisgICAgfTsKKworICAg
IGZpbmQoeyB3YW50ZWQgPT4gJHdhbnRlZCwgbm9fY2hkaXIgPT4gMSB9LCBAJGRpcnMpOworfQor
CitzdWIgbmVnYXRlTWFjcm8oJCkKK3sKKyAgICBteSAoJG1hY3JvKSA9IEBfOworICAgIHJldHVy
biBzdWJzdHIoJG1hY3JvLCAxKSBpZiBzdWJzdHIoJG1hY3JvLCAwLCAxKSBlcSAiISI7CisgICAg
cmV0dXJuICIhIiAuICRtYWNybzsKK30KKworc3ViIHByb2Nlc3MoJCkKK3sKKyAgICBteSAoJGZp
bGUpID0gQF87CisKKyAgICBteSAoJEZILCAkdGVtcEZpbGUpID0gdGVtcGZpbGUoYmFzZW5hbWUo
JDApIC4gIi1YWFhYWFhYWCIsIERJUiA9PiAkRU5We1RFTVBfRElSfSB8fCAiLiIpOworICAgIHNl
bGVjdCgkRkgpOworCisgICAgbXkgQGlmZGVmU3RhY2sgPSAoIiIpOworICAgIG15IEB3cml0ZVN0
YWNrID0gKDEpOworCisgICAgbXkgJGRlZmluZWRfY3BsdXNwbHVzID0gcXVvdGVtZXRhKCJkZWZp
bmVkKF9fY3BsdXNwbHVzKSIpOworCisgICAgb3BlbihJTiwgJGZpbGUpIHx8IGRpZSAkITsKKwor
ICAgIHdoaWxlIChteSAkbCA9IDxJTj4pIHsKKyAgICAgICAgaWYgKCRsID1+IG0vXlxzKiNccyoo
aW5jbHVkZXxpbXBvcnQpXHMrKDwod3RmfEphdmFTY3JpcHRDb3JlKVwvUGxhdGZvcm0uaD4pXHMq
JC8pIHsKKyAgICAgICAgICAgIHByaW50IFNUREVSUiAiV0FSTklORzogU2hvdWxkIG5vdCAjJDEg
JDIgaW4gJGZpbGUuXG4iOworICAgICAgICB9CisgICAgICAgIGlmICgkbCA9fiBtL14oXHMqI1xz
KmlmXHMrKSgoKFteXHNdKylccytcJlwmXHMrKSspKigkZGVsZXRlX2lmZGVmc19yZWdleClccyoo
KFwmXCZccysoW15cc10rKVxzKikrKSokLykgeworICAgICAgICAgICAgcHVzaChAaWZkZWZTdGFj
aywgJDUpOworICAgICAgICAgICAgcHVzaChAd3JpdGVTdGFjaywgMCk7CisgICAgICAgICAgICBp
ZiAoJGJsYW5rTGluZXMpIHsKKyAgICAgICAgICAgICAgICBwcmludCAiXG4iOworICAgICAgICAg
ICAgfQorICAgICAgICB9CisgICAgICAgIGVsc2lmICgkbCA9fiBtL14oXHMqI1xzKmlmXHMrKSgo
KFteXHNdKylccytcfFx8XHMrKSspKigka2VlcF9pZmRlZnNfcmVnZXgpXHMqKChcfFx8XHMrKFte
XHNdKylccyopKykqJC8pIHsKKyAgICAgICAgICAgIHB1c2goQGlmZGVmU3RhY2ssICQ1KTsKKyAg
ICAgICAgICAgIHB1c2goQHdyaXRlU3RhY2ssICR3cml0ZVN0YWNrWyQjd3JpdGVTdGFja10gJiYg
MSk7CisgICAgICAgICAgICBpZiAoJGJsYW5rTGluZXMpIHsKKyAgICAgICAgICAgICAgICBwcmlu
dCAiXG4iOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGVsc2lmICgkbCA9fiBt
L14oXHMqI1xzKmlmXHMrKSgkZGVsZXRlX2lmZGVmc19yZWdleClccytcfFx8XHMrKFteXHNdKylc
cyokLykgeworICAgICAgICAgICAgcHVzaChAaWZkZWZTdGFjaywgJDMpOworICAgICAgICAgICAg
cHVzaChAd3JpdGVTdGFjaywgJHdyaXRlU3RhY2tbJCN3cml0ZVN0YWNrXSAmJiAxKTsKKyAgICAg
ICAgICAgIHByaW50ICIkMSQzXG4iOworICAgICAgICB9CisgICAgICAgIGVsc2lmICgkbCA9fiBt
L14oXHMqI1xzKmlmXHMrKSgka2VlcF9pZmRlZnNfcmVnZXgpXHMrXCZcJlxzKyhbXlxzXSspXHMq
JC8pIHsKKyAgICAgICAgICAgIHB1c2goQGlmZGVmU3RhY2ssICQzKTsKKyAgICAgICAgICAgIHB1
c2goQHdyaXRlU3RhY2ssICR3cml0ZVN0YWNrWyQjd3JpdGVTdGFja10gJiYgMSk7CisgICAgICAg
ICAgICBwcmludCAiJDEkM1xuIjsKKyAgICAgICAgfQorICAgICAgICBlbHNpZiAoJGwgPX4gbS9e
XHMqI1xzKmlmKGRlZik/XHMrKCRrZWVwX2lmZGVmc19yZWdleClccyokLykgeworICAgICAgICAg
ICAgcHVzaChAaWZkZWZTdGFjaywgJDIpOworICAgICAgICAgICAgcHVzaChAd3JpdGVTdGFjaywg
JHdyaXRlU3RhY2tbJCN3cml0ZVN0YWNrXSAmJiAxKTsKKyAgICAgICAgICAgIGlmICgkYmxhbmtM
aW5lcykgeworICAgICAgICAgICAgICAgIHByaW50ICJcbiI7CisgICAgICAgICAgICB9CisgICAg
ICAgIH0KKyAgICAgICAgZWxzaWYgKCRsID1+IG0vXlxzKiNccyppZihuZGVmXHMrfFxzK1whXHMq
KSgka2VlcF9pZmRlZnNfcmVnZXgpXHMqJC8pIHsKKyAgICAgICAgICAgIHB1c2goQGlmZGVmU3Rh
Y2ssIG5lZ2F0ZU1hY3JvKCQyKSk7CisgICAgICAgICAgICBwdXNoKEB3cml0ZVN0YWNrLCAwKTsK
KyAgICAgICAgICAgIGlmICgkYmxhbmtMaW5lcykgeworICAgICAgICAgICAgICAgIHByaW50ICJc
biI7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgZWxzaWYgKCRsID1+IG0vXlxz
KiNccyppZlxzKygkZGVsZXRlX2lmZGVmc19yZWdleClccyokLykgeworICAgICAgICAgICAgcHVz
aChAaWZkZWZTdGFjaywgJDEpOworICAgICAgICAgICAgcHVzaChAd3JpdGVTdGFjaywgMCk7Cisg
ICAgICAgICAgICBpZiAoJGJsYW5rTGluZXMpIHsKKyAgICAgICAgICAgICAgICBwcmludCAiXG4i
OworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGVsc2lmICgkbCA9fiBtL15ccyoj
XHMqaWYoZGVmKT9ccysoLispXHMqJC8pIHsKKyAgICAgICAgICAgIHB1c2goQGlmZGVmU3RhY2ss
ICQyKTsKKyAgICAgICAgICAgIHB1c2goQHdyaXRlU3RhY2ssICR3cml0ZVN0YWNrWyQjd3JpdGVT
dGFja10gJiYgMSk7CisgICAgICAgICAgICBpZiAoJHdyaXRlU3RhY2tbJCN3cml0ZVN0YWNrXSkg
eworICAgICAgICAgICAgICAgIHByaW50ICRsOworICAgICAgICAgICAgfQorICAgICAgICAgICAg
ZWxzaWYgKCRibGFua0xpbmVzKSB7CisgICAgICAgICAgICAgICAgcHJpbnQgIlxuIjsKKyAgICAg
ICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBlbHNpZiAoJGwgPX4gbS9eXHMqI1xzKmlmKG5k
ZWZccyt8XHMrXCFccyopKC4rKVxzKiQvKSB7CisgICAgICAgICAgICBwdXNoKEBpZmRlZlN0YWNr
LCBuZWdhdGVNYWNybygkMikpOworICAgICAgICAgICAgcHVzaChAd3JpdGVTdGFjaywgJHdyaXRl
U3RhY2tbJCN3cml0ZVN0YWNrXSAmJiAxKTsKKyAgICAgICAgICAgIGlmICgkd3JpdGVTdGFja1sk
I3dyaXRlU3RhY2tdKSB7CisgICAgICAgICAgICAgICAgcHJpbnQgJGw7CisgICAgICAgICAgICB9
CisgICAgICAgICAgICBlbHNpZiAoJGJsYW5rTGluZXMpIHsKKyAgICAgICAgICAgICAgICBwcmlu
dCAiXG4iOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGVsc2lmICgkbCA9fiBt
L15ccyojXHMqZWxzZVxzKi8pIHsKKyAgICAgICAgICAgIG15ICR0b3AgPSAkaWZkZWZTdGFja1sk
I2lmZGVmU3RhY2tdOworICAgICAgICAgICAgaWYgKCR3cml0ZVN0YWNrWyQjd3JpdGVTdGFja10g
JiYgISBleGlzdHMgJGtlZXBfaWZkZWZzeyR0b3B9ICYmICEgZXhpc3RzICRkZWxldGVfaWZkZWZz
eyR0b3B9KSB7CisgICAgICAgICAgICAgICAgcHJpbnQgJGw7CisgICAgICAgICAgICB9CisgICAg
ICAgICAgICBlbHNpZiAoJGJsYW5rTGluZXMpIHsKKyAgICAgICAgICAgICAgICBwcmludCAiXG4i
OworICAgICAgICAgICAgfQorICAgICAgICAgICAgJGlmZGVmU3RhY2tbJCNpZmRlZlN0YWNrXSA9
IG5lZ2F0ZU1hY3JvKCR0b3ApOworICAgICAgICAgICAgaWYgKGV4aXN0cyAka2VlcF9pZmRlZnN7
JGlmZGVmU3RhY2tbJCNpZmRlZlN0YWNrXX0pIHsKKyAgICAgICAgICAgICAgICBwb3AoQHdyaXRl
U3RhY2spOworICAgICAgICAgICAgICAgIHB1c2goQHdyaXRlU3RhY2ssICR3cml0ZVN0YWNrWyQj
d3JpdGVTdGFja10gJiYgMSk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNpZiAoZXhp
c3RzICRkZWxldGVfaWZkZWZzeyRpZmRlZlN0YWNrWyQjaWZkZWZTdGFja119KSB7CisgICAgICAg
ICAgICAgICAgcG9wKEB3cml0ZVN0YWNrKTsKKyAgICAgICAgICAgICAgICBwdXNoKEB3cml0ZVN0
YWNrLCAwKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBlbHNpZiAoJGwgPX4g
bS9eXHMqI1xzKmVuZGlmXHMqLykgeworICAgICAgICAgICAgbXkgJHRvcCA9IHBvcChAaWZkZWZT
dGFjayk7CisgICAgICAgICAgICBpZiAoJHRvcCA9fiBtLyRkZWZpbmVkX2NwbHVzcGx1cy8pIHsK
KyAgICAgICAgICAgICAgICAkbCA9ICIjZW5kaWZcbiI7CisgICAgICAgICAgICB9CisgICAgICAg
ICAgICBteSAkdG9wV3JpdGVTdGFjayA9IHBvcChAd3JpdGVTdGFjayk7CisgICAgICAgICAgICBp
ZiAoJHRvcFdyaXRlU3RhY2sgJiYgISBleGlzdHMgJGtlZXBfaWZkZWZzeyR0b3B9ICYmICEgZXhp
c3RzICRkZWxldGVfaWZkZWZzeyR0b3B9KSB7CisgICAgICAgICAgICAgICAgcHJpbnQgJGw7Cisg
ICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNpZiAoJGJsYW5rTGluZXMpIHsKKyAgICAgICAg
ICAgICAgICBwcmludCAiXG4iOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGVs
c2UgeworICAgICAgICAgICAgaWYgKCR3cml0ZVN0YWNrWyQjd3JpdGVTdGFja10pIHsKKyAgICAg
ICAgICAgICAgICBwcmludCAkbDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2lmICgk
YmxhbmtMaW5lcykgeworICAgICAgICAgICAgICAgIHByaW50ICJcbiI7CisgICAgICAgICAgICB9
CisgICAgICAgIH0KKyAgICB9CisKKyAgICBjbG9zZShJTik7CisgICAgY2xvc2UoJEZIKTsKKyAg
ICBzZWxlY3QoU1RET1VUKTsKKworICAgIHVubGluaygkZmlsZSkgfHwgZGllICIkISI7CisgICAg
c3lzdGVtKHF3KG12IC1mKSwgJHRlbXBGaWxlLCAkZmlsZSk7CisgICAgaWYgKCQ/ID4+IDggIT0g
MCkgeworICAgICAgICBkaWUgIkNvdWxkIG5vdCByZW5hbWUgJHRlbXBGaWxlIHRvICRmaWxlOiAk
ISI7CisgICAgfQorCisgICAgbXkgJGZpbGVDb3VudCA9IGNobW9kIDA2NDQsICRmaWxlOworICAg
IGlmICgkZmlsZUNvdW50ICE9IDEpIHsKKyAgICAgICAgZGllICJDb3VsZCBub3QgY2htb2QgMDY0
NCAkZmlsZTogJCEiOworICAgIH0KK30KKwpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIv
VG9vbHMvQ2hhbmdlTG9nCmluZGV4IGU1NjBlN2RkNmYxNDg0ZGFhMjYzZjAyOTM2ZDBhZmMxZmMz
YjVhNWYuLjhjYmQyOGY1OGE5MDUxMDFhZjRiMTE5N2FlNWIwODk0NjZhNzdjOGUgMTAwNjQ0Ci0t
LSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBA
QAorMjAxNC0wMS0wOSAgRGFuaWVsIEJhdGVzICA8ZGFiYXRlc0BhcHBsZS5jb20+CisKKyAgICAg
ICAgW2lPU10gVXBzdHJlYW0gV2ViQ29yZSBhbmQgVG9vbHMgbWlzY2VsbGFuZW91cyBjaGFuZ2Vz
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjY2OTgK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFNjcmlw
dHMvY2hlY2stZm9yLWluYXBwcm9wcmlhdGUtb2JqYy1jbGFzcy1uYW1lczoKKyAgICAgICAgKiBT
Y3JpcHRzL2NoZWNrLWZvci13ZWJraXQtZnJhbWV3b3JrLWluY2x1ZGUtY29uc2lzdGVuY3k6CisK
IDIwMTQtMDEtMDkgIFJvbGFuZCBUYWthY3MgIDxydGFrYWNzQGluZi51LXN6ZWdlZC5odT4KIAog
ICAgICAgICBNb3ZlIG15c2VsZiB0byB0aGUgY29tbWl0dGVycyBsaXN0LgpkaWZmIC0tZ2l0IGEv
VG9vbHMvU2NyaXB0cy9jaGVjay1mb3ItaW5hcHByb3ByaWF0ZS1vYmpjLWNsYXNzLW5hbWVzIGIv
VG9vbHMvU2NyaXB0cy9jaGVjay1mb3ItaW5hcHByb3ByaWF0ZS1vYmpjLWNsYXNzLW5hbWVzCmlu
ZGV4IDVlZTg0MTBiMDc5NjRmZjY0OGEwY2EzYzNlZjQzZjBkNWYxZTcwZDQuLjFkY2FmZDFmODMz
YTJmYTg5NWE1OGZhMzc5Mjg5OTkxMzQ5MTc3MTMgMTAwNzU1Ci0tLSBhL1Rvb2xzL1NjcmlwdHMv
Y2hlY2stZm9yLWluYXBwcm9wcmlhdGUtb2JqYy1jbGFzcy1uYW1lcworKysgYi9Ub29scy9TY3Jp
cHRzL2NoZWNrLWZvci1pbmFwcHJvcHJpYXRlLW9iamMtY2xhc3MtbmFtZXMKQEAgLTc4LDYgKzc4
LDM0IEBAIGlmICghZGVmaW5lZCAkZXhlY3V0YWJsZVBhdGhBZ2UgfHwgIWRlZmluZWQgJGJ1aWxk
VGltZXN0YW1wQWdlIHx8ICRleGVjdXRhYmxlUGF0CiAgICAgfQogICAgIGNsb3NlIE5NOwogCisg
ICAgIyBiZWdpbiBQTEFURk9STShJT1MpCisgICAgIyBPbiBpT1MgcHV0IGV4Y2VwdGlvbnMgaW4g
cGxhY2UgZm9yIGV4aXN0aW5nIGJhZCBuYW1lcy4gRnV0dXJlIGJhZCBuYW1lcyB3aWxsCisgICAg
IyBiZSBjYXVnaHQgYW5kIHNob3VsZCBiZSBmaXhlZCBpbW1lZGlhdGVseS4gRml4aW5nIHRoZXNl
IGlzIGNvdmVyZWQgYnk6CisgICAgIyA8cmRhcjovL3Byb2JsZW0vMTAzNjUwMDg+IEZpeCBJbmFw
cHJvcHJpYXRlIE9iamVjdGl2ZS1DIENsYXNzIE5hbWVzIGZvdW5kIGJ5IGJ1aWxkIHBoYXNlCisg
ICAgbXkgJWV4Y2VwdGlvbnMgPSAoCisgICAgICAgICMgV2ViQ29yZQorICAgICAgICAiV0tRdWFk
T2JqZWN0IiA9PiAxLAorICAgICAgICAiVGlsZUNhY2hlVG9tYnN0b25lIiA9PiAxLAorICAgICAg
ICAiVGlsZUhvc3RMYXllciIgPT4gMSwKKyAgICAgICAgIlRpbGVMYXllciIgPT4gMSwKKyAgICAg
ICAgIldBS1Jlc3BvbmRlciIgPT4gMSwKKyAgICAgICAgIk5TQ3Vyc29yIiA9PiAxLAorICAgICAg
ICAiV0FLQ2xpcFZpZXciID0+IDEsCisgICAgICAgICJXQUtTY3JvbGxWaWV3IiA9PiAxLAorICAg
ICAgICAiV0FLVmlldyIgPT4gMSwKKyAgICAgICAgIldBS1dpbmRvdyIgPT4gMSwKKyAgICAgICAg
IyBXZWJLaXQyCisgICAgICAgICJVSVdLUmVtb3RlVmlldyIgPT4gMSwKKyAgICAgICAgIlVJV0tW
aWV3IiA9PiAxLAorICAgICAgICAiVUlXS1ZpZXdEYXRhIiA9PiAxCisgICAgKTsKKyAgICBteSBA
cmVhbEJhZE5hbWVzOworICAgIGZvciBteSAkY2xhc3NOYW1lIChAYmFkTmFtZXMpIHsKKyAgICAg
ICAgcHVzaChAcmVhbEJhZE5hbWVzLCAkY2xhc3NOYW1lKSB1bmxlc3MgZXhpc3RzKCRleGNlcHRp
b25zeyRjbGFzc05hbWV9KTsKKyAgICB9CisgICAgQGJhZE5hbWVzID0gQHJlYWxCYWROYW1lczsK
KyAgICAjIGVuZCBQTEFURk9STShJT1MpCisKICAgICBpZiAoQGJhZE5hbWVzKSB7CiAKICAgICAg
ICAgbXkgJHNob3J0TmFtZSA9ICRleGVjdXRhYmxlUGF0aDsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Nj
cmlwdHMvY2hlY2stZm9yLXdlYmtpdC1mcmFtZXdvcmstaW5jbHVkZS1jb25zaXN0ZW5jeSBiL1Rv
b2xzL1NjcmlwdHMvY2hlY2stZm9yLXdlYmtpdC1mcmFtZXdvcmstaW5jbHVkZS1jb25zaXN0ZW5j
eQppbmRleCBjYzE3MzgyODg3NmY2NzFmMDZlYzMyZTlmMGQ1ZTg4MzYwNjc2ZGViLi4zMDhiMmI0
Nzc1MWQ1ZWEzZmY2NWVkZGY2NGNlYzRjMGUwMDQ5MTFiIDEwMDc1NQotLS0gYS9Ub29scy9TY3Jp
cHRzL2NoZWNrLWZvci13ZWJraXQtZnJhbWV3b3JrLWluY2x1ZGUtY29uc2lzdGVuY3kKKysrIGIv
VG9vbHMvU2NyaXB0cy9jaGVjay1mb3Itd2Via2l0LWZyYW1ld29yay1pbmNsdWRlLWNvbnNpc3Rl
bmN5CkBAIC03OCw2ICs3OCwxMCBAQCBkZWYgcmVzb2x2ZV9pbmNsdWRlKGhlYWRlciwgaW5jbHVk
ZWRfaGVhZGVyLCBwZXJtaXR0ZWRfdHlwZXMpCiAgICAgcmV0dXJuCiAgIGVuZAogCisgICMgaU9T
IHdlIHdhbnQgdG8ga2VlcCB0aGUgV0FLIGhlYWRlcnMgcHJpdmF0ZSwgZXZlbiBpZiBhIHB1Ymxp
YyBoZWFkZXIgaW5jbHVkZXMgdGhlbSwKKyAgIyBzbyB3ZSBhcmUgZ29pbmcgdG8gbm90IHNob3cg
d2FybmluZ3MgZm9yIFdBSyBoZWFkZXJzLgorICByZXR1cm4gaWYgZnJhbWV3b3JrID09ICJXZWJL
aXQiIGFuZCBpbmNsdWRlZF9oZWFkZXJfbmFtZSA9fiAvXldBSy8KKwogICBoZWFkZXJfdHlwZSA9
ICRIRUFERVJfTkFNRVNfVE9fVFlQRVtpbmNsdWRlZF9oZWFkZXJfbmFtZV0KIAogICBpZiBub3Qg
aGVhZGVyX3R5cGUK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>220746</attachid>
            <date>2014-01-09 09:47:45 -0800</date>
            <delta_ts>2014-01-09 10:12:00 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-126698-20140109094745.patch</filename>
            <type>text/plain</type>
            <size>397851</size>
            <attacher name="Daniel Bates">dbates</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTYxNTUzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggY2M4ODdhNWY3ZTFmYmJk
OTdjNGQyNDg1M2M3NzZjNzhjNGE1NzI2Zi4uNjc3ZWJjNmQ5ZmFhY2FhY2I1ZTk3MzY3YWM4ZjAz
M2VmZTg5N2U2MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQwMSBAQAorMjAxNC0wMS0wOSAgRGFu
aWVsIEJhdGVzICA8ZGFiYXRlc0BhcHBsZS5jb20+CisKKyAgICAgICAgW2lPU10gVXBzdHJlYW0g
V2ViQ29yZSBhbmQgVG9vbHMgbWlzY2VsbGFuZW91cyBjaGFuZ2VzCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjY2OTgKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIENvbmZpZ3VyYXRpb25zL0Jhc2UueGNj
b25maWc6CisgICAgICAgICogQ29uZmlndXJhdGlvbnMvV2ViQ29yZS54Y2NvbmZpZzoKKyAgICAg
ICAgKiBDb25maWd1cmF0aW9ucy9XZWJDb3JlVGVzdFN1cHBvcnQueGNjb25maWc6CisgICAgICAg
ICogQ29uZmlndXJhdGlvbnMvaU9TLnhjY29uZmlnOiBBZGRlZC4KKyAgICAgICAgKiBEZXJpdmVk
U291cmNlcy5tYWtlOgorICAgICAgICAqIEVuZ2xpc2gubHByb2ovTG9jYWxpemFibGUuc3RyaW5n
czoKKyAgICAgICAgKiBNb2R1bGVzL2FpcnBsYXkvV2ViS2l0UGxheWJhY2tUYXJnZXRBdmFpbGFi
aWxpdHlFdmVudC5jcHA6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dEFm
ZmluaXR5LmguCisgICAgICAgICogTW9kdWxlcy9haXJwbGF5L1dlYktpdFBsYXliYWNrVGFyZ2V0
QXZhaWxhYmlsaXR5RXZlbnQuaDogQWRkZWQuCisgICAgICAgICogTW9kdWxlcy9haXJwbGF5L1dl
YktpdFBsYXliYWNrVGFyZ2V0QXZhaWxhYmlsaXR5RXZlbnQuaWRsOiBDb3BpZWQgZnJvbSBTb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL0RlbGV0ZUJ1dHRvbi5oLgorICAgICAgICAqIE1vZHVsZXMvZ2Vv
bG9jYXRpb24vR2VvbG9jYXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6R2VvbG9jYXRpb246
Okdlb2xvY2F0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6Okdlb2xvY2F0aW9uOjpjYW5TdXNwZW5k
KToKKyAgICAgICAgKFdlYkNvcmU6Okdlb2xvY2F0aW9uOjpzdXNwZW5kKToKKyAgICAgICAgKFdl
YkNvcmU6Okdlb2xvY2F0aW9uOjpyZXN1bWUpOgorICAgICAgICAoV2ViQ29yZTo6R2VvbG9jYXRp
b246OnJlc3VtZVRpbWVyRmlyZWQpOgorICAgICAgICAoV2ViQ29yZTo6R2VvbG9jYXRpb246OnJl
c2V0QWxsR2VvbG9jYXRpb25QZXJtaXNzaW9uKToKKyAgICAgICAgKFdlYkNvcmU6Okdlb2xvY2F0
aW9uOjpzdG9wKToKKyAgICAgICAgKFdlYkNvcmU6Okdlb2xvY2F0aW9uOjpzZXRJc0FsbG93ZWQp
OgorICAgICAgICAoV2ViQ29yZTo6R2VvbG9jYXRpb246OnBvc2l0aW9uQ2hhbmdlZCk6CisgICAg
ICAgIChXZWJDb3JlOjpHZW9sb2NhdGlvbjo6c2V0RXJyb3IpOgorICAgICAgICAqIE1vZHVsZXMv
Z2VvbG9jYXRpb24vR2VvbG9jYXRpb24uaDoKKyAgICAgICAgKiBNb2R1bGVzL2dlb2xvY2F0aW9u
L05hdmlnYXRvckdlb2xvY2F0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok5hdmlnYXRvckdl
b2xvY2F0aW9uOjpyZXNldEFsbEdlb2xvY2F0aW9uUGVybWlzc2lvbik6CisgICAgICAgICogTW9k
dWxlcy9nZW9sb2NhdGlvbi9OYXZpZ2F0b3JHZW9sb2NhdGlvbi5oOgorICAgICAgICAqIE1vZHVs
ZXMvc3BlZWNoL1NwZWVjaFN5bnRoZXNpcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTcGVlY2hT
eW50aGVzaXM6OlNwZWVjaFN5bnRoZXNpcyk6CisgICAgICAgIChXZWJDb3JlOjpTcGVlY2hTeW50
aGVzaXM6OnNwZWFrKToKKyAgICAgICAgKiBNb2R1bGVzL3NwZWVjaC9TcGVlY2hTeW50aGVzaXMu
aDoKKyAgICAgICAgKFdlYkNvcmU6OlNwZWVjaFN5bnRoZXNpczo6dXNlckdlc3R1cmVSZXF1aXJl
ZEZvclNwZWVjaFN0YXJ0KToKKyAgICAgICAgKFdlYkNvcmU6OlNwZWVjaFN5bnRoZXNpczo6cmVt
b3ZlQmVoYXZpb3JSZXN0cmljdGlvbik6CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9BdWRp
b0NvbnRleHQuY3BwOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0Lmg6
CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9BdWRpb1NjaGVkdWxlZFNvdXJjZU5vZGUuY3Bw
OgorICAgICAgICAqIE1vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2UuY3BwOgorICAgICAgICAq
IE1vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VCYWNrZW5kQmFzZS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpEYXRhYmFzZUJhY2tlbmRCYXNlOjpwZXJmb3JtT3BlbkFuZFZlcmlmeSk6CisgICAg
ICAgIChXZWJDb3JlOjpEYXRhYmFzZUJhY2tlbmRCYXNlOjppbmNyZW1lbnRhbFZhY3V1bUlmTmVl
ZGVkKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlQ29udGV4dC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZUNvbnRleHQ6OkRhdGFiYXNlQ29udGV4dCk6Cisg
ICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZUNvbnRleHQ6OmRhdGFiYXNlVGhyZWFkKToKKyAgICAg
ICAgKFdlYkNvcmU6OkRhdGFiYXNlQ29udGV4dDo6c2V0UGF1c2VkKToKKyAgICAgICAgKiBNb2R1
bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlQ29udGV4dC5oOgorICAgICAgICAqIE1vZHVsZXMvd2Vi
ZGF0YWJhc2UvRGF0YWJhc2VNYW5hZ2VyQ2xpZW50Lmg6CisgICAgICAgICogTW9kdWxlcy93ZWJk
YXRhYmFzZS9EYXRhYmFzZVRhc2suY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGF0YWJhc2VUYXNr
OjpwZXJmb3JtVGFzayk6CisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZTo6RGF0YWJhc2VUcmFu
c2FjdGlvblRhc2s6OnNob3VsZFBlcmZvcm1XaGlsZVBhdXNlZCk6CisgICAgICAgICogTW9kdWxl
cy93ZWJkYXRhYmFzZS9EYXRhYmFzZVRhc2suaDoKKyAgICAgICAgKiBNb2R1bGVzL3dlYmRhdGFi
YXNlL0RhdGFiYXNlVGhyZWFkLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFiYXNlVGhyZWFk
OjpEYXRhYmFzZVRocmVhZCk6CisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZVRocmVhZDo6cmVx
dWVzdFRlcm1pbmF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFiYXNlVW5wYXVzZVRhc2s6
OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZVVucGF1c2VUYXNrOjpzaG91bGRQ
ZXJmb3JtV2hpbGVQYXVzZWQpOgorICAgICAgICAoV2ViQ29yZTo6RGF0YWJhc2VVbnBhdXNlVGFz
azo6RGF0YWJhc2VVbnBhdXNlVGFzayk6CisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZVVucGF1
c2VUYXNrOjpkb1BlcmZvcm1UYXNrKToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFiYXNlVW5wYXVz
ZVRhc2s6OmRlYnVnVGFza05hbWUpOgorICAgICAgICAoV2ViQ29yZTo6RGF0YWJhc2VUaHJlYWQ6
OnNldFBhdXNlZCk6CisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZVRocmVhZDo6aGFuZGxlUGF1
c2VkUXVldWUpOgorICAgICAgICAoV2ViQ29yZTo6RGF0YWJhc2VUaHJlYWQ6OmRhdGFiYXNlVGhy
ZWFkKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlVGhyZWFkLmg6Cisg
ICAgICAgICogTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZVRyYWNrZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6RGF0YWJhc2VUcmFja2VyOjpzZXRRdW90YSk6CisgICAgICAgIChXZWJDb3Jl
OjpEYXRhYmFzZVRyYWNrZXI6OmRlbGV0ZU9yaWdpbik6CisgICAgICAgIChXZWJDb3JlOjpEYXRh
YmFzZVRyYWNrZXI6OmRlbGV0ZURhdGFiYXNlKToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFiYXNl
VHJhY2tlcjo6ZGVsZXRlRGF0YWJhc2VGaWxlKToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFiYXNl
VHJhY2tlcjo6cmVtb3ZlRGVsZXRlZE9wZW5lZERhdGFiYXNlcyk6CisgICAgICAgIChXZWJDb3Jl
Ojppc1plcm9CeXRlRmlsZSk6CisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZVRyYWNrZXI6OmRl
bGV0ZURhdGFiYXNlRmlsZUlmRW1wdHkpOgorICAgICAgICAoV2ViQ29yZTo6RGF0YWJhc2VUcmFj
a2VyOjpvcGVuRGF0YWJhc2VNdXRleCk6CisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZVRyYWNr
ZXI6OmVtcHR5RGF0YWJhc2VGaWxlc1JlbW92YWxUYXNrV2lsbEJlU2NoZWR1bGVkKToKKyAgICAg
ICAgKFdlYkNvcmU6OkRhdGFiYXNlVHJhY2tlcjo6ZW1wdHlEYXRhYmFzZUZpbGVzUmVtb3ZhbFRh
c2tEaWRGaW5pc2gpOgorICAgICAgICAoV2ViQ29yZTo6RGF0YWJhc2VUcmFja2VyOjpzZXREYXRh
YmFzZXNQYXVzZWQpOgorICAgICAgICAqIE1vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VUcmFj
a2VyLmg6CisgICAgICAgICogTW9kdWxlcy93ZWJkYXRhYmFzZS9TUUxUcmFuc2FjdGlvbkJhY2tl
bmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1FMVHJhbnNhY3Rpb25CYWNrZW5kOjpzaG91bGRQ
ZXJmb3JtV2hpbGVQYXVzZWQpOgorICAgICAgICAqIE1vZHVsZXMvd2ViZGF0YWJhc2UvU1FMVHJh
bnNhY3Rpb25CYWNrZW5kLmg6CisgICAgICAgICogUmVzb3VyY2VzL0RpY3RhdGlvblBocmFzZVdp
dGhBbHRlcm5hdGl2ZXNEb3QucG5nOiBBZGRlZC4KKyAgICAgICAgKiBSZXNvdXJjZXMvRGljdGF0
aW9uUGhyYXNlV2l0aEFsdGVybmF0aXZlc0RvdEAyeC5wbmc6IEFkZGVkLgorICAgICAgICAqIFJl
c291cmNlcy9TcGVsbGluZ0RvdC5wbmc6IEFkZGVkLgorICAgICAgICAqIFJlc291cmNlcy9TcGVs
bGluZ0RvdEAyeC5wbmc6IEFkZGVkLgorICAgICAgICAqIFJlc291cmNlcy9kZWNyZW1lbnRBcnJv
dy50aWZmOiBBZGRlZC4KKyAgICAgICAgKiBSZXNvdXJjZXMvaFNjcm9sbENvbnRyb2xfbGVmdC5w
bmc6IEFkZGVkLgorICAgICAgICAqIFJlc291cmNlcy9oU2Nyb2xsQ29udHJvbF9taWRkbGUucG5n
OiBBZGRlZC4KKyAgICAgICAgKiBSZXNvdXJjZXMvaFNjcm9sbENvbnRyb2xfcmlnaHQucG5nOiBB
ZGRlZC4KKyAgICAgICAgKiBSZXNvdXJjZXMvaW5jcmVtZW50QXJyb3cudGlmZjogQWRkZWQuCisg
ICAgICAgICogUmVzb3VyY2VzL21hcmtlZExlZnQucG5nOiBBZGRlZC4KKyAgICAgICAgKiBSZXNv
dXJjZXMvbWFya2VkTWlkZGxlLnBuZzogQWRkZWQuCisgICAgICAgICogUmVzb3VyY2VzL21hcmtl
ZFJpZ2h0LnBuZzogQWRkZWQuCisgICAgICAgICogUmVzb3VyY2VzL3ZTY3JvbGxDb250cm9sX2Jv
dHRvbS5wbmc6IEFkZGVkLgorICAgICAgICAqIFJlc291cmNlcy92U2Nyb2xsQ29udHJvbF9taWRk
bGUucG5nOiBBZGRlZC4KKyAgICAgICAgKiBSZXNvdXJjZXMvdlNjcm9sbENvbnRyb2xfdG9wLnBu
ZzogQWRkZWQuCisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgor
ICAgICAgICAqIGJpbmRpbmdzL2pzL0dDQ29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpHQ0NvbnRyb2xsZXI6OmdhcmJhZ2VDb2xsZWN0Tm93KToKKyAgICAgICAgKFdlYkNvcmU6OkdD
Q29udHJvbGxlcjo6cmVsZWFzZUV4ZWN1dGFibGVNZW1vcnkpOgorICAgICAgICAqIGJpbmRpbmdz
L2pzL0dDQ29udHJvbGxlci5oOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTQ2FsbGJhY2tEYXRh
Lmg6CisgICAgICAgIChXZWJDb3JlOjpKU0NhbGxiYWNrRGF0YTo6fkpTQ2FsbGJhY2tEYXRhKToK
KyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0Jhc2UuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6SlNET01XaW5kb3dCYXNlOjpzdXBwb3J0c1Byb2ZpbGluZyk6CisgICAgICAgIChXZWJD
b3JlOjpKU0RPTVdpbmRvd0Jhc2U6OnNob3VsZEludGVycnVwdFNjcmlwdEJlZm9yZVRpbWVvdXQp
OgorICAgICAgICAoV2ViQ29yZTo6SlNET01XaW5kb3dCYXNlOjpjb21tb25WTSk6CisgICAgICAg
IChXZWJDb3JlOjpKU0RPTVdpbmRvd0Jhc2U6OmNvbW1vblZNRXhpc3RzKToKKyAgICAgICAgKFdl
YkNvcmU6OkpTRE9NV2luZG93QmFzZTo6Y29tbW9uVk1JbnRlcm5hbCk6CisgICAgICAgICogYmlu
ZGluZ3MvanMvSlNET01XaW5kb3dDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNET01X
aW5kb3c6OnRvdWNoKToKKyAgICAgICAgKFdlYkNvcmU6OkpTRE9NV2luZG93Ojp0b3VjaExpc3Qp
OgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRGV2aWNlT3JpZW50YXRpb25FdmVudEN1c3RvbS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpKU0RldmljZU9yaWVudGF0aW9uRXZlbnQ6OndlYmtpdENv
bXBhc3NIZWFkaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OkpTRGV2aWNlT3JpZW50YXRpb25FdmVu
dDo6d2Via2l0Q29tcGFzc0FjY3VyYWN5KToKKyAgICAgICAgKFdlYkNvcmU6OkpTRGV2aWNlT3Jp
ZW50YXRpb25FdmVudDo6aW5pdERldmljZU9yaWVudGF0aW9uRXZlbnQpOgorICAgICAgICAqIGJp
bmRpbmdzL2pzL0pTTWFpblRocmVhZEV4ZWNTdGF0ZS5oOgorICAgICAgICAqIGJpbmRpbmdzL2pz
L0pTVG91Y2hDdXN0b20uY3BwOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTVG91Y2hMaXN0Q3Vz
dG9tLmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9QYWdlU2NyaXB0RGVidWdTZXJ2ZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6UGFnZVNjcmlwdERlYnVnU2VydmVyOjpkaWRDb250aW51ZSk6
CisgICAgICAgICogYmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpTY3JpcHRDb250cm9sbGVyOjppbml0aWFsaXplVGhyZWFkaW5nKToKKyAgICAgICAg
KiBiaW5kaW5ncy9qcy9TY3JpcHREZWJ1Z1NlcnZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpT
Y3JpcHREZWJ1Z1NlcnZlcjo6aGFuZGxlUGF1c2UpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL2lv
cy9Ub3VjaENvbnN0cnVjdG9ycy5jcHA6IEFkZGVkLgorICAgICAgICAqIGJpbmRpbmdzL29iamMv
RE9NLm1tOgorICAgICAgICAoV2ViQ29yZTo6d2tRdWFkRnJvbUZsb2F0UXVhZCk6CisgICAgICAg
IChXZWJDb3JlOjpraXQpOgorICAgICAgICAoV2ViQ29yZTo6bWluNCk6CisgICAgICAgIChXZWJD
b3JlOjptYXg0KToKKyAgICAgICAgKFdlYkNvcmU6OmVtcHR5UXVhZCk6CisgICAgICAgICgtW1dL
UXVhZE9iamVjdCBpbml0V2l0aFF1YWQ6XSk6CisgICAgICAgICgtW1dLUXVhZE9iamVjdCBxdWFk
XSk6CisgICAgICAgICgtW1dLUXVhZE9iamVjdCBib3VuZGluZ0JveF0pOgorICAgICAgICAoLVtE
T01Ob2RlIGJvdW5kaW5nQm94XSk6CisgICAgICAgICgtW0RPTU5vZGUgYWJzb2x1dGVRdWFkXSk6
CisgICAgICAgICgtW0RPTU5vZGUgYWJzb2x1dGVRdWFkQW5kSW5zaWRlRml4ZWRQb3NpdGlvbjpd
KToKKyAgICAgICAgKC1bRE9NTm9kZSBib3VuZGluZ0JveFVzaW5nVHJhbnNmb3Jtc10pOgorICAg
ICAgICAoLVtET01Ob2RlIGxpbmVCb3hRdWFkc10pOgorICAgICAgICAoLVtET01Ob2RlIF9saW5r
RWxlbWVudF0pOgorICAgICAgICAoLVtET01Ob2RlIGhyZWZVUkxdKToKKyAgICAgICAgKC1bRE9N
Tm9kZSBocmVmVGFyZ2V0XSk6CisgICAgICAgICgtW0RPTU5vZGUgaHJlZkZyYW1lXSk6CisgICAg
ICAgICgtW0RPTU5vZGUgaHJlZkxhYmVsXSk6CisgICAgICAgICgtW0RPTU5vZGUgaHJlZlRpdGxl
XSk6CisgICAgICAgICgtW0RPTU5vZGUgYm91bmRpbmdGcmFtZV0pOgorICAgICAgICAoLVtET01O
b2RlIGlubmVyRnJhbWVRdWFkXSk6CisgICAgICAgICgtW0RPTU5vZGUgY29tcHV0ZWRGb250U2l6
ZV0pOgorICAgICAgICAoLVtET01Ob2RlIG5leHRGb2N1c05vZGVdKToKKyAgICAgICAgKC1bRE9N
Tm9kZSBwcmV2aW91c0ZvY3VzTm9kZV0pOgorICAgICAgICAoLVtET01SYW5nZSBib3VuZGluZ0Jv
eF0pOgorICAgICAgICAoLVtET01SYW5nZSByZW5kZXJlZEltYWdlRm9yY2luZ0JsYWNrVGV4dDpy
ZW5kZXJlZEltYWdlRm9yY2luZ0JsYWNrVGV4dDpdKToKKyAgICAgICAgKC1bRE9NRWxlbWVudCBf
Zm9udF0pOgorICAgICAgICAoLVtET01IVE1MTGlua0VsZW1lbnQgX21lZGlhUXVlcnlNYXRjaGVz
Rm9yT3JpZW50YXRpb246XSk6CisgICAgICAgICgtW0RPTUhUTUxMaW5rRWxlbWVudCBfbWVkaWFR
dWVyeU1hdGNoZXNdKToKKyAgICAgICAgKiBiaW5kaW5ncy9vYmpjL0RPTUV2ZW50cy5oOgorICAg
ICAgICAqIGJpbmRpbmdzL29iamMvRE9NRXZlbnRzLm1tOgorICAgICAgICAoa2l0Q2xhc3MpOgor
ICAgICAgICAqIGJpbmRpbmdzL29iamMvRE9NRXh0ZW5zaW9ucy5oOgorICAgICAgICAqIGJpbmRp
bmdzL29iamMvRE9NSFRNTC5tbToKKyAgICAgICAgKC1bRE9NSFRNTEVsZW1lbnQgc2Nyb2xsWU9m
ZnNldF0pOgorICAgICAgICAoLVtET01IVE1MRWxlbWVudCBzZXRTY3JvbGxYT2Zmc2V0OnNjcm9s
bFlPZmZzZXQ6XSk6CisgICAgICAgICgtW0RPTUhUTUxFbGVtZW50IHNldFNjcm9sbFhPZmZzZXQ6
c2Nyb2xsWU9mZnNldDphZGp1c3RGb3JJT1NDYXJldDpdKToKKyAgICAgICAgKC1bRE9NSFRNTEVs
ZW1lbnQgYWJzb2x1dGVQb3NpdGlvbjo6OjpdKToKKyAgICAgICAgKC1bRE9NSFRNTElucHV0RWxl
bWVudCBfYXV0b2NhcGl0YWxpemVUeXBlXSk6CisgICAgICAgICgtW0RPTUhUTUxUZXh0QXJlYUVs
ZW1lbnQgX2F1dG9jYXBpdGFsaXplVHlwZV0pOgorICAgICAgICAoLVtET01IVE1MSW5wdXRFbGVt
ZW50IHNldFZhbHVlV2l0aENoYW5nZUV2ZW50Ol0pOgorICAgICAgICAoLVtET01IVE1MSW5wdXRF
bGVtZW50IHNldFZhbHVlQXNOdW1iZXJXaXRoQ2hhbmdlRXZlbnQ6XSk6CisgICAgICAgICogYmlu
ZGluZ3Mvb2JqYy9ET01JbnRlcm5hbC5oOgorICAgICAgICAqIGJpbmRpbmdzL29iamMvRE9NSW50
ZXJuYWwubW06CisgICAgICAgICh3cmFwcGVyQ2FjaGVMb2NrKToKKyAgICAgICAgKGdldERPTVdy
YXBwZXIpOgorICAgICAgICAoYWRkRE9NV3JhcHBlcik6CisgICAgICAgIChyZW1vdmVET01XcmFw
cGVyKToKKyAgICAgICAgKiBiaW5kaW5ncy9vYmpjL0RPTVByaXZhdGUuaDoKKyAgICAgICAgKiBi
aW5kaW5ncy9vYmpjL0RPTVVJS2l0RXh0ZW5zaW9ucy5oOiBBZGRlZC4KKyAgICAgICAgKiBiaW5k
aW5ncy9vYmpjL0RPTVVJS2l0RXh0ZW5zaW9ucy5tbTogQWRkZWQuCisgICAgICAgICgtW0RPTVJh
bmdlIG1vdmU6aW5EaXJlY3Rpb246XSk6CisgICAgICAgICgtW0RPTVJhbmdlIGV4dGVuZDppbkRp
cmVjdGlvbjpdKToKKyAgICAgICAgKC1bRE9NUmFuZ2UgZmlyc3ROb2RlXSk6CisgICAgICAgICgt
W0RPTU5vZGUgYm91bmRpbmdCb3hlc10pOgorICAgICAgICAoLVtET01Ob2RlIGFic29sdXRlUXVh
ZHNdKToKKyAgICAgICAgKC1bRE9NTm9kZSBib3JkZXJSYWRpaV0pOgorICAgICAgICAoLVtET01O
b2RlIGNvbnRhaW5zT25seUlubGluZU9iamVjdHNdKToKKyAgICAgICAgKC1bRE9NTm9kZSBpc1Nl
bGVjdGFibGVCbG9ja10pOgorICAgICAgICAoLVtET01Ob2RlIHJhbmdlT2ZDb250YWluaW5nUGFy
YWdyYXBoXSk6CisgICAgICAgICgtW0RPTU5vZGUgdGV4dEhlaWdodF0pOgorICAgICAgICAoLVtE
T01Ob2RlIGZpbmRFeHBsb2RlZFRleHROb2RlQXRQb2ludDpdKToKKyAgICAgICAgKC1bRE9NSFRN
TEVsZW1lbnQgc3RydWN0dXJhbENvbXBsZXhpdHlDb250cmlidXRpb25dKToKKyAgICAgICAgKC1b
RE9NSFRNTEFyZWFFbGVtZW50IGJvdW5kaW5nQm94V2l0aE93bmVyOl0pOgorICAgICAgICAoLVtE
T01IVE1MQXJlYUVsZW1lbnQgYWJzb2x1dGVRdWFkV2l0aE93bmVyOl0pOgorICAgICAgICAoLVtE
T01IVE1MQXJlYUVsZW1lbnQgYm91bmRpbmdCb3hlc1dpdGhPd25lcjpdKToKKyAgICAgICAgKC1b
RE9NSFRNTEFyZWFFbGVtZW50IGFic29sdXRlUXVhZHNXaXRoT3duZXI6XSk6CisgICAgICAgICgt
W0RPTUhUTUxTZWxlY3RFbGVtZW50IGNvbXBsZXRlTGVuZ3RoXSk6CisgICAgICAgICgtW0RPTUhU
TUxTZWxlY3RFbGVtZW50IGxpc3RJdGVtQXRJbmRleDpdKToKKyAgICAgICAgKC1bRE9NSFRNTElt
YWdlRWxlbWVudCBkYXRhUmVwcmVzZW50YXRpb246XSk6CisgICAgICAgICgtW0RPTUhUTUxJbWFn
ZUVsZW1lbnQgbWltZVR5cGVdKToKKyAgICAgICAgKiBiaW5kaW5ncy9vYmpjL1B1YmxpY0RPTUlu
dGVyZmFjZXMuaDoKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5w
bToKKyAgICAgICAgKEdlbmVyYXRlSGVhZGVyQ29udGVudEhlYWRlcik6CisgICAgICAgIChHZW5l
cmF0ZUltcGxlbWVudGF0aW9uQ29udGVudEhlYWRlcik6CisgICAgICAgIChHZW5lcmF0ZUhlYWRl
cik6CisgICAgICAgIChHZW5lcmF0ZUltcGxlbWVudGF0aW9uKToKKyAgICAgICAgKEdlbmVyYXRl
Q2FsbGJhY2tJbXBsZW1lbnRhdGlvbik6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy9Db2Rl
R2VuZXJhdG9yT2JqQy5wbToKKyAgICAgICAgKFJlYWRQdWJsaWNJbnRlcmZhY2VzKToKKyAgICAg
ICAgKEdldENsYXNzTmFtZSk6CisgICAgICAgIChJc0NvcmVGb3VuZGF0aW9uVHlwZSk6CisgICAg
ICAgIChHZXRPYmpDVHlwZSk6CisgICAgICAgIChBZGRJbmNsdWRlc0ZvclR5cGUpOgorICAgICAg
ICAoR2VuZXJhdGVIZWFkZXIpOgorICAgICAgICAoR2VuZXJhdGVJbXBsZW1lbnRhdGlvbik6Cisg
ICAgICAgIChXcml0ZURhdGEpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvSURMQXR0cmli
dXRlcy50eHQ6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy9wcmVwcm9jZXNzb3IucG06Cisg
ICAgICAgIChhcHBseVByZXByb2Nlc3Nvcik6CisgICAgICAgICogYnJpZGdlL29iamMvb2JqY19j
bGFzcy5tbToKKyAgICAgICAgKEpTQzo6QmluZGluZ3M6Ok9iamNDbGFzczo6ZmllbGROYW1lZCk6
CisgICAgICAgICogYnJpZGdlL29iamMvb2JqY19pbnN0YW5jZS5tbToKKyAgICAgICAgKiBjb25m
aWcuaDoKKyAgICAgICAgKiBkb20vRG9jdW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9j
dW1lbnQ6OmFkZEF1dG9TaXppbmdOb2RlKToKKyAgICAgICAgKiBkb20vRG9jdW1lbnQuaDoKKyAg
ICAgICAgKiBkb20vRG9jdW1lbnQuaWRsOgorICAgICAgICAqIGRvbS9pb3MvVG91Y2hFdmVudHMu
Y3BwOiBBZGRlZC4KKyAgICAgICAgKiBlZGl0aW5nL0FwcGx5U3R5bGVDb21tYW5kLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkFwcGx5U3R5bGVDb21tYW5kOjphcHBseUJsb2NrU3R5bGUpOgorICAg
ICAgICAqIGVkaXRpbmcvQ29tcG9zaXRlRWRpdENvbW1hbmQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6RWRpdENvbW1hbmRDb21wb3NpdGlvbjo6dW5hcHBseSk6CisgICAgICAgIChXZWJDb3JlOjpD
b21wb3NpdGVFZGl0Q29tbWFuZDo6YXBwbHkpOgorICAgICAgICAoV2ViQ29yZTo6Q29tcG9zaXRl
RWRpdENvbW1hbmQ6OmlucHV0VGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpDb21wb3NpdGVFZGl0
Q29tbWFuZDo6cmVwbGFjZVRleHRJbk5vZGVQcmVzZXJ2aW5nTWFya2Vycyk6CisgICAgICAgIChX
ZWJDb3JlOjpDb21wb3NpdGVFZGl0Q29tbWFuZDo6bW92ZVBhcmFncmFwaHMpOgorICAgICAgICAq
IGVkaXRpbmcvQ29tcG9zaXRlRWRpdENvbW1hbmQuaDoKKyAgICAgICAgKiBlZGl0aW5nL0RlbGV0
ZUJ1dHRvbi5oOgorICAgICAgICAqIGVkaXRpbmcvRGVsZXRlQnV0dG9uQ29udHJvbGxlci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpEZWxldGVCdXR0b25Db250cm9sbGVyOjplbmFibGUpOgorICAg
ICAgICAoV2ViQ29yZTo6RGVsZXRlQnV0dG9uQ29udHJvbGxlcjo6ZGlzYWJsZSk6CisgICAgICAg
ICogZWRpdGluZy9EZWxldGVTZWxlY3Rpb25Db21tYW5kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkRlbGV0ZVNlbGVjdGlvbkNvbW1hbmQ6OmRvQXBwbHkpOgorICAgICAgICAqIGVkaXRpbmcvRGVs
ZXRlU2VsZWN0aW9uQ29tbWFuZC5oOgorICAgICAgICAqIGVkaXRpbmcvRWRpdEFjdGlvbi5oOgor
ICAgICAgICAqIGVkaXRpbmcvRWRpdENvbW1hbmQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRD
b21tYW5kOjppc0luc2VydFRleHRDb21tYW5kKToKKyAgICAgICAgKiBlZGl0aW5nL0VkaXRpbmdT
dHlsZS5jcHA6CisgICAgICAgICogZWRpdGluZy9FZGl0b3IuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Q2xlYXJUZXh0Q29tbWFuZDo6Q2xlYXJUZXh0Q29tbWFuZCk6CisgICAgICAgIChXZWJDb3Jl
OjpDbGVhclRleHRDb21tYW5kOjplZGl0aW5nQWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkNs
ZWFyVGV4dENvbW1hbmQ6OkNyZWF0ZUFuZEFwcGx5KToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRv
cjo6aGFuZGxlVGV4dEV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6Y2xlYXJUZXh0
KToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6aW5zZXJ0RGljdGF0aW9uUGhyYXNlcyk6Cisg
ICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OnNldERpY3RhdGlvblBocmFzZXNBc0NoaWxkT2ZFbGVt
ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6Y29uZmlybU1hcmtlZFRleHQpOgorICAg
ICAgICAoV2ViQ29yZTo6RWRpdG9yOjpzZXRUZXh0QXNDaGlsZE9mRWxlbWVudCk6CisgICAgICAg
IChXZWJDb3JlOjpFZGl0b3I6Om5vdGlmeUNvbXBvbmVudHNPbkNoYW5nZWRTZWxlY3Rpb24pOgor
ICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjplbnN1cmVMYXN0RWRpdENvbW1hbmRIYXNDdXJyZW50
U2VsZWN0aW9uSWZPcGVuRm9yTW9yZVR5cGluZyk6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6
OmNvcHkpOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjpzZXRCYXNlV3JpdGluZ0RpcmVjdGlv
bik6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OnNldENvbXBvc2l0aW9uKToKKyAgICAgICAg
KFdlYkNvcmU6OkVkaXRvcjo6c2hvd1NwZWxsaW5nR3Vlc3NQYW5lbCk6CisgICAgICAgIChXZWJD
b3JlOjpFZGl0b3I6Om1hcmtNaXNzcGVsbGluZ3NBZnRlclR5cGluZ1RvV29yZCk6CisgICAgICAg
IChXZWJDb3JlOjpFZGl0b3I6Om1hcmtNaXNzcGVsbGluZ3NPckJhZEdyYW1tYXIpOgorICAgICAg
ICAoV2ViQ29yZTo6RWRpdG9yOjpjaGFuZ2VCYWNrVG9SZXBsYWNlZFN0cmluZyk6CisgICAgICAg
IChXZWJDb3JlOjpFZGl0b3I6OnVwZGF0ZU1hcmtlcnNGb3JXb3Jkc0FmZmVjdGVkQnlFZGl0aW5n
KToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6c2V0SWdub3JlQ29tcG9zaXRpb25TZWxlY3Rp
b25DaGFuZ2UpOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjpjaGFuZ2VTZWxlY3Rpb25BZnRl
ckNvbW1hbmQpOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjpzaG91bGRDaGFuZ2VTZWxlY3Rp
b24pOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjpyZXNwb25kVG9DaGFuZ2VkU2VsZWN0aW9u
KToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6cmVzb2x2ZVRleHRDaGVja2luZ1R5cGVNYXNr
KToKKyAgICAgICAgKiBlZGl0aW5nL0VkaXRvci5oOgorICAgICAgICAqIGVkaXRpbmcvRWRpdG9y
Q29tbWFuZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpleGVjdXRlQ2xlYXJUZXh0KToKKyAgICAg
ICAgKFdlYkNvcmU6OmVuYWJsZWRDb3B5KToKKyAgICAgICAgKFdlYkNvcmU6OmVuYWJsZWRDdXQp
OgorICAgICAgICAoV2ViQ29yZTo6ZW5hYmxlZENsZWFyVGV4dCk6CisgICAgICAgIChXZWJDb3Jl
OjpjcmVhdGVDb21tYW5kTWFwKToKKyAgICAgICAgKiBlZGl0aW5nL0ZyYW1lU2VsZWN0aW9uLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lU2VsZWN0aW9uOjpGcmFtZVNlbGVjdGlvbik6Cisg
ICAgICAgIChXZWJDb3JlOjpGcmFtZVNlbGVjdGlvbjo6c2V0U2VsZWN0aW9uKToKKyAgICAgICAg
KFdlYkNvcmU6OkZyYW1lU2VsZWN0aW9uOjptb2RpZnlFeHRlbmRpbmdSaWdodCk6CisgICAgICAg
IChXZWJDb3JlOjpGcmFtZVNlbGVjdGlvbjo6bW9kaWZ5RXh0ZW5kaW5nRm9yd2FyZCk6CisgICAg
ICAgIChXZWJDb3JlOjpGcmFtZVNlbGVjdGlvbjo6bW9kaWZ5TW92aW5nUmlnaHQpOgorICAgICAg
ICAoV2ViQ29yZTo6RnJhbWVTZWxlY3Rpb246Om1vZGlmeU1vdmluZ0ZvcndhcmQpOgorICAgICAg
ICAoV2ViQ29yZTo6RnJhbWVTZWxlY3Rpb246Om1vZGlmeUV4dGVuZGluZ0xlZnQpOgorICAgICAg
ICAoV2ViQ29yZTo6RnJhbWVTZWxlY3Rpb246Om1vZGlmeUV4dGVuZGluZ0JhY2t3YXJkKToKKyAg
ICAgICAgKFdlYkNvcmU6OkZyYW1lU2VsZWN0aW9uOjptb2RpZnlNb3ZpbmdMZWZ0KToKKyAgICAg
ICAgKFdlYkNvcmU6OkZyYW1lU2VsZWN0aW9uOjptb2RpZnlNb3ZpbmdCYWNrd2FyZCk6CisgICAg
ICAgIChXZWJDb3JlOjpGcmFtZVNlbGVjdGlvbjo6c2V0U2VsZWN0ZWRSYW5nZSk6CisgICAgICAg
IChXZWJDb3JlOjpGcmFtZVNlbGVjdGlvbjo6Zm9jdXNlZE9yQWN0aXZlU3RhdGVDaGFuZ2VkKToK
KyAgICAgICAgKFdlYkNvcmU6OkZyYW1lU2VsZWN0aW9uOjp1cGRhdGVBcHBlYXJhbmNlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkZyYW1lU2VsZWN0aW9uOjpzaG91bGREZWxldGVTZWxlY3Rpb24pOgor
ICAgICAgICAoV2ViQ29yZTo6RnJhbWVTZWxlY3Rpb246OnJldmVhbFNlbGVjdGlvbik6CisgICAg
ICAgIChXZWJDb3JlOjpGcmFtZVNlbGVjdGlvbjo6c2V0U2VsZWN0aW9uRnJvbU5vbmUpOgorICAg
ICAgICAoV2ViQ29yZTo6RnJhbWVTZWxlY3Rpb246OnNob3VsZENoYW5nZVNlbGVjdGlvbik6Cisg
ICAgICAgIChXZWJDb3JlOjpGcmFtZVNlbGVjdGlvbjo6ZXhwYW5kU2VsZWN0aW9uVG9FbGVtZW50
Q29udGFpbmluZ0NhcmV0U2VsZWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lU2VsZWN0
aW9uOjplbGVtZW50UmFuZ2VDb250YWluaW5nQ2FyZXRTZWxlY3Rpb24pOgorICAgICAgICAoV2Vi
Q29yZTo6RnJhbWVTZWxlY3Rpb246OmV4cGFuZFNlbGVjdGlvblRvV29yZENvbnRhaW5pbmdDYXJl
dFNlbGVjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZVNlbGVjdGlvbjo6d29yZFJhbmdl
Q29udGFpbmluZ0NhcmV0U2VsZWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lU2VsZWN0
aW9uOjpleHBhbmRTZWxlY3Rpb25Ub1N0YXJ0T2ZXb3JkQ29udGFpbmluZ0NhcmV0U2VsZWN0aW9u
KToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lU2VsZWN0aW9uOjpjaGFyYWN0ZXJJblJlbGF0aW9u
VG9DYXJldFNlbGVjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZVNlbGVjdGlvbjo6Y2hh
cmFjdGVyQmVmb3JlQ2FyZXRTZWxlY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVTZWxl
Y3Rpb246OmNoYXJhY3RlckFmdGVyQ2FyZXRTZWxlY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6
RnJhbWVTZWxlY3Rpb246OndvcmRPZmZzZXRJblJhbmdlKToKKyAgICAgICAgKFdlYkNvcmU6OkZy
YW1lU2VsZWN0aW9uOjpzcGFjZUZvbGxvd3NXb3JkSW5SYW5nZSk6CisgICAgICAgIChXZWJDb3Jl
OjpGcmFtZVNlbGVjdGlvbjo6c2VsZWN0aW9uQXREb2N1bWVudFN0YXJ0KToKKyAgICAgICAgKFdl
YkNvcmU6OkZyYW1lU2VsZWN0aW9uOjpzZWxlY3Rpb25BdFNlbnRlbmNlU3RhcnQpOgorICAgICAg
ICAoV2ViQ29yZTo6RnJhbWVTZWxlY3Rpb246OnNlbGVjdGlvbkF0V29yZFN0YXJ0KToKKyAgICAg
ICAgKFdlYkNvcmU6OkZyYW1lU2VsZWN0aW9uOjpyYW5nZUJ5TW92aW5nQ3VycmVudFNlbGVjdGlv
bik6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZVNlbGVjdGlvbjo6cmFuZ2VCeUV4dGVuZGluZ0N1
cnJlbnRTZWxlY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVTZWxlY3Rpb246OnNlbGVj
dFJhbmdlT25FbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lU2VsZWN0aW9uOjp3b3Jk
U2VsZWN0aW9uQ29udGFpbmluZ0NhcmV0U2VsZWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkZy
YW1lU2VsZWN0aW9uOjphY3R1YWxTZWxlY3Rpb25BdFNlbnRlbmNlU3RhcnQpOgorICAgICAgICAo
V2ViQ29yZTo6RnJhbWVTZWxlY3Rpb246OnJhbmdlQnlBbHRlcmluZ0N1cnJlbnRTZWxlY3Rpb24p
OgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVTZWxlY3Rpb246OmNsZWFyQ3VycmVudFNlbGVjdGlv
bik6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZVNlbGVjdGlvbjo6c2V0Q2FyZXRCbGlua3MpOgor
ICAgICAgICAoV2ViQ29yZTo6RnJhbWVTZWxlY3Rpb246OnNldENhcmV0Q29sb3IpOgorICAgICAg
ICAqIGVkaXRpbmcvRnJhbWVTZWxlY3Rpb24uaDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lU2Vs
ZWN0aW9uOjpzdXBwcmVzc0Nsb3NlVHlwaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lU2Vs
ZWN0aW9uOjpyZXN0b3JlQ2xvc2VUeXBpbmcpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVTZWxl
Y3Rpb246OnNldFVwZGF0ZUFwcGVhcmFuY2VFbmFibGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkZy
YW1lU2VsZWN0aW9uOjpzdXBwcmVzc1Njcm9sbGluZyk6CisgICAgICAgIChXZWJDb3JlOjpGcmFt
ZVNlbGVjdGlvbjo6cmVzdG9yZVNjcm9sbGluZyk6CisgICAgICAgICogZWRpdGluZy9JbnNlcnRJ
bnRvVGV4dE5vZGVDb21tYW5kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc2VydEludG9UZXh0
Tm9kZUNvbW1hbmQ6OmRvUmVhcHBseSk6CisgICAgICAgICogZWRpdGluZy9JbnNlcnRJbnRvVGV4
dE5vZGVDb21tYW5kLmg6CisgICAgICAgICogZWRpdGluZy9JbnNlcnRUZXh0Q29tbWFuZC5oOgor
ICAgICAgICAqIGVkaXRpbmcvUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6UmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQ6OmRvQXBwbHkpOgorICAgICAgICAqIGVk
aXRpbmcvVGV4dEFmZmluaXR5Lmg6CisgICAgICAgICogZWRpdGluZy9UZXh0Q2hlY2tpbmdIZWxw
ZXIuY3BwOgorICAgICAgICAqIGVkaXRpbmcvVGV4dEdyYW51bGFyaXR5Lmg6CisgICAgICAgICog
ZWRpdGluZy9UZXh0SXRlcmF0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6aXNSZW5kZXJlclJl
cGxhY2VkRWxlbWVudCk6CisgICAgICAgICogZWRpdGluZy9UeXBpbmdDb21tYW5kLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlR5cGluZ0NvbW1hbmQ6OmVuc3VyZUxhc3RFZGl0Q29tbWFuZEhhc0N1
cnJlbnRTZWxlY3Rpb25JZk9wZW5Gb3JNb3JlVHlwaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OlR5
cGluZ0NvbW1hbmQ6Om1hcmtNaXNzcGVsbGluZ3NBZnRlclR5cGluZyk6CisgICAgICAgIChXZWJD
b3JlOjpUeXBpbmdDb21tYW5kOjpkZWxldGVLZXlQcmVzc2VkKToKKyAgICAgICAgKFdlYkNvcmU6
OlR5cGluZ0NvbW1hbmQ6OmZvcndhcmREZWxldGVLZXlQcmVzc2VkKToKKyAgICAgICAgKFdlYkNv
cmU6OkZyaWVuZGx5RWRpdENvbW1hbmQ6OnNldEVuZGluZ1NlbGVjdGlvbik6CisgICAgICAgIChX
ZWJDb3JlOjpUeXBpbmdDb21tYW5kOjpzZXRFbmRpbmdTZWxlY3Rpb25Pbkxhc3RJbnNlcnRDb21t
YW5kKToKKyAgICAgICAgKiBlZGl0aW5nL1R5cGluZ0NvbW1hbmQuaDoKKyAgICAgICAgKiBlZGl0
aW5nL1Zpc2libGVQb3NpdGlvbi5oOgorICAgICAgICAoV2ViQ29yZTo6b3BlcmF0b3I8KToKKyAg
ICAgICAgKFdlYkNvcmU6Om9wZXJhdG9yPik6CisgICAgICAgIChXZWJDb3JlOjpvcGVyYXRvcjw9
KToKKyAgICAgICAgKFdlYkNvcmU6Om9wZXJhdG9yPj0pOgorICAgICAgICAqIGVkaXRpbmcvVmlz
aWJsZVNlbGVjdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpWaXNpYmxlU2VsZWN0aW9uOjpz
ZXRTdGFydEFuZEVuZEZyb21CYXNlQW5kRXh0ZW50UmVzcGVjdGluZ0dyYW51bGFyaXR5KToKKyAg
ICAgICAgKFdlYkNvcmU6OlZpc2libGVTZWxlY3Rpb246OmFkanVzdFNlbGVjdGlvblRvQXZvaWRD
cm9zc2luZ0VkaXRpbmdCb3VuZGFyaWVzKToKKyAgICAgICAgKiBlZGl0aW5nL1Zpc2libGVVbml0
cy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpwcmV2aW91c0JvdW5kYXJ5KToKKyAgICAgICAgKFdl
YkNvcmU6Om5leHRCb3VuZGFyeSk6CisgICAgICAgIChXZWJDb3JlOjpzdGFydE9mRG9jdW1lbnQp
OgorICAgICAgICAoV2ViQ29yZTo6ZW5kT2ZEb2N1bWVudCk6CisgICAgICAgIChXZWJDb3JlOjpk
aXJlY3Rpb25Jc0Rvd25zdHJlYW0pOgorICAgICAgICAoV2ViQ29yZTo6YXRCb3VuZGFyeU9mR3Jh
bnVsYXJpdHkpOgorICAgICAgICAoV2ViQ29yZTo6d2l0aGluVGV4dFVuaXRPZkdyYW51bGFyaXR5
KToKKyAgICAgICAgKFdlYkNvcmU6Om5leHRDaGFyYWN0ZXJCb3VuZGFyeUluRGlyZWN0aW9uKToK
KyAgICAgICAgKFdlYkNvcmU6Om5leHRXb3JkQm91bmRhcnlJbkRpcmVjdGlvbik6CisgICAgICAg
IChXZWJDb3JlOjpuZXh0U2VudGVuY2VCb3VuZGFyeUluRGlyZWN0aW9uKToKKyAgICAgICAgKFdl
YkNvcmU6Om5leHRMaW5lQm91bmRhcnlJbkRpcmVjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpu
ZXh0UGFyYWdyYXBoQm91bmRhcnlJbkRpcmVjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpuZXh0
RG9jdW1lbnRCb3VuZGFyeUluRGlyZWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OnBvc2l0aW9u
T2ZOZXh0Qm91bmRhcnlPZkdyYW51bGFyaXR5KToKKyAgICAgICAgKFdlYkNvcmU6OmVuY2xvc2lu
Z1RleHRVbml0T2ZHcmFudWxhcml0eSk6CisgICAgICAgIChXZWJDb3JlOjpkaXN0YW5jZUJldHdl
ZW5Qb3NpdGlvbnMpOgorICAgICAgICAoV2ViQ29yZTo6d29yZFJhbmdlRnJvbVBvc2l0aW9uKToK
KyAgICAgICAgKFdlYkNvcmU6OmNsb3Nlc3RXb3JkQm91bmRhcnlGb3JQb3NpdGlvbik6CisgICAg
ICAgICogZWRpdGluZy9WaXNpYmxlVW5pdHMuaDoKKyAgICAgICAgKiBlZGl0aW5nL2lvcy9EaWN0
YXRpb25Db21tYW5kSU9TLmNwcDogQWRkZWQuCisgICAgICAgICogZWRpdGluZy9pb3MvRGljdGF0
aW9uQ29tbWFuZElPUy5oOiBBZGRlZC4KKyAgICAgICAgKiBlZGl0aW5nL21hYy9GcmFtZVNlbGVj
dGlvbk1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lU2VsZWN0aW9uOjpub3RpZnlBY2Nl
c3NpYmlsaXR5Rm9yU2VsZWN0aW9uQ2hhbmdlKToKKyAgICAgICAgKiBmaWxlYXBpL0FzeW5jRmls
ZVN0cmVhbS5jcHA6CisgICAgICAgICogZ2VuZXJhdGUtZXhwb3J0LWZpbGU6IEFkZGVkLgorICAg
ICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JDb3VudGVycy5oOgorICAgICAgICAqIGluc3BlY3Rv
ci9JbnNwZWN0b3JGcm9udGVuZEhvc3QuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9y
UGFnZUFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclBhZ2VBZ2VudDo6c2V0
RGV2aWNlT3JpZW50YXRpb25PdmVycmlkZSk6CisgICAgICAgICogbWFrZS1leHBvcnQtZmlsZS1n
ZW5lcmF0b3I6CisgICAgICAgICogcGx1Z2lucy9QbHVnaW5QYWNrYWdlLmg6CisgICAgICAgICog
cGx1Z2lucy9QbHVnaW5WaWV3QmFzZS5oOgorICAgICAgICAoV2ViQ29yZTo6UGx1Z2luVmlld0Jh
c2U6OndpbGxQcm92aWRlUGx1Z2luTGF5ZXIpOgorICAgICAgICAoV2ViQ29yZTo6UGx1Z2luVmll
d0Jhc2U6OmF0dGFjaFBsdWdpbkxheWVyKToKKyAgICAgICAgKFdlYkNvcmU6OlBsdWdpblZpZXdC
YXNlOjpkZXRhY2hQbHVnaW5MYXllcik6CisgICAgICAgICogc3R5bGUvU3R5bGVSZXNvbHZlRm9y
RG9jdW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGU6OnJlc29sdmVGb3JEb2N1bWVu
dCk6CisgICAgICAgICogc3R5bGUvU3R5bGVSZXNvbHZlVHJlZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpTdHlsZTo6ZWxlbWVudEltcGxpY2l0VmlzaWJpbGl0eSk6CisgICAgICAgICogdGVzdGlu
Zy9JbnRlcm5hbHMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW50ZXJuYWxzOjpnZXRDdXJyZW50
Q3Vyc29ySW5mbyk6CisgICAgICAgIChXZWJDb3JlOjpJbnRlcm5hbHM6OmlzU2VsZWN0UG9wdXBW
aXNpYmxlKToKKyAgICAgICAgKiB3b3JrZXJzL1dvcmtlclRocmVhZC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpXb3JrZXJUaHJlYWQ6OndvcmtlclRocmVhZCk6CisKIDIwMTQtMDEtMDggIERhbmll
bCBCYXRlcyAgPGRhYmF0ZXNAYXBwbGUuY29tPgogCiAgICAgICAgIFtpT1NdIFVwc3RyZWFtIFdl
YkNvcmUvcGxhdGZvcm0gY2hhbmdlcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VM
b2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCA4MDYyNjM3YzVjYWY2MDI2MmZmMTA1
NWFmMTJkNjAwYTNjOTY4MzExLi5jZDY2Yjc2OGU4NDBjYmM4MzY5ZTVhZDQyNWUxYTU2YjkwNTA1
ZmNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2Vi
S2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyIEBACisyMDE0LTAxLTA5ICBEYW5pZWwgQmF0ZXMg
IDxkYWJhdGVzQGFwcGxlLmNvbT4KKworICAgICAgICBbaU9TXSBVcHN0cmVhbSBXZWJDb3JlIGFu
ZCBUb29scyBtaXNjZWxsYW5lb3VzIGNoYW5nZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTEyNjY5OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgICogV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6
CisKIDIwMTQtMDEtMDggIFJ5dWFuIENob2kgIDxyeXVhbi5jaG9pQHNhbXN1bmcuY29tPgogCiAg
ICAgICAgIFtFRkxdIE1lcmdlIGV3a192aWV3X3NpbmdsZSBpbnRvIGV3a192aWV3CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L21hYy9DaGFu
Z2VMb2cKaW5kZXggNGMxM2JjNzQyYTBiODkzOTk2NmJkMTAwNTY1YjY5ODA1NTFhOGVhMS4uZmQw
NTkzOTI2YWUxNDlhZWIyMzQyOWVkY2QwNGViNGE0ZTVmYzcyNSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9tYWMvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwpA
QCAtMSwzICsxLDEzIEBACisyMDE0LTAxLTA5ICBEYW5pZWwgQmF0ZXMgIDxkYWJhdGVzQGFwcGxl
LmNvbT4KKworICAgICAgICBbaU9TXSBVcHN0cmVhbSBXZWJDb3JlIGFuZCBUb29scyBtaXNjZWxs
YW5lb3VzIGNoYW5nZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTEyNjY5OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgICogTWlncmF0ZUhlYWRlcnMubWFrZToKKyAgICAgICAgKiBzY3J1Yi1pZmRlZnMucGw6
IEFkZGVkLgorCiAyMDE0LTAxLTA4ICBBbmRlcnMgQ2FybHNzb24gIDxhbmRlcnNjYUBhcHBsZS5j
b20+CiAKICAgICAgICAgQWRkIFdURjo6U3RyaW5nVmlldyBhbmQgdXNlIGl0IGZvciBncmFtbWFy
IGNoZWNraW5nCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Db25maWd1cmF0aW9ucy9CYXNl
LnhjY29uZmlnIGIvU291cmNlL1dlYkNvcmUvQ29uZmlndXJhdGlvbnMvQmFzZS54Y2NvbmZpZwpp
bmRleCBmZDRmNjBiODFhYjIyYjM3Mjc5OTc4ZDRmNjNiMDE5N2UyNjI1NDFlLi4wMjIxMTUxMmQ4
ZjI2NWFjOTIzNmY4MGNmYzQ3ZjJiNDMzMDA3NGM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Db25maWd1cmF0aW9ucy9CYXNlLnhjY29uZmlnCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NvbmZp
Z3VyYXRpb25zL0Jhc2UueGNjb25maWcKQEAgLTIxLDYgKzIxLDggQEAKIC8vIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQogLy8gT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4gCiAKKyNpbmNsdWRlICJpT1MueGNjb25maWciCisKIENMQU5HX0NY
WF9MQU5HVUFHRV9TVEFOREFSRCA9IGdudSsrMHg7CiBDTEFOR19DWFhfTElCUkFSWSA9IGxpYmMr
KzsKIENMQU5HX1dBUk5fQk9PTF9DT05WRVJTSU9OID0gWUVTOwpAQCAtNTYsNiArNTgsNyBAQCBH
Q0NfV0FSTl82NF9UT18zMl9CSVRfQ09OVkVSU0lPTiA9ICQoR0NDX1dBUk5fNjRfVE9fMzJfQklU
X0NPTlZFUlNJT05fJChDVVJSRU5UXwogR0NDX1dBUk5fNjRfVE9fMzJfQklUX0NPTlZFUlNJT05f
ID0gWUVTOwogR0NDX1dBUk5fNjRfVE9fMzJfQklUX0NPTlZFUlNJT05fYXJtdjcgPSBZRVM7CiBH
Q0NfV0FSTl82NF9UT18zMl9CSVRfQ09OVkVSU0lPTl9hcm12N3MgPSBZRVM7CitHQ0NfV0FSTl82
NF9UT18zMl9CSVRfQ09OVkVSU0lPTl9hcm02NCA9IE5POwogR0NDX1dBUk5fNjRfVE9fMzJfQklU
X0NPTlZFUlNJT05faTM4NiA9IFlFUzsKIEdDQ19XQVJOXzY0X1RPXzMyX0JJVF9DT05WRVJTSU9O
X3g4Nl82NCA9IE5POwogR0NDX1dBUk5fQUJPVVRfREVQUkVDQVRFRF9GVU5DVElPTlMgPSBOTzsK
QEAgLTgyLDcgKzg1LDEwIEBAIERFQlVHX0RFRklORVNfbm9ybWFsID0gTkRFQlVHOwogREVCVUdf
REVGSU5FUyA9ICQoREVCVUdfREVGSU5FU18kKENVUlJFTlRfVkFSSUFOVCkpOwogCiBHQ0NfT1BU
SU1JWkFUSU9OX0xFVkVMID0gJChHQ0NfT1BUSU1JWkFUSU9OX0xFVkVMXyQoQ1VSUkVOVF9WQVJJ
QU5UKSk7Ci1HQ0NfT1BUSU1JWkFUSU9OX0xFVkVMX25vcm1hbCA9IDI7CitHQ0NfT1BUSU1JWkFU
SU9OX0xFVkVMX25vcm1hbCA9ICQoR0NDX09QVElNSVpBVElPTl9MRVZFTF9ub3JtYWxfJChQTEFU
Rk9STV9OQU1FKSk7CitHQ0NfT1BUSU1JWkFUSU9OX0xFVkVMX25vcm1hbF9pcGhvbmVvcyA9IDM7
CitHQ0NfT1BUSU1JWkFUSU9OX0xFVkVMX25vcm1hbF9pcGhvbmVzaW11bGF0b3IgPSAzOworR0ND
X09QVElNSVpBVElPTl9MRVZFTF9ub3JtYWxfbWFjb3N4ID0gMjsKIEdDQ19PUFRJTUlaQVRJT05f
TEVWRUxfZGVidWcgPSAwOwogCiBTVFJJUF9JTlNUQUxMRURfUFJPRFVDVCA9ICQoU1RSSVBfSU5T
VEFMTEVEX1BST0RVQ1RfJChDVVJSRU5UX1ZBUklBTlQpKTsKQEAgLTkzLDcgKzk5LDkgQEAgREVB
RF9DT0RFX1NUUklQUElOR19kZWJ1ZyA9IE5POwogREVBRF9DT0RFX1NUUklQUElOR19ub3JtYWwg
PSBZRVM7CiBERUFEX0NPREVfU1RSSVBQSU5HID0gJChERUFEX0NPREVfU1RSSVBQSU5HXyQoQ1VS
UkVOVF9WQVJJQU5UKSk7CiAKLVNFQ1RPUkRFUl9GTEFHUyA9IC1XbCwtb3JkZXJfZmlsZSxXZWJD
b3JlLm9yZGVyOworU0VDVE9SREVSX0ZMQUdTID0gJChTRUNUT1JERVJfRkxBR1NfJChQTEFURk9S
TV9OQU1FKSk7CitTRUNUT1JERVJfRkxBR1NfaXBob25lb3MgPSAtV2wsLW9yZGVyX2ZpbGUsJChT
REtST09UKS9BcHBsZUludGVybmFsL09yZGVyRmlsZXMvV2ViQ29yZS5vcmRlcjsKK1NFQ1RPUkRF
Ul9GTEFHU19tYWNvc3ggPSAtV2wsLW9yZGVyX2ZpbGUsV2ViQ29yZS5vcmRlcjsKIAogV0VCQ09S
RV9TUUxJVEUzX0hFQURFUl9TRUFSQ0hfUEFUSFMgPSAkKE5FWFRfUk9PVCkvdXNyL2xvY2FsL2lu
Y2x1ZGUvV2ViQ29yZVNRTGl0ZTM7CiBTUUxJVEUzX0hFQURFUl9TRUFSQ0hfUEFUSFMgPSAkKFNR
TElURTNfSEVBREVSX1NFQVJDSF9QQVRIU18kKFBMQVRGT1JNX05BTUUpKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL0NvbmZpZ3VyYXRpb25zL1dlYkNvcmUueGNjb25maWcgYi9Tb3VyY2Uv
V2ViQ29yZS9Db25maWd1cmF0aW9ucy9XZWJDb3JlLnhjY29uZmlnCmluZGV4IDEwMDk1NzA4NDY4
NDMyZTRhZjkzZmRhYzE3YmFiYTAwNDIzYWE0YWQuLjNhYjIzMjJiZDYwM2FjODJlNGQwY2ExZGRk
ZTMyY2ViYjRhYmMyYjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NvbmZpZ3VyYXRpb25z
L1dlYkNvcmUueGNjb25maWcKKysrIGIvU291cmNlL1dlYkNvcmUvQ29uZmlndXJhdGlvbnMvV2Vi
Q29yZS54Y2NvbmZpZwpAQCAtMzQsNyArMzQsMTAgQEAgRVhQT1JURURfU1lNQk9MU19GSUxFX2kz
ODYgPSAkKEVYUE9SVEVEX1NZTUJPTFNfRklMRV9pMzg2XyQoUExBVEZPUk1fTkFNRSkpOwogRVhQ
T1JURURfU1lNQk9MU19GSUxFX2kzODZfaXBob25lc2ltdWxhdG9yID0gJChCVUlMVF9QUk9EVUNU
U19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvV2ViQ29yZS5MUDY0LmkzODYuZXhwOwogRVhQ
T1JURURfU1lNQk9MU19GSUxFX2kzODZfbWFjb3N4ID0gJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rl
cml2ZWRTb3VyY2VzL1dlYkNvcmUvV2ViQ29yZS5leHA7CiBFWFBPUlRFRF9TWU1CT0xTX0ZJTEVf
cHBjID0gJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvV2ViQ29y
ZS5leHA7Ci1FWFBPUlRFRF9TWU1CT0xTX0ZJTEVfeDg2XzY0ID0gJChCVUlMVF9QUk9EVUNUU19E
SVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvV2ViQ29yZS5MUDY0LmV4cDsKK0VYUE9SVEVEX1NZ
TUJPTFNfRklMRV9wcGM2NCA9ICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9X
ZWJDb3JlL1dlYkNvcmUuTFA2NC5leHA7CitFWFBPUlRFRF9TWU1CT0xTX0ZJTEVfeDg2XzY0ID0g
JChFWFBPUlRFRF9TWU1CT0xTX0ZJTEVfeDg2XzY0XyQoUExBVEZPUk1fTkFNRSkpOworRVhQT1JU
RURfU1lNQk9MU19GSUxFX3g4Nl82NF9pcGhvbmVzaW11bGF0b3IgPSAkKEJVSUxUX1BST0RVQ1RT
X0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9XZWJDb3JlLkxQNjQueDg2XzY0LmV4cDsKK0VY
UE9SVEVEX1NZTUJPTFNfRklMRV94ODZfNjRfbWFjb3N4ID0gJChCVUlMVF9QUk9EVUNUU19ESVIp
L0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvV2ViQ29yZS5MUDY0LmV4cDsKIEdDQ19QUkVGSVhfSEVB
REVSID0gV2ViQ29yZVByZWZpeC5oOwogR0NDX1BSRVBST0NFU1NPUl9ERUZJTklUSU9OUyA9ICQo
REVCVUdfREVGSU5FUykgJChGRUFUVVJFX0RFRklORVMpIFdFQktJVF9WRVJTSU9OX01JTl9SRVFV
SVJFRD1XRUJLSVRfVkVSU0lPTl9MQVRFU1QgJChHQ0NfUFJFUFJPQ0VTU09SX0RFRklOSVRJT05T
KTsKIEZSQU1FV09SS19TRUFSQ0hfUEFUSFMgPSAkKEZSQU1FV09SS19TRUFSQ0hfUEFUSFNfJChQ
TEFURk9STV9OQU1FKSk7CkBAIC01MSw3ICs1NCw5IEBAIE9USEVSX0NQTFVTUExVU0ZMQUdTID0g
JChPVEhFUl9DRkxBR1MpOwogU1RBR0VEX0ZSQU1FV09SS1NfU0VBUkNIX1BBVEggPSAkKFNUQUdF
RF9GUkFNRVdPUktTX1NFQVJDSF9QQVRIXyQoVVNFX1NUQUdJTkdfSU5TVEFMTF9QQVRIKSk7CiBT
VEFHRURfRlJBTUVXT1JLU19TRUFSQ0hfUEFUSF9ZRVMgPSAkKE5FWFRfUk9PVCkkKFNZU1RFTV9M
SUJSQVJZX0RJUikvU3RhZ2VkRnJhbWV3b3Jrcy9TYWZhcmk7CiAKLUhFQURFUl9TRUFSQ0hfUEFU
SFMgPSBGb3J3YXJkaW5nSGVhZGVycyBpY3UgL3Vzci9pbmNsdWRlL2xpYnhzbHQgL3Vzci9pbmNs
dWRlL2xpYnhtbDIgIiR7QlVJTFRfUFJPRFVDVFNfRElSfS9EZXJpdmVkU291cmNlcy9XZWJDb3Jl
IiAiJHtCVUlMVF9QUk9EVUNUU19ESVJ9L3Vzci9sb2NhbC9pbmNsdWRlIiAkKEhFQURFUl9TRUFS
Q0hfUEFUSFMpOworV0VCS0lUQURESVRJT05TX0hFQURFUl9TRUFSQ0hfUEFUSFMgPSAkKEJVSUxU
X1BST0RVQ1RTX0RJUikvdXNyL2xvY2FsL2luY2x1ZGUvV2ViS2l0QWRkaXRpb25zICQoU0RLUk9P
VCkvdXNyL2xvY2FsL2luY2x1ZGUvV2ViS2l0QWRkaXRpb25zOworCitIRUFERVJfU0VBUkNIX1BB
VEhTID0gRm9yd2FyZGluZ0hlYWRlcnMgaWN1IC91c3IvaW5jbHVkZS9saWJ4c2x0IC91c3IvaW5j
bHVkZS9saWJ4bWwyICQoU1FMSVRFM19IRUFERVJfU0VBUkNIX1BBVEhTKSAiJHtCVUlMVF9QUk9E
VUNUU19ESVJ9L0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUiICIkKEJVSUxUX1BST0RVQ1RTX0RJUikv
dXNyL2xvY2FsL2luY2x1ZGUiICQoV0VCS0lUQURESVRJT05TX0hFQURFUl9TRUFSQ0hfUEFUSFMp
ICQoSEVBREVSX1NFQVJDSF9QQVRIUyk7CiBJTkZPUExJU1RfRklMRSA9IEluZm8ucGxpc3Q7CiBJ
TlNUQUxMX1BBVEggPSAkKElOU1RBTExfUEFUSF8kKFBMQVRGT1JNX05BTUUpKTsKIElOU1RBTExf
UEFUSF9pcGhvbmVvcyA9ICQoU1lTVEVNX0xJQlJBUllfRElSKS9Qcml2YXRlRnJhbWV3b3JrczsK
QEAgLTY4LDggKzczLDggQEAgSU5TVEFMTEhEUlNfU0NSSVBUX1BIQVNFID0gWUVTOwogUFJPRFVD
VF9OQU1FID0gV2ViQ29yZTsKIE9USEVSX0xERkxBR1NfQkFTRSA9IC1sc3FsaXRlMyAtbG9iamMg
LWxBTkdMRSAtYWxsb3dhYmxlX2NsaWVudCBXZWJDb3JlVGVzdFN1cHBvcnQ7CiBPVEhFUl9MREZM
QUdTID0gJChpbmhlcml0ZWQpICQoT1RIRVJfTERGTEFHU18kKFBMQVRGT1JNX05BTUUpKTsKLU9U
SEVSX0xERkxBR1NfaXBob25lb3MgPSAkKE9USEVSX0xERkxBR1NfQkFTRSkgLWZyYW1ld29yayBD
Rk5ldHdvcmsgLWZyYW1ld29yayBDb3JlRm91bmRhdGlvbiAtZnJhbWV3b3JrIENvcmVHcmFwaGlj
cyAtZnJhbWV3b3JrIENvcmVUZXh0IC1mcmFtZXdvcmsgRm91bmRhdGlvbiAtZnJhbWV3b3JrIEdy
YXBoaWNzU2VydmljZXMgLWZyYW1ld29yayBJbWFnZUlPIC1mcmFtZXdvcmsgUXVhcnR6Q29yZTsK
LU9USEVSX0xERkxBR1NfaXBob25lc2ltdWxhdG9yID0gJChPVEhFUl9MREZMQUdTX2lwaG9uZW9z
KTsKK09USEVSX0xERkxBR1NfaXBob25lb3MgPSAkKE9USEVSX0xERkxBR1NfaXBob25lc2ltdWxh
dG9yKSAtZnJhbWV3b3JrIElPU3VyZmFjZTsKK09USEVSX0xERkxBR1NfaXBob25lc2ltdWxhdG9y
ID0gJChPVEhFUl9MREZMQUdTX0JBU0UpIC1mcmFtZXdvcmsgQWNjZWxlcmF0ZSAtZnJhbWV3b3Jr
IENGTmV0d29yayAtZnJhbWV3b3JrIENvcmVGb3VuZGF0aW9uIC1mcmFtZXdvcmsgQ29yZUdyYXBo
aWNzIC1mcmFtZXdvcmsgQ29yZVRleHQgLWZyYW1ld29yayBGb3VuZGF0aW9uIC1mcmFtZXdvcmsg
R3JhcGhpY3NTZXJ2aWNlcyAtZnJhbWV3b3JrIEltYWdlSU8gLWZyYW1ld29yayBPcGVuR0xFUyAt
ZnJhbWV3b3JrIFF1YXJ0ekNvcmUgLWxNb2JpbGVHZXN0YWx0OwogT1RIRVJfTERGTEFHU19tYWNv
c3ggPSAkKE9USEVSX0xERkxBR1NfQkFTRSkgLXN1Yl9saWJyYXJ5IGxpYm9iamMgLXVtYnJlbGxh
IFdlYktpdCAtYWxsb3dhYmxlX2NsaWVudCBXZWJLaXQyIC1mcmFtZXdvcmsgSU9TdXJmYWNlOwog
CiBOT1JNQUxfV0VCQ09SRV9GUkFNRVdPUktTX0RJUiA9ICQoTk9STUFMX1dFQkNPUkVfRlJBTUVX
T1JLU19ESVJfJChQTEFURk9STV9OQU1FKSk7CkBAIC0xMDIsMTAgKzEwNywxMyBAQCBQUk9EVUNU
SU9OX0ZSQU1FV09SS1NfRElSX21hY29zeF9VU0VfU1RBR0lOR19JTlNUQUxMX1BBVEhfWUVTID0g
JChORVhUX1JPT1QpJChTWQogSkFWQVNDUklQVENPUkVfUFJJVkFURV9IRUFERVJTX0RJUiA9ICQo
SkFWQVNDUklQVENPUkVfUFJJVkFURV9IRUFERVJTX0RJUl8kKENPTkZJR1VSQVRJT04pKTsKIEpB
VkFTQ1JJUFRDT1JFX1BSSVZBVEVfSEVBREVSU19ESVJfUmVsZWFzZSA9ICQoSkFWQVNDUklQVENP
UkVfUFJJVkFURV9IRUFERVJTX2VuZ2luZWVyaW5nKTsKIEpBVkFTQ1JJUFRDT1JFX1BSSVZBVEVf
SEVBREVSU19ESVJfRGVidWcgPSAkKEpBVkFTQ1JJUFRDT1JFX1BSSVZBVEVfSEVBREVSU19lbmdp
bmVlcmluZyk7Ci1KQVZBU0NSSVBUQ09SRV9QUklWQVRFX0hFQURFUlNfRElSX1Byb2R1Y3Rpb24g
PSAkKFNES1JPT1QpJChQUk9EVUNUSU9OX0ZSQU1FV09SS1NfRElSKS9KYXZhU2NyaXB0Q29yZS5m
cmFtZXdvcmsvUHJpdmF0ZUhlYWRlcnM7CitKQVZBU0NSSVBUQ09SRV9QUklWQVRFX0hFQURFUlNf
RElSX1Byb2R1Y3Rpb24gPSAkKEpBVkFTQ1JJUFRDT1JFX1BSSVZBVEVfSEVBREVSU19Qcm9kdWN0
aW9uXyQoUExBVEZPUk1fTkFNRSkpOworSkFWQVNDUklQVENPUkVfUFJJVkFURV9IRUFERVJTX0RJ
Ul9Qcm9kdWN0aW9uX2lwaG9uZW9zID0gJChTREtST09UKS8kKFNZU1RFTV9MSUJSQVJZX0RJUikv
RnJhbWV3b3Jrcy9KYXZhU2NyaXB0Q29yZS5mcmFtZXdvcmsvSGVhZGVyczsKK0pBVkFTQ1JJUFRD
T1JFX1BSSVZBVEVfSEVBREVSU19ESVJfUHJvZHVjdGlvbl9pcGhvbmVzaW11bGF0b3IgPSAkKEpB
VkFTQ1JJUFRDT1JFX1BSSVZBVEVfSEVBREVSU19ESVJfUHJvZHVjdGlvbl9pcGhvbmVvcyk7CitK
QVZBU0NSSVBUQ09SRV9QUklWQVRFX0hFQURFUlNfRElSX1Byb2R1Y3Rpb25fbWFjb3N4ID0gJChT
REtST09UKSQoUFJPRFVDVElPTl9GUkFNRVdPUktTX0RJUikvSmF2YVNjcmlwdENvcmUuZnJhbWV3
b3JrL1ByaXZhdGVIZWFkZXJzOwogSkFWQVNDUklQVENPUkVfUFJJVkFURV9IRUFERVJTX2VuZ2lu
ZWVyaW5nID0gJChCVUlMVF9QUk9EVUNUU19ESVIpL0phdmFTY3JpcHRDb3JlLmZyYW1ld29yay9Q
cml2YXRlSGVhZGVyczsKIAogRVhDTFVERURfU09VUkNFX0ZJTEVfTkFNRVMgPSAkKEVYQ0xVREVE
X1NPVVJDRV9GSUxFX05BTUVTXyQoUExBVEZPUk1fTkFNRSkpOwotRVhDTFVERURfU09VUkNFX0ZJ
TEVfTkFNRVNfaXBob25lb3MgPSAqLnRpZmYgKkN1cnNvci5wbmcgQ3Vyc29yLmNwcCBDdXJzb3JN
YWMubW0gRXZlbnRIYW5kbGVyTWFjLm1tIEhUTUxDb252ZXJ0ZXIubW0gS2lsbFJpbmdNYWMubW0g
UGxhdGZvcm1FdmVudEZhY3RvcnlNYWMubW0gU1NMS2V5R2VuZXJhdG9yTWFjLmNwcCBTZWFyY2hQ
b3B1cE1lbnVNYWMubW0gU2hhcmVkVGltZXJNYWMubW0gV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJv
bGxlci5tbSBXZWJWaWRlb0Z1bGxzY3JlZW5IVURXaW5kb3dDb250cm9sbGVyLm1tIFdlYldpbmRv
d0FuaW1hdGlvbi5tbTsKK0VYQ0xVREVEX1NPVVJDRV9GSUxFX05BTUVTX2lwaG9uZW9zID0gKi50
aWZmICpDdXJzb3IucG5nIEFjY2Vzc2liaWxpdHlPYmplY3RNYWMubW0gQVhPYmplY3RDYWNoZU1h
Yy5tbSBDbGlwYm9hcmRNYWMubW0gQ29sb3JNYWMubW0gQ3Vyc29yLmNwcCBDdXJzb3JNYWMubW0g
RWRpdG9yTWFjLm1tIEV2ZW50SGFuZGxlck1hYy5tbSBFdmVudExvb3BNYWMubW0gR2VvbG9jYXRp
b25TZXJ2aWNlTWFjLm1tIEdyYXBoaWNzQ29udGV4dDNET3BlbkdMRVMuY3BwIEljb25EYXRhYmFz
ZS5jcHAgSWNvbk1hYy5tbSBLZXlFdmVudE1hYy5tbSBLaWxsUmluZ01hYy5tbSBMb2NhbEN1cnJl
bnRHcmFwaGljc0NvbnRleHQubW0gTUlNRVR5cGVSZWdpc3RyeU1hYy5tbSBNZWRpYVBsYXllclBy
aXZhdGVRVEtpdC5tbSBOU1Njcm9sbGVySW1wRGV0YWlscy5tbSBOZXR3b3JrU3RhdGVOb3RpZmll
ck1hYy5jcHAgUGFzdGVib2FyZE1hYy5tbSBQbGF0Zm9ybUV2ZW50RmFjdG9yeU1hYy5tbSBQbGF0
Zm9ybU1vdXNlRXZlbnRNYWMubW0gUGxhdGZvcm1QYXN0ZWJvYXJkTWFjLm1tIFBsYXRmb3JtU2Ny
ZWVuTWFjLm1tIFBsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXJNYWMubW0gUGx1Z2luTWFpblRocmVh
ZFNjaGVkdWxlci5jcHAgUnVuTG9vcE1hYy5tbSBTU0xLZXlHZW5lcmF0b3JNYWMuY3BwIFNjcm9s
bFZpZXdNYWMubW0gU2Nyb2xsYmFyVGhlbWVNYWMubW0gU2hhcmVkVGltZXJNYWMubW0gU291bmRN
YWMubW0gU3lzdGVtVGltZU1hYy5jcHAgVGhlbWVNYWMubW0gVGhyZWFkQ2hlY2subW0gV2ViQWNj
ZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJNYWMubW0gV2ViQ29yZVN5c3RlbUludGVyZmFjZS5tbSBX
ZWJDb3JlVVJMUmVzcG9uc2UubW0gV2ViQ29yZVZpZXcubSBXZWJGb250Q2FjaGUubW0gV2ViVmlk
ZW9GdWxsc2NyZWVuQ29udHJvbGxlci5tbSBXZWJWaWRlb0Z1bGxzY3JlZW5IVURXaW5kb3dDb250
cm9sbGVyLm1tIFdlYldpbmRvd0FuaW1hdGlvbi5tbSBXaGVlbEV2ZW50TWFjLm1tIFdpZGdldE1h
Yy5tbSBtYWMvTGF5ZXJQb29sLm1tIERpc3BsYXlSZWZyZXNoTW9uaXRvck1hYy5tbTsKIEVYQ0xV
REVEX1NPVVJDRV9GSUxFX05BTUVTX2lwaG9uZXNpbXVsYXRvciA9ICQoRVhDTFVERURfU09VUkNF
X0ZJTEVfTkFNRVNfaXBob25lb3MpOwogRVhDTFVERURfU09VUkNFX0ZJTEVfTkFNRVNfbWFjb3N4
ID0gKklPUy5oICpJT1MuY3BwICpJT1MubW0gS2lsbFJpbmdOb25lLmNwcDsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL0NvbmZpZ3VyYXRpb25zL1dlYkNvcmVUZXN0U3VwcG9ydC54Y2NvbmZp
ZyBiL1NvdXJjZS9XZWJDb3JlL0NvbmZpZ3VyYXRpb25zL1dlYkNvcmVUZXN0U3VwcG9ydC54Y2Nv
bmZpZwppbmRleCA4NGJlNzYzNmFmNDA0Y2Y5YWRiNmRkZjhjOWM3NGM5ODVmMjkyNTIxLi42Y2U4
MGJiNDI0YmQ3NDhhY2Q1OWFkYzEwMzRmZThhM2Q2MTRjM2IwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9Db25maWd1cmF0aW9ucy9XZWJDb3JlVGVzdFN1cHBvcnQueGNjb25maWcKKysrIGIv
U291cmNlL1dlYkNvcmUvQ29uZmlndXJhdGlvbnMvV2ViQ29yZVRlc3RTdXBwb3J0LnhjY29uZmln
CkBAIC0yNiwxMCArMjYsMTUgQEAKIFBSSVZBVEVfSEVBREVSU19GT0xERVJfUEFUSCA9ICQoUFJJ
VkFURV9IRUFERVJTX0ZPTERFUl9QQVRIXyQoQ09ORklHVVJBVElPTikpOwogUFJJVkFURV9IRUFE
RVJTX0ZPTERFUl9QQVRIX0RlYnVnID0gV2ViQ29yZVRlc3RTdXBwb3J0OwogUFJJVkFURV9IRUFE
RVJTX0ZPTERFUl9QQVRIX1JlbGVhc2UgPSAkKFBSSVZBVEVfSEVBREVSU19GT0xERVJfUEFUSF9E
ZWJ1Zyk7Ci1QUklWQVRFX0hFQURFUlNfRk9MREVSX1BBVEhfUHJvZHVjdGlvbiA9IC91c3IvbG9j
YWwvaW5jbHVkZS9XZWJDb3JlVGVzdFN1cHBvcnQ7CitQUklWQVRFX0hFQURFUlNfRk9MREVSX1BB
VEhfUHJvZHVjdGlvbiA9ICQoUFJJVkFURV9IRUFERVJTX0ZPTERFUl9QQVRIX1Byb2R1Y3Rpb25f
JChQTEFURk9STV9OQU1FKSk7CitQUklWQVRFX0hFQURFUlNfRk9MREVSX1BBVEhfUHJvZHVjdGlv
bl9pcGhvbmVvcyA9IC91c3IvbG9jYWwvaW5jbHVkZS9XZWJDb3JlVGVzdFN1cHBvcnQ7CitQUklW
QVRFX0hFQURFUlNfRk9MREVSX1BBVEhfUHJvZHVjdGlvbl9pcGhvbmVzaW11bGF0b3IgPSAkKElO
RElHT19JTlNUQUxMX1BBVEhfUFJFRklYKSQoUFJJVkFURV9IRUFERVJTX0ZPTERFUl9QQVRIX1By
b2R1Y3Rpb25faXBob25lb3MpOworUFJJVkFURV9IRUFERVJTX0ZPTERFUl9QQVRIX1Byb2R1Y3Rp
b25fbWFjb3N4ID0gL3Vzci9sb2NhbC9pbmNsdWRlL1dlYkNvcmVUZXN0U3VwcG9ydDsKIAotSU5T
VEFMTF9QQVRIID0gJChJTlNUQUxMX1BBVEhfJChDT05GSUdVUkFUSU9OKSk7Ci1JTlNUQUxMX1BB
VEhfUHJvZHVjdGlvbiA9IC91c3IvbG9jYWwvbGliOworSU5TVEFMTF9QQVRIID0gJChJTlNUQUxM
X1BBVEhfJChDT05GSUdVUkFUSU9OKV8kKFBMQVRGT1JNX05BTUUpKTsKK0lOU1RBTExfUEFUSF9Q
cm9kdWN0aW9uX2lwaG9uZW9zID0gL3Vzci9sb2NhbC9saWI7CitJTlNUQUxMX1BBVEhfUHJvZHVj
dGlvbl9pcGhvbmVzaW11bGF0b3IgPSAkKElORElHT19JTlNUQUxMX1BBVEhfUFJFRklYKSQoSU5T
VEFMTF9QQVRIX1Byb2R1Y3Rpb25faXBob25lb3MpOworSU5TVEFMTF9QQVRIX1Byb2R1Y3Rpb25f
bWFjb3N4ID0gL3Vzci9sb2NhbC9saWI7CiAKIFNLSVBfSU5TVEFMTCA9ICQoU0tJUF9JTlNUQUxM
XyQoRk9SQ0VfVE9PTF9JTlNUQUxMKSk7CiBTS0lQX0lOU1RBTExfID0gWUVTOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvQ29uZmlndXJhdGlvbnMvaU9TLnhjY29uZmlnIGIvU291cmNlL1dl
YkNvcmUvQ29uZmlndXJhdGlvbnMvaU9TLnhjY29uZmlnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE3N2IzMTk4OWM1
ZTFmYWRhNmQ1MDYzYWM3NDY2YjQ1ZjA2YzBhMjMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Db25maWd1cmF0aW9ucy9pT1MueGNjb25maWcKQEAgLTAsMCArMSBAQAorI2luY2x1
ZGUgIjxERVZFTE9QRVJfRElSPi9BcHBsZUludGVybmFsL1hjb2RlQ29uZmlnL0FzcGVuRmFtaWx5
LnhjY29uZmlnIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMubWFr
ZSBiL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UKaW5kZXggYzQ5YzdhNzhlYmM4
YWZlNzNhMjVmNTFjZjgwZDA5ZDM2YWYwMzc3Yi4uZWNlYzI3NWY1OGRlZDkxNDMxOGI5NmQ2MGJk
ZjFlYmYyMDgxZDkxNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMu
bWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtlCkBAIC0yOCw2ICsy
OCw3IEBACiAKIFZQQVRIID0gXAogICAgICQoV2ViQ29yZSkgXAorICAgICQoV2ViQ29yZSkvTW9k
dWxlcy9haXJwbGF5IFwKICAgICAkKFdlYkNvcmUpL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEgXAog
ICAgICQoV2ViQ29yZSkvTW9kdWxlcy9nZW9sb2NhdGlvbiBcCiAgICAgJChXZWJDb3JlKS9Nb2R1
bGVzL2luZGV4ZWRkYiBcCkBAIC02Nyw2ICs2OCw3IEBAIFZQQVRIID0gXAogIwogCiBCSU5ESU5H
X0lETFMgPSBcCisgICAgJChXZWJDb3JlKS9Nb2R1bGVzL2FpcnBsYXkvV2ViS2l0UGxheWJhY2tU
YXJnZXRBdmFpbGFiaWxpdHlFdmVudC5pZGwgXAogICAgICQoV2ViQ29yZSkvTW9kdWxlcy9lbmNy
eXB0ZWRtZWRpYS9NZWRpYUtleU1lc3NhZ2VFdmVudC5pZGwgXAogICAgICQoV2ViQ29yZSkvTW9k
dWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleU5lZWRlZEV2ZW50LmlkbCBcCiAgICAgJChXZWJD
b3JlKS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5U2Vzc2lvbi5pZGwgXApAQCAtNzIw
LDYgKzcyMiwxMiBAQCBpZm5lcSAoJChTREtST09UKSwpCiAJU0RLX0ZMQUdTPS1pc3lzcm9vdCAk
KFNES1JPT1QpCiBlbmRpZgogCitpZmVxICgkKHNoZWxsICQoQ0MpIC1pc3lzcm9vdCAkKFNES1JP
T1QpIC1zdGQ9Z251KysxMSAteCBjKysgLUUgLVAgLWRNIC1GICQoQlVJTFRfUFJPRFVDVFNfRElS
KSAkKEZSQU1FV09SS19GTEFHUykgJChIRUFERVJfRkxBR1MpIC1pbmNsdWRlICJ3dGYvUGxhdGZv
cm0uaCIgL2Rldi9udWxsIHwgZ3JlcCAnIFdURl9QTEFURk9STV9JT1MgJyB8IGN1dCAtZCcgJyAt
ZjMpLCAxKQorICAgIFdURl9QTEFURk9STV9JT1MgPSAxCitlbHNlCisgICAgV1RGX1BMQVRGT1JN
X0lPUyA9IDAKK2VuZGlmCisKIGlmZXEgKCQoc2hlbGwgJChDQykgLXN0ZD1nbnUrKzExIC14IGMr
KyAtRSAtUCAtZE0gJChTREtfRkxBR1MpICQoRlJBTUVXT1JLX0ZMQUdTKSAkKEhFQURFUl9GTEFH
UykgLWluY2x1ZGUgInd0Zi9QbGF0Zm9ybS5oIiAvZGV2L251bGwgfCBncmVwIEVOQUJMRV9PUklF
TlRBVElPTl9FVkVOVFMgfCBjdXQgLWQnICcgLWYzKSwgMSkKICAgICBFTkFCTEVfT1JJRU5UQVRJ
T05fRVZFTlRTID0gMQogZW5kaWYKQEAgLTcyOCw2ICs3MzYsMjUgQEAgaWZlcSAoJChQTEFURk9S
TV9GRUFUVVJFX0RFRklORVMpLCkKIFBMQVRGT1JNX0ZFQVRVUkVfREVGSU5FUyA9IENvbmZpZ3Vy
YXRpb25zL0ZlYXR1cmVEZWZpbmVzLnhjY29uZmlnCiBlbmRpZgogCitpZmVxICgkKFdURl9QTEFU
Rk9STV9JT1MpLCAxKQorCitBRERJVElPTkFMX0JJTkRJTkdfSURMUyA9IFwKKwlHZXN0dXJlRXZl
bnQuaWRsIFwKKwlUb3VjaC5pZGwgXAorCVRvdWNoRXZlbnQuaWRsIFwKKwlUb3VjaExpc3QuaWRs
CisKK0JJTkRJTkdfSURMUyArPSAkKEFERElUSU9OQUxfQklORElOR19JRExTKQorCithbGwgOiAk
KEFERElUSU9OQUxfQklORElOR19JRExTOiUuaWRsPUpTJS5oKQorCit2cGF0aCAlLmlkbCAkKEJV
SUxUX1BST0RVQ1RTX0RJUikvdXNyL2xvY2FsL2luY2x1ZGUgJChTREtST09UKS91c3IvbG9jYWwv
aW5jbHVkZQorCiskKEFERElUSU9OQUxfQklORElOR19JRExTKSA6ICUgOiBXZWJLaXRBZGRpdGlv
bnMvJQorCWNwICQ8IC4KKworZW5kaWYKKwogZW5kaWYgIyBNQUNPUwogCiBpZm5kZWYgRU5BQkxF
X09SSUVOVEFUSU9OX0VWRU5UUwpAQCAtMTE2NCwxNSArMTE5MSw1MiBAQCBDaGFyc2V0RGF0YS5j
cHAgOiBwbGF0Zm9ybS90ZXh0L21hYy9tYWtlLWNoYXJzZXQtdGFibGUucGwgcGxhdGZvcm0vdGV4
dC9tYWMvY2hhcgogCiBpZm5lcSAoJChBQ1RJT04pLGluc3RhbGxoZHJzKQogCitpZmVxICgkKFdU
Rl9QTEFURk9STV9JT1MpLDEpCisKK2lmZXEgKCQoZmluZHN0cmluZyBhcm12NiwkKEFSQ0hTKSks
IGFybXY2KQorICAgIFdFQkNPUkVfRVhQT1JUX0ZJTEVTIDo9ICQoV0VCQ09SRV9FWFBPUlRfRklM
RVMpIFdlYkNvcmUuTFA2NC5hcm12Ni5leHAKK2VuZGlmCitpZmVxICgkKGZpbmRzdHJpbmcgYXJt
djdmLCQoQVJDSFMpKSwgYXJtdjdmKQorICAgIFdFQkNPUkVfRVhQT1JUX0ZJTEVTIDo9ICQoV0VC
Q09SRV9FWFBPUlRfRklMRVMpIFdlYkNvcmUuTFA2NC5hcm12N2YuZXhwCitlbmRpZgoraWZlcSAo
JChmaW5kc3RyaW5nIGFybXY3cywkKEFSQ0hTKSksIGFybXY3cykKKyAgICBXRUJDT1JFX0VYUE9S
VF9GSUxFUyA6PSAkKFdFQkNPUkVfRVhQT1JUX0ZJTEVTKSBXZWJDb3JlLkxQNjQuYXJtdjdzLmV4
cAorZW5kaWYKK2lmZXEgKCQoZmluZHN0cmluZyBhcm12NywkKEFSQ0hTKSksIGFybXY3KQorICAg
IFdFQkNPUkVfRVhQT1JUX0ZJTEVTIDo9ICQoV0VCQ09SRV9FWFBPUlRfRklMRVMpIFdlYkNvcmUu
TFA2NC5hcm12Ny5leHAKK2VuZGlmCitpZmVxICgkKGZpbmRzdHJpbmcgYXJtNjQsJChBUkNIUykp
LCBhcm02NCkKKyAgICBXRUJDT1JFX0VYUE9SVF9GSUxFUyA6PSAkKFdFQkNPUkVfRVhQT1JUX0ZJ
TEVTKSBXZWJDb3JlLkxQNjQuYXJtNjQuZXhwCitlbmRpZgoraWZlcSAoJChmaW5kc3RyaW5nIGkz
ODYsJChBUkNIUykpLCBpMzg2KQorICAgIFdFQkNPUkVfRVhQT1JUX0ZJTEVTIDo9ICQoV0VCQ09S
RV9FWFBPUlRfRklMRVMpIFdlYkNvcmUuTFA2NC5pMzg2LmV4cAorZW5kaWYKK2lmZXEgKCQoZmlu
ZHN0cmluZyB4ODZfNjQsJChBUkNIUykpLCB4ODZfNjQpCisgICAgV0VCQ09SRV9FWFBPUlRfRklM
RVMgOj0gJChXRUJDT1JFX0VYUE9SVF9GSUxFUykgV2ViQ29yZS5MUDY0Lng4Nl82NC5leHAKK2Vu
ZGlmCisKK2FsbCA6ICQoV0VCQ09SRV9FWFBPUlRfRklMRVMpCisKK1dlYkNvcmUuJS5leHAgOiBn
ZW5lcmF0ZS1leHBvcnQtZmlsZSBXZWJDb3JlLmV4cC5pbgorCSReICRACisKKyMgU3dpdGNoIE5T
UmVjdCwgTlNTaXplIGFuZCBOU1BvaW50IHdpdGggdGhlaXIgQ0cgY291bnRlcnBhcnRzIGZvciB0
aGUgNjQtYml0IGV4cG9ydHMgZmlsZS4KK1dlYkNvcmUuTFA2NC4lLmV4cCA6IFdlYkNvcmUuJS5l
eHAKKwljYXQgJF4gfCBzZWQgLWUgcy83X05TUmVjdC82Q0dSZWN0LyAtZSBzLzdfTlNTaXplLzZD
R1NpemUvIC1lIHMvOF9OU1BvaW50LzdDR1BvaW50LyA+ICRACisKK2Vsc2UKKwogYWxsIDogV2Vi
Q29yZS5leHAgV2ViQ29yZS5MUDY0LmV4cAogCiBXZWJDb3JlLmV4cCA6ICQoQlVJTFRfUFJPRFVD
VFNfRElSKS9XZWJDb3JlRXhwb3J0RmlsZUdlbmVyYXRvcgotCSReID4gJEAKKwkkXiB8IGdyZXAg
LXYgJ14jICcgfCBzZWQgLWUgJ3MvXiMvLycgPiAkQAogCiAjIFN3aXRjaCBOU1JlY3QsIE5TU2l6
ZSBhbmQgTlNQb2ludCB3aXRoIHRoZWlyIENHIGNvdW50ZXJwYXJ0cyBmb3IgdGhlIDY0LWJpdCBl
eHBvcnRzIGZpbGUuCiBXZWJDb3JlLkxQNjQuZXhwIDogV2ViQ29yZS5leHAKIAljYXQgJF4gfCBz
ZWQgLWUgcy83X05TUmVjdC82Q0dSZWN0LyAtZSBzLzdfTlNTaXplLzZDR1NpemUvIC1lIHMvOF9O
U1BvaW50LzdDR1BvaW50LyA+ICRACiAKK2VuZGlmICMgV1RGX1BMQVRGT1JNX0lPUworCiBlbmRp
ZiAjIGluc3RhbGxoZHJzCiAKICMgLS0tLS0tLS0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L0VuZ2xpc2gubHByb2ovTG9jYWxpemFibGUuc3RyaW5ncyBiL1NvdXJjZS9XZWJDb3JlL0VuZ2xp
c2gubHByb2ovTG9jYWxpemFibGUuc3RyaW5ncwppbmRleCBjMzdmNzg4ZDJlNjAxMmFkMjk4ZTQz
N2RlYmIyN2E5ZTlhNzcwOTY3Li41MDBjOTQxYWNiN2UxM2MwNzc2YWJmNTQ5NmFjNTJhNDc5NTg2
NzlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9FbmdsaXNoLmxwcm9qL0xvY2FsaXphYmxl
LnN0cmluZ3MKKysrIGIvU291cmNlL1dlYkNvcmUvRW5nbGlzaC5scHJvai9Mb2NhbGl6YWJsZS5z
dHJpbmdzCkBAIC0xMTIsNiArMTEyLDEyIEBACiAvKiB0aXRsZSBmb3IgYSBtdWx0aXBsZSBmaWxl
IGNob29zZXIgYnV0dG9uIHVzZWQgaW4gSFRNTCBmb3Jtcy4gVGhpcyB0aXRsZSBzaG91bGQgYmUg
YXMgc2hvcnQgYXMgcG9zc2libGUuICovCiAiQ2hvb3NlIEZpbGVzIiA9ICJDaG9vc2UgRmlsZXMi
OwogCisvKiBQTEFURk9STShJT1MpIHRpdGxlIGZvciBmaWxlIGJ1dHRvbiB1c2VkIGluIEhUTUwg
Zm9ybXMgZm9yIG1lZGlhIGZpbGVzICovCisiQ2hvb3NlIE1lZGlhIChTaW5nbGUpIiA9ICJDaG9v
c2UgUGhvdG8iOworCisvKiBQTEFURk9STShJT1MpIHRpdGxlIGZvciBmaWxlIGJ1dHRvbiB1c2Vk
IGluIEhUTUw1IGZvcm1zIGZvciBtdWx0aXBsZSBtZWRpYSBmaWxlcyAqLworIkNob29zZSBNZWRp
YSAoTXVsdGlwbGUpIiA9ICJDaG9vc2UgUGhvdG9zIjsKKwogLyogbWVudSBpdGVtIGluIFJlY2Vu
dCBTZWFyY2hlcyBtZW51IHRoYXQgZW1wdGllcyBtZW51J3MgY29udGVudHMgKi8KICJDbGVhciBS
ZWNlbnQgU2VhcmNoZXMiID0gIkNsZWFyIFJlY2VudCBTZWFyY2hlcyI7CiAKQEAgLTE1Nyw2ICsx
NjMsMTIgQEAKIC8qIERlZmF1bHQgd3JpdGluZyBkaXJlY3Rpb24gY29udGV4dCBtZW51IGl0ZW0g
Ki8KICJEZWZhdWx0IiA9ICJEZWZhdWx0IjsKIAorLyogUExBVEZPUk0oSU9TKSBVbmRvIGFjdGlv
biBuYW1lICovCisiRGVsZXRlIChVbmRvIGFjdGlvbiBuYW1lKSIgPSAiRGVsZXRlIjsKKworLyog
UExBVEZPUk0oSU9TKSBVbmRvIGFjdGlvbiBuYW1lICovCisiRGljdGF0aW9uIChVbmRvIGFjdGlv
biBuYW1lKSIgPSAiRGljdGF0aW9uIjsKKwogLyogdGV4dCB0byBkaXNwbGF5IGluIDxkZXRhaWxz
PiB0YWcgd2hlbiBpdCBoYXMgbm8gPHN1bW1hcnk+IGNoaWxkICovCiAiRGV0YWlscyIgPSAiRGV0
YWlscyI7CiAKQEAgLTc4MSw2ICs3OTMsMTIgQEAKIC8qIHRleHQgdG8gZGlzcGxheSBpbiBmaWxl
IGJ1dHRvbiB1c2VkIGluIEhUTUwgZm9ybXMgd2hlbiBubyBmaWxlcyBhcmUgc2VsZWN0ZWQgYW5k
IHRoZSBidXR0b24gYWxsb3dzIG11bHRpcGxlIGZpbGVzIHRvIGJlIHNlbGVjdGVkICovCiAibm8g
ZmlsZXMgc2VsZWN0ZWQiID0gIm5vIGZpbGVzIHNlbGVjdGVkIjsKIAorLyogUExBVEZPUk0oSU9T
KSB0ZXh0IHRvIGRpc3BsYXkgaW4gZmlsZSBidXR0b24gdXNlZCBpbiBIVE1MIGZvcm1zIGZvciBt
ZWRpYSBmaWxlcyB3aGVuIG5vIG1lZGlhIGZpbGUgaXMgc2VsZWN0ZWQgKi8KKyJubyBtZWRpYSBz
ZWxlY3RlZCAoc2luZ2xlKSIgPSAibm8gcGhvdG8gc2VsZWN0ZWQiOworCisvKiBQTEFURk9STShJ
T1MpIHRleHQgdG8gZGlzcGxheSBpbiBmaWxlIGJ1dHRvbiB1c2VkIGluIEhUTUwgZm9ybXMgZm9y
IG1lZGlhIGZpbGVzIHdoZW4gbm8gbWVkaWEgZmlsZXMgYXJlIHNlbGVjdGVkIGFuZCB0aGUgYnV0
dG9uIGFsbG93cyBtdWx0aXBsZSBmaWxlcyB0byBiZSBzZWxlY3RlZCAqLworIm5vIG1lZGlhIHNl
bGVjdGVkIChtdWx0aXBsZSkiID0gIm5vIHBob3RvcyBzZWxlY3RlZCI7CisKIC8qIEhUVFAgcmVz
dWx0IGNvZGUgc3RyaW5nICovCiAibm8gbG9uZ2VyIGV4aXN0cyIgPSAibm8gbG9uZ2VyIGV4aXN0
cyI7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYWlycGxheS9XZWJLaXRQ
bGF5YmFja1RhcmdldEF2YWlsYWJpbGl0eUV2ZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvYWlycGxheS9XZWJLaXRQbGF5YmFja1RhcmdldEF2YWlsYWJpbGl0eUV2ZW50LmNwcApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi5mNzU1ODYwZDI2MTc3YjlkZDliODU3YzhlZjFiNTFlNjExZmQyOTgyCi0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9haXJwbGF5L1dlYktpdFBsYXliYWNr
VGFyZ2V0QXZhaWxhYmlsaXR5RXZlbnQuY3BwCkBAIC0wLDAgKzEsNTkgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4g
YGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBP
UgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNp
bmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJXZWJLaXRQbGF5YmFja1RhcmdldEF2YWlsYWJp
bGl0eUV2ZW50LmgiCisKKyNpZiBFTkFCTEUoSU9TX0FJUlBMQVkpCisKK25hbWVzcGFjZSBXZWJD
b3JlIHsKKworc3RhdGljIGNvbnN0IEF0b21pY1N0cmluZyYgc3RyaW5nRm9yUGxheWJhY2tUYXJn
ZXRBdmFpbGFiaWxpdHkoYm9vbCBhdmFpbGFibGUpCit7CisgICAgREVGSU5FX1NUQVRJQ19MT0NB
TChBdG9taWNTdHJpbmcsIGF2YWlsYWJsZVN0cmluZywgKCJhdmFpbGFibGUiLCBBdG9taWNTdHJp
bmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChBdG9t
aWNTdHJpbmcsIG5vdEF2YWlsYWJsZVN0cmluZywgKCJub3QtYXZhaWxhYmxlIiwgQXRvbWljU3Ry
aW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOworCisgICAgcmV0dXJuIGF2YWlsYWJsZSA/IGF2
YWlsYWJsZVN0cmluZyA6IG5vdEF2YWlsYWJsZVN0cmluZzsKK30KKworV2ViS2l0UGxheWJhY2tU
YXJnZXRBdmFpbGFiaWxpdHlFdmVudDo6V2ViS2l0UGxheWJhY2tUYXJnZXRBdmFpbGFiaWxpdHlF
dmVudCgpCit7Cit9CisKK1dlYktpdFBsYXliYWNrVGFyZ2V0QXZhaWxhYmlsaXR5RXZlbnQ6Oldl
YktpdFBsYXliYWNrVGFyZ2V0QXZhaWxhYmlsaXR5RXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiBl
dmVudFR5cGUsIGJvb2wgYXZhaWxhYmxlKQorICAgIDogRXZlbnQoZXZlbnRUeXBlLCBmYWxzZSwg
ZmFsc2UpCisgICAgLCBtX2F2YWlsYWJpbGl0eShzdHJpbmdGb3JQbGF5YmFja1RhcmdldEF2YWls
YWJpbGl0eShhdmFpbGFibGUpKQoreworfQorCitXZWJLaXRQbGF5YmFja1RhcmdldEF2YWlsYWJp
bGl0eUV2ZW50OjpXZWJLaXRQbGF5YmFja1RhcmdldEF2YWlsYWJpbGl0eUV2ZW50KGNvbnN0IEF0
b21pY1N0cmluZyYgZXZlbnRUeXBlLCBjb25zdCBXZWJLaXRQbGF5YmFja1RhcmdldEF2YWlsYWJp
bGl0eUV2ZW50SW5pdCYgaW5pdGlhbGl6ZXIpCisgICAgOiBFdmVudChldmVudFR5cGUsIGluaXRp
YWxpemVyKQorICAgICwgbV9hdmFpbGFiaWxpdHkoaW5pdGlhbGl6ZXIuYXZhaWxhYmlsaXR5KQor
eworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoSU9TX0FJ
UlBMQVkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FpcnBsYXkvV2ViS2l0
UGxheWJhY2tUYXJnZXRBdmFpbGFiaWxpdHlFdmVudC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9haXJwbGF5L1dlYktpdFBsYXliYWNrVGFyZ2V0QXZhaWxhYmlsaXR5RXZlbnQuaApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi5kYmJmZGU3M2QzMzU5NzNjMzc5MWM2OWY0YWZkNTYzZjIxMzAxZTNmCi0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9haXJwbGF5L1dlYktpdFBsYXliYWNrVGFy
Z2V0QXZhaWxhYmlsaXR5RXZlbnQuaApAQCAtMCwwICsxLDc5IEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMg
SVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAq
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
CisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVm
IFdlYktpdFBsYXliYWNrVGFyZ2V0QXZhaWxhYmlsaXR5RXZlbnRfaAorI2RlZmluZSBXZWJLaXRQ
bGF5YmFja1RhcmdldEF2YWlsYWJpbGl0eUV2ZW50X2gKKworI2lmIEVOQUJMRShJT1NfQUlSUExB
WSkKKworI2luY2x1ZGUgIkV2ZW50LmgiCisjaW5jbHVkZSAiRXZlbnROYW1lcy5oIgorCituYW1l
c3BhY2UgV2ViQ29yZSB7CisKK3N0cnVjdCBXZWJLaXRQbGF5YmFja1RhcmdldEF2YWlsYWJpbGl0
eUV2ZW50SW5pdCA6IHB1YmxpYyBFdmVudEluaXQgeworICAgIFdlYktpdFBsYXliYWNrVGFyZ2V0
QXZhaWxhYmlsaXR5RXZlbnRJbml0KCkKKyAgICB7CisgICAgfTsKKworICAgIFN0cmluZyBhdmFp
bGFiaWxpdHk7Cit9OworCitjbGFzcyBXZWJLaXRQbGF5YmFja1RhcmdldEF2YWlsYWJpbGl0eUV2
ZW50IDogcHVibGljIEV2ZW50IHsKK3B1YmxpYzoKKyAgICB+V2ViS2l0UGxheWJhY2tUYXJnZXRB
dmFpbGFiaWxpdHlFdmVudCgpIHsgfQorCisgICAgc3RhdGljIFBhc3NSZWZQdHI8V2ViS2l0UGxh
eWJhY2tUYXJnZXRBdmFpbGFiaWxpdHlFdmVudD4gY3JlYXRlKCkKKyAgICB7CisgICAgICAgIHJl
dHVybiBhZG9wdFJlZihuZXcgV2ViS2l0UGxheWJhY2tUYXJnZXRBdmFpbGFiaWxpdHlFdmVudCk7
CisgICAgfQorCisgICAgc3RhdGljIFBhc3NSZWZQdHI8V2ViS2l0UGxheWJhY2tUYXJnZXRBdmFp
bGFiaWxpdHlFdmVudD4gY3JlYXRlKGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBib29s
IGF2YWlsYWJsZSkKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgV2ViS2l0UGxh
eWJhY2tUYXJnZXRBdmFpbGFiaWxpdHlFdmVudChldmVudFR5cGUsIGF2YWlsYWJsZSkpOworICAg
IH0KKworICAgIHN0YXRpYyBQYXNzUmVmUHRyPFdlYktpdFBsYXliYWNrVGFyZ2V0QXZhaWxhYmls
aXR5RXZlbnQ+IGNyZWF0ZShjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgY29uc3QgV2Vi
S2l0UGxheWJhY2tUYXJnZXRBdmFpbGFiaWxpdHlFdmVudEluaXQmIGluaXRpYWxpemVyKQorICAg
IHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBXZWJLaXRQbGF5YmFja1RhcmdldEF2YWls
YWJpbGl0eUV2ZW50KGV2ZW50VHlwZSwgaW5pdGlhbGl6ZXIpKTsKKyAgICB9CisKKyAgICBTdHJp
bmcgYXZhaWxhYmlsaXR5KCkgY29uc3QgeyByZXR1cm4gbV9hdmFpbGFiaWxpdHk7IH0KKworICAg
IHZpcnR1YWwgRXZlbnRJbnRlcmZhY2UgZXZlbnRJbnRlcmZhY2UoKSBjb25zdCBPVkVSUklERSB7
IHJldHVybiBXZWJLaXRQbGF5YmFja1RhcmdldEF2YWlsYWJpbGl0eUV2ZW50SW50ZXJmYWNlVHlw
ZTsgfQorCitwcml2YXRlOgorICAgIFdlYktpdFBsYXliYWNrVGFyZ2V0QXZhaWxhYmlsaXR5RXZl
bnQoKTsKKyAgICBleHBsaWNpdCBXZWJLaXRQbGF5YmFja1RhcmdldEF2YWlsYWJpbGl0eUV2ZW50
KGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBib29sIGF2YWlsYWJsZSk7CisgICAgV2Vi
S2l0UGxheWJhY2tUYXJnZXRBdmFpbGFiaWxpdHlFdmVudChjb25zdCBBdG9taWNTdHJpbmcmIGV2
ZW50VHlwZSwgY29uc3QgV2ViS2l0UGxheWJhY2tUYXJnZXRBdmFpbGFiaWxpdHlFdmVudEluaXQm
KTsKKworICAgIFN0cmluZyBtX2F2YWlsYWJpbGl0eTsKK307CisKK30gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShJT1NfQUlSUExBWSkKKworI2VuZGlmIC8vIFdlYktp
dFBsYXliYWNrVGFyZ2V0QXZhaWxhYmlsaXR5RXZlbnRfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9haXJwbGF5L1dlYktpdFBsYXliYWNrVGFyZ2V0QXZhaWxhYmlsaXR5RXZl
bnQuaWRsIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9haXJwbGF5L1dlYktpdFBsYXliYWNrVGFy
Z2V0QXZhaWxhYmlsaXR5RXZlbnQuaWRsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjAwZTNiZmU2NjI2MWExN2E2ZGJk
ZTRjYzJiMjYyZjJjMGY3Y2Q4NWQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2FpcnBsYXkvV2ViS2l0UGxheWJhY2tUYXJnZXRBdmFpbGFiaWxpdHlFdmVudC5pZGwK
QEAgLTAsMCArMSwzMyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFs
bCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuIAorICoKKyAqLworCitbCisgICAgQ29uZGl0aW9uYWw9SU9TX0FJUlBMQVksCisg
ICAgQ29uc3RydWN0b3JUZW1wbGF0ZT1FdmVudAorXSBpbnRlcmZhY2UgV2ViS2l0UGxheWJhY2tU
YXJnZXRBdmFpbGFiaWxpdHlFdmVudCA6IEV2ZW50IHsKKyAgICBbSW5pdGlhbGl6ZWRCeUV2ZW50
Q29uc3RydWN0b3JdIHJlYWRvbmx5IGF0dHJpYnV0ZSBET01TdHJpbmcgYXZhaWxhYmlsaXR5Owor
fTsKKwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9nZW9sb2NhdGlvbi9HZW9s
b2NhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2dlb2xvY2F0aW9uL0dlb2xvY2F0
aW9uLmNwcAppbmRleCAwNzM1OTk2NTFiZjYyMjA5NjViNDc5MzFjZGM1MDVhN2NkM2JkMDIwLi4w
NDcxMmMxYjlmOTk5MTZhNzM0MWJjZTUxMzNjNDYzYjhhOTQ5YTAwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2dlb2xvY2F0aW9uL0dlb2xvY2F0aW9uLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2dlb2xvY2F0aW9uL0dlb2xvY2F0aW9uLmNwcApAQCAtMjM1LDYg
KzIzNSwxMSBAQCBQYXNzUmVmUHRyPEdlb2xvY2F0aW9uPiBHZW9sb2NhdGlvbjo6Y3JlYXRlKFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQpCiBHZW9sb2NhdGlvbjo6R2VvbG9jYXRpb24o
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCkKICAgICA6IEFjdGl2ZURPTU9iamVjdChj
b250ZXh0KQogICAgICwgbV9hbGxvd0dlb2xvY2F0aW9uKFVua25vd24pCisjaWYgUExBVEZPUk0o
SU9TKQorICAgICwgbV9pc1N1c3BlbmRlZChmYWxzZSkKKyAgICAsIG1faGFzQ2hhbmdlZFBvc2l0
aW9uKGZhbHNlKQorICAgICwgbV9yZXN1bWVUaW1lcih0aGlzLCAmR2VvbG9jYXRpb246OnJlc3Vt
ZVRpbWVyRmlyZWQpCisjZW5kaWYKIHsKIH0KIApAQCAtMjU4LDYgKzI2MywxMjMgQEAgUGFnZSog
R2VvbG9jYXRpb246OnBhZ2UoKSBjb25zdAogICAgIHJldHVybiBkb2N1bWVudCgpID8gZG9jdW1l
bnQoKS0+cGFnZSgpIDogMDsKIH0KIAorI2lmIFBMQVRGT1JNKElPUykKK2Jvb2wgR2VvbG9jYXRp
b246OmNhblN1c3BlbmQoKSBjb25zdAoreworICAgIHJldHVybiAhaGFzTGlzdGVuZXJzKCk7Cit9
CisKK3ZvaWQgR2VvbG9jYXRpb246OnN1c3BlbmQoUmVhc29uRm9yU3VzcGVuc2lvbiByZWFzb24p
Cit7CisgICAgLy8gQWxsb3cgcGFnZXMgdGhhdCBubyBsb25nZXIgaGF2ZSBsaXN0ZW5lcnMgdG8g
ZW50ZXIgdGhlIHBhZ2UgY2FjaGUuCisgICAgLy8gSGF2ZSB0aGVtIHN0b3AgdXBkYXRpbmcgYW5k
IHJlc2V0IGdlb2xvY2F0aW9uIHBlcm1pc3Npb25zIHdoZW4gdGhlIHBhZ2UgaXMgcmVzdW1lZC4K
KyAgICBpZiAocmVhc29uID09IEFjdGl2ZURPTU9iamVjdDo6RG9jdW1lbnRXaWxsQmVjb21lSW5h
Y3RpdmUpIHsKKyAgICAgICAgQVNTRVJUKCFoYXNMaXN0ZW5lcnMoKSk7CisgICAgICAgIHN0b3Ao
KTsKKyAgICAgICAgbV9yZXNldE9uUmVzdW1lID0gdHJ1ZTsKKyAgICB9CisKKyAgICAvLyBTdXNw
ZW5kIEdlb05vdGlmaWVyIHRpbWVvdXQgdGltZXJzLgorICAgIGlmIChoYXNMaXN0ZW5lcnMoKSkK
KyAgICAgICAgc3RvcFRpbWVycygpOworCisgICAgbV9pc1N1c3BlbmRlZCA9IHRydWU7CisgICAg
bV9yZXN1bWVUaW1lci5zdG9wKCk7CisgICAgQWN0aXZlRE9NT2JqZWN0OjpzdXNwZW5kKHJlYXNv
bik7Cit9CisKK3ZvaWQgR2VvbG9jYXRpb246OnJlc3VtZSgpCit7CisgICAgQVNTRVJUKFdlYlRo
cmVhZElzTG9ja2VkT3JEaXNhYmxlZCgpKTsKKyAgICBBY3RpdmVET01PYmplY3Q6OnJlc3VtZSgp
OworCisgICAgaWYgKCFtX3Jlc3VtZVRpbWVyLmlzQWN0aXZlKCkpCisgICAgICAgIG1fcmVzdW1l
VGltZXIuc3RhcnRPbmVTaG90KDApOworfQorCit2b2lkIEdlb2xvY2F0aW9uOjpyZXN1bWVUaW1l
ckZpcmVkKFRpbWVyPEdlb2xvY2F0aW9uPiopCit7CisgICAgbV9pc1N1c3BlbmRlZCA9IGZhbHNl
OworCisgICAgaWYgKG1fcmVzZXRPblJlc3VtZSkgeworICAgICAgICByZXNldEFsbEdlb2xvY2F0
aW9uUGVybWlzc2lvbigpOworICAgICAgICBtX3Jlc2V0T25SZXN1bWUgPSBmYWxzZTsKKyAgICB9
CisKKyAgICAvLyBSZXN1bWUgR2VvTm90aWZpZXIgdGltZW91dCB0aW1lcnMuCisgICAgaWYgKGhh
c0xpc3RlbmVycygpKSB7CisgICAgICAgIEdlb05vdGlmaWVyU2V0Ojpjb25zdF9pdGVyYXRvciBl
bmQgPSBtX29uZVNob3RzLmVuZCgpOworICAgICAgICBmb3IgKEdlb05vdGlmaWVyU2V0Ojpjb25z
dF9pdGVyYXRvciBpdCA9IG1fb25lU2hvdHMuYmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KQorICAg
ICAgICAgICAgKCppdCktPnN0YXJ0VGltZXJJZk5lZWRlZCgpOworICAgICAgICBHZW9Ob3RpZmll
clZlY3RvciB3YXRjaGVyQ29weTsKKyAgICAgICAgbV93YXRjaGVycy5nZXROb3RpZmllcnNWZWN0
b3Iod2F0Y2hlckNvcHkpOworICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHdhdGNoZXJD
b3B5LnNpemUoKTsgKytpKQorICAgICAgICAgICAgd2F0Y2hlckNvcHlbaV0tPnN0YXJ0VGltZXJJ
Zk5lZWRlZCgpOworICAgIH0KKworICAgIGlmICgoaXNBbGxvd2VkKCkgfHwgaXNEZW5pZWQoKSkg
JiYgIW1fcGVuZGluZ0ZvclBlcm1pc3Npb25Ob3RpZmllcnMuaXNFbXB0eSgpKSB7CisgICAgICAg
IC8vIFRoZSBwZW5kaW5nIHBlcm1pc3Npb24gd2FzIGdyYW50ZWQgd2hpbGUgdGhlIG9iamVjdCB3
YXMgc3VzcGVuZGVkLgorICAgICAgICBzZXRJc0FsbG93ZWQoaXNBbGxvd2VkKCkpOworICAgICAg
ICBBU1NFUlQoIW1faGFzQ2hhbmdlZFBvc2l0aW9uKTsKKyAgICAgICAgQVNTRVJUKCFtX2Vycm9y
V2FpdGluZ0ZvclJlc3VtZSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBpZiAoaXNE
ZW5pZWQoKSAmJiBoYXNMaXN0ZW5lcnMoKSkgeworICAgICAgICAvLyBUaGUgcGVybWlzc2lvbiB3
YXMgcmV2b2tlZCB3aGlsZSB0aGUgb2JqZWN0IHdhcyBzdXNwZW5kZWQuCisgICAgICAgIHNldElz
QWxsb3dlZChmYWxzZSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBpZiAobV9oYXND
aGFuZ2VkUG9zaXRpb24pIHsKKyAgICAgICAgcG9zaXRpb25DaGFuZ2VkKCk7CisgICAgICAgIG1f
aGFzQ2hhbmdlZFBvc2l0aW9uID0gZmFsc2U7CisgICAgfQorCisgICAgaWYgKG1fZXJyb3JXYWl0
aW5nRm9yUmVzdW1lKSB7CisgICAgICAgIGhhbmRsZUVycm9yKG1fZXJyb3JXYWl0aW5nRm9yUmVz
dW1lLmdldCgpKTsKKyAgICAgICAgbV9lcnJvcldhaXRpbmdGb3JSZXN1bWUgPSBudWxscHRyOwor
ICAgIH0KK30KKwordm9pZCBHZW9sb2NhdGlvbjo6cmVzZXRBbGxHZW9sb2NhdGlvblBlcm1pc3Np
b24oKQoreworICAgIGlmIChtX2lzU3VzcGVuZGVkKSB7CisgICAgICAgIG1fcmVzZXRPblJlc3Vt
ZSA9IHRydWU7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBpZiAobV9hbGxvd0dlb2xv
Y2F0aW9uID09IEluUHJvZ3Jlc3MpIHsKKyAgICAgICAgUGFnZSogcGFnZSA9IHRoaXMtPnBhZ2Uo
KTsKKyAgICAgICAgaWYgKHBhZ2UpCisgICAgICAgICAgICBHZW9sb2NhdGlvbkNvbnRyb2xsZXI6
OmZyb20ocGFnZSktPmNhbmNlbFBlcm1pc3Npb25SZXF1ZXN0KHRoaXMpOworCisgICAgICAgIC8v
IFRoaXMgcmV0dXJuIGlzIG5vdCB0ZWNobmljYWxseSBjb3JyZWN0IGFzIEdlb2xvY2F0aW9uQ29u
dHJvbGxlcjo6Y2FuY2VsUGVybWlzc2lvblJlcXVlc3QoKSBzaG91bGQgaGF2ZSBjbGVhcmVkIHRo
ZSBhY3RpdmUgcmVxdWVzdC4KKyAgICAgICAgLy8gTmVpdGhlciBpT1Mgbm9yIE9TIFggc3VwcG9y
dHMgY2FuY2VsUGVybWlzc2lvblJlcXVlc3QoKSAoaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTg5NTI0KSwgc28gd2Ugd29ya2Fyb3VuZCB0aGF0IGFuZCBsZXQgb25nb2lu
ZyByZXF1ZXN0cyBjb21wbGV0ZS4gOigKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIC8v
IDEpIFJlc2V0IG91ciBvd24gc3RhdGUuCisgICAgc3RvcFVwZGF0aW5nKCk7CisgICAgbV9hbGxv
d0dlb2xvY2F0aW9uID0gVW5rbm93bjsKKyAgICBtX2hhc0NoYW5nZWRQb3NpdGlvbiA9IGZhbHNl
OworICAgIG1fZXJyb3JXYWl0aW5nRm9yUmVzdW1lID0gbnVsbHB0cjsKKworICAgIC8vIDIpIFJl
cXVlc3QgbmV3IHBlcm1pc3Npb24gZm9yIHRoZSBhY3RpdmUgbm90aWZpZXJzLgorICAgIHN0b3BU
aW1lcnMoKTsKKworICAgIC8vIEdvIG92ZXIgdGhlIG9uZSBzaG90IGFuZCByZS1yZXF1ZXN0IHBl
cm1pc3Npb24uCisgICAgR2VvTm90aWZpZXJTZXQ6Oml0ZXJhdG9yIGVuZCA9IG1fb25lU2hvdHMu
ZW5kKCk7CisgICAgZm9yIChHZW9Ob3RpZmllclNldDo6aXRlcmF0b3IgaXQgPSBtX29uZVNob3Rz
LmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkKKyAgICAgICAgc3RhcnRSZXF1ZXN0KCgqaXQpLmdl
dCgpKTsKKyAgICAvLyBHbyBvdmVyIHRoZSB3YXRjaGVycyBhbmQgcmUtcmVxdWVzdCBwZXJtaXNz
aW9uLgorICAgIEdlb05vdGlmaWVyVmVjdG9yIHdhdGNoZXJDb3B5OworICAgIG1fd2F0Y2hlcnMu
Z2V0Tm90aWZpZXJzVmVjdG9yKHdhdGNoZXJDb3B5KTsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsg
aSA8IHdhdGNoZXJDb3B5LnNpemUoKTsgKytpKQorICAgICAgICBzdGFydFJlcXVlc3Qod2F0Y2hl
ckNvcHlbaV0uZ2V0KCkpOworfQorI2VuZGlmIC8vIFBMQVRGT1JNKElPUykKKwogdm9pZCBHZW9s
b2NhdGlvbjo6c3RvcCgpCiB7CiAgICAgUGFnZSogcGFnZSA9IHRoaXMtPnBhZ2UoKTsKQEAgLTI2
Nyw2ICszODksMTAgQEAgdm9pZCBHZW9sb2NhdGlvbjo6c3RvcCgpCiAgICAgbV9hbGxvd0dlb2xv
Y2F0aW9uID0gVW5rbm93bjsKICAgICBjYW5jZWxBbGxSZXF1ZXN0cygpOwogICAgIHN0b3BVcGRh
dGluZygpOworI2lmIFBMQVRGT1JNKElPUykKKyAgICBtX2hhc0NoYW5nZWRQb3NpdGlvbiA9IGZh
bHNlOworICAgIG1fZXJyb3JXYWl0aW5nRm9yUmVzdW1lID0gbnVsbHB0cjsKKyNlbmRpZiAvLyBQ
TEFURk9STShJT1MpCiAgICAgbV9wZW5kaW5nRm9yUGVybWlzc2lvbk5vdGlmaWVycy5jbGVhcigp
OwogfQogCkBAIC00MjksNiArNTU1LDExIEBAIHZvaWQgR2VvbG9jYXRpb246OnNldElzQWxsb3dl
ZChib29sIGFsbG93ZWQpCiAgICAgLy8gcG9zaXRpb24uCiAgICAgbV9hbGxvd0dlb2xvY2F0aW9u
ID0gYWxsb3dlZCA/IFllcyA6IE5vOwogICAgIAorI2lmIFBMQVRGT1JNKElPUykKKyAgICBpZiAo
bV9pc1N1c3BlbmRlZCkKKyAgICAgICAgcmV0dXJuOworI2VuZGlmCisKICAgICAvLyBQZXJtaXNz
aW9uIHJlcXVlc3Qgd2FzIG1hZGUgZHVyaW5nIHRoZSBzdGFydFJlcXVlc3QgcHJvY2VzcwogICAg
IGlmICghbV9wZW5kaW5nRm9yUGVybWlzc2lvbk5vdGlmaWVycy5pc0VtcHR5KCkpIHsKICAgICAg
ICAgaGFuZGxlUGVuZGluZ1Blcm1pc3Npb25Ob3RpZmllcnMoKTsKQEAgLTQ0MSw2ICs1NzIsMTEg
QEAgdm9pZCBHZW9sb2NhdGlvbjo6c2V0SXNBbGxvd2VkKGJvb2wgYWxsb3dlZCkKICAgICAgICAg
ZXJyb3ItPnNldElzRmF0YWwodHJ1ZSk7CiAgICAgICAgIGhhbmRsZUVycm9yKGVycm9yLmdldCgp
KTsKICAgICAgICAgbV9yZXF1ZXN0c0F3YWl0aW5nQ2FjaGVkUG9zaXRpb24uY2xlYXIoKTsKKyNp
ZiBQTEFURk9STShJT1MpCisgICAgICAgIG1faGFzQ2hhbmdlZFBvc2l0aW9uID0gZmFsc2U7Cisg
ICAgICAgIG1fZXJyb3JXYWl0aW5nRm9yUmVzdW1lID0gbnVsbHB0cjsKKyNlbmRpZgorCiAgICAg
ICAgIHJldHVybjsKICAgICB9CiAKQEAgLTYyMCwxMSArNzU2LDI0IEBAIHZvaWQgR2VvbG9jYXRp
b246OnBvc2l0aW9uQ2hhbmdlZCgpCiAgICAgLy8gU3RvcCBhbGwgY3VycmVudGx5IHJ1bm5pbmcg
dGltZXJzLgogICAgIHN0b3BUaW1lcnMoKTsKIAorI2lmIFBMQVRGT1JNKElPUykKKyAgICBpZiAo
bV9pc1N1c3BlbmRlZCkgeworICAgICAgICBtX2hhc0NoYW5nZWRQb3NpdGlvbiA9IHRydWU7Cisg
ICAgICAgIHJldHVybjsKKyAgICB9CisjZW5kaWYKKwogICAgIG1ha2VTdWNjZXNzQ2FsbGJhY2tz
KCk7CiB9CiAKIHZvaWQgR2VvbG9jYXRpb246OnNldEVycm9yKEdlb2xvY2F0aW9uRXJyb3IqIGVy
cm9yKQogeworI2lmIFBMQVRGT1JNKElPUykKKyAgICBpZiAobV9pc1N1c3BlbmRlZCkgeworICAg
ICAgICBtX2Vycm9yV2FpdGluZ0ZvclJlc3VtZSA9IGNyZWF0ZVBvc2l0aW9uRXJyb3IoZXJyb3Ip
OworICAgICAgICByZXR1cm47CisgICAgfQorI2VuZGlmCiAgICAgUmVmUHRyPFBvc2l0aW9uRXJy
b3I+IHBvc2l0aW9uRXJyb3IgPSBjcmVhdGVQb3NpdGlvbkVycm9yKGVycm9yKTsKICAgICBoYW5k
bGVFcnJvcihwb3NpdGlvbkVycm9yLmdldCgpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvZ2VvbG9jYXRpb24vR2VvbG9jYXRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvZ2VvbG9jYXRpb24vR2VvbG9jYXRpb24uaAppbmRleCA1NTY0YzExMmViNDllZjUxM2Ni
NGFhMzQzZTcyZjk4ZTI0ZDMxNTU2Li40NjFiNDEzMTc0ODc2MzlkZmY2OGVlMjU4ZmZmM2FkZGFh
Mzk4NmE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2dlb2xvY2F0aW9uL0dl
b2xvY2F0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9nZW9sb2NhdGlvbi9HZW9s
b2NhdGlvbi5oCkBAIC01NCw2ICs1NCwxMiBAQCBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NSZWZQ
dHI8R2VvbG9jYXRpb24+IGNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0Kik7CiAgICAgfkdl
b2xvY2F0aW9uKCk7CiAKKyNpZiBQTEFURk9STShJT1MpCisgICAgdmlydHVhbCBib29sIGNhblN1
c3BlbmQoKSBjb25zdCBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgc3VzcGVuZChSZWFzb25G
b3JTdXNwZW5zaW9uKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgcmVzdW1lKCkgT1ZFUlJJ
REU7CisgICAgdm9pZCByZXNldEFsbEdlb2xvY2F0aW9uUGVybWlzc2lvbigpOworI2VuZGlmIC8v
IFBMQVRGT1JNKElPUykKICAgICBEb2N1bWVudCogZG9jdW1lbnQoKSBjb25zdDsKICAgICBGcmFt
ZSogZnJhbWUoKSBjb25zdDsKIApAQCAtMTc0LDYgKzE4MCwxNSBAQCBwcml2YXRlOgogICAgICAg
ICBZZXMsCiAgICAgICAgIE5vCiAgICAgfSBtX2FsbG93R2VvbG9jYXRpb247CisjaWYgUExBVEZP
Uk0oSU9TKQorICAgIGJvb2wgbV9pc1N1c3BlbmRlZDsKKyAgICBib29sIG1fcmVzZXRPblJlc3Vt
ZTsKKyAgICBib29sIG1faGFzQ2hhbmdlZFBvc2l0aW9uOworICAgIFJlZlB0cjxQb3NpdGlvbkVy
cm9yPiBtX2Vycm9yV2FpdGluZ0ZvclJlc3VtZTsKKworICAgIHZvaWQgcmVzdW1lVGltZXJGaXJl
ZChUaW1lcjxHZW9sb2NhdGlvbj4qKTsKKyAgICBUaW1lcjxHZW9sb2NhdGlvbj4gbV9yZXN1bWVU
aW1lcjsKKyNlbmRpZiAvLyBQTEFURk9STShJT1MpCiAKICAgICBHZW9Ob3RpZmllclNldCBtX3Jl
cXVlc3RzQXdhaXRpbmdDYWNoZWRQb3NpdGlvbjsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2dlb2xvY2F0aW9uL05hdmlnYXRvckdlb2xvY2F0aW9uLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvZ2VvbG9jYXRpb24vTmF2aWdhdG9yR2VvbG9jYXRpb24uY3BwCmlu
ZGV4IDg4YmQ0Yjk3Y2M1OTY0OWY0MWYxMjZkMzhmY2I1NzA1NjRmM2RlZDQuLmNiOWU5N2EyOGVi
NmU4OTY2MWNiZWFjZTQwNGQ5ZTliMTQ2NTRiOWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvZ2VvbG9jYXRpb24vTmF2aWdhdG9yR2VvbG9jYXRpb24uY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvZ2VvbG9jYXRpb24vTmF2aWdhdG9yR2VvbG9jYXRpb24uY3BwCkBA
IC01Nyw2ICs1NywxNCBAQCBOYXZpZ2F0b3JHZW9sb2NhdGlvbiogTmF2aWdhdG9yR2VvbG9jYXRp
b246OmZyb20oTmF2aWdhdG9yKiBuYXZpZ2F0b3IpCiAgICAgcmV0dXJuIHN1cHBsZW1lbnQ7CiB9
CiAKKyNpZiBQTEFURk9STShJT1MpCit2b2lkIE5hdmlnYXRvckdlb2xvY2F0aW9uOjpyZXNldEFs
bEdlb2xvY2F0aW9uUGVybWlzc2lvbigpCit7CisgICAgaWYgKG1fZ2VvbG9jYXRpb24pCisgICAg
ICAgIG1fZ2VvbG9jYXRpb24tPnJlc2V0QWxsR2VvbG9jYXRpb25QZXJtaXNzaW9uKCk7Cit9Cisj
ZW5kaWYgLy8gUExBVEZPUk0oSU9TKQorCiBHZW9sb2NhdGlvbiogTmF2aWdhdG9yR2VvbG9jYXRp
b246Omdlb2xvY2F0aW9uKE5hdmlnYXRvciogbmF2aWdhdG9yKQogewogICAgIHJldHVybiBOYXZp
Z2F0b3JHZW9sb2NhdGlvbjo6ZnJvbShuYXZpZ2F0b3IpLT5nZW9sb2NhdGlvbigpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9nZW9sb2NhdGlvbi9OYXZpZ2F0b3JHZW9sb2Nh
dGlvbi5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9nZW9sb2NhdGlvbi9OYXZpZ2F0b3JHZW9s
b2NhdGlvbi5oCmluZGV4IDAxMzBhMmNmMDZhODBmNDA5M2Q4MDQzZDc3YzIzZGQwNmFjYTcxZGMu
LmM1ZjY1NDAwMjVmNDFhMGFkZjFjZTlhY2ViYzU4NWIxMTMxMTcxN2YgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvZ2VvbG9jYXRpb24vTmF2aWdhdG9yR2VvbG9jYXRpb24uaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2dlb2xvY2F0aW9uL05hdmlnYXRvckdlb2xvY2F0
aW9uLmgKQEAgLTM5LDYgKzM5LDEwIEBAIHB1YmxpYzoKICAgICBzdGF0aWMgR2VvbG9jYXRpb24q
IGdlb2xvY2F0aW9uKE5hdmlnYXRvciopOwogICAgIEdlb2xvY2F0aW9uKiBnZW9sb2NhdGlvbigp
IGNvbnN0OwogCisjaWYgUExBVEZPUk0oSU9TKQorICAgIHZvaWQgcmVzZXRBbGxHZW9sb2NhdGlv
blBlcm1pc3Npb24oKTsKKyNlbmRpZiAvLyBQTEFURk9STShJT1MpCisKIHByaXZhdGU6CiAgICAg
TmF2aWdhdG9yR2VvbG9jYXRpb24oRnJhbWUqKTsKICAgICBzdGF0aWMgY29uc3QgY2hhciogc3Vw
cGxlbWVudE5hbWUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNo
L1NwZWVjaFN5bnRoZXNpcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9TcGVl
Y2hTeW50aGVzaXMuY3BwCmluZGV4IGU0NTYzMmE5NDQxYWU2YzI1MDQyMTJiNjA4ODYyNGZhMzZj
ZGI5YjcuLjEwYzMzZWJlZGQwNDA5MTgyNTk4NDJhZDhhNmQ0MjY4MDUxYTBkODcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNoL1NwZWVjaFN5bnRoZXNpcy5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNoU3ludGhlc2lzLmNwcApAQCAt
MzAsNiArMzAsNyBAQAogCiAjaW5jbHVkZSAiUGxhdGZvcm1TcGVlY2hTeW50aGVzaXNWb2ljZS5o
IgogI2luY2x1ZGUgIlBsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXIuaCIKKyNpbmNsdWRlICJTY3Jp
cHRDb250cm9sbGVyLmgiCiAjaW5jbHVkZSAiU3BlZWNoU3ludGhlc2lzRXZlbnQuaCIKICNpbmNs
dWRlICJTcGVlY2hTeW50aGVzaXNVdHRlcmFuY2UuaCIKICNpbmNsdWRlIDx3dGYvQ3VycmVudFRp
bWUuaD4KQEAgLTQ0LDYgKzQ1LDkgQEAgUGFzc1JlZlB0cjxTcGVlY2hTeW50aGVzaXM+IFNwZWVj
aFN5bnRoZXNpczo6Y3JlYXRlKCkKIFNwZWVjaFN5bnRoZXNpczo6U3BlZWNoU3ludGhlc2lzKCkK
ICAgICA6IG1fY3VycmVudFNwZWVjaFV0dGVyYW5jZSgwKQogICAgICwgbV9pc1BhdXNlZChmYWxz
ZSkKKyNpZiBQTEFURk9STShJT1MpCisgICAgLCBtX3Jlc3RyaWN0aW9ucyhSZXF1aXJlVXNlckdl
c3R1cmVGb3JTcGVlY2hTdGFydFJlc3RyaWN0aW9uKQorI2VuZGlmCiB7CiB9CiAgICAgCkBAIC0x
MTIsNiArMTE2LDE0IEBAIHZvaWQgU3BlZWNoU3ludGhlc2lzOjpzcGVhayhTcGVlY2hTeW50aGVz
aXNVdHRlcmFuY2UqIHV0dGVyYW5jZSkKIHsKICAgICBpZiAoIXV0dGVyYW5jZSkKICAgICAgICAg
cmV0dXJuOworIAorICAgIC8vIExpa2UgQXVkaW8sIHdlIHNob3VsZCByZXF1aXJlIHRoYXQgdGhl
IHVzZXIgaW50ZXJhY3QgdG8gc3RhcnQgYSBzcGVlY2ggc3ludGhlc2lzIHNlc3Npb24uCisjaWYg
UExBVEZPUk0oSU9TKQorICAgIGlmIChTY3JpcHRDb250cm9sbGVyOjpwcm9jZXNzaW5nVXNlckdl
c3R1cmUoKSkKKyAgICAgICAgcmVtb3ZlQmVoYXZpb3JSZXN0cmljdGlvbihSZXF1aXJlVXNlckdl
c3R1cmVGb3JTcGVlY2hTdGFydFJlc3RyaWN0aW9uKTsKKyAgICBlbHNlIGlmICh1c2VyR2VzdHVy
ZVJlcXVpcmVkRm9yU3BlZWNoU3RhcnQoKSkKKyAgICAgICAgcmV0dXJuOworI2VuZGlmCiAgICAg
CiAgICAgbV91dHRlcmFuY2VRdWV1ZS5hcHBlbmQodXR0ZXJhbmNlKTsKICAgICAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNoL1NwZWVjaFN5bnRoZXNpcy5oIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNoU3ludGhlc2lzLmgKaW5kZXggOWM3ODdh
MDczYTFiMWNjMGVlNTc2Njc0ZGM5NWQ1M2VjOTgwYjgwNy4uY2UxZTQ3YzljNDdlYzFmOGQzMTIz
MWQ1YTMwNjAzNTk4YTViZTM5YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9z
cGVlY2gvU3BlZWNoU3ludGhlc2lzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVl
Y2gvU3BlZWNoU3ludGhlc2lzLmgKQEAgLTc2LDExICs3NiwyNiBAQCBwcml2YXRlOgogICAgIHZv
aWQgaGFuZGxlU3BlYWtpbmdDb21wbGV0ZWQoU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlKiwgYm9v
bCBlcnJvck9jY3VycmVkKTsKICAgICB2b2lkIGZpcmVFdmVudChjb25zdCBBdG9taWNTdHJpbmcm
IHR5cGUsIFNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZSosIHVuc2lnbmVkIGxvbmcgY2hhckluZGV4
LCBjb25zdCBTdHJpbmcmIG5hbWUpOwogICAgIAorI2lmIFBMQVRGT1JNKElPUykKKyAgICAvLyBS
ZXN0cmljdGlvbnMgdG8gY2hhbmdlIGRlZmF1bHQgYmVoYXZpb3JzLgorICAgIGVudW0gQmVoYXZp
b3JSZXN0cmljdGlvbkZsYWdzIHsKKyAgICAgICAgTm9SZXN0cmljdGlvbnMgPSAwLAorICAgICAg
ICBSZXF1aXJlVXNlckdlc3R1cmVGb3JTcGVlY2hTdGFydFJlc3RyaWN0aW9uID0gMSA8PCAwLAor
ICAgIH07CisgICAgdHlwZWRlZiB1bnNpZ25lZCBCZWhhdmlvclJlc3RyaWN0aW9uczsKKyAgICAK
KyAgICBib29sIHVzZXJHZXN0dXJlUmVxdWlyZWRGb3JTcGVlY2hTdGFydCgpIGNvbnN0IHsgcmV0
dXJuIG1fcmVzdHJpY3Rpb25zICYgUmVxdWlyZVVzZXJHZXN0dXJlRm9yU3BlZWNoU3RhcnRSZXN0
cmljdGlvbjsgfQorICAgIHZvaWQgcmVtb3ZlQmVoYXZpb3JSZXN0cmljdGlvbihCZWhhdmlvclJl
c3RyaWN0aW9ucyByZXN0cmljdGlvbikgeyBtX3Jlc3RyaWN0aW9ucyAmPSB+cmVzdHJpY3Rpb247
IH0KKyNlbmRpZgorICAgIAogICAgIE93blB0cjxQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyPiBt
X3BsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXI7CiAgICAgVmVjdG9yPFJlZlB0cjxTcGVlY2hTeW50
aGVzaXNWb2ljZT4+IG1fdm9pY2VMaXN0OwogICAgIFNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZSog
bV9jdXJyZW50U3BlZWNoVXR0ZXJhbmNlOwogICAgIERlcXVlPFJlZlB0cjxTcGVlY2hTeW50aGVz
aXNVdHRlcmFuY2U+PiBtX3V0dGVyYW5jZVF1ZXVlOwogICAgIGJvb2wgbV9pc1BhdXNlZDsKKyNp
ZiBQTEFURk9STShJT1MpCisgICAgQmVoYXZpb3JSZXN0cmljdGlvbnMgbV9yZXN0cmljdGlvbnM7
CisjZW5kaWYKIH07CiAgICAgCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQ29udGV4dC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQ29udGV4dC5jcHAKaW5kZXggMjA3M2NkN2Nh
NjcwNGY5OWRjNGU1YzcyOGM0YTgyZmJkZmY0Y2JhNS4uMGYyZWU3ZmVkZDJlMWFmYmU5NjJkZjZm
YmYxZjBmOTRjZjM4MjQ3MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJh
dWRpby9BdWRpb0NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVk
aW8vQXVkaW9Db250ZXh0LmNwcApAQCAtODAsNiArODAsMTEgQEAKICNpbmNsdWRlICJHU3RyZWFt
ZXJVdGlsaXRpZXMuaCIKICNlbmRpZgogCisjaWYgUExBVEZPUk0oSU9TKQorI2luY2x1ZGUgIlNj
cmlwdENvbnRyb2xsZXIuaCIKKyNpbmNsdWRlICJTZXR0aW5ncy5oIgorI2VuZGlmCisKICNpbmNs
dWRlIDxydW50aW1lL0FycmF5QnVmZmVyLmg+CiAjaW5jbHVkZSA8d3RmL0F0b21pY3MuaD4KICNp
bmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJhdWRpby9BdWRpb0NvbnRleHQuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
YXVkaW8vQXVkaW9Db250ZXh0LmgKaW5kZXggZDQxYTk3NDdkNmMxNjI3OWE5NDcxMGVjNGQ1NGI2
Yzk4MTllZTQ5MS4uYzI2YmJiODZhOGIxM2Q4MWFkM2ZhNWM2OGEyOWQ0YTM0YjEyYjZiMCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0NvbnRleHQuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQ29udGV4dC5oCkBAIC05
Niw3ICs5Niw2IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgc3RvcCgpIE9WRVJSSURFOwog
CiAgICAgRG9jdW1lbnQqIGRvY3VtZW50KCkgY29uc3Q7IC8vIEFTU0VSVHMgaWYgZG9jdW1lbnQg
bm8gbG9uZ2VyIGV4aXN0cy4KLSAgICBib29sIGhhc0RvY3VtZW50KCk7CiAKICAgICBBdWRpb0Rl
c3RpbmF0aW9uTm9kZSogZGVzdGluYXRpb24oKSB7IHJldHVybiBtX2Rlc3RpbmF0aW9uTm9kZS5n
ZXQoKTsgfQogICAgIHNpemVfdCBjdXJyZW50U2FtcGxlRnJhbWUoKSBjb25zdCB7IHJldHVybiBt
X2Rlc3RpbmF0aW9uTm9kZS0+Y3VycmVudFNhbXBsZUZyYW1lKCk7IH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9TY2hlZHVsZWRTb3VyY2VOb2RlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9TY2hlZHVsZWRTb3VyY2VO
b2RlLmNwcAppbmRleCA2N2MwMzU5OWU0MzNmMzZiYTc3MTA5YzA0ZTEzNzNhNjQzMTI2YWUwLi4w
ZGMyYTgyOWE4YTMyMmQwY2Y4YmRjODU0NTA4Nzc0MWY4Y2RkYWU4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvU2NoZWR1bGVkU291cmNlTm9kZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1NjaGVkdWxlZFNvdXJj
ZU5vZGUuY3BwCkBAIC0zNSw2ICszNSwxMCBAQAogI2luY2x1ZGUgPGFsZ29yaXRobT4KICNpbmNs
dWRlIDx3dGYvTWF0aEV4dHJhcy5oPgogCisjaWYgUExBVEZPUk0oSU9TKQorI2luY2x1ZGUgIlNj
cmlwdENvbnRyb2xsZXIuaCIKKyNlbmRpZgorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNvbnN0
IGRvdWJsZSBBdWRpb1NjaGVkdWxlZFNvdXJjZU5vZGU6OlVua25vd25UaW1lID0gLTE7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2UuY3BwCmluZGV4IDg2
OWM4NWYwZDcwYjNjOTZlYTZhODA3NTU1OWZkYzIzNGZiZWVjMTguLmUxODI3OTViZTlhODE4ZjNi
NDIwZTUwZGNlODRjZDE0ZjFiOTgwNGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViZGF0YWJhc2UvRGF0YWJhc2UuY3BwCkBAIC02MCw2ICs2MCwxMCBAQAogI2luY2x1ZGUgPHd0
Zi9TdGRMaWJFeHRyYXMuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAKKyNpZiBQ
TEFURk9STShJT1MpCisjaW5jbHVkZSAiU1FMaXRlRGF0YWJhc2VUcmFja2VyLmgiCisjZW5kaWYK
KwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBQYXNzUmVmUHRyPERhdGFiYXNlPiBEYXRhYmFzZTo6
Y3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBQYXNzUmVmUHRyPERhdGFiYXNlQmFja2Vu
ZEJhc2U+IGJhY2tlbmQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRh
dGFiYXNlL0RhdGFiYXNlQmFja2VuZEJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJkYXRhYmFzZS9EYXRhYmFzZUJhY2tlbmRCYXNlLmNwcAppbmRleCA1YTlmNzFlMWJhOTg1ZWM1
ZmZjOTRjMmZmNDAyOTQ1YmNhZjEwMzBmLi43NDVkNTYzYTA4ZTk5MDIxZWFjYTBmYmFiZDlmMTI0
MjY2YzI2ZmFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNl
L0RhdGFiYXNlQmFja2VuZEJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
ZGF0YWJhc2UvRGF0YWJhc2VCYWNrZW5kQmFzZS5jcHAKQEAgLTUyLDYgKzUyLDEwIEBACiAjaW5j
bHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0hhc2gu
aD4KIAorI2lmIFBMQVRGT1JNKElPUykKKyNpbmNsdWRlICJTUUxpdGVEYXRhYmFzZVRyYWNrZXIu
aCIKKyNlbmRpZgorCiAvLyBSZWdpc3RlcmluZyAib3BlbmVkIiBkYXRhYmFzZXMgd2l0aCB0aGUg
RGF0YWJhc2VUcmFja2VyCiAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09CiAvLyBUaGUgRGF0YWJhc2VUcmFja2VyIG1haW50YWlucyBhIGxp
c3Qgb2YgZGF0YWJhc2VzIHRoYXQgaGF2ZSBiZWVuCkBAIC0zMTQsNiArMzE4LDE0IEBAIGJvb2wg
RGF0YWJhc2VCYWNrZW5kQmFzZTo6cGVyZm9ybU9wZW5BbmRWZXJpZnkoYm9vbCBzaG91bGRTZXRW
ZXJzaW9uSW5OZXdEYXRhYmFzCiAKICAgICBjb25zdCBpbnQgbWF4U3FsaXRlQnVzeVdhaXRUaW1l
ID0gMzAwMDA7CiAKKyNpZiBQTEFURk9STShJT1MpCisgICAgeworICAgICAgICAvLyBNYWtlIHN1
cmUgd2Ugd2FpdCB0aWxsIHRoZSBiYWNrZ3JvdW5kIHJlbW92YWwgb2YgdGhlIGVtcHR5IGRhdGFi
YXNlIGZpbGVzIGZpbmlzaGVkIGJlZm9yZSB0cnlpbmcgdG8gb3BlbiBhbnkgZGF0YWJhc2UuCisg
ICAgICAgIE11dGV4TG9ja2VyIGxvY2tlcihEYXRhYmFzZVRyYWNrZXI6Om9wZW5EYXRhYmFzZU11
dGV4KCkpOworICAgIH0KKyAgICBTUUxpdGVUcmFuc2FjdGlvbkluUHJvZ3Jlc3NBdXRvQ291bnRl
ciB0cmFuc2FjdGlvbkNvdW50ZXI7CisjZW5kaWYKKwogICAgIGlmICghbV9zcWxpdGVEYXRhYmFz
ZS5vcGVuKG1fZmlsZW5hbWUsIHRydWUpKSB7CiAgICAgICAgIGVycm9yTWVzc2FnZSA9IGZvcm1h
dEVycm9yTWVzc2FnZSgidW5hYmxlIHRvIG9wZW4gZGF0YWJhc2UiLCBtX3NxbGl0ZURhdGFiYXNl
Lmxhc3RFcnJvcigpLCBtX3NxbGl0ZURhdGFiYXNlLmxhc3RFcnJvck1zZygpKTsKICAgICAgICAg
cmV0dXJuIGZhbHNlOwpAQCAtNTY0LDYgKzU3Niw5IEBAIHVuc2lnbmVkIGxvbmcgbG9uZyBEYXRh
YmFzZUJhY2tlbmRCYXNlOjptYXhpbXVtU2l6ZSgpIGNvbnN0CiAKIHZvaWQgRGF0YWJhc2VCYWNr
ZW5kQmFzZTo6aW5jcmVtZW50YWxWYWN1dW1JZk5lZWRlZCgpCiB7CisjaWYgUExBVEZPUk0oSU9T
KQorICAgIFNRTGl0ZVRyYW5zYWN0aW9uSW5Qcm9ncmVzc0F1dG9Db3VudGVyIHRyYW5zYWN0aW9u
Q291bnRlcjsKKyNlbmRpZgogICAgIGludDY0X3QgZnJlZVNwYWNlU2l6ZSA9IG1fc3FsaXRlRGF0
YWJhc2UuZnJlZVNwYWNlU2l6ZSgpOwogICAgIGludDY0X3QgdG90YWxTaXplID0gbV9zcWxpdGVE
YXRhYmFzZS50b3RhbFNpemUoKTsKICAgICBpZiAodG90YWxTaXplIDw9IDEwICogZnJlZVNwYWNl
U2l6ZSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9E
YXRhYmFzZUNvbnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9E
YXRhYmFzZUNvbnRleHQuY3BwCmluZGV4IDI1YjdhYTBmNzAwYjkwMzcxOGE5NzY1MmFjZjkzNWVj
ZmJjOTY4M2EuLjc1MmUyOWU0ODBiNWY5OTk1ODZlZTEzNmY4NzIxNTEzYjFlMDRkMGQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VDb250ZXh0
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlQ29u
dGV4dC5jcHAKQEAgLTEwMiw2ICsxMDIsOSBAQCBEYXRhYmFzZUNvbnRleHQ6OkRhdGFiYXNlQ29u
dGV4dChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0KQogICAgICwgbV9oYXNPcGVuRGF0
YWJhc2VzKGZhbHNlKQogICAgICwgbV9pc1JlZ2lzdGVyZWQodHJ1ZSkgLy8gd2lsbCByZWdpc3Rl
ciBvbiBjb25zdHJ1Y3Rpb24gYmVsb3cuCiAgICAgLCBtX2hhc1JlcXVlc3RlZFRlcm1pbmF0aW9u
KGZhbHNlKQorI2lmIFBMQVRGT1JNKElPUykKKyAgICAsIG1fcGF1c2VkKGZhbHNlKQorI2VuZGlm
IC8vUExBVEZPUk0oSU9TKQogewogICAgIC8vIEFjdGl2ZURPTU9iamVjdCBleHBlY3RzIHRoaXMg
dG8gYmUgY2FsbGVkIHRvIHNldCBpbnRlcm5hbCBmbGFncy4KICAgICBzdXNwZW5kSWZOZWVkZWQo
KTsKQEAgLTE2MSw2ICsxNjQsOSBAQCBQYXNzUmVmUHRyPERhdGFiYXNlQmFja2VuZENvbnRleHQ+
IERhdGFiYXNlQ29udGV4dDo6YmFja2VuZCgpCiBEYXRhYmFzZVRocmVhZCogRGF0YWJhc2VDb250
ZXh0OjpkYXRhYmFzZVRocmVhZCgpCiB7CiAgICAgaWYgKCFtX2RhdGFiYXNlVGhyZWFkICYmICFt
X2hhc09wZW5EYXRhYmFzZXMpIHsKKyNpZiBQTEFURk9STShJT1MpCisgICAgICAgIE11dGV4TG9j
a2VyIGxvY2sobV9kYXRhYmFzZVRocmVhZE11dGV4KTsKKyNlbmRpZiAvL1BMQVRGT1JNKElPUykK
ICAgICAgICAgLy8gSXQncyBPSyB0byBhc2sgZm9yIHRoZSBtX2RhdGFiYXNlVGhyZWFkIGFmdGVy
IHdlJ3ZlIHJlcXVlc3RlZAogICAgICAgICAvLyB0ZXJtaW5hdGlvbiBiZWNhdXNlIHdlJ3JlIHN0
aWxsIHVzaW5nIGl0IHRvIGV4ZWN1dGUgdGhlIGNsb3NpbmcKICAgICAgICAgLy8gb2YgdGhlIGRh
dGFiYXNlLiBIb3dldmVyLCBpdCBpcyBOT1QgT0sgdG8gY3JlYXRlIGEgbmV3IHRocmVhZApAQCAt
MTcyLDExICsxNzgsMjYgQEAgRGF0YWJhc2VUaHJlYWQqIERhdGFiYXNlQ29udGV4dDo6ZGF0YWJh
c2VUaHJlYWQoKQogICAgICAgICBtX2RhdGFiYXNlVGhyZWFkID0gRGF0YWJhc2VUaHJlYWQ6OmNy
ZWF0ZSgpOwogICAgICAgICBpZiAoIW1fZGF0YWJhc2VUaHJlYWQtPnN0YXJ0KCkpCiAgICAgICAg
ICAgICBtX2RhdGFiYXNlVGhyZWFkID0gMDsKKyNpZiBQTEFURk9STShJT1MpCisgICAgICAgIGlm
IChtX2RhdGFiYXNlVGhyZWFkKQorICAgICAgICAgICAgbV9kYXRhYmFzZVRocmVhZC0+c2V0UGF1
c2VkKG1fcGF1c2VkKTsKKyNlbmRpZiAvL1BMQVRGT1JNKElPUykKICAgICB9CiAKICAgICByZXR1
cm4gbV9kYXRhYmFzZVRocmVhZC5nZXQoKTsKIH0KIAorI2lmIFBMQVRGT1JNKElPUykKK3ZvaWQg
RGF0YWJhc2VDb250ZXh0OjpzZXRQYXVzZWQoYm9vbCBwYXVzZWQpCit7CisgICAgTXV0ZXhMb2Nr
ZXIgbG9jayhtX2RhdGFiYXNlVGhyZWFkTXV0ZXgpOworCisgICAgbV9wYXVzZWQgPSBwYXVzZWQ7
CisgICAgaWYgKG1fZGF0YWJhc2VUaHJlYWQpCisgICAgICAgIG1fZGF0YWJhc2VUaHJlYWQtPnNl
dFBhdXNlZChtX3BhdXNlZCk7Cit9CisjZW5kaWYgLy8gUExBVEZPUk0oSU9TKQorCiBib29sIERh
dGFiYXNlQ29udGV4dDo6c3RvcERhdGFiYXNlcyhEYXRhYmFzZVRhc2tTeW5jaHJvbml6ZXIqIGNs
ZWFudXBTeW5jKQogewogICAgIGlmIChtX2lzUmVnaXN0ZXJlZCkgewpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZUNvbnRleHQuaCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VDb250ZXh0LmgKaW5kZXggZWEx
MzYwMDNhMDAyMzE5ZGIwNzc2YmQ4ZDQ5NmE1ZmFjMjg3NjZlZC4uNDg1MTBkM2QwNzRhOTg4OTc1
MDE4ZGFjODNmYzYxZmQ1YTRjYTViNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJkYXRhYmFzZS9EYXRhYmFzZUNvbnRleHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlQ29udGV4dC5oCkBAIC0zNSw2ICszNSwxMCBAQAogI2lu
Y2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+CiAjaW5jbHVkZSA8d3RmL1RocmVhZFNhZmVSZWZDb3Vu
dGVkLmg+CiAKKyNpZiBQTEFURk9STShJT1MpCisjaW5jbHVkZSA8d3RmL1RocmVhZGluZy5oPgor
I2VuZGlmIC8vIFBMQVRGT1JNKElPUykKKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBE
YXRhYmFzZTsKQEAgLTUzLDYgKzU3LDkgQEAgcHVibGljOgogCiAgICAgUGFzc1JlZlB0cjxEYXRh
YmFzZUJhY2tlbmRDb250ZXh0PiBiYWNrZW5kKCk7CiAgICAgRGF0YWJhc2VUaHJlYWQqIGRhdGFi
YXNlVGhyZWFkKCk7CisjaWYgUExBVEZPUk0oSU9TKQorICAgIHZvaWQgc2V0UGF1c2VkKGJvb2wp
OworI2VuZGlmIC8vIFBMQVRGT1JNKElPUykKIAogICAgIHZvaWQgc2V0SGFzT3BlbkRhdGFiYXNl
cygpIHsgbV9oYXNPcGVuRGF0YWJhc2VzID0gdHJ1ZTsgfQogICAgIGJvb2wgaGFzT3BlbkRhdGFi
YXNlcygpIHsgcmV0dXJuIG1faGFzT3BlbkRhdGFiYXNlczsgfQpAQCAtNzUsNiArODIsMTEgQEAg
cHJpdmF0ZToKIAogICAgIGZyaWVuZCBjbGFzcyBEYXRhYmFzZUJhY2tlbmRDb250ZXh0OwogICAg
IGZyaWVuZCBjbGFzcyBEYXRhYmFzZU1hbmFnZXI7CisKKyNpZiBQTEFURk9STShJT1MpCisgICAg
TXV0ZXggbV9kYXRhYmFzZVRocmVhZE11dGV4OworICAgIGJvb2wgbV9wYXVzZWQ7CisjZW5kaWYg
Ly8gUExBVEZPUk0oSU9TKQogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZU1hbmFnZXJDbGll
bnQuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VNYW5hZ2Vy
Q2xpZW50LmgKaW5kZXggZjRkYTU0NmUzZGI2MjY1MDRhOGE1NDNjNmYxZDkwNmVkY2U4Y2VhNy4u
YWZjNjlmOGNiNWE1NzJmMDJjYjEzOWZlZDhlYjkwYWQ0YTllNDg1YSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZU1hbmFnZXJDbGllbnQuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlTWFuYWdlckNs
aWVudC5oCkBAIC0zOCw2ICszOCwxMiBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB+RGF0YWJhc2VN
YW5hZ2VyQ2xpZW50KCkgeyB9CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkTW9kaWZ5T3Jp
Z2luKFNlY3VyaXR5T3JpZ2luKikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZE1v
ZGlmeURhdGFiYXNlKFNlY3VyaXR5T3JpZ2luKiwgY29uc3QgU3RyaW5nJiBkYXRhYmFzZU5hbWUp
ID0gMDsKKworI2lmIFBMQVRGT1JNKElPUykKKyAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRB
ZGROZXdPcmlnaW4oU2VjdXJpdHlPcmlnaW4qKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGRpc3Bh
dGNoRGlkRGVsZXRlRGF0YWJhc2UoKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlk
RGVsZXRlRGF0YWJhc2VPcmlnaW4oKSA9IDA7CisjZW5kaWYKIH07CiAKIH0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2Uv
RGF0YWJhc2VUYXNrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0
YWJhc2VUYXNrLmNwcAppbmRleCA3Yjc5NDY4ODc1ZmQ3MjI1ODNjYjRlMGY5YzA5YWYxYWYxZTQ0
ZGM4Li44Y2Y4ZWEyMWE3NzhkMjI0MjdlODIzOGVjZTc2OTgzNmFlNjcyZjQyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlVGFzay5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZVRhc2suY3BwCkBA
IC04NSw3ICs4NSwxMyBAQCB2b2lkIERhdGFiYXNlVGFzazo6cGVyZm9ybVRhc2soKQogCiAgICAg
TE9HKFN0b3JhZ2VBUEksICJQZXJmb3JtaW5nICVzICVwXG4iLCBkZWJ1Z1Rhc2tOYW1lKCksIHRo
aXMpOwogCisjaWYgIVBMQVRGT1JNKElPUykKICAgICBtX2RhdGFiYXNlLT5yZXNldEF1dGhvcml6
ZXIoKTsKKyNlbHNlCisgICAgaWYgKG1fZGF0YWJhc2UpCisgICAgICAgIG1fZGF0YWJhc2UtPnJl
c2V0QXV0aG9yaXplcigpOworI2VuZGlmCisKICAgICBkb1BlcmZvcm1UYXNrKCk7CiAKICAgICBp
ZiAobV9zeW5jaHJvbml6ZXIpCkBAIC0xNjgsNiArMTc0LDEzIEBAIERhdGFiYXNlQmFja2VuZDo6
RGF0YWJhc2VUcmFuc2FjdGlvblRhc2s6On5EYXRhYmFzZVRyYW5zYWN0aW9uVGFzaygpCiAgICAg
ICAgIG1fdHJhbnNhY3Rpb24tPm5vdGlmeURhdGFiYXNlVGhyZWFkSXNTaHV0dGluZ0Rvd24oKTsK
IH0KIAorI2lmIFBMQVRGT1JNKElPUykKK2Jvb2wgRGF0YWJhc2U6OkRhdGFiYXNlVHJhbnNhY3Rp
b25UYXNrOjpzaG91bGRQZXJmb3JtV2hpbGVQYXVzZWQoKSBjb25zdAoreworICAgIHJldHVybiBt
X3RyYW5zYWN0aW9uLT5zaG91bGRQZXJmb3JtV2hpbGVQYXVzZWQoKTsKK30KKyNlbmRpZgorCiB2
b2lkIERhdGFiYXNlQmFja2VuZDo6RGF0YWJhc2VUcmFuc2FjdGlvblRhc2s6OmRvUGVyZm9ybVRh
c2soKQogewogICAgIG1fdHJhbnNhY3Rpb24tPnBlcmZvcm1OZXh0U3RlcCgpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZVRhc2suaCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VUYXNrLmgKaW5kZXggYjNh
NTUwODY3YzA2OWZlNzdiYmUxMGZkOGU1NmM5NGJlNmE0YmI3OS4uZjZmY2VkNWJjODdkMGI3OTQ0
MTBjZmQxMTU1YTgzYTQyNjVmNzVhOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJkYXRhYmFzZS9EYXRhYmFzZVRhc2suaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmRhdGFiYXNlL0RhdGFiYXNlVGFzay5oCkBAIC03NSw2ICs3NSwxMCBAQCBjbGFzcyBEYXRh
YmFzZVRhc2sgewogcHVibGljOgogICAgIHZpcnR1YWwgfkRhdGFiYXNlVGFzaygpOwogCisjaWYg
UExBVEZPUk0oSU9TKQorICAgIHZpcnR1YWwgYm9vbCBzaG91bGRQZXJmb3JtV2hpbGVQYXVzZWQo
KSBjb25zdCA9IDA7CisjZW5kaWYKKwogICAgIHZvaWQgcGVyZm9ybVRhc2soKTsKIAogICAgIERh
dGFiYXNlQmFja2VuZCogZGF0YWJhc2UoKSBjb25zdCB7IHJldHVybiBtX2RhdGFiYXNlOyB9CkBA
IC0xMDQsNiArMTA4LDEwIEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAgIHJldHVybiBzdGQ6OnVu
aXF1ZV9wdHI8RGF0YWJhc2VPcGVuVGFzaz4obmV3IERhdGFiYXNlT3BlblRhc2soZGIsIHNldFZl
cnNpb25Jbk5ld0RhdGFiYXNlLCBzeW5jaHJvbml6ZXIsIGVycm9yLCBlcnJvck1lc3NhZ2UsIHN1
Y2Nlc3MpKTsKICAgICB9CisgICAgCisjaWYgUExBVEZPUk0oSU9TKQorICAgIHZpcnR1YWwgYm9v
bCBzaG91bGRQZXJmb3JtV2hpbGVQYXVzZWQoKSBjb25zdCBPVkVSUklERSB7IHJldHVybiB0cnVl
OyB9CisjZW5kaWYKIAogcHJpdmF0ZToKICAgICBEYXRhYmFzZU9wZW5UYXNrKERhdGFiYXNlQmFj
a2VuZCosIGJvb2wgc2V0VmVyc2lvbkluTmV3RGF0YWJhc2UsIERhdGFiYXNlVGFza1N5bmNocm9u
aXplciosIERhdGFiYXNlRXJyb3ImLCBTdHJpbmcmIGVycm9yTWVzc2FnZSwgYm9vbCYgc3VjY2Vz
cyk7CkBAIC0xMjYsNiArMTM0LDEwIEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIHN0ZDo6dW5p
cXVlX3B0cjxEYXRhYmFzZUNsb3NlVGFzaz4obmV3IERhdGFiYXNlQ2xvc2VUYXNrKGRiLCBzeW5j
aHJvbml6ZXIpKTsKICAgICB9CiAKKyNpZiBQTEFURk9STShJT1MpCisgICAgdmlydHVhbCBib29s
IHNob3VsZFBlcmZvcm1XaGlsZVBhdXNlZCgpIGNvbnN0IE9WRVJSSURFIHsgcmV0dXJuIHRydWU7
IH0KKyNlbmRpZgorCiBwcml2YXRlOgogICAgIERhdGFiYXNlQ2xvc2VUYXNrKERhdGFiYXNlQmFj
a2VuZCosIERhdGFiYXNlVGFza1N5bmNocm9uaXplciopOwogCkBAIC0xNDUsNiArMTU3LDEwIEBA
IHB1YmxpYzoKICAgICAgICAgcmV0dXJuIHN0ZDo6dW5pcXVlX3B0cjxEYXRhYmFzZVRyYW5zYWN0
aW9uVGFzaz4obmV3IERhdGFiYXNlVHJhbnNhY3Rpb25UYXNrKHRyYW5zYWN0aW9uKSk7CiAgICAg
fQogCisjaWYgUExBVEZPUk0oSU9TKQorICAgIHZpcnR1YWwgYm9vbCBzaG91bGRQZXJmb3JtV2hp
bGVQYXVzZWQoKSBjb25zdCBPVkVSUklERTsKKyNlbmRpZgorCiAgICAgU1FMVHJhbnNhY3Rpb25C
YWNrZW5kKiB0cmFuc2FjdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fdHJhbnNhY3Rpb24uZ2V0KCk7
IH0KIAogcHJpdmF0ZToKQEAgLTE2Niw2ICsxODIsMTAgQEAgcHVibGljOgogICAgICAgICByZXR1
cm4gc3RkOjp1bmlxdWVfcHRyPERhdGFiYXNlVGFibGVOYW1lc1Rhc2s+KG5ldyBEYXRhYmFzZVRh
YmxlTmFtZXNUYXNrKGRiLCBzeW5jaHJvbml6ZXIsIG5hbWVzKSk7CiAgICAgfQogCisjaWYgUExB
VEZPUk0oSU9TKQorICAgIHZpcnR1YWwgYm9vbCBzaG91bGRQZXJmb3JtV2hpbGVQYXVzZWQoKSBj
b25zdCBPVkVSUklERSB7IHJldHVybiB0cnVlOyB9CisjZW5kaWYKKwogcHJpdmF0ZToKICAgICBE
YXRhYmFzZVRhYmxlTmFtZXNUYXNrKERhdGFiYXNlQmFja2VuZCosIERhdGFiYXNlVGFza1N5bmNo
cm9uaXplciosIFZlY3RvcjxTdHJpbmc+JiBuYW1lcyk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VUaHJlYWQuY3BwIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZVRocmVhZC5jcHAKaW5kZXggZTBkNDc5
NmVmM2U2ZTZkNDNiYWEyN2U5MTQ5YWU1Zjk3MzI4ZTk3My4uN2VlNzY0Y2EwZWRlY2UyNWE5NmE3
Y2Y1OGFiMDM0YTA2MmNiNGZhYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJkYXRhYmFzZS9EYXRhYmFzZVRocmVhZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJkYXRhYmFzZS9EYXRhYmFzZVRocmVhZC5jcHAKQEAgLTQyLDYgKzQyLDkgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogCiBEYXRhYmFzZVRocmVhZDo6RGF0YWJhc2VUaHJlYWQoKQogICAgIDog
bV90aHJlYWRJRCgwKQorI2lmIFBMQVRGT1JNKElPUykKKyAgICAsIG1fcGF1c2VkKGZhbHNlKQor
I2VuZGlmCiAgICAgLCBtX3RyYW5zYWN0aW9uQ2xpZW50KGFkb3B0UHRyKG5ldyBTUUxUcmFuc2Fj
dGlvbkNsaWVudCgpKSkKICAgICAsIG1fdHJhbnNhY3Rpb25Db29yZGluYXRvcihhZG9wdFB0cihu
ZXcgU1FMVHJhbnNhY3Rpb25Db29yZGluYXRvcigpKSkKICAgICAsIG1fY2xlYW51cFN5bmMoMCkK
QEAgLTc3LDYgKzgwLDkgQEAgdm9pZCBEYXRhYmFzZVRocmVhZDo6cmVxdWVzdFRlcm1pbmF0aW9u
KERhdGFiYXNlVGFza1N5bmNocm9uaXplciAqY2xlYW51cFN5bmMpCiB7CiAgICAgbV9jbGVhbnVw
U3luYyA9IGNsZWFudXBTeW5jOwogICAgIExPRyhTdG9yYWdlQVBJLCAiRGF0YWJhc2VUaHJlYWQg
JXAgd2FzIGFza2VkIHRvIHRlcm1pbmF0ZVxuIiwgdGhpcyk7CisjaWYgUExBVEZPUk0oSU9TKQor
ICAgIG1fcGF1c2VkUXVldWUua2lsbCgpOworI2VuZGlmCiAgICAgbV9xdWV1ZS5raWxsKCk7CiB9
CiAKQEAgLTk4LDYgKzEwNCw4MCBAQCB2b2lkIERhdGFiYXNlVGhyZWFkOjpkYXRhYmFzZVRocmVh
ZFN0YXJ0KHZvaWQqIHZEYXRhYmFzZVRocmVhZCkKICAgICBkYlRocmVhZC0+ZGF0YWJhc2VUaHJl
YWQoKTsKIH0KIAorI2lmIFBMQVRGT1JNKElPUykKK2NsYXNzIERhdGFiYXNlVW5wYXVzZVRhc2sg
OiBwdWJsaWMgRGF0YWJhc2VUYXNrIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgc3RkOjp1bmlxdWVf
cHRyPERhdGFiYXNlVW5wYXVzZVRhc2s+IGNyZWF0ZShEYXRhYmFzZVRocmVhZCogdGhyZWFkKQor
ICAgIHsKKyAgICAgICAgcmV0dXJuIHN0ZDo6dW5pcXVlX3B0cjxEYXRhYmFzZVVucGF1c2VUYXNr
PihuZXcgRGF0YWJhc2VVbnBhdXNlVGFzayh0aHJlYWQpKTsKKyAgICB9CisgICAgCisgICAgdmly
dHVhbCBib29sIHNob3VsZFBlcmZvcm1XaGlsZVBhdXNlZCgpIGNvbnN0IAorICAgIHsKKyAgICAg
ICAgLy8gU2luY2Ugd2UncmUgbm90IGxvY2tpbmcgdGhlIERhdGFiYXNlVGhyZWFkOjptX3BhdXNl
ZCBpbiB0aGUgbWFpbiBkYXRhYmFzZSB0aHJlYWQgbG9vcCwgaXQncyBwb3NzaWJsZSB0aGF0Cisg
ICAgICAgIC8vIGEgRGF0YWJhc2VVbnBhdXNlVGFzayBtaWdodCBiZSBhZGRlZCB0byB0aGUgbV9w
YXVzZWRRdWV1ZSBhbmQgcGVyZm9ybWVkIGZyb20gd2l0aGluIDo6aGFuZGxlUGF1c2VkUXVldWUu
CisgICAgICAgIC8vIFRvIHByb3RlY3QgYWdhaW5zdCB0aGlzLCB3ZSBhbGxvdyBpdCB0byBiZSBw
ZXJmb3JtZWQgZXZlbiBpZiB0aGUgZGF0YWJhc2UgaXMgcGF1c2VkLgorICAgICAgICAvLyBJZiB0
aGUgdGhyZWFkIGlzIHBhdXNlZCB3aGVuIGl0IGlzIGJlaW5nIHBlcmZvcm1lZCwgdGhlIHRhc2tz
IGZyb20gdGhlIHBhdXNlZCBxdWV1ZSB3aWxsIHNpbXBseSBiZQorICAgICAgICAvLyByZXF1ZXVl
ZCBpbnN0ZWFkIG9mIHBlcmZvcm1lZC4KKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorCitw
cml2YXRlOgorICAgIERhdGFiYXNlVW5wYXVzZVRhc2soRGF0YWJhc2VUaHJlYWQqIHRocmVhZCkK
KyAgICAgICAgOiBEYXRhYmFzZVRhc2soMCwgMCkKKyAgICAgICAgLCBtX3RocmVhZCh0aHJlYWQp
CisgICAge30KKworICAgIHZpcnR1YWwgdm9pZCBkb1BlcmZvcm1UYXNrKCkKKyAgICB7CisgICAg
ICAgIG1fdGhyZWFkLT5oYW5kbGVQYXVzZWRRdWV1ZSgpOworICAgIH0KKyNpZiAhTE9HX0RJU0FC
TEVECisgICAgdmlydHVhbCBjb25zdCBjaGFyKiBkZWJ1Z1Rhc2tOYW1lKCkgY29uc3QgeyByZXR1
cm4gIkRhdGFiYXNlVW5wYXVzZVRhc2siOyB9CisjZW5kaWYKKworICAgIERhdGFiYXNlVGhyZWFk
KiBtX3RocmVhZDsKK307CisKKwordm9pZCBEYXRhYmFzZVRocmVhZDo6c2V0UGF1c2VkKGJvb2wg
cGF1c2VkKQoreworICAgIGlmIChtX3BhdXNlZCA9PSBwYXVzZWQpCisgICAgICAgIHJldHVybjsK
KworICAgIE11dGV4TG9ja2VyIHBhdXNlZExvY2tlcihtX3BhdXNlZE11dGV4KTsKKyAgICBtX3Bh
dXNlZCA9IHBhdXNlZDsKKyAgICBpZiAoIW1fcGF1c2VkKQorICAgICAgICBzY2hlZHVsZVRhc2so
RGF0YWJhc2VVbnBhdXNlVGFzazo6Y3JlYXRlKHRoaXMpKTsKK30KKwordm9pZCBEYXRhYmFzZVRo
cmVhZDo6aGFuZGxlUGF1c2VkUXVldWUoKQoreworICAgIFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8
RGF0YWJhc2VUYXNrPiA+IHBhdXNlZFRhc2tzOworICAgIHdoaWxlIChhdXRvIHRhc2sgPSBtX3Bh
dXNlZFF1ZXVlLnRyeUdldE1lc3NhZ2UoKSkKKyAgICAgICAgcGF1c2VkVGFza3MuYXBwZW5kKHN0
ZDo6bW92ZSh0YXNrKSk7CisKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgcGF1c2VkVGFz
a3Muc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgQXV0b2RyYWluZWRQb29sIHBvb2w7CisKKyAgICAg
ICAgc3RkOjp1bmlxdWVfcHRyPERhdGFiYXNlVGFzaz4gdGFzayhwYXVzZWRUYXNrc1tpXS5yZWxl
YXNlKCkpOworICAgICAgICB7CisgICAgICAgICAgICBNdXRleExvY2tlciBwYXVzZWRMb2NrZXIo
bV9wYXVzZWRNdXRleCk7CisgICAgICAgICAgICBpZiAobV9wYXVzZWQpIHsKKyAgICAgICAgICAg
ICAgICBtX3BhdXNlZFF1ZXVlLmFwcGVuZChzdGQ6Om1vdmUodGFzaykpOworICAgICAgICAgICAg
ICAgIGNvbnRpbnVlOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgICAgICAKKyAg
ICAgICAgaWYgKHRlcm1pbmF0aW9uUmVxdWVzdGVkKCkpCisgICAgICAgICAgICBicmVhazsKKyAg
ICAKKyAgICAgICAgdGFzay0+cGVyZm9ybVRhc2soKTsKKyAgICB9Cit9CisjZW5kaWYgLy9QTEFU
Rk9STShJT1MpCisKKwogdm9pZCBEYXRhYmFzZVRocmVhZDo6ZGF0YWJhc2VUaHJlYWQoKQogewog
ICAgIHsKQEAgLTEwOSw3ICsxODksMTQgQEAgdm9pZCBEYXRhYmFzZVRocmVhZDo6ZGF0YWJhc2VU
aHJlYWQoKQogICAgIHdoaWxlIChhdXRvIHRhc2sgPSBtX3F1ZXVlLndhaXRGb3JNZXNzYWdlKCkp
IHsKICAgICAgICAgQXV0b2RyYWluZWRQb29sIHBvb2w7CiAKKyNpZiBQTEFURk9STShJT1MpCisg
ICAgICAgIGlmICghbV9wYXVzZWQgfHwgdGFzay0+c2hvdWxkUGVyZm9ybVdoaWxlUGF1c2VkKCkp
CisgICAgICAgICAgICB0YXNrLT5wZXJmb3JtVGFzaygpOworICAgICAgICBlbHNlCisgICAgICAg
ICAgICBtX3BhdXNlZFF1ZXVlLmFwcGVuZChzdGQ6Om1vdmUodGFzaykpOworI2Vsc2UKICAgICAg
ICAgdGFzay0+cGVyZm9ybVRhc2soKTsKKyNlbmRpZgogICAgIH0KIAogICAgIC8vIENsZWFuIHVw
IHRoZSBsaXN0IG9mIGFsbCBwZW5kaW5nIHRyYW5zYWN0aW9ucyBvbiB0aGlzIGRhdGFiYXNlIHRo
cmVhZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRh
YmFzZVRocmVhZC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFz
ZVRocmVhZC5oCmluZGV4IDRiMjAyZWVmMjVhOGYwNmVjYjU0ZTQ3MWI4ZWY2NjZjMjBjYzk2MGQu
LmMwNTk3OWU1YWRhNWJhOTZlNzhlMzJlODY4YzI0YmE0ZmY4NWNlZTkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VUaHJlYWQuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlVGhyZWFkLmgKQEAgLTY5
LDYgKzY5LDExIEBAIHB1YmxpYzoKICAgICBTUUxUcmFuc2FjdGlvbkNsaWVudCogdHJhbnNhY3Rp
b25DbGllbnQoKSB7IHJldHVybiBtX3RyYW5zYWN0aW9uQ2xpZW50LmdldCgpOyB9CiAgICAgU1FM
VHJhbnNhY3Rpb25Db29yZGluYXRvciogdHJhbnNhY3Rpb25Db29yZGluYXRvcigpIHsgcmV0dXJu
IG1fdHJhbnNhY3Rpb25Db29yZGluYXRvci5nZXQoKTsgfQogCisjaWYgUExBVEZPUk0oSU9TKQor
ICAgIHZvaWQgc2V0UGF1c2VkKGJvb2wpOworICAgIHZvaWQgaGFuZGxlUGF1c2VkUXVldWUoKTsK
KyNlbmRpZgorCiBwcml2YXRlOgogICAgIERhdGFiYXNlVGhyZWFkKCk7CiAKQEAgLTgwLDYgKzg1
LDExIEBAIHByaXZhdGU6CiAgICAgUmVmUHRyPERhdGFiYXNlVGhyZWFkPiBtX3NlbGZSZWY7CiAK
ICAgICBNZXNzYWdlUXVldWU8RGF0YWJhc2VUYXNrPiBtX3F1ZXVlOworI2lmIFBMQVRGT1JNKElP
UykKKyAgICBNZXNzYWdlUXVldWU8RGF0YWJhc2VUYXNrPiBtX3BhdXNlZFF1ZXVlOworICAgIE11
dGV4IG1fcGF1c2VkTXV0ZXg7CisgICAgdm9sYXRpbGUgYm9vbCBtX3BhdXNlZDsKKyNlbmRpZgog
CiAgICAgLy8gVGhpcyBzZXQga2VlcHMgdHJhY2sgb2YgdGhlIG9wZW4gZGF0YWJhc2VzIHRoYXQg
aGF2ZSBiZWVuIHVzZWQgb24gdGhpcyB0aHJlYWQuCiAgICAgdHlwZWRlZiBIYXNoU2V0PFJlZlB0
cjxEYXRhYmFzZUJhY2tlbmQ+PiBEYXRhYmFzZVNldDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VUcmFja2VyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VUcmFja2VyLmNwcAppbmRleCAzOGVjMWM1
NzIxMDJlZjRkNGRmMTg5M2NmMjk0ZWFiMmE2OGU2MjMyLi4xZGUxNjQ3ODQ4NjVmNWQwZmU1MDU2
YmYyYjQ5Zjg4MzM2NTM2MmI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmRhdGFiYXNlL0RhdGFiYXNlVHJhY2tlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJkYXRhYmFzZS9EYXRhYmFzZVRyYWNrZXIuY3BwCkBAIC0zMyw2ICszMyw3IEBACiAKICNp
bmNsdWRlICJDaHJvbWUuaCIKICNpbmNsdWRlICJDaHJvbWVDbGllbnQuaCIKKyNpbmNsdWRlICJE
YXRhYmFzZS5oIgogI2luY2x1ZGUgIkRhdGFiYXNlQmFja2VuZEJhc2UuaCIKICNpbmNsdWRlICJE
YXRhYmFzZUJhY2tlbmRDb250ZXh0LmgiCiAjaW5jbHVkZSAiRGF0YWJhc2VNYW5hZ2VyLmgiCkBA
IC01MCw2ICs1MSwxMCBAQAogI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KICNpbmNsdWRl
IDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAKKyNpZiBQTEFURk9STShJT1MpCisjaW5jbHVkZSAiV2Vi
Q29yZVRocmVhZC5oIgorI2VuZGlmCisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogc3RhdGljIERh
dGFiYXNlVHJhY2tlciogc3RhdGljVHJhY2tlciA9IDA7CkBAIC03NDEsNiArNzQ2LDEwIEBAIHZv
aWQgRGF0YWJhc2VUcmFja2VyOjpzZXRRdW90YShTZWN1cml0eU9yaWdpbiogb3JpZ2luLCB1bnNp
Z25lZCBsb25nIGxvbmcgcXVvdGEpCiAgICAgb3BlblRyYWNrZXJEYXRhYmFzZShDcmVhdGVJZkRv
ZXNOb3RFeGlzdCk7CiAgICAgaWYgKCFtX2RhdGFiYXNlLmlzT3BlbigpKQogICAgICAgICByZXR1
cm47CisgICAgCisjaWYgUExBVEZPUk0oSU9TKQorICAgIGJvb2wgaW5zZXJ0ZWROZXdPcmlnaW4g
PSBmYWxzZTsKKyNlbmRpZgogCiAgICAgYm9vbCBvcmlnaW5FbnRyeUV4aXN0cyA9IGhhc0VudHJ5
Rm9yT3JpZ2luTm9Mb2NrKG9yaWdpbik7CiAgICAgaWYgKCFvcmlnaW5FbnRyeUV4aXN0cykgewpA
QCAtNzUzLDYgKzc2MiwxMCBAQCB2b2lkIERhdGFiYXNlVHJhY2tlcjo6c2V0UXVvdGEoU2VjdXJp
dHlPcmlnaW4qIG9yaWdpbiwgdW5zaWduZWQgbG9uZyBsb25nIHF1b3RhKQogCiAgICAgICAgICAg
ICBpZiAoc3RhdGVtZW50LnN0ZXAoKSAhPSBTUUxSZXN1bHREb25lKQogICAgICAgICAgICAgICAg
IExPR19FUlJPUigiVW5hYmxlIHRvIGVzdGFibGlzaCBvcmlnaW4gJXMgaW4gdGhlIHRyYWNrZXIi
LCBvcmlnaW4tPmRhdGFiYXNlSWRlbnRpZmllcigpLmFzY2lpKCkuZGF0YSgpKTsKKyNpZiBQTEFU
Rk9STShJT1MpCisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgaW5zZXJ0ZWROZXdP
cmlnaW4gPSB0cnVlOworI2VuZGlmCiAgICAgICAgIH0KICAgICB9IGVsc2UgewogICAgICAgICBT
UUxpdGVTdGF0ZW1lbnQgc3RhdGVtZW50KG1fZGF0YWJhc2UsICJVUERBVEUgT3JpZ2lucyBTRVQg
cXVvdGE9PyBXSEVSRSBvcmlnaW49PyIpOwpAQCAtNzY5LDcgKzc4MiwxNSBAQCB2b2lkIERhdGFi
YXNlVHJhY2tlcjo6c2V0UXVvdGEoU2VjdXJpdHlPcmlnaW4qIG9yaWdpbiwgdW5zaWduZWQgbG9u
ZyBsb25nIHF1b3RhKQogICAgIH0KIAogICAgIGlmIChtX2NsaWVudCkKKyNpZiBQTEFURk9STShJ
T1MpCisgICAgeworICAgICAgICBpZiAoaW5zZXJ0ZWROZXdPcmlnaW4pCisgICAgICAgICAgICBt
X2NsaWVudC0+ZGlzcGF0Y2hEaWRBZGROZXdPcmlnaW4ob3JpZ2luKTsKKyNlbmRpZgogICAgICAg
ICBtX2NsaWVudC0+ZGlzcGF0Y2hEaWRNb2RpZnlPcmlnaW4ob3JpZ2luKTsKKyNpZiBQTEFURk9S
TShJT1MpCisgICAgfQorI2VuZGlmCiB9CiAKIGJvb2wgRGF0YWJhc2VUcmFja2VyOjphZGREYXRh
YmFzZShTZWN1cml0eU9yaWdpbiogb3JpZ2luLCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0
cmluZyYgcGF0aCkKQEAgLTg5Nyw2ICs5MTgsOSBAQCBib29sIERhdGFiYXNlVHJhY2tlcjo6ZGVs
ZXRlT3JpZ2luKFNlY3VyaXR5T3JpZ2luKiBvcmlnaW4pCiAKICAgICAgICAgaWYgKG1fY2xpZW50
KSB7CiAgICAgICAgICAgICBtX2NsaWVudC0+ZGlzcGF0Y2hEaWRNb2RpZnlPcmlnaW4ob3JpZ2lu
KTsKKyNpZiBQTEFURk9STShJT1MpCisgICAgICAgICAgICBtX2NsaWVudC0+ZGlzcGF0Y2hEaWRE
ZWxldGVEYXRhYmFzZU9yaWdpbigpOworI2VuZGlmCiAgICAgICAgICAgICBmb3IgKHVuc2lnbmVk
IGkgPSAwOyBpIDwgZGF0YWJhc2VOYW1lcy5zaXplKCk7ICsraSkKICAgICAgICAgICAgICAgICBt
X2NsaWVudC0+ZGlzcGF0Y2hEaWRNb2RpZnlEYXRhYmFzZShvcmlnaW4sIGRhdGFiYXNlTmFtZXNb
aV0pOwogICAgICAgICB9CkBAIC0xMDYyLDYgKzEwODYsOSBAQCBib29sIERhdGFiYXNlVHJhY2tl
cjo6ZGVsZXRlRGF0YWJhc2UoU2VjdXJpdHlPcmlnaW4qIG9yaWdpbiwgY29uc3QgU3RyaW5nJiBu
YW1lKQogICAgIGlmIChtX2NsaWVudCkgewogICAgICAgICBtX2NsaWVudC0+ZGlzcGF0Y2hEaWRN
b2RpZnlPcmlnaW4ob3JpZ2luKTsKICAgICAgICAgbV9jbGllbnQtPmRpc3BhdGNoRGlkTW9kaWZ5
RGF0YWJhc2Uob3JpZ2luLCBuYW1lKTsKKyNpZiBQTEFURk9STShJT1MpCisgICAgICAgIG1fY2xp
ZW50LT5kaXNwYXRjaERpZERlbGV0ZURhdGFiYXNlKCk7CisjZW5kaWYKICAgICB9CiAgICAgZG9u
ZURlbGV0aW5nRGF0YWJhc2Uob3JpZ2luLCBuYW1lKTsKICAgICAKQEAgLTExMTAsOCArMTEzNywy
MDIgQEAgYm9vbCBEYXRhYmFzZVRyYWNrZXI6OmRlbGV0ZURhdGFiYXNlRmlsZShTZWN1cml0eU9y
aWdpbiogb3JpZ2luLCBjb25zdCBTdHJpbmcmIG4KICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBp
IDwgZGVsZXRlZERhdGFiYXNlcy5zaXplKCk7ICsraSkKICAgICAgICAgZGVsZXRlZERhdGFiYXNl
c1tpXS0+bWFya0FzRGVsZXRlZEFuZENsb3NlKCk7CiAKKyNpZiAhUExBVEZPUk0oSU9TKQogICAg
IHJldHVybiBTUUxpdGVGaWxlU3lzdGVtOjpkZWxldGVEYXRhYmFzZUZpbGUoZnVsbFBhdGgpOwor
I2Vsc2UKKyAgICAvLyBPbiB0aGUgcGhvbmUsIG90aGVyIGJhY2tncm91bmQgcHJvY2Vzc2VzIG1h
eSBzdGlsbCBiZSBhY2Nlc3NpbmcgdGhpcyBkYXRhYmFzZS4gIERlbGV0aW5nIHRoZSBkYXRhYmFz
ZSBkaXJlY3RseQorICAgIC8vIHdvdWxkIG51a2UgdGhlIFBPU0lYIGZpbGUgbG9ja3MsIHBvdGVu
dGlhbGx5IGNhdXNpbmcgU2FmYXJpL1dlYkFwcCB0byBjb3JydXB0IHRoZSBuZXcgZGIgaWYgaXQn
cyBydW5uaW5nIGluIHRoZSBiYWNrZ3JvdW5kLgorICAgIC8vIFdlJ2xsIGluc3RlYWQgdHJ1bmNh
dGUgdGhlIGRhdGFiYXNlIGZpbGUgdG8gMCBieXRlcy4gIElmIGFub3RoZXIgcHJvY2VzcyBpcyBv
cGVyYXRpbmcgb24gdGhpcyBzYW1lIGRhdGFiYXNlIGZpbGUgYWZ0ZXIKKyAgICAvLyB0aGUgdHJ1
bmNhdGlvbiwgaXQgc2hvdWxkIGdldCBhbiBlcnJvciBzaW5jZSB0aGUgZGF0YWJhc2UgZmlsZSBp
cyBubyBsb25nZXIgdmFsaWQuICBXaGVuIFNhZmFyaSBpcyBsYXVuY2hlZAorICAgIC8vIG5leHQg
dGltZSwgaXQnbGwgZ28gdGhyb3VnaCB0aGUgZGF0YWJhc2UgZmlsZXMgYW5kIGNsZWFuIHVwIGFu
eSB6ZXJvLWJ5dGVzIG9uZXMuCisgICAgU1FMaXRlRGF0YWJhc2UgZGF0YWJhc2U7CisgICAgaWYg
KGRhdGFiYXNlLm9wZW4oZnVsbFBhdGgpKQorICAgICAgICByZXR1cm4gU1FMaXRlRmlsZVN5c3Rl
bTo6dHJ1bmNhdGVEYXRhYmFzZUZpbGUoZGF0YWJhc2Uuc3FsaXRlM0hhbmRsZSgpKTsKKyAgICBy
ZXR1cm4gZmFsc2U7CisjZW5kaWYKK30KKyAgICAKKyNpZiBQTEFURk9STShJT1MpCit2b2lkIERh
dGFiYXNlVHJhY2tlcjo6cmVtb3ZlRGVsZXRlZE9wZW5lZERhdGFiYXNlcygpCit7CisgICAgLy8g
VGhpcyBpcyBjYWxsZWQgd2hlbiBhbm90aGVyIGFwcCBoYXMgZGVsZXRlZCBhIGRhdGFiYXNlLiAg
R28gdGhyb3VnaCBhbGwgb3BlbmVkIGRhdGFiYXNlcyBpbiB0aGlzCisgICAgLy8gdHJhY2tlciBh
bmQgY2xvc2UgYW55IHRoYXQncyBubyBsb25nZXIgYmVpbmcgdHJhY2tlZCBpbiB0aGUgZGF0YWJh
c2UuCisgICAgCisgICAgeworICAgICAgICAvLyBBY3F1aXJlIHRoZSBsb2NrIGJlZm9yZSBjYWxs
aW5nIG9wZW5UcmFja2VyRGF0YWJhc2UuCisgICAgICAgIE11dGV4TG9ja2VyIGxvY2tEYXRhYmFz
ZShtX2RhdGFiYXNlR3VhcmQpOworICAgICAgICBvcGVuVHJhY2tlckRhdGFiYXNlKERvbnRDcmVh
dGVJZkRvZXNOb3RFeGlzdCk7CisgICAgfQorCisgICAgaWYgKCFtX2RhdGFiYXNlLmlzT3Blbigp
KQorICAgICAgICByZXR1cm47CisgICAgCisgICAgLy8gS2VlcCB0cmFjayBvZiB3aGljaCBvcGVu
ZWQgZGF0YWJhc2VzIGhhdmUgYmVlbiBkZWxldGVkLgorICAgIFZlY3RvcjxSZWZQdHI8RGF0YWJh
c2U+ID4gZGVsZXRlZERhdGFiYXNlczsKKyAgICB0eXBlZGVmIEhhc2hNYXA8UmVmUHRyPFNlY3Vy
aXR5T3JpZ2luPiwgVmVjdG9yPFN0cmluZz4gPiBEZWxldGVkRGF0YWJhc2VNYXA7CisgICAgRGVs
ZXRlZERhdGFiYXNlTWFwIGRlbGV0ZWREYXRhYmFzZU1hcDsKKyAgICAKKyAgICAvLyBNYWtlIHN1
cmUgbm90IHRvIGhvbGQgdGhlIG1fb3BlbkRhdGFiYXNlTWFwR3VhcmQgbXV0ZXggd2hlbiBjYWxs
aW5nCisgICAgLy8gRGF0YWJhc2U6Om1hcmtBc0RlbGV0ZWRBbmRDbG9zZSgpLCBzaW5jZSB0aGF0
IGNhbiBjYXVzZSBhIGRlYWRsb2NrCisgICAgLy8gZHVyaW5nIHRoZSBzeW5jaHJvbm91cyBEYXRh
YmFzZVRocmVhZCBjYWxsIGl0IHRyaWdnZXJzLgorICAgIHsKKyAgICAgICAgTXV0ZXhMb2NrZXIg
b3BlbkRhdGFiYXNlTWFwTG9jayhtX29wZW5EYXRhYmFzZU1hcEd1YXJkKTsKKyAgICAgICAgaWYg
KG1fb3BlbkRhdGFiYXNlTWFwKSB7CisgICAgICAgICAgICBEYXRhYmFzZU9yaWdpbk1hcDo6Y29u
c3RfaXRlcmF0b3Igb3JpZ2luTWFwRW5kID0gbV9vcGVuRGF0YWJhc2VNYXAtPmVuZCgpOworICAg
ICAgICAgICAgZm9yIChEYXRhYmFzZU9yaWdpbk1hcDo6Y29uc3RfaXRlcmF0b3Igb3JpZ2luTWFw
SXQgPSBtX29wZW5EYXRhYmFzZU1hcC0+YmVnaW4oKTsgb3JpZ2luTWFwSXQgIT0gb3JpZ2luTWFw
RW5kOyArK29yaWdpbk1hcEl0KSB7CisgICAgICAgICAgICAgICAgUmVmUHRyPFNlY3VyaXR5T3Jp
Z2luPiBvcmlnaW4gPSBvcmlnaW5NYXBJdC0+a2V5OworICAgICAgICAgICAgICAgIERhdGFiYXNl
TmFtZU1hcCogZGF0YWJhc2VOYW1lTWFwID0gb3JpZ2luTWFwSXQtPnZhbHVlOworICAgICAgICAg
ICAgICAgIFZlY3RvcjxTdHJpbmc+IGRlbGV0ZWREYXRhYmFzZU5hbWVzRm9yVGhpc09yaWdpbjsK
KworICAgICAgICAgICAgICAgIC8vIExvb3AgdGhyb3VnaCBhbGwgb3BlbmVkIGRhdGFiYXNlcyBp
biB0aGlzIG9yaWdpbi4gIEdldCB0aGUgY3VycmVudCBkYXRhYmFzZSBmaWxlIHBhdGggb2YgZWFj
aCBkYXRhYmFzZSBhbmQgc2VlIGlmCisgICAgICAgICAgICAgICAgLy8gaXQgc3RpbGwgbWF0Y2hl
cyB0aGUgcGF0aCBzdG9yZWQgaW4gdGhlIG9wZW5lZCBkYXRhYmFzZSBvYmplY3QuCisgICAgICAg
ICAgICAgICAgRGF0YWJhc2VOYW1lTWFwOjpjb25zdF9pdGVyYXRvciBkYk5hbWVNYXBFbmQgPSBk
YXRhYmFzZU5hbWVNYXAtPmVuZCgpOworICAgICAgICAgICAgICAgIGZvciAoRGF0YWJhc2VOYW1l
TWFwOjpjb25zdF9pdGVyYXRvciBkYk5hbWVNYXBJdCA9IGRhdGFiYXNlTmFtZU1hcC0+YmVnaW4o
KTsgZGJOYW1lTWFwSXQgIT0gZGJOYW1lTWFwRW5kOyArK2RiTmFtZU1hcEl0KSB7CisgICAgICAg
ICAgICAgICAgICAgIFN0cmluZyBkYXRhYmFzZU5hbWUgPSBkYk5hbWVNYXBJdC0+a2V5OworICAg
ICAgICAgICAgICAgICAgICBTdHJpbmcgZGF0YWJhc2VGaWxlTmFtZTsKKyAgICAgICAgICAgICAg
ICAgICAgU1FMaXRlU3RhdGVtZW50IHN0YXRlbWVudChtX2RhdGFiYXNlLCAiU0VMRUNUIHBhdGgg
RlJPTSBEYXRhYmFzZXMgV0hFUkUgb3JpZ2luPT8gQU5EIG5hbWU9PzsiKTsKKyAgICAgICAgICAg
ICAgICAgICAgaWYgKHN0YXRlbWVudC5wcmVwYXJlKCkgPT0gU1FMUmVzdWx0T2spIHsKKyAgICAg
ICAgICAgICAgICAgICAgICAgIHN0YXRlbWVudC5iaW5kVGV4dCgxLCBvcmlnaW4tPmRhdGFiYXNl
SWRlbnRpZmllcigpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRlbWVudC5iaW5kVGV4
dCgyLCBkYXRhYmFzZU5hbWUpOworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHN0YXRlbWVu
dC5zdGVwKCkgPT0gU1FMUmVzdWx0Um93KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRh
dGFiYXNlRmlsZU5hbWUgPSBzdGF0ZW1lbnQuZ2V0Q29sdW1uVGV4dCgwKTsKKyAgICAgICAgICAg
ICAgICAgICAgICAgIHN0YXRlbWVudC5maW5hbGl6ZSgpOworICAgICAgICAgICAgICAgICAgICB9
CisgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgICBib29sIGZvdW5kRGVs
ZXRlZERhdGFiYXNlID0gZmFsc2U7CisgICAgICAgICAgICAgICAgICAgIERhdGFiYXNlU2V0KiBk
YXRhYmFzZVNldCA9IGRiTmFtZU1hcEl0LT52YWx1ZTsKKyAgICAgICAgICAgICAgICAgICAgRGF0
YWJhc2VTZXQ6OmNvbnN0X2l0ZXJhdG9yIGRiRW5kID0gZGF0YWJhc2VTZXQtPmVuZCgpOworICAg
ICAgICAgICAgICAgICAgICBmb3IgKERhdGFiYXNlU2V0Ojpjb25zdF9pdGVyYXRvciBkYkl0ID0g
ZGF0YWJhc2VTZXQtPmJlZ2luKCk7IGRiSXQgIT0gZGJFbmQ7ICsrZGJJdCkgeworICAgICAgICAg
ICAgICAgICAgICAgICAgRGF0YWJhc2UqIGRiID0gc3RhdGljX2Nhc3Q8RGF0YWJhc2UqPigqZGJJ
dCk7CisgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgICAgIC8v
IFdlIGFyZSBkb25lIGlmIHRoaXMgZGF0YWJhc2UgaGFzIGFscmVhZHkgYmVlbiBtYXJrZWQgYXMg
ZGVsZXRlZC4KKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChkYi0+ZGVsZXRlZCgpKQorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgICAgICAgICAg
ICAgCisgICAgICAgICAgICAgICAgICAgICAgICAvLyBJZiB0aGlzIGRhdGFiYXNlIGhhcyBiZWVu
IGRlbGV0ZWQgb3IgaWYgaXRzIGRhdGFiYXNlIGZpbGUgbm8gbG9uZ2VyIG1hdGNoZXMgdGhlIGN1
cnJlbnQgdmVyc2lvbiwgdGhpcyBkYXRhYmFzZSBpcyBubyBsb25nZXIgdmFsaWQgYW5kIGl0IHNo
b3VsZCBiZSBtYXJrZWQgYXMgZGVsZXRlZC4KKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChk
YXRhYmFzZUZpbGVOYW1lLmlzTnVsbCgpIHx8IGRhdGFiYXNlRmlsZU5hbWUgIT0gcGF0aEdldEZp
bGVOYW1lKGRiLT5maWxlTmFtZSgpKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRl
bGV0ZWREYXRhYmFzZXMuYXBwZW5kKGRiKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBm
b3VuZERlbGV0ZWREYXRhYmFzZSA9IHRydWU7CisgICAgICAgICAgICAgICAgICAgICAgICB9Cisg
ICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAg
ICAgICAgIC8vIElmIHRoZSBkYXRhYmFzZSBubyBsb25nZXIgZXhpc3RzLCB3ZSBzaG91bGQgcmVt
ZW1iZXIgdG8gcmVtb3ZlIGl0IGZyb20gdGhlIE9yaWdpblF1b3RhTWFuYWdlciBsYXRlci4KKyAg
ICAgICAgICAgICAgICAgICAgaWYgKGZvdW5kRGVsZXRlZERhdGFiYXNlICYmIGRhdGFiYXNlRmls
ZU5hbWUuaXNOdWxsKCkpCisgICAgICAgICAgICAgICAgICAgICAgICBkZWxldGVkRGF0YWJhc2VO
YW1lc0ZvclRoaXNPcmlnaW4uYXBwZW5kKGRhdGFiYXNlTmFtZSk7CisgICAgICAgICAgICAgICAg
fQorICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIGlmICghZGVsZXRlZERhdGFiYXNl
TmFtZXNGb3JUaGlzT3JpZ2luLmlzRW1wdHkoKSkKKyAgICAgICAgICAgICAgICAgICAgZGVsZXRl
ZERhdGFiYXNlTWFwLnNldChvcmlnaW4sIGRlbGV0ZWREYXRhYmFzZU5hbWVzRm9yVGhpc09yaWdp
bik7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisgICAgCisgICAgZm9yICh1bnNp
Z25lZCBpID0gMDsgaSA8IGRlbGV0ZWREYXRhYmFzZXMuc2l6ZSgpOyArK2kpCisgICAgICAgIGRl
bGV0ZWREYXRhYmFzZXNbaV0tPm1hcmtBc0RlbGV0ZWRBbmRDbG9zZSgpOworICAgIAorICAgIERl
bGV0ZWREYXRhYmFzZU1hcDo6Y29uc3RfaXRlcmF0b3IgZW5kID0gZGVsZXRlZERhdGFiYXNlTWFw
LmVuZCgpOworICAgIGZvciAoRGVsZXRlZERhdGFiYXNlTWFwOjpjb25zdF9pdGVyYXRvciBpdCA9
IGRlbGV0ZWREYXRhYmFzZU1hcC5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpIHsKKyAgICAgICAg
U2VjdXJpdHlPcmlnaW4qIG9yaWdpbiA9IGl0LT5rZXkuZ2V0KCk7CisgICAgICAgIGlmIChtX2Ns
aWVudCkKKyAgICAgICAgICAgIG1fY2xpZW50LT5kaXNwYXRjaERpZE1vZGlmeU9yaWdpbihvcmln
aW4pOworICAgICAgICAKKyAgICAgICAgY29uc3QgVmVjdG9yPFN0cmluZz4mIGRhdGFiYXNlTmFt
ZXMgPSBpdC0+dmFsdWU7CisgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBkYXRhYmFz
ZU5hbWVzLnNpemUoKTsgKytpKSB7CisgICAgICAgICAgICBpZiAobV9jbGllbnQpCisgICAgICAg
ICAgICAgICAgbV9jbGllbnQtPmRpc3BhdGNoRGlkTW9kaWZ5RGF0YWJhc2Uob3JpZ2luLCBkYXRh
YmFzZU5hbWVzW2ldKTsKKyAgICAgICAgfSAgICAgICAgCisgICAgfQogfQorICAgIAorc3RhdGlj
IGJvb2wgaXNaZXJvQnl0ZUZpbGUoY29uc3QgU3RyaW5nJiBwYXRoKQoreworICAgIGxvbmcgbG9u
ZyBzaXplID0gMDsKKyAgICByZXR1cm4gZ2V0RmlsZVNpemUocGF0aCwgc2l6ZSkgJiYgIXNpemU7
Cit9CisgICAgCitib29sIERhdGFiYXNlVHJhY2tlcjo6ZGVsZXRlRGF0YWJhc2VGaWxlSWZFbXB0
eShjb25zdCBTdHJpbmcmIHBhdGgpCit7CisgICAgaWYgKCFpc1plcm9CeXRlRmlsZShwYXRoKSkK
KyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIAorICAgIFNRTGl0ZURhdGFiYXNlIGRhdGFiYXNl
OworICAgIGlmICghZGF0YWJhc2Uub3BlbihwYXRoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgIAorICAgIC8vIFNwZWNpZnkgdGhhdCB3ZSB3YW50IHRoZSBleGNsdXNpdmUgbG9ja2luZyBt
b2RlLCBzbyBhZnRlciB0aGUgbmV4dCByZWFkLAorICAgIC8vIHdlJ2xsIGJlIGhvbGRpbmcgdGhl
IGxvY2sgdG8gdGhpcyBkYXRhYmFzZSBmaWxlLgorICAgIFNRTGl0ZVN0YXRlbWVudCBsb2NrU3Rh
dGVtZW50KGRhdGFiYXNlLCAiUFJBR01BIGxvY2tpbmdfbW9kZT1FWENMVVNJVkU7Iik7CisgICAg
aWYgKGxvY2tTdGF0ZW1lbnQucHJlcGFyZSgpICE9IFNRTFJlc3VsdE9rKQorICAgICAgICByZXR1
cm4gZmFsc2U7CisgICAgaW50IHJlc3VsdCA9IGxvY2tTdGF0ZW1lbnQuc3RlcCgpOworICAgIGlm
IChyZXN1bHQgIT0gU1FMUmVzdWx0Um93ICYmIHJlc3VsdCAhPSBTUUxSZXN1bHREb25lKQorICAg
ICAgICByZXR1cm4gZmFsc2U7CisgICAgbG9ja1N0YXRlbWVudC5maW5hbGl6ZSgpOworCisgICAg
Ly8gRXZlcnkgc3FsaXRlIGRhdGFiYXNlIGhhcyBhIHNxbGl0ZV9tYXN0ZXIgdGFibGUgdGhhdCBj
b250YWlucyB0aGUgc2NoZW1hIGZvciB0aGUgZGF0YWJhc2UuCisgICAgLy8gaHR0cDovL3d3dy5z
cWxpdGUub3JnL2ZhcS5odG1sI3E3CisgICAgU1FMaXRlU3RhdGVtZW50IHJlYWRTdGF0ZW1lbnQo
ZGF0YWJhc2UsICJTRUxFQ1QgKiBGUk9NIHNxbGl0ZV9tYXN0ZXIgTElNSVQgMTsiKTsgICAgCisg
ICAgaWYgKHJlYWRTdGF0ZW1lbnQucHJlcGFyZSgpICE9IFNRTFJlc3VsdE9rKQorICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgLy8gV2Ugc2hvdWxkbid0IGV4cGVjdCBhbnkgcmVzdWx0LgorICAg
IGlmIChyZWFkU3RhdGVtZW50LnN0ZXAoKSAhPSBTUUxSZXN1bHREb25lKQorICAgICAgICByZXR1
cm4gZmFsc2U7CisgICAgcmVhZFN0YXRlbWVudC5maW5hbGl6ZSgpOworICAgIAorICAgIC8vIEF0
IHRoaXMgcG9pbnQsIHdlIGhvbGQgdGhlIGV4Y2x1c2l2ZSBsb2NrIHRvIHRoaXMgZmlsZS4gIERv
dWJsZS1jaGVjayBhZ2FpbiB0byBtYWtlIHN1cmUKKyAgICAvLyBpdCdzIHN0aWxsIHplcm8gYnl0
ZXMuCisgICAgaWYgKCFpc1plcm9CeXRlRmlsZShwYXRoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNl
OworICAgIAorICAgIHJldHVybiBTUUxpdGVGaWxlU3lzdGVtOjpkZWxldGVEYXRhYmFzZUZpbGUo
cGF0aCk7Cit9CisKK011dGV4JiBEYXRhYmFzZVRyYWNrZXI6Om9wZW5EYXRhYmFzZU11dGV4KCkK
K3sKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKE11dGV4LCBtdXRleCwgKCkpOworICAgIHJldHVy
biBtdXRleDsKK30KKwordm9pZCBEYXRhYmFzZVRyYWNrZXI6OmVtcHR5RGF0YWJhc2VGaWxlc1Jl
bW92YWxUYXNrV2lsbEJlU2NoZWR1bGVkKCkKK3sKKyAgICAvLyBMb2NrIHRoZSBkYXRhYmFzZSBm
cm9tIG9wZW5pbmcgYW55IGRhdGFiYXNlIHVudGlsIHdlIGFyZSBkb25lIHdpdGggc2Nhbm5pbmcg
dGhlIGZpbGUgc3lzdGVtIGZvcgorICAgIC8vIHplcm8gYnl0ZSBkYXRhYmFzZSBmaWxlcyB0byBy
ZW1vdmUuCisgICAgb3BlbkRhdGFiYXNlTXV0ZXgoKS5sb2NrKCk7Cit9CisKK3ZvaWQgRGF0YWJh
c2VUcmFja2VyOjplbXB0eURhdGFiYXNlRmlsZXNSZW1vdmFsVGFza0RpZEZpbmlzaCgpCit7Cisg
ICAgb3BlbkRhdGFiYXNlTXV0ZXgoKS51bmxvY2soKTsKK30KKwordm9pZCBEYXRhYmFzZVRyYWNr
ZXI6OnNldERhdGFiYXNlc1BhdXNlZChib29sIHBhdXNlZCkKK3sKKyAgICBNdXRleExvY2tlciBv
cGVuRGF0YWJhc2VNYXBMb2NrKG1fb3BlbkRhdGFiYXNlTWFwR3VhcmQpOworICAgIGlmICghbV9v
cGVuRGF0YWJhc2VNYXApCisgICAgICAgIHJldHVybjsKKworICAgIC8vIFRoaXMgd2Fsa2luZyBp
cyAtIHNhZGx5IC0gdGhlIG9ubHkgcmVsaWFibGUgd2F5IHRvIGdldCBhdCBlYWNoIG9wZW4gZGF0
YWJhc2UgdGhyZWFkLgorICAgIC8vIFRoaXMgd2lsbCBiZSBjbGVhbmVyIG9uY2UgPHJkYXI6Ly9w
cm9ibGVtLzU2ODA0NDE+IG9yIHNvbWUgb3RoZXIgREIgdGhyZWFkIGNvbnNvbGlkYXRpb24gdGFr
ZXMgcGxhY2UuCisgICAgRGF0YWJhc2VPcmlnaW5NYXA6Oml0ZXJhdG9yIGkgPSBtX29wZW5EYXRh
YmFzZU1hcC5nZXQoKS0+YmVnaW4oKTsKKyAgICBEYXRhYmFzZU9yaWdpbk1hcDo6aXRlcmF0b3Ig
ZW5kID0gbV9vcGVuRGF0YWJhc2VNYXAuZ2V0KCktPmVuZCgpOworICAgIAorICAgIGZvciAoOyBp
ICE9IGVuZDsgKytpKSB7CisgICAgICAgIERhdGFiYXNlTmFtZU1hcCogZGF0YWJhc2VOYW1lTWFw
ID0gaS0+dmFsdWU7CisgICAgICAgIERhdGFiYXNlTmFtZU1hcDo6aXRlcmF0b3IgaiA9IGRhdGFi
YXNlTmFtZU1hcC0+YmVnaW4oKTsKKyAgICAgICAgRGF0YWJhc2VOYW1lTWFwOjppdGVyYXRvciBk
Yk5hbWVNYXBFbmQgPSBkYXRhYmFzZU5hbWVNYXAtPmVuZCgpOworICAgICAgICBmb3IgKDsgaiAh
PSBkYk5hbWVNYXBFbmQ7ICsraikgeworICAgICAgICAgICAgRGF0YWJhc2VTZXQqIGRhdGFiYXNl
U2V0ID0gai0+dmFsdWU7CisgICAgICAgICAgICBEYXRhYmFzZVNldDo6aXRlcmF0b3IgayA9IGRh
dGFiYXNlU2V0LT5iZWdpbigpOworICAgICAgICAgICAgRGF0YWJhc2VTZXQ6Oml0ZXJhdG9yIGRi
U2V0RW5kID0gZGF0YWJhc2VTZXQtPmVuZCgpOworICAgICAgICAgICAgZm9yICg7IGsgIT0gZGJT
ZXRFbmQ7ICsraykgeworICAgICAgICAgICAgICAgIERhdGFiYXNlQ29udGV4dCogY29udGV4dCA9
ICgqayktPmRhdGFiYXNlQ29udGV4dCgpOworICAgICAgICAgICAgICAgIGNvbnRleHQtPnNldFBh
dXNlZChwYXVzZWQpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorfQorCisjZW5k
aWYKIAogdm9pZCBEYXRhYmFzZVRyYWNrZXI6OnNldENsaWVudChEYXRhYmFzZU1hbmFnZXJDbGll
bnQqIGNsaWVudCkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0
YWJhc2UvRGF0YWJhc2VUcmFja2VyLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFi
YXNlL0RhdGFiYXNlVHJhY2tlci5oCmluZGV4IDM1MjM3NDA3YWY4NWE1OWM1Zjg2YTZlZDlmN2Yz
MDk4YTliMWI5ODEuLmY4YTVkMTI2NmFhYTg1NTdiZmU5ZjE3ZTU5NjU3NWY4MWZmNWMwYmEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VUcmFj
a2VyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZVRy
YWNrZXIuaApAQCAtMTAwLDYgKzEwMCwyMSBAQCBwdWJsaWM6CiAgICAgYm9vbCBkZWxldGVPcmln
aW4oU2VjdXJpdHlPcmlnaW4qKTsKICAgICBib29sIGRlbGV0ZURhdGFiYXNlKFNlY3VyaXR5T3Jp
Z2luKiwgY29uc3QgU3RyaW5nJiBuYW1lKTsKIAorI2lmIFBMQVRGT1JNKElPUykKKyAgICB2b2lk
IHJlbW92ZURlbGV0ZWRPcGVuZWREYXRhYmFzZXMoKTsKKyAgICBzdGF0aWMgYm9vbCBkZWxldGVE
YXRhYmFzZUZpbGVJZkVtcHR5KGNvbnN0IFN0cmluZyYpOworCisgICAgLy8gTW9iaWxlU2FmYXJp
IHdpbGwgZ3JhYiB0aGlzIG11dGV4IG9uIHRoZSBtYWluIHRocmVhZCBiZWZvcmUgZGlzcGF0Y2hp
bmcgdGhlIHRhc2sgdG8gCisgICAgLy8gY2xlYW4gdXAgemVybyBieXRlIGRhdGFiYXNlIGZpbGVz
LiAgQW55IG9wZXJhdGlvbnMgdG8gb3BlbiBuZXcgZGF0YWJhc2Ugd2lsbCBoYXZlIHRvCisgICAg
Ly8gd2FpdCBmb3IgdGhhdCB0YXNrIHRvIGZpbmlzaCBieSB3YWl0aW5nIG9uIHRoaXMgbXV0ZXgu
CisgICAgc3RhdGljIE11dGV4JiBvcGVuRGF0YWJhc2VNdXRleCgpOworICAgIAorICAgIHN0YXRp
YyB2b2lkIGVtcHR5RGF0YWJhc2VGaWxlc1JlbW92YWxUYXNrV2lsbEJlU2NoZWR1bGVkKCk7Cisg
ICAgc3RhdGljIHZvaWQgZW1wdHlEYXRhYmFzZUZpbGVzUmVtb3ZhbFRhc2tEaWRGaW5pc2goKTsK
KyAgICAKKyAgICB2b2lkIHNldERhdGFiYXNlc1BhdXNlZChib29sKTsKKyNlbmRpZgorICAgIAog
ICAgIHZvaWQgc2V0Q2xpZW50KERhdGFiYXNlTWFuYWdlckNsaWVudCopOwogCiAgICAgLy8gRnJv
bSBhIHNlY29uZGFyeSB0aHJlYWQsIG11c3QgYmUgdGhyZWFkIHNhZmUgd2l0aCBpdHMgZGF0YQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9TUUxUcmFuc2Fj
dGlvbkJhY2tlbmQuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9TUUxU
cmFuc2FjdGlvbkJhY2tlbmQuY3BwCmluZGV4IDU2OGJlOTdkMGVjZDczYzYyOTFmMjgwOTY4MzY3
YjUwZTNmYjZmMTMuLjI0NGYyODU2NmY3ZmUzYTc0Mzg4ZDFhZWUyMzJiNmY0Njg5ZTc0YWEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvU1FMVHJhbnNhY3Rp
b25CYWNrZW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL1NR
TFRyYW5zYWN0aW9uQmFja2VuZC5jcHAKQEAgLTUxOCw2ICs1MTgsMTQgQEAgdm9pZCBTUUxUcmFu
c2FjdGlvbkJhY2tlbmQ6OnBlcmZvcm1OZXh0U3RlcCgpCiAgICAgcnVuU3RhdGVNYWNoaW5lKCk7
CiB9CiAKKyNpZiBQTEFURk9STShJT1MpCitib29sIFNRTFRyYW5zYWN0aW9uQmFja2VuZDo6c2hv
dWxkUGVyZm9ybVdoaWxlUGF1c2VkKCkgY29uc3QKK3sKKyAgICAvLyBTUUxUcmFuc2FjdGlvbnMg
c2hvdWxkIG9ubHkgcnVuLXdoaWxlLXBhdXNlZCBpZiB0aGV5IGhhdmUgcHJvZ3Jlc3NlZCBwYXNz
ZWQgdGhlIGZpcnN0IHRyYW5zYWN0aW9uIHN0ZXAuCisgICAgcmV0dXJuIG1fbmV4dFN0YXRlICE9
IFNRTFRyYW5zYWN0aW9uU3RhdGU6OkFjcXVpcmVMb2NrOworfQorI2VuZGlmCisKIHZvaWQgU1FM
VHJhbnNhY3Rpb25CYWNrZW5kOjpleGVjdXRlU1FMKFBhc3NPd25QdHI8QWJzdHJhY3RTUUxTdGF0
ZW1lbnQ+IHN0YXRlbWVudCwKICAgICBjb25zdCBTdHJpbmcmIHNxbFN0YXRlbWVudCwgY29uc3Qg
VmVjdG9yPFNRTFZhbHVlPiYgYXJndW1lbnRzLCBpbnQgcGVybWlzc2lvbnMpCiB7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL1NRTFRyYW5zYWN0aW9uQmFj
a2VuZC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9TUUxUcmFuc2FjdGlv
bkJhY2tlbmQuaAppbmRleCA2ZWZjNzUxZmYxNDViNDQ4ZTA0MTE1NTI1YjdjYjk2NmMyOGEzOGEx
Li5mZWMzNjYxMGExNWY5YWUzZTUwYzU4MjU0YmJmNTA1MWUyM2U5Y2ZiIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL1NRTFRyYW5zYWN0aW9uQmFja2VuZC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvU1FMVHJhbnNhY3Rpb25C
YWNrZW5kLmgKQEAgLTY4LDYgKzY4LDEwIEBAIHB1YmxpYzoKICAgICB2b2lkIGxvY2tBY3F1aXJl
ZCgpOwogICAgIHZvaWQgcGVyZm9ybU5leHRTdGVwKCk7CiAKKyNpZiBQTEFURk9STShJT1MpCisg
ICAgYm9vbCBzaG91bGRQZXJmb3JtV2hpbGVQYXVzZWQoKSBjb25zdDsKKyNlbmRpZgorCiAgICAg
RGF0YWJhc2VCYWNrZW5kKiBkYXRhYmFzZSgpIHsgcmV0dXJuIG1fZGF0YWJhc2UuZ2V0KCk7IH0K
ICAgICBib29sIGlzUmVhZE9ubHkoKSB7IHJldHVybiBtX3JlYWRPbmx5OyB9CiAgICAgdm9pZCBu
b3RpZnlEYXRhYmFzZVRocmVhZElzU2h1dHRpbmdEb3duKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9SZXNvdXJjZXMvRGljdGF0aW9uUGhyYXNlV2l0aEFsdGVybmF0aXZlc0RvdC5wbmcg
Yi9Tb3VyY2UvV2ViQ29yZS9SZXNvdXJjZXMvRGljdGF0aW9uUGhyYXNlV2l0aEFsdGVybmF0aXZl
c0RvdC5wbmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNDJlMTBmOGNhNjY3MDIwZGRkYjhiZTg0Zjk2ODQ5NTE3NDM4
NTA2MQpHSVQgYmluYXJ5IHBhdGNoCmxpdGVyYWwgMTgzCnpjbWVBU0BOPyhvbEh5YHVWQnEhaWEw
dnBeRUlgYzYhM0hGXmR8N3U0Tk8yWjtMPjRuSmEwYFBsQmczcFk1PG8kUAp6V1JEPFUyOEpxQzI4
TT1hMjhOJmlmJUhvVGhFZjl0aEYxdjszfDJFMzd7djFAI1VGSjhzPHJpV2FTVy1yI2Q2UykKej53
dG0pIUA7WmsoR2dsSXQhMn5wPWAlVmAqIStSTHtNP1QxayZIcUNeRjYrOCgpbHhBQGliR3plQ09Y
Y1BzIVkzCmFlOD1GKEJ6fV9GWmV9amZBTz1yWUtiTGgqMn43WmBNS3VpbwoKbGl0ZXJhbCAwCkhj
bVY/ZDAwMDAxCgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUmVzb3VyY2VzL0RpY3RhdGlv
blBocmFzZVdpdGhBbHRlcm5hdGl2ZXNEb3RAMngucG5nIGIvU291cmNlL1dlYkNvcmUvUmVzb3Vy
Y2VzL0RpY3RhdGlvblBocmFzZVdpdGhBbHRlcm5hdGl2ZXNEb3RAMngucG5nCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LmZmMzY5ZmI0ODY5ZGZmOTkwNjJiZDYwMzJjZWQyOTkwMDhhMjU3YmYKR0lUIGJpbmFyeSBwYXRj
aApsaXRlcmFsIDI2Nwp6Y21lQVNATj8ob2xIeWB1VkJxIWlhMHZwXjk2LSMqITNIRyV2RUtnO3Em
TiNhQjh3UnF4UD9LT2t6dip4MzgwYHQKenZQWTBGMTRFVDYxNEJiSTFIO2UlSz44JkVMI1k3KyE+
YUBhMkNFcWk0QzQ4ZDsqWXVrKWxUJHVhU1ctcjwjV29LCno+eVUjNCFeMjRQJGpKKkA9YmdURSVJ
ayF4aTBqMl9qK0hxJmRxYmApTlZwZXlEMVJkdHBVP018ciRjK1R6T2d6agp6YmxgYHx6Vm41NGk8
dioldnV1Q2Y5VTh9UXB5RWlIbF9QVURnVEFrLVV3Kig8SntRRmpUfCo2YXhwS3dSMypPN0YKekBW
ZGF8ei1XKz5aRTNwbkx3JlVPQSM7N004YDhTVkc5bm1RK0tNZWdacDs3UlZYISlCPEd8VD5HODU9
SDIyV1ElCkptdnY0Rk8jdEBPU2lBckwKCmxpdGVyYWwgMApIY21WP2QwMDAwMQoKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL1Jlc291cmNlcy9TcGVsbGluZ0RvdC5wbmcgYi9Tb3VyY2UvV2Vi
Q29yZS9SZXNvdXJjZXMvU3BlbGxpbmdEb3QucG5nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjc2MWE5Yjc4OGQ0NDA2
Mjg5MmM1ZDM3NjI2ODY4NzRlZjA3MWY1MjQKR0lUIGJpbmFyeSBwYXRjaApsaXRlcmFsIDE5NQp6
Y21lQVNATj8ob2xIeWB1VkJxIWlhMHZwXkVJYGM2ITMtcHV3Y0BeajFreFJTOVReeXwtTUhjKFZG
Y3QkbWJnWmcKejFtfnhmbHFWTFlHQn5FPkMjNVFRPHxkfTYyQmp2WlIySDYwd0UtJVU0KTYoYXtl
U2k5enR5WSVoS0sqfXBZWUdZCno7YWA5TVV3UWR8O1N2QTt8Mks0RnkkZSp2U3JYKEk0Q0kwVkwk
SDVeNVhiXmc3c3JyX1RTKkJDREd3NDdrYGtYTQpnQiV+JWtXOGc0Z1Y2PGoxNE9fQWhzRF4+VCk3
OCZxb2xgOyswRGNvaG8mVyM8CgpsaXRlcmFsIDAKSGNtVj9kMDAwMDEKCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9SZXNvdXJjZXMvU3BlbGxpbmdEb3RAMngucG5nIGIvU291cmNlL1dlYkNv
cmUvUmVzb3VyY2VzL1NwZWxsaW5nRG90QDJ4LnBuZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mYThlMzFjMmRhYTU4
M2UwNDM1YTUzYTRiYzFiZTM1M2IxMzUwZWY3CkdJVCBiaW5hcnkgcGF0Y2gKbGl0ZXJhbCAyNTYK
emNtZUFTQE4/KG9sSHlgdVZCcSFpYTB2cF45Ni0jKiEzSEcldkVLZztxJk4jYUI4d1JxeFA/S09r
enYqeDM4MGB0Cnp2UFkwRjE0RVQ2MTRCYkkxSCVefS1FeHRFQXZkMFo7WUFKdWdIMU9CZ0xGam1i
TV58TCtCUSFZJEI+RiFBKlZLUwp6SDkxSGVfKm5udD9uNEREaShnVEd6SyF+Y0JDZFBnQTYkODR7
aiNMe2dLcW19JjEoZjZVdU1fMD1VPE99X1MyNmUKem9uY0xgO1dPN3pSdENxZm9tdEpfODc4RUxj
Umt7V05xWF5IPlVxTWZCIyZUPyheZFMzOE98TnRiVlB3a2FmNHZVCnp7aHM4ezsqKngjWjhxZTtj
SjxMOyZJWChSM1ByYU08dW1BUCl4R2czXnhzPmNpeEBtenthbl5MQntUczVvfGF4NQoKbGl0ZXJh
bCAwCkhjbVY/ZDAwMDAxCgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUmVzb3VyY2VzL2Rl
Y3JlbWVudEFycm93LnRpZmYgYi9Tb3VyY2UvV2ViQ29yZS9SZXNvdXJjZXMvZGVjcmVtZW50QXJy
b3cudGlmZgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi43MTRmMDI0YmEyN2Y5MjA2NDVlYjQ1ZTYxM2JkYTc3OWQyMDY3
NDcwCkdJVCBiaW5hcnkgcGF0Y2gKbGl0ZXJhbCA1NTAKemNtYWl2ITQzZ0k0MkoqQ3ZmKUJWa1Ja
PEQ1cFo7SHVvdkQxdVowKSVjVjs/aW1OMWlVfE1kVWImTmRBO2ZTbUNBCno+fWNQPUFpfG4/RktQ
YHQ9R3xCQCYkND1aaFIoRUZKOCRWZHt7KEYpciNxQ0A4U05nSCUyRD5wRnhHWSF6ekpnPwp6blJu
S1FPemU9cVJuWmdsYDRPaT4pRXl3eVFzcHtmc2swOCRCaFk2cigzNyFhQ1J4KiFuSzUjWklsNzR0
MTZkUzMKZG04SSlseVpMOFZ6ZUtJP1MjYnQ4cmg3flNWVlNScV9ZR0ZLQWJTNysKCmxpdGVyYWwg
MApIY21WP2QwMDAwMQoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1Jlc291cmNlcy9oU2Ny
b2xsQ29udHJvbF9sZWZ0LnBuZyBiL1NvdXJjZS9XZWJDb3JlL1Jlc291cmNlcy9oU2Nyb2xsQ29u
dHJvbF9sZWZ0LnBuZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iN2JkODdkNzEzMGQ4YjcwMjgwNDI4NjBhNjMwZjEy
OTA5YzU4ZTI1CkdJVCBiaW5hcnkgcGF0Y2gKbGl0ZXJhbCAzMDMyCnpjbVY7fTNuJW82UCk8aDsz
S3xMazAwMGUxTkpMVHEwMDBMNzAwMGRMMV5AczZXeXk1NDAwMDA5YTdiQm0wMDBYVQp6MDAwWFUw
UldudTd5dGtZTz0mfHpQKjctWmJaPktMWipVKzxMcWl+TmEmS203WS1Jb2RjLW95KWNVWTc2N0N6
dGkKeldlLStEKnptRUpZPUhuR0JkaUY+NUx1IVNrXm9fWjVFNE1lZ0BfN1A2Y3JKaU5MOXB3KWUx
PFJofmw2cXhNeDklCnpoKzJ6UFRzWkNAK140bURkaGhNK2BgNyF0PWJZI0smVXchZGZEc1pWaz47
WG0wNjl7SEpVWkFQazU1UiUkLVJJQQp6Ni1lTCZBUTB4dSFlPDQ9MDA4ZzxkM2Iod3VzezModVd0
WVgwQzNlVkJvZkVyfEFWP3ZDUllGO2twU1EjNjZYczYKemtXdjgxRT55QEEwTFR+c3V2ND5TM0lM
UDwwQm1gRExMdmFGNEZLJSlOaj9QdCpyfTc7N1hhOXo5SHxIWmpSNjNlCnpDYFRqJEspVjI3UmVA
NDAwPkh1bXBzWVk1RShFfT8wZjFTeUdEaVl7eSMpWXZqIyFXbkt3dG9Ybkw7ZWcwM2JMNQp6MDdE
KVYlPnk3ejFFNFV7enU+N35hRH0pPzBSWF91bUNjdCsobFpwZW1DemJAXjY9b3xBPnpWcHV8aT1O
REcrN30KejxSWUF4bjxFb1E9TDFhNjM7K05jYE8oNHRJNnNpKj1IJWgjWDZKMTBedT9uN1l3Jkwo
SnxYZW57PUFGPTFPTzBECnomK3BuXzw+bDRgYUt7MCNiLSF6PVRMOVd0MEJHTyZUe0dKV3Bqcnlo
ZGlqZmFJUSYyIW99cDA0SlJLWWczayZUZgp6VnhoZS08QkxCM0d2Uk9HaSs9WH1LcHlfdmRoaF5v
bm4wUFl6QHZseGFiYSREdTJQUVklTEdDKFp1alJTez5PIVgKentmO1RvO3h3XmJFRVM2SlNjJGsk
QjJDQTZ4bClsdEE8MzJFNjZ0PzNAZ0o3YDM2cG1YMElZXmp6KXJSWXdhYVk0CnplKG5KUml3Oz1R
Yl50KHJeRFRAVDN5fWEyWEVaVy1fVyVIc3p4al9xRCoqdF9tISN0VzBLRGlKVCZSPjZPdlZUUgp6
MDdSZ0hEekhIWjQ4YXR2enomP2o5bFhGNzAkflAzS254X25KUDwrIzxiV0lzcCV8N3k4QzFZSiph
V3EoMH4oK2EKem4mQSslITcoQHU9aW19dGYkTU09MjRFUFQhV2dgVTI/Um1OMm9xcjtJKjFXc2pA
VG0zMnA1QC0xUmBOYkc/SVglCnpBbkF3e1E2azAyYS07Jk9MVFpzK05GKHdzYXVoakBUdE5EZStz
R2c/aXV7VmFNPV9MdnZRWSFuMChDJlNzMj5gTgp6Iy1NWjJiVGtpTGZSPl9iKEhnV0tKJUZ+TnJf
b0YzYiN3cklpakhHfChKPkJZak0tc2FqRTY7RmlDN3ZZI307R2QKelNUJENVSERldUVIK0JecHpA
QjA2MnFYZkZmRGBOcFVXNT9CWT1WJUdNXzVjKUwjUVJ9QmVXOF8ydi1TJWdmWVM9CnpCOW98M3Y/
WTJIYE5WaSlJPGImZ015d3w4QXMhKX5DMC17RTZKTGBeQm80YHY8VzM0OUM2Rj5uM3JUQjgrZWpe
Pgp6UT1+cjk1TlZ1RENoTCVHJD0+NyR2VmcyMG15eCVTNTBGb2lgXm0lUHctaD9YaH5pOE1xOWp0
SmxvQ29jV2syTnYKenJKcGlGblZfbXMmOGVRJDImI3hXcElTKzZwbXRDJVEtYFMmRzxCTEsmNl5m
TyVjTCElKXpGJTBYS0Q5bkZYP287CnozRWhKcE1WSFcqKHJmNGs+RjRRI15taHltaDdFKHFOTWF9
JVlaLWVQcng+PnhGUFRpSDE9RStBJFckPWJHOD5zXgp6bT1CbjVSYWgkYUR0cn1AJGBYfTJsfiRG
MG1GS0VkUmRaRTgpcEBFNVJJNjFGdDZvLXByYmJuPlB+KWl5KUUyQU4KenNVMjBqc1d6XzhRZz4z
MVB8czBjcXJQQUxnOEV8KHZXQTY1cG9VMUpSQWFaczhJMihwI3hpQmBTVkdvdlJzLXVTCnpZblYt
OVRlQTc9T20rcVA4K0k+eU9qQVIxcyVFVGFrIUdGZGFtQGheIzxBZT1Jb1heXyZMUGVYJlUtQmJF
azctPgp6KUByUzB0JHdYSCtJcmYpK0c2Yzs/SDI5cCtWNkY2b2p7IXxvJUszeElgPyU2eDtEQnx4
YG4jaWI8Z1RQKF9geS0Kej0/VjQ5XiR6TFgoTVI9ZF5yUTZgPmhJUj8oSH1RM0d6ZDEzOEVpMilX
QU16N1c5VnlgWH1IbndneUU8VyVWQGZoCnojQXVfQE51d3ZZQ2htdTQ8Mjg1fUs0ej9NOUFkMEEt
ZXVmdEpZaXlLR1RXcllxe1phRURiMTg/bnI2RHV3OXxDVgp6JSpaVTx0a3xyez8yYjlyb05Kejh6
UytGbntFZGFCTVYhUy1pI0NoTG1mRHRsJUxTSEFtaU1mZlJ6Nm1GUmBwaWIKenRWen5mPm4hVlMp
Pm12JDgme2hRbj53NHp3eTNSfXQ7QllsWlFtNSk2cHR5PURmTHJzK0EtfD4+PGE5Zj47fjtRCnpf
Rj91Vl9IRmpoOW4yZ085bzlRXkpBODY8YjxCMmJhSj1pSjtXV2RrI0hxdlNTNyNlJXA+dih7SDVh
QiFram9PNgp6YzkkMVpaS3NOLVpsOEx+bUV7YGx5MykxTl5gbzErbzd9RDBaUGVZJko7aTtpYCVO
eUo4XzhZNko/fXlFQGJfNWEKemFtP2VMcjw8cTNeTntCK1VVcHR0VWktWnNQcVVtUnA0S3BKJGxK
dFE7SndSeFVeK2ZNVyV8elAxM3R6KzAtdClICnpoclh1MUJIdWx9Qll4ST9uU0taU3A4R3JjJWwo
aHx6dXxmRTdWJUM2VTspN2E8cEk1YzhpQkl8WVhjdHluRk9UPQp6SDNmfFl5OU9AfEp7M1g/MkBQ
MnZhKzdiczd4RWtWVj44QG1FU2t8MyRfU2ttU3t3UT4lcUMxOCkpOV98Jmp7WlQKemVzOEF2T3pG
KEYyI0RaRVk+Mm9ZWCZJUnBgRiN7QURsKTFyPlFTXiliYThhfEVZX14jU15IPGJqYDVHRmpKWjQ4
CnpZUE5FQVhSSzskUWZ5PUZvNEEwdXM8P3I4aHhrU0RtbEFYbkJuajxfPGl5eS1KJkVJVTBfU1gr
R28wal9SRi1zTwp6dUkxZEt4ZmtaPyZkWio2Slh0a2FrYkYzV209YyQ9S2puaVVMUXBSbFB2eGc+
TyZ0XlJncXd2PU1aVGhxcUVXSDgKenhKbz5kPUFCbFJfQmg9O2VNOTxhaEVHT3kjeG5efFFZKDNw
OElyanBeRyNNbio1MGhvKj5Ud3xJaDM0fm9URXw9CnpYX21BcipEJHZ6d0ArcChFMFljNmRGRX0o
ODxVNjFfdjluX2JNeEMzWT11bkdxcUlgNFAhMU1NRlFfWWNUTnFuLQp6eEpiUTdUR1RWJlg4ITg9
Qk1YOFNlNyVzY1BgSSRPKnRtRkVAISVyQU1ZfFJ3aSZHYk9FLV90RnhAMzUxQFh+JEQKelh2P3ll
e1pRZ3FRZFJQNWRFRH1qUWlJWl5yOSYlJVMyVUhXbCohOSh1SmxeRFYtO2JRV0w1OEttKF5RVmU8
fk4xCnpVI3hKZnNJS18xTSE0cVVTNTlCbWVEISY0K1M9WXF4NjFBN05iOThRWm1qb056cHFOWVlD
K1l8aFZUdW84fVdfaAp6OCgoY28tZ0tkUVlXMHJJdzlVJVIxMnRoYT9PVipZdGxSUlRIbHl9Pm9x
dGArUntnRTN4NHpqWCtTYjNfY1lFXj0KemdCPXcrLXRVeWB5dE9OTVM4S2dSZWY0aEE/dDxOcThl
JHV8enZoMTN4SlAkUyNoI0NRckYjZVZNZXBsc2JaPjBqCnp1Zk07dDMyam1+alVHcmthT0luVFpg
enlmbnM+RXVTfUczMExGS19HLT09KGY8NTF8SyZjb2NwJkVKYFN4QWgzPwp6Tk8+I0xJPV4rU0V1
KEZxSil5bnQ9IX5QQzliTyRyelBKQj0/PWo8SmI7bVcyU0R2N3FDX1ZBezxic3Bxcih+eXwKem9s
WllKKVMyOVFfZX1obVloNilZeT1PenVvPEEzSz9vNzh8X3NSMyM9WntfUnltMGcpX2hRPjZ3QGEt
KHUwMlA3CnphUSkjKHVVbHtIVyV0WU5TM0l0Q15pQXRLKGVLbExgZjkre2JKeklTRT91OF96Mzt+
QzhARnlJLTVqX2p5N2w7Vwp6X1UjdlUzaHFxWVUzIW1ydWwmQit7cHR0JDU5KXVreztfNGlaUSVH
fHorbGhBU3I2fEgzNVRCa2w+Z0kqO25HTFUKek43Vy1uQmFNJXBBMEhiSDhvbHlsJlhlSiV2Wm9X
eiU2P1k9ZEZ5a2w9aW1MfWAlQk1Re01oZ2RgSFJvTHU2ZTJSCnphX182RHVSNnlnI34tfVRjfEd4
X3tIQE8wZWVieU15NUdtV0FESmxwSz5rcWsoZlZWQHJfZkxMS0llUz97NGUpfQp6XlpPO3pwRUNk
ZTAwZGAyTytmJHZ2NXRLRVFJaH13MDNjJlhRY1ZCPWRMO2s9ZlAoLTRgVHFhX2ZhdzRMYnVhKGAK
ej5SPG8+SSt5P2U3aktlWiNZTy1DMFFFXmtLfiM5IVdSTmpWISQxJjR8TCZ9SipQY1lDaTN8bE9T
VHNRPnJFODB4CnpSNT0wP01fNihYcDk2XnNpNXZKM1pze2x4bVNzRF5yaWQqJEZ3TipvUHhKcUxp
UEk1TnBAdUMxYk84RHcyJHQ2Twp6WiVFMjNGI3JidT1NUzZCUTw1WilMPSp9a1cmKGYpYVEoZDd5
JT1MfG8yRWhFX2VZUH1kPiVSSC1waklGfE03PSgKeiZmUW00d0kxbntLLVFSclohTnlkNV9NZjsz
TW5HYFFjQkAwM35edmErcVApO2R2c2p+RHZJSldQMTd4YShET1c0CnpZcilLNVd7aGM5UyhkI2ly
N290WVgoLT8kJit9SmlfVG82Y0d7JEpISEh+ITxmRkEmZXFHKUJVeV5+VGR8R2hSOQphelhKZFp1
fCF1KHxKZ1ZJMDAwMDxNTlVNbkxTVFlpQWlNJHEKCmxpdGVyYWwgMApIY21WP2QwMDAwMQoKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1Jlc291cmNlcy9oU2Nyb2xsQ29udHJvbF9taWRkbGUu
cG5nIGIvU291cmNlL1dlYkNvcmUvUmVzb3VyY2VzL2hTY3JvbGxDb250cm9sX21pZGRsZS5wbmcK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uM2MzNTExNjgwZDI5ZWZkOGU4YmFlNmVlNTkyNGU3NDg3NTA1NzE0MApHSVQg
YmluYXJ5IHBhdGNoCmxpdGVyYWwgMjg2Mgp6Y21WK30zKEBxNlApPGg7M0t8TGswMDBlMU5KTFRx
MDAwNjIwMDBkTDFeQHM2Z1ckak0wMDAwOWE3YkJtMDAwWFUKejAwMFhVMFJXbnU3eXRrWU89Jnx6
UCo3LVpiWj5LTFoqVSs8THFpfk5hJkttN1ktSW9kYy1veSljVVk3NjdDenRpCnpXZS0rRCp6bUVK
WT1IbkdCZGlGPjVMdSFTa15vX1o1RTRNZWdAXzdQNmNySmlOTDlwdyllMTxSaH5sNnF4TXg5JQp6
aCsyelBUc1pDQCteNG1EZGhoTStgYDchdD1iWSNLJlV3IWRmRHNaVms+O1htMDY5e0hKVVpBUGs1
NVIlJC1SSUEKejYtZUwmQVEweHUhZTw0PTAwOGc8ZDNiKHd1c3szKHVXdFlYMEMzZVZCb2ZFcnxB
Vj92Q1JZRjtrcFNRIzY2WHM2CnprV3Y4MUU+eUBBMExUfnN1djQ+UzNJTFA8MEJtYERMTHZhRjRG
SyUpTmo/UHQqcn03OzdYYTl6OUh8SFpqUjYzZQp6Q2BUaiRLKVYyN1JlQDQwMD5IdW1wc1lZNUUo
RX0/MGYxU3lHRGlZe3kjKVl2aiMhV25Ld3RvWG5MO2VnMDNiTDUKejA3RClWJT55N3oxRTRVe3p1
Pjd+YUR9KT8wUlhfdW1DY3QrKGxacGVtQ3piQF42PW98QT56VnB1fGk9TkRHKzd9Cno8UllBeG48
RW9RPUwxYTYzOytOY2BPKDR0STZzaSo9SCVoI1g2SjEwXnU/bjdZdyZMKEp8WGVuez1BRj0xT08w
RAp6Jitwbl88Pmw0YGFLezAjYi0hej1UTDlXdDBCR08mVHtHSldwanJ5aGRpamZhSVEmMiFvfXAw
NEpSS1lnM2smVGYKelZ4aGUtPEJMQjNHdlJPR2krPVh9S3B5X3ZkaGheb25uMFBZekB2bHhhYmEk
RHUyUFFZJUxHQyhadWpSU3s+TyFYCnp7ZjtUbzt4d15iRUVTNkpTYyRrJEIyQ0E2eGwpbHRBPDMy
RTY2dD8zQGdKN2AzNnBtWDBJWV5qeilyUll3YWFZNAp6ZShuSlJpdzs9UWJedChyXkRUQFQzeX1h
MlhFWlctX1clSHN6eGpfcUQqKnRfbSEjdFcwS0RpSlQmUj42T3ZWVFIKejA3UmdIRHpISFo0OGF0
dnp6Jj9qOWxYRjcwJH5QM0tueF9uSlA8KyM8YldJc3AlfDd5OEMxWUoqYVdxKDB+KCthCnpuJkEr
JSE3KEB1PWltfXRmJE1NPTI0RVBUIVdnYFUyP1JtTjJvcXI7SSoxV3NqQFRtMzJwNUAtMVJgTmJH
P0lYJQp6QW5Bd3tRNmswMmEtOyZPTFRacytORih3c2F1aGpAVHRORGUrc0dnP2l1e1ZhTT1fTHZ2
UVkhbjAoQyZTczI+YE4KeiMtTVoyYlRraUxmUj5fYihIZ1dLSiVGfk5yX29GM2Ijd3JJaWpIR3wo
Sj5CWWpNLXNhakU2O0ZpQzd2WSN9O0dkCnpTVCRDVUhEZXVFSCtCXnB6QEIwNjJxWGZGZkRgTnBV
VzU/Qlk9ViVHTV81YylMI1FSfUJlVzhfMnYtUyVnZllTPQp6QjlvfDN2P1kySGBOVmkpSTxiJmdN
eXd8OEFzISl+QzAte0U2SkxgXkJvNGB2PFczNDlDNkY+bjNyVEI4K2VqXj4KelE9fnI5NU5WdURD
aEwlRyQ9PjckdlZnMjBteXglUzUwRm9pYF5tJVB3LWg/WGh+aThNcTlqdEpsb0NvY1drMk52Cnpy
SnBpRm5WX21zJjhlUSQyJiN4V3BJUys2cG10QyVRLWBTJkc8QkxLJjZeZk8lY0whJSl6RiUwWEtE
OW5GWD9vOwp6M0VoSnBNVkhXKihyZjRrPkY0USNebWh5bWg3RShxTk1hfSVZWi1lUHJ4Pj54RlBU
aUgxPUUrQSRXJD1iRzg+c14Kem09Qm41UmFoJGFEdHJ9QCRgWH0ybH4kRjBtRktFZFJkWkU4KXBA
RTVSSTYxRnQ2by1wcmJibj5QfilpeSlFMkFOCnpzVTIwanNXel84UWc+MzFQfHMwY3FyUEFMZzhF
fCh2V0E2NXBvVTFKUkFhWnM4STIocCN4aUJgU1ZHb3ZScy11Uwp6WW5WLTlUZUE3PU9tK3FQOCtJ
PnlPakFSMXMlRVRhayFHRmRhbUBoXiM8QWU9SW9YXl8mTFBlWCZVLUJiRWs3LT4KeilAclMwdCR3
WEgrSXJmKStHNmM7P0gyOXArVjZGNm9qeyF8byVLM3hJYD8lNng7REJ8eGBuI2liPGdUUChfYHkt
Cno9P1Y0OV4kekxYKE1SPWReclE2YD5oSVI/KEh9UTNHemQxMzhFaTIpV0FNejdXOVZ5YFh9SG53
Z3lFPFclVkBmaAp6I0F1X0BOdXd2WUNobXU0PDI4NX1LNHo/TTlBZDBBLWV1ZnRKWWl5S0dUV3JZ
cXtaYUVEYjE4P25yNkR1dzl8Q1YKeiUqWlU8dGt8cns/MmI5cm9OSno4elMrRm57RWRhQk1WIVMt
aSNDaExtZkR0bCVMU0hBbWlNZmZSejZtRlJgcGliCnp0Vnp+Zj5uIVZTKT5tdiQ4JntoUW4+dzR6
d3kzUn10O0JZbFpRbTUpNnB0eT1EZkxycytBLXw+PjxhOWY+O347UQp6X0Y/dVZfSEZqaDluMmdP
OW85UV5KQTg2PGI8QjJiYUo9aUo7V1dkayNIcXZTUzcjZSVwPnYoe0g1YUIha2pvTzYKemM5JDFa
WktzTi1abDhMfm1Fe2BseTMpMU5eYG8xK283fUQwWlBlWSZKO2k7aWAlTnlKOF84WTZKP315RUBi
XzVhCnphbT9lTHI8PHEzXk57QitVVXB0dFVpLVpzUHFVbVJwNEtwSiRsSnRRO0p3UnhVXitmTVcl
fHpQMTN0eiswLXQpSAp6aHJYdTFCSHVsfUJZeEk/blNLWlNwOEdyYyVsKGh8enV8ZkU3ViVDNlU7
KTdhPHBJNWM4aUJJfFlYY3R5bkZPVD0KekgzZnxZeTlPQHxKezNYPzJAUDJ2YSs3YnM3eEVrVlY+
OEBtRVNrfDMkX1NrbVN7d1E+JXFDMTgpKTlffCZqe1pUCnplczhBdk96RihGMiNEWkVZPjJvWVgm
SVJwYEYje0FEbCkxcj5RU14pYmE4YXxFWV9eI1NeSDxiamA1R0ZqSlo0OAp6WVBORUFYUks7JFFm
eT1GbzRBMHVzPD9yOGh4a1NEbWxBWG5Cbmo8XzxpeXktSiZFSVUwX1NYK0dvMGpfUkYtc08KenVJ
MWRLeGZrWj8mZFoqNkpYdGtha2JGM1dtPWMkPUtqbmlVTFFwUmxQdnhnPk8mdF5SZ3F3dj1NWlRo
cXFFV0g4Cnp4Sm8+ZD1BQmxSX0JoPTtlTTk8YWhFR095I3huXnxRWSgzcDhJcmpwXkcjTW4qNTBo
byo+VHd8SWgzNH5vVEV8PQp6WF9tQXIqRCR2endAK3AoRTBZYzZkRkV9KDg8VTYxX3Y5bl9iTXhD
M1k9dW5HcXFJYDRQITFNTUZRX1ljVE5xbi0KenhKYlE3VEdUViZYOCE4PUJNWDhTZTclc2NQYEkk
Typ0bUZFQCElckFNWXxSd2kmR2JPRS1fdEZ4QDM1MUBYfiRECnpYdj95ZXtaUWdxUWRSUDVkRUR9
alFpSVpecjkmJSVTMlVIV2wqITkodUpsXkRWLTtiUVdMNThLbSheUVZlPH5OMQp6VSN4SmZzSUtf
MU0hNHFVUzU5Qm1lRCEmNCtTPVlxeDYxQTdOYjk4UVptam9OenBxTllZQytZfGhWVHVvOH1XX2gK
ejgoKGNvLWdLZFFZVzBySXc5VSVSMTJ0aGE/T1YqWXRsUlJUSGx5fT5vcXRgK1J7Z0UzeDR6algr
U2IzX2NZRV49CnpnQj13Ky10VXlgeXRPTk1TOEtnUmVmNGhBP3Q8TnE4ZSR1fHp2aDEzeEpQJFMj
aCNDUXJGI2VWTWVwbHNiWj4wagp6dWZNO3QzMmptfmpVR3JrYU9JblRaYHp5Zm5zPkV1U31HMzBM
RktfRy09PShmPDUxfEsmY29jcCZFSmBTeEFoMz8Kek5PPiNMST1eK1NFdShGcUopeW50PSF+UEM5
Yk8kcnpQSkI9Pz1qPEpiO21XMlNEdjdxQ19WQXs8YnNwcXIofnl8CnpvbFpZSilTMjlRX2V9aG1Z
aDYpWXk9T3p1bzxBM0s/bzc4fF9zUjMjPVp7X1J5bTBnKV9oUT42d0BhLSh1MDJQNwp6YVEpIyh1
VWx7SFcldFlOUzNJdENeaUF0SyhlS2xMYGY5K3tiSnpJU0U/dThfejM7fkM4QEZ5SS01al9qeTds
O1cKel9VI3ZVM2hxcVlVMyFtcnVsJkIre3B0dCQ1OSl1a3s7XzRpWlElR3x6K2xoQVNyNnxIMzVU
QmtsPmdJKjtuR0xVCnpON1ctbkJhTSVwQTBIYkg4b2x5bCZYZUoldlpvV3olNj9ZPWRGeWtsPWlt
TH1gJUJNUXtNaGdkYEhSb0x1NmUyUgp6YV9fNkR1UjZ5ZyN+LX1UY3xHeF97SEBPMGVlYnlNeTVH
bVdBREpscEs+a3FrKGZWVkByX2ZMTEtJZVM/ezRlKX0Kel5aTzt6cEVDZGUwMGRgMk8rZiR2djV0
S0VRSWh9dzAzYyZYUWNWQj1kTDtrPWZQKC00YFRxYV9mYXc0TGJ1YShgCno+UjxvPkkreT9lN2pL
ZVojWU8tQzA4Mj9rS34jOSFKaik+eHojdDMtKEdBMChWaXtfNCEoTzRQOTJieEg2PX1RYgp6bkp0
byNnIVNHfTBLNFpES3dXREFQPFo9TUJfJiNHaURRaCEtYUZ5JDA5WnNeMFFPemEwNWZZQWVifDI+
Z2E3fmwKTTA3KnFvTTZOPCRmQElsa1hhRTJKCgpsaXRlcmFsIDAKSGNtVj9kMDAwMDEKCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9SZXNvdXJjZXMvaFNjcm9sbENvbnRyb2xfcmlnaHQucG5n
IGIvU291cmNlL1dlYkNvcmUvUmVzb3VyY2VzL2hTY3JvbGxDb250cm9sX3JpZ2h0LnBuZwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi40NTczMmVjNzc1MTQ2ODc0MDk4YjkxYmY2ZTI5YzJhZjVmNWU4NTNmCkdJVCBiaW5h
cnkgcGF0Y2gKbGl0ZXJhbCAzMDIwCnpjbVY7LTNwNGJJUCk8aDszS3xMazAwMGUxTkpMVHEwMDBJ
NjAwMGRMMV5AczZpVkdpJDAwMDA5YTdiQm0wMDBYVQp6MDAwWFUwUldudTd5dGtZTz0mfHpQKjct
WmJaPktMWipVKzxMcWl+TmEmS203WS1Jb2RjLW95KWNVWTc2N0N6dGkKeldlLStEKnptRUpZPUhu
R0JkaUY+NUx1IVNrXm9fWjVFNE1lZ0BfN1A2Y3JKaU5MOXB3KWUxPFJofmw2cXhNeDklCnpoKzJ6
UFRzWkNAK140bURkaGhNK2BgNyF0PWJZI0smVXchZGZEc1pWaz47WG0wNjl7SEpVWkFQazU1UiUk
LVJJQQp6Ni1lTCZBUTB4dSFlPDQ9MDA4ZzxkM2Iod3VzezModVd0WVgwQzNlVkJvZkVyfEFWP3ZD
UllGO2twU1EjNjZYczYKemtXdjgxRT55QEEwTFR+c3V2ND5TM0lMUDwwQm1gRExMdmFGNEZLJSlO
aj9QdCpyfTc7N1hhOXo5SHxIWmpSNjNlCnpDYFRqJEspVjI3UmVANDAwPkh1bXBzWVk1RShFfT8w
ZjFTeUdEaVl7eSMpWXZqIyFXbkt3dG9Ybkw7ZWcwM2JMNQp6MDdEKVYlPnk3ejFFNFV7enU+N35h
RH0pPzBSWF91bUNjdCsobFpwZW1DemJAXjY9b3xBPnpWcHV8aT1OREcrN30KejxSWUF4bjxFb1E9
TDFhNjM7K05jYE8oNHRJNnNpKj1IJWgjWDZKMTBedT9uN1l3JkwoSnxYZW57PUFGPTFPTzBECnom
K3BuXzw+bDRgYUt7MCNiLSF6PVRMOVd0MEJHTyZUe0dKV3BqcnloZGlqZmFJUSYyIW99cDA0SlJL
WWczayZUZgp6VnhoZS08QkxCM0d2Uk9HaSs9WH1LcHlfdmRoaF5vbm4wUFl6QHZseGFiYSREdTJQ
UVklTEdDKFp1alJTez5PIVgKentmO1RvO3h3XmJFRVM2SlNjJGskQjJDQTZ4bClsdEE8MzJFNjZ0
PzNAZ0o3YDM2cG1YMElZXmp6KXJSWXdhYVk0CnplKG5KUml3Oz1RYl50KHJeRFRAVDN5fWEyWEVa
Vy1fVyVIc3p4al9xRCoqdF9tISN0VzBLRGlKVCZSPjZPdlZUUgp6MDdSZ0hEekhIWjQ4YXR2enom
P2o5bFhGNzAkflAzS254X25KUDwrIzxiV0lzcCV8N3k4QzFZSiphV3EoMH4oK2EKem4mQSslITco
QHU9aW19dGYkTU09MjRFUFQhV2dgVTI/Um1OMm9xcjtJKjFXc2pAVG0zMnA1QC0xUmBOYkc/SVgl
CnpBbkF3e1E2azAyYS07Jk9MVFpzK05GKHdzYXVoakBUdE5EZStzR2c/aXV7VmFNPV9MdnZRWSFu
MChDJlNzMj5gTgp6Iy1NWjJiVGtpTGZSPl9iKEhnV0tKJUZ+TnJfb0YzYiN3cklpakhHfChKPkJZ
ak0tc2FqRTY7RmlDN3ZZI307R2QKelNUJENVSERldUVIK0JecHpAQjA2MnFYZkZmRGBOcFVXNT9C
WT1WJUdNXzVjKUwjUVJ9QmVXOF8ydi1TJWdmWVM9CnpCOW98M3Y/WTJIYE5WaSlJPGImZ015d3w4
QXMhKX5DMC17RTZKTGBeQm80YHY8VzM0OUM2Rj5uM3JUQjgrZWpePgp6UT1+cjk1TlZ1RENoTCVH
JD0+NyR2VmcyMG15eCVTNTBGb2lgXm0lUHctaD9YaH5pOE1xOWp0SmxvQ29jV2syTnYKenJKcGlG
blZfbXMmOGVRJDImI3hXcElTKzZwbXRDJVEtYFMmRzxCTEsmNl5mTyVjTCElKXpGJTBYS0Q5bkZY
P287CnozRWhKcE1WSFcqKHJmNGs+RjRRI15taHltaDdFKHFOTWF9JVlaLWVQcng+PnhGUFRpSDE9
RStBJFckPWJHOD5zXgp6bT1CbjVSYWgkYUR0cn1AJGBYfTJsfiRGMG1GS0VkUmRaRTgpcEBFNVJJ
NjFGdDZvLXByYmJuPlB+KWl5KUUyQU4KenNVMjBqc1d6XzhRZz4zMVB8czBjcXJQQUxnOEV8KHZX
QTY1cG9VMUpSQWFaczhJMihwI3hpQmBTVkdvdlJzLXVTCnpZblYtOVRlQTc9T20rcVA4K0k+eU9q
QVIxcyVFVGFrIUdGZGFtQGheIzxBZT1Jb1heXyZMUGVYJlUtQmJFazctPgp6KUByUzB0JHdYSCtJ
cmYpK0c2Yzs/SDI5cCtWNkY2b2p7IXxvJUszeElgPyU2eDtEQnx4YG4jaWI8Z1RQKF9geS0Kej0/
VjQ5XiR6TFgoTVI9ZF5yUTZgPmhJUj8oSH1RM0d6ZDEzOEVpMilXQU16N1c5VnlgWH1IbndneUU8
VyVWQGZoCnojQXVfQE51d3ZZQ2htdTQ8Mjg1fUs0ej9NOUFkMEEtZXVmdEpZaXlLR1RXcllxe1ph
RURiMTg/bnI2RHV3OXxDVgp6JSpaVTx0a3xyez8yYjlyb05Kejh6UytGbntFZGFCTVYhUy1pI0No
TG1mRHRsJUxTSEFtaU1mZlJ6Nm1GUmBwaWIKenRWen5mPm4hVlMpPm12JDgme2hRbj53NHp3eTNS
fXQ7QllsWlFtNSk2cHR5PURmTHJzK0EtfD4+PGE5Zj47fjtRCnpfRj91Vl9IRmpoOW4yZ085bzlR
XkpBODY8YjxCMmJhSj1pSjtXV2RrI0hxdlNTNyNlJXA+dih7SDVhQiFram9PNgp6YzkkMVpaS3NO
LVpsOEx+bUV7YGx5MykxTl5gbzErbzd9RDBaUGVZJko7aTtpYCVOeUo4XzhZNko/fXlFQGJfNWEK
emFtP2VMcjw8cTNeTntCK1VVcHR0VWktWnNQcVVtUnA0S3BKJGxKdFE7SndSeFVeK2ZNVyV8elAx
M3R6KzAtdClICnpoclh1MUJIdWx9Qll4ST9uU0taU3A4R3JjJWwoaHx6dXxmRTdWJUM2VTspN2E8
cEk1YzhpQkl8WVhjdHluRk9UPQp6SDNmfFl5OU9AfEp7M1g/MkBQMnZhKzdiczd4RWtWVj44QG1F
U2t8MyRfU2ttU3t3UT4lcUMxOCkpOV98Jmp7WlQKemVzOEF2T3pGKEYyI0RaRVk+Mm9ZWCZJUnBg
RiN7QURsKTFyPlFTXiliYThhfEVZX14jU15IPGJqYDVHRmpKWjQ4CnpZUE5FQVhSSzskUWZ5PUZv
NEEwdXM8P3I4aHhrU0RtbEFYbkJuajxfPGl5eS1KJkVJVTBfU1grR28wal9SRi1zTwp6dUkxZEt4
ZmtaPyZkWio2Slh0a2FrYkYzV209YyQ9S2puaVVMUXBSbFB2eGc+TyZ0XlJncXd2PU1aVGhxcUVX
SDgKenhKbz5kPUFCbFJfQmg9O2VNOTxhaEVHT3kjeG5efFFZKDNwOElyanBeRyNNbio1MGhvKj5U
d3xJaDM0fm9URXw9CnpYX21BcipEJHZ6d0ArcChFMFljNmRGRX0oODxVNjFfdjluX2JNeEMzWT11
bkdxcUlgNFAhMU1NRlFfWWNUTnFuLQp6eEpiUTdUR1RWJlg4ITg9Qk1YOFNlNyVzY1BgSSRPKnRt
RkVAISVyQU1ZfFJ3aSZHYk9FLV90RnhAMzUxQFh+JEQKelh2P3lle1pRZ3FRZFJQNWRFRH1qUWlJ
Wl5yOSYlJVMyVUhXbCohOSh1SmxeRFYtO2JRV0w1OEttKF5RVmU8fk4xCnpVI3hKZnNJS18xTSE0
cVVTNTlCbWVEISY0K1M9WXF4NjFBN05iOThRWm1qb056cHFOWVlDK1l8aFZUdW84fVdfaAp6OCgo
Y28tZ0tkUVlXMHJJdzlVJVIxMnRoYT9PVipZdGxSUlRIbHl9Pm9xdGArUntnRTN4NHpqWCtTYjNf
Y1lFXj0KemdCPXcrLXRVeWB5dE9OTVM4S2dSZWY0aEE/dDxOcThlJHV8enZoMTN4SlAkUyNoI0NR
ckYjZVZNZXBsc2JaPjBqCnp1Zk07dDMyam1+alVHcmthT0luVFpgenlmbnM+RXVTfUczMExGS19H
LT09KGY8NTF8SyZjb2NwJkVKYFN4QWgzPwp6Tk8+I0xJPV4rU0V1KEZxSil5bnQ9IX5QQzliTyRy
elBKQj0/PWo8SmI7bVcyU0R2N3FDX1ZBezxic3Bxcih+eXwKem9sWllKKVMyOVFfZX1obVloNilZ
eT1PenVvPEEzSz9vNzh8X3NSMyM9WntfUnltMGcpX2hRPjZ3QGEtKHUwMlA3CnphUSkjKHVVbHtI
VyV0WU5TM0l0Q15pQXRLKGVLbExgZjkre2JKeklTRT91OF96Mzt+QzhARnlJLTVqX2p5N2w7Vwp6
X1UjdlUzaHFxWVUzIW1ydWwmQit7cHR0JDU5KXVreztfNGlaUSVHfHorbGhBU3I2fEgzNVRCa2w+
Z0kqO25HTFUKek43Vy1uQmFNJXBBMEhiSDhvbHlsJlhlSiV2Wm9XeiU2P1k9ZEZ5a2w9aW1MfWAl
Qk1Re01oZ2RgSFJvTHU2ZTJSCnphX182RHVSNnlnI34tfVRjfEd4X3tIQE8wZWVieU15NUdtV0FE
SmxwSz5rcWsoZlZWQHJfZkxMS0llUz97NGUpfQp6XlpPO3pwRUNkZTAwZGAyTytmJHZ2NXRLRVFJ
aH13MDNjJlhRY1ZCPWRMO2s9ZlAoLTRgVHFhX2ZhdzRMYnVhKGAKej5SPG8+SSt5P2U3aktlWiNZ
Ty1DME8/NllLfiM5IVQjendOZ2lzaVM9alZTOW9gTDUhS3RuQGVMU2JRTDxETyRyCnpLdylkUUc7
VSpRWEl4eyM1b3FuYTBOb09BdXg/OHNHIWpWbXdfQ3xoSDxgKG8lbUR2IzBNTjtXVllzcl5VWWB9
Zgp6a0RKWnpabjwxdEUqM1hZOVJHYXBfWGh3Pj4hSmBNZzZEWTxrPjlwJGk/ezllUlJNc0FVPkY3
ZnhVa2tmWEliezgKeldeOU5FaHsoPEp7NlVHeERSOHhoQEIxKnVUcSREPXZ7S05uM3MtOT5yTkdQ
dzYtTjw+WGlodmZQNG5WUih9Wnl4CnohT1VSaFc3bDwwV20kZnpBUDR9VXQ/UFElX3gqY1NSVVpI
eHEtbERlQisyZGheMHwyYSkhelZiUCh4aWctTXs0awpPMDAwMDxNTlVNbkxTVFpMNjFfVkIKCmxp
dGVyYWwgMApIY21WP2QwMDAwMQoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1Jlc291cmNl
cy9pbmNyZW1lbnRBcnJvdy50aWZmIGIvU291cmNlL1dlYkNvcmUvUmVzb3VyY2VzL2luY3JlbWVu
dEFycm93LnRpZmYKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDZmNGI3ZjA2OGU4ZDdmYWU1MDM5Mzg5NTE2OWY5NGY2
ZjU5ODQ0OQpHSVQgYmluYXJ5IHBhdGNoCmxpdGVyYWwgNTUwCnpjbWFLb0YlSDVvM2BPa31zPE1E
VTB3aDRwaCQ4P2EwfFE7KUVgQDZXN3YlcG1NaXo/ViRualUra0s/diZXaU8mdgp6NXFUbnkkV25Y
Jm5kYTR1KipzUHNAVVhBPDh2QyM4ZHJJQ25ZQUZ2SCZWSWJaSF5+fFA0WUNldGpHViNxN2MkNGwK
ejg3MDtgQ2l1aChRZX1pcW9lb2hDTF8pMXFJKV8+N3F5ekwren5mKFBibWx6c3EoT0NROXpFK3lo
UF4rR2JeWCV8CmMtTUc2dSpaPTB1P0BARH1aNStMa3hHcmVgdEMlTFBGUXNvRmRqSjNjCgpsaXRl
cmFsIDAKSGNtVj9kMDAwMDEKCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9SZXNvdXJjZXMv
bWFya2VkTGVmdC5wbmcgYi9Tb3VyY2UvV2ViQ29yZS9SZXNvdXJjZXMvbWFya2VkTGVmdC5wbmcK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uMjY4ZWRhMWUwYTRiMzBlMzI2OWE5MGRhZmQ5NTRlM2Q1MTQ4MDljYQpHSVQg
YmluYXJ5IHBhdGNoCmxpdGVyYWwgMjk4Nwp6Y21WO2Mzc20lcFApPGg7M0t8TGswMDBlMU5KTFRx
MDAwRjUwMDB+YTFeQHM2c2tVe3QwMDAwOWE3YkJtMDAwWFUKejAwMFhVMFJXbnU3eXRrWVBpYUYj
UCo3LVpiWj5LTFoqVSs8THFpfk5hJkttN1ktSW9kYy1veSlYSC0rXjdDcmFnCnpeZz5JQmZSc3li
UVdYZHdRYkxQPjZwPHo+QXFmeWxoI3tmYjY7Wih2TU1WU34kZUBTPWoqZnRnNjtVaDxpVkR+Vgp6
PFJQTXRnUUpMdyVLUERhcWlmY0BfdlgkMXdid3I5dG47MC0mai1LPTQzPGJVUThqPUpzWGB0UjtE
ZzcrI15LfkgKekshRk0qWn56YnB2dCVLMntVWlNZXzxsUypEPFolTHo1b0d1KCtkYXl6KWhSTEZk
VD5mNTkmZ2hUbWdXRDBsOypUCnpJNzxrQzZhWVlhanpYcFlLdD0oOG90UCQ1MEg2Y19WOVI0LTt7
WkBDMEFNRzc9RjxSeG8lb3IxMFJVVCtBciUzagp6a3BMaFFXciMhb1hnZElgJnNLXj4wOVlecDZs
UDFySVJNeCMwNUN+Y1c9SF9BdypiSi01RFQmWjJuK3gpUUhYXnAKejAwZXNnVjh8bVFjbVJaJTAy
RF5AUzNMMTZ0YE8lYzAwNE5Jdk9LdllJWW9oNjJyWTMzUzY0MGBEOSVZMkQtPD9pCnowJTRqIUYy
WkA0ODhVJTE1OCg2NjAwNXdvNiVwV3JeWmpfdjR6QUE1SGpjSXFVb0dtdDJMQj5yViZuZWgmI1Ex
aQp6MDA3fjFlJG9DY0ZTOG5lSXxoSmx7LVAhQjFaWjlocG1xMClYMGlgSndFJj4kK0U/PiVfPGxT
Kk1XSytuKzFjZ2YKejxrKDhZTFIoP1ZTQUc2eCFlNzh3e2NRUHVKcEF8ZDtKKUd7ZmloaXpNK0Vy
YiFwIXRjcjV3K2EzNH4oWT04czRHCnp3K3NMTDluJkpqTm4qS0pEaXFeVTVeO2AxbnZDLUByNlAk
IWt9MVV7KCpJPVEtekB0QktIb0l9dXhkVTVkeXlAdQp6VTFKMEdPRDdPbWJpbV5HMDA4cDRaXjZf
azJtXnA8Z1c9RDJ8TDtIak4xIUREZk0hWE9hUjJ+Ykw/a1gkJUNrU20KejJtazs/cG4pb3xLXnll
SjclYWRCOUtpK0whMytGZ0hpU1lYI0tKLWxMSkRNbjlDQmJPdGIjJSloUnZgWURxdF92CnpLcGl4
fFFEfXlmYTFKaVFSayNqNGExWiluMiVmPHh5bnpWPkxDNlJiVklrVXgwYitfK0JhUjNjblQ3WnYh
QUp4Vwp6aXpGYiloIWp5R09PWjg1RjthP0RBWFB7bUA7ITBfSWZxPEV4eyo3YDA1WEY3aFArMkhs
ITNCUUo9NkBmTCVGQ28KejhpWW9vMygjYkFGYEFEU3BxdFFndj5IOChIbGdSeHQ3czN9azNLYGtG
dT4+LTJRJFFNRmZQVyFMYXtoMzM2bz5YCnp1X0NNdHRIdjZ6UjsmWk5pUz1YOHYzQ1IjZmtuVXhI
VXhKPEFZbVJzTkxXbCpQU3tBT0FSSHQjNSF3a2kyP0s7dAp6IVkzaz1zN3RnYXgpSiVyNy1CTHBo
Z2U3fkJpMGcrNkU2XlpoKHA5VEJvY3szR0FGcl4wIWd1P1JNSGFDTSQmRmwKekJrMyV1bj4wdW9C
YV9NNldOV2VxSWd+NlFFNjljOW8jZXloR3ZwaU9BQFctYW9uazw3cjEoP2ZDe29JNU4qVSE0Cno8
dXY2Nld0Y0tTUmltMHgtS2UyZDVqQnJtTGFteztRbTt7bXMxcjFHbm1Oc2I3RC1FYHQpaTlGOGZY
YDJfaTMtXwp6Ymg7N1VsXiN4KSZ7eHZTPXx8fDc9bVllMzM9TWBBZ1U1KHhDPmZnPTJOLTc9Y05u
ampPcnt5cml5Nm1NRmdHI2wKem5DRj1mblF2OENEeisrbzZfTHNjbH1lUStsXlpIQVJIPj9fc0B8
IyNScjZLTFJGQTElUSs9KlJSV25vTHNSYDdVCnp0NXZGPFEwcjQwUSlqNj1zRTRYJnNCY3QxcTwm
ZmJpM1ZCMk92NnRAcSowKTtVKm8qU0FQWnZ8dnZAMmFZWW5UMAp6YiU4YStDYjctZ2UwRDBrbkVm
NVFpI0A4VHAqY2V7Tjs2bHBRdUNCJUtMX0tPYXJtNWNQNl84SXI8ZTE3aXJ5Nk8KekRkSCZgclpo
fnNGPWJxOXMrTzBRU2dTfkBRTDlKbXkqOTR4cj02eX5NWX4hMWZldH4oTisoPD1NYHdARDEpYitw
CnoqO0MhODNhMXVMSnYjTlNFfjt5Izg9PD5JY2ZXM0A/d0Zwd1VWeHJWWj5RZFF6MzJLSWVKfWt+
e2NaWkVeK3lhPwp6MkQxeiMySE9uSTcoQiVfYWM/e3dGVVE7UVFBMXRCS3RyV3JtMF8zUmdwcys/
SmZxYntqWWJjUVh+dGFSQjsjJHkKelpOe1N9MXx9Z1VPSEp4Yz93VjNmeHV6K21KNGAhRiRJWjtt
cVJyTnNISmQjIypEfmp1PWJQNz8tP3Z+fGN2PnZCCnpzSjZJZU53Vlp4cmRqVGB5bCNiQklhI0d4
UmEjeE1NeTtLI0NEeXlHeVFkTVN4bFdUI3REZT9wIT81d1QkK29HdAp6OEw7S3AySFVRLVpNSj0z
WEpRdjt4NWNpKj92dVRmZVkkOyh7WEdXX2h1SUZSOWE8ZkpiRl58NEkjeFF+biREYz0KektZaGpZ
bWd6NU5Ta0RtOCpmWm17NlUhO1lYYE5HPig/QDMpWFNzOE9eTjVSeU9NPVRUbXAoMz04Xit6cHoy
cilDCnpePkpPe2RlWmZzbzNvcTM/V28oWT9sJGdlP3VYbzslcnVgVm8+Pzw8KDhJXz47OEVxI0tN
UzlnRmwqbmVlb3NTQgp6Zm9IWW5CUUlrd2t5b3dQdSh6ZG1zYHB7PDdlNGtyYS1aV3E8MipPc0dU
dkVWJXMwVGQkaFhUKyEqOEJuaDJLTWUKekJtWlJvZGpIVj9yK181Xlg5SjBXTDRqS1dgfWxmJUEt
fDQ0SUBATFR2ZjFySGpHKHplNit3QEp0JUJ2anRzIVgwCno/MnhTP192ZV8tazxNdWpnOzBMeioz
YnVHPTMkRyZlaGVwdGhsTiokS2FPeVNTUV5uV21vPDBNKyhVRVVNRVhSUQp6TUJiWmNGOzYrS0Vs
TT5pS0JfS2lKbFokOUdgY149RUBvTkcpbVdXYU5vLTNUSVc4KSRIZzBVYi1+OD9LaHZKPiQKejMq
Jm5pbUBtaihhQ3hFNSF0e2x3N081XjBFSU83ek9vJmM2bDwrfGlEeVNCV0NHcnpAQzV7U3QhWDNo
QUF9YFQ0CnooVExiWFRxKyg7QDw9TDhkWG5zc3lmdHx3I1dTVFc8KyszPnNnUyUoNE5UcGVJLVZB
cWJ8N3NzSnZ6TkhnT1pWdQp6YVlDdmdPX1Ixfj5TeUw9Y0ZVfH5nfGh5fFppfX1zOStkfmxZcU9C
NzF6OVokd25DPXBSOVl6NERoSU0+V21qZ3UKeiY1Nm82bWFDcEMmRiMjeSVHOzFQb2JSOWk/R25O
ZztnWXRjaEQlcDE5YSFlUXRaRiYzSmFLdjMzZ1o8OER+NDdFCnp0VVMxaXdrbURhUHBqPSRtIyUp
akNWRVk0Zm5MR05nMkEtYFl3SFZEM2d2fTs+KWhBdlR+QW1xUz5McmBgaTdrdwp6Sns1X0l0YHly
Qm1sYzI1REJPN0U4OzVWb3puUj5XdzVoQWF4biQyfihxYCVBLVl1UzY0d2tCeT05ZG1gNGNYZVgK
ejRjfUlAP2UrRlcrYkBeUkRCSFYod25NcTJ6ZFgzU1d2OXVgJXt4Qy1xKlV9JmBjeVhWKCVyUlQq
WjZNSD9pK2kmCnpfQjhDKCtnclQle1hXVVErZkBOb1AxUj1BVyYyNnt2LWR4KWlLXi1ObWl1ajh0
eGohbT9aKlNzMU57ZGg0en0wMQp6KVlUbypKeWNTVSkrXzVyNCN5dzl7KztpNEVlJHBlUmdJais7
djtaR2RGMUskM0UlZX40TGFJKGpDLXUlMmgkJlIKejljTFhjWUNAWHdubnMmYm4pX1F+VGU/cm9L
R0R8ZC1nXjg7K2FDe3tHKDFeKE83bTM3WTEtKzYpMDFjTiZ5MWF3CnpvcWN7VGBQXlhKcVBCYklX
NnN9ZDR7el9mNU9tP3ZNZ05RRUpHP3YyVD1LWWReME0zSTZJWnhibnkpJXZaUiZMRAp6SnBQbEBQ
c2g4UXlQQkBLVHgrQFJkY0MhS1g3fWtFbztTfGpedTJsVTdYUX1PbztmfDt6NExsK19yPkAxLXhs
M3wKemF3cS1IJWUmY2tDK0BBaFByUDZCSzx6PTxMKjBrZktVQENYKnplcWJZUVQ0KF5VPlQjX1hk
VDcmO0Y3MWp9Sm95CnprQ342bGg3RUA2bztXQF5JcFJOWntwdEx0TChnUS1DWX40bXFXO1VTN1p4
dm1ffEB5eiZlNTNCcF9sVFBsZlB8egp6clR5eF8+bHZAeCM9XiFQelI3cXFGPCRnbWB8WkpaKzs8
KUNxdSZvdDxhezgxREYwfnJ2R3I1WHJ+OHVgbGF2MWgKejFETnl0Vj4yej0wMDAwNFhGKkx0MDA2
TyRlRVUoODAwMDBXVkBPZz4wMDRSPTAwNGw0MDA4O18wMDRtTDAwNENgCnowMDhQPjAwMjZlMDAw
K25sMyZGfTAwMDJTTmtsPFpjLW9BVHk9PytQNm9rSy1VRjUoYFQ+JUk9QS01fVYzOWYrKAp6RDFa
Ylo9ZVFIZ0JCS0pNeVM/WHQ2TjBAQkprbGhlLXA+MmNpYj9Da3ZJOU4+SSEpamV2NWhlUihFNzBL
NVhWU0QKentTe3s1VUNDJCZrUn5YLSMxUHlvJU9ifHswb3BSUHZJTXAoaHljfTxCRHNQRkxZaENY
ZHUwSm1vQFoqXzlue0tQCno8Vkkha2U9LTRiWU9MQVpUfWgyQSlndWsxO1FBbiFHUiVoZXJTeUIt
SlEmIVZ6UndXYz9BX3x+PiRtaThyPUsmRApodUNCayReV3YlZDh2eERvR2RlVSs8PV9BUzAwMm92
UERITGtWMWhYYGtIUD18CgpsaXRlcmFsIDAKSGNtVj9kMDAwMDEKCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9SZXNvdXJjZXMvbWFya2VkTWlkZGxlLnBuZyBiL1NvdXJjZS9XZWJDb3JlL1Jl
c291cmNlcy9tYXJrZWRNaWRkbGUucG5nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjUxN2FlMTQxODE0ZTE3Y2I3Yzg0
NWJhODhiYjEzMWNkMWNlN2JmNDYKR0lUIGJpbmFyeSBwYXRjaApsaXRlcmFsIDI4MTcKemNtVitj
Mzt5KHBQKTxoOzNLfExrMDAwZTFOSkxUcTAwMDYyMDAwfmEwc3NJMiMwZEdBMDAwMDlhN2JCbTAw
MFhVCnowMDBYVTBSV251N3l0a1lQaWFGI1AqNy1aYlo+S0xaKlUrPExxaX5OYSZLbTdZLUlvZGMt
b3kpWEgtK143Q3JhZwp6Xmc+SUJmUnN5YlFXWGR3UWJMUD42cDx6PkFxZnlsaCN7ZmI2O1oodk1N
VlN+JGVAUz1qKmZ0ZzY7VWg8aVZEflYKejxSUE10Z1FKTHclS1BEYXFpZmNAX3ZYJDF3YndyOXRu
OzAtJmotSz00MzxiVVE4aj1Kc1hgdFI7RGc3KyNeS35ICnpLIUZNKlp+emJwdnQlSzJ7VVpTWV88
bFMqRDxaJUx6NW9HdSgrZGF5eiloUkxGZFQ+ZjU5JmdoVG1nV0QwbDsqVAp6STc8a0M2YVlZYWp6
WHBZS3Q9KDhvdFAkNTBINmNfVjlSNC07e1pAQzBBTUc3PUY8UnhvJW9yMTBSVVQrQXIlM2oKemtw
TGhRV3IjIW9YZ2RJYCZzS14+MDlZXnA2bFAxcklSTXgjMDVDfmNXPUhfQXcqYkotNURUJloybit4
KVFIWF5wCnowMGVzZ1Y4fG1RY21SWiUwMkReQFMzTDE2dGBPJWMwMDROSXZPS3ZZSVlvaDYyclkz
M1M2NDBgRDklWTJELTw/aQp6MCU0aiFGMlpANDg4VSUxNTgoNjYwMDV3bzYlcFdyXlpqX3Y0ekFB
NUhqY0lxVW9HbXQyTEI+clYmbmVoJiNRMWkKejAwN34xZSRvQ2NGUzhuZUl8aEpsey1QIUIxWlo5
aHBtcTApWDBpYEp3RSY+JCtFPz4lXzxsUypNV0srbisxY2dmCno8ayg4WUxSKD9WU0FHNnghZTc4
d3tjUVB1SnBBfGQ7SilHe2ZpaGl6TStFcmIhcCF0Y3I1dythMzR+KFk9OHM0Rwp6dytzTEw5biZK
ak5uKktKRGlxXlU1XjtgMW52Qy1AcjZQJCFrfTFVeygqST1RLXpAdEJLSG9JfXV4ZFU1ZHl5QHUK
elUxSjBHT0Q3T21iaW1eRzAwOHA0Wl42X2sybV5wPGdXPUQyfEw7SGpOMSFERGZNIVhPYVIyfmJM
P2tYJCVDa1NtCnoybWs7P3BuKW98S155ZUo3JWFkQjlLaStMITMrRmdIaVNZWCNLSi1sTEpETW45
Q0JiT3RiIyUpaFJ2YFlEcXRfdgp6S3BpeHxRRH15ZmExSmlRUmsjajRhMVopbjIlZjx4eW56Vj5M
QzZSYlZJa1V4MGIrXytCYVIzY25UN1p2IUFKeFcKeml6RmIpaCFqeUdPT1o4NUY7YT9EQVhQe21A
OyEwX0lmcTxFeHsqN2AwNVhGN2hQKzJIbCEzQlFKPTZAZkwlRkNvCno4aVlvbzMoI2JBRmBBRFNw
cXRRZ3Y+SDgoSGxnUnh0N3MzfWszS2BrRnU+Pi0yUSRRTUZmUFchTGF7aDMzNm8+WAp6dV9DTXR0
SHY2elI7JlpOaVM9WDh2M0NSI2ZrblV4SFV4SjxBWW1Sc05MV2wqUFN7QU9BUkh0IzUhd2tpMj9L
O3QKeiFZM2s9czd0Z2F4KUolcjctQkxwaGdlN35CaTBnKzZFNl5aaChwOVRCb2N7M0dBRnJeMCFn
dT9STUhhQ00kJkZsCnpCazMldW4+MHVvQmFfTTZXTldlcUlnfjZRRTY5YzlvI2V5aEd2cGlPQUBX
LWFvbms8N3IxKD9mQ3tvSTVOKlUhNAp6PHV2NjZXdGNLU1JpbTB4LUtlMmQ1akJybUxhbXs7UW07
e21zMXIxR25tTnNiN0QtRWB0KWk5RjhmWGAyX2kzLV8KemJoOzdVbF4jeCkme3h2Uz18fHw3PW1Z
ZTMzPU1gQWdVNSh4Qz5mZz0yTi03PWNObmpqT3J7eXJpeTZtTUZnRyNsCnpuQ0Y9Zm5RdjhDRHor
K282X0xzY2x9ZVErbF5aSEFSSD4/X3NAfCMjUnI2S0xSRkExJVErPSpSUldub0xzUmA3VQp6dDV2
RjxRMHI0MFEpajY9c0U0WCZzQmN0MXE8JmZiaTNWQjJPdjZ0QHEqMCk7VSpvKlNBUFp2fHZ2QDJh
WVluVDAKemIlOGErQ2I3LWdlMEQwa25FZjVRaSNAOFRwKmNle047NmxwUXVDQiVLTF9LT2FybTVj
UDZfOElyPGUxN2lyeTZPCnpEZEgmYHJaaH5zRj1icTlzK08wUVNnU35AUUw5Sm15Kjk0eHI9Nnl+
TVl+ITFmZXR+KE4rKDw9TWB3QEQxKWIrcAp6KjtDITgzYTF1TEp2I05TRX47eSM4PTw+SWNmVzNA
P3dGcHdVVnhyVlo+UWRRejMyS0llSn1rfntjWlpFXit5YT8KejJEMXojMkhPbkk3KEIlX2FjP3t3
RlVRO1FRQTF0Qkt0cldybTBfM1JncHMrP0pmcWJ7alliY1FYfnRhUkI7IyR5CnpaTntTfTF8fWdV
T0hKeGM/d1YzZnh1eittSjRgIUYkSVo7bXFSck5zSEpkIyMqRH5qdT1iUDc/LT92fnxjdj52Qgp6
c0o2SWVOd1ZaeHJkalRgeWwjYkJJYSNHeFJhI3hNTXk7SyNDRHl5R3lRZE1TeGxXVCN0RGU/cCE/
NXdUJCtvR3QKejhMO0twMkhVUS1aTUo9M1hKUXY7eDVjaSo/dnVUZmVZJDsoe1hHV19odUlGUjlh
PGZKYkZefDRJI3hRfm4kRGM9CnpLWWhqWW1nejVOU2tEbTgqZlptezZVITtZWGBORz4oP0AzKVhT
czhPXk41UnlPTT1UVG1wKDM9OF4renB6MnIpQwp6Xj5KT3tkZVpmc28zb3EzP1dvKFk/bCRnZT91
WG87JXJ1YFZvPj88PCg4SV8+OzhFcSNLTVM5Z0ZsKm5lZW9zU0IKemZvSFluQlFJa3dreW93UHUo
emRtc2Bwezw3ZTRrcmEtWldxPDIqT3NHVHZFViVzMFRkJGhYVCshKjhCbmgyS01lCnpCbVpSb2Rq
SFY/citfNV5YOUowV0w0aktXYH1sZiVBLXw0NElAQExUdmYxckhqRyh6ZTYrd0BKdCVCdmp0cyFY
MAp6PzJ4Uz9fdmVfLWs8TXVqZzswTHoqM2J1Rz0zJEcmZWhlcHRobE4qJEthT3lTU1Febldtbzww
TSsoVUVVTUVYUlEKek1CYlpjRjs2K0tFbE0+aUtCX0tpSmxaJDlHYGNePUVAb05HKW1XV2FOby0z
VElXOCkkSGcwVWItfjg/S2h2Sj4kCnozKiZuaW1AbWooYUN4RTUhdHtsdzdPNV4wRUlPN3pPbyZj
Nmw8K3xpRHlTQldDR3J6QEM1e1N0IVgzaEFBfWBUNAp6KFRMYlhUcSsoO0A8PUw4ZFhuc3N5ZnR8
dyNXU1RXPCsrMz5zZ1MlKDROVHBlSS1WQXFifDdzc0p2ek5IZ09aVnUKemFZQ3ZnT19SMX4+U3lM
PWNGVXx+Z3xoeXxaaX19czkrZH5sWXFPQjcxejlaJHduQz1wUjlZejREaElNPldtamd1CnomNTZv
Nm1hQ3BDJkYjI3klRzsxUG9iUjlpP0duTmc7Z1l0Y2hEJXAxOWEhZVF0WkYmM0phS3YzM2daPDhE
fjQ3RQp6dFVTMWl3a21EYVBwaj0kbSMlKWpDVkVZNGZuTEdOZzJBLWBZd0hWRDNndn07PiloQXZU
fkFtcVM+THJgYGk3a3cKekp7NV9JdGB5ckJtbGMyNURCTzdFODs1Vm96blI+V3c1aEFheG4kMn4o
cWAlQS1ZdVM2NHdrQnk9OWRtYDRjWGVYCno0Y31JQD9lK0ZXK2JAXlJEQkhWKHduTXEyemRYM1NX
djl1YCV7eEMtcSpVfSZgY3lYViglclJUKlo2TUg/aStpJgp6X0I4QygrZ3JUJXtYV1VRK2ZATm9Q
MVI9QVcmMjZ7di1keClpS14tTm1pdWo4dHhqIW0/WipTczFOe2RoNHp9MDEKeilZVG8qSnljU1Up
K181cjQjeXc5eys7aTRFZSRwZVJnSWorO3Y7WkdkRjFLJDNFJWV+NExhSShqQy11JTJoJCZSCno5
Y0xYY1lDQFh3bm5zJmJuKV9RflRlP3JvS0dEfGQtZ144OythQ3t7RygxXihPN20zN1kxLSs2KTAx
Y04meTFhdwp6b3Fje1RgUF5YSnFQQmJJVzZzfWQ0e3pfZjVPbT92TWdOUUVKRz92MlQ9S1lkXjBN
M0k2SVp4Ym55KSV2WlImTEQKekpwUGxAUHNoOFF5UEJAS1R4K0BSZGNDIUtYN31rRW87U3xqXnUy
bFU3WFF9T287Znw7ejRMbCtfcj5AMS14bDN8Cnphd3EtSCVlJmNrQytAQWhQclA2Qks8ej08TCow
a2ZLVUBDWCp6ZXFiWVFUNCheVT5UI19YZFQ3JjtGNzFqfUpveQp6a0N+NmxoN0VANm87V0BeSXBS
Tlp7cHRMdEwoZ1EtQ1l+NG1xVztVUzdaeHZtX3xAeXomZTUzQnBfbFRQbGZQfHoKenJUeXhfPmx2
QHgjPV4hUHpSN3FxRjwkZ21gfFpKWis7PClDcXUmb3Q8YXs4MURGMH5ydkdyNVhyfjh1YGxhdjFo
CnoxRE55dFY+Mno9MDAwMDRYRipMdDAwNk8kZUVVKDgwMDAwV1ZAT2c+MDA0Uj0wMDRsNDAwODtf
MDA0bUwwMDRDYAp6MDA4UD4wMDI2ZTAwMCtubDMmRn0wMDAwU05rbDxaYy1tclFofkxQLXpgKEA3
eiVYUGYwMDAwMHxOakYzPEQmc2MKVFgoNyhjMDAwMDBOa3ZYWHUwbWpmZkotPGEKCmxpdGVyYWwg
MApIY21WP2QwMDAwMQoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1Jlc291cmNlcy9tYXJr
ZWRSaWdodC5wbmcgYi9Tb3VyY2UvV2ViQ29yZS9SZXNvdXJjZXMvbWFya2VkUmlnaHQucG5nCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLmQ3NDk3ZDM1NjUyMThmZDdmMzhjMWY1OGY0YzkyMDNhMTlkMTU5NjcKR0lUIGJp
bmFyeSBwYXRjaApsaXRlcmFsIDI5OTgKemNtVjtuM3JYfmVQKTxoOzNLfExrMDAwZTFOSkxUcTAw
MEY1MDAwfmExXkBzNnNrVXt0MDAwMDlhN2JCbTAwMFhVCnowMDBYVTBSV251N3l0a1lQaWFGI1Aq
Ny1aYlo+S0xaKlUrPExxaX5OYSZLbTdZLUlvZGMtb3kpWEgtK143Q3JhZwp6Xmc+SUJmUnN5YlFX
WGR3UWJMUD42cDx6PkFxZnlsaCN7ZmI2O1oodk1NVlN+JGVAUz1qKmZ0ZzY7VWg8aVZEflYKejxS
UE10Z1FKTHclS1BEYXFpZmNAX3ZYJDF3YndyOXRuOzAtJmotSz00MzxiVVE4aj1Kc1hgdFI7RGc3
KyNeS35ICnpLIUZNKlp+emJwdnQlSzJ7VVpTWV88bFMqRDxaJUx6NW9HdSgrZGF5eiloUkxGZFQ+
ZjU5JmdoVG1nV0QwbDsqVAp6STc8a0M2YVlZYWp6WHBZS3Q9KDhvdFAkNTBINmNfVjlSNC07e1pA
QzBBTUc3PUY8UnhvJW9yMTBSVVQrQXIlM2oKemtwTGhRV3IjIW9YZ2RJYCZzS14+MDlZXnA2bFAx
cklSTXgjMDVDfmNXPUhfQXcqYkotNURUJloybit4KVFIWF5wCnowMGVzZ1Y4fG1RY21SWiUwMkRe
QFMzTDE2dGBPJWMwMDROSXZPS3ZZSVlvaDYyclkzM1M2NDBgRDklWTJELTw/aQp6MCU0aiFGMlpA
NDg4VSUxNTgoNjYwMDV3bzYlcFdyXlpqX3Y0ekFBNUhqY0lxVW9HbXQyTEI+clYmbmVoJiNRMWkK
ejAwN34xZSRvQ2NGUzhuZUl8aEpsey1QIUIxWlo5aHBtcTApWDBpYEp3RSY+JCtFPz4lXzxsUypN
V0srbisxY2dmCno8ayg4WUxSKD9WU0FHNnghZTc4d3tjUVB1SnBBfGQ7SilHe2ZpaGl6TStFcmIh
cCF0Y3I1dythMzR+KFk9OHM0Rwp6dytzTEw5biZKak5uKktKRGlxXlU1XjtgMW52Qy1AcjZQJCFr
fTFVeygqST1RLXpAdEJLSG9JfXV4ZFU1ZHl5QHUKelUxSjBHT0Q3T21iaW1eRzAwOHA0Wl42X2sy
bV5wPGdXPUQyfEw7SGpOMSFERGZNIVhPYVIyfmJMP2tYJCVDa1NtCnoybWs7P3BuKW98S155ZUo3
JWFkQjlLaStMITMrRmdIaVNZWCNLSi1sTEpETW45Q0JiT3RiIyUpaFJ2YFlEcXRfdgp6S3BpeHxR
RH15ZmExSmlRUmsjajRhMVopbjIlZjx4eW56Vj5MQzZSYlZJa1V4MGIrXytCYVIzY25UN1p2IUFK
eFcKeml6RmIpaCFqeUdPT1o4NUY7YT9EQVhQe21AOyEwX0lmcTxFeHsqN2AwNVhGN2hQKzJIbCEz
QlFKPTZAZkwlRkNvCno4aVlvbzMoI2JBRmBBRFNwcXRRZ3Y+SDgoSGxnUnh0N3MzfWszS2BrRnU+
Pi0yUSRRTUZmUFchTGF7aDMzNm8+WAp6dV9DTXR0SHY2elI7JlpOaVM9WDh2M0NSI2ZrblV4SFV4
SjxBWW1Sc05MV2wqUFN7QU9BUkh0IzUhd2tpMj9LO3QKeiFZM2s9czd0Z2F4KUolcjctQkxwaGdl
N35CaTBnKzZFNl5aaChwOVRCb2N7M0dBRnJeMCFndT9STUhhQ00kJkZsCnpCazMldW4+MHVvQmFf
TTZXTldlcUlnfjZRRTY5YzlvI2V5aEd2cGlPQUBXLWFvbms8N3IxKD9mQ3tvSTVOKlUhNAp6PHV2
NjZXdGNLU1JpbTB4LUtlMmQ1akJybUxhbXs7UW07e21zMXIxR25tTnNiN0QtRWB0KWk5RjhmWGAy
X2kzLV8KemJoOzdVbF4jeCkme3h2Uz18fHw3PW1ZZTMzPU1gQWdVNSh4Qz5mZz0yTi03PWNObmpq
T3J7eXJpeTZtTUZnRyNsCnpuQ0Y9Zm5RdjhDRHorK282X0xzY2x9ZVErbF5aSEFSSD4/X3NAfCMj
UnI2S0xSRkExJVErPSpSUldub0xzUmA3VQp6dDV2RjxRMHI0MFEpajY9c0U0WCZzQmN0MXE8JmZi
aTNWQjJPdjZ0QHEqMCk7VSpvKlNBUFp2fHZ2QDJhWVluVDAKemIlOGErQ2I3LWdlMEQwa25FZjVR
aSNAOFRwKmNle047NmxwUXVDQiVLTF9LT2FybTVjUDZfOElyPGUxN2lyeTZPCnpEZEgmYHJaaH5z
Rj1icTlzK08wUVNnU35AUUw5Sm15Kjk0eHI9Nnl+TVl+ITFmZXR+KE4rKDw9TWB3QEQxKWIrcAp6
KjtDITgzYTF1TEp2I05TRX47eSM4PTw+SWNmVzNAP3dGcHdVVnhyVlo+UWRRejMyS0llSn1rfntj
WlpFXit5YT8KejJEMXojMkhPbkk3KEIlX2FjP3t3RlVRO1FRQTF0Qkt0cldybTBfM1JncHMrP0pm
cWJ7alliY1FYfnRhUkI7IyR5CnpaTntTfTF8fWdVT0hKeGM/d1YzZnh1eittSjRgIUYkSVo7bXFS
ck5zSEpkIyMqRH5qdT1iUDc/LT92fnxjdj52Qgp6c0o2SWVOd1ZaeHJkalRgeWwjYkJJYSNHeFJh
I3hNTXk7SyNDRHl5R3lRZE1TeGxXVCN0RGU/cCE/NXdUJCtvR3QKejhMO0twMkhVUS1aTUo9M1hK
UXY7eDVjaSo/dnVUZmVZJDsoe1hHV19odUlGUjlhPGZKYkZefDRJI3hRfm4kRGM9CnpLWWhqWW1n
ejVOU2tEbTgqZlptezZVITtZWGBORz4oP0AzKVhTczhPXk41UnlPTT1UVG1wKDM9OF4renB6MnIp
Qwp6Xj5KT3tkZVpmc28zb3EzP1dvKFk/bCRnZT91WG87JXJ1YFZvPj88PCg4SV8+OzhFcSNLTVM5
Z0ZsKm5lZW9zU0IKemZvSFluQlFJa3dreW93UHUoemRtc2Bwezw3ZTRrcmEtWldxPDIqT3NHVHZF
ViVzMFRkJGhYVCshKjhCbmgyS01lCnpCbVpSb2RqSFY/citfNV5YOUowV0w0aktXYH1sZiVBLXw0
NElAQExUdmYxckhqRyh6ZTYrd0BKdCVCdmp0cyFYMAp6PzJ4Uz9fdmVfLWs8TXVqZzswTHoqM2J1
Rz0zJEcmZWhlcHRobE4qJEthT3lTU1FebldtbzwwTSsoVUVVTUVYUlEKek1CYlpjRjs2K0tFbE0+
aUtCX0tpSmxaJDlHYGNePUVAb05HKW1XV2FOby0zVElXOCkkSGcwVWItfjg/S2h2Sj4kCnozKiZu
aW1AbWooYUN4RTUhdHtsdzdPNV4wRUlPN3pPbyZjNmw8K3xpRHlTQldDR3J6QEM1e1N0IVgzaEFB
fWBUNAp6KFRMYlhUcSsoO0A8PUw4ZFhuc3N5ZnR8dyNXU1RXPCsrMz5zZ1MlKDROVHBlSS1WQXFi
fDdzc0p2ek5IZ09aVnUKemFZQ3ZnT19SMX4+U3lMPWNGVXx+Z3xoeXxaaX19czkrZH5sWXFPQjcx
ejlaJHduQz1wUjlZejREaElNPldtamd1CnomNTZvNm1hQ3BDJkYjI3klRzsxUG9iUjlpP0duTmc7
Z1l0Y2hEJXAxOWEhZVF0WkYmM0phS3YzM2daPDhEfjQ3RQp6dFVTMWl3a21EYVBwaj0kbSMlKWpD
VkVZNGZuTEdOZzJBLWBZd0hWRDNndn07PiloQXZUfkFtcVM+THJgYGk3a3cKekp7NV9JdGB5ckJt
bGMyNURCTzdFODs1Vm96blI+V3c1aEFheG4kMn4ocWAlQS1ZdVM2NHdrQnk9OWRtYDRjWGVYCno0
Y31JQD9lK0ZXK2JAXlJEQkhWKHduTXEyemRYM1NXdjl1YCV7eEMtcSpVfSZgY3lYViglclJUKlo2
TUg/aStpJgp6X0I4QygrZ3JUJXtYV1VRK2ZATm9QMVI9QVcmMjZ7di1keClpS14tTm1pdWo4dHhq
IW0/WipTczFOe2RoNHp9MDEKeilZVG8qSnljU1UpK181cjQjeXc5eys7aTRFZSRwZVJnSWorO3Y7
WkdkRjFLJDNFJWV+NExhSShqQy11JTJoJCZSCno5Y0xYY1lDQFh3bm5zJmJuKV9RflRlP3JvS0dE
fGQtZ144OythQ3t7RygxXihPN20zN1kxLSs2KTAxY04meTFhdwp6b3Fje1RgUF5YSnFQQmJJVzZz
fWQ0e3pfZjVPbT92TWdOUUVKRz92MlQ9S1lkXjBNM0k2SVp4Ym55KSV2WlImTEQKekpwUGxAUHNo
OFF5UEJAS1R4K0BSZGNDIUtYN31rRW87U3xqXnUybFU3WFF9T287Znw7ejRMbCtfcj5AMS14bDN8
Cnphd3EtSCVlJmNrQytAQWhQclA2Qks8ej08TCowa2ZLVUBDWCp6ZXFiWVFUNCheVT5UI19YZFQ3
JjtGNzFqfUpveQp6a0N+NmxoN0VANm87V0BeSXBSTlp7cHRMdEwoZ1EtQ1l+NG1xVztVUzdaeHZt
X3xAeXomZTUzQnBfbFRQbGZQfHoKenJUeXhfPmx2QHgjPV4hUHpSN3FxRjwkZ21gfFpKWis7PClD
cXUmb3Q8YXs4MURGMH5ydkdyNVhyfjh1YGxhdjFoCnoxRE55dFY+Mno9MDAwMDRYRipMdDAwNk8k
ZUVVKDgwMDAwV1ZAT2c+MDA0Uj0wMDRsNDAwODtfMDA0bUwwMDRDYAp6MDA4UD4wMDI2ZTAwMCtu
bDMmRn0wMDAyZE5rbDxaYy1tfXxGLWArUDNgTzdmSVFOMm42O1k1TFBRViNCMF9SOHIKelFGYF8k
MFltfVJORyFXRXJiQyZUYkB9en0/PFpUPWhhbShiYUtHT2tNKnQmJmhgMnlKPysoS2FmT2J6cTBL
YFRwCnoyTHpXVTJ9IyVqTihPTX0hQzVUPCh2X28xTXJJZ0luRzgzcGJxTzMpaXdJQkZoIVNwVW8j
NTZ1RFoqMiNnR3ZjcAp6VTMkVF9IZ25eKF5MSHdFWVRJRkxyZl5Sa3t0NyQ3bH4mazBPcyF4cEly
cXk/ZEZnfHVKVT0+VEN3ZT01MHpDWTsKc3puKHQkJEBBQGdkbVIxITwle29tc0B+PnIwTClOQVB5
P0FQZSpnZGcwNypxb002TjwkZitkMjhRfiY/fgoKbGl0ZXJhbCAwCkhjbVY/ZDAwMDAxCgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUmVzb3VyY2VzL3ZTY3JvbGxDb250cm9sX2JvdHRvbS5w
bmcgYi9Tb3VyY2UvV2ViQ29yZS9SZXNvdXJjZXMvdlNjcm9sbENvbnRyb2xfYm90dG9tLnBuZwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi5mOGIwZjJlZTJmMjcwMjFhNmM3MDA4ZDc5YTA4ODkwZGIwNThkNmQ0CkdJVCBi
aW5hcnkgcGF0Y2gKbGl0ZXJhbCAzNjYKemNtZUFTQE4/KG9sSHlgdVZCcSFpYTB2cEBLK01MJDF8
JWhQTURfekkmSHw2ZlZnPzNvVkd3M3ltXkRXTkQ5RG9UCno9PENTOXUoN1leY2k/MG9VbUA4ZSRk
YGVrTnxrfTNwX3pmPD1ZSnNtbDdYU3JmUHZ2djB0MTg5MzxkYEF7N0xhZwp6LUdGTUpjKUI9LVJO
UldgLXxOPkx6fkZZQ1JuSzAhUShESnt6MWpjS3lHUVIxWGtYYm9KNmlWRUlhNU8oemEkbF8KemxU
U2AxOVRaVFE3flFtOyt4THBgK14wMXMpZnBDUD9EQ25FYWBVQHdrZUEpfT5iNjcmailSPXt6dz9g
U0E5VzI0CnomMU8hSklVY0AlTngoQCN4QkVWYTsqNGM0eSl7RF9CcE0+OEpAdVpKbm1fTTNxZUFY
KXwwZm9GbUdrVU5WISFpQQp6dXpnXkB1PGgtcUMpPWpuMndKcTIlXn59NT9EZW0yX2JmYWMqfFNL
KT92Y2Z7Yis2fWp8TGg2a2RUX3p5P0FObCoKekh+O21VQnJNRFBDREhiPFNiIXljVEI+SUJzcFkk
YHpJcykrSl5GbU9URWs8OGchcmdhcTg0RypLPnNwJHk4NX1TCkliNHE5ZTBBbkdIU081UzMKCmxp
dGVyYWwgMApIY21WP2QwMDAwMQoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1Jlc291cmNl
cy92U2Nyb2xsQ29udHJvbF9taWRkbGUucG5nIGIvU291cmNlL1dlYkNvcmUvUmVzb3VyY2VzL3ZT
Y3JvbGxDb250cm9sX21pZGRsZS5wbmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYTIxY2Q3ZDY3MWIzYTVmMmVmMjRj
Mzg0MjE2OTE0M2I3M2FkNWI3ZQpHSVQgYmluYXJ5IHBhdGNoCmxpdGVyYWwgMjA0CnpjbWVBU0BO
PyhvbEh5YHVWQnEhaWEwdnBASytNRiExfCp5SmhPR29yb0NPfHsjUzlHRyFYVjdaRmwmd2tQPj8w
dgp6KGJ0aUlWUGp2LUA0KDRHekN5QWBrU195Nmxffj42TG8pLXomO0xPQkI/Q2pMMFJ6TFUxT143
SDg0THtLYElGKzAKengmaFRYZEFjfTtSTlBBWF5aJm5uXlExe1okKVRhNGNjPCZlT0dIRlFPMitN
fUlyLXVCYiR2RUJII2FzMzBSZSU4CnE3cTgjeSlfaT8rbHxfeHMyJmtMa3w5QHROdj5wLTBQaEFw
Q0FpayVvcFVYT0BnZUN5bHhIfVg4CgpsaXRlcmFsIDAKSGNtVj9kMDAwMDEKCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9SZXNvdXJjZXMvdlNjcm9sbENvbnRyb2xfdG9wLnBuZyBiL1NvdXJj
ZS9XZWJDb3JlL1Jlc291cmNlcy92U2Nyb2xsQ29udHJvbF90b3AucG5nCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZh
MjJjNWM2YjAxZWZlYTAxMDYyYWRmN2NhY2FjNDI4N2VjNmRlNjUKR0lUIGJpbmFyeSBwYXRjaAps
aXRlcmFsIDM5NAp6Y21WOzUwZEBYflApPGg7M0t8TGswMDBlMU5KTFRxMDAwZEQwMDBMRjFeQHM2
KHtSVGMwMDAwOWE3YkJtMDAwWFUKejAwMFhVMFJXbnU3eXRrTzFaUDFfSz56QDtqKHEhM2xLPW4h
QVkoe1VPI2xGVEI+KF9gZzglXmV7e1I0aD0+UHpBCnpGYVFBUlU7cUYqbTtlQTVaPDFmZE1nUlot
MDcqbmFSQ3dCNGtGaVJgS21iSkZabGNLcjtsS2w8T31IWUJCSEU9JAp6WW5fOEBgfnBGXigjbkpM
MUpiOTxLVW1uPGA0TSkwZ0xvRFJXVjRzZVQ5fk4jVjdlSipNKTFvWEFtVFZhVENHLUIKeiMrYSNV
K3hJLXJVK1N2KjFiVXpZNUpTS0wzfipWTjx4fHIlaz1CfXo/VW89MlVMUTdfWXYydSNLcmVAb25h
eVQjCnpRNTRUdz4mT15HUm81Nn1zTyRSVGUhWUdLail5a25BaEltR2I2eGlZcHpBdTZRVjgpcSNQ
aHRmWV9ZZjwzV05tdQp6RmJxJUFHK2lwQzBNSkB2dF5HT013az03TCt5cEB8MmRvNn1lZzlrdGFY
MT9GWnBVQSZ3SyRHNV4oVHtmb1FJVGgKbzQoeU1IelZHPnU1YVBnKkc2TUotMDJ8QzxHQWc5ODI+
PHs5MDcqcW9NNk48JGc1biZUPHAyTngKCmxpdGVyYWwgMApIY21WP2QwMDAwMQoKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCAwZDUw
Y2ZjZDM3Zjg5Y2M0YTk5NjI3ZWJhZjVmZmZiMWM0ZjUzYzU3Li4xYWIwNDA1MDIwNGY3YzBlYjhi
ZTFlYTljOTg3MDc3NTU0NGM0YzU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC02Myw2ICs2Myw3IEBACiAJCTAxRDNDRjg1MTRC
RDBBMzAwMEZFOTk3MCAvKiBXZWJHTENvbnRleHRPYmplY3QuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDAxRDNDRjdGMTRCRDBBMzAwMEZFOTk3MCAvKiBX
ZWJHTENvbnRleHRPYmplY3QuaCAqLzsgfTsKIAkJMDFEM0NGODYxNEJEMEEzMDAwRkU5OTcwIC8q
IFdlYkdMU2hhcmVkT2JqZWN0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDAxRDNDRjgwMTRCRDBBMzAwMEZFOTk3MCAvKiBXZWJHTFNoYXJlZE9iamVj
dC5jcHAgKi87IH07CiAJCTAxRDNDRjg3MTRCRDBBMzAwMEZFOTk3MCAvKiBXZWJHTFNoYXJlZE9i
amVjdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDFE
M0NGODExNEJEMEEzMDAwRkU5OTcwIC8qIFdlYkdMU2hhcmVkT2JqZWN0LmggKi87IH07CisJCTAx
RTZDMkU0MTE5NEIyODIwMDUwODIxQyAvKiBTcGVsbGluZ0RvdEAyeC5wbmcgaW4gUmVzb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDAxRTZDMkUzMTE5NEIyODIwMDUw
ODIxQyAvKiBTcGVsbGluZ0RvdEAyeC5wbmcgKi87IH07CiAJCTA1NjJGOTQ2MTU3M0VDRUIwMDMx
Q0ExNiAvKiBXZWJLaXRDU1NTVkdEb2N1bWVudFZhbHVlLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA1NjJGOTQ0MTU3M0VDRUIwMDMxQ0ExNiAvKiBX
ZWJLaXRDU1NTVkdEb2N1bWVudFZhbHVlLmNwcCAqLzsgfTsKIAkJMDU2MkY5NDcxNTczRUNFQjAw
MzFDQTE2IC8qIFdlYktpdENTU1NWR0RvY3VtZW50VmFsdWUuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA1NjJGOTQ1MTU3M0VDRUIwMDMxQ0ExNiAvKiBX
ZWJLaXRDU1NTVkdEb2N1bWVudFZhbHVlLmggKi87IH07CiAJCTA1NjJGOTYxMTU3M0Y4OEYwMDMx
Q0ExNiAvKiBQbGF0Zm9ybUxheWVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAwNTYyRjk2MDE1NzNGODhGMDAzMUNBMTYgLyogUGxhdGZvcm1MYXllci5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC0zNTM0
LDYgKzM1MzUsOCBAQAogCQlBMTdDODEyMjBGMkE1Q0Y3MDA1REFBRUIgLyogSFRNTEVsZW1lbnRG
YWN0b3J5LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEExN0M4MTIwMEYyQTVDRjcwMDVEQUFFQiAvKiBIVE1MRWxlbWVudEZhY3RvcnkuY3BwICovOyB9
OwogCQlBMTdDODEyMzBGMkE1Q0Y3MDA1REFBRUIgLyogSFRNTEVsZW1lbnRGYWN0b3J5LmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMTdDODEyMTBGMkE1
Q0Y3MDA1REFBRUIgLyogSFRNTEVsZW1lbnRGYWN0b3J5LmggKi87IH07CiAJCUExQzdGQUEyMTMz
QTVEMzUwMEQ2NzMyRCAvKiBKU1hQYXRoUmVzdWx0Q3VzdG9tLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExQzdGQUExMTMzQTVEMzUwMEQ2NzMyRCAv
KiBKU1hQYXRoUmVzdWx0Q3VzdG9tLmNwcCAqLzsgfTsKKwkJQTFERTcxMkQxODYxMkFDMTAwNzM0
MTkyIC8qIFRvdWNoRXZlbnRzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEExREU3MTJCMTg2MTJBQzEwMDczNDE5MiAvKiBUb3VjaEV2ZW50cy5jcHAg
Ki87IH07CisJCUExREU3MTMyMTg2MTMyMjIwMDczNDE5MiAvKiBUb3VjaENvbnN0cnVjdG9ycy5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMURFNzEz
MDE4NjEzMjIyMDA3MzQxOTIgLyogVG91Y2hDb25zdHJ1Y3RvcnMuY3BwICovOyB9OwogCQlBMUUx
MTU0NDEzMDE1QzNEMDA1NEFDOEMgLyogRGlzdGFudExpZ2h0U291cmNlLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExRTExNTQzMTMwMTVDM0QwMDU0
QUM4QyAvKiBEaXN0YW50TGlnaHRTb3VyY2UuY3BwICovOyB9OwogCQlBMUUxMTU0NjEzMDE1QzRF
MDA1NEFDOEMgLyogUG9pbnRMaWdodFNvdXJjZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMUUxMTU0NTEzMDE1QzRFMDA1NEFDOEMgLyogUG9pbnRM
aWdodFNvdXJjZS5jcHAgKi87IH07CiAJCUExRTExNTQ4MTMwMTVDNUQwMDU0QUM4QyAvKiBTcG90
TGlnaHRTb3VyY2UuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQTFFMTE1NDcxMzAxNUM1RDAwNTRBQzhDIC8qIFNwb3RMaWdodFNvdXJjZS5jcHAgKi87
IH07CkBAIC0zNjAyLDYgKzM2MDUsOCBAQAogCQlBNUFGQjM0RjExNTE1MUE3MDBCMDQ1Q0IgLyog
U3RlcFJhbmdlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEE1QUZCMzREMTE1MTUxQTcwMEIwNDVDQiAvKiBTdGVwUmFuZ2UuY3BwICovOyB9OwogCQlB
NUFGQjM1MDExNTE1MUE3MDBCMDQ1Q0IgLyogU3RlcFJhbmdlLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNUFGQjM0RTExNTE1MUE3MDBCMDQ1Q0IgLyog
U3RlcFJhbmdlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKIAkJQTVDNTY2QUIxMjdBM0FBRDAwRThBM0ZGIC8qIERpc2tJbWFnZUNhY2hlQ2xpZW50SU9T
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNUM1NjZB
QTEyN0EzQUFEMDBFOEEzRkYgLyogRGlza0ltYWdlQ2FjaGVDbGllbnRJT1MuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlBNURFQkRBMzE2RkI5MDg3
MDA4MzZGRTAgLyogV2ViS2l0UGxheWJhY2tUYXJnZXRBdmFpbGFiaWxpdHlFdmVudC5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNURFQkQ5RjE2RkI5
MDg3MDA4MzZGRTAgLyogV2ViS2l0UGxheWJhY2tUYXJnZXRBdmFpbGFiaWxpdHlFdmVudC5jcHAg
Ki87IH07CisJCUE1REVCREE0MTZGQjkwODcwMDgzNkZFMCAvKiBXZWJLaXRQbGF5YmFja1Rhcmdl
dEF2YWlsYWJpbGl0eUV2ZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBBNURFQkRBMDE2RkI5MDg3MDA4MzZGRTAgLyogV2ViS2l0UGxheWJhY2tUYXJn
ZXRBdmFpbGFiaWxpdHlFdmVudC5oICovOyB9OwogCQlBNUY2RTE2QjEzMkVENDZFMDA4RURBRTMg
LyogQXV0b2NhcGl0YWxpemUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQTVGNkUxNkMxMzJFRDQ2RTAwOEVEQUUzIC8qIEF1dG9jYXBpdGFsaXplLmNw
cCAqLzsgfTsKIAkJQTVGOUVGNzAxMjY2NzUwRDAwRkNDRjUyIC8qIERpc2tJbWFnZUNhY2hlSU9T
Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTVGOUVG
NkUxMjY2NzUwRDAwRkNDRjUyIC8qIERpc2tJbWFnZUNhY2hlSU9TLm1tICovOyB9OwogCQlBNUY5
RUY3MTEyNjY3NTBEMDBGQ0NGNTIgLyogRGlza0ltYWdlQ2FjaGVJT1MuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1RjlFRjZGMTI2Njc1MEQwMEZDQ0Y1
MiAvKiBEaXNrSW1hZ2VDYWNoZUlPUy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CkBAIC01Mjk1LDYgKzUzMDAsNyBAQAogCQlCRTg4RTBERjE3MTVEMkEy
MDA2NThEOTggLyogVmlkZW9UcmFjay5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gQkU4OEUwRDMxNzE1RDJBMjAwNjU4RDk4IC8qIFZpZGVvVHJhY2suaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlCRTg4RTBF
MTE3MTVEMkEyMDA2NThEOTggLyogVmlkZW9UcmFja0xpc3QuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkU4OEUwRDUxNzE1RDJBMjAwNjU4RDk4IC8q
IFZpZGVvVHJhY2tMaXN0LmNwcCAqLzsgfTsKIAkJQkU4OEUwRTIxNzE1RDJBMjAwNjU4RDk4IC8q
IFZpZGVvVHJhY2tMaXN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBCRTg4RTBENjE3MTVEMkEyMDA2NThEOTggLyogVmlkZW9UcmFja0xpc3QuaCAqLzsg
fTsKKwkJQkU4Qzc1MzExMDY4MTMyNDAwMUU5M0Y1IC8qIFNwZWxsaW5nRG90LnBuZyBpbiBSZXNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkU4Qzc1MzAxMDY4MTMy
NDAwMUU5M0Y1IC8qIFNwZWxsaW5nRG90LnBuZyAqLzsgfTsKIAkJQkU4RUYwNDIxNzFDOEZGOTAw
OUI0OEMzIC8qIEpTQXVkaW9UcmFjay5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBCRThFRjAzRTE3MUM4RkY5MDA5QjQ4QzMgLyogSlNBdWRpb1RyYWNr
LmNwcCAqLzsgfTsKIAkJQkU4RUYwNDMxNzFDOEZGOTAwOUI0OEMzIC8qIEpTQXVkaW9UcmFjay5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkU4RUYwM0Yx
NzFDOEZGOTAwOUI0OEMzIC8qIEpTQXVkaW9UcmFjay5oICovOyB9OwogCQlCRThFRjA0NDE3MUM4
RkY5MDA5QjQ4QzMgLyogSlNBdWRpb1RyYWNrTGlzdC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCRThFRjA0MDE3MUM4RkY5MDA5QjQ4QzMgLyogSlNB
dWRpb1RyYWNrTGlzdC5jcHAgKi87IH07CkBAIC01NTQ3LDYgKzU1NTMsOCBAQAogCQlEMDAwRUQy
ODExQzFCOUNEMDBDNDc3MjYgLyogU3ViZnJhbWVMb2FkZXIuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEQwMDBFRDI2MTFDMUI5Q0QwMEM0NzcyNiAvKiBT
dWJmcmFtZUxvYWRlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CiAJCUQwMUEyN0FEMTBDOUJGRDgwMDAyNkE0MiAvKiBTcGFjZVNwbGl0U3RyaW5nLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEQwMUEyN0FC
MTBDOUJGRDgwMDAyNkE0MiAvKiBTcGFjZVNwbGl0U3RyaW5nLmNwcCAqLzsgfTsKIAkJRDAxQTI3
QUUxMEM5QkZEODAwMDI2QTQyIC8qIFNwYWNlU3BsaXRTdHJpbmcuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEQwMUEyN0FDMTBDOUJGRDgwMDAyNkE0MiAv
KiBTcGFjZVNwbGl0U3RyaW5nLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKKwkJRDAyQjY0QjIxNDA4OUU1NjAwNkVGQTIxIC8qIERpY3RhdGlvblBocmFz
ZVdpdGhBbHRlcm5hdGl2ZXNEb3QucG5nIGluIFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBEMDJCNjRCMDE0MDg5RTU2MDA2RUZBMjEgLyogRGljdGF0aW9uUGhy
YXNlV2l0aEFsdGVybmF0aXZlc0RvdC5wbmcgKi87IH07CisJCUQwMkI2NEIzMTQwODlFNTYwMDZF
RkEyMSAvKiBEaWN0YXRpb25QaHJhc2VXaXRoQWx0ZXJuYXRpdmVzRG90QDJ4LnBuZyBpbiBSZXNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRDAyQjY0QjExNDA4OUU1
NjAwNkVGQTIxIC8qIERpY3RhdGlvblBocmFzZVdpdGhBbHRlcm5hdGl2ZXNEb3RAMngucG5nICov
OyB9OwogCQlEMDVDRUQyOTBBNDBCQjJDMDBDNUFGMzggLyogRm9ybWF0QmxvY2tDb21tYW5kLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEQwNUNFRDI3
MEE0MEJCMkMwMEM1QUYzOCAvKiBGb3JtYXRCbG9ja0NvbW1hbmQuY3BwICovOyB9OwogCQlEMDVD
RUQyQTBBNDBCQjJDMDBDNUFGMzggLyogRm9ybWF0QmxvY2tDb21tYW5kLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBEMDVDRUQyODBBNDBCQjJDMDBDNUFG
MzggLyogRm9ybWF0QmxvY2tDb21tYW5kLmggKi87IH07CiAJCUQwNkMwRDhGMENGRDExNDYwMDY1
RjQzRiAvKiBSZW1vdmVGb3JtYXRDb21tYW5kLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBEMDZDMEQ4RDBDRkQxMTQ2MDA2NUY0M0YgLyogUmVtb3ZlRm9y
bWF0Q29tbWFuZC5oICovOyB9OwpAQCAtNTU1OSw2ICs1NTY3LDggQEAKIAkJRDBCMDU1NjgwOUM2
NzAwMTAwMzA3RTQzIC8qIENyZWF0ZUxpbmtDb21tYW5kLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBEMEIwNTU2NjA5QzY3MDAxMDAzMDdFNDMgLyogQ3Jl
YXRlTGlua0NvbW1hbmQuaCAqLzsgfTsKIAkJRDBCMDU1NjkwOUM2NzAwMTAwMzA3RTQzIC8qIENy
ZWF0ZUxpbmtDb21tYW5kLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEQwQjA1NTY3MDlDNjcwMDEwMDMwN0U0MyAvKiBDcmVhdGVMaW5rQ29tbWFuZC5j
cHAgKi87IH07CiAJCUQwQkM1NDQ5MTQ0M0FDNEEwMEUxMDVEQSAvKiBDYWNoZWRTdHlsZVNoZWV0
Q2xpZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBE
MEJDNTQ0ODE0NDNBQzRBMDBFMTA1REEgLyogQ2FjaGVkU3R5bGVTaGVldENsaWVudC5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUQwQkQ0RjVDMTQw
ODg1MEYwMDY4MzlCNiAvKiBEaWN0YXRpb25Db21tYW5kSU9TLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEQwQkQ0RjVBMTQwODg1MEYwMDY4MzlCNiAv
KiBEaWN0YXRpb25Db21tYW5kSU9TLmNwcCAqLzsgfTsKKwkJRDBCRDRGNUQxNDA4ODUwRjAwNjgz
OUI2IC8qIERpY3RhdGlvbkNvbW1hbmRJT1MuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEQwQkQ0RjVCMTQwODg1MEYwMDY4MzlCNiAvKiBEaWN0YXRpb25D
b21tYW5kSU9TLmggKi87IH07CiAJCUQwQ0U1OEY4MTI1RTRDQzIwMEYzRjE5OSAvKiBSZXNvdXJj
ZUxvYWRTY2hlZHVsZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gRDBDRTU4RjYxMjVFNENDMjAwRjNGMTk5IC8qIFJlc291cmNlTG9hZFNjaGVkdWxl
ci5jcHAgKi87IH07CiAJCUQwQ0U1OEY5MTI1RTRDQzIwMEYzRjE5OSAvKiBSZXNvdXJjZUxvYWRT
Y2hlZHVsZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEQwQ0U1OEY3MTI1RTRDQzIwMEYzRjE5OSAvKiBSZXNvdXJjZUxvYWRTY2hlZHVsZXIuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlEMEVEQTc3NDE0
M0UzMDNDMDAyOEUzODMgLyogQ2FjaGVkUmF3UmVzb3VyY2UuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRDBFREE3NzIxNDNFMzAzQzAwMjhFMzgzIC8q
IENhY2hlZFJhd1Jlc291cmNlLmNwcCAqLzsgfTsKQEAgLTY0MjcsNiArNjQzNyw4IEBACiAJCUZF
QjI2RDI4MTY3QThGMkEwMEZERDI2QiAvKiBEYXRhYmFzZVNlcnZlci5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRUIyNkQyNzE2N0E4RjJBMDBGREQy
NkIgLyogRGF0YWJhc2VTZXJ2ZXIuY3BwICovOyB9OwogCQlGRUJDNUYzMTE2QkQwQ0MzMDA2NTlC
RDMgLyogRGF0YWJhc2VCYXNlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEZFQkM1RjJGMTZCRDBDQzMwMDY1OUJEMyAvKiBEYXRhYmFzZUJhc2UuY3Bw
ICovOyB9OwogCQlGRUJDNUYzMjE2QkQwQ0MzMDA2NTlCRDMgLyogRGF0YWJhc2VCYXNlLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRUJDNUYzMDE2QkQw
Q0MzMDA2NTlCRDMgLyogRGF0YWJhc2VCYXNlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJRkVEMTNEMkEwQ0VBOTFERjAwRDg5NDY2IC8qIERPTVVJ
S2l0RXh0ZW5zaW9ucy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gRkVEMTNEMjYwQ0VBOTFERjAwRDg5NDY2IC8qIERPTVVJS2l0RXh0ZW5zaW9ucy5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUZFRDEzRDJC
MENFQTkxREYwMEQ4OTQ2NiAvKiBET01VSUtpdEV4dGVuc2lvbnMubW0gaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRUQxM0QyNzBDRUE5MURGMDBEODk0NjYg
LyogRE9NVUlLaXRFeHRlbnNpb25zLm1tICovOyB9OwogCQlGRUQxM0QzQTBDRUE5MzQ2MDBEODk0
NjYgLyogRWRpdG9ySU9TLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gRkVEMTNEMzkwQ0VBOTM0NjAwRDg5NDY2IC8qIEVkaXRvcklPUy5tbSAqLzsgfTsK
IAkJRkVEMTNEM0QwQ0VBOTM2QTAwRDg5NDY2IC8qIEZyYW1lSU9TLm1tIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkVEMTNEM0IwQ0VBOTM2QTAwRDg5NDY2
IC8qIEZyYW1lSU9TLm1tICovOyB9OwogCQlGRUQxM0Q0MDBDRUE5Mzk0MDBEODk0NjYgLyogSWNv
bklPUy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZF
RDEzRDNGMENFQTkzOTQwMEQ4OTQ2NiAvKiBJY29uSU9TLm1tICovOyB9OwpAQCAtNjcwOSw2ICs2
NzIxLDcgQEAKIAkJMDFEM0NGN0YxNEJEMEEzMDAwRkU5OTcwIC8qIFdlYkdMQ29udGV4dE9iamVj
dC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBXZWJHTENvbnRleHRPYmplY3Qu
aDsgcGF0aCA9IGNhbnZhcy9XZWJHTENvbnRleHRPYmplY3QuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJMDFEM0NGODAxNEJEMEEzMDAwRkU5OTcwIC8qIFdlYkdMU2hhcmVkT2JqZWN0
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IFdlYkdMU2hhcmVkT2Jq
ZWN0LmNwcDsgcGF0aCA9IGNhbnZhcy9XZWJHTFNoYXJlZE9iamVjdC5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTAxRDNDRjgxMTRCRDBBMzAwMEZFOTk3MCAvKiBXZWJHTFNoYXJl
ZE9iamVjdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBXZWJHTFNoYXJlZE9i
amVjdC5oOyBwYXRoID0gY2FudmFzL1dlYkdMU2hhcmVkT2JqZWN0Lmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTAxRTZDMkUzMTE5NEIyODIwMDUwODIxQyAvKiBTcGVsbGluZ0RvdEAy
eC5wbmcgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBp
bWFnZS5wbmc7IHBhdGggPSAiU3BlbGxpbmdEb3RAMngucG5nIjsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJMDU2MkY5NDQxNTczRUNFQjAwMzFDQTE2IC8qIFdlYktpdENTU1NWR0RvY3Vt
ZW50VmFsdWUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2ViS2l0
Q1NTU1ZHRG9jdW1lbnRWYWx1ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA1
NjJGOTQ1MTU3M0VDRUIwMDMxQ0ExNiAvKiBXZWJLaXRDU1NTVkdEb2N1bWVudFZhbHVlLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYktpdENTU1NWR0RvY3VtZW50VmFsdWUu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDU2MkY5NjAxNTczRjg4RjAwMzFDQTE2
IC8qIFBsYXRmb3JtTGF5ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUGxh
dGZvcm1MYXllci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTA0NjEsNiArMTA0
NzQsOCBAQAogCQlBMTdDODEyMDBGMkE1Q0Y3MDA1REFBRUIgLyogSFRNTEVsZW1lbnRGYWN0b3J5
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEhUTUxFbGVtZW50RmFj
dG9yeS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUExN0M4MTIxMEYyQTVDRjcw
MDVEQUFFQiAvKiBIVE1MRWxlbWVudEZhY3RvcnkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gSFRNTEVsZW1lbnRGYWN0b3J5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCUExQzdGQUExMTMzQTVEMzUwMEQ2NzMyRCAvKiBKU1hQYXRoUmVzdWx0Q3VzdG9tLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTWFBhdGhSZXN1bHRDdXN0b20u
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBMURFNzEyQjE4NjEyQUMxMDA3MzQx
OTIgLyogVG91Y2hFdmVudHMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gVG91Y2hFdmVudHMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBMURFNzEz
MDE4NjEzMjIyMDA3MzQxOTIgLyogVG91Y2hDb25zdHJ1Y3RvcnMuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gVG91Y2hDb25zdHJ1Y3RvcnMuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlBMUUxMTU0MzEzMDE1QzNEMDA1NEFDOEMgLyogRGlzdGFudExp
Z2h0U291cmNlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IERpc3Rh
bnRMaWdodFNvdXJjZS5jcHA7IHBhdGggPSBmaWx0ZXJzL0Rpc3RhbnRMaWdodFNvdXJjZS5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUExRTExNTQ1MTMwMTVDNEUwMDU0QUM4QyAv
KiBQb2ludExpZ2h0U291cmNlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFt
ZSA9IFBvaW50TGlnaHRTb3VyY2UuY3BwOyBwYXRoID0gZmlsdGVycy9Qb2ludExpZ2h0U291cmNl
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTFFMTE1NDcxMzAxNUM1RDAwNTRB
QzhDIC8qIFNwb3RMaWdodFNvdXJjZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IG5hbWUgPSBTcG90TGlnaHRTb3VyY2UuY3BwOyBwYXRoID0gZmlsdGVycy9TcG90TGlnaHRTb3Vy
Y2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTA1MzgsNiArMTA1NTMsOSBA
QAogCQlBNUM1NjZBQTEyN0EzQUFEMDBFOEEzRkYgLyogRGlza0ltYWdlQ2FjaGVDbGllbnRJT1Mu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRGlza0ltYWdlQ2FjaGVDbGllbnRJ
T1MuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTVDOTc0Q0YxMTQ4NUZGMTAwNjZG
MkFCIC8qIEtleUV2ZW50Q29jb2EuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0g
S2V5RXZlbnRDb2NvYS5oOyBwYXRoID0gY29jb2EvS2V5RXZlbnRDb2NvYS5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlBNUM5NzREMDExNDg1RkYxMDA2NkYyQUIgLyogS2V5RXZlbnRD
b2NvYS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgbmFtZSA9IEtleUV2ZW50
Q29jb2EubW07IHBhdGggPSBjb2NvYS9LZXlFdmVudENvY29hLm1tOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQlBNURFQkQ5RjE2RkI5MDg3MDA4MzZGRTAgLyogV2ViS2l0UGxheWJhY2tU
YXJnZXRBdmFpbGFiaWxpdHlFdmVudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBXZWJLaXRQbGF5YmFja1RhcmdldEF2YWlsYWJpbGl0eUV2ZW50LmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTVERUJEQTAxNkZCOTA4NzAwODM2RkUwIC8qIFdlYktp
dFBsYXliYWNrVGFyZ2V0QXZhaWxhYmlsaXR5RXZlbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gV2ViS2l0UGxheWJhY2tUYXJnZXRBdmFpbGFiaWxpdHlFdmVudC5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBNURFQkRBMTE2RkI5MDg3MDA4MzZGRTAgLyogV2Vi
S2l0UGxheWJhY2tUYXJnZXRBdmFpbGFiaWxpdHlFdmVudC5pZGwgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBw
YXRoID0gV2ViS2l0UGxheWJhY2tUYXJnZXRBdmFpbGFiaWxpdHlFdmVudC5pZGw7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE1RjZFMTZDMTMyRUQ0NkUwMDhFREFFMyAvKiBBdXRvY2Fw
aXRhbGl6ZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBBdXRvY2Fw
aXRhbGl6ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE1RjlFRjZFMTI2Njc1
MEQwMEZDQ0Y1MiAvKiBEaXNrSW1hZ2VDYWNoZUlPUy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLm9iamNwcDsgcGF0aCA9IERpc2tJbWFnZUNhY2hlSU9TLm1tOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQlBNUY5RUY2RjEyNjY3NTBEMDBGQ0NGNTIgLyogRGlza0ltYWdlQ2FjaGVJ
T1MuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRGlza0ltYWdlQ2FjaGVJT1Mu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTEyNDc1LDYgKzEyNDkzLDcgQEAKIAkJ
QkU4OEUwRDUxNzE1RDJBMjAwNjU4RDk4IC8qIFZpZGVvVHJhY2tMaXN0LmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFZpZGVvVHJhY2tMaXN0LmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkU4OEUwRDYxNzE1RDJBMjAwNjU4RDk4IC8qIFZpZGVvVHJh
Y2tMaXN0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFZpZGVvVHJhY2tMaXN0
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJFODhFMEQ3MTcxNUQyQTIwMDY1OEQ5
OCAvKiBWaWRlb1RyYWNrTGlzdC5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gVmlkZW9UcmFj
a0xpc3QuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlCRThDNzUzMDEwNjgxMzI0
MDAxRTkzRjUgLyogU3BlbGxpbmdEb3QucG5nICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gaW1hZ2UucG5nOyBwYXRoID0gU3BlbGxpbmdEb3QucG5nOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCRThFRjAzRTE3MUM4RkY5MDA5QjQ4QzMgLyog
SlNBdWRpb1RyYWNrLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpT
QXVkaW9UcmFjay5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJFOEVGMDNGMTcx
QzhGRjkwMDlCNDhDMyAvKiBKU0F1ZGlvVHJhY2suaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gSlNBdWRpb1RyYWNrLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJF
OEVGMDQwMTcxQzhGRjkwMDlCNDhDMyAvKiBKU0F1ZGlvVHJhY2tMaXN0LmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTQXVkaW9UcmFja0xpc3QuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTI3ODcsNiArMTI4MDYsOCBAQAogCQlEMDAwRUQyNjEx
QzFCOUNEMDBDNDc3MjYgLyogU3ViZnJhbWVMb2FkZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gU3ViZnJhbWVMb2FkZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJRDAxQTI3QUIxMEM5QkZEODAwMDI2QTQyIC8qIFNwYWNlU3BsaXRTdHJpbmcuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU3BhY2VTcGxpdFN0cmluZy5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUQwMUEyN0FDMTBDOUJGRDgwMDAyNkE0MiAvKiBT
cGFjZVNwbGl0U3RyaW5nLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNwYWNl
U3BsaXRTdHJpbmcuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRDAyQjY0QjAxNDA4
OUU1NjAwNkVGQTIxIC8qIERpY3RhdGlvblBocmFzZVdpdGhBbHRlcm5hdGl2ZXNEb3QucG5nICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gaW1hZ2UucG5n
OyBwYXRoID0gRGljdGF0aW9uUGhyYXNlV2l0aEFsdGVybmF0aXZlc0RvdC5wbmc7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCUQwMkI2NEIxMTQwODlFNTYwMDZFRkEyMSAvKiBEaWN0YXRp
b25QaHJhc2VXaXRoQWx0ZXJuYXRpdmVzRG90QDJ4LnBuZyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IGltYWdlLnBuZzsgcGF0aCA9ICJEaWN0YXRpb25Q
aHJhc2VXaXRoQWx0ZXJuYXRpdmVzRG90QDJ4LnBuZyI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCUQwNUNFRDI3MEE0MEJCMkMwMEM1QUYzOCAvKiBGb3JtYXRCbG9ja0NvbW1hbmQuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEZvcm1hdEJsb2NrQ29tbWFu
ZC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUQwNUNFRDI4MEE0MEJCMkMwMEM1
QUYzOCAvKiBGb3JtYXRCbG9ja0NvbW1hbmQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IEZvcm1hdEJsb2NrQ29tbWFuZC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQlEMDZDMEQ4RDBDRkQxMTQ2MDA2NUY0M0YgLyogUmVtb3ZlRm9ybWF0Q29tbWFuZC5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZW1vdmVGb3JtYXRDb21tYW5kLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xMjc5OSw2ICsxMjgyMCw4IEBACiAJCUQwQjA1NTY2
MDlDNjcwMDEwMDMwN0U0MyAvKiBDcmVhdGVMaW5rQ29tbWFuZC5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBDcmVhdGVMaW5rQ29tbWFuZC5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQlEMEIwNTU2NzA5QzY3MDAxMDAzMDdFNDMgLyogQ3JlYXRlTGlua0NvbW1hbmQu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ3JlYXRlTGlua0NvbW1h
bmQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlEMEJDNTQ0ODE0NDNBQzRBMDBF
MTA1REEgLyogQ2FjaGVkU3R5bGVTaGVldENsaWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBDYWNoZWRTdHlsZVNoZWV0Q2xpZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCUQwQkQ0RjVBMTQwODg1MEYwMDY4MzlCNiAvKiBEaWN0YXRpb25Db21tYW5kSU9T
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IERpY3RhdGlvbkNvbW1h
bmRJT1MuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlEMEJENEY1QjE0MDg4NTBG
MDA2ODM5QjYgLyogRGljdGF0aW9uQ29tbWFuZElPUy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBEaWN0YXRpb25Db21tYW5kSU9TLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCUQwQ0U1OEY2MTI1RTRDQzIwMEYzRjE5OSAvKiBSZXNvdXJjZUxvYWRTY2hlZHVsZXIu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVzb3VyY2VMb2FkU2No
ZWR1bGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRDBDRTU4RjcxMjVFNEND
MjAwRjNGMTk5IC8qIFJlc291cmNlTG9hZFNjaGVkdWxlci5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBSZXNvdXJjZUxvYWRTY2hlZHVsZXIuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJRDBFREE3NzIxNDNFMzAzQzAwMjhFMzgzIC8qIENhY2hlZFJhd1Jlc291cmNl
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENhY2hlZFJhd1Jlc291
cmNlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTEzNzYyLDYgKzEzNzg1LDgg
QEAKIAkJRkVCMjZEMjcxNjdBOEYyQTAwRkREMjZCIC8qIERhdGFiYXNlU2VydmVyLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IERhdGFiYXNlU2VydmVyLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkVCQzVGMkYxNkJEMENDMzAwNjU5QkQzIC8qIERh
dGFiYXNlQmFzZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBEYXRh
YmFzZUJhc2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGRUJDNUYzMDE2QkQw
Q0MzMDA2NTlCRDMgLyogRGF0YWJhc2VCYXNlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IERhdGFiYXNlQmFzZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlGRUQx
M0QyNjBDRUE5MURGMDBEODk0NjYgLyogRE9NVUlLaXRFeHRlbnNpb25zLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERPTVVJS2l0RXh0ZW5zaW9ucy5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQlGRUQxM0QyNzBDRUE5MURGMDBEODk0NjYgLyogRE9NVUlLaXRFeHRl
bnNpb25zLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gRE9NVUlL
aXRFeHRlbnNpb25zLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGRUQxM0QzOTBD
RUE5MzQ2MDBEODk0NjYgLyogRWRpdG9ySU9TLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
b2JqY3BwOyBwYXRoID0gRWRpdG9ySU9TLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQlGRUQxM0QzQjBDRUE5MzZBMDBEODk0NjYgLyogRnJhbWVJT1MubW0gKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBGcmFtZUlPUy5tbTsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJRkVEMTNEM0YwQ0VBOTM5NDAwRDg5NDY2IC8qIEljb25JT1MubW0gKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBJY29uSU9TLm1tOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwpAQCAtMTM3NzAsNiArMTM3OTUsNyBAQAogCQlGRURFRjg0MDE2Nzk3
MTA4MDAwRTQ0NEEgLyogRGF0YWJhc2VTdHJhdGVneS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBEYXRhYmFzZVN0cmF0ZWd5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCUZFRTE4MTExMTZDMzE5RTgwMDA4NDg0OSAvKiBTUUxUcmFuc2FjdGlvbkJhY2tlbmQuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU1FMVHJhbnNhY3Rpb25CYWNr
ZW5kLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkVFMTgxMTIxNkMzMTlFODAw
MDg0ODQ5IC8qIFNRTFRyYW5zYWN0aW9uQmFja2VuZC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBTUUxUcmFuc2FjdGlvbkJhY2tlbmQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJRkVFN0Q2NjEwRDk5QUQxNjAwNTM1MUY2IC8qIGlPUy54Y2NvbmZpZyAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHRleHQueGNjb25maWc7IHBhdGggPSBpT1MueGNjb25maWc7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCUZGOTQ1RUM5MTYxRjdGMzYwMDk3MUJDOCAvKiBQc2V1ZG9FbGVtZW50LmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFBzZXVkb0VsZW1lbnQuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGRjk0NUVDQTE2MUY3RjM2MDA5NzFCQzgg
LyogUHNldWRvRWxlbWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQc2V1
ZG9FbGVtZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUZGQUMzMEZDMTg0RkIx
NDUwMDhDNEYxRSAvKiBUcmFpbGluZ09iamVjdHMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gVHJhaWxpbmdPYmplY3RzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBA
IC0xNDM1Nyw2ICsxNDM4Myw3IEBACiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0g
KAogCQkJCUNEMERCQjNFMTQyMjc0RTYwMDI4MDI2MyAvKiBhdWRpbyAqLywKKwkJCQk2NTk5OEE2
NTBFNUY1RkQzMDA0RTA5N0EgLyogaW1hZ2VzICovLAogCQkJCTQ2RjlENURBMEIwRDYwMTcwMDI4
RUUzNiAvKiBhbGlhc0N1cnNvci5wbmcgKi8sCiAJCQkJNDZENEYyNDYwQUY5N0U4MTAwMzUzODVB
IC8qIGNlbGxDdXJzb3IucG5nICovLAogCQkJCTkzMTUzQkREMTQxOTU5RjQwMEZDRjVCRSAvKiBk
ZWxldGVCdXR0b24ucG5nICovLApAQCAtMTQ4NjAsNiArMTQ4ODcsNyBAQAogCQkJCTFDREQ0NUU2
MEJBOUM4NDYwMEY5MDE0NyAvKiBCYXNlLnhjY29uZmlnICovLAogCQkJCTFDREQ0NUU0MEJBOUM4
NDYwMEY5MDE0NyAvKiBEZWJ1Z1JlbGVhc2UueGNjb25maWcgKi8sCiAJCQkJNDQ5MDk4QjEwRjhG
ODI1MjAwNzZBMzI3IC8qIEZlYXR1cmVEZWZpbmVzLnhjY29uZmlnICovLAorCQkJCUZFRTdENjYx
MEQ5OUFEMTYwMDUzNTFGNiAvKiBpT1MueGNjb25maWcgKi8sCiAJCQkJMUM5MDRERjkwQkE5RDJD
ODAwODFFOUQwIC8qIFZlcnNpb24ueGNjb25maWcgKi8sCiAJCQkJMUNERDQ1RTUwQkE5Qzg0NjAw
RjkwMTQ3IC8qIFdlYkNvcmUueGNjb25maWcgKi8sCiAJCQkJRTFCQTY2RjIxNzQyQkRDQzAwQzIw
MjUxIC8qIFdlYkNvcmVUZXN0U2hpbS54Y2NvbmZpZyAqLywKQEAgLTE1MjIxLDYgKzE1MjQ5LDgg
QEAKIAkJNDQzMjkyQzEwRUJBNkQ3MzAwRTYyMDE2IC8qIGlvcyAqLyA9IHsKIAkJCWlzYSA9IFBC
WEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCisJCQkJRDBCRDRGNUExNDA4ODUwRjAwNjgzOUI2IC8q
IERpY3RhdGlvbkNvbW1hbmRJT1MuY3BwICovLAorCQkJCUQwQkQ0RjVCMTQwODg1MEYwMDY4MzlC
NiAvKiBEaWN0YXRpb25Db21tYW5kSU9TLmggKi8sCiAJCQkJRkVEMTNEMzkwQ0VBOTM0NjAwRDg5
NDY2IC8qIEVkaXRvcklPUy5tbSAqLywKIAkJCSk7CiAJCQlwYXRoID0gaW9zOwpAQCAtMTU5NDEs
NiArMTU5NzEsMTcgQEAKIAkJCXBhdGggPSBtYWM7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4i
OwogCQl9OworCQk2NTk5OEE2NTBFNUY1RkQzMDA0RTA5N0EgLyogaW1hZ2VzICovID0geworCQkJ
aXNhID0gUEJYR3JvdXA7CisJCQljaGlsZHJlbiA9ICgKKwkJCQlEMDJCNjRCMDE0MDg5RTU2MDA2
RUZBMjEgLyogRGljdGF0aW9uUGhyYXNlV2l0aEFsdGVybmF0aXZlc0RvdC5wbmcgKi8sCisJCQkJ
RDAyQjY0QjExNDA4OUU1NjAwNkVGQTIxIC8qIERpY3RhdGlvblBocmFzZVdpdGhBbHRlcm5hdGl2
ZXNEb3RAMngucG5nICovLAorCQkJCUJFOEM3NTMwMTA2ODEzMjQwMDFFOTNGNSAvKiBTcGVsbGlu
Z0RvdC5wbmcgKi8sCisJCQkJMDFFNkMyRTMxMTk0QjI4MjAwNTA4MjFDIC8qIFNwZWxsaW5nRG90
QDJ4LnBuZyAqLywKKwkJCSk7CisJCQluYW1lID0gaW1hZ2VzOworCQkJc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsKKwkJfTsKIAkJNjVCRjAyMTgwOTc0ODA2MzAwQzQzMTk2IC8qIHBhZ2UgKi8gPSB7
CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKApAQCAtMTczNjQsNiArMTc0MDUs
NyBAQAogCQk5NzExNDVGRTE0RUYwMDZFMDA2NzRGRDkgLyogTW9kdWxlcyAqLyA9IHsKIAkJCWlz
YSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCisJCQkJQ0UyNjE2OUQxODdFNjU1NDAwNzk1
NUYzIC8qIGFpcnBsYXkgKi8sCiAJCQkJMDcyQUUxREUxODNDMDUxMzAwMEE1OTg4IC8qIHBsdWdp
bnMgKi8sCiAJCQkJQ0RBOThEQkQxNjAxNEUwODAwRkVBM0IxIC8qIGVuY3J5cHRlZG1lZGlhICov
LAogCQkJCTk3MTE0NUZGMTRFRjAwNzkwMDY3NEZEOSAvKiBnZW9sb2NhdGlvbiAqLywKQEAgLTIw
MDk5LDYgKzIwMTQxLDggQEAKIAkJCQk4NTM4RjA4NDBBRDcyQ0I2MDA2QTgxRDEgLyogRE9NUmFu
Z2VzLmggKi8sCiAJCQkJQkMxQTM3QTcwOTdDNzE1RjAwMTlGM0Q4IC8qIERPTVN0eWxlc2hlZXRz
LmggKi8sCiAJCQkJQkMxQTM3QTgwOTdDNzE1RjAwMTlGM0Q4IC8qIERPTVRyYXZlcnNhbC5oICov
LAorCQkJCUZFRDEzRDI2MENFQTkxREYwMEQ4OTQ2NiAvKiBET01VSUtpdEV4dGVuc2lvbnMuaCAq
LywKKwkJCQlGRUQxM0QyNzBDRUE5MURGMDBEODk0NjYgLyogRE9NVUlLaXRFeHRlbnNpb25zLm1t
ICovLAogCQkJCUJDMUEzN0E5MDk3QzcxNUYwMDE5RjNEOCAvKiBET01VdGlsaXR5Lm1tICovLAog
CQkJCUJDMUEzN0FBMDk3QzcxNUYwMDE5RjNEOCAvKiBET01WaWV3cy5oICovLAogCQkJCTFBMUQx
MzdFMEE1MzI1NTIwMDY0QkY1RiAvKiBET01YUGF0aC5oICovLApAQCAtMjA1MTUsNiArMjA1NTks
NyBAQAogCQlCQ0NFNThCNDEwNjFFOTI1MDA4RkIzNUEgLyogQ29uc3RydWN0b3JzICovID0gewog
CQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJCQlDRTI2MTY5NDE4N0U2NDY5
MDA3OTU1RjMgLyogaW9zICovLAogCQkJCUJDNkM0OUYxMEQ3REJBMDUwMEZGQTU1OCAvKiBKU0lt
YWdlQ29uc3RydWN0b3IuY3BwICovLAogCQkJCUJDNkM0OUYyMEQ3REJBMDUwMEZGQTU1OCAvKiBK
U0ltYWdlQ29uc3RydWN0b3IuaCAqLywKIAkJCSk7CkBAIC0yMDgyNSw2ICsyMDg3MCwzMiBAQAog
CQkJcGF0aCA9IG1lZGlhc291cmNlOwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKIAkJfTsK
KwkJQ0UyNjE2OTQxODdFNjQ2OTAwNzk1NUYzIC8qIGlvcyAqLyA9IHsKKwkJCWlzYSA9IFBCWEdy
b3VwOworCQkJY2hpbGRyZW4gPSAoCisJCQkJQTFERTcxMzAxODYxMzIyMjAwNzM0MTkyIC8qIFRv
dWNoQ29uc3RydWN0b3JzLmNwcCAqLywKKwkJCSk7CisJCQlwYXRoID0gaW9zOworCQkJc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsKKwkJfTsKKwkJQ0UyNjE2OUQxODdFNjU1NDAwNzk1NUYzIC8qIGFp
cnBsYXkgKi8gPSB7CisJCQlpc2EgPSBQQlhHcm91cDsKKwkJCWNoaWxkcmVuID0gKAorCQkJCUE1
REVCRDlGMTZGQjkwODcwMDgzNkZFMCAvKiBXZWJLaXRQbGF5YmFja1RhcmdldEF2YWlsYWJpbGl0
eUV2ZW50LmNwcCAqLywKKwkJCQlBNURFQkRBMDE2RkI5MDg3MDA4MzZGRTAgLyogV2ViS2l0UGxh
eWJhY2tUYXJnZXRBdmFpbGFiaWxpdHlFdmVudC5oICovLAorCQkJCUE1REVCREExMTZGQjkwODcw
MDgzNkZFMCAvKiBXZWJLaXRQbGF5YmFja1RhcmdldEF2YWlsYWJpbGl0eUV2ZW50LmlkbCAqLywK
KwkJCSk7CisJCQlwYXRoID0gYWlycGxheTsKKwkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CisJ
CX07CisJCUNFMjYxNkE0MTg3RTY1QzEwMDc5NTVGMyAvKiBpb3MgKi8gPSB7CisJCQlpc2EgPSBQ
QlhHcm91cDsKKwkJCWNoaWxkcmVuID0gKAorCQkJCUExREU3MTJCMTg2MTJBQzEwMDczNDE5MiAv
KiBUb3VjaEV2ZW50cy5jcHAgKi8sCisJCQkpOworCQkJcGF0aCA9IGlvczsKKwkJCXNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7CisJCX07CiAJCUNFNzlENjg2MTdGMjIwRUQwMDgxNUMwMCAvKiBpb3Mg
Ki8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKApAQCAtMjE2OTQsNiAr
MjE3NjUsNyBAQAogCQlGNTIzRDMyNDAyREU0NDc4MDE4NjM1Q0EgLyogZG9tICovID0gewogCQkJ
aXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJCQlDRTI2MTZBNDE4N0U2NUMxMDA3
OTU1RjMgLyogaW9zICovLAogCQkJCUUxQzRERTZEMEVBNzVDNjUwMDIzQ0NENiAvKiBBY3RpdmVE
T01PYmplY3QuY3BwICovLAogCQkJCUUxQzRERTY4MEVBNzVDMUUwMDIzQ0NENiAvKiBBY3RpdmVE
T01PYmplY3QuaCAqLywKIAkJCQlBOEM0QTdGQzA5RDU2MzI3MDAwM0FDOEQgLyogQXR0ci5jcHAg
Ki8sCkBAIC0yMzI0OSw2ICsyMzMyMSw3IEBACiAJCQkJODU2QzhBRTQwQTkxMjY0OTAwNUM2ODdC
IC8qIERPTU9iamVjdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMDcwNTg1MTMxN0ZBNzEwNzAwNUYy
QkNCIC8qIEpTTWVkaWFTdHJlYW1DYXBhYmlsaXRpZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCUJD
NTNEQTYwMTE0MzE0MUEwMDBEODE3RSAvKiBET01PYmplY3RIYXNoVGFibGVNYXAuaCBpbiBIZWFk
ZXJzICovLAorCQkJCUZFRDEzRDJBMENFQTkxREYwMEQ4OTQ2NiAvKiBET01VSUtpdEV4dGVuc2lv
bnMuaCBpbiBIZWFkZXJzICovLAogCQkJCTg1QzdGNUQwMEFBRkI4RDkwMDQwMTRERCAvKiBET01P
dmVyZmxvd0V2ZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQk4NTk4OURDRjBBQ0M4QkJEMDBBMEJD
NTEgLyogRE9NT3ZlcmZsb3dFdmVudEludGVybmFsLmggaW4gSGVhZGVycyAqLywKIAkJCQlFMTI4
NEJENjEwNDRBMDFFMDBFQUVCNTIgLyogRE9NUGFnZVRyYW5zaXRpb25FdmVudC5oIGluIEhlYWRl
cnMgKi8sCkBAIC0yNDkxNiw2ICsyNDk4OSw3IEBACiAJCQkJRjU1QjNERDAxMjUxRjEyRDAwM0VG
MjY5IC8qIFJlc2V0SW5wdXRUeXBlLmggaW4gSGVhZGVycyAqLywKIAkJCQk1MTRCQzg0MzE2MUNG
MDVDMDA0RDUyRjQgLyogUmVzb3VyY2VCdWZmZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTdFRTY4
NDZBMTJEMjZFMzgwMEU3OTQxNSAvKiBSZXNvdXJjZUVycm9yLmggaW4gSGVhZGVycyAqLywKKwkJ
CQlEMEJENEY1RDE0MDg4NTBGMDA2ODM5QjYgLyogRGljdGF0aW9uQ29tbWFuZElPUy5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJOTM0RjcxM0MwRDVBNkYxOTAwMDE4RDY5IC8qIFJlc291cmNlRXJyb3JC
YXNlLmggaW4gSGVhZGVycyAqLywKIAkJCQk1MTRDNzY3OTBDRTkyM0ExMDA3RUYzQ0QgLyogUmVz
b3VyY2VIYW5kbGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTI2RkFFNENEMTg1MkUzQTUwMDRDOEM0
NiAvKiBSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlLmggaW4gSGVhZGVycyAq
LywKQEAgLTI1NTgwLDYgKzI1NjU0LDcgQEAKIAkJCQlGNUExNTQyODEyNzk1MzREMDBEMEIwQzAg
LyogVmFsaWRhdGlvbk1lc3NhZ2UuaCBpbiBIZWFkZXJzICovLAogCQkJCUY1MTNBM0VBMTVGRjQ4
NDEwMDE1MjZEQiAvKiBWYWxpZGF0aW9uTWVzc2FnZUNsaWVudC5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJMTVDNzcwOEQxMDBEM0M2QjAwNUJBMjY3IC8qIFZhbGlkaXR5U3RhdGUuaCBpbiBIZWFkZXJz
ICovLAorCQkJCUE1REVCREE0MTZGQjkwODcwMDgzNkZFMCAvKiBXZWJLaXRQbGF5YmFja1Rhcmdl
dEF2YWlsYWJpbGl0eUV2ZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlGRDMxNjBBRjEyQjAyNkY3
MDBDMUEzNTkgLyogVmVjdG9yTWF0aC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkNBMjU3MTUxMjkz
QzAxMDAwN0EyNjNEIC8qIFZlcnRpY2FsUG9zaXRpb25DYWNoZS5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJQkU4OEUwREYxNzE1RDJBMjAwNjU4RDk4IC8qIFZpZGVvVHJhY2suaCBpbiBIZWFkZXJzICov
LApAQCAtMjU5NDMsMTUgKzI2MDE4LDE5IEBACiAJCQlpc2EgPSBQQlhSZXNvdXJjZXNCdWlsZFBo
YXNlOwogCQkJYnVpbGRBY3Rpb25NYXNrID0gMjE0NzQ4MzY0NzsKIAkJCWZpbGVzID0gKAorCQkJ
CUQwMkI2NEIyMTQwODlFNTYwMDZFRkEyMSAvKiBEaWN0YXRpb25QaHJhc2VXaXRoQWx0ZXJuYXRp
dmVzRG90LnBuZyBpbiBSZXNvdXJjZXMgKi8sCiAJCQkJNDZGOUQ1REQwQjBENjAxNzAwMjhFRTM2
IC8qIGFsaWFzQ3Vyc29yLnBuZyBpbiBSZXNvdXJjZXMgKi8sCisJCQkJRDAyQjY0QjMxNDA4OUU1
NjAwNkVGQTIxIC8qIERpY3RhdGlvblBocmFzZVdpdGhBbHRlcm5hdGl2ZXNEb3RAMngucG5nIGlu
IFJlc291cmNlcyAqLywKIAkJCQk0NkQ0RjI0OTBBRjk3RTgxMDAzNTM4NUEgLyogY2VsbEN1cnNv
ci5wbmcgaW4gUmVzb3VyY2VzICovLAogCQkJCTkzMTUzQkRFMTQxOTU5RjQwMEZDRjVCRSAvKiBk
ZWxldGVCdXR0b24ucG5nIGluIFJlc291cmNlcyAqLywKKwkJCQlCRThDNzUzMTEwNjgxMzI0MDAx
RTkzRjUgLyogU3BlbGxpbmdEb3QucG5nIGluIFJlc291cmNlcyAqLywKIAkJCQk5MzE1M0JDRDE0
MTdGQkJGMDBGQ0Y1QkUgLyogZGVsZXRlQnV0dG9uQDJ4LnBuZyBpbiBSZXNvdXJjZXMgKi8sCiAJ
CQkJOTMxNTNCRTAxNDE5NUEyODAwRkNGNUJFIC8qIGRlbGV0ZUJ1dHRvblByZXNzZWQucG5nIGlu
IFJlc291cmNlcyAqLywKIAkJCQk5MzE1M0JDRjE0MTdGQkRCMDBGQ0Y1QkUgLyogZGVsZXRlQnV0
dG9uUHJlc3NlZEAyeC5wbmcgaW4gUmVzb3VyY2VzICovLAogCQkJCTg1MTM2Qzk5MEFFRDY2NTkw
MEY5MEEzRCAvKiBlYXN0UmVzaXplQ3Vyc29yLnBuZyBpbiBSZXNvdXJjZXMgKi8sCiAJCQkJODUx
MzZDOUEwQUVENjY1OTAwRjkwQTNEIC8qIGVhc3RXZXN0UmVzaXplQ3Vyc29yLnBuZyBpbiBSZXNv
dXJjZXMgKi8sCiAJCQkJODUxMzZDOUIwQUVENjY1OTAwRjkwQTNEIC8qIGhlbHBDdXJzb3IucG5n
IGluIFJlc291cmNlcyAqLywKKwkJCQkwMUU2QzJFNDExOTRCMjgyMDA1MDgyMUMgLyogU3BlbGxp
bmdEb3RAMngucG5nIGluIFJlc291cmNlcyAqLywKIAkJCQk3Q0M3RTNENzE3MjA4QzBGMDAzQzUy
NzcgLyogSUROU2NyaXB0V2hpdGVMaXN0LnR4dCBpbiBSZXNvdXJjZXMgKi8sCiAJCQkJOTMxNTNC
RTQxNDE5NUIyQTAwRkNGNUJFIC8qIGlucHV0U3BlZWNoLnBuZyBpbiBSZXNvdXJjZXMgKi8sCiAJ
CQkJMkQ5RjBFMTMxNEZGMUNCRjAwQkEwRkY3IC8qIGxpbmVhclNSR0IuaWNjIGluIFJlc291cmNl
cyAqLywKQEAgLTI2Mzc0LDYgKzI2NDUzLDcgQEAKIAkJCQlCQzY0QjRENzBDQjQyOThBMDA1RjJC
NjIgLyogQ1NTRm9udEZhY2VTb3VyY2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQkM2NEI0RDkw
Q0I0Mjk4QTAwNUYyQjYyIC8qIENTU0ZvbnRGYWNlU3JjVmFsdWUuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJNEE2RTlGQzMxM0MxN0QxRDAwNDZBN0Y4IC8qIENTU0ZvbnRGZWF0dXJlVmFsdWUuY3Bw
IGluIFNvdXJjZXMgKi8sCisJCQkJQTVERUJEQTMxNkZCOTA4NzAwODM2RkUwIC8qIFdlYktpdFBs
YXliYWNrVGFyZ2V0QXZhaWxhYmlsaXR5RXZlbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQkM2
NEI0REIwQ0I0Mjk4QTAwNUYyQjYyIC8qIENTU0ZvbnRTZWxlY3Rvci5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQlBODBFNkNGMTBBMTk4OUNBMDA3RkI4QzUgLyogQ1NTRm9udFZhbHVlLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCUJDMDJBNjQ2MEUwOUFBRTkwMDRCNkQyQiAvKiBDU1NGdW5jdGlvblZh
bHVlLmNwcCBpbiBTb3VyY2VzICovLApAQCAtMjcwNzMsNiArMjcxNTMsNyBAQAogCQkJCTk3MjA1
QUI1MTIzOTI5MTAwMEIxNzM4MCAvKiBJbWFnZURvY3VtZW50LmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCUY1NUIzREMxMTI1MUYxMkQwMDNFRjI2OSAvKiBJbWFnZUlucHV0VHlwZS5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQk1MUQ3MTlFNjE4MTEwNkUwMDAxNkRDNTEgLyogSURCT3BlbkRCUmVxdWVz
dC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlGRUQxM0QyQjBDRUE5MURGMDBEODk0NjYgLyogRE9N
VUlLaXRFeHRlbnNpb25zLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMDg5NTgyNTUwRTg1N0E3RTAw
RjgyQzgzIC8qIEltYWdlTG9hZGVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUIyNzUzNTdCMEIw
NTM4MTQwMDJDRTY0RiAvKiBJbWFnZU1hYy5tbSBpbiBTb3VyY2VzICovLAogCQkJCTJENUE1OTJG
MTUyNTI1MjMwMDM2RUU1MSAvKiBJbWFnZU9yaWVudGF0aW9uLmNwcCBpbiBTb3VyY2VzICovLApA
QCAtMjcyNTgsNiArMjczMzksNyBAQAogCQkJCTFBNDk0RURFMEExMjNGNEMwMEZEQUZDMSAvKiBK
U0RvY3VtZW50RnJhZ21lbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNjVERjMxRjUwOUQxQ0M2
MDAwMEJFMzI1IC8qIEpTRG9jdW1lbnRUeXBlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTFBQzIy
NjBDMERCNjlGMTkwMDg5QjY2OSAvKiBKU0RPTUFwcGxpY2F0aW9uQ2FjaGUuY3BwIGluIFNvdXJj
ZXMgKi8sCisJCQkJQTFERTcxMkQxODYxMkFDMTAwNzM0MTkyIC8qIFRvdWNoRXZlbnRzLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCTkzQjcwRDYzMDlFQjBDN0MwMDlEODQ2OCAvKiBKU0RPTUJpbmRp
bmcuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQkM2MEQ3QzAwRDI5QTQ2MzAwQjk5MThGIC8qIEpT
RE9NQ29yZUV4Y2VwdGlvbi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk0MEVDQUU4MTE2QjhCNjhB
MDBDMzYxMDMgLyogSlNET01FcnJvci5jcHAgaW4gU291cmNlcyAqLywKQEAgLTI3NDIxLDYgKzI3
NTAzLDcgQEAKIAkJCQlCQzA2RUQwNjBCRkQ1QkFFMDA4NTZFOUQgLyogSlNIVE1MVGFibGVTZWN0
aW9uRWxlbWVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlENjQ4OUQyNTE2NkZGQ0YxMDA3QzAz
MUIgLyogSlNIVE1MVGVtcGxhdGVFbGVtZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUQ2Rjc5
NjBEMTY2RkZFQ0UwMDc2REQxOCAvKiBKU0hUTUxUZW1wbGF0ZUVsZW1lbnRDdXN0b20uY3BwIGlu
IFNvdXJjZXMgKi8sCisJCQkJQTFERTcxMzIxODYxMzIyMjAwNzM0MTkyIC8qIFRvdWNoQ29uc3Ry
dWN0b3JzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE4MEU3RTlFMEExQTgzRTMwMDdGQjhDNSAv
KiBKU0hUTUxUZXh0QXJlYUVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTgwRTdCMTMw
QTE5RDYwNjAwN0ZCOEM1IC8qIEpTSFRNTFRpdGxlRWxlbWVudC5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQkwNzA3NTZEMzE0MjM5QTRFMDA0MTQxNjEgLyogSlNIVE1MVHJhY2tFbGVtZW50LmNwcCBp
biBTb3VyY2VzICovLApAQCAtMjg5MzQsNiArMjkwMTcsNyBAQAogCQkJCTFBQjdGQzc4MEE4Qjky
RUMwMEQ5RDM3QiAvKiBYUGF0aFBhcnNlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk0NDc2NTMx
QjEzMzE3MDk5MDAwNkI3ODkgLyogU1NMS2V5R2VuZXJhdG9ySU9TLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCTFBQjdGQzdBMEE4QjkyRUMwMEQ5RDM3QiAvKiBYUGF0aFBhdGguY3BwIGluIFNvdXJj
ZXMgKi8sCisJCQkJRDBCRDRGNUMxNDA4ODUwRjAwNjgzOUI2IC8qIERpY3RhdGlvbkNvbW1hbmRJ
T1MuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMUFCN0ZDN0MwQThCOTJFQzAwRDlEMzdCIC8qIFhQ
YXRoUHJlZGljYXRlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTFBQjdGQzdFMEE4QjkyRUMwMEQ5
RDM3QiAvKiBYUGF0aFJlc3VsdC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxQUI3RkM4MTBBOEI5
MkVDMDBEOUQzN0IgLyogWFBhdGhTdGVwLmNwcCBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvR0NDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0dDQ29udHJvbGxlci5jcHAKaW5kZXggYWFiZmIwMTliYjMxZjE5MjYy
ZDIyZjljZTFkYWM1ZTE1NzgwYTVmMC4uZjkxMGRiNmE2ODk2OWE4MDM4NGZmZTRmMmRlYTE3Mjhj
MWRhMTk0MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvR0NDb250cm9s
bGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9HQ0NvbnRyb2xsZXIuY3Bw
CkBAIC04MSw2ICs4MSwxMiBAQCB2b2lkIEdDQ29udHJvbGxlcjo6Z2NUaW1lckZpcmVkKFRpbWVy
PEdDQ29udHJvbGxlcj4qKQogdm9pZCBHQ0NvbnRyb2xsZXI6OmdhcmJhZ2VDb2xsZWN0Tm93KCkK
IHsKICAgICBKU0xvY2tIb2xkZXIgbG9jayhKU0RPTVdpbmRvdzo6Y29tbW9uVk0oKSk7CisjaWYg
UExBVEZPUk0oSU9TKQorICAgIC8vIElmIEphdmFTY3JpcHQgd2FzIG5ldmVyIHJ1biBpbiB0aGlz
IHByb2Nlc3MsIHRoZXJlJ3Mgbm8gbmVlZCB0byBjYWxsIEdDIHdoaWNoIHdpbGwKKyAgICAvLyBl
bmQgdXAgY3JlYXRpbmcgYSBWTSB1bm5lY2Vzc2FyaWx5LgorICAgIGlmICghSlNET01XaW5kb3c6
OmNvbW1vblZNRXhpc3RzKCkpCisgICAgICAgIHJldHVybjsKKyNlbmRpZgogICAgIGlmICghSlNE
T01XaW5kb3c6OmNvbW1vblZNKCktPmhlYXAuaXNCdXN5KCkpCiAgICAgICAgIEpTRE9NV2luZG93
Ojpjb21tb25WTSgpLT5oZWFwLmNvbGxlY3RBbGxHYXJiYWdlKCk7CiB9CkBAIC05Nyw2ICsxMDMs
MjYgQEAgdm9pZCBHQ0NvbnRyb2xsZXI6OmdhcmJhZ2VDb2xsZWN0T25BbHRlcm5hdGVUaHJlYWRG
b3JEZWJ1Z2dpbmcoYm9vbCB3YWl0VW50aWxEb24KICAgICBkZXRhY2hUaHJlYWQodGhyZWFkSUQp
OwogfQogCisjaWYgUExBVEZPUk0oSU9TKQordm9pZCBHQ0NvbnRyb2xsZXI6OnJlbGVhc2VFeGVj
dXRhYmxlTWVtb3J5KCkKK3sKKyAgICBKU0xvY2tIb2xkZXIgbG9jayhKU0RPTVdpbmRvdzo6Y29t
bW9uVk0oKSk7CisKKyAgICBpZiAoIUpTRE9NV2luZG93Ojpjb21tb25WTUV4aXN0cygpKQorICAg
ICAgICByZXR1cm47CisKKyAgICAvLyBXZSBzaG91bGRuJ3QgaGF2ZSBhbnkgamF2YXNjcmlwdCBy
dW5uaW5nIG9uIG91ciBzdGFjayB3aGVuIHRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkLiBUaGUKKyAg
ICAvLyBmb2xsb3dpbmcgbGluZSBhc3NlcnRzIHRoYXQuCisgICAgQVNTRVJUKCFKU0RPTVdpbmRv
dzo6Y29tbW9uVk0oKS0+ZHluYW1pY0dsb2JhbE9iamVjdCk7CisKKyAgICAvLyBCdXQgYmUgc2Fm
ZSBpbiByZWxlYXNlIGJ1aWxkcyBqdXN0IGluIGNhc2UuLi4KKyAgICBpZiAoSlNET01XaW5kb3c6
OmNvbW1vblZNKCktPmR5bmFtaWNHbG9iYWxPYmplY3QpCisgICAgICAgIHJldHVybjsKKworICAg
IEpTRE9NV2luZG93Ojpjb21tb25WTSgpLT5yZWxlYXNlRXhlY3V0YWJsZU1lbW9yeSgpOworfQor
I2VuZGlmCisKIHZvaWQgR0NDb250cm9sbGVyOjpzZXRKYXZhU2NyaXB0R2FyYmFnZUNvbGxlY3Rv
clRpbWVyRW5hYmxlZChib29sIGVuYWJsZSkKIHsKICAgICBKU0RPTVdpbmRvdzo6Y29tbW9uVk0o
KS0+aGVhcC5zZXRHYXJiYWdlQ29sbGVjdGlvblRpbWVyRW5hYmxlZChlbmFibGUpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvR0NDb250cm9sbGVyLmggYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9HQ0NvbnRyb2xsZXIuaAppbmRleCA4YTI0Y2IwZTA4MmUwNjRl
Mjg1ZTlhYWUxZjNjNjA5M2ViNGU3ZjVkLi5mZDIzMmIwODIxMTZkOTE0M2E3ZDY1Mzg2NWI2ZDVm
ZDJkODZiYjBlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9HQ0NvbnRy
b2xsZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9HQ0NvbnRyb2xsZXIuaApA
QCAtNDQsNiArNDQsOSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZvaWQgZ2FyYmFn
ZUNvbGxlY3ROb3coKTsgLy8gSXQncyBiZXR0ZXIgdG8gY2FsbCBnYXJiYWdlQ29sbGVjdFNvb24s
IHVubGVzcyB5b3UgaGF2ZSBhIHNwZWNpZmljIHJlYXNvbiBub3QgdG8uCiAKICAgICAgICAgdm9p
ZCBnYXJiYWdlQ29sbGVjdE9uQWx0ZXJuYXRlVGhyZWFkRm9yRGVidWdnaW5nKGJvb2wgd2FpdFVu
dGlsRG9uZSk7IC8vIFVzZWQgZm9yIHN0cmVzcyB0ZXN0aW5nLgorI2lmIFBMQVRGT1JNKElPUykK
KyAgICAgICAgdm9pZCByZWxlYXNlRXhlY3V0YWJsZU1lbW9yeSgpOworI2VuZGlmCiAgICAgICAg
IHZvaWQgc2V0SmF2YVNjcmlwdEdhcmJhZ2VDb2xsZWN0b3JUaW1lckVuYWJsZWQoYm9vbCk7CiAg
ICAgICAgIHZvaWQgZGlzY2FyZEFsbENvbXBpbGVkQ29kZSgpOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0NhbGxiYWNrRGF0YS5oIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNDYWxsYmFja0RhdGEuaAppbmRleCBkMzIxYzU3ZjA1YzlmMDIzMmYxZTdk
MDRjYTQ0MjFjMzc0YjA4NjI1Li5mZjc2YTllODUzNzI1ZjM4ODRlODdmYzQ1MjJmMjg2ZTFkYWE2
OGQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0NhbGxiYWNrRGF0
YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ2FsbGJhY2tEYXRhLmgKQEAg
LTU4LDcgKzU4LDkgQEAgcHVibGljOgogICAgIAogICAgIH5KU0NhbGxiYWNrRGF0YSgpCiAgICAg
eworI2lmICFQTEFURk9STShJT1MpCiAgICAgICAgIEFTU0VSVChtX3RocmVhZCA9PSBjdXJyZW50
VGhyZWFkKCkpOworI2VuZGlmCiAgICAgfQogCiAgICAgSlNDOjpKU09iamVjdCogY2FsbGJhY2so
KSB7IHJldHVybiBtX2NhbGxiYWNrLmdldCgpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0Jhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNET01XaW5kb3dCYXNlLmNwcAppbmRleCA1MDA0YTE5NjZkNDdiYjU5YzhlZjA3YTVl
ZjkxYzhlNjlhMjFiMjc4Li4yYjhkZDQzY2Y1MWFmZmVmZDM0Y2EwMWRkYjUyYjExZTQxZjM1NTBi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0Jhc2Uu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93QmFzZS5jcHAK
QEAgLTQwLDYgKzQwLDEyIEBACiAjaW5jbHVkZSA8cnVudGltZS9NaWNyb3Rhc2suaD4KICNpbmNs
dWRlIDx3dGYvTWFpblRocmVhZC5oPgogCisjaWYgUExBVEZPUk0oSU9TKQorI2luY2x1ZGUgIkNo
cm9tZUNsaWVudC5oIgorI2luY2x1ZGUgIldlYlNhZmVHQ0FjdGl2aXR5Q2FsbGJhY2tJT1MuaCIK
KyNpbmNsdWRlICJXZWJTYWZlSW5jcmVtZW50YWxTd2VlcGVySU9TLmgiCisjZW5kaWYKKwogdXNp
bmcgbmFtZXNwYWNlIEpTQzsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtMTEwLDcgKzExNiwx
MSBAQCBib29sIEpTRE9NV2luZG93QmFzZTo6c3VwcG9ydHNQcm9maWxpbmcoY29uc3QgSlNHbG9i
YWxPYmplY3QqIG9iamVjdCkKICAgICBpZiAoIXBhZ2UpCiAgICAgICAgIHJldHVybiBmYWxzZTsK
IAorI2lmIEVOQUJMRShJTlNQRUNUT1IpCiAgICAgcmV0dXJuIHBhZ2UtPmluc3BlY3RvckNvbnRy
b2xsZXIoKS0+cHJvZmlsZXJFbmFibGVkKCk7CisjZWxzZQorICAgIHJldHVybiBmYWxzZTsKKyNl
bmRpZiAvLyBFTkFCTEUoSU5TUEVDVE9SKQogI2VuZGlmCiB9CiAKQEAgLTE2Niw3ICsxNzYsNyBA
QCBib29sIEpTRE9NV2luZG93QmFzZTo6c2hvdWxkSW50ZXJydXB0U2NyaXB0QmVmb3JlVGltZW91
dChjb25zdCBKU0dsb2JhbE9iamVjdCogbwogICAgICAgICByZXR1cm4gdHJ1ZTsKIAogI2lmIFBM
QVRGT1JNKElPUykKLSAgICBpZiAocGFnZS0+Y2hyb21lKCkuY2xpZW50KCktPmlzU3RvcHBpbmco
KSkKKyAgICBpZiAocGFnZS0+Y2hyb21lKCkuY2xpZW50KCkuaXNTdG9wcGluZygpKQogICAgICAg
ICByZXR1cm4gdHJ1ZTsKICNlbmRpZgogCkBAIC0yMDIsMTcgKzIxMiw0NCBAQCBWTSogSlNET01X
aW5kb3dCYXNlOjpjb21tb25WTSgpCiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKIAor
I2lmICFQTEFURk9STShJT1MpCiAgICAgc3RhdGljIFZNKiB2bSA9IDA7CisjZWxzZQorICAgIFZN
KiYgdm0gPSBjb21tb25WTUludGVybmFsKCk7CisjZW5kaWYKICAgICBpZiAoIXZtKSB7CiAgICAg
ICAgIFNjcmlwdENvbnRyb2xsZXI6OmluaXRpYWxpemVUaHJlYWRpbmcoKTsKICAgICAgICAgdm0g
PSBWTTo6Y3JlYXRlTGVha2VkKExhcmdlSGVhcCkubGVha1JlZigpOworI2lmIFBMQVRGT1JNKElP
UykKKyAgICAgICAgUGFzc093blB0cjxXZWJTYWZlR0NBY3Rpdml0eUNhbGxiYWNrPiBhY3Rpdml0
eUNhbGxiYWNrID0gV2ViU2FmZUdDQWN0aXZpdHlDYWxsYmFjazo6Y3JlYXRlKCZ2bS0+aGVhcCk7
CisgICAgICAgIHZtLT5oZWFwLnNldEFjdGl2aXR5Q2FsbGJhY2soYWN0aXZpdHlDYWxsYmFjayk7
CisgICAgICAgIFBhc3NPd25QdHI8V2ViU2FmZUluY3JlbWVudGFsU3dlZXBlcj4gaW5jcmVtZW50
YWxTd2VlcGVyID0gV2ViU2FmZUluY3JlbWVudGFsU3dlZXBlcjo6Y3JlYXRlKCZ2bS0+aGVhcCk7
CisgICAgICAgIHZtLT5oZWFwLnNldEluY3JlbWVudGFsU3dlZXBlcihpbmNyZW1lbnRhbFN3ZWVw
ZXIpOworICAgICAgICB2bS0+bWFrZVVzYWJsZUZyb21NdWx0aXBsZVRocmVhZHMoKTsKKyAgICAg
ICAgdm0tPmhlYXAubWFjaGluZVRocmVhZHMoKS5hZGRDdXJyZW50VGhyZWFkKCk7CisjZWxzZQog
ICAgICAgICB2bS0+ZXhjbHVzaXZlVGhyZWFkID0gY3VycmVudFRocmVhZCgpOworI2VuZGlmIC8v
ICFQTEFURk9STShJT1MpCiAgICAgICAgIGluaXROb3JtYWxXb3JsZENsaWVudERhdGEodm0pOwog
ICAgIH0KIAogICAgIHJldHVybiB2bTsKIH0KIAorI2lmIFBMQVRGT1JNKElPUykKK2Jvb2wgSlNE
T01XaW5kb3dCYXNlOjpjb21tb25WTUV4aXN0cygpCit7CisgICAgcmV0dXJuIGNvbW1vblZNSW50
ZXJuYWwoKTsKK30KKworVk0qJiBKU0RPTVdpbmRvd0Jhc2U6OmNvbW1vblZNSW50ZXJuYWwoKQor
eworICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisgICAgc3RhdGljIFZNKiBjb21tb25WTTsK
KyAgICByZXR1cm4gY29tbW9uVk07Cit9CisjZW5kaWYKKwogLy8gSlNET01HbG9iYWxPYmplY3Qq
IGlzIGlnbm9yZWQsIGFjY2Vzc2luZyBhIHdpbmRvdyBpbiBhbnkgY29udGV4dCB3aWxsCiAvLyB1
c2UgdGhhdCBET01XaW5kb3cncyBwcm90b3R5cGUgY2hhaW4uCiBKU1ZhbHVlIHRvSlMoRXhlY1N0
YXRlKiBleGVjLCBKU0RPTUdsb2JhbE9iamVjdCosIERPTVdpbmRvdyogZG9tV2luZG93KQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dDdXN0b20uY3Bw
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dDdXN0b20uY3BwCmluZGV4
IDMxYTNiZDJjMThjNGIzNmVhN2U2ZjJmYTc2MmEwNGE1NWU2MjAzOTQuLmY5MTE4ZjM5YWU3MGJi
ZmI4MjRmODA0MzE1OTYyYjIzZDg0NTBjYWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTRE9NV2luZG93Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU0RPTVdpbmRvd0N1c3RvbS5jcHAKQEAgLTQxLDYgKzQxLDExIEBACiAjaW5jbHVk
ZSAiSlNTaGFyZWRXb3JrZXIuaCIKICNlbmRpZgogCisjaWYgRU5BQkxFKElPU19UT1VDSF9FVkVO
VFMpCisjaW5jbHVkZSAiSlNUb3VjaENvbnN0cnVjdG9yLmgiCisjaW5jbHVkZSAiSlNUb3VjaExp
c3RDb25zdHJ1Y3Rvci5oIgorI2VuZGlmCisKICNpZiBFTkFCTEUoV0VCX0FVRElPKQogI2luY2x1
ZGUgIkpTQXVkaW9Db250ZXh0LmgiCiAjZW5kaWYKQEAgLTQ1Miw2ICs0NTcsMTggQEAgSlNWYWx1
ZSBKU0RPTVdpbmRvdzo6aW1hZ2UoRXhlY1N0YXRlKiBleGVjKSBjb25zdAogICAgIHJldHVybiBn
ZXRET01Db25zdHJ1Y3RvcjxKU0ltYWdlQ29uc3RydWN0b3I+KGV4ZWMtPnZtKCksIHRoaXMpOwog
fQogCisjaWYgRU5BQkxFKElPU19UT1VDSF9FVkVOVFMpCitKU1ZhbHVlIEpTRE9NV2luZG93Ojp0
b3VjaChFeGVjU3RhdGUqIGV4ZWMpIGNvbnN0Cit7CisgICAgcmV0dXJuIGdldERPTUNvbnN0cnVj
dG9yPEpTVG91Y2hDb25zdHJ1Y3Rvcj4oZXhlYy0+dm0oKSwgdGhpcyk7Cit9CisKK0pTVmFsdWUg
SlNET01XaW5kb3c6OnRvdWNoTGlzdChFeGVjU3RhdGUqIGV4ZWMpIGNvbnN0Cit7CisgICAgcmV0
dXJuIGdldERPTUNvbnN0cnVjdG9yPEpTVG91Y2hMaXN0Q29uc3RydWN0b3I+KGV4ZWMtPnZtKCks
IHRoaXMpOworfQorI2VuZGlmCisKIC8vIEN1c3RvbSBmdW5jdGlvbnMKIAogSlNWYWx1ZSBKU0RP
TVdpbmRvdzo6b3BlbihFeGVjU3RhdGUqIGV4ZWMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU0RldmljZU9yaWVudGF0aW9uRXZlbnRDdXN0b20uY3BwIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNEZXZpY2VPcmllbnRhdGlvbkV2ZW50Q3VzdG9tLmNwcApp
bmRleCA2NWVjY2IzYjk0NTM0YzY4MDYxZDBmZTRkMDNjYjVkOWMwOTNhYmMwLi44NmRkYzk2YWE3
YWQzNzNiYTQ5NWFmYzhiZTZhNWJjMDMyNTVjNzQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU0RldmljZU9yaWVudGF0aW9uRXZlbnRDdXN0b20uY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRGV2aWNlT3JpZW50YXRpb25FdmVudEN1c3RvbS5j
cHAKQEAgLTYwLDYgKzYwLDI1IEBAIEpTVmFsdWUgSlNEZXZpY2VPcmllbnRhdGlvbkV2ZW50Ojpn
YW1tYShFeGVjU3RhdGUqKSBjb25zdAogICAgIHJldHVybiBqc051bWJlcihpbXAub3JpZW50YXRp
b24oKS0+Z2FtbWEoKSk7CiB9CiAKKyNpZiBQTEFURk9STShJT1MpCitKU1ZhbHVlIEpTRGV2aWNl
T3JpZW50YXRpb25FdmVudDo6d2Via2l0Q29tcGFzc0hlYWRpbmcoRXhlY1N0YXRlKikgY29uc3QK
K3sKKyAgICBEZXZpY2VPcmllbnRhdGlvbkV2ZW50JiBpbXAgPSBpbXBsKCk7CisgICAgaWYgKCFp
bXAub3JpZW50YXRpb24oKS0+Y2FuUHJvdmlkZUNvbXBhc3NIZWFkaW5nKCkpCisgICAgICAgIHJl
dHVybiBqc051bGwoKTsKKyAgICByZXR1cm4ganNOdW1iZXIoaW1wLm9yaWVudGF0aW9uKCktPmNv
bXBhc3NIZWFkaW5nKCkpOworfQorCitKU1ZhbHVlIEpTRGV2aWNlT3JpZW50YXRpb25FdmVudDo6
d2Via2l0Q29tcGFzc0FjY3VyYWN5KEV4ZWNTdGF0ZSopIGNvbnN0Cit7CisgICAgRGV2aWNlT3Jp
ZW50YXRpb25FdmVudCYgaW1wID0gaW1wbCgpOworICAgIGlmICghaW1wLm9yaWVudGF0aW9uKCkt
PmNhblByb3ZpZGVDb21wYXNzQWNjdXJhY3koKSkKKyAgICAgICAgcmV0dXJuIGpzTnVsbCgpOwor
ICAgIHJldHVybiBqc051bWJlcihpbXAub3JpZW50YXRpb24oKS0+Y29tcGFzc0FjY3VyYWN5KCkp
OworfQorI2VuZGlmCisKKyNpZiAhUExBVEZPUk0oSU9TKQogSlNWYWx1ZSBKU0RldmljZU9yaWVu
dGF0aW9uRXZlbnQ6OmFic29sdXRlKEV4ZWNTdGF0ZSopIGNvbnN0CiB7CiAgICAgRGV2aWNlT3Jp
ZW50YXRpb25FdmVudCYgaW1wID0gaW1wbCgpOwpAQCAtNjcsNiArODYsNyBAQCBKU1ZhbHVlIEpT
RGV2aWNlT3JpZW50YXRpb25FdmVudDo6YWJzb2x1dGUoRXhlY1N0YXRlKikgY29uc3QKICAgICAg
ICAgcmV0dXJuIGpzTnVsbCgpOwogICAgIHJldHVybiBqc0Jvb2xlYW4oaW1wLm9yaWVudGF0aW9u
KCktPmFic29sdXRlKCkpOwogfQorI2VuZGlmCiAKIEpTVmFsdWUgSlNEZXZpY2VPcmllbnRhdGlv
bkV2ZW50Ojppbml0RGV2aWNlT3JpZW50YXRpb25FdmVudChFeGVjU3RhdGUqIGV4ZWMpCiB7CkBA
IC04MSw5ICsxMDEsMTcgQEAgSlNWYWx1ZSBKU0RldmljZU9yaWVudGF0aW9uRXZlbnQ6OmluaXRE
ZXZpY2VPcmllbnRhdGlvbkV2ZW50KEV4ZWNTdGF0ZSogZXhlYykKICAgICBkb3VibGUgYmV0YSA9
IGV4ZWMtPmFyZ3VtZW50KDQpLnRvTnVtYmVyKGV4ZWMpOwogICAgIGJvb2wgZ2FtbWFQcm92aWRl
ZCA9ICFleGVjLT5hcmd1bWVudCg1KS5pc1VuZGVmaW5lZE9yTnVsbCgpOwogICAgIGRvdWJsZSBn
YW1tYSA9IGV4ZWMtPmFyZ3VtZW50KDUpLnRvTnVtYmVyKGV4ZWMpOworI2lmIFBMQVRGT1JNKElP
UykKKyAgICBib29sIGNvbXBhc3NIZWFkaW5nUHJvdmlkZWQgPSAhZXhlYy0+YXJndW1lbnQoNiku
aXNVbmRlZmluZWRPck51bGwoKTsKKyAgICBkb3VibGUgY29tcGFzc0hlYWRpbmcgPSBleGVjLT5h
cmd1bWVudCg2KS50b051bWJlcihleGVjKTsKKyAgICBib29sIGNvbXBhc3NBY2N1cmFjeVByb3Zp
ZGVkID0gIWV4ZWMtPmFyZ3VtZW50KDcpLmlzVW5kZWZpbmVkT3JOdWxsKCk7CisgICAgZG91Ymxl
IGNvbXBhc3NBY2N1cmFjeSA9IGV4ZWMtPmFyZ3VtZW50KDcpLnRvTnVtYmVyKGV4ZWMpOworICAg
IFJlZlB0cjxEZXZpY2VPcmllbnRhdGlvbkRhdGE+IG9yaWVudGF0aW9uID0gRGV2aWNlT3JpZW50
YXRpb25EYXRhOjpjcmVhdGUoYWxwaGFQcm92aWRlZCwgYWxwaGEsIGJldGFQcm92aWRlZCwgYmV0
YSwgZ2FtbWFQcm92aWRlZCwgZ2FtbWEsIGNvbXBhc3NIZWFkaW5nUHJvdmlkZWQsIGNvbXBhc3NI
ZWFkaW5nLCBjb21wYXNzQWNjdXJhY3lQcm92aWRlZCwgY29tcGFzc0FjY3VyYWN5KTsKKyNlbHNl
CiAgICAgYm9vbCBhYnNvbHV0ZVByb3ZpZGVkID0gIWV4ZWMtPmFyZ3VtZW50KDYpLmlzVW5kZWZp
bmVkT3JOdWxsKCk7CiAgICAgYm9vbCBhYnNvbHV0ZSA9IGV4ZWMtPmFyZ3VtZW50KDYpLnRvQm9v
bGVhbihleGVjKTsKICAgICBSZWZQdHI8RGV2aWNlT3JpZW50YXRpb25EYXRhPiBvcmllbnRhdGlv
biA9IERldmljZU9yaWVudGF0aW9uRGF0YTo6Y3JlYXRlKGFscGhhUHJvdmlkZWQsIGFscGhhLCBi
ZXRhUHJvdmlkZWQsIGJldGEsIGdhbW1hUHJvdmlkZWQsIGdhbW1hLCBhYnNvbHV0ZVByb3ZpZGVk
LCBhYnNvbHV0ZSk7CisjZW5kaWYKICAgICBpbXBsKCkuaW5pdERldmljZU9yaWVudGF0aW9uRXZl
bnQodHlwZSwgYnViYmxlcywgY2FuY2VsYWJsZSwgb3JpZW50YXRpb24uZ2V0KCkpOwogICAgIHJl
dHVybiBqc1VuZGVmaW5lZCgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNNYWluVGhyZWFkRXhlY1N0YXRlLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU01haW5UaHJlYWRFeGVjU3RhdGUuaAppbmRleCAyZmE2NjI5YzQ4MmFmYTdjNzA3N2RlOGFi
ZjNmZDk0YzFmNjk0NDQ5Li5mMmI0MDA3ZGZhMzU4ZDA2MDY1ZjllOTdiYTA2YzhkZjNlYmY0MmEx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU01haW5UaHJlYWRFeGVj
U3RhdGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU01haW5UaHJlYWRFeGVj
U3RhdGUuaApAQCAtMzAsNiArMzAsMTAgQEAKICNpbmNsdWRlIDxydW50aW1lL0NvbXBsZXRpb24u
aD4KICNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgogCisjaWYgUExBVEZPUk0oSU9TKQorI2lu
Y2x1ZGUgIldlYkNvcmVUaHJlYWQuaCIKKyNlbmRpZgorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
IGNsYXNzIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTVG91Y2hDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNUb3VjaEN1c3RvbS5jcHAKaW5kZXggODBlMjFmNjNiODFlOTdlMTBiYTQ5
OWZmMzI1ZGRjNzhlOTM5OGM4YS4uZDk0MzRjMGYyYzBhOWM2ZGQ0YWZkYzgyNWU0ODY0ZDRjMTA4
ZTEwNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNUb3VjaEN1c3Rv
bS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNUb3VjaEN1c3RvbS5jcHAK
QEAgLTI1LDYgKzI1LDcgQEAKIAogI2luY2x1ZGUgImNvbmZpZy5oIgogCisjaWYgIVBMQVRGT1JN
KElPUykKICNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQogCiAjaW5jbHVkZSAiSlNUb3VjaC5oIgpA
QCAtNDYsMyArNDcsNCBAQCBKU1ZhbHVlIHRvSlNOZXdseUNyZWF0ZWQoRXhlY1N0YXRlKiBleGVj
LCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBUb3VjaAogfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQogCiAjZW5kaWYgLy8gRU5BQkxFKFRPVUNIX0VWRU5UUykKKyNlbmRpZiAvLyAhUExB
VEZPUk0oSU9TKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNUb3Vj
aExpc3RDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNUb3VjaExpc3RD
dXN0b20uY3BwCmluZGV4IGI2MGVmZGI5NWIyZGY4YWZhMTExNDZkZGY3ZTVmZGU2OGFmYzIyY2Qu
LjExMzE4YzAwNTM5MmVjNGQ1ZWZjZTI4ZjQzZmY1ZThiODY5ZDkzZTQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTVG91Y2hMaXN0Q3VzdG9tLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1RvdWNoTGlzdEN1c3RvbS5jcHAKQEAgLTI1LDYgKzI1
LDcgQEAKIAogI2luY2x1ZGUgImNvbmZpZy5oIgogCisjaWYgIVBMQVRGT1JNKElPUykKICNpZiBF
TkFCTEUoVE9VQ0hfRVZFTlRTKQogCiAjaW5jbHVkZSAiSlNUb3VjaExpc3QuaCIKQEAgLTQ2LDMg
KzQ3LDQgQEAgSlNWYWx1ZSB0b0pTTmV3bHlDcmVhdGVkKEV4ZWNTdGF0ZSogZXhlYywgSlNET01H
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgVG91Y2gKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
IAogI2VuZGlmIC8vIEVOQUJMRShUT1VDSF9FVkVOVFMpCisjZW5kaWYgLy8gIVBMQVRGT1JNKElP
UykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1BhZ2VTY3JpcHREZWJ1
Z1NlcnZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9QYWdlU2NyaXB0RGVidWdT
ZXJ2ZXIuY3BwCmluZGV4IDIxNTU3N2QyN2MxMjBmYTg2ZTJkZjNjNWQ0MjAxNTIwYmUxY2RhYjYu
LmMzZmI3ZGRjMTA1MWJlMzVlNGQ2NmVjZmIxZmQzZjU1MTE0MDc1YWUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1BhZ2VTY3JpcHREZWJ1Z1NlcnZlci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvUGFnZVNjcmlwdERlYnVnU2VydmVyLmNwcApAQCAt
MTQ4LDYgKzE0OCwxMSBAQCB2b2lkIFBhZ2VTY3JpcHREZWJ1Z1NlcnZlcjo6ZGlkQ29udGludWUo
SlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQogewogICAgIC8vIFBhZ2UgY2FuIGJl
IG51bGwgaWYgd2UgYXJlIGNvbnRpbnVpbmcgYmVjYXVzZSB0aGUgUGFnZSBjbG9zZWQuCiAgICAg
UGFnZSogcGFnZSA9IHRvUGFnZShnbG9iYWxPYmplY3QpOworI2lmIFBMQVRGT1JNKElPUykKKyAg
ICAvLyBGSVhNRTogQ2FuIHRoaXMgaGFwcGVuIGluIG9wZW4gc291cmNlIHRvbywgb3IgaXMgdGhp
cyBpT1MgKG11bHRpLXRocmVhZGVkKSBvbmx5PworICAgIGlmICghcGFnZSkKKyAgICAgICAgcmV0
dXJuOworI2VuZGlmCiAgICAgQVNTRVJUKCFwYWdlIHx8IHBhZ2UgPT0gbV9wYXVzZWRQYWdlKTsK
IAogICAgIG1fcGF1c2VkUGFnZSA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9TY3JpcHRDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L1NjcmlwdENvbnRyb2xsZXIuY3BwCmluZGV4IDAwN2IwMzJjNzc3YTQ3Zjc1YzVlOWY5YzQ5N2I5
MDExOGY0MWM0ZWUuLjcxOGY4ODg0MzBhN2EzN2YzMTRlNjhhNWM5OTEzODA0YjY3MzBmYTYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXIuY3BwCkBA
IC02MSw4ICs2MSwxMCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHZvaWQgU2NyaXB0Q29udHJv
bGxlcjo6aW5pdGlhbGl6ZVRocmVhZGluZygpCiB7CisjaWYgIVBMQVRGT1JNKElPUykKICAgICBK
U0M6OmluaXRpYWxpemVUaHJlYWRpbmcoKTsKICAgICBXVEY6OmluaXRpYWxpemVNYWluVGhyZWFk
KCk7CisjZW5kaWYKIH0KIAogU2NyaXB0Q29udHJvbGxlcjo6U2NyaXB0Q29udHJvbGxlcihGcmFt
ZSYgZnJhbWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRE
ZWJ1Z1NlcnZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHREZWJ1Z1Nl
cnZlci5jcHAKaW5kZXggNDJhYTU5ZWNmODc2NzI5YTE3ODJjZTExODFmZDJhNDY3YTRkMzhjNC4u
NzFjNmEzMTQyZDNlOTQ2ZWQ5Y2Y2ZWM0MWY3ZmIwYjJkNjQ2NzU5ZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0RGVidWdTZXJ2ZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdERlYnVnU2VydmVyLmNwcApAQCAtMzQsNiArMzQs
NyBAQAogI2luY2x1ZGUgIlNjcmlwdERlYnVnU2VydmVyLmgiCiAKICNpbmNsdWRlICJDb250ZW50
U2VhcmNoVXRpbHMuaCIKKyNpbmNsdWRlICJFdmVudExvb3AuaCIKICNpbmNsdWRlICJGcmFtZS5o
IgogI2luY2x1ZGUgIkpTRE9NV2luZG93Q3VzdG9tLmgiCiAjaW5jbHVkZSAiSlNKYXZhU2NyaXB0
Q2FsbEZyYW1lLmgiCkBAIC00OSw2ICs1MCwxMSBAQAogI2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFk
Lmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKKyNpZiBQTEFURk9STShJT1Mp
CisjaW5jbHVkZSAiSlNET01XaW5kb3dCYXNlLmgiCisjaW5jbHVkZSAiV2ViQ29yZVRocmVhZElu
dGVybmFsLmgiCisjZW5kaWYKKwogdXNpbmcgbmFtZXNwYWNlIEpTQzsKIAogbmFtZXNwYWNlIFdl
YkNvcmUgewpAQCAtMjk1LDExICszMDEsMjcgQEAgdm9pZCBTY3JpcHREZWJ1Z1NlcnZlcjo6aGFu
ZGxlUGF1c2UoRGVidWdnZXI6OlJlYXNvbkZvclBhdXNlLCBKU0dsb2JhbE9iamVjdCogdm0KIAog
ICAgIFRpbWVyQmFzZTo6ZmlyZVRpbWVyc0luTmVzdGVkRXZlbnRMb29wKCk7CiAKKyNpZiBQTEFU
Rk9STShJT1MpCisgICAgLy8gT24gaU9TLCBydW5uaW5nIGFuIEV2ZW50TG9vcCBjYXVzZXMgdXMg
dG8gcnVuIGEgbmVzdGVkIFdlYlJ1bkxvb3AuCisgICAgLy8gU2luY2UgdGhlIFdlYlRocmVhZCBp
cyBhdXRvcmVsZWFzZWQgYXQgdGhlIGVuZCBvZiBydW4gbG9vcCBpdGVyYXRpb25zCisgICAgLy8g
d2UgbmVlZCB0byBncmFjZWZ1bGx5IGhhbmRsZSByZWxlYXNpbmcgYW5kIHJlYWNxdWlyaW5nIHRo
ZSBsb2NrLgorICAgIEFTU0VSVChXZWJUaHJlYWRJc0xvY2tlZE9yRGlzYWJsZWQoKSk7CisgICAg
eworICAgICAgICBpZiAoV2ViVGhyZWFkSXNFbmFibGVkKCkpCisgICAgICAgICAgICBKU0M6OkpT
TG9jazo6RHJvcEFsbExvY2tzIGRyb3BBbGxMb2NrcyhXZWJDb3JlOjpKU0RPTVdpbmRvd0Jhc2U6
OmNvbW1vblZNKCksIEpTQzo6SlNMb2NrOjpEcm9wQWxsTG9ja3M6OkFsd2F5c0Ryb3BMb2Nrcyk7
CisgICAgICAgIFdlYlJ1bkxvb3BFbmFibGVOZXN0ZWQoKTsKKyNlbmRpZgorCiAgICAgbV9ydW5u
aW5nTmVzdGVkTWVzc2FnZUxvb3AgPSB0cnVlOwogICAgIG1fZG9uZVByb2Nlc3NpbmdEZWJ1Z2dl
ckV2ZW50cyA9IGZhbHNlOwogICAgIHJ1bkV2ZW50TG9vcFdoaWxlUGF1c2VkKCk7CiAgICAgbV9y
dW5uaW5nTmVzdGVkTWVzc2FnZUxvb3AgPSBmYWxzZTsKIAorI2lmIFBMQVRGT1JNKElPUykKKyAg
ICAgICAgV2ViUnVuTG9vcERpc2FibGVOZXN0ZWQoKTsKKyAgICB9CisgICAgQVNTRVJUKFdlYlRo
cmVhZElzTG9ja2VkT3JEaXNhYmxlZCgpKTsKKyNlbmRpZgogICAgIGRpZENvbnRpbnVlKHZtRW50
cnlHbG9iYWxPYmplY3QpOwogICAgIGRpc3BhdGNoRnVuY3Rpb25Ub0xpc3RlbmVycygmU2NyaXB0
RGVidWdTZXJ2ZXI6OmRpc3BhdGNoRGlkQ29udGludWUsIHZtRW50cnlHbG9iYWxPYmplY3QpOwog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvaW9zL1RvdWNoQ29uc3Ry
dWN0b3JzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL2lvcy9Ub3VjaENvbnN0cnVj
dG9ycy5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNzY3YjE3OGYzNDBlYzFhOGUzZmFmZDkzM2I3NzNkYWUxNjkx
M2U0OAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL2lvcy9U
b3VjaENvbnN0cnVjdG9ycy5jcHAKQEAgLTAsMCArMSwzMyBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNs
dWRlICJjb25maWcuaCIKKworI2lmIFBMQVRGT1JNKElPUykgJiYgRU5BQkxFKFRPVUNIX0VWRU5U
UykKKworI2luY2x1ZGUgPFdlYktpdEFkZGl0aW9ucy9KU1RvdWNoQ29uc3RydWN0b3IuY3BwPgor
I2luY2x1ZGUgPFdlYktpdEFkZGl0aW9ucy9KU1RvdWNoTGlzdENvbnN0cnVjdG9yLmNwcD4KKwor
I2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9vYmpjL0RPTS5tbSBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL29iamMvRE9NLm1tCmluZGV4IDEyODY0YjkwZTY2ODQ1
ZWMzZDhmNzBhYmQ5ZWJlYmY1NzVkZTJhY2MuLjIyYmQ5ZDNhYjVhNzg3MzRkN2FlNjlkZjQxYjFj
MDM1OTZhNDEyMjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL29iamMvRE9N
Lm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL29iamMvRE9NLm1tCkBAIC01Myw2ICs1
MywyMiBAQAogI2ltcG9ydCA8SmF2YVNjcmlwdENvcmUvQVBJQ2FzdC5oPgogI2ltcG9ydCA8d3Rm
L0hhc2hNYXAuaD4KIAorI2lmIFBMQVRGT1JNKElPUykKKyNpbXBvcnQgIkZvY3VzQ29udHJvbGxl
ci5oIgorI2ltcG9ydCAiSFRNTExpbmtFbGVtZW50LmgiCisjaW1wb3J0ICJLZXlib2FyZEV2ZW50
LmgiCisjaW1wb3J0ICJVUkwuaCIKKyNpbXBvcnQgIk1lZGlhTGlzdC5oIgorI2ltcG9ydCAiTWVk
aWFRdWVyeUV2YWx1YXRvci5oIgorI2ltcG9ydCAiTm9kZVJlbmRlclN0eWxlLmgiCisjaW1wb3J0
ICJQYWdlLmgiCisjaW1wb3J0ICJSZW5kZXJWaWV3LmgiCisjaW1wb3J0ICJUb3VjaC5oIgorI2lt
cG9ydCAiV0FLQXBwS2l0U3R1YnMuaCIKKyNpbXBvcnQgIldBS1dpbmRvdy5oIgorI2ltcG9ydCAi
V2ViQ29yZVRocmVhZE1lc3NhZ2UuaCIKKyNlbmRpZgorCiB1c2luZyBuYW1lc3BhY2UgSlNDOwog
dXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKQEAgLTE3Niw4ICsxOTIsODAgQEAgc3RhdGljIE5T
QXJyYXkgKmtpdChjb25zdCBWZWN0b3I8SW50UmVjdD4mIHJlY3RzKQogICAgIHJldHVybiBhcnJh
eTsKIH0KIAorI2lmIFBMQVRGT1JNKElPUykKK3N0YXRpYyBXS1F1YWQgd2tRdWFkRnJvbUZsb2F0
UXVhZChjb25zdCBGbG9hdFF1YWQmIGluUXVhZCkKK3sKKyAgICBXS1F1YWQgIHRoZVF1YWQ7Cisg
ICAgdGhlUXVhZC5wMSA9IGluUXVhZC5wMSgpOworICAgIHRoZVF1YWQucDIgPSBpblF1YWQucDIo
KTsKKyAgICB0aGVRdWFkLnAzID0gaW5RdWFkLnAzKCk7CisgICAgdGhlUXVhZC5wNCA9IGluUXVh
ZC5wNCgpOworICAgIAorICAgIHJldHVybiB0aGVRdWFkOworfQorCitzdGF0aWMgTlNBcnJheSAq
a2l0KGNvbnN0IFZlY3RvcjxGbG9hdFF1YWQ+JiBxdWFkcykKK3sKKyAgICBzaXplX3Qgc2l6ZSA9
IHF1YWRzLnNpemUoKTsKKyAgICBOU011dGFibGVBcnJheSAqYXJyYXkgPSBbTlNNdXRhYmxlQXJy
YXkgYXJyYXlXaXRoQ2FwYWNpdHk6c2l6ZV07CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBz
aXplOyArK2kpIHsKKyAgICAgICAgV0tRdWFkT2JqZWN0KiBxdWFkT2JqZWN0ID0gW1tXS1F1YWRP
YmplY3QgYWxsb2NdIGluaXRXaXRoUXVhZDp3a1F1YWRGcm9tRmxvYXRRdWFkKHF1YWRzW2ldKV07
CisgICAgICAgIFthcnJheSBhZGRPYmplY3Q6cXVhZE9iamVjdF07CisgICAgICAgIFtxdWFkT2Jq
ZWN0IHJlbGVhc2VdOworICAgIH0KKyAgICByZXR1cm4gYXJyYXk7Cit9CisKK3N0YXRpYyBpbmxp
bmUgZmxvYXQgbWluNChmbG9hdCBhLCBmbG9hdCBiLCBmbG9hdCBjLCBmbG9hdCBkKQoreworICAg
IHJldHVybiBzdGQ6Om1pbihzdGQ6Om1pbihhLCBiKSwgc3RkOjptaW4oYywgZCkpOworfQorCitz
dGF0aWMgaW5saW5lIGZsb2F0IG1heDQoZmxvYXQgYSwgZmxvYXQgYiwgZmxvYXQgYywgZmxvYXQg
ZCkKK3sKKyAgICByZXR1cm4gc3RkOjptYXgoc3RkOjptYXgoYSwgYiksIHN0ZDo6bWF4KGMsIGQp
KTsKK30KKworc3RhdGljIGlubGluZSBXS1F1YWQgZW1wdHlRdWFkKCkKK3sKKyAgICBXS1F1YWQg
emVyb1F1YWQgPSB7IENHUG9pbnRaZXJvLCBDR1BvaW50WmVybywgQ0dQb2ludFplcm8sIENHUG9p
bnRaZXJvIH07CisgICAgcmV0dXJuIHplcm9RdWFkOworfQorI2VuZGlmCisKIH0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKIAorI2lmIFBMQVRGT1JNKElPUykKK0BpbXBsZW1lbnRhdGlvbiBXS1F1YWRP
YmplY3QKKworLSAoaWQpaW5pdFdpdGhRdWFkOihXS1F1YWQpcXVhZAoreworICAgIGlmICgoc2Vs
ZiA9IFtzdXBlciBpbml0XSkpCisgICAgeworICAgICAgICBfcXVhZCA9IHF1YWQ7CisgICAgfQor
ICAgIHJldHVybiBzZWxmOworfQorCistIChXS1F1YWQpcXVhZAoreworICAgIHJldHVybiBfcXVh
ZDsKK30KKworLSAoQ0dSZWN0KWJvdW5kaW5nQm94Cit7CisgICAgZmxvYXQgbGVmdCAgICAgID0g
V2ViQ29yZTo6bWluNChfcXVhZC5wMS54LCBfcXVhZC5wMi54LCBfcXVhZC5wMy54LCBfcXVhZC5w
NC54KTsKKyAgICBmbG9hdCB0b3AgICAgICAgPSBXZWJDb3JlOjptaW40KF9xdWFkLnAxLnksIF9x
dWFkLnAyLnksIF9xdWFkLnAzLnksIF9xdWFkLnA0LnkpOworICAgIAorICAgIGZsb2F0IHJpZ2h0
ICAgICA9IFdlYkNvcmU6Om1heDQoX3F1YWQucDEueCwgX3F1YWQucDIueCwgX3F1YWQucDMueCwg
X3F1YWQucDQueCk7CisgICAgZmxvYXQgYm90dG9tICAgID0gV2ViQ29yZTo6bWF4NChfcXVhZC5w
MS55LCBfcXVhZC5wMi55LCBfcXVhZC5wMy55LCBfcXVhZC5wNC55KTsKKyAgICAKKyAgICByZXR1
cm4gQ0dSZWN0TWFrZShsZWZ0LCB0b3AsIHJpZ2h0IC0gbGVmdCwgYm90dG9tIC0gdG9wKTsKK30K
KworQGVuZAorI2VuZGlmCisKIEBpbXBsZW1lbnRhdGlvbiBET01Ob2RlIChXZWJDb3JlSW50ZXJu
YWwpCiAKICNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBwdXNoCkBAIC0yNjMsMTMgKzM1MSwyMSBA
QCBpZCA8RE9NRXZlbnRUYXJnZXQ+IGtpdChXZWJDb3JlOjpFdmVudFRhcmdldCogZXZlbnRUYXJn
ZXQpCiAKIEBpbXBsZW1lbnRhdGlvbiBET01Ob2RlIChET01Ob2RlRXh0ZW5zaW9ucykKIAorI2lm
IFBMQVRGT1JNKElPUykKKy0gKENHUmVjdClib3VuZGluZ0JveAorI2Vsc2UKIC0gKE5TUmVjdCli
b3VuZGluZ0JveAorI2VuZGlmCiB7CiAgICAgLy8gRklYTUU6IENvdWxkIHdlIG1vdmUgdGhpcyBm
dW5jdGlvbiB0byBXZWJDb3JlOjpOb2RlIGFuZCBhdXRvZ2VuZXJhdGU/CiAgICAgY29yZShzZWxm
KS0+ZG9jdW1lbnQoKS51cGRhdGVMYXlvdXRJZ25vcmVQZW5kaW5nU3R5bGVzaGVldHMoKTsKICAg
ICBXZWJDb3JlOjpSZW5kZXJPYmplY3QqIHJlbmRlcmVyID0gY29yZShzZWxmKS0+cmVuZGVyZXIo
KTsKICAgICBpZiAoIXJlbmRlcmVyKQorI2lmIFBMQVRGT1JNKElPUykKKyAgICAgICAgcmV0dXJu
IENHUmVjdFplcm87CisjZWxzZQogICAgICAgICByZXR1cm4gTlNaZXJvUmVjdDsKKyNlbmRpZgog
ICAgIHJldHVybiByZW5kZXJlci0+YWJzb2x1dGVCb3VuZGluZ0JveFJlY3QoKTsKIH0KIApAQCAt
Mjc4LDEwICszNzQsMTgwIEBAIGlkIDxET01FdmVudFRhcmdldD4ga2l0KFdlYkNvcmU6OkV2ZW50
VGFyZ2V0KiBldmVudFRhcmdldCkKICAgICByZXR1cm4gW3NlbGYgdGV4dFJlY3RzXTsKIH0KIAor
I2lmIFBMQVRGT1JNKElPUykKKy8vIHF1YWQgaW4gcGFnZSBjb29yZGluYXRlcywgdGFraW5nIHRy
YW5zZm9ybXMgaW50byBhY2NvdW50LiBjLmYuIC0gKE5TUmVjdClib3VuZGluZ0JveDsKKy0gKFdL
UXVhZClhYnNvbHV0ZVF1YWQKK3sKKyAgICByZXR1cm4gW3NlbGYgYWJzb2x1dGVRdWFkQW5kSW5z
aWRlRml4ZWRQb3NpdGlvbjowXTsKK30KKworLSAoV0tRdWFkKWFic29sdXRlUXVhZEFuZEluc2lk
ZUZpeGVkUG9zaXRpb246KEJPT0wgKilpbnNpZGVGaXhlZAoreworICAgIGNvcmUoc2VsZiktPmRv
Y3VtZW50KCkudXBkYXRlTGF5b3V0SWdub3JlUGVuZGluZ1N0eWxlc2hlZXRzKCk7CisgICAgV2Vi
Q29yZTo6UmVuZGVyT2JqZWN0ICpyZW5kZXJlciA9IGNvcmUoc2VsZiktPnJlbmRlcmVyKCk7Cisg
ICAgaWYgKHJlbmRlcmVyKSB7CisgICAgICAgIFZlY3RvcjxGbG9hdFF1YWQ+IHF1YWRzOworICAg
ICAgICBib29sIHdhc0ZpeGVkID0gZmFsc2U7CisgICAgICAgIHJlbmRlcmVyLT5hYnNvbHV0ZVF1
YWRzKHF1YWRzLCAmd2FzRml4ZWQpOworICAgICAgICBpZiAoaW5zaWRlRml4ZWQpCisgICAgICAg
ICAgICAqaW5zaWRlRml4ZWQgPSB3YXNGaXhlZDsKKworICAgICAgICBpZiAocXVhZHMuc2l6ZSgp
ID09IDApCisgICAgICAgICAgICByZXR1cm4gV2ViQ29yZTo6ZW1wdHlRdWFkKCk7CisgICAgICAg
IAorICAgICAgICBpZiAocXVhZHMuc2l6ZSgpID09IDEpCisgICAgICAgICAgICByZXR1cm4gd2tR
dWFkRnJvbUZsb2F0UXVhZChxdWFkc1swXSk7CisKKyAgICAgICAgRmxvYXRSZWN0IGJvdW5kaW5n
UmVjdCA9IHF1YWRzWzBdLmJvdW5kaW5nQm94KCk7CisgICAgICAgIGZvciAoc2l6ZV90IGkgPSAx
OyBpIDwgcXVhZHMuc2l6ZSgpOyArK2kpCisgICAgICAgICAgICBib3VuZGluZ1JlY3QudW5pdGUo
cXVhZHNbaV0uYm91bmRpbmdCb3goKSk7CisKKyAgICAgICAgcmV0dXJuIHdrUXVhZEZyb21GbG9h
dFF1YWQoYm91bmRpbmdSZWN0KTsKKyAgICB9CisKKyAgICByZXR1cm4gV2ViQ29yZTo6ZW1wdHlR
dWFkKCk7Cit9CisKKy8vIHRoaXMgbWV0aG9kIGlzIGxpa2UgLSAoQ0dSZWN0KWJvdW5kaW5nQm94
LCBidXQgaXQgYWNjb3VudHMgZm9yIGZvciB0cmFuc2Zvcm1zCistIChDR1JlY3QpYm91bmRpbmdC
b3hVc2luZ1RyYW5zZm9ybXMKK3sKKyAgICBjb3JlKHNlbGYpLT5kb2N1bWVudCgpLnVwZGF0ZUxh
eW91dElnbm9yZVBlbmRpbmdTdHlsZXNoZWV0cygpOworICAgIFdlYkNvcmU6OlJlbmRlck9iamVj
dCogcmVuZGVyZXIgPSBjb3JlKHNlbGYpLT5yZW5kZXJlcigpOworICAgIGlmICghcmVuZGVyZXIp
CisgICAgICAgIHJldHVybiBDR1JlY3RaZXJvOworICAgIHJldHVybiByZW5kZXJlci0+YWJzb2x1
dGVCb3VuZGluZ0JveFJlY3QodHJ1ZSk7Cit9CisKKy8vIHJldHVybnMgYXJyYXkgb2YgV0tRdWFk
T2JqZWN0CistIChOU0FycmF5ICopbGluZUJveFF1YWRzCit7CisgICAgY29yZShzZWxmKS0+ZG9j
dW1lbnQoKS51cGRhdGVMYXlvdXRJZ25vcmVQZW5kaW5nU3R5bGVzaGVldHMoKTsKKyAgICBXZWJD
b3JlOjpSZW5kZXJPYmplY3QgKnJlbmRlcmVyID0gY29yZShzZWxmKS0+cmVuZGVyZXIoKTsKKyAg
ICBpZiAocmVuZGVyZXIpIHsKKyAgICAgICAgVmVjdG9yPFdlYkNvcmU6OkZsb2F0UXVhZD4gcXVh
ZHM7CisgICAgICAgIHJlbmRlcmVyLT5hYnNvbHV0ZVF1YWRzKHF1YWRzKTsKKyAgICAgICAgcmV0
dXJuIGtpdChxdWFkcyk7CisgICAgfQorICAgIHJldHVybiBuaWw7Cit9CisKKy0gKEVsZW1lbnQg
KilfbGlua0VsZW1lbnQKK3sKKyAgICBXZWJDb3JlOjpOb2RlKiBub2RlID0gY29yZShzZWxmKTsK
KyAgICAKKyAgICB3aGlsZSAobm9kZSkgeworICAgICAgICBpZiAobm9kZS0+aXNMaW5rKCkpCisg
ICAgICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8V2ViQ29yZTo6RWxlbWVudCo+KG5vZGUpOwor
ICAgICAgICBub2RlID0gbm9kZS0+cGFyZW50Tm9kZSgpOworICAgIH0KKyAgICAKKyAgICByZXR1
cm4gMDsKK30KKworLSAoTlNVUkwgKilocmVmVVJMCit7CisgICAgRWxlbWVudCAqbGluaz0gW3Nl
bGYgX2xpbmtFbGVtZW50XTsKKyAgICBpZiAobGluaykKKyAgICAgICAgcmV0dXJuIGxpbmstPmRv
Y3VtZW50KCkuY29tcGxldGVVUkwoc3RyaXBMZWFkaW5nQW5kVHJhaWxpbmdIVE1MU3BhY2VzKGxp
bmstPmdldEF0dHJpYnV0ZShIVE1MTmFtZXM6OmhyZWZBdHRyKSkpOworICAgIAorICAgIHJldHVy
biBuaWw7Cit9CisKKy0gKE5TU3RyaW5nICopaHJlZlRhcmdldAoreworICAgIEVsZW1lbnQgKnRh
cmdldCA9IFtzZWxmIF9saW5rRWxlbWVudF07CisgICAgCisgICAgaWYodGFyZ2V0KSByZXR1cm4g
dGFyZ2V0LT5nZXRBdHRyaWJ1dGUoSFRNTE5hbWVzOjp0YXJnZXRBdHRyKTsKKyAgICAKKyAgICBy
ZXR1cm4gbmlsOworfQorCistIChDR1JlY3QpaHJlZkZyYW1lCit7CisgICAgUmVuZGVyT2JqZWN0
ICpyZW5kZXJlciA9IFtzZWxmIF9saW5rRWxlbWVudF0tPnJlbmRlcmVyKCk7CisgICAgCisgICAg
aWYocmVuZGVyZXIpIHJldHVybiByZW5kZXJlci0+YWJzb2x1dGVCb3VuZGluZ0JveFJlY3QoKTsK
KyAgICAKKyAgICByZXR1cm4gTlNaZXJvUmVjdDsKK30KKworLSAoTlNTdHJpbmcgKilocmVmTGFi
ZWwKK3sKKyAgICBFbGVtZW50ICpsaW5rPSBbc2VsZiBfbGlua0VsZW1lbnRdOworICAgIAorICAg
IGlmICghbGluaykgcmV0dXJuIG5pbDsKKyAgICAKKyAgICByZXR1cm4gbGluay0+dGV4dENvbnRl
bnQoKTsKK30KKworLSAoTlNTdHJpbmcgKilocmVmVGl0bGUKK3sKKyAgICBFbGVtZW50ICpsaW5r
PSBbc2VsZiBfbGlua0VsZW1lbnRdOworICAgIAorICAgIGlmICghbGluaykgcmV0dXJuIG5pbDsK
KyAgICAKKyAgICByZXR1cm4gbGluay0+ZG9jdW1lbnQoKS5kaXNwbGF5U3RyaW5nTW9kaWZpZWRC
eUVuY29kaW5nKHN0YXRpY19jYXN0PEhUTUxFbGVtZW50ICo+KGxpbmspLT50aXRsZSgpKTsKK30K
KworLSAoQ0dSZWN0KWJvdW5kaW5nRnJhbWUKK3sKKyAgICByZXR1cm4gW3NlbGYgYm91bmRpbmdC
b3hdOworfQorCistIChXS1F1YWQpaW5uZXJGcmFtZVF1YWQgICAgICAgLy8gdGFrZXMgdHJhbnNm
b3JtcyBpbnRvIGFjY291bnQKK3sKKyAgICBjb3JlKHNlbGYpLT5kb2N1bWVudCgpLnVwZGF0ZUxh
eW91dElnbm9yZVBlbmRpbmdTdHlsZXNoZWV0cygpOworICAgIFJlbmRlck9iamVjdCogcmVuZGVy
ZXIgPSBjb3JlKHNlbGYpLT5yZW5kZXJlcigpOworICAgIGlmICghcmVuZGVyZXIpCisgICAgICAg
IHJldHVybiBlbXB0eVF1YWQoKTsKKworICAgIFJlbmRlclN0eWxlJiBzdHlsZSA9IHJlbmRlcmVy
LT5zdHlsZSgpOworICAgIEludFJlY3QgYm91bmRpbmdCb3ggPSByZW5kZXJlci0+YWJzb2x1dGVC
b3VuZGluZ0JveFJlY3QodHJ1ZSAvKiB1c2UgdHJhbnNmb3JtcyovKTsKKworICAgIGJvdW5kaW5n
Qm94Lm1vdmUoc3R5bGUuYm9yZGVyTGVmdFdpZHRoKCksIHN0eWxlLmJvcmRlclRvcFdpZHRoKCkp
OworICAgIGJvdW5kaW5nQm94LnNldFdpZHRoKGJvdW5kaW5nQm94LndpZHRoKCkgLSBzdHlsZS5i
b3JkZXJMZWZ0V2lkdGgoKSAtIHN0eWxlLmJvcmRlclJpZ2h0V2lkdGgoKSk7CisgICAgYm91bmRp
bmdCb3guc2V0SGVpZ2h0KGJvdW5kaW5nQm94LmhlaWdodCgpIC0gc3R5bGUuYm9yZGVyQm90dG9t
V2lkdGgoKSAtIHN0eWxlLmJvcmRlclRvcFdpZHRoKCkpOworCisgICAgLy8gRklYTUU6IFRoaXMg
ZnVuY3Rpb24gYWR2ZXJ0aXNlcyByZXR1cm5pbmcgYSBxdWFkLCBidXQgaXQgYWN0dWFsbHkgcmV0
dXJucyBhIGJvdW5kaW5nIGJveCAoc28gdGhlcmUgaXMgbm8gcm90YXRpb24sIGZvciBpbnN0YW5j
ZSkuCisgICAgcmV0dXJuIHdrUXVhZEZyb21GbG9hdFF1YWQoRmxvYXRRdWFkKGJvdW5kaW5nQm94
KSk7Cit9CisKKy0gKGZsb2F0KWNvbXB1dGVkRm9udFNpemUKK3sKKyAgICBXZWJDb3JlOjpOb2Rl
ICpub2RlID0gY29yZShzZWxmKTsKKyAgICBSZW5kZXJTdHlsZSAqc3R5bGUgPSBub2RlLT5yZW5k
ZXJTdHlsZSgpOworICAgIGlmICghc3R5bGUpCisgICAgICAgIHJldHVybiAwLjBmOworICAgIHJl
dHVybiBzdHlsZS0+Zm9udERlc2NyaXB0aW9uKCkuY29tcHV0ZWRTaXplKCk7Cit9CisKKy0gKERP
TU5vZGUgKiluZXh0Rm9jdXNOb2RlCit7CisgICAgUGFnZSAqcGFnZSA9IGNvcmUoc2VsZiktPmRv
Y3VtZW50KCkucGFnZSgpOworICAgIGlmICghcGFnZSkKKyAgICAgICAgcmV0dXJuIG5pbDsKKwor
ICAgIFJlZlB0cjxLZXlib2FyZEV2ZW50PiBrZXkgPSBLZXlib2FyZEV2ZW50OjpjcmVhdGUoKTsK
KyAgICByZXR1cm4ga2l0KHBhZ2UtPmZvY3VzQ29udHJvbGxlcigpLm5leHRGb2N1c2FibGVFbGVt
ZW50KEZvY3VzTmF2aWdhdGlvblNjb3BlOjpmb2N1c05hdmlnYXRpb25TY29wZU9mKCZjb3JlKHNl
bGYpLT5kb2N1bWVudCgpKSwgY29yZShzZWxmKSwga2V5LmdldCgpKSk7Cit9CisKKy0gKERPTU5v
ZGUgKilwcmV2aW91c0ZvY3VzTm9kZQoreworICAgIFBhZ2UgKnBhZ2UgPSBjb3JlKHNlbGYpLT5k
b2N1bWVudCgpLnBhZ2UoKTsKKyAgICBpZiAoIXBhZ2UpCisgICAgICAgIHJldHVybiBuaWw7CisK
KyAgICBSZWZQdHI8S2V5Ym9hcmRFdmVudD4ga2V5ID0gS2V5Ym9hcmRFdmVudDo6Y3JlYXRlKCk7
CisgICAgcmV0dXJuIGtpdChwYWdlLT5mb2N1c0NvbnRyb2xsZXIoKS5wcmV2aW91c0ZvY3VzYWJs
ZUVsZW1lbnQoRm9jdXNOYXZpZ2F0aW9uU2NvcGU6OmZvY3VzTmF2aWdhdGlvblNjb3BlT2YoJmNv
cmUoc2VsZiktPmRvY3VtZW50KCkpLCBjb3JlKHNlbGYpLCBrZXkuZ2V0KCkpKTsKK30KKworI2Vu
ZGlmIC8vIFBMQVRGT1JNKElPUykKKwogQGVuZAogCiBAaW1wbGVtZW50YXRpb24gRE9NTm9kZSAo
RE9NTm9kZUV4dGVuc2lvbnNQZW5kaW5nUHVibGljKQogCisjaWYgIVBMQVRGT1JNKElPUykKIC0g
KE5TSW1hZ2UgKilyZW5kZXJlZEltYWdlCiB7CiAgICAgLy8gRklYTUU6IENvdWxkIHdlIG1vdmUg
dGhpcyBmdW5jdGlvbiB0byBXZWJDb3JlOjpOb2RlIGFuZCBhdXRvZ2VuZXJhdGU/CkBAIC0yOTEs
NiArNTU3LDcgQEAgaWQgPERPTUV2ZW50VGFyZ2V0PiBraXQoV2ViQ29yZTo6RXZlbnRUYXJnZXQq
IGV2ZW50VGFyZ2V0KQogICAgICAgICByZXR1cm4gbmlsOwogICAgIHJldHVybiBbY3JlYXRlRHJh
Z0ltYWdlRm9yTm9kZSgqZnJhbWUsICpub2RlKS5sZWFrUmVmKCkgYXV0b3JlbGVhc2VdOwogfQor
I2VuZGlmCiAKIC0gKE5TQXJyYXkgKil0ZXh0UmVjdHMKIHsKQEAgLTMyMSwxNCArNTg4LDIyIEBA
IGlkIDxET01FdmVudFRhcmdldD4ga2l0KFdlYkNvcmU6OkV2ZW50VGFyZ2V0KiBldmVudFRhcmdl
dCkKIAogQGltcGxlbWVudGF0aW9uIERPTVJhbmdlIChET01SYW5nZUV4dGVuc2lvbnMpCiAKKyNp
ZiBQTEFURk9STShJT1MpCistIChDR1JlY3QpYm91bmRpbmdCb3gKKyNlbHNlCiAtIChOU1JlY3Qp
Ym91bmRpbmdCb3gKKyNlbmRpZgogewogICAgIC8vIEZJWE1FOiBUaGUgY2FsbCB0byB1cGRhdGVM
YXlvdXRJZ25vcmVQZW5kaW5nU3R5bGVzaGVldHMgc2hvdWxkIGJlIG1vdmVkIGludG8gV2ViQ29y
ZTo6UmFuZ2UuCiAgICAgY29yZShzZWxmKS0+b3duZXJEb2N1bWVudCgpLnVwZGF0ZUxheW91dEln
bm9yZVBlbmRpbmdTdHlsZXNoZWV0cygpOwogICAgIHJldHVybiBjb3JlKHNlbGYpLT5ib3VuZGlu
Z0JveCgpOwogfQogCisjaWYgIVBMQVRGT1JNKElPUykKIC0gKE5TSW1hZ2UgKilyZW5kZXJlZElt
YWdlRm9yY2luZ0JsYWNrVGV4dDooQk9PTClmb3JjZUJsYWNrVGV4dAorI2Vsc2UKKy0gKENHSW1h
Z2VSZWYpcmVuZGVyZWRJbWFnZUZvcmNpbmdCbGFja1RleHQ6KEJPT0wpZm9yY2VCbGFja1RleHQK
KyNlbmRpZgogewogICAgIFdlYkNvcmU6OlJhbmdlKiByYW5nZSA9IGNvcmUoc2VsZik7CiAgICAg
V2ViQ29yZTo6RnJhbWUqIGZyYW1lID0gcmFuZ2UtPm93bmVyRG9jdW1lbnQoKS5mcmFtZSgpOwpA
QCAtMzYwLDYgKzYzNSw3IEBAIGlkIDxET01FdmVudFRhcmdldD4ga2l0KFdlYkNvcmU6OkV2ZW50
VGFyZ2V0KiBldmVudFRhcmdldCkKIAogQGltcGxlbWVudGF0aW9uIERPTUVsZW1lbnQgKERPTUVs
ZW1lbnRBcHBLaXRFeHRlbnNpb25zKQogCisjaWYgIVBMQVRGT1JNKElPUykKIC0gKE5TSW1hZ2Uq
KWltYWdlCiB7CiAgICAgLy8gRklYTUU6IENvdWxkIHdlIG1vdmUgdGhpcyBmdW5jdGlvbiB0byBX
ZWJDb3JlOjpOb2RlIGFuZCBhdXRvZ2VuZXJhdGU/CkBAIC0zNzEsMTEgKzY0NywxMyBAQCBpZCA8
RE9NRXZlbnRUYXJnZXQ+IGtpdChXZWJDb3JlOjpFdmVudFRhcmdldCogZXZlbnRUYXJnZXQpCiAg
ICAgICAgIHJldHVybiBuaWw7CiAgICAgcmV0dXJuIGNhY2hlZEltYWdlLT5pbWFnZUZvclJlbmRl
cmVyKHRvUmVuZGVySW1hZ2UocmVuZGVyZXIpKS0+Z2V0TlNJbWFnZSgpOwogfQorI2VuZGlmCiAK
IEBlbmQKIAogQGltcGxlbWVudGF0aW9uIERPTUVsZW1lbnQgKFdlYlByaXZhdGUpCiAKKyNpZiAh
UExBVEZPUk0oSU9TKQogLSAoTlNGb250ICopX2ZvbnQKIHsKICAgICAvLyBGSVhNRTogQ291bGQg
d2UgbW92ZSB0aGlzIGZ1bmN0aW9uIHRvIFdlYkNvcmU6OkVsZW1lbnQgYW5kIGF1dG9nZW5lcmF0
ZT8KQEAgLTM4NCw3ICs2NjIsMTcgQEAgaWQgPERPTUV2ZW50VGFyZ2V0PiBraXQoV2ViQ29yZTo6
RXZlbnRUYXJnZXQqIGV2ZW50VGFyZ2V0KQogICAgICAgICByZXR1cm4gbmlsOwogICAgIHJldHVy
biByZW5kZXJlci0+c3R5bGUoKS5mb250KCkucHJpbWFyeUZvbnQoKS0+Z2V0TlNGb250KCk7CiB9
CisjZWxzZQorLSAoQ1RGb250UmVmKV9mb250Cit7CisgICAgUmVuZGVyT2JqZWN0KiByZW5kZXJl
ciA9IGNvcmUoc2VsZiktPnJlbmRlcmVyKCk7CisgICAgaWYgKCFyZW5kZXJlcikKKyAgICAgICAg
cmV0dXJuIG5pbDsKKyAgICByZXR1cm4gcmVuZGVyZXItPnN0eWxlKCkuZm9udCgpLnByaW1hcnlG
b250KCktPmdldENURm9udCgpOworfQorI2VuZGlmCiAKKyNpZiAhUExBVEZPUk0oSU9TKQogLSAo
TlNEYXRhICopX2ltYWdlVElGRlJlcHJlc2VudGF0aW9uCiB7CiAgICAgLy8gRklYTUU6IENvdWxk
IHdlIG1vdmUgdGhpcyBmdW5jdGlvbiB0byBXZWJDb3JlOjpFbGVtZW50IGFuZCBhdXRvZ2VuZXJh
dGU/CkBAIC0zOTYsNiArNjg0LDcgQEAgaWQgPERPTUV2ZW50VGFyZ2V0PiBraXQoV2ViQ29yZTo6
RXZlbnRUYXJnZXQqIGV2ZW50VGFyZ2V0KQogICAgICAgICByZXR1cm4gbmlsOwogICAgIHJldHVy
biAoTlNEYXRhICopY2FjaGVkSW1hZ2UtPmltYWdlRm9yUmVuZGVyZXIocmVuZGVyZXIpLT5nZXRU
SUZGUmVwcmVzZW50YXRpb24oKTsKIH0KKyNlbmRpZgogCiAtIChOU1VSTCAqKV9nZXRVUkxBdHRy
aWJ1dGU6KE5TU3RyaW5nICopbmFtZQogewpAQCAtNDE1LDYgKzcwNCw0OSBAQCBpZCA8RE9NRXZl
bnRUYXJnZXQ+IGtpdChXZWJDb3JlOjpFdmVudFRhcmdldCogZXZlbnRUYXJnZXQpCiAKIEBlbmQK
IAorI2lmIFBMQVRGT1JNKElPUykKK0BpbXBsZW1lbnRhdGlvbiBET01IVE1MTGlua0VsZW1lbnQg
KFdlYlByaXZhdGUpCistIChCT09MKV9tZWRpYVF1ZXJ5TWF0Y2hlc0Zvck9yaWVudGF0aW9uOihp
bnQpb3JpZW50YXRpb24KK3sKKyAgICBEb2N1bWVudCYgZG9jdW1lbnQgPSBzdGF0aWNfY2FzdDxI
VE1MTGlua0VsZW1lbnQqPihjb3JlKHNlbGYpKS0+ZG9jdW1lbnQoKTsKKyAgICBGcmFtZVZpZXcq
IGZyYW1lVmlldyA9IGRvY3VtZW50LmZyYW1lKCkgPyBkb2N1bWVudC5mcmFtZSgpLT52aWV3KCkg
OiAwOworICAgIGlmICghZnJhbWVWaWV3KQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaW50
IGxheW91dFdpZHRoID0gZnJhbWVWaWV3LT5sYXlvdXRXaWR0aCgpOworICAgIGludCBsYXlvdXRI
ZWlnaHQgPSBmcmFtZVZpZXctPmxheW91dEhlaWdodCgpOworICAgIEludFNpemUgc2F2ZWRGaXhl
ZExheW91dFNpemUgPSBmcmFtZVZpZXctPmZpeGVkTGF5b3V0U2l6ZSgpOworICAgIGJvb2wgc2F2
ZWRVc2VGaXhlZExheW91dCA9IGZyYW1lVmlldy0+dXNlRml4ZWRMYXlvdXQoKTsKKyAgICBpZiAo
KG9yaWVudGF0aW9uID09IFdlYk1lZGlhUXVlcnlPcmllbnRhdGlvblBvcnRyYWl0ICYmIGxheW91
dFdpZHRoID4gbGF5b3V0SGVpZ2h0KSB8fAorICAgICAgICAob3JpZW50YXRpb24gPT0gV2ViTWVk
aWFRdWVyeU9yaWVudGF0aW9uTGFuZHNjYXBlICYmIGxheW91dFdpZHRoIDwgbGF5b3V0SGVpZ2h0
KSkgeworICAgICAgICAvLyB0ZW1wb3JhcmlseSBzd2FwIHRoZSBvcmllbnRhdGlvbiBmb3IgdGhl
IGV2YWx1YXRpb24KKyAgICAgICAgZnJhbWVWaWV3LT5zZXRGaXhlZExheW91dFNpemUoSW50U2l6
ZShsYXlvdXRIZWlnaHQsIGxheW91dFdpZHRoKSk7CisgICAgICAgIGZyYW1lVmlldy0+c2V0VXNl
Rml4ZWRMYXlvdXQodHJ1ZSk7CisgICAgfQorICAgICAgICAKKyAgICBib29sIHJlc3VsdCA9IFtz
ZWxmIF9tZWRpYVF1ZXJ5TWF0Y2hlc107CisKKyAgICBmcmFtZVZpZXctPnNldEZpeGVkTGF5b3V0
U2l6ZShzYXZlZEZpeGVkTGF5b3V0U2l6ZSk7CisgICAgZnJhbWVWaWV3LT5zZXRVc2VGaXhlZExh
eW91dChzYXZlZFVzZUZpeGVkTGF5b3V0KTsKKworICAgIHJldHVybiByZXN1bHQ7Cit9CisKKy0g
KEJPT0wpX21lZGlhUXVlcnlNYXRjaGVzCit7CisgICAgSFRNTExpbmtFbGVtZW50KiBsaW5rID0g
c3RhdGljX2Nhc3Q8SFRNTExpbmtFbGVtZW50Kj4oY29yZShzZWxmKSk7CisgICAgU3RyaW5nIG1l
ZGlhID0gbGluay0+Z2V0QXR0cmlidXRlKEhUTUxOYW1lczo6bWVkaWFBdHRyKTsKKyAgICBpZiAo
bWVkaWEuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICBEb2N1bWVudCYgZG9j
dW1lbnQgPSBsaW5rLT5kb2N1bWVudCgpOworCisgICAgUmVmUHRyPE1lZGlhUXVlcnlTZXQ+IG1l
ZGlhUXVlcnlTZXQgPSBNZWRpYVF1ZXJ5U2V0OjpjcmVhdGVBbGxvd2luZ0Rlc2NyaXB0aW9uU3lu
dGF4KG1lZGlhKTsKKyAgICBNZWRpYVF1ZXJ5RXZhbHVhdG9yIHNjcmVlbkV2YWwoInNjcmVlbiIs
IGRvY3VtZW50LmZyYW1lKCksIGRvY3VtZW50LnJlbmRlclZpZXcoKSA/ICZkb2N1bWVudC5yZW5k
ZXJWaWV3KCktPnN0eWxlKCkgOiAwKTsKKworICAgIHJldHVybiBzY3JlZW5FdmFsLmV2YWwobWVk
aWFRdWVyeVNldC5nZXQoKSk7Cit9CitAZW5kCisjZW5kaWYKKwogLy8tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0KIC8vIERPTVJhbmdlCiAKQEAgLTQ0MiwxMiArNzc0LDE0IEBAIGlk
IDxET01FdmVudFRhcmdldD4ga2l0KFdlYkNvcmU6OkV2ZW50VGFyZ2V0KiBldmVudFRhcmdldCkK
IAogQGltcGxlbWVudGF0aW9uIERPTVJHQkNvbG9yIChXZWJQcml2YXRlKQogCisjaWYgIVBMQVRG
T1JNKElPUykKIC8vIEZJWE1FOiBUaGlzIHNob3VsZCBiZSByZW1vdmVkIGFzIHNvb24gYXMgYWxs
IGludGVybmFsIEFwcGxlIHVzZXMgb2YgaXQgaGF2ZSBiZWVuIHJlcGxhY2VkIHdpdGgKIC8vIGNh
bGxzIHRvIHRoZSBwdWJsaWMgbWV0aG9kIC0gKE5TQ29sb3IgKiljb2xvci4KIC0gKE5TQ29sb3Ig
KilfY29sb3IKIHsKICAgICByZXR1cm4gW3NlbGYgY29sb3JdOwogfQorI2VuZGlmCiAKIEBlbmQK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvb2JqYy9ET01FdmVudHMuaCBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL29iamMvRE9NRXZlbnRzLmgKaW5kZXggNGUyZDgyNWM2
YTVkNmZiZTcwNDRhNzYzOTk0MTFkODRhMWY3ZGNkOC4uYWMxYTNiYzhiZThhZWYyYzU2M2U4Yjlk
MjNjNDdlYzMxN2YwNjk5MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvb2Jq
Yy9ET01FdmVudHMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9vYmpjL0RPTUV2ZW50
cy5oCkBAIC00MCwzICs0MCwxMSBAQAogI2ltcG9ydCA8V2ViQ29yZS9ET01Qcm9ncmVzc0V2ZW50
Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL0RPTVVJRXZlbnQuaD4KICNpbXBvcnQgPFdlYkNvcmUvRE9N
V2hlZWxFdmVudC5oPgorCisjaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykKKyNpbXBvcnQgPFdlYkNv
cmUvRE9NVG91Y2hFdmVudC5oPgorI2VuZGlmCisKKyNpZiBFTkFCTEUoSU9TX0dFU1RVUkVfRVZF
TlRTKQorI2ltcG9ydCA8V2ViQ29yZS9ET01HZXN0dXJlRXZlbnQuaD4KKyNlbmRpZgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvb2JqYy9ET01FdmVudHMubW0gYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9vYmpjL0RPTUV2ZW50cy5tbQppbmRleCBiZGQxN2M2NDVlNDdjZjlm
YmIwZDVhNmJkNzkwZGU2Y2Q0YTg0MDAyLi40ZTlmYjhiNDhlNzUxNWEyMjJiYTMzZWQzNGQ2YzNh
ZjE5OGQwZDgwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9vYmpjL0RPTUV2
ZW50cy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9vYmpjL0RPTUV2ZW50cy5tbQpA
QCAtNDAsNiArNDAsMTQgQEAKICNpbXBvcnQgIkV2ZW50LmgiCiAjaW1wb3J0ICJFdmVudE5hbWVz
LmgiCiAKKyNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQorI2ltcG9ydCAiRE9NVG91Y2hFdmVudC5o
IgorI2VuZGlmCisKKyNpZiBFTkFCTEUoSU9TX0dFU1RVUkVfRVZFTlRTKQorI2ltcG9ydCAiRE9N
R2VzdHVyZUV2ZW50LmgiCisjZW5kaWYKKwogdXNpbmcgV2ViQ29yZTo6ZXZlbnROYW1lczsKIAog
Q2xhc3Mga2l0Q2xhc3MoV2ViQ29yZTo6RXZlbnQqIGltcGwpCkBAIC01NCw3ICs2MiwxNSBAQCBD
bGFzcyBraXRDbGFzcyhXZWJDb3JlOjpFdmVudCogaW1wbCkKICAgICAgICAgaWYgKGRlc2lyZWRJ
bnRlcmZhY2UgPT0gV2ViQ29yZTo6VGV4dEV2ZW50SW50ZXJmYWNlVHlwZSkKICAgICAgICAgICAg
IHJldHVybiBbRE9NVGV4dEV2ZW50IGNsYXNzXTsKICAgICAgICAgaWYgKGRlc2lyZWRJbnRlcmZh
Y2UgPT0gV2ViQ29yZTo6V2hlZWxFdmVudEludGVyZmFjZVR5cGUpCi0gICAgICAgICAgICByZXR1
cm4gW0RPTVdoZWVsRXZlbnQgY2xhc3NdOworICAgICAgICAgICAgcmV0dXJuIFtET01XaGVlbEV2
ZW50IGNsYXNzXTsgICAgICAgIAorI2lmIFBMQVRGT1JNKElPUykgJiYgRU5BQkxFKFRPVUNIX0VW
RU5UUykKKyAgICAgICAgaWYgKGRlc2lyZWRJbnRlcmZhY2UgPT0gV2ViQ29yZTo6VG91Y2hFdmVu
dEludGVyZmFjZVR5cGUpIAorICAgICAgICAgICAgcmV0dXJuIFtET01Ub3VjaEV2ZW50IGNsYXNz
XTsKKyNlbmRpZgorI2lmIEVOQUJMRShJT1NfR0VTVFVSRV9FVkVOVFMpCisgICAgICAgIGlmIChk
ZXNpcmVkSW50ZXJmYWNlID09IFdlYkNvcmU6Okdlc3R1cmVFdmVudEludGVyZmFjZVR5cGUpCisg
ICAgICAgICAgICByZXR1cm4gW0RPTUdlc3R1cmVFdmVudCBjbGFzc107CisjZW5kaWYKICAgICAg
ICAgcmV0dXJuIFtET01VSUV2ZW50IGNsYXNzXTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL29iamMvRE9NRXh0ZW5zaW9ucy5oIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvb2JqYy9ET01FeHRlbnNpb25zLmgKaW5kZXggY2VjMzU2MDBlMjFjNmZmNWIzNTY3
NDk4YjdkYjUyMTJkMjIyOWYyMy4uN2IxOGQ0NGEwMTZjNjUxY2IyNmQ5NzUwNzYwYjAxOTY1NzM5
NzBjOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvb2JqYy9ET01FeHRlbnNp
b25zLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvb2JqYy9ET01FeHRlbnNpb25zLmgK
QEAgLTQzLDIwICs0Myw4OSBAQAogI2ltcG9ydCA8V2ViQ29yZS9ET01SR0JDb2xvci5oPgogI2lt
cG9ydCA8V2ViQ29yZS9ET01SYW5nZS5oPgogCisjaWYgUExBVEZPUk0oSU9TKQorI2ltcG9ydCA8
Q29yZUdyYXBoaWNzL0NvcmVHcmFwaGljcy5oPgorI2VuZGlmCisKIEBjbGFzcyBOU0FycmF5Owog
QGNsYXNzIE5TSW1hZ2U7CiBAY2xhc3MgTlNVUkw7CiAKKworI2lmIFBMQVRGT1JNKElPUykKK0Bp
bnRlcmZhY2UgRE9NSFRNTEVsZW1lbnQgKERPTUhUTUxFbGVtZW50RXh0ZW5zaW9ucykKKy0gKGlu
dClzY3JvbGxYT2Zmc2V0OworLSAoaW50KXNjcm9sbFlPZmZzZXQ7CistICh2b2lkKXNldFNjcm9s
bFhPZmZzZXQ6KGludCl4IHNjcm9sbFlPZmZzZXQ6KGludCl5OworLSAodm9pZClzZXRTY3JvbGxY
T2Zmc2V0OihpbnQpeCBzY3JvbGxZT2Zmc2V0OihpbnQpeSBhZGp1c3RGb3JJT1NDYXJldDooQk9P
TClhZGp1c3RGb3JJT1NDYXJldDsKKy0gKHZvaWQpYWJzb2x1dGVQb3NpdGlvbjooaW50ICopeCA6
KGludCAqKXkgOihpbnQgKil3IDooaW50ICopaDsKK0BlbmQKKyNlbmRpZgorCisjaWYgUExBVEZP
Uk0oSU9TKQordHlwZWRlZiBzdHJ1Y3QgX1dLUXVhZCB7CisgICAgQ0dQb2ludCBwMTsKKyAgICBD
R1BvaW50IHAyOworICAgIENHUG9pbnQgcDM7CisgICAgQ0dQb2ludCBwNDsKK30gV0tRdWFkOwor
CitAaW50ZXJmYWNlIFdLUXVhZE9iamVjdCA6IE5TT2JqZWN0Cit7CisgICAgV0tRdWFkICBfcXVh
ZDsKK30KKworLSAoaWQpaW5pdFdpdGhRdWFkOihXS1F1YWQpcXVhZDsKKy0gKFdLUXVhZClxdWFk
OworLSAoQ0dSZWN0KWJvdW5kaW5nQm94OworQGVuZAorI2VuZGlmCisKIEBpbnRlcmZhY2UgRE9N
Tm9kZSAoRE9NTm9kZUV4dGVuc2lvbnMpCisjaWYgUExBVEZPUk0oSU9TKQorLSAoQ0dSZWN0KWJv
dW5kaW5nQm94OworI2Vsc2UKIC0gKE5TUmVjdClib3VuZGluZ0JveCBXRUJLSVRfQVZBSUxBQkxF
X01BQygxMF81KTsKKyNlbmRpZgogLSAoTlNBcnJheSAqKWxpbmVCb3hSZWN0cyBXRUJLSVRfQVZB
SUxBQkxFX01BQygxMF81KTsKKworI2lmIFBMQVRGT1JNKElPUykKKy0gKENHUmVjdClib3VuZGlu
Z0JveFVzaW5nVHJhbnNmb3JtczsgLy8gdGFrZXMgdHJhbnNmb3JtcyBpbnRvIGFjY291bnQKKwor
LSAoV0tRdWFkKWFic29sdXRlUXVhZDsKKy0gKFdLUXVhZClhYnNvbHV0ZVF1YWRBbmRJbnNpZGVG
aXhlZFBvc2l0aW9uOihCT09MICopaW5zaWRlRml4ZWQ7CistIChOU0FycmF5ICopbGluZUJveFF1
YWRzOyAgICAgIC8vIHJldHVybnMgYXJyYXkgb2YgV0tRdWFkT2JqZWN0CisKKy0gKE5TVVJMICop
aHJlZlVSTDsKKy0gKENHUmVjdClocmVmRnJhbWU7CistIChOU1N0cmluZyAqKWhyZWZUYXJnZXQ7
CistIChOU1N0cmluZyAqKWhyZWZMYWJlbDsKKy0gKE5TU3RyaW5nICopaHJlZlRpdGxlOworLSAo
Q0dSZWN0KWJvdW5kaW5nRnJhbWU7CistIChXS1F1YWQpaW5uZXJGcmFtZVF1YWQ7ICAgICAgIC8v
IHRha2VzIHRyYW5zZm9ybXMgaW50byBhY2NvdW50CistIChmbG9hdCljb21wdXRlZEZvbnRTaXpl
OworLSAoRE9NTm9kZSAqKW5leHRGb2N1c05vZGU7CistIChET01Ob2RlICopcHJldmlvdXNGb2N1
c05vZGU7CisjZW5kaWYKIEBlbmQKIAogQGludGVyZmFjZSBET01FbGVtZW50IChET01FbGVtZW50
QXBwS2l0RXh0ZW5zaW9ucykKKyNpZiAhUExBVEZPUk0oSU9TKQogLSAoTlNJbWFnZSAqKWltYWdl
IFdFQktJVF9BVkFJTEFCTEVfTUFDKDEwXzUpOworI2VuZGlmCiBAZW5kCiAKIEBpbnRlcmZhY2Ug
RE9NSFRNTERvY3VtZW50IChET01IVE1MRG9jdW1lbnRFeHRlbnNpb25zKQogLSAoRE9NRG9jdW1l
bnRGcmFnbWVudCAqKWNyZWF0ZURvY3VtZW50RnJhZ21lbnRXaXRoTWFya3VwU3RyaW5nOihOU1N0
cmluZyAqKW1hcmt1cFN0cmluZyBiYXNlVVJMOihOU1VSTCAqKWJhc2VVUkwgV0VCS0lUX0FWQUlM
QUJMRV9NQUMoMTBfNSk7CiAtIChET01Eb2N1bWVudEZyYWdtZW50ICopY3JlYXRlRG9jdW1lbnRG
cmFnbWVudFdpdGhUZXh0OihOU1N0cmluZyAqKXRleHQgV0VCS0lUX0FWQUlMQUJMRV9NQUMoMTBf
NSk7CiBAZW5kCisKKyNpZiBQTEFURk9STShJT1MpCitAaW50ZXJmYWNlIERPTUhUTUxBcmVhRWxl
bWVudCAoRE9NSFRNTEFyZWFFbGVtZW50RXh0ZW5zaW9ucykKKy0gKENHUmVjdClib3VuZGluZ0Zy
YW1lRm9yT3duZXI6KERPTU5vZGUgKilhbk93bmVyOworQGVuZAorCitAaW50ZXJmYWNlIERPTUhU
TUxTZWxlY3RFbGVtZW50IChET01IVE1MU2VsZWN0RWxlbWVudEV4dGVuc2lvbnMpCistIChET01O
b2RlICopbGlzdEl0ZW1BdEluZGV4OihpbnQpYW5JbmRleDsKK0BlbmQKKyNlbmRpZgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvb2JqYy9ET01IVE1MLm1tIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvb2JqYy9ET01IVE1MLm1tCmluZGV4IGMzMzM1MTRiOWIyNmQzYTRmZTVh
MjExZjZjMjEyNGQ2OTg3OGE1MDguLmJhNDExMjJiZDc3YTlhYjFiYTVjZjgxMTE1MzQzYzJmYTM5
OWIzYzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL29iamMvRE9NSFRNTC5t
bQorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9vYmpjL0RPTUhUTUwubW0KQEAgLTQ5LDYg
KzQ5LDk5IEBACiAjaW1wb3J0ICJTZXR0aW5ncy5oIgogI2ltcG9ydCAibWFya3VwLmgiCiAKKyNp
ZiBQTEFURk9STShJT1MpCisjaW1wb3J0ICJBdXRvY2FwaXRhbGl6ZS5oIgorI2ltcG9ydCAiRE9N
SFRNTEVsZW1lbnRJbnRlcm5hbC5oIgorI2ltcG9ydCAiSFRNTFRleHRGb3JtQ29udHJvbEVsZW1l
bnQuaCIKKyNpbXBvcnQgIkpTTWFpblRocmVhZEV4ZWNTdGF0ZS5oIgorI2ltcG9ydCAiUmVuZGVy
TGF5ZXIuaCIKKyNpbXBvcnQgIldBS1dpbmRvdy5oIgorI2ltcG9ydCAiV2ViQ29yZVRocmVhZE1l
c3NhZ2UuaCIKKyNlbmRpZgorCisjaWYgUExBVEZPUk0oSU9TKQorCit1c2luZyBuYW1lc3BhY2Ug
V2ViQ29yZTsKKworQGltcGxlbWVudGF0aW9uIERPTUhUTUxFbGVtZW50IChET01IVE1MRWxlbWVu
dEV4dGVuc2lvbnMpCisKKy0gKGludClzY3JvbGxYT2Zmc2V0Cit7CisgICAgUmVuZGVyT2JqZWN0
ICpyZW5kZXJlciA9IGNvcmUoc2VsZiktPnJlbmRlcmVyKCk7CisgICAgaWYgKCFyZW5kZXJlcikK
KyAgICAgICAgcmV0dXJuIDA7CisKKyAgICBpZiAoIXJlbmRlcmVyLT5pc1JlbmRlckJsb2NrRmxv
dygpKQorICAgICAgICByZW5kZXJlciA9IHJlbmRlcmVyLT5jb250YWluaW5nQmxvY2soKTsKKwor
ICAgIGlmICghcmVuZGVyZXItPmlzQm94KCkgfHwgIXJlbmRlcmVyLT5oYXNPdmVyZmxvd0NsaXAo
KSkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICBSZW5kZXJCb3ggKnJlbmRlckJveCA9IHRvUmVu
ZGVyQm94KHJlbmRlcmVyKTsKKyAgICByZXR1cm4gcmVuZGVyQm94LT5sYXllcigpLT5zY3JvbGxY
T2Zmc2V0KCk7Cit9CisKKy0gKGludClzY3JvbGxZT2Zmc2V0Cit7CisgICAgUmVuZGVyT2JqZWN0
ICpyZW5kZXJlciA9IGNvcmUoc2VsZiktPnJlbmRlcmVyKCk7CisgICAgaWYgKCFyZW5kZXJlcikK
KyAgICAgICAgcmV0dXJuIDA7CisKKyAgICBpZiAoIXJlbmRlcmVyLT5pc1JlbmRlckJsb2NrRmxv
dygpKQorICAgICAgICByZW5kZXJlciA9IHJlbmRlcmVyLT5jb250YWluaW5nQmxvY2soKTsKKyAg
ICBpZiAoIXJlbmRlcmVyLT5pc0JveCgpIHx8ICFyZW5kZXJlci0+aGFzT3ZlcmZsb3dDbGlwKCkp
CisgICAgICAgIHJldHVybiAwOworCisgICAgUmVuZGVyQm94ICpyZW5kZXJCb3ggPSB0b1JlbmRl
ckJveChyZW5kZXJlcik7CisgICAgcmV0dXJuIHJlbmRlckJveC0+bGF5ZXIoKS0+c2Nyb2xsWU9m
ZnNldCgpOworfQorCistICh2b2lkKXNldFNjcm9sbFhPZmZzZXQ6KGludCl4IHNjcm9sbFlPZmZz
ZXQ6KGludCl5Cit7CisgICAgW3NlbGYgc2V0U2Nyb2xsWE9mZnNldDp4IHNjcm9sbFlPZmZzZXQ6
eSBhZGp1c3RGb3JJT1NDYXJldDpOT107Cit9CisKKy0gKHZvaWQpc2V0U2Nyb2xsWE9mZnNldDoo
aW50KXggc2Nyb2xsWU9mZnNldDooaW50KXkgYWRqdXN0Rm9ySU9TQ2FyZXQ6KEJPT0wpYWRqdXN0
Rm9ySU9TQ2FyZXQKK3sKKyAgICBSZW5kZXJPYmplY3QgKnJlbmRlcmVyID0gY29yZShzZWxmKS0+
cmVuZGVyZXIoKTsKKyAgICBpZiAoIXJlbmRlcmVyKQorICAgICAgICByZXR1cm47CisKKyAgICBp
ZiAoIXJlbmRlcmVyLT5pc1JlbmRlckJsb2NrRmxvdygpKQorICAgICAgICByZW5kZXJlciA9IHJl
bmRlcmVyLT5jb250YWluaW5nQmxvY2soKTsKKyAgICBpZiAoIXJlbmRlcmVyLT5oYXNPdmVyZmxv
d0NsaXAoKSB8fCAhcmVuZGVyZXItPmlzQm94KCkpCisgICAgICAgIHJldHVybjsKKworICAgIFJl
bmRlckJveCAqcmVuZGVyQm94ID0gdG9SZW5kZXJCb3gocmVuZGVyZXIpOworICAgIFJlbmRlckxh
eWVyICpsYXllciA9IHJlbmRlckJveC0+bGF5ZXIoKTsKKyAgICBpZiAoYWRqdXN0Rm9ySU9TQ2Fy
ZXQpCisgICAgICAgIGxheWVyLT5zZXRBZGp1c3RGb3JJT1NDYXJldFdoZW5TY3JvbGxpbmcodHJ1
ZSk7CisgICAgbGF5ZXItPnNjcm9sbFRvT2Zmc2V0KEludFNpemUoeCwgeSkpOworICAgIGlmIChh
ZGp1c3RGb3JJT1NDYXJldCkKKyAgICAgICAgbGF5ZXItPnNldEFkanVzdEZvcklPU0NhcmV0V2hl
blNjcm9sbGluZyhmYWxzZSk7Cit9CisKKy0gKHZvaWQpYWJzb2x1dGVQb3NpdGlvbjooaW50ICop
eCA6KGludCAqKXkgOihpbnQgKil3IDooaW50ICopaCB7CisgICAgUmVuZGVyQm94ICpyZW5kZXJl
ciA9IGNvcmUoc2VsZiktPnJlbmRlckJveCgpOworICAgIGlmIChyZW5kZXJlcikgeworICAgICAg
ICBpZiAodykKKyAgICAgICAgICAgICp3ID0gcmVuZGVyZXItPndpZHRoKCk7CisgICAgICAgIGlm
IChoKQorICAgICAgICAgICAgKmggPSByZW5kZXJlci0+d2lkdGgoKTsKKyAgICAgICAgaWYgKHgg
JiYgeSkgeworICAgICAgICAgICAgRmxvYXRQb2ludCBmbG9hdFBvaW50KCp4LCAqeSk7CisgICAg
ICAgICAgICByZW5kZXJlci0+bG9jYWxUb0Fic29sdXRlKGZsb2F0UG9pbnQpOworICAgICAgICAg
ICAgSW50UG9pbnQgcG9pbnQgPSByb3VuZGVkSW50UG9pbnQoZmxvYXRQb2ludCk7CisgICAgICAg
ICAgICAqeCA9IHBvaW50LngoKTsKKyAgICAgICAgICAgICp5ID0gcG9pbnQueSgpOworICAgICAg
ICB9CisgICAgfQorfQorCitAZW5kCisKKyNlbmRpZiAvLyBQTEFURk9STShJT1MpCisKIC8vLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAvLyBET01IVE1MRG9jdW1lbnQKIApAQCAt
OTAsNiArMTgzLDcgQEAKICAgICByZXR1cm4gY29yZShzZWxmKS0+aXNUZXh0RmllbGQoKTsKIH0K
IAorI2lmICFQTEFURk9STShJT1MpCiAtIChOU1JlY3QpX3JlY3RPblNjcmVlbgogewogICAgIC8v
IFJldHVybnMgYm91bmRpbmcgcmVjdCBvZiB0ZXh0IGZpZWxkLCBpbiBzY3JlZW4gY29vcmRpbmF0
ZXMuCkBAIC0xMDUsNiArMTk5LDcgQEAKICNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBwb3AKICAg
ICByZXR1cm4gcmVzdWx0OwogfQorI2VuZGlmCiAKIC0gKHZvaWQpX3JlcGxhY2VDaGFyYWN0ZXJz
SW5SYW5nZTooTlNSYW5nZSl0YXJnZXRSYW5nZSB3aXRoU3RyaW5nOihOU1N0cmluZyAqKXJlcGxh
Y2VtZW50U3RyaW5nIHNlbGVjdGluZ0Zyb21JbmRleDooaW50KWluZGV4CiB7CkBAIC0xODEsNiAr
Mjc2LDQ1IEBACiAKIEBlbmQKIAorI2lmIFBMQVRGT1JNKElPUykKK0BpbXBsZW1lbnRhdGlvbiBE
T01IVE1MSW5wdXRFbGVtZW50IChBdXRvY2FwaXRhbGl6ZUFkZGl0aW9ucykKKworLSAoV2ViQXV0
b2NhcGl0YWxpemVUeXBlKV9hdXRvY2FwaXRhbGl6ZVR5cGUKK3sKKyAgICBXZWJDb3JlOjpIVE1M
SW5wdXRFbGVtZW50KiBpbnB1dEVsZW1lbnQgPSBjb3JlKHNlbGYpOworICAgIHJldHVybiBzdGF0
aWNfY2FzdDxXZWJBdXRvY2FwaXRhbGl6ZVR5cGU+KGlucHV0RWxlbWVudC0+YXV0b2NhcGl0YWxp
emVUeXBlKCkpOworfQorCitAZW5kCisKK0BpbXBsZW1lbnRhdGlvbiBET01IVE1MVGV4dEFyZWFF
bGVtZW50IChBdXRvY2FwaXRhbGl6ZUFkZGl0aW9ucykKKworLSAoV2ViQXV0b2NhcGl0YWxpemVU
eXBlKV9hdXRvY2FwaXRhbGl6ZVR5cGUKK3sKKyAgICBXZWJDb3JlOjpIVE1MVGV4dEFyZWFFbGVt
ZW50KiB0ZXh0YXJlYUVsZW1lbnQgPSBjb3JlKHNlbGYpOworICAgIHJldHVybiBzdGF0aWNfY2Fz
dDxXZWJBdXRvY2FwaXRhbGl6ZVR5cGU+KHRleHRhcmVhRWxlbWVudC0+YXV0b2NhcGl0YWxpemVU
eXBlKCkpOworfQorCitAZW5kCisKK0BpbXBsZW1lbnRhdGlvbiBET01IVE1MSW5wdXRFbGVtZW50
IChXZWJJbnB1dENoYW5nZUV2ZW50QWRkaXRpb25zKQorCistICh2b2lkKXNldFZhbHVlV2l0aENo
YW5nZUV2ZW50OihOU1N0cmluZyAqKW5ld1ZhbHVlCit7CisgICAgV2ViQ29yZTo6SlNNYWluVGhy
ZWFkTnVsbFN0YXRlIHN0YXRlOworICAgIGNvcmUoc2VsZiktPnNldFZhbHVlKG5ld1ZhbHVlLCBE
aXNwYXRjaElucHV0QW5kQ2hhbmdlRXZlbnQpOworfQorCistICh2b2lkKXNldFZhbHVlQXNOdW1i
ZXJXaXRoQ2hhbmdlRXZlbnQ6KGRvdWJsZSluZXdWYWx1ZUFzTnVtYmVyCit7CisgICAgV2ViQ29y
ZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOworICAgIFdlYkNvcmU6OkV4Y2VwdGlvbkNv
ZGUgZWMgPSAwOworICAgIGNvcmUoc2VsZiktPnNldFZhbHVlQXNOdW1iZXIobmV3VmFsdWVBc051
bWJlciwgZWMsIERpc3BhdGNoSW5wdXRBbmRDaGFuZ2VFdmVudCk7Cit9CisKK0BlbmQKKyNlbmRp
ZgorCiBDbGFzcyBraXRDbGFzcyhXZWJDb3JlOjpIVE1MQ29sbGVjdGlvbiogY29sbGVjdGlvbikK
IHsKICAgICBpZiAoY29sbGVjdGlvbi0+dHlwZSgpID09IFdlYkNvcmU6OlNlbGVjdE9wdGlvbnMp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9vYmpjL0RPTUludGVybmFsLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9vYmpjL0RPTUludGVybmFsLmgKaW5kZXggZDIyYjMx
ODkzNWEzOWFkMjRmOTU1MTdjNzkyY2YyZDM2ZTUxNDI2Yi4uMTBjNDhlMTk5OTdhOWQxMjc5Zjc5
NjIzM2UyNzU0MzJiZGVkNDU0NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
b2JqYy9ET01JbnRlcm5hbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL29iamMvRE9N
SW50ZXJuYWwuaApAQCAtNDUsNiArNDUsOSBAQCBuYW1lc3BhY2UgSlNDIHsKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKICAgICBjbGFzcyBOb2RlRmlsdGVyOwogICAgIGNsYXNzIFhQYXRoTlNSZXNvbHZl
cjsKKyNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQorICAgIGNsYXNzIFRvdWNoOworI2VuZGlmCiB9
CiAKIEBpbnRlcmZhY2UgRE9NTm9kZUZpbHRlciA6IERPTU9iamVjdCA8RE9NTm9kZUZpbHRlcj4K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL29iamMvRE9NSW50ZXJuYWwubW0g
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9vYmpjL0RPTUludGVybmFsLm1tCmluZGV4IDM0MTA0
YjljOTJjOTk2Y2EwNjhlNWEyYjAwZGNiNDY2YzVkMjhkNWQuLjgxMzI2OThmMTQ0YjcyNDhjZmE5
NDMxODJmN2QzMDBlMmQ1NzA5ZGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L29iamMvRE9NSW50ZXJuYWwubW0KKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvb2JqYy9E
T01JbnRlcm5hbC5tbQpAQCAtMzMsMTAgKzMzLDIyIEBACiAjaW1wb3J0ICJXZWJTY3JpcHRPYmpl
Y3RQcml2YXRlLmgiCiAjaW1wb3J0ICJydW50aW1lX3Jvb3QuaCIKIAorI2lmIFBMQVRGT1JNKElP
UykKKyNkZWZpbmUgTkVFRFNfV1JBUFBFUl9DQUNIRV9MT0NLIDEKKyNlbmRpZgorCiAvLy0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogLy8gV3JhcHBpbmcgV2ViQ29yZSBpbXBsZW1l
bnRhdGlvbiBvYmplY3RzCiAKIHN0YXRpYyBOU01hcFRhYmxlKiBET01XcmFwcGVyQ2FjaGU7Cisg
ICAgCisjaWZkZWYgTkVFRFNfV1JBUFBFUl9DQUNIRV9MT0NLCitzdGF0aWMgTXV0ZXgmIHdyYXBw
ZXJDYWNoZUxvY2soKQoreworICAgIERFRklORV9TVEFUSUNfTE9DQUwoTXV0ZXgsIHdyYXBwZXJD
YWNoZU11dGV4LCAoKSk7CisgICAgcmV0dXJuIHdyYXBwZXJDYWNoZU11dGV4OworfQorI2VuZGlm
CiAKICNpZiBDT01QSUxFUihDTEFORykKICNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBwdXNoCkBA
IC01Nyw2ICs2OSw5IEBAIE5TTWFwVGFibGUqIGNyZWF0ZVdyYXBwZXJDYWNoZSgpCiAKIE5TT2Jq
ZWN0KiBnZXRET01XcmFwcGVyKERPTU9iamVjdEludGVybmFsKiBpbXBsKQogeworI2lmZGVmIE5F
RURTX1dSQVBQRVJfQ0FDSEVfTE9DSworICAgIE11dGV4TG9ja2VyIGxvY2tlcih3cmFwcGVyQ2Fj
aGVMb2NrKCkpOworI2VuZGlmCiAgICAgaWYgKCFET01XcmFwcGVyQ2FjaGUpCiAgICAgICAgIHJl
dHVybiBuaWw7CiAgICAgcmV0dXJuIHN0YXRpY19jYXN0PE5TT2JqZWN0Kj4oTlNNYXBHZXQoRE9N
V3JhcHBlckNhY2hlLCBpbXBsKSk7CkBAIC02NCw2ICs3OSw5IEBAIE5TT2JqZWN0KiBnZXRET01X
cmFwcGVyKERPTU9iamVjdEludGVybmFsKiBpbXBsKQogCiB2b2lkIGFkZERPTVdyYXBwZXIoTlNP
YmplY3QqIHdyYXBwZXIsIERPTU9iamVjdEludGVybmFsKiBpbXBsKQogeworI2lmZGVmIE5FRURT
X1dSQVBQRVJfQ0FDSEVfTE9DSworICAgIE11dGV4TG9ja2VyIGxvY2tlcih3cmFwcGVyQ2FjaGVM
b2NrKCkpOworI2VuZGlmCiAgICAgaWYgKCFET01XcmFwcGVyQ2FjaGUpCiAgICAgICAgIERPTVdy
YXBwZXJDYWNoZSA9IGNyZWF0ZVdyYXBwZXJDYWNoZSgpOwogICAgIE5TTWFwSW5zZXJ0KERPTVdy
YXBwZXJDYWNoZSwgaW1wbCwgd3JhcHBlcik7CkBAIC03MSw2ICs4OSw5IEBAIHZvaWQgYWRkRE9N
V3JhcHBlcihOU09iamVjdCogd3JhcHBlciwgRE9NT2JqZWN0SW50ZXJuYWwqIGltcGwpCiAKIHZv
aWQgcmVtb3ZlRE9NV3JhcHBlcihET01PYmplY3RJbnRlcm5hbCogaW1wbCkKIHsKKyNpZmRlZiBO
RUVEU19XUkFQUEVSX0NBQ0hFX0xPQ0sKKyAgICBNdXRleExvY2tlciBsb2NrZXIod3JhcHBlckNh
Y2hlTG9jaygpKTsKKyNlbmRpZgogICAgIGlmICghRE9NV3JhcHBlckNhY2hlKQogICAgICAgICBy
ZXR1cm47CiAgICAgTlNNYXBSZW1vdmUoRE9NV3JhcHBlckNhY2hlLCBpbXBsKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL29iamMvRE9NUHJpdmF0ZS5oIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvb2JqYy9ET01Qcml2YXRlLmgKaW5kZXggNDRhOGJkNmU4MGI0YWFmYzlj
NWIwZGZhMDZlMWM0MGMwYzc4ZDQ0ZS4uZTNmNGNlZWNhYTE4NjI5ODRjNzNlNWEzZGY3MGFiODE4
OTI3MjI4NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvb2JqYy9ET01Qcml2
YXRlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvb2JqYy9ET01Qcml2YXRlLmgKQEAg
LTI2LDggKzI2LDE1IEBACiAKICNpbXBvcnQgPFdlYkNvcmUvRE9NLmg+CiAKKyNpZiBQTEFURk9S
TShJT1MpCisjaW1wb3J0IDxXZWJDb3JlL1dlYkF1dG9jYXBpdGFsaXplLmg+CisjaW1wb3J0IDxD
b3JlVGV4dC9Db3JlVGV4dC5oPgorI2VuZGlmCisKIEBpbnRlcmZhY2UgRE9NTm9kZSAoRE9NTm9k
ZUV4dGVuc2lvbnNQZW5kaW5nUHVibGljKQorI2lmICFQTEFURk9STShJT1MpCiAtIChOU0ltYWdl
ICopcmVuZGVyZWRJbWFnZTsKKyNlbmRpZgogLSAoTlNBcnJheSAqKXRleHRSZWN0czsKIEBlbmQK
IApAQCAtMzgsNyArNDUsOSBAQAogLy8gRklYTUU6IHRoaXMgc2hvdWxkIGJlIHJlbW92ZWQgYXMg
c29vbiBhcyBhbGwgaW50ZXJuYWwgQXBwbGUgdXNlcyBvZiBpdCBoYXZlIGJlZW4gcmVwbGFjZWQg
d2l0aAogLy8gY2FsbHMgdG8gdGhlIHB1YmxpYyBtZXRob2QgLSAoTlNDb2xvciAqKWNvbG9yLgog
QGludGVyZmFjZSBET01SR0JDb2xvciAoV2ViUHJpdmF0ZSkKKyNpZiAhUExBVEZPUk0oSU9TKQog
LSAoTlNDb2xvciAqKV9jb2xvcjsKKyNlbmRpZgogQGVuZAogCiAvLyBGSVhNRTogdGhpcyBzaG91
bGQgYmUgcmVtb3ZlZCBhcyBzb29uIGFzIGFsbCBpbnRlcm5hbCBBcHBsZSB1c2VzIG9mIGl0IGhh
dmUgYmVlbiByZXBsYWNlZCB3aXRoCkBAIC00OCwxNSArNTcsMjcgQEAKIEBlbmQKIAogQGludGVy
ZmFjZSBET01SYW5nZSAoRE9NUmFuZ2VFeHRlbnNpb25zKQorI2lmIFBMQVRGT1JNKElPUykKKy0g
KENHUmVjdClib3VuZGluZ0JveDsKKyNlbHNlCiAtIChOU1JlY3QpYm91bmRpbmdCb3g7CisjZW5k
aWYKKyNpZiAhUExBVEZPUk0oSU9TKQogLSAoTlNJbWFnZSAqKXJlbmRlcmVkSW1hZ2VGb3JjaW5n
QmxhY2tUZXh0OihCT09MKWZvcmNlQmxhY2tUZXh0OworI2Vsc2UKKy0gKENHSW1hZ2VSZWYpcmVu
ZGVyZWRJbWFnZUZvcmNpbmdCbGFja1RleHQ6KEJPT0wpZm9yY2VCbGFja1RleHQ7CisjZW5kaWYK
IC0gKE5TQXJyYXkgKilsaW5lQm94UmVjdHM7IC8vIERlcHJlY2F0ZWQuIFVzZSB0ZXh0UmVjdHMg
aW5zdGVhZC4KIC0gKE5TQXJyYXkgKil0ZXh0UmVjdHM7CiBAZW5kCiAKIEBpbnRlcmZhY2UgRE9N
RWxlbWVudCAoV2ViUHJpdmF0ZSkKKyNpZiAhUExBVEZPUk0oSU9TKQogLSAoTlNGb250ICopX2Zv
bnQ7CiAtIChOU0RhdGEgKilfaW1hZ2VUSUZGUmVwcmVzZW50YXRpb247CisjZWxzZQorLSAoQ1RG
b250UmVmKV9mb250OworI2VuZGlmCiAtIChOU1VSTCAqKV9nZXRVUkxBdHRyaWJ1dGU6KE5TU3Ry
aW5nICopbmFtZTsKIC0gKEJPT0wpaXNGb2N1c2VkOwogQGVuZApAQCAtODEsNyArMTAyLDkgQEAK
IEBpbnRlcmZhY2UgRE9NSFRNTElucHV0RWxlbWVudCAoRm9ybUF1dG9GaWxsVHJhbnNpdGlvbikK
IC0gKEJPT0wpX2lzQXV0b2ZpbGxlZDsKIC0gKEJPT0wpX2lzVGV4dEZpZWxkOworI2lmICFQTEFU
Rk9STShJT1MpCiAtIChOU1JlY3QpX3JlY3RPblNjcmVlbjsgLy8gYm91bmRpbmcgYm94IG9mIHRo
ZSB0ZXh0IGZpZWxkLCBpbiBzY3JlZW4gY29vcmRpbmF0ZXMKKyNlbmRpZgogLSAodm9pZClfcmVw
bGFjZUNoYXJhY3RlcnNJblJhbmdlOihOU1JhbmdlKXRhcmdldFJhbmdlIHdpdGhTdHJpbmc6KE5T
U3RyaW5nICopcmVwbGFjZW1lbnRTdHJpbmcgc2VsZWN0aW5nRnJvbUluZGV4OihpbnQpaW5kZXg7
CiAtIChOU1JhbmdlKV9zZWxlY3RlZFJhbmdlOwogLSAodm9pZClfc2V0QXV0b2ZpbGxlZDooQk9P
TClmaWxsZWQ7CkBAIC0xMDUsMyArMTI4LDI2IEBACiAtICh2b2lkKV9hY3RpdmF0ZUl0ZW1BdElu
ZGV4OihpbnQpaW5kZXg7CiAtICh2b2lkKV9hY3RpdmF0ZUl0ZW1BdEluZGV4OihpbnQpaW5kZXgg
YWxsb3dNdWx0aXBsZVNlbGVjdGlvbjooQk9PTClhbGxvd011bHRpcGxlU2VsZWN0aW9uOwogQGVu
ZAorCisjaWYgUExBVEZPUk0oSU9TKQorZW51bSB7IFdlYk1lZGlhUXVlcnlPcmllbnRhdGlvbkN1
cnJlbnQsIFdlYk1lZGlhUXVlcnlPcmllbnRhdGlvblBvcnRyYWl0LCBXZWJNZWRpYVF1ZXJ5T3Jp
ZW50YXRpb25MYW5kc2NhcGUgfTsKK0BpbnRlcmZhY2UgRE9NSFRNTExpbmtFbGVtZW50IChXZWJQ
cml2YXRlKQorLSAoQk9PTClfbWVkaWFRdWVyeU1hdGNoZXNGb3JPcmllbnRhdGlvbjooaW50KW9y
aWVudGF0aW9uOworLSAoQk9PTClfbWVkaWFRdWVyeU1hdGNoZXM7CitAZW5kCisKKy8vIFRoZXNl
IGNoYW5nZXMgYXJlIHVzZWZ1bCB0byBnZXQgdGhlIEF1dG9jYXBpdGFsaXplVHlwZSBvbiBwYXJ0
aWN1bGFyIGZvcm0gY29udHJvbHMuCitAaW50ZXJmYWNlIERPTUhUTUxJbnB1dEVsZW1lbnQgKEF1
dG9jYXBpdGFsaXplQWRkaXRpb25zKQorLSAoV2ViQXV0b2NhcGl0YWxpemVUeXBlKV9hdXRvY2Fw
aXRhbGl6ZVR5cGU7CitAZW5kCisKK0BpbnRlcmZhY2UgRE9NSFRNTFRleHRBcmVhRWxlbWVudCAo
QXV0b2NhcGl0YWxpemVBZGRpdGlvbnMpCistIChXZWJBdXRvY2FwaXRhbGl6ZVR5cGUpX2F1dG9j
YXBpdGFsaXplVHlwZTsKK0BlbmQKKworLy8gVGhlc2UgYXJlIHVzZWQgYnkgRGF0ZSBhbmQgVGlt
ZSBpbnB1dCB0eXBlcyBiZWNhdXNlIHRoZSBnZW5lcmF0ZWQgT2JqQyBtZXRob2RzIGRlZmF1bHQg
dG8gbm90IGRpc3BhdGNoaW5nIGV2ZW50cy4KK0BpbnRlcmZhY2UgRE9NSFRNTElucHV0RWxlbWVu
dCAoV2ViSW5wdXRDaGFuZ2VFdmVudEFkZGl0aW9ucykKKy0gKHZvaWQpc2V0VmFsdWVXaXRoQ2hh
bmdlRXZlbnQ6KE5TU3RyaW5nICopbmV3VmFsdWU7CistICh2b2lkKXNldFZhbHVlQXNOdW1iZXJX
aXRoQ2hhbmdlRXZlbnQ6KGRvdWJsZSluZXdWYWx1ZUFzTnVtYmVyOworQGVuZAorI2VuZGlmCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9vYmpjL0RPTVVJS2l0RXh0ZW5zaW9u
cy5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvb2JqYy9ET01VSUtpdEV4dGVuc2lvbnMuaApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi5lMDViZDJmYWRiYjVkYTNlMWYwZDZjMmMxMjU4MzY3NmZkODM2MDViCi0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvb2JqYy9ET01VSUtpdEV4dGVu
c2lvbnMuaApAQCAtMCwwICsxLDg5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA3LCAyMDA4
IEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICog
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKgorICovCisKKyNpZiBQTEFURk9STShJT1MpCisK
KyNpbXBvcnQgPFdlYkNvcmUvRE9NRWxlbWVudC5oPgorI2ltcG9ydCA8V2ViQ29yZS9ET01FeHRl
bnNpb25zLmg+CisjaW1wb3J0IDxXZWJDb3JlL0RPTUhUTUxBcmVhRWxlbWVudC5oPgorI2ltcG9y
dCA8V2ViQ29yZS9ET01IVE1MSW1hZ2VFbGVtZW50Lmg+CisjaW1wb3J0IDxXZWJDb3JlL0RPTUhU
TUxTZWxlY3RFbGVtZW50Lmg+CisjaW1wb3J0IDxXZWJDb3JlL0RPTU5vZGUuaD4KKyNpbXBvcnQg
PFdlYkNvcmUvRE9NUmFuZ2UuaD4KKwordHlwZWRlZiBlbnVtIHsgCisgICAgLy8gVGhlIGZpcnN0
IGZvdXIgbWF0Y2ggU2VsZWN0aW9uRGlyZWN0aW9uLiAgVGhlIGxhc3QgdHdvIGRvbid0IGhhdmUg
V2ViS2l0IGNvdW50ZXJwYXJ0cyBiZWNhdXNlCisgICAgLy8gdGhleSBhcmVuJ3QgbmVjZXNzYXJ5
IHVudGlsIHRoZXJlIGlzIHN1cHBvcnQgdmVydGljYWwgbGF5b3V0LgorICAgIFdlYlRleHRBZGp1
c3RtZW50Rm9yd2FyZCwKKyAgICBXZWJUZXh0QWRqdXN0bWVudEJhY2t3YXJkLAorICAgIFdlYlRl
eHRBZGp1c3RtZW50UmlnaHQsCisgICAgV2ViVGV4dEFkanVzdG1lbnRMZWZ0LAorICAgIFdlYlRl
eHRBZGp1c3RtZW50VXAsCisgICAgV2ViVGV4dEFkanVzdG1lbnREb3duCit9IFdlYlRleHRBZGp1
c3RtZW50RGlyZWN0aW9uOyAKKworQGludGVyZmFjZSBET01SYW5nZSAoVUlLaXRFeHRlbnNpb25z
KQorCistICh2b2lkKW1vdmU6KFVJbnQzMilhbW91bnQgaW5EaXJlY3Rpb246KFdlYlRleHRBZGp1
c3RtZW50RGlyZWN0aW9uKWRpcmVjdGlvbjsKKy0gKHZvaWQpZXh0ZW5kOihVSW50MzIpYW1vdW50
IGluRGlyZWN0aW9uOihXZWJUZXh0QWRqdXN0bWVudERpcmVjdGlvbilkaXJlY3Rpb247CistIChE
T01Ob2RlICopZmlyc3ROb2RlOworCitAZW5kCisKK0BpbnRlcmZhY2UgRE9NTm9kZSAoVUlLaXRF
eHRlbnNpb25zKQorLSAoTlNBcnJheSAqKWJvcmRlclJhZGlpOworLSAoTlNBcnJheSAqKWJvdW5k
aW5nQm94ZXM7CistIChOU0FycmF5ICopYWJzb2x1dGVRdWFkczsgICAgIC8vIHJldHVybiBhcnJh
eSBvZiBXS1F1YWRPYmplY3RzLiB0YWtlcyB0cmFuc2Zvcm1zIGludG8gYWNjb3VudAorCistIChC
T09MKWNvbnRhaW5zT25seUlubGluZU9iamVjdHM7CistIChCT09MKWlzU2VsZWN0YWJsZUJsb2Nr
OworLSAoRE9NUmFuZ2UgKilyYW5nZU9mQ29udGFpbmluZ1BhcmFncmFwaDsKKy0gKENHRmxvYXQp
dGV4dEhlaWdodDsKKy0gKERPTU5vZGUgKilmaW5kRXhwbG9kZWRUZXh0Tm9kZUF0UG9pbnQ6KENH
UG9pbnQpcG9pbnQ7ICAvLyBBIHNlY29uZC1jaGFuY2UgcGFzcyB0byBsb29rIGZvciB0ZXh0IG5v
ZGVzIG1pc3NlZCBieSB0aGUgaGl0IHRlc3QuCitAZW5kCisKK0BpbnRlcmZhY2UgRE9NSFRNTEFy
ZWFFbGVtZW50IChVSUtpdEV4dGVuc2lvbnMpCistIChDR1JlY3QpYm91bmRpbmdCb3hXaXRoT3du
ZXI6KERPTU5vZGUgKilhbk93bmVyOworLSAoV0tRdWFkKWFic29sdXRlUXVhZFdpdGhPd25lcjoo
RE9NTm9kZSAqKWFuT3duZXI7ICAgICAvLyB0YWtlcyB0cmFuc2Zvcm1zIGludG8gYWNjb3VudAor
LSAoTlNBcnJheSAqKWJvdW5kaW5nQm94ZXNXaXRoT3duZXI6KERPTU5vZGUgKilhbk93bmVyOwor
LSAoTlNBcnJheSAqKWFic29sdXRlUXVhZHNXaXRoT3duZXI6KERPTU5vZGUgKilhbk93bmVyOyAv
LyByZXR1cm4gYXJyYXkgb2YgV0tRdWFkT2JqZWN0cy4gdGFrZXMgdHJhbnNmb3JtcyBpbnRvIGFj
Y291bnQKK0BlbmQKKworQGludGVyZmFjZSBET01IVE1MU2VsZWN0RWxlbWVudCAoVUlLaXRFeHRl
bnNpb25zKQorLSAodW5zaWduZWQpY29tcGxldGVMZW5ndGg7CistIChET01Ob2RlICopbGlzdEl0
ZW1BdEluZGV4OihpbnQpYW5JbmRleDsKK0BlbmQKKworQGludGVyZmFjZSBET01IVE1MSW1hZ2VF
bGVtZW50IChXZWJET01IVE1MSW1hZ2VFbGVtZW50T3BlcmF0aW9uc1ByaXZhdGUpCistIChOU0Rh
dGEgKilkYXRhUmVwcmVzZW50YXRpb246KEJPT0wpcmF3SW1hZ2VEYXRhOworLSAoTlNTdHJpbmcg
KiltaW1lVHlwZTsKK0BlbmQKKworQGludGVyZmFjZSBET01FbGVtZW50IChET01VSUtpdENvbXBs
ZXhpdHlFeHRlbnNpb25zKSAKKy0gKGludClzdHJ1Y3R1cmFsQ29tcGxleGl0eUNvbnRyaWJ1dGlv
bjsgLy8gRG9lcyBub3QgaW5jbHVkZSBjaGlsZHJlbi4KK0BlbmQKKworI2VuZGlmCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9vYmpjL0RPTVVJS2l0RXh0ZW5zaW9ucy5tbSBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL29iamMvRE9NVUlLaXRFeHRlbnNpb25zLm1tCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjBjZTBiYzQ4NDViZmFmYWJlZTA3NDQ4YzNiYTNmZmQ4ZGY5YTQxY2QKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9vYmpjL0RPTVVJS2l0RXh0ZW5zaW9u
cy5tbQpAQCAtMCwwICsxLDUwNyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwNywgMjAwOCwg
MjAwOSwgMjAxMyBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSwgSU5DLiBgYEFTIElTJycgQU5E
IEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
CisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICoKKyAqLworCisjaWYgUExBVEZP
Uk0oSU9TKQorCisjaW1wb3J0ICJjb25maWcuaCIKKyNpbXBvcnQgImh0bWxlZGl0aW5nLmgiCisK
KyNpbXBvcnQgIkNhY2hlZEltYWdlLmgiCisjaW1wb3J0ICJET00uaCIKKyNpbXBvcnQgIkRPTUNv
cmUuaCIKKyNpbXBvcnQgIkRPTUV4dGVuc2lvbnMuaCIKKyNpbXBvcnQgIkRPTUhUTUwuaCIKKyNp
bXBvcnQgIkRPTUhUTUxBcmVhRWxlbWVudEludGVybmFsLmgiCisjaW1wb3J0ICJET01IVE1MRWxl
bWVudEludGVybmFsLmgiCisjaW1wb3J0ICJET01IVE1MSW1hZ2VFbGVtZW50SW50ZXJuYWwuaCIK
KyNpbXBvcnQgIkRPTUhUTUxTZWxlY3RFbGVtZW50SW50ZXJuYWwuaCIKKyNpbXBvcnQgIkRPTUlu
dGVybmFsLmgiCisjaW1wb3J0ICJET01Ob2RlSW50ZXJuYWwuaCIKKyNpbXBvcnQgIkRPTVJhbmdl
SW50ZXJuYWwuaCIKKyNpbXBvcnQgIkRPTVVJS2l0RXh0ZW5zaW9ucy5oIgorI2ltcG9ydCAiRmxv
YXRQb2ludC5oIgorI2ltcG9ydCAiRm9udC5oIgorI2ltcG9ydCAiRnJhbWVTZWxlY3Rpb24uaCIK
KyNpbXBvcnQgIkhUTUxBcmVhRWxlbWVudC5oIgorI2ltcG9ydCAiSFRNTEltYWdlRWxlbWVudC5o
IgorI2ltcG9ydCAiSFRNTElucHV0RWxlbWVudC5oIgorI2ltcG9ydCAiSFRNTFNlbGVjdEVsZW1l
bnQuaCIKKyNpbXBvcnQgIkhUTUxUZXh0QXJlYUVsZW1lbnQuaCIKKyNpbXBvcnQgIkltYWdlLmgi
CisjaW1wb3J0ICJJbmxpbmVCb3guaCIKKyNpbXBvcnQgIk5vZGUuaCIKKyNpbXBvcnQgIlJhbmdl
LmgiCisjaW1wb3J0ICJSZW5kZXJCbG9jay5oIgorI2ltcG9ydCAiUmVuZGVyQmxvY2tGbG93Lmgi
CisjaW1wb3J0ICJSZW5kZXJCb3guaCIKKyNpbXBvcnQgIlJvdW5kZWRSZWN0LmgiCisjaW1wb3J0
ICJSZW5kZXJPYmplY3QuaCIKKyNpbXBvcnQgIlJlbmRlclN0eWxlQ29uc3RhbnRzLmgiCisjaW1w
b3J0ICJSZW5kZXJUZXh0LmgiCisjaW1wb3J0ICJSZXNvdXJjZUJ1ZmZlci5oIgorI2ltcG9ydCAi
U2hhcmVkQnVmZmVyLmgiCisjaW1wb3J0ICJUZXh0SXRlcmF0b3IuaCIKKyNpbXBvcnQgIlZpc2li
bGVQb3NpdGlvbi5oIgorI2ltcG9ydCAiVmlzaWJsZVVuaXRzLmgiCisKKyNpbXBvcnQgIldBS0Fw
cEtpdFN0dWJzLmgiCisKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOworCit1c2luZyBXZWJDb3Jl
OjpGbG9hdFBvaW50OwordXNpbmcgV2ViQ29yZTo6Rm9udDsKK3VzaW5nIFdlYkNvcmU6OkhUTUxB
cmVhRWxlbWVudDsKK3VzaW5nIFdlYkNvcmU6OkhUTUxJbWFnZUVsZW1lbnQ7Cit1c2luZyBXZWJD
b3JlOjpIVE1MU2VsZWN0RWxlbWVudDsKK3VzaW5nIFdlYkNvcmU6OklubGluZUJveDsKK3VzaW5n
IFdlYkNvcmU6OkludFJlY3Q7Cit1c2luZyBXZWJDb3JlOjpOb2RlOwordXNpbmcgV2ViQ29yZTo6
UG9zaXRpb247Cit1c2luZyBXZWJDb3JlOjpSYW5nZTsKK3VzaW5nIFdlYkNvcmU6OlJlbmRlckJs
b2NrOwordXNpbmcgV2ViQ29yZTo6UmVuZGVyQm94OwordXNpbmcgV2ViQ29yZTo6UmVuZGVyT2Jq
ZWN0OwordXNpbmcgV2ViQ29yZTo6UmVuZGVyU3R5bGU7Cit1c2luZyBXZWJDb3JlOjpSZW5kZXJU
ZXh0OwordXNpbmcgV2ViQ29yZTo6Um9vdElubGluZUJveDsKK3VzaW5nIFdlYkNvcmU6OlRleHRJ
dGVyYXRvcjsKK3VzaW5nIFdlYkNvcmU6OlZpc2libGVQb3NpdGlvbjsKKworQGltcGxlbWVudGF0
aW9uIERPTVJhbmdlIChVSUtpdEV4dGVuc2lvbnMpCisKKy0gKHZvaWQpbW92ZTooVUludDMyKWFt
b3VudCBpbkRpcmVjdGlvbjooV2ViVGV4dEFkanVzdG1lbnREaXJlY3Rpb24pZGlyZWN0aW9uCit7
CisgICAgUmFuZ2UgKnJhbmdlID0gY29yZShzZWxmKTsKKyAgICBGcmFtZVNlbGVjdGlvbiBmcmFt
ZVNlbGVjdGlvbjsKKyAgICBmcmFtZVNlbGVjdGlvbi5tb3ZlVG8ocmFuZ2UsIERPV05TVFJFQU0p
OworICAgIAorICAgIFRleHRHcmFudWxhcml0eSBncmFudWxhcml0eSA9IENoYXJhY3RlckdyYW51
bGFyaXR5OworICAgIC8vIFVudGlsIFdlYktpdCBzdXBwb3J0cyB2ZXJ0aWNhbCBsYXlvdXQsICJk
b3duIiBpcyBlcXVpdmFsZW50IHRvICJmb3J3YXJkIGJ5IGEgbGluZSIgYW5kCisgICAgLy8gInVw
IiBpcyBlcXVpdmFsZW50IHRvICJiYWNrd2FyZCBieSBhIGxpbmUiLgorICAgIGlmIChkaXJlY3Rp
b24gPT0gV2ViVGV4dEFkanVzdG1lbnREb3duKSB7CisgICAgICAgIGRpcmVjdGlvbiA9IFdlYlRl
eHRBZGp1c3RtZW50Rm9yd2FyZDsKKyAgICAgICAgZ3JhbnVsYXJpdHkgPSBMaW5lR3JhbnVsYXJp
dHk7CisgICAgfSBlbHNlIGlmIChkaXJlY3Rpb24gPT0gV2ViVGV4dEFkanVzdG1lbnRVcCkgewor
ICAgICAgICBkaXJlY3Rpb24gPSBXZWJUZXh0QWRqdXN0bWVudEJhY2t3YXJkOworICAgICAgICBn
cmFudWxhcml0eSA9IExpbmVHcmFudWxhcml0eTsKKyAgICB9CisgICAgCisgICAgZm9yIChVSW50
MzIgaSA9IDA7IGkgPCBhbW91bnQ7IGkrKykKKyAgICAgICAgZnJhbWVTZWxlY3Rpb24ubW9kaWZ5
KEZyYW1lU2VsZWN0aW9uOjpBbHRlcmF0aW9uTW92ZSwgKFNlbGVjdGlvbkRpcmVjdGlvbilkaXJl
Y3Rpb24sIGdyYW51bGFyaXR5KTsKKyAgICAKKyAgICBFeGNlcHRpb25Db2RlIGlnbm9yZWQ7Cisg
ICAgcmFuZ2UtPnNldFN0YXJ0KGZyYW1lU2VsZWN0aW9uLnN0YXJ0KCkuYW5jaG9yTm9kZSgpLCBm
cmFtZVNlbGVjdGlvbi5zdGFydCgpLmRlcHJlY2F0ZWRFZGl0aW5nT2Zmc2V0KCksIGlnbm9yZWQp
OworICAgIHJhbmdlLT5zZXRFbmQoZnJhbWVTZWxlY3Rpb24uZW5kKCkuYW5jaG9yTm9kZSgpLCBm
cmFtZVNlbGVjdGlvbi5lbmQoKS5kZXByZWNhdGVkRWRpdGluZ09mZnNldCgpLCBpZ25vcmVkKTsK
K30KKworLSAodm9pZClleHRlbmQ6KFVJbnQzMilhbW91bnQgaW5EaXJlY3Rpb246KFdlYlRleHRB
ZGp1c3RtZW50RGlyZWN0aW9uKWRpcmVjdGlvbgoreworICAgIFJhbmdlICpyYW5nZSA9IGNvcmUo
c2VsZik7CisgICAgRnJhbWVTZWxlY3Rpb24gZnJhbWVTZWxlY3Rpb247CisgICAgZnJhbWVTZWxl
Y3Rpb24ubW92ZVRvKHJhbmdlLCBET1dOU1RSRUFNKTsKKyAgICAKKyAgICBmb3IgKFVJbnQzMiBp
ID0gMDsgaSA8IGFtb3VudDsgaSsrKQorICAgICAgICBmcmFtZVNlbGVjdGlvbi5tb2RpZnkoRnJh
bWVTZWxlY3Rpb246OkFsdGVyYXRpb25FeHRlbmQsIChTZWxlY3Rpb25EaXJlY3Rpb24pZGlyZWN0
aW9uLCBDaGFyYWN0ZXJHcmFudWxhcml0eSk7ICAgIAorICAgIAorICAgIEV4Y2VwdGlvbkNvZGUg
aWdub3JlZDsKKyAgICByYW5nZS0+c2V0U3RhcnQoZnJhbWVTZWxlY3Rpb24uc3RhcnQoKS5hbmNo
b3JOb2RlKCksIGZyYW1lU2VsZWN0aW9uLnN0YXJ0KCkuZGVwcmVjYXRlZEVkaXRpbmdPZmZzZXQo
KSwgaWdub3JlZCk7CisgICAgcmFuZ2UtPnNldEVuZChmcmFtZVNlbGVjdGlvbi5lbmQoKS5hbmNo
b3JOb2RlKCksIGZyYW1lU2VsZWN0aW9uLmVuZCgpLmRlcHJlY2F0ZWRFZGl0aW5nT2Zmc2V0KCks
IGlnbm9yZWQpOyAgICAKK30KKworLSAoRE9NTm9kZSAqKWZpcnN0Tm9kZQoreworICAgIHJldHVy
biBraXQoY29yZShzZWxmKS0+Zmlyc3ROb2RlKCkpOworfQorCitAZW5kCisKKy8vLS0tLS0tLS0t
LS0tLS0tLS0tLQorCitAaW1wbGVtZW50YXRpb24gRE9NTm9kZSAoVUlLaXRFeHRlbnNpb25zKQor
CisvLyBOT1RFOiBDb2RlIGJsYXRhbnRseSBjb3BpZWQgZnJvbSBbV2ViSW5zcGVjdG9yIF9oaWdo
dE5vZGU6XSBpbiBXZWJLaXQvV2ViSW5zcGVjdG9yL1dlYkluc3BlY3Rvci5tQDE5ODYxCistIChO
U0FycmF5ICopYm91bmRpbmdCb3hlcworeworICAgIE5TQXJyYXkgKnJlY3RzID0gbmlsOworICAg
IE5TUmVjdCBib3VuZHMgPSBbc2VsZiBib3VuZGluZ0JveF07CisgICAgaWYgKCFOU0lzRW1wdHlS
ZWN0KGJvdW5kcykpIHsKKyAgICAgICAgaWYgKFtzZWxmIGlzS2luZE9mQ2xhc3M6W0RPTUVsZW1l
bnQgY2xhc3NdXSkgeworICAgICAgICAgICAgRE9NRG9jdW1lbnQgKmRvY3VtZW50ID0gW3NlbGYg
b3duZXJEb2N1bWVudF07CisgICAgICAgICAgICBET01DU1NTdHlsZURlY2xhcmF0aW9uICpzdHls
ZSA9IFtkb2N1bWVudCBnZXRDb21wdXRlZFN0eWxlOihET01FbGVtZW50ICopc2VsZiBwc2V1ZG9F
bGVtZW50OkAiIl07CisgICAgICAgICAgICBpZiAoW1tzdHlsZSBnZXRQcm9wZXJ0eVZhbHVlOkAi
ZGlzcGxheSJdIGlzRXF1YWxUb1N0cmluZzpAImlubGluZSJdKQorICAgICAgICAgICAgICAgIHJl
Y3RzID0gW3NlbGYgbGluZUJveFJlY3RzXTsKKyAgICAgICAgfSBlbHNlIGlmIChbc2VsZiBpc0tp
bmRPZkNsYXNzOltET01UZXh0IGNsYXNzXV0KKyNpZiBFTkFCTEUoU1ZHX0RPTV9PQkpDX0JJTkRJ
TkdTKQorICAgICAgICAgICAgICAgICAgICYmICFbW3NlbGYgcGFyZW50Tm9kZV0gaXNLaW5kT2ZD
bGFzczpOU0NsYXNzRnJvbVN0cmluZyhAIkRPTVNWR0VsZW1lbnQiKV0KKyNlbmRpZgorICAgICAg
ICAgICAgICAgICAgKQorICAgICAgICAgICAgcmVjdHMgPSBbc2VsZiBsaW5lQm94UmVjdHNdOwor
ICAgIH0KKworICAgIGlmICghW3JlY3RzIGNvdW50XSkKKyAgICAgICAgcmVjdHMgPSBbTlNBcnJh
eSBhcnJheVdpdGhPYmplY3Q6W05TVmFsdWUgdmFsdWVXaXRoUmVjdDpib3VuZHNdXTsKKworICAg
IHJldHVybiByZWN0czsKK30KKworLSAoTlNBcnJheSAqKWFic29sdXRlUXVhZHMKK3sKKyAgICBO
U0FycmF5ICpxdWFkcyA9IG5pbDsKKyAgICBOU1JlY3QgYm91bmRzID0gW3NlbGYgYm91bmRpbmdC
b3hdOworICAgIGlmICghTlNJc0VtcHR5UmVjdChib3VuZHMpKSB7CisgICAgICAgIGlmIChbc2Vs
ZiBpc0tpbmRPZkNsYXNzOltET01FbGVtZW50IGNsYXNzXV0pIHsKKyAgICAgICAgICAgIERPTURv
Y3VtZW50ICpkb2N1bWVudCA9IFtzZWxmIG93bmVyRG9jdW1lbnRdOworICAgICAgICAgICAgRE9N
Q1NTU3R5bGVEZWNsYXJhdGlvbiAqc3R5bGUgPSBbZG9jdW1lbnQgZ2V0Q29tcHV0ZWRTdHlsZToo
RE9NRWxlbWVudCAqKXNlbGYgcHNldWRvRWxlbWVudDpAIiJdOworICAgICAgICAgICAgaWYgKFtb
c3R5bGUgZ2V0UHJvcGVydHlWYWx1ZTpAImRpc3BsYXkiXSBpc0VxdWFsVG9TdHJpbmc6QCJpbmxp
bmUiXSkKKyAgICAgICAgICAgICAgICBxdWFkcyA9IFtzZWxmIGxpbmVCb3hRdWFkc107CisgICAg
ICAgIH0gZWxzZSBpZiAoW3NlbGYgaXNLaW5kT2ZDbGFzczpbRE9NVGV4dCBjbGFzc11dCisjaWYg
RU5BQkxFKFNWR19ET01fT0JKQ19CSU5ESU5HUykKKyAgICAgICAgICAgICAgICAgICAmJiAhW1tz
ZWxmIHBhcmVudE5vZGVdIGlzS2luZE9mQ2xhc3M6TlNDbGFzc0Zyb21TdHJpbmcoQCJET01TVkdF
bGVtZW50IildCisjZW5kaWYKKyAgICAgICAgICAgICAgICAgICApCisgICAgICAgICAgICBxdWFk
cyA9IFtzZWxmIGxpbmVCb3hRdWFkc107CisgICAgfQorCisgICAgaWYgKCFbcXVhZHMgY291bnRd
KSB7CisgICAgICAgIFdLUXVhZE9iamVjdCogcXVhZE9iamVjdCA9IFtbV0tRdWFkT2JqZWN0IGFs
bG9jXSBpbml0V2l0aFF1YWQ6W3NlbGYgYWJzb2x1dGVRdWFkXV07CisgICAgICAgIHF1YWRzID0g
W05TQXJyYXkgYXJyYXlXaXRoT2JqZWN0OnF1YWRPYmplY3RdOworICAgICAgICBbcXVhZE9iamVj
dCByZWxlYXNlXTsKKyAgICB9CisKKyAgICByZXR1cm4gcXVhZHM7Cit9CisKKy0gKE5TQXJyYXkg
Kilib3JkZXJSYWRpaQoreworICAgIFJlbmRlck9iamVjdCogcmVuZGVyZXIgPSBjb3JlKHNlbGYp
LT5yZW5kZXJlcigpOworICAgIAorCisgICAgaWYgKHJlbmRlcmVyICYmIHJlbmRlcmVyLT5pc0Jv
eCgpKSB7CisgICAgICAgIFJvdW5kZWRSZWN0OjpSYWRpaSByYWRpaSA9IHRvUmVuZGVyQm94KHJl
bmRlcmVyKS0+Ym9yZGVyUmFkaWkoKTsKKyAgICAgICAgcmV0dXJuIEBbW05TVmFsdWUgdmFsdWVX
aXRoU2l6ZTooQ0dTaXplKXJhZGlpLnRvcExlZnQoKV0sCisgICAgICAgICAgICAgICAgIFtOU1Zh
bHVlIHZhbHVlV2l0aFNpemU6KENHU2l6ZSlyYWRpaS50b3BSaWdodCgpXSwKKyAgICAgICAgICAg
ICAgICAgW05TVmFsdWUgdmFsdWVXaXRoU2l6ZTooQ0dTaXplKXJhZGlpLmJvdHRvbUxlZnQoKV0s
CisgICAgICAgICAgICAgICAgIFtOU1ZhbHVlIHZhbHVlV2l0aFNpemU6KENHU2l6ZSlyYWRpaS5i
b3R0b21SaWdodCgpXV07CisgICAgfQorICAgIE5TVmFsdWUgKmVtcHR5VmFsdWUgPSBbTlNWYWx1
ZSB2YWx1ZVdpdGhTaXplOkNHU2l6ZVplcm9dOworICAgIHJldHVybiBAW2VtcHR5VmFsdWUsIGVt
cHR5VmFsdWUsIGVtcHR5VmFsdWUsIGVtcHR5VmFsdWVdOworfQorCistIChCT09MKWNvbnRhaW5z
T25seUlubGluZU9iamVjdHMKK3sKKyAgICBSZW5kZXJPYmplY3QgKiByZW5kZXJlciA9IGNvcmUo
c2VsZiktPnJlbmRlcmVyKCk7CisgICAgcmV0dXJuICAocmVuZGVyZXIgJiYKKyAgICAgICAgICAg
ICByZW5kZXJlci0+Y2hpbGRyZW5JbmxpbmUoKSAmJgorICAgICAgICAgICAgIChyZW5kZXJlci0+
aXNSZW5kZXJCbG9jaygpICYmIHRvUmVuZGVyQmxvY2socmVuZGVyZXIpLT5pbmxpbmVFbGVtZW50
Q29udGludWF0aW9uKCkgPT0gbmlsKSAmJgorICAgICAgICAgICAgICFyZW5kZXJlci0+aXNUYWJs
ZSgpKTsKK30KKworLSAoQk9PTClpc1NlbGVjdGFibGVCbG9jaworeworICAgIFJlbmRlck9iamVj
dCAqIHJlbmRlcmVyID0gY29yZShzZWxmKS0+cmVuZGVyZXIoKTsKKyAgICByZXR1cm4gKHJlbmRl
cmVyICYmIChyZW5kZXJlci0+aXNSZW5kZXJCbG9ja0Zsb3coKSB8fCAocmVuZGVyZXItPmlzUmVu
ZGVyQmxvY2soKSAmJiB0b1JlbmRlckJsb2NrKHJlbmRlcmVyKS0+aW5saW5lRWxlbWVudENvbnRp
bnVhdGlvbigpICE9IG5pbCkpKTsKK30KKworLSAoRE9NUmFuZ2UgKilyYW5nZU9mQ29udGFpbmlu
Z1BhcmFncmFwaAoreworICAgIERPTVJhbmdlICpyZXN1bHQgPSBuaWw7CisgICAgCisgICAgTm9k
ZSAqbm9kZSA9IGNvcmUoc2VsZik7ICAgIAorICAgIFZpc2libGVQb3NpdGlvbiB2aXNpYmxlUG9z
aXRpb24oY3JlYXRlTGVnYWN5RWRpdGluZ1Bvc2l0aW9uKG5vZGUsIDApLCBXZWJDb3JlOjpET1dO
U1RSRUFNKTsKKyAgICBWaXNpYmxlUG9zaXRpb24gdmlzaWJsZVBhcmFncmFwaFN0YXJ0ID0gc3Rh
cnRPZlBhcmFncmFwaCh2aXNpYmxlUG9zaXRpb24pOworICAgIFZpc2libGVQb3NpdGlvbiB2aXNp
YmxlUGFyYWdyYXBoRW5kID0gZW5kT2ZQYXJhZ3JhcGgodmlzaWJsZVBvc2l0aW9uKTsKKyAgICAK
KyAgICBQb3NpdGlvbiBwYXJhZ3JhcGhTdGFydCA9IHZpc2libGVQYXJhZ3JhcGhTdGFydC5kZWVw
RXF1aXZhbGVudCgpLnBhcmVudEFuY2hvcmVkRXF1aXZhbGVudCgpOworICAgIFBvc2l0aW9uIHBh
cmFncmFwaEVuZCA9IHZpc2libGVQYXJhZ3JhcGhFbmQuZGVlcEVxdWl2YWxlbnQoKS5wYXJlbnRB
bmNob3JlZEVxdWl2YWxlbnQoKTsgICAgCisgICAgCisgICAgaWYgKHBhcmFncmFwaFN0YXJ0Lmlz
Tm90TnVsbCgpICYmIHBhcmFncmFwaEVuZC5pc05vdE51bGwoKSkgeworICAgICAgICBQYXNzUmVm
UHRyPFJhbmdlPiByYW5nZSA9IFJhbmdlOjpjcmVhdGUoKm5vZGUtPm93bmVyRG9jdW1lbnQoKSwg
cGFyYWdyYXBoU3RhcnQsIHBhcmFncmFwaEVuZCk7CisgICAgICAgIHJlc3VsdCA9IGtpdChyYW5n
ZS5nZXQoKSk7CisgICAgfQorICAgIAorICAgIHJldHVybiByZXN1bHQ7Cit9CisKKy0gKENHRmxv
YXQpdGV4dEhlaWdodAoreyAgCisgICAgUmVuZGVyT2JqZWN0ICpvID0gY29yZShzZWxmKS0+cmVu
ZGVyZXIoKTsKKyAgICBpZiAobyAmJiBvLT5pc1RleHQoKSkgeworICAgICAgICBSZW5kZXJUZXh0
ICp0ID0gdG9SZW5kZXJUZXh0KG8pOworICAgICAgICByZXR1cm4gdC0+c3R5bGUoKS5jb21wdXRl
ZExpbmVIZWlnaHQoKTs7CisgICAgfQorICAgIAorICAgIHJldHVybiBDR0ZMT0FUX01BWDsKK30K
KworLSAoRE9NTm9kZSAqKWZpbmRFeHBsb2RlZFRleHROb2RlQXRQb2ludDooQ0dQb2ludClwb2lu
dAoreworICAgIC8vIEEgbGlnaHQsIG5vbi1yZWN1cnNpdmUgdmVyc2lvbiBvZiBSZW5kZXJCbG9j
azo6cG9zaXRpb25Gb3JDb29yZGluYXRlcyB0aGF0IGxvb2tzIGF0CisgICAgLy8gd2hldGhlciBh
IHBvaW50IGxpZXMgd2l0aGluIHRoZSBnYXBzIGJldHdlZW4gaXRzIHJvb3QgbGluZSBib3hlcywg
dG8gYmUgY2FsbGVkIGFnYWluc3QKKyAgICAvLyBhIG5vZGUgcmV0dXJuZWQgZnJvbSBlbGVtZW50
QXRQb2ludC4gIFdlIG1ha2UgdGhlIGFzc3VtcHRpb24gdGhhdCBlaXRoZXIgdGhlIG5vZGUgb3Ig
b25lCisgICAgLy8gb2YgaXRzIGltbWVkaWF0ZSBjaGlsZHJlbiBjb250YWlucyB0aGUgcm9vdCBs
aW5lIGJveGVzIGluIHF1ZXN0aW9uLgorICAgIC8vIFNlZSA8cmRhcjovL3Byb2JsZW0vNjgyNDY1
MD4gZm9yIGNvbnRleHQuCisgICAgUmVuZGVyT2JqZWN0ICpyZW5kZXJlciA9IGNvcmUoc2VsZikt
PnJlbmRlcmVyKCk7CisgICAgaWYgKCFyZW5kZXJlciB8fCAhcmVuZGVyZXItPmlzUmVuZGVyQmxv
Y2tGbG93KCkpCisgICAgICAgIHJldHVybiBuaWw7CisKKyAgICBSZW5kZXJCbG9jayAqYmxvY2sg
PSBzdGF0aWNfY2FzdDxSZW5kZXJCbG9jayAqPihyZW5kZXJlcik7CisgICAgCisgICAgRmxvYXRQ
b2ludCBhYnNQb2ludChwb2ludCk7CisgICAgRmxvYXRQb2ludCBsb2NhbFBvaW50ID0gYmxvY2st
PmFic29sdXRlVG9Mb2NhbChhYnNQb2ludCk7CisKKyAgICBpZiAoIWJsb2NrLT5jaGlsZHJlbklu
bGluZSgpKSB7CisgICAgICAgIC8vIExvb2sgYW1vbmcgb3VyIGltbWVkaWF0ZSBjaGlsZHJlbiBm
b3IgYW4gYWx0ZXJuYXRlIGJveCB0aGF0IGNvbnRhaW5zIHRoZSBwb2ludC4KKyAgICAgICAgZm9y
IChSZW5kZXJCb3gqIGNoaWxkID0gYmxvY2stPmZpcnN0Q2hpbGRCb3goKTsgY2hpbGQ7IGNoaWxk
ID0gY2hpbGQtPm5leHRTaWJsaW5nQm94KCkpIHsKKyAgICAgICAgICAgIGlmIChjaGlsZC0+aGVp
Z2h0KCkgPT0gMCB8fCBjaGlsZC0+c3R5bGUoKS52aXNpYmlsaXR5KCkgIT0gV2ViQ29yZTo6VklT
SUJMRSB8fCBjaGlsZC0+aXNGbG9hdGluZ09yT3V0T2ZGbG93UG9zaXRpb25lZCgpKQorICAgICAg
ICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgZmxvYXQgdG9wID0gY2hpbGQtPnkoKTsK
KyAgICAgICAgICAgIAorICAgICAgICAgICAgUmVuZGVyQm94KiBuZXh0Q2hpbGQgPSBjaGlsZC0+
bmV4dFNpYmxpbmdCb3goKTsKKyAgICAgICAgICAgIHdoaWxlIChuZXh0Q2hpbGQgJiYgbmV4dENo
aWxkLT5pc0Zsb2F0aW5nT3JPdXRPZkZsb3dQb3NpdGlvbmVkKCkpCisgICAgICAgICAgICAgICAg
bmV4dENoaWxkID0gbmV4dENoaWxkLT5uZXh0U2libGluZ0JveCgpOworICAgICAgICAgICAgaWYg
KCFuZXh0Q2hpbGQpIHsKKyAgICAgICAgICAgICAgICBpZiAobG9jYWxQb2ludC55KCkgPj0gdG9w
KSB7CisgICAgICAgICAgICAgICAgICAgIGJsb2NrID0gc3RhdGljX2Nhc3Q8UmVuZGVyQmxvY2sg
Kj4oY2hpbGQpOworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICB9
CisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAK
KyAgICAgICAgICAgIGZsb2F0IGJvdHRvbSA9IG5leHRDaGlsZC0+eSgpOworICAgICAgICAgICAg
CisgICAgICAgICAgICBpZiAobG9jYWxQb2ludC55KCkgPj0gdG9wICYmIGxvY2FsUG9pbnQueSgp
IDwgYm90dG9tICYmIGNoaWxkLT5pc1JlbmRlckJsb2NrKCkpIHsKKyAgICAgICAgICAgICAgICBi
bG9jayA9IHN0YXRpY19jYXN0PFJlbmRlckJsb2NrICo+KGNoaWxkKTsKKyAgICAgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgICAgIH0gICAgICAgICAgICAgICAgCisgICAgICAgIH0KKyAgICAg
ICAgCisgICAgICAgIGlmICghYmxvY2stPmNoaWxkcmVuSW5saW5lKCkpCisgICAgICAgICAgICBy
ZXR1cm4gbmlsOworICAgICAgICAKKyAgICAgICAgbG9jYWxQb2ludCA9IGJsb2NrLT5hYnNvbHV0
ZVRvTG9jYWwoYWJzUG9pbnQpOworICAgIH0KKworICAgIFJlbmRlckJsb2NrRmxvdyAqYmxvY2tG
bG93ID0gdG9SZW5kZXJCbG9ja0Zsb3coYmxvY2spOworICAgIAorICAgIC8vIE9ubHkgY2hlY2sg
dGhlIGdhcHMgYmV0d2VlbiB0aGUgcm9vdCBsaW5lIGJveGVzLiAgV2UgZGVsaWJlcmF0ZWx5IGln
bm9yZSBvdmVyZmxvdyBiZWNhdXNlCisgICAgLy8gZXhwZXJpZW5jZSBoYXMgc2hvd24gdGhhdCBo
aXQgdGVzdHMgb24gYW4gZXhwbG9kZWQgdGV4dCBub2RlIGNhbiBmYWlsIHdoZW4gd2l0aGluIHRo
ZQorICAgIC8vIG92ZXJmbG93IHJlZ2lvbi4KKyAgICBmb3IgKFJvb3RJbmxpbmVCb3ggKmN1ciA9
IGJsb2NrRmxvdy0+Zmlyc3RSb290Qm94KCk7IGN1ciAmJiBjdXIgIT0gYmxvY2tGbG93LT5sYXN0
Um9vdEJveCgpOyBjdXIgPSBjdXItPm5leHRSb290Qm94KCkpIHsKKyAgICAgICAgZmxvYXQgY3Vy
cmVudEJvdHRvbSA9IGN1ci0+eSgpICsgY3VyLT5sb2dpY2FsSGVpZ2h0KCk7ICAgICAgICAKKyAg
ICAgICAgaWYgKGxvY2FsUG9pbnQueSgpIDwgY3VycmVudEJvdHRvbSkKKyAgICAgICAgICAgIHJl
dHVybiBuaWw7CisKKyAgICAgICAgUm9vdElubGluZUJveCAqbmV4dCA9IGN1ci0+bmV4dFJvb3RC
b3goKTsKKyAgICAgICAgZmxvYXQgbmV4dFRvcCA9IG5leHQtPnkoKTsKKyAgICAgICAgaWYgKGxv
Y2FsUG9pbnQueSgpIDwgbmV4dFRvcCkgeworICAgICAgICAgICAgSW5saW5lQm94ICppbmxpbmVC
b3ggPSBjdXItPmNsb3Nlc3RMZWFmQ2hpbGRGb3JMb2dpY2FsTGVmdFBvc2l0aW9uKGxvY2FsUG9p
bnQueCgpKTsKKyAgICAgICAgICAgIGlmIChpbmxpbmVCb3ggJiYgaW5saW5lQm94LT5iZWhhdmVz
TGlrZVRleHQoKSAmJiBpbmxpbmVCb3gtPnJlbmRlcmVyKCkuaXNUZXh0KCkpIHsKKyAgICAgICAg
ICAgICAgICBSZW5kZXJUZXh0ICp0ID0gdG9SZW5kZXJUZXh0KCZpbmxpbmVCb3gtPnJlbmRlcmVy
KCkpOworICAgICAgICAgICAgICAgIGlmICh0LT50ZXh0Tm9kZSgpKSB7CisgICAgICAgICAgICAg
ICAgICAgIHJldHVybiBraXQodC0+dGV4dE5vZGUoKSk7CisgICAgICAgICAgICAgICAgfQorICAg
ICAgICAgICAgfQorICAgICAgICB9CisKKyAgICB9CisgICAgcmV0dXJuIG5pbDsgICAgCit9CisK
K0BlbmQKKworLy8tLS0tLS0tLS0tLS0tLS0tLQorCitAaW1wbGVtZW50YXRpb24gRE9NRWxlbWVu
dCAoRE9NVUlLaXRDb21wbGV4aXR5RXh0ZW5zaW9ucykgCisKKy0gKGludClzdHJ1Y3R1cmFsQ29t
cGxleGl0eUNvbnRyaWJ1dGlvbiB7IHJldHVybiAwOyB9CisKK0BlbmQKKworQGltcGxlbWVudGF0
aW9uIERPTUhUTUxFbGVtZW50IChET01VSUtpdENvbXBsZXhpdHlFeHRlbnNpb25zKSAKKworLSAo
aW50KXN0cnVjdHVyYWxDb21wbGV4aXR5Q29udHJpYnV0aW9uCit7CisgICAgaW50IHJlc3VsdCA9
IDA7CisgICAgUmVuZGVyT2JqZWN0ICogcmVuZGVyZXIgPSBjb3JlKHNlbGYpLT5yZW5kZXJlcigp
OworICAgIGlmIChyZW5kZXJlcikgeworICAgICAgICBpZiAocmVuZGVyZXItPmlzRmxvYXRpbmdP
ck91dE9mRmxvd1Bvc2l0aW9uZWQoKSB8fAorICAgICAgICAgICAgcmVuZGVyZXItPmlzV2lkZ2V0
KCkpIHsKKyAgICAgICAgICAgIHJlc3VsdCA9IElOVF9NQVg7CisgICAgICAgIH0gZWxzZSBpZiAo
cmVuZGVyZXItPmlzRW1wdHkoKSkgeworICAgICAgICAgICAgcmVzdWx0ID0gMDsKKyAgICAgICAg
fSBlbHNlIGlmIChyZW5kZXJlci0+aXNSZW5kZXJCbG9ja0Zsb3coKSB8fCAocmVuZGVyZXItPmlz
UmVuZGVyQmxvY2soKSAmJiB0b1JlbmRlckJsb2NrKHJlbmRlcmVyKS0+aW5saW5lRWxlbWVudENv
bnRpbnVhdGlvbigpICE9IDApKSB7CisgICAgICAgICAgICBCT09MIG5vQ29zdCA9IE5POworICAg
ICAgICAgICAgaWYgKHJlbmRlcmVyLT5pc0JveCgpKSB7CisgICAgICAgICAgICAgICAgUmVuZGVy
Qm94ICphc0JveCA9IHJlbmRlcmVyLT5lbmNsb3NpbmdCb3goKTsKKyAgICAgICAgICAgICAgICBS
ZW5kZXJPYmplY3QgKnBhcmVudCA9IGFzQm94LT5wYXJlbnQoKTsKKyAgICAgICAgICAgICAgICBS
ZW5kZXJCb3ggKnBhcmVudFJlbmRlckJveCA9IChwYXJlbnQgJiYgcGFyZW50LT5pc0JveCgpKSA/
IHRvUmVuZGVyQm94KHBhcmVudCkgOiAwOworICAgICAgICAgICAgICAgIGlmIChwYXJlbnRSZW5k
ZXJCb3ggJiYgYXNCb3ggJiYgYXNCb3gtPndpZHRoKCkgPT0gcGFyZW50UmVuZGVyQm94LT53aWR0
aCgpKSB7CisgICAgICAgICAgICAgICAgICAgIG5vQ29zdCA9IFlFUzsKKyAgICAgICAgICAgICAg
ICB9CisgICAgICAgICAgICB9CQorICAgICAgICAgICAgcmVzdWx0ID0gKG5vQ29zdCA/IDAgOiAx
KTsKKyAgICAgICAgfSBlbHNlIGlmIChyZW5kZXJlci0+aGFzVHJhbnNmb3JtKCkpIHsKKyAgICAg
ICAgICAgIHJlc3VsdCA9IElOVF9NQVg7CisgICAgICAgIH0KKyAgICB9CisgICAgcmV0dXJuIHJl
c3VsdDsKK30KKworQGVuZAorCitAaW1wbGVtZW50YXRpb24gRE9NSFRNTEJvZHlFbGVtZW50IChE
T01VSUtpdENvbXBsZXhpdHlFeHRlbnNpb25zKQorLSAoaW50KXN0cnVjdHVyYWxDb21wbGV4aXR5
Q29udHJpYnV0aW9uIHsgcmV0dXJuIDA7IH0KK0BlbmQKKworCisvLyBNYXhpbWFsbHkgY29tcGxl
eCBlbGVtZW50cworCitAaW1wbGVtZW50YXRpb24gRE9NSFRNTEZvcm1FbGVtZW50IChET01VSUtp
dENvbXBsZXhpdHlFeHRlbnNpb25zKQorLSAoaW50KXN0cnVjdHVyYWxDb21wbGV4aXR5Q29udHJp
YnV0aW9uIHsgcmV0dXJuIElOVF9NQVg7IH0KK0BlbmQKKworQGltcGxlbWVudGF0aW9uIERPTUhU
TUxUYWJsZUVsZW1lbnQgKERPTVVJS2l0Q29tcGxleGl0eUV4dGVuc2lvbnMpCistIChpbnQpc3Ry
dWN0dXJhbENvbXBsZXhpdHlDb250cmlidXRpb24geyByZXR1cm4gSU5UX01BWDsgfQorQGVuZAor
CitAaW1wbGVtZW50YXRpb24gRE9NSFRNTEZyYW1lRWxlbWVudCAoRE9NVUlLaXRDb21wbGV4aXR5
RXh0ZW5zaW9ucykKKy0gKGludClzdHJ1Y3R1cmFsQ29tcGxleGl0eUNvbnRyaWJ1dGlvbiB7IHJl
dHVybiBJTlRfTUFYOyB9CitAZW5kCisKK0BpbXBsZW1lbnRhdGlvbiBET01IVE1MSUZyYW1lRWxl
bWVudCAoRE9NVUlLaXRDb21wbGV4aXR5RXh0ZW5zaW9ucykKKy0gKGludClzdHJ1Y3R1cmFsQ29t
cGxleGl0eUNvbnRyaWJ1dGlvbiB7IHJldHVybiBJTlRfTUFYOyB9CitAZW5kCisKK0BpbXBsZW1l
bnRhdGlvbiBET01IVE1MQnV0dG9uRWxlbWVudCAoRE9NVUlLaXRDb21wbGV4aXR5RXh0ZW5zaW9u
cykKKy0gKGludClzdHJ1Y3R1cmFsQ29tcGxleGl0eUNvbnRyaWJ1dGlvbiB7IHJldHVybiBJTlRf
TUFYOyB9CitAZW5kCisKK0BpbXBsZW1lbnRhdGlvbiBET01IVE1MVGV4dEFyZWFFbGVtZW50IChE
T01VSUtpdENvbXBsZXhpdHlFeHRlbnNpb25zKQorLSAoaW50KXN0cnVjdHVyYWxDb21wbGV4aXR5
Q29udHJpYnV0aW9uIHsgcmV0dXJuIElOVF9NQVg7IH0KK0BlbmQKKworQGltcGxlbWVudGF0aW9u
IERPTUhUTUxJbnB1dEVsZW1lbnQgKERPTVVJS2l0Q29tcGxleGl0eUV4dGVuc2lvbnMpCistIChp
bnQpc3RydWN0dXJhbENvbXBsZXhpdHlDb250cmlidXRpb24geyByZXR1cm4gSU5UX01BWDsgfQor
QGVuZAorCitAaW1wbGVtZW50YXRpb24gRE9NSFRNTFNlbGVjdEVsZW1lbnQgKERPTVVJS2l0Q29t
cGxleGl0eUV4dGVuc2lvbnMpCistIChpbnQpc3RydWN0dXJhbENvbXBsZXhpdHlDb250cmlidXRp
b24geyByZXR1cm4gSU5UX01BWDsgfQorQGVuZAorCisKKy8vLS0tLS0tLS0tLS0tLS0tLS0KKyAg
ICAgICAgCitAaW1wbGVtZW50YXRpb24gRE9NSFRNTEFyZWFFbGVtZW50IChET01VSUtpdEV4dGVu
c2lvbnMpCisKKy0gKENHUmVjdClib3VuZGluZ0JveFdpdGhPd25lcjooRE9NTm9kZSAqKWFuT3du
ZXIKK3sKKyAgICAvLyBpZ25vcmVzIHRyYW5zZm9ybXMKKyAgICByZXR1cm4gYW5Pd25lciA/IHBp
eGVsU25hcHBlZEludFJlY3QoY29yZShzZWxmKS0+Y29tcHV0ZVJlY3QoY29yZShhbk93bmVyKS0+
cmVuZGVyZXIoKSkpIDogQ0dSZWN0WmVybzsKK30KKworLSAoV0tRdWFkKWFic29sdXRlUXVhZFdp
dGhPd25lcjooRE9NTm9kZSAqKWFuT3duZXIKK3sKKyAgICBpZiAoYW5Pd25lcikgeworICAgICAg
ICAvLyBGSVhNRTogRUNMQUlSCisgICAgICAgIC8vV2ViQ29yZTo6RmxvYXRRdWFkIHRoZVF1YWQg
PSBjb3JlKHNlbGYpLT5nZXRBYnNvbHV0ZVF1YWQoY29yZShhbk93bmVyKS0+cmVuZGVyZXIoKSk7
CisgICAgICAgIFdlYkNvcmU6OkludFJlY3QgcmVjdCA9IHBpeGVsU25hcHBlZEludFJlY3QoY29y
ZShzZWxmKS0+Y29tcHV0ZVJlY3QoY29yZShhbk93bmVyKS0+cmVuZGVyZXIoKSkpOworICAgICAg
ICBXS1F1YWQgcXVhZDsKKyAgICAgICAgcXVhZC5wMSA9IENHUG9pbnRNYWtlKHJlY3QueCgpLCBy
ZWN0LnkoKSk7CisgICAgICAgIHF1YWQucDIgPSBDR1BvaW50TWFrZShyZWN0Lm1heFgoKSwgcmVj
dC55KCkpOworICAgICAgICBxdWFkLnAzID0gQ0dQb2ludE1ha2UocmVjdC5tYXhYKCksIHJlY3Qu
bWF4WSgpKTsKKyAgICAgICAgcXVhZC5wNCA9IENHUG9pbnRNYWtlKHJlY3QueCgpLCByZWN0Lm1h
eFkoKSk7CisgICAgICAgIHJldHVybiBxdWFkOworICAgIH0KKworICAgIFdLUXVhZCB6ZXJvUXVh
ZCA9IHsgQ0dQb2ludFplcm8sIENHUG9pbnRaZXJvLCBDR1BvaW50WmVybywgQ0dQb2ludFplcm8g
fTsKKyAgICByZXR1cm4gemVyb1F1YWQ7Cit9CisKKy0gKE5TQXJyYXkgKilib3VuZGluZ0JveGVz
V2l0aE93bmVyOihET01Ob2RlICopYW5Pd25lcgoreworICAgIHJldHVybiBbTlNBcnJheSBhcnJh
eVdpdGhPYmplY3Q6W05TVmFsdWUgdmFsdWVXaXRoUmVjdDpbc2VsZiBib3VuZGluZ0JveFdpdGhP
d25lcjphbk93bmVyXV1dOworfQorCistIChOU0FycmF5ICopYWJzb2x1dGVRdWFkc1dpdGhPd25l
cjooRE9NTm9kZSAqKWFuT3duZXIKK3sKKyAgICBXS1F1YWRPYmplY3QqIHF1YWRPYmplY3QgPSBb
W1dLUXVhZE9iamVjdCBhbGxvY10gaW5pdFdpdGhRdWFkOltzZWxmIGFic29sdXRlUXVhZFdpdGhP
d25lcjphbk93bmVyXV07CisgICAgTlNBcnJheSogICAgcXVhZEFycmF5ID0gW05TQXJyYXkgYXJy
YXlXaXRoT2JqZWN0OnF1YWRPYmplY3RdOworICAgIFtxdWFkT2JqZWN0IHJlbGVhc2VdOworICAg
IHJldHVybiBxdWFkQXJyYXk7Cit9CisKK0BlbmQKKworQGltcGxlbWVudGF0aW9uIERPTUhUTUxT
ZWxlY3RFbGVtZW50IChET01VSUtpdEV4dGVuc2lvbnMpCisKKy0gKHVuc2lnbmVkKWNvbXBsZXRl
TGVuZ3RoCit7CisgICAgcmV0dXJuIGNvcmUoc2VsZiktPmxpc3RJdGVtcygpLnNpemUoKTsKK30K
KworLSAoRE9NTm9kZSAqKWxpc3RJdGVtQXRJbmRleDooaW50KWFuSW5kZXgKK3sKKyAgICByZXR1
cm4ga2l0KGNvcmUoc2VsZiktPmxpc3RJdGVtcygpW2FuSW5kZXhdKTsKK30KKworQGVuZAorCitA
aW1wbGVtZW50YXRpb24gRE9NSFRNTEltYWdlRWxlbWVudCAoV2ViRE9NSFRNTEltYWdlRWxlbWVu
dE9wZXJhdGlvbnNQcml2YXRlKQorCistIChOU0RhdGEgKilkYXRhUmVwcmVzZW50YXRpb246KEJP
T0wpcmF3SW1hZ2VEYXRhCit7CisgICAgV2ViQ29yZTo6Q2FjaGVkSW1hZ2UgKmNhY2hlZEltYWdl
ID0gY29yZShzZWxmKS0+Y2FjaGVkSW1hZ2UoKTsKKyAgICBpZiAoIWNhY2hlZEltYWdlKQorICAg
ICAgICByZXR1cm4gbmlsOworICAgIFdlYkNvcmU6OkltYWdlICppbWFnZSA9IGNhY2hlZEltYWdl
LT5pbWFnZSgpOworICAgIGlmICghaW1hZ2UpCisgICAgICAgIHJldHVybiBuaWw7CisgICAgV2Vi
Q29yZTo6U2hhcmVkQnVmZmVyICpkYXRhID0gbmlsOworICAgIGlmIChyYXdJbWFnZURhdGEpIHsK
KyAgICAgICAgUmVzb3VyY2VCdWZmZXIgKnJlc291cmNlQnVmZmVyID0gY2FjaGVkSW1hZ2UtPnJl
c291cmNlQnVmZmVyKCk7CisgICAgICAgIGlmIChyZXNvdXJjZUJ1ZmZlcikKKyAgICAgICAgICAg
IGRhdGEgPSByZXNvdXJjZUJ1ZmZlci0+c2hhcmVkQnVmZmVyKCk7CisgICAgfSBlbHNlIHsKKyAg
ICAgICAgZGF0YSA9IGltYWdlLT5kYXRhKCk7CisgICAgfQorICAgIGlmICghZGF0YSkKKyAgICAg
ICAgcmV0dXJuIG5pbDsKKyAgICAKKyAgICByZXR1cm4gW2RhdGEtPmNyZWF0ZU5TRGF0YSgpLmxl
YWtSZWYoKSBhdXRvcmVsZWFzZV07Cit9CisKKy0gKE5TU3RyaW5nICopbWltZVR5cGUKK3sKKyAg
ICBXZWJDb3JlOjpDYWNoZWRJbWFnZSAqY2FjaGVkSW1hZ2UgPSBjb3JlKHNlbGYpLT5jYWNoZWRJ
bWFnZSgpOworICAgIGlmICghY2FjaGVkSW1hZ2UgfHwgIWNhY2hlZEltYWdlLT5pbWFnZSgpKQor
ICAgICAgICByZXR1cm4gbmlsOworICAgIAorICAgIHJldHVybiBjYWNoZWRJbWFnZS0+cmVzcG9u
c2UoKS5taW1lVHlwZSgpOworfQorCitAZW5kCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvb2JqYy9QdWJsaWNET01JbnRlcmZhY2VzLmggYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9vYmpjL1B1YmxpY0RPTUludGVyZmFjZXMuaAppbmRleCBjYWFhYjlhODFi
NDY2ZTM4YTIwNTZhZmE1ZmYyN2RhM2RlMTliZGFmLi5hNjQzZjUyY2ZjMzIzZDFhNWRhZmE2ZjNh
YjdiOThjZTY2NGRkZWM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9vYmpj
L1B1YmxpY0RPTUludGVyZmFjZXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9vYmpj
L1B1YmxpY0RPTUludGVyZmFjZXMuaApAQCAtMjYsNiArMjYsOCBAQAogLy8gQWxsIHB1YmxpYyBE
T00gY2xhc3MgaW50ZXJmYWNlcywgcHJvcGVydGllcyBhbmQgbWV0aG9kcyBuZWVkIHRvIGJlIGlu
IHRoaXMgZmlsZS4KIC8vIEFueXRoaW5nIG5vdCBpbiB0aGUgZmlsZSB3aWxsIGJlIGdlbmVyYXRl
ZCBpbnRvIHRoZSBhcHByb3ByaWF0ZSBwcml2YXRlIGhlYWRlciBmaWxlLgogCisjaW5jbHVkZSA8
d3RmL1BsYXRmb3JtLmg+CisKICNpZm5kZWYgT0JKQ19DT0RFX0dFTkVSQVRJT04KICNlcnJvciBE
byBub3QgaW5jbHVkZSB0aGlzIGhlYWRlciwgaW5zdGVhZCBpbmNsdWRlIHRoZSBhcHByb3ByaWF0
ZSBET00gaGVhZGVyLgogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbSBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCmluZGV4IGRkZGFiYzlmOWU2ZmRhMTNiOTQ1NjMwNmYz
MTAyYzQ4MDg2MWNkMWQuLjg3ODNlNzYyZGY5MTI5YzU3ZGVlZDIzMjk4MzBkMDhkYTgxMmJmNDUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRv
ckpTLnBtCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRv
ckpTLnBtCkBAIC00OSw2ICs0OSw0MCBAQCBteSBAZGVwc0NvbnRlbnQgPSAoKTsKIG15ICRudW1D
YWNoZWRBdHRyaWJ1dGVzID0gMDsKIG15ICRjdXJyZW50Q2FjaGVkQXR0cmlidXRlID0gMDsKIAor
bXkgJGJlZ2luQXBwbGVDb3B5cmlnaHRGb3JIZWFkZXJGaWxlcyA9IDw8RU5EOworLy8gLS0tLS0t
LSBCZWdpbiBBcHBsZSBDb3B5cmlnaHQgLS0tLS0tLQorLyoKKyAqIENvcHlyaWdodCAoQykgMjAw
OCwgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFBlcm1pc3Npb24gaXMg
Z3JhbnRlZCBieSBBcHBsZSB0byB1c2UgdGhpcyBmaWxlIHRvIHRoZSBleHRlbnQKKyAqIG5lY2Vz
c2FyeSB0byByZWxpbmsgd2l0aCBMR1BMIFdlYktpdCBmaWxlcy4KKyAqCisgKiBObyBsaWNlbnNl
IG9yIHJpZ2h0cyBhcmUgZ3JhbnRlZCBieSBBcHBsZSBleHByZXNzbHkgb3IgYnkKKyAqIGltcGxp
Y2F0aW9uLCBlc3RvcHBlbCwgb3Igb3RoZXJ3aXNlLCB0byBBcHBsZSBwYXRlbnRzIGFuZAorICog
dHJhZGVtYXJrcy4gRm9yIHRoZSBzYWtlIG9mIGNsYXJpdHksIG5vIGxpY2Vuc2Ugb3IgcmlnaHRz
IGFyZQorICogZ3JhbnRlZCBieSBBcHBsZSBleHByZXNzbHkgb3IgYnkgaW1wbGljYXRpb24sIGVz
dG9wcGVsLCBvciBvdGhlcndpc2UsCisgKiB1bmRlciBhbnkgQXBwbGUgcGF0ZW50cywgY29weXJp
Z2h0cyBhbmQgdHJhZGVtYXJrcyB0byB1bmRlcmx5aW5nCisgKiBpbXBsZW1lbnRhdGlvbnMgb2Yg
YW55IGFwcGxpY2F0aW9uIHByb2dyYW1taW5nIGludGVyZmFjZXMgKEFQSXMpCisgKiBvciB0byBh
bnkgZnVuY3Rpb25hbGl0eSB0aGF0IGlzIGludm9rZWQgYnkgY2FsbGluZyBhbnkgQVBJLgorICov
CisKK0VORAorbXkgJGJlZ2luQXBwbGVDb3B5cmlnaHRGb3JTb3VyY2VGaWxlcyA9IDw8RU5EOwor
Ly8gLS0tLS0tLSBCZWdpbiBBcHBsZSBDb3B5cmlnaHQgLS0tLS0tLQorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAwOCwgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIE5vIGxp
Y2Vuc2Ugb3IgcmlnaHRzIGFyZSBncmFudGVkIGJ5IEFwcGxlIGV4cHJlc3NseSBvciBieSBpbXBs
aWNhdGlvbiwKKyAqIGVzdG9wcGVsLCBvciBvdGhlcndpc2UsIHRvIEFwcGxlIGNvcHlyaWdodHMs
IHBhdGVudHMsIHRyYWRlbWFya3MsIHRyYWRlCisgKiBzZWNyZXRzIG9yIG90aGVyIHJpZ2h0cy4K
KyAqLworCitFTkQKK215ICRlbmRBcHBsZUNvcHlyaWdodCAgID0gPDxFTkQ7CisvLyAtLS0tLS0t
IEVuZCBBcHBsZSBDb3B5cmlnaHQgICAtLS0tLS0tCisKK0VORAorCiAjIERlZmF1bHQgLmggdGVt
cGxhdGUKIG15ICRoZWFkZXJUZW1wbGF0ZSA9IDw8ICJFT0YiOwogLyoKQEAgLTQ0OCw3ICs0ODIs
MTIgQEAgc3ViIEdlbmVyYXRlSGVhZGVyQ29udGVudEhlYWRlcgogICAgIG15ICRpbnRlcmZhY2Ug
PSBzaGlmdDsKICAgICBteSAkY2xhc3NOYW1lID0gIkpTIiAuICRpbnRlcmZhY2UtPm5hbWU7CiAK
LSAgICBteSBAaGVhZGVyQ29udGVudEhlYWRlciA9IHNwbGl0KCJcciIsICRoZWFkZXJUZW1wbGF0
ZSk7CisgICAgbXkgQGhlYWRlckNvbnRlbnRIZWFkZXI7CisgICAgaWYgKCRpbnRlcmZhY2UtPmV4
dGVuZGVkQXR0cmlidXRlcy0+eyJBcHBsZUNvcHlyaWdodCJ9KSB7CisgICAgICAgIEBoZWFkZXJD
b250ZW50SGVhZGVyID0gc3BsaXQoIlxyIiwgJGJlZ2luQXBwbGVDb3B5cmlnaHRGb3JIZWFkZXJG
aWxlcyk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgQGhlYWRlckNvbnRlbnRIZWFkZXIgPSBzcGxp
dCgiXHIiLCAkaGVhZGVyVGVtcGxhdGUpOworICAgIH0KIAogICAgICMgLSBBZGQgaGVhZGVyIHBy
b3RlY3Rpb24KICAgICBwdXNoKEBoZWFkZXJDb250ZW50SGVhZGVyLCAiXG4jaWZuZGVmICRjbGFz
c05hbWUiIC4gIl9oIik7CkBAIC00NjQsNyArNTAzLDEyIEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVu
dGF0aW9uQ29udGVudEhlYWRlcgogICAgIG15ICRpbnRlcmZhY2UgPSBzaGlmdDsKICAgICBteSAk
Y2xhc3NOYW1lID0gIkpTIiAuICRpbnRlcmZhY2UtPm5hbWU7CiAKLSAgICBteSBAaW1wbENvbnRl
bnRIZWFkZXIgPSBzcGxpdCgiXHIiLCAkaGVhZGVyVGVtcGxhdGUpOworICAgIG15IEBpbXBsQ29u
dGVudEhlYWRlcjsKKyAgICBpZiAoJGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkFw
cGxlQ29weXJpZ2h0In0pIHsKKyAgICAgICAgQGltcGxDb250ZW50SGVhZGVyID0gc3BsaXQoIlxy
IiwgJGJlZ2luQXBwbGVDb3B5cmlnaHRGb3JTb3VyY2VGaWxlcyk7CisgICAgfSBlbHNlIHsKKyAg
ICAgICAgQGltcGxDb250ZW50SGVhZGVyID0gc3BsaXQoIlxyIiwgJGhlYWRlclRlbXBsYXRlKTsK
KyAgICB9CiAKICAgICBwdXNoKEBpbXBsQ29udGVudEhlYWRlciwgIlxuI2luY2x1ZGUgXCJjb25m
aWcuaFwiXG4iKTsKICAgICBteSAkY29uZGl0aW9uYWxTdHJpbmcgPSAkY29kZUdlbmVyYXRvci0+
R2VuZXJhdGVDb25kaXRpb25hbFN0cmluZygkaW50ZXJmYWNlKTsKQEAgLTg2Nyw4ICs5MTEsMjEg
QEAgc3ViIEdlbmVyYXRlSGVhZGVyCiAgICAgfQogCiAgICAgaWYgKCRudW1DdXN0b21GdW5jdGlv
bnMgPiAwKSB7CisgICAgICAgIG15ICRpbkFwcGxlQ29weXJpZ2h0ID0gMDsKICAgICAgICAgcHVz
aChAaGVhZGVyQ29udGVudCwgIlxuICAgIC8vIEN1c3RvbSBmdW5jdGlvbnNcbiIpOwogICAgICAg
ICBmb3JlYWNoIG15ICRmdW5jdGlvbiAoQHskaW50ZXJmYWNlLT5mdW5jdGlvbnN9KSB7CisgICAg
ICAgICAgICAjIFBMQVRGT1JNX0lPUworICAgICAgICAgICAgbXkgJG5lZWRzQXBwbGVDb3B5cmln
aHQgPSAkZnVuY3Rpb24tPnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkFwcGxlQ29w
eXJpZ2h0In07CisgICAgICAgICAgICBpZiAoJG5lZWRzQXBwbGVDb3B5cmlnaHQpIHsKKyAgICAg
ICAgICAgICAgICBpZiAoISRpbkFwcGxlQ29weXJpZ2h0KSB7CisgICAgICAgICAgICAgICAgICAg
IHB1c2goQGhlYWRlckNvbnRlbnQsICRiZWdpbkFwcGxlQ29weXJpZ2h0Rm9ySGVhZGVyRmlsZXMp
OworICAgICAgICAgICAgICAgICAgICAkaW5BcHBsZUNvcHlyaWdodCA9IDE7CisgICAgICAgICAg
ICAgICAgfQorICAgICAgICAgICAgfSBlbHNpZiAoJGluQXBwbGVDb3B5cmlnaHQpIHsKKyAgICAg
ICAgICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAkZW5kQXBwbGVDb3B5cmlnaHQpOworICAg
ICAgICAgICAgICAgICRpbkFwcGxlQ29weXJpZ2h0ID0gMDsKKyAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgICMgZW5kIFBMQVRGT1JNX0lPUwogICAgICAgICAgICAgbmV4dCB1bmxlc3MgSGFzQ3Vz
dG9tTWV0aG9kKCRmdW5jdGlvbi0+c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMpOwogICAg
ICAgICAgICAgbmV4dCBpZiAkZnVuY3Rpb24tPntvdmVybG9hZHN9ICYmICRmdW5jdGlvbi0+e292
ZXJsb2FkSW5kZXh9ICE9IDE7CiAgICAgICAgICAgICBteSAkY29uZGl0aW9uYWxTdHJpbmcgPSAk
Y29kZUdlbmVyYXRvci0+R2VuZXJhdGVDb25kaXRpb25hbFN0cmluZygkZnVuY3Rpb24tPnNpZ25h
dHVyZSk7CkBAIC04NzcsNiArOTM0LDcgQEAgc3ViIEdlbmVyYXRlSGVhZGVyCiAgICAgICAgICAg
ICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAgICIgLiAoJGZ1bmN0aW9uLT5pc1N0YXRpYyA/ICJz
dGF0aWMgIiA6ICIiKSAuICJKU0M6OkpTVmFsdWUgIiAuICRmdW5jdGlvbkltcGxlbWVudGF0aW9u
TmFtZSAuICIoSlNDOjpFeGVjU3RhdGUqKTtcbiIpOwogICAgICAgICAgICAgcHVzaChAaGVhZGVy
Q29udGVudCwgIiNlbmRpZlxuIikgaWYgJGNvbmRpdGlvbmFsU3RyaW5nOwogICAgICAgICB9Cisg
ICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICRlbmRBcHBsZUNvcHlyaWdodCkgaWYgJGluQXBw
bGVDb3B5cmlnaHQ7CiAgICAgfQogCiAgICAgaWYgKCEkaGFzUGFyZW50KSB7CkBAIC0xMDQzLDE1
ICsxMTAxLDI5IEBAIHN1YiBHZW5lcmF0ZUhlYWRlcgogICAgIH0KIAogICAgIGlmICgkbnVtRnVu
Y3Rpb25zID4gMCkgeworICAgICAgICBteSAkaW5BcHBsZUNvcHlyaWdodCA9IDA7CiAgICAgICAg
IHB1c2goQGhlYWRlckNvbnRlbnQsIi8vIEZ1bmN0aW9uc1xuXG4iKTsKICAgICAgICAgZm9yZWFj
aCBteSAkZnVuY3Rpb24gKEB7JGludGVyZmFjZS0+ZnVuY3Rpb25zfSkgewogICAgICAgICAgICAg
bmV4dCBpZiAkZnVuY3Rpb24tPntvdmVybG9hZEluZGV4fSAmJiAkZnVuY3Rpb24tPntvdmVybG9h
ZEluZGV4fSA+IDE7CisgICAgICAgICAgICBteSAkbmVlZHNBcHBsZUNvcHlyaWdodCA9ICRmdW5j
dGlvbi0+c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiQXBwbGVDb3B5cmlnaHQifTsK
KyAgICAgICAgICAgIGlmICgkbmVlZHNBcHBsZUNvcHlyaWdodCkgeworICAgICAgICAgICAgICAg
IGlmICghJGluQXBwbGVDb3B5cmlnaHQpIHsKKyAgICAgICAgICAgICAgICAgICAgcHVzaChAaGVh
ZGVyQ29udGVudCwgJGJlZ2luQXBwbGVDb3B5cmlnaHRGb3JIZWFkZXJGaWxlcyk7CisgICAgICAg
ICAgICAgICAgICAgICRpbkFwcGxlQ29weXJpZ2h0ID0gMTsKKyAgICAgICAgICAgICAgICB9Cisg
ICAgICAgICAgICB9IGVsc2lmICgkaW5BcHBsZUNvcHlyaWdodCkgeworICAgICAgICAgICAgICAg
IHB1c2goQGhlYWRlckNvbnRlbnQsICRlbmRBcHBsZUNvcHlyaWdodCk7CisgICAgICAgICAgICAg
ICAgJGluQXBwbGVDb3B5cmlnaHQgPSAwOworICAgICAgICAgICAgfQorCiAgICAgICAgICAgICBt
eSAkY29uZGl0aW9uYWxTdHJpbmcgPSAkY29kZUdlbmVyYXRvci0+R2VuZXJhdGVDb25kaXRpb25h
bFN0cmluZygkZnVuY3Rpb24tPnNpZ25hdHVyZSk7CiAgICAgICAgICAgICBwdXNoKEBoZWFkZXJD
b250ZW50LCAiI2lmICR7Y29uZGl0aW9uYWxTdHJpbmd9XG4iKSBpZiAkY29uZGl0aW9uYWxTdHJp
bmc7CiAgICAgICAgICAgICBteSAkZnVuY3Rpb25OYW1lID0gR2V0RnVuY3Rpb25OYW1lKCRjbGFz
c05hbWUsICRmdW5jdGlvbik7CiAgICAgICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiSlND
OjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMICR7ZnVuY3Rpb25OYW1lfShKU0M6OkV4ZWNT
dGF0ZSopO1xuIik7CiAgICAgICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiI2VuZGlmXG4i
KSBpZiAkY29uZGl0aW9uYWxTdHJpbmc7CiAgICAgICAgIH0KKworICAgICAgICBwdXNoKEBoZWFk
ZXJDb250ZW50LCAkZW5kQXBwbGVDb3B5cmlnaHQpIGlmICRpbkFwcGxlQ29weXJpZ2h0OwogICAg
IH0KIAogICAgIGlmICgkbnVtQXR0cmlidXRlcyA+IDAgfHwgISRpbnRlcmZhY2UtPmV4dGVuZGVk
QXR0cmlidXRlcy0+eyJOb0ludGVyZmFjZU9iamVjdCJ9KSB7CkBAIC0xMDk0LDYgKzExNjYsMTAg
QEAgc3ViIEdlbmVyYXRlSGVhZGVyCiAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIlxufSAvLyBu
YW1lc3BhY2UgV2ViQ29yZVxuXG4iKTsKICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiI2VuZGlm
IC8vICR7Y29uZGl0aW9uYWxTdHJpbmd9XG5cbiIpIGlmICRjb25kaXRpb25hbFN0cmluZzsKICAg
ICBwdXNoKEBoZWFkZXJDb250ZW50LCAiI2VuZGlmXG4iKTsKKworICAgIGlmICgkaW50ZXJmYWNl
LT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiQXBwbGVDb3B5cmlnaHQifSkgeworICAgICAgICBwdXNo
KEBoZWFkZXJDb250ZW50LCBzcGxpdCgiXHIiLCAkZW5kQXBwbGVDb3B5cmlnaHQpKTsKKyAgICB9
CiB9CiAKIHN1YiBHZW5lcmF0ZUF0dHJpYnV0ZXNIYXNoVGFibGUoJCQpCkBAIC0yMzgyLDcgKzI0
NTgsMTkgQEAgc3ViIEdlbmVyYXRlSW1wbGVtZW50YXRpb24KIAogICAgICMgRnVuY3Rpb25zCiAg
ICAgaWYgKCRudW1GdW5jdGlvbnMgPiAwKSB7CisgICAgICAgIG15ICRpbkFwcGxlQ29weXJpZ2h0
ID0gMDsKICAgICAgICAgZm9yZWFjaCBteSAkZnVuY3Rpb24gKEB7JGludGVyZmFjZS0+ZnVuY3Rp
b25zfSkgeworICAgICAgICAgICAgbXkgJG5lZWRzQXBwbGVDb3B5cmlnaHQgPSAkZnVuY3Rpb24t
PnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkFwcGxlQ29weXJpZ2h0In07CisgICAg
ICAgICAgICBpZiAoJG5lZWRzQXBwbGVDb3B5cmlnaHQpIHsKKyAgICAgICAgICAgICAgICBpZiAo
ISRpbkFwcGxlQ29weXJpZ2h0KSB7CisgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250
ZW50LCAkYmVnaW5BcHBsZUNvcHlyaWdodEZvclNvdXJjZUZpbGVzKTsKKyAgICAgICAgICAgICAg
ICAgICAgJGluQXBwbGVDb3B5cmlnaHQgPSAxOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgIH0gZWxzaWYgKCRpbkFwcGxlQ29weXJpZ2h0KSB7CisgICAgICAgICAgICAgICAgcHVzaChA
aW1wbENvbnRlbnQsICRlbmRBcHBsZUNvcHlyaWdodCk7CisgICAgICAgICAgICAgICAgJGluQXBw
bGVDb3B5cmlnaHQgPSAwOworICAgICAgICAgICAgfQorCiAgICAgICAgICAgICBteSAkaXNDdXN0
b20gPSBIYXNDdXN0b21NZXRob2QoJGZ1bmN0aW9uLT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0cmli
dXRlcyk7CiAgICAgICAgICAgICBteSAkaXNPdmVybG9hZGVkID0gJGZ1bmN0aW9uLT57b3Zlcmxv
YWRzfSAmJiBAeyRmdW5jdGlvbi0+e292ZXJsb2Fkc319ID4gMTsKICAgICAgICAgICAgIG15ICRy
YWlzZXNFeGNlcHRpb24gPSAkZnVuY3Rpb24tPnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVz
LT57IlJhaXNlc0V4Y2VwdGlvbiJ9OwpAQCAtMjQ5Nyw2ICsyNTg1LDkgQEAgc3ViIEdlbmVyYXRl
SW1wbGVtZW50YXRpb24KICAgICAgICAgICAgIH0KIAogICAgICAgICB9CisKKyAgICAgICAgcHVz
aChAaW1wbENvbnRlbnQsICRlbmRBcHBsZUNvcHlyaWdodCkgaWYgJGluQXBwbGVDb3B5cmlnaHQ7
CisKICAgICB9CiAKICAgICBpZiAoJG5lZWRzTWFya0NoaWxkcmVuICYmICEkaW50ZXJmYWNlLT5l
eHRlbmRlZEF0dHJpYnV0ZXMtPnsiSlNDdXN0b21NYXJrRnVuY3Rpb24ifSkgewpAQCAtMzIyOSw2
ICszMzIwLDEwIEBAIHN1YiBHZW5lcmF0ZUNhbGxiYWNrSW1wbGVtZW50YXRpb24KICAgICBwdXNo
KEBpbXBsQ29udGVudCwgIlxufVxuIik7CiAgICAgbXkgJGNvbmRpdGlvbmFsU3RyaW5nID0gJGNv
ZGVHZW5lcmF0b3ItPkdlbmVyYXRlQ29uZGl0aW9uYWxTdHJpbmcoJGludGVyZmFjZSk7CiAgICAg
cHVzaChAaW1wbENvbnRlbnQsICJcbiNlbmRpZiAvLyAke2NvbmRpdGlvbmFsU3RyaW5nfVxuIikg
aWYgJGNvbmRpdGlvbmFsU3RyaW5nOworCisgICAgaWYgKCRpbnRlcmZhY2UtPmV4dGVuZGVkQXR0
cmlidXRlcy0+eyJBcHBsZUNvcHlyaWdodCJ9KSB7CisgICAgICAgIHB1c2goQGltcGxDb250ZW50
LCBzcGxpdCgiXHIiLCAkZW5kQXBwbGVDb3B5cmlnaHQpKTsKKyAgICB9CiB9CiAKIHN1YiBHZW5l
cmF0ZUltcGxlbWVudGF0aW9uRnVuY3Rpb25DYWxsKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvck9iakMucG0gYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JPYmpDLnBtCmluZGV4IGViMTUzMjkzNDVh
OGEwZjM5ZmE3YjhlMzA5ZmU0NWYxYjJjYzBmMWIuLjg2MWM1NmZiZTFlYTkyNmRlZTY2M2RiYjJk
MDJkOTJkOTYyMWUzYTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvQ29kZUdlbmVyYXRvck9iakMucG0KKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy9Db2RlR2VuZXJhdG9yT2JqQy5wbQpAQCAtNDgsMTEgKzQ4LDQ2IEBAIG15ICVwcml2YXRl
SGVhZGVyRm9yd2FyZERlY2xhcmF0aW9uc0ZvclByb3RvY29scyA9ICgpOwogCiBteSBAaW50ZXJu
YWxIZWFkZXJDb250ZW50ID0gKCk7CiAKK215IEBpbXBsQ29uZGl0aW9uYWxJbmNsdWRlcyA9ICgp
OwogbXkgQGltcGxDb250ZW50SGVhZGVyID0gKCk7CiBteSBAaW1wbENvbnRlbnQgPSAoKTsKIG15
ICVpbXBsSW5jbHVkZXMgPSAoKTsKIG15IEBkZXBzQ29udGVudCA9ICgpOwogCitteSAkYmVnaW5B
cHBsZUNvcHlyaWdodEZvckhlYWRlckZpbGVzID0gPDxFTkQ7CisvLyAtLS0tLS0tIEJlZ2luIEFw
cGxlIENvcHlyaWdodCAtLS0tLS0tCisvKgorICogQ29weXJpZ2h0IChDKSAyMDA4LCBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUGVybWlzc2lvbiBpcyBncmFudGVkIGJ5
IEFwcGxlIHRvIHVzZSB0aGlzIGZpbGUgdG8gdGhlIGV4dGVudAorICogbmVjZXNzYXJ5IHRvIHJl
bGluayB3aXRoIExHUEwgV2ViS2l0IGZpbGVzLgorICoKKyAqIE5vIGxpY2Vuc2Ugb3IgcmlnaHRz
IGFyZSBncmFudGVkIGJ5IEFwcGxlIGV4cHJlc3NseSBvciBieQorICogaW1wbGljYXRpb24sIGVz
dG9wcGVsLCBvciBvdGhlcndpc2UsIHRvIEFwcGxlIHBhdGVudHMgYW5kCisgKiB0cmFkZW1hcmtz
LiBGb3IgdGhlIHNha2Ugb2YgY2xhcml0eSwgbm8gbGljZW5zZSBvciByaWdodHMgYXJlCisgKiBn
cmFudGVkIGJ5IEFwcGxlIGV4cHJlc3NseSBvciBieSBpbXBsaWNhdGlvbiwgZXN0b3BwZWwsIG9y
IG90aGVyd2lzZSwKKyAqIHVuZGVyIGFueSBBcHBsZSBwYXRlbnRzLCBjb3B5cmlnaHRzIGFuZCB0
cmFkZW1hcmtzIHRvIHVuZGVybHlpbmcKKyAqIGltcGxlbWVudGF0aW9ucyBvZiBhbnkgYXBwbGlj
YXRpb24gcHJvZ3JhbW1pbmcgaW50ZXJmYWNlcyAoQVBJcykKKyAqIG9yIHRvIGFueSBmdW5jdGlv
bmFsaXR5IHRoYXQgaXMgaW52b2tlZCBieSBjYWxsaW5nIGFueSBBUEkuCisgKi8KKworRU5ECitt
eSAkYmVnaW5BcHBsZUNvcHlyaWdodEZvclNvdXJjZUZpbGVzID0gPDxFTkQ7CisvLyAtLS0tLS0t
IEJlZ2luIEFwcGxlIENvcHlyaWdodCAtLS0tLS0tCisvKgorICogQ29weXJpZ2h0IChDKSAyMDA4
LCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogTm8gbGljZW5zZSBvciBy
aWdodHMgYXJlIGdyYW50ZWQgYnkgQXBwbGUgZXhwcmVzc2x5IG9yIGJ5IGltcGxpY2F0aW9uLAor
ICogZXN0b3BwZWwsIG9yIG90aGVyd2lzZSwgdG8gQXBwbGUgY29weXJpZ2h0cywgcGF0ZW50cywg
dHJhZGVtYXJrcywgdHJhZGUKKyAqIHNlY3JldHMgb3Igb3RoZXIgcmlnaHRzLgorICovCisKK0VO
RAorbXkgJGVuZEFwcGxlQ29weXJpZ2h0ICAgPSA8PEVORDsKKy8vIC0tLS0tLS0gRW5kIEFwcGxl
IENvcHlyaWdodCAgIC0tLS0tLS0KKworRU5ECisKICMgSGFzaGVzCiBteSAlcHJvdG9jb2xUeXBl
SGFzaCA9ICgiWFBhdGhOU1Jlc29sdmVyIiA9PiAxLCAiRXZlbnRMaXN0ZW5lciIgPT4gMSwgIkV2
ZW50VGFyZ2V0IiA9PiAxLCAiTm9kZUZpbHRlciIgPT4gMSwKICAgICAgICAgICAgICAgICAgICAg
ICAgICJTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMiID0+IDEsIApAQCAtNzYs
NiArMTExLDcgQEAgbXkgJWJhc2VUeXBlSGFzaCA9ICgiT2JqZWN0IiA9PiAxLCAiTm9kZSIgPT4g
MSwgIk5vZGVMaXN0IiA9PiAxLCAiTmFtZWROb2RlTWFwIgogICAgICAgICAgICAgICAgICAgICAi
U1ZHU3RyaW5nTGlzdCIgPT4gMSwgIlNWR1RyYW5zZm9ybSIgPT4gMSwgIlNWR1RyYW5zZm9ybUxp
c3QiID0+IDEsICJTVkdVbml0VHlwZXMiID0+IDEpOwogCiAjIENvbnN0YW50cworbXkgJGJ1aWxk
aW5nRm9ySVBob25lID0gKCRFTlZ7UExBVEZPUk1fTkFNRX0gZXEgImlwaG9uZW9zIiBvciAkRU5W
e1BMQVRGT1JNX05BTUV9IGVxICJpcGhvbmVzaW11bGF0b3IiKTsKIG15ICRudWxsYWJsZUluaXQg
PSAiYm9vbCBpc051bGwgPSBmYWxzZTsiOwogbXkgJGV4Y2VwdGlvbkluaXQgPSAiV2ViQ29yZTo6
RXhjZXB0aW9uQ29kZSBlYyA9IDA7IjsKIG15ICRqc0NvbnRleHRTZXR0ZXIgPSAiV2ViQ29yZTo6
SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOyI7CkBAIC0yMTQsNiArMjUwLDE4IEBAIHN1YiBS
ZWFkUHVibGljSW50ZXJmYWNlcwogICAgIG15ICRhY3R1YWxTdXBlckNsYXNzOwogICAgICVwdWJs
aWNJbnRlcmZhY2VzID0gKCk7CiAKKyAgICBteSBAYXJncyA9IHF3KC1FIC1QIC14IG9iamVjdGl2
ZS1jKTsKKyAgICAjIFNldCBpbmNsdWRlIHBhdGggdG8gZmluZCA8d3RmL1BsYXRmb3JtLmg+LiAg
V2Ugc2VhcmNoIEJVSUxUX1BST0RVQ1RTX0RJUgorICAgICMgZmlyc3QgZm9yIGxvY2FsIGRldmVs
b3BlciBidWlsZHMsIHRoZW4gdGhlIGluc3RhbGxhdGlvbiBwYXRoIGZvciBCJkkKKyAgICAjIGJ1
aWxkcy4KKyAgICBwdXNoKEBhcmdzLCAiLUkiIC4gJEVOVntCVUlMVF9QUk9EVUNUU19ESVJ9IC4g
Ii91c3IvbG9jYWwvaW5jbHVkZSIpIGlmICRFTlZ7QlVJTFRfUFJPRFVDVFNfRElSfTsKKyAgICBw
dXNoKEBhcmdzLCAiLUkiIC4gJEVOVntCVUlMVF9QUk9EVUNUU19ESVJ9IC4gJEVOVntTREtST09U
fSAuICIvdXNyL2xvY2FsL2luY2x1ZGUiKSBpZiAkRU5We0JVSUxUX1BST0RVQ1RTX0RJUn07CisK
KyAgICAjIFhjb2RlIDMuMSBpcyByZXF1aXJlZCBmb3IgU0RLUk9PVCB0byBiZSBzZXQuCisgICAg
aWYgKCRFTlZ7U0RLUk9PVH0gJiYgJEVOVntTWVNURU1fTElCUkFSWV9ESVJ9KSB7CisgICAgICAg
IHB1c2goQGFyZ3MsICItSSIgLiAkRU5We0JVSUxUX1BST0RVQ1RTX0RJUn0gLiAkRU5We1NES1JP
T1R9IC4gIi91c3IvbG9jYWwvaW5jbHVkZSIpIGlmICRFTlZ7QlVJTFRfUFJPRFVDVFNfRElSfTsK
KyAgICAgICAgcHVzaChAYXJncywgIi1JIiAuICRFTlZ7U0RLUk9PVH0gLiAiL3Vzci9sb2NhbC9p
bmNsdWRlIik7CisgICAgfQogICAgIG15ICRmaWxlTmFtZSA9ICJXZWJDb3JlL2JpbmRpbmdzL29i
amMvUHVibGljRE9NSW50ZXJmYWNlcy5oIjsKICAgICBteSAkZ2NjTG9jYXRpb24gPSAiIjsKICAg
ICBpZiAoJEVOVntDQ30pIHsKQEAgLTIyNSw3ICsyNzMsMTMgQEAgc3ViIFJlYWRQdWJsaWNJbnRl
cmZhY2VzCiAgICAgfSBlbHNlIHsKICAgICAgICAgJGdjY0xvY2F0aW9uID0gIi91c3IvYmluL2dj
YyI7CiAgICAgfQotICAgIG9wZW4gRklMRSwgIi18IiwgJGdjY0xvY2F0aW9uLCAiLUUiLCAiLVAi
LCAiLXgiLCAib2JqZWN0aXZlLWMiLAorCisgICAgaWYgKCRFTlZ7U0RLUk9PVH0pIHsKKyAgICAg
ICAgIyBQTEFURk9STShJT1MpCisgICAgICAgIHB1c2goQGFyZ3MsICItaXN5c3Jvb3QiLCAkRU5W
e1NES1JPT1R9KTsKKyAgICB9CisKKyAgICBvcGVuIEZJTEUsICItfCIsICRnY2NMb2NhdGlvbiwg
QGFyZ3MsCiAgICAgICAgIChtYXAgeyAiLUQkXyIgfSBzcGxpdCgvICsvLCAkZGVmaW5lcykpLCAi
LURPQkpDX0NPREVfR0VORVJBVElPTiIsICRmaWxlTmFtZSBvciBkaWUgIkNvdWxkIG5vdCBvcGVu
ICRmaWxlTmFtZSI7CiAgICAgbXkgQGRvY3VtZW50Q29udGVudCA9IDxGSUxFPjsKICAgICBjbG9z
ZSBGSUxFOwpAQCAtMzUzLDYgKzQwNyw3IEBAIHN1YiBHZXRDbGFzc05hbWUKIAogICAgICMgc3Bl
Y2lhbCBjYXNlcwogICAgIHJldHVybiAiTlNTdHJpbmciIGlmICRjb2RlR2VuZXJhdG9yLT5Jc1N0
cmluZ1R5cGUoJG5hbWUpIG9yICRuYW1lIGVxICJTZXJpYWxpemVkU2NyaXB0VmFsdWUiOworICAg
IHJldHVybiAiQ0dDb2xvclJlZiIgaWYgJG5hbWUgZXEgIkNvbG9yIiBhbmQgJGJ1aWxkaW5nRm9y
SVBob25lOwogICAgIHJldHVybiAiTlMkbmFtZSIgaWYgSXNOYXRpdmVPYmpDVHlwZSgkbmFtZSk7
CiAgICAgcmV0dXJuICJCT09MIiBpZiAkbmFtZSBlcSAiYm9vbGVhbiI7CiAgICAgcmV0dXJuICJ1
bnNpZ25lZCBjaGFyIiBpZiAkbmFtZSBlcSAib2N0ZXQiOwpAQCAtNDgzLDYgKzUzOCwxNCBAQCBz
dWIgSXNOYXRpdmVPYmpDVHlwZQogICAgIHJldHVybiAwOwogfQogCitzdWIgSXNDb3JlRm91bmRh
dGlvblR5cGUKK3sKKyAgICBteSAkdHlwZSA9IHNoaWZ0OworCisgICAgcmV0dXJuIDEgaWYgJHR5
cGUgPX4gL14oQ0Z8Q0cpW0EtWmEtel0rUmVmJC87CisgICAgcmV0dXJuIDA7Cit9CisKIHN1YiBT
a2lwRnVuY3Rpb24KIHsKICAgICBteSAkZnVuY3Rpb24gPSBzaGlmdDsKQEAgLTUxOCw3ICs1ODEs
NiBAQCBzdWIgU2tpcEF0dHJpYnV0ZQogICAgIHJldHVybiAwOwogfQogCi0KIHN1YiBHZXRPYmpD
VHlwZQogewogICAgIG15ICR0eXBlID0gc2hpZnQ7CkBAIC01MjcsNiArNTg5LDcgQEAgc3ViIEdl
dE9iakNUeXBlCiAgICAgcmV0dXJuICJpZCA8JG5hbWU+IiBpZiBJc1Byb3RvY29sVHlwZSgkdHlw
ZSk7CiAgICAgcmV0dXJuICRuYW1lIGlmICRjb2RlR2VuZXJhdG9yLT5Jc1ByaW1pdGl2ZVR5cGUo
JHR5cGUpIG9yICR0eXBlIGVxICJET01UaW1lU3RhbXAiOwogICAgIHJldHVybiAidW5zaWduZWQg
c2hvcnQiIGlmICR0eXBlIGVxICJDb21wYXJlSG93IjsKKyAgICByZXR1cm4gJG5hbWUgaWYgSXND
b3JlRm91bmRhdGlvblR5cGUoJG5hbWUpOwogICAgIHJldHVybiAiJG5hbWUgKiI7CiB9CiAKQEAg
LTYxMiw3ICs2NzUsMTEgQEAgc3ViIEFkZEluY2x1ZGVzRm9yVHlwZQogCiAgICAgaWYgKElzTmF0
aXZlT2JqQ1R5cGUoJHR5cGUpKSB7CiAgICAgICAgIGlmICgkdHlwZSBlcSAiQ29sb3IiKSB7Ci0g
ICAgICAgICAgICAkaW1wbEluY2x1ZGVzeyJDb2xvck1hYy5oIn0gPSAxOworICAgICAgICAgICAg
aWYgKCRidWlsZGluZ0ZvcklQaG9uZSkgeworICAgICAgICAgICAgICAgICRpbXBsSW5jbHVkZXN7
IkNvbG9yU3BhY2UuaCJ9ID0gMTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAg
ICAgJGltcGxJbmNsdWRlc3siQ29sb3JNYWMuaCJ9ID0gMTsKKyAgICAgICAgICAgIH0KICAgICAg
ICAgfQogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtNzUyLDcgKzgxOSwxMSBAQCBzdWIgR2Vu
ZXJhdGVIZWFkZXIKICAgICBteSAkbnVtRnVuY3Rpb25zID0gQHskaW50ZXJmYWNlLT5mdW5jdGlv
bnN9OwogCiAgICAgIyAtIEFkZCBkZWZhdWx0IGhlYWRlciB0ZW1wbGF0ZQotICAgIEBoZWFkZXJD
b250ZW50SGVhZGVyID0gc3BsaXQoIlxyIiwgJGhlYWRlckxpY2Vuc2VUZW1wbGF0ZSk7CisgICAg
aWYgKCRpbnRlcmZhY2UtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJBcHBsZUNvcHlyaWdodCJ9KSB7
CisgICAgICAgIEBoZWFkZXJDb250ZW50SGVhZGVyID0gc3BsaXQoIlxyIiwgJGJlZ2luQXBwbGVD
b3B5cmlnaHRGb3JIZWFkZXJGaWxlcyk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgQGhlYWRlckNv
bnRlbnRIZWFkZXIgPSBzcGxpdCgiXHIiLCAkaGVhZGVyTGljZW5zZVRlbXBsYXRlKTsKKyAgICB9
CiAgICAgcHVzaChAaGVhZGVyQ29udGVudEhlYWRlciwgIlxuIik7CiAKICAgICAjIC0gSU5DTFVE
RVMgLQpAQCAtODQ4LDYgKzkxOSwxMSBAQCBzdWIgR2VuZXJhdGVIZWFkZXIKIAogICAgICAgICAg
ICAgbXkgJHB1YmxpY0ludGVyZmFjZUtleSA9ICRwcm9wZXJ0eSAuICI7IjsKIAorICAgICAgICAg
ICAgIyBGSVhNRTogVGhpcyBvbmx5IHdvcmtzIGZvciB0aGUgZ2V0dGVyLCBidXQgbm90IHRoZSBz
ZXR0ZXIuICBOZWVkIHRvIHJlZmFjdG9yIHRoaXMgY29kZS4KKyAgICAgICAgICAgIGlmICgkYnVp
bGRpbmdGb3JUaWdlck9yRWFybGllciAmJiAhJGJ1aWxkaW5nRm9ySVBob25lIHx8IElzQ29yZUZv
dW5kYXRpb25UeXBlKCRhdHRyaWJ1dGVUeXBlKSkgeworICAgICAgICAgICAgICAgICRwdWJsaWNJ
bnRlcmZhY2VLZXkgPSAiLSAoIiAuICRhdHRyaWJ1dGVUeXBlIC4gIikiIC4gJGF0dHJpYnV0ZU5h
bWUgLiAiOyI7CisgICAgICAgICAgICB9CisKICAgICAgICAgICAgIG15ICRhdmFpbGFiaWxpdHlN
YWNybyA9ICIiOwogICAgICAgICAgICAgaWYgKGRlZmluZWQgJHB1YmxpY0ludGVyZmFjZXN7JHB1
YmxpY0ludGVyZmFjZUtleX0gYW5kIGxlbmd0aCAkcHVibGljSW50ZXJmYWNlc3skcHVibGljSW50
ZXJmYWNlS2V5fSkgewogICAgICAgICAgICAgICAgICRhdmFpbGFiaWxpdHlNYWNybyA9ICRwdWJs
aWNJbnRlcmZhY2VzeyRwdWJsaWNJbnRlcmZhY2VLZXl9OwpAQCAtODc1LDkgKzk1MSwzNCBAQCBz
dWIgR2VuZXJhdGVIZWFkZXIKICAgICAgICAgICAgICAgICAkZmF0YWxFcnJvciA9IDE7CiAgICAg
ICAgICAgICB9CiAKLSAgICAgICAgICAgICRwcm9wZXJ0eSAuPSAkZGVjbGFyYXRpb25TdWZmaXg7
Ci0gICAgICAgICAgICBwdXNoKEBoZWFkZXJBdHRyaWJ1dGVzLCAkcHJvcGVydHkpIGlmICRwdWJs
aWM7Ci0gICAgICAgICAgICBwdXNoKEBwcml2YXRlSGVhZGVyQXR0cmlidXRlcywgJHByb3BlcnR5
KSB1bmxlc3MgJHB1YmxpYzsKKyAgICAgICAgICAgIGlmICghSXNDb3JlRm91bmRhdGlvblR5cGUo
JGF0dHJpYnV0ZVR5cGUpKSB7CisgICAgICAgICAgICAgICAgJHByb3BlcnR5IC49ICRkZWNsYXJh
dGlvblN1ZmZpeDsKKyAgICAgICAgICAgICAgICBwdXNoKEBoZWFkZXJBdHRyaWJ1dGVzLCAkcHJv
cGVydHkpIGlmICRwdWJsaWM7CisgICAgICAgICAgICAgICAgcHVzaChAcHJpdmF0ZUhlYWRlckF0
dHJpYnV0ZXMsICRwcm9wZXJ0eSkgdW5sZXNzICRwdWJsaWM7CisgICAgICAgICAgICB9IGVsc2Ug
eworICAgICAgICAgICAgICAgIG15ICRhdHRyaWJ1dGVDb25kaXRpb25hbFN0cmluZyA9ICRjb2Rl
R2VuZXJhdG9yLT5HZW5lcmF0ZUNvbmRpdGlvbmFsU3RyaW5nKCRhdHRyaWJ1dGUtPnNpZ25hdHVy
ZSk7CisgICAgICAgICAgICAgICAgaWYgKCRhdHRyaWJ1dGVDb25kaXRpb25hbFN0cmluZykgewor
ICAgICAgICAgICAgICAgICAgICBwdXNoKEBoZWFkZXJBdHRyaWJ1dGVzLCAiI2lmICR7YXR0cmli
dXRlQ29uZGl0aW9uYWxTdHJpbmd9XG4iKSBpZiAkcHVibGljOworICAgICAgICAgICAgICAgICAg
ICBwdXNoKEBwcml2YXRlSGVhZGVyQXR0cmlidXRlcywgIiNpZiAke2F0dHJpYnV0ZUNvbmRpdGlv
bmFsU3RyaW5nfVxuIikgdW5sZXNzICRwdWJsaWM7CisgICAgICAgICAgICAgICAgfQorIAorICAg
ICAgICAgICAgICAgICMgLSBHRVRURVIKKyAgICAgICAgICAgICAgICBteSAkZ2V0dGVyID0gIi0g
KCIgLiAkYXR0cmlidXRlVHlwZSAuICIpIiAuICRhdHRyaWJ1dGVOYW1lIC4gJGRlY2xhcmF0aW9u
U3VmZml4OworICAgICAgICAgICAgICAgIHB1c2goQGhlYWRlckF0dHJpYnV0ZXMsICRnZXR0ZXIp
IGlmICRwdWJsaWM7CisgICAgICAgICAgICAgICAgcHVzaChAcHJpdmF0ZUhlYWRlckF0dHJpYnV0
ZXMsICRnZXR0ZXIpIHVubGVzcyAkcHVibGljOworIAorICAgICAgICAgICAgICAgICMgLSBTRVRU
RVIKKyAgICAgICAgICAgICAgICBpZiAoISRhdHRyaWJ1dGUtPmlzUmVhZE9ubHkpIHsKKyAgICAg
ICAgICAgICAgICAgICAgbXkgJHNldHRlciA9ICItICh2b2lkKSRzZXR0ZXJOYW1lKCIgLiAkYXR0
cmlidXRlVHlwZSAuICIpbmV3IiAuIHVjZmlyc3QoJGF0dHJpYnV0ZU5hbWUpIC4gJGRlY2xhcmF0
aW9uU3VmZml4OworICAgICAgICAgICAgICAgICAgICBwdXNoKEBoZWFkZXJBdHRyaWJ1dGVzLCAk
c2V0dGVyKSBpZiAkcHVibGljOworICAgICAgICAgICAgICAgICAgICBwdXNoKEBwcml2YXRlSGVh
ZGVyQXR0cmlidXRlcywgJHNldHRlcikgdW5sZXNzICRwdWJsaWM7CisgICAgICAgICAgICAgICAg
fQorIAorICAgICAgICAgICAgICAgIGlmICgkYXR0cmlidXRlQ29uZGl0aW9uYWxTdHJpbmcpIHsK
KyAgICAgICAgICAgICAgICAgICAgcHVzaChAaGVhZGVyQXR0cmlidXRlcywgIiNlbmRpZlxuIikg
aWYgJHB1YmxpYzsKKyAgICAgICAgICAgICAgICAgICAgcHVzaChAcHJpdmF0ZUhlYWRlckF0dHJp
YnV0ZXMsICIjZW5kaWZcbiIpIHVubGVzcyAkcHVibGljOworICAgICAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgIH0KICAgICAgICAgfQogCiAgICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsIEBo
ZWFkZXJBdHRyaWJ1dGVzKSBpZiBAaGVhZGVyQXR0cmlidXRlcyA+IDA7CkBAIC04ODksNiArOTkw
LDcgQEAgc3ViIEdlbmVyYXRlSGVhZGVyCiAKICAgICAjIC0gQWRkIGZ1bmN0aW9ucy4KICAgICBp
ZiAoJG51bUZ1bmN0aW9ucyA+IDApIHsKKyAgICAgICAgbXkgJWluQXBwbGVDb3B5cmlnaHQgPSAo
cHVibGljID0+IDAsIHByaXZhdGUgPT4gMCk7CiAgICAgICAgIGZvcmVhY2ggbXkgJGZ1bmN0aW9u
IChAeyRpbnRlcmZhY2UtPmZ1bmN0aW9uc30pIHsKICAgICAgICAgICAgIG5leHQgaWYgU2tpcEZ1
bmN0aW9uKCRmdW5jdGlvbik7CiAgICAgICAgICAgICBuZXh0IGlmICgkZnVuY3Rpb24tPnNpZ25h
dHVyZS0+bmFtZSBlcSAic2V0IiBhbmQgJGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57
IlR5cGVkQXJyYXkifSk7CkBAIC04OTYsNiArOTk4LDcgQEAgc3ViIEdlbmVyYXRlSGVhZGVyCiAK
ICAgICAgICAgICAgIG15ICRyZXR1cm5UeXBlID0gR2V0T2JqQ1R5cGUoJGZ1bmN0aW9uLT5zaWdu
YXR1cmUtPnR5cGUpOwogICAgICAgICAgICAgbXkgJG5lZWRzRGVwcmVjYXRlZFZlcnNpb24gPSAo
QHskZnVuY3Rpb24tPnBhcmFtZXRlcnN9ID4gMSBhbmQgJGZ1bmN0aW9uLT5zaWduYXR1cmUtPmV4
dGVuZGVkQXR0cmlidXRlcy0+eyJPYmpDTGVnYWN5VW5uYW1lZFBhcmFtZXRlcnMifSk7CisgICAg
ICAgICAgICBteSAkbmVlZHNBcHBsZUNvcHlyaWdodCA9ICRmdW5jdGlvbi0+c2lnbmF0dXJlLT5l
eHRlbmRlZEF0dHJpYnV0ZXMtPnsiQXBwbGVDb3B5cmlnaHQifTsKICAgICAgICAgICAgIG15ICRu
dW1iZXJPZlBhcmFtZXRlcnMgPSBAeyRmdW5jdGlvbi0+cGFyYW1ldGVyc307CiAgICAgICAgICAg
ICBteSAldHlwZXNUb0ZvcndhcmREZWNsYXJlID0gKCRmdW5jdGlvbi0+c2lnbmF0dXJlLT50eXBl
ID0+IDEpOwogCkBAIC05NTAsNiArMTA1MywxOCBAQCBzdWIgR2VuZXJhdGVIZWFkZXIKICAgICAg
ICAgICAgICAgICBBZGRGb3J3YXJkRGVjbGFyYXRpb25zRm9yVHlwZSgkdHlwZSwgJHB1YmxpYykg
dW5sZXNzICRwdWJsaWMgYW5kICRuZWVkc0RlcHJlY2F0ZWRWZXJzaW9uOwogICAgICAgICAgICAg
fQogCisgICAgICAgICAgICBpZiAoJG5lZWRzQXBwbGVDb3B5cmlnaHQpIHsKKyAgICAgICAgICAg
ICAgICBpZiAoISRpbkFwcGxlQ29weXJpZ2h0eyRwdWJsaWMgPyAicHVibGljIiA6ICJwcml2YXRl
In0pIHsKKyAgICAgICAgICAgICAgICAgICAgcHVzaChAaGVhZGVyRnVuY3Rpb25zLCAkYmVnaW5B
cHBsZUNvcHlyaWdodEZvckhlYWRlckZpbGVzKSBpZiAkcHVibGljOworICAgICAgICAgICAgICAg
ICAgICBwdXNoKEBwcml2YXRlSGVhZGVyRnVuY3Rpb25zLCAkYmVnaW5BcHBsZUNvcHlyaWdodEZv
ckhlYWRlckZpbGVzKSB1bmxlc3MgJHB1YmxpYzsKKyAgICAgICAgICAgICAgICAgICAgJGluQXBw
bGVDb3B5cmlnaHR7JHB1YmxpYyA/ICJwdWJsaWMiIDogInByaXZhdGUifSA9IDE7CisgICAgICAg
ICAgICAgICAgfQorICAgICAgICAgICAgfSBlbHNpZiAoJGluQXBwbGVDb3B5cmlnaHR7JHB1Ymxp
YyA/ICJwdWJsaWMiIDogInByaXZhdGUifSkgeworICAgICAgICAgICAgICAgIHB1c2goQGhlYWRl
ckZ1bmN0aW9ucywgJGVuZEFwcGxlQ29weXJpZ2h0KSBpZiAkcHVibGljOworICAgICAgICAgICAg
ICAgIHB1c2goQHByaXZhdGVIZWFkZXJGdW5jdGlvbnMsICRlbmRBcHBsZUNvcHlyaWdodCkgdW5s
ZXNzICRwdWJsaWM7CisgICAgICAgICAgICAgICAgJGluQXBwbGVDb3B5cmlnaHR7JHB1YmxpYyA/
ICJwdWJsaWMiIDogInByaXZhdGUifSA9IDA7CisJCQl9CisKICAgICAgICAgICAgIG15ICRmdW5j
dGlvbkNvbmRpdGlvbmFsU3RyaW5nID0gJGNvZGVHZW5lcmF0b3ItPkdlbmVyYXRlQ29uZGl0aW9u
YWxTdHJpbmcoJGZ1bmN0aW9uLT5zaWduYXR1cmUpOwogICAgICAgICAgICAgaWYgKCRmdW5jdGlv
bkNvbmRpdGlvbmFsU3RyaW5nKSB7CiAgICAgICAgICAgICAgICAgcHVzaChAaGVhZGVyRnVuY3Rp
b25zLCAiI2lmICR7ZnVuY3Rpb25Db25kaXRpb25hbFN0cmluZ31cbiIpIGlmICRwdWJsaWM7CkBA
IC05OTEsNiArMTEwNiw5IEBAIHN1YiBHZW5lcmF0ZUhlYWRlcgogICAgICAgICAgICAgfQogICAg
ICAgICB9CiAKKyAgICAgICAgcHVzaChAaGVhZGVyRnVuY3Rpb25zLCAkZW5kQXBwbGVDb3B5cmln
aHQpIGlmICRpbkFwcGxlQ29weXJpZ2h0eyJwdWJsaWMifTsKKyAgICAgICAgcHVzaChAcHJpdmF0
ZUhlYWRlckZ1bmN0aW9ucywgJGVuZEFwcGxlQ29weXJpZ2h0KSBpZiAkaW5BcHBsZUNvcHlyaWdo
dHsicHJpdmF0ZSJ9OworCiAgICAgICAgIGlmIChAaGVhZGVyRnVuY3Rpb25zID4gMCkgewogICAg
ICAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIlxuIikgaWYgQGhlYWRlckF0dHJpYnV0ZXMg
PiAwOwogICAgICAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgQGhlYWRlckZ1bmN0aW9ucyk7
CkBAIC0xMDExLDExICsxMTI5LDE5IEBAIHN1YiBHZW5lcmF0ZUhlYWRlcgogICAgICAgICBwdXNo
KEBoZWFkZXJDb250ZW50LCAiXEBlbmRcbiIpOwogICAgIH0KIAorICAgIGlmICgkaW50ZXJmYWNl
LT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiQXBwbGVDb3B5cmlnaHQifSkgeworICAgICAgICBwdXNo
KEBoZWFkZXJDb250ZW50LCBzcGxpdCgiXHIiLCAkZW5kQXBwbGVDb3B5cmlnaHQpKTsKKyAgICB9
CisKICAgICBteSAlYWx3YXlzR2VuZXJhdGVGb3JOb1NWR0J1aWxkID0gbWFwIHsgJF8gPT4gMSB9
IHF3KERPTUhUTUxFbWJlZEVsZW1lbnQgRE9NSFRNTE9iamVjdEVsZW1lbnQpOwogCiAgICAgaWYg
KEBwcml2YXRlSGVhZGVyQXR0cmlidXRlcyA+IDAgb3IgQHByaXZhdGVIZWFkZXJGdW5jdGlvbnMg
PiAwIG9yIGV4aXN0cyAkYWx3YXlzR2VuZXJhdGVGb3JOb1NWR0J1aWxkeyRjbGFzc05hbWV9KSB7
CiAgICAgICAgICMgLSBQcml2YXRlIGNhdGVnb3J5IEBpbnRlcmZhY2UKLSAgICAgICAgQHByaXZh
dGVIZWFkZXJDb250ZW50SGVhZGVyID0gc3BsaXQoIlxyIiwgJGhlYWRlckxpY2Vuc2VUZW1wbGF0
ZSk7CisgICAgICAgIGlmICgkaW50ZXJmYWNlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiQXBwbGVD
b3B5cmlnaHQifSkgeworICAgICAgICAgICAgQHByaXZhdGVIZWFkZXJDb250ZW50SGVhZGVyID0g
c3BsaXQoIlxyIiwgJGJlZ2luQXBwbGVDb3B5cmlnaHRGb3JIZWFkZXJGaWxlcyk7CisgICAgICAg
IH0gZWxzZSB7CisgICAgICAgICAgICBAcHJpdmF0ZUhlYWRlckNvbnRlbnRIZWFkZXIgPSBzcGxp
dCgiXHIiLCAkaGVhZGVyTGljZW5zZVRlbXBsYXRlKTsKKyAgICAgICAgfQogICAgICAgICBwdXNo
KEBwcml2YXRlSGVhZGVyQ29udGVudEhlYWRlciwgIlxuIik7CiAKICAgICAgICAgbXkgJGNsYXNz
SGVhZGVyTmFtZSA9IEdldENsYXNzSGVhZGVyTmFtZSgkY2xhc3NOYW1lKTsKQEAgLTEwMjcsNiAr
MTE1MywxMCBAQCBzdWIgR2VuZXJhdGVIZWFkZXIKICAgICAgICAgcHVzaChAcHJpdmF0ZUhlYWRl
ckNvbnRlbnQsICJcbiIpIGlmIEBwcml2YXRlSGVhZGVyQXR0cmlidXRlcyA+IDAgYW5kIEBwcml2
YXRlSGVhZGVyRnVuY3Rpb25zID4gMDsKICAgICAgICAgcHVzaChAcHJpdmF0ZUhlYWRlckNvbnRl
bnQsIEBwcml2YXRlSGVhZGVyRnVuY3Rpb25zKSBpZiBAcHJpdmF0ZUhlYWRlckZ1bmN0aW9ucyA+
IDA7CiAgICAgICAgIHB1c2goQHByaXZhdGVIZWFkZXJDb250ZW50LCAiXEBlbmRcbiIpOworCisg
ICAgICAgIGlmICgkaW50ZXJmYWNlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiQXBwbGVDb3B5cmln
aHQifSkgeworICAgICAgICAgICAgcHVzaChAcHJpdmF0ZUhlYWRlckNvbnRlbnQsIHNwbGl0KCJc
ciIsICRlbmRBcHBsZUNvcHlyaWdodCkpOworICAgICAgICB9CiAgICAgfQogCiAgICAgdW5sZXNz
ICgkaXNQcm90b2NvbCkgewpAQCAtMTAzOSw3ICsxMTY5LDExIEBAIHN1YiBHZW5lcmF0ZUhlYWRl
cgogICAgICAgICAkaW1wbFR5cGUgPSAkc3ZnTmF0aXZlVHlwZSBpZiAkc3ZnTmF0aXZlVHlwZTsK
IAogICAgICAgICAjIEdlbmVyYXRlIGludGVyZmFjZSBkZWZpbml0aW9ucy4gCi0gICAgICAgIEBp
bnRlcm5hbEhlYWRlckNvbnRlbnQgPSBzcGxpdCgiXHIiLCAkaW1wbGVtZW50YXRpb25MaWNlbnNl
VGVtcGxhdGUpOworICAgICAgICBpZiAoJGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57
IkFwcGxlQ29weXJpZ2h0In0pIHsKKyAgICAgICAgICAgIEBpbnRlcm5hbEhlYWRlckNvbnRlbnQg
PSBzcGxpdCgiXHIiLCAkYmVnaW5BcHBsZUNvcHlyaWdodEZvckhlYWRlckZpbGVzKTsKKyAgICAg
ICAgfSBlbHNlIHsKKyAgICAgICAgICAgIEBpbnRlcm5hbEhlYWRlckNvbnRlbnQgPSBzcGxpdCgi
XHIiLCAkaW1wbGVtZW50YXRpb25MaWNlbnNlVGVtcGxhdGUpOworICAgICAgICB9CiAKICAgICAg
ICAgcHVzaChAaW50ZXJuYWxIZWFkZXJDb250ZW50LCAiXG4jaW1wb3J0IDxXZWJDb3JlLyRjbGFz
c05hbWUuaD5cblxuIik7CiAgICAgICAgIHB1c2goQGludGVybmFsSGVhZGVyQ29udGVudCwgIiNp
bXBvcnQgPFdlYkNvcmUvU1ZHQW5pbWF0ZWRQcm9wZXJ0eVRlYXJPZmYuaD5cblxuIikgaWYgJHN2
Z1Byb3BlcnR5VHlwZTsKQEAgLTExMDgsNyArMTI0MiwxMSBAQCBzdWIgR2VuZXJhdGVJbXBsZW1l
bnRhdGlvbgogICAgICRpbXBsVHlwZSA9ICRzdmdOYXRpdmVUeXBlIGlmICRzdmdOYXRpdmVUeXBl
OwogCiAgICAgIyAtIEFkZCBkZWZhdWx0IGhlYWRlciB0ZW1wbGF0ZS4KLSAgICBAaW1wbENvbnRl
bnRIZWFkZXIgPSBzcGxpdCgiXHIiLCAkaW1wbGVtZW50YXRpb25MaWNlbnNlVGVtcGxhdGUpOwor
ICAgIGlmICgkaW50ZXJmYWNlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiQXBwbGVDb3B5cmlnaHQi
fSkgeworICAgICAgICBAaW1wbENvbnRlbnRIZWFkZXIgPSBzcGxpdCgiXHIiLCAkYmVnaW5BcHBs
ZUNvcHlyaWdodEZvclNvdXJjZUZpbGVzKTsKKyAgICB9IGVsc2UgeworICAgICAgICBAaW1wbENv
bnRlbnRIZWFkZXIgPSBzcGxpdCgiXHIiLCAkaW1wbGVtZW50YXRpb25MaWNlbnNlVGVtcGxhdGUp
OworICAgIH0KIAogICAgICMgLSBJTkNMVURFUyAtCiAgICAgcHVzaChAaW1wbENvbnRlbnRIZWFk
ZXIsICJcbiNpbXBvcnQgXCJjb25maWcuaFwiXG4iKTsKQEAgLTEzMzUsOCArMTQ3MywxMyBAQCBz
dWIgR2VuZXJhdGVJbXBsZW1lbnRhdGlvbgogICAgICAgICAgICAgICAgICRnZXR0ZXJDb250ZW50
SGVhZCA9ICJraXQoJGdldHRlckNvbnRlbnRIZWFkIjsKICAgICAgICAgICAgICAgICAkZ2V0dGVy
Q29udGVudFRhaWwgLj0gIikiOwogICAgICAgICAgICAgfSBlbHNpZiAoJGlkbFR5cGUgZXEgIkNv
bG9yIikgewotICAgICAgICAgICAgICAgICRnZXR0ZXJDb250ZW50SGVhZCA9ICJXZWJDb3JlOjpu
c0NvbG9yKCRnZXR0ZXJDb250ZW50SGVhZCI7Ci0gICAgICAgICAgICAgICAgJGdldHRlckNvbnRl
bnRUYWlsIC49ICIpIjsKKyAgICAgICAgICAgICAgICBpZiAoJGJ1aWxkaW5nRm9ySVBob25lKSB7
CisgICAgICAgICAgICAgICAgICAgICRnZXR0ZXJDb250ZW50SGVhZCA9ICJXZWJDb3JlOjpjYWNo
ZWRDR0NvbG9yKCRnZXR0ZXJDb250ZW50SGVhZCI7CisgICAgICAgICAgICAgICAgICAgICRnZXR0
ZXJDb250ZW50VGFpbCAuPSAiLCBXZWJDb3JlOjpDb2xvclNwYWNlRGV2aWNlUkdCKSI7CisgICAg
ICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgJGdldHRlckNvbnRlbnRI
ZWFkID0gIldlYkNvcmU6Om5zQ29sb3IoJGdldHRlckNvbnRlbnRIZWFkIjsKKyAgICAgICAgICAg
ICAgICAgICAgJGdldHRlckNvbnRlbnRUYWlsIC49ICIpIjsKKyAgICAgICAgICAgICAgICB9CiAg
ICAgICAgICAgICB9IGVsc2lmICgkYXR0cmlidXRlLT5zaWduYXR1cmUtPnR5cGUgZXEgIlNlcmlh
bGl6ZWRTY3JpcHRWYWx1ZSIpIHsKICAgICAgICAgICAgICAgICAkZ2V0dGVyQ29udGVudEhlYWQg
PSAiJGdldHRlckNvbnRlbnRIZWFkIjsKICAgICAgICAgICAgICAgICAkZ2V0dGVyQ29udGVudFRh
aWwgLj0gIi0+dG9TdHJpbmcoKSI7ICAgICAgICAgICAgICAgIApAQCAtMTUwNyw2ICsxNjUwLDcg
QEAgc3ViIEdlbmVyYXRlSW1wbGVtZW50YXRpb24KIAogICAgICMgLSBGdW5jdGlvbnMKICAgICBp
ZiAoJG51bUZ1bmN0aW9ucyA+IDApIHsKKyAgICAgICAgbXkgJGluQXBwbGVDb3B5cmlnaHQgPSAw
OwogICAgICAgICBmb3JlYWNoIG15ICRmdW5jdGlvbiAoQHskaW50ZXJmYWNlLT5mdW5jdGlvbnN9
KSB7CiAgICAgICAgICAgICBuZXh0IGlmIFNraXBGdW5jdGlvbigkZnVuY3Rpb24pOwogICAgICAg
ICAgICAgbmV4dCBpZiAoJGZ1bmN0aW9uLT5zaWduYXR1cmUtPm5hbWUgZXEgInNldCIgYW5kICRp
bnRlcmZhY2UtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJUeXBlZEFycmF5In0pOwpAQCAtMTUxNCw2
ICsxNjU4LDcgQEAgc3ViIEdlbmVyYXRlSW1wbGVtZW50YXRpb24KIAogICAgICAgICAgICAgbXkg
JGZ1bmN0aW9uTmFtZSA9ICRmdW5jdGlvbi0+c2lnbmF0dXJlLT5uYW1lOwogICAgICAgICAgICAg
bXkgJHJldHVyblR5cGUgPSBHZXRPYmpDVHlwZSgkZnVuY3Rpb24tPnNpZ25hdHVyZS0+dHlwZSk7
CisgICAgICAgICAgICBteSAkbmVlZHNBcHBsZUNvcHlyaWdodCA9ICRmdW5jdGlvbi0+c2lnbmF0
dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiQXBwbGVDb3B5cmlnaHQifTsKICAgICAgICAgICAg
IG15ICRoYXNQYXJhbWV0ZXJzID0gQHskZnVuY3Rpb24tPnBhcmFtZXRlcnN9OwogICAgICAgICAg
ICAgbXkgJHJhaXNlc0V4Y2VwdGlvbnMgPSAkZnVuY3Rpb24tPnNpZ25hdHVyZS0+ZXh0ZW5kZWRB
dHRyaWJ1dGVzLT57IlJhaXNlc0V4Y2VwdGlvbiJ9OwogCkBAIC0xNzI0LDYgKzE4NjksMTYgQEAg
c3ViIEdlbmVyYXRlSW1wbGVtZW50YXRpb24KICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAg
ICB9CiAKKyAgICAgICAgICAgIGlmICgkbmVlZHNBcHBsZUNvcHlyaWdodCkgeworICAgICAgICAg
ICAgICAgIGlmICghJGluQXBwbGVDb3B5cmlnaHQpIHsKKyAgICAgICAgICAgICAgICAgICAgcHVz
aChAaW1wbENvbnRlbnQsICRiZWdpbkFwcGxlQ29weXJpZ2h0Rm9yU291cmNlRmlsZXMpOworICAg
ICAgICAgICAgICAgICAgICAkaW5BcHBsZUNvcHlyaWdodCA9IDE7CisgICAgICAgICAgICAgICAg
fQorICAgICAgICAgICAgfSBlbHNpZiAoJGluQXBwbGVDb3B5cmlnaHQpIHsKKyAgICAgICAgICAg
ICAgICBwdXNoKEBpbXBsQ29udGVudCwgJGVuZEFwcGxlQ29weXJpZ2h0KTsKKyAgICAgICAgICAg
ICAgICAkaW5BcHBsZUNvcHlyaWdodCA9IDA7CisgICAgICAgICAgICB9CisKICAgICAgICAgICAg
IG15ICRjb25kaXRpb25hbFN0cmluZyA9ICRjb2RlR2VuZXJhdG9yLT5HZW5lcmF0ZUNvbmRpdGlv
bmFsU3RyaW5nKCRmdW5jdGlvbi0+c2lnbmF0dXJlKTsKICAgICAgICAgICAgIHB1c2goQGltcGxD
b250ZW50LCAiXG4jaWYgJHtjb25kaXRpb25hbFN0cmluZ31cbiIpIGlmICRjb25kaXRpb25hbFN0
cmluZzsKIApAQCAtMTc1MCwxMSArMTkwNSwxNiBAQCBzdWIgR2VuZXJhdGVJbXBsZW1lbnRhdGlv
bgogICAgICAgICAgICAgIyBDbGVhciB0aGUgaGFzaAogICAgICAgICAgICAgJW5lZWRzQ3VzdG9t
ID0gKCk7CiAgICAgICAgIH0KKyAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICRlbmRBcHBsZUNv
cHlyaWdodCkgaWYgJGluQXBwbGVDb3B5cmlnaHQ7CiAgICAgfQogCiAgICAgIyBFTkQgaW1wbGVt
ZW50YXRpb24KICAgICBwdXNoKEBpbXBsQ29udGVudCwgIlxAZW5kXG4iKTsKIAorICAgIGlmICgk
aW50ZXJmYWNlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiQXBwbGVDb3B5cmlnaHQifSkgeworICAg
ICAgICBwdXNoKEBpbXBsQ29udGVudCwgc3BsaXQoIlxyIiwgJGVuZEFwcGxlQ29weXJpZ2h0KSk7
CisgICAgfQorCiAgICAgIyBHZW5lcmF0ZSBpbnRlcm5hbCBpbnRlcmZhY2VzCiAgICAgcHVzaChA
aW1wbENvbnRlbnQsICJcbiRpbXBsVHlwZSogY29yZSgkY2xhc3NOYW1lICp3cmFwcGVyKVxuIik7
CiAgICAgcHVzaChAaW1wbENvbnRlbnQsICJ7XG4iKTsKQEAgLTE3OTIsNiArMTk1MiwxMCBAQCBz
dWIgR2VuZXJhdGVJbXBsZW1lbnRhdGlvbgogICAgICMgLSBFbmQgdGhlIGlmZGVmIGNvbmRpdGlv
bmFsIGlmIG5lY2Vzc2FyeQogICAgIHB1c2goQGltcGxDb250ZW50LCAiXG4jZW5kaWYgLy8gJHtj
b25kaXRpb25hbFN0cmluZ31cbiIpIGlmICRjb25kaXRpb25hbFN0cmluZzsKIAorICAgIGlmICgk
aW50ZXJmYWNlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiQXBwbGVDb3B5cmlnaHQifSkgeworICAg
ICAgICBwdXNoKEBpbXBsQ29udGVudCwgc3BsaXQoIlxyIiwgJGVuZEFwcGxlQ29weXJpZ2h0KSk7
CisgICAgfQorCiAgICAgIyAtIEdlbmVyYXRlIGRlcGVuZGVuY2llcy4KICAgICBpZiAoJHdyaXRl
RGVwZW5kZW5jaWVzICYmIEBhbmNlc3RvckludGVyZmFjZU5hbWVzKSB7CiAgICAgICAgIHB1c2go
QGRlcHNDb250ZW50LCAiJGNsYXNzTmFtZS5oIDogIiwgam9pbigiICIsIG1hcCB7ICIkXy5pZGwi
IH0gQGFuY2VzdG9ySW50ZXJmYWNlTmFtZXMpLCAiXG4iKTsKQEAgLTE4MDMsMTEgKzE5NjcsMTEg
QEAgc3ViIEdlbmVyYXRlSW1wbGVtZW50YXRpb24KIHN1YiBXcml0ZURhdGEKIHsKICAgICBteSAk
b2JqZWN0ID0gc2hpZnQ7Ci0gICAgbXkgJGRhdGFOb2RlID0gc2hpZnQ7CisgICAgbXkgJGludGVy
ZmFjZSA9IHNoaWZ0OwogICAgIG15ICRvdXRwdXREaXIgPSBzaGlmdDsKIAogICAgICMgT3BlbiBm
aWxlcyBmb3Igd3JpdGluZy4uLgotICAgIG15ICRuYW1lID0gJGRhdGFOb2RlLT5uYW1lOworICAg
IG15ICRuYW1lID0gJGludGVyZmFjZS0+bmFtZTsKICAgICBteSAkcHJlZml4ID0gRmlsZU5hbWVQ
cmVmaXg7CiAgICAgbXkgJGhlYWRlckZpbGVOYW1lID0gIiRvdXRwdXREaXIvJHByZWZpeCRuYW1l
LmgiOwogICAgIG15ICRwcml2YXRlSGVhZGVyRmlsZU5hbWUgPSAiJG91dHB1dERpci8kcHJlZml4
JHtuYW1lfVByaXZhdGUuaCI7CkBAIC0xODE3LDcgKzE5ODEsNyBAQCBzdWIgV3JpdGVEYXRhCiAK
ICAgICAjIFdyaXRlIHB1YmxpYyBoZWFkZXIuCiAgICAgbXkgJGNvbnRlbnRzID0gam9pbiAiIiwg
QGhlYWRlckNvbnRlbnRIZWFkZXI7Ci0gICAgbWFwIHsgJGNvbnRlbnRzIC49ICJcQGNsYXNzICRf
O1xuIiB9IHNvcnQga2V5cyglaGVhZGVyRm9yd2FyZERlY2xhcmF0aW9ucyk7CisgICAgbWFwIHsg
JGNvbnRlbnRzIC49IChJc0NvcmVGb3VuZGF0aW9uVHlwZSgkXykgPyAidHlwZWRlZiBzdHJ1Y3Qg
IiAuIHN1YnN0cigkXywgMCwgLTMpIC4gIiogJF87XG4iIDogIlxAY2xhc3MgJF87XG4iKSB9IHNv
cnQga2V5cyglaGVhZGVyRm9yd2FyZERlY2xhcmF0aW9ucyk7CiAgICAgbWFwIHsgJGNvbnRlbnRz
IC49ICJcQHByb3RvY29sICRfO1xuIiB9IHNvcnQga2V5cyglaGVhZGVyRm9yd2FyZERlY2xhcmF0
aW9uc0ZvclByb3RvY29scyk7CiAKICAgICBteSAkaGFzRm9yd2FyZERlY2xhcmF0aW9ucyA9IGtl
eXMoJWhlYWRlckZvcndhcmREZWNsYXJhdGlvbnMpICsga2V5cyglaGVhZGVyRm9yd2FyZERlY2xh
cmF0aW9uc0ZvclByb3RvY29scyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL0lETEF0dHJpYnV0ZXMudHh0IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy9JRExBdHRyaWJ1dGVzLnR4dAppbmRleCBlNGMyOTJiMmMwM2E5ZDNkNTkxMWNjYmE4OTI1
MjYxOWE5YmI1Nzg0Li44NWVhZDcxNWRjZDE3MmVjMGViNDQwNTNjY2M3MDc1ZmZhNDEwM2U2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0lETEF0dHJpYnV0ZXMu
dHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvSURMQXR0cmlidXRlcy50
eHQKQEAgLTEwNywzICsxMDcsNiBAQCBUcmVhdFJldHVybmVkTnVsbFN0cmluZ0FzPU51bGx8VW5k
ZWZpbmVkCiBUcmVhdFVuZGVmaW5lZEFzPU51bGxTdHJpbmcKIFR5cGVkQXJyYXk9KgogVVJMCisK
KyMgUExBVEZPUk0oSU9TKQorQXBwbGVDb3B5cmlnaHQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvcHJlcHJvY2Vzc29yLnBtIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy9wcmVwcm9jZXNzb3IucG0KaW5kZXggY2IzMGY4MGMwMTZmZjc2MjNhOTBk
M2M5YTk5ZGJjOGM0OTM3MmNkMi4uZTg0Y2Q0YWIwZGNhM2RkMGNkNWQyOTgzNmQxNWUzZTMzNGRm
NzQ0NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9wcmVwcm9j
ZXNzb3IucG0KKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9wcmVwcm9jZXNz
b3IucG0KQEAgLTU3LDYgKzU3LDkgQEAgc3ViIGFwcGx5UHJlcHJvY2Vzc29yCiAgICAgICAgIHB1
c2goQGFyZ3MsIHF3KC1FIC1QIC14IGMrKykpOwogICAgIH0KIAorICAgIHB1c2goQGFyZ3MsICIt
SSIgLiAkRU5We0JVSUxUX1BST0RVQ1RTX0RJUn0gLiAiL3Vzci9sb2NhbC9pbmNsdWRlIikgaWYg
JEVOVntCVUlMVF9QUk9EVUNUU19ESVJ9OworICAgIHB1c2goQGFyZ3MsICItaXN5c3Jvb3QiLCAk
RU5We1NES1JPT1R9KSBpZiAkRU5We1NES1JPT1R9OworCiAgICAgIyBSZW1vdmUgZG91YmxlIHF1
b3RhdGlvbnMgZnJvbSAkZGVmaW5lcyBhbmQgZXh0cmFjdCBtYWNyb3MuCiAgICAgIyBGb3IgZXhh
bXBsZSwgaWYgJGRlZmluZXMgaXMgJyAiQT0xIiAiQj0xIiBDPTEgIiIgICAgRCAgJywKICAgICAj
IHRoZW4gaXQgaXMgY29udmVydGVkIGludG8gZm91ciBtYWNyb3MgLURBPTEsIC1EQj0xLCAtREM9
MSBhbmQgLURELgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL29iamMvb2JqY19j
bGFzcy5tbSBiL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9vYmpjL29iamNfY2xhc3MubW0KaW5kZXgg
NWJhY2Y3YTNlNDQ4MzAyYjVlNDcxNDE1YmQwY2EzMGVmNmU0ZDk3ZC4uYThlZjUwZWQzNzliZTM1
ZThlOGUwMWNjMTljNTczZTNjOWNkNjQ0NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYnJp
ZGdlL29iamMvb2JqY19jbGFzcy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2Uvb2JqYy9v
YmpjX2NsYXNzLm1tCkBAIC0xNjEsNyArMTYxLDExIEBAIEZpZWxkKiBPYmpjQ2xhc3M6OmZpZWxk
TmFtZWQoUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSW5zdGFuY2UqIGluc3RhbmNlKSBjb25z
CiAgICAgQ1N0cmluZyBqc05hbWUgPSBuYW1lLmFzY2lpKCk7CiAgICAgUmV0YWluUHRyPENGU3Ry
aW5nUmVmPiBmaWVsZE5hbWUgPSBhZG9wdENGKENGU3RyaW5nQ3JlYXRlV2l0aENTdHJpbmcoTlVM
TCwganNOYW1lLmRhdGEoKSwga0NGU3RyaW5nRW5jb2RpbmdBU0NJSSkpOwogICAgIGlkIHRhcmdl
dE9iamVjdCA9IChzdGF0aWNfY2FzdDxPYmpjSW5zdGFuY2UqPihpbnN0YW5jZSkpLT5nZXRPYmpl
Y3QoKTsKKyNpZiBQTEFURk9STShJT1MpCisgICAgaWQgYXR0cmlidXRlcyA9IFt0YXJnZXRPYmpl
Y3QgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3RvcihhdHRyaWJ1dGVLZXlzKV0gPyBbdGFyZ2V0
T2JqZWN0IHBlcmZvcm1TZWxlY3RvcjpAc2VsZWN0b3IoYXR0cmlidXRlS2V5cyldIDogbmlsOwor
I2Vsc2UKICAgICBpZCBhdHRyaWJ1dGVzID0gW3RhcmdldE9iamVjdCBhdHRyaWJ1dGVLZXlzXTsK
KyNlbmRpZgogICAgIGlmIChhdHRyaWJ1dGVzKSB7CiAgICAgICAgIC8vIENsYXNzIG92ZXJyaWRl
cyBhdHRyaWJ1dGVLZXlzLCB1c2UgdGhhdCBhcnJheSBvZiBrZXkgbmFtZXMuCiAgICAgICAgIHVu
c2lnbmVkIGNvdW50ID0gW2F0dHJpYnV0ZXMgY291bnRdOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvYnJpZGdlL29iamMvb2JqY19pbnN0YW5jZS5tbSBiL1NvdXJjZS9XZWJDb3JlL2JyaWRn
ZS9vYmpjL29iamNfaW5zdGFuY2UubW0KaW5kZXggZDFkMzdmNTdmODdlYWVmNWJlZTgxMjdjYjg4
Y2I2NDQyNDBkZjNkYi4uM2NhNzM1N2YxMzhkZTdlZWI2MDc4MzgwY2E0NTU5NDVjZjA3MDlmMiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL29iamMvb2JqY19pbnN0YW5jZS5tbQor
KysgYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2Uvb2JqYy9vYmpjX2luc3RhbmNlLm1tCkBAIC0zNyw2
ICszNywxMCBAQAogI2ltcG9ydCAicnVudGltZS9GdW5jdGlvblByb3RvdHlwZS5oIgogI2ltcG9y
dCA8d3RmL0Fzc2VydGlvbnMuaD4KIAorI2lmIFBMQVRGT1JNKElPUykKKyNpbXBvcnQgPEZvdW5k
YXRpb24vTlNNYXBUYWJsZS5oPgorI2VuZGlmIC8vIFBMQVRGT1JNKElPUykKKwogI2lmZGVmIE5E
RUJVRwogI2RlZmluZSBPQkpDX0xPRyhmb3JtYXRBbmRBcmdzLi4uKSAoKHZvaWQpMCkKICNlbHNl
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jb25maWcuaCBiL1NvdXJjZS9XZWJDb3JlL2Nv
bmZpZy5oCmluZGV4IDY1MzczMWMyYTlhYzBkZjY1ZjVjMWM5NTVjZTRlYjQ5ZTdkNmRiMmQuLmZm
NjNjZDU4MDMxYjNiM2E2ODdmNmJkMjA2NTI0NTYwNjBmYjI2YjIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2NvbmZpZy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2NvbmZpZy5oCkBAIC0xMDAs
NyArMTAwLDcgQEAKICNlbmRpZgogI2VuZGlmCiAKLSNpZiBQTEFURk9STShNQUMpCisjaWYgUExB
VEZPUk0oTUFDKSAmJiAhUExBVEZPUk0oSU9TKQogLy8gTmV3IHRoZW1lCiAjZGVmaW5lIFdURl9V
U0VfTkVXX1RIRU1FIDEKICNlbmRpZiAvLyBQTEFURk9STShNQUMpCkBAIC0xMjUsNiArMTI1LDEx
IEBAIHR5cGVkZWYgZmxvYXQgQ0dGbG9hdDsKICNkZWZpbmUgV1RGX1VTRV9DQSAxCiAjZW5kaWYK
IAorI2lmIFBMQVRGT1JNKElPUykKKyNkZWZpbmUgV0VCQ09SRV9OQVZJR0FUT1JfUExBVEZPUk0g
d2tHZXRQbGF0Zm9ybU5hbWVGb3JOYXZpZ2F0b3IoKTsKKyNkZWZpbmUgV0VCQ09SRV9OQVZJR0FU
T1JfVkVORE9SIHdrR2V0VmVuZG9yTmFtZUZvck5hdmlnYXRvcigpOworI2VuZGlmCisKIC8vIEZJ
WE1FOiBNb3ZlIHRoaXMgdG8gSmF2YVNjcmlwdENvcmUvd3RmL1BsYXRmb3JtLmgsIHdoaWNoIGlz
IHdoZXJlIHdlIGRlZmluZSBXVEZfVVNFX0FWRk9VTkRBVElPTiBvbiB0aGUgTWFjLgogLy8gaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY3MzM0CiAjaWYgUExBVEZPUk0o
V0lOKSAmJiBVU0UoQ0cpICYmIEhBVkUoQVZDRikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9Eb2N1bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCmluZGV4
IGU4NmRmOWZkNzFjZGYzMjBjOGU0MjhjMzRkNTllZTljN2FjNTRhZWIuLjRiNWE4ODI3N2EwMmIy
MThiZjZmYzIyYThjMTU1YzEyNjI5YTRiMzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9Eb2N1bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcApAQCAt
NDc4OSw3ICs0Nzg5LDcgQEAgSFRNTENhbnZhc0VsZW1lbnQqIERvY3VtZW50OjpnZXRDU1NDYW52
YXNFbGVtZW50KGNvbnN0IFN0cmluZyYgbmFtZSkKICNpZiBFTkFCTEUoSU9TX1RFWFRfQVVUT1NJ
WklORykKIHZvaWQgRG9jdW1lbnQ6OmFkZEF1dG9TaXppbmdOb2RlKE5vZGUqIG5vZGUsIGZsb2F0
IGNhbmRpZGF0ZVNpemUpCiB7Ci0gICAgVGV4dEF1dG9TaXppbmdLZXkga2V5KG5vZGUtPnJlbmRl
cmVyKCktPnN0eWxlKCksICZkb2N1bWVudCgpKTsKKyAgICBUZXh0QXV0b1NpemluZ0tleSBrZXko
Jm5vZGUtPnJlbmRlcmVyKCktPnN0eWxlKCksICZkb2N1bWVudCgpKTsKICAgICBUZXh0QXV0b1Np
emluZ01hcDo6QWRkUmVzdWx0IHJlc3VsdCA9IG1fdGV4dEF1dG9TaXplZE5vZGVzLmFkZChrZXks
IG51bGxwdHIpOwogICAgIGlmIChyZXN1bHQuaXNOZXdFbnRyeSkKICAgICAgICAgcmVzdWx0Lml0
ZXJhdG9yLT52YWx1ZSA9IFRleHRBdXRvU2l6aW5nVmFsdWU6OmNyZWF0ZSgpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9j
dW1lbnQuaAppbmRleCA0YmEwYzVjNzQzZWQyMTA3MmJkNzBiY2U1NzIxZmFmMzk5OWUyYTVjLi4z
MGQ0MmRjZDlhYWM3NWNjNzdkNzM4M2Q5YzkxMjAyZmMxZDMyODIwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1l
bnQuaApAQCAtMTY1LDggKzE2NSw4IEBAIHN0cnVjdCBBbm5vdGF0ZWRSZWdpb25WYWx1ZTsKIAog
I2lmIEVOQUJMRShUT1VDSF9FVkVOVFMpCiAjaWYgUExBVEZPUk0oSU9TKQotI2luY2x1ZGUgIkRv
Y3VtZW50SU9TRm9yd2FyZC5oIgotI2VuZGlmCisjaW5jbHVkZSA8V2ViS2l0QWRkaXRpb25zL0Rv
Y3VtZW50SU9TRm9yd2FyZC5oPgorI2VuZGlmIC8vIFBMQVRGT1JNKElPUykKIGNsYXNzIFRvdWNo
OwogY2xhc3MgVG91Y2hMaXN0OwogI2VuZGlmCkBAIC0xMTE0LDcgKzExMTQsNyBAQCBwdWJsaWM6
CiAKICNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQogI2lmIFBMQVRGT1JNKElPUykKLSNpbmNsdWRl
ICJEb2N1bWVudElPUy5oIgorI2luY2x1ZGUgPFdlYktpdEFkZGl0aW9ucy9Eb2N1bWVudElPUy5o
PgogI2Vsc2UKICAgICBQYXNzUmVmUHRyPFRvdWNoPiBjcmVhdGVUb3VjaChET01XaW5kb3cqLCBF
dmVudFRhcmdldCosIGludCBpZGVudGlmaWVyLCBpbnQgcGFnZVgsIGludCBwYWdlWSwgaW50IHNj
cmVlblgsIGludCBzY3JlZW5ZLCBpbnQgcmFkaXVzWCwgaW50IHJhZGl1c1ksIGZsb2F0IHJvdGF0
aW9uQW5nbGUsIGZsb2F0IGZvcmNlLCBFeGNlcHRpb25Db2RlJikgY29uc3Q7CiAjZW5kaWYgLy8g
UExBVEZPUk0oSU9TKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50Lmlk
bCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5pZGwKaW5kZXggYjBkOGQyZmI2ZWMxNDk0
Njg1N2FkYzk4ZTEwZjc4OGE5NjI2MmFiNC4uZTg0YjU4NmVlYjM1ZDlmMmNiOTQ4YTNhYjc3ZmQy
MzExODA0NjY2YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmlkbAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaWRsCkBAIC0zMjMsNyArMzIzLDcgQEAK
ICAgICAvLyBGSVhNRTogQ29uc2lkZXIgZGVmaW5pbmcgYW4gRU5BQkxFIG1hY3JvIGZvciBpT1Mg
dG91Y2ggZXZlbnQgY29kZSwgc2F5IElPU19UT1VDSF9FVkVOVFMsCiAgICAgLy8gYW5kL29yIG1v
ZGlmeWluZyB0aGUgYmluZGluZ3Mgc2NyaXB0cyB0byBzdXBwb3J0IGdlbmVyYXRpbmcgbW9yZSBj
b21wbGljYXRlZCBjb25kaXRpb25hbCBjb2RlLgogI2lmIGRlZmluZWQoV1RGX1BMQVRGT1JNX0lP
UykgJiYgV1RGX1BMQVRGT1JNX0lPUwotI2luY2x1ZGUgIkRvY3VtZW50SU9TLmlkbCIKKyNpbmNs
dWRlIDxXZWJLaXRBZGRpdGlvbnMvRG9jdW1lbnRJT1MuaWRsPgogI2Vsc2UKICAgICBbUmV0dXJu
TmV3T2JqZWN0LCBSYWlzZXNFeGNlcHRpb25dIFRvdWNoIGNyZWF0ZVRvdWNoKFtEZWZhdWx0PVVu
ZGVmaW5lZF0gb3B0aW9uYWwgRE9NV2luZG93IHdpbmRvdywKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW0RlZmF1bHQ9VW5kZWZpbmVkXSBvcHRp
b25hbCBFdmVudFRhcmdldCB0YXJnZXQsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20v
aW9zL1RvdWNoRXZlbnRzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9pb3MvVG91Y2hFdmVudHMu
Y3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLmQwY2Y3YTZkYzFiOTkwOTE5YWJlZDk2MzMzZDQ0Y2ZiMWJhNWQ5NTMK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vaW9zL1RvdWNoRXZlbnRzLmNw
cApAQCAtMCwwICsxLDM2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisj
aWYgUExBVEZPUk0oSU9TKSAmJiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQorCisjaW5jbHVkZSA8V2Vi
S2l0QWRkaXRpb25zL0RvY3VtZW50SU9TLmNwcD4KKyNpbmNsdWRlIDxXZWJLaXRBZGRpdGlvbnMv
R2VzdHVyZUV2ZW50SU9TLmNwcD4KKyNpbmNsdWRlIDxXZWJLaXRBZGRpdGlvbnMvVG91Y2guY3Bw
PgorI2luY2x1ZGUgPFdlYktpdEFkZGl0aW9ucy9Ub3VjaEV2ZW50LmNwcD4KKyNpbmNsdWRlIDxX
ZWJLaXRBZGRpdGlvbnMvVG91Y2hMaXN0LmNwcD4KKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL0FwcGx5U3R5bGVDb21tYW5kLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvQXBwbHlTdHlsZUNvbW1hbmQuY3BwCmluZGV4IGQzMDdhZjBhYmZmMmVmMzRmNjMw
YTlmNWM0N2YzZTliYTg4YzEwMjUuLjk1MzEwZjVmMjY5Y2Y5NzM2NjEwZTcyMzAwYTNmMjU3Njdi
YjJkNjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvQXBwbHlTdHlsZUNvbW1h
bmQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvQXBwbHlTdHlsZUNvbW1hbmQuY3Bw
CkBAIC0yNTUsMTAgKzI1NSwxOCBAQCB2b2lkIEFwcGx5U3R5bGVDb21tYW5kOjphcHBseUJsb2Nr
U3R5bGUoRWRpdGluZ1N0eWxlICpzdHlsZSkKICAgICBpZiAodmlzaWJsZVN0YXJ0LmlzTnVsbCgp
IHx8IHZpc2libGVTdGFydC5pc09ycGhhbigpIHx8IHZpc2libGVFbmQuaXNOdWxsKCkgfHwgdmlz
aWJsZUVuZC5pc09ycGhhbigpKQogICAgICAgICByZXR1cm47CiAKKyNpZiAhUExBVEZPUk0oSU9T
KQogICAgIC8vIFNhdmUgYW5kIHJlc3RvcmUgdGhlIHNlbGVjdGlvbiBlbmRwb2ludHMgdXNpbmcg
dGhlaXIgaW5kaWNlcyBpbiB0aGUgZG9jdW1lbnQsIHNpbmNlCisjZWxzZQorICAgIC8vIFNhdmUg
YW5kIHJlc3RvcmUgdGhlIHNlbGVjdGlvbiBlbmRwb2ludHMgdXNpbmcgdGhlaXIgaW5kaWNlcyBp
biB0aGUgZWRpdGFibGUgcm9vdCwgc2luY2UKKyNlbmRpZgogICAgIC8vIGFkZEJsb2NrU3R5bGVJ
Zk5lZWRlZCBtYXkgbW92ZVBhcmFncmFwaHMsIHdoaWNoIGNhbiByZW1vdmUgdGhlc2UgZW5kcG9p
bnRzLgogICAgIC8vIENhbGN1bGF0ZSBzdGFydCBhbmQgZW5kIGluZGljZXMgZnJvbSB0aGUgc3Rh
cnQgb2YgdGhlIHRyZWUgdGhhdCB0aGV5J3JlIGluLgorI2lmICFQTEFURk9STShJT1MpCiAgICAg
Tm9kZSogc2NvcGUgPSBoaWdoZXN0QW5jZXN0b3IodmlzaWJsZVN0YXJ0LmRlZXBFcXVpdmFsZW50
KCkuZGVwcmVjYXRlZE5vZGUoKSk7CisjZWxzZQorICAgIE5vZGUqIHNjb3BlID0gaGlnaGVzdEVk
aXRhYmxlUm9vdCh2aXNpYmxlU3RhcnQuZGVlcEVxdWl2YWxlbnQoKSk7CisjZW5kaWYKICAgICBS
ZWZQdHI8UmFuZ2U+IHN0YXJ0UmFuZ2UgPSBSYW5nZTo6Y3JlYXRlKGRvY3VtZW50KCksIGZpcnN0
UG9zaXRpb25Jbk5vZGUoc2NvcGUpLCB2aXNpYmxlU3RhcnQuZGVlcEVxdWl2YWxlbnQoKS5wYXJl
bnRBbmNob3JlZEVxdWl2YWxlbnQoKSk7CiAgICAgUmVmUHRyPFJhbmdlPiBlbmRSYW5nZSA9IFJh
bmdlOjpjcmVhdGUoZG9jdW1lbnQoKSwgZmlyc3RQb3NpdGlvbkluTm9kZShzY29wZSksIHZpc2li
bGVFbmQuZGVlcEVxdWl2YWxlbnQoKS5wYXJlbnRBbmNob3JlZEVxdWl2YWxlbnQoKSk7CiAgICAg
aW50IHN0YXJ0SW5kZXggPSBUZXh0SXRlcmF0b3I6OnJhbmdlTGVuZ3RoKHN0YXJ0UmFuZ2UuZ2V0
KCksIHRydWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9Db21wb3NpdGVF
ZGl0Q29tbWFuZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0NvbXBvc2l0ZUVkaXRDb21t
YW5kLmNwcAppbmRleCBhNjMwNzQ3MDUyMTgyMDViM2UwODAyMTAyZjFiODFiMzM4YWJhOTg1Li4w
NjlkNGQ2MTZhYmJjMGMwMGU0ODdiN2E2OGMyNzNmNWYxMTRlNzVhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL0NvbXBvc2l0ZUVkaXRDb21tYW5kLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL0NvbXBvc2l0ZUVkaXRDb21tYW5kLmNwcApAQCAtNzIsNiArNzIsMTAg
QEAKICNpbmNsdWRlICJEZWxldGVCdXR0b25Db250cm9sbGVyLmgiCiAjZW5kaWYKIAorI2lmIFBM
QVRGT1JNKElPUykKKyNpbmNsdWRlICJCcmVha0Jsb2NrcXVvdGVDb21tYW5kLmgiCisjZW5kaWYK
KwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiB1c2luZyBuYW1lc3BhY2UgSFRNTE5hbWVzOwpAQCAt
MTAyLDYgKzEwNiwxNCBAQCB2b2lkIEVkaXRDb21tYW5kQ29tcG9zaXRpb246OnVuYXBwbHkoKQog
ICAgIC8vIExvdyBsZXZlbCBvcGVyYXRpb25zLCBsaWtlIFJlbW92ZU5vZGVDb21tYW5kLCBkb24n
dCByZXF1aXJlIGEgbGF5b3V0IGJlY2F1c2UgdGhlIGhpZ2ggbGV2ZWwgb3BlcmF0aW9ucyB0aGF0
IHVzZSB0aGVtIHBlcmZvcm0gb25lCiAgICAgLy8gaWYgb25lIGlzIG5lY2Vzc2FyeSAobGlrZSBm
b3IgdGhlIGNyZWF0aW9uIG9mIFZpc2libGVQb3NpdGlvbnMpLgogICAgIG1fZG9jdW1lbnQtPnVw
ZGF0ZUxheW91dElnbm9yZVBlbmRpbmdTdHlsZXNoZWV0cygpOworI2lmIFBMQVRGT1JNKElPUykK
KyAgICAvLyBGSVhNRTogV2hlcmUgc2hvdWxkIGlQaG9uZSBjb2RlIGRlYWwgd2l0aCB0aGUgY29t
cG9zaXRpb24/CisgICAgLy8gU2luY2UgZWRpdGluZyBjb21tYW5kcyBkb24ndCBzYXZlL3Jlc3Rv
cmUgdGhlIGNvbXBvc2l0aW9uLCB1bmRvaW5nIHdpdGhvdXQgZml4aW5nCisgICAgLy8gdXAgdGhl
IGNvbXBvc2l0aW9uIHdpbGwgbGVhdmUgYSBzdGFsZSwgaW52YWxpZCBjb21wb3NpdGlvbiwgYXMg
aW4gPHJkYXI6Ly9wcm9ibGVtLzY4MzE2Mzc+LgorICAgIC8vIERlc2t0b3AgaGFuZGxlcyB0aGlz
IGluIC1bV2ViSFRNTFZpZXcgX3VwZGF0ZVNlbGVjdGlvbkZvcklucHV0TWFuYWdlcl0sIGJ1dCB0
aGUgcGhvbmUKKyAgICAvLyBnb2VzIGFub3RoZXIgcm91dGUuCisgICAgZnJhbWUtPmVkaXRvcigp
LmNhbmNlbENvbXBvc2l0aW9uKCk7CisjZW5kaWYKIAogICAgIHsKICNpZiBFTkFCTEUoREVMRVRJ
T05fVUkpCkBAIC0xOTAsNiArMjAyLDEwIEBAIHZvaWQgQ29tcG9zaXRlRWRpdENvbW1hbmQ6OmFw
cGx5KCkKICAgICAgICAgY2FzZSBFZGl0QWN0aW9uU2V0V3JpdGluZ0RpcmVjdGlvbjoKICAgICAg
ICAgY2FzZSBFZGl0QWN0aW9uQ3V0OgogICAgICAgICBjYXNlIEVkaXRBY3Rpb25VbnNwZWNpZmll
ZDoKKyNpZiBQTEFURk9STShJT1MpCisgICAgICAgIGNhc2UgRWRpdEFjdGlvbkRlbGV0ZToKKyAg
ICAgICAgY2FzZSBFZGl0QWN0aW9uRGljdGF0aW9uOgorI2VuZGlmCiAgICAgICAgICAgICBicmVh
azsKICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwpA
QCAtNDg2LDYgKzUwMiw0OSBAQCB2b2lkIENvbXBvc2l0ZUVkaXRDb21tYW5kOjpzcGxpdFRleHRO
b2RlQ29udGFpbmluZ0VsZW1lbnQoUGFzc1JlZlB0cjxUZXh0PiB0ZXh0LAogICAgIGFwcGx5Q29t
bWFuZFRvQ29tcG9zaXRlKFNwbGl0VGV4dE5vZGVDb250YWluaW5nRWxlbWVudENvbW1hbmQ6OmNy
ZWF0ZSh0ZXh0LCBvZmZzZXQpKTsKIH0KIAorI2lmIFBMQVRGT1JNKElPUykKK3ZvaWQgQ29tcG9z
aXRlRWRpdENvbW1hbmQ6OmlucHV0VGV4dChjb25zdCBTdHJpbmcmIHRleHQsIGJvb2wgc2VsZWN0
SW5zZXJ0ZWRUZXh0KQoreworICAgIHVuc2lnbmVkIG9mZnNldCA9IDA7CisgICAgdW5zaWduZWQg
bGVuZ3RoID0gdGV4dC5sZW5ndGgoKTsKKyAgICAKKyAgICBSZWZQdHI8Q29udGFpbmVyTm9kZT4g
c2NvcGU7CisgICAgdW5zaWduZWQgc3RhcnRJbmRleCA9IGluZGV4Rm9yVmlzaWJsZVBvc2l0aW9u
KGVuZGluZ1NlbGVjdGlvbigpLnZpc2libGVTdGFydCgpLCBzY29wZSk7CisgICAgCisgICAgc2l6
ZV90IG5ld2xpbmU7CisgICAgZG8geworICAgICAgICBuZXdsaW5lID0gdGV4dC5maW5kKCdcbics
IG9mZnNldCk7CisgICAgICAgIGlmIChuZXdsaW5lICE9IG9mZnNldCkgeworICAgICAgICAgICAg
aW50IHN1YnN0cmluZ0xlbmd0aCA9IG5ld2xpbmUgPT0gbm90Rm91bmQgPyBsZW5ndGggLSBvZmZz
ZXQgOiBuZXdsaW5lIC0gb2Zmc2V0OworICAgICAgICAgICAgUmVmUHRyPEluc2VydFRleHRDb21t
YW5kPiBjb21tYW5kID0gSW5zZXJ0VGV4dENvbW1hbmQ6OmNyZWF0ZShkb2N1bWVudCgpLCB0ZXh0
LnN1YnN0cmluZyhvZmZzZXQsIHN1YnN0cmluZ0xlbmd0aCksIGZhbHNlKTsKKyAgICAgICAgICAg
IGFwcGx5Q29tbWFuZFRvQ29tcG9zaXRlKGNvbW1hbmQpOworICAgICAgICB9CisgICAgICAgIGlm
IChuZXdsaW5lICE9IG5vdEZvdW5kKSB7CisgICAgICAgICAgICBWaXNpYmxlUG9zaXRpb24gY2Fy
ZXQoZW5kaW5nU2VsZWN0aW9uKCkudmlzaWJsZVN0YXJ0KCkpOworICAgICAgICAgICAgaWYgKGVu
Y2xvc2luZ05vZGVPZlR5cGUoY2FyZXQuZGVlcEVxdWl2YWxlbnQoKSwgJmlzTWFpbEJsb2NrcXVv
dGUpKSB7CisgICAgICAgICAgICAgICAgLy8gRklYTUU6IEJyZWFraW5nIGEgYmxvY2txdW90ZSB3
aGVuIHRoZSBjYXJldCBpcyBqdXN0IGFmdGVyIGEgc3BhY2Ugd2lsbCBjb2xsYXBzZSB0aGUgCisg
ICAgICAgICAgICAgICAgLy8gc3BhY2UuIE1vZGlmeSBzdGFydEluZGV4IG9yIGxlbmd0aCB0byBj
b21wZW5zYXRlIGZvciB0aGlzIHNvIHRoYXQgdGhlIGVuZGluZyBzZWxlY3Rpb24gCisgICAgICAg
ICAgICAgICAgLy8gd2lsbCBiZSBwb3NpdGlvbmVkIGNvcnJlY3RseS4KKyAgICAgICAgICAgICAg
ICAvLyA8cmRhcjovL3Byb2JsZW0vOTkxNDQ2Mj4gYnJlYWtpbmcgYSBNYWlsIGJsb2NrcXVvdGUg
anVzdCBhZnRlciBhIHNwYWNlIGNvbGxhcHNlcyB0aGUgc3BhY2UKKyAgICAgICAgICAgICAgICBp
ZiAoY2FyZXQucHJldmlvdXMoKS5jaGFyYWN0ZXJBZnRlcigpID09ICcgJykgeworICAgICAgICAg
ICAgICAgICAgICBpZiAoIW9mZnNldCAmJiAhc3RhcnRJbmRleCkKKyAgICAgICAgICAgICAgICAg
ICAgICAgIHN0YXJ0SW5kZXgtLTsKKyAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoIWxlbmd0
aCkKKyAgICAgICAgICAgICAgICAgICAgICAgIGxlbmd0aC0tOworICAgICAgICAgICAgICAgIH0K
KyAgICAgICAgICAgICAgICBhcHBseUNvbW1hbmRUb0NvbXBvc2l0ZShCcmVha0Jsb2NrcXVvdGVD
b21tYW5kOjpjcmVhdGUoZG9jdW1lbnQoKSkpOworICAgICAgICAgICAgfSBlbHNlCisgICAgICAg
ICAgICAgICAgaW5zZXJ0TGluZUJyZWFrKCk7CisgICAgICAgIH0KKyAgICAgICAgICAgIAorICAg
ICAgICBvZmZzZXQgPSBuZXdsaW5lICsgMTsKKyAgICB9IHdoaWxlIChuZXdsaW5lICE9IG5vdEZv
dW5kICYmIG9mZnNldCAhPSBsZW5ndGgpOworICAgIAorICAgIGlmIChzZWxlY3RJbnNlcnRlZFRl
eHQpCisgICAgICAgIHNldEVuZGluZ1NlbGVjdGlvbihWaXNpYmxlU2VsZWN0aW9uKHZpc2libGVQ
b3NpdGlvbkZvckluZGV4KHN0YXJ0SW5kZXgsIHNjb3BlLmdldCgpKSwgdmlzaWJsZVBvc2l0aW9u
Rm9ySW5kZXgoc3RhcnRJbmRleCArIGxlbmd0aCwgc2NvcGUuZ2V0KCkpKSk7Cit9CisjZW5kaWYK
Kwogdm9pZCBDb21wb3NpdGVFZGl0Q29tbWFuZDo6aW5zZXJ0VGV4dEludG9Ob2RlKFBhc3NSZWZQ
dHI8VGV4dD4gbm9kZSwgdW5zaWduZWQgb2Zmc2V0LCBjb25zdCBTdHJpbmcmIHRleHQpCiB7CiAg
ICAgaWYgKCF0ZXh0LmlzRW1wdHkoKSkKQEAgLTUzNSw3ICs1OTQsMTEgQEAgdm9pZCBDb21wb3Np
dGVFZGl0Q29tbWFuZDo6cmVwbGFjZVRleHRJbk5vZGVQcmVzZXJ2aW5nTWFya2VycyhQYXNzUmVm
UHRyPFRleHQ+IHAKICAgICByZXBsYWNlVGV4dEluTm9kZShub2RlLCBvZmZzZXQsIGNvdW50LCBy
ZXBsYWNlbWVudFRleHQpOwogICAgIFJlZlB0cjxSYW5nZT4gbmV3UmFuZ2UgPSBSYW5nZTo6Y3Jl
YXRlKGRvY3VtZW50KCksIG5vZGUsIG9mZnNldCwgbm9kZSwgb2Zmc2V0ICsgcmVwbGFjZW1lbnRU
ZXh0Lmxlbmd0aCgpKTsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1hcmtlcnMuc2l6ZSgp
OyArK2kpCisjaWYgUExBVEZPUk0oSU9TKQorICAgICAgICBtYXJrZXJDb250cm9sbGVyLmFkZE1h
cmtlcihuZXdSYW5nZS5nZXQoKSwgbWFya2Vyc1tpXS50eXBlKCksIG1hcmtlcnNbaV0uZGVzY3Jp
cHRpb24oKSwgbWFya2Vyc1tpXS5hbHRlcm5hdGl2ZXMoKSwgbWFya2Vyc1tpXS5tZXRhZGF0YSgp
KTsKKyNlbHNlCiAgICAgICAgIG1hcmtlckNvbnRyb2xsZXIuYWRkTWFya2VyKG5ld1JhbmdlLmdl
dCgpLCBtYXJrZXJzW2ldLnR5cGUoKSwgbWFya2Vyc1tpXS5kZXNjcmlwdGlvbigpKTsKKyNlbmRp
ZiAvLyBQTEFURk9STShJT1MpCiB9CiAKIFBvc2l0aW9uIENvbXBvc2l0ZUVkaXRDb21tYW5kOjpw
b3NpdGlvbk91dHNpZGVUYWJTcGFuKGNvbnN0IFBvc2l0aW9uJiBwb3MpCkBAIC0xMjAxLDcgKzEy
NjQsMTEgQEAgdm9pZCBDb21wb3NpdGVFZGl0Q29tbWFuZDo6bW92ZVBhcmFncmFwaHMoY29uc3Qg
VmlzaWJsZVBvc2l0aW9uJiBzdGFydE9mUGFyYWdyYXAKICAgICAvLyBhbnl0aGluZyBpZiB3ZSdy
ZSBnaXZlbiBhbiBlbXB0eSBwYXJhZ3JhcGgsIGJ1dCBhbiBlbXB0eSBwYXJhZ3JhcGggY2FuIGhh
dmUgc3R5bGUKICAgICAvLyB0b28sIDxkaXY+PGI+PGJyPjwvYj48L2Rpdj4gZm9yIGV4YW1wbGUu
ICBTYXZlIGl0IHNvIHRoYXQgd2UgY2FuIHByZXNlcnZlIGl0IGxhdGVyLgogICAgIFJlZlB0cjxF
ZGl0aW5nU3R5bGU+IHN0eWxlSW5FbXB0eVBhcmFncmFwaDsKKyNpZiAhUExBVEZPUk0oSU9TKQog
ICAgIGlmIChzdGFydE9mUGFyYWdyYXBoVG9Nb3ZlID09IGVuZE9mUGFyYWdyYXBoVG9Nb3ZlICYm
IHByZXNlcnZlU3R5bGUpIHsKKyNlbHNlCisgICAgaWYgKHN0YXJ0T2ZQYXJhZ3JhcGhUb01vdmUg
PT0gZW5kT2ZQYXJhZ3JhcGhUb01vdmUgJiYgcHJlc2VydmVTdHlsZSAmJiBpc1JpY2hseUVkaXRh
YmxlUG9zaXRpb24oZGVzdGluYXRpb24uZGVlcEVxdWl2YWxlbnQoKSkpIHsKKyNlbmRpZgogICAg
ICAgICBzdHlsZUluRW1wdHlQYXJhZ3JhcGggPSBFZGl0aW5nU3R5bGU6OmNyZWF0ZShzdGFydE9m
UGFyYWdyYXBoVG9Nb3ZlLmRlZXBFcXVpdmFsZW50KCkpOwogICAgICAgICBzdHlsZUluRW1wdHlQ
YXJhZ3JhcGgtPm1lcmdlVHlwaW5nU3R5bGUoZG9jdW1lbnQoKSk7CiAgICAgICAgIC8vIFRoZSBt
b3ZlZCBwYXJhZ3JhcGggc2hvdWxkIGFzc3VtZSB0aGUgYmxvY2sgc3R5bGUgb2YgdGhlIGRlc3Rp
bmF0aW9uLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9Db21wb3NpdGVFZGl0
Q29tbWFuZC5oIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9Db21wb3NpdGVFZGl0Q29tbWFuZC5o
CmluZGV4IGUyYTQ5OTJiNzBkNjdkNThkNmY1ZTg2YjBlYjc2NjMxZDFjZTU0YmQuLjI4ZjcwMmRi
MjMwNjMyNDI1ZDI0MjZjZWM0ZmE1NjM4OGZlMjc5OGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvQ29tcG9zaXRlRWRpdENvbW1hbmQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL0NvbXBvc2l0ZUVkaXRDb21tYW5kLmgKQEAgLTEwNCw2ICsxMDQsOSBAQCBwcm90ZWN0
ZWQ6CiAgICAgdm9pZCBkZWxldGVTZWxlY3Rpb24oYm9vbCBzbWFydERlbGV0ZSA9IGZhbHNlLCBi
b29sIG1lcmdlQmxvY2tzQWZ0ZXJEZWxldGUgPSB0cnVlLCBib29sIHJlcGxhY2UgPSBmYWxzZSwg
Ym9vbCBleHBhbmRGb3JTcGVjaWFsRWxlbWVudHMgPSB0cnVlLCBib29sIHNhbml0aXplTWFya3Vw
ID0gdHJ1ZSk7CiAgICAgdm9pZCBkZWxldGVTZWxlY3Rpb24oY29uc3QgVmlzaWJsZVNlbGVjdGlv
biYsIGJvb2wgc21hcnREZWxldGUgPSBmYWxzZSwgYm9vbCBtZXJnZUJsb2Nrc0FmdGVyRGVsZXRl
ID0gdHJ1ZSwgYm9vbCByZXBsYWNlID0gZmFsc2UsIGJvb2wgZXhwYW5kRm9yU3BlY2lhbEVsZW1l
bnRzID0gdHJ1ZSwgYm9vbCBzYW5pdGl6ZU1hcmt1cCA9IHRydWUpOwogICAgIHZpcnR1YWwgdm9p
ZCBkZWxldGVUZXh0RnJvbU5vZGUoUGFzc1JlZlB0cjxUZXh0PiwgdW5zaWduZWQgb2Zmc2V0LCB1
bnNpZ25lZCBjb3VudCk7CisjaWYgUExBVEZPUk0oSU9TKQorICAgIHZvaWQgaW5wdXRUZXh0KGNv
bnN0IFN0cmluZyYsIGJvb2wgc2VsZWN0SW5zZXJ0ZWRUZXh0ID0gZmFsc2UpOworI2VuZGlmCiAg
ICAgYm9vbCBpc1JlbW92YWJsZUJsb2NrKGNvbnN0IE5vZGUqKTsKICAgICB2b2lkIGluc2VydE5v
ZGVBZnRlcihQYXNzUmVmUHRyPE5vZGU+LCBQYXNzUmVmUHRyPE5vZGU+IHJlZkNoaWxkKTsKICAg
ICB2b2lkIGluc2VydE5vZGVBdChQYXNzUmVmUHRyPE5vZGU+LCBjb25zdCBQb3NpdGlvbiYpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9EZWxldGVCdXR0b24uaCBiL1NvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvRGVsZXRlQnV0dG9uLmgKaW5kZXggZGVjMWZjYTNiNWJlZGFhMjNh
ZmVhOWJlMGQxMGRiNWRlNGU5MzFlMy4uMzRlNGNjMDVjNDMyYWIxNjA1MTMzMGEyZjE1Mzg5MTJm
N2ZhNGM0YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9EZWxldGVCdXR0b24u
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0RlbGV0ZUJ1dHRvbi5oCkBAIC0zNCw3ICsz
NCw5IEBAIGNsYXNzIERlbGV0ZUJ1dHRvbiA6IHB1YmxpYyBIVE1MSW1hZ2VFbGVtZW50IHsKIHB1
YmxpYzoKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxEZWxldGVCdXR0b24+IGNyZWF0ZShEb2N1bWVu
dCYpOwogCisjaWYgIVBMQVRGT1JNKElPUykKICAgICB2aXJ0dWFsIGJvb2wgd2lsbFJlc3BvbmRU
b01vdXNlQ2xpY2tFdmVudHMoKSBPVkVSUklERSB7IHJldHVybiB0cnVlOyB9CisjZW5kaWYgLy8g
IVBMQVRGT1JNKElPUykKIAogcHJpdmF0ZToKICAgICBleHBsaWNpdCBEZWxldGVCdXR0b24oRG9j
dW1lbnQmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRGVsZXRlQnV0dG9u
Q29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0RlbGV0ZUJ1dHRvbkNvbnRy
b2xsZXIuY3BwCmluZGV4IGVmNzg2YjliN2MzZTc1YjlmM2FjMzM5MzMwNjNlODY5MzNmNjY3MDQu
LmE3ODc2OWMzZjMzYzAwZDFiZWZjNDZiZDVkMDE4YTY5YzJkOTI0YTMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvRGVsZXRlQnV0dG9uQ29udHJvbGxlci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvZWRpdGluZy9EZWxldGVCdXR0b25Db250cm9sbGVyLmNwcApAQCAtMzMxLDYg
KzMzMSw3IEBAIHZvaWQgRGVsZXRlQnV0dG9uQ29udHJvbGxlcjo6aGlkZSgpCiAKIHZvaWQgRGVs
ZXRlQnV0dG9uQ29udHJvbGxlcjo6ZW5hYmxlKCkKIHsKKyNpZiAhUExBVEZPUk0oSU9TKQogICAg
IEFTU0VSVChtX2Rpc2FibGVTdGFjayA+IDApOwogICAgIGlmIChtX2Rpc2FibGVTdGFjayA+IDAp
CiAgICAgICAgIG1fZGlzYWJsZVN0YWNrLS07CkBAIC0zNDEsMTMgKzM0MiwxNiBAQCB2b2lkIERl
bGV0ZUJ1dHRvbkNvbnRyb2xsZXI6OmVuYWJsZSgpCiAgICAgICAgIG1fZnJhbWUuZG9jdW1lbnQo
KS0+dXBkYXRlU3R5bGVJZk5lZWRlZCgpOwogICAgICAgICBzaG93KGVuY2xvc2luZ0RlbGV0YWJs
ZUVsZW1lbnQobV9mcmFtZS5zZWxlY3Rpb24oKS5zZWxlY3Rpb24oKSkpOwogICAgIH0KKyNlbmRp
ZgogfQogCiB2b2lkIERlbGV0ZUJ1dHRvbkNvbnRyb2xsZXI6OmRpc2FibGUoKQogeworI2lmICFQ
TEFURk9STShJT1MpCiAgICAgaWYgKGVuYWJsZWQoKSkKICAgICAgICAgaGlkZSgpOwogICAgIG1f
ZGlzYWJsZVN0YWNrKys7CisjZW5kaWYKIH0KIAogY2xhc3MgUmVtb3ZlVGFyZ2V0Q29tbWFuZCA6
IHB1YmxpYyBDb21wb3NpdGVFZGl0Q29tbWFuZCB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL0RlbGV0ZVNlbGVjdGlvbkNvbW1hbmQuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRp
dGluZy9EZWxldGVTZWxlY3Rpb25Db21tYW5kLmNwcAppbmRleCBiM2FjNTAwNWM0MThmZGNhNWQx
YzJlMmI2YThiYmFjZDc3ZDFkNGY3Li4yYjU0NTdmYzMyZTAyYjYzZTBhODkzYjQ3OGQyZWY3ZDY5
ZTFkNzEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0RlbGV0ZVNlbGVjdGlv
bkNvbW1hbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRGVsZXRlU2VsZWN0aW9u
Q29tbWFuZC5jcHAKQEAgLTg2MSw3ICs4NjEsMjQgQEAgdm9pZCBEZWxldGVTZWxlY3Rpb25Db21t
YW5kOjpkb0FwcGx5KCkKICAgICAgICAgaW5zZXJ0Tm9kZUF0KHBsYWNlaG9sZGVyLmdldCgpLCBt
X2VuZGluZ1Bvc2l0aW9uKTsKICAgICB9CiAKKyNpZiBQTEFURk9STShJT1MpCisgICAgLy8gVGhp
cyBjaGVja2luZyBpcyBkdWUgdG8gaXBob25lIHNob3dzIHRoZSBsYXN0IGVudGVyZWQgY2hhcmFj
dGVyIG1vbWVudGFyaWx5LCByZW1vdmluZyBhbmQgYWRkaW5nIGJhY2sgdGhlIAorICAgIC8vIHNw
YWNlIHdoZW4gZGVsZXRpbmcgcGFzc3dvcmQgY2F1c2Ugc3BhY2UgYmVlbiBzaG93ZWQgaW5zZWN1
cmVseS4KKyAgICBib29sIGlzU2VjdXJlID0gTk87CisgICAgTm9kZSogbm9kZSA9IG1fZW5kaW5n
UG9zaXRpb24uZGVwcmVjYXRlZE5vZGUoKTsKKyAgICBpZiAobm9kZSAmJiBub2RlLT5pc1RleHRO
b2RlKCkpIHsKKyAgICAgICAgVGV4dCogdGV4dE5vZGUgPSBzdGF0aWNfY2FzdDxUZXh0Kj4obm9k
ZSk7ICAgIAorICAgICAgICBpZiAodGV4dE5vZGUtPmxlbmd0aCgpID4gMCkgeworICAgICAgICAg
ICAgUmVuZGVyT2JqZWN0KiByZW5kZXJlciA9IHRleHROb2RlLT5yZW5kZXJlcigpOworICAgICAg
ICAgICAgaXNTZWN1cmUgPSByZW5kZXJlci0+c3R5bGUoKS50ZXh0U2VjdXJpdHkoKSAhPSBUU05P
TkU7CisgICAgICAgIH0KKyAgICB9CisgICAgICAgIAorICAgIGlmICghaXNTZWN1cmUpCisgICAg
ICAgIHJlYmFsYW5jZVdoaXRlc3BhY2VBdChtX2VuZGluZ1Bvc2l0aW9uKTsKKyNlbHNlCiAgICAg
cmViYWxhbmNlV2hpdGVzcGFjZUF0KG1fZW5kaW5nUG9zaXRpb24pOworI2VuZGlmCiAKICAgICBj
YWxjdWxhdGVUeXBpbmdTdHlsZUFmdGVyRGVsZXRlKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvRGVsZXRlU2VsZWN0aW9uQ29tbWFuZC5oIGIvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9EZWxldGVTZWxlY3Rpb25Db21tYW5kLmgKaW5kZXggMzQyYjRiNzk0NTRiYmMyZTEw
ODI1ZWE3ZDk3ZWRjYjM0ZTlhYTJlNy4uNGMwZjcyM2RlZTQzNzdhYThkMWE4NGVmMTBjNzdiZjNm
ZTMxYjczMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9EZWxldGVTZWxlY3Rp
b25Db21tYW5kLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9EZWxldGVTZWxlY3Rpb25D
b21tYW5kLmgKQEAgLTQzLDggKzQzLDEwIEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIGFkb3B0
UmVmKG5ldyBEZWxldGVTZWxlY3Rpb25Db21tYW5kKHNlbGVjdGlvbiwgc21hcnREZWxldGUsIG1l
cmdlQmxvY2tzQWZ0ZXJEZWxldGUsIHJlcGxhY2UsIGV4cGFuZEZvclNwZWNpYWxFbGVtZW50cywg
c2FuaXRpemVNYXJrdXApKTsKICAgICB9CiAKLXByaXZhdGU6Citwcm90ZWN0ZWQ6CiAgICAgRGVs
ZXRlU2VsZWN0aW9uQ29tbWFuZChEb2N1bWVudCYsIGJvb2wgc21hcnREZWxldGUsIGJvb2wgbWVy
Z2VCbG9ja3NBZnRlckRlbGV0ZSwgYm9vbCByZXBsYWNlLCBib29sIGV4cGFuZEZvclNwZWNpYWxF
bGVtZW50cywgYm9vbCBzYW50aXplTWFya3VwKTsKKworcHJpdmF0ZToKICAgICBEZWxldGVTZWxl
Y3Rpb25Db21tYW5kKGNvbnN0IFZpc2libGVTZWxlY3Rpb24mLCBib29sIHNtYXJ0RGVsZXRlLCBi
b29sIG1lcmdlQmxvY2tzQWZ0ZXJEZWxldGUsIGJvb2wgcmVwbGFjZSwgYm9vbCBleHBhbmRGb3JT
cGVjaWFsRWxlbWVudHMsIGJvb2wgc2FuaXRpemVNYXJrdXApOwogCiAgICAgdmlydHVhbCB2b2lk
IGRvQXBwbHkoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdEFjdGlv
bi5oIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0QWN0aW9uLmgKaW5kZXggOTEyZTkzMTJi
M2VhMjI3ZjY4MGIzMjk5ZjBlOTdkMGY0N2Q2ZGMzOC4uM2QzOTc1OTliNWYzY2RlNTkxOTRhZDE1
NjFiY2IzM2YwYWE5OTUxNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0
QWN0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0QWN0aW9uLmgKQEAgLTU3
LDYgKzU3LDEwIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgRWRpdEFjdGlvbkN1dCwK
ICAgICAgICAgRWRpdEFjdGlvbkJvbGQsCiAgICAgICAgIEVkaXRBY3Rpb25JdGFsaWNzLAorI2lm
IFBMQVRGT1JNKElPUykKKyAgICAgICAgRWRpdEFjdGlvbkRlbGV0ZSwKKyAgICAgICAgRWRpdEFj
dGlvbkRpY3RhdGlvbiwKKyNlbmRpZgogICAgICAgICBFZGl0QWN0aW9uUGFzdGUsCiAgICAgICAg
IEVkaXRBY3Rpb25QYXN0ZUZvbnQsCiAgICAgICAgIEVkaXRBY3Rpb25QYXN0ZVJ1bGVyLApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0Q29tbWFuZC5oIGIvU291cmNlL1dl
YkNvcmUvZWRpdGluZy9FZGl0Q29tbWFuZC5oCmluZGV4IDJlMzRhYWZiYzc5Mjg4MWQxNzk2YmZh
NDMxMDgyNmIyMWIzZGM5MjMuLjI0YzQxMDQ3YTE4NzY4ZGNiMWUzOTkwOTUxMThkNmIzZWVlYjli
YTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdENvbW1hbmQuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRDb21tYW5kLmgKQEAgLTUxLDYgKzUxLDEwIEBA
IHB1YmxpYzoKICAgICBjb25zdCBWaXNpYmxlU2VsZWN0aW9uJiBzdGFydGluZ1NlbGVjdGlvbigp
IGNvbnN0IHsgcmV0dXJuIG1fc3RhcnRpbmdTZWxlY3Rpb247IH0KICAgICBjb25zdCBWaXNpYmxl
U2VsZWN0aW9uJiBlbmRpbmdTZWxlY3Rpb24oKSBjb25zdCB7IHJldHVybiBtX2VuZGluZ1NlbGVj
dGlvbjsgfQogCisjaWYgUExBVEZPUk0oSU9TKQorICAgIHZpcnR1YWwgYm9vbCBpc0luc2VydFRl
eHRDb21tYW5kKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KKyNlbmRpZgorICAgIAogICAgIHZp
cnR1YWwgYm9vbCBpc1NpbXBsZUVkaXRDb21tYW5kKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0K
ICAgICB2aXJ0dWFsIGJvb2wgaXNDb21wb3NpdGVFZGl0Q29tbWFuZCgpIGNvbnN0IHsgcmV0dXJu
IGZhbHNlOyB9CiAgICAgdmlydHVhbCBib29sIGlzRWRpdENvbW1hbmRDb21wb3NpdGlvbigpIGNv
bnN0IHsgcmV0dXJuIGZhbHNlOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L0VkaXRpbmdTdHlsZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRpbmdTdHlsZS5j
cHAKaW5kZXggYWRkZGIxMmE4NzY4NWVlZWRhMGQ5ZmE3ZTk3Y2NiZjY2MjFkOTgxMS4uMzY0ZmY4
MDU0Y2NmZTQxZDhjYjAyYmQ2M2M2NGZmNTQzYTUwNzk4NyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvZWRpdGluZy9FZGl0aW5nU3R5bGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvRWRpdGluZ1N0eWxlLmNwcApAQCAtNzEsNiArNzEsMTAgQEAgc3RhdGljIGNvbnN0IENTU1By
b3BlcnR5SUQgZWRpdGluZ1Byb3BlcnRpZXNbXSA9IHsKICAgICBDU1NQcm9wZXJ0eVdoaXRlU3Bh
Y2UsCiAgICAgQ1NTUHJvcGVydHlXaWRvd3MsCiAgICAgQ1NTUHJvcGVydHlXb3JkU3BhY2luZywK
KyNpZiBQTEFURk9STShJT1MpCisgICAgQ1NTUHJvcGVydHlXZWJraXRUYXBIaWdobGlnaHRDb2xv
ciwKKyAgICBDU1NQcm9wZXJ0eVdlYmtpdENvbXBvc2l0aW9uRmlsbENvbG9yLAorI2VuZGlmCiAg
ICAgQ1NTUHJvcGVydHlXZWJraXRUZXh0RGVjb3JhdGlvbnNJbkVmZmVjdCwKICAgICBDU1NQcm9w
ZXJ0eVdlYmtpdFRleHRGaWxsQ29sb3IsCiAjaWYgRU5BQkxFKElPU19URVhUX0FVVE9TSVpJTkcp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAKaW5kZXggYzcxM2IxYmUzYTU5YjJhMTk1MWMzNjcz
NWFiYjFlMjhkMTIyOGMxNi4uMTMxY2Y3NzEyOGM4YzI0YjViNTZlZjFiNjhkMzRiNzM3NjQ4M2Jm
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcApAQCAtOTUsOCArOTUsNTAgQEAKICNpbmNs
dWRlICJEZWxldGVCdXR0b25Db250cm9sbGVyLmgiCiAjZW5kaWYKIAorI2lmIFBMQVRGT1JNKElP
UykKKyNpbmNsdWRlICJEaWN0YXRpb25Db21tYW5kSU9TLmgiCisjaW5jbHVkZSA8d3RmL3RleHQv
U3RyaW5nQnVpbGRlci5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgorI2VuZGlm
CisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorI2lmIFBMQVRGT1JNKElPUykKK2NsYXNzIENsZWFy
VGV4dENvbW1hbmQgOiBwdWJsaWMgRGVsZXRlU2VsZWN0aW9uQ29tbWFuZCB7CitwdWJsaWM6Cisg
ICAgQ2xlYXJUZXh0Q29tbWFuZChEb2N1bWVudCYgZG9jdW1lbnQpOworICAgIHN0YXRpYyB2b2lk
IENyZWF0ZUFuZEFwcGx5KGNvbnN0IFJlZlB0cjxGcmFtZT4gZnJhbWUpOworICAgIAorcHJpdmF0
ZToKKyAgICB2aXJ0dWFsIEVkaXRBY3Rpb24gZWRpdGluZ0FjdGlvbigpIGNvbnN0OworfTsKKwor
Q2xlYXJUZXh0Q29tbWFuZDo6Q2xlYXJUZXh0Q29tbWFuZChEb2N1bWVudCYgZG9jdW1lbnQpCisg
ICAgOiBEZWxldGVTZWxlY3Rpb25Db21tYW5kKGRvY3VtZW50LCBmYWxzZSwgdHJ1ZSwgZmFsc2Us
IGZhbHNlLCB0cnVlKQoreworfQorCitFZGl0QWN0aW9uIENsZWFyVGV4dENvbW1hbmQ6OmVkaXRp
bmdBY3Rpb24oKSBjb25zdAoreworICAgIHJldHVybiBFZGl0QWN0aW9uRGVsZXRlOworfQorCit2
b2lkIENsZWFyVGV4dENvbW1hbmQ6OkNyZWF0ZUFuZEFwcGx5KGNvbnN0IFJlZlB0cjxGcmFtZT4g
ZnJhbWUpCit7CisgICAgaWYgKGZyYW1lLT5zZWxlY3Rpb24oKS5pc05vbmUoKSkKKyAgICAgICAg
cmV0dXJuOworCisgICAgLy8gRG9uJ3QgbGVhdmUgYXJvdW5kIHN0YWxlIGNvbXBvc2l0aW9uIHN0
YXRlLgorICAgIGZyYW1lLT5lZGl0b3IoKS5jbGVhcigpOworICAgIAorICAgIGNvbnN0IFZpc2li
bGVTZWxlY3Rpb24gb2xkU2VsZWN0aW9uID0gZnJhbWUtPnNlbGVjdGlvbigpLnNlbGVjdGlvbigp
OworICAgIGZyYW1lLT5zZWxlY3Rpb24oKS5zZWxlY3RBbGwoKTsKKyAgICBSZWZQdHI8Q2xlYXJU
ZXh0Q29tbWFuZD4gY2xlYXJDb21tYW5kID0gYWRvcHRSZWYobmV3IENsZWFyVGV4dENvbW1hbmQo
KmZyYW1lLT5kb2N1bWVudCgpKSk7CisgICAgY2xlYXJDb21tYW5kLT5zZXRTdGFydGluZ1NlbGVj
dGlvbihvbGRTZWxlY3Rpb24pOworICAgIGFwcGx5Q29tbWFuZChjbGVhckNvbW1hbmQucmVsZWFz
ZSgpKTsKK30KKyNlbmRpZgorCiB1c2luZyBuYW1lc3BhY2UgSFRNTE5hbWVzOwogdXNpbmcgbmFt
ZXNwYWNlIFdURjsKIHVzaW5nIG5hbWVzcGFjZSBVbmljb2RlOwpAQCAtMjE4LDcgKzI2MCwxNSBA
QCBib29sIEVkaXRvcjo6aGFuZGxlVGV4dEV2ZW50KFRleHRFdmVudCogZXZlbnQpCiAKICAgICBp
ZiAoZXZlbnQtPmlzUGFzdGUoKSkgewogICAgICAgICBpZiAoZXZlbnQtPnBhc3RpbmdGcmFnbWVu
dCgpKQorI2lmIFBMQVRGT1JNKElPUykKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKGNsaWVu
dCgpLT5wZXJmb3Jtc1R3b1N0ZXBQYXN0ZShldmVudC0+cGFzdGluZ0ZyYWdtZW50KCkpKQorICAg
ICAgICAgICAgICAgIHJldHVybiB0cnVlOworI2VuZGlmCiAgICAgICAgICAgICByZXBsYWNlU2Vs
ZWN0aW9uV2l0aEZyYWdtZW50KGV2ZW50LT5wYXN0aW5nRnJhZ21lbnQoKSwgZmFsc2UsIGV2ZW50
LT5zaG91bGRTbWFydFJlcGxhY2UoKSwgZXZlbnQtPnNob3VsZE1hdGNoU3R5bGUoKSk7CisjaWYg
UExBVEZPUk0oSU9TKQorICAgICAgICB9CisjZW5kaWYKICAgICAgICAgZWxzZSAKICAgICAgICAg
ICAgIHJlcGxhY2VTZWxlY3Rpb25XaXRoVGV4dChldmVudC0+ZGF0YSgpLCBmYWxzZSwgZXZlbnQt
PnNob3VsZFNtYXJ0UmVwbGFjZSgpKTsKICAgICAgICAgcmV0dXJuIHRydWU7CkBAIC0zOTEsNiAr
NDQxLDg0IEBAIHZvaWQgRWRpdG9yOjpkZWxldGVTZWxlY3Rpb25XaXRoU21hcnREZWxldGUoYm9v
bCBzbWFydERlbGV0ZSkKICAgICBhcHBseUNvbW1hbmQoRGVsZXRlU2VsZWN0aW9uQ29tbWFuZDo6
Y3JlYXRlKGRvY3VtZW50KCksIHNtYXJ0RGVsZXRlKSk7CiB9CiAKKyNpZiBQTEFURk9STShJT1Mp
Cit2b2lkIEVkaXRvcjo6Y2xlYXJUZXh0KCkKK3sKKyAgICBDbGVhclRleHRDb21tYW5kOjpDcmVh
dGVBbmRBcHBseSgmbV9mcmFtZSk7Cit9CisKK3ZvaWQgRWRpdG9yOjppbnNlcnREaWN0YXRpb25Q
aHJhc2VzKFBhc3NPd25QdHI8VmVjdG9yPFZlY3RvcjxTdHJpbmc+ID4gPiBkaWN0YXRpb25QaHJh
c2VzLCBSZXRhaW5QdHI8aWQ+IG1ldGFkYXRhKQoreworICAgIGlmIChtX2ZyYW1lLnNlbGVjdGlv
bigpLmlzTm9uZSgpKQorICAgICAgICByZXR1cm47CisgICAgICAgIAorICAgIGlmIChkaWN0YXRp
b25QaHJhc2VzLT5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybjsKKyAgICAgICAgCisgICAgYXBw
bHlDb21tYW5kKERpY3RhdGlvbkNvbW1hbmRJT1M6OmNyZWF0ZShkb2N1bWVudCgpLCBkaWN0YXRp
b25QaHJhc2VzLCBtZXRhZGF0YSkpOworfQorCit2b2lkIEVkaXRvcjo6c2V0RGljdGF0aW9uUGhy
YXNlc0FzQ2hpbGRPZkVsZW1lbnQoUGFzc093blB0cjxWZWN0b3I8VmVjdG9yPFN0cmluZz4gPiA+
IGRpY3RhdGlvblBocmFzZXMsIFJldGFpblB0cjxpZD4gbWV0YWRhdGEsIEVsZW1lbnQqIGVsZW1l
bnQpCit7CisgICAgLy8gQ2xlYXIgdGhlIGNvbXBvc2l0aW9uLgorICAgIGNsZWFyKCk7CisgICAg
CisgICAgLy8gQ2xlYXIgdGhlIFVuZG8gc3RhY2ssIHNpbmNlIHRoZSBvcGVyYXRpb25zIHRoYXQg
Zm9sbG93IGFyZSBub3QgVW5kb2FibGUsIGFuZCB3aWxsIGNvcnJ1cHQgdGhlIHN0YWNrLiAgU29t
ZSBkYXkKKyAgICAvLyB3ZSBjb3VsZCBtYWtlIHRoZW0gVW5kb2FibGUsIGFuZCBsZXQgY2FsbGVy
cyBjbGVhciB0aGUgVW5kbyBzdGFjayBleHBsaWNpdGx5IGlmIHRoZXkgd2lzaC4KKyAgICBjbGVh
clVuZG9SZWRvT3BlcmF0aW9ucygpOworICAgIAorICAgIG1fZnJhbWUuc2VsZWN0aW9uKCkuY2xl
YXIoKTsKKyAgICAKKyAgICBlbGVtZW50LT5yZW1vdmVDaGlsZHJlbigpOworICAgIAorICAgIGlm
IChkaWN0YXRpb25QaHJhc2VzLT5pc0VtcHR5KCkpIHsKKyAgICAgICAgY2xpZW50KCktPnJlc3Bv
bmRUb0NoYW5nZWRDb250ZW50cygpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIAorICAg
IEV4Y2VwdGlvbkNvZGUgZWM7ICAgIAorICAgIFJlZlB0cjxSYW5nZT4gY29udGV4dCA9IGRvY3Vt
ZW50KCkuY3JlYXRlUmFuZ2UoKTsKKyAgICBjb250ZXh0LT5zZWxlY3ROb2RlQ29udGVudHMoZWxl
bWVudCwgZWMpOworICAgIAorICAgIFN0cmluZ0J1aWxkZXIgZGljdGF0aW9uUGhyYXNlc0J1aWxk
ZXI7CisgICAgc2l6ZV90IGRpY3RhdGlvblBocmFzZUNvdW50ID0gZGljdGF0aW9uUGhyYXNlcy0+
c2l6ZSgpOworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgZGljdGF0aW9uUGhyYXNlQ291bnQ7
IGkrKykgeworICAgICAgICBjb25zdCBTdHJpbmcmIGZpcnN0SW50ZXJwcmV0YXRpb24gPSBkaWN0
YXRpb25QaHJhc2VzLT5hdChpKVswXTsKKyAgICAgICAgZGljdGF0aW9uUGhyYXNlc0J1aWxkZXIu
YXBwZW5kKGZpcnN0SW50ZXJwcmV0YXRpb24pOworICAgIH0KKyAgICBTdHJpbmcgc2VyaWFsaXpl
ZERpY3RhdGlvblBocmFzZXMgPSBkaWN0YXRpb25QaHJhc2VzQnVpbGRlci50b1N0cmluZygpOwor
ICAgIAorICAgIGVsZW1lbnQtPmFwcGVuZENoaWxkKGNyZWF0ZUZyYWdtZW50RnJvbVRleHQoKmNv
bnRleHQuZ2V0KCksIHNlcmlhbGl6ZWREaWN0YXRpb25QaHJhc2VzKSwgZWMpOworICAgIAorICAg
IC8vIFdlIG5lZWQgYSBsYXlvdXQgaW4gb3JkZXIgdG8gYWRkIG1hcmtlcnMgYmVsb3cuCisgICAg
ZG9jdW1lbnQoKS51cGRhdGVMYXlvdXQoKTsKKyAgICAKKyAgICBpZiAoIWVsZW1lbnQtPmZpcnN0
Q2hpbGQoKS0+aXNUZXh0Tm9kZSgpKSB7CisgICAgICAgIC8vIFNob3VsZG4ndCBoYXBwZW4uCisg
ICAgICAgIEFTU0VSVChlbGVtZW50LT5maXJzdENoaWxkKCktPmlzVGV4dE5vZGUoKSk7CisgICAg
ICAgIHJldHVybjsKKyAgICB9CisgICAgICAgIAorICAgIFRleHQqIHRleHROb2RlID0gc3RhdGlj
X2Nhc3Q8VGV4dCo+KGVsZW1lbnQtPmZpcnN0Q2hpbGQoKSk7CisgICAgaW50IHByZXZpb3VzRGlj
dGF0aW9uUGhyYXNlU3RhcnQgPSAwOworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgZGljdGF0
aW9uUGhyYXNlQ291bnQ7IGkrKykgeworICAgICAgICBjb25zdCBWZWN0b3I8U3RyaW5nPiYgaW50
ZXJwcmV0YXRpb25zID0gZGljdGF0aW9uUGhyYXNlcy0+YXQoaSk7CisgICAgICAgIGludCBkaWN0
YXRpb25QaHJhc2VMZW5ndGggPSBpbnRlcnByZXRhdGlvbnNbMF0ubGVuZ3RoKCk7CisgICAgICAg
IGludCBkaWN0YXRpb25QaHJhc2VFbmQgPSBwcmV2aW91c0RpY3RhdGlvblBocmFzZVN0YXJ0ICsg
ZGljdGF0aW9uUGhyYXNlTGVuZ3RoOworICAgICAgICBpZiAoaW50ZXJwcmV0YXRpb25zLnNpemUo
KSA+IDEpIHsKKyAgICAgICAgICAgIFJlZlB0cjxSYW5nZT4gZGljdGF0aW9uUGhyYXNlUmFuZ2Ug
PSBSYW5nZTo6Y3JlYXRlKGRvY3VtZW50KCksIHRleHROb2RlLCBwcmV2aW91c0RpY3RhdGlvblBo
cmFzZVN0YXJ0LCB0ZXh0Tm9kZSwgZGljdGF0aW9uUGhyYXNlRW5kKTsKKyAgICAgICAgICAgIGRv
Y3VtZW50KCkubWFya2VycygpLmFkZERpY3RhdGlvblBocmFzZVdpdGhBbHRlcm5hdGl2ZXNNYXJr
ZXIoZGljdGF0aW9uUGhyYXNlUmFuZ2UuZ2V0KCksIGludGVycHJldGF0aW9ucyk7CisgICAgICAg
IH0KKyAgICAgICAgcHJldmlvdXNEaWN0YXRpb25QaHJhc2VTdGFydCA9IGRpY3RhdGlvblBocmFz
ZUVuZDsKKyAgICB9CisgICAgCisgICAgUmVmUHRyPFJhbmdlPiByZXN1bHRSYW5nZSA9IFJhbmdl
OjpjcmVhdGUoZG9jdW1lbnQoKSwgdGV4dE5vZGUsIDAsIHRleHROb2RlLCB0ZXh0Tm9kZS0+bGVu
Z3RoKCkpOworICAgIGRvY3VtZW50KCkubWFya2VycygpLmFkZERpY3RhdGlvblJlc3VsdE1hcmtl
cihyZXN1bHRSYW5nZS5nZXQoKSwgbWV0YWRhdGEpOworICAgIAorICAgIGNsaWVudCgpLT5yZXNw
b25kVG9DaGFuZ2VkQ29udGVudHMoKTsKK30KKyNlbmRpZgorCiB2b2lkIEVkaXRvcjo6cGFzdGVB
c1BsYWluVGV4dChjb25zdCBTdHJpbmcmIHBhc3RpbmdUZXh0LCBib29sIHNtYXJ0UmVwbGFjZSkK
IHsKICAgICBOb2RlKiB0YXJnZXQgPSBmaW5kRXZlbnRUYXJnZXRGcm9tU2VsZWN0aW9uKCk7CkBA
IC01MDcsNiArNjM1LDg2IEBAIFBhc3NSZWZQdHI8UmFuZ2U+IEVkaXRvcjo6c2VsZWN0ZWRSYW5n
ZSgpCiAgICAgcmV0dXJuIG1fZnJhbWUuc2VsZWN0aW9uKCkudG9Ob3JtYWxpemVkUmFuZ2UoKTsK
IH0KIAorI2lmIFBMQVRGT1JNKElPUykKK3ZvaWQgRWRpdG9yOjpjb25maXJtTWFya2VkVGV4dCgp
Cit7CisgICAgLy8gRklYTUU6IFRoaXMgaXMgYSBoYWNreSB3b3JrYXJvdW5kIGZvciB0aGUga2V5
Ym9hcmQgY2FsbGluZyB0aGlzIG1ldGhvZCB0b28gbGF0ZSAtCisgICAgLy8gYWZ0ZXIgdGhlIHNl
bGVjdGlvbiBhbmQgZm9jdXMgaGF2ZSBhbHJlYWR5IGNoYW5nZWQuICBTZWUgPHJkYXI6Ly9wcm9i
bGVtLzU5NzU1NTk+CisgICAgRWxlbWVudCogZm9jdXNlZCA9IGRvY3VtZW50KCkuZm9jdXNlZEVs
ZW1lbnQoKTsKKyAgICBOb2RlKiBjb21wb3NpdGlvbiA9IGNvbXBvc2l0aW9uTm9kZSgpOworICAg
IAorICAgIGlmIChjb21wb3NpdGlvbiAmJiBmb2N1c2VkICYmIGZvY3VzZWQgIT0gY29tcG9zaXRp
b24gJiYgIWNvbXBvc2l0aW9uLT5pc0Rlc2NlbmRhbnRPclNoYWRvd0Rlc2NlbmRhbnRPZihmb2N1
c2VkKSkgeworICAgICAgICBjYW5jZWxDb21wb3NpdGlvbigpOworICAgICAgICBkb2N1bWVudCgp
LnNldEZvY3VzZWRFbGVtZW50KGZvY3VzZWQpOworICAgIH0gZWxzZQorICAgICAgICBjb25maXJt
Q29tcG9zaXRpb24oKTsKK30KKwordm9pZCBFZGl0b3I6OnNldFRleHRBc0NoaWxkT2ZFbGVtZW50
KGNvbnN0IFN0cmluZyYgdGV4dCwgRWxlbWVudCogZWxlbSkKK3sKKyAgICAvLyBDbGVhciB0aGUg
Y29tcG9zaXRpb24KKyAgICBjbGVhcigpOworICAgIAorICAgIC8vIENsZWFyIHRoZSBVbmRvIHN0
YWNrLCBzaW5jZSB0aGUgb3BlcmF0aW9ucyB0aGF0IGZvbGxvdyBhcmUgbm90IFVuZG9hYmxlLCBh
bmQgd2lsbCBjb3JydXB0IHRoZSBzdGFjay4gIFNvbWUgZGF5CisgICAgLy8gd2UgY291bGQgbWFr
ZSB0aGVtIFVuZG9hYmxlLCBhbmQgbGV0IGNhbGxlcnMgY2xlYXIgdGhlIFVuZG8gc3RhY2sgZXhw
bGljaXRseSBpZiB0aGV5IHdpc2guCisgICAgY2xlYXJVbmRvUmVkb09wZXJhdGlvbnMoKTsKKyAg
ICAKKyAgICAvLyBJZiB0aGUgZWxlbWVudCBpcyBlbXB0eSBhbHJlYWR5IGFuZCB3ZSdyZSBub3Qg
YWRkaW5nIHRleHQsIHdlIGNhbiBlYXJseSByZXR1cm4gYW5kIGF2b2lkIGNsZWFyaW5nL3NldHRp
bmcKKyAgICAvLyBhIHNlbGVjdGlvbiBhdCBbMCwgMF0gYW5kIHRoZSBleHBlbnNlIGludm9sdmVk
IGluIGNyZWF0aW9uIFZpc2libGVQb3NpdGlvbnMuCisgICAgaWYgKCFlbGVtLT5maXJzdENoaWxk
KCkgJiYgdGV4dC5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybjsKKyAgICAKKyAgICAvLyBBcyBh
IHNpZGUgZWZmZWN0IHRoaXMgZnVuY3Rpb24gc2V0cyBhIGNhcmV0IHNlbGVjdGlvbiBhZnRlciB0
aGUgaW5zZXJ0ZWQgY29udGVudC4gIE11Y2ggb2Ygd2hhdCAKKyAgICAvLyBmb2xsb3dzIGlzIG1v
cmUgZXhwZW5zaXZlIGlmIHRoZXJlIGlzIGEgc2VsZWN0aW9uLCBzbyBjbGVhciBpdCBzaW5jZSBp
dCdzIGdvaW5nIHRvIGNoYW5nZSBhbnl3YXkuCisgICAgbV9mcmFtZS5zZWxlY3Rpb24oKS5jbGVh
cigpOworICAgIAorICAgIC8vIGNsZWFyIG91dCBhbGwgY3VycmVudCBjaGlsZHJlbiBvZiBlbGVt
ZW50CisgICAgZWxlbS0+cmVtb3ZlQ2hpbGRyZW4oKTsKKworICAgIGlmICh0ZXh0Lmxlbmd0aCgp
KSB7CisgICAgICAgIC8vIGluc2VydCBuZXcgdGV4dAorICAgICAgICAvLyByZW1vdmUgZWxlbWVu
dCBmcm9tIHRyZWUgd2hpbGUgZG9pbmcgaXQKKyAgICAgICAgLy8gRklYTUU6IFRoZSBlbGVtZW50
IHdlJ3JlIGluc2VydGluZyBpbnRvIGlzIG9mdGVuIHRoZSBib2R5IGVsZW1lbnQuICBJdCBzZWVt
cyBzdHJhbmdlIHRvIGJlIHJlbW92aW5nIGl0CisgICAgICAgIC8vIChldmVuIGlmIGl0IGlzIG9u
bHkgdGVtcG9yYXJ5KS4gIFJlcGxhY2VTZWxlY3Rpb25Db21tYW5kIGRvZXNuJ3QgYm90aGVyIGRv
aW5nIHRoaXMgd2hlbiBpdCBpbnNlcnRzCisgICAgICAgIC8vIGNvbnRlbnQsIHdoeSBzaG91bGQg
d2UgaGVyZT8KKyAgICAgICAgRXhjZXB0aW9uQ29kZSBlYzsKKyAgICAgICAgUmVmUHRyPE5vZGU+
IHBhcmVudCA9IGVsZW0tPnBhcmVudE5vZGUoKTsKKyAgICAgICAgUmVmUHRyPE5vZGU+IHNpYmxp
bmdBZnRlciA9IGVsZW0tPm5leHRTaWJsaW5nKCk7CisgICAgICAgIGlmIChwYXJlbnQpCisgICAg
ICAgICAgICBlbGVtLT5yZW1vdmUoZWMpOyAgICAKKyAgICAgICAgICAgIAorICAgICAgICBSZWZQ
dHI8UmFuZ2U+IGNvbnRleHQgPSBkb2N1bWVudCgpLmNyZWF0ZVJhbmdlKCk7CisgICAgICAgIGNv
bnRleHQtPnNlbGVjdE5vZGVDb250ZW50cyhlbGVtLCBlYyk7CisgICAgICAgIFJlZlB0cjxEb2N1
bWVudEZyYWdtZW50PiBmcmFnbWVudCA9IGNyZWF0ZUZyYWdtZW50RnJvbVRleHQoKmNvbnRleHQu
Z2V0KCksIHRleHQpOworICAgICAgICBlbGVtLT5hcHBlbmRDaGlsZChmcmFnbWVudCwgZWMpOwor
ICAgIAorICAgICAgICAvLyByZXN0b3JlIGVsZW1lbnQgdG8gZG9jdW1lbnQKKyAgICAgICAgaWYg
KHBhcmVudCkgeworICAgICAgICAgICAgaWYgKHNpYmxpbmdBZnRlcikKKyAgICAgICAgICAgICAg
ICBwYXJlbnQtPmluc2VydEJlZm9yZShlbGVtLCBzaWJsaW5nQWZ0ZXIuZ2V0KCksIGVjKTsKKyAg
ICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBwYXJlbnQtPmFwcGVuZENoaWxkKGVsZW0s
IGVjKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIC8vIHNldCB0aGUgc2VsZWN0aW9uIHRvIHRo
ZSBlbmQKKyAgICBWaXNpYmxlU2VsZWN0aW9uIHNlbGVjdGlvbjsKKworICAgIFBvc2l0aW9uIHBv
cyA9IGNyZWF0ZUxlZ2FjeUVkaXRpbmdQb3NpdGlvbihlbGVtLCBlbGVtLT5jaGlsZE5vZGVDb3Vu
dCgpKTsKKworICAgIFZpc2libGVQb3NpdGlvbiB2aXNpYmxlUG9zKHBvcywgVlBfREVGQVVMVF9B
RkZJTklUWSk7CisgICAgaWYgKHZpc2libGVQb3MuaXNOdWxsKCkpCisgICAgICAgIHJldHVybjsK
KworICAgIHNlbGVjdGlvbi5zZXRCYXNlKHZpc2libGVQb3MpOworICAgIHNlbGVjdGlvbi5zZXRF
eHRlbnQodmlzaWJsZVBvcyk7CisgICAgIAorICAgIG1fZnJhbWUuc2VsZWN0aW9uKCkuc2V0U2Vs
ZWN0aW9uKHNlbGVjdGlvbik7CisgICAgCisgICAgY2xpZW50KCktPnJlc3BvbmRUb0NoYW5nZWRD
b250ZW50cygpOworfQorI2VuZGlmCisKIGJvb2wgRWRpdG9yOjpzaG91bGREZWxldGVSYW5nZShS
YW5nZSogcmFuZ2UpIGNvbnN0CiB7CiAgICAgaWYgKCFyYW5nZSB8fCByYW5nZS0+Y29sbGFwc2Vk
KElHTk9SRV9FWENFUFRJT04pKQpAQCAtNTQ2LDYgKzc1NCwxMiBAQCBib29sIEVkaXRvcjo6c2hv
dWxkSW5zZXJ0VGV4dChjb25zdCBTdHJpbmcmIHRleHQsIFJhbmdlKiByYW5nZSwgRWRpdG9ySW5z
ZXJ0QWN0aQogCiB2b2lkIEVkaXRvcjo6bm90aWZ5Q29tcG9uZW50c09uQ2hhbmdlZFNlbGVjdGlv
bihjb25zdCBWaXNpYmxlU2VsZWN0aW9uJiBvbGRTZWxlY3Rpb24sIEZyYW1lU2VsZWN0aW9uOjpT
ZXRTZWxlY3Rpb25PcHRpb25zIG9wdGlvbnMpCiB7CisjaWYgUExBVEZPUk0oSU9TKQorICAgIC8v
IEZJWE1FOiBNZXJnZSB0aGlzIHRvIG9wZW4gc291cmNlIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0zODgzMAorICAgIGlmIChtX2lnbm9yZUNvbXBvc2l0aW9uU2VsZWN0
aW9uQ2hhbmdlKQorICAgICAgICByZXR1cm47CisjZW5kaWYKKwogICAgIGlmIChjbGllbnQoKSkK
ICAgICAgICAgY2xpZW50KCktPnJlc3BvbmRUb0NoYW5nZWRTZWxlY3Rpb24oJm1fZnJhbWUpOwog
ICAgIHNldFN0YXJ0TmV3S2lsbFJpbmdTZXF1ZW5jZSh0cnVlKTsKQEAgLTcwNCw2ICs5MTgsMTQg
QEAgdm9pZCBFZGl0b3I6OmNsZWFyTGFzdEVkaXRDb21tYW5kKCkKIHsKICAgICBtX2xhc3RFZGl0
Q29tbWFuZC5jbGVhcigpOwogfQorI2lmIFBMQVRGT1JNKElPUykKKy8vIElmIHRoZSBzZWxlY3Rp
b24gaXMgYWRqdXN0ZWQgZnJvbSBVSUtpdCB3aXRob3V0IGNsb3NpbmcgdGhlIHR5cGluZywgdGhl
IHR5cGluZyBjb21tYW5kIG1heQorLy8gaGF2ZSBhIHN0YWxlIHNlbGVjdGlvbi4KK3ZvaWQgRWRp
dG9yOjplbnN1cmVMYXN0RWRpdENvbW1hbmRIYXNDdXJyZW50U2VsZWN0aW9uSWZPcGVuRm9yTW9y
ZVR5cGluZygpCit7CisgICAgVHlwaW5nQ29tbWFuZDo6ZW5zdXJlTGFzdEVkaXRDb21tYW5kSGFz
Q3VycmVudFNlbGVjdGlvbklmT3BlbkZvck1vcmVUeXBpbmcoJm1fZnJhbWUsIG1fZnJhbWUuc2Vs
ZWN0aW9uKCkuc2VsZWN0aW9uKCkpOworfQorI2VuZGlmCiAKIC8vIFJldHVybnMgd2hldGhlciBj
YWxsZXIgc2hvdWxkIGNvbnRpbnVlIHdpdGggInRoZSBkZWZhdWx0IHByb2Nlc3NpbmciLCB3aGlj
aCBpcyB0aGUgc2FtZSBhcyAKIC8vIHRoZSBldmVudCBoYW5kbGVyIE5PVCBzZXR0aW5nIHRoZSBy
ZXR1cm4gdmFsdWUgdG8gZmFsc2UKQEAgLTEwODgsMTMgKzEzMTAsMTMgQEAgdm9pZCBFZGl0b3I6
OmNvcHkoKQogICAgICAgICAgICAgY2FuU21hcnRDb3B5T3JEZWxldGUoKSA/IFBhc3RlYm9hcmQ6
OkNhblNtYXJ0UmVwbGFjZSA6IFBhc3RlYm9hcmQ6OkNhbm5vdFNtYXJ0UmVwbGFjZSk7CiAgICAg
fSBlbHNlIHsKICAgICAgICAgaWYgKEhUTUxJbWFnZUVsZW1lbnQqIGltYWdlRWxlbWVudCA9IGlt
YWdlRWxlbWVudEZyb21JbWFnZURvY3VtZW50KGRvY3VtZW50KCkpKSB7Ci0jaWYgKFBMQVRGT1JN
KE1BQykgJiYgIVBMQVRGT1JNKElPUykpIHx8IFBMQVRGT1JNKEVGTCkgfHwgUExBVEZPUk0oTklY
KQorI2lmIFBMQVRGT1JNKE1BQykgfHwgUExBVEZPUk0oRUZMKSB8fCBQTEFURk9STShOSVgpCiAg
ICAgICAgICAgICB3cml0ZUltYWdlVG9QYXN0ZWJvYXJkKCpQYXN0ZWJvYXJkOjpjcmVhdGVGb3JD
b3B5QW5kUGFzdGUoKSwgKmltYWdlRWxlbWVudCwgZG9jdW1lbnQoKS51cmwoKSwgZG9jdW1lbnQo
KS50aXRsZSgpKTsKICNlbHNlCiAgICAgICAgICAgICBQYXN0ZWJvYXJkOjpjcmVhdGVGb3JDb3B5
QW5kUGFzdGUoKS0+d3JpdGVJbWFnZSgqaW1hZ2VFbGVtZW50LCBkb2N1bWVudCgpLnVybCgpLCBk
b2N1bWVudCgpLnRpdGxlKCkpOwogI2VuZGlmCiAgICAgICAgIH0gZWxzZSB7Ci0jaWYgKFBMQVRG
T1JNKE1BQykgJiYgIVBMQVRGT1JNKElPUykpIHx8IFBMQVRGT1JNKEVGTCkgfHwgUExBVEZPUk0o
TklYKQorI2lmIFBMQVRGT1JNKE1BQykgfHwgUExBVEZPUk0oRUZMKSB8fCBQTEFURk9STShOSVgp
CiAgICAgICAgICAgICB3cml0ZVNlbGVjdGlvblRvUGFzdGVib2FyZCgqUGFzdGVib2FyZDo6Y3Jl
YXRlRm9yQ29weUFuZFBhc3RlKCkpOwogI2Vsc2UKICAgICAgICAgICAgIC8vIEZJWE1FOiBDb252
ZXJ0IGFsbCBvdGhlciBwbGF0Zm9ybXMgdG8gbWF0Y2ggTWFjIGFuZCBkZWxldGUgdGhpcy4KQEAg
LTExNjksNiArMTM5MSw3IEBAIHZvaWQgRWRpdG9yOjpzaW1wbGlmeU1hcmt1cChOb2RlKiBzdGFy
dE5vZGUsIE5vZGUqIGVuZE5vZGUpCiAgICAgYXBwbHlDb21tYW5kKFNpbXBsaWZ5TWFya3VwQ29t
bWFuZDo6Y3JlYXRlKGRvY3VtZW50KCksIHN0YXJ0Tm9kZSwgKGVuZE5vZGUpID8gTm9kZVRyYXZl
cnNhbDo6bmV4dChlbmROb2RlKSA6IDApKTsKIH0KIAorI2lmICFQTEFURk9STShJT1MpCiB2b2lk
IEVkaXRvcjo6Y29weVVSTChjb25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiB0aXRsZSkKIHsK
ICAgICBjb3B5VVJMKHVybCwgdGl0bGUsICpQYXN0ZWJvYXJkOjpjcmVhdGVGb3JDb3B5QW5kUGFz
dGUoKSk7CkBAIC0xMjAzLDYgKzE0MjYsNyBAQCB2b2lkIEVkaXRvcjo6Y29weUltYWdlKGNvbnN0
IEhpdFRlc3RSZXN1bHQmIHJlc3VsdCkKICAgICBQYXN0ZWJvYXJkOjpjcmVhdGVGb3JDb3B5QW5k
UGFzdGUoKS0+d3JpdGVJbWFnZSgqZWxlbWVudCwgdXJsLCByZXN1bHQuYWx0RGlzcGxheVN0cmlu
ZygpKTsKICNlbmRpZgogfQorI2VuZGlmCiAKIGJvb2wgRWRpdG9yOjppc0NvbnRpbnVvdXNTcGVs
bENoZWNraW5nRW5hYmxlZCgpIGNvbnN0CiB7CkBAIC0xNDEzLDYgKzE2MzcsMTIgQEAgdm9pZCBF
ZGl0b3I6OnRvZ2dsZVVuZGVybGluZSgpCiAKIHZvaWQgRWRpdG9yOjpzZXRCYXNlV3JpdGluZ0Rp
cmVjdGlvbihXcml0aW5nRGlyZWN0aW9uIGRpcmVjdGlvbikKIHsKKyNpZiBQTEFURk9STShJT1Mp
CisgICAgaWYgKGluU2FtZVBhcmFncmFwaChtX2ZyYW1lLnNlbGVjdGlvbigpLnNlbGVjdGlvbigp
LnZpc2libGVTdGFydCgpLCBtX2ZyYW1lLnNlbGVjdGlvbigpLnNlbGVjdGlvbigpLnZpc2libGVF
bmQoKSkgJiYgCisgICAgICAgIGJhc2VXcml0aW5nRGlyZWN0aW9uRm9yU2VsZWN0aW9uU3RhcnQo
KSA9PSBkaXJlY3Rpb24pCisgICAgICAgIHJldHVybjsKKyNlbmRpZgorICAgICAgICAKICAgICBF
bGVtZW50KiBmb2N1c2VkRWxlbWVudCA9IGRvY3VtZW50KCkuZm9jdXNlZEVsZW1lbnQoKTsKICAg
ICBpZiAoZm9jdXNlZEVsZW1lbnQgJiYgaXNIVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudCgqZm9j
dXNlZEVsZW1lbnQpKSB7CiAgICAgICAgIGlmIChkaXJlY3Rpb24gPT0gTmF0dXJhbFdyaXRpbmdE
aXJlY3Rpb24pCkBAIC0xNTYxLDYgKzE3OTEsMTAgQEAgdm9pZCBFZGl0b3I6OnNldENvbXBvc2l0
aW9uKGNvbnN0IFN0cmluZyYgdGV4dCwgY29uc3QgVmVjdG9yPENvbXBvc2l0aW9uVW5kZXJsaW4K
ICAgICAgICAgcmV0dXJuOwogICAgIH0KIAorI2lmIFBMQVRGT1JNKElPUykKKyAgICBjbGllbnQo
KS0+c3RhcnREZWxheWluZ0FuZENvYWxlc2NpbmdDb250ZW50Q2hhbmdlTm90aWZpY2F0aW9ucygp
OworI2VuZGlmCisKICAgICBFbGVtZW50KiB0YXJnZXQgPSBkb2N1bWVudCgpLmZvY3VzZWRFbGVt
ZW50KCk7CiAgICAgaWYgKHRhcmdldCkgewogICAgICAgICAvLyBEaXNwYXRjaCBhbiBhcHByb3By
aWF0ZSBjb21wb3NpdGlvbiBldmVudCB0byB0aGUgZm9jdXNlZCBub2RlLgpAQCAtMTYzNiw2ICsx
ODcwLDEwIEBAIHZvaWQgRWRpdG9yOjpzZXRDb21wb3NpdGlvbihjb25zdCBTdHJpbmcmIHRleHQs
IGNvbnN0IFZlY3RvcjxDb21wb3NpdGlvblVuZGVybGluCiAgICAgfQogCiAgICAgc2V0SWdub3Jl
Q29tcG9zaXRpb25TZWxlY3Rpb25DaGFuZ2UoZmFsc2UpOworCisjaWYgUExBVEZPUk0oSU9TKSAg
ICAgICAgCisgICAgY2xpZW50KCktPnN0b3BEZWxheWluZ0FuZENvYWxlc2NpbmdDb250ZW50Q2hh
bmdlTm90aWZpY2F0aW9ucygpOworI2VuZGlmCiB9CiAKIHZvaWQgRWRpdG9yOjppZ25vcmVTcGVs
bGluZygpCkBAIC0xNjY4LDYgKzE5MDYsNyBAQCB2b2lkIEVkaXRvcjo6bGVhcm5TcGVsbGluZygp
CiAgICAgdGV4dENoZWNrZXIoKS0+bGVhcm5Xb3JkKHRleHQpOwogfQogCisjaWYgIVBMQVRGT1JN
KElPUykKIHZvaWQgRWRpdG9yOjphZHZhbmNlVG9OZXh0TWlzc3BlbGxpbmcoYm9vbCBzdGFydEJl
Zm9yZVNlbGVjdGlvbikKIHsKICAgICAvLyBUaGUgYmFzaWMgYXBwcm9hY2ggaXMgdG8gc2VhcmNo
IGluIHR3byBwaGFzZXMgLSBmcm9tIHRoZSBzZWxlY3Rpb24gZW5kIHRvIHRoZSBlbmQgb2YgdGhl
IGRvYywgYW5kCkBAIC0xODQwLDYgKzIwNzksNyBAQCB2b2lkIEVkaXRvcjo6YWR2YW5jZVRvTmV4
dE1pc3NwZWxsaW5nKGJvb2wgc3RhcnRCZWZvcmVTZWxlY3Rpb24pCiAgICAgICAgIGRvY3VtZW50
KCkubWFya2VycygpLmFkZE1hcmtlcihtaXNzcGVsbGluZ1JhbmdlLmdldCgpLCBEb2N1bWVudE1h
cmtlcjo6U3BlbGxpbmcpOwogICAgIH0KIH0KKyNlbmRpZiAvLyAhUExBVEZPUk0oSU9TKQogCiBT
dHJpbmcgRWRpdG9yOjptaXNzcGVsbGVkV29yZEF0Q2FyZXRPclJhbmdlKE5vZGUqIGNsaWNrZWRO
b2RlKSBjb25zdAogewpAQCAtMTk1NCw4ICsyMTk0LDEwIEBAIHZvaWQgRWRpdG9yOjpzaG93U3Bl
bGxpbmdHdWVzc1BhbmVsKCkKICAgICAgICAgY2xpZW50KCktPnNob3dTcGVsbGluZ1VJKGZhbHNl
KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICAKKworI2lmICFQTEFURk9STShJT1MpCiAg
ICAgYWR2YW5jZVRvTmV4dE1pc3NwZWxsaW5nKHRydWUpOworI2VuZGlmCiAgICAgY2xpZW50KCkt
PnNob3dTcGVsbGluZ1VJKHRydWUpOwogfQogCkBAIC0xOTgyLDYgKzIyMjQsMTggQEAgdm9pZCBF
ZGl0b3I6Om1hcmtNaXNzcGVsbGluZ3NBbmRCYWRHcmFtbWFyKGNvbnN0IFZpc2libGVTZWxlY3Rp
b24gJm1vdmluZ1NlbGVjdGkKIAogdm9pZCBFZGl0b3I6Om1hcmtNaXNzcGVsbGluZ3NBZnRlclR5
cGluZ1RvV29yZChjb25zdCBWaXNpYmxlUG9zaXRpb24gJndvcmRTdGFydCwgY29uc3QgVmlzaWJs
ZVNlbGVjdGlvbiYgc2VsZWN0aW9uQWZ0ZXJUeXBpbmcsIGJvb2wgZG9SZXBsYWNlbWVudCkKIHsK
KyNpZiBQTEFURk9STShJT1MpCisgICAgVU5VU0VEX1BBUkFNKHNlbGVjdGlvbkFmdGVyVHlwaW5n
KTsKKyAgICBVTlVTRURfUEFSQU0oZG9SZXBsYWNlbWVudCk7CisgICAgVGV4dENoZWNraW5nVHlw
ZU1hc2sgdGV4dENoZWNraW5nT3B0aW9ucyA9IDA7CisgICAgaWYgKGlzQ29udGludW91c1NwZWxs
Q2hlY2tpbmdFbmFibGVkKCkpCisgICAgICAgIHRleHRDaGVja2luZ09wdGlvbnMgfD0gVGV4dENo
ZWNraW5nVHlwZVNwZWxsaW5nOworICAgIGlmICghKHRleHRDaGVja2luZ09wdGlvbnMgJiBUZXh0
Q2hlY2tpbmdUeXBlU3BlbGxpbmcpKQorICAgICAgICByZXR1cm47CisKKyAgICBWaXNpYmxlU2Vs
ZWN0aW9uIGFkamFjZW50V29yZHMgPSBWaXNpYmxlU2VsZWN0aW9uKHN0YXJ0T2ZXb3JkKHdvcmRT
dGFydCwgTGVmdFdvcmRJZk9uQm91bmRhcnkpLCBlbmRPZldvcmQod29yZFN0YXJ0LCBSaWdodFdv
cmRJZk9uQm91bmRhcnkpKTsKKyAgICBtYXJrQWxsTWlzc3BlbGxpbmdzQW5kQmFkR3JhbW1hcklu
UmFuZ2VzKHRleHRDaGVja2luZ09wdGlvbnMsIGFkamFjZW50V29yZHMudG9Ob3JtYWxpemVkUmFu
Z2UoKS5nZXQoKSwgYWRqYWNlbnRXb3Jkcy50b05vcm1hbGl6ZWRSYW5nZSgpLmdldCgpKTsKKyNl
bHNlCiAjaWYgIVVTRShBVVRPTUFUSUNfVEVYVF9SRVBMQUNFTUVOVCkKICAgICBVTlVTRURfUEFS
QU0oZG9SZXBsYWNlbWVudCk7CiAjZW5kaWYKQEAgLTIwNTYsMTAgKzIzMTAsMTIgQEAgdm9pZCBF
ZGl0b3I6Om1hcmtNaXNzcGVsbGluZ3NBZnRlclR5cGluZ1RvV29yZChjb25zdCBWaXNpYmxlUG9z
aXRpb24gJndvcmRTdGFydCwKICAgICAKICAgICAvLyBDaGVjayBncmFtbWFyIG9mIGVudGlyZSBz
ZW50ZW5jZQogICAgIG1hcmtCYWRHcmFtbWFyKFZpc2libGVTZWxlY3Rpb24oc3RhcnRPZlNlbnRl
bmNlKHdvcmRTdGFydCksIGVuZE9mU2VudGVuY2Uod29yZFN0YXJ0KSkpOworI2VuZGlmCiB9CiAg
ICAgCiB2b2lkIEVkaXRvcjo6bWFya01pc3NwZWxsaW5nc09yQmFkR3JhbW1hcihjb25zdCBWaXNp
YmxlU2VsZWN0aW9uJiBzZWxlY3Rpb24sIGJvb2wgY2hlY2tTcGVsbGluZywgUmVmUHRyPFJhbmdl
PiYgZmlyc3RNaXNzcGVsbGluZ1JhbmdlKQogeworI2lmICFQTEFURk9STShJT1MpCiAgICAgLy8g
VGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQgd2l0aCBhIHNlbGVjdGlvbiBhbHJlYWR5IGV4cGFuZGVk
IHRvIHdvcmQgYm91bmRhcmllcy4KICAgICAvLyBNaWdodCBiZSBuaWNlIHRvIGFzc2VydCB0aGF0
IGhlcmUuCiAgICAgCkBAIC0yMDk1LDYgKzIzNTEsMTEgQEAgdm9pZCBFZGl0b3I6Om1hcmtNaXNz
cGVsbGluZ3NPckJhZEdyYW1tYXIoY29uc3QgVmlzaWJsZVNlbGVjdGlvbiYgc2VsZWN0aW9uLCBi
b28KICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAjZW5kaWYKICAgICB9ICAgIAorI2Vs
c2UKKyAgICAgICAgVU5VU0VEX1BBUkFNKHNlbGVjdGlvbik7CisgICAgICAgIFVOVVNFRF9QQVJB
TShjaGVja1NwZWxsaW5nKTsKKyAgICAgICAgVU5VU0VEX1BBUkFNKGZpcnN0TWlzc3BlbGxpbmdS
YW5nZSk7CisjZW5kaWYgLy8gIVBMQVRGT1JNKElPUykKIH0KIAogYm9vbCBFZGl0b3I6OmlzU3Bl
bGxDaGVja2luZ0VuYWJsZWRGb3IoTm9kZSogbm9kZSkgY29uc3QKQEAgLTIzNzIsNiArMjYzMyw3
IEBAIHZvaWQgRWRpdG9yOjptYXJrQW5kUmVwbGFjZUZvcihQYXNzUmVmUHRyPFNwZWxsQ2hlY2tS
ZXF1ZXN0PiByZXF1ZXN0LCBjb25zdCBWZWN0CiAKIHZvaWQgRWRpdG9yOjpjaGFuZ2VCYWNrVG9S
ZXBsYWNlZFN0cmluZyhjb25zdCBTdHJpbmcmIHJlcGxhY2VkU3RyaW5nKQogeworI2lmICFQTEFU
Rk9STShJT1MpCiAgICAgQVNTRVJUKHVuaWZpZWRUZXh0Q2hlY2tlckVuYWJsZWQoKSk7CiAKICAg
ICBpZiAocmVwbGFjZWRTdHJpbmcuaXNFbXB0eSgpKQpAQCAtMjM4Nyw2ICsyNjQ5LDEwIEBAIHZv
aWQgRWRpdG9yOjpjaGFuZ2VCYWNrVG9SZXBsYWNlZFN0cmluZyhjb25zdCBTdHJpbmcmIHJlcGxh
Y2VkU3RyaW5nKQogICAgIFJlZlB0cjxSYW5nZT4gY2hhbmdlZFJhbmdlID0gcGFyYWdyYXBoLnN1
YnJhbmdlKHBhcmFncmFwaC5jaGVja2luZ1N0YXJ0KCksIHJlcGxhY2VkU3RyaW5nLmxlbmd0aCgp
KTsKICAgICBjaGFuZ2VkUmFuZ2UtPnN0YXJ0Q29udGFpbmVyKCktPmRvY3VtZW50KCkubWFya2Vy
cygpLmFkZE1hcmtlcihjaGFuZ2VkUmFuZ2UuZ2V0KCksIERvY3VtZW50TWFya2VyOjpSZXBsYWNl
bWVudCwgU3RyaW5nKCkpOwogICAgIG1fYWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxlci0+bWFya1Jl
dmVyc2VkKGNoYW5nZWRSYW5nZS5nZXQoKSk7CisjZWxzZQorICAgIEFTU0VSVF9OT1RfUkVBQ0hF
RCgpOworICAgIFVOVVNFRF9QQVJBTShyZXBsYWNlZFN0cmluZyk7CisjZW5kaWYgLy8gIVBMQVRG
T1JNKElPUykKIH0KIAogCkBAIC0yNDg3LDcgKzI3NTMsMTEgQEAgdm9pZCBFZGl0b3I6OnVwZGF0
ZU1hcmtlcnNGb3JXb3Jkc0FmZmVjdGVkQnlFZGl0aW5nKGJvb2wgZG9Ob3RSZW1vdmVJZlNlbGVj
dGlvbkEKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1hcmtlcnMuc2l6ZSgpOyArK2kpCiAg
ICAgICAgIG1fYWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxlci0+cmVtb3ZlRGljdGF0aW9uQWx0ZXJu
YXRpdmVzRm9yTWFya2VyKG1hcmtlcnNbaV0pOwogCisjaWYgUExBVEZPUk0oSU9TKQorICAgIGRv
Y3VtZW50KCkubWFya2VycygpLnJlbW92ZU1hcmtlcnMod29yZFJhbmdlLmdldCgpLCBEb2N1bWVu
dE1hcmtlcjo6U3BlbGxpbmcgfCBEb2N1bWVudE1hcmtlcjo6Q29ycmVjdGlvbkluZGljYXRvciB8
IERvY3VtZW50TWFya2VyOjpTcGVsbENoZWNraW5nRXhlbXB0aW9uIHwgRG9jdW1lbnRNYXJrZXI6
OkRpY3RhdGlvbkFsdGVybmF0aXZlcyB8IERvY3VtZW50TWFya2VyOjpEaWN0YXRpb25QaHJhc2VX
aXRoQWx0ZXJuYXRpdmVzLCBEb2N1bWVudE1hcmtlckNvbnRyb2xsZXI6OlJlbW92ZVBhcnRpYWxs
eU92ZXJsYXBwaW5nTWFya2VyKTsKKyNlbHNlCiAgICAgZG9jdW1lbnQoKS5tYXJrZXJzKCkucmVt
b3ZlTWFya2Vycyh3b3JkUmFuZ2UuZ2V0KCksIERvY3VtZW50TWFya2VyOjpTcGVsbGluZyB8IERv
Y3VtZW50TWFya2VyOjpHcmFtbWFyIHwgRG9jdW1lbnRNYXJrZXI6OkNvcnJlY3Rpb25JbmRpY2F0
b3IgfCBEb2N1bWVudE1hcmtlcjo6U3BlbGxDaGVja2luZ0V4ZW1wdGlvbiB8IERvY3VtZW50TWFy
a2VyOjpEaWN0YXRpb25BbHRlcm5hdGl2ZXMsIERvY3VtZW50TWFya2VyQ29udHJvbGxlcjo6UmVt
b3ZlUGFydGlhbGx5T3ZlcmxhcHBpbmdNYXJrZXIpOworI2VuZGlmCiAgICAgZG9jdW1lbnQoKS5t
YXJrZXJzKCkuY2xlYXJEZXNjcmlwdGlvbk9uTWFya2Vyc0ludGVyc2VjdGluZ1JhbmdlKHdvcmRS
YW5nZS5nZXQoKSwgRG9jdW1lbnRNYXJrZXI6OlJlcGxhY2VtZW50KTsKIH0KIApAQCAtMjUyNyw2
ICsyNzk3LDExIEBAIHZvaWQgRWRpdG9yOjpzZXRJZ25vcmVDb21wb3NpdGlvblNlbGVjdGlvbkNo
YW5nZShib29sIGlnbm9yZSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgbV9pZ25vcmVDb21wb3Np
dGlvblNlbGVjdGlvbkNoYW5nZSA9IGlnbm9yZTsKKyNpZiBQTEFURk9STShJT1MpCisgICAgLy8g
RklYTUU6IE1lcmdlIHRoaXMgdG8gb3BlbiBzb3VyY2UgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTM4ODMwCisgICAgaWYgKCFpZ25vcmUpCisgICAgICAgIG5vdGlmeUNv
bXBvbmVudHNPbkNoYW5nZWRTZWxlY3Rpb24obV9mcmFtZS5zZWxlY3Rpb24oKS5zZWxlY3Rpb24o
KSwgMCk7CisjZW5kaWYKICAgICBpZiAoIWlnbm9yZSkKICAgICAgICAgcmV2ZWFsU2VsZWN0aW9u
QWZ0ZXJFZGl0aW5nT3BlcmF0aW9uKFNjcm9sbEFsaWdubWVudDo6YWxpZ25Ub0VkZ2VJZk5lZWRl
ZCwgUmV2ZWFsRXh0ZW50KTsKIH0KQEAgLTI2NTYsNiArMjkzMSwxMSBAQCB2b2lkIEVkaXRvcjo6
Y2hhbmdlU2VsZWN0aW9uQWZ0ZXJDb21tYW5kKGNvbnN0IFZpc2libGVTZWxlY3Rpb24mIG5ld1Nl
bGVjdGlvbiwKICAgICAvLyBjaGFuZ2UgdGhlIGNhcmV0J3MgRE9NIHBvc2l0aW9uIChbImhlbGxv
IiwgMF0pLiBJbiB0aGVzZSBzaXR1YXRpb25zIHRoZSBhYm92ZSBGcmFtZVNlbGVjdGlvbjo6c2V0
U2VsZWN0aW9uIGNhbGwKICAgICAvLyBkb2VzIG5vdCBjYWxsIEVkaXRvckNsaWVudDo6cmVzcG9u
ZFRvQ2hhbmdlZFNlbGVjdGlvbigpLCB3aGljaCwgb24gdGhlIE1hYywgc2VuZHMgc2VsZWN0aW9u
IGNoYW5nZSBub3RpZmljYXRpb25zIGFuZAogICAgIC8vIHN0YXJ0cyBhIG5ldyBraWxsIHJpbmcg
c2VxdWVuY2UsIGJ1dCB3ZSB3YW50IHRvIGRvIHRoZXNlIHRoaW5ncyAobWF0Y2hlcyBBcHBLaXQp
LgorI2lmIFBMQVRGT1JNKElPUykKKyAgICAvLyBGSVhNRTogTWVyZ2UgdGhpcyB0byBvcGVuIHNv
dXJjZSBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Mzg4MzAKKyAgICBp
ZiAobV9pZ25vcmVDb21wb3NpdGlvblNlbGVjdGlvbkNoYW5nZSkKKyAgICAgICAgcmV0dXJuOwor
I2VuZGlmCiAgICAgaWYgKHNlbGVjdGlvbkRpZE5vdENoYW5nZURPTVBvc2l0aW9uICYmIGNsaWVu
dCgpKQogICAgICAgICBjbGllbnQoKS0+cmVzcG9uZFRvQ2hhbmdlZFNlbGVjdGlvbigmbV9mcmFt
ZSk7CiB9CkBAIC0yNzI3LDYgKzMwMDcsMTAgQEAgSW50UmVjdCBFZGl0b3I6OmZpcnN0UmVjdEZv
clJhbmdlKFJhbmdlKiByYW5nZSkgY29uc3QKIAogYm9vbCBFZGl0b3I6OnNob3VsZENoYW5nZVNl
bGVjdGlvbihjb25zdCBWaXNpYmxlU2VsZWN0aW9uJiBvbGRTZWxlY3Rpb24sIGNvbnN0IFZpc2li
bGVTZWxlY3Rpb24mIG5ld1NlbGVjdGlvbiwgRUFmZmluaXR5IGFmZmluaXR5LCBib29sIHN0aWxs
U2VsZWN0aW5nKSBjb25zdAogeworI2lmIFBMQVRGT1JNKElPUykKKyAgICBpZiAobV9mcmFtZS5z
ZWxlY3Rpb25DaGFuZ2VDYWxsYmFja3NEaXNhYmxlZCgpKQorICAgICAgICByZXR1cm4gdHJ1ZTsK
KyNlbmRpZgogICAgIHJldHVybiBjbGllbnQoKSAmJiBjbGllbnQoKS0+c2hvdWxkQ2hhbmdlU2Vs
ZWN0ZWRSYW5nZShvbGRTZWxlY3Rpb24udG9Ob3JtYWxpemVkUmFuZ2UoKS5nZXQoKSwgbmV3U2Vs
ZWN0aW9uLnRvTm9ybWFsaXplZFJhbmdlKCkuZ2V0KCksIGFmZmluaXR5LCBzdGlsbFNlbGVjdGlu
Zyk7CiB9CiAKQEAgLTMwMjEsNyArMzMwNSwyMCBAQCB2b2lkIEVkaXRvcjo6cmVzcG9uZFRvQ2hh
bmdlZFNlbGVjdGlvbihjb25zdCBWaXNpYmxlU2VsZWN0aW9uJiBvbGRTZWxlY3Rpb24sIEZyYQog
ICAgICAgICBib29sIGNhcmV0QnJvd3NpbmcgPSBtX2ZyYW1lLnNldHRpbmdzKCkuY2FyZXRCcm93
c2luZ0VuYWJsZWQoKTsKICAgICAgICAgaWYgKG1fZnJhbWUuc2VsZWN0aW9uKCkuc2VsZWN0aW9u
KCkuaXNDb250ZW50RWRpdGFibGUoKSB8fCBjYXJldEJyb3dzaW5nKSB7CiAgICAgICAgICAgICBW
aXNpYmxlUG9zaXRpb24gbmV3U3RhcnQobV9mcmFtZS5zZWxlY3Rpb24oKS5zZWxlY3Rpb24oKS52
aXNpYmxlU3RhcnQoKSk7CisjaWYgIVBMQVRGT1JNKElPUykKICAgICAgICAgICAgIG5ld0FkamFj
ZW50V29yZHMgPSBWaXNpYmxlU2VsZWN0aW9uKHN0YXJ0T2ZXb3JkKG5ld1N0YXJ0LCBMZWZ0V29y
ZElmT25Cb3VuZGFyeSksIGVuZE9mV29yZChuZXdTdGFydCwgUmlnaHRXb3JkSWZPbkJvdW5kYXJ5
KSk7CisjZWxzZQorICAgICAgICAgICAgLy8gSWYgdGhpcyBidWcgZ2V0cyBmaXhlZCwgdGhpcyBQ
TEFURk9STShJT1MpIGNvZGUgY291bGQgYmUgcmVtb3ZlZDoKKyAgICAgICAgICAgIC8vIDxyZGFy
Oi8vcHJvYmxlbS83MjU5NjExPiBXb3JkIGJvdW5kYXJ5IGNvZGUgb24gaVBob25lIGdpdmVzIGRp
ZmZlcmVudCByZXN1bHRzIHRoYW4gZGVza3RvcAorICAgICAgICAgICAgRVdvcmRTaWRlIHN0YXJ0
V29yZFNpZGUgPSBMZWZ0V29yZElmT25Cb3VuZGFyeTsKKyAgICAgICAgICAgIFVDaGFyMzIgYyA9
IG5ld1N0YXJ0LmNoYXJhY3RlckJlZm9yZSgpOworICAgICAgICAgICAgLy8gRklYTUU6IFZpc2li
bGVQb3NpdGlvbjo6Y2hhcmFjdGVyQWZ0ZXIoKSBhbmQgY2hhcmFjdGVyQmVmb3JlKCkgZG8gbm90
IGVtaXQgbmV3bGluZXMgdGhlIHNhbWUKKyAgICAgICAgICAgIC8vIHdheSBhcyBUZXh0SXRlcmF0
b3IsIHNvIHdlIGRvIGFuIGlzU3RhcnRPZlBhcmFncmFwaCBjaGVjayBoZXJlLgorICAgICAgICAg
ICAgaWYgKGlzU3BhY2VPck5ld2xpbmUoYykgfHwgYyA9PSAweEEwIHx8IGlzU3RhcnRPZlBhcmFn
cmFwaChuZXdTdGFydCkpIHsKKyAgICAgICAgICAgICAgICBzdGFydFdvcmRTaWRlID0gUmlnaHRX
b3JkSWZPbkJvdW5kYXJ5OworICAgICAgICAgICAgfQorICAgICAgICAgICAgbmV3QWRqYWNlbnRX
b3JkcyA9IFZpc2libGVTZWxlY3Rpb24oc3RhcnRPZldvcmQobmV3U3RhcnQsIHN0YXJ0V29yZFNp
ZGUpLCBlbmRPZldvcmQobmV3U3RhcnQsIFJpZ2h0V29yZElmT25Cb3VuZGFyeSkpOworI2VuZGlm
IC8vICFQTEFURk9STShJT1MpCiAgICAgICAgICAgICBpZiAoaXNDb250aW51b3VzR3JhbW1hckNo
ZWNraW5nRW5hYmxlZCkKICAgICAgICAgICAgICAgICBuZXdTZWxlY3RlZFNlbnRlbmNlID0gVmlz
aWJsZVNlbGVjdGlvbihzdGFydE9mU2VudGVuY2UobmV3U3RhcnQpLCBlbmRPZlNlbnRlbmNlKG5l
d1N0YXJ0KSk7CiAgICAgICAgIH0KQEAgLTMxMDMsMTQgKzM0MDAsMTcgQEAgVGV4dENoZWNraW5n
VHlwZU1hc2sgRWRpdG9yOjpyZXNvbHZlVGV4dENoZWNraW5nVHlwZU1hc2soVGV4dENoZWNraW5n
VHlwZU1hc2sgdGUKIHsKICAgICBib29sIHNob3VsZE1hcmtTcGVsbGluZyA9IHRleHRDaGVja2lu
Z09wdGlvbnMgJiBUZXh0Q2hlY2tpbmdUeXBlU3BlbGxpbmc7CiAgICAgYm9vbCBzaG91bGRNYXJr
R3JhbW1hciA9IHRleHRDaGVja2luZ09wdGlvbnMgJiBUZXh0Q2hlY2tpbmdUeXBlR3JhbW1hcjsK
KyNpZiAhUExBVEZPUk0oSU9TKQogICAgIGJvb2wgc2hvdWxkU2hvd0NvcnJlY3Rpb25QYW5lbCA9
IHRleHRDaGVja2luZ09wdGlvbnMgJiBUZXh0Q2hlY2tpbmdUeXBlU2hvd0NvcnJlY3Rpb25QYW5l
bDsKICAgICBib29sIHNob3VsZENoZWNrRm9yQ29ycmVjdGlvbiA9IHNob3VsZFNob3dDb3JyZWN0
aW9uUGFuZWwgfHwgKHRleHRDaGVja2luZ09wdGlvbnMgJiBUZXh0Q2hlY2tpbmdUeXBlQ29ycmVj
dGlvbik7CisjZW5kaWYKIAogICAgIFRleHRDaGVja2luZ1R5cGVNYXNrIGNoZWNraW5nVHlwZXMg
PSAwOwogICAgIGlmIChzaG91bGRNYXJrU3BlbGxpbmcpCiAgICAgICAgIGNoZWNraW5nVHlwZXMg
fD0gVGV4dENoZWNraW5nVHlwZVNwZWxsaW5nOwogICAgIGlmIChzaG91bGRNYXJrR3JhbW1hcikK
ICAgICAgICAgY2hlY2tpbmdUeXBlcyB8PSBUZXh0Q2hlY2tpbmdUeXBlR3JhbW1hcjsKKyNpZiAh
UExBVEZPUk0oSU9TKQogICAgIGlmIChzaG91bGRDaGVja0ZvckNvcnJlY3Rpb24pCiAgICAgICAg
IGNoZWNraW5nVHlwZXMgfD0gVGV4dENoZWNraW5nVHlwZUNvcnJlY3Rpb247CiAgICAgaWYgKHNo
b3VsZFNob3dDb3JyZWN0aW9uUGFuZWwpCkBAIC0zMTMxLDYgKzM0MzEsNyBAQCBUZXh0Q2hlY2tp
bmdUeXBlTWFzayBFZGl0b3I6OnJlc29sdmVUZXh0Q2hlY2tpbmdUeXBlTWFzayhUZXh0Q2hlY2tp
bmdUeXBlTWFzayB0ZQogICAgICAgICAgICAgY2hlY2tpbmdUeXBlcyB8PSBUZXh0Q2hlY2tpbmdU
eXBlQ29ycmVjdGlvbjsKICAgICB9CiAjZW5kaWYKKyNlbmRpZiAvLyAhUExBVEZPUk0oSU9TKQog
CiAgICAgcmV0dXJuIGNoZWNraW5nVHlwZXM7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL0VkaXRvci5oIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuaAppbmRl
eCBkOWJiNWM1OWViNTdiZmY2OWE5YjY1MTUzMmJjNDUyYmVhNjk1MTZiLi4yMGUxNzRiNWU1YmE3
NDYyODMxMmMwMjQ4MWY0YjIzMmEzMTE2YWYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL0VkaXRvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmgKQEAg
LTEyNiw5ICsxMjYsMTEgQEAgcHVibGljOgogICAgIHZvaWQgcGFzdGVBc1BsYWluVGV4dCgpOwog
ICAgIHZvaWQgcGVyZm9ybURlbGV0ZSgpOwogCisjaWYgIVBMQVRGT1JNKElPUykKICAgICB2b2lk
IGNvcHlVUkwoY29uc3QgVVJMJiwgY29uc3QgU3RyaW5nJiB0aXRsZSk7CiAgICAgdm9pZCBjb3B5
VVJMKGNvbnN0IFVSTCYsIGNvbnN0IFN0cmluZyYgdGl0bGUsIFBhc3RlYm9hcmQmKTsKICAgICB2
b2lkIGNvcHlJbWFnZShjb25zdCBIaXRUZXN0UmVzdWx0Jik7CisjZW5kaWYKIAogICAgIFN0cmlu
ZyByZWFkUGxhaW5UZXh0RnJvbVBhc3RlYm9hcmQoUGFzdGVib2FyZCYpOwogCkBAIC0xNjEsOSAr
MTYzLDE3IEBAIHB1YmxpYzoKICAgICB2b2lkIHJlbW92ZUZvcm1hdHRpbmdBbmRTdHlsZSgpOwog
CiAgICAgdm9pZCBjbGVhckxhc3RFZGl0Q29tbWFuZCgpOworI2lmIFBMQVRGT1JNKElPUykKKyAg
ICB2b2lkIGVuc3VyZUxhc3RFZGl0Q29tbWFuZEhhc0N1cnJlbnRTZWxlY3Rpb25JZk9wZW5Gb3JN
b3JlVHlwaW5nKCk7CisjZW5kaWYKIAogICAgIGJvb2wgZGVsZXRlV2l0aERpcmVjdGlvbihTZWxl
Y3Rpb25EaXJlY3Rpb24sIFRleHRHcmFudWxhcml0eSwgYm9vbCBraWxsUmluZywgYm9vbCBpc1R5
cGluZ0FjdGlvbik7CiAgICAgdm9pZCBkZWxldGVTZWxlY3Rpb25XaXRoU21hcnREZWxldGUoYm9v
bCBzbWFydERlbGV0ZSk7CisjaWYgUExBVEZPUk0oSU9TKQorICAgIHZvaWQgY2xlYXJUZXh0KCk7
CisgICAgdm9pZCByZW1vdmVVbmNoYW5nZWFibGVTdHlsZXMoKTsKKyNlbmRpZgorICAgIAogICAg
IGJvb2wgZGlzcGF0Y2hDUFBFdmVudChjb25zdCBBdG9taWNTdHJpbmcmLCBDbGlwYm9hcmRBY2Nl
c3NQb2xpY3kpOwogICAgIAogICAgIHZvaWQgYXBwbHlTdHlsZShTdHlsZVByb3BlcnRpZXMqLCBF
ZGl0QWN0aW9uID0gRWRpdEFjdGlvblVuc3BlY2lmaWVkKTsKQEAgLTIzNSw5ICsyNDUsMTQgQEAg
cHVibGljOgogICAgIHZvaWQgdG9nZ2xlT3ZlcndyaXRlTW9kZUVuYWJsZWQoKTsKIAogICAgIHZv
aWQgbWFya0FsbE1pc3NwZWxsaW5nc0FuZEJhZEdyYW1tYXJJblJhbmdlcyhUZXh0Q2hlY2tpbmdU
eXBlTWFzaywgUmFuZ2UqIHNwZWxsaW5nUmFuZ2UsIFJhbmdlKiBncmFtbWFyUmFuZ2UpOworI2lm
IFBMQVRGT1JNKElPUykKKyAgICBOT19SRVRVUk5fRFVFX1RPX0FTU0VSVAorI2VuZGlmCiAgICAg
dm9pZCBjaGFuZ2VCYWNrVG9SZXBsYWNlZFN0cmluZyhjb25zdCBTdHJpbmcmIHJlcGxhY2VkU3Ry
aW5nKTsKIAorI2lmICFQTEFURk9STShJT1MpCiAgICAgdm9pZCBhZHZhbmNlVG9OZXh0TWlzc3Bl
bGxpbmcoYm9vbCBzdGFydEJlZm9yZVNlbGVjdGlvbiA9IGZhbHNlKTsKKyNlbmRpZiAvLyAhUExB
VEZPUk0oSU9TKQogICAgIHZvaWQgc2hvd1NwZWxsaW5nR3Vlc3NQYW5lbCgpOwogICAgIGJvb2wg
c3BlbGxpbmdQYW5lbElzU2hvd2luZygpOwogCkBAIC0zMDMsNiArMzE4LDE0IEBAIHB1YmxpYzoK
ICAgICBFZGl0aW5nQmVoYXZpb3IgYmVoYXZpb3IoKSBjb25zdDsKIAogICAgIFBhc3NSZWZQdHI8
UmFuZ2U+IHNlbGVjdGVkUmFuZ2UoKTsKKworI2lmIFBMQVRGT1JNKElPUykKKyAgICB2b2lkIGNv
bmZpcm1NYXJrZWRUZXh0KCk7CisgICAgdm9pZCBzZXRUZXh0QXNDaGlsZE9mRWxlbWVudChjb25z
dCBTdHJpbmcmLCBFbGVtZW50Kik7CisgICAgdm9pZCBzZXRUZXh0QWxpZ25tZW50Rm9yQ2hhbmdl
ZEJhc2VXcml0aW5nRGlyZWN0aW9uKFdyaXRpbmdEaXJlY3Rpb24pOworICAgIHZvaWQgaW5zZXJ0
RGljdGF0aW9uUGhyYXNlcyhQYXNzT3duUHRyPFZlY3RvcjxWZWN0b3I8U3RyaW5nPiA+ID4gZGlj
dGF0aW9uUGhyYXNlcywgUmV0YWluUHRyPGlkPiBtZXRhZGF0YSk7CisgICAgdm9pZCBzZXREaWN0
YXRpb25QaHJhc2VzQXNDaGlsZE9mRWxlbWVudChQYXNzT3duUHRyPFZlY3RvcjxWZWN0b3I8U3Ry
aW5nPiA+ID4gZGljdGF0aW9uUGhyYXNlcywgUmV0YWluUHRyPGlkPiBtZXRhZGF0YSwgRWxlbWVu
dCogZWxlbWVudCk7CisjZW5kaWYKICAgICAKICAgICB2b2lkIGFkZFRvS2lsbFJpbmcoUmFuZ2Uq
LCBib29sIHByZXBlbmQpOwogCkBAIC00MDAsMTMgKzQyMywxNSBAQCBwdWJsaWM6CiAgICAgYm9v
bCBpbnNlcnRQYXJhZ3JhcGhTZXBhcmF0b3JJblF1b3RlZENvbnRlbnQoKTsKICAgICBjb25zdCBT
aW1wbGVGb250RGF0YSogZm9udEZvclNlbGVjdGlvbihib29sJikgY29uc3Q7CiAgICAgTlNEaWN0
aW9uYXJ5KiBmb250QXR0cmlidXRlc0ZvclNlbGVjdGlvblN0YXJ0KCkgY29uc3Q7CisgICAgU3Ry
aW5nIHN0cmluZ1NlbGVjdGlvbkZvclBhc3RlYm9hcmQoKTsKKyAgICBTdHJpbmcgc3RyaW5nU2Vs
ZWN0aW9uRm9yUGFzdGVib2FyZFdpdGhJbWFnZUFsdFRleHQoKTsKKyAgICBQYXNzUmVmUHRyPERv
Y3VtZW50RnJhZ21lbnQ+IHdlYkNvbnRlbnRGcm9tUGFzdGVib2FyZChQYXN0ZWJvYXJkJiwgUmFu
Z2UmIGNvbnRleHQsIGJvb2wgYWxsb3dQbGFpblRleHQsIGJvb2wmIGNob3NlUGxhaW5UZXh0KTsK
KyNpZiAhUExBVEZPUk0oSU9TKQogICAgIGJvb2wgY2FuQ29weUV4Y2x1ZGluZ1N0YW5kYWxvbmVJ
bWFnZXMoKTsKICAgICB2b2lkIHRha2VGaW5kU3RyaW5nRnJvbVNlbGVjdGlvbigpOwogICAgIHZv
aWQgcmVhZFNlbGVjdGlvbkZyb21QYXN0ZWJvYXJkKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5h
bWUpOwotICAgIFN0cmluZyBzdHJpbmdTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKCk7Ci0gICAgU3Ry
aW5nIHN0cmluZ1NlbGVjdGlvbkZvclBhc3RlYm9hcmRXaXRoSW1hZ2VBbHRUZXh0KCk7CiAgICAg
UGFzc1JlZlB0cjxTaGFyZWRCdWZmZXI+IGRhdGFTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKGNvbnN0
IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpOwotICAgIFBhc3NSZWZQdHI8RG9jdW1lbnRGcmFnbWVu
dD4gd2ViQ29udGVudEZyb21QYXN0ZWJvYXJkKFBhc3RlYm9hcmQmLCBSYW5nZSYgY29udGV4dCwg
Ym9vbCBhbGxvd1BsYWluVGV4dCwgYm9vbCYgY2hvc2VQbGFpblRleHQpOworI2VuZGlmIC8vICFQ
TEFURk9STShJT1MpCiAjZW5kaWYKIAogI2lmIFBMQVRGT1JNKE1BQykgfHwgUExBVEZPUk0oRUZM
KSB8fCBQTEFURk9STShOSVgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0Vk
aXRvckNvbW1hbmQuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3JDb21tYW5kLmNw
cAppbmRleCAwMTUwNjM1MmNmYjRhYTNiODgyNjBmMTAyYjRlZGQ2YjEwZTk0MDMxLi4yYmUzZDQ4
YjFlYjZmMmUzMzBiNzk4YzM2NTBiNDQxNzViYmRiZmIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL0VkaXRvckNvbW1hbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvRWRpdG9yQ29tbWFuZC5jcHAKQEAgLTMwMiw2ICszMDIsMTQgQEAgc3RhdGljIGJvb2wgZXhl
Y3V0ZUN1dChGcmFtZSYgZnJhbWUsIEV2ZW50KiwgRWRpdG9yQ29tbWFuZFNvdXJjZSBzb3VyY2Us
IGNvbnN0IFMKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAorI2lmIFBMQVRGT1JNKElPUykKK3N0YXRp
YyBib29sIGV4ZWN1dGVDbGVhclRleHQoRnJhbWUmIGZyYW1lLCBFdmVudCosIEVkaXRvckNvbW1h
bmRTb3VyY2UsIGNvbnN0IFN0cmluZyYpCit7CisgICAgZnJhbWUuZWRpdG9yKCkuY2xlYXJUZXh0
KCk7CisgICAgcmV0dXJuIHRydWU7Cit9CisjZW5kaWYKKwogc3RhdGljIGJvb2wgZXhlY3V0ZURl
ZmF1bHRQYXJhZ3JhcGhTZXBhcmF0b3IoRnJhbWUmIGZyYW1lLCBFdmVudCosIEVkaXRvckNvbW1h
bmRTb3VyY2UsIGNvbnN0IFN0cmluZyYgdmFsdWUpCiB7CiAgICAgaWYgKGVxdWFsSWdub3JpbmdD
YXNlKHZhbHVlLCAiZGl2IikpCkBAIC0xMDkzLDcgKzExMDEsNyBAQCBzdGF0aWMgYm9vbCBleGVj
dXRlU3dhcFdpdGhNYXJrKEZyYW1lJiBmcmFtZSwgRXZlbnQqLCBFZGl0b3JDb21tYW5kU291cmNl
LCBjb25zdAogICAgIHJldHVybiB0cnVlOwogfQogCi0jaWYgUExBVEZPUk0oTUFDKQorI2lmIFBM
QVRGT1JNKE1BQykgJiYgIVBMQVRGT1JNKElPUykKIHN0YXRpYyBib29sIGV4ZWN1dGVUYWtlRmlu
ZFN0cmluZ0Zyb21TZWxlY3Rpb24oRnJhbWUmIGZyYW1lLCBFdmVudCosIEVkaXRvckNvbW1hbmRT
b3VyY2UsIGNvbnN0IFN0cmluZyYpCiB7CiAgICAgZnJhbWUuZWRpdG9yKCkudGFrZUZpbmRTdHJp
bmdGcm9tU2VsZWN0aW9uKCk7CkBAIC0xMjM3LDEzICsxMjQ1LDI5IEBAIHN0YXRpYyBib29sIGVu
YWJsZUNhcmV0SW5FZGl0YWJsZVRleHQoRnJhbWUmIGZyYW1lLCBFdmVudCogZXZlbnQsIEVkaXRv
ckNvbW1hbmRTCiAKIHN0YXRpYyBib29sIGVuYWJsZWRDb3B5KEZyYW1lJiBmcmFtZSwgRXZlbnQq
LCBFZGl0b3JDb21tYW5kU291cmNlKQogeworI2lmICFQTEFURk9STShJT1MpCiAgICAgcmV0dXJu
IGZyYW1lLmVkaXRvcigpLmNhbkRIVE1MQ29weSgpIHx8IGZyYW1lLmVkaXRvcigpLmNhbkNvcHko
KTsKKyNlbHNlCisgICAgcmV0dXJuIGZyYW1lLmVkaXRvcigpLmNhbkNvcHkoKTsKKyNlbmRpZgog
fQogCiBzdGF0aWMgYm9vbCBlbmFibGVkQ3V0KEZyYW1lJiBmcmFtZSwgRXZlbnQqLCBFZGl0b3JD
b21tYW5kU291cmNlKQogeworI2lmICFQTEFURk9STShJT1MpCiAgICAgcmV0dXJuIGZyYW1lLmVk
aXRvcigpLmNhbkRIVE1MQ3V0KCkgfHwgZnJhbWUuZWRpdG9yKCkuY2FuQ3V0KCk7CisjZWxzZQor
ICAgIHJldHVybiBmcmFtZS5lZGl0b3IoKS5jYW5DdXQoKTsKKyNlbmRpZgorfQorCisjaWYgUExB
VEZPUk0oSU9TKQorc3RhdGljIGJvb2wgZW5hYmxlZENsZWFyVGV4dChGcmFtZSYgZnJhbWUsIEV2
ZW50KiwgRWRpdG9yQ29tbWFuZFNvdXJjZSkKK3sKKyAgICBVTlVTRURfUEFSQU0oZnJhbWUpOwor
ICAgIHJldHVybiBmYWxzZTsKIH0KKyNlbmRpZgogCiBzdGF0aWMgYm9vbCBlbmFibGVkSW5FZGl0
YWJsZVRleHQoRnJhbWUmIGZyYW1lLCBFdmVudCogZXZlbnQsIEVkaXRvckNvbW1hbmRTb3VyY2Up
CiB7CkBAIC0xMjk2LDcgKzEzMjAsNyBAQCBzdGF0aWMgYm9vbCBlbmFibGVkUmVkbyhGcmFtZSYg
ZnJhbWUsIEV2ZW50KiwgRWRpdG9yQ29tbWFuZFNvdXJjZSkKICAgICByZXR1cm4gZnJhbWUuZWRp
dG9yKCkuY2FuUmVkbygpOwogfQogCi0jaWYgUExBVEZPUk0oTUFDKQorI2lmIFBMQVRGT1JNKE1B
QykgJiYgIVBMQVRGT1JNKElPUykKIHN0YXRpYyBib29sIGVuYWJsZWRUYWtlRmluZFN0cmluZ0Zy
b21TZWxlY3Rpb24oRnJhbWUmIGZyYW1lLCBFdmVudCosIEVkaXRvckNvbW1hbmRTb3VyY2UpCiB7
CiAgICAgcmV0dXJuIGZyYW1lLmVkaXRvcigpLmNhbkNvcHlFeGNsdWRpbmdTdGFuZGFsb25lSW1h
Z2VzKCk7CkBAIC0xNjAzLDkgKzE2MjcsMTYgQEAgc3RhdGljIGNvbnN0IENvbW1hbmRNYXAmIGNy
ZWF0ZUNvbW1hbmRNYXAoKQogICAgICAgICB7ICJQYXN0ZUdsb2JhbFNlbGVjdGlvbiIsIHsgZXhl
Y3V0ZVBhc3RlR2xvYmFsU2VsZWN0aW9uLCBzdXBwb3J0ZWRGcm9tTWVudU9yS2V5QmluZGluZywg
ZW5hYmxlZFBhc3RlLCBzdGF0ZU5vbmUsIHZhbHVlTnVsbCwgbm90VGV4dEluc2VydGlvbiwgYWxs
b3dFeGVjdXRpb25XaGVuRGlzYWJsZWQgfSB9LAogI2VuZGlmCiAKLSNpZiBQTEFURk9STShNQUMp
CisjaWYgUExBVEZPUk0oTUFDKSAmJiAhUExBVEZPUk0oSU9TKQogICAgICAgICB7ICJUYWtlRmlu
ZFN0cmluZ0Zyb21TZWxlY3Rpb24iLCB7IGV4ZWN1dGVUYWtlRmluZFN0cmluZ0Zyb21TZWxlY3Rp
b24sIHN1cHBvcnRlZEZyb21NZW51T3JLZXlCaW5kaW5nLCBlbmFibGVkVGFrZUZpbmRTdHJpbmdG
cm9tU2VsZWN0aW9uLCBzdGF0ZU5vbmUsIHZhbHVlTnVsbCwgbm90VGV4dEluc2VydGlvbiwgZG9O
b3RBbGxvd0V4ZWN1dGlvbldoZW5EaXNhYmxlZCB9IH0sCiAjZW5kaWYKKyNpZiBQTEFURk9STShJ
T1MpCisgICAgICAgIHsgIkNsZWFyVGV4dCIsIHsgZXhlY3V0ZUNsZWFyVGV4dCwgc3VwcG9ydGVk
LCBlbmFibGVkQ2xlYXJUZXh0LCBzdGF0ZU5vbmUsIHZhbHVlTnVsbCwgbm90VGV4dEluc2VydGlv
biwgYWxsb3dFeGVjdXRpb25XaGVuRGlzYWJsZWQgfSB9LAorI2VuZGlmCisKKyNpZiBQTEFURk9S
TShHVEspIHx8IFBMQVRGT1JNKFFUKQorICAgICAgICB7ICJQYXN0ZUdsb2JhbFNlbGVjdGlvbiIs
IHsgZXhlY3V0ZVBhc3RlR2xvYmFsU2VsZWN0aW9uLCBzdXBwb3J0ZWRGcm9tTWVudU9yS2V5Qmlu
ZGluZywgZW5hYmxlZFBhc3RlLCBzdGF0ZU5vbmUsIHZhbHVlTnVsbCwgbm90VGV4dEluc2VydGlv
biwgYWxsb3dFeGVjdXRpb25XaGVuRGlzYWJsZWQgfSB9LAorI2VuZGlmCiAgICAgfTsKIAogICAg
IC8vIFRoZXNlIHVuc3VwcG9ydGVkIGNvbW1hbmRzIGFyZSBsaXN0ZWQgaGVyZSBzaW5jZSB0aGV5
IGFwcGVhciBpbiB0aGUgTWljcm9zb2Z0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL0ZyYW1lU2VsZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRnJhbWVTZWxl
Y3Rpb24uY3BwCmluZGV4IDRiMWU2N2RjNTA4OTVjNGNmYzU2Mzg1ZGUxNTUzNDVkZWU4NzA4YjAu
LjRhMDg4M2UyMDc2Y2VmNGIyOTU5MGY5ZjU5M2Q1MzBjNzk5YmE2MTYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvRnJhbWVTZWxlY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvRnJhbWVTZWxlY3Rpb24uY3BwCkBAIC02NSw2ICs2NSwxNSBAQAogI2luY2x1
ZGUgPHN0ZGlvLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgogCisjaWYgUExBVEZP
Uk0oSU9TKQorI2luY2x1ZGUgIkNocm9tZS5oIgorI2luY2x1ZGUgIkNocm9tZUNsaWVudC5oIgor
I2luY2x1ZGUgIkNvbG9yLmgiCisjaW5jbHVkZSAiUmVuZGVyTGF5ZXIuaCIKKyNpbmNsdWRlICJS
ZW5kZXJPYmplY3QuaCIKKyNpbmNsdWRlICJSZW5kZXJTdHlsZS5oIgorI2VuZGlmCisKICNkZWZp
bmUgRURJVF9ERUJVRyAwCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTEwNyw2ICsxMTYsMTIg
QEAgRnJhbWVTZWxlY3Rpb246OkZyYW1lU2VsZWN0aW9uKEZyYW1lKiBmcmFtZSkKICAgICAsIG1f
aXNDYXJldEJsaW5raW5nU3VzcGVuZGVkKGZhbHNlKQogICAgICwgbV9mb2N1c2VkKGZyYW1lICYm
IGZyYW1lLT5wYWdlKCkgJiYgZnJhbWUtPnBhZ2UoKS0+Zm9jdXNDb250cm9sbGVyKCkuZm9jdXNl
ZEZyYW1lKCkgPT0gZnJhbWUpCiAgICAgLCBtX3Nob3VsZFNob3dCbG9ja0N1cnNvcihmYWxzZSkK
KyNpZiBQTEFURk9STShJT1MpCisgICAgLCBtX3VwZGF0ZUFwcGVhcmFuY2VFbmFibGVkKGZhbHNl
KQorICAgICwgbV9jYXJldEJsaW5rcyh0cnVlKQorICAgICwgbV9jbG9zZVR5cGluZ1N1cHByZXNz
aW9ucygwKQorICAgICwgbV9zY3JvbGxpbmdTdXBwcmVzc0NvdW50KDApCisjZW5kaWYKIHsKICAg
ICBpZiAoc2hvdWxkQWx3YXlzVXNlRGlyZWN0aW9uYWxTZWxlY3Rpb24obV9mcmFtZSkpCiAgICAg
ICAgIG1fc2VsZWN0aW9uLnNldElzRGlyZWN0aW9uYWwodHJ1ZSk7CkBAIC0yNjgsNyArMjgzLDEx
IEBAIHZvaWQgRnJhbWVTZWxlY3Rpb246OnNldFNlbGVjdGlvbihjb25zdCBWaXNpYmxlU2VsZWN0
aW9uJiBuZXdTZWxlY3Rpb24sIFNldFNlbGVjCiAKICAgICBtX2dyYW51bGFyaXR5ID0gZ3JhbnVs
YXJpdHk7CiAKKyNpZiBQTEFURk9STShJT1MpCisgICAgaWYgKGNsb3NlVHlwaW5nICYmIG1fY2xv
c2VUeXBpbmdTdXBwcmVzc2lvbnMgPT0gMCkKKyNlbHNlCiAgICAgaWYgKGNsb3NlVHlwaW5nKQor
I2VuZGlmCiAgICAgICAgIFR5cGluZ0NvbW1hbmQ6OmNsb3NlVHlwaW5nKG1fZnJhbWUpOwogCiAg
ICAgaWYgKHNob3VsZENsZWFyVHlwaW5nU3R5bGUpCkBAIC02MjAsNiArNjM5LDExIEBAIFZpc2li
bGVQb3NpdGlvbiBGcmFtZVNlbGVjdGlvbjo6bW9kaWZ5RXh0ZW5kaW5nUmlnaHQoVGV4dEdyYW51
bGFyaXR5IGdyYW51bGFyaXR5CiAgICAgICAgIC8vIEZJWE1FOiBpbXBsZW1lbnQgYWxsIG9mIHRo
ZSBhYm92ZT8KICAgICAgICAgcG9zID0gbW9kaWZ5RXh0ZW5kaW5nRm9yd2FyZChncmFudWxhcml0
eSk7CiAgICAgICAgIGJyZWFrOworI2lmIFBMQVRGT1JNKElPUykKKyAgICBjYXNlIERvY3VtZW50
R3JhbnVsYXJpdHk6CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICBicmVh
azsKKyNlbmRpZgogICAgIH0KICNpZiBFTkFCTEUoVVNFUlNFTEVDVF9BTEwpCiAgICAgYWRqdXN0
UG9zaXRpb25Gb3JVc2VyU2VsZWN0QWxsKHBvcywgZGlyZWN0aW9uT2ZFbmNsb3NpbmdCbG9jaygp
ID09IExUUik7CkBAIC02NDYsNiArNjcwLDExIEBAIFZpc2libGVQb3NpdGlvbiBGcmFtZVNlbGVj
dGlvbjo6bW9kaWZ5RXh0ZW5kaW5nRm9yd2FyZChUZXh0R3JhbnVsYXJpdHkgZ3JhbnVsYXJpCiAg
ICAgY2FzZSBQYXJhZ3JhcGhHcmFudWxhcml0eToKICAgICAgICAgcG9zID0gbmV4dFBhcmFncmFw
aFBvc2l0aW9uKHBvcywgbGluZURpcmVjdGlvblBvaW50Rm9yQmxvY2tEaXJlY3Rpb25OYXZpZ2F0
aW9uKEVYVEVOVCkpOwogICAgICAgICBicmVhazsKKyNpZiBQTEFURk9STShJT1MpCisgICAgY2Fz
ZSBEb2N1bWVudEdyYW51bGFyaXR5OgorICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAg
ICAgICAgYnJlYWs7CisjZW5kaWYKICAgICBjYXNlIFNlbnRlbmNlQm91bmRhcnk6CiAgICAgICAg
IHBvcyA9IGVuZE9mU2VudGVuY2UoZW5kRm9yUGxhdGZvcm0oKSk7CiAgICAgICAgIGJyZWFrOwpA
QCAtNzAzLDYgKzczMiwxMSBAQCBWaXNpYmxlUG9zaXRpb24gRnJhbWVTZWxlY3Rpb246Om1vZGlm
eU1vdmluZ1JpZ2h0KFRleHRHcmFudWxhcml0eSBncmFudWxhcml0eSkKICAgICBjYXNlIExpbmVC
b3VuZGFyeToKICAgICAgICAgcG9zID0gcmlnaHRCb3VuZGFyeU9mTGluZShzdGFydEZvclBsYXRm
b3JtKCksIGRpcmVjdGlvbk9mRW5jbG9zaW5nQmxvY2soKSk7CiAgICAgICAgIGJyZWFrOworI2lm
IFBMQVRGT1JNKElPUykKKyAgICBjYXNlIERvY3VtZW50R3JhbnVsYXJpdHk6CisgICAgICAgIEFT
U0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICBicmVhazsKKyNlbmRpZgogICAgIH0KICAgICBy
ZXR1cm4gcG9zOwogfQpAQCAtNzM1LDYgKzc2OSwxMSBAQCBWaXNpYmxlUG9zaXRpb24gRnJhbWVT
ZWxlY3Rpb246Om1vZGlmeU1vdmluZ0ZvcndhcmQoVGV4dEdyYW51bGFyaXR5IGdyYW51bGFyaXR5
KQogICAgIGNhc2UgUGFyYWdyYXBoR3JhbnVsYXJpdHk6CiAgICAgICAgIHBvcyA9IG5leHRQYXJh
Z3JhcGhQb3NpdGlvbihlbmRGb3JQbGF0Zm9ybSgpLCBsaW5lRGlyZWN0aW9uUG9pbnRGb3JCbG9j
a0RpcmVjdGlvbk5hdmlnYXRpb24oU1RBUlQpKTsKICAgICAgICAgYnJlYWs7CisjaWYgUExBVEZP
Uk0oSU9TKQorICAgIGNhc2UgRG9jdW1lbnRHcmFudWxhcml0eToKKyAgICAgICAgQVNTRVJUX05P
VF9SRUFDSEVEKCk7CisgICAgICAgIGJyZWFrOworI2VuZGlmCiAgICAgY2FzZSBTZW50ZW5jZUJv
dW5kYXJ5OgogICAgICAgICBwb3MgPSBlbmRPZlNlbnRlbmNlKGVuZEZvclBsYXRmb3JtKCkpOwog
ICAgICAgICBicmVhazsKQEAgLTc5MSw2ICs4MzAsMTEgQEAgVmlzaWJsZVBvc2l0aW9uIEZyYW1l
U2VsZWN0aW9uOjptb2RpZnlFeHRlbmRpbmdMZWZ0KFRleHRHcmFudWxhcml0eSBncmFudWxhcml0
eSkKICAgICBjYXNlIERvY3VtZW50Qm91bmRhcnk6CiAgICAgICAgIHBvcyA9IG1vZGlmeUV4dGVu
ZGluZ0JhY2t3YXJkKGdyYW51bGFyaXR5KTsKICAgICAgICAgYnJlYWs7CisjaWYgUExBVEZPUk0o
SU9TKQorICAgIGNhc2UgRG9jdW1lbnRHcmFudWxhcml0eToKKyAgICAgICAgQVNTRVJUX05PVF9S
RUFDSEVEKCk7CisgICAgICAgIGJyZWFrOworI2VuZGlmCiAgICAgfQogI2lmIEVOQUJMRShVU0VS
U0VMRUNUX0FMTCkKICAgICBhZGp1c3RQb3NpdGlvbkZvclVzZXJTZWxlY3RBbGwocG9zLCAhKGRp
cmVjdGlvbk9mRW5jbG9zaW5nQmxvY2soKSA9PSBMVFIpKTsKQEAgLTgzOCw2ICs4ODIsMTEgQEAg
VmlzaWJsZVBvc2l0aW9uIEZyYW1lU2VsZWN0aW9uOjptb2RpZnlFeHRlbmRpbmdCYWNrd2FyZChU
ZXh0R3JhbnVsYXJpdHkgZ3JhbnVsYXIKICAgICAgICAgZWxzZQogICAgICAgICAgICAgcG9zID0g
c3RhcnRPZkRvY3VtZW50KHBvcyk7CiAgICAgICAgIGJyZWFrOworI2lmIFBMQVRGT1JNKElPUykK
KyAgICBjYXNlIERvY3VtZW50R3JhbnVsYXJpdHk6CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hF
RCgpOworICAgICAgICBicmVhazsKKyNlbmRpZgogICAgIH0KICNpZiBFTkFCTEUoVVNFUlNFTEVD
VF9BTEwpCiAgICAgYWRqdXN0UG9zaXRpb25Gb3JVc2VyU2VsZWN0QWxsKHBvcywgIShkaXJlY3Rp
b25PZkVuY2xvc2luZ0Jsb2NrKCkgPT0gTFRSKSk7CkBAIC04NzcsNiArOTI2LDExIEBAIFZpc2li
bGVQb3NpdGlvbiBGcmFtZVNlbGVjdGlvbjo6bW9kaWZ5TW92aW5nTGVmdChUZXh0R3JhbnVsYXJp
dHkgZ3JhbnVsYXJpdHkpCiAgICAgY2FzZSBMaW5lQm91bmRhcnk6CiAgICAgICAgIHBvcyA9IGxl
ZnRCb3VuZGFyeU9mTGluZShzdGFydEZvclBsYXRmb3JtKCksIGRpcmVjdGlvbk9mRW5jbG9zaW5n
QmxvY2soKSk7CiAgICAgICAgIGJyZWFrOworI2lmIFBMQVRGT1JNKElPUykKKyAgICBjYXNlIERv
Y3VtZW50R3JhbnVsYXJpdHk6CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAg
ICBicmVhazsKKyNlbmRpZgogICAgIH0KICAgICByZXR1cm4gcG9zOwogfQpAQCAtOTE5LDYgKzk3
MywxMSBAQCBWaXNpYmxlUG9zaXRpb24gRnJhbWVTZWxlY3Rpb246Om1vZGlmeU1vdmluZ0JhY2t3
YXJkKFRleHRHcmFudWxhcml0eSBncmFudWxhcml0eQogICAgICAgICBlbHNlCiAgICAgICAgICAg
ICBwb3MgPSBzdGFydE9mRG9jdW1lbnQocG9zKTsKICAgICAgICAgYnJlYWs7CisjaWYgUExBVEZP
Uk0oSU9TKQorICAgIGNhc2UgRG9jdW1lbnRHcmFudWxhcml0eToKKyAgICAgICAgQVNTRVJUX05P
VF9SRUFDSEVEKCk7CisgICAgICAgIGJyZWFrOworI2VuZGlmCiAgICAgfQogICAgIHJldHVybiBw
b3M7CiB9CkBAIC0xNjY4LDYgKzE3MjcsMTIgQEAgYm9vbCBGcmFtZVNlbGVjdGlvbjo6c2V0U2Vs
ZWN0ZWRSYW5nZShSYW5nZSogcmFuZ2UsIEVBZmZpbml0eSBhZmZpbml0eSwgYm9vbCBjbG8KICAg
ICAvLyBGSVhNRTogQ2FuIHdlIHByb3ZpZGUgZXh0ZW50QWZmaW5pdHk/CiAgICAgVmlzaWJsZVBv
c2l0aW9uIHZpc2libGVTdGFydChyYW5nZS0+c3RhcnRQb3NpdGlvbigpLCBjb2xsYXBzZWQgPyBh
ZmZpbml0eSA6IERPV05TVFJFQU0pOwogICAgIFZpc2libGVQb3NpdGlvbiB2aXNpYmxlRW5kKHJh
bmdlLT5lbmRQb3NpdGlvbigpLCBTRUxfREVGQVVMVF9BRkZJTklUWSk7CisjaWYgUExBVEZPUk0o
SU9TKQorICAgIGlmIChyYW5nZS0+c3RhcnRDb250YWluZXIoKSAmJiB2aXNpYmxlU3RhcnQuaXNO
dWxsKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAocmFuZ2UtPmVuZENvbnRhaW5l
cigpICYmIHZpc2libGVFbmQuaXNOdWxsKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyNlbmRp
ZgogICAgIHNldFNlbGVjdGlvbihWaXNpYmxlU2VsZWN0aW9uKHZpc2libGVTdGFydCwgdmlzaWJs
ZUVuZCksIENsZWFyVHlwaW5nU3R5bGUgfCAoY2xvc2VUeXBpbmcgPyBDbG9zZVR5cGluZyA6IDAp
KTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KQEAgLTE2ODUsNiArMTc1MCwxMiBAQCB2b2lkIEZyYW1l
U2VsZWN0aW9uOjpmb2N1c2VkT3JBY3RpdmVTdGF0ZUNoYW5nZWQoKQogCiAgICAgZG9jdW1lbnQt
PnVwZGF0ZVN0eWxlSWZOZWVkZWQoKTsKIAorI2lmIFVTRShVSUtJVF9FRElUSU5HKQorICAgIC8v
IENhcmV0IGJsaW5raW5nIChibGlua3MgfCBkb2VzIG5vdCBibGluaykKKyAgICBpZiAoYWN0aXZl
QW5kRm9jdXNlZCkKKyAgICAgICAgc2V0U2VsZWN0aW9uRnJvbU5vbmUoKTsKKyAgICBzZXRDYXJl
dFZpc2libGUoYWN0aXZlQW5kRm9jdXNlZCk7CisjZWxzZQogICAgIC8vIEJlY2F1c2UgUmVuZGVy
T2JqZWN0OjpzZWxlY3Rpb25CYWNrZ3JvdW5kQ29sb3IoKSBhbmQKICAgICAvLyBSZW5kZXJPYmpl
Y3Q6OnNlbGVjdGlvbkZvcmVncm91bmRDb2xvcigpIGNoZWNrIGlmIHRoZSBmcmFtZSBpcyBhY3Rp
dmUsCiAgICAgLy8gd2UgaGF2ZSB0byB1cGRhdGUgcGxhY2VzIHRob3NlIGNvbG9ycyB3ZXJlIHBh
aW50ZWQuCkBAIC0xNzA4LDYgKzE3NzksNyBAQCB2b2lkIEZyYW1lU2VsZWN0aW9uOjpmb2N1c2Vk
T3JBY3RpdmVTdGF0ZUNoYW5nZWQoKQogICAgICAgICAgICAgaWYgKHJlbmRlcmVyICYmIHJlbmRl
cmVyLT5zdHlsZSgpLmhhc0FwcGVhcmFuY2UoKSkKICAgICAgICAgICAgICAgICByZW5kZXJlci0+
dGhlbWUoKS5zdGF0ZUNoYW5nZWQocmVuZGVyZXIsIEZvY3VzU3RhdGUpOwogICAgIH0KKyNlbmRp
ZgogfQogCiB2b2lkIEZyYW1lU2VsZWN0aW9uOjpwYWdlQWN0aXZhdGlvbkNoYW5nZWQoKQpAQCAt
MTczOCw2ICsxODEwLDExIEBAIGlubGluZSBzdGF0aWMgYm9vbCBzaG91bGRTdG9wQmxpbmtpbmdE
dWVUb1R5cGluZ0NvbW1hbmQoRnJhbWUqIGZyYW1lKQogCiB2b2lkIEZyYW1lU2VsZWN0aW9uOjp1
cGRhdGVBcHBlYXJhbmNlKCkKIHsKKyNpZiBQTEFURk9STShJT1MpCisgICAgaWYgKCFtX3VwZGF0
ZUFwcGVhcmFuY2VFbmFibGVkKQorICAgICAgICByZXR1cm47CisjZW5kaWYKKwogICAgIC8vIFBh
aW50IGEgYmxvY2sgY3Vyc29yIGluc3RlYWQgb2YgYSBjYXJldCBpbiBvdmVydHlwZSBtb2RlIHVu
bGVzcyB0aGUgY2FyZXQgaXMgYXQgdGhlIGVuZCBvZiBhIGxpbmUgKGluIHRoaXMgY2FzZQogICAg
IC8vIHRoZSBGcmFtZVNlbGVjdGlvbiB3aWxsIHBhaW50IGEgYmxpbmtpbmcgY2FyZXQgYXMgdXN1
YWwpLgogICAgIFZpc2libGVQb3NpdGlvbiBmb3J3YXJkUG9zaXRpb247CkBAIC0xOTEyLDYgKzE5
ODksMTAgQEAgUGFzc1JlZlB0cjxNdXRhYmxlU3R5bGVQcm9wZXJ0aWVzPiBGcmFtZVNlbGVjdGlv
bjo6Y29weVR5cGluZ1N0eWxlKCkgY29uc3QKIAogYm9vbCBGcmFtZVNlbGVjdGlvbjo6c2hvdWxk
RGVsZXRlU2VsZWN0aW9uKGNvbnN0IFZpc2libGVTZWxlY3Rpb24mIHNlbGVjdGlvbikgY29uc3QK
IHsKKyNpZiBQTEFURk9STShJT1MpCisgICAgaWYgKG1fZnJhbWUtPnNlbGVjdGlvbkNoYW5nZUNh
bGxiYWNrc0Rpc2FibGVkKCkpCisgICAgICAgIHJldHVybiB0cnVlOworI2VuZGlmCiAgICAgcmV0
dXJuIG1fZnJhbWUtPmVkaXRvcigpLmNsaWVudCgpLT5zaG91bGREZWxldGVSYW5nZShzZWxlY3Rp
b24udG9Ob3JtYWxpemVkUmFuZ2UoKS5nZXQoKSk7CiB9CiAKQEAgLTIwMTAsMTEgKzIwOTEsMjQg
QEAgdm9pZCBGcmFtZVNlbGVjdGlvbjo6cmV2ZWFsU2VsZWN0aW9uKGNvbnN0IFNjcm9sbEFsaWdu
bWVudCYgYWxpZ25tZW50LCBSZXZlYWxFeHQKICAgICBQb3NpdGlvbiBzdGFydCA9IHRoaXMtPnN0
YXJ0KCk7CiAgICAgQVNTRVJUKHN0YXJ0LmRlcHJlY2F0ZWROb2RlKCkpOwogICAgIGlmIChzdGFy
dC5kZXByZWNhdGVkTm9kZSgpICYmIHN0YXJ0LmRlcHJlY2F0ZWROb2RlKCktPnJlbmRlcmVyKCkp
IHsKKyNpZiBQTEFURk9STShJT1MpCisgICAgICAgIGlmIChSZW5kZXJMYXllciogbGF5ZXIgPSBz
dGFydC5kZXByZWNhdGVkTm9kZSgpLT5yZW5kZXJlcigpLT5lbmNsb3NpbmdMYXllcigpKSB7Cisg
ICAgICAgICAgICBpZiAoIW1fc2Nyb2xsaW5nU3VwcHJlc3NDb3VudCkgeworICAgICAgICAgICAg
ICAgIGxheWVyLT5zZXRBZGp1c3RGb3JJT1NDYXJldFdoZW5TY3JvbGxpbmcodHJ1ZSk7CisgICAg
ICAgICAgICAgICAgbGF5ZXItPnNjcm9sbFJlY3RUb1Zpc2libGUocmVjdCwgYWxpZ25tZW50LCBh
bGlnbm1lbnQpOworICAgICAgICAgICAgICAgIGxheWVyLT5zZXRBZGp1c3RGb3JJT1NDYXJldFdo
ZW5TY3JvbGxpbmcoZmFsc2UpOworICAgICAgICAgICAgICAgIHVwZGF0ZUFwcGVhcmFuY2UoKTsK
KyAgICAgICAgICAgICAgICBpZiAobV9mcmFtZS0+cGFnZSgpKQorICAgICAgICAgICAgICAgICAg
ICBtX2ZyYW1lLT5wYWdlKCktPmNocm9tZSgpLmNsaWVudCgpLm5vdGlmeVJldmVhbGVkU2VsZWN0
aW9uQnlTY3JvbGxpbmdGcmFtZShtX2ZyYW1lKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQor
I2Vsc2UKICAgICAgICAgLy8gRklYTUU6IFRoaXMgY29kZSBvbmx5IGhhbmRsZXMgc2Nyb2xsaW5n
IHRoZSBzdGFydENvbnRhaW5lcidzIGxheWVyLCBidXQKICAgICAgICAgLy8gdGhlIHNlbGVjdGlv
biByZWN0IGNvdWxkIGludGVyc2VjdCBtb3JlIHRoYW4ganVzdCB0aGF0LgogICAgICAgICAvLyBT
ZWUgPHJkYXI6Ly9wcm9ibGVtLzQ3OTk4OTk+LgogICAgICAgICBpZiAoc3RhcnQuZGVwcmVjYXRl
ZE5vZGUoKS0+cmVuZGVyZXIoKS0+c2Nyb2xsUmVjdFRvVmlzaWJsZShyZWN0LCBhbGlnbm1lbnQs
IGFsaWdubWVudCkpCiAgICAgICAgICAgICB1cGRhdGVBcHBlYXJhbmNlKCk7CisjZW5kaWYKICAg
ICB9CiB9CiAKQEAgLTIwMjQsOSArMjExOCwxNCBAQCB2b2lkIEZyYW1lU2VsZWN0aW9uOjpzZXRT
ZWxlY3Rpb25Gcm9tTm9uZSgpCiAgICAgLy8gZW50aXJlIFdlYlZpZXcgaXMgZWRpdGFibGUgb3Ig
ZGVzaWduTW9kZSBpcyBvbiBmb3IgdGhpcyBkb2N1bWVudCkuCiAKICAgICBEb2N1bWVudCogZG9j
dW1lbnQgPSBtX2ZyYW1lLT5kb2N1bWVudCgpOworI2lmICFQTEFURk9STShJT1MpCiAgICAgYm9v
bCBjYXJldEJyb3dzaW5nID0gbV9mcmFtZS0+c2V0dGluZ3MoKS5jYXJldEJyb3dzaW5nRW5hYmxl
ZCgpOwogICAgIGlmICghaXNOb25lKCkgfHwgIShkb2N1bWVudC0+aGFzRWRpdGFibGVTdHlsZSgp
IHx8IGNhcmV0QnJvd3NpbmcpKQogICAgICAgICByZXR1cm47CisjZWxzZQorICAgIGlmICghZG9j
dW1lbnQgfHwgIShpc05vbmUoKSB8fCBpc1N0YXJ0T2ZEb2N1bWVudChWaXNpYmxlUG9zaXRpb24o
c2VsZWN0aW9uKCkuc3RhcnQoKSwgc2VsZWN0aW9uKCkuYWZmaW5pdHkoKSkpKSB8fCAhZG9jdW1l
bnQtPnJlbmRlcmVySXNFZGl0YWJsZSgpKQorICAgICAgICByZXR1cm47CisjZW5kaWYKIAogICAg
IE5vZGUqIG5vZGUgPSBkb2N1bWVudC0+ZG9jdW1lbnRFbGVtZW50KCk7CiAgICAgd2hpbGUgKG5v
ZGUgJiYgIW5vZGUtPmhhc1RhZ05hbWUoYm9keVRhZykpCkBAIC0yMDM3LDYgKzIxMzYsMTAgQEAg
dm9pZCBGcmFtZVNlbGVjdGlvbjo6c2V0U2VsZWN0aW9uRnJvbU5vbmUoKQogCiBib29sIEZyYW1l
U2VsZWN0aW9uOjpzaG91bGRDaGFuZ2VTZWxlY3Rpb24oY29uc3QgVmlzaWJsZVNlbGVjdGlvbiYg
bmV3U2VsZWN0aW9uKSBjb25zdAogeworI2lmIFBMQVRGT1JNKElPUykKKyAgICBpZiAobV9mcmFt
ZS0+c2VsZWN0aW9uQ2hhbmdlQ2FsbGJhY2tzRGlzYWJsZWQoKSkKKyAgICAgICAgcmV0dXJuIHRy
dWU7CisjZW5kaWYKICAgICByZXR1cm4gbV9mcmFtZS0+ZWRpdG9yKCkuc2hvdWxkQ2hhbmdlU2Vs
ZWN0aW9uKHNlbGVjdGlvbigpLCBuZXdTZWxlY3Rpb24sIG5ld1NlbGVjdGlvbi5hZmZpbml0eSgp
LCBmYWxzZSk7CiB9CiAKQEAgLTIwNzIsNiArMjE3NSw0MjkgQEAgdm9pZCBGcmFtZVNlbGVjdGlv
bjo6c2hvd1RyZWVGb3JUaGlzKCkgY29uc3QKIAogI2VuZGlmCiAKKyNpZiBQTEFURk9STShJT1Mp
Cit2b2lkIEZyYW1lU2VsZWN0aW9uOjpleHBhbmRTZWxlY3Rpb25Ub0VsZW1lbnRDb250YWluaW5n
Q2FyZXRTZWxlY3Rpb24oKQoreworICAgIFJlZlB0cjxSYW5nZT4gcmFuZ2UgPSBlbGVtZW50UmFu
Z2VDb250YWluaW5nQ2FyZXRTZWxlY3Rpb24oKTsKKyAgICBpZiAoIXJhbmdlKQorICAgICAgICBy
ZXR1cm47CisgICAgVmlzaWJsZVNlbGVjdGlvbiBzZWxlY3Rpb24ocmFuZ2UuZ2V0KCksIERPV05T
VFJFQU0pOworICAgIHNldFNlbGVjdGlvbihzZWxlY3Rpb24pOworfQorCitQYXNzUmVmUHRyPFJh
bmdlPiBGcmFtZVNlbGVjdGlvbjo6ZWxlbWVudFJhbmdlQ29udGFpbmluZ0NhcmV0U2VsZWN0aW9u
KCkgY29uc3QKK3sKKyAgICBpZiAobV9zZWxlY3Rpb24uaXNOb25lKCkpCisgICAgICAgIHJldHVy
biBudWxscHRyOworCisgICAgVmlzaWJsZVNlbGVjdGlvbiBzZWxlY3Rpb24gPSBtX3NlbGVjdGlv
bjsKKyAgICBpZiAoc2VsZWN0aW9uLmlzTm9uZSgpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsK
KworICAgIFZpc2libGVQb3NpdGlvbiB2aXNpYmxlUG9zKHNlbGVjdGlvbi5zdGFydCgpLCBWUF9E
RUZBVUxUX0FGRklOSVRZKTsKKyAgICBpZiAodmlzaWJsZVBvcy5pc051bGwoKSkKKyAgICAgICAg
cmV0dXJuIG51bGxwdHI7CisKKyAgICBOb2RlKiBub2RlID0gdmlzaWJsZVBvcy5kZWVwRXF1aXZh
bGVudCgpLmRlcHJlY2F0ZWROb2RlKCk7CisgICAgRWxlbWVudCogZWxlbWVudCA9IGRlcHJlY2F0
ZWRFbmNsb3NpbmdCbG9ja0Zsb3dFbGVtZW50KG5vZGUpOworICAgIGlmICghZWxlbWVudCkKKyAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICBQb3NpdGlvbiBzdGFydFBvcyA9IGNyZWF0ZUxl
Z2FjeUVkaXRpbmdQb3NpdGlvbihlbGVtZW50LCAwKTsKKyAgICBQb3NpdGlvbiBlbmRQb3MgPSBj
cmVhdGVMZWdhY3lFZGl0aW5nUG9zaXRpb24oZWxlbWVudCwgZWxlbWVudC0+Y2hpbGROb2RlQ291
bnQoKSk7CisgICAgCisgICAgVmlzaWJsZVBvc2l0aW9uIHN0YXJ0VmlzaWJsZVBvcyhzdGFydFBv
cywgVlBfREVGQVVMVF9BRkZJTklUWSk7CisgICAgVmlzaWJsZVBvc2l0aW9uIGVuZFZpc2libGVQ
b3MoZW5kUG9zLCBWUF9ERUZBVUxUX0FGRklOSVRZKTsKKyAgICBpZiAoc3RhcnRWaXNpYmxlUG9z
LmlzTnVsbCgpIHx8IGVuZFZpc2libGVQb3MuaXNOdWxsKCkpCisgICAgICAgIHJldHVybiBudWxs
cHRyOworCisgICAgc2VsZWN0aW9uLnNldEJhc2Uoc3RhcnRWaXNpYmxlUG9zKTsKKyAgICBzZWxl
Y3Rpb24uc2V0RXh0ZW50KGVuZFZpc2libGVQb3MpOworCisgICAgcmV0dXJuIHNlbGVjdGlvbi50
b05vcm1hbGl6ZWRSYW5nZSgpOworfQorCit2b2lkIEZyYW1lU2VsZWN0aW9uOjpleHBhbmRTZWxl
Y3Rpb25Ub1dvcmRDb250YWluaW5nQ2FyZXRTZWxlY3Rpb24oKQoreworICAgIFZpc2libGVTZWxl
Y3Rpb24gc2VsZWN0aW9uKHdvcmRTZWxlY3Rpb25Db250YWluaW5nQ2FyZXRTZWxlY3Rpb24obV9z
ZWxlY3Rpb24pKTsgICAgICAgIAorICAgIGlmIChzZWxlY3Rpb24uaXNDYXJldE9yUmFuZ2UoKSkK
KyAgICAgICAgc2V0U2VsZWN0aW9uKHNlbGVjdGlvbik7Cit9CisKK1Bhc3NSZWZQdHI8UmFuZ2U+
IEZyYW1lU2VsZWN0aW9uOjp3b3JkUmFuZ2VDb250YWluaW5nQ2FyZXRTZWxlY3Rpb24oKQorewor
ICAgIHJldHVybiB3b3JkU2VsZWN0aW9uQ29udGFpbmluZ0NhcmV0U2VsZWN0aW9uKG1fc2VsZWN0
aW9uKS50b05vcm1hbGl6ZWRSYW5nZSgpOworfQorCit2b2lkIEZyYW1lU2VsZWN0aW9uOjpleHBh
bmRTZWxlY3Rpb25Ub1N0YXJ0T2ZXb3JkQ29udGFpbmluZ0NhcmV0U2VsZWN0aW9uKCkKK3sKKyAg
ICBpZiAobV9zZWxlY3Rpb24uaXNOb25lKCkgfHwgaXNTdGFydE9mRG9jdW1lbnQobV9zZWxlY3Rp
b24uc3RhcnQoKSkpCisgICAgICAgIHJldHVybjsKKworICAgIFZpc2libGVQb3NpdGlvbiBzMSht
X3NlbGVjdGlvbi5zdGFydCgpKTsKKyAgICBWaXNpYmxlUG9zaXRpb24gZTEobV9zZWxlY3Rpb24u
ZW5kKCkpOworCisgICAgVmlzaWJsZVNlbGVjdGlvbiBleHBhbmRlZCh3b3JkU2VsZWN0aW9uQ29u
dGFpbmluZ0NhcmV0U2VsZWN0aW9uKG1fc2VsZWN0aW9uKSk7CisgICAgVmlzaWJsZVBvc2l0aW9u
IHMyKGV4cGFuZGVkLnN0YXJ0KCkpOworCisgICAgLy8gRG9uJ3QgYWxsb3cgdGhlIHN0YXJ0IHRv
IGJlY29tZSBncmVhdGVyIGFmdGVyIHRoZSBleHBhbnNpb24uCisgICAgaWYgKHMyLmlzTnVsbCgp
IHx8IHMyID4gczEpCisgICAgICAgIHMyID0gczE7CisKKyAgICBtb3ZlVG8oczIsIGUxKTsKK30K
KworVUNoYXIgRnJhbWVTZWxlY3Rpb246OmNoYXJhY3RlckluUmVsYXRpb25Ub0NhcmV0U2VsZWN0
aW9uKGludCBhbW91bnQpIGNvbnN0Cit7CisgICAgaWYgKG1fc2VsZWN0aW9uLmlzTm9uZSgpKQor
ICAgICAgICByZXR1cm4gMDsKKworICAgIFZpc2libGVTZWxlY3Rpb24gc2VsZWN0aW9uID0gbV9z
ZWxlY3Rpb247CisgICAgQVNTRVJUKHNlbGVjdGlvbi5pc0NhcmV0T3JSYW5nZSgpKTsKKworICAg
IFZpc2libGVQb3NpdGlvbiB2aXNpYmxlUG9zaXRpb24oc2VsZWN0aW9uLnN0YXJ0KCksIFZQX0RF
RkFVTFRfQUZGSU5JVFkpOworCisgICAgaWYgKGFtb3VudCA8IDApIHsKKyAgICAgICAgaW50IGNv
dW50ID0gYWJzKGFtb3VudCk7CisgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgY291bnQ7IGkr
KykKKyAgICAgICAgICAgIHZpc2libGVQb3NpdGlvbiA9IHZpc2libGVQb3NpdGlvbi5wcmV2aW91
cygpOyAgICAKKyAgICAgICAgcmV0dXJuIHZpc2libGVQb3NpdGlvbi5jaGFyYWN0ZXJCZWZvcmUo
KTsKKyAgICB9CisgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBhbW91bnQ7IGkrKykKKyAgICAgICAg
dmlzaWJsZVBvc2l0aW9uID0gdmlzaWJsZVBvc2l0aW9uLm5leHQoKTsgICAgCisgICAgcmV0dXJu
IHZpc2libGVQb3NpdGlvbi5jaGFyYWN0ZXJBZnRlcigpOworfQorCitVQ2hhciBGcmFtZVNlbGVj
dGlvbjo6Y2hhcmFjdGVyQmVmb3JlQ2FyZXRTZWxlY3Rpb24oKSBjb25zdAoreworICAgIGlmICht
X3NlbGVjdGlvbi5pc05vbmUoKSkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICBWaXNpYmxlU2Vs
ZWN0aW9uIHNlbGVjdGlvbiA9IG1fc2VsZWN0aW9uOworICAgIEFTU0VSVChzZWxlY3Rpb24uaXND
YXJldE9yUmFuZ2UoKSk7CisKKyAgICBWaXNpYmxlUG9zaXRpb24gdmlzaWJsZVBvc2l0aW9uKHNl
bGVjdGlvbi5zdGFydCgpLCBWUF9ERUZBVUxUX0FGRklOSVRZKTsKKyAgICByZXR1cm4gdmlzaWJs
ZVBvc2l0aW9uLmNoYXJhY3RlckJlZm9yZSgpOworfQorCitVQ2hhciBGcmFtZVNlbGVjdGlvbjo6
Y2hhcmFjdGVyQWZ0ZXJDYXJldFNlbGVjdGlvbigpIGNvbnN0Cit7CisgICAgaWYgKG1fc2VsZWN0
aW9uLmlzTm9uZSgpKQorICAgICAgICByZXR1cm4gMDsKKworICAgIFZpc2libGVTZWxlY3Rpb24g
c2VsZWN0aW9uID0gbV9zZWxlY3Rpb247CisgICAgQVNTRVJUKHNlbGVjdGlvbi5pc0NhcmV0T3JS
YW5nZSgpKTsKKworICAgIFZpc2libGVQb3NpdGlvbiB2aXNpYmxlUG9zaXRpb24oc2VsZWN0aW9u
LmVuZCgpLCBWUF9ERUZBVUxUX0FGRklOSVRZKTsKKyAgICByZXR1cm4gdmlzaWJsZVBvc2l0aW9u
LmNoYXJhY3RlckFmdGVyKCk7Cit9CisKK2ludCBGcmFtZVNlbGVjdGlvbjo6d29yZE9mZnNldElu
UmFuZ2UoY29uc3QgUmFuZ2UgKnJhbmdlKSBjb25zdAoreworICAgIGlmICghcmFuZ2UpCisgICAg
ICAgIHJldHVybiAtMTsKKworICAgIFZpc2libGVTZWxlY3Rpb24gc2VsZWN0aW9uID0gbV9zZWxl
Y3Rpb247CisgICAgaWYgKCFzZWxlY3Rpb24uaXNDYXJldCgpKQorICAgICAgICByZXR1cm4gLTE7
CisKKyAgICAvLyBGSVhNRTogVGhpcyB3aWxsIG9ubHkgd29yayBpbiBjYXNlcyB3aGVyZSB0aGUg
c2VsZWN0aW9uIHJlbWFpbnMgaW4KKyAgICAvLyB0aGUgc2FtZSBub2RlIGFmdGVyIGl0IGlzIGV4
cGFuZGVkLiBJbXByb3ZlIHRvIGhhbmRsZSBtb3JlIGNvbXBsaWNhdGVkCisgICAgLy8gY2FzZXMu
CisgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CisgICAgaW50IHJlc3VsdCA9IHNlbGVjdGlvbi5z
dGFydCgpLmRlcHJlY2F0ZWRFZGl0aW5nT2Zmc2V0KCkgLSByYW5nZS0+c3RhcnRPZmZzZXQoZWMp
OworICAgIEFTU0VSVCghZWMpOworICAgIGlmIChyZXN1bHQgPCAwKQorICAgICAgICByZXN1bHQg
PSAwOworICAgIHJldHVybiByZXN1bHQ7Cit9CisKK2Jvb2wgRnJhbWVTZWxlY3Rpb246OnNwYWNl
Rm9sbG93c1dvcmRJblJhbmdlKGNvbnN0IFJhbmdlICpyYW5nZSkgY29uc3QKK3sKKyAgICBpZiAo
IXJhbmdlKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7
CisgICAgTm9kZSogbm9kZSA9IHJhbmdlLT5lbmRDb250YWluZXIoZWMpOworICAgIEFTU0VSVCgh
ZWMpOworICAgIGludCBlbmRPZmZzZXQgPSByYW5nZS0+ZW5kT2Zmc2V0KGVjKTsKKyAgICBBU1NF
UlQoIWVjKTsKKyAgICBWaXNpYmxlUG9zaXRpb24gcG9zKGNyZWF0ZUxlZ2FjeUVkaXRpbmdQb3Np
dGlvbihub2RlLCBlbmRPZmZzZXQpLCBWUF9ERUZBVUxUX0FGRklOSVRZKTsKKyAgICByZXR1cm4g
aXNTcGFjZU9yTmV3bGluZShwb3MuY2hhcmFjdGVyQWZ0ZXIoKSk7Cit9CisKK2Jvb2wgRnJhbWVT
ZWxlY3Rpb246OnNlbGVjdGlvbkF0RG9jdW1lbnRTdGFydCgpIGNvbnN0Cit7CisgICAgVmlzaWJs
ZVNlbGVjdGlvbiBzZWxlY3Rpb24gPSBtX3NlbGVjdGlvbjsKKyAgICBpZiAoc2VsZWN0aW9uLmlz
Tm9uZSgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBQb3NpdGlvbiBzdGFydFBvcyhz
ZWxlY3Rpb24uc3RhcnQoKSk7CisgICAgVmlzaWJsZVBvc2l0aW9uIHBvcyhjcmVhdGVMZWdhY3lF
ZGl0aW5nUG9zaXRpb24oc3RhcnRQb3MuZGVwcmVjYXRlZE5vZGUoKSwgc3RhcnRQb3MuZGVwcmVj
YXRlZEVkaXRpbmdPZmZzZXQoKSksIFZQX0RFRkFVTFRfQUZGSU5JVFkpOworICAgIGlmIChwb3Mu
aXNOdWxsKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIHJldHVybiBpc1N0YXJ0T2ZE
b2N1bWVudChwb3MpOworfQorCitib29sIEZyYW1lU2VsZWN0aW9uOjpzZWxlY3Rpb25BdFNlbnRl
bmNlU3RhcnQoKSBjb25zdAoreworICAgIFZpc2libGVTZWxlY3Rpb24gc2VsZWN0aW9uID0gbV9z
ZWxlY3Rpb247CisgICAgaWYgKHNlbGVjdGlvbi5pc05vbmUoKSkKKyAgICAgICAgcmV0dXJuIGZh
bHNlOworCisgICAgcmV0dXJuIGFjdHVhbFNlbGVjdGlvbkF0U2VudGVuY2VTdGFydChzZWxlY3Rp
b24pOworfQorCitib29sIEZyYW1lU2VsZWN0aW9uOjpzZWxlY3Rpb25BdFdvcmRTdGFydCgpIGNv
bnN0Cit7CisgICAgVmlzaWJsZVNlbGVjdGlvbiBzZWxlY3Rpb24gPSBtX3NlbGVjdGlvbjsKKyAg
ICBpZiAoc2VsZWN0aW9uLmlzTm9uZSgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBQ
b3NpdGlvbiBzdGFydFBvcyhzZWxlY3Rpb24uc3RhcnQoKSk7CisgICAgVmlzaWJsZVBvc2l0aW9u
IHBvcyhjcmVhdGVMZWdhY3lFZGl0aW5nUG9zaXRpb24oc3RhcnRQb3MuZGVwcmVjYXRlZE5vZGUo
KSwgc3RhcnRQb3MuZGVwcmVjYXRlZEVkaXRpbmdPZmZzZXQoKSksIFZQX0RFRkFVTFRfQUZGSU5J
VFkpOworICAgIGlmIChwb3MuaXNOdWxsKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAg
IGlmIChpc1N0YXJ0T2ZQYXJhZ3JhcGgocG9zKSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAg
ICAgIAorICAgIGJvb2wgcmVzdWx0ID0gdHJ1ZTsKKyAgICB1bnNpZ25lZCBwcmV2aW91c0NvdW50
ID0gMDsKKyAgICBmb3IgKHBvcyA9IHBvcy5wcmV2aW91cygpOyAhcG9zLmlzTnVsbCgpOyBwb3Mg
PSBwb3MucHJldmlvdXMoKSkgeworICAgICAgICBwcmV2aW91c0NvdW50Kys7CisgICAgICAgIGlm
IChpc1N0YXJ0T2ZQYXJhZ3JhcGgocG9zKSkgeworICAgICAgICAgICAgaWYgKHByZXZpb3VzQ291
bnQgPT0gMSkKKyAgICAgICAgICAgICAgICByZXN1bHQgPSBmYWxzZTsKKyAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICB9CisgICAgICAgIFVDaGFyIGMocG9zLmNoYXJhY3RlckFmdGVyKCkpOwor
ICAgICAgICBpZiAoYykgeworICAgICAgICAgICAgcmVzdWx0ID0gaXNTcGFjZU9yTmV3bGluZShj
KSB8fCBjID09IDB4QTAgfHwgKHVfaXNwdW5jdChjKSAmJiBjICE9ICcsJyAmJiBjICE9ICctJyAm
JiBjICE9ICdcJycpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICB9CisKKyAg
ICByZXR1cm4gcmVzdWx0OworfQorCitQYXNzUmVmUHRyPFJhbmdlPiBGcmFtZVNlbGVjdGlvbjo6
cmFuZ2VCeU1vdmluZ0N1cnJlbnRTZWxlY3Rpb24oaW50IGFtb3VudCkgY29uc3QKK3sKKyAgICBy
ZXR1cm4gcmFuZ2VCeUFsdGVyaW5nQ3VycmVudFNlbGVjdGlvbihBbHRlcmF0aW9uTW92ZSwgYW1v
dW50KTsKK30KKworUGFzc1JlZlB0cjxSYW5nZT4gRnJhbWVTZWxlY3Rpb246OnJhbmdlQnlFeHRl
bmRpbmdDdXJyZW50U2VsZWN0aW9uKGludCBhbW91bnQpIGNvbnN0Cit7CisgICAgcmV0dXJuIHJh
bmdlQnlBbHRlcmluZ0N1cnJlbnRTZWxlY3Rpb24oQWx0ZXJhdGlvbkV4dGVuZCwgYW1vdW50KTsK
K30KKwordm9pZCBGcmFtZVNlbGVjdGlvbjo6c2VsZWN0UmFuZ2VPbkVsZW1lbnQodW5zaWduZWQg
bG9jYXRpb24sIHVuc2lnbmVkIGxlbmd0aCwgTm9kZSogbm9kZSkKK3sKKyAgICBSZWZQdHI8UmFu
Z2U+IHJlc3VsdFJhbmdlID0gbV9mcmFtZS0+ZG9jdW1lbnQoKS0+Y3JlYXRlUmFuZ2UoKTsKKyAg
ICBFeGNlcHRpb25Db2RlIGVjID0gMDsKKyAgICByZXN1bHRSYW5nZS0+c2V0U3RhcnQobm9kZSwg
bG9jYXRpb24sIGVjKTsKKyAgICBBU1NFUlQoIWVjKTsKKyAgICByZXN1bHRSYW5nZS0+c2V0RW5k
KG5vZGUsIGxvY2F0aW9uICsgbGVuZ3RoLCBlYyk7CisgICAgQVNTRVJUKCFlYyk7CisgICAgVmlz
aWJsZVNlbGVjdGlvbiBzZWxlY3Rpb24gPSBWaXNpYmxlU2VsZWN0aW9uKHJlc3VsdFJhbmdlLmdl
dCgpLCBTRUxfREVGQVVMVF9BRkZJTklUWSk7CisgICAgc2V0U2VsZWN0aW9uKHNlbGVjdGlvbiwg
dHJ1ZSk7Cit9CisKK1Zpc2libGVTZWxlY3Rpb24gRnJhbWVTZWxlY3Rpb246OndvcmRTZWxlY3Rp
b25Db250YWluaW5nQ2FyZXRTZWxlY3Rpb24oY29uc3QgVmlzaWJsZVNlbGVjdGlvbiYgc2VsZWN0
aW9uKQoreworICAgIGlmIChzZWxlY3Rpb24uaXNOb25lKCkpCisgICAgICAgIHJldHVybiBWaXNp
YmxlU2VsZWN0aW9uKCk7CisKKyAgICBBU1NFUlQoc2VsZWN0aW9uLmlzQ2FyZXRPclJhbmdlKCkp
OworICAgIEZyYW1lU2VsZWN0aW9uIGZyYW1lU2VsZWN0aW9uOworICAgIGZyYW1lU2VsZWN0aW9u
LnNldFNlbGVjdGlvbihzZWxlY3Rpb24pOworCisgICAgUG9zaXRpb24gc3RhcnRQb3NCZWZvcmVF
eHBhbnNpb24oc2VsZWN0aW9uLnN0YXJ0KCkpOworICAgIFBvc2l0aW9uIGVuZFBvc0JlZm9yZUV4
cGFuc2lvbihzZWxlY3Rpb24uZW5kKCkpOworICAgIFZpc2libGVQb3NpdGlvbiBzdGFydFZpc2li
bGVQb3NCZWZvcmVFeHBhbnNpb24oc3RhcnRQb3NCZWZvcmVFeHBhbnNpb24sIFZQX0RFRkFVTFRf
QUZGSU5JVFkpOworICAgIFZpc2libGVQb3NpdGlvbiBlbmRWaXNpYmxlUG9zQmVmb3JlRXhwYW5z
aW9uKGVuZFBvc0JlZm9yZUV4cGFuc2lvbiwgVlBfREVGQVVMVF9BRkZJTklUWSk7CisgICAgaWYg
KGVuZFZpc2libGVQb3NCZWZvcmVFeHBhbnNpb24uaXNOdWxsKCkpCisgICAgICAgIHJldHVybiBW
aXNpYmxlU2VsZWN0aW9uKCk7CisKKyAgICBpZiAoaXNFbmRPZlBhcmFncmFwaChlbmRWaXNpYmxl
UG9zQmVmb3JlRXhwYW5zaW9uKSkgeworICAgICAgICBVQ2hhciBjKGVuZFZpc2libGVQb3NCZWZv
cmVFeHBhbnNpb24uY2hhcmFjdGVyQmVmb3JlKCkpOworICAgICAgICBpZiAoaXNTcGFjZU9yTmV3
bGluZShjKSB8fCBjID09IDB4QTApIHsKKyAgICAgICAgICAgIC8vIEVuZCBvZiBwYXJhZ3JhcGgg
d2l0aCBzcGFjZS4KKyAgICAgICAgICAgIHJldHVybiBWaXNpYmxlU2VsZWN0aW9uKCk7CisgICAg
ICAgIH0KKyAgICB9CisKKyAgICAvLyBJZiBhdCBlbmQgb2YgcGFyYWdyYXBoLCBtb3ZlIGJhY2t3
YXJkcyBvbmUgY2hhcmFjdGVyLgorICAgIC8vIFRoaXMgaGFzIHRoZSBlZmZlY3Qgb2Ygc2VsZWN0
aW5nIHRoZSB3b3JkIG9uIHRoZSBsaW5lICh3aGljaCBpcworICAgIC8vIHdoYXQgd2Ugd2FudCwg
cmF0aGVyIHRoYW4gc2VsZWN0aW5nIHBhc3QgdGhlIGVuZCBvZiB0aGUgbGluZSkuCisgICAgaWYg
KGlzRW5kT2ZQYXJhZ3JhcGgoZW5kVmlzaWJsZVBvc0JlZm9yZUV4cGFuc2lvbikgJiYgIWlzU3Rh
cnRPZlBhcmFncmFwaChlbmRWaXNpYmxlUG9zQmVmb3JlRXhwYW5zaW9uKSkKKyAgICAgICAgZnJh
bWVTZWxlY3Rpb24ubW9kaWZ5KEZyYW1lU2VsZWN0aW9uOjpBbHRlcmF0aW9uTW92ZSwgRGlyZWN0
aW9uQmFja3dhcmQsIENoYXJhY3RlckdyYW51bGFyaXR5KTsKKworICAgIFZpc2libGVTZWxlY3Rp
b24gbmV3U2VsZWN0aW9uID0gZnJhbWVTZWxlY3Rpb24uc2VsZWN0aW9uKCk7CisgICAgbmV3U2Vs
ZWN0aW9uLmV4cGFuZFVzaW5nR3JhbnVsYXJpdHkoV29yZEdyYW51bGFyaXR5KTsKKyAgICBmcmFt
ZVNlbGVjdGlvbi5zZXRTZWxlY3Rpb24obmV3U2VsZWN0aW9uLCBmcmFtZVNlbGVjdGlvbi5ncmFu
dWxhcml0eSgpKTsKKworICAgIFBvc2l0aW9uIHN0YXJ0UG9zKGZyYW1lU2VsZWN0aW9uLnNlbGVj
dGlvbigpLnN0YXJ0KCkpOworICAgIFBvc2l0aW9uIGVuZFBvcyhmcmFtZVNlbGVjdGlvbi5zZWxl
Y3Rpb24oKS5lbmQoKSk7CisKKyAgICAvLyBFeHBhbnNpb24gY2Fubm90IGJlIGFsbG93ZWQgdG8g
Y2hhbmdlIHNlbGVjdGlvbiBzbyB0aGF0IGl0IGlzIG5vIGxvbmdlcgorICAgIC8vIHRvdWNoZXMg
KG9yIGNvbnRhaW5zKSB0aGUgb3JpZ2luYWwsIHVuZXhwYW5kZWQgc2VsZWN0aW9uLgorICAgIC8v
IEVuZm9yY2UgdGhpcyBvbiB0aGUgd2F5IGludG8gdGhlc2UgYWRkaXRpb25hbCBjYWxjdWxhdGlv
bnMgdG8gZ2l2ZSB0aGVtCisgICAgLy8gdGhlIGJlc3QgY2hhbmNlIHRvIHlpZWxkIGEgc3VpdGFi
bGUgYW5zd2VyLgorICAgIGlmIChzdGFydFBvcyA+IHN0YXJ0UG9zQmVmb3JlRXhwYW5zaW9uKQor
ICAgICAgICBzdGFydFBvcyA9IHN0YXJ0UG9zQmVmb3JlRXhwYW5zaW9uOworICAgIGlmIChlbmRQ
b3MgPCBlbmRQb3NCZWZvcmVFeHBhbnNpb24pCisgICAgICAgIGVuZFBvcyA9IGVuZFBvc0JlZm9y
ZUV4cGFuc2lvbjsKKworICAgIFZpc2libGVQb3NpdGlvbiBzdGFydFZpc2libGVQb3Moc3RhcnRQ
b3MsIFZQX0RFRkFVTFRfQUZGSU5JVFkpOworICAgIFZpc2libGVQb3NpdGlvbiBlbmRWaXNpYmxl
UG9zKGVuZFBvcywgVlBfREVGQVVMVF9BRkZJTklUWSk7CisKKyAgICBpZiAoc3RhcnRWaXNpYmxl
UG9zLmlzTnVsbCgpIHx8IGVuZFZpc2libGVQb3MuaXNOdWxsKCkpIHsKKyAgICAgICAgLy8gU3Rh
cnQgb3IgZW5kIGlzIG5pbAorICAgICAgICByZXR1cm4gVmlzaWJsZVNlbGVjdGlvbigpOworICAg
IH0KKworICAgIGlmIChpc0VuZE9mTGluZShlbmRWaXNpYmxlUG9zQmVmb3JlRXhwYW5zaW9uKSkg
eworICAgICAgICBWaXNpYmxlUG9zaXRpb24gcHJldmlvdXMoZW5kVmlzaWJsZVBvcy5wcmV2aW91
cygpKTsKKyAgICAgICAgaWYgKHByZXZpb3VzID09IGVuZFZpc2libGVQb3MpIHsKKyAgICAgICAg
ICAgIC8vIEVtcHR5IGRvY3VtZW50CisgICAgICAgICAgICByZXR1cm4gVmlzaWJsZVNlbGVjdGlv
bigpOworICAgICAgICB9CisgICAgICAgIFVDaGFyIGMocHJldmlvdXMuY2hhcmFjdGVyQWZ0ZXIo
KSk7CisgICAgICAgIGlmIChpc1NwYWNlT3JOZXdsaW5lKGMpIHx8IGMgPT0gMHhBMCkgeworICAg
ICAgICAgICAgLy8gU3BhY2UgYXQgZW5kIG9mIGxpbmUKKyAgICAgICAgICAgIHJldHVybiBWaXNp
YmxlU2VsZWN0aW9uKCk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvLyBFeHBhbnNpb24gaGFz
IHNlbGVjdGVkIHBhc3QgZW5kIG9mIGxpbmUuCisgICAgLy8gVHJ5IHJlcG9zaXRpb25pbmcgYmFj
a3dhcmRzLgorICAgIGlmIChpc0VuZE9mTGluZShzdGFydFZpc2libGVQb3MpICYmIGlzU3RhcnRP
ZkxpbmUoZW5kVmlzaWJsZVBvcykpIHsKKyAgICAgICAgVmlzaWJsZVBvc2l0aW9uIHByZXZpb3Vz
KHN0YXJ0VmlzaWJsZVBvcy5wcmV2aW91cygpKTsKKyAgICAgICAgaWYgKGlzRW5kT2ZMaW5lKHBy
ZXZpb3VzKSkgeworICAgICAgICAgICAgLy8gT24gZW1wdHkgbGluZQorICAgICAgICAgICAgcmV0
dXJuIFZpc2libGVTZWxlY3Rpb24oKTsKKyAgICAgICAgfQorICAgICAgICBVQ2hhciBjKHByZXZp
b3VzLmNoYXJhY3RlckFmdGVyKCkpOworICAgICAgICBpZiAoaXNTcGFjZU9yTmV3bGluZShjKSB8
fCBjID09IDB4QTApIHsKKyAgICAgICAgICAgIC8vIFNwYWNlIGF0IGVuZCBvZiBsaW5lCisgICAg
ICAgICAgICByZXR1cm4gVmlzaWJsZVNlbGVjdGlvbigpOworICAgICAgICB9CisgICAgICAgIGZy
YW1lU2VsZWN0aW9uLm1vdmVUbyhzdGFydFZpc2libGVQb3MpOworICAgICAgICBmcmFtZVNlbGVj
dGlvbi5tb2RpZnkoRnJhbWVTZWxlY3Rpb246OkFsdGVyYXRpb25FeHRlbmQsIERpcmVjdGlvbkJh
Y2t3YXJkLCBXb3JkR3JhbnVsYXJpdHkpOworICAgICAgICBzdGFydFBvcyA9IGZyYW1lU2VsZWN0
aW9uLnNlbGVjdGlvbigpLnN0YXJ0KCk7CisgICAgICAgIGVuZFBvcyA9IGZyYW1lU2VsZWN0aW9u
LnNlbGVjdGlvbigpLmVuZCgpOworICAgICAgICBzdGFydFZpc2libGVQb3MgPSBWaXNpYmxlUG9z
aXRpb24oc3RhcnRQb3MsIFZQX0RFRkFVTFRfQUZGSU5JVFkpOworICAgICAgICBlbmRWaXNpYmxl
UG9zID0gVmlzaWJsZVBvc2l0aW9uKGVuZFBvcywgVlBfREVGQVVMVF9BRkZJTklUWSk7CisgICAg
ICAgIGlmIChzdGFydFZpc2libGVQb3MuaXNOdWxsKCkgfHwgZW5kVmlzaWJsZVBvcy5pc051bGwo
KSkgeworICAgICAgICAgICAgLy8gU3RhcnQgb3IgZW5kIGlzIG5pbAorICAgICAgICAgICAgcmV0
dXJuIFZpc2libGVTZWxlY3Rpb24oKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIC8vIE5vdyBs
b29wIGJhY2t3YXJkcyB1bnRpbCB3ZSBmaW5kIGEgbm9uLXNwYWNlLgorICAgIHdoaWxlIChlbmRW
aXNpYmxlUG9zICE9IHN0YXJ0VmlzaWJsZVBvcykgeworICAgICAgICBWaXNpYmxlUG9zaXRpb24g
cHJldmlvdXMoZW5kVmlzaWJsZVBvcy5wcmV2aW91cygpKTsKKyAgICAgICAgVUNoYXIgYyhwcmV2
aW91cy5jaGFyYWN0ZXJBZnRlcigpKTsKKyAgICAgICAgaWYgKCFpc1NwYWNlT3JOZXdsaW5lKGMp
ICYmIGMgIT0gMHhBMCkKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBlbmRWaXNpYmxlUG9z
ID0gcHJldmlvdXM7CisgICAgfQorCisgICAgLy8gRXhwYW5zaW9uIGNhbm5vdCBiZSBhbGxvd2Vk
IHRvIGNoYW5nZSBzZWxlY3Rpb24gc28gdGhhdCBpdCBpcyBubyBsb25nZXIKKyAgICAvLyB0b3Vj
aGVzIChvciBjb250YWlucykgdGhlIG9yaWdpbmFsLCB1bmV4cGFuZGVkIHNlbGVjdGlvbi4KKyAg
ICAvLyBFbmZvcmNlIHRoaXMgb24gdGhlIHdheSBvdXQgb2YgdGhlIGZ1bmN0aW9uIHRvIHByZXNl
cnZlIHRoZSBpbnZhcmlhbnQuCisgICAgaWYgKHN0YXJ0VmlzaWJsZVBvcyA+IHN0YXJ0VmlzaWJs
ZVBvc0JlZm9yZUV4cGFuc2lvbikKKyAgICAgICAgc3RhcnRWaXNpYmxlUG9zID0gc3RhcnRWaXNp
YmxlUG9zQmVmb3JlRXhwYW5zaW9uOworICAgIGlmIChlbmRWaXNpYmxlUG9zIDwgZW5kVmlzaWJs
ZVBvc0JlZm9yZUV4cGFuc2lvbikKKyAgICAgICAgZW5kVmlzaWJsZVBvcyA9IGVuZFZpc2libGVQ
b3NCZWZvcmVFeHBhbnNpb247CisKKyAgICByZXR1cm4gVmlzaWJsZVNlbGVjdGlvbihzdGFydFZp
c2libGVQb3MsIGVuZFZpc2libGVQb3MpOyAgICAKK30KKworYm9vbCBGcmFtZVNlbGVjdGlvbjo6
YWN0dWFsU2VsZWN0aW9uQXRTZW50ZW5jZVN0YXJ0KGNvbnN0IFZpc2libGVTZWxlY3Rpb24mIHNl
bCkgY29uc3QKK3sKKyAgICBQb3NpdGlvbiBzdGFydFBvcyhzZWwuc3RhcnQoKSk7CisgICAgVmlz
aWJsZVBvc2l0aW9uIHBvcyhjcmVhdGVMZWdhY3lFZGl0aW5nUG9zaXRpb24oc3RhcnRQb3MuZGVw
cmVjYXRlZE5vZGUoKSwgc3RhcnRQb3MuZGVwcmVjYXRlZEVkaXRpbmdPZmZzZXQoKSksIFZQX0RF
RkFVTFRfQUZGSU5JVFkpOworICAgIGlmIChwb3MuaXNOdWxsKCkpCisgICAgICAgIHJldHVybiBm
YWxzZTsKKworICAgIGlmIChpc1N0YXJ0T2ZQYXJhZ3JhcGgocG9zKSkKKyAgICAgICAgcmV0dXJu
IHRydWU7CisgCisgICAgYm9vbCByZXN1bHQgPSB0cnVlOworICAgIGJvb2wgc2F3U3BhY2UgPSBm
YWxzZTsKKyAgICB1bnNpZ25lZCBwcmV2aW91c0NvdW50ID0gMDsKKyAgICBmb3IgKHBvcyA9IHBv
cy5wcmV2aW91cygpOyAhcG9zLmlzTnVsbCgpOyBwb3MgPSBwb3MucHJldmlvdXMoKSkgeworICAg
ICAgICBwcmV2aW91c0NvdW50Kys7CisgICAgICAgIGlmIChpc1N0YXJ0T2ZQYXJhZ3JhcGgocG9z
KSkgeworICAgICAgICAgICAgaWYgKHByZXZpb3VzQ291bnQgPT0gMSB8fCAocHJldmlvdXNDb3Vu
dCA9PSAyICYmIHNhd1NwYWNlKSkKKyAgICAgICAgICAgICAgICByZXN1bHQgPSBmYWxzZTsKKyAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIFVDaGFyIGMocG9zLmNoYXJhY3Rl
ckFmdGVyKCkpOworICAgICAgICBpZiAoYykgeworICAgICAgICAgICAgaWYgKGlzU3BhY2VPck5l
d2xpbmUoYykgfHwgYyA9PSAweEEwKSB7CisgICAgICAgICAgICAgICAgc2F3U3BhY2UgPSB0cnVl
OworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgcmVz
dWx0ID0gKGMgPT0gJy4nIHx8IGMgPT0gJyEnIHx8IGMgPT0gJz8nKTsKKyAgICAgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKyAgICAKKyAgICByZXR1
cm4gcmVzdWx0OworfQorCitQYXNzUmVmUHRyPFJhbmdlPiBGcmFtZVNlbGVjdGlvbjo6cmFuZ2VC
eUFsdGVyaW5nQ3VycmVudFNlbGVjdGlvbihFQWx0ZXJhdGlvbiBhbHRlcmF0aW9uLCBpbnQgYW1v
dW50KSBjb25zdAoreworICAgIGlmIChtX3NlbGVjdGlvbi5pc05vbmUoKSkKKyAgICAgICAgcmV0
dXJuIG51bGxwdHI7CisKKyAgICBpZiAoIWFtb3VudCkKKyAgICAgICAgcmV0dXJuIHRvTm9ybWFs
aXplZFJhbmdlKCk7CisKKyAgICBGcmFtZVNlbGVjdGlvbiBmcmFtZVNlbGVjdGlvbjsKKyAgICBm
cmFtZVNlbGVjdGlvbi5zZXRTZWxlY3Rpb24obV9zZWxlY3Rpb24pOworICAgIFNlbGVjdGlvbkRp
cmVjdGlvbiBkaXJlY3Rpb24gPSBhbW91bnQgPiAwID8gRGlyZWN0aW9uRm9yd2FyZCA6IERpcmVj
dGlvbkJhY2t3YXJkOworICAgIGZvciAoaW50IGkgPSAwOyBpIDwgYWJzKGFtb3VudCk7IGkrKykK
KyAgICAgICAgZnJhbWVTZWxlY3Rpb24ubW9kaWZ5KGFsdGVyYXRpb24sIGRpcmVjdGlvbiwgQ2hh
cmFjdGVyR3JhbnVsYXJpdHkpOworICAgIHJldHVybiBmcmFtZVNlbGVjdGlvbi50b05vcm1hbGl6
ZWRSYW5nZSgpOworfQorCit2b2lkIEZyYW1lU2VsZWN0aW9uOjpjbGVhckN1cnJlbnRTZWxlY3Rp
b24oKQoreworICAgIHNldFNlbGVjdGlvbihWaXNpYmxlU2VsZWN0aW9uKCkpOworfQorCit2b2lk
IEZyYW1lU2VsZWN0aW9uOjpzZXRDYXJldEJsaW5rcyhib29sIGNhcmV0QmxpbmtzKQoreworICAg
IGlmIChtX2NhcmV0QmxpbmtzID09IGNhcmV0QmxpbmtzKQorICAgICAgICByZXR1cm47CisjaWYg
RU5BQkxFKFRFWFRfQ0FSRVQpCisgICAgbV9mcmFtZS0+ZG9jdW1lbnQoKS0+dXBkYXRlTGF5b3V0
SWdub3JlUGVuZGluZ1N0eWxlc2hlZXRzKCk7IAorICAgIGlmIChtX2NhcmV0UGFpbnQpIHsKKyAg
ICAgICAgbV9jYXJldFBhaW50ID0gZmFsc2U7IAorICAgICAgICBpbnZhbGlkYXRlQ2FyZXRSZWN0
KCk7IAorICAgIH0KKyNlbmRpZgorICAgIGlmIChjYXJldEJsaW5rcykKKyAgICAgICAgc2V0Rm9j
dXNlZEVsZW1lbnRJZk5lZWRlZCgpOworICAgIG1fY2FyZXRCbGlua3MgPSBjYXJldEJsaW5rczsK
KyAgICB1cGRhdGVBcHBlYXJhbmNlKCk7Cit9CisKK3ZvaWQgRnJhbWVTZWxlY3Rpb246OnNldENh
cmV0Q29sb3IoY29uc3QgQ29sb3ImIGNhcmV0Q29sb3IpCit7CisgICAgaWYgKG1fY2FyZXRDb2xv
ciAhPSBjYXJldENvbG9yKSB7CisgICAgICAgIG1fY2FyZXRDb2xvciA9IGNhcmV0Q29sb3I7Cisg
ICAgICAgIGlmIChjYXJldElzVmlzaWJsZSgpICYmIG1fY2FyZXRCbGlua3MgJiYgaXNDYXJldCgp
KQorICAgICAgICAgICAgaW52YWxpZGF0ZUNhcmV0UmVjdCgpOworICAgIH0KK30KKyNlbmRpZiAv
LyBQTEFURk9STShJT1MpCisKIH0KIAogI2lmbmRlZiBOREVCVUcKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvRnJhbWVTZWxlY3Rpb24uaCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvRnJhbWVTZWxlY3Rpb24uaAppbmRleCBlODgwNWMxMDgxNzZjYWVmNWU5YThkMTE1ZGNmZWYz
MmRiNTVlN2VjLi5lYTdkOTAyZDcxNWM5M2JlYWQwMzk3OTk1MzUzNDc2Yzc1NzM0N2E1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0ZyYW1lU2VsZWN0aW9uLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvZWRpdGluZy9GcmFtZVNlbGVjdGlvbi5oCkBAIC0zNSw2ICszNSwxMCBAQAog
I2luY2x1ZGUgIlZpc2libGVTZWxlY3Rpb24uaCIKICNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUu
aD4KIAorI2lmIFBMQVRGT1JNKElPUykKKyNpbmNsdWRlICJDb2xvci5oIgorI2VuZGlmCisKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQ2hhcmFjdGVyRGF0YTsKQEAgLTIyOCw2ICsyMzIs
NDMgQEAgcHVibGljOgogICAgIHZvaWQgc2hvd1RyZWVGb3JUaGlzKCkgY29uc3Q7CiAjZW5kaWYK
IAorI2lmIFBMQVRGT1JNKElPUykKK3B1YmxpYzoKKyAgICB2b2lkIGV4cGFuZFNlbGVjdGlvblRv
RWxlbWVudENvbnRhaW5pbmdDYXJldFNlbGVjdGlvbigpOworICAgIFBhc3NSZWZQdHI8UmFuZ2U+
IGVsZW1lbnRSYW5nZUNvbnRhaW5pbmdDYXJldFNlbGVjdGlvbigpIGNvbnN0OworICAgIHZvaWQg
ZXhwYW5kU2VsZWN0aW9uVG9Xb3JkQ29udGFpbmluZ0NhcmV0U2VsZWN0aW9uKCk7CisgICAgUGFz
c1JlZlB0cjxSYW5nZT4gd29yZFJhbmdlQ29udGFpbmluZ0NhcmV0U2VsZWN0aW9uKCk7CisgICAg
dm9pZCBleHBhbmRTZWxlY3Rpb25Ub1N0YXJ0T2ZXb3JkQ29udGFpbmluZ0NhcmV0U2VsZWN0aW9u
KCk7CisgICAgVUNoYXIgY2hhcmFjdGVySW5SZWxhdGlvblRvQ2FyZXRTZWxlY3Rpb24oaW50IGFt
b3VudCkgY29uc3Q7CisgICAgVUNoYXIgY2hhcmFjdGVyQmVmb3JlQ2FyZXRTZWxlY3Rpb24oKSBj
b25zdDsKKyAgICBVQ2hhciBjaGFyYWN0ZXJBZnRlckNhcmV0U2VsZWN0aW9uKCkgY29uc3Q7Cisg
ICAgaW50IHdvcmRPZmZzZXRJblJhbmdlKGNvbnN0IFJhbmdlKikgY29uc3Q7CisgICAgYm9vbCBz
cGFjZUZvbGxvd3NXb3JkSW5SYW5nZShjb25zdCBSYW5nZSopIGNvbnN0OworICAgIGJvb2wgc2Vs
ZWN0aW9uQXREb2N1bWVudFN0YXJ0KCkgY29uc3Q7CisgICAgYm9vbCBzZWxlY3Rpb25BdFNlbnRl
bmNlU3RhcnQoKSBjb25zdDsKKyAgICBib29sIHNlbGVjdGlvbkF0V29yZFN0YXJ0KCkgY29uc3Q7
CisgICAgUGFzc1JlZlB0cjxSYW5nZT4gcmFuZ2VCeU1vdmluZ0N1cnJlbnRTZWxlY3Rpb24oaW50
IGFtb3VudCkgY29uc3Q7CisgICAgUGFzc1JlZlB0cjxSYW5nZT4gcmFuZ2VCeUV4dGVuZGluZ0N1
cnJlbnRTZWxlY3Rpb24oaW50IGFtb3VudCkgY29uc3Q7CisgICAgdm9pZCBzZWxlY3RSYW5nZU9u
RWxlbWVudCh1bnNpZ25lZCBsb2NhdGlvbiwgdW5zaWduZWQgbGVuZ3RoLCBOb2RlKik7CisgICAg
dm9pZCBzdXBwcmVzc0Nsb3NlVHlwaW5nKCkgeyArK21fY2xvc2VUeXBpbmdTdXBwcmVzc2lvbnM7
IH0KKyAgICB2b2lkIHJlc3RvcmVDbG9zZVR5cGluZygpIHsgLS1tX2Nsb3NlVHlwaW5nU3VwcHJl
c3Npb25zOyB9CisgICAgdm9pZCBjbGVhckN1cnJlbnRTZWxlY3Rpb24oKTsKKyAgICB2b2lkIHNl
dENhcmV0QmxpbmtzKGJvb2wgY2FyZXRCbGlua3MgPSB0cnVlKTsKKyAgICB2b2lkIHNldENhcmV0
Q29sb3IoY29uc3QgQ29sb3ImKTsKKyAgICBzdGF0aWMgVmlzaWJsZVNlbGVjdGlvbiB3b3JkU2Vs
ZWN0aW9uQ29udGFpbmluZ0NhcmV0U2VsZWN0aW9uKGNvbnN0IFZpc2libGVTZWxlY3Rpb24mKTsK
KyAgICB2b2lkIHNldFVwZGF0ZUFwcGVhcmFuY2VFbmFibGVkKGJvb2wgZW5hYmxlZCkgeyBtX3Vw
ZGF0ZUFwcGVhcmFuY2VFbmFibGVkID0gZW5hYmxlZDsgfQorICAgIHZvaWQgc3VwcHJlc3NTY3Jv
bGxpbmcoKSB7ICsrbV9zY3JvbGxpbmdTdXBwcmVzc0NvdW50OyB9CisgICAgdm9pZCByZXN0b3Jl
U2Nyb2xsaW5nKCkKKyAgICB7CisgICAgICAgIEFTU0VSVChtX3Njcm9sbGluZ1N1cHByZXNzQ291
bnQpOworICAgICAgICAtLW1fc2Nyb2xsaW5nU3VwcHJlc3NDb3VudDsKKyAgICB9Citwcml2YXRl
OgorICAgIGJvb2wgYWN0dWFsU2VsZWN0aW9uQXRTZW50ZW5jZVN0YXJ0KGNvbnN0IFZpc2libGVT
ZWxlY3Rpb24mKSBjb25zdDsKKyAgICBQYXNzUmVmUHRyPFJhbmdlPiByYW5nZUJ5QWx0ZXJpbmdD
dXJyZW50U2VsZWN0aW9uKEVBbHRlcmF0aW9uLCBpbnQgYW1vdW50KSBjb25zdDsKK3B1YmxpYzoK
KyNlbmRpZgorCiAgICAgYm9vbCBzaG91bGRDaGFuZ2VTZWxlY3Rpb24oY29uc3QgVmlzaWJsZVNl
bGVjdGlvbiYpIGNvbnN0OwogICAgIGJvb2wgc2hvdWxkRGVsZXRlU2VsZWN0aW9uKGNvbnN0IFZp
c2libGVTZWxlY3Rpb24mKSBjb25zdDsKICAgICBlbnVtIEVuZFBvaW50c0FkanVzdG1lbnRNb2Rl
IHsgQWRqdXN0RW5kcG9pbnRzQXRCaWRpQm91bmRhcnksIERvTm90QWRqc3V0RW5kcG9pbnRzIH07
CkBAIC0zMDksNiArMzUwLDE0IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX2lzQ2FyZXRCbGlua2lu
Z1N1c3BlbmRlZCA6IDE7CiAgICAgYm9vbCBtX2ZvY3VzZWQgOiAxOwogICAgIGJvb2wgbV9zaG91
bGRTaG93QmxvY2tDdXJzb3IgOiAxOworCisjaWYgUExBVEZPUk0oSU9TKQorICAgIGJvb2wgbV91
cGRhdGVBcHBlYXJhbmNlRW5hYmxlZCA6IDE7CisgICAgYm9vbCBtX2NhcmV0QmxpbmtzIDogMTsK
KyAgICBDb2xvciBtX2NhcmV0Q29sb3I7CisgICAgaW50IG1fY2xvc2VUeXBpbmdTdXBwcmVzc2lv
bnM7CisgICAgaW50IG1fc2Nyb2xsaW5nU3VwcHJlc3NDb3VudDsKKyNlbmRpZgogfTsKIAogaW5s
aW5lIEVkaXRpbmdTdHlsZSogRnJhbWVTZWxlY3Rpb246OnR5cGluZ1N0eWxlKCkgY29uc3QKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvSW5zZXJ0SW50b1RleHROb2RlQ29tbWFu
ZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0luc2VydEludG9UZXh0Tm9kZUNvbW1hbmQu
Y3BwCmluZGV4IGI1ZDA2YjJlZjI0Yjk3ZTAzNjcwNjY5ZWEwNzBhNjNiYzhlZjc4OTIuLjM3MGQ0
YmY0ZTViOTg2MWRjNDY1Mzk1MGI4M2FmZGZhNWFkMWU3YzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvSW5zZXJ0SW50b1RleHROb2RlQ29tbWFuZC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvZWRpdGluZy9JbnNlcnRJbnRvVGV4dE5vZGVDb21tYW5kLmNwcApAQCAtMzIsNiAr
MzIsOSBAQAogI2luY2x1ZGUgIlJlbmRlclRleHQuaCIKICNpbmNsdWRlICJTZXR0aW5ncy5oIgog
I2luY2x1ZGUgIlRleHQuaCIKKyNpZiBQTEFURk9STShJT1MpCisjaW5jbHVkZSAiUmVuZGVyVGV4
dC5oIgorI2VuZGlmCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtNjgsNiArNzEsMTQgQEAg
dm9pZCBJbnNlcnRJbnRvVGV4dE5vZGVDb21tYW5kOjpkb0FwcGx5KCkKICAgICAgICAgY2FjaGUt
Pm5vZGVUZXh0Q2hhbmdlTm90aWZpY2F0aW9uKG1fbm9kZS5nZXQoKSwgQVhPYmplY3RDYWNoZTo6
QVhUZXh0SW5zZXJ0ZWQsIG1fb2Zmc2V0LCBtX3RleHQpOwogfQogCisjaWYgUExBVEZPUk0oSU9T
KQordm9pZCBJbnNlcnRJbnRvVGV4dE5vZGVDb21tYW5kOjpkb1JlYXBwbHkoKQoreworICAgIEV4
Y2VwdGlvbkNvZGUgZWM7CisgICAgbV9ub2RlLT5pbnNlcnREYXRhKG1fb2Zmc2V0LCBtX3RleHQs
IGVjKTsKK30KKyNlbmRpZgorICAgIAogdm9pZCBJbnNlcnRJbnRvVGV4dE5vZGVDb21tYW5kOjpk
b1VuYXBwbHkoKQogewogICAgIGlmICghbV9ub2RlLT5oYXNFZGl0YWJsZVN0eWxlKCkpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0luc2VydEludG9UZXh0Tm9kZUNvbW1hbmQu
aCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvSW5zZXJ0SW50b1RleHROb2RlQ29tbWFuZC5oCmlu
ZGV4IGY2ODU0NzIxYmExYTFiNWI5MzU3OGY3OWNhNzg5NTI2YzE4NjMxZTMuLjY5ZDFjNGM2YjEy
NGQyZjk0MTdmMTk1OTY3ZjkzOGRmMGFmYzYyZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvSW5zZXJ0SW50b1RleHROb2RlQ29tbWFuZC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvSW5zZXJ0SW50b1RleHROb2RlQ29tbWFuZC5oCkBAIC00NCw2ICs0NCw5IEBAIHBy
aXZhdGU6CiAKICAgICB2aXJ0dWFsIHZvaWQgZG9BcHBseSgpIE9WRVJSSURFOwogICAgIHZpcnR1
YWwgdm9pZCBkb1VuYXBwbHkoKSBPVkVSUklERTsKKyNpZiBQTEFURk9STShJT1MpCisgICAgdmly
dHVhbCB2b2lkIGRvUmVhcHBseSgpIE9WRVJSSURFOworI2VuZGlmCiAgICAgCiAjaWZuZGVmIE5E
RUJVRwogICAgIHZpcnR1YWwgdm9pZCBnZXROb2Rlc0luQ29tbWFuZChIYXNoU2V0PE5vZGUqPiYp
IE9WRVJSSURFOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9JbnNlcnRUZXh0
Q29tbWFuZC5oIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9JbnNlcnRUZXh0Q29tbWFuZC5oCmlu
ZGV4IDcxZDlmNjRlN2JiZDIxNjNlZjI0ZWU5N2UxZTQ3M2IzMDY5NzgzNmMuLjY2NmZlOTVhODM2
OWJhZjc5MTIzYWNiMmIzMDBjODM4MmEzZjk1YjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvSW5zZXJ0VGV4dENvbW1hbmQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L0luc2VydFRleHRDb21tYW5kLmgKQEAgLTY4LDYgKzY4LDEwIEBAIHByaXZhdGU6CiAKICAgICB2
aXJ0dWFsIHZvaWQgZG9BcHBseSgpOwogCisjaWYgUExBVEZPUk0oSU9TKQorICAgIHZpcnR1YWwg
Ym9vbCBpc0luc2VydFRleHRDb21tYW5kKCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4gdHJ1ZTsg
fQorI2VuZGlmCisKICAgICBQb3NpdGlvbiBwb3NpdGlvbkluc2lkZVRleHROb2RlKGNvbnN0IFBv
c2l0aW9uJik7CiAgICAgUG9zaXRpb24gaW5zZXJ0VGFiKGNvbnN0IFBvc2l0aW9uJik7CiAgICAg
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1JlcGxhY2VTZWxlY3Rpb25Db21t
YW5kLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQu
Y3BwCmluZGV4IDE2ZTNmZjRlZDQzNWE3YjIxYzc4NjJkNTc3NmE4NzczNmYxZmZjMGIuLmQzZDc4
ODJmOTc2YTU0MmNhMTcwNzkxZTQwYTE5YjJlMTg4MzA3MDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQuY3BwCkBAIC04OTksNiArODk5
LDEzIEBAIHZvaWQgUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQ6OmRvQXBwbHkoKQogICAgIGlmICgh
c2VsZWN0aW9uLnJvb3RFZGl0YWJsZUVsZW1lbnQoKSkKICAgICAgICAgcmV0dXJuOwogCisjaWYg
UExBVEZPUk0oSU9TKQorICAgIC8vIEluIHBsYWluIHRleHQgb25seSByZWdpb25zLCB3ZSBjcmVh
dGUgc3R5bGUtbGVzcyBmcmFnbWVudHMsIHNvIHRoZSBpbnNlcnRlZCBjb250ZW50IHdpbGwgYXV0
b21hdGljYWxseQorICAgIC8vIG1hdGNoIHRoZSBzdHlsZSBvZiB0aGUgc3Vycm91bmRpbmcgYXJl
YSBhbmQgc28gd2UgY2FuIGF2b2lkIHVubmVjZXNzYXJ5IHdvcmsgYmVsb3cgZm9yIG1fbWF0Y2hT
dHlsZS4KKyAgICBpZiAoIXNlbGVjdGlvbi5pc0NvbnRlbnRSaWNobHlFZGl0YWJsZSgpKQorICAg
ICAgICBtX21hdGNoU3R5bGUgPSBmYWxzZTsKKyNlbmRpZgorCiAgICAgUmVwbGFjZW1lbnRGcmFn
bWVudCBmcmFnbWVudChkb2N1bWVudCgpLCBtX2RvY3VtZW50RnJhZ21lbnQuZ2V0KCksIHNlbGVj
dGlvbik7CiAgICAgaWYgKHBlcmZvcm1Ucml2aWFsUmVwbGFjZShmcmFnbWVudCkpCiAgICAgICAg
IHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dEFmZmluaXR5
LmggYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1RleHRBZmZpbml0eS5oCmluZGV4IDUzMTBjYTk2
ZjI2NzJjOGQ5ZjJkZjAwMjFmODYxNWFmZDNmZmQ0NDMuLjkwZTY2NWQzYjc1NWY1MzU2MTUzZjc5
OTEyNmI5MWRlZjE2NWFhYzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4
dEFmZmluaXR5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0QWZmaW5pdHkuaApA
QCAtMjcsNyArMjcsMTEgQEAKICNkZWZpbmUgVGV4dEFmZmluaXR5X2gKIAogI2lmZGVmIF9fT0JK
Q19fCisjaWYgIVBMQVRGT1JNKElPUykKICNpbmNsdWRlIDxBcHBLaXQvTlNUZXh0Vmlldy5oPgor
I2Vsc2UKKyNpbmNsdWRlICJXQUtBcHBLaXRTdHVicy5oIgorI2VuZGlmIC8vICFQTEFURk9STShJ
T1MpCiAjZW5kaWYKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvZWRpdGluZy9UZXh0Q2hlY2tpbmdIZWxwZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRp
dGluZy9UZXh0Q2hlY2tpbmdIZWxwZXIuY3BwCmluZGV4IGUxY2UxNDYwZTA5YmIwM2M5MWQ4NmI3
ZGQ3YTU0ZTdmZTE1YzRlMDYuLjY1ZjE0MzE0NjM2NmY1MTkxNzgxOGM2NjEzYzg0NWJmZTY0MjZi
YjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dENoZWNraW5nSGVscGVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1RleHRDaGVja2luZ0hlbHBlci5jcHAK
QEAgLTIzMyw2ICsyMzMsNyBAQCBUZXh0Q2hlY2tpbmdIZWxwZXI6On5UZXh0Q2hlY2tpbmdIZWxw
ZXIoKQogewogfQogCisjaWYgIVBMQVRGT1JNKElPUykKIFN0cmluZyBUZXh0Q2hlY2tpbmdIZWxw
ZXI6OmZpbmRGaXJzdE1pc3NwZWxsaW5nKGludCYgZmlyc3RNaXNzcGVsbGluZ09mZnNldCwgYm9v
bCBtYXJrQWxsLCBSZWZQdHI8UmFuZ2U+JiBmaXJzdE1pc3NwZWxsaW5nUmFuZ2UpCiB7CiAgICAg
V29yZEF3YXJlSXRlcmF0b3IgaXQobV9yYW5nZS5nZXQoKSk7CkBAIC00MTMsNiArNDE0LDcgQEAg
U3RyaW5nIFRleHRDaGVja2luZ0hlbHBlcjo6ZmluZEZpcnN0TWlzc3BlbGxpbmdPckJhZEdyYW1t
YXIoYm9vbCBjaGVja0dyYW1tYXIsIGIKICAgICB9CiAgICAgcmV0dXJuIGZpcnN0Rm91bmRJdGVt
OwogfQorI2VuZGlmIC8vICFQTEFURk9STShJT1MpCiAKICNpZiBVU0UoR1JBTU1BUl9DSEVDS0lO
RykKIGludCBUZXh0Q2hlY2tpbmdIZWxwZXI6OmZpbmRGaXJzdEdyYW1tYXJEZXRhaWwoY29uc3Qg
VmVjdG9yPEdyYW1tYXJEZXRhaWw+JiBncmFtbWFyRGV0YWlscywgaW50IGJhZEdyYW1tYXJQaHJh
c2VMb2NhdGlvbiwgaW50IHN0YXJ0T2Zmc2V0LCBpbnQgZW5kT2Zmc2V0LCBib29sIG1hcmtBbGwp
IGNvbnN0CkBAIC02MTIsNiArNjE0LDcgQEAgVmVjdG9yPFN0cmluZz4gVGV4dENoZWNraW5nSGVs
cGVyOjpndWVzc2VzRm9yTWlzc3BlbGxlZE9yVW5ncmFtbWF0aWNhbFJhbmdlKGJvb2wKIH0KIAog
CisjaWYgIVBMQVRGT1JNKElPUykKIHZvaWQgVGV4dENoZWNraW5nSGVscGVyOjptYXJrQWxsTWlz
c3BlbGxpbmdzKFJlZlB0cjxSYW5nZT4mIGZpcnN0TWlzc3BlbGxpbmdSYW5nZSkKIHsKICAgICAv
LyBVc2UgdGhlICJtYXJrQWxsIiBmZWF0dXJlIG9mIGZpbmRGaXJzdE1pc3NwZWxsaW5nLiBJZ25v
cmUgdGhlIHJldHVybiB2YWx1ZSBhbmQgdGhlICJvdXQgcGFyYW1ldGVyIjsKQEAgLTYzMCw2ICs2
MzMsNyBAQCB2b2lkIFRleHRDaGVja2luZ0hlbHBlcjo6bWFya0FsbEJhZEdyYW1tYXIoKQogICAg
IGZpbmRGaXJzdEJhZEdyYW1tYXIoaWdub3JlZEdyYW1tYXJEZXRhaWwsIGlnbm9yZWRPZmZzZXQs
IHRydWUpOwogfQogI2VuZGlmCisjZW5kaWYgLy8gIVBMQVRGT1JNKElPUykKIAogYm9vbCBUZXh0
Q2hlY2tpbmdIZWxwZXI6OnVuaWZpZWRUZXh0Q2hlY2tlckVuYWJsZWQoKSBjb25zdAogewpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0R3JhbnVsYXJpdHkuaCBiL1NvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvVGV4dEdyYW51bGFyaXR5LmgKaW5kZXggMDljYzRlZGQ3NTZlYjU0
NDZhNDA3MTcxMjRlMGUwODM3YmI3NjM2MC4uYWFhM2Q3ZDExMjczZDUxMzg0YThhZmE1YTI3MjBj
Yjg5MzNkZGE1YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0R3JhbnVs
YXJpdHkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1RleHRHcmFudWxhcml0eS5oCkBA
IC0zNiw2ICszNiw5IEBAIGVudW0gVGV4dEdyYW51bGFyaXR5IHsKICAgICBTZW50ZW5jZUdyYW51
bGFyaXR5LAogICAgIExpbmVHcmFudWxhcml0eSwKICAgICBQYXJhZ3JhcGhHcmFudWxhcml0eSwK
KyNpZiBQTEFURk9STShJT1MpCisgICAgRG9jdW1lbnRHcmFudWxhcml0eSwKKyNlbmRpZgogICAg
IFNlbnRlbmNlQm91bmRhcnksCiAgICAgTGluZUJvdW5kYXJ5LAogICAgIFBhcmFncmFwaEJvdW5k
YXJ5LApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0SXRlcmF0b3IuY3Bw
IGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0SXRlcmF0b3IuY3BwCmluZGV4IDRjMmMyN2Mz
ZTZlYjliMWZlOTE5MjUzMTgyMDgxYmE3NTg3MTM4ZWYuLjViNDhjMjY4ZDUyNjI4NzdhZTE4NTdj
NDk2NGI4N2MyNmQ3MDhiOWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4
dEl0ZXJhdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1RleHRJdGVyYXRvci5j
cHAKQEAgLTI1MCw4ICsyNTAsMjEgQEAgYm9vbCBpc1JlbmRlcmVyUmVwbGFjZWRFbGVtZW50KFJl
bmRlck9iamVjdCogcmVuZGVyZXIpCiAgICAgaWYgKCFyZW5kZXJlcikKICAgICAgICAgcmV0dXJu
IGZhbHNlOwogICAgIAorI2lmIEVOQUJMRShQTFVHSU5fUFJPWFlfRk9SX1ZJREVPKQorICAgIGlm
IChyZW5kZXJlci0+aXNJbWFnZSgpIHx8IHJlbmRlcmVyLT5pc01lZGlhKCkpCisgICAgICAgIHJl
dHVybiB0cnVlOworICAgIGlmIChyZW5kZXJlci0+aXNXaWRnZXQoKSkgeworICAgICAgICBpZiAo
cmVuZGVyZXItPm5vZGUoKSAmJiByZW5kZXJlci0+bm9kZSgpLT5pc0VsZW1lbnROb2RlKCkpIHsK
KyAgICAgICAgICAgIEVsZW1lbnQqIGVsZW1lbnQgPSB0b0VsZW1lbnQocmVuZGVyZXItPm5vZGUo
KSk7CisgICAgICAgICAgICBpZiAoZWxlbWVudC0+aGFzVGFnTmFtZSh2aWRlb1RhZykgfHwgIWVs
ZW1lbnQtPmhhc1RhZ05hbWUoYXVkaW9UYWcpKQorICAgICAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsgLy8gU2VlIDxyZGFyOi8vcHJvYmxlbS82ODkzNzkzPi4KKyAgICAgICAgfQorICAgICAgICBy
ZXR1cm4gdHJ1ZTsKKyAgICB9CisjZWxzZQogICAgIGlmIChyZW5kZXJlci0+aXNJbWFnZSgpIHx8
IHJlbmRlcmVyLT5pc1dpZGdldCgpIHx8IHJlbmRlcmVyLT5pc01lZGlhKCkpCiAgICAgICAgIHJl
dHVybiB0cnVlOworI2VuZGlmCiAgICAgCiAgICAgaWYgKHJlbmRlcmVyLT5ub2RlKCkgJiYgcmVu
ZGVyZXItPm5vZGUoKS0+aXNFbGVtZW50Tm9kZSgpKSB7CiAgICAgICAgIEVsZW1lbnQqIGVsZW1l
bnQgPSB0b0VsZW1lbnQocmVuZGVyZXItPm5vZGUoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL1R5cGluZ0NvbW1hbmQuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9U
eXBpbmdDb21tYW5kLmNwcAppbmRleCA4ZWIwZDM5ZGFmNjc4NzI3ZjE1MTBlMThmYzI3OTI1MTli
NDg3MGQ1Li4xMDA2ODQ5YzlmOTQ5YTViNTY3Zjg2NTM3YTcyODZiNDAyZGRkZjhjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1R5cGluZ0NvbW1hbmQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvVHlwaW5nQ29tbWFuZC5jcHAKQEAgLTIzNiw2ICsyMzYsMTYgQEAg
dm9pZCBUeXBpbmdDb21tYW5kOjpjbG9zZVR5cGluZyhGcmFtZSogZnJhbWUpCiAgICAgICAgIGxh
c3RUeXBpbmdDb21tYW5kLT5jbG9zZVR5cGluZygpOwogfQogCisjaWYgUExBVEZPUk0oSU9TKQor
dm9pZCBUeXBpbmdDb21tYW5kOjplbnN1cmVMYXN0RWRpdENvbW1hbmRIYXNDdXJyZW50U2VsZWN0
aW9uSWZPcGVuRm9yTW9yZVR5cGluZyhGcmFtZSogZnJhbWUsIGNvbnN0IFZpc2libGVTZWxlY3Rp
b24mIG5ld1NlbGVjdGlvbikKK3sKKyAgICBpZiAoUmVmUHRyPFR5cGluZ0NvbW1hbmQ+IGxhc3RU
eXBpbmdDb21tYW5kID0gbGFzdFR5cGluZ0NvbW1hbmRJZlN0aWxsT3BlbkZvclR5cGluZyhmcmFt
ZSkpIHsKKyAgICAgICAgbGFzdFR5cGluZ0NvbW1hbmQtPnNldEVuZGluZ1NlbGVjdGlvbihuZXdT
ZWxlY3Rpb24pOworICAgICAgICBsYXN0VHlwaW5nQ29tbWFuZC0+c2V0RW5kaW5nU2VsZWN0aW9u
T25MYXN0SW5zZXJ0Q29tbWFuZChuZXdTZWxlY3Rpb24pOworICAgIH0KK30KKyNlbmRpZgorCiB2
b2lkIFR5cGluZ0NvbW1hbmQ6OmRvQXBwbHkoKQogewogICAgIGlmICghZW5kaW5nU2VsZWN0aW9u
KCkuaXNOb25PcnBoYW5lZENhcmV0T3JSYW5nZSgpKQpAQCAtMjgxLDcgKzI5MSw3IEBAIHZvaWQg
VHlwaW5nQ29tbWFuZDo6bWFya01pc3NwZWxsaW5nc0FmdGVyVHlwaW5nKEVUeXBpbmdDb21tYW5k
IGNvbW1hbmRUeXBlKQogewogICAgIEZyYW1lJiBmcmFtZSA9IHRoaXMtPmZyYW1lKCk7CiAKLSNp
ZiBQTEFURk9STShNQUMpCisjaWYgUExBVEZPUk0oTUFDKSAmJiAhUExBVEZPUk0oSU9TKQogICAg
IGlmICghZnJhbWUuZWRpdG9yKCkuaXNDb250aW51b3VzU3BlbGxDaGVja2luZ0VuYWJsZWQoKQog
ICAgICAgICAmJiAhZnJhbWUuZWRpdG9yKCkuaXNBdXRvbWF0aWNRdW90ZVN1YnN0aXR1dGlvbkVu
YWJsZWQoKQogICAgICAgICAmJiAhZnJhbWUuZWRpdG9yKCkuaXNBdXRvbWF0aWNMaW5rRGV0ZWN0
aW9uRW5hYmxlZCgpCkBAIC0yOTksNiArMzA5LDcgQEAgdm9pZCBUeXBpbmdDb21tYW5kOjptYXJr
TWlzc3BlbGxpbmdzQWZ0ZXJUeXBpbmcoRVR5cGluZ0NvbW1hbmQgY29tbWFuZFR5cGUpCiAgICAg
VmlzaWJsZVBvc2l0aW9uIHN0YXJ0KGVuZGluZ1NlbGVjdGlvbigpLnN0YXJ0KCksIGVuZGluZ1Nl
bGVjdGlvbigpLmFmZmluaXR5KCkpOwogICAgIFZpc2libGVQb3NpdGlvbiBwcmV2aW91cyA9IHN0
YXJ0LnByZXZpb3VzKCk7CiAgICAgaWYgKHByZXZpb3VzLmlzTm90TnVsbCgpKSB7CisjaWYgIVBM
QVRGT1JNKElPUykKICAgICAgICAgVmlzaWJsZVBvc2l0aW9uIHAxID0gc3RhcnRPZldvcmQocHJl
dmlvdXMsIExlZnRXb3JkSWZPbkJvdW5kYXJ5KTsKICAgICAgICAgVmlzaWJsZVBvc2l0aW9uIHAy
ID0gc3RhcnRPZldvcmQoc3RhcnQsIExlZnRXb3JkSWZPbkJvdW5kYXJ5KTsKICAgICAgICAgaWYg
KHAxICE9IHAyKSB7CkBAIC0zMDksNiArMzIwLDIyIEBAIHZvaWQgVHlwaW5nQ29tbWFuZDo6bWFy
a01pc3NwZWxsaW5nc0FmdGVyVHlwaW5nKEVUeXBpbmdDb21tYW5kIGNvbW1hbmRUeXBlKQogICAg
ICAgICAgICAgZnJhbWUuZWRpdG9yKCkubWFya01pc3NwZWxsaW5nc0FmdGVyVHlwaW5nVG9Xb3Jk
KHAxLCBlbmRpbmdTZWxlY3Rpb24oKSwgIXN0cmlwcGVkUHJldmlvdXNXb3JkLmlzRW1wdHkoKSk7
CiAgICAgICAgIH0gZWxzZSBpZiAoY29tbWFuZFR5cGUgPT0gVHlwaW5nQ29tbWFuZDo6SW5zZXJ0
VGV4dCkKICAgICAgICAgICAgIGZyYW1lLmVkaXRvcigpLnN0YXJ0QWx0ZXJuYXRpdmVUZXh0VUlU
aW1lcigpOworI2Vsc2UKKyAgICAgICAgVU5VU0VEX1BBUkFNKGNvbW1hbmRUeXBlKTsKKyAgICAg
ICAgLy8gSWYgdGhpcyBidWcgZ2V0cyBmaXhlZCwgdGhpcyBQTEFURk9STShJT1MpIGNvZGUgY291
bGQgYmUgcmVtb3ZlZDoKKyAgICAgICAgLy8gPHJkYXI6Ly9wcm9ibGVtLzcyNTk2MTE+IFdvcmQg
Ym91bmRhcnkgY29kZSBvbiBpUGhvbmUgZ2l2ZXMgZGlmZmVyZW50IHJlc3VsdHMgdGhhbiBkZXNr
dG9wCisgICAgICAgIEVXb3JkU2lkZSBzdGFydFdvcmRTaWRlID0gTGVmdFdvcmRJZk9uQm91bmRh
cnk7CisgICAgICAgIFVDaGFyMzIgYyA9IHByZXZpb3VzLmNoYXJhY3RlckFmdGVyKCk7CisgICAg
ICAgIC8vIEZJWE1FOiBWaXNpYmxlUG9zaXRpb246OmNoYXJhY3RlckFmdGVyKCkgYW5kIGNoYXJh
Y3RlckJlZm9yZSgpIGRvIG5vdCBlbWl0IG5ld2xpbmVzIHRoZSBzYW1lCisgICAgICAgIC8vIHdh
eSBhcyBUZXh0SXRlcmF0b3IsIHNvIHdlIGRvIGFuIGlzRW5kT2ZQYXJhZ3JhcGggY2hlY2sgaGVy
ZS4KKyAgICAgICAgaWYgKGlzU3BhY2VPck5ld2xpbmUoYykgfHwgYyA9PSAweEEwIHx8IGlzRW5k
T2ZQYXJhZ3JhcGgocHJldmlvdXMpKSB7CisgICAgICAgICAgICBzdGFydFdvcmRTaWRlID0gUmln
aHRXb3JkSWZPbkJvdW5kYXJ5OworICAgICAgICB9CisgICAgICAgIFZpc2libGVQb3NpdGlvbiBw
MSA9IHN0YXJ0T2ZXb3JkKHByZXZpb3VzLCBzdGFydFdvcmRTaWRlKTsKKyAgICAgICAgVmlzaWJs
ZVBvc2l0aW9uIHAyID0gc3RhcnRPZldvcmQoc3RhcnQsIHN0YXJ0V29yZFNpZGUpOworICAgICAg
ICBpZiAocDEgIT0gcDIpCisgICAgICAgICAgICBmcmFtZS5lZGl0b3IoKS5tYXJrTWlzc3BlbGxp
bmdzQWZ0ZXJUeXBpbmdUb1dvcmQocDEsIGVuZGluZ1NlbGVjdGlvbigpLCBmYWxzZSk7CisjZW5k
aWYgLy8gIVBMQVRGT1JNKElPUykKICAgICB9CiB9CiAKQEAgLTQ4Nyw4ICs1MTQsMTUgQEAgdm9p
ZCBUeXBpbmdDb21tYW5kOjpkZWxldGVLZXlQcmVzc2VkKFRleHRHcmFudWxhcml0eSBncmFudWxh
cml0eSwgYm9vbCBraWxsUmluZykKICAgICB9CiAgICAgCiAgICAgQVNTRVJUKCFzZWxlY3Rpb25U
b0RlbGV0ZS5pc05vbmUoKSk7Ci0gICAgaWYgKHNlbGVjdGlvblRvRGVsZXRlLmlzTm9uZSgpKQor
ICAgIGlmIChzZWxlY3Rpb25Ub0RlbGV0ZS5pc05vbmUoKSkgeworI2lmIFBMQVRGT1JNKElPUykK
KyAgICAgICAgLy8gV29ya2Fyb3VuZCBmb3IgdGhpcyBidWc6CisgICAgICAgIC8vIDxyZGFyOi8v
cHJvYmxlbS80NjUzNzU1PiBVSUtpdCB0ZXh0IHdpZGdldHMgc2hvdWxkIHVzZSBXZWJLaXQgZWRp
dGluZyBBUEkgdG8gbWFuaXB1bGF0ZSB0ZXh0CisgICAgICAgIHNldEVuZGluZ1NlbGVjdGlvbihm
cmFtZS5zZWxlY3Rpb24oKS5zZWxlY3Rpb24oKSk7CisgICAgICAgIGNsb3NlVHlwaW5nKCZmcmFt
ZSk7CisjZW5kaWYKICAgICAgICAgcmV0dXJuOworICAgIH0KICAgICAKICAgICBpZiAoc2VsZWN0
aW9uVG9EZWxldGUuaXNDYXJldCgpIHx8ICFmcmFtZS5zZWxlY3Rpb24oKS5zaG91bGREZWxldGVT
ZWxlY3Rpb24oc2VsZWN0aW9uVG9EZWxldGUpKQogICAgICAgICByZXR1cm47CkBAIC01NzgsOCAr
NjEyLDE1IEBAIHZvaWQgVHlwaW5nQ29tbWFuZDo6Zm9yd2FyZERlbGV0ZUtleVByZXNzZWQoVGV4
dEdyYW51bGFyaXR5IGdyYW51bGFyaXR5LCBib29sIGtpCiAgICAgfQogICAgIAogICAgIEFTU0VS
VCghc2VsZWN0aW9uVG9EZWxldGUuaXNOb25lKCkpOwotICAgIGlmIChzZWxlY3Rpb25Ub0RlbGV0
ZS5pc05vbmUoKSkKKyAgICBpZiAoc2VsZWN0aW9uVG9EZWxldGUuaXNOb25lKCkpIHsKKyNpZiBQ
TEFURk9STShJT1MpCisgICAgICAgIC8vIFdvcmthcm91bmQgZm9yIHRoaXMgYnVnOgorICAgICAg
ICAvLyA8cmRhcjovL3Byb2JsZW0vNDY1Mzc1NT4gVUlLaXQgdGV4dCB3aWRnZXRzIHNob3VsZCB1
c2UgV2ViS2l0IGVkaXRpbmcgQVBJIHRvIG1hbmlwdWxhdGUgdGV4dAorICAgICAgICBzZXRFbmRp
bmdTZWxlY3Rpb24oZnJhbWUuc2VsZWN0aW9uKCkuc2VsZWN0aW9uKCkpOworICAgICAgICBjbG9z
ZVR5cGluZygmZnJhbWUpOworI2VuZGlmCiAgICAgICAgIHJldHVybjsKKyAgICB9CiAgICAgCiAg
ICAgaWYgKHNlbGVjdGlvblRvRGVsZXRlLmlzQ2FyZXQoKSB8fCAhZnJhbWUuc2VsZWN0aW9uKCku
c2hvdWxkRGVsZXRlU2VsZWN0aW9uKHNlbGVjdGlvblRvRGVsZXRlKSkKICAgICAgICAgcmV0dXJu
OwpAQCAtNTk5LDYgKzY0MCwyNSBAQCB2b2lkIFR5cGluZ0NvbW1hbmQ6OmRlbGV0ZVNlbGVjdGlv
bihib29sIHNtYXJ0RGVsZXRlKQogICAgIHR5cGluZ0FkZGVkVG9PcGVuQ29tbWFuZChEZWxldGVT
ZWxlY3Rpb24pOwogfQogCisjaWYgUExBVEZPUk0oSU9TKQorY2xhc3MgRnJpZW5kbHlFZGl0Q29t
bWFuZCA6IHB1YmxpYyBFZGl0Q29tbWFuZCB7CitwdWJsaWM6CisgICAgdm9pZCBzZXRFbmRpbmdT
ZWxlY3Rpb24oY29uc3QgVmlzaWJsZVNlbGVjdGlvbiYgc2VsZWN0aW9uKQorICAgIHsKKyAgICAg
ICAgRWRpdENvbW1hbmQ6OnNldEVuZGluZ1NlbGVjdGlvbihzZWxlY3Rpb24pOworICAgIH0KK307
CisKK3ZvaWQgVHlwaW5nQ29tbWFuZDo6c2V0RW5kaW5nU2VsZWN0aW9uT25MYXN0SW5zZXJ0Q29t
bWFuZChjb25zdCBWaXNpYmxlU2VsZWN0aW9uJiBzZWxlY3Rpb24pCit7CisgICAgaWYgKCFtX2Nv
bW1hbmRzLmlzRW1wdHkoKSkgeworICAgICAgICBFZGl0Q29tbWFuZCogbGFzdENvbW1hbmQgPSBt
X2NvbW1hbmRzLmxhc3QoKS5nZXQoKTsKKyAgICAgICAgaWYgKGxhc3RDb21tYW5kLT5pc0luc2Vy
dFRleHRDb21tYW5kKCkpCisgICAgICAgICAgICBzdGF0aWNfY2FzdDxGcmllbmRseUVkaXRDb21t
YW5kKj4obGFzdENvbW1hbmQpLT5zZXRFbmRpbmdTZWxlY3Rpb24oc2VsZWN0aW9uKTsKKyAgICB9
Cit9CisjZW5kaWYKKwogdm9pZCBUeXBpbmdDb21tYW5kOjp1cGRhdGVQcmVzZXJ2ZXNUeXBpbmdT
dHlsZShFVHlwaW5nQ29tbWFuZCBjb21tYW5kVHlwZSkKIHsKICAgICBzd2l0Y2ggKGNvbW1hbmRU
eXBlKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1R5cGluZ0NvbW1hbmQu
aCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVHlwaW5nQ29tbWFuZC5oCmluZGV4IDJkOGMzN2Zk
MzAyOGI1ZmUwMGIxYmQ0YTllZTNhMzY0YjMyZGExYzAuLmUyNDlhMzRiMTRhYzg3YTFhYzQzNTk2
NmQ0NGJkNzIzMzUyZTY2M2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVHlw
aW5nQ29tbWFuZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVHlwaW5nQ29tbWFuZC5o
CkBAIC02Niw2ICs2Niw5IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgdm9pZCBpbnNlcnRQYXJhZ3Jh
cGhTZXBhcmF0b3IoRG9jdW1lbnQmLCBPcHRpb25zKTsKICAgICBzdGF0aWMgdm9pZCBpbnNlcnRQ
YXJhZ3JhcGhTZXBhcmF0b3JJblF1b3RlZENvbnRlbnQoRG9jdW1lbnQmKTsKICAgICBzdGF0aWMg
dm9pZCBjbG9zZVR5cGluZyhGcmFtZSopOworI2lmIFBMQVRGT1JNKElPUykKKyAgICBzdGF0aWMg
dm9pZCBlbnN1cmVMYXN0RWRpdENvbW1hbmRIYXNDdXJyZW50U2VsZWN0aW9uSWZPcGVuRm9yTW9y
ZVR5cGluZyhGcmFtZSosIGNvbnN0IFZpc2libGVTZWxlY3Rpb24mKTsKKyNlbmRpZgogCiAgICAg
dm9pZCBpbnNlcnRUZXh0KGNvbnN0IFN0cmluZyAmdGV4dCwgYm9vbCBzZWxlY3RJbnNlcnRlZFRl
eHQpOwogICAgIHZvaWQgaW5zZXJ0VGV4dFJ1bldpdGhvdXROZXdsaW5lcyhjb25zdCBTdHJpbmcg
JnRleHQsIGJvb2wgc2VsZWN0SW5zZXJ0ZWRUZXh0KTsKQEAgLTc3LDYgKzgwLDEwIEBAIHB1Ymxp
YzoKICAgICB2b2lkIGRlbGV0ZVNlbGVjdGlvbihib29sIHNtYXJ0RGVsZXRlKTsKICAgICB2b2lk
IHNldENvbXBvc2l0aW9uVHlwZShUZXh0Q29tcG9zaXRpb25UeXBlIHR5cGUpIHsgbV9jb21wb3Np
dGlvblR5cGUgPSB0eXBlOyB9CiAKKyNpZiBQTEFURk9STShJT1MpCisgICAgdm9pZCBzZXRFbmRp
bmdTZWxlY3Rpb25Pbkxhc3RJbnNlcnRDb21tYW5kKGNvbnN0IFZpc2libGVTZWxlY3Rpb24mIHNl
bGVjdGlvbik7CisjZW5kaWYKKwogcHJpdmF0ZToKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxUeXBp
bmdDb21tYW5kPiBjcmVhdGUoRG9jdW1lbnQmIGRvY3VtZW50LCBFVHlwaW5nQ29tbWFuZCBjb21t
YW5kLCBjb25zdCBTdHJpbmcmIHRleHQgPSAiIiwgT3B0aW9ucyBvcHRpb25zID0gMCwgVGV4dEdy
YW51bGFyaXR5IGdyYW51bGFyaXR5ID0gQ2hhcmFjdGVyR3JhbnVsYXJpdHkpCiAgICAgewpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9WaXNpYmxlUG9zaXRpb24uaCBiL1NvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvVmlzaWJsZVBvc2l0aW9uLmgKaW5kZXggMWY1OGY2OGM0NGZmN2Mx
Mjk3NjVmMzI0NzBjMjRlNDU0YTY4NjUxZi4uMGNlNzhmNDQ0MDRhOTYyYzg4ZDQ5MmQ5OWQ4YmQ3
ZWMwYThlNmNhNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9WaXNpYmxlUG9z
aXRpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1Zpc2libGVQb3NpdGlvbi5oCkBA
IC0xMjcsNiArMTI3LDI4IEBAIGlubGluZSBib29sIG9wZXJhdG9yIT0oY29uc3QgVmlzaWJsZVBv
c2l0aW9uJiBhLCBjb25zdCBWaXNpYmxlUG9zaXRpb24mIGIpCiB7CiAgICAgcmV0dXJuICEoYSA9
PSBiKTsKIH0KKyAgICAKKyNpZiBQTEFURk9STShJT1MpCitpbmxpbmUgYm9vbCBvcGVyYXRvcjwo
Y29uc3QgVmlzaWJsZVBvc2l0aW9uJiBhLCBjb25zdCBWaXNpYmxlUG9zaXRpb24mIGIpCit7Cisg
ICAgcmV0dXJuIGEuZGVlcEVxdWl2YWxlbnQoKSA8IGIuZGVlcEVxdWl2YWxlbnQoKTsKK30KKwor
aW5saW5lIGJvb2wgb3BlcmF0b3I+KGNvbnN0IFZpc2libGVQb3NpdGlvbiYgYSwgY29uc3QgVmlz
aWJsZVBvc2l0aW9uJiBiKSAKK3sKKyAgICByZXR1cm4gYS5kZWVwRXF1aXZhbGVudCgpID4gYi5k
ZWVwRXF1aXZhbGVudCgpOworfQorCitpbmxpbmUgYm9vbCBvcGVyYXRvcjw9KGNvbnN0IFZpc2li
bGVQb3NpdGlvbiYgYSwgY29uc3QgVmlzaWJsZVBvc2l0aW9uJiBiKQoreworICAgIHJldHVybiBh
LmRlZXBFcXVpdmFsZW50KCkgPD0gYi5kZWVwRXF1aXZhbGVudCgpOworfQorCitpbmxpbmUgYm9v
bCBvcGVyYXRvcj49KGNvbnN0IFZpc2libGVQb3NpdGlvbiYgYSwgY29uc3QgVmlzaWJsZVBvc2l0
aW9uJiBiKSAKK3sKKyAgICByZXR1cm4gYS5kZWVwRXF1aXZhbGVudCgpID49IGIuZGVlcEVxdWl2
YWxlbnQoKTsKK30gICAgCisjZW5kaWYKIAogUGFzc1JlZlB0cjxSYW5nZT4gbWFrZVJhbmdlKGNv
bnN0IFZpc2libGVQb3NpdGlvbiYsIGNvbnN0IFZpc2libGVQb3NpdGlvbiYpOwogYm9vbCBzZXRT
dGFydChSYW5nZSosIGNvbnN0IFZpc2libGVQb3NpdGlvbiYpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvZWRpdGluZy9WaXNpYmxlU2VsZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvVmlzaWJsZVNlbGVjdGlvbi5jcHAKaW5kZXggMmE2MWQ0ZWJhYzFmYjBkMTUxYTkwYjg3
MDkyZjZmNTUwZDI4OWQ0MS4uNzlmNjExOTlkYjBmNTE0ODg1ZDgwOTY0MzdkNWM2ZGU2MTE2YWI0
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9WaXNpYmxlU2VsZWN0aW9uLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1Zpc2libGVTZWxlY3Rpb24uY3BwCkBAIC0z
MjEsNiArMzIxLDE0IEBAIHZvaWQgVmlzaWJsZVNlbGVjdGlvbjo6c2V0U3RhcnRBbmRFbmRGcm9t
QmFzZUFuZEV4dGVudFJlc3BlY3RpbmdHcmFudWxhcml0eShUZXh0CiAgICAgICAgICAgICB9CiAg
ICAgICAgICAgICAgICAgCiAgICAgICAgICAgICBtX2VuZCA9IGVuZC5kZWVwRXF1aXZhbGVudCgp
OworI2lmIFBMQVRGT1JNKElPUykKKyAgICAgICAgICAgIC8vIEVuZCBtdXN0IG5vdCBiZSBiZWZv
cmUgc3RhcnQuCisgICAgICAgICAgICBpZiAobV9zdGFydC5kZXByZWNhdGVkTm9kZSgpID09IG1f
ZW5kLmRlcHJlY2F0ZWROb2RlKCkgJiYgbV9zdGFydC5kZXByZWNhdGVkRWRpdGluZ09mZnNldCgp
ID4gbV9lbmQuZGVwcmVjYXRlZEVkaXRpbmdPZmZzZXQoKSkgeworICAgICAgICAgICAgICAgIFBv
c2l0aW9uIHN3YXAobV9zdGFydCk7CisgICAgICAgICAgICAgICAgbV9zdGFydCA9IG1fZW5kOyAg
ICAKKyAgICAgICAgICAgICAgICBtX2VuZCA9IHN3YXA7ICAgIAorICAgICAgICAgICAgfQorI2Vu
ZGlmCiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBjYXNlIFNlbnRlbmNl
R3JhbnVsYXJpdHk6IHsKQEAgLTM4NCw2ICszOTIsMTEgQEAgdm9pZCBWaXNpYmxlU2VsZWN0aW9u
OjpzZXRTdGFydEFuZEVuZEZyb21CYXNlQW5kRXh0ZW50UmVzcGVjdGluZ0dyYW51bGFyaXR5KFRl
eHQKICAgICAgICAgICAgIG1fc3RhcnQgPSBzdGFydE9mU2VudGVuY2UoVmlzaWJsZVBvc2l0aW9u
KG1fc3RhcnQsIG1fYWZmaW5pdHkpKS5kZWVwRXF1aXZhbGVudCgpOwogICAgICAgICAgICAgbV9l
bmQgPSBlbmRPZlNlbnRlbmNlKFZpc2libGVQb3NpdGlvbihtX2VuZCwgbV9hZmZpbml0eSkpLmRl
ZXBFcXVpdmFsZW50KCk7CiAgICAgICAgICAgICBicmVhazsKKyNpZiBQTEFURk9STShJT1MpCisg
ICAgICAgIGNhc2UgRG9jdW1lbnRHcmFudWxhcml0eToKKyAgICAgICAgICAgIEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOworICAgICAgICAgICAgYnJlYWs7CisjZW5kaWYKICAgICB9CiAgICAgCiAgICAg
Ly8gTWFrZSBzdXJlIHdlIGRvIG5vdCBoYXZlIGEgZGFuZ2xpbmcgc3RhcnQgb3IgZW5kLgpAQCAt
NTE5LDYgKzUzMiwxMyBAQCB2b2lkIFZpc2libGVTZWxlY3Rpb246OmFkanVzdFNlbGVjdGlvblRv
QXZvaWRDcm9zc2luZ0VkaXRpbmdCb3VuZGFyaWVzKCkKICAgICBpZiAobV9iYXNlLmlzTnVsbCgp
IHx8IG1fc3RhcnQuaXNOdWxsKCkgfHwgbV9lbmQuaXNOdWxsKCkpCiAgICAgICAgIHJldHVybjsK
IAorI2lmIFBMQVRGT1JNKElPUykKKyAgICAvLyBFYXJseSByZXR1cm4gaW4gdGhlIGNhcmV0IGNh
c2UgKHRoZSBzdGF0ZSBoYXNuJ3QgYWN0dWFsbHkgYmVlbiBzZXQgeWV0LCBzbyB3ZSBjYW4ndCB1
c2UgaXNDYXJldCgpKSB0byBhdm9pZCB0aGUgCisgICAgLy8gZXhwZW5zZSBvZiBjb21wdXRpbmcg
aGlnaGVzdEVkaXRhYmxlUm9vdC4KKyAgICBpZiAobV9iYXNlID09IG1fc3RhcnQgJiYgbV9iYXNl
ID09IG1fZW5kKQorICAgICAgICByZXR1cm47CisjZW5kaWYKKwogICAgIE5vZGUqIGJhc2VSb290
ID0gaGlnaGVzdEVkaXRhYmxlUm9vdChtX2Jhc2UpOwogICAgIE5vZGUqIHN0YXJ0Um9vdCA9IGhp
Z2hlc3RFZGl0YWJsZVJvb3QobV9zdGFydCk7CiAgICAgTm9kZSogZW5kUm9vdCA9IGhpZ2hlc3RF
ZGl0YWJsZVJvb3QobV9lbmQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9W
aXNpYmxlVW5pdHMuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9WaXNpYmxlVW5pdHMuY3Bw
CmluZGV4IGE0MmE5YTM2ODBkYWM0M2YwNWRjOTk2M2FiYmRiODk3NmE5NmY1ZjYuLjgwZWJmMzE3
Y2Y0MzRiNWYyMzQ5ZTkxYTcyYzk4NTJmMzBlOTY2YTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvVmlzaWJsZVVuaXRzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L1Zpc2libGVVbml0cy5jcHAKQEAgLTQ5Nyw3ICs0OTcsMTEgQEAgc3RhdGljIFZpc2libGVQb3Np
dGlvbiBwcmV2aW91c0JvdW5kYXJ5KGNvbnN0IFZpc2libGVQb3NpdGlvbiYgYywgQm91bmRhcnlT
ZWFyY2gKICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAvLyBUcmVhdCBidWxsZXRzIHVzZWQg
aW4gdGhlIHRleHQgc2VjdXJpdHkgbW9kZSBhcyByZWd1bGFyIGNoYXJhY3RlcnMgd2hlbiBsb29r
aW5nIGZvciBib3VuZGFyaWVzCiAgICAgICAgICAgICBTdHJpbmcgaXRlcmF0b3JTdHJpbmcoaXQu
Y2hhcmFjdGVycygpLCBpdC5sZW5ndGgoKSk7CisjaWYgUExBVEZPUk0oSU9TKQorICAgICAgICAg
ICAgaXRlcmF0b3JTdHJpbmcgPSBpdGVyYXRvclN0cmluZy5pbXBsKCktPmZpbGwoJ3gnKTsKKyNl
bHNlCiAgICAgICAgICAgICBpdGVyYXRvclN0cmluZy5maWxsKCd4Jyk7CisjZW5kaWYKICAgICAg
ICAgICAgIHN0cmluZy5pbnNlcnQoMCwgaXRlcmF0b3JTdHJpbmcuY2hhcmFjdGVycygpLCBpdGVy
YXRvclN0cmluZy5sZW5ndGgoKSk7CiAgICAgICAgIH0KICAgICAgICAgbmV4dCA9IHNlYXJjaEZ1
bmN0aW9uKHN0cmluZy5kYXRhKCksIHN0cmluZy5zaXplKCksIHN0cmluZy5zaXplKCkgLSBzdWZm
aXhMZW5ndGgsIE1heUhhdmVNb3JlQ29udGV4dCwgbmVlZE1vcmVDb250ZXh0KTsKQEAgLTU3MSw3
ICs1NzUsMTEgQEAgc3RhdGljIFZpc2libGVQb3NpdGlvbiBuZXh0Qm91bmRhcnkoY29uc3QgVmlz
aWJsZVBvc2l0aW9uJiBjLCBCb3VuZGFyeVNlYXJjaEZ1bmMKICAgICAgICAgZWxzZSB7CiAgICAg
ICAgICAgICAvLyBUcmVhdCBidWxsZXRzIHVzZWQgaW4gdGhlIHRleHQgc2VjdXJpdHkgbW9kZSBh
cyByZWd1bGFyIGNoYXJhY3RlcnMgd2hlbiBsb29raW5nIGZvciBib3VuZGFyaWVzCiAgICAgICAg
ICAgICBTdHJpbmcgaXRlcmF0b3JTdHJpbmcoaXQuY2hhcmFjdGVycygpLCBpdC5sZW5ndGgoKSk7
CisjaWYgUExBVEZPUk0oSU9TKQorICAgICAgICAgICAgaXRlcmF0b3JTdHJpbmcgPSBpdGVyYXRv
clN0cmluZy5pbXBsKCktPmZpbGwoJ3gnKTsKKyNlbHNlCiAgICAgICAgICAgICBpdGVyYXRvclN0
cmluZy5maWxsKCd4Jyk7CisjZW5kaWYKICAgICAgICAgICAgIHN0cmluZy5hcHBlbmQoaXRlcmF0
b3JTdHJpbmcuY2hhcmFjdGVycygpLCBpdGVyYXRvclN0cmluZy5sZW5ndGgoKSk7CiAgICAgICAg
IH0KICAgICAgICAgbmV4dCA9IHNlYXJjaEZ1bmN0aW9uKHN0cmluZy5kYXRhKCksIHN0cmluZy5z
aXplKCksIHByZWZpeExlbmd0aCwgTWF5SGF2ZU1vcmVDb250ZXh0LCBuZWVkTW9yZUNvbnRleHQp
OwpAQCAtMTMzMiw3ICsxMzQwLDE4IEBAIFZpc2libGVQb3NpdGlvbiBzdGFydE9mRG9jdW1lbnQo
Y29uc3QgTm9kZSogbm9kZSkKICAgICBpZiAoIW5vZGUgfHwgIW5vZGUtPmRvY3VtZW50KCkuZG9j
dW1lbnRFbGVtZW50KCkpCiAgICAgICAgIHJldHVybiBWaXNpYmxlUG9zaXRpb24oKTsKICAgICAK
KyNpZiBQTEFURk9STShJT1MpCisgICAgLy8gVGhlIGNhbm9uaWNhbGl6YXRpb24gb2YgdGhlIHBv
c2l0aW9uIGF0IChkb2N1bWVudEVsZW1lbnQsIDApIGNhbiB0dXJuIHRoZSB2aXNpYmxlCisgICAg
Ly8gcG9zaXRpb24gdG8gbnVsbCwgZXZlbiB3aGVuIHRoZXJlJ3MgYSB2YWxpZCBjYW5kaWRhdGUg
dG8gYmUgaGFkLCBiZWNhdXNlIHRoZSByb290IEhUTUwgZWxlbWVudAorICAgIC8vIGlzIG5vdCBj
b250ZW50IGVkaXRhYmxlLiAgU28gd2UgY29uc3RydWN0IGRpcmVjdGx5IGZyb20gdGhlIHZhbGlk
IGNhbmRpZGF0ZS4KKyAgICAvLyBGSVhNRTogTWVyZ2UgdGhpcyB0byBPcGVuIFNvdXJjZS4gaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU2NDM3CisgICAgUG9zaXRpb24g
Zmlyc3RDYW5kaWRhdGUgPSBuZXh0Q2FuZGlkYXRlKGNyZWF0ZUxlZ2FjeUVkaXRpbmdQb3NpdGlv
bihub2RlLT5kb2N1bWVudCgpLmRvY3VtZW50RWxlbWVudCgpLCAwKSk7CisgICAgaWYgKGZpcnN0
Q2FuZGlkYXRlLmlzTnVsbCgpKQorICAgICAgICByZXR1cm4gVmlzaWJsZVBvc2l0aW9uKCk7Cisg
ICAgcmV0dXJuIFZpc2libGVQb3NpdGlvbihmaXJzdENhbmRpZGF0ZSk7CisjZWxzZQogICAgIHJl
dHVybiBWaXNpYmxlUG9zaXRpb24oZmlyc3RQb3NpdGlvbkluTm9kZShub2RlLT5kb2N1bWVudCgp
LmRvY3VtZW50RWxlbWVudCgpKSwgRE9XTlNUUkVBTSk7CisjZW5kaWYKIH0KIAogVmlzaWJsZVBv
c2l0aW9uIHN0YXJ0T2ZEb2N1bWVudChjb25zdCBWaXNpYmxlUG9zaXRpb24gJmMpCkBAIC0xMzQ1
LDcgKzEzNjQsMjAgQEAgVmlzaWJsZVBvc2l0aW9uIGVuZE9mRG9jdW1lbnQoY29uc3QgTm9kZSog
bm9kZSkKICAgICBpZiAoIW5vZGUgfHwgIW5vZGUtPmRvY3VtZW50KCkuZG9jdW1lbnRFbGVtZW50
KCkpCiAgICAgICAgIHJldHVybiBWaXNpYmxlUG9zaXRpb24oKTsKICAgICAKKyNpZiBQTEFURk9S
TShJT1MpCisgICAgLy8gKEFzIGFib3ZlLCBpbiBzdGFydE9mRG9jdW1lbnQuKSAgVGhlIGNhbm9u
aWNhbGl6YXRpb24gY2FuIHJlamVjdCB2YWxpZCB2aXNpYmxlIHBvc2l0aW9ucworICAgIC8vIHdo
ZW4gZGVzY2VuZGluZyBmcm9tIHRoZSByb290IGVsZW1lbnQsIHNvIHdlIGNvbnN0cnVjdCB0aGUg
dmlzaWJsZSBwb3NpdGlvbiBkaXJlY3RseSBmcm9tIGEKKyAgICAvLyB2YWxpZCBjYW5kaWRhdGUu
CisgICAgLy8gRklYTUU6IE1lcmdlIHRoaXMgdG8gT3BlbiBTb3VyY2UuIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01NjQzNworI2VuZGlmCiAgICAgRWxlbWVudCogZG9j
ID0gbm9kZS0+ZG9jdW1lbnQoKS5kb2N1bWVudEVsZW1lbnQoKTsKKyNpZiBQTEFURk9STShJT1Mp
CisgICAgUG9zaXRpb24gbGFzdFBvc2l0aW9uID0gY3JlYXRlTGVnYWN5RWRpdGluZ1Bvc2l0aW9u
KG5vZGUtPmRvY3VtZW50KCkuZG9jdW1lbnRFbGVtZW50KCksIGRvYy0+Y2hpbGROb2RlQ291bnQo
KSk7CisgICAgUG9zaXRpb24gbGFzdENhbmRpZGF0ZSA9IHByZXZpb3VzQ2FuZGlkYXRlKGxhc3RQ
b3NpdGlvbik7CisgICAgaWYgKGxhc3RDYW5kaWRhdGUuaXNOdWxsKCkpCisgICAgICAgIHJldHVy
biBWaXNpYmxlUG9zaXRpb24oKTsKKyAgICByZXR1cm4gVmlzaWJsZVBvc2l0aW9uKGxhc3RDYW5k
aWRhdGUpOworI2VuZGlmCiAgICAgcmV0dXJuIFZpc2libGVQb3NpdGlvbihsYXN0UG9zaXRpb25J
bk5vZGUoZG9jKSwgRE9XTlNUUkVBTSk7CiB9CiAKQEAgLTE0MTMsNCArMTQ0NSw0NDMgQEAgVmlz
aWJsZVBvc2l0aW9uIHJpZ2h0Qm91bmRhcnlPZkxpbmUoY29uc3QgVmlzaWJsZVBvc2l0aW9uJiBj
LCBUZXh0RGlyZWN0aW9uIGRpcmUKICAgICByZXR1cm4gZGlyZWN0aW9uID09IExUUiA/IGxvZ2lj
YWxFbmRPZkxpbmUoYykgOiBsb2dpY2FsU3RhcnRPZkxpbmUoYyk7CiB9CiAKKyNpZiBQTEFURk9S
TShJT1MpCitzdGF0aWMgYm9vbCBkaXJlY3Rpb25Jc0Rvd25zdHJlYW0oU2VsZWN0aW9uRGlyZWN0
aW9uIGRpcmVjdGlvbikKK3sKKyAgICBpZiAoZGlyZWN0aW9uID09IERpcmVjdGlvbkJhY2t3YXJk
KQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgZWxzZSBpZiAoZGlyZWN0aW9uID09IERpcmVj
dGlvbkZvcndhcmQpCisgICAgICAgIHJldHVybiB0cnVlOworCisgICAgLy8gRklYTUU6IHRoaXMg
Y29kZSBkb2Vzbid0IHRha2UgaW50byBhY2NvdW50IHRoZSBvcmlnaW5hbCBkaXJlY3Rpb24gb2Yg
dGhlIGVsZW1lbnQuCisgICAgLy8gSSdtIG5vdCBmaXhpbmcgdGhpcyBub3cgYmVjYXVzZSBJJ20g
YWZyYWlkIHRoZXJlIGlzIHNvbWUgY29kZSBpbiBVSUtpdCByZWx5aW5nIG9uCisgICAgLy8gdGhp
cyB3cm9uZyBiZWhhdmlvci4KKyAgICByZXR1cm4gZGlyZWN0aW9uID09IERpcmVjdGlvblJpZ2h0
OworfQorCitib29sIGF0Qm91bmRhcnlPZkdyYW51bGFyaXR5KGNvbnN0IFZpc2libGVQb3NpdGlv
biYgdnAsIFRleHRHcmFudWxhcml0eSBncmFudWxhcml0eSwgU2VsZWN0aW9uRGlyZWN0aW9uIGRp
cmVjdGlvbikKK3sKKyAgICBpZiAoZ3JhbnVsYXJpdHkgPT0gQ2hhcmFjdGVyR3JhbnVsYXJpdHkp
CisgICAgICAgIHJldHVybiB0cnVlOworCisgICAgVmlzaWJsZVBvc2l0aW9uIGJvdW5kYXJ5Owor
CisgICAgYm9vbCB1c2VEb3duc3RyZWFtID0gZGlyZWN0aW9uSXNEb3duc3RyZWFtKGRpcmVjdGlv
bik7CisKKyAgICBzd2l0Y2ggKGdyYW51bGFyaXR5KSB7CisgICAgY2FzZSBXb3JkR3JhbnVsYXJp
dHk6CisgICAgICAgIC8vIHZpc2libGVfdW5pdHMgY2xhaW1zIGVycm9uZW91c2x5IHRoYXQgdGhl
IHN0YXJ0IGFuZCB0aGUgZW5kCisgICAgICAgIC8vIG9mIGEgcGFyYWdyYXBoIGFyZSB0aGUgZW5k
IGFuZCBzdGFydCBvZiBhIHdvcmQsIHJlc3BlY3RpdmVseS4KKyAgICAgICAgaWYgKCh1c2VEb3du
c3RyZWFtICYmIGlzU3RhcnRPZlBhcmFncmFwaCh2cCkpIHx8ICghdXNlRG93bnN0cmVhbSAmJiBp
c0VuZE9mUGFyYWdyYXBoKHZwKSkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAg
ICAgLy8gTm90ZSB0aGF0ICJMZWZ0IiBhbmQgIlJpZ2h0IiBpbiB0aGlzIGNvbnRleHQgYXBwYXJl
bnRseSBtZWFuICJ1cHN0cmVhbS9wcmV2aW91cyIgYW5kICJkb3duc3RyZWFtL25leHQiLgorICAg
ICAgICBib3VuZGFyeSA9IHVzZURvd25zdHJlYW0gPyBlbmRPZldvcmQodnAsIExlZnRXb3JkSWZP
bkJvdW5kYXJ5KSA6IHN0YXJ0T2ZXb3JkKHZwLCBSaWdodFdvcmRJZk9uQm91bmRhcnkpOworICAg
ICAgICBicmVhazsKKworICAgIGNhc2UgU2VudGVuY2VHcmFudWxhcml0eToKKyAgICAgICAgYm91
bmRhcnkgPSB1c2VEb3duc3RyZWFtID8gZW5kT2ZTZW50ZW5jZSh2cCkgOiBzdGFydE9mU2VudGVu
Y2UodnApOworICAgICAgICBicmVhazsKKworICAgIGNhc2UgTGluZUdyYW51bGFyaXR5OgorICAg
ICAgICAvLyBBZmZpbml0eSBoYXMgdG8gYmUgc2V0IHRvIGdldCByaWdodCBib3VuZGFyeSBvZiB0
aGUgbGluZS4KKyAgICAgICAgYm91bmRhcnkgPSB2cDsKKyAgICAgICAgYm91bmRhcnkuc2V0QWZm
aW5pdHkodXNlRG93bnN0cmVhbSA/IFZQX1VQU1RSRUFNX0lGX1BPU1NJQkxFIDogRE9XTlNUUkVB
TSk7CisgICAgICAgIGJvdW5kYXJ5ID0gdXNlRG93bnN0cmVhbSA/IGVuZE9mTGluZShib3VuZGFy
eSkgOiBzdGFydE9mTGluZShib3VuZGFyeSk7CisgICAgICAgIGJyZWFrOworCisgICAgY2FzZSBQ
YXJhZ3JhcGhHcmFudWxhcml0eToKKyAgICAgICAgYm91bmRhcnkgPSB1c2VEb3duc3RyZWFtID8g
ZW5kT2ZQYXJhZ3JhcGgodnApIDogc3RhcnRPZlBhcmFncmFwaCh2cCk7CisgICAgICAgIGJyZWFr
OworCisgICAgY2FzZSBEb2N1bWVudEdyYW51bGFyaXR5OgorICAgICAgICBib3VuZGFyeSA9IHVz
ZURvd25zdHJlYW0gPyBlbmRPZkRvY3VtZW50KHZwKSA6IHN0YXJ0T2ZEb2N1bWVudCh2cCk7Cisg
ICAgICAgIGJyZWFrOworCisgICAgZGVmYXVsdDoKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVE
KCk7CisgICAgICAgIGJyZWFrOworICAgIH0KKworICAgIHJldHVybiB2cCA9PSBib3VuZGFyeTsK
K30KKworYm9vbCB3aXRoaW5UZXh0VW5pdE9mR3JhbnVsYXJpdHkoY29uc3QgVmlzaWJsZVBvc2l0
aW9uJiB2cCwgVGV4dEdyYW51bGFyaXR5IGdyYW51bGFyaXR5LCBTZWxlY3Rpb25EaXJlY3Rpb24g
ZGlyZWN0aW9uKQoreworICAgIGlmIChncmFudWxhcml0eSA9PSBDaGFyYWN0ZXJHcmFudWxhcml0
eSB8fCBncmFudWxhcml0eSA9PSBEb2N1bWVudEdyYW51bGFyaXR5KQorICAgICAgICByZXR1cm4g
dHJ1ZTsKKworICAgIGJvb2wgdXNlRG93bnN0cmVhbSA9IGRpcmVjdGlvbklzRG93bnN0cmVhbShk
aXJlY3Rpb24pOworCisgICAgVmlzaWJsZVBvc2l0aW9uIHByZXZCb3VuZGFyeTsKKyAgICBWaXNp
YmxlUG9zaXRpb24gbmV4dEJvdW5kYXJ5OworICAgIAorICAgIHN3aXRjaCAoZ3JhbnVsYXJpdHkp
IHsKKyAgICBjYXNlIFdvcmRHcmFudWxhcml0eToKKyAgICAgICAgLy8gTm90ZSB0aGF0ICJMZWZ0
IiBhbmQgIlJpZ2h0IiBpbiB0aGlzIGNvbnRleHQgYXBwYXJlbnRseSBtZWFuICJ1cHN0cmVhbS9w
cmV2aW91cyIgYW5kICJkb3duc3RyZWFtL25leHQiLgorICAgICAgICBwcmV2Qm91bmRhcnkgPSBz
dGFydE9mV29yZCh2cCwgKHVzZURvd25zdHJlYW0gPyBSaWdodFdvcmRJZk9uQm91bmRhcnkgOiBM
ZWZ0V29yZElmT25Cb3VuZGFyeSkpOworICAgICAgICBuZXh0Qm91bmRhcnkgPSBlbmRPZldvcmQo
dnAsICh1c2VEb3duc3RyZWFtID8gUmlnaHRXb3JkSWZPbkJvdW5kYXJ5IDogTGVmdFdvcmRJZk9u
Qm91bmRhcnkpKTsKKyAgICAKKyAgICAgICAgLy8gV29ya2Fyb3VuZCBmb3IgPHJkYXI6Ly9wcm9i
bGVtLzcyNTk2MTE+IFdvcmQgYm91bmRhcnkgY29kZSBvbiBpUGhvbmUgZ2l2ZXMgZGlmZmVyZW50
IHJlc3VsdHMgdGhhbiBkZXNrdG9wCisgICAgICAgIGlmIChlbmRPZldvcmQocHJldkJvdW5kYXJ5
LCBSaWdodFdvcmRJZk9uQm91bmRhcnkpICE9IG5leHRCb3VuZGFyeSkKKyAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKKworICAgICAgICBicmVhazsKKworICAgIGNhc2UgU2VudGVuY2VHcmFudWxh
cml0eToKKyAgICAgICAgcHJldkJvdW5kYXJ5ID0gc3RhcnRPZlNlbnRlbmNlKHZwKTsKKyAgICAg
ICAgbmV4dEJvdW5kYXJ5ID0gZW5kT2ZTZW50ZW5jZSh2cCk7CisgICAgICAgIGJyZWFrOworCisg
ICAgY2FzZSBMaW5lR3JhbnVsYXJpdHk6CisgICAgICAgIHByZXZCb3VuZGFyeSA9IHN0YXJ0T2ZM
aW5lKHZwKTsKKyAgICAgICAgbmV4dEJvdW5kYXJ5ID0gZW5kT2ZMaW5lKHZwKTsKKworICAgICAg
ICBpZiAocHJldkJvdW5kYXJ5ID09IG5leHRCb3VuZGFyeSkgeworICAgICAgICAgICAgbmV4dEJv
dW5kYXJ5ID0gbmV4dExpbmVQb3NpdGlvbihuZXh0Qm91bmRhcnksIDApOworICAgICAgICAgICAg
bmV4dEJvdW5kYXJ5LnNldEFmZmluaXR5KFVQU1RSRUFNKTsKKyAgICAgICAgICAgIGlmICghaW5T
YW1lTGluZShwcmV2Qm91bmRhcnksIG5leHRCb3VuZGFyeSkpCisgICAgICAgICAgICAgICAgbmV4
dEJvdW5kYXJ5ID0gdnAubmV4dCgpOworICAgICAgICB9CisgICAgICAgIGJyZWFrOworCisgICAg
Y2FzZSBQYXJhZ3JhcGhHcmFudWxhcml0eToKKyAgICAgICAgcHJldkJvdW5kYXJ5ID0gc3RhcnRP
ZlBhcmFncmFwaCh2cCk7CisgICAgICAgIG5leHRCb3VuZGFyeSA9IGVuZE9mUGFyYWdyYXBoKHZw
KTsKKyAgICAgICAgYnJlYWs7CisKKyAgICBkZWZhdWx0OgorICAgICAgICBBU1NFUlRfTk9UX1JF
QUNIRUQoKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorCisgICAgaWYgKHByZXZCb3VuZGFyeSA9
PSBuZXh0Qm91bmRhcnkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGlmICh2cCA9PSBw
cmV2Qm91bmRhcnkpCisgICAgICAgIHJldHVybiB1c2VEb3duc3RyZWFtOworCisgICAgaWYgKHZw
ID09IG5leHRCb3VuZGFyeSkKKyAgICAgICAgcmV0dXJuICF1c2VEb3duc3RyZWFtOworCisgICAg
cmV0dXJuIChwcmV2Qm91bmRhcnkgPCB2cCAmJiB2cCA8IG5leHRCb3VuZGFyeSk7Cit9CisKK3N0
YXRpYyBWaXNpYmxlUG9zaXRpb24gbmV4dENoYXJhY3RlckJvdW5kYXJ5SW5EaXJlY3Rpb24oY29u
c3QgVmlzaWJsZVBvc2l0aW9uJiB2cCwgU2VsZWN0aW9uRGlyZWN0aW9uIGRpcmVjdGlvbikKK3sK
KyAgICByZXR1cm4gZGlyZWN0aW9uSXNEb3duc3RyZWFtKGRpcmVjdGlvbikgPyB2cC5uZXh0KCkg
OiB2cC5wcmV2aW91cygpOworfQorCitzdGF0aWMgVmlzaWJsZVBvc2l0aW9uIG5leHRXb3JkQm91
bmRhcnlJbkRpcmVjdGlvbihjb25zdCBWaXNpYmxlUG9zaXRpb24mIHZwLCBTZWxlY3Rpb25EaXJl
Y3Rpb24gZGlyZWN0aW9uKQoreworICAgIGJvb2wgdXNlRG93bnN0cmVhbSA9IGRpcmVjdGlvbklz
RG93bnN0cmVhbShkaXJlY3Rpb24pOworICAgIGJvb2wgd2l0aGluVW5pdE9mR3JhbnVsYXJpdHkg
PSB3aXRoaW5UZXh0VW5pdE9mR3JhbnVsYXJpdHkodnAsIFdvcmRHcmFudWxhcml0eSwgZGlyZWN0
aW9uKTsKKyAgICBWaXNpYmxlUG9zaXRpb24gcmVzdWx0OworICAgIAorICAgIGlmICh1c2VEb3du
c3RyZWFtKSB7CisgICAgICAgIGlmICh3aXRoaW5Vbml0T2ZHcmFudWxhcml0eSkKKyAgICAgICAg
ICAgIHJlc3VsdCA9IGVuZE9mV29yZCh2cCwgUmlnaHRXb3JkSWZPbkJvdW5kYXJ5KTsKKyAgICAg
ICAgZWxzZSB7CisgICAgICAgICAgICBWaXNpYmxlUG9zaXRpb24gc3RhcnQgPSBzdGFydE9mV29y
ZCh2cCwgUmlnaHRXb3JkSWZPbkJvdW5kYXJ5KTsKKyAgICAgICAgICAgIGlmIChzdGFydCA+IHZw
ICYmIHN0YXJ0ICE9IGVuZE9mV29yZChzdGFydCkpCisgICAgICAgICAgICAgICAgcmVzdWx0ID0g
c3RhcnQ7CisgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICAvLyBEbyBzYW1lIHRo
aW5nIGFzIGJhY2t3YXJkcyB0cmF2ZWxpbmcgYmVsb3cuCisgICAgICAgICAgICAgICAgc3RhcnQg
PSB2cDsKKyAgICAgICAgICAgICAgICB3aGlsZSAodHJ1ZSkgeworICAgICAgICAgICAgICAgICAg
ICByZXN1bHQgPSBzdGFydE9mV29yZChuZXh0V29yZFBvc2l0aW9uKHN0YXJ0KSwgUmlnaHRXb3Jk
SWZPbkJvdW5kYXJ5KTsKKworICAgICAgICAgICAgICAgICAgICBpZiAocmVzdWx0ID09IHN0YXJ0
KQorICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICAgICAgICAgICAg
Ly8gV2UgZmFpbGVkIHRvIGZpbmQgYSB3b3JkIGJvdW5kYXJ5LgorICAgICAgICAgICAgICAgICAg
ICBpZiAocmVzdWx0LmlzTnVsbCgpIHx8IHJlc3VsdCA8IHN0YXJ0KQorICAgICAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuIFZpc2libGVQb3NpdGlvbigpOworCisgICAgICAgICAgICAgICAgICAg
IC8vIFdlIGNvbnNpZGVyIHN1Y2Nlc3NzIGFsc28gdGhlIGNhc2Ugd2hlcmUgc3RhcnQgaXMgYmVm
b3JlIGVsZW1lbnQgYW5kIHJlc3VsdCBpcyBhZnRlci4KKyAgICAgICAgICAgICAgICAgICAgLy8g
VGhpcyBjb3ZlcnMgbW92aW5nIHBhc3QgaW1hZ2VzIGxpa2Ugd29yZHMuCisgICAgICAgICAgICAg
ICAgICAgIGlmIChyZXN1bHQgIT0gZW5kT2ZXb3JkKHJlc3VsdCkKKyAgICAgICAgICAgICAgICAg
ICAgICAgIHx8IChyZXN1bHQuZGVlcEVxdWl2YWxlbnQoKS5hbmNob3JOb2RlKCkgPT0gc3RhcnQu
ZGVlcEVxdWl2YWxlbnQoKS5hbmNob3JOb2RlKCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAmJiByZXN1bHQuZGVlcEVxdWl2YWxlbnQoKS5hbmNob3JUeXBlKCkgPT0gUG9zaXRpb246OlBv
c2l0aW9uSXNBZnRlckFuY2hvcgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICYmIHN0YXJ0
LmRlZXBFcXVpdmFsZW50KCkuYW5jaG9yVHlwZSgpID09IFBvc2l0aW9uOjpQb3NpdGlvbklzQmVm
b3JlQW5jaG9yKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgICAg
ICAgICAgICAgIHN0YXJ0ID0gcmVzdWx0OworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAg
IH0KKyAgICAgICAgfQorICAgIH0gZWxzZSB7CisgICAgICAgIGlmICh3aXRoaW5Vbml0T2ZHcmFu
dWxhcml0eSkKKyAgICAgICAgICAgIHJlc3VsdCA9IHN0YXJ0T2ZXb3JkKHZwLCBMZWZ0V29yZElm
T25Cb3VuZGFyeSk7CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgLy8gVGhpcyBpcyBjb21w
bGljYXRlZCBiZWNhdXNlOgorICAgICAgICAgICAgLy8gICBXaGVuIGdpdmVuICJCbGFoIGJsYWgu
fCIsIGVuZE9mV29yZCBpcyAiQmxhaCBibGFofC4iLCBhbmQgcHJldmlvdXNXb3JkUG9zaXRpb24g
aXMgIkJsYWh8IGJsYWguIgorICAgICAgICAgICAgLy8gICBXaGVuIGdpdmVuICJCbGFoIGJsYWgu
IHwiLCBlbmRPZldvcmQgaXMgIkJsYWggYmxhaC58ICIsIGFuZCBwcmV2aW91c1dvcmRQb3NpdGlv
biBpcyAiQmxhaCB8YmxhaC4gIi4KKyAgICAgICAgICAgIFZpc2libGVQb3NpdGlvbiBlbmQgPSBl
bmRPZldvcmQodnAsIExlZnRXb3JkSWZPbkJvdW5kYXJ5KTsKKyAgICAgICAgICAgIGlmIChlbmQg
PCB2cCAmJiBlbmQgIT0gc3RhcnRPZldvcmQoZW5kKSkKKyAgICAgICAgICAgICAgICByZXN1bHQg
PSBlbmQ7CisgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICBlbmQgPSB2cDsKKyAg
ICAgICAgICAgICAgICB3aGlsZSAodHJ1ZSkgeworICAgICAgICAgICAgICAgICAgICByZXN1bHQg
PSBlbmRPZldvcmQocHJldmlvdXNXb3JkUG9zaXRpb24oZW5kKSwgUmlnaHRXb3JkSWZPbkJvdW5k
YXJ5KTsKKworICAgICAgICAgICAgICAgICAgICBpZiAocmVzdWx0ID09IGVuZCkKKyAgICAgICAg
ICAgICAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgICAgICAgICAgICAgIGlmIChyZXN1bHQu
aXNOdWxsKCkgfHwgcmVzdWx0ID4gZW5kKQorICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJu
IFZpc2libGVQb3NpdGlvbigpOworCisgICAgICAgICAgICAgICAgICAgIGlmIChyZXN1bHQgIT0g
c3RhcnRPZldvcmQocmVzdWx0KSkKKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworCisg
ICAgICAgICAgICAgICAgICAgIGVuZCA9IHJlc3VsdDsKKyAgICAgICAgICAgICAgICB9CisgICAg
ICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisgICAgCisgICAgaWYgKHJlc3VsdCA9PSB2cCkK
KyAgICAgICAgcmV0dXJuIFZpc2libGVQb3NpdGlvbigpOworICAgIAorICAgIHJldHVybiByZXN1
bHQ7Cit9CisKK3N0YXRpYyBWaXNpYmxlUG9zaXRpb24gbmV4dFNlbnRlbmNlQm91bmRhcnlJbkRp
cmVjdGlvbihjb25zdCBWaXNpYmxlUG9zaXRpb24mIHZwLCBTZWxlY3Rpb25EaXJlY3Rpb24gZGly
ZWN0aW9uKQoreworICAgIGJvb2wgdXNlRG93bnN0cmVhbSA9IGRpcmVjdGlvbklzRG93bnN0cmVh
bShkaXJlY3Rpb24pOworICAgIGJvb2wgd2l0aGluVW5pdE9mR3JhbnVsYXJpdHkgPSB3aXRoaW5U
ZXh0VW5pdE9mR3JhbnVsYXJpdHkodnAsIFNlbnRlbmNlR3JhbnVsYXJpdHksIGRpcmVjdGlvbik7
CisgICAgVmlzaWJsZVBvc2l0aW9uIHJlc3VsdDsKKworICAgIGlmICh3aXRoaW5Vbml0T2ZHcmFu
dWxhcml0eSkKKyAgICAgICAgcmVzdWx0ID0gdXNlRG93bnN0cmVhbSA/IGVuZE9mU2VudGVuY2Uo
dnApIDogc3RhcnRPZlNlbnRlbmNlKHZwKTsKKyAgICBlbHNlIHsKKyAgICAgICAgcmVzdWx0ID0g
dXNlRG93bnN0cmVhbSA/IG5leHRTZW50ZW5jZVBvc2l0aW9uKHZwKSA6IHByZXZpb3VzU2VudGVu
Y2VQb3NpdGlvbih2cCk7CisgICAgICAgIGlmIChyZXN1bHQuaXNOdWxsKCkgfHwgcmVzdWx0ID09
IHZwKQorICAgICAgICAgICAgcmV0dXJuIFZpc2libGVQb3NpdGlvbigpOworCisgICAgICAgIHJl
c3VsdCA9IHVzZURvd25zdHJlYW0gPyBzdGFydE9mU2VudGVuY2UodnApIDogZW5kT2ZTZW50ZW5j
ZSh2cCk7CisgICAgfQorCisgICAgaWYgKHJlc3VsdCA9PSB2cCkKKyAgICAgICAgcmV0dXJuIFZp
c2libGVQb3NpdGlvbigpOworCisgICAgQVNTRVJUKHVzZURvd25zdHJlYW0gPyAocmVzdWx0ID4g
dnApIDogKHJlc3VsdCA8IHZwKSk7CisKKyAgICByZXR1cm4gcmVzdWx0OworfQorCitzdGF0aWMg
VmlzaWJsZVBvc2l0aW9uIG5leHRMaW5lQm91bmRhcnlJbkRpcmVjdGlvbihjb25zdCBWaXNpYmxl
UG9zaXRpb24mIHZwLCBTZWxlY3Rpb25EaXJlY3Rpb24gZGlyZWN0aW9uKQoreworICAgIGJvb2wg
dXNlRG93bnN0cmVhbSA9IGRpcmVjdGlvbklzRG93bnN0cmVhbShkaXJlY3Rpb24pOworICAgIFZp
c2libGVQb3NpdGlvbiByZXN1bHQgPSB2cDsKKworICAgIGlmICh1c2VEb3duc3RyZWFtKSB7Cisg
ICAgICAgIHJlc3VsdC5zZXRBZmZpbml0eShET1dOU1RSRUFNKTsKKyAgICAgICAgcmVzdWx0ID0g
aXNFbmRPZkxpbmUocmVzdWx0KSA/IHN0YXJ0T2ZMaW5lKG5leHRMaW5lUG9zaXRpb24ocmVzdWx0
LCByZXN1bHQubGluZURpcmVjdGlvblBvaW50Rm9yQmxvY2tEaXJlY3Rpb25OYXZpZ2F0aW9uKCkp
KSA6IGVuZE9mTGluZShyZXN1bHQpOworICAgIH0gZWxzZSB7CisgICAgICAgIHJlc3VsdC5zZXRB
ZmZpbml0eShWUF9VUFNUUkVBTV9JRl9QT1NTSUJMRSk7CisgICAgICAgIHJlc3VsdCA9IGlzU3Rh
cnRPZkxpbmUocmVzdWx0KSA/IGVuZE9mTGluZShwcmV2aW91c0xpbmVQb3NpdGlvbihyZXN1bHQs
IHJlc3VsdC5saW5lRGlyZWN0aW9uUG9pbnRGb3JCbG9ja0RpcmVjdGlvbk5hdmlnYXRpb24oKSkp
IDogc3RhcnRPZkxpbmUocmVzdWx0KTsKKyAgICB9CisKKyAgICByZXR1cm4gcmVzdWx0OworfQor
CitzdGF0aWMgVmlzaWJsZVBvc2l0aW9uIG5leHRQYXJhZ3JhcGhCb3VuZGFyeUluRGlyZWN0aW9u
KGNvbnN0IFZpc2libGVQb3NpdGlvbiYgdnAsIFNlbGVjdGlvbkRpcmVjdGlvbiBkaXJlY3Rpb24p
Cit7CisgICAgYm9vbCB1c2VEb3duc3RyZWFtID0gZGlyZWN0aW9uSXNEb3duc3RyZWFtKGRpcmVj
dGlvbik7CisgICAgYm9vbCB3aXRoaW5Vbml0T2ZHcmFudWxhcml0eSA9IHdpdGhpblRleHRVbml0
T2ZHcmFudWxhcml0eSh2cCwgUGFyYWdyYXBoR3JhbnVsYXJpdHksIGRpcmVjdGlvbik7CisgICAg
VmlzaWJsZVBvc2l0aW9uIHJlc3VsdDsKKworICAgIGlmICghd2l0aGluVW5pdE9mR3JhbnVsYXJp
dHkpCisgICAgICAgIHJlc3VsdCA9ICB1c2VEb3duc3RyZWFtID8gc3RhcnRPZlBhcmFncmFwaChu
ZXh0UGFyYWdyYXBoUG9zaXRpb24odnAsIHZwLmxpbmVEaXJlY3Rpb25Qb2ludEZvckJsb2NrRGly
ZWN0aW9uTmF2aWdhdGlvbigpKSkgOiBlbmRPZlBhcmFncmFwaChwcmV2aW91c1BhcmFncmFwaFBv
c2l0aW9uKHZwLCB2cC5saW5lRGlyZWN0aW9uUG9pbnRGb3JCbG9ja0RpcmVjdGlvbk5hdmlnYXRp
b24oKSkpOworICAgIGVsc2UKKyAgICAgICAgcmVzdWx0ID0gdXNlRG93bnN0cmVhbSA/IGVuZE9m
UGFyYWdyYXBoKHZwKSA6IHN0YXJ0T2ZQYXJhZ3JhcGgodnApOworCisgICAgcmV0dXJuIHJlc3Vs
dDsKK30KKworc3RhdGljIFZpc2libGVQb3NpdGlvbiBuZXh0RG9jdW1lbnRCb3VuZGFyeUluRGly
ZWN0aW9uKGNvbnN0IFZpc2libGVQb3NpdGlvbiYgdnAsIFNlbGVjdGlvbkRpcmVjdGlvbiBkaXJl
Y3Rpb24pCit7CisgICAgcmV0dXJuIGRpcmVjdGlvbklzRG93bnN0cmVhbShkaXJlY3Rpb24pID8g
ZW5kT2ZEb2N1bWVudCh2cCkgOiBzdGFydE9mRG9jdW1lbnQodnApOworfQorCitWaXNpYmxlUG9z
aXRpb24gcG9zaXRpb25PZk5leHRCb3VuZGFyeU9mR3JhbnVsYXJpdHkoY29uc3QgVmlzaWJsZVBv
c2l0aW9uJiB2cCwgVGV4dEdyYW51bGFyaXR5IGdyYW51bGFyaXR5LCBTZWxlY3Rpb25EaXJlY3Rp
b24gZGlyZWN0aW9uKQoreworICAgIHN3aXRjaCAoZ3JhbnVsYXJpdHkpIHsKKyAgICBjYXNlIENo
YXJhY3RlckdyYW51bGFyaXR5OgorICAgICAgICByZXR1cm4gbmV4dENoYXJhY3RlckJvdW5kYXJ5
SW5EaXJlY3Rpb24odnAsIGRpcmVjdGlvbik7CisgICAgY2FzZSBXb3JkR3JhbnVsYXJpdHk6Cisg
ICAgICAgIHJldHVybiBuZXh0V29yZEJvdW5kYXJ5SW5EaXJlY3Rpb24odnAsIGRpcmVjdGlvbik7
CisgICAgY2FzZSBTZW50ZW5jZUdyYW51bGFyaXR5OgorICAgICAgICByZXR1cm4gbmV4dFNlbnRl
bmNlQm91bmRhcnlJbkRpcmVjdGlvbih2cCwgZGlyZWN0aW9uKTsKKyAgICBjYXNlIExpbmVHcmFu
dWxhcml0eToKKyAgICAgICAgcmV0dXJuIG5leHRMaW5lQm91bmRhcnlJbkRpcmVjdGlvbih2cCwg
ZGlyZWN0aW9uKTsKKyAgICBjYXNlIFBhcmFncmFwaEdyYW51bGFyaXR5OgorICAgICAgICByZXR1
cm4gbmV4dFBhcmFncmFwaEJvdW5kYXJ5SW5EaXJlY3Rpb24odnAsIGRpcmVjdGlvbik7CisgICAg
Y2FzZSBEb2N1bWVudEdyYW51bGFyaXR5OgorICAgICAgICByZXR1cm4gbmV4dERvY3VtZW50Qm91
bmRhcnlJbkRpcmVjdGlvbih2cCwgZGlyZWN0aW9uKTsKKyAgICBkZWZhdWx0OgorICAgICAgICBB
U1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgcmV0dXJuIFZpc2libGVQb3NpdGlvbigpOwor
ICAgIH0KK30KKworUGFzc1JlZlB0cjxSYW5nZT4gZW5jbG9zaW5nVGV4dFVuaXRPZkdyYW51bGFy
aXR5KGNvbnN0IFZpc2libGVQb3NpdGlvbiYgdnAsIFRleHRHcmFudWxhcml0eSBncmFudWxhcml0
eSwgU2VsZWN0aW9uRGlyZWN0aW9uIGRpcmVjdGlvbikKK3sKKyAgICAvLyBUaGlzIGlzIHBhcnRp
Y3VsYXJseSBpbmVmZmljaWVudC4gIFdlIGNvdWxkIGVhc2lseSBvYnRhaW4gdGhlIGFuc3dlciB3
aXRoIHRoZSBib3VuZGFyaWVzIGNvbXB1dGVkIGJlbG93LgorICAgIGlmICghd2l0aGluVGV4dFVu
aXRPZkdyYW51bGFyaXR5KHZwLCBncmFudWxhcml0eSwgZGlyZWN0aW9uKSkKKyAgICAgICAgcmV0
dXJuIDA7CisKKyAgICBWaXNpYmxlUG9zaXRpb24gcHJldkJvdW5kYXJ5OworICAgIFZpc2libGVQ
b3NpdGlvbiBuZXh0Qm91bmRhcnk7CisgICAgYm9vbCB1c2VEb3duc3RyZWFtID0gZGlyZWN0aW9u
SXNEb3duc3RyZWFtKGRpcmVjdGlvbik7CisKKyAgICBzd2l0Y2ggKGdyYW51bGFyaXR5KSB7Cisg
ICAgICAgIGNhc2UgQ2hhcmFjdGVyR3JhbnVsYXJpdHk6CisgICAgICAgICAgICBwcmV2Qm91bmRh
cnkgPSB2cDsKKyAgICAgICAgICAgIG5leHRCb3VuZGFyeSA9IHByZXZCb3VuZGFyeS5uZXh0KCk7
CisgICAgICAgICAgICBicmVhazsKKworICAgICAgICBjYXNlIFdvcmRHcmFudWxhcml0eToKKyAg
ICAgICAgICAgIC8vIE5COiAiTGVmdCIgYW5kICJSaWdodCIgaW4gdGhpcyBjb250ZXh0IGFwcGFy
ZW50bHkgbWVhbiAidXBzdHJlYW0vcHJldmlvdXMiIGFuZCAiZG93bnN0cmVhbS9uZXh0Ii4KKyAg
ICAgICAgICAgIGlmICh1c2VEb3duc3RyZWFtKSB7CisgICAgICAgICAgICAgICAgcHJldkJvdW5k
YXJ5ID0gc3RhcnRPZldvcmQodnAsIFJpZ2h0V29yZElmT25Cb3VuZGFyeSk7CisgICAgICAgICAg
ICAgICAgbmV4dEJvdW5kYXJ5ID0gZW5kT2ZXb3JkKHZwLCBSaWdodFdvcmRJZk9uQm91bmRhcnkp
OworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBwcmV2Qm91bmRhcnkgPSBz
dGFydE9mV29yZCh2cCwgTGVmdFdvcmRJZk9uQm91bmRhcnkpOworICAgICAgICAgICAgICAgIG5l
eHRCb3VuZGFyeSA9IGVuZE9mV29yZCh2cCwgTGVmdFdvcmRJZk9uQm91bmRhcnkpOworICAgICAg
ICAgICAgfQorICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSBTZW50ZW5jZUdyYW51
bGFyaXR5OgorICAgICAgICAgICAgcHJldkJvdW5kYXJ5ID0gc3RhcnRPZlNlbnRlbmNlKHZwKTsK
KyAgICAgICAgICAgIG5leHRCb3VuZGFyeSA9IGVuZE9mU2VudGVuY2UodnApOworICAgICAgICAg
ICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSBMaW5lR3JhbnVsYXJpdHk6CisgICAgICAgICAgICBw
cmV2Qm91bmRhcnkgPSBzdGFydE9mTGluZSh2cCk7CisgICAgICAgICAgICBuZXh0Qm91bmRhcnkg
PSBlbmRPZkxpbmUodnApOworCisgICAgICAgICAgICBpZiAocHJldkJvdW5kYXJ5ID09IG5leHRC
b3VuZGFyeSkgeworICAgICAgICAgICAgICAgIG5leHRCb3VuZGFyeSA9IG5leHRMaW5lUG9zaXRp
b24obmV4dEJvdW5kYXJ5LCAwKTsKKyAgICAgICAgICAgICAgICBuZXh0Qm91bmRhcnkuc2V0QWZm
aW5pdHkoVVBTVFJFQU0pOworICAgICAgICAgICAgICAgIGlmICghaW5TYW1lTGluZShwcmV2Qm91
bmRhcnksIG5leHRCb3VuZGFyeSkpCisgICAgICAgICAgICAgICAgICAgIG5leHRCb3VuZGFyeSA9
IHZwLm5leHQoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAg
IGNhc2UgUGFyYWdyYXBoR3JhbnVsYXJpdHk6CisgICAgICAgICAgICBwcmV2Qm91bmRhcnkgPSBz
dGFydE9mUGFyYWdyYXBoKHZwKTsKKyAgICAgICAgICAgIG5leHRCb3VuZGFyeSA9IGVuZE9mUGFy
YWdyYXBoKHZwKTsKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGNhc2UgRG9jdW1lbnRH
cmFudWxhcml0eToKKyAgICAgICAgICAgIHByZXZCb3VuZGFyeSA9IHN0YXJ0T2ZEb2N1bWVudCh2
cCk7CisgICAgICAgICAgICBuZXh0Qm91bmRhcnkgPSBlbmRPZkRvY3VtZW50KHZwKTsKKyAgICAg
ICAgICAgIGJyZWFrOworCisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsKKyAgICAgICAgICAgIHJldHVybiAwOworICAgIH0KKworICAgIGlmIChwcmV2
Qm91bmRhcnkuaXNOdWxsKCkgfHwgbmV4dEJvdW5kYXJ5LmlzTnVsbCgpKQorICAgICAgICByZXR1
cm4gMDsKKworICAgIGlmICh2cCA8IHByZXZCb3VuZGFyeSB8fCB2cCA+IG5leHRCb3VuZGFyeSkK
KyAgICAgICAgcmV0dXJuIDA7CisKKyAgICBSZWZQdHI8UmFuZ2U+IHJhbmdlID0gUmFuZ2U6OmNy
ZWF0ZShwcmV2Qm91bmRhcnkuZGVlcEVxdWl2YWxlbnQoKS5kZXByZWNhdGVkTm9kZSgpLT5kb2N1
bWVudCgpLCBwcmV2Qm91bmRhcnksIG5leHRCb3VuZGFyeSk7CisKKyAgICByZXR1cm4gcmFuZ2U7
Cit9CisKK2ludCBkaXN0YW5jZUJldHdlZW5Qb3NpdGlvbnMoY29uc3QgVmlzaWJsZVBvc2l0aW9u
JiB2cCwgY29uc3QgVmlzaWJsZVBvc2l0aW9uJiBvdGhlcikKK3sKKyAgICBpZiAodnAuaXNOdWxs
KCkgfHwgb3RoZXIuaXNOdWxsKCkpCisgICAgICAgIHJldHVybiAwOworCisgICAgYm9vbCB0aGlz
SXNTdGFydCA9ICh2cCA8IG90aGVyKTsKKworICAgIC8vIFN0YXJ0IG11c3QgY29tZSBmaXJzdCBp
biB0aGUgUmFuZ2UgY29uc3RydWN0b3IuCisgICAgUmVmUHRyPFJhbmdlPiByYW5nZSA9IFJhbmdl
OjpjcmVhdGUodnAuZGVlcEVxdWl2YWxlbnQoKS5kZXByZWNhdGVkTm9kZSgpLT5kb2N1bWVudCgp
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh0aGlzSXNTdGFydCA/
IHZwIDogb3RoZXIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh0
aGlzSXNTdGFydCA/IG90aGVyIDogdnApKTsKKyAgICBpbnQgZGlzdGFuY2UgPSBUZXh0SXRlcmF0
b3I6OnJhbmdlTGVuZ3RoKHJhbmdlLmdldCgpKTsKKworICAgIHJldHVybiAodGhpc0lzU3RhcnQg
PyAtZGlzdGFuY2UgOiBkaXN0YW5jZSk7Cit9CisKK1Bhc3NSZWZQdHI8UmFuZ2U+IHdvcmRSYW5n
ZUZyb21Qb3NpdGlvbihjb25zdCBWaXNpYmxlUG9zaXRpb24mIHBvc2l0aW9uKQoreworICAgIEFT
U0VSVChwb3NpdGlvbi5pc05vdE51bGwoKSk7CisKKyAgICBSZWZQdHI8UmFuZ2U+IHJhbmdlID0g
ZW5jbG9zaW5nVGV4dFVuaXRPZkdyYW51bGFyaXR5KHBvc2l0aW9uLCBXb3JkR3JhbnVsYXJpdHks
IERpcmVjdGlvbkJhY2t3YXJkKTsKKworICAgIGlmICghcmFuZ2UpIHsKKyAgICAgICAgLy8gV2Ug
Y291bGQgYmUgYXQgdGhlIHN0YXJ0IG9mIGEgd29yZCwgdHJ5IGZvcndhcmQuCisgICAgICAgIHJh
bmdlID0gZW5jbG9zaW5nVGV4dFVuaXRPZkdyYW51bGFyaXR5KHBvc2l0aW9uLCBXb3JkR3JhbnVs
YXJpdHksIERpcmVjdGlvbkZvcndhcmQpOworICAgIH0KKyAgICBpZiAocmFuZ2UpCisgICAgICAg
IHJldHVybiByYW5nZTsKKworICAgIFZpc2libGVQb3NpdGlvbiBjdXJyZW50UG9zaXRpb24gPSBw
b3NpdGlvbjsKKyAgICBkbyB7CisgICAgICAgIGN1cnJlbnRQb3NpdGlvbiA9IHBvc2l0aW9uT2ZO
ZXh0Qm91bmRhcnlPZkdyYW51bGFyaXR5KGN1cnJlbnRQb3NpdGlvbiwgV29yZEdyYW51bGFyaXR5
LCBEaXJlY3Rpb25CYWNrd2FyZCk7CisgICAgfSB3aGlsZSAoY3VycmVudFBvc2l0aW9uLmlzTm90
TnVsbCgpICYmICFhdEJvdW5kYXJ5T2ZHcmFudWxhcml0eShjdXJyZW50UG9zaXRpb24sIFdvcmRH
cmFudWxhcml0eSwgRGlyZWN0aW9uQmFja3dhcmQpKTsKKworICAgIC8vIElmIHRoZSBwb3NpdGlv
biBpcyBhbiBlbXB0eSBwYXJhZ3JhcGggYW5kIGF0IHRoZSBlbmQgb2YgdGhlIGRvY3VtZW50Cisg
ICAgLy8gdGhlIHdvcmQgaXRlcmF0b3IgY291bGQgbm90IHBhc3MgdGhlIHBhcmFncmFwaCBib3Vu
ZGFyeSwgdGhlcmVmb3JlIGl0ZXJhdGluZyB0bworICAgIC8vIHRoZSBwcmV2aW91cyBsaW5lIGlz
IHJlcXVpcmVkLgorICAgIGlmIChjdXJyZW50UG9zaXRpb24uaXNOdWxsKCkgJiYgaXNFbmRPZkRv
Y3VtZW50KHBvc2l0aW9uKSkgeworICAgICAgICBWaXNpYmxlUG9zaXRpb24gcHJldmlvdXNMaW5l
UG9zaXRpb24gPSBwb3NpdGlvbk9mTmV4dEJvdW5kYXJ5T2ZHcmFudWxhcml0eShwb3NpdGlvbiwg
TGluZUdyYW51bGFyaXR5LCBEaXJlY3Rpb25CYWNrd2FyZCk7CisgICAgICAgIGlmIChwcmV2aW91
c0xpbmVQb3NpdGlvbi5pc05vdE51bGwoKSkgeworICAgICAgICAgICAgY3VycmVudFBvc2l0aW9u
ID0gcG9zaXRpb25PZk5leHRCb3VuZGFyeU9mR3JhbnVsYXJpdHkocHJldmlvdXNMaW5lUG9zaXRp
b24sIFdvcmRHcmFudWxhcml0eSwgRGlyZWN0aW9uQmFja3dhcmQpOworICAgICAgICAgICAgaWYg
KGN1cnJlbnRQb3NpdGlvbi5pc051bGwoKSkKKyAgICAgICAgICAgICAgICBjdXJyZW50UG9zaXRp
b24gPSBwcmV2aW91c0xpbmVQb3NpdGlvbjsKKyAgICAgICAgfQorICAgIH0KKworICAgIGlmIChj
dXJyZW50UG9zaXRpb24uaXNOdWxsKCkpCisgICAgICAgIGN1cnJlbnRQb3NpdGlvbiA9IHBvc2l0
aW9uT2ZOZXh0Qm91bmRhcnlPZkdyYW51bGFyaXR5KHBvc2l0aW9uLCBXb3JkR3JhbnVsYXJpdHks
IERpcmVjdGlvbkZvcndhcmQpOworCisgICAgaWYgKGN1cnJlbnRQb3NpdGlvbi5pc05vdE51bGwo
KSkgeworICAgICAgICByYW5nZSA9IFJhbmdlOjpjcmVhdGUocG9zaXRpb24uZGVlcEVxdWl2YWxl
bnQoKS5kZXByZWNhdGVkTm9kZSgpLT5kb2N1bWVudCgpLCBjdXJyZW50UG9zaXRpb24sIHBvc2l0
aW9uKTsKKyAgICAgICAgQVNTRVJUKHJhbmdlKTsKKyAgICB9CisgICAgcmV0dXJuIHJhbmdlOwor
fQorCitWaXNpYmxlUG9zaXRpb24gY2xvc2VzdFdvcmRCb3VuZGFyeUZvclBvc2l0aW9uKGNvbnN0
IFZpc2libGVQb3NpdGlvbiYgcG9zaXRpb24pCit7CisgICAgVmlzaWJsZVBvc2l0aW9uIHJlc3Vs
dDsKKworICAgIC8vIG1vdmUgdGhlIHRoZSBwb3NpdGlvbiBhdCB0aGUgZW5kIG9mIHRoZSB3b3Jk
CisgICAgaWYgKGF0Qm91bmRhcnlPZkdyYW51bGFyaXR5KHBvc2l0aW9uLCBMaW5lR3JhbnVsYXJp
dHksIERpcmVjdGlvbkZvcndhcmQpKSB7CisgICAgICAgIC8vIERvbid0IGNyb3NzIGxpbmUgYm91
bmRhcmllcy4KKyAgICAgICAgcmVzdWx0ID0gcG9zaXRpb247CisgICAgfSBlbHNlIGlmICh3aXRo
aW5UZXh0VW5pdE9mR3JhbnVsYXJpdHkocG9zaXRpb24sIFdvcmRHcmFudWxhcml0eSwgRGlyZWN0
aW9uRm9yd2FyZCkpIHsKKyAgICAgICAgLy8gVGhlIHBvc2l0aW9uIGxpZXMgd2l0aGluIGEgd29y
ZC4KKyAgICAgICAgUmVmUHRyPFJhbmdlPiB3b3JkUmFuZ2UgPSBlbmNsb3NpbmdUZXh0VW5pdE9m
R3JhbnVsYXJpdHkocG9zaXRpb24sIFdvcmRHcmFudWxhcml0eSwgRGlyZWN0aW9uRm9yd2FyZCk7
CisKKyAgICAgICAgcmVzdWx0ID0gd29yZFJhbmdlLT5zdGFydFBvc2l0aW9uKCk7CisgICAgICAg
IGlmIChkaXN0YW5jZUJldHdlZW5Qb3NpdGlvbnMocG9zaXRpb24sIHJlc3VsdCkgPiAxKQorICAg
ICAgICAgICAgcmVzdWx0ID0gd29yZFJhbmdlLT5lbmRQb3NpdGlvbigpOworICAgIH0gZWxzZSBp
ZiAoYXRCb3VuZGFyeU9mR3JhbnVsYXJpdHkocG9zaXRpb24sIFdvcmRHcmFudWxhcml0eSwgRGly
ZWN0aW9uQmFja3dhcmQpKSB7CisgICAgICAgIC8vIFRoZSBwb3NpdGlvbiBpcyBhdCB0aGUgZW5k
IG9mIGEgd29yZC4KKyAgICAgICAgcmVzdWx0ID0gcG9zaXRpb247CisgICAgfSBlbHNlIHsKKyAg
ICAgICAgLy8gVGhlIHBvc2l0aW9uIGlzIG5vdCB3aXRoaW4gYSB3b3JkLgorICAgICAgICAvLyBH
byB0byB0aGUgbmV4dCBib3VuZGFyeS4KKyAgICAgICAgcmVzdWx0ID0gcG9zaXRpb25PZk5leHRC
b3VuZGFyeU9mR3JhbnVsYXJpdHkocG9zaXRpb24sIFdvcmRHcmFudWxhcml0eSwgRGlyZWN0aW9u
Rm9yd2FyZCk7CisKKyAgICAgICAgLy8gSWYgdGhlcmUgaXMgbm8gc3VjaCBib3VuZGFyeSB3ZSBn
byB0byB0aGUgZW5kIG9mIHRoZSBlbGVtZW50LgorICAgICAgICBpZiAocmVzdWx0LmlzTnVsbCgp
KQorICAgICAgICAgICAgcmVzdWx0ID0gZW5kT2ZFZGl0YWJsZUNvbnRlbnQocG9zaXRpb24pOwor
ICAgIH0KKyAgICByZXR1cm4gcmVzdWx0OworfQorCisjZW5kaWYKKwogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvZWRpdGluZy9WaXNpYmxlVW5pdHMuaCBiL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvVmlzaWJsZVVuaXRzLmgKaW5kZXggNTUxMDQzMDY4YTNkZjgzM2FlMjM3MzcxNDgzZmJk
OTQxNGY1OThjMy4uMGIxZTQzNmQ5MTQ0ZTU1YWVmMjIyZjM5MmE1NTcxODJlNmJiMGZlYSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9WaXNpYmxlVW5pdHMuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL1Zpc2libGVVbml0cy5oCkBAIC0yOCw2ICsyOCw3IEBACiAKICNp
bmNsdWRlICJFZGl0aW5nQm91bmRhcnkuaCIKICNpbmNsdWRlICJUZXh0RGlyZWN0aW9uLmgiCisj
aW5jbHVkZSAiVmlzaWJsZVNlbGVjdGlvbi5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAg
LTk1LDYgKzk2LDE1IEBAIFZpc2libGVQb3NpdGlvbiBzdGFydE9mRWRpdGFibGVDb250ZW50KGNv
bnN0IFZpc2libGVQb3NpdGlvbiYpOwogVmlzaWJsZVBvc2l0aW9uIGVuZE9mRWRpdGFibGVDb250
ZW50KGNvbnN0IFZpc2libGVQb3NpdGlvbiYpOwogYm9vbCBpc0VuZE9mRWRpdGFibGVPck5vbkVk
aXRhYmxlQ29udGVudChjb25zdCBWaXNpYmxlUG9zaXRpb24mKTsKIAorI2lmIFBMQVRGT1JNKElP
UykKK2Jvb2wgYXRCb3VuZGFyeU9mR3JhbnVsYXJpdHkoY29uc3QgVmlzaWJsZVBvc2l0aW9uJiwg
VGV4dEdyYW51bGFyaXR5LCBTZWxlY3Rpb25EaXJlY3Rpb24pOworYm9vbCB3aXRoaW5UZXh0VW5p
dE9mR3JhbnVsYXJpdHkoY29uc3QgVmlzaWJsZVBvc2l0aW9uJiwgVGV4dEdyYW51bGFyaXR5LCBT
ZWxlY3Rpb25EaXJlY3Rpb24pOworVmlzaWJsZVBvc2l0aW9uIHBvc2l0aW9uT2ZOZXh0Qm91bmRh
cnlPZkdyYW51bGFyaXR5KGNvbnN0IFZpc2libGVQb3NpdGlvbiYsIFRleHRHcmFudWxhcml0eSwg
U2VsZWN0aW9uRGlyZWN0aW9uKTsKK1Bhc3NSZWZQdHI8UmFuZ2U+IGVuY2xvc2luZ1RleHRVbml0
T2ZHcmFudWxhcml0eShjb25zdCBWaXNpYmxlUG9zaXRpb24mLCBUZXh0R3JhbnVsYXJpdHksIFNl
bGVjdGlvbkRpcmVjdGlvbik7CitpbnQgZGlzdGFuY2VCZXR3ZWVuUG9zaXRpb25zKGNvbnN0IFZp
c2libGVQb3NpdGlvbiYsIGNvbnN0IFZpc2libGVQb3NpdGlvbiYpOworUGFzc1JlZlB0cjxSYW5n
ZT4gd29yZFJhbmdlRnJvbVBvc2l0aW9uKGNvbnN0IFZpc2libGVQb3NpdGlvbiYgcG9zaXRpb24p
OworVmlzaWJsZVBvc2l0aW9uIGNsb3Nlc3RXb3JkQm91bmRhcnlGb3JQb3NpdGlvbihjb25zdCBW
aXNpYmxlUG9zaXRpb24mIHBvc2l0aW9uKTsKKyNlbmRpZgogfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQogCiAjZW5kaWYgLy8gVmlzaWJsZVVuaXRzX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvaW9zL0RpY3RhdGlvbkNvbW1hbmRJT1MuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRp
dGluZy9pb3MvRGljdGF0aW9uQ29tbWFuZElPUy5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYWFhYjE0YzcyN2Zm
YzQ2YWY5OTIzMTIwZmQxMDg3YzhjMzU4ZTM3MQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvaW9zL0RpY3RhdGlvbkNvbW1hbmRJT1MuY3BwCkBAIC0wLDAgKzEsODUg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiRGljdGF0aW9u
Q29tbWFuZElPUy5oIgorCisjaW5jbHVkZSAiRG9jdW1lbnQuaCIKKyNpbmNsdWRlICJEb2N1bWVu
dE1hcmtlckNvbnRyb2xsZXIuaCIKKyNpbmNsdWRlICJFbGVtZW50LmgiCisjaW5jbHVkZSAiUG9z
aXRpb24uaCIKKyNpbmNsdWRlICJSYW5nZS5oIgorI2luY2x1ZGUgIlNtYXJ0UmVwbGFjZS5oIgor
I2luY2x1ZGUgIlRleHRJdGVyYXRvci5oIgorI2luY2x1ZGUgIlZpc2libGVVbml0cy5oIgorCitu
YW1lc3BhY2UgV2ViQ29yZSB7CisKK0RpY3RhdGlvbkNvbW1hbmRJT1M6OkRpY3RhdGlvbkNvbW1h
bmRJT1MoRG9jdW1lbnQmIGRvY3VtZW50LCBQYXNzT3duUHRyPFZlY3RvcjxWZWN0b3I8U3RyaW5n
PiA+ID4gZGljdGF0aW9uUGhyYXNlcywgUmV0YWluUHRyPGlkPiBtZXRhZGF0YSkKKyAgICA6IENv
bXBvc2l0ZUVkaXRDb21tYW5kKGRvY3VtZW50KQorICAgICwgbV9kaWN0YXRpb25QaHJhc2VzKGRp
Y3RhdGlvblBocmFzZXMpCisgICAgLCBtX21ldGFkYXRhKG1ldGFkYXRhKQoreworfQorCitEaWN0
YXRpb25Db21tYW5kSU9TOjp+RGljdGF0aW9uQ29tbWFuZElPUygpCit7Cit9CisKK3ZvaWQgRGlj
dGF0aW9uQ29tbWFuZElPUzo6ZG9BcHBseSgpCit7CisgICAgVmlzaWJsZVBvc2l0aW9uIGluc2Vy
dGlvblBvc2l0aW9uKHN0YXJ0aW5nU2VsZWN0aW9uKCkudmlzaWJsZVN0YXJ0KCkpOworICAgIAor
ICAgIHVuc2lnbmVkIHJlc3VsdExlbmd0aCA9IDA7CisgICAgc2l6ZV90IGRpY3RhdGlvblBocmFz
ZUNvdW50ID0gbV9kaWN0YXRpb25QaHJhc2VzLT5zaXplKCk7CisgICAgZm9yIChzaXplX3QgaSA9
IDA7IGkgPCBkaWN0YXRpb25QaHJhc2VDb3VudDsgaSsrKSB7CisgICAgCisgICAgICAgIGNvbnN0
IFN0cmluZyYgZmlyc3RJbnRlcnByZXRhdGlvbiA9IG1fZGljdGF0aW9uUGhyYXNlcy0+YXQoaSlb
MF07CisgICAgICAgIHJlc3VsdExlbmd0aCArPSBmaXJzdEludGVycHJldGF0aW9uLmxlbmd0aCgp
OworICAgICAgICBpbnB1dFRleHQoZmlyc3RJbnRlcnByZXRhdGlvbiwgdHJ1ZSk7CisgICAgICAg
IAorICAgICAgICBjb25zdCBWZWN0b3I8U3RyaW5nPiYgaW50ZXJwcmV0YXRpb25zID0gbV9kaWN0
YXRpb25QaHJhc2VzLT5hdChpKTsKKyAgICAgICAgCisgICAgICAgIGlmIChpbnRlcnByZXRhdGlv
bnMuc2l6ZSgpID4gMSkKKyAgICAgICAgICAgIGRvY3VtZW50KCkubWFya2VycygpLmFkZERpY3Rh
dGlvblBocmFzZVdpdGhBbHRlcm5hdGl2ZXNNYXJrZXIoZW5kaW5nU2VsZWN0aW9uKCkudG9Ob3Jt
YWxpemVkUmFuZ2UoKS5nZXQoKSwgaW50ZXJwcmV0YXRpb25zKTsKKyAgICAgICAgICAgIAorICAg
ICAgICBzZXRFbmRpbmdTZWxlY3Rpb24oVmlzaWJsZVNlbGVjdGlvbihlbmRpbmdTZWxlY3Rpb24o
KS52aXNpYmxlRW5kKCkpKTsKKyAgICB9CisgICAgCisgICAgVmlzaWJsZVBvc2l0aW9uIGFmdGVy
UmVzdWx0cyhlbmRpbmdTZWxlY3Rpb24oKS52aXNpYmxlRW5kKCkpOworICAgIAorICAgIEVsZW1l
bnQqIHJvb3QgPSBhZnRlclJlc3VsdHMucm9vdEVkaXRhYmxlRWxlbWVudCgpOworICAgIC8vIEZJ
WE1FOiBBZGQgdGhlIHJlc3VsdCBtYXJrZXIgdXNpbmcgYSBQb3NpdGlvbiBjYWNoZWQgYmVmb3Jl
IHJlc3VsdHMgYXJlIGluc2VydGVkLCBpbnN0ZWFkIG9mIHJlbHlpbmcgb24gVGV4dEl0ZXJhdG9y
cy4KKyAgICBSZWZQdHI8UmFuZ2U+IHJhbmdlVG9FbmQgPSBSYW5nZTo6Y3JlYXRlKGRvY3VtZW50
KCksIGNyZWF0ZUxlZ2FjeUVkaXRpbmdQb3NpdGlvbigoTm9kZSAqKXJvb3QsIDApLCBhZnRlclJl
c3VsdHMuZGVlcEVxdWl2YWxlbnQoKSk7CisgICAgaW50IGVuZEluZGV4ID0gVGV4dEl0ZXJhdG9y
OjpyYW5nZUxlbmd0aChyYW5nZVRvRW5kLmdldCgpLCB0cnVlKTsKKyAgICBpbnQgc3RhcnRJbmRl
eCA9IGVuZEluZGV4IC0gcmVzdWx0TGVuZ3RoOworICAgIAorICAgIGlmIChzdGFydEluZGV4ID49
IDApIHsKKyAgICAgICAgUmVmUHRyPFJhbmdlPiByZXN1bHRSYW5nZSA9IFRleHRJdGVyYXRvcjo6
cmFuZ2VGcm9tTG9jYXRpb25BbmRMZW5ndGgoZG9jdW1lbnQoKS5kb2N1bWVudEVsZW1lbnQoKSwg
c3RhcnRJbmRleCwgZW5kSW5kZXgsIHRydWUpOworICAgICAgICBkb2N1bWVudCgpLm1hcmtlcnMo
KS5hZGREaWN0YXRpb25SZXN1bHRNYXJrZXIocmVzdWx0UmFuZ2UuZ2V0KCksIG1fbWV0YWRhdGEp
OworICAgIH0KK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvZWRpdGluZy9pb3MvRGljdGF0aW9uQ29tbWFuZElPUy5oIGIvU291cmNlL1dlYkNv
cmUvZWRpdGluZy9pb3MvRGljdGF0aW9uQ29tbWFuZElPUy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmVkZGYwNTIw
ZWUyNjc3ZDAwMjdkYTkzYjIzNWYwMGRhOWY2ZmM4OTQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL2lvcy9EaWN0YXRpb25Db21tYW5kSU9TLmgKQEAgLTAsMCArMSw1
NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAq
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgRGljdGF0aW9uQ29tbWFuZElPU19oCisjZGVmaW5l
IERpY3RhdGlvbkNvbW1hbmRJT1NfaAorCisjaW5jbHVkZSAiQ29tcG9zaXRlRWRpdENvbW1hbmQu
aCIKKworI2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgorCit0eXBlZGVmIHN0cnVjdCBvYmpjX29i
amVjdCAqaWQ7CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgRGljdGF0aW9uQ29tbWFu
ZElPUyA6IHB1YmxpYyBDb21wb3NpdGVFZGl0Q29tbWFuZCB7CitwdWJsaWM6CisgICAgc3RhdGlj
IFBhc3NSZWZQdHI8RGljdGF0aW9uQ29tbWFuZElPUz4gY3JlYXRlKERvY3VtZW50JiBkb2N1bWVu
dCwgUGFzc093blB0cjxWZWN0b3I8VmVjdG9yPFN0cmluZz4gPiA+IGRpY3RhdGlvblBocmFzZSwg
UmV0YWluUHRyPGlkPiBtZXRhZGF0YSkKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFJlZihu
ZXcgRGljdGF0aW9uQ29tbWFuZElPUyhkb2N1bWVudCwgZGljdGF0aW9uUGhyYXNlLCBtZXRhZGF0
YSkpOworICAgIH0KKyAgICAKKyAgICB2aXJ0dWFsIH5EaWN0YXRpb25Db21tYW5kSU9TKCk7Citw
cml2YXRlOgorICAgIERpY3RhdGlvbkNvbW1hbmRJT1MoRG9jdW1lbnQmIGRvY3VtZW50LCBQYXNz
T3duUHRyPFZlY3RvcjxWZWN0b3I8U3RyaW5nPiA+ID4gZGljdGF0aW9uUGhyYXNlLCBSZXRhaW5Q
dHI8aWQ+IG1ldGFkYXRhKTsKKyAgICAKKyAgICB2aXJ0dWFsIHZvaWQgZG9BcHBseSgpOworICAg
IHZpcnR1YWwgRWRpdEFjdGlvbiBlZGl0aW5nQWN0aW9uKCkgY29uc3QgeyByZXR1cm4gRWRpdEFj
dGlvbkRpY3RhdGlvbjsgfQorICAgIAorICAgIE93blB0cjxWZWN0b3I8VmVjdG9yPFN0cmluZz4g
PiA+IG1fZGljdGF0aW9uUGhyYXNlczsKKyAgICBSZXRhaW5QdHI8aWQ+IG1fbWV0YWRhdGE7Cit9
OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvZWRpdGluZy9tYWMvRnJhbWVTZWxlY3Rpb25NYWMubW0gYi9Tb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL21hYy9GcmFtZVNlbGVjdGlvbk1hYy5tbQppbmRleCBjNjIxYjMzZDAwMjI0Y2Y4
NzU5OTQ4YTk5YjkyODQ1YjlhNTk0ODljLi5iYTRjMGNmOGFmNjlkN2Q4OGIyYzJmMTU5ZDA3ZWU2
ZmZlYzBlYjA2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hYy9GcmFtZVNl
bGVjdGlvbk1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hYy9GcmFtZVNlbGVj
dGlvbk1hYy5tbQpAQCAtMzIsNiArMzIsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKKyNp
ZiAhUExBVEZPUk0oSU9TKQogc3RhdGljIENHUmVjdCBhY2Nlc3NpYmlsaXR5Q29udmVydFNjcmVl
blJlY3QoQ0dSZWN0IGJvdW5kcykKIHsKICAgICBOU0FycmF5ICpzY3JlZW5zID0gW05TU2NyZWVu
IHNjcmVlbnNdOwpAQCAtNDMsNiArNDQsNyBAQCBzdGF0aWMgQ0dSZWN0IGFjY2Vzc2liaWxpdHlD
b252ZXJ0U2NyZWVuUmVjdChDR1JlY3QgYm91bmRzKQogICAgIAogICAgIHJldHVybiBib3VuZHM7
CiB9CisjZW5kaWYgLy8gIVBMQVRGT1JNKElPUykKICAgICAKICAgICAKIHZvaWQgRnJhbWVTZWxl
Y3Rpb246Om5vdGlmeUFjY2Vzc2liaWxpdHlGb3JTZWxlY3Rpb25DaGFuZ2UoKQpAQCAtNTQsNiAr
NTYsNyBAQCB2b2lkIEZyYW1lU2VsZWN0aW9uOjpub3RpZnlBY2Nlc3NpYmlsaXR5Rm9yU2VsZWN0
aW9uQ2hhbmdlKCkKICAgICAgICAgICAgIGNhY2hlLT5wb3N0Tm90aWZpY2F0aW9uKG1fc2VsZWN0
aW9uLnN0YXJ0KCkuZGVwcmVjYXRlZE5vZGUoKS0+cmVuZGVyZXIoKSwgQVhPYmplY3RDYWNoZTo6
QVhTZWxlY3RlZFRleHRDaGFuZ2VkLCBUYXJnZXRPYnNlcnZhYmxlUGFyZW50KTsKICAgICB9CiAK
KyNpZiAhUExBVEZPUk0oSU9TKQogICAgIC8vIGlmIHpvb20gZmVhdHVyZSBpcyBlbmFibGVkLCBp
bnNlcnRpb24gcG9pbnQgY2hhbmdlcyBzaG91bGQgdXBkYXRlIHRoZSB6b29tCiAgICAgaWYgKCFV
QVpvb21FbmFibGVkKCkgfHwgIW1fc2VsZWN0aW9uLmlzQ2FyZXQoKSkKICAgICAgICAgcmV0dXJu
OwpAQCAtNzYsNiArNzksNyBAQCB2b2lkIEZyYW1lU2VsZWN0aW9uOjpub3RpZnlBY2Nlc3NpYmls
aXR5Rm9yU2VsZWN0aW9uQ2hhbmdlKCkKICAgICBjZ1ZpZXdSZWN0ID0gYWNjZXNzaWJpbGl0eUNv
bnZlcnRTY3JlZW5SZWN0KGNnVmlld1JlY3QpOwogCiAgICAgVUFab29tQ2hhbmdlRm9jdXMoJmNn
Vmlld1JlY3QsICZjZ0NhcmV0UmVjdCwga1VBWm9vbUZvY3VzVHlwZUluc2VydGlvblBvaW50KTsK
KyNlbmRpZiAvLyAhUExBVEZPUk0oSU9TKQogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0FzeW5jRmlsZVN0cmVhbS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9maWxlYXBpL0FzeW5jRmlsZVN0cmVhbS5jcHAKaW5kZXggYzZiNDhkYWZj
MWJlMzU0YzBhNzI0Yjc5ODYyNTIwZTRjNTFlMDhkMi4uMzc0ZmFjMGUzNDc4ZDgzYzZlOWM3ZDY3
ZjEzMjNmMzI5ZWExN2U4OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9Bc3lu
Y0ZpbGVTdHJlYW0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvQXN5bmNGaWxlU3Ry
ZWFtLmNwcApAQCAtNDQsNiArNDQsMTAgQEAKICNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgog
I2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCisjaWYgUExBVEZPUk0oSU9TKQorI2lu
Y2x1ZGUgIldlYkNvcmVUaHJlYWQuaCIKKyNlbmRpZgorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
IHN0YXRpYyBQYXNzUmVmUHRyPEZpbGVUaHJlYWQ+IGNyZWF0ZUZpbGVUaHJlYWQoKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvZ2VuZXJhdGUtZXhwb3J0LWZpbGUgYi9Tb3VyY2UvV2ViQ29y
ZS9nZW5lcmF0ZS1leHBvcnQtZmlsZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40M2E5OTI3MDBlZGNkYzZhODE0YTFm
YmFmMjZlODU0OGViODYxZDkwCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvZ2Vu
ZXJhdGUtZXhwb3J0LWZpbGUKQEAgLTAsMCArMSwxNTUgQEAKKyMhL3Vzci9iaW4vcGVybCAtdwor
IworIyBDb3B5cmlnaHQgKEMpIDIwMDcsIDIwMDgsIDIwMDksIDIwMTAgQXBwbGUgSW5jLiAgQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworIyBhcmUgbWV0
OgorIyAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisjICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORCBBTlkKKyMgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBUSEUgSU1QTElFRAorIyBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisjIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQor
IyBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUworIyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisjIExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTgorIyBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUworIyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKwordXNlIHN0cmljdDsKK3VzZSB3YXJuaW5nczsKKwordXNlIEZpbGU6OkJhc2VuYW1lOwor
dXNlIEZpbGU6OkZpbmQ7Cit1c2UgRmlsZTo6VGVtcCBxdyh0ZW1wZmlsZSk7Cit1c2UgR2V0b3B0
OjpMb25nOworCitzdWIgcHJlcHJvY2Vzc29yRmxhZ3MoKTsKK3N1YiBwcmVwcm9jZXNzb3JNYWNy
b3MoJFxAKTsKK3N1YiBwcm9jZXNzKCQkJCk7CisKK215ICRzaG93SGVscCA9IDA7CitteSAkdmVy
Ym9zZSA9IDE7CisKK215ICRyZXN1bHQgPSBHZXRPcHRpb25zKAorICAgICJoZWxwIiAgICAgICAg
PT4gXCRzaG93SGVscCwKKyAgICAidmVyYm9zZSIgICAgID0+IFwkdmVyYm9zZSwKKyk7CitpZiAo
ISRyZXN1bHQgfHwgJHNob3dIZWxwIHx8IHNjYWxhcihAQVJHVikgIT0gMikgeworICAgIHByaW50
IFNUREVSUiBiYXNlbmFtZSgkMCkgLiAiIFstaHwtLWhlbHBdIFstdnwtLXZlcmJvc2VdIGluZmls
ZSBvdXRmaWxlXG4iOworICAgIGV4aXQgMTsKK30KKworbXkgJGluRmlsZSA9IHNoaWZ0IEBBUkdW
OworbXkgJG91dEZpbGUgPSBzaGlmdCBAQVJHVjsKKworbXkgJGFyY2g7CitpZiAoJG91dEZpbGUg
PX4gL1wuKFteLl0rKVwuZXhwJC8pIHsKKyAgICAkYXJjaCA9ICQxOworfQorZGllICJVbmtub3du
IGFyY2ghIiBpZiAhZGVmaW5lZCgkYXJjaCkgfHwgISRhcmNoOworCitwcmludCAiUHJvY2Vzc2lu
ZyAkaW5GaWxlIGZvciAkYXJjaC4uLlxuIiBpZiAkdmVyYm9zZTsKK3Byb2Nlc3MoJGluRmlsZSwg
JG91dEZpbGUsICRhcmNoKTsKKworZXhpdCAwOworCitzdWIgcHJlcHJvY2Vzc29yRmxhZ3MoKQor
eworICAgIG15IEBmZWF0dXJlcyA9IHNwbGl0KC9ccysvLCAkRU5We0dDQ19QUkVQUk9DRVNTT1Jf
REVGSU5JVElPTlN9KTsKKyAgICByZXR1cm4gQGZlYXR1cmVzOworfQorCitzdWIgcHJlcHJvY2Vz
c29yTWFjcm9zKCRcQCkKK3sKKyAgICBteSAoJGNjLCAkY2NfYXJncykgPSBAXzsKKworICAgIG15
IEBhcmdzID0gQCRjY19hcmdzOworCisgICAgcHVzaChAYXJncywgbWFwIHsgIi1EIiAuICRfIH0g
cHJlcHJvY2Vzc29yRmxhZ3MoKSk7CisKKyAgICBwdXNoKEBhcmdzLCBxdygtaW5jbHVkZSB3dGYv
UGxhdGZvcm0uaCAtaW5jbHVkZSB3dGYvQXNzZXJ0aW9ucy5oKSk7CisgICAgIyBTZXQgZnJhbWV3
b3JrIHNlYXJjaCBwYXRocyB0byBmaW5kIDxKYXZhU2NyaXB0Q29yZS9QbGF0Zm9ybS5oPi4gIFdp
dGhvdXQgdGhlc2UsIGNjCisgICAgIyBmaW5kcyAvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9K
YXZhU2NyaXB0Q29yZS5mcmFtZXdvcmsvUHJpdmF0ZUhlYWRlcnMvUGxhdGZvcm0uaAorICAgICMg
b3IgY29tcGxhaW5zIGlmIHlvdSBkb24ndCBoYXZlIHRoYXQgaW5zdGFsbGVkLiAgV2Ugc2VhcmNo
IEJVSUxUX1BST0RVQ1RTX0RJUiBmaXJzdAorICAgICMgZm9yIGxvY2FsIGRldmVsb3BlciBidWls
ZHMsIHRoZW4gdGhlIGluc3RhbGxhdGlvbiBwYXRoIGZvciBCJkkgYnVpbGRzLgorICAgIHB1c2go
QGFyZ3MsICItRiIgLiAkRU5We0JVSUxUX1BST0RVQ1RTX0RJUn0pIGlmICRFTlZ7QlVJTFRfUFJP
RFVDVFNfRElSfTsKKyAgICBwdXNoKEBhcmdzLCAiLUkiIC4gJEVOVntCVUlMVF9QUk9EVUNUU19E
SVJ9IC4gIi91c3IvbG9jYWwvaW5jbHVkZSIpIGlmICRFTlZ7QlVJTFRfUFJPRFVDVFNfRElSfTsK
KyAgICBwdXNoKEBhcmdzLCAiLUkiIC4gJEVOVntCVUlMVF9QUk9EVUNUU19ESVJ9IC4gJEVOVntT
REtST09UfSAuICIvdXNyL2xvY2FsL2luY2x1ZGUiKSBpZiAkRU5We0JVSUxUX1BST0RVQ1RTX0RJ
Un07CisgICAgIyBYY29kZSAzLjEgaXMgcmVxdWlyZWQgZm9yIFNES1JPT1QgdG8gYmUgc2V0Lgor
ICAgIGlmIChleGlzdHMgJEVOVntTWVNURU1fTElCUkFSWV9ESVJ9ICYmICRFTlZ7U1lTVEVNX0xJ
QlJBUllfRElSfSkgeworICAgICAgICBteSAkZnJhbWV3b3JrU2VhcmNoUGF0aCA9ICRFTlZ7U0RL
Uk9PVH0gLiAkRU5We1NZU1RFTV9MSUJSQVJZX0RJUn07CisgICAgICAgIGlmICgkRU5We1BMQVRG
T1JNX05BTUV9IGVxICJpcGhvbmVvcyIgfHwgJEVOVntQTEFURk9STV9OQU1FfSBlcSAiaXBob25l
c2ltdWxhdG9yIikgeworICAgICAgICAgICAgJGZyYW1ld29ya1NlYXJjaFBhdGggLj0gIi9Qcml2
YXRlRnJhbWV3b3JrcyI7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAkZnJhbWV3b3Jr
U2VhcmNoUGF0aCAuPSAiL0ZyYW1ld29ya3MiOworICAgICAgICB9CisgICAgICAgIHB1c2goQGFy
Z3MsICItRiIgLiAkZnJhbWV3b3JrU2VhcmNoUGF0aCk7CisgICAgfQorCisgICAgcHVzaChAYXJn
cywgIi1JIiAuICRFTlZ7QlVJTFRfUFJPRFVDVFNfRElSfSAuICRFTlZ7U0RLUk9PVH0gLiAiL3Vz
ci9sb2NhbC9pbmNsdWRlIikgaWYgJEVOVntCVUlMVF9QUk9EVUNUU19ESVJ9OworICAgIHB1c2go
QGFyZ3MsICItSSIgLiAkRU5We1NES1JPT1R9IC4gIi91c3IvbG9jYWwvaW5jbHVkZSIpOworCisg
ICAgIyBQcmludCBvdXQgI2RlZmluZSBsaW5lcyBmb3IgYWxsIG1hY3Jvcy4KKyAgICBwdXNoKEBh
cmdzLCBxdygtZE0gL2Rldi9udWxsKSk7CisKKyAgICBwcmludCBqb2luKCIgIiwgJGNjLCBAYXJn
cyksICJcbiIgaWYgJHZlcmJvc2U7CisgICAgbG9jYWwgJC8gPSB1bmRlZjsKKyAgICBvcGVuKEND
LCAiLXwiLCAkY2MsIEBhcmdzKSBvciBkaWUgIiQhIjsKKyAgICBteSAkbWFjcm9zID0gPENDPjsK
KyAgICBjbG9zZShDQyk7CisKKyAgICByZXR1cm4gJG1hY3JvczsKK30KKworc3ViIHByb2Nlc3Mo
JCQkKQoreworICAgIG15ICgkaW5GaWxlLCAkb3V0RmlsZSwgJGFyY2gpID0gQF87CisKKyAgICBp
ZiAoIWV4aXN0cyAkRU5We1NES1JPT1R9IG9yICEkRU5We1NES1JPT1R9KSB7CisgICAgICAgIGRp
ZSAiU0RLUk9PVCBlbnZpcm9ubWVudCB2YXJpYWJsZSBub3QgZm91bmQiOworICAgIH0KKworICAg
IGNob21wIChteSAkY2MgPSBgeGNydW4gLWZpbmQgY2NgKTsKKworICAgICMgUnVuIGNwcCAoLUUp
IGJ1dCBkb24ndCBwcmludCB0aGUgbGluZSBudW1iZXIgaW5mbyAoLVApLgorICAgIG15IEBhcmdz
ID0gcXcoLUUgLVApOworCisgICAgIyBQcm92aWRlIGEgZGVmYXVsdCBzb3VyY2UgdHlwZSBzaW5j
ZSAqLmluIGlzbid0IGEga25vd24gZmlsZSBleHRlbnNpb24uCisgICAgcHVzaChAYXJncywgcXco
LXN0ZD1nbnUrKzExIC14IGMrKykpOworCisgICAgIyBNYWtlIHN1cmUgY2Mga25vd3Mgd2hpY2gg
U0RLIHdlJ3JlIHVzaW5nLgorICAgIHB1c2goQGFyZ3MsICItaXN5c3Jvb3QiLCAkRU5We1NES1JP
T1R9KTsKKworICAgIHB1c2goQGFyZ3MsICItYXJjaCIsICRhcmNoKTsKKworICAgIG15ICRtYWNy
b3MgPSBwcmVwcm9jZXNzb3JNYWNyb3MoJGNjLCBAYXJncyk7CisKKyAgICBwdXNoKEBhcmdzLCAi
LW8iLCAkb3V0RmlsZSk7CisgICAgcHVzaChAYXJncywgIi0iKTsKKworICAgIHByaW50IGpvaW4o
IiAiLCAkY2MsIEBhcmdzKSwgIlxuIiBpZiAkdmVyYm9zZTsKKyAgICBvcGVuKENDLCAifC0iLCAk
Y2MsIEBhcmdzKSBvciBkaWUgIiQhIjsKKyAgICBvcGVuKElOLCAiPCIsICRpbkZpbGUpIG9yIGRp
ZSAiJCEiOworCisgICAgcHJpbnQgQ0MgJG1hY3JvczsKKyAgICB3aGlsZSAobXkgJGxpbmUgPSA8
SU4+KSB7CisgICAgICAgIG5leHQgaWYgKCRsaW5lID1+IC9eIy8gJiYgJGxpbmUgIX4gL14jXHMq
KGlmfGlmZGVmfGlmbmRlZnxlbHNlfGVsaWZ8ZW5kaWYpLyk7CisgICAgICAgIHByaW50IENDICRs
aW5lOworICAgIH0KKworICAgIGNsb3NlKElOKTsKKyAgICBjbG9zZShDQyk7CisKKyAgICBteSAk
ZmlsZUNvdW50ID0gY2htb2QgMDY0NCwgJG91dEZpbGU7CisgICAgaWYgKCRmaWxlQ291bnQgIT0g
MSkgeworICAgICAgICBkaWUgIkNvdWxkIG5vdCBjaG1vZCAwNjQ0ICRvdXRGaWxlOiAkISI7Cisg
ICAgfQorfQorCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
Q291bnRlcnMuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb3VudGVycy5o
CmluZGV4IDdhMWM3NThlMTBkM2Q5MTNkNGU0MjA3NjZiZjE2ZWVlYzg0NWRmNjkuLjI5YmQxYmQ2
MmRlOGZkZGIxNzkwYzIwMmQ1MDYzM2IxNTc5Y2JkMjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb3VudGVycy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3JDb3VudGVycy5oCkBAIC0zNSw2ICszNSw5IEBACiAKICNpZiAhQVNT
RVJUX0RJU0FCTEVECiAjaW5jbHVkZSA8d3RmL01haW5UaHJlYWQuaD4KKyNpZiBQTEFURk9STShJ
T1MpCisjaW5jbHVkZSAiV2ViQ29yZVRocmVhZC5oIgorI2VuZGlmCiAjZW5kaWYKIAogbmFtZXNw
YWNlIFdlYkNvcmUgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3RvckZyb250ZW5kSG9zdC5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZy
b250ZW5kSG9zdC5oCmluZGV4IDI2M2U3YWQ4OGQyY2I5NDVkOGUwYThiYjQ0YzhmZDc1ZTNhNGQz
MmUuLjlkYzY3YjBjNzc3ZDA4NjdjOWU2NzQ5MzEzZDBkMjk2MDYxYjEzNjQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZEhvc3QuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRIb3N0LmgKQEAgLTc3LDgg
Kzc3LDEwIEBAIHB1YmxpYzoKICAgICB2b2lkIGFwcGVuZChjb25zdCBTdHJpbmcmIHVybCwgY29u
c3QgU3RyaW5nJiBjb250ZW50KTsKICAgICB2b2lkIGNsb3NlKGNvbnN0IFN0cmluZyYgdXJsKTsK
IAorI2lmIEVOQUJMRShDT05URVhUX01FTlVTKQogICAgIC8vIENhbGxlZCBmcm9tIFtDdXN0b21d
IGltcGxlbWVudGF0aW9ucy4KICAgICB2b2lkIHNob3dDb250ZXh0TWVudShFdmVudCosIGNvbnN0
IFZlY3RvcjxDb250ZXh0TWVudUl0ZW0+JiBpdGVtcyk7CisjZW5kaWYKICAgICB2b2lkIHNlbmRN
ZXNzYWdlVG9CYWNrZW5kKGNvbnN0IFN0cmluZyYgbWVzc2FnZSk7CiAgICAgdm9pZCBkaXNwYXRj
aEV2ZW50QXNDb250ZXh0TWVudUV2ZW50KEV2ZW50Kik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JQYWdlQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3RvclBhZ2VBZ2VudC5jcHAKaW5kZXggMTJkMGI3ZTc4ZTgzODU5NDhi
ODYxMjRmZTY1ZmY1MTdjZTVlNmUyNS4uZTk5ZWIzZWExNjJiMDBkZmUzNTU0OWFkYmIzYTIzMWJl
OGFkOWI0ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclBh
Z2VBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclBhZ2VB
Z2VudC5jcHAKQEAgLTExMDcsNyArMTEwNywxMSBAQCB2b2lkIEluc3BlY3RvclBhZ2VBZ2VudDo6
c2V0RGV2aWNlT3JpZW50YXRpb25PdmVycmlkZShFcnJvclN0cmluZyogZXJyb3IsIGRvdWJsZQog
ICAgIEVycm9yU3RyaW5nIGNsZWFyRXJyb3I7CiAgICAgY2xlYXJEZXZpY2VPcmllbnRhdGlvbk92
ZXJyaWRlKCZjbGVhckVycm9yKTsKIAorI2lmIFBMQVRGT1JNKElPUykKKyAgICBtX2RldmljZU9y
aWVudGF0aW9uID0gRGV2aWNlT3JpZW50YXRpb25EYXRhOjpjcmVhdGUodHJ1ZSwgYWxwaGEsIHRy
dWUsIGJldGEsIHRydWUsIGdhbW1hLCBmYWxzZSwgMCwgZmFsc2UsIDApOworI2Vsc2UKICAgICBt
X2RldmljZU9yaWVudGF0aW9uID0gRGV2aWNlT3JpZW50YXRpb25EYXRhOjpjcmVhdGUodHJ1ZSwg
YWxwaGEsIHRydWUsIGJldGEsIHRydWUsIGdhbW1hKTsKKyNlbmRpZgogICAgIGNvbnRyb2xsZXIt
PmRpZENoYW5nZURldmljZU9yaWVudGF0aW9uKG1fZGV2aWNlT3JpZW50YXRpb24uZ2V0KCkpOwog
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9tYWtlLWV4cG9ydC1maWxlLWdlbmVyYXRv
ciBiL1NvdXJjZS9XZWJDb3JlL21ha2UtZXhwb3J0LWZpbGUtZ2VuZXJhdG9yCmluZGV4IDYxNzM2
M2MyNDBmYzkzMjNjNGU4YWU3OGM3ZmFlZjg0N2ZlMjgzYTQuLjczMjM2OTI4ZmMyNGRhNzk2Nzg1
ZGNmZjdjOTY0NTY0NDY1NTg0Y2UgMTAwNzU1Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL21ha2UtZXhw
b3J0LWZpbGUtZ2VuZXJhdG9yCisrKyBiL1NvdXJjZS9XZWJDb3JlL21ha2UtZXhwb3J0LWZpbGUt
Z2VuZXJhdG9yCkBAIC0yOSw3ICsyOSw3IEBAIG91dHB1dF9maWxlID0gQVJHVlsxXQogcmVxdWly
ZSAnZXJiJwogCiBkZWYgbGluZV9mb3Jfb3V0cHV0IGxpbmUKLSAgcmV0dXJuIGxpbmUuY2hvbXAg
aWYgbGluZSA9fiAvIy8KKyAgcmV0dXJuIGxpbmUuY2hvbXAgaWYgbGluZSA9fiAvXiNccyooaWZ8
aWZkZWZ8aWZuZGVmfGVsc2V8ZWxpZnxlbmRpZikvCiAgICIgICAgdmFsaWRhdGVBbmRQcmludChc
IiN7bGluZS5jaG9tcH1cIik7IgogZW5kCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
dWdpbnMvUGx1Z2luUGFja2FnZS5oIGIvU291cmNlL1dlYkNvcmUvcGx1Z2lucy9QbHVnaW5QYWNr
YWdlLmgKaW5kZXggNWYzMWU4YTE2OGQyNGNiNzBjNzJkZTY3OTYwNWJkZTJkODRhZTk2Ny4uMTg4
NjU0NTg2YzQ4ZjVhNTlhZTMyODY0NDZhNWE0ZGFiYTEzMWZmMSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGx1Z2lucy9QbHVnaW5QYWNrYWdlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGx1
Z2lucy9QbHVnaW5QYWNrYWdlLmgKQEAgLTMwLDcgKzMwLDkgQEAKICNpbmNsdWRlICJGaWxlU3lz
dGVtLmgiCiAjaW5jbHVkZSAiUGx1Z2luUXVpcmtTZXQuaCIKICNpbmNsdWRlICJUaW1lci5oIgor
I2lmIEVOQUJMRShORVRTQ0FQRV9QTFVHSU5fQVBJKQogI2luY2x1ZGUgIm5wcnVudGltZV9pbnRl
cm5hbC5oIgorI2VuZGlmCiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYv
UmVmQ291bnRlZC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0hhc2guaD4KQEAgLTcwLDcg
KzcyLDkgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBib29sIGlzRW5hYmxlZCgpIGNv
bnN0IHsgcmV0dXJuIG1faXNFbmFibGVkOyB9CiAgICAgICAgIHZvaWQgc2V0RW5hYmxlZChib29s
KTsKIAorI2lmIEVOQUJMRShORVRTQ0FQRV9QTFVHSU5fQVBJKQogICAgICAgICBjb25zdCBOUFBs
dWdpbkZ1bmNzKiBwbHVnaW5GdW5jcygpIGNvbnN0IHsgcmV0dXJuICZtX3BsdWdpbkZ1bmNzOyB9
CisjZW5kaWYKICAgICAgICAgaW50IGNvbXBhcmVGaWxlVmVyc2lvbihjb25zdCBQbGF0Zm9ybU1v
ZHVsZVZlcnNpb24mKSBjb25zdDsKICAgICAgICAgaW50IGNvbXBhcmUoY29uc3QgUGx1Z2luUGFj
a2FnZSYpIGNvbnN0OwogICAgICAgICBQbHVnaW5RdWlya1NldCBxdWlya3MoKSBjb25zdCB7IHJl
dHVybiBtX3F1aXJrczsgfQpAQCAtMTA5LDkgKzExMywxMSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAgICAgICAgIFBsYXRmb3JtTW9kdWxlIG1fbW9kdWxlOwogICAgICAgICB0aW1lX3QgbV9sYXN0
TW9kaWZpZWQ7CiAKKyNpZiBFTkFCTEUoTkVUU0NBUEVfUExVR0lOX0FQSSkKICAgICAgICAgTlBQ
X1NodXRkb3duUHJvY1B0ciBtX05QUF9TaHV0ZG93bjsKICAgICAgICAgTlBQbHVnaW5GdW5jcyBt
X3BsdWdpbkZ1bmNzOwogICAgICAgICBOUE5ldHNjYXBlRnVuY3MgbV9icm93c2VyRnVuY3M7Cisj
ZW5kaWYKIAogICAgICAgICB2b2lkIGZyZWVMaWJyYXJ5U29vbigpOwogICAgICAgICB2b2lkIGZy
ZWVMaWJyYXJ5VGltZXJGaXJlZChUaW1lcjxQbHVnaW5QYWNrYWdlPiopOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGx1Z2lucy9QbHVnaW5WaWV3QmFzZS5oIGIvU291cmNlL1dlYkNvcmUv
cGx1Z2lucy9QbHVnaW5WaWV3QmFzZS5oCmluZGV4IDdhMDRmNGU5NGNmMjBlMmY5Njk0ODk2ZWUw
MjRkOTBlZTdkN2Y1ZTMuLjg0Y2Q1ZjgxYjFkNTljMWE4NWU0YTg5ODUzMzI0NGFlMDE2OGIxNTYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsdWdpbnMvUGx1Z2luVmlld0Jhc2UuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbHVnaW5zL1BsdWdpblZpZXdCYXNlLmgKQEAgLTQ2LDYgKzQ2LDEx
IEBAIGNsYXNzIFBsdWdpblZpZXdCYXNlIDogcHVibGljIFdpZGdldCB7CiBwdWJsaWM6CiAjaWYg
VVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQogICAgIHZpcnR1YWwgUGxhdGZvcm1MYXllciog
cGxhdGZvcm1MYXllcigpIGNvbnN0IHsgcmV0dXJuIDA7IH0KKyNpZiBQTEFURk9STShJT1MpCisg
ICAgdmlydHVhbCBib29sIHdpbGxQcm92aWRlUGx1Z2luTGF5ZXIoKSBjb25zdCB7IHJldHVybiBm
YWxzZTsgfQorICAgIHZpcnR1YWwgdm9pZCBhdHRhY2hQbHVnaW5MYXllcigpIHsgfQorICAgIHZp
cnR1YWwgdm9pZCBkZXRhY2hQbHVnaW5MYXllcigpIHsgfQorI2VuZGlmCiAjZW5kaWYKIAogICAg
IHZpcnR1YWwgSlNDOjpKU09iamVjdCogc2NyaXB0T2JqZWN0KEpTQzo6SlNHbG9iYWxPYmplY3Qq
KSB7IHJldHVybiAwOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZVJl
c29sdmVGb3JEb2N1bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZVJlc29sdmVG
b3JEb2N1bWVudC5jcHAKaW5kZXggYjMzOWUyODNlZGUwOTA3NmM5ZTc4OTdkMWE3MTk4ZDMxNWNh
ZDc1My4uMWRiM2IwNTI0ZWQyZDY1ZTdlYjU4MDY4Y2MyOGZhNjI2Nzc5OGFiYSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVSZXNvbHZlRm9yRG9jdW1lbnQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlUmVzb2x2ZUZvckRvY3VtZW50LmNwcApAQCAtNzUs
NiArNzUsMTAgQEAgUGFzc1JlZjxSZW5kZXJTdHlsZT4gcmVzb2x2ZUZvckRvY3VtZW50KGNvbnN0
IERvY3VtZW50JiBkb2N1bWVudCkKICAgICB9CiAgICAgLy8gVGhpcyBvdmVycmlkZXMgYW55IC13
ZWJraXQtdXNlci1tb2RpZnkgaW5oZXJpdGVkIGZyb20gdGhlIHBhcmVudCBpZnJhbWUuCiAgICAg
ZG9jdW1lbnRTdHlsZS5nZXQoKS5zZXRVc2VyTW9kaWZ5KGRvY3VtZW50LmluRGVzaWduTW9kZSgp
ID8gUkVBRF9XUklURSA6IFJFQURfT05MWSk7CisjaWYgUExBVEZPUk0oSU9TKQorICAgIGlmIChk
b2N1bWVudC5pbkRlc2lnbk1vZGUoKSkKKyAgICAgICAgZG9jdW1lbnRTdHlsZS5nZXQoKS5zZXRU
ZXh0U2l6ZUFkanVzdChUZXh0U2l6ZUFkanVzdG1lbnQoTm9UZXh0U2l6ZUFkanVzdG1lbnQpKTsK
KyNlbmRpZgogCiAgICAgRWxlbWVudCogZG9jRWxlbWVudCA9IGRvY3VtZW50LmRvY3VtZW50RWxl
bWVudCgpOwogICAgIFJlbmRlck9iamVjdCogZG9jRWxlbWVudFJlbmRlcmVyID0gZG9jRWxlbWVu
dCA/IGRvY0VsZW1lbnQtPnJlbmRlcmVyKCkgOiAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvc3R5bGUvU3R5bGVSZXNvbHZlVHJlZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHls
ZVJlc29sdmVUcmVlLmNwcAppbmRleCA0MmIxMzY0MmM1ZmUwMDI4NmQzY2E2MGZkOGNmNDc4NjAy
MDhmZGMwLi5mYmFiMjE0NzI3YTg1NGQ3ODhmMjk4MDk0Y2I1YzA1OGMxYTczODk4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZVJlc29sdmVUcmVlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9zdHlsZS9TdHlsZVJlc29sdmVUcmVlLmNwcApAQCAtNzY5LDE3ICs3NjksMTUg
QEAgc3RhdGljIEVWaXNpYmlsaXR5IGVsZW1lbnRJbXBsaWNpdFZpc2liaWxpdHkoY29uc3QgRWxl
bWVudCogZWxlbWVudCkKICAgICBpZiAoIXJlbmRlcmVyKQogICAgICAgICByZXR1cm4gVklTSUJM
RTsKIAotICAgIFJlbmRlclN0eWxlKiBzdHlsZSA9IHJlbmRlcmVyLT5zdHlsZSgpOwotICAgIGlm
ICghc3R5bGUpCi0gICAgICAgIHJldHVybiBWSVNJQkxFOworICAgIFJlbmRlclN0eWxlJiBzdHls
ZSA9IHJlbmRlcmVyLT5zdHlsZSgpOwogCi0gICAgTGVuZ3RoIHdpZHRoKHN0eWxlLT53aWR0aCgp
KTsKLSAgICBMZW5ndGggaGVpZ2h0KHN0eWxlLT5oZWlnaHQoKSk7CisgICAgTGVuZ3RoIHdpZHRo
KHN0eWxlLndpZHRoKCkpOworICAgIExlbmd0aCBoZWlnaHQoc3R5bGUuaGVpZ2h0KCkpOwogICAg
IGlmICgod2lkdGguaXNGaXhlZCgpICYmIHdpZHRoLnZhbHVlKCkgPD0gMCkgfHwgKGhlaWdodC5p
c0ZpeGVkKCkgJiYgaGVpZ2h0LnZhbHVlKCkgPD0gMCkpCiAgICAgICAgIHJldHVybiBISURERU47
CiAKLSAgICBMZW5ndGggdG9wKHN0eWxlLT50b3AoKSk7Ci0gICAgTGVuZ3RoIGxlZnQoc3R5bGUt
PmxlZnQoKSk7CisgICAgTGVuZ3RoIHRvcChzdHlsZS50b3AoKSk7CisgICAgTGVuZ3RoIGxlZnQo
c3R5bGUubGVmdCgpKTsKICAgICBpZiAobGVmdC5pc0ZpeGVkKCkgJiYgd2lkdGguaXNGaXhlZCgp
ICYmIC1sZWZ0LnZhbHVlKCkgPj0gd2lkdGgudmFsdWUoKSkKICAgICAgICAgcmV0dXJuIEhJRERF
TjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwIGIv
U291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCmluZGV4IDM4NTM5ZWVkOGM4ZjI0
MmJlOTI3ODllZDgzMTkwOTQ0MTNhNGQ3ZmIuLmQyMjU4YjU0MmY1ZjQzMjFiZDRmZmQ0MmJlMDIx
ZjMxMGFjMzAxZWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxz
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKQEAgLTE5Njgs
NyArMTk2OCw3IEBAIHZvaWQgSW50ZXJuYWxzOjpzdG9wVHJhY2tpbmdSZXBhaW50cyhFeGNlcHRp
b25Db2RlJiBlYykKICAgICBmcmFtZVZpZXctPnNldFRyYWNrc1JlcGFpbnRzKGZhbHNlKTsKIH0K
IAotI2lmIFVTRShMQVpZX05BVElWRV9DVVJTT1IpCisjaWYgIVBMQVRGT1JNKElPUykgJiYgVVNF
KExBWllfTkFUSVZFX0NVUlNPUikKIHN0YXRpYyBjb25zdCBjaGFyKiBjdXJzb3JUeXBlVG9TdHJp
bmcoQ3Vyc29yOjpUeXBlIGN1cnNvclR5cGUpCiB7CiAgICAgc3dpdGNoIChjdXJzb3JUeXBlKSB7
CkBAIC0yMDMxLDkgKzIwMzEsOSBAQCBTdHJpbmcgSW50ZXJuYWxzOjpnZXRDdXJyZW50Q3Vyc29y
SW5mbyhFeGNlcHRpb25Db2RlJiBlYykKICAgICAgICAgcmV0dXJuIFN0cmluZygpOwogICAgIH0K
IAorI2lmICFQTEFURk9STShJT1MpICYmIFVTRShMQVpZX05BVElWRV9DVVJTT1IpCiAgICAgQ3Vy
c29yIGN1cnNvciA9IGRvY3VtZW50LT5mcmFtZSgpLT5ldmVudEhhbmRsZXIoKS5jdXJyZW50TW91
c2VDdXJzb3IoKTsKIAotI2lmIFVTRShMQVpZX05BVElWRV9DVVJTT1IpCiAgICAgU3RyaW5nQnVp
bGRlciByZXN1bHQ7CiAgICAgcmVzdWx0LmFwcGVuZCgidHlwZT0iKTsKICAgICByZXN1bHQuYXBw
ZW5kKGN1cnNvclR5cGVUb1N0cmluZyhjdXJzb3IudHlwZSgpKSk7CkBAIC0yMTMyLDggKzIxMzIs
MTIgQEAgYm9vbCBJbnRlcm5hbHM6OmlzU2VsZWN0UG9wdXBWaXNpYmxlKE5vZGUqIG5vZGUpCiAg
ICAgaWYgKCFyZW5kZXJlci0+aXNNZW51TGlzdCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAK
KyNpZiAhUExBVEZPUk0oSU9TKQogICAgIFJlbmRlck1lbnVMaXN0KiBtZW51TGlzdCA9IHRvUmVu
ZGVyTWVudUxpc3QocmVuZGVyZXIpOwogICAgIHJldHVybiBtZW51TGlzdC0+cG9wdXBJc1Zpc2li
bGUoKTsKKyNlbHNlCisgICAgcmV0dXJuIGZhbHNlOworI2VuZGlmIC8vICFQTEFURk9STShJT1Mp
CiB9CiAKIFN0cmluZyBJbnRlcm5hbHM6OmNhcHRpb25zU3R5bGVTaGVldE92ZXJyaWRlKEV4Y2Vw
dGlvbkNvZGUmIGVjKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJU
aHJlYWQuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJUaHJlYWQuY3BwCmluZGV4
IGZlZjNlNTRhNDFjOGM4NWUwZjFjZjVhMjU1Njg0NGU5MzFhNzJjMjUuLjliNmFkZTRmNWNhMzc1
OTYxOTRlNmFlNjg2OTg4ZGI5ZTMzM2JmMWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvV29ya2VyVGhyZWFkLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtl
clRocmVhZC5jcHAKQEAgLTQzLDYgKzQzLDEwIEBACiAjaW5jbHVkZSAiRGF0YWJhc2VUYXNrLmgi
CiAjZW5kaWYKIAorI2lmIFBMQVRGT1JNKElPUykKKyNpbmNsdWRlICJXZWJDb3JlVGhyZWFkLmgi
CisjZW5kaWYKKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBzdGF0aWMgTXV0ZXgmIHRocmVhZFNl
dE11dGV4KCkKQEAgLTE0MSw2ICsxNDUsMTEgQEAgdm9pZCBXb3JrZXJUaHJlYWQ6OndvcmtlclRo
cmVhZFN0YXJ0KHZvaWQqIHRocmVhZCkKIAogdm9pZCBXb3JrZXJUaHJlYWQ6OndvcmtlclRocmVh
ZCgpCiB7CisgICAgLy8gUHJvcGFnYXRlIHRoZSBtYWluVGhyZWFkJ3MgZmVudiB0byB3b3JrZXJz
LgorI2lmIFBMQVRGT1JNKElPUykKKyAgICBmZXNldGVudigmbWFpblRocmVhZEZFbnYpOworI2Vu
ZGlmCisKICAgICB7CiAgICAgICAgIE11dGV4TG9ja2VyIGxvY2sobV90aHJlYWRDcmVhdGlvbk11
dGV4KTsKICAgICAgICAgbV93b3JrZXJHbG9iYWxTY29wZSA9IGNyZWF0ZVdvcmtlckdsb2JhbFNj
b3BlKG1fc3RhcnR1cERhdGEtPm1fc2NyaXB0VVJMLCBtX3N0YXJ0dXBEYXRhLT5tX3VzZXJBZ2Vu
dCwgc3RkOjptb3ZlKG1fc3RhcnR1cERhdGEtPm1fZ3JvdXBTZXR0aW5ncyksIG1fc3RhcnR1cERh
dGEtPm1fY29udGVudFNlY3VyaXR5UG9saWN5LCBtX3N0YXJ0dXBEYXRhLT5tX2NvbnRlbnRTZWN1
cml0eVBvbGljeVR5cGUsIG1fc3RhcnR1cERhdGEtPm1fdG9wT3JpZ2luLnJlbGVhc2UoKSk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
IGIvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCAy
NGRjOTU4MmQ1OTI4MDA5YmJlMDIyMmFjOWM5YTM2M2Y0MjdiN2E2Li43NTlhNTEzNTcyMGY2MGRm
NGRkMmQ1ZDBkZmMwNWI4ZjZjYzU0OWU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYktp
dC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTgzMCw2ICs4MzAsNyBAQAogCQlDRDhFQUM3MjEx
Q0FDOUEzMDA3NzQwNzUgLyogSU9LaXQuZnJhbWV3b3JrICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gd3JhcHBlci5mcmFtZXdvcms7IG5hbWUgPSBJT0tp
dC5mcmFtZXdvcms7IHBhdGggPSAvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9JT0tpdC5mcmFt
ZXdvcms7IHNvdXJjZVRyZWUgPSAiPGFic29sdXRlPiI7IH07CiAJCUNEQTYyQUUwMTI1Rjg3QzIw
MDdGRDExOCAvKiBXZWJGdWxsU2NyZWVuQ29udHJvbGxlci5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBXZWJGdWxsU2NyZWVuQ29udHJvbGxlci5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQlDREE2MkFFMTEyNUY4N0MyMDA3RkQxMTggLyogV2ViRnVsbFNjcmVlbkNv
bnRyb2xsZXIubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBXZWJG
dWxsU2NyZWVuQ29udHJvbGxlci5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0Uy
NjE2QUIxODdFNjY3NTAwNzk1NUYzIC8qIHNjcnViLWlmZGVmcy5wbCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQu
c2NyaXB0LnBlcmw7IG5hbWUgPSAic2NydWItaWZkZWZzLnBsIjsgcGF0aCA9ICJtYWMvc2NydWIt
aWZkZWZzLnBsIjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0VEQTEyRDkxNTJDQkU2
ODAwRDlFMDhEIC8qIFdlYkFsdGVybmF0aXZlVGV4dENsaWVudC5tbSAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdlYkFsdGVybmF0aXZlVGV4dENsaWVudC5tbTsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0VEQTEyREExNTJDQkU2ODAwRDlFMDhEIC8qIFdl
YkFsdGVybmF0aXZlVGV4dENsaWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBXZWJBbHRlcm5hdGl2ZVRleHRDbGllbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJREQ3Q0RFRTYwQTIzQkE5RTAwMDY5OTI4IC8qIFdlYlR5cGVzSW50ZXJuYWwuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViVHlwZXNJbnRlcm5hbC5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwpAQCAtOTI4LDYgKzkyOSw3IEBACiAJCTA4NjdENjkxRkU4NDAyOEZD
MDJBQUMwNyAvKiBXZWJLaXQgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVu
ID0gKAorCQkJCUNFMjYxNkFCMTg3RTY2NzUwMDc5NTVGMyAvKiBzY3J1Yi1pZmRlZnMucGwgKi8s
CiAJCQkJMUM2Q0IwM0UwQUE2MzkxRDAwRDIzQkZEIC8qIE1pZ3JhdGVIZWFkZXJzLm1ha2UgKi8s
CiAJCQkJRjVGNzMyRDIwMkZGNEQ0RjAxQTgwMTgwIC8qIFdlYktpdC5leHAgKi8sCiAJCQkJQTEw
QzFEOEYxODIwMzA3RDAwMzY4ODNBIC8qIFdlYktpdC5pT1MuZXhwICovLApAQCAtMTkzOSw2ICsx
OTQxLDcgQEAKIAkJCQkxQzM5NURFMjBDNkJFOEUwMDAwRDFFNTIgLyogR2VuZXJhdGUgNjQtYml0
IEV4cG9ydCBGaWxlICovLAogCQkJCTkzOTgxMTI3MDgyNEJGMDEwMDhERjAzOCAvKiBGcmFtZXdv
cmtzICovLAogCQkJCTVEMEQ1NDIxMEU5ODYzMUQwMDI5RTIyMyAvKiBDaGVjayBGb3IgV2VhayBW
VGFibGVzIGFuZCBFeHRlcm5hbHMgKi8sCisJCQkJNDQ1OEE2M0EwRDVDMjE0MDAwQjc0RkM4IC8q
IFNjcnViIEluc3RhbGxlZCBIZWFkZXJzICovLAogCQkJCTM3MTNGMDE4MTQyOTA1QjcwMDM2Mzg3
RiAvKiBDaGVjayBGb3IgSW5hcHByb3ByaWF0ZSBPYmplY3RpdmUtQyBDbGFzcyBOYW1lcyAqLywK
IAkJCQk1RDg4RUU2QzExNDA3REU4MDBCQzNBQkMgLyogQ2hlY2sgRm9yIEZyYW1ld29yayBJbmNs
dWRlIENvbnNpc3RlbmN5ICovLAogCQkJCUE1NURFQUE1MTY3MDNGOUYwMDNEQjg0MSAvKiBDaGVj
ayBGb3IgSW5hcHByb3ByaWF0ZSBNYWNyb3MgaW4gRXh0ZXJuYWwgSGVhZGVycyAqLywKQEAgLTIw
NDgsNiArMjA1MSwyMSBAQAogCQkJc2hlbGxQYXRoID0gL2Jpbi9zaDsKIAkJCXNoZWxsU2NyaXB0
ID0gImlmIFsgXCIke0FDVElPTn1cIiA9IFwiaW5zdGFsbGhkcnNcIiBdOyB0aGVuXG4gICAgZXhp
dCAwO1xuZmlcblxuaWYgWyAtZiAuLi8uLi9Ub29scy9TY3JpcHRzL2NoZWNrLWZvci1pbmFwcHJv
cHJpYXRlLW9iamMtY2xhc3MtbmFtZXMgXTsgdGhlblxuICAgIC4uLy4uL1Rvb2xzL1NjcmlwdHMv
Y2hlY2stZm9yLWluYXBwcm9wcmlhdGUtb2JqYy1jbGFzcy1uYW1lcyBXZWIgX1dlYiB8fCBleGl0
ICQ/XG5maSI7CiAJCX07CisJCTQ0NThBNjNBMEQ1QzIxNDAwMEI3NEZDOCAvKiBTY3J1YiBJbnN0
YWxsZWQgSGVhZGVycyAqLyA9IHsKKwkJCWlzYSA9IFBCWFNoZWxsU2NyaXB0QnVpbGRQaGFzZTsK
KwkJCWJ1aWxkQWN0aW9uTWFzayA9IDIxNDc0ODM2NDc7CisJCQlmaWxlcyA9ICgKKwkJCSk7CisJ
CQlpbnB1dFBhdGhzID0gKAorCQkJCSIkKFNSQ1JPT1QpL21hYy9zY3J1Yi1pZmRlZnMucGwiLAor
CQkJKTsKKwkJCW5hbWUgPSAiU2NydWIgSW5zdGFsbGVkIEhlYWRlcnMiOworCQkJb3V0cHV0UGF0
aHMgPSAoCisJCQkpOworCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7
CisJCQlzaGVsbFBhdGggPSAvYmluL3NoOworCQkJc2hlbGxTY3JpcHQgPSAiLi9tYWMvc2NydWIt
aWZkZWZzLnBsICRUQVJHRVRfQlVJTERfRElSLyRQUklWQVRFX0hFQURFUlNfRk9MREVSX1BBVEhc
bi4vbWFjL3NjcnViLWlmZGVmcy5wbCAkVEFSR0VUX0JVSUxEX0RJUi8kUFVCTElDX0hFQURFUlNf
Rk9MREVSX1BBVEhcbiI7CisJCX07CiAJCTVEMEQ1NDIxMEU5ODYzMUQwMDI5RTIyMyAvKiBDaGVj
ayBGb3IgV2VhayBWVGFibGVzIGFuZCBFeHRlcm5hbHMgKi8gPSB7CiAJCQlpc2EgPSBQQlhTaGVs
bFNjcmlwdEJ1aWxkUGhhc2U7CiAJCQlidWlsZEFjdGlvbk1hc2sgPSAyMTQ3NDgzNjQ3OwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvTWlncmF0ZUhlYWRlcnMubWFrZSBiL1NvdXJjZS9X
ZWJLaXQvbWFjL01pZ3JhdGVIZWFkZXJzLm1ha2UKaW5kZXggMzRjYTQ5YTUzMjk0Y2MxZDUyOTM4
MTYzNTZmZTNlOGM3YzcxMjlkYy4uMTliNjM1OWMxNTVhNDAyZTk4ODFkMTRkNWJjMjE1YTUyNGRk
ZDczOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvTWlncmF0ZUhlYWRlcnMubWFrZQor
KysgYi9Tb3VyY2UvV2ViS2l0L21hYy9NaWdyYXRlSGVhZGVycy5tYWtlCkBAIC0xOTAsMTAgKzE5
MCw1MiBAQCBhbGwgOiBcCiAgICAgJChQVUJMSUNfSEVBREVSU19ESVIpL25wdHlwZXMuaCBcCiAj
CiAKK2lmZXEgKCQoZmluZHN0cmluZyBXVEZfUExBVEZPUk1fSU9TLCQoRkVBVFVSRV9ERUZJTkVT
KSksIFdURl9QTEFURk9STV9JT1MpCisKK2FsbCA6IFwKKyAgICAkKFBVQkxJQ19IRUFERVJTX0RJ
UikvRE9NR2VzdHVyZUV2ZW50LmggXAorICAgICQoUFJJVkFURV9IRUFERVJTX0RJUikvRE9NSFRN
TFRleHRBcmVhRWxlbWVudFByaXZhdGUuaCBcCisgICAgJChQVUJMSUNfSEVBREVSU19ESVIpL0RP
TVRvdWNoLmggXAorICAgICQoUFVCTElDX0hFQURFUlNfRElSKS9ET01Ub3VjaEV2ZW50LmggXAor
ICAgICQoUFVCTElDX0hFQURFUlNfRElSKS9ET01Ub3VjaExpc3QuaCBcCisgICAgJChQUklWQVRF
X0hFQURFUlNfRElSKS9ET01VSUtpdEV4dGVuc2lvbnMuaCBcCisgICAgJChQUklWQVRFX0hFQURF
UlNfRElSKS9LZXlFdmVudENvZGVzSU9TLmggXAorICAgICQoUFJJVkFURV9IRUFERVJTX0RJUikv
TWVkaWFQbGF5ZXJQcm94eS5oIFwKKyAgICAkKFBSSVZBVEVfSEVBREVSU19ESVIpL1BsdWdpbkRh
dGEuaCBcCisgICAgJChQUklWQVRFX0hFQURFUlNfRElSKS9TY3JvbGxUeXBlcy5oIFwKKyAgICAk
KFBSSVZBVEVfSEVBREVSU19ESVIpL1N5c3RlbU1lbW9yeS5oIFwKKyAgICAkKFBSSVZBVEVfSEVB
REVSU19ESVIpL1dBS0FwcEtpdFN0dWJzLmggXAorICAgICQoUFJJVkFURV9IRUFERVJTX0RJUikv
V0FLUmVzcG9uZGVyLmggXAorICAgICQoUFJJVkFURV9IRUFERVJTX0RJUikvV0FLU2Nyb2xsVmll
dy5oIFwKKyAgICAkKFBSSVZBVEVfSEVBREVSU19ESVIpL1dBS1ZpZXcuaCBcCisgICAgJChQUklW
QVRFX0hFQURFUlNfRElSKS9XQUtWaWV3UHJpdmF0ZS5oIFwKKyAgICAkKFBSSVZBVEVfSEVBREVS
U19ESVIpL1dBS1dpbmRvdy5oIFwKKyAgICAkKFBSSVZBVEVfSEVBREVSU19ESVIpL1dLQ29udGVu
dE9ic2VydmF0aW9uLmggXAorICAgICQoUFJJVkFURV9IRUFERVJTX0RJUikvV0tHcmFwaGljcy5o
IFwKKyAgICAkKFBSSVZBVEVfSEVBREVSU19ESVIpL1dLVHlwZXMuaCBcCisgICAgJChQUklWQVRF
X0hFQURFUlNfRElSKS9XS1V0aWxpdGllcy5oIFwKKyAgICAkKFBSSVZBVEVfSEVBREVSU19ESVIp
L1dLVmlldy5oIFwKKyAgICAkKFBSSVZBVEVfSEVBREVSU19ESVIpL1dlYkF1dG9jYXBpdGFsaXpl
LmggXAorICAgICQoUFJJVkFURV9IRUFERVJTX0RJUikvV2ViQ29yZUZyYW1lVmlldy5oIFwKKyAg
ICAkKFBSSVZBVEVfSEVBREVSU19ESVIpL1dlYkNvcmVUaHJlYWQuaCBcCisgICAgJChQUklWQVRF
X0hFQURFUlNfRElSKS9XZWJDb3JlVGhyZWFkTWVzc2FnZS5oIFwKKyAgICAkKFBSSVZBVEVfSEVB
REVSU19ESVIpL1dlYkNvcmVUaHJlYWRSdW4uaCBcCisgICAgJChQUklWQVRFX0hFQURFUlNfRElS
KS9XZWJFdmVudC5oIFwKKyAgICAkKFBSSVZBVEVfSEVBREVSU19ESVIpL1dlYkV2ZW50UmVnaW9u
LmggXAorCitlbmRpZgorCiBSRVBMQUNFX1JVTEVTID0gLWUgcy9cPFdlYkNvcmUvXDxXZWJLaXQv
IC1lIHMvRE9NRE9NSW1wbGVtZW50YXRpb24vRE9NSW1wbGVtZW50YXRpb24vCiBIRUFERVJfTUlH
UkFURV9DTUQgPSBzZWQgJChSRVBMQUNFX1JVTEVTKSAkPCA+ICRACiBQVUJMSUNfSEVBREVSX0NI
RUNLX0NNRCA9IEBpZiBncmVwIC1xICJBVkFJTEFCTEUuKlRCRCIgIiQ8IjsgdGhlbiBsaW5lPSQk
KGF3ayAiL0FWQUlMQUJMRS4qVEJELyB7IHByaW50IEZOUjsgZXhpdCB9IiAiJDwiICk7IGVjaG8g
IiQ8OiQkbGluZTogZXJyb3I6IEEgY2xhc3Mgd2l0aGluIGEgcHVibGljIGhlYWRlciBoYXMgdW5z
cGVjaWZpZWQgYXZhaWxhYmlsaXR5LiI7IGZhbHNlOyBmaQogCitpZmVxICgkKGZpbmRzdHJpbmcg
V1RGX1BMQVRGT1JNX0lPUywkKEZFQVRVUkVfREVGSU5FUykpLCBXVEZfUExBVEZPUk1fSU9TKQor
CiskKFBSSVZBVEVfSEVBREVSU19ESVIpL1dBS1Njcm9sbFZpZXcuaCA6IFdBS1Njcm9sbFZpZXcu
aCBNaWdyYXRlSGVhZGVycy5tYWtlCisJY2F0ICQ8ICQoUFJPQ0VTU19IRUFERVJfRk9SX01BQ09T
WF9UQVJHRVRfQ01EKSA+ICRACisKK2VuZGlmCisKICQoUFVCTElDX0hFQURFUlNfRElSKS9ET00l
IDogRE9NRE9NJSBNaWdyYXRlSGVhZGVycy5tYWtlCiAJJChQVUJMSUNfSEVBREVSX0NIRUNLX0NN
RCkKIAkkKEhFQURFUl9NSUdSQVRFX0NNRCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFj
L3NjcnViLWlmZGVmcy5wbCBiL1NvdXJjZS9XZWJLaXQvbWFjL3NjcnViLWlmZGVmcy5wbApuZXcg
ZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi40Y2I5ZDgxMTdhODYwZWI4MzEyYjFmOTI4YjZlYzU3ZDk5OWZmOTJjCi0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYktpdC9tYWMvc2NydWItaWZkZWZzLnBsCkBAIC0wLDAgKzEs
MzI4IEBACisjIS91c3IvYmluL3BlcmwgLXcKKyMKKyMgQ29weXJpZ2h0IChDKSAyMDA3LCAyMDA4
LCAyMDA5LCAyMDEwLCAyMDExIEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisj
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMgMS4gIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisjIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorIyAgICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQgQU5ZCisjIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyMgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQ
T1NFIEFSRQorIyBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyMgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOworIyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04KKyMgQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKyMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKKyMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKK3VzZSBzdHJpY3Q7Cit1c2Ug
d2FybmluZ3M7CisKK3VzZSBGaWxlOjpCYXNlbmFtZTsKK3VzZSBGaWxlOjpGaW5kOwordXNlIEZp
bGU6OlRlbXAgcXcodGVtcGZpbGUpOwordXNlIEdldG9wdDo6TG9uZzsKKworc3ViIGVuYWJsZU1h
Y3JvcygkKTsKK3N1YiBmZWF0dXJlRGVmaW5lcygpOworc3ViIGZpbmRGaWxlcyhcQCk7CitzdWIg
bmVnYXRlTWFjcm8oJCk7CitzdWIgcHJvY2VzcygkKTsKKworbXkgJHNob3dIZWxwID0gMDsKK215
ICRibGFua0xpbmVzOworbXkgJHZlcmJvc2UgPSAwOworCitteSAkcmVzdWx0ID0gR2V0T3B0aW9u
cygKKyAgICAiaGVscCIgICAgICAgID0+IFwkc2hvd0hlbHAsCisgICAgImJsYW5rLWxpbmVzIiA9
PiBcJGJsYW5rTGluZXMsCisgICAgInZlcmJvc2UiICAgICA9PiBcJHZlcmJvc2UsCispOworaWYg
KCEkcmVzdWx0IHx8ICRzaG93SGVscCB8fCAhQEFSR1YpIHsKKyAgICBwcmludCBTVERFUlIgYmFz
ZW5hbWUoJDApIC4gIiBbLWh8LS1oZWxwXSBbLS1ibGFuay1saW5lc10gWy12fC0tdmVyYm9zZV0g
ZGlyMSBbZGlyMiAuLi5dXG4iOworICAgIGV4aXQgMTsKK30KKworbXkgQGtlZXBNYWNyb3MgPSAo
ZmVhdHVyZURlZmluZXMoKSwgZW5hYmxlTWFjcm9zKDEpKTsKK215IEBkZWxldGVNYWNyb3MgPSAo
ZW5hYmxlTWFjcm9zKDApKTsKKworZGllICJQTEFURk9STV9OQU1FIGVudmlyb25tZW50IHZhcmlh
YmxlIG5vdCBkZWZpbmVkIiBpZiAhZXhpc3RzICRFTlZ7UExBVEZPUk1fTkFNRX0gb3IgISRFTlZ7
UExBVEZPUk1fTkFNRX07CisKK2lmICgkRU5We1BMQVRGT1JNX05BTUV9IGVxICJtYWNvc3giKSB7
CisgICAgcHVzaCBAZGVsZXRlTWFjcm9zLCAiUExBVEZPUk0oSU9TKSIsICJQTEFURk9STShJT1Nf
U0lNVUxBVE9SKSIsICJFTkFCTEUoSU9TX0dFU1RVUkVfRVZFTlRTKSI7Cit9IGVsc2lmICgkRU5W
e1BMQVRGT1JNX05BTUV9IGVxICJpcGhvbmVvcyIpIHsKKyAgICBwdXNoIEBrZWVwTWFjcm9zLCAi
UExBVEZPUk0oSU9TKSI7CisgICAgcHVzaCBAZGVsZXRlTWFjcm9zLCAiUExBVEZPUk0oSU9TX1NJ
TVVMQVRPUikiOworfSBlbHNpZiAoJEVOVntQTEFURk9STV9OQU1FfSBlcSAiaXBob25lc2ltdWxh
dG9yIikgeworICAgIHB1c2ggQGtlZXBNYWNyb3MsICJQTEFURk9STShJT1MpIiwgIlBMQVRGT1JN
KElPU19TSU1VTEFUT1IpIjsKK30gZWxzZSB7CisgICAgZGllICJVbmtub3duIFBMQVRGT1JNX05B
TUUgPSAkRU5We1BMQVRGT1JNX05BTUV9IjsKK30KKworbXkgJWtlZXBfaWZkZWZzID0gbWFwIHsg
JF8gPT4gMSB9IEBrZWVwTWFjcm9zLCAobWFwIHsgbmVnYXRlTWFjcm8oJF8pIH0gQGRlbGV0ZU1h
Y3Jvcyk7CitteSAlZGVsZXRlX2lmZGVmcyA9IG1hcCB7ICRfID0+IDEgfSBAZGVsZXRlTWFjcm9z
LCAobWFwIHsgbmVnYXRlTWFjcm8oJF8pIH0gQGtlZXBNYWNyb3MpOworCitteSAka2VlcF9pZmRl
ZnNfcmVnZXggPSBqb2luKCJ8IiwgbWFwIHsgcXVvdGVtZXRhKCRfKSB9IGtleXMgJWtlZXBfaWZk
ZWZzKTsKK215ICRkZWxldGVfaWZkZWZzX3JlZ2V4ID0gam9pbigifCIsIG1hcCB7IHF1b3RlbWV0
YSgkXykgfSBrZXlzICVkZWxldGVfaWZkZWZzKTsKKworbXkgQGZpbGVzOworZmluZEZpbGVzKEBB
UkdWKTsKKworZm9yIG15ICRmaWxlIChAZmlsZXMpIHsKKyAgICBwcmludCAiUHJvY2Vzc2luZyAk
ZmlsZS4uLlxuIiBpZiAkdmVyYm9zZTsKKyAgICBwcm9jZXNzKCRmaWxlKTsKK30KKworcHJpbnQg
IkRvbmUhXG4iIGlmICR2ZXJib3NlOworCitleGl0IDA7CisKK3N1YiBlbmFibGVNYWNyb3MoJCkK
K3sKKyAgICBteSAoJG1hY3JvVmFsdWUpID0gQF87CisgICAgbXkgQHJlc3VsdCA9ICgpOworCisg
ICAgaWYgKCRtYWNyb1ZhbHVlIG5lICIwIiBhbmQgJG1hY3JvVmFsdWUgbmUgIjEiKSB7CisgICAg
ICAgIHdhcm4gIkludmFsaWQgdmFsdWUgcGFzc2VkIHRvIGVuYWJsZU1hY3JvcygpIjsKKyAgICAg
ICAgcmV0dXJuIEByZXN1bHQ7CisgICAgfQorCisgICAgaWYgKCFleGlzdHMgJEVOVntTREtST09U
fSBvciAhJEVOVntTREtST09UfSkgeworICAgICAgICB3YXJuICJTREtST09UIGVudmlyb25tZW50
IHZhcmlhYmxlIG5vdCBmb3VuZCI7CisgICAgICAgIHJldHVybiBAcmVzdWx0OworICAgIH0KKwor
ICAgIGNob21wIChteSAkY2MgPSBgeGNydW4gLWZpbmQgY2MgLXNkayAkRU5We1NES1JPT1R9YCk7
CisgICAgbXkgQGFyZ3MgPSBxdygtRSAtZE0gLWluY2x1ZGUgd3RmL1BsYXRmb3JtLmgpOworICAg
ICMgU2V0IGZyYW1ld29yayBzZWFyY2ggcGF0aHMgdG8gZmluZCA8SmF2YVNjcmlwdENvcmUvUGxh
dGZvcm0uaD4uICBXaXRob3V0IHRoZXNlLCBjYworICAgICMgZmluZHMgL1N5c3RlbS9MaWJyYXJ5
L0ZyYW1ld29ya3MvSmF2YVNjcmlwdENvcmUuZnJhbWV3b3JrL1ByaXZhdGVIZWFkZXJzL1BsYXRm
b3JtLmgKKyAgICAjIG9yIGNvbXBsYWlucyBpZiB5b3UgZG9uJ3QgaGF2ZSB0aGF0IGluc3RhbGxl
ZC4gIFdlIHNlYXJjaCBCVUlMVF9QUk9EVUNUU19ESVIgZmlyc3QKKyAgICAjIGZvciBsb2NhbCBk
ZXZlbG9wZXIgYnVpbGRzLCB0aGVuIHRoZSBpbnN0YWxsYXRpb24gcGF0aCBmb3IgQiZJIGJ1aWxk
cy4KKyAgICBwdXNoKEBhcmdzLCAiLUYiIC4gJEVOVntCVUlMVF9QUk9EVUNUU19ESVJ9KSBpZiAk
RU5We0JVSUxUX1BST0RVQ1RTX0RJUn07CisgICAgcHVzaChAYXJncywgIi1JIiAuICRFTlZ7QlVJ
TFRfUFJPRFVDVFNfRElSfSAuICIvdXNyL2xvY2FsL2luY2x1ZGUiKSBpZiAkRU5We0JVSUxUX1BS
T0RVQ1RTX0RJUn07CisgICAgcHVzaChAYXJncywgIi1JIiAuICRFTlZ7QlVJTFRfUFJPRFVDVFNf
RElSfSAuICRFTlZ7U0RLUk9PVH0gLiAiL3Vzci9sb2NhbC9pbmNsdWRlIikgaWYgJEVOVntCVUlM
VF9QUk9EVUNUU19ESVJ9OworICAgICMgWGNvZGUgMy4xIGlzIHJlcXVpcmVkIGZvciBTREtST09U
IHRvIGJlIHNldC4KKyAgICAjIFhjb2RlIDMuMSBpcyByZXF1aXJlZCBmb3IgU0RLUk9PVCB0byBi
ZSBzZXQuCisgICAgaWYgKGV4aXN0cyAkRU5We1NZU1RFTV9MSUJSQVJZX0RJUn0gJiYgJEVOVntT
WVNURU1fTElCUkFSWV9ESVJ9KSB7CisgICAgICAgIG15ICRmcmFtZXdvcmtTZWFyY2hQYXRoID0g
JEVOVntTREtST09UfSAuICRFTlZ7U1lTVEVNX0xJQlJBUllfRElSfTsKKyAgICAgICAgaWYgKCRF
TlZ7UExBVEZPUk1fTkFNRX0gZXEgImlwaG9uZW9zIiB8fCAkRU5We1BMQVRGT1JNX05BTUV9IGVx
ICJpcGhvbmVzaW11bGF0b3IiKSB7CisgICAgICAgICAgICAkZnJhbWV3b3JrU2VhcmNoUGF0aCAu
PSAiL1ByaXZhdGVGcmFtZXdvcmtzIjsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICRm
cmFtZXdvcmtTZWFyY2hQYXRoIC49ICIvRnJhbWV3b3JrcyI7CisgICAgICAgIH0KKyAgICAgICAg
cHVzaChAYXJncywgIi1GIiAuICRmcmFtZXdvcmtTZWFyY2hQYXRoKTsKKyAgICB9CisKKyAgICBw
dXNoKEBhcmdzLCAiLUkiIC4gJEVOVntCVUlMVF9QUk9EVUNUU19ESVJ9IC4gJEVOVntTREtST09U
fSAuICIvdXNyL2xvY2FsL2luY2x1ZGUiKSBpZiAkRU5We0JVSUxUX1BST0RVQ1RTX0RJUn07Cisg
ICAgcHVzaChAYXJncywgIi1JIiAuICRFTlZ7U0RLUk9PVH0gLiAiL3Vzci9sb2NhbC9pbmNsdWRl
Iik7CisKKyAgICAjIE1ha2Ugc3VyZSBjYyBrbm93cyB3aGljaCBTREsgd2UncmUgdXNpbmcuCisg
ICAgcHVzaChAYXJncywgIi1pc3lzcm9vdCIsICRFTlZ7U0RLUk9PVH0pOworCisgICAgIyBXZSBv
bmx5IG5lZWQgb25lIC1hcmNoIGZsYWcgd2hlbiBwcmVwcm9jZXNzaW5nIHdpdGggLWlzeXNyb290
IHNldC4KKyAgICBteSBAYXJjaHMgPSBncmVwIHsgJF8gfSBzcGxpdCgvXHMrLywgJEVOVntBUkNI
U30pOworICAgIHB1c2goQGFyZ3MsICItYXJjaCIsICRhcmNoc1swXSk7CisKKyAgICAjIENvbXBp
bGUgd2l0aCBzYW1lIEZlYXR1cmVEZWZpbmVzIGl0IHdvdWxkIG5vcm1hbGx5IGJlIGNvbXBpbGVk
IHdpdGguCisgICAgbXkgQGZlYXR1cmVEZWZpbmVzID0gZmVhdHVyZURlZmluZXMoKTsKKyAgICBm
b3JlYWNoIChAZmVhdHVyZURlZmluZXMpIHsKKyAgICAgICAgcHVzaChAYXJncywgIi1EJF8iKSBp
ZiAkXyA9fiAvXkVOQUJMRV8vOworICAgIH0KKworICAgIG9wZW4oQ0MsICItfCIsIHFxe2VjaG8g
IiIgfCAiJGNjIiB9IC4gam9pbigiICIsIEBhcmdzLCAiLSIpKSBvciBkaWUgIiQhIjsKKyAgICB3
aGlsZSAobXkgJG1hY3JvID0gPENDPikgeworICAgICAgICBpZiAoJG1hY3JvID1+IC9eI2RlZmlu
ZSAoRU5BQkxFX1tBLVpfXSspICRtYWNyb1ZhbHVlJC8gfHwgJG1hY3JvID1+IC9eI2RlZmluZSAo
V1RGX1VTRV9bQS1aX10rKSAkbWFjcm9WYWx1ZSQvKSB7CisgICAgICAgICAgICBwdXNoIEByZXN1
bHQsICQxOworICAgICAgICB9CisgICAgfQorICAgIGNsb3NlKENDKSBvciBkaWUgIiQhIjsKKwor
ICAgIG15IEBtYWNyb3MgPSBncmVwIHsgbS9eRU5BQkxFXyguKykkLyB8fCBtL15XVEZfVVNFXygu
KykkLyB8fCAoKSB9IEByZXN1bHQ7CisgICAgQHJlc3VsdCA9IChAbWFjcm9zKTsKKyAgICBwdXNo
KEByZXN1bHQsIGdyZXAgeyBzL15FTkFCTEVfKC4rKSQvRU5BQkxFKCQxKS8gfHwgcy9eV1RGX1VT
RV8oLispJC9VU0UoJDEpLyB8fCAoKSB9IEBtYWNyb3MpOworICAgIHJldHVybiBAcmVzdWx0Owor
fQorCitzdWIgZmVhdHVyZURlZmluZXMoKQoreworICAgIG15IEBmZWF0dXJlcyA9IGdyZXAgeyAk
XyB8fCAoKSB9IHNwbGl0KC9ccysvLCAkRU5We0ZFQVRVUkVfREVGSU5FU30pOworICAgIG15IEBy
ZXN1bHRzID0gKEBmZWF0dXJlcyk7CisgICAgcHVzaChAcmVzdWx0cywgZ3JlcCB7IHMvXkVOQUJM
RV8oLispJC9FTkFCTEUoJDEpLyB8fCAoKSB9IEBmZWF0dXJlcyk7CisgICAgcmV0dXJuIEByZXN1
bHRzOworfQorCitzdWIgZmluZEZpbGVzKFxAKQoreworICAgIG15ICgkZGlycykgPSBAXzsKKwor
ICAgIG15ICR3YW50ZWQgPSBzdWIgeworICAgICAgICBpZiAoLWYgIiRGaWxlOjpGaW5kOjpuYW1l
IikgeworICAgICAgICAgICAgbXkgJGNvbnRlbnRzOworICAgICAgICAgICAgb3BlbihGSUxFLCAi
PCIsICRGaWxlOjpGaW5kOjpuYW1lKSBvciBkaWUgIiQhIjsKKyAgICAgICAgICAgIHsgbG9jYWwg
JC8gPSB1bmRlZjsgJGNvbnRlbnRzID0gPEZJTEU+OyB9CisgICAgICAgICAgICBjbG9zZShGSUxF
KSBvciBkaWUgIiQhIjsKKyAgICAgICAgICAgIGlmICgkY29udGVudHMgPX4gLyRrZWVwX2lmZGVm
c19yZWdleC9tIHx8ICRjb250ZW50cyA9fiAvJGRlbGV0ZV9pZmRlZnNfcmVnZXgvbSkgeworICAg
ICAgICAgICAgICAgIHB1c2goQGZpbGVzLCAkRmlsZTo6RmluZDo6bmFtZSk7CisgICAgICAgICAg
ICB9CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgJEZpbGU6OkZpbmQ6
OnBydW5lID0gMSBpZiAoLWQgJEZpbGU6OkZpbmQ6Om5hbWUgJiYgYmFzZW5hbWUoJEZpbGU6OkZp
bmQ6Om5hbWUpIGVxICIuc3ZuIik7CisgICAgfTsKKworICAgIGZpbmQoeyB3YW50ZWQgPT4gJHdh
bnRlZCwgbm9fY2hkaXIgPT4gMSB9LCBAJGRpcnMpOworfQorCitzdWIgbmVnYXRlTWFjcm8oJCkK
K3sKKyAgICBteSAoJG1hY3JvKSA9IEBfOworICAgIHJldHVybiBzdWJzdHIoJG1hY3JvLCAxKSBp
ZiBzdWJzdHIoJG1hY3JvLCAwLCAxKSBlcSAiISI7CisgICAgcmV0dXJuICIhIiAuICRtYWNybzsK
K30KKworc3ViIHByb2Nlc3MoJCkKK3sKKyAgICBteSAoJGZpbGUpID0gQF87CisKKyAgICBteSAo
JEZILCAkdGVtcEZpbGUpID0gdGVtcGZpbGUoYmFzZW5hbWUoJDApIC4gIi1YWFhYWFhYWCIsIERJ
UiA9PiAkRU5We1RFTVBfRElSfSB8fCAiLiIpOworICAgIHNlbGVjdCgkRkgpOworCisgICAgbXkg
QGlmZGVmU3RhY2sgPSAoIiIpOworICAgIG15IEB3cml0ZVN0YWNrID0gKDEpOworCisgICAgbXkg
JGRlZmluZWRfY3BsdXNwbHVzID0gcXVvdGVtZXRhKCJkZWZpbmVkKF9fY3BsdXNwbHVzKSIpOwor
CisgICAgb3BlbihJTiwgJGZpbGUpIHx8IGRpZSAkITsKKworICAgIHdoaWxlIChteSAkbCA9IDxJ
Tj4pIHsKKyAgICAgICAgaWYgKCRsID1+IG0vXlxzKiNccyooaW5jbHVkZXxpbXBvcnQpXHMrKDwo
d3RmfEphdmFTY3JpcHRDb3JlKVwvUGxhdGZvcm0uaD4pXHMqJC8pIHsKKyAgICAgICAgICAgIHBy
aW50IFNUREVSUiAiV0FSTklORzogU2hvdWxkIG5vdCAjJDEgJDIgaW4gJGZpbGUuXG4iOworICAg
ICAgICB9CisgICAgICAgIGlmICgkbCA9fiBtL14oXHMqI1xzKmlmXHMrKSgoKFteXHNdKylccytc
JlwmXHMrKSspKigkZGVsZXRlX2lmZGVmc19yZWdleClccyooKFwmXCZccysoW15cc10rKVxzKikr
KSokLykgeworICAgICAgICAgICAgcHVzaChAaWZkZWZTdGFjaywgJDUpOworICAgICAgICAgICAg
cHVzaChAd3JpdGVTdGFjaywgMCk7CisgICAgICAgICAgICBpZiAoJGJsYW5rTGluZXMpIHsKKyAg
ICAgICAgICAgICAgICBwcmludCAiXG4iOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAg
ICAgIGVsc2lmICgkbCA9fiBtL14oXHMqI1xzKmlmXHMrKSgoKFteXHNdKylccytcfFx8XHMrKSsp
Kigka2VlcF9pZmRlZnNfcmVnZXgpXHMqKChcfFx8XHMrKFteXHNdKylccyopKykqJC8pIHsKKyAg
ICAgICAgICAgIHB1c2goQGlmZGVmU3RhY2ssICQ1KTsKKyAgICAgICAgICAgIHB1c2goQHdyaXRl
U3RhY2ssICR3cml0ZVN0YWNrWyQjd3JpdGVTdGFja10gJiYgMSk7CisgICAgICAgICAgICBpZiAo
JGJsYW5rTGluZXMpIHsKKyAgICAgICAgICAgICAgICBwcmludCAiXG4iOworICAgICAgICAgICAg
fQorICAgICAgICB9CisgICAgICAgIGVsc2lmICgkbCA9fiBtL14oXHMqI1xzKmlmXHMrKSgkZGVs
ZXRlX2lmZGVmc19yZWdleClccytcfFx8XHMrKFteXHNdKylccyokLykgeworICAgICAgICAgICAg
cHVzaChAaWZkZWZTdGFjaywgJDMpOworICAgICAgICAgICAgcHVzaChAd3JpdGVTdGFjaywgJHdy
aXRlU3RhY2tbJCN3cml0ZVN0YWNrXSAmJiAxKTsKKyAgICAgICAgICAgIHByaW50ICIkMSQzXG4i
OworICAgICAgICB9CisgICAgICAgIGVsc2lmICgkbCA9fiBtL14oXHMqI1xzKmlmXHMrKSgka2Vl
cF9pZmRlZnNfcmVnZXgpXHMrXCZcJlxzKyhbXlxzXSspXHMqJC8pIHsKKyAgICAgICAgICAgIHB1
c2goQGlmZGVmU3RhY2ssICQzKTsKKyAgICAgICAgICAgIHB1c2goQHdyaXRlU3RhY2ssICR3cml0
ZVN0YWNrWyQjd3JpdGVTdGFja10gJiYgMSk7CisgICAgICAgICAgICBwcmludCAiJDEkM1xuIjsK
KyAgICAgICAgfQorICAgICAgICBlbHNpZiAoJGwgPX4gbS9eXHMqI1xzKmlmKGRlZik/XHMrKCRr
ZWVwX2lmZGVmc19yZWdleClccyokLykgeworICAgICAgICAgICAgcHVzaChAaWZkZWZTdGFjaywg
JDIpOworICAgICAgICAgICAgcHVzaChAd3JpdGVTdGFjaywgJHdyaXRlU3RhY2tbJCN3cml0ZVN0
YWNrXSAmJiAxKTsKKyAgICAgICAgICAgIGlmICgkYmxhbmtMaW5lcykgeworICAgICAgICAgICAg
ICAgIHByaW50ICJcbiI7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgZWxzaWYg
KCRsID1+IG0vXlxzKiNccyppZihuZGVmXHMrfFxzK1whXHMqKSgka2VlcF9pZmRlZnNfcmVnZXgp
XHMqJC8pIHsKKyAgICAgICAgICAgIHB1c2goQGlmZGVmU3RhY2ssIG5lZ2F0ZU1hY3JvKCQyKSk7
CisgICAgICAgICAgICBwdXNoKEB3cml0ZVN0YWNrLCAwKTsKKyAgICAgICAgICAgIGlmICgkYmxh
bmtMaW5lcykgeworICAgICAgICAgICAgICAgIHByaW50ICJcbiI7CisgICAgICAgICAgICB9Cisg
ICAgICAgIH0KKyAgICAgICAgZWxzaWYgKCRsID1+IG0vXlxzKiNccyppZlxzKygkZGVsZXRlX2lm
ZGVmc19yZWdleClccyokLykgeworICAgICAgICAgICAgcHVzaChAaWZkZWZTdGFjaywgJDEpOwor
ICAgICAgICAgICAgcHVzaChAd3JpdGVTdGFjaywgMCk7CisgICAgICAgICAgICBpZiAoJGJsYW5r
TGluZXMpIHsKKyAgICAgICAgICAgICAgICBwcmludCAiXG4iOworICAgICAgICAgICAgfQorICAg
ICAgICB9CisgICAgICAgIGVsc2lmICgkbCA9fiBtL15ccyojXHMqaWYoZGVmKT9ccysoLispXHMq
JC8pIHsKKyAgICAgICAgICAgIHB1c2goQGlmZGVmU3RhY2ssICQyKTsKKyAgICAgICAgICAgIHB1
c2goQHdyaXRlU3RhY2ssICR3cml0ZVN0YWNrWyQjd3JpdGVTdGFja10gJiYgMSk7CisgICAgICAg
ICAgICBpZiAoJHdyaXRlU3RhY2tbJCN3cml0ZVN0YWNrXSkgeworICAgICAgICAgICAgICAgIHBy
aW50ICRsOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzaWYgKCRibGFua0xpbmVzKSB7
CisgICAgICAgICAgICAgICAgcHJpbnQgIlxuIjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQor
ICAgICAgICBlbHNpZiAoJGwgPX4gbS9eXHMqI1xzKmlmKG5kZWZccyt8XHMrXCFccyopKC4rKVxz
KiQvKSB7CisgICAgICAgICAgICBwdXNoKEBpZmRlZlN0YWNrLCBuZWdhdGVNYWNybygkMikpOwor
ICAgICAgICAgICAgcHVzaChAd3JpdGVTdGFjaywgJHdyaXRlU3RhY2tbJCN3cml0ZVN0YWNrXSAm
JiAxKTsKKyAgICAgICAgICAgIGlmICgkd3JpdGVTdGFja1skI3dyaXRlU3RhY2tdKSB7CisgICAg
ICAgICAgICAgICAgcHJpbnQgJGw7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNpZiAo
JGJsYW5rTGluZXMpIHsKKyAgICAgICAgICAgICAgICBwcmludCAiXG4iOworICAgICAgICAgICAg
fQorICAgICAgICB9CisgICAgICAgIGVsc2lmICgkbCA9fiBtL15ccyojXHMqZWxzZVxzKi8pIHsK
KyAgICAgICAgICAgIG15ICR0b3AgPSAkaWZkZWZTdGFja1skI2lmZGVmU3RhY2tdOworICAgICAg
ICAgICAgaWYgKCR3cml0ZVN0YWNrWyQjd3JpdGVTdGFja10gJiYgISBleGlzdHMgJGtlZXBfaWZk
ZWZzeyR0b3B9ICYmICEgZXhpc3RzICRkZWxldGVfaWZkZWZzeyR0b3B9KSB7CisgICAgICAgICAg
ICAgICAgcHJpbnQgJGw7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNpZiAoJGJsYW5r
TGluZXMpIHsKKyAgICAgICAgICAgICAgICBwcmludCAiXG4iOworICAgICAgICAgICAgfQorICAg
ICAgICAgICAgJGlmZGVmU3RhY2tbJCNpZmRlZlN0YWNrXSA9IG5lZ2F0ZU1hY3JvKCR0b3ApOwor
ICAgICAgICAgICAgaWYgKGV4aXN0cyAka2VlcF9pZmRlZnN7JGlmZGVmU3RhY2tbJCNpZmRlZlN0
YWNrXX0pIHsKKyAgICAgICAgICAgICAgICBwb3AoQHdyaXRlU3RhY2spOworICAgICAgICAgICAg
ICAgIHB1c2goQHdyaXRlU3RhY2ssICR3cml0ZVN0YWNrWyQjd3JpdGVTdGFja10gJiYgMSk7Cisg
ICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNpZiAoZXhpc3RzICRkZWxldGVfaWZkZWZzeyRp
ZmRlZlN0YWNrWyQjaWZkZWZTdGFja119KSB7CisgICAgICAgICAgICAgICAgcG9wKEB3cml0ZVN0
YWNrKTsKKyAgICAgICAgICAgICAgICBwdXNoKEB3cml0ZVN0YWNrLCAwKTsKKyAgICAgICAgICAg
IH0KKyAgICAgICAgfQorICAgICAgICBlbHNpZiAoJGwgPX4gbS9eXHMqI1xzKmVuZGlmXHMqLykg
eworICAgICAgICAgICAgbXkgJHRvcCA9IHBvcChAaWZkZWZTdGFjayk7CisgICAgICAgICAgICBp
ZiAoJHRvcCA9fiBtLyRkZWZpbmVkX2NwbHVzcGx1cy8pIHsKKyAgICAgICAgICAgICAgICAkbCA9
ICIjZW5kaWZcbiI7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBteSAkdG9wV3JpdGVTdGFj
ayA9IHBvcChAd3JpdGVTdGFjayk7CisgICAgICAgICAgICBpZiAoJHRvcFdyaXRlU3RhY2sgJiYg
ISBleGlzdHMgJGtlZXBfaWZkZWZzeyR0b3B9ICYmICEgZXhpc3RzICRkZWxldGVfaWZkZWZzeyR0
b3B9KSB7CisgICAgICAgICAgICAgICAgcHJpbnQgJGw7CisgICAgICAgICAgICB9CisgICAgICAg
ICAgICBlbHNpZiAoJGJsYW5rTGluZXMpIHsKKyAgICAgICAgICAgICAgICBwcmludCAiXG4iOwor
ICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgaWYg
KCR3cml0ZVN0YWNrWyQjd3JpdGVTdGFja10pIHsKKyAgICAgICAgICAgICAgICBwcmludCAkbDsK
KyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2lmICgkYmxhbmtMaW5lcykgeworICAgICAg
ICAgICAgICAgIHByaW50ICJcbiI7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisK
KyAgICBjbG9zZShJTik7CisgICAgY2xvc2UoJEZIKTsKKyAgICBzZWxlY3QoU1RET1VUKTsKKwor
ICAgIHVubGluaygkZmlsZSkgfHwgZGllICIkISI7CisgICAgc3lzdGVtKHF3KG12IC1mKSwgJHRl
bXBGaWxlLCAkZmlsZSk7CisgICAgaWYgKCQ/ID4+IDggIT0gMCkgeworICAgICAgICBkaWUgIkNv
dWxkIG5vdCByZW5hbWUgJHRlbXBGaWxlIHRvICRmaWxlOiAkISI7CisgICAgfQorCisgICAgbXkg
JGZpbGVDb3VudCA9IGNobW9kIDA2NDQsICRmaWxlOworICAgIGlmICgkZmlsZUNvdW50ICE9IDEp
IHsKKyAgICAgICAgZGllICJDb3VsZCBub3QgY2htb2QgMDY0NCAkZmlsZTogJCEiOworICAgIH0K
K30KKwpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4
IGU1NjBlN2RkNmYxNDg0ZGFhMjYzZjAyOTM2ZDBhZmMxZmMzYjVhNWYuLjhjYmQyOGY1OGE5MDUx
MDFhZjRiMTE5N2FlNWIwODk0NjZhNzdjOGUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZwor
KysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAxNC0wMS0wOSAgRGFuaWVs
IEJhdGVzICA8ZGFiYXRlc0BhcHBsZS5jb20+CisKKyAgICAgICAgW2lPU10gVXBzdHJlYW0gV2Vi
Q29yZSBhbmQgVG9vbHMgbWlzY2VsbGFuZW91cyBjaGFuZ2VzCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjY2OTgKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFNjcmlwdHMvY2hlY2stZm9yLWluYXBwcm9w
cmlhdGUtb2JqYy1jbGFzcy1uYW1lczoKKyAgICAgICAgKiBTY3JpcHRzL2NoZWNrLWZvci13ZWJr
aXQtZnJhbWV3b3JrLWluY2x1ZGUtY29uc2lzdGVuY3k6CisKIDIwMTQtMDEtMDkgIFJvbGFuZCBU
YWthY3MgIDxydGFrYWNzQGluZi51LXN6ZWdlZC5odT4KIAogICAgICAgICBNb3ZlIG15c2VsZiB0
byB0aGUgY29tbWl0dGVycyBsaXN0LgpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy9jaGVjay1m
b3ItaW5hcHByb3ByaWF0ZS1vYmpjLWNsYXNzLW5hbWVzIGIvVG9vbHMvU2NyaXB0cy9jaGVjay1m
b3ItaW5hcHByb3ByaWF0ZS1vYmpjLWNsYXNzLW5hbWVzCmluZGV4IDVlZTg0MTBiMDc5NjRmZjY0
OGEwY2EzYzNlZjQzZjBkNWYxZTcwZDQuLjFkY2FmZDFmODMzYTJmYTg5NWE1OGZhMzc5Mjg5OTkx
MzQ5MTc3MTMgMTAwNzU1Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvY2hlY2stZm9yLWluYXBwcm9wcmlh
dGUtb2JqYy1jbGFzcy1uYW1lcworKysgYi9Ub29scy9TY3JpcHRzL2NoZWNrLWZvci1pbmFwcHJv
cHJpYXRlLW9iamMtY2xhc3MtbmFtZXMKQEAgLTc4LDYgKzc4LDM0IEBAIGlmICghZGVmaW5lZCAk
ZXhlY3V0YWJsZVBhdGhBZ2UgfHwgIWRlZmluZWQgJGJ1aWxkVGltZXN0YW1wQWdlIHx8ICRleGVj
dXRhYmxlUGF0CiAgICAgfQogICAgIGNsb3NlIE5NOwogCisgICAgIyBiZWdpbiBQTEFURk9STShJ
T1MpCisgICAgIyBPbiBpT1MgcHV0IGV4Y2VwdGlvbnMgaW4gcGxhY2UgZm9yIGV4aXN0aW5nIGJh
ZCBuYW1lcy4gRnV0dXJlIGJhZCBuYW1lcyB3aWxsCisgICAgIyBiZSBjYXVnaHQgYW5kIHNob3Vs
ZCBiZSBmaXhlZCBpbW1lZGlhdGVseS4gRml4aW5nIHRoZXNlIGlzIGNvdmVyZWQgYnk6CisgICAg
IyA8cmRhcjovL3Byb2JsZW0vMTAzNjUwMDg+IEZpeCBJbmFwcHJvcHJpYXRlIE9iamVjdGl2ZS1D
IENsYXNzIE5hbWVzIGZvdW5kIGJ5IGJ1aWxkIHBoYXNlCisgICAgbXkgJWV4Y2VwdGlvbnMgPSAo
CisgICAgICAgICMgV2ViQ29yZQorICAgICAgICAiV0tRdWFkT2JqZWN0IiA9PiAxLAorICAgICAg
ICAiVGlsZUNhY2hlVG9tYnN0b25lIiA9PiAxLAorICAgICAgICAiVGlsZUhvc3RMYXllciIgPT4g
MSwKKyAgICAgICAgIlRpbGVMYXllciIgPT4gMSwKKyAgICAgICAgIldBS1Jlc3BvbmRlciIgPT4g
MSwKKyAgICAgICAgIk5TQ3Vyc29yIiA9PiAxLAorICAgICAgICAiV0FLQ2xpcFZpZXciID0+IDEs
CisgICAgICAgICJXQUtTY3JvbGxWaWV3IiA9PiAxLAorICAgICAgICAiV0FLVmlldyIgPT4gMSwK
KyAgICAgICAgIldBS1dpbmRvdyIgPT4gMSwKKyAgICAgICAgIyBXZWJLaXQyCisgICAgICAgICJV
SVdLUmVtb3RlVmlldyIgPT4gMSwKKyAgICAgICAgIlVJV0tWaWV3IiA9PiAxLAorICAgICAgICAi
VUlXS1ZpZXdEYXRhIiA9PiAxCisgICAgKTsKKyAgICBteSBAcmVhbEJhZE5hbWVzOworICAgIGZv
ciBteSAkY2xhc3NOYW1lIChAYmFkTmFtZXMpIHsKKyAgICAgICAgcHVzaChAcmVhbEJhZE5hbWVz
LCAkY2xhc3NOYW1lKSB1bmxlc3MgZXhpc3RzKCRleGNlcHRpb25zeyRjbGFzc05hbWV9KTsKKyAg
ICB9CisgICAgQGJhZE5hbWVzID0gQHJlYWxCYWROYW1lczsKKyAgICAjIGVuZCBQTEFURk9STShJ
T1MpCisKICAgICBpZiAoQGJhZE5hbWVzKSB7CiAKICAgICAgICAgbXkgJHNob3J0TmFtZSA9ICRl
eGVjdXRhYmxlUGF0aDsKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvY2hlY2stZm9yLXdlYmtp
dC1mcmFtZXdvcmstaW5jbHVkZS1jb25zaXN0ZW5jeSBiL1Rvb2xzL1NjcmlwdHMvY2hlY2stZm9y
LXdlYmtpdC1mcmFtZXdvcmstaW5jbHVkZS1jb25zaXN0ZW5jeQppbmRleCBjYzE3MzgyODg3NmY2
NzFmMDZlYzMyZTlmMGQ1ZTg4MzYwNjc2ZGViLi4zMDhiMmI0Nzc1MWQ1ZWEzZmY2NWVkZGY2NGNl
YzRjMGUwMDQ5MTFiIDEwMDc1NQotLS0gYS9Ub29scy9TY3JpcHRzL2NoZWNrLWZvci13ZWJraXQt
ZnJhbWV3b3JrLWluY2x1ZGUtY29uc2lzdGVuY3kKKysrIGIvVG9vbHMvU2NyaXB0cy9jaGVjay1m
b3Itd2Via2l0LWZyYW1ld29yay1pbmNsdWRlLWNvbnNpc3RlbmN5CkBAIC03OCw2ICs3OCwxMCBA
QCBkZWYgcmVzb2x2ZV9pbmNsdWRlKGhlYWRlciwgaW5jbHVkZWRfaGVhZGVyLCBwZXJtaXR0ZWRf
dHlwZXMpCiAgICAgcmV0dXJuCiAgIGVuZAogCisgICMgaU9TIHdlIHdhbnQgdG8ga2VlcCB0aGUg
V0FLIGhlYWRlcnMgcHJpdmF0ZSwgZXZlbiBpZiBhIHB1YmxpYyBoZWFkZXIgaW5jbHVkZXMgdGhl
bSwKKyAgIyBzbyB3ZSBhcmUgZ29pbmcgdG8gbm90IHNob3cgd2FybmluZ3MgZm9yIFdBSyBoZWFk
ZXJzLgorICByZXR1cm4gaWYgZnJhbWV3b3JrID09ICJXZWJLaXQiIGFuZCBpbmNsdWRlZF9oZWFk
ZXJfbmFtZSA9fiAvXldBSy8KKwogICBoZWFkZXJfdHlwZSA9ICRIRUFERVJfTkFNRVNfVE9fVFlQ
RVtpbmNsdWRlZF9oZWFkZXJfbmFtZV0KIAogICBpZiBub3QgaGVhZGVyX3R5cGUK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>220748</attachid>
            <date>2014-01-09 10:12:03 -0800</date>
            <delta_ts>2014-01-13 10:42:14 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-126698-20140109101203.patch</filename>
            <type>text/plain</type>
            <size>396962</size>
            <attacher name="Daniel Bates">dbates</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTYxNTU5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggN2RiZDU0NTMxNDEwOGJi
NDJlMjU1Yjg1YzVkMTM5NTE3MDYxMzZkOS4uZTUzYjc5ODBkODJhNTYzOGQ4NTY4MzU5ZDMzZjFj
Y2Q5YWYzMDg4NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM5OSBAQAorMjAxNC0wMS0wOSAgRGFu
aWVsIEJhdGVzICA8ZGFiYXRlc0BhcHBsZS5jb20+CisKKyAgICAgICAgW2lPU10gVXBzdHJlYW0g
V2ViQ29yZSBhbmQgVG9vbHMgbWlzY2VsbGFuZW91cyBjaGFuZ2VzCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjY2OTgKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIENvbmZpZ3VyYXRpb25zL0Jhc2UueGNj
b25maWc6CisgICAgICAgICogQ29uZmlndXJhdGlvbnMvV2ViQ29yZS54Y2NvbmZpZzoKKyAgICAg
ICAgKiBDb25maWd1cmF0aW9ucy9XZWJDb3JlVGVzdFN1cHBvcnQueGNjb25maWc6CisgICAgICAg
ICogQ29uZmlndXJhdGlvbnMvaU9TLnhjY29uZmlnOiBBZGRlZC4KKyAgICAgICAgKiBEZXJpdmVk
U291cmNlcy5tYWtlOgorICAgICAgICAqIEVuZ2xpc2gubHByb2ovTG9jYWxpemFibGUuc3RyaW5n
czoKKyAgICAgICAgKiBNb2R1bGVzL2FpcnBsYXkvV2ViS2l0UGxheWJhY2tUYXJnZXRBdmFpbGFi
aWxpdHlFdmVudC5jcHA6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dEFm
ZmluaXR5LmguCisgICAgICAgICogTW9kdWxlcy9haXJwbGF5L1dlYktpdFBsYXliYWNrVGFyZ2V0
QXZhaWxhYmlsaXR5RXZlbnQuaDogQWRkZWQuCisgICAgICAgICogTW9kdWxlcy9haXJwbGF5L1dl
YktpdFBsYXliYWNrVGFyZ2V0QXZhaWxhYmlsaXR5RXZlbnQuaWRsOiBDb3BpZWQgZnJvbSBTb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL0RlbGV0ZUJ1dHRvbi5oLgorICAgICAgICAqIE1vZHVsZXMvZ2Vv
bG9jYXRpb24vR2VvbG9jYXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6R2VvbG9jYXRpb246
Okdlb2xvY2F0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6Okdlb2xvY2F0aW9uOjpjYW5TdXNwZW5k
KToKKyAgICAgICAgKFdlYkNvcmU6Okdlb2xvY2F0aW9uOjpzdXNwZW5kKToKKyAgICAgICAgKFdl
YkNvcmU6Okdlb2xvY2F0aW9uOjpyZXN1bWUpOgorICAgICAgICAoV2ViQ29yZTo6R2VvbG9jYXRp
b246OnJlc3VtZVRpbWVyRmlyZWQpOgorICAgICAgICAoV2ViQ29yZTo6R2VvbG9jYXRpb246OnJl
c2V0QWxsR2VvbG9jYXRpb25QZXJtaXNzaW9uKToKKyAgICAgICAgKFdlYkNvcmU6Okdlb2xvY2F0
aW9uOjpzdG9wKToKKyAgICAgICAgKFdlYkNvcmU6Okdlb2xvY2F0aW9uOjpzZXRJc0FsbG93ZWQp
OgorICAgICAgICAoV2ViQ29yZTo6R2VvbG9jYXRpb246OnBvc2l0aW9uQ2hhbmdlZCk6CisgICAg
ICAgIChXZWJDb3JlOjpHZW9sb2NhdGlvbjo6c2V0RXJyb3IpOgorICAgICAgICAqIE1vZHVsZXMv
Z2VvbG9jYXRpb24vR2VvbG9jYXRpb24uaDoKKyAgICAgICAgKiBNb2R1bGVzL2dlb2xvY2F0aW9u
L05hdmlnYXRvckdlb2xvY2F0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok5hdmlnYXRvckdl
b2xvY2F0aW9uOjpyZXNldEFsbEdlb2xvY2F0aW9uUGVybWlzc2lvbik6CisgICAgICAgICogTW9k
dWxlcy9nZW9sb2NhdGlvbi9OYXZpZ2F0b3JHZW9sb2NhdGlvbi5oOgorICAgICAgICAqIE1vZHVs
ZXMvc3BlZWNoL1NwZWVjaFN5bnRoZXNpcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTcGVlY2hT
eW50aGVzaXM6OlNwZWVjaFN5bnRoZXNpcyk6CisgICAgICAgIChXZWJDb3JlOjpTcGVlY2hTeW50
aGVzaXM6OnNwZWFrKToKKyAgICAgICAgKiBNb2R1bGVzL3NwZWVjaC9TcGVlY2hTeW50aGVzaXMu
aDoKKyAgICAgICAgKFdlYkNvcmU6OlNwZWVjaFN5bnRoZXNpczo6dXNlckdlc3R1cmVSZXF1aXJl
ZEZvclNwZWVjaFN0YXJ0KToKKyAgICAgICAgKFdlYkNvcmU6OlNwZWVjaFN5bnRoZXNpczo6cmVt
b3ZlQmVoYXZpb3JSZXN0cmljdGlvbik6CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9BdWRp
b0NvbnRleHQuY3BwOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0Lmg6
CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9BdWRpb1NjaGVkdWxlZFNvdXJjZU5vZGUuY3Bw
OgorICAgICAgICAqIE1vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2UuY3BwOgorICAgICAgICAq
IE1vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VCYWNrZW5kQmFzZS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpEYXRhYmFzZUJhY2tlbmRCYXNlOjpwZXJmb3JtT3BlbkFuZFZlcmlmeSk6CisgICAg
ICAgIChXZWJDb3JlOjpEYXRhYmFzZUJhY2tlbmRCYXNlOjppbmNyZW1lbnRhbFZhY3V1bUlmTmVl
ZGVkKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlQ29udGV4dC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZUNvbnRleHQ6OkRhdGFiYXNlQ29udGV4dCk6Cisg
ICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZUNvbnRleHQ6OmRhdGFiYXNlVGhyZWFkKToKKyAgICAg
ICAgKFdlYkNvcmU6OkRhdGFiYXNlQ29udGV4dDo6c2V0UGF1c2VkKToKKyAgICAgICAgKiBNb2R1
bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlQ29udGV4dC5oOgorICAgICAgICAqIE1vZHVsZXMvd2Vi
ZGF0YWJhc2UvRGF0YWJhc2VNYW5hZ2VyQ2xpZW50Lmg6CisgICAgICAgICogTW9kdWxlcy93ZWJk
YXRhYmFzZS9EYXRhYmFzZVRhc2suY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGF0YWJhc2VUYXNr
OjpwZXJmb3JtVGFzayk6CisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZTo6RGF0YWJhc2VUcmFu
c2FjdGlvblRhc2s6OnNob3VsZFBlcmZvcm1XaGlsZVBhdXNlZCk6CisgICAgICAgICogTW9kdWxl
cy93ZWJkYXRhYmFzZS9EYXRhYmFzZVRhc2suaDoKKyAgICAgICAgKiBNb2R1bGVzL3dlYmRhdGFi
YXNlL0RhdGFiYXNlVGhyZWFkLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFiYXNlVGhyZWFk
OjpEYXRhYmFzZVRocmVhZCk6CisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZVRocmVhZDo6cmVx
dWVzdFRlcm1pbmF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFiYXNlVW5wYXVzZVRhc2s6
OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZVVucGF1c2VUYXNrOjpzaG91bGRQ
ZXJmb3JtV2hpbGVQYXVzZWQpOgorICAgICAgICAoV2ViQ29yZTo6RGF0YWJhc2VVbnBhdXNlVGFz
azo6RGF0YWJhc2VVbnBhdXNlVGFzayk6CisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZVVucGF1
c2VUYXNrOjpkb1BlcmZvcm1UYXNrKToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFiYXNlVW5wYXVz
ZVRhc2s6OmRlYnVnVGFza05hbWUpOgorICAgICAgICAoV2ViQ29yZTo6RGF0YWJhc2VUaHJlYWQ6
OnNldFBhdXNlZCk6CisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZVRocmVhZDo6aGFuZGxlUGF1
c2VkUXVldWUpOgorICAgICAgICAoV2ViQ29yZTo6RGF0YWJhc2VUaHJlYWQ6OmRhdGFiYXNlVGhy
ZWFkKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlVGhyZWFkLmg6Cisg
ICAgICAgICogTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZVRyYWNrZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6RGF0YWJhc2VUcmFja2VyOjpzZXRRdW90YSk6CisgICAgICAgIChXZWJDb3Jl
OjpEYXRhYmFzZVRyYWNrZXI6OmRlbGV0ZU9yaWdpbik6CisgICAgICAgIChXZWJDb3JlOjpEYXRh
YmFzZVRyYWNrZXI6OmRlbGV0ZURhdGFiYXNlKToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFiYXNl
VHJhY2tlcjo6ZGVsZXRlRGF0YWJhc2VGaWxlKToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFiYXNl
VHJhY2tlcjo6cmVtb3ZlRGVsZXRlZE9wZW5lZERhdGFiYXNlcyk6CisgICAgICAgIChXZWJDb3Jl
Ojppc1plcm9CeXRlRmlsZSk6CisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZVRyYWNrZXI6OmRl
bGV0ZURhdGFiYXNlRmlsZUlmRW1wdHkpOgorICAgICAgICAoV2ViQ29yZTo6RGF0YWJhc2VUcmFj
a2VyOjpvcGVuRGF0YWJhc2VNdXRleCk6CisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZVRyYWNr
ZXI6OmVtcHR5RGF0YWJhc2VGaWxlc1JlbW92YWxUYXNrV2lsbEJlU2NoZWR1bGVkKToKKyAgICAg
ICAgKFdlYkNvcmU6OkRhdGFiYXNlVHJhY2tlcjo6ZW1wdHlEYXRhYmFzZUZpbGVzUmVtb3ZhbFRh
c2tEaWRGaW5pc2gpOgorICAgICAgICAoV2ViQ29yZTo6RGF0YWJhc2VUcmFja2VyOjpzZXREYXRh
YmFzZXNQYXVzZWQpOgorICAgICAgICAqIE1vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VUcmFj
a2VyLmg6CisgICAgICAgICogTW9kdWxlcy93ZWJkYXRhYmFzZS9TUUxUcmFuc2FjdGlvbkJhY2tl
bmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1FMVHJhbnNhY3Rpb25CYWNrZW5kOjpzaG91bGRQ
ZXJmb3JtV2hpbGVQYXVzZWQpOgorICAgICAgICAqIE1vZHVsZXMvd2ViZGF0YWJhc2UvU1FMVHJh
bnNhY3Rpb25CYWNrZW5kLmg6CisgICAgICAgICogUmVzb3VyY2VzL0RpY3RhdGlvblBocmFzZVdp
dGhBbHRlcm5hdGl2ZXNEb3QucG5nOiBBZGRlZC4KKyAgICAgICAgKiBSZXNvdXJjZXMvRGljdGF0
aW9uUGhyYXNlV2l0aEFsdGVybmF0aXZlc0RvdEAyeC5wbmc6IEFkZGVkLgorICAgICAgICAqIFJl
c291cmNlcy9TcGVsbGluZ0RvdC5wbmc6IEFkZGVkLgorICAgICAgICAqIFJlc291cmNlcy9TcGVs
bGluZ0RvdEAyeC5wbmc6IEFkZGVkLgorICAgICAgICAqIFJlc291cmNlcy9kZWNyZW1lbnRBcnJv
dy50aWZmOiBBZGRlZC4KKyAgICAgICAgKiBSZXNvdXJjZXMvaFNjcm9sbENvbnRyb2xfbGVmdC5w
bmc6IEFkZGVkLgorICAgICAgICAqIFJlc291cmNlcy9oU2Nyb2xsQ29udHJvbF9taWRkbGUucG5n
OiBBZGRlZC4KKyAgICAgICAgKiBSZXNvdXJjZXMvaFNjcm9sbENvbnRyb2xfcmlnaHQucG5nOiBB
ZGRlZC4KKyAgICAgICAgKiBSZXNvdXJjZXMvaW5jcmVtZW50QXJyb3cudGlmZjogQWRkZWQuCisg
ICAgICAgICogUmVzb3VyY2VzL21hcmtlZExlZnQucG5nOiBBZGRlZC4KKyAgICAgICAgKiBSZXNv
dXJjZXMvbWFya2VkTWlkZGxlLnBuZzogQWRkZWQuCisgICAgICAgICogUmVzb3VyY2VzL21hcmtl
ZFJpZ2h0LnBuZzogQWRkZWQuCisgICAgICAgICogUmVzb3VyY2VzL3ZTY3JvbGxDb250cm9sX2Jv
dHRvbS5wbmc6IEFkZGVkLgorICAgICAgICAqIFJlc291cmNlcy92U2Nyb2xsQ29udHJvbF9taWRk
bGUucG5nOiBBZGRlZC4KKyAgICAgICAgKiBSZXNvdXJjZXMvdlNjcm9sbENvbnRyb2xfdG9wLnBu
ZzogQWRkZWQuCisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgor
ICAgICAgICAqIGJpbmRpbmdzL2pzL0dDQ29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpHQ0NvbnRyb2xsZXI6OmdhcmJhZ2VDb2xsZWN0Tm93KToKKyAgICAgICAgKFdlYkNvcmU6OkdD
Q29udHJvbGxlcjo6cmVsZWFzZUV4ZWN1dGFibGVNZW1vcnkpOgorICAgICAgICAqIGJpbmRpbmdz
L2pzL0dDQ29udHJvbGxlci5oOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTQ2FsbGJhY2tEYXRh
Lmg6CisgICAgICAgIChXZWJDb3JlOjpKU0NhbGxiYWNrRGF0YTo6fkpTQ2FsbGJhY2tEYXRhKToK
KyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0Jhc2UuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6SlNET01XaW5kb3dCYXNlOjpzdXBwb3J0c1Byb2ZpbGluZyk6CisgICAgICAgIChXZWJD
b3JlOjpKU0RPTVdpbmRvd0Jhc2U6OnNob3VsZEludGVycnVwdFNjcmlwdEJlZm9yZVRpbWVvdXQp
OgorICAgICAgICAoV2ViQ29yZTo6SlNET01XaW5kb3dCYXNlOjpjb21tb25WTSk6CisgICAgICAg
IChXZWJDb3JlOjpKU0RPTVdpbmRvd0Jhc2U6OmNvbW1vblZNRXhpc3RzKToKKyAgICAgICAgKFdl
YkNvcmU6OkpTRE9NV2luZG93QmFzZTo6Y29tbW9uVk1JbnRlcm5hbCk6CisgICAgICAgICogYmlu
ZGluZ3MvanMvSlNET01XaW5kb3dDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNET01X
aW5kb3c6OnRvdWNoKToKKyAgICAgICAgKFdlYkNvcmU6OkpTRE9NV2luZG93Ojp0b3VjaExpc3Qp
OgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRGV2aWNlT3JpZW50YXRpb25FdmVudEN1c3RvbS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpKU0RldmljZU9yaWVudGF0aW9uRXZlbnQ6OndlYmtpdENv
bXBhc3NIZWFkaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OkpTRGV2aWNlT3JpZW50YXRpb25FdmVu
dDo6d2Via2l0Q29tcGFzc0FjY3VyYWN5KToKKyAgICAgICAgKFdlYkNvcmU6OkpTRGV2aWNlT3Jp
ZW50YXRpb25FdmVudDo6aW5pdERldmljZU9yaWVudGF0aW9uRXZlbnQpOgorICAgICAgICAqIGJp
bmRpbmdzL2pzL0pTTWFpblRocmVhZEV4ZWNTdGF0ZS5oOgorICAgICAgICAqIGJpbmRpbmdzL2pz
L0pTVG91Y2hDdXN0b20uY3BwOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTVG91Y2hMaXN0Q3Vz
dG9tLmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9QYWdlU2NyaXB0RGVidWdTZXJ2ZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6UGFnZVNjcmlwdERlYnVnU2VydmVyOjpkaWRDb250aW51ZSk6
CisgICAgICAgICogYmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpTY3JpcHRDb250cm9sbGVyOjppbml0aWFsaXplVGhyZWFkaW5nKToKKyAgICAgICAg
KiBiaW5kaW5ncy9qcy9TY3JpcHREZWJ1Z1NlcnZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpT
Y3JpcHREZWJ1Z1NlcnZlcjo6aGFuZGxlUGF1c2UpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL2lv
cy9Ub3VjaENvbnN0cnVjdG9ycy5jcHA6IEFkZGVkLgorICAgICAgICAqIGJpbmRpbmdzL29iamMv
RE9NLm1tOgorICAgICAgICAoV2ViQ29yZTo6d2tRdWFkRnJvbUZsb2F0UXVhZCk6CisgICAgICAg
IChXZWJDb3JlOjpraXQpOgorICAgICAgICAoV2ViQ29yZTo6bWluNCk6CisgICAgICAgIChXZWJD
b3JlOjptYXg0KToKKyAgICAgICAgKFdlYkNvcmU6OmVtcHR5UXVhZCk6CisgICAgICAgICgtW1dL
UXVhZE9iamVjdCBpbml0V2l0aFF1YWQ6XSk6CisgICAgICAgICgtW1dLUXVhZE9iamVjdCBxdWFk
XSk6CisgICAgICAgICgtW1dLUXVhZE9iamVjdCBib3VuZGluZ0JveF0pOgorICAgICAgICAoLVtE
T01Ob2RlIGJvdW5kaW5nQm94XSk6CisgICAgICAgICgtW0RPTU5vZGUgYWJzb2x1dGVRdWFkXSk6
CisgICAgICAgICgtW0RPTU5vZGUgYWJzb2x1dGVRdWFkQW5kSW5zaWRlRml4ZWRQb3NpdGlvbjpd
KToKKyAgICAgICAgKC1bRE9NTm9kZSBib3VuZGluZ0JveFVzaW5nVHJhbnNmb3Jtc10pOgorICAg
ICAgICAoLVtET01Ob2RlIGxpbmVCb3hRdWFkc10pOgorICAgICAgICAoLVtET01Ob2RlIF9saW5r
RWxlbWVudF0pOgorICAgICAgICAoLVtET01Ob2RlIGhyZWZVUkxdKToKKyAgICAgICAgKC1bRE9N
Tm9kZSBocmVmVGFyZ2V0XSk6CisgICAgICAgICgtW0RPTU5vZGUgaHJlZkZyYW1lXSk6CisgICAg
ICAgICgtW0RPTU5vZGUgaHJlZkxhYmVsXSk6CisgICAgICAgICgtW0RPTU5vZGUgaHJlZlRpdGxl
XSk6CisgICAgICAgICgtW0RPTU5vZGUgYm91bmRpbmdGcmFtZV0pOgorICAgICAgICAoLVtET01O
b2RlIGlubmVyRnJhbWVRdWFkXSk6CisgICAgICAgICgtW0RPTU5vZGUgY29tcHV0ZWRGb250U2l6
ZV0pOgorICAgICAgICAoLVtET01Ob2RlIG5leHRGb2N1c05vZGVdKToKKyAgICAgICAgKC1bRE9N
Tm9kZSBwcmV2aW91c0ZvY3VzTm9kZV0pOgorICAgICAgICAoLVtET01SYW5nZSBib3VuZGluZ0Jv
eF0pOgorICAgICAgICAoLVtET01SYW5nZSByZW5kZXJlZEltYWdlRm9yY2luZ0JsYWNrVGV4dDpy
ZW5kZXJlZEltYWdlRm9yY2luZ0JsYWNrVGV4dDpdKToKKyAgICAgICAgKC1bRE9NRWxlbWVudCBf
Zm9udF0pOgorICAgICAgICAoLVtET01IVE1MTGlua0VsZW1lbnQgX21lZGlhUXVlcnlNYXRjaGVz
Rm9yT3JpZW50YXRpb246XSk6CisgICAgICAgICgtW0RPTUhUTUxMaW5rRWxlbWVudCBfbWVkaWFR
dWVyeU1hdGNoZXNdKToKKyAgICAgICAgKiBiaW5kaW5ncy9vYmpjL0RPTUV2ZW50cy5oOgorICAg
ICAgICAqIGJpbmRpbmdzL29iamMvRE9NRXZlbnRzLm1tOgorICAgICAgICAoa2l0Q2xhc3MpOgor
ICAgICAgICAqIGJpbmRpbmdzL29iamMvRE9NRXh0ZW5zaW9ucy5oOgorICAgICAgICAqIGJpbmRp
bmdzL29iamMvRE9NSFRNTC5tbToKKyAgICAgICAgKC1bRE9NSFRNTEVsZW1lbnQgc2Nyb2xsWU9m
ZnNldF0pOgorICAgICAgICAoLVtET01IVE1MRWxlbWVudCBzZXRTY3JvbGxYT2Zmc2V0OnNjcm9s
bFlPZmZzZXQ6XSk6CisgICAgICAgICgtW0RPTUhUTUxFbGVtZW50IHNldFNjcm9sbFhPZmZzZXQ6
c2Nyb2xsWU9mZnNldDphZGp1c3RGb3JJT1NDYXJldDpdKToKKyAgICAgICAgKC1bRE9NSFRNTEVs
ZW1lbnQgYWJzb2x1dGVQb3NpdGlvbjo6OjpdKToKKyAgICAgICAgKC1bRE9NSFRNTElucHV0RWxl
bWVudCBfYXV0b2NhcGl0YWxpemVUeXBlXSk6CisgICAgICAgICgtW0RPTUhUTUxUZXh0QXJlYUVs
ZW1lbnQgX2F1dG9jYXBpdGFsaXplVHlwZV0pOgorICAgICAgICAoLVtET01IVE1MSW5wdXRFbGVt
ZW50IHNldFZhbHVlV2l0aENoYW5nZUV2ZW50Ol0pOgorICAgICAgICAoLVtET01IVE1MSW5wdXRF
bGVtZW50IHNldFZhbHVlQXNOdW1iZXJXaXRoQ2hhbmdlRXZlbnQ6XSk6CisgICAgICAgICogYmlu
ZGluZ3Mvb2JqYy9ET01JbnRlcm5hbC5oOgorICAgICAgICAqIGJpbmRpbmdzL29iamMvRE9NSW50
ZXJuYWwubW06CisgICAgICAgICh3cmFwcGVyQ2FjaGVMb2NrKToKKyAgICAgICAgKGdldERPTVdy
YXBwZXIpOgorICAgICAgICAoYWRkRE9NV3JhcHBlcik6CisgICAgICAgIChyZW1vdmVET01XcmFw
cGVyKToKKyAgICAgICAgKiBiaW5kaW5ncy9vYmpjL0RPTVByaXZhdGUuaDoKKyAgICAgICAgKiBi
aW5kaW5ncy9vYmpjL0RPTVVJS2l0RXh0ZW5zaW9ucy5oOiBBZGRlZC4KKyAgICAgICAgKiBiaW5k
aW5ncy9vYmpjL0RPTVVJS2l0RXh0ZW5zaW9ucy5tbTogQWRkZWQuCisgICAgICAgICgtW0RPTVJh
bmdlIG1vdmU6aW5EaXJlY3Rpb246XSk6CisgICAgICAgICgtW0RPTVJhbmdlIGV4dGVuZDppbkRp
cmVjdGlvbjpdKToKKyAgICAgICAgKC1bRE9NUmFuZ2UgZmlyc3ROb2RlXSk6CisgICAgICAgICgt
W0RPTU5vZGUgYm91bmRpbmdCb3hlc10pOgorICAgICAgICAoLVtET01Ob2RlIGFic29sdXRlUXVh
ZHNdKToKKyAgICAgICAgKC1bRE9NTm9kZSBib3JkZXJSYWRpaV0pOgorICAgICAgICAoLVtET01O
b2RlIGNvbnRhaW5zT25seUlubGluZU9iamVjdHNdKToKKyAgICAgICAgKC1bRE9NTm9kZSBpc1Nl
bGVjdGFibGVCbG9ja10pOgorICAgICAgICAoLVtET01Ob2RlIHJhbmdlT2ZDb250YWluaW5nUGFy
YWdyYXBoXSk6CisgICAgICAgICgtW0RPTU5vZGUgdGV4dEhlaWdodF0pOgorICAgICAgICAoLVtE
T01Ob2RlIGZpbmRFeHBsb2RlZFRleHROb2RlQXRQb2ludDpdKToKKyAgICAgICAgKC1bRE9NSFRN
TEVsZW1lbnQgc3RydWN0dXJhbENvbXBsZXhpdHlDb250cmlidXRpb25dKToKKyAgICAgICAgKC1b
RE9NSFRNTEFyZWFFbGVtZW50IGJvdW5kaW5nQm94V2l0aE93bmVyOl0pOgorICAgICAgICAoLVtE
T01IVE1MQXJlYUVsZW1lbnQgYWJzb2x1dGVRdWFkV2l0aE93bmVyOl0pOgorICAgICAgICAoLVtE
T01IVE1MQXJlYUVsZW1lbnQgYm91bmRpbmdCb3hlc1dpdGhPd25lcjpdKToKKyAgICAgICAgKC1b
RE9NSFRNTEFyZWFFbGVtZW50IGFic29sdXRlUXVhZHNXaXRoT3duZXI6XSk6CisgICAgICAgICgt
W0RPTUhUTUxTZWxlY3RFbGVtZW50IGNvbXBsZXRlTGVuZ3RoXSk6CisgICAgICAgICgtW0RPTUhU
TUxTZWxlY3RFbGVtZW50IGxpc3RJdGVtQXRJbmRleDpdKToKKyAgICAgICAgKC1bRE9NSFRNTElt
YWdlRWxlbWVudCBkYXRhUmVwcmVzZW50YXRpb246XSk6CisgICAgICAgICgtW0RPTUhUTUxJbWFn
ZUVsZW1lbnQgbWltZVR5cGVdKToKKyAgICAgICAgKiBiaW5kaW5ncy9vYmpjL1B1YmxpY0RPTUlu
dGVyZmFjZXMuaDoKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5w
bToKKyAgICAgICAgKEdlbmVyYXRlSGVhZGVyQ29udGVudEhlYWRlcik6CisgICAgICAgIChHZW5l
cmF0ZUltcGxlbWVudGF0aW9uQ29udGVudEhlYWRlcik6CisgICAgICAgIChHZW5lcmF0ZUhlYWRl
cik6CisgICAgICAgIChHZW5lcmF0ZUltcGxlbWVudGF0aW9uKToKKyAgICAgICAgKEdlbmVyYXRl
Q2FsbGJhY2tJbXBsZW1lbnRhdGlvbik6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy9Db2Rl
R2VuZXJhdG9yT2JqQy5wbToKKyAgICAgICAgKFJlYWRQdWJsaWNJbnRlcmZhY2VzKToKKyAgICAg
ICAgKEdldENsYXNzTmFtZSk6CisgICAgICAgIChJc0NvcmVGb3VuZGF0aW9uVHlwZSk6CisgICAg
ICAgIChHZXRPYmpDVHlwZSk6CisgICAgICAgIChBZGRJbmNsdWRlc0ZvclR5cGUpOgorICAgICAg
ICAoR2VuZXJhdGVIZWFkZXIpOgorICAgICAgICAoR2VuZXJhdGVJbXBsZW1lbnRhdGlvbik6Cisg
ICAgICAgIChXcml0ZURhdGEpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvSURMQXR0cmli
dXRlcy50eHQ6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy9wcmVwcm9jZXNzb3IucG06Cisg
ICAgICAgIChhcHBseVByZXByb2Nlc3Nvcik6CisgICAgICAgICogYnJpZGdlL29iamMvb2JqY19j
bGFzcy5tbToKKyAgICAgICAgKEpTQzo6QmluZGluZ3M6Ok9iamNDbGFzczo6ZmllbGROYW1lZCk6
CisgICAgICAgICogYnJpZGdlL29iamMvb2JqY19pbnN0YW5jZS5tbToKKyAgICAgICAgKiBjb25m
aWcuaDoKKyAgICAgICAgKiBkb20vRG9jdW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9j
dW1lbnQ6OmFkZEF1dG9TaXppbmdOb2RlKToKKyAgICAgICAgKiBkb20vRG9jdW1lbnQuaDoKKyAg
ICAgICAgKiBkb20vRG9jdW1lbnQuaWRsOgorICAgICAgICAqIGRvbS9pb3MvVG91Y2hFdmVudHMu
Y3BwOiBBZGRlZC4KKyAgICAgICAgKiBlZGl0aW5nL0FwcGx5U3R5bGVDb21tYW5kLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkFwcGx5U3R5bGVDb21tYW5kOjphcHBseUJsb2NrU3R5bGUpOgorICAg
ICAgICAqIGVkaXRpbmcvQ29tcG9zaXRlRWRpdENvbW1hbmQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6RWRpdENvbW1hbmRDb21wb3NpdGlvbjo6dW5hcHBseSk6CisgICAgICAgIChXZWJDb3JlOjpD
b21wb3NpdGVFZGl0Q29tbWFuZDo6YXBwbHkpOgorICAgICAgICAoV2ViQ29yZTo6Q29tcG9zaXRl
RWRpdENvbW1hbmQ6OmlucHV0VGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpDb21wb3NpdGVFZGl0
Q29tbWFuZDo6cmVwbGFjZVRleHRJbk5vZGVQcmVzZXJ2aW5nTWFya2Vycyk6CisgICAgICAgIChX
ZWJDb3JlOjpDb21wb3NpdGVFZGl0Q29tbWFuZDo6bW92ZVBhcmFncmFwaHMpOgorICAgICAgICAq
IGVkaXRpbmcvQ29tcG9zaXRlRWRpdENvbW1hbmQuaDoKKyAgICAgICAgKiBlZGl0aW5nL0RlbGV0
ZUJ1dHRvbi5oOgorICAgICAgICAqIGVkaXRpbmcvRGVsZXRlQnV0dG9uQ29udHJvbGxlci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpEZWxldGVCdXR0b25Db250cm9sbGVyOjplbmFibGUpOgorICAg
ICAgICAoV2ViQ29yZTo6RGVsZXRlQnV0dG9uQ29udHJvbGxlcjo6ZGlzYWJsZSk6CisgICAgICAg
ICogZWRpdGluZy9EZWxldGVTZWxlY3Rpb25Db21tYW5kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkRlbGV0ZVNlbGVjdGlvbkNvbW1hbmQ6OmRvQXBwbHkpOgorICAgICAgICAqIGVkaXRpbmcvRGVs
ZXRlU2VsZWN0aW9uQ29tbWFuZC5oOgorICAgICAgICAqIGVkaXRpbmcvRWRpdEFjdGlvbi5oOgor
ICAgICAgICAqIGVkaXRpbmcvRWRpdENvbW1hbmQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRD
b21tYW5kOjppc0luc2VydFRleHRDb21tYW5kKToKKyAgICAgICAgKiBlZGl0aW5nL0VkaXRpbmdT
dHlsZS5jcHA6CisgICAgICAgICogZWRpdGluZy9FZGl0b3IuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Q2xlYXJUZXh0Q29tbWFuZDo6Q2xlYXJUZXh0Q29tbWFuZCk6CisgICAgICAgIChXZWJDb3Jl
OjpDbGVhclRleHRDb21tYW5kOjplZGl0aW5nQWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkNs
ZWFyVGV4dENvbW1hbmQ6OkNyZWF0ZUFuZEFwcGx5KToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRv
cjo6aGFuZGxlVGV4dEV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6Y2xlYXJUZXh0
KToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6aW5zZXJ0RGljdGF0aW9uUGhyYXNlcyk6Cisg
ICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OnNldERpY3RhdGlvblBocmFzZXNBc0NoaWxkT2ZFbGVt
ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6Y29uZmlybU1hcmtlZFRleHQpOgorICAg
ICAgICAoV2ViQ29yZTo6RWRpdG9yOjpzZXRUZXh0QXNDaGlsZE9mRWxlbWVudCk6CisgICAgICAg
IChXZWJDb3JlOjpFZGl0b3I6Om5vdGlmeUNvbXBvbmVudHNPbkNoYW5nZWRTZWxlY3Rpb24pOgor
ICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjplbnN1cmVMYXN0RWRpdENvbW1hbmRIYXNDdXJyZW50
U2VsZWN0aW9uSWZPcGVuRm9yTW9yZVR5cGluZyk6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6
OmNvcHkpOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjpzZXRCYXNlV3JpdGluZ0RpcmVjdGlv
bik6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OnNldENvbXBvc2l0aW9uKToKKyAgICAgICAg
KFdlYkNvcmU6OkVkaXRvcjo6c2hvd1NwZWxsaW5nR3Vlc3NQYW5lbCk6CisgICAgICAgIChXZWJD
b3JlOjpFZGl0b3I6Om1hcmtNaXNzcGVsbGluZ3NBZnRlclR5cGluZ1RvV29yZCk6CisgICAgICAg
IChXZWJDb3JlOjpFZGl0b3I6Om1hcmtNaXNzcGVsbGluZ3NPckJhZEdyYW1tYXIpOgorICAgICAg
ICAoV2ViQ29yZTo6RWRpdG9yOjpjaGFuZ2VCYWNrVG9SZXBsYWNlZFN0cmluZyk6CisgICAgICAg
IChXZWJDb3JlOjpFZGl0b3I6OnVwZGF0ZU1hcmtlcnNGb3JXb3Jkc0FmZmVjdGVkQnlFZGl0aW5n
KToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6c2V0SWdub3JlQ29tcG9zaXRpb25TZWxlY3Rp
b25DaGFuZ2UpOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjpjaGFuZ2VTZWxlY3Rpb25BZnRl
ckNvbW1hbmQpOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjpzaG91bGRDaGFuZ2VTZWxlY3Rp
b24pOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjpyZXNwb25kVG9DaGFuZ2VkU2VsZWN0aW9u
KToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6cmVzb2x2ZVRleHRDaGVja2luZ1R5cGVNYXNr
KToKKyAgICAgICAgKiBlZGl0aW5nL0VkaXRvci5oOgorICAgICAgICAqIGVkaXRpbmcvRWRpdG9y
Q29tbWFuZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpleGVjdXRlQ2xlYXJUZXh0KToKKyAgICAg
ICAgKFdlYkNvcmU6OmVuYWJsZWRDb3B5KToKKyAgICAgICAgKFdlYkNvcmU6OmVuYWJsZWRDdXQp
OgorICAgICAgICAoV2ViQ29yZTo6ZW5hYmxlZENsZWFyVGV4dCk6CisgICAgICAgIChXZWJDb3Jl
OjpjcmVhdGVDb21tYW5kTWFwKToKKyAgICAgICAgKiBlZGl0aW5nL0ZyYW1lU2VsZWN0aW9uLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lU2VsZWN0aW9uOjpGcmFtZVNlbGVjdGlvbik6Cisg
ICAgICAgIChXZWJDb3JlOjpGcmFtZVNlbGVjdGlvbjo6c2V0U2VsZWN0aW9uKToKKyAgICAgICAg
KFdlYkNvcmU6OkZyYW1lU2VsZWN0aW9uOjptb2RpZnlFeHRlbmRpbmdSaWdodCk6CisgICAgICAg
IChXZWJDb3JlOjpGcmFtZVNlbGVjdGlvbjo6bW9kaWZ5RXh0ZW5kaW5nRm9yd2FyZCk6CisgICAg
ICAgIChXZWJDb3JlOjpGcmFtZVNlbGVjdGlvbjo6bW9kaWZ5TW92aW5nUmlnaHQpOgorICAgICAg
ICAoV2ViQ29yZTo6RnJhbWVTZWxlY3Rpb246Om1vZGlmeU1vdmluZ0ZvcndhcmQpOgorICAgICAg
ICAoV2ViQ29yZTo6RnJhbWVTZWxlY3Rpb246Om1vZGlmeUV4dGVuZGluZ0xlZnQpOgorICAgICAg
ICAoV2ViQ29yZTo6RnJhbWVTZWxlY3Rpb246Om1vZGlmeUV4dGVuZGluZ0JhY2t3YXJkKToKKyAg
ICAgICAgKFdlYkNvcmU6OkZyYW1lU2VsZWN0aW9uOjptb2RpZnlNb3ZpbmdMZWZ0KToKKyAgICAg
ICAgKFdlYkNvcmU6OkZyYW1lU2VsZWN0aW9uOjptb2RpZnlNb3ZpbmdCYWNrd2FyZCk6CisgICAg
ICAgIChXZWJDb3JlOjpGcmFtZVNlbGVjdGlvbjo6c2V0U2VsZWN0ZWRSYW5nZSk6CisgICAgICAg
IChXZWJDb3JlOjpGcmFtZVNlbGVjdGlvbjo6Zm9jdXNlZE9yQWN0aXZlU3RhdGVDaGFuZ2VkKToK
KyAgICAgICAgKFdlYkNvcmU6OkZyYW1lU2VsZWN0aW9uOjp1cGRhdGVBcHBlYXJhbmNlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkZyYW1lU2VsZWN0aW9uOjpzaG91bGREZWxldGVTZWxlY3Rpb24pOgor
ICAgICAgICAoV2ViQ29yZTo6RnJhbWVTZWxlY3Rpb246OnJldmVhbFNlbGVjdGlvbik6CisgICAg
ICAgIChXZWJDb3JlOjpGcmFtZVNlbGVjdGlvbjo6c2V0U2VsZWN0aW9uRnJvbU5vbmUpOgorICAg
ICAgICAoV2ViQ29yZTo6RnJhbWVTZWxlY3Rpb246OnNob3VsZENoYW5nZVNlbGVjdGlvbik6Cisg
ICAgICAgIChXZWJDb3JlOjpGcmFtZVNlbGVjdGlvbjo6ZXhwYW5kU2VsZWN0aW9uVG9FbGVtZW50
Q29udGFpbmluZ0NhcmV0U2VsZWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lU2VsZWN0
aW9uOjplbGVtZW50UmFuZ2VDb250YWluaW5nQ2FyZXRTZWxlY3Rpb24pOgorICAgICAgICAoV2Vi
Q29yZTo6RnJhbWVTZWxlY3Rpb246OmV4cGFuZFNlbGVjdGlvblRvV29yZENvbnRhaW5pbmdDYXJl
dFNlbGVjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZVNlbGVjdGlvbjo6d29yZFJhbmdl
Q29udGFpbmluZ0NhcmV0U2VsZWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lU2VsZWN0
aW9uOjpleHBhbmRTZWxlY3Rpb25Ub1N0YXJ0T2ZXb3JkQ29udGFpbmluZ0NhcmV0U2VsZWN0aW9u
KToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lU2VsZWN0aW9uOjpjaGFyYWN0ZXJJblJlbGF0aW9u
VG9DYXJldFNlbGVjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZVNlbGVjdGlvbjo6Y2hh
cmFjdGVyQmVmb3JlQ2FyZXRTZWxlY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVTZWxl
Y3Rpb246OmNoYXJhY3RlckFmdGVyQ2FyZXRTZWxlY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6
RnJhbWVTZWxlY3Rpb246OndvcmRPZmZzZXRJblJhbmdlKToKKyAgICAgICAgKFdlYkNvcmU6OkZy
YW1lU2VsZWN0aW9uOjpzcGFjZUZvbGxvd3NXb3JkSW5SYW5nZSk6CisgICAgICAgIChXZWJDb3Jl
OjpGcmFtZVNlbGVjdGlvbjo6c2VsZWN0aW9uQXREb2N1bWVudFN0YXJ0KToKKyAgICAgICAgKFdl
YkNvcmU6OkZyYW1lU2VsZWN0aW9uOjpzZWxlY3Rpb25BdFNlbnRlbmNlU3RhcnQpOgorICAgICAg
ICAoV2ViQ29yZTo6RnJhbWVTZWxlY3Rpb246OnNlbGVjdGlvbkF0V29yZFN0YXJ0KToKKyAgICAg
ICAgKFdlYkNvcmU6OkZyYW1lU2VsZWN0aW9uOjpyYW5nZUJ5TW92aW5nQ3VycmVudFNlbGVjdGlv
bik6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZVNlbGVjdGlvbjo6cmFuZ2VCeUV4dGVuZGluZ0N1
cnJlbnRTZWxlY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVTZWxlY3Rpb246OnNlbGVj
dFJhbmdlT25FbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lU2VsZWN0aW9uOjp3b3Jk
U2VsZWN0aW9uQ29udGFpbmluZ0NhcmV0U2VsZWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkZy
YW1lU2VsZWN0aW9uOjphY3R1YWxTZWxlY3Rpb25BdFNlbnRlbmNlU3RhcnQpOgorICAgICAgICAo
V2ViQ29yZTo6RnJhbWVTZWxlY3Rpb246OnJhbmdlQnlBbHRlcmluZ0N1cnJlbnRTZWxlY3Rpb24p
OgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVTZWxlY3Rpb246OmNsZWFyQ3VycmVudFNlbGVjdGlv
bik6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZVNlbGVjdGlvbjo6c2V0Q2FyZXRCbGlua3MpOgor
ICAgICAgICAoV2ViQ29yZTo6RnJhbWVTZWxlY3Rpb246OnNldENhcmV0Q29sb3IpOgorICAgICAg
ICAqIGVkaXRpbmcvRnJhbWVTZWxlY3Rpb24uaDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lU2Vs
ZWN0aW9uOjpzdXBwcmVzc0Nsb3NlVHlwaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lU2Vs
ZWN0aW9uOjpyZXN0b3JlQ2xvc2VUeXBpbmcpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVTZWxl
Y3Rpb246OnNldFVwZGF0ZUFwcGVhcmFuY2VFbmFibGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkZy
YW1lU2VsZWN0aW9uOjpzdXBwcmVzc1Njcm9sbGluZyk6CisgICAgICAgIChXZWJDb3JlOjpGcmFt
ZVNlbGVjdGlvbjo6cmVzdG9yZVNjcm9sbGluZyk6CisgICAgICAgICogZWRpdGluZy9JbnNlcnRJ
bnRvVGV4dE5vZGVDb21tYW5kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc2VydEludG9UZXh0
Tm9kZUNvbW1hbmQ6OmRvUmVhcHBseSk6CisgICAgICAgICogZWRpdGluZy9JbnNlcnRJbnRvVGV4
dE5vZGVDb21tYW5kLmg6CisgICAgICAgICogZWRpdGluZy9JbnNlcnRUZXh0Q29tbWFuZC5oOgor
ICAgICAgICAqIGVkaXRpbmcvUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6UmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQ6OmRvQXBwbHkpOgorICAgICAgICAqIGVk
aXRpbmcvVGV4dEFmZmluaXR5Lmg6CisgICAgICAgICogZWRpdGluZy9UZXh0Q2hlY2tpbmdIZWxw
ZXIuY3BwOgorICAgICAgICAqIGVkaXRpbmcvVGV4dEdyYW51bGFyaXR5Lmg6CisgICAgICAgICog
ZWRpdGluZy9UZXh0SXRlcmF0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6aXNSZW5kZXJlclJl
cGxhY2VkRWxlbWVudCk6CisgICAgICAgICogZWRpdGluZy9UeXBpbmdDb21tYW5kLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlR5cGluZ0NvbW1hbmQ6OmVuc3VyZUxhc3RFZGl0Q29tbWFuZEhhc0N1
cnJlbnRTZWxlY3Rpb25JZk9wZW5Gb3JNb3JlVHlwaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OlR5
cGluZ0NvbW1hbmQ6Om1hcmtNaXNzcGVsbGluZ3NBZnRlclR5cGluZyk6CisgICAgICAgIChXZWJD
b3JlOjpUeXBpbmdDb21tYW5kOjpkZWxldGVLZXlQcmVzc2VkKToKKyAgICAgICAgKFdlYkNvcmU6
OlR5cGluZ0NvbW1hbmQ6OmZvcndhcmREZWxldGVLZXlQcmVzc2VkKToKKyAgICAgICAgKFdlYkNv
cmU6OkZyaWVuZGx5RWRpdENvbW1hbmQ6OnNldEVuZGluZ1NlbGVjdGlvbik6CisgICAgICAgIChX
ZWJDb3JlOjpUeXBpbmdDb21tYW5kOjpzZXRFbmRpbmdTZWxlY3Rpb25Pbkxhc3RJbnNlcnRDb21t
YW5kKToKKyAgICAgICAgKiBlZGl0aW5nL1R5cGluZ0NvbW1hbmQuaDoKKyAgICAgICAgKiBlZGl0
aW5nL1Zpc2libGVQb3NpdGlvbi5oOgorICAgICAgICAoV2ViQ29yZTo6b3BlcmF0b3I8KToKKyAg
ICAgICAgKFdlYkNvcmU6Om9wZXJhdG9yPik6CisgICAgICAgIChXZWJDb3JlOjpvcGVyYXRvcjw9
KToKKyAgICAgICAgKFdlYkNvcmU6Om9wZXJhdG9yPj0pOgorICAgICAgICAqIGVkaXRpbmcvVmlz
aWJsZVNlbGVjdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpWaXNpYmxlU2VsZWN0aW9uOjpz
ZXRTdGFydEFuZEVuZEZyb21CYXNlQW5kRXh0ZW50UmVzcGVjdGluZ0dyYW51bGFyaXR5KToKKyAg
ICAgICAgKFdlYkNvcmU6OlZpc2libGVTZWxlY3Rpb246OmFkanVzdFNlbGVjdGlvblRvQXZvaWRD
cm9zc2luZ0VkaXRpbmdCb3VuZGFyaWVzKToKKyAgICAgICAgKiBlZGl0aW5nL1Zpc2libGVVbml0
cy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpwcmV2aW91c0JvdW5kYXJ5KToKKyAgICAgICAgKFdl
YkNvcmU6Om5leHRCb3VuZGFyeSk6CisgICAgICAgIChXZWJDb3JlOjpzdGFydE9mRG9jdW1lbnQp
OgorICAgICAgICAoV2ViQ29yZTo6ZW5kT2ZEb2N1bWVudCk6CisgICAgICAgIChXZWJDb3JlOjpk
aXJlY3Rpb25Jc0Rvd25zdHJlYW0pOgorICAgICAgICAoV2ViQ29yZTo6YXRCb3VuZGFyeU9mR3Jh
bnVsYXJpdHkpOgorICAgICAgICAoV2ViQ29yZTo6d2l0aGluVGV4dFVuaXRPZkdyYW51bGFyaXR5
KToKKyAgICAgICAgKFdlYkNvcmU6Om5leHRDaGFyYWN0ZXJCb3VuZGFyeUluRGlyZWN0aW9uKToK
KyAgICAgICAgKFdlYkNvcmU6Om5leHRXb3JkQm91bmRhcnlJbkRpcmVjdGlvbik6CisgICAgICAg
IChXZWJDb3JlOjpuZXh0U2VudGVuY2VCb3VuZGFyeUluRGlyZWN0aW9uKToKKyAgICAgICAgKFdl
YkNvcmU6Om5leHRMaW5lQm91bmRhcnlJbkRpcmVjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpu
ZXh0UGFyYWdyYXBoQm91bmRhcnlJbkRpcmVjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpuZXh0
RG9jdW1lbnRCb3VuZGFyeUluRGlyZWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OnBvc2l0aW9u
T2ZOZXh0Qm91bmRhcnlPZkdyYW51bGFyaXR5KToKKyAgICAgICAgKFdlYkNvcmU6OmVuY2xvc2lu
Z1RleHRVbml0T2ZHcmFudWxhcml0eSk6CisgICAgICAgIChXZWJDb3JlOjpkaXN0YW5jZUJldHdl
ZW5Qb3NpdGlvbnMpOgorICAgICAgICAoV2ViQ29yZTo6d29yZFJhbmdlRnJvbVBvc2l0aW9uKToK
KyAgICAgICAgKFdlYkNvcmU6OmNsb3Nlc3RXb3JkQm91bmRhcnlGb3JQb3NpdGlvbik6CisgICAg
ICAgICogZWRpdGluZy9WaXNpYmxlVW5pdHMuaDoKKyAgICAgICAgKiBlZGl0aW5nL2lvcy9EaWN0
YXRpb25Db21tYW5kSU9TLmNwcDogQWRkZWQuCisgICAgICAgICogZWRpdGluZy9pb3MvRGljdGF0
aW9uQ29tbWFuZElPUy5oOiBBZGRlZC4KKyAgICAgICAgKiBlZGl0aW5nL21hYy9GcmFtZVNlbGVj
dGlvbk1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lU2VsZWN0aW9uOjpub3RpZnlBY2Nl
c3NpYmlsaXR5Rm9yU2VsZWN0aW9uQ2hhbmdlKToKKyAgICAgICAgKiBmaWxlYXBpL0FzeW5jRmls
ZVN0cmVhbS5jcHA6CisgICAgICAgICogZ2VuZXJhdGUtZXhwb3J0LWZpbGU6IEFkZGVkLgorICAg
ICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JDb3VudGVycy5oOgorICAgICAgICAqIGluc3BlY3Rv
ci9JbnNwZWN0b3JGcm9udGVuZEhvc3QuaDoKKyAgICAgICAgKiBtYWtlLWV4cG9ydC1maWxlLWdl
bmVyYXRvcjoKKyAgICAgICAgKiBwbHVnaW5zL1BsdWdpblBhY2thZ2UuaDoKKyAgICAgICAgKiBw
bHVnaW5zL1BsdWdpblZpZXdCYXNlLmg6CisgICAgICAgIChXZWJDb3JlOjpQbHVnaW5WaWV3QmFz
ZTo6d2lsbFByb3ZpZGVQbHVnaW5MYXllcik6CisgICAgICAgIChXZWJDb3JlOjpQbHVnaW5WaWV3
QmFzZTo6YXR0YWNoUGx1Z2luTGF5ZXIpOgorICAgICAgICAoV2ViQ29yZTo6UGx1Z2luVmlld0Jh
c2U6OmRldGFjaFBsdWdpbkxheWVyKToKKyAgICAgICAgKiBzdHlsZS9TdHlsZVJlc29sdmVGb3JE
b2N1bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6cmVzb2x2ZUZvckRvY3VtZW50
KToKKyAgICAgICAgKiBzdHlsZS9TdHlsZVJlc29sdmVUcmVlLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlN0eWxlOjplbGVtZW50SW1wbGljaXRWaXNpYmlsaXR5KToKKyAgICAgICAgKiB0ZXN0aW5n
L0ludGVybmFscy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnRlcm5hbHM6OmdldEN1cnJlbnRD
dXJzb3JJbmZvKToKKyAgICAgICAgKFdlYkNvcmU6OkludGVybmFsczo6aXNTZWxlY3RQb3B1cFZp
c2libGUpOgorICAgICAgICAqIHdvcmtlcnMvV29ya2VyVGhyZWFkLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OldvcmtlclRocmVhZDo6d29ya2VyVGhyZWFkKToKKwogMjAxNC0wMS0wOCAgRGFuaWVs
IEJhdGVzICA8ZGFiYXRlc0BhcHBsZS5jb20+CiAKICAgICAgICAgW2lPU10gVXBzdHJlYW0gV2Vi
Q29yZS9wbGF0Zm9ybSBjaGFuZ2VzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxv
ZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDgwNjI2MzdjNWNhZjYwMjYyZmYxMDU1
YWYxMmQ2MDBhM2M5NjgzMTEuLmNkNjZiNzY4ZTg0MGNiYzgzNjllNWFkNDI1ZTFhNTZiOTA1MDVm
Y2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMTQtMDEtMDkgIERhbmllbCBCYXRlcyAg
PGRhYmF0ZXNAYXBwbGUuY29tPgorCisgICAgICAgIFtpT1NdIFVwc3RyZWFtIFdlYkNvcmUgYW5k
IFRvb2xzIG1pc2NlbGxhbmVvdXMgY2hhbmdlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTI2Njk4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgKiBXZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoK
KwogMjAxNC0wMS0wOCAgUnl1YW4gQ2hvaSAgPHJ5dWFuLmNob2lAc2Ftc3VuZy5jb20+CiAKICAg
ICAgICAgW0VGTF0gTWVyZ2UgZXdrX3ZpZXdfc2luZ2xlIGludG8gZXdrX3ZpZXcKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5n
ZUxvZwppbmRleCA0YzEzYmM3NDJhMGI4OTM5OTY2YmQxMDA1NjViNjk4MDU1MWE4ZWExLi5mZDA1
OTM5MjZhZTE0OWFlYjIzNDI5ZWRjZDA0ZWI0YTRlNWZjNzI1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L21hYy9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMTMgQEAKKzIwMTQtMDEtMDkgIERhbmllbCBCYXRlcyAgPGRhYmF0ZXNAYXBwbGUu
Y29tPgorCisgICAgICAgIFtpT1NdIFVwc3RyZWFtIFdlYkNvcmUgYW5kIFRvb2xzIG1pc2NlbGxh
bmVvdXMgY2hhbmdlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTI2Njk4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgKiBNaWdyYXRlSGVhZGVycy5tYWtlOgorICAgICAgICAqIHNjcnViLWlmZGVmcy5wbDog
QWRkZWQuCisKIDIwMTQtMDEtMDggIEFuZGVycyBDYXJsc3NvbiAgPGFuZGVyc2NhQGFwcGxlLmNv
bT4KIAogICAgICAgICBBZGQgV1RGOjpTdHJpbmdWaWV3IGFuZCB1c2UgaXQgZm9yIGdyYW1tYXIg
Y2hlY2tpbmcKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NvbmZpZ3VyYXRpb25zL0Jhc2Uu
eGNjb25maWcgYi9Tb3VyY2UvV2ViQ29yZS9Db25maWd1cmF0aW9ucy9CYXNlLnhjY29uZmlnCmlu
ZGV4IGZkNGY2MGI4MWFiMjJiMzcyNzk5NzhkNGY2M2IwMTk3ZTI2MjU0MWUuLjAyMjExNTEyZDhm
MjY1YWM5MjM2ZjgwY2ZjNDdmMmI0MzMwMDc0YzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L0NvbmZpZ3VyYXRpb25zL0Jhc2UueGNjb25maWcKKysrIGIvU291cmNlL1dlYkNvcmUvQ29uZmln
dXJhdGlvbnMvQmFzZS54Y2NvbmZpZwpAQCAtMjEsNiArMjEsOCBAQAogLy8gKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
CiAvLyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLiAKIAorI2luY2x1ZGUgImlPUy54Y2NvbmZpZyIKKwogQ0xBTkdfQ1hY
X0xBTkdVQUdFX1NUQU5EQVJEID0gZ251KysweDsKIENMQU5HX0NYWF9MSUJSQVJZID0gbGliYysr
OwogQ0xBTkdfV0FSTl9CT09MX0NPTlZFUlNJT04gPSBZRVM7CkBAIC01Niw2ICs1OCw3IEBAIEdD
Q19XQVJOXzY0X1RPXzMyX0JJVF9DT05WRVJTSU9OID0gJChHQ0NfV0FSTl82NF9UT18zMl9CSVRf
Q09OVkVSU0lPTl8kKENVUlJFTlRfCiBHQ0NfV0FSTl82NF9UT18zMl9CSVRfQ09OVkVSU0lPTl8g
PSBZRVM7CiBHQ0NfV0FSTl82NF9UT18zMl9CSVRfQ09OVkVSU0lPTl9hcm12NyA9IFlFUzsKIEdD
Q19XQVJOXzY0X1RPXzMyX0JJVF9DT05WRVJTSU9OX2FybXY3cyA9IFlFUzsKK0dDQ19XQVJOXzY0
X1RPXzMyX0JJVF9DT05WRVJTSU9OX2FybTY0ID0gTk87CiBHQ0NfV0FSTl82NF9UT18zMl9CSVRf
Q09OVkVSU0lPTl9pMzg2ID0gWUVTOwogR0NDX1dBUk5fNjRfVE9fMzJfQklUX0NPTlZFUlNJT05f
eDg2XzY0ID0gTk87CiBHQ0NfV0FSTl9BQk9VVF9ERVBSRUNBVEVEX0ZVTkNUSU9OUyA9IE5POwpA
QCAtODIsNyArODUsMTAgQEAgREVCVUdfREVGSU5FU19ub3JtYWwgPSBOREVCVUc7CiBERUJVR19E
RUZJTkVTID0gJChERUJVR19ERUZJTkVTXyQoQ1VSUkVOVF9WQVJJQU5UKSk7CiAKIEdDQ19PUFRJ
TUlaQVRJT05fTEVWRUwgPSAkKEdDQ19PUFRJTUlaQVRJT05fTEVWRUxfJChDVVJSRU5UX1ZBUklB
TlQpKTsKLUdDQ19PUFRJTUlaQVRJT05fTEVWRUxfbm9ybWFsID0gMjsKK0dDQ19PUFRJTUlaQVRJ
T05fTEVWRUxfbm9ybWFsID0gJChHQ0NfT1BUSU1JWkFUSU9OX0xFVkVMX25vcm1hbF8kKFBMQVRG
T1JNX05BTUUpKTsKK0dDQ19PUFRJTUlaQVRJT05fTEVWRUxfbm9ybWFsX2lwaG9uZW9zID0gMzsK
K0dDQ19PUFRJTUlaQVRJT05fTEVWRUxfbm9ybWFsX2lwaG9uZXNpbXVsYXRvciA9IDM7CitHQ0Nf
T1BUSU1JWkFUSU9OX0xFVkVMX25vcm1hbF9tYWNvc3ggPSAyOwogR0NDX09QVElNSVpBVElPTl9M
RVZFTF9kZWJ1ZyA9IDA7CiAKIFNUUklQX0lOU1RBTExFRF9QUk9EVUNUID0gJChTVFJJUF9JTlNU
QUxMRURfUFJPRFVDVF8kKENVUlJFTlRfVkFSSUFOVCkpOwpAQCAtOTMsNyArOTksOSBAQCBERUFE
X0NPREVfU1RSSVBQSU5HX2RlYnVnID0gTk87CiBERUFEX0NPREVfU1RSSVBQSU5HX25vcm1hbCA9
IFlFUzsKIERFQURfQ09ERV9TVFJJUFBJTkcgPSAkKERFQURfQ09ERV9TVFJJUFBJTkdfJChDVVJS
RU5UX1ZBUklBTlQpKTsKIAotU0VDVE9SREVSX0ZMQUdTID0gLVdsLC1vcmRlcl9maWxlLFdlYkNv
cmUub3JkZXI7CitTRUNUT1JERVJfRkxBR1MgPSAkKFNFQ1RPUkRFUl9GTEFHU18kKFBMQVRGT1JN
X05BTUUpKTsKK1NFQ1RPUkRFUl9GTEFHU19pcGhvbmVvcyA9IC1XbCwtb3JkZXJfZmlsZSwkKFNE
S1JPT1QpL0FwcGxlSW50ZXJuYWwvT3JkZXJGaWxlcy9XZWJDb3JlLm9yZGVyOworU0VDVE9SREVS
X0ZMQUdTX21hY29zeCA9IC1XbCwtb3JkZXJfZmlsZSxXZWJDb3JlLm9yZGVyOwogCiBXRUJDT1JF
X1NRTElURTNfSEVBREVSX1NFQVJDSF9QQVRIUyA9ICQoTkVYVF9ST09UKS91c3IvbG9jYWwvaW5j
bHVkZS9XZWJDb3JlU1FMaXRlMzsKIFNRTElURTNfSEVBREVSX1NFQVJDSF9QQVRIUyA9ICQoU1FM
SVRFM19IRUFERVJfU0VBUkNIX1BBVEhTXyQoUExBVEZPUk1fTkFNRSkpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvQ29uZmlndXJhdGlvbnMvV2ViQ29yZS54Y2NvbmZpZyBiL1NvdXJjZS9X
ZWJDb3JlL0NvbmZpZ3VyYXRpb25zL1dlYkNvcmUueGNjb25maWcKaW5kZXggMTAwOTU3MDg0Njg0
MzJlNGFmOTNmZGFjMTdiYWJhMDA0MjNhYTRhZC4uM2FiMjMyMmJkNjAzYWM4MmU0ZDBjYTFkZGRl
MzJjZWJiNGFiYzJiOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ29uZmlndXJhdGlvbnMv
V2ViQ29yZS54Y2NvbmZpZworKysgYi9Tb3VyY2UvV2ViQ29yZS9Db25maWd1cmF0aW9ucy9XZWJD
b3JlLnhjY29uZmlnCkBAIC0zNCw3ICszNCwxMCBAQCBFWFBPUlRFRF9TWU1CT0xTX0ZJTEVfaTM4
NiA9ICQoRVhQT1JURURfU1lNQk9MU19GSUxFX2kzODZfJChQTEFURk9STV9OQU1FKSk7CiBFWFBP
UlRFRF9TWU1CT0xTX0ZJTEVfaTM4Nl9pcGhvbmVzaW11bGF0b3IgPSAkKEJVSUxUX1BST0RVQ1RT
X0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9XZWJDb3JlLkxQNjQuaTM4Ni5leHA7CiBFWFBP
UlRFRF9TWU1CT0xTX0ZJTEVfaTM4Nl9tYWNvc3ggPSAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVy
aXZlZFNvdXJjZXMvV2ViQ29yZS9XZWJDb3JlLmV4cDsKIEVYUE9SVEVEX1NZTUJPTFNfRklMRV9w
cGMgPSAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9XZWJDb3Jl
LmV4cDsKLUVYUE9SVEVEX1NZTUJPTFNfRklMRV94ODZfNjQgPSAkKEJVSUxUX1BST0RVQ1RTX0RJ
UikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9XZWJDb3JlLkxQNjQuZXhwOworRVhQT1JURURfU1lN
Qk9MU19GSUxFX3BwYzY0ID0gJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dl
YkNvcmUvV2ViQ29yZS5MUDY0LmV4cDsKK0VYUE9SVEVEX1NZTUJPTFNfRklMRV94ODZfNjQgPSAk
KEVYUE9SVEVEX1NZTUJPTFNfRklMRV94ODZfNjRfJChQTEFURk9STV9OQU1FKSk7CitFWFBPUlRF
RF9TWU1CT0xTX0ZJTEVfeDg2XzY0X2lwaG9uZXNpbXVsYXRvciA9ICQoQlVJTFRfUFJPRFVDVFNf
RElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL1dlYkNvcmUuTFA2NC54ODZfNjQuZXhwOworRVhQ
T1JURURfU1lNQk9MU19GSUxFX3g4Nl82NF9tYWNvc3ggPSAkKEJVSUxUX1BST0RVQ1RTX0RJUikv
RGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9XZWJDb3JlLkxQNjQuZXhwOwogR0NDX1BSRUZJWF9IRUFE
RVIgPSBXZWJDb3JlUHJlZml4Lmg7CiBHQ0NfUFJFUFJPQ0VTU09SX0RFRklOSVRJT05TID0gJChE
RUJVR19ERUZJTkVTKSAkKEZFQVRVUkVfREVGSU5FUykgV0VCS0lUX1ZFUlNJT05fTUlOX1JFUVVJ
UkVEPVdFQktJVF9WRVJTSU9OX0xBVEVTVCAkKEdDQ19QUkVQUk9DRVNTT1JfREVGSU5JVElPTlMp
OwogRlJBTUVXT1JLX1NFQVJDSF9QQVRIUyA9ICQoRlJBTUVXT1JLX1NFQVJDSF9QQVRIU18kKFBM
QVRGT1JNX05BTUUpKTsKQEAgLTUxLDcgKzU0LDkgQEAgT1RIRVJfQ1BMVVNQTFVTRkxBR1MgPSAk
KE9USEVSX0NGTEFHUyk7CiBTVEFHRURfRlJBTUVXT1JLU19TRUFSQ0hfUEFUSCA9ICQoU1RBR0VE
X0ZSQU1FV09SS1NfU0VBUkNIX1BBVEhfJChVU0VfU1RBR0lOR19JTlNUQUxMX1BBVEgpKTsKIFNU
QUdFRF9GUkFNRVdPUktTX1NFQVJDSF9QQVRIX1lFUyA9ICQoTkVYVF9ST09UKSQoU1lTVEVNX0xJ
QlJBUllfRElSKS9TdGFnZWRGcmFtZXdvcmtzL1NhZmFyaTsKIAotSEVBREVSX1NFQVJDSF9QQVRI
UyA9IEZvcndhcmRpbmdIZWFkZXJzIGljdSAvdXNyL2luY2x1ZGUvbGlieHNsdCAvdXNyL2luY2x1
ZGUvbGlieG1sMiAiJHtCVUlMVF9QUk9EVUNUU19ESVJ9L0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUi
ICIke0JVSUxUX1BST0RVQ1RTX0RJUn0vdXNyL2xvY2FsL2luY2x1ZGUiICQoSEVBREVSX1NFQVJD
SF9QQVRIUyk7CitXRUJLSVRBRERJVElPTlNfSEVBREVSX1NFQVJDSF9QQVRIUyA9ICQoQlVJTFRf
UFJPRFVDVFNfRElSKS91c3IvbG9jYWwvaW5jbHVkZS9XZWJLaXRBZGRpdGlvbnMgJChTREtST09U
KS91c3IvbG9jYWwvaW5jbHVkZS9XZWJLaXRBZGRpdGlvbnM7CisKK0hFQURFUl9TRUFSQ0hfUEFU
SFMgPSBGb3J3YXJkaW5nSGVhZGVycyBpY3UgL3Vzci9pbmNsdWRlL2xpYnhzbHQgL3Vzci9pbmNs
dWRlL2xpYnhtbDIgJChTUUxJVEUzX0hFQURFUl9TRUFSQ0hfUEFUSFMpICIke0JVSUxUX1BST0RV
Q1RTX0RJUn0vRGVyaXZlZFNvdXJjZXMvV2ViQ29yZSIgIiQoQlVJTFRfUFJPRFVDVFNfRElSKS91
c3IvbG9jYWwvaW5jbHVkZSIgJChXRUJLSVRBRERJVElPTlNfSEVBREVSX1NFQVJDSF9QQVRIUykg
JChIRUFERVJfU0VBUkNIX1BBVEhTKTsKIElORk9QTElTVF9GSUxFID0gSW5mby5wbGlzdDsKIElO
U1RBTExfUEFUSCA9ICQoSU5TVEFMTF9QQVRIXyQoUExBVEZPUk1fTkFNRSkpOwogSU5TVEFMTF9Q
QVRIX2lwaG9uZW9zID0gJChTWVNURU1fTElCUkFSWV9ESVIpL1ByaXZhdGVGcmFtZXdvcmtzOwpA
QCAtNjgsOCArNzMsOCBAQCBJTlNUQUxMSERSU19TQ1JJUFRfUEhBU0UgPSBZRVM7CiBQUk9EVUNU
X05BTUUgPSBXZWJDb3JlOwogT1RIRVJfTERGTEFHU19CQVNFID0gLWxzcWxpdGUzIC1sb2JqYyAt
bEFOR0xFIC1hbGxvd2FibGVfY2xpZW50IFdlYkNvcmVUZXN0U3VwcG9ydDsKIE9USEVSX0xERkxB
R1MgPSAkKGluaGVyaXRlZCkgJChPVEhFUl9MREZMQUdTXyQoUExBVEZPUk1fTkFNRSkpOwotT1RI
RVJfTERGTEFHU19pcGhvbmVvcyA9ICQoT1RIRVJfTERGTEFHU19CQVNFKSAtZnJhbWV3b3JrIENG
TmV0d29yayAtZnJhbWV3b3JrIENvcmVGb3VuZGF0aW9uIC1mcmFtZXdvcmsgQ29yZUdyYXBoaWNz
IC1mcmFtZXdvcmsgQ29yZVRleHQgLWZyYW1ld29yayBGb3VuZGF0aW9uIC1mcmFtZXdvcmsgR3Jh
cGhpY3NTZXJ2aWNlcyAtZnJhbWV3b3JrIEltYWdlSU8gLWZyYW1ld29yayBRdWFydHpDb3JlOwot
T1RIRVJfTERGTEFHU19pcGhvbmVzaW11bGF0b3IgPSAkKE9USEVSX0xERkxBR1NfaXBob25lb3Mp
OworT1RIRVJfTERGTEFHU19pcGhvbmVvcyA9ICQoT1RIRVJfTERGTEFHU19pcGhvbmVzaW11bGF0
b3IpIC1mcmFtZXdvcmsgSU9TdXJmYWNlOworT1RIRVJfTERGTEFHU19pcGhvbmVzaW11bGF0b3Ig
PSAkKE9USEVSX0xERkxBR1NfQkFTRSkgLWZyYW1ld29yayBBY2NlbGVyYXRlIC1mcmFtZXdvcmsg
Q0ZOZXR3b3JrIC1mcmFtZXdvcmsgQ29yZUZvdW5kYXRpb24gLWZyYW1ld29yayBDb3JlR3JhcGhp
Y3MgLWZyYW1ld29yayBDb3JlVGV4dCAtZnJhbWV3b3JrIEZvdW5kYXRpb24gLWZyYW1ld29yayBH
cmFwaGljc1NlcnZpY2VzIC1mcmFtZXdvcmsgSW1hZ2VJTyAtZnJhbWV3b3JrIE9wZW5HTEVTIC1m
cmFtZXdvcmsgUXVhcnR6Q29yZSAtbE1vYmlsZUdlc3RhbHQ7CiBPVEhFUl9MREZMQUdTX21hY29z
eCA9ICQoT1RIRVJfTERGTEFHU19CQVNFKSAtc3ViX2xpYnJhcnkgbGlib2JqYyAtdW1icmVsbGEg
V2ViS2l0IC1hbGxvd2FibGVfY2xpZW50IFdlYktpdDIgLWZyYW1ld29yayBJT1N1cmZhY2U7CiAK
IE5PUk1BTF9XRUJDT1JFX0ZSQU1FV09SS1NfRElSID0gJChOT1JNQUxfV0VCQ09SRV9GUkFNRVdP
UktTX0RJUl8kKFBMQVRGT1JNX05BTUUpKTsKQEAgLTEwMiwxMCArMTA3LDEzIEBAIFBST0RVQ1RJ
T05fRlJBTUVXT1JLU19ESVJfbWFjb3N4X1VTRV9TVEFHSU5HX0lOU1RBTExfUEFUSF9ZRVMgPSAk
KE5FWFRfUk9PVCkkKFNZCiBKQVZBU0NSSVBUQ09SRV9QUklWQVRFX0hFQURFUlNfRElSID0gJChK
QVZBU0NSSVBUQ09SRV9QUklWQVRFX0hFQURFUlNfRElSXyQoQ09ORklHVVJBVElPTikpOwogSkFW
QVNDUklQVENPUkVfUFJJVkFURV9IRUFERVJTX0RJUl9SZWxlYXNlID0gJChKQVZBU0NSSVBUQ09S
RV9QUklWQVRFX0hFQURFUlNfZW5naW5lZXJpbmcpOwogSkFWQVNDUklQVENPUkVfUFJJVkFURV9I
RUFERVJTX0RJUl9EZWJ1ZyA9ICQoSkFWQVNDUklQVENPUkVfUFJJVkFURV9IRUFERVJTX2VuZ2lu
ZWVyaW5nKTsKLUpBVkFTQ1JJUFRDT1JFX1BSSVZBVEVfSEVBREVSU19ESVJfUHJvZHVjdGlvbiA9
ICQoU0RLUk9PVCkkKFBST0RVQ1RJT05fRlJBTUVXT1JLU19ESVIpL0phdmFTY3JpcHRDb3JlLmZy
YW1ld29yay9Qcml2YXRlSGVhZGVyczsKK0pBVkFTQ1JJUFRDT1JFX1BSSVZBVEVfSEVBREVSU19E
SVJfUHJvZHVjdGlvbiA9ICQoSkFWQVNDUklQVENPUkVfUFJJVkFURV9IRUFERVJTX1Byb2R1Y3Rp
b25fJChQTEFURk9STV9OQU1FKSk7CitKQVZBU0NSSVBUQ09SRV9QUklWQVRFX0hFQURFUlNfRElS
X1Byb2R1Y3Rpb25faXBob25lb3MgPSAkKFNES1JPT1QpLyQoU1lTVEVNX0xJQlJBUllfRElSKS9G
cmFtZXdvcmtzL0phdmFTY3JpcHRDb3JlLmZyYW1ld29yay9IZWFkZXJzOworSkFWQVNDUklQVENP
UkVfUFJJVkFURV9IRUFERVJTX0RJUl9Qcm9kdWN0aW9uX2lwaG9uZXNpbXVsYXRvciA9ICQoSkFW
QVNDUklQVENPUkVfUFJJVkFURV9IRUFERVJTX0RJUl9Qcm9kdWN0aW9uX2lwaG9uZW9zKTsKK0pB
VkFTQ1JJUFRDT1JFX1BSSVZBVEVfSEVBREVSU19ESVJfUHJvZHVjdGlvbl9tYWNvc3ggPSAkKFNE
S1JPT1QpJChQUk9EVUNUSU9OX0ZSQU1FV09SS1NfRElSKS9KYXZhU2NyaXB0Q29yZS5mcmFtZXdv
cmsvUHJpdmF0ZUhlYWRlcnM7CiBKQVZBU0NSSVBUQ09SRV9QUklWQVRFX0hFQURFUlNfZW5naW5l
ZXJpbmcgPSAkKEJVSUxUX1BST0RVQ1RTX0RJUikvSmF2YVNjcmlwdENvcmUuZnJhbWV3b3JrL1By
aXZhdGVIZWFkZXJzOwogCiBFWENMVURFRF9TT1VSQ0VfRklMRV9OQU1FUyA9ICQoRVhDTFVERURf
U09VUkNFX0ZJTEVfTkFNRVNfJChQTEFURk9STV9OQU1FKSk7Ci1FWENMVURFRF9TT1VSQ0VfRklM
RV9OQU1FU19pcGhvbmVvcyA9ICoudGlmZiAqQ3Vyc29yLnBuZyBDdXJzb3IuY3BwIEN1cnNvck1h
Yy5tbSBFdmVudEhhbmRsZXJNYWMubW0gSFRNTENvbnZlcnRlci5tbSBLaWxsUmluZ01hYy5tbSBQ
bGF0Zm9ybUV2ZW50RmFjdG9yeU1hYy5tbSBTU0xLZXlHZW5lcmF0b3JNYWMuY3BwIFNlYXJjaFBv
cHVwTWVudU1hYy5tbSBTaGFyZWRUaW1lck1hYy5tbSBXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9s
bGVyLm1tIFdlYlZpZGVvRnVsbHNjcmVlbkhVRFdpbmRvd0NvbnRyb2xsZXIubW0gV2ViV2luZG93
QW5pbWF0aW9uLm1tOworRVhDTFVERURfU09VUkNFX0ZJTEVfTkFNRVNfaXBob25lb3MgPSAqLnRp
ZmYgKkN1cnNvci5wbmcgQWNjZXNzaWJpbGl0eU9iamVjdE1hYy5tbSBBWE9iamVjdENhY2hlTWFj
Lm1tIENsaXBib2FyZE1hYy5tbSBDb2xvck1hYy5tbSBDdXJzb3IuY3BwIEN1cnNvck1hYy5tbSBF
ZGl0b3JNYWMubW0gRXZlbnRIYW5kbGVyTWFjLm1tIEV2ZW50TG9vcE1hYy5tbSBHZW9sb2NhdGlv
blNlcnZpY2VNYWMubW0gR3JhcGhpY3NDb250ZXh0M0RPcGVuR0xFUy5jcHAgSWNvbkRhdGFiYXNl
LmNwcCBJY29uTWFjLm1tIEtleUV2ZW50TWFjLm1tIEtpbGxSaW5nTWFjLm1tIExvY2FsQ3VycmVu
dEdyYXBoaWNzQ29udGV4dC5tbSBNSU1FVHlwZVJlZ2lzdHJ5TWFjLm1tIE1lZGlhUGxheWVyUHJp
dmF0ZVFUS2l0Lm1tIE5TU2Nyb2xsZXJJbXBEZXRhaWxzLm1tIE5ldHdvcmtTdGF0ZU5vdGlmaWVy
TWFjLmNwcCBQYXN0ZWJvYXJkTWFjLm1tIFBsYXRmb3JtRXZlbnRGYWN0b3J5TWFjLm1tIFBsYXRm
b3JtTW91c2VFdmVudE1hYy5tbSBQbGF0Zm9ybVBhc3RlYm9hcmRNYWMubW0gUGxhdGZvcm1TY3Jl
ZW5NYWMubW0gUGxhdGZvcm1TcGVlY2hTeW50aGVzaXplck1hYy5tbSBQbHVnaW5NYWluVGhyZWFk
U2NoZWR1bGVyLmNwcCBSdW5Mb29wTWFjLm1tIFNTTEtleUdlbmVyYXRvck1hYy5jcHAgU2Nyb2xs
Vmlld01hYy5tbSBTY3JvbGxiYXJUaGVtZU1hYy5tbSBTaGFyZWRUaW1lck1hYy5tbSBTb3VuZE1h
Yy5tbSBTeXN0ZW1UaW1lTWFjLmNwcCBUaGVtZU1hYy5tbSBUaHJlYWRDaGVjay5tbSBXZWJBY2Nl
c3NpYmlsaXR5T2JqZWN0V3JhcHBlck1hYy5tbSBXZWJDb3JlU3lzdGVtSW50ZXJmYWNlLm1tIFdl
YkNvcmVVUkxSZXNwb25zZS5tbSBXZWJDb3JlVmlldy5tIFdlYkZvbnRDYWNoZS5tbSBXZWJWaWRl
b0Z1bGxzY3JlZW5Db250cm9sbGVyLm1tIFdlYlZpZGVvRnVsbHNjcmVlbkhVRFdpbmRvd0NvbnRy
b2xsZXIubW0gV2ViV2luZG93QW5pbWF0aW9uLm1tIFdoZWVsRXZlbnRNYWMubW0gV2lkZ2V0TWFj
Lm1tIG1hYy9MYXllclBvb2wubW0gRGlzcGxheVJlZnJlc2hNb25pdG9yTWFjLm1tOwogRVhDTFVE
RURfU09VUkNFX0ZJTEVfTkFNRVNfaXBob25lc2ltdWxhdG9yID0gJChFWENMVURFRF9TT1VSQ0Vf
RklMRV9OQU1FU19pcGhvbmVvcyk7CiBFWENMVURFRF9TT1VSQ0VfRklMRV9OQU1FU19tYWNvc3gg
PSAqSU9TLmggKklPUy5jcHAgKklPUy5tbSBLaWxsUmluZ05vbmUuY3BwOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvQ29uZmlndXJhdGlvbnMvV2ViQ29yZVRlc3RTdXBwb3J0LnhjY29uZmln
IGIvU291cmNlL1dlYkNvcmUvQ29uZmlndXJhdGlvbnMvV2ViQ29yZVRlc3RTdXBwb3J0LnhjY29u
ZmlnCmluZGV4IDg0YmU3NjM2YWY0MDRjZjlhZGI2ZGRmOGM5Yzc0Yzk4NWYyOTI1MjEuLjZjZTgw
YmI0MjRiZDc0OGFjZDU5YWRjMTAzNGZlOGEzZDYxNGMzYjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL0NvbmZpZ3VyYXRpb25zL1dlYkNvcmVUZXN0U3VwcG9ydC54Y2NvbmZpZworKysgYi9T
b3VyY2UvV2ViQ29yZS9Db25maWd1cmF0aW9ucy9XZWJDb3JlVGVzdFN1cHBvcnQueGNjb25maWcK
QEAgLTI2LDEwICsyNiwxNSBAQAogUFJJVkFURV9IRUFERVJTX0ZPTERFUl9QQVRIID0gJChQUklW
QVRFX0hFQURFUlNfRk9MREVSX1BBVEhfJChDT05GSUdVUkFUSU9OKSk7CiBQUklWQVRFX0hFQURF
UlNfRk9MREVSX1BBVEhfRGVidWcgPSBXZWJDb3JlVGVzdFN1cHBvcnQ7CiBQUklWQVRFX0hFQURF
UlNfRk9MREVSX1BBVEhfUmVsZWFzZSA9ICQoUFJJVkFURV9IRUFERVJTX0ZPTERFUl9QQVRIX0Rl
YnVnKTsKLVBSSVZBVEVfSEVBREVSU19GT0xERVJfUEFUSF9Qcm9kdWN0aW9uID0gL3Vzci9sb2Nh
bC9pbmNsdWRlL1dlYkNvcmVUZXN0U3VwcG9ydDsKK1BSSVZBVEVfSEVBREVSU19GT0xERVJfUEFU
SF9Qcm9kdWN0aW9uID0gJChQUklWQVRFX0hFQURFUlNfRk9MREVSX1BBVEhfUHJvZHVjdGlvbl8k
KFBMQVRGT1JNX05BTUUpKTsKK1BSSVZBVEVfSEVBREVSU19GT0xERVJfUEFUSF9Qcm9kdWN0aW9u
X2lwaG9uZW9zID0gL3Vzci9sb2NhbC9pbmNsdWRlL1dlYkNvcmVUZXN0U3VwcG9ydDsKK1BSSVZB
VEVfSEVBREVSU19GT0xERVJfUEFUSF9Qcm9kdWN0aW9uX2lwaG9uZXNpbXVsYXRvciA9ICQoSU5E
SUdPX0lOU1RBTExfUEFUSF9QUkVGSVgpJChQUklWQVRFX0hFQURFUlNfRk9MREVSX1BBVEhfUHJv
ZHVjdGlvbl9pcGhvbmVvcyk7CitQUklWQVRFX0hFQURFUlNfRk9MREVSX1BBVEhfUHJvZHVjdGlv
bl9tYWNvc3ggPSAvdXNyL2xvY2FsL2luY2x1ZGUvV2ViQ29yZVRlc3RTdXBwb3J0OwogCi1JTlNU
QUxMX1BBVEggPSAkKElOU1RBTExfUEFUSF8kKENPTkZJR1VSQVRJT04pKTsKLUlOU1RBTExfUEFU
SF9Qcm9kdWN0aW9uID0gL3Vzci9sb2NhbC9saWI7CitJTlNUQUxMX1BBVEggPSAkKElOU1RBTExf
UEFUSF8kKENPTkZJR1VSQVRJT04pXyQoUExBVEZPUk1fTkFNRSkpOworSU5TVEFMTF9QQVRIX1By
b2R1Y3Rpb25faXBob25lb3MgPSAvdXNyL2xvY2FsL2xpYjsKK0lOU1RBTExfUEFUSF9Qcm9kdWN0
aW9uX2lwaG9uZXNpbXVsYXRvciA9ICQoSU5ESUdPX0lOU1RBTExfUEFUSF9QUkVGSVgpJChJTlNU
QUxMX1BBVEhfUHJvZHVjdGlvbl9pcGhvbmVvcyk7CitJTlNUQUxMX1BBVEhfUHJvZHVjdGlvbl9t
YWNvc3ggPSAvdXNyL2xvY2FsL2xpYjsKIAogU0tJUF9JTlNUQUxMID0gJChTS0lQX0lOU1RBTExf
JChGT1JDRV9UT09MX0lOU1RBTEwpKTsKIFNLSVBfSU5TVEFMTF8gPSBZRVM7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Db25maWd1cmF0aW9ucy9pT1MueGNjb25maWcgYi9Tb3VyY2UvV2Vi
Q29yZS9Db25maWd1cmF0aW9ucy9pT1MueGNjb25maWcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTc3YjMxOTg5YzVl
MWZhZGE2ZDUwNjNhYzc0NjZiNDVmMDZjMGEyMwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL0NvbmZpZ3VyYXRpb25zL2lPUy54Y2NvbmZpZwpAQCAtMCwwICsxIEBACisjaW5jbHVk
ZSAiPERFVkVMT1BFUl9ESVI+L0FwcGxlSW50ZXJuYWwvWGNvZGVDb25maWcvQXNwZW5GYW1pbHku
eGNjb25maWciCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtl
IGIvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQppbmRleCBjNDljN2E3OGViYzhh
ZmU3M2EyNWY1MWNmODBkMDlkMzZhZjAzNzdiLi5lY2VjMjc1ZjU4ZGVkOTE0MzE4Yjk2ZDYwYmRm
MWViZjIwODFkOTE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5t
YWtlCisrKyBiL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UKQEAgLTI4LDYgKzI4
LDcgQEAKIAogVlBBVEggPSBcCiAgICAgJChXZWJDb3JlKSBcCisgICAgJChXZWJDb3JlKS9Nb2R1
bGVzL2FpcnBsYXkgXAogICAgICQoV2ViQ29yZSkvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYSBcCiAg
ICAgJChXZWJDb3JlKS9Nb2R1bGVzL2dlb2xvY2F0aW9uIFwKICAgICAkKFdlYkNvcmUpL01vZHVs
ZXMvaW5kZXhlZGRiIFwKQEAgLTY3LDYgKzY4LDcgQEAgVlBBVEggPSBcCiAjCiAKIEJJTkRJTkdf
SURMUyA9IFwKKyAgICAkKFdlYkNvcmUpL01vZHVsZXMvYWlycGxheS9XZWJLaXRQbGF5YmFja1Rh
cmdldEF2YWlsYWJpbGl0eUV2ZW50LmlkbCBcCiAgICAgJChXZWJDb3JlKS9Nb2R1bGVzL2VuY3J5
cHRlZG1lZGlhL01lZGlhS2V5TWVzc2FnZUV2ZW50LmlkbCBcCiAgICAgJChXZWJDb3JlKS9Nb2R1
bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5TmVlZGVkRXZlbnQuaWRsIFwKICAgICAkKFdlYkNv
cmUpL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlTZXNzaW9uLmlkbCBcCkBAIC03MjAs
NiArNzIyLDEyIEBAIGlmbmVxICgkKFNES1JPT1QpLCkKIAlTREtfRkxBR1M9LWlzeXNyb290ICQo
U0RLUk9PVCkKIGVuZGlmCiAKK2lmZXEgKCQoc2hlbGwgJChDQykgLWlzeXNyb290ICQoU0RLUk9P
VCkgLXN0ZD1nbnUrKzExIC14IGMrKyAtRSAtUCAtZE0gLUYgJChCVUlMVF9QUk9EVUNUU19ESVIp
ICQoRlJBTUVXT1JLX0ZMQUdTKSAkKEhFQURFUl9GTEFHUykgLWluY2x1ZGUgInd0Zi9QbGF0Zm9y
bS5oIiAvZGV2L251bGwgfCBncmVwICcgV1RGX1BMQVRGT1JNX0lPUyAnIHwgY3V0IC1kJyAnIC1m
MyksIDEpCisgICAgV1RGX1BMQVRGT1JNX0lPUyA9IDEKK2Vsc2UKKyAgICBXVEZfUExBVEZPUk1f
SU9TID0gMAorZW5kaWYKKwogaWZlcSAoJChzaGVsbCAkKENDKSAtc3RkPWdudSsrMTEgLXggYysr
IC1FIC1QIC1kTSAkKFNES19GTEFHUykgJChGUkFNRVdPUktfRkxBR1MpICQoSEVBREVSX0ZMQUdT
KSAtaW5jbHVkZSAid3RmL1BsYXRmb3JtLmgiIC9kZXYvbnVsbCB8IGdyZXAgRU5BQkxFX09SSUVO
VEFUSU9OX0VWRU5UUyB8IGN1dCAtZCcgJyAtZjMpLCAxKQogICAgIEVOQUJMRV9PUklFTlRBVElP
Tl9FVkVOVFMgPSAxCiBlbmRpZgpAQCAtNzI4LDYgKzczNiwyNSBAQCBpZmVxICgkKFBMQVRGT1JN
X0ZFQVRVUkVfREVGSU5FUyksKQogUExBVEZPUk1fRkVBVFVSRV9ERUZJTkVTID0gQ29uZmlndXJh
dGlvbnMvRmVhdHVyZURlZmluZXMueGNjb25maWcKIGVuZGlmCiAKK2lmZXEgKCQoV1RGX1BMQVRG
T1JNX0lPUyksIDEpCisKK0FERElUSU9OQUxfQklORElOR19JRExTID0gXAorCUdlc3R1cmVFdmVu
dC5pZGwgXAorCVRvdWNoLmlkbCBcCisJVG91Y2hFdmVudC5pZGwgXAorCVRvdWNoTGlzdC5pZGwK
KworQklORElOR19JRExTICs9ICQoQURESVRJT05BTF9CSU5ESU5HX0lETFMpCisKK2FsbCA6ICQo
QURESVRJT05BTF9CSU5ESU5HX0lETFM6JS5pZGw9SlMlLmgpCisKK3ZwYXRoICUuaWRsICQoQlVJ
TFRfUFJPRFVDVFNfRElSKS91c3IvbG9jYWwvaW5jbHVkZSAkKFNES1JPT1QpL3Vzci9sb2NhbC9p
bmNsdWRlCisKKyQoQURESVRJT05BTF9CSU5ESU5HX0lETFMpIDogJSA6IFdlYktpdEFkZGl0aW9u
cy8lCisJY3AgJDwgLgorCitlbmRpZgorCiBlbmRpZiAjIE1BQ09TCiAKIGlmbmRlZiBFTkFCTEVf
T1JJRU5UQVRJT05fRVZFTlRTCkBAIC0xMTY0LDE1ICsxMTkxLDUyIEBAIENoYXJzZXREYXRhLmNw
cCA6IHBsYXRmb3JtL3RleHQvbWFjL21ha2UtY2hhcnNldC10YWJsZS5wbCBwbGF0Zm9ybS90ZXh0
L21hYy9jaGFyCiAKIGlmbmVxICgkKEFDVElPTiksaW5zdGFsbGhkcnMpCiAKK2lmZXEgKCQoV1RG
X1BMQVRGT1JNX0lPUyksMSkKKworaWZlcSAoJChmaW5kc3RyaW5nIGFybXY2LCQoQVJDSFMpKSwg
YXJtdjYpCisgICAgV0VCQ09SRV9FWFBPUlRfRklMRVMgOj0gJChXRUJDT1JFX0VYUE9SVF9GSUxF
UykgV2ViQ29yZS5MUDY0LmFybXY2LmV4cAorZW5kaWYKK2lmZXEgKCQoZmluZHN0cmluZyBhcm12
N2YsJChBUkNIUykpLCBhcm12N2YpCisgICAgV0VCQ09SRV9FWFBPUlRfRklMRVMgOj0gJChXRUJD
T1JFX0VYUE9SVF9GSUxFUykgV2ViQ29yZS5MUDY0LmFybXY3Zi5leHAKK2VuZGlmCitpZmVxICgk
KGZpbmRzdHJpbmcgYXJtdjdzLCQoQVJDSFMpKSwgYXJtdjdzKQorICAgIFdFQkNPUkVfRVhQT1JU
X0ZJTEVTIDo9ICQoV0VCQ09SRV9FWFBPUlRfRklMRVMpIFdlYkNvcmUuTFA2NC5hcm12N3MuZXhw
CitlbmRpZgoraWZlcSAoJChmaW5kc3RyaW5nIGFybXY3LCQoQVJDSFMpKSwgYXJtdjcpCisgICAg
V0VCQ09SRV9FWFBPUlRfRklMRVMgOj0gJChXRUJDT1JFX0VYUE9SVF9GSUxFUykgV2ViQ29yZS5M
UDY0LmFybXY3LmV4cAorZW5kaWYKK2lmZXEgKCQoZmluZHN0cmluZyBhcm02NCwkKEFSQ0hTKSks
IGFybTY0KQorICAgIFdFQkNPUkVfRVhQT1JUX0ZJTEVTIDo9ICQoV0VCQ09SRV9FWFBPUlRfRklM
RVMpIFdlYkNvcmUuTFA2NC5hcm02NC5leHAKK2VuZGlmCitpZmVxICgkKGZpbmRzdHJpbmcgaTM4
NiwkKEFSQ0hTKSksIGkzODYpCisgICAgV0VCQ09SRV9FWFBPUlRfRklMRVMgOj0gJChXRUJDT1JF
X0VYUE9SVF9GSUxFUykgV2ViQ29yZS5MUDY0LmkzODYuZXhwCitlbmRpZgoraWZlcSAoJChmaW5k
c3RyaW5nIHg4Nl82NCwkKEFSQ0hTKSksIHg4Nl82NCkKKyAgICBXRUJDT1JFX0VYUE9SVF9GSUxF
UyA6PSAkKFdFQkNPUkVfRVhQT1JUX0ZJTEVTKSBXZWJDb3JlLkxQNjQueDg2XzY0LmV4cAorZW5k
aWYKKworYWxsIDogJChXRUJDT1JFX0VYUE9SVF9GSUxFUykKKworV2ViQ29yZS4lLmV4cCA6IGdl
bmVyYXRlLWV4cG9ydC1maWxlIFdlYkNvcmUuZXhwLmluCisJJF4gJEAKKworIyBTd2l0Y2ggTlNS
ZWN0LCBOU1NpemUgYW5kIE5TUG9pbnQgd2l0aCB0aGVpciBDRyBjb3VudGVycGFydHMgZm9yIHRo
ZSA2NC1iaXQgZXhwb3J0cyBmaWxlLgorV2ViQ29yZS5MUDY0LiUuZXhwIDogV2ViQ29yZS4lLmV4
cAorCWNhdCAkXiB8IHNlZCAtZSBzLzdfTlNSZWN0LzZDR1JlY3QvIC1lIHMvN19OU1NpemUvNkNH
U2l6ZS8gLWUgcy84X05TUG9pbnQvN0NHUG9pbnQvID4gJEAKKworZWxzZQorCiBhbGwgOiBXZWJD
b3JlLmV4cCBXZWJDb3JlLkxQNjQuZXhwCiAKIFdlYkNvcmUuZXhwIDogJChCVUlMVF9QUk9EVUNU
U19ESVIpL1dlYkNvcmVFeHBvcnRGaWxlR2VuZXJhdG9yCi0JJF4gPiAkQAorCSReIHwgZ3JlcCAt
diAnXiMgJyB8IHNlZCAtZSAncy9eIy8vJyA+ICRACiAKICMgU3dpdGNoIE5TUmVjdCwgTlNTaXpl
IGFuZCBOU1BvaW50IHdpdGggdGhlaXIgQ0cgY291bnRlcnBhcnRzIGZvciB0aGUgNjQtYml0IGV4
cG9ydHMgZmlsZS4KIFdlYkNvcmUuTFA2NC5leHAgOiBXZWJDb3JlLmV4cAogCWNhdCAkXiB8IHNl
ZCAtZSBzLzdfTlNSZWN0LzZDR1JlY3QvIC1lIHMvN19OU1NpemUvNkNHU2l6ZS8gLWUgcy84X05T
UG9pbnQvN0NHUG9pbnQvID4gJEAKIAorZW5kaWYgIyBXVEZfUExBVEZPUk1fSU9TCisKIGVuZGlm
ICMgaW5zdGFsbGhkcnMKIAogIyAtLS0tLS0tLQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
RW5nbGlzaC5scHJvai9Mb2NhbGl6YWJsZS5zdHJpbmdzIGIvU291cmNlL1dlYkNvcmUvRW5nbGlz
aC5scHJvai9Mb2NhbGl6YWJsZS5zdHJpbmdzCmluZGV4IGMzN2Y3ODhkMmU2MDEyYWQyOThlNDM3
ZGViYjI3YTllOWE3NzA5NjcuLjUwMGM5NDFhY2I3ZTEzYzA3NzZhYmY1NDk2YWM1MmE0Nzk1ODY3
OWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0VuZ2xpc2gubHByb2ovTG9jYWxpemFibGUu
c3RyaW5ncworKysgYi9Tb3VyY2UvV2ViQ29yZS9FbmdsaXNoLmxwcm9qL0xvY2FsaXphYmxlLnN0
cmluZ3MKQEAgLTExMiw2ICsxMTIsMTIgQEAKIC8qIHRpdGxlIGZvciBhIG11bHRpcGxlIGZpbGUg
Y2hvb3NlciBidXR0b24gdXNlZCBpbiBIVE1MIGZvcm1zLiBUaGlzIHRpdGxlIHNob3VsZCBiZSBh
cyBzaG9ydCBhcyBwb3NzaWJsZS4gKi8KICJDaG9vc2UgRmlsZXMiID0gIkNob29zZSBGaWxlcyI7
CiAKKy8qIFBMQVRGT1JNKElPUykgdGl0bGUgZm9yIGZpbGUgYnV0dG9uIHVzZWQgaW4gSFRNTCBm
b3JtcyBmb3IgbWVkaWEgZmlsZXMgKi8KKyJDaG9vc2UgTWVkaWEgKFNpbmdsZSkiID0gIkNob29z
ZSBQaG90byI7CisKKy8qIFBMQVRGT1JNKElPUykgdGl0bGUgZm9yIGZpbGUgYnV0dG9uIHVzZWQg
aW4gSFRNTDUgZm9ybXMgZm9yIG11bHRpcGxlIG1lZGlhIGZpbGVzICovCisiQ2hvb3NlIE1lZGlh
IChNdWx0aXBsZSkiID0gIkNob29zZSBQaG90b3MiOworCiAvKiBtZW51IGl0ZW0gaW4gUmVjZW50
IFNlYXJjaGVzIG1lbnUgdGhhdCBlbXB0aWVzIG1lbnUncyBjb250ZW50cyAqLwogIkNsZWFyIFJl
Y2VudCBTZWFyY2hlcyIgPSAiQ2xlYXIgUmVjZW50IFNlYXJjaGVzIjsKIApAQCAtMTU3LDYgKzE2
MywxMiBAQAogLyogRGVmYXVsdCB3cml0aW5nIGRpcmVjdGlvbiBjb250ZXh0IG1lbnUgaXRlbSAq
LwogIkRlZmF1bHQiID0gIkRlZmF1bHQiOwogCisvKiBQTEFURk9STShJT1MpIFVuZG8gYWN0aW9u
IG5hbWUgKi8KKyJEZWxldGUgKFVuZG8gYWN0aW9uIG5hbWUpIiA9ICJEZWxldGUiOworCisvKiBQ
TEFURk9STShJT1MpIFVuZG8gYWN0aW9uIG5hbWUgKi8KKyJEaWN0YXRpb24gKFVuZG8gYWN0aW9u
IG5hbWUpIiA9ICJEaWN0YXRpb24iOworCiAvKiB0ZXh0IHRvIGRpc3BsYXkgaW4gPGRldGFpbHM+
IHRhZyB3aGVuIGl0IGhhcyBubyA8c3VtbWFyeT4gY2hpbGQgKi8KICJEZXRhaWxzIiA9ICJEZXRh
aWxzIjsKIApAQCAtNzgxLDYgKzc5MywxMiBAQAogLyogdGV4dCB0byBkaXNwbGF5IGluIGZpbGUg
YnV0dG9uIHVzZWQgaW4gSFRNTCBmb3JtcyB3aGVuIG5vIGZpbGVzIGFyZSBzZWxlY3RlZCBhbmQg
dGhlIGJ1dHRvbiBhbGxvd3MgbXVsdGlwbGUgZmlsZXMgdG8gYmUgc2VsZWN0ZWQgKi8KICJubyBm
aWxlcyBzZWxlY3RlZCIgPSAibm8gZmlsZXMgc2VsZWN0ZWQiOwogCisvKiBQTEFURk9STShJT1Mp
IHRleHQgdG8gZGlzcGxheSBpbiBmaWxlIGJ1dHRvbiB1c2VkIGluIEhUTUwgZm9ybXMgZm9yIG1l
ZGlhIGZpbGVzIHdoZW4gbm8gbWVkaWEgZmlsZSBpcyBzZWxlY3RlZCAqLworIm5vIG1lZGlhIHNl
bGVjdGVkIChzaW5nbGUpIiA9ICJubyBwaG90byBzZWxlY3RlZCI7CisKKy8qIFBMQVRGT1JNKElP
UykgdGV4dCB0byBkaXNwbGF5IGluIGZpbGUgYnV0dG9uIHVzZWQgaW4gSFRNTCBmb3JtcyBmb3Ig
bWVkaWEgZmlsZXMgd2hlbiBubyBtZWRpYSBmaWxlcyBhcmUgc2VsZWN0ZWQgYW5kIHRoZSBidXR0
b24gYWxsb3dzIG11bHRpcGxlIGZpbGVzIHRvIGJlIHNlbGVjdGVkICovCisibm8gbWVkaWEgc2Vs
ZWN0ZWQgKG11bHRpcGxlKSIgPSAibm8gcGhvdG9zIHNlbGVjdGVkIjsKKwogLyogSFRUUCByZXN1
bHQgY29kZSBzdHJpbmcgKi8KICJubyBsb25nZXIgZXhpc3RzIiA9ICJubyBsb25nZXIgZXhpc3Rz
IjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9haXJwbGF5L1dlYktpdFBs
YXliYWNrVGFyZ2V0QXZhaWxhYmlsaXR5RXZlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9haXJwbGF5L1dlYktpdFBsYXliYWNrVGFyZ2V0QXZhaWxhYmlsaXR5RXZlbnQuY3BwCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLmY3NTU4NjBkMjYxNzdiOWRkOWI4NTdjOGVmMWI1MWU2MTFmZDI5ODIKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FpcnBsYXkvV2ViS2l0UGxheWJhY2tU
YXJnZXRBdmFpbGFiaWxpdHlFdmVudC5jcHAKQEAgLTAsMCArMSw1OSBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBg
YEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9S
CisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lu
Y2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIldlYktpdFBsYXliYWNrVGFyZ2V0QXZhaWxhYmls
aXR5RXZlbnQuaCIKKworI2lmIEVOQUJMRShJT1NfQUlSUExBWSkKKworbmFtZXNwYWNlIFdlYkNv
cmUgeworCitzdGF0aWMgY29uc3QgQXRvbWljU3RyaW5nJiBzdHJpbmdGb3JQbGF5YmFja1Rhcmdl
dEF2YWlsYWJpbGl0eShib29sIGF2YWlsYWJsZSkKK3sKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FM
KEF0b21pY1N0cmluZywgYXZhaWxhYmxlU3RyaW5nLCAoImF2YWlsYWJsZSIsIEF0b21pY1N0cmlu
Zzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKEF0b21p
Y1N0cmluZywgbm90QXZhaWxhYmxlU3RyaW5nLCAoIm5vdC1hdmFpbGFibGUiLCBBdG9taWNTdHJp
bmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7CisKKyAgICByZXR1cm4gYXZhaWxhYmxlID8gYXZh
aWxhYmxlU3RyaW5nIDogbm90QXZhaWxhYmxlU3RyaW5nOworfQorCitXZWJLaXRQbGF5YmFja1Rh
cmdldEF2YWlsYWJpbGl0eUV2ZW50OjpXZWJLaXRQbGF5YmFja1RhcmdldEF2YWlsYWJpbGl0eUV2
ZW50KCkKK3sKK30KKworV2ViS2l0UGxheWJhY2tUYXJnZXRBdmFpbGFiaWxpdHlFdmVudDo6V2Vi
S2l0UGxheWJhY2tUYXJnZXRBdmFpbGFiaWxpdHlFdmVudChjb25zdCBBdG9taWNTdHJpbmcmIGV2
ZW50VHlwZSwgYm9vbCBhdmFpbGFibGUpCisgICAgOiBFdmVudChldmVudFR5cGUsIGZhbHNlLCBm
YWxzZSkKKyAgICAsIG1fYXZhaWxhYmlsaXR5KHN0cmluZ0ZvclBsYXliYWNrVGFyZ2V0QXZhaWxh
YmlsaXR5KGF2YWlsYWJsZSkpCit7Cit9CisKK1dlYktpdFBsYXliYWNrVGFyZ2V0QXZhaWxhYmls
aXR5RXZlbnQ6OldlYktpdFBsYXliYWNrVGFyZ2V0QXZhaWxhYmlsaXR5RXZlbnQoY29uc3QgQXRv
bWljU3RyaW5nJiBldmVudFR5cGUsIGNvbnN0IFdlYktpdFBsYXliYWNrVGFyZ2V0QXZhaWxhYmls
aXR5RXZlbnRJbml0JiBpbml0aWFsaXplcikKKyAgICA6IEV2ZW50KGV2ZW50VHlwZSwgaW5pdGlh
bGl6ZXIpCisgICAgLCBtX2F2YWlsYWJpbGl0eShpbml0aWFsaXplci5hdmFpbGFiaWxpdHkpCit7
Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShJT1NfQUlS
UExBWSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYWlycGxheS9XZWJLaXRQ
bGF5YmFja1RhcmdldEF2YWlsYWJpbGl0eUV2ZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2FpcnBsYXkvV2ViS2l0UGxheWJhY2tUYXJnZXRBdmFpbGFiaWxpdHlFdmVudC5oCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLmRiYmZkZTczZDMzNTk3M2MzNzkxYzY5ZjRhZmQ1NjNmMjEzMDFlM2YKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FpcnBsYXkvV2ViS2l0UGxheWJhY2tUYXJn
ZXRBdmFpbGFiaWxpdHlFdmVudC5oCkBAIC0wLDAgKzEsNzkgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJ
UycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICog
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkK
KyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYg
V2ViS2l0UGxheWJhY2tUYXJnZXRBdmFpbGFiaWxpdHlFdmVudF9oCisjZGVmaW5lIFdlYktpdFBs
YXliYWNrVGFyZ2V0QXZhaWxhYmlsaXR5RXZlbnRfaAorCisjaWYgRU5BQkxFKElPU19BSVJQTEFZ
KQorCisjaW5jbHVkZSAiRXZlbnQuaCIKKyNpbmNsdWRlICJFdmVudE5hbWVzLmgiCisKK25hbWVz
cGFjZSBXZWJDb3JlIHsKKworc3RydWN0IFdlYktpdFBsYXliYWNrVGFyZ2V0QXZhaWxhYmlsaXR5
RXZlbnRJbml0IDogcHVibGljIEV2ZW50SW5pdCB7CisgICAgV2ViS2l0UGxheWJhY2tUYXJnZXRB
dmFpbGFiaWxpdHlFdmVudEluaXQoKQorICAgIHsKKyAgICB9OworCisgICAgU3RyaW5nIGF2YWls
YWJpbGl0eTsKK307CisKK2NsYXNzIFdlYktpdFBsYXliYWNrVGFyZ2V0QXZhaWxhYmlsaXR5RXZl
bnQgOiBwdWJsaWMgRXZlbnQgeworcHVibGljOgorICAgIH5XZWJLaXRQbGF5YmFja1RhcmdldEF2
YWlsYWJpbGl0eUV2ZW50KCkgeyB9CisKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxXZWJLaXRQbGF5
YmFja1RhcmdldEF2YWlsYWJpbGl0eUV2ZW50PiBjcmVhdGUoKQorICAgIHsKKyAgICAgICAgcmV0
dXJuIGFkb3B0UmVmKG5ldyBXZWJLaXRQbGF5YmFja1RhcmdldEF2YWlsYWJpbGl0eUV2ZW50KTsK
KyAgICB9CisKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxXZWJLaXRQbGF5YmFja1RhcmdldEF2YWls
YWJpbGl0eUV2ZW50PiBjcmVhdGUoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIGJvb2wg
YXZhaWxhYmxlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBXZWJLaXRQbGF5
YmFja1RhcmdldEF2YWlsYWJpbGl0eUV2ZW50KGV2ZW50VHlwZSwgYXZhaWxhYmxlKSk7CisgICAg
fQorCisgICAgc3RhdGljIFBhc3NSZWZQdHI8V2ViS2l0UGxheWJhY2tUYXJnZXRBdmFpbGFiaWxp
dHlFdmVudD4gY3JlYXRlKGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBjb25zdCBXZWJL
aXRQbGF5YmFja1RhcmdldEF2YWlsYWJpbGl0eUV2ZW50SW5pdCYgaW5pdGlhbGl6ZXIpCisgICAg
eworICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFdlYktpdFBsYXliYWNrVGFyZ2V0QXZhaWxh
YmlsaXR5RXZlbnQoZXZlbnRUeXBlLCBpbml0aWFsaXplcikpOworICAgIH0KKworICAgIFN0cmlu
ZyBhdmFpbGFiaWxpdHkoKSBjb25zdCB7IHJldHVybiBtX2F2YWlsYWJpbGl0eTsgfQorCisgICAg
dmlydHVhbCBFdmVudEludGVyZmFjZSBldmVudEludGVyZmFjZSgpIGNvbnN0IE9WRVJSSURFIHsg
cmV0dXJuIFdlYktpdFBsYXliYWNrVGFyZ2V0QXZhaWxhYmlsaXR5RXZlbnRJbnRlcmZhY2VUeXBl
OyB9CisKK3ByaXZhdGU6CisgICAgV2ViS2l0UGxheWJhY2tUYXJnZXRBdmFpbGFiaWxpdHlFdmVu
dCgpOworICAgIGV4cGxpY2l0IFdlYktpdFBsYXliYWNrVGFyZ2V0QXZhaWxhYmlsaXR5RXZlbnQo
Y29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIGJvb2wgYXZhaWxhYmxlKTsKKyAgICBXZWJL
aXRQbGF5YmFja1RhcmdldEF2YWlsYWJpbGl0eUV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgZXZl
bnRUeXBlLCBjb25zdCBXZWJLaXRQbGF5YmFja1RhcmdldEF2YWlsYWJpbGl0eUV2ZW50SW5pdCYp
OworCisgICAgU3RyaW5nIG1fYXZhaWxhYmlsaXR5OworfTsKKworfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQorCisjZW5kaWYgLy8gRU5BQkxFKElPU19BSVJQTEFZKQorCisjZW5kaWYgLy8gV2ViS2l0
UGxheWJhY2tUYXJnZXRBdmFpbGFiaWxpdHlFdmVudF9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2FpcnBsYXkvV2ViS2l0UGxheWJhY2tUYXJnZXRBdmFpbGFiaWxpdHlFdmVu
dC5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FpcnBsYXkvV2ViS2l0UGxheWJhY2tUYXJn
ZXRBdmFpbGFiaWxpdHlFdmVudC5pZGwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDBlM2JmZTY2MjYxYTE3YTZkYmRl
NGNjMmIyNjJmMmMwZjdjZDg1ZAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvYWlycGxheS9XZWJLaXRQbGF5YmFja1RhcmdldEF2YWlsYWJpbGl0eUV2ZW50LmlkbApA
QCAtMCwwICsxLDMzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxs
IFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4gCisgKgorICovCisKK1sKKyAgICBDb25kaXRpb25hbD1JT1NfQUlSUExBWSwKKyAg
ICBDb25zdHJ1Y3RvclRlbXBsYXRlPUV2ZW50CitdIGludGVyZmFjZSBXZWJLaXRQbGF5YmFja1Rh
cmdldEF2YWlsYWJpbGl0eUV2ZW50IDogRXZlbnQgeworICAgIFtJbml0aWFsaXplZEJ5RXZlbnRD
b25zdHJ1Y3Rvcl0gcmVhZG9ubHkgYXR0cmlidXRlIERPTVN0cmluZyBhdmFpbGFiaWxpdHk7Cit9
OworCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2dlb2xvY2F0aW9uL0dlb2xv
Y2F0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZ2VvbG9jYXRpb24vR2VvbG9jYXRp
b24uY3BwCmluZGV4IDA3MzU5OTY1MWJmNjIyMDk2NWI0NzkzMWNkYzUwNWE3Y2QzYmQwMjAuLjA0
NzEyYzFiOWY5OTkxNmE3MzQxYmNlNTEzM2M0NjNiOGE5NDlhMDAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvZ2VvbG9jYXRpb24vR2VvbG9jYXRpb24uY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvZ2VvbG9jYXRpb24vR2VvbG9jYXRpb24uY3BwCkBAIC0yMzUsNiAr
MjM1LDExIEBAIFBhc3NSZWZQdHI8R2VvbG9jYXRpb24+IEdlb2xvY2F0aW9uOjpjcmVhdGUoU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCkKIEdlb2xvY2F0aW9uOjpHZW9sb2NhdGlvbihT
Y3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0KQogICAgIDogQWN0aXZlRE9NT2JqZWN0KGNv
bnRleHQpCiAgICAgLCBtX2FsbG93R2VvbG9jYXRpb24oVW5rbm93bikKKyNpZiBQTEFURk9STShJ
T1MpCisgICAgLCBtX2lzU3VzcGVuZGVkKGZhbHNlKQorICAgICwgbV9oYXNDaGFuZ2VkUG9zaXRp
b24oZmFsc2UpCisgICAgLCBtX3Jlc3VtZVRpbWVyKHRoaXMsICZHZW9sb2NhdGlvbjo6cmVzdW1l
VGltZXJGaXJlZCkKKyNlbmRpZgogewogfQogCkBAIC0yNTgsNiArMjYzLDEyMyBAQCBQYWdlKiBH
ZW9sb2NhdGlvbjo6cGFnZSgpIGNvbnN0CiAgICAgcmV0dXJuIGRvY3VtZW50KCkgPyBkb2N1bWVu
dCgpLT5wYWdlKCkgOiAwOwogfQogCisjaWYgUExBVEZPUk0oSU9TKQorYm9vbCBHZW9sb2NhdGlv
bjo6Y2FuU3VzcGVuZCgpIGNvbnN0Cit7CisgICAgcmV0dXJuICFoYXNMaXN0ZW5lcnMoKTsKK30K
Kwordm9pZCBHZW9sb2NhdGlvbjo6c3VzcGVuZChSZWFzb25Gb3JTdXNwZW5zaW9uIHJlYXNvbikK
K3sKKyAgICAvLyBBbGxvdyBwYWdlcyB0aGF0IG5vIGxvbmdlciBoYXZlIGxpc3RlbmVycyB0byBl
bnRlciB0aGUgcGFnZSBjYWNoZS4KKyAgICAvLyBIYXZlIHRoZW0gc3RvcCB1cGRhdGluZyBhbmQg
cmVzZXQgZ2VvbG9jYXRpb24gcGVybWlzc2lvbnMgd2hlbiB0aGUgcGFnZSBpcyByZXN1bWVkLgor
ICAgIGlmIChyZWFzb24gPT0gQWN0aXZlRE9NT2JqZWN0OjpEb2N1bWVudFdpbGxCZWNvbWVJbmFj
dGl2ZSkgeworICAgICAgICBBU1NFUlQoIWhhc0xpc3RlbmVycygpKTsKKyAgICAgICAgc3RvcCgp
OworICAgICAgICBtX3Jlc2V0T25SZXN1bWUgPSB0cnVlOworICAgIH0KKworICAgIC8vIFN1c3Bl
bmQgR2VvTm90aWZpZXIgdGltZW91dCB0aW1lcnMuCisgICAgaWYgKGhhc0xpc3RlbmVycygpKQor
ICAgICAgICBzdG9wVGltZXJzKCk7CisKKyAgICBtX2lzU3VzcGVuZGVkID0gdHJ1ZTsKKyAgICBt
X3Jlc3VtZVRpbWVyLnN0b3AoKTsKKyAgICBBY3RpdmVET01PYmplY3Q6OnN1c3BlbmQocmVhc29u
KTsKK30KKwordm9pZCBHZW9sb2NhdGlvbjo6cmVzdW1lKCkKK3sKKyAgICBBU1NFUlQoV2ViVGhy
ZWFkSXNMb2NrZWRPckRpc2FibGVkKCkpOworICAgIEFjdGl2ZURPTU9iamVjdDo6cmVzdW1lKCk7
CisKKyAgICBpZiAoIW1fcmVzdW1lVGltZXIuaXNBY3RpdmUoKSkKKyAgICAgICAgbV9yZXN1bWVU
aW1lci5zdGFydE9uZVNob3QoMCk7Cit9CisKK3ZvaWQgR2VvbG9jYXRpb246OnJlc3VtZVRpbWVy
RmlyZWQoVGltZXI8R2VvbG9jYXRpb24+KikKK3sKKyAgICBtX2lzU3VzcGVuZGVkID0gZmFsc2U7
CisKKyAgICBpZiAobV9yZXNldE9uUmVzdW1lKSB7CisgICAgICAgIHJlc2V0QWxsR2VvbG9jYXRp
b25QZXJtaXNzaW9uKCk7CisgICAgICAgIG1fcmVzZXRPblJlc3VtZSA9IGZhbHNlOworICAgIH0K
KworICAgIC8vIFJlc3VtZSBHZW9Ob3RpZmllciB0aW1lb3V0IHRpbWVycy4KKyAgICBpZiAoaGFz
TGlzdGVuZXJzKCkpIHsKKyAgICAgICAgR2VvTm90aWZpZXJTZXQ6OmNvbnN0X2l0ZXJhdG9yIGVu
ZCA9IG1fb25lU2hvdHMuZW5kKCk7CisgICAgICAgIGZvciAoR2VvTm90aWZpZXJTZXQ6OmNvbnN0
X2l0ZXJhdG9yIGl0ID0gbV9vbmVTaG90cy5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpCisgICAg
ICAgICAgICAoKml0KS0+c3RhcnRUaW1lcklmTmVlZGVkKCk7CisgICAgICAgIEdlb05vdGlmaWVy
VmVjdG9yIHdhdGNoZXJDb3B5OworICAgICAgICBtX3dhdGNoZXJzLmdldE5vdGlmaWVyc1ZlY3Rv
cih3YXRjaGVyQ29weSk7CisgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgd2F0Y2hlckNv
cHkuc2l6ZSgpOyArK2kpCisgICAgICAgICAgICB3YXRjaGVyQ29weVtpXS0+c3RhcnRUaW1lcklm
TmVlZGVkKCk7CisgICAgfQorCisgICAgaWYgKChpc0FsbG93ZWQoKSB8fCBpc0RlbmllZCgpKSAm
JiAhbV9wZW5kaW5nRm9yUGVybWlzc2lvbk5vdGlmaWVycy5pc0VtcHR5KCkpIHsKKyAgICAgICAg
Ly8gVGhlIHBlbmRpbmcgcGVybWlzc2lvbiB3YXMgZ3JhbnRlZCB3aGlsZSB0aGUgb2JqZWN0IHdh
cyBzdXNwZW5kZWQuCisgICAgICAgIHNldElzQWxsb3dlZChpc0FsbG93ZWQoKSk7CisgICAgICAg
IEFTU0VSVCghbV9oYXNDaGFuZ2VkUG9zaXRpb24pOworICAgICAgICBBU1NFUlQoIW1fZXJyb3JX
YWl0aW5nRm9yUmVzdW1lKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGlmIChpc0Rl
bmllZCgpICYmIGhhc0xpc3RlbmVycygpKSB7CisgICAgICAgIC8vIFRoZSBwZXJtaXNzaW9uIHdh
cyByZXZva2VkIHdoaWxlIHRoZSBvYmplY3Qgd2FzIHN1c3BlbmRlZC4KKyAgICAgICAgc2V0SXNB
bGxvd2VkKGZhbHNlKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGlmIChtX2hhc0No
YW5nZWRQb3NpdGlvbikgeworICAgICAgICBwb3NpdGlvbkNoYW5nZWQoKTsKKyAgICAgICAgbV9o
YXNDaGFuZ2VkUG9zaXRpb24gPSBmYWxzZTsKKyAgICB9CisKKyAgICBpZiAobV9lcnJvcldhaXRp
bmdGb3JSZXN1bWUpIHsKKyAgICAgICAgaGFuZGxlRXJyb3IobV9lcnJvcldhaXRpbmdGb3JSZXN1
bWUuZ2V0KCkpOworICAgICAgICBtX2Vycm9yV2FpdGluZ0ZvclJlc3VtZSA9IG51bGxwdHI7Cisg
ICAgfQorfQorCit2b2lkIEdlb2xvY2F0aW9uOjpyZXNldEFsbEdlb2xvY2F0aW9uUGVybWlzc2lv
bigpCit7CisgICAgaWYgKG1faXNTdXNwZW5kZWQpIHsKKyAgICAgICAgbV9yZXNldE9uUmVzdW1l
ID0gdHJ1ZTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGlmIChtX2FsbG93R2VvbG9j
YXRpb24gPT0gSW5Qcm9ncmVzcykgeworICAgICAgICBQYWdlKiBwYWdlID0gdGhpcy0+cGFnZSgp
OworICAgICAgICBpZiAocGFnZSkKKyAgICAgICAgICAgIEdlb2xvY2F0aW9uQ29udHJvbGxlcjo6
ZnJvbShwYWdlKS0+Y2FuY2VsUGVybWlzc2lvblJlcXVlc3QodGhpcyk7CisKKyAgICAgICAgLy8g
VGhpcyByZXR1cm4gaXMgbm90IHRlY2huaWNhbGx5IGNvcnJlY3QgYXMgR2VvbG9jYXRpb25Db250
cm9sbGVyOjpjYW5jZWxQZXJtaXNzaW9uUmVxdWVzdCgpIHNob3VsZCBoYXZlIGNsZWFyZWQgdGhl
IGFjdGl2ZSByZXF1ZXN0LgorICAgICAgICAvLyBOZWl0aGVyIGlPUyBub3IgT1MgWCBzdXBwb3J0
cyBjYW5jZWxQZXJtaXNzaW9uUmVxdWVzdCgpIChodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9ODk1MjQpLCBzbyB3ZSB3b3JrYXJvdW5kIHRoYXQgYW5kIGxldCBvbmdvaW5n
IHJlcXVlc3RzIGNvbXBsZXRlLiA6KAorICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgLy8g
MSkgUmVzZXQgb3VyIG93biBzdGF0ZS4KKyAgICBzdG9wVXBkYXRpbmcoKTsKKyAgICBtX2FsbG93
R2VvbG9jYXRpb24gPSBVbmtub3duOworICAgIG1faGFzQ2hhbmdlZFBvc2l0aW9uID0gZmFsc2U7
CisgICAgbV9lcnJvcldhaXRpbmdGb3JSZXN1bWUgPSBudWxscHRyOworCisgICAgLy8gMikgUmVx
dWVzdCBuZXcgcGVybWlzc2lvbiBmb3IgdGhlIGFjdGl2ZSBub3RpZmllcnMuCisgICAgc3RvcFRp
bWVycygpOworCisgICAgLy8gR28gb3ZlciB0aGUgb25lIHNob3QgYW5kIHJlLXJlcXVlc3QgcGVy
bWlzc2lvbi4KKyAgICBHZW9Ob3RpZmllclNldDo6aXRlcmF0b3IgZW5kID0gbV9vbmVTaG90cy5l
bmQoKTsKKyAgICBmb3IgKEdlb05vdGlmaWVyU2V0OjppdGVyYXRvciBpdCA9IG1fb25lU2hvdHMu
YmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KQorICAgICAgICBzdGFydFJlcXVlc3QoKCppdCkuZ2V0
KCkpOworICAgIC8vIEdvIG92ZXIgdGhlIHdhdGNoZXJzIGFuZCByZS1yZXF1ZXN0IHBlcm1pc3Np
b24uCisgICAgR2VvTm90aWZpZXJWZWN0b3Igd2F0Y2hlckNvcHk7CisgICAgbV93YXRjaGVycy5n
ZXROb3RpZmllcnNWZWN0b3Iod2F0Y2hlckNvcHkpOworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBp
IDwgd2F0Y2hlckNvcHkuc2l6ZSgpOyArK2kpCisgICAgICAgIHN0YXJ0UmVxdWVzdCh3YXRjaGVy
Q29weVtpXS5nZXQoKSk7Cit9CisjZW5kaWYgLy8gUExBVEZPUk0oSU9TKQorCiB2b2lkIEdlb2xv
Y2F0aW9uOjpzdG9wKCkKIHsKICAgICBQYWdlKiBwYWdlID0gdGhpcy0+cGFnZSgpOwpAQCAtMjY3
LDYgKzM4OSwxMCBAQCB2b2lkIEdlb2xvY2F0aW9uOjpzdG9wKCkKICAgICBtX2FsbG93R2VvbG9j
YXRpb24gPSBVbmtub3duOwogICAgIGNhbmNlbEFsbFJlcXVlc3RzKCk7CiAgICAgc3RvcFVwZGF0
aW5nKCk7CisjaWYgUExBVEZPUk0oSU9TKQorICAgIG1faGFzQ2hhbmdlZFBvc2l0aW9uID0gZmFs
c2U7CisgICAgbV9lcnJvcldhaXRpbmdGb3JSZXN1bWUgPSBudWxscHRyOworI2VuZGlmIC8vIFBM
QVRGT1JNKElPUykKICAgICBtX3BlbmRpbmdGb3JQZXJtaXNzaW9uTm90aWZpZXJzLmNsZWFyKCk7
CiB9CiAKQEAgLTQyOSw2ICs1NTUsMTEgQEAgdm9pZCBHZW9sb2NhdGlvbjo6c2V0SXNBbGxvd2Vk
KGJvb2wgYWxsb3dlZCkKICAgICAvLyBwb3NpdGlvbi4KICAgICBtX2FsbG93R2VvbG9jYXRpb24g
PSBhbGxvd2VkID8gWWVzIDogTm87CiAgICAgCisjaWYgUExBVEZPUk0oSU9TKQorICAgIGlmICht
X2lzU3VzcGVuZGVkKQorICAgICAgICByZXR1cm47CisjZW5kaWYKKwogICAgIC8vIFBlcm1pc3Np
b24gcmVxdWVzdCB3YXMgbWFkZSBkdXJpbmcgdGhlIHN0YXJ0UmVxdWVzdCBwcm9jZXNzCiAgICAg
aWYgKCFtX3BlbmRpbmdGb3JQZXJtaXNzaW9uTm90aWZpZXJzLmlzRW1wdHkoKSkgewogICAgICAg
ICBoYW5kbGVQZW5kaW5nUGVybWlzc2lvbk5vdGlmaWVycygpOwpAQCAtNDQxLDYgKzU3MiwxMSBA
QCB2b2lkIEdlb2xvY2F0aW9uOjpzZXRJc0FsbG93ZWQoYm9vbCBhbGxvd2VkKQogICAgICAgICBl
cnJvci0+c2V0SXNGYXRhbCh0cnVlKTsKICAgICAgICAgaGFuZGxlRXJyb3IoZXJyb3IuZ2V0KCkp
OwogICAgICAgICBtX3JlcXVlc3RzQXdhaXRpbmdDYWNoZWRQb3NpdGlvbi5jbGVhcigpOworI2lm
IFBMQVRGT1JNKElPUykKKyAgICAgICAgbV9oYXNDaGFuZ2VkUG9zaXRpb24gPSBmYWxzZTsKKyAg
ICAgICAgbV9lcnJvcldhaXRpbmdGb3JSZXN1bWUgPSBudWxscHRyOworI2VuZGlmCisKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KIApAQCAtNjIwLDExICs3NTYsMjQgQEAgdm9pZCBHZW9sb2NhdGlv
bjo6cG9zaXRpb25DaGFuZ2VkKCkKICAgICAvLyBTdG9wIGFsbCBjdXJyZW50bHkgcnVubmluZyB0
aW1lcnMuCiAgICAgc3RvcFRpbWVycygpOwogCisjaWYgUExBVEZPUk0oSU9TKQorICAgIGlmICht
X2lzU3VzcGVuZGVkKSB7CisgICAgICAgIG1faGFzQ2hhbmdlZFBvc2l0aW9uID0gdHJ1ZTsKKyAg
ICAgICAgcmV0dXJuOworICAgIH0KKyNlbmRpZgorCiAgICAgbWFrZVN1Y2Nlc3NDYWxsYmFja3Mo
KTsKIH0KIAogdm9pZCBHZW9sb2NhdGlvbjo6c2V0RXJyb3IoR2VvbG9jYXRpb25FcnJvciogZXJy
b3IpCiB7CisjaWYgUExBVEZPUk0oSU9TKQorICAgIGlmIChtX2lzU3VzcGVuZGVkKSB7CisgICAg
ICAgIG1fZXJyb3JXYWl0aW5nRm9yUmVzdW1lID0gY3JlYXRlUG9zaXRpb25FcnJvcihlcnJvcik7
CisgICAgICAgIHJldHVybjsKKyAgICB9CisjZW5kaWYKICAgICBSZWZQdHI8UG9zaXRpb25FcnJv
cj4gcG9zaXRpb25FcnJvciA9IGNyZWF0ZVBvc2l0aW9uRXJyb3IoZXJyb3IpOwogICAgIGhhbmRs
ZUVycm9yKHBvc2l0aW9uRXJyb3IuZ2V0KCkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9nZW9sb2NhdGlvbi9HZW9sb2NhdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9nZW9sb2NhdGlvbi9HZW9sb2NhdGlvbi5oCmluZGV4IDU1NjRjMTEyZWI0OWVmNTEzY2I0
YWEzNDNlNzJmOThlMjRkMzE1NTYuLjQ2MWI0MTMxNzQ4NzYzOWRmZjY4ZWUyNThmZmYzYWRkYWEz
OTg2YTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZ2VvbG9jYXRpb24vR2Vv
bG9jYXRpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2dlb2xvY2F0aW9uL0dlb2xv
Y2F0aW9uLmgKQEAgLTU0LDYgKzU0LDEyIEBAIHB1YmxpYzoKICAgICBzdGF0aWMgUGFzc1JlZlB0
cjxHZW9sb2NhdGlvbj4gY3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqKTsKICAgICB+R2Vv
bG9jYXRpb24oKTsKIAorI2lmIFBMQVRGT1JNKElPUykKKyAgICB2aXJ0dWFsIGJvb2wgY2FuU3Vz
cGVuZCgpIGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBzdXNwZW5kKFJlYXNvbkZv
clN1c3BlbnNpb24pIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCByZXN1bWUoKSBPVkVSUklE
RTsKKyAgICB2b2lkIHJlc2V0QWxsR2VvbG9jYXRpb25QZXJtaXNzaW9uKCk7CisjZW5kaWYgLy8g
UExBVEZPUk0oSU9TKQogICAgIERvY3VtZW50KiBkb2N1bWVudCgpIGNvbnN0OwogICAgIEZyYW1l
KiBmcmFtZSgpIGNvbnN0OwogCkBAIC0xNzQsNiArMTgwLDE1IEBAIHByaXZhdGU6CiAgICAgICAg
IFllcywKICAgICAgICAgTm8KICAgICB9IG1fYWxsb3dHZW9sb2NhdGlvbjsKKyNpZiBQTEFURk9S
TShJT1MpCisgICAgYm9vbCBtX2lzU3VzcGVuZGVkOworICAgIGJvb2wgbV9yZXNldE9uUmVzdW1l
OworICAgIGJvb2wgbV9oYXNDaGFuZ2VkUG9zaXRpb247CisgICAgUmVmUHRyPFBvc2l0aW9uRXJy
b3I+IG1fZXJyb3JXYWl0aW5nRm9yUmVzdW1lOworCisgICAgdm9pZCByZXN1bWVUaW1lckZpcmVk
KFRpbWVyPEdlb2xvY2F0aW9uPiopOworICAgIFRpbWVyPEdlb2xvY2F0aW9uPiBtX3Jlc3VtZVRp
bWVyOworI2VuZGlmIC8vIFBMQVRGT1JNKElPUykKIAogICAgIEdlb05vdGlmaWVyU2V0IG1fcmVx
dWVzdHNBd2FpdGluZ0NhY2hlZFBvc2l0aW9uOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvZ2VvbG9jYXRpb24vTmF2aWdhdG9yR2VvbG9jYXRpb24uY3BwIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9nZW9sb2NhdGlvbi9OYXZpZ2F0b3JHZW9sb2NhdGlvbi5jcHAKaW5k
ZXggODhiZDRiOTdjYzU5NjQ5ZjQxZjEyNmQzOGZjYjU3MDU2NGYzZGVkNC4uY2I5ZTk3YTI4ZWI2
ZTg5NjYxY2JlYWNlNDA0ZDllOWIxNDY1NGI5YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9nZW9sb2NhdGlvbi9OYXZpZ2F0b3JHZW9sb2NhdGlvbi5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9nZW9sb2NhdGlvbi9OYXZpZ2F0b3JHZW9sb2NhdGlvbi5jcHAKQEAg
LTU3LDYgKzU3LDE0IEBAIE5hdmlnYXRvckdlb2xvY2F0aW9uKiBOYXZpZ2F0b3JHZW9sb2NhdGlv
bjo6ZnJvbShOYXZpZ2F0b3IqIG5hdmlnYXRvcikKICAgICByZXR1cm4gc3VwcGxlbWVudDsKIH0K
IAorI2lmIFBMQVRGT1JNKElPUykKK3ZvaWQgTmF2aWdhdG9yR2VvbG9jYXRpb246OnJlc2V0QWxs
R2VvbG9jYXRpb25QZXJtaXNzaW9uKCkKK3sKKyAgICBpZiAobV9nZW9sb2NhdGlvbikKKyAgICAg
ICAgbV9nZW9sb2NhdGlvbi0+cmVzZXRBbGxHZW9sb2NhdGlvblBlcm1pc3Npb24oKTsKK30KKyNl
bmRpZiAvLyBQTEFURk9STShJT1MpCisKIEdlb2xvY2F0aW9uKiBOYXZpZ2F0b3JHZW9sb2NhdGlv
bjo6Z2VvbG9jYXRpb24oTmF2aWdhdG9yKiBuYXZpZ2F0b3IpCiB7CiAgICAgcmV0dXJuIE5hdmln
YXRvckdlb2xvY2F0aW9uOjpmcm9tKG5hdmlnYXRvciktPmdlb2xvY2F0aW9uKCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2dlb2xvY2F0aW9uL05hdmlnYXRvckdlb2xvY2F0
aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2dlb2xvY2F0aW9uL05hdmlnYXRvckdlb2xv
Y2F0aW9uLmgKaW5kZXggMDEzMGEyY2YwNmE4MGY0MDkzZDgwNDNkNzdjMjNkZDA2YWNhNzFkYy4u
YzVmNjU0MDAyNWY0MWEwYWRmMWNlOWFjZWJjNTg1YjExMzExNzE3ZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9nZW9sb2NhdGlvbi9OYXZpZ2F0b3JHZW9sb2NhdGlvbi5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZ2VvbG9jYXRpb24vTmF2aWdhdG9yR2VvbG9jYXRp
b24uaApAQCAtMzksNiArMzksMTAgQEAgcHVibGljOgogICAgIHN0YXRpYyBHZW9sb2NhdGlvbiog
Z2VvbG9jYXRpb24oTmF2aWdhdG9yKik7CiAgICAgR2VvbG9jYXRpb24qIGdlb2xvY2F0aW9uKCkg
Y29uc3Q7CiAKKyNpZiBQTEFURk9STShJT1MpCisgICAgdm9pZCByZXNldEFsbEdlb2xvY2F0aW9u
UGVybWlzc2lvbigpOworI2VuZGlmIC8vIFBMQVRGT1JNKElPUykKKwogcHJpdmF0ZToKICAgICBO
YXZpZ2F0b3JHZW9sb2NhdGlvbihGcmFtZSopOwogICAgIHN0YXRpYyBjb25zdCBjaGFyKiBzdXBw
bGVtZW50TmFtZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gv
U3BlZWNoU3ludGhlc2lzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNoL1NwZWVj
aFN5bnRoZXNpcy5jcHAKaW5kZXggZTQ1NjMyYTk0NDFhZTZjMjUwNDIxMmI2MDg4NjI0ZmEzNmNk
YjliNy4uMTBjMzNlYmVkZDA0MDkxODI1OTg0MmFkOGE2ZDQyNjgwNTFhMGQ4NyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNoU3ludGhlc2lzLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9TcGVlY2hTeW50aGVzaXMuY3BwCkBAIC0z
MCw2ICszMCw3IEBACiAKICNpbmNsdWRlICJQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1ZvaWNlLmgi
CiAjaW5jbHVkZSAiUGxhdGZvcm1TcGVlY2hTeW50aGVzaXplci5oIgorI2luY2x1ZGUgIlNjcmlw
dENvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJTcGVlY2hTeW50aGVzaXNFdmVudC5oIgogI2luY2x1
ZGUgIlNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZS5oIgogI2luY2x1ZGUgPHd0Zi9DdXJyZW50VGlt
ZS5oPgpAQCAtNDQsNiArNDUsOSBAQCBQYXNzUmVmUHRyPFNwZWVjaFN5bnRoZXNpcz4gU3BlZWNo
U3ludGhlc2lzOjpjcmVhdGUoKQogU3BlZWNoU3ludGhlc2lzOjpTcGVlY2hTeW50aGVzaXMoKQog
ICAgIDogbV9jdXJyZW50U3BlZWNoVXR0ZXJhbmNlKDApCiAgICAgLCBtX2lzUGF1c2VkKGZhbHNl
KQorI2lmIFBMQVRGT1JNKElPUykKKyAgICAsIG1fcmVzdHJpY3Rpb25zKFJlcXVpcmVVc2VyR2Vz
dHVyZUZvclNwZWVjaFN0YXJ0UmVzdHJpY3Rpb24pCisjZW5kaWYKIHsKIH0KICAgICAKQEAgLTEx
Miw2ICsxMTYsMTQgQEAgdm9pZCBTcGVlY2hTeW50aGVzaXM6OnNwZWFrKFNwZWVjaFN5bnRoZXNp
c1V0dGVyYW5jZSogdXR0ZXJhbmNlKQogewogICAgIGlmICghdXR0ZXJhbmNlKQogICAgICAgICBy
ZXR1cm47CisgCisgICAgLy8gTGlrZSBBdWRpbywgd2Ugc2hvdWxkIHJlcXVpcmUgdGhhdCB0aGUg
dXNlciBpbnRlcmFjdCB0byBzdGFydCBhIHNwZWVjaCBzeW50aGVzaXMgc2Vzc2lvbi4KKyNpZiBQ
TEFURk9STShJT1MpCisgICAgaWYgKFNjcmlwdENvbnRyb2xsZXI6OnByb2Nlc3NpbmdVc2VyR2Vz
dHVyZSgpKQorICAgICAgICByZW1vdmVCZWhhdmlvclJlc3RyaWN0aW9uKFJlcXVpcmVVc2VyR2Vz
dHVyZUZvclNwZWVjaFN0YXJ0UmVzdHJpY3Rpb24pOworICAgIGVsc2UgaWYgKHVzZXJHZXN0dXJl
UmVxdWlyZWRGb3JTcGVlY2hTdGFydCgpKQorICAgICAgICByZXR1cm47CisjZW5kaWYKICAgICAK
ICAgICBtX3V0dGVyYW5jZVF1ZXVlLmFwcGVuZCh1dHRlcmFuY2UpOwogICAgIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNoU3ludGhlc2lzLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9TcGVlY2hTeW50aGVzaXMuaAppbmRleCA5Yzc4N2Ew
NzNhMWIxY2MwZWU1NzY2NzRkYzk1ZDUzZWM5ODBiODA3Li5jZTFlNDdjOWM0N2VjMWY4ZDMxMjMx
ZDVhMzA2MDM1OThhNWJlMzljIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3Nw
ZWVjaC9TcGVlY2hTeW50aGVzaXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVj
aC9TcGVlY2hTeW50aGVzaXMuaApAQCAtNzYsMTEgKzc2LDI2IEBAIHByaXZhdGU6CiAgICAgdm9p
ZCBoYW5kbGVTcGVha2luZ0NvbXBsZXRlZChTcGVlY2hTeW50aGVzaXNVdHRlcmFuY2UqLCBib29s
IGVycm9yT2NjdXJyZWQpOwogICAgIHZvaWQgZmlyZUV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYg
dHlwZSwgU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlKiwgdW5zaWduZWQgbG9uZyBjaGFySW5kZXgs
IGNvbnN0IFN0cmluZyYgbmFtZSk7CiAgICAgCisjaWYgUExBVEZPUk0oSU9TKQorICAgIC8vIFJl
c3RyaWN0aW9ucyB0byBjaGFuZ2UgZGVmYXVsdCBiZWhhdmlvcnMuCisgICAgZW51bSBCZWhhdmlv
clJlc3RyaWN0aW9uRmxhZ3MgeworICAgICAgICBOb1Jlc3RyaWN0aW9ucyA9IDAsCisgICAgICAg
IFJlcXVpcmVVc2VyR2VzdHVyZUZvclNwZWVjaFN0YXJ0UmVzdHJpY3Rpb24gPSAxIDw8IDAsCisg
ICAgfTsKKyAgICB0eXBlZGVmIHVuc2lnbmVkIEJlaGF2aW9yUmVzdHJpY3Rpb25zOworICAgIAor
ICAgIGJvb2wgdXNlckdlc3R1cmVSZXF1aXJlZEZvclNwZWVjaFN0YXJ0KCkgY29uc3QgeyByZXR1
cm4gbV9yZXN0cmljdGlvbnMgJiBSZXF1aXJlVXNlckdlc3R1cmVGb3JTcGVlY2hTdGFydFJlc3Ry
aWN0aW9uOyB9CisgICAgdm9pZCByZW1vdmVCZWhhdmlvclJlc3RyaWN0aW9uKEJlaGF2aW9yUmVz
dHJpY3Rpb25zIHJlc3RyaWN0aW9uKSB7IG1fcmVzdHJpY3Rpb25zICY9IH5yZXN0cmljdGlvbjsg
fQorI2VuZGlmCisgICAgCiAgICAgT3duUHRyPFBsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXI+IG1f
cGxhdGZvcm1TcGVlY2hTeW50aGVzaXplcjsKICAgICBWZWN0b3I8UmVmUHRyPFNwZWVjaFN5bnRo
ZXNpc1ZvaWNlPj4gbV92b2ljZUxpc3Q7CiAgICAgU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlKiBt
X2N1cnJlbnRTcGVlY2hVdHRlcmFuY2U7CiAgICAgRGVxdWU8UmVmUHRyPFNwZWVjaFN5bnRoZXNp
c1V0dGVyYW5jZT4+IG1fdXR0ZXJhbmNlUXVldWU7CiAgICAgYm9vbCBtX2lzUGF1c2VkOworI2lm
IFBMQVRGT1JNKElPUykKKyAgICBCZWhhdmlvclJlc3RyaWN0aW9ucyBtX3Jlc3RyaWN0aW9uczsK
KyNlbmRpZgogfTsKICAgICAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0LmNwcAppbmRleCAyMDczY2Q3Y2E2
NzA0Zjk5ZGM0ZTVjNzI4YzRhODJmYmRmZjRjYmE1Li4wZjJlZTdmZWRkMmUxYWZiZTk2MmRmNmZi
ZjFmMGY5NGNmMzgyNDcwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1
ZGlvL0F1ZGlvQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRp
by9BdWRpb0NvbnRleHQuY3BwCkBAIC04MCw2ICs4MCwxMSBAQAogI2luY2x1ZGUgIkdTdHJlYW1l
clV0aWxpdGllcy5oIgogI2VuZGlmCiAKKyNpZiBQTEFURk9STShJT1MpCisjaW5jbHVkZSAiU2Ny
aXB0Q29udHJvbGxlci5oIgorI2luY2x1ZGUgIlNldHRpbmdzLmgiCisjZW5kaWYKKwogI2luY2x1
ZGUgPHJ1bnRpbWUvQXJyYXlCdWZmZXIuaD4KICNpbmNsdWRlIDx3dGYvQXRvbWljcy5oPgogI2lu
Y2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmF1ZGlvL0F1ZGlvQ29udGV4dC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJh
dWRpby9BdWRpb0NvbnRleHQuaAppbmRleCBkNDFhOTc0N2Q2YzE2Mjc5YTk0NzEwZWM0ZDU0YjZj
OTgxOWVlNDkxLi5jMjZiYmI4NmE4YjEzZDgxYWQzZmE1YzY4YTI5ZDRhMzRiMTJiNmIwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQ29udGV4dC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0LmgKQEAgLTk2
LDcgKzk2LDYgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBzdG9wKCkgT1ZFUlJJREU7CiAK
ICAgICBEb2N1bWVudCogZG9jdW1lbnQoKSBjb25zdDsgLy8gQVNTRVJUcyBpZiBkb2N1bWVudCBu
byBsb25nZXIgZXhpc3RzLgotICAgIGJvb2wgaGFzRG9jdW1lbnQoKTsKIAogICAgIEF1ZGlvRGVz
dGluYXRpb25Ob2RlKiBkZXN0aW5hdGlvbigpIHsgcmV0dXJuIG1fZGVzdGluYXRpb25Ob2RlLmdl
dCgpOyB9CiAgICAgc2l6ZV90IGN1cnJlbnRTYW1wbGVGcmFtZSgpIGNvbnN0IHsgcmV0dXJuIG1f
ZGVzdGluYXRpb25Ob2RlLT5jdXJyZW50U2FtcGxlRnJhbWUoKTsgfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1NjaGVkdWxlZFNvdXJjZU5vZGUuY3Bw
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1NjaGVkdWxlZFNvdXJjZU5v
ZGUuY3BwCmluZGV4IDY3YzAzNTk5ZTQzM2YzNmJhNzcxMDljMDRlMTM3M2E2NDMxMjZhZTAuLjBk
YzJhODI5YThhMzIyZDBjZjhiZGM4NTQ1MDg3NzQxZjhjZGRhZTggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9TY2hlZHVsZWRTb3VyY2VOb2RlLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvU2NoZWR1bGVkU291cmNl
Tm9kZS5jcHAKQEAgLTM1LDYgKzM1LDEwIEBACiAjaW5jbHVkZSA8YWxnb3JpdGhtPgogI2luY2x1
ZGUgPHd0Zi9NYXRoRXh0cmFzLmg+CiAKKyNpZiBQTEFURk9STShJT1MpCisjaW5jbHVkZSAiU2Ny
aXB0Q29udHJvbGxlci5oIgorI2VuZGlmCisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY29uc3Qg
ZG91YmxlIEF1ZGlvU2NoZWR1bGVkU291cmNlTm9kZTo6VW5rbm93blRpbWUgPSAtMTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2UuY3BwIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZS5jcHAKaW5kZXggODY5
Yzg1ZjBkNzBiM2M5NmVhNmE4MDc1NTU5ZmRjMjM0ZmJlZWMxOC4uZTE4Mjc5NWJlOWE4MThmM2I0
MjBlNTBkY2U4NGNkMTRmMWI5ODA0ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJkYXRhYmFzZS9EYXRhYmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJkYXRhYmFzZS9EYXRhYmFzZS5jcHAKQEAgLTYwLDYgKzYwLDEwIEBACiAjaW5jbHVkZSA8d3Rm
L1N0ZExpYkV4dHJhcy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KIAorI2lmIFBM
QVRGT1JNKElPUykKKyNpbmNsdWRlICJTUUxpdGVEYXRhYmFzZVRyYWNrZXIuaCIKKyNlbmRpZgor
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFBhc3NSZWZQdHI8RGF0YWJhc2U+IERhdGFiYXNlOjpj
cmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFBhc3NSZWZQdHI8RGF0YWJhc2VCYWNrZW5k
QmFzZT4gYmFja2VuZCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0
YWJhc2UvRGF0YWJhc2VCYWNrZW5kQmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmRhdGFiYXNlL0RhdGFiYXNlQmFja2VuZEJhc2UuY3BwCmluZGV4IDVhOWY3MWUxYmE5ODVlYzVm
ZmM5NGMyZmY0MDI5NDViY2FmMTAzMGYuLjc0NWQ1NjNhMDhlOTkwMjFlYWNhMGZiYWJkOWYxMjQy
NjZjMjZmYWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2Uv
RGF0YWJhc2VCYWNrZW5kQmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJk
YXRhYmFzZS9EYXRhYmFzZUJhY2tlbmRCYXNlLmNwcApAQCAtNTIsNiArNTIsMTAgQEAKICNpbmNs
dWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nSGFzaC5o
PgogCisjaWYgUExBVEZPUk0oSU9TKQorI2luY2x1ZGUgIlNRTGl0ZURhdGFiYXNlVHJhY2tlci5o
IgorI2VuZGlmCisKIC8vIFJlZ2lzdGVyaW5nICJvcGVuZWQiIGRhdGFiYXNlcyB3aXRoIHRoZSBE
YXRhYmFzZVRyYWNrZXIKIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KIC8vIFRoZSBEYXRhYmFzZVRyYWNrZXIgbWFpbnRhaW5zIGEgbGlz
dCBvZiBkYXRhYmFzZXMgdGhhdCBoYXZlIGJlZW4KQEAgLTMxNCw2ICszMTgsMTQgQEAgYm9vbCBE
YXRhYmFzZUJhY2tlbmRCYXNlOjpwZXJmb3JtT3BlbkFuZFZlcmlmeShib29sIHNob3VsZFNldFZl
cnNpb25Jbk5ld0RhdGFiYXMKIAogICAgIGNvbnN0IGludCBtYXhTcWxpdGVCdXN5V2FpdFRpbWUg
PSAzMDAwMDsKIAorI2lmIFBMQVRGT1JNKElPUykKKyAgICB7CisgICAgICAgIC8vIE1ha2Ugc3Vy
ZSB3ZSB3YWl0IHRpbGwgdGhlIGJhY2tncm91bmQgcmVtb3ZhbCBvZiB0aGUgZW1wdHkgZGF0YWJh
c2UgZmlsZXMgZmluaXNoZWQgYmVmb3JlIHRyeWluZyB0byBvcGVuIGFueSBkYXRhYmFzZS4KKyAg
ICAgICAgTXV0ZXhMb2NrZXIgbG9ja2VyKERhdGFiYXNlVHJhY2tlcjo6b3BlbkRhdGFiYXNlTXV0
ZXgoKSk7CisgICAgfQorICAgIFNRTGl0ZVRyYW5zYWN0aW9uSW5Qcm9ncmVzc0F1dG9Db3VudGVy
IHRyYW5zYWN0aW9uQ291bnRlcjsKKyNlbmRpZgorCiAgICAgaWYgKCFtX3NxbGl0ZURhdGFiYXNl
Lm9wZW4obV9maWxlbmFtZSwgdHJ1ZSkpIHsKICAgICAgICAgZXJyb3JNZXNzYWdlID0gZm9ybWF0
RXJyb3JNZXNzYWdlKCJ1bmFibGUgdG8gb3BlbiBkYXRhYmFzZSIsIG1fc3FsaXRlRGF0YWJhc2Uu
bGFzdEVycm9yKCksIG1fc3FsaXRlRGF0YWJhc2UubGFzdEVycm9yTXNnKCkpOwogICAgICAgICBy
ZXR1cm4gZmFsc2U7CkBAIC01NjQsNiArNTc2LDkgQEAgdW5zaWduZWQgbG9uZyBsb25nIERhdGFi
YXNlQmFja2VuZEJhc2U6Om1heGltdW1TaXplKCkgY29uc3QKIAogdm9pZCBEYXRhYmFzZUJhY2tl
bmRCYXNlOjppbmNyZW1lbnRhbFZhY3V1bUlmTmVlZGVkKCkKIHsKKyNpZiBQTEFURk9STShJT1Mp
CisgICAgU1FMaXRlVHJhbnNhY3Rpb25JblByb2dyZXNzQXV0b0NvdW50ZXIgdHJhbnNhY3Rpb25D
b3VudGVyOworI2VuZGlmCiAgICAgaW50NjRfdCBmcmVlU3BhY2VTaXplID0gbV9zcWxpdGVEYXRh
YmFzZS5mcmVlU3BhY2VTaXplKCk7CiAgICAgaW50NjRfdCB0b3RhbFNpemUgPSBtX3NxbGl0ZURh
dGFiYXNlLnRvdGFsU2l6ZSgpOwogICAgIGlmICh0b3RhbFNpemUgPD0gMTAgKiBmcmVlU3BhY2VT
aXplKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0Rh
dGFiYXNlQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0Rh
dGFiYXNlQ29udGV4dC5jcHAKaW5kZXggMjViN2FhMGY3MDBiOTAzNzE4YTk3NjUyYWNmOTM1ZWNm
YmM5NjgzYS4uNzUyZTI5ZTQ4MGI1Zjk5OTU4NmVlMTM2Zjg3MjE1MTNiMWUwNGQwZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZUNvbnRleHQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VDb250
ZXh0LmNwcApAQCAtMTAyLDYgKzEwMiw5IEBAIERhdGFiYXNlQ29udGV4dDo6RGF0YWJhc2VDb250
ZXh0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQpCiAgICAgLCBtX2hhc09wZW5EYXRh
YmFzZXMoZmFsc2UpCiAgICAgLCBtX2lzUmVnaXN0ZXJlZCh0cnVlKSAvLyB3aWxsIHJlZ2lzdGVy
IG9uIGNvbnN0cnVjdGlvbiBiZWxvdy4KICAgICAsIG1faGFzUmVxdWVzdGVkVGVybWluYXRpb24o
ZmFsc2UpCisjaWYgUExBVEZPUk0oSU9TKQorICAgICwgbV9wYXVzZWQoZmFsc2UpCisjZW5kaWYg
Ly9QTEFURk9STShJT1MpCiB7CiAgICAgLy8gQWN0aXZlRE9NT2JqZWN0IGV4cGVjdHMgdGhpcyB0
byBiZSBjYWxsZWQgdG8gc2V0IGludGVybmFsIGZsYWdzLgogICAgIHN1c3BlbmRJZk5lZWRlZCgp
OwpAQCAtMTYxLDYgKzE2NCw5IEBAIFBhc3NSZWZQdHI8RGF0YWJhc2VCYWNrZW5kQ29udGV4dD4g
RGF0YWJhc2VDb250ZXh0OjpiYWNrZW5kKCkKIERhdGFiYXNlVGhyZWFkKiBEYXRhYmFzZUNvbnRl
eHQ6OmRhdGFiYXNlVGhyZWFkKCkKIHsKICAgICBpZiAoIW1fZGF0YWJhc2VUaHJlYWQgJiYgIW1f
aGFzT3BlbkRhdGFiYXNlcykgeworI2lmIFBMQVRGT1JNKElPUykKKyAgICAgICAgTXV0ZXhMb2Nr
ZXIgbG9jayhtX2RhdGFiYXNlVGhyZWFkTXV0ZXgpOworI2VuZGlmIC8vUExBVEZPUk0oSU9TKQog
ICAgICAgICAvLyBJdCdzIE9LIHRvIGFzayBmb3IgdGhlIG1fZGF0YWJhc2VUaHJlYWQgYWZ0ZXIg
d2UndmUgcmVxdWVzdGVkCiAgICAgICAgIC8vIHRlcm1pbmF0aW9uIGJlY2F1c2Ugd2UncmUgc3Rp
bGwgdXNpbmcgaXQgdG8gZXhlY3V0ZSB0aGUgY2xvc2luZwogICAgICAgICAvLyBvZiB0aGUgZGF0
YWJhc2UuIEhvd2V2ZXIsIGl0IGlzIE5PVCBPSyB0byBjcmVhdGUgYSBuZXcgdGhyZWFkCkBAIC0x
NzIsMTEgKzE3OCwyNiBAQCBEYXRhYmFzZVRocmVhZCogRGF0YWJhc2VDb250ZXh0OjpkYXRhYmFz
ZVRocmVhZCgpCiAgICAgICAgIG1fZGF0YWJhc2VUaHJlYWQgPSBEYXRhYmFzZVRocmVhZDo6Y3Jl
YXRlKCk7CiAgICAgICAgIGlmICghbV9kYXRhYmFzZVRocmVhZC0+c3RhcnQoKSkKICAgICAgICAg
ICAgIG1fZGF0YWJhc2VUaHJlYWQgPSAwOworI2lmIFBMQVRGT1JNKElPUykKKyAgICAgICAgaWYg
KG1fZGF0YWJhc2VUaHJlYWQpCisgICAgICAgICAgICBtX2RhdGFiYXNlVGhyZWFkLT5zZXRQYXVz
ZWQobV9wYXVzZWQpOworI2VuZGlmIC8vUExBVEZPUk0oSU9TKQogICAgIH0KIAogICAgIHJldHVy
biBtX2RhdGFiYXNlVGhyZWFkLmdldCgpOwogfQogCisjaWYgUExBVEZPUk0oSU9TKQordm9pZCBE
YXRhYmFzZUNvbnRleHQ6OnNldFBhdXNlZChib29sIHBhdXNlZCkKK3sKKyAgICBNdXRleExvY2tl
ciBsb2NrKG1fZGF0YWJhc2VUaHJlYWRNdXRleCk7CisKKyAgICBtX3BhdXNlZCA9IHBhdXNlZDsK
KyAgICBpZiAobV9kYXRhYmFzZVRocmVhZCkKKyAgICAgICAgbV9kYXRhYmFzZVRocmVhZC0+c2V0
UGF1c2VkKG1fcGF1c2VkKTsKK30KKyNlbmRpZiAvLyBQTEFURk9STShJT1MpCisKIGJvb2wgRGF0
YWJhc2VDb250ZXh0OjpzdG9wRGF0YWJhc2VzKERhdGFiYXNlVGFza1N5bmNocm9uaXplciogY2xl
YW51cFN5bmMpCiB7CiAgICAgaWYgKG1faXNSZWdpc3RlcmVkKSB7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlQ29udGV4dC5oIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZUNvbnRleHQuaAppbmRleCBlYTEz
NjAwM2EwMDIzMTlkYjA3NzZiZDhkNDk2YTVmYWMyODc2NmVkLi40ODUxMGQzZDA3NGE5ODg5NzUw
MThkYWM4M2ZjNjFmZDVhNGNhNWI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmRhdGFiYXNlL0RhdGFiYXNlQ29udGV4dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VDb250ZXh0LmgKQEAgLTM1LDYgKzM1LDEwIEBACiAjaW5j
bHVkZSA8d3RmL0Fzc2VydGlvbnMuaD4KICNpbmNsdWRlIDx3dGYvVGhyZWFkU2FmZVJlZkNvdW50
ZWQuaD4KIAorI2lmIFBMQVRGT1JNKElPUykKKyNpbmNsdWRlIDx3dGYvVGhyZWFkaW5nLmg+Cisj
ZW5kaWYgLy8gUExBVEZPUk0oSU9TKQorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIERh
dGFiYXNlOwpAQCAtNTMsNiArNTcsOSBAQCBwdWJsaWM6CiAKICAgICBQYXNzUmVmUHRyPERhdGFi
YXNlQmFja2VuZENvbnRleHQ+IGJhY2tlbmQoKTsKICAgICBEYXRhYmFzZVRocmVhZCogZGF0YWJh
c2VUaHJlYWQoKTsKKyNpZiBQTEFURk9STShJT1MpCisgICAgdm9pZCBzZXRQYXVzZWQoYm9vbCk7
CisjZW5kaWYgLy8gUExBVEZPUk0oSU9TKQogCiAgICAgdm9pZCBzZXRIYXNPcGVuRGF0YWJhc2Vz
KCkgeyBtX2hhc09wZW5EYXRhYmFzZXMgPSB0cnVlOyB9CiAgICAgYm9vbCBoYXNPcGVuRGF0YWJh
c2VzKCkgeyByZXR1cm4gbV9oYXNPcGVuRGF0YWJhc2VzOyB9CkBAIC03NSw2ICs4MiwxMSBAQCBw
cml2YXRlOgogCiAgICAgZnJpZW5kIGNsYXNzIERhdGFiYXNlQmFja2VuZENvbnRleHQ7CiAgICAg
ZnJpZW5kIGNsYXNzIERhdGFiYXNlTWFuYWdlcjsKKworI2lmIFBMQVRGT1JNKElPUykKKyAgICBN
dXRleCBtX2RhdGFiYXNlVGhyZWFkTXV0ZXg7CisgICAgYm9vbCBtX3BhdXNlZDsKKyNlbmRpZiAv
LyBQTEFURk9STShJT1MpCiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlTWFuYWdlckNsaWVu
dC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZU1hbmFnZXJD
bGllbnQuaAppbmRleCBmNGRhNTQ2ZTNkYjYyNjUwNGE4YTU0M2M2ZjFkOTA2ZWRjZThjZWE3Li5h
ZmM2OWY4Y2I1YTU3MmYwMmNiMTM5ZmVkOGViOTBhZDRhOWU0ODVhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlTWFuYWdlckNsaWVudC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VNYW5hZ2VyQ2xp
ZW50LmgKQEAgLTM4LDYgKzM4LDEyIEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5EYXRhYmFzZU1h
bmFnZXJDbGllbnQoKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRNb2RpZnlPcmln
aW4oU2VjdXJpdHlPcmlnaW4qKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkTW9k
aWZ5RGF0YWJhc2UoU2VjdXJpdHlPcmlnaW4qLCBjb25zdCBTdHJpbmcmIGRhdGFiYXNlTmFtZSkg
PSAwOworCisjaWYgUExBVEZPUk0oSU9TKQorICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZEFk
ZE5ld09yaWdpbihTZWN1cml0eU9yaWdpbiopID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0
Y2hEaWREZWxldGVEYXRhYmFzZSgpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRE
ZWxldGVEYXRhYmFzZU9yaWdpbigpID0gMDsKKyNlbmRpZgogfTsKIAogfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9E
YXRhYmFzZVRhc2suY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRh
YmFzZVRhc2suY3BwCmluZGV4IDdiNzk0Njg4NzVmZDcyMjU4M2NiNGUwZjljMDlhZjFhZjFlNDRk
YzguLjhjZjhlYTIxYTc3OGQyMjQyN2U4MjM4ZWNlNzY5ODM2YWU2NzJmNDIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VUYXNrLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlVGFzay5jcHAKQEAg
LTg1LDcgKzg1LDEzIEBAIHZvaWQgRGF0YWJhc2VUYXNrOjpwZXJmb3JtVGFzaygpCiAKICAgICBM
T0coU3RvcmFnZUFQSSwgIlBlcmZvcm1pbmcgJXMgJXBcbiIsIGRlYnVnVGFza05hbWUoKSwgdGhp
cyk7CiAKKyNpZiAhUExBVEZPUk0oSU9TKQogICAgIG1fZGF0YWJhc2UtPnJlc2V0QXV0aG9yaXpl
cigpOworI2Vsc2UKKyAgICBpZiAobV9kYXRhYmFzZSkKKyAgICAgICAgbV9kYXRhYmFzZS0+cmVz
ZXRBdXRob3JpemVyKCk7CisjZW5kaWYKKwogICAgIGRvUGVyZm9ybVRhc2soKTsKIAogICAgIGlm
IChtX3N5bmNocm9uaXplcikKQEAgLTE2OCw2ICsxNzQsMTMgQEAgRGF0YWJhc2VCYWNrZW5kOjpE
YXRhYmFzZVRyYW5zYWN0aW9uVGFzazo6fkRhdGFiYXNlVHJhbnNhY3Rpb25UYXNrKCkKICAgICAg
ICAgbV90cmFuc2FjdGlvbi0+bm90aWZ5RGF0YWJhc2VUaHJlYWRJc1NodXR0aW5nRG93bigpOwog
fQogCisjaWYgUExBVEZPUk0oSU9TKQorYm9vbCBEYXRhYmFzZTo6RGF0YWJhc2VUcmFuc2FjdGlv
blRhc2s6OnNob3VsZFBlcmZvcm1XaGlsZVBhdXNlZCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1f
dHJhbnNhY3Rpb24tPnNob3VsZFBlcmZvcm1XaGlsZVBhdXNlZCgpOworfQorI2VuZGlmCisKIHZv
aWQgRGF0YWJhc2VCYWNrZW5kOjpEYXRhYmFzZVRyYW5zYWN0aW9uVGFzazo6ZG9QZXJmb3JtVGFz
aygpCiB7CiAgICAgbV90cmFuc2FjdGlvbi0+cGVyZm9ybU5leHRTdGVwKCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlVGFzay5oIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZVRhc2suaAppbmRleCBiM2E1
NTA4NjdjMDY5ZmU3N2JiZTEwZmQ4ZTU2Yzk0YmU2YTRiYjc5Li5mNmZjZWQ1YmM4N2QwYjc5NDQx
MGNmZDExNTVhODNhNDI2NWY3NWE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmRhdGFiYXNlL0RhdGFiYXNlVGFzay5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViZGF0YWJhc2UvRGF0YWJhc2VUYXNrLmgKQEAgLTc1LDYgKzc1LDEwIEBAIGNsYXNzIERhdGFi
YXNlVGFzayB7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB+RGF0YWJhc2VUYXNrKCk7CiAKKyNpZiBQ
TEFURk9STShJT1MpCisgICAgdmlydHVhbCBib29sIHNob3VsZFBlcmZvcm1XaGlsZVBhdXNlZCgp
IGNvbnN0ID0gMDsKKyNlbmRpZgorCiAgICAgdm9pZCBwZXJmb3JtVGFzaygpOwogCiAgICAgRGF0
YWJhc2VCYWNrZW5kKiBkYXRhYmFzZSgpIGNvbnN0IHsgcmV0dXJuIG1fZGF0YWJhc2U7IH0KQEAg
LTEwNCw2ICsxMDgsMTAgQEAgcHVibGljOgogICAgIHsKICAgICAgICAgcmV0dXJuIHN0ZDo6dW5p
cXVlX3B0cjxEYXRhYmFzZU9wZW5UYXNrPihuZXcgRGF0YWJhc2VPcGVuVGFzayhkYiwgc2V0VmVy
c2lvbkluTmV3RGF0YWJhc2UsIHN5bmNocm9uaXplciwgZXJyb3IsIGVycm9yTWVzc2FnZSwgc3Vj
Y2VzcykpOwogICAgIH0KKyAgICAKKyNpZiBQTEFURk9STShJT1MpCisgICAgdmlydHVhbCBib29s
IHNob3VsZFBlcmZvcm1XaGlsZVBhdXNlZCgpIGNvbnN0IE9WRVJSSURFIHsgcmV0dXJuIHRydWU7
IH0KKyNlbmRpZgogCiBwcml2YXRlOgogICAgIERhdGFiYXNlT3BlblRhc2soRGF0YWJhc2VCYWNr
ZW5kKiwgYm9vbCBzZXRWZXJzaW9uSW5OZXdEYXRhYmFzZSwgRGF0YWJhc2VUYXNrU3luY2hyb25p
emVyKiwgRGF0YWJhc2VFcnJvciYsIFN0cmluZyYgZXJyb3JNZXNzYWdlLCBib29sJiBzdWNjZXNz
KTsKQEAgLTEyNiw2ICsxMzQsMTAgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gc3RkOjp1bmlx
dWVfcHRyPERhdGFiYXNlQ2xvc2VUYXNrPihuZXcgRGF0YWJhc2VDbG9zZVRhc2soZGIsIHN5bmNo
cm9uaXplcikpOwogICAgIH0KIAorI2lmIFBMQVRGT1JNKElPUykKKyAgICB2aXJ0dWFsIGJvb2wg
c2hvdWxkUGVyZm9ybVdoaWxlUGF1c2VkKCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4gdHJ1ZTsg
fQorI2VuZGlmCisKIHByaXZhdGU6CiAgICAgRGF0YWJhc2VDbG9zZVRhc2soRGF0YWJhc2VCYWNr
ZW5kKiwgRGF0YWJhc2VUYXNrU3luY2hyb25pemVyKik7CiAKQEAgLTE0NSw2ICsxNTcsMTAgQEAg
cHVibGljOgogICAgICAgICByZXR1cm4gc3RkOjp1bmlxdWVfcHRyPERhdGFiYXNlVHJhbnNhY3Rp
b25UYXNrPihuZXcgRGF0YWJhc2VUcmFuc2FjdGlvblRhc2sodHJhbnNhY3Rpb24pKTsKICAgICB9
CiAKKyNpZiBQTEFURk9STShJT1MpCisgICAgdmlydHVhbCBib29sIHNob3VsZFBlcmZvcm1XaGls
ZVBhdXNlZCgpIGNvbnN0IE9WRVJSSURFOworI2VuZGlmCisKICAgICBTUUxUcmFuc2FjdGlvbkJh
Y2tlbmQqIHRyYW5zYWN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV90cmFuc2FjdGlvbi5nZXQoKTsg
fQogCiBwcml2YXRlOgpAQCAtMTY2LDYgKzE4MiwxMCBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVy
biBzdGQ6OnVuaXF1ZV9wdHI8RGF0YWJhc2VUYWJsZU5hbWVzVGFzaz4obmV3IERhdGFiYXNlVGFi
bGVOYW1lc1Rhc2soZGIsIHN5bmNocm9uaXplciwgbmFtZXMpKTsKICAgICB9CiAKKyNpZiBQTEFU
Rk9STShJT1MpCisgICAgdmlydHVhbCBib29sIHNob3VsZFBlcmZvcm1XaGlsZVBhdXNlZCgpIGNv
bnN0IE9WRVJSSURFIHsgcmV0dXJuIHRydWU7IH0KKyNlbmRpZgorCiBwcml2YXRlOgogICAgIERh
dGFiYXNlVGFibGVOYW1lc1Rhc2soRGF0YWJhc2VCYWNrZW5kKiwgRGF0YWJhc2VUYXNrU3luY2hy
b25pemVyKiwgVmVjdG9yPFN0cmluZz4mIG5hbWVzKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZVRocmVhZC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlVGhyZWFkLmNwcAppbmRleCBlMGQ0Nzk2
ZWYzZTZlNmQ0M2JhYTI3ZTkxNDlhZTVmOTczMjhlOTczLi43ZWU3NjRjYTBlZGVjZTI1YTk2YTdj
ZjU4YWIwMzRhMDYyY2I0ZmFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmRhdGFiYXNlL0RhdGFiYXNlVGhyZWFkLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmRhdGFiYXNlL0RhdGFiYXNlVGhyZWFkLmNwcApAQCAtNDIsNiArNDIsOSBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKIERhdGFiYXNlVGhyZWFkOjpEYXRhYmFzZVRocmVhZCgpCiAgICAgOiBt
X3RocmVhZElEKDApCisjaWYgUExBVEZPUk0oSU9TKQorICAgICwgbV9wYXVzZWQoZmFsc2UpCisj
ZW5kaWYKICAgICAsIG1fdHJhbnNhY3Rpb25DbGllbnQoYWRvcHRQdHIobmV3IFNRTFRyYW5zYWN0
aW9uQ2xpZW50KCkpKQogICAgICwgbV90cmFuc2FjdGlvbkNvb3JkaW5hdG9yKGFkb3B0UHRyKG5l
dyBTUUxUcmFuc2FjdGlvbkNvb3JkaW5hdG9yKCkpKQogICAgICwgbV9jbGVhbnVwU3luYygwKQpA
QCAtNzcsNiArODAsOSBAQCB2b2lkIERhdGFiYXNlVGhyZWFkOjpyZXF1ZXN0VGVybWluYXRpb24o
RGF0YWJhc2VUYXNrU3luY2hyb25pemVyICpjbGVhbnVwU3luYykKIHsKICAgICBtX2NsZWFudXBT
eW5jID0gY2xlYW51cFN5bmM7CiAgICAgTE9HKFN0b3JhZ2VBUEksICJEYXRhYmFzZVRocmVhZCAl
cCB3YXMgYXNrZWQgdG8gdGVybWluYXRlXG4iLCB0aGlzKTsKKyNpZiBQTEFURk9STShJT1MpCisg
ICAgbV9wYXVzZWRRdWV1ZS5raWxsKCk7CisjZW5kaWYKICAgICBtX3F1ZXVlLmtpbGwoKTsKIH0K
IApAQCAtOTgsNiArMTA0LDgwIEBAIHZvaWQgRGF0YWJhc2VUaHJlYWQ6OmRhdGFiYXNlVGhyZWFk
U3RhcnQodm9pZCogdkRhdGFiYXNlVGhyZWFkKQogICAgIGRiVGhyZWFkLT5kYXRhYmFzZVRocmVh
ZCgpOwogfQogCisjaWYgUExBVEZPUk0oSU9TKQorY2xhc3MgRGF0YWJhc2VVbnBhdXNlVGFzayA6
IHB1YmxpYyBEYXRhYmFzZVRhc2sgeworcHVibGljOgorICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9w
dHI8RGF0YWJhc2VVbnBhdXNlVGFzaz4gY3JlYXRlKERhdGFiYXNlVGhyZWFkKiB0aHJlYWQpCisg
ICAgeworICAgICAgICByZXR1cm4gc3RkOjp1bmlxdWVfcHRyPERhdGFiYXNlVW5wYXVzZVRhc2s+
KG5ldyBEYXRhYmFzZVVucGF1c2VUYXNrKHRocmVhZCkpOworICAgIH0KKyAgICAKKyAgICB2aXJ0
dWFsIGJvb2wgc2hvdWxkUGVyZm9ybVdoaWxlUGF1c2VkKCkgY29uc3QgCisgICAgeworICAgICAg
ICAvLyBTaW5jZSB3ZSdyZSBub3QgbG9ja2luZyB0aGUgRGF0YWJhc2VUaHJlYWQ6Om1fcGF1c2Vk
IGluIHRoZSBtYWluIGRhdGFiYXNlIHRocmVhZCBsb29wLCBpdCdzIHBvc3NpYmxlIHRoYXQKKyAg
ICAgICAgLy8gYSBEYXRhYmFzZVVucGF1c2VUYXNrIG1pZ2h0IGJlIGFkZGVkIHRvIHRoZSBtX3Bh
dXNlZFF1ZXVlIGFuZCBwZXJmb3JtZWQgZnJvbSB3aXRoaW4gOjpoYW5kbGVQYXVzZWRRdWV1ZS4K
KyAgICAgICAgLy8gVG8gcHJvdGVjdCBhZ2FpbnN0IHRoaXMsIHdlIGFsbG93IGl0IHRvIGJlIHBl
cmZvcm1lZCBldmVuIGlmIHRoZSBkYXRhYmFzZSBpcyBwYXVzZWQuCisgICAgICAgIC8vIElmIHRo
ZSB0aHJlYWQgaXMgcGF1c2VkIHdoZW4gaXQgaXMgYmVpbmcgcGVyZm9ybWVkLCB0aGUgdGFza3Mg
ZnJvbSB0aGUgcGF1c2VkIHF1ZXVlIHdpbGwgc2ltcGx5IGJlCisgICAgICAgIC8vIHJlcXVldWVk
IGluc3RlYWQgb2YgcGVyZm9ybWVkLgorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisKK3By
aXZhdGU6CisgICAgRGF0YWJhc2VVbnBhdXNlVGFzayhEYXRhYmFzZVRocmVhZCogdGhyZWFkKQor
ICAgICAgICA6IERhdGFiYXNlVGFzaygwLCAwKQorICAgICAgICAsIG1fdGhyZWFkKHRocmVhZCkK
KyAgICB7fQorCisgICAgdmlydHVhbCB2b2lkIGRvUGVyZm9ybVRhc2soKQorICAgIHsKKyAgICAg
ICAgbV90aHJlYWQtPmhhbmRsZVBhdXNlZFF1ZXVlKCk7CisgICAgfQorI2lmICFMT0dfRElTQUJM
RUQKKyAgICB2aXJ0dWFsIGNvbnN0IGNoYXIqIGRlYnVnVGFza05hbWUoKSBjb25zdCB7IHJldHVy
biAiRGF0YWJhc2VVbnBhdXNlVGFzayI7IH0KKyNlbmRpZgorCisgICAgRGF0YWJhc2VUaHJlYWQq
IG1fdGhyZWFkOworfTsKKworCit2b2lkIERhdGFiYXNlVGhyZWFkOjpzZXRQYXVzZWQoYm9vbCBw
YXVzZWQpCit7CisgICAgaWYgKG1fcGF1c2VkID09IHBhdXNlZCkKKyAgICAgICAgcmV0dXJuOwor
CisgICAgTXV0ZXhMb2NrZXIgcGF1c2VkTG9ja2VyKG1fcGF1c2VkTXV0ZXgpOworICAgIG1fcGF1
c2VkID0gcGF1c2VkOworICAgIGlmICghbV9wYXVzZWQpCisgICAgICAgIHNjaGVkdWxlVGFzayhE
YXRhYmFzZVVucGF1c2VUYXNrOjpjcmVhdGUodGhpcykpOworfQorCit2b2lkIERhdGFiYXNlVGhy
ZWFkOjpoYW5kbGVQYXVzZWRRdWV1ZSgpCit7CisgICAgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxE
YXRhYmFzZVRhc2s+ID4gcGF1c2VkVGFza3M7CisgICAgd2hpbGUgKGF1dG8gdGFzayA9IG1fcGF1
c2VkUXVldWUudHJ5R2V0TWVzc2FnZSgpKQorICAgICAgICBwYXVzZWRUYXNrcy5hcHBlbmQoc3Rk
Ojptb3ZlKHRhc2spKTsKKworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBwYXVzZWRUYXNr
cy5zaXplKCk7ICsraSkgeworICAgICAgICBBdXRvZHJhaW5lZFBvb2wgcG9vbDsKKworICAgICAg
ICBzdGQ6OnVuaXF1ZV9wdHI8RGF0YWJhc2VUYXNrPiB0YXNrKHBhdXNlZFRhc2tzW2ldLnJlbGVh
c2UoKSk7CisgICAgICAgIHsKKyAgICAgICAgICAgIE11dGV4TG9ja2VyIHBhdXNlZExvY2tlciht
X3BhdXNlZE11dGV4KTsKKyAgICAgICAgICAgIGlmIChtX3BhdXNlZCkgeworICAgICAgICAgICAg
ICAgIG1fcGF1c2VkUXVldWUuYXBwZW5kKHN0ZDo6bW92ZSh0YXNrKSk7CisgICAgICAgICAgICAg
ICAgY29udGludWU7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgICAgIAorICAg
ICAgICBpZiAodGVybWluYXRpb25SZXF1ZXN0ZWQoKSkKKyAgICAgICAgICAgIGJyZWFrOworICAg
IAorICAgICAgICB0YXNrLT5wZXJmb3JtVGFzaygpOworICAgIH0KK30KKyNlbmRpZiAvL1BMQVRG
T1JNKElPUykKKworCiB2b2lkIERhdGFiYXNlVGhyZWFkOjpkYXRhYmFzZVRocmVhZCgpCiB7CiAg
ICAgewpAQCAtMTA5LDcgKzE4OSwxNCBAQCB2b2lkIERhdGFiYXNlVGhyZWFkOjpkYXRhYmFzZVRo
cmVhZCgpCiAgICAgd2hpbGUgKGF1dG8gdGFzayA9IG1fcXVldWUud2FpdEZvck1lc3NhZ2UoKSkg
ewogICAgICAgICBBdXRvZHJhaW5lZFBvb2wgcG9vbDsKIAorI2lmIFBMQVRGT1JNKElPUykKKyAg
ICAgICAgaWYgKCFtX3BhdXNlZCB8fCB0YXNrLT5zaG91bGRQZXJmb3JtV2hpbGVQYXVzZWQoKSkK
KyAgICAgICAgICAgIHRhc2stPnBlcmZvcm1UYXNrKCk7CisgICAgICAgIGVsc2UKKyAgICAgICAg
ICAgIG1fcGF1c2VkUXVldWUuYXBwZW5kKHN0ZDo6bW92ZSh0YXNrKSk7CisjZWxzZQogICAgICAg
ICB0YXNrLT5wZXJmb3JtVGFzaygpOworI2VuZGlmCiAgICAgfQogCiAgICAgLy8gQ2xlYW4gdXAg
dGhlIGxpc3Qgb2YgYWxsIHBlbmRpbmcgdHJhbnNhY3Rpb25zIG9uIHRoaXMgZGF0YWJhc2UgdGhy
ZWFkCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFi
YXNlVGhyZWFkLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNl
VGhyZWFkLmgKaW5kZXggNGIyMDJlZWYyNWE4ZjA2ZWNiNTRlNDcxYjhlZjY2NmMyMGNjOTYwZC4u
YzA1OTc5ZTVhZGE1YmE5NmU3OGUzMmU4NjhjMjRiYTRmZjg1Y2VlOSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZVRocmVhZC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VUaHJlYWQuaApAQCAtNjks
NiArNjksMTEgQEAgcHVibGljOgogICAgIFNRTFRyYW5zYWN0aW9uQ2xpZW50KiB0cmFuc2FjdGlv
bkNsaWVudCgpIHsgcmV0dXJuIG1fdHJhbnNhY3Rpb25DbGllbnQuZ2V0KCk7IH0KICAgICBTUUxU
cmFuc2FjdGlvbkNvb3JkaW5hdG9yKiB0cmFuc2FjdGlvbkNvb3JkaW5hdG9yKCkgeyByZXR1cm4g
bV90cmFuc2FjdGlvbkNvb3JkaW5hdG9yLmdldCgpOyB9CiAKKyNpZiBQTEFURk9STShJT1MpCisg
ICAgdm9pZCBzZXRQYXVzZWQoYm9vbCk7CisgICAgdm9pZCBoYW5kbGVQYXVzZWRRdWV1ZSgpOwor
I2VuZGlmCisKIHByaXZhdGU6CiAgICAgRGF0YWJhc2VUaHJlYWQoKTsKIApAQCAtODAsNiArODUs
MTEgQEAgcHJpdmF0ZToKICAgICBSZWZQdHI8RGF0YWJhc2VUaHJlYWQ+IG1fc2VsZlJlZjsKIAog
ICAgIE1lc3NhZ2VRdWV1ZTxEYXRhYmFzZVRhc2s+IG1fcXVldWU7CisjaWYgUExBVEZPUk0oSU9T
KQorICAgIE1lc3NhZ2VRdWV1ZTxEYXRhYmFzZVRhc2s+IG1fcGF1c2VkUXVldWU7CisgICAgTXV0
ZXggbV9wYXVzZWRNdXRleDsKKyAgICB2b2xhdGlsZSBib29sIG1fcGF1c2VkOworI2VuZGlmCiAK
ICAgICAvLyBUaGlzIHNldCBrZWVwcyB0cmFjayBvZiB0aGUgb3BlbiBkYXRhYmFzZXMgdGhhdCBo
YXZlIGJlZW4gdXNlZCBvbiB0aGlzIHRocmVhZC4KICAgICB0eXBlZGVmIEhhc2hTZXQ8UmVmUHRy
PERhdGFiYXNlQmFja2VuZD4+IERhdGFiYXNlU2V0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZVRyYWNrZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZVRyYWNrZXIuY3BwCmluZGV4IDM4ZWMxYzU3
MjEwMmVmNGQ0ZGYxODkzY2YyOTRlYWIyYTY4ZTYyMzIuLjFkZTE2NDc4NDg2NWY1ZDBmZTUwNTZi
ZjJiNDlmODgzMzY1MzYyYjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
ZGF0YWJhc2UvRGF0YWJhc2VUcmFja2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmRhdGFiYXNlL0RhdGFiYXNlVHJhY2tlci5jcHAKQEAgLTMzLDYgKzMzLDcgQEAKIAogI2lu
Y2x1ZGUgIkNocm9tZS5oIgogI2luY2x1ZGUgIkNocm9tZUNsaWVudC5oIgorI2luY2x1ZGUgIkRh
dGFiYXNlLmgiCiAjaW5jbHVkZSAiRGF0YWJhc2VCYWNrZW5kQmFzZS5oIgogI2luY2x1ZGUgIkRh
dGFiYXNlQmFja2VuZENvbnRleHQuaCIKICNpbmNsdWRlICJEYXRhYmFzZU1hbmFnZXIuaCIKQEAg
LTUwLDYgKzUxLDEwIEBACiAjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgogI2luY2x1ZGUg
PHd0Zi90ZXh0L0NTdHJpbmcuaD4KIAorI2lmIFBMQVRGT1JNKElPUykKKyNpbmNsdWRlICJXZWJD
b3JlVGhyZWFkLmgiCisjZW5kaWYKKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBzdGF0aWMgRGF0
YWJhc2VUcmFja2VyKiBzdGF0aWNUcmFja2VyID0gMDsKQEAgLTc0MSw2ICs3NDYsMTAgQEAgdm9p
ZCBEYXRhYmFzZVRyYWNrZXI6OnNldFF1b3RhKFNlY3VyaXR5T3JpZ2luKiBvcmlnaW4sIHVuc2ln
bmVkIGxvbmcgbG9uZyBxdW90YSkKICAgICBvcGVuVHJhY2tlckRhdGFiYXNlKENyZWF0ZUlmRG9l
c05vdEV4aXN0KTsKICAgICBpZiAoIW1fZGF0YWJhc2UuaXNPcGVuKCkpCiAgICAgICAgIHJldHVy
bjsKKyAgICAKKyNpZiBQTEFURk9STShJT1MpCisgICAgYm9vbCBpbnNlcnRlZE5ld09yaWdpbiA9
IGZhbHNlOworI2VuZGlmCiAKICAgICBib29sIG9yaWdpbkVudHJ5RXhpc3RzID0gaGFzRW50cnlG
b3JPcmlnaW5Ob0xvY2sob3JpZ2luKTsKICAgICBpZiAoIW9yaWdpbkVudHJ5RXhpc3RzKSB7CkBA
IC03NTMsNiArNzYyLDEwIEBAIHZvaWQgRGF0YWJhc2VUcmFja2VyOjpzZXRRdW90YShTZWN1cml0
eU9yaWdpbiogb3JpZ2luLCB1bnNpZ25lZCBsb25nIGxvbmcgcXVvdGEpCiAKICAgICAgICAgICAg
IGlmIChzdGF0ZW1lbnQuc3RlcCgpICE9IFNRTFJlc3VsdERvbmUpCiAgICAgICAgICAgICAgICAg
TE9HX0VSUk9SKCJVbmFibGUgdG8gZXN0YWJsaXNoIG9yaWdpbiAlcyBpbiB0aGUgdHJhY2tlciIs
IG9yaWdpbi0+ZGF0YWJhc2VJZGVudGlmaWVyKCkuYXNjaWkoKS5kYXRhKCkpOworI2lmIFBMQVRG
T1JNKElPUykKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBpbnNlcnRlZE5ld09y
aWdpbiA9IHRydWU7CisjZW5kaWYKICAgICAgICAgfQogICAgIH0gZWxzZSB7CiAgICAgICAgIFNR
TGl0ZVN0YXRlbWVudCBzdGF0ZW1lbnQobV9kYXRhYmFzZSwgIlVQREFURSBPcmlnaW5zIFNFVCBx
dW90YT0/IFdIRVJFIG9yaWdpbj0/Iik7CkBAIC03NjksNyArNzgyLDE1IEBAIHZvaWQgRGF0YWJh
c2VUcmFja2VyOjpzZXRRdW90YShTZWN1cml0eU9yaWdpbiogb3JpZ2luLCB1bnNpZ25lZCBsb25n
IGxvbmcgcXVvdGEpCiAgICAgfQogCiAgICAgaWYgKG1fY2xpZW50KQorI2lmIFBMQVRGT1JNKElP
UykKKyAgICB7CisgICAgICAgIGlmIChpbnNlcnRlZE5ld09yaWdpbikKKyAgICAgICAgICAgIG1f
Y2xpZW50LT5kaXNwYXRjaERpZEFkZE5ld09yaWdpbihvcmlnaW4pOworI2VuZGlmCiAgICAgICAg
IG1fY2xpZW50LT5kaXNwYXRjaERpZE1vZGlmeU9yaWdpbihvcmlnaW4pOworI2lmIFBMQVRGT1JN
KElPUykKKyAgICB9CisjZW5kaWYKIH0KIAogYm9vbCBEYXRhYmFzZVRyYWNrZXI6OmFkZERhdGFi
YXNlKFNlY3VyaXR5T3JpZ2luKiBvcmlnaW4sIGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3Ry
aW5nJiBwYXRoKQpAQCAtODk3LDYgKzkxOCw5IEBAIGJvb2wgRGF0YWJhc2VUcmFja2VyOjpkZWxl
dGVPcmlnaW4oU2VjdXJpdHlPcmlnaW4qIG9yaWdpbikKIAogICAgICAgICBpZiAobV9jbGllbnQp
IHsKICAgICAgICAgICAgIG1fY2xpZW50LT5kaXNwYXRjaERpZE1vZGlmeU9yaWdpbihvcmlnaW4p
OworI2lmIFBMQVRGT1JNKElPUykKKyAgICAgICAgICAgIG1fY2xpZW50LT5kaXNwYXRjaERpZERl
bGV0ZURhdGFiYXNlT3JpZ2luKCk7CisjZW5kaWYKICAgICAgICAgICAgIGZvciAodW5zaWduZWQg
aSA9IDA7IGkgPCBkYXRhYmFzZU5hbWVzLnNpemUoKTsgKytpKQogICAgICAgICAgICAgICAgIG1f
Y2xpZW50LT5kaXNwYXRjaERpZE1vZGlmeURhdGFiYXNlKG9yaWdpbiwgZGF0YWJhc2VOYW1lc1tp
XSk7CiAgICAgICAgIH0KQEAgLTEwNjIsNiArMTA4Niw5IEBAIGJvb2wgRGF0YWJhc2VUcmFja2Vy
OjpkZWxldGVEYXRhYmFzZShTZWN1cml0eU9yaWdpbiogb3JpZ2luLCBjb25zdCBTdHJpbmcmIG5h
bWUpCiAgICAgaWYgKG1fY2xpZW50KSB7CiAgICAgICAgIG1fY2xpZW50LT5kaXNwYXRjaERpZE1v
ZGlmeU9yaWdpbihvcmlnaW4pOwogICAgICAgICBtX2NsaWVudC0+ZGlzcGF0Y2hEaWRNb2RpZnlE
YXRhYmFzZShvcmlnaW4sIG5hbWUpOworI2lmIFBMQVRGT1JNKElPUykKKyAgICAgICAgbV9jbGll
bnQtPmRpc3BhdGNoRGlkRGVsZXRlRGF0YWJhc2UoKTsKKyNlbmRpZgogICAgIH0KICAgICBkb25l
RGVsZXRpbmdEYXRhYmFzZShvcmlnaW4sIG5hbWUpOwogICAgIApAQCAtMTExMCw4ICsxMTM3LDIw
MiBAQCBib29sIERhdGFiYXNlVHJhY2tlcjo6ZGVsZXRlRGF0YWJhc2VGaWxlKFNlY3VyaXR5T3Jp
Z2luKiBvcmlnaW4sIGNvbnN0IFN0cmluZyYgbgogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkg
PCBkZWxldGVkRGF0YWJhc2VzLnNpemUoKTsgKytpKQogICAgICAgICBkZWxldGVkRGF0YWJhc2Vz
W2ldLT5tYXJrQXNEZWxldGVkQW5kQ2xvc2UoKTsKIAorI2lmICFQTEFURk9STShJT1MpCiAgICAg
cmV0dXJuIFNRTGl0ZUZpbGVTeXN0ZW06OmRlbGV0ZURhdGFiYXNlRmlsZShmdWxsUGF0aCk7Cisj
ZWxzZQorICAgIC8vIE9uIHRoZSBwaG9uZSwgb3RoZXIgYmFja2dyb3VuZCBwcm9jZXNzZXMgbWF5
IHN0aWxsIGJlIGFjY2Vzc2luZyB0aGlzIGRhdGFiYXNlLiAgRGVsZXRpbmcgdGhlIGRhdGFiYXNl
IGRpcmVjdGx5CisgICAgLy8gd291bGQgbnVrZSB0aGUgUE9TSVggZmlsZSBsb2NrcywgcG90ZW50
aWFsbHkgY2F1c2luZyBTYWZhcmkvV2ViQXBwIHRvIGNvcnJ1cHQgdGhlIG5ldyBkYiBpZiBpdCdz
IHJ1bm5pbmcgaW4gdGhlIGJhY2tncm91bmQuCisgICAgLy8gV2UnbGwgaW5zdGVhZCB0cnVuY2F0
ZSB0aGUgZGF0YWJhc2UgZmlsZSB0byAwIGJ5dGVzLiAgSWYgYW5vdGhlciBwcm9jZXNzIGlzIG9w
ZXJhdGluZyBvbiB0aGlzIHNhbWUgZGF0YWJhc2UgZmlsZSBhZnRlcgorICAgIC8vIHRoZSB0cnVu
Y2F0aW9uLCBpdCBzaG91bGQgZ2V0IGFuIGVycm9yIHNpbmNlIHRoZSBkYXRhYmFzZSBmaWxlIGlz
IG5vIGxvbmdlciB2YWxpZC4gIFdoZW4gU2FmYXJpIGlzIGxhdW5jaGVkCisgICAgLy8gbmV4dCB0
aW1lLCBpdCdsbCBnbyB0aHJvdWdoIHRoZSBkYXRhYmFzZSBmaWxlcyBhbmQgY2xlYW4gdXAgYW55
IHplcm8tYnl0ZXMgb25lcy4KKyAgICBTUUxpdGVEYXRhYmFzZSBkYXRhYmFzZTsKKyAgICBpZiAo
ZGF0YWJhc2Uub3BlbihmdWxsUGF0aCkpCisgICAgICAgIHJldHVybiBTUUxpdGVGaWxlU3lzdGVt
Ojp0cnVuY2F0ZURhdGFiYXNlRmlsZShkYXRhYmFzZS5zcWxpdGUzSGFuZGxlKCkpOworICAgIHJl
dHVybiBmYWxzZTsKKyNlbmRpZgorfQorICAgIAorI2lmIFBMQVRGT1JNKElPUykKK3ZvaWQgRGF0
YWJhc2VUcmFja2VyOjpyZW1vdmVEZWxldGVkT3BlbmVkRGF0YWJhc2VzKCkKK3sKKyAgICAvLyBU
aGlzIGlzIGNhbGxlZCB3aGVuIGFub3RoZXIgYXBwIGhhcyBkZWxldGVkIGEgZGF0YWJhc2UuICBH
byB0aHJvdWdoIGFsbCBvcGVuZWQgZGF0YWJhc2VzIGluIHRoaXMKKyAgICAvLyB0cmFja2VyIGFu
ZCBjbG9zZSBhbnkgdGhhdCdzIG5vIGxvbmdlciBiZWluZyB0cmFja2VkIGluIHRoZSBkYXRhYmFz
ZS4KKyAgICAKKyAgICB7CisgICAgICAgIC8vIEFjcXVpcmUgdGhlIGxvY2sgYmVmb3JlIGNhbGxp
bmcgb3BlblRyYWNrZXJEYXRhYmFzZS4KKyAgICAgICAgTXV0ZXhMb2NrZXIgbG9ja0RhdGFiYXNl
KG1fZGF0YWJhc2VHdWFyZCk7CisgICAgICAgIG9wZW5UcmFja2VyRGF0YWJhc2UoRG9udENyZWF0
ZUlmRG9lc05vdEV4aXN0KTsKKyAgICB9CisKKyAgICBpZiAoIW1fZGF0YWJhc2UuaXNPcGVuKCkp
CisgICAgICAgIHJldHVybjsKKyAgICAKKyAgICAvLyBLZWVwIHRyYWNrIG9mIHdoaWNoIG9wZW5l
ZCBkYXRhYmFzZXMgaGF2ZSBiZWVuIGRlbGV0ZWQuCisgICAgVmVjdG9yPFJlZlB0cjxEYXRhYmFz
ZT4gPiBkZWxldGVkRGF0YWJhc2VzOworICAgIHR5cGVkZWYgSGFzaE1hcDxSZWZQdHI8U2VjdXJp
dHlPcmlnaW4+LCBWZWN0b3I8U3RyaW5nPiA+IERlbGV0ZWREYXRhYmFzZU1hcDsKKyAgICBEZWxl
dGVkRGF0YWJhc2VNYXAgZGVsZXRlZERhdGFiYXNlTWFwOworICAgIAorICAgIC8vIE1ha2Ugc3Vy
ZSBub3QgdG8gaG9sZCB0aGUgbV9vcGVuRGF0YWJhc2VNYXBHdWFyZCBtdXRleCB3aGVuIGNhbGxp
bmcKKyAgICAvLyBEYXRhYmFzZTo6bWFya0FzRGVsZXRlZEFuZENsb3NlKCksIHNpbmNlIHRoYXQg
Y2FuIGNhdXNlIGEgZGVhZGxvY2sKKyAgICAvLyBkdXJpbmcgdGhlIHN5bmNocm9ub3VzIERhdGFi
YXNlVGhyZWFkIGNhbGwgaXQgdHJpZ2dlcnMuCisgICAgeworICAgICAgICBNdXRleExvY2tlciBv
cGVuRGF0YWJhc2VNYXBMb2NrKG1fb3BlbkRhdGFiYXNlTWFwR3VhcmQpOworICAgICAgICBpZiAo
bV9vcGVuRGF0YWJhc2VNYXApIHsKKyAgICAgICAgICAgIERhdGFiYXNlT3JpZ2luTWFwOjpjb25z
dF9pdGVyYXRvciBvcmlnaW5NYXBFbmQgPSBtX29wZW5EYXRhYmFzZU1hcC0+ZW5kKCk7CisgICAg
ICAgICAgICBmb3IgKERhdGFiYXNlT3JpZ2luTWFwOjpjb25zdF9pdGVyYXRvciBvcmlnaW5NYXBJ
dCA9IG1fb3BlbkRhdGFiYXNlTWFwLT5iZWdpbigpOyBvcmlnaW5NYXBJdCAhPSBvcmlnaW5NYXBF
bmQ7ICsrb3JpZ2luTWFwSXQpIHsKKyAgICAgICAgICAgICAgICBSZWZQdHI8U2VjdXJpdHlPcmln
aW4+IG9yaWdpbiA9IG9yaWdpbk1hcEl0LT5rZXk7CisgICAgICAgICAgICAgICAgRGF0YWJhc2VO
YW1lTWFwKiBkYXRhYmFzZU5hbWVNYXAgPSBvcmlnaW5NYXBJdC0+dmFsdWU7CisgICAgICAgICAg
ICAgICAgVmVjdG9yPFN0cmluZz4gZGVsZXRlZERhdGFiYXNlTmFtZXNGb3JUaGlzT3JpZ2luOwor
CisgICAgICAgICAgICAgICAgLy8gTG9vcCB0aHJvdWdoIGFsbCBvcGVuZWQgZGF0YWJhc2VzIGlu
IHRoaXMgb3JpZ2luLiAgR2V0IHRoZSBjdXJyZW50IGRhdGFiYXNlIGZpbGUgcGF0aCBvZiBlYWNo
IGRhdGFiYXNlIGFuZCBzZWUgaWYKKyAgICAgICAgICAgICAgICAvLyBpdCBzdGlsbCBtYXRjaGVz
IHRoZSBwYXRoIHN0b3JlZCBpbiB0aGUgb3BlbmVkIGRhdGFiYXNlIG9iamVjdC4KKyAgICAgICAg
ICAgICAgICBEYXRhYmFzZU5hbWVNYXA6OmNvbnN0X2l0ZXJhdG9yIGRiTmFtZU1hcEVuZCA9IGRh
dGFiYXNlTmFtZU1hcC0+ZW5kKCk7CisgICAgICAgICAgICAgICAgZm9yIChEYXRhYmFzZU5hbWVN
YXA6OmNvbnN0X2l0ZXJhdG9yIGRiTmFtZU1hcEl0ID0gZGF0YWJhc2VOYW1lTWFwLT5iZWdpbigp
OyBkYk5hbWVNYXBJdCAhPSBkYk5hbWVNYXBFbmQ7ICsrZGJOYW1lTWFwSXQpIHsKKyAgICAgICAg
ICAgICAgICAgICAgU3RyaW5nIGRhdGFiYXNlTmFtZSA9IGRiTmFtZU1hcEl0LT5rZXk7CisgICAg
ICAgICAgICAgICAgICAgIFN0cmluZyBkYXRhYmFzZUZpbGVOYW1lOworICAgICAgICAgICAgICAg
ICAgICBTUUxpdGVTdGF0ZW1lbnQgc3RhdGVtZW50KG1fZGF0YWJhc2UsICJTRUxFQ1QgcGF0aCBG
Uk9NIERhdGFiYXNlcyBXSEVSRSBvcmlnaW49PyBBTkQgbmFtZT0/OyIpOworICAgICAgICAgICAg
ICAgICAgICBpZiAoc3RhdGVtZW50LnByZXBhcmUoKSA9PSBTUUxSZXN1bHRPaykgeworICAgICAg
ICAgICAgICAgICAgICAgICAgc3RhdGVtZW50LmJpbmRUZXh0KDEsIG9yaWdpbi0+ZGF0YWJhc2VJ
ZGVudGlmaWVyKCkpOworICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGVtZW50LmJpbmRUZXh0
KDIsIGRhdGFiYXNlTmFtZSk7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoc3RhdGVtZW50
LnN0ZXAoKSA9PSBTUUxSZXN1bHRSb3cpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0
YWJhc2VGaWxlTmFtZSA9IHN0YXRlbWVudC5nZXRDb2x1bW5UZXh0KDApOworICAgICAgICAgICAg
ICAgICAgICAgICAgc3RhdGVtZW50LmZpbmFsaXplKCk7CisgICAgICAgICAgICAgICAgICAgIH0K
KyAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgICAgIGJvb2wgZm91bmREZWxl
dGVkRGF0YWJhc2UgPSBmYWxzZTsKKyAgICAgICAgICAgICAgICAgICAgRGF0YWJhc2VTZXQqIGRh
dGFiYXNlU2V0ID0gZGJOYW1lTWFwSXQtPnZhbHVlOworICAgICAgICAgICAgICAgICAgICBEYXRh
YmFzZVNldDo6Y29uc3RfaXRlcmF0b3IgZGJFbmQgPSBkYXRhYmFzZVNldC0+ZW5kKCk7CisgICAg
ICAgICAgICAgICAgICAgIGZvciAoRGF0YWJhc2VTZXQ6OmNvbnN0X2l0ZXJhdG9yIGRiSXQgPSBk
YXRhYmFzZVNldC0+YmVnaW4oKTsgZGJJdCAhPSBkYkVuZDsgKytkYkl0KSB7CisgICAgICAgICAg
ICAgICAgICAgICAgICBEYXRhYmFzZSogZGIgPSBzdGF0aWNfY2FzdDxEYXRhYmFzZSo+KCpkYkl0
KTsKKyAgICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgICAgICAgLy8g
V2UgYXJlIGRvbmUgaWYgdGhpcyBkYXRhYmFzZSBoYXMgYWxyZWFkeSBiZWVuIG1hcmtlZCBhcyBk
ZWxldGVkLgorICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGRiLT5kZWxldGVkKCkpCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICAgICAgICAgICAg
ICAKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIElmIHRoaXMgZGF0YWJhc2UgaGFzIGJlZW4g
ZGVsZXRlZCBvciBpZiBpdHMgZGF0YWJhc2UgZmlsZSBubyBsb25nZXIgbWF0Y2hlcyB0aGUgY3Vy
cmVudCB2ZXJzaW9uLCB0aGlzIGRhdGFiYXNlIGlzIG5vIGxvbmdlciB2YWxpZCBhbmQgaXQgc2hv
dWxkIGJlIG1hcmtlZCBhcyBkZWxldGVkLgorICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGRh
dGFiYXNlRmlsZU5hbWUuaXNOdWxsKCkgfHwgZGF0YWJhc2VGaWxlTmFtZSAhPSBwYXRoR2V0Rmls
ZU5hbWUoZGItPmZpbGVOYW1lKCkpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVs
ZXRlZERhdGFiYXNlcy5hcHBlbmQoZGIpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZv
dW5kRGVsZXRlZERhdGFiYXNlID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAg
ICAgICAgLy8gSWYgdGhlIGRhdGFiYXNlIG5vIGxvbmdlciBleGlzdHMsIHdlIHNob3VsZCByZW1l
bWJlciB0byByZW1vdmUgaXQgZnJvbSB0aGUgT3JpZ2luUXVvdGFNYW5hZ2VyIGxhdGVyLgorICAg
ICAgICAgICAgICAgICAgICBpZiAoZm91bmREZWxldGVkRGF0YWJhc2UgJiYgZGF0YWJhc2VGaWxl
TmFtZS5pc051bGwoKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIGRlbGV0ZWREYXRhYmFzZU5h
bWVzRm9yVGhpc09yaWdpbi5hcHBlbmQoZGF0YWJhc2VOYW1lKTsKKyAgICAgICAgICAgICAgICB9
CisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgaWYgKCFkZWxldGVkRGF0YWJhc2VO
YW1lc0ZvclRoaXNPcmlnaW4uaXNFbXB0eSgpKQorICAgICAgICAgICAgICAgICAgICBkZWxldGVk
RGF0YWJhc2VNYXAuc2V0KG9yaWdpbiwgZGVsZXRlZERhdGFiYXNlTmFtZXNGb3JUaGlzT3JpZ2lu
KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKyAgICAKKyAgICBmb3IgKHVuc2ln
bmVkIGkgPSAwOyBpIDwgZGVsZXRlZERhdGFiYXNlcy5zaXplKCk7ICsraSkKKyAgICAgICAgZGVs
ZXRlZERhdGFiYXNlc1tpXS0+bWFya0FzRGVsZXRlZEFuZENsb3NlKCk7CisgICAgCisgICAgRGVs
ZXRlZERhdGFiYXNlTWFwOjpjb25zdF9pdGVyYXRvciBlbmQgPSBkZWxldGVkRGF0YWJhc2VNYXAu
ZW5kKCk7CisgICAgZm9yIChEZWxldGVkRGF0YWJhc2VNYXA6OmNvbnN0X2l0ZXJhdG9yIGl0ID0g
ZGVsZXRlZERhdGFiYXNlTWFwLmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkgeworICAgICAgICBT
ZWN1cml0eU9yaWdpbiogb3JpZ2luID0gaXQtPmtleS5nZXQoKTsKKyAgICAgICAgaWYgKG1fY2xp
ZW50KQorICAgICAgICAgICAgbV9jbGllbnQtPmRpc3BhdGNoRGlkTW9kaWZ5T3JpZ2luKG9yaWdp
bik7CisgICAgICAgIAorICAgICAgICBjb25zdCBWZWN0b3I8U3RyaW5nPiYgZGF0YWJhc2VOYW1l
cyA9IGl0LT52YWx1ZTsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGRhdGFiYXNl
TmFtZXMuc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgICAgIGlmIChtX2NsaWVudCkKKyAgICAgICAg
ICAgICAgICBtX2NsaWVudC0+ZGlzcGF0Y2hEaWRNb2RpZnlEYXRhYmFzZShvcmlnaW4sIGRhdGFi
YXNlTmFtZXNbaV0pOworICAgICAgICB9ICAgICAgICAKKyAgICB9CiB9CisgICAgCitzdGF0aWMg
Ym9vbCBpc1plcm9CeXRlRmlsZShjb25zdCBTdHJpbmcmIHBhdGgpCit7CisgICAgbG9uZyBsb25n
IHNpemUgPSAwOworICAgIHJldHVybiBnZXRGaWxlU2l6ZShwYXRoLCBzaXplKSAmJiAhc2l6ZTsK
K30KKyAgICAKK2Jvb2wgRGF0YWJhc2VUcmFja2VyOjpkZWxldGVEYXRhYmFzZUZpbGVJZkVtcHR5
KGNvbnN0IFN0cmluZyYgcGF0aCkKK3sKKyAgICBpZiAoIWlzWmVyb0J5dGVGaWxlKHBhdGgpKQor
ICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgCisgICAgU1FMaXRlRGF0YWJhc2UgZGF0YWJhc2U7
CisgICAgaWYgKCFkYXRhYmFzZS5vcGVuKHBhdGgpKQorICAgICAgICByZXR1cm4gZmFsc2U7Cisg
ICAgCisgICAgLy8gU3BlY2lmeSB0aGF0IHdlIHdhbnQgdGhlIGV4Y2x1c2l2ZSBsb2NraW5nIG1v
ZGUsIHNvIGFmdGVyIHRoZSBuZXh0IHJlYWQsCisgICAgLy8gd2UnbGwgYmUgaG9sZGluZyB0aGUg
bG9jayB0byB0aGlzIGRhdGFiYXNlIGZpbGUuCisgICAgU1FMaXRlU3RhdGVtZW50IGxvY2tTdGF0
ZW1lbnQoZGF0YWJhc2UsICJQUkFHTUEgbG9ja2luZ19tb2RlPUVYQ0xVU0lWRTsiKTsKKyAgICBp
ZiAobG9ja1N0YXRlbWVudC5wcmVwYXJlKCkgIT0gU1FMUmVzdWx0T2spCisgICAgICAgIHJldHVy
biBmYWxzZTsKKyAgICBpbnQgcmVzdWx0ID0gbG9ja1N0YXRlbWVudC5zdGVwKCk7CisgICAgaWYg
KHJlc3VsdCAhPSBTUUxSZXN1bHRSb3cgJiYgcmVzdWx0ICE9IFNRTFJlc3VsdERvbmUpCisgICAg
ICAgIHJldHVybiBmYWxzZTsKKyAgICBsb2NrU3RhdGVtZW50LmZpbmFsaXplKCk7CisKKyAgICAv
LyBFdmVyeSBzcWxpdGUgZGF0YWJhc2UgaGFzIGEgc3FsaXRlX21hc3RlciB0YWJsZSB0aGF0IGNv
bnRhaW5zIHRoZSBzY2hlbWEgZm9yIHRoZSBkYXRhYmFzZS4KKyAgICAvLyBodHRwOi8vd3d3LnNx
bGl0ZS5vcmcvZmFxLmh0bWwjcTcKKyAgICBTUUxpdGVTdGF0ZW1lbnQgcmVhZFN0YXRlbWVudChk
YXRhYmFzZSwgIlNFTEVDVCAqIEZST00gc3FsaXRlX21hc3RlciBMSU1JVCAxOyIpOyAgICAKKyAg
ICBpZiAocmVhZFN0YXRlbWVudC5wcmVwYXJlKCkgIT0gU1FMUmVzdWx0T2spCisgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICAvLyBXZSBzaG91bGRuJ3QgZXhwZWN0IGFueSByZXN1bHQuCisgICAg
aWYgKHJlYWRTdGF0ZW1lbnQuc3RlcCgpICE9IFNRTFJlc3VsdERvbmUpCisgICAgICAgIHJldHVy
biBmYWxzZTsKKyAgICByZWFkU3RhdGVtZW50LmZpbmFsaXplKCk7CisgICAgCisgICAgLy8gQXQg
dGhpcyBwb2ludCwgd2UgaG9sZCB0aGUgZXhjbHVzaXZlIGxvY2sgdG8gdGhpcyBmaWxlLiAgRG91
YmxlLWNoZWNrIGFnYWluIHRvIG1ha2Ugc3VyZQorICAgIC8vIGl0J3Mgc3RpbGwgemVybyBieXRl
cy4KKyAgICBpZiAoIWlzWmVyb0J5dGVGaWxlKHBhdGgpKQorICAgICAgICByZXR1cm4gZmFsc2U7
CisgICAgCisgICAgcmV0dXJuIFNRTGl0ZUZpbGVTeXN0ZW06OmRlbGV0ZURhdGFiYXNlRmlsZShw
YXRoKTsKK30KKworTXV0ZXgmIERhdGFiYXNlVHJhY2tlcjo6b3BlbkRhdGFiYXNlTXV0ZXgoKQor
eworICAgIERFRklORV9TVEFUSUNfTE9DQUwoTXV0ZXgsIG11dGV4LCAoKSk7CisgICAgcmV0dXJu
IG11dGV4OworfQorCit2b2lkIERhdGFiYXNlVHJhY2tlcjo6ZW1wdHlEYXRhYmFzZUZpbGVzUmVt
b3ZhbFRhc2tXaWxsQmVTY2hlZHVsZWQoKQoreworICAgIC8vIExvY2sgdGhlIGRhdGFiYXNlIGZy
b20gb3BlbmluZyBhbnkgZGF0YWJhc2UgdW50aWwgd2UgYXJlIGRvbmUgd2l0aCBzY2FubmluZyB0
aGUgZmlsZSBzeXN0ZW0gZm9yCisgICAgLy8gemVybyBieXRlIGRhdGFiYXNlIGZpbGVzIHRvIHJl
bW92ZS4KKyAgICBvcGVuRGF0YWJhc2VNdXRleCgpLmxvY2soKTsKK30KKwordm9pZCBEYXRhYmFz
ZVRyYWNrZXI6OmVtcHR5RGF0YWJhc2VGaWxlc1JlbW92YWxUYXNrRGlkRmluaXNoKCkKK3sKKyAg
ICBvcGVuRGF0YWJhc2VNdXRleCgpLnVubG9jaygpOworfQorCit2b2lkIERhdGFiYXNlVHJhY2tl
cjo6c2V0RGF0YWJhc2VzUGF1c2VkKGJvb2wgcGF1c2VkKQoreworICAgIE11dGV4TG9ja2VyIG9w
ZW5EYXRhYmFzZU1hcExvY2sobV9vcGVuRGF0YWJhc2VNYXBHdWFyZCk7CisgICAgaWYgKCFtX29w
ZW5EYXRhYmFzZU1hcCkKKyAgICAgICAgcmV0dXJuOworCisgICAgLy8gVGhpcyB3YWxraW5nIGlz
IC0gc2FkbHkgLSB0aGUgb25seSByZWxpYWJsZSB3YXkgdG8gZ2V0IGF0IGVhY2ggb3BlbiBkYXRh
YmFzZSB0aHJlYWQuCisgICAgLy8gVGhpcyB3aWxsIGJlIGNsZWFuZXIgb25jZSA8cmRhcjovL3By
b2JsZW0vNTY4MDQ0MT4gb3Igc29tZSBvdGhlciBEQiB0aHJlYWQgY29uc29saWRhdGlvbiB0YWtl
cyBwbGFjZS4KKyAgICBEYXRhYmFzZU9yaWdpbk1hcDo6aXRlcmF0b3IgaSA9IG1fb3BlbkRhdGFi
YXNlTWFwLmdldCgpLT5iZWdpbigpOworICAgIERhdGFiYXNlT3JpZ2luTWFwOjppdGVyYXRvciBl
bmQgPSBtX29wZW5EYXRhYmFzZU1hcC5nZXQoKS0+ZW5kKCk7CisgICAgCisgICAgZm9yICg7IGkg
IT0gZW5kOyArK2kpIHsKKyAgICAgICAgRGF0YWJhc2VOYW1lTWFwKiBkYXRhYmFzZU5hbWVNYXAg
PSBpLT52YWx1ZTsKKyAgICAgICAgRGF0YWJhc2VOYW1lTWFwOjppdGVyYXRvciBqID0gZGF0YWJh
c2VOYW1lTWFwLT5iZWdpbigpOworICAgICAgICBEYXRhYmFzZU5hbWVNYXA6Oml0ZXJhdG9yIGRi
TmFtZU1hcEVuZCA9IGRhdGFiYXNlTmFtZU1hcC0+ZW5kKCk7CisgICAgICAgIGZvciAoOyBqICE9
IGRiTmFtZU1hcEVuZDsgKytqKSB7CisgICAgICAgICAgICBEYXRhYmFzZVNldCogZGF0YWJhc2VT
ZXQgPSBqLT52YWx1ZTsKKyAgICAgICAgICAgIERhdGFiYXNlU2V0OjppdGVyYXRvciBrID0gZGF0
YWJhc2VTZXQtPmJlZ2luKCk7CisgICAgICAgICAgICBEYXRhYmFzZVNldDo6aXRlcmF0b3IgZGJT
ZXRFbmQgPSBkYXRhYmFzZVNldC0+ZW5kKCk7CisgICAgICAgICAgICBmb3IgKDsgayAhPSBkYlNl
dEVuZDsgKytrKSB7CisgICAgICAgICAgICAgICAgRGF0YWJhc2VDb250ZXh0KiBjb250ZXh0ID0g
KCprKS0+ZGF0YWJhc2VDb250ZXh0KCk7CisgICAgICAgICAgICAgICAgY29udGV4dC0+c2V0UGF1
c2VkKHBhdXNlZCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9Cit9CisKKyNlbmRp
ZgogCiB2b2lkIERhdGFiYXNlVHJhY2tlcjo6c2V0Q2xpZW50KERhdGFiYXNlTWFuYWdlckNsaWVu
dCogY2xpZW50KQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRh
YmFzZS9EYXRhYmFzZVRyYWNrZXIuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJh
c2UvRGF0YWJhc2VUcmFja2VyLmgKaW5kZXggMzUyMzc0MDdhZjg1YTU5YzVmODZhNmVkOWY3ZjMw
OThhOWIxYjk4MS4uZjhhNWQxMjY2YWFhODU1N2JmZTlmMTdlNTk2NTc1ZjgxZmY1YzBiYSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZVRyYWNr
ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlVHJh
Y2tlci5oCkBAIC0xMDAsNiArMTAwLDIxIEBAIHB1YmxpYzoKICAgICBib29sIGRlbGV0ZU9yaWdp
bihTZWN1cml0eU9yaWdpbiopOwogICAgIGJvb2wgZGVsZXRlRGF0YWJhc2UoU2VjdXJpdHlPcmln
aW4qLCBjb25zdCBTdHJpbmcmIG5hbWUpOwogCisjaWYgUExBVEZPUk0oSU9TKQorICAgIHZvaWQg
cmVtb3ZlRGVsZXRlZE9wZW5lZERhdGFiYXNlcygpOworICAgIHN0YXRpYyBib29sIGRlbGV0ZURh
dGFiYXNlRmlsZUlmRW1wdHkoY29uc3QgU3RyaW5nJik7CisKKyAgICAvLyBNb2JpbGVTYWZhcmkg
d2lsbCBncmFiIHRoaXMgbXV0ZXggb24gdGhlIG1haW4gdGhyZWFkIGJlZm9yZSBkaXNwYXRjaGlu
ZyB0aGUgdGFzayB0byAKKyAgICAvLyBjbGVhbiB1cCB6ZXJvIGJ5dGUgZGF0YWJhc2UgZmlsZXMu
ICBBbnkgb3BlcmF0aW9ucyB0byBvcGVuIG5ldyBkYXRhYmFzZSB3aWxsIGhhdmUgdG8KKyAgICAv
LyB3YWl0IGZvciB0aGF0IHRhc2sgdG8gZmluaXNoIGJ5IHdhaXRpbmcgb24gdGhpcyBtdXRleC4K
KyAgICBzdGF0aWMgTXV0ZXgmIG9wZW5EYXRhYmFzZU11dGV4KCk7CisgICAgCisgICAgc3RhdGlj
IHZvaWQgZW1wdHlEYXRhYmFzZUZpbGVzUmVtb3ZhbFRhc2tXaWxsQmVTY2hlZHVsZWQoKTsKKyAg
ICBzdGF0aWMgdm9pZCBlbXB0eURhdGFiYXNlRmlsZXNSZW1vdmFsVGFza0RpZEZpbmlzaCgpOwor
ICAgIAorICAgIHZvaWQgc2V0RGF0YWJhc2VzUGF1c2VkKGJvb2wpOworI2VuZGlmCisgICAgCiAg
ICAgdm9pZCBzZXRDbGllbnQoRGF0YWJhc2VNYW5hZ2VyQ2xpZW50Kik7CiAKICAgICAvLyBGcm9t
IGEgc2Vjb25kYXJ5IHRocmVhZCwgbXVzdCBiZSB0aHJlYWQgc2FmZSB3aXRoIGl0cyBkYXRhCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL1NRTFRyYW5zYWN0
aW9uQmFja2VuZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL1NRTFRy
YW5zYWN0aW9uQmFja2VuZC5jcHAKaW5kZXggNTY4YmU5N2QwZWNkNzNjNjI5MWYyODA5NjgzNjdi
NTBlM2ZiNmYxMy4uMjQ0ZjI4NTY2ZjdmZTNhNzQzODhkMWFlZTIzMmI2ZjQ2ODllNzRhYSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9TUUxUcmFuc2FjdGlv
bkJhY2tlbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvU1FM
VHJhbnNhY3Rpb25CYWNrZW5kLmNwcApAQCAtNTE4LDYgKzUxOCwxNCBAQCB2b2lkIFNRTFRyYW5z
YWN0aW9uQmFja2VuZDo6cGVyZm9ybU5leHRTdGVwKCkKICAgICBydW5TdGF0ZU1hY2hpbmUoKTsK
IH0KIAorI2lmIFBMQVRGT1JNKElPUykKK2Jvb2wgU1FMVHJhbnNhY3Rpb25CYWNrZW5kOjpzaG91
bGRQZXJmb3JtV2hpbGVQYXVzZWQoKSBjb25zdAoreworICAgIC8vIFNRTFRyYW5zYWN0aW9ucyBz
aG91bGQgb25seSBydW4td2hpbGUtcGF1c2VkIGlmIHRoZXkgaGF2ZSBwcm9ncmVzc2VkIHBhc3Nl
ZCB0aGUgZmlyc3QgdHJhbnNhY3Rpb24gc3RlcC4KKyAgICByZXR1cm4gbV9uZXh0U3RhdGUgIT0g
U1FMVHJhbnNhY3Rpb25TdGF0ZTo6QWNxdWlyZUxvY2s7Cit9CisjZW5kaWYKKwogdm9pZCBTUUxU
cmFuc2FjdGlvbkJhY2tlbmQ6OmV4ZWN1dGVTUUwoUGFzc093blB0cjxBYnN0cmFjdFNRTFN0YXRl
bWVudD4gc3RhdGVtZW50LAogICAgIGNvbnN0IFN0cmluZyYgc3FsU3RhdGVtZW50LCBjb25zdCBW
ZWN0b3I8U1FMVmFsdWU+JiBhcmd1bWVudHMsIGludCBwZXJtaXNzaW9ucykKIHsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvU1FMVHJhbnNhY3Rpb25CYWNr
ZW5kLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL1NRTFRyYW5zYWN0aW9u
QmFja2VuZC5oCmluZGV4IDZlZmM3NTFmZjE0NWI0NDhlMDQxMTU1MjViN2NiOTY2YzI4YTM4YTEu
LmZlYzM2NjEwYTE1ZjlhZTNlNTBjNTgyNTRiYmY1MDUxZTIzZTljZmIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvU1FMVHJhbnNhY3Rpb25CYWNrZW5kLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9TUUxUcmFuc2FjdGlvbkJh
Y2tlbmQuaApAQCAtNjgsNiArNjgsMTAgQEAgcHVibGljOgogICAgIHZvaWQgbG9ja0FjcXVpcmVk
KCk7CiAgICAgdm9pZCBwZXJmb3JtTmV4dFN0ZXAoKTsKIAorI2lmIFBMQVRGT1JNKElPUykKKyAg
ICBib29sIHNob3VsZFBlcmZvcm1XaGlsZVBhdXNlZCgpIGNvbnN0OworI2VuZGlmCisKICAgICBE
YXRhYmFzZUJhY2tlbmQqIGRhdGFiYXNlKCkgeyByZXR1cm4gbV9kYXRhYmFzZS5nZXQoKTsgfQog
ICAgIGJvb2wgaXNSZWFkT25seSgpIHsgcmV0dXJuIG1fcmVhZE9ubHk7IH0KICAgICB2b2lkIG5v
dGlmeURhdGFiYXNlVGhyZWFkSXNTaHV0dGluZ0Rvd24oKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL1Jlc291cmNlcy9EaWN0YXRpb25QaHJhc2VXaXRoQWx0ZXJuYXRpdmVzRG90LnBuZyBi
L1NvdXJjZS9XZWJDb3JlL1Jlc291cmNlcy9EaWN0YXRpb25QaHJhc2VXaXRoQWx0ZXJuYXRpdmVz
RG90LnBuZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi40MmUxMGY4Y2E2NjcwMjBkZGRiOGJlODRmOTY4NDk1MTc0Mzg1
MDYxCkdJVCBiaW5hcnkgcGF0Y2gKbGl0ZXJhbCAxODMKemNtZUFTQE4/KG9sSHlgdVZCcSFpYTB2
cF5FSWBjNiEzSEZeZHw3dTROTzJaO0w+NG5KYTBgUGxCZzNwWTU8byRQCnpXUkQ8VTI4SnFDMjhN
PWEyOE4maWYlSG9UaEVmOXRoRjF2OzN8MkUzN3t2MUAjVUZKOHM8cmlXYVNXLXIjZDZTKQp6Pnd0
bSkhQDtaayhHZ2xJdCEyfnA9YCVWYCohK1JMe00/VDFrJkhxQ15GNis4KClseEFAaWJHemVDT1hj
UHMhWTMKYWU4PUYoQnp9X0ZaZX1qZkFPPXJZS2JMaCoyfjdaYE1LdWlvCgpsaXRlcmFsIDAKSGNt
Vj9kMDAwMDEKCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9SZXNvdXJjZXMvRGljdGF0aW9u
UGhyYXNlV2l0aEFsdGVybmF0aXZlc0RvdEAyeC5wbmcgYi9Tb3VyY2UvV2ViQ29yZS9SZXNvdXJj
ZXMvRGljdGF0aW9uUGhyYXNlV2l0aEFsdGVybmF0aXZlc0RvdEAyeC5wbmcKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
ZmYzNjlmYjQ4NjlkZmY5OTA2MmJkNjAzMmNlZDI5OTAwOGEyNTdiZgpHSVQgYmluYXJ5IHBhdGNo
CmxpdGVyYWwgMjY3CnpjbWVBU0BOPyhvbEh5YHVWQnEhaWEwdnBeOTYtIyohM0hHJXZFS2c7cSZO
I2FCOHdScXhQP0tPa3p2KngzODBgdAp6dlBZMEYxNEVUNjE0QmJJMUg7ZSVLPjgmRUwjWTcrIT5h
QGEyQ0VxaTRDNDhkOypZdWspbFQkdWFTVy1yPCNXb0sKej55VSM0IV4yNFAkakoqQD1iZ1RFJUlr
IXhpMGoyX2orSHEmZHFiYClOVnBleUQxUmR0cFU/TXxyJGMrVHpPZ3pqCnpibGBgfHpWbjU0aTx2
KiV2dXVDZjlVOH1RcHlFaUhsX1BVRGdUQWstVXcqKDxKe1FGalR8KjZheHBLd1IzKk83Rgp6QFZk
YXx6LVcrPlpFM3BuTHcmVU9BIzs3TThgOFNWRzlubVErS01lZ1pwOzdSVlghKUI8R3xUPkc4NT1I
MjJXUSUKSm12djRGTyN0QE9TaUFyTAoKbGl0ZXJhbCAwCkhjbVY/ZDAwMDAxCgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvUmVzb3VyY2VzL1NwZWxsaW5nRG90LnBuZyBiL1NvdXJjZS9XZWJD
b3JlL1Jlc291cmNlcy9TcGVsbGluZ0RvdC5wbmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzYxYTliNzg4ZDQ0MDYy
ODkyYzVkMzc2MjY4Njg3NGVmMDcxZjUyNApHSVQgYmluYXJ5IHBhdGNoCmxpdGVyYWwgMTk1Cnpj
bWVBU0BOPyhvbEh5YHVWQnEhaWEwdnBeRUlgYzYhMy1wdXdjQF5qMWt4UlM5VF55fC1NSGMoVkZj
dCRtYmdaZwp6MW1+eGZscVZMWUdCfkU+QyM1UVE8fGR9NjJCanZaUjJINjB3RS0lVTQpNihhe2VT
aTl6dHlZJWhLSyp9cFlZR1kKejthYDlNVXdRZHw7U3ZBO3wySzRGeSRlKnZTclgoSTRDSTBWTCRI
NV41WGJeZzdzcnJfVFMqQkNER3c0N2tga1hNCmdCJX4la1c4ZzRnVjY8ajE0T19BaHNEXj5UKTc4
JnFvbGA7KzBEY29obyZXIzwKCmxpdGVyYWwgMApIY21WP2QwMDAwMQoKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL1Jlc291cmNlcy9TcGVsbGluZ0RvdEAyeC5wbmcgYi9Tb3VyY2UvV2ViQ29y
ZS9SZXNvdXJjZXMvU3BlbGxpbmdEb3RAMngucG5nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmZhOGUzMWMyZGFhNTgz
ZTA0MzVhNTNhNGJjMWJlMzUzYjEzNTBlZjcKR0lUIGJpbmFyeSBwYXRjaApsaXRlcmFsIDI1Ngp6
Y21lQVNATj8ob2xIeWB1VkJxIWlhMHZwXjk2LSMqITNIRyV2RUtnO3EmTiNhQjh3UnF4UD9LT2t6
dip4MzgwYHQKenZQWTBGMTRFVDYxNEJiSTFIJV59LUV4dEVBdmQwWjtZQUp1Z0gxT0JnTEZqbWJN
XnxMK0JRIVkkQj5GIUEqVktTCnpIOTFIZV8qbm50P240RERpKGdUR3pLIX5jQkNkUGdBNiQ4NHtq
I0x7Z0txbX0mMShmNlV1TV8wPVU8T31fUzI2ZQp6b25jTGA7V083elJ0Q3Fmb210Sl84NzhFTGNS
a3tXTnFYXkg+VXFNZkIjJlQ/KF5kUzM4T3xOdGJWUHdrYWY0dlUKentoczh7OyoqeCNaOHFlO2NK
PEw7JklYKFIzUHJhTTx1bUFQKXhHZzNeeHM+Y2l4QG16e2FuXkxCe1RzNW98YXg1CgpsaXRlcmFs
IDAKSGNtVj9kMDAwMDEKCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9SZXNvdXJjZXMvZGVj
cmVtZW50QXJyb3cudGlmZiBiL1NvdXJjZS9XZWJDb3JlL1Jlc291cmNlcy9kZWNyZW1lbnRBcnJv
dy50aWZmCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjcxNGYwMjRiYTI3ZjkyMDY0NWViNDVlNjEzYmRhNzc5ZDIwNjc0
NzAKR0lUIGJpbmFyeSBwYXRjaApsaXRlcmFsIDU1MAp6Y21haXYhNDNnSTQySipDdmYpQlZrUlo8
RDVwWjtIdW92RDF1WjApJWNWOz9pbU4xaVV8TWRVYiZOZEE7ZlNtQ0EKej59Y1A9QWl8bj9GS1Bg
dD1HfEJAJiQ0PVpoUihFRko4JFZke3soRilyI3FDQDhTTmdIJTJEPnBGeEdZIXp6Smc/CnpuUm5L
UU96ZT1xUm5aZ2xgNE9pPilFeXd5UXNwe2ZzazA4JEJoWTZyKDM3IWFDUngqIW5LNSNaSWw3NHQx
NmRTMwpkbThJKWx5Wkw4VnplS0k/UyNidDhyaDd+U1ZWU1JxX1lHRktBYlM3KwoKbGl0ZXJhbCAw
CkhjbVY/ZDAwMDAxCgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUmVzb3VyY2VzL2hTY3Jv
bGxDb250cm9sX2xlZnQucG5nIGIvU291cmNlL1dlYkNvcmUvUmVzb3VyY2VzL2hTY3JvbGxDb250
cm9sX2xlZnQucG5nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmI3YmQ4N2Q3MTMwZDhiNzAyODA0Mjg2MGE2MzBmMTI5
MDljNThlMjUKR0lUIGJpbmFyeSBwYXRjaApsaXRlcmFsIDMwMzIKemNtVjt9M24lbzZQKTxoOzNL
fExrMDAwZTFOSkxUcTAwMEw3MDAwZEwxXkBzNld5eTU0MDAwMDlhN2JCbTAwMFhVCnowMDBYVTBS
V251N3l0a1lPPSZ8elAqNy1aYlo+S0xaKlUrPExxaX5OYSZLbTdZLUlvZGMtb3kpY1VZNzY3Q3p0
aQp6V2UtK0Qqem1FSlk9SG5HQmRpRj41THUhU2teb19aNUU0TWVnQF83UDZjckppTkw5cHcpZTE8
Umh+bDZxeE14OSUKemgrMnpQVHNaQ0ArXjRtRGRoaE0rYGA3IXQ9YlkjSyZVdyFkZkRzWlZrPjtY
bTA2OXtISlVaQVBrNTVSJSQtUklBCno2LWVMJkFRMHh1IWU8ND0wMDhnPGQzYih3dXN7Myh1V3RZ
WDBDM2VWQm9mRXJ8QVY/dkNSWUY7a3BTUSM2NlhzNgp6a1d2ODFFPnlAQTBMVH5zdXY0PlMzSUxQ
PDBCbWBETEx2YUY0RkslKU5qP1B0KnJ9Nzs3WGE5ejlIfEhaalI2M2UKekNgVGokSylWMjdSZUA0
MDA+SHVtcHNZWTVFKEV9PzBmMVN5R0RpWXt5IylZdmojIVduS3d0b1huTDtlZzAzYkw1CnowN0Qp
ViU+eTd6MUU0VXt6dT43fmFEfSk/MFJYX3VtQ2N0KyhsWnBlbUN6YkBeNj1vfEE+elZwdXxpPU5E
Rys3fQp6PFJZQXhuPEVvUT1MMWE2MzsrTmNgTyg0dEk2c2kqPUglaCNYNkoxMF51P243WXcmTChK
fFhlbns9QUY9MU9PMEQKeiYrcG5fPD5sNGBhS3swI2ItIXo9VEw5V3QwQkdPJlR7R0pXcGpyeWhk
aWpmYUlRJjIhb31wMDRKUktZZzNrJlRmCnpWeGhlLTxCTEIzR3ZST0dpKz1YfUtweV92ZGhoXm9u
bjBQWXpAdmx4YWJhJER1MlBRWSVMR0MoWnVqUlN7Pk8hWAp6e2Y7VG87eHdeYkVFUzZKU2MkayRC
MkNBNnhsKWx0QTwzMkU2NnQ/M0BnSjdgMzZwbVgwSVleanopclJZd2FhWTQKemUobkpSaXc7PVFi
XnQocl5EVEBUM3l9YTJYRVpXLV9XJUhzenhqX3FEKip0X20hI3RXMEtEaUpUJlI+Nk92VlRSCnow
N1JnSER6SEhaNDhhdHZ6eiY/ajlsWEY3MCR+UDNLbnhfbkpQPCsjPGJXSXNwJXw3eThDMVlKKmFX
cSgwfigrYQp6biZBKyUhNyhAdT1pbX10ZiRNTT0yNEVQVCFXZ2BVMj9SbU4yb3FyO0kqMVdzakBU
bTMycDVALTFSYE5iRz9JWCUKekFuQXd7UTZrMDJhLTsmT0xUWnMrTkYod3NhdWhqQFR0TkRlK3NH
Zz9pdXtWYU09X0x2dlFZIW4wKEMmU3MyPmBOCnojLU1aMmJUa2lMZlI+X2IoSGdXS0olRn5Ocl9v
RjNiI3dySWlqSEd8KEo+QllqTS1zYWpFNjtGaUM3dlkjfTtHZAp6U1QkQ1VIRGV1RUgrQl5wekBC
MDYycVhmRmZEYE5wVVc1P0JZPVYlR01fNWMpTCNRUn1CZVc4XzJ2LVMlZ2ZZUz0KekI5b3wzdj9Z
MkhgTlZpKUk8YiZnTXl3fDhBcyEpfkMwLXtFNkpMYF5CbzRgdjxXMzQ5QzZGPm4zclRCOCtlal4+
CnpRPX5yOTVOVnVEQ2hMJUckPT43JHZWZzIwbXl4JVM1MEZvaWBebSVQdy1oP1hofmk4TXE5anRK
bG9Db2NXazJOdgp6ckpwaUZuVl9tcyY4ZVEkMiYjeFdwSVMrNnBtdEMlUS1gUyZHPEJMSyY2XmZP
JWNMISUpekYlMFhLRDluRlg/bzsKejNFaEpwTVZIVyoocmY0az5GNFEjXm1oeW1oN0UocU5NYX0l
WVotZVByeD4+eEZQVGlIMT1FK0EkVyQ9Ykc4PnNeCnptPUJuNVJhaCRhRHRyfUAkYFh9Mmx+JEYw
bUZLRWRSZFpFOClwQEU1Ukk2MUZ0Nm8tcHJiYm4+UH4paXkpRTJBTgp6c1UyMGpzV3pfOFFnPjMx
UHxzMGNxclBBTGc4RXwodldBNjVwb1UxSlJBYVpzOEkyKHAjeGlCYFNWR292UnMtdVMKelluVi05
VGVBNz1PbStxUDgrST55T2pBUjFzJUVUYWshR0ZkYW1AaF4jPEFlPUlvWF5fJkxQZVgmVS1CYkVr
Ny0+CnopQHJTMHQkd1hIK0lyZikrRzZjOz9IMjlwK1Y2RjZvanshfG8lSzN4SWA/JTZ4O0RCfHhg
biNpYjxnVFAoX2B5LQp6PT9WNDleJHpMWChNUj1kXnJRNmA+aElSPyhIfVEzR3pkMTM4RWkyKVdB
TXo3VzlWeWBYfUhud2d5RTxXJVZAZmgKeiNBdV9ATnV3dllDaG11NDwyODV9SzR6P005QWQwQS1l
dWZ0SllpeUtHVFdyWXF7WmFFRGIxOD9ucjZEdXc5fENWCnolKlpVPHRrfHJ7PzJiOXJvTkp6OHpT
K0Zue0VkYUJNViFTLWkjQ2hMbWZEdGwlTFNIQW1pTWZmUno2bUZSYHBpYgp6dFZ6fmY+biFWUyk+
bXYkOCZ7aFFuPnc0end5M1J9dDtCWWxaUW01KTZwdHk9RGZMcnMrQS18Pj48YTlmPjt+O1EKel9G
P3VWX0hGamg5bjJnTzlvOVFeSkE4NjxiPEIyYmFKPWlKO1dXZGsjSHF2U1M3I2UlcD52KHtINWFC
IWtqb082CnpjOSQxWlpLc04tWmw4TH5tRXtgbHkzKTFOXmBvMStvN31EMFpQZVkmSjtpO2lgJU55
SjhfOFk2Sj99eUVAYl81YQp6YW0/ZUxyPDxxM15Oe0IrVVVwdHRVaS1ac1BxVW1ScDRLcEokbEp0
UTtKd1J4VV4rZk1XJXx6UDEzdHorMC10KUgKemhyWHUxQkh1bH1CWXhJP25TS1pTcDhHcmMlbCho
fHp1fGZFN1YlQzZVOyk3YTxwSTVjOGlCSXxZWGN0eW5GT1Q9CnpIM2Z8WXk5T0B8SnszWD8yQFAy
dmErN2JzN3hFa1ZWPjhAbUVTa3wzJF9Ta21Te3dRPiVxQzE4KSk5X3wmantaVAp6ZXM4QXZPekYo
RjIjRFpFWT4yb1lYJklScGBGI3tBRGwpMXI+UVNeKWJhOGF8RVlfXiNTXkg8YmpgNUdGakpaNDgK
ellQTkVBWFJLOyRRZnk9Rm80QTB1czw/cjhoeGtTRG1sQVhuQm5qPF88aXl5LUomRUlVMF9TWCtH
bzBqX1JGLXNPCnp1STFkS3hma1o/JmRaKjZKWHRrYWtiRjNXbT1jJD1Lam5pVUxRcFJsUHZ4Zz5P
JnReUmdxd3Y9TVpUaHFxRVdIOAp6eEpvPmQ9QUJsUl9CaD07ZU05PGFoRUdPeSN4bl58UVkoM3A4
SXJqcF5HI01uKjUwaG8qPlR3fEloMzR+b1RFfD0KelhfbUFyKkQkdnp3QCtwKEUwWWM2ZEZFfSg4
PFU2MV92OW5fYk14QzNZPXVuR3FxSWA0UCExTU1GUV9ZY1ROcW4tCnp4SmJRN1RHVFYmWDghOD1C
TVg4U2U3JXNjUGBJJE8qdG1GRUAhJXJBTVl8UndpJkdiT0UtX3RGeEAzNTFAWH4kRAp6WHY/eWV7
WlFncVFkUlA1ZEVEfWpRaUlaXnI5JiUlUzJVSFdsKiE5KHVKbF5EVi07YlFXTDU4S20oXlFWZTx+
TjEKelUjeEpmc0lLXzFNITRxVVM1OUJtZUQhJjQrUz1ZcXg2MUE3TmI5OFFabWpvTnpwcU5ZWUMr
WXxoVlR1bzh9V19oCno4KChjby1nS2RRWVcwckl3OVUlUjEydGhhP09WKll0bFJSVEhseX0+b3F0
YCtSe2dFM3g0empYK1NiM19jWUVePQp6Z0I9dystdFV5YHl0T05NUzhLZ1JlZjRoQT90PE5xOGUk
dXx6dmgxM3hKUCRTI2gjQ1FyRiNlVk1lcGxzYlo+MGoKenVmTTt0MzJqbX5qVUdya2FPSW5UWmB6
eWZucz5FdVN9RzMwTEZLX0ctPT0oZjw1MXxLJmNvY3AmRUpgU3hBaDM/CnpOTz4jTEk9XitTRXUo
RnFKKXludD0hflBDOWJPJHJ6UEpCPT89ajxKYjttVzJTRHY3cUNfVkF7PGJzcHFyKH55fAp6b2xa
WUopUzI5UV9lfWhtWWg2KVl5PU96dW88QTNLP283OHxfc1IzIz1ae19SeW0wZylfaFE+NndAYS0o
dTAyUDcKemFRKSModVVse0hXJXRZTlMzSXRDXmlBdEsoZUtsTGBmOSt7Ykp6SVNFP3U4X3ozO35D
OEBGeUktNWpfank3bDtXCnpfVSN2VTNocXFZVTMhbXJ1bCZCK3twdHQkNTkpdWt7O180aVpRJUd8
eitsaEFTcjZ8SDM1VEJrbD5nSSo7bkdMVQp6TjdXLW5CYU0lcEEwSGJIOG9seWwmWGVKJXZab1d6
JTY/WT1kRnlrbD1pbUx9YCVCTVF7TWhnZGBIUm9MdTZlMlIKemFfXzZEdVI2eWcjfi19VGN8R3hf
e0hATzBlZWJ5TXk1R21XQURKbHBLPmtxayhmVlZAcl9mTExLSWVTP3s0ZSl9CnpeWk87enBFQ2Rl
MDBkYDJPK2YkdnY1dEtFUUlofXcwM2MmWFFjVkI9ZEw7az1mUCgtNGBUcWFfZmF3NExidWEoYAp6
PlI8bz5JK3k/ZTdqS2VaI1lPLUMwUUVea0t+IzkhV1JOalYhJDEmNHxMJn1KKlBjWUNpM3xsT1NU
c1E+ckU4MHgKelI1PTA/TV82KFhwOTZec2k1dkozWnN7bHhtU3NEXnJpZCokRndOKm9QeEpxTGlQ
STVOcEB1QzFiTzhEdzIkdDZPCnpaJUUyM0YjcmJ1PU1TNkJRPDVaKUw9Kn1rVyYoZilhUShkN3kl
PUx8bzJFaEVfZVlQfWQ+JVJILXBqSUZ8TTc9KAp6JmZRbTR3STFue0stUVJyWiFOeWQ1X01mOzNN
bkdgUWNCQDAzfl52YStxUCk7ZHZzan5EdklKV1AxN3hhKERPVzQKellyKUs1V3toYzlTKGQjaXI3
b3RZWCgtPyQmK31KaV9UbzZjR3skSkhISH4hPGZGQSZlcUcpQlV5Xn5UZHxHaFI5CmF6WEpkWnV8
IXUofEpnVkkwMDAwPE1OVU1uTFNUWWlBaU0kcQoKbGl0ZXJhbCAwCkhjbVY/ZDAwMDAxCgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUmVzb3VyY2VzL2hTY3JvbGxDb250cm9sX21pZGRsZS5w
bmcgYi9Tb3VyY2UvV2ViQ29yZS9SZXNvdXJjZXMvaFNjcm9sbENvbnRyb2xfbWlkZGxlLnBuZwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi4zYzM1MTE2ODBkMjllZmQ4ZThiYWU2ZWU1OTI0ZTc0ODc1MDU3MTQwCkdJVCBi
aW5hcnkgcGF0Y2gKbGl0ZXJhbCAyODYyCnpjbVYrfTMoQHE2UCk8aDszS3xMazAwMGUxTkpMVHEw
MDA2MjAwMGRMMV5AczZnVyRqTTAwMDA5YTdiQm0wMDBYVQp6MDAwWFUwUldudTd5dGtZTz0mfHpQ
KjctWmJaPktMWipVKzxMcWl+TmEmS203WS1Jb2RjLW95KWNVWTc2N0N6dGkKeldlLStEKnptRUpZ
PUhuR0JkaUY+NUx1IVNrXm9fWjVFNE1lZ0BfN1A2Y3JKaU5MOXB3KWUxPFJofmw2cXhNeDklCnpo
KzJ6UFRzWkNAK140bURkaGhNK2BgNyF0PWJZI0smVXchZGZEc1pWaz47WG0wNjl7SEpVWkFQazU1
UiUkLVJJQQp6Ni1lTCZBUTB4dSFlPDQ9MDA4ZzxkM2Iod3VzezModVd0WVgwQzNlVkJvZkVyfEFW
P3ZDUllGO2twU1EjNjZYczYKemtXdjgxRT55QEEwTFR+c3V2ND5TM0lMUDwwQm1gRExMdmFGNEZL
JSlOaj9QdCpyfTc7N1hhOXo5SHxIWmpSNjNlCnpDYFRqJEspVjI3UmVANDAwPkh1bXBzWVk1RShF
fT8wZjFTeUdEaVl7eSMpWXZqIyFXbkt3dG9Ybkw7ZWcwM2JMNQp6MDdEKVYlPnk3ejFFNFV7enU+
N35hRH0pPzBSWF91bUNjdCsobFpwZW1DemJAXjY9b3xBPnpWcHV8aT1OREcrN30KejxSWUF4bjxF
b1E9TDFhNjM7K05jYE8oNHRJNnNpKj1IJWgjWDZKMTBedT9uN1l3JkwoSnxYZW57PUFGPTFPTzBE
CnomK3BuXzw+bDRgYUt7MCNiLSF6PVRMOVd0MEJHTyZUe0dKV3BqcnloZGlqZmFJUSYyIW99cDA0
SlJLWWczayZUZgp6VnhoZS08QkxCM0d2Uk9HaSs9WH1LcHlfdmRoaF5vbm4wUFl6QHZseGFiYSRE
dTJQUVklTEdDKFp1alJTez5PIVgKentmO1RvO3h3XmJFRVM2SlNjJGskQjJDQTZ4bClsdEE8MzJF
NjZ0PzNAZ0o3YDM2cG1YMElZXmp6KXJSWXdhYVk0CnplKG5KUml3Oz1RYl50KHJeRFRAVDN5fWEy
WEVaVy1fVyVIc3p4al9xRCoqdF9tISN0VzBLRGlKVCZSPjZPdlZUUgp6MDdSZ0hEekhIWjQ4YXR2
enomP2o5bFhGNzAkflAzS254X25KUDwrIzxiV0lzcCV8N3k4QzFZSiphV3EoMH4oK2EKem4mQSsl
ITcoQHU9aW19dGYkTU09MjRFUFQhV2dgVTI/Um1OMm9xcjtJKjFXc2pAVG0zMnA1QC0xUmBOYkc/
SVglCnpBbkF3e1E2azAyYS07Jk9MVFpzK05GKHdzYXVoakBUdE5EZStzR2c/aXV7VmFNPV9MdnZR
WSFuMChDJlNzMj5gTgp6Iy1NWjJiVGtpTGZSPl9iKEhnV0tKJUZ+TnJfb0YzYiN3cklpakhHfChK
PkJZak0tc2FqRTY7RmlDN3ZZI307R2QKelNUJENVSERldUVIK0JecHpAQjA2MnFYZkZmRGBOcFVX
NT9CWT1WJUdNXzVjKUwjUVJ9QmVXOF8ydi1TJWdmWVM9CnpCOW98M3Y/WTJIYE5WaSlJPGImZ015
d3w4QXMhKX5DMC17RTZKTGBeQm80YHY8VzM0OUM2Rj5uM3JUQjgrZWpePgp6UT1+cjk1TlZ1RENo
TCVHJD0+NyR2VmcyMG15eCVTNTBGb2lgXm0lUHctaD9YaH5pOE1xOWp0SmxvQ29jV2syTnYKenJK
cGlGblZfbXMmOGVRJDImI3hXcElTKzZwbXRDJVEtYFMmRzxCTEsmNl5mTyVjTCElKXpGJTBYS0Q5
bkZYP287CnozRWhKcE1WSFcqKHJmNGs+RjRRI15taHltaDdFKHFOTWF9JVlaLWVQcng+PnhGUFRp
SDE9RStBJFckPWJHOD5zXgp6bT1CbjVSYWgkYUR0cn1AJGBYfTJsfiRGMG1GS0VkUmRaRTgpcEBF
NVJJNjFGdDZvLXByYmJuPlB+KWl5KUUyQU4KenNVMjBqc1d6XzhRZz4zMVB8czBjcXJQQUxnOEV8
KHZXQTY1cG9VMUpSQWFaczhJMihwI3hpQmBTVkdvdlJzLXVTCnpZblYtOVRlQTc9T20rcVA4K0k+
eU9qQVIxcyVFVGFrIUdGZGFtQGheIzxBZT1Jb1heXyZMUGVYJlUtQmJFazctPgp6KUByUzB0JHdY
SCtJcmYpK0c2Yzs/SDI5cCtWNkY2b2p7IXxvJUszeElgPyU2eDtEQnx4YG4jaWI8Z1RQKF9geS0K
ej0/VjQ5XiR6TFgoTVI9ZF5yUTZgPmhJUj8oSH1RM0d6ZDEzOEVpMilXQU16N1c5VnlgWH1Ibndn
eUU8VyVWQGZoCnojQXVfQE51d3ZZQ2htdTQ8Mjg1fUs0ej9NOUFkMEEtZXVmdEpZaXlLR1RXcllx
e1phRURiMTg/bnI2RHV3OXxDVgp6JSpaVTx0a3xyez8yYjlyb05Kejh6UytGbntFZGFCTVYhUy1p
I0NoTG1mRHRsJUxTSEFtaU1mZlJ6Nm1GUmBwaWIKenRWen5mPm4hVlMpPm12JDgme2hRbj53NHp3
eTNSfXQ7QllsWlFtNSk2cHR5PURmTHJzK0EtfD4+PGE5Zj47fjtRCnpfRj91Vl9IRmpoOW4yZ085
bzlRXkpBODY8YjxCMmJhSj1pSjtXV2RrI0hxdlNTNyNlJXA+dih7SDVhQiFram9PNgp6YzkkMVpa
S3NOLVpsOEx+bUV7YGx5MykxTl5gbzErbzd9RDBaUGVZJko7aTtpYCVOeUo4XzhZNko/fXlFQGJf
NWEKemFtP2VMcjw8cTNeTntCK1VVcHR0VWktWnNQcVVtUnA0S3BKJGxKdFE7SndSeFVeK2ZNVyV8
elAxM3R6KzAtdClICnpoclh1MUJIdWx9Qll4ST9uU0taU3A4R3JjJWwoaHx6dXxmRTdWJUM2VTsp
N2E8cEk1YzhpQkl8WVhjdHluRk9UPQp6SDNmfFl5OU9AfEp7M1g/MkBQMnZhKzdiczd4RWtWVj44
QG1FU2t8MyRfU2ttU3t3UT4lcUMxOCkpOV98Jmp7WlQKemVzOEF2T3pGKEYyI0RaRVk+Mm9ZWCZJ
UnBgRiN7QURsKTFyPlFTXiliYThhfEVZX14jU15IPGJqYDVHRmpKWjQ4CnpZUE5FQVhSSzskUWZ5
PUZvNEEwdXM8P3I4aHhrU0RtbEFYbkJuajxfPGl5eS1KJkVJVTBfU1grR28wal9SRi1zTwp6dUkx
ZEt4ZmtaPyZkWio2Slh0a2FrYkYzV209YyQ9S2puaVVMUXBSbFB2eGc+TyZ0XlJncXd2PU1aVGhx
cUVXSDgKenhKbz5kPUFCbFJfQmg9O2VNOTxhaEVHT3kjeG5efFFZKDNwOElyanBeRyNNbio1MGhv
Kj5Ud3xJaDM0fm9URXw9CnpYX21BcipEJHZ6d0ArcChFMFljNmRGRX0oODxVNjFfdjluX2JNeEMz
WT11bkdxcUlgNFAhMU1NRlFfWWNUTnFuLQp6eEpiUTdUR1RWJlg4ITg9Qk1YOFNlNyVzY1BgSSRP
KnRtRkVAISVyQU1ZfFJ3aSZHYk9FLV90RnhAMzUxQFh+JEQKelh2P3lle1pRZ3FRZFJQNWRFRH1q
UWlJWl5yOSYlJVMyVUhXbCohOSh1SmxeRFYtO2JRV0w1OEttKF5RVmU8fk4xCnpVI3hKZnNJS18x
TSE0cVVTNTlCbWVEISY0K1M9WXF4NjFBN05iOThRWm1qb056cHFOWVlDK1l8aFZUdW84fVdfaAp6
OCgoY28tZ0tkUVlXMHJJdzlVJVIxMnRoYT9PVipZdGxSUlRIbHl9Pm9xdGArUntnRTN4NHpqWCtT
YjNfY1lFXj0KemdCPXcrLXRVeWB5dE9OTVM4S2dSZWY0aEE/dDxOcThlJHV8enZoMTN4SlAkUyNo
I0NRckYjZVZNZXBsc2JaPjBqCnp1Zk07dDMyam1+alVHcmthT0luVFpgenlmbnM+RXVTfUczMExG
S19HLT09KGY8NTF8SyZjb2NwJkVKYFN4QWgzPwp6Tk8+I0xJPV4rU0V1KEZxSil5bnQ9IX5QQzli
TyRyelBKQj0/PWo8SmI7bVcyU0R2N3FDX1ZBezxic3Bxcih+eXwKem9sWllKKVMyOVFfZX1obVlo
NilZeT1PenVvPEEzSz9vNzh8X3NSMyM9WntfUnltMGcpX2hRPjZ3QGEtKHUwMlA3CnphUSkjKHVV
bHtIVyV0WU5TM0l0Q15pQXRLKGVLbExgZjkre2JKeklTRT91OF96Mzt+QzhARnlJLTVqX2p5N2w7
Vwp6X1UjdlUzaHFxWVUzIW1ydWwmQit7cHR0JDU5KXVreztfNGlaUSVHfHorbGhBU3I2fEgzNVRC
a2w+Z0kqO25HTFUKek43Vy1uQmFNJXBBMEhiSDhvbHlsJlhlSiV2Wm9XeiU2P1k9ZEZ5a2w9aW1M
fWAlQk1Re01oZ2RgSFJvTHU2ZTJSCnphX182RHVSNnlnI34tfVRjfEd4X3tIQE8wZWVieU15NUdt
V0FESmxwSz5rcWsoZlZWQHJfZkxMS0llUz97NGUpfQp6XlpPO3pwRUNkZTAwZGAyTytmJHZ2NXRL
RVFJaH13MDNjJlhRY1ZCPWRMO2s9ZlAoLTRgVHFhX2ZhdzRMYnVhKGAKej5SPG8+SSt5P2U3aktl
WiNZTy1DMDgyP2tLfiM5IUpqKT54eiN0My0oR0EwKFZpe180IShPNFA5MmJ4SDY9fVFiCnpuSnRv
I2chU0d9MEs0WkRLd1dEQVA8Wj1NQl8mI0dpRFFoIS1hRnkkMDlac14wUU96YTA1ZllBZWJ8Mj5n
YTd+bApNMDcqcW9NNk48JGZASWxrWGFFMkoKCmxpdGVyYWwgMApIY21WP2QwMDAwMQoKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL1Jlc291cmNlcy9oU2Nyb2xsQ29udHJvbF9yaWdodC5wbmcg
Yi9Tb3VyY2UvV2ViQ29yZS9SZXNvdXJjZXMvaFNjcm9sbENvbnRyb2xfcmlnaHQucG5nCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjQ1NzMyZWM3NzUxNDY4NzQwOThiOTFiZjZlMjljMmFmNWY1ZTg1M2YKR0lUIGJpbmFy
eSBwYXRjaApsaXRlcmFsIDMwMjAKemNtVjstM3A0YklQKTxoOzNLfExrMDAwZTFOSkxUcTAwMEk2
MDAwZEwxXkBzNmlWR2kkMDAwMDlhN2JCbTAwMFhVCnowMDBYVTBSV251N3l0a1lPPSZ8elAqNy1a
Ylo+S0xaKlUrPExxaX5OYSZLbTdZLUlvZGMtb3kpY1VZNzY3Q3p0aQp6V2UtK0Qqem1FSlk9SG5H
QmRpRj41THUhU2teb19aNUU0TWVnQF83UDZjckppTkw5cHcpZTE8Umh+bDZxeE14OSUKemgrMnpQ
VHNaQ0ArXjRtRGRoaE0rYGA3IXQ9YlkjSyZVdyFkZkRzWlZrPjtYbTA2OXtISlVaQVBrNTVSJSQt
UklBCno2LWVMJkFRMHh1IWU8ND0wMDhnPGQzYih3dXN7Myh1V3RZWDBDM2VWQm9mRXJ8QVY/dkNS
WUY7a3BTUSM2NlhzNgp6a1d2ODFFPnlAQTBMVH5zdXY0PlMzSUxQPDBCbWBETEx2YUY0RkslKU5q
P1B0KnJ9Nzs3WGE5ejlIfEhaalI2M2UKekNgVGokSylWMjdSZUA0MDA+SHVtcHNZWTVFKEV9PzBm
MVN5R0RpWXt5IylZdmojIVduS3d0b1huTDtlZzAzYkw1CnowN0QpViU+eTd6MUU0VXt6dT43fmFE
fSk/MFJYX3VtQ2N0KyhsWnBlbUN6YkBeNj1vfEE+elZwdXxpPU5ERys3fQp6PFJZQXhuPEVvUT1M
MWE2MzsrTmNgTyg0dEk2c2kqPUglaCNYNkoxMF51P243WXcmTChKfFhlbns9QUY9MU9PMEQKeiYr
cG5fPD5sNGBhS3swI2ItIXo9VEw5V3QwQkdPJlR7R0pXcGpyeWhkaWpmYUlRJjIhb31wMDRKUktZ
ZzNrJlRmCnpWeGhlLTxCTEIzR3ZST0dpKz1YfUtweV92ZGhoXm9ubjBQWXpAdmx4YWJhJER1MlBR
WSVMR0MoWnVqUlN7Pk8hWAp6e2Y7VG87eHdeYkVFUzZKU2MkayRCMkNBNnhsKWx0QTwzMkU2NnQ/
M0BnSjdgMzZwbVgwSVleanopclJZd2FhWTQKemUobkpSaXc7PVFiXnQocl5EVEBUM3l9YTJYRVpX
LV9XJUhzenhqX3FEKip0X20hI3RXMEtEaUpUJlI+Nk92VlRSCnowN1JnSER6SEhaNDhhdHZ6eiY/
ajlsWEY3MCR+UDNLbnhfbkpQPCsjPGJXSXNwJXw3eThDMVlKKmFXcSgwfigrYQp6biZBKyUhNyhA
dT1pbX10ZiRNTT0yNEVQVCFXZ2BVMj9SbU4yb3FyO0kqMVdzakBUbTMycDVALTFSYE5iRz9JWCUK
ekFuQXd7UTZrMDJhLTsmT0xUWnMrTkYod3NhdWhqQFR0TkRlK3NHZz9pdXtWYU09X0x2dlFZIW4w
KEMmU3MyPmBOCnojLU1aMmJUa2lMZlI+X2IoSGdXS0olRn5Ocl9vRjNiI3dySWlqSEd8KEo+Qllq
TS1zYWpFNjtGaUM3dlkjfTtHZAp6U1QkQ1VIRGV1RUgrQl5wekBCMDYycVhmRmZEYE5wVVc1P0JZ
PVYlR01fNWMpTCNRUn1CZVc4XzJ2LVMlZ2ZZUz0KekI5b3wzdj9ZMkhgTlZpKUk8YiZnTXl3fDhB
cyEpfkMwLXtFNkpMYF5CbzRgdjxXMzQ5QzZGPm4zclRCOCtlal4+CnpRPX5yOTVOVnVEQ2hMJUck
PT43JHZWZzIwbXl4JVM1MEZvaWBebSVQdy1oP1hofmk4TXE5anRKbG9Db2NXazJOdgp6ckpwaUZu
Vl9tcyY4ZVEkMiYjeFdwSVMrNnBtdEMlUS1gUyZHPEJMSyY2XmZPJWNMISUpekYlMFhLRDluRlg/
bzsKejNFaEpwTVZIVyoocmY0az5GNFEjXm1oeW1oN0UocU5NYX0lWVotZVByeD4+eEZQVGlIMT1F
K0EkVyQ9Ykc4PnNeCnptPUJuNVJhaCRhRHRyfUAkYFh9Mmx+JEYwbUZLRWRSZFpFOClwQEU1Ukk2
MUZ0Nm8tcHJiYm4+UH4paXkpRTJBTgp6c1UyMGpzV3pfOFFnPjMxUHxzMGNxclBBTGc4RXwodldB
NjVwb1UxSlJBYVpzOEkyKHAjeGlCYFNWR292UnMtdVMKelluVi05VGVBNz1PbStxUDgrST55T2pB
UjFzJUVUYWshR0ZkYW1AaF4jPEFlPUlvWF5fJkxQZVgmVS1CYkVrNy0+CnopQHJTMHQkd1hIK0ly
ZikrRzZjOz9IMjlwK1Y2RjZvanshfG8lSzN4SWA/JTZ4O0RCfHhgbiNpYjxnVFAoX2B5LQp6PT9W
NDleJHpMWChNUj1kXnJRNmA+aElSPyhIfVEzR3pkMTM4RWkyKVdBTXo3VzlWeWBYfUhud2d5RTxX
JVZAZmgKeiNBdV9ATnV3dllDaG11NDwyODV9SzR6P005QWQwQS1ldWZ0SllpeUtHVFdyWXF7WmFF
RGIxOD9ucjZEdXc5fENWCnolKlpVPHRrfHJ7PzJiOXJvTkp6OHpTK0Zue0VkYUJNViFTLWkjQ2hM
bWZEdGwlTFNIQW1pTWZmUno2bUZSYHBpYgp6dFZ6fmY+biFWUyk+bXYkOCZ7aFFuPnc0end5M1J9
dDtCWWxaUW01KTZwdHk9RGZMcnMrQS18Pj48YTlmPjt+O1EKel9GP3VWX0hGamg5bjJnTzlvOVFe
SkE4NjxiPEIyYmFKPWlKO1dXZGsjSHF2U1M3I2UlcD52KHtINWFCIWtqb082CnpjOSQxWlpLc04t
Wmw4TH5tRXtgbHkzKTFOXmBvMStvN31EMFpQZVkmSjtpO2lgJU55SjhfOFk2Sj99eUVAYl81YQp6
YW0/ZUxyPDxxM15Oe0IrVVVwdHRVaS1ac1BxVW1ScDRLcEokbEp0UTtKd1J4VV4rZk1XJXx6UDEz
dHorMC10KUgKemhyWHUxQkh1bH1CWXhJP25TS1pTcDhHcmMlbChofHp1fGZFN1YlQzZVOyk3YTxw
STVjOGlCSXxZWGN0eW5GT1Q9CnpIM2Z8WXk5T0B8SnszWD8yQFAydmErN2JzN3hFa1ZWPjhAbUVT
a3wzJF9Ta21Te3dRPiVxQzE4KSk5X3wmantaVAp6ZXM4QXZPekYoRjIjRFpFWT4yb1lYJklScGBG
I3tBRGwpMXI+UVNeKWJhOGF8RVlfXiNTXkg8YmpgNUdGakpaNDgKellQTkVBWFJLOyRRZnk9Rm80
QTB1czw/cjhoeGtTRG1sQVhuQm5qPF88aXl5LUomRUlVMF9TWCtHbzBqX1JGLXNPCnp1STFkS3hm
a1o/JmRaKjZKWHRrYWtiRjNXbT1jJD1Lam5pVUxRcFJsUHZ4Zz5PJnReUmdxd3Y9TVpUaHFxRVdI
OAp6eEpvPmQ9QUJsUl9CaD07ZU05PGFoRUdPeSN4bl58UVkoM3A4SXJqcF5HI01uKjUwaG8qPlR3
fEloMzR+b1RFfD0KelhfbUFyKkQkdnp3QCtwKEUwWWM2ZEZFfSg4PFU2MV92OW5fYk14QzNZPXVu
R3FxSWA0UCExTU1GUV9ZY1ROcW4tCnp4SmJRN1RHVFYmWDghOD1CTVg4U2U3JXNjUGBJJE8qdG1G
RUAhJXJBTVl8UndpJkdiT0UtX3RGeEAzNTFAWH4kRAp6WHY/eWV7WlFncVFkUlA1ZEVEfWpRaUla
XnI5JiUlUzJVSFdsKiE5KHVKbF5EVi07YlFXTDU4S20oXlFWZTx+TjEKelUjeEpmc0lLXzFNITRx
VVM1OUJtZUQhJjQrUz1ZcXg2MUE3TmI5OFFabWpvTnpwcU5ZWUMrWXxoVlR1bzh9V19oCno4KChj
by1nS2RRWVcwckl3OVUlUjEydGhhP09WKll0bFJSVEhseX0+b3F0YCtSe2dFM3g0empYK1NiM19j
WUVePQp6Z0I9dystdFV5YHl0T05NUzhLZ1JlZjRoQT90PE5xOGUkdXx6dmgxM3hKUCRTI2gjQ1Fy
RiNlVk1lcGxzYlo+MGoKenVmTTt0MzJqbX5qVUdya2FPSW5UWmB6eWZucz5FdVN9RzMwTEZLX0ct
PT0oZjw1MXxLJmNvY3AmRUpgU3hBaDM/CnpOTz4jTEk9XitTRXUoRnFKKXludD0hflBDOWJPJHJ6
UEpCPT89ajxKYjttVzJTRHY3cUNfVkF7PGJzcHFyKH55fAp6b2xaWUopUzI5UV9lfWhtWWg2KVl5
PU96dW88QTNLP283OHxfc1IzIz1ae19SeW0wZylfaFE+NndAYS0odTAyUDcKemFRKSModVVse0hX
JXRZTlMzSXRDXmlBdEsoZUtsTGBmOSt7Ykp6SVNFP3U4X3ozO35DOEBGeUktNWpfank3bDtXCnpf
VSN2VTNocXFZVTMhbXJ1bCZCK3twdHQkNTkpdWt7O180aVpRJUd8eitsaEFTcjZ8SDM1VEJrbD5n
SSo7bkdMVQp6TjdXLW5CYU0lcEEwSGJIOG9seWwmWGVKJXZab1d6JTY/WT1kRnlrbD1pbUx9YCVC
TVF7TWhnZGBIUm9MdTZlMlIKemFfXzZEdVI2eWcjfi19VGN8R3hfe0hATzBlZWJ5TXk1R21XQURK
bHBLPmtxayhmVlZAcl9mTExLSWVTP3s0ZSl9CnpeWk87enBFQ2RlMDBkYDJPK2YkdnY1dEtFUUlo
fXcwM2MmWFFjVkI9ZEw7az1mUCgtNGBUcWFfZmF3NExidWEoYAp6PlI8bz5JK3k/ZTdqS2VaI1lP
LUMwTz82WUt+IzkhVCN6d05naXNpUz1qVlM5b2BMNSFLdG5AZUxTYlFMPERPJHIKekt3KWRRRztV
KlFYSXh7IzVvcW5hME5vT0F1eD84c0chalZtd19DfGhIPGAobyVtRHYjME1OO1dWWXNyXlVZYH1m
CnprREpaelpuPDF0RSozWFk5UkdhcF9YaHc+PiFKYE1nNkRZPGs+OXAkaT97OWVSUk1zQVU+Rjdm
eFVra2ZYSWJ7OAp6V145TkVoeyg8Sns2VUd4RFI4eGhAQjEqdVRxJEQ9dntLTm4zcy05PnJOR1B3
Ni1OPD5YaWh2ZlA0blZSKH1aeXgKeiFPVVJoVzdsPDBXbSRmekFQNH1VdD9QUSVfeCpjU1JVWkh4
cS1sRGVCKzJkaF4wfDJhKSF6VmJQKHhpZy1NezRrCk8wMDAwPE1OVU1uTFNUWkw2MV9WQgoKbGl0
ZXJhbCAwCkhjbVY/ZDAwMDAxCgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUmVzb3VyY2Vz
L2luY3JlbWVudEFycm93LnRpZmYgYi9Tb3VyY2UvV2ViQ29yZS9SZXNvdXJjZXMvaW5jcmVtZW50
QXJyb3cudGlmZgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kNmY0YjdmMDY4ZThkN2ZhZTUwMzkzODk1MTY5Zjk0ZjZm
NTk4NDQ5CkdJVCBiaW5hcnkgcGF0Y2gKbGl0ZXJhbCA1NTAKemNtYUtvRiVINW8zYE9rfXM8TURV
MHdoNHBoJDg/YTB8UTspRWBANlc3diVwbU1pej9WJG5qVStrSz92JldpTyZ2Cno1cVRueSRXblgm
bmRhNHUqKnNQc0BVWEE8OHZDIzhkcklDbllBRnZIJlZJYlpIXn58UDRZQ2V0akdWI3E3YyQ0bAp6
ODcwO2BDaXVoKFFlfWlxb2VvaENMXykxcUkpXz43cXl6TCt6fmYoUGJtbHpzcShPQ1E5ekUreWhQ
XitHYl5YJXwKYy1NRzZ1Klo9MHU/QEBEfVo1K0xreEdyZWB0QyVMUEZRc29GZGpKM2MKCmxpdGVy
YWwgMApIY21WP2QwMDAwMQoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1Jlc291cmNlcy9t
YXJrZWRMZWZ0LnBuZyBiL1NvdXJjZS9XZWJDb3JlL1Jlc291cmNlcy9tYXJrZWRMZWZ0LnBuZwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi4yNjhlZGExZTBhNGIzMGUzMjY5YTkwZGFmZDk1NGUzZDUxNDgwOWNhCkdJVCBi
aW5hcnkgcGF0Y2gKbGl0ZXJhbCAyOTg3CnpjbVY7YzNzbSVwUCk8aDszS3xMazAwMGUxTkpMVHEw
MDBGNTAwMH5hMV5AczZza1V7dDAwMDA5YTdiQm0wMDBYVQp6MDAwWFUwUldudTd5dGtZUGlhRiNQ
KjctWmJaPktMWipVKzxMcWl+TmEmS203WS1Jb2RjLW95KVhILSteN0NyYWcKel5nPklCZlJzeWJR
V1hkd1FiTFA+NnA8ej5BcWZ5bGgje2ZiNjtaKHZNTVZTfiRlQFM9aipmdGc2O1VoPGlWRH5WCno8
UlBNdGdRSkx3JUtQRGFxaWZjQF92WCQxd2J3cjl0bjswLSZqLUs9NDM8YlVROGo9SnNYYHRSO0Rn
NysjXkt+SAp6SyFGTSpafnpicHZ0JUsye1VaU1lfPGxTKkQ8WiVMejVvR3UoK2RheXopaFJMRmRU
PmY1OSZnaFRtZ1dEMGw7KlQKekk3PGtDNmFZWWFqelhwWUt0PSg4b3RQJDUwSDZjX1Y5UjQtO3ta
QEMwQU1HNz1GPFJ4byVvcjEwUlVUK0FyJTNqCnprcExoUVdyIyFvWGdkSWAmc0tePjA5WV5wNmxQ
MXJJUk14IzA1Q35jVz1IX0F3KmJKLTVEVCZaMm4reClRSFhecAp6MDBlc2dWOHxtUWNtUlolMDJE
XkBTM0wxNnRgTyVjMDA0Tkl2T0t2WUlZb2g2MnJZMzNTNjQwYEQ5JVkyRC08P2kKejAlNGohRjJa
QDQ4OFUlMTU4KDY2MDA1d282JXBXcl5aal92NHpBQTVIamNJcVVvR210MkxCPnJWJm5laCYjUTFp
CnowMDd+MWUkb0NjRlM4bmVJfGhKbHstUCFCMVpaOWhwbXEwKVgwaWBKd0UmPiQrRT8+JV88bFMq
TVdLK24rMWNnZgp6PGsoOFlMUig/VlNBRzZ4IWU3OHd7Y1FQdUpwQXxkO0opR3tmaWhpek0rRXJi
IXAhdGNyNXcrYTM0fihZPThzNEcKencrc0xMOW4mSmpObipLSkRpcV5VNV47YDFudkMtQHI2UCQh
a30xVXsoKkk9US16QHRCS0hvSX11eGRVNWR5eUB1CnpVMUowR09EN09tYmltXkcwMDhwNFpeNl9r
Mm1ecDxnVz1EMnxMO0hqTjEhRERmTSFYT2FSMn5iTD9rWCQlQ2tTbQp6Mm1rOz9wbilvfEteeWVK
NyVhZEI5S2krTCEzK0ZnSGlTWVgjS0otbExKRE1uOUNCYk90YiMlKWhSdmBZRHF0X3YKektwaXh8
UUR9eWZhMUppUVJrI2o0YTFaKW4yJWY8eHluelY+TEM2UmJWSWtVeDBiK18rQmFSM2NuVDdadiFB
SnhXCnppekZiKWghanlHT09aODVGO2E/REFYUHttQDshMF9JZnE8RXh7KjdgMDVYRjdoUCsySGwh
M0JRSj02QGZMJUZDbwp6OGlZb28zKCNiQUZgQURTcHF0UWd2Pkg4KEhsZ1J4dDdzM31rM0tga0Z1
Pj4tMlEkUU1GZlBXIUxhe2gzMzZvPlgKenVfQ010dEh2NnpSOyZaTmlTPVg4djNDUiNma25VeEhV
eEo8QVltUnNOTFdsKlBTe0FPQVJIdCM1IXdraTI/Szt0CnohWTNrPXM3dGdheClKJXI3LUJMcGhn
ZTd+QmkwZys2RTZeWmgocDlUQm9jezNHQUZyXjAhZ3U/Uk1IYUNNJCZGbAp6QmszJXVuPjB1b0Jh
X002V05XZXFJZ342UUU2OWM5byNleWhHdnBpT0FAVy1hb25rPDdyMSg/ZkN7b0k1TipVITQKejx1
djY2V3RjS1NSaW0weC1LZTJkNWpCcm1MYW17O1FtO3ttczFyMUdubU5zYjdELUVgdClpOUY4Zlhg
Ml9pMy1fCnpiaDs3VWxeI3gpJnt4dlM9fHx8Nz1tWWUzMz1NYEFnVTUoeEM+Zmc9Mk4tNz1jTm5q
ak9ye3lyaXk2bU1GZ0cjbAp6bkNGPWZuUXY4Q0R6KytvNl9Mc2NsfWVRK2xeWkhBUkg+P19zQHwj
I1JyNktMUkZBMSVRKz0qUlJXbm9Mc1JgN1UKenQ1dkY8UTByNDBRKWo2PXNFNFgmc0JjdDFxPCZm
YmkzVkIyT3Y2dEBxKjApO1UqbypTQVBadnx2dkAyYVlZblQwCnpiJThhK0NiNy1nZTBEMGtuRWY1
UWkjQDhUcCpjZXtOOzZscFF1Q0IlS0xfS09hcm01Y1A2XzhJcjxlMTdpcnk2Twp6RGRIJmByWmh+
c0Y9YnE5cytPMFFTZ1N+QFFMOUpteSo5NHhyPTZ5fk1ZfiExZmV0fihOKyg8PU1gd0BEMSliK3AK
eio7QyE4M2ExdUxKdiNOU0V+O3kjOD08PkljZlczQD93RnB3VVZ4clZaPlFkUXozMktJZUp9a357
Y1paRV4reWE/CnoyRDF6IzJIT25JNyhCJV9hYz97d0ZVUTtRUUExdEJLdHJXcm0wXzNSZ3BzKz9K
ZnFie2pZYmNRWH50YVJCOyMkeQp6Wk57U30xfH1nVU9ISnhjP3dWM2Z4dXorbUo0YCFGJElaO21x
UnJOc0hKZCMjKkR+anU9YlA3Py0/dn58Y3Y+dkIKenNKNkllTndWWnhyZGpUYHlsI2JCSWEjR3hS
YSN4TU15O0sjQ0R5eUd5UWRNU3hsV1QjdERlP3AhPzV3VCQrb0d0Cno4TDtLcDJIVVEtWk1KPTNY
SlF2O3g1Y2kqP3Z1VGZlWSQ7KHtYR1dfaHVJRlI5YTxmSmJGXnw0SSN4UX5uJERjPQp6S1loallt
Z3o1TlNrRG04KmZabXs2VSE7WVhgTkc+KD9AMylYU3M4T15ONVJ5T009VFRtcCgzPTheK3pwejJy
KUMKel4+Sk97ZGVaZnNvM29xMz9XbyhZP2wkZ2U/dVhvOyVydWBWbz4/PDwoOElfPjs4RXEjS01T
OWdGbCpuZWVvc1NCCnpmb0hZbkJRSWt3a3lvd1B1KHpkbXNgcHs8N2U0a3JhLVpXcTwyKk9zR1R2
RVYlczBUZCRoWFQrISo4Qm5oMktNZQp6Qm1aUm9kakhWP3IrXzVeWDlKMFdMNGpLV2B9bGYlQS18
NDRJQEBMVHZmMXJIakcoemU2K3dASnQlQnZqdHMhWDAKej8yeFM/X3ZlXy1rPE11amc7MEx6KjNi
dUc9MyRHJmVoZXB0aGxOKiRLYU95U1NRXm5XbW88ME0rKFVFVU1FWFJRCnpNQmJaY0Y7NitLRWxN
PmlLQl9LaUpsWiQ5R2BjXj1FQG9ORyltV1dhTm8tM1RJVzgpJEhnMFViLX44P0todko+JAp6Myom
bmltQG1qKGFDeEU1IXR7bHc3TzVeMEVJTzd6T28mYzZsPCt8aUR5U0JXQ0dyekBDNXtTdCFYM2hB
QX1gVDQKeihUTGJYVHErKDtAPD1MOGRYbnNzeWZ0fHcjV1NUVzwrKzM+c2dTJSg0TlRwZUktVkFx
Ynw3c3NKdnpOSGdPWlZ1CnphWUN2Z09fUjF+PlN5TD1jRlV8fmd8aHl8Wml9fXM5K2R+bFlxT0I3
MXo5WiR3bkM9cFI5WXo0RGhJTT5XbWpndQp6JjU2bzZtYUNwQyZGIyN5JUc7MVBvYlI5aT9Hbk5n
O2dZdGNoRCVwMTlhIWVRdFpGJjNKYUt2MzNnWjw4RH40N0UKenRVUzFpd2ttRGFQcGo9JG0jJSlq
Q1ZFWTRmbkxHTmcyQS1gWXdIVkQzZ3Z9Oz4paEF2VH5BbXFTPkxyYGBpN2t3CnpKezVfSXRgeXJC
bWxjMjVEQk83RTg7NVZvem5SPld3NWhBYXhuJDJ+KHFgJUEtWXVTNjR3a0J5PTlkbWA0Y1hlWAp6
NGN9SUA/ZStGVytiQF5SREJIVih3bk1xMnpkWDNTV3Y5dWAle3hDLXEqVX0mYGN5WFYoJXJSVCpa
Nk1IP2kraSYKel9COEMoK2dyVCV7WFdVUStmQE5vUDFSPUFXJjI2e3YtZHgpaUteLU5taXVqOHR4
aiFtP1oqU3MxTntkaDR6fTAxCnopWVRvKkp5Y1NVKStfNXI0I3l3OXsrO2k0RWUkcGVSZ0lqKzt2
O1pHZEYxSyQzRSVlfjRMYUkoakMtdSUyaCQmUgp6OWNMWGNZQ0BYd25ucyZibilfUX5UZT9yb0tH
RHxkLWdeODsrYUN7e0coMV4oTzdtMzdZMS0rNikwMWNOJnkxYXcKem9xY3tUYFBeWEpxUEJiSVc2
c31kNHt6X2Y1T20/dk1nTlFFSkc/djJUPUtZZF4wTTNJNklaeGJueSkldlpSJkxECnpKcFBsQFBz
aDhReVBCQEtUeCtAUmRjQyFLWDd9a0VvO1N8al51MmxVN1hRfU9vO2Z8O3o0TGwrX3I+QDEteGwz
fAp6YXdxLUglZSZja0MrQEFoUHJQNkJLPHo9PEwqMGtmS1VAQ1gqemVxYllRVDQoXlU+VCNfWGRU
NyY7Rjcxan1Kb3kKemtDfjZsaDdFQDZvO1dAXklwUk5ae3B0THRMKGdRLUNZfjRtcVc7VVM3Wnh2
bV98QHl6JmU1M0JwX2xUUGxmUHx6CnpyVHl4Xz5sdkB4Iz1eIVB6UjdxcUY8JGdtYHxaSlorOzwp
Q3F1Jm90PGF7ODFERjB+cnZHcjVYcn44dWBsYXYxaAp6MUROeXRWPjJ6PTAwMDA0WEYqTHQwMDZP
JGVFVSg4MDAwMFdWQE9nPjAwNFI9MDA0bDQwMDg7XzAwNG1MMDA0Q2AKejAwOFA+MDAyNmUwMDAr
bmwzJkZ9MDAwMlNOa2w8WmMtb0FUeT0/K1A2b2tLLVVGNShgVD4lST1BLTV9VjM5ZisoCnpEMVpi
Wj1lUUhnQkJLSk15Uz9YdDZOMEBCSmtsaGUtcD4yY2liP0Nrdkk5Tj5JISlqZXY1aGVSKEU3MEs1
WFZTRAp6e1N7ezVVQ0MkJmtSflgtIzFQeW8lT2J8ezBvcFJQdklNcChoeWN9PEJEc1BGTFloQ1hk
dTBKbW9AWipfOW57S1AKejxWSSFrZT0tNGJZT0xBWlR9aDJBKWd1azE7UUFuIUdSJWhlclN5Qi1K
USYhVnpSd1djP0FffH4+JG1pOHI9SyZECmh1Q0JrJF5XdiVkOHZ4RG9HZGVVKzw9X0FTMDAyb3ZQ
REhMa1YxaFhga0hQPXwKCmxpdGVyYWwgMApIY21WP2QwMDAwMQoKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL1Jlc291cmNlcy9tYXJrZWRNaWRkbGUucG5nIGIvU291cmNlL1dlYkNvcmUvUmVz
b3VyY2VzL21hcmtlZE1pZGRsZS5wbmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNTE3YWUxNDE4MTRlMTdjYjdjODQ1
YmE4OGJiMTMxY2QxY2U3YmY0NgpHSVQgYmluYXJ5IHBhdGNoCmxpdGVyYWwgMjgxNwp6Y21WK2Mz
O3kocFApPGg7M0t8TGswMDBlMU5KTFRxMDAwNjIwMDB+YTBzc0kyIzBkR0EwMDAwOWE3YkJtMDAw
WFUKejAwMFhVMFJXbnU3eXRrWVBpYUYjUCo3LVpiWj5LTFoqVSs8THFpfk5hJkttN1ktSW9kYy1v
eSlYSC0rXjdDcmFnCnpeZz5JQmZSc3liUVdYZHdRYkxQPjZwPHo+QXFmeWxoI3tmYjY7Wih2TU1W
U34kZUBTPWoqZnRnNjtVaDxpVkR+Vgp6PFJQTXRnUUpMdyVLUERhcWlmY0BfdlgkMXdid3I5dG47
MC0mai1LPTQzPGJVUThqPUpzWGB0UjtEZzcrI15LfkgKekshRk0qWn56YnB2dCVLMntVWlNZXzxs
UypEPFolTHo1b0d1KCtkYXl6KWhSTEZkVD5mNTkmZ2hUbWdXRDBsOypUCnpJNzxrQzZhWVlhanpY
cFlLdD0oOG90UCQ1MEg2Y19WOVI0LTt7WkBDMEFNRzc9RjxSeG8lb3IxMFJVVCtBciUzagp6a3BM
aFFXciMhb1hnZElgJnNLXj4wOVlecDZsUDFySVJNeCMwNUN+Y1c9SF9BdypiSi01RFQmWjJuK3gp
UUhYXnAKejAwZXNnVjh8bVFjbVJaJTAyRF5AUzNMMTZ0YE8lYzAwNE5Jdk9LdllJWW9oNjJyWTMz
UzY0MGBEOSVZMkQtPD9pCnowJTRqIUYyWkA0ODhVJTE1OCg2NjAwNXdvNiVwV3JeWmpfdjR6QUE1
SGpjSXFVb0dtdDJMQj5yViZuZWgmI1ExaQp6MDA3fjFlJG9DY0ZTOG5lSXxoSmx7LVAhQjFaWjlo
cG1xMClYMGlgSndFJj4kK0U/PiVfPGxTKk1XSytuKzFjZ2YKejxrKDhZTFIoP1ZTQUc2eCFlNzh3
e2NRUHVKcEF8ZDtKKUd7ZmloaXpNK0VyYiFwIXRjcjV3K2EzNH4oWT04czRHCnp3K3NMTDluJkpq
Tm4qS0pEaXFeVTVeO2AxbnZDLUByNlAkIWt9MVV7KCpJPVEtekB0QktIb0l9dXhkVTVkeXlAdQp6
VTFKMEdPRDdPbWJpbV5HMDA4cDRaXjZfazJtXnA8Z1c9RDJ8TDtIak4xIUREZk0hWE9hUjJ+Ykw/
a1gkJUNrU20KejJtazs/cG4pb3xLXnllSjclYWRCOUtpK0whMytGZ0hpU1lYI0tKLWxMSkRNbjlD
QmJPdGIjJSloUnZgWURxdF92CnpLcGl4fFFEfXlmYTFKaVFSayNqNGExWiluMiVmPHh5bnpWPkxD
NlJiVklrVXgwYitfK0JhUjNjblQ3WnYhQUp4Vwp6aXpGYiloIWp5R09PWjg1RjthP0RBWFB7bUA7
ITBfSWZxPEV4eyo3YDA1WEY3aFArMkhsITNCUUo9NkBmTCVGQ28KejhpWW9vMygjYkFGYEFEU3Bx
dFFndj5IOChIbGdSeHQ3czN9azNLYGtGdT4+LTJRJFFNRmZQVyFMYXtoMzM2bz5YCnp1X0NNdHRI
djZ6UjsmWk5pUz1YOHYzQ1IjZmtuVXhIVXhKPEFZbVJzTkxXbCpQU3tBT0FSSHQjNSF3a2kyP0s7
dAp6IVkzaz1zN3RnYXgpSiVyNy1CTHBoZ2U3fkJpMGcrNkU2XlpoKHA5VEJvY3szR0FGcl4wIWd1
P1JNSGFDTSQmRmwKekJrMyV1bj4wdW9CYV9NNldOV2VxSWd+NlFFNjljOW8jZXloR3ZwaU9BQFct
YW9uazw3cjEoP2ZDe29JNU4qVSE0Cno8dXY2Nld0Y0tTUmltMHgtS2UyZDVqQnJtTGFteztRbTt7
bXMxcjFHbm1Oc2I3RC1FYHQpaTlGOGZYYDJfaTMtXwp6Ymg7N1VsXiN4KSZ7eHZTPXx8fDc9bVll
MzM9TWBBZ1U1KHhDPmZnPTJOLTc9Y05uampPcnt5cml5Nm1NRmdHI2wKem5DRj1mblF2OENEeisr
bzZfTHNjbH1lUStsXlpIQVJIPj9fc0B8IyNScjZLTFJGQTElUSs9KlJSV25vTHNSYDdVCnp0NXZG
PFEwcjQwUSlqNj1zRTRYJnNCY3QxcTwmZmJpM1ZCMk92NnRAcSowKTtVKm8qU0FQWnZ8dnZAMmFZ
WW5UMAp6YiU4YStDYjctZ2UwRDBrbkVmNVFpI0A4VHAqY2V7Tjs2bHBRdUNCJUtMX0tPYXJtNWNQ
Nl84SXI8ZTE3aXJ5Nk8KekRkSCZgclpofnNGPWJxOXMrTzBRU2dTfkBRTDlKbXkqOTR4cj02eX5N
WX4hMWZldH4oTisoPD1NYHdARDEpYitwCnoqO0MhODNhMXVMSnYjTlNFfjt5Izg9PD5JY2ZXM0A/
d0Zwd1VWeHJWWj5RZFF6MzJLSWVKfWt+e2NaWkVeK3lhPwp6MkQxeiMySE9uSTcoQiVfYWM/e3dG
VVE7UVFBMXRCS3RyV3JtMF8zUmdwcys/SmZxYntqWWJjUVh+dGFSQjsjJHkKelpOe1N9MXx9Z1VP
SEp4Yz93VjNmeHV6K21KNGAhRiRJWjttcVJyTnNISmQjIypEfmp1PWJQNz8tP3Z+fGN2PnZCCnpz
SjZJZU53Vlp4cmRqVGB5bCNiQklhI0d4UmEjeE1NeTtLI0NEeXlHeVFkTVN4bFdUI3REZT9wIT81
d1QkK29HdAp6OEw7S3AySFVRLVpNSj0zWEpRdjt4NWNpKj92dVRmZVkkOyh7WEdXX2h1SUZSOWE8
ZkpiRl58NEkjeFF+biREYz0KektZaGpZbWd6NU5Ta0RtOCpmWm17NlUhO1lYYE5HPig/QDMpWFNz
OE9eTjVSeU9NPVRUbXAoMz04Xit6cHoycilDCnpePkpPe2RlWmZzbzNvcTM/V28oWT9sJGdlP3VY
bzslcnVgVm8+Pzw8KDhJXz47OEVxI0tNUzlnRmwqbmVlb3NTQgp6Zm9IWW5CUUlrd2t5b3dQdSh6
ZG1zYHB7PDdlNGtyYS1aV3E8MipPc0dUdkVWJXMwVGQkaFhUKyEqOEJuaDJLTWUKekJtWlJvZGpI
Vj9yK181Xlg5SjBXTDRqS1dgfWxmJUEtfDQ0SUBATFR2ZjFySGpHKHplNit3QEp0JUJ2anRzIVgw
Cno/MnhTP192ZV8tazxNdWpnOzBMeiozYnVHPTMkRyZlaGVwdGhsTiokS2FPeVNTUV5uV21vPDBN
KyhVRVVNRVhSUQp6TUJiWmNGOzYrS0VsTT5pS0JfS2lKbFokOUdgY149RUBvTkcpbVdXYU5vLTNU
SVc4KSRIZzBVYi1+OD9LaHZKPiQKejMqJm5pbUBtaihhQ3hFNSF0e2x3N081XjBFSU83ek9vJmM2
bDwrfGlEeVNCV0NHcnpAQzV7U3QhWDNoQUF9YFQ0CnooVExiWFRxKyg7QDw9TDhkWG5zc3lmdHx3
I1dTVFc8KyszPnNnUyUoNE5UcGVJLVZBcWJ8N3NzSnZ6TkhnT1pWdQp6YVlDdmdPX1Ixfj5TeUw9
Y0ZVfH5nfGh5fFppfX1zOStkfmxZcU9CNzF6OVokd25DPXBSOVl6NERoSU0+V21qZ3UKeiY1Nm82
bWFDcEMmRiMjeSVHOzFQb2JSOWk/R25OZztnWXRjaEQlcDE5YSFlUXRaRiYzSmFLdjMzZ1o8OER+
NDdFCnp0VVMxaXdrbURhUHBqPSRtIyUpakNWRVk0Zm5MR05nMkEtYFl3SFZEM2d2fTs+KWhBdlR+
QW1xUz5McmBgaTdrdwp6Sns1X0l0YHlyQm1sYzI1REJPN0U4OzVWb3puUj5XdzVoQWF4biQyfihx
YCVBLVl1UzY0d2tCeT05ZG1gNGNYZVgKejRjfUlAP2UrRlcrYkBeUkRCSFYod25NcTJ6ZFgzU1d2
OXVgJXt4Qy1xKlV9JmBjeVhWKCVyUlQqWjZNSD9pK2kmCnpfQjhDKCtnclQle1hXVVErZkBOb1Ax
Uj1BVyYyNnt2LWR4KWlLXi1ObWl1ajh0eGohbT9aKlNzMU57ZGg0en0wMQp6KVlUbypKeWNTVSkr
XzVyNCN5dzl7KztpNEVlJHBlUmdJais7djtaR2RGMUskM0UlZX40TGFJKGpDLXUlMmgkJlIKejlj
TFhjWUNAWHdubnMmYm4pX1F+VGU/cm9LR0R8ZC1nXjg7K2FDe3tHKDFeKE83bTM3WTEtKzYpMDFj
TiZ5MWF3CnpvcWN7VGBQXlhKcVBCYklXNnN9ZDR7el9mNU9tP3ZNZ05RRUpHP3YyVD1LWWReME0z
STZJWnhibnkpJXZaUiZMRAp6SnBQbEBQc2g4UXlQQkBLVHgrQFJkY0MhS1g3fWtFbztTfGpedTJs
VTdYUX1PbztmfDt6NExsK19yPkAxLXhsM3wKemF3cS1IJWUmY2tDK0BBaFByUDZCSzx6PTxMKjBr
ZktVQENYKnplcWJZUVQ0KF5VPlQjX1hkVDcmO0Y3MWp9Sm95CnprQ342bGg3RUA2bztXQF5JcFJO
WntwdEx0TChnUS1DWX40bXFXO1VTN1p4dm1ffEB5eiZlNTNCcF9sVFBsZlB8egp6clR5eF8+bHZA
eCM9XiFQelI3cXFGPCRnbWB8WkpaKzs8KUNxdSZvdDxhezgxREYwfnJ2R3I1WHJ+OHVgbGF2MWgK
ejFETnl0Vj4yej0wMDAwNFhGKkx0MDA2TyRlRVUoODAwMDBXVkBPZz4wMDRSPTAwNGw0MDA4O18w
MDRtTDAwNENgCnowMDhQPjAwMjZlMDAwK25sMyZGfTAwMDBTTmtsPFpjLW1yUWh+TFAtemAoQDd6
JVhQZjAwMDAwfE5qRjM8RCZzYwpUWCg3KGMwMDAwME5rdlhYdTBtamZmSi08YQoKbGl0ZXJhbCAw
CkhjbVY/ZDAwMDAxCgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUmVzb3VyY2VzL21hcmtl
ZFJpZ2h0LnBuZyBiL1NvdXJjZS9XZWJDb3JlL1Jlc291cmNlcy9tYXJrZWRSaWdodC5wbmcKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uZDc0OTdkMzU2NTIxOGZkN2YzOGMxZjU4ZjRjOTIwM2ExOWQxNTk2NwpHSVQgYmlu
YXJ5IHBhdGNoCmxpdGVyYWwgMjk5OAp6Y21WO24zclh+ZVApPGg7M0t8TGswMDBlMU5KTFRxMDAw
RjUwMDB+YTFeQHM2c2tVe3QwMDAwOWE3YkJtMDAwWFUKejAwMFhVMFJXbnU3eXRrWVBpYUYjUCo3
LVpiWj5LTFoqVSs8THFpfk5hJkttN1ktSW9kYy1veSlYSC0rXjdDcmFnCnpeZz5JQmZSc3liUVdY
ZHdRYkxQPjZwPHo+QXFmeWxoI3tmYjY7Wih2TU1WU34kZUBTPWoqZnRnNjtVaDxpVkR+Vgp6PFJQ
TXRnUUpMdyVLUERhcWlmY0BfdlgkMXdid3I5dG47MC0mai1LPTQzPGJVUThqPUpzWGB0UjtEZzcr
I15LfkgKekshRk0qWn56YnB2dCVLMntVWlNZXzxsUypEPFolTHo1b0d1KCtkYXl6KWhSTEZkVD5m
NTkmZ2hUbWdXRDBsOypUCnpJNzxrQzZhWVlhanpYcFlLdD0oOG90UCQ1MEg2Y19WOVI0LTt7WkBD
MEFNRzc9RjxSeG8lb3IxMFJVVCtBciUzagp6a3BMaFFXciMhb1hnZElgJnNLXj4wOVlecDZsUDFy
SVJNeCMwNUN+Y1c9SF9BdypiSi01RFQmWjJuK3gpUUhYXnAKejAwZXNnVjh8bVFjbVJaJTAyRF5A
UzNMMTZ0YE8lYzAwNE5Jdk9LdllJWW9oNjJyWTMzUzY0MGBEOSVZMkQtPD9pCnowJTRqIUYyWkA0
ODhVJTE1OCg2NjAwNXdvNiVwV3JeWmpfdjR6QUE1SGpjSXFVb0dtdDJMQj5yViZuZWgmI1ExaQp6
MDA3fjFlJG9DY0ZTOG5lSXxoSmx7LVAhQjFaWjlocG1xMClYMGlgSndFJj4kK0U/PiVfPGxTKk1X
SytuKzFjZ2YKejxrKDhZTFIoP1ZTQUc2eCFlNzh3e2NRUHVKcEF8ZDtKKUd7ZmloaXpNK0VyYiFw
IXRjcjV3K2EzNH4oWT04czRHCnp3K3NMTDluJkpqTm4qS0pEaXFeVTVeO2AxbnZDLUByNlAkIWt9
MVV7KCpJPVEtekB0QktIb0l9dXhkVTVkeXlAdQp6VTFKMEdPRDdPbWJpbV5HMDA4cDRaXjZfazJt
XnA8Z1c9RDJ8TDtIak4xIUREZk0hWE9hUjJ+Ykw/a1gkJUNrU20KejJtazs/cG4pb3xLXnllSjcl
YWRCOUtpK0whMytGZ0hpU1lYI0tKLWxMSkRNbjlDQmJPdGIjJSloUnZgWURxdF92CnpLcGl4fFFE
fXlmYTFKaVFSayNqNGExWiluMiVmPHh5bnpWPkxDNlJiVklrVXgwYitfK0JhUjNjblQ3WnYhQUp4
Vwp6aXpGYiloIWp5R09PWjg1RjthP0RBWFB7bUA7ITBfSWZxPEV4eyo3YDA1WEY3aFArMkhsITNC
UUo9NkBmTCVGQ28KejhpWW9vMygjYkFGYEFEU3BxdFFndj5IOChIbGdSeHQ3czN9azNLYGtGdT4+
LTJRJFFNRmZQVyFMYXtoMzM2bz5YCnp1X0NNdHRIdjZ6UjsmWk5pUz1YOHYzQ1IjZmtuVXhIVXhK
PEFZbVJzTkxXbCpQU3tBT0FSSHQjNSF3a2kyP0s7dAp6IVkzaz1zN3RnYXgpSiVyNy1CTHBoZ2U3
fkJpMGcrNkU2XlpoKHA5VEJvY3szR0FGcl4wIWd1P1JNSGFDTSQmRmwKekJrMyV1bj4wdW9CYV9N
NldOV2VxSWd+NlFFNjljOW8jZXloR3ZwaU9BQFctYW9uazw3cjEoP2ZDe29JNU4qVSE0Cno8dXY2
Nld0Y0tTUmltMHgtS2UyZDVqQnJtTGFteztRbTt7bXMxcjFHbm1Oc2I3RC1FYHQpaTlGOGZYYDJf
aTMtXwp6Ymg7N1VsXiN4KSZ7eHZTPXx8fDc9bVllMzM9TWBBZ1U1KHhDPmZnPTJOLTc9Y05uampP
cnt5cml5Nm1NRmdHI2wKem5DRj1mblF2OENEeisrbzZfTHNjbH1lUStsXlpIQVJIPj9fc0B8IyNS
cjZLTFJGQTElUSs9KlJSV25vTHNSYDdVCnp0NXZGPFEwcjQwUSlqNj1zRTRYJnNCY3QxcTwmZmJp
M1ZCMk92NnRAcSowKTtVKm8qU0FQWnZ8dnZAMmFZWW5UMAp6YiU4YStDYjctZ2UwRDBrbkVmNVFp
I0A4VHAqY2V7Tjs2bHBRdUNCJUtMX0tPYXJtNWNQNl84SXI8ZTE3aXJ5Nk8KekRkSCZgclpofnNG
PWJxOXMrTzBRU2dTfkBRTDlKbXkqOTR4cj02eX5NWX4hMWZldH4oTisoPD1NYHdARDEpYitwCnoq
O0MhODNhMXVMSnYjTlNFfjt5Izg9PD5JY2ZXM0A/d0Zwd1VWeHJWWj5RZFF6MzJLSWVKfWt+e2Na
WkVeK3lhPwp6MkQxeiMySE9uSTcoQiVfYWM/e3dGVVE7UVFBMXRCS3RyV3JtMF8zUmdwcys/SmZx
YntqWWJjUVh+dGFSQjsjJHkKelpOe1N9MXx9Z1VPSEp4Yz93VjNmeHV6K21KNGAhRiRJWjttcVJy
TnNISmQjIypEfmp1PWJQNz8tP3Z+fGN2PnZCCnpzSjZJZU53Vlp4cmRqVGB5bCNiQklhI0d4UmEj
eE1NeTtLI0NEeXlHeVFkTVN4bFdUI3REZT9wIT81d1QkK29HdAp6OEw7S3AySFVRLVpNSj0zWEpR
djt4NWNpKj92dVRmZVkkOyh7WEdXX2h1SUZSOWE8ZkpiRl58NEkjeFF+biREYz0KektZaGpZbWd6
NU5Ta0RtOCpmWm17NlUhO1lYYE5HPig/QDMpWFNzOE9eTjVSeU9NPVRUbXAoMz04Xit6cHoycilD
CnpePkpPe2RlWmZzbzNvcTM/V28oWT9sJGdlP3VYbzslcnVgVm8+Pzw8KDhJXz47OEVxI0tNUzln
RmwqbmVlb3NTQgp6Zm9IWW5CUUlrd2t5b3dQdSh6ZG1zYHB7PDdlNGtyYS1aV3E8MipPc0dUdkVW
JXMwVGQkaFhUKyEqOEJuaDJLTWUKekJtWlJvZGpIVj9yK181Xlg5SjBXTDRqS1dgfWxmJUEtfDQ0
SUBATFR2ZjFySGpHKHplNit3QEp0JUJ2anRzIVgwCno/MnhTP192ZV8tazxNdWpnOzBMeiozYnVH
PTMkRyZlaGVwdGhsTiokS2FPeVNTUV5uV21vPDBNKyhVRVVNRVhSUQp6TUJiWmNGOzYrS0VsTT5p
S0JfS2lKbFokOUdgY149RUBvTkcpbVdXYU5vLTNUSVc4KSRIZzBVYi1+OD9LaHZKPiQKejMqJm5p
bUBtaihhQ3hFNSF0e2x3N081XjBFSU83ek9vJmM2bDwrfGlEeVNCV0NHcnpAQzV7U3QhWDNoQUF9
YFQ0CnooVExiWFRxKyg7QDw9TDhkWG5zc3lmdHx3I1dTVFc8KyszPnNnUyUoNE5UcGVJLVZBcWJ8
N3NzSnZ6TkhnT1pWdQp6YVlDdmdPX1Ixfj5TeUw9Y0ZVfH5nfGh5fFppfX1zOStkfmxZcU9CNzF6
OVokd25DPXBSOVl6NERoSU0+V21qZ3UKeiY1Nm82bWFDcEMmRiMjeSVHOzFQb2JSOWk/R25OZztn
WXRjaEQlcDE5YSFlUXRaRiYzSmFLdjMzZ1o8OER+NDdFCnp0VVMxaXdrbURhUHBqPSRtIyUpakNW
RVk0Zm5MR05nMkEtYFl3SFZEM2d2fTs+KWhBdlR+QW1xUz5McmBgaTdrdwp6Sns1X0l0YHlyQm1s
YzI1REJPN0U4OzVWb3puUj5XdzVoQWF4biQyfihxYCVBLVl1UzY0d2tCeT05ZG1gNGNYZVgKejRj
fUlAP2UrRlcrYkBeUkRCSFYod25NcTJ6ZFgzU1d2OXVgJXt4Qy1xKlV9JmBjeVhWKCVyUlQqWjZN
SD9pK2kmCnpfQjhDKCtnclQle1hXVVErZkBOb1AxUj1BVyYyNnt2LWR4KWlLXi1ObWl1ajh0eGoh
bT9aKlNzMU57ZGg0en0wMQp6KVlUbypKeWNTVSkrXzVyNCN5dzl7KztpNEVlJHBlUmdJais7djta
R2RGMUskM0UlZX40TGFJKGpDLXUlMmgkJlIKejljTFhjWUNAWHdubnMmYm4pX1F+VGU/cm9LR0R8
ZC1nXjg7K2FDe3tHKDFeKE83bTM3WTEtKzYpMDFjTiZ5MWF3CnpvcWN7VGBQXlhKcVBCYklXNnN9
ZDR7el9mNU9tP3ZNZ05RRUpHP3YyVD1LWWReME0zSTZJWnhibnkpJXZaUiZMRAp6SnBQbEBQc2g4
UXlQQkBLVHgrQFJkY0MhS1g3fWtFbztTfGpedTJsVTdYUX1PbztmfDt6NExsK19yPkAxLXhsM3wK
emF3cS1IJWUmY2tDK0BBaFByUDZCSzx6PTxMKjBrZktVQENYKnplcWJZUVQ0KF5VPlQjX1hkVDcm
O0Y3MWp9Sm95CnprQ342bGg3RUA2bztXQF5JcFJOWntwdEx0TChnUS1DWX40bXFXO1VTN1p4dm1f
fEB5eiZlNTNCcF9sVFBsZlB8egp6clR5eF8+bHZAeCM9XiFQelI3cXFGPCRnbWB8WkpaKzs8KUNx
dSZvdDxhezgxREYwfnJ2R3I1WHJ+OHVgbGF2MWgKejFETnl0Vj4yej0wMDAwNFhGKkx0MDA2TyRl
RVUoODAwMDBXVkBPZz4wMDRSPTAwNGw0MDA4O18wMDRtTDAwNENgCnowMDhQPjAwMjZlMDAwK25s
MyZGfTAwMDJkTmtsPFpjLW19fEYtYCtQM2BPN2ZJUU4ybjY7WTVMUFFWI0IwX1I4cgp6UUZgXyQw
WW19Uk5HIVdFcmJDJlRiQH16fT88WlQ9aGFtKGJhS0dPa00qdCYmaGAyeUo/KyhLYWZPYnpxMEtg
VHAKejJMeldVMn0jJWpOKE9NfSFDNVQ8KHZfbzFNcklnSW5HODNwYnFPMylpd0lCRmghU3BVbyM1
NnVEWioyI2dHdmNwCnpVMyRUX0hnbl4oXkxId0VZVElGTHJmXlJre3Q3JDdsfiZrME9zIXhwSXJx
eT9kRmd8dUpVPT5UQ3dlPTUwekNZOwpzem4odCQkQEFAZ2RtUjEhPCV7b21zQH4+cjBMKU5BUHk/
QVBlKmdkZzA3KnFvTTZOPCRmK2QyOFF+Jj9+CgpsaXRlcmFsIDAKSGNtVj9kMDAwMDEKCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9SZXNvdXJjZXMvdlNjcm9sbENvbnRyb2xfYm90dG9tLnBu
ZyBiL1NvdXJjZS9XZWJDb3JlL1Jlc291cmNlcy92U2Nyb2xsQ29udHJvbF9ib3R0b20ucG5nCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLmY4YjBmMmVlMmYyNzAyMWE2YzcwMDhkNzlhMDg4OTBkYjA1OGQ2ZDQKR0lUIGJp
bmFyeSBwYXRjaApsaXRlcmFsIDM2Ngp6Y21lQVNATj8ob2xIeWB1VkJxIWlhMHZwQEsrTUwkMXwl
aFBNRF96SSZIfDZmVmc/M29WR3czeW1eRFdORDlEb1QKej08Q1M5dSg3WV5jaT8wb1VtQDhlJGRg
ZWtOfGt9M3BfemY8PVlKc21sN1hTcmZQdnZ2MHQxODkzPGRgQXs3TGFnCnotR0ZNSmMpQj0tUk5S
V2AtfE4+THp+RllDUm5LMCFRKERKe3oxamNLeUdRUjFYa1hib0o2aVZFSWE1Tyh6YSRsXwp6bFRT
YDE5VFpUUTd+UW07K3hMcGArXjAxcylmcENQP0RDbkVhYFVAd2tlQSl9PmI2NyZqKVI9e3p3P2BT
QTlXMjQKeiYxTyFKSVVjQCVOeChAI3hCRVZhOyo0YzR5KXtEX0JwTT44SkB1WkpubV9NM3FlQVgp
fDBmb0ZtR2tVTlYhIWlBCnp1emdeQHU8aC1xQyk9am4yd0pxMiVefn01P0RlbTJfYmZhYyp8U0sp
P3ZjZntiKzZ9anxMaDZrZFRfenk/QU5sKgp6SH47bVVCck1EUENESGI8U2IheWNUQj5JQnNwWSRg
eklzKStKXkZtT1RFazw4ZyFyZ2FxODRHKks+c3AkeTg1fVMKSWI0cTllMEFuR0hTTzVTMwoKbGl0
ZXJhbCAwCkhjbVY/ZDAwMDAxCgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUmVzb3VyY2Vz
L3ZTY3JvbGxDb250cm9sX21pZGRsZS5wbmcgYi9Tb3VyY2UvV2ViQ29yZS9SZXNvdXJjZXMvdlNj
cm9sbENvbnRyb2xfbWlkZGxlLnBuZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hMjFjZDdkNjcxYjNhNWYyZWYyNGMz
ODQyMTY5MTQzYjczYWQ1YjdlCkdJVCBiaW5hcnkgcGF0Y2gKbGl0ZXJhbCAyMDQKemNtZUFTQE4/
KG9sSHlgdVZCcSFpYTB2cEBLK01GITF8KnlKaE9Hb3JvQ098eyNTOUdHIVhWN1pGbCZ3a1A+PzB2
CnooYnRpSVZQanYtQDQoNEd6Q3lBYGtTX3k2bF9+PjZMbykteiY7TE9CQj9DakwwUnpMVTFPXjdI
ODRMe0tgSUYrMAp6eCZoVFhkQWN9O1JOUEFYXlombm5eUTF7WiQpVGE0Y2M8JmVPR0hGUU8yK019
SXItdUJiJHZFQkgjYXMzMFJlJTgKcTdxOCN5KV9pPytsfF94czIma0xrfDlAdE52PnAtMFBoQXBD
QWlrJW9wVVhPQGdlQ3lseEh9WDgKCmxpdGVyYWwgMApIY21WP2QwMDAwMQoKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL1Jlc291cmNlcy92U2Nyb2xsQ29udHJvbF90b3AucG5nIGIvU291cmNl
L1dlYkNvcmUvUmVzb3VyY2VzL3ZTY3JvbGxDb250cm9sX3RvcC5wbmcKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmEy
MmM1YzZiMDFlZmVhMDEwNjJhZGY3Y2FjYWM0Mjg3ZWM2ZGU2NQpHSVQgYmluYXJ5IHBhdGNoCmxp
dGVyYWwgMzk0CnpjbVY7NTBkQFh+UCk8aDszS3xMazAwMGUxTkpMVHEwMDBkRDAwMExGMV5AczYo
e1JUYzAwMDA5YTdiQm0wMDBYVQp6MDAwWFUwUldudTd5dGtPMVpQMV9LPnpAO2oocSEzbEs9biFB
WSh7VU8jbEZUQj4oX2BnOCVeZXt7UjRoPT5QekEKekZhUUFSVTtxRiptO2VBNVo8MWZkTWdSWi0w
NypuYVJDd0I0a0ZpUmBLbWJKRlpsY0tyO2xLbDxPfUhZQkJIRT0kCnpZbl84QGB+cEZeKCNuSkwx
SmI5PEtVbW48YDRNKTBnTG9EUldWNHNlVDl+TiNWN2VKKk0pMW9YQW1UVmFUQ0ctQgp6IythI1Ur
eEktclUrU3YqMWJVelk1SlNLTDN+KlZOPHh8ciVrPUJ9ej9Vbz0yVUxRN19ZdjJ1I0tyZUBvbmF5
VCMKelE1NFR3PiZPXkdSbzU2fXNPJFJUZSFZR0tqKXlrbkFoSW1HYjZ4aVlwekF1NlFWOClxI1Bo
dGZZX1lmPDNXTm11CnpGYnElQUcraXBDME1KQHZ0XkdPTXdrPTdMK3lwQHwyZG82fWVnOWt0YVgx
P0ZacFVBJndLJEc1XihUe2ZvUUlUaApvNCh5TUh6Vkc+dTVhUGcqRzZNSi0wMnxDPEdBZzk4Mj48
ezkwNypxb002TjwkZzVuJlQ8cDJOeAoKbGl0ZXJhbCAwCkhjbVY/ZDAwMDAxCgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDBkNTBj
ZmNkMzdmODljYzRhOTk2MjdlYmFmNWZmZmIxYzRmNTNjNTcuLjFhYjA0MDUwMjA0ZjdjMGViOGJl
MWVhOWM5ODcwNzc1NTQ0YzRjNTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTYzLDYgKzYzLDcgQEAKIAkJMDFEM0NGODUxNEJE
MEEzMDAwRkU5OTcwIC8qIFdlYkdMQ29udGV4dE9iamVjdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDFEM0NGN0YxNEJEMEEzMDAwRkU5OTcwIC8qIFdl
YkdMQ29udGV4dE9iamVjdC5oICovOyB9OwogCQkwMUQzQ0Y4NjE0QkQwQTMwMDBGRTk5NzAgLyog
V2ViR0xTaGFyZWRPYmplY3QuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMDFEM0NGODAxNEJEMEEzMDAwRkU5OTcwIC8qIFdlYkdMU2hhcmVkT2JqZWN0
LmNwcCAqLzsgfTsKIAkJMDFEM0NGODcxNEJEMEEzMDAwRkU5OTcwIC8qIFdlYkdMU2hhcmVkT2Jq
ZWN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwMUQz
Q0Y4MTE0QkQwQTMwMDBGRTk5NzAgLyogV2ViR0xTaGFyZWRPYmplY3QuaCAqLzsgfTsKKwkJMDFF
NkMyRTQxMTk0QjI4MjAwNTA4MjFDIC8qIFNwZWxsaW5nRG90QDJ4LnBuZyBpbiBSZXNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDFFNkMyRTMxMTk0QjI4MjAwNTA4
MjFDIC8qIFNwZWxsaW5nRG90QDJ4LnBuZyAqLzsgfTsKIAkJMDU2MkY5NDYxNTczRUNFQjAwMzFD
QTE2IC8qIFdlYktpdENTU1NWR0RvY3VtZW50VmFsdWUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDU2MkY5NDQxNTczRUNFQjAwMzFDQTE2IC8qIFdl
YktpdENTU1NWR0RvY3VtZW50VmFsdWUuY3BwICovOyB9OwogCQkwNTYyRjk0NzE1NzNFQ0VCMDAz
MUNBMTYgLyogV2ViS2l0Q1NTU1ZHRG9jdW1lbnRWYWx1ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDU2MkY5NDUxNTczRUNFQjAwMzFDQTE2IC8qIFdl
YktpdENTU1NWR0RvY3VtZW50VmFsdWUuaCAqLzsgfTsKIAkJMDU2MkY5NjExNTczRjg4RjAwMzFD
QTE2IC8qIFBsYXRmb3JtTGF5ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDA1NjJGOTYwMTU3M0Y4OEYwMDMxQ0ExNiAvKiBQbGF0Zm9ybUxheWVyLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTM1MzQs
NiArMzUzNSw4IEBACiAJCUExN0M4MTIyMEYyQTVDRjcwMDVEQUFFQiAvKiBIVE1MRWxlbWVudEZh
Y3RvcnkuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
QTE3QzgxMjAwRjJBNUNGNzAwNURBQUVCIC8qIEhUTUxFbGVtZW50RmFjdG9yeS5jcHAgKi87IH07
CiAJCUExN0M4MTIzMEYyQTVDRjcwMDVEQUFFQiAvKiBIVE1MRWxlbWVudEZhY3RvcnkuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExN0M4MTIxMEYyQTVD
RjcwMDVEQUFFQiAvKiBIVE1MRWxlbWVudEZhY3RvcnkuaCAqLzsgfTsKIAkJQTFDN0ZBQTIxMzNB
NUQzNTAwRDY3MzJEIC8qIEpTWFBhdGhSZXN1bHRDdXN0b20uY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTFDN0ZBQTExMzNBNUQzNTAwRDY3MzJEIC8q
IEpTWFBhdGhSZXN1bHRDdXN0b20uY3BwICovOyB9OworCQlBMURFNzEyRDE4NjEyQUMxMDA3MzQx
OTIgLyogVG91Y2hFdmVudHMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQTFERTcxMkIxODYxMkFDMTAwNzM0MTkyIC8qIFRvdWNoRXZlbnRzLmNwcCAq
LzsgfTsKKwkJQTFERTcxMzIxODYxMzIyMjAwNzM0MTkyIC8qIFRvdWNoQ29uc3RydWN0b3JzLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExREU3MTMw
MTg2MTMyMjIwMDczNDE5MiAvKiBUb3VjaENvbnN0cnVjdG9ycy5jcHAgKi87IH07CiAJCUExRTEx
NTQ0MTMwMTVDM0QwMDU0QUM4QyAvKiBEaXN0YW50TGlnaHRTb3VyY2UuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTFFMTE1NDMxMzAxNUMzRDAwNTRB
QzhDIC8qIERpc3RhbnRMaWdodFNvdXJjZS5jcHAgKi87IH07CiAJCUExRTExNTQ2MTMwMTVDNEUw
MDU0QUM4QyAvKiBQb2ludExpZ2h0U291cmNlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExRTExNTQ1MTMwMTVDNEUwMDU0QUM4QyAvKiBQb2ludExp
Z2h0U291cmNlLmNwcCAqLzsgfTsKIAkJQTFFMTE1NDgxMzAxNUM1RDAwNTRBQzhDIC8qIFNwb3RM
aWdodFNvdXJjZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBBMUUxMTU0NzEzMDE1QzVEMDA1NEFDOEMgLyogU3BvdExpZ2h0U291cmNlLmNwcCAqLzsg
fTsKQEAgLTM2MDIsNiArMzYwNSw4IEBACiAJCUE1QUZCMzRGMTE1MTUxQTcwMEIwNDVDQiAvKiBT
dGVwUmFuZ2UuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQTVBRkIzNEQxMTUxNTFBNzAwQjA0NUNCIC8qIFN0ZXBSYW5nZS5jcHAgKi87IH07CiAJCUE1
QUZCMzUwMTE1MTUxQTcwMEIwNDVDQiAvKiBTdGVwUmFuZ2UuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1QUZCMzRFMTE1MTUxQTcwMEIwNDVDQiAvKiBT
dGVwUmFuZ2UuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwogCQlBNUM1NjZBQjEyN0EzQUFEMDBFOEEzRkYgLyogRGlza0ltYWdlQ2FjaGVDbGllbnRJT1Mu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1QzU2NkFB
MTI3QTNBQUQwMEU4QTNGRiAvKiBEaXNrSW1hZ2VDYWNoZUNsaWVudElPUy5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUE1REVCREEzMTZGQjkwODcw
MDgzNkZFMCAvKiBXZWJLaXRQbGF5YmFja1RhcmdldEF2YWlsYWJpbGl0eUV2ZW50LmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1REVCRDlGMTZGQjkw
ODcwMDgzNkZFMCAvKiBXZWJLaXRQbGF5YmFja1RhcmdldEF2YWlsYWJpbGl0eUV2ZW50LmNwcCAq
LzsgfTsKKwkJQTVERUJEQTQxNkZCOTA4NzAwODM2RkUwIC8qIFdlYktpdFBsYXliYWNrVGFyZ2V0
QXZhaWxhYmlsaXR5RXZlbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEE1REVCREEwMTZGQjkwODcwMDgzNkZFMCAvKiBXZWJLaXRQbGF5YmFja1Rhcmdl
dEF2YWlsYWJpbGl0eUV2ZW50LmggKi87IH07CiAJCUE1RjZFMTZCMTMyRUQ0NkUwMDhFREFFMyAv
KiBBdXRvY2FwaXRhbGl6ZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBBNUY2RTE2QzEzMkVENDZFMDA4RURBRTMgLyogQXV0b2NhcGl0YWxpemUuY3Bw
ICovOyB9OwogCQlBNUY5RUY3MDEyNjY3NTBEMDBGQ0NGNTIgLyogRGlza0ltYWdlQ2FjaGVJT1Mu
bW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNUY5RUY2
RTEyNjY3NTBEMDBGQ0NGNTIgLyogRGlza0ltYWdlQ2FjaGVJT1MubW0gKi87IH07CiAJCUE1RjlF
RjcxMTI2Njc1MEQwMEZDQ0Y1MiAvKiBEaXNrSW1hZ2VDYWNoZUlPUy5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTVGOUVGNkYxMjY2NzUwRDAwRkNDRjUy
IC8qIERpc2tJbWFnZUNhY2hlSU9TLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKQEAgLTUyOTUsNiArNTMwMCw3IEBACiAJCUJFODhFMERGMTcxNUQyQTIw
MDY1OEQ5OCAvKiBWaWRlb1RyYWNrLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBCRTg4RTBEMzE3MTVEMkEyMDA2NThEOTggLyogVmlkZW9UcmFjay5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUJFODhFMEUx
MTcxNUQyQTIwMDY1OEQ5OCAvKiBWaWRlb1RyYWNrTGlzdC5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCRTg4RTBENTE3MTVEMkEyMDA2NThEOTggLyog
VmlkZW9UcmFja0xpc3QuY3BwICovOyB9OwogCQlCRTg4RTBFMjE3MTVEMkEyMDA2NThEOTggLyog
VmlkZW9UcmFja0xpc3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEJFODhFMEQ2MTcxNUQyQTIwMDY1OEQ5OCAvKiBWaWRlb1RyYWNrTGlzdC5oICovOyB9
OworCQlCRThDNzUzMTEwNjgxMzI0MDAxRTkzRjUgLyogU3BlbGxpbmdEb3QucG5nIGluIFJlc291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCRThDNzUzMDEwNjgxMzI0
MDAxRTkzRjUgLyogU3BlbGxpbmdEb3QucG5nICovOyB9OwogCQlCRThFRjA0MjE3MUM4RkY5MDA5
QjQ4QzMgLyogSlNBdWRpb1RyYWNrLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEJFOEVGMDNFMTcxQzhGRjkwMDlCNDhDMyAvKiBKU0F1ZGlvVHJhY2su
Y3BwICovOyB9OwogCQlCRThFRjA0MzE3MUM4RkY5MDA5QjQ4QzMgLyogSlNBdWRpb1RyYWNrLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCRThFRjAzRjE3
MUM4RkY5MDA5QjQ4QzMgLyogSlNBdWRpb1RyYWNrLmggKi87IH07CiAJCUJFOEVGMDQ0MTcxQzhG
RjkwMDlCNDhDMyAvKiBKU0F1ZGlvVHJhY2tMaXN0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJFOEVGMDQwMTcxQzhGRjkwMDlCNDhDMyAvKiBKU0F1
ZGlvVHJhY2tMaXN0LmNwcCAqLzsgfTsKQEAgLTU1NDcsNiArNTU1Myw4IEBACiAJCUQwMDBFRDI4
MTFDMUI5Q0QwMEM0NzcyNiAvKiBTdWJmcmFtZUxvYWRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRDAwMEVEMjYxMUMxQjlDRDAwQzQ3NzI2IC8qIFN1
YmZyYW1lTG9hZGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKIAkJRDAxQTI3QUQxMEM5QkZEODAwMDI2QTQyIC8qIFNwYWNlU3BsaXRTdHJpbmcuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRDAxQTI3QUIx
MEM5QkZEODAwMDI2QTQyIC8qIFNwYWNlU3BsaXRTdHJpbmcuY3BwICovOyB9OwogCQlEMDFBMjdB
RTEwQzlCRkQ4MDAwMjZBNDIgLyogU3BhY2VTcGxpdFN0cmluZy5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRDAxQTI3QUMxMEM5QkZEODAwMDI2QTQyIC8q
IFNwYWNlU3BsaXRTdHJpbmcuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OworCQlEMDJCNjRCMjE0MDg5RTU2MDA2RUZBMjEgLyogRGljdGF0aW9uUGhyYXNl
V2l0aEFsdGVybmF0aXZlc0RvdC5wbmcgaW4gUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEQwMkI2NEIwMTQwODlFNTYwMDZFRkEyMSAvKiBEaWN0YXRpb25QaHJh
c2VXaXRoQWx0ZXJuYXRpdmVzRG90LnBuZyAqLzsgfTsKKwkJRDAyQjY0QjMxNDA4OUU1NjAwNkVG
QTIxIC8qIERpY3RhdGlvblBocmFzZVdpdGhBbHRlcm5hdGl2ZXNEb3RAMngucG5nIGluIFJlc291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBEMDJCNjRCMTE0MDg5RTU2
MDA2RUZBMjEgLyogRGljdGF0aW9uUGhyYXNlV2l0aEFsdGVybmF0aXZlc0RvdEAyeC5wbmcgKi87
IH07CiAJCUQwNUNFRDI5MEE0MEJCMkMwMEM1QUYzOCAvKiBGb3JtYXRCbG9ja0NvbW1hbmQuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRDA1Q0VEMjcw
QTQwQkIyQzAwQzVBRjM4IC8qIEZvcm1hdEJsb2NrQ29tbWFuZC5jcHAgKi87IH07CiAJCUQwNUNF
RDJBMEE0MEJCMkMwMEM1QUYzOCAvKiBGb3JtYXRCbG9ja0NvbW1hbmQuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEQwNUNFRDI4MEE0MEJCMkMwMEM1QUYz
OCAvKiBGb3JtYXRCbG9ja0NvbW1hbmQuaCAqLzsgfTsKIAkJRDA2QzBEOEYwQ0ZEMTE0NjAwNjVG
NDNGIC8qIFJlbW92ZUZvcm1hdENvbW1hbmQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEQwNkMwRDhEMENGRDExNDYwMDY1RjQzRiAvKiBSZW1vdmVGb3Jt
YXRDb21tYW5kLmggKi87IH07CkBAIC01NTU5LDYgKzU1NjcsOCBAQAogCQlEMEIwNTU2ODA5QzY3
MDAxMDAzMDdFNDMgLyogQ3JlYXRlTGlua0NvbW1hbmQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEQwQjA1NTY2MDlDNjcwMDEwMDMwN0U0MyAvKiBDcmVh
dGVMaW5rQ29tbWFuZC5oICovOyB9OwogCQlEMEIwNTU2OTA5QzY3MDAxMDAzMDdFNDMgLyogQ3Jl
YXRlTGlua0NvbW1hbmQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gRDBCMDU1NjcwOUM2NzAwMTAwMzA3RTQzIC8qIENyZWF0ZUxpbmtDb21tYW5kLmNw
cCAqLzsgfTsKIAkJRDBCQzU0NDkxNDQzQUM0QTAwRTEwNURBIC8qIENhY2hlZFN0eWxlU2hlZXRD
bGllbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEQw
QkM1NDQ4MTQ0M0FDNEEwMEUxMDVEQSAvKiBDYWNoZWRTdHlsZVNoZWV0Q2xpZW50LmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJRDBCRDRGNUMxNDA4
ODUwRjAwNjgzOUI2IC8qIERpY3RhdGlvbkNvbW1hbmRJT1MuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRDBCRDRGNUExNDA4ODUwRjAwNjgzOUI2IC8q
IERpY3RhdGlvbkNvbW1hbmRJT1MuY3BwICovOyB9OworCQlEMEJENEY1RDE0MDg4NTBGMDA2ODM5
QjYgLyogRGljdGF0aW9uQ29tbWFuZElPUy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gRDBCRDRGNUIxNDA4ODUwRjAwNjgzOUI2IC8qIERpY3RhdGlvbkNv
bW1hbmRJT1MuaCAqLzsgfTsKIAkJRDBDRTU4RjgxMjVFNENDMjAwRjNGMTk5IC8qIFJlc291cmNl
TG9hZFNjaGVkdWxlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBEMENFNThGNjEyNUU0Q0MyMDBGM0YxOTkgLyogUmVzb3VyY2VMb2FkU2NoZWR1bGVy
LmNwcCAqLzsgfTsKIAkJRDBDRTU4RjkxMjVFNENDMjAwRjNGMTk5IC8qIFJlc291cmNlTG9hZFNj
aGVkdWxlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
RDBDRTU4RjcxMjVFNENDMjAwRjNGMTk5IC8qIFJlc291cmNlTG9hZFNjaGVkdWxlci5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUQwRURBNzc0MTQz
RTMwM0MwMDI4RTM4MyAvKiBDYWNoZWRSYXdSZXNvdXJjZS5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBEMEVEQTc3MjE0M0UzMDNDMDAyOEUzODMgLyog
Q2FjaGVkUmF3UmVzb3VyY2UuY3BwICovOyB9OwpAQCAtNjQyNyw2ICs2NDM3LDggQEAKIAkJRkVC
MjZEMjgxNjdBOEYyQTAwRkREMjZCIC8qIERhdGFiYXNlU2VydmVyLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFQjI2RDI3MTY3QThGMkEwMEZERDI2
QiAvKiBEYXRhYmFzZVNlcnZlci5jcHAgKi87IH07CiAJCUZFQkM1RjMxMTZCRDBDQzMwMDY1OUJE
MyAvKiBEYXRhYmFzZUJhc2UuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gRkVCQzVGMkYxNkJEMENDMzAwNjU5QkQzIC8qIERhdGFiYXNlQmFzZS5jcHAg
Ki87IH07CiAJCUZFQkM1RjMyMTZCRDBDQzMwMDY1OUJEMyAvKiBEYXRhYmFzZUJhc2UuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFQkM1RjMwMTZCRDBD
QzMwMDY1OUJEMyAvKiBEYXRhYmFzZUJhc2UuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OworCQlGRUQxM0QyQTBDRUE5MURGMDBEODk0NjYgLyogRE9NVUlL
aXRFeHRlbnNpb25zLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBGRUQxM0QyNjBDRUE5MURGMDBEODk0NjYgLyogRE9NVUlLaXRFeHRlbnNpb25zLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJRkVEMTNEMkIw
Q0VBOTFERjAwRDg5NDY2IC8qIERPTVVJS2l0RXh0ZW5zaW9ucy5tbSBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFRDEzRDI3MENFQTkxREYwMEQ4OTQ2NiAv
KiBET01VSUtpdEV4dGVuc2lvbnMubW0gKi87IH07CiAJCUZFRDEzRDNBMENFQTkzNDYwMEQ4OTQ2
NiAvKiBFZGl0b3JJT1MubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBGRUQxM0QzOTBDRUE5MzQ2MDBEODk0NjYgLyogRWRpdG9ySU9TLm1tICovOyB9Owog
CQlGRUQxM0QzRDBDRUE5MzZBMDBEODk0NjYgLyogRnJhbWVJT1MubW0gaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRUQxM0QzQjBDRUE5MzZBMDBEODk0NjYg
LyogRnJhbWVJT1MubW0gKi87IH07CiAJCUZFRDEzRDQwMENFQTkzOTQwMEQ4OTQ2NiAvKiBJY29u
SU9TLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkVE
MTNEM0YwQ0VBOTM5NDAwRDg5NDY2IC8qIEljb25JT1MubW0gKi87IH07CkBAIC02NzA5LDYgKzY3
MjEsNyBAQAogCQkwMUQzQ0Y3RjE0QkQwQTMwMDBGRTk5NzAgLyogV2ViR0xDb250ZXh0T2JqZWN0
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFdlYkdMQ29udGV4dE9iamVjdC5o
OyBwYXRoID0gY2FudmFzL1dlYkdMQ29udGV4dE9iamVjdC5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQkwMUQzQ0Y4MDE0QkQwQTMwMDBGRTk5NzAgLyogV2ViR0xTaGFyZWRPYmplY3Qu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gV2ViR0xTaGFyZWRPYmpl
Y3QuY3BwOyBwYXRoID0gY2FudmFzL1dlYkdMU2hhcmVkT2JqZWN0LmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJMDFEM0NGODExNEJEMEEzMDAwRkU5OTcwIC8qIFdlYkdMU2hhcmVk
T2JqZWN0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFdlYkdMU2hhcmVkT2Jq
ZWN0Lmg7IHBhdGggPSBjYW52YXMvV2ViR0xTaGFyZWRPYmplY3QuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJMDFFNkMyRTMxMTk0QjI4MjAwNTA4MjFDIC8qIFNwZWxsaW5nRG90QDJ4
LnBuZyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IGlt
YWdlLnBuZzsgcGF0aCA9ICJTcGVsbGluZ0RvdEAyeC5wbmciOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQkwNTYyRjk0NDE1NzNFQ0VCMDAzMUNBMTYgLyogV2ViS2l0Q1NTU1ZHRG9jdW1l
bnRWYWx1ZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJLaXRD
U1NTVkdEb2N1bWVudFZhbHVlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDU2
MkY5NDUxNTczRUNFQjAwMzFDQTE2IC8qIFdlYktpdENTU1NWR0RvY3VtZW50VmFsdWUuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViS2l0Q1NTU1ZHRG9jdW1lbnRWYWx1ZS5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwNTYyRjk2MDE1NzNGODhGMDAzMUNBMTYg
LyogUGxhdGZvcm1MYXllci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQbGF0
Zm9ybUxheWVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xMDQ2MSw2ICsxMDQ3
NCw4IEBACiAJCUExN0M4MTIwMEYyQTVDRjcwMDVEQUFFQiAvKiBIVE1MRWxlbWVudEZhY3Rvcnku
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSFRNTEVsZW1lbnRGYWN0
b3J5LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTE3QzgxMjEwRjJBNUNGNzAw
NURBQUVCIC8qIEhUTUxFbGVtZW50RmFjdG9yeS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBIVE1MRWxlbWVudEZhY3RvcnkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJQTFDN0ZBQTExMzNBNUQzNTAwRDY3MzJEIC8qIEpTWFBhdGhSZXN1bHRDdXN0b20uY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNYUGF0aFJlc3VsdEN1c3RvbS5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUExREU3MTJCMTg2MTJBQzEwMDczNDE5
MiAvKiBUb3VjaEV2ZW50cy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBUb3VjaEV2ZW50cy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUExREU3MTMw
MTg2MTMyMjIwMDczNDE5MiAvKiBUb3VjaENvbnN0cnVjdG9ycy5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBUb3VjaENvbnN0cnVjdG9ycy5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCUExRTExNTQzMTMwMTVDM0QwMDU0QUM4QyAvKiBEaXN0YW50TGln
aHRTb3VyY2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gRGlzdGFu
dExpZ2h0U291cmNlLmNwcDsgcGF0aCA9IGZpbHRlcnMvRGlzdGFudExpZ2h0U291cmNlLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTFFMTE1NDUxMzAxNUM0RTAwNTRBQzhDIC8q
IFBvaW50TGlnaHRTb3VyY2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1l
ID0gUG9pbnRMaWdodFNvdXJjZS5jcHA7IHBhdGggPSBmaWx0ZXJzL1BvaW50TGlnaHRTb3VyY2Uu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBMUUxMTU0NzEzMDE1QzVEMDA1NEFD
OEMgLyogU3BvdExpZ2h0U291cmNlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
bmFtZSA9IFNwb3RMaWdodFNvdXJjZS5jcHA7IHBhdGggPSBmaWx0ZXJzL1Nwb3RMaWdodFNvdXJj
ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xMDUzOCw2ICsxMDU1Myw5IEBA
CiAJCUE1QzU2NkFBMTI3QTNBQUQwMEU4QTNGRiAvKiBEaXNrSW1hZ2VDYWNoZUNsaWVudElPUy5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBEaXNrSW1hZ2VDYWNoZUNsaWVudElP
Uy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBNUM5NzRDRjExNDg1RkYxMDA2NkYy
QUIgLyogS2V5RXZlbnRDb2NvYS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBL
ZXlFdmVudENvY29hLmg7IHBhdGggPSBjb2NvYS9LZXlFdmVudENvY29hLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCUE1Qzk3NEQwMTE0ODVGRjEwMDY2RjJBQiAvKiBLZXlFdmVudENv
Y29hLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBuYW1lID0gS2V5RXZlbnRD
b2NvYS5tbTsgcGF0aCA9IGNvY29hL0tleUV2ZW50Q29jb2EubW07IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCUE1REVCRDlGMTZGQjkwODcwMDgzNkZFMCAvKiBXZWJLaXRQbGF5YmFja1Rh
cmdldEF2YWlsYWJpbGl0eUV2ZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IFdlYktpdFBsYXliYWNrVGFyZ2V0QXZhaWxhYmlsaXR5RXZlbnQuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQlBNURFQkRBMDE2RkI5MDg3MDA4MzZGRTAgLyogV2ViS2l0
UGxheWJhY2tUYXJnZXRBdmFpbGFiaWxpdHlFdmVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBXZWJLaXRQbGF5YmFja1RhcmdldEF2YWlsYWJpbGl0eUV2ZW50Lmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUE1REVCREExMTZGQjkwODcwMDgzNkZFMCAvKiBXZWJL
aXRQbGF5YmFja1RhcmdldEF2YWlsYWJpbGl0eUV2ZW50LmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBh
dGggPSBXZWJLaXRQbGF5YmFja1RhcmdldEF2YWlsYWJpbGl0eUV2ZW50LmlkbDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTVGNkUxNkMxMzJFRDQ2RTAwOEVEQUUzIC8qIEF1dG9jYXBp
dGFsaXplLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEF1dG9jYXBp
dGFsaXplLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTVGOUVGNkUxMjY2NzUw
RDAwRkNDRjUyIC8qIERpc2tJbWFnZUNhY2hlSU9TLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAub2JqY3BwOyBwYXRoID0gRGlza0ltYWdlQ2FjaGVJT1MubW07IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCUE1RjlFRjZGMTI2Njc1MEQwMEZDQ0Y1MiAvKiBEaXNrSW1hZ2VDYWNoZUlP
Uy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBEaXNrSW1hZ2VDYWNoZUlPUy5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTI0NzUsNiArMTI0OTMsNyBAQAogCQlC
RTg4RTBENTE3MTVEMkEyMDA2NThEOTggLyogVmlkZW9UcmFja0xpc3QuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gVmlkZW9UcmFja0xpc3QuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlCRTg4RTBENjE3MTVEMkEyMDA2NThEOTggLyogVmlkZW9UcmFj
a0xpc3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVmlkZW9UcmFja0xpc3Qu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkU4OEUwRDcxNzE1RDJBMjAwNjU4RDk4
IC8qIFZpZGVvVHJhY2tMaXN0LmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBWaWRlb1RyYWNr
TGlzdC5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUJFOEM3NTMwMTA2ODEzMjQw
MDFFOTNGNSAvKiBTcGVsbGluZ0RvdC5wbmcgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSBpbWFnZS5wbmc7IHBhdGggPSBTcGVsbGluZ0RvdC5wbmc7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJFOEVGMDNFMTcxQzhGRjkwMDlCNDhDMyAvKiBK
U0F1ZGlvVHJhY2suY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNB
dWRpb1RyYWNrLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkU4RUYwM0YxNzFD
OEZGOTAwOUI0OEMzIC8qIEpTQXVkaW9UcmFjay5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBKU0F1ZGlvVHJhY2suaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkU4
RUYwNDAxNzFDOEZGOTAwOUI0OEMzIC8qIEpTQXVkaW9UcmFja0xpc3QuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNBdWRpb1RyYWNrTGlzdC5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xMjc4Nyw2ICsxMjgwNiw4IEBACiAJCUQwMDBFRDI2MTFD
MUI5Q0QwMEM0NzcyNiAvKiBTdWJmcmFtZUxvYWRlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBTdWJmcmFtZUxvYWRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQlEMDFBMjdBQjEwQzlCRkQ4MDAwMjZBNDIgLyogU3BhY2VTcGxpdFN0cmluZy5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTcGFjZVNwbGl0U3RyaW5nLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRDAxQTI3QUMxMEM5QkZEODAwMDI2QTQyIC8qIFNw
YWNlU3BsaXRTdHJpbmcuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU3BhY2VT
cGxpdFN0cmluZy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlEMDJCNjRCMDE0MDg5
RTU2MDA2RUZBMjEgLyogRGljdGF0aW9uUGhyYXNlV2l0aEFsdGVybmF0aXZlc0RvdC5wbmcgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBpbWFnZS5wbmc7
IHBhdGggPSBEaWN0YXRpb25QaHJhc2VXaXRoQWx0ZXJuYXRpdmVzRG90LnBuZzsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRDAyQjY0QjExNDA4OUU1NjAwNkVGQTIxIC8qIERpY3RhdGlv
blBocmFzZVdpdGhBbHRlcm5hdGl2ZXNEb3RAMngucG5nICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gaW1hZ2UucG5nOyBwYXRoID0gIkRpY3RhdGlvblBo
cmFzZVdpdGhBbHRlcm5hdGl2ZXNEb3RAMngucG5nIjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJRDA1Q0VEMjcwQTQwQkIyQzAwQzVBRjM4IC8qIEZvcm1hdEJsb2NrQ29tbWFuZC5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRm9ybWF0QmxvY2tDb21tYW5k
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRDA1Q0VEMjgwQTQwQkIyQzAwQzVB
RjM4IC8qIEZvcm1hdEJsb2NrQ29tbWFuZC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gRm9ybWF0QmxvY2tDb21tYW5kLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CUQwNkMwRDhEMENGRDExNDYwMDY1RjQzRiAvKiBSZW1vdmVGb3JtYXRDb21tYW5kLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlbW92ZUZvcm1hdENvbW1hbmQuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTEyNzk5LDYgKzEyODIwLDggQEAKIAkJRDBCMDU1NjYw
OUM2NzAwMTAwMzA3RTQzIC8qIENyZWF0ZUxpbmtDb21tYW5kLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IENyZWF0ZUxpbmtDb21tYW5kLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCUQwQjA1NTY3MDlDNjcwMDEwMDMwN0U0MyAvKiBDcmVhdGVMaW5rQ29tbWFuZC5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDcmVhdGVMaW5rQ29tbWFu
ZC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUQwQkM1NDQ4MTQ0M0FDNEEwMEUx
MDVEQSAvKiBDYWNoZWRTdHlsZVNoZWV0Q2xpZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IENhY2hlZFN0eWxlU2hlZXRDbGllbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJRDBCRDRGNUExNDA4ODUwRjAwNjgzOUI2IC8qIERpY3RhdGlvbkNvbW1hbmRJT1Mu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRGljdGF0aW9uQ29tbWFu
ZElPUy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUQwQkQ0RjVCMTQwODg1MEYw
MDY4MzlCNiAvKiBEaWN0YXRpb25Db21tYW5kSU9TLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IERpY3RhdGlvbkNvbW1hbmRJT1MuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJRDBDRTU4RjYxMjVFNENDMjAwRjNGMTk5IC8qIFJlc291cmNlTG9hZFNjaGVkdWxlci5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZXNvdXJjZUxvYWRTY2hl
ZHVsZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlEMENFNThGNzEyNUU0Q0My
MDBGM0YxOTkgLyogUmVzb3VyY2VMb2FkU2NoZWR1bGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFJlc291cmNlTG9hZFNjaGVkdWxlci5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQlEMEVEQTc3MjE0M0UzMDNDMDAyOEUzODMgLyogQ2FjaGVkUmF3UmVzb3VyY2Uu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ2FjaGVkUmF3UmVzb3Vy
Y2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTM3NjIsNiArMTM3ODUsOCBA
QAogCQlGRUIyNkQyNzE2N0E4RjJBMDBGREQyNkIgLyogRGF0YWJhc2VTZXJ2ZXIuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRGF0YWJhc2VTZXJ2ZXIuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGRUJDNUYyRjE2QkQwQ0MzMDA2NTlCRDMgLyogRGF0
YWJhc2VCYXNlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IERhdGFi
YXNlQmFzZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUZFQkM1RjMwMTZCRDBD
QzMwMDY1OUJEMyAvKiBEYXRhYmFzZUJhc2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gRGF0YWJhc2VCYXNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUZFRDEz
RDI2MENFQTkxREYwMEQ4OTQ2NiAvKiBET01VSUtpdEV4dGVuc2lvbnMuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gRE9NVUlLaXRFeHRlbnNpb25zLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCUZFRDEzRDI3MENFQTkxREYwMEQ4OTQ2NiAvKiBET01VSUtpdEV4dGVu
c2lvbnMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBET01VSUtp
dEV4dGVuc2lvbnMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUZFRDEzRDM5MENF
QTkzNDYwMEQ4OTQ2NiAvKiBFZGl0b3JJT1MubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5v
YmpjcHA7IHBhdGggPSBFZGl0b3JJT1MubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CUZFRDEzRDNCMENFQTkzNkEwMEQ4OTQ2NiAvKiBGcmFtZUlPUy5tbSAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEZyYW1lSU9TLm1tOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQlGRUQxM0QzRjBDRUE5Mzk0MDBEODk0NjYgLyogSWNvbklPUy5tbSAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEljb25JT1MubW07IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CkBAIC0xMzc3MCw2ICsxMzc5NSw3IEBACiAJCUZFREVGODQwMTY3OTcx
MDgwMDBFNDQ0QSAvKiBEYXRhYmFzZVN0cmF0ZWd5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IERhdGFiYXNlU3RyYXRlZ3kuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJRkVFMTgxMTExNkMzMTlFODAwMDg0ODQ5IC8qIFNRTFRyYW5zYWN0aW9uQmFja2VuZC5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTUUxUcmFuc2FjdGlvbkJhY2tl
bmQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGRUUxODExMjE2QzMxOUU4MDAw
ODQ4NDkgLyogU1FMVHJhbnNhY3Rpb25CYWNrZW5kLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFNRTFRyYW5zYWN0aW9uQmFja2VuZC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQlGRUU3RDY2MTBEOTlBRDE2MDA1MzUxRjYgLyogaU9TLnhjY29uZmlnICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gdGV4dC54Y2NvbmZpZzsgcGF0aCA9IGlPUy54Y2NvbmZpZzsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJRkY5NDVFQzkxNjFGN0YzNjAwOTcxQkM4IC8qIFBzZXVkb0VsZW1lbnQuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUHNldWRvRWxlbWVudC5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUZGOTQ1RUNBMTYxRjdGMzYwMDk3MUJDOCAv
KiBQc2V1ZG9FbGVtZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBzZXVk
b0VsZW1lbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkZBQzMwRkMxODRGQjE0
NTAwOEM0RjFFIC8qIFRyYWlsaW5nT2JqZWN0cy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBUcmFpbGluZ09iamVjdHMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAg
LTE0MzU3LDYgKzE0MzgzLDcgQEAKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAo
CiAJCQkJQ0QwREJCM0UxNDIyNzRFNjAwMjgwMjYzIC8qIGF1ZGlvICovLAorCQkJCTY1OTk4QTY1
MEU1RjVGRDMwMDRFMDk3QSAvKiBpbWFnZXMgKi8sCiAJCQkJNDZGOUQ1REEwQjBENjAxNzAwMjhF
RTM2IC8qIGFsaWFzQ3Vyc29yLnBuZyAqLywKIAkJCQk0NkQ0RjI0NjBBRjk3RTgxMDAzNTM4NUEg
LyogY2VsbEN1cnNvci5wbmcgKi8sCiAJCQkJOTMxNTNCREQxNDE5NTlGNDAwRkNGNUJFIC8qIGRl
bGV0ZUJ1dHRvbi5wbmcgKi8sCkBAIC0xNDg2MCw2ICsxNDg4Nyw3IEBACiAJCQkJMUNERDQ1RTYw
QkE5Qzg0NjAwRjkwMTQ3IC8qIEJhc2UueGNjb25maWcgKi8sCiAJCQkJMUNERDQ1RTQwQkE5Qzg0
NjAwRjkwMTQ3IC8qIERlYnVnUmVsZWFzZS54Y2NvbmZpZyAqLywKIAkJCQk0NDkwOThCMTBGOEY4
MjUyMDA3NkEzMjcgLyogRmVhdHVyZURlZmluZXMueGNjb25maWcgKi8sCisJCQkJRkVFN0Q2NjEw
RDk5QUQxNjAwNTM1MUY2IC8qIGlPUy54Y2NvbmZpZyAqLywKIAkJCQkxQzkwNERGOTBCQTlEMkM4
MDA4MUU5RDAgLyogVmVyc2lvbi54Y2NvbmZpZyAqLywKIAkJCQkxQ0RENDVFNTBCQTlDODQ2MDBG
OTAxNDcgLyogV2ViQ29yZS54Y2NvbmZpZyAqLywKIAkJCQlFMUJBNjZGMjE3NDJCRENDMDBDMjAy
NTEgLyogV2ViQ29yZVRlc3RTaGltLnhjY29uZmlnICovLApAQCAtMTUyMjEsNiArMTUyNDksOCBA
QAogCQk0NDMyOTJDMTBFQkE2RDczMDBFNjIwMTYgLyogaW9zICovID0gewogCQkJaXNhID0gUEJY
R3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJCQlEMEJENEY1QTE0MDg4NTBGMDA2ODM5QjYgLyog
RGljdGF0aW9uQ29tbWFuZElPUy5jcHAgKi8sCisJCQkJRDBCRDRGNUIxNDA4ODUwRjAwNjgzOUI2
IC8qIERpY3RhdGlvbkNvbW1hbmRJT1MuaCAqLywKIAkJCQlGRUQxM0QzOTBDRUE5MzQ2MDBEODk0
NjYgLyogRWRpdG9ySU9TLm1tICovLAogCQkJKTsKIAkJCXBhdGggPSBpb3M7CkBAIC0xNTk0MSw2
ICsxNTk3MSwxNyBAQAogCQkJcGF0aCA9IG1hYzsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
CiAJCX07CisJCTY1OTk4QTY1MEU1RjVGRDMwMDRFMDk3QSAvKiBpbWFnZXMgKi8gPSB7CisJCQlp
c2EgPSBQQlhHcm91cDsKKwkJCWNoaWxkcmVuID0gKAorCQkJCUQwMkI2NEIwMTQwODlFNTYwMDZF
RkEyMSAvKiBEaWN0YXRpb25QaHJhc2VXaXRoQWx0ZXJuYXRpdmVzRG90LnBuZyAqLywKKwkJCQlE
MDJCNjRCMTE0MDg5RTU2MDA2RUZBMjEgLyogRGljdGF0aW9uUGhyYXNlV2l0aEFsdGVybmF0aXZl
c0RvdEAyeC5wbmcgKi8sCisJCQkJQkU4Qzc1MzAxMDY4MTMyNDAwMUU5M0Y1IC8qIFNwZWxsaW5n
RG90LnBuZyAqLywKKwkJCQkwMUU2QzJFMzExOTRCMjgyMDA1MDgyMUMgLyogU3BlbGxpbmdEb3RA
MngucG5nICovLAorCQkJKTsKKwkJCW5hbWUgPSBpbWFnZXM7CisJCQlzb3VyY2VUcmVlID0gIjxn
cm91cD4iOworCQl9OwogCQk2NUJGMDIxODA5NzQ4MDYzMDBDNDMxOTYgLyogcGFnZSAqLyA9IHsK
IAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCkBAIC0xNzM2NCw2ICsxNzQwNSw3
IEBACiAJCTk3MTE0NUZFMTRFRjAwNkUwMDY3NEZEOSAvKiBNb2R1bGVzICovID0gewogCQkJaXNh
ID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJCQlDRTI2MTY5RDE4N0U2NTU0MDA3OTU1
RjMgLyogYWlycGxheSAqLywKIAkJCQkwNzJBRTFERTE4M0MwNTEzMDAwQTU5ODggLyogcGx1Z2lu
cyAqLywKIAkJCQlDREE5OERCRDE2MDE0RTA4MDBGRUEzQjEgLyogZW5jcnlwdGVkbWVkaWEgKi8s
CiAJCQkJOTcxMTQ1RkYxNEVGMDA3OTAwNjc0RkQ5IC8qIGdlb2xvY2F0aW9uICovLApAQCAtMjAw
OTksNiArMjAxNDEsOCBAQAogCQkJCTg1MzhGMDg0MEFENzJDQjYwMDZBODFEMSAvKiBET01SYW5n
ZXMuaCAqLywKIAkJCQlCQzFBMzdBNzA5N0M3MTVGMDAxOUYzRDggLyogRE9NU3R5bGVzaGVldHMu
aCAqLywKIAkJCQlCQzFBMzdBODA5N0M3MTVGMDAxOUYzRDggLyogRE9NVHJhdmVyc2FsLmggKi8s
CisJCQkJRkVEMTNEMjYwQ0VBOTFERjAwRDg5NDY2IC8qIERPTVVJS2l0RXh0ZW5zaW9ucy5oICov
LAorCQkJCUZFRDEzRDI3MENFQTkxREYwMEQ4OTQ2NiAvKiBET01VSUtpdEV4dGVuc2lvbnMubW0g
Ki8sCiAJCQkJQkMxQTM3QTkwOTdDNzE1RjAwMTlGM0Q4IC8qIERPTVV0aWxpdHkubW0gKi8sCiAJ
CQkJQkMxQTM3QUEwOTdDNzE1RjAwMTlGM0Q4IC8qIERPTVZpZXdzLmggKi8sCiAJCQkJMUExRDEz
N0UwQTUzMjU1MjAwNjRCRjVGIC8qIERPTVhQYXRoLmggKi8sCkBAIC0yMDUxNSw2ICsyMDU1OSw3
IEBACiAJCUJDQ0U1OEI0MTA2MUU5MjUwMDhGQjM1QSAvKiBDb25zdHJ1Y3RvcnMgKi8gPSB7CiAJ
CQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAorCQkJCUNFMjYxNjk0MTg3RTY0Njkw
MDc5NTVGMyAvKiBpb3MgKi8sCiAJCQkJQkM2QzQ5RjEwRDdEQkEwNTAwRkZBNTU4IC8qIEpTSW1h
Z2VDb25zdHJ1Y3Rvci5jcHAgKi8sCiAJCQkJQkM2QzQ5RjIwRDdEQkEwNTAwRkZBNTU4IC8qIEpT
SW1hZ2VDb25zdHJ1Y3Rvci5oICovLAogCQkJKTsKQEAgLTIwODI1LDYgKzIwODcwLDMyIEBACiAJ
CQlwYXRoID0gbWVkaWFzb3VyY2U7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwogCQl9Owor
CQlDRTI2MTY5NDE4N0U2NDY5MDA3OTU1RjMgLyogaW9zICovID0geworCQkJaXNhID0gUEJYR3Jv
dXA7CisJCQljaGlsZHJlbiA9ICgKKwkJCQlBMURFNzEzMDE4NjEzMjIyMDA3MzQxOTIgLyogVG91
Y2hDb25zdHJ1Y3RvcnMuY3BwICovLAorCQkJKTsKKwkJCXBhdGggPSBpb3M7CisJCQlzb3VyY2VU
cmVlID0gIjxncm91cD4iOworCQl9OworCQlDRTI2MTY5RDE4N0U2NTU0MDA3OTU1RjMgLyogYWly
cGxheSAqLyA9IHsKKwkJCWlzYSA9IFBCWEdyb3VwOworCQkJY2hpbGRyZW4gPSAoCisJCQkJQTVE
RUJEOUYxNkZCOTA4NzAwODM2RkUwIC8qIFdlYktpdFBsYXliYWNrVGFyZ2V0QXZhaWxhYmlsaXR5
RXZlbnQuY3BwICovLAorCQkJCUE1REVCREEwMTZGQjkwODcwMDgzNkZFMCAvKiBXZWJLaXRQbGF5
YmFja1RhcmdldEF2YWlsYWJpbGl0eUV2ZW50LmggKi8sCisJCQkJQTVERUJEQTExNkZCOTA4NzAw
ODM2RkUwIC8qIFdlYktpdFBsYXliYWNrVGFyZ2V0QXZhaWxhYmlsaXR5RXZlbnQuaWRsICovLAor
CQkJKTsKKwkJCXBhdGggPSBhaXJwbGF5OworCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKKwkJ
fTsKKwkJQ0UyNjE2QTQxODdFNjVDMTAwNzk1NUYzIC8qIGlvcyAqLyA9IHsKKwkJCWlzYSA9IFBC
WEdyb3VwOworCQkJY2hpbGRyZW4gPSAoCisJCQkJQTFERTcxMkIxODYxMkFDMTAwNzM0MTkyIC8q
IFRvdWNoRXZlbnRzLmNwcCAqLywKKwkJCSk7CisJCQlwYXRoID0gaW9zOworCQkJc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsKKwkJfTsKIAkJQ0U3OUQ2ODYxN0YyMjBFRDAwODE1QzAwIC8qIGlvcyAq
LyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCkBAIC0yMTY5NCw2ICsy
MTc2NSw3IEBACiAJCUY1MjNEMzI0MDJERTQ0NzgwMTg2MzVDQSAvKiBkb20gKi8gPSB7CiAJCQlp
c2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAorCQkJCUNFMjYxNkE0MTg3RTY1QzEwMDc5
NTVGMyAvKiBpb3MgKi8sCiAJCQkJRTFDNERFNkQwRUE3NUM2NTAwMjNDQ0Q2IC8qIEFjdGl2ZURP
TU9iamVjdC5jcHAgKi8sCiAJCQkJRTFDNERFNjgwRUE3NUMxRTAwMjNDQ0Q2IC8qIEFjdGl2ZURP
TU9iamVjdC5oICovLAogCQkJCUE4QzRBN0ZDMDlENTYzMjcwMDAzQUM4RCAvKiBBdHRyLmNwcCAq
LywKQEAgLTIzMjQ5LDYgKzIzMzIxLDcgQEAKIAkJCQk4NTZDOEFFNDBBOTEyNjQ5MDA1QzY4N0Ig
LyogRE9NT2JqZWN0LmggaW4gSGVhZGVycyAqLywKIAkJCQkwNzA1ODUxMzE3RkE3MTA3MDA1RjJC
Q0IgLyogSlNNZWRpYVN0cmVhbUNhcGFiaWxpdGllcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkM1
M0RBNjAxMTQzMTQxQTAwMEQ4MTdFIC8qIERPTU9iamVjdEhhc2hUYWJsZU1hcC5oIGluIEhlYWRl
cnMgKi8sCisJCQkJRkVEMTNEMkEwQ0VBOTFERjAwRDg5NDY2IC8qIERPTVVJS2l0RXh0ZW5zaW9u
cy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODVDN0Y1RDAwQUFGQjhEOTAwNDAxNEREIC8qIERPTU92
ZXJmbG93RXZlbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTg1OTg5RENGMEFDQzhCQkQwMEEwQkM1
MSAvKiBET01PdmVyZmxvd0V2ZW50SW50ZXJuYWwuaCBpbiBIZWFkZXJzICovLAogCQkJCUUxMjg0
QkQ2MTA0NEEwMUUwMEVBRUI1MiAvKiBET01QYWdlVHJhbnNpdGlvbkV2ZW50LmggaW4gSGVhZGVy
cyAqLywKQEAgLTI0OTE2LDYgKzI0OTg5LDcgQEAKIAkJCQlGNTVCM0REMDEyNTFGMTJEMDAzRUYy
NjkgLyogUmVzZXRJbnB1dFR5cGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTUxNEJDODQzMTYxQ0Yw
NUMwMDRENTJGNCAvKiBSZXNvdXJjZUJ1ZmZlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJN0VFNjg0
NkExMkQyNkUzODAwRTc5NDE1IC8qIFJlc291cmNlRXJyb3IuaCBpbiBIZWFkZXJzICovLAorCQkJ
CUQwQkQ0RjVEMTQwODg1MEYwMDY4MzlCNiAvKiBEaWN0YXRpb25Db21tYW5kSU9TLmggaW4gSGVh
ZGVycyAqLywKIAkJCQk5MzRGNzEzQzBENUE2RjE5MDAwMThENjkgLyogUmVzb3VyY2VFcnJvckJh
c2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTUxNEM3Njc5MENFOTIzQTEwMDdFRjNDRCAvKiBSZXNv
dXJjZUhhbmRsZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMjZGQUU0Q0QxODUyRTNBNTAwNEM4QzQ2
IC8qIFJlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGUuaCBpbiBIZWFkZXJzICov
LApAQCAtMjU1ODAsNiArMjU2NTQsNyBAQAogCQkJCUY1QTE1NDI4MTI3OTUzNEQwMEQwQjBDMCAv
KiBWYWxpZGF0aW9uTWVzc2FnZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRjUxM0EzRUExNUZGNDg0
MTAwMTUyNkRCIC8qIFZhbGlkYXRpb25NZXNzYWdlQ2xpZW50LmggaW4gSGVhZGVycyAqLywKIAkJ
CQkxNUM3NzA4RDEwMEQzQzZCMDA1QkEyNjcgLyogVmFsaWRpdHlTdGF0ZS5oIGluIEhlYWRlcnMg
Ki8sCisJCQkJQTVERUJEQTQxNkZCOTA4NzAwODM2RkUwIC8qIFdlYktpdFBsYXliYWNrVGFyZ2V0
QXZhaWxhYmlsaXR5RXZlbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUZEMzE2MEFGMTJCMDI2Rjcw
MEMxQTM1OSAvKiBWZWN0b3JNYXRoLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQ0EyNTcxNTEyOTND
MDEwMDA3QTI2M0QgLyogVmVydGljYWxQb3NpdGlvbkNhY2hlLmggaW4gSGVhZGVycyAqLywKIAkJ
CQlCRTg4RTBERjE3MTVEMkEyMDA2NThEOTggLyogVmlkZW9UcmFjay5oIGluIEhlYWRlcnMgKi8s
CkBAIC0yNTk0MywxNSArMjYwMTgsMTkgQEAKIAkJCWlzYSA9IFBCWFJlc291cmNlc0J1aWxkUGhh
c2U7CiAJCQlidWlsZEFjdGlvbk1hc2sgPSAyMTQ3NDgzNjQ3OwogCQkJZmlsZXMgPSAoCisJCQkJ
RDAyQjY0QjIxNDA4OUU1NjAwNkVGQTIxIC8qIERpY3RhdGlvblBocmFzZVdpdGhBbHRlcm5hdGl2
ZXNEb3QucG5nIGluIFJlc291cmNlcyAqLywKIAkJCQk0NkY5RDVERDBCMEQ2MDE3MDAyOEVFMzYg
LyogYWxpYXNDdXJzb3IucG5nIGluIFJlc291cmNlcyAqLywKKwkJCQlEMDJCNjRCMzE0MDg5RTU2
MDA2RUZBMjEgLyogRGljdGF0aW9uUGhyYXNlV2l0aEFsdGVybmF0aXZlc0RvdEAyeC5wbmcgaW4g
UmVzb3VyY2VzICovLAogCQkJCTQ2RDRGMjQ5MEFGOTdFODEwMDM1Mzg1QSAvKiBjZWxsQ3Vyc29y
LnBuZyBpbiBSZXNvdXJjZXMgKi8sCiAJCQkJOTMxNTNCREUxNDE5NTlGNDAwRkNGNUJFIC8qIGRl
bGV0ZUJ1dHRvbi5wbmcgaW4gUmVzb3VyY2VzICovLAorCQkJCUJFOEM3NTMxMTA2ODEzMjQwMDFF
OTNGNSAvKiBTcGVsbGluZ0RvdC5wbmcgaW4gUmVzb3VyY2VzICovLAogCQkJCTkzMTUzQkNEMTQx
N0ZCQkYwMEZDRjVCRSAvKiBkZWxldGVCdXR0b25AMngucG5nIGluIFJlc291cmNlcyAqLywKIAkJ
CQk5MzE1M0JFMDE0MTk1QTI4MDBGQ0Y1QkUgLyogZGVsZXRlQnV0dG9uUHJlc3NlZC5wbmcgaW4g
UmVzb3VyY2VzICovLAogCQkJCTkzMTUzQkNGMTQxN0ZCREIwMEZDRjVCRSAvKiBkZWxldGVCdXR0
b25QcmVzc2VkQDJ4LnBuZyBpbiBSZXNvdXJjZXMgKi8sCiAJCQkJODUxMzZDOTkwQUVENjY1OTAw
RjkwQTNEIC8qIGVhc3RSZXNpemVDdXJzb3IucG5nIGluIFJlc291cmNlcyAqLywKIAkJCQk4NTEz
NkM5QTBBRUQ2NjU5MDBGOTBBM0QgLyogZWFzdFdlc3RSZXNpemVDdXJzb3IucG5nIGluIFJlc291
cmNlcyAqLywKIAkJCQk4NTEzNkM5QjBBRUQ2NjU5MDBGOTBBM0QgLyogaGVscEN1cnNvci5wbmcg
aW4gUmVzb3VyY2VzICovLAorCQkJCTAxRTZDMkU0MTE5NEIyODIwMDUwODIxQyAvKiBTcGVsbGlu
Z0RvdEAyeC5wbmcgaW4gUmVzb3VyY2VzICovLAogCQkJCTdDQzdFM0Q3MTcyMDhDMEYwMDNDNTI3
NyAvKiBJRE5TY3JpcHRXaGl0ZUxpc3QudHh0IGluIFJlc291cmNlcyAqLywKIAkJCQk5MzE1M0JF
NDE0MTk1QjJBMDBGQ0Y1QkUgLyogaW5wdXRTcGVlY2gucG5nIGluIFJlc291cmNlcyAqLywKIAkJ
CQkyRDlGMEUxMzE0RkYxQ0JGMDBCQTBGRjcgLyogbGluZWFyU1JHQi5pY2MgaW4gUmVzb3VyY2Vz
ICovLApAQCAtMjYzNzQsNiArMjY0NTMsNyBAQAogCQkJCUJDNjRCNEQ3MENCNDI5OEEwMDVGMkI2
MiAvKiBDU1NGb250RmFjZVNvdXJjZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCQzY0QjREOTBD
QjQyOThBMDA1RjJCNjIgLyogQ1NTRm9udEZhY2VTcmNWYWx1ZS5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQk0QTZFOUZDMzEzQzE3RDFEMDA0NkE3RjggLyogQ1NTRm9udEZlYXR1cmVWYWx1ZS5jcHAg
aW4gU291cmNlcyAqLywKKwkJCQlBNURFQkRBMzE2RkI5MDg3MDA4MzZGRTAgLyogV2ViS2l0UGxh
eWJhY2tUYXJnZXRBdmFpbGFiaWxpdHlFdmVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCQzY0
QjREQjBDQjQyOThBMDA1RjJCNjIgLyogQ1NTRm9udFNlbGVjdG9yLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCUE4MEU2Q0YxMEExOTg5Q0EwMDdGQjhDNSAvKiBDU1NGb250VmFsdWUuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJQkMwMkE2NDYwRTA5QUFFOTAwNEI2RDJCIC8qIENTU0Z1bmN0aW9uVmFs
dWUuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC0yNzA3Myw2ICsyNzE1Myw3IEBACiAJCQkJOTcyMDVB
QjUxMjM5MjkxMDAwQjE3MzgwIC8qIEltYWdlRG9jdW1lbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJRjU1QjNEQzExMjUxRjEyRDAwM0VGMjY5IC8qIEltYWdlSW5wdXRUeXBlLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTUxRDcxOUU2MTgxMTA2RTAwMDE2REM1MSAvKiBJREJPcGVuREJSZXF1ZXN0
LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUZFRDEzRDJCMENFQTkxREYwMEQ4OTQ2NiAvKiBET01V
SUtpdEV4dGVuc2lvbnMubW0gaW4gU291cmNlcyAqLywKIAkJCQkwODk1ODI1NTBFODU3QTdFMDBG
ODJDODMgLyogSW1hZ2VMb2FkZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQjI3NTM1N0IwQjA1
MzgxNDAwMkNFNjRGIC8qIEltYWdlTWFjLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMkQ1QTU5MkYx
NTI1MjUyMzAwMzZFRTUxIC8qIEltYWdlT3JpZW50YXRpb24uY3BwIGluIFNvdXJjZXMgKi8sCkBA
IC0yNzI1OCw2ICsyNzMzOSw3IEBACiAJCQkJMUE0OTRFREUwQTEyM0Y0QzAwRkRBRkMxIC8qIEpT
RG9jdW1lbnRGcmFnbWVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk2NURGMzFGNTA5RDFDQzYw
MDAwQkUzMjUgLyogSlNEb2N1bWVudFR5cGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMUFDMjI2
MEMwREI2OUYxOTAwODlCNjY5IC8qIEpTRE9NQXBwbGljYXRpb25DYWNoZS5jcHAgaW4gU291cmNl
cyAqLywKKwkJCQlBMURFNzEyRDE4NjEyQUMxMDA3MzQxOTIgLyogVG91Y2hFdmVudHMuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJOTNCNzBENjMwOUVCMEM3QzAwOUQ4NDY4IC8qIEpTRE9NQmluZGlu
Zy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCQzYwRDdDMDBEMjlBNDYzMDBCOTkxOEYgLyogSlNE
T01Db3JlRXhjZXB0aW9uLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTQwRUNBRTgxMTZCOEI2OEEw
MEMzNjEwMyAvKiBKU0RPTUVycm9yLmNwcCBpbiBTb3VyY2VzICovLApAQCAtMjc0MjEsNiArMjc1
MDMsNyBAQAogCQkJCUJDMDZFRDA2MEJGRDVCQUUwMDg1NkU5RCAvKiBKU0hUTUxUYWJsZVNlY3Rp
b25FbGVtZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUQ2NDg5RDI1MTY2RkZDRjEwMDdDMDMx
QiAvKiBKU0hUTUxUZW1wbGF0ZUVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRDZGNzk2
MEQxNjZGRkVDRTAwNzZERDE4IC8qIEpTSFRNTFRlbXBsYXRlRWxlbWVudEN1c3RvbS5jcHAgaW4g
U291cmNlcyAqLywKKwkJCQlBMURFNzEzMjE4NjEzMjIyMDA3MzQxOTIgLyogVG91Y2hDb25zdHJ1
Y3RvcnMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTgwRTdFOUUwQTFBODNFMzAwN0ZCOEM1IC8q
IEpTSFRNTFRleHRBcmVhRWxlbWVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBODBFN0IxMzBB
MTlENjA2MDA3RkI4QzUgLyogSlNIVE1MVGl0bGVFbGVtZW50LmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCTA3MDc1NkQzMTQyMzlBNEUwMDQxNDE2MSAvKiBKU0hUTUxUcmFja0VsZW1lbnQuY3BwIGlu
IFNvdXJjZXMgKi8sCkBAIC0yODkzNCw2ICsyOTAxNyw3IEBACiAJCQkJMUFCN0ZDNzgwQThCOTJF
QzAwRDlEMzdCIC8qIFhQYXRoUGFyc2VyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTQ0NzY1MzFC
MTMzMTcwOTkwMDA2Qjc4OSAvKiBTU0xLZXlHZW5lcmF0b3JJT1MuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJMUFCN0ZDN0EwQThCOTJFQzAwRDlEMzdCIC8qIFhQYXRoUGF0aC5jcHAgaW4gU291cmNl
cyAqLywKKwkJCQlEMEJENEY1QzE0MDg4NTBGMDA2ODM5QjYgLyogRGljdGF0aW9uQ29tbWFuZElP
Uy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxQUI3RkM3QzBBOEI5MkVDMDBEOUQzN0IgLyogWFBh
dGhQcmVkaWNhdGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMUFCN0ZDN0UwQThCOTJFQzAwRDlE
MzdCIC8qIFhQYXRoUmVzdWx0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTFBQjdGQzgxMEE4Qjky
RUMwMEQ5RDM3QiAvKiBYUGF0aFN0ZXAuY3BwIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9HQ0NvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvR0NDb250cm9sbGVyLmNwcAppbmRleCBhYWJmYjAxOWJiMzFmMTkyNjJk
MjJmOWNlMWRhYzVlMTU3ODBhNWYwLi5mOTEwZGI2YTY4OTY5YTgwMzg0ZmZlNGYyZGVhMTcyOGMx
ZGExOTQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9HQ0NvbnRyb2xs
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0dDQ29udHJvbGxlci5jcHAK
QEAgLTgxLDYgKzgxLDEyIEBAIHZvaWQgR0NDb250cm9sbGVyOjpnY1RpbWVyRmlyZWQoVGltZXI8
R0NDb250cm9sbGVyPiopCiB2b2lkIEdDQ29udHJvbGxlcjo6Z2FyYmFnZUNvbGxlY3ROb3coKQog
ewogICAgIEpTTG9ja0hvbGRlciBsb2NrKEpTRE9NV2luZG93Ojpjb21tb25WTSgpKTsKKyNpZiBQ
TEFURk9STShJT1MpCisgICAgLy8gSWYgSmF2YVNjcmlwdCB3YXMgbmV2ZXIgcnVuIGluIHRoaXMg
cHJvY2VzcywgdGhlcmUncyBubyBuZWVkIHRvIGNhbGwgR0Mgd2hpY2ggd2lsbAorICAgIC8vIGVu
ZCB1cCBjcmVhdGluZyBhIFZNIHVubmVjZXNzYXJpbHkuCisgICAgaWYgKCFKU0RPTVdpbmRvdzo6
Y29tbW9uVk1FeGlzdHMoKSkKKyAgICAgICAgcmV0dXJuOworI2VuZGlmCiAgICAgaWYgKCFKU0RP
TVdpbmRvdzo6Y29tbW9uVk0oKS0+aGVhcC5pc0J1c3koKSkKICAgICAgICAgSlNET01XaW5kb3c6
OmNvbW1vblZNKCktPmhlYXAuY29sbGVjdEFsbEdhcmJhZ2UoKTsKIH0KQEAgLTk3LDYgKzEwMywy
NiBAQCB2b2lkIEdDQ29udHJvbGxlcjo6Z2FyYmFnZUNvbGxlY3RPbkFsdGVybmF0ZVRocmVhZEZv
ckRlYnVnZ2luZyhib29sIHdhaXRVbnRpbERvbgogICAgIGRldGFjaFRocmVhZCh0aHJlYWRJRCk7
CiB9CiAKKyNpZiBQTEFURk9STShJT1MpCit2b2lkIEdDQ29udHJvbGxlcjo6cmVsZWFzZUV4ZWN1
dGFibGVNZW1vcnkoKQoreworICAgIEpTTG9ja0hvbGRlciBsb2NrKEpTRE9NV2luZG93Ojpjb21t
b25WTSgpKTsKKworICAgIGlmICghSlNET01XaW5kb3c6OmNvbW1vblZNRXhpc3RzKCkpCisgICAg
ICAgIHJldHVybjsKKworICAgIC8vIFdlIHNob3VsZG4ndCBoYXZlIGFueSBqYXZhc2NyaXB0IHJ1
bm5pbmcgb24gb3VyIHN0YWNrIHdoZW4gdGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQuIFRoZQorICAg
IC8vIGZvbGxvd2luZyBsaW5lIGFzc2VydHMgdGhhdC4KKyAgICBBU1NFUlQoIUpTRE9NV2luZG93
Ojpjb21tb25WTSgpLT5keW5hbWljR2xvYmFsT2JqZWN0KTsKKworICAgIC8vIEJ1dCBiZSBzYWZl
IGluIHJlbGVhc2UgYnVpbGRzIGp1c3QgaW4gY2FzZS4uLgorICAgIGlmIChKU0RPTVdpbmRvdzo6
Y29tbW9uVk0oKS0+ZHluYW1pY0dsb2JhbE9iamVjdCkKKyAgICAgICAgcmV0dXJuOworCisgICAg
SlNET01XaW5kb3c6OmNvbW1vblZNKCktPnJlbGVhc2VFeGVjdXRhYmxlTWVtb3J5KCk7Cit9Cisj
ZW5kaWYKKwogdm9pZCBHQ0NvbnRyb2xsZXI6OnNldEphdmFTY3JpcHRHYXJiYWdlQ29sbGVjdG9y
VGltZXJFbmFibGVkKGJvb2wgZW5hYmxlKQogewogICAgIEpTRE9NV2luZG93Ojpjb21tb25WTSgp
LT5oZWFwLnNldEdhcmJhZ2VDb2xsZWN0aW9uVGltZXJFbmFibGVkKGVuYWJsZSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9HQ0NvbnRyb2xsZXIuaCBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0dDQ29udHJvbGxlci5oCmluZGV4IDhhMjRjYjBlMDgyZTA2NGUy
ODVlOWFhZTFmM2M2MDkzZWI0ZTdmNWQuLmZkMjMyYjA4MjExNmQ5MTQzYTdkNjUzODY1YjZkNWZk
MmQ4NmJiMGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0dDQ29udHJv
bGxlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0dDQ29udHJvbGxlci5oCkBA
IC00NCw2ICs0NCw5IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgdm9pZCBnYXJiYWdl
Q29sbGVjdE5vdygpOyAvLyBJdCdzIGJldHRlciB0byBjYWxsIGdhcmJhZ2VDb2xsZWN0U29vbiwg
dW5sZXNzIHlvdSBoYXZlIGEgc3BlY2lmaWMgcmVhc29uIG5vdCB0by4KIAogICAgICAgICB2b2lk
IGdhcmJhZ2VDb2xsZWN0T25BbHRlcm5hdGVUaHJlYWRGb3JEZWJ1Z2dpbmcoYm9vbCB3YWl0VW50
aWxEb25lKTsgLy8gVXNlZCBmb3Igc3RyZXNzIHRlc3RpbmcuCisjaWYgUExBVEZPUk0oSU9TKQor
ICAgICAgICB2b2lkIHJlbGVhc2VFeGVjdXRhYmxlTWVtb3J5KCk7CisjZW5kaWYKICAgICAgICAg
dm9pZCBzZXRKYXZhU2NyaXB0R2FyYmFnZUNvbGxlY3RvclRpbWVyRW5hYmxlZChib29sKTsKICAg
ICAgICAgdm9pZCBkaXNjYXJkQWxsQ29tcGlsZWRDb2RlKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ2FsbGJhY2tEYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU0NhbGxiYWNrRGF0YS5oCmluZGV4IGQzMjFjNTdmMDVjOWYwMjMyZjFlN2Qw
NGNhNDQyMWMzNzRiMDg2MjUuLmZmNzZhOWU4NTM3MjVmMzg4NGU4N2ZjNDUyMmYyODZlMWRhYTY4
ZDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ2FsbGJhY2tEYXRh
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDYWxsYmFja0RhdGEuaApAQCAt
NTgsNyArNTgsOSBAQCBwdWJsaWM6CiAgICAgCiAgICAgfkpTQ2FsbGJhY2tEYXRhKCkKICAgICB7
CisjaWYgIVBMQVRGT1JNKElPUykKICAgICAgICAgQVNTRVJUKG1fdGhyZWFkID09IGN1cnJlbnRU
aHJlYWQoKSk7CisjZW5kaWYKICAgICB9CiAKICAgICBKU0M6OkpTT2JqZWN0KiBjYWxsYmFjaygp
IHsgcmV0dXJuIG1fY2FsbGJhY2suZ2V0KCk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTRE9NV2luZG93QmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU0RPTVdpbmRvd0Jhc2UuY3BwCmluZGV4IDUwMDRhMTk2NmQ0N2JiNTljOGVmMDdhNWVm
OTFjOGU2OWEyMWIyNzguLjJiOGRkNDNjZjUxYWZmZWZkMzRjYTAxZGRiNTJiMTFlNDFmMzU1MGIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93QmFzZS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dCYXNlLmNwcApA
QCAtNDAsNiArNDAsMTIgQEAKICNpbmNsdWRlIDxydW50aW1lL01pY3JvdGFzay5oPgogI2luY2x1
ZGUgPHd0Zi9NYWluVGhyZWFkLmg+CiAKKyNpZiBQTEFURk9STShJT1MpCisjaW5jbHVkZSAiQ2hy
b21lQ2xpZW50LmgiCisjaW5jbHVkZSAiV2ViU2FmZUdDQWN0aXZpdHlDYWxsYmFja0lPUy5oIgor
I2luY2x1ZGUgIldlYlNhZmVJbmNyZW1lbnRhbFN3ZWVwZXJJT1MuaCIKKyNlbmRpZgorCiB1c2lu
ZyBuYW1lc3BhY2UgSlNDOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC0xMTAsNyArMTE2LDEx
IEBAIGJvb2wgSlNET01XaW5kb3dCYXNlOjpzdXBwb3J0c1Byb2ZpbGluZyhjb25zdCBKU0dsb2Jh
bE9iamVjdCogb2JqZWN0KQogICAgIGlmICghcGFnZSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwog
CisjaWYgRU5BQkxFKElOU1BFQ1RPUikKICAgICByZXR1cm4gcGFnZS0+aW5zcGVjdG9yQ29udHJv
bGxlcigpLT5wcm9maWxlckVuYWJsZWQoKTsKKyNlbHNlCisgICAgcmV0dXJuIGZhbHNlOworI2Vu
ZGlmIC8vIEVOQUJMRShJTlNQRUNUT1IpCiAjZW5kaWYKIH0KIApAQCAtMTY2LDcgKzE3Niw3IEBA
IGJvb2wgSlNET01XaW5kb3dCYXNlOjpzaG91bGRJbnRlcnJ1cHRTY3JpcHRCZWZvcmVUaW1lb3V0
KGNvbnN0IEpTR2xvYmFsT2JqZWN0KiBvCiAgICAgICAgIHJldHVybiB0cnVlOwogCiAjaWYgUExB
VEZPUk0oSU9TKQotICAgIGlmIChwYWdlLT5jaHJvbWUoKS5jbGllbnQoKS0+aXNTdG9wcGluZygp
KQorICAgIGlmIChwYWdlLT5jaHJvbWUoKS5jbGllbnQoKS5pc1N0b3BwaW5nKCkpCiAgICAgICAg
IHJldHVybiB0cnVlOwogI2VuZGlmCiAKQEAgLTIwMiwxNyArMjEyLDQ0IEBAIFZNKiBKU0RPTVdp
bmRvd0Jhc2U6OmNvbW1vblZNKCkKIHsKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogCisj
aWYgIVBMQVRGT1JNKElPUykKICAgICBzdGF0aWMgVk0qIHZtID0gMDsKKyNlbHNlCisgICAgVk0q
JiB2bSA9IGNvbW1vblZNSW50ZXJuYWwoKTsKKyNlbmRpZgogICAgIGlmICghdm0pIHsKICAgICAg
ICAgU2NyaXB0Q29udHJvbGxlcjo6aW5pdGlhbGl6ZVRocmVhZGluZygpOwogICAgICAgICB2bSA9
IFZNOjpjcmVhdGVMZWFrZWQoTGFyZ2VIZWFwKS5sZWFrUmVmKCk7CisjaWYgUExBVEZPUk0oSU9T
KQorICAgICAgICBQYXNzT3duUHRyPFdlYlNhZmVHQ0FjdGl2aXR5Q2FsbGJhY2s+IGFjdGl2aXR5
Q2FsbGJhY2sgPSBXZWJTYWZlR0NBY3Rpdml0eUNhbGxiYWNrOjpjcmVhdGUoJnZtLT5oZWFwKTsK
KyAgICAgICAgdm0tPmhlYXAuc2V0QWN0aXZpdHlDYWxsYmFjayhhY3Rpdml0eUNhbGxiYWNrKTsK
KyAgICAgICAgUGFzc093blB0cjxXZWJTYWZlSW5jcmVtZW50YWxTd2VlcGVyPiBpbmNyZW1lbnRh
bFN3ZWVwZXIgPSBXZWJTYWZlSW5jcmVtZW50YWxTd2VlcGVyOjpjcmVhdGUoJnZtLT5oZWFwKTsK
KyAgICAgICAgdm0tPmhlYXAuc2V0SW5jcmVtZW50YWxTd2VlcGVyKGluY3JlbWVudGFsU3dlZXBl
cik7CisgICAgICAgIHZtLT5tYWtlVXNhYmxlRnJvbU11bHRpcGxlVGhyZWFkcygpOworICAgICAg
ICB2bS0+aGVhcC5tYWNoaW5lVGhyZWFkcygpLmFkZEN1cnJlbnRUaHJlYWQoKTsKKyNlbHNlCiAg
ICAgICAgIHZtLT5leGNsdXNpdmVUaHJlYWQgPSBjdXJyZW50VGhyZWFkKCk7CisjZW5kaWYgLy8g
IVBMQVRGT1JNKElPUykKICAgICAgICAgaW5pdE5vcm1hbFdvcmxkQ2xpZW50RGF0YSh2bSk7CiAg
ICAgfQogCiAgICAgcmV0dXJuIHZtOwogfQogCisjaWYgUExBVEZPUk0oSU9TKQorYm9vbCBKU0RP
TVdpbmRvd0Jhc2U6OmNvbW1vblZNRXhpc3RzKCkKK3sKKyAgICByZXR1cm4gY29tbW9uVk1JbnRl
cm5hbCgpOworfQorCitWTSomIEpTRE9NV2luZG93QmFzZTo6Y29tbW9uVk1JbnRlcm5hbCgpCit7
CisgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKyAgICBzdGF0aWMgVk0qIGNvbW1vblZNOwor
ICAgIHJldHVybiBjb21tb25WTTsKK30KKyNlbmRpZgorCiAvLyBKU0RPTUdsb2JhbE9iamVjdCog
aXMgaWdub3JlZCwgYWNjZXNzaW5nIGEgd2luZG93IGluIGFueSBjb250ZXh0IHdpbGwKIC8vIHVz
ZSB0aGF0IERPTVdpbmRvdydzIHByb3RvdHlwZSBjaGFpbi4KIEpTVmFsdWUgdG9KUyhFeGVjU3Rh
dGUqIGV4ZWMsIEpTRE9NR2xvYmFsT2JqZWN0KiwgRE9NV2luZG93KiBkb21XaW5kb3cpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0N1c3RvbS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0N1c3RvbS5jcHAKaW5kZXgg
MzFhM2JkMmMxOGM0YjM2ZWE3ZTZmMmZhNzYyYTA0YTU1ZTYyMDM5NC4uZjkxMThmMzlhZTcwYmJm
YjgyNGY4MDQzMTU5NjJiMjNkODQ1MGNhZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNET01XaW5kb3dDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTRE9NV2luZG93Q3VzdG9tLmNwcApAQCAtNDEsNiArNDEsMTEgQEAKICNpbmNsdWRl
ICJKU1NoYXJlZFdvcmtlci5oIgogI2VuZGlmCiAKKyNpZiBFTkFCTEUoSU9TX1RPVUNIX0VWRU5U
UykKKyNpbmNsdWRlICJKU1RvdWNoQ29uc3RydWN0b3IuaCIKKyNpbmNsdWRlICJKU1RvdWNoTGlz
dENvbnN0cnVjdG9yLmgiCisjZW5kaWYKKwogI2lmIEVOQUJMRShXRUJfQVVESU8pCiAjaW5jbHVk
ZSAiSlNBdWRpb0NvbnRleHQuaCIKICNlbmRpZgpAQCAtNDUyLDYgKzQ1NywxOCBAQCBKU1ZhbHVl
IEpTRE9NV2luZG93OjppbWFnZShFeGVjU3RhdGUqIGV4ZWMpIGNvbnN0CiAgICAgcmV0dXJuIGdl
dERPTUNvbnN0cnVjdG9yPEpTSW1hZ2VDb25zdHJ1Y3Rvcj4oZXhlYy0+dm0oKSwgdGhpcyk7CiB9
CiAKKyNpZiBFTkFCTEUoSU9TX1RPVUNIX0VWRU5UUykKK0pTVmFsdWUgSlNET01XaW5kb3c6OnRv
dWNoKEV4ZWNTdGF0ZSogZXhlYykgY29uc3QKK3sKKyAgICByZXR1cm4gZ2V0RE9NQ29uc3RydWN0
b3I8SlNUb3VjaENvbnN0cnVjdG9yPihleGVjLT52bSgpLCB0aGlzKTsKK30KKworSlNWYWx1ZSBK
U0RPTVdpbmRvdzo6dG91Y2hMaXN0KEV4ZWNTdGF0ZSogZXhlYykgY29uc3QKK3sKKyAgICByZXR1
cm4gZ2V0RE9NQ29uc3RydWN0b3I8SlNUb3VjaExpc3RDb25zdHJ1Y3Rvcj4oZXhlYy0+dm0oKSwg
dGhpcyk7Cit9CisjZW5kaWYKKwogLy8gQ3VzdG9tIGZ1bmN0aW9ucwogCiBKU1ZhbHVlIEpTRE9N
V2luZG93OjpvcGVuKEV4ZWNTdGF0ZSogZXhlYykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTRGV2aWNlT3JpZW50YXRpb25FdmVudEN1c3RvbS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RldmljZU9yaWVudGF0aW9uRXZlbnRDdXN0b20uY3BwCmlu
ZGV4IDY1ZWNjYjNiOTQ1MzRjNjgwNjFkMGZlNGQwM2NiNWQ5YzA5M2FiYzAuLjg2ZGRjOTZhYTdh
ZDM3M2JhNDk1YWZjOGJlNmE1YmMwMzI1NWM3NDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTRGV2aWNlT3JpZW50YXRpb25FdmVudEN1c3RvbS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNEZXZpY2VPcmllbnRhdGlvbkV2ZW50Q3VzdG9tLmNw
cApAQCAtNjAsNiArNjAsMjUgQEAgSlNWYWx1ZSBKU0RldmljZU9yaWVudGF0aW9uRXZlbnQ6Omdh
bW1hKEV4ZWNTdGF0ZSopIGNvbnN0CiAgICAgcmV0dXJuIGpzTnVtYmVyKGltcC5vcmllbnRhdGlv
bigpLT5nYW1tYSgpKTsKIH0KIAorI2lmIFBMQVRGT1JNKElPUykKK0pTVmFsdWUgSlNEZXZpY2VP
cmllbnRhdGlvbkV2ZW50Ojp3ZWJraXRDb21wYXNzSGVhZGluZyhFeGVjU3RhdGUqKSBjb25zdAor
eworICAgIERldmljZU9yaWVudGF0aW9uRXZlbnQmIGltcCA9IGltcGwoKTsKKyAgICBpZiAoIWlt
cC5vcmllbnRhdGlvbigpLT5jYW5Qcm92aWRlQ29tcGFzc0hlYWRpbmcoKSkKKyAgICAgICAgcmV0
dXJuIGpzTnVsbCgpOworICAgIHJldHVybiBqc051bWJlcihpbXAub3JpZW50YXRpb24oKS0+Y29t
cGFzc0hlYWRpbmcoKSk7Cit9CisKK0pTVmFsdWUgSlNEZXZpY2VPcmllbnRhdGlvbkV2ZW50Ojp3
ZWJraXRDb21wYXNzQWNjdXJhY3koRXhlY1N0YXRlKikgY29uc3QKK3sKKyAgICBEZXZpY2VPcmll
bnRhdGlvbkV2ZW50JiBpbXAgPSBpbXBsKCk7CisgICAgaWYgKCFpbXAub3JpZW50YXRpb24oKS0+
Y2FuUHJvdmlkZUNvbXBhc3NBY2N1cmFjeSgpKQorICAgICAgICByZXR1cm4ganNOdWxsKCk7Cisg
ICAgcmV0dXJuIGpzTnVtYmVyKGltcC5vcmllbnRhdGlvbigpLT5jb21wYXNzQWNjdXJhY3koKSk7
Cit9CisjZW5kaWYKKworI2lmICFQTEFURk9STShJT1MpCiBKU1ZhbHVlIEpTRGV2aWNlT3JpZW50
YXRpb25FdmVudDo6YWJzb2x1dGUoRXhlY1N0YXRlKikgY29uc3QKIHsKICAgICBEZXZpY2VPcmll
bnRhdGlvbkV2ZW50JiBpbXAgPSBpbXBsKCk7CkBAIC02Nyw2ICs4Niw3IEBAIEpTVmFsdWUgSlNE
ZXZpY2VPcmllbnRhdGlvbkV2ZW50OjphYnNvbHV0ZShFeGVjU3RhdGUqKSBjb25zdAogICAgICAg
ICByZXR1cm4ganNOdWxsKCk7CiAgICAgcmV0dXJuIGpzQm9vbGVhbihpbXAub3JpZW50YXRpb24o
KS0+YWJzb2x1dGUoKSk7CiB9CisjZW5kaWYKIAogSlNWYWx1ZSBKU0RldmljZU9yaWVudGF0aW9u
RXZlbnQ6OmluaXREZXZpY2VPcmllbnRhdGlvbkV2ZW50KEV4ZWNTdGF0ZSogZXhlYykKIHsKQEAg
LTgxLDkgKzEwMSwxNyBAQCBKU1ZhbHVlIEpTRGV2aWNlT3JpZW50YXRpb25FdmVudDo6aW5pdERl
dmljZU9yaWVudGF0aW9uRXZlbnQoRXhlY1N0YXRlKiBleGVjKQogICAgIGRvdWJsZSBiZXRhID0g
ZXhlYy0+YXJndW1lbnQoNCkudG9OdW1iZXIoZXhlYyk7CiAgICAgYm9vbCBnYW1tYVByb3ZpZGVk
ID0gIWV4ZWMtPmFyZ3VtZW50KDUpLmlzVW5kZWZpbmVkT3JOdWxsKCk7CiAgICAgZG91YmxlIGdh
bW1hID0gZXhlYy0+YXJndW1lbnQoNSkudG9OdW1iZXIoZXhlYyk7CisjaWYgUExBVEZPUk0oSU9T
KQorICAgIGJvb2wgY29tcGFzc0hlYWRpbmdQcm92aWRlZCA9ICFleGVjLT5hcmd1bWVudCg2KS5p
c1VuZGVmaW5lZE9yTnVsbCgpOworICAgIGRvdWJsZSBjb21wYXNzSGVhZGluZyA9IGV4ZWMtPmFy
Z3VtZW50KDYpLnRvTnVtYmVyKGV4ZWMpOworICAgIGJvb2wgY29tcGFzc0FjY3VyYWN5UHJvdmlk
ZWQgPSAhZXhlYy0+YXJndW1lbnQoNykuaXNVbmRlZmluZWRPck51bGwoKTsKKyAgICBkb3VibGUg
Y29tcGFzc0FjY3VyYWN5ID0gZXhlYy0+YXJndW1lbnQoNykudG9OdW1iZXIoZXhlYyk7CisgICAg
UmVmUHRyPERldmljZU9yaWVudGF0aW9uRGF0YT4gb3JpZW50YXRpb24gPSBEZXZpY2VPcmllbnRh
dGlvbkRhdGE6OmNyZWF0ZShhbHBoYVByb3ZpZGVkLCBhbHBoYSwgYmV0YVByb3ZpZGVkLCBiZXRh
LCBnYW1tYVByb3ZpZGVkLCBnYW1tYSwgY29tcGFzc0hlYWRpbmdQcm92aWRlZCwgY29tcGFzc0hl
YWRpbmcsIGNvbXBhc3NBY2N1cmFjeVByb3ZpZGVkLCBjb21wYXNzQWNjdXJhY3kpOworI2Vsc2UK
ICAgICBib29sIGFic29sdXRlUHJvdmlkZWQgPSAhZXhlYy0+YXJndW1lbnQoNikuaXNVbmRlZmlu
ZWRPck51bGwoKTsKICAgICBib29sIGFic29sdXRlID0gZXhlYy0+YXJndW1lbnQoNikudG9Cb29s
ZWFuKGV4ZWMpOwogICAgIFJlZlB0cjxEZXZpY2VPcmllbnRhdGlvbkRhdGE+IG9yaWVudGF0aW9u
ID0gRGV2aWNlT3JpZW50YXRpb25EYXRhOjpjcmVhdGUoYWxwaGFQcm92aWRlZCwgYWxwaGEsIGJl
dGFQcm92aWRlZCwgYmV0YSwgZ2FtbWFQcm92aWRlZCwgZ2FtbWEsIGFic29sdXRlUHJvdmlkZWQs
IGFic29sdXRlKTsKKyNlbmRpZgogICAgIGltcGwoKS5pbml0RGV2aWNlT3JpZW50YXRpb25FdmVu
dCh0eXBlLCBidWJibGVzLCBjYW5jZWxhYmxlLCBvcmllbnRhdGlvbi5nZXQoKSk7CiAgICAgcmV0
dXJuIGpzVW5kZWZpbmVkKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU01haW5UaHJlYWRFeGVjU3RhdGUuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTTWFpblRocmVhZEV4ZWNTdGF0ZS5oCmluZGV4IDJmYTY2MjljNDgyYWZhN2M3MDc3ZGU4YWJm
M2ZkOTRjMWY2OTQ0NDkuLmYyYjQwMDdkZmEzNThkMDYwNjVmOWU5N2JhMDZjOGRmM2ViZjQyYTEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTWFpblRocmVhZEV4ZWNT
dGF0ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTWFpblRocmVhZEV4ZWNT
dGF0ZS5oCkBAIC0zMCw2ICszMCwxMCBAQAogI2luY2x1ZGUgPHJ1bnRpbWUvQ29tcGxldGlvbi5o
PgogI2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+CiAKKyNpZiBQTEFURk9STShJT1MpCisjaW5j
bHVkZSAiV2ViQ29yZVRocmVhZC5oIgorI2VuZGlmCisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAog
Y2xhc3MgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNUb3VjaEN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU1RvdWNoQ3VzdG9tLmNwcAppbmRleCA4MGUyMWY2M2I4MWU5N2UxMGJhNDk5
ZmYzMjVkZGM3OGU5Mzk4YzhhLi5kOTQzNGMwZjJjMGE5YzZkZDRhZmRjODI1ZTQ4NjRkNGMxMDhl
MTA3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1RvdWNoQ3VzdG9t
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1RvdWNoQ3VzdG9tLmNwcApA
QCAtMjUsNiArMjUsNyBAQAogCiAjaW5jbHVkZSAiY29uZmlnLmgiCiAKKyNpZiAhUExBVEZPUk0o
SU9TKQogI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMpCiAKICNpbmNsdWRlICJKU1RvdWNoLmgiCkBA
IC00NiwzICs0Nyw0IEBAIEpTVmFsdWUgdG9KU05ld2x5Q3JlYXRlZChFeGVjU3RhdGUqIGV4ZWMs
IEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFRvdWNoCiB9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCiAKICNlbmRpZiAvLyBFTkFCTEUoVE9VQ0hfRVZFTlRTKQorI2VuZGlmIC8vICFQTEFU
Rk9STShJT1MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1RvdWNo
TGlzdEN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1RvdWNoTGlzdEN1
c3RvbS5jcHAKaW5kZXggYjYwZWZkYjk1YjJkZjhhZmExMTE0NmRkZjdlNWZkZTY4YWZjMjJjZC4u
MTEzMThjMDA1MzkyZWM0ZDVlZmNlMjhmNDNmZjVlOGI4NjlkOTNlNCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNUb3VjaExpc3RDdXN0b20uY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTVG91Y2hMaXN0Q3VzdG9tLmNwcApAQCAtMjUsNiArMjUs
NyBAQAogCiAjaW5jbHVkZSAiY29uZmlnLmgiCiAKKyNpZiAhUExBVEZPUk0oSU9TKQogI2lmIEVO
QUJMRShUT1VDSF9FVkVOVFMpCiAKICNpbmNsdWRlICJKU1RvdWNoTGlzdC5oIgpAQCAtNDYsMyAr
NDcsNCBAQCBKU1ZhbHVlIHRvSlNOZXdseUNyZWF0ZWQoRXhlY1N0YXRlKiBleGVjLCBKU0RPTUds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBUb3VjaAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQog
CiAjZW5kaWYgLy8gRU5BQkxFKFRPVUNIX0VWRU5UUykKKyNlbmRpZiAvLyAhUExBVEZPUk0oSU9T
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvUGFnZVNjcmlwdERlYnVn
U2VydmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1BhZ2VTY3JpcHREZWJ1Z1Nl
cnZlci5jcHAKaW5kZXggMjE1NTc3ZDI3YzEyMGZhODZlMmRmM2M1ZDQyMDE1MjBiZTFjZGFiNi4u
YzNmYjdkZGMxMDUxYmUzNWU0ZDY2ZWNmYjFmZDNmNTUxMTQwNzVhZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvUGFnZVNjcmlwdERlYnVnU2VydmVyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9QYWdlU2NyaXB0RGVidWdTZXJ2ZXIuY3BwCkBAIC0x
NDgsNiArMTQ4LDExIEBAIHZvaWQgUGFnZVNjcmlwdERlYnVnU2VydmVyOjpkaWRDb250aW51ZShK
U0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCiB7CiAgICAgLy8gUGFnZSBjYW4gYmUg
bnVsbCBpZiB3ZSBhcmUgY29udGludWluZyBiZWNhdXNlIHRoZSBQYWdlIGNsb3NlZC4KICAgICBQ
YWdlKiBwYWdlID0gdG9QYWdlKGdsb2JhbE9iamVjdCk7CisjaWYgUExBVEZPUk0oSU9TKQorICAg
IC8vIEZJWE1FOiBDYW4gdGhpcyBoYXBwZW4gaW4gb3BlbiBzb3VyY2UgdG9vLCBvciBpcyB0aGlz
IGlPUyAobXVsdGktdGhyZWFkZWQpIG9ubHk/CisgICAgaWYgKCFwYWdlKQorICAgICAgICByZXR1
cm47CisjZW5kaWYKICAgICBBU1NFUlQoIXBhZ2UgfHwgcGFnZSA9PSBtX3BhdXNlZFBhZ2UpOwog
CiAgICAgbV9wYXVzZWRQYWdlID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL1NjcmlwdENvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
U2NyaXB0Q29udHJvbGxlci5jcHAKaW5kZXggMDA3YjAzMmM3NzdhNDdmNzVjNWU5ZjljNDk3Yjkw
MTE4ZjQxYzRlZS4uNzE4Zjg4ODQzMGE3YTM3ZjMxNGU2OGE1Yzk5MTM4MDRiNjczMGZhNiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlci5jcHAKQEAg
LTYxLDggKzYxLDEwIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogdm9pZCBTY3JpcHRDb250cm9s
bGVyOjppbml0aWFsaXplVGhyZWFkaW5nKCkKIHsKKyNpZiAhUExBVEZPUk0oSU9TKQogICAgIEpT
Qzo6aW5pdGlhbGl6ZVRocmVhZGluZygpOwogICAgIFdURjo6aW5pdGlhbGl6ZU1haW5UaHJlYWQo
KTsKKyNlbmRpZgogfQogCiBTY3JpcHRDb250cm9sbGVyOjpTY3JpcHRDb250cm9sbGVyKEZyYW1l
JiBmcmFtZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdERl
YnVnU2VydmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdERlYnVnU2Vy
dmVyLmNwcAppbmRleCA0MmFhNTllY2Y4NzY3MjlhMTc4MmNlMTE4MWZkMmE0NjdhNGQzOGM0Li43
MWM2YTMxNDJkM2U5NDZlZDljZjZlYzQxZjdmYjBiMmQ2NDY3NTlkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHREZWJ1Z1NlcnZlci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0RGVidWdTZXJ2ZXIuY3BwCkBAIC0zNCw2ICszNCw3
IEBACiAjaW5jbHVkZSAiU2NyaXB0RGVidWdTZXJ2ZXIuaCIKIAogI2luY2x1ZGUgIkNvbnRlbnRT
ZWFyY2hVdGlscy5oIgorI2luY2x1ZGUgIkV2ZW50TG9vcC5oIgogI2luY2x1ZGUgIkZyYW1lLmgi
CiAjaW5jbHVkZSAiSlNET01XaW5kb3dDdXN0b20uaCIKICNpbmNsdWRlICJKU0phdmFTY3JpcHRD
YWxsRnJhbWUuaCIKQEAgLTQ5LDYgKzUwLDExIEBACiAjaW5jbHVkZSA8d3RmL01haW5UaHJlYWQu
aD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAorI2lmIFBMQVRGT1JNKElPUykK
KyNpbmNsdWRlICJKU0RPTVdpbmRvd0Jhc2UuaCIKKyNpbmNsdWRlICJXZWJDb3JlVGhyZWFkSW50
ZXJuYWwuaCIKKyNlbmRpZgorCiB1c2luZyBuYW1lc3BhY2UgSlNDOwogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CkBAIC0yOTUsMTEgKzMwMSwyNyBAQCB2b2lkIFNjcmlwdERlYnVnU2VydmVyOjpoYW5k
bGVQYXVzZShEZWJ1Z2dlcjo6UmVhc29uRm9yUGF1c2UsIEpTR2xvYmFsT2JqZWN0KiB2bQogCiAg
ICAgVGltZXJCYXNlOjpmaXJlVGltZXJzSW5OZXN0ZWRFdmVudExvb3AoKTsKIAorI2lmIFBMQVRG
T1JNKElPUykKKyAgICAvLyBPbiBpT1MsIHJ1bm5pbmcgYW4gRXZlbnRMb29wIGNhdXNlcyB1cyB0
byBydW4gYSBuZXN0ZWQgV2ViUnVuTG9vcC4KKyAgICAvLyBTaW5jZSB0aGUgV2ViVGhyZWFkIGlz
IGF1dG9yZWxlYXNlZCBhdCB0aGUgZW5kIG9mIHJ1biBsb29wIGl0ZXJhdGlvbnMKKyAgICAvLyB3
ZSBuZWVkIHRvIGdyYWNlZnVsbHkgaGFuZGxlIHJlbGVhc2luZyBhbmQgcmVhY3F1aXJpbmcgdGhl
IGxvY2suCisgICAgQVNTRVJUKFdlYlRocmVhZElzTG9ja2VkT3JEaXNhYmxlZCgpKTsKKyAgICB7
CisgICAgICAgIGlmIChXZWJUaHJlYWRJc0VuYWJsZWQoKSkKKyAgICAgICAgICAgIEpTQzo6SlNM
b2NrOjpEcm9wQWxsTG9ja3MgZHJvcEFsbExvY2tzKFdlYkNvcmU6OkpTRE9NV2luZG93QmFzZTo6
Y29tbW9uVk0oKSwgSlNDOjpKU0xvY2s6OkRyb3BBbGxMb2Nrczo6QWx3YXlzRHJvcExvY2tzKTsK
KyAgICAgICAgV2ViUnVuTG9vcEVuYWJsZU5lc3RlZCgpOworI2VuZGlmCisKICAgICBtX3J1bm5p
bmdOZXN0ZWRNZXNzYWdlTG9vcCA9IHRydWU7CiAgICAgbV9kb25lUHJvY2Vzc2luZ0RlYnVnZ2Vy
RXZlbnRzID0gZmFsc2U7CiAgICAgcnVuRXZlbnRMb29wV2hpbGVQYXVzZWQoKTsKICAgICBtX3J1
bm5pbmdOZXN0ZWRNZXNzYWdlTG9vcCA9IGZhbHNlOwogCisjaWYgUExBVEZPUk0oSU9TKQorICAg
ICAgICBXZWJSdW5Mb29wRGlzYWJsZU5lc3RlZCgpOworICAgIH0KKyAgICBBU1NFUlQoV2ViVGhy
ZWFkSXNMb2NrZWRPckRpc2FibGVkKCkpOworI2VuZGlmCiAgICAgZGlkQ29udGludWUodm1FbnRy
eUdsb2JhbE9iamVjdCk7CiAgICAgZGlzcGF0Y2hGdW5jdGlvblRvTGlzdGVuZXJzKCZTY3JpcHRE
ZWJ1Z1NlcnZlcjo6ZGlzcGF0Y2hEaWRDb250aW51ZSwgdm1FbnRyeUdsb2JhbE9iamVjdCk7CiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9pb3MvVG91Y2hDb25zdHJ1
Y3RvcnMuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvaW9zL1RvdWNoQ29uc3RydWN0
b3JzLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi43NjdiMTc4ZjM0MGVjMWE4ZTNmYWZkOTMzYjc3M2RhZTE2OTEz
ZTQ4Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvaW9zL1Rv
dWNoQ29uc3RydWN0b3JzLmNwcApAQCAtMCwwICsxLDMzIEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1
ZGUgImNvbmZpZy5oIgorCisjaWYgUExBVEZPUk0oSU9TKSAmJiBFTkFCTEUoVE9VQ0hfRVZFTlRT
KQorCisjaW5jbHVkZSA8V2ViS2l0QWRkaXRpb25zL0pTVG91Y2hDb25zdHJ1Y3Rvci5jcHA+Cisj
aW5jbHVkZSA8V2ViS2l0QWRkaXRpb25zL0pTVG91Y2hMaXN0Q29uc3RydWN0b3IuY3BwPgorCisj
ZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL29iamMvRE9NLm1tIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvb2JqYy9ET00ubW0KaW5kZXggMTI4NjRiOTBlNjY4NDVl
YzNkOGY3MGFiZDllYmViZjU3NWRlMmFjYy4uMjJiZDlkM2FiNWE3ODczNGQ3YWU2OWRmNDFiMWMw
MzU5NmE0MTIyNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvb2JqYy9ET00u
bW0KKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvb2JqYy9ET00ubW0KQEAgLTUzLDYgKzUz
LDIyIEBACiAjaW1wb3J0IDxKYXZhU2NyaXB0Q29yZS9BUElDYXN0Lmg+CiAjaW1wb3J0IDx3dGYv
SGFzaE1hcC5oPgogCisjaWYgUExBVEZPUk0oSU9TKQorI2ltcG9ydCAiRm9jdXNDb250cm9sbGVy
LmgiCisjaW1wb3J0ICJIVE1MTGlua0VsZW1lbnQuaCIKKyNpbXBvcnQgIktleWJvYXJkRXZlbnQu
aCIKKyNpbXBvcnQgIlVSTC5oIgorI2ltcG9ydCAiTWVkaWFMaXN0LmgiCisjaW1wb3J0ICJNZWRp
YVF1ZXJ5RXZhbHVhdG9yLmgiCisjaW1wb3J0ICJOb2RlUmVuZGVyU3R5bGUuaCIKKyNpbXBvcnQg
IlBhZ2UuaCIKKyNpbXBvcnQgIlJlbmRlclZpZXcuaCIKKyNpbXBvcnQgIlRvdWNoLmgiCisjaW1w
b3J0ICJXQUtBcHBLaXRTdHVicy5oIgorI2ltcG9ydCAiV0FLV2luZG93LmgiCisjaW1wb3J0ICJX
ZWJDb3JlVGhyZWFkTWVzc2FnZS5oIgorI2VuZGlmCisKIHVzaW5nIG5hbWVzcGFjZSBKU0M7CiB1
c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIApAQCAtMTc2LDggKzE5Miw4MCBAQCBzdGF0aWMgTlNB
cnJheSAqa2l0KGNvbnN0IFZlY3RvcjxJbnRSZWN0PiYgcmVjdHMpCiAgICAgcmV0dXJuIGFycmF5
OwogfQogCisjaWYgUExBVEZPUk0oSU9TKQorc3RhdGljIFdLUXVhZCB3a1F1YWRGcm9tRmxvYXRR
dWFkKGNvbnN0IEZsb2F0UXVhZCYgaW5RdWFkKQoreworICAgIFdLUXVhZCAgdGhlUXVhZDsKKyAg
ICB0aGVRdWFkLnAxID0gaW5RdWFkLnAxKCk7CisgICAgdGhlUXVhZC5wMiA9IGluUXVhZC5wMigp
OworICAgIHRoZVF1YWQucDMgPSBpblF1YWQucDMoKTsKKyAgICB0aGVRdWFkLnA0ID0gaW5RdWFk
LnA0KCk7CisgICAgCisgICAgcmV0dXJuIHRoZVF1YWQ7Cit9CisKK3N0YXRpYyBOU0FycmF5ICpr
aXQoY29uc3QgVmVjdG9yPEZsb2F0UXVhZD4mIHF1YWRzKQoreworICAgIHNpemVfdCBzaXplID0g
cXVhZHMuc2l6ZSgpOworICAgIE5TTXV0YWJsZUFycmF5ICphcnJheSA9IFtOU011dGFibGVBcnJh
eSBhcnJheVdpdGhDYXBhY2l0eTpzaXplXTsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHNp
emU7ICsraSkgeworICAgICAgICBXS1F1YWRPYmplY3QqIHF1YWRPYmplY3QgPSBbW1dLUXVhZE9i
amVjdCBhbGxvY10gaW5pdFdpdGhRdWFkOndrUXVhZEZyb21GbG9hdFF1YWQocXVhZHNbaV0pXTsK
KyAgICAgICAgW2FycmF5IGFkZE9iamVjdDpxdWFkT2JqZWN0XTsKKyAgICAgICAgW3F1YWRPYmpl
Y3QgcmVsZWFzZV07CisgICAgfQorICAgIHJldHVybiBhcnJheTsKK30KKworc3RhdGljIGlubGlu
ZSBmbG9hdCBtaW40KGZsb2F0IGEsIGZsb2F0IGIsIGZsb2F0IGMsIGZsb2F0IGQpCit7CisgICAg
cmV0dXJuIHN0ZDo6bWluKHN0ZDo6bWluKGEsIGIpLCBzdGQ6Om1pbihjLCBkKSk7Cit9CisKK3N0
YXRpYyBpbmxpbmUgZmxvYXQgbWF4NChmbG9hdCBhLCBmbG9hdCBiLCBmbG9hdCBjLCBmbG9hdCBk
KQoreworICAgIHJldHVybiBzdGQ6Om1heChzdGQ6Om1heChhLCBiKSwgc3RkOjptYXgoYywgZCkp
OworfQorCitzdGF0aWMgaW5saW5lIFdLUXVhZCBlbXB0eVF1YWQoKQoreworICAgIFdLUXVhZCB6
ZXJvUXVhZCA9IHsgQ0dQb2ludFplcm8sIENHUG9pbnRaZXJvLCBDR1BvaW50WmVybywgQ0dQb2lu
dFplcm8gfTsKKyAgICByZXR1cm4gemVyb1F1YWQ7Cit9CisjZW5kaWYKKwogfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQogCisjaWYgUExBVEZPUk0oSU9TKQorQGltcGxlbWVudGF0aW9uIFdLUXVhZE9i
amVjdAorCistIChpZClpbml0V2l0aFF1YWQ6KFdLUXVhZClxdWFkCit7CisgICAgaWYgKChzZWxm
ID0gW3N1cGVyIGluaXRdKSkKKyAgICB7CisgICAgICAgIF9xdWFkID0gcXVhZDsKKyAgICB9Cisg
ICAgcmV0dXJuIHNlbGY7Cit9CisKKy0gKFdLUXVhZClxdWFkCit7CisgICAgcmV0dXJuIF9xdWFk
OworfQorCistIChDR1JlY3QpYm91bmRpbmdCb3gKK3sKKyAgICBmbG9hdCBsZWZ0ICAgICAgPSBX
ZWJDb3JlOjptaW40KF9xdWFkLnAxLngsIF9xdWFkLnAyLngsIF9xdWFkLnAzLngsIF9xdWFkLnA0
LngpOworICAgIGZsb2F0IHRvcCAgICAgICA9IFdlYkNvcmU6Om1pbjQoX3F1YWQucDEueSwgX3F1
YWQucDIueSwgX3F1YWQucDMueSwgX3F1YWQucDQueSk7CisgICAgCisgICAgZmxvYXQgcmlnaHQg
ICAgID0gV2ViQ29yZTo6bWF4NChfcXVhZC5wMS54LCBfcXVhZC5wMi54LCBfcXVhZC5wMy54LCBf
cXVhZC5wNC54KTsKKyAgICBmbG9hdCBib3R0b20gICAgPSBXZWJDb3JlOjptYXg0KF9xdWFkLnAx
LnksIF9xdWFkLnAyLnksIF9xdWFkLnAzLnksIF9xdWFkLnA0LnkpOworICAgIAorICAgIHJldHVy
biBDR1JlY3RNYWtlKGxlZnQsIHRvcCwgcmlnaHQgLSBsZWZ0LCBib3R0b20gLSB0b3ApOworfQor
CitAZW5kCisjZW5kaWYKKwogQGltcGxlbWVudGF0aW9uIERPTU5vZGUgKFdlYkNvcmVJbnRlcm5h
bCkKIAogI3ByYWdtYSBjbGFuZyBkaWFnbm9zdGljIHB1c2gKQEAgLTI2MywxMyArMzUxLDIxIEBA
IGlkIDxET01FdmVudFRhcmdldD4ga2l0KFdlYkNvcmU6OkV2ZW50VGFyZ2V0KiBldmVudFRhcmdl
dCkKIAogQGltcGxlbWVudGF0aW9uIERPTU5vZGUgKERPTU5vZGVFeHRlbnNpb25zKQogCisjaWYg
UExBVEZPUk0oSU9TKQorLSAoQ0dSZWN0KWJvdW5kaW5nQm94CisjZWxzZQogLSAoTlNSZWN0KWJv
dW5kaW5nQm94CisjZW5kaWYKIHsKICAgICAvLyBGSVhNRTogQ291bGQgd2UgbW92ZSB0aGlzIGZ1
bmN0aW9uIHRvIFdlYkNvcmU6Ok5vZGUgYW5kIGF1dG9nZW5lcmF0ZT8KICAgICBjb3JlKHNlbGYp
LT5kb2N1bWVudCgpLnVwZGF0ZUxheW91dElnbm9yZVBlbmRpbmdTdHlsZXNoZWV0cygpOwogICAg
IFdlYkNvcmU6OlJlbmRlck9iamVjdCogcmVuZGVyZXIgPSBjb3JlKHNlbGYpLT5yZW5kZXJlcigp
OwogICAgIGlmICghcmVuZGVyZXIpCisjaWYgUExBVEZPUk0oSU9TKQorICAgICAgICByZXR1cm4g
Q0dSZWN0WmVybzsKKyNlbHNlCiAgICAgICAgIHJldHVybiBOU1plcm9SZWN0OworI2VuZGlmCiAg
ICAgcmV0dXJuIHJlbmRlcmVyLT5hYnNvbHV0ZUJvdW5kaW5nQm94UmVjdCgpOwogfQogCkBAIC0y
NzgsMTAgKzM3NCwxODAgQEAgaWQgPERPTUV2ZW50VGFyZ2V0PiBraXQoV2ViQ29yZTo6RXZlbnRU
YXJnZXQqIGV2ZW50VGFyZ2V0KQogICAgIHJldHVybiBbc2VsZiB0ZXh0UmVjdHNdOwogfQogCisj
aWYgUExBVEZPUk0oSU9TKQorLy8gcXVhZCBpbiBwYWdlIGNvb3JkaW5hdGVzLCB0YWtpbmcgdHJh
bnNmb3JtcyBpbnRvIGFjY291bnQuIGMuZi4gLSAoTlNSZWN0KWJvdW5kaW5nQm94OworLSAoV0tR
dWFkKWFic29sdXRlUXVhZAoreworICAgIHJldHVybiBbc2VsZiBhYnNvbHV0ZVF1YWRBbmRJbnNp
ZGVGaXhlZFBvc2l0aW9uOjBdOworfQorCistIChXS1F1YWQpYWJzb2x1dGVRdWFkQW5kSW5zaWRl
Rml4ZWRQb3NpdGlvbjooQk9PTCAqKWluc2lkZUZpeGVkCit7CisgICAgY29yZShzZWxmKS0+ZG9j
dW1lbnQoKS51cGRhdGVMYXlvdXRJZ25vcmVQZW5kaW5nU3R5bGVzaGVldHMoKTsKKyAgICBXZWJD
b3JlOjpSZW5kZXJPYmplY3QgKnJlbmRlcmVyID0gY29yZShzZWxmKS0+cmVuZGVyZXIoKTsKKyAg
ICBpZiAocmVuZGVyZXIpIHsKKyAgICAgICAgVmVjdG9yPEZsb2F0UXVhZD4gcXVhZHM7CisgICAg
ICAgIGJvb2wgd2FzRml4ZWQgPSBmYWxzZTsKKyAgICAgICAgcmVuZGVyZXItPmFic29sdXRlUXVh
ZHMocXVhZHMsICZ3YXNGaXhlZCk7CisgICAgICAgIGlmIChpbnNpZGVGaXhlZCkKKyAgICAgICAg
ICAgICppbnNpZGVGaXhlZCA9IHdhc0ZpeGVkOworCisgICAgICAgIGlmIChxdWFkcy5zaXplKCkg
PT0gMCkKKyAgICAgICAgICAgIHJldHVybiBXZWJDb3JlOjplbXB0eVF1YWQoKTsKKyAgICAgICAg
CisgICAgICAgIGlmIChxdWFkcy5zaXplKCkgPT0gMSkKKyAgICAgICAgICAgIHJldHVybiB3a1F1
YWRGcm9tRmxvYXRRdWFkKHF1YWRzWzBdKTsKKworICAgICAgICBGbG9hdFJlY3QgYm91bmRpbmdS
ZWN0ID0gcXVhZHNbMF0uYm91bmRpbmdCb3goKTsKKyAgICAgICAgZm9yIChzaXplX3QgaSA9IDE7
IGkgPCBxdWFkcy5zaXplKCk7ICsraSkKKyAgICAgICAgICAgIGJvdW5kaW5nUmVjdC51bml0ZShx
dWFkc1tpXS5ib3VuZGluZ0JveCgpKTsKKworICAgICAgICByZXR1cm4gd2tRdWFkRnJvbUZsb2F0
UXVhZChib3VuZGluZ1JlY3QpOworICAgIH0KKworICAgIHJldHVybiBXZWJDb3JlOjplbXB0eVF1
YWQoKTsKK30KKworLy8gdGhpcyBtZXRob2QgaXMgbGlrZSAtIChDR1JlY3QpYm91bmRpbmdCb3gs
IGJ1dCBpdCBhY2NvdW50cyBmb3IgZm9yIHRyYW5zZm9ybXMKKy0gKENHUmVjdClib3VuZGluZ0Jv
eFVzaW5nVHJhbnNmb3JtcworeworICAgIGNvcmUoc2VsZiktPmRvY3VtZW50KCkudXBkYXRlTGF5
b3V0SWdub3JlUGVuZGluZ1N0eWxlc2hlZXRzKCk7CisgICAgV2ViQ29yZTo6UmVuZGVyT2JqZWN0
KiByZW5kZXJlciA9IGNvcmUoc2VsZiktPnJlbmRlcmVyKCk7CisgICAgaWYgKCFyZW5kZXJlcikK
KyAgICAgICAgcmV0dXJuIENHUmVjdFplcm87CisgICAgcmV0dXJuIHJlbmRlcmVyLT5hYnNvbHV0
ZUJvdW5kaW5nQm94UmVjdCh0cnVlKTsKK30KKworLy8gcmV0dXJucyBhcnJheSBvZiBXS1F1YWRP
YmplY3QKKy0gKE5TQXJyYXkgKilsaW5lQm94UXVhZHMKK3sKKyAgICBjb3JlKHNlbGYpLT5kb2N1
bWVudCgpLnVwZGF0ZUxheW91dElnbm9yZVBlbmRpbmdTdHlsZXNoZWV0cygpOworICAgIFdlYkNv
cmU6OlJlbmRlck9iamVjdCAqcmVuZGVyZXIgPSBjb3JlKHNlbGYpLT5yZW5kZXJlcigpOworICAg
IGlmIChyZW5kZXJlcikgeworICAgICAgICBWZWN0b3I8V2ViQ29yZTo6RmxvYXRRdWFkPiBxdWFk
czsKKyAgICAgICAgcmVuZGVyZXItPmFic29sdXRlUXVhZHMocXVhZHMpOworICAgICAgICByZXR1
cm4ga2l0KHF1YWRzKTsKKyAgICB9CisgICAgcmV0dXJuIG5pbDsKK30KKworLSAoRWxlbWVudCAq
KV9saW5rRWxlbWVudAoreworICAgIFdlYkNvcmU6Ok5vZGUqIG5vZGUgPSBjb3JlKHNlbGYpOwor
ICAgIAorICAgIHdoaWxlIChub2RlKSB7CisgICAgICAgIGlmIChub2RlLT5pc0xpbmsoKSkKKyAg
ICAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxXZWJDb3JlOjpFbGVtZW50Kj4obm9kZSk7Cisg
ICAgICAgIG5vZGUgPSBub2RlLT5wYXJlbnROb2RlKCk7CisgICAgfQorICAgIAorICAgIHJldHVy
biAwOworfQorCistIChOU1VSTCAqKWhyZWZVUkwKK3sKKyAgICBFbGVtZW50ICpsaW5rPSBbc2Vs
ZiBfbGlua0VsZW1lbnRdOworICAgIGlmIChsaW5rKQorICAgICAgICByZXR1cm4gbGluay0+ZG9j
dW1lbnQoKS5jb21wbGV0ZVVSTChzdHJpcExlYWRpbmdBbmRUcmFpbGluZ0hUTUxTcGFjZXMobGlu
ay0+Z2V0QXR0cmlidXRlKEhUTUxOYW1lczo6aHJlZkF0dHIpKSk7CisgICAgCisgICAgcmV0dXJu
IG5pbDsKK30KKworLSAoTlNTdHJpbmcgKilocmVmVGFyZ2V0Cit7CisgICAgRWxlbWVudCAqdGFy
Z2V0ID0gW3NlbGYgX2xpbmtFbGVtZW50XTsKKyAgICAKKyAgICBpZih0YXJnZXQpIHJldHVybiB0
YXJnZXQtPmdldEF0dHJpYnV0ZShIVE1MTmFtZXM6OnRhcmdldEF0dHIpOworICAgIAorICAgIHJl
dHVybiBuaWw7Cit9CisKKy0gKENHUmVjdClocmVmRnJhbWUKK3sKKyAgICBSZW5kZXJPYmplY3Qg
KnJlbmRlcmVyID0gW3NlbGYgX2xpbmtFbGVtZW50XS0+cmVuZGVyZXIoKTsKKyAgICAKKyAgICBp
ZihyZW5kZXJlcikgcmV0dXJuIHJlbmRlcmVyLT5hYnNvbHV0ZUJvdW5kaW5nQm94UmVjdCgpOwor
ICAgIAorICAgIHJldHVybiBOU1plcm9SZWN0OworfQorCistIChOU1N0cmluZyAqKWhyZWZMYWJl
bAoreworICAgIEVsZW1lbnQgKmxpbms9IFtzZWxmIF9saW5rRWxlbWVudF07CisgICAgCisgICAg
aWYgKCFsaW5rKSByZXR1cm4gbmlsOworICAgIAorICAgIHJldHVybiBsaW5rLT50ZXh0Q29udGVu
dCgpOworfQorCistIChOU1N0cmluZyAqKWhyZWZUaXRsZQoreworICAgIEVsZW1lbnQgKmxpbms9
IFtzZWxmIF9saW5rRWxlbWVudF07CisgICAgCisgICAgaWYgKCFsaW5rKSByZXR1cm4gbmlsOwor
ICAgIAorICAgIHJldHVybiBsaW5rLT5kb2N1bWVudCgpLmRpc3BsYXlTdHJpbmdNb2RpZmllZEJ5
RW5jb2Rpbmcoc3RhdGljX2Nhc3Q8SFRNTEVsZW1lbnQgKj4obGluayktPnRpdGxlKCkpOworfQor
CistIChDR1JlY3QpYm91bmRpbmdGcmFtZQoreworICAgIHJldHVybiBbc2VsZiBib3VuZGluZ0Jv
eF07Cit9CisKKy0gKFdLUXVhZClpbm5lckZyYW1lUXVhZCAgICAgICAvLyB0YWtlcyB0cmFuc2Zv
cm1zIGludG8gYWNjb3VudAoreworICAgIGNvcmUoc2VsZiktPmRvY3VtZW50KCkudXBkYXRlTGF5
b3V0SWdub3JlUGVuZGluZ1N0eWxlc2hlZXRzKCk7CisgICAgUmVuZGVyT2JqZWN0KiByZW5kZXJl
ciA9IGNvcmUoc2VsZiktPnJlbmRlcmVyKCk7CisgICAgaWYgKCFyZW5kZXJlcikKKyAgICAgICAg
cmV0dXJuIGVtcHR5UXVhZCgpOworCisgICAgUmVuZGVyU3R5bGUmIHN0eWxlID0gcmVuZGVyZXIt
PnN0eWxlKCk7CisgICAgSW50UmVjdCBib3VuZGluZ0JveCA9IHJlbmRlcmVyLT5hYnNvbHV0ZUJv
dW5kaW5nQm94UmVjdCh0cnVlIC8qIHVzZSB0cmFuc2Zvcm1zKi8pOworCisgICAgYm91bmRpbmdC
b3gubW92ZShzdHlsZS5ib3JkZXJMZWZ0V2lkdGgoKSwgc3R5bGUuYm9yZGVyVG9wV2lkdGgoKSk7
CisgICAgYm91bmRpbmdCb3guc2V0V2lkdGgoYm91bmRpbmdCb3gud2lkdGgoKSAtIHN0eWxlLmJv
cmRlckxlZnRXaWR0aCgpIC0gc3R5bGUuYm9yZGVyUmlnaHRXaWR0aCgpKTsKKyAgICBib3VuZGlu
Z0JveC5zZXRIZWlnaHQoYm91bmRpbmdCb3guaGVpZ2h0KCkgLSBzdHlsZS5ib3JkZXJCb3R0b21X
aWR0aCgpIC0gc3R5bGUuYm9yZGVyVG9wV2lkdGgoKSk7CisKKyAgICAvLyBGSVhNRTogVGhpcyBm
dW5jdGlvbiBhZHZlcnRpc2VzIHJldHVybmluZyBhIHF1YWQsIGJ1dCBpdCBhY3R1YWxseSByZXR1
cm5zIGEgYm91bmRpbmcgYm94IChzbyB0aGVyZSBpcyBubyByb3RhdGlvbiwgZm9yIGluc3RhbmNl
KS4KKyAgICByZXR1cm4gd2tRdWFkRnJvbUZsb2F0UXVhZChGbG9hdFF1YWQoYm91bmRpbmdCb3gp
KTsKK30KKworLSAoZmxvYXQpY29tcHV0ZWRGb250U2l6ZQoreworICAgIFdlYkNvcmU6Ok5vZGUg
Km5vZGUgPSBjb3JlKHNlbGYpOworICAgIFJlbmRlclN0eWxlICpzdHlsZSA9IG5vZGUtPnJlbmRl
clN0eWxlKCk7CisgICAgaWYgKCFzdHlsZSkKKyAgICAgICAgcmV0dXJuIDAuMGY7CisgICAgcmV0
dXJuIHN0eWxlLT5mb250RGVzY3JpcHRpb24oKS5jb21wdXRlZFNpemUoKTsKK30KKworLSAoRE9N
Tm9kZSAqKW5leHRGb2N1c05vZGUKK3sKKyAgICBQYWdlICpwYWdlID0gY29yZShzZWxmKS0+ZG9j
dW1lbnQoKS5wYWdlKCk7CisgICAgaWYgKCFwYWdlKQorICAgICAgICByZXR1cm4gbmlsOworCisg
ICAgUmVmUHRyPEtleWJvYXJkRXZlbnQ+IGtleSA9IEtleWJvYXJkRXZlbnQ6OmNyZWF0ZSgpOwor
ICAgIHJldHVybiBraXQocGFnZS0+Zm9jdXNDb250cm9sbGVyKCkubmV4dEZvY3VzYWJsZUVsZW1l
bnQoRm9jdXNOYXZpZ2F0aW9uU2NvcGU6OmZvY3VzTmF2aWdhdGlvblNjb3BlT2YoJmNvcmUoc2Vs
ZiktPmRvY3VtZW50KCkpLCBjb3JlKHNlbGYpLCBrZXkuZ2V0KCkpKTsKK30KKworLSAoRE9NTm9k
ZSAqKXByZXZpb3VzRm9jdXNOb2RlCit7CisgICAgUGFnZSAqcGFnZSA9IGNvcmUoc2VsZiktPmRv
Y3VtZW50KCkucGFnZSgpOworICAgIGlmICghcGFnZSkKKyAgICAgICAgcmV0dXJuIG5pbDsKKwor
ICAgIFJlZlB0cjxLZXlib2FyZEV2ZW50PiBrZXkgPSBLZXlib2FyZEV2ZW50OjpjcmVhdGUoKTsK
KyAgICByZXR1cm4ga2l0KHBhZ2UtPmZvY3VzQ29udHJvbGxlcigpLnByZXZpb3VzRm9jdXNhYmxl
RWxlbWVudChGb2N1c05hdmlnYXRpb25TY29wZTo6Zm9jdXNOYXZpZ2F0aW9uU2NvcGVPZigmY29y
ZShzZWxmKS0+ZG9jdW1lbnQoKSksIGNvcmUoc2VsZiksIGtleS5nZXQoKSkpOworfQorCisjZW5k
aWYgLy8gUExBVEZPUk0oSU9TKQorCiBAZW5kCiAKIEBpbXBsZW1lbnRhdGlvbiBET01Ob2RlIChE
T01Ob2RlRXh0ZW5zaW9uc1BlbmRpbmdQdWJsaWMpCiAKKyNpZiAhUExBVEZPUk0oSU9TKQogLSAo
TlNJbWFnZSAqKXJlbmRlcmVkSW1hZ2UKIHsKICAgICAvLyBGSVhNRTogQ291bGQgd2UgbW92ZSB0
aGlzIGZ1bmN0aW9uIHRvIFdlYkNvcmU6Ok5vZGUgYW5kIGF1dG9nZW5lcmF0ZT8KQEAgLTI5MSw2
ICs1NTcsNyBAQCBpZCA8RE9NRXZlbnRUYXJnZXQ+IGtpdChXZWJDb3JlOjpFdmVudFRhcmdldCog
ZXZlbnRUYXJnZXQpCiAgICAgICAgIHJldHVybiBuaWw7CiAgICAgcmV0dXJuIFtjcmVhdGVEcmFn
SW1hZ2VGb3JOb2RlKCpmcmFtZSwgKm5vZGUpLmxlYWtSZWYoKSBhdXRvcmVsZWFzZV07CiB9Cisj
ZW5kaWYKIAogLSAoTlNBcnJheSAqKXRleHRSZWN0cwogewpAQCAtMzIxLDE0ICs1ODgsMjIgQEAg
aWQgPERPTUV2ZW50VGFyZ2V0PiBraXQoV2ViQ29yZTo6RXZlbnRUYXJnZXQqIGV2ZW50VGFyZ2V0
KQogCiBAaW1wbGVtZW50YXRpb24gRE9NUmFuZ2UgKERPTVJhbmdlRXh0ZW5zaW9ucykKIAorI2lm
IFBMQVRGT1JNKElPUykKKy0gKENHUmVjdClib3VuZGluZ0JveAorI2Vsc2UKIC0gKE5TUmVjdCli
b3VuZGluZ0JveAorI2VuZGlmCiB7CiAgICAgLy8gRklYTUU6IFRoZSBjYWxsIHRvIHVwZGF0ZUxh
eW91dElnbm9yZVBlbmRpbmdTdHlsZXNoZWV0cyBzaG91bGQgYmUgbW92ZWQgaW50byBXZWJDb3Jl
OjpSYW5nZS4KICAgICBjb3JlKHNlbGYpLT5vd25lckRvY3VtZW50KCkudXBkYXRlTGF5b3V0SWdu
b3JlUGVuZGluZ1N0eWxlc2hlZXRzKCk7CiAgICAgcmV0dXJuIGNvcmUoc2VsZiktPmJvdW5kaW5n
Qm94KCk7CiB9CiAKKyNpZiAhUExBVEZPUk0oSU9TKQogLSAoTlNJbWFnZSAqKXJlbmRlcmVkSW1h
Z2VGb3JjaW5nQmxhY2tUZXh0OihCT09MKWZvcmNlQmxhY2tUZXh0CisjZWxzZQorLSAoQ0dJbWFn
ZVJlZilyZW5kZXJlZEltYWdlRm9yY2luZ0JsYWNrVGV4dDooQk9PTClmb3JjZUJsYWNrVGV4dAor
I2VuZGlmCiB7CiAgICAgV2ViQ29yZTo6UmFuZ2UqIHJhbmdlID0gY29yZShzZWxmKTsKICAgICBX
ZWJDb3JlOjpGcmFtZSogZnJhbWUgPSByYW5nZS0+b3duZXJEb2N1bWVudCgpLmZyYW1lKCk7CkBA
IC0zNjAsNiArNjM1LDcgQEAgaWQgPERPTUV2ZW50VGFyZ2V0PiBraXQoV2ViQ29yZTo6RXZlbnRU
YXJnZXQqIGV2ZW50VGFyZ2V0KQogCiBAaW1wbGVtZW50YXRpb24gRE9NRWxlbWVudCAoRE9NRWxl
bWVudEFwcEtpdEV4dGVuc2lvbnMpCiAKKyNpZiAhUExBVEZPUk0oSU9TKQogLSAoTlNJbWFnZSop
aW1hZ2UKIHsKICAgICAvLyBGSVhNRTogQ291bGQgd2UgbW92ZSB0aGlzIGZ1bmN0aW9uIHRvIFdl
YkNvcmU6Ok5vZGUgYW5kIGF1dG9nZW5lcmF0ZT8KQEAgLTM3MSwxMSArNjQ3LDEzIEBAIGlkIDxE
T01FdmVudFRhcmdldD4ga2l0KFdlYkNvcmU6OkV2ZW50VGFyZ2V0KiBldmVudFRhcmdldCkKICAg
ICAgICAgcmV0dXJuIG5pbDsKICAgICByZXR1cm4gY2FjaGVkSW1hZ2UtPmltYWdlRm9yUmVuZGVy
ZXIodG9SZW5kZXJJbWFnZShyZW5kZXJlcikpLT5nZXROU0ltYWdlKCk7CiB9CisjZW5kaWYKIAog
QGVuZAogCiBAaW1wbGVtZW50YXRpb24gRE9NRWxlbWVudCAoV2ViUHJpdmF0ZSkKIAorI2lmICFQ
TEFURk9STShJT1MpCiAtIChOU0ZvbnQgKilfZm9udAogewogICAgIC8vIEZJWE1FOiBDb3VsZCB3
ZSBtb3ZlIHRoaXMgZnVuY3Rpb24gdG8gV2ViQ29yZTo6RWxlbWVudCBhbmQgYXV0b2dlbmVyYXRl
PwpAQCAtMzg0LDcgKzY2MiwxNyBAQCBpZCA8RE9NRXZlbnRUYXJnZXQ+IGtpdChXZWJDb3JlOjpF
dmVudFRhcmdldCogZXZlbnRUYXJnZXQpCiAgICAgICAgIHJldHVybiBuaWw7CiAgICAgcmV0dXJu
IHJlbmRlcmVyLT5zdHlsZSgpLmZvbnQoKS5wcmltYXJ5Rm9udCgpLT5nZXROU0ZvbnQoKTsKIH0K
KyNlbHNlCistIChDVEZvbnRSZWYpX2ZvbnQKK3sKKyAgICBSZW5kZXJPYmplY3QqIHJlbmRlcmVy
ID0gY29yZShzZWxmKS0+cmVuZGVyZXIoKTsKKyAgICBpZiAoIXJlbmRlcmVyKQorICAgICAgICBy
ZXR1cm4gbmlsOworICAgIHJldHVybiByZW5kZXJlci0+c3R5bGUoKS5mb250KCkucHJpbWFyeUZv
bnQoKS0+Z2V0Q1RGb250KCk7Cit9CisjZW5kaWYKIAorI2lmICFQTEFURk9STShJT1MpCiAtIChO
U0RhdGEgKilfaW1hZ2VUSUZGUmVwcmVzZW50YXRpb24KIHsKICAgICAvLyBGSVhNRTogQ291bGQg
d2UgbW92ZSB0aGlzIGZ1bmN0aW9uIHRvIFdlYkNvcmU6OkVsZW1lbnQgYW5kIGF1dG9nZW5lcmF0
ZT8KQEAgLTM5Niw2ICs2ODQsNyBAQCBpZCA8RE9NRXZlbnRUYXJnZXQ+IGtpdChXZWJDb3JlOjpF
dmVudFRhcmdldCogZXZlbnRUYXJnZXQpCiAgICAgICAgIHJldHVybiBuaWw7CiAgICAgcmV0dXJu
IChOU0RhdGEgKiljYWNoZWRJbWFnZS0+aW1hZ2VGb3JSZW5kZXJlcihyZW5kZXJlciktPmdldFRJ
RkZSZXByZXNlbnRhdGlvbigpOwogfQorI2VuZGlmCiAKIC0gKE5TVVJMICopX2dldFVSTEF0dHJp
YnV0ZTooTlNTdHJpbmcgKiluYW1lCiB7CkBAIC00MTUsNiArNzA0LDQ5IEBAIGlkIDxET01FdmVu
dFRhcmdldD4ga2l0KFdlYkNvcmU6OkV2ZW50VGFyZ2V0KiBldmVudFRhcmdldCkKIAogQGVuZAog
CisjaWYgUExBVEZPUk0oSU9TKQorQGltcGxlbWVudGF0aW9uIERPTUhUTUxMaW5rRWxlbWVudCAo
V2ViUHJpdmF0ZSkKKy0gKEJPT0wpX21lZGlhUXVlcnlNYXRjaGVzRm9yT3JpZW50YXRpb246KGlu
dClvcmllbnRhdGlvbgoreworICAgIERvY3VtZW50JiBkb2N1bWVudCA9IHN0YXRpY19jYXN0PEhU
TUxMaW5rRWxlbWVudCo+KGNvcmUoc2VsZikpLT5kb2N1bWVudCgpOworICAgIEZyYW1lVmlldyog
ZnJhbWVWaWV3ID0gZG9jdW1lbnQuZnJhbWUoKSA/IGRvY3VtZW50LmZyYW1lKCktPnZpZXcoKSA6
IDA7CisgICAgaWYgKCFmcmFtZVZpZXcpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBpbnQg
bGF5b3V0V2lkdGggPSBmcmFtZVZpZXctPmxheW91dFdpZHRoKCk7CisgICAgaW50IGxheW91dEhl
aWdodCA9IGZyYW1lVmlldy0+bGF5b3V0SGVpZ2h0KCk7CisgICAgSW50U2l6ZSBzYXZlZEZpeGVk
TGF5b3V0U2l6ZSA9IGZyYW1lVmlldy0+Zml4ZWRMYXlvdXRTaXplKCk7CisgICAgYm9vbCBzYXZl
ZFVzZUZpeGVkTGF5b3V0ID0gZnJhbWVWaWV3LT51c2VGaXhlZExheW91dCgpOworICAgIGlmICgo
b3JpZW50YXRpb24gPT0gV2ViTWVkaWFRdWVyeU9yaWVudGF0aW9uUG9ydHJhaXQgJiYgbGF5b3V0
V2lkdGggPiBsYXlvdXRIZWlnaHQpIHx8CisgICAgICAgIChvcmllbnRhdGlvbiA9PSBXZWJNZWRp
YVF1ZXJ5T3JpZW50YXRpb25MYW5kc2NhcGUgJiYgbGF5b3V0V2lkdGggPCBsYXlvdXRIZWlnaHQp
KSB7CisgICAgICAgIC8vIHRlbXBvcmFyaWx5IHN3YXAgdGhlIG9yaWVudGF0aW9uIGZvciB0aGUg
ZXZhbHVhdGlvbgorICAgICAgICBmcmFtZVZpZXctPnNldEZpeGVkTGF5b3V0U2l6ZShJbnRTaXpl
KGxheW91dEhlaWdodCwgbGF5b3V0V2lkdGgpKTsKKyAgICAgICAgZnJhbWVWaWV3LT5zZXRVc2VG
aXhlZExheW91dCh0cnVlKTsKKyAgICB9CisgICAgICAgIAorICAgIGJvb2wgcmVzdWx0ID0gW3Nl
bGYgX21lZGlhUXVlcnlNYXRjaGVzXTsKKworICAgIGZyYW1lVmlldy0+c2V0Rml4ZWRMYXlvdXRT
aXplKHNhdmVkRml4ZWRMYXlvdXRTaXplKTsKKyAgICBmcmFtZVZpZXctPnNldFVzZUZpeGVkTGF5
b3V0KHNhdmVkVXNlRml4ZWRMYXlvdXQpOworCisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworLSAo
Qk9PTClfbWVkaWFRdWVyeU1hdGNoZXMKK3sKKyAgICBIVE1MTGlua0VsZW1lbnQqIGxpbmsgPSBz
dGF0aWNfY2FzdDxIVE1MTGlua0VsZW1lbnQqPihjb3JlKHNlbGYpKTsKKyAgICBTdHJpbmcgbWVk
aWEgPSBsaW5rLT5nZXRBdHRyaWJ1dGUoSFRNTE5hbWVzOjptZWRpYUF0dHIpOworICAgIGlmICht
ZWRpYS5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybiB0cnVlOworICAgIERvY3VtZW50JiBkb2N1
bWVudCA9IGxpbmstPmRvY3VtZW50KCk7CisKKyAgICBSZWZQdHI8TWVkaWFRdWVyeVNldD4gbWVk
aWFRdWVyeVNldCA9IE1lZGlhUXVlcnlTZXQ6OmNyZWF0ZUFsbG93aW5nRGVzY3JpcHRpb25TeW50
YXgobWVkaWEpOworICAgIE1lZGlhUXVlcnlFdmFsdWF0b3Igc2NyZWVuRXZhbCgic2NyZWVuIiwg
ZG9jdW1lbnQuZnJhbWUoKSwgZG9jdW1lbnQucmVuZGVyVmlldygpID8gJmRvY3VtZW50LnJlbmRl
clZpZXcoKS0+c3R5bGUoKSA6IDApOworCisgICAgcmV0dXJuIHNjcmVlbkV2YWwuZXZhbChtZWRp
YVF1ZXJ5U2V0LmdldCgpKTsKK30KK0BlbmQKKyNlbmRpZgorCiAvLy0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLQogLy8gRE9NUmFuZ2UKIApAQCAtNDQyLDEyICs3NzQsMTQgQEAgaWQg
PERPTUV2ZW50VGFyZ2V0PiBraXQoV2ViQ29yZTo6RXZlbnRUYXJnZXQqIGV2ZW50VGFyZ2V0KQog
CiBAaW1wbGVtZW50YXRpb24gRE9NUkdCQ29sb3IgKFdlYlByaXZhdGUpCiAKKyNpZiAhUExBVEZP
Uk0oSU9TKQogLy8gRklYTUU6IFRoaXMgc2hvdWxkIGJlIHJlbW92ZWQgYXMgc29vbiBhcyBhbGwg
aW50ZXJuYWwgQXBwbGUgdXNlcyBvZiBpdCBoYXZlIGJlZW4gcmVwbGFjZWQgd2l0aAogLy8gY2Fs
bHMgdG8gdGhlIHB1YmxpYyBtZXRob2QgLSAoTlNDb2xvciAqKWNvbG9yLgogLSAoTlNDb2xvciAq
KV9jb2xvcgogewogICAgIHJldHVybiBbc2VsZiBjb2xvcl07CiB9CisjZW5kaWYKIAogQGVuZAog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9vYmpjL0RPTUV2ZW50cy5oIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvb2JqYy9ET01FdmVudHMuaAppbmRleCA0ZTJkODI1YzZh
NWQ2ZmJlNzA0NGE3NjM5OTQxMWQ4NGExZjdkY2Q4Li5hYzFhM2JjOGJlOGFlZjJjNTYzZThiOWQy
M2M0N2VjMzE3ZjA2OTkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9vYmpj
L0RPTUV2ZW50cy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL29iamMvRE9NRXZlbnRz
LmgKQEAgLTQwLDMgKzQwLDExIEBACiAjaW1wb3J0IDxXZWJDb3JlL0RPTVByb2dyZXNzRXZlbnQu
aD4KICNpbXBvcnQgPFdlYkNvcmUvRE9NVUlFdmVudC5oPgogI2ltcG9ydCA8V2ViQ29yZS9ET01X
aGVlbEV2ZW50Lmg+CisKKyNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQorI2ltcG9ydCA8V2ViQ29y
ZS9ET01Ub3VjaEV2ZW50Lmg+CisjZW5kaWYKKworI2lmIEVOQUJMRShJT1NfR0VTVFVSRV9FVkVO
VFMpCisjaW1wb3J0IDxXZWJDb3JlL0RPTUdlc3R1cmVFdmVudC5oPgorI2VuZGlmCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9vYmpjL0RPTUV2ZW50cy5tbSBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL29iamMvRE9NRXZlbnRzLm1tCmluZGV4IGJkZDE3YzY0NWU0N2NmOWZi
YjBkNWE2YmQ3OTBkZTZjZDRhODQwMDIuLjRlOWZiOGI0OGU3NTE1YTIyMmJhMzNlZDM0ZDZjM2Fm
MTk4ZDBkODAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL29iamMvRE9NRXZl
bnRzLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL29iamMvRE9NRXZlbnRzLm1tCkBA
IC00MCw2ICs0MCwxNCBAQAogI2ltcG9ydCAiRXZlbnQuaCIKICNpbXBvcnQgIkV2ZW50TmFtZXMu
aCIKIAorI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMpCisjaW1wb3J0ICJET01Ub3VjaEV2ZW50Lmgi
CisjZW5kaWYKKworI2lmIEVOQUJMRShJT1NfR0VTVFVSRV9FVkVOVFMpCisjaW1wb3J0ICJET01H
ZXN0dXJlRXZlbnQuaCIKKyNlbmRpZgorCiB1c2luZyBXZWJDb3JlOjpldmVudE5hbWVzOwogCiBD
bGFzcyBraXRDbGFzcyhXZWJDb3JlOjpFdmVudCogaW1wbCkKQEAgLTU0LDcgKzYyLDE1IEBAIENs
YXNzIGtpdENsYXNzKFdlYkNvcmU6OkV2ZW50KiBpbXBsKQogICAgICAgICBpZiAoZGVzaXJlZElu
dGVyZmFjZSA9PSBXZWJDb3JlOjpUZXh0RXZlbnRJbnRlcmZhY2VUeXBlKQogICAgICAgICAgICAg
cmV0dXJuIFtET01UZXh0RXZlbnQgY2xhc3NdOwogICAgICAgICBpZiAoZGVzaXJlZEludGVyZmFj
ZSA9PSBXZWJDb3JlOjpXaGVlbEV2ZW50SW50ZXJmYWNlVHlwZSkKLSAgICAgICAgICAgIHJldHVy
biBbRE9NV2hlZWxFdmVudCBjbGFzc107CisgICAgICAgICAgICByZXR1cm4gW0RPTVdoZWVsRXZl
bnQgY2xhc3NdOyAgICAgICAgCisjaWYgUExBVEZPUk0oSU9TKSAmJiBFTkFCTEUoVE9VQ0hfRVZF
TlRTKQorICAgICAgICBpZiAoZGVzaXJlZEludGVyZmFjZSA9PSBXZWJDb3JlOjpUb3VjaEV2ZW50
SW50ZXJmYWNlVHlwZSkgCisgICAgICAgICAgICByZXR1cm4gW0RPTVRvdWNoRXZlbnQgY2xhc3Nd
OworI2VuZGlmCisjaWYgRU5BQkxFKElPU19HRVNUVVJFX0VWRU5UUykKKyAgICAgICAgaWYgKGRl
c2lyZWRJbnRlcmZhY2UgPT0gV2ViQ29yZTo6R2VzdHVyZUV2ZW50SW50ZXJmYWNlVHlwZSkKKyAg
ICAgICAgICAgIHJldHVybiBbRE9NR2VzdHVyZUV2ZW50IGNsYXNzXTsKKyNlbmRpZgogICAgICAg
ICByZXR1cm4gW0RPTVVJRXZlbnQgY2xhc3NdOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvb2JqYy9ET01FeHRlbnNpb25zLmggYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9vYmpjL0RPTUV4dGVuc2lvbnMuaAppbmRleCBjZWMzNTYwMGUyMWM2ZmY1YjM1Njc0
OThiN2RiNTIxMmQyMjI5ZjIzLi43YjE4ZDQ0YTAxNmM2NTFjYjI2ZDk3NTA3NjBiMDE5NjU3Mzk3
MGM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9vYmpjL0RPTUV4dGVuc2lv
bnMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9vYmpjL0RPTUV4dGVuc2lvbnMuaApA
QCAtNDMsMjAgKzQzLDg5IEBACiAjaW1wb3J0IDxXZWJDb3JlL0RPTVJHQkNvbG9yLmg+CiAjaW1w
b3J0IDxXZWJDb3JlL0RPTVJhbmdlLmg+CiAKKyNpZiBQTEFURk9STShJT1MpCisjaW1wb3J0IDxD
b3JlR3JhcGhpY3MvQ29yZUdyYXBoaWNzLmg+CisjZW5kaWYKKwogQGNsYXNzIE5TQXJyYXk7CiBA
Y2xhc3MgTlNJbWFnZTsKIEBjbGFzcyBOU1VSTDsKIAorCisjaWYgUExBVEZPUk0oSU9TKQorQGlu
dGVyZmFjZSBET01IVE1MRWxlbWVudCAoRE9NSFRNTEVsZW1lbnRFeHRlbnNpb25zKQorLSAoaW50
KXNjcm9sbFhPZmZzZXQ7CistIChpbnQpc2Nyb2xsWU9mZnNldDsKKy0gKHZvaWQpc2V0U2Nyb2xs
WE9mZnNldDooaW50KXggc2Nyb2xsWU9mZnNldDooaW50KXk7CistICh2b2lkKXNldFNjcm9sbFhP
ZmZzZXQ6KGludCl4IHNjcm9sbFlPZmZzZXQ6KGludCl5IGFkanVzdEZvcklPU0NhcmV0OihCT09M
KWFkanVzdEZvcklPU0NhcmV0OworLSAodm9pZClhYnNvbHV0ZVBvc2l0aW9uOihpbnQgKil4IDoo
aW50ICopeSA6KGludCAqKXcgOihpbnQgKiloOworQGVuZAorI2VuZGlmCisKKyNpZiBQTEFURk9S
TShJT1MpCit0eXBlZGVmIHN0cnVjdCBfV0tRdWFkIHsKKyAgICBDR1BvaW50IHAxOworICAgIENH
UG9pbnQgcDI7CisgICAgQ0dQb2ludCBwMzsKKyAgICBDR1BvaW50IHA0OworfSBXS1F1YWQ7CisK
K0BpbnRlcmZhY2UgV0tRdWFkT2JqZWN0IDogTlNPYmplY3QKK3sKKyAgICBXS1F1YWQgIF9xdWFk
OworfQorCistIChpZClpbml0V2l0aFF1YWQ6KFdLUXVhZClxdWFkOworLSAoV0tRdWFkKXF1YWQ7
CistIChDR1JlY3QpYm91bmRpbmdCb3g7CitAZW5kCisjZW5kaWYKKwogQGludGVyZmFjZSBET01O
b2RlIChET01Ob2RlRXh0ZW5zaW9ucykKKyNpZiBQTEFURk9STShJT1MpCistIChDR1JlY3QpYm91
bmRpbmdCb3g7CisjZWxzZQogLSAoTlNSZWN0KWJvdW5kaW5nQm94IFdFQktJVF9BVkFJTEFCTEVf
TUFDKDEwXzUpOworI2VuZGlmCiAtIChOU0FycmF5ICopbGluZUJveFJlY3RzIFdFQktJVF9BVkFJ
TEFCTEVfTUFDKDEwXzUpOworCisjaWYgUExBVEZPUk0oSU9TKQorLSAoQ0dSZWN0KWJvdW5kaW5n
Qm94VXNpbmdUcmFuc2Zvcm1zOyAvLyB0YWtlcyB0cmFuc2Zvcm1zIGludG8gYWNjb3VudAorCist
IChXS1F1YWQpYWJzb2x1dGVRdWFkOworLSAoV0tRdWFkKWFic29sdXRlUXVhZEFuZEluc2lkZUZp
eGVkUG9zaXRpb246KEJPT0wgKilpbnNpZGVGaXhlZDsKKy0gKE5TQXJyYXkgKilsaW5lQm94UXVh
ZHM7ICAgICAgLy8gcmV0dXJucyBhcnJheSBvZiBXS1F1YWRPYmplY3QKKworLSAoTlNVUkwgKilo
cmVmVVJMOworLSAoQ0dSZWN0KWhyZWZGcmFtZTsKKy0gKE5TU3RyaW5nICopaHJlZlRhcmdldDsK
Ky0gKE5TU3RyaW5nICopaHJlZkxhYmVsOworLSAoTlNTdHJpbmcgKilocmVmVGl0bGU7CistIChD
R1JlY3QpYm91bmRpbmdGcmFtZTsKKy0gKFdLUXVhZClpbm5lckZyYW1lUXVhZDsgICAgICAgLy8g
dGFrZXMgdHJhbnNmb3JtcyBpbnRvIGFjY291bnQKKy0gKGZsb2F0KWNvbXB1dGVkRm9udFNpemU7
CistIChET01Ob2RlICopbmV4dEZvY3VzTm9kZTsKKy0gKERPTU5vZGUgKilwcmV2aW91c0ZvY3Vz
Tm9kZTsKKyNlbmRpZgogQGVuZAogCiBAaW50ZXJmYWNlIERPTUVsZW1lbnQgKERPTUVsZW1lbnRB
cHBLaXRFeHRlbnNpb25zKQorI2lmICFQTEFURk9STShJT1MpCiAtIChOU0ltYWdlICopaW1hZ2Ug
V0VCS0lUX0FWQUlMQUJMRV9NQUMoMTBfNSk7CisjZW5kaWYKIEBlbmQKIAogQGludGVyZmFjZSBE
T01IVE1MRG9jdW1lbnQgKERPTUhUTUxEb2N1bWVudEV4dGVuc2lvbnMpCiAtIChET01Eb2N1bWVu
dEZyYWdtZW50ICopY3JlYXRlRG9jdW1lbnRGcmFnbWVudFdpdGhNYXJrdXBTdHJpbmc6KE5TU3Ry
aW5nICopbWFya3VwU3RyaW5nIGJhc2VVUkw6KE5TVVJMICopYmFzZVVSTCBXRUJLSVRfQVZBSUxB
QkxFX01BQygxMF81KTsKIC0gKERPTURvY3VtZW50RnJhZ21lbnQgKiljcmVhdGVEb2N1bWVudEZy
YWdtZW50V2l0aFRleHQ6KE5TU3RyaW5nICopdGV4dCBXRUJLSVRfQVZBSUxBQkxFX01BQygxMF81
KTsKIEBlbmQKKworI2lmIFBMQVRGT1JNKElPUykKK0BpbnRlcmZhY2UgRE9NSFRNTEFyZWFFbGVt
ZW50IChET01IVE1MQXJlYUVsZW1lbnRFeHRlbnNpb25zKQorLSAoQ0dSZWN0KWJvdW5kaW5nRnJh
bWVGb3JPd25lcjooRE9NTm9kZSAqKWFuT3duZXI7CitAZW5kCisKK0BpbnRlcmZhY2UgRE9NSFRN
TFNlbGVjdEVsZW1lbnQgKERPTUhUTUxTZWxlY3RFbGVtZW50RXh0ZW5zaW9ucykKKy0gKERPTU5v
ZGUgKilsaXN0SXRlbUF0SW5kZXg6KGludClhbkluZGV4OworQGVuZAorI2VuZGlmCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9vYmpjL0RPTUhUTUwubW0gYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9vYmpjL0RPTUhUTUwubW0KaW5kZXggYzMzMzUxNGI5YjI2ZDNhNGZlNWEy
MTFmNmMyMTI0ZDY5ODc4YTUwOC4uYmE0MTEyMmJkNzdhOWFiMWJhNWNmODExMTUzNDNjMmZhMzk5
YjNjOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvb2JqYy9ET01IVE1MLm1t
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL29iamMvRE9NSFRNTC5tbQpAQCAtNDksNiAr
NDksOTkgQEAKICNpbXBvcnQgIlNldHRpbmdzLmgiCiAjaW1wb3J0ICJtYXJrdXAuaCIKIAorI2lm
IFBMQVRGT1JNKElPUykKKyNpbXBvcnQgIkF1dG9jYXBpdGFsaXplLmgiCisjaW1wb3J0ICJET01I
VE1MRWxlbWVudEludGVybmFsLmgiCisjaW1wb3J0ICJIVE1MVGV4dEZvcm1Db250cm9sRWxlbWVu
dC5oIgorI2ltcG9ydCAiSlNNYWluVGhyZWFkRXhlY1N0YXRlLmgiCisjaW1wb3J0ICJSZW5kZXJM
YXllci5oIgorI2ltcG9ydCAiV0FLV2luZG93LmgiCisjaW1wb3J0ICJXZWJDb3JlVGhyZWFkTWVz
c2FnZS5oIgorI2VuZGlmCisKKyNpZiBQTEFURk9STShJT1MpCisKK3VzaW5nIG5hbWVzcGFjZSBX
ZWJDb3JlOworCitAaW1wbGVtZW50YXRpb24gRE9NSFRNTEVsZW1lbnQgKERPTUhUTUxFbGVtZW50
RXh0ZW5zaW9ucykKKworLSAoaW50KXNjcm9sbFhPZmZzZXQKK3sKKyAgICBSZW5kZXJPYmplY3Qg
KnJlbmRlcmVyID0gY29yZShzZWxmKS0+cmVuZGVyZXIoKTsKKyAgICBpZiAoIXJlbmRlcmVyKQor
ICAgICAgICByZXR1cm4gMDsKKworICAgIGlmICghcmVuZGVyZXItPmlzUmVuZGVyQmxvY2tGbG93
KCkpCisgICAgICAgIHJlbmRlcmVyID0gcmVuZGVyZXItPmNvbnRhaW5pbmdCbG9jaygpOworCisg
ICAgaWYgKCFyZW5kZXJlci0+aXNCb3goKSB8fCAhcmVuZGVyZXItPmhhc092ZXJmbG93Q2xpcCgp
KQorICAgICAgICByZXR1cm4gMDsKKworICAgIFJlbmRlckJveCAqcmVuZGVyQm94ID0gdG9SZW5k
ZXJCb3gocmVuZGVyZXIpOworICAgIHJldHVybiByZW5kZXJCb3gtPmxheWVyKCktPnNjcm9sbFhP
ZmZzZXQoKTsKK30KKworLSAoaW50KXNjcm9sbFlPZmZzZXQKK3sKKyAgICBSZW5kZXJPYmplY3Qg
KnJlbmRlcmVyID0gY29yZShzZWxmKS0+cmVuZGVyZXIoKTsKKyAgICBpZiAoIXJlbmRlcmVyKQor
ICAgICAgICByZXR1cm4gMDsKKworICAgIGlmICghcmVuZGVyZXItPmlzUmVuZGVyQmxvY2tGbG93
KCkpCisgICAgICAgIHJlbmRlcmVyID0gcmVuZGVyZXItPmNvbnRhaW5pbmdCbG9jaygpOworICAg
IGlmICghcmVuZGVyZXItPmlzQm94KCkgfHwgIXJlbmRlcmVyLT5oYXNPdmVyZmxvd0NsaXAoKSkK
KyAgICAgICAgcmV0dXJuIDA7CisKKyAgICBSZW5kZXJCb3ggKnJlbmRlckJveCA9IHRvUmVuZGVy
Qm94KHJlbmRlcmVyKTsKKyAgICByZXR1cm4gcmVuZGVyQm94LT5sYXllcigpLT5zY3JvbGxZT2Zm
c2V0KCk7Cit9CisKKy0gKHZvaWQpc2V0U2Nyb2xsWE9mZnNldDooaW50KXggc2Nyb2xsWU9mZnNl
dDooaW50KXkKK3sKKyAgICBbc2VsZiBzZXRTY3JvbGxYT2Zmc2V0Onggc2Nyb2xsWU9mZnNldDp5
IGFkanVzdEZvcklPU0NhcmV0Ok5PXTsKK30KKworLSAodm9pZClzZXRTY3JvbGxYT2Zmc2V0Oihp
bnQpeCBzY3JvbGxZT2Zmc2V0OihpbnQpeSBhZGp1c3RGb3JJT1NDYXJldDooQk9PTClhZGp1c3RG
b3JJT1NDYXJldAoreworICAgIFJlbmRlck9iamVjdCAqcmVuZGVyZXIgPSBjb3JlKHNlbGYpLT5y
ZW5kZXJlcigpOworICAgIGlmICghcmVuZGVyZXIpCisgICAgICAgIHJldHVybjsKKworICAgIGlm
ICghcmVuZGVyZXItPmlzUmVuZGVyQmxvY2tGbG93KCkpCisgICAgICAgIHJlbmRlcmVyID0gcmVu
ZGVyZXItPmNvbnRhaW5pbmdCbG9jaygpOworICAgIGlmICghcmVuZGVyZXItPmhhc092ZXJmbG93
Q2xpcCgpIHx8ICFyZW5kZXJlci0+aXNCb3goKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgUmVu
ZGVyQm94ICpyZW5kZXJCb3ggPSB0b1JlbmRlckJveChyZW5kZXJlcik7CisgICAgUmVuZGVyTGF5
ZXIgKmxheWVyID0gcmVuZGVyQm94LT5sYXllcigpOworICAgIGlmIChhZGp1c3RGb3JJT1NDYXJl
dCkKKyAgICAgICAgbGF5ZXItPnNldEFkanVzdEZvcklPU0NhcmV0V2hlblNjcm9sbGluZyh0cnVl
KTsKKyAgICBsYXllci0+c2Nyb2xsVG9PZmZzZXQoSW50U2l6ZSh4LCB5KSk7CisgICAgaWYgKGFk
anVzdEZvcklPU0NhcmV0KQorICAgICAgICBsYXllci0+c2V0QWRqdXN0Rm9ySU9TQ2FyZXRXaGVu
U2Nyb2xsaW5nKGZhbHNlKTsKK30KKworLSAodm9pZClhYnNvbHV0ZVBvc2l0aW9uOihpbnQgKil4
IDooaW50ICopeSA6KGludCAqKXcgOihpbnQgKiloIHsKKyAgICBSZW5kZXJCb3ggKnJlbmRlcmVy
ID0gY29yZShzZWxmKS0+cmVuZGVyQm94KCk7CisgICAgaWYgKHJlbmRlcmVyKSB7CisgICAgICAg
IGlmICh3KQorICAgICAgICAgICAgKncgPSByZW5kZXJlci0+d2lkdGgoKTsKKyAgICAgICAgaWYg
KGgpCisgICAgICAgICAgICAqaCA9IHJlbmRlcmVyLT53aWR0aCgpOworICAgICAgICBpZiAoeCAm
JiB5KSB7CisgICAgICAgICAgICBGbG9hdFBvaW50IGZsb2F0UG9pbnQoKngsICp5KTsKKyAgICAg
ICAgICAgIHJlbmRlcmVyLT5sb2NhbFRvQWJzb2x1dGUoZmxvYXRQb2ludCk7CisgICAgICAgICAg
ICBJbnRQb2ludCBwb2ludCA9IHJvdW5kZWRJbnRQb2ludChmbG9hdFBvaW50KTsKKyAgICAgICAg
ICAgICp4ID0gcG9pbnQueCgpOworICAgICAgICAgICAgKnkgPSBwb2ludC55KCk7CisgICAgICAg
IH0KKyAgICB9Cit9CisKK0BlbmQKKworI2VuZGlmIC8vIFBMQVRGT1JNKElPUykKKwogLy8tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIC8vIERPTUhUTUxEb2N1bWVudAogCkBAIC05
MCw2ICsxODMsNyBAQAogICAgIHJldHVybiBjb3JlKHNlbGYpLT5pc1RleHRGaWVsZCgpOwogfQog
CisjaWYgIVBMQVRGT1JNKElPUykKIC0gKE5TUmVjdClfcmVjdE9uU2NyZWVuCiB7CiAgICAgLy8g
UmV0dXJucyBib3VuZGluZyByZWN0IG9mIHRleHQgZmllbGQsIGluIHNjcmVlbiBjb29yZGluYXRl
cy4KQEAgLTEwNSw2ICsxOTksNyBAQAogI3ByYWdtYSBjbGFuZyBkaWFnbm9zdGljIHBvcAogICAg
IHJldHVybiByZXN1bHQ7CiB9CisjZW5kaWYKIAogLSAodm9pZClfcmVwbGFjZUNoYXJhY3RlcnNJ
blJhbmdlOihOU1JhbmdlKXRhcmdldFJhbmdlIHdpdGhTdHJpbmc6KE5TU3RyaW5nICopcmVwbGFj
ZW1lbnRTdHJpbmcgc2VsZWN0aW5nRnJvbUluZGV4OihpbnQpaW5kZXgKIHsKQEAgLTE4MSw2ICsy
NzYsNDUgQEAKIAogQGVuZAogCisjaWYgUExBVEZPUk0oSU9TKQorQGltcGxlbWVudGF0aW9uIERP
TUhUTUxJbnB1dEVsZW1lbnQgKEF1dG9jYXBpdGFsaXplQWRkaXRpb25zKQorCistIChXZWJBdXRv
Y2FwaXRhbGl6ZVR5cGUpX2F1dG9jYXBpdGFsaXplVHlwZQoreworICAgIFdlYkNvcmU6OkhUTUxJ
bnB1dEVsZW1lbnQqIGlucHV0RWxlbWVudCA9IGNvcmUoc2VsZik7CisgICAgcmV0dXJuIHN0YXRp
Y19jYXN0PFdlYkF1dG9jYXBpdGFsaXplVHlwZT4oaW5wdXRFbGVtZW50LT5hdXRvY2FwaXRhbGl6
ZVR5cGUoKSk7Cit9CisKK0BlbmQKKworQGltcGxlbWVudGF0aW9uIERPTUhUTUxUZXh0QXJlYUVs
ZW1lbnQgKEF1dG9jYXBpdGFsaXplQWRkaXRpb25zKQorCistIChXZWJBdXRvY2FwaXRhbGl6ZVR5
cGUpX2F1dG9jYXBpdGFsaXplVHlwZQoreworICAgIFdlYkNvcmU6OkhUTUxUZXh0QXJlYUVsZW1l
bnQqIHRleHRhcmVhRWxlbWVudCA9IGNvcmUoc2VsZik7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0
PFdlYkF1dG9jYXBpdGFsaXplVHlwZT4odGV4dGFyZWFFbGVtZW50LT5hdXRvY2FwaXRhbGl6ZVR5
cGUoKSk7Cit9CisKK0BlbmQKKworQGltcGxlbWVudGF0aW9uIERPTUhUTUxJbnB1dEVsZW1lbnQg
KFdlYklucHV0Q2hhbmdlRXZlbnRBZGRpdGlvbnMpCisKKy0gKHZvaWQpc2V0VmFsdWVXaXRoQ2hh
bmdlRXZlbnQ6KE5TU3RyaW5nICopbmV3VmFsdWUKK3sKKyAgICBXZWJDb3JlOjpKU01haW5UaHJl
YWROdWxsU3RhdGUgc3RhdGU7CisgICAgY29yZShzZWxmKS0+c2V0VmFsdWUobmV3VmFsdWUsIERp
c3BhdGNoSW5wdXRBbmRDaGFuZ2VFdmVudCk7Cit9CisKKy0gKHZvaWQpc2V0VmFsdWVBc051bWJl
cldpdGhDaGFuZ2VFdmVudDooZG91YmxlKW5ld1ZhbHVlQXNOdW1iZXIKK3sKKyAgICBXZWJDb3Jl
OjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7CisgICAgV2ViQ29yZTo6RXhjZXB0aW9uQ29k
ZSBlYyA9IDA7CisgICAgY29yZShzZWxmKS0+c2V0VmFsdWVBc051bWJlcihuZXdWYWx1ZUFzTnVt
YmVyLCBlYywgRGlzcGF0Y2hJbnB1dEFuZENoYW5nZUV2ZW50KTsKK30KKworQGVuZAorI2VuZGlm
CisKIENsYXNzIGtpdENsYXNzKFdlYkNvcmU6OkhUTUxDb2xsZWN0aW9uKiBjb2xsZWN0aW9uKQog
ewogICAgIGlmIChjb2xsZWN0aW9uLT50eXBlKCkgPT0gV2ViQ29yZTo6U2VsZWN0T3B0aW9ucykK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL29iamMvRE9NSW50ZXJuYWwuaCBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL29iamMvRE9NSW50ZXJuYWwuaAppbmRleCBkMjJiMzE4
OTM1YTM5YWQyNGY5NTUxN2M3OTJjZjJkMzZlNTE0MjZiLi4xMGM0OGUxOTk5N2E5ZDEyNzlmNzk2
MjMzZTI3NTQzMmJkZWQ0NTQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9v
YmpjL0RPTUludGVybmFsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvb2JqYy9ET01J
bnRlcm5hbC5oCkBAIC00NSw2ICs0NSw5IEBAIG5hbWVzcGFjZSBKU0MgewogbmFtZXNwYWNlIFdl
YkNvcmUgewogICAgIGNsYXNzIE5vZGVGaWx0ZXI7CiAgICAgY2xhc3MgWFBhdGhOU1Jlc29sdmVy
OworI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMpCisgICAgY2xhc3MgVG91Y2g7CisjZW5kaWYKIH0K
IAogQGludGVyZmFjZSBET01Ob2RlRmlsdGVyIDogRE9NT2JqZWN0IDxET01Ob2RlRmlsdGVyPgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvb2JqYy9ET01JbnRlcm5hbC5tbSBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL29iamMvRE9NSW50ZXJuYWwubW0KaW5kZXggMzQxMDRi
OWM5MmM5OTZjYTA2OGU1YTJiMDBkY2I0NjZjNWQyOGQ1ZC4uODEzMjY5OGYxNDRiNzI0OGNmYTk0
MzE4MmY3ZDMwMGUyZDU3MDlkYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
b2JqYy9ET01JbnRlcm5hbC5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9vYmpjL0RP
TUludGVybmFsLm1tCkBAIC0zMywxMCArMzMsMjIgQEAKICNpbXBvcnQgIldlYlNjcmlwdE9iamVj
dFByaXZhdGUuaCIKICNpbXBvcnQgInJ1bnRpbWVfcm9vdC5oIgogCisjaWYgUExBVEZPUk0oSU9T
KQorI2RlZmluZSBORUVEU19XUkFQUEVSX0NBQ0hFX0xPQ0sgMQorI2VuZGlmCisKIC8vLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAvLyBXcmFwcGluZyBXZWJDb3JlIGltcGxlbWVu
dGF0aW9uIG9iamVjdHMKIAogc3RhdGljIE5TTWFwVGFibGUqIERPTVdyYXBwZXJDYWNoZTsKKyAg
ICAKKyNpZmRlZiBORUVEU19XUkFQUEVSX0NBQ0hFX0xPQ0sKK3N0YXRpYyBNdXRleCYgd3JhcHBl
ckNhY2hlTG9jaygpCit7CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChNdXRleCwgd3JhcHBlckNh
Y2hlTXV0ZXgsICgpKTsKKyAgICByZXR1cm4gd3JhcHBlckNhY2hlTXV0ZXg7Cit9CisjZW5kaWYK
IAogI2lmIENPTVBJTEVSKENMQU5HKQogI3ByYWdtYSBjbGFuZyBkaWFnbm9zdGljIHB1c2gKQEAg
LTU3LDYgKzY5LDkgQEAgTlNNYXBUYWJsZSogY3JlYXRlV3JhcHBlckNhY2hlKCkKIAogTlNPYmpl
Y3QqIGdldERPTVdyYXBwZXIoRE9NT2JqZWN0SW50ZXJuYWwqIGltcGwpCiB7CisjaWZkZWYgTkVF
RFNfV1JBUFBFUl9DQUNIRV9MT0NLCisgICAgTXV0ZXhMb2NrZXIgbG9ja2VyKHdyYXBwZXJDYWNo
ZUxvY2soKSk7CisjZW5kaWYKICAgICBpZiAoIURPTVdyYXBwZXJDYWNoZSkKICAgICAgICAgcmV0
dXJuIG5pbDsKICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8TlNPYmplY3QqPihOU01hcEdldChET01X
cmFwcGVyQ2FjaGUsIGltcGwpKTsKQEAgLTY0LDYgKzc5LDkgQEAgTlNPYmplY3QqIGdldERPTVdy
YXBwZXIoRE9NT2JqZWN0SW50ZXJuYWwqIGltcGwpCiAKIHZvaWQgYWRkRE9NV3JhcHBlcihOU09i
amVjdCogd3JhcHBlciwgRE9NT2JqZWN0SW50ZXJuYWwqIGltcGwpCiB7CisjaWZkZWYgTkVFRFNf
V1JBUFBFUl9DQUNIRV9MT0NLCisgICAgTXV0ZXhMb2NrZXIgbG9ja2VyKHdyYXBwZXJDYWNoZUxv
Y2soKSk7CisjZW5kaWYKICAgICBpZiAoIURPTVdyYXBwZXJDYWNoZSkKICAgICAgICAgRE9NV3Jh
cHBlckNhY2hlID0gY3JlYXRlV3JhcHBlckNhY2hlKCk7CiAgICAgTlNNYXBJbnNlcnQoRE9NV3Jh
cHBlckNhY2hlLCBpbXBsLCB3cmFwcGVyKTsKQEAgLTcxLDYgKzg5LDkgQEAgdm9pZCBhZGRET01X
cmFwcGVyKE5TT2JqZWN0KiB3cmFwcGVyLCBET01PYmplY3RJbnRlcm5hbCogaW1wbCkKIAogdm9p
ZCByZW1vdmVET01XcmFwcGVyKERPTU9iamVjdEludGVybmFsKiBpbXBsKQogeworI2lmZGVmIE5F
RURTX1dSQVBQRVJfQ0FDSEVfTE9DSworICAgIE11dGV4TG9ja2VyIGxvY2tlcih3cmFwcGVyQ2Fj
aGVMb2NrKCkpOworI2VuZGlmCiAgICAgaWYgKCFET01XcmFwcGVyQ2FjaGUpCiAgICAgICAgIHJl
dHVybjsKICAgICBOU01hcFJlbW92ZShET01XcmFwcGVyQ2FjaGUsIGltcGwpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvb2JqYy9ET01Qcml2YXRlLmggYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9vYmpjL0RPTVByaXZhdGUuaAppbmRleCA0NGE4YmQ2ZTgwYjRhYWZjOWM1
YjBkZmEwNmUxYzQwYzBjNzhkNDRlLi5lM2Y0Y2VlY2FhMTg2Mjk4NGM3M2U1YTNkZjcwYWI4MTg5
MjcyMjg0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9vYmpjL0RPTVByaXZh
dGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9vYmpjL0RPTVByaXZhdGUuaApAQCAt
MjYsOCArMjYsMTUgQEAKIAogI2ltcG9ydCA8V2ViQ29yZS9ET00uaD4KIAorI2lmIFBMQVRGT1JN
KElPUykKKyNpbXBvcnQgPFdlYkNvcmUvV2ViQXV0b2NhcGl0YWxpemUuaD4KKyNpbXBvcnQgPENv
cmVUZXh0L0NvcmVUZXh0Lmg+CisjZW5kaWYKKwogQGludGVyZmFjZSBET01Ob2RlIChET01Ob2Rl
RXh0ZW5zaW9uc1BlbmRpbmdQdWJsaWMpCisjaWYgIVBMQVRGT1JNKElPUykKIC0gKE5TSW1hZ2Ug
KilyZW5kZXJlZEltYWdlOworI2VuZGlmCiAtIChOU0FycmF5ICopdGV4dFJlY3RzOwogQGVuZAog
CkBAIC0zOCw3ICs0NSw5IEBACiAvLyBGSVhNRTogdGhpcyBzaG91bGQgYmUgcmVtb3ZlZCBhcyBz
b29uIGFzIGFsbCBpbnRlcm5hbCBBcHBsZSB1c2VzIG9mIGl0IGhhdmUgYmVlbiByZXBsYWNlZCB3
aXRoCiAvLyBjYWxscyB0byB0aGUgcHVibGljIG1ldGhvZCAtIChOU0NvbG9yICopY29sb3IuCiBA
aW50ZXJmYWNlIERPTVJHQkNvbG9yIChXZWJQcml2YXRlKQorI2lmICFQTEFURk9STShJT1MpCiAt
IChOU0NvbG9yICopX2NvbG9yOworI2VuZGlmCiBAZW5kCiAKIC8vIEZJWE1FOiB0aGlzIHNob3Vs
ZCBiZSByZW1vdmVkIGFzIHNvb24gYXMgYWxsIGludGVybmFsIEFwcGxlIHVzZXMgb2YgaXQgaGF2
ZSBiZWVuIHJlcGxhY2VkIHdpdGgKQEAgLTQ4LDE1ICs1NywyNyBAQAogQGVuZAogCiBAaW50ZXJm
YWNlIERPTVJhbmdlIChET01SYW5nZUV4dGVuc2lvbnMpCisjaWYgUExBVEZPUk0oSU9TKQorLSAo
Q0dSZWN0KWJvdW5kaW5nQm94OworI2Vsc2UKIC0gKE5TUmVjdClib3VuZGluZ0JveDsKKyNlbmRp
ZgorI2lmICFQTEFURk9STShJT1MpCiAtIChOU0ltYWdlICopcmVuZGVyZWRJbWFnZUZvcmNpbmdC
bGFja1RleHQ6KEJPT0wpZm9yY2VCbGFja1RleHQ7CisjZWxzZQorLSAoQ0dJbWFnZVJlZilyZW5k
ZXJlZEltYWdlRm9yY2luZ0JsYWNrVGV4dDooQk9PTClmb3JjZUJsYWNrVGV4dDsKKyNlbmRpZgog
LSAoTlNBcnJheSAqKWxpbmVCb3hSZWN0czsgLy8gRGVwcmVjYXRlZC4gVXNlIHRleHRSZWN0cyBp
bnN0ZWFkLgogLSAoTlNBcnJheSAqKXRleHRSZWN0czsKIEBlbmQKIAogQGludGVyZmFjZSBET01F
bGVtZW50IChXZWJQcml2YXRlKQorI2lmICFQTEFURk9STShJT1MpCiAtIChOU0ZvbnQgKilfZm9u
dDsKIC0gKE5TRGF0YSAqKV9pbWFnZVRJRkZSZXByZXNlbnRhdGlvbjsKKyNlbHNlCistIChDVEZv
bnRSZWYpX2ZvbnQ7CisjZW5kaWYKIC0gKE5TVVJMICopX2dldFVSTEF0dHJpYnV0ZTooTlNTdHJp
bmcgKiluYW1lOwogLSAoQk9PTClpc0ZvY3VzZWQ7CiBAZW5kCkBAIC04MSw3ICsxMDIsOSBAQAog
QGludGVyZmFjZSBET01IVE1MSW5wdXRFbGVtZW50IChGb3JtQXV0b0ZpbGxUcmFuc2l0aW9uKQog
LSAoQk9PTClfaXNBdXRvZmlsbGVkOwogLSAoQk9PTClfaXNUZXh0RmllbGQ7CisjaWYgIVBMQVRG
T1JNKElPUykKIC0gKE5TUmVjdClfcmVjdE9uU2NyZWVuOyAvLyBib3VuZGluZyBib3ggb2YgdGhl
IHRleHQgZmllbGQsIGluIHNjcmVlbiBjb29yZGluYXRlcworI2VuZGlmCiAtICh2b2lkKV9yZXBs
YWNlQ2hhcmFjdGVyc0luUmFuZ2U6KE5TUmFuZ2UpdGFyZ2V0UmFuZ2Ugd2l0aFN0cmluZzooTlNT
dHJpbmcgKilyZXBsYWNlbWVudFN0cmluZyBzZWxlY3RpbmdGcm9tSW5kZXg6KGludClpbmRleDsK
IC0gKE5TUmFuZ2UpX3NlbGVjdGVkUmFuZ2U7CiAtICh2b2lkKV9zZXRBdXRvZmlsbGVkOihCT09M
KWZpbGxlZDsKQEAgLTEwNSwzICsxMjgsMjYgQEAKIC0gKHZvaWQpX2FjdGl2YXRlSXRlbUF0SW5k
ZXg6KGludClpbmRleDsKIC0gKHZvaWQpX2FjdGl2YXRlSXRlbUF0SW5kZXg6KGludClpbmRleCBh
bGxvd011bHRpcGxlU2VsZWN0aW9uOihCT09MKWFsbG93TXVsdGlwbGVTZWxlY3Rpb247CiBAZW5k
CisKKyNpZiBQTEFURk9STShJT1MpCitlbnVtIHsgV2ViTWVkaWFRdWVyeU9yaWVudGF0aW9uQ3Vy
cmVudCwgV2ViTWVkaWFRdWVyeU9yaWVudGF0aW9uUG9ydHJhaXQsIFdlYk1lZGlhUXVlcnlPcmll
bnRhdGlvbkxhbmRzY2FwZSB9OworQGludGVyZmFjZSBET01IVE1MTGlua0VsZW1lbnQgKFdlYlBy
aXZhdGUpCistIChCT09MKV9tZWRpYVF1ZXJ5TWF0Y2hlc0Zvck9yaWVudGF0aW9uOihpbnQpb3Jp
ZW50YXRpb247CistIChCT09MKV9tZWRpYVF1ZXJ5TWF0Y2hlczsKK0BlbmQKKworLy8gVGhlc2Ug
Y2hhbmdlcyBhcmUgdXNlZnVsIHRvIGdldCB0aGUgQXV0b2NhcGl0YWxpemVUeXBlIG9uIHBhcnRp
Y3VsYXIgZm9ybSBjb250cm9scy4KK0BpbnRlcmZhY2UgRE9NSFRNTElucHV0RWxlbWVudCAoQXV0
b2NhcGl0YWxpemVBZGRpdGlvbnMpCistIChXZWJBdXRvY2FwaXRhbGl6ZVR5cGUpX2F1dG9jYXBp
dGFsaXplVHlwZTsKK0BlbmQKKworQGludGVyZmFjZSBET01IVE1MVGV4dEFyZWFFbGVtZW50IChB
dXRvY2FwaXRhbGl6ZUFkZGl0aW9ucykKKy0gKFdlYkF1dG9jYXBpdGFsaXplVHlwZSlfYXV0b2Nh
cGl0YWxpemVUeXBlOworQGVuZAorCisvLyBUaGVzZSBhcmUgdXNlZCBieSBEYXRlIGFuZCBUaW1l
IGlucHV0IHR5cGVzIGJlY2F1c2UgdGhlIGdlbmVyYXRlZCBPYmpDIG1ldGhvZHMgZGVmYXVsdCB0
byBub3QgZGlzcGF0Y2hpbmcgZXZlbnRzLgorQGludGVyZmFjZSBET01IVE1MSW5wdXRFbGVtZW50
IChXZWJJbnB1dENoYW5nZUV2ZW50QWRkaXRpb25zKQorLSAodm9pZClzZXRWYWx1ZVdpdGhDaGFu
Z2VFdmVudDooTlNTdHJpbmcgKiluZXdWYWx1ZTsKKy0gKHZvaWQpc2V0VmFsdWVBc051bWJlcldp
dGhDaGFuZ2VFdmVudDooZG91YmxlKW5ld1ZhbHVlQXNOdW1iZXI7CitAZW5kCisjZW5kaWYKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL29iamMvRE9NVUlLaXRFeHRlbnNpb25z
LmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9vYmpjL0RPTVVJS2l0RXh0ZW5zaW9ucy5oCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLmUwNWJkMmZhZGJiNWRhM2UxZjBkNmMyYzEyNTgzNjc2ZmQ4MzYwNWIKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9vYmpjL0RPTVVJS2l0RXh0ZW5z
aW9ucy5oCkBAIC0wLDAgKzEsODkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDcsIDIwMDgg
QXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqCisgKi8KKworI2lmIFBMQVRGT1JNKElPUykKKwor
I2ltcG9ydCA8V2ViQ29yZS9ET01FbGVtZW50Lmg+CisjaW1wb3J0IDxXZWJDb3JlL0RPTUV4dGVu
c2lvbnMuaD4KKyNpbXBvcnQgPFdlYkNvcmUvRE9NSFRNTEFyZWFFbGVtZW50Lmg+CisjaW1wb3J0
IDxXZWJDb3JlL0RPTUhUTUxJbWFnZUVsZW1lbnQuaD4KKyNpbXBvcnQgPFdlYkNvcmUvRE9NSFRN
TFNlbGVjdEVsZW1lbnQuaD4KKyNpbXBvcnQgPFdlYkNvcmUvRE9NTm9kZS5oPgorI2ltcG9ydCA8
V2ViQ29yZS9ET01SYW5nZS5oPgorCit0eXBlZGVmIGVudW0geyAKKyAgICAvLyBUaGUgZmlyc3Qg
Zm91ciBtYXRjaCBTZWxlY3Rpb25EaXJlY3Rpb24uICBUaGUgbGFzdCB0d28gZG9uJ3QgaGF2ZSBX
ZWJLaXQgY291bnRlcnBhcnRzIGJlY2F1c2UKKyAgICAvLyB0aGV5IGFyZW4ndCBuZWNlc3Nhcnkg
dW50aWwgdGhlcmUgaXMgc3VwcG9ydCB2ZXJ0aWNhbCBsYXlvdXQuCisgICAgV2ViVGV4dEFkanVz
dG1lbnRGb3J3YXJkLAorICAgIFdlYlRleHRBZGp1c3RtZW50QmFja3dhcmQsCisgICAgV2ViVGV4
dEFkanVzdG1lbnRSaWdodCwKKyAgICBXZWJUZXh0QWRqdXN0bWVudExlZnQsCisgICAgV2ViVGV4
dEFkanVzdG1lbnRVcCwKKyAgICBXZWJUZXh0QWRqdXN0bWVudERvd24KK30gV2ViVGV4dEFkanVz
dG1lbnREaXJlY3Rpb247IAorCitAaW50ZXJmYWNlIERPTVJhbmdlIChVSUtpdEV4dGVuc2lvbnMp
CisKKy0gKHZvaWQpbW92ZTooVUludDMyKWFtb3VudCBpbkRpcmVjdGlvbjooV2ViVGV4dEFkanVz
dG1lbnREaXJlY3Rpb24pZGlyZWN0aW9uOworLSAodm9pZClleHRlbmQ6KFVJbnQzMilhbW91bnQg
aW5EaXJlY3Rpb246KFdlYlRleHRBZGp1c3RtZW50RGlyZWN0aW9uKWRpcmVjdGlvbjsKKy0gKERP
TU5vZGUgKilmaXJzdE5vZGU7CisKK0BlbmQKKworQGludGVyZmFjZSBET01Ob2RlIChVSUtpdEV4
dGVuc2lvbnMpCistIChOU0FycmF5ICopYm9yZGVyUmFkaWk7CistIChOU0FycmF5ICopYm91bmRp
bmdCb3hlczsKKy0gKE5TQXJyYXkgKilhYnNvbHV0ZVF1YWRzOyAgICAgLy8gcmV0dXJuIGFycmF5
IG9mIFdLUXVhZE9iamVjdHMuIHRha2VzIHRyYW5zZm9ybXMgaW50byBhY2NvdW50CisKKy0gKEJP
T0wpY29udGFpbnNPbmx5SW5saW5lT2JqZWN0czsKKy0gKEJPT0wpaXNTZWxlY3RhYmxlQmxvY2s7
CistIChET01SYW5nZSAqKXJhbmdlT2ZDb250YWluaW5nUGFyYWdyYXBoOworLSAoQ0dGbG9hdCl0
ZXh0SGVpZ2h0OworLSAoRE9NTm9kZSAqKWZpbmRFeHBsb2RlZFRleHROb2RlQXRQb2ludDooQ0dQ
b2ludClwb2ludDsgIC8vIEEgc2Vjb25kLWNoYW5jZSBwYXNzIHRvIGxvb2sgZm9yIHRleHQgbm9k
ZXMgbWlzc2VkIGJ5IHRoZSBoaXQgdGVzdC4KK0BlbmQKKworQGludGVyZmFjZSBET01IVE1MQXJl
YUVsZW1lbnQgKFVJS2l0RXh0ZW5zaW9ucykKKy0gKENHUmVjdClib3VuZGluZ0JveFdpdGhPd25l
cjooRE9NTm9kZSAqKWFuT3duZXI7CistIChXS1F1YWQpYWJzb2x1dGVRdWFkV2l0aE93bmVyOihE
T01Ob2RlICopYW5Pd25lcjsgICAgIC8vIHRha2VzIHRyYW5zZm9ybXMgaW50byBhY2NvdW50Cist
IChOU0FycmF5ICopYm91bmRpbmdCb3hlc1dpdGhPd25lcjooRE9NTm9kZSAqKWFuT3duZXI7Cist
IChOU0FycmF5ICopYWJzb2x1dGVRdWFkc1dpdGhPd25lcjooRE9NTm9kZSAqKWFuT3duZXI7IC8v
IHJldHVybiBhcnJheSBvZiBXS1F1YWRPYmplY3RzLiB0YWtlcyB0cmFuc2Zvcm1zIGludG8gYWNj
b3VudAorQGVuZAorCitAaW50ZXJmYWNlIERPTUhUTUxTZWxlY3RFbGVtZW50IChVSUtpdEV4dGVu
c2lvbnMpCistICh1bnNpZ25lZCljb21wbGV0ZUxlbmd0aDsKKy0gKERPTU5vZGUgKilsaXN0SXRl
bUF0SW5kZXg6KGludClhbkluZGV4OworQGVuZAorCitAaW50ZXJmYWNlIERPTUhUTUxJbWFnZUVs
ZW1lbnQgKFdlYkRPTUhUTUxJbWFnZUVsZW1lbnRPcGVyYXRpb25zUHJpdmF0ZSkKKy0gKE5TRGF0
YSAqKWRhdGFSZXByZXNlbnRhdGlvbjooQk9PTClyYXdJbWFnZURhdGE7CistIChOU1N0cmluZyAq
KW1pbWVUeXBlOworQGVuZAorCitAaW50ZXJmYWNlIERPTUVsZW1lbnQgKERPTVVJS2l0Q29tcGxl
eGl0eUV4dGVuc2lvbnMpIAorLSAoaW50KXN0cnVjdHVyYWxDb21wbGV4aXR5Q29udHJpYnV0aW9u
OyAvLyBEb2VzIG5vdCBpbmNsdWRlIGNoaWxkcmVuLgorQGVuZAorCisjZW5kaWYKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL29iamMvRE9NVUlLaXRFeHRlbnNpb25zLm1tIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvb2JqYy9ET01VSUtpdEV4dGVuc2lvbnMubW0KbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uMGNlMGJjNDg0NWJmYWZhYmVlMDc0NDhjM2JhM2ZmZDhkZjlhNDFjZAotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL29iamMvRE9NVUlLaXRFeHRlbnNpb25z
Lm1tCkBAIC0wLDAgKzEsNTA3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA3LCAyMDA4LCAy
MDA5LCAyMDEzIEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFLCBJTkMuIGBgQVMgSVMnJyBBTkQg
QU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
KyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKgorICovCisKKyNpZiBQTEFURk9S
TShJT1MpCisKKyNpbXBvcnQgImNvbmZpZy5oIgorI2ltcG9ydCAiaHRtbGVkaXRpbmcuaCIKKwor
I2ltcG9ydCAiQ2FjaGVkSW1hZ2UuaCIKKyNpbXBvcnQgIkRPTS5oIgorI2ltcG9ydCAiRE9NQ29y
ZS5oIgorI2ltcG9ydCAiRE9NRXh0ZW5zaW9ucy5oIgorI2ltcG9ydCAiRE9NSFRNTC5oIgorI2lt
cG9ydCAiRE9NSFRNTEFyZWFFbGVtZW50SW50ZXJuYWwuaCIKKyNpbXBvcnQgIkRPTUhUTUxFbGVt
ZW50SW50ZXJuYWwuaCIKKyNpbXBvcnQgIkRPTUhUTUxJbWFnZUVsZW1lbnRJbnRlcm5hbC5oIgor
I2ltcG9ydCAiRE9NSFRNTFNlbGVjdEVsZW1lbnRJbnRlcm5hbC5oIgorI2ltcG9ydCAiRE9NSW50
ZXJuYWwuaCIKKyNpbXBvcnQgIkRPTU5vZGVJbnRlcm5hbC5oIgorI2ltcG9ydCAiRE9NUmFuZ2VJ
bnRlcm5hbC5oIgorI2ltcG9ydCAiRE9NVUlLaXRFeHRlbnNpb25zLmgiCisjaW1wb3J0ICJGbG9h
dFBvaW50LmgiCisjaW1wb3J0ICJGb250LmgiCisjaW1wb3J0ICJGcmFtZVNlbGVjdGlvbi5oIgor
I2ltcG9ydCAiSFRNTEFyZWFFbGVtZW50LmgiCisjaW1wb3J0ICJIVE1MSW1hZ2VFbGVtZW50Lmgi
CisjaW1wb3J0ICJIVE1MSW5wdXRFbGVtZW50LmgiCisjaW1wb3J0ICJIVE1MU2VsZWN0RWxlbWVu
dC5oIgorI2ltcG9ydCAiSFRNTFRleHRBcmVhRWxlbWVudC5oIgorI2ltcG9ydCAiSW1hZ2UuaCIK
KyNpbXBvcnQgIklubGluZUJveC5oIgorI2ltcG9ydCAiTm9kZS5oIgorI2ltcG9ydCAiUmFuZ2Uu
aCIKKyNpbXBvcnQgIlJlbmRlckJsb2NrLmgiCisjaW1wb3J0ICJSZW5kZXJCbG9ja0Zsb3cuaCIK
KyNpbXBvcnQgIlJlbmRlckJveC5oIgorI2ltcG9ydCAiUm91bmRlZFJlY3QuaCIKKyNpbXBvcnQg
IlJlbmRlck9iamVjdC5oIgorI2ltcG9ydCAiUmVuZGVyU3R5bGVDb25zdGFudHMuaCIKKyNpbXBv
cnQgIlJlbmRlclRleHQuaCIKKyNpbXBvcnQgIlJlc291cmNlQnVmZmVyLmgiCisjaW1wb3J0ICJT
aGFyZWRCdWZmZXIuaCIKKyNpbXBvcnQgIlRleHRJdGVyYXRvci5oIgorI2ltcG9ydCAiVmlzaWJs
ZVBvc2l0aW9uLmgiCisjaW1wb3J0ICJWaXNpYmxlVW5pdHMuaCIKKworI2ltcG9ydCAiV0FLQXBw
S2l0U3R1YnMuaCIKKwordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKK3VzaW5nIFdlYkNvcmU6
OkZsb2F0UG9pbnQ7Cit1c2luZyBXZWJDb3JlOjpGb250OwordXNpbmcgV2ViQ29yZTo6SFRNTEFy
ZWFFbGVtZW50OwordXNpbmcgV2ViQ29yZTo6SFRNTEltYWdlRWxlbWVudDsKK3VzaW5nIFdlYkNv
cmU6OkhUTUxTZWxlY3RFbGVtZW50OwordXNpbmcgV2ViQ29yZTo6SW5saW5lQm94OwordXNpbmcg
V2ViQ29yZTo6SW50UmVjdDsKK3VzaW5nIFdlYkNvcmU6Ok5vZGU7Cit1c2luZyBXZWJDb3JlOjpQ
b3NpdGlvbjsKK3VzaW5nIFdlYkNvcmU6OlJhbmdlOwordXNpbmcgV2ViQ29yZTo6UmVuZGVyQmxv
Y2s7Cit1c2luZyBXZWJDb3JlOjpSZW5kZXJCb3g7Cit1c2luZyBXZWJDb3JlOjpSZW5kZXJPYmpl
Y3Q7Cit1c2luZyBXZWJDb3JlOjpSZW5kZXJTdHlsZTsKK3VzaW5nIFdlYkNvcmU6OlJlbmRlclRl
eHQ7Cit1c2luZyBXZWJDb3JlOjpSb290SW5saW5lQm94OwordXNpbmcgV2ViQ29yZTo6VGV4dEl0
ZXJhdG9yOwordXNpbmcgV2ViQ29yZTo6VmlzaWJsZVBvc2l0aW9uOworCitAaW1wbGVtZW50YXRp
b24gRE9NUmFuZ2UgKFVJS2l0RXh0ZW5zaW9ucykKKworLSAodm9pZCltb3ZlOihVSW50MzIpYW1v
dW50IGluRGlyZWN0aW9uOihXZWJUZXh0QWRqdXN0bWVudERpcmVjdGlvbilkaXJlY3Rpb24KK3sK
KyAgICBSYW5nZSAqcmFuZ2UgPSBjb3JlKHNlbGYpOworICAgIEZyYW1lU2VsZWN0aW9uIGZyYW1l
U2VsZWN0aW9uOworICAgIGZyYW1lU2VsZWN0aW9uLm1vdmVUbyhyYW5nZSwgRE9XTlNUUkVBTSk7
CisgICAgCisgICAgVGV4dEdyYW51bGFyaXR5IGdyYW51bGFyaXR5ID0gQ2hhcmFjdGVyR3JhbnVs
YXJpdHk7CisgICAgLy8gVW50aWwgV2ViS2l0IHN1cHBvcnRzIHZlcnRpY2FsIGxheW91dCwgImRv
d24iIGlzIGVxdWl2YWxlbnQgdG8gImZvcndhcmQgYnkgYSBsaW5lIiBhbmQKKyAgICAvLyAidXAi
IGlzIGVxdWl2YWxlbnQgdG8gImJhY2t3YXJkIGJ5IGEgbGluZSIuCisgICAgaWYgKGRpcmVjdGlv
biA9PSBXZWJUZXh0QWRqdXN0bWVudERvd24pIHsKKyAgICAgICAgZGlyZWN0aW9uID0gV2ViVGV4
dEFkanVzdG1lbnRGb3J3YXJkOworICAgICAgICBncmFudWxhcml0eSA9IExpbmVHcmFudWxhcml0
eTsKKyAgICB9IGVsc2UgaWYgKGRpcmVjdGlvbiA9PSBXZWJUZXh0QWRqdXN0bWVudFVwKSB7Cisg
ICAgICAgIGRpcmVjdGlvbiA9IFdlYlRleHRBZGp1c3RtZW50QmFja3dhcmQ7CisgICAgICAgIGdy
YW51bGFyaXR5ID0gTGluZUdyYW51bGFyaXR5OworICAgIH0KKyAgICAKKyAgICBmb3IgKFVJbnQz
MiBpID0gMDsgaSA8IGFtb3VudDsgaSsrKQorICAgICAgICBmcmFtZVNlbGVjdGlvbi5tb2RpZnko
RnJhbWVTZWxlY3Rpb246OkFsdGVyYXRpb25Nb3ZlLCAoU2VsZWN0aW9uRGlyZWN0aW9uKWRpcmVj
dGlvbiwgZ3JhbnVsYXJpdHkpOworICAgIAorICAgIEV4Y2VwdGlvbkNvZGUgaWdub3JlZDsKKyAg
ICByYW5nZS0+c2V0U3RhcnQoZnJhbWVTZWxlY3Rpb24uc3RhcnQoKS5hbmNob3JOb2RlKCksIGZy
YW1lU2VsZWN0aW9uLnN0YXJ0KCkuZGVwcmVjYXRlZEVkaXRpbmdPZmZzZXQoKSwgaWdub3JlZCk7
CisgICAgcmFuZ2UtPnNldEVuZChmcmFtZVNlbGVjdGlvbi5lbmQoKS5hbmNob3JOb2RlKCksIGZy
YW1lU2VsZWN0aW9uLmVuZCgpLmRlcHJlY2F0ZWRFZGl0aW5nT2Zmc2V0KCksIGlnbm9yZWQpOwor
fQorCistICh2b2lkKWV4dGVuZDooVUludDMyKWFtb3VudCBpbkRpcmVjdGlvbjooV2ViVGV4dEFk
anVzdG1lbnREaXJlY3Rpb24pZGlyZWN0aW9uCit7CisgICAgUmFuZ2UgKnJhbmdlID0gY29yZShz
ZWxmKTsKKyAgICBGcmFtZVNlbGVjdGlvbiBmcmFtZVNlbGVjdGlvbjsKKyAgICBmcmFtZVNlbGVj
dGlvbi5tb3ZlVG8ocmFuZ2UsIERPV05TVFJFQU0pOworICAgIAorICAgIGZvciAoVUludDMyIGkg
PSAwOyBpIDwgYW1vdW50OyBpKyspCisgICAgICAgIGZyYW1lU2VsZWN0aW9uLm1vZGlmeShGcmFt
ZVNlbGVjdGlvbjo6QWx0ZXJhdGlvbkV4dGVuZCwgKFNlbGVjdGlvbkRpcmVjdGlvbilkaXJlY3Rp
b24sIENoYXJhY3RlckdyYW51bGFyaXR5KTsgICAgCisgICAgCisgICAgRXhjZXB0aW9uQ29kZSBp
Z25vcmVkOworICAgIHJhbmdlLT5zZXRTdGFydChmcmFtZVNlbGVjdGlvbi5zdGFydCgpLmFuY2hv
ck5vZGUoKSwgZnJhbWVTZWxlY3Rpb24uc3RhcnQoKS5kZXByZWNhdGVkRWRpdGluZ09mZnNldCgp
LCBpZ25vcmVkKTsKKyAgICByYW5nZS0+c2V0RW5kKGZyYW1lU2VsZWN0aW9uLmVuZCgpLmFuY2hv
ck5vZGUoKSwgZnJhbWVTZWxlY3Rpb24uZW5kKCkuZGVwcmVjYXRlZEVkaXRpbmdPZmZzZXQoKSwg
aWdub3JlZCk7ICAgIAorfQorCistIChET01Ob2RlICopZmlyc3ROb2RlCit7CisgICAgcmV0dXJu
IGtpdChjb3JlKHNlbGYpLT5maXJzdE5vZGUoKSk7Cit9CisKK0BlbmQKKworLy8tLS0tLS0tLS0t
LS0tLS0tLS0tCisKK0BpbXBsZW1lbnRhdGlvbiBET01Ob2RlIChVSUtpdEV4dGVuc2lvbnMpCisK
Ky8vIE5PVEU6IENvZGUgYmxhdGFudGx5IGNvcGllZCBmcm9tIFtXZWJJbnNwZWN0b3IgX2hpZ2h0
Tm9kZTpdIGluIFdlYktpdC9XZWJJbnNwZWN0b3IvV2ViSW5zcGVjdG9yLm1AMTk4NjEKKy0gKE5T
QXJyYXkgKilib3VuZGluZ0JveGVzCit7CisgICAgTlNBcnJheSAqcmVjdHMgPSBuaWw7CisgICAg
TlNSZWN0IGJvdW5kcyA9IFtzZWxmIGJvdW5kaW5nQm94XTsKKyAgICBpZiAoIU5TSXNFbXB0eVJl
Y3QoYm91bmRzKSkgeworICAgICAgICBpZiAoW3NlbGYgaXNLaW5kT2ZDbGFzczpbRE9NRWxlbWVu
dCBjbGFzc11dKSB7CisgICAgICAgICAgICBET01Eb2N1bWVudCAqZG9jdW1lbnQgPSBbc2VsZiBv
d25lckRvY3VtZW50XTsKKyAgICAgICAgICAgIERPTUNTU1N0eWxlRGVjbGFyYXRpb24gKnN0eWxl
ID0gW2RvY3VtZW50IGdldENvbXB1dGVkU3R5bGU6KERPTUVsZW1lbnQgKilzZWxmIHBzZXVkb0Vs
ZW1lbnQ6QCIiXTsKKyAgICAgICAgICAgIGlmIChbW3N0eWxlIGdldFByb3BlcnR5VmFsdWU6QCJk
aXNwbGF5Il0gaXNFcXVhbFRvU3RyaW5nOkAiaW5saW5lIl0pCisgICAgICAgICAgICAgICAgcmVj
dHMgPSBbc2VsZiBsaW5lQm94UmVjdHNdOworICAgICAgICB9IGVsc2UgaWYgKFtzZWxmIGlzS2lu
ZE9mQ2xhc3M6W0RPTVRleHQgY2xhc3NdXQorI2lmIEVOQUJMRShTVkdfRE9NX09CSkNfQklORElO
R1MpCisgICAgICAgICAgICAgICAgICAgJiYgIVtbc2VsZiBwYXJlbnROb2RlXSBpc0tpbmRPZkNs
YXNzOk5TQ2xhc3NGcm9tU3RyaW5nKEAiRE9NU1ZHRWxlbWVudCIpXQorI2VuZGlmCisgICAgICAg
ICAgICAgICAgICApCisgICAgICAgICAgICByZWN0cyA9IFtzZWxmIGxpbmVCb3hSZWN0c107Cisg
ICAgfQorCisgICAgaWYgKCFbcmVjdHMgY291bnRdKQorICAgICAgICByZWN0cyA9IFtOU0FycmF5
IGFycmF5V2l0aE9iamVjdDpbTlNWYWx1ZSB2YWx1ZVdpdGhSZWN0OmJvdW5kc11dOworCisgICAg
cmV0dXJuIHJlY3RzOworfQorCistIChOU0FycmF5ICopYWJzb2x1dGVRdWFkcworeworICAgIE5T
QXJyYXkgKnF1YWRzID0gbmlsOworICAgIE5TUmVjdCBib3VuZHMgPSBbc2VsZiBib3VuZGluZ0Jv
eF07CisgICAgaWYgKCFOU0lzRW1wdHlSZWN0KGJvdW5kcykpIHsKKyAgICAgICAgaWYgKFtzZWxm
IGlzS2luZE9mQ2xhc3M6W0RPTUVsZW1lbnQgY2xhc3NdXSkgeworICAgICAgICAgICAgRE9NRG9j
dW1lbnQgKmRvY3VtZW50ID0gW3NlbGYgb3duZXJEb2N1bWVudF07CisgICAgICAgICAgICBET01D
U1NTdHlsZURlY2xhcmF0aW9uICpzdHlsZSA9IFtkb2N1bWVudCBnZXRDb21wdXRlZFN0eWxlOihE
T01FbGVtZW50ICopc2VsZiBwc2V1ZG9FbGVtZW50OkAiIl07CisgICAgICAgICAgICBpZiAoW1tz
dHlsZSBnZXRQcm9wZXJ0eVZhbHVlOkAiZGlzcGxheSJdIGlzRXF1YWxUb1N0cmluZzpAImlubGlu
ZSJdKQorICAgICAgICAgICAgICAgIHF1YWRzID0gW3NlbGYgbGluZUJveFF1YWRzXTsKKyAgICAg
ICAgfSBlbHNlIGlmIChbc2VsZiBpc0tpbmRPZkNsYXNzOltET01UZXh0IGNsYXNzXV0KKyNpZiBF
TkFCTEUoU1ZHX0RPTV9PQkpDX0JJTkRJTkdTKQorICAgICAgICAgICAgICAgICAgICYmICFbW3Nl
bGYgcGFyZW50Tm9kZV0gaXNLaW5kT2ZDbGFzczpOU0NsYXNzRnJvbVN0cmluZyhAIkRPTVNWR0Vs
ZW1lbnQiKV0KKyNlbmRpZgorICAgICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAgIHF1YWRz
ID0gW3NlbGYgbGluZUJveFF1YWRzXTsKKyAgICB9CisKKyAgICBpZiAoIVtxdWFkcyBjb3VudF0p
IHsKKyAgICAgICAgV0tRdWFkT2JqZWN0KiBxdWFkT2JqZWN0ID0gW1tXS1F1YWRPYmplY3QgYWxs
b2NdIGluaXRXaXRoUXVhZDpbc2VsZiBhYnNvbHV0ZVF1YWRdXTsKKyAgICAgICAgcXVhZHMgPSBb
TlNBcnJheSBhcnJheVdpdGhPYmplY3Q6cXVhZE9iamVjdF07CisgICAgICAgIFtxdWFkT2JqZWN0
IHJlbGVhc2VdOworICAgIH0KKworICAgIHJldHVybiBxdWFkczsKK30KKworLSAoTlNBcnJheSAq
KWJvcmRlclJhZGlpCit7CisgICAgUmVuZGVyT2JqZWN0KiByZW5kZXJlciA9IGNvcmUoc2VsZikt
PnJlbmRlcmVyKCk7CisgICAgCisKKyAgICBpZiAocmVuZGVyZXIgJiYgcmVuZGVyZXItPmlzQm94
KCkpIHsKKyAgICAgICAgUm91bmRlZFJlY3Q6OlJhZGlpIHJhZGlpID0gdG9SZW5kZXJCb3gocmVu
ZGVyZXIpLT5ib3JkZXJSYWRpaSgpOworICAgICAgICByZXR1cm4gQFtbTlNWYWx1ZSB2YWx1ZVdp
dGhTaXplOihDR1NpemUpcmFkaWkudG9wTGVmdCgpXSwKKyAgICAgICAgICAgICAgICAgW05TVmFs
dWUgdmFsdWVXaXRoU2l6ZTooQ0dTaXplKXJhZGlpLnRvcFJpZ2h0KCldLAorICAgICAgICAgICAg
ICAgICBbTlNWYWx1ZSB2YWx1ZVdpdGhTaXplOihDR1NpemUpcmFkaWkuYm90dG9tTGVmdCgpXSwK
KyAgICAgICAgICAgICAgICAgW05TVmFsdWUgdmFsdWVXaXRoU2l6ZTooQ0dTaXplKXJhZGlpLmJv
dHRvbVJpZ2h0KCldXTsKKyAgICB9CisgICAgTlNWYWx1ZSAqZW1wdHlWYWx1ZSA9IFtOU1ZhbHVl
IHZhbHVlV2l0aFNpemU6Q0dTaXplWmVyb107CisgICAgcmV0dXJuIEBbZW1wdHlWYWx1ZSwgZW1w
dHlWYWx1ZSwgZW1wdHlWYWx1ZSwgZW1wdHlWYWx1ZV07Cit9CisKKy0gKEJPT0wpY29udGFpbnNP
bmx5SW5saW5lT2JqZWN0cworeworICAgIFJlbmRlck9iamVjdCAqIHJlbmRlcmVyID0gY29yZShz
ZWxmKS0+cmVuZGVyZXIoKTsKKyAgICByZXR1cm4gIChyZW5kZXJlciAmJgorICAgICAgICAgICAg
IHJlbmRlcmVyLT5jaGlsZHJlbklubGluZSgpICYmCisgICAgICAgICAgICAgKHJlbmRlcmVyLT5p
c1JlbmRlckJsb2NrKCkgJiYgdG9SZW5kZXJCbG9jayhyZW5kZXJlciktPmlubGluZUVsZW1lbnRD
b250aW51YXRpb24oKSA9PSBuaWwpICYmCisgICAgICAgICAgICAgIXJlbmRlcmVyLT5pc1RhYmxl
KCkpOworfQorCistIChCT09MKWlzU2VsZWN0YWJsZUJsb2NrCit7CisgICAgUmVuZGVyT2JqZWN0
ICogcmVuZGVyZXIgPSBjb3JlKHNlbGYpLT5yZW5kZXJlcigpOworICAgIHJldHVybiAocmVuZGVy
ZXIgJiYgKHJlbmRlcmVyLT5pc1JlbmRlckJsb2NrRmxvdygpIHx8IChyZW5kZXJlci0+aXNSZW5k
ZXJCbG9jaygpICYmIHRvUmVuZGVyQmxvY2socmVuZGVyZXIpLT5pbmxpbmVFbGVtZW50Q29udGlu
dWF0aW9uKCkgIT0gbmlsKSkpOworfQorCistIChET01SYW5nZSAqKXJhbmdlT2ZDb250YWluaW5n
UGFyYWdyYXBoCit7CisgICAgRE9NUmFuZ2UgKnJlc3VsdCA9IG5pbDsKKyAgICAKKyAgICBOb2Rl
ICpub2RlID0gY29yZShzZWxmKTsgICAgCisgICAgVmlzaWJsZVBvc2l0aW9uIHZpc2libGVQb3Np
dGlvbihjcmVhdGVMZWdhY3lFZGl0aW5nUG9zaXRpb24obm9kZSwgMCksIFdlYkNvcmU6OkRPV05T
VFJFQU0pOworICAgIFZpc2libGVQb3NpdGlvbiB2aXNpYmxlUGFyYWdyYXBoU3RhcnQgPSBzdGFy
dE9mUGFyYWdyYXBoKHZpc2libGVQb3NpdGlvbik7CisgICAgVmlzaWJsZVBvc2l0aW9uIHZpc2li
bGVQYXJhZ3JhcGhFbmQgPSBlbmRPZlBhcmFncmFwaCh2aXNpYmxlUG9zaXRpb24pOworICAgIAor
ICAgIFBvc2l0aW9uIHBhcmFncmFwaFN0YXJ0ID0gdmlzaWJsZVBhcmFncmFwaFN0YXJ0LmRlZXBF
cXVpdmFsZW50KCkucGFyZW50QW5jaG9yZWRFcXVpdmFsZW50KCk7CisgICAgUG9zaXRpb24gcGFy
YWdyYXBoRW5kID0gdmlzaWJsZVBhcmFncmFwaEVuZC5kZWVwRXF1aXZhbGVudCgpLnBhcmVudEFu
Y2hvcmVkRXF1aXZhbGVudCgpOyAgICAKKyAgICAKKyAgICBpZiAocGFyYWdyYXBoU3RhcnQuaXNO
b3ROdWxsKCkgJiYgcGFyYWdyYXBoRW5kLmlzTm90TnVsbCgpKSB7CisgICAgICAgIFBhc3NSZWZQ
dHI8UmFuZ2U+IHJhbmdlID0gUmFuZ2U6OmNyZWF0ZSgqbm9kZS0+b3duZXJEb2N1bWVudCgpLCBw
YXJhZ3JhcGhTdGFydCwgcGFyYWdyYXBoRW5kKTsKKyAgICAgICAgcmVzdWx0ID0ga2l0KHJhbmdl
LmdldCgpKTsKKyAgICB9CisgICAgCisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworLSAoQ0dGbG9h
dCl0ZXh0SGVpZ2h0Cit7ICAKKyAgICBSZW5kZXJPYmplY3QgKm8gPSBjb3JlKHNlbGYpLT5yZW5k
ZXJlcigpOworICAgIGlmIChvICYmIG8tPmlzVGV4dCgpKSB7CisgICAgICAgIFJlbmRlclRleHQg
KnQgPSB0b1JlbmRlclRleHQobyk7CisgICAgICAgIHJldHVybiB0LT5zdHlsZSgpLmNvbXB1dGVk
TGluZUhlaWdodCgpOzsKKyAgICB9CisgICAgCisgICAgcmV0dXJuIENHRkxPQVRfTUFYOworfQor
CistIChET01Ob2RlICopZmluZEV4cGxvZGVkVGV4dE5vZGVBdFBvaW50OihDR1BvaW50KXBvaW50
Cit7CisgICAgLy8gQSBsaWdodCwgbm9uLXJlY3Vyc2l2ZSB2ZXJzaW9uIG9mIFJlbmRlckJsb2Nr
Ojpwb3NpdGlvbkZvckNvb3JkaW5hdGVzIHRoYXQgbG9va3MgYXQKKyAgICAvLyB3aGV0aGVyIGEg
cG9pbnQgbGllcyB3aXRoaW4gdGhlIGdhcHMgYmV0d2VlbiBpdHMgcm9vdCBsaW5lIGJveGVzLCB0
byBiZSBjYWxsZWQgYWdhaW5zdAorICAgIC8vIGEgbm9kZSByZXR1cm5lZCBmcm9tIGVsZW1lbnRB
dFBvaW50LiAgV2UgbWFrZSB0aGUgYXNzdW1wdGlvbiB0aGF0IGVpdGhlciB0aGUgbm9kZSBvciBv
bmUKKyAgICAvLyBvZiBpdHMgaW1tZWRpYXRlIGNoaWxkcmVuIGNvbnRhaW5zIHRoZSByb290IGxp
bmUgYm94ZXMgaW4gcXVlc3Rpb24uCisgICAgLy8gU2VlIDxyZGFyOi8vcHJvYmxlbS82ODI0NjUw
PiBmb3IgY29udGV4dC4KKyAgICBSZW5kZXJPYmplY3QgKnJlbmRlcmVyID0gY29yZShzZWxmKS0+
cmVuZGVyZXIoKTsKKyAgICBpZiAoIXJlbmRlcmVyIHx8ICFyZW5kZXJlci0+aXNSZW5kZXJCbG9j
a0Zsb3coKSkKKyAgICAgICAgcmV0dXJuIG5pbDsKKworICAgIFJlbmRlckJsb2NrICpibG9jayA9
IHN0YXRpY19jYXN0PFJlbmRlckJsb2NrICo+KHJlbmRlcmVyKTsKKyAgICAKKyAgICBGbG9hdFBv
aW50IGFic1BvaW50KHBvaW50KTsKKyAgICBGbG9hdFBvaW50IGxvY2FsUG9pbnQgPSBibG9jay0+
YWJzb2x1dGVUb0xvY2FsKGFic1BvaW50KTsKKworICAgIGlmICghYmxvY2stPmNoaWxkcmVuSW5s
aW5lKCkpIHsKKyAgICAgICAgLy8gTG9vayBhbW9uZyBvdXIgaW1tZWRpYXRlIGNoaWxkcmVuIGZv
ciBhbiBhbHRlcm5hdGUgYm94IHRoYXQgY29udGFpbnMgdGhlIHBvaW50LgorICAgICAgICBmb3Ig
KFJlbmRlckJveCogY2hpbGQgPSBibG9jay0+Zmlyc3RDaGlsZEJveCgpOyBjaGlsZDsgY2hpbGQg
PSBjaGlsZC0+bmV4dFNpYmxpbmdCb3goKSkgeworICAgICAgICAgICAgaWYgKGNoaWxkLT5oZWln
aHQoKSA9PSAwIHx8IGNoaWxkLT5zdHlsZSgpLnZpc2liaWxpdHkoKSAhPSBXZWJDb3JlOjpWSVNJ
QkxFIHx8IGNoaWxkLT5pc0Zsb2F0aW5nT3JPdXRPZkZsb3dQb3NpdGlvbmVkKCkpCisgICAgICAg
ICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICBmbG9hdCB0b3AgPSBjaGlsZC0+eSgpOwor
ICAgICAgICAgICAgCisgICAgICAgICAgICBSZW5kZXJCb3gqIG5leHRDaGlsZCA9IGNoaWxkLT5u
ZXh0U2libGluZ0JveCgpOworICAgICAgICAgICAgd2hpbGUgKG5leHRDaGlsZCAmJiBuZXh0Q2hp
bGQtPmlzRmxvYXRpbmdPck91dE9mRmxvd1Bvc2l0aW9uZWQoKSkKKyAgICAgICAgICAgICAgICBu
ZXh0Q2hpbGQgPSBuZXh0Q2hpbGQtPm5leHRTaWJsaW5nQm94KCk7CisgICAgICAgICAgICBpZiAo
IW5leHRDaGlsZCkgeworICAgICAgICAgICAgICAgIGlmIChsb2NhbFBvaW50LnkoKSA+PSB0b3Ap
IHsKKyAgICAgICAgICAgICAgICAgICAgYmxvY2sgPSBzdGF0aWNfY2FzdDxSZW5kZXJCbG9jayAq
PihjaGlsZCk7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIH0K
KyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIAor
ICAgICAgICAgICAgZmxvYXQgYm90dG9tID0gbmV4dENoaWxkLT55KCk7CisgICAgICAgICAgICAK
KyAgICAgICAgICAgIGlmIChsb2NhbFBvaW50LnkoKSA+PSB0b3AgJiYgbG9jYWxQb2ludC55KCkg
PCBib3R0b20gJiYgY2hpbGQtPmlzUmVuZGVyQmxvY2soKSkgeworICAgICAgICAgICAgICAgIGJs
b2NrID0gc3RhdGljX2Nhc3Q8UmVuZGVyQmxvY2sgKj4oY2hpbGQpOworICAgICAgICAgICAgICAg
IGJyZWFrOworICAgICAgICAgICAgfSAgICAgICAgICAgICAgICAKKyAgICAgICAgfQorICAgICAg
ICAKKyAgICAgICAgaWYgKCFibG9jay0+Y2hpbGRyZW5JbmxpbmUoKSkKKyAgICAgICAgICAgIHJl
dHVybiBuaWw7CisgICAgICAgIAorICAgICAgICBsb2NhbFBvaW50ID0gYmxvY2stPmFic29sdXRl
VG9Mb2NhbChhYnNQb2ludCk7CisgICAgfQorCisgICAgUmVuZGVyQmxvY2tGbG93ICpibG9ja0Zs
b3cgPSB0b1JlbmRlckJsb2NrRmxvdyhibG9jayk7CisgICAgCisgICAgLy8gT25seSBjaGVjayB0
aGUgZ2FwcyBiZXR3ZWVuIHRoZSByb290IGxpbmUgYm94ZXMuICBXZSBkZWxpYmVyYXRlbHkgaWdu
b3JlIG92ZXJmbG93IGJlY2F1c2UKKyAgICAvLyBleHBlcmllbmNlIGhhcyBzaG93biB0aGF0IGhp
dCB0ZXN0cyBvbiBhbiBleHBsb2RlZCB0ZXh0IG5vZGUgY2FuIGZhaWwgd2hlbiB3aXRoaW4gdGhl
CisgICAgLy8gb3ZlcmZsb3cgcmVnaW9uLgorICAgIGZvciAoUm9vdElubGluZUJveCAqY3VyID0g
YmxvY2tGbG93LT5maXJzdFJvb3RCb3goKTsgY3VyICYmIGN1ciAhPSBibG9ja0Zsb3ctPmxhc3RS
b290Qm94KCk7IGN1ciA9IGN1ci0+bmV4dFJvb3RCb3goKSkgeworICAgICAgICBmbG9hdCBjdXJy
ZW50Qm90dG9tID0gY3VyLT55KCkgKyBjdXItPmxvZ2ljYWxIZWlnaHQoKTsgICAgICAgIAorICAg
ICAgICBpZiAobG9jYWxQb2ludC55KCkgPCBjdXJyZW50Qm90dG9tKQorICAgICAgICAgICAgcmV0
dXJuIG5pbDsKKworICAgICAgICBSb290SW5saW5lQm94ICpuZXh0ID0gY3VyLT5uZXh0Um9vdEJv
eCgpOworICAgICAgICBmbG9hdCBuZXh0VG9wID0gbmV4dC0+eSgpOworICAgICAgICBpZiAobG9j
YWxQb2ludC55KCkgPCBuZXh0VG9wKSB7CisgICAgICAgICAgICBJbmxpbmVCb3ggKmlubGluZUJv
eCA9IGN1ci0+Y2xvc2VzdExlYWZDaGlsZEZvckxvZ2ljYWxMZWZ0UG9zaXRpb24obG9jYWxQb2lu
dC54KCkpOworICAgICAgICAgICAgaWYgKGlubGluZUJveCAmJiBpbmxpbmVCb3gtPmJlaGF2ZXNM
aWtlVGV4dCgpICYmIGlubGluZUJveC0+cmVuZGVyZXIoKS5pc1RleHQoKSkgeworICAgICAgICAg
ICAgICAgIFJlbmRlclRleHQgKnQgPSB0b1JlbmRlclRleHQoJmlubGluZUJveC0+cmVuZGVyZXIo
KSk7CisgICAgICAgICAgICAgICAgaWYgKHQtPnRleHROb2RlKCkpIHsKKyAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuIGtpdCh0LT50ZXh0Tm9kZSgpKTsKKyAgICAgICAgICAgICAgICB9CisgICAg
ICAgICAgICB9CisgICAgICAgIH0KKworICAgIH0KKyAgICByZXR1cm4gbmlsOyAgICAKK30KKwor
QGVuZAorCisvLy0tLS0tLS0tLS0tLS0tLS0tCisKK0BpbXBsZW1lbnRhdGlvbiBET01FbGVtZW50
IChET01VSUtpdENvbXBsZXhpdHlFeHRlbnNpb25zKSAKKworLSAoaW50KXN0cnVjdHVyYWxDb21w
bGV4aXR5Q29udHJpYnV0aW9uIHsgcmV0dXJuIDA7IH0KKworQGVuZAorCitAaW1wbGVtZW50YXRp
b24gRE9NSFRNTEVsZW1lbnQgKERPTVVJS2l0Q29tcGxleGl0eUV4dGVuc2lvbnMpIAorCistIChp
bnQpc3RydWN0dXJhbENvbXBsZXhpdHlDb250cmlidXRpb24KK3sKKyAgICBpbnQgcmVzdWx0ID0g
MDsKKyAgICBSZW5kZXJPYmplY3QgKiByZW5kZXJlciA9IGNvcmUoc2VsZiktPnJlbmRlcmVyKCk7
CisgICAgaWYgKHJlbmRlcmVyKSB7CisgICAgICAgIGlmIChyZW5kZXJlci0+aXNGbG9hdGluZ09y
T3V0T2ZGbG93UG9zaXRpb25lZCgpIHx8CisgICAgICAgICAgICByZW5kZXJlci0+aXNXaWRnZXQo
KSkgeworICAgICAgICAgICAgcmVzdWx0ID0gSU5UX01BWDsKKyAgICAgICAgfSBlbHNlIGlmIChy
ZW5kZXJlci0+aXNFbXB0eSgpKSB7CisgICAgICAgICAgICByZXN1bHQgPSAwOworICAgICAgICB9
IGVsc2UgaWYgKHJlbmRlcmVyLT5pc1JlbmRlckJsb2NrRmxvdygpIHx8IChyZW5kZXJlci0+aXNS
ZW5kZXJCbG9jaygpICYmIHRvUmVuZGVyQmxvY2socmVuZGVyZXIpLT5pbmxpbmVFbGVtZW50Q29u
dGludWF0aW9uKCkgIT0gMCkpIHsKKyAgICAgICAgICAgIEJPT0wgbm9Db3N0ID0gTk87CisgICAg
ICAgICAgICBpZiAocmVuZGVyZXItPmlzQm94KCkpIHsKKyAgICAgICAgICAgICAgICBSZW5kZXJC
b3ggKmFzQm94ID0gcmVuZGVyZXItPmVuY2xvc2luZ0JveCgpOworICAgICAgICAgICAgICAgIFJl
bmRlck9iamVjdCAqcGFyZW50ID0gYXNCb3gtPnBhcmVudCgpOworICAgICAgICAgICAgICAgIFJl
bmRlckJveCAqcGFyZW50UmVuZGVyQm94ID0gKHBhcmVudCAmJiBwYXJlbnQtPmlzQm94KCkpID8g
dG9SZW5kZXJCb3gocGFyZW50KSA6IDA7CisgICAgICAgICAgICAgICAgaWYgKHBhcmVudFJlbmRl
ckJveCAmJiBhc0JveCAmJiBhc0JveC0+d2lkdGgoKSA9PSBwYXJlbnRSZW5kZXJCb3gtPndpZHRo
KCkpIHsKKyAgICAgICAgICAgICAgICAgICAgbm9Db3N0ID0gWUVTOworICAgICAgICAgICAgICAg
IH0KKyAgICAgICAgICAgIH0JCisgICAgICAgICAgICByZXN1bHQgPSAobm9Db3N0ID8gMCA6IDEp
OworICAgICAgICB9IGVsc2UgaWYgKHJlbmRlcmVyLT5oYXNUcmFuc2Zvcm0oKSkgeworICAgICAg
ICAgICAgcmVzdWx0ID0gSU5UX01BWDsKKyAgICAgICAgfQorICAgIH0KKyAgICByZXR1cm4gcmVz
dWx0OworfQorCitAZW5kCisKK0BpbXBsZW1lbnRhdGlvbiBET01IVE1MQm9keUVsZW1lbnQgKERP
TVVJS2l0Q29tcGxleGl0eUV4dGVuc2lvbnMpCistIChpbnQpc3RydWN0dXJhbENvbXBsZXhpdHlD
b250cmlidXRpb24geyByZXR1cm4gMDsgfQorQGVuZAorCisKKy8vIE1heGltYWxseSBjb21wbGV4
IGVsZW1lbnRzCisKK0BpbXBsZW1lbnRhdGlvbiBET01IVE1MRm9ybUVsZW1lbnQgKERPTVVJS2l0
Q29tcGxleGl0eUV4dGVuc2lvbnMpCistIChpbnQpc3RydWN0dXJhbENvbXBsZXhpdHlDb250cmli
dXRpb24geyByZXR1cm4gSU5UX01BWDsgfQorQGVuZAorCitAaW1wbGVtZW50YXRpb24gRE9NSFRN
TFRhYmxlRWxlbWVudCAoRE9NVUlLaXRDb21wbGV4aXR5RXh0ZW5zaW9ucykKKy0gKGludClzdHJ1
Y3R1cmFsQ29tcGxleGl0eUNvbnRyaWJ1dGlvbiB7IHJldHVybiBJTlRfTUFYOyB9CitAZW5kCisK
K0BpbXBsZW1lbnRhdGlvbiBET01IVE1MRnJhbWVFbGVtZW50IChET01VSUtpdENvbXBsZXhpdHlF
eHRlbnNpb25zKQorLSAoaW50KXN0cnVjdHVyYWxDb21wbGV4aXR5Q29udHJpYnV0aW9uIHsgcmV0
dXJuIElOVF9NQVg7IH0KK0BlbmQKKworQGltcGxlbWVudGF0aW9uIERPTUhUTUxJRnJhbWVFbGVt
ZW50IChET01VSUtpdENvbXBsZXhpdHlFeHRlbnNpb25zKQorLSAoaW50KXN0cnVjdHVyYWxDb21w
bGV4aXR5Q29udHJpYnV0aW9uIHsgcmV0dXJuIElOVF9NQVg7IH0KK0BlbmQKKworQGltcGxlbWVu
dGF0aW9uIERPTUhUTUxCdXR0b25FbGVtZW50IChET01VSUtpdENvbXBsZXhpdHlFeHRlbnNpb25z
KQorLSAoaW50KXN0cnVjdHVyYWxDb21wbGV4aXR5Q29udHJpYnV0aW9uIHsgcmV0dXJuIElOVF9N
QVg7IH0KK0BlbmQKKworQGltcGxlbWVudGF0aW9uIERPTUhUTUxUZXh0QXJlYUVsZW1lbnQgKERP
TVVJS2l0Q29tcGxleGl0eUV4dGVuc2lvbnMpCistIChpbnQpc3RydWN0dXJhbENvbXBsZXhpdHlD
b250cmlidXRpb24geyByZXR1cm4gSU5UX01BWDsgfQorQGVuZAorCitAaW1wbGVtZW50YXRpb24g
RE9NSFRNTElucHV0RWxlbWVudCAoRE9NVUlLaXRDb21wbGV4aXR5RXh0ZW5zaW9ucykKKy0gKGlu
dClzdHJ1Y3R1cmFsQ29tcGxleGl0eUNvbnRyaWJ1dGlvbiB7IHJldHVybiBJTlRfTUFYOyB9CitA
ZW5kCisKK0BpbXBsZW1lbnRhdGlvbiBET01IVE1MU2VsZWN0RWxlbWVudCAoRE9NVUlLaXRDb21w
bGV4aXR5RXh0ZW5zaW9ucykKKy0gKGludClzdHJ1Y3R1cmFsQ29tcGxleGl0eUNvbnRyaWJ1dGlv
biB7IHJldHVybiBJTlRfTUFYOyB9CitAZW5kCisKKworLy8tLS0tLS0tLS0tLS0tLS0tLQorICAg
ICAgICAKK0BpbXBsZW1lbnRhdGlvbiBET01IVE1MQXJlYUVsZW1lbnQgKERPTVVJS2l0RXh0ZW5z
aW9ucykKKworLSAoQ0dSZWN0KWJvdW5kaW5nQm94V2l0aE93bmVyOihET01Ob2RlICopYW5Pd25l
cgoreworICAgIC8vIGlnbm9yZXMgdHJhbnNmb3JtcworICAgIHJldHVybiBhbk93bmVyID8gcGl4
ZWxTbmFwcGVkSW50UmVjdChjb3JlKHNlbGYpLT5jb21wdXRlUmVjdChjb3JlKGFuT3duZXIpLT5y
ZW5kZXJlcigpKSkgOiBDR1JlY3RaZXJvOworfQorCistIChXS1F1YWQpYWJzb2x1dGVRdWFkV2l0
aE93bmVyOihET01Ob2RlICopYW5Pd25lcgoreworICAgIGlmIChhbk93bmVyKSB7CisgICAgICAg
IC8vIEZJWE1FOiBFQ0xBSVIKKyAgICAgICAgLy9XZWJDb3JlOjpGbG9hdFF1YWQgdGhlUXVhZCA9
IGNvcmUoc2VsZiktPmdldEFic29sdXRlUXVhZChjb3JlKGFuT3duZXIpLT5yZW5kZXJlcigpKTsK
KyAgICAgICAgV2ViQ29yZTo6SW50UmVjdCByZWN0ID0gcGl4ZWxTbmFwcGVkSW50UmVjdChjb3Jl
KHNlbGYpLT5jb21wdXRlUmVjdChjb3JlKGFuT3duZXIpLT5yZW5kZXJlcigpKSk7CisgICAgICAg
IFdLUXVhZCBxdWFkOworICAgICAgICBxdWFkLnAxID0gQ0dQb2ludE1ha2UocmVjdC54KCksIHJl
Y3QueSgpKTsKKyAgICAgICAgcXVhZC5wMiA9IENHUG9pbnRNYWtlKHJlY3QubWF4WCgpLCByZWN0
LnkoKSk7CisgICAgICAgIHF1YWQucDMgPSBDR1BvaW50TWFrZShyZWN0Lm1heFgoKSwgcmVjdC5t
YXhZKCkpOworICAgICAgICBxdWFkLnA0ID0gQ0dQb2ludE1ha2UocmVjdC54KCksIHJlY3QubWF4
WSgpKTsKKyAgICAgICAgcmV0dXJuIHF1YWQ7CisgICAgfQorCisgICAgV0tRdWFkIHplcm9RdWFk
ID0geyBDR1BvaW50WmVybywgQ0dQb2ludFplcm8sIENHUG9pbnRaZXJvLCBDR1BvaW50WmVybyB9
OworICAgIHJldHVybiB6ZXJvUXVhZDsKK30KKworLSAoTlNBcnJheSAqKWJvdW5kaW5nQm94ZXNX
aXRoT3duZXI6KERPTU5vZGUgKilhbk93bmVyCit7CisgICAgcmV0dXJuIFtOU0FycmF5IGFycmF5
V2l0aE9iamVjdDpbTlNWYWx1ZSB2YWx1ZVdpdGhSZWN0OltzZWxmIGJvdW5kaW5nQm94V2l0aE93
bmVyOmFuT3duZXJdXV07Cit9CisKKy0gKE5TQXJyYXkgKilhYnNvbHV0ZVF1YWRzV2l0aE93bmVy
OihET01Ob2RlICopYW5Pd25lcgoreworICAgIFdLUXVhZE9iamVjdCogcXVhZE9iamVjdCA9IFtb
V0tRdWFkT2JqZWN0IGFsbG9jXSBpbml0V2l0aFF1YWQ6W3NlbGYgYWJzb2x1dGVRdWFkV2l0aE93
bmVyOmFuT3duZXJdXTsKKyAgICBOU0FycmF5KiAgICBxdWFkQXJyYXkgPSBbTlNBcnJheSBhcnJh
eVdpdGhPYmplY3Q6cXVhZE9iamVjdF07CisgICAgW3F1YWRPYmplY3QgcmVsZWFzZV07CisgICAg
cmV0dXJuIHF1YWRBcnJheTsKK30KKworQGVuZAorCitAaW1wbGVtZW50YXRpb24gRE9NSFRNTFNl
bGVjdEVsZW1lbnQgKERPTVVJS2l0RXh0ZW5zaW9ucykKKworLSAodW5zaWduZWQpY29tcGxldGVM
ZW5ndGgKK3sKKyAgICByZXR1cm4gY29yZShzZWxmKS0+bGlzdEl0ZW1zKCkuc2l6ZSgpOworfQor
CistIChET01Ob2RlICopbGlzdEl0ZW1BdEluZGV4OihpbnQpYW5JbmRleAoreworICAgIHJldHVy
biBraXQoY29yZShzZWxmKS0+bGlzdEl0ZW1zKClbYW5JbmRleF0pOworfQorCitAZW5kCisKK0Bp
bXBsZW1lbnRhdGlvbiBET01IVE1MSW1hZ2VFbGVtZW50IChXZWJET01IVE1MSW1hZ2VFbGVtZW50
T3BlcmF0aW9uc1ByaXZhdGUpCisKKy0gKE5TRGF0YSAqKWRhdGFSZXByZXNlbnRhdGlvbjooQk9P
TClyYXdJbWFnZURhdGEKK3sKKyAgICBXZWJDb3JlOjpDYWNoZWRJbWFnZSAqY2FjaGVkSW1hZ2Ug
PSBjb3JlKHNlbGYpLT5jYWNoZWRJbWFnZSgpOworICAgIGlmICghY2FjaGVkSW1hZ2UpCisgICAg
ICAgIHJldHVybiBuaWw7CisgICAgV2ViQ29yZTo6SW1hZ2UgKmltYWdlID0gY2FjaGVkSW1hZ2Ut
PmltYWdlKCk7CisgICAgaWYgKCFpbWFnZSkKKyAgICAgICAgcmV0dXJuIG5pbDsKKyAgICBXZWJD
b3JlOjpTaGFyZWRCdWZmZXIgKmRhdGEgPSBuaWw7CisgICAgaWYgKHJhd0ltYWdlRGF0YSkgewor
ICAgICAgICBSZXNvdXJjZUJ1ZmZlciAqcmVzb3VyY2VCdWZmZXIgPSBjYWNoZWRJbWFnZS0+cmVz
b3VyY2VCdWZmZXIoKTsKKyAgICAgICAgaWYgKHJlc291cmNlQnVmZmVyKQorICAgICAgICAgICAg
ZGF0YSA9IHJlc291cmNlQnVmZmVyLT5zaGFyZWRCdWZmZXIoKTsKKyAgICB9IGVsc2UgeworICAg
ICAgICBkYXRhID0gaW1hZ2UtPmRhdGEoKTsKKyAgICB9CisgICAgaWYgKCFkYXRhKQorICAgICAg
ICByZXR1cm4gbmlsOworICAgIAorICAgIHJldHVybiBbZGF0YS0+Y3JlYXRlTlNEYXRhKCkubGVh
a1JlZigpIGF1dG9yZWxlYXNlXTsKK30KKworLSAoTlNTdHJpbmcgKiltaW1lVHlwZQoreworICAg
IFdlYkNvcmU6OkNhY2hlZEltYWdlICpjYWNoZWRJbWFnZSA9IGNvcmUoc2VsZiktPmNhY2hlZElt
YWdlKCk7CisgICAgaWYgKCFjYWNoZWRJbWFnZSB8fCAhY2FjaGVkSW1hZ2UtPmltYWdlKCkpCisg
ICAgICAgIHJldHVybiBuaWw7CisgICAgCisgICAgcmV0dXJuIGNhY2hlZEltYWdlLT5yZXNwb25z
ZSgpLm1pbWVUeXBlKCk7Cit9CisKK0BlbmQKKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9vYmpjL1B1YmxpY0RPTUludGVyZmFjZXMuaCBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL29iamMvUHVibGljRE9NSW50ZXJmYWNlcy5oCmluZGV4IGNhYWFiOWE4MWI0
NjZlMzhhMjA1NmFmYTVmZjI3ZGEzZGUxOWJkYWYuLmE2NDNmNTJjZmMzMjNkMWE1ZGFmYTZmM2Fi
N2I5OGNlNjY0ZGRlYzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL29iamMv
UHVibGljRE9NSW50ZXJmYWNlcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL29iamMv
UHVibGljRE9NSW50ZXJmYWNlcy5oCkBAIC0yNiw2ICsyNiw4IEBACiAvLyBBbGwgcHVibGljIERP
TSBjbGFzcyBpbnRlcmZhY2VzLCBwcm9wZXJ0aWVzIGFuZCBtZXRob2RzIG5lZWQgdG8gYmUgaW4g
dGhpcyBmaWxlLgogLy8gQW55dGhpbmcgbm90IGluIHRoZSBmaWxlIHdpbGwgYmUgZ2VuZXJhdGVk
IGludG8gdGhlIGFwcHJvcHJpYXRlIHByaXZhdGUgaGVhZGVyIGZpbGUuCiAKKyNpbmNsdWRlIDx3
dGYvUGxhdGZvcm0uaD4KKwogI2lmbmRlZiBPQkpDX0NPREVfR0VORVJBVElPTgogI2Vycm9yIERv
IG5vdCBpbmNsdWRlIHRoaXMgaGVhZGVyLCBpbnN0ZWFkIGluY2x1ZGUgdGhlIGFwcHJvcHJpYXRl
IERPTSBoZWFkZXIuCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KaW5kZXggZGRkYWJjOWY5ZTZmZGExM2I5NDU2MzA2ZjMx
MDJjNDgwODYxY2QxZC4uODc4M2U3NjJkZjkxMjljNTdkZWVkMjMyOTgzMGQwOGRhODEyYmY0NSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9y
SlMucG0KKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9y
SlMucG0KQEAgLTQ5LDYgKzQ5LDQwIEBAIG15IEBkZXBzQ29udGVudCA9ICgpOwogbXkgJG51bUNh
Y2hlZEF0dHJpYnV0ZXMgPSAwOwogbXkgJGN1cnJlbnRDYWNoZWRBdHRyaWJ1dGUgPSAwOwogCitt
eSAkYmVnaW5BcHBsZUNvcHlyaWdodEZvckhlYWRlckZpbGVzID0gPDxFTkQ7CisvLyAtLS0tLS0t
IEJlZ2luIEFwcGxlIENvcHlyaWdodCAtLS0tLS0tCisvKgorICogQ29weXJpZ2h0IChDKSAyMDA4
LCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUGVybWlzc2lvbiBpcyBn
cmFudGVkIGJ5IEFwcGxlIHRvIHVzZSB0aGlzIGZpbGUgdG8gdGhlIGV4dGVudAorICogbmVjZXNz
YXJ5IHRvIHJlbGluayB3aXRoIExHUEwgV2ViS2l0IGZpbGVzLgorICoKKyAqIE5vIGxpY2Vuc2Ug
b3IgcmlnaHRzIGFyZSBncmFudGVkIGJ5IEFwcGxlIGV4cHJlc3NseSBvciBieQorICogaW1wbGlj
YXRpb24sIGVzdG9wcGVsLCBvciBvdGhlcndpc2UsIHRvIEFwcGxlIHBhdGVudHMgYW5kCisgKiB0
cmFkZW1hcmtzLiBGb3IgdGhlIHNha2Ugb2YgY2xhcml0eSwgbm8gbGljZW5zZSBvciByaWdodHMg
YXJlCisgKiBncmFudGVkIGJ5IEFwcGxlIGV4cHJlc3NseSBvciBieSBpbXBsaWNhdGlvbiwgZXN0
b3BwZWwsIG9yIG90aGVyd2lzZSwKKyAqIHVuZGVyIGFueSBBcHBsZSBwYXRlbnRzLCBjb3B5cmln
aHRzIGFuZCB0cmFkZW1hcmtzIHRvIHVuZGVybHlpbmcKKyAqIGltcGxlbWVudGF0aW9ucyBvZiBh
bnkgYXBwbGljYXRpb24gcHJvZ3JhbW1pbmcgaW50ZXJmYWNlcyAoQVBJcykKKyAqIG9yIHRvIGFu
eSBmdW5jdGlvbmFsaXR5IHRoYXQgaXMgaW52b2tlZCBieSBjYWxsaW5nIGFueSBBUEkuCisgKi8K
KworRU5ECitteSAkYmVnaW5BcHBsZUNvcHlyaWdodEZvclNvdXJjZUZpbGVzID0gPDxFTkQ7Cisv
LyAtLS0tLS0tIEJlZ2luIEFwcGxlIENvcHlyaWdodCAtLS0tLS0tCisvKgorICogQ29weXJpZ2h0
IChDKSAyMDA4LCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogTm8gbGlj
ZW5zZSBvciByaWdodHMgYXJlIGdyYW50ZWQgYnkgQXBwbGUgZXhwcmVzc2x5IG9yIGJ5IGltcGxp
Y2F0aW9uLAorICogZXN0b3BwZWwsIG9yIG90aGVyd2lzZSwgdG8gQXBwbGUgY29weXJpZ2h0cywg
cGF0ZW50cywgdHJhZGVtYXJrcywgdHJhZGUKKyAqIHNlY3JldHMgb3Igb3RoZXIgcmlnaHRzLgor
ICovCisKK0VORAorbXkgJGVuZEFwcGxlQ29weXJpZ2h0ICAgPSA8PEVORDsKKy8vIC0tLS0tLS0g
RW5kIEFwcGxlIENvcHlyaWdodCAgIC0tLS0tLS0KKworRU5ECisKICMgRGVmYXVsdCAuaCB0ZW1w
bGF0ZQogbXkgJGhlYWRlclRlbXBsYXRlID0gPDwgIkVPRiI7CiAvKgpAQCAtNDQ4LDcgKzQ4Miwx
MiBAQCBzdWIgR2VuZXJhdGVIZWFkZXJDb250ZW50SGVhZGVyCiAgICAgbXkgJGludGVyZmFjZSA9
IHNoaWZ0OwogICAgIG15ICRjbGFzc05hbWUgPSAiSlMiIC4gJGludGVyZmFjZS0+bmFtZTsKIAot
ICAgIG15IEBoZWFkZXJDb250ZW50SGVhZGVyID0gc3BsaXQoIlxyIiwgJGhlYWRlclRlbXBsYXRl
KTsKKyAgICBteSBAaGVhZGVyQ29udGVudEhlYWRlcjsKKyAgICBpZiAoJGludGVyZmFjZS0+ZXh0
ZW5kZWRBdHRyaWJ1dGVzLT57IkFwcGxlQ29weXJpZ2h0In0pIHsKKyAgICAgICAgQGhlYWRlckNv
bnRlbnRIZWFkZXIgPSBzcGxpdCgiXHIiLCAkYmVnaW5BcHBsZUNvcHlyaWdodEZvckhlYWRlckZp
bGVzKTsKKyAgICB9IGVsc2UgeworICAgICAgICBAaGVhZGVyQ29udGVudEhlYWRlciA9IHNwbGl0
KCJcciIsICRoZWFkZXJUZW1wbGF0ZSk7CisgICAgfQogCiAgICAgIyAtIEFkZCBoZWFkZXIgcHJv
dGVjdGlvbgogICAgIHB1c2goQGhlYWRlckNvbnRlbnRIZWFkZXIsICJcbiNpZm5kZWYgJGNsYXNz
TmFtZSIgLiAiX2giKTsKQEAgLTQ2NCw3ICs1MDMsMTIgQEAgc3ViIEdlbmVyYXRlSW1wbGVtZW50
YXRpb25Db250ZW50SGVhZGVyCiAgICAgbXkgJGludGVyZmFjZSA9IHNoaWZ0OwogICAgIG15ICRj
bGFzc05hbWUgPSAiSlMiIC4gJGludGVyZmFjZS0+bmFtZTsKIAotICAgIG15IEBpbXBsQ29udGVu
dEhlYWRlciA9IHNwbGl0KCJcciIsICRoZWFkZXJUZW1wbGF0ZSk7CisgICAgbXkgQGltcGxDb250
ZW50SGVhZGVyOworICAgIGlmICgkaW50ZXJmYWNlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiQXBw
bGVDb3B5cmlnaHQifSkgeworICAgICAgICBAaW1wbENvbnRlbnRIZWFkZXIgPSBzcGxpdCgiXHIi
LCAkYmVnaW5BcHBsZUNvcHlyaWdodEZvclNvdXJjZUZpbGVzKTsKKyAgICB9IGVsc2UgeworICAg
ICAgICBAaW1wbENvbnRlbnRIZWFkZXIgPSBzcGxpdCgiXHIiLCAkaGVhZGVyVGVtcGxhdGUpOwor
ICAgIH0KIAogICAgIHB1c2goQGltcGxDb250ZW50SGVhZGVyLCAiXG4jaW5jbHVkZSBcImNvbmZp
Zy5oXCJcbiIpOwogICAgIG15ICRjb25kaXRpb25hbFN0cmluZyA9ICRjb2RlR2VuZXJhdG9yLT5H
ZW5lcmF0ZUNvbmRpdGlvbmFsU3RyaW5nKCRpbnRlcmZhY2UpOwpAQCAtODY3LDggKzkxMSwyMSBA
QCBzdWIgR2VuZXJhdGVIZWFkZXIKICAgICB9CiAKICAgICBpZiAoJG51bUN1c3RvbUZ1bmN0aW9u
cyA+IDApIHsKKyAgICAgICAgbXkgJGluQXBwbGVDb3B5cmlnaHQgPSAwOwogICAgICAgICBwdXNo
KEBoZWFkZXJDb250ZW50LCAiXG4gICAgLy8gQ3VzdG9tIGZ1bmN0aW9uc1xuIik7CiAgICAgICAg
IGZvcmVhY2ggbXkgJGZ1bmN0aW9uIChAeyRpbnRlcmZhY2UtPmZ1bmN0aW9uc30pIHsKKyAgICAg
ICAgICAgICMgUExBVEZPUk1fSU9TCisgICAgICAgICAgICBteSAkbmVlZHNBcHBsZUNvcHlyaWdo
dCA9ICRmdW5jdGlvbi0+c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiQXBwbGVDb3B5
cmlnaHQifTsKKyAgICAgICAgICAgIGlmICgkbmVlZHNBcHBsZUNvcHlyaWdodCkgeworICAgICAg
ICAgICAgICAgIGlmICghJGluQXBwbGVDb3B5cmlnaHQpIHsKKyAgICAgICAgICAgICAgICAgICAg
cHVzaChAaGVhZGVyQ29udGVudCwgJGJlZ2luQXBwbGVDb3B5cmlnaHRGb3JIZWFkZXJGaWxlcyk7
CisgICAgICAgICAgICAgICAgICAgICRpbkFwcGxlQ29weXJpZ2h0ID0gMTsKKyAgICAgICAgICAg
ICAgICB9CisgICAgICAgICAgICB9IGVsc2lmICgkaW5BcHBsZUNvcHlyaWdodCkgeworICAgICAg
ICAgICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICRlbmRBcHBsZUNvcHlyaWdodCk7CisgICAg
ICAgICAgICAgICAgJGluQXBwbGVDb3B5cmlnaHQgPSAwOworICAgICAgICAgICAgfQorICAgICAg
ICAgICAgIyBlbmQgUExBVEZPUk1fSU9TCiAgICAgICAgICAgICBuZXh0IHVubGVzcyBIYXNDdXN0
b21NZXRob2QoJGZ1bmN0aW9uLT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcyk7CiAgICAg
ICAgICAgICBuZXh0IGlmICRmdW5jdGlvbi0+e292ZXJsb2Fkc30gJiYgJGZ1bmN0aW9uLT57b3Zl
cmxvYWRJbmRleH0gIT0gMTsKICAgICAgICAgICAgIG15ICRjb25kaXRpb25hbFN0cmluZyA9ICRj
b2RlR2VuZXJhdG9yLT5HZW5lcmF0ZUNvbmRpdGlvbmFsU3RyaW5nKCRmdW5jdGlvbi0+c2lnbmF0
dXJlKTsKQEAgLTg3Nyw2ICs5MzQsNyBAQCBzdWIgR2VuZXJhdGVIZWFkZXIKICAgICAgICAgICAg
IHB1c2goQGhlYWRlckNvbnRlbnQsICIgICAgIiAuICgkZnVuY3Rpb24tPmlzU3RhdGljID8gInN0
YXRpYyAiIDogIiIpIC4gIkpTQzo6SlNWYWx1ZSAiIC4gJGZ1bmN0aW9uSW1wbGVtZW50YXRpb25O
YW1lIC4gIihKU0M6OkV4ZWNTdGF0ZSopO1xuIik7CiAgICAgICAgICAgICBwdXNoKEBoZWFkZXJD
b250ZW50LCAiI2VuZGlmXG4iKSBpZiAkY29uZGl0aW9uYWxTdHJpbmc7CiAgICAgICAgIH0KKyAg
ICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgJGVuZEFwcGxlQ29weXJpZ2h0KSBpZiAkaW5BcHBs
ZUNvcHlyaWdodDsKICAgICB9CiAKICAgICBpZiAoISRoYXNQYXJlbnQpIHsKQEAgLTEwNDMsMTUg
KzExMDEsMjkgQEAgc3ViIEdlbmVyYXRlSGVhZGVyCiAgICAgfQogCiAgICAgaWYgKCRudW1GdW5j
dGlvbnMgPiAwKSB7CisgICAgICAgIG15ICRpbkFwcGxlQ29weXJpZ2h0ID0gMDsKICAgICAgICAg
cHVzaChAaGVhZGVyQ29udGVudCwiLy8gRnVuY3Rpb25zXG5cbiIpOwogICAgICAgICBmb3JlYWNo
IG15ICRmdW5jdGlvbiAoQHskaW50ZXJmYWNlLT5mdW5jdGlvbnN9KSB7CiAgICAgICAgICAgICBu
ZXh0IGlmICRmdW5jdGlvbi0+e292ZXJsb2FkSW5kZXh9ICYmICRmdW5jdGlvbi0+e292ZXJsb2Fk
SW5kZXh9ID4gMTsKKyAgICAgICAgICAgIG15ICRuZWVkc0FwcGxlQ29weXJpZ2h0ID0gJGZ1bmN0
aW9uLT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJBcHBsZUNvcHlyaWdodCJ9Owor
ICAgICAgICAgICAgaWYgKCRuZWVkc0FwcGxlQ29weXJpZ2h0KSB7CisgICAgICAgICAgICAgICAg
aWYgKCEkaW5BcHBsZUNvcHlyaWdodCkgeworICAgICAgICAgICAgICAgICAgICBwdXNoKEBoZWFk
ZXJDb250ZW50LCAkYmVnaW5BcHBsZUNvcHlyaWdodEZvckhlYWRlckZpbGVzKTsKKyAgICAgICAg
ICAgICAgICAgICAgJGluQXBwbGVDb3B5cmlnaHQgPSAxOworICAgICAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgIH0gZWxzaWYgKCRpbkFwcGxlQ29weXJpZ2h0KSB7CisgICAgICAgICAgICAgICAg
cHVzaChAaGVhZGVyQ29udGVudCwgJGVuZEFwcGxlQ29weXJpZ2h0KTsKKyAgICAgICAgICAgICAg
ICAkaW5BcHBsZUNvcHlyaWdodCA9IDA7CisgICAgICAgICAgICB9CisKICAgICAgICAgICAgIG15
ICRjb25kaXRpb25hbFN0cmluZyA9ICRjb2RlR2VuZXJhdG9yLT5HZW5lcmF0ZUNvbmRpdGlvbmFs
U3RyaW5nKCRmdW5jdGlvbi0+c2lnbmF0dXJlKTsKICAgICAgICAgICAgIHB1c2goQGhlYWRlckNv
bnRlbnQsICIjaWYgJHtjb25kaXRpb25hbFN0cmluZ31cbiIpIGlmICRjb25kaXRpb25hbFN0cmlu
ZzsKICAgICAgICAgICAgIG15ICRmdW5jdGlvbk5hbWUgPSBHZXRGdW5jdGlvbk5hbWUoJGNsYXNz
TmFtZSwgJGZ1bmN0aW9uKTsKICAgICAgICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICJKU0M6
OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgJHtmdW5jdGlvbk5hbWV9KEpTQzo6RXhlY1N0
YXRlKik7XG4iKTsKICAgICAgICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIjZW5kaWZcbiIp
IGlmICRjb25kaXRpb25hbFN0cmluZzsKICAgICAgICAgfQorCisgICAgICAgIHB1c2goQGhlYWRl
ckNvbnRlbnQsICRlbmRBcHBsZUNvcHlyaWdodCkgaWYgJGluQXBwbGVDb3B5cmlnaHQ7CiAgICAg
fQogCiAgICAgaWYgKCRudW1BdHRyaWJ1dGVzID4gMCB8fCAhJGludGVyZmFjZS0+ZXh0ZW5kZWRB
dHRyaWJ1dGVzLT57Ik5vSW50ZXJmYWNlT2JqZWN0In0pIHsKQEAgLTEwOTQsNiArMTE2NiwxMCBA
QCBzdWIgR2VuZXJhdGVIZWFkZXIKICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiXG59IC8vIG5h
bWVzcGFjZSBXZWJDb3JlXG5cbiIpOwogICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIjZW5kaWYg
Ly8gJHtjb25kaXRpb25hbFN0cmluZ31cblxuIikgaWYgJGNvbmRpdGlvbmFsU3RyaW5nOwogICAg
IHB1c2goQGhlYWRlckNvbnRlbnQsICIjZW5kaWZcbiIpOworCisgICAgaWYgKCRpbnRlcmZhY2Ut
PmV4dGVuZGVkQXR0cmlidXRlcy0+eyJBcHBsZUNvcHlyaWdodCJ9KSB7CisgICAgICAgIHB1c2go
QGhlYWRlckNvbnRlbnQsIHNwbGl0KCJcciIsICRlbmRBcHBsZUNvcHlyaWdodCkpOworICAgIH0K
IH0KIAogc3ViIEdlbmVyYXRlQXR0cmlidXRlc0hhc2hUYWJsZSgkJCkKQEAgLTIzODIsNyArMjQ1
OCwxOSBAQCBzdWIgR2VuZXJhdGVJbXBsZW1lbnRhdGlvbgogCiAgICAgIyBGdW5jdGlvbnMKICAg
ICBpZiAoJG51bUZ1bmN0aW9ucyA+IDApIHsKKyAgICAgICAgbXkgJGluQXBwbGVDb3B5cmlnaHQg
PSAwOwogICAgICAgICBmb3JlYWNoIG15ICRmdW5jdGlvbiAoQHskaW50ZXJmYWNlLT5mdW5jdGlv
bnN9KSB7CisgICAgICAgICAgICBteSAkbmVlZHNBcHBsZUNvcHlyaWdodCA9ICRmdW5jdGlvbi0+
c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiQXBwbGVDb3B5cmlnaHQifTsKKyAgICAg
ICAgICAgIGlmICgkbmVlZHNBcHBsZUNvcHlyaWdodCkgeworICAgICAgICAgICAgICAgIGlmICgh
JGluQXBwbGVDb3B5cmlnaHQpIHsKKyAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRl
bnQsICRiZWdpbkFwcGxlQ29weXJpZ2h0Rm9yU291cmNlRmlsZXMpOworICAgICAgICAgICAgICAg
ICAgICAkaW5BcHBsZUNvcHlyaWdodCA9IDE7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAg
ICAgfSBlbHNpZiAoJGluQXBwbGVDb3B5cmlnaHQpIHsKKyAgICAgICAgICAgICAgICBwdXNoKEBp
bXBsQ29udGVudCwgJGVuZEFwcGxlQ29weXJpZ2h0KTsKKyAgICAgICAgICAgICAgICAkaW5BcHBs
ZUNvcHlyaWdodCA9IDA7CisgICAgICAgICAgICB9CisKICAgICAgICAgICAgIG15ICRpc0N1c3Rv
bSA9IEhhc0N1c3RvbU1ldGhvZCgkZnVuY3Rpb24tPnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1
dGVzKTsKICAgICAgICAgICAgIG15ICRpc092ZXJsb2FkZWQgPSAkZnVuY3Rpb24tPntvdmVybG9h
ZHN9ICYmIEB7JGZ1bmN0aW9uLT57b3ZlcmxvYWRzfX0gPiAxOwogICAgICAgICAgICAgbXkgJHJh
aXNlc0V4Y2VwdGlvbiA9ICRmdW5jdGlvbi0+c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMt
PnsiUmFpc2VzRXhjZXB0aW9uIn07CkBAIC0yNDk3LDYgKzI1ODUsOSBAQCBzdWIgR2VuZXJhdGVJ
bXBsZW1lbnRhdGlvbgogICAgICAgICAgICAgfQogCiAgICAgICAgIH0KKworICAgICAgICBwdXNo
KEBpbXBsQ29udGVudCwgJGVuZEFwcGxlQ29weXJpZ2h0KSBpZiAkaW5BcHBsZUNvcHlyaWdodDsK
KwogICAgIH0KIAogICAgIGlmICgkbmVlZHNNYXJrQ2hpbGRyZW4gJiYgISRpbnRlcmZhY2UtPmV4
dGVuZGVkQXR0cmlidXRlcy0+eyJKU0N1c3RvbU1hcmtGdW5jdGlvbiJ9KSB7CkBAIC0zMjI5LDYg
KzMzMjAsMTAgQEAgc3ViIEdlbmVyYXRlQ2FsbGJhY2tJbXBsZW1lbnRhdGlvbgogICAgIHB1c2go
QGltcGxDb250ZW50LCAiXG59XG4iKTsKICAgICBteSAkY29uZGl0aW9uYWxTdHJpbmcgPSAkY29k
ZUdlbmVyYXRvci0+R2VuZXJhdGVDb25kaXRpb25hbFN0cmluZygkaW50ZXJmYWNlKTsKICAgICBw
dXNoKEBpbXBsQ29udGVudCwgIlxuI2VuZGlmIC8vICR7Y29uZGl0aW9uYWxTdHJpbmd9XG4iKSBp
ZiAkY29uZGl0aW9uYWxTdHJpbmc7CisKKyAgICBpZiAoJGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRy
aWJ1dGVzLT57IkFwcGxlQ29weXJpZ2h0In0pIHsKKyAgICAgICAgcHVzaChAaW1wbENvbnRlbnQs
IHNwbGl0KCJcciIsICRlbmRBcHBsZUNvcHlyaWdodCkpOworICAgIH0KIH0KIAogc3ViIEdlbmVy
YXRlSW1wbGVtZW50YXRpb25GdW5jdGlvbkNhbGwoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yT2JqQy5wbSBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvck9iakMucG0KaW5kZXggZWIxNTMyOTM0NWE4
YTBmMzlmYTdiOGUzMDlmZTQ1ZjFiMmNjMGYxYi4uODYxYzU2ZmJlMWVhOTI2ZGVlNjYzZGJiMmQw
MmQ5MmQ5NjIxZTNhNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy9Db2RlR2VuZXJhdG9yT2JqQy5wbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL0NvZGVHZW5lcmF0b3JPYmpDLnBtCkBAIC00OCwxMSArNDgsNDYgQEAgbXkgJXByaXZhdGVI
ZWFkZXJGb3J3YXJkRGVjbGFyYXRpb25zRm9yUHJvdG9jb2xzID0gKCk7CiAKIG15IEBpbnRlcm5h
bEhlYWRlckNvbnRlbnQgPSAoKTsKIAorbXkgQGltcGxDb25kaXRpb25hbEluY2x1ZGVzID0gKCk7
CiBteSBAaW1wbENvbnRlbnRIZWFkZXIgPSAoKTsKIG15IEBpbXBsQ29udGVudCA9ICgpOwogbXkg
JWltcGxJbmNsdWRlcyA9ICgpOwogbXkgQGRlcHNDb250ZW50ID0gKCk7CiAKK215ICRiZWdpbkFw
cGxlQ29weXJpZ2h0Rm9ySGVhZGVyRmlsZXMgPSA8PEVORDsKKy8vIC0tLS0tLS0gQmVnaW4gQXBw
bGUgQ29weXJpZ2h0IC0tLS0tLS0KKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDgsIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBQZXJtaXNzaW9uIGlzIGdyYW50ZWQgYnkg
QXBwbGUgdG8gdXNlIHRoaXMgZmlsZSB0byB0aGUgZXh0ZW50CisgKiBuZWNlc3NhcnkgdG8gcmVs
aW5rIHdpdGggTEdQTCBXZWJLaXQgZmlsZXMuCisgKgorICogTm8gbGljZW5zZSBvciByaWdodHMg
YXJlIGdyYW50ZWQgYnkgQXBwbGUgZXhwcmVzc2x5IG9yIGJ5CisgKiBpbXBsaWNhdGlvbiwgZXN0
b3BwZWwsIG9yIG90aGVyd2lzZSwgdG8gQXBwbGUgcGF0ZW50cyBhbmQKKyAqIHRyYWRlbWFya3Mu
IEZvciB0aGUgc2FrZSBvZiBjbGFyaXR5LCBubyBsaWNlbnNlIG9yIHJpZ2h0cyBhcmUKKyAqIGdy
YW50ZWQgYnkgQXBwbGUgZXhwcmVzc2x5IG9yIGJ5IGltcGxpY2F0aW9uLCBlc3RvcHBlbCwgb3Ig
b3RoZXJ3aXNlLAorICogdW5kZXIgYW55IEFwcGxlIHBhdGVudHMsIGNvcHlyaWdodHMgYW5kIHRy
YWRlbWFya3MgdG8gdW5kZXJseWluZworICogaW1wbGVtZW50YXRpb25zIG9mIGFueSBhcHBsaWNh
dGlvbiBwcm9ncmFtbWluZyBpbnRlcmZhY2VzIChBUElzKQorICogb3IgdG8gYW55IGZ1bmN0aW9u
YWxpdHkgdGhhdCBpcyBpbnZva2VkIGJ5IGNhbGxpbmcgYW55IEFQSS4KKyAqLworCitFTkQKK215
ICRiZWdpbkFwcGxlQ29weXJpZ2h0Rm9yU291cmNlRmlsZXMgPSA8PEVORDsKKy8vIC0tLS0tLS0g
QmVnaW4gQXBwbGUgQ29weXJpZ2h0IC0tLS0tLS0KKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDgs
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBObyBsaWNlbnNlIG9yIHJp
Z2h0cyBhcmUgZ3JhbnRlZCBieSBBcHBsZSBleHByZXNzbHkgb3IgYnkgaW1wbGljYXRpb24sCisg
KiBlc3RvcHBlbCwgb3Igb3RoZXJ3aXNlLCB0byBBcHBsZSBjb3B5cmlnaHRzLCBwYXRlbnRzLCB0
cmFkZW1hcmtzLCB0cmFkZQorICogc2VjcmV0cyBvciBvdGhlciByaWdodHMuCisgKi8KKworRU5E
CitteSAkZW5kQXBwbGVDb3B5cmlnaHQgICA9IDw8RU5EOworLy8gLS0tLS0tLSBFbmQgQXBwbGUg
Q29weXJpZ2h0ICAgLS0tLS0tLQorCitFTkQKKwogIyBIYXNoZXMKIG15ICVwcm90b2NvbFR5cGVI
YXNoID0gKCJYUGF0aE5TUmVzb2x2ZXIiID0+IDEsICJFdmVudExpc3RlbmVyIiA9PiAxLCAiRXZl
bnRUYXJnZXQiID0+IDEsICJOb2RlRmlsdGVyIiA9PiAxLAogICAgICAgICAgICAgICAgICAgICAg
ICAgIlNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcyIgPT4gMSwgCkBAIC03Niw2
ICsxMTEsNyBAQCBteSAlYmFzZVR5cGVIYXNoID0gKCJPYmplY3QiID0+IDEsICJOb2RlIiA9PiAx
LCAiTm9kZUxpc3QiID0+IDEsICJOYW1lZE5vZGVNYXAiCiAgICAgICAgICAgICAgICAgICAgICJT
VkdTdHJpbmdMaXN0IiA9PiAxLCAiU1ZHVHJhbnNmb3JtIiA9PiAxLCAiU1ZHVHJhbnNmb3JtTGlz
dCIgPT4gMSwgIlNWR1VuaXRUeXBlcyIgPT4gMSk7CiAKICMgQ29uc3RhbnRzCitteSAkYnVpbGRp
bmdGb3JJUGhvbmUgPSAoJEVOVntQTEFURk9STV9OQU1FfSBlcSAiaXBob25lb3MiIG9yICRFTlZ7
UExBVEZPUk1fTkFNRX0gZXEgImlwaG9uZXNpbXVsYXRvciIpOwogbXkgJG51bGxhYmxlSW5pdCA9
ICJib29sIGlzTnVsbCA9IGZhbHNlOyI7CiBteSAkZXhjZXB0aW9uSW5pdCA9ICJXZWJDb3JlOjpF
eGNlcHRpb25Db2RlIGVjID0gMDsiOwogbXkgJGpzQ29udGV4dFNldHRlciA9ICJXZWJDb3JlOjpK
U01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7IjsKQEAgLTIxNCw2ICsyNTAsMTggQEAgc3ViIFJl
YWRQdWJsaWNJbnRlcmZhY2VzCiAgICAgbXkgJGFjdHVhbFN1cGVyQ2xhc3M7CiAgICAgJXB1Ymxp
Y0ludGVyZmFjZXMgPSAoKTsKIAorICAgIG15IEBhcmdzID0gcXcoLUUgLVAgLXggb2JqZWN0aXZl
LWMpOworICAgICMgU2V0IGluY2x1ZGUgcGF0aCB0byBmaW5kIDx3dGYvUGxhdGZvcm0uaD4uICBX
ZSBzZWFyY2ggQlVJTFRfUFJPRFVDVFNfRElSCisgICAgIyBmaXJzdCBmb3IgbG9jYWwgZGV2ZWxv
cGVyIGJ1aWxkcywgdGhlbiB0aGUgaW5zdGFsbGF0aW9uIHBhdGggZm9yIEImSQorICAgICMgYnVp
bGRzLgorICAgIHB1c2goQGFyZ3MsICItSSIgLiAkRU5We0JVSUxUX1BST0RVQ1RTX0RJUn0gLiAi
L3Vzci9sb2NhbC9pbmNsdWRlIikgaWYgJEVOVntCVUlMVF9QUk9EVUNUU19ESVJ9OworICAgIHB1
c2goQGFyZ3MsICItSSIgLiAkRU5We0JVSUxUX1BST0RVQ1RTX0RJUn0gLiAkRU5We1NES1JPT1R9
IC4gIi91c3IvbG9jYWwvaW5jbHVkZSIpIGlmICRFTlZ7QlVJTFRfUFJPRFVDVFNfRElSfTsKKwor
ICAgICMgWGNvZGUgMy4xIGlzIHJlcXVpcmVkIGZvciBTREtST09UIHRvIGJlIHNldC4KKyAgICBp
ZiAoJEVOVntTREtST09UfSAmJiAkRU5We1NZU1RFTV9MSUJSQVJZX0RJUn0pIHsKKyAgICAgICAg
cHVzaChAYXJncywgIi1JIiAuICRFTlZ7QlVJTFRfUFJPRFVDVFNfRElSfSAuICRFTlZ7U0RLUk9P
VH0gLiAiL3Vzci9sb2NhbC9pbmNsdWRlIikgaWYgJEVOVntCVUlMVF9QUk9EVUNUU19ESVJ9Owor
ICAgICAgICBwdXNoKEBhcmdzLCAiLUkiIC4gJEVOVntTREtST09UfSAuICIvdXNyL2xvY2FsL2lu
Y2x1ZGUiKTsKKyAgICB9CiAgICAgbXkgJGZpbGVOYW1lID0gIldlYkNvcmUvYmluZGluZ3Mvb2Jq
Yy9QdWJsaWNET01JbnRlcmZhY2VzLmgiOwogICAgIG15ICRnY2NMb2NhdGlvbiA9ICIiOwogICAg
IGlmICgkRU5We0NDfSkgewpAQCAtMjI1LDcgKzI3MywxMyBAQCBzdWIgUmVhZFB1YmxpY0ludGVy
ZmFjZXMKICAgICB9IGVsc2UgewogICAgICAgICAkZ2NjTG9jYXRpb24gPSAiL3Vzci9iaW4vZ2Nj
IjsKICAgICB9Ci0gICAgb3BlbiBGSUxFLCAiLXwiLCAkZ2NjTG9jYXRpb24sICItRSIsICItUCIs
ICIteCIsICJvYmplY3RpdmUtYyIsCisKKyAgICBpZiAoJEVOVntTREtST09UfSkgeworICAgICAg
ICAjIFBMQVRGT1JNKElPUykKKyAgICAgICAgcHVzaChAYXJncywgIi1pc3lzcm9vdCIsICRFTlZ7
U0RLUk9PVH0pOworICAgIH0KKworICAgIG9wZW4gRklMRSwgIi18IiwgJGdjY0xvY2F0aW9uLCBA
YXJncywKICAgICAgICAgKG1hcCB7ICItRCRfIiB9IHNwbGl0KC8gKy8sICRkZWZpbmVzKSksICIt
RE9CSkNfQ09ERV9HRU5FUkFUSU9OIiwgJGZpbGVOYW1lIG9yIGRpZSAiQ291bGQgbm90IG9wZW4g
JGZpbGVOYW1lIjsKICAgICBteSBAZG9jdW1lbnRDb250ZW50ID0gPEZJTEU+OwogICAgIGNsb3Nl
IEZJTEU7CkBAIC0zNTMsNiArNDA3LDcgQEAgc3ViIEdldENsYXNzTmFtZQogCiAgICAgIyBzcGVj
aWFsIGNhc2VzCiAgICAgcmV0dXJuICJOU1N0cmluZyIgaWYgJGNvZGVHZW5lcmF0b3ItPklzU3Ry
aW5nVHlwZSgkbmFtZSkgb3IgJG5hbWUgZXEgIlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSI7CisgICAg
cmV0dXJuICJDR0NvbG9yUmVmIiBpZiAkbmFtZSBlcSAiQ29sb3IiIGFuZCAkYnVpbGRpbmdGb3JJ
UGhvbmU7CiAgICAgcmV0dXJuICJOUyRuYW1lIiBpZiBJc05hdGl2ZU9iakNUeXBlKCRuYW1lKTsK
ICAgICByZXR1cm4gIkJPT0wiIGlmICRuYW1lIGVxICJib29sZWFuIjsKICAgICByZXR1cm4gInVu
c2lnbmVkIGNoYXIiIGlmICRuYW1lIGVxICJvY3RldCI7CkBAIC00ODMsNiArNTM4LDE0IEBAIHN1
YiBJc05hdGl2ZU9iakNUeXBlCiAgICAgcmV0dXJuIDA7CiB9CiAKK3N1YiBJc0NvcmVGb3VuZGF0
aW9uVHlwZQoreworICAgIG15ICR0eXBlID0gc2hpZnQ7CisKKyAgICByZXR1cm4gMSBpZiAkdHlw
ZSA9fiAvXihDRnxDRylbQS1aYS16XStSZWYkLzsKKyAgICByZXR1cm4gMDsKK30KKwogc3ViIFNr
aXBGdW5jdGlvbgogewogICAgIG15ICRmdW5jdGlvbiA9IHNoaWZ0OwpAQCAtNTE4LDcgKzU4MSw2
IEBAIHN1YiBTa2lwQXR0cmlidXRlCiAgICAgcmV0dXJuIDA7CiB9CiAKLQogc3ViIEdldE9iakNU
eXBlCiB7CiAgICAgbXkgJHR5cGUgPSBzaGlmdDsKQEAgLTUyNyw2ICs1ODksNyBAQCBzdWIgR2V0
T2JqQ1R5cGUKICAgICByZXR1cm4gImlkIDwkbmFtZT4iIGlmIElzUHJvdG9jb2xUeXBlKCR0eXBl
KTsKICAgICByZXR1cm4gJG5hbWUgaWYgJGNvZGVHZW5lcmF0b3ItPklzUHJpbWl0aXZlVHlwZSgk
dHlwZSkgb3IgJHR5cGUgZXEgIkRPTVRpbWVTdGFtcCI7CiAgICAgcmV0dXJuICJ1bnNpZ25lZCBz
aG9ydCIgaWYgJHR5cGUgZXEgIkNvbXBhcmVIb3ciOworICAgIHJldHVybiAkbmFtZSBpZiBJc0Nv
cmVGb3VuZGF0aW9uVHlwZSgkbmFtZSk7CiAgICAgcmV0dXJuICIkbmFtZSAqIjsKIH0KIApAQCAt
NjEyLDcgKzY3NSwxMSBAQCBzdWIgQWRkSW5jbHVkZXNGb3JUeXBlCiAKICAgICBpZiAoSXNOYXRp
dmVPYmpDVHlwZSgkdHlwZSkpIHsKICAgICAgICAgaWYgKCR0eXBlIGVxICJDb2xvciIpIHsKLSAg
ICAgICAgICAgICRpbXBsSW5jbHVkZXN7IkNvbG9yTWFjLmgifSA9IDE7CisgICAgICAgICAgICBp
ZiAoJGJ1aWxkaW5nRm9ySVBob25lKSB7CisgICAgICAgICAgICAgICAgJGltcGxJbmNsdWRlc3si
Q29sb3JTcGFjZS5oIn0gPSAxOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAg
ICAkaW1wbEluY2x1ZGVzeyJDb2xvck1hYy5oIn0gPSAxOworICAgICAgICAgICAgfQogICAgICAg
ICB9CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC03NTIsNyArODE5LDExIEBAIHN1YiBHZW5l
cmF0ZUhlYWRlcgogICAgIG15ICRudW1GdW5jdGlvbnMgPSBAeyRpbnRlcmZhY2UtPmZ1bmN0aW9u
c307CiAKICAgICAjIC0gQWRkIGRlZmF1bHQgaGVhZGVyIHRlbXBsYXRlCi0gICAgQGhlYWRlckNv
bnRlbnRIZWFkZXIgPSBzcGxpdCgiXHIiLCAkaGVhZGVyTGljZW5zZVRlbXBsYXRlKTsKKyAgICBp
ZiAoJGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkFwcGxlQ29weXJpZ2h0In0pIHsK
KyAgICAgICAgQGhlYWRlckNvbnRlbnRIZWFkZXIgPSBzcGxpdCgiXHIiLCAkYmVnaW5BcHBsZUNv
cHlyaWdodEZvckhlYWRlckZpbGVzKTsKKyAgICB9IGVsc2UgeworICAgICAgICBAaGVhZGVyQ29u
dGVudEhlYWRlciA9IHNwbGl0KCJcciIsICRoZWFkZXJMaWNlbnNlVGVtcGxhdGUpOworICAgIH0K
ICAgICBwdXNoKEBoZWFkZXJDb250ZW50SGVhZGVyLCAiXG4iKTsKIAogICAgICMgLSBJTkNMVURF
UyAtCkBAIC04NDgsNiArOTE5LDExIEBAIHN1YiBHZW5lcmF0ZUhlYWRlcgogCiAgICAgICAgICAg
ICBteSAkcHVibGljSW50ZXJmYWNlS2V5ID0gJHByb3BlcnR5IC4gIjsiOwogCisgICAgICAgICAg
ICAjIEZJWE1FOiBUaGlzIG9ubHkgd29ya3MgZm9yIHRoZSBnZXR0ZXIsIGJ1dCBub3QgdGhlIHNl
dHRlci4gIE5lZWQgdG8gcmVmYWN0b3IgdGhpcyBjb2RlLgorICAgICAgICAgICAgaWYgKCRidWls
ZGluZ0ZvclRpZ2VyT3JFYXJsaWVyICYmICEkYnVpbGRpbmdGb3JJUGhvbmUgfHwgSXNDb3JlRm91
bmRhdGlvblR5cGUoJGF0dHJpYnV0ZVR5cGUpKSB7CisgICAgICAgICAgICAgICAgJHB1YmxpY0lu
dGVyZmFjZUtleSA9ICItICgiIC4gJGF0dHJpYnV0ZVR5cGUgLiAiKSIgLiAkYXR0cmlidXRlTmFt
ZSAuICI7IjsKKyAgICAgICAgICAgIH0KKwogICAgICAgICAgICAgbXkgJGF2YWlsYWJpbGl0eU1h
Y3JvID0gIiI7CiAgICAgICAgICAgICBpZiAoZGVmaW5lZCAkcHVibGljSW50ZXJmYWNlc3skcHVi
bGljSW50ZXJmYWNlS2V5fSBhbmQgbGVuZ3RoICRwdWJsaWNJbnRlcmZhY2VzeyRwdWJsaWNJbnRl
cmZhY2VLZXl9KSB7CiAgICAgICAgICAgICAgICAgJGF2YWlsYWJpbGl0eU1hY3JvID0gJHB1Ymxp
Y0ludGVyZmFjZXN7JHB1YmxpY0ludGVyZmFjZUtleX07CkBAIC04NzUsOSArOTUxLDM0IEBAIHN1
YiBHZW5lcmF0ZUhlYWRlcgogICAgICAgICAgICAgICAgICRmYXRhbEVycm9yID0gMTsKICAgICAg
ICAgICAgIH0KIAotICAgICAgICAgICAgJHByb3BlcnR5IC49ICRkZWNsYXJhdGlvblN1ZmZpeDsK
LSAgICAgICAgICAgIHB1c2goQGhlYWRlckF0dHJpYnV0ZXMsICRwcm9wZXJ0eSkgaWYgJHB1Ymxp
YzsKLSAgICAgICAgICAgIHB1c2goQHByaXZhdGVIZWFkZXJBdHRyaWJ1dGVzLCAkcHJvcGVydHkp
IHVubGVzcyAkcHVibGljOworICAgICAgICAgICAgaWYgKCFJc0NvcmVGb3VuZGF0aW9uVHlwZSgk
YXR0cmlidXRlVHlwZSkpIHsKKyAgICAgICAgICAgICAgICAkcHJvcGVydHkgLj0gJGRlY2xhcmF0
aW9uU3VmZml4OworICAgICAgICAgICAgICAgIHB1c2goQGhlYWRlckF0dHJpYnV0ZXMsICRwcm9w
ZXJ0eSkgaWYgJHB1YmxpYzsKKyAgICAgICAgICAgICAgICBwdXNoKEBwcml2YXRlSGVhZGVyQXR0
cmlidXRlcywgJHByb3BlcnR5KSB1bmxlc3MgJHB1YmxpYzsKKyAgICAgICAgICAgIH0gZWxzZSB7
CisgICAgICAgICAgICAgICAgbXkgJGF0dHJpYnV0ZUNvbmRpdGlvbmFsU3RyaW5nID0gJGNvZGVH
ZW5lcmF0b3ItPkdlbmVyYXRlQ29uZGl0aW9uYWxTdHJpbmcoJGF0dHJpYnV0ZS0+c2lnbmF0dXJl
KTsKKyAgICAgICAgICAgICAgICBpZiAoJGF0dHJpYnV0ZUNvbmRpdGlvbmFsU3RyaW5nKSB7Cisg
ICAgICAgICAgICAgICAgICAgIHB1c2goQGhlYWRlckF0dHJpYnV0ZXMsICIjaWYgJHthdHRyaWJ1
dGVDb25kaXRpb25hbFN0cmluZ31cbiIpIGlmICRwdWJsaWM7CisgICAgICAgICAgICAgICAgICAg
IHB1c2goQHByaXZhdGVIZWFkZXJBdHRyaWJ1dGVzLCAiI2lmICR7YXR0cmlidXRlQ29uZGl0aW9u
YWxTdHJpbmd9XG4iKSB1bmxlc3MgJHB1YmxpYzsKKyAgICAgICAgICAgICAgICB9CisgCisgICAg
ICAgICAgICAgICAgIyAtIEdFVFRFUgorICAgICAgICAgICAgICAgIG15ICRnZXR0ZXIgPSAiLSAo
IiAuICRhdHRyaWJ1dGVUeXBlIC4gIikiIC4gJGF0dHJpYnV0ZU5hbWUgLiAkZGVjbGFyYXRpb25T
dWZmaXg7CisgICAgICAgICAgICAgICAgcHVzaChAaGVhZGVyQXR0cmlidXRlcywgJGdldHRlcikg
aWYgJHB1YmxpYzsKKyAgICAgICAgICAgICAgICBwdXNoKEBwcml2YXRlSGVhZGVyQXR0cmlidXRl
cywgJGdldHRlcikgdW5sZXNzICRwdWJsaWM7CisgCisgICAgICAgICAgICAgICAgIyAtIFNFVFRF
UgorICAgICAgICAgICAgICAgIGlmICghJGF0dHJpYnV0ZS0+aXNSZWFkT25seSkgeworICAgICAg
ICAgICAgICAgICAgICBteSAkc2V0dGVyID0gIi0gKHZvaWQpJHNldHRlck5hbWUoIiAuICRhdHRy
aWJ1dGVUeXBlIC4gIiluZXciIC4gdWNmaXJzdCgkYXR0cmlidXRlTmFtZSkgLiAkZGVjbGFyYXRp
b25TdWZmaXg7CisgICAgICAgICAgICAgICAgICAgIHB1c2goQGhlYWRlckF0dHJpYnV0ZXMsICRz
ZXR0ZXIpIGlmICRwdWJsaWM7CisgICAgICAgICAgICAgICAgICAgIHB1c2goQHByaXZhdGVIZWFk
ZXJBdHRyaWJ1dGVzLCAkc2V0dGVyKSB1bmxlc3MgJHB1YmxpYzsKKyAgICAgICAgICAgICAgICB9
CisgCisgICAgICAgICAgICAgICAgaWYgKCRhdHRyaWJ1dGVDb25kaXRpb25hbFN0cmluZykgewor
ICAgICAgICAgICAgICAgICAgICBwdXNoKEBoZWFkZXJBdHRyaWJ1dGVzLCAiI2VuZGlmXG4iKSBp
ZiAkcHVibGljOworICAgICAgICAgICAgICAgICAgICBwdXNoKEBwcml2YXRlSGVhZGVyQXR0cmli
dXRlcywgIiNlbmRpZlxuIikgdW5sZXNzICRwdWJsaWM7CisgICAgICAgICAgICAgICAgfQorICAg
ICAgICAgICAgfQogICAgICAgICB9CiAKICAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgQGhl
YWRlckF0dHJpYnV0ZXMpIGlmIEBoZWFkZXJBdHRyaWJ1dGVzID4gMDsKQEAgLTg4OSw2ICs5OTAs
NyBAQCBzdWIgR2VuZXJhdGVIZWFkZXIKIAogICAgICMgLSBBZGQgZnVuY3Rpb25zLgogICAgIGlm
ICgkbnVtRnVuY3Rpb25zID4gMCkgeworICAgICAgICBteSAlaW5BcHBsZUNvcHlyaWdodCA9IChw
dWJsaWMgPT4gMCwgcHJpdmF0ZSA9PiAwKTsKICAgICAgICAgZm9yZWFjaCBteSAkZnVuY3Rpb24g
KEB7JGludGVyZmFjZS0+ZnVuY3Rpb25zfSkgewogICAgICAgICAgICAgbmV4dCBpZiBTa2lwRnVu
Y3Rpb24oJGZ1bmN0aW9uKTsKICAgICAgICAgICAgIG5leHQgaWYgKCRmdW5jdGlvbi0+c2lnbmF0
dXJlLT5uYW1lIGVxICJzZXQiIGFuZCAkaW50ZXJmYWNlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsi
VHlwZWRBcnJheSJ9KTsKQEAgLTg5Niw2ICs5OTgsNyBAQCBzdWIgR2VuZXJhdGVIZWFkZXIKIAog
ICAgICAgICAgICAgbXkgJHJldHVyblR5cGUgPSBHZXRPYmpDVHlwZSgkZnVuY3Rpb24tPnNpZ25h
dHVyZS0+dHlwZSk7CiAgICAgICAgICAgICBteSAkbmVlZHNEZXByZWNhdGVkVmVyc2lvbiA9IChA
eyRmdW5jdGlvbi0+cGFyYW1ldGVyc30gPiAxIGFuZCAkZnVuY3Rpb24tPnNpZ25hdHVyZS0+ZXh0
ZW5kZWRBdHRyaWJ1dGVzLT57Ik9iakNMZWdhY3lVbm5hbWVkUGFyYW1ldGVycyJ9KTsKKyAgICAg
ICAgICAgIG15ICRuZWVkc0FwcGxlQ29weXJpZ2h0ID0gJGZ1bmN0aW9uLT5zaWduYXR1cmUtPmV4
dGVuZGVkQXR0cmlidXRlcy0+eyJBcHBsZUNvcHlyaWdodCJ9OwogICAgICAgICAgICAgbXkgJG51
bWJlck9mUGFyYW1ldGVycyA9IEB7JGZ1bmN0aW9uLT5wYXJhbWV0ZXJzfTsKICAgICAgICAgICAg
IG15ICV0eXBlc1RvRm9yd2FyZERlY2xhcmUgPSAoJGZ1bmN0aW9uLT5zaWduYXR1cmUtPnR5cGUg
PT4gMSk7CiAKQEAgLTk1MCw2ICsxMDUzLDE4IEBAIHN1YiBHZW5lcmF0ZUhlYWRlcgogICAgICAg
ICAgICAgICAgIEFkZEZvcndhcmREZWNsYXJhdGlvbnNGb3JUeXBlKCR0eXBlLCAkcHVibGljKSB1
bmxlc3MgJHB1YmxpYyBhbmQgJG5lZWRzRGVwcmVjYXRlZFZlcnNpb247CiAgICAgICAgICAgICB9
CiAKKyAgICAgICAgICAgIGlmICgkbmVlZHNBcHBsZUNvcHlyaWdodCkgeworICAgICAgICAgICAg
ICAgIGlmICghJGluQXBwbGVDb3B5cmlnaHR7JHB1YmxpYyA/ICJwdWJsaWMiIDogInByaXZhdGUi
fSkgeworICAgICAgICAgICAgICAgICAgICBwdXNoKEBoZWFkZXJGdW5jdGlvbnMsICRiZWdpbkFw
cGxlQ29weXJpZ2h0Rm9ySGVhZGVyRmlsZXMpIGlmICRwdWJsaWM7CisgICAgICAgICAgICAgICAg
ICAgIHB1c2goQHByaXZhdGVIZWFkZXJGdW5jdGlvbnMsICRiZWdpbkFwcGxlQ29weXJpZ2h0Rm9y
SGVhZGVyRmlsZXMpIHVubGVzcyAkcHVibGljOworICAgICAgICAgICAgICAgICAgICAkaW5BcHBs
ZUNvcHlyaWdodHskcHVibGljID8gInB1YmxpYyIgOiAicHJpdmF0ZSJ9ID0gMTsKKyAgICAgICAg
ICAgICAgICB9CisgICAgICAgICAgICB9IGVsc2lmICgkaW5BcHBsZUNvcHlyaWdodHskcHVibGlj
ID8gInB1YmxpYyIgOiAicHJpdmF0ZSJ9KSB7CisgICAgICAgICAgICAgICAgcHVzaChAaGVhZGVy
RnVuY3Rpb25zLCAkZW5kQXBwbGVDb3B5cmlnaHQpIGlmICRwdWJsaWM7CisgICAgICAgICAgICAg
ICAgcHVzaChAcHJpdmF0ZUhlYWRlckZ1bmN0aW9ucywgJGVuZEFwcGxlQ29weXJpZ2h0KSB1bmxl
c3MgJHB1YmxpYzsKKyAgICAgICAgICAgICAgICAkaW5BcHBsZUNvcHlyaWdodHskcHVibGljID8g
InB1YmxpYyIgOiAicHJpdmF0ZSJ9ID0gMDsKKwkJCX0KKwogICAgICAgICAgICAgbXkgJGZ1bmN0
aW9uQ29uZGl0aW9uYWxTdHJpbmcgPSAkY29kZUdlbmVyYXRvci0+R2VuZXJhdGVDb25kaXRpb25h
bFN0cmluZygkZnVuY3Rpb24tPnNpZ25hdHVyZSk7CiAgICAgICAgICAgICBpZiAoJGZ1bmN0aW9u
Q29uZGl0aW9uYWxTdHJpbmcpIHsKICAgICAgICAgICAgICAgICBwdXNoKEBoZWFkZXJGdW5jdGlv
bnMsICIjaWYgJHtmdW5jdGlvbkNvbmRpdGlvbmFsU3RyaW5nfVxuIikgaWYgJHB1YmxpYzsKQEAg
LTk5MSw2ICsxMTA2LDkgQEAgc3ViIEdlbmVyYXRlSGVhZGVyCiAgICAgICAgICAgICB9CiAgICAg
ICAgIH0KIAorICAgICAgICBwdXNoKEBoZWFkZXJGdW5jdGlvbnMsICRlbmRBcHBsZUNvcHlyaWdo
dCkgaWYgJGluQXBwbGVDb3B5cmlnaHR7InB1YmxpYyJ9OworICAgICAgICBwdXNoKEBwcml2YXRl
SGVhZGVyRnVuY3Rpb25zLCAkZW5kQXBwbGVDb3B5cmlnaHQpIGlmICRpbkFwcGxlQ29weXJpZ2h0
eyJwcml2YXRlIn07CisKICAgICAgICAgaWYgKEBoZWFkZXJGdW5jdGlvbnMgPiAwKSB7CiAgICAg
ICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiXG4iKSBpZiBAaGVhZGVyQXR0cmlidXRlcyA+
IDA7CiAgICAgICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCBAaGVhZGVyRnVuY3Rpb25zKTsK
QEAgLTEwMTEsMTEgKzExMjksMTkgQEAgc3ViIEdlbmVyYXRlSGVhZGVyCiAgICAgICAgIHB1c2go
QGhlYWRlckNvbnRlbnQsICJcQGVuZFxuIik7CiAgICAgfQogCisgICAgaWYgKCRpbnRlcmZhY2Ut
PmV4dGVuZGVkQXR0cmlidXRlcy0+eyJBcHBsZUNvcHlyaWdodCJ9KSB7CisgICAgICAgIHB1c2go
QGhlYWRlckNvbnRlbnQsIHNwbGl0KCJcciIsICRlbmRBcHBsZUNvcHlyaWdodCkpOworICAgIH0K
KwogICAgIG15ICVhbHdheXNHZW5lcmF0ZUZvck5vU1ZHQnVpbGQgPSBtYXAgeyAkXyA9PiAxIH0g
cXcoRE9NSFRNTEVtYmVkRWxlbWVudCBET01IVE1MT2JqZWN0RWxlbWVudCk7CiAKICAgICBpZiAo
QHByaXZhdGVIZWFkZXJBdHRyaWJ1dGVzID4gMCBvciBAcHJpdmF0ZUhlYWRlckZ1bmN0aW9ucyA+
IDAgb3IgZXhpc3RzICRhbHdheXNHZW5lcmF0ZUZvck5vU1ZHQnVpbGR7JGNsYXNzTmFtZX0pIHsK
ICAgICAgICAgIyAtIFByaXZhdGUgY2F0ZWdvcnkgQGludGVyZmFjZQotICAgICAgICBAcHJpdmF0
ZUhlYWRlckNvbnRlbnRIZWFkZXIgPSBzcGxpdCgiXHIiLCAkaGVhZGVyTGljZW5zZVRlbXBsYXRl
KTsKKyAgICAgICAgaWYgKCRpbnRlcmZhY2UtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJBcHBsZUNv
cHlyaWdodCJ9KSB7CisgICAgICAgICAgICBAcHJpdmF0ZUhlYWRlckNvbnRlbnRIZWFkZXIgPSBz
cGxpdCgiXHIiLCAkYmVnaW5BcHBsZUNvcHlyaWdodEZvckhlYWRlckZpbGVzKTsKKyAgICAgICAg
fSBlbHNlIHsKKyAgICAgICAgICAgIEBwcml2YXRlSGVhZGVyQ29udGVudEhlYWRlciA9IHNwbGl0
KCJcciIsICRoZWFkZXJMaWNlbnNlVGVtcGxhdGUpOworICAgICAgICB9CiAgICAgICAgIHB1c2go
QHByaXZhdGVIZWFkZXJDb250ZW50SGVhZGVyLCAiXG4iKTsKIAogICAgICAgICBteSAkY2xhc3NI
ZWFkZXJOYW1lID0gR2V0Q2xhc3NIZWFkZXJOYW1lKCRjbGFzc05hbWUpOwpAQCAtMTAyNyw2ICsx
MTUzLDEwIEBAIHN1YiBHZW5lcmF0ZUhlYWRlcgogICAgICAgICBwdXNoKEBwcml2YXRlSGVhZGVy
Q29udGVudCwgIlxuIikgaWYgQHByaXZhdGVIZWFkZXJBdHRyaWJ1dGVzID4gMCBhbmQgQHByaXZh
dGVIZWFkZXJGdW5jdGlvbnMgPiAwOwogICAgICAgICBwdXNoKEBwcml2YXRlSGVhZGVyQ29udGVu
dCwgQHByaXZhdGVIZWFkZXJGdW5jdGlvbnMpIGlmIEBwcml2YXRlSGVhZGVyRnVuY3Rpb25zID4g
MDsKICAgICAgICAgcHVzaChAcHJpdmF0ZUhlYWRlckNvbnRlbnQsICJcQGVuZFxuIik7CisKKyAg
ICAgICAgaWYgKCRpbnRlcmZhY2UtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJBcHBsZUNvcHlyaWdo
dCJ9KSB7CisgICAgICAgICAgICBwdXNoKEBwcml2YXRlSGVhZGVyQ29udGVudCwgc3BsaXQoIlxy
IiwgJGVuZEFwcGxlQ29weXJpZ2h0KSk7CisgICAgICAgIH0KICAgICB9CiAKICAgICB1bmxlc3Mg
KCRpc1Byb3RvY29sKSB7CkBAIC0xMDM5LDcgKzExNjksMTEgQEAgc3ViIEdlbmVyYXRlSGVhZGVy
CiAgICAgICAgICRpbXBsVHlwZSA9ICRzdmdOYXRpdmVUeXBlIGlmICRzdmdOYXRpdmVUeXBlOwog
CiAgICAgICAgICMgR2VuZXJhdGUgaW50ZXJmYWNlIGRlZmluaXRpb25zLiAKLSAgICAgICAgQGlu
dGVybmFsSGVhZGVyQ29udGVudCA9IHNwbGl0KCJcciIsICRpbXBsZW1lbnRhdGlvbkxpY2Vuc2VU
ZW1wbGF0ZSk7CisgICAgICAgIGlmICgkaW50ZXJmYWNlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsi
QXBwbGVDb3B5cmlnaHQifSkgeworICAgICAgICAgICAgQGludGVybmFsSGVhZGVyQ29udGVudCA9
IHNwbGl0KCJcciIsICRiZWdpbkFwcGxlQ29weXJpZ2h0Rm9ySGVhZGVyRmlsZXMpOworICAgICAg
ICB9IGVsc2UgeworICAgICAgICAgICAgQGludGVybmFsSGVhZGVyQ29udGVudCA9IHNwbGl0KCJc
ciIsICRpbXBsZW1lbnRhdGlvbkxpY2Vuc2VUZW1wbGF0ZSk7CisgICAgICAgIH0KIAogICAgICAg
ICBwdXNoKEBpbnRlcm5hbEhlYWRlckNvbnRlbnQsICJcbiNpbXBvcnQgPFdlYkNvcmUvJGNsYXNz
TmFtZS5oPlxuXG4iKTsKICAgICAgICAgcHVzaChAaW50ZXJuYWxIZWFkZXJDb250ZW50LCAiI2lt
cG9ydCA8V2ViQ29yZS9TVkdBbmltYXRlZFByb3BlcnR5VGVhck9mZi5oPlxuXG4iKSBpZiAkc3Zn
UHJvcGVydHlUeXBlOwpAQCAtMTEwOCw3ICsxMjQyLDExIEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVu
dGF0aW9uCiAgICAgJGltcGxUeXBlID0gJHN2Z05hdGl2ZVR5cGUgaWYgJHN2Z05hdGl2ZVR5cGU7
CiAKICAgICAjIC0gQWRkIGRlZmF1bHQgaGVhZGVyIHRlbXBsYXRlLgotICAgIEBpbXBsQ29udGVu
dEhlYWRlciA9IHNwbGl0KCJcciIsICRpbXBsZW1lbnRhdGlvbkxpY2Vuc2VUZW1wbGF0ZSk7Cisg
ICAgaWYgKCRpbnRlcmZhY2UtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJBcHBsZUNvcHlyaWdodCJ9
KSB7CisgICAgICAgIEBpbXBsQ29udGVudEhlYWRlciA9IHNwbGl0KCJcciIsICRiZWdpbkFwcGxl
Q29weXJpZ2h0Rm9yU291cmNlRmlsZXMpOworICAgIH0gZWxzZSB7CisgICAgICAgIEBpbXBsQ29u
dGVudEhlYWRlciA9IHNwbGl0KCJcciIsICRpbXBsZW1lbnRhdGlvbkxpY2Vuc2VUZW1wbGF0ZSk7
CisgICAgfQogCiAgICAgIyAtIElOQ0xVREVTIC0KICAgICBwdXNoKEBpbXBsQ29udGVudEhlYWRl
ciwgIlxuI2ltcG9ydCBcImNvbmZpZy5oXCJcbiIpOwpAQCAtMTMzNSw4ICsxNDczLDEzIEBAIHN1
YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uCiAgICAgICAgICAgICAgICAgJGdldHRlckNvbnRlbnRI
ZWFkID0gImtpdCgkZ2V0dGVyQ29udGVudEhlYWQiOwogICAgICAgICAgICAgICAgICRnZXR0ZXJD
b250ZW50VGFpbCAuPSAiKSI7CiAgICAgICAgICAgICB9IGVsc2lmICgkaWRsVHlwZSBlcSAiQ29s
b3IiKSB7Ci0gICAgICAgICAgICAgICAgJGdldHRlckNvbnRlbnRIZWFkID0gIldlYkNvcmU6Om5z
Q29sb3IoJGdldHRlckNvbnRlbnRIZWFkIjsKLSAgICAgICAgICAgICAgICAkZ2V0dGVyQ29udGVu
dFRhaWwgLj0gIikiOworICAgICAgICAgICAgICAgIGlmICgkYnVpbGRpbmdGb3JJUGhvbmUpIHsK
KyAgICAgICAgICAgICAgICAgICAgJGdldHRlckNvbnRlbnRIZWFkID0gIldlYkNvcmU6OmNhY2hl
ZENHQ29sb3IoJGdldHRlckNvbnRlbnRIZWFkIjsKKyAgICAgICAgICAgICAgICAgICAgJGdldHRl
ckNvbnRlbnRUYWlsIC49ICIsIFdlYkNvcmU6OkNvbG9yU3BhY2VEZXZpY2VSR0IpIjsKKyAgICAg
ICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICAkZ2V0dGVyQ29udGVudEhl
YWQgPSAiV2ViQ29yZTo6bnNDb2xvcigkZ2V0dGVyQ29udGVudEhlYWQiOworICAgICAgICAgICAg
ICAgICAgICAkZ2V0dGVyQ29udGVudFRhaWwgLj0gIikiOworICAgICAgICAgICAgICAgIH0KICAg
ICAgICAgICAgIH0gZWxzaWYgKCRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+dHlwZSBlcSAiU2VyaWFs
aXplZFNjcmlwdFZhbHVlIikgewogICAgICAgICAgICAgICAgICRnZXR0ZXJDb250ZW50SGVhZCA9
ICIkZ2V0dGVyQ29udGVudEhlYWQiOwogICAgICAgICAgICAgICAgICRnZXR0ZXJDb250ZW50VGFp
bCAuPSAiLT50b1N0cmluZygpIjsgICAgICAgICAgICAgICAgCkBAIC0xNTA3LDYgKzE2NTAsNyBA
QCBzdWIgR2VuZXJhdGVJbXBsZW1lbnRhdGlvbgogCiAgICAgIyAtIEZ1bmN0aW9ucwogICAgIGlm
ICgkbnVtRnVuY3Rpb25zID4gMCkgeworICAgICAgICBteSAkaW5BcHBsZUNvcHlyaWdodCA9IDA7
CiAgICAgICAgIGZvcmVhY2ggbXkgJGZ1bmN0aW9uIChAeyRpbnRlcmZhY2UtPmZ1bmN0aW9uc30p
IHsKICAgICAgICAgICAgIG5leHQgaWYgU2tpcEZ1bmN0aW9uKCRmdW5jdGlvbik7CiAgICAgICAg
ICAgICBuZXh0IGlmICgkZnVuY3Rpb24tPnNpZ25hdHVyZS0+bmFtZSBlcSAic2V0IiBhbmQgJGlu
dGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IlR5cGVkQXJyYXkifSk7CkBAIC0xNTE0LDYg
KzE2NTgsNyBAQCBzdWIgR2VuZXJhdGVJbXBsZW1lbnRhdGlvbgogCiAgICAgICAgICAgICBteSAk
ZnVuY3Rpb25OYW1lID0gJGZ1bmN0aW9uLT5zaWduYXR1cmUtPm5hbWU7CiAgICAgICAgICAgICBt
eSAkcmV0dXJuVHlwZSA9IEdldE9iakNUeXBlKCRmdW5jdGlvbi0+c2lnbmF0dXJlLT50eXBlKTsK
KyAgICAgICAgICAgIG15ICRuZWVkc0FwcGxlQ29weXJpZ2h0ID0gJGZ1bmN0aW9uLT5zaWduYXR1
cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJBcHBsZUNvcHlyaWdodCJ9OwogICAgICAgICAgICAg
bXkgJGhhc1BhcmFtZXRlcnMgPSBAeyRmdW5jdGlvbi0+cGFyYW1ldGVyc307CiAgICAgICAgICAg
ICBteSAkcmFpc2VzRXhjZXB0aW9ucyA9ICRmdW5jdGlvbi0+c2lnbmF0dXJlLT5leHRlbmRlZEF0
dHJpYnV0ZXMtPnsiUmFpc2VzRXhjZXB0aW9uIn07CiAKQEAgLTE3MjQsNiArMTg2OSwxNiBAQCBz
dWIgR2VuZXJhdGVJbXBsZW1lbnRhdGlvbgogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAg
IH0KIAorICAgICAgICAgICAgaWYgKCRuZWVkc0FwcGxlQ29weXJpZ2h0KSB7CisgICAgICAgICAg
ICAgICAgaWYgKCEkaW5BcHBsZUNvcHlyaWdodCkgeworICAgICAgICAgICAgICAgICAgICBwdXNo
KEBpbXBsQ29udGVudCwgJGJlZ2luQXBwbGVDb3B5cmlnaHRGb3JTb3VyY2VGaWxlcyk7CisgICAg
ICAgICAgICAgICAgICAgICRpbkFwcGxlQ29weXJpZ2h0ID0gMTsKKyAgICAgICAgICAgICAgICB9
CisgICAgICAgICAgICB9IGVsc2lmICgkaW5BcHBsZUNvcHlyaWdodCkgeworICAgICAgICAgICAg
ICAgIHB1c2goQGltcGxDb250ZW50LCAkZW5kQXBwbGVDb3B5cmlnaHQpOworICAgICAgICAgICAg
ICAgICRpbkFwcGxlQ29weXJpZ2h0ID0gMDsKKyAgICAgICAgICAgIH0KKwogICAgICAgICAgICAg
bXkgJGNvbmRpdGlvbmFsU3RyaW5nID0gJGNvZGVHZW5lcmF0b3ItPkdlbmVyYXRlQ29uZGl0aW9u
YWxTdHJpbmcoJGZ1bmN0aW9uLT5zaWduYXR1cmUpOwogICAgICAgICAgICAgcHVzaChAaW1wbENv
bnRlbnQsICJcbiNpZiAke2NvbmRpdGlvbmFsU3RyaW5nfVxuIikgaWYgJGNvbmRpdGlvbmFsU3Ry
aW5nOwogCkBAIC0xNzUwLDExICsxOTA1LDE2IEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9u
CiAgICAgICAgICAgICAjIENsZWFyIHRoZSBoYXNoCiAgICAgICAgICAgICAlbmVlZHNDdXN0b20g
PSAoKTsKICAgICAgICAgfQorICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgJGVuZEFwcGxlQ29w
eXJpZ2h0KSBpZiAkaW5BcHBsZUNvcHlyaWdodDsKICAgICB9CiAKICAgICAjIEVORCBpbXBsZW1l
bnRhdGlvbgogICAgIHB1c2goQGltcGxDb250ZW50LCAiXEBlbmRcbiIpOwogCisgICAgaWYgKCRp
bnRlcmZhY2UtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJBcHBsZUNvcHlyaWdodCJ9KSB7CisgICAg
ICAgIHB1c2goQGltcGxDb250ZW50LCBzcGxpdCgiXHIiLCAkZW5kQXBwbGVDb3B5cmlnaHQpKTsK
KyAgICB9CisKICAgICAjIEdlbmVyYXRlIGludGVybmFsIGludGVyZmFjZXMKICAgICBwdXNoKEBp
bXBsQ29udGVudCwgIlxuJGltcGxUeXBlKiBjb3JlKCRjbGFzc05hbWUgKndyYXBwZXIpXG4iKTsK
ICAgICBwdXNoKEBpbXBsQ29udGVudCwgIntcbiIpOwpAQCAtMTc5Miw2ICsxOTUyLDEwIEBAIHN1
YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uCiAgICAgIyAtIEVuZCB0aGUgaWZkZWYgY29uZGl0aW9u
YWwgaWYgbmVjZXNzYXJ5CiAgICAgcHVzaChAaW1wbENvbnRlbnQsICJcbiNlbmRpZiAvLyAke2Nv
bmRpdGlvbmFsU3RyaW5nfVxuIikgaWYgJGNvbmRpdGlvbmFsU3RyaW5nOwogCisgICAgaWYgKCRp
bnRlcmZhY2UtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJBcHBsZUNvcHlyaWdodCJ9KSB7CisgICAg
ICAgIHB1c2goQGltcGxDb250ZW50LCBzcGxpdCgiXHIiLCAkZW5kQXBwbGVDb3B5cmlnaHQpKTsK
KyAgICB9CisKICAgICAjIC0gR2VuZXJhdGUgZGVwZW5kZW5jaWVzLgogICAgIGlmICgkd3JpdGVE
ZXBlbmRlbmNpZXMgJiYgQGFuY2VzdG9ySW50ZXJmYWNlTmFtZXMpIHsKICAgICAgICAgcHVzaChA
ZGVwc0NvbnRlbnQsICIkY2xhc3NOYW1lLmggOiAiLCBqb2luKCIgIiwgbWFwIHsgIiRfLmlkbCIg
fSBAYW5jZXN0b3JJbnRlcmZhY2VOYW1lcyksICJcbiIpOwpAQCAtMTgwMywxMSArMTk2NywxMSBA
QCBzdWIgR2VuZXJhdGVJbXBsZW1lbnRhdGlvbgogc3ViIFdyaXRlRGF0YQogewogICAgIG15ICRv
YmplY3QgPSBzaGlmdDsKLSAgICBteSAkZGF0YU5vZGUgPSBzaGlmdDsKKyAgICBteSAkaW50ZXJm
YWNlID0gc2hpZnQ7CiAgICAgbXkgJG91dHB1dERpciA9IHNoaWZ0OwogCiAgICAgIyBPcGVuIGZp
bGVzIGZvciB3cml0aW5nLi4uCi0gICAgbXkgJG5hbWUgPSAkZGF0YU5vZGUtPm5hbWU7CisgICAg
bXkgJG5hbWUgPSAkaW50ZXJmYWNlLT5uYW1lOwogICAgIG15ICRwcmVmaXggPSBGaWxlTmFtZVBy
ZWZpeDsKICAgICBteSAkaGVhZGVyRmlsZU5hbWUgPSAiJG91dHB1dERpci8kcHJlZml4JG5hbWUu
aCI7CiAgICAgbXkgJHByaXZhdGVIZWFkZXJGaWxlTmFtZSA9ICIkb3V0cHV0RGlyLyRwcmVmaXgk
e25hbWV9UHJpdmF0ZS5oIjsKQEAgLTE4MTcsNyArMTk4MSw3IEBAIHN1YiBXcml0ZURhdGEKIAog
ICAgICMgV3JpdGUgcHVibGljIGhlYWRlci4KICAgICBteSAkY29udGVudHMgPSBqb2luICIiLCBA
aGVhZGVyQ29udGVudEhlYWRlcjsKLSAgICBtYXAgeyAkY29udGVudHMgLj0gIlxAY2xhc3MgJF87
XG4iIH0gc29ydCBrZXlzKCVoZWFkZXJGb3J3YXJkRGVjbGFyYXRpb25zKTsKKyAgICBtYXAgeyAk
Y29udGVudHMgLj0gKElzQ29yZUZvdW5kYXRpb25UeXBlKCRfKSA/ICJ0eXBlZGVmIHN0cnVjdCAi
IC4gc3Vic3RyKCRfLCAwLCAtMykgLiAiKiAkXztcbiIgOiAiXEBjbGFzcyAkXztcbiIpIH0gc29y
dCBrZXlzKCVoZWFkZXJGb3J3YXJkRGVjbGFyYXRpb25zKTsKICAgICBtYXAgeyAkY29udGVudHMg
Lj0gIlxAcHJvdG9jb2wgJF87XG4iIH0gc29ydCBrZXlzKCVoZWFkZXJGb3J3YXJkRGVjbGFyYXRp
b25zRm9yUHJvdG9jb2xzKTsKIAogICAgIG15ICRoYXNGb3J3YXJkRGVjbGFyYXRpb25zID0ga2V5
cyglaGVhZGVyRm9yd2FyZERlY2xhcmF0aW9ucykgKyBrZXlzKCVoZWFkZXJGb3J3YXJkRGVjbGFy
YXRpb25zRm9yUHJvdG9jb2xzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvSURMQXR0cmlidXRlcy50eHQgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL0lETEF0dHJpYnV0ZXMudHh0CmluZGV4IGU0YzI5MmIyYzAzYTlkM2Q1OTExY2NiYTg5MjUy
NjE5YTliYjU3ODQuLjg1ZWFkNzE1ZGNkMTcyZWMwZWI0NDA1M2NjYzcwNzVmZmE0MTAzZTYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvSURMQXR0cmlidXRlcy50
eHQKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9JRExBdHRyaWJ1dGVzLnR4
dApAQCAtMTA3LDMgKzEwNyw2IEBAIFRyZWF0UmV0dXJuZWROdWxsU3RyaW5nQXM9TnVsbHxVbmRl
ZmluZWQKIFRyZWF0VW5kZWZpbmVkQXM9TnVsbFN0cmluZwogVHlwZWRBcnJheT0qCiBVUkwKKwor
IyBQTEFURk9STShJT1MpCitBcHBsZUNvcHlyaWdodApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy9wcmVwcm9jZXNzb3IucG0gYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3ByZXByb2Nlc3Nvci5wbQppbmRleCBjYjMwZjgwYzAxNmZmNzYyM2E5MGQz
YzlhOTlkYmM4YzQ5MzcyY2QyLi5lODRjZDRhYjBkY2EzZGQwY2Q1ZDI5ODM2ZDE1ZTNlMzM0ZGY3
NDQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3ByZXByb2Nl
c3Nvci5wbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3ByZXByb2Nlc3Nv
ci5wbQpAQCAtNTcsNiArNTcsOSBAQCBzdWIgYXBwbHlQcmVwcm9jZXNzb3IKICAgICAgICAgcHVz
aChAYXJncywgcXcoLUUgLVAgLXggYysrKSk7CiAgICAgfQogCisgICAgcHVzaChAYXJncywgIi1J
IiAuICRFTlZ7QlVJTFRfUFJPRFVDVFNfRElSfSAuICIvdXNyL2xvY2FsL2luY2x1ZGUiKSBpZiAk
RU5We0JVSUxUX1BST0RVQ1RTX0RJUn07CisgICAgcHVzaChAYXJncywgIi1pc3lzcm9vdCIsICRF
TlZ7U0RLUk9PVH0pIGlmICRFTlZ7U0RLUk9PVH07CisKICAgICAjIFJlbW92ZSBkb3VibGUgcXVv
dGF0aW9ucyBmcm9tICRkZWZpbmVzIGFuZCBleHRyYWN0IG1hY3Jvcy4KICAgICAjIEZvciBleGFt
cGxlLCBpZiAkZGVmaW5lcyBpcyAnICJBPTEiICJCPTEiIEM9MSAiIiAgICBEICAnLAogICAgICMg
dGhlbiBpdCBpcyBjb252ZXJ0ZWQgaW50byBmb3VyIG1hY3JvcyAtREE9MSwgLURCPTEsIC1EQz0x
IGFuZCAtREQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2Uvb2JqYy9vYmpjX2Ns
YXNzLm1tIGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL29iamMvb2JqY19jbGFzcy5tbQppbmRleCA1
YmFjZjdhM2U0NDgzMDJiNWU0NzE0MTViZDBjYTMwZWY2ZTRkOTdkLi5hOGVmNTBlZDM3OWJlMzVl
OGU4ZTAxY2MxOWM1NzNlM2M5Y2Q2NDQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9icmlk
Z2Uvb2JqYy9vYmpjX2NsYXNzLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9vYmpjL29i
amNfY2xhc3MubW0KQEAgLTE2MSw3ICsxNjEsMTEgQEAgRmllbGQqIE9iamNDbGFzczo6ZmllbGRO
YW1lZChQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBJbnN0YW5jZSogaW5zdGFuY2UpIGNvbnMK
ICAgICBDU3RyaW5nIGpzTmFtZSA9IG5hbWUuYXNjaWkoKTsKICAgICBSZXRhaW5QdHI8Q0ZTdHJp
bmdSZWY+IGZpZWxkTmFtZSA9IGFkb3B0Q0YoQ0ZTdHJpbmdDcmVhdGVXaXRoQ1N0cmluZyhOVUxM
LCBqc05hbWUuZGF0YSgpLCBrQ0ZTdHJpbmdFbmNvZGluZ0FTQ0lJKSk7CiAgICAgaWQgdGFyZ2V0
T2JqZWN0ID0gKHN0YXRpY19jYXN0PE9iamNJbnN0YW5jZSo+KGluc3RhbmNlKSktPmdldE9iamVj
dCgpOworI2lmIFBMQVRGT1JNKElPUykKKyAgICBpZCBhdHRyaWJ1dGVzID0gW3RhcmdldE9iamVj
dCByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKGF0dHJpYnV0ZUtleXMpXSA/IFt0YXJnZXRP
YmplY3QgcGVyZm9ybVNlbGVjdG9yOkBzZWxlY3RvcihhdHRyaWJ1dGVLZXlzKV0gOiBuaWw7Cisj
ZWxzZQogICAgIGlkIGF0dHJpYnV0ZXMgPSBbdGFyZ2V0T2JqZWN0IGF0dHJpYnV0ZUtleXNdOwor
I2VuZGlmCiAgICAgaWYgKGF0dHJpYnV0ZXMpIHsKICAgICAgICAgLy8gQ2xhc3Mgb3ZlcnJpZGVz
IGF0dHJpYnV0ZUtleXMsIHVzZSB0aGF0IGFycmF5IG9mIGtleSBuYW1lcy4KICAgICAgICAgdW5z
aWduZWQgY291bnQgPSBbYXR0cmlidXRlcyBjb3VudF07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9icmlkZ2Uvb2JqYy9vYmpjX2luc3RhbmNlLm1tIGIvU291cmNlL1dlYkNvcmUvYnJpZGdl
L29iamMvb2JqY19pbnN0YW5jZS5tbQppbmRleCBkMWQzN2Y1N2Y4N2VhZWY1YmVlODEyN2NiODhj
YjY0NDI0MGRmM2RiLi4zY2E3MzU3ZjEzOGRlN2VlYjYwNzgzODBjYTQ1NTk0NWNmMDcwOWYyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2Uvb2JqYy9vYmpjX2luc3RhbmNlLm1tCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9vYmpjL29iamNfaW5zdGFuY2UubW0KQEAgLTM3LDYg
KzM3LDEwIEBACiAjaW1wb3J0ICJydW50aW1lL0Z1bmN0aW9uUHJvdG90eXBlLmgiCiAjaW1wb3J0
IDx3dGYvQXNzZXJ0aW9ucy5oPgogCisjaWYgUExBVEZPUk0oSU9TKQorI2ltcG9ydCA8Rm91bmRh
dGlvbi9OU01hcFRhYmxlLmg+CisjZW5kaWYgLy8gUExBVEZPUk0oSU9TKQorCiAjaWZkZWYgTkRF
QlVHCiAjZGVmaW5lIE9CSkNfTE9HKGZvcm1hdEFuZEFyZ3MuLi4pICgodm9pZCkwKQogI2Vsc2UK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2NvbmZpZy5oIGIvU291cmNlL1dlYkNvcmUvY29u
ZmlnLmgKaW5kZXggNjUzNzMxYzJhOWFjMGRmNjVmNWMxYzk1NWNlNGViNDllN2Q2ZGIyZC4uZmY2
M2NkNTgwMzFiM2IzYTY4N2Y2YmQyMDY1MjQ1NjA2MGZiMjZiMiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvY29uZmlnLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY29uZmlnLmgKQEAgLTEwMCw3
ICsxMDAsNyBAQAogI2VuZGlmCiAjZW5kaWYKIAotI2lmIFBMQVRGT1JNKE1BQykKKyNpZiBQTEFU
Rk9STShNQUMpICYmICFQTEFURk9STShJT1MpCiAvLyBOZXcgdGhlbWUKICNkZWZpbmUgV1RGX1VT
RV9ORVdfVEhFTUUgMQogI2VuZGlmIC8vIFBMQVRGT1JNKE1BQykKQEAgLTEyNSw2ICsxMjUsMTEg
QEAgdHlwZWRlZiBmbG9hdCBDR0Zsb2F0OwogI2RlZmluZSBXVEZfVVNFX0NBIDEKICNlbmRpZgog
CisjaWYgUExBVEZPUk0oSU9TKQorI2RlZmluZSBXRUJDT1JFX05BVklHQVRPUl9QTEFURk9STSB3
a0dldFBsYXRmb3JtTmFtZUZvck5hdmlnYXRvcigpOworI2RlZmluZSBXRUJDT1JFX05BVklHQVRP
Ul9WRU5ET1Igd2tHZXRWZW5kb3JOYW1lRm9yTmF2aWdhdG9yKCk7CisjZW5kaWYKKwogLy8gRklY
TUU6IE1vdmUgdGhpcyB0byBKYXZhU2NyaXB0Q29yZS93dGYvUGxhdGZvcm0uaCwgd2hpY2ggaXMg
d2hlcmUgd2UgZGVmaW5lIFdURl9VU0VfQVZGT1VOREFUSU9OIG9uIHRoZSBNYWMuCiAvLyBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjczMzQKICNpZiBQTEFURk9STShX
SU4pICYmIFVTRShDRykgJiYgSEFWRShBVkNGKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
ZG9tL0RvY3VtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKaW5kZXgg
ZTg2ZGY5ZmQ3MWNkZjMyMGM4ZTQyOGMzNGQ1OWVlOWM3YWM1NGFlYi4uNGI1YTg4Mjc3YTAyYjIx
OGJmNmZjMjJhOGMxNTVjMTI2MjlhNGIzMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9t
L0RvY3VtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCkBAIC00
Nzg5LDcgKzQ3ODksNyBAQCBIVE1MQ2FudmFzRWxlbWVudCogRG9jdW1lbnQ6OmdldENTU0NhbnZh
c0VsZW1lbnQoY29uc3QgU3RyaW5nJiBuYW1lKQogI2lmIEVOQUJMRShJT1NfVEVYVF9BVVRPU0la
SU5HKQogdm9pZCBEb2N1bWVudDo6YWRkQXV0b1NpemluZ05vZGUoTm9kZSogbm9kZSwgZmxvYXQg
Y2FuZGlkYXRlU2l6ZSkKIHsKLSAgICBUZXh0QXV0b1NpemluZ0tleSBrZXkobm9kZS0+cmVuZGVy
ZXIoKS0+c3R5bGUoKSwgJmRvY3VtZW50KCkpOworICAgIFRleHRBdXRvU2l6aW5nS2V5IGtleSgm
bm9kZS0+cmVuZGVyZXIoKS0+c3R5bGUoKSwgJmRvY3VtZW50KCkpOwogICAgIFRleHRBdXRvU2l6
aW5nTWFwOjpBZGRSZXN1bHQgcmVzdWx0ID0gbV90ZXh0QXV0b1NpemVkTm9kZXMuYWRkKGtleSwg
bnVsbHB0cik7CiAgICAgaWYgKHJlc3VsdC5pc05ld0VudHJ5KQogICAgICAgICByZXN1bHQuaXRl
cmF0b3ItPnZhbHVlID0gVGV4dEF1dG9TaXppbmdWYWx1ZTo6Y3JlYXRlKCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1
bWVudC5oCmluZGV4IDRiYTBjNWM3NDNlZDIxMDcyYmQ3MGJjZTU3MjFmYWYzOTk5ZTJhNWMuLjMw
ZDQyZGNkOWFhYzc1Y2M3N2Q3MzgzZDljOTEyMDJmYzFkMzI4MjAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVu
dC5oCkBAIC0xNjUsOCArMTY1LDggQEAgc3RydWN0IEFubm90YXRlZFJlZ2lvblZhbHVlOwogCiAj
aWYgRU5BQkxFKFRPVUNIX0VWRU5UUykKICNpZiBQTEFURk9STShJT1MpCi0jaW5jbHVkZSAiRG9j
dW1lbnRJT1NGb3J3YXJkLmgiCi0jZW5kaWYKKyNpbmNsdWRlIDxXZWJLaXRBZGRpdGlvbnMvRG9j
dW1lbnRJT1NGb3J3YXJkLmg+CisjZW5kaWYgLy8gUExBVEZPUk0oSU9TKQogY2xhc3MgVG91Y2g7
CiBjbGFzcyBUb3VjaExpc3Q7CiAjZW5kaWYKQEAgLTExMTQsNyArMTExNCw3IEBAIHB1YmxpYzoK
IAogI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMpCiAjaWYgUExBVEZPUk0oSU9TKQotI2luY2x1ZGUg
IkRvY3VtZW50SU9TLmgiCisjaW5jbHVkZSA8V2ViS2l0QWRkaXRpb25zL0RvY3VtZW50SU9TLmg+
CiAjZWxzZQogICAgIFBhc3NSZWZQdHI8VG91Y2g+IGNyZWF0ZVRvdWNoKERPTVdpbmRvdyosIEV2
ZW50VGFyZ2V0KiwgaW50IGlkZW50aWZpZXIsIGludCBwYWdlWCwgaW50IHBhZ2VZLCBpbnQgc2Ny
ZWVuWCwgaW50IHNjcmVlblksIGludCByYWRpdXNYLCBpbnQgcmFkaXVzWSwgZmxvYXQgcm90YXRp
b25BbmdsZSwgZmxvYXQgZm9yY2UsIEV4Y2VwdGlvbkNvZGUmKSBjb25zdDsKICNlbmRpZiAvLyBQ
TEFURk9STShJT1MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaWRs
IGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmlkbAppbmRleCBiMGQ4ZDJmYjZlYzE0OTQ2
ODU3YWRjOThlMTBmNzg4YTk2MjYyYWI0Li5lODRiNTg2ZWViMzVkOWYyY2I5NDhhM2FiNzdmZDIz
MTE4MDQ2NjZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaWRsCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5pZGwKQEAgLTMyMyw3ICszMjMsNyBAQAog
ICAgIC8vIEZJWE1FOiBDb25zaWRlciBkZWZpbmluZyBhbiBFTkFCTEUgbWFjcm8gZm9yIGlPUyB0
b3VjaCBldmVudCBjb2RlLCBzYXkgSU9TX1RPVUNIX0VWRU5UUywKICAgICAvLyBhbmQvb3IgbW9k
aWZ5aW5nIHRoZSBiaW5kaW5ncyBzY3JpcHRzIHRvIHN1cHBvcnQgZ2VuZXJhdGluZyBtb3JlIGNv
bXBsaWNhdGVkIGNvbmRpdGlvbmFsIGNvZGUuCiAjaWYgZGVmaW5lZChXVEZfUExBVEZPUk1fSU9T
KSAmJiBXVEZfUExBVEZPUk1fSU9TCi0jaW5jbHVkZSAiRG9jdW1lbnRJT1MuaWRsIgorI2luY2x1
ZGUgPFdlYktpdEFkZGl0aW9ucy9Eb2N1bWVudElPUy5pZGw+CiAjZWxzZQogICAgIFtSZXR1cm5O
ZXdPYmplY3QsIFJhaXNlc0V4Y2VwdGlvbl0gVG91Y2ggY3JlYXRlVG91Y2goW0RlZmF1bHQ9VW5k
ZWZpbmVkXSBvcHRpb25hbCBET01XaW5kb3cgd2luZG93LAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbRGVmYXVsdD1VbmRlZmluZWRdIG9wdGlv
bmFsIEV2ZW50VGFyZ2V0IHRhcmdldCwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9p
b3MvVG91Y2hFdmVudHMuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL2lvcy9Ub3VjaEV2ZW50cy5j
cHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uZDBjZjdhNmRjMWI5OTA5MTlhYmVkOTYzMzNkNDRjZmIxYmE1ZDk1Mwot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9pb3MvVG91Y2hFdmVudHMuY3Bw
CkBAIC0wLDAgKzEsMzYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNp
ZiBQTEFURk9STShJT1MpICYmIEVOQUJMRShUT1VDSF9FVkVOVFMpCisKKyNpbmNsdWRlIDxXZWJL
aXRBZGRpdGlvbnMvRG9jdW1lbnRJT1MuY3BwPgorI2luY2x1ZGUgPFdlYktpdEFkZGl0aW9ucy9H
ZXN0dXJlRXZlbnRJT1MuY3BwPgorI2luY2x1ZGUgPFdlYktpdEFkZGl0aW9ucy9Ub3VjaC5jcHA+
CisjaW5jbHVkZSA8V2ViS2l0QWRkaXRpb25zL1RvdWNoRXZlbnQuY3BwPgorI2luY2x1ZGUgPFdl
YktpdEFkZGl0aW9ucy9Ub3VjaExpc3QuY3BwPgorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvQXBwbHlTdHlsZUNvbW1hbmQuY3BwIGIvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9BcHBseVN0eWxlQ29tbWFuZC5jcHAKaW5kZXggZDMwN2FmMGFiZmYyZWYzNGY2MzBh
OWY1YzQ3ZjNlOWJhODhjMTAyNS4uOTUzMTBmNWYyNjljZjk3MzY2MTBlNzIzMDBhM2YyNTc2N2Ji
MmQ2MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9BcHBseVN0eWxlQ29tbWFu
ZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9BcHBseVN0eWxlQ29tbWFuZC5jcHAK
QEAgLTI1NSwxMCArMjU1LDE4IEBAIHZvaWQgQXBwbHlTdHlsZUNvbW1hbmQ6OmFwcGx5QmxvY2tT
dHlsZShFZGl0aW5nU3R5bGUgKnN0eWxlKQogICAgIGlmICh2aXNpYmxlU3RhcnQuaXNOdWxsKCkg
fHwgdmlzaWJsZVN0YXJ0LmlzT3JwaGFuKCkgfHwgdmlzaWJsZUVuZC5pc051bGwoKSB8fCB2aXNp
YmxlRW5kLmlzT3JwaGFuKCkpCiAgICAgICAgIHJldHVybjsKIAorI2lmICFQTEFURk9STShJT1Mp
CiAgICAgLy8gU2F2ZSBhbmQgcmVzdG9yZSB0aGUgc2VsZWN0aW9uIGVuZHBvaW50cyB1c2luZyB0
aGVpciBpbmRpY2VzIGluIHRoZSBkb2N1bWVudCwgc2luY2UKKyNlbHNlCisgICAgLy8gU2F2ZSBh
bmQgcmVzdG9yZSB0aGUgc2VsZWN0aW9uIGVuZHBvaW50cyB1c2luZyB0aGVpciBpbmRpY2VzIGlu
IHRoZSBlZGl0YWJsZSByb290LCBzaW5jZQorI2VuZGlmCiAgICAgLy8gYWRkQmxvY2tTdHlsZUlm
TmVlZGVkIG1heSBtb3ZlUGFyYWdyYXBocywgd2hpY2ggY2FuIHJlbW92ZSB0aGVzZSBlbmRwb2lu
dHMuCiAgICAgLy8gQ2FsY3VsYXRlIHN0YXJ0IGFuZCBlbmQgaW5kaWNlcyBmcm9tIHRoZSBzdGFy
dCBvZiB0aGUgdHJlZSB0aGF0IHRoZXkncmUgaW4uCisjaWYgIVBMQVRGT1JNKElPUykKICAgICBO
b2RlKiBzY29wZSA9IGhpZ2hlc3RBbmNlc3Rvcih2aXNpYmxlU3RhcnQuZGVlcEVxdWl2YWxlbnQo
KS5kZXByZWNhdGVkTm9kZSgpKTsKKyNlbHNlCisgICAgTm9kZSogc2NvcGUgPSBoaWdoZXN0RWRp
dGFibGVSb290KHZpc2libGVTdGFydC5kZWVwRXF1aXZhbGVudCgpKTsKKyNlbmRpZgogICAgIFJl
ZlB0cjxSYW5nZT4gc3RhcnRSYW5nZSA9IFJhbmdlOjpjcmVhdGUoZG9jdW1lbnQoKSwgZmlyc3RQ
b3NpdGlvbkluTm9kZShzY29wZSksIHZpc2libGVTdGFydC5kZWVwRXF1aXZhbGVudCgpLnBhcmVu
dEFuY2hvcmVkRXF1aXZhbGVudCgpKTsKICAgICBSZWZQdHI8UmFuZ2U+IGVuZFJhbmdlID0gUmFu
Z2U6OmNyZWF0ZShkb2N1bWVudCgpLCBmaXJzdFBvc2l0aW9uSW5Ob2RlKHNjb3BlKSwgdmlzaWJs
ZUVuZC5kZWVwRXF1aXZhbGVudCgpLnBhcmVudEFuY2hvcmVkRXF1aXZhbGVudCgpKTsKICAgICBp
bnQgc3RhcnRJbmRleCA9IFRleHRJdGVyYXRvcjo6cmFuZ2VMZW5ndGgoc3RhcnRSYW5nZS5nZXQo
KSwgdHJ1ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0NvbXBvc2l0ZUVk
aXRDb21tYW5kLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvQ29tcG9zaXRlRWRpdENvbW1h
bmQuY3BwCmluZGV4IGE2MzA3NDcwNTIxODIwNWIzZTA4MDIxMDJmMWI4MWIzMzhhYmE5ODUuLjA2
OWQ0ZDYxNmFiYmMwYzAwZTQ4N2I3YTY4YzI3M2Y1ZjExNGU3NWEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvQ29tcG9zaXRlRWRpdENvbW1hbmQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvQ29tcG9zaXRlRWRpdENvbW1hbmQuY3BwCkBAIC03Miw2ICs3MiwxMCBA
QAogI2luY2x1ZGUgIkRlbGV0ZUJ1dHRvbkNvbnRyb2xsZXIuaCIKICNlbmRpZgogCisjaWYgUExB
VEZPUk0oSU9TKQorI2luY2x1ZGUgIkJyZWFrQmxvY2txdW90ZUNvbW1hbmQuaCIKKyNlbmRpZgor
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHVzaW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7CkBAIC0x
MDIsNiArMTA2LDE0IEBAIHZvaWQgRWRpdENvbW1hbmRDb21wb3NpdGlvbjo6dW5hcHBseSgpCiAg
ICAgLy8gTG93IGxldmVsIG9wZXJhdGlvbnMsIGxpa2UgUmVtb3ZlTm9kZUNvbW1hbmQsIGRvbid0
IHJlcXVpcmUgYSBsYXlvdXQgYmVjYXVzZSB0aGUgaGlnaCBsZXZlbCBvcGVyYXRpb25zIHRoYXQg
dXNlIHRoZW0gcGVyZm9ybSBvbmUKICAgICAvLyBpZiBvbmUgaXMgbmVjZXNzYXJ5IChsaWtlIGZv
ciB0aGUgY3JlYXRpb24gb2YgVmlzaWJsZVBvc2l0aW9ucykuCiAgICAgbV9kb2N1bWVudC0+dXBk
YXRlTGF5b3V0SWdub3JlUGVuZGluZ1N0eWxlc2hlZXRzKCk7CisjaWYgUExBVEZPUk0oSU9TKQor
ICAgIC8vIEZJWE1FOiBXaGVyZSBzaG91bGQgaVBob25lIGNvZGUgZGVhbCB3aXRoIHRoZSBjb21w
b3NpdGlvbj8KKyAgICAvLyBTaW5jZSBlZGl0aW5nIGNvbW1hbmRzIGRvbid0IHNhdmUvcmVzdG9y
ZSB0aGUgY29tcG9zaXRpb24sIHVuZG9pbmcgd2l0aG91dCBmaXhpbmcKKyAgICAvLyB1cCB0aGUg
Y29tcG9zaXRpb24gd2lsbCBsZWF2ZSBhIHN0YWxlLCBpbnZhbGlkIGNvbXBvc2l0aW9uLCBhcyBp
biA8cmRhcjovL3Byb2JsZW0vNjgzMTYzNz4uCisgICAgLy8gRGVza3RvcCBoYW5kbGVzIHRoaXMg
aW4gLVtXZWJIVE1MVmlldyBfdXBkYXRlU2VsZWN0aW9uRm9ySW5wdXRNYW5hZ2VyXSwgYnV0IHRo
ZSBwaG9uZQorICAgIC8vIGdvZXMgYW5vdGhlciByb3V0ZS4KKyAgICBmcmFtZS0+ZWRpdG9yKCku
Y2FuY2VsQ29tcG9zaXRpb24oKTsKKyNlbmRpZgogCiAgICAgewogI2lmIEVOQUJMRShERUxFVElP
Tl9VSSkKQEAgLTE5MCw2ICsyMDIsMTAgQEAgdm9pZCBDb21wb3NpdGVFZGl0Q29tbWFuZDo6YXBw
bHkoKQogICAgICAgICBjYXNlIEVkaXRBY3Rpb25TZXRXcml0aW5nRGlyZWN0aW9uOgogICAgICAg
ICBjYXNlIEVkaXRBY3Rpb25DdXQ6CiAgICAgICAgIGNhc2UgRWRpdEFjdGlvblVuc3BlY2lmaWVk
OgorI2lmIFBMQVRGT1JNKElPUykKKyAgICAgICAgY2FzZSBFZGl0QWN0aW9uRGVsZXRlOgorICAg
ICAgICBjYXNlIEVkaXRBY3Rpb25EaWN0YXRpb246CisjZW5kaWYKICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CkBA
IC00ODYsNiArNTAyLDQ5IEBAIHZvaWQgQ29tcG9zaXRlRWRpdENvbW1hbmQ6OnNwbGl0VGV4dE5v
ZGVDb250YWluaW5nRWxlbWVudChQYXNzUmVmUHRyPFRleHQ+IHRleHQsCiAgICAgYXBwbHlDb21t
YW5kVG9Db21wb3NpdGUoU3BsaXRUZXh0Tm9kZUNvbnRhaW5pbmdFbGVtZW50Q29tbWFuZDo6Y3Jl
YXRlKHRleHQsIG9mZnNldCkpOwogfQogCisjaWYgUExBVEZPUk0oSU9TKQordm9pZCBDb21wb3Np
dGVFZGl0Q29tbWFuZDo6aW5wdXRUZXh0KGNvbnN0IFN0cmluZyYgdGV4dCwgYm9vbCBzZWxlY3RJ
bnNlcnRlZFRleHQpCit7CisgICAgdW5zaWduZWQgb2Zmc2V0ID0gMDsKKyAgICB1bnNpZ25lZCBs
ZW5ndGggPSB0ZXh0Lmxlbmd0aCgpOworICAgIAorICAgIFJlZlB0cjxDb250YWluZXJOb2RlPiBz
Y29wZTsKKyAgICB1bnNpZ25lZCBzdGFydEluZGV4ID0gaW5kZXhGb3JWaXNpYmxlUG9zaXRpb24o
ZW5kaW5nU2VsZWN0aW9uKCkudmlzaWJsZVN0YXJ0KCksIHNjb3BlKTsKKyAgICAKKyAgICBzaXpl
X3QgbmV3bGluZTsKKyAgICBkbyB7CisgICAgICAgIG5ld2xpbmUgPSB0ZXh0LmZpbmQoJ1xuJywg
b2Zmc2V0KTsKKyAgICAgICAgaWYgKG5ld2xpbmUgIT0gb2Zmc2V0KSB7CisgICAgICAgICAgICBp
bnQgc3Vic3RyaW5nTGVuZ3RoID0gbmV3bGluZSA9PSBub3RGb3VuZCA/IGxlbmd0aCAtIG9mZnNl
dCA6IG5ld2xpbmUgLSBvZmZzZXQ7CisgICAgICAgICAgICBSZWZQdHI8SW5zZXJ0VGV4dENvbW1h
bmQ+IGNvbW1hbmQgPSBJbnNlcnRUZXh0Q29tbWFuZDo6Y3JlYXRlKGRvY3VtZW50KCksIHRleHQu
c3Vic3RyaW5nKG9mZnNldCwgc3Vic3RyaW5nTGVuZ3RoKSwgZmFsc2UpOworICAgICAgICAgICAg
YXBwbHlDb21tYW5kVG9Db21wb3NpdGUoY29tbWFuZCk7CisgICAgICAgIH0KKyAgICAgICAgaWYg
KG5ld2xpbmUgIT0gbm90Rm91bmQpIHsKKyAgICAgICAgICAgIFZpc2libGVQb3NpdGlvbiBjYXJl
dChlbmRpbmdTZWxlY3Rpb24oKS52aXNpYmxlU3RhcnQoKSk7CisgICAgICAgICAgICBpZiAoZW5j
bG9zaW5nTm9kZU9mVHlwZShjYXJldC5kZWVwRXF1aXZhbGVudCgpLCAmaXNNYWlsQmxvY2txdW90
ZSkpIHsKKyAgICAgICAgICAgICAgICAvLyBGSVhNRTogQnJlYWtpbmcgYSBibG9ja3F1b3RlIHdo
ZW4gdGhlIGNhcmV0IGlzIGp1c3QgYWZ0ZXIgYSBzcGFjZSB3aWxsIGNvbGxhcHNlIHRoZSAKKyAg
ICAgICAgICAgICAgICAvLyBzcGFjZS4gTW9kaWZ5IHN0YXJ0SW5kZXggb3IgbGVuZ3RoIHRvIGNv
bXBlbnNhdGUgZm9yIHRoaXMgc28gdGhhdCB0aGUgZW5kaW5nIHNlbGVjdGlvbiAKKyAgICAgICAg
ICAgICAgICAvLyB3aWxsIGJlIHBvc2l0aW9uZWQgY29ycmVjdGx5LgorICAgICAgICAgICAgICAg
IC8vIDxyZGFyOi8vcHJvYmxlbS85OTE0NDYyPiBicmVha2luZyBhIE1haWwgYmxvY2txdW90ZSBq
dXN0IGFmdGVyIGEgc3BhY2UgY29sbGFwc2VzIHRoZSBzcGFjZQorICAgICAgICAgICAgICAgIGlm
IChjYXJldC5wcmV2aW91cygpLmNoYXJhY3RlckFmdGVyKCkgPT0gJyAnKSB7CisgICAgICAgICAg
ICAgICAgICAgIGlmICghb2Zmc2V0ICYmICFzdGFydEluZGV4KQorICAgICAgICAgICAgICAgICAg
ICAgICAgc3RhcnRJbmRleC0tOworICAgICAgICAgICAgICAgICAgICBlbHNlIGlmICghbGVuZ3Ro
KQorICAgICAgICAgICAgICAgICAgICAgICAgbGVuZ3RoLS07CisgICAgICAgICAgICAgICAgfQor
ICAgICAgICAgICAgICAgIGFwcGx5Q29tbWFuZFRvQ29tcG9zaXRlKEJyZWFrQmxvY2txdW90ZUNv
bW1hbmQ6OmNyZWF0ZShkb2N1bWVudCgpKSk7CisgICAgICAgICAgICB9IGVsc2UKKyAgICAgICAg
ICAgICAgICBpbnNlcnRMaW5lQnJlYWsoKTsKKyAgICAgICAgfQorICAgICAgICAgICAgCisgICAg
ICAgIG9mZnNldCA9IG5ld2xpbmUgKyAxOworICAgIH0gd2hpbGUgKG5ld2xpbmUgIT0gbm90Rm91
bmQgJiYgb2Zmc2V0ICE9IGxlbmd0aCk7CisgICAgCisgICAgaWYgKHNlbGVjdEluc2VydGVkVGV4
dCkKKyAgICAgICAgc2V0RW5kaW5nU2VsZWN0aW9uKFZpc2libGVTZWxlY3Rpb24odmlzaWJsZVBv
c2l0aW9uRm9ySW5kZXgoc3RhcnRJbmRleCwgc2NvcGUuZ2V0KCkpLCB2aXNpYmxlUG9zaXRpb25G
b3JJbmRleChzdGFydEluZGV4ICsgbGVuZ3RoLCBzY29wZS5nZXQoKSkpKTsKK30KKyNlbmRpZgor
CiB2b2lkIENvbXBvc2l0ZUVkaXRDb21tYW5kOjppbnNlcnRUZXh0SW50b05vZGUoUGFzc1JlZlB0
cjxUZXh0PiBub2RlLCB1bnNpZ25lZCBvZmZzZXQsIGNvbnN0IFN0cmluZyYgdGV4dCkKIHsKICAg
ICBpZiAoIXRleHQuaXNFbXB0eSgpKQpAQCAtNTM1LDcgKzU5NCwxMSBAQCB2b2lkIENvbXBvc2l0
ZUVkaXRDb21tYW5kOjpyZXBsYWNlVGV4dEluTm9kZVByZXNlcnZpbmdNYXJrZXJzKFBhc3NSZWZQ
dHI8VGV4dD4gcAogICAgIHJlcGxhY2VUZXh0SW5Ob2RlKG5vZGUsIG9mZnNldCwgY291bnQsIHJl
cGxhY2VtZW50VGV4dCk7CiAgICAgUmVmUHRyPFJhbmdlPiBuZXdSYW5nZSA9IFJhbmdlOjpjcmVh
dGUoZG9jdW1lbnQoKSwgbm9kZSwgb2Zmc2V0LCBub2RlLCBvZmZzZXQgKyByZXBsYWNlbWVudFRl
eHQubGVuZ3RoKCkpOwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbWFya2Vycy5zaXplKCk7
ICsraSkKKyNpZiBQTEFURk9STShJT1MpCisgICAgICAgIG1hcmtlckNvbnRyb2xsZXIuYWRkTWFy
a2VyKG5ld1JhbmdlLmdldCgpLCBtYXJrZXJzW2ldLnR5cGUoKSwgbWFya2Vyc1tpXS5kZXNjcmlw
dGlvbigpLCBtYXJrZXJzW2ldLmFsdGVybmF0aXZlcygpLCBtYXJrZXJzW2ldLm1ldGFkYXRhKCkp
OworI2Vsc2UKICAgICAgICAgbWFya2VyQ29udHJvbGxlci5hZGRNYXJrZXIobmV3UmFuZ2UuZ2V0
KCksIG1hcmtlcnNbaV0udHlwZSgpLCBtYXJrZXJzW2ldLmRlc2NyaXB0aW9uKCkpOworI2VuZGlm
IC8vIFBMQVRGT1JNKElPUykKIH0KIAogUG9zaXRpb24gQ29tcG9zaXRlRWRpdENvbW1hbmQ6OnBv
c2l0aW9uT3V0c2lkZVRhYlNwYW4oY29uc3QgUG9zaXRpb24mIHBvcykKQEAgLTEyMDEsNyArMTI2
NCwxMSBAQCB2b2lkIENvbXBvc2l0ZUVkaXRDb21tYW5kOjptb3ZlUGFyYWdyYXBocyhjb25zdCBW
aXNpYmxlUG9zaXRpb24mIHN0YXJ0T2ZQYXJhZ3JhcAogICAgIC8vIGFueXRoaW5nIGlmIHdlJ3Jl
IGdpdmVuIGFuIGVtcHR5IHBhcmFncmFwaCwgYnV0IGFuIGVtcHR5IHBhcmFncmFwaCBjYW4gaGF2
ZSBzdHlsZQogICAgIC8vIHRvbywgPGRpdj48Yj48YnI+PC9iPjwvZGl2PiBmb3IgZXhhbXBsZS4g
IFNhdmUgaXQgc28gdGhhdCB3ZSBjYW4gcHJlc2VydmUgaXQgbGF0ZXIuCiAgICAgUmVmUHRyPEVk
aXRpbmdTdHlsZT4gc3R5bGVJbkVtcHR5UGFyYWdyYXBoOworI2lmICFQTEFURk9STShJT1MpCiAg
ICAgaWYgKHN0YXJ0T2ZQYXJhZ3JhcGhUb01vdmUgPT0gZW5kT2ZQYXJhZ3JhcGhUb01vdmUgJiYg
cHJlc2VydmVTdHlsZSkgeworI2Vsc2UKKyAgICBpZiAoc3RhcnRPZlBhcmFncmFwaFRvTW92ZSA9
PSBlbmRPZlBhcmFncmFwaFRvTW92ZSAmJiBwcmVzZXJ2ZVN0eWxlICYmIGlzUmljaGx5RWRpdGFi
bGVQb3NpdGlvbihkZXN0aW5hdGlvbi5kZWVwRXF1aXZhbGVudCgpKSkgeworI2VuZGlmCiAgICAg
ICAgIHN0eWxlSW5FbXB0eVBhcmFncmFwaCA9IEVkaXRpbmdTdHlsZTo6Y3JlYXRlKHN0YXJ0T2ZQ
YXJhZ3JhcGhUb01vdmUuZGVlcEVxdWl2YWxlbnQoKSk7CiAgICAgICAgIHN0eWxlSW5FbXB0eVBh
cmFncmFwaC0+bWVyZ2VUeXBpbmdTdHlsZShkb2N1bWVudCgpKTsKICAgICAgICAgLy8gVGhlIG1v
dmVkIHBhcmFncmFwaCBzaG91bGQgYXNzdW1lIHRoZSBibG9jayBzdHlsZSBvZiB0aGUgZGVzdGlu
YXRpb24uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0NvbXBvc2l0ZUVkaXRD
b21tYW5kLmggYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0NvbXBvc2l0ZUVkaXRDb21tYW5kLmgK
aW5kZXggZTJhNDk5MmI3MGQ2N2Q1OGQ2ZjVlODZiMGViNzY2MzFkMWNlNTRiZC4uMjhmNzAyZGIy
MzA2MzI0MjVkMjQyNmNlYzRmYTU2Mzg4ZmUyNzk4ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvZWRpdGluZy9Db21wb3NpdGVFZGl0Q29tbWFuZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvQ29tcG9zaXRlRWRpdENvbW1hbmQuaApAQCAtMTA0LDYgKzEwNCw5IEBAIHByb3RlY3Rl
ZDoKICAgICB2b2lkIGRlbGV0ZVNlbGVjdGlvbihib29sIHNtYXJ0RGVsZXRlID0gZmFsc2UsIGJv
b2wgbWVyZ2VCbG9ja3NBZnRlckRlbGV0ZSA9IHRydWUsIGJvb2wgcmVwbGFjZSA9IGZhbHNlLCBi
b29sIGV4cGFuZEZvclNwZWNpYWxFbGVtZW50cyA9IHRydWUsIGJvb2wgc2FuaXRpemVNYXJrdXAg
PSB0cnVlKTsKICAgICB2b2lkIGRlbGV0ZVNlbGVjdGlvbihjb25zdCBWaXNpYmxlU2VsZWN0aW9u
JiwgYm9vbCBzbWFydERlbGV0ZSA9IGZhbHNlLCBib29sIG1lcmdlQmxvY2tzQWZ0ZXJEZWxldGUg
PSB0cnVlLCBib29sIHJlcGxhY2UgPSBmYWxzZSwgYm9vbCBleHBhbmRGb3JTcGVjaWFsRWxlbWVu
dHMgPSB0cnVlLCBib29sIHNhbml0aXplTWFya3VwID0gdHJ1ZSk7CiAgICAgdmlydHVhbCB2b2lk
IGRlbGV0ZVRleHRGcm9tTm9kZShQYXNzUmVmUHRyPFRleHQ+LCB1bnNpZ25lZCBvZmZzZXQsIHVu
c2lnbmVkIGNvdW50KTsKKyNpZiBQTEFURk9STShJT1MpCisgICAgdm9pZCBpbnB1dFRleHQoY29u
c3QgU3RyaW5nJiwgYm9vbCBzZWxlY3RJbnNlcnRlZFRleHQgPSBmYWxzZSk7CisjZW5kaWYKICAg
ICBib29sIGlzUmVtb3ZhYmxlQmxvY2soY29uc3QgTm9kZSopOwogICAgIHZvaWQgaW5zZXJ0Tm9k
ZUFmdGVyKFBhc3NSZWZQdHI8Tm9kZT4sIFBhc3NSZWZQdHI8Tm9kZT4gcmVmQ2hpbGQpOwogICAg
IHZvaWQgaW5zZXJ0Tm9kZUF0KFBhc3NSZWZQdHI8Tm9kZT4sIGNvbnN0IFBvc2l0aW9uJik7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0RlbGV0ZUJ1dHRvbi5oIGIvU291cmNl
L1dlYkNvcmUvZWRpdGluZy9EZWxldGVCdXR0b24uaAppbmRleCBkZWMxZmNhM2I1YmVkYWEyM2Fm
ZWE5YmUwZDEwZGI1ZGU0ZTkzMWUzLi4zNGU0Y2MwNWM0MzJhYjE2MDUxMzMwYTJmMTUzODkxMmY3
ZmE0YzRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0RlbGV0ZUJ1dHRvbi5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRGVsZXRlQnV0dG9uLmgKQEAgLTM0LDcgKzM0
LDkgQEAgY2xhc3MgRGVsZXRlQnV0dG9uIDogcHVibGljIEhUTUxJbWFnZUVsZW1lbnQgewogcHVi
bGljOgogICAgIHN0YXRpYyBQYXNzUmVmUHRyPERlbGV0ZUJ1dHRvbj4gY3JlYXRlKERvY3VtZW50
Jik7CiAKKyNpZiAhUExBVEZPUk0oSU9TKQogICAgIHZpcnR1YWwgYm9vbCB3aWxsUmVzcG9uZFRv
TW91c2VDbGlja0V2ZW50cygpIE9WRVJSSURFIHsgcmV0dXJuIHRydWU7IH0KKyNlbmRpZiAvLyAh
UExBVEZPUk0oSU9TKQogCiBwcml2YXRlOgogICAgIGV4cGxpY2l0IERlbGV0ZUJ1dHRvbihEb2N1
bWVudCYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9EZWxldGVCdXR0b25D
b250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRGVsZXRlQnV0dG9uQ29udHJv
bGxlci5jcHAKaW5kZXggZWY3ODZiOWI3YzNlNzViOWYzYWMzMzkzMzA2M2U4NjkzM2Y2NjcwNC4u
YTc4NzY5YzNmMzNjMDBkMWJlZmM0NmJkNWQwMThhNjljMmQ5MjRhMyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvZWRpdGluZy9EZWxldGVCdXR0b25Db250cm9sbGVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL0RlbGV0ZUJ1dHRvbkNvbnRyb2xsZXIuY3BwCkBAIC0zMzEsNiAr
MzMxLDcgQEAgdm9pZCBEZWxldGVCdXR0b25Db250cm9sbGVyOjpoaWRlKCkKIAogdm9pZCBEZWxl
dGVCdXR0b25Db250cm9sbGVyOjplbmFibGUoKQogeworI2lmICFQTEFURk9STShJT1MpCiAgICAg
QVNTRVJUKG1fZGlzYWJsZVN0YWNrID4gMCk7CiAgICAgaWYgKG1fZGlzYWJsZVN0YWNrID4gMCkK
ICAgICAgICAgbV9kaXNhYmxlU3RhY2stLTsKQEAgLTM0MSwxMyArMzQyLDE2IEBAIHZvaWQgRGVs
ZXRlQnV0dG9uQ29udHJvbGxlcjo6ZW5hYmxlKCkKICAgICAgICAgbV9mcmFtZS5kb2N1bWVudCgp
LT51cGRhdGVTdHlsZUlmTmVlZGVkKCk7CiAgICAgICAgIHNob3coZW5jbG9zaW5nRGVsZXRhYmxl
RWxlbWVudChtX2ZyYW1lLnNlbGVjdGlvbigpLnNlbGVjdGlvbigpKSk7CiAgICAgfQorI2VuZGlm
CiB9CiAKIHZvaWQgRGVsZXRlQnV0dG9uQ29udHJvbGxlcjo6ZGlzYWJsZSgpCiB7CisjaWYgIVBM
QVRGT1JNKElPUykKICAgICBpZiAoZW5hYmxlZCgpKQogICAgICAgICBoaWRlKCk7CiAgICAgbV9k
aXNhYmxlU3RhY2srKzsKKyNlbmRpZgogfQogCiBjbGFzcyBSZW1vdmVUYXJnZXRDb21tYW5kIDog
cHVibGljIENvbXBvc2l0ZUVkaXRDb21tYW5kIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvRGVsZXRlU2VsZWN0aW9uQ29tbWFuZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL0RlbGV0ZVNlbGVjdGlvbkNvbW1hbmQuY3BwCmluZGV4IGIzYWM1MDA1YzQxOGZkY2E1ZDFj
MmUyYjZhOGJiYWNkNzdkMWQ0ZjcuLjJiNTQ1N2ZjMzJlMDJiNjNlMGE4OTNiNDc4ZDJlZjdkNjll
MWQ3MTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRGVsZXRlU2VsZWN0aW9u
Q29tbWFuZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9EZWxldGVTZWxlY3Rpb25D
b21tYW5kLmNwcApAQCAtODYxLDcgKzg2MSwyNCBAQCB2b2lkIERlbGV0ZVNlbGVjdGlvbkNvbW1h
bmQ6OmRvQXBwbHkoKQogICAgICAgICBpbnNlcnROb2RlQXQocGxhY2Vob2xkZXIuZ2V0KCksIG1f
ZW5kaW5nUG9zaXRpb24pOwogICAgIH0KIAorI2lmIFBMQVRGT1JNKElPUykKKyAgICAvLyBUaGlz
IGNoZWNraW5nIGlzIGR1ZSB0byBpcGhvbmUgc2hvd3MgdGhlIGxhc3QgZW50ZXJlZCBjaGFyYWN0
ZXIgbW9tZW50YXJpbHksIHJlbW92aW5nIGFuZCBhZGRpbmcgYmFjayB0aGUgCisgICAgLy8gc3Bh
Y2Ugd2hlbiBkZWxldGluZyBwYXNzd29yZCBjYXVzZSBzcGFjZSBiZWVuIHNob3dlZCBpbnNlY3Vy
ZWx5LgorICAgIGJvb2wgaXNTZWN1cmUgPSBOTzsKKyAgICBOb2RlKiBub2RlID0gbV9lbmRpbmdQ
b3NpdGlvbi5kZXByZWNhdGVkTm9kZSgpOworICAgIGlmIChub2RlICYmIG5vZGUtPmlzVGV4dE5v
ZGUoKSkgeworICAgICAgICBUZXh0KiB0ZXh0Tm9kZSA9IHN0YXRpY19jYXN0PFRleHQqPihub2Rl
KTsgICAgCisgICAgICAgIGlmICh0ZXh0Tm9kZS0+bGVuZ3RoKCkgPiAwKSB7CisgICAgICAgICAg
ICBSZW5kZXJPYmplY3QqIHJlbmRlcmVyID0gdGV4dE5vZGUtPnJlbmRlcmVyKCk7CisgICAgICAg
ICAgICBpc1NlY3VyZSA9IHJlbmRlcmVyLT5zdHlsZSgpLnRleHRTZWN1cml0eSgpICE9IFRTTk9O
RTsKKyAgICAgICAgfQorICAgIH0KKyAgICAgICAgCisgICAgaWYgKCFpc1NlY3VyZSkKKyAgICAg
ICAgcmViYWxhbmNlV2hpdGVzcGFjZUF0KG1fZW5kaW5nUG9zaXRpb24pOworI2Vsc2UKICAgICBy
ZWJhbGFuY2VXaGl0ZXNwYWNlQXQobV9lbmRpbmdQb3NpdGlvbik7CisjZW5kaWYKIAogICAgIGNh
bGN1bGF0ZVR5cGluZ1N0eWxlQWZ0ZXJEZWxldGUoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvZWRpdGluZy9EZWxldGVTZWxlY3Rpb25Db21tYW5kLmggYi9Tb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL0RlbGV0ZVNlbGVjdGlvbkNvbW1hbmQuaAppbmRleCAzNDJiNGI3OTQ1NGJiYzJlMTA4
MjVlYTdkOTdlZGNiMzRlOWFhMmU3Li40YzBmNzIzZGVlNDM3N2FhOGQxYTg0ZWYxMGM3N2JmM2Zl
MzFiNzMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0RlbGV0ZVNlbGVjdGlv
bkNvbW1hbmQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0RlbGV0ZVNlbGVjdGlvbkNv
bW1hbmQuaApAQCAtNDMsOCArNDMsMTAgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gYWRvcHRS
ZWYobmV3IERlbGV0ZVNlbGVjdGlvbkNvbW1hbmQoc2VsZWN0aW9uLCBzbWFydERlbGV0ZSwgbWVy
Z2VCbG9ja3NBZnRlckRlbGV0ZSwgcmVwbGFjZSwgZXhwYW5kRm9yU3BlY2lhbEVsZW1lbnRzLCBz
YW5pdGl6ZU1hcmt1cCkpOwogICAgIH0KIAotcHJpdmF0ZToKK3Byb3RlY3RlZDoKICAgICBEZWxl
dGVTZWxlY3Rpb25Db21tYW5kKERvY3VtZW50JiwgYm9vbCBzbWFydERlbGV0ZSwgYm9vbCBtZXJn
ZUJsb2Nrc0FmdGVyRGVsZXRlLCBib29sIHJlcGxhY2UsIGJvb2wgZXhwYW5kRm9yU3BlY2lhbEVs
ZW1lbnRzLCBib29sIHNhbnRpemVNYXJrdXApOworCitwcml2YXRlOgogICAgIERlbGV0ZVNlbGVj
dGlvbkNvbW1hbmQoY29uc3QgVmlzaWJsZVNlbGVjdGlvbiYsIGJvb2wgc21hcnREZWxldGUsIGJv
b2wgbWVyZ2VCbG9ja3NBZnRlckRlbGV0ZSwgYm9vbCByZXBsYWNlLCBib29sIGV4cGFuZEZvclNw
ZWNpYWxFbGVtZW50cywgYm9vbCBzYW5pdGl6ZU1hcmt1cCk7CiAKICAgICB2aXJ0dWFsIHZvaWQg
ZG9BcHBseSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0QWN0aW9u
LmggYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRBY3Rpb24uaAppbmRleCA5MTJlOTMxMmIz
ZWEyMjdmNjgwYjMyOTlmMGU5N2QwZjQ3ZDZkYzM4Li4zZDM5NzU5OWI1ZjNjZGU1OTE5NGFkMTU2
MWJjYjMzZjBhYTk5NTE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRB
Y3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRBY3Rpb24uaApAQCAtNTcs
NiArNTcsMTAgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBFZGl0QWN0aW9uQ3V0LAog
ICAgICAgICBFZGl0QWN0aW9uQm9sZCwKICAgICAgICAgRWRpdEFjdGlvbkl0YWxpY3MsCisjaWYg
UExBVEZPUk0oSU9TKQorICAgICAgICBFZGl0QWN0aW9uRGVsZXRlLAorICAgICAgICBFZGl0QWN0
aW9uRGljdGF0aW9uLAorI2VuZGlmCiAgICAgICAgIEVkaXRBY3Rpb25QYXN0ZSwKICAgICAgICAg
RWRpdEFjdGlvblBhc3RlRm9udCwKICAgICAgICAgRWRpdEFjdGlvblBhc3RlUnVsZXIsCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRDb21tYW5kLmggYi9Tb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL0VkaXRDb21tYW5kLmgKaW5kZXggMmUzNGFhZmJjNzkyODgxZDE3OTZiZmE0
MzEwODI2YjIxYjNkYzkyMy4uMjRjNDEwNDdhMTg3NjhkY2IxZTM5OTA5NTExOGQ2YjNlZWViOWJh
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0Q29tbWFuZC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdENvbW1hbmQuaApAQCAtNTEsNiArNTEsMTAgQEAg
cHVibGljOgogICAgIGNvbnN0IFZpc2libGVTZWxlY3Rpb24mIHN0YXJ0aW5nU2VsZWN0aW9uKCkg
Y29uc3QgeyByZXR1cm4gbV9zdGFydGluZ1NlbGVjdGlvbjsgfQogICAgIGNvbnN0IFZpc2libGVT
ZWxlY3Rpb24mIGVuZGluZ1NlbGVjdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fZW5kaW5nU2VsZWN0
aW9uOyB9CiAKKyNpZiBQTEFURk9STShJT1MpCisgICAgdmlydHVhbCBib29sIGlzSW5zZXJ0VGV4
dENvbW1hbmQoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQorI2VuZGlmCisgICAgCiAgICAgdmly
dHVhbCBib29sIGlzU2ltcGxlRWRpdENvbW1hbmQoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQog
ICAgIHZpcnR1YWwgYm9vbCBpc0NvbXBvc2l0ZUVkaXRDb21tYW5kKCkgY29uc3QgeyByZXR1cm4g
ZmFsc2U7IH0KICAgICB2aXJ0dWFsIGJvb2wgaXNFZGl0Q29tbWFuZENvbXBvc2l0aW9uKCkgY29u
c3QgeyByZXR1cm4gZmFsc2U7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
RWRpdGluZ1N0eWxlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdGluZ1N0eWxlLmNw
cAppbmRleCBhZGRkYjEyYTg3Njg1ZWVlZGEwZDlmYTdlOTdjY2JmNjYyMWQ5ODExLi4zNjRmZjgw
NTRjY2ZlNDFkOGNiMDJiZDYzYzY0ZmY1NDNhNTA3OTg3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL0VkaXRpbmdTdHlsZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9FZGl0aW5nU3R5bGUuY3BwCkBAIC03MSw2ICs3MSwxMCBAQCBzdGF0aWMgY29uc3QgQ1NTUHJv
cGVydHlJRCBlZGl0aW5nUHJvcGVydGllc1tdID0gewogICAgIENTU1Byb3BlcnR5V2hpdGVTcGFj
ZSwKICAgICBDU1NQcm9wZXJ0eVdpZG93cywKICAgICBDU1NQcm9wZXJ0eVdvcmRTcGFjaW5nLAor
I2lmIFBMQVRGT1JNKElPUykKKyAgICBDU1NQcm9wZXJ0eVdlYmtpdFRhcEhpZ2hsaWdodENvbG9y
LAorICAgIENTU1Byb3BlcnR5V2Via2l0Q29tcG9zaXRpb25GaWxsQ29sb3IsCisjZW5kaWYKICAg
ICBDU1NQcm9wZXJ0eVdlYmtpdFRleHREZWNvcmF0aW9uc0luRWZmZWN0LAogICAgIENTU1Byb3Bl
cnR5V2Via2l0VGV4dEZpbGxDb2xvciwKICNpZiBFTkFCTEUoSU9TX1RFWFRfQVVUT1NJWklORykK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcAppbmRleCBjNzEzYjFiZTNhNTliMmExOTUxYzM2NzM1
YWJiMWUyOGQxMjI4YzE2Li4xMzFjZjc3MTI4YzhjMjRiNWI1NmVmMWI2OGQzNGI3Mzc2NDgzYmY3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwCkBAIC05NSw4ICs5NSw1MCBAQAogI2luY2x1
ZGUgIkRlbGV0ZUJ1dHRvbkNvbnRyb2xsZXIuaCIKICNlbmRpZgogCisjaWYgUExBVEZPUk0oSU9T
KQorI2luY2x1ZGUgIkRpY3RhdGlvbkNvbW1hbmRJT1MuaCIKKyNpbmNsdWRlIDx3dGYvdGV4dC9T
dHJpbmdCdWlsZGVyLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CisjZW5kaWYK
KwogbmFtZXNwYWNlIFdlYkNvcmUgewogCisjaWYgUExBVEZPUk0oSU9TKQorY2xhc3MgQ2xlYXJU
ZXh0Q29tbWFuZCA6IHB1YmxpYyBEZWxldGVTZWxlY3Rpb25Db21tYW5kIHsKK3B1YmxpYzoKKyAg
ICBDbGVhclRleHRDb21tYW5kKERvY3VtZW50JiBkb2N1bWVudCk7CisgICAgc3RhdGljIHZvaWQg
Q3JlYXRlQW5kQXBwbHkoY29uc3QgUmVmUHRyPEZyYW1lPiBmcmFtZSk7CisgICAgCitwcml2YXRl
OgorICAgIHZpcnR1YWwgRWRpdEFjdGlvbiBlZGl0aW5nQWN0aW9uKCkgY29uc3Q7Cit9OworCitD
bGVhclRleHRDb21tYW5kOjpDbGVhclRleHRDb21tYW5kKERvY3VtZW50JiBkb2N1bWVudCkKKyAg
ICA6IERlbGV0ZVNlbGVjdGlvbkNvbW1hbmQoZG9jdW1lbnQsIGZhbHNlLCB0cnVlLCBmYWxzZSwg
ZmFsc2UsIHRydWUpCit7Cit9CisKK0VkaXRBY3Rpb24gQ2xlYXJUZXh0Q29tbWFuZDo6ZWRpdGlu
Z0FjdGlvbigpIGNvbnN0Cit7CisgICAgcmV0dXJuIEVkaXRBY3Rpb25EZWxldGU7Cit9CisKK3Zv
aWQgQ2xlYXJUZXh0Q29tbWFuZDo6Q3JlYXRlQW5kQXBwbHkoY29uc3QgUmVmUHRyPEZyYW1lPiBm
cmFtZSkKK3sKKyAgICBpZiAoZnJhbWUtPnNlbGVjdGlvbigpLmlzTm9uZSgpKQorICAgICAgICBy
ZXR1cm47CisKKyAgICAvLyBEb24ndCBsZWF2ZSBhcm91bmQgc3RhbGUgY29tcG9zaXRpb24gc3Rh
dGUuCisgICAgZnJhbWUtPmVkaXRvcigpLmNsZWFyKCk7CisgICAgCisgICAgY29uc3QgVmlzaWJs
ZVNlbGVjdGlvbiBvbGRTZWxlY3Rpb24gPSBmcmFtZS0+c2VsZWN0aW9uKCkuc2VsZWN0aW9uKCk7
CisgICAgZnJhbWUtPnNlbGVjdGlvbigpLnNlbGVjdEFsbCgpOworICAgIFJlZlB0cjxDbGVhclRl
eHRDb21tYW5kPiBjbGVhckNvbW1hbmQgPSBhZG9wdFJlZihuZXcgQ2xlYXJUZXh0Q29tbWFuZCgq
ZnJhbWUtPmRvY3VtZW50KCkpKTsKKyAgICBjbGVhckNvbW1hbmQtPnNldFN0YXJ0aW5nU2VsZWN0
aW9uKG9sZFNlbGVjdGlvbik7CisgICAgYXBwbHlDb21tYW5kKGNsZWFyQ29tbWFuZC5yZWxlYXNl
KCkpOworfQorI2VuZGlmCisKIHVzaW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7CiB1c2luZyBuYW1l
c3BhY2UgV1RGOwogdXNpbmcgbmFtZXNwYWNlIFVuaWNvZGU7CkBAIC0yMTgsNyArMjYwLDE1IEBA
IGJvb2wgRWRpdG9yOjpoYW5kbGVUZXh0RXZlbnQoVGV4dEV2ZW50KiBldmVudCkKIAogICAgIGlm
IChldmVudC0+aXNQYXN0ZSgpKSB7CiAgICAgICAgIGlmIChldmVudC0+cGFzdGluZ0ZyYWdtZW50
KCkpCisjaWYgUExBVEZPUk0oSU9TKQorICAgICAgICB7CisgICAgICAgICAgICBpZiAoY2xpZW50
KCktPnBlcmZvcm1zVHdvU3RlcFBhc3RlKGV2ZW50LT5wYXN0aW5nRnJhZ21lbnQoKSkpCisgICAg
ICAgICAgICAgICAgcmV0dXJuIHRydWU7CisjZW5kaWYKICAgICAgICAgICAgIHJlcGxhY2VTZWxl
Y3Rpb25XaXRoRnJhZ21lbnQoZXZlbnQtPnBhc3RpbmdGcmFnbWVudCgpLCBmYWxzZSwgZXZlbnQt
PnNob3VsZFNtYXJ0UmVwbGFjZSgpLCBldmVudC0+c2hvdWxkTWF0Y2hTdHlsZSgpKTsKKyNpZiBQ
TEFURk9STShJT1MpCisgICAgICAgIH0KKyNlbmRpZgogICAgICAgICBlbHNlIAogICAgICAgICAg
ICAgcmVwbGFjZVNlbGVjdGlvbldpdGhUZXh0KGV2ZW50LT5kYXRhKCksIGZhbHNlLCBldmVudC0+
c2hvdWxkU21hcnRSZXBsYWNlKCkpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKQEAgLTM5MSw2ICs0
NDEsODQgQEAgdm9pZCBFZGl0b3I6OmRlbGV0ZVNlbGVjdGlvbldpdGhTbWFydERlbGV0ZShib29s
IHNtYXJ0RGVsZXRlKQogICAgIGFwcGx5Q29tbWFuZChEZWxldGVTZWxlY3Rpb25Db21tYW5kOjpj
cmVhdGUoZG9jdW1lbnQoKSwgc21hcnREZWxldGUpKTsKIH0KIAorI2lmIFBMQVRGT1JNKElPUykK
K3ZvaWQgRWRpdG9yOjpjbGVhclRleHQoKQoreworICAgIENsZWFyVGV4dENvbW1hbmQ6OkNyZWF0
ZUFuZEFwcGx5KCZtX2ZyYW1lKTsKK30KKwordm9pZCBFZGl0b3I6Omluc2VydERpY3RhdGlvblBo
cmFzZXMoUGFzc093blB0cjxWZWN0b3I8VmVjdG9yPFN0cmluZz4gPiA+IGRpY3RhdGlvblBocmFz
ZXMsIFJldGFpblB0cjxpZD4gbWV0YWRhdGEpCit7CisgICAgaWYgKG1fZnJhbWUuc2VsZWN0aW9u
KCkuaXNOb25lKCkpCisgICAgICAgIHJldHVybjsKKyAgICAgICAgCisgICAgaWYgKGRpY3RhdGlv
blBocmFzZXMtPmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuOworICAgICAgICAKKyAgICBhcHBs
eUNvbW1hbmQoRGljdGF0aW9uQ29tbWFuZElPUzo6Y3JlYXRlKGRvY3VtZW50KCksIGRpY3RhdGlv
blBocmFzZXMsIG1ldGFkYXRhKSk7Cit9CisKK3ZvaWQgRWRpdG9yOjpzZXREaWN0YXRpb25QaHJh
c2VzQXNDaGlsZE9mRWxlbWVudChQYXNzT3duUHRyPFZlY3RvcjxWZWN0b3I8U3RyaW5nPiA+ID4g
ZGljdGF0aW9uUGhyYXNlcywgUmV0YWluUHRyPGlkPiBtZXRhZGF0YSwgRWxlbWVudCogZWxlbWVu
dCkKK3sKKyAgICAvLyBDbGVhciB0aGUgY29tcG9zaXRpb24uCisgICAgY2xlYXIoKTsKKyAgICAK
KyAgICAvLyBDbGVhciB0aGUgVW5kbyBzdGFjaywgc2luY2UgdGhlIG9wZXJhdGlvbnMgdGhhdCBm
b2xsb3cgYXJlIG5vdCBVbmRvYWJsZSwgYW5kIHdpbGwgY29ycnVwdCB0aGUgc3RhY2suICBTb21l
IGRheQorICAgIC8vIHdlIGNvdWxkIG1ha2UgdGhlbSBVbmRvYWJsZSwgYW5kIGxldCBjYWxsZXJz
IGNsZWFyIHRoZSBVbmRvIHN0YWNrIGV4cGxpY2l0bHkgaWYgdGhleSB3aXNoLgorICAgIGNsZWFy
VW5kb1JlZG9PcGVyYXRpb25zKCk7CisgICAgCisgICAgbV9mcmFtZS5zZWxlY3Rpb24oKS5jbGVh
cigpOworICAgIAorICAgIGVsZW1lbnQtPnJlbW92ZUNoaWxkcmVuKCk7CisgICAgCisgICAgaWYg
KGRpY3RhdGlvblBocmFzZXMtPmlzRW1wdHkoKSkgeworICAgICAgICBjbGllbnQoKS0+cmVzcG9u
ZFRvQ2hhbmdlZENvbnRlbnRzKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgCisgICAg
RXhjZXB0aW9uQ29kZSBlYzsgICAgCisgICAgUmVmUHRyPFJhbmdlPiBjb250ZXh0ID0gZG9jdW1l
bnQoKS5jcmVhdGVSYW5nZSgpOworICAgIGNvbnRleHQtPnNlbGVjdE5vZGVDb250ZW50cyhlbGVt
ZW50LCBlYyk7CisgICAgCisgICAgU3RyaW5nQnVpbGRlciBkaWN0YXRpb25QaHJhc2VzQnVpbGRl
cjsKKyAgICBzaXplX3QgZGljdGF0aW9uUGhyYXNlQ291bnQgPSBkaWN0YXRpb25QaHJhc2VzLT5z
aXplKCk7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBkaWN0YXRpb25QaHJhc2VDb3VudDsg
aSsrKSB7CisgICAgICAgIGNvbnN0IFN0cmluZyYgZmlyc3RJbnRlcnByZXRhdGlvbiA9IGRpY3Rh
dGlvblBocmFzZXMtPmF0KGkpWzBdOworICAgICAgICBkaWN0YXRpb25QaHJhc2VzQnVpbGRlci5h
cHBlbmQoZmlyc3RJbnRlcnByZXRhdGlvbik7CisgICAgfQorICAgIFN0cmluZyBzZXJpYWxpemVk
RGljdGF0aW9uUGhyYXNlcyA9IGRpY3RhdGlvblBocmFzZXNCdWlsZGVyLnRvU3RyaW5nKCk7Cisg
ICAgCisgICAgZWxlbWVudC0+YXBwZW5kQ2hpbGQoY3JlYXRlRnJhZ21lbnRGcm9tVGV4dCgqY29u
dGV4dC5nZXQoKSwgc2VyaWFsaXplZERpY3RhdGlvblBocmFzZXMpLCBlYyk7CisgICAgCisgICAg
Ly8gV2UgbmVlZCBhIGxheW91dCBpbiBvcmRlciB0byBhZGQgbWFya2VycyBiZWxvdy4KKyAgICBk
b2N1bWVudCgpLnVwZGF0ZUxheW91dCgpOworICAgIAorICAgIGlmICghZWxlbWVudC0+Zmlyc3RD
aGlsZCgpLT5pc1RleHROb2RlKCkpIHsKKyAgICAgICAgLy8gU2hvdWxkbid0IGhhcHBlbi4KKyAg
ICAgICAgQVNTRVJUKGVsZW1lbnQtPmZpcnN0Q2hpbGQoKS0+aXNUZXh0Tm9kZSgpKTsKKyAgICAg
ICAgcmV0dXJuOworICAgIH0KKyAgICAgICAgCisgICAgVGV4dCogdGV4dE5vZGUgPSBzdGF0aWNf
Y2FzdDxUZXh0Kj4oZWxlbWVudC0+Zmlyc3RDaGlsZCgpKTsKKyAgICBpbnQgcHJldmlvdXNEaWN0
YXRpb25QaHJhc2VTdGFydCA9IDA7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBkaWN0YXRp
b25QaHJhc2VDb3VudDsgaSsrKSB7CisgICAgICAgIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBpbnRl
cnByZXRhdGlvbnMgPSBkaWN0YXRpb25QaHJhc2VzLT5hdChpKTsKKyAgICAgICAgaW50IGRpY3Rh
dGlvblBocmFzZUxlbmd0aCA9IGludGVycHJldGF0aW9uc1swXS5sZW5ndGgoKTsKKyAgICAgICAg
aW50IGRpY3RhdGlvblBocmFzZUVuZCA9IHByZXZpb3VzRGljdGF0aW9uUGhyYXNlU3RhcnQgKyBk
aWN0YXRpb25QaHJhc2VMZW5ndGg7CisgICAgICAgIGlmIChpbnRlcnByZXRhdGlvbnMuc2l6ZSgp
ID4gMSkgeworICAgICAgICAgICAgUmVmUHRyPFJhbmdlPiBkaWN0YXRpb25QaHJhc2VSYW5nZSA9
IFJhbmdlOjpjcmVhdGUoZG9jdW1lbnQoKSwgdGV4dE5vZGUsIHByZXZpb3VzRGljdGF0aW9uUGhy
YXNlU3RhcnQsIHRleHROb2RlLCBkaWN0YXRpb25QaHJhc2VFbmQpOworICAgICAgICAgICAgZG9j
dW1lbnQoKS5tYXJrZXJzKCkuYWRkRGljdGF0aW9uUGhyYXNlV2l0aEFsdGVybmF0aXZlc01hcmtl
cihkaWN0YXRpb25QaHJhc2VSYW5nZS5nZXQoKSwgaW50ZXJwcmV0YXRpb25zKTsKKyAgICAgICAg
fQorICAgICAgICBwcmV2aW91c0RpY3RhdGlvblBocmFzZVN0YXJ0ID0gZGljdGF0aW9uUGhyYXNl
RW5kOworICAgIH0KKyAgICAKKyAgICBSZWZQdHI8UmFuZ2U+IHJlc3VsdFJhbmdlID0gUmFuZ2U6
OmNyZWF0ZShkb2N1bWVudCgpLCB0ZXh0Tm9kZSwgMCwgdGV4dE5vZGUsIHRleHROb2RlLT5sZW5n
dGgoKSk7CisgICAgZG9jdW1lbnQoKS5tYXJrZXJzKCkuYWRkRGljdGF0aW9uUmVzdWx0TWFya2Vy
KHJlc3VsdFJhbmdlLmdldCgpLCBtZXRhZGF0YSk7CisgICAgCisgICAgY2xpZW50KCktPnJlc3Bv
bmRUb0NoYW5nZWRDb250ZW50cygpOworfQorI2VuZGlmCisKIHZvaWQgRWRpdG9yOjpwYXN0ZUFz
UGxhaW5UZXh0KGNvbnN0IFN0cmluZyYgcGFzdGluZ1RleHQsIGJvb2wgc21hcnRSZXBsYWNlKQog
ewogICAgIE5vZGUqIHRhcmdldCA9IGZpbmRFdmVudFRhcmdldEZyb21TZWxlY3Rpb24oKTsKQEAg
LTUwNyw2ICs2MzUsODYgQEAgUGFzc1JlZlB0cjxSYW5nZT4gRWRpdG9yOjpzZWxlY3RlZFJhbmdl
KCkKICAgICByZXR1cm4gbV9mcmFtZS5zZWxlY3Rpb24oKS50b05vcm1hbGl6ZWRSYW5nZSgpOwog
fQogCisjaWYgUExBVEZPUk0oSU9TKQordm9pZCBFZGl0b3I6OmNvbmZpcm1NYXJrZWRUZXh0KCkK
K3sKKyAgICAvLyBGSVhNRTogVGhpcyBpcyBhIGhhY2t5IHdvcmthcm91bmQgZm9yIHRoZSBrZXli
b2FyZCBjYWxsaW5nIHRoaXMgbWV0aG9kIHRvbyBsYXRlIC0KKyAgICAvLyBhZnRlciB0aGUgc2Vs
ZWN0aW9uIGFuZCBmb2N1cyBoYXZlIGFscmVhZHkgY2hhbmdlZC4gIFNlZSA8cmRhcjovL3Byb2Js
ZW0vNTk3NTU1OT4KKyAgICBFbGVtZW50KiBmb2N1c2VkID0gZG9jdW1lbnQoKS5mb2N1c2VkRWxl
bWVudCgpOworICAgIE5vZGUqIGNvbXBvc2l0aW9uID0gY29tcG9zaXRpb25Ob2RlKCk7CisgICAg
CisgICAgaWYgKGNvbXBvc2l0aW9uICYmIGZvY3VzZWQgJiYgZm9jdXNlZCAhPSBjb21wb3NpdGlv
biAmJiAhY29tcG9zaXRpb24tPmlzRGVzY2VuZGFudE9yU2hhZG93RGVzY2VuZGFudE9mKGZvY3Vz
ZWQpKSB7CisgICAgICAgIGNhbmNlbENvbXBvc2l0aW9uKCk7CisgICAgICAgIGRvY3VtZW50KCku
c2V0Rm9jdXNlZEVsZW1lbnQoZm9jdXNlZCk7CisgICAgfSBlbHNlCisgICAgICAgIGNvbmZpcm1D
b21wb3NpdGlvbigpOworfQorCit2b2lkIEVkaXRvcjo6c2V0VGV4dEFzQ2hpbGRPZkVsZW1lbnQo
Y29uc3QgU3RyaW5nJiB0ZXh0LCBFbGVtZW50KiBlbGVtKQoreworICAgIC8vIENsZWFyIHRoZSBj
b21wb3NpdGlvbgorICAgIGNsZWFyKCk7CisgICAgCisgICAgLy8gQ2xlYXIgdGhlIFVuZG8gc3Rh
Y2ssIHNpbmNlIHRoZSBvcGVyYXRpb25zIHRoYXQgZm9sbG93IGFyZSBub3QgVW5kb2FibGUsIGFu
ZCB3aWxsIGNvcnJ1cHQgdGhlIHN0YWNrLiAgU29tZSBkYXkKKyAgICAvLyB3ZSBjb3VsZCBtYWtl
IHRoZW0gVW5kb2FibGUsIGFuZCBsZXQgY2FsbGVycyBjbGVhciB0aGUgVW5kbyBzdGFjayBleHBs
aWNpdGx5IGlmIHRoZXkgd2lzaC4KKyAgICBjbGVhclVuZG9SZWRvT3BlcmF0aW9ucygpOworICAg
IAorICAgIC8vIElmIHRoZSBlbGVtZW50IGlzIGVtcHR5IGFscmVhZHkgYW5kIHdlJ3JlIG5vdCBh
ZGRpbmcgdGV4dCwgd2UgY2FuIGVhcmx5IHJldHVybiBhbmQgYXZvaWQgY2xlYXJpbmcvc2V0dGlu
ZworICAgIC8vIGEgc2VsZWN0aW9uIGF0IFswLCAwXSBhbmQgdGhlIGV4cGVuc2UgaW52b2x2ZWQg
aW4gY3JlYXRpb24gVmlzaWJsZVBvc2l0aW9ucy4KKyAgICBpZiAoIWVsZW0tPmZpcnN0Q2hpbGQo
KSAmJiB0ZXh0LmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuOworICAgIAorICAgIC8vIEFzIGEg
c2lkZSBlZmZlY3QgdGhpcyBmdW5jdGlvbiBzZXRzIGEgY2FyZXQgc2VsZWN0aW9uIGFmdGVyIHRo
ZSBpbnNlcnRlZCBjb250ZW50LiAgTXVjaCBvZiB3aGF0IAorICAgIC8vIGZvbGxvd3MgaXMgbW9y
ZSBleHBlbnNpdmUgaWYgdGhlcmUgaXMgYSBzZWxlY3Rpb24sIHNvIGNsZWFyIGl0IHNpbmNlIGl0
J3MgZ29pbmcgdG8gY2hhbmdlIGFueXdheS4KKyAgICBtX2ZyYW1lLnNlbGVjdGlvbigpLmNsZWFy
KCk7CisgICAgCisgICAgLy8gY2xlYXIgb3V0IGFsbCBjdXJyZW50IGNoaWxkcmVuIG9mIGVsZW1l
bnQKKyAgICBlbGVtLT5yZW1vdmVDaGlsZHJlbigpOworCisgICAgaWYgKHRleHQubGVuZ3RoKCkp
IHsKKyAgICAgICAgLy8gaW5zZXJ0IG5ldyB0ZXh0CisgICAgICAgIC8vIHJlbW92ZSBlbGVtZW50
IGZyb20gdHJlZSB3aGlsZSBkb2luZyBpdAorICAgICAgICAvLyBGSVhNRTogVGhlIGVsZW1lbnQg
d2UncmUgaW5zZXJ0aW5nIGludG8gaXMgb2Z0ZW4gdGhlIGJvZHkgZWxlbWVudC4gIEl0IHNlZW1z
IHN0cmFuZ2UgdG8gYmUgcmVtb3ZpbmcgaXQKKyAgICAgICAgLy8gKGV2ZW4gaWYgaXQgaXMgb25s
eSB0ZW1wb3JhcnkpLiAgUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQgZG9lc24ndCBib3RoZXIgZG9p
bmcgdGhpcyB3aGVuIGl0IGluc2VydHMKKyAgICAgICAgLy8gY29udGVudCwgd2h5IHNob3VsZCB3
ZSBoZXJlPworICAgICAgICBFeGNlcHRpb25Db2RlIGVjOworICAgICAgICBSZWZQdHI8Tm9kZT4g
cGFyZW50ID0gZWxlbS0+cGFyZW50Tm9kZSgpOworICAgICAgICBSZWZQdHI8Tm9kZT4gc2libGlu
Z0FmdGVyID0gZWxlbS0+bmV4dFNpYmxpbmcoKTsKKyAgICAgICAgaWYgKHBhcmVudCkKKyAgICAg
ICAgICAgIGVsZW0tPnJlbW92ZShlYyk7ICAgIAorICAgICAgICAgICAgCisgICAgICAgIFJlZlB0
cjxSYW5nZT4gY29udGV4dCA9IGRvY3VtZW50KCkuY3JlYXRlUmFuZ2UoKTsKKyAgICAgICAgY29u
dGV4dC0+c2VsZWN0Tm9kZUNvbnRlbnRzKGVsZW0sIGVjKTsKKyAgICAgICAgUmVmUHRyPERvY3Vt
ZW50RnJhZ21lbnQ+IGZyYWdtZW50ID0gY3JlYXRlRnJhZ21lbnRGcm9tVGV4dCgqY29udGV4dC5n
ZXQoKSwgdGV4dCk7CisgICAgICAgIGVsZW0tPmFwcGVuZENoaWxkKGZyYWdtZW50LCBlYyk7Cisg
ICAgCisgICAgICAgIC8vIHJlc3RvcmUgZWxlbWVudCB0byBkb2N1bWVudAorICAgICAgICBpZiAo
cGFyZW50KSB7CisgICAgICAgICAgICBpZiAoc2libGluZ0FmdGVyKQorICAgICAgICAgICAgICAg
IHBhcmVudC0+aW5zZXJ0QmVmb3JlKGVsZW0sIHNpYmxpbmdBZnRlci5nZXQoKSwgZWMpOworICAg
ICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHBhcmVudC0+YXBwZW5kQ2hpbGQoZWxlbSwg
ZWMpOworICAgICAgICB9CisgICAgfQorCisgICAgLy8gc2V0IHRoZSBzZWxlY3Rpb24gdG8gdGhl
IGVuZAorICAgIFZpc2libGVTZWxlY3Rpb24gc2VsZWN0aW9uOworCisgICAgUG9zaXRpb24gcG9z
ID0gY3JlYXRlTGVnYWN5RWRpdGluZ1Bvc2l0aW9uKGVsZW0sIGVsZW0tPmNoaWxkTm9kZUNvdW50
KCkpOworCisgICAgVmlzaWJsZVBvc2l0aW9uIHZpc2libGVQb3MocG9zLCBWUF9ERUZBVUxUX0FG
RklOSVRZKTsKKyAgICBpZiAodmlzaWJsZVBvcy5pc051bGwoKSkKKyAgICAgICAgcmV0dXJuOwor
CisgICAgc2VsZWN0aW9uLnNldEJhc2UodmlzaWJsZVBvcyk7CisgICAgc2VsZWN0aW9uLnNldEV4
dGVudCh2aXNpYmxlUG9zKTsKKyAgICAgCisgICAgbV9mcmFtZS5zZWxlY3Rpb24oKS5zZXRTZWxl
Y3Rpb24oc2VsZWN0aW9uKTsKKyAgICAKKyAgICBjbGllbnQoKS0+cmVzcG9uZFRvQ2hhbmdlZENv
bnRlbnRzKCk7Cit9CisjZW5kaWYKKwogYm9vbCBFZGl0b3I6OnNob3VsZERlbGV0ZVJhbmdlKFJh
bmdlKiByYW5nZSkgY29uc3QKIHsKICAgICBpZiAoIXJhbmdlIHx8IHJhbmdlLT5jb2xsYXBzZWQo
SUdOT1JFX0VYQ0VQVElPTikpCkBAIC01NDYsNiArNzU0LDEyIEBAIGJvb2wgRWRpdG9yOjpzaG91
bGRJbnNlcnRUZXh0KGNvbnN0IFN0cmluZyYgdGV4dCwgUmFuZ2UqIHJhbmdlLCBFZGl0b3JJbnNl
cnRBY3RpCiAKIHZvaWQgRWRpdG9yOjpub3RpZnlDb21wb25lbnRzT25DaGFuZ2VkU2VsZWN0aW9u
KGNvbnN0IFZpc2libGVTZWxlY3Rpb24mIG9sZFNlbGVjdGlvbiwgRnJhbWVTZWxlY3Rpb246OlNl
dFNlbGVjdGlvbk9wdGlvbnMgb3B0aW9ucykKIHsKKyNpZiBQTEFURk9STShJT1MpCisgICAgLy8g
RklYTUU6IE1lcmdlIHRoaXMgdG8gb3BlbiBzb3VyY2UgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTM4ODMwCisgICAgaWYgKG1faWdub3JlQ29tcG9zaXRpb25TZWxlY3Rp
b25DaGFuZ2UpCisgICAgICAgIHJldHVybjsKKyNlbmRpZgorCiAgICAgaWYgKGNsaWVudCgpKQog
ICAgICAgICBjbGllbnQoKS0+cmVzcG9uZFRvQ2hhbmdlZFNlbGVjdGlvbigmbV9mcmFtZSk7CiAg
ICAgc2V0U3RhcnROZXdLaWxsUmluZ1NlcXVlbmNlKHRydWUpOwpAQCAtNzA0LDYgKzkxOCwxNCBA
QCB2b2lkIEVkaXRvcjo6Y2xlYXJMYXN0RWRpdENvbW1hbmQoKQogewogICAgIG1fbGFzdEVkaXRD
b21tYW5kLmNsZWFyKCk7CiB9CisjaWYgUExBVEZPUk0oSU9TKQorLy8gSWYgdGhlIHNlbGVjdGlv
biBpcyBhZGp1c3RlZCBmcm9tIFVJS2l0IHdpdGhvdXQgY2xvc2luZyB0aGUgdHlwaW5nLCB0aGUg
dHlwaW5nIGNvbW1hbmQgbWF5CisvLyBoYXZlIGEgc3RhbGUgc2VsZWN0aW9uLgordm9pZCBFZGl0
b3I6OmVuc3VyZUxhc3RFZGl0Q29tbWFuZEhhc0N1cnJlbnRTZWxlY3Rpb25JZk9wZW5Gb3JNb3Jl
VHlwaW5nKCkKK3sKKyAgICBUeXBpbmdDb21tYW5kOjplbnN1cmVMYXN0RWRpdENvbW1hbmRIYXND
dXJyZW50U2VsZWN0aW9uSWZPcGVuRm9yTW9yZVR5cGluZygmbV9mcmFtZSwgbV9mcmFtZS5zZWxl
Y3Rpb24oKS5zZWxlY3Rpb24oKSk7Cit9CisjZW5kaWYKIAogLy8gUmV0dXJucyB3aGV0aGVyIGNh
bGxlciBzaG91bGQgY29udGludWUgd2l0aCAidGhlIGRlZmF1bHQgcHJvY2Vzc2luZyIsIHdoaWNo
IGlzIHRoZSBzYW1lIGFzIAogLy8gdGhlIGV2ZW50IGhhbmRsZXIgTk9UIHNldHRpbmcgdGhlIHJl
dHVybiB2YWx1ZSB0byBmYWxzZQpAQCAtMTA4OCwxMyArMTMxMCwxMyBAQCB2b2lkIEVkaXRvcjo6
Y29weSgpCiAgICAgICAgICAgICBjYW5TbWFydENvcHlPckRlbGV0ZSgpID8gUGFzdGVib2FyZDo6
Q2FuU21hcnRSZXBsYWNlIDogUGFzdGVib2FyZDo6Q2Fubm90U21hcnRSZXBsYWNlKTsKICAgICB9
IGVsc2UgewogICAgICAgICBpZiAoSFRNTEltYWdlRWxlbWVudCogaW1hZ2VFbGVtZW50ID0gaW1h
Z2VFbGVtZW50RnJvbUltYWdlRG9jdW1lbnQoZG9jdW1lbnQoKSkpIHsKLSNpZiAoUExBVEZPUk0o
TUFDKSAmJiAhUExBVEZPUk0oSU9TKSkgfHwgUExBVEZPUk0oRUZMKSB8fCBQTEFURk9STShOSVgp
CisjaWYgUExBVEZPUk0oTUFDKSB8fCBQTEFURk9STShFRkwpIHx8IFBMQVRGT1JNKE5JWCkKICAg
ICAgICAgICAgIHdyaXRlSW1hZ2VUb1Bhc3RlYm9hcmQoKlBhc3RlYm9hcmQ6OmNyZWF0ZUZvckNv
cHlBbmRQYXN0ZSgpLCAqaW1hZ2VFbGVtZW50LCBkb2N1bWVudCgpLnVybCgpLCBkb2N1bWVudCgp
LnRpdGxlKCkpOwogI2Vsc2UKICAgICAgICAgICAgIFBhc3RlYm9hcmQ6OmNyZWF0ZUZvckNvcHlB
bmRQYXN0ZSgpLT53cml0ZUltYWdlKCppbWFnZUVsZW1lbnQsIGRvY3VtZW50KCkudXJsKCksIGRv
Y3VtZW50KCkudGl0bGUoKSk7CiAjZW5kaWYKICAgICAgICAgfSBlbHNlIHsKLSNpZiAoUExBVEZP
Uk0oTUFDKSAmJiAhUExBVEZPUk0oSU9TKSkgfHwgUExBVEZPUk0oRUZMKSB8fCBQTEFURk9STShO
SVgpCisjaWYgUExBVEZPUk0oTUFDKSB8fCBQTEFURk9STShFRkwpIHx8IFBMQVRGT1JNKE5JWCkK
ICAgICAgICAgICAgIHdyaXRlU2VsZWN0aW9uVG9QYXN0ZWJvYXJkKCpQYXN0ZWJvYXJkOjpjcmVh
dGVGb3JDb3B5QW5kUGFzdGUoKSk7CiAjZWxzZQogICAgICAgICAgICAgLy8gRklYTUU6IENvbnZl
cnQgYWxsIG90aGVyIHBsYXRmb3JtcyB0byBtYXRjaCBNYWMgYW5kIGRlbGV0ZSB0aGlzLgpAQCAt
MTE2OSw2ICsxMzkxLDcgQEAgdm9pZCBFZGl0b3I6OnNpbXBsaWZ5TWFya3VwKE5vZGUqIHN0YXJ0
Tm9kZSwgTm9kZSogZW5kTm9kZSkKICAgICBhcHBseUNvbW1hbmQoU2ltcGxpZnlNYXJrdXBDb21t
YW5kOjpjcmVhdGUoZG9jdW1lbnQoKSwgc3RhcnROb2RlLCAoZW5kTm9kZSkgPyBOb2RlVHJhdmVy
c2FsOjpuZXh0KGVuZE5vZGUpIDogMCkpOwogfQogCisjaWYgIVBMQVRGT1JNKElPUykKIHZvaWQg
RWRpdG9yOjpjb3B5VVJMKGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIHRpdGxlKQogewog
ICAgIGNvcHlVUkwodXJsLCB0aXRsZSwgKlBhc3RlYm9hcmQ6OmNyZWF0ZUZvckNvcHlBbmRQYXN0
ZSgpKTsKQEAgLTEyMDMsNiArMTQyNiw3IEBAIHZvaWQgRWRpdG9yOjpjb3B5SW1hZ2UoY29uc3Qg
SGl0VGVzdFJlc3VsdCYgcmVzdWx0KQogICAgIFBhc3RlYm9hcmQ6OmNyZWF0ZUZvckNvcHlBbmRQ
YXN0ZSgpLT53cml0ZUltYWdlKCplbGVtZW50LCB1cmwsIHJlc3VsdC5hbHREaXNwbGF5U3RyaW5n
KCkpOwogI2VuZGlmCiB9CisjZW5kaWYKIAogYm9vbCBFZGl0b3I6OmlzQ29udGludW91c1NwZWxs
Q2hlY2tpbmdFbmFibGVkKCkgY29uc3QKIHsKQEAgLTE0MTMsNiArMTYzNywxMiBAQCB2b2lkIEVk
aXRvcjo6dG9nZ2xlVW5kZXJsaW5lKCkKIAogdm9pZCBFZGl0b3I6OnNldEJhc2VXcml0aW5nRGly
ZWN0aW9uKFdyaXRpbmdEaXJlY3Rpb24gZGlyZWN0aW9uKQogeworI2lmIFBMQVRGT1JNKElPUykK
KyAgICBpZiAoaW5TYW1lUGFyYWdyYXBoKG1fZnJhbWUuc2VsZWN0aW9uKCkuc2VsZWN0aW9uKCku
dmlzaWJsZVN0YXJ0KCksIG1fZnJhbWUuc2VsZWN0aW9uKCkuc2VsZWN0aW9uKCkudmlzaWJsZUVu
ZCgpKSAmJiAKKyAgICAgICAgYmFzZVdyaXRpbmdEaXJlY3Rpb25Gb3JTZWxlY3Rpb25TdGFydCgp
ID09IGRpcmVjdGlvbikKKyAgICAgICAgcmV0dXJuOworI2VuZGlmCisgICAgICAgIAogICAgIEVs
ZW1lbnQqIGZvY3VzZWRFbGVtZW50ID0gZG9jdW1lbnQoKS5mb2N1c2VkRWxlbWVudCgpOwogICAg
IGlmIChmb2N1c2VkRWxlbWVudCAmJiBpc0hUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50KCpmb2N1
c2VkRWxlbWVudCkpIHsKICAgICAgICAgaWYgKGRpcmVjdGlvbiA9PSBOYXR1cmFsV3JpdGluZ0Rp
cmVjdGlvbikKQEAgLTE1NjEsNiArMTc5MSwxMCBAQCB2b2lkIEVkaXRvcjo6c2V0Q29tcG9zaXRp
b24oY29uc3QgU3RyaW5nJiB0ZXh0LCBjb25zdCBWZWN0b3I8Q29tcG9zaXRpb25VbmRlcmxpbgog
ICAgICAgICByZXR1cm47CiAgICAgfQogCisjaWYgUExBVEZPUk0oSU9TKQorICAgIGNsaWVudCgp
LT5zdGFydERlbGF5aW5nQW5kQ29hbGVzY2luZ0NvbnRlbnRDaGFuZ2VOb3RpZmljYXRpb25zKCk7
CisjZW5kaWYKKwogICAgIEVsZW1lbnQqIHRhcmdldCA9IGRvY3VtZW50KCkuZm9jdXNlZEVsZW1l
bnQoKTsKICAgICBpZiAodGFyZ2V0KSB7CiAgICAgICAgIC8vIERpc3BhdGNoIGFuIGFwcHJvcHJp
YXRlIGNvbXBvc2l0aW9uIGV2ZW50IHRvIHRoZSBmb2N1c2VkIG5vZGUuCkBAIC0xNjM2LDYgKzE4
NzAsMTAgQEAgdm9pZCBFZGl0b3I6OnNldENvbXBvc2l0aW9uKGNvbnN0IFN0cmluZyYgdGV4dCwg
Y29uc3QgVmVjdG9yPENvbXBvc2l0aW9uVW5kZXJsaW4KICAgICB9CiAKICAgICBzZXRJZ25vcmVD
b21wb3NpdGlvblNlbGVjdGlvbkNoYW5nZShmYWxzZSk7CisKKyNpZiBQTEFURk9STShJT1MpICAg
ICAgICAKKyAgICBjbGllbnQoKS0+c3RvcERlbGF5aW5nQW5kQ29hbGVzY2luZ0NvbnRlbnRDaGFu
Z2VOb3RpZmljYXRpb25zKCk7CisjZW5kaWYKIH0KIAogdm9pZCBFZGl0b3I6Omlnbm9yZVNwZWxs
aW5nKCkKQEAgLTE2NjgsNiArMTkwNiw3IEBAIHZvaWQgRWRpdG9yOjpsZWFyblNwZWxsaW5nKCkK
ICAgICB0ZXh0Q2hlY2tlcigpLT5sZWFybldvcmQodGV4dCk7CiB9CiAKKyNpZiAhUExBVEZPUk0o
SU9TKQogdm9pZCBFZGl0b3I6OmFkdmFuY2VUb05leHRNaXNzcGVsbGluZyhib29sIHN0YXJ0QmVm
b3JlU2VsZWN0aW9uKQogewogICAgIC8vIFRoZSBiYXNpYyBhcHByb2FjaCBpcyB0byBzZWFyY2gg
aW4gdHdvIHBoYXNlcyAtIGZyb20gdGhlIHNlbGVjdGlvbiBlbmQgdG8gdGhlIGVuZCBvZiB0aGUg
ZG9jLCBhbmQKQEAgLTE4NDAsNiArMjA3OSw3IEBAIHZvaWQgRWRpdG9yOjphZHZhbmNlVG9OZXh0
TWlzc3BlbGxpbmcoYm9vbCBzdGFydEJlZm9yZVNlbGVjdGlvbikKICAgICAgICAgZG9jdW1lbnQo
KS5tYXJrZXJzKCkuYWRkTWFya2VyKG1pc3NwZWxsaW5nUmFuZ2UuZ2V0KCksIERvY3VtZW50TWFy
a2VyOjpTcGVsbGluZyk7CiAgICAgfQogfQorI2VuZGlmIC8vICFQTEFURk9STShJT1MpCiAKIFN0
cmluZyBFZGl0b3I6Om1pc3NwZWxsZWRXb3JkQXRDYXJldE9yUmFuZ2UoTm9kZSogY2xpY2tlZE5v
ZGUpIGNvbnN0CiB7CkBAIC0xOTU0LDggKzIxOTQsMTAgQEAgdm9pZCBFZGl0b3I6OnNob3dTcGVs
bGluZ0d1ZXNzUGFuZWwoKQogICAgICAgICBjbGllbnQoKS0+c2hvd1NwZWxsaW5nVUkoZmFsc2Up
OwogICAgICAgICByZXR1cm47CiAgICAgfQotICAgIAorCisjaWYgIVBMQVRGT1JNKElPUykKICAg
ICBhZHZhbmNlVG9OZXh0TWlzc3BlbGxpbmcodHJ1ZSk7CisjZW5kaWYKICAgICBjbGllbnQoKS0+
c2hvd1NwZWxsaW5nVUkodHJ1ZSk7CiB9CiAKQEAgLTE5ODIsNiArMjIyNCwxOCBAQCB2b2lkIEVk
aXRvcjo6bWFya01pc3NwZWxsaW5nc0FuZEJhZEdyYW1tYXIoY29uc3QgVmlzaWJsZVNlbGVjdGlv
biAmbW92aW5nU2VsZWN0aQogCiB2b2lkIEVkaXRvcjo6bWFya01pc3NwZWxsaW5nc0FmdGVyVHlw
aW5nVG9Xb3JkKGNvbnN0IFZpc2libGVQb3NpdGlvbiAmd29yZFN0YXJ0LCBjb25zdCBWaXNpYmxl
U2VsZWN0aW9uJiBzZWxlY3Rpb25BZnRlclR5cGluZywgYm9vbCBkb1JlcGxhY2VtZW50KQogewor
I2lmIFBMQVRGT1JNKElPUykKKyAgICBVTlVTRURfUEFSQU0oc2VsZWN0aW9uQWZ0ZXJUeXBpbmcp
OworICAgIFVOVVNFRF9QQVJBTShkb1JlcGxhY2VtZW50KTsKKyAgICBUZXh0Q2hlY2tpbmdUeXBl
TWFzayB0ZXh0Q2hlY2tpbmdPcHRpb25zID0gMDsKKyAgICBpZiAoaXNDb250aW51b3VzU3BlbGxD
aGVja2luZ0VuYWJsZWQoKSkKKyAgICAgICAgdGV4dENoZWNraW5nT3B0aW9ucyB8PSBUZXh0Q2hl
Y2tpbmdUeXBlU3BlbGxpbmc7CisgICAgaWYgKCEodGV4dENoZWNraW5nT3B0aW9ucyAmIFRleHRD
aGVja2luZ1R5cGVTcGVsbGluZykpCisgICAgICAgIHJldHVybjsKKworICAgIFZpc2libGVTZWxl
Y3Rpb24gYWRqYWNlbnRXb3JkcyA9IFZpc2libGVTZWxlY3Rpb24oc3RhcnRPZldvcmQod29yZFN0
YXJ0LCBMZWZ0V29yZElmT25Cb3VuZGFyeSksIGVuZE9mV29yZCh3b3JkU3RhcnQsIFJpZ2h0V29y
ZElmT25Cb3VuZGFyeSkpOworICAgIG1hcmtBbGxNaXNzcGVsbGluZ3NBbmRCYWRHcmFtbWFySW5S
YW5nZXModGV4dENoZWNraW5nT3B0aW9ucywgYWRqYWNlbnRXb3Jkcy50b05vcm1hbGl6ZWRSYW5n
ZSgpLmdldCgpLCBhZGphY2VudFdvcmRzLnRvTm9ybWFsaXplZFJhbmdlKCkuZ2V0KCkpOworI2Vs
c2UKICNpZiAhVVNFKEFVVE9NQVRJQ19URVhUX1JFUExBQ0VNRU5UKQogICAgIFVOVVNFRF9QQVJB
TShkb1JlcGxhY2VtZW50KTsKICNlbmRpZgpAQCAtMjA1NiwxMCArMjMxMCwxMiBAQCB2b2lkIEVk
aXRvcjo6bWFya01pc3NwZWxsaW5nc0FmdGVyVHlwaW5nVG9Xb3JkKGNvbnN0IFZpc2libGVQb3Np
dGlvbiAmd29yZFN0YXJ0LAogICAgIAogICAgIC8vIENoZWNrIGdyYW1tYXIgb2YgZW50aXJlIHNl
bnRlbmNlCiAgICAgbWFya0JhZEdyYW1tYXIoVmlzaWJsZVNlbGVjdGlvbihzdGFydE9mU2VudGVu
Y2Uod29yZFN0YXJ0KSwgZW5kT2ZTZW50ZW5jZSh3b3JkU3RhcnQpKSk7CisjZW5kaWYKIH0KICAg
ICAKIHZvaWQgRWRpdG9yOjptYXJrTWlzc3BlbGxpbmdzT3JCYWRHcmFtbWFyKGNvbnN0IFZpc2li
bGVTZWxlY3Rpb24mIHNlbGVjdGlvbiwgYm9vbCBjaGVja1NwZWxsaW5nLCBSZWZQdHI8UmFuZ2U+
JiBmaXJzdE1pc3NwZWxsaW5nUmFuZ2UpCiB7CisjaWYgIVBMQVRGT1JNKElPUykKICAgICAvLyBU
aGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCB3aXRoIGEgc2VsZWN0aW9uIGFscmVhZHkgZXhwYW5kZWQg
dG8gd29yZCBib3VuZGFyaWVzLgogICAgIC8vIE1pZ2h0IGJlIG5pY2UgdG8gYXNzZXJ0IHRoYXQg
aGVyZS4KICAgICAKQEAgLTIwOTUsNiArMjM1MSwxMSBAQCB2b2lkIEVkaXRvcjo6bWFya01pc3Nw
ZWxsaW5nc09yQmFkR3JhbW1hcihjb25zdCBWaXNpYmxlU2VsZWN0aW9uJiBzZWxlY3Rpb24sIGJv
bwogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICNlbmRpZgogICAgIH0gICAgCisjZWxz
ZQorICAgICAgICBVTlVTRURfUEFSQU0oc2VsZWN0aW9uKTsKKyAgICAgICAgVU5VU0VEX1BBUkFN
KGNoZWNrU3BlbGxpbmcpOworICAgICAgICBVTlVTRURfUEFSQU0oZmlyc3RNaXNzcGVsbGluZ1Jh
bmdlKTsKKyNlbmRpZiAvLyAhUExBVEZPUk0oSU9TKQogfQogCiBib29sIEVkaXRvcjo6aXNTcGVs
bENoZWNraW5nRW5hYmxlZEZvcihOb2RlKiBub2RlKSBjb25zdApAQCAtMjM3Miw2ICsyNjMzLDcg
QEAgdm9pZCBFZGl0b3I6Om1hcmtBbmRSZXBsYWNlRm9yKFBhc3NSZWZQdHI8U3BlbGxDaGVja1Jl
cXVlc3Q+IHJlcXVlc3QsIGNvbnN0IFZlY3QKIAogdm9pZCBFZGl0b3I6OmNoYW5nZUJhY2tUb1Jl
cGxhY2VkU3RyaW5nKGNvbnN0IFN0cmluZyYgcmVwbGFjZWRTdHJpbmcpCiB7CisjaWYgIVBMQVRG
T1JNKElPUykKICAgICBBU1NFUlQodW5pZmllZFRleHRDaGVja2VyRW5hYmxlZCgpKTsKIAogICAg
IGlmIChyZXBsYWNlZFN0cmluZy5pc0VtcHR5KCkpCkBAIC0yMzg3LDYgKzI2NDksMTAgQEAgdm9p
ZCBFZGl0b3I6OmNoYW5nZUJhY2tUb1JlcGxhY2VkU3RyaW5nKGNvbnN0IFN0cmluZyYgcmVwbGFj
ZWRTdHJpbmcpCiAgICAgUmVmUHRyPFJhbmdlPiBjaGFuZ2VkUmFuZ2UgPSBwYXJhZ3JhcGguc3Vi
cmFuZ2UocGFyYWdyYXBoLmNoZWNraW5nU3RhcnQoKSwgcmVwbGFjZWRTdHJpbmcubGVuZ3RoKCkp
OwogICAgIGNoYW5nZWRSYW5nZS0+c3RhcnRDb250YWluZXIoKS0+ZG9jdW1lbnQoKS5tYXJrZXJz
KCkuYWRkTWFya2VyKGNoYW5nZWRSYW5nZS5nZXQoKSwgRG9jdW1lbnRNYXJrZXI6OlJlcGxhY2Vt
ZW50LCBTdHJpbmcoKSk7CiAgICAgbV9hbHRlcm5hdGl2ZVRleHRDb250cm9sbGVyLT5tYXJrUmV2
ZXJzZWQoY2hhbmdlZFJhbmdlLmdldCgpKTsKKyNlbHNlCisgICAgQVNTRVJUX05PVF9SRUFDSEVE
KCk7CisgICAgVU5VU0VEX1BBUkFNKHJlcGxhY2VkU3RyaW5nKTsKKyNlbmRpZiAvLyAhUExBVEZP
Uk0oSU9TKQogfQogCiAKQEAgLTI0ODcsNyArMjc1MywxMSBAQCB2b2lkIEVkaXRvcjo6dXBkYXRl
TWFya2Vyc0ZvcldvcmRzQWZmZWN0ZWRCeUVkaXRpbmcoYm9vbCBkb05vdFJlbW92ZUlmU2VsZWN0
aW9uQQogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbWFya2Vycy5zaXplKCk7ICsraSkKICAg
ICAgICAgbV9hbHRlcm5hdGl2ZVRleHRDb250cm9sbGVyLT5yZW1vdmVEaWN0YXRpb25BbHRlcm5h
dGl2ZXNGb3JNYXJrZXIobWFya2Vyc1tpXSk7CiAKKyNpZiBQTEFURk9STShJT1MpCisgICAgZG9j
dW1lbnQoKS5tYXJrZXJzKCkucmVtb3ZlTWFya2Vycyh3b3JkUmFuZ2UuZ2V0KCksIERvY3VtZW50
TWFya2VyOjpTcGVsbGluZyB8IERvY3VtZW50TWFya2VyOjpDb3JyZWN0aW9uSW5kaWNhdG9yIHwg
RG9jdW1lbnRNYXJrZXI6OlNwZWxsQ2hlY2tpbmdFeGVtcHRpb24gfCBEb2N1bWVudE1hcmtlcjo6
RGljdGF0aW9uQWx0ZXJuYXRpdmVzIHwgRG9jdW1lbnRNYXJrZXI6OkRpY3RhdGlvblBocmFzZVdp
dGhBbHRlcm5hdGl2ZXMsIERvY3VtZW50TWFya2VyQ29udHJvbGxlcjo6UmVtb3ZlUGFydGlhbGx5
T3ZlcmxhcHBpbmdNYXJrZXIpOworI2Vsc2UKICAgICBkb2N1bWVudCgpLm1hcmtlcnMoKS5yZW1v
dmVNYXJrZXJzKHdvcmRSYW5nZS5nZXQoKSwgRG9jdW1lbnRNYXJrZXI6OlNwZWxsaW5nIHwgRG9j
dW1lbnRNYXJrZXI6OkdyYW1tYXIgfCBEb2N1bWVudE1hcmtlcjo6Q29ycmVjdGlvbkluZGljYXRv
ciB8IERvY3VtZW50TWFya2VyOjpTcGVsbENoZWNraW5nRXhlbXB0aW9uIHwgRG9jdW1lbnRNYXJr
ZXI6OkRpY3RhdGlvbkFsdGVybmF0aXZlcywgRG9jdW1lbnRNYXJrZXJDb250cm9sbGVyOjpSZW1v
dmVQYXJ0aWFsbHlPdmVybGFwcGluZ01hcmtlcik7CisjZW5kaWYKICAgICBkb2N1bWVudCgpLm1h
cmtlcnMoKS5jbGVhckRlc2NyaXB0aW9uT25NYXJrZXJzSW50ZXJzZWN0aW5nUmFuZ2Uod29yZFJh
bmdlLmdldCgpLCBEb2N1bWVudE1hcmtlcjo6UmVwbGFjZW1lbnQpOwogfQogCkBAIC0yNTI3LDYg
KzI3OTcsMTEgQEAgdm9pZCBFZGl0b3I6OnNldElnbm9yZUNvbXBvc2l0aW9uU2VsZWN0aW9uQ2hh
bmdlKGJvb2wgaWdub3JlKQogICAgICAgICByZXR1cm47CiAKICAgICBtX2lnbm9yZUNvbXBvc2l0
aW9uU2VsZWN0aW9uQ2hhbmdlID0gaWdub3JlOworI2lmIFBMQVRGT1JNKElPUykKKyAgICAvLyBG
SVhNRTogTWVyZ2UgdGhpcyB0byBvcGVuIHNvdXJjZSBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9Mzg4MzAKKyAgICBpZiAoIWlnbm9yZSkKKyAgICAgICAgbm90aWZ5Q29t
cG9uZW50c09uQ2hhbmdlZFNlbGVjdGlvbihtX2ZyYW1lLnNlbGVjdGlvbigpLnNlbGVjdGlvbigp
LCAwKTsKKyNlbmRpZgogICAgIGlmICghaWdub3JlKQogICAgICAgICByZXZlYWxTZWxlY3Rpb25B
ZnRlckVkaXRpbmdPcGVyYXRpb24oU2Nyb2xsQWxpZ25tZW50OjphbGlnblRvRWRnZUlmTmVlZGVk
LCBSZXZlYWxFeHRlbnQpOwogfQpAQCAtMjY1Niw2ICsyOTMxLDExIEBAIHZvaWQgRWRpdG9yOjpj
aGFuZ2VTZWxlY3Rpb25BZnRlckNvbW1hbmQoY29uc3QgVmlzaWJsZVNlbGVjdGlvbiYgbmV3U2Vs
ZWN0aW9uLAogICAgIC8vIGNoYW5nZSB0aGUgY2FyZXQncyBET00gcG9zaXRpb24gKFsiaGVsbG8i
LCAwXSkuIEluIHRoZXNlIHNpdHVhdGlvbnMgdGhlIGFib3ZlIEZyYW1lU2VsZWN0aW9uOjpzZXRT
ZWxlY3Rpb24gY2FsbAogICAgIC8vIGRvZXMgbm90IGNhbGwgRWRpdG9yQ2xpZW50OjpyZXNwb25k
VG9DaGFuZ2VkU2VsZWN0aW9uKCksIHdoaWNoLCBvbiB0aGUgTWFjLCBzZW5kcyBzZWxlY3Rpb24g
Y2hhbmdlIG5vdGlmaWNhdGlvbnMgYW5kCiAgICAgLy8gc3RhcnRzIGEgbmV3IGtpbGwgcmluZyBz
ZXF1ZW5jZSwgYnV0IHdlIHdhbnQgdG8gZG8gdGhlc2UgdGhpbmdzIChtYXRjaGVzIEFwcEtpdCku
CisjaWYgUExBVEZPUk0oSU9TKQorICAgIC8vIEZJWE1FOiBNZXJnZSB0aGlzIHRvIG9wZW4gc291
cmNlIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zODgzMAorICAgIGlm
IChtX2lnbm9yZUNvbXBvc2l0aW9uU2VsZWN0aW9uQ2hhbmdlKQorICAgICAgICByZXR1cm47Cisj
ZW5kaWYKICAgICBpZiAoc2VsZWN0aW9uRGlkTm90Q2hhbmdlRE9NUG9zaXRpb24gJiYgY2xpZW50
KCkpCiAgICAgICAgIGNsaWVudCgpLT5yZXNwb25kVG9DaGFuZ2VkU2VsZWN0aW9uKCZtX2ZyYW1l
KTsKIH0KQEAgLTI3MjcsNiArMzAwNywxMCBAQCBJbnRSZWN0IEVkaXRvcjo6Zmlyc3RSZWN0Rm9y
UmFuZ2UoUmFuZ2UqIHJhbmdlKSBjb25zdAogCiBib29sIEVkaXRvcjo6c2hvdWxkQ2hhbmdlU2Vs
ZWN0aW9uKGNvbnN0IFZpc2libGVTZWxlY3Rpb24mIG9sZFNlbGVjdGlvbiwgY29uc3QgVmlzaWJs
ZVNlbGVjdGlvbiYgbmV3U2VsZWN0aW9uLCBFQWZmaW5pdHkgYWZmaW5pdHksIGJvb2wgc3RpbGxT
ZWxlY3RpbmcpIGNvbnN0CiB7CisjaWYgUExBVEZPUk0oSU9TKQorICAgIGlmIChtX2ZyYW1lLnNl
bGVjdGlvbkNoYW5nZUNhbGxiYWNrc0Rpc2FibGVkKCkpCisgICAgICAgIHJldHVybiB0cnVlOwor
I2VuZGlmCiAgICAgcmV0dXJuIGNsaWVudCgpICYmIGNsaWVudCgpLT5zaG91bGRDaGFuZ2VTZWxl
Y3RlZFJhbmdlKG9sZFNlbGVjdGlvbi50b05vcm1hbGl6ZWRSYW5nZSgpLmdldCgpLCBuZXdTZWxl
Y3Rpb24udG9Ob3JtYWxpemVkUmFuZ2UoKS5nZXQoKSwgYWZmaW5pdHksIHN0aWxsU2VsZWN0aW5n
KTsKIH0KIApAQCAtMzAyMSw3ICszMzA1LDIwIEBAIHZvaWQgRWRpdG9yOjpyZXNwb25kVG9DaGFu
Z2VkU2VsZWN0aW9uKGNvbnN0IFZpc2libGVTZWxlY3Rpb24mIG9sZFNlbGVjdGlvbiwgRnJhCiAg
ICAgICAgIGJvb2wgY2FyZXRCcm93c2luZyA9IG1fZnJhbWUuc2V0dGluZ3MoKS5jYXJldEJyb3dz
aW5nRW5hYmxlZCgpOwogICAgICAgICBpZiAobV9mcmFtZS5zZWxlY3Rpb24oKS5zZWxlY3Rpb24o
KS5pc0NvbnRlbnRFZGl0YWJsZSgpIHx8IGNhcmV0QnJvd3NpbmcpIHsKICAgICAgICAgICAgIFZp
c2libGVQb3NpdGlvbiBuZXdTdGFydChtX2ZyYW1lLnNlbGVjdGlvbigpLnNlbGVjdGlvbigpLnZp
c2libGVTdGFydCgpKTsKKyNpZiAhUExBVEZPUk0oSU9TKQogICAgICAgICAgICAgbmV3QWRqYWNl
bnRXb3JkcyA9IFZpc2libGVTZWxlY3Rpb24oc3RhcnRPZldvcmQobmV3U3RhcnQsIExlZnRXb3Jk
SWZPbkJvdW5kYXJ5KSwgZW5kT2ZXb3JkKG5ld1N0YXJ0LCBSaWdodFdvcmRJZk9uQm91bmRhcnkp
KTsKKyNlbHNlCisgICAgICAgICAgICAvLyBJZiB0aGlzIGJ1ZyBnZXRzIGZpeGVkLCB0aGlzIFBM
QVRGT1JNKElPUykgY29kZSBjb3VsZCBiZSByZW1vdmVkOgorICAgICAgICAgICAgLy8gPHJkYXI6
Ly9wcm9ibGVtLzcyNTk2MTE+IFdvcmQgYm91bmRhcnkgY29kZSBvbiBpUGhvbmUgZ2l2ZXMgZGlm
ZmVyZW50IHJlc3VsdHMgdGhhbiBkZXNrdG9wCisgICAgICAgICAgICBFV29yZFNpZGUgc3RhcnRX
b3JkU2lkZSA9IExlZnRXb3JkSWZPbkJvdW5kYXJ5OworICAgICAgICAgICAgVUNoYXIzMiBjID0g
bmV3U3RhcnQuY2hhcmFjdGVyQmVmb3JlKCk7CisgICAgICAgICAgICAvLyBGSVhNRTogVmlzaWJs
ZVBvc2l0aW9uOjpjaGFyYWN0ZXJBZnRlcigpIGFuZCBjaGFyYWN0ZXJCZWZvcmUoKSBkbyBub3Qg
ZW1pdCBuZXdsaW5lcyB0aGUgc2FtZQorICAgICAgICAgICAgLy8gd2F5IGFzIFRleHRJdGVyYXRv
ciwgc28gd2UgZG8gYW4gaXNTdGFydE9mUGFyYWdyYXBoIGNoZWNrIGhlcmUuCisgICAgICAgICAg
ICBpZiAoaXNTcGFjZU9yTmV3bGluZShjKSB8fCBjID09IDB4QTAgfHwgaXNTdGFydE9mUGFyYWdy
YXBoKG5ld1N0YXJ0KSkgeworICAgICAgICAgICAgICAgIHN0YXJ0V29yZFNpZGUgPSBSaWdodFdv
cmRJZk9uQm91bmRhcnk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBuZXdBZGphY2VudFdv
cmRzID0gVmlzaWJsZVNlbGVjdGlvbihzdGFydE9mV29yZChuZXdTdGFydCwgc3RhcnRXb3JkU2lk
ZSksIGVuZE9mV29yZChuZXdTdGFydCwgUmlnaHRXb3JkSWZPbkJvdW5kYXJ5KSk7CisjZW5kaWYg
Ly8gIVBMQVRGT1JNKElPUykKICAgICAgICAgICAgIGlmIChpc0NvbnRpbnVvdXNHcmFtbWFyQ2hl
Y2tpbmdFbmFibGVkKQogICAgICAgICAgICAgICAgIG5ld1NlbGVjdGVkU2VudGVuY2UgPSBWaXNp
YmxlU2VsZWN0aW9uKHN0YXJ0T2ZTZW50ZW5jZShuZXdTdGFydCksIGVuZE9mU2VudGVuY2UobmV3
U3RhcnQpKTsKICAgICAgICAgfQpAQCAtMzEwMywxNCArMzQwMCwxNyBAQCBUZXh0Q2hlY2tpbmdU
eXBlTWFzayBFZGl0b3I6OnJlc29sdmVUZXh0Q2hlY2tpbmdUeXBlTWFzayhUZXh0Q2hlY2tpbmdU
eXBlTWFzayB0ZQogewogICAgIGJvb2wgc2hvdWxkTWFya1NwZWxsaW5nID0gdGV4dENoZWNraW5n
T3B0aW9ucyAmIFRleHRDaGVja2luZ1R5cGVTcGVsbGluZzsKICAgICBib29sIHNob3VsZE1hcmtH
cmFtbWFyID0gdGV4dENoZWNraW5nT3B0aW9ucyAmIFRleHRDaGVja2luZ1R5cGVHcmFtbWFyOwor
I2lmICFQTEFURk9STShJT1MpCiAgICAgYm9vbCBzaG91bGRTaG93Q29ycmVjdGlvblBhbmVsID0g
dGV4dENoZWNraW5nT3B0aW9ucyAmIFRleHRDaGVja2luZ1R5cGVTaG93Q29ycmVjdGlvblBhbmVs
OwogICAgIGJvb2wgc2hvdWxkQ2hlY2tGb3JDb3JyZWN0aW9uID0gc2hvdWxkU2hvd0NvcnJlY3Rp
b25QYW5lbCB8fCAodGV4dENoZWNraW5nT3B0aW9ucyAmIFRleHRDaGVja2luZ1R5cGVDb3JyZWN0
aW9uKTsKKyNlbmRpZgogCiAgICAgVGV4dENoZWNraW5nVHlwZU1hc2sgY2hlY2tpbmdUeXBlcyA9
IDA7CiAgICAgaWYgKHNob3VsZE1hcmtTcGVsbGluZykKICAgICAgICAgY2hlY2tpbmdUeXBlcyB8
PSBUZXh0Q2hlY2tpbmdUeXBlU3BlbGxpbmc7CiAgICAgaWYgKHNob3VsZE1hcmtHcmFtbWFyKQog
ICAgICAgICBjaGVja2luZ1R5cGVzIHw9IFRleHRDaGVja2luZ1R5cGVHcmFtbWFyOworI2lmICFQ
TEFURk9STShJT1MpCiAgICAgaWYgKHNob3VsZENoZWNrRm9yQ29ycmVjdGlvbikKICAgICAgICAg
Y2hlY2tpbmdUeXBlcyB8PSBUZXh0Q2hlY2tpbmdUeXBlQ29ycmVjdGlvbjsKICAgICBpZiAoc2hv
dWxkU2hvd0NvcnJlY3Rpb25QYW5lbCkKQEAgLTMxMzEsNiArMzQzMSw3IEBAIFRleHRDaGVja2lu
Z1R5cGVNYXNrIEVkaXRvcjo6cmVzb2x2ZVRleHRDaGVja2luZ1R5cGVNYXNrKFRleHRDaGVja2lu
Z1R5cGVNYXNrIHRlCiAgICAgICAgICAgICBjaGVja2luZ1R5cGVzIHw9IFRleHRDaGVja2luZ1R5
cGVDb3JyZWN0aW9uOwogICAgIH0KICNlbmRpZgorI2VuZGlmIC8vICFQTEFURk9STShJT1MpCiAK
ICAgICByZXR1cm4gY2hlY2tpbmdUeXBlczsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvRWRpdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5oCmluZGV4
IGQ5YmI1YzU5ZWI1N2JmZjY5YTliNjUxNTMyYmM0NTJiZWE2OTUxNmIuLjIwZTE3NGI1ZTViYTc0
NjI4MzEyYzAyNDgxZjRiMjMyYTMxMTZhZjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvRWRpdG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuaApAQCAt
MTI2LDkgKzEyNiwxMSBAQCBwdWJsaWM6CiAgICAgdm9pZCBwYXN0ZUFzUGxhaW5UZXh0KCk7CiAg
ICAgdm9pZCBwZXJmb3JtRGVsZXRlKCk7CiAKKyNpZiAhUExBVEZPUk0oSU9TKQogICAgIHZvaWQg
Y29weVVSTChjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcmIHRpdGxlKTsKICAgICB2b2lkIGNvcHlV
UkwoY29uc3QgVVJMJiwgY29uc3QgU3RyaW5nJiB0aXRsZSwgUGFzdGVib2FyZCYpOwogICAgIHZv
aWQgY29weUltYWdlKGNvbnN0IEhpdFRlc3RSZXN1bHQmKTsKKyNlbmRpZgogCiAgICAgU3RyaW5n
IHJlYWRQbGFpblRleHRGcm9tUGFzdGVib2FyZChQYXN0ZWJvYXJkJik7CiAKQEAgLTE2MSw5ICsx
NjMsMTcgQEAgcHVibGljOgogICAgIHZvaWQgcmVtb3ZlRm9ybWF0dGluZ0FuZFN0eWxlKCk7CiAK
ICAgICB2b2lkIGNsZWFyTGFzdEVkaXRDb21tYW5kKCk7CisjaWYgUExBVEZPUk0oSU9TKQorICAg
IHZvaWQgZW5zdXJlTGFzdEVkaXRDb21tYW5kSGFzQ3VycmVudFNlbGVjdGlvbklmT3BlbkZvck1v
cmVUeXBpbmcoKTsKKyNlbmRpZgogCiAgICAgYm9vbCBkZWxldGVXaXRoRGlyZWN0aW9uKFNlbGVj
dGlvbkRpcmVjdGlvbiwgVGV4dEdyYW51bGFyaXR5LCBib29sIGtpbGxSaW5nLCBib29sIGlzVHlw
aW5nQWN0aW9uKTsKICAgICB2b2lkIGRlbGV0ZVNlbGVjdGlvbldpdGhTbWFydERlbGV0ZShib29s
IHNtYXJ0RGVsZXRlKTsKKyNpZiBQTEFURk9STShJT1MpCisgICAgdm9pZCBjbGVhclRleHQoKTsK
KyAgICB2b2lkIHJlbW92ZVVuY2hhbmdlYWJsZVN0eWxlcygpOworI2VuZGlmCisgICAgCiAgICAg
Ym9vbCBkaXNwYXRjaENQUEV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYsIENsaXBib2FyZEFjY2Vz
c1BvbGljeSk7CiAgICAgCiAgICAgdm9pZCBhcHBseVN0eWxlKFN0eWxlUHJvcGVydGllcyosIEVk
aXRBY3Rpb24gPSBFZGl0QWN0aW9uVW5zcGVjaWZpZWQpOwpAQCAtMjM1LDkgKzI0NSwxNCBAQCBw
dWJsaWM6CiAgICAgdm9pZCB0b2dnbGVPdmVyd3JpdGVNb2RlRW5hYmxlZCgpOwogCiAgICAgdm9p
ZCBtYXJrQWxsTWlzc3BlbGxpbmdzQW5kQmFkR3JhbW1hckluUmFuZ2VzKFRleHRDaGVja2luZ1R5
cGVNYXNrLCBSYW5nZSogc3BlbGxpbmdSYW5nZSwgUmFuZ2UqIGdyYW1tYXJSYW5nZSk7CisjaWYg
UExBVEZPUk0oSU9TKQorICAgIE5PX1JFVFVSTl9EVUVfVE9fQVNTRVJUCisjZW5kaWYKICAgICB2
b2lkIGNoYW5nZUJhY2tUb1JlcGxhY2VkU3RyaW5nKGNvbnN0IFN0cmluZyYgcmVwbGFjZWRTdHJp
bmcpOwogCisjaWYgIVBMQVRGT1JNKElPUykKICAgICB2b2lkIGFkdmFuY2VUb05leHRNaXNzcGVs
bGluZyhib29sIHN0YXJ0QmVmb3JlU2VsZWN0aW9uID0gZmFsc2UpOworI2VuZGlmIC8vICFQTEFU
Rk9STShJT1MpCiAgICAgdm9pZCBzaG93U3BlbGxpbmdHdWVzc1BhbmVsKCk7CiAgICAgYm9vbCBz
cGVsbGluZ1BhbmVsSXNTaG93aW5nKCk7CiAKQEAgLTMwMyw2ICszMTgsMTQgQEAgcHVibGljOgog
ICAgIEVkaXRpbmdCZWhhdmlvciBiZWhhdmlvcigpIGNvbnN0OwogCiAgICAgUGFzc1JlZlB0cjxS
YW5nZT4gc2VsZWN0ZWRSYW5nZSgpOworCisjaWYgUExBVEZPUk0oSU9TKQorICAgIHZvaWQgY29u
ZmlybU1hcmtlZFRleHQoKTsKKyAgICB2b2lkIHNldFRleHRBc0NoaWxkT2ZFbGVtZW50KGNvbnN0
IFN0cmluZyYsIEVsZW1lbnQqKTsKKyAgICB2b2lkIHNldFRleHRBbGlnbm1lbnRGb3JDaGFuZ2Vk
QmFzZVdyaXRpbmdEaXJlY3Rpb24oV3JpdGluZ0RpcmVjdGlvbik7CisgICAgdm9pZCBpbnNlcnRE
aWN0YXRpb25QaHJhc2VzKFBhc3NPd25QdHI8VmVjdG9yPFZlY3RvcjxTdHJpbmc+ID4gPiBkaWN0
YXRpb25QaHJhc2VzLCBSZXRhaW5QdHI8aWQ+IG1ldGFkYXRhKTsKKyAgICB2b2lkIHNldERpY3Rh
dGlvblBocmFzZXNBc0NoaWxkT2ZFbGVtZW50KFBhc3NPd25QdHI8VmVjdG9yPFZlY3RvcjxTdHJp
bmc+ID4gPiBkaWN0YXRpb25QaHJhc2VzLCBSZXRhaW5QdHI8aWQ+IG1ldGFkYXRhLCBFbGVtZW50
KiBlbGVtZW50KTsKKyNlbmRpZgogICAgIAogICAgIHZvaWQgYWRkVG9LaWxsUmluZyhSYW5nZSos
IGJvb2wgcHJlcGVuZCk7CiAKQEAgLTQwMCwxMyArNDIzLDE1IEBAIHB1YmxpYzoKICAgICBib29s
IGluc2VydFBhcmFncmFwaFNlcGFyYXRvckluUXVvdGVkQ29udGVudCgpOwogICAgIGNvbnN0IFNp
bXBsZUZvbnREYXRhKiBmb250Rm9yU2VsZWN0aW9uKGJvb2wmKSBjb25zdDsKICAgICBOU0RpY3Rp
b25hcnkqIGZvbnRBdHRyaWJ1dGVzRm9yU2VsZWN0aW9uU3RhcnQoKSBjb25zdDsKKyAgICBTdHJp
bmcgc3RyaW5nU2VsZWN0aW9uRm9yUGFzdGVib2FyZCgpOworICAgIFN0cmluZyBzdHJpbmdTZWxl
Y3Rpb25Gb3JQYXN0ZWJvYXJkV2l0aEltYWdlQWx0VGV4dCgpOworICAgIFBhc3NSZWZQdHI8RG9j
dW1lbnRGcmFnbWVudD4gd2ViQ29udGVudEZyb21QYXN0ZWJvYXJkKFBhc3RlYm9hcmQmLCBSYW5n
ZSYgY29udGV4dCwgYm9vbCBhbGxvd1BsYWluVGV4dCwgYm9vbCYgY2hvc2VQbGFpblRleHQpOwor
I2lmICFQTEFURk9STShJT1MpCiAgICAgYm9vbCBjYW5Db3B5RXhjbHVkaW5nU3RhbmRhbG9uZUlt
YWdlcygpOwogICAgIHZvaWQgdGFrZUZpbmRTdHJpbmdGcm9tU2VsZWN0aW9uKCk7CiAgICAgdm9p
ZCByZWFkU2VsZWN0aW9uRnJvbVBhc3RlYm9hcmQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFt
ZSk7Ci0gICAgU3RyaW5nIHN0cmluZ1NlbGVjdGlvbkZvclBhc3RlYm9hcmQoKTsKLSAgICBTdHJp
bmcgc3RyaW5nU2VsZWN0aW9uRm9yUGFzdGVib2FyZFdpdGhJbWFnZUFsdFRleHQoKTsKICAgICBQ
YXNzUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZGF0YVNlbGVjdGlvbkZvclBhc3RlYm9hcmQoY29uc3Qg
U3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSk7Ci0gICAgUGFzc1JlZlB0cjxEb2N1bWVudEZyYWdtZW50
PiB3ZWJDb250ZW50RnJvbVBhc3RlYm9hcmQoUGFzdGVib2FyZCYsIFJhbmdlJiBjb250ZXh0LCBi
b29sIGFsbG93UGxhaW5UZXh0LCBib29sJiBjaG9zZVBsYWluVGV4dCk7CisjZW5kaWYgLy8gIVBM
QVRGT1JNKElPUykKICNlbmRpZgogCiAjaWYgUExBVEZPUk0oTUFDKSB8fCBQTEFURk9STShFRkwp
IHx8IFBMQVRGT1JNKE5JWCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRp
dG9yQ29tbWFuZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvckNvbW1hbmQuY3Bw
CmluZGV4IDAxNTA2MzUyY2ZiNGFhM2I4ODI2MGYxMDJiNGVkZDZiMTBlOTQwMzEuLjJiZTNkNDhi
MWViNmYyZTMzMGI3OThjMzY1MGI0NDE3NWJiZGJmYjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvRWRpdG9yQ29tbWFuZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9FZGl0b3JDb21tYW5kLmNwcApAQCAtMzAyLDYgKzMwMiwxNCBAQCBzdGF0aWMgYm9vbCBleGVj
dXRlQ3V0KEZyYW1lJiBmcmFtZSwgRXZlbnQqLCBFZGl0b3JDb21tYW5kU291cmNlIHNvdXJjZSwg
Y29uc3QgUwogICAgIHJldHVybiB0cnVlOwogfQogCisjaWYgUExBVEZPUk0oSU9TKQorc3RhdGlj
IGJvb2wgZXhlY3V0ZUNsZWFyVGV4dChGcmFtZSYgZnJhbWUsIEV2ZW50KiwgRWRpdG9yQ29tbWFu
ZFNvdXJjZSwgY29uc3QgU3RyaW5nJikKK3sKKyAgICBmcmFtZS5lZGl0b3IoKS5jbGVhclRleHQo
KTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKyNlbmRpZgorCiBzdGF0aWMgYm9vbCBleGVjdXRlRGVm
YXVsdFBhcmFncmFwaFNlcGFyYXRvcihGcmFtZSYgZnJhbWUsIEV2ZW50KiwgRWRpdG9yQ29tbWFu
ZFNvdXJjZSwgY29uc3QgU3RyaW5nJiB2YWx1ZSkKIHsKICAgICBpZiAoZXF1YWxJZ25vcmluZ0Nh
c2UodmFsdWUsICJkaXYiKSkKQEAgLTEwOTMsNyArMTEwMSw3IEBAIHN0YXRpYyBib29sIGV4ZWN1
dGVTd2FwV2l0aE1hcmsoRnJhbWUmIGZyYW1lLCBFdmVudCosIEVkaXRvckNvbW1hbmRTb3VyY2Us
IGNvbnN0CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLSNpZiBQTEFURk9STShNQUMpCisjaWYgUExB
VEZPUk0oTUFDKSAmJiAhUExBVEZPUk0oSU9TKQogc3RhdGljIGJvb2wgZXhlY3V0ZVRha2VGaW5k
U3RyaW5nRnJvbVNlbGVjdGlvbihGcmFtZSYgZnJhbWUsIEV2ZW50KiwgRWRpdG9yQ29tbWFuZFNv
dXJjZSwgY29uc3QgU3RyaW5nJikKIHsKICAgICBmcmFtZS5lZGl0b3IoKS50YWtlRmluZFN0cmlu
Z0Zyb21TZWxlY3Rpb24oKTsKQEAgLTEyMzcsMTMgKzEyNDUsMjkgQEAgc3RhdGljIGJvb2wgZW5h
YmxlQ2FyZXRJbkVkaXRhYmxlVGV4dChGcmFtZSYgZnJhbWUsIEV2ZW50KiBldmVudCwgRWRpdG9y
Q29tbWFuZFMKIAogc3RhdGljIGJvb2wgZW5hYmxlZENvcHkoRnJhbWUmIGZyYW1lLCBFdmVudCos
IEVkaXRvckNvbW1hbmRTb3VyY2UpCiB7CisjaWYgIVBMQVRGT1JNKElPUykKICAgICByZXR1cm4g
ZnJhbWUuZWRpdG9yKCkuY2FuREhUTUxDb3B5KCkgfHwgZnJhbWUuZWRpdG9yKCkuY2FuQ29weSgp
OworI2Vsc2UKKyAgICByZXR1cm4gZnJhbWUuZWRpdG9yKCkuY2FuQ29weSgpOworI2VuZGlmCiB9
CiAKIHN0YXRpYyBib29sIGVuYWJsZWRDdXQoRnJhbWUmIGZyYW1lLCBFdmVudCosIEVkaXRvckNv
bW1hbmRTb3VyY2UpCiB7CisjaWYgIVBMQVRGT1JNKElPUykKICAgICByZXR1cm4gZnJhbWUuZWRp
dG9yKCkuY2FuREhUTUxDdXQoKSB8fCBmcmFtZS5lZGl0b3IoKS5jYW5DdXQoKTsKKyNlbHNlCisg
ICAgcmV0dXJuIGZyYW1lLmVkaXRvcigpLmNhbkN1dCgpOworI2VuZGlmCit9CisKKyNpZiBQTEFU
Rk9STShJT1MpCitzdGF0aWMgYm9vbCBlbmFibGVkQ2xlYXJUZXh0KEZyYW1lJiBmcmFtZSwgRXZl
bnQqLCBFZGl0b3JDb21tYW5kU291cmNlKQoreworICAgIFVOVVNFRF9QQVJBTShmcmFtZSk7Cisg
ICAgcmV0dXJuIGZhbHNlOwogfQorI2VuZGlmCiAKIHN0YXRpYyBib29sIGVuYWJsZWRJbkVkaXRh
YmxlVGV4dChGcmFtZSYgZnJhbWUsIEV2ZW50KiBldmVudCwgRWRpdG9yQ29tbWFuZFNvdXJjZSkK
IHsKQEAgLTEyOTYsNyArMTMyMCw3IEBAIHN0YXRpYyBib29sIGVuYWJsZWRSZWRvKEZyYW1lJiBm
cmFtZSwgRXZlbnQqLCBFZGl0b3JDb21tYW5kU291cmNlKQogICAgIHJldHVybiBmcmFtZS5lZGl0
b3IoKS5jYW5SZWRvKCk7CiB9CiAKLSNpZiBQTEFURk9STShNQUMpCisjaWYgUExBVEZPUk0oTUFD
KSAmJiAhUExBVEZPUk0oSU9TKQogc3RhdGljIGJvb2wgZW5hYmxlZFRha2VGaW5kU3RyaW5nRnJv
bVNlbGVjdGlvbihGcmFtZSYgZnJhbWUsIEV2ZW50KiwgRWRpdG9yQ29tbWFuZFNvdXJjZSkKIHsK
ICAgICByZXR1cm4gZnJhbWUuZWRpdG9yKCkuY2FuQ29weUV4Y2x1ZGluZ1N0YW5kYWxvbmVJbWFn
ZXMoKTsKQEAgLTE2MDMsOSArMTYyNywxNiBAQCBzdGF0aWMgY29uc3QgQ29tbWFuZE1hcCYgY3Jl
YXRlQ29tbWFuZE1hcCgpCiAgICAgICAgIHsgIlBhc3RlR2xvYmFsU2VsZWN0aW9uIiwgeyBleGVj
dXRlUGFzdGVHbG9iYWxTZWxlY3Rpb24sIHN1cHBvcnRlZEZyb21NZW51T3JLZXlCaW5kaW5nLCBl
bmFibGVkUGFzdGUsIHN0YXRlTm9uZSwgdmFsdWVOdWxsLCBub3RUZXh0SW5zZXJ0aW9uLCBhbGxv
d0V4ZWN1dGlvbldoZW5EaXNhYmxlZCB9IH0sCiAjZW5kaWYKIAotI2lmIFBMQVRGT1JNKE1BQykK
KyNpZiBQTEFURk9STShNQUMpICYmICFQTEFURk9STShJT1MpCiAgICAgICAgIHsgIlRha2VGaW5k
U3RyaW5nRnJvbVNlbGVjdGlvbiIsIHsgZXhlY3V0ZVRha2VGaW5kU3RyaW5nRnJvbVNlbGVjdGlv
biwgc3VwcG9ydGVkRnJvbU1lbnVPcktleUJpbmRpbmcsIGVuYWJsZWRUYWtlRmluZFN0cmluZ0Zy
b21TZWxlY3Rpb24sIHN0YXRlTm9uZSwgdmFsdWVOdWxsLCBub3RUZXh0SW5zZXJ0aW9uLCBkb05v
dEFsbG93RXhlY3V0aW9uV2hlbkRpc2FibGVkIH0gfSwKICNlbmRpZgorI2lmIFBMQVRGT1JNKElP
UykKKyAgICAgICAgeyAiQ2xlYXJUZXh0IiwgeyBleGVjdXRlQ2xlYXJUZXh0LCBzdXBwb3J0ZWQs
IGVuYWJsZWRDbGVhclRleHQsIHN0YXRlTm9uZSwgdmFsdWVOdWxsLCBub3RUZXh0SW5zZXJ0aW9u
LCBhbGxvd0V4ZWN1dGlvbldoZW5EaXNhYmxlZCB9IH0sCisjZW5kaWYKKworI2lmIFBMQVRGT1JN
KEdUSykgfHwgUExBVEZPUk0oUVQpCisgICAgICAgIHsgIlBhc3RlR2xvYmFsU2VsZWN0aW9uIiwg
eyBleGVjdXRlUGFzdGVHbG9iYWxTZWxlY3Rpb24sIHN1cHBvcnRlZEZyb21NZW51T3JLZXlCaW5k
aW5nLCBlbmFibGVkUGFzdGUsIHN0YXRlTm9uZSwgdmFsdWVOdWxsLCBub3RUZXh0SW5zZXJ0aW9u
LCBhbGxvd0V4ZWN1dGlvbldoZW5EaXNhYmxlZCB9IH0sCisjZW5kaWYKICAgICB9OwogCiAgICAg
Ly8gVGhlc2UgdW5zdXBwb3J0ZWQgY29tbWFuZHMgYXJlIGxpc3RlZCBoZXJlIHNpbmNlIHRoZXkg
YXBwZWFyIGluIHRoZSBNaWNyb3NvZnQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvRnJhbWVTZWxlY3Rpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9GcmFtZVNlbGVj
dGlvbi5jcHAKaW5kZXggNGIxZTY3ZGM1MDg5NWM0Y2ZjNTYzODVkZTE1NTM0NWRlZTg3MDhiMC4u
NGEwODgzZTIwNzZjZWY0YjI5NTkwZjlmNTkzZDUzMGM3OTliYTYxNiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvZWRpdGluZy9GcmFtZVNlbGVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvZWRpdGluZy9GcmFtZVNlbGVjdGlvbi5jcHAKQEAgLTY1LDYgKzY1LDE1IEBACiAjaW5jbHVk
ZSA8c3RkaW8uaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAKKyNpZiBQTEFURk9S
TShJT1MpCisjaW5jbHVkZSAiQ2hyb21lLmgiCisjaW5jbHVkZSAiQ2hyb21lQ2xpZW50LmgiCisj
aW5jbHVkZSAiQ29sb3IuaCIKKyNpbmNsdWRlICJSZW5kZXJMYXllci5oIgorI2luY2x1ZGUgIlJl
bmRlck9iamVjdC5oIgorI2luY2x1ZGUgIlJlbmRlclN0eWxlLmgiCisjZW5kaWYKKwogI2RlZmlu
ZSBFRElUX0RFQlVHIDAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtMTA3LDYgKzExNiwxMiBA
QCBGcmFtZVNlbGVjdGlvbjo6RnJhbWVTZWxlY3Rpb24oRnJhbWUqIGZyYW1lKQogICAgICwgbV9p
c0NhcmV0QmxpbmtpbmdTdXNwZW5kZWQoZmFsc2UpCiAgICAgLCBtX2ZvY3VzZWQoZnJhbWUgJiYg
ZnJhbWUtPnBhZ2UoKSAmJiBmcmFtZS0+cGFnZSgpLT5mb2N1c0NvbnRyb2xsZXIoKS5mb2N1c2Vk
RnJhbWUoKSA9PSBmcmFtZSkKICAgICAsIG1fc2hvdWxkU2hvd0Jsb2NrQ3Vyc29yKGZhbHNlKQor
I2lmIFBMQVRGT1JNKElPUykKKyAgICAsIG1fdXBkYXRlQXBwZWFyYW5jZUVuYWJsZWQoZmFsc2Up
CisgICAgLCBtX2NhcmV0QmxpbmtzKHRydWUpCisgICAgLCBtX2Nsb3NlVHlwaW5nU3VwcHJlc3Np
b25zKDApCisgICAgLCBtX3Njcm9sbGluZ1N1cHByZXNzQ291bnQoMCkKKyNlbmRpZgogewogICAg
IGlmIChzaG91bGRBbHdheXNVc2VEaXJlY3Rpb25hbFNlbGVjdGlvbihtX2ZyYW1lKSkKICAgICAg
ICAgbV9zZWxlY3Rpb24uc2V0SXNEaXJlY3Rpb25hbCh0cnVlKTsKQEAgLTI2OCw3ICsyODMsMTEg
QEAgdm9pZCBGcmFtZVNlbGVjdGlvbjo6c2V0U2VsZWN0aW9uKGNvbnN0IFZpc2libGVTZWxlY3Rp
b24mIG5ld1NlbGVjdGlvbiwgU2V0U2VsZWMKIAogICAgIG1fZ3JhbnVsYXJpdHkgPSBncmFudWxh
cml0eTsKIAorI2lmIFBMQVRGT1JNKElPUykKKyAgICBpZiAoY2xvc2VUeXBpbmcgJiYgbV9jbG9z
ZVR5cGluZ1N1cHByZXNzaW9ucyA9PSAwKQorI2Vsc2UKICAgICBpZiAoY2xvc2VUeXBpbmcpCisj
ZW5kaWYKICAgICAgICAgVHlwaW5nQ29tbWFuZDo6Y2xvc2VUeXBpbmcobV9mcmFtZSk7CiAKICAg
ICBpZiAoc2hvdWxkQ2xlYXJUeXBpbmdTdHlsZSkKQEAgLTYyMCw2ICs2MzksMTEgQEAgVmlzaWJs
ZVBvc2l0aW9uIEZyYW1lU2VsZWN0aW9uOjptb2RpZnlFeHRlbmRpbmdSaWdodChUZXh0R3JhbnVs
YXJpdHkgZ3JhbnVsYXJpdHkKICAgICAgICAgLy8gRklYTUU6IGltcGxlbWVudCBhbGwgb2YgdGhl
IGFib3ZlPwogICAgICAgICBwb3MgPSBtb2RpZnlFeHRlbmRpbmdGb3J3YXJkKGdyYW51bGFyaXR5
KTsKICAgICAgICAgYnJlYWs7CisjaWYgUExBVEZPUk0oSU9TKQorICAgIGNhc2UgRG9jdW1lbnRH
cmFudWxhcml0eToKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIGJyZWFr
OworI2VuZGlmCiAgICAgfQogI2lmIEVOQUJMRShVU0VSU0VMRUNUX0FMTCkKICAgICBhZGp1c3RQ
b3NpdGlvbkZvclVzZXJTZWxlY3RBbGwocG9zLCBkaXJlY3Rpb25PZkVuY2xvc2luZ0Jsb2NrKCkg
PT0gTFRSKTsKQEAgLTY0Niw2ICs2NzAsMTEgQEAgVmlzaWJsZVBvc2l0aW9uIEZyYW1lU2VsZWN0
aW9uOjptb2RpZnlFeHRlbmRpbmdGb3J3YXJkKFRleHRHcmFudWxhcml0eSBncmFudWxhcmkKICAg
ICBjYXNlIFBhcmFncmFwaEdyYW51bGFyaXR5OgogICAgICAgICBwb3MgPSBuZXh0UGFyYWdyYXBo
UG9zaXRpb24ocG9zLCBsaW5lRGlyZWN0aW9uUG9pbnRGb3JCbG9ja0RpcmVjdGlvbk5hdmlnYXRp
b24oRVhURU5UKSk7CiAgICAgICAgIGJyZWFrOworI2lmIFBMQVRGT1JNKElPUykKKyAgICBjYXNl
IERvY3VtZW50R3JhbnVsYXJpdHk6CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAg
ICAgICBicmVhazsKKyNlbmRpZgogICAgIGNhc2UgU2VudGVuY2VCb3VuZGFyeToKICAgICAgICAg
cG9zID0gZW5kT2ZTZW50ZW5jZShlbmRGb3JQbGF0Zm9ybSgpKTsKICAgICAgICAgYnJlYWs7CkBA
IC03MDMsNiArNzMyLDExIEBAIFZpc2libGVQb3NpdGlvbiBGcmFtZVNlbGVjdGlvbjo6bW9kaWZ5
TW92aW5nUmlnaHQoVGV4dEdyYW51bGFyaXR5IGdyYW51bGFyaXR5KQogICAgIGNhc2UgTGluZUJv
dW5kYXJ5OgogICAgICAgICBwb3MgPSByaWdodEJvdW5kYXJ5T2ZMaW5lKHN0YXJ0Rm9yUGxhdGZv
cm0oKSwgZGlyZWN0aW9uT2ZFbmNsb3NpbmdCbG9jaygpKTsKICAgICAgICAgYnJlYWs7CisjaWYg
UExBVEZPUk0oSU9TKQorICAgIGNhc2UgRG9jdW1lbnRHcmFudWxhcml0eToKKyAgICAgICAgQVNT
RVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIGJyZWFrOworI2VuZGlmCiAgICAgfQogICAgIHJl
dHVybiBwb3M7CiB9CkBAIC03MzUsNiArNzY5LDExIEBAIFZpc2libGVQb3NpdGlvbiBGcmFtZVNl
bGVjdGlvbjo6bW9kaWZ5TW92aW5nRm9yd2FyZChUZXh0R3JhbnVsYXJpdHkgZ3JhbnVsYXJpdHkp
CiAgICAgY2FzZSBQYXJhZ3JhcGhHcmFudWxhcml0eToKICAgICAgICAgcG9zID0gbmV4dFBhcmFn
cmFwaFBvc2l0aW9uKGVuZEZvclBsYXRmb3JtKCksIGxpbmVEaXJlY3Rpb25Qb2ludEZvckJsb2Nr
RGlyZWN0aW9uTmF2aWdhdGlvbihTVEFSVCkpOwogICAgICAgICBicmVhazsKKyNpZiBQTEFURk9S
TShJT1MpCisgICAgY2FzZSBEb2N1bWVudEdyYW51bGFyaXR5OgorICAgICAgICBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsKKyAgICAgICAgYnJlYWs7CisjZW5kaWYKICAgICBjYXNlIFNlbnRlbmNlQm91
bmRhcnk6CiAgICAgICAgIHBvcyA9IGVuZE9mU2VudGVuY2UoZW5kRm9yUGxhdGZvcm0oKSk7CiAg
ICAgICAgIGJyZWFrOwpAQCAtNzkxLDYgKzgzMCwxMSBAQCBWaXNpYmxlUG9zaXRpb24gRnJhbWVT
ZWxlY3Rpb246Om1vZGlmeUV4dGVuZGluZ0xlZnQoVGV4dEdyYW51bGFyaXR5IGdyYW51bGFyaXR5
KQogICAgIGNhc2UgRG9jdW1lbnRCb3VuZGFyeToKICAgICAgICAgcG9zID0gbW9kaWZ5RXh0ZW5k
aW5nQmFja3dhcmQoZ3JhbnVsYXJpdHkpOwogICAgICAgICBicmVhazsKKyNpZiBQTEFURk9STShJ
T1MpCisgICAgY2FzZSBEb2N1bWVudEdyYW51bGFyaXR5OgorICAgICAgICBBU1NFUlRfTk9UX1JF
QUNIRUQoKTsKKyAgICAgICAgYnJlYWs7CisjZW5kaWYKICAgICB9CiAjaWYgRU5BQkxFKFVTRVJT
RUxFQ1RfQUxMKQogICAgIGFkanVzdFBvc2l0aW9uRm9yVXNlclNlbGVjdEFsbChwb3MsICEoZGly
ZWN0aW9uT2ZFbmNsb3NpbmdCbG9jaygpID09IExUUikpOwpAQCAtODM4LDYgKzg4MiwxMSBAQCBW
aXNpYmxlUG9zaXRpb24gRnJhbWVTZWxlY3Rpb246Om1vZGlmeUV4dGVuZGluZ0JhY2t3YXJkKFRl
eHRHcmFudWxhcml0eSBncmFudWxhcgogICAgICAgICBlbHNlCiAgICAgICAgICAgICBwb3MgPSBz
dGFydE9mRG9jdW1lbnQocG9zKTsKICAgICAgICAgYnJlYWs7CisjaWYgUExBVEZPUk0oSU9TKQor
ICAgIGNhc2UgRG9jdW1lbnRHcmFudWxhcml0eToKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVE
KCk7CisgICAgICAgIGJyZWFrOworI2VuZGlmCiAgICAgfQogI2lmIEVOQUJMRShVU0VSU0VMRUNU
X0FMTCkKICAgICBhZGp1c3RQb3NpdGlvbkZvclVzZXJTZWxlY3RBbGwocG9zLCAhKGRpcmVjdGlv
bk9mRW5jbG9zaW5nQmxvY2soKSA9PSBMVFIpKTsKQEAgLTg3Nyw2ICs5MjYsMTEgQEAgVmlzaWJs
ZVBvc2l0aW9uIEZyYW1lU2VsZWN0aW9uOjptb2RpZnlNb3ZpbmdMZWZ0KFRleHRHcmFudWxhcml0
eSBncmFudWxhcml0eSkKICAgICBjYXNlIExpbmVCb3VuZGFyeToKICAgICAgICAgcG9zID0gbGVm
dEJvdW5kYXJ5T2ZMaW5lKHN0YXJ0Rm9yUGxhdGZvcm0oKSwgZGlyZWN0aW9uT2ZFbmNsb3NpbmdC
bG9jaygpKTsKICAgICAgICAgYnJlYWs7CisjaWYgUExBVEZPUk0oSU9TKQorICAgIGNhc2UgRG9j
dW1lbnRHcmFudWxhcml0eToKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAg
IGJyZWFrOworI2VuZGlmCiAgICAgfQogICAgIHJldHVybiBwb3M7CiB9CkBAIC05MTksNiArOTcz
LDExIEBAIFZpc2libGVQb3NpdGlvbiBGcmFtZVNlbGVjdGlvbjo6bW9kaWZ5TW92aW5nQmFja3dh
cmQoVGV4dEdyYW51bGFyaXR5IGdyYW51bGFyaXR5CiAgICAgICAgIGVsc2UKICAgICAgICAgICAg
IHBvcyA9IHN0YXJ0T2ZEb2N1bWVudChwb3MpOwogICAgICAgICBicmVhazsKKyNpZiBQTEFURk9S
TShJT1MpCisgICAgY2FzZSBEb2N1bWVudEdyYW51bGFyaXR5OgorICAgICAgICBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsKKyAgICAgICAgYnJlYWs7CisjZW5kaWYKICAgICB9CiAgICAgcmV0dXJuIHBv
czsKIH0KQEAgLTE2NjgsNiArMTcyNywxMiBAQCBib29sIEZyYW1lU2VsZWN0aW9uOjpzZXRTZWxl
Y3RlZFJhbmdlKFJhbmdlKiByYW5nZSwgRUFmZmluaXR5IGFmZmluaXR5LCBib29sIGNsbwogICAg
IC8vIEZJWE1FOiBDYW4gd2UgcHJvdmlkZSBleHRlbnRBZmZpbml0eT8KICAgICBWaXNpYmxlUG9z
aXRpb24gdmlzaWJsZVN0YXJ0KHJhbmdlLT5zdGFydFBvc2l0aW9uKCksIGNvbGxhcHNlZCA/IGFm
ZmluaXR5IDogRE9XTlNUUkVBTSk7CiAgICAgVmlzaWJsZVBvc2l0aW9uIHZpc2libGVFbmQocmFu
Z2UtPmVuZFBvc2l0aW9uKCksIFNFTF9ERUZBVUxUX0FGRklOSVRZKTsKKyNpZiBQTEFURk9STShJ
T1MpCisgICAgaWYgKHJhbmdlLT5zdGFydENvbnRhaW5lcigpICYmIHZpc2libGVTdGFydC5pc051
bGwoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlmIChyYW5nZS0+ZW5kQ29udGFpbmVy
KCkgJiYgdmlzaWJsZUVuZC5pc051bGwoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworI2VuZGlm
CiAgICAgc2V0U2VsZWN0aW9uKFZpc2libGVTZWxlY3Rpb24odmlzaWJsZVN0YXJ0LCB2aXNpYmxl
RW5kKSwgQ2xlYXJUeXBpbmdTdHlsZSB8IChjbG9zZVR5cGluZyA/IENsb3NlVHlwaW5nIDogMCkp
OwogICAgIHJldHVybiB0cnVlOwogfQpAQCAtMTY4NSw2ICsxNzUwLDEyIEBAIHZvaWQgRnJhbWVT
ZWxlY3Rpb246OmZvY3VzZWRPckFjdGl2ZVN0YXRlQ2hhbmdlZCgpCiAKICAgICBkb2N1bWVudC0+
dXBkYXRlU3R5bGVJZk5lZWRlZCgpOwogCisjaWYgVVNFKFVJS0lUX0VESVRJTkcpCisgICAgLy8g
Q2FyZXQgYmxpbmtpbmcgKGJsaW5rcyB8IGRvZXMgbm90IGJsaW5rKQorICAgIGlmIChhY3RpdmVB
bmRGb2N1c2VkKQorICAgICAgICBzZXRTZWxlY3Rpb25Gcm9tTm9uZSgpOworICAgIHNldENhcmV0
VmlzaWJsZShhY3RpdmVBbmRGb2N1c2VkKTsKKyNlbHNlCiAgICAgLy8gQmVjYXVzZSBSZW5kZXJP
YmplY3Q6OnNlbGVjdGlvbkJhY2tncm91bmRDb2xvcigpIGFuZAogICAgIC8vIFJlbmRlck9iamVj
dDo6c2VsZWN0aW9uRm9yZWdyb3VuZENvbG9yKCkgY2hlY2sgaWYgdGhlIGZyYW1lIGlzIGFjdGl2
ZSwKICAgICAvLyB3ZSBoYXZlIHRvIHVwZGF0ZSBwbGFjZXMgdGhvc2UgY29sb3JzIHdlcmUgcGFp
bnRlZC4KQEAgLTE3MDgsNiArMTc3OSw3IEBAIHZvaWQgRnJhbWVTZWxlY3Rpb246OmZvY3VzZWRP
ckFjdGl2ZVN0YXRlQ2hhbmdlZCgpCiAgICAgICAgICAgICBpZiAocmVuZGVyZXIgJiYgcmVuZGVy
ZXItPnN0eWxlKCkuaGFzQXBwZWFyYW5jZSgpKQogICAgICAgICAgICAgICAgIHJlbmRlcmVyLT50
aGVtZSgpLnN0YXRlQ2hhbmdlZChyZW5kZXJlciwgRm9jdXNTdGF0ZSk7CiAgICAgfQorI2VuZGlm
CiB9CiAKIHZvaWQgRnJhbWVTZWxlY3Rpb246OnBhZ2VBY3RpdmF0aW9uQ2hhbmdlZCgpCkBAIC0x
NzM4LDYgKzE4MTAsMTEgQEAgaW5saW5lIHN0YXRpYyBib29sIHNob3VsZFN0b3BCbGlua2luZ0R1
ZVRvVHlwaW5nQ29tbWFuZChGcmFtZSogZnJhbWUpCiAKIHZvaWQgRnJhbWVTZWxlY3Rpb246OnVw
ZGF0ZUFwcGVhcmFuY2UoKQogeworI2lmIFBMQVRGT1JNKElPUykKKyAgICBpZiAoIW1fdXBkYXRl
QXBwZWFyYW5jZUVuYWJsZWQpCisgICAgICAgIHJldHVybjsKKyNlbmRpZgorCiAgICAgLy8gUGFp
bnQgYSBibG9jayBjdXJzb3IgaW5zdGVhZCBvZiBhIGNhcmV0IGluIG92ZXJ0eXBlIG1vZGUgdW5s
ZXNzIHRoZSBjYXJldCBpcyBhdCB0aGUgZW5kIG9mIGEgbGluZSAoaW4gdGhpcyBjYXNlCiAgICAg
Ly8gdGhlIEZyYW1lU2VsZWN0aW9uIHdpbGwgcGFpbnQgYSBibGlua2luZyBjYXJldCBhcyB1c3Vh
bCkuCiAgICAgVmlzaWJsZVBvc2l0aW9uIGZvcndhcmRQb3NpdGlvbjsKQEAgLTE5MTIsNiArMTk4
OSwxMCBAQCBQYXNzUmVmUHRyPE11dGFibGVTdHlsZVByb3BlcnRpZXM+IEZyYW1lU2VsZWN0aW9u
Ojpjb3B5VHlwaW5nU3R5bGUoKSBjb25zdAogCiBib29sIEZyYW1lU2VsZWN0aW9uOjpzaG91bGRE
ZWxldGVTZWxlY3Rpb24oY29uc3QgVmlzaWJsZVNlbGVjdGlvbiYgc2VsZWN0aW9uKSBjb25zdAog
eworI2lmIFBMQVRGT1JNKElPUykKKyAgICBpZiAobV9mcmFtZS0+c2VsZWN0aW9uQ2hhbmdlQ2Fs
bGJhY2tzRGlzYWJsZWQoKSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisjZW5kaWYKICAgICByZXR1
cm4gbV9mcmFtZS0+ZWRpdG9yKCkuY2xpZW50KCktPnNob3VsZERlbGV0ZVJhbmdlKHNlbGVjdGlv
bi50b05vcm1hbGl6ZWRSYW5nZSgpLmdldCgpKTsKIH0KIApAQCAtMjAxMCwxMSArMjA5MSwyNCBA
QCB2b2lkIEZyYW1lU2VsZWN0aW9uOjpyZXZlYWxTZWxlY3Rpb24oY29uc3QgU2Nyb2xsQWxpZ25t
ZW50JiBhbGlnbm1lbnQsIFJldmVhbEV4dAogICAgIFBvc2l0aW9uIHN0YXJ0ID0gdGhpcy0+c3Rh
cnQoKTsKICAgICBBU1NFUlQoc3RhcnQuZGVwcmVjYXRlZE5vZGUoKSk7CiAgICAgaWYgKHN0YXJ0
LmRlcHJlY2F0ZWROb2RlKCkgJiYgc3RhcnQuZGVwcmVjYXRlZE5vZGUoKS0+cmVuZGVyZXIoKSkg
eworI2lmIFBMQVRGT1JNKElPUykKKyAgICAgICAgaWYgKFJlbmRlckxheWVyKiBsYXllciA9IHN0
YXJ0LmRlcHJlY2F0ZWROb2RlKCktPnJlbmRlcmVyKCktPmVuY2xvc2luZ0xheWVyKCkpIHsKKyAg
ICAgICAgICAgIGlmICghbV9zY3JvbGxpbmdTdXBwcmVzc0NvdW50KSB7CisgICAgICAgICAgICAg
ICAgbGF5ZXItPnNldEFkanVzdEZvcklPU0NhcmV0V2hlblNjcm9sbGluZyh0cnVlKTsKKyAgICAg
ICAgICAgICAgICBsYXllci0+c2Nyb2xsUmVjdFRvVmlzaWJsZShyZWN0LCBhbGlnbm1lbnQsIGFs
aWdubWVudCk7CisgICAgICAgICAgICAgICAgbGF5ZXItPnNldEFkanVzdEZvcklPU0NhcmV0V2hl
blNjcm9sbGluZyhmYWxzZSk7CisgICAgICAgICAgICAgICAgdXBkYXRlQXBwZWFyYW5jZSgpOwor
ICAgICAgICAgICAgICAgIGlmIChtX2ZyYW1lLT5wYWdlKCkpCisgICAgICAgICAgICAgICAgICAg
IG1fZnJhbWUtPnBhZ2UoKS0+Y2hyb21lKCkuY2xpZW50KCkubm90aWZ5UmV2ZWFsZWRTZWxlY3Rp
b25CeVNjcm9sbGluZ0ZyYW1lKG1fZnJhbWUpOworICAgICAgICAgICAgfQorICAgICAgICB9Cisj
ZWxzZQogICAgICAgICAvLyBGSVhNRTogVGhpcyBjb2RlIG9ubHkgaGFuZGxlcyBzY3JvbGxpbmcg
dGhlIHN0YXJ0Q29udGFpbmVyJ3MgbGF5ZXIsIGJ1dAogICAgICAgICAvLyB0aGUgc2VsZWN0aW9u
IHJlY3QgY291bGQgaW50ZXJzZWN0IG1vcmUgdGhhbiBqdXN0IHRoYXQuCiAgICAgICAgIC8vIFNl
ZSA8cmRhcjovL3Byb2JsZW0vNDc5OTg5OT4uCiAgICAgICAgIGlmIChzdGFydC5kZXByZWNhdGVk
Tm9kZSgpLT5yZW5kZXJlcigpLT5zY3JvbGxSZWN0VG9WaXNpYmxlKHJlY3QsIGFsaWdubWVudCwg
YWxpZ25tZW50KSkKICAgICAgICAgICAgIHVwZGF0ZUFwcGVhcmFuY2UoKTsKKyNlbmRpZgogICAg
IH0KIH0KIApAQCAtMjAyNCw5ICsyMTE4LDE0IEBAIHZvaWQgRnJhbWVTZWxlY3Rpb246OnNldFNl
bGVjdGlvbkZyb21Ob25lKCkKICAgICAvLyBlbnRpcmUgV2ViVmlldyBpcyBlZGl0YWJsZSBvciBk
ZXNpZ25Nb2RlIGlzIG9uIGZvciB0aGlzIGRvY3VtZW50KS4KIAogICAgIERvY3VtZW50KiBkb2N1
bWVudCA9IG1fZnJhbWUtPmRvY3VtZW50KCk7CisjaWYgIVBMQVRGT1JNKElPUykKICAgICBib29s
IGNhcmV0QnJvd3NpbmcgPSBtX2ZyYW1lLT5zZXR0aW5ncygpLmNhcmV0QnJvd3NpbmdFbmFibGVk
KCk7CiAgICAgaWYgKCFpc05vbmUoKSB8fCAhKGRvY3VtZW50LT5oYXNFZGl0YWJsZVN0eWxlKCkg
fHwgY2FyZXRCcm93c2luZykpCiAgICAgICAgIHJldHVybjsKKyNlbHNlCisgICAgaWYgKCFkb2N1
bWVudCB8fCAhKGlzTm9uZSgpIHx8IGlzU3RhcnRPZkRvY3VtZW50KFZpc2libGVQb3NpdGlvbihz
ZWxlY3Rpb24oKS5zdGFydCgpLCBzZWxlY3Rpb24oKS5hZmZpbml0eSgpKSkpIHx8ICFkb2N1bWVu
dC0+cmVuZGVyZXJJc0VkaXRhYmxlKCkpCisgICAgICAgIHJldHVybjsKKyNlbmRpZgogCiAgICAg
Tm9kZSogbm9kZSA9IGRvY3VtZW50LT5kb2N1bWVudEVsZW1lbnQoKTsKICAgICB3aGlsZSAobm9k
ZSAmJiAhbm9kZS0+aGFzVGFnTmFtZShib2R5VGFnKSkKQEAgLTIwMzcsNiArMjEzNiwxMCBAQCB2
b2lkIEZyYW1lU2VsZWN0aW9uOjpzZXRTZWxlY3Rpb25Gcm9tTm9uZSgpCiAKIGJvb2wgRnJhbWVT
ZWxlY3Rpb246OnNob3VsZENoYW5nZVNlbGVjdGlvbihjb25zdCBWaXNpYmxlU2VsZWN0aW9uJiBu
ZXdTZWxlY3Rpb24pIGNvbnN0CiB7CisjaWYgUExBVEZPUk0oSU9TKQorICAgIGlmIChtX2ZyYW1l
LT5zZWxlY3Rpb25DaGFuZ2VDYWxsYmFja3NEaXNhYmxlZCgpKQorICAgICAgICByZXR1cm4gdHJ1
ZTsKKyNlbmRpZgogICAgIHJldHVybiBtX2ZyYW1lLT5lZGl0b3IoKS5zaG91bGRDaGFuZ2VTZWxl
Y3Rpb24oc2VsZWN0aW9uKCksIG5ld1NlbGVjdGlvbiwgbmV3U2VsZWN0aW9uLmFmZmluaXR5KCks
IGZhbHNlKTsKIH0KIApAQCAtMjA3Miw2ICsyMTc1LDQyOSBAQCB2b2lkIEZyYW1lU2VsZWN0aW9u
OjpzaG93VHJlZUZvclRoaXMoKSBjb25zdAogCiAjZW5kaWYKIAorI2lmIFBMQVRGT1JNKElPUykK
K3ZvaWQgRnJhbWVTZWxlY3Rpb246OmV4cGFuZFNlbGVjdGlvblRvRWxlbWVudENvbnRhaW5pbmdD
YXJldFNlbGVjdGlvbigpCit7CisgICAgUmVmUHRyPFJhbmdlPiByYW5nZSA9IGVsZW1lbnRSYW5n
ZUNvbnRhaW5pbmdDYXJldFNlbGVjdGlvbigpOworICAgIGlmICghcmFuZ2UpCisgICAgICAgIHJl
dHVybjsKKyAgICBWaXNpYmxlU2VsZWN0aW9uIHNlbGVjdGlvbihyYW5nZS5nZXQoKSwgRE9XTlNU
UkVBTSk7CisgICAgc2V0U2VsZWN0aW9uKHNlbGVjdGlvbik7Cit9CisKK1Bhc3NSZWZQdHI8UmFu
Z2U+IEZyYW1lU2VsZWN0aW9uOjplbGVtZW50UmFuZ2VDb250YWluaW5nQ2FyZXRTZWxlY3Rpb24o
KSBjb25zdAoreworICAgIGlmIChtX3NlbGVjdGlvbi5pc05vbmUoKSkKKyAgICAgICAgcmV0dXJu
IG51bGxwdHI7CisKKyAgICBWaXNpYmxlU2VsZWN0aW9uIHNlbGVjdGlvbiA9IG1fc2VsZWN0aW9u
OworICAgIGlmIChzZWxlY3Rpb24uaXNOb25lKCkpCisgICAgICAgIHJldHVybiBudWxscHRyOwor
CisgICAgVmlzaWJsZVBvc2l0aW9uIHZpc2libGVQb3Moc2VsZWN0aW9uLnN0YXJ0KCksIFZQX0RF
RkFVTFRfQUZGSU5JVFkpOworICAgIGlmICh2aXNpYmxlUG9zLmlzTnVsbCgpKQorICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKKworICAgIE5vZGUqIG5vZGUgPSB2aXNpYmxlUG9zLmRlZXBFcXVpdmFs
ZW50KCkuZGVwcmVjYXRlZE5vZGUoKTsKKyAgICBFbGVtZW50KiBlbGVtZW50ID0gZGVwcmVjYXRl
ZEVuY2xvc2luZ0Jsb2NrRmxvd0VsZW1lbnQobm9kZSk7CisgICAgaWYgKCFlbGVtZW50KQorICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIFBvc2l0aW9uIHN0YXJ0UG9zID0gY3JlYXRlTGVn
YWN5RWRpdGluZ1Bvc2l0aW9uKGVsZW1lbnQsIDApOworICAgIFBvc2l0aW9uIGVuZFBvcyA9IGNy
ZWF0ZUxlZ2FjeUVkaXRpbmdQb3NpdGlvbihlbGVtZW50LCBlbGVtZW50LT5jaGlsZE5vZGVDb3Vu
dCgpKTsKKyAgICAKKyAgICBWaXNpYmxlUG9zaXRpb24gc3RhcnRWaXNpYmxlUG9zKHN0YXJ0UG9z
LCBWUF9ERUZBVUxUX0FGRklOSVRZKTsKKyAgICBWaXNpYmxlUG9zaXRpb24gZW5kVmlzaWJsZVBv
cyhlbmRQb3MsIFZQX0RFRkFVTFRfQUZGSU5JVFkpOworICAgIGlmIChzdGFydFZpc2libGVQb3Mu
aXNOdWxsKCkgfHwgZW5kVmlzaWJsZVBvcy5pc051bGwoKSkKKyAgICAgICAgcmV0dXJuIG51bGxw
dHI7CisKKyAgICBzZWxlY3Rpb24uc2V0QmFzZShzdGFydFZpc2libGVQb3MpOworICAgIHNlbGVj
dGlvbi5zZXRFeHRlbnQoZW5kVmlzaWJsZVBvcyk7CisKKyAgICByZXR1cm4gc2VsZWN0aW9uLnRv
Tm9ybWFsaXplZFJhbmdlKCk7Cit9CisKK3ZvaWQgRnJhbWVTZWxlY3Rpb246OmV4cGFuZFNlbGVj
dGlvblRvV29yZENvbnRhaW5pbmdDYXJldFNlbGVjdGlvbigpCit7CisgICAgVmlzaWJsZVNlbGVj
dGlvbiBzZWxlY3Rpb24od29yZFNlbGVjdGlvbkNvbnRhaW5pbmdDYXJldFNlbGVjdGlvbihtX3Nl
bGVjdGlvbikpOyAgICAgICAgCisgICAgaWYgKHNlbGVjdGlvbi5pc0NhcmV0T3JSYW5nZSgpKQor
ICAgICAgICBzZXRTZWxlY3Rpb24oc2VsZWN0aW9uKTsKK30KKworUGFzc1JlZlB0cjxSYW5nZT4g
RnJhbWVTZWxlY3Rpb246OndvcmRSYW5nZUNvbnRhaW5pbmdDYXJldFNlbGVjdGlvbigpCit7Cisg
ICAgcmV0dXJuIHdvcmRTZWxlY3Rpb25Db250YWluaW5nQ2FyZXRTZWxlY3Rpb24obV9zZWxlY3Rp
b24pLnRvTm9ybWFsaXplZFJhbmdlKCk7Cit9CisKK3ZvaWQgRnJhbWVTZWxlY3Rpb246OmV4cGFu
ZFNlbGVjdGlvblRvU3RhcnRPZldvcmRDb250YWluaW5nQ2FyZXRTZWxlY3Rpb24oKQoreworICAg
IGlmIChtX3NlbGVjdGlvbi5pc05vbmUoKSB8fCBpc1N0YXJ0T2ZEb2N1bWVudChtX3NlbGVjdGlv
bi5zdGFydCgpKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgVmlzaWJsZVBvc2l0aW9uIHMxKG1f
c2VsZWN0aW9uLnN0YXJ0KCkpOworICAgIFZpc2libGVQb3NpdGlvbiBlMShtX3NlbGVjdGlvbi5l
bmQoKSk7CisKKyAgICBWaXNpYmxlU2VsZWN0aW9uIGV4cGFuZGVkKHdvcmRTZWxlY3Rpb25Db250
YWluaW5nQ2FyZXRTZWxlY3Rpb24obV9zZWxlY3Rpb24pKTsKKyAgICBWaXNpYmxlUG9zaXRpb24g
czIoZXhwYW5kZWQuc3RhcnQoKSk7CisKKyAgICAvLyBEb24ndCBhbGxvdyB0aGUgc3RhcnQgdG8g
YmVjb21lIGdyZWF0ZXIgYWZ0ZXIgdGhlIGV4cGFuc2lvbi4KKyAgICBpZiAoczIuaXNOdWxsKCkg
fHwgczIgPiBzMSkKKyAgICAgICAgczIgPSBzMTsKKworICAgIG1vdmVUbyhzMiwgZTEpOworfQor
CitVQ2hhciBGcmFtZVNlbGVjdGlvbjo6Y2hhcmFjdGVySW5SZWxhdGlvblRvQ2FyZXRTZWxlY3Rp
b24oaW50IGFtb3VudCkgY29uc3QKK3sKKyAgICBpZiAobV9zZWxlY3Rpb24uaXNOb25lKCkpCisg
ICAgICAgIHJldHVybiAwOworCisgICAgVmlzaWJsZVNlbGVjdGlvbiBzZWxlY3Rpb24gPSBtX3Nl
bGVjdGlvbjsKKyAgICBBU1NFUlQoc2VsZWN0aW9uLmlzQ2FyZXRPclJhbmdlKCkpOworCisgICAg
VmlzaWJsZVBvc2l0aW9uIHZpc2libGVQb3NpdGlvbihzZWxlY3Rpb24uc3RhcnQoKSwgVlBfREVG
QVVMVF9BRkZJTklUWSk7CisKKyAgICBpZiAoYW1vdW50IDwgMCkgeworICAgICAgICBpbnQgY291
bnQgPSBhYnMoYW1vdW50KTsKKyAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBjb3VudDsgaSsr
KQorICAgICAgICAgICAgdmlzaWJsZVBvc2l0aW9uID0gdmlzaWJsZVBvc2l0aW9uLnByZXZpb3Vz
KCk7ICAgIAorICAgICAgICByZXR1cm4gdmlzaWJsZVBvc2l0aW9uLmNoYXJhY3RlckJlZm9yZSgp
OworICAgIH0KKyAgICBmb3IgKGludCBpID0gMDsgaSA8IGFtb3VudDsgaSsrKQorICAgICAgICB2
aXNpYmxlUG9zaXRpb24gPSB2aXNpYmxlUG9zaXRpb24ubmV4dCgpOyAgICAKKyAgICByZXR1cm4g
dmlzaWJsZVBvc2l0aW9uLmNoYXJhY3RlckFmdGVyKCk7Cit9CisKK1VDaGFyIEZyYW1lU2VsZWN0
aW9uOjpjaGFyYWN0ZXJCZWZvcmVDYXJldFNlbGVjdGlvbigpIGNvbnN0Cit7CisgICAgaWYgKG1f
c2VsZWN0aW9uLmlzTm9uZSgpKQorICAgICAgICByZXR1cm4gMDsKKworICAgIFZpc2libGVTZWxl
Y3Rpb24gc2VsZWN0aW9uID0gbV9zZWxlY3Rpb247CisgICAgQVNTRVJUKHNlbGVjdGlvbi5pc0Nh
cmV0T3JSYW5nZSgpKTsKKworICAgIFZpc2libGVQb3NpdGlvbiB2aXNpYmxlUG9zaXRpb24oc2Vs
ZWN0aW9uLnN0YXJ0KCksIFZQX0RFRkFVTFRfQUZGSU5JVFkpOworICAgIHJldHVybiB2aXNpYmxl
UG9zaXRpb24uY2hhcmFjdGVyQmVmb3JlKCk7Cit9CisKK1VDaGFyIEZyYW1lU2VsZWN0aW9uOjpj
aGFyYWN0ZXJBZnRlckNhcmV0U2VsZWN0aW9uKCkgY29uc3QKK3sKKyAgICBpZiAobV9zZWxlY3Rp
b24uaXNOb25lKCkpCisgICAgICAgIHJldHVybiAwOworCisgICAgVmlzaWJsZVNlbGVjdGlvbiBz
ZWxlY3Rpb24gPSBtX3NlbGVjdGlvbjsKKyAgICBBU1NFUlQoc2VsZWN0aW9uLmlzQ2FyZXRPclJh
bmdlKCkpOworCisgICAgVmlzaWJsZVBvc2l0aW9uIHZpc2libGVQb3NpdGlvbihzZWxlY3Rpb24u
ZW5kKCksIFZQX0RFRkFVTFRfQUZGSU5JVFkpOworICAgIHJldHVybiB2aXNpYmxlUG9zaXRpb24u
Y2hhcmFjdGVyQWZ0ZXIoKTsKK30KKworaW50IEZyYW1lU2VsZWN0aW9uOjp3b3JkT2Zmc2V0SW5S
YW5nZShjb25zdCBSYW5nZSAqcmFuZ2UpIGNvbnN0Cit7CisgICAgaWYgKCFyYW5nZSkKKyAgICAg
ICAgcmV0dXJuIC0xOworCisgICAgVmlzaWJsZVNlbGVjdGlvbiBzZWxlY3Rpb24gPSBtX3NlbGVj
dGlvbjsKKyAgICBpZiAoIXNlbGVjdGlvbi5pc0NhcmV0KCkpCisgICAgICAgIHJldHVybiAtMTsK
KworICAgIC8vIEZJWE1FOiBUaGlzIHdpbGwgb25seSB3b3JrIGluIGNhc2VzIHdoZXJlIHRoZSBz
ZWxlY3Rpb24gcmVtYWlucyBpbgorICAgIC8vIHRoZSBzYW1lIG5vZGUgYWZ0ZXIgaXQgaXMgZXhw
YW5kZWQuIEltcHJvdmUgdG8gaGFuZGxlIG1vcmUgY29tcGxpY2F0ZWQKKyAgICAvLyBjYXNlcy4K
KyAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKKyAgICBpbnQgcmVzdWx0ID0gc2VsZWN0aW9uLnN0
YXJ0KCkuZGVwcmVjYXRlZEVkaXRpbmdPZmZzZXQoKSAtIHJhbmdlLT5zdGFydE9mZnNldChlYyk7
CisgICAgQVNTRVJUKCFlYyk7CisgICAgaWYgKHJlc3VsdCA8IDApCisgICAgICAgIHJlc3VsdCA9
IDA7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworYm9vbCBGcmFtZVNlbGVjdGlvbjo6c3BhY2VG
b2xsb3dzV29yZEluUmFuZ2UoY29uc3QgUmFuZ2UgKnJhbmdlKSBjb25zdAoreworICAgIGlmICgh
cmFuZ2UpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsK
KyAgICBOb2RlKiBub2RlID0gcmFuZ2UtPmVuZENvbnRhaW5lcihlYyk7CisgICAgQVNTRVJUKCFl
Yyk7CisgICAgaW50IGVuZE9mZnNldCA9IHJhbmdlLT5lbmRPZmZzZXQoZWMpOworICAgIEFTU0VS
VCghZWMpOworICAgIFZpc2libGVQb3NpdGlvbiBwb3MoY3JlYXRlTGVnYWN5RWRpdGluZ1Bvc2l0
aW9uKG5vZGUsIGVuZE9mZnNldCksIFZQX0RFRkFVTFRfQUZGSU5JVFkpOworICAgIHJldHVybiBp
c1NwYWNlT3JOZXdsaW5lKHBvcy5jaGFyYWN0ZXJBZnRlcigpKTsKK30KKworYm9vbCBGcmFtZVNl
bGVjdGlvbjo6c2VsZWN0aW9uQXREb2N1bWVudFN0YXJ0KCkgY29uc3QKK3sKKyAgICBWaXNpYmxl
U2VsZWN0aW9uIHNlbGVjdGlvbiA9IG1fc2VsZWN0aW9uOworICAgIGlmIChzZWxlY3Rpb24uaXNO
b25lKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIFBvc2l0aW9uIHN0YXJ0UG9zKHNl
bGVjdGlvbi5zdGFydCgpKTsKKyAgICBWaXNpYmxlUG9zaXRpb24gcG9zKGNyZWF0ZUxlZ2FjeUVk
aXRpbmdQb3NpdGlvbihzdGFydFBvcy5kZXByZWNhdGVkTm9kZSgpLCBzdGFydFBvcy5kZXByZWNh
dGVkRWRpdGluZ09mZnNldCgpKSwgVlBfREVGQVVMVF9BRkZJTklUWSk7CisgICAgaWYgKHBvcy5p
c051bGwoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgcmV0dXJuIGlzU3RhcnRPZkRv
Y3VtZW50KHBvcyk7Cit9CisKK2Jvb2wgRnJhbWVTZWxlY3Rpb246OnNlbGVjdGlvbkF0U2VudGVu
Y2VTdGFydCgpIGNvbnN0Cit7CisgICAgVmlzaWJsZVNlbGVjdGlvbiBzZWxlY3Rpb24gPSBtX3Nl
bGVjdGlvbjsKKyAgICBpZiAoc2VsZWN0aW9uLmlzTm9uZSgpKQorICAgICAgICByZXR1cm4gZmFs
c2U7CisKKyAgICByZXR1cm4gYWN0dWFsU2VsZWN0aW9uQXRTZW50ZW5jZVN0YXJ0KHNlbGVjdGlv
bik7Cit9CisKK2Jvb2wgRnJhbWVTZWxlY3Rpb246OnNlbGVjdGlvbkF0V29yZFN0YXJ0KCkgY29u
c3QKK3sKKyAgICBWaXNpYmxlU2VsZWN0aW9uIHNlbGVjdGlvbiA9IG1fc2VsZWN0aW9uOworICAg
IGlmIChzZWxlY3Rpb24uaXNOb25lKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIFBv
c2l0aW9uIHN0YXJ0UG9zKHNlbGVjdGlvbi5zdGFydCgpKTsKKyAgICBWaXNpYmxlUG9zaXRpb24g
cG9zKGNyZWF0ZUxlZ2FjeUVkaXRpbmdQb3NpdGlvbihzdGFydFBvcy5kZXByZWNhdGVkTm9kZSgp
LCBzdGFydFBvcy5kZXByZWNhdGVkRWRpdGluZ09mZnNldCgpKSwgVlBfREVGQVVMVF9BRkZJTklU
WSk7CisgICAgaWYgKHBvcy5pc051bGwoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAg
aWYgKGlzU3RhcnRPZlBhcmFncmFwaChwb3MpKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAg
ICAgCisgICAgYm9vbCByZXN1bHQgPSB0cnVlOworICAgIHVuc2lnbmVkIHByZXZpb3VzQ291bnQg
PSAwOworICAgIGZvciAocG9zID0gcG9zLnByZXZpb3VzKCk7ICFwb3MuaXNOdWxsKCk7IHBvcyA9
IHBvcy5wcmV2aW91cygpKSB7CisgICAgICAgIHByZXZpb3VzQ291bnQrKzsKKyAgICAgICAgaWYg
KGlzU3RhcnRPZlBhcmFncmFwaChwb3MpKSB7CisgICAgICAgICAgICBpZiAocHJldmlvdXNDb3Vu
dCA9PSAxKQorICAgICAgICAgICAgICAgIHJlc3VsdCA9IGZhbHNlOworICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgIH0KKyAgICAgICAgVUNoYXIgYyhwb3MuY2hhcmFjdGVyQWZ0ZXIoKSk7Cisg
ICAgICAgIGlmIChjKSB7CisgICAgICAgICAgICByZXN1bHQgPSBpc1NwYWNlT3JOZXdsaW5lKGMp
IHx8IGMgPT0gMHhBMCB8fCAodV9pc3B1bmN0KGMpICYmIGMgIT0gJywnICYmIGMgIT0gJy0nICYm
IGMgIT0gJ1wnJyk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgIH0KKworICAg
IHJldHVybiByZXN1bHQ7Cit9CisKK1Bhc3NSZWZQdHI8UmFuZ2U+IEZyYW1lU2VsZWN0aW9uOjpy
YW5nZUJ5TW92aW5nQ3VycmVudFNlbGVjdGlvbihpbnQgYW1vdW50KSBjb25zdAoreworICAgIHJl
dHVybiByYW5nZUJ5QWx0ZXJpbmdDdXJyZW50U2VsZWN0aW9uKEFsdGVyYXRpb25Nb3ZlLCBhbW91
bnQpOworfQorCitQYXNzUmVmUHRyPFJhbmdlPiBGcmFtZVNlbGVjdGlvbjo6cmFuZ2VCeUV4dGVu
ZGluZ0N1cnJlbnRTZWxlY3Rpb24oaW50IGFtb3VudCkgY29uc3QKK3sKKyAgICByZXR1cm4gcmFu
Z2VCeUFsdGVyaW5nQ3VycmVudFNlbGVjdGlvbihBbHRlcmF0aW9uRXh0ZW5kLCBhbW91bnQpOwor
fQorCit2b2lkIEZyYW1lU2VsZWN0aW9uOjpzZWxlY3RSYW5nZU9uRWxlbWVudCh1bnNpZ25lZCBs
b2NhdGlvbiwgdW5zaWduZWQgbGVuZ3RoLCBOb2RlKiBub2RlKQoreworICAgIFJlZlB0cjxSYW5n
ZT4gcmVzdWx0UmFuZ2UgPSBtX2ZyYW1lLT5kb2N1bWVudCgpLT5jcmVhdGVSYW5nZSgpOworICAg
IEV4Y2VwdGlvbkNvZGUgZWMgPSAwOworICAgIHJlc3VsdFJhbmdlLT5zZXRTdGFydChub2RlLCBs
b2NhdGlvbiwgZWMpOworICAgIEFTU0VSVCghZWMpOworICAgIHJlc3VsdFJhbmdlLT5zZXRFbmQo
bm9kZSwgbG9jYXRpb24gKyBsZW5ndGgsIGVjKTsKKyAgICBBU1NFUlQoIWVjKTsKKyAgICBWaXNp
YmxlU2VsZWN0aW9uIHNlbGVjdGlvbiA9IFZpc2libGVTZWxlY3Rpb24ocmVzdWx0UmFuZ2UuZ2V0
KCksIFNFTF9ERUZBVUxUX0FGRklOSVRZKTsKKyAgICBzZXRTZWxlY3Rpb24oc2VsZWN0aW9uLCB0
cnVlKTsKK30KKworVmlzaWJsZVNlbGVjdGlvbiBGcmFtZVNlbGVjdGlvbjo6d29yZFNlbGVjdGlv
bkNvbnRhaW5pbmdDYXJldFNlbGVjdGlvbihjb25zdCBWaXNpYmxlU2VsZWN0aW9uJiBzZWxlY3Rp
b24pCit7CisgICAgaWYgKHNlbGVjdGlvbi5pc05vbmUoKSkKKyAgICAgICAgcmV0dXJuIFZpc2li
bGVTZWxlY3Rpb24oKTsKKworICAgIEFTU0VSVChzZWxlY3Rpb24uaXNDYXJldE9yUmFuZ2UoKSk7
CisgICAgRnJhbWVTZWxlY3Rpb24gZnJhbWVTZWxlY3Rpb247CisgICAgZnJhbWVTZWxlY3Rpb24u
c2V0U2VsZWN0aW9uKHNlbGVjdGlvbik7CisKKyAgICBQb3NpdGlvbiBzdGFydFBvc0JlZm9yZUV4
cGFuc2lvbihzZWxlY3Rpb24uc3RhcnQoKSk7CisgICAgUG9zaXRpb24gZW5kUG9zQmVmb3JlRXhw
YW5zaW9uKHNlbGVjdGlvbi5lbmQoKSk7CisgICAgVmlzaWJsZVBvc2l0aW9uIHN0YXJ0VmlzaWJs
ZVBvc0JlZm9yZUV4cGFuc2lvbihzdGFydFBvc0JlZm9yZUV4cGFuc2lvbiwgVlBfREVGQVVMVF9B
RkZJTklUWSk7CisgICAgVmlzaWJsZVBvc2l0aW9uIGVuZFZpc2libGVQb3NCZWZvcmVFeHBhbnNp
b24oZW5kUG9zQmVmb3JlRXhwYW5zaW9uLCBWUF9ERUZBVUxUX0FGRklOSVRZKTsKKyAgICBpZiAo
ZW5kVmlzaWJsZVBvc0JlZm9yZUV4cGFuc2lvbi5pc051bGwoKSkKKyAgICAgICAgcmV0dXJuIFZp
c2libGVTZWxlY3Rpb24oKTsKKworICAgIGlmIChpc0VuZE9mUGFyYWdyYXBoKGVuZFZpc2libGVQ
b3NCZWZvcmVFeHBhbnNpb24pKSB7CisgICAgICAgIFVDaGFyIGMoZW5kVmlzaWJsZVBvc0JlZm9y
ZUV4cGFuc2lvbi5jaGFyYWN0ZXJCZWZvcmUoKSk7CisgICAgICAgIGlmIChpc1NwYWNlT3JOZXds
aW5lKGMpIHx8IGMgPT0gMHhBMCkgeworICAgICAgICAgICAgLy8gRW5kIG9mIHBhcmFncmFwaCB3
aXRoIHNwYWNlLgorICAgICAgICAgICAgcmV0dXJuIFZpc2libGVTZWxlY3Rpb24oKTsKKyAgICAg
ICAgfQorICAgIH0KKworICAgIC8vIElmIGF0IGVuZCBvZiBwYXJhZ3JhcGgsIG1vdmUgYmFja3dh
cmRzIG9uZSBjaGFyYWN0ZXIuCisgICAgLy8gVGhpcyBoYXMgdGhlIGVmZmVjdCBvZiBzZWxlY3Rp
bmcgdGhlIHdvcmQgb24gdGhlIGxpbmUgKHdoaWNoIGlzCisgICAgLy8gd2hhdCB3ZSB3YW50LCBy
YXRoZXIgdGhhbiBzZWxlY3RpbmcgcGFzdCB0aGUgZW5kIG9mIHRoZSBsaW5lKS4KKyAgICBpZiAo
aXNFbmRPZlBhcmFncmFwaChlbmRWaXNpYmxlUG9zQmVmb3JlRXhwYW5zaW9uKSAmJiAhaXNTdGFy
dE9mUGFyYWdyYXBoKGVuZFZpc2libGVQb3NCZWZvcmVFeHBhbnNpb24pKQorICAgICAgICBmcmFt
ZVNlbGVjdGlvbi5tb2RpZnkoRnJhbWVTZWxlY3Rpb246OkFsdGVyYXRpb25Nb3ZlLCBEaXJlY3Rp
b25CYWNrd2FyZCwgQ2hhcmFjdGVyR3JhbnVsYXJpdHkpOworCisgICAgVmlzaWJsZVNlbGVjdGlv
biBuZXdTZWxlY3Rpb24gPSBmcmFtZVNlbGVjdGlvbi5zZWxlY3Rpb24oKTsKKyAgICBuZXdTZWxl
Y3Rpb24uZXhwYW5kVXNpbmdHcmFudWxhcml0eShXb3JkR3JhbnVsYXJpdHkpOworICAgIGZyYW1l
U2VsZWN0aW9uLnNldFNlbGVjdGlvbihuZXdTZWxlY3Rpb24sIGZyYW1lU2VsZWN0aW9uLmdyYW51
bGFyaXR5KCkpOworCisgICAgUG9zaXRpb24gc3RhcnRQb3MoZnJhbWVTZWxlY3Rpb24uc2VsZWN0
aW9uKCkuc3RhcnQoKSk7CisgICAgUG9zaXRpb24gZW5kUG9zKGZyYW1lU2VsZWN0aW9uLnNlbGVj
dGlvbigpLmVuZCgpKTsKKworICAgIC8vIEV4cGFuc2lvbiBjYW5ub3QgYmUgYWxsb3dlZCB0byBj
aGFuZ2Ugc2VsZWN0aW9uIHNvIHRoYXQgaXQgaXMgbm8gbG9uZ2VyCisgICAgLy8gdG91Y2hlcyAo
b3IgY29udGFpbnMpIHRoZSBvcmlnaW5hbCwgdW5leHBhbmRlZCBzZWxlY3Rpb24uCisgICAgLy8g
RW5mb3JjZSB0aGlzIG9uIHRoZSB3YXkgaW50byB0aGVzZSBhZGRpdGlvbmFsIGNhbGN1bGF0aW9u
cyB0byBnaXZlIHRoZW0KKyAgICAvLyB0aGUgYmVzdCBjaGFuY2UgdG8geWllbGQgYSBzdWl0YWJs
ZSBhbnN3ZXIuCisgICAgaWYgKHN0YXJ0UG9zID4gc3RhcnRQb3NCZWZvcmVFeHBhbnNpb24pCisg
ICAgICAgIHN0YXJ0UG9zID0gc3RhcnRQb3NCZWZvcmVFeHBhbnNpb247CisgICAgaWYgKGVuZFBv
cyA8IGVuZFBvc0JlZm9yZUV4cGFuc2lvbikKKyAgICAgICAgZW5kUG9zID0gZW5kUG9zQmVmb3Jl
RXhwYW5zaW9uOworCisgICAgVmlzaWJsZVBvc2l0aW9uIHN0YXJ0VmlzaWJsZVBvcyhzdGFydFBv
cywgVlBfREVGQVVMVF9BRkZJTklUWSk7CisgICAgVmlzaWJsZVBvc2l0aW9uIGVuZFZpc2libGVQ
b3MoZW5kUG9zLCBWUF9ERUZBVUxUX0FGRklOSVRZKTsKKworICAgIGlmIChzdGFydFZpc2libGVQ
b3MuaXNOdWxsKCkgfHwgZW5kVmlzaWJsZVBvcy5pc051bGwoKSkgeworICAgICAgICAvLyBTdGFy
dCBvciBlbmQgaXMgbmlsCisgICAgICAgIHJldHVybiBWaXNpYmxlU2VsZWN0aW9uKCk7CisgICAg
fQorCisgICAgaWYgKGlzRW5kT2ZMaW5lKGVuZFZpc2libGVQb3NCZWZvcmVFeHBhbnNpb24pKSB7
CisgICAgICAgIFZpc2libGVQb3NpdGlvbiBwcmV2aW91cyhlbmRWaXNpYmxlUG9zLnByZXZpb3Vz
KCkpOworICAgICAgICBpZiAocHJldmlvdXMgPT0gZW5kVmlzaWJsZVBvcykgeworICAgICAgICAg
ICAgLy8gRW1wdHkgZG9jdW1lbnQKKyAgICAgICAgICAgIHJldHVybiBWaXNpYmxlU2VsZWN0aW9u
KCk7CisgICAgICAgIH0KKyAgICAgICAgVUNoYXIgYyhwcmV2aW91cy5jaGFyYWN0ZXJBZnRlcigp
KTsKKyAgICAgICAgaWYgKGlzU3BhY2VPck5ld2xpbmUoYykgfHwgYyA9PSAweEEwKSB7CisgICAg
ICAgICAgICAvLyBTcGFjZSBhdCBlbmQgb2YgbGluZQorICAgICAgICAgICAgcmV0dXJuIFZpc2li
bGVTZWxlY3Rpb24oKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIC8vIEV4cGFuc2lvbiBoYXMg
c2VsZWN0ZWQgcGFzdCBlbmQgb2YgbGluZS4KKyAgICAvLyBUcnkgcmVwb3NpdGlvbmluZyBiYWNr
d2FyZHMuCisgICAgaWYgKGlzRW5kT2ZMaW5lKHN0YXJ0VmlzaWJsZVBvcykgJiYgaXNTdGFydE9m
TGluZShlbmRWaXNpYmxlUG9zKSkgeworICAgICAgICBWaXNpYmxlUG9zaXRpb24gcHJldmlvdXMo
c3RhcnRWaXNpYmxlUG9zLnByZXZpb3VzKCkpOworICAgICAgICBpZiAoaXNFbmRPZkxpbmUocHJl
dmlvdXMpKSB7CisgICAgICAgICAgICAvLyBPbiBlbXB0eSBsaW5lCisgICAgICAgICAgICByZXR1
cm4gVmlzaWJsZVNlbGVjdGlvbigpOworICAgICAgICB9CisgICAgICAgIFVDaGFyIGMocHJldmlv
dXMuY2hhcmFjdGVyQWZ0ZXIoKSk7CisgICAgICAgIGlmIChpc1NwYWNlT3JOZXdsaW5lKGMpIHx8
IGMgPT0gMHhBMCkgeworICAgICAgICAgICAgLy8gU3BhY2UgYXQgZW5kIG9mIGxpbmUKKyAgICAg
ICAgICAgIHJldHVybiBWaXNpYmxlU2VsZWN0aW9uKCk7CisgICAgICAgIH0KKyAgICAgICAgZnJh
bWVTZWxlY3Rpb24ubW92ZVRvKHN0YXJ0VmlzaWJsZVBvcyk7CisgICAgICAgIGZyYW1lU2VsZWN0
aW9uLm1vZGlmeShGcmFtZVNlbGVjdGlvbjo6QWx0ZXJhdGlvbkV4dGVuZCwgRGlyZWN0aW9uQmFj
a3dhcmQsIFdvcmRHcmFudWxhcml0eSk7CisgICAgICAgIHN0YXJ0UG9zID0gZnJhbWVTZWxlY3Rp
b24uc2VsZWN0aW9uKCkuc3RhcnQoKTsKKyAgICAgICAgZW5kUG9zID0gZnJhbWVTZWxlY3Rpb24u
c2VsZWN0aW9uKCkuZW5kKCk7CisgICAgICAgIHN0YXJ0VmlzaWJsZVBvcyA9IFZpc2libGVQb3Np
dGlvbihzdGFydFBvcywgVlBfREVGQVVMVF9BRkZJTklUWSk7CisgICAgICAgIGVuZFZpc2libGVQ
b3MgPSBWaXNpYmxlUG9zaXRpb24oZW5kUG9zLCBWUF9ERUZBVUxUX0FGRklOSVRZKTsKKyAgICAg
ICAgaWYgKHN0YXJ0VmlzaWJsZVBvcy5pc051bGwoKSB8fCBlbmRWaXNpYmxlUG9zLmlzTnVsbCgp
KSB7CisgICAgICAgICAgICAvLyBTdGFydCBvciBlbmQgaXMgbmlsCisgICAgICAgICAgICByZXR1
cm4gVmlzaWJsZVNlbGVjdGlvbigpOworICAgICAgICB9CisgICAgfQorCisgICAgLy8gTm93IGxv
b3AgYmFja3dhcmRzIHVudGlsIHdlIGZpbmQgYSBub24tc3BhY2UuCisgICAgd2hpbGUgKGVuZFZp
c2libGVQb3MgIT0gc3RhcnRWaXNpYmxlUG9zKSB7CisgICAgICAgIFZpc2libGVQb3NpdGlvbiBw
cmV2aW91cyhlbmRWaXNpYmxlUG9zLnByZXZpb3VzKCkpOworICAgICAgICBVQ2hhciBjKHByZXZp
b3VzLmNoYXJhY3RlckFmdGVyKCkpOworICAgICAgICBpZiAoIWlzU3BhY2VPck5ld2xpbmUoYykg
JiYgYyAhPSAweEEwKQorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGVuZFZpc2libGVQb3Mg
PSBwcmV2aW91czsKKyAgICB9CisKKyAgICAvLyBFeHBhbnNpb24gY2Fubm90IGJlIGFsbG93ZWQg
dG8gY2hhbmdlIHNlbGVjdGlvbiBzbyB0aGF0IGl0IGlzIG5vIGxvbmdlcgorICAgIC8vIHRvdWNo
ZXMgKG9yIGNvbnRhaW5zKSB0aGUgb3JpZ2luYWwsIHVuZXhwYW5kZWQgc2VsZWN0aW9uLgorICAg
IC8vIEVuZm9yY2UgdGhpcyBvbiB0aGUgd2F5IG91dCBvZiB0aGUgZnVuY3Rpb24gdG8gcHJlc2Vy
dmUgdGhlIGludmFyaWFudC4KKyAgICBpZiAoc3RhcnRWaXNpYmxlUG9zID4gc3RhcnRWaXNpYmxl
UG9zQmVmb3JlRXhwYW5zaW9uKQorICAgICAgICBzdGFydFZpc2libGVQb3MgPSBzdGFydFZpc2li
bGVQb3NCZWZvcmVFeHBhbnNpb247CisgICAgaWYgKGVuZFZpc2libGVQb3MgPCBlbmRWaXNpYmxl
UG9zQmVmb3JlRXhwYW5zaW9uKQorICAgICAgICBlbmRWaXNpYmxlUG9zID0gZW5kVmlzaWJsZVBv
c0JlZm9yZUV4cGFuc2lvbjsKKworICAgIHJldHVybiBWaXNpYmxlU2VsZWN0aW9uKHN0YXJ0Vmlz
aWJsZVBvcywgZW5kVmlzaWJsZVBvcyk7ICAgIAorfQorCitib29sIEZyYW1lU2VsZWN0aW9uOjph
Y3R1YWxTZWxlY3Rpb25BdFNlbnRlbmNlU3RhcnQoY29uc3QgVmlzaWJsZVNlbGVjdGlvbiYgc2Vs
KSBjb25zdAoreworICAgIFBvc2l0aW9uIHN0YXJ0UG9zKHNlbC5zdGFydCgpKTsKKyAgICBWaXNp
YmxlUG9zaXRpb24gcG9zKGNyZWF0ZUxlZ2FjeUVkaXRpbmdQb3NpdGlvbihzdGFydFBvcy5kZXBy
ZWNhdGVkTm9kZSgpLCBzdGFydFBvcy5kZXByZWNhdGVkRWRpdGluZ09mZnNldCgpKSwgVlBfREVG
QVVMVF9BRkZJTklUWSk7CisgICAgaWYgKHBvcy5pc051bGwoKSkKKyAgICAgICAgcmV0dXJuIGZh
bHNlOworCisgICAgaWYgKGlzU3RhcnRPZlBhcmFncmFwaChwb3MpKQorICAgICAgICByZXR1cm4g
dHJ1ZTsKKyAKKyAgICBib29sIHJlc3VsdCA9IHRydWU7CisgICAgYm9vbCBzYXdTcGFjZSA9IGZh
bHNlOworICAgIHVuc2lnbmVkIHByZXZpb3VzQ291bnQgPSAwOworICAgIGZvciAocG9zID0gcG9z
LnByZXZpb3VzKCk7ICFwb3MuaXNOdWxsKCk7IHBvcyA9IHBvcy5wcmV2aW91cygpKSB7CisgICAg
ICAgIHByZXZpb3VzQ291bnQrKzsKKyAgICAgICAgaWYgKGlzU3RhcnRPZlBhcmFncmFwaChwb3Mp
KSB7CisgICAgICAgICAgICBpZiAocHJldmlvdXNDb3VudCA9PSAxIHx8IChwcmV2aW91c0NvdW50
ID09IDIgJiYgc2F3U3BhY2UpKQorICAgICAgICAgICAgICAgIHJlc3VsdCA9IGZhbHNlOworICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgVUNoYXIgYyhwb3MuY2hhcmFjdGVy
QWZ0ZXIoKSk7CisgICAgICAgIGlmIChjKSB7CisgICAgICAgICAgICBpZiAoaXNTcGFjZU9yTmV3
bGluZShjKSB8fCBjID09IDB4QTApIHsKKyAgICAgICAgICAgICAgICBzYXdTcGFjZSA9IHRydWU7
CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICByZXN1
bHQgPSAoYyA9PSAnLicgfHwgYyA9PSAnIScgfHwgYyA9PSAnPycpOworICAgICAgICAgICAgICAg
IGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorICAgIAorICAgIHJldHVy
biByZXN1bHQ7Cit9CisKK1Bhc3NSZWZQdHI8UmFuZ2U+IEZyYW1lU2VsZWN0aW9uOjpyYW5nZUJ5
QWx0ZXJpbmdDdXJyZW50U2VsZWN0aW9uKEVBbHRlcmF0aW9uIGFsdGVyYXRpb24sIGludCBhbW91
bnQpIGNvbnN0Cit7CisgICAgaWYgKG1fc2VsZWN0aW9uLmlzTm9uZSgpKQorICAgICAgICByZXR1
cm4gbnVsbHB0cjsKKworICAgIGlmICghYW1vdW50KQorICAgICAgICByZXR1cm4gdG9Ob3JtYWxp
emVkUmFuZ2UoKTsKKworICAgIEZyYW1lU2VsZWN0aW9uIGZyYW1lU2VsZWN0aW9uOworICAgIGZy
YW1lU2VsZWN0aW9uLnNldFNlbGVjdGlvbihtX3NlbGVjdGlvbik7CisgICAgU2VsZWN0aW9uRGly
ZWN0aW9uIGRpcmVjdGlvbiA9IGFtb3VudCA+IDAgPyBEaXJlY3Rpb25Gb3J3YXJkIDogRGlyZWN0
aW9uQmFja3dhcmQ7CisgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBhYnMoYW1vdW50KTsgaSsrKQor
ICAgICAgICBmcmFtZVNlbGVjdGlvbi5tb2RpZnkoYWx0ZXJhdGlvbiwgZGlyZWN0aW9uLCBDaGFy
YWN0ZXJHcmFudWxhcml0eSk7CisgICAgcmV0dXJuIGZyYW1lU2VsZWN0aW9uLnRvTm9ybWFsaXpl
ZFJhbmdlKCk7Cit9CisKK3ZvaWQgRnJhbWVTZWxlY3Rpb246OmNsZWFyQ3VycmVudFNlbGVjdGlv
bigpCit7CisgICAgc2V0U2VsZWN0aW9uKFZpc2libGVTZWxlY3Rpb24oKSk7Cit9CisKK3ZvaWQg
RnJhbWVTZWxlY3Rpb246OnNldENhcmV0QmxpbmtzKGJvb2wgY2FyZXRCbGlua3MpCit7CisgICAg
aWYgKG1fY2FyZXRCbGlua3MgPT0gY2FyZXRCbGlua3MpCisgICAgICAgIHJldHVybjsKKyNpZiBF
TkFCTEUoVEVYVF9DQVJFVCkKKyAgICBtX2ZyYW1lLT5kb2N1bWVudCgpLT51cGRhdGVMYXlvdXRJ
Z25vcmVQZW5kaW5nU3R5bGVzaGVldHMoKTsgCisgICAgaWYgKG1fY2FyZXRQYWludCkgeworICAg
ICAgICBtX2NhcmV0UGFpbnQgPSBmYWxzZTsgCisgICAgICAgIGludmFsaWRhdGVDYXJldFJlY3Qo
KTsgCisgICAgfQorI2VuZGlmCisgICAgaWYgKGNhcmV0QmxpbmtzKQorICAgICAgICBzZXRGb2N1
c2VkRWxlbWVudElmTmVlZGVkKCk7CisgICAgbV9jYXJldEJsaW5rcyA9IGNhcmV0QmxpbmtzOwor
ICAgIHVwZGF0ZUFwcGVhcmFuY2UoKTsKK30KKwordm9pZCBGcmFtZVNlbGVjdGlvbjo6c2V0Q2Fy
ZXRDb2xvcihjb25zdCBDb2xvciYgY2FyZXRDb2xvcikKK3sKKyAgICBpZiAobV9jYXJldENvbG9y
ICE9IGNhcmV0Q29sb3IpIHsKKyAgICAgICAgbV9jYXJldENvbG9yID0gY2FyZXRDb2xvcjsKKyAg
ICAgICAgaWYgKGNhcmV0SXNWaXNpYmxlKCkgJiYgbV9jYXJldEJsaW5rcyAmJiBpc0NhcmV0KCkp
CisgICAgICAgICAgICBpbnZhbGlkYXRlQ2FyZXRSZWN0KCk7CisgICAgfQorfQorI2VuZGlmIC8v
IFBMQVRGT1JNKElPUykKKwogfQogCiAjaWZuZGVmIE5ERUJVRwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvZWRpdGluZy9GcmFtZVNlbGVjdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9GcmFtZVNlbGVjdGlvbi5oCmluZGV4IGU4ODA1YzEwODE3NmNhZWY1ZTlhOGQxMTVkY2ZlZjMy
ZGI1NWU3ZWMuLmVhN2Q5MDJkNzE1YzkzYmVhZDAzOTc5OTUzNTM0NzZjNzU3MzQ3YTUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRnJhbWVTZWxlY3Rpb24uaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL0ZyYW1lU2VsZWN0aW9uLmgKQEAgLTM1LDYgKzM1LDEwIEBACiAj
aW5jbHVkZSAiVmlzaWJsZVNlbGVjdGlvbi5oIgogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5o
PgogCisjaWYgUExBVEZPUk0oSU9TKQorI2luY2x1ZGUgIkNvbG9yLmgiCisjZW5kaWYKKwogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBDaGFyYWN0ZXJEYXRhOwpAQCAtMjI4LDYgKzIzMiw0
MyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzaG93VHJlZUZvclRoaXMoKSBjb25zdDsKICNlbmRpZgog
CisjaWYgUExBVEZPUk0oSU9TKQorcHVibGljOgorICAgIHZvaWQgZXhwYW5kU2VsZWN0aW9uVG9F
bGVtZW50Q29udGFpbmluZ0NhcmV0U2VsZWN0aW9uKCk7CisgICAgUGFzc1JlZlB0cjxSYW5nZT4g
ZWxlbWVudFJhbmdlQ29udGFpbmluZ0NhcmV0U2VsZWN0aW9uKCkgY29uc3Q7CisgICAgdm9pZCBl
eHBhbmRTZWxlY3Rpb25Ub1dvcmRDb250YWluaW5nQ2FyZXRTZWxlY3Rpb24oKTsKKyAgICBQYXNz
UmVmUHRyPFJhbmdlPiB3b3JkUmFuZ2VDb250YWluaW5nQ2FyZXRTZWxlY3Rpb24oKTsKKyAgICB2
b2lkIGV4cGFuZFNlbGVjdGlvblRvU3RhcnRPZldvcmRDb250YWluaW5nQ2FyZXRTZWxlY3Rpb24o
KTsKKyAgICBVQ2hhciBjaGFyYWN0ZXJJblJlbGF0aW9uVG9DYXJldFNlbGVjdGlvbihpbnQgYW1v
dW50KSBjb25zdDsKKyAgICBVQ2hhciBjaGFyYWN0ZXJCZWZvcmVDYXJldFNlbGVjdGlvbigpIGNv
bnN0OworICAgIFVDaGFyIGNoYXJhY3RlckFmdGVyQ2FyZXRTZWxlY3Rpb24oKSBjb25zdDsKKyAg
ICBpbnQgd29yZE9mZnNldEluUmFuZ2UoY29uc3QgUmFuZ2UqKSBjb25zdDsKKyAgICBib29sIHNw
YWNlRm9sbG93c1dvcmRJblJhbmdlKGNvbnN0IFJhbmdlKikgY29uc3Q7CisgICAgYm9vbCBzZWxl
Y3Rpb25BdERvY3VtZW50U3RhcnQoKSBjb25zdDsKKyAgICBib29sIHNlbGVjdGlvbkF0U2VudGVu
Y2VTdGFydCgpIGNvbnN0OworICAgIGJvb2wgc2VsZWN0aW9uQXRXb3JkU3RhcnQoKSBjb25zdDsK
KyAgICBQYXNzUmVmUHRyPFJhbmdlPiByYW5nZUJ5TW92aW5nQ3VycmVudFNlbGVjdGlvbihpbnQg
YW1vdW50KSBjb25zdDsKKyAgICBQYXNzUmVmUHRyPFJhbmdlPiByYW5nZUJ5RXh0ZW5kaW5nQ3Vy
cmVudFNlbGVjdGlvbihpbnQgYW1vdW50KSBjb25zdDsKKyAgICB2b2lkIHNlbGVjdFJhbmdlT25F
bGVtZW50KHVuc2lnbmVkIGxvY2F0aW9uLCB1bnNpZ25lZCBsZW5ndGgsIE5vZGUqKTsKKyAgICB2
b2lkIHN1cHByZXNzQ2xvc2VUeXBpbmcoKSB7ICsrbV9jbG9zZVR5cGluZ1N1cHByZXNzaW9uczsg
fQorICAgIHZvaWQgcmVzdG9yZUNsb3NlVHlwaW5nKCkgeyAtLW1fY2xvc2VUeXBpbmdTdXBwcmVz
c2lvbnM7IH0KKyAgICB2b2lkIGNsZWFyQ3VycmVudFNlbGVjdGlvbigpOworICAgIHZvaWQgc2V0
Q2FyZXRCbGlua3MoYm9vbCBjYXJldEJsaW5rcyA9IHRydWUpOworICAgIHZvaWQgc2V0Q2FyZXRD
b2xvcihjb25zdCBDb2xvciYpOworICAgIHN0YXRpYyBWaXNpYmxlU2VsZWN0aW9uIHdvcmRTZWxl
Y3Rpb25Db250YWluaW5nQ2FyZXRTZWxlY3Rpb24oY29uc3QgVmlzaWJsZVNlbGVjdGlvbiYpOwor
ICAgIHZvaWQgc2V0VXBkYXRlQXBwZWFyYW5jZUVuYWJsZWQoYm9vbCBlbmFibGVkKSB7IG1fdXBk
YXRlQXBwZWFyYW5jZUVuYWJsZWQgPSBlbmFibGVkOyB9CisgICAgdm9pZCBzdXBwcmVzc1Njcm9s
bGluZygpIHsgKyttX3Njcm9sbGluZ1N1cHByZXNzQ291bnQ7IH0KKyAgICB2b2lkIHJlc3RvcmVT
Y3JvbGxpbmcoKQorICAgIHsKKyAgICAgICAgQVNTRVJUKG1fc2Nyb2xsaW5nU3VwcHJlc3NDb3Vu
dCk7CisgICAgICAgIC0tbV9zY3JvbGxpbmdTdXBwcmVzc0NvdW50OworICAgIH0KK3ByaXZhdGU6
CisgICAgYm9vbCBhY3R1YWxTZWxlY3Rpb25BdFNlbnRlbmNlU3RhcnQoY29uc3QgVmlzaWJsZVNl
bGVjdGlvbiYpIGNvbnN0OworICAgIFBhc3NSZWZQdHI8UmFuZ2U+IHJhbmdlQnlBbHRlcmluZ0N1
cnJlbnRTZWxlY3Rpb24oRUFsdGVyYXRpb24sIGludCBhbW91bnQpIGNvbnN0OworcHVibGljOgor
I2VuZGlmCisKICAgICBib29sIHNob3VsZENoYW5nZVNlbGVjdGlvbihjb25zdCBWaXNpYmxlU2Vs
ZWN0aW9uJikgY29uc3Q7CiAgICAgYm9vbCBzaG91bGREZWxldGVTZWxlY3Rpb24oY29uc3QgVmlz
aWJsZVNlbGVjdGlvbiYpIGNvbnN0OwogICAgIGVudW0gRW5kUG9pbnRzQWRqdXN0bWVudE1vZGUg
eyBBZGp1c3RFbmRwb2ludHNBdEJpZGlCb3VuZGFyeSwgRG9Ob3RBZGpzdXRFbmRwb2ludHMgfTsK
QEAgLTMwOSw2ICszNTAsMTQgQEAgcHJpdmF0ZToKICAgICBib29sIG1faXNDYXJldEJsaW5raW5n
U3VzcGVuZGVkIDogMTsKICAgICBib29sIG1fZm9jdXNlZCA6IDE7CiAgICAgYm9vbCBtX3Nob3Vs
ZFNob3dCbG9ja0N1cnNvciA6IDE7CisKKyNpZiBQTEFURk9STShJT1MpCisgICAgYm9vbCBtX3Vw
ZGF0ZUFwcGVhcmFuY2VFbmFibGVkIDogMTsKKyAgICBib29sIG1fY2FyZXRCbGlua3MgOiAxOwor
ICAgIENvbG9yIG1fY2FyZXRDb2xvcjsKKyAgICBpbnQgbV9jbG9zZVR5cGluZ1N1cHByZXNzaW9u
czsKKyAgICBpbnQgbV9zY3JvbGxpbmdTdXBwcmVzc0NvdW50OworI2VuZGlmCiB9OwogCiBpbmxp
bmUgRWRpdGluZ1N0eWxlKiBGcmFtZVNlbGVjdGlvbjo6dHlwaW5nU3R5bGUoKSBjb25zdApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9JbnNlcnRJbnRvVGV4dE5vZGVDb21tYW5k
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvSW5zZXJ0SW50b1RleHROb2RlQ29tbWFuZC5j
cHAKaW5kZXggYjVkMDZiMmVmMjRiOTdlMDM2NzA2NjllYTA3MGE2M2JjOGVmNzg5Mi4uMzcwZDRi
ZjRlNWI5ODYxZGM0NjUzOTUwYjgzYWZkZmE1YWQxZTdjOCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvZWRpdGluZy9JbnNlcnRJbnRvVGV4dE5vZGVDb21tYW5kLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL0luc2VydEludG9UZXh0Tm9kZUNvbW1hbmQuY3BwCkBAIC0zMiw2ICsz
Miw5IEBACiAjaW5jbHVkZSAiUmVuZGVyVGV4dC5oIgogI2luY2x1ZGUgIlNldHRpbmdzLmgiCiAj
aW5jbHVkZSAiVGV4dC5oIgorI2lmIFBMQVRGT1JNKElPUykKKyNpbmNsdWRlICJSZW5kZXJUZXh0
LmgiCisjZW5kaWYKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC02OCw2ICs3MSwxNCBAQCB2
b2lkIEluc2VydEludG9UZXh0Tm9kZUNvbW1hbmQ6OmRvQXBwbHkoKQogICAgICAgICBjYWNoZS0+
bm9kZVRleHRDaGFuZ2VOb3RpZmljYXRpb24obV9ub2RlLmdldCgpLCBBWE9iamVjdENhY2hlOjpB
WFRleHRJbnNlcnRlZCwgbV9vZmZzZXQsIG1fdGV4dCk7CiB9CiAKKyNpZiBQTEFURk9STShJT1Mp
Cit2b2lkIEluc2VydEludG9UZXh0Tm9kZUNvbW1hbmQ6OmRvUmVhcHBseSgpCit7CisgICAgRXhj
ZXB0aW9uQ29kZSBlYzsKKyAgICBtX25vZGUtPmluc2VydERhdGEobV9vZmZzZXQsIG1fdGV4dCwg
ZWMpOworfQorI2VuZGlmCisgICAgCiB2b2lkIEluc2VydEludG9UZXh0Tm9kZUNvbW1hbmQ6OmRv
VW5hcHBseSgpCiB7CiAgICAgaWYgKCFtX25vZGUtPmhhc0VkaXRhYmxlU3R5bGUoKSkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvSW5zZXJ0SW50b1RleHROb2RlQ29tbWFuZC5o
IGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9JbnNlcnRJbnRvVGV4dE5vZGVDb21tYW5kLmgKaW5k
ZXggZjY4NTQ3MjFiYTFhMWI1YjkzNTc4Zjc5Y2E3ODk1MjZjMTg2MzFlMy4uNjlkMWM0YzZiMTI0
ZDJmOTQxN2YxOTU5NjdmOTM4ZGYwYWZjNjJkMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9JbnNlcnRJbnRvVGV4dE5vZGVDb21tYW5kLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9JbnNlcnRJbnRvVGV4dE5vZGVDb21tYW5kLmgKQEAgLTQ0LDYgKzQ0LDkgQEAgcHJp
dmF0ZToKIAogICAgIHZpcnR1YWwgdm9pZCBkb0FwcGx5KCkgT1ZFUlJJREU7CiAgICAgdmlydHVh
bCB2b2lkIGRvVW5hcHBseSgpIE9WRVJSSURFOworI2lmIFBMQVRGT1JNKElPUykKKyAgICB2aXJ0
dWFsIHZvaWQgZG9SZWFwcGx5KCkgT1ZFUlJJREU7CisjZW5kaWYKICAgICAKICNpZm5kZWYgTkRF
QlVHCiAgICAgdmlydHVhbCB2b2lkIGdldE5vZGVzSW5Db21tYW5kKEhhc2hTZXQ8Tm9kZSo+Jikg
T1ZFUlJJREU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0luc2VydFRleHRD
b21tYW5kLmggYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0luc2VydFRleHRDb21tYW5kLmgKaW5k
ZXggNzFkOWY2NGU3YmJkMjE2M2VmMjRlZTk3ZTFlNDczYjMwNjk3ODM2Yy4uNjY2ZmU5NWE4MzY5
YmFmNzkxMjNhY2IyYjMwMGM4MzgyYTNmOTViNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9JbnNlcnRUZXh0Q29tbWFuZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
SW5zZXJ0VGV4dENvbW1hbmQuaApAQCAtNjgsNiArNjgsMTAgQEAgcHJpdmF0ZToKIAogICAgIHZp
cnR1YWwgdm9pZCBkb0FwcGx5KCk7CiAKKyNpZiBQTEFURk9STShJT1MpCisgICAgdmlydHVhbCBi
b29sIGlzSW5zZXJ0VGV4dENvbW1hbmQoKSBjb25zdCBPVkVSUklERSB7IHJldHVybiB0cnVlOyB9
CisjZW5kaWYKKwogICAgIFBvc2l0aW9uIHBvc2l0aW9uSW5zaWRlVGV4dE5vZGUoY29uc3QgUG9z
aXRpb24mKTsKICAgICBQb3NpdGlvbiBpbnNlcnRUYWIoY29uc3QgUG9zaXRpb24mKTsKICAgICAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvUmVwbGFjZVNlbGVjdGlvbkNvbW1h
bmQuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9SZXBsYWNlU2VsZWN0aW9uQ29tbWFuZC5j
cHAKaW5kZXggMTZlM2ZmNGVkNDM1YTdiMjFjNzg2MmQ1Nzc2YTg3NzM2ZjFmZmMwYi4uZDNkNzg4
MmY5NzZhNTQyY2ExNzA3OTFlNDBhMTliMmUxODgzMDcwMSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvZWRpdGluZy9SZXBsYWNlU2VsZWN0aW9uQ29tbWFuZC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvZWRpdGluZy9SZXBsYWNlU2VsZWN0aW9uQ29tbWFuZC5jcHAKQEAgLTg5OSw2ICs4OTks
MTMgQEAgdm9pZCBSZXBsYWNlU2VsZWN0aW9uQ29tbWFuZDo6ZG9BcHBseSgpCiAgICAgaWYgKCFz
ZWxlY3Rpb24ucm9vdEVkaXRhYmxlRWxlbWVudCgpKQogICAgICAgICByZXR1cm47CiAKKyNpZiBQ
TEFURk9STShJT1MpCisgICAgLy8gSW4gcGxhaW4gdGV4dCBvbmx5IHJlZ2lvbnMsIHdlIGNyZWF0
ZSBzdHlsZS1sZXNzIGZyYWdtZW50cywgc28gdGhlIGluc2VydGVkIGNvbnRlbnQgd2lsbCBhdXRv
bWF0aWNhbGx5CisgICAgLy8gbWF0Y2ggdGhlIHN0eWxlIG9mIHRoZSBzdXJyb3VuZGluZyBhcmVh
IGFuZCBzbyB3ZSBjYW4gYXZvaWQgdW5uZWNlc3Nhcnkgd29yayBiZWxvdyBmb3IgbV9tYXRjaFN0
eWxlLgorICAgIGlmICghc2VsZWN0aW9uLmlzQ29udGVudFJpY2hseUVkaXRhYmxlKCkpCisgICAg
ICAgIG1fbWF0Y2hTdHlsZSA9IGZhbHNlOworI2VuZGlmCisKICAgICBSZXBsYWNlbWVudEZyYWdt
ZW50IGZyYWdtZW50KGRvY3VtZW50KCksIG1fZG9jdW1lbnRGcmFnbWVudC5nZXQoKSwgc2VsZWN0
aW9uKTsKICAgICBpZiAocGVyZm9ybVRyaXZpYWxSZXBsYWNlKGZyYWdtZW50KSkKICAgICAgICAg
cmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0QWZmaW5pdHku
aCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dEFmZmluaXR5LmgKaW5kZXggNTMxMGNhOTZm
MjY3MmM4ZDlmMmRmMDAyMWY4NjE1YWZkM2ZmZDQ0My4uOTBlNjY1ZDNiNzU1ZjUzNTYxNTNmNzk5
MTI2YjkxZGVmMTY1YWFjNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0
QWZmaW5pdHkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1RleHRBZmZpbml0eS5oCkBA
IC0yNyw3ICsyNywxMSBAQAogI2RlZmluZSBUZXh0QWZmaW5pdHlfaAogCiAjaWZkZWYgX19PQkpD
X18KKyNpZiAhUExBVEZPUk0oSU9TKQogI2luY2x1ZGUgPEFwcEtpdC9OU1RleHRWaWV3Lmg+Cisj
ZWxzZQorI2luY2x1ZGUgIldBS0FwcEtpdFN0dWJzLmgiCisjZW5kaWYgLy8gIVBMQVRGT1JNKElP
UykKICNlbmRpZgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL1RleHRDaGVja2luZ0hlbHBlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL1RleHRDaGVja2luZ0hlbHBlci5jcHAKaW5kZXggZTFjZTE0NjBlMDliYjAzYzkxZDg2Yjdk
ZDdhNTRlN2ZlMTVjNGUwNi4uNjVmMTQzMTQ2MzY2ZjUxOTE3ODE4YzY2MTNjODQ1YmZlNjQyNmJi
OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0Q2hlY2tpbmdIZWxwZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dENoZWNraW5nSGVscGVyLmNwcApA
QCAtMjMzLDYgKzIzMyw3IEBAIFRleHRDaGVja2luZ0hlbHBlcjo6flRleHRDaGVja2luZ0hlbHBl
cigpCiB7CiB9CiAKKyNpZiAhUExBVEZPUk0oSU9TKQogU3RyaW5nIFRleHRDaGVja2luZ0hlbHBl
cjo6ZmluZEZpcnN0TWlzc3BlbGxpbmcoaW50JiBmaXJzdE1pc3NwZWxsaW5nT2Zmc2V0LCBib29s
IG1hcmtBbGwsIFJlZlB0cjxSYW5nZT4mIGZpcnN0TWlzc3BlbGxpbmdSYW5nZSkKIHsKICAgICBX
b3JkQXdhcmVJdGVyYXRvciBpdChtX3JhbmdlLmdldCgpKTsKQEAgLTQxMyw2ICs0MTQsNyBAQCBT
dHJpbmcgVGV4dENoZWNraW5nSGVscGVyOjpmaW5kRmlyc3RNaXNzcGVsbGluZ09yQmFkR3JhbW1h
cihib29sIGNoZWNrR3JhbW1hciwgYgogICAgIH0KICAgICByZXR1cm4gZmlyc3RGb3VuZEl0ZW07
CiB9CisjZW5kaWYgLy8gIVBMQVRGT1JNKElPUykKIAogI2lmIFVTRShHUkFNTUFSX0NIRUNLSU5H
KQogaW50IFRleHRDaGVja2luZ0hlbHBlcjo6ZmluZEZpcnN0R3JhbW1hckRldGFpbChjb25zdCBW
ZWN0b3I8R3JhbW1hckRldGFpbD4mIGdyYW1tYXJEZXRhaWxzLCBpbnQgYmFkR3JhbW1hclBocmFz
ZUxvY2F0aW9uLCBpbnQgc3RhcnRPZmZzZXQsIGludCBlbmRPZmZzZXQsIGJvb2wgbWFya0FsbCkg
Y29uc3QKQEAgLTYxMiw2ICs2MTQsNyBAQCBWZWN0b3I8U3RyaW5nPiBUZXh0Q2hlY2tpbmdIZWxw
ZXI6Omd1ZXNzZXNGb3JNaXNzcGVsbGVkT3JVbmdyYW1tYXRpY2FsUmFuZ2UoYm9vbAogfQogCiAK
KyNpZiAhUExBVEZPUk0oSU9TKQogdm9pZCBUZXh0Q2hlY2tpbmdIZWxwZXI6Om1hcmtBbGxNaXNz
cGVsbGluZ3MoUmVmUHRyPFJhbmdlPiYgZmlyc3RNaXNzcGVsbGluZ1JhbmdlKQogewogICAgIC8v
IFVzZSB0aGUgIm1hcmtBbGwiIGZlYXR1cmUgb2YgZmluZEZpcnN0TWlzc3BlbGxpbmcuIElnbm9y
ZSB0aGUgcmV0dXJuIHZhbHVlIGFuZCB0aGUgIm91dCBwYXJhbWV0ZXIiOwpAQCAtNjMwLDYgKzYz
Myw3IEBAIHZvaWQgVGV4dENoZWNraW5nSGVscGVyOjptYXJrQWxsQmFkR3JhbW1hcigpCiAgICAg
ZmluZEZpcnN0QmFkR3JhbW1hcihpZ25vcmVkR3JhbW1hckRldGFpbCwgaWdub3JlZE9mZnNldCwg
dHJ1ZSk7CiB9CiAjZW5kaWYKKyNlbmRpZiAvLyAhUExBVEZPUk0oSU9TKQogCiBib29sIFRleHRD
aGVja2luZ0hlbHBlcjo6dW5pZmllZFRleHRDaGVja2VyRW5hYmxlZCgpIGNvbnN0CiB7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1RleHRHcmFudWxhcml0eS5oIGIvU291cmNl
L1dlYkNvcmUvZWRpdGluZy9UZXh0R3JhbnVsYXJpdHkuaAppbmRleCAwOWNjNGVkZDc1NmViNTQ0
NmE0MDcxNzEyNGUwZTA4MzdiYjc2MzYwLi5hYWEzZDdkMTEyNzNkNTEzODRhOGFmYTVhMjcyMGNi
ODkzM2RkYTViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1RleHRHcmFudWxh
cml0eS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dEdyYW51bGFyaXR5LmgKQEAg
LTM2LDYgKzM2LDkgQEAgZW51bSBUZXh0R3JhbnVsYXJpdHkgewogICAgIFNlbnRlbmNlR3JhbnVs
YXJpdHksCiAgICAgTGluZUdyYW51bGFyaXR5LAogICAgIFBhcmFncmFwaEdyYW51bGFyaXR5LAor
I2lmIFBMQVRGT1JNKElPUykKKyAgICBEb2N1bWVudEdyYW51bGFyaXR5LAorI2VuZGlmCiAgICAg
U2VudGVuY2VCb3VuZGFyeSwKICAgICBMaW5lQm91bmRhcnksCiAgICAgUGFyYWdyYXBoQm91bmRh
cnksCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1RleHRJdGVyYXRvci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1RleHRJdGVyYXRvci5jcHAKaW5kZXggNGMyYzI3YzNl
NmViOWIxZmU5MTkyNTMxODIwODFiYTc1ODcxMzhlZi4uNWI0OGMyNjhkNTI2Mjg3N2FlMTg1N2M0
OTY0Yjg3YzI2ZDcwOGI5ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0
SXRlcmF0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dEl0ZXJhdG9yLmNw
cApAQCAtMjUwLDggKzI1MCwyMSBAQCBib29sIGlzUmVuZGVyZXJSZXBsYWNlZEVsZW1lbnQoUmVu
ZGVyT2JqZWN0KiByZW5kZXJlcikKICAgICBpZiAoIXJlbmRlcmVyKQogICAgICAgICByZXR1cm4g
ZmFsc2U7CiAgICAgCisjaWYgRU5BQkxFKFBMVUdJTl9QUk9YWV9GT1JfVklERU8pCisgICAgaWYg
KHJlbmRlcmVyLT5pc0ltYWdlKCkgfHwgcmVuZGVyZXItPmlzTWVkaWEoKSkKKyAgICAgICAgcmV0
dXJuIHRydWU7CisgICAgaWYgKHJlbmRlcmVyLT5pc1dpZGdldCgpKSB7CisgICAgICAgIGlmIChy
ZW5kZXJlci0+bm9kZSgpICYmIHJlbmRlcmVyLT5ub2RlKCktPmlzRWxlbWVudE5vZGUoKSkgewor
ICAgICAgICAgICAgRWxlbWVudCogZWxlbWVudCA9IHRvRWxlbWVudChyZW5kZXJlci0+bm9kZSgp
KTsKKyAgICAgICAgICAgIGlmIChlbGVtZW50LT5oYXNUYWdOYW1lKHZpZGVvVGFnKSB8fCAhZWxl
bWVudC0+aGFzVGFnTmFtZShhdWRpb1RhZykpCisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OyAvLyBTZWUgPHJkYXI6Ly9wcm9ibGVtLzY4OTM3OTM+LgorICAgICAgICB9CisgICAgICAgIHJl
dHVybiB0cnVlOworICAgIH0KKyNlbHNlCiAgICAgaWYgKHJlbmRlcmVyLT5pc0ltYWdlKCkgfHwg
cmVuZGVyZXItPmlzV2lkZ2V0KCkgfHwgcmVuZGVyZXItPmlzTWVkaWEoKSkKICAgICAgICAgcmV0
dXJuIHRydWU7CisjZW5kaWYKICAgICAKICAgICBpZiAocmVuZGVyZXItPm5vZGUoKSAmJiByZW5k
ZXJlci0+bm9kZSgpLT5pc0VsZW1lbnROb2RlKCkpIHsKICAgICAgICAgRWxlbWVudCogZWxlbWVu
dCA9IHRvRWxlbWVudChyZW5kZXJlci0+bm9kZSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvVHlwaW5nQ29tbWFuZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1R5
cGluZ0NvbW1hbmQuY3BwCmluZGV4IDhlYjBkMzlkYWY2Nzg3MjdmMTUxMGUxOGZjMjc5MjUxOWI0
ODcwZDUuLjEwMDY4NDljOWY5NDlhNWI1NjdmODY1MzdhNzI4NmI0MDJkZGRmOGMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVHlwaW5nQ29tbWFuZC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvZWRpdGluZy9UeXBpbmdDb21tYW5kLmNwcApAQCAtMjM2LDYgKzIzNiwxNiBAQCB2
b2lkIFR5cGluZ0NvbW1hbmQ6OmNsb3NlVHlwaW5nKEZyYW1lKiBmcmFtZSkKICAgICAgICAgbGFz
dFR5cGluZ0NvbW1hbmQtPmNsb3NlVHlwaW5nKCk7CiB9CiAKKyNpZiBQTEFURk9STShJT1MpCit2
b2lkIFR5cGluZ0NvbW1hbmQ6OmVuc3VyZUxhc3RFZGl0Q29tbWFuZEhhc0N1cnJlbnRTZWxlY3Rp
b25JZk9wZW5Gb3JNb3JlVHlwaW5nKEZyYW1lKiBmcmFtZSwgY29uc3QgVmlzaWJsZVNlbGVjdGlv
biYgbmV3U2VsZWN0aW9uKQoreworICAgIGlmIChSZWZQdHI8VHlwaW5nQ29tbWFuZD4gbGFzdFR5
cGluZ0NvbW1hbmQgPSBsYXN0VHlwaW5nQ29tbWFuZElmU3RpbGxPcGVuRm9yVHlwaW5nKGZyYW1l
KSkgeworICAgICAgICBsYXN0VHlwaW5nQ29tbWFuZC0+c2V0RW5kaW5nU2VsZWN0aW9uKG5ld1Nl
bGVjdGlvbik7CisgICAgICAgIGxhc3RUeXBpbmdDb21tYW5kLT5zZXRFbmRpbmdTZWxlY3Rpb25P
bkxhc3RJbnNlcnRDb21tYW5kKG5ld1NlbGVjdGlvbik7CisgICAgfQorfQorI2VuZGlmCisKIHZv
aWQgVHlwaW5nQ29tbWFuZDo6ZG9BcHBseSgpCiB7CiAgICAgaWYgKCFlbmRpbmdTZWxlY3Rpb24o
KS5pc05vbk9ycGhhbmVkQ2FyZXRPclJhbmdlKCkpCkBAIC0yODEsNyArMjkxLDcgQEAgdm9pZCBU
eXBpbmdDb21tYW5kOjptYXJrTWlzc3BlbGxpbmdzQWZ0ZXJUeXBpbmcoRVR5cGluZ0NvbW1hbmQg
Y29tbWFuZFR5cGUpCiB7CiAgICAgRnJhbWUmIGZyYW1lID0gdGhpcy0+ZnJhbWUoKTsKIAotI2lm
IFBMQVRGT1JNKE1BQykKKyNpZiBQTEFURk9STShNQUMpICYmICFQTEFURk9STShJT1MpCiAgICAg
aWYgKCFmcmFtZS5lZGl0b3IoKS5pc0NvbnRpbnVvdXNTcGVsbENoZWNraW5nRW5hYmxlZCgpCiAg
ICAgICAgICYmICFmcmFtZS5lZGl0b3IoKS5pc0F1dG9tYXRpY1F1b3RlU3Vic3RpdHV0aW9uRW5h
YmxlZCgpCiAgICAgICAgICYmICFmcmFtZS5lZGl0b3IoKS5pc0F1dG9tYXRpY0xpbmtEZXRlY3Rp
b25FbmFibGVkKCkKQEAgLTI5OSw2ICszMDksNyBAQCB2b2lkIFR5cGluZ0NvbW1hbmQ6Om1hcmtN
aXNzcGVsbGluZ3NBZnRlclR5cGluZyhFVHlwaW5nQ29tbWFuZCBjb21tYW5kVHlwZSkKICAgICBW
aXNpYmxlUG9zaXRpb24gc3RhcnQoZW5kaW5nU2VsZWN0aW9uKCkuc3RhcnQoKSwgZW5kaW5nU2Vs
ZWN0aW9uKCkuYWZmaW5pdHkoKSk7CiAgICAgVmlzaWJsZVBvc2l0aW9uIHByZXZpb3VzID0gc3Rh
cnQucHJldmlvdXMoKTsKICAgICBpZiAocHJldmlvdXMuaXNOb3ROdWxsKCkpIHsKKyNpZiAhUExB
VEZPUk0oSU9TKQogICAgICAgICBWaXNpYmxlUG9zaXRpb24gcDEgPSBzdGFydE9mV29yZChwcmV2
aW91cywgTGVmdFdvcmRJZk9uQm91bmRhcnkpOwogICAgICAgICBWaXNpYmxlUG9zaXRpb24gcDIg
PSBzdGFydE9mV29yZChzdGFydCwgTGVmdFdvcmRJZk9uQm91bmRhcnkpOwogICAgICAgICBpZiAo
cDEgIT0gcDIpIHsKQEAgLTMwOSw2ICszMjAsMjIgQEAgdm9pZCBUeXBpbmdDb21tYW5kOjptYXJr
TWlzc3BlbGxpbmdzQWZ0ZXJUeXBpbmcoRVR5cGluZ0NvbW1hbmQgY29tbWFuZFR5cGUpCiAgICAg
ICAgICAgICBmcmFtZS5lZGl0b3IoKS5tYXJrTWlzc3BlbGxpbmdzQWZ0ZXJUeXBpbmdUb1dvcmQo
cDEsIGVuZGluZ1NlbGVjdGlvbigpLCAhc3RyaXBwZWRQcmV2aW91c1dvcmQuaXNFbXB0eSgpKTsK
ICAgICAgICAgfSBlbHNlIGlmIChjb21tYW5kVHlwZSA9PSBUeXBpbmdDb21tYW5kOjpJbnNlcnRU
ZXh0KQogICAgICAgICAgICAgZnJhbWUuZWRpdG9yKCkuc3RhcnRBbHRlcm5hdGl2ZVRleHRVSVRp
bWVyKCk7CisjZWxzZQorICAgICAgICBVTlVTRURfUEFSQU0oY29tbWFuZFR5cGUpOworICAgICAg
ICAvLyBJZiB0aGlzIGJ1ZyBnZXRzIGZpeGVkLCB0aGlzIFBMQVRGT1JNKElPUykgY29kZSBjb3Vs
ZCBiZSByZW1vdmVkOgorICAgICAgICAvLyA8cmRhcjovL3Byb2JsZW0vNzI1OTYxMT4gV29yZCBi
b3VuZGFyeSBjb2RlIG9uIGlQaG9uZSBnaXZlcyBkaWZmZXJlbnQgcmVzdWx0cyB0aGFuIGRlc2t0
b3AKKyAgICAgICAgRVdvcmRTaWRlIHN0YXJ0V29yZFNpZGUgPSBMZWZ0V29yZElmT25Cb3VuZGFy
eTsKKyAgICAgICAgVUNoYXIzMiBjID0gcHJldmlvdXMuY2hhcmFjdGVyQWZ0ZXIoKTsKKyAgICAg
ICAgLy8gRklYTUU6IFZpc2libGVQb3NpdGlvbjo6Y2hhcmFjdGVyQWZ0ZXIoKSBhbmQgY2hhcmFj
dGVyQmVmb3JlKCkgZG8gbm90IGVtaXQgbmV3bGluZXMgdGhlIHNhbWUKKyAgICAgICAgLy8gd2F5
IGFzIFRleHRJdGVyYXRvciwgc28gd2UgZG8gYW4gaXNFbmRPZlBhcmFncmFwaCBjaGVjayBoZXJl
LgorICAgICAgICBpZiAoaXNTcGFjZU9yTmV3bGluZShjKSB8fCBjID09IDB4QTAgfHwgaXNFbmRP
ZlBhcmFncmFwaChwcmV2aW91cykpIHsKKyAgICAgICAgICAgIHN0YXJ0V29yZFNpZGUgPSBSaWdo
dFdvcmRJZk9uQm91bmRhcnk7CisgICAgICAgIH0KKyAgICAgICAgVmlzaWJsZVBvc2l0aW9uIHAx
ID0gc3RhcnRPZldvcmQocHJldmlvdXMsIHN0YXJ0V29yZFNpZGUpOworICAgICAgICBWaXNpYmxl
UG9zaXRpb24gcDIgPSBzdGFydE9mV29yZChzdGFydCwgc3RhcnRXb3JkU2lkZSk7CisgICAgICAg
IGlmIChwMSAhPSBwMikKKyAgICAgICAgICAgIGZyYW1lLmVkaXRvcigpLm1hcmtNaXNzcGVsbGlu
Z3NBZnRlclR5cGluZ1RvV29yZChwMSwgZW5kaW5nU2VsZWN0aW9uKCksIGZhbHNlKTsKKyNlbmRp
ZiAvLyAhUExBVEZPUk0oSU9TKQogICAgIH0KIH0KIApAQCAtNDg3LDggKzUxNCwxNSBAQCB2b2lk
IFR5cGluZ0NvbW1hbmQ6OmRlbGV0ZUtleVByZXNzZWQoVGV4dEdyYW51bGFyaXR5IGdyYW51bGFy
aXR5LCBib29sIGtpbGxSaW5nKQogICAgIH0KICAgICAKICAgICBBU1NFUlQoIXNlbGVjdGlvblRv
RGVsZXRlLmlzTm9uZSgpKTsKLSAgICBpZiAoc2VsZWN0aW9uVG9EZWxldGUuaXNOb25lKCkpCisg
ICAgaWYgKHNlbGVjdGlvblRvRGVsZXRlLmlzTm9uZSgpKSB7CisjaWYgUExBVEZPUk0oSU9TKQor
ICAgICAgICAvLyBXb3JrYXJvdW5kIGZvciB0aGlzIGJ1ZzoKKyAgICAgICAgLy8gPHJkYXI6Ly9w
cm9ibGVtLzQ2NTM3NTU+IFVJS2l0IHRleHQgd2lkZ2V0cyBzaG91bGQgdXNlIFdlYktpdCBlZGl0
aW5nIEFQSSB0byBtYW5pcHVsYXRlIHRleHQKKyAgICAgICAgc2V0RW5kaW5nU2VsZWN0aW9uKGZy
YW1lLnNlbGVjdGlvbigpLnNlbGVjdGlvbigpKTsKKyAgICAgICAgY2xvc2VUeXBpbmcoJmZyYW1l
KTsKKyNlbmRpZgogICAgICAgICByZXR1cm47CisgICAgfQogICAgIAogICAgIGlmIChzZWxlY3Rp
b25Ub0RlbGV0ZS5pc0NhcmV0KCkgfHwgIWZyYW1lLnNlbGVjdGlvbigpLnNob3VsZERlbGV0ZVNl
bGVjdGlvbihzZWxlY3Rpb25Ub0RlbGV0ZSkpCiAgICAgICAgIHJldHVybjsKQEAgLTU3OCw4ICs2
MTIsMTUgQEAgdm9pZCBUeXBpbmdDb21tYW5kOjpmb3J3YXJkRGVsZXRlS2V5UHJlc3NlZChUZXh0
R3JhbnVsYXJpdHkgZ3JhbnVsYXJpdHksIGJvb2wga2kKICAgICB9CiAgICAgCiAgICAgQVNTRVJU
KCFzZWxlY3Rpb25Ub0RlbGV0ZS5pc05vbmUoKSk7Ci0gICAgaWYgKHNlbGVjdGlvblRvRGVsZXRl
LmlzTm9uZSgpKQorICAgIGlmIChzZWxlY3Rpb25Ub0RlbGV0ZS5pc05vbmUoKSkgeworI2lmIFBM
QVRGT1JNKElPUykKKyAgICAgICAgLy8gV29ya2Fyb3VuZCBmb3IgdGhpcyBidWc6CisgICAgICAg
IC8vIDxyZGFyOi8vcHJvYmxlbS80NjUzNzU1PiBVSUtpdCB0ZXh0IHdpZGdldHMgc2hvdWxkIHVz
ZSBXZWJLaXQgZWRpdGluZyBBUEkgdG8gbWFuaXB1bGF0ZSB0ZXh0CisgICAgICAgIHNldEVuZGlu
Z1NlbGVjdGlvbihmcmFtZS5zZWxlY3Rpb24oKS5zZWxlY3Rpb24oKSk7CisgICAgICAgIGNsb3Nl
VHlwaW5nKCZmcmFtZSk7CisjZW5kaWYKICAgICAgICAgcmV0dXJuOworICAgIH0KICAgICAKICAg
ICBpZiAoc2VsZWN0aW9uVG9EZWxldGUuaXNDYXJldCgpIHx8ICFmcmFtZS5zZWxlY3Rpb24oKS5z
aG91bGREZWxldGVTZWxlY3Rpb24oc2VsZWN0aW9uVG9EZWxldGUpKQogICAgICAgICByZXR1cm47
CkBAIC01OTksNiArNjQwLDI1IEBAIHZvaWQgVHlwaW5nQ29tbWFuZDo6ZGVsZXRlU2VsZWN0aW9u
KGJvb2wgc21hcnREZWxldGUpCiAgICAgdHlwaW5nQWRkZWRUb09wZW5Db21tYW5kKERlbGV0ZVNl
bGVjdGlvbik7CiB9CiAKKyNpZiBQTEFURk9STShJT1MpCitjbGFzcyBGcmllbmRseUVkaXRDb21t
YW5kIDogcHVibGljIEVkaXRDb21tYW5kIHsKK3B1YmxpYzoKKyAgICB2b2lkIHNldEVuZGluZ1Nl
bGVjdGlvbihjb25zdCBWaXNpYmxlU2VsZWN0aW9uJiBzZWxlY3Rpb24pCisgICAgeworICAgICAg
ICBFZGl0Q29tbWFuZDo6c2V0RW5kaW5nU2VsZWN0aW9uKHNlbGVjdGlvbik7CisgICAgfQorfTsK
Kwordm9pZCBUeXBpbmdDb21tYW5kOjpzZXRFbmRpbmdTZWxlY3Rpb25Pbkxhc3RJbnNlcnRDb21t
YW5kKGNvbnN0IFZpc2libGVTZWxlY3Rpb24mIHNlbGVjdGlvbikKK3sKKyAgICBpZiAoIW1fY29t
bWFuZHMuaXNFbXB0eSgpKSB7CisgICAgICAgIEVkaXRDb21tYW5kKiBsYXN0Q29tbWFuZCA9IG1f
Y29tbWFuZHMubGFzdCgpLmdldCgpOworICAgICAgICBpZiAobGFzdENvbW1hbmQtPmlzSW5zZXJ0
VGV4dENvbW1hbmQoKSkKKyAgICAgICAgICAgIHN0YXRpY19jYXN0PEZyaWVuZGx5RWRpdENvbW1h
bmQqPihsYXN0Q29tbWFuZCktPnNldEVuZGluZ1NlbGVjdGlvbihzZWxlY3Rpb24pOworICAgIH0K
K30KKyNlbmRpZgorCiB2b2lkIFR5cGluZ0NvbW1hbmQ6OnVwZGF0ZVByZXNlcnZlc1R5cGluZ1N0
eWxlKEVUeXBpbmdDb21tYW5kIGNvbW1hbmRUeXBlKQogewogICAgIHN3aXRjaCAoY29tbWFuZFR5
cGUpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVHlwaW5nQ29tbWFuZC5o
IGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9UeXBpbmdDb21tYW5kLmgKaW5kZXggMmQ4YzM3ZmQz
MDI4YjVmZTAwYjFiZDRhOWVlM2EzNjRiMzJkYTFjMC4uZTI0OWEzNGIxNGFjODdhMWFjNDM1OTY2
ZDQ0YmQ3MjMzNTJlNjYzYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9UeXBp
bmdDb21tYW5kLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9UeXBpbmdDb21tYW5kLmgK
QEAgLTY2LDYgKzY2LDkgQEAgcHVibGljOgogICAgIHN0YXRpYyB2b2lkIGluc2VydFBhcmFncmFw
aFNlcGFyYXRvcihEb2N1bWVudCYsIE9wdGlvbnMpOwogICAgIHN0YXRpYyB2b2lkIGluc2VydFBh
cmFncmFwaFNlcGFyYXRvckluUXVvdGVkQ29udGVudChEb2N1bWVudCYpOwogICAgIHN0YXRpYyB2
b2lkIGNsb3NlVHlwaW5nKEZyYW1lKik7CisjaWYgUExBVEZPUk0oSU9TKQorICAgIHN0YXRpYyB2
b2lkIGVuc3VyZUxhc3RFZGl0Q29tbWFuZEhhc0N1cnJlbnRTZWxlY3Rpb25JZk9wZW5Gb3JNb3Jl
VHlwaW5nKEZyYW1lKiwgY29uc3QgVmlzaWJsZVNlbGVjdGlvbiYpOworI2VuZGlmCiAKICAgICB2
b2lkIGluc2VydFRleHQoY29uc3QgU3RyaW5nICZ0ZXh0LCBib29sIHNlbGVjdEluc2VydGVkVGV4
dCk7CiAgICAgdm9pZCBpbnNlcnRUZXh0UnVuV2l0aG91dE5ld2xpbmVzKGNvbnN0IFN0cmluZyAm
dGV4dCwgYm9vbCBzZWxlY3RJbnNlcnRlZFRleHQpOwpAQCAtNzcsNiArODAsMTAgQEAgcHVibGlj
OgogICAgIHZvaWQgZGVsZXRlU2VsZWN0aW9uKGJvb2wgc21hcnREZWxldGUpOwogICAgIHZvaWQg
c2V0Q29tcG9zaXRpb25UeXBlKFRleHRDb21wb3NpdGlvblR5cGUgdHlwZSkgeyBtX2NvbXBvc2l0
aW9uVHlwZSA9IHR5cGU7IH0KIAorI2lmIFBMQVRGT1JNKElPUykKKyAgICB2b2lkIHNldEVuZGlu
Z1NlbGVjdGlvbk9uTGFzdEluc2VydENvbW1hbmQoY29uc3QgVmlzaWJsZVNlbGVjdGlvbiYgc2Vs
ZWN0aW9uKTsKKyNlbmRpZgorCiBwcml2YXRlOgogICAgIHN0YXRpYyBQYXNzUmVmUHRyPFR5cGlu
Z0NvbW1hbmQ+IGNyZWF0ZShEb2N1bWVudCYgZG9jdW1lbnQsIEVUeXBpbmdDb21tYW5kIGNvbW1h
bmQsIGNvbnN0IFN0cmluZyYgdGV4dCA9ICIiLCBPcHRpb25zIG9wdGlvbnMgPSAwLCBUZXh0R3Jh
bnVsYXJpdHkgZ3JhbnVsYXJpdHkgPSBDaGFyYWN0ZXJHcmFudWxhcml0eSkKICAgICB7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1Zpc2libGVQb3NpdGlvbi5oIGIvU291cmNl
L1dlYkNvcmUvZWRpdGluZy9WaXNpYmxlUG9zaXRpb24uaAppbmRleCAxZjU4ZjY4YzQ0ZmY3YzEy
OTc2NWYzMjQ3MGMyNGU0NTRhNjg2NTFmLi4wY2U3OGY0NDQwNGE5NjJjODhkNDkyZDk5ZDhiZDdl
YzBhOGU2Y2E2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1Zpc2libGVQb3Np
dGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVmlzaWJsZVBvc2l0aW9uLmgKQEAg
LTEyNyw2ICsxMjcsMjggQEAgaW5saW5lIGJvb2wgb3BlcmF0b3IhPShjb25zdCBWaXNpYmxlUG9z
aXRpb24mIGEsIGNvbnN0IFZpc2libGVQb3NpdGlvbiYgYikKIHsKICAgICByZXR1cm4gIShhID09
IGIpOwogfQorICAgIAorI2lmIFBMQVRGT1JNKElPUykKK2lubGluZSBib29sIG9wZXJhdG9yPChj
b25zdCBWaXNpYmxlUG9zaXRpb24mIGEsIGNvbnN0IFZpc2libGVQb3NpdGlvbiYgYikKK3sKKyAg
ICByZXR1cm4gYS5kZWVwRXF1aXZhbGVudCgpIDwgYi5kZWVwRXF1aXZhbGVudCgpOworfQorCitp
bmxpbmUgYm9vbCBvcGVyYXRvcj4oY29uc3QgVmlzaWJsZVBvc2l0aW9uJiBhLCBjb25zdCBWaXNp
YmxlUG9zaXRpb24mIGIpIAoreworICAgIHJldHVybiBhLmRlZXBFcXVpdmFsZW50KCkgPiBiLmRl
ZXBFcXVpdmFsZW50KCk7Cit9CisKK2lubGluZSBib29sIG9wZXJhdG9yPD0oY29uc3QgVmlzaWJs
ZVBvc2l0aW9uJiBhLCBjb25zdCBWaXNpYmxlUG9zaXRpb24mIGIpCit7CisgICAgcmV0dXJuIGEu
ZGVlcEVxdWl2YWxlbnQoKSA8PSBiLmRlZXBFcXVpdmFsZW50KCk7Cit9CisKK2lubGluZSBib29s
IG9wZXJhdG9yPj0oY29uc3QgVmlzaWJsZVBvc2l0aW9uJiBhLCBjb25zdCBWaXNpYmxlUG9zaXRp
b24mIGIpIAoreworICAgIHJldHVybiBhLmRlZXBFcXVpdmFsZW50KCkgPj0gYi5kZWVwRXF1aXZh
bGVudCgpOworfSAgICAKKyNlbmRpZgogCiBQYXNzUmVmUHRyPFJhbmdlPiBtYWtlUmFuZ2UoY29u
c3QgVmlzaWJsZVBvc2l0aW9uJiwgY29uc3QgVmlzaWJsZVBvc2l0aW9uJik7CiBib29sIHNldFN0
YXJ0KFJhbmdlKiwgY29uc3QgVmlzaWJsZVBvc2l0aW9uJik7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL1Zpc2libGVTZWxlY3Rpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvZWRp
dGluZy9WaXNpYmxlU2VsZWN0aW9uLmNwcAppbmRleCAyYTYxZDRlYmFjMWZiMGQxNTFhOTBiODcw
OTJmNmY1NTBkMjg5ZDQxLi43OWY2MTE5OWRiMGY1MTQ4ODVkODA5NjQzN2Q1YzZkZTYxMTZhYjRh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1Zpc2libGVTZWxlY3Rpb24uY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVmlzaWJsZVNlbGVjdGlvbi5jcHAKQEAgLTMy
MSw2ICszMjEsMTQgQEAgdm9pZCBWaXNpYmxlU2VsZWN0aW9uOjpzZXRTdGFydEFuZEVuZEZyb21C
YXNlQW5kRXh0ZW50UmVzcGVjdGluZ0dyYW51bGFyaXR5KFRleHQKICAgICAgICAgICAgIH0KICAg
ICAgICAgICAgICAgICAKICAgICAgICAgICAgIG1fZW5kID0gZW5kLmRlZXBFcXVpdmFsZW50KCk7
CisjaWYgUExBVEZPUk0oSU9TKQorICAgICAgICAgICAgLy8gRW5kIG11c3Qgbm90IGJlIGJlZm9y
ZSBzdGFydC4KKyAgICAgICAgICAgIGlmIChtX3N0YXJ0LmRlcHJlY2F0ZWROb2RlKCkgPT0gbV9l
bmQuZGVwcmVjYXRlZE5vZGUoKSAmJiBtX3N0YXJ0LmRlcHJlY2F0ZWRFZGl0aW5nT2Zmc2V0KCkg
PiBtX2VuZC5kZXByZWNhdGVkRWRpdGluZ09mZnNldCgpKSB7CisgICAgICAgICAgICAgICAgUG9z
aXRpb24gc3dhcChtX3N0YXJ0KTsKKyAgICAgICAgICAgICAgICBtX3N0YXJ0ID0gbV9lbmQ7ICAg
IAorICAgICAgICAgICAgICAgIG1fZW5kID0gc3dhcDsgICAgCisgICAgICAgICAgICB9CisjZW5k
aWYKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGNhc2UgU2VudGVuY2VH
cmFudWxhcml0eTogewpAQCAtMzg0LDYgKzM5MiwxMSBAQCB2b2lkIFZpc2libGVTZWxlY3Rpb246
OnNldFN0YXJ0QW5kRW5kRnJvbUJhc2VBbmRFeHRlbnRSZXNwZWN0aW5nR3JhbnVsYXJpdHkoVGV4
dAogICAgICAgICAgICAgbV9zdGFydCA9IHN0YXJ0T2ZTZW50ZW5jZShWaXNpYmxlUG9zaXRpb24o
bV9zdGFydCwgbV9hZmZpbml0eSkpLmRlZXBFcXVpdmFsZW50KCk7CiAgICAgICAgICAgICBtX2Vu
ZCA9IGVuZE9mU2VudGVuY2UoVmlzaWJsZVBvc2l0aW9uKG1fZW5kLCBtX2FmZmluaXR5KSkuZGVl
cEVxdWl2YWxlbnQoKTsKICAgICAgICAgICAgIGJyZWFrOworI2lmIFBMQVRGT1JNKElPUykKKyAg
ICAgICAgY2FzZSBEb2N1bWVudEdyYW51bGFyaXR5OgorICAgICAgICAgICAgQVNTRVJUX05PVF9S
RUFDSEVEKCk7CisgICAgICAgICAgICBicmVhazsKKyNlbmRpZgogICAgIH0KICAgICAKICAgICAv
LyBNYWtlIHN1cmUgd2UgZG8gbm90IGhhdmUgYSBkYW5nbGluZyBzdGFydCBvciBlbmQuCkBAIC01
MTksNiArNTMyLDEzIEBAIHZvaWQgVmlzaWJsZVNlbGVjdGlvbjo6YWRqdXN0U2VsZWN0aW9uVG9B
dm9pZENyb3NzaW5nRWRpdGluZ0JvdW5kYXJpZXMoKQogICAgIGlmIChtX2Jhc2UuaXNOdWxsKCkg
fHwgbV9zdGFydC5pc051bGwoKSB8fCBtX2VuZC5pc051bGwoKSkKICAgICAgICAgcmV0dXJuOwog
CisjaWYgUExBVEZPUk0oSU9TKQorICAgIC8vIEVhcmx5IHJldHVybiBpbiB0aGUgY2FyZXQgY2Fz
ZSAodGhlIHN0YXRlIGhhc24ndCBhY3R1YWxseSBiZWVuIHNldCB5ZXQsIHNvIHdlIGNhbid0IHVz
ZSBpc0NhcmV0KCkpIHRvIGF2b2lkIHRoZSAKKyAgICAvLyBleHBlbnNlIG9mIGNvbXB1dGluZyBo
aWdoZXN0RWRpdGFibGVSb290LgorICAgIGlmIChtX2Jhc2UgPT0gbV9zdGFydCAmJiBtX2Jhc2Ug
PT0gbV9lbmQpCisgICAgICAgIHJldHVybjsKKyNlbmRpZgorCiAgICAgTm9kZSogYmFzZVJvb3Qg
PSBoaWdoZXN0RWRpdGFibGVSb290KG1fYmFzZSk7CiAgICAgTm9kZSogc3RhcnRSb290ID0gaGln
aGVzdEVkaXRhYmxlUm9vdChtX3N0YXJ0KTsKICAgICBOb2RlKiBlbmRSb290ID0gaGlnaGVzdEVk
aXRhYmxlUm9vdChtX2VuZCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1Zp
c2libGVVbml0cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1Zpc2libGVVbml0cy5jcHAK
aW5kZXggYTQyYTlhMzY4MGRhYzQzZjA1ZGM5OTYzYWJiZGI4OTc2YTk2ZjVmNi4uODBlYmYzMTdj
ZjQzNGI1ZjIzNDllOTFhNzJjOTg1MmYzMGU5NjZhNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvZWRpdGluZy9WaXNpYmxlVW5pdHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
VmlzaWJsZVVuaXRzLmNwcApAQCAtNDk3LDcgKzQ5NywxMSBAQCBzdGF0aWMgVmlzaWJsZVBvc2l0
aW9uIHByZXZpb3VzQm91bmRhcnkoY29uc3QgVmlzaWJsZVBvc2l0aW9uJiBjLCBCb3VuZGFyeVNl
YXJjaAogICAgICAgICBlbHNlIHsKICAgICAgICAgICAgIC8vIFRyZWF0IGJ1bGxldHMgdXNlZCBp
biB0aGUgdGV4dCBzZWN1cml0eSBtb2RlIGFzIHJlZ3VsYXIgY2hhcmFjdGVycyB3aGVuIGxvb2tp
bmcgZm9yIGJvdW5kYXJpZXMKICAgICAgICAgICAgIFN0cmluZyBpdGVyYXRvclN0cmluZyhpdC5j
aGFyYWN0ZXJzKCksIGl0Lmxlbmd0aCgpKTsKKyNpZiBQTEFURk9STShJT1MpCisgICAgICAgICAg
ICBpdGVyYXRvclN0cmluZyA9IGl0ZXJhdG9yU3RyaW5nLmltcGwoKS0+ZmlsbCgneCcpOworI2Vs
c2UKICAgICAgICAgICAgIGl0ZXJhdG9yU3RyaW5nLmZpbGwoJ3gnKTsKKyNlbmRpZgogICAgICAg
ICAgICAgc3RyaW5nLmluc2VydCgwLCBpdGVyYXRvclN0cmluZy5jaGFyYWN0ZXJzKCksIGl0ZXJh
dG9yU3RyaW5nLmxlbmd0aCgpKTsKICAgICAgICAgfQogICAgICAgICBuZXh0ID0gc2VhcmNoRnVu
Y3Rpb24oc3RyaW5nLmRhdGEoKSwgc3RyaW5nLnNpemUoKSwgc3RyaW5nLnNpemUoKSAtIHN1ZmZp
eExlbmd0aCwgTWF5SGF2ZU1vcmVDb250ZXh0LCBuZWVkTW9yZUNvbnRleHQpOwpAQCAtNTcxLDcg
KzU3NSwxMSBAQCBzdGF0aWMgVmlzaWJsZVBvc2l0aW9uIG5leHRCb3VuZGFyeShjb25zdCBWaXNp
YmxlUG9zaXRpb24mIGMsIEJvdW5kYXJ5U2VhcmNoRnVuYwogICAgICAgICBlbHNlIHsKICAgICAg
ICAgICAgIC8vIFRyZWF0IGJ1bGxldHMgdXNlZCBpbiB0aGUgdGV4dCBzZWN1cml0eSBtb2RlIGFz
IHJlZ3VsYXIgY2hhcmFjdGVycyB3aGVuIGxvb2tpbmcgZm9yIGJvdW5kYXJpZXMKICAgICAgICAg
ICAgIFN0cmluZyBpdGVyYXRvclN0cmluZyhpdC5jaGFyYWN0ZXJzKCksIGl0Lmxlbmd0aCgpKTsK
KyNpZiBQTEFURk9STShJT1MpCisgICAgICAgICAgICBpdGVyYXRvclN0cmluZyA9IGl0ZXJhdG9y
U3RyaW5nLmltcGwoKS0+ZmlsbCgneCcpOworI2Vsc2UKICAgICAgICAgICAgIGl0ZXJhdG9yU3Ry
aW5nLmZpbGwoJ3gnKTsKKyNlbmRpZgogICAgICAgICAgICAgc3RyaW5nLmFwcGVuZChpdGVyYXRv
clN0cmluZy5jaGFyYWN0ZXJzKCksIGl0ZXJhdG9yU3RyaW5nLmxlbmd0aCgpKTsKICAgICAgICAg
fQogICAgICAgICBuZXh0ID0gc2VhcmNoRnVuY3Rpb24oc3RyaW5nLmRhdGEoKSwgc3RyaW5nLnNp
emUoKSwgcHJlZml4TGVuZ3RoLCBNYXlIYXZlTW9yZUNvbnRleHQsIG5lZWRNb3JlQ29udGV4dCk7
CkBAIC0xMzMyLDcgKzEzNDAsMTggQEAgVmlzaWJsZVBvc2l0aW9uIHN0YXJ0T2ZEb2N1bWVudChj
b25zdCBOb2RlKiBub2RlKQogICAgIGlmICghbm9kZSB8fCAhbm9kZS0+ZG9jdW1lbnQoKS5kb2N1
bWVudEVsZW1lbnQoKSkKICAgICAgICAgcmV0dXJuIFZpc2libGVQb3NpdGlvbigpOwogICAgIAor
I2lmIFBMQVRGT1JNKElPUykKKyAgICAvLyBUaGUgY2Fub25pY2FsaXphdGlvbiBvZiB0aGUgcG9z
aXRpb24gYXQgKGRvY3VtZW50RWxlbWVudCwgMCkgY2FuIHR1cm4gdGhlIHZpc2libGUKKyAgICAv
LyBwb3NpdGlvbiB0byBudWxsLCBldmVuIHdoZW4gdGhlcmUncyBhIHZhbGlkIGNhbmRpZGF0ZSB0
byBiZSBoYWQsIGJlY2F1c2UgdGhlIHJvb3QgSFRNTCBlbGVtZW50CisgICAgLy8gaXMgbm90IGNv
bnRlbnQgZWRpdGFibGUuICBTbyB3ZSBjb25zdHJ1Y3QgZGlyZWN0bHkgZnJvbSB0aGUgdmFsaWQg
Y2FuZGlkYXRlLgorICAgIC8vIEZJWE1FOiBNZXJnZSB0aGlzIHRvIE9wZW4gU291cmNlLiBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTY0MzcKKyAgICBQb3NpdGlvbiBm
aXJzdENhbmRpZGF0ZSA9IG5leHRDYW5kaWRhdGUoY3JlYXRlTGVnYWN5RWRpdGluZ1Bvc2l0aW9u
KG5vZGUtPmRvY3VtZW50KCkuZG9jdW1lbnRFbGVtZW50KCksIDApKTsKKyAgICBpZiAoZmlyc3RD
YW5kaWRhdGUuaXNOdWxsKCkpCisgICAgICAgIHJldHVybiBWaXNpYmxlUG9zaXRpb24oKTsKKyAg
ICByZXR1cm4gVmlzaWJsZVBvc2l0aW9uKGZpcnN0Q2FuZGlkYXRlKTsKKyNlbHNlCiAgICAgcmV0
dXJuIFZpc2libGVQb3NpdGlvbihmaXJzdFBvc2l0aW9uSW5Ob2RlKG5vZGUtPmRvY3VtZW50KCku
ZG9jdW1lbnRFbGVtZW50KCkpLCBET1dOU1RSRUFNKTsKKyNlbmRpZgogfQogCiBWaXNpYmxlUG9z
aXRpb24gc3RhcnRPZkRvY3VtZW50KGNvbnN0IFZpc2libGVQb3NpdGlvbiAmYykKQEAgLTEzNDUs
NyArMTM2NCwyMCBAQCBWaXNpYmxlUG9zaXRpb24gZW5kT2ZEb2N1bWVudChjb25zdCBOb2RlKiBu
b2RlKQogICAgIGlmICghbm9kZSB8fCAhbm9kZS0+ZG9jdW1lbnQoKS5kb2N1bWVudEVsZW1lbnQo
KSkKICAgICAgICAgcmV0dXJuIFZpc2libGVQb3NpdGlvbigpOwogICAgIAorI2lmIFBMQVRGT1JN
KElPUykKKyAgICAvLyAoQXMgYWJvdmUsIGluIHN0YXJ0T2ZEb2N1bWVudC4pICBUaGUgY2Fub25p
Y2FsaXphdGlvbiBjYW4gcmVqZWN0IHZhbGlkIHZpc2libGUgcG9zaXRpb25zCisgICAgLy8gd2hl
biBkZXNjZW5kaW5nIGZyb20gdGhlIHJvb3QgZWxlbWVudCwgc28gd2UgY29uc3RydWN0IHRoZSB2
aXNpYmxlIHBvc2l0aW9uIGRpcmVjdGx5IGZyb20gYQorICAgIC8vIHZhbGlkIGNhbmRpZGF0ZS4K
KyAgICAvLyBGSVhNRTogTWVyZ2UgdGhpcyB0byBPcGVuIFNvdXJjZS4gaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU2NDM3CisjZW5kaWYKICAgICBFbGVtZW50KiBkb2Mg
PSBub2RlLT5kb2N1bWVudCgpLmRvY3VtZW50RWxlbWVudCgpOworI2lmIFBMQVRGT1JNKElPUykK
KyAgICBQb3NpdGlvbiBsYXN0UG9zaXRpb24gPSBjcmVhdGVMZWdhY3lFZGl0aW5nUG9zaXRpb24o
bm9kZS0+ZG9jdW1lbnQoKS5kb2N1bWVudEVsZW1lbnQoKSwgZG9jLT5jaGlsZE5vZGVDb3VudCgp
KTsKKyAgICBQb3NpdGlvbiBsYXN0Q2FuZGlkYXRlID0gcHJldmlvdXNDYW5kaWRhdGUobGFzdFBv
c2l0aW9uKTsKKyAgICBpZiAobGFzdENhbmRpZGF0ZS5pc051bGwoKSkKKyAgICAgICAgcmV0dXJu
IFZpc2libGVQb3NpdGlvbigpOworICAgIHJldHVybiBWaXNpYmxlUG9zaXRpb24obGFzdENhbmRp
ZGF0ZSk7CisjZW5kaWYKICAgICByZXR1cm4gVmlzaWJsZVBvc2l0aW9uKGxhc3RQb3NpdGlvbklu
Tm9kZShkb2MpLCBET1dOU1RSRUFNKTsKIH0KIApAQCAtMTQxMyw0ICsxNDQ1LDQ0MyBAQCBWaXNp
YmxlUG9zaXRpb24gcmlnaHRCb3VuZGFyeU9mTGluZShjb25zdCBWaXNpYmxlUG9zaXRpb24mIGMs
IFRleHREaXJlY3Rpb24gZGlyZQogICAgIHJldHVybiBkaXJlY3Rpb24gPT0gTFRSID8gbG9naWNh
bEVuZE9mTGluZShjKSA6IGxvZ2ljYWxTdGFydE9mTGluZShjKTsKIH0KIAorI2lmIFBMQVRGT1JN
KElPUykKK3N0YXRpYyBib29sIGRpcmVjdGlvbklzRG93bnN0cmVhbShTZWxlY3Rpb25EaXJlY3Rp
b24gZGlyZWN0aW9uKQoreworICAgIGlmIChkaXJlY3Rpb24gPT0gRGlyZWN0aW9uQmFja3dhcmQp
CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBlbHNlIGlmIChkaXJlY3Rpb24gPT0gRGlyZWN0
aW9uRm9yd2FyZCkKKyAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICAvLyBGSVhNRTogdGhpcyBj
b2RlIGRvZXNuJ3QgdGFrZSBpbnRvIGFjY291bnQgdGhlIG9yaWdpbmFsIGRpcmVjdGlvbiBvZiB0
aGUgZWxlbWVudC4KKyAgICAvLyBJJ20gbm90IGZpeGluZyB0aGlzIG5vdyBiZWNhdXNlIEknbSBh
ZnJhaWQgdGhlcmUgaXMgc29tZSBjb2RlIGluIFVJS2l0IHJlbHlpbmcgb24KKyAgICAvLyB0aGlz
IHdyb25nIGJlaGF2aW9yLgorICAgIHJldHVybiBkaXJlY3Rpb24gPT0gRGlyZWN0aW9uUmlnaHQ7
Cit9CisKK2Jvb2wgYXRCb3VuZGFyeU9mR3JhbnVsYXJpdHkoY29uc3QgVmlzaWJsZVBvc2l0aW9u
JiB2cCwgVGV4dEdyYW51bGFyaXR5IGdyYW51bGFyaXR5LCBTZWxlY3Rpb25EaXJlY3Rpb24gZGly
ZWN0aW9uKQoreworICAgIGlmIChncmFudWxhcml0eSA9PSBDaGFyYWN0ZXJHcmFudWxhcml0eSkK
KyAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICBWaXNpYmxlUG9zaXRpb24gYm91bmRhcnk7CisK
KyAgICBib29sIHVzZURvd25zdHJlYW0gPSBkaXJlY3Rpb25Jc0Rvd25zdHJlYW0oZGlyZWN0aW9u
KTsKKworICAgIHN3aXRjaCAoZ3JhbnVsYXJpdHkpIHsKKyAgICBjYXNlIFdvcmRHcmFudWxhcml0
eToKKyAgICAgICAgLy8gdmlzaWJsZV91bml0cyBjbGFpbXMgZXJyb25lb3VzbHkgdGhhdCB0aGUg
c3RhcnQgYW5kIHRoZSBlbmQKKyAgICAgICAgLy8gb2YgYSBwYXJhZ3JhcGggYXJlIHRoZSBlbmQg
YW5kIHN0YXJ0IG9mIGEgd29yZCwgcmVzcGVjdGl2ZWx5LgorICAgICAgICBpZiAoKHVzZURvd25z
dHJlYW0gJiYgaXNTdGFydE9mUGFyYWdyYXBoKHZwKSkgfHwgKCF1c2VEb3duc3RyZWFtICYmIGlz
RW5kT2ZQYXJhZ3JhcGgodnApKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgICAg
ICAvLyBOb3RlIHRoYXQgIkxlZnQiIGFuZCAiUmlnaHQiIGluIHRoaXMgY29udGV4dCBhcHBhcmVu
dGx5IG1lYW4gInVwc3RyZWFtL3ByZXZpb3VzIiBhbmQgImRvd25zdHJlYW0vbmV4dCIuCisgICAg
ICAgIGJvdW5kYXJ5ID0gdXNlRG93bnN0cmVhbSA/IGVuZE9mV29yZCh2cCwgTGVmdFdvcmRJZk9u
Qm91bmRhcnkpIDogc3RhcnRPZldvcmQodnAsIFJpZ2h0V29yZElmT25Cb3VuZGFyeSk7CisgICAg
ICAgIGJyZWFrOworCisgICAgY2FzZSBTZW50ZW5jZUdyYW51bGFyaXR5OgorICAgICAgICBib3Vu
ZGFyeSA9IHVzZURvd25zdHJlYW0gPyBlbmRPZlNlbnRlbmNlKHZwKSA6IHN0YXJ0T2ZTZW50ZW5j
ZSh2cCk7CisgICAgICAgIGJyZWFrOworCisgICAgY2FzZSBMaW5lR3JhbnVsYXJpdHk6CisgICAg
ICAgIC8vIEFmZmluaXR5IGhhcyB0byBiZSBzZXQgdG8gZ2V0IHJpZ2h0IGJvdW5kYXJ5IG9mIHRo
ZSBsaW5lLgorICAgICAgICBib3VuZGFyeSA9IHZwOworICAgICAgICBib3VuZGFyeS5zZXRBZmZp
bml0eSh1c2VEb3duc3RyZWFtID8gVlBfVVBTVFJFQU1fSUZfUE9TU0lCTEUgOiBET1dOU1RSRUFN
KTsKKyAgICAgICAgYm91bmRhcnkgPSB1c2VEb3duc3RyZWFtID8gZW5kT2ZMaW5lKGJvdW5kYXJ5
KSA6IHN0YXJ0T2ZMaW5lKGJvdW5kYXJ5KTsKKyAgICAgICAgYnJlYWs7CisKKyAgICBjYXNlIFBh
cmFncmFwaEdyYW51bGFyaXR5OgorICAgICAgICBib3VuZGFyeSA9IHVzZURvd25zdHJlYW0gPyBl
bmRPZlBhcmFncmFwaCh2cCkgOiBzdGFydE9mUGFyYWdyYXBoKHZwKTsKKyAgICAgICAgYnJlYWs7
CisKKyAgICBjYXNlIERvY3VtZW50R3JhbnVsYXJpdHk6CisgICAgICAgIGJvdW5kYXJ5ID0gdXNl
RG93bnN0cmVhbSA/IGVuZE9mRG9jdW1lbnQodnApIDogc3RhcnRPZkRvY3VtZW50KHZwKTsKKyAg
ICAgICAgYnJlYWs7CisKKyAgICBkZWZhdWx0OgorICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQo
KTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorCisgICAgcmV0dXJuIHZwID09IGJvdW5kYXJ5Owor
fQorCitib29sIHdpdGhpblRleHRVbml0T2ZHcmFudWxhcml0eShjb25zdCBWaXNpYmxlUG9zaXRp
b24mIHZwLCBUZXh0R3JhbnVsYXJpdHkgZ3JhbnVsYXJpdHksIFNlbGVjdGlvbkRpcmVjdGlvbiBk
aXJlY3Rpb24pCit7CisgICAgaWYgKGdyYW51bGFyaXR5ID09IENoYXJhY3RlckdyYW51bGFyaXR5
IHx8IGdyYW51bGFyaXR5ID09IERvY3VtZW50R3JhbnVsYXJpdHkpCisgICAgICAgIHJldHVybiB0
cnVlOworCisgICAgYm9vbCB1c2VEb3duc3RyZWFtID0gZGlyZWN0aW9uSXNEb3duc3RyZWFtKGRp
cmVjdGlvbik7CisKKyAgICBWaXNpYmxlUG9zaXRpb24gcHJldkJvdW5kYXJ5OworICAgIFZpc2li
bGVQb3NpdGlvbiBuZXh0Qm91bmRhcnk7CisgICAgCisgICAgc3dpdGNoIChncmFudWxhcml0eSkg
eworICAgIGNhc2UgV29yZEdyYW51bGFyaXR5OgorICAgICAgICAvLyBOb3RlIHRoYXQgIkxlZnQi
IGFuZCAiUmlnaHQiIGluIHRoaXMgY29udGV4dCBhcHBhcmVudGx5IG1lYW4gInVwc3RyZWFtL3By
ZXZpb3VzIiBhbmQgImRvd25zdHJlYW0vbmV4dCIuCisgICAgICAgIHByZXZCb3VuZGFyeSA9IHN0
YXJ0T2ZXb3JkKHZwLCAodXNlRG93bnN0cmVhbSA/IFJpZ2h0V29yZElmT25Cb3VuZGFyeSA6IExl
ZnRXb3JkSWZPbkJvdW5kYXJ5KSk7CisgICAgICAgIG5leHRCb3VuZGFyeSA9IGVuZE9mV29yZCh2
cCwgKHVzZURvd25zdHJlYW0gPyBSaWdodFdvcmRJZk9uQm91bmRhcnkgOiBMZWZ0V29yZElmT25C
b3VuZGFyeSkpOworICAgIAorICAgICAgICAvLyBXb3JrYXJvdW5kIGZvciA8cmRhcjovL3Byb2Js
ZW0vNzI1OTYxMT4gV29yZCBib3VuZGFyeSBjb2RlIG9uIGlQaG9uZSBnaXZlcyBkaWZmZXJlbnQg
cmVzdWx0cyB0aGFuIGRlc2t0b3AKKyAgICAgICAgaWYgKGVuZE9mV29yZChwcmV2Qm91bmRhcnks
IFJpZ2h0V29yZElmT25Cb3VuZGFyeSkgIT0gbmV4dEJvdW5kYXJ5KQorICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOworCisgICAgICAgIGJyZWFrOworCisgICAgY2FzZSBTZW50ZW5jZUdyYW51bGFy
aXR5OgorICAgICAgICBwcmV2Qm91bmRhcnkgPSBzdGFydE9mU2VudGVuY2UodnApOworICAgICAg
ICBuZXh0Qm91bmRhcnkgPSBlbmRPZlNlbnRlbmNlKHZwKTsKKyAgICAgICAgYnJlYWs7CisKKyAg
ICBjYXNlIExpbmVHcmFudWxhcml0eToKKyAgICAgICAgcHJldkJvdW5kYXJ5ID0gc3RhcnRPZkxp
bmUodnApOworICAgICAgICBuZXh0Qm91bmRhcnkgPSBlbmRPZkxpbmUodnApOworCisgICAgICAg
IGlmIChwcmV2Qm91bmRhcnkgPT0gbmV4dEJvdW5kYXJ5KSB7CisgICAgICAgICAgICBuZXh0Qm91
bmRhcnkgPSBuZXh0TGluZVBvc2l0aW9uKG5leHRCb3VuZGFyeSwgMCk7CisgICAgICAgICAgICBu
ZXh0Qm91bmRhcnkuc2V0QWZmaW5pdHkoVVBTVFJFQU0pOworICAgICAgICAgICAgaWYgKCFpblNh
bWVMaW5lKHByZXZCb3VuZGFyeSwgbmV4dEJvdW5kYXJ5KSkKKyAgICAgICAgICAgICAgICBuZXh0
Qm91bmRhcnkgPSB2cC5uZXh0KCk7CisgICAgICAgIH0KKyAgICAgICAgYnJlYWs7CisKKyAgICBj
YXNlIFBhcmFncmFwaEdyYW51bGFyaXR5OgorICAgICAgICBwcmV2Qm91bmRhcnkgPSBzdGFydE9m
UGFyYWdyYXBoKHZwKTsKKyAgICAgICAgbmV4dEJvdW5kYXJ5ID0gZW5kT2ZQYXJhZ3JhcGgodnAp
OworICAgICAgICBicmVhazsKKworICAgIGRlZmF1bHQ6CisgICAgICAgIEFTU0VSVF9OT1RfUkVB
Q0hFRCgpOworICAgICAgICBicmVhazsKKyAgICB9CisKKyAgICBpZiAocHJldkJvdW5kYXJ5ID09
IG5leHRCb3VuZGFyeSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgaWYgKHZwID09IHBy
ZXZCb3VuZGFyeSkKKyAgICAgICAgcmV0dXJuIHVzZURvd25zdHJlYW07CisKKyAgICBpZiAodnAg
PT0gbmV4dEJvdW5kYXJ5KQorICAgICAgICByZXR1cm4gIXVzZURvd25zdHJlYW07CisKKyAgICBy
ZXR1cm4gKHByZXZCb3VuZGFyeSA8IHZwICYmIHZwIDwgbmV4dEJvdW5kYXJ5KTsKK30KKworc3Rh
dGljIFZpc2libGVQb3NpdGlvbiBuZXh0Q2hhcmFjdGVyQm91bmRhcnlJbkRpcmVjdGlvbihjb25z
dCBWaXNpYmxlUG9zaXRpb24mIHZwLCBTZWxlY3Rpb25EaXJlY3Rpb24gZGlyZWN0aW9uKQorewor
ICAgIHJldHVybiBkaXJlY3Rpb25Jc0Rvd25zdHJlYW0oZGlyZWN0aW9uKSA/IHZwLm5leHQoKSA6
IHZwLnByZXZpb3VzKCk7Cit9CisKK3N0YXRpYyBWaXNpYmxlUG9zaXRpb24gbmV4dFdvcmRCb3Vu
ZGFyeUluRGlyZWN0aW9uKGNvbnN0IFZpc2libGVQb3NpdGlvbiYgdnAsIFNlbGVjdGlvbkRpcmVj
dGlvbiBkaXJlY3Rpb24pCit7CisgICAgYm9vbCB1c2VEb3duc3RyZWFtID0gZGlyZWN0aW9uSXNE
b3duc3RyZWFtKGRpcmVjdGlvbik7CisgICAgYm9vbCB3aXRoaW5Vbml0T2ZHcmFudWxhcml0eSA9
IHdpdGhpblRleHRVbml0T2ZHcmFudWxhcml0eSh2cCwgV29yZEdyYW51bGFyaXR5LCBkaXJlY3Rp
b24pOworICAgIFZpc2libGVQb3NpdGlvbiByZXN1bHQ7CisgICAgCisgICAgaWYgKHVzZURvd25z
dHJlYW0pIHsKKyAgICAgICAgaWYgKHdpdGhpblVuaXRPZkdyYW51bGFyaXR5KQorICAgICAgICAg
ICAgcmVzdWx0ID0gZW5kT2ZXb3JkKHZwLCBSaWdodFdvcmRJZk9uQm91bmRhcnkpOworICAgICAg
ICBlbHNlIHsKKyAgICAgICAgICAgIFZpc2libGVQb3NpdGlvbiBzdGFydCA9IHN0YXJ0T2ZXb3Jk
KHZwLCBSaWdodFdvcmRJZk9uQm91bmRhcnkpOworICAgICAgICAgICAgaWYgKHN0YXJ0ID4gdnAg
JiYgc3RhcnQgIT0gZW5kT2ZXb3JkKHN0YXJ0KSkKKyAgICAgICAgICAgICAgICByZXN1bHQgPSBz
dGFydDsKKyAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgIC8vIERvIHNhbWUgdGhp
bmcgYXMgYmFja3dhcmRzIHRyYXZlbGluZyBiZWxvdy4KKyAgICAgICAgICAgICAgICBzdGFydCA9
IHZwOworICAgICAgICAgICAgICAgIHdoaWxlICh0cnVlKSB7CisgICAgICAgICAgICAgICAgICAg
IHJlc3VsdCA9IHN0YXJ0T2ZXb3JkKG5leHRXb3JkUG9zaXRpb24oc3RhcnQpLCBSaWdodFdvcmRJ
Zk9uQm91bmRhcnkpOworCisgICAgICAgICAgICAgICAgICAgIGlmIChyZXN1bHQgPT0gc3RhcnQp
CisgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKworICAgICAgICAgICAgICAgICAgICAv
LyBXZSBmYWlsZWQgdG8gZmluZCBhIHdvcmQgYm91bmRhcnkuCisgICAgICAgICAgICAgICAgICAg
IGlmIChyZXN1bHQuaXNOdWxsKCkgfHwgcmVzdWx0IDwgc3RhcnQpCisgICAgICAgICAgICAgICAg
ICAgICAgICByZXR1cm4gVmlzaWJsZVBvc2l0aW9uKCk7CisKKyAgICAgICAgICAgICAgICAgICAg
Ly8gV2UgY29uc2lkZXIgc3VjY2Vzc3MgYWxzbyB0aGUgY2FzZSB3aGVyZSBzdGFydCBpcyBiZWZv
cmUgZWxlbWVudCBhbmQgcmVzdWx0IGlzIGFmdGVyLgorICAgICAgICAgICAgICAgICAgICAvLyBU
aGlzIGNvdmVycyBtb3ZpbmcgcGFzdCBpbWFnZXMgbGlrZSB3b3Jkcy4KKyAgICAgICAgICAgICAg
ICAgICAgaWYgKHJlc3VsdCAhPSBlbmRPZldvcmQocmVzdWx0KQorICAgICAgICAgICAgICAgICAg
ICAgICAgfHwgKHJlc3VsdC5kZWVwRXF1aXZhbGVudCgpLmFuY2hvck5vZGUoKSA9PSBzdGFydC5k
ZWVwRXF1aXZhbGVudCgpLmFuY2hvck5vZGUoKQorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICYmIHJlc3VsdC5kZWVwRXF1aXZhbGVudCgpLmFuY2hvclR5cGUoKSA9PSBQb3NpdGlvbjo6UG9z
aXRpb25Jc0FmdGVyQW5jaG9yCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgJiYgc3RhcnQu
ZGVlcEVxdWl2YWxlbnQoKS5hbmNob3JUeXBlKCkgPT0gUG9zaXRpb246OlBvc2l0aW9uSXNCZWZv
cmVBbmNob3IpKQorICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICAg
ICAgICAgICAgc3RhcnQgPSByZXN1bHQ7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAg
fQorICAgICAgICB9CisgICAgfSBlbHNlIHsKKyAgICAgICAgaWYgKHdpdGhpblVuaXRPZkdyYW51
bGFyaXR5KQorICAgICAgICAgICAgcmVzdWx0ID0gc3RhcnRPZldvcmQodnAsIExlZnRXb3JkSWZP
bkJvdW5kYXJ5KTsKKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAvLyBUaGlzIGlzIGNvbXBs
aWNhdGVkIGJlY2F1c2U6CisgICAgICAgICAgICAvLyAgIFdoZW4gZ2l2ZW4gIkJsYWggYmxhaC58
IiwgZW5kT2ZXb3JkIGlzICJCbGFoIGJsYWh8LiIsIGFuZCBwcmV2aW91c1dvcmRQb3NpdGlvbiBp
cyAiQmxhaHwgYmxhaC4iCisgICAgICAgICAgICAvLyAgIFdoZW4gZ2l2ZW4gIkJsYWggYmxhaC4g
fCIsIGVuZE9mV29yZCBpcyAiQmxhaCBibGFoLnwgIiwgYW5kIHByZXZpb3VzV29yZFBvc2l0aW9u
IGlzICJCbGFoIHxibGFoLiAiLgorICAgICAgICAgICAgVmlzaWJsZVBvc2l0aW9uIGVuZCA9IGVu
ZE9mV29yZCh2cCwgTGVmdFdvcmRJZk9uQm91bmRhcnkpOworICAgICAgICAgICAgaWYgKGVuZCA8
IHZwICYmIGVuZCAhPSBzdGFydE9mV29yZChlbmQpKQorICAgICAgICAgICAgICAgIHJlc3VsdCA9
IGVuZDsKKyAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgIGVuZCA9IHZwOworICAg
ICAgICAgICAgICAgIHdoaWxlICh0cnVlKSB7CisgICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9
IGVuZE9mV29yZChwcmV2aW91c1dvcmRQb3NpdGlvbihlbmQpLCBSaWdodFdvcmRJZk9uQm91bmRh
cnkpOworCisgICAgICAgICAgICAgICAgICAgIGlmIChyZXN1bHQgPT0gZW5kKQorICAgICAgICAg
ICAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICAgICAgICAgICAgaWYgKHJlc3VsdC5p
c051bGwoKSB8fCByZXN1bHQgPiBlbmQpCisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4g
VmlzaWJsZVBvc2l0aW9uKCk7CisKKyAgICAgICAgICAgICAgICAgICAgaWYgKHJlc3VsdCAhPSBz
dGFydE9mV29yZChyZXN1bHQpKQorICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAg
ICAgICAgICAgICAgICAgICAgZW5kID0gcmVzdWx0OworICAgICAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKyAgICAKKyAgICBpZiAocmVzdWx0ID09IHZwKQor
ICAgICAgICByZXR1cm4gVmlzaWJsZVBvc2l0aW9uKCk7CisgICAgCisgICAgcmV0dXJuIHJlc3Vs
dDsKK30KKworc3RhdGljIFZpc2libGVQb3NpdGlvbiBuZXh0U2VudGVuY2VCb3VuZGFyeUluRGly
ZWN0aW9uKGNvbnN0IFZpc2libGVQb3NpdGlvbiYgdnAsIFNlbGVjdGlvbkRpcmVjdGlvbiBkaXJl
Y3Rpb24pCit7CisgICAgYm9vbCB1c2VEb3duc3RyZWFtID0gZGlyZWN0aW9uSXNEb3duc3RyZWFt
KGRpcmVjdGlvbik7CisgICAgYm9vbCB3aXRoaW5Vbml0T2ZHcmFudWxhcml0eSA9IHdpdGhpblRl
eHRVbml0T2ZHcmFudWxhcml0eSh2cCwgU2VudGVuY2VHcmFudWxhcml0eSwgZGlyZWN0aW9uKTsK
KyAgICBWaXNpYmxlUG9zaXRpb24gcmVzdWx0OworCisgICAgaWYgKHdpdGhpblVuaXRPZkdyYW51
bGFyaXR5KQorICAgICAgICByZXN1bHQgPSB1c2VEb3duc3RyZWFtID8gZW5kT2ZTZW50ZW5jZSh2
cCkgOiBzdGFydE9mU2VudGVuY2UodnApOworICAgIGVsc2UgeworICAgICAgICByZXN1bHQgPSB1
c2VEb3duc3RyZWFtID8gbmV4dFNlbnRlbmNlUG9zaXRpb24odnApIDogcHJldmlvdXNTZW50ZW5j
ZVBvc2l0aW9uKHZwKTsKKyAgICAgICAgaWYgKHJlc3VsdC5pc051bGwoKSB8fCByZXN1bHQgPT0g
dnApCisgICAgICAgICAgICByZXR1cm4gVmlzaWJsZVBvc2l0aW9uKCk7CisKKyAgICAgICAgcmVz
dWx0ID0gdXNlRG93bnN0cmVhbSA/IHN0YXJ0T2ZTZW50ZW5jZSh2cCkgOiBlbmRPZlNlbnRlbmNl
KHZwKTsKKyAgICB9CisKKyAgICBpZiAocmVzdWx0ID09IHZwKQorICAgICAgICByZXR1cm4gVmlz
aWJsZVBvc2l0aW9uKCk7CisKKyAgICBBU1NFUlQodXNlRG93bnN0cmVhbSA/IChyZXN1bHQgPiB2
cCkgOiAocmVzdWx0IDwgdnApKTsKKworICAgIHJldHVybiByZXN1bHQ7Cit9CisKK3N0YXRpYyBW
aXNpYmxlUG9zaXRpb24gbmV4dExpbmVCb3VuZGFyeUluRGlyZWN0aW9uKGNvbnN0IFZpc2libGVQ
b3NpdGlvbiYgdnAsIFNlbGVjdGlvbkRpcmVjdGlvbiBkaXJlY3Rpb24pCit7CisgICAgYm9vbCB1
c2VEb3duc3RyZWFtID0gZGlyZWN0aW9uSXNEb3duc3RyZWFtKGRpcmVjdGlvbik7CisgICAgVmlz
aWJsZVBvc2l0aW9uIHJlc3VsdCA9IHZwOworCisgICAgaWYgKHVzZURvd25zdHJlYW0pIHsKKyAg
ICAgICAgcmVzdWx0LnNldEFmZmluaXR5KERPV05TVFJFQU0pOworICAgICAgICByZXN1bHQgPSBp
c0VuZE9mTGluZShyZXN1bHQpID8gc3RhcnRPZkxpbmUobmV4dExpbmVQb3NpdGlvbihyZXN1bHQs
IHJlc3VsdC5saW5lRGlyZWN0aW9uUG9pbnRGb3JCbG9ja0RpcmVjdGlvbk5hdmlnYXRpb24oKSkp
IDogZW5kT2ZMaW5lKHJlc3VsdCk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgcmVzdWx0LnNldEFm
ZmluaXR5KFZQX1VQU1RSRUFNX0lGX1BPU1NJQkxFKTsKKyAgICAgICAgcmVzdWx0ID0gaXNTdGFy
dE9mTGluZShyZXN1bHQpID8gZW5kT2ZMaW5lKHByZXZpb3VzTGluZVBvc2l0aW9uKHJlc3VsdCwg
cmVzdWx0LmxpbmVEaXJlY3Rpb25Qb2ludEZvckJsb2NrRGlyZWN0aW9uTmF2aWdhdGlvbigpKSkg
OiBzdGFydE9mTGluZShyZXN1bHQpOworICAgIH0KKworICAgIHJldHVybiByZXN1bHQ7Cit9CisK
K3N0YXRpYyBWaXNpYmxlUG9zaXRpb24gbmV4dFBhcmFncmFwaEJvdW5kYXJ5SW5EaXJlY3Rpb24o
Y29uc3QgVmlzaWJsZVBvc2l0aW9uJiB2cCwgU2VsZWN0aW9uRGlyZWN0aW9uIGRpcmVjdGlvbikK
K3sKKyAgICBib29sIHVzZURvd25zdHJlYW0gPSBkaXJlY3Rpb25Jc0Rvd25zdHJlYW0oZGlyZWN0
aW9uKTsKKyAgICBib29sIHdpdGhpblVuaXRPZkdyYW51bGFyaXR5ID0gd2l0aGluVGV4dFVuaXRP
ZkdyYW51bGFyaXR5KHZwLCBQYXJhZ3JhcGhHcmFudWxhcml0eSwgZGlyZWN0aW9uKTsKKyAgICBW
aXNpYmxlUG9zaXRpb24gcmVzdWx0OworCisgICAgaWYgKCF3aXRoaW5Vbml0T2ZHcmFudWxhcml0
eSkKKyAgICAgICAgcmVzdWx0ID0gIHVzZURvd25zdHJlYW0gPyBzdGFydE9mUGFyYWdyYXBoKG5l
eHRQYXJhZ3JhcGhQb3NpdGlvbih2cCwgdnAubGluZURpcmVjdGlvblBvaW50Rm9yQmxvY2tEaXJl
Y3Rpb25OYXZpZ2F0aW9uKCkpKSA6IGVuZE9mUGFyYWdyYXBoKHByZXZpb3VzUGFyYWdyYXBoUG9z
aXRpb24odnAsIHZwLmxpbmVEaXJlY3Rpb25Qb2ludEZvckJsb2NrRGlyZWN0aW9uTmF2aWdhdGlv
bigpKSk7CisgICAgZWxzZQorICAgICAgICByZXN1bHQgPSB1c2VEb3duc3RyZWFtID8gZW5kT2ZQ
YXJhZ3JhcGgodnApIDogc3RhcnRPZlBhcmFncmFwaCh2cCk7CisKKyAgICByZXR1cm4gcmVzdWx0
OworfQorCitzdGF0aWMgVmlzaWJsZVBvc2l0aW9uIG5leHREb2N1bWVudEJvdW5kYXJ5SW5EaXJl
Y3Rpb24oY29uc3QgVmlzaWJsZVBvc2l0aW9uJiB2cCwgU2VsZWN0aW9uRGlyZWN0aW9uIGRpcmVj
dGlvbikKK3sKKyAgICByZXR1cm4gZGlyZWN0aW9uSXNEb3duc3RyZWFtKGRpcmVjdGlvbikgPyBl
bmRPZkRvY3VtZW50KHZwKSA6IHN0YXJ0T2ZEb2N1bWVudCh2cCk7Cit9CisKK1Zpc2libGVQb3Np
dGlvbiBwb3NpdGlvbk9mTmV4dEJvdW5kYXJ5T2ZHcmFudWxhcml0eShjb25zdCBWaXNpYmxlUG9z
aXRpb24mIHZwLCBUZXh0R3JhbnVsYXJpdHkgZ3JhbnVsYXJpdHksIFNlbGVjdGlvbkRpcmVjdGlv
biBkaXJlY3Rpb24pCit7CisgICAgc3dpdGNoIChncmFudWxhcml0eSkgeworICAgIGNhc2UgQ2hh
cmFjdGVyR3JhbnVsYXJpdHk6CisgICAgICAgIHJldHVybiBuZXh0Q2hhcmFjdGVyQm91bmRhcnlJ
bkRpcmVjdGlvbih2cCwgZGlyZWN0aW9uKTsKKyAgICBjYXNlIFdvcmRHcmFudWxhcml0eToKKyAg
ICAgICAgcmV0dXJuIG5leHRXb3JkQm91bmRhcnlJbkRpcmVjdGlvbih2cCwgZGlyZWN0aW9uKTsK
KyAgICBjYXNlIFNlbnRlbmNlR3JhbnVsYXJpdHk6CisgICAgICAgIHJldHVybiBuZXh0U2VudGVu
Y2VCb3VuZGFyeUluRGlyZWN0aW9uKHZwLCBkaXJlY3Rpb24pOworICAgIGNhc2UgTGluZUdyYW51
bGFyaXR5OgorICAgICAgICByZXR1cm4gbmV4dExpbmVCb3VuZGFyeUluRGlyZWN0aW9uKHZwLCBk
aXJlY3Rpb24pOworICAgIGNhc2UgUGFyYWdyYXBoR3JhbnVsYXJpdHk6CisgICAgICAgIHJldHVy
biBuZXh0UGFyYWdyYXBoQm91bmRhcnlJbkRpcmVjdGlvbih2cCwgZGlyZWN0aW9uKTsKKyAgICBj
YXNlIERvY3VtZW50R3JhbnVsYXJpdHk6CisgICAgICAgIHJldHVybiBuZXh0RG9jdW1lbnRCb3Vu
ZGFyeUluRGlyZWN0aW9uKHZwLCBkaXJlY3Rpb24pOworICAgIGRlZmF1bHQ6CisgICAgICAgIEFT
U0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICByZXR1cm4gVmlzaWJsZVBvc2l0aW9uKCk7Cisg
ICAgfQorfQorCitQYXNzUmVmUHRyPFJhbmdlPiBlbmNsb3NpbmdUZXh0VW5pdE9mR3JhbnVsYXJp
dHkoY29uc3QgVmlzaWJsZVBvc2l0aW9uJiB2cCwgVGV4dEdyYW51bGFyaXR5IGdyYW51bGFyaXR5
LCBTZWxlY3Rpb25EaXJlY3Rpb24gZGlyZWN0aW9uKQoreworICAgIC8vIFRoaXMgaXMgcGFydGlj
dWxhcmx5IGluZWZmaWNpZW50LiAgV2UgY291bGQgZWFzaWx5IG9idGFpbiB0aGUgYW5zd2VyIHdp
dGggdGhlIGJvdW5kYXJpZXMgY29tcHV0ZWQgYmVsb3cuCisgICAgaWYgKCF3aXRoaW5UZXh0VW5p
dE9mR3JhbnVsYXJpdHkodnAsIGdyYW51bGFyaXR5LCBkaXJlY3Rpb24pKQorICAgICAgICByZXR1
cm4gMDsKKworICAgIFZpc2libGVQb3NpdGlvbiBwcmV2Qm91bmRhcnk7CisgICAgVmlzaWJsZVBv
c2l0aW9uIG5leHRCb3VuZGFyeTsKKyAgICBib29sIHVzZURvd25zdHJlYW0gPSBkaXJlY3Rpb25J
c0Rvd25zdHJlYW0oZGlyZWN0aW9uKTsKKworICAgIHN3aXRjaCAoZ3JhbnVsYXJpdHkpIHsKKyAg
ICAgICAgY2FzZSBDaGFyYWN0ZXJHcmFudWxhcml0eToKKyAgICAgICAgICAgIHByZXZCb3VuZGFy
eSA9IHZwOworICAgICAgICAgICAgbmV4dEJvdW5kYXJ5ID0gcHJldkJvdW5kYXJ5Lm5leHQoKTsK
KyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGNhc2UgV29yZEdyYW51bGFyaXR5OgorICAg
ICAgICAgICAgLy8gTkI6ICJMZWZ0IiBhbmQgIlJpZ2h0IiBpbiB0aGlzIGNvbnRleHQgYXBwYXJl
bnRseSBtZWFuICJ1cHN0cmVhbS9wcmV2aW91cyIgYW5kICJkb3duc3RyZWFtL25leHQiLgorICAg
ICAgICAgICAgaWYgKHVzZURvd25zdHJlYW0pIHsKKyAgICAgICAgICAgICAgICBwcmV2Qm91bmRh
cnkgPSBzdGFydE9mV29yZCh2cCwgUmlnaHRXb3JkSWZPbkJvdW5kYXJ5KTsKKyAgICAgICAgICAg
ICAgICBuZXh0Qm91bmRhcnkgPSBlbmRPZldvcmQodnAsIFJpZ2h0V29yZElmT25Cb3VuZGFyeSk7
CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIHByZXZCb3VuZGFyeSA9IHN0
YXJ0T2ZXb3JkKHZwLCBMZWZ0V29yZElmT25Cb3VuZGFyeSk7CisgICAgICAgICAgICAgICAgbmV4
dEJvdW5kYXJ5ID0gZW5kT2ZXb3JkKHZwLCBMZWZ0V29yZElmT25Cb3VuZGFyeSk7CisgICAgICAg
ICAgICB9CisgICAgICAgICAgICBicmVhazsKKworICAgICAgICBjYXNlIFNlbnRlbmNlR3JhbnVs
YXJpdHk6CisgICAgICAgICAgICBwcmV2Qm91bmRhcnkgPSBzdGFydE9mU2VudGVuY2UodnApOwor
ICAgICAgICAgICAgbmV4dEJvdW5kYXJ5ID0gZW5kT2ZTZW50ZW5jZSh2cCk7CisgICAgICAgICAg
ICBicmVhazsKKworICAgICAgICBjYXNlIExpbmVHcmFudWxhcml0eToKKyAgICAgICAgICAgIHBy
ZXZCb3VuZGFyeSA9IHN0YXJ0T2ZMaW5lKHZwKTsKKyAgICAgICAgICAgIG5leHRCb3VuZGFyeSA9
IGVuZE9mTGluZSh2cCk7CisKKyAgICAgICAgICAgIGlmIChwcmV2Qm91bmRhcnkgPT0gbmV4dEJv
dW5kYXJ5KSB7CisgICAgICAgICAgICAgICAgbmV4dEJvdW5kYXJ5ID0gbmV4dExpbmVQb3NpdGlv
bihuZXh0Qm91bmRhcnksIDApOworICAgICAgICAgICAgICAgIG5leHRCb3VuZGFyeS5zZXRBZmZp
bml0eShVUFNUUkVBTSk7CisgICAgICAgICAgICAgICAgaWYgKCFpblNhbWVMaW5lKHByZXZCb3Vu
ZGFyeSwgbmV4dEJvdW5kYXJ5KSkKKyAgICAgICAgICAgICAgICAgICAgbmV4dEJvdW5kYXJ5ID0g
dnAubmV4dCgpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAg
Y2FzZSBQYXJhZ3JhcGhHcmFudWxhcml0eToKKyAgICAgICAgICAgIHByZXZCb3VuZGFyeSA9IHN0
YXJ0T2ZQYXJhZ3JhcGgodnApOworICAgICAgICAgICAgbmV4dEJvdW5kYXJ5ID0gZW5kT2ZQYXJh
Z3JhcGgodnApOworICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSBEb2N1bWVudEdy
YW51bGFyaXR5OgorICAgICAgICAgICAgcHJldkJvdW5kYXJ5ID0gc3RhcnRPZkRvY3VtZW50KHZw
KTsKKyAgICAgICAgICAgIG5leHRCb3VuZGFyeSA9IGVuZE9mRG9jdW1lbnQodnApOworICAgICAg
ICAgICAgYnJlYWs7CisKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOworICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgfQorCisgICAgaWYgKHByZXZC
b3VuZGFyeS5pc051bGwoKSB8fCBuZXh0Qm91bmRhcnkuaXNOdWxsKCkpCisgICAgICAgIHJldHVy
biAwOworCisgICAgaWYgKHZwIDwgcHJldkJvdW5kYXJ5IHx8IHZwID4gbmV4dEJvdW5kYXJ5KQor
ICAgICAgICByZXR1cm4gMDsKKworICAgIFJlZlB0cjxSYW5nZT4gcmFuZ2UgPSBSYW5nZTo6Y3Jl
YXRlKHByZXZCb3VuZGFyeS5kZWVwRXF1aXZhbGVudCgpLmRlcHJlY2F0ZWROb2RlKCktPmRvY3Vt
ZW50KCksIHByZXZCb3VuZGFyeSwgbmV4dEJvdW5kYXJ5KTsKKworICAgIHJldHVybiByYW5nZTsK
K30KKworaW50IGRpc3RhbmNlQmV0d2VlblBvc2l0aW9ucyhjb25zdCBWaXNpYmxlUG9zaXRpb24m
IHZwLCBjb25zdCBWaXNpYmxlUG9zaXRpb24mIG90aGVyKQoreworICAgIGlmICh2cC5pc051bGwo
KSB8fCBvdGhlci5pc051bGwoKSkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICBib29sIHRoaXNJ
c1N0YXJ0ID0gKHZwIDwgb3RoZXIpOworCisgICAgLy8gU3RhcnQgbXVzdCBjb21lIGZpcnN0IGlu
IHRoZSBSYW5nZSBjb25zdHJ1Y3Rvci4KKyAgICBSZWZQdHI8UmFuZ2U+IHJhbmdlID0gUmFuZ2U6
OmNyZWF0ZSh2cC5kZWVwRXF1aXZhbGVudCgpLmRlcHJlY2F0ZWROb2RlKCktPmRvY3VtZW50KCks
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHRoaXNJc1N0YXJ0ID8g
dnAgOiBvdGhlciksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHRo
aXNJc1N0YXJ0ID8gb3RoZXIgOiB2cCkpOworICAgIGludCBkaXN0YW5jZSA9IFRleHRJdGVyYXRv
cjo6cmFuZ2VMZW5ndGgocmFuZ2UuZ2V0KCkpOworCisgICAgcmV0dXJuICh0aGlzSXNTdGFydCA/
IC1kaXN0YW5jZSA6IGRpc3RhbmNlKTsKK30KKworUGFzc1JlZlB0cjxSYW5nZT4gd29yZFJhbmdl
RnJvbVBvc2l0aW9uKGNvbnN0IFZpc2libGVQb3NpdGlvbiYgcG9zaXRpb24pCit7CisgICAgQVNT
RVJUKHBvc2l0aW9uLmlzTm90TnVsbCgpKTsKKworICAgIFJlZlB0cjxSYW5nZT4gcmFuZ2UgPSBl
bmNsb3NpbmdUZXh0VW5pdE9mR3JhbnVsYXJpdHkocG9zaXRpb24sIFdvcmRHcmFudWxhcml0eSwg
RGlyZWN0aW9uQmFja3dhcmQpOworCisgICAgaWYgKCFyYW5nZSkgeworICAgICAgICAvLyBXZSBj
b3VsZCBiZSBhdCB0aGUgc3RhcnQgb2YgYSB3b3JkLCB0cnkgZm9yd2FyZC4KKyAgICAgICAgcmFu
Z2UgPSBlbmNsb3NpbmdUZXh0VW5pdE9mR3JhbnVsYXJpdHkocG9zaXRpb24sIFdvcmRHcmFudWxh
cml0eSwgRGlyZWN0aW9uRm9yd2FyZCk7CisgICAgfQorICAgIGlmIChyYW5nZSkKKyAgICAgICAg
cmV0dXJuIHJhbmdlOworCisgICAgVmlzaWJsZVBvc2l0aW9uIGN1cnJlbnRQb3NpdGlvbiA9IHBv
c2l0aW9uOworICAgIGRvIHsKKyAgICAgICAgY3VycmVudFBvc2l0aW9uID0gcG9zaXRpb25PZk5l
eHRCb3VuZGFyeU9mR3JhbnVsYXJpdHkoY3VycmVudFBvc2l0aW9uLCBXb3JkR3JhbnVsYXJpdHks
IERpcmVjdGlvbkJhY2t3YXJkKTsKKyAgICB9IHdoaWxlIChjdXJyZW50UG9zaXRpb24uaXNOb3RO
dWxsKCkgJiYgIWF0Qm91bmRhcnlPZkdyYW51bGFyaXR5KGN1cnJlbnRQb3NpdGlvbiwgV29yZEdy
YW51bGFyaXR5LCBEaXJlY3Rpb25CYWNrd2FyZCkpOworCisgICAgLy8gSWYgdGhlIHBvc2l0aW9u
IGlzIGFuIGVtcHR5IHBhcmFncmFwaCBhbmQgYXQgdGhlIGVuZCBvZiB0aGUgZG9jdW1lbnQKKyAg
ICAvLyB0aGUgd29yZCBpdGVyYXRvciBjb3VsZCBub3QgcGFzcyB0aGUgcGFyYWdyYXBoIGJvdW5k
YXJ5LCB0aGVyZWZvcmUgaXRlcmF0aW5nIHRvCisgICAgLy8gdGhlIHByZXZpb3VzIGxpbmUgaXMg
cmVxdWlyZWQuCisgICAgaWYgKGN1cnJlbnRQb3NpdGlvbi5pc051bGwoKSAmJiBpc0VuZE9mRG9j
dW1lbnQocG9zaXRpb24pKSB7CisgICAgICAgIFZpc2libGVQb3NpdGlvbiBwcmV2aW91c0xpbmVQ
b3NpdGlvbiA9IHBvc2l0aW9uT2ZOZXh0Qm91bmRhcnlPZkdyYW51bGFyaXR5KHBvc2l0aW9uLCBM
aW5lR3JhbnVsYXJpdHksIERpcmVjdGlvbkJhY2t3YXJkKTsKKyAgICAgICAgaWYgKHByZXZpb3Vz
TGluZVBvc2l0aW9uLmlzTm90TnVsbCgpKSB7CisgICAgICAgICAgICBjdXJyZW50UG9zaXRpb24g
PSBwb3NpdGlvbk9mTmV4dEJvdW5kYXJ5T2ZHcmFudWxhcml0eShwcmV2aW91c0xpbmVQb3NpdGlv
biwgV29yZEdyYW51bGFyaXR5LCBEaXJlY3Rpb25CYWNrd2FyZCk7CisgICAgICAgICAgICBpZiAo
Y3VycmVudFBvc2l0aW9uLmlzTnVsbCgpKQorICAgICAgICAgICAgICAgIGN1cnJlbnRQb3NpdGlv
biA9IHByZXZpb3VzTGluZVBvc2l0aW9uOworICAgICAgICB9CisgICAgfQorCisgICAgaWYgKGN1
cnJlbnRQb3NpdGlvbi5pc051bGwoKSkKKyAgICAgICAgY3VycmVudFBvc2l0aW9uID0gcG9zaXRp
b25PZk5leHRCb3VuZGFyeU9mR3JhbnVsYXJpdHkocG9zaXRpb24sIFdvcmRHcmFudWxhcml0eSwg
RGlyZWN0aW9uRm9yd2FyZCk7CisKKyAgICBpZiAoY3VycmVudFBvc2l0aW9uLmlzTm90TnVsbCgp
KSB7CisgICAgICAgIHJhbmdlID0gUmFuZ2U6OmNyZWF0ZShwb3NpdGlvbi5kZWVwRXF1aXZhbGVu
dCgpLmRlcHJlY2F0ZWROb2RlKCktPmRvY3VtZW50KCksIGN1cnJlbnRQb3NpdGlvbiwgcG9zaXRp
b24pOworICAgICAgICBBU1NFUlQocmFuZ2UpOworICAgIH0KKyAgICByZXR1cm4gcmFuZ2U7Cit9
CisKK1Zpc2libGVQb3NpdGlvbiBjbG9zZXN0V29yZEJvdW5kYXJ5Rm9yUG9zaXRpb24oY29uc3Qg
VmlzaWJsZVBvc2l0aW9uJiBwb3NpdGlvbikKK3sKKyAgICBWaXNpYmxlUG9zaXRpb24gcmVzdWx0
OworCisgICAgLy8gbW92ZSB0aGUgdGhlIHBvc2l0aW9uIGF0IHRoZSBlbmQgb2YgdGhlIHdvcmQK
KyAgICBpZiAoYXRCb3VuZGFyeU9mR3JhbnVsYXJpdHkocG9zaXRpb24sIExpbmVHcmFudWxhcml0
eSwgRGlyZWN0aW9uRm9yd2FyZCkpIHsKKyAgICAgICAgLy8gRG9uJ3QgY3Jvc3MgbGluZSBib3Vu
ZGFyaWVzLgorICAgICAgICByZXN1bHQgPSBwb3NpdGlvbjsKKyAgICB9IGVsc2UgaWYgKHdpdGhp
blRleHRVbml0T2ZHcmFudWxhcml0eShwb3NpdGlvbiwgV29yZEdyYW51bGFyaXR5LCBEaXJlY3Rp
b25Gb3J3YXJkKSkgeworICAgICAgICAvLyBUaGUgcG9zaXRpb24gbGllcyB3aXRoaW4gYSB3b3Jk
LgorICAgICAgICBSZWZQdHI8UmFuZ2U+IHdvcmRSYW5nZSA9IGVuY2xvc2luZ1RleHRVbml0T2ZH
cmFudWxhcml0eShwb3NpdGlvbiwgV29yZEdyYW51bGFyaXR5LCBEaXJlY3Rpb25Gb3J3YXJkKTsK
KworICAgICAgICByZXN1bHQgPSB3b3JkUmFuZ2UtPnN0YXJ0UG9zaXRpb24oKTsKKyAgICAgICAg
aWYgKGRpc3RhbmNlQmV0d2VlblBvc2l0aW9ucyhwb3NpdGlvbiwgcmVzdWx0KSA+IDEpCisgICAg
ICAgICAgICByZXN1bHQgPSB3b3JkUmFuZ2UtPmVuZFBvc2l0aW9uKCk7CisgICAgfSBlbHNlIGlm
IChhdEJvdW5kYXJ5T2ZHcmFudWxhcml0eShwb3NpdGlvbiwgV29yZEdyYW51bGFyaXR5LCBEaXJl
Y3Rpb25CYWNrd2FyZCkpIHsKKyAgICAgICAgLy8gVGhlIHBvc2l0aW9uIGlzIGF0IHRoZSBlbmQg
b2YgYSB3b3JkLgorICAgICAgICByZXN1bHQgPSBwb3NpdGlvbjsKKyAgICB9IGVsc2UgeworICAg
ICAgICAvLyBUaGUgcG9zaXRpb24gaXMgbm90IHdpdGhpbiBhIHdvcmQuCisgICAgICAgIC8vIEdv
IHRvIHRoZSBuZXh0IGJvdW5kYXJ5LgorICAgICAgICByZXN1bHQgPSBwb3NpdGlvbk9mTmV4dEJv
dW5kYXJ5T2ZHcmFudWxhcml0eShwb3NpdGlvbiwgV29yZEdyYW51bGFyaXR5LCBEaXJlY3Rpb25G
b3J3YXJkKTsKKworICAgICAgICAvLyBJZiB0aGVyZSBpcyBubyBzdWNoIGJvdW5kYXJ5IHdlIGdv
IHRvIHRoZSBlbmQgb2YgdGhlIGVsZW1lbnQuCisgICAgICAgIGlmIChyZXN1bHQuaXNOdWxsKCkp
CisgICAgICAgICAgICByZXN1bHQgPSBlbmRPZkVkaXRhYmxlQ29udGVudChwb3NpdGlvbik7Cisg
ICAgfQorICAgIHJldHVybiByZXN1bHQ7Cit9CisKKyNlbmRpZgorCiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL1Zpc2libGVVbml0cy5oIGIvU291cmNlL1dlYkNvcmUvZWRp
dGluZy9WaXNpYmxlVW5pdHMuaAppbmRleCA1NTEwNDMwNjhhM2RmODMzYWUyMzczNzE0ODNmYmQ5
NDE0ZjU5OGMzLi4wYjFlNDM2ZDkxNDRlNTVhZWYyMjJmMzkyYTU1NzE4MmU2YmIwZmVhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1Zpc2libGVVbml0cy5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvVmlzaWJsZVVuaXRzLmgKQEAgLTI4LDYgKzI4LDcgQEAKIAogI2lu
Y2x1ZGUgIkVkaXRpbmdCb3VuZGFyeS5oIgogI2luY2x1ZGUgIlRleHREaXJlY3Rpb24uaCIKKyNp
bmNsdWRlICJWaXNpYmxlU2VsZWN0aW9uLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAt
OTUsNiArOTYsMTUgQEAgVmlzaWJsZVBvc2l0aW9uIHN0YXJ0T2ZFZGl0YWJsZUNvbnRlbnQoY29u
c3QgVmlzaWJsZVBvc2l0aW9uJik7CiBWaXNpYmxlUG9zaXRpb24gZW5kT2ZFZGl0YWJsZUNvbnRl
bnQoY29uc3QgVmlzaWJsZVBvc2l0aW9uJik7CiBib29sIGlzRW5kT2ZFZGl0YWJsZU9yTm9uRWRp
dGFibGVDb250ZW50KGNvbnN0IFZpc2libGVQb3NpdGlvbiYpOwogCisjaWYgUExBVEZPUk0oSU9T
KQorYm9vbCBhdEJvdW5kYXJ5T2ZHcmFudWxhcml0eShjb25zdCBWaXNpYmxlUG9zaXRpb24mLCBU
ZXh0R3JhbnVsYXJpdHksIFNlbGVjdGlvbkRpcmVjdGlvbik7Citib29sIHdpdGhpblRleHRVbml0
T2ZHcmFudWxhcml0eShjb25zdCBWaXNpYmxlUG9zaXRpb24mLCBUZXh0R3JhbnVsYXJpdHksIFNl
bGVjdGlvbkRpcmVjdGlvbik7CitWaXNpYmxlUG9zaXRpb24gcG9zaXRpb25PZk5leHRCb3VuZGFy
eU9mR3JhbnVsYXJpdHkoY29uc3QgVmlzaWJsZVBvc2l0aW9uJiwgVGV4dEdyYW51bGFyaXR5LCBT
ZWxlY3Rpb25EaXJlY3Rpb24pOworUGFzc1JlZlB0cjxSYW5nZT4gZW5jbG9zaW5nVGV4dFVuaXRP
ZkdyYW51bGFyaXR5KGNvbnN0IFZpc2libGVQb3NpdGlvbiYsIFRleHRHcmFudWxhcml0eSwgU2Vs
ZWN0aW9uRGlyZWN0aW9uKTsKK2ludCBkaXN0YW5jZUJldHdlZW5Qb3NpdGlvbnMoY29uc3QgVmlz
aWJsZVBvc2l0aW9uJiwgY29uc3QgVmlzaWJsZVBvc2l0aW9uJik7CitQYXNzUmVmUHRyPFJhbmdl
PiB3b3JkUmFuZ2VGcm9tUG9zaXRpb24oY29uc3QgVmlzaWJsZVBvc2l0aW9uJiBwb3NpdGlvbik7
CitWaXNpYmxlUG9zaXRpb24gY2xvc2VzdFdvcmRCb3VuZGFyeUZvclBvc2l0aW9uKGNvbnN0IFZp
c2libGVQb3NpdGlvbiYgcG9zaXRpb24pOworI2VuZGlmCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CiAKICNlbmRpZiAvLyBWaXNpYmxlVW5pdHNfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9pb3MvRGljdGF0aW9uQ29tbWFuZElPUy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL2lvcy9EaWN0YXRpb25Db21tYW5kSU9TLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hYWFiMTRjNzI3ZmZj
NDZhZjk5MjMxMjBmZDEwODdjOGMzNThlMzcxCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dl
YkNvcmUvZWRpdGluZy9pb3MvRGljdGF0aW9uQ29tbWFuZElPUy5jcHAKQEAgLTAsMCArMSw4NSBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJEaWN0YXRpb25D
b21tYW5kSU9TLmgiCisKKyNpbmNsdWRlICJEb2N1bWVudC5oIgorI2luY2x1ZGUgIkRvY3VtZW50
TWFya2VyQ29udHJvbGxlci5oIgorI2luY2x1ZGUgIkVsZW1lbnQuaCIKKyNpbmNsdWRlICJQb3Np
dGlvbi5oIgorI2luY2x1ZGUgIlJhbmdlLmgiCisjaW5jbHVkZSAiU21hcnRSZXBsYWNlLmgiCisj
aW5jbHVkZSAiVGV4dEl0ZXJhdG9yLmgiCisjaW5jbHVkZSAiVmlzaWJsZVVuaXRzLmgiCisKK25h
bWVzcGFjZSBXZWJDb3JlIHsKKworRGljdGF0aW9uQ29tbWFuZElPUzo6RGljdGF0aW9uQ29tbWFu
ZElPUyhEb2N1bWVudCYgZG9jdW1lbnQsIFBhc3NPd25QdHI8VmVjdG9yPFZlY3RvcjxTdHJpbmc+
ID4gPiBkaWN0YXRpb25QaHJhc2VzLCBSZXRhaW5QdHI8aWQ+IG1ldGFkYXRhKQorICAgIDogQ29t
cG9zaXRlRWRpdENvbW1hbmQoZG9jdW1lbnQpCisgICAgLCBtX2RpY3RhdGlvblBocmFzZXMoZGlj
dGF0aW9uUGhyYXNlcykKKyAgICAsIG1fbWV0YWRhdGEobWV0YWRhdGEpCit7Cit9CisKK0RpY3Rh
dGlvbkNvbW1hbmRJT1M6On5EaWN0YXRpb25Db21tYW5kSU9TKCkKK3sKK30KKwordm9pZCBEaWN0
YXRpb25Db21tYW5kSU9TOjpkb0FwcGx5KCkKK3sKKyAgICBWaXNpYmxlUG9zaXRpb24gaW5zZXJ0
aW9uUG9zaXRpb24oc3RhcnRpbmdTZWxlY3Rpb24oKS52aXNpYmxlU3RhcnQoKSk7CisgICAgCisg
ICAgdW5zaWduZWQgcmVzdWx0TGVuZ3RoID0gMDsKKyAgICBzaXplX3QgZGljdGF0aW9uUGhyYXNl
Q291bnQgPSBtX2RpY3RhdGlvblBocmFzZXMtPnNpemUoKTsKKyAgICBmb3IgKHNpemVfdCBpID0g
MDsgaSA8IGRpY3RhdGlvblBocmFzZUNvdW50OyBpKyspIHsKKyAgICAKKyAgICAgICAgY29uc3Qg
U3RyaW5nJiBmaXJzdEludGVycHJldGF0aW9uID0gbV9kaWN0YXRpb25QaHJhc2VzLT5hdChpKVsw
XTsKKyAgICAgICAgcmVzdWx0TGVuZ3RoICs9IGZpcnN0SW50ZXJwcmV0YXRpb24ubGVuZ3RoKCk7
CisgICAgICAgIGlucHV0VGV4dChmaXJzdEludGVycHJldGF0aW9uLCB0cnVlKTsKKyAgICAgICAg
CisgICAgICAgIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBpbnRlcnByZXRhdGlvbnMgPSBtX2RpY3Rh
dGlvblBocmFzZXMtPmF0KGkpOworICAgICAgICAKKyAgICAgICAgaWYgKGludGVycHJldGF0aW9u
cy5zaXplKCkgPiAxKQorICAgICAgICAgICAgZG9jdW1lbnQoKS5tYXJrZXJzKCkuYWRkRGljdGF0
aW9uUGhyYXNlV2l0aEFsdGVybmF0aXZlc01hcmtlcihlbmRpbmdTZWxlY3Rpb24oKS50b05vcm1h
bGl6ZWRSYW5nZSgpLmdldCgpLCBpbnRlcnByZXRhdGlvbnMpOworICAgICAgICAgICAgCisgICAg
ICAgIHNldEVuZGluZ1NlbGVjdGlvbihWaXNpYmxlU2VsZWN0aW9uKGVuZGluZ1NlbGVjdGlvbigp
LnZpc2libGVFbmQoKSkpOworICAgIH0KKyAgICAKKyAgICBWaXNpYmxlUG9zaXRpb24gYWZ0ZXJS
ZXN1bHRzKGVuZGluZ1NlbGVjdGlvbigpLnZpc2libGVFbmQoKSk7CisgICAgCisgICAgRWxlbWVu
dCogcm9vdCA9IGFmdGVyUmVzdWx0cy5yb290RWRpdGFibGVFbGVtZW50KCk7CisgICAgLy8gRklY
TUU6IEFkZCB0aGUgcmVzdWx0IG1hcmtlciB1c2luZyBhIFBvc2l0aW9uIGNhY2hlZCBiZWZvcmUg
cmVzdWx0cyBhcmUgaW5zZXJ0ZWQsIGluc3RlYWQgb2YgcmVseWluZyBvbiBUZXh0SXRlcmF0b3Jz
LgorICAgIFJlZlB0cjxSYW5nZT4gcmFuZ2VUb0VuZCA9IFJhbmdlOjpjcmVhdGUoZG9jdW1lbnQo
KSwgY3JlYXRlTGVnYWN5RWRpdGluZ1Bvc2l0aW9uKChOb2RlICopcm9vdCwgMCksIGFmdGVyUmVz
dWx0cy5kZWVwRXF1aXZhbGVudCgpKTsKKyAgICBpbnQgZW5kSW5kZXggPSBUZXh0SXRlcmF0b3I6
OnJhbmdlTGVuZ3RoKHJhbmdlVG9FbmQuZ2V0KCksIHRydWUpOworICAgIGludCBzdGFydEluZGV4
ID0gZW5kSW5kZXggLSByZXN1bHRMZW5ndGg7CisgICAgCisgICAgaWYgKHN0YXJ0SW5kZXggPj0g
MCkgeworICAgICAgICBSZWZQdHI8UmFuZ2U+IHJlc3VsdFJhbmdlID0gVGV4dEl0ZXJhdG9yOjpy
YW5nZUZyb21Mb2NhdGlvbkFuZExlbmd0aChkb2N1bWVudCgpLmRvY3VtZW50RWxlbWVudCgpLCBz
dGFydEluZGV4LCBlbmRJbmRleCwgdHJ1ZSk7CisgICAgICAgIGRvY3VtZW50KCkubWFya2Vycygp
LmFkZERpY3RhdGlvblJlc3VsdE1hcmtlcihyZXN1bHRSYW5nZS5nZXQoKSwgbV9tZXRhZGF0YSk7
CisgICAgfQorfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL2lvcy9EaWN0YXRpb25Db21tYW5kSU9TLmggYi9Tb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL2lvcy9EaWN0YXRpb25Db21tYW5kSU9TLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZWRkZjA1MjBl
ZTI2NzdkMDAyN2RhOTNiMjM1ZjAwZGE5ZjZmYzg5NAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvaW9zL0RpY3RhdGlvbkNvbW1hbmRJT1MuaApAQCAtMCwwICsxLDU3
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICog
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBEaWN0YXRpb25Db21tYW5kSU9TX2gKKyNkZWZpbmUg
RGljdGF0aW9uQ29tbWFuZElPU19oCisKKyNpbmNsdWRlICJDb21wb3NpdGVFZGl0Q29tbWFuZC5o
IgorCisjaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+CisKK3R5cGVkZWYgc3RydWN0IG9iamNfb2Jq
ZWN0ICppZDsKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBEaWN0YXRpb25Db21tYW5k
SU9TIDogcHVibGljIENvbXBvc2l0ZUVkaXRDb21tYW5kIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMg
UGFzc1JlZlB0cjxEaWN0YXRpb25Db21tYW5kSU9TPiBjcmVhdGUoRG9jdW1lbnQmIGRvY3VtZW50
LCBQYXNzT3duUHRyPFZlY3RvcjxWZWN0b3I8U3RyaW5nPiA+ID4gZGljdGF0aW9uUGhyYXNlLCBS
ZXRhaW5QdHI8aWQ+IG1ldGFkYXRhKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5l
dyBEaWN0YXRpb25Db21tYW5kSU9TKGRvY3VtZW50LCBkaWN0YXRpb25QaHJhc2UsIG1ldGFkYXRh
KSk7CisgICAgfQorICAgIAorICAgIHZpcnR1YWwgfkRpY3RhdGlvbkNvbW1hbmRJT1MoKTsKK3By
aXZhdGU6CisgICAgRGljdGF0aW9uQ29tbWFuZElPUyhEb2N1bWVudCYgZG9jdW1lbnQsIFBhc3NP
d25QdHI8VmVjdG9yPFZlY3RvcjxTdHJpbmc+ID4gPiBkaWN0YXRpb25QaHJhc2UsIFJldGFpblB0
cjxpZD4gbWV0YWRhdGEpOworICAgIAorICAgIHZpcnR1YWwgdm9pZCBkb0FwcGx5KCk7CisgICAg
dmlydHVhbCBFZGl0QWN0aW9uIGVkaXRpbmdBY3Rpb24oKSBjb25zdCB7IHJldHVybiBFZGl0QWN0
aW9uRGljdGF0aW9uOyB9CisgICAgCisgICAgT3duUHRyPFZlY3RvcjxWZWN0b3I8U3RyaW5nPiA+
ID4gbV9kaWN0YXRpb25QaHJhc2VzOworICAgIFJldGFpblB0cjxpZD4gbV9tZXRhZGF0YTsKK307
CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL21hYy9GcmFtZVNlbGVjdGlvbk1hYy5tbSBiL1NvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvbWFjL0ZyYW1lU2VsZWN0aW9uTWFjLm1tCmluZGV4IGM2MjFiMzNkMDAyMjRjZjg3
NTk5NDhhOTliOTI4NDViOWE1OTQ4OWMuLmJhNGMwY2Y4YWY2OWQ3ZDg4YjJjMmYxNTlkMDdlZTZm
ZmVjMGViMDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFjL0ZyYW1lU2Vs
ZWN0aW9uTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFjL0ZyYW1lU2VsZWN0
aW9uTWFjLm1tCkBAIC0zMiw2ICszMiw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorI2lm
ICFQTEFURk9STShJT1MpCiBzdGF0aWMgQ0dSZWN0IGFjY2Vzc2liaWxpdHlDb252ZXJ0U2NyZWVu
UmVjdChDR1JlY3QgYm91bmRzKQogewogICAgIE5TQXJyYXkgKnNjcmVlbnMgPSBbTlNTY3JlZW4g
c2NyZWVuc107CkBAIC00Myw2ICs0NCw3IEBAIHN0YXRpYyBDR1JlY3QgYWNjZXNzaWJpbGl0eUNv
bnZlcnRTY3JlZW5SZWN0KENHUmVjdCBib3VuZHMpCiAgICAgCiAgICAgcmV0dXJuIGJvdW5kczsK
IH0KKyNlbmRpZiAvLyAhUExBVEZPUk0oSU9TKQogICAgIAogICAgIAogdm9pZCBGcmFtZVNlbGVj
dGlvbjo6bm90aWZ5QWNjZXNzaWJpbGl0eUZvclNlbGVjdGlvbkNoYW5nZSgpCkBAIC01NCw2ICs1
Niw3IEBAIHZvaWQgRnJhbWVTZWxlY3Rpb246Om5vdGlmeUFjY2Vzc2liaWxpdHlGb3JTZWxlY3Rp
b25DaGFuZ2UoKQogICAgICAgICAgICAgY2FjaGUtPnBvc3ROb3RpZmljYXRpb24obV9zZWxlY3Rp
b24uc3RhcnQoKS5kZXByZWNhdGVkTm9kZSgpLT5yZW5kZXJlcigpLCBBWE9iamVjdENhY2hlOjpB
WFNlbGVjdGVkVGV4dENoYW5nZWQsIFRhcmdldE9ic2VydmFibGVQYXJlbnQpOwogICAgIH0KIAor
I2lmICFQTEFURk9STShJT1MpCiAgICAgLy8gaWYgem9vbSBmZWF0dXJlIGlzIGVuYWJsZWQsIGlu
c2VydGlvbiBwb2ludCBjaGFuZ2VzIHNob3VsZCB1cGRhdGUgdGhlIHpvb20KICAgICBpZiAoIVVB
Wm9vbUVuYWJsZWQoKSB8fCAhbV9zZWxlY3Rpb24uaXNDYXJldCgpKQogICAgICAgICByZXR1cm47
CkBAIC03Niw2ICs3OSw3IEBAIHZvaWQgRnJhbWVTZWxlY3Rpb246Om5vdGlmeUFjY2Vzc2liaWxp
dHlGb3JTZWxlY3Rpb25DaGFuZ2UoKQogICAgIGNnVmlld1JlY3QgPSBhY2Nlc3NpYmlsaXR5Q29u
dmVydFNjcmVlblJlY3QoY2dWaWV3UmVjdCk7CiAKICAgICBVQVpvb21DaGFuZ2VGb2N1cygmY2dW
aWV3UmVjdCwgJmNnQ2FyZXRSZWN0LCBrVUFab29tRm9jdXNUeXBlSW5zZXJ0aW9uUG9pbnQpOwor
I2VuZGlmIC8vICFQTEFURk9STShJT1MpCiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvQXN5bmNGaWxlU3RyZWFtLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2ZpbGVhcGkvQXN5bmNGaWxlU3RyZWFtLmNwcAppbmRleCBjNmI0OGRhZmMx
YmUzNTRjMGE3MjRiNzk4NjI1MjBlNGM1MWUwOGQyLi4zNzRmYWMwZTM0NzhkODNjNmU5YzdkNjdm
MTMyM2YzMjllYTE3ZTg5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0FzeW5j
RmlsZVN0cmVhbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9Bc3luY0ZpbGVTdHJl
YW0uY3BwCkBAIC00NCw2ICs0NCwxMCBAQAogI2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+CiAj
aW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKKyNpZiBQTEFURk9STShJT1MpCisjaW5j
bHVkZSAiV2ViQ29yZVRocmVhZC5oIgorI2VuZGlmCisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAog
c3RhdGljIFBhc3NSZWZQdHI8RmlsZVRocmVhZD4gY3JlYXRlRmlsZVRocmVhZCgpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9nZW5lcmF0ZS1leHBvcnQtZmlsZSBiL1NvdXJjZS9XZWJDb3Jl
L2dlbmVyYXRlLWV4cG9ydC1maWxlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQzYTk5MjcwMGVkY2RjNmE4MTRhMWZi
YWYyNmU4NTQ4ZWI4NjFkOTAKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9nZW5l
cmF0ZS1leHBvcnQtZmlsZQpAQCAtMCwwICsxLDE1NSBAQAorIyEvdXNyL2Jpbi9wZXJsIC13Cisj
CisjIENvcHlyaWdodCAoQykgMjAwNywgMjAwOCwgMjAwOSwgMjAxMCBBcHBsZSBJbmMuICBBbGwg
cmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisjIGFyZSBtZXQ6
CisjIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyMgICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5EIEFOWQorIyBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFRIRSBJTVBMSUVECisjIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyMgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisj
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTCisjIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyMgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OCisjIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisjIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTCisjIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorCit1c2Ugc3RyaWN0OwordXNlIHdhcm5pbmdzOworCit1c2UgRmlsZTo6QmFzZW5hbWU7Cit1
c2UgRmlsZTo6RmluZDsKK3VzZSBGaWxlOjpUZW1wIHF3KHRlbXBmaWxlKTsKK3VzZSBHZXRvcHQ6
Okxvbmc7CisKK3N1YiBwcmVwcm9jZXNzb3JGbGFncygpOworc3ViIHByZXByb2Nlc3Nvck1hY3Jv
cygkXEApOworc3ViIHByb2Nlc3MoJCQkKTsKKworbXkgJHNob3dIZWxwID0gMDsKK215ICR2ZXJi
b3NlID0gMTsKKworbXkgJHJlc3VsdCA9IEdldE9wdGlvbnMoCisgICAgImhlbHAiICAgICAgICA9
PiBcJHNob3dIZWxwLAorICAgICJ2ZXJib3NlIiAgICAgPT4gXCR2ZXJib3NlLAorKTsKK2lmICgh
JHJlc3VsdCB8fCAkc2hvd0hlbHAgfHwgc2NhbGFyKEBBUkdWKSAhPSAyKSB7CisgICAgcHJpbnQg
U1RERVJSIGJhc2VuYW1lKCQwKSAuICIgWy1ofC0taGVscF0gWy12fC0tdmVyYm9zZV0gaW5maWxl
IG91dGZpbGVcbiI7CisgICAgZXhpdCAxOworfQorCitteSAkaW5GaWxlID0gc2hpZnQgQEFSR1Y7
CitteSAkb3V0RmlsZSA9IHNoaWZ0IEBBUkdWOworCitteSAkYXJjaDsKK2lmICgkb3V0RmlsZSA9
fiAvXC4oW14uXSspXC5leHAkLykgeworICAgICRhcmNoID0gJDE7Cit9CitkaWUgIlVua25vd24g
YXJjaCEiIGlmICFkZWZpbmVkKCRhcmNoKSB8fCAhJGFyY2g7CisKK3ByaW50ICJQcm9jZXNzaW5n
ICRpbkZpbGUgZm9yICRhcmNoLi4uXG4iIGlmICR2ZXJib3NlOworcHJvY2VzcygkaW5GaWxlLCAk
b3V0RmlsZSwgJGFyY2gpOworCitleGl0IDA7CisKK3N1YiBwcmVwcm9jZXNzb3JGbGFncygpCit7
CisgICAgbXkgQGZlYXR1cmVzID0gc3BsaXQoL1xzKy8sICRFTlZ7R0NDX1BSRVBST0NFU1NPUl9E
RUZJTklUSU9OU30pOworICAgIHJldHVybiBAZmVhdHVyZXM7Cit9CisKK3N1YiBwcmVwcm9jZXNz
b3JNYWNyb3MoJFxAKQoreworICAgIG15ICgkY2MsICRjY19hcmdzKSA9IEBfOworCisgICAgbXkg
QGFyZ3MgPSBAJGNjX2FyZ3M7CisKKyAgICBwdXNoKEBhcmdzLCBtYXAgeyAiLUQiIC4gJF8gfSBw
cmVwcm9jZXNzb3JGbGFncygpKTsKKworICAgIHB1c2goQGFyZ3MsIHF3KC1pbmNsdWRlIHd0Zi9Q
bGF0Zm9ybS5oIC1pbmNsdWRlIHd0Zi9Bc3NlcnRpb25zLmgpKTsKKyAgICAjIFNldCBmcmFtZXdv
cmsgc2VhcmNoIHBhdGhzIHRvIGZpbmQgPEphdmFTY3JpcHRDb3JlL1BsYXRmb3JtLmg+LiAgV2l0
aG91dCB0aGVzZSwgY2MKKyAgICAjIGZpbmRzIC9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0ph
dmFTY3JpcHRDb3JlLmZyYW1ld29yay9Qcml2YXRlSGVhZGVycy9QbGF0Zm9ybS5oCisgICAgIyBv
ciBjb21wbGFpbnMgaWYgeW91IGRvbid0IGhhdmUgdGhhdCBpbnN0YWxsZWQuICBXZSBzZWFyY2gg
QlVJTFRfUFJPRFVDVFNfRElSIGZpcnN0CisgICAgIyBmb3IgbG9jYWwgZGV2ZWxvcGVyIGJ1aWxk
cywgdGhlbiB0aGUgaW5zdGFsbGF0aW9uIHBhdGggZm9yIEImSSBidWlsZHMuCisgICAgcHVzaChA
YXJncywgIi1GIiAuICRFTlZ7QlVJTFRfUFJPRFVDVFNfRElSfSkgaWYgJEVOVntCVUlMVF9QUk9E
VUNUU19ESVJ9OworICAgIHB1c2goQGFyZ3MsICItSSIgLiAkRU5We0JVSUxUX1BST0RVQ1RTX0RJ
Un0gLiAiL3Vzci9sb2NhbC9pbmNsdWRlIikgaWYgJEVOVntCVUlMVF9QUk9EVUNUU19ESVJ9Owor
ICAgIHB1c2goQGFyZ3MsICItSSIgLiAkRU5We0JVSUxUX1BST0RVQ1RTX0RJUn0gLiAkRU5We1NE
S1JPT1R9IC4gIi91c3IvbG9jYWwvaW5jbHVkZSIpIGlmICRFTlZ7QlVJTFRfUFJPRFVDVFNfRElS
fTsKKyAgICAjIFhjb2RlIDMuMSBpcyByZXF1aXJlZCBmb3IgU0RLUk9PVCB0byBiZSBzZXQuCisg
ICAgaWYgKGV4aXN0cyAkRU5We1NZU1RFTV9MSUJSQVJZX0RJUn0gJiYgJEVOVntTWVNURU1fTElC
UkFSWV9ESVJ9KSB7CisgICAgICAgIG15ICRmcmFtZXdvcmtTZWFyY2hQYXRoID0gJEVOVntTREtS
T09UfSAuICRFTlZ7U1lTVEVNX0xJQlJBUllfRElSfTsKKyAgICAgICAgaWYgKCRFTlZ7UExBVEZP
Uk1fTkFNRX0gZXEgImlwaG9uZW9zIiB8fCAkRU5We1BMQVRGT1JNX05BTUV9IGVxICJpcGhvbmVz
aW11bGF0b3IiKSB7CisgICAgICAgICAgICAkZnJhbWV3b3JrU2VhcmNoUGF0aCAuPSAiL1ByaXZh
dGVGcmFtZXdvcmtzIjsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICRmcmFtZXdvcmtT
ZWFyY2hQYXRoIC49ICIvRnJhbWV3b3JrcyI7CisgICAgICAgIH0KKyAgICAgICAgcHVzaChAYXJn
cywgIi1GIiAuICRmcmFtZXdvcmtTZWFyY2hQYXRoKTsKKyAgICB9CisKKyAgICBwdXNoKEBhcmdz
LCAiLUkiIC4gJEVOVntCVUlMVF9QUk9EVUNUU19ESVJ9IC4gJEVOVntTREtST09UfSAuICIvdXNy
L2xvY2FsL2luY2x1ZGUiKSBpZiAkRU5We0JVSUxUX1BST0RVQ1RTX0RJUn07CisgICAgcHVzaChA
YXJncywgIi1JIiAuICRFTlZ7U0RLUk9PVH0gLiAiL3Vzci9sb2NhbC9pbmNsdWRlIik7CisKKyAg
ICAjIFByaW50IG91dCAjZGVmaW5lIGxpbmVzIGZvciBhbGwgbWFjcm9zLgorICAgIHB1c2goQGFy
Z3MsIHF3KC1kTSAvZGV2L251bGwpKTsKKworICAgIHByaW50IGpvaW4oIiAiLCAkY2MsIEBhcmdz
KSwgIlxuIiBpZiAkdmVyYm9zZTsKKyAgICBsb2NhbCAkLyA9IHVuZGVmOworICAgIG9wZW4oQ0Ms
ICItfCIsICRjYywgQGFyZ3MpIG9yIGRpZSAiJCEiOworICAgIG15ICRtYWNyb3MgPSA8Q0M+Owor
ICAgIGNsb3NlKENDKTsKKworICAgIHJldHVybiAkbWFjcm9zOworfQorCitzdWIgcHJvY2Vzcygk
JCQpCit7CisgICAgbXkgKCRpbkZpbGUsICRvdXRGaWxlLCAkYXJjaCkgPSBAXzsKKworICAgIGlm
ICghZXhpc3RzICRFTlZ7U0RLUk9PVH0gb3IgISRFTlZ7U0RLUk9PVH0pIHsKKyAgICAgICAgZGll
ICJTREtST09UIGVudmlyb25tZW50IHZhcmlhYmxlIG5vdCBmb3VuZCI7CisgICAgfQorCisgICAg
Y2hvbXAgKG15ICRjYyA9IGB4Y3J1biAtZmluZCBjY2ApOworCisgICAgIyBSdW4gY3BwICgtRSkg
YnV0IGRvbid0IHByaW50IHRoZSBsaW5lIG51bWJlciBpbmZvICgtUCkuCisgICAgbXkgQGFyZ3Mg
PSBxdygtRSAtUCk7CisKKyAgICAjIFByb3ZpZGUgYSBkZWZhdWx0IHNvdXJjZSB0eXBlIHNpbmNl
ICouaW4gaXNuJ3QgYSBrbm93biBmaWxlIGV4dGVuc2lvbi4KKyAgICBwdXNoKEBhcmdzLCBxdygt
c3RkPWdudSsrMTEgLXggYysrKSk7CisKKyAgICAjIE1ha2Ugc3VyZSBjYyBrbm93cyB3aGljaCBT
REsgd2UncmUgdXNpbmcuCisgICAgcHVzaChAYXJncywgIi1pc3lzcm9vdCIsICRFTlZ7U0RLUk9P
VH0pOworCisgICAgcHVzaChAYXJncywgIi1hcmNoIiwgJGFyY2gpOworCisgICAgbXkgJG1hY3Jv
cyA9IHByZXByb2Nlc3Nvck1hY3JvcygkY2MsIEBhcmdzKTsKKworICAgIHB1c2goQGFyZ3MsICIt
byIsICRvdXRGaWxlKTsKKyAgICBwdXNoKEBhcmdzLCAiLSIpOworCisgICAgcHJpbnQgam9pbigi
ICIsICRjYywgQGFyZ3MpLCAiXG4iIGlmICR2ZXJib3NlOworICAgIG9wZW4oQ0MsICJ8LSIsICRj
YywgQGFyZ3MpIG9yIGRpZSAiJCEiOworICAgIG9wZW4oSU4sICI8IiwgJGluRmlsZSkgb3IgZGll
ICIkISI7CisKKyAgICBwcmludCBDQyAkbWFjcm9zOworICAgIHdoaWxlIChteSAkbGluZSA9IDxJ
Tj4pIHsKKyAgICAgICAgbmV4dCBpZiAoJGxpbmUgPX4gL14jLyAmJiAkbGluZSAhfiAvXiNccyoo
aWZ8aWZkZWZ8aWZuZGVmfGVsc2V8ZWxpZnxlbmRpZikvKTsKKyAgICAgICAgcHJpbnQgQ0MgJGxp
bmU7CisgICAgfQorCisgICAgY2xvc2UoSU4pOworICAgIGNsb3NlKENDKTsKKworICAgIG15ICRm
aWxlQ291bnQgPSBjaG1vZCAwNjQ0LCAkb3V0RmlsZTsKKyAgICBpZiAoJGZpbGVDb3VudCAhPSAx
KSB7CisgICAgICAgIGRpZSAiQ291bGQgbm90IGNobW9kIDA2NDQgJG91dEZpbGU6ICQhIjsKKyAg
ICB9Cit9CisKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JD
b3VudGVycy5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvdW50ZXJzLmgK
aW5kZXggN2ExYzc1OGUxMGQzZDkxM2Q0ZTQyMDc2NmJmMTZlZWVjODQ1ZGY2OS4uMjliZDFiZDYy
ZGU4ZmRkYjE3OTBjMjAyZDUwNjMzYjE1NzljYmQyOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3RvckNvdW50ZXJzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3RvckNvdW50ZXJzLmgKQEAgLTM1LDYgKzM1LDkgQEAKIAogI2lmICFBU1NF
UlRfRElTQUJMRUQKICNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgorI2lmIFBMQVRGT1JNKElP
UykKKyNpbmNsdWRlICJXZWJDb3JlVGhyZWFkLmgiCisjZW5kaWYKICNlbmRpZgogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9yRnJvbnRlbmRIb3N0LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJv
bnRlbmRIb3N0LmgKaW5kZXggMjYzZTdhZDg4ZDJjYjk0NWQ4ZTBhOGJiNDRjOGZkNzVlM2E0ZDMy
ZS4uOWRjNjdiMGM3NzdkMDg2N2M5ZTY3NDkzMTNkMGQyOTYwNjFiMTM2NCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kSG9zdC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZEhvc3QuaApAQCAtNzcsOCAr
NzcsMTAgQEAgcHVibGljOgogICAgIHZvaWQgYXBwZW5kKGNvbnN0IFN0cmluZyYgdXJsLCBjb25z
dCBTdHJpbmcmIGNvbnRlbnQpOwogICAgIHZvaWQgY2xvc2UoY29uc3QgU3RyaW5nJiB1cmwpOwog
CisjaWYgRU5BQkxFKENPTlRFWFRfTUVOVVMpCiAgICAgLy8gQ2FsbGVkIGZyb20gW0N1c3RvbV0g
aW1wbGVtZW50YXRpb25zLgogICAgIHZvaWQgc2hvd0NvbnRleHRNZW51KEV2ZW50KiwgY29uc3Qg
VmVjdG9yPENvbnRleHRNZW51SXRlbT4mIGl0ZW1zKTsKKyNlbmRpZgogICAgIHZvaWQgc2VuZE1l
c3NhZ2VUb0JhY2tlbmQoY29uc3QgU3RyaW5nJiBtZXNzYWdlKTsKICAgICB2b2lkIGRpc3BhdGNo
RXZlbnRBc0NvbnRleHRNZW51RXZlbnQoRXZlbnQqKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvbWFrZS1leHBvcnQtZmlsZS1nZW5lcmF0b3IgYi9Tb3VyY2UvV2ViQ29yZS9tYWtlLWV4
cG9ydC1maWxlLWdlbmVyYXRvcgppbmRleCA2MTczNjNjMjQwZmM5MzIzYzRlOGFlNzhjN2ZhZWY4
NDdmZTI4M2E0Li43MzIzNjkyOGZjMjRkYTc5Njc4NWRjZmY3Yzk2NDU2NDQ2NTU4NGNlIDEwMDc1
NQotLS0gYS9Tb3VyY2UvV2ViQ29yZS9tYWtlLWV4cG9ydC1maWxlLWdlbmVyYXRvcgorKysgYi9T
b3VyY2UvV2ViQ29yZS9tYWtlLWV4cG9ydC1maWxlLWdlbmVyYXRvcgpAQCAtMjksNyArMjksNyBA
QCBvdXRwdXRfZmlsZSA9IEFSR1ZbMV0KIHJlcXVpcmUgJ2VyYicKIAogZGVmIGxpbmVfZm9yX291
dHB1dCBsaW5lCi0gIHJldHVybiBsaW5lLmNob21wIGlmIGxpbmUgPX4gLyMvCisgIHJldHVybiBs
aW5lLmNob21wIGlmIGxpbmUgPX4gL14jXHMqKGlmfGlmZGVmfGlmbmRlZnxlbHNlfGVsaWZ8ZW5k
aWYpLwogICAiICAgIHZhbGlkYXRlQW5kUHJpbnQoXCIje2xpbmUuY2hvbXB9XCIpOyIKIGVuZAog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbHVnaW5zL1BsdWdpblBhY2thZ2UuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsdWdpbnMvUGx1Z2luUGFja2FnZS5oCmluZGV4IDVmMzFlOGExNjhkMjRj
YjcwYzcyZGU2Nzk2MDViZGUyZDg0YWU5NjcuLjE4ODY1NDU4NmM0OGY1YTU5YWUzMjg2NDQ2YTVh
NGRhYmExMzFmZjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsdWdpbnMvUGx1Z2luUGFj
a2FnZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsdWdpbnMvUGx1Z2luUGFja2FnZS5oCkBAIC0z
MCw3ICszMCw5IEBACiAjaW5jbHVkZSAiRmlsZVN5c3RlbS5oIgogI2luY2x1ZGUgIlBsdWdpblF1
aXJrU2V0LmgiCiAjaW5jbHVkZSAiVGltZXIuaCIKKyNpZiBFTkFCTEUoTkVUU0NBUEVfUExVR0lO
X0FQSSkKICNpbmNsdWRlICJucHJ1bnRpbWVfaW50ZXJuYWwuaCIKKyNlbmRpZgogI2luY2x1ZGUg
PHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KICNpbmNsdWRlIDx3
dGYvdGV4dC9TdHJpbmdIYXNoLmg+CkBAIC03MCw3ICs3Miw5IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKICAgICAgICAgYm9vbCBpc0VuYWJsZWQoKSBjb25zdCB7IHJldHVybiBtX2lzRW5hYmxlZDsg
fQogICAgICAgICB2b2lkIHNldEVuYWJsZWQoYm9vbCk7CiAKKyNpZiBFTkFCTEUoTkVUU0NBUEVf
UExVR0lOX0FQSSkKICAgICAgICAgY29uc3QgTlBQbHVnaW5GdW5jcyogcGx1Z2luRnVuY3MoKSBj
b25zdCB7IHJldHVybiAmbV9wbHVnaW5GdW5jczsgfQorI2VuZGlmCiAgICAgICAgIGludCBjb21w
YXJlRmlsZVZlcnNpb24oY29uc3QgUGxhdGZvcm1Nb2R1bGVWZXJzaW9uJikgY29uc3Q7CiAgICAg
ICAgIGludCBjb21wYXJlKGNvbnN0IFBsdWdpblBhY2thZ2UmKSBjb25zdDsKICAgICAgICAgUGx1
Z2luUXVpcmtTZXQgcXVpcmtzKCkgY29uc3QgeyByZXR1cm4gbV9xdWlya3M7IH0KQEAgLTEwOSw5
ICsxMTMsMTEgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBQbGF0Zm9ybU1vZHVsZSBt
X21vZHVsZTsKICAgICAgICAgdGltZV90IG1fbGFzdE1vZGlmaWVkOwogCisjaWYgRU5BQkxFKE5F
VFNDQVBFX1BMVUdJTl9BUEkpCiAgICAgICAgIE5QUF9TaHV0ZG93blByb2NQdHIgbV9OUFBfU2h1
dGRvd247CiAgICAgICAgIE5QUGx1Z2luRnVuY3MgbV9wbHVnaW5GdW5jczsKICAgICAgICAgTlBO
ZXRzY2FwZUZ1bmNzIG1fYnJvd3NlckZ1bmNzOworI2VuZGlmCiAKICAgICAgICAgdm9pZCBmcmVl
TGlicmFyeVNvb24oKTsKICAgICAgICAgdm9pZCBmcmVlTGlicmFyeVRpbWVyRmlyZWQoVGltZXI8
UGx1Z2luUGFja2FnZT4qKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsdWdpbnMvUGx1
Z2luVmlld0Jhc2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsdWdpbnMvUGx1Z2luVmlld0Jhc2UuaApp
bmRleCA3YTA0ZjRlOTRjZjIwZTJmOTY5NDg5NmVlMDI0ZDkwZWU3ZDdmNWUzLi44NGNkNWY4MWIx
ZDU5YzFhODVlNGE4OTg1MzMyNDRhZTAxNjhiMTU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbHVnaW5zL1BsdWdpblZpZXdCYXNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGx1Z2lucy9Q
bHVnaW5WaWV3QmFzZS5oCkBAIC00Niw2ICs0NiwxMSBAQCBjbGFzcyBQbHVnaW5WaWV3QmFzZSA6
IHB1YmxpYyBXaWRnZXQgewogcHVibGljOgogI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElO
RykKICAgICB2aXJ0dWFsIFBsYXRmb3JtTGF5ZXIqIHBsYXRmb3JtTGF5ZXIoKSBjb25zdCB7IHJl
dHVybiAwOyB9CisjaWYgUExBVEZPUk0oSU9TKQorICAgIHZpcnR1YWwgYm9vbCB3aWxsUHJvdmlk
ZVBsdWdpbkxheWVyKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KKyAgICB2aXJ0dWFsIHZvaWQg
YXR0YWNoUGx1Z2luTGF5ZXIoKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZGV0YWNoUGx1Z2luTGF5
ZXIoKSB7IH0KKyNlbmRpZgogI2VuZGlmCiAKICAgICB2aXJ0dWFsIEpTQzo6SlNPYmplY3QqIHNj
cmlwdE9iamVjdChKU0M6OkpTR2xvYmFsT2JqZWN0KikgeyByZXR1cm4gMDsgfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVSZXNvbHZlRm9yRG9jdW1lbnQuY3BwIGIvU291
cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVSZXNvbHZlRm9yRG9jdW1lbnQuY3BwCmluZGV4IGIzMzll
MjgzZWRlMDkwNzZjOWU3ODk3ZDFhNzE5OGQzMTVjYWQ3NTMuLjFkYjNiMDUyNGVkMmQ2NWU3ZWI1
ODA2OGNjMjhmYTYyNjc3OThhYmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0
eWxlUmVzb2x2ZUZvckRvY3VtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHls
ZVJlc29sdmVGb3JEb2N1bWVudC5jcHAKQEAgLTc1LDYgKzc1LDEwIEBAIFBhc3NSZWY8UmVuZGVy
U3R5bGU+IHJlc29sdmVGb3JEb2N1bWVudChjb25zdCBEb2N1bWVudCYgZG9jdW1lbnQpCiAgICAg
fQogICAgIC8vIFRoaXMgb3ZlcnJpZGVzIGFueSAtd2Via2l0LXVzZXItbW9kaWZ5IGluaGVyaXRl
ZCBmcm9tIHRoZSBwYXJlbnQgaWZyYW1lLgogICAgIGRvY3VtZW50U3R5bGUuZ2V0KCkuc2V0VXNl
ck1vZGlmeShkb2N1bWVudC5pbkRlc2lnbk1vZGUoKSA/IFJFQURfV1JJVEUgOiBSRUFEX09OTFkp
OworI2lmIFBMQVRGT1JNKElPUykKKyAgICBpZiAoZG9jdW1lbnQuaW5EZXNpZ25Nb2RlKCkpCisg
ICAgICAgIGRvY3VtZW50U3R5bGUuZ2V0KCkuc2V0VGV4dFNpemVBZGp1c3QoVGV4dFNpemVBZGp1
c3RtZW50KE5vVGV4dFNpemVBZGp1c3RtZW50KSk7CisjZW5kaWYKIAogICAgIEVsZW1lbnQqIGRv
Y0VsZW1lbnQgPSBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQoKTsKICAgICBSZW5kZXJPYmplY3Qq
IGRvY0VsZW1lbnRSZW5kZXJlciA9IGRvY0VsZW1lbnQgPyBkb2NFbGVtZW50LT5yZW5kZXJlcigp
IDogMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlUmVzb2x2ZVRyZWUu
Y3BwIGIvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVSZXNvbHZlVHJlZS5jcHAKaW5kZXggNDJi
MTM2NDJjNWZlMDAyODZkM2NhNjBmZDhjZjQ3ODYwMjA4ZmRjMC4uZmJhYjIxNDcyN2E4NTRkNzg4
ZjI5ODA5NGNiNWMwNThjMWE3Mzg5OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3R5bGUv
U3R5bGVSZXNvbHZlVHJlZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVSZXNv
bHZlVHJlZS5jcHAKQEAgLTc2OSwxNyArNzY5LDE1IEBAIHN0YXRpYyBFVmlzaWJpbGl0eSBlbGVt
ZW50SW1wbGljaXRWaXNpYmlsaXR5KGNvbnN0IEVsZW1lbnQqIGVsZW1lbnQpCiAgICAgaWYgKCFy
ZW5kZXJlcikKICAgICAgICAgcmV0dXJuIFZJU0lCTEU7CiAKLSAgICBSZW5kZXJTdHlsZSogc3R5
bGUgPSByZW5kZXJlci0+c3R5bGUoKTsKLSAgICBpZiAoIXN0eWxlKQotICAgICAgICByZXR1cm4g
VklTSUJMRTsKKyAgICBSZW5kZXJTdHlsZSYgc3R5bGUgPSByZW5kZXJlci0+c3R5bGUoKTsKIAot
ICAgIExlbmd0aCB3aWR0aChzdHlsZS0+d2lkdGgoKSk7Ci0gICAgTGVuZ3RoIGhlaWdodChzdHls
ZS0+aGVpZ2h0KCkpOworICAgIExlbmd0aCB3aWR0aChzdHlsZS53aWR0aCgpKTsKKyAgICBMZW5n
dGggaGVpZ2h0KHN0eWxlLmhlaWdodCgpKTsKICAgICBpZiAoKHdpZHRoLmlzRml4ZWQoKSAmJiB3
aWR0aC52YWx1ZSgpIDw9IDApIHx8IChoZWlnaHQuaXNGaXhlZCgpICYmIGhlaWdodC52YWx1ZSgp
IDw9IDApKQogICAgICAgICByZXR1cm4gSElEREVOOwogCi0gICAgTGVuZ3RoIHRvcChzdHlsZS0+
dG9wKCkpOwotICAgIExlbmd0aCBsZWZ0KHN0eWxlLT5sZWZ0KCkpOworICAgIExlbmd0aCB0b3Ao
c3R5bGUudG9wKCkpOworICAgIExlbmd0aCBsZWZ0KHN0eWxlLmxlZnQoKSk7CiAgICAgaWYgKGxl
ZnQuaXNGaXhlZCgpICYmIHdpZHRoLmlzRml4ZWQoKSAmJiAtbGVmdC52YWx1ZSgpID49IHdpZHRo
LnZhbHVlKCkpCiAgICAgICAgIHJldHVybiBISURERU47CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50
ZXJuYWxzLmNwcAppbmRleCAzODUzOWVlZDhjOGYyNDJiZTkyNzg5ZWQ4MzE5MDk0NDEzYTRkN2Zi
Li5kMjI1OGI1NDJmNWY0MzIxYmQ0ZmZkNDJiZTAyMWYzMTBhYzMwMWVkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
dGVzdGluZy9JbnRlcm5hbHMuY3BwCkBAIC0xOTY4LDcgKzE5NjgsNyBAQCB2b2lkIEludGVybmFs
czo6c3RvcFRyYWNraW5nUmVwYWludHMoRXhjZXB0aW9uQ29kZSYgZWMpCiAgICAgZnJhbWVWaWV3
LT5zZXRUcmFja3NSZXBhaW50cyhmYWxzZSk7CiB9CiAKLSNpZiBVU0UoTEFaWV9OQVRJVkVfQ1VS
U09SKQorI2lmICFQTEFURk9STShJT1MpICYmIFVTRShMQVpZX05BVElWRV9DVVJTT1IpCiBzdGF0
aWMgY29uc3QgY2hhciogY3Vyc29yVHlwZVRvU3RyaW5nKEN1cnNvcjo6VHlwZSBjdXJzb3JUeXBl
KQogewogICAgIHN3aXRjaCAoY3Vyc29yVHlwZSkgewpAQCAtMjAzMSw5ICsyMDMxLDkgQEAgU3Ry
aW5nIEludGVybmFsczo6Z2V0Q3VycmVudEN1cnNvckluZm8oRXhjZXB0aW9uQ29kZSYgZWMpCiAg
ICAgICAgIHJldHVybiBTdHJpbmcoKTsKICAgICB9CiAKKyNpZiAhUExBVEZPUk0oSU9TKSAmJiBV
U0UoTEFaWV9OQVRJVkVfQ1VSU09SKQogICAgIEN1cnNvciBjdXJzb3IgPSBkb2N1bWVudC0+ZnJh
bWUoKS0+ZXZlbnRIYW5kbGVyKCkuY3VycmVudE1vdXNlQ3Vyc29yKCk7CiAKLSNpZiBVU0UoTEFa
WV9OQVRJVkVfQ1VSU09SKQogICAgIFN0cmluZ0J1aWxkZXIgcmVzdWx0OwogICAgIHJlc3VsdC5h
cHBlbmQoInR5cGU9Iik7CiAgICAgcmVzdWx0LmFwcGVuZChjdXJzb3JUeXBlVG9TdHJpbmcoY3Vy
c29yLnR5cGUoKSkpOwpAQCAtMjEzMiw4ICsyMTMyLDEyIEBAIGJvb2wgSW50ZXJuYWxzOjppc1Nl
bGVjdFBvcHVwVmlzaWJsZShOb2RlKiBub2RlKQogICAgIGlmICghcmVuZGVyZXItPmlzTWVudUxp
c3QoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCisjaWYgIVBMQVRGT1JNKElPUykKICAgICBS
ZW5kZXJNZW51TGlzdCogbWVudUxpc3QgPSB0b1JlbmRlck1lbnVMaXN0KHJlbmRlcmVyKTsKICAg
ICByZXR1cm4gbWVudUxpc3QtPnBvcHVwSXNWaXNpYmxlKCk7CisjZWxzZQorICAgIHJldHVybiBm
YWxzZTsKKyNlbmRpZiAvLyAhUExBVEZPUk0oSU9TKQogfQogCiBTdHJpbmcgSW50ZXJuYWxzOjpj
YXB0aW9uc1N0eWxlU2hlZXRPdmVycmlkZShFeGNlcHRpb25Db2RlJiBlYykKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyVGhyZWFkLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvV29ya2VyVGhyZWFkLmNwcAppbmRleCBmZWYzZTU0YTQxYzhjODVlMGYxY2Y1YTI1
NTY4NDRlOTMxYTcyYzI1Li45YjZhZGU0ZjVjYTM3NTk2MTk0ZTZhZTY4Njk4OGRiOWUzMzNiZjFl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclRocmVhZC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJUaHJlYWQuY3BwCkBAIC00Myw2ICs0Mywx
MCBAQAogI2luY2x1ZGUgIkRhdGFiYXNlVGFzay5oIgogI2VuZGlmCiAKKyNpZiBQTEFURk9STShJ
T1MpCisjaW5jbHVkZSAiV2ViQ29yZVRocmVhZC5oIgorI2VuZGlmCisKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAogc3RhdGljIE11dGV4JiB0aHJlYWRTZXRNdXRleCgpCkBAIC0xNDEsNiArMTQ1LDEx
IEBAIHZvaWQgV29ya2VyVGhyZWFkOjp3b3JrZXJUaHJlYWRTdGFydCh2b2lkKiB0aHJlYWQpCiAK
IHZvaWQgV29ya2VyVGhyZWFkOjp3b3JrZXJUaHJlYWQoKQogeworICAgIC8vIFByb3BhZ2F0ZSB0
aGUgbWFpblRocmVhZCdzIGZlbnYgdG8gd29ya2Vycy4KKyNpZiBQTEFURk9STShJT1MpCisgICAg
ZmVzZXRlbnYoJm1haW5UaHJlYWRGRW52KTsKKyNlbmRpZgorCiAgICAgewogICAgICAgICBNdXRl
eExvY2tlciBsb2NrKG1fdGhyZWFkQ3JlYXRpb25NdXRleCk7CiAgICAgICAgIG1fd29ya2VyR2xv
YmFsU2NvcGUgPSBjcmVhdGVXb3JrZXJHbG9iYWxTY29wZShtX3N0YXJ0dXBEYXRhLT5tX3Njcmlw
dFVSTCwgbV9zdGFydHVwRGF0YS0+bV91c2VyQWdlbnQsIHN0ZDo6bW92ZShtX3N0YXJ0dXBEYXRh
LT5tX2dyb3VwU2V0dGluZ3MpLCBtX3N0YXJ0dXBEYXRhLT5tX2NvbnRlbnRTZWN1cml0eVBvbGlj
eSwgbV9zdGFydHVwRGF0YS0+bV9jb250ZW50U2VjdXJpdHlQb2xpY3lUeXBlLCBtX3N0YXJ0dXBE
YXRhLT5tX3RvcE9yaWdpbi5yZWxlYXNlKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9X
ZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggMjRkYzk1ODJkNTkyODAwOWJiZTAyMjJhYzlj
OWEzNjNmNDI3YjdhNi4uNzU5YTUxMzU3MjBmNjBkZjRkZDJkNWQwZGZjMDViOGY2Y2M1NDllOCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBA
IC04MzAsNiArODMwLDcgQEAKIAkJQ0Q4RUFDNzIxMUNBQzlBMzAwNzc0MDc1IC8qIElPS2l0LmZy
YW1ld29yayAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHdyYXBwZXIuZnJhbWV3b3JrOyBuYW1lID0gSU9LaXQuZnJhbWV3b3JrOyBwYXRoID0gL1N5c3Rl
bS9MaWJyYXJ5L0ZyYW1ld29ya3MvSU9LaXQuZnJhbWV3b3JrOyBzb3VyY2VUcmVlID0gIjxhYnNv
bHV0ZT4iOyB9OwogCQlDREE2MkFFMDEyNUY4N0MyMDA3RkQxMTggLyogV2ViRnVsbFNjcmVlbkNv
bnRyb2xsZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViRnVsbFNjcmVl
bkNvbnRyb2xsZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0RBNjJBRTExMjVG
ODdDMjAwN0ZEMTE4IC8qIFdlYkZ1bGxTY3JlZW5Db250cm9sbGVyLm1tICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gV2ViRnVsbFNjcmVlbkNvbnRyb2xsZXIubW07IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNFMjYxNkFCMTg3RTY2NzUwMDc5NTVGMyAvKiBz
Y3J1Yi1pZmRlZnMucGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0LnNjcmlwdC5wZXJsOyBuYW1lID0gInNjcnVi
LWlmZGVmcy5wbCI7IHBhdGggPSAibWFjL3NjcnViLWlmZGVmcy5wbCI7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCUNFREExMkQ5MTUyQ0JFNjgwMEQ5RTA4RCAvKiBXZWJBbHRlcm5hdGl2
ZVRleHRDbGllbnQubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBX
ZWJBbHRlcm5hdGl2ZVRleHRDbGllbnQubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CUNFREExMkRBMTUyQ0JFNjgwMEQ5RTA4RCAvKiBXZWJBbHRlcm5hdGl2ZVRleHRDbGllbnQuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViQWx0ZXJuYXRpdmVUZXh0Q2xpZW50
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUREN0NERUU2MEEyM0JBOUUwMDA2OTky
OCAvKiBXZWJUeXBlc0ludGVybmFsLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFdlYlR5cGVzSW50ZXJuYWwuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTkyOCw2
ICs5MjksNyBAQAogCQkwODY3RDY5MUZFODQwMjhGQzAyQUFDMDcgLyogV2ViS2l0ICovID0gewog
CQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJCQlDRTI2MTZBQjE4N0U2Njc1
MDA3OTU1RjMgLyogc2NydWItaWZkZWZzLnBsICovLAogCQkJCTFDNkNCMDNFMEFBNjM5MUQwMEQy
M0JGRCAvKiBNaWdyYXRlSGVhZGVycy5tYWtlICovLAogCQkJCUY1RjczMkQyMDJGRjRENEYwMUE4
MDE4MCAvKiBXZWJLaXQuZXhwICovLAogCQkJCUExMEMxRDhGMTgyMDMwN0QwMDM2ODgzQSAvKiBX
ZWJLaXQuaU9TLmV4cCAqLywKQEAgLTE5MzksNiArMTk0MSw3IEBACiAJCQkJMUMzOTVERTIwQzZC
RThFMDAwMEQxRTUyIC8qIEdlbmVyYXRlIDY0LWJpdCBFeHBvcnQgRmlsZSAqLywKIAkJCQk5Mzk4
MTEyNzA4MjRCRjAxMDA4REYwMzggLyogRnJhbWV3b3JrcyAqLywKIAkJCQk1RDBENTQyMTBFOTg2
MzFEMDAyOUUyMjMgLyogQ2hlY2sgRm9yIFdlYWsgVlRhYmxlcyBhbmQgRXh0ZXJuYWxzICovLAor
CQkJCTQ0NThBNjNBMEQ1QzIxNDAwMEI3NEZDOCAvKiBTY3J1YiBJbnN0YWxsZWQgSGVhZGVycyAq
LywKIAkJCQkzNzEzRjAxODE0MjkwNUI3MDAzNjM4N0YgLyogQ2hlY2sgRm9yIEluYXBwcm9wcmlh
dGUgT2JqZWN0aXZlLUMgQ2xhc3MgTmFtZXMgKi8sCiAJCQkJNUQ4OEVFNkMxMTQwN0RFODAwQkMz
QUJDIC8qIENoZWNrIEZvciBGcmFtZXdvcmsgSW5jbHVkZSBDb25zaXN0ZW5jeSAqLywKIAkJCQlB
NTVERUFBNTE2NzAzRjlGMDAzREI4NDEgLyogQ2hlY2sgRm9yIEluYXBwcm9wcmlhdGUgTWFjcm9z
IGluIEV4dGVybmFsIEhlYWRlcnMgKi8sCkBAIC0yMDQ4LDYgKzIwNTEsMjEgQEAKIAkJCXNoZWxs
UGF0aCA9IC9iaW4vc2g7CiAJCQlzaGVsbFNjcmlwdCA9ICJpZiBbIFwiJHtBQ1RJT059XCIgPSBc
Imluc3RhbGxoZHJzXCIgXTsgdGhlblxuICAgIGV4aXQgMDtcbmZpXG5cbmlmIFsgLWYgLi4vLi4v
VG9vbHMvU2NyaXB0cy9jaGVjay1mb3ItaW5hcHByb3ByaWF0ZS1vYmpjLWNsYXNzLW5hbWVzIF07
IHRoZW5cbiAgICAuLi8uLi9Ub29scy9TY3JpcHRzL2NoZWNrLWZvci1pbmFwcHJvcHJpYXRlLW9i
amMtY2xhc3MtbmFtZXMgV2ViIF9XZWIgfHwgZXhpdCAkP1xuZmkiOwogCQl9OworCQk0NDU4QTYz
QTBENUMyMTQwMDBCNzRGQzggLyogU2NydWIgSW5zdGFsbGVkIEhlYWRlcnMgKi8gPSB7CisJCQlp
c2EgPSBQQlhTaGVsbFNjcmlwdEJ1aWxkUGhhc2U7CisJCQlidWlsZEFjdGlvbk1hc2sgPSAyMTQ3
NDgzNjQ3OworCQkJZmlsZXMgPSAoCisJCQkpOworCQkJaW5wdXRQYXRocyA9ICgKKwkJCQkiJChT
UkNST09UKS9tYWMvc2NydWItaWZkZWZzLnBsIiwKKwkJCSk7CisJCQluYW1lID0gIlNjcnViIElu
c3RhbGxlZCBIZWFkZXJzIjsKKwkJCW91dHB1dFBhdGhzID0gKAorCQkJKTsKKwkJCXJ1bk9ubHlG
b3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOworCQkJc2hlbGxQYXRoID0gL2Jpbi9zaDsK
KwkJCXNoZWxsU2NyaXB0ID0gIi4vbWFjL3NjcnViLWlmZGVmcy5wbCAkVEFSR0VUX0JVSUxEX0RJ
Ui8kUFJJVkFURV9IRUFERVJTX0ZPTERFUl9QQVRIXG4uL21hYy9zY3J1Yi1pZmRlZnMucGwgJFRB
UkdFVF9CVUlMRF9ESVIvJFBVQkxJQ19IRUFERVJTX0ZPTERFUl9QQVRIXG4iOworCQl9OwogCQk1
RDBENTQyMTBFOTg2MzFEMDAyOUUyMjMgLyogQ2hlY2sgRm9yIFdlYWsgVlRhYmxlcyBhbmQgRXh0
ZXJuYWxzICovID0gewogCQkJaXNhID0gUEJYU2hlbGxTY3JpcHRCdWlsZFBoYXNlOwogCQkJYnVp
bGRBY3Rpb25NYXNrID0gMjE0NzQ4MzY0NzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFj
L01pZ3JhdGVIZWFkZXJzLm1ha2UgYi9Tb3VyY2UvV2ViS2l0L21hYy9NaWdyYXRlSGVhZGVycy5t
YWtlCmluZGV4IDM0Y2E0OWE1MzI5NGNjMWQ1MjkzODE2MzU2ZmUzZThjN2M3MTI5ZGMuLjE5YjYz
NTljMTU1YTQwMmU5ODgxZDE0ZDViYzIxNWE1MjRkZGQ3MzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvbWFjL01pZ3JhdGVIZWFkZXJzLm1ha2UKKysrIGIvU291cmNlL1dlYktpdC9tYWMvTWln
cmF0ZUhlYWRlcnMubWFrZQpAQCAtMTkwLDEwICsxOTAsNTIgQEAgYWxsIDogXAogICAgICQoUFVC
TElDX0hFQURFUlNfRElSKS9ucHR5cGVzLmggXAogIwogCitpZmVxICgkKGZpbmRzdHJpbmcgV1RG
X1BMQVRGT1JNX0lPUywkKEZFQVRVUkVfREVGSU5FUykpLCBXVEZfUExBVEZPUk1fSU9TKQorCith
bGwgOiBcCisgICAgJChQVUJMSUNfSEVBREVSU19ESVIpL0RPTUdlc3R1cmVFdmVudC5oIFwKKyAg
ICAkKFBSSVZBVEVfSEVBREVSU19ESVIpL0RPTUhUTUxUZXh0QXJlYUVsZW1lbnRQcml2YXRlLmgg
XAorICAgICQoUFVCTElDX0hFQURFUlNfRElSKS9ET01Ub3VjaC5oIFwKKyAgICAkKFBVQkxJQ19I
RUFERVJTX0RJUikvRE9NVG91Y2hFdmVudC5oIFwKKyAgICAkKFBVQkxJQ19IRUFERVJTX0RJUikv
RE9NVG91Y2hMaXN0LmggXAorICAgICQoUFJJVkFURV9IRUFERVJTX0RJUikvRE9NVUlLaXRFeHRl
bnNpb25zLmggXAorICAgICQoUFJJVkFURV9IRUFERVJTX0RJUikvS2V5RXZlbnRDb2Rlc0lPUy5o
IFwKKyAgICAkKFBSSVZBVEVfSEVBREVSU19ESVIpL01lZGlhUGxheWVyUHJveHkuaCBcCisgICAg
JChQUklWQVRFX0hFQURFUlNfRElSKS9QbHVnaW5EYXRhLmggXAorICAgICQoUFJJVkFURV9IRUFE
RVJTX0RJUikvU2Nyb2xsVHlwZXMuaCBcCisgICAgJChQUklWQVRFX0hFQURFUlNfRElSKS9TeXN0
ZW1NZW1vcnkuaCBcCisgICAgJChQUklWQVRFX0hFQURFUlNfRElSKS9XQUtBcHBLaXRTdHVicy5o
IFwKKyAgICAkKFBSSVZBVEVfSEVBREVSU19ESVIpL1dBS1Jlc3BvbmRlci5oIFwKKyAgICAkKFBS
SVZBVEVfSEVBREVSU19ESVIpL1dBS1Njcm9sbFZpZXcuaCBcCisgICAgJChQUklWQVRFX0hFQURF
UlNfRElSKS9XQUtWaWV3LmggXAorICAgICQoUFJJVkFURV9IRUFERVJTX0RJUikvV0FLVmlld1By
aXZhdGUuaCBcCisgICAgJChQUklWQVRFX0hFQURFUlNfRElSKS9XQUtXaW5kb3cuaCBcCisgICAg
JChQUklWQVRFX0hFQURFUlNfRElSKS9XS0NvbnRlbnRPYnNlcnZhdGlvbi5oIFwKKyAgICAkKFBS
SVZBVEVfSEVBREVSU19ESVIpL1dLR3JhcGhpY3MuaCBcCisgICAgJChQUklWQVRFX0hFQURFUlNf
RElSKS9XS1R5cGVzLmggXAorICAgICQoUFJJVkFURV9IRUFERVJTX0RJUikvV0tVdGlsaXRpZXMu
aCBcCisgICAgJChQUklWQVRFX0hFQURFUlNfRElSKS9XS1ZpZXcuaCBcCisgICAgJChQUklWQVRF
X0hFQURFUlNfRElSKS9XZWJBdXRvY2FwaXRhbGl6ZS5oIFwKKyAgICAkKFBSSVZBVEVfSEVBREVS
U19ESVIpL1dlYkNvcmVGcmFtZVZpZXcuaCBcCisgICAgJChQUklWQVRFX0hFQURFUlNfRElSKS9X
ZWJDb3JlVGhyZWFkLmggXAorICAgICQoUFJJVkFURV9IRUFERVJTX0RJUikvV2ViQ29yZVRocmVh
ZE1lc3NhZ2UuaCBcCisgICAgJChQUklWQVRFX0hFQURFUlNfRElSKS9XZWJDb3JlVGhyZWFkUnVu
LmggXAorICAgICQoUFJJVkFURV9IRUFERVJTX0RJUikvV2ViRXZlbnQuaCBcCisgICAgJChQUklW
QVRFX0hFQURFUlNfRElSKS9XZWJFdmVudFJlZ2lvbi5oIFwKKworZW5kaWYKKwogUkVQTEFDRV9S
VUxFUyA9IC1lIHMvXDxXZWJDb3JlL1w8V2ViS2l0LyAtZSBzL0RPTURPTUltcGxlbWVudGF0aW9u
L0RPTUltcGxlbWVudGF0aW9uLwogSEVBREVSX01JR1JBVEVfQ01EID0gc2VkICQoUkVQTEFDRV9S
VUxFUykgJDwgPiAkQAogUFVCTElDX0hFQURFUl9DSEVDS19DTUQgPSBAaWYgZ3JlcCAtcSAiQVZB
SUxBQkxFLipUQkQiICIkPCI7IHRoZW4gbGluZT0kJChhd2sgIi9BVkFJTEFCTEUuKlRCRC8geyBw
cmludCBGTlI7IGV4aXQgfSIgIiQ8IiApOyBlY2hvICIkPDokJGxpbmU6IGVycm9yOiBBIGNsYXNz
IHdpdGhpbiBhIHB1YmxpYyBoZWFkZXIgaGFzIHVuc3BlY2lmaWVkIGF2YWlsYWJpbGl0eS4iOyBm
YWxzZTsgZmkKIAoraWZlcSAoJChmaW5kc3RyaW5nIFdURl9QTEFURk9STV9JT1MsJChGRUFUVVJF
X0RFRklORVMpKSwgV1RGX1BMQVRGT1JNX0lPUykKKworJChQUklWQVRFX0hFQURFUlNfRElSKS9X
QUtTY3JvbGxWaWV3LmggOiBXQUtTY3JvbGxWaWV3LmggTWlncmF0ZUhlYWRlcnMubWFrZQorCWNh
dCAkPCAkKFBST0NFU1NfSEVBREVSX0ZPUl9NQUNPU1hfVEFSR0VUX0NNRCkgPiAkQAorCitlbmRp
ZgorCiAkKFBVQkxJQ19IRUFERVJTX0RJUikvRE9NJSA6IERPTURPTSUgTWlncmF0ZUhlYWRlcnMu
bWFrZQogCSQoUFVCTElDX0hFQURFUl9DSEVDS19DTUQpCiAJJChIRUFERVJfTUlHUkFURV9DTUQp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9zY3J1Yi1pZmRlZnMucGwgYi9Tb3VyY2Uv
V2ViS2l0L21hYy9zY3J1Yi1pZmRlZnMucGwKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGNiOWQ4MTE3YTg2MGViODMx
MmIxZjkyOGI2ZWM1N2Q5OTlmZjkyYwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQv
bWFjL3NjcnViLWlmZGVmcy5wbApAQCAtMCwwICsxLDMyOCBAQAorIyEvdXNyL2Jpbi9wZXJsIC13
CisjCisjIENvcHlyaWdodCAoQykgMjAwNywgMjAwOCwgMjAwOSwgMjAxMCwgMjAxMSBBcHBsZSBJ
bmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisj
IGFyZSBtZXQ6CisjIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAyLiAgUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyMgICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5EIEFO
WQorIyBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRSBJTVBMSUVECisjIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyMgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZCisjIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisjIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyMgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OCisjIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisjIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTCisjIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorCit1c2Ugc3RyaWN0OwordXNlIHdhcm5pbmdzOworCit1c2UgRmlsZTo6QmFz
ZW5hbWU7Cit1c2UgRmlsZTo6RmluZDsKK3VzZSBGaWxlOjpUZW1wIHF3KHRlbXBmaWxlKTsKK3Vz
ZSBHZXRvcHQ6Okxvbmc7CisKK3N1YiBlbmFibGVNYWNyb3MoJCk7CitzdWIgZmVhdHVyZURlZmlu
ZXMoKTsKK3N1YiBmaW5kRmlsZXMoXEApOworc3ViIG5lZ2F0ZU1hY3JvKCQpOworc3ViIHByb2Nl
c3MoJCk7CisKK215ICRzaG93SGVscCA9IDA7CitteSAkYmxhbmtMaW5lczsKK215ICR2ZXJib3Nl
ID0gMDsKKworbXkgJHJlc3VsdCA9IEdldE9wdGlvbnMoCisgICAgImhlbHAiICAgICAgICA9PiBc
JHNob3dIZWxwLAorICAgICJibGFuay1saW5lcyIgPT4gXCRibGFua0xpbmVzLAorICAgICJ2ZXJi
b3NlIiAgICAgPT4gXCR2ZXJib3NlLAorKTsKK2lmICghJHJlc3VsdCB8fCAkc2hvd0hlbHAgfHwg
IUBBUkdWKSB7CisgICAgcHJpbnQgU1RERVJSIGJhc2VuYW1lKCQwKSAuICIgWy1ofC0taGVscF0g
Wy0tYmxhbmstbGluZXNdIFstdnwtLXZlcmJvc2VdIGRpcjEgW2RpcjIgLi4uXVxuIjsKKyAgICBl
eGl0IDE7Cit9CisKK215IEBrZWVwTWFjcm9zID0gKGZlYXR1cmVEZWZpbmVzKCksIGVuYWJsZU1h
Y3JvcygxKSk7CitteSBAZGVsZXRlTWFjcm9zID0gKGVuYWJsZU1hY3JvcygwKSk7CisKK2RpZSAi
UExBVEZPUk1fTkFNRSBlbnZpcm9ubWVudCB2YXJpYWJsZSBub3QgZGVmaW5lZCIgaWYgIWV4aXN0
cyAkRU5We1BMQVRGT1JNX05BTUV9IG9yICEkRU5We1BMQVRGT1JNX05BTUV9OworCitpZiAoJEVO
VntQTEFURk9STV9OQU1FfSBlcSAibWFjb3N4IikgeworICAgIHB1c2ggQGRlbGV0ZU1hY3Jvcywg
IlBMQVRGT1JNKElPUykiLCAiUExBVEZPUk0oSU9TX1NJTVVMQVRPUikiLCAiRU5BQkxFKElPU19H
RVNUVVJFX0VWRU5UUykiOworfSBlbHNpZiAoJEVOVntQTEFURk9STV9OQU1FfSBlcSAiaXBob25l
b3MiKSB7CisgICAgcHVzaCBAa2VlcE1hY3JvcywgIlBMQVRGT1JNKElPUykiOworICAgIHB1c2gg
QGRlbGV0ZU1hY3JvcywgIlBMQVRGT1JNKElPU19TSU1VTEFUT1IpIjsKK30gZWxzaWYgKCRFTlZ7
UExBVEZPUk1fTkFNRX0gZXEgImlwaG9uZXNpbXVsYXRvciIpIHsKKyAgICBwdXNoIEBrZWVwTWFj
cm9zLCAiUExBVEZPUk0oSU9TKSIsICJQTEFURk9STShJT1NfU0lNVUxBVE9SKSI7Cit9IGVsc2Ug
eworICAgIGRpZSAiVW5rbm93biBQTEFURk9STV9OQU1FID0gJEVOVntQTEFURk9STV9OQU1FfSI7
Cit9CisKK215ICVrZWVwX2lmZGVmcyA9IG1hcCB7ICRfID0+IDEgfSBAa2VlcE1hY3JvcywgKG1h
cCB7IG5lZ2F0ZU1hY3JvKCRfKSB9IEBkZWxldGVNYWNyb3MpOworbXkgJWRlbGV0ZV9pZmRlZnMg
PSBtYXAgeyAkXyA9PiAxIH0gQGRlbGV0ZU1hY3JvcywgKG1hcCB7IG5lZ2F0ZU1hY3JvKCRfKSB9
IEBrZWVwTWFjcm9zKTsKKworbXkgJGtlZXBfaWZkZWZzX3JlZ2V4ID0gam9pbigifCIsIG1hcCB7
IHF1b3RlbWV0YSgkXykgfSBrZXlzICVrZWVwX2lmZGVmcyk7CitteSAkZGVsZXRlX2lmZGVmc19y
ZWdleCA9IGpvaW4oInwiLCBtYXAgeyBxdW90ZW1ldGEoJF8pIH0ga2V5cyAlZGVsZXRlX2lmZGVm
cyk7CisKK215IEBmaWxlczsKK2ZpbmRGaWxlcyhAQVJHVik7CisKK2ZvciBteSAkZmlsZSAoQGZp
bGVzKSB7CisgICAgcHJpbnQgIlByb2Nlc3NpbmcgJGZpbGUuLi5cbiIgaWYgJHZlcmJvc2U7Cisg
ICAgcHJvY2VzcygkZmlsZSk7Cit9CisKK3ByaW50ICJEb25lIVxuIiBpZiAkdmVyYm9zZTsKKwor
ZXhpdCAwOworCitzdWIgZW5hYmxlTWFjcm9zKCQpCit7CisgICAgbXkgKCRtYWNyb1ZhbHVlKSA9
IEBfOworICAgIG15IEByZXN1bHQgPSAoKTsKKworICAgIGlmICgkbWFjcm9WYWx1ZSBuZSAiMCIg
YW5kICRtYWNyb1ZhbHVlIG5lICIxIikgeworICAgICAgICB3YXJuICJJbnZhbGlkIHZhbHVlIHBh
c3NlZCB0byBlbmFibGVNYWNyb3MoKSI7CisgICAgICAgIHJldHVybiBAcmVzdWx0OworICAgIH0K
KworICAgIGlmICghZXhpc3RzICRFTlZ7U0RLUk9PVH0gb3IgISRFTlZ7U0RLUk9PVH0pIHsKKyAg
ICAgICAgd2FybiAiU0RLUk9PVCBlbnZpcm9ubWVudCB2YXJpYWJsZSBub3QgZm91bmQiOworICAg
ICAgICByZXR1cm4gQHJlc3VsdDsKKyAgICB9CisKKyAgICBjaG9tcCAobXkgJGNjID0gYHhjcnVu
IC1maW5kIGNjIC1zZGsgJEVOVntTREtST09UfWApOworICAgIG15IEBhcmdzID0gcXcoLUUgLWRN
IC1pbmNsdWRlIHd0Zi9QbGF0Zm9ybS5oKTsKKyAgICAjIFNldCBmcmFtZXdvcmsgc2VhcmNoIHBh
dGhzIHRvIGZpbmQgPEphdmFTY3JpcHRDb3JlL1BsYXRmb3JtLmg+LiAgV2l0aG91dCB0aGVzZSwg
Y2MKKyAgICAjIGZpbmRzIC9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0phdmFTY3JpcHRDb3Jl
LmZyYW1ld29yay9Qcml2YXRlSGVhZGVycy9QbGF0Zm9ybS5oCisgICAgIyBvciBjb21wbGFpbnMg
aWYgeW91IGRvbid0IGhhdmUgdGhhdCBpbnN0YWxsZWQuICBXZSBzZWFyY2ggQlVJTFRfUFJPRFVD
VFNfRElSIGZpcnN0CisgICAgIyBmb3IgbG9jYWwgZGV2ZWxvcGVyIGJ1aWxkcywgdGhlbiB0aGUg
aW5zdGFsbGF0aW9uIHBhdGggZm9yIEImSSBidWlsZHMuCisgICAgcHVzaChAYXJncywgIi1GIiAu
ICRFTlZ7QlVJTFRfUFJPRFVDVFNfRElSfSkgaWYgJEVOVntCVUlMVF9QUk9EVUNUU19ESVJ9Owor
ICAgIHB1c2goQGFyZ3MsICItSSIgLiAkRU5We0JVSUxUX1BST0RVQ1RTX0RJUn0gLiAiL3Vzci9s
b2NhbC9pbmNsdWRlIikgaWYgJEVOVntCVUlMVF9QUk9EVUNUU19ESVJ9OworICAgIHB1c2goQGFy
Z3MsICItSSIgLiAkRU5We0JVSUxUX1BST0RVQ1RTX0RJUn0gLiAkRU5We1NES1JPT1R9IC4gIi91
c3IvbG9jYWwvaW5jbHVkZSIpIGlmICRFTlZ7QlVJTFRfUFJPRFVDVFNfRElSfTsKKyAgICAjIFhj
b2RlIDMuMSBpcyByZXF1aXJlZCBmb3IgU0RLUk9PVCB0byBiZSBzZXQuCisgICAgIyBYY29kZSAz
LjEgaXMgcmVxdWlyZWQgZm9yIFNES1JPT1QgdG8gYmUgc2V0LgorICAgIGlmIChleGlzdHMgJEVO
VntTWVNURU1fTElCUkFSWV9ESVJ9ICYmICRFTlZ7U1lTVEVNX0xJQlJBUllfRElSfSkgeworICAg
ICAgICBteSAkZnJhbWV3b3JrU2VhcmNoUGF0aCA9ICRFTlZ7U0RLUk9PVH0gLiAkRU5We1NZU1RF
TV9MSUJSQVJZX0RJUn07CisgICAgICAgIGlmICgkRU5We1BMQVRGT1JNX05BTUV9IGVxICJpcGhv
bmVvcyIgfHwgJEVOVntQTEFURk9STV9OQU1FfSBlcSAiaXBob25lc2ltdWxhdG9yIikgeworICAg
ICAgICAgICAgJGZyYW1ld29ya1NlYXJjaFBhdGggLj0gIi9Qcml2YXRlRnJhbWV3b3JrcyI7Cisg
ICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAkZnJhbWV3b3JrU2VhcmNoUGF0aCAuPSAiL0Zy
YW1ld29ya3MiOworICAgICAgICB9CisgICAgICAgIHB1c2goQGFyZ3MsICItRiIgLiAkZnJhbWV3
b3JrU2VhcmNoUGF0aCk7CisgICAgfQorCisgICAgcHVzaChAYXJncywgIi1JIiAuICRFTlZ7QlVJ
TFRfUFJPRFVDVFNfRElSfSAuICRFTlZ7U0RLUk9PVH0gLiAiL3Vzci9sb2NhbC9pbmNsdWRlIikg
aWYgJEVOVntCVUlMVF9QUk9EVUNUU19ESVJ9OworICAgIHB1c2goQGFyZ3MsICItSSIgLiAkRU5W
e1NES1JPT1R9IC4gIi91c3IvbG9jYWwvaW5jbHVkZSIpOworCisgICAgIyBNYWtlIHN1cmUgY2Mg
a25vd3Mgd2hpY2ggU0RLIHdlJ3JlIHVzaW5nLgorICAgIHB1c2goQGFyZ3MsICItaXN5c3Jvb3Qi
LCAkRU5We1NES1JPT1R9KTsKKworICAgICMgV2Ugb25seSBuZWVkIG9uZSAtYXJjaCBmbGFnIHdo
ZW4gcHJlcHJvY2Vzc2luZyB3aXRoIC1pc3lzcm9vdCBzZXQuCisgICAgbXkgQGFyY2hzID0gZ3Jl
cCB7ICRfIH0gc3BsaXQoL1xzKy8sICRFTlZ7QVJDSFN9KTsKKyAgICBwdXNoKEBhcmdzLCAiLWFy
Y2giLCAkYXJjaHNbMF0pOworCisgICAgIyBDb21waWxlIHdpdGggc2FtZSBGZWF0dXJlRGVmaW5l
cyBpdCB3b3VsZCBub3JtYWxseSBiZSBjb21waWxlZCB3aXRoLgorICAgIG15IEBmZWF0dXJlRGVm
aW5lcyA9IGZlYXR1cmVEZWZpbmVzKCk7CisgICAgZm9yZWFjaCAoQGZlYXR1cmVEZWZpbmVzKSB7
CisgICAgICAgIHB1c2goQGFyZ3MsICItRCRfIikgaWYgJF8gPX4gL15FTkFCTEVfLzsKKyAgICB9
CisKKyAgICBvcGVuKENDLCAiLXwiLCBxcXtlY2hvICIiIHwgIiRjYyIgfSAuIGpvaW4oIiAiLCBA
YXJncywgIi0iKSkgb3IgZGllICIkISI7CisgICAgd2hpbGUgKG15ICRtYWNybyA9IDxDQz4pIHsK
KyAgICAgICAgaWYgKCRtYWNybyA9fiAvXiNkZWZpbmUgKEVOQUJMRV9bQS1aX10rKSAkbWFjcm9W
YWx1ZSQvIHx8ICRtYWNybyA9fiAvXiNkZWZpbmUgKFdURl9VU0VfW0EtWl9dKykgJG1hY3JvVmFs
dWUkLykgeworICAgICAgICAgICAgcHVzaCBAcmVzdWx0LCAkMTsKKyAgICAgICAgfQorICAgIH0K
KyAgICBjbG9zZShDQykgb3IgZGllICIkISI7CisKKyAgICBteSBAbWFjcm9zID0gZ3JlcCB7IG0v
XkVOQUJMRV8oLispJC8gfHwgbS9eV1RGX1VTRV8oLispJC8gfHwgKCkgfSBAcmVzdWx0OworICAg
IEByZXN1bHQgPSAoQG1hY3Jvcyk7CisgICAgcHVzaChAcmVzdWx0LCBncmVwIHsgcy9eRU5BQkxF
XyguKykkL0VOQUJMRSgkMSkvIHx8IHMvXldURl9VU0VfKC4rKSQvVVNFKCQxKS8gfHwgKCkgfSBA
bWFjcm9zKTsKKyAgICByZXR1cm4gQHJlc3VsdDsKK30KKworc3ViIGZlYXR1cmVEZWZpbmVzKCkK
K3sKKyAgICBteSBAZmVhdHVyZXMgPSBncmVwIHsgJF8gfHwgKCkgfSBzcGxpdCgvXHMrLywgJEVO
VntGRUFUVVJFX0RFRklORVN9KTsKKyAgICBteSBAcmVzdWx0cyA9IChAZmVhdHVyZXMpOworICAg
IHB1c2goQHJlc3VsdHMsIGdyZXAgeyBzL15FTkFCTEVfKC4rKSQvRU5BQkxFKCQxKS8gfHwgKCkg
fSBAZmVhdHVyZXMpOworICAgIHJldHVybiBAcmVzdWx0czsKK30KKworc3ViIGZpbmRGaWxlcyhc
QCkKK3sKKyAgICBteSAoJGRpcnMpID0gQF87CisKKyAgICBteSAkd2FudGVkID0gc3ViIHsKKyAg
ICAgICAgaWYgKC1mICIkRmlsZTo6RmluZDo6bmFtZSIpIHsKKyAgICAgICAgICAgIG15ICRjb250
ZW50czsKKyAgICAgICAgICAgIG9wZW4oRklMRSwgIjwiLCAkRmlsZTo6RmluZDo6bmFtZSkgb3Ig
ZGllICIkISI7CisgICAgICAgICAgICB7IGxvY2FsICQvID0gdW5kZWY7ICRjb250ZW50cyA9IDxG
SUxFPjsgfQorICAgICAgICAgICAgY2xvc2UoRklMRSkgb3IgZGllICIkISI7CisgICAgICAgICAg
ICBpZiAoJGNvbnRlbnRzID1+IC8ka2VlcF9pZmRlZnNfcmVnZXgvbSB8fCAkY29udGVudHMgPX4g
LyRkZWxldGVfaWZkZWZzX3JlZ2V4L20pIHsKKyAgICAgICAgICAgICAgICBwdXNoKEBmaWxlcywg
JEZpbGU6OkZpbmQ6Om5hbWUpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgcmV0dXJuOwor
ICAgICAgICB9CisgICAgICAgICRGaWxlOjpGaW5kOjpwcnVuZSA9IDEgaWYgKC1kICRGaWxlOjpG
aW5kOjpuYW1lICYmIGJhc2VuYW1lKCRGaWxlOjpGaW5kOjpuYW1lKSBlcSAiLnN2biIpOworICAg
IH07CisKKyAgICBmaW5kKHsgd2FudGVkID0+ICR3YW50ZWQsIG5vX2NoZGlyID0+IDEgfSwgQCRk
aXJzKTsKK30KKworc3ViIG5lZ2F0ZU1hY3JvKCQpCit7CisgICAgbXkgKCRtYWNybykgPSBAXzsK
KyAgICByZXR1cm4gc3Vic3RyKCRtYWNybywgMSkgaWYgc3Vic3RyKCRtYWNybywgMCwgMSkgZXEg
IiEiOworICAgIHJldHVybiAiISIgLiAkbWFjcm87Cit9CisKK3N1YiBwcm9jZXNzKCQpCit7Cisg
ICAgbXkgKCRmaWxlKSA9IEBfOworCisgICAgbXkgKCRGSCwgJHRlbXBGaWxlKSA9IHRlbXBmaWxl
KGJhc2VuYW1lKCQwKSAuICItWFhYWFhYWFgiLCBESVIgPT4gJEVOVntURU1QX0RJUn0gfHwgIi4i
KTsKKyAgICBzZWxlY3QoJEZIKTsKKworICAgIG15IEBpZmRlZlN0YWNrID0gKCIiKTsKKyAgICBt
eSBAd3JpdGVTdGFjayA9ICgxKTsKKworICAgIG15ICRkZWZpbmVkX2NwbHVzcGx1cyA9IHF1b3Rl
bWV0YSgiZGVmaW5lZChfX2NwbHVzcGx1cykiKTsKKworICAgIG9wZW4oSU4sICRmaWxlKSB8fCBk
aWUgJCE7CisKKyAgICB3aGlsZSAobXkgJGwgPSA8SU4+KSB7CisgICAgICAgIGlmICgkbCA9fiBt
L15ccyojXHMqKGluY2x1ZGV8aW1wb3J0KVxzKyg8KHd0ZnxKYXZhU2NyaXB0Q29yZSlcL1BsYXRm
b3JtLmg+KVxzKiQvKSB7CisgICAgICAgICAgICBwcmludCBTVERFUlIgIldBUk5JTkc6IFNob3Vs
ZCBub3QgIyQxICQyIGluICRmaWxlLlxuIjsKKyAgICAgICAgfQorICAgICAgICBpZiAoJGwgPX4g
bS9eKFxzKiNccyppZlxzKykoKChbXlxzXSspXHMrXCZcJlxzKykrKSooJGRlbGV0ZV9pZmRlZnNf
cmVnZXgpXHMqKChcJlwmXHMrKFteXHNdKylccyopKykqJC8pIHsKKyAgICAgICAgICAgIHB1c2go
QGlmZGVmU3RhY2ssICQ1KTsKKyAgICAgICAgICAgIHB1c2goQHdyaXRlU3RhY2ssIDApOworICAg
ICAgICAgICAgaWYgKCRibGFua0xpbmVzKSB7CisgICAgICAgICAgICAgICAgcHJpbnQgIlxuIjsK
KyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBlbHNpZiAoJGwgPX4gbS9eKFxzKiNc
cyppZlxzKykoKChbXlxzXSspXHMrXHxcfFxzKykrKSooJGtlZXBfaWZkZWZzX3JlZ2V4KVxzKigo
XHxcfFxzKyhbXlxzXSspXHMqKSspKiQvKSB7CisgICAgICAgICAgICBwdXNoKEBpZmRlZlN0YWNr
LCAkNSk7CisgICAgICAgICAgICBwdXNoKEB3cml0ZVN0YWNrLCAkd3JpdGVTdGFja1skI3dyaXRl
U3RhY2tdICYmIDEpOworICAgICAgICAgICAgaWYgKCRibGFua0xpbmVzKSB7CisgICAgICAgICAg
ICAgICAgcHJpbnQgIlxuIjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBlbHNp
ZiAoJGwgPX4gbS9eKFxzKiNccyppZlxzKykoJGRlbGV0ZV9pZmRlZnNfcmVnZXgpXHMrXHxcfFxz
KyhbXlxzXSspXHMqJC8pIHsKKyAgICAgICAgICAgIHB1c2goQGlmZGVmU3RhY2ssICQzKTsKKyAg
ICAgICAgICAgIHB1c2goQHdyaXRlU3RhY2ssICR3cml0ZVN0YWNrWyQjd3JpdGVTdGFja10gJiYg
MSk7CisgICAgICAgICAgICBwcmludCAiJDEkM1xuIjsKKyAgICAgICAgfQorICAgICAgICBlbHNp
ZiAoJGwgPX4gbS9eKFxzKiNccyppZlxzKykoJGtlZXBfaWZkZWZzX3JlZ2V4KVxzK1wmXCZccyso
W15cc10rKVxzKiQvKSB7CisgICAgICAgICAgICBwdXNoKEBpZmRlZlN0YWNrLCAkMyk7CisgICAg
ICAgICAgICBwdXNoKEB3cml0ZVN0YWNrLCAkd3JpdGVTdGFja1skI3dyaXRlU3RhY2tdICYmIDEp
OworICAgICAgICAgICAgcHJpbnQgIiQxJDNcbiI7CisgICAgICAgIH0KKyAgICAgICAgZWxzaWYg
KCRsID1+IG0vXlxzKiNccyppZihkZWYpP1xzKygka2VlcF9pZmRlZnNfcmVnZXgpXHMqJC8pIHsK
KyAgICAgICAgICAgIHB1c2goQGlmZGVmU3RhY2ssICQyKTsKKyAgICAgICAgICAgIHB1c2goQHdy
aXRlU3RhY2ssICR3cml0ZVN0YWNrWyQjd3JpdGVTdGFja10gJiYgMSk7CisgICAgICAgICAgICBp
ZiAoJGJsYW5rTGluZXMpIHsKKyAgICAgICAgICAgICAgICBwcmludCAiXG4iOworICAgICAgICAg
ICAgfQorICAgICAgICB9CisgICAgICAgIGVsc2lmICgkbCA9fiBtL15ccyojXHMqaWYobmRlZlxz
K3xccytcIVxzKikoJGtlZXBfaWZkZWZzX3JlZ2V4KVxzKiQvKSB7CisgICAgICAgICAgICBwdXNo
KEBpZmRlZlN0YWNrLCBuZWdhdGVNYWNybygkMikpOworICAgICAgICAgICAgcHVzaChAd3JpdGVT
dGFjaywgMCk7CisgICAgICAgICAgICBpZiAoJGJsYW5rTGluZXMpIHsKKyAgICAgICAgICAgICAg
ICBwcmludCAiXG4iOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGVsc2lmICgk
bCA9fiBtL15ccyojXHMqaWZccysoJGRlbGV0ZV9pZmRlZnNfcmVnZXgpXHMqJC8pIHsKKyAgICAg
ICAgICAgIHB1c2goQGlmZGVmU3RhY2ssICQxKTsKKyAgICAgICAgICAgIHB1c2goQHdyaXRlU3Rh
Y2ssIDApOworICAgICAgICAgICAgaWYgKCRibGFua0xpbmVzKSB7CisgICAgICAgICAgICAgICAg
cHJpbnQgIlxuIjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBlbHNpZiAoJGwg
PX4gbS9eXHMqI1xzKmlmKGRlZik/XHMrKC4rKVxzKiQvKSB7CisgICAgICAgICAgICBwdXNoKEBp
ZmRlZlN0YWNrLCAkMik7CisgICAgICAgICAgICBwdXNoKEB3cml0ZVN0YWNrLCAkd3JpdGVTdGFj
a1skI3dyaXRlU3RhY2tdICYmIDEpOworICAgICAgICAgICAgaWYgKCR3cml0ZVN0YWNrWyQjd3Jp
dGVTdGFja10pIHsKKyAgICAgICAgICAgICAgICBwcmludCAkbDsKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgIGVsc2lmICgkYmxhbmtMaW5lcykgeworICAgICAgICAgICAgICAgIHByaW50ICJc
biI7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgZWxzaWYgKCRsID1+IG0vXlxz
KiNccyppZihuZGVmXHMrfFxzK1whXHMqKSguKylccyokLykgeworICAgICAgICAgICAgcHVzaChA
aWZkZWZTdGFjaywgbmVnYXRlTWFjcm8oJDIpKTsKKyAgICAgICAgICAgIHB1c2goQHdyaXRlU3Rh
Y2ssICR3cml0ZVN0YWNrWyQjd3JpdGVTdGFja10gJiYgMSk7CisgICAgICAgICAgICBpZiAoJHdy
aXRlU3RhY2tbJCN3cml0ZVN0YWNrXSkgeworICAgICAgICAgICAgICAgIHByaW50ICRsOworICAg
ICAgICAgICAgfQorICAgICAgICAgICAgZWxzaWYgKCRibGFua0xpbmVzKSB7CisgICAgICAgICAg
ICAgICAgcHJpbnQgIlxuIjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBlbHNp
ZiAoJGwgPX4gbS9eXHMqI1xzKmVsc2VccyovKSB7CisgICAgICAgICAgICBteSAkdG9wID0gJGlm
ZGVmU3RhY2tbJCNpZmRlZlN0YWNrXTsKKyAgICAgICAgICAgIGlmICgkd3JpdGVTdGFja1skI3dy
aXRlU3RhY2tdICYmICEgZXhpc3RzICRrZWVwX2lmZGVmc3skdG9wfSAmJiAhIGV4aXN0cyAkZGVs
ZXRlX2lmZGVmc3skdG9wfSkgeworICAgICAgICAgICAgICAgIHByaW50ICRsOworICAgICAgICAg
ICAgfQorICAgICAgICAgICAgZWxzaWYgKCRibGFua0xpbmVzKSB7CisgICAgICAgICAgICAgICAg
cHJpbnQgIlxuIjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgICRpZmRlZlN0YWNrWyQjaWZk
ZWZTdGFja10gPSBuZWdhdGVNYWNybygkdG9wKTsKKyAgICAgICAgICAgIGlmIChleGlzdHMgJGtl
ZXBfaWZkZWZzeyRpZmRlZlN0YWNrWyQjaWZkZWZTdGFja119KSB7CisgICAgICAgICAgICAgICAg
cG9wKEB3cml0ZVN0YWNrKTsKKyAgICAgICAgICAgICAgICBwdXNoKEB3cml0ZVN0YWNrLCAkd3Jp
dGVTdGFja1skI3dyaXRlU3RhY2tdICYmIDEpOworICAgICAgICAgICAgfQorICAgICAgICAgICAg
ZWxzaWYgKGV4aXN0cyAkZGVsZXRlX2lmZGVmc3skaWZkZWZTdGFja1skI2lmZGVmU3RhY2tdfSkg
eworICAgICAgICAgICAgICAgIHBvcChAd3JpdGVTdGFjayk7CisgICAgICAgICAgICAgICAgcHVz
aChAd3JpdGVTdGFjaywgMCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgZWxz
aWYgKCRsID1+IG0vXlxzKiNccyplbmRpZlxzKi8pIHsKKyAgICAgICAgICAgIG15ICR0b3AgPSBw
b3AoQGlmZGVmU3RhY2spOworICAgICAgICAgICAgaWYgKCR0b3AgPX4gbS8kZGVmaW5lZF9jcGx1
c3BsdXMvKSB7CisgICAgICAgICAgICAgICAgJGwgPSAiI2VuZGlmXG4iOworICAgICAgICAgICAg
fQorICAgICAgICAgICAgbXkgJHRvcFdyaXRlU3RhY2sgPSBwb3AoQHdyaXRlU3RhY2spOworICAg
ICAgICAgICAgaWYgKCR0b3BXcml0ZVN0YWNrICYmICEgZXhpc3RzICRrZWVwX2lmZGVmc3skdG9w
fSAmJiAhIGV4aXN0cyAkZGVsZXRlX2lmZGVmc3skdG9wfSkgeworICAgICAgICAgICAgICAgIHBy
aW50ICRsOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzaWYgKCRibGFua0xpbmVzKSB7
CisgICAgICAgICAgICAgICAgcHJpbnQgIlxuIjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQor
ICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIGlmICgkd3JpdGVTdGFja1skI3dyaXRlU3RhY2td
KSB7CisgICAgICAgICAgICAgICAgcHJpbnQgJGw7CisgICAgICAgICAgICB9CisgICAgICAgICAg
ICBlbHNpZiAoJGJsYW5rTGluZXMpIHsKKyAgICAgICAgICAgICAgICBwcmludCAiXG4iOworICAg
ICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorCisgICAgY2xvc2UoSU4pOworICAgIGNsb3Nl
KCRGSCk7CisgICAgc2VsZWN0KFNURE9VVCk7CisKKyAgICB1bmxpbmsoJGZpbGUpIHx8IGRpZSAi
JCEiOworICAgIHN5c3RlbShxdyhtdiAtZiksICR0ZW1wRmlsZSwgJGZpbGUpOworICAgIGlmICgk
PyA+PiA4ICE9IDApIHsKKyAgICAgICAgZGllICJDb3VsZCBub3QgcmVuYW1lICR0ZW1wRmlsZSB0
byAkZmlsZTogJCEiOworICAgIH0KKworICAgIG15ICRmaWxlQ291bnQgPSBjaG1vZCAwNjQ0LCAk
ZmlsZTsKKyAgICBpZiAoJGZpbGVDb3VudCAhPSAxKSB7CisgICAgICAgIGRpZSAiQ291bGQgbm90
IGNobW9kIDA2NDQgJGZpbGU6ICQhIjsKKyAgICB9Cit9CisKZGlmZiAtLWdpdCBhL1Rvb2xzL0No
YW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCBkMDZmOTAwYThiZmJiZmJmNjk1ZjVhMDZl
NTMzNjUzNDRjMzNjMmUxLi45MmQ3NWI3ZTZhYjNhMDI2ODIyOTE4ZGUzYWFmN2FjMWE3OTAyODVj
IDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMTMgQEAKKzIwMTQtMDEtMDkgIERhbmllbCBCYXRlcyAgPGRhYmF0ZXNAYXBwbGUuY29t
PgorCisgICAgICAgIFtpT1NdIFVwc3RyZWFtIFdlYkNvcmUgYW5kIFRvb2xzIG1pc2NlbGxhbmVv
dXMgY2hhbmdlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTI2Njk4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgKiBTY3JpcHRzL2NoZWNrLWZvci1pbmFwcHJvcHJpYXRlLW9iamMtY2xhc3MtbmFtZXM6Cisg
ICAgICAgICogU2NyaXB0cy9jaGVjay1mb3Itd2Via2l0LWZyYW1ld29yay1pbmNsdWRlLWNvbnNp
c3RlbmN5OgorCiAyMDE0LTAxLTA5ICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdh
bGlhLmNvbT4KIAogICAgICAgICBbU09VUF0gUGFydGlhbCBmaWxlIGxlZnQgb24gZGlzayBhZnRl
ciBhIGRvd25sb2FkIGZhaWxzIG9yIGlzIGNhbmNlbGxlZCBpbiBXZWJLaXQyCmRpZmYgLS1naXQg
YS9Ub29scy9TY3JpcHRzL2NoZWNrLWZvci1pbmFwcHJvcHJpYXRlLW9iamMtY2xhc3MtbmFtZXMg
Yi9Ub29scy9TY3JpcHRzL2NoZWNrLWZvci1pbmFwcHJvcHJpYXRlLW9iamMtY2xhc3MtbmFtZXMK
aW5kZXggNWVlODQxMGIwNzk2NGZmNjQ4YTBjYTNjM2VmNDNmMGQ1ZjFlNzBkNC4uMWRjYWZkMWY4
MzNhMmZhODk1YTU4ZmEzNzkyODk5OTEzNDkxNzcxMyAxMDA3NTUKLS0tIGEvVG9vbHMvU2NyaXB0
cy9jaGVjay1mb3ItaW5hcHByb3ByaWF0ZS1vYmpjLWNsYXNzLW5hbWVzCisrKyBiL1Rvb2xzL1Nj
cmlwdHMvY2hlY2stZm9yLWluYXBwcm9wcmlhdGUtb2JqYy1jbGFzcy1uYW1lcwpAQCAtNzgsNiAr
NzgsMzQgQEAgaWYgKCFkZWZpbmVkICRleGVjdXRhYmxlUGF0aEFnZSB8fCAhZGVmaW5lZCAkYnVp
bGRUaW1lc3RhbXBBZ2UgfHwgJGV4ZWN1dGFibGVQYXQKICAgICB9CiAgICAgY2xvc2UgTk07CiAK
KyAgICAjIGJlZ2luIFBMQVRGT1JNKElPUykKKyAgICAjIE9uIGlPUyBwdXQgZXhjZXB0aW9ucyBp
biBwbGFjZSBmb3IgZXhpc3RpbmcgYmFkIG5hbWVzLiBGdXR1cmUgYmFkIG5hbWVzIHdpbGwKKyAg
ICAjIGJlIGNhdWdodCBhbmQgc2hvdWxkIGJlIGZpeGVkIGltbWVkaWF0ZWx5LiBGaXhpbmcgdGhl
c2UgaXMgY292ZXJlZCBieToKKyAgICAjIDxyZGFyOi8vcHJvYmxlbS8xMDM2NTAwOD4gRml4IElu
YXBwcm9wcmlhdGUgT2JqZWN0aXZlLUMgQ2xhc3MgTmFtZXMgZm91bmQgYnkgYnVpbGQgcGhhc2UK
KyAgICBteSAlZXhjZXB0aW9ucyA9ICgKKyAgICAgICAgIyBXZWJDb3JlCisgICAgICAgICJXS1F1
YWRPYmplY3QiID0+IDEsCisgICAgICAgICJUaWxlQ2FjaGVUb21ic3RvbmUiID0+IDEsCisgICAg
ICAgICJUaWxlSG9zdExheWVyIiA9PiAxLAorICAgICAgICAiVGlsZUxheWVyIiA9PiAxLAorICAg
ICAgICAiV0FLUmVzcG9uZGVyIiA9PiAxLAorICAgICAgICAiTlNDdXJzb3IiID0+IDEsCisgICAg
ICAgICJXQUtDbGlwVmlldyIgPT4gMSwKKyAgICAgICAgIldBS1Njcm9sbFZpZXciID0+IDEsCisg
ICAgICAgICJXQUtWaWV3IiA9PiAxLAorICAgICAgICAiV0FLV2luZG93IiA9PiAxLAorICAgICAg
ICAjIFdlYktpdDIKKyAgICAgICAgIlVJV0tSZW1vdGVWaWV3IiA9PiAxLAorICAgICAgICAiVUlX
S1ZpZXciID0+IDEsCisgICAgICAgICJVSVdLVmlld0RhdGEiID0+IDEKKyAgICApOworICAgIG15
IEByZWFsQmFkTmFtZXM7CisgICAgZm9yIG15ICRjbGFzc05hbWUgKEBiYWROYW1lcykgeworICAg
ICAgICBwdXNoKEByZWFsQmFkTmFtZXMsICRjbGFzc05hbWUpIHVubGVzcyBleGlzdHMoJGV4Y2Vw
dGlvbnN7JGNsYXNzTmFtZX0pOworICAgIH0KKyAgICBAYmFkTmFtZXMgPSBAcmVhbEJhZE5hbWVz
OworICAgICMgZW5kIFBMQVRGT1JNKElPUykKKwogICAgIGlmIChAYmFkTmFtZXMpIHsKIAogICAg
ICAgICBteSAkc2hvcnROYW1lID0gJGV4ZWN1dGFibGVQYXRoOwpkaWZmIC0tZ2l0IGEvVG9vbHMv
U2NyaXB0cy9jaGVjay1mb3Itd2Via2l0LWZyYW1ld29yay1pbmNsdWRlLWNvbnNpc3RlbmN5IGIv
VG9vbHMvU2NyaXB0cy9jaGVjay1mb3Itd2Via2l0LWZyYW1ld29yay1pbmNsdWRlLWNvbnNpc3Rl
bmN5CmluZGV4IGNjMTczODI4ODc2ZjY3MWYwNmVjMzJlOWYwZDVlODgzNjA2NzZkZWIuLjMwOGIy
YjQ3NzUxZDVlYTNmZjY1ZWRkZjY0Y2VjNGMwZTAwNDkxMWIgMTAwNzU1Ci0tLSBhL1Rvb2xzL1Nj
cmlwdHMvY2hlY2stZm9yLXdlYmtpdC1mcmFtZXdvcmstaW5jbHVkZS1jb25zaXN0ZW5jeQorKysg
Yi9Ub29scy9TY3JpcHRzL2NoZWNrLWZvci13ZWJraXQtZnJhbWV3b3JrLWluY2x1ZGUtY29uc2lz
dGVuY3kKQEAgLTc4LDYgKzc4LDEwIEBAIGRlZiByZXNvbHZlX2luY2x1ZGUoaGVhZGVyLCBpbmNs
dWRlZF9oZWFkZXIsIHBlcm1pdHRlZF90eXBlcykKICAgICByZXR1cm4KICAgZW5kCiAKKyAgIyBp
T1Mgd2Ugd2FudCB0byBrZWVwIHRoZSBXQUsgaGVhZGVycyBwcml2YXRlLCBldmVuIGlmIGEgcHVi
bGljIGhlYWRlciBpbmNsdWRlcyB0aGVtLAorICAjIHNvIHdlIGFyZSBnb2luZyB0byBub3Qgc2hv
dyB3YXJuaW5ncyBmb3IgV0FLIGhlYWRlcnMuCisgIHJldHVybiBpZiBmcmFtZXdvcmsgPT0gIldl
YktpdCIgYW5kIGluY2x1ZGVkX2hlYWRlcl9uYW1lID1+IC9eV0FLLworCiAgIGhlYWRlcl90eXBl
ID0gJEhFQURFUl9OQU1FU19UT19UWVBFW2luY2x1ZGVkX2hlYWRlcl9uYW1lXQogCiAgIGlmIG5v
dCBoZWFkZXJfdHlwZQo=
</data>
<flag name="review"
          id="244524"
          type_id="1"
          status="+"
          setter="ddkilzer"
    />
          </attachment>
      

    </bug>

</bugzilla>