<?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>123273</bug_id>
          
          <creation_ts>2013-10-24 08:51:55 -0700</creation_ts>
          <short_desc>Stop bringing in the std namespace</short_desc>
          <delta_ts>2013-10-24 18:13:58 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Anders Carlsson">andersca</reporter>
          <assigned_to name="Anders Carlsson">andersca</assigned_to>
          <cc>buildbot</cc>
    
    <cc>commit-queue</cc>
    
    <cc>eflews.bot</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>rego+ews</cc>
    
    <cc>rniwa</cc>
    
    <cc>xan.lopez</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>943135</commentid>
    <comment_count>0</comment_count>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2013-10-24 08:51:55 -0700</bug_when>
    <thetext>Stop bringing in the std namespace</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>943136</commentid>
    <comment_count>1</comment_count>
      <attachid>215069</attachid>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2013-10-24 08:54:56 -0700</bug_when>
    <thetext>Created attachment 215069
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>943138</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-10-24 08:58:05 -0700</bug_when>
    <thetext>Attachment 215069 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/Modules/webaudio/AudioBufferSourceNode.cpp&apos;, u&apos;Source/WebCore/Modules/webaudio/AudioNodeInput.cpp&apos;, u&apos;Source/WebCore/Modules/webaudio/AudioParamTimeline.cpp&apos;, u&apos;Source/WebCore/Modules/webaudio/AudioScheduledSourceNode.cpp&apos;, u&apos;Source/WebCore/Modules/webaudio/AudioSummingJunction.cpp&apos;, u&apos;Source/WebCore/Modules/webaudio/DelayDSPKernel.cpp&apos;, u&apos;Source/WebCore/Modules/webaudio/OfflineAudioDestinationNode.cpp&apos;, u&apos;Source/WebCore/Modules/webaudio/OscillatorNode.cpp&apos;, u&apos;Source/WebCore/Modules/webaudio/PannerNode.cpp&apos;, u&apos;Source/WebCore/Modules/webaudio/WaveShaperDSPKernel.cpp&apos;, u&apos;Source/WebCore/Modules/webdatabase/DatabaseTracker.cpp&apos;, u&apos;Source/WebCore/Modules/websockets/WebSocket.cpp&apos;, u&apos;Source/WebCore/Modules/websockets/WebSocketChannel.cpp&apos;, u&apos;Source/WebCore/Modules/websockets/WebSocketFrame.cpp&apos;, u&apos;Source/WebCore/accessibility/AccessibilityARIAGrid.cpp&apos;, u&apos;Source/WebCore/accessibility/AccessibilityARIAGridCell.cpp&apos;, u&apos;Source/WebCore/accessibility/AccessibilityARIAGridRow.cpp&apos;, u&apos;Source/WebCore/accessibility/AccessibilityList.cpp&apos;, u&apos;Source/WebCore/accessibility/AccessibilityListBox.cpp&apos;, u&apos;Source/WebCore/accessibility/AccessibilityListBoxOption.cpp&apos;, u&apos;Source/WebCore/accessibility/AccessibilityNodeObject.cpp&apos;, u&apos;Source/WebCore/accessibility/AccessibilityObject.cpp&apos;, u&apos;Source/WebCore/accessibility/AccessibilityRenderObject.cpp&apos;, u&apos;Source/WebCore/accessibility/AccessibilityTable.cpp&apos;, u&apos;Source/WebCore/accessibility/AccessibilityTableCell.cpp&apos;, u&apos;Source/WebCore/accessibility/AccessibilityTableColumn.cpp&apos;, u&apos;Source/WebCore/accessibility/AccessibilityTableHeaderContainer.cpp&apos;, u&apos;Source/WebCore/accessibility/AccessibilityTableRow.cpp&apos;, u&apos;Source/WebCore/accessibility/mac/WebAccessibilityObjectWrapperBase.mm&apos;, u&apos;Source/WebCore/accessibility/mac/WebAccessibilityObjectWrapperMac.mm&apos;, u&apos;Source/WebCore/bindings/js/JSCSSStyleDeclarationCustom.cpp&apos;, u&apos;Source/WebCore/bindings/js/JSGeolocationCustom.cpp&apos;, u&apos;Source/WebCore/bindings/js/ScriptController.cpp&apos;, u&apos;Source/WebCore/bindings/js/SerializedScriptValue.cpp&apos;, u&apos;Source/WebCore/css/CSSComputedStyleDeclaration.cpp&apos;, u&apos;Source/WebCore/css/CSSFontSelector.cpp&apos;, u&apos;Source/WebCore/css/CSSGradientValue.cpp&apos;, u&apos;Source/WebCore/css/CSSParser.cpp&apos;, u&apos;Source/WebCore/css/CSSReflectValue.cpp&apos;, u&apos;Source/WebCore/css/DeprecatedStyleBuilder.cpp&apos;, u&apos;Source/WebCore/css/PropertySetCSSStyleDeclaration.cpp&apos;, u&apos;Source/WebCore/css/SVGCSSParser.cpp&apos;, u&apos;Source/WebCore/css/StylePropertySet.cpp&apos;, u&apos;Source/WebCore/css/StyleResolver.cpp&apos;, u&apos;Source/WebCore/dom/CharacterData.cpp&apos;, u&apos;Source/WebCore/dom/ContainerNode.cpp&apos;, u&apos;Source/WebCore/dom/Document.cpp&apos;, u&apos;Source/WebCore/dom/Node.cpp&apos;, u&apos;Source/WebCore/dom/Range.cpp&apos;, u&apos;Source/WebCore/dom/ScriptedAnimationController.cpp&apos;, u&apos;Source/WebCore/dom/StyledElement.cpp&apos;, u&apos;Source/WebCore/dom/Text.cpp&apos;, u&apos;Source/WebCore/dom/ViewportArguments.cpp&apos;, u&apos;Source/WebCore/editing/AlternativeTextController.cpp&apos;, u&apos;Source/WebCore/editing/ApplyStyleCommand.cpp&apos;, u&apos;Source/WebCore/editing/CompositeEditCommand.cpp&apos;, u&apos;Source/WebCore/editing/Editor.cpp&apos;, u&apos;Source/WebCore/editing/EditorCommand.cpp&apos;, u&apos;Source/WebCore/editing/TextIterator.cpp&apos;, u&apos;Source/WebCore/editing/VisibleUnits.cpp&apos;, u&apos;Source/WebCore/editing/htmlediting.cpp&apos;, u&apos;Source/WebCore/editing/markup.cpp&apos;, u&apos;Source/WebCore/fileapi/FileReaderLoader.cpp&apos;, u&apos;Source/WebCore/history/BackForwardList.cpp&apos;, u&apos;Source/WebCore/history/PageCache.cpp&apos;, u&apos;Source/WebCore/html/BaseDateAndTimeInputType.cpp&apos;, u&apos;Source/WebCore/html/FTPDirectoryDocument.cpp&apos;, u&apos;Source/WebCore/html/HTMLAreaElement.cpp&apos;, u&apos;Source/WebCore/html/HTMLElement.cpp&apos;, u&apos;Source/WebCore/html/HTMLFormControlElement.cpp&apos;, u&apos;Source/WebCore/html/HTMLFormElement.cpp&apos;, u&apos;Source/WebCore/html/HTMLImageElement.cpp&apos;, u&apos;Source/WebCore/html/HTMLInputElement.cpp&apos;, u&apos;Source/WebCore/html/HTMLMapElement.cpp&apos;, u&apos;Source/WebCore/html/HTMLMediaElement.cpp&apos;, u&apos;Source/WebCore/html/HTMLSelectElement.cpp&apos;, u&apos;Source/WebCore/html/HTMLSourceElement.cpp&apos;, u&apos;Source/WebCore/html/HTMLTableCellElement.cpp&apos;, u&apos;Source/WebCore/html/HTMLTableElement.cpp&apos;, u&apos;Source/WebCore/html/HTMLTextFormControlElement.cpp&apos;, u&apos;Source/WebCore/html/HTMLTrackElement.cpp&apos;, u&apos;Source/WebCore/html/ImageDocument.cpp&apos;, u&apos;Source/WebCore/html/InputType.cpp&apos;, u&apos;Source/WebCore/html/MediaController.cpp&apos;, u&apos;Source/WebCore/html/NumberInputType.cpp&apos;, u&apos;Source/WebCore/html/RangeInputType.cpp&apos;, u&apos;Source/WebCore/html/SearchInputType.cpp&apos;, u&apos;Source/WebCore/html/StepRange.cpp&apos;, u&apos;Source/WebCore/html/TimeRanges.cpp&apos;, u&apos;Source/WebCore/html/ValidationMessage.cpp&apos;, u&apos;Source/WebCore/html/canvas/CanvasRenderingContext2D.cpp&apos;, u&apos;Source/WebCore/html/canvas/WebGLRenderingContext.cpp&apos;, u&apos;Source/WebCore/html/shadow/MediaControlElements.cpp&apos;, u&apos;Source/WebCore/html/shadow/MediaControlsApple.cpp&apos;, u&apos;Source/WebCore/html/shadow/SliderThumbElement.cpp&apos;, u&apos;Source/WebCore/inspector/ContentSearchUtils.cpp&apos;, u&apos;Source/WebCore/inspector/DOMEditor.cpp&apos;, u&apos;Source/WebCore/inspector/DOMPatchSupport.cpp&apos;, u&apos;Source/WebCore/inspector/InjectedScriptHost.cpp&apos;, u&apos;Source/WebCore/loader/ProgressTracker.cpp&apos;, u&apos;Source/WebCore/loader/cache/CachedImage.cpp&apos;, u&apos;Source/WebCore/page/DOMWindow.cpp&apos;, u&apos;Source/WebCore/page/EventHandler.cpp&apos;, u&apos;Source/WebCore/page/FrameTree.cpp&apos;, u&apos;Source/WebCore/page/FrameView.cpp&apos;, u&apos;Source/WebCore/page/PrintContext.cpp&apos;, u&apos;Source/WebCore/page/SpatialNavigation.cpp&apos;, u&apos;Source/WebCore/page/animation/CSSPropertyAnimation.cpp&apos;, u&apos;Source/WebCore/platform/graphics/FloatRect.cpp&apos;, u&apos;Source/WebCore/platform/graphics/GlyphPageTreeNode.cpp&apos;, u&apos;Source/WebCore/platform/graphics/IntRect.cpp&apos;, u&apos;Source/WebCore/platform/graphics/LayoutRect.cpp&apos;, u&apos;Source/WebCore/platform/graphics/filters/FEMorphology.cpp&apos;, u&apos;Source/WebCore/platform/mac/MemoryPressureHandlerMac.mm&apos;, u&apos;Source/WebCore/platform/text/TextCodecICU.cpp&apos;, u&apos;Source/WebCore/rendering/LineWidth.cpp&apos;, u&apos;Source/WebCore/rendering/RenderBlock.h&apos;, u&apos;Source/WebCore/rendering/RenderFieldset.cpp&apos;, u&apos;Source/WebCore/rendering/RenderFlowThread.cpp&apos;, u&apos;Source/WebCore/rendering/RenderFrameBase.cpp&apos;, u&apos;Source/WebCore/rendering/RenderFrameSet.cpp&apos;, u&apos;Source/WebCore/rendering/RenderSlider.cpp&apos;, u&apos;Source/WebCore/rendering/RenderTableCell.h&apos;, u&apos;Source/WebCore/rendering/RenderTreeAsText.cpp&apos;, u&apos;Source/WebCore/rendering/RootInlineBox.h&apos;, u&apos;Source/WebCore/rendering/mathml/RenderMathMLRow.cpp&apos;, u&apos;Source/WebCore/rendering/mathml/RenderMathMLScripts.cpp&apos;, u&apos;Source/WebCore/rendering/style/RenderStyle.h&apos;, u&apos;Source/WebCore/rendering/style/StyleGeneratedImage.cpp&apos;, u&apos;Source/WebCore/style/StyleFontSizeFunctions.cpp&apos;, u&apos;Source/WebCore/svg/SVGSVGElement.cpp&apos;, u&apos;Source/WebKit/mac/ChangeLog&apos;, u&apos;Source/WebKit/mac/WebView/WebFrameView.mm&apos;, u&apos;Source/WebKit/mac/WebView/WebHTMLView.mm&apos;, u&apos;Source/WebKit/mac/WebView/WebView.mm&apos;]&quot; exit_code: 1
Source/WebCore/platform/graphics/FloatRect.cpp:80:  l is incorrectly named. Don&apos;t use the single letter &apos;l&apos; as an identifier name.  [readability/naming] [4]
Source/WebCore/platform/graphics/IntRect.cpp:64:  l is incorrectly named. Don&apos;t use the single letter &apos;l&apos; as an identifier name.  [readability/naming] [4]
Source/WebCore/platform/graphics/IntRect.cpp:93:  l is incorrectly named. Don&apos;t use the single letter &apos;l&apos; as an identifier name.  [readability/naming] [4]
Total errors found: 3 in 96 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>943142</commentid>
    <comment_count>3</comment_count>
      <attachid>215069</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2013-10-24 09:01:22 -0700</bug_when>
    <thetext>Comment on attachment 215069
Patch

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

&gt; Source/WebCore/Modules/webaudio/AudioScheduledSourceNode.cpp:160
&gt; -    when = max(0.0, when);
&gt; +    when = std::max&lt;double&gt;(0, when);

Inconsistent that you did this here, but not in DelayDSPKernel.cpp.

&gt; Source/WebCore/rendering/LineWidth.cpp:190
&gt; -        newLineWidth = max(0.0f, newLineRight - newLineLeft);
&gt; +        newLineWidth = std::max(0.0f, newLineRight - newLineLeft);

Later in the same file you did this the other way (max&lt;float&gt;).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>943150</commentid>
    <comment_count>4</comment_count>
      <attachid>215069</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-10-24 09:11:45 -0700</bug_when>
    <thetext>Comment on attachment 215069
Patch

Attachment 215069 did not pass mac-wk2-ews (mac-wk2):
Output: http://webkit-queues.appspot.com/results/10218095</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>943151</commentid>
    <comment_count>5</comment_count>
      <attachid>215069</attachid>
    <who name="EFL EWS Bot">eflews.bot</who>
    <bug_when>2013-10-24 09:11:53 -0700</bug_when>
    <thetext>Comment on attachment 215069
Patch

Attachment 215069 did not pass efl-ews (efl):
Output: http://webkit-queues.appspot.com/results/10318099</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>943152</commentid>
    <comment_count>6</comment_count>
      <attachid>215069</attachid>
    <who name="EFL EWS Bot">eflews.bot</who>
    <bug_when>2013-10-24 09:14:40 -0700</bug_when>
    <thetext>Comment on attachment 215069
Patch

Attachment 215069 did not pass efl-wk2-ews (efl-wk2):
Output: http://webkit-queues.appspot.com/results/10358093</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>943154</commentid>
    <comment_count>7</comment_count>
      <attachid>215070</attachid>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2013-10-24 09:16:13 -0700</bug_when>
    <thetext>Created attachment 215070
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>943156</commentid>
    <comment_count>8</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-10-24 09:17:46 -0700</bug_when>
    <thetext>Attachment 215070 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/Modules/webaudio/AudioBufferSourceNode.cpp&apos;, u&apos;Source/WebCore/Modules/webaudio/AudioNodeInput.cpp&apos;, u&apos;Source/WebCore/Modules/webaudio/AudioParamTimeline.cpp&apos;, u&apos;Source/WebCore/Modules/webaudio/AudioScheduledSourceNode.cpp&apos;, u&apos;Source/WebCore/Modules/webaudio/AudioSummingJunction.cpp&apos;, u&apos;Source/WebCore/Modules/webaudio/DelayDSPKernel.cpp&apos;, u&apos;Source/WebCore/Modules/webaudio/OfflineAudioDestinationNode.cpp&apos;, u&apos;Source/WebCore/Modules/webaudio/OscillatorNode.cpp&apos;, u&apos;Source/WebCore/Modules/webaudio/PannerNode.cpp&apos;, u&apos;Source/WebCore/Modules/webaudio/WaveShaperDSPKernel.cpp&apos;, u&apos;Source/WebCore/Modules/webdatabase/DatabaseTracker.cpp&apos;, u&apos;Source/WebCore/Modules/websockets/WebSocket.cpp&apos;, u&apos;Source/WebCore/Modules/websockets/WebSocketChannel.cpp&apos;, u&apos;Source/WebCore/Modules/websockets/WebSocketFrame.cpp&apos;, u&apos;Source/WebCore/accessibility/AccessibilityARIAGrid.cpp&apos;, u&apos;Source/WebCore/accessibility/AccessibilityARIAGridCell.cpp&apos;, u&apos;Source/WebCore/accessibility/AccessibilityARIAGridRow.cpp&apos;, u&apos;Source/WebCore/accessibility/AccessibilityList.cpp&apos;, u&apos;Source/WebCore/accessibility/AccessibilityListBox.cpp&apos;, u&apos;Source/WebCore/accessibility/AccessibilityListBoxOption.cpp&apos;, u&apos;Source/WebCore/accessibility/AccessibilityNodeObject.cpp&apos;, u&apos;Source/WebCore/accessibility/AccessibilityObject.cpp&apos;, u&apos;Source/WebCore/accessibility/AccessibilityRenderObject.cpp&apos;, u&apos;Source/WebCore/accessibility/AccessibilityTable.cpp&apos;, u&apos;Source/WebCore/accessibility/AccessibilityTableCell.cpp&apos;, u&apos;Source/WebCore/accessibility/AccessibilityTableColumn.cpp&apos;, u&apos;Source/WebCore/accessibility/AccessibilityTableHeaderContainer.cpp&apos;, u&apos;Source/WebCore/accessibility/AccessibilityTableRow.cpp&apos;, u&apos;Source/WebCore/accessibility/mac/WebAccessibilityObjectWrapperBase.mm&apos;, u&apos;Source/WebCore/accessibility/mac/WebAccessibilityObjectWrapperMac.mm&apos;, u&apos;Source/WebCore/bindings/js/JSCSSStyleDeclarationCustom.cpp&apos;, u&apos;Source/WebCore/bindings/js/JSGeolocationCustom.cpp&apos;, u&apos;Source/WebCore/bindings/js/ScriptController.cpp&apos;, u&apos;Source/WebCore/bindings/js/SerializedScriptValue.cpp&apos;, u&apos;Source/WebCore/css/CSSComputedStyleDeclaration.cpp&apos;, u&apos;Source/WebCore/css/CSSFontSelector.cpp&apos;, u&apos;Source/WebCore/css/CSSGradientValue.cpp&apos;, u&apos;Source/WebCore/css/CSSParser.cpp&apos;, u&apos;Source/WebCore/css/CSSReflectValue.cpp&apos;, u&apos;Source/WebCore/css/DeprecatedStyleBuilder.cpp&apos;, u&apos;Source/WebCore/css/PropertySetCSSStyleDeclaration.cpp&apos;, u&apos;Source/WebCore/css/SVGCSSParser.cpp&apos;, u&apos;Source/WebCore/css/StylePropertySet.cpp&apos;, u&apos;Source/WebCore/css/StyleResolver.cpp&apos;, u&apos;Source/WebCore/dom/CharacterData.cpp&apos;, u&apos;Source/WebCore/dom/ContainerNode.cpp&apos;, u&apos;Source/WebCore/dom/Document.cpp&apos;, u&apos;Source/WebCore/dom/Node.cpp&apos;, u&apos;Source/WebCore/dom/Range.cpp&apos;, u&apos;Source/WebCore/dom/ScriptedAnimationController.cpp&apos;, u&apos;Source/WebCore/dom/StyledElement.cpp&apos;, u&apos;Source/WebCore/dom/Text.cpp&apos;, u&apos;Source/WebCore/dom/ViewportArguments.cpp&apos;, u&apos;Source/WebCore/editing/AlternativeTextController.cpp&apos;, u&apos;Source/WebCore/editing/ApplyStyleCommand.cpp&apos;, u&apos;Source/WebCore/editing/CompositeEditCommand.cpp&apos;, u&apos;Source/WebCore/editing/Editor.cpp&apos;, u&apos;Source/WebCore/editing/EditorCommand.cpp&apos;, u&apos;Source/WebCore/editing/TextIterator.cpp&apos;, u&apos;Source/WebCore/editing/VisibleUnits.cpp&apos;, u&apos;Source/WebCore/editing/htmlediting.cpp&apos;, u&apos;Source/WebCore/editing/markup.cpp&apos;, u&apos;Source/WebCore/fileapi/FileReaderLoader.cpp&apos;, u&apos;Source/WebCore/history/BackForwardList.cpp&apos;, u&apos;Source/WebCore/history/PageCache.cpp&apos;, u&apos;Source/WebCore/html/BaseDateAndTimeInputType.cpp&apos;, u&apos;Source/WebCore/html/FTPDirectoryDocument.cpp&apos;, u&apos;Source/WebCore/html/HTMLAreaElement.cpp&apos;, u&apos;Source/WebCore/html/HTMLElement.cpp&apos;, u&apos;Source/WebCore/html/HTMLFormControlElement.cpp&apos;, u&apos;Source/WebCore/html/HTMLFormElement.cpp&apos;, u&apos;Source/WebCore/html/HTMLImageElement.cpp&apos;, u&apos;Source/WebCore/html/HTMLInputElement.cpp&apos;, u&apos;Source/WebCore/html/HTMLMapElement.cpp&apos;, u&apos;Source/WebCore/html/HTMLMediaElement.cpp&apos;, u&apos;Source/WebCore/html/HTMLSelectElement.cpp&apos;, u&apos;Source/WebCore/html/HTMLSourceElement.cpp&apos;, u&apos;Source/WebCore/html/HTMLTableCellElement.cpp&apos;, u&apos;Source/WebCore/html/HTMLTableElement.cpp&apos;, u&apos;Source/WebCore/html/HTMLTextFormControlElement.cpp&apos;, u&apos;Source/WebCore/html/HTMLTrackElement.cpp&apos;, u&apos;Source/WebCore/html/ImageDocument.cpp&apos;, u&apos;Source/WebCore/html/InputType.cpp&apos;, u&apos;Source/WebCore/html/MediaController.cpp&apos;, u&apos;Source/WebCore/html/NumberInputType.cpp&apos;, u&apos;Source/WebCore/html/RangeInputType.cpp&apos;, u&apos;Source/WebCore/html/SearchInputType.cpp&apos;, u&apos;Source/WebCore/html/StepRange.cpp&apos;, u&apos;Source/WebCore/html/TimeRanges.cpp&apos;, u&apos;Source/WebCore/html/ValidationMessage.cpp&apos;, u&apos;Source/WebCore/html/canvas/CanvasRenderingContext2D.cpp&apos;, u&apos;Source/WebCore/html/canvas/WebGLRenderingContext.cpp&apos;, u&apos;Source/WebCore/html/shadow/MediaControlElements.cpp&apos;, u&apos;Source/WebCore/html/shadow/MediaControlsApple.cpp&apos;, u&apos;Source/WebCore/html/shadow/SliderThumbElement.cpp&apos;, u&apos;Source/WebCore/inspector/ContentSearchUtils.cpp&apos;, u&apos;Source/WebCore/inspector/DOMEditor.cpp&apos;, u&apos;Source/WebCore/inspector/DOMPatchSupport.cpp&apos;, u&apos;Source/WebCore/inspector/InjectedScriptHost.cpp&apos;, u&apos;Source/WebCore/loader/ProgressTracker.cpp&apos;, u&apos;Source/WebCore/loader/cache/CachedImage.cpp&apos;, u&apos;Source/WebCore/page/DOMWindow.cpp&apos;, u&apos;Source/WebCore/page/EventHandler.cpp&apos;, u&apos;Source/WebCore/page/FrameTree.cpp&apos;, u&apos;Source/WebCore/page/FrameView.cpp&apos;, u&apos;Source/WebCore/page/PrintContext.cpp&apos;, u&apos;Source/WebCore/page/SpatialNavigation.cpp&apos;, u&apos;Source/WebCore/page/animation/CSSPropertyAnimation.cpp&apos;, u&apos;Source/WebCore/platform/efl/RenderThemeEfl.cpp&apos;, u&apos;Source/WebCore/platform/graphics/FloatRect.cpp&apos;, u&apos;Source/WebCore/platform/graphics/GlyphPageTreeNode.cpp&apos;, u&apos;Source/WebCore/platform/graphics/IntRect.cpp&apos;, u&apos;Source/WebCore/platform/graphics/LayoutRect.cpp&apos;, u&apos;Source/WebCore/platform/graphics/filters/FEMorphology.cpp&apos;, u&apos;Source/WebCore/platform/mac/MemoryPressureHandlerMac.mm&apos;, u&apos;Source/WebCore/platform/text/TextCodecICU.cpp&apos;, u&apos;Source/WebCore/rendering/LineWidth.cpp&apos;, u&apos;Source/WebCore/rendering/RenderBlock.h&apos;, u&apos;Source/WebCore/rendering/RenderFieldset.cpp&apos;, u&apos;Source/WebCore/rendering/RenderFlowThread.cpp&apos;, u&apos;Source/WebCore/rendering/RenderFrameBase.cpp&apos;, u&apos;Source/WebCore/rendering/RenderFrameSet.cpp&apos;, u&apos;Source/WebCore/rendering/RenderSlider.cpp&apos;, u&apos;Source/WebCore/rendering/RenderTableCell.h&apos;, u&apos;Source/WebCore/rendering/RenderTreeAsText.cpp&apos;, u&apos;Source/WebCore/rendering/RootInlineBox.h&apos;, u&apos;Source/WebCore/rendering/mathml/RenderMathMLRow.cpp&apos;, u&apos;Source/WebCore/rendering/mathml/RenderMathMLScripts.cpp&apos;, u&apos;Source/WebCore/rendering/style/RenderStyle.h&apos;, u&apos;Source/WebCore/rendering/style/StyleGeneratedImage.cpp&apos;, u&apos;Source/WebCore/style/StyleFontSizeFunctions.cpp&apos;, u&apos;Source/WebCore/svg/SVGSVGElement.cpp&apos;, u&apos;Source/WebKit/mac/ChangeLog&apos;, u&apos;Source/WebKit/mac/WebView/WebFrameView.mm&apos;, u&apos;Source/WebKit/mac/WebView/WebHTMLView.mm&apos;, u&apos;Source/WebKit/mac/WebView/WebView.mm&apos;, u&apos;Source/WebKit2/ChangeLog&apos;, u&apos;Source/WebKit2/WebProcess/mac/WebProcessMac.mm&apos;]&quot; exit_code: 1
Source/WebCore/platform/graphics/FloatRect.cpp:80:  l is incorrectly named. Don&apos;t use the single letter &apos;l&apos; as an identifier name.  [readability/naming] [4]
Source/WebCore/platform/graphics/IntRect.cpp:64:  l is incorrectly named. Don&apos;t use the single letter &apos;l&apos; as an identifier name.  [readability/naming] [4]
Source/WebCore/platform/graphics/IntRect.cpp:93:  l is incorrectly named. Don&apos;t use the single letter &apos;l&apos; as an identifier name.  [readability/naming] [4]
Total errors found: 3 in 99 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>943160</commentid>
    <comment_count>9</comment_count>
      <attachid>215071</attachid>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2013-10-24 09:24:22 -0700</bug_when>
    <thetext>Created attachment 215071
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>943163</commentid>
    <comment_count>10</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-10-24 09:27:02 -0700</bug_when>
    <thetext>Attachment 215071 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/Modules/webaudio/AudioBufferSourceNode.cpp&apos;, u&apos;Source/WebCore/Modules/webaudio/AudioNodeInput.cpp&apos;, u&apos;Source/WebCore/Modules/webaudio/AudioParamTimeline.cpp&apos;, u&apos;Source/WebCore/Modules/webaudio/AudioScheduledSourceNode.cpp&apos;, u&apos;Source/WebCore/Modules/webaudio/AudioSummingJunction.cpp&apos;, u&apos;Source/WebCore/Modules/webaudio/DelayDSPKernel.cpp&apos;, u&apos;Source/WebCore/Modules/webaudio/OfflineAudioDestinationNode.cpp&apos;, u&apos;Source/WebCore/Modules/webaudio/OscillatorNode.cpp&apos;, u&apos;Source/WebCore/Modules/webaudio/PannerNode.cpp&apos;, u&apos;Source/WebCore/Modules/webaudio/WaveShaperDSPKernel.cpp&apos;, u&apos;Source/WebCore/Modules/webdatabase/DatabaseTracker.cpp&apos;, u&apos;Source/WebCore/Modules/websockets/WebSocket.cpp&apos;, u&apos;Source/WebCore/Modules/websockets/WebSocketChannel.cpp&apos;, u&apos;Source/WebCore/Modules/websockets/WebSocketFrame.cpp&apos;, u&apos;Source/WebCore/accessibility/AccessibilityARIAGrid.cpp&apos;, u&apos;Source/WebCore/accessibility/AccessibilityARIAGridCell.cpp&apos;, u&apos;Source/WebCore/accessibility/AccessibilityARIAGridRow.cpp&apos;, u&apos;Source/WebCore/accessibility/AccessibilityList.cpp&apos;, u&apos;Source/WebCore/accessibility/AccessibilityListBox.cpp&apos;, u&apos;Source/WebCore/accessibility/AccessibilityListBoxOption.cpp&apos;, u&apos;Source/WebCore/accessibility/AccessibilityNodeObject.cpp&apos;, u&apos;Source/WebCore/accessibility/AccessibilityObject.cpp&apos;, u&apos;Source/WebCore/accessibility/AccessibilityRenderObject.cpp&apos;, u&apos;Source/WebCore/accessibility/AccessibilityTable.cpp&apos;, u&apos;Source/WebCore/accessibility/AccessibilityTableCell.cpp&apos;, u&apos;Source/WebCore/accessibility/AccessibilityTableColumn.cpp&apos;, u&apos;Source/WebCore/accessibility/AccessibilityTableHeaderContainer.cpp&apos;, u&apos;Source/WebCore/accessibility/AccessibilityTableRow.cpp&apos;, u&apos;Source/WebCore/accessibility/mac/WebAccessibilityObjectWrapperBase.mm&apos;, u&apos;Source/WebCore/accessibility/mac/WebAccessibilityObjectWrapperMac.mm&apos;, u&apos;Source/WebCore/bindings/js/JSCSSStyleDeclarationCustom.cpp&apos;, u&apos;Source/WebCore/bindings/js/JSGeolocationCustom.cpp&apos;, u&apos;Source/WebCore/bindings/js/ScriptController.cpp&apos;, u&apos;Source/WebCore/bindings/js/SerializedScriptValue.cpp&apos;, u&apos;Source/WebCore/css/CSSComputedStyleDeclaration.cpp&apos;, u&apos;Source/WebCore/css/CSSFontSelector.cpp&apos;, u&apos;Source/WebCore/css/CSSGradientValue.cpp&apos;, u&apos;Source/WebCore/css/CSSParser.cpp&apos;, u&apos;Source/WebCore/css/CSSReflectValue.cpp&apos;, u&apos;Source/WebCore/css/DeprecatedStyleBuilder.cpp&apos;, u&apos;Source/WebCore/css/PropertySetCSSStyleDeclaration.cpp&apos;, u&apos;Source/WebCore/css/SVGCSSParser.cpp&apos;, u&apos;Source/WebCore/css/StylePropertySet.cpp&apos;, u&apos;Source/WebCore/css/StyleResolver.cpp&apos;, u&apos;Source/WebCore/dom/CharacterData.cpp&apos;, u&apos;Source/WebCore/dom/ContainerNode.cpp&apos;, u&apos;Source/WebCore/dom/Document.cpp&apos;, u&apos;Source/WebCore/dom/Node.cpp&apos;, u&apos;Source/WebCore/dom/Range.cpp&apos;, u&apos;Source/WebCore/dom/ScriptedAnimationController.cpp&apos;, u&apos;Source/WebCore/dom/StyledElement.cpp&apos;, u&apos;Source/WebCore/dom/Text.cpp&apos;, u&apos;Source/WebCore/dom/ViewportArguments.cpp&apos;, u&apos;Source/WebCore/editing/AlternativeTextController.cpp&apos;, u&apos;Source/WebCore/editing/ApplyStyleCommand.cpp&apos;, u&apos;Source/WebCore/editing/CompositeEditCommand.cpp&apos;, u&apos;Source/WebCore/editing/Editor.cpp&apos;, u&apos;Source/WebCore/editing/EditorCommand.cpp&apos;, u&apos;Source/WebCore/editing/TextIterator.cpp&apos;, u&apos;Source/WebCore/editing/VisibleUnits.cpp&apos;, u&apos;Source/WebCore/editing/htmlediting.cpp&apos;, u&apos;Source/WebCore/editing/markup.cpp&apos;, u&apos;Source/WebCore/fileapi/FileReaderLoader.cpp&apos;, u&apos;Source/WebCore/history/BackForwardList.cpp&apos;, u&apos;Source/WebCore/history/PageCache.cpp&apos;, u&apos;Source/WebCore/html/BaseDateAndTimeInputType.cpp&apos;, u&apos;Source/WebCore/html/FTPDirectoryDocument.cpp&apos;, u&apos;Source/WebCore/html/HTMLAreaElement.cpp&apos;, u&apos;Source/WebCore/html/HTMLElement.cpp&apos;, u&apos;Source/WebCore/html/HTMLFormControlElement.cpp&apos;, u&apos;Source/WebCore/html/HTMLFormElement.cpp&apos;, u&apos;Source/WebCore/html/HTMLImageElement.cpp&apos;, u&apos;Source/WebCore/html/HTMLInputElement.cpp&apos;, u&apos;Source/WebCore/html/HTMLMapElement.cpp&apos;, u&apos;Source/WebCore/html/HTMLMediaElement.cpp&apos;, u&apos;Source/WebCore/html/HTMLSelectElement.cpp&apos;, u&apos;Source/WebCore/html/HTMLSourceElement.cpp&apos;, u&apos;Source/WebCore/html/HTMLTableCellElement.cpp&apos;, u&apos;Source/WebCore/html/HTMLTableElement.cpp&apos;, u&apos;Source/WebCore/html/HTMLTextFormControlElement.cpp&apos;, u&apos;Source/WebCore/html/HTMLTrackElement.cpp&apos;, u&apos;Source/WebCore/html/ImageDocument.cpp&apos;, u&apos;Source/WebCore/html/InputType.cpp&apos;, u&apos;Source/WebCore/html/MediaController.cpp&apos;, u&apos;Source/WebCore/html/NumberInputType.cpp&apos;, u&apos;Source/WebCore/html/RangeInputType.cpp&apos;, u&apos;Source/WebCore/html/SearchInputType.cpp&apos;, u&apos;Source/WebCore/html/StepRange.cpp&apos;, u&apos;Source/WebCore/html/TimeRanges.cpp&apos;, u&apos;Source/WebCore/html/ValidationMessage.cpp&apos;, u&apos;Source/WebCore/html/canvas/CanvasRenderingContext2D.cpp&apos;, u&apos;Source/WebCore/html/canvas/WebGLRenderingContext.cpp&apos;, u&apos;Source/WebCore/html/shadow/MediaControlElements.cpp&apos;, u&apos;Source/WebCore/html/shadow/MediaControlsApple.cpp&apos;, u&apos;Source/WebCore/html/shadow/SliderThumbElement.cpp&apos;, u&apos;Source/WebCore/inspector/ContentSearchUtils.cpp&apos;, u&apos;Source/WebCore/inspector/DOMEditor.cpp&apos;, u&apos;Source/WebCore/inspector/DOMPatchSupport.cpp&apos;, u&apos;Source/WebCore/inspector/InjectedScriptHost.cpp&apos;, u&apos;Source/WebCore/loader/ProgressTracker.cpp&apos;, u&apos;Source/WebCore/loader/cache/CachedImage.cpp&apos;, u&apos;Source/WebCore/page/DOMWindow.cpp&apos;, u&apos;Source/WebCore/page/EventHandler.cpp&apos;, u&apos;Source/WebCore/page/FrameTree.cpp&apos;, u&apos;Source/WebCore/page/FrameView.cpp&apos;, u&apos;Source/WebCore/page/PrintContext.cpp&apos;, u&apos;Source/WebCore/page/SpatialNavigation.cpp&apos;, u&apos;Source/WebCore/page/animation/CSSPropertyAnimation.cpp&apos;, u&apos;Source/WebCore/platform/efl/RenderThemeEfl.cpp&apos;, u&apos;Source/WebCore/platform/graphics/FloatRect.cpp&apos;, u&apos;Source/WebCore/platform/graphics/GlyphPageTreeNode.cpp&apos;, u&apos;Source/WebCore/platform/graphics/IntRect.cpp&apos;, u&apos;Source/WebCore/platform/graphics/LayoutRect.cpp&apos;, u&apos;Source/WebCore/platform/graphics/filters/FEMorphology.cpp&apos;, u&apos;Source/WebCore/platform/gtk/RenderThemeGtk.cpp&apos;, u&apos;Source/WebCore/platform/gtk/RenderThemeGtk3.cpp&apos;, u&apos;Source/WebCore/platform/mac/MemoryPressureHandlerMac.mm&apos;, u&apos;Source/WebCore/platform/text/TextCodecICU.cpp&apos;, u&apos;Source/WebCore/rendering/LineWidth.cpp&apos;, u&apos;Source/WebCore/rendering/RenderBlock.h&apos;, u&apos;Source/WebCore/rendering/RenderFieldset.cpp&apos;, u&apos;Source/WebCore/rendering/RenderFlowThread.cpp&apos;, u&apos;Source/WebCore/rendering/RenderFrameBase.cpp&apos;, u&apos;Source/WebCore/rendering/RenderFrameSet.cpp&apos;, u&apos;Source/WebCore/rendering/RenderSlider.cpp&apos;, u&apos;Source/WebCore/rendering/RenderTableCell.h&apos;, u&apos;Source/WebCore/rendering/RenderTreeAsText.cpp&apos;, u&apos;Source/WebCore/rendering/RootInlineBox.h&apos;, u&apos;Source/WebCore/rendering/mathml/RenderMathMLRow.cpp&apos;, u&apos;Source/WebCore/rendering/mathml/RenderMathMLScripts.cpp&apos;, u&apos;Source/WebCore/rendering/style/RenderStyle.h&apos;, u&apos;Source/WebCore/rendering/style/StyleGeneratedImage.cpp&apos;, u&apos;Source/WebCore/style/StyleFontSizeFunctions.cpp&apos;, u&apos;Source/WebCore/svg/SVGSVGElement.cpp&apos;, u&apos;Source/WebKit/mac/ChangeLog&apos;, u&apos;Source/WebKit/mac/WebView/WebFrameView.mm&apos;, u&apos;Source/WebKit/mac/WebView/WebHTMLView.mm&apos;, u&apos;Source/WebKit/mac/WebView/WebView.mm&apos;, u&apos;Source/WebKit2/ChangeLog&apos;, u&apos;Source/WebKit2/WebProcess/mac/WebProcessMac.mm&apos;]&quot; exit_code: 1
Source/WebCore/platform/graphics/FloatRect.cpp:80:  l is incorrectly named. Don&apos;t use the single letter &apos;l&apos; as an identifier name.  [readability/naming] [4]
Source/WebCore/platform/graphics/IntRect.cpp:64:  l is incorrectly named. Don&apos;t use the single letter &apos;l&apos; as an identifier name.  [readability/naming] [4]
Source/WebCore/platform/graphics/IntRect.cpp:93:  l is incorrectly named. Don&apos;t use the single letter &apos;l&apos; as an identifier name.  [readability/naming] [4]
Total errors found: 3 in 101 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>943169</commentid>
    <comment_count>11</comment_count>
      <attachid>215071</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2013-10-24 09:33:25 -0700</bug_when>
    <thetext>Comment on attachment 215071
Patch

rs=me, please make EWS green (except for style bot I guess)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>943194</commentid>
    <comment_count>12</comment_count>
      <attachid>215071</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-10-24 10:08:15 -0700</bug_when>
    <thetext>Comment on attachment 215071
Patch

Attachment 215071 did not pass win-ews (win):
Output: http://webkit-queues.appspot.com/results/10378120</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>943197</commentid>
    <comment_count>13</comment_count>
      <attachid>215078</attachid>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2013-10-24 10:16:03 -0700</bug_when>
    <thetext>Created attachment 215078
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>943198</commentid>
    <comment_count>14</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-10-24 10:18:20 -0700</bug_when>
    <thetext>Attachment 215078 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/Modules/webaudio/AudioBufferSourceNode.cpp&apos;, u&apos;Source/WebCore/Modules/webaudio/AudioNodeInput.cpp&apos;, u&apos;Source/WebCore/Modules/webaudio/AudioParamTimeline.cpp&apos;, u&apos;Source/WebCore/Modules/webaudio/AudioScheduledSourceNode.cpp&apos;, u&apos;Source/WebCore/Modules/webaudio/AudioSummingJunction.cpp&apos;, u&apos;Source/WebCore/Modules/webaudio/DelayDSPKernel.cpp&apos;, u&apos;Source/WebCore/Modules/webaudio/OfflineAudioDestinationNode.cpp&apos;, u&apos;Source/WebCore/Modules/webaudio/OscillatorNode.cpp&apos;, u&apos;Source/WebCore/Modules/webaudio/PannerNode.cpp&apos;, u&apos;Source/WebCore/Modules/webaudio/WaveShaperDSPKernel.cpp&apos;, u&apos;Source/WebCore/Modules/webdatabase/DatabaseTracker.cpp&apos;, u&apos;Source/WebCore/Modules/websockets/WebSocket.cpp&apos;, u&apos;Source/WebCore/Modules/websockets/WebSocketChannel.cpp&apos;, u&apos;Source/WebCore/Modules/websockets/WebSocketFrame.cpp&apos;, u&apos;Source/WebCore/accessibility/AccessibilityARIAGrid.cpp&apos;, u&apos;Source/WebCore/accessibility/AccessibilityARIAGridCell.cpp&apos;, u&apos;Source/WebCore/accessibility/AccessibilityARIAGridRow.cpp&apos;, u&apos;Source/WebCore/accessibility/AccessibilityList.cpp&apos;, u&apos;Source/WebCore/accessibility/AccessibilityListBox.cpp&apos;, u&apos;Source/WebCore/accessibility/AccessibilityListBoxOption.cpp&apos;, u&apos;Source/WebCore/accessibility/AccessibilityNodeObject.cpp&apos;, u&apos;Source/WebCore/accessibility/AccessibilityObject.cpp&apos;, u&apos;Source/WebCore/accessibility/AccessibilityRenderObject.cpp&apos;, u&apos;Source/WebCore/accessibility/AccessibilityTable.cpp&apos;, u&apos;Source/WebCore/accessibility/AccessibilityTableCell.cpp&apos;, u&apos;Source/WebCore/accessibility/AccessibilityTableColumn.cpp&apos;, u&apos;Source/WebCore/accessibility/AccessibilityTableHeaderContainer.cpp&apos;, u&apos;Source/WebCore/accessibility/AccessibilityTableRow.cpp&apos;, u&apos;Source/WebCore/accessibility/mac/WebAccessibilityObjectWrapperBase.mm&apos;, u&apos;Source/WebCore/accessibility/mac/WebAccessibilityObjectWrapperMac.mm&apos;, u&apos;Source/WebCore/bindings/js/JSCSSStyleDeclarationCustom.cpp&apos;, u&apos;Source/WebCore/bindings/js/JSGeolocationCustom.cpp&apos;, u&apos;Source/WebCore/bindings/js/ScriptController.cpp&apos;, u&apos;Source/WebCore/bindings/js/SerializedScriptValue.cpp&apos;, u&apos;Source/WebCore/css/CSSComputedStyleDeclaration.cpp&apos;, u&apos;Source/WebCore/css/CSSFontSelector.cpp&apos;, u&apos;Source/WebCore/css/CSSGradientValue.cpp&apos;, u&apos;Source/WebCore/css/CSSParser.cpp&apos;, u&apos;Source/WebCore/css/CSSReflectValue.cpp&apos;, u&apos;Source/WebCore/css/DeprecatedStyleBuilder.cpp&apos;, u&apos;Source/WebCore/css/PropertySetCSSStyleDeclaration.cpp&apos;, u&apos;Source/WebCore/css/SVGCSSParser.cpp&apos;, u&apos;Source/WebCore/css/StylePropertySet.cpp&apos;, u&apos;Source/WebCore/css/StyleResolver.cpp&apos;, u&apos;Source/WebCore/dom/CharacterData.cpp&apos;, u&apos;Source/WebCore/dom/ContainerNode.cpp&apos;, u&apos;Source/WebCore/dom/Document.cpp&apos;, u&apos;Source/WebCore/dom/Node.cpp&apos;, u&apos;Source/WebCore/dom/Range.cpp&apos;, u&apos;Source/WebCore/dom/ScriptedAnimationController.cpp&apos;, u&apos;Source/WebCore/dom/StyledElement.cpp&apos;, u&apos;Source/WebCore/dom/Text.cpp&apos;, u&apos;Source/WebCore/dom/ViewportArguments.cpp&apos;, u&apos;Source/WebCore/editing/AlternativeTextController.cpp&apos;, u&apos;Source/WebCore/editing/ApplyStyleCommand.cpp&apos;, u&apos;Source/WebCore/editing/CompositeEditCommand.cpp&apos;, u&apos;Source/WebCore/editing/Editor.cpp&apos;, u&apos;Source/WebCore/editing/EditorCommand.cpp&apos;, u&apos;Source/WebCore/editing/TextIterator.cpp&apos;, u&apos;Source/WebCore/editing/VisibleUnits.cpp&apos;, u&apos;Source/WebCore/editing/htmlediting.cpp&apos;, u&apos;Source/WebCore/editing/markup.cpp&apos;, u&apos;Source/WebCore/fileapi/FileReaderLoader.cpp&apos;, u&apos;Source/WebCore/history/BackForwardList.cpp&apos;, u&apos;Source/WebCore/history/PageCache.cpp&apos;, u&apos;Source/WebCore/html/BaseDateAndTimeInputType.cpp&apos;, u&apos;Source/WebCore/html/FTPDirectoryDocument.cpp&apos;, u&apos;Source/WebCore/html/HTMLAreaElement.cpp&apos;, u&apos;Source/WebCore/html/HTMLElement.cpp&apos;, u&apos;Source/WebCore/html/HTMLFormControlElement.cpp&apos;, u&apos;Source/WebCore/html/HTMLFormElement.cpp&apos;, u&apos;Source/WebCore/html/HTMLImageElement.cpp&apos;, u&apos;Source/WebCore/html/HTMLInputElement.cpp&apos;, u&apos;Source/WebCore/html/HTMLMapElement.cpp&apos;, u&apos;Source/WebCore/html/HTMLMediaElement.cpp&apos;, u&apos;Source/WebCore/html/HTMLSelectElement.cpp&apos;, u&apos;Source/WebCore/html/HTMLSourceElement.cpp&apos;, u&apos;Source/WebCore/html/HTMLTableCellElement.cpp&apos;, u&apos;Source/WebCore/html/HTMLTableElement.cpp&apos;, u&apos;Source/WebCore/html/HTMLTextFormControlElement.cpp&apos;, u&apos;Source/WebCore/html/HTMLTrackElement.cpp&apos;, u&apos;Source/WebCore/html/ImageDocument.cpp&apos;, u&apos;Source/WebCore/html/InputType.cpp&apos;, u&apos;Source/WebCore/html/MediaController.cpp&apos;, u&apos;Source/WebCore/html/NumberInputType.cpp&apos;, u&apos;Source/WebCore/html/RangeInputType.cpp&apos;, u&apos;Source/WebCore/html/SearchInputType.cpp&apos;, u&apos;Source/WebCore/html/StepRange.cpp&apos;, u&apos;Source/WebCore/html/TimeRanges.cpp&apos;, u&apos;Source/WebCore/html/ValidationMessage.cpp&apos;, u&apos;Source/WebCore/html/canvas/CanvasRenderingContext2D.cpp&apos;, u&apos;Source/WebCore/html/canvas/WebGLRenderingContext.cpp&apos;, u&apos;Source/WebCore/html/shadow/MediaControlElements.cpp&apos;, u&apos;Source/WebCore/html/shadow/MediaControlsApple.cpp&apos;, u&apos;Source/WebCore/html/shadow/SliderThumbElement.cpp&apos;, u&apos;Source/WebCore/inspector/ContentSearchUtils.cpp&apos;, u&apos;Source/WebCore/inspector/DOMEditor.cpp&apos;, u&apos;Source/WebCore/inspector/DOMPatchSupport.cpp&apos;, u&apos;Source/WebCore/inspector/InjectedScriptHost.cpp&apos;, u&apos;Source/WebCore/loader/ProgressTracker.cpp&apos;, u&apos;Source/WebCore/loader/cache/CachedImage.cpp&apos;, u&apos;Source/WebCore/page/DOMWindow.cpp&apos;, u&apos;Source/WebCore/page/EventHandler.cpp&apos;, u&apos;Source/WebCore/page/FrameTree.cpp&apos;, u&apos;Source/WebCore/page/FrameView.cpp&apos;, u&apos;Source/WebCore/page/PrintContext.cpp&apos;, u&apos;Source/WebCore/page/SpatialNavigation.cpp&apos;, u&apos;Source/WebCore/page/animation/CSSPropertyAnimation.cpp&apos;, u&apos;Source/WebCore/platform/efl/RenderThemeEfl.cpp&apos;, u&apos;Source/WebCore/platform/graphics/FloatRect.cpp&apos;, u&apos;Source/WebCore/platform/graphics/GlyphPageTreeNode.cpp&apos;, u&apos;Source/WebCore/platform/graphics/IntRect.cpp&apos;, u&apos;Source/WebCore/platform/graphics/LayoutRect.cpp&apos;, u&apos;Source/WebCore/platform/graphics/filters/FEMorphology.cpp&apos;, u&apos;Source/WebCore/platform/gtk/RenderThemeGtk.cpp&apos;, u&apos;Source/WebCore/platform/gtk/RenderThemeGtk2.cpp&apos;, u&apos;Source/WebCore/platform/gtk/RenderThemeGtk3.cpp&apos;, u&apos;Source/WebCore/platform/mac/MemoryPressureHandlerMac.mm&apos;, u&apos;Source/WebCore/platform/text/TextCodecICU.cpp&apos;, u&apos;Source/WebCore/platform/win/PopupMenuWin.cpp&apos;, u&apos;Source/WebCore/rendering/LineWidth.cpp&apos;, u&apos;Source/WebCore/rendering/RenderBlock.h&apos;, u&apos;Source/WebCore/rendering/RenderFieldset.cpp&apos;, u&apos;Source/WebCore/rendering/RenderFlowThread.cpp&apos;, u&apos;Source/WebCore/rendering/RenderFrameBase.cpp&apos;, u&apos;Source/WebCore/rendering/RenderFrameSet.cpp&apos;, u&apos;Source/WebCore/rendering/RenderSlider.cpp&apos;, u&apos;Source/WebCore/rendering/RenderTableCell.h&apos;, u&apos;Source/WebCore/rendering/RenderTreeAsText.cpp&apos;, u&apos;Source/WebCore/rendering/RootInlineBox.h&apos;, u&apos;Source/WebCore/rendering/mathml/RenderMathMLRow.cpp&apos;, u&apos;Source/WebCore/rendering/mathml/RenderMathMLScripts.cpp&apos;, u&apos;Source/WebCore/rendering/style/RenderStyle.h&apos;, u&apos;Source/WebCore/rendering/style/StyleGeneratedImage.cpp&apos;, u&apos;Source/WebCore/style/StyleFontSizeFunctions.cpp&apos;, u&apos;Source/WebCore/svg/SVGSVGElement.cpp&apos;, u&apos;Source/WebKit/mac/ChangeLog&apos;, u&apos;Source/WebKit/mac/WebView/WebFrameView.mm&apos;, u&apos;Source/WebKit/mac/WebView/WebHTMLView.mm&apos;, u&apos;Source/WebKit/mac/WebView/WebView.mm&apos;, u&apos;Source/WebKit2/ChangeLog&apos;, u&apos;Source/WebKit2/WebProcess/mac/WebProcessMac.mm&apos;]&quot; exit_code: 1
Source/WebCore/platform/graphics/FloatRect.cpp:80:  l is incorrectly named. Don&apos;t use the single letter &apos;l&apos; as an identifier name.  [readability/naming] [4]
Source/WebCore/platform/graphics/IntRect.cpp:64:  l is incorrectly named. Don&apos;t use the single letter &apos;l&apos; as an identifier name.  [readability/naming] [4]
Source/WebCore/platform/graphics/IntRect.cpp:93:  l is incorrectly named. Don&apos;t use the single letter &apos;l&apos; as an identifier name.  [readability/naming] [4]
Total errors found: 3 in 103 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>943374</commentid>
    <comment_count>15</comment_count>
      <attachid>215078</attachid>
    <who name="Andreas Kling">kling</who>
    <bug_when>2013-10-24 17:47:47 -0700</bug_when>
    <thetext>Comment on attachment 215078
Patch

This is really nice. r=me.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>943381</commentid>
    <comment_count>16</comment_count>
      <attachid>215078</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-10-24 18:13:55 -0700</bug_when>
    <thetext>Comment on attachment 215078
Patch

Clearing flags on attachment: 215078

Committed r157971: &lt;http://trac.webkit.org/changeset/157971&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>943382</commentid>
    <comment_count>17</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-10-24 18:13:58 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>215069</attachid>
            <date>2013-10-24 08:54:56 -0700</date>
            <delta_ts>2013-10-24 09:16:10 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-123273-20131024085454.patch</filename>
            <type>text/plain</type>
            <size>181024</size>
            <attacher name="Anders Carlsson">andersca</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTU3OTI2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjA1YzkyNTBmYTZjODUz
ZDhhOTlkZDViOTNmYTA2ZDNkNTAzZTAyZC4uNWJhOWJmZGE1ZjgxNmViMDQwMzg5NDhjNjM5NDE1
YjBmMGYzOWJhZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI5MSBAQAorMjAxMy0xMC0yNCAgQW5k
ZXJzIENhcmxzc29uICA8YW5kZXJzY2FAYXBwbGUuY29tPgorCisgICAgICAgIFN0b3AgYnJpbmdp
bmcgaW4gdGhlIHN0ZCBuYW1lc3BhY2UKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTEyMzI3MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9BdWRpb0J1ZmZlclNvdXJjZU5vZGUu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9CdWZmZXJTb3VyY2VOb2RlOjpyZW5kZXJGcm9t
QnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvQnVmZmVyU291cmNlTm9kZTo6c3RhcnRH
cmFpbik6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb0J1ZmZlclNvdXJjZU5vZGU6OnRvdGFsUGl0
Y2hSYXRlKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvTm9kZUlucHV0LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvTm9kZUlucHV0OjpudW1iZXJPZkNoYW5uZWxzKToKKyAg
ICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvUGFyYW1UaW1lbGluZS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpBdWRpb1BhcmFtVGltZWxpbmU6OnZhbHVlc0ZvclRpbWVSYW5nZUltcGwpOgor
ICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vQXVkaW9TY2hlZHVsZWRTb3VyY2VOb2RlLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvU2NoZWR1bGVkU291cmNlTm9kZTo6dXBkYXRlU2NoZWR1
bGluZ0luZm8pOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9TY2hlZHVsZWRTb3VyY2VOb2RlOjpz
dG9wKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvU3VtbWluZ0p1bmN0aW9uLmNw
cDoKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL0RlbGF5RFNQS2VybmVsLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkRlbGF5RFNQS2VybmVsOjpwcm9jZXNzKToKKyAgICAgICAgKiBNb2R1bGVz
L3dlYmF1ZGlvL09mZmxpbmVBdWRpb0Rlc3RpbmF0aW9uTm9kZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpPZmZsaW5lQXVkaW9EZXN0aW5hdGlvbk5vZGU6Om9mZmxpbmVSZW5kZXIpOgorICAgICAg
ICAqIE1vZHVsZXMvd2ViYXVkaW8vT3NjaWxsYXRvck5vZGUuY3BwOgorICAgICAgICAqIE1vZHVs
ZXMvd2ViYXVkaW8vUGFubmVyTm9kZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQYW5uZXJOb2Rl
Ojpkb3BwbGVyUmF0ZSk6CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9XYXZlU2hhcGVyRFNQ
S2VybmVsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldhdmVTaGFwZXJEU1BLZXJuZWw6OnByb2Nl
c3NDdXJ2ZSk6CisgICAgICAgICogTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZVRyYWNrZXIu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6RGF0YWJhc2VUcmFja2VyOjpoYXNBZGVxdWF0ZVF1b3Rh
Rm9yT3JpZ2luKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OnNhdHVyYXRlQWRkKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYnNv
Y2tldHMvV2ViU29ja2V0Q2hhbm5lbC5jcHA6CisgICAgICAgICogTW9kdWxlcy93ZWJzb2NrZXRz
L1dlYlNvY2tldEZyYW1lLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tldEZyYW1lOjpw
YXJzZUZyYW1lKToKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlBUklBR3Jp
ZC5jcHA6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5QVJJQUdyaWRDZWxs
LmNwcDoKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlBUklBR3JpZFJvdy5j
cHA6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5TGlzdC5jcHA6CisgICAg
ICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5TGlzdEJveC5jcHA6CisgICAgICAgICog
YWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5TGlzdEJveE9wdGlvbi5jcHA6CisgICAgICAgICog
YWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdC5jcHA6CisgICAgICAgICogYWNj
ZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmNwcDoKKyAgICAgICAgKiBhY2Nlc3NpYmls
aXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3BwOgorICAgICAgICAqIGFjY2Vzc2liaWxp
dHkvQWNjZXNzaWJpbGl0eVRhYmxlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxp
dHlUYWJsZTo6YWRkQ2hpbGRyZW4pOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJp
bGl0eVRhYmxlQ2VsbC5jcHA6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5
VGFibGVDb2x1bW4uY3BwOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRh
YmxlSGVhZGVyQ29udGFpbmVyLmNwcDoKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2li
aWxpdHlUYWJsZVJvdy5jcHA6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNz
aWJpbGl0eU9iamVjdFdyYXBwZXJCYXNlLm1tOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvbWFj
L1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyTWFjLm1tOgorICAgICAgICAoLVtXZWJBY2Nl
c3NpYmlsaXR5T2JqZWN0V3JhcHBlciBhY2Nlc3NpYmlsaXR5QXJyYXlBdHRyaWJ1dGVWYWx1ZXM6
aW5kZXg6bWF4Q291bnQ6XSk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNDU1NTdHlsZURlY2xh
cmF0aW9uQ3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTQ1NTU3R5bGVEZWNsYXJhdGlv
bjo6Z2V0T3duUHJvcGVydHlOYW1lcyk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNHZW9sb2Nh
dGlvbkN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpzZXRUaW1lb3V0KToKKyAgICAgICAg
KFdlYkNvcmU6OnNldE1heGltdW1BZ2UpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL1NjcmlwdENv
bnRyb2xsZXIuY3BwOgorICAgICAgICAqIGJpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1
ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjp3cml0ZUxpdHRsZUVuZGlhbik6CisgICAgICAgIChX
ZWJDb3JlOjpDbG9uZVNlcmlhbGl6ZXI6OndyaXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkNsb25l
RGVzZXJpYWxpemVyOjpkZXNlcmlhbGl6ZSk6CisgICAgICAgIChXZWJDb3JlOjpDbG9uZURlc2Vy
aWFsaXplcjo6cmVhZFN0cmluZyk6CisgICAgICAgICogY3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNs
YXJhdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb21wdXRlZFN0eWxlRXh0cmFjdG9yOjpw
cm9wZXJ0eVZhbHVlKToKKyAgICAgICAgKiBjc3MvQ1NTRm9udFNlbGVjdG9yLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkNTU0ZvbnRTZWxlY3Rvcjo6Z2V0Rm9udEZhY2UpOgorICAgICAgICAqIGNz
cy9DU1NHcmFkaWVudFZhbHVlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU1JhZGlhbEdyYWRp
ZW50VmFsdWU6OmNyZWF0ZUdyYWRpZW50KToKKyAgICAgICAgKiBjc3MvQ1NTUGFyc2VyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlcjo6cGFyc2VWYWx1ZSk6CisgICAgICAgIChXZWJD
b3JlOjpDU1NQYXJzZXI6OnBhcnNlQ29sb3JQYXJhbWV0ZXJzKToKKyAgICAgICAgKFdlYkNvcmU6
OkNTU1BhcnNlcjo6cGFyc2VIU0xQYXJhbWV0ZXJzKToKKyAgICAgICAgKiBjc3MvQ1NTUmVmbGVj
dFZhbHVlLmNwcDoKKyAgICAgICAgKiBjc3MvRGVwcmVjYXRlZFN0eWxlQnVpbGRlci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpBcHBseVByb3BlcnR5Rm9udFNpemU6OmFwcGx5VmFsdWUpOgorICAg
ICAgICAqIGNzcy9Qcm9wZXJ0eVNldENTU1N0eWxlRGVjbGFyYXRpb24uY3BwOgorICAgICAgICAq
IGNzcy9TVkdDU1NQYXJzZXIuY3BwOgorICAgICAgICAqIGNzcy9TdHlsZVByb3BlcnR5U2V0LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlUHJvcGVydHlTZXQ6OmdldExheWVyZWRTaG9ydGhh
bmRWYWx1ZSk6CisgICAgICAgICogY3NzL1N0eWxlUmVzb2x2ZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6U3R5bGVSZXNvbHZlcjo6dmlld3BvcnRQZXJjZW50YWdlVmFsdWUpOgorICAgICAgICAq
IGRvbS9DaGFyYWN0ZXJEYXRhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNoYXJhY3RlckRhdGE6
OnBhcnNlckFwcGVuZERhdGEpOgorICAgICAgICAqIGRvbS9Db250YWluZXJOb2RlLmNwcDoKKyAg
ICAgICAgKiBkb20vRG9jdW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6Om1p
bmltdW1MYXlvdXREZWxheSk6CisgICAgICAgICogZG9tL05vZGUuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6Tm9kZTo6Y29tcGFyZURvY3VtZW50UG9zaXRpb24pOgorICAgICAgICAqIGRvbS9SYW5n
ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSYW5nZTo6dG9TdHJpbmcpOgorICAgICAgICAoV2Vi
Q29yZTo6UmFuZ2U6OnRleHRSZWN0cyk6CisgICAgICAgIChXZWJDb3JlOjpSYW5nZTo6dGV4dFF1
YWRzKToKKyAgICAgICAgKiBkb20vU2NyaXB0ZWRBbmltYXRpb25Db250cm9sbGVyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlNjcmlwdGVkQW5pbWF0aW9uQ29udHJvbGxlcjo6c2NoZWR1bGVBbmlt
YXRpb24pOgorICAgICAgICAqIGRvbS9TdHlsZWRFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlN0eWxlZEVsZW1lbnQ6Om1ha2VQcmVzZW50YXRpb25BdHRyaWJ1dGVDYWNoZUtleSk6Cisg
ICAgICAgICogZG9tL1RleHQuY3BwOgorICAgICAgICAqIGRvbS9WaWV3cG9ydEFyZ3VtZW50cy5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpjbGFtcExlbmd0aFZhbHVlKToKKyAgICAgICAgKFdlYkNv
cmU6OmNsYW1wU2NhbGVWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpWaWV3cG9ydEFyZ3VtZW50
czo6cmVzb2x2ZSk6CisgICAgICAgIChXZWJDb3JlOjpjb21wdXRlTWluaW11bVNjYWxlRmFjdG9y
Rm9yQ29udGVudENvbnRhaW5lZCk6CisgICAgICAgIChXZWJDb3JlOjpyZXN0cmljdE1pbmltdW1T
Y2FsZUZhY3RvclRvVmlld3BvcnRTaXplKToKKyAgICAgICAgKiBlZGl0aW5nL0FsdGVybmF0aXZl
VGV4dENvbnRyb2xsZXIuY3BwOgorICAgICAgICAqIGVkaXRpbmcvQXBwbHlTdHlsZUNvbW1hbmQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6QXBwbHlTdHlsZUNvbW1hbmQ6OmFwcGx5UmVsYXRpdmVG
b250U3R5bGVDaGFuZ2UpOgorICAgICAgICAqIGVkaXRpbmcvQ29tcG9zaXRlRWRpdENvbW1hbmQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29tcG9zaXRlRWRpdENvbW1hbmQ6OmRlbGV0ZUluc2ln
bmlmaWNhbnRUZXh0KToKKyAgICAgICAgKiBlZGl0aW5nL0VkaXRvci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpFZGl0b3I6OnNldENvbXBvc2l0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRv
cjo6Y29tcG9zaXRpb25SYW5nZSk6CisgICAgICAgICogZWRpdGluZy9FZGl0b3JDb21tYW5kLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OnZlcnRpY2FsU2Nyb2xsRGlzdGFuY2UpOgorICAgICAgICAq
IGVkaXRpbmcvVGV4dEl0ZXJhdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRleHRJdGVyYXRv
cjo6aGFuZGxlVGV4dE5vZGUpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dEl0ZXJhdG9yOjpoYW5k
bGVUZXh0Qm94KToKKyAgICAgICAgKFdlYkNvcmU6OkNoYXJhY3Rlckl0ZXJhdG9yOjpzdHJpbmcp
OgorICAgICAgICAoV2ViQ29yZTo6U2VhcmNoQnVmZmVyOjpTZWFyY2hCdWZmZXIpOgorICAgICAg
ICAoV2ViQ29yZTo6U2VhcmNoQnVmZmVyOjphcHBlbmQpOgorICAgICAgICAoV2ViQ29yZTo6U2Vh
cmNoQnVmZmVyOjpwcmVwZW5kQ29udGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpTZWFyY2hCdWZm
ZXI6OnNlYXJjaCk6CisgICAgICAgICogZWRpdGluZy9WaXNpYmxlVW5pdHMuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6c3RhcnRPZlBhcmFncmFwaCk6CisgICAgICAgICogZWRpdGluZy9odG1sZWRp
dGluZy5jcHA6CisgICAgICAgICogZWRpdGluZy9tYXJrdXAuY3BwOgorICAgICAgICAqIGZpbGVh
cGkvRmlsZVJlYWRlckxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGaWxlUmVhZGVyTG9h
ZGVyOjpkaWRSZWNlaXZlUmVzcG9uc2UpOgorICAgICAgICAoV2ViQ29yZTo6RmlsZVJlYWRlckxv
YWRlcjo6ZGlkUmVjZWl2ZURhdGEpOgorICAgICAgICAqIGhpc3RvcnkvQmFja0ZvcndhcmRMaXN0
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkJhY2tGb3J3YXJkTGlzdDo6YmFja0xpc3RXaXRoTGlt
aXQpOgorICAgICAgICAoV2ViQ29yZTo6QmFja0ZvcndhcmRMaXN0Ojpmb3J3YXJkTGlzdFdpdGhM
aW1pdCk6CisgICAgICAgICogaGlzdG9yeS9QYWdlQ2FjaGUuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6UGFnZUNhY2hlOjpzZXRDYXBhY2l0eSk6CisgICAgICAgICogaHRtbC9CYXNlRGF0ZUFuZFRp
bWVJbnB1dFR5cGUuY3BwOgorICAgICAgICAqIGh0bWwvRlRQRGlyZWN0b3J5RG9jdW1lbnQuY3Bw
OgorICAgICAgICAqIGh0bWwvSFRNTEFyZWFFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkhUTUxBcmVhRWxlbWVudDo6Z2V0UmVnaW9uKToKKyAgICAgICAgKiBodG1sL0hUTUxFbGVtZW50
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpwYXJzZUNvbG9yU3RyaW5nV2l0aENyYXp5TGVnYWN5UnVsZXMpOgor
ICAgICAgICAqIGh0bWwvSFRNTEZvcm1Db250cm9sRWxlbWVudC5jcHA6CisgICAgICAgICogaHRt
bC9IVE1MRm9ybUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEZvcm1FbGVtZW50
OjpnZXRUZXh0RmllbGRWYWx1ZXMpOgorICAgICAgICAqIGh0bWwvSFRNTEltYWdlRWxlbWVudC5j
cHA6CisgICAgICAgICogaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcDoKKyAgICAgICAgKiBodG1s
L0hUTUxNYXBFbGVtZW50LmNwcDoKKyAgICAgICAgKiBodG1sL0hUTUxNZWRpYUVsZW1lbnQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6SFRNTE1lZGlhRWxlbWVudCk6
CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50Ojp1cGRhdGVBY3RpdmVUZXh0VHJh
Y2tDdWVzKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OnRleHRUcmFja0Fk
ZEN1ZSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50Ojp0ZXh0VHJhY2tSZW1v
dmVDdWUpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6cmV3aW5kKToKKyAg
ICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OnNlZWspOgorICAgICAgICAoV2ViQ29y
ZTo6SFRNTE1lZGlhRWxlbWVudDo6ZHVyYXRpb24pOgorICAgICAgICAqIGh0bWwvSFRNTFNlbGVj
dEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFNlbGVjdEVsZW1lbnQ6OnBhcnNl
QXR0cmlidXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxTZWxlY3RFbGVtZW50Ojp1cGRhdGVM
aXN0Qm94U2VsZWN0aW9uKToKKyAgICAgICAgKiBodG1sL0hUTUxTb3VyY2VFbGVtZW50LmNwcDoK
KyAgICAgICAgKiBodG1sL0hUTUxUYWJsZUNlbGxFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkhUTUxUYWJsZUNlbGxFbGVtZW50Ojpjb2xTcGFuKToKKyAgICAgICAgKFdlYkNvcmU6OkhU
TUxUYWJsZUNlbGxFbGVtZW50Ojpyb3dTcGFuKToKKyAgICAgICAgKiBodG1sL0hUTUxUYWJsZUVs
ZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRhYmxlRWxlbWVudDo6cGFyc2VBdHRy
aWJ1dGUpOgorICAgICAgICAqIGh0bWwvSFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQ6OnNldFNlbGVjdGlv
blN0YXJ0KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50Ojpz
ZXRTZWxlY3Rpb25FbmQpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRleHRGb3JtQ29udHJvbEVs
ZW1lbnQ6OnNlbGVjdCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVGV4dEZvcm1Db250cm9sRWxl
bWVudDo6c2V0U2VsZWN0aW9uUmFuZ2UpOgorICAgICAgICAqIGh0bWwvSFRNTFRyYWNrRWxlbWVu
dC5jcHA6CisgICAgICAgICogaHRtbC9JbWFnZURvY3VtZW50LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkltYWdlRG9jdW1lbnQ6OnNjYWxlKToKKyAgICAgICAgKiBodG1sL0lucHV0VHlwZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpJbnB1dFR5cGU6OnZhbHVlQXNEb3VibGUpOgorICAgICAgICAq
IGh0bWwvTWVkaWFDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKE1lZGlhQ29udHJvbGxlcjo6ZHVy
YXRpb24pOgorICAgICAgICAoTWVkaWFDb250cm9sbGVyOjpjdXJyZW50VGltZSk6CisgICAgICAg
IChNZWRpYUNvbnRyb2xsZXI6OnNldEN1cnJlbnRUaW1lKToKKyAgICAgICAgKE1lZGlhQ29udHJv
bGxlcjo6dXBkYXRlUmVhZHlTdGF0ZSk6CisgICAgICAgICogaHRtbC9OdW1iZXJJbnB1dFR5cGUu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6TnVtYmVySW5wdXRUeXBlOjpzZXRWYWx1ZUFzRG91Ymxl
KToKKyAgICAgICAgKFdlYkNvcmU6Ok51bWJlcklucHV0VHlwZTo6c2V0VmFsdWVBc0RlY2ltYWwp
OgorICAgICAgICAoV2ViQ29yZTo6TnVtYmVySW5wdXRUeXBlOjpjcmVhdGVTdGVwUmFuZ2UpOgor
ICAgICAgICAqIGh0bWwvUmFuZ2VJbnB1dFR5cGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmFu
Z2VJbnB1dFR5cGU6OmhhbmRsZUtleWRvd25FdmVudCk6CisgICAgICAgICogaHRtbC9TZWFyY2hJ
bnB1dFR5cGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2VhcmNoSW5wdXRUeXBlOjpzdGFydFNl
YXJjaEV2ZW50VGltZXIpOgorICAgICAgICAqIGh0bWwvU3RlcFJhbmdlLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlN0ZXBSYW5nZTo6Y2xhbXBWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpTdGVw
UmFuZ2U6OnBhcnNlU3RlcCk6CisgICAgICAgICogaHRtbC9UaW1lUmFuZ2VzLmNwcDoKKyAgICAg
ICAgKiBodG1sL1ZhbGlkYXRpb25NZXNzYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlZhbGlk
YXRpb25NZXNzYWdlOjpzZXRNZXNzYWdlRE9NQW5kU3RhcnRUaW1lcik6CisgICAgICAgIChXZWJD
b3JlOjphZGp1c3RCdWJibGVQb3NpdGlvbik6CisgICAgICAgICogaHRtbC9jYW52YXMvQ2FudmFz
UmVuZGVyaW5nQ29udGV4dDJELmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Om5vcm1hbGl6ZVJlY3Qp
OgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OnZhbGlkYXRlSW5kZXhBcnJheUNv
bnNlcnZhdGl2ZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OnZh
bGlkYXRlQ29tcHJlc3NlZFRleEZ1bmNEYXRhKToKKyAgICAgICAgKiBodG1sL3NoYWRvdy9NZWRp
YUNvbnRyb2xFbGVtZW50cy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUNvbnRyb2xSZXdp
bmRCdXR0b25FbGVtZW50OjpkZWZhdWx0RXZlbnRIYW5kbGVyKToKKyAgICAgICAgKiBodG1sL3No
YWRvdy9NZWRpYUNvbnRyb2xzQXBwbGUuY3BwOgorICAgICAgICAqIGh0bWwvc2hhZG93L1NsaWRl
clRodW1iRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTbGlkZXJUaHVtYkVsZW1lbnQ6
OnNldFBvc2l0aW9uRnJvbVBvaW50KToKKyAgICAgICAgKiBpbnNwZWN0b3IvQ29udGVudFNlYXJj
aFV0aWxzLmNwcDoKKyAgICAgICAgKiBpbnNwZWN0b3IvRE9NRWRpdG9yLmNwcDoKKyAgICAgICAg
KiBpbnNwZWN0b3IvRE9NUGF0Y2hTdXBwb3J0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRPTVBh
dGNoU3VwcG9ydDo6ZGlmZik6CisgICAgICAgICogaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0SG9z
dC5jcHA6CisgICAgICAgICogbG9hZGVyL1Byb2dyZXNzVHJhY2tlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpQcm9ncmVzc1RyYWNrZXI6OmluY3JlbWVudFByb2dyZXNzKToKKyAgICAgICAgKiBs
b2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuY3BwOgorICAgICAgICAqIHBhZ2UvRE9NV2luZG93LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkRPTVdpbmRvdzo6YWRqdXN0V2luZG93UmVjdCk6CisgICAg
ICAgICogcGFnZS9FdmVudEhhbmRsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWF4aW11bUR1
cmF0aW9uVHJhY2tlcjo6fk1heGltdW1EdXJhdGlvblRyYWNrZXIpOgorICAgICAgICAqIHBhZ2Uv
RnJhbWVUcmVlLmNwcDoKKyAgICAgICAgKiBwYWdlL0ZyYW1lVmlldy5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpGcmFtZVZpZXc6OmFkanVzdGVkRGVmZXJyZWRSZXBhaW50RGVsYXkpOgorICAgICAg
ICAoV2ViQ29yZTo6RnJhbWVWaWV3OjphdXRvU2l6ZUlmRW5hYmxlZCk6CisgICAgICAgICogcGFn
ZS9QcmludENvbnRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UHJpbnRDb250ZXh0Ojpjb21w
dXRlQXV0b21hdGljU2NhbGVGYWN0b3IpOgorICAgICAgICAqIHBhZ2UvU3BhdGlhbE5hdmlnYXRp
b24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6ZW50cnlBbmRFeGl0UG9pbnRzRm9yRGlyZWN0aW9u
KToKKyAgICAgICAgKiBwYWdlL2FuaW1hdGlvbi9DU1NQcm9wZXJ0eUFuaW1hdGlvbi5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpibGVuZEZpbHRlck9wZXJhdGlvbnMpOgorICAgICAgICAoV2ViQ29y
ZTo6UHJvcGVydHlXcmFwcGVyU2hhZG93OjpibGVuZE1pc21hdGNoZWRTaGFkb3dMaXN0cyk6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvRmxvYXRSZWN0LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkZsb2F0UmVjdDo6RmxvYXRSZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OkZsb2F0UmVjdDo6
aW50ZXJzZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OkZsb2F0UmVjdDo6dW5pdGVFdmVuSWZFbXB0
eSk6CisgICAgICAgIChXZWJDb3JlOjpGbG9hdFJlY3Q6OmV4dGVuZCk6CisgICAgICAgIChXZWJD
b3JlOjpGbG9hdFJlY3Q6OmZpdFRvUG9pbnRzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9HbHlwaFBhZ2VUcmVlTm9kZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHbHlwaFBhZ2VUcmVl
Tm9kZTo6aW5pdGlhbGl6ZVBhZ2UpOgorICAgICAgICAoV2ViQ29yZTo6R2x5cGhQYWdlVHJlZU5v
ZGU6OmdldENoaWxkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9JbnRSZWN0LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkludFJlY3Q6OmludGVyc2VjdCk6CisgICAgICAgIChXZWJDb3Jl
OjpJbnRSZWN0Ojp1bml0ZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnRSZWN0Ojp1bml0ZUlmTm9u
WmVybyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvTGF5b3V0UmVjdC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpMYXlvdXRSZWN0OjppbnRlcnNlY3QpOgorICAgICAgICAoV2ViQ29yZTo6
TGF5b3V0UmVjdDo6dW5pdGUpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0UmVjdDo6dW5pdGVJ
Zk5vblplcm8pOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVNb3JwaG9s
b2d5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZFTW9ycGhvbG9neTo6cGxhdGZvcm1BcHBseUdl
bmVyaWMpOgorICAgICAgICAoV2ViQ29yZTo6RkVNb3JwaG9sb2d5OjpwbGF0Zm9ybUFwcGx5U29m
dHdhcmUpOgorICAgICAgICAqIHBsYXRmb3JtL21hYy9NZW1vcnlQcmVzc3VyZUhhbmRsZXJNYWMu
bW06CisgICAgICAgIChXZWJDb3JlOjpNZW1vcnlQcmVzc3VyZUhhbmRsZXI6OnJlc3BvbmRUb01l
bW9yeVByZXNzdXJlKToKKyAgICAgICAgKiBwbGF0Zm9ybS90ZXh0L1RleHRDb2RlY0lDVS5jcHA6
CisgICAgICAgICogcmVuZGVyaW5nL0xpbmVXaWR0aC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpM
aW5lV2lkdGg6OmZpdEJlbG93RmxvYXRzKToKKyAgICAgICAgKFdlYkNvcmU6OkxpbmVXaWR0aDo6
Y29tcHV0ZUF2YWlsYWJsZVdpZHRoRnJvbUxlZnRBbmRSaWdodCk6CisgICAgICAgICogcmVuZGVy
aW5nL1JlbmRlckJsb2NrLmg6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9jazo6YXZhaWxh
YmxlTG9naWNhbFdpZHRoRm9yTGluZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9jazo6
YXZhaWxhYmxlTG9naWNhbFdpZHRoRm9yQ29udGVudCk6CisgICAgICAgICogcmVuZGVyaW5nL1Jl
bmRlckZpZWxkc2V0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckZpZWxkc2V0Ojpjb21w
dXRlUHJlZmVycmVkTG9naWNhbFdpZHRocyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJGaWVs
ZHNldDo6bGF5b3V0U3BlY2lhbEV4Y2x1ZGVkQ2hpbGQpOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyRmllbGRzZXQ6OnBhaW50Qm94RGVjb3JhdGlvbnMpOgorICAgICAgICAqIHJlbmRlcmluZy9S
ZW5kZXJGbG93VGhyZWFkLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckZsb3dUaHJlYWQ6
OnVwZGF0ZUxvZ2ljYWxXaWR0aCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJGbG93VGhyZWFk
OjphZGRGb3JjZWRSZWdpb25CcmVhayk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckZyYW1l
QmFzZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJGcmFtZUJhc2U6OmxheW91dFdpdGhG
bGF0dGVuaW5nKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyRnJhbWVTZXQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyRnJhbWVTZXQ6OmxheU91dEF4aXMpOgorICAgICAgICAqIHJl
bmRlcmluZy9SZW5kZXJTbGlkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU2xpZGVy
Ojpjb21wdXRlUHJlZmVycmVkTG9naWNhbFdpZHRocyk6CisgICAgICAgICogcmVuZGVyaW5nL1Jl
bmRlclRhYmxlQ2VsbC5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUcmVlQXNUZXh0LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OndyaXRlTGF5ZXJzKToKKyAgICAgICAgKiByZW5kZXJpbmcv
Um9vdElubGluZUJveC5oOgorICAgICAgICAoV2ViQ29yZTo6Um9vdElubGluZUJveDo6c2VsZWN0
aW9uSGVpZ2h0KToKKyAgICAgICAgKFdlYkNvcmU6OlJvb3RJbmxpbmVCb3g6OnNlbGVjdGlvbkhl
aWdodEFkanVzdGVkRm9yUHJlY2VkaW5nQmxvY2spOgorICAgICAgICAqIHJlbmRlcmluZy9tYXRo
bWwvUmVuZGVyTWF0aE1MUm93LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck1hdGhNTFJv
dzo6bGF5b3V0KToKKyAgICAgICAgKiByZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFNjcmlw
dHMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTWF0aE1MU2NyaXB0czo6bGF5b3V0KToK
KyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuaDoKKyAgICAgICAgKiByZW5k
ZXJpbmcvc3R5bGUvU3R5bGVHZW5lcmF0ZWRJbWFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpT
dHlsZUdlbmVyYXRlZEltYWdlOjppbWFnZVNpemUpOgorICAgICAgICAqIHN0eWxlL1N0eWxlRm9u
dFNpemVGdW5jdGlvbnMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGU6OmZvbnRTaXplRm9y
S2V5d29yZCk6CisgICAgICAgICogc3ZnL1NWR1NWR0VsZW1lbnQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6U1ZHU1ZHRWxlbWVudDo6c2V0Q3VycmVudFRpbWUpOgorCiAyMDEzLTEwLTI0ICBQZXRl
ciBNb2xuYXIgIDxwbW9sbmFyLnUtc3plZ2VkQHBhcnRuZXIuc2Ftc3VuZy5jb20+CiAKICAgICAg
ICAgUmVtb3ZlZCBRdCB3b3JrYXJvdW5kLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMv
Q2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCmluZGV4IDk5M2FhYmNkNDcx
NjNmZTNjZjc5N2JkYjMwMDZhYjZmY2M0NmFlNjYuLjBjYjdkZjVmNDZlZDhiMTYwNTQwM2U0Mzhi
ZWIwNWZmMGQ5M2EwZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwor
KysgYi9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMSBAQAorMjAxMy0x
MC0yNCAgQW5kZXJzIENhcmxzc29uICA8YW5kZXJzY2FAYXBwbGUuY29tPgorCisgICAgICAgIFN0
b3AgYnJpbmdpbmcgaW4gdGhlIHN0ZCBuYW1lc3BhY2UKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyMzI3MworCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViVmlldy9XZWJGcmFtZVZpZXcubW06CisgICAg
ICAgICgtW1dlYkZyYW1lVmlldyBfdmVydGljYWxQYWdlU2Nyb2xsRGlzdGFuY2VdKToKKyAgICAg
ICAgKC1bV2ViRnJhbWVWaWV3IF9ob3Jpem9udGFsUGFnZVNjcm9sbERpc3RhbmNlXSk6CisgICAg
ICAgICogV2ViVmlldy9XZWJIVE1MVmlldy5tbToKKyAgICAgICAgKC1bV2ViSFRNTFZpZXcgX3Nj
YWxlRmFjdG9yRm9yUHJpbnRPcGVyYXRpb246XSk6CisgICAgICAgICogV2ViVmlldy9XZWJWaWV3
Lm1tOgorICAgICAgICAoK1tXZWJWaWV3IF9zZXRDYWNoZU1vZGVsOl0pOgorICAgICAgICAoK1tX
ZWJWaWV3IF9tYXhDYWNoZU1vZGVsSW5BbnlJbnN0YW5jZV0pOgorICAgICAgICAoK1tXZWJWaWV3
IF9jYWNoZU1vZGVsQ2hhbmdlZE5vdGlmaWNhdGlvbjpdKToKKyAgICAgICAgKCtbV2ViVmlldyBf
cHJlZmVyZW5jZXNSZW1vdmVkTm90aWZpY2F0aW9uOl0pOgorCiAyMDEzLTEwLTIyICBEZWFuIEph
Y2tzb24gIDxkaW5vQGFwcGxlLmNvbT4KIAogICAgICAgICBbV2ViR0xdIEltcGxlbWVudCBhIHNv
ZnR3YXJlIHJlbmRlcmluZyBvcHRpb24gb24gTWFjCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQnVmZmVyU291cmNlTm9kZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQnVmZmVyU291cmNlTm9kZS5jcHAKaW5kZXggOWJl
YzM0N2FiYmZmMTRkMWRjMDA4NGNlY2M0M2MzYzZmMjU3YmIzNi4uYTMwN2NhYzhmZDExM2NhZDRh
MWI2M2YyYzZlNTU3NTE3ZDk1YWYyYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJhdWRpby9BdWRpb0J1ZmZlclNvdXJjZU5vZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViYXVkaW8vQXVkaW9CdWZmZXJTb3VyY2VOb2RlLmNwcApAQCAtNDAsOCArNDAs
NiBAQAogI2luY2x1ZGUgPHd0Zi9NYXRoRXh0cmFzLmg+CiAjaW5jbHVkZSA8d3RmL1N0ZExpYkV4
dHJhcy5oPgogCi11c2luZyBuYW1lc3BhY2Ugc3RkOwotCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
IGNvbnN0IGRvdWJsZSBEZWZhdWx0R3JhaW5EdXJhdGlvbiA9IDAuMDIwOyAvLyAyMG1zCkBAIC0y
MzEsNyArMjI5LDcgQEAgYm9vbCBBdWRpb0J1ZmZlclNvdXJjZU5vZGU6OnJlbmRlckZyb21CdWZm
ZXIoQXVkaW9CdXMqIGJ1cywgdW5zaWduZWQgZGVzdGluYXRpb24KICAgICAgICAgZG91YmxlIGxv
b3BTdGFydEZyYW1lID0gbV9sb29wU3RhcnQgKiBidWZmZXIoKS0+c2FtcGxlUmF0ZSgpOwogICAg
ICAgICBkb3VibGUgbG9vcEVuZEZyYW1lID0gbV9sb29wRW5kICogYnVmZmVyKCktPnNhbXBsZVJh
dGUoKTsKIAotICAgICAgICB2aXJ0dWFsRW5kRnJhbWUgPSBtaW4obG9vcEVuZEZyYW1lLCB2aXJ0
dWFsRW5kRnJhbWUpOworICAgICAgICB2aXJ0dWFsRW5kRnJhbWUgPSBzdGQ6Om1pbihsb29wRW5k
RnJhbWUsIHZpcnR1YWxFbmRGcmFtZSk7CiAgICAgICAgIHZpcnR1YWxEZWx0YUZyYW1lcyA9IHZp
cnR1YWxFbmRGcmFtZSAtIGxvb3BTdGFydEZyYW1lOwogICAgIH0KIApAQCAtMjYxLDggKzI1OSw4
IEBAIGJvb2wgQXVkaW9CdWZmZXJTb3VyY2VOb2RlOjpyZW5kZXJGcm9tQnVmZmVyKEF1ZGlvQnVz
KiBidXMsIHVuc2lnbmVkIGRlc3RpbmF0aW9uCiAgICAgICAgIGVuZEZyYW1lID0gc3RhdGljX2Nh
c3Q8dW5zaWduZWQ+KHZpcnR1YWxFbmRGcmFtZSk7CiAgICAgICAgIHdoaWxlIChmcmFtZXNUb1By
b2Nlc3MgPiAwKSB7CiAgICAgICAgICAgICBpbnQgZnJhbWVzVG9FbmQgPSBlbmRGcmFtZSAtIHJl
YWRJbmRleDsKLSAgICAgICAgICAgIGludCBmcmFtZXNUaGlzVGltZSA9IG1pbihmcmFtZXNUb1By
b2Nlc3MsIGZyYW1lc1RvRW5kKTsKLSAgICAgICAgICAgIGZyYW1lc1RoaXNUaW1lID0gbWF4KDAs
IGZyYW1lc1RoaXNUaW1lKTsKKyAgICAgICAgICAgIGludCBmcmFtZXNUaGlzVGltZSA9IHN0ZDo6
bWluKGZyYW1lc1RvUHJvY2VzcywgZnJhbWVzVG9FbmQpOworICAgICAgICAgICAgZnJhbWVzVGhp
c1RpbWUgPSBzdGQ6Om1heCgwLCBmcmFtZXNUaGlzVGltZSk7CiAKICAgICAgICAgICAgIGZvciAo
dW5zaWduZWQgaSA9IDA7IGkgPCBudW1iZXJPZkNoYW5uZWxzOyArK2kpIAogICAgICAgICAgICAg
ICAgIG1lbWNweShkZXN0aW5hdGlvbkNoYW5uZWxzW2ldICsgd3JpdGVJbmRleCwgc291cmNlQ2hh
bm5lbHNbaV0gKyByZWFkSW5kZXgsIHNpemVvZihmbG9hdCkgKiBmcmFtZXNUaGlzVGltZSk7CkBA
IC0zOTgsOCArMzk2LDggQEAgdm9pZCBBdWRpb0J1ZmZlclNvdXJjZU5vZGU6OnN0YXJ0R3JhaW4o
ZG91YmxlIHdoZW4sIGRvdWJsZSBncmFpbk9mZnNldCwgZG91YmxlIGcKICAgICAvLyBEbyBzYW5p
dHkgY2hlY2tpbmcgb2YgZ3JhaW4gcGFyYW1ldGVycyB2ZXJzdXMgYnVmZmVyIHNpemUuCiAgICAg
ZG91YmxlIGJ1ZmZlckR1cmF0aW9uID0gYnVmZmVyKCktPmR1cmF0aW9uKCk7CiAKLSAgICBncmFp
bk9mZnNldCA9IG1heCgwLjAsIGdyYWluT2Zmc2V0KTsKLSAgICBncmFpbk9mZnNldCA9IG1pbihi
dWZmZXJEdXJhdGlvbiwgZ3JhaW5PZmZzZXQpOworICAgIGdyYWluT2Zmc2V0ID0gc3RkOjptYXgo
MC4wLCBncmFpbk9mZnNldCk7CisgICAgZ3JhaW5PZmZzZXQgPSBzdGQ6Om1pbihidWZmZXJEdXJh
dGlvbiwgZ3JhaW5PZmZzZXQpOwogICAgIG1fZ3JhaW5PZmZzZXQgPSBncmFpbk9mZnNldDsKIAog
ICAgIC8vIEhhbmRsZSBkZWZhdWx0L3Vuc3BlY2lmaWVkIGR1cmF0aW9uLgpAQCAtNDA3LDggKzQw
NSw4IEBAIHZvaWQgQXVkaW9CdWZmZXJTb3VyY2VOb2RlOjpzdGFydEdyYWluKGRvdWJsZSB3aGVu
LCBkb3VibGUgZ3JhaW5PZmZzZXQsIGRvdWJsZSBnCiAgICAgaWYgKCFncmFpbkR1cmF0aW9uKQog
ICAgICAgICBncmFpbkR1cmF0aW9uID0gbWF4RHVyYXRpb247CiAKLSAgICBncmFpbkR1cmF0aW9u
ID0gbWF4KDAuMCwgZ3JhaW5EdXJhdGlvbik7Ci0gICAgZ3JhaW5EdXJhdGlvbiA9IG1pbihtYXhE
dXJhdGlvbiwgZ3JhaW5EdXJhdGlvbik7CisgICAgZ3JhaW5EdXJhdGlvbiA9IHN0ZDo6bWF4KDAu
MCwgZ3JhaW5EdXJhdGlvbik7CisgICAgZ3JhaW5EdXJhdGlvbiA9IHN0ZDo6bWluKG1heER1cmF0
aW9uLCBncmFpbkR1cmF0aW9uKTsKICAgICBtX2dyYWluRHVyYXRpb24gPSBncmFpbkR1cmF0aW9u
OwogCiAgICAgbV9pc0dyYWluID0gdHJ1ZTsKQEAgLTQ0NywxMCArNDQ1LDEwIEBAIGRvdWJsZSBB
dWRpb0J1ZmZlclNvdXJjZU5vZGU6OnRvdGFsUGl0Y2hSYXRlKCkKICAgICBkb3VibGUgdG90YWxS
YXRlID0gZG9wcGxlclJhdGUgKiBzYW1wbGVSYXRlRmFjdG9yICogYmFzZVBpdGNoUmF0ZTsKIAog
ICAgIC8vIFNhbml0eSBjaGVjayB0aGUgdG90YWwgcmF0ZS4gIEl0J3MgdmVyeSBpbXBvcnRhbnQg
dGhhdCB0aGUgcmVzYW1wbGVyIG5vdCBnZXQgYW55IGJhZCByYXRlIHZhbHVlcy4KLSAgICB0b3Rh
bFJhdGUgPSBtYXgoMC4wLCB0b3RhbFJhdGUpOworICAgIHRvdGFsUmF0ZSA9IHN0ZDo6bWF4KDAu
MCwgdG90YWxSYXRlKTsKICAgICBpZiAoIXRvdGFsUmF0ZSkKICAgICAgICAgdG90YWxSYXRlID0g
MTsgLy8gemVybyByYXRlIGlzIGNvbnNpZGVyZWQgaWxsZWdhbAotICAgIHRvdGFsUmF0ZSA9IG1p
bihNYXhSYXRlLCB0b3RhbFJhdGUpOworICAgIHRvdGFsUmF0ZSA9IHN0ZDo6bWluKE1heFJhdGUs
IHRvdGFsUmF0ZSk7CiAgICAgCiAgICAgYm9vbCBpc1RvdGFsUmF0ZVZhbGlkID0gIXN0ZDo6aXNu
YW4odG90YWxSYXRlKSAmJiAhc3RkOjppc2luZih0b3RhbFJhdGUpOwogICAgIEFTU0VSVChpc1Rv
dGFsUmF0ZVZhbGlkKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVk
aW8vQXVkaW9Ob2RlSW5wdXQuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9B
dWRpb05vZGVJbnB1dC5jcHAKaW5kZXggNmEyZTVkZDNiNDJlMzBkMTViNWU3MTNmY2UyZTQ1NDYz
ZjcxMzg1Mi4uYzYyMzMzZDJiMjE5Nzg1OGIyZTgwZjMxOTAzMGFmM2RkYzhlYjI3OCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb05vZGVJbnB1dC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb05vZGVJbnB1dC5jcHAK
QEAgLTMzLDggKzMzLDYgQEAKICNpbmNsdWRlICJBdWRpb05vZGVPdXRwdXQuaCIKICNpbmNsdWRl
IDxhbGdvcml0aG0+CiAKLXVzaW5nIG5hbWVzcGFjZSBzdGQ7Ci0gCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKIEF1ZGlvTm9kZUlucHV0OjpBdWRpb05vZGVJbnB1dChBdWRpb05vZGUqIG5vZGUpCkBA
IC0xNTcsMTEgKzE1NSwxMSBAQCB1bnNpZ25lZCBBdWRpb05vZGVJbnB1dDo6bnVtYmVyT2ZDaGFu
bmVscygpIGNvbnN0CiAgICAgICAgIEF1ZGlvTm9kZU91dHB1dCogb3V0cHV0ID0gKmk7CiAgICAg
ICAgIC8vIFVzZSBvdXRwdXQoKS0+bnVtYmVyT2ZDaGFubmVscygpIGluc3RlYWQgb2Ygb3V0cHV0
LT5idXMoKS0+bnVtYmVyT2ZDaGFubmVscygpLAogICAgICAgICAvLyBiZWNhdXNlIHRoZSBjYWxs
aW5nIG9mIEF1ZGlvTm9kZU91dHB1dDo6YnVzKCkgaXMgbm90IHNhZmUgaGVyZS4KLSAgICAgICAg
bWF4Q2hhbm5lbHMgPSBtYXgobWF4Q2hhbm5lbHMsIG91dHB1dC0+bnVtYmVyT2ZDaGFubmVscygp
KTsKKyAgICAgICAgbWF4Q2hhbm5lbHMgPSBzdGQ6Om1heChtYXhDaGFubmVscywgb3V0cHV0LT5u
dW1iZXJPZkNoYW5uZWxzKCkpOwogICAgIH0KIAogICAgIGlmIChtb2RlID09IEF1ZGlvTm9kZTo6
Q2xhbXBlZE1heCkKLSAgICAgICAgbWF4Q2hhbm5lbHMgPSBtaW4obWF4Q2hhbm5lbHMsIHN0YXRp
Y19jYXN0PHVuc2lnbmVkPihub2RlKCktPmNoYW5uZWxDb3VudCgpKSk7CisgICAgICAgIG1heENo
YW5uZWxzID0gc3RkOjptaW4obWF4Q2hhbm5lbHMsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihub2Rl
KCktPmNoYW5uZWxDb3VudCgpKSk7CiAKICAgICByZXR1cm4gbWF4Q2hhbm5lbHM7CiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvUGFyYW1UaW1lbGlu
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvUGFyYW1UaW1lbGlu
ZS5jcHAKaW5kZXggYTYzNjgzYTVmNDE3NzBhY2E5ZGViNGY2OTg4MTZkZTM2Zjg2OTI4Yy4uMTIx
OWU0OWNmNTBlNTY4NzU4N2M1MjMxZTBkZmIzYzM3NjlmNjMzZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1BhcmFtVGltZWxpbmUuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9QYXJhbVRpbWVsaW5lLmNwcApAQCAt
MzQsOCArMzQsNiBAQAogI2luY2x1ZGUgPGFsZ29yaXRobT4KICNpbmNsdWRlIDx3dGYvTWF0aEV4
dHJhcy5oPgogCi11c2luZyBuYW1lc3BhY2Ugc3RkOwotCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
IHZvaWQgQXVkaW9QYXJhbVRpbWVsaW5lOjpzZXRWYWx1ZUF0VGltZShmbG9hdCB2YWx1ZSwgZmxv
YXQgdGltZSkKQEAgLTE4OSw5ICsxODcsOSBAQCBmbG9hdCBBdWRpb1BhcmFtVGltZWxpbmU6OnZh
bHVlc0ZvclRpbWVSYW5nZUltcGwoCiAgICAgLy8gdW50aWwgd2UgcmVhY2ggdGhlIGZpcnN0IGV2
ZW50IHRpbWUuCiAgICAgZG91YmxlIGZpcnN0RXZlbnRUaW1lID0gbV9ldmVudHNbMF0udGltZSgp
OwogICAgIGlmIChmaXJzdEV2ZW50VGltZSA+IHN0YXJ0VGltZSkgewotICAgICAgICBkb3VibGUg
ZmlsbFRvVGltZSA9IG1pbihlbmRUaW1lLCBmaXJzdEV2ZW50VGltZSk7CisgICAgICAgIGRvdWJs
ZSBmaWxsVG9UaW1lID0gc3RkOjptaW4oZW5kVGltZSwgZmlyc3RFdmVudFRpbWUpOwogICAgICAg
ICB1bnNpZ25lZCBmaWxsVG9GcmFtZSA9IEF1ZGlvVXRpbGl0aWVzOjp0aW1lVG9TYW1wbGVGcmFt
ZShmaWxsVG9UaW1lIC0gc3RhcnRUaW1lLCBzYW1wbGVSYXRlKTsKLSAgICAgICAgZmlsbFRvRnJh
bWUgPSBtaW4oZmlsbFRvRnJhbWUsIG51bWJlck9mVmFsdWVzKTsKKyAgICAgICAgZmlsbFRvRnJh
bWUgPSBzdGQ6Om1pbihmaWxsVG9GcmFtZSwgbnVtYmVyT2ZWYWx1ZXMpOwogICAgICAgICBmb3Ig
KDsgd3JpdGVJbmRleCA8IGZpbGxUb0ZyYW1lOyArK3dyaXRlSW5kZXgpCiAgICAgICAgICAgICB2
YWx1ZXNbd3JpdGVJbmRleF0gPSBkZWZhdWx0VmFsdWU7CiAKQEAgLTIyMiw5ICsyMjAsOSBAQCBm
bG9hdCBBdWRpb1BhcmFtVGltZWxpbmU6OnZhbHVlc0ZvclRpbWVSYW5nZUltcGwoCiAgICAgICAg
IGZsb2F0IGsgPSBkZWx0YVRpbWUgPiAwID8gMSAvIGRlbHRhVGltZSA6IDA7CiAgICAgICAgIGRv
dWJsZSBzYW1wbGVGcmFtZVRpbWVJbmNyID0gMSAvIHNhbXBsZVJhdGU7CiAKLSAgICAgICAgZG91
YmxlIGZpbGxUb1RpbWUgPSBtaW4oZW5kVGltZSwgdGltZTIpOworICAgICAgICBkb3VibGUgZmls
bFRvVGltZSA9IHN0ZDo6bWluKGVuZFRpbWUsIHRpbWUyKTsKICAgICAgICAgdW5zaWduZWQgZmls
bFRvRnJhbWUgPSBBdWRpb1V0aWxpdGllczo6dGltZVRvU2FtcGxlRnJhbWUoZmlsbFRvVGltZSAt
IHN0YXJ0VGltZSwgc2FtcGxlUmF0ZSk7Ci0gICAgICAgIGZpbGxUb0ZyYW1lID0gbWluKGZpbGxU
b0ZyYW1lLCBudW1iZXJPZlZhbHVlcyk7CisgICAgICAgIGZpbGxUb0ZyYW1lID0gc3RkOjptaW4o
ZmlsbFRvRnJhbWUsIG51bWJlck9mVmFsdWVzKTsKIAogICAgICAgICBQYXJhbUV2ZW50OjpUeXBl
IG5leHRFdmVudFR5cGUgPSBuZXh0RXZlbnQgPyBzdGF0aWNfY2FzdDxQYXJhbUV2ZW50OjpUeXBl
PihuZXh0RXZlbnQtPnR5cGUoKSkgOiBQYXJhbUV2ZW50OjpMYXN0VHlwZSAvKiB1bmtub3duICov
OwogCkBAIC0zMTYsOSArMzE0LDkgQEAgZmxvYXQgQXVkaW9QYXJhbVRpbWVsaW5lOjp2YWx1ZXNG
b3JUaW1lUmFuZ2VJbXBsKAogICAgICAgICAgICAgICAgICAgICAvLyBpbnN0ZWFkIG9mIHRoZSBu
ZXh0IGV2ZW50IHRpbWUuCiAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIG5leHRFdmVudEZp
bGxUb0ZyYW1lID0gZmlsbFRvRnJhbWU7CiAgICAgICAgICAgICAgICAgICAgIGZsb2F0IG5leHRF
dmVudEZpbGxUb1RpbWUgPSBmaWxsVG9UaW1lOwotICAgICAgICAgICAgICAgICAgICBmaWxsVG9U
aW1lID0gbWluKGVuZFRpbWUsIHRpbWUxICsgZHVyYXRpb24pOworICAgICAgICAgICAgICAgICAg
ICBmaWxsVG9UaW1lID0gc3RkOjptaW4oZW5kVGltZSwgdGltZTEgKyBkdXJhdGlvbik7CiAgICAg
ICAgICAgICAgICAgICAgIGZpbGxUb0ZyYW1lID0gQXVkaW9VdGlsaXRpZXM6OnRpbWVUb1NhbXBs
ZUZyYW1lKGZpbGxUb1RpbWUgLSBzdGFydFRpbWUsIHNhbXBsZVJhdGUpOwotICAgICAgICAgICAg
ICAgICAgICBmaWxsVG9GcmFtZSA9IG1pbihmaWxsVG9GcmFtZSwgbnVtYmVyT2ZWYWx1ZXMpOwor
ICAgICAgICAgICAgICAgICAgICBmaWxsVG9GcmFtZSA9IHN0ZDo6bWluKGZpbGxUb0ZyYW1lLCBu
dW1iZXJPZlZhbHVlcyk7CiAKICAgICAgICAgICAgICAgICAgICAgLy8gSW5kZXggaW50byB0aGUg
Y3VydmUgZGF0YSB1c2luZyBhIGZsb2F0aW5nLXBvaW50IHZhbHVlLgogICAgICAgICAgICAgICAg
ICAgICAvLyBXZSdyZSBzY2FsaW5nIHRoZSBudW1iZXIgb2YgY3VydmUgcG9pbnRzIGJ5IHRoZSBk
dXJhdGlvbiAoc2VlIGN1cnZlUG9pbnRzUGVyRnJhbWUpLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1NjaGVkdWxlZFNvdXJjZU5vZGUuY3BwIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1NjaGVkdWxlZFNvdXJjZU5vZGUuY3Bw
CmluZGV4IDAzNjFiOGJlOTBkOTA3MDdlNjYzYWUyNDViZGIzMzU2OGVjNTAyMjguLjY3YzAzNTk5
ZTQzM2YzNmJhNzcxMDljMDRlMTM3M2E2NDMxMjZhZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9TY2hlZHVsZWRTb3VyY2VOb2RlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvU2NoZWR1bGVkU291cmNlTm9kZS5j
cHAKQEAgLTM1LDggKzM1LDYgQEAKICNpbmNsdWRlIDxhbGdvcml0aG0+CiAjaW5jbHVkZSA8d3Rm
L01hdGhFeHRyYXMuaD4KIAotdXNpbmcgbmFtZXNwYWNlIHN0ZDsKLQogbmFtZXNwYWNlIFdlYkNv
cmUgewogCiBjb25zdCBkb3VibGUgQXVkaW9TY2hlZHVsZWRTb3VyY2VOb2RlOjpVbmtub3duVGlt
ZSA9IC0xOwpAQCAtOTMsNyArOTEsNyBAQCB2b2lkIEF1ZGlvU2NoZWR1bGVkU291cmNlTm9kZTo6
dXBkYXRlU2NoZWR1bGluZ0luZm8oc2l6ZV90IHF1YW50dW1GcmFtZVNpemUsCiAgICAgfQogCiAg
ICAgcXVhbnR1bUZyYW1lT2Zmc2V0ID0gc3RhcnRGcmFtZSA+IHF1YW50dW1TdGFydEZyYW1lID8g
c3RhcnRGcmFtZSAtIHF1YW50dW1TdGFydEZyYW1lIDogMDsKLSAgICBxdWFudHVtRnJhbWVPZmZz
ZXQgPSBtaW4ocXVhbnR1bUZyYW1lT2Zmc2V0LCBxdWFudHVtRnJhbWVTaXplKTsgLy8gY2xhbXAg
dG8gdmFsaWQgcmFuZ2UKKyAgICBxdWFudHVtRnJhbWVPZmZzZXQgPSBzdGQ6Om1pbihxdWFudHVt
RnJhbWVPZmZzZXQsIHF1YW50dW1GcmFtZVNpemUpOyAvLyBjbGFtcCB0byB2YWxpZCByYW5nZQog
ICAgIG5vblNpbGVudEZyYW1lc1RvUHJvY2VzcyA9IHF1YW50dW1GcmFtZVNpemUgLSBxdWFudHVt
RnJhbWVPZmZzZXQ7CiAKICAgICBpZiAoIW5vblNpbGVudEZyYW1lc1RvUHJvY2VzcykgewpAQCAt
MTU5LDcgKzE1Nyw3IEBAIHZvaWQgQXVkaW9TY2hlZHVsZWRTb3VyY2VOb2RlOjpzdG9wKGRvdWJs
ZSB3aGVuLCBFeGNlcHRpb25Db2RlJiBlYykKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICAK
LSAgICB3aGVuID0gbWF4KDAuMCwgd2hlbik7CisgICAgd2hlbiA9IHN0ZDo6bWF4PGRvdWJsZT4o
MCwgd2hlbik7CiAgICAgbV9lbmRUaW1lID0gd2hlbjsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1N1bW1pbmdKdW5jdGlvbi5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvU3VtbWluZ0p1bmN0aW9uLmNwcAppbmRl
eCBhZDgxY2FkYTVhMzBkYTZlYjc5N2NhMTJhMzM0MTM2ZmVkN2E3YTdhLi5lZDQxN2ZhZGJkNTVl
ZTYzZDZiOGZjZjg1ZGY3NDdkYWZkNjgyOGE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmF1ZGlvL0F1ZGlvU3VtbWluZ0p1bmN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvU3VtbWluZ0p1bmN0aW9uLmNwcApAQCAtMzIsOCAr
MzIsNiBAQAogI2luY2x1ZGUgIkF1ZGlvTm9kZU91dHB1dC5oIgogI2luY2x1ZGUgPGFsZ29yaXRo
bT4KIAotdXNpbmcgbmFtZXNwYWNlIHN0ZDsKLQogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBBdWRp
b1N1bW1pbmdKdW5jdGlvbjo6QXVkaW9TdW1taW5nSnVuY3Rpb24oQXVkaW9Db250ZXh0KiBjb250
ZXh0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9EZWxheURT
UEtlcm5lbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0RlbGF5RFNQS2Vy
bmVsLmNwcAppbmRleCBhMzUwNWYxMzdlZWM4MTM5YjJlYzQ5MThmZDI3MDM0MjIwYzg4ZTg4Li5k
YjcwNGJlZjgzMjQ3ZDc4MDQwZGFkNGEyMjEyMzEzMmNhZjFlNDJmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0RlbGF5RFNQS2VybmVsLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0RlbGF5RFNQS2VybmVsLmNwcApAQCAtMzEsOCAr
MzEsNiBAQAogI2luY2x1ZGUgIkF1ZGlvVXRpbGl0aWVzLmgiCiAjaW5jbHVkZSA8YWxnb3JpdGht
PgogCi11c2luZyBuYW1lc3BhY2Ugc3RkOwotCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNvbnN0
IGZsb2F0IFNtb290aGluZ1RpbWVDb25zdGFudCA9IDAuMDIwZjsgLy8gMjBtcwpAQCAtMTEyLDgg
KzExMCw4IEBAIHZvaWQgRGVsYXlEU1BLZXJuZWw6OnByb2Nlc3MoY29uc3QgZmxvYXQqIHNvdXJj
ZSwgZmxvYXQqIGRlc3RpbmF0aW9uLCBzaXplX3QgZnJhCiAgICAgICAgIGRlbGF5VGltZSA9IGRl
bGF5UHJvY2Vzc29yKCkgPyBkZWxheVByb2Nlc3NvcigpLT5kZWxheVRpbWUoKS0+ZmluYWxWYWx1
ZSgpIDogbV9kZXNpcmVkRGVsYXlGcmFtZXMgLyBzYW1wbGVSYXRlOwogCiAgICAgICAgIC8vIE1h
a2Ugc3VyZSB0aGUgZGVsYXkgdGltZSBpcyBpbiBhIHZhbGlkIHJhbmdlLgotICAgICAgICBkZWxh
eVRpbWUgPSBtaW4obWF4VGltZSwgZGVsYXlUaW1lKTsKLSAgICAgICAgZGVsYXlUaW1lID0gbWF4
KDAuMCwgZGVsYXlUaW1lKTsKKyAgICAgICAgZGVsYXlUaW1lID0gc3RkOjptaW4obWF4VGltZSwg
ZGVsYXlUaW1lKTsKKyAgICAgICAgZGVsYXlUaW1lID0gc3RkOjptYXgoMC4wLCBkZWxheVRpbWUp
OwogCiAgICAgICAgIGlmIChtX2ZpcnN0VGltZSkgewogICAgICAgICAgICAgbV9jdXJyZW50RGVs
YXlUaW1lID0gZGVsYXlUaW1lOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJhdWRpby9PZmZsaW5lQXVkaW9EZXN0aW5hdGlvbk5vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJhdWRpby9PZmZsaW5lQXVkaW9EZXN0aW5hdGlvbk5vZGUuY3BwCmluZGV4IGZm
MzY1ZjZkOTA1ODE4MTZlYTVmNjM2OWQyNzA1YzliZjlmYzYyZGIuLmZkMzEyM2E5MWQwOTk2ZDA4
YmYxNzI0MzAwOTM1Y2M4MzMxNTcwMjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViYXVkaW8vT2ZmbGluZUF1ZGlvRGVzdGluYXRpb25Ob2RlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL09mZmxpbmVBdWRpb0Rlc3RpbmF0aW9uTm9kZS5jcHAK
QEAgLTMzLDggKzMzLDYgQEAKICNpbmNsdWRlICJIUlRGRGF0YWJhc2VMb2FkZXIuaCIKICNpbmNs
dWRlIDxhbGdvcml0aG0+CiAjaW5jbHVkZSA8d3RmL01haW5UaHJlYWQuaD4KLQotdXNpbmcgbmFt
ZXNwYWNlIHN0ZDsKICAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAKQEAgLTEzMyw3ICsxMzEs
NyBAQCB2b2lkIE9mZmxpbmVBdWRpb0Rlc3RpbmF0aW9uTm9kZTo6b2ZmbGluZVJlbmRlcigpCiAg
ICAgICAgIC8vIFJlbmRlciBvbmUgcmVuZGVyIHF1YW50dW0uCiAgICAgICAgIHJlbmRlcigwLCBt
X3JlbmRlckJ1cy5nZXQoKSwgcmVuZGVyUXVhbnR1bVNpemUpOwogICAgICAgICAKLSAgICAgICAg
c2l6ZV90IGZyYW1lc0F2YWlsYWJsZVRvQ29weSA9IG1pbihmcmFtZXNUb1Byb2Nlc3MsIHJlbmRl
clF1YW50dW1TaXplKTsKKyAgICAgICAgc2l6ZV90IGZyYW1lc0F2YWlsYWJsZVRvQ29weSA9IHN0
ZDo6bWluKGZyYW1lc1RvUHJvY2VzcywgcmVuZGVyUXVhbnR1bVNpemUpOwogICAgICAgICAKICAg
ICAgICAgZm9yICh1bnNpZ25lZCBjaGFubmVsSW5kZXggPSAwOyBjaGFubmVsSW5kZXggPCBudW1i
ZXJPZkNoYW5uZWxzOyArK2NoYW5uZWxJbmRleCkgewogICAgICAgICAgICAgY29uc3QgZmxvYXQq
IHNvdXJjZSA9IG1fcmVuZGVyQnVzLT5jaGFubmVsKGNoYW5uZWxJbmRleCktPmRhdGEoKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vT3NjaWxsYXRvck5vZGUu
Y3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9Pc2NpbGxhdG9yTm9kZS5jcHAK
aW5kZXggZTY4ZDhkZDY5NTA5MGM0YTk2YjRmZTc5MzE3YTkwZTkzZTM5NDkzNy4uN2ViMTQ3ZDQw
MjIxZDk1MWFiNTczYWRhNWQ4OGYxNDUyNWVlZGI4YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJhdWRpby9Pc2NpbGxhdG9yTm9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJhdWRpby9Pc2NpbGxhdG9yTm9kZS5jcHAKQEAgLTM3LDggKzM3LDYgQEAK
ICNpbmNsdWRlIDxhbGdvcml0aG0+CiAjaW5jbHVkZSA8d3RmL01hdGhFeHRyYXMuaD4KIAotdXNp
bmcgbmFtZXNwYWNlIHN0ZDsKLQogbmFtZXNwYWNlIFdlYkNvcmUgewogCiB1c2luZyBuYW1lc3Bh
Y2UgVmVjdG9yTWF0aDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVk
aW8vUGFubmVyTm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1Bhbm5l
ck5vZGUuY3BwCmluZGV4IDE3MTVlNzE1YzllYTM2YzlmZmU3MmJkNTU4YmY5ZDE4ZWRmMjQ5YzMu
LmJlOTM4Njk2NWVjZDdlNDUxNDJhODVhYmZlNjA0ZGYxZDgyMjBhNzMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vUGFubmVyTm9kZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9QYW5uZXJOb2RlLmNwcApAQCAtMzgsOCArMzgsNiBA
QAogI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKICNpbmNsdWRlIDx3dGYvTWF0
aEV4dHJhcy5oPgogCi11c2luZyBuYW1lc3BhY2Ugc3RkOwotCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKIHN0YXRpYyB2b2lkIGZpeE5BTnMoZG91YmxlICZ4KQpAQCAtMzUzLDggKzM1MSw4IEBAIGZs
b2F0IFBhbm5lck5vZGU6OmRvcHBsZXJSYXRlKCkKICAgICAgICAgICAgIHNvdXJjZVByb2plY3Rp
b24gPSAtc291cmNlUHJvamVjdGlvbjsKIAogICAgICAgICAgICAgZG91YmxlIHNjYWxlZFNwZWVk
T2ZTb3VuZCA9IHNwZWVkT2ZTb3VuZCAvIGRvcHBsZXJGYWN0b3I7Ci0gICAgICAgICAgICBsaXN0
ZW5lclByb2plY3Rpb24gPSBtaW4obGlzdGVuZXJQcm9qZWN0aW9uLCBzY2FsZWRTcGVlZE9mU291
bmQpOwotICAgICAgICAgICAgc291cmNlUHJvamVjdGlvbiA9IG1pbihzb3VyY2VQcm9qZWN0aW9u
LCBzY2FsZWRTcGVlZE9mU291bmQpOworICAgICAgICAgICAgbGlzdGVuZXJQcm9qZWN0aW9uID0g
c3RkOjptaW4obGlzdGVuZXJQcm9qZWN0aW9uLCBzY2FsZWRTcGVlZE9mU291bmQpOworICAgICAg
ICAgICAgc291cmNlUHJvamVjdGlvbiA9IHN0ZDo6bWluKHNvdXJjZVByb2plY3Rpb24sIHNjYWxl
ZFNwZWVkT2ZTb3VuZCk7CiAKICAgICAgICAgICAgIGRvcHBsZXJTaGlmdCA9ICgoc3BlZWRPZlNv
dW5kIC0gZG9wcGxlckZhY3RvciAqIGxpc3RlbmVyUHJvamVjdGlvbikgLyAoc3BlZWRPZlNvdW5k
IC0gZG9wcGxlckZhY3RvciAqIHNvdXJjZVByb2plY3Rpb24pKTsKICAgICAgICAgICAgIGZpeE5B
TnMoZG9wcGxlclNoaWZ0KTsgLy8gYXZvaWQgaWxsZWdhbCB2YWx1ZXMKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vV2F2ZVNoYXBlckRTUEtlcm5lbC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1dhdmVTaGFwZXJEU1BLZXJuZWwuY3BwCmlu
ZGV4IDQzMTNmMGQ2NDIzOGZjNWM5MzAwNDY2NzY0MDU3ZjU5OWY2MzJjNTEuLmU1OGFkMWIyMjU1
NjlhZGQ5MThkNDViYzFkNTBjNWNjYmMzYjhlNmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViYXVkaW8vV2F2ZVNoYXBlckRTUEtlcm5lbC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJhdWRpby9XYXZlU2hhcGVyRFNQS2VybmVsLmNwcApAQCAtMzUsOCAr
MzUsNiBAQAogCiBjb25zdCB1bnNpZ25lZCBSZW5kZXJpbmdRdWFudHVtID0gMTI4OwogCi11c2lu
ZyBuYW1lc3BhY2Ugc3RkOwotCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFdhdmVTaGFwZXJEU1BL
ZXJuZWw6OldhdmVTaGFwZXJEU1BLZXJuZWwoV2F2ZVNoYXBlclByb2Nlc3NvciogcHJvY2Vzc29y
KQpAQCAtMTEyLDEwICsxMTAsMTAgQEAgdm9pZCBXYXZlU2hhcGVyRFNQS2VybmVsOjpwcm9jZXNz
Q3VydmUoY29uc3QgZmxvYXQqIHNvdXJjZSwgZmxvYXQqIGRlc3RpbmF0aW9uLAogCiAgICAgICAg
IC8vIENsaXAgaW5kZXggdG8gdGhlIGlucHV0IHJhbmdlIG9mIHRoZSBjdXJ2ZS4KICAgICAgICAg
Ly8gVGhpcyB0YWtlcyBjYXJlIG9mIGlucHV0IG91dHNpZGUgb2Ygbm9taW5hbCByYW5nZSAtMSAt
PiArMQotICAgICAgICBpbmRleDEgPSBtYXgoaW5kZXgxLCAwKTsKLSAgICAgICAgaW5kZXgxID0g
bWluKGluZGV4MSwgY3VydmVMZW5ndGggLSAxKTsKLSAgICAgICAgaW5kZXgyID0gbWF4KGluZGV4
MiwgMCk7Ci0gICAgICAgIGluZGV4MiA9IG1pbihpbmRleDIsIGN1cnZlTGVuZ3RoIC0gMSk7Cisg
ICAgICAgIGluZGV4MSA9IHN0ZDo6bWF4KGluZGV4MSwgMCk7CisgICAgICAgIGluZGV4MSA9IHN0
ZDo6bWluKGluZGV4MSwgY3VydmVMZW5ndGggLSAxKTsKKyAgICAgICAgaW5kZXgyID0gc3RkOjpt
YXgoaW5kZXgyLCAwKTsKKyAgICAgICAgaW5kZXgyID0gc3RkOjptaW4oaW5kZXgyLCBjdXJ2ZUxl
bmd0aCAtIDEpOwogCiAgICAgICAgIGRvdWJsZSB2YWx1ZTEgPSBjdXJ2ZURhdGFbaW5kZXgxXTsK
ICAgICAgICAgZG91YmxlIHZhbHVlMiA9IGN1cnZlRGF0YVtpbmRleDJdOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZVRyYWNrZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZVRyYWNrZXIuY3BwCmlu
ZGV4IDIxZjlkZDY1MzI0OWVmYmJmZTEyMGFhYjNlOGMzMzhiMmNhYTljZTIuLmVmMzc1YjY2ZDBl
NDM4NDlkNGMyYWJjNDY3Mjk5MTkzZmE4MDFkODggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VUcmFja2VyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlVHJhY2tlci5jcHAKQEAgLTUwLDggKzUw
LDYgQEAKICNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQv
Q1N0cmluZy5oPgogCi11c2luZyBuYW1lc3BhY2Ugc3RkOwotCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKIHN0YXRpYyBEYXRhYmFzZVRyYWNrZXIqIHN0YXRpY1RyYWNrZXIgPSAwOwpAQCAtMTQxLDcg
KzEzOSw3IEBAIGJvb2wgRGF0YWJhc2VUcmFja2VyOjpoYXNBZGVxdWF0ZVF1b3RhRm9yT3JpZ2lu
KFNlY3VyaXR5T3JpZ2luKiBvcmlnaW4sIHVuc2lnbmVkCiAgICAgdW5zaWduZWQgbG9uZyBsb25n
IHVzYWdlID0gdXNhZ2VGb3JPcmlnaW4ob3JpZ2luKTsKIAogICAgIC8vIElmIHRoZSBkYXRhYmFz
ZSB3aWxsIGZpdCwgYWxsb3cgaXRzIGNyZWF0aW9uLgotICAgIHVuc2lnbmVkIGxvbmcgbG9uZyBy
ZXF1aXJlbWVudCA9IHVzYWdlICsgbWF4KDFVTCwgZXN0aW1hdGVkU2l6ZSk7CisgICAgdW5zaWdu
ZWQgbG9uZyBsb25nIHJlcXVpcmVtZW50ID0gdXNhZ2UgKyBzdGQ6Om1heDx1bnNpZ25lZCBsb25n
IGxvbmc+KDEsIGVzdGltYXRlZFNpemUpOwogICAgIGlmIChyZXF1aXJlbWVudCA8IHVzYWdlKSB7
CiAgICAgICAgIC8vIFRoZSBlc3RpbWF0ZWQgc2l6ZSBpcyBzbyBiaWcgaXQgY2F1c2VzIGFuIG92
ZXJmbG93OyBkb24ndCBhbGxvdyBjcmVhdGlvbi4KICAgICAgICAgZXJyID0gRGF0YWJhc2VFcnJv
cjo6RGF0YWJhc2VTaXplT3ZlcmZsb3dlZDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXQuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJzb2NrZXRzL1dlYlNvY2tldC5jcHAKaW5kZXggOWExNTM5MWM2ZDdiMmEyZGE5Zjc2NGM1YzZl
NzQzY2FhYmJiYmY1Ny4uMDc3YTZiNjhiNGMzMGQ5ZjE1Yzc3YWQ2ZWEyNTY5ZjY3NTU2NTdmMCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldC5jcHAK
QEAgLTY0LDggKzY0LDYgQEAKICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+CiAj
aW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKLXVzaW5nIG5hbWVzcGFjZSBzdGQ7Ci0K
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY29uc3Qgc2l6ZV90IG1heFJlYXNvblNpemVJbkJ5dGVz
ID0gMTIzOwpAQCAtMTIxLDggKzExOSw4IEBAIHN0YXRpYyBTdHJpbmcgam9pblN0cmluZ3MoY29u
c3QgVmVjdG9yPFN0cmluZz4mIHN0cmluZ3MsIGNvbnN0IGNoYXIqIHNlcGFyYXRvcikKIAogc3Rh
dGljIHVuc2lnbmVkIGxvbmcgc2F0dXJhdGVBZGQodW5zaWduZWQgbG9uZyBhLCB1bnNpZ25lZCBs
b25nIGIpCiB7Ci0gICAgaWYgKG51bWVyaWNfbGltaXRzPHVuc2lnbmVkIGxvbmc+OjptYXgoKSAt
IGEgPCBiKQotICAgICAgICByZXR1cm4gbnVtZXJpY19saW1pdHM8dW5zaWduZWQgbG9uZz46Om1h
eCgpOworICAgIGlmIChzdGQ6Om51bWVyaWNfbGltaXRzPHVuc2lnbmVkIGxvbmc+OjptYXgoKSAt
IGEgPCBiKQorICAgICAgICByZXR1cm4gc3RkOjpudW1lcmljX2xpbWl0czx1bnNpZ25lZCBsb25n
Pjo6bWF4KCk7CiAgICAgcmV0dXJuIGEgKyBiOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0Q2hhbm5lbC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0Q2hhbm5lbC5jcHAKaW5kZXggNjQ5Zjk3
ZTZhZWY3NDZmNTVhN2EyMTk2ODI3YTEwZTU2MzgzNTFjZC4uNzE2NGVkYzFlYjZjYWMzZWM5ZjM0
MjIzZWJlZDY0OTEyOWRmNDNjNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJzb2NrZXRzL1dlYlNvY2tldENoYW5uZWwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRDaGFubmVsLmNwcApAQCAtNjYsOCArNjYsNiBAQAogI2lu
Y2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0hhc2guaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJp
bmcuaD4KIAotdXNpbmcgbmFtZXNwYWNlIHN0ZDsKLQogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBj
b25zdCBkb3VibGUgVENQTWF4aW11bVNlZ21lbnRMaWZldGltZSA9IDIgKiA2MC4wOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldEZyYW1lLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRGcmFtZS5jcHAK
aW5kZXggYTI4NzZlYWRiZjE2NTBmZmZhYTg0MWQ1ODBhODcxMjgxNzc1MjhkZi4uMTZiYjQ1OGIz
M2I4ZDY2YmJhYWUxMjY5NGI1MzA2MjI3MGI4MWJkYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldEZyYW1lLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0RnJhbWUuY3BwCkBAIC0yOSw4ICsyOSw2
IEBACiAjaW5jbHVkZSA8d3RmL0NyeXB0b2dyYXBoaWNhbGx5UmFuZG9tTnVtYmVyLmg+CiAjaW5j
bHVkZSA8d3RmL01hdGhFeHRyYXMuaD4KIAotdXNpbmcgbmFtZXNwYWNlIHN0ZDsKLQogbmFtZXNw
YWNlIFdlYkNvcmUgewogCiAvLyBDb25zdGFudHMgZm9yIGh5YmktMTAgZnJhbWUgZm9ybWF0LgpA
QCAtOTcsNyArOTUsNyBAQCBXZWJTb2NrZXRGcmFtZTo6UGFyc2VGcmFtZVJlc3VsdCBXZWJTb2Nr
ZXRGcmFtZTo6cGFyc2VGcmFtZShjaGFyKiBkYXRhLCBzaXplX3QgZAogCiAgICAgc3RhdGljIGNv
bnN0IHVpbnQ2NF90IG1heFBheWxvYWRMZW5ndGggPSBVSU5UNjRfQygweDdGRkZGRkZGRkZGRkZG
RkYpOwogICAgIHNpemVfdCBtYXNraW5nS2V5TGVuZ3RoID0gbWFza2VkID8gbWFza2luZ0tleVdp
ZHRoSW5CeXRlcyA6IDA7Ci0gICAgaWYgKHBheWxvYWRMZW5ndGg2NCA+IG1heFBheWxvYWRMZW5n
dGggfHwgcGF5bG9hZExlbmd0aDY0ICsgbWFza2luZ0tleUxlbmd0aCA+IG51bWVyaWNfbGltaXRz
PHNpemVfdD46Om1heCgpKSB7CisgICAgaWYgKHBheWxvYWRMZW5ndGg2NCA+IG1heFBheWxvYWRM
ZW5ndGggfHwgcGF5bG9hZExlbmd0aDY0ICsgbWFza2luZ0tleUxlbmd0aCA+IHN0ZDo6bnVtZXJp
Y19saW1pdHM8c2l6ZV90Pjo6bWF4KCkpIHsKICAgICAgICAgZXJyb3JTdHJpbmcgPSAiV2ViU29j
a2V0IGZyYW1lIGxlbmd0aCB0b28gbGFyZ2U6ICIgKyBTdHJpbmc6Om51bWJlcihwYXlsb2FkTGVu
Z3RoNjQpICsgIiBieXRlcyI7CiAgICAgICAgIHJldHVybiBGcmFtZUVycm9yOwogICAgIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eUFSSUFH
cmlkLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eUFSSUFH
cmlkLmNwcAppbmRleCBjNWVjOWJmMDQyMWMyNzkxODM2YmUyMzUyNTcwNDhkMmYwODhjMmFjLi5l
Yjc0NGRjYmUwMWQ4NmIyYzU2NDllMDFjMmI3NTU1OTNkOGY0YjVjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlBUklBR3JpZC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5QVJJQUdyaWQuY3BwCkBA
IC0zNiw4ICszNiw2IEBACiAjaW5jbHVkZSAiQWNjZXNzaWJpbGl0eVRhYmxlUm93LmgiCiAjaW5j
bHVkZSAiUmVuZGVyT2JqZWN0LmgiCiAKLXVzaW5nIG5hbWVzcGFjZSBzdGQ7Ci0KIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAogQWNjZXNzaWJpbGl0eUFSSUFHcmlkOjpBY2Nlc3NpYmlsaXR5QVJJQUdy
aWQoUmVuZGVyT2JqZWN0KiByZW5kZXJlcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Fj
Y2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eUFSSUFHcmlkQ2VsbC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlBUklBR3JpZENlbGwuY3BwCmluZGV4IDljM2Ix
Njc5ZGFjN2U2MTcxZTc2OWUwOTRmODk1MzU5MjI1OTk1NzkuLjNmNmI0NDJjM2RmZmIyYmJhNmIx
N2ZmNTEwYjE5M2FmODg3ZWQxOTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2li
aWxpdHkvQWNjZXNzaWJpbGl0eUFSSUFHcmlkQ2VsbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
YWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5QVJJQUdyaWRDZWxsLmNwcApAQCAtMzMsOCArMzMs
NiBAQAogI2luY2x1ZGUgIkFjY2Vzc2liaWxpdHlUYWJsZS5oIgogI2luY2x1ZGUgIkFjY2Vzc2li
aWxpdHlUYWJsZVJvdy5oIgogCi11c2luZyBuYW1lc3BhY2Ugc3RkOwotCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAgICAgCiBBY2Nlc3NpYmlsaXR5QVJJQUdyaWRDZWxsOjpBY2Nlc3NpYmlsaXR5QVJJ
QUdyaWRDZWxsKFJlbmRlck9iamVjdCogcmVuZGVyZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlBUklBR3JpZFJvdy5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlBUklBR3JpZFJvdy5jcHAKaW5kZXgg
MzllZGY3MDJmODcyM2EzZDUxMzM1ODljMjc0NzE1NjQ1NTg1ZWY5NC4uZDA4ZDI3OWVkMTgyMDA5
N2I3OGRmNDgzZmRkMTY5Zjc4ZDIyYTA4MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNj
ZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5QVJJQUdyaWRSb3cuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eUFSSUFHcmlkUm93LmNwcApAQCAtMzMsOCAr
MzMsNiBAQAogI2luY2x1ZGUgIkFjY2Vzc2liaWxpdHlUYWJsZS5oIgogI2luY2x1ZGUgIlJlbmRl
ck9iamVjdC5oIgogCi11c2luZyBuYW1lc3BhY2Ugc3RkOwotCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAgICAgCiBBY2Nlc3NpYmlsaXR5QVJJQUdyaWRSb3c6OkFjY2Vzc2liaWxpdHlBUklBR3JpZFJv
dyhSZW5kZXJPYmplY3QqIHJlbmRlcmVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNj
ZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5TGlzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3Np
YmlsaXR5L0FjY2Vzc2liaWxpdHlMaXN0LmNwcAppbmRleCA4MDM5Y2YwMzRiYjM5MGQwNDk0NjJi
ZjVmMDg3NzBmZWU4ZDNlZGI2Li5hMjQwNmJhNzYzNzAwYzEzMzE1OWFiYTRiOTRkYmVjNWZiMTQ3
Njk0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxp
dHlMaXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxp
dHlMaXN0LmNwcApAQCAtMzMsOCArMzMsNiBAQAogI2luY2x1ZGUgIkhUTUxOYW1lcy5oIgogI2lu
Y2x1ZGUgIlJlbmRlck9iamVjdC5oIgogCi11c2luZyBuYW1lc3BhY2Ugc3RkOwotCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAgICAgCiB1c2luZyBuYW1lc3BhY2UgSFRNTE5hbWVzOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5TGlzdEJveC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlMaXN0Qm94LmNwcApp
bmRleCAwZjA4Njg3NmVkY2E2MDc0NDVmOGY3MDg2MWRjY2M1ZWU5ODY4N2FjLi43YTNjOTcxMGY4
MWYxY2I2MGMyMzAwODkxMWIyNWM4ZDc0NmM3MWU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlMaXN0Qm94LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlMaXN0Qm94LmNwcApAQCAtMzcsOCArMzcs
NiBAQAogI2luY2x1ZGUgIlJlbmRlckxpc3RCb3guaCIKICNpbmNsdWRlICJSZW5kZXJPYmplY3Qu
aCIKIAotdXNpbmcgbmFtZXNwYWNlIHN0ZDsKLQogbmFtZXNwYWNlIFdlYkNvcmUgewogCiB1c2lu
ZyBuYW1lc3BhY2UgSFRNTE5hbWVzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9BY2Nlc3NpYmlsaXR5TGlzdEJveE9wdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9h
Y2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlMaXN0Qm94T3B0aW9uLmNwcAppbmRleCA0ODRhMjBk
ODZiZjRhM2Q1ZTc3MGZiMWMxMjUyY2IwZTNiZWQyMmRkLi5kMmIyNDNjNTczOGYxNmRlZTk3MGE4
NWU2MmZmZjFkOTZiOGNkNWI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L0FjY2Vzc2liaWxpdHlMaXN0Qm94T3B0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9h
Y2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlMaXN0Qm94T3B0aW9uLmNwcApAQCAtNDEsOCArNDEs
NiBAQAogI2luY2x1ZGUgIlJlbmRlckxpc3RCb3guaCIKICNpbmNsdWRlICJSZW5kZXJPYmplY3Qu
aCIKIAotdXNpbmcgbmFtZXNwYWNlIHN0ZDsKLQogbmFtZXNwYWNlIFdlYkNvcmUgewogCiB1c2lu
ZyBuYW1lc3BhY2UgSFRNTE5hbWVzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9BY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nl
c3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlOb2RlT2JqZWN0LmNwcAppbmRleCAxYjM4Y2JiYmY0NWY4
NTM1ODQ1ZmViZTE0NjE0ZGYwNzgyN2FmODQ1Li5mNTBiNGIzYTZjOWJjNzkyYTk5ZjA0NzAzMzlh
Zjc2ODg0YzJkNTg2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0Fj
Y2Vzc2liaWxpdHlOb2RlT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L0FjY2Vzc2liaWxpdHlOb2RlT2JqZWN0LmNwcApAQCAtODIsOCArODIsNiBAQAogI2luY2x1
ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4KICNpbmNsdWRlIDx3dGYvdW5pY29kZS9DaGFy
YWN0ZXJOYW1lcy5oPgogCi11c2luZyBuYW1lc3BhY2Ugc3RkOwotCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKIHVzaW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuY3BwIGIvU291cmNlL1dlYkNv
cmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmNwcAppbmRleCBmODU1N2YwYjAx
ZjMzZTc2MjgwYzUzNGM4MmU5NWUzMTc2ODJjZmY4Li5mYTMxNGFkMDE0NzE4NWU1NTkxMzg2MDg3
Y2YxNTUxODhmOGQwNjlmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5
L0FjY2Vzc2liaWxpdHlPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxp
dHkvQWNjZXNzaWJpbGl0eU9iamVjdC5jcHAKQEAgLTY3LDggKzY3LDYgQEAKICNpbmNsdWRlIDx3
dGYvdGV4dC9XVEZTdHJpbmcuaD4KICNpbmNsdWRlIDx3dGYvdW5pY29kZS9DaGFyYWN0ZXJOYW1l
cy5oPgogCi11c2luZyBuYW1lc3BhY2Ugc3RkOwotCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHVz
aW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nl
c3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUv
YWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNwcAppbmRleCAzY2EyYTk0
ZTM1YjUyODUyYmZjZjdhNWU3YzQzZmRlM2I5NjAyNWI3Li41YzA0NGEyZjFlNmNlMDE2ODUxYWJj
MzBhMzRiNjVkYWM4NDIwZWNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Fj
Y2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5jcHAKQEAgLTEwMSw4ICsxMDEs
NiBAQAogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4KICNpbmNsdWRlIDx3dGYv
dW5pY29kZS9DaGFyYWN0ZXJOYW1lcy5oPgogCi11c2luZyBuYW1lc3BhY2Ugc3RkOwotCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKIHVzaW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlUYWJsZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlUYWJsZS5jcHAKaW5kZXgg
MzM5NTI5ZmE4NTYyOWY1ZjVjYjc2NzEyZTU5NjEzODhlYzY1MjUzMy4uNGM0MDQ3MDI3YTkxMjM3
NDdlOTE5ZDVhYWM4ZmZiMWY5OGQwNWUyZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNj
ZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFibGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Fj
Y2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxlLmNwcApAQCAtMzgyLDcgKzM4Miw3IEBAIHZv
aWQgQWNjZXNzaWJpbGl0eVRhYmxlOjphZGRDaGlsZHJlbigpCiAgICAgICAgICAgICBhcHBlbmRl
ZFJvd3MuYWRkKHJvdyk7CiAgICAgICAgIH0KICAgICAKLSAgICAgICAgbWF4Q29sdW1uQ291bnQg
PSBtYXgodGFibGVTZWN0aW9uLT5udW1Db2x1bW5zKCksIG1heENvbHVtbkNvdW50KTsKKyAgICAg
ICAgbWF4Q29sdW1uQ291bnQgPSBzdGQ6Om1heCh0YWJsZVNlY3Rpb24tPm51bUNvbHVtbnMoKSwg
bWF4Q29sdW1uQ291bnQpOwogICAgICAgICB0YWJsZVNlY3Rpb24gPSB0YWJsZS0+c2VjdGlvbkJl
bG93KHRhYmxlU2VjdGlvbiwgU2tpcEVtcHR5U2VjdGlvbnMpOwogICAgIH0KICAgICAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxlQ2Vs
bC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlUYWJsZUNl
bGwuY3BwCmluZGV4IDUzNWFmZWQ0OTY2YmI3YzNiYzdkZDA0ZWYzMmExMGI4NjhmYzNhZGYuLjhh
MmNkNTc1OWUxYTA4YjEyZWE2NDlmMTc0ZWQzN2Q0ZjhjNGMxZGIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxlQ2VsbC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFibGVDZWxsLmNwcApA
QCAtMzQsOCArMzQsNiBAQAogI2luY2x1ZGUgIlJlbmRlck9iamVjdC5oIgogI2luY2x1ZGUgIlJl
bmRlclRhYmxlQ2VsbC5oIgogCi11c2luZyBuYW1lc3BhY2Ugc3RkOwotCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAgICAgCiB1c2luZyBuYW1lc3BhY2UgSFRNTE5hbWVzOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFibGVDb2x1bW4uY3BwIGIv
U291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFibGVDb2x1bW4uY3Bw
CmluZGV4IGM0NzljODY2MjQ5YzIxNGFiNDUzZDNmOWMwNzkxMGI3NDQ0NWVhYWMuLjFhNTU5NDM0
MDA2ZGYyMDgzODFjNzYzOTczMWYxOGU4ZWIxNzg2OWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxlQ29sdW1uLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlUYWJsZUNvbHVtbi5jcHAKQEAg
LTM2LDggKzM2LDYgQEAKICNpbmNsdWRlICJSZW5kZXJUYWJsZUNlbGwuaCIKICNpbmNsdWRlICJS
ZW5kZXJUYWJsZVNlY3Rpb24uaCIKIAotdXNpbmcgbmFtZXNwYWNlIHN0ZDsKLQogbmFtZXNwYWNl
IFdlYkNvcmUgewogICAgIAogdXNpbmcgbmFtZXNwYWNlIEhUTUxOYW1lczsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxlSGVhZGVyQ29u
dGFpbmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRh
YmxlSGVhZGVyQ29udGFpbmVyLmNwcAppbmRleCA4YTA5MTJkMzE1NWYyNDg1NmQyNzFiYWM0NWVh
NTc5NWI5ZTRmYzIxLi4wMTlmMzEyMzAyN2NhMGJlNzNkYWI2N2EzMTdmYzE2MWIzZTBmM2JlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlUYWJs
ZUhlYWRlckNvbnRhaW5lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9B
Y2Nlc3NpYmlsaXR5VGFibGVIZWFkZXJDb250YWluZXIuY3BwCkBAIC0zMiw4ICszMiw2IEBACiAj
aW5jbHVkZSAiQVhPYmplY3RDYWNoZS5oIgogI2luY2x1ZGUgIkFjY2Vzc2liaWxpdHlUYWJsZS5o
IgogCi11c2luZyBuYW1lc3BhY2Ugc3RkOwotCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIEFjY2Vz
c2liaWxpdHlUYWJsZUhlYWRlckNvbnRhaW5lcjo6QWNjZXNzaWJpbGl0eVRhYmxlSGVhZGVyQ29u
dGFpbmVyKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNz
aWJpbGl0eVRhYmxlUm93LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNz
aWJpbGl0eVRhYmxlUm93LmNwcAppbmRleCA0NGVkYWRhMjhiZDc3ZjMwMGZmNDQwM2EwODgzMTg5
YmZjZDI2ODVlLi42NTNhMDYyMDMwODdhOGQ2NGZiOWM3NmMzZGM4NTNmN2I0YmQwZDM3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlUYWJsZVJv
dy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFi
bGVSb3cuY3BwCkBAIC0zNyw4ICszNyw2IEBACiAjaW5jbHVkZSAiUmVuZGVyVGFibGVDZWxsLmgi
CiAjaW5jbHVkZSAiUmVuZGVyVGFibGVSb3cuaCIKIAotdXNpbmcgbmFtZXNwYWNlIHN0ZDsKLQog
bmFtZXNwYWNlIFdlYkNvcmUgewogICAgIAogdXNpbmcgbmFtZXNwYWNlIEhUTUxOYW1lczsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxp
dHlPYmplY3RXcmFwcGVyQmFzZS5tbSBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFj
L1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyQmFzZS5tbQppbmRleCBkMWI4NDE3Zjk3MDhi
ODlmODViNWE3Nzg0NTUwM2IyMjE1NTExYzIyLi4xY2FmNGIzYWVkNTZlMDE0ZmZkNTQyYTI3ZTIw
Y2RhNGY0ZTBmYWExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21h
Yy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlckJhc2UubW0KKysrIGIvU291cmNlL1dlYkNv
cmUvYWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJCYXNlLm1t
CkBAIC03NSw3ICs3NSw2IEBACiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogdXNpbmcgbmFt
ZXNwYWNlIEhUTUxOYW1lczsKLXVzaW5nIG5hbWVzcGFjZSBzdGQ7CiAKIHN0YXRpYyBOU0FycmF5
ICpjb252ZXJ0TWF0aFBhaXJzVG9OU0FycmF5KGNvbnN0IEFjY2Vzc2liaWxpdHlPYmplY3Q6OkFj
Y2Vzc2liaWxpdHlNYXRoTXVsdGlzY3JpcHRQYWlycyYgcGFpcnMsIE5TU3RyaW5nICpzdWJzY3Jp
cHRLZXksIE5TU3RyaW5nICpzdXBlcnNjcmlwdEtleSkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyTWFj
Lm1tIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9i
amVjdFdyYXBwZXJNYWMubW0KaW5kZXggOGUyMzkyMGViOTliYjU4MTk4ODdjN2M0MjE4YjYzNTI0
ZGViYzMwMS4uYThhMmQxOTFhOTY0ZWVjZjc5NDdkMzE0NDMzNDQ4NjIyM2RiZGJhYiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9i
amVjdFdyYXBwZXJNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMv
V2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJNYWMubW0KQEAgLTc3LDcgKzc3LDYgQEAKIAog
dXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiB1c2luZyBuYW1lc3BhY2UgSFRNTE5hbWVzOwotdXNp
bmcgbmFtZXNwYWNlIHN0ZDsKIAogLy8gQ2VsbCBUYWJsZXMKICNpZm5kZWYgTlNBY2Nlc3NpYmls
aXR5U2VsZWN0ZWRDZWxsc0F0dHJpYnV0ZQpAQCAtMzYxOSw3ICszNjE4LDcgQEAgc3RhdGljIFJl
bmRlck9iamVjdCogcmVuZGVyZXJGb3JWaWV3KE5TVmlldyogdmlldykKICAgICAgICAgICAgIGlm
IChpbmRleCA+PSBjaGlsZENvdW50KQogICAgICAgICAgICAgICAgIHJldHVybiBuaWw7CiAgICAg
ICAgICAgICAKLSAgICAgICAgICAgIE5TVUludGVnZXIgYXJyYXlMZW5ndGggPSBtaW4oY2hpbGRD
b3VudCAtIGluZGV4LCBtYXhDb3VudCk7CisgICAgICAgICAgICBOU1VJbnRlZ2VyIGFycmF5TGVu
Z3RoID0gc3RkOjptaW4oY2hpbGRDb3VudCAtIGluZGV4LCBtYXhDb3VudCk7CiAgICAgICAgICAg
ICByZXR1cm4gW2NoaWxkcmVuIHN1YmFycmF5V2l0aFJhbmdlOk5TTWFrZVJhbmdlKGluZGV4LCBh
cnJheUxlbmd0aCldOwogICAgICAgICB9IGVsc2UgaWYgKG1fb2JqZWN0LT5pc1RyZWUoKSkgewog
ICAgICAgICAgICAgLy8gVHJlZSBvYmplY3RzIHJldHVybiB0aGVpciByb3dzIGFzIHRoZWlyIGNo
aWxkcmVuLiBXZSBjYW4gdXNlIHRoZSBvcmlnaW5hbCBtZXRob2QgaW4gdGhpcyBjYXNlLgpAQCAt
MzYzMSw3ICszNjMwLDcgQEAgc3RhdGljIFJlbmRlck9iamVjdCogcmVuZGVyZXJGb3JWaWV3KE5T
VmlldyogdmlldykKICAgICAgICAgaWYgKGluZGV4ID49IGNoaWxkQ291bnQpCiAgICAgICAgICAg
ICByZXR1cm4gbmlsOwogICAgICAgICAKLSAgICAgICAgdW5zaWduZWQgYXZhaWxhYmxlID0gbWlu
KGNoaWxkQ291bnQgLSBpbmRleCwgbWF4Q291bnQpOworICAgICAgICB1bnNpZ25lZCBhdmFpbGFi
bGUgPSBzdGQ6Om1pbihjaGlsZENvdW50IC0gaW5kZXgsIG1heENvdW50KTsKICAgICAgICAgCiAg
ICAgICAgIE5TTXV0YWJsZUFycmF5ICpzdWJhcnJheSA9IFtOU011dGFibGVBcnJheSBhcnJheVdp
dGhDYXBhY2l0eTphdmFpbGFibGVdOwogICAgICAgICBmb3IgKHVuc2lnbmVkIGFkZGVkID0gMDsg
YWRkZWQgPCBhdmFpbGFibGU7ICsraW5kZXgsICsrYWRkZWQpIHsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ1NTU3R5bGVEZWNsYXJhdGlvbkN1c3RvbS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0NTU1N0eWxlRGVjbGFyYXRpb25DdXN0b20uY3Bw
CmluZGV4IDY2NDg4YmZhZjhlMmFhNmNjNmY1YjhlNWNhZDQ1ZTNiYzc5OTBhNzcuLjBhYjk4Y2U0
Y2JkN2M5ZWNkYjJjZTg0OTU1YmUxYzY1ZjA2M2Y1ZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTQ1NTU3R5bGVEZWNsYXJhdGlvbkN1c3RvbS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDU1NTdHlsZURlY2xhcmF0aW9uQ3VzdG9tLmNwcApA
QCAtNDUsNyArNDUsNiBAQAogCiB1c2luZyBuYW1lc3BhY2UgSlNDOwogdXNpbmcgbmFtZXNwYWNl
IFdURjsKLXVzaW5nIG5hbWVzcGFjZSBzdGQ7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAt
Mzg5LDcgKzM4OCw3IEBAIHZvaWQgSlNDU1NTdHlsZURlY2xhcmF0aW9uOjpnZXRPd25Qcm9wZXJ0
eU5hbWVzKEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlCiAgICAgICAgIFZlY3RvcjxT
dHJpbmcsIG51bUNTU1Byb3BlcnRpZXM+IGpzUHJvcGVydHlOYW1lczsKICAgICAgICAgZm9yIChp
bnQgaWQgPSBmaXJzdENTU1Byb3BlcnR5OyBpZCA8IGZpcnN0Q1NTUHJvcGVydHkgKyBudW1DU1NQ
cm9wZXJ0aWVzOyArK2lkKQogICAgICAgICAgICAganNQcm9wZXJ0eU5hbWVzLmFwcGVuZChnZXRK
U1Byb3BlcnR5TmFtZShzdGF0aWNfY2FzdDxDU1NQcm9wZXJ0eUlEPihpZCkpKTsKLSAgICAgICAg
c29ydChqc1Byb3BlcnR5TmFtZXMuYmVnaW4oKSwganNQcm9wZXJ0eU5hbWVzLmVuZCgpLCBXVEY6
OmNvZGVQb2ludENvbXBhcmVMZXNzVGhhbik7CisgICAgICAgIHN0ZDo6c29ydChqc1Byb3BlcnR5
TmFtZXMuYmVnaW4oKSwganNQcm9wZXJ0eU5hbWVzLmVuZCgpLCBXVEY6OmNvZGVQb2ludENvbXBh
cmVMZXNzVGhhbik7CiAKICAgICAgICAgcHJvcGVydHlJZGVudGlmaWVycyA9IG5ldyBJZGVudGlm
aWVyW251bUNTU1Byb3BlcnRpZXNdOwogICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IG51bUNT
U1Byb3BlcnRpZXM7ICsraSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTR2VvbG9jYXRpb25DdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNH
ZW9sb2NhdGlvbkN1c3RvbS5jcHAKaW5kZXggY2IwMDc0NDFlMzg0NWRjNTE3ZjExOWNmNmVkZTNh
ZGM5MzZiZDFlYS4uZDFhMmRhYTFhNWIxNDU1ZGQxN2RjNTQ2OGM1ZjQ4NDMzOTYzYzlhMCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNHZW9sb2NhdGlvbkN1c3RvbS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNHZW9sb2NhdGlvbkN1c3RvbS5j
cHAKQEAgLTM4LDcgKzM4LDYgQEAKICNpbmNsdWRlICJQb3NpdGlvbk9wdGlvbnMuaCIKIAogdXNp
bmcgbmFtZXNwYWNlIEpTQzsKLXVzaW5nIG5hbWVzcGFjZSBzdGQ7CiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIApAQCAtNTQsNyArNTMsNyBAQCBzdGF0aWMgdm9pZCBzZXRUaW1lb3V0KFBvc2l0aW9u
T3B0aW9ucyogb3B0aW9ucywgY29uc3QgZG91YmxlJiB0aW1lb3V0KQogICAgIC8vIElmIHRoZSB2
YWx1ZSBpcyBwb3NpdGl2ZSBpbmZpbml0eSwgdGhlcmUncyBub3RoaW5nIHRvIGRvLgogICAgIGlm
ICghKHN0ZDo6aXNpbmYodGltZW91dCkgJiYgKHRpbWVvdXQgPiAwKSkpIHsKICAgICAgICAgLy8g
V3JhcCB0byBpbnQzMiBhbmQgZm9yY2Ugbm9uLW5lZ2F0aXZlIHRvIG1hdGNoIGJlaGF2aW9yIG9m
IHdpbmRvdy5zZXRUaW1lb3V0LgotICAgICAgICBvcHRpb25zLT5zZXRUaW1lb3V0KG1heCgwLCBz
dGF0aWNfY2FzdDxpbnQ+KHRpbWVvdXQpKSk7CisgICAgICAgIG9wdGlvbnMtPnNldFRpbWVvdXQo
c3RkOjptYXg8aW50PigwLCB0aW1lb3V0KSk7CiAgICAgfQogfQogCkBAIC02NSw3ICs2NCw3IEBA
IHN0YXRpYyB2b2lkIHNldE1heGltdW1BZ2UoUG9zaXRpb25PcHRpb25zKiBvcHRpb25zLCBjb25z
dCBkb3VibGUmIG1heGltdW1BZ2UpCiAgICAgICAgIG9wdGlvbnMtPmNsZWFyTWF4aW11bUFnZSgp
OwogICAgIH0gZWxzZSB7CiAgICAgICAgIC8vIFdyYXAgdG8gaW50MzIgYW5kIGZvcmNlIG5vbi1u
ZWdhdGl2ZSB0byBtYXRjaCBiZWhhdmlvciBvZiB3aW5kb3cuc2V0VGltZW91dC4KLSAgICAgICAg
b3B0aW9ucy0+c2V0TWF4aW11bUFnZShtYXgoMCwgc3RhdGljX2Nhc3Q8aW50PihtYXhpbXVtQWdl
KSkpOworICAgICAgICBvcHRpb25zLT5zZXRNYXhpbXVtQWdlKHN0ZDo6bWF4PGludD4oMCwgbWF4
aW11bUFnZSkpOwogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvU2NyaXB0Q29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9T
Y3JpcHRDb250cm9sbGVyLmNwcAppbmRleCA0MWFkNDA4M2U4NWM1ZjA3NDVjYWVkMjgwZGQwN2Fm
MjJhMGU1YTVjLi5lNmM3OGM1ZTQ3YTcyNTQ5ZjY2MDM2Zjg2ZjU1ZDg0ZmVlZmJkNTczIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyLmNwcApAQCAt
NTYsNyArNTYsNiBAQAogI2luY2x1ZGUgPHd0Zi90ZXh0L1RleHRQb3NpdGlvbi5oPgogCiB1c2lu
ZyBuYW1lc3BhY2UgSlNDOwotdXNpbmcgbmFtZXNwYWNlIHN0ZDsKIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVk
U2NyaXB0VmFsdWUuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2VyaWFsaXplZFNj
cmlwdFZhbHVlLmNwcAppbmRleCBkZTRjNzI5MWExODE4MmNmYjA0NTAxODVhMWViMTY4NzQyYzJl
NjYxLi5hNTM1YzM0OTIwMzc0YjBlN2E3NzNkNTZiZDU3ZThiZjc5NDJiYzdkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHAK
QEAgLTY5LDcgKzY5LDYgQEAKICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAKIHVzaW5nIG5hbWVz
cGFjZSBKU0M7Ci11c2luZyBuYW1lc3BhY2Ugc3RkOwogCiAjaWYgQ1BVKEJJR19FTkRJQU4pIHx8
IENQVShNSURETEVfRU5ESUFOKSB8fCBDUFUoTkVFRFNfQUxJR05FRF9BQ0NFU1MpCiAjZGVmaW5l
IEFTU1VNRV9MSVRUTEVfRU5ESUFOIDAKQEAgLTMxMiw3ICszMTEsNyBAQCB0ZW1wbGF0ZSA8PiB2
b2lkIHdyaXRlTGl0dGxlRW5kaWFuPHVpbnQ4X3Q+KFZlY3Rvcjx1aW50OF90PiYgYnVmZmVyLCB1
aW50OF90IHZhbAogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gc3RhdGljIGJvb2wgd3JpdGVMaXR0
bGVFbmRpYW4oVmVjdG9yPHVpbnQ4X3Q+JiBidWZmZXIsIGNvbnN0IFQqIHZhbHVlcywgdWludDMy
X3QgbGVuZ3RoKQogewotICAgIGlmIChsZW5ndGggPiBudW1lcmljX2xpbWl0czx1aW50MzJfdD46
Om1heCgpIC8gc2l6ZW9mKFQpKQorICAgIGlmIChsZW5ndGggPiBzdGQ6Om51bWVyaWNfbGltaXRz
PHVpbnQzMl90Pjo6bWF4KCkgLyBzaXplb2YoVCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAog
I2lmIEFTU1VNRV9MSVRUTEVfRU5ESUFOCkBAIC04MjEsNyArODIwLDcgQEAgcHJpdmF0ZToKICAg
ICAgICAgfQogCiAgICAgICAgIC8vIEd1YXJkIGFnYWluc3Qgb3ZlcmZsb3cKLSAgICAgICAgaWYg
KHN0ci5sZW5ndGgoKSA+IChudW1lcmljX2xpbWl0czx1aW50MzJfdD46Om1heCgpIC0gc2l6ZW9m
KHVpbnQzMl90KSkgLyBzaXplb2YoVUNoYXIpKSB7CisgICAgICAgIGlmIChzdHIubGVuZ3RoKCkg
PiAoc3RkOjpudW1lcmljX2xpbWl0czx1aW50MzJfdD46Om1heCgpIC0gc2l6ZW9mKHVpbnQzMl90
KSkgLyBzaXplb2YoVUNoYXIpKSB7CiAgICAgICAgICAgICBmYWlsKCk7CiAgICAgICAgICAgICBy
ZXR1cm47CiAgICAgICAgIH0KQEAgLTExMDksMTAgKzExMDgsMTAgQEAgcHVibGljOgogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVmVjdG9yPHVpbnQ4
X3Q+JiBidWZmZXIpCiAgICAgewogICAgICAgICBpZiAoIWJ1ZmZlci5zaXplKCkpCi0gICAgICAg
ICAgICByZXR1cm4gbWFrZV9wYWlyKGpzTnVsbCgpLCBVbnNwZWNpZmllZEVycm9yKTsKKyAgICAg
ICAgICAgIHJldHVybiBzdGQ6Om1ha2VfcGFpcihqc051bGwoKSwgVW5zcGVjaWZpZWRFcnJvcik7
CiAgICAgICAgIENsb25lRGVzZXJpYWxpemVyIGRlc2VyaWFsaXplcihleGVjLCBnbG9iYWxPYmpl
Y3QsIG1lc3NhZ2VQb3J0cywgYXJyYXlCdWZmZXJDb250ZW50c0FycmF5LCBidWZmZXIpOwogICAg
ICAgICBpZiAoIWRlc2VyaWFsaXplci5pc1ZhbGlkKCkpCi0gICAgICAgICAgICByZXR1cm4gbWFr
ZV9wYWlyKEpTVmFsdWUoKSwgVmFsaWRhdGlvbkVycm9yKTsKKyAgICAgICAgICAgIHJldHVybiBz
dGQ6Om1ha2VfcGFpcihKU1ZhbHVlKCksIFZhbGlkYXRpb25FcnJvcik7CiAgICAgICAgIHJldHVy
biBkZXNlcmlhbGl6ZXIuZGVzZXJpYWxpemUoKTsKICAgICB9CiAKQEAgLTEyODMsNyArMTI4Miw3
IEBAIHByaXZhdGU6CiAKICAgICBzdGF0aWMgYm9vbCByZWFkU3RyaW5nKGNvbnN0IHVpbnQ4X3Qq
JiBwdHIsIGNvbnN0IHVpbnQ4X3QqIGVuZCwgU3RyaW5nJiBzdHIsIHVuc2lnbmVkIGxlbmd0aCkK
ICAgICB7Ci0gICAgICAgIGlmIChsZW5ndGggPj0gbnVtZXJpY19saW1pdHM8aW50MzJfdD46Om1h
eCgpIC8gc2l6ZW9mKFVDaGFyKSkKKyAgICAgICAgaWYgKGxlbmd0aCA+PSBzdGQ6Om51bWVyaWNf
bGltaXRzPGludDMyX3Q+OjptYXgoKSAvIHNpemVvZihVQ2hhcikpCiAgICAgICAgICAgICByZXR1
cm4gZmFsc2U7CiAKICAgICAgICAgdW5zaWduZWQgc2l6ZSA9IGxlbmd0aCAqIHNpemVvZihVQ2hh
cik7CkBAIC0xNzQ4LDcgKzE3NDcsNyBAQCBEZXNlcmlhbGl6YXRpb25SZXN1bHQgQ2xvbmVEZXNl
cmlhbGl6ZXI6OmRlc2VyaWFsaXplKCkKICAgICAgICAgb2JqZWN0U3RhcnRTdGF0ZToKICAgICAg
ICAgY2FzZSBPYmplY3RTdGFydFN0YXRlOiB7CiAgICAgICAgICAgICBpZiAob3V0cHV0T2JqZWN0
U3RhY2suc2l6ZSgpID4gbWF4aW11bUZpbHRlclJlY3Vyc2lvbikKLSAgICAgICAgICAgICAgICBy
ZXR1cm4gbWFrZV9wYWlyKEpTVmFsdWUoKSwgU3RhY2tPdmVyZmxvd0Vycm9yKTsKKyAgICAgICAg
ICAgICAgICByZXR1cm4gc3RkOjptYWtlX3BhaXIoSlNWYWx1ZSgpLCBTdGFja092ZXJmbG93RXJy
b3IpOwogICAgICAgICAgICAgSlNPYmplY3QqIG91dE9iamVjdCA9IGNvbnN0cnVjdEVtcHR5T2Jq
ZWN0KG1fZXhlYywgbV9nbG9iYWxPYmplY3QtPm9iamVjdFByb3RvdHlwZSgpKTsKICAgICAgICAg
ICAgIG1fZ2NCdWZmZXIuYXBwZW5kKG91dE9iamVjdCk7CiAgICAgICAgICAgICBvdXRwdXRPYmpl
Y3RTdGFjay5hcHBlbmQob3V0T2JqZWN0KTsKQEAgLTE3ODMsNyArMTc4Miw3IEBAIERlc2VyaWFs
aXphdGlvblJlc3VsdCBDbG9uZURlc2VyaWFsaXplcjo6ZGVzZXJpYWxpemUoKQogICAgICAgICB9
CiAgICAgICAgIG1hcE9iamVjdFN0YXJ0U3RhdGU6IHsKICAgICAgICAgICAgIGlmIChvdXRwdXRP
YmplY3RTdGFjay5zaXplKCkgPiBtYXhpbXVtRmlsdGVyUmVjdXJzaW9uKQotICAgICAgICAgICAg
ICAgIHJldHVybiBtYWtlX3BhaXIoSlNWYWx1ZSgpLCBTdGFja092ZXJmbG93RXJyb3IpOworICAg
ICAgICAgICAgICAgIHJldHVybiBzdGQ6Om1ha2VfcGFpcihKU1ZhbHVlKCksIFN0YWNrT3ZlcmZs
b3dFcnJvcik7CiAgICAgICAgICAgICBKU01hcCogbWFwID0gSlNNYXA6OmNyZWF0ZShtX2V4ZWMt
PnZtKCksIG1fZ2xvYmFsT2JqZWN0LT5tYXBTdHJ1Y3R1cmUoKSk7CiAgICAgICAgICAgICBtX2dj
QnVmZmVyLmFwcGVuZChtYXApOwogICAgICAgICAgICAgb3V0cHV0T2JqZWN0U3RhY2suYXBwZW5k
KG1hcCk7CkBAIC0xNzkzLDcgKzE3OTIsNyBAQCBEZXNlcmlhbGl6YXRpb25SZXN1bHQgQ2xvbmVE
ZXNlcmlhbGl6ZXI6OmRlc2VyaWFsaXplKCkKICAgICAgICAgfQogICAgICAgICBzZXRPYmplY3RT
dGFydFN0YXRlOiB7CiAgICAgICAgICAgICBpZiAob3V0cHV0T2JqZWN0U3RhY2suc2l6ZSgpID4g
bWF4aW11bUZpbHRlclJlY3Vyc2lvbikKLSAgICAgICAgICAgICAgICByZXR1cm4gbWFrZV9wYWly
KEpTVmFsdWUoKSwgU3RhY2tPdmVyZmxvd0Vycm9yKTsKKyAgICAgICAgICAgICAgICByZXR1cm4g
c3RkOjptYWtlX3BhaXIoSlNWYWx1ZSgpLCBTdGFja092ZXJmbG93RXJyb3IpOwogICAgICAgICAg
ICAgSlNTZXQqIHNldCA9IEpTU2V0OjpjcmVhdGUobV9leGVjLT52bSgpLCBtX2dsb2JhbE9iamVj
dC0+c2V0U3RydWN0dXJlKCkpOwogICAgICAgICAgICAgbV9nY0J1ZmZlci5hcHBlbmQoc2V0KTsK
ICAgICAgICAgICAgIG91dHB1dE9iamVjdFN0YWNrLmFwcGVuZChzZXQpOwpAQCAtMTg0NywxMCAr
MTg0NiwxMCBAQCBEZXNlcmlhbGl6YXRpb25SZXN1bHQgQ2xvbmVEZXNlcmlhbGl6ZXI6OmRlc2Vy
aWFsaXplKCkKICAgICB9CiAgICAgQVNTRVJUKG91dFZhbHVlKTsKICAgICBBU1NFUlQoIW1fZmFp
bGVkKTsKLSAgICByZXR1cm4gbWFrZV9wYWlyKG91dFZhbHVlLCBTdWNjZXNzZnVsbHlDb21wbGV0
ZWQpOworICAgIHJldHVybiBzdGQ6Om1ha2VfcGFpcihvdXRWYWx1ZSwgU3VjY2Vzc2Z1bGx5Q29t
cGxldGVkKTsKIGVycm9yOgogICAgIGZhaWwoKTsKLSAgICByZXR1cm4gbWFrZV9wYWlyKEpTVmFs
dWUoKSwgVmFsaWRhdGlvbkVycm9yKTsKKyAgICByZXR1cm4gc3RkOjptYWtlX3BhaXIoSlNWYWx1
ZSgpLCBWYWxpZGF0aW9uRXJyb3IpOwogfQogCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9DU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvY3Nz
L0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5jcHAKaW5kZXggZDFiZWEwNGQ1NTNiZjY5NmYx
NmI4MTIyMGQ5OTQyMzEzOGQ0N2I3Yy4uNTY1ZmY1OTRlNGVkMmY0NjZiZjY2MDQ4MWQwYzRmODMy
NzNkNDI3NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0NvbXB1dGVkU3R5bGVE
ZWNsYXJhdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0NvbXB1dGVkU3R5bGVE
ZWNsYXJhdGlvbi5jcHAKQEAgLTIzMDIsNyArMjMwMiw3IEBAIFBhc3NSZWZQdHI8Q1NTVmFsdWU+
IENvbXB1dGVkU3R5bGVFeHRyYWN0b3I6OnByb3BlcnR5VmFsdWUoQ1NTUHJvcGVydHlJRCBwcm9w
ZXJ0CiAgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlPdXRsaW5lV2lkdGg6CiAgICAgICAgICAgICBy
ZXR1cm4gem9vbUFkanVzdGVkUGl4ZWxWYWx1ZShzdHlsZS0+b3V0bGluZVdpZHRoKCksIHN0eWxl
LmdldCgpKTsKICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eU92ZXJmbG93OgotICAgICAgICAgICAg
cmV0dXJuIGNzc1ZhbHVlUG9vbCgpLmNyZWF0ZVZhbHVlKG1heChzdHlsZS0+b3ZlcmZsb3dYKCks
IHN0eWxlLT5vdmVyZmxvd1koKSkpOworICAgICAgICAgICAgcmV0dXJuIGNzc1ZhbHVlUG9vbCgp
LmNyZWF0ZVZhbHVlKHN0ZDo6bWF4KHN0eWxlLT5vdmVyZmxvd1goKSwgc3R5bGUtPm92ZXJmbG93
WSgpKSk7CiAgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlPdmVyZmxvd1dyYXA6CiAgICAgICAgICAg
ICByZXR1cm4gY3NzVmFsdWVQb29sKCkuY3JlYXRlVmFsdWUoc3R5bGUtPm92ZXJmbG93V3JhcCgp
KTsKICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eU92ZXJmbG93WDoKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9DU1NGb250U2VsZWN0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NT
U0ZvbnRTZWxlY3Rvci5jcHAKaW5kZXggMWE2NGM3YTA3ZmI3NGYxNTRjNmY5M2NkMGY5MWM5NTk0
ZGRlZTY0OS4uMjExZGZhNWNiNGRkMDE5OTU2YTEzOGYwZmFjYzBmZjQzZWRkYWFlZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRTZWxlY3Rvci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvY3NzL0NTU0ZvbnRTZWxlY3Rvci5jcHAKQEAgLTU3LDggKzU3LDYgQEAKICNpbmNs
dWRlICJTVkdOYW1lcy5oIgogI2VuZGlmCiAKLXVzaW5nIG5hbWVzcGFjZSBzdGQ7Ci0KIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAogc3RhdGljIHVuc2lnbmVkIGZvbnRTZWxlY3RvcklkOwpAQCAtNTUw
LDcgKzU0OCw3IEBAIENTU1NlZ21lbnRlZEZvbnRGYWNlKiBDU1NGb250U2VsZWN0b3I6OmdldEZv
bnRGYWNlKGNvbnN0IEZvbnREZXNjcmlwdGlvbiYgZm9udERlCiAgICAgICAgIH0KIAogICAgICAg
ICBkZXNpcmVkVHJhaXRzTWFza0ZvckNvbXBhcmlzb24gPSB0cmFpdHNNYXNrOwotICAgICAgICBz
dGFibGVfc29ydChjYW5kaWRhdGVGb250RmFjZXMuYmVnaW4oKSwgY2FuZGlkYXRlRm9udEZhY2Vz
LmVuZCgpLCBjb21wYXJlRm9udEZhY2VzKTsKKyAgICAgICAgc3RkOjpzdGFibGVfc29ydChjYW5k
aWRhdGVGb250RmFjZXMuYmVnaW4oKSwgY2FuZGlkYXRlRm9udEZhY2VzLmVuZCgpLCBjb21wYXJl
Rm9udEZhY2VzKTsKICAgICAgICAgdW5zaWduZWQgbnVtQ2FuZGlkYXRlcyA9IGNhbmRpZGF0ZUZv
bnRGYWNlcy5zaXplKCk7CiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBudW1DYW5k
aWRhdGVzOyArK2kpCiAgICAgICAgICAgICBmYWNlLT5hcHBlbmRGb250RmFjZShjYW5kaWRhdGVG
b250RmFjZXNbaV0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0dyYWRpZW50
VmFsdWUuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0dyYWRpZW50VmFsdWUuY3BwCmluZGV4
IGJkMzgyY2FlZTE5NGIwMWFiMjc1MGZiNWIyYmNjYmIwMjZlYTliNDUuLmUzM2RlM2Q4NTE0NzMz
MDBjMDExZTAwN2FiZTMxOGRhMGNmZmIwY2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nz
cy9DU1NHcmFkaWVudFZhbHVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTR3JhZGll
bnRWYWx1ZS5jcHAKQEAgLTM5LDggKzM5LDYgQEAKICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdC
dWlsZGVyLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKLXVzaW5nIG5hbWVz
cGFjZSBzdGQ7Ci0KIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogUGFzc1JlZlB0cjxJbWFnZT4gQ1NT
R3JhZGllbnRWYWx1ZTo6aW1hZ2UoUmVuZGVyRWxlbWVudCogcmVuZGVyZXIsIGNvbnN0IEludFNp
emUmIHNpemUpCkBAIC0xMDQ5LDEwICsxMDQ3LDEwIEBAIFBhc3NSZWZQdHI8R3JhZGllbnQ+IENT
U1JhZGlhbEdyYWRpZW50VmFsdWU6OmNyZWF0ZUdyYWRpZW50KFJlbmRlckVsZW1lbnQqIHJlbmRl
CiAgICAgICAgIC8vIEhvcml6b250YWwKICAgICAgICAgc3dpdGNoIChmaWxsKSB7CiAgICAgICAg
IGNhc2UgQ2xvc2VzdFNpZGU6IHsKLSAgICAgICAgICAgIGZsb2F0IHhEaXN0ID0gbWluKHNlY29u
ZFBvaW50LngoKSwgc2l6ZS53aWR0aCgpIC0gc2Vjb25kUG9pbnQueCgpKTsKLSAgICAgICAgICAg
IGZsb2F0IHlEaXN0ID0gbWluKHNlY29uZFBvaW50LnkoKSwgc2l6ZS5oZWlnaHQoKSAtIHNlY29u
ZFBvaW50LnkoKSk7CisgICAgICAgICAgICBmbG9hdCB4RGlzdCA9IHN0ZDo6bWluKHNlY29uZFBv
aW50LngoKSwgc2l6ZS53aWR0aCgpIC0gc2Vjb25kUG9pbnQueCgpKTsKKyAgICAgICAgICAgIGZs
b2F0IHlEaXN0ID0gc3RkOjptaW4oc2Vjb25kUG9pbnQueSgpLCBzaXplLmhlaWdodCgpIC0gc2Vj
b25kUG9pbnQueSgpKTsKICAgICAgICAgICAgIGlmIChzaGFwZSA9PSBDaXJjbGUpIHsKLSAgICAg
ICAgICAgICAgICBmbG9hdCBzbWFsbGVyID0gbWluKHhEaXN0LCB5RGlzdCk7CisgICAgICAgICAg
ICAgICAgZmxvYXQgc21hbGxlciA9IHN0ZDo6bWluKHhEaXN0LCB5RGlzdCk7CiAgICAgICAgICAg
ICAgICAgeERpc3QgPSBzbWFsbGVyOwogICAgICAgICAgICAgICAgIHlEaXN0ID0gc21hbGxlcjsK
ICAgICAgICAgICAgIH0KQEAgLTEwNjEsMTAgKzEwNTksMTAgQEAgUGFzc1JlZlB0cjxHcmFkaWVu
dD4gQ1NTUmFkaWFsR3JhZGllbnRWYWx1ZTo6Y3JlYXRlR3JhZGllbnQoUmVuZGVyRWxlbWVudCog
cmVuZGUKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGNhc2UgRmFydGhl
c3RTaWRlOiB7Ci0gICAgICAgICAgICBmbG9hdCB4RGlzdCA9IG1heChzZWNvbmRQb2ludC54KCks
IHNpemUud2lkdGgoKSAtIHNlY29uZFBvaW50LngoKSk7Ci0gICAgICAgICAgICBmbG9hdCB5RGlz
dCA9IG1heChzZWNvbmRQb2ludC55KCksIHNpemUuaGVpZ2h0KCkgLSBzZWNvbmRQb2ludC55KCkp
OworICAgICAgICAgICAgZmxvYXQgeERpc3QgPSBzdGQ6Om1heChzZWNvbmRQb2ludC54KCksIHNp
emUud2lkdGgoKSAtIHNlY29uZFBvaW50LngoKSk7CisgICAgICAgICAgICBmbG9hdCB5RGlzdCA9
IHN0ZDo6bWF4KHNlY29uZFBvaW50LnkoKSwgc2l6ZS5oZWlnaHQoKSAtIHNlY29uZFBvaW50Lnko
KSk7CiAgICAgICAgICAgICBpZiAoc2hhcGUgPT0gQ2lyY2xlKSB7Ci0gICAgICAgICAgICAgICAg
ZmxvYXQgbGFyZ2VyID0gbWF4KHhEaXN0LCB5RGlzdCk7CisgICAgICAgICAgICAgICAgZmxvYXQg
bGFyZ2VyID0gc3RkOjptYXgoeERpc3QsIHlEaXN0KTsKICAgICAgICAgICAgICAgICB4RGlzdCA9
IGxhcmdlcjsKICAgICAgICAgICAgICAgICB5RGlzdCA9IGxhcmdlcjsKICAgICAgICAgICAgIH0K
QEAgLTEwODAsOCArMTA3OCw4IEBAIFBhc3NSZWZQdHI8R3JhZGllbnQ+IENTU1JhZGlhbEdyYWRp
ZW50VmFsdWU6OmNyZWF0ZUdyYWRpZW50KFJlbmRlckVsZW1lbnQqIHJlbmRlCiAgICAgICAgICAg
ICBlbHNlIHsKICAgICAgICAgICAgICAgICAvLyBJZiA8c2hhcGU+IGlzIGVsbGlwc2UsIHRoZSBn
cmFkaWVudC1zaGFwZSBoYXMgdGhlIHNhbWUgcmF0aW8gb2Ygd2lkdGggdG8gaGVpZ2h0CiAgICAg
ICAgICAgICAgICAgLy8gdGhhdCBpdCB3b3VsZCBpZiBjbG9zZXN0LXNpZGUgb3IgZmFydGhlc3Qt
c2lkZSB3ZXJlIHNwZWNpZmllZCwgYXMgYXBwcm9wcmlhdGUuCi0gICAgICAgICAgICAgICAgZmxv
YXQgeERpc3QgPSBtaW4oc2Vjb25kUG9pbnQueCgpLCBzaXplLndpZHRoKCkgLSBzZWNvbmRQb2lu
dC54KCkpOwotICAgICAgICAgICAgICAgIGZsb2F0IHlEaXN0ID0gbWluKHNlY29uZFBvaW50Lnko
KSwgc2l6ZS5oZWlnaHQoKSAtIHNlY29uZFBvaW50LnkoKSk7CisgICAgICAgICAgICAgICAgZmxv
YXQgeERpc3QgPSBzdGQ6Om1pbihzZWNvbmRQb2ludC54KCksIHNpemUud2lkdGgoKSAtIHNlY29u
ZFBvaW50LngoKSk7CisgICAgICAgICAgICAgICAgZmxvYXQgeURpc3QgPSBzdGQ6Om1pbihzZWNv
bmRQb2ludC55KCksIHNpemUuaGVpZ2h0KCkgLSBzZWNvbmRQb2ludC55KCkpOwogCiAgICAgICAg
ICAgICAgICAgc2Vjb25kUmFkaXVzID0gaG9yaXpvbnRhbEVsbGlwc2VSYWRpdXMoY29ybmVyIC0g
c2Vjb25kUG9pbnQsIHhEaXN0IC8geURpc3QpOwogICAgICAgICAgICAgICAgIGFzcGVjdFJhdGlv
ID0geERpc3QgLyB5RGlzdDsKQEAgLTEwOTcsOCArMTA5NSw4IEBAIFBhc3NSZWZQdHI8R3JhZGll
bnQ+IENTU1JhZGlhbEdyYWRpZW50VmFsdWU6OmNyZWF0ZUdyYWRpZW50KFJlbmRlckVsZW1lbnQq
IHJlbmRlCiAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAvLyBJZiA8c2hhcGU+
IGlzIGVsbGlwc2UsIHRoZSBncmFkaWVudC1zaGFwZSBoYXMgdGhlIHNhbWUgcmF0aW8gb2Ygd2lk
dGggdG8gaGVpZ2h0CiAgICAgICAgICAgICAgICAgLy8gdGhhdCBpdCB3b3VsZCBpZiBjbG9zZXN0
LXNpZGUgb3IgZmFydGhlc3Qtc2lkZSB3ZXJlIHNwZWNpZmllZCwgYXMgYXBwcm9wcmlhdGUuCi0g
ICAgICAgICAgICAgICAgZmxvYXQgeERpc3QgPSBtYXgoc2Vjb25kUG9pbnQueCgpLCBzaXplLndp
ZHRoKCkgLSBzZWNvbmRQb2ludC54KCkpOwotICAgICAgICAgICAgICAgIGZsb2F0IHlEaXN0ID0g
bWF4KHNlY29uZFBvaW50LnkoKSwgc2l6ZS5oZWlnaHQoKSAtIHNlY29uZFBvaW50LnkoKSk7Cisg
ICAgICAgICAgICAgICAgZmxvYXQgeERpc3QgPSBzdGQ6Om1heChzZWNvbmRQb2ludC54KCksIHNp
emUud2lkdGgoKSAtIHNlY29uZFBvaW50LngoKSk7CisgICAgICAgICAgICAgICAgZmxvYXQgeURp
c3QgPSBzdGQ6Om1heChzZWNvbmRQb2ludC55KCksIHNpemUuaGVpZ2h0KCkgLSBzZWNvbmRQb2lu
dC55KCkpOwogCiAgICAgICAgICAgICAgICAgc2Vjb25kUmFkaXVzID0gaG9yaXpvbnRhbEVsbGlw
c2VSYWRpdXMoY29ybmVyIC0gc2Vjb25kUG9pbnQsIHhEaXN0IC8geURpc3QpOwogICAgICAgICAg
ICAgICAgIGFzcGVjdFJhdGlvID0geERpc3QgLyB5RGlzdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9DU1NQYXJzZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNlci5j
cHAKaW5kZXggYTUwZjQxYTA4NWMyMWIxMDkxY2U3MDA1MTEyYzcwM2JhYjEzN2RhOS4uYTNjNGMy
MTExZGJmNWE1NjJhYTc2NTE1ODNjNWFiYzFhZDkyMWFhYSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvY3NzL0NTU1BhcnNlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNl
ci5jcHAKQEAgLTEyNyw3ICsxMjcsNiBAQCBleHRlcm4gaW50IGNzc3l5ZGVidWc7CiAKIGV4dGVy
biBpbnQgY3NzeXlwYXJzZShXZWJDb3JlOjpDU1NQYXJzZXIqKTsKIAotdXNpbmcgbmFtZXNwYWNl
IHN0ZDsKIHVzaW5nIG5hbWVzcGFjZSBXVEY7CiAKIG5hbWVzcGFjZSB7CkBAIC0yNTY5LDggKzI1
NjgsNyBAQCBib29sIENTU1BhcnNlcjo6cGFyc2VWYWx1ZShDU1NQcm9wZXJ0eUlEIHByb3BJZCwg
Ym9vbCBpbXBvcnRhbnQpCiAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdE9yZGVyOgogICAgICAg
ICBpZiAodmFsaWRVbml0KHZhbHVlLCBGSW50ZWdlciwgQ1NTU3RyaWN0TW9kZSkpIHsKICAgICAg
ICAgICAgIC8vIFdlIHJlc3RyaWN0IHRoZSBzbWFsbGVzdCB2YWx1ZSB0byBpbnQgbWluICsgMiBi
ZWNhdXNlIHdlIHVzZSBpbnQgbWluIGFuZCBpbnQgbWluICsgMSBhcyBzcGVjaWFsIHZhbHVlcyBp
biBhIGhhc2ggc2V0LgotICAgICAgICAgICAgcGFyc2VkVmFsdWUgPSBjc3NWYWx1ZVBvb2woKS5j
cmVhdGVWYWx1ZShtYXgoc3RhdGljX2Nhc3Q8ZG91YmxlPihzdGQ6Om51bWVyaWNfbGltaXRzPGlu
dD46Om1pbigpICsgMiksIHZhbHVlLT5mVmFsdWUpLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRpY19jYXN0PENTU1ByaW1p
dGl2ZVZhbHVlOjpVbml0VHlwZXM+KHZhbHVlLT51bml0KSk7CisgICAgICAgICAgICBwYXJzZWRW
YWx1ZSA9IGNzc1ZhbHVlUG9vbCgpLmNyZWF0ZVZhbHVlKHN0ZDo6bWF4PGRvdWJsZT4oc3RkOjpu
dW1lcmljX2xpbWl0czxpbnQ+OjptaW4oKSArIDIsIHZhbHVlLT5mVmFsdWUpLCBzdGF0aWNfY2Fz
dDxDU1NQcmltaXRpdmVWYWx1ZTo6VW5pdFR5cGVzPih2YWx1ZS0+dW5pdCkpOwogICAgICAgICAg
ICAgbV92YWx1ZUxpc3QtPm5leHQoKTsKICAgICAgICAgfQogICAgICAgICBicmVhazsKQEAgLTY0
ODAsNyArNjQ3OCw3IEBAIGJvb2wgQ1NTUGFyc2VyOjpwYXJzZUNvbG9yUGFyYW1ldGVycyhDU1NQ
YXJzZXJWYWx1ZSogdmFsdWUsIGludCogY29sb3JBcnJheSwgYm9vCiAgICAgICAgIGNvbnN0IGRv
dWJsZSB2YWx1ZSA9IHBhcnNlZERvdWJsZSh2LCBSZWxlYXNlUGFyc2VkQ2FsY1ZhbHVlKTsKICAg
ICAgICAgLy8gQ29udmVydCB0aGUgZmxvYXRpbmcgcG9pbnRlciBudW1iZXIgb2YgYWxwaGEgdG8g
YW4gaW50ZWdlciBpbiB0aGUgcmFuZ2UgWzAsIDI1NiksCiAgICAgICAgIC8vIHdpdGggYW4gZXF1
YWwgZGlzdHJpYnV0aW9uIGFjcm9zcyBhbGwgMjU2IHZhbHVlcy4KLSAgICAgICAgY29sb3JBcnJh
eVszXSA9IHN0YXRpY19jYXN0PGludD4obWF4KDAuMCwgbWluKDEuMCwgdmFsdWUpKSAqIG5leHRh
ZnRlcigyNTYuMCwgMC4wKSk7CisgICAgICAgIGNvbG9yQXJyYXlbM10gPSBzdGF0aWNfY2FzdDxp
bnQ+KHN0ZDo6bWF4PGRvdWJsZT4oMCwgc3RkOjptaW48ZG91YmxlPigxLCB2YWx1ZSkpICogbmV4
dGFmdGVyKDI1Ni4wLCAwLjApKTsKICAgICB9CiAgICAgcmV0dXJuIHRydWU7CiB9CkBAIC02NTA2
LDcgKzY1MDQsNyBAQCBib29sIENTU1BhcnNlcjo6cGFyc2VIU0xQYXJhbWV0ZXJzKENTU1BhcnNl
clZhbHVlKiB2YWx1ZSwgZG91YmxlKiBjb2xvckFycmF5LCBibwogICAgICAgICB2ID0gYXJncy0+
bmV4dCgpOwogICAgICAgICBpZiAoIXZhbGlkVW5pdCh2LCBGUGVyY2VudCwgQ1NTU3RyaWN0TW9k
ZSkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIGNvbG9yQXJyYXlbaV0gPSBt
YXgoMC4wLCBtaW4oMTAwLjAsIHBhcnNlZERvdWJsZSh2LCBSZWxlYXNlUGFyc2VkQ2FsY1ZhbHVl
KSkpIC8gMTAwLjA7IC8vIG5lZWRzIHRvIGJlIHZhbHVlIGJldHdlZW4gMCBhbmQgMS4wCisgICAg
ICAgIGNvbG9yQXJyYXlbaV0gPSBzdGQ6Om1heDxkb3VibGU+KDAsIHN0ZDo6bWluPGRvdWJsZT4o
MTAwLCBwYXJzZWREb3VibGUodiwgUmVsZWFzZVBhcnNlZENhbGNWYWx1ZSkpKSAvIDEwMC4wOyAv
LyBuZWVkcyB0byBiZSB2YWx1ZSBiZXR3ZWVuIDAgYW5kIDEuMAogICAgIH0KICAgICBpZiAocGFy
c2VBbHBoYSkgewogICAgICAgICB2ID0gYXJncy0+bmV4dCgpOwpAQCAtNjUxNSw3ICs2NTEzLDcg
QEAgYm9vbCBDU1NQYXJzZXI6OnBhcnNlSFNMUGFyYW1ldGVycyhDU1NQYXJzZXJWYWx1ZSogdmFs
dWUsIGRvdWJsZSogY29sb3JBcnJheSwgYm8KICAgICAgICAgdiA9IGFyZ3MtPm5leHQoKTsKICAg
ICAgICAgaWYgKCF2YWxpZFVuaXQodiwgRk51bWJlciwgQ1NTU3RyaWN0TW9kZSkpCiAgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIGNvbG9yQXJyYXlbM10gPSBtYXgoMC4wLCBtaW4o
MS4wLCBwYXJzZWREb3VibGUodiwgUmVsZWFzZVBhcnNlZENhbGNWYWx1ZSkpKTsKKyAgICAgICAg
Y29sb3JBcnJheVszXSA9IHN0ZDo6bWF4PGRvdWJsZT4oMCwgc3RkOjptaW48ZG91YmxlPigxLCBw
YXJzZWREb3VibGUodiwgUmVsZWFzZVBhcnNlZENhbGNWYWx1ZSkpKTsKICAgICB9CiAgICAgcmV0
dXJuIHRydWU7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUmVmbGVjdFZh
bHVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NSZWZsZWN0VmFsdWUuY3BwCmluZGV4IDE1
YWU4ZmFmYjM4YTk1MzM2M2UxOGNkNGZjM2M5Njk4NTdlYTRkYjEuLjhhZTgzY2Y1ZTg1ZDg3ZTg2
YTA4N2UzZDQ5M2YzNmJiZWQ2MDJhZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9D
U1NSZWZsZWN0VmFsdWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NSZWZsZWN0VmFs
dWUuY3BwCkBAIC0yOSw4ICsyOSw2IEBACiAjaW5jbHVkZSAiQ1NTUHJpbWl0aXZlVmFsdWUuaCIK
ICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+CiAKLXVzaW5nIG5hbWVzcGFjZSBz
dGQ7Ci0KIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogU3RyaW5nIENTU1JlZmxlY3RWYWx1ZTo6Y3Vz
dG9tQ1NTVGV4dCgpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvRGVwcmVj
YXRlZFN0eWxlQnVpbGRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvRGVwcmVjYXRlZFN0eWxl
QnVpbGRlci5jcHAKaW5kZXggNzA3NDkwMGE2MDc3MWZkYmQ2ODFjZjA4OWE1OWQ0ZWFiYzUxNzJk
NS4uMDAwZjQ3MzAyODAxNTliMDJlMWQ0ZjMyZjVlMGZhYzdmN2I4NmZjNiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvY3NzL0RlcHJlY2F0ZWRTdHlsZUJ1aWxkZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9EZXByZWNhdGVkU3R5bGVCdWlsZGVyLmNwcApAQCAtNTMsOCArNTMsNiBA
QAogI2luY2x1ZGUgIlNoYXBlVmFsdWUuaCIKICNlbmRpZgogCi11c2luZyBuYW1lc3BhY2Ugc3Rk
OwotCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGVudW0gRXhwYW5kVmFsdWVCZWhhdmlvciB7U3Vw
cHJlc3NWYWx1ZSA9IDAsIEV4cGFuZFZhbHVlfTsKQEAgLTg4Myw3ICs4ODEsNyBAQCBwdWJsaWM6
CiAKICAgICAgICAgLy8gT3Zlcmx5IGxhcmdlIGZvbnQgc2l6ZXMgd2lsbCBjYXVzZSBjcmFzaGVz
IG9uIHNvbWUgcGxhdGZvcm1zIChzdWNoIGFzIFdpbmRvd3MpLgogICAgICAgICAvLyBDYXAgZm9u
dCBzaXplIGhlcmUgdG8gbWFrZSBzdXJlIHRoYXQgZG9lc24ndCBoYXBwZW4uCi0gICAgICAgIHNp
emUgPSBtaW4obWF4aW11bUFsbG93ZWRGb250U2l6ZSwgc2l6ZSk7CisgICAgICAgIHNpemUgPSBz
dGQ6Om1pbihtYXhpbXVtQWxsb3dlZEZvbnRTaXplLCBzaXplKTsKIAogICAgICAgICBzdHlsZVJl
c29sdmVyLT5zZXRGb250U2l6ZShmb250RGVzY3JpcHRpb24sIHNpemUpOwogICAgICAgICBzdHls
ZVJlc29sdmVyLT5zZXRGb250RGVzY3JpcHRpb24oZm9udERlc2NyaXB0aW9uKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9Qcm9wZXJ0eVNldENTU1N0eWxlRGVjbGFyYXRpb24uY3Bw
IGIvU291cmNlL1dlYkNvcmUvY3NzL1Byb3BlcnR5U2V0Q1NTU3R5bGVEZWNsYXJhdGlvbi5jcHAK
aW5kZXggMWQ4MDJmNWQxODk0ZTM3N2Q0Nzk0ODY1N2I3YmMyZjcxMmQ3ODJkMC4uZGEyOGE0Y2My
NDU4MDAzOTczZmE1Yjc3OWQ2MmFkMjM0YzllNjFkNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvY3NzL1Byb3BlcnR5U2V0Q1NTU3R5bGVEZWNsYXJhdGlvbi5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvY3NzL1Byb3BlcnR5U2V0Q1NTU3R5bGVEZWNsYXJhdGlvbi5jcHAKQEAgLTMxLDggKzMx
LDYgQEAKICNpbmNsdWRlICJTdHlsZVByb3BlcnR5U2V0LmgiCiAjaW5jbHVkZSAiU3R5bGVkRWxl
bWVudC5oIgogCi11c2luZyBuYW1lc3BhY2Ugc3RkOwotCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
IG5hbWVzcGFjZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU1ZHQ1NTUGFyc2Vy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TVkdDU1NQYXJzZXIuY3BwCmluZGV4IGRmZGM3NGU4
YmEzOTIzMjQyNmQ0NWEyNDNjNGU2M2RkZGMwMDJiNDMuLjllNTJlOWNjMTU4YTczNWNjNjA4ZmM0
MWUxMjZhZDNlOTI0OTg0OTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TVkdDU1NQ
YXJzZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TVkdDU1NQYXJzZXIuY3BwCkBAIC0z
Miw4ICszMiw2IEBACiAjaW5jbHVkZSAiUmVuZGVyVGhlbWUuaCIKICNpbmNsdWRlICJTVkdQYWlu
dC5oIgogCi11c2luZyBuYW1lc3BhY2Ugc3RkOwotCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGJv
b2wgQ1NTUGFyc2VyOjpwYXJzZVNWR1ZhbHVlKENTU1Byb3BlcnR5SUQgcHJvcElkLCBib29sIGlt
cG9ydGFudCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVByb3BlcnR5U2V0
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVByb3BlcnR5U2V0LmNwcAppbmRleCBiZWE3
ZDQwMThkMmI3MDc1MDU5Y2JjZjA5OTEyNGQ5Njg1NGE2MDA5Li5kMDY5ODZjYzY0M2JiOTA1YTBj
YmMxYjIyZTM1ZTUyNGExMThiODVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5
bGVQcm9wZXJ0eVNldC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUHJvcGVydHlT
ZXQuY3BwCkBAIC00NSw4ICs0NSw2IEBACiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgog
I2VuZGlmCiAKLXVzaW5nIG5hbWVzcGFjZSBzdGQ7Ci0KIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAog
c3RhdGljIHNpemVfdCBzaXplRm9ySW1tdXRhYmxlU3R5bGVQcm9wZXJ0eVNldFdpdGhQcm9wZXJ0
eUNvdW50KHVuc2lnbmVkIGNvdW50KQpAQCAtMzY3LDkgKzM2NSw5IEBAIFN0cmluZyBTdHlsZVBy
b3BlcnR5U2V0OjpnZXRMYXllcmVkU2hvcnRoYW5kVmFsdWUoY29uc3QgU3R5bGVQcm9wZXJ0eVNo
b3J0aGFuZCYKICAgICAgICAgdmFsdWVzW2ldID0gZ2V0UHJvcGVydHlDU1NWYWx1ZShzaG9ydGhh
bmQucHJvcGVydGllcygpW2ldKTsKICAgICAgICAgaWYgKHZhbHVlc1tpXSkgewogICAgICAgICAg
ICAgaWYgKHZhbHVlc1tpXS0+aXNCYXNlVmFsdWVMaXN0KCkpCi0gICAgICAgICAgICAgICAgbnVt
TGF5ZXJzID0gbWF4KHRvQ1NTVmFsdWVMaXN0KHZhbHVlc1tpXS5nZXQoKSktPmxlbmd0aCgpLCBu
dW1MYXllcnMpOworICAgICAgICAgICAgICAgIG51bUxheWVycyA9IHN0ZDo6bWF4KHRvQ1NTVmFs
dWVMaXN0KHZhbHVlc1tpXS5nZXQoKSktPmxlbmd0aCgpLCBudW1MYXllcnMpOwogICAgICAgICAg
ICAgZWxzZQotICAgICAgICAgICAgICAgIG51bUxheWVycyA9IG1heDxzaXplX3Q+KDFVLCBudW1M
YXllcnMpOworICAgICAgICAgICAgICAgIG51bUxheWVycyA9IHN0ZDo6bWF4PHNpemVfdD4oMVUs
IG51bUxheWVycyk7CiAgICAgICAgIH0KICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2Nzcy9TdHlsZVJlc29sdmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29s
dmVyLmNwcAppbmRleCAzYzhlNzgxYWMyNjAyNjlmZjUyNmVmYzk0MjBmZWY3NDYwMjEzZDRlLi5l
N2FmNjNmMTE3NzA0MjBkMjM3YTVkNTQ4Y2QyY2QwNjk0ZmMzMTY5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3Nz
L1N0eWxlUmVzb2x2ZXIuY3BwCkBAIC0xODcsOCArMTg3LDYgQEAKICNpbmNsdWRlICJXZWJWVFRF
bGVtZW50LmgiCiAjZW5kaWYKIAotdXNpbmcgbmFtZXNwYWNlIHN0ZDsKLQogbmFtZXNwYWNlIFdl
YkNvcmUgewogCiB1c2luZyBuYW1lc3BhY2UgSFRNTE5hbWVzOwpAQCAtNDEyMSw5ICs0MTE5LDkg
QEAgaW50IFN0eWxlUmVzb2x2ZXI6OnZpZXdwb3J0UGVyY2VudGFnZVZhbHVlKENTU1ByaW1pdGl2
ZVZhbHVlJiB1bml0LCBpbnQgcGVyY2VudGEKICAgICBpZiAodW5pdC5pc1ZpZXdwb3J0UGVyY2Vu
dGFnZVdpZHRoKCkpCiAgICAgICAgIHJldHVybiB2aWV3UG9ydFdpZHRoOwogICAgIGlmICh1bml0
LmlzVmlld3BvcnRQZXJjZW50YWdlTWF4KCkpCi0gICAgICAgIHJldHVybiBtYXgodmlld1BvcnRX
aWR0aCwgdmlld1BvcnRIZWlnaHQpOworICAgICAgICByZXR1cm4gc3RkOjptYXgodmlld1BvcnRX
aWR0aCwgdmlld1BvcnRIZWlnaHQpOwogICAgIGlmICh1bml0LmlzVmlld3BvcnRQZXJjZW50YWdl
TWluKCkpCi0gICAgICAgIHJldHVybiBtaW4odmlld1BvcnRXaWR0aCwgdmlld1BvcnRIZWlnaHQp
OworICAgICAgICByZXR1cm4gc3RkOjptaW4odmlld1BvcnRXaWR0aCwgdmlld1BvcnRIZWlnaHQp
OwogCiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgcmV0dXJuIDA7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9kb20vQ2hhcmFjdGVyRGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9k
b20vQ2hhcmFjdGVyRGF0YS5jcHAKaW5kZXggYTJjNzYzYzQyNzE3NzI2MDg1MzgxNDg3MTE3YzI2
ZTViZjk1NzA2Ny4uNzEwZGE1ZWU0ZDYyODc4NDM1MzU1Mzk4Zjg4YjA1MWNiYTcyNjJkYyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0NoYXJhY3RlckRhdGEuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9DaGFyYWN0ZXJEYXRhLmNwcApAQCAtMzgsOCArMzgsNiBAQAogI2luY2x1
ZGUgIlRleHRCcmVha0l0ZXJhdG9yLmgiCiAjaW5jbHVkZSA8d3RmL1JlZi5oPgogCi11c2luZyBu
YW1lc3BhY2Ugc3RkOwotCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHZvaWQgQ2hhcmFjdGVyRGF0
YTo6c2V0RGF0YShjb25zdCBTdHJpbmcmIGRhdGEsIEV4Y2VwdGlvbkNvZGUmKQpAQCAtNzIsNyAr
NzAsNyBAQCB1bnNpZ25lZCBDaGFyYWN0ZXJEYXRhOjpwYXJzZXJBcHBlbmREYXRhKGNvbnN0IFN0
cmluZyYgc3RyaW5nLCB1bnNpZ25lZCBvZmZzZXQsCiAgICAgQVNTRVJUKGxlbmd0aExpbWl0ID49
IG9sZExlbmd0aCk7CiAKICAgICB1bnNpZ25lZCBjaGFyYWN0ZXJMZW5ndGggPSBzdHJpbmcubGVu
Z3RoKCkgLSBvZmZzZXQ7Ci0gICAgdW5zaWduZWQgY2hhcmFjdGVyTGVuZ3RoTGltaXQgPSBtaW4o
Y2hhcmFjdGVyTGVuZ3RoLCBsZW5ndGhMaW1pdCAtIG9sZExlbmd0aCk7CisgICAgdW5zaWduZWQg
Y2hhcmFjdGVyTGVuZ3RoTGltaXQgPSBzdGQ6Om1pbihjaGFyYWN0ZXJMZW5ndGgsIGxlbmd0aExp
bWl0IC0gb2xkTGVuZ3RoKTsKIAogICAgIC8vIENoZWNrIHRoYXQgd2UgYXJlIG5vdCBvbiBhbiB1
bmJyZWFrYWJsZSBib3VuZGFyeS4KICAgICAvLyBTb21lIHRleHQgYnJlYWsgaXRlcmF0b3IgaW1w
bGVtZW50YXRpb25zIHdvcmsgYmVzdCBpZiB0aGUgcGFzc2VkIGJ1ZmZlciBpcyBhcyBzbWFsbCBh
cyBwb3NzaWJsZSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Db250YWluZXJOb2Rl
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Db250YWluZXJOb2RlLmNwcAppbmRleCBjMGFlYWQz
OTcyNDM0OWM1ZWU1MDE2YzVhMzY4MmZkZTM5NDhjMWYxLi4zMjQ0ZDgyMTEyMDY4NDAwYmIxOTM5
OWFhYTk0YWNjMmEyY2FmMWE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vQ29udGFp
bmVyTm9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0NvbnRhaW5lck5vZGUuY3BwCkBA
IC02NCw4ICs2NCw2IEBACiAjaW5jbHVkZSAiRGVsZXRlQnV0dG9uQ29udHJvbGxlci5oIgogI2Vu
ZGlmCiAKLXVzaW5nIG5hbWVzcGFjZSBzdGQ7Ci0KIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogc3Rh
dGljIHZvaWQgZGlzcGF0Y2hDaGlsZEluc2VydGlvbkV2ZW50cyhOb2RlJik7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0Rv
Y3VtZW50LmNwcAppbmRleCBkYTUxZTMzYjNhY2YxOThkZmYxNjhhMzEwOGQ3NWZiYzBjMGQwYTI0
Li5lZGM4YTI1ODgzZTgxMzI1ZjY5YjZkYTdlOWE2YjExOGQzYzIyMWYwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9E
b2N1bWVudC5jcHAKQEAgLTIyNCw3ICsyMjQsNiBAQAogI2luY2x1ZGUgIkNhcHRpb25Vc2VyUHJl
ZmVyZW5jZXMuaCIKICNlbmRpZgogCi11c2luZyBuYW1lc3BhY2Ugc3RkOwogdXNpbmcgbmFtZXNw
YWNlIFdURjsKIHVzaW5nIG5hbWVzcGFjZSBVbmljb2RlOwogCkBAIC0yNDgyLDcgKzI0ODEsNyBA
QCBpbnQgRG9jdW1lbnQ6Om1pbmltdW1MYXlvdXREZWxheSgpCiAgICAgbV9vdmVyTWluaW11bUxh
eW91dFRocmVzaG9sZCA9IGVsYXBzZWQgPiBjTGF5b3V0U2NoZWR1bGVUaHJlc2hvbGQ7CiAgICAg
CiAgICAgLy8gV2UnbGwgd2FudCB0byBzY2hlZHVsZSB0aGUgdGltZXIgdG8gZmlyZSBhdCB0aGUg
bWluaW11bSBsYXlvdXQgdGhyZXNob2xkLgotICAgIHJldHVybiBtYXgoMCwgY0xheW91dFNjaGVk
dWxlVGhyZXNob2xkIC0gZWxhcHNlZCk7CisgICAgcmV0dXJuIHN0ZDo6bWF4KDAsIGNMYXlvdXRT
Y2hlZHVsZVRocmVzaG9sZCAtIGVsYXBzZWQpOwogfQogCiBpbnQgRG9jdW1lbnQ6OmVsYXBzZWRU
aW1lKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcAppbmRleCA1MGM4MjM3MjUyZWU3MWZiNTc3YWM1MmE2
OTdhYmFhNjRhNjIwYTg3Li42ZTMzOGRhMDY5MWJhOWI4MjZlZjQ4MWZhMThiOWJhNTk3NzRjYjRj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvZG9tL05vZGUuY3BwCkBAIC0xMjIsOCArMTIyLDYgQEAKICNpbmNsdWRlICJJbnNwZWN0
b3JDb250cm9sbGVyLmgiCiAjZW5kaWYKIAotdXNpbmcgbmFtZXNwYWNlIHN0ZDsKLQogbmFtZXNw
YWNlIFdlYkNvcmUgewogCiB1c2luZyBuYW1lc3BhY2UgSFRNTE5hbWVzOwpAQCAtMTUwOCw3ICsx
NTA2LDcgQEAgdW5zaWduZWQgc2hvcnQgTm9kZTo6Y29tcGFyZURvY3VtZW50UG9zaXRpb24oTm9k
ZSogb3RoZXJOb2RlKQogICAgICAgICByZXR1cm4gY29tcGFyZURldGFjaGVkRWxlbWVudHNQb3Np
dGlvbih0aGlzLCBvdGhlck5vZGUpOwogCiAgICAgLy8gV2FsayB0aGUgdHdvIGNoYWlucyBiYWNr
d2FyZHMgYW5kIGxvb2sgZm9yIHRoZSBmaXJzdCBkaWZmZXJlbmNlLgotICAgIGZvciAodW5zaWdu
ZWQgaSA9IG1pbihpbmRleDEsIGluZGV4Mik7IGk7IC0taSkgeworICAgIGZvciAodW5zaWduZWQg
aSA9IHN0ZDo6bWluKGluZGV4MSwgaW5kZXgyKTsgaTsgLS1pKSB7CiAgICAgICAgIE5vZGUqIGNo
aWxkMSA9IGNoYWluMVstLWluZGV4MV07CiAgICAgICAgIE5vZGUqIGNoaWxkMiA9IGNoYWluMlst
LWluZGV4Ml07CiAgICAgICAgIGlmIChjaGlsZDEgIT0gY2hpbGQyKSB7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9kb20vUmFuZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL1JhbmdlLmNw
cAppbmRleCA2YWVmN2VhZWVjNjhhMjE3OWQ1OTQ2NjllNzNjMTg5YzhjNGI3MGFmLi43YWJhMTc1
YWNjMWQ3YzAyYWZiMWFiNWEwYTdlMzMzOGEyZGQyZjZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vUmFuZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9SYW5nZS5jcHAKQEAg
LTU3LDcgKzU3LDYgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi11c2luZyBuYW1lc3BhY2Ug
c3RkOwogdXNpbmcgbmFtZXNwYWNlIEhUTUxOYW1lczsKIAogREVGSU5FX0RFQlVHX09OTFlfR0xP
QkFMKFdURjo6UmVmQ291bnRlZExlYWtDb3VudGVyLCByYW5nZUNvdW50ZXIsICgiUmFuZ2UiKSk7
CkBAIC0xMDcyLDggKzEwNzEsOCBAQCBTdHJpbmcgUmFuZ2U6OnRvU3RyaW5nKEV4Y2VwdGlvbkNv
ZGUmIGVjKSBjb25zdAogICAgICAgICBpZiAobi0+bm9kZVR5cGUoKSA9PSBOb2RlOjpURVhUX05P
REUgfHwgbi0+bm9kZVR5cGUoKSA9PSBOb2RlOjpDREFUQV9TRUNUSU9OX05PREUpIHsKICAgICAg
ICAgICAgIGNvbnN0IFN0cmluZyYgZGF0YSA9IHN0YXRpY19jYXN0PENoYXJhY3RlckRhdGEqPihu
KS0+ZGF0YSgpOwogICAgICAgICAgICAgaW50IGxlbmd0aCA9IGRhdGEubGVuZ3RoKCk7Ci0gICAg
ICAgICAgICBpbnQgc3RhcnQgPSAobiA9PSBtX3N0YXJ0LmNvbnRhaW5lcigpKSA/IG1pbihtYXgo
MCwgbV9zdGFydC5vZmZzZXQoKSksIGxlbmd0aCkgOiAwOwotICAgICAgICAgICAgaW50IGVuZCA9
IChuID09IG1fZW5kLmNvbnRhaW5lcigpKSA/IG1pbihtYXgoc3RhcnQsIG1fZW5kLm9mZnNldCgp
KSwgbGVuZ3RoKSA6IGxlbmd0aDsKKyAgICAgICAgICAgIGludCBzdGFydCA9IChuID09IG1fc3Rh
cnQuY29udGFpbmVyKCkpID8gc3RkOjptaW4oc3RkOjptYXgoMCwgbV9zdGFydC5vZmZzZXQoKSks
IGxlbmd0aCkgOiAwOworICAgICAgICAgICAgaW50IGVuZCA9IChuID09IG1fZW5kLmNvbnRhaW5l
cigpKSA/IHN0ZDo6bWluKHN0ZDo6bWF4KHN0YXJ0LCBtX2VuZC5vZmZzZXQoKSksIGxlbmd0aCkg
OiBsZW5ndGg7CiAgICAgICAgICAgICBidWlsZGVyLmFwcGVuZChkYXRhLCBzdGFydCwgZW5kIC0g
c3RhcnQpOwogICAgICAgICB9CiAgICAgfQpAQCAtMTYxNCw3ICsxNjEzLDcgQEAgdm9pZCBSYW5n
ZTo6dGV4dFJlY3RzKFZlY3RvcjxJbnRSZWN0PiYgcmVjdHMsIGJvb2wgdXNlU2VsZWN0aW9uSGVp
Z2h0LCBSYW5nZUluRmkKICAgICAgICAgICAgIHItPmFic29sdXRlUmVjdHMocmVjdHMsIGZsb29y
ZWRMYXlvdXRQb2ludChyLT5sb2NhbFRvQWJzb2x1dGUoKSkpOwogICAgICAgICBlbHNlIGlmIChy
LT5pc1RleHQoKSkgewogICAgICAgICAgICAgaW50IHN0YXJ0T2Zmc2V0ID0gbm9kZSA9PSBzdGFy
dENvbnRhaW5lciA/IG1fc3RhcnQub2Zmc2V0KCkgOiAwOwotICAgICAgICAgICAgaW50IGVuZE9m
ZnNldCA9IG5vZGUgPT0gZW5kQ29udGFpbmVyID8gbV9lbmQub2Zmc2V0KCkgOiBudW1lcmljX2xp
bWl0czxpbnQ+OjptYXgoKTsKKyAgICAgICAgICAgIGludCBlbmRPZmZzZXQgPSBub2RlID09IGVu
ZENvbnRhaW5lciA/IG1fZW5kLm9mZnNldCgpIDogc3RkOjpudW1lcmljX2xpbWl0czxpbnQ+Ojpt
YXgoKTsKICAgICAgICAgICAgIHJlY3RzLmFwcGVuZFZlY3Rvcih0b1JlbmRlclRleHQociktPmFi
c29sdXRlUmVjdHNGb3JSYW5nZShzdGFydE9mZnNldCwgZW5kT2Zmc2V0LCB1c2VTZWxlY3Rpb25I
ZWlnaHQsICZpc0ZpeGVkKSk7CiAgICAgICAgIH0gZWxzZQogICAgICAgICAgICAgY29udGludWU7
CkBAIC0xNjUwLDcgKzE2NDksNyBAQCB2b2lkIFJhbmdlOjp0ZXh0UXVhZHMoVmVjdG9yPEZsb2F0
UXVhZD4mIHF1YWRzLCBib29sIHVzZVNlbGVjdGlvbkhlaWdodCwgUmFuZ2VJbgogICAgICAgICAg
ICAgci0+YWJzb2x1dGVRdWFkcyhxdWFkcywgJmlzRml4ZWQpOwogICAgICAgICBlbHNlIGlmIChy
LT5pc1RleHQoKSkgewogICAgICAgICAgICAgaW50IHN0YXJ0T2Zmc2V0ID0gbm9kZSA9PSBzdGFy
dENvbnRhaW5lciA/IG1fc3RhcnQub2Zmc2V0KCkgOiAwOwotICAgICAgICAgICAgaW50IGVuZE9m
ZnNldCA9IG5vZGUgPT0gZW5kQ29udGFpbmVyID8gbV9lbmQub2Zmc2V0KCkgOiBudW1lcmljX2xp
bWl0czxpbnQ+OjptYXgoKTsKKyAgICAgICAgICAgIGludCBlbmRPZmZzZXQgPSBub2RlID09IGVu
ZENvbnRhaW5lciA/IG1fZW5kLm9mZnNldCgpIDogc3RkOjpudW1lcmljX2xpbWl0czxpbnQ+Ojpt
YXgoKTsKICAgICAgICAgICAgIHF1YWRzLmFwcGVuZFZlY3Rvcih0b1JlbmRlclRleHQociktPmFi
c29sdXRlUXVhZHNGb3JSYW5nZShzdGFydE9mZnNldCwgZW5kT2Zmc2V0LCB1c2VTZWxlY3Rpb25I
ZWlnaHQsICZpc0ZpeGVkKSk7CiAgICAgICAgIH0gZWxzZQogICAgICAgICAgICAgY29udGludWU7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0ZWRBbmltYXRpb25Db250cm9s
bGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRlZEFuaW1hdGlvbkNvbnRyb2xsZXIu
Y3BwCmluZGV4IDM0YzgxZDA3ODA5NzU0ZGM0MzE3MTE1Mzc3ZTc4OWQ5MjUzMjNmYzcuLjY1Yjk1
Y2JlMzNjMDMxOTkxN2IzNTIyNzg4MjVhMjBiZTE1YzQ5NzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9TY3JpcHRlZEFuaW1hdGlvbkNvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9TY3JpcHRlZEFuaW1hdGlvbkNvbnRyb2xsZXIuY3BwCkBAIC00MCw4ICs0MCw2
IEBACiAjaW5jbHVkZSA8YWxnb3JpdGhtPgogI2luY2x1ZGUgPHd0Zi9DdXJyZW50VGltZS5oPgog
Ci11c2luZyBuYW1lc3BhY2Ugc3RkOwotCiAvLyBBbGxvdyBhIGxpdHRsZSBtb3JlIHRoYW4gNjBm
cHMgdG8gbWFrZSBzdXJlIHdlIGNhbiBhdCBsZWFzdCBoaXQgdGhhdCBmcmFtZSByYXRlLgogI2Rl
ZmluZSBNaW5pbXVtQW5pbWF0aW9uSW50ZXJ2YWwgMC4wMTUKICNkZWZpbmUgTWluaW11bVRocm90
dGxlZEFuaW1hdGlvbkludGVydmFsIDEwCkBAIC0yMDIsNyArMjAwLDcgQEAgdm9pZCBTY3JpcHRl
ZEFuaW1hdGlvbkNvbnRyb2xsZXI6OnNjaGVkdWxlQW5pbWF0aW9uKCkKICAgICAgICAgYW5pbWF0
aW9uSW50ZXJ2YWwgPSBNaW5pbXVtVGhyb3R0bGVkQW5pbWF0aW9uSW50ZXJ2YWw7CiAjZW5kaWYK
IAotICAgIGRvdWJsZSBzY2hlZHVsZURlbGF5ID0gbWF4PGRvdWJsZT4oYW5pbWF0aW9uSW50ZXJ2
YWwgLSAobW9ub3RvbmljYWxseUluY3JlYXNpbmdUaW1lKCkgLSBtX2xhc3RBbmltYXRpb25GcmFt
ZVRpbWVNb25vdG9uaWMpLCAwKTsKKyAgICBkb3VibGUgc2NoZWR1bGVEZWxheSA9IHN0ZDo6bWF4
PGRvdWJsZT4oYW5pbWF0aW9uSW50ZXJ2YWwgLSAobW9ub3RvbmljYWxseUluY3JlYXNpbmdUaW1l
KCkgLSBtX2xhc3RBbmltYXRpb25GcmFtZVRpbWVNb25vdG9uaWMpLCAwKTsKICAgICBtX2FuaW1h
dGlvblRpbWVyLnN0YXJ0T25lU2hvdChzY2hlZHVsZURlbGF5KTsKICNlbHNlCiAgICAgaWYgKEZy
YW1lVmlldyogZnJhbWVWaWV3ID0gbV9kb2N1bWVudC0+dmlldygpKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvZG9tL1N0eWxlZEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL1N0
eWxlZEVsZW1lbnQuY3BwCmluZGV4IGM1ZDUzN2EwYjdiM2IyMDRiZDI4OTBjMjU1YTIyZjVkZWM3
NjViMDQuLjM4NjhhZDJkNzBlMDA1NzdlM2E2ZDg1NWQ2OWU0M2Y0MTY4NTU1OTAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TdHlsZWRFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vU3R5bGVkRWxlbWVudC5jcHAKQEAgLTQ1LDggKzQ1LDYgQEAKICNpbmNsdWRlIDx3
dGYvSGFzaEZ1bmN0aW9ucy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1RleHRQb3NpdGlvbi5oPgog
Ci11c2luZyBuYW1lc3BhY2Ugc3RkOwotCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIENPTVBJTEVf
QVNTRVJUKHNpemVvZihTdHlsZWRFbGVtZW50KSA9PSBzaXplb2YoRWxlbWVudCksIHN0eWxlZGVs
ZW1lbnRfc2hvdWxkX3JlbWFpbl9zYW1lX3NpemVfYXNfZWxlbWVudCk7CkBAIC0zMDQsNyArMzAy
LDcgQEAgdm9pZCBTdHlsZWRFbGVtZW50OjptYWtlUHJlc2VudGF0aW9uQXR0cmlidXRlQ2FjaGVL
ZXkoUHJlc2VudGF0aW9uQXR0cmlidXRlQ2FjaGUKICAgICAgICAgLy8gRklYTUU6IEJhY2tncm91
bmQgVVJMIG1heSBkZXBlbmQgb24gdGhlIGJhc2UgVVJMIGFuZCBjYW4ndCBiZSBzaGFyZWQuIERp
c2FsbG93IGNhY2hpbmcuCiAgICAgICAgIGlmIChhdHRyaWJ1dGUubmFtZSgpID09IGJhY2tncm91
bmRBdHRyKQogICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICByZXN1bHQuYXR0cmlidXRlc0Fu
ZFZhbHVlcy5hcHBlbmQobWFrZV9wYWlyKGF0dHJpYnV0ZS5sb2NhbE5hbWUoKS5pbXBsKCksIGF0
dHJpYnV0ZS52YWx1ZSgpKSk7CisgICAgICAgIHJlc3VsdC5hdHRyaWJ1dGVzQW5kVmFsdWVzLmFw
cGVuZChzdGQ6Om1ha2VfcGFpcihhdHRyaWJ1dGUubG9jYWxOYW1lKCkuaW1wbCgpLCBhdHRyaWJ1
dGUudmFsdWUoKSkpOwogICAgIH0KICAgICBpZiAocmVzdWx0LmF0dHJpYnV0ZXNBbmRWYWx1ZXMu
aXNFbXB0eSgpKQogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9k
b20vVGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vVGV4dC5jcHAKaW5kZXggMTJhYTQ4ZTcy
ODdlNGYwMjJlY2QxZWFlN2NmMzUxNTM2MWYzZTEwNy4uMjJhNWRjNTg4ZTEwNDc4NjZhMGMwM2I0
MzkwM2Y2MzBiODM0YzgxOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1RleHQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9UZXh0LmNwcApAQCAtNDEsOCArNDEsNiBAQAogI2lu
Y2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWls
ZGVyLmg+CiAKLXVzaW5nIG5hbWVzcGFjZSBzdGQ7Ci0KIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAog
UGFzc1JlZlB0cjxUZXh0PiBUZXh0OjpjcmVhdGUoRG9jdW1lbnQmIGRvY3VtZW50LCBjb25zdCBT
dHJpbmcmIGRhdGEpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vVmlld3BvcnRBcmd1
bWVudHMuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL1ZpZXdwb3J0QXJndW1lbnRzLmNwcAppbmRl
eCA1OTFhMWU4NDJjZTE1ZGZiMGViZGVmNzIwZWY1MjJkZGFiYWMxMTJiLi44NjYwMDA0MjA2ZGYw
ZjI5YmM2ZmJiMzhiNGJhMjEzMmFkNWM0MTY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9k
b20vVmlld3BvcnRBcmd1bWVudHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9WaWV3cG9y
dEFyZ3VtZW50cy5jcHAKQEAgLTM4LDggKzM4LDYgQEAKICNpbmNsdWRlICJTY3JpcHRhYmxlRG9j
dW1lbnRQYXJzZXIuaCIKICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAotdXNpbmcg
bmFtZXNwYWNlIHN0ZDsKLQogbmFtZXNwYWNlIFdlYkNvcmUgewogCiAjaWYgUExBVEZPUk0oQkxB
Q0tCRVJSWSkgfHwgUExBVEZPUk0oR1RLKQpAQCAtNjYsNyArNjQsNyBAQCBzdGF0aWMgaW5saW5l
IGZsb2F0IGNsYW1wTGVuZ3RoVmFsdWUoZmxvYXQgdmFsdWUpCiAKICAgICAvLyBMaW1pdHMgYXMg
ZGVmaW5lZCBpbiB0aGUgY3NzLWRldmljZS1hZGFwdCBzcGVjLgogICAgIGlmICh2YWx1ZSAhPSBW
aWV3cG9ydEFyZ3VtZW50czo6VmFsdWVBdXRvKQotICAgICAgICByZXR1cm4gbWluKGZsb2F0KDEw
MDAwKSwgbWF4KHZhbHVlLCBmbG9hdCgxKSkpOworICAgICAgICByZXR1cm4gc3RkOjptaW48Zmxv
YXQ+KDEwMDAwLCBzdGQ6Om1heDxmbG9hdD4odmFsdWUsIDEpKTsKICAgICByZXR1cm4gdmFsdWU7
CiB9CiAKQEAgLTc3LDcgKzc1LDcgQEAgc3RhdGljIGlubGluZSBmbG9hdCBjbGFtcFNjYWxlVmFs
dWUoZmxvYXQgdmFsdWUpCiAKICAgICAvLyBMaW1pdHMgYXMgZGVmaW5lZCBpbiB0aGUgY3NzLWRl
dmljZS1hZGFwdCBzcGVjLgogICAgIGlmICh2YWx1ZSAhPSBWaWV3cG9ydEFyZ3VtZW50czo6VmFs
dWVBdXRvKQotICAgICAgICByZXR1cm4gbWluKGZsb2F0KDEwKSwgbWF4KHZhbHVlLCBmbG9hdCgw
LjEpKSk7CisgICAgICAgIHJldHVybiBzdGQ6Om1pbjxmbG9hdD4oMTAsIHN0ZDo6bWF4PGZsb2F0
Pih2YWx1ZSwgMC4xKSk7CiAgICAgcmV0dXJuIHZhbHVlOwogfQogCkBAIC0xNTAsMTYgKzE0OCwx
NiBAQCBWaWV3cG9ydEF0dHJpYnV0ZXMgVmlld3BvcnRBcmd1bWVudHM6OnJlc29sdmUoY29uc3Qg
RmxvYXRTaXplJiBpbml0aWFsVmlld3BvcnRTaQogICAgICAgICB9CiAKICAgICAgICAgaWYgKHJl
c3VsdE1pbldpZHRoICE9IFZpZXdwb3J0QXJndW1lbnRzOjpWYWx1ZUF1dG8gfHwgcmVzdWx0TWF4
V2lkdGggIT0gVmlld3BvcnRBcmd1bWVudHM6OlZhbHVlQXV0bykKLSAgICAgICAgICAgIHJlc3Vs
dFdpZHRoID0gY29tcGFyZUlnbm9yaW5nQXV0byhyZXN1bHRNaW5XaWR0aCwgY29tcGFyZUlnbm9y
aW5nQXV0byhyZXN1bHRNYXhXaWR0aCwgZGV2aWNlU2l6ZS53aWR0aCgpLCBtaW4pLCBtYXgpOwor
ICAgICAgICAgICAgcmVzdWx0V2lkdGggPSBjb21wYXJlSWdub3JpbmdBdXRvKHJlc3VsdE1pbldp
ZHRoLCBjb21wYXJlSWdub3JpbmdBdXRvKHJlc3VsdE1heFdpZHRoLCBkZXZpY2VTaXplLndpZHRo
KCksIHN0ZDo6bWluKSwgc3RkOjptYXgpOwogCiAgICAgICAgIGlmIChyZXN1bHRNaW5IZWlnaHQg
IT0gVmlld3BvcnRBcmd1bWVudHM6OlZhbHVlQXV0byB8fCByZXN1bHRNYXhIZWlnaHQgIT0gVmll
d3BvcnRBcmd1bWVudHM6OlZhbHVlQXV0bykKLSAgICAgICAgICAgIHJlc3VsdEhlaWdodCA9IGNv
bXBhcmVJZ25vcmluZ0F1dG8ocmVzdWx0TWluSGVpZ2h0LCBjb21wYXJlSWdub3JpbmdBdXRvKHJl
c3VsdE1heEhlaWdodCwgZGV2aWNlU2l6ZS5oZWlnaHQoKSwgbWluKSwgbWF4KTsKKyAgICAgICAg
ICAgIHJlc3VsdEhlaWdodCA9IGNvbXBhcmVJZ25vcmluZ0F1dG8ocmVzdWx0TWluSGVpZ2h0LCBj
b21wYXJlSWdub3JpbmdBdXRvKHJlc3VsdE1heEhlaWdodCwgZGV2aWNlU2l6ZS5oZWlnaHQoKSwg
c3RkOjptaW4pLCBzdGQ6Om1heCk7CiAKICAgICAgICAgaWYgKHJlc3VsdE1pblpvb20gIT0gVmll
d3BvcnRBcmd1bWVudHM6OlZhbHVlQXV0byAmJiByZXN1bHRNYXhab29tICE9IFZpZXdwb3J0QXJn
dW1lbnRzOjpWYWx1ZUF1dG8pCi0gICAgICAgICAgICByZXN1bHRNYXhab29tID0gbWF4KHJlc3Vs
dE1pblpvb20sIHJlc3VsdE1heFpvb20pOworICAgICAgICAgICAgcmVzdWx0TWF4Wm9vbSA9IHN0
ZDo6bWF4KHJlc3VsdE1pblpvb20sIHJlc3VsdE1heFpvb20pOwogCiAgICAgICAgIGlmIChyZXN1
bHRab29tICE9IFZpZXdwb3J0QXJndW1lbnRzOjpWYWx1ZUF1dG8pCi0gICAgICAgICAgICByZXN1
bHRab29tID0gY29tcGFyZUlnbm9yaW5nQXV0byhyZXN1bHRNaW5ab29tLCBjb21wYXJlSWdub3Jp
bmdBdXRvKHJlc3VsdE1heFpvb20sIHJlc3VsdFpvb20sIG1pbiksIG1heCk7CisgICAgICAgICAg
ICByZXN1bHRab29tID0gY29tcGFyZUlnbm9yaW5nQXV0byhyZXN1bHRNaW5ab29tLCBjb21wYXJl
SWdub3JpbmdBdXRvKHJlc3VsdE1heFpvb20sIHJlc3VsdFpvb20sIHN0ZDo6bWluKSwgc3RkOjpt
YXgpOwogCiAgICAgICAgIGlmIChyZXN1bHRXaWR0aCA9PSBWaWV3cG9ydEFyZ3VtZW50czo6VmFs
dWVBdXRvICYmIHJlc3VsdFpvb20gPT0gVmlld3BvcnRBcmd1bWVudHM6OlZhbHVlQXV0bykKICAg
ICAgICAgICAgIHJlc3VsdFdpZHRoID0gZGV2aWNlU2l6ZS53aWR0aCgpOwpAQCAtMTc0LDEyICsx
NzIsMTIgQEAgVmlld3BvcnRBdHRyaWJ1dGVzIFZpZXdwb3J0QXJndW1lbnRzOjpyZXNvbHZlKGNv
bnN0IEZsb2F0U2l6ZSYgaW5pdGlhbFZpZXdwb3J0U2kKICAgICAgICAgICAgIHJlc3VsdEhlaWdo
dCA9IHJlc3VsdFdpZHRoICogZGV2aWNlU2l6ZS5oZWlnaHQoKSAvIGRldmljZVNpemUud2lkdGgo
KTsKIAogICAgICAgICBpZiAocmVzdWx0Wm9vbSAhPSBWaWV3cG9ydEFyZ3VtZW50czo6VmFsdWVB
dXRvIHx8IHJlc3VsdE1heFpvb20gIT0gVmlld3BvcnRBcmd1bWVudHM6OlZhbHVlQXV0bykgewot
ICAgICAgICAgICAgcmVzdWx0V2lkdGggPSBjb21wYXJlSWdub3JpbmdBdXRvKHJlc3VsdFdpZHRo
LCBkZXZpY2VTaXplLndpZHRoKCkgLyBjb21wYXJlSWdub3JpbmdBdXRvKHJlc3VsdFpvb20sIHJl
c3VsdE1heFpvb20sIG1pbiksIG1heCk7Ci0gICAgICAgICAgICByZXN1bHRIZWlnaHQgPSBjb21w
YXJlSWdub3JpbmdBdXRvKHJlc3VsdEhlaWdodCwgZGV2aWNlU2l6ZS5oZWlnaHQoKSAvIGNvbXBh
cmVJZ25vcmluZ0F1dG8ocmVzdWx0Wm9vbSwgcmVzdWx0TWF4Wm9vbSwgbWluKSwgbWF4KTsKKyAg
ICAgICAgICAgIHJlc3VsdFdpZHRoID0gY29tcGFyZUlnbm9yaW5nQXV0byhyZXN1bHRXaWR0aCwg
ZGV2aWNlU2l6ZS53aWR0aCgpIC8gY29tcGFyZUlnbm9yaW5nQXV0byhyZXN1bHRab29tLCByZXN1
bHRNYXhab29tLCBzdGQ6Om1pbiksIHN0ZDo6bWF4KTsKKyAgICAgICAgICAgIHJlc3VsdEhlaWdo
dCA9IGNvbXBhcmVJZ25vcmluZ0F1dG8ocmVzdWx0SGVpZ2h0LCBkZXZpY2VTaXplLmhlaWdodCgp
IC8gY29tcGFyZUlnbm9yaW5nQXV0byhyZXN1bHRab29tLCByZXN1bHRNYXhab29tLCBzdGQ6Om1p
biksIHN0ZDo6bWF4KTsKICAgICAgICAgfQogCi0gICAgICAgIHJlc3VsdFdpZHRoID0gbWF4PGZs
b2F0PigxLCByZXN1bHRXaWR0aCk7Ci0gICAgICAgIHJlc3VsdEhlaWdodCA9IG1heDxmbG9hdD4o
MSwgcmVzdWx0SGVpZ2h0KTsKKyAgICAgICAgcmVzdWx0V2lkdGggPSBzdGQ6Om1heDxmbG9hdD4o
MSwgcmVzdWx0V2lkdGgpOworICAgICAgICByZXN1bHRIZWlnaHQgPSBzdGQ6Om1heDxmbG9hdD4o
MSwgcmVzdWx0SGVpZ2h0KTsKICAgICB9CiAKICAgICBpZiAodHlwZSAhPSBWaWV3cG9ydEFyZ3Vt
ZW50czo6Q1NTRGV2aWNlQWRhcHRhdGlvbiAmJiB0eXBlICE9IFZpZXdwb3J0QXJndW1lbnRzOjpJ
bXBsaWNpdCkgewpAQCAtMjAxLDExICsxOTksMTEgQEAgVmlld3BvcnRBdHRyaWJ1dGVzIFZpZXdw
b3J0QXJndW1lbnRzOjpyZXNvbHZlKGNvbnN0IEZsb2F0U2l6ZSYgaW5pdGlhbFZpZXdwb3J0U2kK
ICAgICAgICAgcmVzdWx0Lm1pbmltdW1TY2FsZSA9IHJlc3VsdE1pblpvb207CiAKICAgICBpZiAo
cmVzdWx0TWF4Wm9vbSA9PSBWaWV3cG9ydEFyZ3VtZW50czo6VmFsdWVBdXRvKSB7Ci0gICAgICAg
IHJlc3VsdC5tYXhpbXVtU2NhbGUgPSBmbG9hdCg1LjApOwotICAgICAgICByZXN1bHQubWluaW11
bVNjYWxlID0gbWluKGZsb2F0KDUuMCksIHJlc3VsdC5taW5pbXVtU2NhbGUpOworICAgICAgICBy
ZXN1bHQubWF4aW11bVNjYWxlID0gNTsKKyAgICAgICAgcmVzdWx0Lm1pbmltdW1TY2FsZSA9IHN0
ZDo6bWluPGZsb2F0Pig1LCByZXN1bHQubWluaW11bVNjYWxlKTsKICAgICB9IGVsc2UKICAgICAg
ICAgcmVzdWx0Lm1heGltdW1TY2FsZSA9IHJlc3VsdE1heFpvb207Ci0gICAgcmVzdWx0Lm1heGlt
dW1TY2FsZSA9IG1heChyZXN1bHQubWluaW11bVNjYWxlLCByZXN1bHQubWF4aW11bVNjYWxlKTsK
KyAgICByZXN1bHQubWF4aW11bVNjYWxlID0gc3RkOjptYXgocmVzdWx0Lm1pbmltdW1TY2FsZSwg
cmVzdWx0Lm1heGltdW1TY2FsZSk7CiAKICAgICAvLyBSZXNvbHZlIGluaXRpYWwtc2NhbGUgdmFs
dWUuCiAgICAgcmVzdWx0LmluaXRpYWxTY2FsZSA9IHJlc3VsdFpvb207CkBAIC0yMTUsMTIgKzIx
MywxMiBAQCBWaWV3cG9ydEF0dHJpYnV0ZXMgVmlld3BvcnRBcmd1bWVudHM6OnJlc29sdmUoY29u
c3QgRmxvYXRTaXplJiBpbml0aWFsVmlld3BvcnRTaQogICAgICAgICAgICAgcmVzdWx0LmluaXRp
YWxTY2FsZSA9IGluaXRpYWxWaWV3cG9ydFNpemUud2lkdGgoKSAvIHJlc3VsdFdpZHRoOwogICAg
ICAgICBpZiAocmVzdWx0SGVpZ2h0ICE9IFZpZXdwb3J0QXJndW1lbnRzOjpWYWx1ZUF1dG8pIHsK
ICAgICAgICAgICAgIC8vIGlmICdhdXRvJywgdGhlIGluaXRpYWwtc2NhbGUgd2lsbCBiZSBuZWdh
dGl2ZSBoZXJlIGFuZCB0aHVzIGlnbm9yZWQuCi0gICAgICAgICAgICByZXN1bHQuaW5pdGlhbFNj
YWxlID0gbWF4PGZsb2F0PihyZXN1bHQuaW5pdGlhbFNjYWxlLCBpbml0aWFsVmlld3BvcnRTaXpl
LmhlaWdodCgpIC8gcmVzdWx0SGVpZ2h0KTsKKyAgICAgICAgICAgIHJlc3VsdC5pbml0aWFsU2Nh
bGUgPSBzdGQ6Om1heDxmbG9hdD4ocmVzdWx0LmluaXRpYWxTY2FsZSwgaW5pdGlhbFZpZXdwb3J0
U2l6ZS5oZWlnaHQoKSAvIHJlc3VsdEhlaWdodCk7CiAgICAgICAgIH0KICAgICB9CiAKICAgICAv
LyBDb25zdHJhaW4gaW5pdGlhbC1zY2FsZSB2YWx1ZSB0byBtaW5pbXVtLXNjYWxlL21heGltdW0t
c2NhbGUgcmFuZ2UuCi0gICAgcmVzdWx0LmluaXRpYWxTY2FsZSA9IG1pbihyZXN1bHQubWF4aW11
bVNjYWxlLCBtYXgocmVzdWx0Lm1pbmltdW1TY2FsZSwgcmVzdWx0LmluaXRpYWxTY2FsZSkpOwor
ICAgIHJlc3VsdC5pbml0aWFsU2NhbGUgPSBzdGQ6Om1pbihyZXN1bHQubWF4aW11bVNjYWxlLCBz
dGQ6Om1heChyZXN1bHQubWluaW11bVNjYWxlLCByZXN1bHQuaW5pdGlhbFNjYWxlKSk7CiAKICAg
ICAvLyBSZXNvbHZlIHdpZHRoIHZhbHVlLgogICAgIGlmIChyZXN1bHRXaWR0aCA9PSBWaWV3cG9y
dEFyZ3VtZW50czo6VmFsdWVBdXRvKSB7CkBAIC0yMzgsOCArMjM2LDggQEAgVmlld3BvcnRBdHRy
aWJ1dGVzIFZpZXdwb3J0QXJndW1lbnRzOjpyZXNvbHZlKGNvbnN0IEZsb2F0U2l6ZSYgaW5pdGlh
bFZpZXdwb3J0U2kKIAogICAgIGlmICh0eXBlID09IFZpZXdwb3J0QXJndW1lbnRzOjpWaWV3cG9y
dE1ldGEpIHsKICAgICAgICAgLy8gRXh0ZW5kIHdpZHRoIGFuZCBoZWlnaHQgdG8gZmlsbCB0aGUg
dmlzdWFsIHZpZXdwb3J0IGZvciB0aGUgcmVzb2x2ZWQgaW5pdGlhbC1zY2FsZS4KLSAgICAgICAg
cmVzdWx0V2lkdGggPSBtYXg8ZmxvYXQ+KHJlc3VsdFdpZHRoLCBpbml0aWFsVmlld3BvcnRTaXpl
LndpZHRoKCkgLyByZXN1bHQuaW5pdGlhbFNjYWxlKTsKLSAgICAgICAgcmVzdWx0SGVpZ2h0ID0g
bWF4PGZsb2F0PihyZXN1bHRIZWlnaHQsIGluaXRpYWxWaWV3cG9ydFNpemUuaGVpZ2h0KCkgLyBy
ZXN1bHQuaW5pdGlhbFNjYWxlKTsKKyAgICAgICAgcmVzdWx0V2lkdGggPSBzdGQ6Om1heDxmbG9h
dD4ocmVzdWx0V2lkdGgsIGluaXRpYWxWaWV3cG9ydFNpemUud2lkdGgoKSAvIHJlc3VsdC5pbml0
aWFsU2NhbGUpOworICAgICAgICByZXN1bHRIZWlnaHQgPSBzdGQ6Om1heDxmbG9hdD4ocmVzdWx0
SGVpZ2h0LCBpbml0aWFsVmlld3BvcnRTaXplLmhlaWdodCgpIC8gcmVzdWx0LmluaXRpYWxTY2Fs
ZSk7CiAgICAgfQogCiAgICAgcmVzdWx0LmxheW91dFNpemUuc2V0V2lkdGgocmVzdWx0V2lkdGgp
OwpAQCAtMjc1LDE0ICsyNzMsMTQgQEAgVmlld3BvcnRBdHRyaWJ1dGVzIGNvbXB1dGVWaWV3cG9y
dEF0dHJpYnV0ZXMoVmlld3BvcnRBcmd1bWVudHMgYXJncywgaW50IGRlc2t0b3AKIGZsb2F0IGNv
bXB1dGVNaW5pbXVtU2NhbGVGYWN0b3JGb3JDb250ZW50Q29udGFpbmVkKGNvbnN0IFZpZXdwb3J0
QXR0cmlidXRlcyYgcmVzdWx0LCBjb25zdCBJbnRTaXplJiB2aXNpYmxlVmlld3BvcnQsIGNvbnN0
IEludFNpemUmIGNvbnRlbnRzU2l6ZSkKIHsKICAgICBGbG9hdFNpemUgdmlld3BvcnRTaXplKHZp
c2libGVWaWV3cG9ydCk7Ci0gICAgcmV0dXJuIG1heDxmbG9hdD4ocmVzdWx0Lm1pbmltdW1TY2Fs
ZSwgbWF4KHZpZXdwb3J0U2l6ZS53aWR0aCgpIC8gY29udGVudHNTaXplLndpZHRoKCksIHZpZXdw
b3J0U2l6ZS5oZWlnaHQoKSAvIGNvbnRlbnRzU2l6ZS5oZWlnaHQoKSkpOworICAgIHJldHVybiBz
dGQ6Om1heDxmbG9hdD4ocmVzdWx0Lm1pbmltdW1TY2FsZSwgc3RkOjptYXgodmlld3BvcnRTaXpl
LndpZHRoKCkgLyBjb250ZW50c1NpemUud2lkdGgoKSwgdmlld3BvcnRTaXplLmhlaWdodCgpIC8g
Y29udGVudHNTaXplLmhlaWdodCgpKSk7CiB9CiAKIHZvaWQgcmVzdHJpY3RNaW5pbXVtU2NhbGVG
YWN0b3JUb1ZpZXdwb3J0U2l6ZShWaWV3cG9ydEF0dHJpYnV0ZXMmIHJlc3VsdCwgSW50U2l6ZSB2
aXNpYmxlVmlld3BvcnQsIGZsb2F0IGRldmljZVBpeGVsUmF0aW8pCiB7CiAgICAgRmxvYXRTaXpl
IHZpZXdwb3J0U2l6ZSA9IGNvbnZlcnRUb1VzZXJTcGFjZSh2aXNpYmxlVmlld3BvcnQsIGRldmlj
ZVBpeGVsUmF0aW8pOwogCi0gICAgcmVzdWx0Lm1pbmltdW1TY2FsZSA9IG1heDxmbG9hdD4ocmVz
dWx0Lm1pbmltdW1TY2FsZSwgbWF4KHZpZXdwb3J0U2l6ZS53aWR0aCgpIC8gcmVzdWx0LmxheW91
dFNpemUud2lkdGgoKSwgdmlld3BvcnRTaXplLmhlaWdodCgpIC8gcmVzdWx0LmxheW91dFNpemUu
aGVpZ2h0KCkpKTsKKyAgICByZXN1bHQubWluaW11bVNjYWxlID0gc3RkOjptYXg8ZmxvYXQ+KHJl
c3VsdC5taW5pbXVtU2NhbGUsIHN0ZDo6bWF4KHZpZXdwb3J0U2l6ZS53aWR0aCgpIC8gcmVzdWx0
LmxheW91dFNpemUud2lkdGgoKSwgdmlld3BvcnRTaXplLmhlaWdodCgpIC8gcmVzdWx0LmxheW91
dFNpemUuaGVpZ2h0KCkpKTsKIH0KIAogdm9pZCByZXN0cmljdFNjYWxlRmFjdG9yVG9Jbml0aWFs
U2NhbGVJZk5vdFVzZXJTY2FsYWJsZShWaWV3cG9ydEF0dHJpYnV0ZXMmIHJlc3VsdCkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvQWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxlci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0FsdGVybmF0aXZlVGV4dENvbnRyb2xsZXIuY3Bw
CmluZGV4IDI2OTIyMmE3YmNhMzIzMDc0N2EyODIzNDlkNDlmMWRiNWVjMTA0MTMuLjIzMDAxN2I5
Nzc3Y2IzYjg1NjllOTliOTVjOGM3MTEwZmFhNGQyZWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvQWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvZWRpdGluZy9BbHRlcm5hdGl2ZVRleHRDb250cm9sbGVyLmNwcApAQCAtNTIsOSArNTIs
NiBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXVzaW5nIG5hbWVzcGFjZSBzdGQ7Ci11c2lu
ZyBuYW1lc3BhY2UgV1RGOwotCiBjbGFzcyBBdXRvY29ycmVjdGlvbkFsdGVybmF0aXZlRGV0YWls
cyA6IHB1YmxpYyBBbHRlcm5hdGl2ZVRleHREZXRhaWxzIHsKIHB1YmxpYzoKICAgICBzdGF0aWMg
UGFzc1JlZlB0cjxBdXRvY29ycmVjdGlvbkFsdGVybmF0aXZlRGV0YWlscz4gY3JlYXRlKGNvbnN0
IFN0cmluZyYgcmVwbGFjZW1lbnRTdHJpbmcpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL0FwcGx5U3R5bGVDb21tYW5kLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvQXBw
bHlTdHlsZUNvbW1hbmQuY3BwCmluZGV4IGM4YTM1NTQyYjM4NjA4MDYwMDcwY2JmYzI2Y2I1NTIz
YzAzYzQ0MDIuLmY2MThhZGFmMWUzNzI3MTZiZDJlYTA5YjU4ZDUzNGYyNjU3MmE4ZmIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvQXBwbHlTdHlsZUNvbW1hbmQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvQXBwbHlTdHlsZUNvbW1hbmQuY3BwCkBAIC00MDMsNyAr
NDAzLDcgQEAgdm9pZCBBcHBseVN0eWxlQ29tbWFuZDo6YXBwbHlSZWxhdGl2ZUZvbnRTdHlsZUNo
YW5nZShFZGl0aW5nU3R5bGUqIHN0eWxlKQogCiAgICAgICAgIFJlZlB0cjxNdXRhYmxlU3R5bGVQ
cm9wZXJ0eVNldD4gaW5saW5lU3R5bGUgPSBjb3B5U3R5bGVPckNyZWF0ZUVtcHR5KGVsZW1lbnQt
PmlubGluZVN0eWxlKCkpOwogICAgICAgICBmbG9hdCBjdXJyZW50Rm9udFNpemUgPSBjb21wdXRl
ZEZvbnRTaXplKG5vZGUpOwotICAgICAgICBmbG9hdCBkZXNpcmVkRm9udFNpemUgPSBtYXgoTWlu
aW11bUZvbnRTaXplLCBzdGFydGluZ0ZvbnRTaXplcy5nZXQobm9kZSkgKyBzdHlsZS0+Zm9udFNp
emVEZWx0YSgpKTsKKyAgICAgICAgZmxvYXQgZGVzaXJlZEZvbnRTaXplID0gc3RkOjptYXgoTWlu
aW11bUZvbnRTaXplLCBzdGFydGluZ0ZvbnRTaXplcy5nZXQobm9kZSkgKyBzdHlsZS0+Zm9udFNp
emVEZWx0YSgpKTsKICAgICAgICAgUmVmUHRyPENTU1ZhbHVlPiB2YWx1ZSA9IGlubGluZVN0eWxl
LT5nZXRQcm9wZXJ0eUNTU1ZhbHVlKENTU1Byb3BlcnR5Rm9udFNpemUpOwogICAgICAgICBpZiAo
dmFsdWUpIHsKICAgICAgICAgICAgIGVsZW1lbnQtPnJlbW92ZUlubGluZVN0eWxlUHJvcGVydHko
Q1NTUHJvcGVydHlGb250U2l6ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L0NvbXBvc2l0ZUVkaXRDb21tYW5kLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvQ29tcG9z
aXRlRWRpdENvbW1hbmQuY3BwCmluZGV4IDI2YWIyNGQ3NjAyODE4MzBmZmU1ZDU5YzBiNDcwNDI0
MDgwYmMwOTIuLjUxY2U5OGIxNjllMmRhNmIxNTIwYzE4NzNmNGQyMDJiZTgwZDE3NGUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvQ29tcG9zaXRlRWRpdENvbW1hbmQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvQ29tcG9zaXRlRWRpdENvbW1hbmQuY3BwCkBAIC03
Miw4ICs3Miw2IEBACiAjaW5jbHVkZSAiRGVsZXRlQnV0dG9uQ29udHJvbGxlci5oIgogI2VuZGlm
CiAKLXVzaW5nIG5hbWVzcGFjZSBzdGQ7Ci0KIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogdXNpbmcg
bmFtZXNwYWNlIEhUTUxOYW1lczsKQEAgLTc3Niw4ICs3NzQsOCBAQCB2b2lkIENvbXBvc2l0ZUVk
aXRDb21tYW5kOjpkZWxldGVJbnNpZ25pZmljYW50VGV4dChQYXNzUmVmUHRyPFRleHQ+IHRleHRO
b2RlLCB1bgogICAgICAgICBib29sIGluZGljZXNJbnRlcnNlY3QgPSBzdGFydCA8PSBnYXBFbmQg
JiYgZW5kID49IGdhcFN0YXJ0OwogICAgICAgICBpbnQgZ2FwTGVuID0gZ2FwRW5kIC0gZ2FwU3Rh
cnQ7CiAgICAgICAgIGlmIChpbmRpY2VzSW50ZXJzZWN0ICYmIGdhcExlbiA+IDApIHsKLSAgICAg
ICAgICAgIGdhcFN0YXJ0ID0gbWF4KGdhcFN0YXJ0LCBzdGFydCk7Ci0gICAgICAgICAgICBnYXBF
bmQgPSBtaW4oZ2FwRW5kLCBlbmQpOworICAgICAgICAgICAgZ2FwU3RhcnQgPSBzdGQ6Om1heChn
YXBTdGFydCwgc3RhcnQpOworICAgICAgICAgICAgZ2FwRW5kID0gc3RkOjptaW4oZ2FwRW5kLCBl
bmQpOwogICAgICAgICAgICAgaWYgKHN0ci5pc051bGwoKSkKICAgICAgICAgICAgICAgICBzdHIg
PSB0ZXh0Tm9kZS0+ZGF0YSgpLnN1YnN0cmluZyhzdGFydCwgZW5kIC0gc3RhcnQpOwogICAgICAg
ICAgICAgLy8gcmVtb3ZlIHRleHQgaW4gdGhlIGdhcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvZWRpdGluZy9FZGl0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3Bw
CmluZGV4IDdiOGE1ZjdlZTg2YjI3OTIzNmNkMTdhOGVmY2ZmNjVmZDMwZDBiODguLjE5ZjVjYjA5
MWYxZWI4YzgwYjdkMDgyZDgyMzMzYTFiNTMzYmJhZGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvRWRpdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRv
ci5jcHAKQEAgLTk3LDcgKzk3LDYgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi11c2luZyBu
YW1lc3BhY2Ugc3RkOwogdXNpbmcgbmFtZXNwYWNlIEhUTUxOYW1lczsKIHVzaW5nIG5hbWVzcGFj
ZSBXVEY7CiB1c2luZyBuYW1lc3BhY2UgVW5pY29kZTsKQEAgLTE2MzUsOCArMTYzNCw4IEBAIHZv
aWQgRWRpdG9yOjpzZXRDb21wb3NpdGlvbihjb25zdCBTdHJpbmcmIHRleHQsIGNvbnN0IFZlY3Rv
cjxDb21wb3NpdGlvblVuZGVybGluCiAgICAgICAgICAgICBpZiAoYmFzZU5vZGUtPnJlbmRlcmVy
KCkpCiAgICAgICAgICAgICAgICAgYmFzZU5vZGUtPnJlbmRlcmVyKCktPnJlcGFpbnQoKTsKIAot
ICAgICAgICAgICAgdW5zaWduZWQgc3RhcnQgPSBtaW4oYmFzZU9mZnNldCArIHNlbGVjdGlvblN0
YXJ0LCBleHRlbnRPZmZzZXQpOwotICAgICAgICAgICAgdW5zaWduZWQgZW5kID0gbWluKG1heChz
dGFydCwgYmFzZU9mZnNldCArIHNlbGVjdGlvbkVuZCksIGV4dGVudE9mZnNldCk7CisgICAgICAg
ICAgICB1bnNpZ25lZCBzdGFydCA9IHN0ZDo6bWluKGJhc2VPZmZzZXQgKyBzZWxlY3Rpb25TdGFy
dCwgZXh0ZW50T2Zmc2V0KTsKKyAgICAgICAgICAgIHVuc2lnbmVkIGVuZCA9IHN0ZDo6bWluKHN0
ZDo6bWF4KHN0YXJ0LCBiYXNlT2Zmc2V0ICsgc2VsZWN0aW9uRW5kKSwgZXh0ZW50T2Zmc2V0KTsK
ICAgICAgICAgICAgIFJlZlB0cjxSYW5nZT4gc2VsZWN0ZWRSYW5nZSA9IFJhbmdlOjpjcmVhdGUo
YmFzZU5vZGUtPmRvY3VtZW50KCksIGJhc2VOb2RlLCBzdGFydCwgYmFzZU5vZGUsIGVuZCk7CiAg
ICAgICAgICAgICBtX2ZyYW1lLnNlbGVjdGlvbigpLnNldFNlbGVjdGVkUmFuZ2Uoc2VsZWN0ZWRS
YW5nZS5nZXQoKSwgRE9XTlNUUkVBTSwgZmFsc2UpOwogICAgICAgICB9CkBAIC0yNTQzLDggKzI1
NDIsOCBAQCBQYXNzUmVmUHRyPFJhbmdlPiBFZGl0b3I6OmNvbXBvc2l0aW9uUmFuZ2UoKSBjb25z
dAogICAgIGlmICghbV9jb21wb3NpdGlvbk5vZGUpCiAgICAgICAgIHJldHVybiAwOwogICAgIHVu
c2lnbmVkIGxlbmd0aCA9IG1fY29tcG9zaXRpb25Ob2RlLT5sZW5ndGgoKTsKLSAgICB1bnNpZ25l
ZCBzdGFydCA9IG1pbihtX2NvbXBvc2l0aW9uU3RhcnQsIGxlbmd0aCk7Ci0gICAgdW5zaWduZWQg
ZW5kID0gbWluKG1heChzdGFydCwgbV9jb21wb3NpdGlvbkVuZCksIGxlbmd0aCk7CisgICAgdW5z
aWduZWQgc3RhcnQgPSBzdGQ6Om1pbihtX2NvbXBvc2l0aW9uU3RhcnQsIGxlbmd0aCk7CisgICAg
dW5zaWduZWQgZW5kID0gc3RkOjptaW4oc3RkOjptYXgoc3RhcnQsIG1fY29tcG9zaXRpb25FbmQp
LCBsZW5ndGgpOwogICAgIGlmIChzdGFydCA+PSBlbmQpCiAgICAgICAgIHJldHVybiAwOwogICAg
IHJldHVybiBSYW5nZTo6Y3JlYXRlKG1fY29tcG9zaXRpb25Ob2RlLT5kb2N1bWVudCgpLCBtX2Nv
bXBvc2l0aW9uTm9kZS5nZXQoKSwgc3RhcnQsIG1fY29tcG9zaXRpb25Ob2RlLmdldCgpLCBlbmQp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3JDb21tYW5kLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yQ29tbWFuZC5jcHAKaW5kZXggOTM3ZDY3YTc1
MTIzNmVjMGU3ZTc5YzZiZDg3MmZiNzA0ZjJkOThiOS4uMGExOTI3NjBhZWEwNGQzMTM5NjNiOWU4
YTRhZGI4YWYyM2U4YzI4NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0
b3JDb21tYW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvckNvbW1hbmQu
Y3BwCkBAIC0yNjIsNyArMjYyLDcgQEAgc3RhdGljIHVuc2lnbmVkIHZlcnRpY2FsU2Nyb2xsRGlz
dGFuY2UoRnJhbWUmIGZyYW1lKQogICAgIGlmICghKHN0eWxlLT5vdmVyZmxvd1koKSA9PSBPU0NS
T0xMIHx8IHN0eWxlLT5vdmVyZmxvd1koKSA9PSBPQVVUTyB8fCBmb2N1c2VkRWxlbWVudC0+cmVu
ZGVyZXJJc0VkaXRhYmxlKCkpKQogICAgICAgICByZXR1cm4gMDsKICAgICBpbnQgaGVpZ2h0ID0g
c3RkOjptaW48aW50Pih0b1JlbmRlckJveChyZW5kZXJlciktPmNsaWVudEhlaWdodCgpLCBmcmFt
ZS52aWV3KCktPnZpc2libGVIZWlnaHQoKSk7Ci0gICAgcmV0dXJuIHN0YXRpY19jYXN0PHVuc2ln
bmVkPihtYXgobWF4PGludD4oaGVpZ2h0ICogU2Nyb2xsYmFyOjptaW5GcmFjdGlvblRvU3RlcFdo
ZW5QYWdpbmcoKSwgaGVpZ2h0IC0gU2Nyb2xsYmFyOjptYXhPdmVybGFwQmV0d2VlblBhZ2VzKCkp
LCAxKSk7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PHVuc2lnbmVkPihzdGQ6Om1heChzdGQ6Om1h
eDxpbnQ+KGhlaWdodCAqIFNjcm9sbGJhcjo6bWluRnJhY3Rpb25Ub1N0ZXBXaGVuUGFnaW5nKCks
IGhlaWdodCAtIFNjcm9sbGJhcjo6bWF4T3ZlcmxhcEJldHdlZW5QYWdlcygpKSwgMSkpOwogfQog
CiBzdGF0aWMgUmVmUHRyPFJhbmdlPiB1bmlvbkRPTVJhbmdlcyhSYW5nZSogYSwgUmFuZ2UqIGIp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1RleHRJdGVyYXRvci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL1RleHRJdGVyYXRvci5jcHAKaW5kZXggYjY1NWYyNTYzMDZi
Y2UwMmE0NjBhYjYxNGUzNDFmMDg5Yzk0YmYzNi4uNTYxNGI2ZTdmZDI4ZWRmMjY0NWU1MWU5NDM2
NWZkZTMyMzlmZmYyZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0SXRl
cmF0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dEl0ZXJhdG9yLmNwcApA
QCAtNTgsNyArNTgsNiBAQAogI2VuZGlmCiAKIHVzaW5nIG5hbWVzcGFjZSBXVEY6OlVuaWNvZGU7
Ci11c2luZyBuYW1lc3BhY2Ugc3RkOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTUxMiw3
ICs1MTEsNyBAQCBib29sIFRleHRJdGVyYXRvcjo6aGFuZGxlVGV4dE5vZGUoKQogICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogICAgICAgICBpbnQgc3RyTGVuZ3RoID0gc3RyLmxlbmd0aCgpOwog
ICAgICAgICBpbnQgZW5kID0gKG1fbm9kZSA9PSBtX2VuZENvbnRhaW5lcikgPyBtX2VuZE9mZnNl
dCA6IElOVF9NQVg7Ci0gICAgICAgIGludCBydW5FbmQgPSBtaW4oc3RyTGVuZ3RoLCBlbmQpOwor
ICAgICAgICBpbnQgcnVuRW5kID0gc3RkOjptaW4oc3RyTGVuZ3RoLCBlbmQpOwogCiAgICAgICAg
IGlmIChydW5TdGFydCA+PSBydW5FbmQpCiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKQEAgLTU2
NSw3ICs1NjQsNyBAQCB2b2lkIFRleHRJdGVyYXRvcjo6aGFuZGxlVGV4dEJveCgpCiAgICAgdW5z
aWduZWQgZW5kID0gKG1fbm9kZSA9PSBtX2VuZENvbnRhaW5lcikgPyBzdGF0aWNfY2FzdDx1bnNp
Z25lZD4obV9lbmRPZmZzZXQpIDogVUlOVF9NQVg7CiAgICAgd2hpbGUgKG1fdGV4dEJveCkgewog
ICAgICAgICB1bnNpZ25lZCB0ZXh0Qm94U3RhcnQgPSBtX3RleHRCb3gtPnN0YXJ0KCk7Ci0gICAg
ICAgIHVuc2lnbmVkIHJ1blN0YXJ0ID0gbWF4KHRleHRCb3hTdGFydCwgc3RhcnQpOworICAgICAg
ICB1bnNpZ25lZCBydW5TdGFydCA9IHN0ZDo6bWF4KHRleHRCb3hTdGFydCwgc3RhcnQpOwogCiAg
ICAgICAgIC8vIENoZWNrIGZvciBjb2xsYXBzZWQgc3BhY2UgYXQgdGhlIHN0YXJ0IG9mIHRoaXMg
cnVuLgogICAgICAgICBJbmxpbmVUZXh0Qm94KiBmaXJzdFRleHRCb3ggPSByZW5kZXJlci0+Y29u
dGFpbnNSZXZlcnNlZFRleHQoKSA/IChtX3NvcnRlZFRleHRCb3hlcy5pc0VtcHR5KCkgPyAwIDog
bV9zb3J0ZWRUZXh0Qm94ZXNbMF0pIDogcmVuZGVyZXItPmZpcnN0VGV4dEJveCgpOwpAQCAtNTgy
LDcgKzU4MSw3IEBAIHZvaWQgVGV4dEl0ZXJhdG9yOjpoYW5kbGVUZXh0Qm94KCkKICAgICAgICAg
ICAgIHJldHVybjsKICAgICAgICAgfQogICAgICAgICB1bnNpZ25lZCB0ZXh0Qm94RW5kID0gdGV4
dEJveFN0YXJ0ICsgbV90ZXh0Qm94LT5sZW4oKTsKLSAgICAgICAgdW5zaWduZWQgcnVuRW5kID0g
bWluKHRleHRCb3hFbmQsIGVuZCk7CisgICAgICAgIHVuc2lnbmVkIHJ1bkVuZCA9IHN0ZDo6bWlu
KHRleHRCb3hFbmQsIGVuZCk7CiAgICAgICAgIAogICAgICAgICAvLyBEZXRlcm1pbmUgd2hhdCB0
aGUgbmV4dCB0ZXh0IGJveCB3aWxsIGJlLCBidXQgZG9uJ3QgYWR2YW5jZSB5ZXQKICAgICAgICAg
SW5saW5lVGV4dEJveCogbmV4dFRleHRCb3ggPSAwOwpAQCAtMTQ1Miw3ICsxNDUxLDcgQEAgU3Ry
aW5nIENoYXJhY3Rlckl0ZXJhdG9yOjpzdHJpbmcoaW50IG51bUNoYXJzKQogICAgIFZlY3RvcjxV
Q2hhcj4gcmVzdWx0OwogICAgIHJlc3VsdC5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KG51bUNoYXJz
KTsKICAgICB3aGlsZSAobnVtQ2hhcnMgPiAwICYmICFhdEVuZCgpKSB7Ci0gICAgICAgIGludCBy
dW5TaXplID0gbWluKG51bUNoYXJzLCBsZW5ndGgoKSk7CisgICAgICAgIGludCBydW5TaXplID0g
c3RkOjptaW4obnVtQ2hhcnMsIGxlbmd0aCgpKTsKICAgICAgICAgcmVzdWx0LmFwcGVuZChjaGFy
YWN0ZXJzKCksIHJ1blNpemUpOwogICAgICAgICBudW1DaGFycyAtPSBydW5TaXplOwogICAgICAg
ICBhZHZhbmNlKHJ1blNpemUpOwpAQCAtMTk2NSw3ICsxOTY0LDcgQEAgaW5saW5lIFNlYXJjaEJ1
ZmZlcjo6U2VhcmNoQnVmZmVyKGNvbnN0IFN0cmluZyYgdGFyZ2V0LCBGaW5kT3B0aW9ucyBvcHRp
b25zKQogICAgIGZvbGRRdW90ZU1hcmtzQW5kU29mdEh5cGhlbnMobV90YXJnZXQpOwogCiAgICAg
c2l6ZV90IHRhcmdldExlbmd0aCA9IG1fdGFyZ2V0Lmxlbmd0aCgpOwotICAgIG1fYnVmZmVyLnJl
c2VydmVJbml0aWFsQ2FwYWNpdHkobWF4KHRhcmdldExlbmd0aCAqIDgsIG1pbmltdW1TZWFyY2hC
dWZmZXJTaXplKSk7CisgICAgbV9idWZmZXIucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShzdGQ6Om1h
eCh0YXJnZXRMZW5ndGggKiA4LCBtaW5pbXVtU2VhcmNoQnVmZmVyU2l6ZSkpOwogICAgIG1fb3Zl
cmxhcCA9IG1fYnVmZmVyLmNhcGFjaXR5KCkgLyA0OwogCiAgICAgaWYgKChtX29wdGlvbnMgJiBB
dFdvcmRTdGFydHMpICYmIHRhcmdldExlbmd0aCkgewpAQCAtMjAzNSwxMiArMjAzNCwxMiBAQCBp
bmxpbmUgc2l6ZV90IFNlYXJjaEJ1ZmZlcjo6YXBwZW5kKGNvbnN0IFVDaGFyKiBjaGFyYWN0ZXJz
LCBzaXplX3QgbGVuZ3RoKQogICAgICAgICBtX2F0QnJlYWsgPSBmYWxzZTsKICAgICB9IGVsc2Ug
aWYgKG1fYnVmZmVyLnNpemUoKSA9PSBtX2J1ZmZlci5jYXBhY2l0eSgpKSB7CiAgICAgICAgIG1l
bWNweShtX2J1ZmZlci5kYXRhKCksIG1fYnVmZmVyLmRhdGEoKSArIG1fYnVmZmVyLnNpemUoKSAt
IG1fb3ZlcmxhcCwgbV9vdmVybGFwICogc2l6ZW9mKFVDaGFyKSk7Ci0gICAgICAgIG1fcHJlZml4
TGVuZ3RoIC09IG1pbihtX3ByZWZpeExlbmd0aCwgbV9idWZmZXIuc2l6ZSgpIC0gbV9vdmVybGFw
KTsKKyAgICAgICAgbV9wcmVmaXhMZW5ndGggLT0gc3RkOjptaW4obV9wcmVmaXhMZW5ndGgsIG1f
YnVmZmVyLnNpemUoKSAtIG1fb3ZlcmxhcCk7CiAgICAgICAgIG1fYnVmZmVyLnNocmluayhtX292
ZXJsYXApOwogICAgIH0KIAogICAgIHNpemVfdCBvbGRMZW5ndGggPSBtX2J1ZmZlci5zaXplKCk7
Ci0gICAgc2l6ZV90IHVzYWJsZUxlbmd0aCA9IG1pbihtX2J1ZmZlci5jYXBhY2l0eSgpIC0gb2xk
TGVuZ3RoLCBsZW5ndGgpOworICAgIHNpemVfdCB1c2FibGVMZW5ndGggPSBzdGQ6Om1pbihtX2J1
ZmZlci5jYXBhY2l0eSgpIC0gb2xkTGVuZ3RoLCBsZW5ndGgpOwogICAgIEFTU0VSVCh1c2FibGVM
ZW5ndGgpOwogICAgIG1fYnVmZmVyLmFwcGVuZChjaGFyYWN0ZXJzLCB1c2FibGVMZW5ndGgpOwog
ICAgIGZvbGRRdW90ZU1hcmtzQW5kU29mdEh5cGhlbnMobV9idWZmZXIuZGF0YSgpICsgb2xkTGVu
Z3RoLCB1c2FibGVMZW5ndGgpOwpAQCAtMjA2OCw3ICsyMDY3LDcgQEAgaW5saW5lIHZvaWQgU2Vh
cmNoQnVmZmVyOjpwcmVwZW5kQ29udGV4dChjb25zdCBVQ2hhciogY2hhcmFjdGVycywgc2l6ZV90
IGxlbmd0aCkKICAgICAgICAgd29yZEJvdW5kYXJ5Q29udGV4dFN0YXJ0ID0gc3RhcnRPZkxhc3RX
b3JkQm91bmRhcnlDb250ZXh0KGNoYXJhY3RlcnMsIHdvcmRCb3VuZGFyeUNvbnRleHRTdGFydCk7
CiAgICAgfQogCi0gICAgc2l6ZV90IHVzYWJsZUxlbmd0aCA9IG1pbihtX2J1ZmZlci5jYXBhY2l0
eSgpIC0gbV9wcmVmaXhMZW5ndGgsIGxlbmd0aCAtIHdvcmRCb3VuZGFyeUNvbnRleHRTdGFydCk7
CisgICAgc2l6ZV90IHVzYWJsZUxlbmd0aCA9IHN0ZDo6bWluKG1fYnVmZmVyLmNhcGFjaXR5KCkg
LSBtX3ByZWZpeExlbmd0aCwgbGVuZ3RoIC0gd29yZEJvdW5kYXJ5Q29udGV4dFN0YXJ0KTsKICAg
ICBtX2J1ZmZlci5pbnNlcnQoMCwgY2hhcmFjdGVycyArIGxlbmd0aCAtIHVzYWJsZUxlbmd0aCwg
dXNhYmxlTGVuZ3RoKTsKICAgICBtX3ByZWZpeExlbmd0aCArPSB1c2FibGVMZW5ndGg7CiAKQEAg
LTIyNDEsMTAgKzIyNDAsMTAgQEAgbmV4dE1hdGNoOgogICAgICAgICAgICAgaW50IHdvcmRCb3Vu
ZGFyeUNvbnRleHRTdGFydCA9IG1hdGNoU3RhcnQ7CiAgICAgICAgICAgICBVMTZfQkFDS18xKG1f
YnVmZmVyLmRhdGEoKSwgMCwgd29yZEJvdW5kYXJ5Q29udGV4dFN0YXJ0KTsKICAgICAgICAgICAg
IHdvcmRCb3VuZGFyeUNvbnRleHRTdGFydCA9IHN0YXJ0T2ZMYXN0V29yZEJvdW5kYXJ5Q29udGV4
dChtX2J1ZmZlci5kYXRhKCksIHdvcmRCb3VuZGFyeUNvbnRleHRTdGFydCk7Ci0gICAgICAgICAg
ICBvdmVybGFwID0gbWluKHNpemUgLSAxLCBtYXgob3ZlcmxhcCwgc2l6ZSAtIHdvcmRCb3VuZGFy
eUNvbnRleHRTdGFydCkpOworICAgICAgICAgICAgb3ZlcmxhcCA9IHN0ZDo6bWluKHNpemUgLSAx
LCBzdGQ6Om1heChvdmVybGFwLCBzaXplIC0gd29yZEJvdW5kYXJ5Q29udGV4dFN0YXJ0KSk7CiAg
ICAgICAgIH0KICAgICAgICAgbWVtY3B5KG1fYnVmZmVyLmRhdGEoKSwgbV9idWZmZXIuZGF0YSgp
ICsgc2l6ZSAtIG92ZXJsYXAsIG92ZXJsYXAgKiBzaXplb2YoVUNoYXIpKTsKLSAgICAgICAgbV9w
cmVmaXhMZW5ndGggLT0gbWluKG1fcHJlZml4TGVuZ3RoLCBzaXplIC0gb3ZlcmxhcCk7CisgICAg
ICAgIG1fcHJlZml4TGVuZ3RoIC09IHN0ZDo6bWluKG1fcHJlZml4TGVuZ3RoLCBzaXplIC0gb3Zl
cmxhcCk7CiAgICAgICAgIG1fYnVmZmVyLnNocmluayhvdmVybGFwKTsKICAgICAgICAgcmV0dXJu
IDA7CiAgICAgfQpAQCAtMjI2MSw3ICsyMjYwLDcgQEAgbmV4dE1hdGNoOgogCiAgICAgc2l6ZV90
IG5ld1NpemUgPSBzaXplIC0gKG1hdGNoU3RhcnQgKyAxKTsKICAgICBtZW1tb3ZlKG1fYnVmZmVy
LmRhdGEoKSwgbV9idWZmZXIuZGF0YSgpICsgbWF0Y2hTdGFydCArIDEsIG5ld1NpemUgKiBzaXpl
b2YoVUNoYXIpKTsKLSAgICBtX3ByZWZpeExlbmd0aCAtPSBtaW48c2l6ZV90PihtX3ByZWZpeExl
bmd0aCwgbWF0Y2hTdGFydCArIDEpOworICAgIG1fcHJlZml4TGVuZ3RoIC09IHN0ZDo6bWluPHNp
emVfdD4obV9wcmVmaXhMZW5ndGgsIG1hdGNoU3RhcnQgKyAxKTsKICAgICBtX2J1ZmZlci5zaHJp
bmsobmV3U2l6ZSk7CiAKICAgICBzdGFydCA9IHNpemUgLSBtYXRjaFN0YXJ0OwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9WaXNpYmxlVW5pdHMuY3BwIGIvU291cmNlL1dlYkNv
cmUvZWRpdGluZy9WaXNpYmxlVW5pdHMuY3BwCmluZGV4IGFmMmVhMTMzYmE3MmRiMjMxM2I5MGMz
Zjc1ZTM1NDk2MjNjMjc0NjkuLjVlN2ZjYjY2MTFlMmVkYzc5MmEyOGUwOWM4ZjY2MTJmNThjMjAw
NmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVmlzaWJsZVVuaXRzLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1Zpc2libGVVbml0cy5jcHAKQEAgLTExMzcsNyAr
MTEzNyw3IEBAIFZpc2libGVQb3NpdGlvbiBzdGFydE9mUGFyYWdyYXBoKGNvbnN0IFZpc2libGVQ
b3NpdGlvbiYgYywgRWRpdGluZ0JvdW5kYXJ5Q3Jvc3NpCiAgICAgICAgICAgICAgICAgaW50IGkg
PSB0b1JlbmRlclRleHQociktPnRleHRMZW5ndGgoKTsKICAgICAgICAgICAgICAgICBpbnQgbyA9
IG9mZnNldDsKICAgICAgICAgICAgICAgICBpZiAobiA9PSBzdGFydE5vZGUgJiYgbyA8IGkpCi0g
ICAgICAgICAgICAgICAgICAgIGkgPSBtYXgoMCwgbyk7CisgICAgICAgICAgICAgICAgICAgIGkg
PSBzdGQ6Om1heCgwLCBvKTsKICAgICAgICAgICAgICAgICB3aGlsZSAoLS1pID49IDApIHsKICAg
ICAgICAgICAgICAgICAgICAgaWYgKGNoYXJzW2ldID09ICdcbicpCiAgICAgICAgICAgICAgICAg
ICAgICAgICByZXR1cm4gVmlzaWJsZVBvc2l0aW9uKFBvc2l0aW9uKHRvVGV4dChuKSwgaSArIDEp
LCBET1dOU1RSRUFNKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvaHRtbGVk
aXRpbmcuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9odG1sZWRpdGluZy5jcHAKaW5kZXgg
ZmM3YTgzNTI5NDhiYTc3NjJjN2U5ZGM0YjIxZmRmZmViZDM3NmJmNy4uZWZmNDU4NWM2YTgxMDhk
MTFkZTI0MDlhMzc2YzhiMDM3MGQ2MmY3NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRp
dGluZy9odG1sZWRpdGluZy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9odG1sZWRp
dGluZy5jcHAKQEAgLTU3LDggKzU3LDYgQEAKICNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+
CiAjaW5jbHVkZSA8d3RmL3VuaWNvZGUvQ2hhcmFjdGVyTmFtZXMuaD4KIAotdXNpbmcgbmFtZXNw
YWNlIHN0ZDsKLQogbmFtZXNwYWNlIFdlYkNvcmUgewogCiB1c2luZyBuYW1lc3BhY2UgSFRNTE5h
bWVzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYXJrdXAuY3BwIGIvU291
cmNlL1dlYkNvcmUvZWRpdGluZy9tYXJrdXAuY3BwCmluZGV4IDcwYjU0ZmVkNWY1N2ZiMjQ0ZmQx
MjhkMGYxN2YxODNjZGEwZDEyMGMuLmU4MzhhNDNhMDZjNGNkNzVmMDhkMGYzY2Q2YzI5ZjFmNjU3
NTdiMDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFya3VwLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hcmt1cC5jcHAKQEAgLTY0LDggKzY0LDYgQEAKICNp
bmNsdWRlICJEZWxldGVCdXR0b25Db250cm9sbGVyLmgiCiAjZW5kaWYKIAotdXNpbmcgbmFtZXNw
YWNlIHN0ZDsKLQogbmFtZXNwYWNlIFdlYkNvcmUgewogCiB1c2luZyBuYW1lc3BhY2UgSFRNTE5h
bWVzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlUmVhZGVyTG9hZGVy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZVJlYWRlckxvYWRlci5jcHAKaW5kZXgg
MjQ0N2MzMGVhNTE0YWZjOGFmMjI1YjRlYTZlZjA0YzIyZGE1N2NlYi4uODlhNjdiOWYyM2QzNWRm
MWU1ZGJiODJiYjc4ZDFhODBjZjBiNzA2OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZmls
ZWFwaS9GaWxlUmVhZGVyTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0Zp
bGVSZWFkZXJMb2FkZXIuY3BwCkBAIC01MCw4ICs1MCw2IEBACiAjaW5jbHVkZSA8d3RmL3RleHQv
QmFzZTY0Lmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgogCi11c2luZyBu
YW1lc3BhY2Ugc3RkOwotCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNvbnN0IGludCBkZWZhdWx0
QnVmZmVyTGVuZ3RoID0gMzI3Njg7CkBAIC0xNTQsNyArMTUyLDcgQEAgdm9pZCBGaWxlUmVhZGVy
TG9hZGVyOjpkaWRSZWNlaXZlUmVzcG9uc2UodW5zaWduZWQgbG9uZywgY29uc3QgUmVzb3VyY2VS
ZXNwb25zZSYKICAgICAvLyBDaGVjayB0aGF0IHdlIGNhbiBjYXN0IHRvIHVuc2lnbmVkIHNpbmNl
IHdlIGhhdmUgdG8gZG8KICAgICAvLyBzbyB0byBjYWxsIEFycmF5QnVmZmVyJ3MgY3JlYXRlIGZ1
bmN0aW9uLgogICAgIC8vIEZJWE1FOiBTdXBwb3J0IHJlYWRpbmcgbW9yZSB0aGFuIHRoZSBjdXJy
ZW50IHNpemUgbGltaXQgb2YgQXJyYXlCdWZmZXIuCi0gICAgaWYgKGxlbmd0aCA+IG51bWVyaWNf
bGltaXRzPHVuc2lnbmVkPjo6bWF4KCkpIHsKKyAgICBpZiAobGVuZ3RoID4gc3RkOjpudW1lcmlj
X2xpbWl0czx1bnNpZ25lZD46Om1heCgpKSB7CiAgICAgICAgIGZhaWxlZChGaWxlRXJyb3I6Ok5P
VF9SRUFEQUJMRV9FUlIpOwogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtMTg2LDE0ICsxODQs
MTQgQEAgdm9pZCBGaWxlUmVhZGVyTG9hZGVyOjpkaWRSZWNlaXZlRGF0YShjb25zdCBjaGFyKiBk
YXRhLCBpbnQgZGF0YUxlbmd0aCkKICAgICB1bnNpZ25lZCByZW1haW5pbmdCdWZmZXJTcGFjZSA9
IG1fdG90YWxCeXRlcyAtIG1fYnl0ZXNMb2FkZWQ7CiAgICAgaWYgKGxlbmd0aCA+IHN0YXRpY19j
YXN0PGxvbmcgbG9uZz4ocmVtYWluaW5nQnVmZmVyU3BhY2UpKSB7CiAgICAgICAgIC8vIElmIHRo
ZSBidWZmZXIgaGFzIGhpdCBtYXhpbXVtIHNpemUsIGl0IGNhbid0IGJlIGdyb3duIGFueSBtb3Jl
LgotICAgICAgICBpZiAobV90b3RhbEJ5dGVzID49IG51bWVyaWNfbGltaXRzPHVuc2lnbmVkPjo6
bWF4KCkpIHsKKyAgICAgICAgaWYgKG1fdG90YWxCeXRlcyA+PSBzdGQ6Om51bWVyaWNfbGltaXRz
PHVuc2lnbmVkPjo6bWF4KCkpIHsKICAgICAgICAgICAgIGZhaWxlZChGaWxlRXJyb3I6Ok5PVF9S
RUFEQUJMRV9FUlIpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgICAgIGlm
IChtX3ZhcmlhYmxlTGVuZ3RoKSB7CiAgICAgICAgICAgICB1bnNpZ25lZCBsb25nIGxvbmcgbmV3
TGVuZ3RoID0gbV90b3RhbEJ5dGVzICogMjsKLSAgICAgICAgICAgIGlmIChuZXdMZW5ndGggPiBu
dW1lcmljX2xpbWl0czx1bnNpZ25lZD46Om1heCgpKQotICAgICAgICAgICAgICAgIG5ld0xlbmd0
aCA9IG51bWVyaWNfbGltaXRzPHVuc2lnbmVkPjo6bWF4KCk7CisgICAgICAgICAgICBpZiAobmV3
TGVuZ3RoID4gc3RkOjpudW1lcmljX2xpbWl0czx1bnNpZ25lZD46Om1heCgpKQorICAgICAgICAg
ICAgICAgIG5ld0xlbmd0aCA9IHN0ZDo6bnVtZXJpY19saW1pdHM8dW5zaWduZWQ+OjptYXgoKTsK
ICAgICAgICAgICAgIFJlZlB0cjxBcnJheUJ1ZmZlcj4gbmV3RGF0YSA9CiAgICAgICAgICAgICAg
ICAgQXJyYXlCdWZmZXI6OmNyZWF0ZShzdGF0aWNfY2FzdDx1bnNpZ25lZD4obmV3TGVuZ3RoKSwg
MSk7CiAgICAgICAgICAgICBtZW1jcHkoc3RhdGljX2Nhc3Q8Y2hhcio+KG5ld0RhdGEtPmRhdGEo
KSksIHN0YXRpY19jYXN0PGNoYXIqPihtX3Jhd0RhdGEtPmRhdGEoKSksIG1fYnl0ZXNMb2FkZWQp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaGlzdG9yeS9CYWNrRm9yd2FyZExpc3QuY3Bw
IGIvU291cmNlL1dlYkNvcmUvaGlzdG9yeS9CYWNrRm9yd2FyZExpc3QuY3BwCmluZGV4IDE1ZjEw
MTU5Y2Y2NmMwMjI3OGVmOGE2OTI2YjhjMWU3ZDE0YmE3YmUuLjFiNGY3NjU4YzI4NWI0ZmY0OGIy
MTRhODcwMzY3ZGZjMGRlNGUxNzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2hpc3Rvcnkv
QmFja0ZvcndhcmRMaXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9oaXN0b3J5L0JhY2tGb3J3
YXJkTGlzdC5jcHAKQEAgLTM2LDggKzM2LDYgQEAKICNpbmNsdWRlICJQYWdlQ2FjaGUuaCIKICNp
bmNsdWRlICJTZXJpYWxpemVkU2NyaXB0VmFsdWUuaCIKIAotdXNpbmcgbmFtZXNwYWNlIHN0ZDsK
LQogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBzdGF0aWMgY29uc3QgdW5zaWduZWQgRGVmYXVsdENh
cGFjaXR5ID0gMTAwOwpAQCAtMTQ0LDcgKzE0Miw3IEBAIHZvaWQgQmFja0ZvcndhcmRMaXN0Ojpi
YWNrTGlzdFdpdGhMaW1pdChpbnQgbGltaXQsIEhpc3RvcnlJdGVtVmVjdG9yJiBsaXN0KQogewog
ICAgIGxpc3QuY2xlYXIoKTsKICAgICBpZiAobV9jdXJyZW50ICE9IE5vQ3VycmVudEl0ZW1JbmRl
eCkgewotICAgICAgICB1bnNpZ25lZCBmaXJzdCA9IG1heCgoaW50KW1fY3VycmVudCAtIGxpbWl0
LCAwKTsKKyAgICAgICAgdW5zaWduZWQgZmlyc3QgPSBzdGQ6Om1heCgoaW50KW1fY3VycmVudCAt
IGxpbWl0LCAwKTsKICAgICAgICAgZm9yICg7IGZpcnN0IDwgbV9jdXJyZW50OyArK2ZpcnN0KQog
ICAgICAgICAgICAgbGlzdC5hcHBlbmQobV9lbnRyaWVzW2ZpcnN0XSk7CiAgICAgfQpAQCAtMTU5
LDcgKzE1Nyw3IEBAIHZvaWQgQmFja0ZvcndhcmRMaXN0Ojpmb3J3YXJkTGlzdFdpdGhMaW1pdChp
bnQgbGltaXQsIEhpc3RvcnlJdGVtVmVjdG9yJiBsaXN0KQogICAgICAgICAKICAgICB1bnNpZ25l
ZCBsYXN0RW50cnkgPSBtX2VudHJpZXMuc2l6ZSgpIC0gMTsKICAgICBpZiAobV9jdXJyZW50IDwg
bGFzdEVudHJ5KSB7Ci0gICAgICAgIGludCBsYXN0ID0gbWluKG1fY3VycmVudCArIGxpbWl0LCBs
YXN0RW50cnkpOworICAgICAgICBpbnQgbGFzdCA9IHN0ZDo6bWluKG1fY3VycmVudCArIGxpbWl0
LCBsYXN0RW50cnkpOwogICAgICAgICBsaW1pdCA9IG1fY3VycmVudCArIDE7CiAgICAgICAgIGZv
ciAoOyBsaW1pdCA8PSBsYXN0OyArK2xpbWl0KQogICAgICAgICAgICAgbGlzdC5hcHBlbmQobV9l
bnRyaWVzW2xpbWl0XSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9oaXN0b3J5L1BhZ2VD
YWNoZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9oaXN0b3J5L1BhZ2VDYWNoZS5jcHAKaW5kZXggMzI5
NDIwNjgwNjVkYWU1NzZhNTdjMmNkNzM3NTZkZjE4ZTA0ZmE5Mi4uMDljZjM4N2MwNDQ1MjkxZmQ1
Y2FmNWQwNTlhNDliMzdiZDMxYjlmZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaGlzdG9y
eS9QYWdlQ2FjaGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2hpc3RvcnkvUGFnZUNhY2hlLmNw
cApAQCAtNTcsOCArNTcsNiBAQAogI2luY2x1ZGUgIkRldmljZVByb3hpbWl0eUNvbnRyb2xsZXIu
aCIKICNlbmRpZgogCi11c2luZyBuYW1lc3BhY2Ugc3RkOwotCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKICNpZiAhZGVmaW5lZChOREVCVUcpCkBAIC0zNzMsNyArMzcxLDcgQEAgYm9vbCBQYWdlQ2Fj
aGU6OmNhbkNhY2hlKFBhZ2UqIHBhZ2UpIGNvbnN0CiB2b2lkIFBhZ2VDYWNoZTo6c2V0Q2FwYWNp
dHkoaW50IGNhcGFjaXR5KQogewogICAgIEFTU0VSVChjYXBhY2l0eSA+PSAwKTsKLSAgICBtX2Nh
cGFjaXR5ID0gbWF4KGNhcGFjaXR5LCAwKTsKKyAgICBtX2NhcGFjaXR5ID0gc3RkOjptYXgoY2Fw
YWNpdHksIDApOwogCiAgICAgcHJ1bmUoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvQmFzZURhdGVBbmRUaW1lSW5wdXRUeXBlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
QmFzZURhdGVBbmRUaW1lSW5wdXRUeXBlLmNwcAppbmRleCAwY2FkNjg1ZDMwYzBkNTgxZDk3MzIw
MDQ1OGJmZmMxZjBjYTI2NmRlLi44NDNmOWY3MWZjNDQxOGVkMzM3OWQ1MzcyNzJmNGM5MWE0Y2Vj
M2M2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0Jhc2VEYXRlQW5kVGltZUlucHV0
VHlwZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9CYXNlRGF0ZUFuZFRpbWVJbnB1dFR5
cGUuY3BwCkBAIC00NSw3ICs0NSw2IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHVzaW5nIG5h
bWVzcGFjZSBIVE1MTmFtZXM7Ci11c2luZyBuYW1lc3BhY2Ugc3RkOwogCiBzdGF0aWMgY29uc3Qg
aW50IG1zZWNQZXJNaW51dGUgPSA2MCAqIDEwMDA7CiBzdGF0aWMgY29uc3QgaW50IG1zZWNQZXJT
ZWNvbmQgPSAxMDAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9GVFBEaXJlY3Rv
cnlEb2N1bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0ZUUERpcmVjdG9yeURvY3VtZW50
LmNwcAppbmRleCA4ZjkyZjNmMzVkNGUxODBkZTExYzQ2MGY2MGU2ZmE3MzM0OTE4ZWI1Li4yM2Q3
NWI0MWE3ZTA5YTQ3ZTFhNjMzNmU2NWIwMjg1OGYzYjdiZTdkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0ZUUERpcmVjdG9yeURvY3VtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0ZUUERpcmVjdG9yeURvY3VtZW50LmNwcApAQCAtNDQsOCArNDQsNiBAQAogI2luY2x1
ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogI2luY2x1ZGUgPHd0Zi91bmljb2RlL0NoYXJhY3Rl
ck5hbWVzLmg+CiAKLXVzaW5nIG5hbWVzcGFjZSBzdGQ7Ci0KIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAogdXNpbmcgbmFtZXNwYWNlIEhUTUxOYW1lczsKQEAgLTY2LDcgKzY0LDcgQEAgcHVibGljOgog
ICAgIHsKICAgICAgICAgaWYgKChtX2Rlc3QgLSBtX2J1ZmZlcikgPiBtX3NpemUgLSBsZW4pIHsK
ICAgICAgICAgICAgIC8vIEVubGFyZ2UgYnVmZmVyCi0gICAgICAgICAgICBpbnQgbmV3U2l6ZSA9
IG1heChtX3NpemUgKiAyLCBtX3NpemUgKyBsZW4pOworICAgICAgICAgICAgaW50IG5ld1NpemUg
PSBzdGQ6Om1heChtX3NpemUgKiAyLCBtX3NpemUgKyBsZW4pOwogICAgICAgICAgICAgaW50IG9s
ZE9mZnNldCA9IG1fZGVzdCAtIG1fYnVmZmVyOwogICAgICAgICAgICAgbV9idWZmZXIgPSBzdGF0
aWNfY2FzdDxVQ2hhcio+KGZhc3RSZWFsbG9jKG1fYnVmZmVyLCBuZXdTaXplICogc2l6ZW9mKFVD
aGFyKSkpOwogICAgICAgICAgICAgbV9kZXN0ID0gbV9idWZmZXIgKyBvbGRPZmZzZXQ7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBcmVhRWxlbWVudC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxBcmVhRWxlbWVudC5jcHAKaW5kZXggZGI0MWM1YjM5OGRmOGI5ODg0
NWJjY2E1OTc3OGNkZTA4ZmQ0MmExMy4uZWYwOWRmZDJiZDAzOGU4YWYyNDBkNTEzZjM2OWZkMDUx
NzY0NmRjYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQXJlYUVsZW1lbnQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEFyZWFFbGVtZW50LmNwcApAQCAtMzMs
OCArMzMsNiBAQAogI2luY2x1ZGUgIlJlbmRlckltYWdlLmgiCiAjaW5jbHVkZSAiUmVuZGVyVmll
dy5oIgogCi11c2luZyBuYW1lc3BhY2Ugc3RkOwotCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHVz
aW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7CkBAIC0xNTgsNyArMTU2LDcgQEAgUGF0aCBIVE1MQXJl
YUVsZW1lbnQ6OmdldFJlZ2lvbihjb25zdCBMYXlvdXRTaXplJiBzaXplKSBjb25zdAogICAgICAg
ICBjYXNlIENpcmNsZToKICAgICAgICAgICAgIGlmIChtX2Nvb3Jkc0xlbiA+PSAzKSB7CiAgICAg
ICAgICAgICAgICAgTGVuZ3RoIHJhZGl1cyA9IG1fY29vcmRzWzJdOwotICAgICAgICAgICAgICAg
IGludCByID0gbWluKG1pbmltdW1WYWx1ZUZvckxlbmd0aChyYWRpdXMsIHdpZHRoLCByZW5kZXJW
aWV3KSwgbWluaW11bVZhbHVlRm9yTGVuZ3RoKHJhZGl1cywgaGVpZ2h0LCByZW5kZXJWaWV3KSk7
CisgICAgICAgICAgICAgICAgaW50IHIgPSBzdGQ6Om1pbihtaW5pbXVtVmFsdWVGb3JMZW5ndGgo
cmFkaXVzLCB3aWR0aCwgcmVuZGVyVmlldyksIG1pbmltdW1WYWx1ZUZvckxlbmd0aChyYWRpdXMs
IGhlaWdodCwgcmVuZGVyVmlldykpOwogICAgICAgICAgICAgICAgIHBhdGguYWRkRWxsaXBzZShG
bG9hdFJlY3QobWluaW11bVZhbHVlRm9yTGVuZ3RoKG1fY29vcmRzWzBdLCB3aWR0aCwgcmVuZGVy
VmlldykgLSByLCBtaW5pbXVtVmFsdWVGb3JMZW5ndGgobV9jb29yZHNbMV0sIGhlaWdodCwgcmVu
ZGVyVmlldykgLSByLCAyICogciwgMiAqIHIpKTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAg
IGJyZWFrOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRWxlbWVudC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxFbGVtZW50LmNwcAppbmRleCA2OTcwNWRlMzE2OGVl
MzUyMmExZmViZjcxYjlmMzI2Y2FjMGYwNmVkLi5mNzM5NTgyZjM4OWE4OGQ5ZTg2Yjg1NmIzZGEw
YWY0MTBhNDIwMTdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxFbGVtZW50
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxFbGVtZW50LmNwcApAQCAtNjcsOSAr
NjcsNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiB1c2luZyBuYW1lc3BhY2UgSFRNTE5hbWVzOwog
dXNpbmcgbmFtZXNwYWNlIFdURjsKIAotdXNpbmcgc3RkOjptaW47Ci11c2luZyBzdGQ6Om1heDsK
LQogUGFzc1JlZlB0cjxIVE1MRWxlbWVudD4gSFRNTEVsZW1lbnQ6OmNyZWF0ZShjb25zdCBRdWFs
aWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCYgZG9jdW1lbnQpCiB7CiAgICAgcmV0dXJuIGFk
b3B0UmVmKG5ldyBIVE1MRWxlbWVudCh0YWdOYW1lLCBkb2N1bWVudCkpOwpAQCAtMzI5LDcgKzMy
Niw3IEBAIHZvaWQgSFRNTEVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5h
bWUmIG5hbWUsIGNvbnN0IEF0b21pY1N0cmluZyYKICAgICAgICAgICAgIGNsZWFyVGFiSW5kZXhF
eHBsaWNpdGx5SWZOZWVkZWQoKTsKICAgICAgICAgZWxzZSBpZiAocGFyc2VIVE1MSW50ZWdlcih2
YWx1ZSwgdGFiaW5kZXgpKSB7CiAgICAgICAgICAgICAvLyBDbGFtcCB0YWJpbmRleCB0byB0aGUg
cmFuZ2Ugb2YgJ3Nob3J0JyB0byBtYXRjaCBGaXJlZm94J3MgYmVoYXZpb3IuCi0gICAgICAgICAg
ICBzZXRUYWJJbmRleEV4cGxpY2l0bHkobWF4KHN0YXRpY19jYXN0PGludD4oc3RkOjpudW1lcmlj
X2xpbWl0czxzaG9ydD46Om1pbigpKSwgbWluKHRhYmluZGV4LCBzdGF0aWNfY2FzdDxpbnQ+KHN0
ZDo6bnVtZXJpY19saW1pdHM8c2hvcnQ+OjptYXgoKSkpKSk7CisgICAgICAgICAgICBzZXRUYWJJ
bmRleEV4cGxpY2l0bHkoc3RkOjptYXgoc3RhdGljX2Nhc3Q8aW50PihzdGQ6Om51bWVyaWNfbGlt
aXRzPHNob3J0Pjo6bWluKCkpLCBzdGQ6Om1pbih0YWJpbmRleCwgc3RhdGljX2Nhc3Q8aW50Pihz
dGQ6Om51bWVyaWNfbGltaXRzPHNob3J0Pjo6bWF4KCkpKSkpOwogICAgICAgICB9CiAgICAgfSBl
bHNlIGlmIChuYW1lLm5hbWVzcGFjZVVSSSgpLmlzTnVsbCgpKSB7CiAgICAgICAgIC8vIEZJWE1F
OiBDYW4gd2UgZG8gdGhpcyBldmVuIGZhc3RlciBieSBjaGVja2luZyB0aGUgbG9jYWwgbmFtZSAi
b24iIHByZWZpeCBiZWZvcmUgd2UgZG8gYW55dGhpbmcgd2l0aCB0aGUgbWFwPwpAQCAtMTAzNCw3
ICsxMDMxLDcgQEAgc3RhdGljIFJHQkEzMiBwYXJzZUNvbG9yU3RyaW5nV2l0aENyYXp5TGVnYWN5
UnVsZXMoY29uc3QgU3RyaW5nJiBjb2xvclN0cmluZykKICAgICAvLyBTcGxpdCB0aGUgZGlnaXRz
IGludG8gdGhyZWUgY29tcG9uZW50cywgdGhlbiBzZWFyY2ggdGhlIGxhc3QgOCBkaWdpdHMgb2Yg
ZWFjaCBjb21wb25lbnQuCiAgICAgQVNTRVJUKGRpZ2l0QnVmZmVyLnNpemUoKSA+PSA2KTsKICAg
ICBzaXplX3QgY29tcG9uZW50TGVuZ3RoID0gZGlnaXRCdWZmZXIuc2l6ZSgpIC8gMzsKLSAgICBz
aXplX3QgY29tcG9uZW50U2VhcmNoV2luZG93TGVuZ3RoID0gbWluPHNpemVfdD4oY29tcG9uZW50
TGVuZ3RoLCA4KTsKKyAgICBzaXplX3QgY29tcG9uZW50U2VhcmNoV2luZG93TGVuZ3RoID0gc3Rk
OjptaW48c2l6ZV90Pihjb21wb25lbnRMZW5ndGgsIDgpOwogICAgIHNpemVfdCByZWRJbmRleCA9
IGNvbXBvbmVudExlbmd0aCAtIGNvbXBvbmVudFNlYXJjaFdpbmRvd0xlbmd0aDsKICAgICBzaXpl
X3QgZ3JlZW5JbmRleCA9IGNvbXBvbmVudExlbmd0aCAqIDIgLSBjb21wb25lbnRTZWFyY2hXaW5k
b3dMZW5ndGg7CiAgICAgc2l6ZV90IGJsdWVJbmRleCA9IGNvbXBvbmVudExlbmd0aCAqIDMgLSBj
b21wb25lbnRTZWFyY2hXaW5kb3dMZW5ndGg7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxGb3JtQ29udHJvbEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
Rm9ybUNvbnRyb2xFbGVtZW50LmNwcAppbmRleCAwNDM5YWU5YjY4MDczMjZhNjE5M2ZhYWM4YTMy
ZDQxZTRhZDJhYjYwLi4wZjU3NmMyOTUzYmRiMzcwMjc1MDY3MmY2MTdmNmQ2NTRhNWMxMzJkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtQ29udHJvbEVsZW1lbnQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1Db250cm9sRWxlbWVudC5jcHAKQEAg
LTQ1LDcgKzQ1LDYgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogdXNpbmcgbmFtZXNwYWNlIEhU
TUxOYW1lczsKLXVzaW5nIG5hbWVzcGFjZSBzdGQ7CiAKIEhUTUxGb3JtQ29udHJvbEVsZW1lbnQ6
OkhUTUxGb3JtQ29udHJvbEVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9j
dW1lbnQmIGRvY3VtZW50LCBIVE1MRm9ybUVsZW1lbnQqIGZvcm0pCiAgICAgOiBMYWJlbGFibGVF
bGVtZW50KHRhZ05hbWUsIGRvY3VtZW50KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MRm9ybUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUVsZW1l
bnQuY3BwCmluZGV4IGIxN2I4N2U5YzliMTg2OGU2MTMzZWY4NWNjYWRlMDJjODM1MzRlYmYuLjk1
ODkwM2UzNjM1OTc0MDgxNTI4ZjhiZWY1ZjlmY2ZkNmVjNGUzMzMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1FbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxGb3JtRWxlbWVudC5jcHAKQEAgLTQ4LDggKzQ4LDYgQEAKICNpbmNsdWRlIDxsaW1p
dHM+CiAjaW5jbHVkZSA8d3RmL1JlZi5oPgogCi11c2luZyBuYW1lc3BhY2Ugc3RkOwotCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKIHVzaW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7CkBAIC0zMTEsNyAr
MzA5LDcgQEAgdm9pZCBIVE1MRm9ybUVsZW1lbnQ6OmdldFRleHRGaWVsZFZhbHVlcyhTdHJpbmdQ
YWlyVmVjdG9yJiBmaWVsZE5hbWVzQW5kVmFsdWVzKQogICAgICAgICBIVE1MSW5wdXRFbGVtZW50
JiBpbnB1dCA9IHRvSFRNTElucHV0RWxlbWVudChlbGVtZW50KTsKICAgICAgICAgaWYgKCFpbnB1
dC5pc1RleHRGaWVsZCgpKQogICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgIGZpZWxkTmFt
ZXNBbmRWYWx1ZXMuYXBwZW5kKG1ha2VfcGFpcihpbnB1dC5uYW1lKCkuc3RyaW5nKCksIGlucHV0
LnZhbHVlKCkpKTsKKyAgICAgICAgZmllbGROYW1lc0FuZFZhbHVlcy5hcHBlbmQoc3RkOjptYWtl
X3BhaXIoaW5wdXQubmFtZSgpLnN0cmluZygpLCBpbnB1dC52YWx1ZSgpKSk7CiAgICAgfQogfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbWFnZUVsZW1lbnQuY3BwIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW1hZ2VFbGVtZW50LmNwcAppbmRleCBlNDQ3ODBiNDU1
YWE5Y2MwYmMzZDk0YmYyMTZlMTRlZjUxZTQzYTYzLi43OTY2NjE0MWQxN2RkNmJmNDJkMDdhN2Qy
OTY0MTVlZGU0OTUxYmUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbWFn
ZUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEltYWdlRWxlbWVudC5j
cHAKQEAgLTM3LDggKzM3LDYgQEAKICNpbmNsdWRlICJQYWdlLmgiCiAjaW5jbHVkZSAiUmVuZGVy
SW1hZ2UuaCIKIAotdXNpbmcgbmFtZXNwYWNlIHN0ZDsKLQogbmFtZXNwYWNlIFdlYkNvcmUgewog
CiB1c2luZyBuYW1lc3BhY2UgSFRNTE5hbWVzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElucHV0
RWxlbWVudC5jcHAKaW5kZXggNzI1NmYyZTUzYzBlZjk0Mzg4MDhlNTBmYjNjYjdhYTJmZTAxN2Zk
NS4uYmMwNDA1NzE0OGNiNzVmOGYwN2RmNGQzNDM4NGIyODdhYzlmZTlkNCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuY3BwCkBAIC04MSw4ICs4MSw2IEBACiAjaW5jbHVk
ZSAiVG91Y2hFdmVudC5oIgogI2VuZGlmCiAKLXVzaW5nIG5hbWVzcGFjZSBzdGQ7Ci0KIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAogdXNpbmcgbmFtZXNwYWNlIEhUTUxOYW1lczsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1hcEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MTWFwRWxlbWVudC5jcHAKaW5kZXggMDBhZGMzMGQ3ZjAwN2QwMjkzY2ZjYjFkZGFi
MTA4Y2ZmODZmNzM0ZS4uNGUzOWIxZTE5NDk4NGNlMWUzOWIwOTJhNzI4YzM3N2I2ZWM5NDNmYyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWFwRWxlbWVudC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWFwRWxlbWVudC5jcHAKQEAgLTMyLDggKzMyLDYgQEAK
ICNpbmNsdWRlICJIaXRUZXN0UmVzdWx0LmgiCiAjaW5jbHVkZSAiSW50U2l6ZS5oIgogCi11c2lu
ZyBuYW1lc3BhY2Ugc3RkOwotCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHVzaW5nIG5hbWVzcGFj
ZSBIVE1MTmFtZXM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVs
ZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcAppbmRl
eCA1NjNlZDQ4ZWEyNGY3OGY3Y2NhMjc3NTZmNmVmZDBmZDQyNzc2MDBlLi4yOTViZDU2Y2M3ZGRk
MTQzNTRkYmU0OWRmYTBkOGM4YzE2NDEzNmVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1l
ZGlhRWxlbWVudC5jcHAKQEAgLTE0OSw4ICsxNDksNiBAQAogI2luY2x1ZGUgIlVzZXJBZ2VudFNj
cmlwdHMuaCIKICNlbmRpZgogCi11c2luZyBuYW1lc3BhY2Ugc3RkOwotCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKIHN0YXRpYyB2b2lkIHNldEZsYWdzKHVuc2lnbmVkJiB2YWx1ZSwgdW5zaWduZWQg
ZmxhZ3MpCkBAIC0xOTcsNyArMTk1LDYgQEAgc3RhdGljIGNvbnN0IGNoYXIqIG1lZGlhU291cmNl
QmxvYlByb3RvY29sID0gImJsb2IiOwogI2VuZGlmCiAKIHVzaW5nIG5hbWVzcGFjZSBIVE1MTmFt
ZXM7Ci11c2luZyBuYW1lc3BhY2Ugc3RkOwogCiB0eXBlZGVmIEhhc2hNYXA8RG9jdW1lbnQqLCBI
YXNoU2V0PEhUTUxNZWRpYUVsZW1lbnQqPj4gRG9jdW1lbnRFbGVtZW50U2V0TWFwOwogc3RhdGlj
IERvY3VtZW50RWxlbWVudFNldE1hcCYgZG9jdW1lbnRUb0VsZW1lbnRTZXRNYXAoKQpAQCAtMjc2
LDkgKzI3Myw5IEBAIEhUTUxNZWRpYUVsZW1lbnQ6OkhUTUxNZWRpYUVsZW1lbnQoY29uc3QgUXVh
bGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQmIGRvY3VtCiAgICAgLCBtX3ZvbHVtZSgxLjBm
KQogICAgICwgbV92b2x1bWVJbml0aWFsaXplZChmYWxzZSkKICAgICAsIG1fbGFzdFNlZWtUaW1l
KDApCi0gICAgLCBtX3ByZXZpb3VzUHJvZ3Jlc3NUaW1lKG51bWVyaWNfbGltaXRzPGRvdWJsZT46
Om1heCgpKQorICAgICwgbV9wcmV2aW91c1Byb2dyZXNzVGltZShzdGQ6Om51bWVyaWNfbGltaXRz
PGRvdWJsZT46Om1heCgpKQogICAgICwgbV9jbG9ja1RpbWVBdExhc3RVcGRhdGVFdmVudCgwKQot
ICAgICwgbV9sYXN0VGltZVVwZGF0ZUV2ZW50TW92aWVUaW1lKG51bWVyaWNfbGltaXRzPGRvdWJs
ZT46Om1heCgpKQorICAgICwgbV9sYXN0VGltZVVwZGF0ZUV2ZW50TW92aWVUaW1lKHN0ZDo6bnVt
ZXJpY19saW1pdHM8ZG91YmxlPjo6bWF4KCkpCiAgICAgLCBtX2xvYWRTdGF0ZShXYWl0aW5nRm9y
U291cmNlKQogI2lmIEVOQUJMRShQTFVHSU5fUFJPWFlfRk9SX1ZJREVPKQogICAgICwgbV9wcm94
eVdpZGdldCgwKQpAQCAtMTIyNCw3ICsxMjIxLDcgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50Ojp1
cGRhdGVBY3RpdmVUZXh0VHJhY2tDdWVzKGRvdWJsZSBtb3ZpZVRpbWUpCiAgICAgICAgICAgICBk
b3VibGUgY3VlRW5kVGltZSA9IHBvdGVudGlhbGx5U2tpcHBlZEN1ZXNbaV0uaGlnaCgpOwogCiAg
ICAgICAgICAgICAvLyBDb25zaWRlciBjdWVzIHRoYXQgbWF5IGhhdmUgYmVlbiBtaXNzZWQgc2lu
Y2UgdGhlIGxhc3Qgc2VlayB0aW1lLgotICAgICAgICAgICAgaWYgKGN1ZVN0YXJ0VGltZSA+IG1h
eChtX2xhc3RTZWVrVGltZSwgbGFzdFRpbWUpICYmIGN1ZUVuZFRpbWUgPCBtb3ZpZVRpbWUpCisg
ICAgICAgICAgICBpZiAoY3VlU3RhcnRUaW1lID4gc3RkOjptYXgobV9sYXN0U2Vla1RpbWUsIGxh
c3RUaW1lKSAmJiBjdWVFbmRUaW1lIDwgbW92aWVUaW1lKQogICAgICAgICAgICAgICAgIG1pc3Nl
ZEN1ZXMuYXBwZW5kKHBvdGVudGlhbGx5U2tpcHBlZEN1ZXNbaV0pOwogICAgICAgICB9CiAgICAg
fQpAQCAtMTUyMCw3ICsxNTE3LDcgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50Ojp0ZXh0VHJhY2tB
ZGRDdWUoVGV4dFRyYWNrKiB0cmFjaywgUGFzc1JlZlB0cjxUZXh0VHJhY2tDdWUKIAogICAgIC8v
IE5lZ2F0aXZlIGR1cmF0aW9uIGN1ZXMgbmVlZCBiZSB0cmVhdGVkIGluIHRoZSBpbnRlcnZhbCB0
cmVlIGFzCiAgICAgLy8gemVyby1sZW5ndGggY3Vlcy4KLSAgICBkb3VibGUgZW5kVGltZSA9IG1h
eChjdWUtPnN0YXJ0VGltZSgpLCBjdWUtPmVuZFRpbWUoKSk7CisgICAgZG91YmxlIGVuZFRpbWUg
PSBzdGQ6Om1heChjdWUtPnN0YXJ0VGltZSgpLCBjdWUtPmVuZFRpbWUoKSk7CiAKICAgICBDdWVJ
bnRlcnZhbCBpbnRlcnZhbCA9IG1fY3VlVHJlZS5jcmVhdGVJbnRlcnZhbChjdWUtPnN0YXJ0VGlt
ZSgpLCBlbmRUaW1lLCBjdWUuZ2V0KCkpOwogICAgIGlmICghbV9jdWVUcmVlLmNvbnRhaW5zKGlu
dGVydmFsKSkKQEAgLTE1MzIsNyArMTUyOSw3IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6dGV4
dFRyYWNrUmVtb3ZlQ3VlKFRleHRUcmFjayosIFBhc3NSZWZQdHI8VGV4dFRyYWNrQ3VlPiBjCiB7
CiAgICAgLy8gTmVnYXRpdmUgZHVyYXRpb24gY3VlcyBuZWVkIHRvIGJlIHRyZWF0ZWQgaW4gdGhl
IGludGVydmFsIHRyZWUgYXMKICAgICAvLyB6ZXJvLWxlbmd0aCBjdWVzLgotICAgIGRvdWJsZSBl
bmRUaW1lID0gbWF4KGN1ZS0+c3RhcnRUaW1lKCksIGN1ZS0+ZW5kVGltZSgpKTsKKyAgICBkb3Vi
bGUgZW5kVGltZSA9IHN0ZDo6bWF4KGN1ZS0+c3RhcnRUaW1lKCksIGN1ZS0+ZW5kVGltZSgpKTsK
IAogICAgIEN1ZUludGVydmFsIGludGVydmFsID0gbV9jdWVUcmVlLmNyZWF0ZUludGVydmFsKGN1
ZS0+c3RhcnRUaW1lKCksIGVuZFRpbWUsIGN1ZS5nZXQoKSk7CiAgICAgbV9jdWVUcmVlLnJlbW92
ZShpbnRlcnZhbCk7CkBAIC0yMTAzLDcgKzIxMDAsNyBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6
OnByb2dyZXNzRXZlbnRUaW1lckZpcmVkKFRpbWVyPEhUTUxNZWRpYUVsZW1lbnQ+KikKIHZvaWQg
SFRNTE1lZGlhRWxlbWVudDo6cmV3aW5kKGRvdWJsZSB0aW1lRGVsdGEpCiB7CiAgICAgTE9HKE1l
ZGlhLCAiSFRNTE1lZGlhRWxlbWVudDo6cmV3aW5kKCVmKSIsIHRpbWVEZWx0YSk7Ci0gICAgc2V0
Q3VycmVudFRpbWUobWF4KGN1cnJlbnRUaW1lKCkgLSB0aW1lRGVsdGEsIG1pblRpbWVTZWVrYWJs
ZSgpKSwgSUdOT1JFX0VYQ0VQVElPTik7CisgICAgc2V0Q3VycmVudFRpbWUoc3RkOjptYXgoY3Vy
cmVudFRpbWUoKSAtIHRpbWVEZWx0YSwgbWluVGltZVNlZWthYmxlKCkpLCBJR05PUkVfRVhDRVBU
SU9OKTsKIH0KIAogdm9pZCBIVE1MTWVkaWFFbGVtZW50OjpyZXR1cm5Ub1JlYWx0aW1lKCkKQEAg
LTIxNzAsMTEgKzIxNjcsMTEgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50OjpzZWVrKGRvdWJsZSB0
aW1lLCBFeGNlcHRpb25Db2RlJiBlYykKIAogICAgIC8vIDUgLSBJZiB0aGUgbmV3IHBsYXliYWNr
IHBvc2l0aW9uIGlzIGxhdGVyIHRoYW4gdGhlIGVuZCBvZiB0aGUgbWVkaWEgcmVzb3VyY2UsIHRo
ZW4gbGV0IGl0IGJlIHRoZSBlbmQgCiAgICAgLy8gb2YgdGhlIG1lZGlhIHJlc291cmNlIGluc3Rl
YWQuCi0gICAgdGltZSA9IG1pbih0aW1lLCBkdXJhdGlvbigpKTsKKyAgICB0aW1lID0gc3RkOjpt
aW4odGltZSwgZHVyYXRpb24oKSk7CiAKICAgICAvLyA2IC0gSWYgdGhlIG5ldyBwbGF5YmFjayBw
b3NpdGlvbiBpcyBsZXNzIHRoYW4gdGhlIGVhcmxpZXN0IHBvc3NpYmxlIHBvc2l0aW9uLCBsZXQg
aXQgYmUgdGhhdCBwb3NpdGlvbiBpbnN0ZWFkLgogICAgIGRvdWJsZSBlYXJsaWVzdFRpbWUgPSBt
X3BsYXllci0+c3RhcnRUaW1lKCk7Ci0gICAgdGltZSA9IG1heCh0aW1lLCBlYXJsaWVzdFRpbWUp
OworICAgIHRpbWUgPSBzdGQ6Om1heCh0aW1lLCBlYXJsaWVzdFRpbWUpOwogCiAgICAgLy8gQXNr
IHRoZSBtZWRpYSBlbmdpbmUgZm9yIHRoZSB0aW1lIHZhbHVlIGluIHRoZSBtb3ZpZSdzIHRpbWUg
c2NhbGUgYmVmb3JlIGNvbXBhcmluZyB3aXRoIGN1cnJlbnQgdGltZS4gVGhpcwogICAgIC8vIGlz
IG5lY2Vzc2FyeSBiZWNhdXNlIGlmIHRoZSBzZWVrIHRpbWUgaXMgbm90IGVxdWFsIHRvIGN1cnJl
bnRUaW1lIGJ1dCB0aGUgZGVsdGEgaXMgbGVzcyB0aGFuIHRoZSBtb3ZpZSdzCkBAIC0yMzc3LDcg
KzIzNzQsNyBAQCBkb3VibGUgSFRNTE1lZGlhRWxlbWVudDo6ZHVyYXRpb24oKSBjb25zdAogICAg
IGlmIChtX3BsYXllciAmJiBtX3JlYWR5U3RhdGUgPj0gSEFWRV9NRVRBREFUQSkKICAgICAgICAg
cmV0dXJuIG1fcGxheWVyLT5kdXJhdGlvbigpOwogCi0gICAgcmV0dXJuIG51bWVyaWNfbGltaXRz
PGRvdWJsZT46OnF1aWV0X05hTigpOworICAgIHJldHVybiBzdGQ6Om51bWVyaWNfbGltaXRzPGRv
dWJsZT46OnF1aWV0X05hTigpOwogfQogCiBib29sIEhUTUxNZWRpYUVsZW1lbnQ6OnBhdXNlZCgp
IGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxTZWxlY3RFbGVtZW50
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFNlbGVjdEVsZW1lbnQuY3BwCmluZGV4IGVh
YTc2YzdhM2Q5OTkwY2UzNjhmYjlmNmYzNmFlNTE1Mjc2MGM3YzguLjMzY2MxNjI1NDYzMGE1Zjdm
MWNmZjEyODM3MGIzOGUzMWExNGRhNDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTFNlbGVjdEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFNlbGVj
dEVsZW1lbnQuY3BwCkBAIC01NSw3ICs1NSw2IEBACiAjaW5jbHVkZSAiU2V0dGluZ3MuaCIKICNp
bmNsdWRlICJTcGF0aWFsTmF2aWdhdGlvbi5oIgogCi11c2luZyBuYW1lc3BhY2Ugc3RkOwogdXNp
bmcgbmFtZXNwYWNlIFdURjo6VW5pY29kZTsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtMzA0
LDcgKzMwMyw3IEBAIHZvaWQgSFRNTFNlbGVjdEVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKGNvbnN0
IFF1YWxpZmllZE5hbWUmIG5hbWUsIGNvbnN0IEF0b21pY1N0CiAgICAgICAgICAgICBpZiAoQXR0
cmlidXRlKiBzaXplQXR0cmlidXRlID0gZW5zdXJlVW5pcXVlRWxlbWVudERhdGEoKS5maW5kQXR0
cmlidXRlQnlOYW1lKHNpemVBdHRyKSkKICAgICAgICAgICAgICAgICBzaXplQXR0cmlidXRlLT5z
ZXRWYWx1ZShhdHRyU2l6ZSk7CiAgICAgICAgIH0KLSAgICAgICAgc2l6ZSA9IG1heChzaXplLCAx
KTsKKyAgICAgICAgc2l6ZSA9IHN0ZDo6bWF4KHNpemUsIDEpOwogCiAgICAgICAgIC8vIEVuc3Vy
ZSB0aGF0IHdlJ3ZlIGRldGVybWluZWQgc2VsZWN0ZWRuZXNzIG9mIHRoZSBpdGVtcyBhdCBsZWFz
dCBvbmNlIHByaW9yIHRvIGNoYW5naW5nIHRoZSBzaXplLgogICAgICAgICBpZiAob2xkU2l6ZSAh
PSBzaXplKQpAQCAtNjIxLDggKzYyMCw4IEBAIHZvaWQgSFRNTFNlbGVjdEVsZW1lbnQ6OnVwZGF0
ZUxpc3RCb3hTZWxlY3Rpb24oYm9vbCBkZXNlbGVjdE90aGVyT3B0aW9ucykKICAgICBBU1NFUlQo
cmVuZGVyZXIoKSAmJiAocmVuZGVyZXIoKS0+aXNMaXN0Qm94KCkgfHwgbV9tdWx0aXBsZSkpOwog
ICAgIEFTU0VSVCghbGlzdEl0ZW1zKCkuc2l6ZSgpIHx8IG1fYWN0aXZlU2VsZWN0aW9uQW5jaG9y
SW5kZXggPj0gMCk7CiAKLSAgICB1bnNpZ25lZCBzdGFydCA9IG1pbihtX2FjdGl2ZVNlbGVjdGlv
bkFuY2hvckluZGV4LCBtX2FjdGl2ZVNlbGVjdGlvbkVuZEluZGV4KTsKLSAgICB1bnNpZ25lZCBl
bmQgPSBtYXgobV9hY3RpdmVTZWxlY3Rpb25BbmNob3JJbmRleCwgbV9hY3RpdmVTZWxlY3Rpb25F
bmRJbmRleCk7CisgICAgdW5zaWduZWQgc3RhcnQgPSBzdGQ6Om1pbihtX2FjdGl2ZVNlbGVjdGlv
bkFuY2hvckluZGV4LCBtX2FjdGl2ZVNlbGVjdGlvbkVuZEluZGV4KTsKKyAgICB1bnNpZ25lZCBl
bmQgPSBzdGQ6Om1heChtX2FjdGl2ZVNlbGVjdGlvbkFuY2hvckluZGV4LCBtX2FjdGl2ZVNlbGVj
dGlvbkVuZEluZGV4KTsKIAogICAgIGNvbnN0IFZlY3RvcjxIVE1MRWxlbWVudCo+JiBpdGVtcyA9
IGxpc3RJdGVtcygpOwogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBpdGVtcy5zaXplKCk7
ICsraSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MU291cmNlRWxlbWVu
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxTb3VyY2VFbGVtZW50LmNwcAppbmRleCA5
MmQ2OTU2M2U4Mzg0YWI1YmM1MWQ3NDIwMGNkZTIxZWM4MWY2YTgzLi5mYTBkMjRkNjAyMmE4ZGMy
MjhjMDdkYWNhODg3MzYzY2UzZDNiY2ZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxTb3VyY2VFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxTb3Vy
Y2VFbGVtZW50LmNwcApAQCAtMzQsOCArMzQsNiBAQAogI2luY2x1ZGUgIkhUTUxOYW1lcy5oIgog
I2luY2x1ZGUgIkxvZ2dpbmcuaCIKIAotdXNpbmcgbmFtZXNwYWNlIHN0ZDsKLQogbmFtZXNwYWNl
IFdlYkNvcmUgewogCiB1c2luZyBuYW1lc3BhY2UgSFRNTE5hbWVzOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGFibGVDZWxsRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxUYWJsZUNlbGxFbGVtZW50LmNwcAppbmRleCAwMzQ1MWU4NDlmM2RlNGIzY2Nj
NzRmNjdiMTE4OGUxNTg2MmU0NmU3Li45MWZkMTE1NmFhM2Q2NGU1NzBiMjVhZGFmMDQ0OThmYmEz
YmFjN2VhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUYWJsZUNlbGxFbGVt
ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUYWJsZUNlbGxFbGVtZW50LmNw
cApAQCAtMzIsOSArMzIsNiBAQAogI2luY2x1ZGUgIkhUTUxUYWJsZUVsZW1lbnQuaCIKICNpbmNs
dWRlICJSZW5kZXJUYWJsZUNlbGwuaCIKIAotdXNpbmcgc3RkOjptYXg7Ci11c2luZyBzdGQ6Om1p
bjsKLQogbmFtZXNwYWNlIFdlYkNvcmUgewogCiAvLyBDbGFtcCByb3dzcGFuIGF0IDhrIHRvIG1h
dGNoIEZpcmVmb3guCkBAIC01NSwxMyArNTIsMTMgQEAgUGFzc1JlZlB0cjxIVE1MVGFibGVDZWxs
RWxlbWVudD4gSFRNTFRhYmxlQ2VsbEVsZW1lbnQ6OmNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW0K
IGludCBIVE1MVGFibGVDZWxsRWxlbWVudDo6Y29sU3BhbigpIGNvbnN0CiB7CiAgICAgY29uc3Qg
QXRvbWljU3RyaW5nJiBjb2xTcGFuVmFsdWUgPSBmYXN0R2V0QXR0cmlidXRlKGNvbHNwYW5BdHRy
KTsKLSAgICByZXR1cm4gbWF4KDEsIGNvbFNwYW5WYWx1ZS50b0ludCgpKTsKKyAgICByZXR1cm4g
c3RkOjptYXgoMSwgY29sU3BhblZhbHVlLnRvSW50KCkpOwogfQogCiBpbnQgSFRNTFRhYmxlQ2Vs
bEVsZW1lbnQ6OnJvd1NwYW4oKSBjb25zdAogewogICAgIGNvbnN0IEF0b21pY1N0cmluZyYgcm93
U3BhblZhbHVlID0gZmFzdEdldEF0dHJpYnV0ZShyb3dzcGFuQXR0cik7Ci0gICAgcmV0dXJuIG1h
eCgxLCBtaW4ocm93U3BhblZhbHVlLnRvSW50KCksIG1heFJvd3NwYW4pKTsKKyAgICByZXR1cm4g
c3RkOjptYXgoMSwgc3RkOjptaW4ocm93U3BhblZhbHVlLnRvSW50KCksIG1heFJvd3NwYW4pKTsK
IH0KIAogaW50IEhUTUxUYWJsZUNlbGxFbGVtZW50OjpjZWxsSW5kZXgoKSBjb25zdApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGFibGVFbGVtZW50LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTFRhYmxlRWxlbWVudC5jcHAKaW5kZXggOTdiM2IwODM5MGY2Njk4MDZi
MTZlNGQ0Njg1NWQzNjg5YjYxNWI4OC4uNDVhZDc3NDYyYTVmOWFlNzU3MzI2ZjAxMTcyOTAzN2E1
MWM5ZDRjOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGFibGVFbGVtZW50
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUYWJsZUVsZW1lbnQuY3BwCkBAIC0z
OTQsNyArMzk0LDcgQEAgdm9pZCBIVE1MVGFibGVFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZShjb25z
dCBRdWFsaWZpZWROYW1lJiBuYW1lLCBjb25zdCBBdG9taWNTdHIKICAgICAgICAgICAgIG1fcnVs
ZXNBdHRyID0gQWxsUnVsZXM7CiAgICAgfSBlbHNlIGlmIChuYW1lID09IGNlbGxwYWRkaW5nQXR0
cikgewogICAgICAgICBpZiAoIXZhbHVlLmlzRW1wdHkoKSkKLSAgICAgICAgICAgIG1fcGFkZGlu
ZyA9IG1heCgwLCB2YWx1ZS50b0ludCgpKTsKKyAgICAgICAgICAgIG1fcGFkZGluZyA9IHN0ZDo6
bWF4KDAsIHZhbHVlLnRvSW50KCkpOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBtX3BhZGRp
bmcgPSAxOwogICAgIH0gZWxzZSBpZiAobmFtZSA9PSBjb2xzQXR0cikgewpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50LmNwcAppbmRleCBmMjU3
YjZiZmE3ZThhZjVkOTBiODIzYmYwOGZiZDJkMzE3OGMyMWExLi5jNzc3MGQzNWRjZDMzYTgxNjcz
YjdmOWNjZGM4NTQwNDRmODJjODg2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50LmNwcApAQCAtNTEsNyArNTEsNiBAQAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCiB1c2luZyBuYW1lc3BhY2UgSFRNTE5hbWVzOwotdXNpbmcgbmFtZXNwYWNl
IHN0ZDsKIAogSFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQ6OkhUTUxUZXh0Rm9ybUNvbnRyb2xF
bGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50JiBkb2N1bWVudCwg
SFRNTEZvcm1FbGVtZW50KiBmb3JtKQogICAgIDogSFRNTEZvcm1Db250cm9sRWxlbWVudFdpdGhT
dGF0ZSh0YWdOYW1lLCBkb2N1bWVudCwgZm9ybSkKQEAgLTE3MSwxMiArMTcwLDEyIEBAIHZvaWQg
SFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQ6OnVwZGF0ZVBsYWNlaG9sZGVyVmlzaWJpbGl0eShi
b29sIHBsYWNlaG9sZGVyVmFsCiAKIHZvaWQgSFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQ6OnNl
dFNlbGVjdGlvblN0YXJ0KGludCBzdGFydCkKIHsKLSAgICBzZXRTZWxlY3Rpb25SYW5nZShzdGFy
dCwgbWF4KHN0YXJ0LCBzZWxlY3Rpb25FbmQoKSksIHNlbGVjdGlvbkRpcmVjdGlvbigpKTsKKyAg
ICBzZXRTZWxlY3Rpb25SYW5nZShzdGFydCwgc3RkOjptYXgoc3RhcnQsIHNlbGVjdGlvbkVuZCgp
KSwgc2VsZWN0aW9uRGlyZWN0aW9uKCkpOwogfQogCiB2b2lkIEhUTUxUZXh0Rm9ybUNvbnRyb2xF
bGVtZW50OjpzZXRTZWxlY3Rpb25FbmQoaW50IGVuZCkKIHsKLSAgICBzZXRTZWxlY3Rpb25SYW5n
ZShtaW4oZW5kLCBzZWxlY3Rpb25TdGFydCgpKSwgZW5kLCBzZWxlY3Rpb25EaXJlY3Rpb24oKSk7
CisgICAgc2V0U2VsZWN0aW9uUmFuZ2Uoc3RkOjptaW4oZW5kLCBzZWxlY3Rpb25TdGFydCgpKSwg
ZW5kLCBzZWxlY3Rpb25EaXJlY3Rpb24oKSk7CiB9CiAKIHZvaWQgSFRNTFRleHRGb3JtQ29udHJv
bEVsZW1lbnQ6OnNldFNlbGVjdGlvbkRpcmVjdGlvbihjb25zdCBTdHJpbmcmIGRpcmVjdGlvbikK
QEAgLTE4Niw3ICsxODUsNyBAQCB2b2lkIEhUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50OjpzZXRT
ZWxlY3Rpb25EaXJlY3Rpb24oY29uc3QgU3RyaW5nJiBkaXJlY3Rpb24pCiAKIHZvaWQgSFRNTFRl
eHRGb3JtQ29udHJvbEVsZW1lbnQ6OnNlbGVjdCgpCiB7Ci0gICAgc2V0U2VsZWN0aW9uUmFuZ2Uo
MCwgbnVtZXJpY19saW1pdHM8aW50Pjo6bWF4KCksIFNlbGVjdGlvbkhhc05vRGlyZWN0aW9uKTsK
KyAgICBzZXRTZWxlY3Rpb25SYW5nZSgwLCBzdGQ6Om51bWVyaWNfbGltaXRzPGludD46Om1heCgp
LCBTZWxlY3Rpb25IYXNOb0RpcmVjdGlvbik7CiB9CiAKIFN0cmluZyBIVE1MVGV4dEZvcm1Db250
cm9sRWxlbWVudDo6c2VsZWN0ZWRUZXh0KCkgY29uc3QKQEAgLTI4Nyw4ICsyODYsOCBAQCB2b2lk
IEhUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50OjpzZXRTZWxlY3Rpb25SYW5nZShpbnQgc3RhcnQs
IGludCBlbmQsIFRleHRGaWVsZAogICAgIGlmICghcmVuZGVyZXIoKSB8fCAhcmVuZGVyZXIoKS0+
aXNUZXh0Q29udHJvbCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBlbmQgPSBtYXgoZW5kLCAw
KTsKLSAgICBzdGFydCA9IG1pbihtYXgoc3RhcnQsIDApLCBlbmQpOworICAgIGVuZCA9IHN0ZDo6
bWF4KGVuZCwgMCk7CisgICAgc3RhcnQgPSBzdGQ6Om1pbihzdGQ6Om1heChzdGFydCwgMCksIGVu
ZCk7CiAKICAgICBpZiAoIWhhc1Zpc2libGVUZXh0QXJlYSgqcmVuZGVyZXIoKSwgaW5uZXJUZXh0
RWxlbWVudCgpKSkgewogICAgICAgICBjYWNoZVNlbGVjdGlvbihzdGFydCwgZW5kLCBkaXJlY3Rp
b24pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVHJhY2tFbGVtZW50LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRyYWNrRWxlbWVudC5jcHAKaW5kZXggMjIxMjk5
MDAwYmFkZDUzNTljZjRkNDg5ZWRmYjA3MGQzYTg4ZmRkYi4uOGM5Yjc1OGYzYmFmYTAzN2E5ZmNi
NzkwOTkxZDZjN2FhNjM5ZTM4NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
VHJhY2tFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUcmFja0VsZW1l
bnQuY3BwCkBAIC0zNCw4ICszNCw2IEBACiAjaW5jbHVkZSAiTG9nZ2luZy5oIgogI2luY2x1ZGUg
IlJ1bnRpbWVFbmFibGVkRmVhdHVyZXMuaCIKIAotdXNpbmcgbmFtZXNwYWNlIHN0ZDsKLQogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCiB1c2luZyBuYW1lc3BhY2UgSFRNTE5hbWVzOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9JbWFnZURvY3VtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSW1hZ2VEb2N1bWVudC5jcHAKaW5kZXggODU0YzQ3MWFjMWI4M2U2YjkzM2VkOTVlMGZj
MjMwNjRhNjc1OGFhZS4uZTUxODYwNmE3OTUwMjM3MTlmZTAwYzc4NTVhZWE4NDk4ZDY2NDAzNiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9JbWFnZURvY3VtZW50LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL0ltYWdlRG9jdW1lbnQuY3BwCkBAIC00Niw4ICs0Niw2IEBACiAj
aW5jbHVkZSAiUmVzb3VyY2VCdWZmZXIuaCIKICNpbmNsdWRlICJTZXR0aW5ncy5oIgogCi11c2lu
ZyBzdGQ6Om1pbjsKLQogbmFtZXNwYWNlIFdlYkNvcmUgewogCiB1c2luZyBuYW1lc3BhY2UgSFRN
TE5hbWVzOwpAQCAtMjQxLDcgKzIzOSw3IEBAIGZsb2F0IEltYWdlRG9jdW1lbnQ6OnNjYWxlKCkg
Y29uc3QKICAgICBmbG9hdCB3aWR0aFNjYWxlID0gKGZsb2F0KXdpbmRvd1NpemUud2lkdGgoKSAv
IGltYWdlU2l6ZS53aWR0aCgpOwogICAgIGZsb2F0IGhlaWdodFNjYWxlID0gKGZsb2F0KXdpbmRv
d1NpemUuaGVpZ2h0KCkgLyBpbWFnZVNpemUuaGVpZ2h0KCk7CiAKLSAgICByZXR1cm4gbWluKHdp
ZHRoU2NhbGUsIGhlaWdodFNjYWxlKTsKKyAgICByZXR1cm4gc3RkOjptaW4od2lkdGhTY2FsZSwg
aGVpZ2h0U2NhbGUpOwogfQogCiB2b2lkIEltYWdlRG9jdW1lbnQ6OnJlc2l6ZUltYWdlVG9GaXQo
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9JbnB1dFR5cGUuY3BwIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9JbnB1dFR5cGUuY3BwCmluZGV4IDkwMDc4YmJjOTgzODlkODlkMDU1ZTNm
NjJiNjkwNTA0YTRmMWUxMWEuLmVkMzQ0M2E1YzFjMzQyZmM2Y2U3Mzg5NzA5MzdkNmQ1YjU0ZDgx
Y2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW5wdXRUeXBlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL0lucHV0VHlwZS5jcHAKQEAgLTgyLDcgKzgyLDYgQEAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAogdXNpbmcgbmFtZXNwYWNlIEhUTUxOYW1lczsKLXVzaW5nIG5hbWVz
cGFjZSBzdGQ7CiAKIHR5cGVkZWYgT3duUHRyPElucHV0VHlwZT4gKCpJbnB1dFR5cGVGYWN0b3J5
RnVuY3Rpb24pKEhUTUxJbnB1dEVsZW1lbnQmKTsKIHR5cGVkZWYgSGFzaE1hcDxBdG9taWNTdHJp
bmcsIElucHV0VHlwZUZhY3RvcnlGdW5jdGlvbiwgQ2FzZUZvbGRpbmdIYXNoPiBJbnB1dFR5cGVG
YWN0b3J5TWFwOwpAQCAtMjIzLDcgKzIyMiw3IEBAIHZvaWQgSW5wdXRUeXBlOjpzZXRWYWx1ZUFz
RGF0ZShkb3VibGUsIEV4Y2VwdGlvbkNvZGUmIGVjKSBjb25zdAogCiBkb3VibGUgSW5wdXRUeXBl
Ojp2YWx1ZUFzRG91YmxlKCkgY29uc3QKIHsKLSAgICByZXR1cm4gbnVtZXJpY19saW1pdHM8ZG91
YmxlPjo6cXVpZXRfTmFOKCk7CisgICAgcmV0dXJuIHN0ZDo6bnVtZXJpY19saW1pdHM8ZG91Ymxl
Pjo6cXVpZXRfTmFOKCk7CiB9CiAKIHZvaWQgSW5wdXRUeXBlOjpzZXRWYWx1ZUFzRG91YmxlKGRv
dWJsZSBkb3VibGVWYWx1ZSwgVGV4dEZpZWxkRXZlbnRCZWhhdmlvciBldmVudEJlaGF2aW9yLCBF
eGNlcHRpb25Db2RlJiBlYykgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
TWVkaWFDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvTWVkaWFDb250cm9sbGVy
LmNwcAppbmRleCAyN2Q4ZTNhOTIyYWUzMzdiNDgzODc3MTcyMTZhMGUzMzg3ZmYyNmM5Li4yNDZk
MzE0ZjM3ZTZkODliYjVmNjIyMDJhMGRhYmQ2NjFiN2FjM2IzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL01lZGlhQ29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9NZWRpYUNvbnRyb2xsZXIuY3BwCkBAIC0zNyw3ICszNyw2IEBACiAjaW5jbHVkZSA8d3RmL3Rl
eHQvQXRvbWljU3RyaW5nLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwotdXNpbmcgbmFt
ZXNwYWNlIHN0ZDsKIAogUGFzc1JlZlB0cjxNZWRpYUNvbnRyb2xsZXI+IE1lZGlhQ29udHJvbGxl
cjo6Y3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQpCiB7CkBAIC0xMzgsNyAr
MTM3LDcgQEAgZG91YmxlIE1lZGlhQ29udHJvbGxlcjo6ZHVyYXRpb24oKSBjb25zdAogICAgICAg
ICBkb3VibGUgZHVyYXRpb24gPSBtX21lZGlhRWxlbWVudHNbaW5kZXhdLT5kdXJhdGlvbigpOwog
ICAgICAgICBpZiAoc3RkOjppc25hbihkdXJhdGlvbikpCiAgICAgICAgICAgICBjb250aW51ZTsK
LSAgICAgICAgbWF4RHVyYXRpb24gPSBtYXgobWF4RHVyYXRpb24sIGR1cmF0aW9uKTsKKyAgICAg
ICAgbWF4RHVyYXRpb24gPSBzdGQ6Om1heChtYXhEdXJhdGlvbiwgZHVyYXRpb24pOwogICAgIH0K
ICAgICByZXR1cm4gbWF4RHVyYXRpb247CiB9CkBAIC0xNTAsNyArMTQ5LDcgQEAgZG91YmxlIE1l
ZGlhQ29udHJvbGxlcjo6Y3VycmVudFRpbWUoKSBjb25zdAogCiAgICAgaWYgKG1fcG9zaXRpb24g
PT0gTWVkaWFQbGF5ZXI6OmludmFsaWRUaW1lKCkpIHsKICAgICAgICAgLy8gU29tZSBjbG9ja3Mg
bWF5IHJldHVybiB0aW1lcyBvdXRzaWRlIHRoZSByYW5nZSBvZiBbMC4uZHVyYXRpb25dLgotICAg
ICAgICBtX3Bvc2l0aW9uID0gbWF4KDAuMCwgbWluKGR1cmF0aW9uKCksIG1fY2xvY2stPmN1cnJl
bnRUaW1lKCkpKTsKKyAgICAgICAgbV9wb3NpdGlvbiA9IHN0ZDo6bWF4PGRvdWJsZT4oMCwgc3Rk
OjptaW4oZHVyYXRpb24oKSwgbV9jbG9jay0+Y3VycmVudFRpbWUoKSkpOwogICAgICAgICBtX2Ns
ZWFyUG9zaXRpb25UaW1lci5zdGFydE9uZVNob3QoMCk7CiAgICAgfQogCkBAIC0xNjIsMTEgKzE2
MSwxMSBAQCB2b2lkIE1lZGlhQ29udHJvbGxlcjo6c2V0Q3VycmVudFRpbWUoZG91YmxlIHRpbWUs
IEV4Y2VwdGlvbkNvZGUmIGNvZGUpCiAgICAgLy8gV2hlbiB0aGUgdXNlciBhZ2VudCBpcyB0byBz
ZWVrIHRoZSBtZWRpYSBjb250cm9sbGVyIHRvIGEgcGFydGljdWxhciBuZXcgcGxheWJhY2sgcG9z
aXRpb24sIAogICAgIC8vIGl0IG11c3QgZm9sbG93IHRoZXNlIHN0ZXBzOgogICAgIC8vIElmIHRo
ZSBuZXcgcGxheWJhY2sgcG9zaXRpb24gaXMgbGVzcyB0aGFuIHplcm8sIHRoZW4gc2V0IGl0IHRv
IHplcm8uCi0gICAgdGltZSA9IG1heCgwLjAsIHRpbWUpOworICAgIHRpbWUgPSBzdGQ6Om1heCgw
LjAsIHRpbWUpOwogICAgIAogICAgIC8vIElmIHRoZSBuZXcgcGxheWJhY2sgcG9zaXRpb24gaXMg
Z3JlYXRlciB0aGFuIHRoZSBtZWRpYSBjb250cm9sbGVyIGR1cmF0aW9uLCB0aGVuIHNldCBpdCAK
ICAgICAvLyB0byB0aGUgbWVkaWEgY29udHJvbGxlciBkdXJhdGlvbi4KLSAgICB0aW1lID0gbWlu
KHRpbWUsIGR1cmF0aW9uKCkpOworICAgIHRpbWUgPSBzdGQ6Om1pbih0aW1lLCBkdXJhdGlvbigp
KTsKICAgICAKICAgICAvLyBTZXQgdGhlIG1lZGlhIGNvbnRyb2xsZXIgcG9zaXRpb24gdG8gdGhl
IG5ldyBwbGF5YmFjayBwb3NpdGlvbi4KICAgICBtX2Nsb2NrLT5zZXRDdXJyZW50VGltZSh0aW1l
KTsKQEAgLTM2MCw3ICszNTksNyBAQCB2b2lkIE1lZGlhQ29udHJvbGxlcjo6dXBkYXRlUmVhZHlT
dGF0ZSgpCiAgICAgICAgIC8vIHNsYXZlZCBtZWRpYSBlbGVtZW50cy4KICAgICAgICAgbmV3UmVh
ZHlTdGF0ZSA9IG1fbWVkaWFFbGVtZW50cy5maXJzdCgpLT5yZWFkeVN0YXRlKCk7CiAgICAgICAg
IGZvciAoc2l6ZV90IGluZGV4ID0gMTsgaW5kZXggPCBtX21lZGlhRWxlbWVudHMuc2l6ZSgpOyAr
K2luZGV4KQotICAgICAgICAgICAgbmV3UmVhZHlTdGF0ZSA9IG1pbihuZXdSZWFkeVN0YXRlLCBt
X21lZGlhRWxlbWVudHNbaW5kZXhdLT5yZWFkeVN0YXRlKCkpOworICAgICAgICAgICAgbmV3UmVh
ZHlTdGF0ZSA9IHN0ZDo6bWluKG5ld1JlYWR5U3RhdGUsIG1fbWVkaWFFbGVtZW50c1tpbmRleF0t
PnJlYWR5U3RhdGUoKSk7CiAgICAgfQogCiAgICAgaWYgKG5ld1JlYWR5U3RhdGUgPT0gb2xkUmVh
ZHlTdGF0ZSkgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL051bWJlcklucHV0VHlw
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL051bWJlcklucHV0VHlwZS5jcHAKaW5kZXggNmY1
NWRmYjljMDI0Mzk2ZWQ4MjkwMDAzMjRlZjJjOWZmNGFiYWEzOC4uMmYzMDJmMmNhM2MyMjczNTQ2
ZWI5MjExZjY4MWU4OGNmOWNlM2VhNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9O
dW1iZXJJbnB1dFR5cGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvTnVtYmVySW5wdXRU
eXBlLmNwcApAQCAtNDksNyArNDksNiBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiB1c2luZyBu
YW1lc3BhY2UgSFRNTE5hbWVzOwotdXNpbmcgbmFtZXNwYWNlIHN0ZDsKIAogc3RhdGljIGNvbnN0
IGludCBudW1iZXJEZWZhdWx0U3RlcCA9IDE7CiBzdGF0aWMgY29uc3QgaW50IG51bWJlckRlZmF1
bHRTdGVwQmFzZSA9IDA7CkBAIC0xMjUsNyArMTI0LDcgQEAgZG91YmxlIE51bWJlcklucHV0VHlw
ZTo6dmFsdWVBc0RvdWJsZSgpIGNvbnN0CiB2b2lkIE51bWJlcklucHV0VHlwZTo6c2V0VmFsdWVB
c0RvdWJsZShkb3VibGUgbmV3VmFsdWUsIFRleHRGaWVsZEV2ZW50QmVoYXZpb3IgZXZlbnRCZWhh
dmlvciwgRXhjZXB0aW9uQ29kZSYgZWMpIGNvbnN0CiB7CiAgICAgLy8gRklYTUU6IFdlIHNob3Vs
ZCB1c2UgbnVtZXJpY19saW1pdHM8ZG91YmxlPjo6bWF4IGZvciBudW1iZXIgaW5wdXQgdHlwZS4K
LSAgICBjb25zdCBkb3VibGUgZmxvYXRNYXggPSBudW1lcmljX2xpbWl0czxmbG9hdD46Om1heCgp
OworICAgIGNvbnN0IGRvdWJsZSBmbG9hdE1heCA9IHN0ZDo6bnVtZXJpY19saW1pdHM8ZmxvYXQ+
OjptYXgoKTsKICAgICBpZiAobmV3VmFsdWUgPCAtZmxvYXRNYXgpIHsKICAgICAgICAgZWMgPSBJ
TlZBTElEX1NUQVRFX0VSUjsKICAgICAgICAgcmV0dXJuOwpAQCAtMTQwLDcgKzEzOSw3IEBAIHZv
aWQgTnVtYmVySW5wdXRUeXBlOjpzZXRWYWx1ZUFzRG91YmxlKGRvdWJsZSBuZXdWYWx1ZSwgVGV4
dEZpZWxkRXZlbnRCZWhhdmlvciBlCiB2b2lkIE51bWJlcklucHV0VHlwZTo6c2V0VmFsdWVBc0Rl
Y2ltYWwoY29uc3QgRGVjaW1hbCYgbmV3VmFsdWUsIFRleHRGaWVsZEV2ZW50QmVoYXZpb3IgZXZl
bnRCZWhhdmlvciwgRXhjZXB0aW9uQ29kZSYgZWMpIGNvbnN0CiB7CiAgICAgLy8gRklYTUU6IFdl
IHNob3VsZCB1c2UgbnVtZXJpY19saW1pdHM8ZG91YmxlPjo6bWF4IGZvciBudW1iZXIgaW5wdXQg
dHlwZS4KLSAgICBjb25zdCBEZWNpbWFsIGZsb2F0TWF4ID0gRGVjaW1hbDo6ZnJvbURvdWJsZShu
dW1lcmljX2xpbWl0czxmbG9hdD46Om1heCgpKTsKKyAgICBjb25zdCBEZWNpbWFsIGZsb2F0TWF4
ID0gRGVjaW1hbDo6ZnJvbURvdWJsZShzdGQ6Om51bWVyaWNfbGltaXRzPGZsb2F0Pjo6bWF4KCkp
OwogICAgIGlmIChuZXdWYWx1ZSA8IC1mbG9hdE1heCkgewogICAgICAgICBlYyA9IElOVkFMSURf
U1RBVEVfRVJSOwogICAgICAgICByZXR1cm47CkBAIC0xNjgsNyArMTY3LDcgQEAgU3RlcFJhbmdl
IE51bWJlcklucHV0VHlwZTo6Y3JlYXRlU3RlcFJhbmdlKEFueVN0ZXBIYW5kbGluZyBhbnlTdGVw
SGFuZGxpbmcpIGNvbnMKICAgICBERUZJTkVfU1RBVElDX0xPQ0FMKGNvbnN0IFN0ZXBSYW5nZTo6
U3RlcERlc2NyaXB0aW9uLCBzdGVwRGVzY3JpcHRpb24sIChudW1iZXJEZWZhdWx0U3RlcCwgbnVt
YmVyRGVmYXVsdFN0ZXBCYXNlLCBudW1iZXJTdGVwU2NhbGVGYWN0b3IpKTsKICAgICBjb25zdCBE
ZWNpbWFsIHN0ZXBCYXNlID0gcGFyc2VUb0RlY2ltYWxGb3JOdW1iZXJUeXBlKGVsZW1lbnQoKS5m
YXN0R2V0QXR0cmlidXRlKG1pbkF0dHIpLCBudW1iZXJEZWZhdWx0U3RlcEJhc2UpOwogICAgIC8v
IEZJWE1FOiBXZSBzaG91bGQgdXNlIG51bWVyaWNfbGltaXRzPGRvdWJsZT46Om1heCBmb3IgbnVt
YmVyIGlucHV0IHR5cGUuCi0gICAgY29uc3QgRGVjaW1hbCBmbG9hdE1heCA9IERlY2ltYWw6OmZy
b21Eb3VibGUobnVtZXJpY19saW1pdHM8ZmxvYXQ+OjptYXgoKSk7CisgICAgY29uc3QgRGVjaW1h
bCBmbG9hdE1heCA9IERlY2ltYWw6OmZyb21Eb3VibGUoc3RkOjpudW1lcmljX2xpbWl0czxmbG9h
dD46Om1heCgpKTsKICAgICBjb25zdCBEZWNpbWFsIG1pbmltdW0gPSBwYXJzZVRvTnVtYmVyKGVs
ZW1lbnQoKS5mYXN0R2V0QXR0cmlidXRlKG1pbkF0dHIpLCAtZmxvYXRNYXgpOwogICAgIGNvbnN0
IERlY2ltYWwgbWF4aW11bSA9IHBhcnNlVG9OdW1iZXIoZWxlbWVudCgpLmZhc3RHZXRBdHRyaWJ1
dGUobWF4QXR0ciksIGZsb2F0TWF4KTsKICAgICBjb25zdCBEZWNpbWFsIHN0ZXAgPSBTdGVwUmFu
Z2U6OnBhcnNlU3RlcChhbnlTdGVwSGFuZGxpbmcsIHN0ZXBEZXNjcmlwdGlvbiwgZWxlbWVudCgp
LmZhc3RHZXRBdHRyaWJ1dGUoc3RlcEF0dHIpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvUmFuZ2VJbnB1dFR5cGUuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9SYW5nZUlucHV0
VHlwZS5jcHAKaW5kZXggODBiM2I2NTE0OWQ5ZGQ1OGI1YTVlMjVjZDAyOTUwZTk5ODQzYWZhMi4u
OTlmMGI4NjE2MWYzMzUyYzRkMWM2ZGE0NTIxM2ZlOWVmODdkNzA3MCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaHRtbC9SYW5nZUlucHV0VHlwZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9SYW5nZUlucHV0VHlwZS5jcHAKQEAgLTY1LDcgKzY1LDYgQEAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAogdXNpbmcgbmFtZXNwYWNlIEhUTUxOYW1lczsKLXVzaW5nIG5hbWVzcGFjZSBzdGQ7
CiAKIHN0YXRpYyBjb25zdCBpbnQgcmFuZ2VEZWZhdWx0TWluaW11bSA9IDA7CiBzdGF0aWMgY29u
c3QgaW50IHJhbmdlRGVmYXVsdE1heGltdW0gPSAxMDA7CkBAIC0yMDcsNyArMjA2LDcgQEAgdm9p
ZCBSYW5nZUlucHV0VHlwZTo6aGFuZGxlS2V5ZG93bkV2ZW50KEtleWJvYXJkRXZlbnQqIGV2ZW50
KQogICAgIC8vIEZJWE1FOiBXZSBjYW4ndCB1c2Ugc3RlcFVwKCkgZm9yIHRoZSBzdGVwIHZhbHVl
ICJhbnkiLiBTbywgd2UgaW5jcmVhc2UKICAgICAvLyBvciBkZWNyZWFzZSB0aGUgdmFsdWUgYnkg
MS8xMDAgb2YgdGhlIHZhbHVlIHJhbmdlLiBJcyBpdCByZWFzb25hYmxlPwogICAgIGNvbnN0IERl
Y2ltYWwgc3RlcCA9IGVxdWFsSWdub3JpbmdDYXNlKGVsZW1lbnQoKS5mYXN0R2V0QXR0cmlidXRl
KHN0ZXBBdHRyKSwgImFueSIpID8gKHN0ZXBSYW5nZS5tYXhpbXVtKCkgLSBzdGVwUmFuZ2UubWlu
aW11bSgpKSAvIDEwMCA6IHN0ZXBSYW5nZS5zdGVwKCk7Ci0gICAgY29uc3QgRGVjaW1hbCBiaWdT
dGVwID0gbWF4KChzdGVwUmFuZ2UubWF4aW11bSgpIC0gc3RlcFJhbmdlLm1pbmltdW0oKSkgLyAx
MCwgc3RlcCk7CisgICAgY29uc3QgRGVjaW1hbCBiaWdTdGVwID0gc3RkOjptYXgoKHN0ZXBSYW5n
ZS5tYXhpbXVtKCkgLSBzdGVwUmFuZ2UubWluaW11bSgpKSAvIDEwLCBzdGVwKTsKIAogICAgIGJv
b2wgaXNWZXJ0aWNhbCA9IGZhbHNlOwogICAgIGlmIChlbGVtZW50KCkucmVuZGVyZXIoKSkgewpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9TZWFyY2hJbnB1dFR5cGUuY3BwIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9TZWFyY2hJbnB1dFR5cGUuY3BwCmluZGV4IGZjOGRkNzZlMWQxZTZh
MGIwMWJlZWE2OGU0ZWJmYzRkNzI4NjkwZWUuLjgyOTY2NDdkZDg0MjgxMmY2NzFkNmViZjliNjVj
YWUzMDYyNTFkZGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvU2VhcmNoSW5wdXRU
eXBlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL1NlYXJjaElucHV0VHlwZS5jcHAKQEAg
LTE2Miw3ICsxNjIsNyBAQCB2b2lkIFNlYXJjaElucHV0VHlwZTo6c3RhcnRTZWFyY2hFdmVudFRp
bWVyKCkKIAogICAgIC8vIEFmdGVyIHR5cGluZyB0aGUgZmlyc3Qga2V5LCB3ZSB3YWl0IDAuNSBz
ZWNvbmRzLgogICAgIC8vIEFmdGVyIHRoZSBzZWNvbmQga2V5LCAwLjQgc2Vjb25kcywgdGhlbiAw
LjMsIHRoZW4gMC4yIGZyb20gdGhlbiBvbi4KLSAgICBtX3NlYXJjaEV2ZW50VGltZXIuc3RhcnRP
bmVTaG90KG1heCgwLjIsIDAuNiAtIDAuMSAqIGxlbmd0aCkpOworICAgIG1fc2VhcmNoRXZlbnRU
aW1lci5zdGFydE9uZVNob3Qoc3RkOjptYXgoMC4yLCAwLjYgLSAwLjEgKiBsZW5ndGgpKTsKIH0K
IAogdm9pZCBTZWFyY2hJbnB1dFR5cGU6OnN0b3BTZWFyY2hFdmVudFRpbWVyKCkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvU3RlcFJhbmdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvU3RlcFJhbmdlLmNwcAppbmRleCA0ZDAwNDJmMjQxZmM5NWQ2YWNiZDc0MTI2OGY2ZDUzN2My
ZGRkYjA5Li5iZjIzNGVkNTQyZjIwZTQ0MzUzOGVkZjlkZGIzODAzMGYwMjVlYjgyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL1N0ZXBSYW5nZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9TdGVwUmFuZ2UuY3BwCkBAIC0yNiw4ICsyNiw2IEBACiAjaW5jbHVkZSA8d3RmL01h
dGhFeHRyYXMuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAotdXNpbmcgbmFt
ZXNwYWNlIHN0ZDsKLQogbmFtZXNwYWNlIFdlYkNvcmUgewogCiB1c2luZyBuYW1lc3BhY2UgSFRN
TE5hbWVzOwpAQCAtODMsNyArODEsNyBAQCBEZWNpbWFsIFN0ZXBSYW5nZTo6YWxpZ25WYWx1ZUZv
clN0ZXAoY29uc3QgRGVjaW1hbCYgY3VycmVudFZhbHVlLCBjb25zdCBEZWNpbWFsJgogCiBEZWNp
bWFsIFN0ZXBSYW5nZTo6Y2xhbXBWYWx1ZShjb25zdCBEZWNpbWFsJiB2YWx1ZSkgY29uc3QKIHsK
LSAgICBjb25zdCBEZWNpbWFsIGluUmFuZ2VWYWx1ZSA9IG1heChtX21pbmltdW0sIG1pbih2YWx1
ZSwgbV9tYXhpbXVtKSk7CisgICAgY29uc3QgRGVjaW1hbCBpblJhbmdlVmFsdWUgPSBzdGQ6Om1h
eChtX21pbmltdW0sIHN0ZDo6bWluKHZhbHVlLCBtX21heGltdW0pKTsKICAgICBpZiAoIW1faGFz
U3RlcCkKICAgICAgICAgcmV0dXJuIGluUmFuZ2VWYWx1ZTsKICAgICAvLyBSb3VuZHMgaW5SYW5n
ZVZhbHVlIHRvIG1pbmltdW0gKyBOICogc3RlcC4KQEAgLTEyMCwxMyArMTE4LDEzIEBAIERlY2lt
YWwgU3RlcFJhbmdlOjpwYXJzZVN0ZXAoQW55U3RlcEhhbmRsaW5nIGFueVN0ZXBIYW5kbGluZywg
Y29uc3QgU3RlcERlc2NyaXB0CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgUGFyc2VkU3RlcFZh
bHVlU2hvdWxkQmVJbnRlZ2VyOgogICAgICAgICAvLyBGb3IgZGF0ZSwgbW9udGgsIGFuZCB3ZWVr
LCB0aGUgcGFyc2VkIHZhbHVlIHNob3VsZCBiZSBhbiBpbnRlZ2VyIGZvciBzb21lIHR5cGVzLgot
ICAgICAgICBzdGVwID0gbWF4KHN0ZXAucm91bmQoKSwgRGVjaW1hbCgxKSk7CisgICAgICAgIHN0
ZXAgPSBzdGQ6Om1heChzdGVwLnJvdW5kKCksIERlY2ltYWwoMSkpOwogICAgICAgICBzdGVwICo9
IHN0ZXBEZXNjcmlwdGlvbi5zdGVwU2NhbGVGYWN0b3I7CiAgICAgICAgIGJyZWFrOwogICAgIGNh
c2UgU2NhbGVkU3RlcFZhbHVlU2hvdWxkQmVJbnRlZ2VyOgogICAgICAgICAvLyBGb3IgZGF0ZXRp
bWUsIGRhdGV0aW1lLWxvY2FsLCB0aW1lLCB0aGUgcmVzdWx0IHNob3VsZCBiZSBhbiBpbnRlZ2Vy
LgogICAgICAgICBzdGVwICo9IHN0ZXBEZXNjcmlwdGlvbi5zdGVwU2NhbGVGYWN0b3I7Ci0gICAg
ICAgIHN0ZXAgPSBtYXgoc3RlcC5yb3VuZCgpLCBEZWNpbWFsKDEpKTsKKyAgICAgICAgc3RlcCA9
IHN0ZDo6bWF4KHN0ZXAucm91bmQoKSwgRGVjaW1hbCgxKSk7CiAgICAgICAgIGJyZWFrOwogICAg
IGRlZmF1bHQ6CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaHRtbC9UaW1lUmFuZ2VzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvVGlt
ZVJhbmdlcy5jcHAKaW5kZXggY2Y4ZTIwZmMyM2IzMDYwMmExNjlhNTVmNjlmY2U1ZTlkNTFlMmU3
YS4uMTA5M2ZhZTc2NjM2ODAzMDgxMjNhOWZhZjU5MTI3ODZlY2E3NDkwOCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaHRtbC9UaW1lUmFuZ2VzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL1RpbWVSYW5nZXMuY3BwCkBAIC0zMSw4ICszMSw3IEBACiAjaW5jbHVkZSAiRXhjZXB0aW9u
Q29kZVBsYWNlaG9sZGVyLmgiCiAjaW5jbHVkZSA8bWF0aC5oPgogCi11c2luZyBuYW1lc3BhY2Ug
V2ViQ29yZTsKLXVzaW5nIG5hbWVzcGFjZSBzdGQ7CituYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFRp
bWVSYW5nZXM6OlRpbWVSYW5nZXMoZG91YmxlIHN0YXJ0LCBkb3VibGUgZW5kKQogewpAQCAtMTk0
LDMgKzE5Myw1IEBAIGRvdWJsZSBUaW1lUmFuZ2VzOjp0b3RhbER1cmF0aW9uKCkgY29uc3QKICAg
ICAgICAgdG90YWwgKz0gZmFicyhlbmQobiwgSUdOT1JFX0VYQ0VQVElPTikgLSBzdGFydChuLCBJ
R05PUkVfRVhDRVBUSU9OKSk7CiAgICAgcmV0dXJuIHRvdGFsOwogfQorCit9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL1ZhbGlkYXRpb25NZXNzYWdlLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvVmFsaWRhdGlvbk1lc3NhZ2UuY3BwCmluZGV4IDdlOWMzZWFiMjM2NjdkZTQ3YTA0
YzJlODNmMTY4MDRjMTI2Y2FjYjUuLjY3MTljYjVjODc1ZTMzMzA3Yzg4NGEwZjEzMWM1ZGNiMTJk
YjMyNDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvVmFsaWRhdGlvbk1lc3NhZ2Uu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvVmFsaWRhdGlvbk1lc3NhZ2UuY3BwCkBAIC0x
NDMsNyArMTQzLDcgQEAgdm9pZCBWYWxpZGF0aW9uTWVzc2FnZTo6c2V0TWVzc2FnZURPTUFuZFN0
YXJ0VGltZXIoVGltZXI8VmFsaWRhdGlvbk1lc3NhZ2U+KikKICAgICAgICAgbV90aW1lci5jbGVh
cigpOwogICAgIGVsc2UgewogICAgICAgICBtX3RpbWVyID0gYWRvcHRQdHIobmV3IFRpbWVyPFZh
bGlkYXRpb25NZXNzYWdlPih0aGlzLCAmVmFsaWRhdGlvbk1lc3NhZ2U6OmRlbGV0ZUJ1YmJsZVRy
ZWUpKTsKLSAgICAgICAgbV90aW1lci0+c3RhcnRPbmVTaG90KG1heCg1LjAsIHN0YXRpY19jYXN0
PGRvdWJsZT4obV9tZXNzYWdlLmxlbmd0aCgpKSAqIG1hZ25pZmljYXRpb24gLyAxMDAwKSk7Cisg
ICAgICAgIG1fdGltZXItPnN0YXJ0T25lU2hvdChzdGQ6Om1heCg1LjAsIHN0YXRpY19jYXN0PGRv
dWJsZT4obV9tZXNzYWdlLmxlbmd0aCgpKSAqIG1hZ25pZmljYXRpb24gLyAxMDAwKSk7CiAgICAg
fQogfQogCkBAIC0xNjcsNyArMTY3LDcgQEAgc3RhdGljIHZvaWQgYWRqdXN0QnViYmxlUG9zaXRp
b24oY29uc3QgTGF5b3V0UmVjdCYgaG9zdFJlY3QsIEhUTUxFbGVtZW50KiBidWJibGUKICAgICBj
b25zdCBpbnQgYnViYmxlQXJyb3dUb3BPZmZzZXQgPSAzMjsKICAgICBkb3VibGUgYnViYmxlWCA9
IGhvc3RYOwogICAgIGlmIChob3N0UmVjdC53aWR0aCgpIC8gMiA8IGJ1YmJsZUFycm93VG9wT2Zm
c2V0KQotICAgICAgICBidWJibGVYID0gbWF4KGhvc3RYICsgaG9zdFJlY3Qud2lkdGgoKSAvIDIg
LSBidWJibGVBcnJvd1RvcE9mZnNldCwgMC4wKTsKKyAgICAgICAgYnViYmxlWCA9IHN0ZDo6bWF4
KGhvc3RYICsgaG9zdFJlY3Qud2lkdGgoKSAvIDIgLSBidWJibGVBcnJvd1RvcE9mZnNldCwgMC4w
KTsKICAgICBidWJibGUtPnNldElubGluZVN0eWxlUHJvcGVydHkoQ1NTUHJvcGVydHlMZWZ0LCBi
dWJibGVYLCBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1BYKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5jcHAKaW5k
ZXggNzBjODI5ZTZlNjY2OTAzYWJmMWQzZTAyYTk4MGU0N2IyNTRlOTFlZS4uZTg0YWFlMjIwMWEw
N2E1Nzk2MjQxNDgyMjE0YjlhYjQ2OWNkYTQ2MyAxMDA3NTUKLS0tIGEvU291cmNlL1dlYkNvcmUv
aHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuY3BwCkBAIC03NCw4ICs3
NCw2IEBACiAjaW5jbHVkZSA8QXBwbGljYXRpb25TZXJ2aWNlcy9BcHBsaWNhdGlvblNlcnZpY2Vz
Lmg+CiAjZW5kaWYKIAotdXNpbmcgbmFtZXNwYWNlIHN0ZDsKLQogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCiB1c2luZyBuYW1lc3BhY2UgSFRNTE5hbWVzOwpAQCAtMTIyOSwxMCArMTIyNywxMCBAQCBz
dGF0aWMgSW50U2l6ZSBzaXplKEhUTUxWaWRlb0VsZW1lbnQqIHZpZGVvKQogCiBzdGF0aWMgaW5s
aW5lIEZsb2F0UmVjdCBub3JtYWxpemVSZWN0KGNvbnN0IEZsb2F0UmVjdCYgcmVjdCkKIHsKLSAg
ICByZXR1cm4gRmxvYXRSZWN0KG1pbihyZWN0LngoKSwgcmVjdC5tYXhYKCkpLAotICAgICAgICBt
aW4ocmVjdC55KCksIHJlY3QubWF4WSgpKSwKLSAgICAgICAgbWF4KHJlY3Qud2lkdGgoKSwgLXJl
Y3Qud2lkdGgoKSksCi0gICAgICAgIG1heChyZWN0LmhlaWdodCgpLCAtcmVjdC5oZWlnaHQoKSkp
OworICAgIHJldHVybiBGbG9hdFJlY3Qoc3RkOjptaW4ocmVjdC54KCksIHJlY3QubWF4WCgpKSwK
KyAgICAgICAgc3RkOjptaW4ocmVjdC55KCksIHJlY3QubWF4WSgpKSwKKyAgICAgICAgc3RkOjpt
YXgocmVjdC53aWR0aCgpLCAtcmVjdC53aWR0aCgpKSwKKyAgICAgICAgc3RkOjptYXgocmVjdC5o
ZWlnaHQoKSwgLXJlY3QuaGVpZ2h0KCkpKTsKIH0KIAogdm9pZCBDYW52YXNSZW5kZXJpbmdDb250
ZXh0MkQ6OmRyYXdJbWFnZShIVE1MSW1hZ2VFbGVtZW50KiBpbWFnZSwgZmxvYXQgeCwgZmxvYXQg
eSwgRXhjZXB0aW9uQ29kZSYgZWMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2Nh
bnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52
YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0LmNwcAppbmRleCA5NDA3NWQxMzk2MTIxODA2MDMxMDNj
M2Q4NzYwMjZlYzBiOGI5ZmE5Li5mZjcyNDM5MDI1NmM2NDUxOGU1YWZkYWU0NDUwN2RhNWZjNmMw
NTZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmlu
Z0NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVy
aW5nQ29udGV4dC5jcHAKQEAgLTE3OTMsMTQgKzE3OTMsMTQgQEAgYm9vbCBXZWJHTFJlbmRlcmlu
Z0NvbnRleHQ6OnZhbGlkYXRlSW5kZXhBcnJheUNvbnNlcnZhdGl2ZShHQzNEZW51bSB0eXBlLCB1
bnNpZ24KICAgICAgICAgY2FzZSBHcmFwaGljc0NvbnRleHQzRDo6VU5TSUdORURfQllURTogewog
ICAgICAgICAgICAgY29uc3QgR0MzRHVieXRlKiBwID0gc3RhdGljX2Nhc3Q8Y29uc3QgR0MzRHVi
eXRlKj4oYnVmZmVyLT5kYXRhKCkpOwogICAgICAgICAgICAgZm9yIChHQzNEc2l6ZWlwdHIgaSA9
IDA7IGkgPCBudW1FbGVtZW50czsgaSsrKQotICAgICAgICAgICAgICAgIG1heEluZGV4ID0gbWF4
KG1heEluZGV4LCBzdGF0aWNfY2FzdDxpbnQ+KHBbaV0pKTsKKyAgICAgICAgICAgICAgICBtYXhJ
bmRleCA9IHN0ZDo6bWF4KG1heEluZGV4LCBzdGF0aWNfY2FzdDxpbnQ+KHBbaV0pKTsKICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6
OlVOU0lHTkVEX1NIT1JUOiB7CiAgICAgICAgICAgICBudW1FbGVtZW50cyAvPSBzaXplb2YoR0Mz
RHVzaG9ydCk7CiAgICAgICAgICAgICBjb25zdCBHQzNEdXNob3J0KiBwID0gc3RhdGljX2Nhc3Q8
Y29uc3QgR0MzRHVzaG9ydCo+KGJ1ZmZlci0+ZGF0YSgpKTsKICAgICAgICAgICAgIGZvciAoR0Mz
RHNpemVpcHRyIGkgPSAwOyBpIDwgbnVtRWxlbWVudHM7IGkrKykKLSAgICAgICAgICAgICAgICBt
YXhJbmRleCA9IG1heChtYXhJbmRleCwgc3RhdGljX2Nhc3Q8aW50PihwW2ldKSk7CisgICAgICAg
ICAgICAgICAgbWF4SW5kZXggPSBzdGQ6Om1heChtYXhJbmRleCwgc3RhdGljX2Nhc3Q8aW50Pihw
W2ldKSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBjYXNlIEdyYXBo
aWNzQ29udGV4dDNEOjpVTlNJR05FRF9JTlQ6IHsKQEAgLTE4MDksNyArMTgwOSw3IEBAIGJvb2wg
V2ViR0xSZW5kZXJpbmdDb250ZXh0Ojp2YWxpZGF0ZUluZGV4QXJyYXlDb25zZXJ2YXRpdmUoR0Mz
RGVudW0gdHlwZSwgdW5zaWduCiAgICAgICAgICAgICBudW1FbGVtZW50cyAvPSBzaXplb2YoR0Mz
RHVpbnQpOwogICAgICAgICAgICAgY29uc3QgR0MzRHVpbnQqIHAgPSBzdGF0aWNfY2FzdDxjb25z
dCBHQzNEdWludCo+KGJ1ZmZlci0+ZGF0YSgpKTsKICAgICAgICAgICAgIGZvciAoR0MzRHNpemVp
cHRyIGkgPSAwOyBpIDwgbnVtRWxlbWVudHM7IGkrKykKLSAgICAgICAgICAgICAgICBtYXhJbmRl
eCA9IG1heChtYXhJbmRleCwgc3RhdGljX2Nhc3Q8aW50PihwW2ldKSk7CisgICAgICAgICAgICAg
ICAgbWF4SW5kZXggPSBzdGQ6Om1heChtYXhJbmRleCwgc3RhdGljX2Nhc3Q8aW50PihwW2ldKSk7
CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBkZWZhdWx0OgpAQCAtNTMy
OCwxMyArNTMyOCwxMyBAQCBib29sIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6dmFsaWRhdGVDb21w
cmVzc2VkVGV4RnVuY0RhdGEoY29uc3QgY2hhciogZnVuY3Rpb25OYQogICAgIGNhc2UgRXh0ZW5z
aW9uczNEOjpDT01QUkVTU0VEX1JHQl9QVlJUQ180QlBQVjFfSU1HOgogICAgIGNhc2UgRXh0ZW5z
aW9uczNEOjpDT01QUkVTU0VEX1JHQkFfUFZSVENfNEJQUFYxX0lNRzoKICAgICAgICAgewotICAg
ICAgICAgICAgYnl0ZXNSZXF1aXJlZCA9IG1heCh3aWR0aCwgOCkgKiBtYXgoaGVpZ2h0LCA4KSAv
IDI7CisgICAgICAgICAgICBieXRlc1JlcXVpcmVkID0gc3RkOjptYXgod2lkdGgsIDgpICogc3Rk
OjptYXgoaGVpZ2h0LCA4KSAvIDI7CiAgICAgICAgIH0KICAgICAgICAgYnJlYWs7CiAgICAgY2Fz
ZSBFeHRlbnNpb25zM0Q6OkNPTVBSRVNTRURfUkdCX1BWUlRDXzJCUFBWMV9JTUc6CiAgICAgY2Fz
ZSBFeHRlbnNpb25zM0Q6OkNPTVBSRVNTRURfUkdCQV9QVlJUQ18yQlBQVjFfSU1HOgogICAgICAg
ICB7Ci0gICAgICAgICAgICBieXRlc1JlcXVpcmVkID0gbWF4KHdpZHRoLCA4KSAqIG1heChoZWln
aHQsIDgpIC8gNDsKKyAgICAgICAgICAgIGJ5dGVzUmVxdWlyZWQgPSBzdGQ6Om1heCh3aWR0aCwg
OCkgKiBzdGQ6Om1heChoZWlnaHQsIDgpIC8gNDsKICAgICAgICAgfQogICAgICAgICBicmVhazsK
ICAgICBkZWZhdWx0OgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvTWVk
aWFDb250cm9sRWxlbWVudHMuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvTWVkaWFD
b250cm9sRWxlbWVudHMuY3BwCmluZGV4IDlmMDIxY2I5MzA3MmMyYzZlOWQzNjNiNWY1N2Q1Mjg3
YTg5MjNkNzkuLjIwNmNlMGVjNmUxNjJlYzI1MDU3NWE3MzU1MDg4MWI1MzQ0NGQ0NjQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L01lZGlhQ29udHJvbEVsZW1lbnRzLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xFbGVtZW50cy5j
cHAKQEAgLTYzMSw3ICs2MzEsNyBAQCBQYXNzUmVmUHRyPE1lZGlhQ29udHJvbFJld2luZEJ1dHRv
bkVsZW1lbnQ+IE1lZGlhQ29udHJvbFJld2luZEJ1dHRvbkVsZW1lbnQ6OmNyZQogdm9pZCBNZWRp
YUNvbnRyb2xSZXdpbmRCdXR0b25FbGVtZW50OjpkZWZhdWx0RXZlbnRIYW5kbGVyKEV2ZW50KiBl
dmVudCkKIHsKICAgICBpZiAoZXZlbnQtPnR5cGUoKSA9PSBldmVudE5hbWVzKCkuY2xpY2tFdmVu
dCkgewotICAgICAgICBtZWRpYUNvbnRyb2xsZXIoKS0+c2V0Q3VycmVudFRpbWUobWF4KDAuMCwg
bWVkaWFDb250cm9sbGVyKCktPmN1cnJlbnRUaW1lKCkgLSAzMCksIElHTk9SRV9FWENFUFRJT04p
OworICAgICAgICBtZWRpYUNvbnRyb2xsZXIoKS0+c2V0Q3VycmVudFRpbWUoc3RkOjptYXg8ZG91
YmxlPigwLCBtZWRpYUNvbnRyb2xsZXIoKS0+Y3VycmVudFRpbWUoKSAtIDMwKSwgSUdOT1JFX0VY
Q0VQVElPTik7CiAgICAgICAgIGV2ZW50LT5zZXREZWZhdWx0SGFuZGxlZCgpOwogICAgIH0KICAg
ICBIVE1MSW5wdXRFbGVtZW50OjpkZWZhdWx0RXZlbnRIYW5kbGVyKGV2ZW50KTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L01lZGlhQ29udHJvbHNBcHBsZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xzQXBwbGUuY3BwCmluZGV4IDFl
NDg3OWU2MjE0NzJmNDM5MWMxNTdkNDZhMTVlMTg5MDE2M2IzZWYuLmIwODdmYmE4NWZjZWNjYmNh
OTI0YTc5YTFiYzE2Mzk3M2VkY2Y0OGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
c2hhZG93L01lZGlhQ29udHJvbHNBcHBsZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9z
aGFkb3cvTWVkaWFDb250cm9sc0FwcGxlLmNwcApAQCAtNDUsOCArNDUsNiBAQAogI2luY2x1ZGUg
IlRleHRUcmFja0N1ZS5oIgogI2VuZGlmCiAKLXVzaW5nIG5hbWVzcGFjZSBzdGQ7Ci0KIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAogTWVkaWFDb250cm9sc0FwcGxlOjpNZWRpYUNvbnRyb2xzQXBwbGUo
RG9jdW1lbnQmIGRvY3VtZW50KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFk
b3cvU2xpZGVyVGh1bWJFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L1Ns
aWRlclRodW1iRWxlbWVudC5jcHAKaW5kZXggYmRjZDlhOGNkMzM5MWI4MTQ0ZmI4NWRlYThhZDAz
YjdkNDRlMDQzZC4uODlmMDEyMzhkM2QyYWRmYTI2YjljMjIyMmY0NzI2YzYxYjFjZTU1MCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvU2xpZGVyVGh1bWJFbGVtZW50LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9TbGlkZXJUaHVtYkVsZW1lbnQuY3Bw
CkBAIC00Niw4ICs0Niw2IEBACiAjaW5jbHVkZSAiU2hhZG93Um9vdC5oIgogI2luY2x1ZGUgIlN0
ZXBSYW5nZS5oIgogCi11c2luZyBuYW1lc3BhY2Ugc3RkOwotCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKIHVzaW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7CkBAIC0yNzIsNyArMjcwLDcgQEAgdm9pZCBT
bGlkZXJUaHVtYkVsZW1lbnQ6OnNldFBvc2l0aW9uRnJvbVBvaW50KGNvbnN0IExheW91dFBvaW50
JiBhYnNvbHV0ZVBvaW50KQogICAgICAgICBwb3NpdGlvbiAtPSBpc0xlZnRUb1JpZ2h0RGlyZWN0
aW9uID8gcmVuZGVyQm94KCktPm1hcmdpbkxlZnQoKSA6IHJlbmRlckJveCgpLT5tYXJnaW5SaWdo
dCgpOwogICAgIH0KIAotICAgIHBvc2l0aW9uID0gbWF4PExheW91dFVuaXQ+KDAsIG1pbihwb3Np
dGlvbiwgdHJhY2tMZW5ndGgpKTsKKyAgICBwb3NpdGlvbiA9IHN0ZDo6bWF4PExheW91dFVuaXQ+
KDAsIHN0ZDo6bWluKHBvc2l0aW9uLCB0cmFja0xlbmd0aCkpOwogICAgIGNvbnN0IERlY2ltYWwg
cmF0aW8gPSBEZWNpbWFsOjpmcm9tRG91YmxlKHN0YXRpY19jYXN0PGRvdWJsZT4ocG9zaXRpb24p
IC8gdHJhY2tMZW5ndGgpOwogICAgIGNvbnN0IERlY2ltYWwgZnJhY3Rpb24gPSBpc1ZlcnRpY2Fs
IHx8ICFpc0xlZnRUb1JpZ2h0RGlyZWN0aW9uID8gRGVjaW1hbCgxKSAtIHJhdGlvIDogcmF0aW87
CiAgICAgU3RlcFJhbmdlIHN0ZXBSYW5nZShpbnB1dC0+Y3JlYXRlU3RlcFJhbmdlKFJlamVjdEFu
eSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0NvbnRlbnRTZWFyY2hV
dGlscy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvQ29udGVudFNlYXJjaFV0aWxzLmNw
cAppbmRleCA1NDU3ZTVkOWFhMTg0Y2JlZWQ0N2JjZGUyNTExYjlkNGYwMGY5N2I2Li4wM2E4MDVm
YWNjYjEzOGFkOTNlYjEzYmI2MzBiNTI5Y2U1ZjI4YTQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvQ29udGVudFNlYXJjaFV0aWxzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvQ29udGVudFNlYXJjaFV0aWxzLmNwcApAQCAtMzksOCArMzksNiBAQAogI2lu
Y2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KICNpbmNsdWRlIDx5YXJyL1lhcnIuaD4KIAotdXNp
bmcgbmFtZXNwYWNlIHN0ZDsKLQogbmFtZXNwYWNlIFdlYkNvcmUgewogbmFtZXNwYWNlIENvbnRl
bnRTZWFyY2hVdGlscyB7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9E
T01FZGl0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0RPTUVkaXRvci5jcHAKaW5k
ZXggNTFhYThlNDQwYjFlZmE1ZGM2MmEwNmMwYzBhMzU3NGMyMjQ0NzljZC4uNDViMjg5ZmI3YzJh
NzM4OWYxMWQxZmM5ZTY0N2RjYTg5NmUyOThlYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0RPTUVkaXRvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0RP
TUVkaXRvci5jcHAKQEAgLTQxLDEzICs0MSw5IEBACiAjaW5jbHVkZSAiSW5zcGVjdG9ySGlzdG9y
eS5oIgogI2luY2x1ZGUgIk5vZGUuaCIKICNpbmNsdWRlICJUZXh0LmgiCi0KICNpbmNsdWRlICJt
YXJrdXAuaCIKLQogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KIAotdXNpbmcgbmFtZXNwYWNlIHN0
ZDsKLQogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBET01FZGl0b3I6OlJlbW92ZUNoaWxk
QWN0aW9uIDogcHVibGljIEluc3BlY3Rvckhpc3Rvcnk6OkFjdGlvbiB7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvRE9NUGF0Y2hTdXBwb3J0LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9ET01QYXRjaFN1cHBvcnQuY3BwCmluZGV4IDQ0NzlkOGFiMTVhZmVhYWRi
YTQ2ZGRhNzgxZjYyYzJhNjM4YTgxNzguLmQyYzY3NGE2NWZlNjFiOTI5MGJjZTQzNTgzNDYyZmU2
ZTljYWY2ODMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9ET01QYXRjaFN1
cHBvcnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9ET01QYXRjaFN1cHBvcnQu
Y3BwCkBAIC01NCw4ICs1NCw2IEBACiAjaW5jbHVkZSA8d3RmL3RleHQvQmFzZTY0Lmg+CiAjaW5j
bHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgogCi11c2luZyBuYW1lc3BhY2Ugc3RkOwotCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKIHVzaW5nIEhUTUxOYW1lczo6Ym9keVRhZzsKQEAgLTI2Nyw4ICsy
NjUsOCBAQCBET01QYXRjaFN1cHBvcnQ6OmRpZmYoY29uc3QgVmVjdG9yPE93blB0cjxEaWdlc3Q+
PiYgb2xkTGlzdCwgY29uc3QgVmVjdG9yPE93blB0cgogICAgICAgICBpZiAob2xkSXQgPT0gb2xk
VGFibGUuZW5kKCkgfHwgb2xkSXQtPnZhbHVlLnNpemUoKSAhPSAxKQogICAgICAgICAgICAgY29u
dGludWU7CiAKLSAgICAgICAgbmV3TWFwW25ld0l0LT52YWx1ZVswXV0gPSBtYWtlX3BhaXIobmV3
TGlzdFtuZXdJdC0+dmFsdWVbMF1dLmdldCgpLCBvbGRJdC0+dmFsdWVbMF0pOwotICAgICAgICBv
bGRNYXBbb2xkSXQtPnZhbHVlWzBdXSA9IG1ha2VfcGFpcihvbGRMaXN0W29sZEl0LT52YWx1ZVsw
XV0uZ2V0KCksIG5ld0l0LT52YWx1ZVswXSk7CisgICAgICAgIG5ld01hcFtuZXdJdC0+dmFsdWVb
MF1dID0gc3RkOjptYWtlX3BhaXIobmV3TGlzdFtuZXdJdC0+dmFsdWVbMF1dLmdldCgpLCBvbGRJ
dC0+dmFsdWVbMF0pOworICAgICAgICBvbGRNYXBbb2xkSXQtPnZhbHVlWzBdXSA9IHN0ZDo6bWFr
ZV9wYWlyKG9sZExpc3Rbb2xkSXQtPnZhbHVlWzBdXS5nZXQoKSwgbmV3SXQtPnZhbHVlWzBdKTsK
ICAgICB9CiAKICAgICBmb3IgKHNpemVfdCBpID0gMDsgbmV3TGlzdC5zaXplKCkgPiAwICYmIGkg
PCBuZXdMaXN0LnNpemUoKSAtIDE7ICsraSkgewpAQCAtMjc3LDggKzI3NSw4IEBAIERPTVBhdGNo
U3VwcG9ydDo6ZGlmZihjb25zdCBWZWN0b3I8T3duUHRyPERpZ2VzdD4+JiBvbGRMaXN0LCBjb25z
dCBWZWN0b3I8T3duUHRyCiAKICAgICAgICAgc2l6ZV90IGogPSBuZXdNYXBbaV0uc2Vjb25kICsg
MTsKICAgICAgICAgaWYgKGogPCBvbGRNYXAuc2l6ZSgpICYmICFvbGRNYXBbal0uZmlyc3QgJiYg
bmV3TGlzdFtpICsgMV0tPm1fc2hhMSA9PSBvbGRMaXN0W2pdLT5tX3NoYTEpIHsKLSAgICAgICAg
ICAgIG5ld01hcFtpICsgMV0gPSBtYWtlX3BhaXIobmV3TGlzdFtpICsgMV0uZ2V0KCksIGopOwot
ICAgICAgICAgICAgb2xkTWFwW2pdID0gbWFrZV9wYWlyKG9sZExpc3Rbal0uZ2V0KCksIGkgKyAx
KTsKKyAgICAgICAgICAgIG5ld01hcFtpICsgMV0gPSBzdGQ6Om1ha2VfcGFpcihuZXdMaXN0W2kg
KyAxXS5nZXQoKSwgaik7CisgICAgICAgICAgICBvbGRNYXBbal0gPSBzdGQ6Om1ha2VfcGFpcihv
bGRMaXN0W2pdLmdldCgpLCBpICsgMSk7CiAgICAgICAgIH0KICAgICB9CiAKQEAgLTI4OCw4ICsy
ODYsOCBAQCBET01QYXRjaFN1cHBvcnQ6OmRpZmYoY29uc3QgVmVjdG9yPE93blB0cjxEaWdlc3Q+
PiYgb2xkTGlzdCwgY29uc3QgVmVjdG9yPE93blB0cgogCiAgICAgICAgIHNpemVfdCBqID0gbmV3
TWFwW2ldLnNlY29uZCAtIDE7CiAgICAgICAgIGlmICghb2xkTWFwW2pdLmZpcnN0ICYmIG5ld0xp
c3RbaSAtIDFdLT5tX3NoYTEgPT0gb2xkTGlzdFtqXS0+bV9zaGExKSB7Ci0gICAgICAgICAgICBu
ZXdNYXBbaSAtIDFdID0gbWFrZV9wYWlyKG5ld0xpc3RbaSAtIDFdLmdldCgpLCBqKTsKLSAgICAg
ICAgICAgIG9sZE1hcFtqXSA9IG1ha2VfcGFpcihvbGRMaXN0W2pdLmdldCgpLCBpIC0gMSk7Cisg
ICAgICAgICAgICBuZXdNYXBbaSAtIDFdID0gc3RkOjptYWtlX3BhaXIobmV3TGlzdFtpIC0gMV0u
Z2V0KCksIGopOworICAgICAgICAgICAgb2xkTWFwW2pdID0gc3RkOjptYWtlX3BhaXIob2xkTGlz
dFtqXS5nZXQoKSwgaSAtIDEpOwogICAgICAgICB9CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRIb3N0LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdEhvc3QuY3BwCmluZGV4IDFlNDJkYzNmYzM4ZjZj
N2E2ODhjZDczMTUzZWMwMTkzMmJjZTQyN2QuLjI1MDI2OTQyOWM1MmJjOTQ3OWZhM2FlYjJkZjEx
Yzg2OTQ3NTE3YjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbmplY3Rl
ZFNjcmlwdEhvc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNj
cmlwdEhvc3QuY3BwCkBAIC02MCw4ICs2MCw2IEBACiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgog
I2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KIAotdXNpbmcgbmFtZXNwYWNlIHN0ZDsKLQog
bmFtZXNwYWNlIFdlYkNvcmUgewogCiBQYXNzUmVmUHRyPEluamVjdGVkU2NyaXB0SG9zdD4gSW5q
ZWN0ZWRTY3JpcHRIb3N0OjpjcmVhdGUoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL1Byb2dyZXNzVHJhY2tlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUHJvZ3Jlc3NU
cmFja2VyLmNwcAppbmRleCA4ZDFjZTFhMTU4OGZiN2FjNDhkNWVhMzJkOWQwZWQ1YjRmYTMwZDcy
Li42YzliMzVjMDliNWM3MzkzOGE4ZmRkOTgxOGM5YTAxMDk1MWY0OTI2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvUHJvZ3Jlc3NUcmFja2VyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvUHJvZ3Jlc3NUcmFja2VyLmNwcApAQCAtMzcsOCArMzcsNiBAQAogI2luY2x1
ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KICNpbmNsdWRlIDx3dGYvQ3VycmVudFRpbWUuaD4KIAot
dXNpbmcgc3RkOjptaW47Ci0KIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogLy8gQWx3YXlzIHN0YXJ0
IHByb2dyZXNzIGF0IGluaXRpYWxQcm9ncmVzc1ZhbHVlLiBUaGlzIGhlbHBzIHByb3ZpZGUgZmVl
ZGJhY2sgYXMgCkBAIC0yMzEsNyArMjI5LDcgQEAgdm9pZCBQcm9ncmVzc1RyYWNrZXI6OmluY3Jl
bWVudFByb2dyZXNzKHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QgY2hhciosIGkKICAg
ICBkb3VibGUgbWF4UHJvZ3Jlc3NWYWx1ZSA9IHVzZUNsYW1wZWRNYXhQcm9ncmVzcyA/IDAuNSA6
IGZpbmFsUHJvZ3Jlc3NWYWx1ZTsKICAgICBpbmNyZW1lbnQgPSAobWF4UHJvZ3Jlc3NWYWx1ZSAt
IG1fcHJvZ3Jlc3NWYWx1ZSkgKiBwZXJjZW50T2ZSZW1haW5pbmdCeXRlczsKICAgICBtX3Byb2dy
ZXNzVmFsdWUgKz0gaW5jcmVtZW50OwotICAgIG1fcHJvZ3Jlc3NWYWx1ZSA9IG1pbihtX3Byb2dy
ZXNzVmFsdWUsIG1heFByb2dyZXNzVmFsdWUpOworICAgIG1fcHJvZ3Jlc3NWYWx1ZSA9IHN0ZDo6
bWluKG1fcHJvZ3Jlc3NWYWx1ZSwgbWF4UHJvZ3Jlc3NWYWx1ZSk7CiAgICAgQVNTRVJUKG1fcHJv
Z3Jlc3NWYWx1ZSA+PSBpbml0aWFsUHJvZ3Jlc3NWYWx1ZSk7CiAgICAgCiAgICAgbV90b3RhbEJ5
dGVzUmVjZWl2ZWQgKz0gYnl0ZXNSZWNlaXZlZDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2Fj
aGUvQ2FjaGVkSW1hZ2UuY3BwCmluZGV4IDMxOWNiN2U0NTI5OGI1YjJlNTNhZWVmMDI4MDlhNThl
ZGI4MmExZWMuLjFiMTNjZjM5ZTU2YWVhMmYxYjEyYmE2ZjgyYTRhODA4ZDdmODVmYjQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmNwcApAQCAtNTYsOCArNTYs
NiBAQAogI2luY2x1ZGUgIkRpc2tJbWFnZUNhY2hlSU9TLmgiCiAjZW5kaWYKIAotdXNpbmcgc3Rk
OjptYXg7Ci0KIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogQ2FjaGVkSW1hZ2U6OkNhY2hlZEltYWdl
KGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVzb3VyY2VSZXF1ZXN0KQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9ET01X
aW5kb3cuY3BwCmluZGV4IDhjN2QwZGE5NGY5NzE3NmI3MWE3OWVkNWNkOTc4ZTA3NWZlZDNkM2Qu
LjA2NGQyYTRlZjY5ZWFlYjQ4YTMxYTczN2VjMzJmYzE4NWI0NGQ0YmQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdl
L0RPTVdpbmRvdy5jcHAKQEAgLTExNyw5ICsxMTcsNiBAQAogI2luY2x1ZGUgIlJlcXVlc3RBbmlt
YXRpb25GcmFtZUNhbGxiYWNrLmgiCiAjZW5kaWYKIAotdXNpbmcgc3RkOjptaW47Ci11c2luZyBz
dGQ6Om1heDsKLQogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBQb3N0TWVzc2FnZVRpbWVy
IDogcHVibGljIFRpbWVyQmFzZSB7CkBAIC0zMjQsMTIgKzMyMSwxMiBAQCBGbG9hdFJlY3QgRE9N
V2luZG93OjphZGp1c3RXaW5kb3dSZWN0KFBhZ2UqIHBhZ2UsIGNvbnN0IEZsb2F0UmVjdCYgcGVu
ZGluZ0NoYW5nZQogICAgICAgICB3aW5kb3cuc2V0SGVpZ2h0KHBlbmRpbmdDaGFuZ2VzLmhlaWdo
dCgpKTsKIAogICAgIEZsb2F0U2l6ZSBtaW5pbXVtU2l6ZSA9IHBhZ2UtPmNocm9tZSgpLmNsaWVu
dCgpLm1pbmltdW1XaW5kb3dTaXplKCk7Ci0gICAgd2luZG93LnNldFdpZHRoKG1pbihtYXgobWlu
aW11bVNpemUud2lkdGgoKSwgd2luZG93LndpZHRoKCkpLCBzY3JlZW4ud2lkdGgoKSkpOwotICAg
IHdpbmRvdy5zZXRIZWlnaHQobWluKG1heChtaW5pbXVtU2l6ZS5oZWlnaHQoKSwgd2luZG93Lmhl
aWdodCgpKSwgc2NyZWVuLmhlaWdodCgpKSk7CisgICAgd2luZG93LnNldFdpZHRoKHN0ZDo6bWlu
KHN0ZDo6bWF4KG1pbmltdW1TaXplLndpZHRoKCksIHdpbmRvdy53aWR0aCgpKSwgc2NyZWVuLndp
ZHRoKCkpKTsKKyAgICB3aW5kb3cuc2V0SGVpZ2h0KHN0ZDo6bWluKHN0ZDo6bWF4KG1pbmltdW1T
aXplLmhlaWdodCgpLCB3aW5kb3cuaGVpZ2h0KCkpLCBzY3JlZW4uaGVpZ2h0KCkpKTsKIAogICAg
IC8vIENvbnN0cmFpbiB0aGUgd2luZG93IHBvc2l0aW9uIHdpdGhpbiB0aGUgdmFsaWQgc2NyZWVu
IGFyZWEuCi0gICAgd2luZG93LnNldFgobWF4KHNjcmVlbi54KCksIG1pbih3aW5kb3cueCgpLCBz
Y3JlZW4ubWF4WCgpIC0gd2luZG93LndpZHRoKCkpKSk7Ci0gICAgd2luZG93LnNldFkobWF4KHNj
cmVlbi55KCksIG1pbih3aW5kb3cueSgpLCBzY3JlZW4ubWF4WSgpIC0gd2luZG93LmhlaWdodCgp
KSkpOworICAgIHdpbmRvdy5zZXRYKHN0ZDo6bWF4KHNjcmVlbi54KCksIHN0ZDo6bWluKHdpbmRv
dy54KCksIHNjcmVlbi5tYXhYKCkgLSB3aW5kb3cud2lkdGgoKSkpKTsKKyAgICB3aW5kb3cuc2V0
WShzdGQ6Om1heChzY3JlZW4ueSgpLCBzdGQ6Om1pbih3aW5kb3cueSgpLCBzY3JlZW4ubWF4WSgp
IC0gd2luZG93LmhlaWdodCgpKSkpOwogCiAgICAgcmV0dXJuIHdpbmRvdzsKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvRXZlbnRIYW5kbGVyLmNwcAppbmRleCBhYTljOGYzOTU1YmY1NmNlZDk2YTk2NDU1N2U4
OTRiNjE0YzYyNWFiLi4xYmM3MzJiNWFhZjE3ZTI2NzNkOWI5NWFkNTRkMjA1ZDM5ZjQ3NGRmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwCkBAIC0xODIsNyArMTgyLDcgQEAgcHVi
bGljOgogCiAgICAgfk1heGltdW1EdXJhdGlvblRyYWNrZXIoKQogICAgIHsKLSAgICAgICAgKm1f
bWF4RHVyYXRpb24gPSBtYXgoKm1fbWF4RHVyYXRpb24sIG1vbm90b25pY2FsbHlJbmNyZWFzaW5n
VGltZSgpIC0gbV9zdGFydCk7CisgICAgICAgICptX21heER1cmF0aW9uID0gc3RkOjptYXgoKm1f
bWF4RHVyYXRpb24sIG1vbm90b25pY2FsbHlJbmNyZWFzaW5nVGltZSgpIC0gbV9zdGFydCk7CiAg
ICAgfQogCiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVRy
ZWUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVRyZWUuY3BwCmluZGV4IDAyNWQzMmU4
NTM1MDc4MDM2NjlmMmM3NDhmMDA3NmY4ODk3ZWZjMjIuLmNlZTEyNmRiYWFiNjJjNWYxNGVmYTk3
YWQ4OGE0Yjg5YmU4YzEyMDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVU
cmVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVHJlZS5jcHAKQEAgLTMzLDgg
KzMzLDYgQEAKICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAjaW5jbHVkZSA8d3RmL3Rl
eHQvU3RyaW5nQnVpbGRlci5oPgogCi11c2luZyBzdGQ6OnN3YXA7Ci0KIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAogRnJhbWVUcmVlOjp+RnJhbWVUcmVlKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvRnJhbWVWaWV3LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNw
cAppbmRleCA2ZTc4M2FjNjBjZDlhMWFkYjYwZDM1YmE4OTM5MmJlNzEyYWZmZjkzLi44MWI4NDEx
MTQyNjliMmZmMWFmMDJjNGY2Yzg3ZmFlZDRlMjMyN2ExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL0ZyYW1lVmlldy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZp
ZXcuY3BwCkBAIC0yMjg4LDcgKzIyODgsNyBAQCBkb3VibGUgRnJhbWVWaWV3OjphZGp1c3RlZERl
ZmVycmVkUmVwYWludERlbGF5KCkgY29uc3QKICAgICBpZiAoIW1fZGVmZXJyZWRSZXBhaW50RGVs
YXkpCiAgICAgICAgIHJldHVybiAwOwogICAgIGRvdWJsZSB0aW1lU2luY2VMYXN0UGFpbnQgPSBt
b25vdG9uaWNhbGx5SW5jcmVhc2luZ1RpbWUoKSAtIG1fbGFzdFBhaW50VGltZTsKLSAgICByZXR1
cm4gbWF4KDAuLCBtX2RlZmVycmVkUmVwYWludERlbGF5IC0gdGltZVNpbmNlTGFzdFBhaW50KTsK
KyAgICByZXR1cm4gc3RkOjptYXg8ZG91YmxlPigwLCBtX2RlZmVycmVkUmVwYWludERlbGF5IC0g
dGltZVNpbmNlTGFzdFBhaW50KTsKIH0KICAgICAKIHZvaWQgRnJhbWVWaWV3OjpkZWZlcnJlZFJl
cGFpbnRUaW1lckZpcmVkKFRpbWVyPEZyYW1lVmlldz4qKQpAQCAtMjkwNCw3ICsyOTA0LDcgQEAg
dm9pZCBGcmFtZVZpZXc6OmF1dG9TaXplSWZFbmFibGVkKCkKICAgICBtX2F1dG9TaXplQ29udGVu
dFNpemUgPSBjb250ZW50c1NpemUoKTsKIAogICAgIGlmIChtX2F1dG9TaXplRml4ZWRNaW5pbXVt
SGVpZ2h0KSB7Ci0gICAgICAgIHJlc2l6ZShtX2F1dG9TaXplQ29udGVudFNpemUud2lkdGgoKSwg
bWF4KG1fYXV0b1NpemVGaXhlZE1pbmltdW1IZWlnaHQsIG1fYXV0b1NpemVDb250ZW50U2l6ZS5o
ZWlnaHQoKSkpOworICAgICAgICByZXNpemUobV9hdXRvU2l6ZUNvbnRlbnRTaXplLndpZHRoKCks
IHN0ZDo6bWF4KG1fYXV0b1NpemVGaXhlZE1pbmltdW1IZWlnaHQsIG1fYXV0b1NpemVDb250ZW50
U2l6ZS5oZWlnaHQoKSkpOwogICAgICAgICBkb2N1bWVudC0+dXBkYXRlTGF5b3V0SWdub3JlUGVu
ZGluZ1N0eWxlc2hlZXRzKCk7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
YWdlL1ByaW50Q29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1ByaW50Q29udGV4dC5j
cHAKaW5kZXggZWJjODE4MGNkZDQyZjU2OTJlMjQzZTU5MWZmMjE4ZTZkZWY3MmQyNS4uMTRjNzhh
MDg5Y2Y2NDBlNzEwOTBlZWVjMmU5MDY5MzdkODA3YzRhOCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGFnZS9QcmludENvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUHJp
bnRDb250ZXh0LmNwcApAQCAtMTg4LDcgKzE4OCw3IEBAIGZsb2F0IFByaW50Q29udGV4dDo6Y29t
cHV0ZUF1dG9tYXRpY1NjYWxlRmFjdG9yKGNvbnN0IEZsb2F0U2l6ZSYgYXZhaWxhYmxlUGFwZXJT
CiAKICAgICBmbG9hdCBtYXhTaHJpbmtUb0ZpdFNjYWxlRmFjdG9yID0gMSAvIHByaW50aW5nTWF4
aW11bVNocmlua0ZhY3RvcjsKICAgICBmbG9hdCBzaHJpbmtUb0ZpdFNjYWxlRmFjdG9yID0gKHVz
ZVZpZXdXaWR0aCA/IGF2YWlsYWJsZVBhcGVyU2l6ZS53aWR0aCgpIDogYXZhaWxhYmxlUGFwZXJT
aXplLmhlaWdodCgpKSAvIHZpZXdMb2dpY2FsV2lkdGg7Ci0gICAgcmV0dXJuIG1heChtYXhTaHJp
bmtUb0ZpdFNjYWxlRmFjdG9yLCBzaHJpbmtUb0ZpdFNjYWxlRmFjdG9yKTsKKyAgICByZXR1cm4g
c3RkOjptYXgobWF4U2hyaW5rVG9GaXRTY2FsZUZhY3Rvciwgc2hyaW5rVG9GaXRTY2FsZUZhY3Rv
cik7CiB9CiAKIHZvaWQgUHJpbnRDb250ZXh0OjpzcG9vbFBhZ2UoR3JhcGhpY3NDb250ZXh0JiBj
dHgsIGludCBwYWdlTnVtYmVyLCBmbG9hdCB3aWR0aCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvU3BhdGlhbE5hdmlnYXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9TcGF0
aWFsTmF2aWdhdGlvbi5jcHAKaW5kZXggMWEyNjhmNGY1NmVmNDA3YjJkNDhlMWYxNmIzYzNlMTY0
MTg1Y2YzMi4uOTNmNWZmYjc5Mzg4NTYwNmQ1YzVjOWM1MzZmYTU2MDA3ODg4Yzg4NiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9TcGF0aWFsTmF2aWdhdGlvbi5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9TcGF0aWFsTmF2aWdhdGlvbi5jcHAKQEAgLTU3NCw3ICs1NzQsNyBA
QCB2b2lkIGVudHJ5QW5kRXhpdFBvaW50c0ZvckRpcmVjdGlvbihGb2N1c0RpcmVjdGlvbiBkaXJl
Y3Rpb24sIGNvbnN0IExheW91dFJlY3QmCiAgICAgICAgICAgICBleGl0UG9pbnQuc2V0WShzdGFy
dGluZ1JlY3QubWF4WSgpKTsKICAgICAgICAgICAgIGVudHJ5UG9pbnQuc2V0WShwb3RlbnRpYWxS
ZWN0LnkoKSk7CiAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBleGl0UG9pbnQuc2V0WSht
YXgoc3RhcnRpbmdSZWN0LnkoKSwgcG90ZW50aWFsUmVjdC55KCkpKTsKKyAgICAgICAgICAgIGV4
aXRQb2ludC5zZXRZKHN0ZDo6bWF4KHN0YXJ0aW5nUmVjdC55KCksIHBvdGVudGlhbFJlY3QueSgp
KSk7CiAgICAgICAgICAgICBlbnRyeVBvaW50LnNldFkoZXhpdFBvaW50LnkoKSk7CiAgICAgICAg
IH0KICAgICAgICAgYnJlYWs7CkBAIC01ODcsNyArNTg3LDcgQEAgdm9pZCBlbnRyeUFuZEV4aXRQ
b2ludHNGb3JEaXJlY3Rpb24oRm9jdXNEaXJlY3Rpb24gZGlyZWN0aW9uLCBjb25zdCBMYXlvdXRS
ZWN0JgogICAgICAgICAgICAgZXhpdFBvaW50LnNldFgoc3RhcnRpbmdSZWN0Lm1heFgoKSk7CiAg
ICAgICAgICAgICBlbnRyeVBvaW50LnNldFgocG90ZW50aWFsUmVjdC54KCkpOwogICAgICAgICB9
IGVsc2UgewotICAgICAgICAgICAgZXhpdFBvaW50LnNldFgobWF4KHN0YXJ0aW5nUmVjdC54KCks
IHBvdGVudGlhbFJlY3QueCgpKSk7CisgICAgICAgICAgICBleGl0UG9pbnQuc2V0WChzdGQ6Om1h
eChzdGFydGluZ1JlY3QueCgpLCBwb3RlbnRpYWxSZWN0LngoKSkpOwogICAgICAgICAgICAgZW50
cnlQb2ludC5zZXRYKGV4aXRQb2ludC54KCkpOwogICAgICAgICB9CiAgICAgICAgIGJyZWFrOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9hbmltYXRpb24vQ1NTUHJvcGVydHlBbmlt
YXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9hbmltYXRpb24vQ1NTUHJvcGVydHlBbmlt
YXRpb24uY3BwCmluZGV4IDdhZDA1ZDU4YWVhNWE2MWQ0ZDNkMTEzMDdlZjI5MTMzNzA2OTFkZmYu
LmY5YTFhYTQwMDM3Nzc0ZTk4ZjM1ZDM0ZTlkMmM3OGZlMDQ1MzlkMDAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvYW5pbWF0aW9uL0NTU1Byb3BlcnR5QW5pbWF0aW9uLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2FuaW1hdGlvbi9DU1NQcm9wZXJ0eUFuaW1hdGlvbi5jcHAK
QEAgLTE3Niw3ICsxNzYsNyBAQCBzdGF0aWMgaW5saW5lIEZpbHRlck9wZXJhdGlvbnMgYmxlbmRG
aWx0ZXJPcGVyYXRpb25zKGNvbnN0IEFuaW1hdGlvbkJhc2UqIGFuaW0sCiAgICAgRmlsdGVyT3Bl
cmF0aW9ucyByZXN1bHQ7CiAgICAgc2l6ZV90IGZyb21TaXplID0gZnJvbS5vcGVyYXRpb25zKCku
c2l6ZSgpOwogICAgIHNpemVfdCB0b1NpemUgPSB0by5vcGVyYXRpb25zKCkuc2l6ZSgpOwotICAg
IHNpemVfdCBzaXplID0gbWF4KGZyb21TaXplLCB0b1NpemUpOworICAgIHNpemVfdCBzaXplID0g
c3RkOjptYXgoZnJvbVNpemUsIHRvU2l6ZSk7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBz
aXplOyBpKyspIHsKICAgICAgICAgUmVmUHRyPEZpbHRlck9wZXJhdGlvbj4gZnJvbU9wID0gKGkg
PCBmcm9tU2l6ZSkgPyBmcm9tLm9wZXJhdGlvbnMoKVtpXS5nZXQoKSA6IDA7CiAgICAgICAgIFJl
ZlB0cjxGaWx0ZXJPcGVyYXRpb24+IHRvT3AgPSAoaSA8IHRvU2l6ZSkgPyB0by5vcGVyYXRpb25z
KClbaV0uZ2V0KCkgOiAwOwpAQCAtNjk5LDcgKzY5OSw3IEBAIHByaXZhdGU6CiAKICAgICAgICAg
T3duUHRyPFNoYWRvd0RhdGE+IG5ld1NoYWRvd0RhdGE7CiAKLSAgICAgICAgaW50IG1heExlbmd0
aCA9IG1heChmcm9tTGVuZ3RoLCB0b0xlbmd0aCk7CisgICAgICAgIGludCBtYXhMZW5ndGggPSBz
dGQ6Om1heChmcm9tTGVuZ3RoLCB0b0xlbmd0aCk7CiAgICAgICAgIGZvciAoaW50IGkgPSAwOyBp
IDwgbWF4TGVuZ3RoOyArK2kpIHsKICAgICAgICAgICAgIGNvbnN0IFNoYWRvd0RhdGEqIGZyb21T
aGFkb3cgPSBpIDwgZnJvbUxlbmd0aCA/IGZyb21TaGFkb3dzW2ldIDogMDsKICAgICAgICAgICAg
IGNvbnN0IFNoYWRvd0RhdGEqIHRvU2hhZG93ID0gaSA8IHRvTGVuZ3RoID8gdG9TaGFkb3dzW2ld
IDogMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Zsb2F0
UmVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9GbG9hdFJlY3QuY3Bw
CmluZGV4IGFkNGMyZWJiZWI3MmU2NjVkMGE3ZDZiM2EyNzcxY2ZiMjk4ZTIzMDkuLjJmYWU0ZTdi
NDMyNWRlZTE0NTMzMTJkZWFkODVlYzQ4M2RlMTc3MjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Zsb2F0UmVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvRmxvYXRSZWN0LmNwcApAQCAtMzQsMTIgKzM0LDExIEBACiAjaW5j
bHVkZSA8d3RmL01hdGhFeHRyYXMuaD4KICNpbmNsdWRlIDx3dGYvUHJpbnRTdHJlYW0uaD4KIAot
dXNpbmcgc3RkOjptYXg7Ci11c2luZyBzdGQ6Om1pbjsKLQogbmFtZXNwYWNlIFdlYkNvcmUgewog
Ci1GbG9hdFJlY3Q6OkZsb2F0UmVjdChjb25zdCBJbnRSZWN0JiByKSA6IG1fbG9jYXRpb24oci5s
b2NhdGlvbigpKSwgbV9zaXplKHIuc2l6ZSgpKQorRmxvYXRSZWN0OjpGbG9hdFJlY3QoY29uc3Qg
SW50UmVjdCYgcikKKyAgICA6IG1fbG9jYXRpb24oci5sb2NhdGlvbigpKQorICAgICwgbV9zaXpl
KHIuc2l6ZSgpKQogewogfQogCkBAIC03OCwxMCArNzcsMTAgQEAgYm9vbCBGbG9hdFJlY3Q6OmNv
bnRhaW5zKGNvbnN0IEZsb2F0UG9pbnQmIHBvaW50LCBDb250YWluc01vZGUgY29udGFpbnNNb2Rl
KSBjb24KIAogdm9pZCBGbG9hdFJlY3Q6OmludGVyc2VjdChjb25zdCBGbG9hdFJlY3QmIG90aGVy
KQogewotICAgIGZsb2F0IGwgPSBtYXgoeCgpLCBvdGhlci54KCkpOwotICAgIGZsb2F0IHQgPSBt
YXgoeSgpLCBvdGhlci55KCkpOwotICAgIGZsb2F0IHIgPSBtaW4obWF4WCgpLCBvdGhlci5tYXhY
KCkpOwotICAgIGZsb2F0IGIgPSBtaW4obWF4WSgpLCBvdGhlci5tYXhZKCkpOworICAgIGZsb2F0
IGwgPSBzdGQ6Om1heCh4KCksIG90aGVyLngoKSk7CisgICAgZmxvYXQgdCA9IHN0ZDo6bWF4KHko
KSwgb3RoZXIueSgpKTsKKyAgICBmbG9hdCByID0gc3RkOjptaW4obWF4WCgpLCBvdGhlci5tYXhY
KCkpOworICAgIGZsb2F0IGIgPSBzdGQ6Om1pbihtYXhZKCksIG90aGVyLm1heFkoKSk7CiAKICAg
ICAvLyBSZXR1cm4gYSBjbGVhbiBlbXB0eSByZWN0YW5nbGUgZm9yIG5vbi1pbnRlcnNlY3Rpbmcg
Y2FzZXMuCiAgICAgaWYgKGwgPj0gciB8fCB0ID49IGIpIHsKQEAgLTEwOSwxMCArMTA4LDEwIEBA
IHZvaWQgRmxvYXRSZWN0Ojp1bml0ZShjb25zdCBGbG9hdFJlY3QmIG90aGVyKQogCiB2b2lkIEZs
b2F0UmVjdDo6dW5pdGVFdmVuSWZFbXB0eShjb25zdCBGbG9hdFJlY3QmIG90aGVyKQogewotICAg
IGZsb2F0IG1pblggPSBtaW4oeCgpLCBvdGhlci54KCkpOwotICAgIGZsb2F0IG1pblkgPSBtaW4o
eSgpLCBvdGhlci55KCkpOwotICAgIGZsb2F0IG1heFggPSBtYXgodGhpcy0+bWF4WCgpLCBvdGhl
ci5tYXhYKCkpOwotICAgIGZsb2F0IG1heFkgPSBtYXgodGhpcy0+bWF4WSgpLCBvdGhlci5tYXhZ
KCkpOworICAgIGZsb2F0IG1pblggPSBzdGQ6Om1pbih4KCksIG90aGVyLngoKSk7CisgICAgZmxv
YXQgbWluWSA9IHN0ZDo6bWluKHkoKSwgb3RoZXIueSgpKTsKKyAgICBmbG9hdCBtYXhYID0gc3Rk
OjptYXgodGhpcy0+bWF4WCgpLCBvdGhlci5tYXhYKCkpOworICAgIGZsb2F0IG1heFkgPSBzdGQ6
Om1heCh0aGlzLT5tYXhZKCksIG90aGVyLm1heFkoKSk7CiAKICAgICBzZXRMb2NhdGlvbkFuZFNp
emVGcm9tRWRnZXMobWluWCwgbWluWSwgbWF4WCwgbWF4WSk7CiB9CkBAIC0xMzIsMTAgKzEzMSwx
MCBAQCB2b2lkIEZsb2F0UmVjdDo6dW5pdGVJZk5vblplcm8oY29uc3QgRmxvYXRSZWN0JiBvdGhl
cikKIAogdm9pZCBGbG9hdFJlY3Q6OmV4dGVuZChjb25zdCBGbG9hdFBvaW50JiBwKQogewotICAg
IGZsb2F0IG1pblggPSBtaW4oeCgpLCBwLngoKSk7Ci0gICAgZmxvYXQgbWluWSA9IG1pbih5KCks
IHAueSgpKTsKLSAgICBmbG9hdCBtYXhYID0gbWF4KHRoaXMtPm1heFgoKSwgcC54KCkpOwotICAg
IGZsb2F0IG1heFkgPSBtYXgodGhpcy0+bWF4WSgpLCBwLnkoKSk7CisgICAgZmxvYXQgbWluWCA9
IHN0ZDo6bWluKHgoKSwgcC54KCkpOworICAgIGZsb2F0IG1pblkgPSBzdGQ6Om1pbih5KCksIHAu
eSgpKTsKKyAgICBmbG9hdCBtYXhYID0gc3RkOjptYXgodGhpcy0+bWF4WCgpLCBwLngoKSk7Cisg
ICAgZmxvYXQgbWF4WSA9IHN0ZDo6bWF4KHRoaXMtPm1heFkoKSwgcC55KCkpOwogCiAgICAgc2V0
TG9jYXRpb25BbmRTaXplRnJvbUVkZ2VzKG1pblgsIG1pblksIG1heFgsIG1heFkpOwogfQpAQCAt
MTYxLDEwICsxNjAsMTAgQEAgRmxvYXRSZWN0IHVuaW9uUmVjdChjb25zdCBWZWN0b3I8RmxvYXRS
ZWN0PiYgcmVjdHMpCiAKIHZvaWQgRmxvYXRSZWN0OjpmaXRUb1BvaW50cyhjb25zdCBGbG9hdFBv
aW50JiBwMCwgY29uc3QgRmxvYXRQb2ludCYgcDEpCiB7Ci0gICAgZmxvYXQgbGVmdCA9IG1pbihw
MC54KCksIHAxLngoKSk7Ci0gICAgZmxvYXQgdG9wID0gbWluKHAwLnkoKSwgcDEueSgpKTsKLSAg
ICBmbG9hdCByaWdodCA9IG1heChwMC54KCksIHAxLngoKSk7Ci0gICAgZmxvYXQgYm90dG9tID0g
bWF4KHAwLnkoKSwgcDEueSgpKTsKKyAgICBmbG9hdCBsZWZ0ID0gc3RkOjptaW4ocDAueCgpLCBw
MS54KCkpOworICAgIGZsb2F0IHRvcCA9IHN0ZDo6bWluKHAwLnkoKSwgcDEueSgpKTsKKyAgICBm
bG9hdCByaWdodCA9IHN0ZDo6bWF4KHAwLngoKSwgcDEueCgpKTsKKyAgICBmbG9hdCBib3R0b20g
PSBzdGQ6Om1heChwMC55KCksIHAxLnkoKSk7CiAKICAgICBzZXRMb2NhdGlvbkFuZFNpemVGcm9t
RWRnZXMobGVmdCwgdG9wLCByaWdodCwgYm90dG9tKTsKIH0KQEAgLTE3NSwyNSArMTc0LDI1IEBA
IG5hbWVzcGFjZSB7CiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KIFQgbWluMyhjb25zdCBUJiB2MSwg
Y29uc3QgVCYgdjIsIGNvbnN0IFQmIHYzKQogewotICAgIHJldHVybiBtaW4obWluKHYxLCB2Miks
IHYzKTsKKyAgICByZXR1cm4gc3RkOjptaW4oc3RkOjptaW4odjEsIHYyKSwgdjMpOwogfQogCiB0
ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KIFQgbWF4Myhjb25zdCBUJiB2MSwgY29uc3QgVCYgdjIsIGNv
bnN0IFQmIHYzKQogewotICAgIHJldHVybiBtYXgobWF4KHYxLCB2MiksIHYzKTsKKyAgICByZXR1
cm4gc3RkOjptYXgoc3RkOjptYXgodjEsIHYyKSwgdjMpOwogfQogCiB0ZW1wbGF0ZSA8dHlwZW5h
bWUgVD4KIFQgbWluNChjb25zdCBUJiB2MSwgY29uc3QgVCYgdjIsIGNvbnN0IFQmIHYzLCBjb25z
dCBUJiB2NCkKIHsKLSAgICByZXR1cm4gbWluKG1pbih2MSwgdjIpLCBtaW4odjMsIHY0KSk7Cisg
ICAgcmV0dXJuIHN0ZDo6bWluKHN0ZDo6bWluKHYxLCB2MiksIHN0ZDo6bWluKHYzLCB2NCkpOwog
fQogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KIFQgbWF4NChjb25zdCBUJiB2MSwgY29uc3QgVCYg
djIsIGNvbnN0IFQmIHYzLCBjb25zdCBUJiB2NCkKIHsKLSAgICByZXR1cm4gbWF4KG1heCh2MSwg
djIpLCBtYXgodjMsIHY0KSk7CisgICAgcmV0dXJuIHN0ZDo6bWF4KHN0ZDo6bWF4KHYxLCB2Miks
IHN0ZDo6bWF4KHYzLCB2NCkpOwogfQogCiB9IC8vIGFub255bW91cyBuYW1lc3BhY2UKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dseXBoUGFnZVRyZWVOb2Rl
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dseXBoUGFnZVRyZWVOb2Rl
LmNwcAppbmRleCBhMzZmMzNiYWZmMDY0ZGZhYTJiOGY1Y2EwM2MzMTBiZDgyNDY3ZGY0Li42NDU0
ZTczZTc2ZTlkYjhmM2JlYTNhNGFmMjNjNDdlNzkzY2RjYjBhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HbHlwaFBhZ2VUcmVlTm9kZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR2x5cGhQYWdlVHJlZU5vZGUuY3BwCkBAIC00
Myw5ICs0Myw2IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotdXNpbmcgc3RkOjptYXg7Ci11
c2luZyBzdGQ6Om1pbjsKLQogSGFzaE1hcDxpbnQsIEdseXBoUGFnZVRyZWVOb2RlKj4qIEdseXBo
UGFnZVRyZWVOb2RlOjpyb290cyA9IDA7CiBHbHlwaFBhZ2VUcmVlTm9kZSogR2x5cGhQYWdlVHJl
ZU5vZGU6OnBhZ2VaZXJvUm9vdCA9IDA7CiAKQEAgLTIyOSw4ICsyMjYsOCBAQCB2b2lkIEdseXBo
UGFnZVRyZWVOb2RlOjppbml0aWFsaXplUGFnZShjb25zdCBGb250RGF0YSogZm9udERhdGEsIHVu
c2lnbmVkIHBhZ2VOdQogICAgICAgICAgICAgICAgICAgICBjb25zdCBGb250RGF0YVJhbmdlJiBy
YW5nZSA9IHNlZ21lbnRlZEZvbnREYXRhLT5yYW5nZUF0KGkpOwogICAgICAgICAgICAgICAgICAg
ICAvLyBhbGwgdGhpcyBjYXN0aW5nIGlzIHRvIGVuc3VyZSBhbGwgdGhlIHBhcmFtZXRlcnMgdG8g
bWluIGFuZCBtYXggaGF2ZSB0aGUgc2FtZSB0eXBlLAogICAgICAgICAgICAgICAgICAgICAvLyB0
byBhdm9pZCBhbWJpZ3VvdXMgdGVtcGxhdGUgcGFyYW1ldGVyIGVycm9ycyBvbiBXaW5kb3dzCi0g
ICAgICAgICAgICAgICAgICAgIGludCBmcm9tID0gbWF4KDAsIHN0YXRpY19jYXN0PGludD4ocmFu
Z2UuZnJvbSgpKSAtIHN0YXRpY19jYXN0PGludD4oc3RhcnQpKTsKLSAgICAgICAgICAgICAgICAg
ICAgaW50IHRvID0gMSArIG1pbihzdGF0aWNfY2FzdDxpbnQ+KHJhbmdlLnRvKCkpIC0gc3RhdGlj
X2Nhc3Q8aW50PihzdGFydCksIHN0YXRpY19jYXN0PGludD4oR2x5cGhQYWdlOjpzaXplKSAtIDEp
OworICAgICAgICAgICAgICAgICAgICBpbnQgZnJvbSA9IHN0ZDo6bWF4KDAsIHN0YXRpY19jYXN0
PGludD4ocmFuZ2UuZnJvbSgpKSAtIHN0YXRpY19jYXN0PGludD4oc3RhcnQpKTsKKyAgICAgICAg
ICAgICAgICAgICAgaW50IHRvID0gMSArIHN0ZDo6bWluKHN0YXRpY19jYXN0PGludD4ocmFuZ2Uu
dG8oKSkgLSBzdGF0aWNfY2FzdDxpbnQ+KHN0YXJ0KSwgc3RhdGljX2Nhc3Q8aW50PihHbHlwaFBh
Z2U6OnNpemUpIC0gMSk7CiAgICAgICAgICAgICAgICAgICAgIGlmIChmcm9tIDwgc3RhdGljX2Nh
c3Q8aW50PihHbHlwaFBhZ2U6OnNpemUpICYmIHRvID4gMCkgewogICAgICAgICAgICAgICAgICAg
ICAgICAgaWYgKGhhdmVHbHlwaHMgJiYgIXNjcmF0Y2hQYWdlKSB7CiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgc2NyYXRjaFBhZ2UgPSBHbHlwaFBhZ2U6OmNyZWF0ZUZvck1peGVkRm9udERh
dGEodGhpcyk7CkBAIC0zMzksNyArMzM2LDcgQEAgR2x5cGhQYWdlVHJlZU5vZGUqIEdseXBoUGFn
ZVRyZWVOb2RlOjpnZXRDaGlsZChjb25zdCBGb250RGF0YSogZm9udERhdGEsIHVuc2lnbmUKICNl
bmRpZgogICAgIGlmIChmb250RGF0YSkgewogICAgICAgICBtX2NoaWxkcmVuLnNldChmb250RGF0
YSwgYWRvcHRQdHIoY2hpbGQpKTsKLSAgICAgICAgZm9udERhdGEtPnNldE1heEdseXBoUGFnZVRy
ZWVMZXZlbChtYXgoZm9udERhdGEtPm1heEdseXBoUGFnZVRyZWVMZXZlbCgpLCBjaGlsZC0+bV9s
ZXZlbCkpOworICAgICAgICBmb250RGF0YS0+c2V0TWF4R2x5cGhQYWdlVHJlZUxldmVsKHN0ZDo6
bWF4KGZvbnREYXRhLT5tYXhHbHlwaFBhZ2VUcmVlTGV2ZWwoKSwgY2hpbGQtPm1fbGV2ZWwpKTsK
ICAgICB9IGVsc2UgewogICAgICAgICBtX3N5c3RlbUZhbGxiYWNrQ2hpbGQgPSBhZG9wdFB0cihj
aGlsZCk7CiAgICAgICAgIGNoaWxkLT5tX2lzU3lzdGVtRmFsbGJhY2sgPSB0cnVlOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW50UmVjdC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbnRSZWN0LmNwcAppbmRleCBjZGEwZWMzYjA2
ZGJlMDE1OWQzMjM2ODc2ZmM5MDM5MGRlYWM1MjcyLi4wZThmZjk3ODUxYjRiNDliZjk4OTY1MWM0
NWI4M2ZlNGUxZmQ3Mjk2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9JbnRSZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9J
bnRSZWN0LmNwcApAQCAtMzEsOSArMzEsNiBAQAogI2luY2x1ZGUgPGFsZ29yaXRobT4KICNpbmNs
dWRlIDx3dGYvUHJpbnRTdHJlYW0uaD4KIAotdXNpbmcgc3RkOjptYXg7Ci11c2luZyBzdGQ6Om1p
bjsKLQogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBJbnRSZWN0OjpJbnRSZWN0KGNvbnN0IEZsb2F0
UmVjdCYgcikKQEAgLTY0LDEwICs2MSwxMCBAQCBib29sIEludFJlY3Q6OmNvbnRhaW5zKGNvbnN0
IEludFJlY3QmIG90aGVyKSBjb25zdAogCiB2b2lkIEludFJlY3Q6OmludGVyc2VjdChjb25zdCBJ
bnRSZWN0JiBvdGhlcikKIHsKLSAgICBpbnQgbCA9IG1heCh4KCksIG90aGVyLngoKSk7Ci0gICAg
aW50IHQgPSBtYXgoeSgpLCBvdGhlci55KCkpOwotICAgIGludCByID0gbWluKG1heFgoKSwgb3Ro
ZXIubWF4WCgpKTsKLSAgICBpbnQgYiA9IG1pbihtYXhZKCksIG90aGVyLm1heFkoKSk7CisgICAg
aW50IGwgPSBzdGQ6Om1heCh4KCksIG90aGVyLngoKSk7CisgICAgaW50IHQgPSBzdGQ6Om1heCh5
KCksIG90aGVyLnkoKSk7CisgICAgaW50IHIgPSBzdGQ6Om1pbihtYXhYKCksIG90aGVyLm1heFgo
KSk7CisgICAgaW50IGIgPSBzdGQ6Om1pbihtYXhZKCksIG90aGVyLm1heFkoKSk7CiAKICAgICAv
LyBSZXR1cm4gYSBjbGVhbiBlbXB0eSByZWN0YW5nbGUgZm9yIG5vbi1pbnRlcnNlY3RpbmcgY2Fz
ZXMuCiAgICAgaWYgKGwgPj0gciB8fCB0ID49IGIpIHsKQEAgLTkzLDEwICs5MCwxMCBAQCB2b2lk
IEludFJlY3Q6OnVuaXRlKGNvbnN0IEludFJlY3QmIG90aGVyKQogICAgICAgICByZXR1cm47CiAg
ICAgfQogCi0gICAgaW50IGwgPSBtaW4oeCgpLCBvdGhlci54KCkpOwotICAgIGludCB0ID0gbWlu
KHkoKSwgb3RoZXIueSgpKTsKLSAgICBpbnQgciA9IG1heChtYXhYKCksIG90aGVyLm1heFgoKSk7
Ci0gICAgaW50IGIgPSBtYXgobWF4WSgpLCBvdGhlci5tYXhZKCkpOworICAgIGludCBsID0gc3Rk
OjptaW4oeCgpLCBvdGhlci54KCkpOworICAgIGludCB0ID0gc3RkOjptaW4oeSgpLCBvdGhlci55
KCkpOworICAgIGludCByID0gc3RkOjptYXgobWF4WCgpLCBvdGhlci5tYXhYKCkpOworICAgIGlu
dCBiID0gc3RkOjptYXgobWF4WSgpLCBvdGhlci5tYXhZKCkpOwogCiAgICAgbV9sb2NhdGlvbi5z
ZXRYKGwpOwogICAgIG1fbG9jYXRpb24uc2V0WSh0KTsKQEAgLTExNCwxMCArMTExLDEwIEBAIHZv
aWQgSW50UmVjdDo6dW5pdGVJZk5vblplcm8oY29uc3QgSW50UmVjdCYgb3RoZXIpCiAgICAgICAg
IHJldHVybjsKICAgICB9CiAKLSAgICBpbnQgbGVmdCA9IG1pbih4KCksIG90aGVyLngoKSk7Ci0g
ICAgaW50IHRvcCA9IG1pbih5KCksIG90aGVyLnkoKSk7Ci0gICAgaW50IHJpZ2h0ID0gbWF4KG1h
eFgoKSwgb3RoZXIubWF4WCgpKTsKLSAgICBpbnQgYm90dG9tID0gbWF4KG1heFkoKSwgb3RoZXIu
bWF4WSgpKTsKKyAgICBpbnQgbGVmdCA9IHN0ZDo6bWluKHgoKSwgb3RoZXIueCgpKTsKKyAgICBp
bnQgdG9wID0gc3RkOjptaW4oeSgpLCBvdGhlci55KCkpOworICAgIGludCByaWdodCA9IHN0ZDo6
bWF4KG1heFgoKSwgb3RoZXIubWF4WCgpKTsKKyAgICBpbnQgYm90dG9tID0gc3RkOjptYXgobWF4
WSgpLCBvdGhlci5tYXhZKCkpOwogCiAgICAgbV9sb2NhdGlvbi5zZXRYKGxlZnQpOwogICAgIG1f
bG9jYXRpb24uc2V0WSh0b3ApOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvTGF5b3V0UmVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9MYXlvdXRSZWN0LmNwcAppbmRleCAxYTViOTg5NDg0YjM3YjU5OTZmMTE4Y2NkNjJlNDBiZjFh
MzFkNWJlLi5kY2UwZTEyZGIxNjMxZDdmODRkNTZiMGE2NTI4OGI4MTIxYTU2NWJkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9MYXlvdXRSZWN0LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9MYXlvdXRSZWN0LmNwcApAQCAtMzMs
OSArMzMsNiBAQAogCiAjaW5jbHVkZSA8YWxnb3JpdGhtPgogCi11c2luZyBzdGQ6Om1heDsKLXVz
aW5nIHN0ZDo6bWluOwotCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIExheW91dFJlY3Q6OkxheW91
dFJlY3QoY29uc3QgRmxvYXRSZWN0JiByKQpAQCAtNjAsOCArNTcsOCBAQCBib29sIExheW91dFJl
Y3Q6OmNvbnRhaW5zKGNvbnN0IExheW91dFJlY3QmIG90aGVyKSBjb25zdAogCiB2b2lkIExheW91
dFJlY3Q6OmludGVyc2VjdChjb25zdCBMYXlvdXRSZWN0JiBvdGhlcikKIHsKLSAgICBMYXlvdXRQ
b2ludCBuZXdMb2NhdGlvbihtYXgoeCgpLCBvdGhlci54KCkpLCBtYXgoeSgpLCBvdGhlci55KCkp
KTsKLSAgICBMYXlvdXRQb2ludCBuZXdNYXhQb2ludChtaW4obWF4WCgpLCBvdGhlci5tYXhYKCkp
LCBtaW4obWF4WSgpLCBvdGhlci5tYXhZKCkpKTsKKyAgICBMYXlvdXRQb2ludCBuZXdMb2NhdGlv
bihzdGQ6Om1heCh4KCksIG90aGVyLngoKSksIHN0ZDo6bWF4KHkoKSwgb3RoZXIueSgpKSk7Cisg
ICAgTGF5b3V0UG9pbnQgbmV3TWF4UG9pbnQoc3RkOjptaW4obWF4WCgpLCBvdGhlci5tYXhYKCkp
LCBzdGQ6Om1pbihtYXhZKCksIG90aGVyLm1heFkoKSkpOwogCiAgICAgLy8gUmV0dXJuIGEgY2xl
YW4gZW1wdHkgcmVjdGFuZ2xlIGZvciBub24taW50ZXJzZWN0aW5nIGNhc2VzLgogICAgIGlmIChu
ZXdMb2NhdGlvbi54KCkgPj0gbmV3TWF4UG9pbnQueCgpIHx8IG5ld0xvY2F0aW9uLnkoKSA+PSBu
ZXdNYXhQb2ludC55KCkpIHsKQEAgLTgzLDggKzgwLDggQEAgdm9pZCBMYXlvdXRSZWN0Ojp1bml0
ZShjb25zdCBMYXlvdXRSZWN0JiBvdGhlcikKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAg
IExheW91dFBvaW50IG5ld0xvY2F0aW9uKG1pbih4KCksIG90aGVyLngoKSksIG1pbih5KCksIG90
aGVyLnkoKSkpOwotICAgIExheW91dFBvaW50IG5ld01heFBvaW50KG1heChtYXhYKCksIG90aGVy
Lm1heFgoKSksIG1heChtYXhZKCksIG90aGVyLm1heFkoKSkpOworICAgIExheW91dFBvaW50IG5l
d0xvY2F0aW9uKHN0ZDo6bWluKHgoKSwgb3RoZXIueCgpKSwgc3RkOjptaW4oeSgpLCBvdGhlci55
KCkpKTsKKyAgICBMYXlvdXRQb2ludCBuZXdNYXhQb2ludChzdGQ6Om1heChtYXhYKCksIG90aGVy
Lm1heFgoKSksIHN0ZDo6bWF4KG1heFkoKSwgb3RoZXIubWF4WSgpKSk7CiAKICAgICBtX2xvY2F0
aW9uID0gbmV3TG9jYXRpb247CiAgICAgbV9zaXplID0gbmV3TWF4UG9pbnQgLSBuZXdMb2NhdGlv
bjsKQEAgLTEwMCw4ICs5Nyw4IEBAIHZvaWQgTGF5b3V0UmVjdDo6dW5pdGVJZk5vblplcm8oY29u
c3QgTGF5b3V0UmVjdCYgb3RoZXIpCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBMYXlv
dXRQb2ludCBuZXdMb2NhdGlvbihtaW4oeCgpLCBvdGhlci54KCkpLCBtaW4oeSgpLCBvdGhlci55
KCkpKTsKLSAgICBMYXlvdXRQb2ludCBuZXdNYXhQb2ludChtYXgobWF4WCgpLCBvdGhlci5tYXhY
KCkpLCBtYXgobWF4WSgpLCBvdGhlci5tYXhZKCkpKTsKKyAgICBMYXlvdXRQb2ludCBuZXdMb2Nh
dGlvbihzdGQ6Om1pbih4KCksIG90aGVyLngoKSksIHN0ZDo6bWluKHkoKSwgb3RoZXIueSgpKSk7
CisgICAgTGF5b3V0UG9pbnQgbmV3TWF4UG9pbnQoc3RkOjptYXgobWF4WCgpLCBvdGhlci5tYXhY
KCkpLCBzdGQ6Om1heChtYXhZKCksIG90aGVyLm1heFkoKSkpOwogCiAgICAgbV9sb2NhdGlvbiA9
IG5ld0xvY2F0aW9uOwogICAgIG1fc2l6ZSA9IG5ld01heFBvaW50IC0gbmV3TG9jYXRpb247CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFTW9y
cGhvbG9neS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZF
TW9ycGhvbG9neS5jcHAKaW5kZXggNmIwMjhlZTM5Mzc2OTI5ZGRlZWI3ZjM0YWMxNDI3ODI2ZmQy
ZTZiYy4uMmQzOWU2OTRjYTZkZmJmNGZhNTc0Yzk1MjU4MmI2NWYwNDc3MTEzOSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRU1vcnBob2xvZ3ku
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVNb3Jw
aG9sb2d5LmNwcApAQCAtMzQsOSArMzQsNiBAQAogI2luY2x1ZGUgPHd0Zi9QYXJhbGxlbEpvYnMu
aD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAKLXVzaW5nIHN0ZDo6bWluOwotdXNpbmcgc3Rk
OjptYXg7Ci0KIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogRkVNb3JwaG9sb2d5OjpGRU1vcnBob2xv
Z3koRmlsdGVyKiBmaWx0ZXIsIE1vcnBob2xvZ3lPcGVyYXRvclR5cGUgdHlwZSwgZmxvYXQgcmFk
aXVzWCwgZmxvYXQgcmFkaXVzWSkKQEAgLTExNiw4ICsxMTMsOCBAQCB2b2lkIEZFTW9ycGhvbG9n
eTo6cGxhdGZvcm1BcHBseUdlbmVyaWMoUGFpbnRpbmdEYXRhKiBwYWludGluZ0RhdGEsIGludCB5
U3RhcnQsCiAKICAgICBWZWN0b3I8dW5zaWduZWQgY2hhcj4gZXh0cmVtYTsKICAgICBmb3IgKGlu
dCB5ID0geVN0YXJ0OyB5IDwgeUVuZDsgKyt5KSB7Ci0gICAgICAgIGludCBleHRyZW1hU3RhcnRZ
ID0gbWF4KDAsIHkgLSByYWRpdXNZKTsKLSAgICAgICAgaW50IGV4dHJlbWFFbmRZID0gbWluKGhl
aWdodCAtIDEsIHkgKyByYWRpdXNZKTsKKyAgICAgICAgaW50IGV4dHJlbWFTdGFydFkgPSBzdGQ6
Om1heCgwLCB5IC0gcmFkaXVzWSk7CisgICAgICAgIGludCBleHRyZW1hRW5kWSA9IHN0ZDo6bWlu
KGhlaWdodCAtIDEsIHkgKyByYWRpdXNZKTsKICAgICAgICAgZm9yICh1bnNpZ25lZCBpbnQgY2xy
Q2hhbm5lbCA9IDA7IGNsckNoYW5uZWwgPCA0OyArK2NsckNoYW5uZWwpIHsKICAgICAgICAgICAg
IGV4dHJlbWEuY2xlYXIoKTsKICAgICAgICAgICAgIC8vIENvbXB1dGUgZXh0cmVtYXMgZm9yIGVh
Y2ggY29sdW1ucwpAQCAtMTM2LDcgKzEzMyw3IEBAIHZvaWQgRkVNb3JwaG9sb2d5OjpwbGF0Zm9y
bUFwcGx5R2VuZXJpYyhQYWludGluZ0RhdGEqIHBhaW50aW5nRGF0YSwgaW50IHlTdGFydCwKIAog
ICAgICAgICAgICAgLy8gS2VybmVsIGlzIGZpbGxlZCwgZ2V0IGV4dHJlbWEgb2YgbmV4dCBjb2x1
bW4KICAgICAgICAgICAgIGZvciAoaW50IHggPSAwOyB4IDwgd2lkdGg7ICsreCkgewotICAgICAg
ICAgICAgICAgIGNvbnN0IGludCBlbmRYID0gbWluKHggKyByYWRpdXNYLCB3aWR0aCAtIDEpOwor
ICAgICAgICAgICAgICAgIGNvbnN0IGludCBlbmRYID0gc3RkOjptaW4oeCArIHJhZGl1c1gsIHdp
ZHRoIC0gMSk7CiAgICAgICAgICAgICAgICAgdW5zaWduZWQgY2hhciBjb2x1bW5FeHRyZW1hID0g
c3JjUGl4ZWxBcnJheS0+aXRlbShleHRyZW1hU3RhcnRZICogZWZmZWN0V2lkdGggKyBlbmRYICog
NCArIGNsckNoYW5uZWwpOwogICAgICAgICAgICAgICAgIGZvciAoaW50IGkgPSBleHRyZW1hU3Rh
cnRZICsgMTsgaSA8PSBleHRyZW1hRW5kWTsgKytpKSB7CiAgICAgICAgICAgICAgICAgICAgIHVu
c2lnbmVkIGNoYXIgcGl4ZWwgPSBzcmNQaXhlbEFycmF5LT5pdGVtKGkgKiBlZmZlY3RXaWR0aCAr
IGVuZFggKiA0ICsgY2xyQ2hhbm5lbCk7CkBAIC0yMjIsOCArMjE5LDggQEAgdm9pZCBGRU1vcnBo
b2xvZ3k6OnBsYXRmb3JtQXBwbHlTb2Z0d2FyZSgpCiAgICAgcGFpbnRpbmdEYXRhLmRzdFBpeGVs
QXJyYXkgPSBkc3RQaXhlbEFycmF5OwogICAgIHBhaW50aW5nRGF0YS53aWR0aCA9IGVmZmVjdERy
YXdpbmdSZWN0LndpZHRoKCk7CiAgICAgcGFpbnRpbmdEYXRhLmhlaWdodCA9IGVmZmVjdERyYXdp
bmdSZWN0LmhlaWdodCgpOwotICAgIHBhaW50aW5nRGF0YS5yYWRpdXNYID0gbWluKGVmZmVjdERy
YXdpbmdSZWN0LndpZHRoKCkgLSAxLCByYWRpdXNYKTsKLSAgICBwYWludGluZ0RhdGEucmFkaXVz
WSA9IG1pbihlZmZlY3REcmF3aW5nUmVjdC5oZWlnaHQoKSAtIDEsIHJhZGl1c1kpOworICAgIHBh
aW50aW5nRGF0YS5yYWRpdXNYID0gc3RkOjptaW4oZWZmZWN0RHJhd2luZ1JlY3Qud2lkdGgoKSAt
IDEsIHJhZGl1c1gpOworICAgIHBhaW50aW5nRGF0YS5yYWRpdXNZID0gc3RkOjptaW4oZWZmZWN0
RHJhd2luZ1JlY3QuaGVpZ2h0KCkgLSAxLCByYWRpdXNZKTsKIAogICAgIHBsYXRmb3JtQXBwbHko
JnBhaW50aW5nRGF0YSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
YWMvTWVtb3J5UHJlc3N1cmVIYW5kbGVyTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWFjL01lbW9yeVByZXNzdXJlSGFuZGxlck1hYy5tbQppbmRleCA3Njk2NGZhMTI3YjBmYzkwYmU2
NTQ3NGRjYjY4NjI1Y2ZkNTc1MWNiLi5lNmU5NmRiMDU4NTU2YWI5YjJmYmE4N2YyZWYxZjRjOWUy
YTYwZGUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvTWVtb3J5UHJl
c3N1cmVIYW5kbGVyTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9NZW1v
cnlQcmVzc3VyZUhhbmRsZXJNYWMubW0KQEAgLTQ0LDggKzQ0LDYgQEAKICNpbXBvcnQgPG5vdGlm
eS5oPgogI2VuZGlmCiAKLXVzaW5nIHN0ZDo6bWF4OwotCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
ICNpZiAhUExBVEZPUk0oSU9TKQpAQCAtMTQwLDcgKzEzOCw3IEBAIHZvaWQgTWVtb3J5UHJlc3N1
cmVIYW5kbGVyOjpyZXNwb25kVG9NZW1vcnlQcmVzc3VyZSgpCiAKICAgICB1bnNpZ25lZCBob2xk
T2ZmVGltZSA9IChtb25vdG9uaWNhbGx5SW5jcmVhc2luZ1RpbWUoKSAtIHN0YXJ0VGltZSkgKiBz
X2hvbGRPZmZNdWx0aXBsaWVyOwogCi0gICAgaG9sZE9mZihtYXgoaG9sZE9mZlRpbWUsIHNfbWlu
aW11bUhvbGRPZmZUaW1lKSk7CisgICAgaG9sZE9mZihzdGQ6Om1heChob2xkT2ZmVGltZSwgc19t
aW5pbXVtSG9sZE9mZlRpbWUpKTsKIH0KICNlbmRpZiAvLyAhUExBVEZPUk0oSU9TKQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1RleHRDb2RlY0lDVS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1RleHRDb2RlY0lDVS5jcHAKaW5kZXggODZkNGVh
MTcyNjU0MjNkNDNjZjNmY2E2MDMwM2RlNDI2NDM5OWJjYS4uYjRiYjM5MDdmNjE0OGMzNDkzZjZh
MTdmYWY5ZTgyMDA3ZTAzNjAxNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
dGV4dC9UZXh0Q29kZWNJQ1UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQv
VGV4dENvZGVjSUNVLmNwcApAQCAtNDAsOCArNDAsNiBAQAogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0
cmluZ0J1aWxkZXIuaD4KICNpbmNsdWRlIDx3dGYvdW5pY29kZS9DaGFyYWN0ZXJOYW1lcy5oPgog
Ci11c2luZyBzdGQ6Om1pbjsKLQogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjb25zdCBzaXplX3Qg
Q29udmVyc2lvbkJ1ZmZlclNpemUgPSAxNjM4NDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9MaW5lV2lkdGguY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0xpbmVX
aWR0aC5jcHAKaW5kZXggNzk4NzUyY2YxYzQwZTdjN2JiMWJmMGJlYTE3MWFiN2Y5MGE3ZjkxNC4u
MjgzMGJiNThlOTFiODEwNDIxMTYzYmQxOWYyMTJlZDM3MjA4YWUyMiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0xpbmVXaWR0aC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL0xpbmVXaWR0aC5jcHAKQEAgLTE4Nyw3ICsxODcsNyBAQCB2b2lkIExpbmVXaWR0
aDo6Zml0QmVsb3dGbG9hdHMoKQogCiAgICAgICAgIG5ld0xpbmVMZWZ0ID0gbV9ibG9jay5sb2dp
Y2FsTGVmdE9mZnNldEZvckxpbmUoZmxvYXRMb2dpY2FsQm90dG9tLCBzaG91bGRJbmRlbnRUZXh0
KCkpOwogICAgICAgICBuZXdMaW5lUmlnaHQgPSBtX2Jsb2NrLmxvZ2ljYWxSaWdodE9mZnNldEZv
ckxpbmUoZmxvYXRMb2dpY2FsQm90dG9tLCBzaG91bGRJbmRlbnRUZXh0KCkpOwotICAgICAgICBu
ZXdMaW5lV2lkdGggPSBtYXgoMC4wZiwgbmV3TGluZVJpZ2h0IC0gbmV3TGluZUxlZnQpOworICAg
ICAgICBuZXdMaW5lV2lkdGggPSBzdGQ6Om1heCgwLjBmLCBuZXdMaW5lUmlnaHQgLSBuZXdMaW5l
TGVmdCk7CiAgICAgICAgIGxhc3RGbG9hdExvZ2ljYWxCb3R0b20gPSBmbG9hdExvZ2ljYWxCb3R0
b207CiAKICNpZiBFTkFCTEUoQ1NTX1NIQVBFUykKQEAgLTIyOSw3ICsyMjksNyBAQCB2b2lkIExp
bmVXaWR0aDo6dXBkYXRlQ3VycmVudFNoYXBlU2VnbWVudCgpCiAKIHZvaWQgTGluZVdpZHRoOjpj
b21wdXRlQXZhaWxhYmxlV2lkdGhGcm9tTGVmdEFuZFJpZ2h0KCkKIHsKLSAgICBtX2F2YWlsYWJs
ZVdpZHRoID0gbWF4KDAuMGYsIG1fcmlnaHQgLSBtX2xlZnQpICsgbV9vdmVyaGFuZ1dpZHRoOwor
ICAgIG1fYXZhaWxhYmxlV2lkdGggPSBzdGQ6Om1heDxmbG9hdD4oMCwgbV9yaWdodCAtIG1fbGVm
dCkgKyBtX292ZXJoYW5nV2lkdGg7CiB9CiAKIGJvb2wgTGluZVdpZHRoOjpmaXRzT25MaW5lRXhj
bHVkaW5nVHJhaWxpbmdDb2xsYXBzZWRXaGl0ZXNwYWNlKCkgY29uc3QKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5oIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckJsb2NrLmgKaW5kZXggZDZlNDQyMjhlM2U3Yzg1YjJjYTc4ZjlkMjhmOWE3
NWNkYTQzODQ2Ni4uZDU4Y2FjMWRlOWMxYzNmYmExOWFmNTQzMzQ1MTAwYmQ1MGM2ZWMzMSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmgKQEAgLTE1Nyw3ICsxNTcsNyBAQCBw
dWJsaWM6CiAgICAgLy8gY29tcHV0ZSB0aGUgcmVnaW9uIGFsbCBvdmVyIGFnYWluIHdoZW4geW91
IGFscmVhZHkga25vdyBpdC4KICAgICBMYXlvdXRVbml0IGF2YWlsYWJsZUxvZ2ljYWxXaWR0aEZv
ckxpbmUoTGF5b3V0VW5pdCBwb3NpdGlvbiwgYm9vbCBzaG91bGRJbmRlbnRUZXh0LCBSZW5kZXJS
ZWdpb24qIHJlZ2lvbiwgTGF5b3V0VW5pdCBsb2dpY2FsSGVpZ2h0ID0gMCkgY29uc3QKICAgICB7
Ci0gICAgICAgIHJldHVybiBtYXg8TGF5b3V0VW5pdD4oMCwgbG9naWNhbFJpZ2h0T2Zmc2V0Rm9y
TGluZShwb3NpdGlvbiwgc2hvdWxkSW5kZW50VGV4dCwgcmVnaW9uLCBsb2dpY2FsSGVpZ2h0KQor
ICAgICAgICByZXR1cm4gc3RkOjptYXg8TGF5b3V0VW5pdD4oMCwgbG9naWNhbFJpZ2h0T2Zmc2V0
Rm9yTGluZShwb3NpdGlvbiwgc2hvdWxkSW5kZW50VGV4dCwgcmVnaW9uLCBsb2dpY2FsSGVpZ2h0
KQogICAgICAgICAgICAgLSBsb2dpY2FsTGVmdE9mZnNldEZvckxpbmUocG9zaXRpb24sIHNob3Vs
ZEluZGVudFRleHQsIHJlZ2lvbiwgbG9naWNhbEhlaWdodCkpOwogICAgIH0KICAgICBMYXlvdXRV
bml0IGxvZ2ljYWxSaWdodE9mZnNldEZvckxpbmUoTGF5b3V0VW5pdCBwb3NpdGlvbiwgYm9vbCBz
aG91bGRJbmRlbnRUZXh0LCBSZW5kZXJSZWdpb24qIHJlZ2lvbiwgTGF5b3V0VW5pdCBsb2dpY2Fs
SGVpZ2h0ID0gMCkgY29uc3QgCkBAIC0zMzMsNyArMzMzLDcgQEAgcHVibGljOgogICAgIExheW91
dFVuaXQgbG9naWNhbFJpZ2h0T2Zmc2V0Rm9yQ29udGVudChSZW5kZXJSZWdpb24qKSBjb25zdDsK
ICAgICBMYXlvdXRVbml0IGF2YWlsYWJsZUxvZ2ljYWxXaWR0aEZvckNvbnRlbnQoUmVuZGVyUmVn
aW9uKiByZWdpb24pIGNvbnN0CiAgICAgeyAKLSAgICAgICAgcmV0dXJuIG1heDxMYXlvdXRVbml0
PigwLCBsb2dpY2FsUmlnaHRPZmZzZXRGb3JDb250ZW50KHJlZ2lvbikgLSBsb2dpY2FsTGVmdE9m
ZnNldEZvckNvbnRlbnQocmVnaW9uKSk7IH0KKyAgICAgICAgcmV0dXJuIHN0ZDo6bWF4PExheW91
dFVuaXQ+KDAsIGxvZ2ljYWxSaWdodE9mZnNldEZvckNvbnRlbnQocmVnaW9uKSAtIGxvZ2ljYWxM
ZWZ0T2Zmc2V0Rm9yQ29udGVudChyZWdpb24pKTsgfQogICAgIExheW91dFVuaXQgc3RhcnRPZmZz
ZXRGb3JDb250ZW50KFJlbmRlclJlZ2lvbiogcmVnaW9uKSBjb25zdAogICAgIHsKICAgICAgICAg
cmV0dXJuIHN0eWxlKCktPmlzTGVmdFRvUmlnaHREaXJlY3Rpb24oKSA/IGxvZ2ljYWxMZWZ0T2Zm
c2V0Rm9yQ29udGVudChyZWdpb24pIDogbG9naWNhbFdpZHRoKCkgLSBsb2dpY2FsUmlnaHRPZmZz
ZXRGb3JDb250ZW50KHJlZ2lvbik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyRmllbGRzZXQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZp
ZWxkc2V0LmNwcAppbmRleCA5NTJkNzVlMDk5ZWVhOTNhNTc1ZjM4ZWQ4MWQ0MmViNzIyMTlkODVl
Li4yMDkxNTgxZDQzNWVjZTEyODNlZjNkMDdiNGNjZWViZTFmZmIwNDEwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRmllbGRzZXQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGaWVsZHNldC5jcHAKQEAgLTMwLDkgKzMwLDYgQEAKICNp
bmNsdWRlICJIVE1MTmFtZXMuaCIKICNpbmNsdWRlICJQYWludEluZm8uaCIKIAotdXNpbmcgc3Rk
OjptaW47Ci11c2luZyBzdGQ6Om1heDsKLQogbmFtZXNwYWNlIFdlYkNvcmUgewogCiB1c2luZyBu
YW1lc3BhY2UgSFRNTE5hbWVzOwpAQCAtNTcsNyArNTQsNyBAQCB2b2lkIFJlbmRlckZpZWxkc2V0
Ojpjb21wdXRlUHJlZmVycmVkTG9naWNhbFdpZHRocygpCiAgICAgICAgIGlmIChsZWdlbmRNYXJn
aW5SaWdodC5pc0ZpeGVkKCkpCiAgICAgICAgICAgICBsZWdlbmRNaW5XaWR0aCArPSBsZWdlbmRN
YXJnaW5SaWdodC52YWx1ZSgpOwogCi0gICAgICAgIG1fbWluUHJlZmVycmVkTG9naWNhbFdpZHRo
ID0gbWF4KG1fbWluUHJlZmVycmVkTG9naWNhbFdpZHRoLCBsZWdlbmRNaW5XaWR0aCArIGJvcmRl
ckFuZFBhZGRpbmdXaWR0aCgpKTsKKyAgICAgICAgbV9taW5QcmVmZXJyZWRMb2dpY2FsV2lkdGgg
PSBzdGQ6Om1heChtX21pblByZWZlcnJlZExvZ2ljYWxXaWR0aCwgbGVnZW5kTWluV2lkdGggKyBi
b3JkZXJBbmRQYWRkaW5nV2lkdGgoKSk7CiAgICAgfQogfQogCkBAIC0xMTcsNyArMTE0LDcgQEAg
UmVuZGVyT2JqZWN0KiBSZW5kZXJGaWVsZHNldDo6bGF5b3V0U3BlY2lhbEV4Y2x1ZGVkQ2hpbGQo
Ym9vbCByZWxheW91dENoaWxkcmVuKQogICAgICAgICAvLyBvbiB0aGUgbGVnZW5kJ3MgbWFyZ2lu
cyBhcyB3ZSB3YW50IHRvIHN0aWxsIGZvbGxvdyB0aGUgYXV0aG9yJ3MgY3Vlcy4KICAgICAgICAg
Ly8gRmlyZWZveCBjb21wbGV0ZWx5IGlnbm9yZXMgdGhlIG1hcmdpbnMgaW4gdGhpcyBjYXNlIHdo
aWNoIHNlZW1zIHdyb25nLgogICAgICAgICBsZWdlbmRMb2dpY2FsVG9wID0gKGZpZWxkc2V0Qm9y
ZGVyQmVmb3JlIC0gbGVnZW5kTG9naWNhbEhlaWdodCkgLyAyOwotICAgICAgICBjb2xsYXBzZWRM
ZWdlbmRFeHRlbnQgPSBtYXg8TGF5b3V0VW5pdD4oZmllbGRzZXRCb3JkZXJCZWZvcmUsIGxlZ2Vu
ZExvZ2ljYWxUb3AgKyBsZWdlbmRMb2dpY2FsSGVpZ2h0ICsgbWFyZ2luQWZ0ZXJGb3JDaGlsZChs
ZWdlbmQpKTsKKyAgICAgICAgY29sbGFwc2VkTGVnZW5kRXh0ZW50ID0gc3RkOjptYXg8TGF5b3V0
VW5pdD4oZmllbGRzZXRCb3JkZXJCZWZvcmUsIGxlZ2VuZExvZ2ljYWxUb3AgKyBsZWdlbmRMb2dp
Y2FsSGVpZ2h0ICsgbWFyZ2luQWZ0ZXJGb3JDaGlsZChsZWdlbmQpKTsKICAgICB9IGVsc2UKICAg
ICAgICAgY29sbGFwc2VkTGVnZW5kRXh0ZW50ID0gbGVnZW5kTG9naWNhbEhlaWdodCArIG1hcmdp
bkFmdGVyRm9yQ2hpbGQobGVnZW5kKTsKIApAQCAtMTc5LDExICsxNzYsMTEgQEAgdm9pZCBSZW5k
ZXJGaWVsZHNldDo6cGFpbnRCb3hEZWNvcmF0aW9ucyhQYWludEluZm8mIHBhaW50SW5mbywgY29u
c3QgTGF5b3V0UG9pbnQKICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9NDcyMzYKICAgICBpZiAoc3R5bGUoKS0+aXNIb3Jpem9udGFsV3JpdGluZ01vZGUoKSkg
ewogICAgICAgICBMYXlvdXRVbml0IGNsaXBUb3AgPSBwYWludFJlY3QueSgpOwotICAgICAgICBM
YXlvdXRVbml0IGNsaXBIZWlnaHQgPSBtYXgoc3RhdGljX2Nhc3Q8TGF5b3V0VW5pdD4oc3R5bGUo
KS0+Ym9yZGVyVG9wV2lkdGgoKSksIGxlZ2VuZC0+aGVpZ2h0KCkgLSAoKGxlZ2VuZC0+aGVpZ2h0
KCkgLSBib3JkZXJUb3AoKSkgLyAyKSk7CisgICAgICAgIExheW91dFVuaXQgY2xpcEhlaWdodCA9
IHN0ZDo6bWF4KHN0YXRpY19jYXN0PExheW91dFVuaXQ+KHN0eWxlKCktPmJvcmRlclRvcFdpZHRo
KCkpLCBsZWdlbmQtPmhlaWdodCgpIC0gKChsZWdlbmQtPmhlaWdodCgpIC0gYm9yZGVyVG9wKCkp
IC8gMikpOwogICAgICAgICBncmFwaGljc0NvbnRleHQtPmNsaXBPdXQocGl4ZWxTbmFwcGVkSW50
UmVjdChwYWludFJlY3QueCgpICsgbGVnZW5kLT54KCksIGNsaXBUb3AsIGxlZ2VuZC0+d2lkdGgo
KSwgY2xpcEhlaWdodCkpOwogICAgIH0gZWxzZSB7CiAgICAgICAgIExheW91dFVuaXQgY2xpcExl
ZnQgPSBwYWludFJlY3QueCgpOwotICAgICAgICBMYXlvdXRVbml0IGNsaXBXaWR0aCA9IG1heChz
dGF0aWNfY2FzdDxMYXlvdXRVbml0PihzdHlsZSgpLT5ib3JkZXJMZWZ0V2lkdGgoKSksIGxlZ2Vu
ZC0+d2lkdGgoKSk7CisgICAgICAgIExheW91dFVuaXQgY2xpcFdpZHRoID0gc3RkOjptYXgoc3Rh
dGljX2Nhc3Q8TGF5b3V0VW5pdD4oc3R5bGUoKS0+Ym9yZGVyTGVmdFdpZHRoKCkpLCBsZWdlbmQt
PndpZHRoKCkpOwogICAgICAgICBncmFwaGljc0NvbnRleHQtPmNsaXBPdXQocGl4ZWxTbmFwcGVk
SW50UmVjdChjbGlwTGVmdCwgcGFpbnRSZWN0LnkoKSArIGxlZ2VuZC0+eSgpLCBjbGlwV2lkdGgs
IGxlZ2VuZC0+aGVpZ2h0KCkpKTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJGbG93VGhyZWFkLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJGbG93VGhyZWFkLmNwcAppbmRleCBhOThkYzkzZWY0YjZjMThmMzY3MDJkNzkxMTRl
OTQ3NmY1NGMxYWIxLi5lYzhkODNkODI0M2E0MDlhNjNhZWI2MTU4ODI3MGViOWZlZmQzYmUzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRmxvd1RocmVhZC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZsb3dUaHJlYWQuY3BwCkBAIC0z
NjgsNyArMzY4LDcgQEAgdm9pZCBSZW5kZXJGbG93VGhyZWFkOjp1cGRhdGVMb2dpY2FsV2lkdGgo
KQogICAgIGZvciAoUmVuZGVyUmVnaW9uTGlzdDo6aXRlcmF0b3IgaXRlciA9IG1fcmVnaW9uTGlz
dC5iZWdpbigpOyBpdGVyICE9IG1fcmVnaW9uTGlzdC5lbmQoKTsgKytpdGVyKSB7CiAgICAgICAg
IFJlbmRlclJlZ2lvbiogcmVnaW9uID0gKml0ZXI7CiAgICAgICAgIEFTU0VSVCghcmVnaW9uLT5u
ZWVkc0xheW91dCgpIHx8IHJlZ2lvbi0+aXNSZW5kZXJSZWdpb25TZXQoKSk7Ci0gICAgICAgIGxv
Z2ljYWxXaWR0aCA9IG1heChyZWdpb24tPnBhZ2VMb2dpY2FsV2lkdGgoKSwgbG9naWNhbFdpZHRo
KTsKKyAgICAgICAgbG9naWNhbFdpZHRoID0gc3RkOjptYXgocmVnaW9uLT5wYWdlTG9naWNhbFdp
ZHRoKCksIGxvZ2ljYWxXaWR0aCk7CiAgICAgfQogICAgIHNldExvZ2ljYWxXaWR0aChsb2dpY2Fs
V2lkdGgpOwogCkBAIC0xMTMyLDcgKzExMzIsNyBAQCBib29sIFJlbmRlckZsb3dUaHJlYWQ6OmFk
ZEZvcmNlZFJlZ2lvbkJyZWFrKGNvbnN0IFJlbmRlckJsb2NrKiBibG9jaywgTGF5b3V0VW5pdAog
ICAgICAgICB1cGRhdGVSZWdpb25zRmxvd1RocmVhZFBvcnRpb25SZWN0KCk7CiAKICAgICBpZiAo
b2Zmc2V0QnJlYWtBZGp1c3RtZW50KQotICAgICAgICAqb2Zmc2V0QnJlYWtBZGp1c3RtZW50ID0g
bWF4PExheW91dFVuaXQ+KDAsIGN1cnJlbnRSZWdpb25PZmZzZXRJbkZsb3dUaHJlYWQgLSBvZmZz
ZXRCcmVha0luRmxvd1RocmVhZCk7CisgICAgICAgICpvZmZzZXRCcmVha0FkanVzdG1lbnQgPSBz
dGQ6Om1heDxMYXlvdXRVbml0PigwLCBjdXJyZW50UmVnaW9uT2Zmc2V0SW5GbG93VGhyZWFkIC0g
b2Zmc2V0QnJlYWtJbkZsb3dUaHJlYWQpOwogCiAgICAgcmV0dXJuIGhhc0NvbXB1dGVkQXV0b0hl
aWdodDsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGcmFt
ZUJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZyYW1lQmFzZS5jcHAK
aW5kZXggODFjMzAwNzI5YThlMGUyY2NhNGY2YmNlZGNhMDg3ZDc2ZGYzOTA1OC4uZjUwNWQzZTYy
YWYyYzRkOWY3NmQ4ZTU5OWRlOWM3NWI0N2U0NDU1OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckZyYW1lQmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckZyYW1lQmFzZS5jcHAKQEAgLTgwLDcgKzgwLDcgQEAgdm9pZCBSZW5kZXJG
cmFtZUJhc2U6OmxheW91dFdpdGhGbGF0dGVuaW5nKGJvb2wgaGFzRml4ZWRXaWR0aCwgYm9vbCBo
YXNGaXhlZEhlaWcKIAogICAgIC8vIG1ha2Ugc3VyZSBtaW5pbXVtIHByZWZlcnJlZCB3aWR0aCBp
cyBlbmZvcmNlZAogICAgIGlmIChpc1Njcm9sbGFibGUgfHwgIWhhc0ZpeGVkV2lkdGgpIHsKLSAg
ICAgICAgc2V0V2lkdGgobWF4KHdpZHRoKCksIGNoaWxkUm9vdC0+bWluUHJlZmVycmVkTG9naWNh
bFdpZHRoKCkgKyBoQm9yZGVyKSk7CisgICAgICAgIHNldFdpZHRoKHN0ZDo6bWF4KHdpZHRoKCks
IGNoaWxkUm9vdC0+bWluUHJlZmVycmVkTG9naWNhbFdpZHRoKCkgKyBoQm9yZGVyKSk7CiAgICAg
ICAgIC8vIHVwZGF0ZSBhZ2FpbiB0byBwYXNzIHRoZSBuZXcgd2lkdGggdG8gdGhlIGNoaWxkIGZy
YW1lCiAgICAgICAgIHVwZGF0ZVdpZGdldFBvc2l0aW9uKCk7CiAgICAgICAgIGNoaWxkRnJhbWVW
aWV3LT5sYXlvdXQoKTsKQEAgLTg4LDkgKzg4LDkgQEAgdm9pZCBSZW5kZXJGcmFtZUJhc2U6Omxh
eW91dFdpdGhGbGF0dGVuaW5nKGJvb2wgaGFzRml4ZWRXaWR0aCwgYm9vbCBoYXNGaXhlZEhlaWcK
IAogICAgIC8vIGV4cGFuZCB0aGUgZnJhbWUgYnkgc2V0dGluZyBmcmFtZSBoZWlnaHQgPSBjb250
ZW50IGhlaWdodAogICAgIGlmIChpc1Njcm9sbGFibGUgfHwgIWhhc0ZpeGVkSGVpZ2h0IHx8IGNo
aWxkUm9vdC0+aXNGcmFtZVNldCgpKQotICAgICAgICBzZXRIZWlnaHQobWF4PExheW91dFVuaXQ+
KGhlaWdodCgpLCBjaGlsZEZyYW1lVmlldy0+Y29udGVudHNIZWlnaHQoKSArIHZCb3JkZXIpKTsK
KyAgICAgICAgc2V0SGVpZ2h0KHN0ZDo6bWF4PExheW91dFVuaXQ+KGhlaWdodCgpLCBjaGlsZEZy
YW1lVmlldy0+Y29udGVudHNIZWlnaHQoKSArIHZCb3JkZXIpKTsKICAgICBpZiAoaXNTY3JvbGxh
YmxlIHx8ICFoYXNGaXhlZFdpZHRoIHx8IGNoaWxkUm9vdC0+aXNGcmFtZVNldCgpKQotICAgICAg
ICBzZXRXaWR0aChtYXg8TGF5b3V0VW5pdD4od2lkdGgoKSwgY2hpbGRGcmFtZVZpZXctPmNvbnRl
bnRzV2lkdGgoKSArIGhCb3JkZXIpKTsKKyAgICAgICAgc2V0V2lkdGgoc3RkOjptYXg8TGF5b3V0
VW5pdD4od2lkdGgoKSwgY2hpbGRGcmFtZVZpZXctPmNvbnRlbnRzV2lkdGgoKSArIGhCb3JkZXIp
KTsKIAogICAgIHVwZGF0ZVdpZGdldFBvc2l0aW9uKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGcmFtZVNldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyRnJhbWVTZXQuY3BwCmluZGV4IDJlNWRiMGNjNDg2OWY1YzM3N2NiOTcwYzJi
ZDU1NjNhMmQ2YTEwN2MuLjA3NWUzMTAwMzBhMDhhYTNjNzZmZmIxYzU0MDk1MGRlYWRkODQyMTEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGcmFtZVNldC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZyYW1lU2V0LmNwcApAQCAtMTcz
LDcgKzE3Myw3IEBAIHZvaWQgUmVuZGVyRnJhbWVTZXQ6OkdyaWRBeGlzOjpyZXNpemUoaW50IHNp
emUpCiAKIHZvaWQgUmVuZGVyRnJhbWVTZXQ6OmxheU91dEF4aXMoR3JpZEF4aXMmIGF4aXMsIGNv
bnN0IExlbmd0aCogZ3JpZCwgaW50IGF2YWlsYWJsZUxlbikKIHsKLSAgICBhdmFpbGFibGVMZW4g
PSBtYXgoYXZhaWxhYmxlTGVuLCAwKTsKKyAgICBhdmFpbGFibGVMZW4gPSBzdGQ6Om1heChhdmFp
bGFibGVMZW4sIDApOwogCiAgICAgaW50KiBncmlkTGF5b3V0ID0gYXhpcy5tX3NpemVzLmRhdGEo
KTsKIApAQCAtMTk4LDcgKzE5OCw3IEBAIHZvaWQgUmVuZGVyRnJhbWVTZXQ6OmxheU91dEF4aXMo
R3JpZEF4aXMmIGF4aXMsIGNvbnN0IExlbmd0aCogZ3JpZCwgaW50IGF2YWlsYWJsCiAgICAgICAg
IC8vIENvdW50IHRoZSB0b3RhbCBsZW5ndGggb2YgYWxsIG9mIHRoZSBmaXhlZCBjb2x1bW5zL3Jv
d3MgLT4gdG90YWxGaXhlZAogICAgICAgICAvLyBDb3VudCB0aGUgbnVtYmVyIG9mIGNvbHVtbnMv
cm93cyB3aGljaCBhcmUgZml4ZWQgLT4gY291bnRGaXhlZAogICAgICAgICBpZiAoZ3JpZFtpXS5p
c0ZpeGVkKCkpIHsKLSAgICAgICAgICAgIGdyaWRMYXlvdXRbaV0gPSBtYXgoZ3JpZFtpXS5pbnRW
YWx1ZSgpLCAwKTsKKyAgICAgICAgICAgIGdyaWRMYXlvdXRbaV0gPSBzdGQ6Om1heChncmlkW2ld
LmludFZhbHVlKCksIDApOwogICAgICAgICAgICAgdG90YWxGaXhlZCArPSBncmlkTGF5b3V0W2ld
OwogICAgICAgICAgICAgY291bnRGaXhlZCsrOwogICAgICAgICB9CkBAIC0yMDYsNyArMjA2LDcg
QEAgdm9pZCBSZW5kZXJGcmFtZVNldDo6bGF5T3V0QXhpcyhHcmlkQXhpcyYgYXhpcywgY29uc3Qg
TGVuZ3RoKiBncmlkLCBpbnQgYXZhaWxhYmwKICAgICAgICAgLy8gQ291bnQgdGhlIHRvdGFsIHBl
cmNlbnRhZ2Ugb2YgYWxsIG9mIHRoZSBwZXJjZW50YWdlIGNvbHVtbnMvcm93cyAtPiB0b3RhbFBl
cmNlbnQKICAgICAgICAgLy8gQ291bnQgdGhlIG51bWJlciBvZiBjb2x1bW5zL3Jvd3Mgd2hpY2gg
YXJlIHBlcmNlbnRhZ2VzIC0+IGNvdW50UGVyY2VudAogICAgICAgICBpZiAoZ3JpZFtpXS5pc1Bl
cmNlbnQoKSkgewotICAgICAgICAgICAgZ3JpZExheW91dFtpXSA9IG1heChpbnRWYWx1ZUZvckxl
bmd0aChncmlkW2ldLCBhdmFpbGFibGVMZW4pLCAwKTsKKyAgICAgICAgICAgIGdyaWRMYXlvdXRb
aV0gPSBzdGQ6Om1heChpbnRWYWx1ZUZvckxlbmd0aChncmlkW2ldLCBhdmFpbGFibGVMZW4pLCAw
KTsKICAgICAgICAgICAgIHRvdGFsUGVyY2VudCArPSBncmlkTGF5b3V0W2ldOwogICAgICAgICAg
ICAgY291bnRQZXJjZW50Kys7CiAgICAgICAgIH0KQEAgLTIxNCw3ICsyMTQsNyBAQCB2b2lkIFJl
bmRlckZyYW1lU2V0OjpsYXlPdXRBeGlzKEdyaWRBeGlzJiBheGlzLCBjb25zdCBMZW5ndGgqIGdy
aWQsIGludCBhdmFpbGFibAogICAgICAgICAvLyBDb3VudCB0aGUgdG90YWwgcmVsYXRpdmUgb2Yg
YWxsIHRoZSByZWxhdGl2ZSBjb2x1bW5zL3Jvd3MgLT4gdG90YWxSZWxhdGl2ZQogICAgICAgICAv
LyBDb3VudCB0aGUgbnVtYmVyIG9mIGNvbHVtbnMvcm93cyB3aGljaCBhcmUgcmVsYXRpdmUgLT4g
Y291bnRSZWxhdGl2ZQogICAgICAgICBpZiAoZ3JpZFtpXS5pc1JlbGF0aXZlKCkpIHsKLSAgICAg
ICAgICAgIHRvdGFsUmVsYXRpdmUgKz0gbWF4KGdyaWRbaV0uaW50VmFsdWUoKSwgMSk7CisgICAg
ICAgICAgICB0b3RhbFJlbGF0aXZlICs9IHN0ZDo6bWF4KGdyaWRbaV0uaW50VmFsdWUoKSwgMSk7
CiAgICAgICAgICAgICBjb3VudFJlbGF0aXZlKys7CiAgICAgICAgIH0gICAgICAgICAgICAKICAg
ICB9CkBAIC0yNTksNyArMjU5LDcgQEAgdm9pZCBSZW5kZXJGcmFtZVNldDo6bGF5T3V0QXhpcyhH
cmlkQXhpcyYgYXhpcywgY29uc3QgTGVuZ3RoKiBncmlkLCBpbnQgYXZhaWxhYmwKIAogICAgICAg
ICBmb3IgKGludCBpID0gMDsgaSA8IGdyaWRMZW47ICsraSkgewogICAgICAgICAgICAgaWYgKGdy
aWRbaV0uaXNSZWxhdGl2ZSgpKSB7Ci0gICAgICAgICAgICAgICAgZ3JpZExheW91dFtpXSA9ICht
YXgoZ3JpZFtpXS5pbnRWYWx1ZSgpLCAxKSAqIHJlbWFpbmluZ1JlbGF0aXZlKSAvIHRvdGFsUmVs
YXRpdmU7CisgICAgICAgICAgICAgICAgZ3JpZExheW91dFtpXSA9IChzdGQ6Om1heChncmlkW2ld
LmludFZhbHVlKCksIDEpICogcmVtYWluaW5nUmVsYXRpdmUpIC8gdG90YWxSZWxhdGl2ZTsKICAg
ICAgICAgICAgICAgICByZW1haW5pbmdMZW4gLT0gZ3JpZExheW91dFtpXTsKICAgICAgICAgICAg
ICAgICBsYXN0UmVsYXRpdmUgPSBpOwogICAgICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNsaWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyU2xpZGVyLmNwcAppbmRleCAxZDk0ODUwOThhNjgyYWE3NDkyZGRkZGQ0MmM0
MjU5MzQ2ZDAwMTQ1Li5iNTA1ODhlNmM1MTgyNThiNmNlOTc1MzZhMGU2OTU2Mzc0NmZhZDRmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU2xpZGVyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU2xpZGVyLmNwcApAQCAtNDMsOCArNDMs
NiBAQAogI2luY2x1ZGUgPHd0Zi9NYXRoRXh0cmFzLmg+CiAjaW5jbHVkZSA8d3RmL1N0YWNrU3Rh
dHMuaD4KIAotdXNpbmcgc3RkOjptaW47Ci0KIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY29uc3Qg
aW50IFJlbmRlclNsaWRlcjo6ZGVmYXVsdFRyYWNrTGVuZ3RoID0gMTI5OwpAQCAtOTQsMTMgKzky
LDEzIEBAIHZvaWQgUmVuZGVyU2xpZGVyOjpjb21wdXRlUHJlZmVycmVkTG9naWNhbFdpZHRocygp
CiAgICAgICAgIGNvbXB1dGVJbnRyaW5zaWNMb2dpY2FsV2lkdGhzKG1fbWluUHJlZmVycmVkTG9n
aWNhbFdpZHRoLCBtX21heFByZWZlcnJlZExvZ2ljYWxXaWR0aCk7CiAKICAgICBpZiAoc3R5bGUo
KS0+bWluV2lkdGgoKS5pc0ZpeGVkKCkgJiYgc3R5bGUoKS0+bWluV2lkdGgoKS52YWx1ZSgpID4g
MCkgewotICAgICAgICBtX21heFByZWZlcnJlZExvZ2ljYWxXaWR0aCA9IG1heChtX21heFByZWZl
cnJlZExvZ2ljYWxXaWR0aCwgYWRqdXN0Q29udGVudEJveExvZ2ljYWxXaWR0aEZvckJveFNpemlu
ZyhzdHlsZSgpLT5taW5XaWR0aCgpLnZhbHVlKCkpKTsKLSAgICAgICAgbV9taW5QcmVmZXJyZWRM
b2dpY2FsV2lkdGggPSBtYXgobV9taW5QcmVmZXJyZWRMb2dpY2FsV2lkdGgsIGFkanVzdENvbnRl
bnRCb3hMb2dpY2FsV2lkdGhGb3JCb3hTaXppbmcoc3R5bGUoKS0+bWluV2lkdGgoKS52YWx1ZSgp
KSk7CisgICAgICAgIG1fbWF4UHJlZmVycmVkTG9naWNhbFdpZHRoID0gc3RkOjptYXgobV9tYXhQ
cmVmZXJyZWRMb2dpY2FsV2lkdGgsIGFkanVzdENvbnRlbnRCb3hMb2dpY2FsV2lkdGhGb3JCb3hT
aXppbmcoc3R5bGUoKS0+bWluV2lkdGgoKS52YWx1ZSgpKSk7CisgICAgICAgIG1fbWluUHJlZmVy
cmVkTG9naWNhbFdpZHRoID0gc3RkOjptYXgobV9taW5QcmVmZXJyZWRMb2dpY2FsV2lkdGgsIGFk
anVzdENvbnRlbnRCb3hMb2dpY2FsV2lkdGhGb3JCb3hTaXppbmcoc3R5bGUoKS0+bWluV2lkdGgo
KS52YWx1ZSgpKSk7CiAgICAgfQogCiAgICAgaWYgKHN0eWxlKCktPm1heFdpZHRoKCkuaXNGaXhl
ZCgpKSB7Ci0gICAgICAgIG1fbWF4UHJlZmVycmVkTG9naWNhbFdpZHRoID0gbWluKG1fbWF4UHJl
ZmVycmVkTG9naWNhbFdpZHRoLCBhZGp1c3RDb250ZW50Qm94TG9naWNhbFdpZHRoRm9yQm94U2l6
aW5nKHN0eWxlKCktPm1heFdpZHRoKCkudmFsdWUoKSkpOwotICAgICAgICBtX21pblByZWZlcnJl
ZExvZ2ljYWxXaWR0aCA9IG1pbihtX21pblByZWZlcnJlZExvZ2ljYWxXaWR0aCwgYWRqdXN0Q29u
dGVudEJveExvZ2ljYWxXaWR0aEZvckJveFNpemluZyhzdHlsZSgpLT5tYXhXaWR0aCgpLnZhbHVl
KCkpKTsKKyAgICAgICAgbV9tYXhQcmVmZXJyZWRMb2dpY2FsV2lkdGggPSBzdGQ6Om1pbihtX21h
eFByZWZlcnJlZExvZ2ljYWxXaWR0aCwgYWRqdXN0Q29udGVudEJveExvZ2ljYWxXaWR0aEZvckJv
eFNpemluZyhzdHlsZSgpLT5tYXhXaWR0aCgpLnZhbHVlKCkpKTsKKyAgICAgICAgbV9taW5QcmVm
ZXJyZWRMb2dpY2FsV2lkdGggPSBzdGQ6Om1pbihtX21pblByZWZlcnJlZExvZ2ljYWxXaWR0aCwg
YWRqdXN0Q29udGVudEJveExvZ2ljYWxXaWR0aEZvckJveFNpemluZyhzdHlsZSgpLT5tYXhXaWR0
aCgpLnZhbHVlKCkpKTsKICAgICB9CiAKICAgICBMYXlvdXRVbml0IHRvQWRkID0gYm9yZGVyQW5k
UGFkZGluZ1dpZHRoKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyVGFibGVDZWxsLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVDZWxs
LmgKaW5kZXggMDExMTZiMmM1MGNhYjkwNmMzNjc0MjU3NzFkNTM2NzkwNDM1NDAyYy4uNWVhMjQ5
ZTI4MjlkODM4NGFhYmMwZDhiMjk5OTQ5ZTg1ZGQ4MDIyNiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlQ2VsbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJUYWJsZUNlbGwuaApAQCAtMTA0LDcgKzEwNCw3IEBAIHB1YmxpYzoKICAg
ICAgICAgLy8gQ2FsbCBjb21wdXRlZENTU1BhZGRpbmcqIGRpcmVjdGx5IHRvIGF2b2lkIGluY2x1
ZGluZyBpbXBsaWNpdFBhZGRpbmcuCiAgICAgICAgIGlmICghZG9jdW1lbnQoKS5pblF1aXJrc01v
ZGUoKSAmJiBzdHlsZSgpLT5ib3hTaXppbmcoKSAhPSBCT1JERVJfQk9YKQogICAgICAgICAgICAg
c3R5bGVMb2dpY2FsSGVpZ2h0ICs9IChjb21wdXRlZENTU1BhZGRpbmdCZWZvcmUoKSArIGNvbXB1
dGVkQ1NTUGFkZGluZ0FmdGVyKCkpLmZsb29yKCkgKyBib3JkZXJCZWZvcmUoKSArIGJvcmRlckFm
dGVyKCk7Ci0gICAgICAgIHJldHVybiBtYXgoc3R5bGVMb2dpY2FsSGVpZ2h0LCBhZGp1c3RlZExv
Z2ljYWxIZWlnaHQpOworICAgICAgICByZXR1cm4gc3RkOjptYXgoc3R5bGVMb2dpY2FsSGVpZ2h0
LCBhZGp1c3RlZExvZ2ljYWxIZWlnaHQpOwogICAgIH0KIAogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVHJlZUFzVGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyVHJlZUFzVGV4dC5jcHAKaW5kZXggN2RmYWY0YmEwZTRkNjg1YWNkNDlh
NzFhMTI2ZjIzM2QwYTk0MGI4YS4uMmIyYmU4MmE3OWIyODFmNjU2NWYxOGRkZmM1YjQ2NmVlODQ3
MjFlYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRyZWVBc1Rl
eHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUcmVlQXNUZXh0LmNw
cApAQCAtNzMwLDggKzczMCw4IEBAIHN0YXRpYyB2b2lkIHdyaXRlTGF5ZXJzKFRleHRTdHJlYW0m
IHRzLCBjb25zdCBSZW5kZXJMYXllciogcm9vdExheWVyLCBSZW5kZXJMYXllCiAgICAgLy8gRklY
TUU6IEFwcGx5IG92ZXJmbG93IHRvIHRoZSByb290IGxheWVyIHRvIG5vdCBicmVhayBldmVyeSB0
ZXN0LiAgQ29tcGxldGUgaGFjay4gIFNpZ2guCiAgICAgTGF5b3V0UmVjdCBwYWludERpcnR5UmVj
dChwYWludFJlY3QpOwogICAgIGlmIChyb290TGF5ZXIgPT0gbCkgewotICAgICAgICBwYWludERp
cnR5UmVjdC5zZXRXaWR0aChtYXg8TGF5b3V0VW5pdD4ocGFpbnREaXJ0eVJlY3Qud2lkdGgoKSwg
cm9vdExheWVyLT5yZW5kZXJCb3goKS0+bGF5b3V0T3ZlcmZsb3dSZWN0KCkubWF4WCgpKSk7Ci0g
ICAgICAgIHBhaW50RGlydHlSZWN0LnNldEhlaWdodChtYXg8TGF5b3V0VW5pdD4ocGFpbnREaXJ0
eVJlY3QuaGVpZ2h0KCksIHJvb3RMYXllci0+cmVuZGVyQm94KCktPmxheW91dE92ZXJmbG93UmVj
dCgpLm1heFkoKSkpOworICAgICAgICBwYWludERpcnR5UmVjdC5zZXRXaWR0aChzdGQ6Om1heDxM
YXlvdXRVbml0PihwYWludERpcnR5UmVjdC53aWR0aCgpLCByb290TGF5ZXItPnJlbmRlckJveCgp
LT5sYXlvdXRPdmVyZmxvd1JlY3QoKS5tYXhYKCkpKTsKKyAgICAgICAgcGFpbnREaXJ0eVJlY3Qu
c2V0SGVpZ2h0KHN0ZDo6bWF4PExheW91dFVuaXQ+KHBhaW50RGlydHlSZWN0LmhlaWdodCgpLCBy
b290TGF5ZXItPnJlbmRlckJveCgpLT5sYXlvdXRPdmVyZmxvd1JlY3QoKS5tYXhZKCkpKTsKICAg
ICAgICAgbC0+c2V0U2l6ZShsLT5zaXplKCkuZXhwYW5kZWRUbyhwaXhlbFNuYXBwZWRJbnRTaXpl
KG1heExheW91dE92ZXJmbG93KGwtPnJlbmRlckJveCgpKSwgTGF5b3V0UG9pbnQoMCwgMCkpKSk7
CiAgICAgfQogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jvb3RJ
bmxpbmVCb3guaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9Sb290SW5saW5lQm94LmgKaW5k
ZXggYTliYjViMTc0NDIyZmFmM2QwMTIwMTFkMGI5YjVhNjdlMDI1YTY1Mi4uZjljYWFmZTgyODBh
OWM5OGI2MzExZjY0YzJlZGU3NDI3Mjc3ZmE5YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1Jvb3RJbmxpbmVCb3guaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
Um9vdElubGluZUJveC5oCkBAIC03MSwxMCArNzEsMTAgQEAgcHVibGljOgogCiAgICAgTGF5b3V0
VW5pdCBzZWxlY3Rpb25Ub3AoKSBjb25zdDsKICAgICBMYXlvdXRVbml0IHNlbGVjdGlvbkJvdHRv
bSgpIGNvbnN0OwotICAgIExheW91dFVuaXQgc2VsZWN0aW9uSGVpZ2h0KCkgY29uc3QgeyByZXR1
cm4gbWF4PExheW91dFVuaXQ+KDAsIHNlbGVjdGlvbkJvdHRvbSgpIC0gc2VsZWN0aW9uVG9wKCkp
OyB9CisgICAgTGF5b3V0VW5pdCBzZWxlY3Rpb25IZWlnaHQoKSBjb25zdCB7IHJldHVybiBzdGQ6
Om1heDxMYXlvdXRVbml0PigwLCBzZWxlY3Rpb25Cb3R0b20oKSAtIHNlbGVjdGlvblRvcCgpKTsg
fQogCiAgICAgTGF5b3V0VW5pdCBzZWxlY3Rpb25Ub3BBZGp1c3RlZEZvclByZWNlZGluZ0Jsb2Nr
KCkgY29uc3Q7Ci0gICAgTGF5b3V0VW5pdCBzZWxlY3Rpb25IZWlnaHRBZGp1c3RlZEZvclByZWNl
ZGluZ0Jsb2NrKCkgY29uc3QgeyByZXR1cm4gbWF4PExheW91dFVuaXQ+KDAsIHNlbGVjdGlvbkJv
dHRvbSgpIC0gc2VsZWN0aW9uVG9wQWRqdXN0ZWRGb3JQcmVjZWRpbmdCbG9jaygpKTsgfQorICAg
IExheW91dFVuaXQgc2VsZWN0aW9uSGVpZ2h0QWRqdXN0ZWRGb3JQcmVjZWRpbmdCbG9jaygpIGNv
bnN0IHsgcmV0dXJuIHN0ZDo6bWF4PExheW91dFVuaXQ+KDAsIHNlbGVjdGlvbkJvdHRvbSgpIC0g
c2VsZWN0aW9uVG9wQWRqdXN0ZWRGb3JQcmVjZWRpbmdCbG9jaygpKTsgfQogCiAgICAgaW50IGJs
b2NrRGlyZWN0aW9uUG9pbnRJbkxpbmUoKSBjb25zdDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxSb3cuY3BwIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxSb3cuY3BwCmluZGV4IGQ2OGVlYWU5MzVk
YTUzYTdmM2QzYjQ5NzE0MjdiZGY2NGZiYmJhMjkuLmQ4ZDQ1ZTNkYmM1ZTYxZGZiNzFhZGM4Zjlm
YWIwZGZlMjBmMWI5MDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRo
bWwvUmVuZGVyTWF0aE1MUm93LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0
aG1sL1JlbmRlck1hdGhNTFJvdy5jcHAKQEAgLTY0LDcgKzY0LDcgQEAgdm9pZCBSZW5kZXJNYXRo
TUxSb3c6OmxheW91dCgpCiAgICAgICAgIGlmIChjaGlsZC0+aXNSZW5kZXJNYXRoTUxCbG9jaygp
ICYmIHRvUmVuZGVyTWF0aE1MQmxvY2soY2hpbGQpLT51bmVtYmVsbGlzaGVkT3BlcmF0b3IoKSkK
ICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICBpZiAoY2hpbGQtPmlzQm94KCkpCi0gICAg
ICAgICAgICBzdHJldGNoTG9naWNhbEhlaWdodCA9IG1heDxpbnQ+KHN0cmV0Y2hMb2dpY2FsSGVp
Z2h0LCByb3VuZFRvSW50KHRvUmVuZGVyQm94KGNoaWxkKS0+bG9naWNhbEhlaWdodCgpKSk7Cisg
ICAgICAgICAgICBzdHJldGNoTG9naWNhbEhlaWdodCA9IHN0ZDo6bWF4PGludD4oc3RyZXRjaExv
Z2ljYWxIZWlnaHQsIHJvdW5kVG9JbnQodG9SZW5kZXJCb3goY2hpbGQpLT5sb2dpY2FsSGVpZ2h0
KCkpKTsKICAgICB9CiAgICAgaWYgKCFzdHJldGNoTG9naWNhbEhlaWdodCkKICAgICAgICAgc3Ry
ZXRjaExvZ2ljYWxIZWlnaHQgPSBzdHlsZSgpLT5mb250U2l6ZSgpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxTY3JpcHRzLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MU2NyaXB0cy5jcHAKaW5k
ZXggYTJkMzMwOTAxMDg4NjM3YTA4OGYxMTFhNjhiNjY2ZWQzNzA2M2YxNy4uM2YwNTdiMjc0ZTQz
NWUzOTYyZjk3NzE3NjlhN2ZkMTM0NDRkNjdkOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxTY3JpcHRzLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFNjcmlwdHMuY3BwCkBAIC0zMTYsOSAr
MzE2LDkgQEAgdm9pZCBSZW5kZXJNYXRoTUxTY3JpcHRzOjpsYXlvdXQoKQogICAgICAgICAgICAg
TGF5b3V0VW5pdCBzdXBlcnNjcmlwdEJhc2VsaW5lID0gc3VwZXJzY3JpcHQtPmZpcnN0TGluZUJh
c2VsaW5lKCk7CiAgICAgICAgICAgICBpZiAoc3VwZXJzY3JpcHRCYXNlbGluZSA9PSAtMSkKICAg
ICAgICAgICAgICAgICBzdXBlcnNjcmlwdEJhc2VsaW5lID0gc3VwZXJzY3JpcHRIZWlnaHQ7Ci0g
ICAgICAgICAgICBMYXlvdXRVbml0IG1pbkJhc2VsaW5lID0gbWF4PExheW91dFVuaXQ+KGZvbnRT
aXplIC8gMyArIDEgKyBzdXBlcnNjcmlwdEJhc2VsaW5lLCBzdXBlcnNjcmlwdEhlaWdodCArIGF4
aXMgKyBzdXBlcnNjcmlwdFNoaWZ0VmFsdWUpOworICAgICAgICAgICAgTGF5b3V0VW5pdCBtaW5C
YXNlbGluZSA9IHN0ZDo6bWF4PExheW91dFVuaXQ+KGZvbnRTaXplIC8gMyArIDEgKyBzdXBlcnNj
cmlwdEJhc2VsaW5lLCBzdXBlcnNjcmlwdEhlaWdodCArIGF4aXMgKyBzdXBlcnNjcmlwdFNoaWZ0
VmFsdWUpOwogCi0gICAgICAgICAgICB0b3BQYWRkaW5nID0gbWF4PExheW91dFVuaXQ+KHRvcFBh
ZGRpbmcsIG1pbkJhc2VsaW5lIC0gYmFzZUJhc2VsaW5lKTsKKyAgICAgICAgICAgIHRvcFBhZGRp
bmcgPSBzdGQ6Om1heDxMYXlvdXRVbml0Pih0b3BQYWRkaW5nLCBtaW5CYXNlbGluZSAtIGJhc2VC
YXNlbGluZSk7CiAgICAgICAgIH0KIAogICAgICAgICBpZiAoUmVuZGVyQm94KiBzdWJzY3JpcHQg
PSBtX2tpbmQgPT0gU3VwZXIgPyAwIDogc3ViU3VwUGFpci0+Zmlyc3RDaGlsZEJveCgpKSB7CkBA
IC0zMjgsOSArMzI4LDkgQEAgdm9pZCBSZW5kZXJNYXRoTUxTY3JpcHRzOjpsYXlvdXQoKQogICAg
ICAgICAgICAgICAgIHN1YnNjcmlwdEJhc2VsaW5lID0gc3Vic2NyaXB0SGVpZ2h0OwogICAgICAg
ICAgICAgTGF5b3V0VW5pdCBiYXNlRXh0ZW5kVW5kZXJCYXNlbGluZSA9IGJhc2VIZWlnaHQgLSBi
YXNlQmFzZWxpbmU7CiAgICAgICAgICAgICBMYXlvdXRVbml0IHN1YnNjcmlwdFVuZGVySXRzQmFz
ZWxpbmUgPSBzdWJzY3JpcHRIZWlnaHQgLSBzdWJzY3JpcHRCYXNlbGluZTsKLSAgICAgICAgICAg
IExheW91dFVuaXQgbWluRXh0ZW5kVW5kZXJCYXNlbGluZSA9IG1heDxMYXlvdXRVbml0Pihmb250
U2l6ZSAvIDUgKyAxICsgc3Vic2NyaXB0VW5kZXJJdHNCYXNlbGluZSwgc3Vic2NyaXB0SGVpZ2h0
ICsgc3Vic2NyaXB0U2hpZnRWYWx1ZSAtIGF4aXMpOworICAgICAgICAgICAgTGF5b3V0VW5pdCBt
aW5FeHRlbmRVbmRlckJhc2VsaW5lID0gc3RkOjptYXg8TGF5b3V0VW5pdD4oZm9udFNpemUgLyA1
ICsgMSArIHN1YnNjcmlwdFVuZGVySXRzQmFzZWxpbmUsIHN1YnNjcmlwdEhlaWdodCArIHN1YnNj
cmlwdFNoaWZ0VmFsdWUgLSBheGlzKTsKIAotICAgICAgICAgICAgYm90dG9tUGFkZGluZyA9IG1h
eDxMYXlvdXRVbml0Pihib3R0b21QYWRkaW5nLCBtaW5FeHRlbmRVbmRlckJhc2VsaW5lIC0gYmFz
ZUV4dGVuZFVuZGVyQmFzZWxpbmUpOworICAgICAgICAgICAgYm90dG9tUGFkZGluZyA9IHN0ZDo6
bWF4PExheW91dFVuaXQ+KGJvdHRvbVBhZGRpbmcsIG1pbkV4dGVuZFVuZGVyQmFzZWxpbmUgLSBi
YXNlRXh0ZW5kVW5kZXJCYXNlbGluZSk7CiAgICAgICAgIH0KICAgICB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5oIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmgKaW5kZXggZTlkN2JlNjgyYWQ1YmU3
N2JlNDdjMWMwNGIwN2ZjY2M5NTVmODM0Zi4uNmEzNDE5ODJiMmJkYzc4NjM1NzBiMWUzOGMxMjg3
Y2IxZWRkYWJmMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1Jl
bmRlclN0eWxlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0
eWxlLmgKQEAgLTEwMyw4ICsxMDMsNiBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBV
PiBpbmxpbmUgYm9vbCBjb21wYXJlRXF1YWwoY29uc3QgVCYgdCwgY29uc3QgVSYgdQogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKLXVzaW5nIHN0ZDo6bWF4OwotCiAjaWYgRU5BQkxFKENTU19GSUxU
RVJTKQogY2xhc3MgRmlsdGVyT3BlcmF0aW9uczsKICNlbmRpZgpAQCAtNTI1LDcgKzUyMyw3IEBA
IHB1YmxpYzoKICAgICB1bnNpZ25lZCBzaG9ydCBib3JkZXJTdGFydFdpZHRoKCkgY29uc3Q7CiAg
ICAgdW5zaWduZWQgc2hvcnQgYm9yZGVyRW5kV2lkdGgoKSBjb25zdDsKIAotICAgIHVuc2lnbmVk
IHNob3J0IG91dGxpbmVTaXplKCkgY29uc3QgeyByZXR1cm4gbWF4KDAsIG91dGxpbmVXaWR0aCgp
ICsgb3V0bGluZU9mZnNldCgpKTsgfQorICAgIHVuc2lnbmVkIHNob3J0IG91dGxpbmVTaXplKCkg
Y29uc3QgeyByZXR1cm4gc3RkOjptYXgoMCwgb3V0bGluZVdpZHRoKCkgKyBvdXRsaW5lT2Zmc2V0
KCkpOyB9CiAgICAgdW5zaWduZWQgc2hvcnQgb3V0bGluZVdpZHRoKCkgY29uc3QKICAgICB7CiAg
ICAgICAgIGlmIChtX2JhY2tncm91bmQtPm91dGxpbmUoKS5zdHlsZSgpID09IEJOT05FKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlR2VuZXJhdGVkSW1h
Z2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlR2VuZXJhdGVkSW1h
Z2UuY3BwCmluZGV4IDI3OGE4NTc3MDIxYTFiMjExODQ1MDAxNGU2M2E5OWEwMmFkNjMxNTMuLmU0
ZmM3MTIwZjlmNjg0NTAyOWFhZmM4Y2U4Yzk5NDljNjNjOWQwMGIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZUdlbmVyYXRlZEltYWdlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVHZW5lcmF0ZWRJbWFnZS5jcHAKQEAg
LTU0LDEwICs1NCwxMCBAQCBMYXlvdXRTaXplIFN0eWxlR2VuZXJhdGVkSW1hZ2U6OmltYWdlU2l6
ZShjb25zdCBSZW5kZXJFbGVtZW50KiByZW5kZXJlciwgZmxvYXQgbQogCiAgICAgICAgIC8vIERv
bid0IGxldCBpbWFnZXMgdGhhdCBoYXZlIGEgd2lkdGgvaGVpZ2h0ID49IDEgc2hyaW5rIGJlbG93
IDEgd2hlbiB6b29tZWQuCiAgICAgICAgIGlmIChmaXhlZFNpemUud2lkdGgoKSA+IDApCi0gICAg
ICAgICAgICB3aWR0aCA9IG1heDxMYXlvdXRVbml0PigxLCB3aWR0aCk7CisgICAgICAgICAgICB3
aWR0aCA9IHN0ZDo6bWF4PExheW91dFVuaXQ+KDEsIHdpZHRoKTsKIAogICAgICAgICBpZiAoZml4
ZWRTaXplLmhlaWdodCgpID4gMCkKLSAgICAgICAgICAgIGhlaWdodCA9IG1heDxMYXlvdXRVbml0
PigxLCBoZWlnaHQpOworICAgICAgICAgICAgaGVpZ2h0ID0gc3RkOjptYXg8TGF5b3V0VW5pdD4o
MSwgaGVpZ2h0KTsKIAogICAgICAgICByZXR1cm4gTGF5b3V0U2l6ZSh3aWR0aCwgaGVpZ2h0KTsK
ICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZUZvbnRTaXplRnVu
Y3Rpb25zLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlRm9udFNpemVGdW5jdGlvbnMu
Y3BwCmluZGV4IDY4ZGRhNzE5OWVhMGIyNjM4YTkwZTUwZTk3NDRlOGFhMTg0YTg5MjguLjBhYjNl
MTYzZmIxYzU1OTJkNjQ1NzMzNjE0NjFiNmM0NTQzMWY1M2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3N0eWxlL1N0eWxlRm9udFNpemVGdW5jdGlvbnMuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3N0eWxlL1N0eWxlRm9udFNpemVGdW5jdGlvbnMuY3BwCkBAIC0xNTcsOCArMTU3LDggQEAg
ZmxvYXQgZm9udFNpemVGb3JLZXl3b3JkKHVuc2lnbmVkIGtleXdvcmRJRCwgYm9vbCBzaG91bGRV
c2VGaXhlZERlZmF1bHRTaXplLCBjb24KICAgICB9CiAKICAgICAvLyBWYWx1ZSBpcyBvdXRzaWRl
IHRoZSByYW5nZSBvZiB0aGUgdGFibGUuIEFwcGx5IHRoZSBzY2FsZSBmYWN0b3IgaW5zdGVhZC4K
LSAgICBmbG9hdCBtaW5Mb2dpY2FsU2l6ZSA9IG1heChzZXR0aW5ncy0+bWluaW11bUxvZ2ljYWxG
b250U2l6ZSgpLCAxKTsKLSAgICByZXR1cm4gbWF4KGZvbnRTaXplRmFjdG9yc1trZXl3b3JkSUQg
LSBDU1NWYWx1ZVh4U21hbGxdICogbWVkaXVtU2l6ZSwgbWluTG9naWNhbFNpemUpOworICAgIGZs
b2F0IG1pbkxvZ2ljYWxTaXplID0gc3RkOjptYXgoc2V0dGluZ3MtPm1pbmltdW1Mb2dpY2FsRm9u
dFNpemUoKSwgMSk7CisgICAgcmV0dXJuIHN0ZDo6bWF4KGZvbnRTaXplRmFjdG9yc1trZXl3b3Jk
SUQgLSBDU1NWYWx1ZVh4U21hbGxdICogbWVkaXVtU2l6ZSwgbWluTG9naWNhbFNpemUpOwogfQog
CiB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NW
R1NWR0VsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1NWR0VsZW1lbnQuY3BwCmlu
ZGV4IGE0MGI5NTk2YzkyNzM3MGU4ZWU4OGFlZDE4ZjVjNjkyNjM5NjAwNGYuLjg1YjhhNjNkMzVl
NDMwYjQ1OTY4MWRkN2U1NWEzMWExNzhhYjMyOTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdTVkdFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU1ZHRWxl
bWVudC5jcHAKQEAgLTUzNSw3ICs1MzUsNyBAQCB2b2lkIFNWR1NWR0VsZW1lbnQ6OnNldEN1cnJl
bnRUaW1lKGZsb2F0IHNlY29uZHMpCiB7CiAgICAgaWYgKHN0ZDo6aXNuYW4oc2Vjb25kcykpCiAg
ICAgICAgIHJldHVybjsKLSAgICBzZWNvbmRzID0gbWF4KHNlY29uZHMsIDAuMGYpOworICAgIHNl
Y29uZHMgPSBzdGQ6Om1heChzZWNvbmRzLCAwLjBmKTsKICAgICBtX3RpbWVDb250YWluZXItPnNl
dEVsYXBzZWQoc2Vjb25kcyk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dl
YlZpZXcvV2ViRnJhbWVWaWV3Lm1tIGIvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJGcmFt
ZVZpZXcubW0KaW5kZXggNmNlMGYzYTI3YTM1ZjMwYTliOWI5NmE3ZGVjODIyYjhiZDUxNWRmMS4u
ZjlmYzEzOTIwODMzNjBkYzU4NjcwNzVmNmUwYzYyYjdiMDA2MmIwMSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJGcmFtZVZpZXcubW0KKysrIGIvU291cmNlL1dlYktp
dC9tYWMvV2ViVmlldy9XZWJGcmFtZVZpZXcubW0KQEAgLTIxNiw3ICsyMTYsNyBAQCBlbnVtIHsK
IC0gKGZsb2F0KV92ZXJ0aWNhbFBhZ2VTY3JvbGxEaXN0YW5jZQogewogICAgIGZsb2F0IGhlaWdo
dCA9IFtbc2VsZiBfY29udGVudFZpZXddIGJvdW5kc10uc2l6ZS5oZWlnaHQ7Ci0gICAgcmV0dXJu
IG1heDxmbG9hdD4oaGVpZ2h0ICogU2Nyb2xsYmFyOjptaW5GcmFjdGlvblRvU3RlcFdoZW5QYWdp
bmcoKSwgaGVpZ2h0IC0gU2Nyb2xsYmFyOjptYXhPdmVybGFwQmV0d2VlblBhZ2VzKCkpOworICAg
IHJldHVybiBzdGQ6Om1heDxmbG9hdD4oaGVpZ2h0ICogU2Nyb2xsYmFyOjptaW5GcmFjdGlvblRv
U3RlcFdoZW5QYWdpbmcoKSwgaGVpZ2h0IC0gU2Nyb2xsYmFyOjptYXhPdmVybGFwQmV0d2VlblBh
Z2VzKCkpOwogfQogCiBzdGF0aWMgaW5saW5lIHZvaWQgYWRkVHlwZXNGcm9tQ2xhc3MoTlNNdXRh
YmxlRGljdGlvbmFyeSAqYWxsVHlwZXMsIENsYXNzIG9iakNDbGFzcywgTlNBcnJheSAqc3VwcG9y
dFR5cGVzKQpAQCAtNjk4LDcgKzY5OCw3IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBhZGRUeXBlc0Zy
b21DbGFzcyhOU011dGFibGVEaWN0aW9uYXJ5ICphbGxUeXBlcywgQ2xhc3Mgb2JqQ0NsCiAtIChm
bG9hdClfaG9yaXpvbnRhbFBhZ2VTY3JvbGxEaXN0YW5jZQogewogICAgIGZsb2F0IHdpZHRoID0g
W1tzZWxmIF9jb250ZW50Vmlld10gYm91bmRzXS5zaXplLndpZHRoOwotICAgIHJldHVybiBtYXg8
ZmxvYXQ+KHdpZHRoICogU2Nyb2xsYmFyOjptaW5GcmFjdGlvblRvU3RlcFdoZW5QYWdpbmcoKSwg
d2lkdGggLSBTY3JvbGxiYXI6Om1heE92ZXJsYXBCZXR3ZWVuUGFnZXMoKSk7CisgICAgcmV0dXJu
IHN0ZDo6bWF4PGZsb2F0Pih3aWR0aCAqIFNjcm9sbGJhcjo6bWluRnJhY3Rpb25Ub1N0ZXBXaGVu
UGFnaW5nKCksIHdpZHRoIC0gU2Nyb2xsYmFyOjptYXhPdmVybGFwQmV0d2VlblBhZ2VzKCkpOwog
fQogCiAtIChCT09MKV9wYWdlVmVydGljYWxseTooQk9PTCl1cApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9tYWMvV2ViVmlldy9XZWJIVE1MVmlldy5tbSBiL1NvdXJjZS9XZWJLaXQvbWFjL1dl
YlZpZXcvV2ViSFRNTFZpZXcubW0KaW5kZXggZWI1YjExODFlY2JkODJiNGVlYzIwYmQzYzRkNThk
MzE0ZWY2MGY4NS4uNDBkMWFjNTI4Yzk3N2MzYzE5ZjJhNzFlYzk2ZGU3YmVhODM0YjQ5NyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJIVE1MVmlldy5tbQorKysgYi9T
b3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkhUTUxWaWV3Lm1tCkBAIC0zOTg0LDcgKzM5ODQs
NyBAQCBzdGF0aWMgUGFzc1JlZlB0cjxLZXlib2FyZEV2ZW50PiBjdXJyZW50S2V5Ym9hcmRFdmVu
dChGcmFtZSogY29yZUZyYW1lKQogICAgIGZsb2F0IHVzZXJTY2FsZUZhY3RvciA9IFtwcmludE9w
ZXJhdGlvbiBfd2ViX3BhZ2VTZXR1cFNjYWxlRmFjdG9yXTsKICAgICBmbG9hdCBtYXhTaHJpbmtU
b0ZpdFNjYWxlRmFjdG9yID0gMS4wZiAvIF9XZWJIVE1MVmlld1ByaW50aW5nTWF4aW11bVNocmlu
a0ZhY3RvcjsKICAgICBmbG9hdCBzaHJpbmtUb0ZpdFNjYWxlRmFjdG9yID0gKHVzZVZpZXdXaWR0
aCA/IFtwcmludE9wZXJhdGlvbiBfd2ViX2F2YWlsYWJsZVBhcGVyV2lkdGhdIDogIFtwcmludE9w
ZXJhdGlvbiBfd2ViX2F2YWlsYWJsZVBhcGVySGVpZ2h0XSkgLyB2aWV3TG9naWNhbFdpZHRoOwot
ICAgIHJldHVybiB1c2VyU2NhbGVGYWN0b3IgKiBtYXgobWF4U2hyaW5rVG9GaXRTY2FsZUZhY3Rv
ciwgc2hyaW5rVG9GaXRTY2FsZUZhY3Rvcik7CisgICAgcmV0dXJuIHVzZXJTY2FsZUZhY3RvciAq
IHN0ZDo6bWF4KG1heFNocmlua1RvRml0U2NhbGVGYWN0b3IsIHNocmlua1RvRml0U2NhbGVGYWN0
b3IpOwogfQogCiAvLyBGSVhNRSAzNDkxMzQ0OiBUaGlzIGlzIGEgc2VjcmV0IEFwcEtpdC1pbnRl
cm5hbCBtZXRob2QgdGhhdCB3ZSBuZWVkIHRvIG92ZXJyaWRlIGluIG9yZGVyCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0L21h
Yy9XZWJWaWV3L1dlYlZpZXcubW0KaW5kZXggNzUwYzc5YWZjMmEwZWY4ZWRjY2IxYmY2MDA0ZDMx
OTZhZTQ0ODgxNi4uMTk1NTljYmQ5YTlhNzkzNDFkODQ1OTZkZGFlZjE5YmUzMjk4MzRkYSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCisrKyBiL1NvdXJj
ZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQpAQCAtNjA3MSw3ICs2MDcxLDcgQEAgc3Rh
dGljIGlubGluZSB1aW50NjRfdCByb3VuZFVwVG9Qb3dlck9mMih1aW50NjRfdCBudW0pCiAKICAg
ICAgICAgLy8gVGhpcyBjb2RlIGlzIGhlcmUgdG8gYXZvaWQgYSBQTFQgcmVncmVzc2lvbi4gV2Ug
Y2FuIHJlbW92ZSBpdCBpZiB3ZQogICAgICAgICAvLyBjYW4gcHJvdmUgdGhhdCB0aGUgb3ZlcmFs
bCBzeXN0ZW0gZ2FpbiB3b3VsZCBqdXN0aWZ5IHRoZSByZWdyZXNzaW9uLgotICAgICAgICBjYWNo
ZU1heERlYWRDYXBhY2l0eSA9IG1heCgyNHUsIGNhY2hlTWF4RGVhZENhcGFjaXR5KTsKKyAgICAg
ICAgY2FjaGVNYXhEZWFkQ2FwYWNpdHkgPSBzdGQ6Om1heDx1bnNpZ25lZD4oMjQsIGNhY2hlTWF4
RGVhZENhcGFjaXR5KTsKIAogICAgICAgICBkZWFkRGVjb2RlZERhdGFEZWxldGlvbkludGVydmFs
ID0gNjA7CiAKQEAgLTYxMDgsNyArNjEwOCw3IEBAIHN0YXRpYyBpbmxpbmUgdWludDY0X3Qgcm91
bmRVcFRvUG93ZXJPZjIodWludDY0X3QgbnVtKQogCiAKICAgICAvLyBEb24ndCBzaHJpbmsgYSBi
aWcgZGlzayBjYWNoZSwgc2luY2UgdGhhdCB3b3VsZCBjYXVzZSBjaHVybi4KLSAgICBuc3VybENh
Y2hlRGlza0NhcGFjaXR5ID0gbWF4KG5zdXJsQ2FjaGVEaXNrQ2FwYWNpdHksIFtuc3VybENhY2hl
IGRpc2tDYXBhY2l0eV0pOworICAgIG5zdXJsQ2FjaGVEaXNrQ2FwYWNpdHkgPSBzdGQ6Om1heChu
c3VybENhY2hlRGlza0NhcGFjaXR5LCBbbnN1cmxDYWNoZSBkaXNrQ2FwYWNpdHldKTsKIAogICAg
IG1lbW9yeUNhY2hlKCktPnNldENhcGFjaXRpZXMoY2FjaGVNaW5EZWFkQ2FwYWNpdHksIGNhY2hl
TWF4RGVhZENhcGFjaXR5LCBjYWNoZVRvdGFsQ2FwYWNpdHkpOwogICAgIG1lbW9yeUNhY2hlKCkt
PnNldERlYWREZWNvZGVkRGF0YURlbGV0aW9uSW50ZXJ2YWwoZGVhZERlY29kZWREYXRhRGVsZXRp
b25JbnRlcnZhbCk7CkBAIC02MTM1LDcgKzYxMzUsNyBAQCBzdGF0aWMgaW5saW5lIHVpbnQ2NF90
IHJvdW5kVXBUb1Bvd2VyT2YyKHVpbnQ2NF90IG51bSkKICAgICBXZWJDYWNoZU1vZGVsIGNhY2hl
TW9kZWwgPSBXZWJDYWNoZU1vZGVsRG9jdW1lbnRWaWV3ZXI7CiAgICAgTlNFbnVtZXJhdG9yICpl
bnVtZXJhdG9yID0gWyhOU011dGFibGVTZXQgKilhbGxXZWJWaWV3c1NldCBvYmplY3RFbnVtZXJh
dG9yXTsKICAgICB3aGlsZSAoV2ViUHJlZmVyZW5jZXMgKnByZWZlcmVuY2VzID0gW1tlbnVtZXJh
dG9yIG5leHRPYmplY3RdIHByZWZlcmVuY2VzXSkKLSAgICAgICAgY2FjaGVNb2RlbCA9IG1heChj
YWNoZU1vZGVsLCBbcHJlZmVyZW5jZXMgY2FjaGVNb2RlbF0pOworICAgICAgICBjYWNoZU1vZGVs
ID0gc3RkOjptYXgoY2FjaGVNb2RlbCwgW3ByZWZlcmVuY2VzIGNhY2hlTW9kZWxdKTsKICAgICBy
ZXR1cm4gY2FjaGVNb2RlbDsKIH0KIApAQCAtNjE0OCw3ICs2MTQ4LDcgQEAgc3RhdGljIGlubGlu
ZSB1aW50NjRfdCByb3VuZFVwVG9Qb3dlck9mMih1aW50NjRfdCBudW0pCiAgICAgaWYgKCFbc2Vs
ZiBfZGlkU2V0Q2FjaGVNb2RlbF0gfHwgY2FjaGVNb2RlbCA+IFtzZWxmIF9jYWNoZU1vZGVsXSkK
ICAgICAgICAgW3NlbGYgX3NldENhY2hlTW9kZWw6Y2FjaGVNb2RlbF07CiAgICAgZWxzZSBpZiAo
Y2FjaGVNb2RlbCA8IFtzZWxmIF9jYWNoZU1vZGVsXSkKLSAgICAgICAgW3NlbGYgX3NldENhY2hl
TW9kZWw6bWF4KFtbV2ViUHJlZmVyZW5jZXMgc3RhbmRhcmRQcmVmZXJlbmNlc10gY2FjaGVNb2Rl
bF0sIFtzZWxmIF9tYXhDYWNoZU1vZGVsSW5BbnlJbnN0YW5jZV0pXTsKKyAgICAgICAgW3NlbGYg
X3NldENhY2hlTW9kZWw6c3RkOjptYXgoW1tXZWJQcmVmZXJlbmNlcyBzdGFuZGFyZFByZWZlcmVu
Y2VzXSBjYWNoZU1vZGVsXSwgW3NlbGYgX21heENhY2hlTW9kZWxJbkFueUluc3RhbmNlXSldOwog
fQogCiArICh2b2lkKV9wcmVmZXJlbmNlc1JlbW92ZWROb3RpZmljYXRpb246KE5TTm90aWZpY2F0
aW9uICopbm90aWZpY2F0aW9uCkBAIC02MTU3LDcgKzYxNTcsNyBAQCBzdGF0aWMgaW5saW5lIHVp
bnQ2NF90IHJvdW5kVXBUb1Bvd2VyT2YyKHVpbnQ2NF90IG51bSkKICAgICBBU1NFUlQoW3ByZWZl
cmVuY2VzIGlzS2luZE9mQ2xhc3M6W1dlYlByZWZlcmVuY2VzIGNsYXNzXV0pOwogCiAgICAgaWYg
KFtwcmVmZXJlbmNlcyBjYWNoZU1vZGVsXSA9PSBbc2VsZiBfY2FjaGVNb2RlbF0pCi0gICAgICAg
IFtzZWxmIF9zZXRDYWNoZU1vZGVsOm1heChbW1dlYlByZWZlcmVuY2VzIHN0YW5kYXJkUHJlZmVy
ZW5jZXNdIGNhY2hlTW9kZWxdLCBbc2VsZiBfbWF4Q2FjaGVNb2RlbEluQW55SW5zdGFuY2VdKV07
CisgICAgICAgIFtzZWxmIF9zZXRDYWNoZU1vZGVsOnN0ZDo6bWF4KFtbV2ViUHJlZmVyZW5jZXMg
c3RhbmRhcmRQcmVmZXJlbmNlc10gY2FjaGVNb2RlbF0sIFtzZWxmIF9tYXhDYWNoZU1vZGVsSW5B
bnlJbnN0YW5jZV0pXTsKIH0KIAogLSAoV2ViRnJhbWUgKilfZm9jdXNlZEZyYW1lCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>215070</attachid>
            <date>2013-10-24 09:16:13 -0700</date>
            <delta_ts>2013-10-24 09:24:19 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-123273-20131024091611.patch</filename>
            <type>text/plain</type>
            <size>183297</size>
            <attacher name="Anders Carlsson">andersca</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTU3OTI2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjA1YzkyNTBmYTZjODUz
ZDhhOTlkZDViOTNmYTA2ZDNkNTAzZTAyZC4uNWJhOWJmZGE1ZjgxNmViMDQwMzg5NDhjNjM5NDE1
YjBmMGYzOWJhZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI5MSBAQAorMjAxMy0xMC0yNCAgQW5k
ZXJzIENhcmxzc29uICA8YW5kZXJzY2FAYXBwbGUuY29tPgorCisgICAgICAgIFN0b3AgYnJpbmdp
bmcgaW4gdGhlIHN0ZCBuYW1lc3BhY2UKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTEyMzI3MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9BdWRpb0J1ZmZlclNvdXJjZU5vZGUu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9CdWZmZXJTb3VyY2VOb2RlOjpyZW5kZXJGcm9t
QnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvQnVmZmVyU291cmNlTm9kZTo6c3RhcnRH
cmFpbik6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb0J1ZmZlclNvdXJjZU5vZGU6OnRvdGFsUGl0
Y2hSYXRlKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvTm9kZUlucHV0LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvTm9kZUlucHV0OjpudW1iZXJPZkNoYW5uZWxzKToKKyAg
ICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvUGFyYW1UaW1lbGluZS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpBdWRpb1BhcmFtVGltZWxpbmU6OnZhbHVlc0ZvclRpbWVSYW5nZUltcGwpOgor
ICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vQXVkaW9TY2hlZHVsZWRTb3VyY2VOb2RlLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvU2NoZWR1bGVkU291cmNlTm9kZTo6dXBkYXRlU2NoZWR1
bGluZ0luZm8pOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9TY2hlZHVsZWRTb3VyY2VOb2RlOjpz
dG9wKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvU3VtbWluZ0p1bmN0aW9uLmNw
cDoKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL0RlbGF5RFNQS2VybmVsLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkRlbGF5RFNQS2VybmVsOjpwcm9jZXNzKToKKyAgICAgICAgKiBNb2R1bGVz
L3dlYmF1ZGlvL09mZmxpbmVBdWRpb0Rlc3RpbmF0aW9uTm9kZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpPZmZsaW5lQXVkaW9EZXN0aW5hdGlvbk5vZGU6Om9mZmxpbmVSZW5kZXIpOgorICAgICAg
ICAqIE1vZHVsZXMvd2ViYXVkaW8vT3NjaWxsYXRvck5vZGUuY3BwOgorICAgICAgICAqIE1vZHVs
ZXMvd2ViYXVkaW8vUGFubmVyTm9kZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQYW5uZXJOb2Rl
Ojpkb3BwbGVyUmF0ZSk6CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9XYXZlU2hhcGVyRFNQ
S2VybmVsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldhdmVTaGFwZXJEU1BLZXJuZWw6OnByb2Nl
c3NDdXJ2ZSk6CisgICAgICAgICogTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZVRyYWNrZXIu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6RGF0YWJhc2VUcmFja2VyOjpoYXNBZGVxdWF0ZVF1b3Rh
Rm9yT3JpZ2luKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OnNhdHVyYXRlQWRkKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYnNv
Y2tldHMvV2ViU29ja2V0Q2hhbm5lbC5jcHA6CisgICAgICAgICogTW9kdWxlcy93ZWJzb2NrZXRz
L1dlYlNvY2tldEZyYW1lLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tldEZyYW1lOjpw
YXJzZUZyYW1lKToKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlBUklBR3Jp
ZC5jcHA6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5QVJJQUdyaWRDZWxs
LmNwcDoKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlBUklBR3JpZFJvdy5j
cHA6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5TGlzdC5jcHA6CisgICAg
ICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5TGlzdEJveC5jcHA6CisgICAgICAgICog
YWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5TGlzdEJveE9wdGlvbi5jcHA6CisgICAgICAgICog
YWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdC5jcHA6CisgICAgICAgICogYWNj
ZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmNwcDoKKyAgICAgICAgKiBhY2Nlc3NpYmls
aXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3BwOgorICAgICAgICAqIGFjY2Vzc2liaWxp
dHkvQWNjZXNzaWJpbGl0eVRhYmxlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxp
dHlUYWJsZTo6YWRkQ2hpbGRyZW4pOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJp
bGl0eVRhYmxlQ2VsbC5jcHA6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5
VGFibGVDb2x1bW4uY3BwOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRh
YmxlSGVhZGVyQ29udGFpbmVyLmNwcDoKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2li
aWxpdHlUYWJsZVJvdy5jcHA6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNz
aWJpbGl0eU9iamVjdFdyYXBwZXJCYXNlLm1tOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvbWFj
L1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyTWFjLm1tOgorICAgICAgICAoLVtXZWJBY2Nl
c3NpYmlsaXR5T2JqZWN0V3JhcHBlciBhY2Nlc3NpYmlsaXR5QXJyYXlBdHRyaWJ1dGVWYWx1ZXM6
aW5kZXg6bWF4Q291bnQ6XSk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNDU1NTdHlsZURlY2xh
cmF0aW9uQ3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTQ1NTU3R5bGVEZWNsYXJhdGlv
bjo6Z2V0T3duUHJvcGVydHlOYW1lcyk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNHZW9sb2Nh
dGlvbkN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpzZXRUaW1lb3V0KToKKyAgICAgICAg
KFdlYkNvcmU6OnNldE1heGltdW1BZ2UpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL1NjcmlwdENv
bnRyb2xsZXIuY3BwOgorICAgICAgICAqIGJpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1
ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjp3cml0ZUxpdHRsZUVuZGlhbik6CisgICAgICAgIChX
ZWJDb3JlOjpDbG9uZVNlcmlhbGl6ZXI6OndyaXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkNsb25l
RGVzZXJpYWxpemVyOjpkZXNlcmlhbGl6ZSk6CisgICAgICAgIChXZWJDb3JlOjpDbG9uZURlc2Vy
aWFsaXplcjo6cmVhZFN0cmluZyk6CisgICAgICAgICogY3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNs
YXJhdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb21wdXRlZFN0eWxlRXh0cmFjdG9yOjpw
cm9wZXJ0eVZhbHVlKToKKyAgICAgICAgKiBjc3MvQ1NTRm9udFNlbGVjdG9yLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkNTU0ZvbnRTZWxlY3Rvcjo6Z2V0Rm9udEZhY2UpOgorICAgICAgICAqIGNz
cy9DU1NHcmFkaWVudFZhbHVlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU1JhZGlhbEdyYWRp
ZW50VmFsdWU6OmNyZWF0ZUdyYWRpZW50KToKKyAgICAgICAgKiBjc3MvQ1NTUGFyc2VyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlcjo6cGFyc2VWYWx1ZSk6CisgICAgICAgIChXZWJD
b3JlOjpDU1NQYXJzZXI6OnBhcnNlQ29sb3JQYXJhbWV0ZXJzKToKKyAgICAgICAgKFdlYkNvcmU6
OkNTU1BhcnNlcjo6cGFyc2VIU0xQYXJhbWV0ZXJzKToKKyAgICAgICAgKiBjc3MvQ1NTUmVmbGVj
dFZhbHVlLmNwcDoKKyAgICAgICAgKiBjc3MvRGVwcmVjYXRlZFN0eWxlQnVpbGRlci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpBcHBseVByb3BlcnR5Rm9udFNpemU6OmFwcGx5VmFsdWUpOgorICAg
ICAgICAqIGNzcy9Qcm9wZXJ0eVNldENTU1N0eWxlRGVjbGFyYXRpb24uY3BwOgorICAgICAgICAq
IGNzcy9TVkdDU1NQYXJzZXIuY3BwOgorICAgICAgICAqIGNzcy9TdHlsZVByb3BlcnR5U2V0LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlUHJvcGVydHlTZXQ6OmdldExheWVyZWRTaG9ydGhh
bmRWYWx1ZSk6CisgICAgICAgICogY3NzL1N0eWxlUmVzb2x2ZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6U3R5bGVSZXNvbHZlcjo6dmlld3BvcnRQZXJjZW50YWdlVmFsdWUpOgorICAgICAgICAq
IGRvbS9DaGFyYWN0ZXJEYXRhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNoYXJhY3RlckRhdGE6
OnBhcnNlckFwcGVuZERhdGEpOgorICAgICAgICAqIGRvbS9Db250YWluZXJOb2RlLmNwcDoKKyAg
ICAgICAgKiBkb20vRG9jdW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6Om1p
bmltdW1MYXlvdXREZWxheSk6CisgICAgICAgICogZG9tL05vZGUuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6Tm9kZTo6Y29tcGFyZURvY3VtZW50UG9zaXRpb24pOgorICAgICAgICAqIGRvbS9SYW5n
ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSYW5nZTo6dG9TdHJpbmcpOgorICAgICAgICAoV2Vi
Q29yZTo6UmFuZ2U6OnRleHRSZWN0cyk6CisgICAgICAgIChXZWJDb3JlOjpSYW5nZTo6dGV4dFF1
YWRzKToKKyAgICAgICAgKiBkb20vU2NyaXB0ZWRBbmltYXRpb25Db250cm9sbGVyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlNjcmlwdGVkQW5pbWF0aW9uQ29udHJvbGxlcjo6c2NoZWR1bGVBbmlt
YXRpb24pOgorICAgICAgICAqIGRvbS9TdHlsZWRFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlN0eWxlZEVsZW1lbnQ6Om1ha2VQcmVzZW50YXRpb25BdHRyaWJ1dGVDYWNoZUtleSk6Cisg
ICAgICAgICogZG9tL1RleHQuY3BwOgorICAgICAgICAqIGRvbS9WaWV3cG9ydEFyZ3VtZW50cy5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpjbGFtcExlbmd0aFZhbHVlKToKKyAgICAgICAgKFdlYkNv
cmU6OmNsYW1wU2NhbGVWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpWaWV3cG9ydEFyZ3VtZW50
czo6cmVzb2x2ZSk6CisgICAgICAgIChXZWJDb3JlOjpjb21wdXRlTWluaW11bVNjYWxlRmFjdG9y
Rm9yQ29udGVudENvbnRhaW5lZCk6CisgICAgICAgIChXZWJDb3JlOjpyZXN0cmljdE1pbmltdW1T
Y2FsZUZhY3RvclRvVmlld3BvcnRTaXplKToKKyAgICAgICAgKiBlZGl0aW5nL0FsdGVybmF0aXZl
VGV4dENvbnRyb2xsZXIuY3BwOgorICAgICAgICAqIGVkaXRpbmcvQXBwbHlTdHlsZUNvbW1hbmQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6QXBwbHlTdHlsZUNvbW1hbmQ6OmFwcGx5UmVsYXRpdmVG
b250U3R5bGVDaGFuZ2UpOgorICAgICAgICAqIGVkaXRpbmcvQ29tcG9zaXRlRWRpdENvbW1hbmQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29tcG9zaXRlRWRpdENvbW1hbmQ6OmRlbGV0ZUluc2ln
bmlmaWNhbnRUZXh0KToKKyAgICAgICAgKiBlZGl0aW5nL0VkaXRvci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpFZGl0b3I6OnNldENvbXBvc2l0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRv
cjo6Y29tcG9zaXRpb25SYW5nZSk6CisgICAgICAgICogZWRpdGluZy9FZGl0b3JDb21tYW5kLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OnZlcnRpY2FsU2Nyb2xsRGlzdGFuY2UpOgorICAgICAgICAq
IGVkaXRpbmcvVGV4dEl0ZXJhdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRleHRJdGVyYXRv
cjo6aGFuZGxlVGV4dE5vZGUpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dEl0ZXJhdG9yOjpoYW5k
bGVUZXh0Qm94KToKKyAgICAgICAgKFdlYkNvcmU6OkNoYXJhY3Rlckl0ZXJhdG9yOjpzdHJpbmcp
OgorICAgICAgICAoV2ViQ29yZTo6U2VhcmNoQnVmZmVyOjpTZWFyY2hCdWZmZXIpOgorICAgICAg
ICAoV2ViQ29yZTo6U2VhcmNoQnVmZmVyOjphcHBlbmQpOgorICAgICAgICAoV2ViQ29yZTo6U2Vh
cmNoQnVmZmVyOjpwcmVwZW5kQ29udGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpTZWFyY2hCdWZm
ZXI6OnNlYXJjaCk6CisgICAgICAgICogZWRpdGluZy9WaXNpYmxlVW5pdHMuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6c3RhcnRPZlBhcmFncmFwaCk6CisgICAgICAgICogZWRpdGluZy9odG1sZWRp
dGluZy5jcHA6CisgICAgICAgICogZWRpdGluZy9tYXJrdXAuY3BwOgorICAgICAgICAqIGZpbGVh
cGkvRmlsZVJlYWRlckxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGaWxlUmVhZGVyTG9h
ZGVyOjpkaWRSZWNlaXZlUmVzcG9uc2UpOgorICAgICAgICAoV2ViQ29yZTo6RmlsZVJlYWRlckxv
YWRlcjo6ZGlkUmVjZWl2ZURhdGEpOgorICAgICAgICAqIGhpc3RvcnkvQmFja0ZvcndhcmRMaXN0
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkJhY2tGb3J3YXJkTGlzdDo6YmFja0xpc3RXaXRoTGlt
aXQpOgorICAgICAgICAoV2ViQ29yZTo6QmFja0ZvcndhcmRMaXN0Ojpmb3J3YXJkTGlzdFdpdGhM
aW1pdCk6CisgICAgICAgICogaGlzdG9yeS9QYWdlQ2FjaGUuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6UGFnZUNhY2hlOjpzZXRDYXBhY2l0eSk6CisgICAgICAgICogaHRtbC9CYXNlRGF0ZUFuZFRp
bWVJbnB1dFR5cGUuY3BwOgorICAgICAgICAqIGh0bWwvRlRQRGlyZWN0b3J5RG9jdW1lbnQuY3Bw
OgorICAgICAgICAqIGh0bWwvSFRNTEFyZWFFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkhUTUxBcmVhRWxlbWVudDo6Z2V0UmVnaW9uKToKKyAgICAgICAgKiBodG1sL0hUTUxFbGVtZW50
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpwYXJzZUNvbG9yU3RyaW5nV2l0aENyYXp5TGVnYWN5UnVsZXMpOgor
ICAgICAgICAqIGh0bWwvSFRNTEZvcm1Db250cm9sRWxlbWVudC5jcHA6CisgICAgICAgICogaHRt
bC9IVE1MRm9ybUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEZvcm1FbGVtZW50
OjpnZXRUZXh0RmllbGRWYWx1ZXMpOgorICAgICAgICAqIGh0bWwvSFRNTEltYWdlRWxlbWVudC5j
cHA6CisgICAgICAgICogaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcDoKKyAgICAgICAgKiBodG1s
L0hUTUxNYXBFbGVtZW50LmNwcDoKKyAgICAgICAgKiBodG1sL0hUTUxNZWRpYUVsZW1lbnQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6SFRNTE1lZGlhRWxlbWVudCk6
CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50Ojp1cGRhdGVBY3RpdmVUZXh0VHJh
Y2tDdWVzKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OnRleHRUcmFja0Fk
ZEN1ZSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50Ojp0ZXh0VHJhY2tSZW1v
dmVDdWUpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6cmV3aW5kKToKKyAg
ICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OnNlZWspOgorICAgICAgICAoV2ViQ29y
ZTo6SFRNTE1lZGlhRWxlbWVudDo6ZHVyYXRpb24pOgorICAgICAgICAqIGh0bWwvSFRNTFNlbGVj
dEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFNlbGVjdEVsZW1lbnQ6OnBhcnNl
QXR0cmlidXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxTZWxlY3RFbGVtZW50Ojp1cGRhdGVM
aXN0Qm94U2VsZWN0aW9uKToKKyAgICAgICAgKiBodG1sL0hUTUxTb3VyY2VFbGVtZW50LmNwcDoK
KyAgICAgICAgKiBodG1sL0hUTUxUYWJsZUNlbGxFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkhUTUxUYWJsZUNlbGxFbGVtZW50Ojpjb2xTcGFuKToKKyAgICAgICAgKFdlYkNvcmU6OkhU
TUxUYWJsZUNlbGxFbGVtZW50Ojpyb3dTcGFuKToKKyAgICAgICAgKiBodG1sL0hUTUxUYWJsZUVs
ZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRhYmxlRWxlbWVudDo6cGFyc2VBdHRy
aWJ1dGUpOgorICAgICAgICAqIGh0bWwvSFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQ6OnNldFNlbGVjdGlv
blN0YXJ0KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50Ojpz
ZXRTZWxlY3Rpb25FbmQpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRleHRGb3JtQ29udHJvbEVs
ZW1lbnQ6OnNlbGVjdCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVGV4dEZvcm1Db250cm9sRWxl
bWVudDo6c2V0U2VsZWN0aW9uUmFuZ2UpOgorICAgICAgICAqIGh0bWwvSFRNTFRyYWNrRWxlbWVu
dC5jcHA6CisgICAgICAgICogaHRtbC9JbWFnZURvY3VtZW50LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkltYWdlRG9jdW1lbnQ6OnNjYWxlKToKKyAgICAgICAgKiBodG1sL0lucHV0VHlwZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpJbnB1dFR5cGU6OnZhbHVlQXNEb3VibGUpOgorICAgICAgICAq
IGh0bWwvTWVkaWFDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKE1lZGlhQ29udHJvbGxlcjo6ZHVy
YXRpb24pOgorICAgICAgICAoTWVkaWFDb250cm9sbGVyOjpjdXJyZW50VGltZSk6CisgICAgICAg
IChNZWRpYUNvbnRyb2xsZXI6OnNldEN1cnJlbnRUaW1lKToKKyAgICAgICAgKE1lZGlhQ29udHJv
bGxlcjo6dXBkYXRlUmVhZHlTdGF0ZSk6CisgICAgICAgICogaHRtbC9OdW1iZXJJbnB1dFR5cGUu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6TnVtYmVySW5wdXRUeXBlOjpzZXRWYWx1ZUFzRG91Ymxl
KToKKyAgICAgICAgKFdlYkNvcmU6Ok51bWJlcklucHV0VHlwZTo6c2V0VmFsdWVBc0RlY2ltYWwp
OgorICAgICAgICAoV2ViQ29yZTo6TnVtYmVySW5wdXRUeXBlOjpjcmVhdGVTdGVwUmFuZ2UpOgor
ICAgICAgICAqIGh0bWwvUmFuZ2VJbnB1dFR5cGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmFu
Z2VJbnB1dFR5cGU6OmhhbmRsZUtleWRvd25FdmVudCk6CisgICAgICAgICogaHRtbC9TZWFyY2hJ
bnB1dFR5cGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2VhcmNoSW5wdXRUeXBlOjpzdGFydFNl
YXJjaEV2ZW50VGltZXIpOgorICAgICAgICAqIGh0bWwvU3RlcFJhbmdlLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlN0ZXBSYW5nZTo6Y2xhbXBWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpTdGVw
UmFuZ2U6OnBhcnNlU3RlcCk6CisgICAgICAgICogaHRtbC9UaW1lUmFuZ2VzLmNwcDoKKyAgICAg
ICAgKiBodG1sL1ZhbGlkYXRpb25NZXNzYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlZhbGlk
YXRpb25NZXNzYWdlOjpzZXRNZXNzYWdlRE9NQW5kU3RhcnRUaW1lcik6CisgICAgICAgIChXZWJD
b3JlOjphZGp1c3RCdWJibGVQb3NpdGlvbik6CisgICAgICAgICogaHRtbC9jYW52YXMvQ2FudmFz
UmVuZGVyaW5nQ29udGV4dDJELmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Om5vcm1hbGl6ZVJlY3Qp
OgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OnZhbGlkYXRlSW5kZXhBcnJheUNv
bnNlcnZhdGl2ZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OnZh
bGlkYXRlQ29tcHJlc3NlZFRleEZ1bmNEYXRhKToKKyAgICAgICAgKiBodG1sL3NoYWRvdy9NZWRp
YUNvbnRyb2xFbGVtZW50cy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUNvbnRyb2xSZXdp
bmRCdXR0b25FbGVtZW50OjpkZWZhdWx0RXZlbnRIYW5kbGVyKToKKyAgICAgICAgKiBodG1sL3No
YWRvdy9NZWRpYUNvbnRyb2xzQXBwbGUuY3BwOgorICAgICAgICAqIGh0bWwvc2hhZG93L1NsaWRl
clRodW1iRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTbGlkZXJUaHVtYkVsZW1lbnQ6
OnNldFBvc2l0aW9uRnJvbVBvaW50KToKKyAgICAgICAgKiBpbnNwZWN0b3IvQ29udGVudFNlYXJj
aFV0aWxzLmNwcDoKKyAgICAgICAgKiBpbnNwZWN0b3IvRE9NRWRpdG9yLmNwcDoKKyAgICAgICAg
KiBpbnNwZWN0b3IvRE9NUGF0Y2hTdXBwb3J0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRPTVBh
dGNoU3VwcG9ydDo6ZGlmZik6CisgICAgICAgICogaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0SG9z
dC5jcHA6CisgICAgICAgICogbG9hZGVyL1Byb2dyZXNzVHJhY2tlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpQcm9ncmVzc1RyYWNrZXI6OmluY3JlbWVudFByb2dyZXNzKToKKyAgICAgICAgKiBs
b2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuY3BwOgorICAgICAgICAqIHBhZ2UvRE9NV2luZG93LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkRPTVdpbmRvdzo6YWRqdXN0V2luZG93UmVjdCk6CisgICAg
ICAgICogcGFnZS9FdmVudEhhbmRsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWF4aW11bUR1
cmF0aW9uVHJhY2tlcjo6fk1heGltdW1EdXJhdGlvblRyYWNrZXIpOgorICAgICAgICAqIHBhZ2Uv
RnJhbWVUcmVlLmNwcDoKKyAgICAgICAgKiBwYWdlL0ZyYW1lVmlldy5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpGcmFtZVZpZXc6OmFkanVzdGVkRGVmZXJyZWRSZXBhaW50RGVsYXkpOgorICAgICAg
ICAoV2ViQ29yZTo6RnJhbWVWaWV3OjphdXRvU2l6ZUlmRW5hYmxlZCk6CisgICAgICAgICogcGFn
ZS9QcmludENvbnRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UHJpbnRDb250ZXh0Ojpjb21w
dXRlQXV0b21hdGljU2NhbGVGYWN0b3IpOgorICAgICAgICAqIHBhZ2UvU3BhdGlhbE5hdmlnYXRp
b24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6ZW50cnlBbmRFeGl0UG9pbnRzRm9yRGlyZWN0aW9u
KToKKyAgICAgICAgKiBwYWdlL2FuaW1hdGlvbi9DU1NQcm9wZXJ0eUFuaW1hdGlvbi5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpibGVuZEZpbHRlck9wZXJhdGlvbnMpOgorICAgICAgICAoV2ViQ29y
ZTo6UHJvcGVydHlXcmFwcGVyU2hhZG93OjpibGVuZE1pc21hdGNoZWRTaGFkb3dMaXN0cyk6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvRmxvYXRSZWN0LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkZsb2F0UmVjdDo6RmxvYXRSZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OkZsb2F0UmVjdDo6
aW50ZXJzZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OkZsb2F0UmVjdDo6dW5pdGVFdmVuSWZFbXB0
eSk6CisgICAgICAgIChXZWJDb3JlOjpGbG9hdFJlY3Q6OmV4dGVuZCk6CisgICAgICAgIChXZWJD
b3JlOjpGbG9hdFJlY3Q6OmZpdFRvUG9pbnRzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9HbHlwaFBhZ2VUcmVlTm9kZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHbHlwaFBhZ2VUcmVl
Tm9kZTo6aW5pdGlhbGl6ZVBhZ2UpOgorICAgICAgICAoV2ViQ29yZTo6R2x5cGhQYWdlVHJlZU5v
ZGU6OmdldENoaWxkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9JbnRSZWN0LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkludFJlY3Q6OmludGVyc2VjdCk6CisgICAgICAgIChXZWJDb3Jl
OjpJbnRSZWN0Ojp1bml0ZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnRSZWN0Ojp1bml0ZUlmTm9u
WmVybyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvTGF5b3V0UmVjdC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpMYXlvdXRSZWN0OjppbnRlcnNlY3QpOgorICAgICAgICAoV2ViQ29yZTo6
TGF5b3V0UmVjdDo6dW5pdGUpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0UmVjdDo6dW5pdGVJ
Zk5vblplcm8pOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVNb3JwaG9s
b2d5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZFTW9ycGhvbG9neTo6cGxhdGZvcm1BcHBseUdl
bmVyaWMpOgorICAgICAgICAoV2ViQ29yZTo6RkVNb3JwaG9sb2d5OjpwbGF0Zm9ybUFwcGx5U29m
dHdhcmUpOgorICAgICAgICAqIHBsYXRmb3JtL21hYy9NZW1vcnlQcmVzc3VyZUhhbmRsZXJNYWMu
bW06CisgICAgICAgIChXZWJDb3JlOjpNZW1vcnlQcmVzc3VyZUhhbmRsZXI6OnJlc3BvbmRUb01l
bW9yeVByZXNzdXJlKToKKyAgICAgICAgKiBwbGF0Zm9ybS90ZXh0L1RleHRDb2RlY0lDVS5jcHA6
CisgICAgICAgICogcmVuZGVyaW5nL0xpbmVXaWR0aC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpM
aW5lV2lkdGg6OmZpdEJlbG93RmxvYXRzKToKKyAgICAgICAgKFdlYkNvcmU6OkxpbmVXaWR0aDo6
Y29tcHV0ZUF2YWlsYWJsZVdpZHRoRnJvbUxlZnRBbmRSaWdodCk6CisgICAgICAgICogcmVuZGVy
aW5nL1JlbmRlckJsb2NrLmg6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9jazo6YXZhaWxh
YmxlTG9naWNhbFdpZHRoRm9yTGluZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9jazo6
YXZhaWxhYmxlTG9naWNhbFdpZHRoRm9yQ29udGVudCk6CisgICAgICAgICogcmVuZGVyaW5nL1Jl
bmRlckZpZWxkc2V0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckZpZWxkc2V0Ojpjb21w
dXRlUHJlZmVycmVkTG9naWNhbFdpZHRocyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJGaWVs
ZHNldDo6bGF5b3V0U3BlY2lhbEV4Y2x1ZGVkQ2hpbGQpOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyRmllbGRzZXQ6OnBhaW50Qm94RGVjb3JhdGlvbnMpOgorICAgICAgICAqIHJlbmRlcmluZy9S
ZW5kZXJGbG93VGhyZWFkLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckZsb3dUaHJlYWQ6
OnVwZGF0ZUxvZ2ljYWxXaWR0aCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJGbG93VGhyZWFk
OjphZGRGb3JjZWRSZWdpb25CcmVhayk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckZyYW1l
QmFzZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJGcmFtZUJhc2U6OmxheW91dFdpdGhG
bGF0dGVuaW5nKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyRnJhbWVTZXQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyRnJhbWVTZXQ6OmxheU91dEF4aXMpOgorICAgICAgICAqIHJl
bmRlcmluZy9SZW5kZXJTbGlkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU2xpZGVy
Ojpjb21wdXRlUHJlZmVycmVkTG9naWNhbFdpZHRocyk6CisgICAgICAgICogcmVuZGVyaW5nL1Jl
bmRlclRhYmxlQ2VsbC5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUcmVlQXNUZXh0LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OndyaXRlTGF5ZXJzKToKKyAgICAgICAgKiByZW5kZXJpbmcv
Um9vdElubGluZUJveC5oOgorICAgICAgICAoV2ViQ29yZTo6Um9vdElubGluZUJveDo6c2VsZWN0
aW9uSGVpZ2h0KToKKyAgICAgICAgKFdlYkNvcmU6OlJvb3RJbmxpbmVCb3g6OnNlbGVjdGlvbkhl
aWdodEFkanVzdGVkRm9yUHJlY2VkaW5nQmxvY2spOgorICAgICAgICAqIHJlbmRlcmluZy9tYXRo
bWwvUmVuZGVyTWF0aE1MUm93LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck1hdGhNTFJv
dzo6bGF5b3V0KToKKyAgICAgICAgKiByZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFNjcmlw
dHMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTWF0aE1MU2NyaXB0czo6bGF5b3V0KToK
KyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuaDoKKyAgICAgICAgKiByZW5k
ZXJpbmcvc3R5bGUvU3R5bGVHZW5lcmF0ZWRJbWFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpT
dHlsZUdlbmVyYXRlZEltYWdlOjppbWFnZVNpemUpOgorICAgICAgICAqIHN0eWxlL1N0eWxlRm9u
dFNpemVGdW5jdGlvbnMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGU6OmZvbnRTaXplRm9y
S2V5d29yZCk6CisgICAgICAgICogc3ZnL1NWR1NWR0VsZW1lbnQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6U1ZHU1ZHRWxlbWVudDo6c2V0Q3VycmVudFRpbWUpOgorCiAyMDEzLTEwLTI0ICBQZXRl
ciBNb2xuYXIgIDxwbW9sbmFyLnUtc3plZ2VkQHBhcnRuZXIuc2Ftc3VuZy5jb20+CiAKICAgICAg
ICAgUmVtb3ZlZCBRdCB3b3JrYXJvdW5kLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMv
Q2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCmluZGV4IDk5M2FhYmNkNDcx
NjNmZTNjZjc5N2JkYjMwMDZhYjZmY2M0NmFlNjYuLjBjYjdkZjVmNDZlZDhiMTYwNTQwM2U0Mzhi
ZWIwNWZmMGQ5M2EwZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwor
KysgYi9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMSBAQAorMjAxMy0x
MC0yNCAgQW5kZXJzIENhcmxzc29uICA8YW5kZXJzY2FAYXBwbGUuY29tPgorCisgICAgICAgIFN0
b3AgYnJpbmdpbmcgaW4gdGhlIHN0ZCBuYW1lc3BhY2UKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyMzI3MworCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViVmlldy9XZWJGcmFtZVZpZXcubW06CisgICAg
ICAgICgtW1dlYkZyYW1lVmlldyBfdmVydGljYWxQYWdlU2Nyb2xsRGlzdGFuY2VdKToKKyAgICAg
ICAgKC1bV2ViRnJhbWVWaWV3IF9ob3Jpem9udGFsUGFnZVNjcm9sbERpc3RhbmNlXSk6CisgICAg
ICAgICogV2ViVmlldy9XZWJIVE1MVmlldy5tbToKKyAgICAgICAgKC1bV2ViSFRNTFZpZXcgX3Nj
YWxlRmFjdG9yRm9yUHJpbnRPcGVyYXRpb246XSk6CisgICAgICAgICogV2ViVmlldy9XZWJWaWV3
Lm1tOgorICAgICAgICAoK1tXZWJWaWV3IF9zZXRDYWNoZU1vZGVsOl0pOgorICAgICAgICAoK1tX
ZWJWaWV3IF9tYXhDYWNoZU1vZGVsSW5BbnlJbnN0YW5jZV0pOgorICAgICAgICAoK1tXZWJWaWV3
IF9jYWNoZU1vZGVsQ2hhbmdlZE5vdGlmaWNhdGlvbjpdKToKKyAgICAgICAgKCtbV2ViVmlldyBf
cHJlZmVyZW5jZXNSZW1vdmVkTm90aWZpY2F0aW9uOl0pOgorCiAyMDEzLTEwLTIyICBEZWFuIEph
Y2tzb24gIDxkaW5vQGFwcGxlLmNvbT4KIAogICAgICAgICBbV2ViR0xdIEltcGxlbWVudCBhIHNv
ZnR3YXJlIHJlbmRlcmluZyBvcHRpb24gb24gTWFjCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggZTIzNmY0N2M1NjQw
YzI1Yzc4NTBlZDc1NTYyZjZjYjQyMjVlOTU1NS4uN2U5YzE4YTQwMzQ3NWEwOTRjNDk2YzhjZTI1
M2U5YmM0ZWRjMjA5OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBACisyMDEzLTEwLTI0ICBB
bmRlcnMgQ2FybHNzb24gIDxhbmRlcnNjYUBhcHBsZS5jb20+CisKKyAgICAgICAgU3RvcCBicmlu
Z2luZyBpbiB0aGUgc3RkIG5hbWVzcGFjZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTIzMjczCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL21hYy9XZWJQcm9jZXNzTWFjLm1tOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzOjpwbGF0Zm9ybVNldENhY2hlTW9kZWwpOgorCiAyMDEz
LTEwLTIzICBDaGFuZ1Nlb2sgT2ggIDxjaGFuZ3Nlb2sub2hAY29sbGFib3JhLmNvbT4KIAogICAg
ICAgICBVbnJldmlld2VkIGJ1aWxkIGZpeCBzaW5jZSByMTU3ODIzLgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0J1ZmZlclNvdXJjZU5vZGUuY3BwIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0J1ZmZlclNvdXJjZU5vZGUuY3Bw
CmluZGV4IDliZWMzNDdhYmJmZjE0ZDFkYzAwODRjZWNjNDNjM2M2ZjI1N2JiMzYuLmEzMDdjYWM4
ZmQxMTNjYWQ0YTFiNjNmMmM2ZTU1NzUxN2Q5NWFmMmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9CdWZmZXJTb3VyY2VOb2RlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQnVmZmVyU291cmNlTm9kZS5jcHAKQEAg
LTQwLDggKzQwLDYgQEAKICNpbmNsdWRlIDx3dGYvTWF0aEV4dHJhcy5oPgogI2luY2x1ZGUgPHd0
Zi9TdGRMaWJFeHRyYXMuaD4KIAotdXNpbmcgbmFtZXNwYWNlIHN0ZDsKLQogbmFtZXNwYWNlIFdl
YkNvcmUgewogCiBjb25zdCBkb3VibGUgRGVmYXVsdEdyYWluRHVyYXRpb24gPSAwLjAyMDsgLy8g
MjBtcwpAQCAtMjMxLDcgKzIyOSw3IEBAIGJvb2wgQXVkaW9CdWZmZXJTb3VyY2VOb2RlOjpyZW5k
ZXJGcm9tQnVmZmVyKEF1ZGlvQnVzKiBidXMsIHVuc2lnbmVkIGRlc3RpbmF0aW9uCiAgICAgICAg
IGRvdWJsZSBsb29wU3RhcnRGcmFtZSA9IG1fbG9vcFN0YXJ0ICogYnVmZmVyKCktPnNhbXBsZVJh
dGUoKTsKICAgICAgICAgZG91YmxlIGxvb3BFbmRGcmFtZSA9IG1fbG9vcEVuZCAqIGJ1ZmZlcigp
LT5zYW1wbGVSYXRlKCk7CiAKLSAgICAgICAgdmlydHVhbEVuZEZyYW1lID0gbWluKGxvb3BFbmRG
cmFtZSwgdmlydHVhbEVuZEZyYW1lKTsKKyAgICAgICAgdmlydHVhbEVuZEZyYW1lID0gc3RkOjpt
aW4obG9vcEVuZEZyYW1lLCB2aXJ0dWFsRW5kRnJhbWUpOwogICAgICAgICB2aXJ0dWFsRGVsdGFG
cmFtZXMgPSB2aXJ0dWFsRW5kRnJhbWUgLSBsb29wU3RhcnRGcmFtZTsKICAgICB9CiAKQEAgLTI2
MSw4ICsyNTksOCBAQCBib29sIEF1ZGlvQnVmZmVyU291cmNlTm9kZTo6cmVuZGVyRnJvbUJ1ZmZl
cihBdWRpb0J1cyogYnVzLCB1bnNpZ25lZCBkZXN0aW5hdGlvbgogICAgICAgICBlbmRGcmFtZSA9
IHN0YXRpY19jYXN0PHVuc2lnbmVkPih2aXJ0dWFsRW5kRnJhbWUpOwogICAgICAgICB3aGlsZSAo
ZnJhbWVzVG9Qcm9jZXNzID4gMCkgewogICAgICAgICAgICAgaW50IGZyYW1lc1RvRW5kID0gZW5k
RnJhbWUgLSByZWFkSW5kZXg7Ci0gICAgICAgICAgICBpbnQgZnJhbWVzVGhpc1RpbWUgPSBtaW4o
ZnJhbWVzVG9Qcm9jZXNzLCBmcmFtZXNUb0VuZCk7Ci0gICAgICAgICAgICBmcmFtZXNUaGlzVGlt
ZSA9IG1heCgwLCBmcmFtZXNUaGlzVGltZSk7CisgICAgICAgICAgICBpbnQgZnJhbWVzVGhpc1Rp
bWUgPSBzdGQ6Om1pbihmcmFtZXNUb1Byb2Nlc3MsIGZyYW1lc1RvRW5kKTsKKyAgICAgICAgICAg
IGZyYW1lc1RoaXNUaW1lID0gc3RkOjptYXgoMCwgZnJhbWVzVGhpc1RpbWUpOwogCiAgICAgICAg
ICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbnVtYmVyT2ZDaGFubmVsczsgKytpKSAKICAg
ICAgICAgICAgICAgICBtZW1jcHkoZGVzdGluYXRpb25DaGFubmVsc1tpXSArIHdyaXRlSW5kZXgs
IHNvdXJjZUNoYW5uZWxzW2ldICsgcmVhZEluZGV4LCBzaXplb2YoZmxvYXQpICogZnJhbWVzVGhp
c1RpbWUpOwpAQCAtMzk4LDggKzM5Niw4IEBAIHZvaWQgQXVkaW9CdWZmZXJTb3VyY2VOb2RlOjpz
dGFydEdyYWluKGRvdWJsZSB3aGVuLCBkb3VibGUgZ3JhaW5PZmZzZXQsIGRvdWJsZSBnCiAgICAg
Ly8gRG8gc2FuaXR5IGNoZWNraW5nIG9mIGdyYWluIHBhcmFtZXRlcnMgdmVyc3VzIGJ1ZmZlciBz
aXplLgogICAgIGRvdWJsZSBidWZmZXJEdXJhdGlvbiA9IGJ1ZmZlcigpLT5kdXJhdGlvbigpOwog
Ci0gICAgZ3JhaW5PZmZzZXQgPSBtYXgoMC4wLCBncmFpbk9mZnNldCk7Ci0gICAgZ3JhaW5PZmZz
ZXQgPSBtaW4oYnVmZmVyRHVyYXRpb24sIGdyYWluT2Zmc2V0KTsKKyAgICBncmFpbk9mZnNldCA9
IHN0ZDo6bWF4KDAuMCwgZ3JhaW5PZmZzZXQpOworICAgIGdyYWluT2Zmc2V0ID0gc3RkOjptaW4o
YnVmZmVyRHVyYXRpb24sIGdyYWluT2Zmc2V0KTsKICAgICBtX2dyYWluT2Zmc2V0ID0gZ3JhaW5P
ZmZzZXQ7CiAKICAgICAvLyBIYW5kbGUgZGVmYXVsdC91bnNwZWNpZmllZCBkdXJhdGlvbi4KQEAg
LTQwNyw4ICs0MDUsOCBAQCB2b2lkIEF1ZGlvQnVmZmVyU291cmNlTm9kZTo6c3RhcnRHcmFpbihk
b3VibGUgd2hlbiwgZG91YmxlIGdyYWluT2Zmc2V0LCBkb3VibGUgZwogICAgIGlmICghZ3JhaW5E
dXJhdGlvbikKICAgICAgICAgZ3JhaW5EdXJhdGlvbiA9IG1heER1cmF0aW9uOwogCi0gICAgZ3Jh
aW5EdXJhdGlvbiA9IG1heCgwLjAsIGdyYWluRHVyYXRpb24pOwotICAgIGdyYWluRHVyYXRpb24g
PSBtaW4obWF4RHVyYXRpb24sIGdyYWluRHVyYXRpb24pOworICAgIGdyYWluRHVyYXRpb24gPSBz
dGQ6Om1heCgwLjAsIGdyYWluRHVyYXRpb24pOworICAgIGdyYWluRHVyYXRpb24gPSBzdGQ6Om1p
bihtYXhEdXJhdGlvbiwgZ3JhaW5EdXJhdGlvbik7CiAgICAgbV9ncmFpbkR1cmF0aW9uID0gZ3Jh
aW5EdXJhdGlvbjsKIAogICAgIG1faXNHcmFpbiA9IHRydWU7CkBAIC00NDcsMTAgKzQ0NSwxMCBA
QCBkb3VibGUgQXVkaW9CdWZmZXJTb3VyY2VOb2RlOjp0b3RhbFBpdGNoUmF0ZSgpCiAgICAgZG91
YmxlIHRvdGFsUmF0ZSA9IGRvcHBsZXJSYXRlICogc2FtcGxlUmF0ZUZhY3RvciAqIGJhc2VQaXRj
aFJhdGU7CiAKICAgICAvLyBTYW5pdHkgY2hlY2sgdGhlIHRvdGFsIHJhdGUuICBJdCdzIHZlcnkg
aW1wb3J0YW50IHRoYXQgdGhlIHJlc2FtcGxlciBub3QgZ2V0IGFueSBiYWQgcmF0ZSB2YWx1ZXMu
Ci0gICAgdG90YWxSYXRlID0gbWF4KDAuMCwgdG90YWxSYXRlKTsKKyAgICB0b3RhbFJhdGUgPSBz
dGQ6Om1heCgwLjAsIHRvdGFsUmF0ZSk7CiAgICAgaWYgKCF0b3RhbFJhdGUpCiAgICAgICAgIHRv
dGFsUmF0ZSA9IDE7IC8vIHplcm8gcmF0ZSBpcyBjb25zaWRlcmVkIGlsbGVnYWwKLSAgICB0b3Rh
bFJhdGUgPSBtaW4oTWF4UmF0ZSwgdG90YWxSYXRlKTsKKyAgICB0b3RhbFJhdGUgPSBzdGQ6Om1p
bihNYXhSYXRlLCB0b3RhbFJhdGUpOwogICAgIAogICAgIGJvb2wgaXNUb3RhbFJhdGVWYWxpZCA9
ICFzdGQ6OmlzbmFuKHRvdGFsUmF0ZSkgJiYgIXN0ZDo6aXNpbmYodG90YWxSYXRlKTsKICAgICBB
U1NFUlQoaXNUb3RhbFJhdGVWYWxpZCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmF1ZGlvL0F1ZGlvTm9kZUlucHV0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViYXVkaW8vQXVkaW9Ob2RlSW5wdXQuY3BwCmluZGV4IDZhMmU1ZGQzYjQyZTMwZDE1YjVlNzEz
ZmNlMmU0NTQ2M2Y3MTM4NTIuLmM2MjMzM2QyYjIxOTc4NThiMmU4MGYzMTkwMzBhZjNkZGM4ZWIy
NzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Ob2Rl
SW5wdXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Ob2Rl
SW5wdXQuY3BwCkBAIC0zMyw4ICszMyw2IEBACiAjaW5jbHVkZSAiQXVkaW9Ob2RlT3V0cHV0Lmgi
CiAjaW5jbHVkZSA8YWxnb3JpdGhtPgogCi11c2luZyBuYW1lc3BhY2Ugc3RkOwotIAogbmFtZXNw
YWNlIFdlYkNvcmUgewogCiBBdWRpb05vZGVJbnB1dDo6QXVkaW9Ob2RlSW5wdXQoQXVkaW9Ob2Rl
KiBub2RlKQpAQCAtMTU3LDExICsxNTUsMTEgQEAgdW5zaWduZWQgQXVkaW9Ob2RlSW5wdXQ6Om51
bWJlck9mQ2hhbm5lbHMoKSBjb25zdAogICAgICAgICBBdWRpb05vZGVPdXRwdXQqIG91dHB1dCA9
ICppOwogICAgICAgICAvLyBVc2Ugb3V0cHV0KCktPm51bWJlck9mQ2hhbm5lbHMoKSBpbnN0ZWFk
IG9mIG91dHB1dC0+YnVzKCktPm51bWJlck9mQ2hhbm5lbHMoKSwKICAgICAgICAgLy8gYmVjYXVz
ZSB0aGUgY2FsbGluZyBvZiBBdWRpb05vZGVPdXRwdXQ6OmJ1cygpIGlzIG5vdCBzYWZlIGhlcmUu
Ci0gICAgICAgIG1heENoYW5uZWxzID0gbWF4KG1heENoYW5uZWxzLCBvdXRwdXQtPm51bWJlck9m
Q2hhbm5lbHMoKSk7CisgICAgICAgIG1heENoYW5uZWxzID0gc3RkOjptYXgobWF4Q2hhbm5lbHMs
IG91dHB1dC0+bnVtYmVyT2ZDaGFubmVscygpKTsKICAgICB9CiAKICAgICBpZiAobW9kZSA9PSBB
dWRpb05vZGU6OkNsYW1wZWRNYXgpCi0gICAgICAgIG1heENoYW5uZWxzID0gbWluKG1heENoYW5u
ZWxzLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4obm9kZSgpLT5jaGFubmVsQ291bnQoKSkpOworICAg
ICAgICBtYXhDaGFubmVscyA9IHN0ZDo6bWluKG1heENoYW5uZWxzLCBzdGF0aWNfY2FzdDx1bnNp
Z25lZD4obm9kZSgpLT5jaGFubmVsQ291bnQoKSkpOwogCiAgICAgcmV0dXJuIG1heENoYW5uZWxz
OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1Bh
cmFtVGltZWxpbmUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1Bh
cmFtVGltZWxpbmUuY3BwCmluZGV4IGE2MzY4M2E1ZjQxNzcwYWNhOWRlYjRmNjk4ODE2ZGUzNmY4
NjkyOGMuLjEyMTllNDljZjUwZTU2ODc1ODdjNTIzMWUwZGZiM2MzNzY5ZjYzM2UgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9QYXJhbVRpbWVsaW5lLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvUGFyYW1UaW1lbGlu
ZS5jcHAKQEAgLTM0LDggKzM0LDYgQEAKICNpbmNsdWRlIDxhbGdvcml0aG0+CiAjaW5jbHVkZSA8
d3RmL01hdGhFeHRyYXMuaD4KIAotdXNpbmcgbmFtZXNwYWNlIHN0ZDsKLQogbmFtZXNwYWNlIFdl
YkNvcmUgewogCiB2b2lkIEF1ZGlvUGFyYW1UaW1lbGluZTo6c2V0VmFsdWVBdFRpbWUoZmxvYXQg
dmFsdWUsIGZsb2F0IHRpbWUpCkBAIC0xODksOSArMTg3LDkgQEAgZmxvYXQgQXVkaW9QYXJhbVRp
bWVsaW5lOjp2YWx1ZXNGb3JUaW1lUmFuZ2VJbXBsKAogICAgIC8vIHVudGlsIHdlIHJlYWNoIHRo
ZSBmaXJzdCBldmVudCB0aW1lLgogICAgIGRvdWJsZSBmaXJzdEV2ZW50VGltZSA9IG1fZXZlbnRz
WzBdLnRpbWUoKTsKICAgICBpZiAoZmlyc3RFdmVudFRpbWUgPiBzdGFydFRpbWUpIHsKLSAgICAg
ICAgZG91YmxlIGZpbGxUb1RpbWUgPSBtaW4oZW5kVGltZSwgZmlyc3RFdmVudFRpbWUpOworICAg
ICAgICBkb3VibGUgZmlsbFRvVGltZSA9IHN0ZDo6bWluKGVuZFRpbWUsIGZpcnN0RXZlbnRUaW1l
KTsKICAgICAgICAgdW5zaWduZWQgZmlsbFRvRnJhbWUgPSBBdWRpb1V0aWxpdGllczo6dGltZVRv
U2FtcGxlRnJhbWUoZmlsbFRvVGltZSAtIHN0YXJ0VGltZSwgc2FtcGxlUmF0ZSk7Ci0gICAgICAg
IGZpbGxUb0ZyYW1lID0gbWluKGZpbGxUb0ZyYW1lLCBudW1iZXJPZlZhbHVlcyk7CisgICAgICAg
IGZpbGxUb0ZyYW1lID0gc3RkOjptaW4oZmlsbFRvRnJhbWUsIG51bWJlck9mVmFsdWVzKTsKICAg
ICAgICAgZm9yICg7IHdyaXRlSW5kZXggPCBmaWxsVG9GcmFtZTsgKyt3cml0ZUluZGV4KQogICAg
ICAgICAgICAgdmFsdWVzW3dyaXRlSW5kZXhdID0gZGVmYXVsdFZhbHVlOwogCkBAIC0yMjIsOSAr
MjIwLDkgQEAgZmxvYXQgQXVkaW9QYXJhbVRpbWVsaW5lOjp2YWx1ZXNGb3JUaW1lUmFuZ2VJbXBs
KAogICAgICAgICBmbG9hdCBrID0gZGVsdGFUaW1lID4gMCA/IDEgLyBkZWx0YVRpbWUgOiAwOwog
ICAgICAgICBkb3VibGUgc2FtcGxlRnJhbWVUaW1lSW5jciA9IDEgLyBzYW1wbGVSYXRlOwogCi0g
ICAgICAgIGRvdWJsZSBmaWxsVG9UaW1lID0gbWluKGVuZFRpbWUsIHRpbWUyKTsKKyAgICAgICAg
ZG91YmxlIGZpbGxUb1RpbWUgPSBzdGQ6Om1pbihlbmRUaW1lLCB0aW1lMik7CiAgICAgICAgIHVu
c2lnbmVkIGZpbGxUb0ZyYW1lID0gQXVkaW9VdGlsaXRpZXM6OnRpbWVUb1NhbXBsZUZyYW1lKGZp
bGxUb1RpbWUgLSBzdGFydFRpbWUsIHNhbXBsZVJhdGUpOwotICAgICAgICBmaWxsVG9GcmFtZSA9
IG1pbihmaWxsVG9GcmFtZSwgbnVtYmVyT2ZWYWx1ZXMpOworICAgICAgICBmaWxsVG9GcmFtZSA9
IHN0ZDo6bWluKGZpbGxUb0ZyYW1lLCBudW1iZXJPZlZhbHVlcyk7CiAKICAgICAgICAgUGFyYW1F
dmVudDo6VHlwZSBuZXh0RXZlbnRUeXBlID0gbmV4dEV2ZW50ID8gc3RhdGljX2Nhc3Q8UGFyYW1F
dmVudDo6VHlwZT4obmV4dEV2ZW50LT50eXBlKCkpIDogUGFyYW1FdmVudDo6TGFzdFR5cGUgLyog
dW5rbm93biAqLzsKIApAQCAtMzE2LDkgKzMxNCw5IEBAIGZsb2F0IEF1ZGlvUGFyYW1UaW1lbGlu
ZTo6dmFsdWVzRm9yVGltZVJhbmdlSW1wbCgKICAgICAgICAgICAgICAgICAgICAgLy8gaW5zdGVh
ZCBvZiB0aGUgbmV4dCBldmVudCB0aW1lLgogICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBu
ZXh0RXZlbnRGaWxsVG9GcmFtZSA9IGZpbGxUb0ZyYW1lOwogICAgICAgICAgICAgICAgICAgICBm
bG9hdCBuZXh0RXZlbnRGaWxsVG9UaW1lID0gZmlsbFRvVGltZTsKLSAgICAgICAgICAgICAgICAg
ICAgZmlsbFRvVGltZSA9IG1pbihlbmRUaW1lLCB0aW1lMSArIGR1cmF0aW9uKTsKKyAgICAgICAg
ICAgICAgICAgICAgZmlsbFRvVGltZSA9IHN0ZDo6bWluKGVuZFRpbWUsIHRpbWUxICsgZHVyYXRp
b24pOwogICAgICAgICAgICAgICAgICAgICBmaWxsVG9GcmFtZSA9IEF1ZGlvVXRpbGl0aWVzOjp0
aW1lVG9TYW1wbGVGcmFtZShmaWxsVG9UaW1lIC0gc3RhcnRUaW1lLCBzYW1wbGVSYXRlKTsKLSAg
ICAgICAgICAgICAgICAgICAgZmlsbFRvRnJhbWUgPSBtaW4oZmlsbFRvRnJhbWUsIG51bWJlck9m
VmFsdWVzKTsKKyAgICAgICAgICAgICAgICAgICAgZmlsbFRvRnJhbWUgPSBzdGQ6Om1pbihmaWxs
VG9GcmFtZSwgbnVtYmVyT2ZWYWx1ZXMpOwogCiAgICAgICAgICAgICAgICAgICAgIC8vIEluZGV4
IGludG8gdGhlIGN1cnZlIGRhdGEgdXNpbmcgYSBmbG9hdGluZy1wb2ludCB2YWx1ZS4KICAgICAg
ICAgICAgICAgICAgICAgLy8gV2UncmUgc2NhbGluZyB0aGUgbnVtYmVyIG9mIGN1cnZlIHBvaW50
cyBieSB0aGUgZHVyYXRpb24gKHNlZSBjdXJ2ZVBvaW50c1BlckZyYW1lKS4KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9TY2hlZHVsZWRTb3VyY2VOb2Rl
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9TY2hlZHVsZWRTb3Vy
Y2VOb2RlLmNwcAppbmRleCAwMzYxYjhiZTkwZDkwNzA3ZTY2M2FlMjQ1YmRiMzM1NjhlYzUwMjI4
Li42N2MwMzU5OWU0MzNmMzZiYTc3MTA5YzA0ZTEzNzNhNjQzMTI2YWUwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvU2NoZWR1bGVkU291cmNlTm9kZS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1NjaGVkdWxlZFNv
dXJjZU5vZGUuY3BwCkBAIC0zNSw4ICszNSw2IEBACiAjaW5jbHVkZSA8YWxnb3JpdGhtPgogI2lu
Y2x1ZGUgPHd0Zi9NYXRoRXh0cmFzLmg+CiAKLXVzaW5nIG5hbWVzcGFjZSBzdGQ7Ci0KIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAogY29uc3QgZG91YmxlIEF1ZGlvU2NoZWR1bGVkU291cmNlTm9kZTo6
VW5rbm93blRpbWUgPSAtMTsKQEAgLTkzLDcgKzkxLDcgQEAgdm9pZCBBdWRpb1NjaGVkdWxlZFNv
dXJjZU5vZGU6OnVwZGF0ZVNjaGVkdWxpbmdJbmZvKHNpemVfdCBxdWFudHVtRnJhbWVTaXplLAog
ICAgIH0KIAogICAgIHF1YW50dW1GcmFtZU9mZnNldCA9IHN0YXJ0RnJhbWUgPiBxdWFudHVtU3Rh
cnRGcmFtZSA/IHN0YXJ0RnJhbWUgLSBxdWFudHVtU3RhcnRGcmFtZSA6IDA7Ci0gICAgcXVhbnR1
bUZyYW1lT2Zmc2V0ID0gbWluKHF1YW50dW1GcmFtZU9mZnNldCwgcXVhbnR1bUZyYW1lU2l6ZSk7
IC8vIGNsYW1wIHRvIHZhbGlkIHJhbmdlCisgICAgcXVhbnR1bUZyYW1lT2Zmc2V0ID0gc3RkOjpt
aW4ocXVhbnR1bUZyYW1lT2Zmc2V0LCBxdWFudHVtRnJhbWVTaXplKTsgLy8gY2xhbXAgdG8gdmFs
aWQgcmFuZ2UKICAgICBub25TaWxlbnRGcmFtZXNUb1Byb2Nlc3MgPSBxdWFudHVtRnJhbWVTaXpl
IC0gcXVhbnR1bUZyYW1lT2Zmc2V0OwogCiAgICAgaWYgKCFub25TaWxlbnRGcmFtZXNUb1Byb2Nl
c3MpIHsKQEAgLTE1OSw3ICsxNTcsNyBAQCB2b2lkIEF1ZGlvU2NoZWR1bGVkU291cmNlTm9kZTo6
c3RvcChkb3VibGUgd2hlbiwgRXhjZXB0aW9uQ29kZSYgZWMpCiAgICAgICAgIHJldHVybjsKICAg
ICB9CiAgICAgCi0gICAgd2hlbiA9IG1heCgwLjAsIHdoZW4pOworICAgIHdoZW4gPSBzdGQ6Om1h
eDxkb3VibGU+KDAsIHdoZW4pOwogICAgIG1fZW5kVGltZSA9IHdoZW47CiB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9TdW1taW5nSnVuY3Rpb24u
Y3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1N1bW1pbmdKdW5jdGlv
bi5jcHAKaW5kZXggYWQ4MWNhZGE1YTMwZGE2ZWI3OTdjYTEyYTMzNDEzNmZlZDdhN2E3YS4uZWQ0
MTdmYWRiZDU1ZWU2M2Q2YjhmY2Y4NWRmNzQ3ZGFmZDY4MjhhNCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1N1bW1pbmdKdW5jdGlvbi5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1N1bW1pbmdKdW5jdGlvbi5jcHAK
QEAgLTMyLDggKzMyLDYgQEAKICNpbmNsdWRlICJBdWRpb05vZGVPdXRwdXQuaCIKICNpbmNsdWRl
IDxhbGdvcml0aG0+CiAKLXVzaW5nIG5hbWVzcGFjZSBzdGQ7Ci0KIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAogQXVkaW9TdW1taW5nSnVuY3Rpb246OkF1ZGlvU3VtbWluZ0p1bmN0aW9uKEF1ZGlvQ29u
dGV4dCogY29udGV4dCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVk
aW8vRGVsYXlEU1BLZXJuZWwuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9E
ZWxheURTUEtlcm5lbC5jcHAKaW5kZXggYTM1MDVmMTM3ZWVjODEzOWIyZWM0OTE4ZmQyNzAzNDIy
MGM4OGU4OC4uZGI3MDRiZWY4MzI0N2Q3ODA0MGRhZDRhMjIxMjMxMzJjYWYxZTQyZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9EZWxheURTUEtlcm5lbC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9EZWxheURTUEtlcm5lbC5jcHAK
QEAgLTMxLDggKzMxLDYgQEAKICNpbmNsdWRlICJBdWRpb1V0aWxpdGllcy5oIgogI2luY2x1ZGUg
PGFsZ29yaXRobT4KIAotdXNpbmcgbmFtZXNwYWNlIHN0ZDsKLQogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCiBjb25zdCBmbG9hdCBTbW9vdGhpbmdUaW1lQ29uc3RhbnQgPSAwLjAyMGY7IC8vIDIwbXMK
QEAgLTExMiw4ICsxMTAsOCBAQCB2b2lkIERlbGF5RFNQS2VybmVsOjpwcm9jZXNzKGNvbnN0IGZs
b2F0KiBzb3VyY2UsIGZsb2F0KiBkZXN0aW5hdGlvbiwgc2l6ZV90IGZyYQogICAgICAgICBkZWxh
eVRpbWUgPSBkZWxheVByb2Nlc3NvcigpID8gZGVsYXlQcm9jZXNzb3IoKS0+ZGVsYXlUaW1lKCkt
PmZpbmFsVmFsdWUoKSA6IG1fZGVzaXJlZERlbGF5RnJhbWVzIC8gc2FtcGxlUmF0ZTsKIAogICAg
ICAgICAvLyBNYWtlIHN1cmUgdGhlIGRlbGF5IHRpbWUgaXMgaW4gYSB2YWxpZCByYW5nZS4KLSAg
ICAgICAgZGVsYXlUaW1lID0gbWluKG1heFRpbWUsIGRlbGF5VGltZSk7Ci0gICAgICAgIGRlbGF5
VGltZSA9IG1heCgwLjAsIGRlbGF5VGltZSk7CisgICAgICAgIGRlbGF5VGltZSA9IHN0ZDo6bWlu
KG1heFRpbWUsIGRlbGF5VGltZSk7CisgICAgICAgIGRlbGF5VGltZSA9IHN0ZDo6bWF4KDAuMCwg
ZGVsYXlUaW1lKTsKIAogICAgICAgICBpZiAobV9maXJzdFRpbWUpIHsKICAgICAgICAgICAgIG1f
Y3VycmVudERlbGF5VGltZSA9IGRlbGF5VGltZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViYXVkaW8vT2ZmbGluZUF1ZGlvRGVzdGluYXRpb25Ob2RlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vT2ZmbGluZUF1ZGlvRGVzdGluYXRpb25Ob2RlLmNw
cAppbmRleCBmZjM2NWY2ZDkwNTgxODE2ZWE1ZjYzNjlkMjcwNWM5YmY5ZmM2MmRiLi5mZDMxMjNh
OTFkMDk5NmQwOGJmMTcyNDMwMDkzNWNjODMzMTU3MDIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmF1ZGlvL09mZmxpbmVBdWRpb0Rlc3RpbmF0aW9uTm9kZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9PZmZsaW5lQXVkaW9EZXN0aW5hdGlv
bk5vZGUuY3BwCkBAIC0zMyw4ICszMyw2IEBACiAjaW5jbHVkZSAiSFJURkRhdGFiYXNlTG9hZGVy
LmgiCiAjaW5jbHVkZSA8YWxnb3JpdGhtPgogI2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+Ci0K
LXVzaW5nIG5hbWVzcGFjZSBzdGQ7CiAgCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgCkBAIC0x
MzMsNyArMTMxLDcgQEAgdm9pZCBPZmZsaW5lQXVkaW9EZXN0aW5hdGlvbk5vZGU6Om9mZmxpbmVS
ZW5kZXIoKQogICAgICAgICAvLyBSZW5kZXIgb25lIHJlbmRlciBxdWFudHVtLgogICAgICAgICBy
ZW5kZXIoMCwgbV9yZW5kZXJCdXMuZ2V0KCksIHJlbmRlclF1YW50dW1TaXplKTsKICAgICAgICAg
Ci0gICAgICAgIHNpemVfdCBmcmFtZXNBdmFpbGFibGVUb0NvcHkgPSBtaW4oZnJhbWVzVG9Qcm9j
ZXNzLCByZW5kZXJRdWFudHVtU2l6ZSk7CisgICAgICAgIHNpemVfdCBmcmFtZXNBdmFpbGFibGVU
b0NvcHkgPSBzdGQ6Om1pbihmcmFtZXNUb1Byb2Nlc3MsIHJlbmRlclF1YW50dW1TaXplKTsKICAg
ICAgICAgCiAgICAgICAgIGZvciAodW5zaWduZWQgY2hhbm5lbEluZGV4ID0gMDsgY2hhbm5lbElu
ZGV4IDwgbnVtYmVyT2ZDaGFubmVsczsgKytjaGFubmVsSW5kZXgpIHsKICAgICAgICAgICAgIGNv
bnN0IGZsb2F0KiBzb3VyY2UgPSBtX3JlbmRlckJ1cy0+Y2hhbm5lbChjaGFubmVsSW5kZXgpLT5k
YXRhKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL09zY2ls
bGF0b3JOb2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vT3NjaWxsYXRv
ck5vZGUuY3BwCmluZGV4IGU2OGQ4ZGQ2OTUwOTBjNGE5NmI0ZmU3OTMxN2E5MGU5M2UzOTQ5Mzcu
LjdlYjE0N2Q0MDIyMWQ5NTFhYjU3M2FkYTVkODhmMTQ1MjVlZWRiOGMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vT3NjaWxsYXRvck5vZGUuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vT3NjaWxsYXRvck5vZGUuY3BwCkBAIC0zNyw4
ICszNyw2IEBACiAjaW5jbHVkZSA8YWxnb3JpdGhtPgogI2luY2x1ZGUgPHd0Zi9NYXRoRXh0cmFz
Lmg+CiAKLXVzaW5nIG5hbWVzcGFjZSBzdGQ7Ci0KIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogdXNp
bmcgbmFtZXNwYWNlIFZlY3Rvck1hdGg7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmF1ZGlvL1Bhbm5lck5vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJh
dWRpby9QYW5uZXJOb2RlLmNwcAppbmRleCAxNzE1ZTcxNWM5ZWEzNmM5ZmZlNzJiZDU1OGJmOWQx
OGVkZjI0OWMzLi5iZTkzODY5NjVlY2Q3ZTQ1MTQyYTg1YWJmZTYwNGRmMWQ4MjIwYTczIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1Bhbm5lck5vZGUuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vUGFubmVyTm9kZS5jcHAKQEAgLTM4
LDggKzM4LDYgQEAKICNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCiAjaW5jbHVk
ZSA8d3RmL01hdGhFeHRyYXMuaD4KIAotdXNpbmcgbmFtZXNwYWNlIHN0ZDsKLQogbmFtZXNwYWNl
IFdlYkNvcmUgewogCiBzdGF0aWMgdm9pZCBmaXhOQU5zKGRvdWJsZSAmeCkKQEAgLTM1Myw4ICsz
NTEsOCBAQCBmbG9hdCBQYW5uZXJOb2RlOjpkb3BwbGVyUmF0ZSgpCiAgICAgICAgICAgICBzb3Vy
Y2VQcm9qZWN0aW9uID0gLXNvdXJjZVByb2plY3Rpb247CiAKICAgICAgICAgICAgIGRvdWJsZSBz
Y2FsZWRTcGVlZE9mU291bmQgPSBzcGVlZE9mU291bmQgLyBkb3BwbGVyRmFjdG9yOwotICAgICAg
ICAgICAgbGlzdGVuZXJQcm9qZWN0aW9uID0gbWluKGxpc3RlbmVyUHJvamVjdGlvbiwgc2NhbGVk
U3BlZWRPZlNvdW5kKTsKLSAgICAgICAgICAgIHNvdXJjZVByb2plY3Rpb24gPSBtaW4oc291cmNl
UHJvamVjdGlvbiwgc2NhbGVkU3BlZWRPZlNvdW5kKTsKKyAgICAgICAgICAgIGxpc3RlbmVyUHJv
amVjdGlvbiA9IHN0ZDo6bWluKGxpc3RlbmVyUHJvamVjdGlvbiwgc2NhbGVkU3BlZWRPZlNvdW5k
KTsKKyAgICAgICAgICAgIHNvdXJjZVByb2plY3Rpb24gPSBzdGQ6Om1pbihzb3VyY2VQcm9qZWN0
aW9uLCBzY2FsZWRTcGVlZE9mU291bmQpOwogCiAgICAgICAgICAgICBkb3BwbGVyU2hpZnQgPSAo
KHNwZWVkT2ZTb3VuZCAtIGRvcHBsZXJGYWN0b3IgKiBsaXN0ZW5lclByb2plY3Rpb24pIC8gKHNw
ZWVkT2ZTb3VuZCAtIGRvcHBsZXJGYWN0b3IgKiBzb3VyY2VQcm9qZWN0aW9uKSk7CiAgICAgICAg
ICAgICBmaXhOQU5zKGRvcHBsZXJTaGlmdCk7IC8vIGF2b2lkIGlsbGVnYWwgdmFsdWVzCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1dhdmVTaGFwZXJEU1BLZXJu
ZWwuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9XYXZlU2hhcGVyRFNQS2Vy
bmVsLmNwcAppbmRleCA0MzEzZjBkNjQyMzhmYzVjOTMwMDQ2Njc2NDA1N2Y1OTlmNjMyYzUxLi5l
NThhZDFiMjI1NTY5YWRkOTE4ZDQ1YmMxZDUwYzVjY2JjM2I4ZTZiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1dhdmVTaGFwZXJEU1BLZXJuZWwuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vV2F2ZVNoYXBlckRTUEtlcm5lbC5jcHAK
QEAgLTM1LDggKzM1LDYgQEAKIAogY29uc3QgdW5zaWduZWQgUmVuZGVyaW5nUXVhbnR1bSA9IDEy
ODsKIAotdXNpbmcgbmFtZXNwYWNlIHN0ZDsKLQogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBXYXZl
U2hhcGVyRFNQS2VybmVsOjpXYXZlU2hhcGVyRFNQS2VybmVsKFdhdmVTaGFwZXJQcm9jZXNzb3Iq
IHByb2Nlc3NvcikKQEAgLTExMiwxMCArMTEwLDEwIEBAIHZvaWQgV2F2ZVNoYXBlckRTUEtlcm5l
bDo6cHJvY2Vzc0N1cnZlKGNvbnN0IGZsb2F0KiBzb3VyY2UsIGZsb2F0KiBkZXN0aW5hdGlvbiwK
IAogICAgICAgICAvLyBDbGlwIGluZGV4IHRvIHRoZSBpbnB1dCByYW5nZSBvZiB0aGUgY3VydmUu
CiAgICAgICAgIC8vIFRoaXMgdGFrZXMgY2FyZSBvZiBpbnB1dCBvdXRzaWRlIG9mIG5vbWluYWwg
cmFuZ2UgLTEgLT4gKzEKLSAgICAgICAgaW5kZXgxID0gbWF4KGluZGV4MSwgMCk7Ci0gICAgICAg
IGluZGV4MSA9IG1pbihpbmRleDEsIGN1cnZlTGVuZ3RoIC0gMSk7Ci0gICAgICAgIGluZGV4MiA9
IG1heChpbmRleDIsIDApOwotICAgICAgICBpbmRleDIgPSBtaW4oaW5kZXgyLCBjdXJ2ZUxlbmd0
aCAtIDEpOworICAgICAgICBpbmRleDEgPSBzdGQ6Om1heChpbmRleDEsIDApOworICAgICAgICBp
bmRleDEgPSBzdGQ6Om1pbihpbmRleDEsIGN1cnZlTGVuZ3RoIC0gMSk7CisgICAgICAgIGluZGV4
MiA9IHN0ZDo6bWF4KGluZGV4MiwgMCk7CisgICAgICAgIGluZGV4MiA9IHN0ZDo6bWluKGluZGV4
MiwgY3VydmVMZW5ndGggLSAxKTsKIAogICAgICAgICBkb3VibGUgdmFsdWUxID0gY3VydmVEYXRh
W2luZGV4MV07CiAgICAgICAgIGRvdWJsZSB2YWx1ZTIgPSBjdXJ2ZURhdGFbaW5kZXgyXTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VUcmFj
a2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VUcmFj
a2VyLmNwcAppbmRleCAyMWY5ZGQ2NTMyNDllZmJiZmUxMjBhYWIzZThjMzM4YjJjYWE5Y2UyLi5l
ZjM3NWI2NmQwZTQzODQ5ZDRjMmFiYzQ2NzI5OTE5M2ZhODAxZDg4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlVHJhY2tlci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZVRyYWNrZXIuY3BwCkBA
IC01MCw4ICs1MCw2IEBACiAjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgogI2luY2x1ZGUg
PHd0Zi90ZXh0L0NTdHJpbmcuaD4KIAotdXNpbmcgbmFtZXNwYWNlIHN0ZDsKLQogbmFtZXNwYWNl
IFdlYkNvcmUgewogCiBzdGF0aWMgRGF0YWJhc2VUcmFja2VyKiBzdGF0aWNUcmFja2VyID0gMDsK
QEAgLTE0MSw3ICsxMzksNyBAQCBib29sIERhdGFiYXNlVHJhY2tlcjo6aGFzQWRlcXVhdGVRdW90
YUZvck9yaWdpbihTZWN1cml0eU9yaWdpbiogb3JpZ2luLCB1bnNpZ25lZAogICAgIHVuc2lnbmVk
IGxvbmcgbG9uZyB1c2FnZSA9IHVzYWdlRm9yT3JpZ2luKG9yaWdpbik7CiAKICAgICAvLyBJZiB0
aGUgZGF0YWJhc2Ugd2lsbCBmaXQsIGFsbG93IGl0cyBjcmVhdGlvbi4KLSAgICB1bnNpZ25lZCBs
b25nIGxvbmcgcmVxdWlyZW1lbnQgPSB1c2FnZSArIG1heCgxVUwsIGVzdGltYXRlZFNpemUpOwor
ICAgIHVuc2lnbmVkIGxvbmcgbG9uZyByZXF1aXJlbWVudCA9IHVzYWdlICsgc3RkOjptYXg8dW5z
aWduZWQgbG9uZyBsb25nPigxLCBlc3RpbWF0ZWRTaXplKTsKICAgICBpZiAocmVxdWlyZW1lbnQg
PCB1c2FnZSkgewogICAgICAgICAvLyBUaGUgZXN0aW1hdGVkIHNpemUgaXMgc28gYmlnIGl0IGNh
dXNlcyBhbiBvdmVyZmxvdzsgZG9uJ3QgYWxsb3cgY3JlYXRpb24uCiAgICAgICAgIGVyciA9IERh
dGFiYXNlRXJyb3I6OkRhdGFiYXNlU2l6ZU92ZXJmbG93ZWQ7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXQuY3BwCmluZGV4IDlhMTUzOTFjNmQ3YjJhMmRh
OWY3NjRjNWM2ZTc0M2NhYWJiYmJmNTcuLjA3N2E2YjY4YjRjMzBkOWYxNWM3N2FkNmVhMjU2OWY2
NzU1NjU3ZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9X
ZWJTb2NrZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJT
b2NrZXQuY3BwCkBAIC02NCw4ICs2NCw2IEBACiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVp
bGRlci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCi11c2luZyBuYW1lc3Bh
Y2Ugc3RkOwotCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNvbnN0IHNpemVfdCBtYXhSZWFzb25T
aXplSW5CeXRlcyA9IDEyMzsKQEAgLTEyMSw4ICsxMTksOCBAQCBzdGF0aWMgU3RyaW5nIGpvaW5T
dHJpbmdzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBzdHJpbmdzLCBjb25zdCBjaGFyKiBzZXBhcmF0
b3IpCiAKIHN0YXRpYyB1bnNpZ25lZCBsb25nIHNhdHVyYXRlQWRkKHVuc2lnbmVkIGxvbmcgYSwg
dW5zaWduZWQgbG9uZyBiKQogewotICAgIGlmIChudW1lcmljX2xpbWl0czx1bnNpZ25lZCBsb25n
Pjo6bWF4KCkgLSBhIDwgYikKLSAgICAgICAgcmV0dXJuIG51bWVyaWNfbGltaXRzPHVuc2lnbmVk
IGxvbmc+OjptYXgoKTsKKyAgICBpZiAoc3RkOjpudW1lcmljX2xpbWl0czx1bnNpZ25lZCBsb25n
Pjo6bWF4KCkgLSBhIDwgYikKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVtZXJpY19saW1pdHM8dW5z
aWduZWQgbG9uZz46Om1heCgpOwogICAgIHJldHVybiBhICsgYjsKIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldENoYW5uZWwuY3BwIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldENoYW5uZWwuY3BwCmlu
ZGV4IDY0OWY5N2U2YWVmNzQ2ZjU1YTdhMjE5NjgyN2ExMGU1NjM4MzUxY2QuLjcxNjRlZGMxZWI2
Y2FjM2VjOWYzNDIyM2ViZWQ2NDkxMjlkZjQzYzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRDaGFubmVsLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0Q2hhbm5lbC5jcHAKQEAgLTY2LDggKzY2
LDYgQEAKICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdIYXNoLmg+CiAjaW5jbHVkZSA8d3RmL3Rl
eHQvV1RGU3RyaW5nLmg+CiAKLXVzaW5nIG5hbWVzcGFjZSBzdGQ7Ci0KIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAogY29uc3QgZG91YmxlIFRDUE1heGltdW1TZWdtZW50TGlmZXRpbWUgPSAyICogNjAu
MDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2Nr
ZXRGcmFtZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0
RnJhbWUuY3BwCmluZGV4IGEyODc2ZWFkYmYxNjUwZmZmYWE4NDFkNTgwYTg3MTI4MTc3NTI4ZGYu
LjE2YmI0NThiMzNiOGQ2NmJiYWFlMTI2OTRiNTMwNjIyNzBiODFiZGEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRGcmFtZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldEZyYW1lLmNwcApAQCAt
MjksOCArMjksNiBAQAogI2luY2x1ZGUgPHd0Zi9DcnlwdG9ncmFwaGljYWxseVJhbmRvbU51bWJl
ci5oPgogI2luY2x1ZGUgPHd0Zi9NYXRoRXh0cmFzLmg+CiAKLXVzaW5nIG5hbWVzcGFjZSBzdGQ7
Ci0KIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogLy8gQ29uc3RhbnRzIGZvciBoeWJpLTEwIGZyYW1l
IGZvcm1hdC4KQEAgLTk3LDcgKzk1LDcgQEAgV2ViU29ja2V0RnJhbWU6OlBhcnNlRnJhbWVSZXN1
bHQgV2ViU29ja2V0RnJhbWU6OnBhcnNlRnJhbWUoY2hhciogZGF0YSwgc2l6ZV90IGQKIAogICAg
IHN0YXRpYyBjb25zdCB1aW50NjRfdCBtYXhQYXlsb2FkTGVuZ3RoID0gVUlOVDY0X0MoMHg3RkZG
RkZGRkZGRkZGRkZGKTsKICAgICBzaXplX3QgbWFza2luZ0tleUxlbmd0aCA9IG1hc2tlZCA/IG1h
c2tpbmdLZXlXaWR0aEluQnl0ZXMgOiAwOwotICAgIGlmIChwYXlsb2FkTGVuZ3RoNjQgPiBtYXhQ
YXlsb2FkTGVuZ3RoIHx8IHBheWxvYWRMZW5ndGg2NCArIG1hc2tpbmdLZXlMZW5ndGggPiBudW1l
cmljX2xpbWl0czxzaXplX3Q+OjptYXgoKSkgeworICAgIGlmIChwYXlsb2FkTGVuZ3RoNjQgPiBt
YXhQYXlsb2FkTGVuZ3RoIHx8IHBheWxvYWRMZW5ndGg2NCArIG1hc2tpbmdLZXlMZW5ndGggPiBz
dGQ6Om51bWVyaWNfbGltaXRzPHNpemVfdD46Om1heCgpKSB7CiAgICAgICAgIGVycm9yU3RyaW5n
ID0gIldlYlNvY2tldCBmcmFtZSBsZW5ndGggdG9vIGxhcmdlOiAiICsgU3RyaW5nOjpudW1iZXIo
cGF5bG9hZExlbmd0aDY0KSArICIgYnl0ZXMiOwogICAgICAgICByZXR1cm4gRnJhbWVFcnJvcjsK
ICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2li
aWxpdHlBUklBR3JpZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2li
aWxpdHlBUklBR3JpZC5jcHAKaW5kZXggYzVlYzliZjA0MjFjMjc5MTgzNmJlMjM1MjU3MDQ4ZDJm
MDg4YzJhYy4uZWI3NDRkY2JlMDFkODZiMmM1NjQ5ZTAxYzJiNzU1NTkzZDhmNGI1YyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5QVJJQUdyaWQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eUFSSUFH
cmlkLmNwcApAQCAtMzYsOCArMzYsNiBAQAogI2luY2x1ZGUgIkFjY2Vzc2liaWxpdHlUYWJsZVJv
dy5oIgogI2luY2x1ZGUgIlJlbmRlck9iamVjdC5oIgogCi11c2luZyBuYW1lc3BhY2Ugc3RkOwot
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIEFjY2Vzc2liaWxpdHlBUklBR3JpZDo6QWNjZXNzaWJp
bGl0eUFSSUFHcmlkKFJlbmRlck9iamVjdCogcmVuZGVyZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlBUklBR3JpZENlbGwuY3BwIGIvU291
cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5QVJJQUdyaWRDZWxsLmNwcApp
bmRleCA5YzNiMTY3OWRhYzdlNjE3MWU3NjllMDk0Zjg5NTM1OTIyNTk5NTc5Li4zZjZiNDQyYzNk
ZmZiMmJiYTZiMTdmZjUxMGIxOTNhZjg4N2VkMTk4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlBUklBR3JpZENlbGwuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eUFSSUFHcmlkQ2VsbC5jcHAKQEAg
LTMzLDggKzMzLDYgQEAKICNpbmNsdWRlICJBY2Nlc3NpYmlsaXR5VGFibGUuaCIKICNpbmNsdWRl
ICJBY2Nlc3NpYmlsaXR5VGFibGVSb3cuaCIKIAotdXNpbmcgbmFtZXNwYWNlIHN0ZDsKLQogbmFt
ZXNwYWNlIFdlYkNvcmUgewogICAgIAogQWNjZXNzaWJpbGl0eUFSSUFHcmlkQ2VsbDo6QWNjZXNz
aWJpbGl0eUFSSUFHcmlkQ2VsbChSZW5kZXJPYmplY3QqIHJlbmRlcmVyKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5QVJJQUdyaWRSb3cuY3Bw
IGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5QVJJQUdyaWRSb3cu
Y3BwCmluZGV4IDM5ZWRmNzAyZjg3MjNhM2Q1MTMzNTg5YzI3NDcxNTY0NTU4NWVmOTQuLmQwOGQy
NzllZDE4MjAwOTdiNzhkZjQ4M2ZkZDE2OWY3OGQyMmEwODMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eUFSSUFHcmlkUm93LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlBUklBR3JpZFJvdy5jcHAK
QEAgLTMzLDggKzMzLDYgQEAKICNpbmNsdWRlICJBY2Nlc3NpYmlsaXR5VGFibGUuaCIKICNpbmNs
dWRlICJSZW5kZXJPYmplY3QuaCIKIAotdXNpbmcgbmFtZXNwYWNlIHN0ZDsKLQogbmFtZXNwYWNl
IFdlYkNvcmUgewogICAgIAogQWNjZXNzaWJpbGl0eUFSSUFHcmlkUm93OjpBY2Nlc3NpYmlsaXR5
QVJJQUdyaWRSb3coUmVuZGVyT2JqZWN0KiByZW5kZXJlcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eUxpc3QuY3BwIGIvU291cmNlL1dlYkNv
cmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5TGlzdC5jcHAKaW5kZXggODAzOWNmMDM0YmIz
OTBkMDQ5NDYyYmY1ZjA4NzcwZmVlOGQzZWRiNi4uYTI0MDZiYTc2MzcwMGMxMzMxNTlhYmE0Yjk0
ZGJlYzVmYjE0NzY5NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9B
Y2Nlc3NpYmlsaXR5TGlzdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9B
Y2Nlc3NpYmlsaXR5TGlzdC5jcHAKQEAgLTMzLDggKzMzLDYgQEAKICNpbmNsdWRlICJIVE1MTmFt
ZXMuaCIKICNpbmNsdWRlICJSZW5kZXJPYmplY3QuaCIKIAotdXNpbmcgbmFtZXNwYWNlIHN0ZDsK
LQogbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIAogdXNpbmcgbmFtZXNwYWNlIEhUTUxOYW1lczsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eUxp
c3RCb3guY3BwIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5TGlz
dEJveC5jcHAKaW5kZXggMGYwODY4NzZlZGNhNjA3NDQ1ZjhmNzA4NjFkY2NjNWVlOTg2ODdhYy4u
N2EzYzk3MTBmODFmMWNiNjBjMjMwMDg5MTFiMjVjOGQ3NDZjNzFlNSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5TGlzdEJveC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5TGlzdEJveC5jcHAKQEAg
LTM3LDggKzM3LDYgQEAKICNpbmNsdWRlICJSZW5kZXJMaXN0Qm94LmgiCiAjaW5jbHVkZSAiUmVu
ZGVyT2JqZWN0LmgiCiAKLXVzaW5nIG5hbWVzcGFjZSBzdGQ7Ci0KIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAogdXNpbmcgbmFtZXNwYWNlIEhUTUxOYW1lczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eUxpc3RCb3hPcHRpb24uY3BwIGIvU291cmNl
L1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5TGlzdEJveE9wdGlvbi5jcHAKaW5k
ZXggNDg0YTIwZDg2YmY0YTNkNWU3NzBmYjFjMTI1MmNiMGUzYmVkMjJkZC4uZDJiMjQzYzU3Mzhm
MTZkZWU5NzBhODVlNjJmZmYxZDk2YjhjZDViOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
YWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5TGlzdEJveE9wdGlvbi5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5TGlzdEJveE9wdGlvbi5jcHAKQEAg
LTQxLDggKzQxLDYgQEAKICNpbmNsdWRlICJSZW5kZXJMaXN0Qm94LmgiCiAjaW5jbHVkZSAiUmVu
ZGVyT2JqZWN0LmgiCiAKLXVzaW5nIG5hbWVzcGFjZSBzdGQ7Ci0KIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAogdXNpbmcgbmFtZXNwYWNlIEhUTUxOYW1lczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU5vZGVPYmplY3QuY3BwIGIvU291cmNlL1dl
YkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdC5jcHAKaW5kZXggMWIz
OGNiYmJmNDVmODUzNTg0NWZlYmUxNDYxNGRmMDc4MjdhZjg0NS4uZjUwYjRiM2E2YzliYzc5MmE5
OWYwNDcwMzM5YWY3Njg4NGMyZDU4NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9BY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
YWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdC5jcHAKQEAgLTgyLDggKzgyLDYg
QEAKICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+CiAjaW5jbHVkZSA8d3RmL3Vu
aWNvZGUvQ2hhcmFjdGVyTmFtZXMuaD4KIAotdXNpbmcgbmFtZXNwYWNlIHN0ZDsKLQogbmFtZXNw
YWNlIFdlYkNvcmUgewogCiB1c2luZyBuYW1lc3BhY2UgSFRNTE5hbWVzOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5jcHAKaW5kZXgg
Zjg1NTdmMGIwMWYzM2U3NjI4MGM1MzRjODJlOTVlMzE3NjgyY2ZmOC4uZmEzMTRhZDAxNDcxODVl
NTU5MTM4NjA4N2NmMTU1MTg4ZjhkMDY5ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNj
ZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9h
Y2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuY3BwCkBAIC02Nyw4ICs2Nyw2IEBACiAj
aW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAjaW5jbHVkZSA8d3RmL3VuaWNvZGUvQ2hh
cmFjdGVyTmFtZXMuaD4KIAotdXNpbmcgbmFtZXNwYWNlIHN0ZDsKLQogbmFtZXNwYWNlIFdlYkNv
cmUgewogCiB1c2luZyBuYW1lc3BhY2UgSFRNTE5hbWVzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5jcHAKaW5k
ZXggM2NhMmE5NGUzNWI1Mjg1MmJmY2Y3YTVlN2M0M2ZkZTNiOTYwMjViNy4uNWMwNDRhMmYxZTZj
ZTAxNjg1MWFiYzMwYTM0YjY1ZGFjODQyMGVjZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
YWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3BwCkBAIC0x
MDEsOCArMTAxLDYgQEAKICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+CiAjaW5j
bHVkZSA8d3RmL3VuaWNvZGUvQ2hhcmFjdGVyTmFtZXMuaD4KIAotdXNpbmcgbmFtZXNwYWNlIHN0
ZDsKLQogbmFtZXNwYWNlIFdlYkNvcmUgewogCiB1c2luZyBuYW1lc3BhY2UgSFRNTE5hbWVzOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFi
bGUuY3BwIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFibGUu
Y3BwCmluZGV4IDMzOTUyOWZhODU2MjlmNWY1Y2I3NjcxMmU1OTYxMzg4ZWM2NTI1MzMuLjRjNDA0
NzAyN2E5MTIzNzQ3ZTkxOWQ1YWFjOGZmYjFmOThkMDVlMmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlUYWJsZS5jcHAKQEAgLTM4Miw3ICsz
ODIsNyBAQCB2b2lkIEFjY2Vzc2liaWxpdHlUYWJsZTo6YWRkQ2hpbGRyZW4oKQogICAgICAgICAg
ICAgYXBwZW5kZWRSb3dzLmFkZChyb3cpOwogICAgICAgICB9CiAgICAgCi0gICAgICAgIG1heENv
bHVtbkNvdW50ID0gbWF4KHRhYmxlU2VjdGlvbi0+bnVtQ29sdW1ucygpLCBtYXhDb2x1bW5Db3Vu
dCk7CisgICAgICAgIG1heENvbHVtbkNvdW50ID0gc3RkOjptYXgodGFibGVTZWN0aW9uLT5udW1D
b2x1bW5zKCksIG1heENvbHVtbkNvdW50KTsKICAgICAgICAgdGFibGVTZWN0aW9uID0gdGFibGUt
PnNlY3Rpb25CZWxvdyh0YWJsZVNlY3Rpb24sIFNraXBFbXB0eVNlY3Rpb25zKTsKICAgICB9CiAg
ICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxp
dHlUYWJsZUNlbGwuY3BwIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmls
aXR5VGFibGVDZWxsLmNwcAppbmRleCA1MzVhZmVkNDk2NmJiN2MzYmM3ZGQwNGVmMzJhMTBiODY4
ZmMzYWRmLi44YTJjZDU3NTllMWEwOGIxMmVhNjQ5ZjE3NGVkMzdkNGY4YzRjMWRiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlUYWJsZUNlbGwu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxl
Q2VsbC5jcHAKQEAgLTM0LDggKzM0LDYgQEAKICNpbmNsdWRlICJSZW5kZXJPYmplY3QuaCIKICNp
bmNsdWRlICJSZW5kZXJUYWJsZUNlbGwuaCIKIAotdXNpbmcgbmFtZXNwYWNlIHN0ZDsKLQogbmFt
ZXNwYWNlIFdlYkNvcmUgewogICAgIAogdXNpbmcgbmFtZXNwYWNlIEhUTUxOYW1lczsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxlQ29s
dW1uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxl
Q29sdW1uLmNwcAppbmRleCBjNDc5Yzg2NjI0OWMyMTRhYjQ1M2QzZjljMDc5MTBiNzQ0NDVlYWFj
Li4xYTU1OTQzNDAwNmRmMjA4MzgxYzc2Mzk3MzFmMThlOGViMTc4NjlmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlUYWJsZUNvbHVtbi5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFibGVDb2x1
bW4uY3BwCkBAIC0zNiw4ICszNiw2IEBACiAjaW5jbHVkZSAiUmVuZGVyVGFibGVDZWxsLmgiCiAj
aW5jbHVkZSAiUmVuZGVyVGFibGVTZWN0aW9uLmgiCiAKLXVzaW5nIG5hbWVzcGFjZSBzdGQ7Ci0K
IG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAKIHVzaW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlUYWJs
ZUhlYWRlckNvbnRhaW5lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vz
c2liaWxpdHlUYWJsZUhlYWRlckNvbnRhaW5lci5jcHAKaW5kZXggOGEwOTEyZDMxNTVmMjQ4NTZk
MjcxYmFjNDVlYTU3OTViOWU0ZmMyMS4uMDE5ZjMxMjMwMjdjYTBiZTczZGFiNjdhMzE3ZmMxNjFi
M2UwZjNiZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3Np
YmlsaXR5VGFibGVIZWFkZXJDb250YWluZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vz
c2liaWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxlSGVhZGVyQ29udGFpbmVyLmNwcApAQCAtMzIsOCAr
MzIsNiBAQAogI2luY2x1ZGUgIkFYT2JqZWN0Q2FjaGUuaCIKICNpbmNsdWRlICJBY2Nlc3NpYmls
aXR5VGFibGUuaCIKIAotdXNpbmcgbmFtZXNwYWNlIHN0ZDsKLQogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCiBBY2Nlc3NpYmlsaXR5VGFibGVIZWFkZXJDb250YWluZXI6OkFjY2Vzc2liaWxpdHlUYWJs
ZUhlYWRlckNvbnRhaW5lcigpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L0FjY2Vzc2liaWxpdHlUYWJsZVJvdy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L0FjY2Vzc2liaWxpdHlUYWJsZVJvdy5jcHAKaW5kZXggNDRlZGFkYTI4YmQ3N2YzMDBmZjQ0
MDNhMDg4MzE4OWJmY2QyNjg1ZS4uNjUzYTA2MjAzMDg3YThkNjRmYjljNzZjM2RjODUzZjdiNGJk
MGQzNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmls
aXR5VGFibGVSb3cuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNz
aWJpbGl0eVRhYmxlUm93LmNwcApAQCAtMzcsOCArMzcsNiBAQAogI2luY2x1ZGUgIlJlbmRlclRh
YmxlQ2VsbC5oIgogI2luY2x1ZGUgIlJlbmRlclRhYmxlUm93LmgiCiAKLXVzaW5nIG5hbWVzcGFj
ZSBzdGQ7Ci0KIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAKIHVzaW5nIG5hbWVzcGFjZSBIVE1M
TmFtZXM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9XZWJB
Y2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlckJhc2UubW0gYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3Np
YmlsaXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlckJhc2UubW0KaW5kZXggZDFi
ODQxN2Y5NzA4Yjg5Zjg1YjVhNzc4NDU1MDNiMjIxNTUxMWMyMi4uMWNhZjRiM2FlZDU2ZTAxNGZm
ZDU0MmEyN2UyMGNkYTRmNGUwZmFhMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJCYXNlLm1tCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFw
cGVyQmFzZS5tbQpAQCAtNzUsNyArNzUsNiBAQAogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsK
IHVzaW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7Ci11c2luZyBuYW1lc3BhY2Ugc3RkOwogCiBzdGF0
aWMgTlNBcnJheSAqY29udmVydE1hdGhQYWlyc1RvTlNBcnJheShjb25zdCBBY2Nlc3NpYmlsaXR5
T2JqZWN0OjpBY2Nlc3NpYmlsaXR5TWF0aE11bHRpc2NyaXB0UGFpcnMmIHBhaXJzLCBOU1N0cmlu
ZyAqc3Vic2NyaXB0S2V5LCBOU1N0cmluZyAqc3VwZXJzY3JpcHRLZXkpCiB7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0
V3JhcHBlck1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vz
c2liaWxpdHlPYmplY3RXcmFwcGVyTWFjLm1tCmluZGV4IDhlMjM5MjBlYjk5YmI1ODE5ODg3Yzdj
NDIxOGI2MzUyNGRlYmMzMDEuLmE4YTJkMTkxYTk2NGVlY2Y3OTQ3ZDMxNDQzMzQ0ODYyMjNkYmRi
YWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vz
c2liaWxpdHlPYmplY3RXcmFwcGVyTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2li
aWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyTWFjLm1tCkBAIC03Nyw3ICs3
Nyw2IEBACiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogdXNpbmcgbmFtZXNwYWNlIEhUTUxO
YW1lczsKLXVzaW5nIG5hbWVzcGFjZSBzdGQ7CiAKIC8vIENlbGwgVGFibGVzCiAjaWZuZGVmIE5T
QWNjZXNzaWJpbGl0eVNlbGVjdGVkQ2VsbHNBdHRyaWJ1dGUKQEAgLTM2MTksNyArMzYxOCw3IEBA
IHN0YXRpYyBSZW5kZXJPYmplY3QqIHJlbmRlcmVyRm9yVmlldyhOU1ZpZXcqIHZpZXcpCiAgICAg
ICAgICAgICBpZiAoaW5kZXggPj0gY2hpbGRDb3VudCkKICAgICAgICAgICAgICAgICByZXR1cm4g
bmlsOwogICAgICAgICAgICAgCi0gICAgICAgICAgICBOU1VJbnRlZ2VyIGFycmF5TGVuZ3RoID0g
bWluKGNoaWxkQ291bnQgLSBpbmRleCwgbWF4Q291bnQpOworICAgICAgICAgICAgTlNVSW50ZWdl
ciBhcnJheUxlbmd0aCA9IHN0ZDo6bWluKGNoaWxkQ291bnQgLSBpbmRleCwgbWF4Q291bnQpOwog
ICAgICAgICAgICAgcmV0dXJuIFtjaGlsZHJlbiBzdWJhcnJheVdpdGhSYW5nZTpOU01ha2VSYW5n
ZShpbmRleCwgYXJyYXlMZW5ndGgpXTsKICAgICAgICAgfSBlbHNlIGlmIChtX29iamVjdC0+aXNU
cmVlKCkpIHsKICAgICAgICAgICAgIC8vIFRyZWUgb2JqZWN0cyByZXR1cm4gdGhlaXIgcm93cyBh
cyB0aGVpciBjaGlsZHJlbi4gV2UgY2FuIHVzZSB0aGUgb3JpZ2luYWwgbWV0aG9kIGluIHRoaXMg
Y2FzZS4KQEAgLTM2MzEsNyArMzYzMCw3IEBAIHN0YXRpYyBSZW5kZXJPYmplY3QqIHJlbmRlcmVy
Rm9yVmlldyhOU1ZpZXcqIHZpZXcpCiAgICAgICAgIGlmIChpbmRleCA+PSBjaGlsZENvdW50KQog
ICAgICAgICAgICAgcmV0dXJuIG5pbDsKICAgICAgICAgCi0gICAgICAgIHVuc2lnbmVkIGF2YWls
YWJsZSA9IG1pbihjaGlsZENvdW50IC0gaW5kZXgsIG1heENvdW50KTsKKyAgICAgICAgdW5zaWdu
ZWQgYXZhaWxhYmxlID0gc3RkOjptaW4oY2hpbGRDb3VudCAtIGluZGV4LCBtYXhDb3VudCk7CiAg
ICAgICAgIAogICAgICAgICBOU011dGFibGVBcnJheSAqc3ViYXJyYXkgPSBbTlNNdXRhYmxlQXJy
YXkgYXJyYXlXaXRoQ2FwYWNpdHk6YXZhaWxhYmxlXTsKICAgICAgICAgZm9yICh1bnNpZ25lZCBh
ZGRlZCA9IDA7IGFkZGVkIDwgYXZhaWxhYmxlOyArK2luZGV4LCArK2FkZGVkKSB7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0NTU1N0eWxlRGVjbGFyYXRpb25DdXN0
b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDU1NTdHlsZURlY2xhcmF0aW9u
Q3VzdG9tLmNwcAppbmRleCA2NjQ4OGJmYWY4ZTJhYTZjYzZmNWI4ZTVjYWQ0NWUzYmM3OTkwYTc3
Li4wYWI5OGNlNGNiZDdjOWVjZGIyY2U4NDk1NWJlMWM2NWYwNjNmNWQ3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0NTU1N0eWxlRGVjbGFyYXRpb25DdXN0b20uY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ1NTU3R5bGVEZWNsYXJhdGlvbkN1
c3RvbS5jcHAKQEAgLTQ1LDcgKzQ1LDYgQEAKIAogdXNpbmcgbmFtZXNwYWNlIEpTQzsKIHVzaW5n
IG5hbWVzcGFjZSBXVEY7Ci11c2luZyBuYW1lc3BhY2Ugc3RkOwogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKQEAgLTM4OSw3ICszODgsNyBAQCB2b2lkIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbjo6Z2V0
T3duUHJvcGVydHlOYW1lcyhKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZQogICAgICAg
ICBWZWN0b3I8U3RyaW5nLCBudW1DU1NQcm9wZXJ0aWVzPiBqc1Byb3BlcnR5TmFtZXM7CiAgICAg
ICAgIGZvciAoaW50IGlkID0gZmlyc3RDU1NQcm9wZXJ0eTsgaWQgPCBmaXJzdENTU1Byb3BlcnR5
ICsgbnVtQ1NTUHJvcGVydGllczsgKytpZCkKICAgICAgICAgICAgIGpzUHJvcGVydHlOYW1lcy5h
cHBlbmQoZ2V0SlNQcm9wZXJ0eU5hbWUoc3RhdGljX2Nhc3Q8Q1NTUHJvcGVydHlJRD4oaWQpKSk7
Ci0gICAgICAgIHNvcnQoanNQcm9wZXJ0eU5hbWVzLmJlZ2luKCksIGpzUHJvcGVydHlOYW1lcy5l
bmQoKSwgV1RGOjpjb2RlUG9pbnRDb21wYXJlTGVzc1RoYW4pOworICAgICAgICBzdGQ6OnNvcnQo
anNQcm9wZXJ0eU5hbWVzLmJlZ2luKCksIGpzUHJvcGVydHlOYW1lcy5lbmQoKSwgV1RGOjpjb2Rl
UG9pbnRDb21wYXJlTGVzc1RoYW4pOwogCiAgICAgICAgIHByb3BlcnR5SWRlbnRpZmllcnMgPSBu
ZXcgSWRlbnRpZmllcltudW1DU1NQcm9wZXJ0aWVzXTsKICAgICAgICAgZm9yIChpbnQgaSA9IDA7
IGkgPCBudW1DU1NQcm9wZXJ0aWVzOyArK2kpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU0dlb2xvY2F0aW9uQ3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTR2VvbG9jYXRpb25DdXN0b20uY3BwCmluZGV4IGNiMDA3NDQxZTM4NDVkYzUxN2Yx
MTljZjZlZGUzYWRjOTM2YmQxZWEuLmQxYTJkYWExYTViMTQ1NWRkMTdkYzU0NjhjNWY0ODQzMzk2
M2M5YTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTR2VvbG9jYXRp
b25DdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTR2VvbG9jYXRp
b25DdXN0b20uY3BwCkBAIC0zOCw3ICszOCw2IEBACiAjaW5jbHVkZSAiUG9zaXRpb25PcHRpb25z
LmgiCiAKIHVzaW5nIG5hbWVzcGFjZSBKU0M7Ci11c2luZyBuYW1lc3BhY2Ugc3RkOwogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKQEAgLTU0LDcgKzUzLDcgQEAgc3RhdGljIHZvaWQgc2V0VGltZW91
dChQb3NpdGlvbk9wdGlvbnMqIG9wdGlvbnMsIGNvbnN0IGRvdWJsZSYgdGltZW91dCkKICAgICAv
LyBJZiB0aGUgdmFsdWUgaXMgcG9zaXRpdmUgaW5maW5pdHksIHRoZXJlJ3Mgbm90aGluZyB0byBk
by4KICAgICBpZiAoIShzdGQ6OmlzaW5mKHRpbWVvdXQpICYmICh0aW1lb3V0ID4gMCkpKSB7CiAg
ICAgICAgIC8vIFdyYXAgdG8gaW50MzIgYW5kIGZvcmNlIG5vbi1uZWdhdGl2ZSB0byBtYXRjaCBi
ZWhhdmlvciBvZiB3aW5kb3cuc2V0VGltZW91dC4KLSAgICAgICAgb3B0aW9ucy0+c2V0VGltZW91
dChtYXgoMCwgc3RhdGljX2Nhc3Q8aW50Pih0aW1lb3V0KSkpOworICAgICAgICBvcHRpb25zLT5z
ZXRUaW1lb3V0KHN0ZDo6bWF4PGludD4oMCwgdGltZW91dCkpOwogICAgIH0KIH0KIApAQCAtNjUs
NyArNjQsNyBAQCBzdGF0aWMgdm9pZCBzZXRNYXhpbXVtQWdlKFBvc2l0aW9uT3B0aW9ucyogb3B0
aW9ucywgY29uc3QgZG91YmxlJiBtYXhpbXVtQWdlKQogICAgICAgICBvcHRpb25zLT5jbGVhck1h
eGltdW1BZ2UoKTsKICAgICB9IGVsc2UgewogICAgICAgICAvLyBXcmFwIHRvIGludDMyIGFuZCBm
b3JjZSBub24tbmVnYXRpdmUgdG8gbWF0Y2ggYmVoYXZpb3Igb2Ygd2luZG93LnNldFRpbWVvdXQu
Ci0gICAgICAgIG9wdGlvbnMtPnNldE1heGltdW1BZ2UobWF4KDAsIHN0YXRpY19jYXN0PGludD4o
bWF4aW11bUFnZSkpKTsKKyAgICAgICAgb3B0aW9ucy0+c2V0TWF4aW11bUFnZShzdGQ6Om1heDxp
bnQ+KDAsIG1heGltdW1BZ2UpKTsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlci5jcHAKaW5kZXggNDFhZDQwODNlODVjNWYwNzQ1Y2Fl
ZDI4MGRkMDdhZjIyYTBlNWE1Yy4uZTZjNzhjNWU0N2E3MjU0OWY2NjAzNmY4NmY1NWQ4NGZlZWZi
ZDU3MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q29udHJv
bGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxl
ci5jcHAKQEAgLTU2LDcgKzU2LDYgQEAKICNpbmNsdWRlIDx3dGYvdGV4dC9UZXh0UG9zaXRpb24u
aD4KIAogdXNpbmcgbmFtZXNwYWNlIEpTQzsKLXVzaW5nIG5hbWVzcGFjZSBzdGQ7CiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
U2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1Nl
cmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHAKaW5kZXggZGU0YzcyOTFhMTgxODJjZmIwNDUwMTg1YTFl
YjE2ODc0MmMyZTY2MS4uYTUzNWMzNDkyMDM3NGIwZTdhNzczZDU2YmQ1N2U4YmY3OTQyYmM3ZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZh
bHVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0
VmFsdWUuY3BwCkBAIC02OSw3ICs2OSw2IEBACiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogCiB1
c2luZyBuYW1lc3BhY2UgSlNDOwotdXNpbmcgbmFtZXNwYWNlIHN0ZDsKIAogI2lmIENQVShCSUdf
RU5ESUFOKSB8fCBDUFUoTUlERExFX0VORElBTikgfHwgQ1BVKE5FRURTX0FMSUdORURfQUNDRVNT
KQogI2RlZmluZSBBU1NVTUVfTElUVExFX0VORElBTiAwCkBAIC0zMTIsNyArMzExLDcgQEAgdGVt
cGxhdGUgPD4gdm9pZCB3cml0ZUxpdHRsZUVuZGlhbjx1aW50OF90PihWZWN0b3I8dWludDhfdD4m
IGJ1ZmZlciwgdWludDhfdCB2YWwKIAogdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IHN0YXRpYyBib29s
IHdyaXRlTGl0dGxlRW5kaWFuKFZlY3Rvcjx1aW50OF90PiYgYnVmZmVyLCBjb25zdCBUKiB2YWx1
ZXMsIHVpbnQzMl90IGxlbmd0aCkKIHsKLSAgICBpZiAobGVuZ3RoID4gbnVtZXJpY19saW1pdHM8
dWludDMyX3Q+OjptYXgoKSAvIHNpemVvZihUKSkKKyAgICBpZiAobGVuZ3RoID4gc3RkOjpudW1l
cmljX2xpbWl0czx1aW50MzJfdD46Om1heCgpIC8gc2l6ZW9mKFQpKQogICAgICAgICByZXR1cm4g
ZmFsc2U7CiAKICNpZiBBU1NVTUVfTElUVExFX0VORElBTgpAQCAtODIxLDcgKzgyMCw3IEBAIHBy
aXZhdGU6CiAgICAgICAgIH0KIAogICAgICAgICAvLyBHdWFyZCBhZ2FpbnN0IG92ZXJmbG93Ci0g
ICAgICAgIGlmIChzdHIubGVuZ3RoKCkgPiAobnVtZXJpY19saW1pdHM8dWludDMyX3Q+OjptYXgo
KSAtIHNpemVvZih1aW50MzJfdCkpIC8gc2l6ZW9mKFVDaGFyKSkgeworICAgICAgICBpZiAoc3Ry
Lmxlbmd0aCgpID4gKHN0ZDo6bnVtZXJpY19saW1pdHM8dWludDMyX3Q+OjptYXgoKSAtIHNpemVv
Zih1aW50MzJfdCkpIC8gc2l6ZW9mKFVDaGFyKSkgewogICAgICAgICAgICAgZmFpbCgpOwogICAg
ICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CkBAIC0xMTA5LDEwICsxMTA4LDEwIEBAIHB1Ymxp
YzoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFZl
Y3Rvcjx1aW50OF90PiYgYnVmZmVyKQogICAgIHsKICAgICAgICAgaWYgKCFidWZmZXIuc2l6ZSgp
KQotICAgICAgICAgICAgcmV0dXJuIG1ha2VfcGFpcihqc051bGwoKSwgVW5zcGVjaWZpZWRFcnJv
cik7CisgICAgICAgICAgICByZXR1cm4gc3RkOjptYWtlX3BhaXIoanNOdWxsKCksIFVuc3BlY2lm
aWVkRXJyb3IpOwogICAgICAgICBDbG9uZURlc2VyaWFsaXplciBkZXNlcmlhbGl6ZXIoZXhlYywg
Z2xvYmFsT2JqZWN0LCBtZXNzYWdlUG9ydHMsIGFycmF5QnVmZmVyQ29udGVudHNBcnJheSwgYnVm
ZmVyKTsKICAgICAgICAgaWYgKCFkZXNlcmlhbGl6ZXIuaXNWYWxpZCgpKQotICAgICAgICAgICAg
cmV0dXJuIG1ha2VfcGFpcihKU1ZhbHVlKCksIFZhbGlkYXRpb25FcnJvcik7CisgICAgICAgICAg
ICByZXR1cm4gc3RkOjptYWtlX3BhaXIoSlNWYWx1ZSgpLCBWYWxpZGF0aW9uRXJyb3IpOwogICAg
ICAgICByZXR1cm4gZGVzZXJpYWxpemVyLmRlc2VyaWFsaXplKCk7CiAgICAgfQogCkBAIC0xMjgz
LDcgKzEyODIsNyBAQCBwcml2YXRlOgogCiAgICAgc3RhdGljIGJvb2wgcmVhZFN0cmluZyhjb25z
dCB1aW50OF90KiYgcHRyLCBjb25zdCB1aW50OF90KiBlbmQsIFN0cmluZyYgc3RyLCB1bnNpZ25l
ZCBsZW5ndGgpCiAgICAgewotICAgICAgICBpZiAobGVuZ3RoID49IG51bWVyaWNfbGltaXRzPGlu
dDMyX3Q+OjptYXgoKSAvIHNpemVvZihVQ2hhcikpCisgICAgICAgIGlmIChsZW5ndGggPj0gc3Rk
OjpudW1lcmljX2xpbWl0czxpbnQzMl90Pjo6bWF4KCkgLyBzaXplb2YoVUNoYXIpKQogICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgICAgIHVuc2lnbmVkIHNpemUgPSBsZW5ndGggKiBz
aXplb2YoVUNoYXIpOwpAQCAtMTc0OCw3ICsxNzQ3LDcgQEAgRGVzZXJpYWxpemF0aW9uUmVzdWx0
IENsb25lRGVzZXJpYWxpemVyOjpkZXNlcmlhbGl6ZSgpCiAgICAgICAgIG9iamVjdFN0YXJ0U3Rh
dGU6CiAgICAgICAgIGNhc2UgT2JqZWN0U3RhcnRTdGF0ZTogewogICAgICAgICAgICAgaWYgKG91
dHB1dE9iamVjdFN0YWNrLnNpemUoKSA+IG1heGltdW1GaWx0ZXJSZWN1cnNpb24pCi0gICAgICAg
ICAgICAgICAgcmV0dXJuIG1ha2VfcGFpcihKU1ZhbHVlKCksIFN0YWNrT3ZlcmZsb3dFcnJvcik7
CisgICAgICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV9wYWlyKEpTVmFsdWUoKSwgU3RhY2tP
dmVyZmxvd0Vycm9yKTsKICAgICAgICAgICAgIEpTT2JqZWN0KiBvdXRPYmplY3QgPSBjb25zdHJ1
Y3RFbXB0eU9iamVjdChtX2V4ZWMsIG1fZ2xvYmFsT2JqZWN0LT5vYmplY3RQcm90b3R5cGUoKSk7
CiAgICAgICAgICAgICBtX2djQnVmZmVyLmFwcGVuZChvdXRPYmplY3QpOwogICAgICAgICAgICAg
b3V0cHV0T2JqZWN0U3RhY2suYXBwZW5kKG91dE9iamVjdCk7CkBAIC0xNzgzLDcgKzE3ODIsNyBA
QCBEZXNlcmlhbGl6YXRpb25SZXN1bHQgQ2xvbmVEZXNlcmlhbGl6ZXI6OmRlc2VyaWFsaXplKCkK
ICAgICAgICAgfQogICAgICAgICBtYXBPYmplY3RTdGFydFN0YXRlOiB7CiAgICAgICAgICAgICBp
ZiAob3V0cHV0T2JqZWN0U3RhY2suc2l6ZSgpID4gbWF4aW11bUZpbHRlclJlY3Vyc2lvbikKLSAg
ICAgICAgICAgICAgICByZXR1cm4gbWFrZV9wYWlyKEpTVmFsdWUoKSwgU3RhY2tPdmVyZmxvd0Vy
cm9yKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gc3RkOjptYWtlX3BhaXIoSlNWYWx1ZSgpLCBT
dGFja092ZXJmbG93RXJyb3IpOwogICAgICAgICAgICAgSlNNYXAqIG1hcCA9IEpTTWFwOjpjcmVh
dGUobV9leGVjLT52bSgpLCBtX2dsb2JhbE9iamVjdC0+bWFwU3RydWN0dXJlKCkpOwogICAgICAg
ICAgICAgbV9nY0J1ZmZlci5hcHBlbmQobWFwKTsKICAgICAgICAgICAgIG91dHB1dE9iamVjdFN0
YWNrLmFwcGVuZChtYXApOwpAQCAtMTc5Myw3ICsxNzkyLDcgQEAgRGVzZXJpYWxpemF0aW9uUmVz
dWx0IENsb25lRGVzZXJpYWxpemVyOjpkZXNlcmlhbGl6ZSgpCiAgICAgICAgIH0KICAgICAgICAg
c2V0T2JqZWN0U3RhcnRTdGF0ZTogewogICAgICAgICAgICAgaWYgKG91dHB1dE9iamVjdFN0YWNr
LnNpemUoKSA+IG1heGltdW1GaWx0ZXJSZWN1cnNpb24pCi0gICAgICAgICAgICAgICAgcmV0dXJu
IG1ha2VfcGFpcihKU1ZhbHVlKCksIFN0YWNrT3ZlcmZsb3dFcnJvcik7CisgICAgICAgICAgICAg
ICAgcmV0dXJuIHN0ZDo6bWFrZV9wYWlyKEpTVmFsdWUoKSwgU3RhY2tPdmVyZmxvd0Vycm9yKTsK
ICAgICAgICAgICAgIEpTU2V0KiBzZXQgPSBKU1NldDo6Y3JlYXRlKG1fZXhlYy0+dm0oKSwgbV9n
bG9iYWxPYmplY3QtPnNldFN0cnVjdHVyZSgpKTsKICAgICAgICAgICAgIG1fZ2NCdWZmZXIuYXBw
ZW5kKHNldCk7CiAgICAgICAgICAgICBvdXRwdXRPYmplY3RTdGFjay5hcHBlbmQoc2V0KTsKQEAg
LTE4NDcsMTAgKzE4NDYsMTAgQEAgRGVzZXJpYWxpemF0aW9uUmVzdWx0IENsb25lRGVzZXJpYWxp
emVyOjpkZXNlcmlhbGl6ZSgpCiAgICAgfQogICAgIEFTU0VSVChvdXRWYWx1ZSk7CiAgICAgQVNT
RVJUKCFtX2ZhaWxlZCk7Ci0gICAgcmV0dXJuIG1ha2VfcGFpcihvdXRWYWx1ZSwgU3VjY2Vzc2Z1
bGx5Q29tcGxldGVkKTsKKyAgICByZXR1cm4gc3RkOjptYWtlX3BhaXIob3V0VmFsdWUsIFN1Y2Nl
c3NmdWxseUNvbXBsZXRlZCk7CiBlcnJvcjoKICAgICBmYWlsKCk7Ci0gICAgcmV0dXJuIG1ha2Vf
cGFpcihKU1ZhbHVlKCksIFZhbGlkYXRpb25FcnJvcik7CisgICAgcmV0dXJuIHN0ZDo6bWFrZV9w
YWlyKEpTVmFsdWUoKSwgVmFsaWRhdGlvbkVycm9yKTsKIH0KIAogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9DU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uY3BwCmluZGV4IGQxYmVhMDRk
NTUzYmY2OTZmMTZiODEyMjBkOTk0MjMxMzhkNDdiN2MuLjU2NWZmNTk0ZTRlZDJmNDY2YmY2NjA0
ODFkMGM0ZjgzMjczZDQyNzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDb21w
dXRlZFN0eWxlRGVjbGFyYXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDb21w
dXRlZFN0eWxlRGVjbGFyYXRpb24uY3BwCkBAIC0yMzAyLDcgKzIzMDIsNyBAQCBQYXNzUmVmUHRy
PENTU1ZhbHVlPiBDb21wdXRlZFN0eWxlRXh0cmFjdG9yOjpwcm9wZXJ0eVZhbHVlKENTU1Byb3Bl
cnR5SUQgcHJvcGVydAogICAgICAgICBjYXNlIENTU1Byb3BlcnR5T3V0bGluZVdpZHRoOgogICAg
ICAgICAgICAgcmV0dXJuIHpvb21BZGp1c3RlZFBpeGVsVmFsdWUoc3R5bGUtPm91dGxpbmVXaWR0
aCgpLCBzdHlsZS5nZXQoKSk7CiAgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlPdmVyZmxvdzoKLSAg
ICAgICAgICAgIHJldHVybiBjc3NWYWx1ZVBvb2woKS5jcmVhdGVWYWx1ZShtYXgoc3R5bGUtPm92
ZXJmbG93WCgpLCBzdHlsZS0+b3ZlcmZsb3dZKCkpKTsKKyAgICAgICAgICAgIHJldHVybiBjc3NW
YWx1ZVBvb2woKS5jcmVhdGVWYWx1ZShzdGQ6Om1heChzdHlsZS0+b3ZlcmZsb3dYKCksIHN0eWxl
LT5vdmVyZmxvd1koKSkpOwogICAgICAgICBjYXNlIENTU1Byb3BlcnR5T3ZlcmZsb3dXcmFwOgog
ICAgICAgICAgICAgcmV0dXJuIGNzc1ZhbHVlUG9vbCgpLmNyZWF0ZVZhbHVlKHN0eWxlLT5vdmVy
Zmxvd1dyYXAoKSk7CiAgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlPdmVyZmxvd1g6CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udFNlbGVjdG9yLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2Nzcy9DU1NGb250U2VsZWN0b3IuY3BwCmluZGV4IDFhNjRjN2EwN2ZiNzRmMTU0YzZmOTNj
ZDBmOTFjOTU5NGRkZWU2NDkuLjIxMWRmYTVjYjRkZDAxOTk1NmExMzhmMGZhY2MwZmY0M2VkZGFh
ZWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250U2VsZWN0b3IuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250U2VsZWN0b3IuY3BwCkBAIC01Nyw4ICs1Nyw2
IEBACiAjaW5jbHVkZSAiU1ZHTmFtZXMuaCIKICNlbmRpZgogCi11c2luZyBuYW1lc3BhY2Ugc3Rk
OwotCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHN0YXRpYyB1bnNpZ25lZCBmb250U2VsZWN0b3JJ
ZDsKQEAgLTU1MCw3ICs1NDgsNyBAQCBDU1NTZWdtZW50ZWRGb250RmFjZSogQ1NTRm9udFNlbGVj
dG9yOjpnZXRGb250RmFjZShjb25zdCBGb250RGVzY3JpcHRpb24mIGZvbnREZQogICAgICAgICB9
CiAKICAgICAgICAgZGVzaXJlZFRyYWl0c01hc2tGb3JDb21wYXJpc29uID0gdHJhaXRzTWFzazsK
LSAgICAgICAgc3RhYmxlX3NvcnQoY2FuZGlkYXRlRm9udEZhY2VzLmJlZ2luKCksIGNhbmRpZGF0
ZUZvbnRGYWNlcy5lbmQoKSwgY29tcGFyZUZvbnRGYWNlcyk7CisgICAgICAgIHN0ZDo6c3RhYmxl
X3NvcnQoY2FuZGlkYXRlRm9udEZhY2VzLmJlZ2luKCksIGNhbmRpZGF0ZUZvbnRGYWNlcy5lbmQo
KSwgY29tcGFyZUZvbnRGYWNlcyk7CiAgICAgICAgIHVuc2lnbmVkIG51bUNhbmRpZGF0ZXMgPSBj
YW5kaWRhdGVGb250RmFjZXMuc2l6ZSgpOwogICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBp
IDwgbnVtQ2FuZGlkYXRlczsgKytpKQogICAgICAgICAgICAgZmFjZS0+YXBwZW5kRm9udEZhY2Uo
Y2FuZGlkYXRlRm9udEZhY2VzW2ldKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9D
U1NHcmFkaWVudFZhbHVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NHcmFkaWVudFZhbHVl
LmNwcAppbmRleCBiZDM4MmNhZWUxOTRiMDFhYjI3NTBmYjViMmJjY2JiMDI2ZWE5YjQ1Li5lMzNk
ZTNkODUxNDczMzAwYzAxMWUwMDdhYmUzMThkYTBjZmZiMGNlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9jc3MvQ1NTR3JhZGllbnRWYWx1ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3Nz
L0NTU0dyYWRpZW50VmFsdWUuY3BwCkBAIC0zOSw4ICszOSw2IEBACiAjaW5jbHVkZSA8d3RmL3Rl
eHQvU3RyaW5nQnVpbGRlci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCi11
c2luZyBuYW1lc3BhY2Ugc3RkOwotCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFBhc3NSZWZQdHI8
SW1hZ2U+IENTU0dyYWRpZW50VmFsdWU6OmltYWdlKFJlbmRlckVsZW1lbnQqIHJlbmRlcmVyLCBj
b25zdCBJbnRTaXplJiBzaXplKQpAQCAtMTA0OSwxMCArMTA0NywxMCBAQCBQYXNzUmVmUHRyPEdy
YWRpZW50PiBDU1NSYWRpYWxHcmFkaWVudFZhbHVlOjpjcmVhdGVHcmFkaWVudChSZW5kZXJFbGVt
ZW50KiByZW5kZQogICAgICAgICAvLyBIb3Jpem9udGFsCiAgICAgICAgIHN3aXRjaCAoZmlsbCkg
ewogICAgICAgICBjYXNlIENsb3Nlc3RTaWRlOiB7Ci0gICAgICAgICAgICBmbG9hdCB4RGlzdCA9
IG1pbihzZWNvbmRQb2ludC54KCksIHNpemUud2lkdGgoKSAtIHNlY29uZFBvaW50LngoKSk7Ci0g
ICAgICAgICAgICBmbG9hdCB5RGlzdCA9IG1pbihzZWNvbmRQb2ludC55KCksIHNpemUuaGVpZ2h0
KCkgLSBzZWNvbmRQb2ludC55KCkpOworICAgICAgICAgICAgZmxvYXQgeERpc3QgPSBzdGQ6Om1p
bihzZWNvbmRQb2ludC54KCksIHNpemUud2lkdGgoKSAtIHNlY29uZFBvaW50LngoKSk7CisgICAg
ICAgICAgICBmbG9hdCB5RGlzdCA9IHN0ZDo6bWluKHNlY29uZFBvaW50LnkoKSwgc2l6ZS5oZWln
aHQoKSAtIHNlY29uZFBvaW50LnkoKSk7CiAgICAgICAgICAgICBpZiAoc2hhcGUgPT0gQ2lyY2xl
KSB7Ci0gICAgICAgICAgICAgICAgZmxvYXQgc21hbGxlciA9IG1pbih4RGlzdCwgeURpc3QpOwor
ICAgICAgICAgICAgICAgIGZsb2F0IHNtYWxsZXIgPSBzdGQ6Om1pbih4RGlzdCwgeURpc3QpOwog
ICAgICAgICAgICAgICAgIHhEaXN0ID0gc21hbGxlcjsKICAgICAgICAgICAgICAgICB5RGlzdCA9
IHNtYWxsZXI7CiAgICAgICAgICAgICB9CkBAIC0xMDYxLDEwICsxMDU5LDEwIEBAIFBhc3NSZWZQ
dHI8R3JhZGllbnQ+IENTU1JhZGlhbEdyYWRpZW50VmFsdWU6OmNyZWF0ZUdyYWRpZW50KFJlbmRl
ckVsZW1lbnQqIHJlbmRlCiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBj
YXNlIEZhcnRoZXN0U2lkZTogewotICAgICAgICAgICAgZmxvYXQgeERpc3QgPSBtYXgoc2Vjb25k
UG9pbnQueCgpLCBzaXplLndpZHRoKCkgLSBzZWNvbmRQb2ludC54KCkpOwotICAgICAgICAgICAg
ZmxvYXQgeURpc3QgPSBtYXgoc2Vjb25kUG9pbnQueSgpLCBzaXplLmhlaWdodCgpIC0gc2Vjb25k
UG9pbnQueSgpKTsKKyAgICAgICAgICAgIGZsb2F0IHhEaXN0ID0gc3RkOjptYXgoc2Vjb25kUG9p
bnQueCgpLCBzaXplLndpZHRoKCkgLSBzZWNvbmRQb2ludC54KCkpOworICAgICAgICAgICAgZmxv
YXQgeURpc3QgPSBzdGQ6Om1heChzZWNvbmRQb2ludC55KCksIHNpemUuaGVpZ2h0KCkgLSBzZWNv
bmRQb2ludC55KCkpOwogICAgICAgICAgICAgaWYgKHNoYXBlID09IENpcmNsZSkgewotICAgICAg
ICAgICAgICAgIGZsb2F0IGxhcmdlciA9IG1heCh4RGlzdCwgeURpc3QpOworICAgICAgICAgICAg
ICAgIGZsb2F0IGxhcmdlciA9IHN0ZDo6bWF4KHhEaXN0LCB5RGlzdCk7CiAgICAgICAgICAgICAg
ICAgeERpc3QgPSBsYXJnZXI7CiAgICAgICAgICAgICAgICAgeURpc3QgPSBsYXJnZXI7CiAgICAg
ICAgICAgICB9CkBAIC0xMDgwLDggKzEwNzgsOCBAQCBQYXNzUmVmUHRyPEdyYWRpZW50PiBDU1NS
YWRpYWxHcmFkaWVudFZhbHVlOjpjcmVhdGVHcmFkaWVudChSZW5kZXJFbGVtZW50KiByZW5kZQog
ICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgLy8gSWYgPHNoYXBlPiBpcyBlbGxp
cHNlLCB0aGUgZ3JhZGllbnQtc2hhcGUgaGFzIHRoZSBzYW1lIHJhdGlvIG9mIHdpZHRoIHRvIGhl
aWdodAogICAgICAgICAgICAgICAgIC8vIHRoYXQgaXQgd291bGQgaWYgY2xvc2VzdC1zaWRlIG9y
IGZhcnRoZXN0LXNpZGUgd2VyZSBzcGVjaWZpZWQsIGFzIGFwcHJvcHJpYXRlLgotICAgICAgICAg
ICAgICAgIGZsb2F0IHhEaXN0ID0gbWluKHNlY29uZFBvaW50LngoKSwgc2l6ZS53aWR0aCgpIC0g
c2Vjb25kUG9pbnQueCgpKTsKLSAgICAgICAgICAgICAgICBmbG9hdCB5RGlzdCA9IG1pbihzZWNv
bmRQb2ludC55KCksIHNpemUuaGVpZ2h0KCkgLSBzZWNvbmRQb2ludC55KCkpOworICAgICAgICAg
ICAgICAgIGZsb2F0IHhEaXN0ID0gc3RkOjptaW4oc2Vjb25kUG9pbnQueCgpLCBzaXplLndpZHRo
KCkgLSBzZWNvbmRQb2ludC54KCkpOworICAgICAgICAgICAgICAgIGZsb2F0IHlEaXN0ID0gc3Rk
OjptaW4oc2Vjb25kUG9pbnQueSgpLCBzaXplLmhlaWdodCgpIC0gc2Vjb25kUG9pbnQueSgpKTsK
IAogICAgICAgICAgICAgICAgIHNlY29uZFJhZGl1cyA9IGhvcml6b250YWxFbGxpcHNlUmFkaXVz
KGNvcm5lciAtIHNlY29uZFBvaW50LCB4RGlzdCAvIHlEaXN0KTsKICAgICAgICAgICAgICAgICBh
c3BlY3RSYXRpbyA9IHhEaXN0IC8geURpc3Q7CkBAIC0xMDk3LDggKzEwOTUsOCBAQCBQYXNzUmVm
UHRyPEdyYWRpZW50PiBDU1NSYWRpYWxHcmFkaWVudFZhbHVlOjpjcmVhdGVHcmFkaWVudChSZW5k
ZXJFbGVtZW50KiByZW5kZQogICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgLy8g
SWYgPHNoYXBlPiBpcyBlbGxpcHNlLCB0aGUgZ3JhZGllbnQtc2hhcGUgaGFzIHRoZSBzYW1lIHJh
dGlvIG9mIHdpZHRoIHRvIGhlaWdodAogICAgICAgICAgICAgICAgIC8vIHRoYXQgaXQgd291bGQg
aWYgY2xvc2VzdC1zaWRlIG9yIGZhcnRoZXN0LXNpZGUgd2VyZSBzcGVjaWZpZWQsIGFzIGFwcHJv
cHJpYXRlLgotICAgICAgICAgICAgICAgIGZsb2F0IHhEaXN0ID0gbWF4KHNlY29uZFBvaW50Lngo
KSwgc2l6ZS53aWR0aCgpIC0gc2Vjb25kUG9pbnQueCgpKTsKLSAgICAgICAgICAgICAgICBmbG9h
dCB5RGlzdCA9IG1heChzZWNvbmRQb2ludC55KCksIHNpemUuaGVpZ2h0KCkgLSBzZWNvbmRQb2lu
dC55KCkpOworICAgICAgICAgICAgICAgIGZsb2F0IHhEaXN0ID0gc3RkOjptYXgoc2Vjb25kUG9p
bnQueCgpLCBzaXplLndpZHRoKCkgLSBzZWNvbmRQb2ludC54KCkpOworICAgICAgICAgICAgICAg
IGZsb2F0IHlEaXN0ID0gc3RkOjptYXgoc2Vjb25kUG9pbnQueSgpLCBzaXplLmhlaWdodCgpIC0g
c2Vjb25kUG9pbnQueSgpKTsKIAogICAgICAgICAgICAgICAgIHNlY29uZFJhZGl1cyA9IGhvcml6
b250YWxFbGxpcHNlUmFkaXVzKGNvcm5lciAtIHNlY29uZFBvaW50LCB4RGlzdCAvIHlEaXN0KTsK
ICAgICAgICAgICAgICAgICBhc3BlY3RSYXRpbyA9IHhEaXN0IC8geURpc3Q7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9D
U1NQYXJzZXIuY3BwCmluZGV4IGE1MGY0MWEwODVjMjFiMTA5MWNlNzAwNTExMmM3MDNiYWIxMzdk
YTkuLmEzYzRjMjExMWRiZjVhNTYyYWE3NjUxNTgzYzVhYmMxYWQ5MjFhYWEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nz
cy9DU1NQYXJzZXIuY3BwCkBAIC0xMjcsNyArMTI3LDYgQEAgZXh0ZXJuIGludCBjc3N5eWRlYnVn
OwogCiBleHRlcm4gaW50IGNzc3l5cGFyc2UoV2ViQ29yZTo6Q1NTUGFyc2VyKik7CiAKLXVzaW5n
IG5hbWVzcGFjZSBzdGQ7CiB1c2luZyBuYW1lc3BhY2UgV1RGOwogCiBuYW1lc3BhY2UgewpAQCAt
MjU2OSw4ICsyNTY4LDcgQEAgYm9vbCBDU1NQYXJzZXI6OnBhcnNlVmFsdWUoQ1NTUHJvcGVydHlJ
RCBwcm9wSWQsIGJvb2wgaW1wb3J0YW50KQogICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRPcmRl
cjoKICAgICAgICAgaWYgKHZhbGlkVW5pdCh2YWx1ZSwgRkludGVnZXIsIENTU1N0cmljdE1vZGUp
KSB7CiAgICAgICAgICAgICAvLyBXZSByZXN0cmljdCB0aGUgc21hbGxlc3QgdmFsdWUgdG8gaW50
IG1pbiArIDIgYmVjYXVzZSB3ZSB1c2UgaW50IG1pbiBhbmQgaW50IG1pbiArIDEgYXMgc3BlY2lh
bCB2YWx1ZXMgaW4gYSBoYXNoIHNldC4KLSAgICAgICAgICAgIHBhcnNlZFZhbHVlID0gY3NzVmFs
dWVQb29sKCkuY3JlYXRlVmFsdWUobWF4KHN0YXRpY19jYXN0PGRvdWJsZT4oc3RkOjpudW1lcmlj
X2xpbWl0czxpbnQ+OjptaW4oKSArIDIpLCB2YWx1ZS0+ZlZhbHVlKSwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0aWNfY2Fz
dDxDU1NQcmltaXRpdmVWYWx1ZTo6VW5pdFR5cGVzPih2YWx1ZS0+dW5pdCkpOworICAgICAgICAg
ICAgcGFyc2VkVmFsdWUgPSBjc3NWYWx1ZVBvb2woKS5jcmVhdGVWYWx1ZShzdGQ6Om1heDxkb3Vi
bGU+KHN0ZDo6bnVtZXJpY19saW1pdHM8aW50Pjo6bWluKCkgKyAyLCB2YWx1ZS0+ZlZhbHVlKSwg
c3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU6OlVuaXRUeXBlcz4odmFsdWUtPnVuaXQpKTsK
ICAgICAgICAgICAgIG1fdmFsdWVMaXN0LT5uZXh0KCk7CiAgICAgICAgIH0KICAgICAgICAgYnJl
YWs7CkBAIC02NDgwLDcgKzY0NzgsNyBAQCBib29sIENTU1BhcnNlcjo6cGFyc2VDb2xvclBhcmFt
ZXRlcnMoQ1NTUGFyc2VyVmFsdWUqIHZhbHVlLCBpbnQqIGNvbG9yQXJyYXksIGJvbwogICAgICAg
ICBjb25zdCBkb3VibGUgdmFsdWUgPSBwYXJzZWREb3VibGUodiwgUmVsZWFzZVBhcnNlZENhbGNW
YWx1ZSk7CiAgICAgICAgIC8vIENvbnZlcnQgdGhlIGZsb2F0aW5nIHBvaW50ZXIgbnVtYmVyIG9m
IGFscGhhIHRvIGFuIGludGVnZXIgaW4gdGhlIHJhbmdlIFswLCAyNTYpLAogICAgICAgICAvLyB3
aXRoIGFuIGVxdWFsIGRpc3RyaWJ1dGlvbiBhY3Jvc3MgYWxsIDI1NiB2YWx1ZXMuCi0gICAgICAg
IGNvbG9yQXJyYXlbM10gPSBzdGF0aWNfY2FzdDxpbnQ+KG1heCgwLjAsIG1pbigxLjAsIHZhbHVl
KSkgKiBuZXh0YWZ0ZXIoMjU2LjAsIDAuMCkpOworICAgICAgICBjb2xvckFycmF5WzNdID0gc3Rh
dGljX2Nhc3Q8aW50PihzdGQ6Om1heDxkb3VibGU+KDAsIHN0ZDo6bWluPGRvdWJsZT4oMSwgdmFs
dWUpKSAqIG5leHRhZnRlcigyNTYuMCwgMC4wKSk7CiAgICAgfQogICAgIHJldHVybiB0cnVlOwog
fQpAQCAtNjUwNiw3ICs2NTA0LDcgQEAgYm9vbCBDU1NQYXJzZXI6OnBhcnNlSFNMUGFyYW1ldGVy
cyhDU1NQYXJzZXJWYWx1ZSogdmFsdWUsIGRvdWJsZSogY29sb3JBcnJheSwgYm8KICAgICAgICAg
diA9IGFyZ3MtPm5leHQoKTsKICAgICAgICAgaWYgKCF2YWxpZFVuaXQodiwgRlBlcmNlbnQsIENT
U1N0cmljdE1vZGUpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICBjb2xvckFy
cmF5W2ldID0gbWF4KDAuMCwgbWluKDEwMC4wLCBwYXJzZWREb3VibGUodiwgUmVsZWFzZVBhcnNl
ZENhbGNWYWx1ZSkpKSAvIDEwMC4wOyAvLyBuZWVkcyB0byBiZSB2YWx1ZSBiZXR3ZWVuIDAgYW5k
IDEuMAorICAgICAgICBjb2xvckFycmF5W2ldID0gc3RkOjptYXg8ZG91YmxlPigwLCBzdGQ6Om1p
bjxkb3VibGU+KDEwMCwgcGFyc2VkRG91YmxlKHYsIFJlbGVhc2VQYXJzZWRDYWxjVmFsdWUpKSkg
LyAxMDAuMDsgLy8gbmVlZHMgdG8gYmUgdmFsdWUgYmV0d2VlbiAwIGFuZCAxLjAKICAgICB9CiAg
ICAgaWYgKHBhcnNlQWxwaGEpIHsKICAgICAgICAgdiA9IGFyZ3MtPm5leHQoKTsKQEAgLTY1MTUs
NyArNjUxMyw3IEBAIGJvb2wgQ1NTUGFyc2VyOjpwYXJzZUhTTFBhcmFtZXRlcnMoQ1NTUGFyc2Vy
VmFsdWUqIHZhbHVlLCBkb3VibGUqIGNvbG9yQXJyYXksIGJvCiAgICAgICAgIHYgPSBhcmdzLT5u
ZXh0KCk7CiAgICAgICAgIGlmICghdmFsaWRVbml0KHYsIEZOdW1iZXIsIENTU1N0cmljdE1vZGUp
KQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICBjb2xvckFycmF5WzNdID0gbWF4
KDAuMCwgbWluKDEuMCwgcGFyc2VkRG91YmxlKHYsIFJlbGVhc2VQYXJzZWRDYWxjVmFsdWUpKSk7
CisgICAgICAgIGNvbG9yQXJyYXlbM10gPSBzdGQ6Om1heDxkb3VibGU+KDAsIHN0ZDo6bWluPGRv
dWJsZT4oMSwgcGFyc2VkRG91YmxlKHYsIFJlbGVhc2VQYXJzZWRDYWxjVmFsdWUpKSk7CiAgICAg
fQogICAgIHJldHVybiB0cnVlOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NT
U1JlZmxlY3RWYWx1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUmVmbGVjdFZhbHVlLmNw
cAppbmRleCAxNWFlOGZhZmIzOGE5NTMzNjNlMThjZDRmYzNjOTY5ODU3ZWE0ZGIxLi44YWU4M2Nm
NWU4NWQ4N2U4NmEwODdlM2Q0OTNmMzZiYmVkNjAyYWY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9jc3MvQ1NTUmVmbGVjdFZhbHVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NT
UmVmbGVjdFZhbHVlLmNwcApAQCAtMjksOCArMjksNiBAQAogI2luY2x1ZGUgIkNTU1ByaW1pdGl2
ZVZhbHVlLmgiCiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgogCi11c2luZyBu
YW1lc3BhY2Ugc3RkOwotCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFN0cmluZyBDU1NSZWZsZWN0
VmFsdWU6OmN1c3RvbUNTU1RleHQoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
Y3NzL0RlcHJlY2F0ZWRTdHlsZUJ1aWxkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0RlcHJl
Y2F0ZWRTdHlsZUJ1aWxkZXIuY3BwCmluZGV4IDcwNzQ5MDBhNjA3NzFmZGJkNjgxY2YwODlhNTlk
NGVhYmM1MTcyZDUuLjAwMGY0NzMwMjgwMTU5YjAyZTFkNGYzMmY1ZTBmYWM3ZjdiODZmYzYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9EZXByZWNhdGVkU3R5bGVCdWlsZGVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvRGVwcmVjYXRlZFN0eWxlQnVpbGRlci5jcHAKQEAgLTUz
LDggKzUzLDYgQEAKICNpbmNsdWRlICJTaGFwZVZhbHVlLmgiCiAjZW5kaWYKIAotdXNpbmcgbmFt
ZXNwYWNlIHN0ZDsKLQogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBlbnVtIEV4cGFuZFZhbHVlQmVo
YXZpb3Ige1N1cHByZXNzVmFsdWUgPSAwLCBFeHBhbmRWYWx1ZX07CkBAIC04ODMsNyArODgxLDcg
QEAgcHVibGljOgogCiAgICAgICAgIC8vIE92ZXJseSBsYXJnZSBmb250IHNpemVzIHdpbGwgY2F1
c2UgY3Jhc2hlcyBvbiBzb21lIHBsYXRmb3JtcyAoc3VjaCBhcyBXaW5kb3dzKS4KICAgICAgICAg
Ly8gQ2FwIGZvbnQgc2l6ZSBoZXJlIHRvIG1ha2Ugc3VyZSB0aGF0IGRvZXNuJ3QgaGFwcGVuLgot
ICAgICAgICBzaXplID0gbWluKG1heGltdW1BbGxvd2VkRm9udFNpemUsIHNpemUpOworICAgICAg
ICBzaXplID0gc3RkOjptaW4obWF4aW11bUFsbG93ZWRGb250U2l6ZSwgc2l6ZSk7CiAKICAgICAg
ICAgc3R5bGVSZXNvbHZlci0+c2V0Rm9udFNpemUoZm9udERlc2NyaXB0aW9uLCBzaXplKTsKICAg
ICAgICAgc3R5bGVSZXNvbHZlci0+c2V0Rm9udERlc2NyaXB0aW9uKGZvbnREZXNjcmlwdGlvbik7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvUHJvcGVydHlTZXRDU1NTdHlsZURlY2xh
cmF0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9Qcm9wZXJ0eVNldENTU1N0eWxlRGVjbGFy
YXRpb24uY3BwCmluZGV4IDFkODAyZjVkMTg5NGUzNzdkNDc5NDg2NTdiN2JjMmY3MTJkNzgyZDAu
LmRhMjhhNGNjMjQ1ODAwMzk3M2ZhNWI3NzlkNjJhZDIzNGM5ZTYxZDYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9Qcm9wZXJ0eVNldENTU1N0eWxlRGVjbGFyYXRpb24uY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2Nzcy9Qcm9wZXJ0eVNldENTU1N0eWxlRGVjbGFyYXRpb24uY3BwCkBA
IC0zMSw4ICszMSw2IEBACiAjaW5jbHVkZSAiU3R5bGVQcm9wZXJ0eVNldC5oIgogI2luY2x1ZGUg
IlN0eWxlZEVsZW1lbnQuaCIKIAotdXNpbmcgbmFtZXNwYWNlIHN0ZDsKLQogbmFtZXNwYWNlIFdl
YkNvcmUgewogCiBuYW1lc3BhY2UgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL1NW
R0NTU1BhcnNlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU1ZHQ1NTUGFyc2VyLmNwcAppbmRl
eCBkZmRjNzRlOGJhMzkyMzI0MjZkNDVhMjQzYzRlNjNkZGRjMDAyYjQzLi45ZTUyZTljYzE1OGE3
MzVjYzYwOGZjNDFlMTI2YWQzZTkyNDk4NDk2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9j
c3MvU1ZHQ1NTUGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU1ZHQ1NTUGFyc2Vy
LmNwcApAQCAtMzIsOCArMzIsNiBAQAogI2luY2x1ZGUgIlJlbmRlclRoZW1lLmgiCiAjaW5jbHVk
ZSAiU1ZHUGFpbnQuaCIKIAotdXNpbmcgbmFtZXNwYWNlIHN0ZDsKLQogbmFtZXNwYWNlIFdlYkNv
cmUgewogCiBib29sIENTU1BhcnNlcjo6cGFyc2VTVkdWYWx1ZShDU1NQcm9wZXJ0eUlEIHByb3BJ
ZCwgYm9vbCBpbXBvcnRhbnQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVQ
cm9wZXJ0eVNldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVQcm9wZXJ0eVNldC5jcHAK
aW5kZXggYmVhN2Q0MDE4ZDJiNzA3NTA1OWNiY2YwOTkxMjRkOTY4NTRhNjAwOS4uZDA2OTg2Y2M2
NDNiYjkwNWEwY2JjMWIyMmUzNWU1MjRhMTE4Yjg1YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvY3NzL1N0eWxlUHJvcGVydHlTZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHls
ZVByb3BlcnR5U2V0LmNwcApAQCAtNDUsOCArNDUsNiBAQAogI2luY2x1ZGUgPHd0Zi90ZXh0L0NT
dHJpbmcuaD4KICNlbmRpZgogCi11c2luZyBuYW1lc3BhY2Ugc3RkOwotCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKIHN0YXRpYyBzaXplX3Qgc2l6ZUZvckltbXV0YWJsZVN0eWxlUHJvcGVydHlTZXRX
aXRoUHJvcGVydHlDb3VudCh1bnNpZ25lZCBjb3VudCkKQEAgLTM2Nyw5ICszNjUsOSBAQCBTdHJp
bmcgU3R5bGVQcm9wZXJ0eVNldDo6Z2V0TGF5ZXJlZFNob3J0aGFuZFZhbHVlKGNvbnN0IFN0eWxl
UHJvcGVydHlTaG9ydGhhbmQmCiAgICAgICAgIHZhbHVlc1tpXSA9IGdldFByb3BlcnR5Q1NTVmFs
dWUoc2hvcnRoYW5kLnByb3BlcnRpZXMoKVtpXSk7CiAgICAgICAgIGlmICh2YWx1ZXNbaV0pIHsK
ICAgICAgICAgICAgIGlmICh2YWx1ZXNbaV0tPmlzQmFzZVZhbHVlTGlzdCgpKQotICAgICAgICAg
ICAgICAgIG51bUxheWVycyA9IG1heCh0b0NTU1ZhbHVlTGlzdCh2YWx1ZXNbaV0uZ2V0KCkpLT5s
ZW5ndGgoKSwgbnVtTGF5ZXJzKTsKKyAgICAgICAgICAgICAgICBudW1MYXllcnMgPSBzdGQ6Om1h
eCh0b0NTU1ZhbHVlTGlzdCh2YWx1ZXNbaV0uZ2V0KCkpLT5sZW5ndGgoKSwgbnVtTGF5ZXJzKTsK
ICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICBudW1MYXllcnMgPSBtYXg8c2l6ZV90
PigxVSwgbnVtTGF5ZXJzKTsKKyAgICAgICAgICAgICAgICBudW1MYXllcnMgPSBzdGQ6Om1heDxz
aXplX3Q+KDFVLCBudW1MYXllcnMpOwogICAgICAgICB9CiAgICAgfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3Mv
U3R5bGVSZXNvbHZlci5jcHAKaW5kZXggM2M4ZTc4MWFjMjYwMjY5ZmY1MjZlZmM5NDIwZmVmNzQ2
MDIxM2Q0ZS4uZTdhZjYzZjExNzcwNDIwZDIzN2E1ZDU0OGNkMmNkMDY5NGZjMzE2OSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVyLmNwcApAQCAtMTg3LDggKzE4Nyw2IEBACiAjaW5jbHVk
ZSAiV2ViVlRURWxlbWVudC5oIgogI2VuZGlmCiAKLXVzaW5nIG5hbWVzcGFjZSBzdGQ7Ci0KIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAogdXNpbmcgbmFtZXNwYWNlIEhUTUxOYW1lczsKQEAgLTQxMjEs
OSArNDExOSw5IEBAIGludCBTdHlsZVJlc29sdmVyOjp2aWV3cG9ydFBlcmNlbnRhZ2VWYWx1ZShD
U1NQcmltaXRpdmVWYWx1ZSYgdW5pdCwgaW50IHBlcmNlbnRhCiAgICAgaWYgKHVuaXQuaXNWaWV3
cG9ydFBlcmNlbnRhZ2VXaWR0aCgpKQogICAgICAgICByZXR1cm4gdmlld1BvcnRXaWR0aDsKICAg
ICBpZiAodW5pdC5pc1ZpZXdwb3J0UGVyY2VudGFnZU1heCgpKQotICAgICAgICByZXR1cm4gbWF4
KHZpZXdQb3J0V2lkdGgsIHZpZXdQb3J0SGVpZ2h0KTsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bWF4
KHZpZXdQb3J0V2lkdGgsIHZpZXdQb3J0SGVpZ2h0KTsKICAgICBpZiAodW5pdC5pc1ZpZXdwb3J0
UGVyY2VudGFnZU1pbigpKQotICAgICAgICByZXR1cm4gbWluKHZpZXdQb3J0V2lkdGgsIHZpZXdQ
b3J0SGVpZ2h0KTsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bWluKHZpZXdQb3J0V2lkdGgsIHZpZXdQ
b3J0SGVpZ2h0KTsKIAogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIHJldHVybiAwOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0NoYXJhY3RlckRhdGEuY3BwIGIvU291cmNl
L1dlYkNvcmUvZG9tL0NoYXJhY3RlckRhdGEuY3BwCmluZGV4IGEyYzc2M2M0MjcxNzcyNjA4NTM4
MTQ4NzExN2MyNmU1YmY5NTcwNjcuLjcxMGRhNWVlNGQ2Mjg3ODQzNTM1NTM5OGY4OGIwNTFjYmE3
MjYyZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9DaGFyYWN0ZXJEYXRhLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQ2hhcmFjdGVyRGF0YS5jcHAKQEAgLTM4LDggKzM4LDYg
QEAKICNpbmNsdWRlICJUZXh0QnJlYWtJdGVyYXRvci5oIgogI2luY2x1ZGUgPHd0Zi9SZWYuaD4K
IAotdXNpbmcgbmFtZXNwYWNlIHN0ZDsKLQogbmFtZXNwYWNlIFdlYkNvcmUgewogCiB2b2lkIENo
YXJhY3RlckRhdGE6OnNldERhdGEoY29uc3QgU3RyaW5nJiBkYXRhLCBFeGNlcHRpb25Db2RlJikK
QEAgLTcyLDcgKzcwLDcgQEAgdW5zaWduZWQgQ2hhcmFjdGVyRGF0YTo6cGFyc2VyQXBwZW5kRGF0
YShjb25zdCBTdHJpbmcmIHN0cmluZywgdW5zaWduZWQgb2Zmc2V0LAogICAgIEFTU0VSVChsZW5n
dGhMaW1pdCA+PSBvbGRMZW5ndGgpOwogCiAgICAgdW5zaWduZWQgY2hhcmFjdGVyTGVuZ3RoID0g
c3RyaW5nLmxlbmd0aCgpIC0gb2Zmc2V0OwotICAgIHVuc2lnbmVkIGNoYXJhY3Rlckxlbmd0aExp
bWl0ID0gbWluKGNoYXJhY3Rlckxlbmd0aCwgbGVuZ3RoTGltaXQgLSBvbGRMZW5ndGgpOworICAg
IHVuc2lnbmVkIGNoYXJhY3Rlckxlbmd0aExpbWl0ID0gc3RkOjptaW4oY2hhcmFjdGVyTGVuZ3Ro
LCBsZW5ndGhMaW1pdCAtIG9sZExlbmd0aCk7CiAKICAgICAvLyBDaGVjayB0aGF0IHdlIGFyZSBu
b3Qgb24gYW4gdW5icmVha2FibGUgYm91bmRhcnkuCiAgICAgLy8gU29tZSB0ZXh0IGJyZWFrIGl0
ZXJhdG9yIGltcGxlbWVudGF0aW9ucyB3b3JrIGJlc3QgaWYgdGhlIHBhc3NlZCBidWZmZXIgaXMg
YXMgc21hbGwgYXMgcG9zc2libGUsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vQ29u
dGFpbmVyTm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQ29udGFpbmVyTm9kZS5jcHAKaW5k
ZXggYzBhZWFkMzk3MjQzNDljNWVlNTAxNmM1YTM2ODJmZGUzOTQ4YzFmMS4uMzI0NGQ4MjExMjA2
ODQwMGJiMTkzOTlhYWE5NGFjYzJhMmNhZjFhOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
ZG9tL0NvbnRhaW5lck5vZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Db250YWluZXJO
b2RlLmNwcApAQCAtNjQsOCArNjQsNiBAQAogI2luY2x1ZGUgIkRlbGV0ZUJ1dHRvbkNvbnRyb2xs
ZXIuaCIKICNlbmRpZgogCi11c2luZyBuYW1lc3BhY2Ugc3RkOwotCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKIHN0YXRpYyB2b2lkIGRpc3BhdGNoQ2hpbGRJbnNlcnRpb25FdmVudHMoTm9kZSYpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9Eb2N1bWVudC5jcHAKaW5kZXggZGE1MWUzM2IzYWNmMTk4ZGZmMTY4YTMxMDhkNzVm
YmMwYzBkMGEyNC4uZWRjOGEyNTg4M2U4MTMyNWY2OWI2ZGE3ZTlhNmIxMThkM2MyMjFmMCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vRG9jdW1lbnQuY3BwCkBAIC0yMjQsNyArMjI0LDYgQEAKICNpbmNsdWRlICJDYXB0
aW9uVXNlclByZWZlcmVuY2VzLmgiCiAjZW5kaWYKIAotdXNpbmcgbmFtZXNwYWNlIHN0ZDsKIHVz
aW5nIG5hbWVzcGFjZSBXVEY7CiB1c2luZyBuYW1lc3BhY2UgVW5pY29kZTsKIApAQCAtMjQ4Miw3
ICsyNDgxLDcgQEAgaW50IERvY3VtZW50OjptaW5pbXVtTGF5b3V0RGVsYXkoKQogICAgIG1fb3Zl
ck1pbmltdW1MYXlvdXRUaHJlc2hvbGQgPSBlbGFwc2VkID4gY0xheW91dFNjaGVkdWxlVGhyZXNo
b2xkOwogICAgIAogICAgIC8vIFdlJ2xsIHdhbnQgdG8gc2NoZWR1bGUgdGhlIHRpbWVyIHRvIGZp
cmUgYXQgdGhlIG1pbmltdW0gbGF5b3V0IHRocmVzaG9sZC4KLSAgICByZXR1cm4gbWF4KDAsIGNM
YXlvdXRTY2hlZHVsZVRocmVzaG9sZCAtIGVsYXBzZWQpOworICAgIHJldHVybiBzdGQ6Om1heCgw
LCBjTGF5b3V0U2NoZWR1bGVUaHJlc2hvbGQgLSBlbGFwc2VkKTsKIH0KIAogaW50IERvY3VtZW50
OjplbGFwc2VkVGltZSgpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9k
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5jcHAKaW5kZXggNTBjODIzNzI1MmVlNzFm
YjU3N2FjNTJhNjk3YWJhYTY0YTYyMGE4Ny4uNmUzMzhkYTA2OTFiYTliODI2ZWY0ODFmYTE4Yjli
YTU5Nzc0Y2I0YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcApAQCAtMTIyLDggKzEyMiw2IEBACiAjaW5jbHVk
ZSAiSW5zcGVjdG9yQ29udHJvbGxlci5oIgogI2VuZGlmCiAKLXVzaW5nIG5hbWVzcGFjZSBzdGQ7
Ci0KIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogdXNpbmcgbmFtZXNwYWNlIEhUTUxOYW1lczsKQEAg
LTE1MDgsNyArMTUwNiw3IEBAIHVuc2lnbmVkIHNob3J0IE5vZGU6OmNvbXBhcmVEb2N1bWVudFBv
c2l0aW9uKE5vZGUqIG90aGVyTm9kZSkKICAgICAgICAgcmV0dXJuIGNvbXBhcmVEZXRhY2hlZEVs
ZW1lbnRzUG9zaXRpb24odGhpcywgb3RoZXJOb2RlKTsKIAogICAgIC8vIFdhbGsgdGhlIHR3byBj
aGFpbnMgYmFja3dhcmRzIGFuZCBsb29rIGZvciB0aGUgZmlyc3QgZGlmZmVyZW5jZS4KLSAgICBm
b3IgKHVuc2lnbmVkIGkgPSBtaW4oaW5kZXgxLCBpbmRleDIpOyBpOyAtLWkpIHsKKyAgICBmb3Ig
KHVuc2lnbmVkIGkgPSBzdGQ6Om1pbihpbmRleDEsIGluZGV4Mik7IGk7IC0taSkgewogICAgICAg
ICBOb2RlKiBjaGlsZDEgPSBjaGFpbjFbLS1pbmRleDFdOwogICAgICAgICBOb2RlKiBjaGlsZDIg
PSBjaGFpbjJbLS1pbmRleDJdOwogICAgICAgICBpZiAoY2hpbGQxICE9IGNoaWxkMikgewpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1JhbmdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9SYW5nZS5jcHAKaW5kZXggNmFlZjdlYWVlYzY4YTIxNzlkNTk0NjY5ZTczYzE4OWM4YzRiNzBh
Zi4uN2FiYTE3NWFjYzFkN2MwMmFmYjFhYjVhMGE3ZTMzMzhhMmRkMmY2ZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvZG9tL1JhbmdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vUmFu
Z2UuY3BwCkBAIC01Nyw3ICs1Nyw2IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotdXNpbmcg
bmFtZXNwYWNlIHN0ZDsKIHVzaW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7CiAKIERFRklORV9ERUJV
R19PTkxZX0dMT0JBTChXVEY6OlJlZkNvdW50ZWRMZWFrQ291bnRlciwgcmFuZ2VDb3VudGVyLCAo
IlJhbmdlIikpOwpAQCAtMTA3Miw4ICsxMDcxLDggQEAgU3RyaW5nIFJhbmdlOjp0b1N0cmluZyhF
eGNlcHRpb25Db2RlJiBlYykgY29uc3QKICAgICAgICAgaWYgKG4tPm5vZGVUeXBlKCkgPT0gTm9k
ZTo6VEVYVF9OT0RFIHx8IG4tPm5vZGVUeXBlKCkgPT0gTm9kZTo6Q0RBVEFfU0VDVElPTl9OT0RF
KSB7CiAgICAgICAgICAgICBjb25zdCBTdHJpbmcmIGRhdGEgPSBzdGF0aWNfY2FzdDxDaGFyYWN0
ZXJEYXRhKj4obiktPmRhdGEoKTsKICAgICAgICAgICAgIGludCBsZW5ndGggPSBkYXRhLmxlbmd0
aCgpOwotICAgICAgICAgICAgaW50IHN0YXJ0ID0gKG4gPT0gbV9zdGFydC5jb250YWluZXIoKSkg
PyBtaW4obWF4KDAsIG1fc3RhcnQub2Zmc2V0KCkpLCBsZW5ndGgpIDogMDsKLSAgICAgICAgICAg
IGludCBlbmQgPSAobiA9PSBtX2VuZC5jb250YWluZXIoKSkgPyBtaW4obWF4KHN0YXJ0LCBtX2Vu
ZC5vZmZzZXQoKSksIGxlbmd0aCkgOiBsZW5ndGg7CisgICAgICAgICAgICBpbnQgc3RhcnQgPSAo
biA9PSBtX3N0YXJ0LmNvbnRhaW5lcigpKSA/IHN0ZDo6bWluKHN0ZDo6bWF4KDAsIG1fc3RhcnQu
b2Zmc2V0KCkpLCBsZW5ndGgpIDogMDsKKyAgICAgICAgICAgIGludCBlbmQgPSAobiA9PSBtX2Vu
ZC5jb250YWluZXIoKSkgPyBzdGQ6Om1pbihzdGQ6Om1heChzdGFydCwgbV9lbmQub2Zmc2V0KCkp
LCBsZW5ndGgpIDogbGVuZ3RoOwogICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoZGF0YSwgc3Rh
cnQsIGVuZCAtIHN0YXJ0KTsKICAgICAgICAgfQogICAgIH0KQEAgLTE2MTQsNyArMTYxMyw3IEBA
IHZvaWQgUmFuZ2U6OnRleHRSZWN0cyhWZWN0b3I8SW50UmVjdD4mIHJlY3RzLCBib29sIHVzZVNl
bGVjdGlvbkhlaWdodCwgUmFuZ2VJbkZpCiAgICAgICAgICAgICByLT5hYnNvbHV0ZVJlY3RzKHJl
Y3RzLCBmbG9vcmVkTGF5b3V0UG9pbnQoci0+bG9jYWxUb0Fic29sdXRlKCkpKTsKICAgICAgICAg
ZWxzZSBpZiAoci0+aXNUZXh0KCkpIHsKICAgICAgICAgICAgIGludCBzdGFydE9mZnNldCA9IG5v
ZGUgPT0gc3RhcnRDb250YWluZXIgPyBtX3N0YXJ0Lm9mZnNldCgpIDogMDsKLSAgICAgICAgICAg
IGludCBlbmRPZmZzZXQgPSBub2RlID09IGVuZENvbnRhaW5lciA/IG1fZW5kLm9mZnNldCgpIDog
bnVtZXJpY19saW1pdHM8aW50Pjo6bWF4KCk7CisgICAgICAgICAgICBpbnQgZW5kT2Zmc2V0ID0g
bm9kZSA9PSBlbmRDb250YWluZXIgPyBtX2VuZC5vZmZzZXQoKSA6IHN0ZDo6bnVtZXJpY19saW1p
dHM8aW50Pjo6bWF4KCk7CiAgICAgICAgICAgICByZWN0cy5hcHBlbmRWZWN0b3IodG9SZW5kZXJU
ZXh0KHIpLT5hYnNvbHV0ZVJlY3RzRm9yUmFuZ2Uoc3RhcnRPZmZzZXQsIGVuZE9mZnNldCwgdXNl
U2VsZWN0aW9uSGVpZ2h0LCAmaXNGaXhlZCkpOwogICAgICAgICB9IGVsc2UKICAgICAgICAgICAg
IGNvbnRpbnVlOwpAQCAtMTY1MCw3ICsxNjQ5LDcgQEAgdm9pZCBSYW5nZTo6dGV4dFF1YWRzKFZl
Y3RvcjxGbG9hdFF1YWQ+JiBxdWFkcywgYm9vbCB1c2VTZWxlY3Rpb25IZWlnaHQsIFJhbmdlSW4K
ICAgICAgICAgICAgIHItPmFic29sdXRlUXVhZHMocXVhZHMsICZpc0ZpeGVkKTsKICAgICAgICAg
ZWxzZSBpZiAoci0+aXNUZXh0KCkpIHsKICAgICAgICAgICAgIGludCBzdGFydE9mZnNldCA9IG5v
ZGUgPT0gc3RhcnRDb250YWluZXIgPyBtX3N0YXJ0Lm9mZnNldCgpIDogMDsKLSAgICAgICAgICAg
IGludCBlbmRPZmZzZXQgPSBub2RlID09IGVuZENvbnRhaW5lciA/IG1fZW5kLm9mZnNldCgpIDog
bnVtZXJpY19saW1pdHM8aW50Pjo6bWF4KCk7CisgICAgICAgICAgICBpbnQgZW5kT2Zmc2V0ID0g
bm9kZSA9PSBlbmRDb250YWluZXIgPyBtX2VuZC5vZmZzZXQoKSA6IHN0ZDo6bnVtZXJpY19saW1p
dHM8aW50Pjo6bWF4KCk7CiAgICAgICAgICAgICBxdWFkcy5hcHBlbmRWZWN0b3IodG9SZW5kZXJU
ZXh0KHIpLT5hYnNvbHV0ZVF1YWRzRm9yUmFuZ2Uoc3RhcnRPZmZzZXQsIGVuZE9mZnNldCwgdXNl
U2VsZWN0aW9uSGVpZ2h0LCAmaXNGaXhlZCkpOwogICAgICAgICB9IGVsc2UKICAgICAgICAgICAg
IGNvbnRpbnVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdGVkQW5pbWF0
aW9uQ29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0ZWRBbmltYXRpb25D
b250cm9sbGVyLmNwcAppbmRleCAzNGM4MWQwNzgwOTc1NGRjNDMxNzExNTM3N2U3ODlkOTI1MzIz
ZmM3Li42NWI5NWNiZTMzYzAzMTk5MTdiMzUyMjc4ODI1YTIwYmUxNWM0OTc2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0ZWRBbmltYXRpb25Db250cm9sbGVyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0ZWRBbmltYXRpb25Db250cm9sbGVyLmNwcApAQCAt
NDAsOCArNDAsNiBAQAogI2luY2x1ZGUgPGFsZ29yaXRobT4KICNpbmNsdWRlIDx3dGYvQ3VycmVu
dFRpbWUuaD4KIAotdXNpbmcgbmFtZXNwYWNlIHN0ZDsKLQogLy8gQWxsb3cgYSBsaXR0bGUgbW9y
ZSB0aGFuIDYwZnBzIHRvIG1ha2Ugc3VyZSB3ZSBjYW4gYXQgbGVhc3QgaGl0IHRoYXQgZnJhbWUg
cmF0ZS4KICNkZWZpbmUgTWluaW11bUFuaW1hdGlvbkludGVydmFsIDAuMDE1CiAjZGVmaW5lIE1p
bmltdW1UaHJvdHRsZWRBbmltYXRpb25JbnRlcnZhbCAxMApAQCAtMjAyLDcgKzIwMCw3IEBAIHZv
aWQgU2NyaXB0ZWRBbmltYXRpb25Db250cm9sbGVyOjpzY2hlZHVsZUFuaW1hdGlvbigpCiAgICAg
ICAgIGFuaW1hdGlvbkludGVydmFsID0gTWluaW11bVRocm90dGxlZEFuaW1hdGlvbkludGVydmFs
OwogI2VuZGlmCiAKLSAgICBkb3VibGUgc2NoZWR1bGVEZWxheSA9IG1heDxkb3VibGU+KGFuaW1h
dGlvbkludGVydmFsIC0gKG1vbm90b25pY2FsbHlJbmNyZWFzaW5nVGltZSgpIC0gbV9sYXN0QW5p
bWF0aW9uRnJhbWVUaW1lTW9ub3RvbmljKSwgMCk7CisgICAgZG91YmxlIHNjaGVkdWxlRGVsYXkg
PSBzdGQ6Om1heDxkb3VibGU+KGFuaW1hdGlvbkludGVydmFsIC0gKG1vbm90b25pY2FsbHlJbmNy
ZWFzaW5nVGltZSgpIC0gbV9sYXN0QW5pbWF0aW9uRnJhbWVUaW1lTW9ub3RvbmljKSwgMCk7CiAg
ICAgbV9hbmltYXRpb25UaW1lci5zdGFydE9uZVNob3Qoc2NoZWR1bGVEZWxheSk7CiAjZWxzZQog
ICAgIGlmIChGcmFtZVZpZXcqIGZyYW1lVmlldyA9IG1fZG9jdW1lbnQtPnZpZXcoKSkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TdHlsZWRFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9TdHlsZWRFbGVtZW50LmNwcAppbmRleCBjNWQ1MzdhMGI3YjNiMjA0YmQyODkwYzI1
NWEyMmY1ZGVjNzY1YjA0Li4zODY4YWQyZDcwZTAwNTc3ZTNhNmQ4NTVkNjllNDNmNDE2ODU1NTkw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vU3R5bGVkRWxlbWVudC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvZG9tL1N0eWxlZEVsZW1lbnQuY3BwCkBAIC00NSw4ICs0NSw2IEBACiAj
aW5jbHVkZSA8d3RmL0hhc2hGdW5jdGlvbnMuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9UZXh0UG9z
aXRpb24uaD4KIAotdXNpbmcgbmFtZXNwYWNlIHN0ZDsKLQogbmFtZXNwYWNlIFdlYkNvcmUgewog
CiBDT01QSUxFX0FTU0VSVChzaXplb2YoU3R5bGVkRWxlbWVudCkgPT0gc2l6ZW9mKEVsZW1lbnQp
LCBzdHlsZWRlbGVtZW50X3Nob3VsZF9yZW1haW5fc2FtZV9zaXplX2FzX2VsZW1lbnQpOwpAQCAt
MzA0LDcgKzMwMiw3IEBAIHZvaWQgU3R5bGVkRWxlbWVudDo6bWFrZVByZXNlbnRhdGlvbkF0dHJp
YnV0ZUNhY2hlS2V5KFByZXNlbnRhdGlvbkF0dHJpYnV0ZUNhY2hlCiAgICAgICAgIC8vIEZJWE1F
OiBCYWNrZ3JvdW5kIFVSTCBtYXkgZGVwZW5kIG9uIHRoZSBiYXNlIFVSTCBhbmQgY2FuJ3QgYmUg
c2hhcmVkLiBEaXNhbGxvdyBjYWNoaW5nLgogICAgICAgICBpZiAoYXR0cmlidXRlLm5hbWUoKSA9
PSBiYWNrZ3JvdW5kQXR0cikKICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgcmVzdWx0LmF0
dHJpYnV0ZXNBbmRWYWx1ZXMuYXBwZW5kKG1ha2VfcGFpcihhdHRyaWJ1dGUubG9jYWxOYW1lKCku
aW1wbCgpLCBhdHRyaWJ1dGUudmFsdWUoKSkpOworICAgICAgICByZXN1bHQuYXR0cmlidXRlc0Fu
ZFZhbHVlcy5hcHBlbmQoc3RkOjptYWtlX3BhaXIoYXR0cmlidXRlLmxvY2FsTmFtZSgpLmltcGwo
KSwgYXR0cmlidXRlLnZhbHVlKCkpKTsKICAgICB9CiAgICAgaWYgKHJlc3VsdC5hdHRyaWJ1dGVz
QW5kVmFsdWVzLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvZG9tL1RleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL1RleHQuY3BwCmluZGV4
IDEyYWE0OGU3Mjg3ZTRmMDIyZWNkMWVhZTdjZjM1MTUzNjFmM2UxMDcuLjIyYTVkYzU4OGUxMDQ3
ODY2YTBjMDNiNDM5MDNmNjMwYjgzNGM4MTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9UZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vVGV4dC5jcHAKQEAgLTQxLDggKzQx
LDYgQEAKICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQv
U3RyaW5nQnVpbGRlci5oPgogCi11c2luZyBuYW1lc3BhY2Ugc3RkOwotCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKIFBhc3NSZWZQdHI8VGV4dD4gVGV4dDo6Y3JlYXRlKERvY3VtZW50JiBkb2N1bWVu
dCwgY29uc3QgU3RyaW5nJiBkYXRhKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1Zp
ZXdwb3J0QXJndW1lbnRzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9WaWV3cG9ydEFyZ3VtZW50
cy5jcHAKaW5kZXggNTkxYTFlODQyY2UxNWRmYjBlYmRlZjcyMGVmNTIyZGRhYmFjMTEyYi4uODY2
MDAwNDIwNmRmMGYyOWJjNmZiYjM4YjRiYTIxMzJhZDVjNDE2OSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvZG9tL1ZpZXdwb3J0QXJndW1lbnRzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9k
b20vVmlld3BvcnRBcmd1bWVudHMuY3BwCkBAIC0zOCw4ICszOCw2IEBACiAjaW5jbHVkZSAiU2Ny
aXB0YWJsZURvY3VtZW50UGFyc2VyLmgiCiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+
CiAKLXVzaW5nIG5hbWVzcGFjZSBzdGQ7Ci0KIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogI2lmIFBM
QVRGT1JNKEJMQUNLQkVSUlkpIHx8IFBMQVRGT1JNKEdUSykKQEAgLTY2LDcgKzY0LDcgQEAgc3Rh
dGljIGlubGluZSBmbG9hdCBjbGFtcExlbmd0aFZhbHVlKGZsb2F0IHZhbHVlKQogCiAgICAgLy8g
TGltaXRzIGFzIGRlZmluZWQgaW4gdGhlIGNzcy1kZXZpY2UtYWRhcHQgc3BlYy4KICAgICBpZiAo
dmFsdWUgIT0gVmlld3BvcnRBcmd1bWVudHM6OlZhbHVlQXV0bykKLSAgICAgICAgcmV0dXJuIG1p
bihmbG9hdCgxMDAwMCksIG1heCh2YWx1ZSwgZmxvYXQoMSkpKTsKKyAgICAgICAgcmV0dXJuIHN0
ZDo6bWluPGZsb2F0PigxMDAwMCwgc3RkOjptYXg8ZmxvYXQ+KHZhbHVlLCAxKSk7CiAgICAgcmV0
dXJuIHZhbHVlOwogfQogCkBAIC03Nyw3ICs3NSw3IEBAIHN0YXRpYyBpbmxpbmUgZmxvYXQgY2xh
bXBTY2FsZVZhbHVlKGZsb2F0IHZhbHVlKQogCiAgICAgLy8gTGltaXRzIGFzIGRlZmluZWQgaW4g
dGhlIGNzcy1kZXZpY2UtYWRhcHQgc3BlYy4KICAgICBpZiAodmFsdWUgIT0gVmlld3BvcnRBcmd1
bWVudHM6OlZhbHVlQXV0bykKLSAgICAgICAgcmV0dXJuIG1pbihmbG9hdCgxMCksIG1heCh2YWx1
ZSwgZmxvYXQoMC4xKSkpOworICAgICAgICByZXR1cm4gc3RkOjptaW48ZmxvYXQ+KDEwLCBzdGQ6
Om1heDxmbG9hdD4odmFsdWUsIDAuMSkpOwogICAgIHJldHVybiB2YWx1ZTsKIH0KIApAQCAtMTUw
LDE2ICsxNDgsMTYgQEAgVmlld3BvcnRBdHRyaWJ1dGVzIFZpZXdwb3J0QXJndW1lbnRzOjpyZXNv
bHZlKGNvbnN0IEZsb2F0U2l6ZSYgaW5pdGlhbFZpZXdwb3J0U2kKICAgICAgICAgfQogCiAgICAg
ICAgIGlmIChyZXN1bHRNaW5XaWR0aCAhPSBWaWV3cG9ydEFyZ3VtZW50czo6VmFsdWVBdXRvIHx8
IHJlc3VsdE1heFdpZHRoICE9IFZpZXdwb3J0QXJndW1lbnRzOjpWYWx1ZUF1dG8pCi0gICAgICAg
ICAgICByZXN1bHRXaWR0aCA9IGNvbXBhcmVJZ25vcmluZ0F1dG8ocmVzdWx0TWluV2lkdGgsIGNv
bXBhcmVJZ25vcmluZ0F1dG8ocmVzdWx0TWF4V2lkdGgsIGRldmljZVNpemUud2lkdGgoKSwgbWlu
KSwgbWF4KTsKKyAgICAgICAgICAgIHJlc3VsdFdpZHRoID0gY29tcGFyZUlnbm9yaW5nQXV0byhy
ZXN1bHRNaW5XaWR0aCwgY29tcGFyZUlnbm9yaW5nQXV0byhyZXN1bHRNYXhXaWR0aCwgZGV2aWNl
U2l6ZS53aWR0aCgpLCBzdGQ6Om1pbiksIHN0ZDo6bWF4KTsKIAogICAgICAgICBpZiAocmVzdWx0
TWluSGVpZ2h0ICE9IFZpZXdwb3J0QXJndW1lbnRzOjpWYWx1ZUF1dG8gfHwgcmVzdWx0TWF4SGVp
Z2h0ICE9IFZpZXdwb3J0QXJndW1lbnRzOjpWYWx1ZUF1dG8pCi0gICAgICAgICAgICByZXN1bHRI
ZWlnaHQgPSBjb21wYXJlSWdub3JpbmdBdXRvKHJlc3VsdE1pbkhlaWdodCwgY29tcGFyZUlnbm9y
aW5nQXV0byhyZXN1bHRNYXhIZWlnaHQsIGRldmljZVNpemUuaGVpZ2h0KCksIG1pbiksIG1heCk7
CisgICAgICAgICAgICByZXN1bHRIZWlnaHQgPSBjb21wYXJlSWdub3JpbmdBdXRvKHJlc3VsdE1p
bkhlaWdodCwgY29tcGFyZUlnbm9yaW5nQXV0byhyZXN1bHRNYXhIZWlnaHQsIGRldmljZVNpemUu
aGVpZ2h0KCksIHN0ZDo6bWluKSwgc3RkOjptYXgpOwogCiAgICAgICAgIGlmIChyZXN1bHRNaW5a
b29tICE9IFZpZXdwb3J0QXJndW1lbnRzOjpWYWx1ZUF1dG8gJiYgcmVzdWx0TWF4Wm9vbSAhPSBW
aWV3cG9ydEFyZ3VtZW50czo6VmFsdWVBdXRvKQotICAgICAgICAgICAgcmVzdWx0TWF4Wm9vbSA9
IG1heChyZXN1bHRNaW5ab29tLCByZXN1bHRNYXhab29tKTsKKyAgICAgICAgICAgIHJlc3VsdE1h
eFpvb20gPSBzdGQ6Om1heChyZXN1bHRNaW5ab29tLCByZXN1bHRNYXhab29tKTsKIAogICAgICAg
ICBpZiAocmVzdWx0Wm9vbSAhPSBWaWV3cG9ydEFyZ3VtZW50czo6VmFsdWVBdXRvKQotICAgICAg
ICAgICAgcmVzdWx0Wm9vbSA9IGNvbXBhcmVJZ25vcmluZ0F1dG8ocmVzdWx0TWluWm9vbSwgY29t
cGFyZUlnbm9yaW5nQXV0byhyZXN1bHRNYXhab29tLCByZXN1bHRab29tLCBtaW4pLCBtYXgpOwor
ICAgICAgICAgICAgcmVzdWx0Wm9vbSA9IGNvbXBhcmVJZ25vcmluZ0F1dG8ocmVzdWx0TWluWm9v
bSwgY29tcGFyZUlnbm9yaW5nQXV0byhyZXN1bHRNYXhab29tLCByZXN1bHRab29tLCBzdGQ6Om1p
biksIHN0ZDo6bWF4KTsKIAogICAgICAgICBpZiAocmVzdWx0V2lkdGggPT0gVmlld3BvcnRBcmd1
bWVudHM6OlZhbHVlQXV0byAmJiByZXN1bHRab29tID09IFZpZXdwb3J0QXJndW1lbnRzOjpWYWx1
ZUF1dG8pCiAgICAgICAgICAgICByZXN1bHRXaWR0aCA9IGRldmljZVNpemUud2lkdGgoKTsKQEAg
LTE3NCwxMiArMTcyLDEyIEBAIFZpZXdwb3J0QXR0cmlidXRlcyBWaWV3cG9ydEFyZ3VtZW50czo6
cmVzb2x2ZShjb25zdCBGbG9hdFNpemUmIGluaXRpYWxWaWV3cG9ydFNpCiAgICAgICAgICAgICBy
ZXN1bHRIZWlnaHQgPSByZXN1bHRXaWR0aCAqIGRldmljZVNpemUuaGVpZ2h0KCkgLyBkZXZpY2VT
aXplLndpZHRoKCk7CiAKICAgICAgICAgaWYgKHJlc3VsdFpvb20gIT0gVmlld3BvcnRBcmd1bWVu
dHM6OlZhbHVlQXV0byB8fCByZXN1bHRNYXhab29tICE9IFZpZXdwb3J0QXJndW1lbnRzOjpWYWx1
ZUF1dG8pIHsKLSAgICAgICAgICAgIHJlc3VsdFdpZHRoID0gY29tcGFyZUlnbm9yaW5nQXV0byhy
ZXN1bHRXaWR0aCwgZGV2aWNlU2l6ZS53aWR0aCgpIC8gY29tcGFyZUlnbm9yaW5nQXV0byhyZXN1
bHRab29tLCByZXN1bHRNYXhab29tLCBtaW4pLCBtYXgpOwotICAgICAgICAgICAgcmVzdWx0SGVp
Z2h0ID0gY29tcGFyZUlnbm9yaW5nQXV0byhyZXN1bHRIZWlnaHQsIGRldmljZVNpemUuaGVpZ2h0
KCkgLyBjb21wYXJlSWdub3JpbmdBdXRvKHJlc3VsdFpvb20sIHJlc3VsdE1heFpvb20sIG1pbiks
IG1heCk7CisgICAgICAgICAgICByZXN1bHRXaWR0aCA9IGNvbXBhcmVJZ25vcmluZ0F1dG8ocmVz
dWx0V2lkdGgsIGRldmljZVNpemUud2lkdGgoKSAvIGNvbXBhcmVJZ25vcmluZ0F1dG8ocmVzdWx0
Wm9vbSwgcmVzdWx0TWF4Wm9vbSwgc3RkOjptaW4pLCBzdGQ6Om1heCk7CisgICAgICAgICAgICBy
ZXN1bHRIZWlnaHQgPSBjb21wYXJlSWdub3JpbmdBdXRvKHJlc3VsdEhlaWdodCwgZGV2aWNlU2l6
ZS5oZWlnaHQoKSAvIGNvbXBhcmVJZ25vcmluZ0F1dG8ocmVzdWx0Wm9vbSwgcmVzdWx0TWF4Wm9v
bSwgc3RkOjptaW4pLCBzdGQ6Om1heCk7CiAgICAgICAgIH0KIAotICAgICAgICByZXN1bHRXaWR0
aCA9IG1heDxmbG9hdD4oMSwgcmVzdWx0V2lkdGgpOwotICAgICAgICByZXN1bHRIZWlnaHQgPSBt
YXg8ZmxvYXQ+KDEsIHJlc3VsdEhlaWdodCk7CisgICAgICAgIHJlc3VsdFdpZHRoID0gc3RkOjpt
YXg8ZmxvYXQ+KDEsIHJlc3VsdFdpZHRoKTsKKyAgICAgICAgcmVzdWx0SGVpZ2h0ID0gc3RkOjpt
YXg8ZmxvYXQ+KDEsIHJlc3VsdEhlaWdodCk7CiAgICAgfQogCiAgICAgaWYgKHR5cGUgIT0gVmll
d3BvcnRBcmd1bWVudHM6OkNTU0RldmljZUFkYXB0YXRpb24gJiYgdHlwZSAhPSBWaWV3cG9ydEFy
Z3VtZW50czo6SW1wbGljaXQpIHsKQEAgLTIwMSwxMSArMTk5LDExIEBAIFZpZXdwb3J0QXR0cmli
dXRlcyBWaWV3cG9ydEFyZ3VtZW50czo6cmVzb2x2ZShjb25zdCBGbG9hdFNpemUmIGluaXRpYWxW
aWV3cG9ydFNpCiAgICAgICAgIHJlc3VsdC5taW5pbXVtU2NhbGUgPSByZXN1bHRNaW5ab29tOwog
CiAgICAgaWYgKHJlc3VsdE1heFpvb20gPT0gVmlld3BvcnRBcmd1bWVudHM6OlZhbHVlQXV0bykg
ewotICAgICAgICByZXN1bHQubWF4aW11bVNjYWxlID0gZmxvYXQoNS4wKTsKLSAgICAgICAgcmVz
dWx0Lm1pbmltdW1TY2FsZSA9IG1pbihmbG9hdCg1LjApLCByZXN1bHQubWluaW11bVNjYWxlKTsK
KyAgICAgICAgcmVzdWx0Lm1heGltdW1TY2FsZSA9IDU7CisgICAgICAgIHJlc3VsdC5taW5pbXVt
U2NhbGUgPSBzdGQ6Om1pbjxmbG9hdD4oNSwgcmVzdWx0Lm1pbmltdW1TY2FsZSk7CiAgICAgfSBl
bHNlCiAgICAgICAgIHJlc3VsdC5tYXhpbXVtU2NhbGUgPSByZXN1bHRNYXhab29tOwotICAgIHJl
c3VsdC5tYXhpbXVtU2NhbGUgPSBtYXgocmVzdWx0Lm1pbmltdW1TY2FsZSwgcmVzdWx0Lm1heGlt
dW1TY2FsZSk7CisgICAgcmVzdWx0Lm1heGltdW1TY2FsZSA9IHN0ZDo6bWF4KHJlc3VsdC5taW5p
bXVtU2NhbGUsIHJlc3VsdC5tYXhpbXVtU2NhbGUpOwogCiAgICAgLy8gUmVzb2x2ZSBpbml0aWFs
LXNjYWxlIHZhbHVlLgogICAgIHJlc3VsdC5pbml0aWFsU2NhbGUgPSByZXN1bHRab29tOwpAQCAt
MjE1LDEyICsyMTMsMTIgQEAgVmlld3BvcnRBdHRyaWJ1dGVzIFZpZXdwb3J0QXJndW1lbnRzOjpy
ZXNvbHZlKGNvbnN0IEZsb2F0U2l6ZSYgaW5pdGlhbFZpZXdwb3J0U2kKICAgICAgICAgICAgIHJl
c3VsdC5pbml0aWFsU2NhbGUgPSBpbml0aWFsVmlld3BvcnRTaXplLndpZHRoKCkgLyByZXN1bHRX
aWR0aDsKICAgICAgICAgaWYgKHJlc3VsdEhlaWdodCAhPSBWaWV3cG9ydEFyZ3VtZW50czo6VmFs
dWVBdXRvKSB7CiAgICAgICAgICAgICAvLyBpZiAnYXV0bycsIHRoZSBpbml0aWFsLXNjYWxlIHdp
bGwgYmUgbmVnYXRpdmUgaGVyZSBhbmQgdGh1cyBpZ25vcmVkLgotICAgICAgICAgICAgcmVzdWx0
LmluaXRpYWxTY2FsZSA9IG1heDxmbG9hdD4ocmVzdWx0LmluaXRpYWxTY2FsZSwgaW5pdGlhbFZp
ZXdwb3J0U2l6ZS5oZWlnaHQoKSAvIHJlc3VsdEhlaWdodCk7CisgICAgICAgICAgICByZXN1bHQu
aW5pdGlhbFNjYWxlID0gc3RkOjptYXg8ZmxvYXQ+KHJlc3VsdC5pbml0aWFsU2NhbGUsIGluaXRp
YWxWaWV3cG9ydFNpemUuaGVpZ2h0KCkgLyByZXN1bHRIZWlnaHQpOwogICAgICAgICB9CiAgICAg
fQogCiAgICAgLy8gQ29uc3RyYWluIGluaXRpYWwtc2NhbGUgdmFsdWUgdG8gbWluaW11bS1zY2Fs
ZS9tYXhpbXVtLXNjYWxlIHJhbmdlLgotICAgIHJlc3VsdC5pbml0aWFsU2NhbGUgPSBtaW4ocmVz
dWx0Lm1heGltdW1TY2FsZSwgbWF4KHJlc3VsdC5taW5pbXVtU2NhbGUsIHJlc3VsdC5pbml0aWFs
U2NhbGUpKTsKKyAgICByZXN1bHQuaW5pdGlhbFNjYWxlID0gc3RkOjptaW4ocmVzdWx0Lm1heGlt
dW1TY2FsZSwgc3RkOjptYXgocmVzdWx0Lm1pbmltdW1TY2FsZSwgcmVzdWx0LmluaXRpYWxTY2Fs
ZSkpOwogCiAgICAgLy8gUmVzb2x2ZSB3aWR0aCB2YWx1ZS4KICAgICBpZiAocmVzdWx0V2lkdGgg
PT0gVmlld3BvcnRBcmd1bWVudHM6OlZhbHVlQXV0bykgewpAQCAtMjM4LDggKzIzNiw4IEBAIFZp
ZXdwb3J0QXR0cmlidXRlcyBWaWV3cG9ydEFyZ3VtZW50czo6cmVzb2x2ZShjb25zdCBGbG9hdFNp
emUmIGluaXRpYWxWaWV3cG9ydFNpCiAKICAgICBpZiAodHlwZSA9PSBWaWV3cG9ydEFyZ3VtZW50
czo6Vmlld3BvcnRNZXRhKSB7CiAgICAgICAgIC8vIEV4dGVuZCB3aWR0aCBhbmQgaGVpZ2h0IHRv
IGZpbGwgdGhlIHZpc3VhbCB2aWV3cG9ydCBmb3IgdGhlIHJlc29sdmVkIGluaXRpYWwtc2NhbGUu
Ci0gICAgICAgIHJlc3VsdFdpZHRoID0gbWF4PGZsb2F0PihyZXN1bHRXaWR0aCwgaW5pdGlhbFZp
ZXdwb3J0U2l6ZS53aWR0aCgpIC8gcmVzdWx0LmluaXRpYWxTY2FsZSk7Ci0gICAgICAgIHJlc3Vs
dEhlaWdodCA9IG1heDxmbG9hdD4ocmVzdWx0SGVpZ2h0LCBpbml0aWFsVmlld3BvcnRTaXplLmhl
aWdodCgpIC8gcmVzdWx0LmluaXRpYWxTY2FsZSk7CisgICAgICAgIHJlc3VsdFdpZHRoID0gc3Rk
OjptYXg8ZmxvYXQ+KHJlc3VsdFdpZHRoLCBpbml0aWFsVmlld3BvcnRTaXplLndpZHRoKCkgLyBy
ZXN1bHQuaW5pdGlhbFNjYWxlKTsKKyAgICAgICAgcmVzdWx0SGVpZ2h0ID0gc3RkOjptYXg8Zmxv
YXQ+KHJlc3VsdEhlaWdodCwgaW5pdGlhbFZpZXdwb3J0U2l6ZS5oZWlnaHQoKSAvIHJlc3VsdC5p
bml0aWFsU2NhbGUpOwogICAgIH0KIAogICAgIHJlc3VsdC5sYXlvdXRTaXplLnNldFdpZHRoKHJl
c3VsdFdpZHRoKTsKQEAgLTI3NSwxNCArMjczLDE0IEBAIFZpZXdwb3J0QXR0cmlidXRlcyBjb21w
dXRlVmlld3BvcnRBdHRyaWJ1dGVzKFZpZXdwb3J0QXJndW1lbnRzIGFyZ3MsIGludCBkZXNrdG9w
CiBmbG9hdCBjb21wdXRlTWluaW11bVNjYWxlRmFjdG9yRm9yQ29udGVudENvbnRhaW5lZChjb25z
dCBWaWV3cG9ydEF0dHJpYnV0ZXMmIHJlc3VsdCwgY29uc3QgSW50U2l6ZSYgdmlzaWJsZVZpZXdw
b3J0LCBjb25zdCBJbnRTaXplJiBjb250ZW50c1NpemUpCiB7CiAgICAgRmxvYXRTaXplIHZpZXdw
b3J0U2l6ZSh2aXNpYmxlVmlld3BvcnQpOwotICAgIHJldHVybiBtYXg8ZmxvYXQ+KHJlc3VsdC5t
aW5pbXVtU2NhbGUsIG1heCh2aWV3cG9ydFNpemUud2lkdGgoKSAvIGNvbnRlbnRzU2l6ZS53aWR0
aCgpLCB2aWV3cG9ydFNpemUuaGVpZ2h0KCkgLyBjb250ZW50c1NpemUuaGVpZ2h0KCkpKTsKKyAg
ICByZXR1cm4gc3RkOjptYXg8ZmxvYXQ+KHJlc3VsdC5taW5pbXVtU2NhbGUsIHN0ZDo6bWF4KHZp
ZXdwb3J0U2l6ZS53aWR0aCgpIC8gY29udGVudHNTaXplLndpZHRoKCksIHZpZXdwb3J0U2l6ZS5o
ZWlnaHQoKSAvIGNvbnRlbnRzU2l6ZS5oZWlnaHQoKSkpOwogfQogCiB2b2lkIHJlc3RyaWN0TWlu
aW11bVNjYWxlRmFjdG9yVG9WaWV3cG9ydFNpemUoVmlld3BvcnRBdHRyaWJ1dGVzJiByZXN1bHQs
IEludFNpemUgdmlzaWJsZVZpZXdwb3J0LCBmbG9hdCBkZXZpY2VQaXhlbFJhdGlvKQogewogICAg
IEZsb2F0U2l6ZSB2aWV3cG9ydFNpemUgPSBjb252ZXJ0VG9Vc2VyU3BhY2UodmlzaWJsZVZpZXdw
b3J0LCBkZXZpY2VQaXhlbFJhdGlvKTsKIAotICAgIHJlc3VsdC5taW5pbXVtU2NhbGUgPSBtYXg8
ZmxvYXQ+KHJlc3VsdC5taW5pbXVtU2NhbGUsIG1heCh2aWV3cG9ydFNpemUud2lkdGgoKSAvIHJl
c3VsdC5sYXlvdXRTaXplLndpZHRoKCksIHZpZXdwb3J0U2l6ZS5oZWlnaHQoKSAvIHJlc3VsdC5s
YXlvdXRTaXplLmhlaWdodCgpKSk7CisgICAgcmVzdWx0Lm1pbmltdW1TY2FsZSA9IHN0ZDo6bWF4
PGZsb2F0PihyZXN1bHQubWluaW11bVNjYWxlLCBzdGQ6Om1heCh2aWV3cG9ydFNpemUud2lkdGgo
KSAvIHJlc3VsdC5sYXlvdXRTaXplLndpZHRoKCksIHZpZXdwb3J0U2l6ZS5oZWlnaHQoKSAvIHJl
c3VsdC5sYXlvdXRTaXplLmhlaWdodCgpKSk7CiB9CiAKIHZvaWQgcmVzdHJpY3RTY2FsZUZhY3Rv
clRvSW5pdGlhbFNjYWxlSWZOb3RVc2VyU2NhbGFibGUoVmlld3BvcnRBdHRyaWJ1dGVzJiByZXN1
bHQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0FsdGVybmF0aXZlVGV4dENv
bnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9BbHRlcm5hdGl2ZVRleHRDb250
cm9sbGVyLmNwcAppbmRleCAyNjkyMjJhN2JjYTMyMzA3NDdhMjgyMzQ5ZDQ5ZjFkYjVlYzEwNDEz
Li4yMzAwMTdiOTc3N2NiM2I4NTY5ZTk5Yjk1YzhjNzExMGZhYTRkMmVjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL0FsdGVybmF0aXZlVGV4dENvbnRyb2xsZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvQWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxlci5jcHAKQEAg
LTUyLDkgKzUyLDYgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi11c2luZyBuYW1lc3BhY2Ug
c3RkOwotdXNpbmcgbmFtZXNwYWNlIFdURjsKLQogY2xhc3MgQXV0b2NvcnJlY3Rpb25BbHRlcm5h
dGl2ZURldGFpbHMgOiBwdWJsaWMgQWx0ZXJuYXRpdmVUZXh0RGV0YWlscyB7CiBwdWJsaWM6CiAg
ICAgc3RhdGljIFBhc3NSZWZQdHI8QXV0b2NvcnJlY3Rpb25BbHRlcm5hdGl2ZURldGFpbHM+IGNy
ZWF0ZShjb25zdCBTdHJpbmcmIHJlcGxhY2VtZW50U3RyaW5nKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvZWRpdGluZy9BcHBseVN0eWxlQ29tbWFuZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL0FwcGx5U3R5bGVDb21tYW5kLmNwcAppbmRleCBjOGEzNTU0MmIzODYwODA2MDA3MGNi
ZmMyNmNiNTUyM2MwM2M0NDAyLi5mNjE4YWRhZjFlMzcyNzE2YmQyZWEwOWI1OGQ1MzRmMjY1NzJh
OGZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0FwcGx5U3R5bGVDb21tYW5k
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0FwcGx5U3R5bGVDb21tYW5kLmNwcApA
QCAtNDAzLDcgKzQwMyw3IEBAIHZvaWQgQXBwbHlTdHlsZUNvbW1hbmQ6OmFwcGx5UmVsYXRpdmVG
b250U3R5bGVDaGFuZ2UoRWRpdGluZ1N0eWxlKiBzdHlsZSkKIAogICAgICAgICBSZWZQdHI8TXV0
YWJsZVN0eWxlUHJvcGVydHlTZXQ+IGlubGluZVN0eWxlID0gY29weVN0eWxlT3JDcmVhdGVFbXB0
eShlbGVtZW50LT5pbmxpbmVTdHlsZSgpKTsKICAgICAgICAgZmxvYXQgY3VycmVudEZvbnRTaXpl
ID0gY29tcHV0ZWRGb250U2l6ZShub2RlKTsKLSAgICAgICAgZmxvYXQgZGVzaXJlZEZvbnRTaXpl
ID0gbWF4KE1pbmltdW1Gb250U2l6ZSwgc3RhcnRpbmdGb250U2l6ZXMuZ2V0KG5vZGUpICsgc3R5
bGUtPmZvbnRTaXplRGVsdGEoKSk7CisgICAgICAgIGZsb2F0IGRlc2lyZWRGb250U2l6ZSA9IHN0
ZDo6bWF4KE1pbmltdW1Gb250U2l6ZSwgc3RhcnRpbmdGb250U2l6ZXMuZ2V0KG5vZGUpICsgc3R5
bGUtPmZvbnRTaXplRGVsdGEoKSk7CiAgICAgICAgIFJlZlB0cjxDU1NWYWx1ZT4gdmFsdWUgPSBp
bmxpbmVTdHlsZS0+Z2V0UHJvcGVydHlDU1NWYWx1ZShDU1NQcm9wZXJ0eUZvbnRTaXplKTsKICAg
ICAgICAgaWYgKHZhbHVlKSB7CiAgICAgICAgICAgICBlbGVtZW50LT5yZW1vdmVJbmxpbmVTdHls
ZVByb3BlcnR5KENTU1Byb3BlcnR5Rm9udFNpemUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvZWRpdGluZy9Db21wb3NpdGVFZGl0Q29tbWFuZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL0NvbXBvc2l0ZUVkaXRDb21tYW5kLmNwcAppbmRleCAyNmFiMjRkNzYwMjgxODMwZmZlNWQ1
OWMwYjQ3MDQyNDA4MGJjMDkyLi41MWNlOThiMTY5ZTJkYTZiMTUyMGMxODczZjRkMjAyYmU4MGQx
NzRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0NvbXBvc2l0ZUVkaXRDb21t
YW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0NvbXBvc2l0ZUVkaXRDb21tYW5k
LmNwcApAQCAtNzIsOCArNzIsNiBAQAogI2luY2x1ZGUgIkRlbGV0ZUJ1dHRvbkNvbnRyb2xsZXIu
aCIKICNlbmRpZgogCi11c2luZyBuYW1lc3BhY2Ugc3RkOwotCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKIHVzaW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7CkBAIC03NzYsOCArNzc0LDggQEAgdm9pZCBD
b21wb3NpdGVFZGl0Q29tbWFuZDo6ZGVsZXRlSW5zaWduaWZpY2FudFRleHQoUGFzc1JlZlB0cjxU
ZXh0PiB0ZXh0Tm9kZSwgdW4KICAgICAgICAgYm9vbCBpbmRpY2VzSW50ZXJzZWN0ID0gc3RhcnQg
PD0gZ2FwRW5kICYmIGVuZCA+PSBnYXBTdGFydDsKICAgICAgICAgaW50IGdhcExlbiA9IGdhcEVu
ZCAtIGdhcFN0YXJ0OwogICAgICAgICBpZiAoaW5kaWNlc0ludGVyc2VjdCAmJiBnYXBMZW4gPiAw
KSB7Ci0gICAgICAgICAgICBnYXBTdGFydCA9IG1heChnYXBTdGFydCwgc3RhcnQpOwotICAgICAg
ICAgICAgZ2FwRW5kID0gbWluKGdhcEVuZCwgZW5kKTsKKyAgICAgICAgICAgIGdhcFN0YXJ0ID0g
c3RkOjptYXgoZ2FwU3RhcnQsIHN0YXJ0KTsKKyAgICAgICAgICAgIGdhcEVuZCA9IHN0ZDo6bWlu
KGdhcEVuZCwgZW5kKTsKICAgICAgICAgICAgIGlmIChzdHIuaXNOdWxsKCkpCiAgICAgICAgICAg
ICAgICAgc3RyID0gdGV4dE5vZGUtPmRhdGEoKS5zdWJzdHJpbmcoc3RhcnQsIGVuZCAtIHN0YXJ0
KTsKICAgICAgICAgICAgIC8vIHJlbW92ZSB0ZXh0IGluIHRoZSBnYXAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
RWRpdG9yLmNwcAppbmRleCA3YjhhNWY3ZWU4NmIyNzkyMzZjZDE3YThlZmNmZjY1ZmQzMGQwYjg4
Li4xOWY1Y2IwOTFmMWViOGM4MGI3ZDA4MmQ4MjMzM2ExYjUzM2JiYWRiIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRp
dGluZy9FZGl0b3IuY3BwCkBAIC05Nyw3ICs5Nyw2IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAotdXNpbmcgbmFtZXNwYWNlIHN0ZDsKIHVzaW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7CiB1c2lu
ZyBuYW1lc3BhY2UgV1RGOwogdXNpbmcgbmFtZXNwYWNlIFVuaWNvZGU7CkBAIC0xNjM1LDggKzE2
MzQsOCBAQCB2b2lkIEVkaXRvcjo6c2V0Q29tcG9zaXRpb24oY29uc3QgU3RyaW5nJiB0ZXh0LCBj
b25zdCBWZWN0b3I8Q29tcG9zaXRpb25VbmRlcmxpbgogICAgICAgICAgICAgaWYgKGJhc2VOb2Rl
LT5yZW5kZXJlcigpKQogICAgICAgICAgICAgICAgIGJhc2VOb2RlLT5yZW5kZXJlcigpLT5yZXBh
aW50KCk7CiAKLSAgICAgICAgICAgIHVuc2lnbmVkIHN0YXJ0ID0gbWluKGJhc2VPZmZzZXQgKyBz
ZWxlY3Rpb25TdGFydCwgZXh0ZW50T2Zmc2V0KTsKLSAgICAgICAgICAgIHVuc2lnbmVkIGVuZCA9
IG1pbihtYXgoc3RhcnQsIGJhc2VPZmZzZXQgKyBzZWxlY3Rpb25FbmQpLCBleHRlbnRPZmZzZXQp
OworICAgICAgICAgICAgdW5zaWduZWQgc3RhcnQgPSBzdGQ6Om1pbihiYXNlT2Zmc2V0ICsgc2Vs
ZWN0aW9uU3RhcnQsIGV4dGVudE9mZnNldCk7CisgICAgICAgICAgICB1bnNpZ25lZCBlbmQgPSBz
dGQ6Om1pbihzdGQ6Om1heChzdGFydCwgYmFzZU9mZnNldCArIHNlbGVjdGlvbkVuZCksIGV4dGVu
dE9mZnNldCk7CiAgICAgICAgICAgICBSZWZQdHI8UmFuZ2U+IHNlbGVjdGVkUmFuZ2UgPSBSYW5n
ZTo6Y3JlYXRlKGJhc2VOb2RlLT5kb2N1bWVudCgpLCBiYXNlTm9kZSwgc3RhcnQsIGJhc2VOb2Rl
LCBlbmQpOwogICAgICAgICAgICAgbV9mcmFtZS5zZWxlY3Rpb24oKS5zZXRTZWxlY3RlZFJhbmdl
KHNlbGVjdGVkUmFuZ2UuZ2V0KCksIERPV05TVFJFQU0sIGZhbHNlKTsKICAgICAgICAgfQpAQCAt
MjU0Myw4ICsyNTQyLDggQEAgUGFzc1JlZlB0cjxSYW5nZT4gRWRpdG9yOjpjb21wb3NpdGlvblJh
bmdlKCkgY29uc3QKICAgICBpZiAoIW1fY29tcG9zaXRpb25Ob2RlKQogICAgICAgICByZXR1cm4g
MDsKICAgICB1bnNpZ25lZCBsZW5ndGggPSBtX2NvbXBvc2l0aW9uTm9kZS0+bGVuZ3RoKCk7Ci0g
ICAgdW5zaWduZWQgc3RhcnQgPSBtaW4obV9jb21wb3NpdGlvblN0YXJ0LCBsZW5ndGgpOwotICAg
IHVuc2lnbmVkIGVuZCA9IG1pbihtYXgoc3RhcnQsIG1fY29tcG9zaXRpb25FbmQpLCBsZW5ndGgp
OworICAgIHVuc2lnbmVkIHN0YXJ0ID0gc3RkOjptaW4obV9jb21wb3NpdGlvblN0YXJ0LCBsZW5n
dGgpOworICAgIHVuc2lnbmVkIGVuZCA9IHN0ZDo6bWluKHN0ZDo6bWF4KHN0YXJ0LCBtX2NvbXBv
c2l0aW9uRW5kKSwgbGVuZ3RoKTsKICAgICBpZiAoc3RhcnQgPj0gZW5kKQogICAgICAgICByZXR1
cm4gMDsKICAgICByZXR1cm4gUmFuZ2U6OmNyZWF0ZShtX2NvbXBvc2l0aW9uTm9kZS0+ZG9jdW1l
bnQoKSwgbV9jb21wb3NpdGlvbk5vZGUuZ2V0KCksIHN0YXJ0LCBtX2NvbXBvc2l0aW9uTm9kZS5n
ZXQoKSwgZW5kKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yQ29t
bWFuZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvckNvbW1hbmQuY3BwCmluZGV4
IDkzN2Q2N2E3NTEyMzZlYzBlN2U3OWM2YmQ4NzJmYjcwNGYyZDk4YjkuLjBhMTkyNzYwYWVhMDRk
MzEzOTYzYjllOGE0YWRiOGFmMjNlOGMyODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvRWRpdG9yQ29tbWFuZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0
b3JDb21tYW5kLmNwcApAQCAtMjYyLDcgKzI2Miw3IEBAIHN0YXRpYyB1bnNpZ25lZCB2ZXJ0aWNh
bFNjcm9sbERpc3RhbmNlKEZyYW1lJiBmcmFtZSkKICAgICBpZiAoIShzdHlsZS0+b3ZlcmZsb3dZ
KCkgPT0gT1NDUk9MTCB8fCBzdHlsZS0+b3ZlcmZsb3dZKCkgPT0gT0FVVE8gfHwgZm9jdXNlZEVs
ZW1lbnQtPnJlbmRlcmVySXNFZGl0YWJsZSgpKSkKICAgICAgICAgcmV0dXJuIDA7CiAgICAgaW50
IGhlaWdodCA9IHN0ZDo6bWluPGludD4odG9SZW5kZXJCb3gocmVuZGVyZXIpLT5jbGllbnRIZWln
aHQoKSwgZnJhbWUudmlldygpLT52aXNpYmxlSGVpZ2h0KCkpOwotICAgIHJldHVybiBzdGF0aWNf
Y2FzdDx1bnNpZ25lZD4obWF4KG1heDxpbnQ+KGhlaWdodCAqIFNjcm9sbGJhcjo6bWluRnJhY3Rp
b25Ub1N0ZXBXaGVuUGFnaW5nKCksIGhlaWdodCAtIFNjcm9sbGJhcjo6bWF4T3ZlcmxhcEJldHdl
ZW5QYWdlcygpKSwgMSkpOworICAgIHJldHVybiBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oc3RkOjpt
YXgoc3RkOjptYXg8aW50PihoZWlnaHQgKiBTY3JvbGxiYXI6Om1pbkZyYWN0aW9uVG9TdGVwV2hl
blBhZ2luZygpLCBoZWlnaHQgLSBTY3JvbGxiYXI6Om1heE92ZXJsYXBCZXR3ZWVuUGFnZXMoKSks
IDEpKTsKIH0KIAogc3RhdGljIFJlZlB0cjxSYW5nZT4gdW5pb25ET01SYW5nZXMoUmFuZ2UqIGEs
IFJhbmdlKiBiKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0SXRlcmF0
b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0SXRlcmF0b3IuY3BwCmluZGV4IGI2
NTVmMjU2MzA2YmNlMDJhNDYwYWI2MTRlMzQxZjA4OWM5NGJmMzYuLjU2MTRiNmU3ZmQyOGVkZjI2
NDVlNTFlOTQzNjVmZGUzMjM5ZmZmMmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvVGV4dEl0ZXJhdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1RleHRJdGVy
YXRvci5jcHAKQEAgLTU4LDcgKzU4LDYgQEAKICNlbmRpZgogCiB1c2luZyBuYW1lc3BhY2UgV1RG
OjpVbmljb2RlOwotdXNpbmcgbmFtZXNwYWNlIHN0ZDsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
CkBAIC01MTIsNyArNTExLDcgQEAgYm9vbCBUZXh0SXRlcmF0b3I6OmhhbmRsZVRleHROb2RlKCkK
ICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgaW50IHN0ckxlbmd0aCA9IHN0ci5s
ZW5ndGgoKTsKICAgICAgICAgaW50IGVuZCA9IChtX25vZGUgPT0gbV9lbmRDb250YWluZXIpID8g
bV9lbmRPZmZzZXQgOiBJTlRfTUFYOwotICAgICAgICBpbnQgcnVuRW5kID0gbWluKHN0ckxlbmd0
aCwgZW5kKTsKKyAgICAgICAgaW50IHJ1bkVuZCA9IHN0ZDo6bWluKHN0ckxlbmd0aCwgZW5kKTsK
IAogICAgICAgICBpZiAocnVuU3RhcnQgPj0gcnVuRW5kKQogICAgICAgICAgICAgcmV0dXJuIHRy
dWU7CkBAIC01NjUsNyArNTY0LDcgQEAgdm9pZCBUZXh0SXRlcmF0b3I6OmhhbmRsZVRleHRCb3go
KQogICAgIHVuc2lnbmVkIGVuZCA9IChtX25vZGUgPT0gbV9lbmRDb250YWluZXIpID8gc3RhdGlj
X2Nhc3Q8dW5zaWduZWQ+KG1fZW5kT2Zmc2V0KSA6IFVJTlRfTUFYOwogICAgIHdoaWxlIChtX3Rl
eHRCb3gpIHsKICAgICAgICAgdW5zaWduZWQgdGV4dEJveFN0YXJ0ID0gbV90ZXh0Qm94LT5zdGFy
dCgpOwotICAgICAgICB1bnNpZ25lZCBydW5TdGFydCA9IG1heCh0ZXh0Qm94U3RhcnQsIHN0YXJ0
KTsKKyAgICAgICAgdW5zaWduZWQgcnVuU3RhcnQgPSBzdGQ6Om1heCh0ZXh0Qm94U3RhcnQsIHN0
YXJ0KTsKIAogICAgICAgICAvLyBDaGVjayBmb3IgY29sbGFwc2VkIHNwYWNlIGF0IHRoZSBzdGFy
dCBvZiB0aGlzIHJ1bi4KICAgICAgICAgSW5saW5lVGV4dEJveCogZmlyc3RUZXh0Qm94ID0gcmVu
ZGVyZXItPmNvbnRhaW5zUmV2ZXJzZWRUZXh0KCkgPyAobV9zb3J0ZWRUZXh0Qm94ZXMuaXNFbXB0
eSgpID8gMCA6IG1fc29ydGVkVGV4dEJveGVzWzBdKSA6IHJlbmRlcmVyLT5maXJzdFRleHRCb3go
KTsKQEAgLTU4Miw3ICs1ODEsNyBAQCB2b2lkIFRleHRJdGVyYXRvcjo6aGFuZGxlVGV4dEJveCgp
CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICAgICAgdW5zaWduZWQgdGV4dEJv
eEVuZCA9IHRleHRCb3hTdGFydCArIG1fdGV4dEJveC0+bGVuKCk7Ci0gICAgICAgIHVuc2lnbmVk
IHJ1bkVuZCA9IG1pbih0ZXh0Qm94RW5kLCBlbmQpOworICAgICAgICB1bnNpZ25lZCBydW5FbmQg
PSBzdGQ6Om1pbih0ZXh0Qm94RW5kLCBlbmQpOwogICAgICAgICAKICAgICAgICAgLy8gRGV0ZXJt
aW5lIHdoYXQgdGhlIG5leHQgdGV4dCBib3ggd2lsbCBiZSwgYnV0IGRvbid0IGFkdmFuY2UgeWV0
CiAgICAgICAgIElubGluZVRleHRCb3gqIG5leHRUZXh0Qm94ID0gMDsKQEAgLTE0NTIsNyArMTQ1
MSw3IEBAIFN0cmluZyBDaGFyYWN0ZXJJdGVyYXRvcjo6c3RyaW5nKGludCBudW1DaGFycykKICAg
ICBWZWN0b3I8VUNoYXI+IHJlc3VsdDsKICAgICByZXN1bHQucmVzZXJ2ZUluaXRpYWxDYXBhY2l0
eShudW1DaGFycyk7CiAgICAgd2hpbGUgKG51bUNoYXJzID4gMCAmJiAhYXRFbmQoKSkgewotICAg
ICAgICBpbnQgcnVuU2l6ZSA9IG1pbihudW1DaGFycywgbGVuZ3RoKCkpOworICAgICAgICBpbnQg
cnVuU2l6ZSA9IHN0ZDo6bWluKG51bUNoYXJzLCBsZW5ndGgoKSk7CiAgICAgICAgIHJlc3VsdC5h
cHBlbmQoY2hhcmFjdGVycygpLCBydW5TaXplKTsKICAgICAgICAgbnVtQ2hhcnMgLT0gcnVuU2l6
ZTsKICAgICAgICAgYWR2YW5jZShydW5TaXplKTsKQEAgLTE5NjUsNyArMTk2NCw3IEBAIGlubGlu
ZSBTZWFyY2hCdWZmZXI6OlNlYXJjaEJ1ZmZlcihjb25zdCBTdHJpbmcmIHRhcmdldCwgRmluZE9w
dGlvbnMgb3B0aW9ucykKICAgICBmb2xkUXVvdGVNYXJrc0FuZFNvZnRIeXBoZW5zKG1fdGFyZ2V0
KTsKIAogICAgIHNpemVfdCB0YXJnZXRMZW5ndGggPSBtX3RhcmdldC5sZW5ndGgoKTsKLSAgICBt
X2J1ZmZlci5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KG1heCh0YXJnZXRMZW5ndGggKiA4LCBtaW5p
bXVtU2VhcmNoQnVmZmVyU2l6ZSkpOworICAgIG1fYnVmZmVyLnJlc2VydmVJbml0aWFsQ2FwYWNp
dHkoc3RkOjptYXgodGFyZ2V0TGVuZ3RoICogOCwgbWluaW11bVNlYXJjaEJ1ZmZlclNpemUpKTsK
ICAgICBtX292ZXJsYXAgPSBtX2J1ZmZlci5jYXBhY2l0eSgpIC8gNDsKIAogICAgIGlmICgobV9v
cHRpb25zICYgQXRXb3JkU3RhcnRzKSAmJiB0YXJnZXRMZW5ndGgpIHsKQEAgLTIwMzUsMTIgKzIw
MzQsMTIgQEAgaW5saW5lIHNpemVfdCBTZWFyY2hCdWZmZXI6OmFwcGVuZChjb25zdCBVQ2hhciog
Y2hhcmFjdGVycywgc2l6ZV90IGxlbmd0aCkKICAgICAgICAgbV9hdEJyZWFrID0gZmFsc2U7CiAg
ICAgfSBlbHNlIGlmIChtX2J1ZmZlci5zaXplKCkgPT0gbV9idWZmZXIuY2FwYWNpdHkoKSkgewog
ICAgICAgICBtZW1jcHkobV9idWZmZXIuZGF0YSgpLCBtX2J1ZmZlci5kYXRhKCkgKyBtX2J1ZmZl
ci5zaXplKCkgLSBtX292ZXJsYXAsIG1fb3ZlcmxhcCAqIHNpemVvZihVQ2hhcikpOwotICAgICAg
ICBtX3ByZWZpeExlbmd0aCAtPSBtaW4obV9wcmVmaXhMZW5ndGgsIG1fYnVmZmVyLnNpemUoKSAt
IG1fb3ZlcmxhcCk7CisgICAgICAgIG1fcHJlZml4TGVuZ3RoIC09IHN0ZDo6bWluKG1fcHJlZml4
TGVuZ3RoLCBtX2J1ZmZlci5zaXplKCkgLSBtX292ZXJsYXApOwogICAgICAgICBtX2J1ZmZlci5z
aHJpbmsobV9vdmVybGFwKTsKICAgICB9CiAKICAgICBzaXplX3Qgb2xkTGVuZ3RoID0gbV9idWZm
ZXIuc2l6ZSgpOwotICAgIHNpemVfdCB1c2FibGVMZW5ndGggPSBtaW4obV9idWZmZXIuY2FwYWNp
dHkoKSAtIG9sZExlbmd0aCwgbGVuZ3RoKTsKKyAgICBzaXplX3QgdXNhYmxlTGVuZ3RoID0gc3Rk
OjptaW4obV9idWZmZXIuY2FwYWNpdHkoKSAtIG9sZExlbmd0aCwgbGVuZ3RoKTsKICAgICBBU1NF
UlQodXNhYmxlTGVuZ3RoKTsKICAgICBtX2J1ZmZlci5hcHBlbmQoY2hhcmFjdGVycywgdXNhYmxl
TGVuZ3RoKTsKICAgICBmb2xkUXVvdGVNYXJrc0FuZFNvZnRIeXBoZW5zKG1fYnVmZmVyLmRhdGEo
KSArIG9sZExlbmd0aCwgdXNhYmxlTGVuZ3RoKTsKQEAgLTIwNjgsNyArMjA2Nyw3IEBAIGlubGlu
ZSB2b2lkIFNlYXJjaEJ1ZmZlcjo6cHJlcGVuZENvbnRleHQoY29uc3QgVUNoYXIqIGNoYXJhY3Rl
cnMsIHNpemVfdCBsZW5ndGgpCiAgICAgICAgIHdvcmRCb3VuZGFyeUNvbnRleHRTdGFydCA9IHN0
YXJ0T2ZMYXN0V29yZEJvdW5kYXJ5Q29udGV4dChjaGFyYWN0ZXJzLCB3b3JkQm91bmRhcnlDb250
ZXh0U3RhcnQpOwogICAgIH0KIAotICAgIHNpemVfdCB1c2FibGVMZW5ndGggPSBtaW4obV9idWZm
ZXIuY2FwYWNpdHkoKSAtIG1fcHJlZml4TGVuZ3RoLCBsZW5ndGggLSB3b3JkQm91bmRhcnlDb250
ZXh0U3RhcnQpOworICAgIHNpemVfdCB1c2FibGVMZW5ndGggPSBzdGQ6Om1pbihtX2J1ZmZlci5j
YXBhY2l0eSgpIC0gbV9wcmVmaXhMZW5ndGgsIGxlbmd0aCAtIHdvcmRCb3VuZGFyeUNvbnRleHRT
dGFydCk7CiAgICAgbV9idWZmZXIuaW5zZXJ0KDAsIGNoYXJhY3RlcnMgKyBsZW5ndGggLSB1c2Fi
bGVMZW5ndGgsIHVzYWJsZUxlbmd0aCk7CiAgICAgbV9wcmVmaXhMZW5ndGggKz0gdXNhYmxlTGVu
Z3RoOwogCkBAIC0yMjQxLDEwICsyMjQwLDEwIEBAIG5leHRNYXRjaDoKICAgICAgICAgICAgIGlu
dCB3b3JkQm91bmRhcnlDb250ZXh0U3RhcnQgPSBtYXRjaFN0YXJ0OwogICAgICAgICAgICAgVTE2
X0JBQ0tfMShtX2J1ZmZlci5kYXRhKCksIDAsIHdvcmRCb3VuZGFyeUNvbnRleHRTdGFydCk7CiAg
ICAgICAgICAgICB3b3JkQm91bmRhcnlDb250ZXh0U3RhcnQgPSBzdGFydE9mTGFzdFdvcmRCb3Vu
ZGFyeUNvbnRleHQobV9idWZmZXIuZGF0YSgpLCB3b3JkQm91bmRhcnlDb250ZXh0U3RhcnQpOwot
ICAgICAgICAgICAgb3ZlcmxhcCA9IG1pbihzaXplIC0gMSwgbWF4KG92ZXJsYXAsIHNpemUgLSB3
b3JkQm91bmRhcnlDb250ZXh0U3RhcnQpKTsKKyAgICAgICAgICAgIG92ZXJsYXAgPSBzdGQ6Om1p
bihzaXplIC0gMSwgc3RkOjptYXgob3ZlcmxhcCwgc2l6ZSAtIHdvcmRCb3VuZGFyeUNvbnRleHRT
dGFydCkpOwogICAgICAgICB9CiAgICAgICAgIG1lbWNweShtX2J1ZmZlci5kYXRhKCksIG1fYnVm
ZmVyLmRhdGEoKSArIHNpemUgLSBvdmVybGFwLCBvdmVybGFwICogc2l6ZW9mKFVDaGFyKSk7Ci0g
ICAgICAgIG1fcHJlZml4TGVuZ3RoIC09IG1pbihtX3ByZWZpeExlbmd0aCwgc2l6ZSAtIG92ZXJs
YXApOworICAgICAgICBtX3ByZWZpeExlbmd0aCAtPSBzdGQ6Om1pbihtX3ByZWZpeExlbmd0aCwg
c2l6ZSAtIG92ZXJsYXApOwogICAgICAgICBtX2J1ZmZlci5zaHJpbmsob3ZlcmxhcCk7CiAgICAg
ICAgIHJldHVybiAwOwogICAgIH0KQEAgLTIyNjEsNyArMjI2MCw3IEBAIG5leHRNYXRjaDoKIAog
ICAgIHNpemVfdCBuZXdTaXplID0gc2l6ZSAtIChtYXRjaFN0YXJ0ICsgMSk7CiAgICAgbWVtbW92
ZShtX2J1ZmZlci5kYXRhKCksIG1fYnVmZmVyLmRhdGEoKSArIG1hdGNoU3RhcnQgKyAxLCBuZXdT
aXplICogc2l6ZW9mKFVDaGFyKSk7Ci0gICAgbV9wcmVmaXhMZW5ndGggLT0gbWluPHNpemVfdD4o
bV9wcmVmaXhMZW5ndGgsIG1hdGNoU3RhcnQgKyAxKTsKKyAgICBtX3ByZWZpeExlbmd0aCAtPSBz
dGQ6Om1pbjxzaXplX3Q+KG1fcHJlZml4TGVuZ3RoLCBtYXRjaFN0YXJ0ICsgMSk7CiAgICAgbV9i
dWZmZXIuc2hyaW5rKG5ld1NpemUpOwogCiAgICAgc3RhcnQgPSBzaXplIC0gbWF0Y2hTdGFydDsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVmlzaWJsZVVuaXRzLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvVmlzaWJsZVVuaXRzLmNwcAppbmRleCBhZjJlYTEzM2JhNzJk
YjIzMTNiOTBjM2Y3NWUzNTQ5NjIzYzI3NDY5Li41ZTdmY2I2NjExZTJlZGM3OTJhMjhlMDljOGY2
NjEyZjU4YzIwMDZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1Zpc2libGVV
bml0cy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9WaXNpYmxlVW5pdHMuY3BwCkBA
IC0xMTM3LDcgKzExMzcsNyBAQCBWaXNpYmxlUG9zaXRpb24gc3RhcnRPZlBhcmFncmFwaChjb25z
dCBWaXNpYmxlUG9zaXRpb24mIGMsIEVkaXRpbmdCb3VuZGFyeUNyb3NzaQogICAgICAgICAgICAg
ICAgIGludCBpID0gdG9SZW5kZXJUZXh0KHIpLT50ZXh0TGVuZ3RoKCk7CiAgICAgICAgICAgICAg
ICAgaW50IG8gPSBvZmZzZXQ7CiAgICAgICAgICAgICAgICAgaWYgKG4gPT0gc3RhcnROb2RlICYm
IG8gPCBpKQotICAgICAgICAgICAgICAgICAgICBpID0gbWF4KDAsIG8pOworICAgICAgICAgICAg
ICAgICAgICBpID0gc3RkOjptYXgoMCwgbyk7CiAgICAgICAgICAgICAgICAgd2hpbGUgKC0taSA+
PSAwKSB7CiAgICAgICAgICAgICAgICAgICAgIGlmIChjaGFyc1tpXSA9PSAnXG4nKQogICAgICAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuIFZpc2libGVQb3NpdGlvbihQb3NpdGlvbih0b1RleHQo
biksIGkgKyAxKSwgRE9XTlNUUkVBTSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL2h0bWxlZGl0aW5nLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvaHRtbGVkaXRpbmcu
Y3BwCmluZGV4IGZjN2E4MzUyOTQ4YmE3NzYyYzdlOWRjNGIyMWZkZmZlYmQzNzZiZjcuLmVmZjQ1
ODVjNmE4MTA4ZDExZGUyNDA5YTM3NmM4YjAzNzBkNjJmNzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvaHRtbGVkaXRpbmcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvaHRtbGVkaXRpbmcuY3BwCkBAIC01Nyw4ICs1Nyw2IEBACiAjaW5jbHVkZSA8d3RmL1N0ZExp
YkV4dHJhcy5oPgogI2luY2x1ZGUgPHd0Zi91bmljb2RlL0NoYXJhY3Rlck5hbWVzLmg+CiAKLXVz
aW5nIG5hbWVzcGFjZSBzdGQ7Ci0KIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogdXNpbmcgbmFtZXNw
YWNlIEhUTUxOYW1lczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFya3Vw
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFya3VwLmNwcAppbmRleCA3MGI1NGZlZDVm
NTdmYjI0NGZkMTI4ZDBmMTdmMTgzY2RhMGQxMjBjLi5lODM4YTQzYTA2YzRjZDc1ZjA4ZDBmM2Nk
NmMyOWYxZjY1NzU3YjA1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hcmt1
cC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYXJrdXAuY3BwCkBAIC02NCw4ICs2
NCw2IEBACiAjaW5jbHVkZSAiRGVsZXRlQnV0dG9uQ29udHJvbGxlci5oIgogI2VuZGlmCiAKLXVz
aW5nIG5hbWVzcGFjZSBzdGQ7Ci0KIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogdXNpbmcgbmFtZXNw
YWNlIEhUTUxOYW1lczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZVJl
YWRlckxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGVSZWFkZXJMb2FkZXIu
Y3BwCmluZGV4IDI0NDdjMzBlYTUxNGFmYzhhZjIyNWI0ZWE2ZWYwNGMyMmRhNTdjZWIuLjg5YTY3
YjlmMjNkMzVkZjFlNWRiYjgyYmI3OGQxYTgwY2YwYjcwNjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2ZpbGVhcGkvRmlsZVJlYWRlckxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
ZmlsZWFwaS9GaWxlUmVhZGVyTG9hZGVyLmNwcApAQCAtNTAsOCArNTAsNiBAQAogI2luY2x1ZGUg
PHd0Zi90ZXh0L0Jhc2U2NC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4K
IAotdXNpbmcgbmFtZXNwYWNlIHN0ZDsKLQogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjb25zdCBp
bnQgZGVmYXVsdEJ1ZmZlckxlbmd0aCA9IDMyNzY4OwpAQCAtMTU0LDcgKzE1Miw3IEBAIHZvaWQg
RmlsZVJlYWRlckxvYWRlcjo6ZGlkUmVjZWl2ZVJlc3BvbnNlKHVuc2lnbmVkIGxvbmcsIGNvbnN0
IFJlc291cmNlUmVzcG9uc2UmCiAgICAgLy8gQ2hlY2sgdGhhdCB3ZSBjYW4gY2FzdCB0byB1bnNp
Z25lZCBzaW5jZSB3ZSBoYXZlIHRvIGRvCiAgICAgLy8gc28gdG8gY2FsbCBBcnJheUJ1ZmZlcidz
IGNyZWF0ZSBmdW5jdGlvbi4KICAgICAvLyBGSVhNRTogU3VwcG9ydCByZWFkaW5nIG1vcmUgdGhh
biB0aGUgY3VycmVudCBzaXplIGxpbWl0IG9mIEFycmF5QnVmZmVyLgotICAgIGlmIChsZW5ndGgg
PiBudW1lcmljX2xpbWl0czx1bnNpZ25lZD46Om1heCgpKSB7CisgICAgaWYgKGxlbmd0aCA+IHN0
ZDo6bnVtZXJpY19saW1pdHM8dW5zaWduZWQ+OjptYXgoKSkgewogICAgICAgICBmYWlsZWQoRmls
ZUVycm9yOjpOT1RfUkVBREFCTEVfRVJSKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTE4
NiwxNCArMTg0LDE0IEBAIHZvaWQgRmlsZVJlYWRlckxvYWRlcjo6ZGlkUmVjZWl2ZURhdGEoY29u
c3QgY2hhciogZGF0YSwgaW50IGRhdGFMZW5ndGgpCiAgICAgdW5zaWduZWQgcmVtYWluaW5nQnVm
ZmVyU3BhY2UgPSBtX3RvdGFsQnl0ZXMgLSBtX2J5dGVzTG9hZGVkOwogICAgIGlmIChsZW5ndGgg
PiBzdGF0aWNfY2FzdDxsb25nIGxvbmc+KHJlbWFpbmluZ0J1ZmZlclNwYWNlKSkgewogICAgICAg
ICAvLyBJZiB0aGUgYnVmZmVyIGhhcyBoaXQgbWF4aW11bSBzaXplLCBpdCBjYW4ndCBiZSBncm93
biBhbnkgbW9yZS4KLSAgICAgICAgaWYgKG1fdG90YWxCeXRlcyA+PSBudW1lcmljX2xpbWl0czx1
bnNpZ25lZD46Om1heCgpKSB7CisgICAgICAgIGlmIChtX3RvdGFsQnl0ZXMgPj0gc3RkOjpudW1l
cmljX2xpbWl0czx1bnNpZ25lZD46Om1heCgpKSB7CiAgICAgICAgICAgICBmYWlsZWQoRmlsZUVy
cm9yOjpOT1RfUkVBREFCTEVfRVJSKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQog
ICAgICAgICBpZiAobV92YXJpYWJsZUxlbmd0aCkgewogICAgICAgICAgICAgdW5zaWduZWQgbG9u
ZyBsb25nIG5ld0xlbmd0aCA9IG1fdG90YWxCeXRlcyAqIDI7Ci0gICAgICAgICAgICBpZiAobmV3
TGVuZ3RoID4gbnVtZXJpY19saW1pdHM8dW5zaWduZWQ+OjptYXgoKSkKLSAgICAgICAgICAgICAg
ICBuZXdMZW5ndGggPSBudW1lcmljX2xpbWl0czx1bnNpZ25lZD46Om1heCgpOworICAgICAgICAg
ICAgaWYgKG5ld0xlbmd0aCA+IHN0ZDo6bnVtZXJpY19saW1pdHM8dW5zaWduZWQ+OjptYXgoKSkK
KyAgICAgICAgICAgICAgICBuZXdMZW5ndGggPSBzdGQ6Om51bWVyaWNfbGltaXRzPHVuc2lnbmVk
Pjo6bWF4KCk7CiAgICAgICAgICAgICBSZWZQdHI8QXJyYXlCdWZmZXI+IG5ld0RhdGEgPQogICAg
ICAgICAgICAgICAgIEFycmF5QnVmZmVyOjpjcmVhdGUoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KG5l
d0xlbmd0aCksIDEpOwogICAgICAgICAgICAgbWVtY3B5KHN0YXRpY19jYXN0PGNoYXIqPihuZXdE
YXRhLT5kYXRhKCkpLCBzdGF0aWNfY2FzdDxjaGFyKj4obV9yYXdEYXRhLT5kYXRhKCkpLCBtX2J5
dGVzTG9hZGVkKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2hpc3RvcnkvQmFja0Zvcndh
cmRMaXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2hpc3RvcnkvQmFja0ZvcndhcmRMaXN0LmNwcApp
bmRleCAxNWYxMDE1OWNmNjZjMDIyNzhlZjhhNjkyNmI4YzFlN2QxNGJhN2JlLi4xYjRmNzY1OGMy
ODViNGZmNDhiMjE0YTg3MDM2N2RmYzBkZTRlMTc0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9oaXN0b3J5L0JhY2tGb3J3YXJkTGlzdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaGlzdG9y
eS9CYWNrRm9yd2FyZExpc3QuY3BwCkBAIC0zNiw4ICszNiw2IEBACiAjaW5jbHVkZSAiUGFnZUNh
Y2hlLmgiCiAjaW5jbHVkZSAiU2VyaWFsaXplZFNjcmlwdFZhbHVlLmgiCiAKLXVzaW5nIG5hbWVz
cGFjZSBzdGQ7Ci0KIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogc3RhdGljIGNvbnN0IHVuc2lnbmVk
IERlZmF1bHRDYXBhY2l0eSA9IDEwMDsKQEAgLTE0NCw3ICsxNDIsNyBAQCB2b2lkIEJhY2tGb3J3
YXJkTGlzdDo6YmFja0xpc3RXaXRoTGltaXQoaW50IGxpbWl0LCBIaXN0b3J5SXRlbVZlY3RvciYg
bGlzdCkKIHsKICAgICBsaXN0LmNsZWFyKCk7CiAgICAgaWYgKG1fY3VycmVudCAhPSBOb0N1cnJl
bnRJdGVtSW5kZXgpIHsKLSAgICAgICAgdW5zaWduZWQgZmlyc3QgPSBtYXgoKGludCltX2N1cnJl
bnQgLSBsaW1pdCwgMCk7CisgICAgICAgIHVuc2lnbmVkIGZpcnN0ID0gc3RkOjptYXgoKGludClt
X2N1cnJlbnQgLSBsaW1pdCwgMCk7CiAgICAgICAgIGZvciAoOyBmaXJzdCA8IG1fY3VycmVudDsg
KytmaXJzdCkKICAgICAgICAgICAgIGxpc3QuYXBwZW5kKG1fZW50cmllc1tmaXJzdF0pOwogICAg
IH0KQEAgLTE1OSw3ICsxNTcsNyBAQCB2b2lkIEJhY2tGb3J3YXJkTGlzdDo6Zm9yd2FyZExpc3RX
aXRoTGltaXQoaW50IGxpbWl0LCBIaXN0b3J5SXRlbVZlY3RvciYgbGlzdCkKICAgICAgICAgCiAg
ICAgdW5zaWduZWQgbGFzdEVudHJ5ID0gbV9lbnRyaWVzLnNpemUoKSAtIDE7CiAgICAgaWYgKG1f
Y3VycmVudCA8IGxhc3RFbnRyeSkgewotICAgICAgICBpbnQgbGFzdCA9IG1pbihtX2N1cnJlbnQg
KyBsaW1pdCwgbGFzdEVudHJ5KTsKKyAgICAgICAgaW50IGxhc3QgPSBzdGQ6Om1pbihtX2N1cnJl
bnQgKyBsaW1pdCwgbGFzdEVudHJ5KTsKICAgICAgICAgbGltaXQgPSBtX2N1cnJlbnQgKyAxOwog
ICAgICAgICBmb3IgKDsgbGltaXQgPD0gbGFzdDsgKytsaW1pdCkKICAgICAgICAgICAgIGxpc3Qu
YXBwZW5kKG1fZW50cmllc1tsaW1pdF0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaGlz
dG9yeS9QYWdlQ2FjaGUuY3BwIGIvU291cmNlL1dlYkNvcmUvaGlzdG9yeS9QYWdlQ2FjaGUuY3Bw
CmluZGV4IDMyOTQyMDY4MDY1ZGFlNTc2YTU3YzJjZDczNzU2ZGYxOGUwNGZhOTIuLjA5Y2YzODdj
MDQ0NTI5MWZkNWNhZjVkMDU5YTQ5YjM3YmQzMWI5ZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2hpc3RvcnkvUGFnZUNhY2hlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9oaXN0b3J5L1Bh
Z2VDYWNoZS5jcHAKQEAgLTU3LDggKzU3LDYgQEAKICNpbmNsdWRlICJEZXZpY2VQcm94aW1pdHlD
b250cm9sbGVyLmgiCiAjZW5kaWYKIAotdXNpbmcgbmFtZXNwYWNlIHN0ZDsKLQogbmFtZXNwYWNl
IFdlYkNvcmUgewogCiAjaWYgIWRlZmluZWQoTkRFQlVHKQpAQCAtMzczLDcgKzM3MSw3IEBAIGJv
b2wgUGFnZUNhY2hlOjpjYW5DYWNoZShQYWdlKiBwYWdlKSBjb25zdAogdm9pZCBQYWdlQ2FjaGU6
OnNldENhcGFjaXR5KGludCBjYXBhY2l0eSkKIHsKICAgICBBU1NFUlQoY2FwYWNpdHkgPj0gMCk7
Ci0gICAgbV9jYXBhY2l0eSA9IG1heChjYXBhY2l0eSwgMCk7CisgICAgbV9jYXBhY2l0eSA9IHN0
ZDo6bWF4KGNhcGFjaXR5LCAwKTsKIAogICAgIHBydW5lKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0Jhc2VEYXRlQW5kVGltZUlucHV0VHlwZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0Jhc2VEYXRlQW5kVGltZUlucHV0VHlwZS5jcHAKaW5kZXggMGNhZDY4NWQzMGMw
ZDU4MWQ5NzMyMDA0NThiZmZjMWYwY2EyNjZkZS4uODQzZjlmNzFmYzQ0MThlZDMzNzlkNTM3Mjcy
ZjRjOTFhNGNlYzNjNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9CYXNlRGF0ZUFu
ZFRpbWVJbnB1dFR5cGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvQmFzZURhdGVBbmRU
aW1lSW5wdXRUeXBlLmNwcApAQCAtNDUsNyArNDUsNiBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewog
CiB1c2luZyBuYW1lc3BhY2UgSFRNTE5hbWVzOwotdXNpbmcgbmFtZXNwYWNlIHN0ZDsKIAogc3Rh
dGljIGNvbnN0IGludCBtc2VjUGVyTWludXRlID0gNjAgKiAxMDAwOwogc3RhdGljIGNvbnN0IGlu
dCBtc2VjUGVyU2Vjb25kID0gMTAwMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
RlRQRGlyZWN0b3J5RG9jdW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9GVFBEaXJlY3Rv
cnlEb2N1bWVudC5jcHAKaW5kZXggOGY5MmYzZjM1ZDRlMTgwZGUxMWM0NjBmNjBlNmZhNzMzNDkx
OGViNS4uMjNkNzViNDFhN2UwOWE0N2UxYTYzMzZlNjViMDI4NThmM2I3YmU3ZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9GVFBEaXJlY3RvcnlEb2N1bWVudC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9GVFBEaXJlY3RvcnlEb2N1bWVudC5jcHAKQEAgLTQ0LDggKzQ0LDYg
QEAKICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KICNpbmNsdWRlIDx3dGYvdW5pY29k
ZS9DaGFyYWN0ZXJOYW1lcy5oPgogCi11c2luZyBuYW1lc3BhY2Ugc3RkOwotCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKIHVzaW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7CkBAIC02Niw3ICs2NCw3IEBA
IHB1YmxpYzoKICAgICB7CiAgICAgICAgIGlmICgobV9kZXN0IC0gbV9idWZmZXIpID4gbV9zaXpl
IC0gbGVuKSB7CiAgICAgICAgICAgICAvLyBFbmxhcmdlIGJ1ZmZlcgotICAgICAgICAgICAgaW50
IG5ld1NpemUgPSBtYXgobV9zaXplICogMiwgbV9zaXplICsgbGVuKTsKKyAgICAgICAgICAgIGlu
dCBuZXdTaXplID0gc3RkOjptYXgobV9zaXplICogMiwgbV9zaXplICsgbGVuKTsKICAgICAgICAg
ICAgIGludCBvbGRPZmZzZXQgPSBtX2Rlc3QgLSBtX2J1ZmZlcjsKICAgICAgICAgICAgIG1fYnVm
ZmVyID0gc3RhdGljX2Nhc3Q8VUNoYXIqPihmYXN0UmVhbGxvYyhtX2J1ZmZlciwgbmV3U2l6ZSAq
IHNpemVvZihVQ2hhcikpKTsKICAgICAgICAgICAgIG1fZGVzdCA9IG1fYnVmZmVyICsgb2xkT2Zm
c2V0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQXJlYUVsZW1lbnQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQXJlYUVsZW1lbnQuY3BwCmluZGV4IGRiNDFjNWIz
OThkZjhiOTg4NDViY2NhNTk3NzhjZGUwOGZkNDJhMTMuLmVmMDlkZmQyYmQwMzhlOGFmMjQwZDUx
M2YzNjlmZDA1MTc2NDZkY2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEFy
ZWFFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBcmVhRWxlbWVudC5j
cHAKQEAgLTMzLDggKzMzLDYgQEAKICNpbmNsdWRlICJSZW5kZXJJbWFnZS5oIgogI2luY2x1ZGUg
IlJlbmRlclZpZXcuaCIKIAotdXNpbmcgbmFtZXNwYWNlIHN0ZDsKLQogbmFtZXNwYWNlIFdlYkNv
cmUgewogCiB1c2luZyBuYW1lc3BhY2UgSFRNTE5hbWVzOwpAQCAtMTU4LDcgKzE1Niw3IEBAIFBh
dGggSFRNTEFyZWFFbGVtZW50OjpnZXRSZWdpb24oY29uc3QgTGF5b3V0U2l6ZSYgc2l6ZSkgY29u
c3QKICAgICAgICAgY2FzZSBDaXJjbGU6CiAgICAgICAgICAgICBpZiAobV9jb29yZHNMZW4gPj0g
MykgewogICAgICAgICAgICAgICAgIExlbmd0aCByYWRpdXMgPSBtX2Nvb3Jkc1syXTsKLSAgICAg
ICAgICAgICAgICBpbnQgciA9IG1pbihtaW5pbXVtVmFsdWVGb3JMZW5ndGgocmFkaXVzLCB3aWR0
aCwgcmVuZGVyVmlldyksIG1pbmltdW1WYWx1ZUZvckxlbmd0aChyYWRpdXMsIGhlaWdodCwgcmVu
ZGVyVmlldykpOworICAgICAgICAgICAgICAgIGludCByID0gc3RkOjptaW4obWluaW11bVZhbHVl
Rm9yTGVuZ3RoKHJhZGl1cywgd2lkdGgsIHJlbmRlclZpZXcpLCBtaW5pbXVtVmFsdWVGb3JMZW5n
dGgocmFkaXVzLCBoZWlnaHQsIHJlbmRlclZpZXcpKTsKICAgICAgICAgICAgICAgICBwYXRoLmFk
ZEVsbGlwc2UoRmxvYXRSZWN0KG1pbmltdW1WYWx1ZUZvckxlbmd0aChtX2Nvb3Jkc1swXSwgd2lk
dGgsIHJlbmRlclZpZXcpIC0gciwgbWluaW11bVZhbHVlRm9yTGVuZ3RoKG1fY29vcmRzWzFdLCBo
ZWlnaHQsIHJlbmRlclZpZXcpIC0gciwgMiAqIHIsIDIgKiByKSk7CiAgICAgICAgICAgICB9CiAg
ICAgICAgICAgICBicmVhazsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEVs
ZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRWxlbWVudC5jcHAKaW5kZXggNjk3
MDVkZTMxNjhlZTM1MjJhMWZlYmY3MWI5ZjMyNmNhYzBmMDZlZC4uZjczOTU4MmYzODlhODhkOWU4
NmI4NTZiM2RhMGFmNDEwYTQyMDE3ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRWxlbWVudC5jcHAK
QEAgLTY3LDkgKzY3LDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogdXNpbmcgbmFtZXNwYWNlIEhU
TUxOYW1lczsKIHVzaW5nIG5hbWVzcGFjZSBXVEY7CiAKLXVzaW5nIHN0ZDo6bWluOwotdXNpbmcg
c3RkOjptYXg7Ci0KIFBhc3NSZWZQdHI8SFRNTEVsZW1lbnQ+IEhUTUxFbGVtZW50OjpjcmVhdGUo
Y29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQmIGRvY3VtZW50KQogewogICAg
IHJldHVybiBhZG9wdFJlZihuZXcgSFRNTEVsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQpKTsKQEAg
LTMyOSw3ICszMjYsNyBAQCB2b2lkIEhUTUxFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZShjb25zdCBR
dWFsaWZpZWROYW1lJiBuYW1lLCBjb25zdCBBdG9taWNTdHJpbmcmCiAgICAgICAgICAgICBjbGVh
clRhYkluZGV4RXhwbGljaXRseUlmTmVlZGVkKCk7CiAgICAgICAgIGVsc2UgaWYgKHBhcnNlSFRN
TEludGVnZXIodmFsdWUsIHRhYmluZGV4KSkgewogICAgICAgICAgICAgLy8gQ2xhbXAgdGFiaW5k
ZXggdG8gdGhlIHJhbmdlIG9mICdzaG9ydCcgdG8gbWF0Y2ggRmlyZWZveCdzIGJlaGF2aW9yLgot
ICAgICAgICAgICAgc2V0VGFiSW5kZXhFeHBsaWNpdGx5KG1heChzdGF0aWNfY2FzdDxpbnQ+KHN0
ZDo6bnVtZXJpY19saW1pdHM8c2hvcnQ+OjptaW4oKSksIG1pbih0YWJpbmRleCwgc3RhdGljX2Nh
c3Q8aW50PihzdGQ6Om51bWVyaWNfbGltaXRzPHNob3J0Pjo6bWF4KCkpKSkpOworICAgICAgICAg
ICAgc2V0VGFiSW5kZXhFeHBsaWNpdGx5KHN0ZDo6bWF4KHN0YXRpY19jYXN0PGludD4oc3RkOjpu
dW1lcmljX2xpbWl0czxzaG9ydD46Om1pbigpKSwgc3RkOjptaW4odGFiaW5kZXgsIHN0YXRpY19j
YXN0PGludD4oc3RkOjpudW1lcmljX2xpbWl0czxzaG9ydD46Om1heCgpKSkpKTsKICAgICAgICAg
fQogICAgIH0gZWxzZSBpZiAobmFtZS5uYW1lc3BhY2VVUkkoKS5pc051bGwoKSkgewogICAgICAg
ICAvLyBGSVhNRTogQ2FuIHdlIGRvIHRoaXMgZXZlbiBmYXN0ZXIgYnkgY2hlY2tpbmcgdGhlIGxv
Y2FsIG5hbWUgIm9uIiBwcmVmaXggYmVmb3JlIHdlIGRvIGFueXRoaW5nIHdpdGggdGhlIG1hcD8K
QEAgLTEwMzQsNyArMTAzMSw3IEBAIHN0YXRpYyBSR0JBMzIgcGFyc2VDb2xvclN0cmluZ1dpdGhD
cmF6eUxlZ2FjeVJ1bGVzKGNvbnN0IFN0cmluZyYgY29sb3JTdHJpbmcpCiAgICAgLy8gU3BsaXQg
dGhlIGRpZ2l0cyBpbnRvIHRocmVlIGNvbXBvbmVudHMsIHRoZW4gc2VhcmNoIHRoZSBsYXN0IDgg
ZGlnaXRzIG9mIGVhY2ggY29tcG9uZW50LgogICAgIEFTU0VSVChkaWdpdEJ1ZmZlci5zaXplKCkg
Pj0gNik7CiAgICAgc2l6ZV90IGNvbXBvbmVudExlbmd0aCA9IGRpZ2l0QnVmZmVyLnNpemUoKSAv
IDM7Ci0gICAgc2l6ZV90IGNvbXBvbmVudFNlYXJjaFdpbmRvd0xlbmd0aCA9IG1pbjxzaXplX3Q+
KGNvbXBvbmVudExlbmd0aCwgOCk7CisgICAgc2l6ZV90IGNvbXBvbmVudFNlYXJjaFdpbmRvd0xl
bmd0aCA9IHN0ZDo6bWluPHNpemVfdD4oY29tcG9uZW50TGVuZ3RoLCA4KTsKICAgICBzaXplX3Qg
cmVkSW5kZXggPSBjb21wb25lbnRMZW5ndGggLSBjb21wb25lbnRTZWFyY2hXaW5kb3dMZW5ndGg7
CiAgICAgc2l6ZV90IGdyZWVuSW5kZXggPSBjb21wb25lbnRMZW5ndGggKiAyIC0gY29tcG9uZW50
U2VhcmNoV2luZG93TGVuZ3RoOwogICAgIHNpemVfdCBibHVlSW5kZXggPSBjb21wb25lbnRMZW5n
dGggKiAzIC0gY29tcG9uZW50U2VhcmNoV2luZG93TGVuZ3RoOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MRm9ybUNvbnRyb2xFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTEZvcm1Db250cm9sRWxlbWVudC5jcHAKaW5kZXggMDQzOWFlOWI2ODA3MzI2YTYx
OTNmYWFjOGEzMmQ0MWU0YWQyYWI2MC4uMGY1NzZjMjk1M2JkYjM3MDI3NTA2NzJmNjE3ZjZkNjU0
YTVjMTMyZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUNvbnRyb2xF
bGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtQ29udHJvbEVsZW1l
bnQuY3BwCkBAIC00NSw3ICs0NSw2IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHVzaW5nIG5h
bWVzcGFjZSBIVE1MTmFtZXM7Ci11c2luZyBuYW1lc3BhY2Ugc3RkOwogCiBIVE1MRm9ybUNvbnRy
b2xFbGVtZW50OjpIVE1MRm9ybUNvbnRyb2xFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmIHRh
Z05hbWUsIERvY3VtZW50JiBkb2N1bWVudCwgSFRNTEZvcm1FbGVtZW50KiBmb3JtKQogICAgIDog
TGFiZWxhYmxlRWxlbWVudCh0YWdOYW1lLCBkb2N1bWVudCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTEZvcm1FbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TEZvcm1FbGVtZW50LmNwcAppbmRleCBiMTdiODdlOWM5YjE4NjhlNjEzM2VmODVjY2FkZTAyYzgz
NTM0ZWJmLi45NTg5MDNlMzYzNTk3NDA4MTUyOGY4YmVmNWY5ZmNmZDZlYzRlMzMzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtRWxlbWVudC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MRm9ybUVsZW1lbnQuY3BwCkBAIC00OCw4ICs0OCw2IEBACiAjaW5j
bHVkZSA8bGltaXRzPgogI2luY2x1ZGUgPHd0Zi9SZWYuaD4KIAotdXNpbmcgbmFtZXNwYWNlIHN0
ZDsKLQogbmFtZXNwYWNlIFdlYkNvcmUgewogCiB1c2luZyBuYW1lc3BhY2UgSFRNTE5hbWVzOwpA
QCAtMzExLDcgKzMwOSw3IEBAIHZvaWQgSFRNTEZvcm1FbGVtZW50OjpnZXRUZXh0RmllbGRWYWx1
ZXMoU3RyaW5nUGFpclZlY3RvciYgZmllbGROYW1lc0FuZFZhbHVlcykKICAgICAgICAgSFRNTElu
cHV0RWxlbWVudCYgaW5wdXQgPSB0b0hUTUxJbnB1dEVsZW1lbnQoZWxlbWVudCk7CiAgICAgICAg
IGlmICghaW5wdXQuaXNUZXh0RmllbGQoKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAg
ICBmaWVsZE5hbWVzQW5kVmFsdWVzLmFwcGVuZChtYWtlX3BhaXIoaW5wdXQubmFtZSgpLnN0cmlu
ZygpLCBpbnB1dC52YWx1ZSgpKSk7CisgICAgICAgIGZpZWxkTmFtZXNBbmRWYWx1ZXMuYXBwZW5k
KHN0ZDo6bWFrZV9wYWlyKGlucHV0Lm5hbWUoKS5zdHJpbmcoKSwgaW5wdXQudmFsdWUoKSkpOwog
ICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW1hZ2VFbGVt
ZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEltYWdlRWxlbWVudC5jcHAKaW5kZXgg
ZTQ0NzgwYjQ1NWFhOWNjMGJjM2Q5NGJmMjE2ZTE0ZWY1MWU0M2E2My4uNzk2NjYxNDFkMTdkZDZi
ZjQyZDA3YTdkMjk2NDE1ZWRlNDk1MWJlMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MSW1hZ2VFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbWFn
ZUVsZW1lbnQuY3BwCkBAIC0zNyw4ICszNyw2IEBACiAjaW5jbHVkZSAiUGFnZS5oIgogI2luY2x1
ZGUgIlJlbmRlckltYWdlLmgiCiAKLXVzaW5nIG5hbWVzcGFjZSBzdGQ7Ci0KIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAogdXNpbmcgbmFtZXNwYWNlIEhUTUxOYW1lczsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxJbnB1dEVsZW1lbnQuY3BwCmluZGV4IDcyNTZmMmU1M2MwZWY5NDM4ODA4ZTUwZmIzY2I3
YWEyZmUwMTdmZDUuLmJjMDQwNTcxNDhjYjc1ZjhmMDdkZjRkMzQzODRiMjg3YWM5ZmU5ZDQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcApAQCAtODEsOCArODEsNiBA
QAogI2luY2x1ZGUgIlRvdWNoRXZlbnQuaCIKICNlbmRpZgogCi11c2luZyBuYW1lc3BhY2Ugc3Rk
OwotCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHVzaW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNYXBFbGVtZW50LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTE1hcEVsZW1lbnQuY3BwCmluZGV4IDAwYWRjMzBkN2YwMDdkMDI5
M2NmY2IxZGRhYjEwOGNmZjg2ZjczNGUuLjRlMzliMWUxOTQ5ODRjZTFlMzliMDkyYTcyOGMzNzdi
NmVjOTQzZmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1hcEVsZW1lbnQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1hcEVsZW1lbnQuY3BwCkBAIC0zMiw4
ICszMiw2IEBACiAjaW5jbHVkZSAiSGl0VGVzdFJlc3VsdC5oIgogI2luY2x1ZGUgIkludFNpemUu
aCIKIAotdXNpbmcgbmFtZXNwYWNlIHN0ZDsKLQogbmFtZXNwYWNlIFdlYkNvcmUgewogCiB1c2lu
ZyBuYW1lc3BhY2UgSFRNTE5hbWVzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MTWVkaWFFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVu
dC5jcHAKaW5kZXggNTYzZWQ0OGVhMjRmNzhmN2NjYTI3NzU2ZjZlZmQwZmQ0Mjc3NjAwZS4uMjk1
YmQ1NmNjN2RkZDE0MzU0ZGJlNDlkZmEwZDhjOGMxNjQxMzZlZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCkBAIC0xNDksOCArMTQ5LDYgQEAKICNpbmNsdWRlICJV
c2VyQWdlbnRTY3JpcHRzLmgiCiAjZW5kaWYKIAotdXNpbmcgbmFtZXNwYWNlIHN0ZDsKLQogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCiBzdGF0aWMgdm9pZCBzZXRGbGFncyh1bnNpZ25lZCYgdmFsdWUs
IHVuc2lnbmVkIGZsYWdzKQpAQCAtMTk3LDcgKzE5NSw2IEBAIHN0YXRpYyBjb25zdCBjaGFyKiBt
ZWRpYVNvdXJjZUJsb2JQcm90b2NvbCA9ICJibG9iIjsKICNlbmRpZgogCiB1c2luZyBuYW1lc3Bh
Y2UgSFRNTE5hbWVzOwotdXNpbmcgbmFtZXNwYWNlIHN0ZDsKIAogdHlwZWRlZiBIYXNoTWFwPERv
Y3VtZW50KiwgSGFzaFNldDxIVE1MTWVkaWFFbGVtZW50Kj4+IERvY3VtZW50RWxlbWVudFNldE1h
cDsKIHN0YXRpYyBEb2N1bWVudEVsZW1lbnRTZXRNYXAmIGRvY3VtZW50VG9FbGVtZW50U2V0TWFw
KCkKQEAgLTI3Niw5ICsyNzMsOSBAQCBIVE1MTWVkaWFFbGVtZW50OjpIVE1MTWVkaWFFbGVtZW50
KGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50JiBkb2N1bQogICAgICwgbV92
b2x1bWUoMS4wZikKICAgICAsIG1fdm9sdW1lSW5pdGlhbGl6ZWQoZmFsc2UpCiAgICAgLCBtX2xh
c3RTZWVrVGltZSgwKQotICAgICwgbV9wcmV2aW91c1Byb2dyZXNzVGltZShudW1lcmljX2xpbWl0
czxkb3VibGU+OjptYXgoKSkKKyAgICAsIG1fcHJldmlvdXNQcm9ncmVzc1RpbWUoc3RkOjpudW1l
cmljX2xpbWl0czxkb3VibGU+OjptYXgoKSkKICAgICAsIG1fY2xvY2tUaW1lQXRMYXN0VXBkYXRl
RXZlbnQoMCkKLSAgICAsIG1fbGFzdFRpbWVVcGRhdGVFdmVudE1vdmllVGltZShudW1lcmljX2xp
bWl0czxkb3VibGU+OjptYXgoKSkKKyAgICAsIG1fbGFzdFRpbWVVcGRhdGVFdmVudE1vdmllVGlt
ZShzdGQ6Om51bWVyaWNfbGltaXRzPGRvdWJsZT46Om1heCgpKQogICAgICwgbV9sb2FkU3RhdGUo
V2FpdGluZ0ZvclNvdXJjZSkKICNpZiBFTkFCTEUoUExVR0lOX1BST1hZX0ZPUl9WSURFTykKICAg
ICAsIG1fcHJveHlXaWRnZXQoMCkKQEAgLTEyMjQsNyArMTIyMSw3IEBAIHZvaWQgSFRNTE1lZGlh
RWxlbWVudDo6dXBkYXRlQWN0aXZlVGV4dFRyYWNrQ3Vlcyhkb3VibGUgbW92aWVUaW1lKQogICAg
ICAgICAgICAgZG91YmxlIGN1ZUVuZFRpbWUgPSBwb3RlbnRpYWxseVNraXBwZWRDdWVzW2ldLmhp
Z2goKTsKIAogICAgICAgICAgICAgLy8gQ29uc2lkZXIgY3VlcyB0aGF0IG1heSBoYXZlIGJlZW4g
bWlzc2VkIHNpbmNlIHRoZSBsYXN0IHNlZWsgdGltZS4KLSAgICAgICAgICAgIGlmIChjdWVTdGFy
dFRpbWUgPiBtYXgobV9sYXN0U2Vla1RpbWUsIGxhc3RUaW1lKSAmJiBjdWVFbmRUaW1lIDwgbW92
aWVUaW1lKQorICAgICAgICAgICAgaWYgKGN1ZVN0YXJ0VGltZSA+IHN0ZDo6bWF4KG1fbGFzdFNl
ZWtUaW1lLCBsYXN0VGltZSkgJiYgY3VlRW5kVGltZSA8IG1vdmllVGltZSkKICAgICAgICAgICAg
ICAgICBtaXNzZWRDdWVzLmFwcGVuZChwb3RlbnRpYWxseVNraXBwZWRDdWVzW2ldKTsKICAgICAg
ICAgfQogICAgIH0KQEAgLTE1MjAsNyArMTUxNyw3IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6
dGV4dFRyYWNrQWRkQ3VlKFRleHRUcmFjayogdHJhY2ssIFBhc3NSZWZQdHI8VGV4dFRyYWNrQ3Vl
CiAKICAgICAvLyBOZWdhdGl2ZSBkdXJhdGlvbiBjdWVzIG5lZWQgYmUgdHJlYXRlZCBpbiB0aGUg
aW50ZXJ2YWwgdHJlZSBhcwogICAgIC8vIHplcm8tbGVuZ3RoIGN1ZXMuCi0gICAgZG91YmxlIGVu
ZFRpbWUgPSBtYXgoY3VlLT5zdGFydFRpbWUoKSwgY3VlLT5lbmRUaW1lKCkpOworICAgIGRvdWJs
ZSBlbmRUaW1lID0gc3RkOjptYXgoY3VlLT5zdGFydFRpbWUoKSwgY3VlLT5lbmRUaW1lKCkpOwog
CiAgICAgQ3VlSW50ZXJ2YWwgaW50ZXJ2YWwgPSBtX2N1ZVRyZWUuY3JlYXRlSW50ZXJ2YWwoY3Vl
LT5zdGFydFRpbWUoKSwgZW5kVGltZSwgY3VlLmdldCgpKTsKICAgICBpZiAoIW1fY3VlVHJlZS5j
b250YWlucyhpbnRlcnZhbCkpCkBAIC0xNTMyLDcgKzE1MjksNyBAQCB2b2lkIEhUTUxNZWRpYUVs
ZW1lbnQ6OnRleHRUcmFja1JlbW92ZUN1ZShUZXh0VHJhY2sqLCBQYXNzUmVmUHRyPFRleHRUcmFj
a0N1ZT4gYwogewogICAgIC8vIE5lZ2F0aXZlIGR1cmF0aW9uIGN1ZXMgbmVlZCB0byBiZSB0cmVh
dGVkIGluIHRoZSBpbnRlcnZhbCB0cmVlIGFzCiAgICAgLy8gemVyby1sZW5ndGggY3Vlcy4KLSAg
ICBkb3VibGUgZW5kVGltZSA9IG1heChjdWUtPnN0YXJ0VGltZSgpLCBjdWUtPmVuZFRpbWUoKSk7
CisgICAgZG91YmxlIGVuZFRpbWUgPSBzdGQ6Om1heChjdWUtPnN0YXJ0VGltZSgpLCBjdWUtPmVu
ZFRpbWUoKSk7CiAKICAgICBDdWVJbnRlcnZhbCBpbnRlcnZhbCA9IG1fY3VlVHJlZS5jcmVhdGVJ
bnRlcnZhbChjdWUtPnN0YXJ0VGltZSgpLCBlbmRUaW1lLCBjdWUuZ2V0KCkpOwogICAgIG1fY3Vl
VHJlZS5yZW1vdmUoaW50ZXJ2YWwpOwpAQCAtMjEwMyw3ICsyMTAwLDcgQEAgdm9pZCBIVE1MTWVk
aWFFbGVtZW50Ojpwcm9ncmVzc0V2ZW50VGltZXJGaXJlZChUaW1lcjxIVE1MTWVkaWFFbGVtZW50
PiopCiB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnJld2luZChkb3VibGUgdGltZURlbHRhKQogewog
ICAgIExPRyhNZWRpYSwgIkhUTUxNZWRpYUVsZW1lbnQ6OnJld2luZCglZikiLCB0aW1lRGVsdGEp
OwotICAgIHNldEN1cnJlbnRUaW1lKG1heChjdXJyZW50VGltZSgpIC0gdGltZURlbHRhLCBtaW5U
aW1lU2Vla2FibGUoKSksIElHTk9SRV9FWENFUFRJT04pOworICAgIHNldEN1cnJlbnRUaW1lKHN0
ZDo6bWF4KGN1cnJlbnRUaW1lKCkgLSB0aW1lRGVsdGEsIG1pblRpbWVTZWVrYWJsZSgpKSwgSUdO
T1JFX0VYQ0VQVElPTik7CiB9CiAKIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6cmV0dXJuVG9SZWFs
dGltZSgpCkBAIC0yMTcwLDExICsyMTY3LDExIEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6c2Vl
ayhkb3VibGUgdGltZSwgRXhjZXB0aW9uQ29kZSYgZWMpCiAKICAgICAvLyA1IC0gSWYgdGhlIG5l
dyBwbGF5YmFjayBwb3NpdGlvbiBpcyBsYXRlciB0aGFuIHRoZSBlbmQgb2YgdGhlIG1lZGlhIHJl
c291cmNlLCB0aGVuIGxldCBpdCBiZSB0aGUgZW5kIAogICAgIC8vIG9mIHRoZSBtZWRpYSByZXNv
dXJjZSBpbnN0ZWFkLgotICAgIHRpbWUgPSBtaW4odGltZSwgZHVyYXRpb24oKSk7CisgICAgdGlt
ZSA9IHN0ZDo6bWluKHRpbWUsIGR1cmF0aW9uKCkpOwogCiAgICAgLy8gNiAtIElmIHRoZSBuZXcg
cGxheWJhY2sgcG9zaXRpb24gaXMgbGVzcyB0aGFuIHRoZSBlYXJsaWVzdCBwb3NzaWJsZSBwb3Np
dGlvbiwgbGV0IGl0IGJlIHRoYXQgcG9zaXRpb24gaW5zdGVhZC4KICAgICBkb3VibGUgZWFybGll
c3RUaW1lID0gbV9wbGF5ZXItPnN0YXJ0VGltZSgpOwotICAgIHRpbWUgPSBtYXgodGltZSwgZWFy
bGllc3RUaW1lKTsKKyAgICB0aW1lID0gc3RkOjptYXgodGltZSwgZWFybGllc3RUaW1lKTsKIAog
ICAgIC8vIEFzayB0aGUgbWVkaWEgZW5naW5lIGZvciB0aGUgdGltZSB2YWx1ZSBpbiB0aGUgbW92
aWUncyB0aW1lIHNjYWxlIGJlZm9yZSBjb21wYXJpbmcgd2l0aCBjdXJyZW50IHRpbWUuIFRoaXMK
ICAgICAvLyBpcyBuZWNlc3NhcnkgYmVjYXVzZSBpZiB0aGUgc2VlayB0aW1lIGlzIG5vdCBlcXVh
bCB0byBjdXJyZW50VGltZSBidXQgdGhlIGRlbHRhIGlzIGxlc3MgdGhhbiB0aGUgbW92aWUncwpA
QCAtMjM3Nyw3ICsyMzc0LDcgQEAgZG91YmxlIEhUTUxNZWRpYUVsZW1lbnQ6OmR1cmF0aW9uKCkg
Y29uc3QKICAgICBpZiAobV9wbGF5ZXIgJiYgbV9yZWFkeVN0YXRlID49IEhBVkVfTUVUQURBVEEp
CiAgICAgICAgIHJldHVybiBtX3BsYXllci0+ZHVyYXRpb24oKTsKIAotICAgIHJldHVybiBudW1l
cmljX2xpbWl0czxkb3VibGU+OjpxdWlldF9OYU4oKTsKKyAgICByZXR1cm4gc3RkOjpudW1lcmlj
X2xpbWl0czxkb3VibGU+OjpxdWlldF9OYU4oKTsKIH0KIAogYm9vbCBIVE1MTWVkaWFFbGVtZW50
OjpwYXVzZWQoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MU2Vs
ZWN0RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxTZWxlY3RFbGVtZW50LmNw
cAppbmRleCBlYWE3NmM3YTNkOTk5MGNlMzY4ZmI5ZjZmMzZhZTUxNTI3NjBjN2M4Li4zM2NjMTYy
NTQ2MzBhNWY3ZjFjZmYxMjgzNzBiMzhlMzFhMTRkYTQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxTZWxlY3RFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxTZWxlY3RFbGVtZW50LmNwcApAQCAtNTUsNyArNTUsNiBAQAogI2luY2x1ZGUgIlNldHRp
bmdzLmgiCiAjaW5jbHVkZSAiU3BhdGlhbE5hdmlnYXRpb24uaCIKIAotdXNpbmcgbmFtZXNwYWNl
IHN0ZDsKIHVzaW5nIG5hbWVzcGFjZSBXVEY6OlVuaWNvZGU7CiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKQEAgLTMwNCw3ICszMDMsNyBAQCB2b2lkIEhUTUxTZWxlY3RFbGVtZW50OjpwYXJzZUF0dHJp
YnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lLCBjb25zdCBBdG9taWNTdAogICAgICAgICAg
ICAgaWYgKEF0dHJpYnV0ZSogc2l6ZUF0dHJpYnV0ZSA9IGVuc3VyZVVuaXF1ZUVsZW1lbnREYXRh
KCkuZmluZEF0dHJpYnV0ZUJ5TmFtZShzaXplQXR0cikpCiAgICAgICAgICAgICAgICAgc2l6ZUF0
dHJpYnV0ZS0+c2V0VmFsdWUoYXR0clNpemUpOwogICAgICAgICB9Ci0gICAgICAgIHNpemUgPSBt
YXgoc2l6ZSwgMSk7CisgICAgICAgIHNpemUgPSBzdGQ6Om1heChzaXplLCAxKTsKIAogICAgICAg
ICAvLyBFbnN1cmUgdGhhdCB3ZSd2ZSBkZXRlcm1pbmVkIHNlbGVjdGVkbmVzcyBvZiB0aGUgaXRl
bXMgYXQgbGVhc3Qgb25jZSBwcmlvciB0byBjaGFuZ2luZyB0aGUgc2l6ZS4KICAgICAgICAgaWYg
KG9sZFNpemUgIT0gc2l6ZSkKQEAgLTYyMSw4ICs2MjAsOCBAQCB2b2lkIEhUTUxTZWxlY3RFbGVt
ZW50Ojp1cGRhdGVMaXN0Qm94U2VsZWN0aW9uKGJvb2wgZGVzZWxlY3RPdGhlck9wdGlvbnMpCiAg
ICAgQVNTRVJUKHJlbmRlcmVyKCkgJiYgKHJlbmRlcmVyKCktPmlzTGlzdEJveCgpIHx8IG1fbXVs
dGlwbGUpKTsKICAgICBBU1NFUlQoIWxpc3RJdGVtcygpLnNpemUoKSB8fCBtX2FjdGl2ZVNlbGVj
dGlvbkFuY2hvckluZGV4ID49IDApOwogCi0gICAgdW5zaWduZWQgc3RhcnQgPSBtaW4obV9hY3Rp
dmVTZWxlY3Rpb25BbmNob3JJbmRleCwgbV9hY3RpdmVTZWxlY3Rpb25FbmRJbmRleCk7Ci0gICAg
dW5zaWduZWQgZW5kID0gbWF4KG1fYWN0aXZlU2VsZWN0aW9uQW5jaG9ySW5kZXgsIG1fYWN0aXZl
U2VsZWN0aW9uRW5kSW5kZXgpOworICAgIHVuc2lnbmVkIHN0YXJ0ID0gc3RkOjptaW4obV9hY3Rp
dmVTZWxlY3Rpb25BbmNob3JJbmRleCwgbV9hY3RpdmVTZWxlY3Rpb25FbmRJbmRleCk7CisgICAg
dW5zaWduZWQgZW5kID0gc3RkOjptYXgobV9hY3RpdmVTZWxlY3Rpb25BbmNob3JJbmRleCwgbV9h
Y3RpdmVTZWxlY3Rpb25FbmRJbmRleCk7CiAKICAgICBjb25zdCBWZWN0b3I8SFRNTEVsZW1lbnQq
PiYgaXRlbXMgPSBsaXN0SXRlbXMoKTsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgaXRl
bXMuc2l6ZSgpOyArK2kpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFNv
dXJjZUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MU291cmNlRWxlbWVudC5j
cHAKaW5kZXggOTJkNjk1NjNlODM4NGFiNWJjNTFkNzQyMDBjZGUyMWVjODFmNmE4My4uZmEwZDI0
ZDYwMjJhOGRjMjI4YzA3ZGFjYTg4NzM2M2NlM2QzYmNmZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MU291cmNlRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MU291cmNlRWxlbWVudC5jcHAKQEAgLTM0LDggKzM0LDYgQEAKICNpbmNsdWRlICJIVE1M
TmFtZXMuaCIKICNpbmNsdWRlICJMb2dnaW5nLmgiCiAKLXVzaW5nIG5hbWVzcGFjZSBzdGQ7Ci0K
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogdXNpbmcgbmFtZXNwYWNlIEhUTUxOYW1lczsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRhYmxlQ2VsbEVsZW1lbnQuY3BwIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGFibGVDZWxsRWxlbWVudC5jcHAKaW5kZXggMDM0NTFlODQ5
ZjNkZTRiM2NjYzc0ZjY3YjExODhlMTU4NjJlNDZlNy4uOTFmZDExNTZhYTNkNjRlNTcwYjI1YWRh
ZjA0NDk4ZmJhM2JhYzdlYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGFi
bGVDZWxsRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGFibGVDZWxs
RWxlbWVudC5jcHAKQEAgLTMyLDkgKzMyLDYgQEAKICNpbmNsdWRlICJIVE1MVGFibGVFbGVtZW50
LmgiCiAjaW5jbHVkZSAiUmVuZGVyVGFibGVDZWxsLmgiCiAKLXVzaW5nIHN0ZDo6bWF4OwotdXNp
bmcgc3RkOjptaW47Ci0KIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogLy8gQ2xhbXAgcm93c3BhbiBh
dCA4ayB0byBtYXRjaCBGaXJlZm94LgpAQCAtNTUsMTMgKzUyLDEzIEBAIFBhc3NSZWZQdHI8SFRN
TFRhYmxlQ2VsbEVsZW1lbnQ+IEhUTUxUYWJsZUNlbGxFbGVtZW50OjpjcmVhdGUoY29uc3QgUXVh
bGlmaWVkTmFtCiBpbnQgSFRNTFRhYmxlQ2VsbEVsZW1lbnQ6OmNvbFNwYW4oKSBjb25zdAogewog
ICAgIGNvbnN0IEF0b21pY1N0cmluZyYgY29sU3BhblZhbHVlID0gZmFzdEdldEF0dHJpYnV0ZShj
b2xzcGFuQXR0cik7Ci0gICAgcmV0dXJuIG1heCgxLCBjb2xTcGFuVmFsdWUudG9JbnQoKSk7Cisg
ICAgcmV0dXJuIHN0ZDo6bWF4KDEsIGNvbFNwYW5WYWx1ZS50b0ludCgpKTsKIH0KIAogaW50IEhU
TUxUYWJsZUNlbGxFbGVtZW50Ojpyb3dTcGFuKCkgY29uc3QKIHsKICAgICBjb25zdCBBdG9taWNT
dHJpbmcmIHJvd1NwYW5WYWx1ZSA9IGZhc3RHZXRBdHRyaWJ1dGUocm93c3BhbkF0dHIpOwotICAg
IHJldHVybiBtYXgoMSwgbWluKHJvd1NwYW5WYWx1ZS50b0ludCgpLCBtYXhSb3dzcGFuKSk7Cisg
ICAgcmV0dXJuIHN0ZDo6bWF4KDEsIHN0ZDo6bWluKHJvd1NwYW5WYWx1ZS50b0ludCgpLCBtYXhS
b3dzcGFuKSk7CiB9CiAKIGludCBIVE1MVGFibGVDZWxsRWxlbWVudDo6Y2VsbEluZGV4KCkgY29u
c3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRhYmxlRWxlbWVudC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUYWJsZUVsZW1lbnQuY3BwCmluZGV4IDk3YjNiMDgz
OTBmNjY5ODA2YjE2ZTRkNDY4NTVkMzY4OWI2MTViODguLjQ1YWQ3NzQ2MmE1ZjlhZTc1NzMyNmYw
MTE3MjkwMzdhNTFjOWQ0YzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRh
YmxlRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGFibGVFbGVtZW50
LmNwcApAQCAtMzk0LDcgKzM5NCw3IEBAIHZvaWQgSFRNTFRhYmxlRWxlbWVudDo6cGFyc2VBdHRy
aWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwgY29uc3QgQXRvbWljU3RyCiAgICAgICAg
ICAgICBtX3J1bGVzQXR0ciA9IEFsbFJ1bGVzOwogICAgIH0gZWxzZSBpZiAobmFtZSA9PSBjZWxs
cGFkZGluZ0F0dHIpIHsKICAgICAgICAgaWYgKCF2YWx1ZS5pc0VtcHR5KCkpCi0gICAgICAgICAg
ICBtX3BhZGRpbmcgPSBtYXgoMCwgdmFsdWUudG9JbnQoKSk7CisgICAgICAgICAgICBtX3BhZGRp
bmcgPSBzdGQ6Om1heCgwLCB2YWx1ZS50b0ludCgpKTsKICAgICAgICAgZWxzZQogICAgICAgICAg
ICAgbV9wYWRkaW5nID0gMTsKICAgICB9IGVsc2UgaWYgKG5hbWUgPT0gY29sc0F0dHIpIHsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudC5jcHAK
aW5kZXggZjI1N2I2YmZhN2U4YWY1ZDkwYjgyM2JmMDhmYmQyZDMxNzhjMjFhMS4uYzc3NzBkMzVk
Y2QzM2E4MTY3M2I3ZjljY2RjODU0MDQ0ZjgyYzg4NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudC5jcHAKQEAgLTUxLDcgKzUxLDYgQEAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogdXNpbmcgbmFtZXNwYWNlIEhUTUxOYW1lczsKLXVzaW5n
IG5hbWVzcGFjZSBzdGQ7CiAKIEhUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50OjpIVE1MVGV4dEZv
cm1Db250cm9sRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCYg
ZG9jdW1lbnQsIEhUTUxGb3JtRWxlbWVudCogZm9ybSkKICAgICA6IEhUTUxGb3JtQ29udHJvbEVs
ZW1lbnRXaXRoU3RhdGUodGFnTmFtZSwgZG9jdW1lbnQsIGZvcm0pCkBAIC0xNzEsMTIgKzE3MCwx
MiBAQCB2b2lkIEhUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50Ojp1cGRhdGVQbGFjZWhvbGRlclZp
c2liaWxpdHkoYm9vbCBwbGFjZWhvbGRlclZhbAogCiB2b2lkIEhUTUxUZXh0Rm9ybUNvbnRyb2xF
bGVtZW50OjpzZXRTZWxlY3Rpb25TdGFydChpbnQgc3RhcnQpCiB7Ci0gICAgc2V0U2VsZWN0aW9u
UmFuZ2Uoc3RhcnQsIG1heChzdGFydCwgc2VsZWN0aW9uRW5kKCkpLCBzZWxlY3Rpb25EaXJlY3Rp
b24oKSk7CisgICAgc2V0U2VsZWN0aW9uUmFuZ2Uoc3RhcnQsIHN0ZDo6bWF4KHN0YXJ0LCBzZWxl
Y3Rpb25FbmQoKSksIHNlbGVjdGlvbkRpcmVjdGlvbigpKTsKIH0KIAogdm9pZCBIVE1MVGV4dEZv
cm1Db250cm9sRWxlbWVudDo6c2V0U2VsZWN0aW9uRW5kKGludCBlbmQpCiB7Ci0gICAgc2V0U2Vs
ZWN0aW9uUmFuZ2UobWluKGVuZCwgc2VsZWN0aW9uU3RhcnQoKSksIGVuZCwgc2VsZWN0aW9uRGly
ZWN0aW9uKCkpOworICAgIHNldFNlbGVjdGlvblJhbmdlKHN0ZDo6bWluKGVuZCwgc2VsZWN0aW9u
U3RhcnQoKSksIGVuZCwgc2VsZWN0aW9uRGlyZWN0aW9uKCkpOwogfQogCiB2b2lkIEhUTUxUZXh0
Rm9ybUNvbnRyb2xFbGVtZW50OjpzZXRTZWxlY3Rpb25EaXJlY3Rpb24oY29uc3QgU3RyaW5nJiBk
aXJlY3Rpb24pCkBAIC0xODYsNyArMTg1LDcgQEAgdm9pZCBIVE1MVGV4dEZvcm1Db250cm9sRWxl
bWVudDo6c2V0U2VsZWN0aW9uRGlyZWN0aW9uKGNvbnN0IFN0cmluZyYgZGlyZWN0aW9uKQogCiB2
b2lkIEhUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50OjpzZWxlY3QoKQogewotICAgIHNldFNlbGVj
dGlvblJhbmdlKDAsIG51bWVyaWNfbGltaXRzPGludD46Om1heCgpLCBTZWxlY3Rpb25IYXNOb0Rp
cmVjdGlvbik7CisgICAgc2V0U2VsZWN0aW9uUmFuZ2UoMCwgc3RkOjpudW1lcmljX2xpbWl0czxp
bnQ+OjptYXgoKSwgU2VsZWN0aW9uSGFzTm9EaXJlY3Rpb24pOwogfQogCiBTdHJpbmcgSFRNTFRl
eHRGb3JtQ29udHJvbEVsZW1lbnQ6OnNlbGVjdGVkVGV4dCgpIGNvbnN0CkBAIC0yODcsOCArMjg2
LDggQEAgdm9pZCBIVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudDo6c2V0U2VsZWN0aW9uUmFuZ2Uo
aW50IHN0YXJ0LCBpbnQgZW5kLCBUZXh0RmllbGQKICAgICBpZiAoIXJlbmRlcmVyKCkgfHwgIXJl
bmRlcmVyKCktPmlzVGV4dENvbnRyb2woKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgZW5kID0g
bWF4KGVuZCwgMCk7Ci0gICAgc3RhcnQgPSBtaW4obWF4KHN0YXJ0LCAwKSwgZW5kKTsKKyAgICBl
bmQgPSBzdGQ6Om1heChlbmQsIDApOworICAgIHN0YXJ0ID0gc3RkOjptaW4oc3RkOjptYXgoc3Rh
cnQsIDApLCBlbmQpOwogCiAgICAgaWYgKCFoYXNWaXNpYmxlVGV4dEFyZWEoKnJlbmRlcmVyKCks
IGlubmVyVGV4dEVsZW1lbnQoKSkpIHsKICAgICAgICAgY2FjaGVTZWxlY3Rpb24oc3RhcnQsIGVu
ZCwgZGlyZWN0aW9uKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRyYWNr
RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUcmFja0VsZW1lbnQuY3BwCmlu
ZGV4IDIyMTI5OTAwMGJhZGQ1MzU5Y2Y0ZDQ4OWVkZmIwNzBkM2E4OGZkZGIuLjhjOWI3NThmM2Jh
ZmEwMzdhOWZjYjc5MDk5MWQ2YzdhYTYzOWUzODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTFRyYWNrRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
VHJhY2tFbGVtZW50LmNwcApAQCAtMzQsOCArMzQsNiBAQAogI2luY2x1ZGUgIkxvZ2dpbmcuaCIK
ICNpbmNsdWRlICJSdW50aW1lRW5hYmxlZEZlYXR1cmVzLmgiCiAKLXVzaW5nIG5hbWVzcGFjZSBz
dGQ7Ci0KIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogdXNpbmcgbmFtZXNwYWNlIEhUTUxOYW1lczsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW1hZ2VEb2N1bWVudC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0ltYWdlRG9jdW1lbnQuY3BwCmluZGV4IDg1NGM0NzFhYzFiODNlNmI5
MzNlZDk1ZTBmYzIzMDY0YTY3NThhYWUuLmU1MTg2MDZhNzk1MDIzNzE5ZmUwMGM3ODU1YWVhODQ5
OGQ2NjQwMzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW1hZ2VEb2N1bWVudC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9JbWFnZURvY3VtZW50LmNwcApAQCAtNDYsOCAr
NDYsNiBAQAogI2luY2x1ZGUgIlJlc291cmNlQnVmZmVyLmgiCiAjaW5jbHVkZSAiU2V0dGluZ3Mu
aCIKIAotdXNpbmcgc3RkOjptaW47Ci0KIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogdXNpbmcgbmFt
ZXNwYWNlIEhUTUxOYW1lczsKQEAgLTI0MSw3ICsyMzksNyBAQCBmbG9hdCBJbWFnZURvY3VtZW50
OjpzY2FsZSgpIGNvbnN0CiAgICAgZmxvYXQgd2lkdGhTY2FsZSA9IChmbG9hdCl3aW5kb3dTaXpl
LndpZHRoKCkgLyBpbWFnZVNpemUud2lkdGgoKTsKICAgICBmbG9hdCBoZWlnaHRTY2FsZSA9IChm
bG9hdCl3aW5kb3dTaXplLmhlaWdodCgpIC8gaW1hZ2VTaXplLmhlaWdodCgpOwogCi0gICAgcmV0
dXJuIG1pbih3aWR0aFNjYWxlLCBoZWlnaHRTY2FsZSk7CisgICAgcmV0dXJuIHN0ZDo6bWluKHdp
ZHRoU2NhbGUsIGhlaWdodFNjYWxlKTsKIH0KIAogdm9pZCBJbWFnZURvY3VtZW50OjpyZXNpemVJ
bWFnZVRvRml0KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW5wdXRUeXBlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW5wdXRUeXBlLmNwcAppbmRleCA5MDA3OGJiYzk4Mzg5
ZDg5ZDA1NWUzZjYyYjY5MDUwNGE0ZjFlMTFhLi5lZDM0NDNhNWMxYzM0MmZjNmNlNzM4OTcwOTM3
ZDZkNWI1NGQ4MWNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0lucHV0VHlwZS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9JbnB1dFR5cGUuY3BwCkBAIC04Miw3ICs4Miw2
IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHVzaW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7Ci11
c2luZyBuYW1lc3BhY2Ugc3RkOwogCiB0eXBlZGVmIE93blB0cjxJbnB1dFR5cGU+ICgqSW5wdXRU
eXBlRmFjdG9yeUZ1bmN0aW9uKShIVE1MSW5wdXRFbGVtZW50Jik7CiB0eXBlZGVmIEhhc2hNYXA8
QXRvbWljU3RyaW5nLCBJbnB1dFR5cGVGYWN0b3J5RnVuY3Rpb24sIENhc2VGb2xkaW5nSGFzaD4g
SW5wdXRUeXBlRmFjdG9yeU1hcDsKQEAgLTIyMyw3ICsyMjIsNyBAQCB2b2lkIElucHV0VHlwZTo6
c2V0VmFsdWVBc0RhdGUoZG91YmxlLCBFeGNlcHRpb25Db2RlJiBlYykgY29uc3QKIAogZG91Ymxl
IElucHV0VHlwZTo6dmFsdWVBc0RvdWJsZSgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG51bWVyaWNf
bGltaXRzPGRvdWJsZT46OnF1aWV0X05hTigpOworICAgIHJldHVybiBzdGQ6Om51bWVyaWNfbGlt
aXRzPGRvdWJsZT46OnF1aWV0X05hTigpOwogfQogCiB2b2lkIElucHV0VHlwZTo6c2V0VmFsdWVB
c0RvdWJsZShkb3VibGUgZG91YmxlVmFsdWUsIFRleHRGaWVsZEV2ZW50QmVoYXZpb3IgZXZlbnRC
ZWhhdmlvciwgRXhjZXB0aW9uQ29kZSYgZWMpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL01lZGlhQ29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL01lZGlh
Q29udHJvbGxlci5jcHAKaW5kZXggMjdkOGUzYTkyMmFlMzM3YjQ4Mzg3NzE3MjE2YTBlMzM4N2Zm
MjZjOS4uMjQ2ZDMxNGYzN2U2ZDg5YmI1ZjYyMjAyYTBkYWJkNjYxYjdhYzNiMyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9NZWRpYUNvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvTWVkaWFDb250cm9sbGVyLmNwcApAQCAtMzcsNyArMzcsNiBAQAogI2luY2x1
ZGUgPHd0Zi90ZXh0L0F0b21pY1N0cmluZy5oPgogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsK
LXVzaW5nIG5hbWVzcGFjZSBzdGQ7CiAKIFBhc3NSZWZQdHI8TWVkaWFDb250cm9sbGVyPiBNZWRp
YUNvbnRyb2xsZXI6OmNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0KQogewpA
QCAtMTM4LDcgKzEzNyw3IEBAIGRvdWJsZSBNZWRpYUNvbnRyb2xsZXI6OmR1cmF0aW9uKCkgY29u
c3QKICAgICAgICAgZG91YmxlIGR1cmF0aW9uID0gbV9tZWRpYUVsZW1lbnRzW2luZGV4XS0+ZHVy
YXRpb24oKTsKICAgICAgICAgaWYgKHN0ZDo6aXNuYW4oZHVyYXRpb24pKQogICAgICAgICAgICAg
Y29udGludWU7Ci0gICAgICAgIG1heER1cmF0aW9uID0gbWF4KG1heER1cmF0aW9uLCBkdXJhdGlv
bik7CisgICAgICAgIG1heER1cmF0aW9uID0gc3RkOjptYXgobWF4RHVyYXRpb24sIGR1cmF0aW9u
KTsKICAgICB9CiAgICAgcmV0dXJuIG1heER1cmF0aW9uOwogfQpAQCAtMTUwLDcgKzE0OSw3IEBA
IGRvdWJsZSBNZWRpYUNvbnRyb2xsZXI6OmN1cnJlbnRUaW1lKCkgY29uc3QKIAogICAgIGlmICht
X3Bvc2l0aW9uID09IE1lZGlhUGxheWVyOjppbnZhbGlkVGltZSgpKSB7CiAgICAgICAgIC8vIFNv
bWUgY2xvY2tzIG1heSByZXR1cm4gdGltZXMgb3V0c2lkZSB0aGUgcmFuZ2Ugb2YgWzAuLmR1cmF0
aW9uXS4KLSAgICAgICAgbV9wb3NpdGlvbiA9IG1heCgwLjAsIG1pbihkdXJhdGlvbigpLCBtX2Ns
b2NrLT5jdXJyZW50VGltZSgpKSk7CisgICAgICAgIG1fcG9zaXRpb24gPSBzdGQ6Om1heDxkb3Vi
bGU+KDAsIHN0ZDo6bWluKGR1cmF0aW9uKCksIG1fY2xvY2stPmN1cnJlbnRUaW1lKCkpKTsKICAg
ICAgICAgbV9jbGVhclBvc2l0aW9uVGltZXIuc3RhcnRPbmVTaG90KDApOwogICAgIH0KIApAQCAt
MTYyLDExICsxNjEsMTEgQEAgdm9pZCBNZWRpYUNvbnRyb2xsZXI6OnNldEN1cnJlbnRUaW1lKGRv
dWJsZSB0aW1lLCBFeGNlcHRpb25Db2RlJiBjb2RlKQogICAgIC8vIFdoZW4gdGhlIHVzZXIgYWdl
bnQgaXMgdG8gc2VlayB0aGUgbWVkaWEgY29udHJvbGxlciB0byBhIHBhcnRpY3VsYXIgbmV3IHBs
YXliYWNrIHBvc2l0aW9uLCAKICAgICAvLyBpdCBtdXN0IGZvbGxvdyB0aGVzZSBzdGVwczoKICAg
ICAvLyBJZiB0aGUgbmV3IHBsYXliYWNrIHBvc2l0aW9uIGlzIGxlc3MgdGhhbiB6ZXJvLCB0aGVu
IHNldCBpdCB0byB6ZXJvLgotICAgIHRpbWUgPSBtYXgoMC4wLCB0aW1lKTsKKyAgICB0aW1lID0g
c3RkOjptYXgoMC4wLCB0aW1lKTsKICAgICAKICAgICAvLyBJZiB0aGUgbmV3IHBsYXliYWNrIHBv
c2l0aW9uIGlzIGdyZWF0ZXIgdGhhbiB0aGUgbWVkaWEgY29udHJvbGxlciBkdXJhdGlvbiwgdGhl
biBzZXQgaXQgCiAgICAgLy8gdG8gdGhlIG1lZGlhIGNvbnRyb2xsZXIgZHVyYXRpb24uCi0gICAg
dGltZSA9IG1pbih0aW1lLCBkdXJhdGlvbigpKTsKKyAgICB0aW1lID0gc3RkOjptaW4odGltZSwg
ZHVyYXRpb24oKSk7CiAgICAgCiAgICAgLy8gU2V0IHRoZSBtZWRpYSBjb250cm9sbGVyIHBvc2l0
aW9uIHRvIHRoZSBuZXcgcGxheWJhY2sgcG9zaXRpb24uCiAgICAgbV9jbG9jay0+c2V0Q3VycmVu
dFRpbWUodGltZSk7CkBAIC0zNjAsNyArMzU5LDcgQEAgdm9pZCBNZWRpYUNvbnRyb2xsZXI6OnVw
ZGF0ZVJlYWR5U3RhdGUoKQogICAgICAgICAvLyBzbGF2ZWQgbWVkaWEgZWxlbWVudHMuCiAgICAg
ICAgIG5ld1JlYWR5U3RhdGUgPSBtX21lZGlhRWxlbWVudHMuZmlyc3QoKS0+cmVhZHlTdGF0ZSgp
OwogICAgICAgICBmb3IgKHNpemVfdCBpbmRleCA9IDE7IGluZGV4IDwgbV9tZWRpYUVsZW1lbnRz
LnNpemUoKTsgKytpbmRleCkKLSAgICAgICAgICAgIG5ld1JlYWR5U3RhdGUgPSBtaW4obmV3UmVh
ZHlTdGF0ZSwgbV9tZWRpYUVsZW1lbnRzW2luZGV4XS0+cmVhZHlTdGF0ZSgpKTsKKyAgICAgICAg
ICAgIG5ld1JlYWR5U3RhdGUgPSBzdGQ6Om1pbihuZXdSZWFkeVN0YXRlLCBtX21lZGlhRWxlbWVu
dHNbaW5kZXhdLT5yZWFkeVN0YXRlKCkpOwogICAgIH0KIAogICAgIGlmIChuZXdSZWFkeVN0YXRl
ID09IG9sZFJlYWR5U3RhdGUpIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9OdW1i
ZXJJbnB1dFR5cGUuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9OdW1iZXJJbnB1dFR5cGUuY3Bw
CmluZGV4IDZmNTVkZmI5YzAyNDM5NmVkODI5MDAwMzI0ZWYyYzlmZjRhYmFhMzguLjJmMzAyZjJj
YTNjMjI3MzU0NmViOTIxMWY2ODFlODhjZjljZTNlYTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvTnVtYmVySW5wdXRUeXBlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL051
bWJlcklucHV0VHlwZS5jcHAKQEAgLTQ5LDcgKzQ5LDYgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAogdXNpbmcgbmFtZXNwYWNlIEhUTUxOYW1lczsKLXVzaW5nIG5hbWVzcGFjZSBzdGQ7CiAKIHN0
YXRpYyBjb25zdCBpbnQgbnVtYmVyRGVmYXVsdFN0ZXAgPSAxOwogc3RhdGljIGNvbnN0IGludCBu
dW1iZXJEZWZhdWx0U3RlcEJhc2UgPSAwOwpAQCAtMTI1LDcgKzEyNCw3IEBAIGRvdWJsZSBOdW1i
ZXJJbnB1dFR5cGU6OnZhbHVlQXNEb3VibGUoKSBjb25zdAogdm9pZCBOdW1iZXJJbnB1dFR5cGU6
OnNldFZhbHVlQXNEb3VibGUoZG91YmxlIG5ld1ZhbHVlLCBUZXh0RmllbGRFdmVudEJlaGF2aW9y
IGV2ZW50QmVoYXZpb3IsIEV4Y2VwdGlvbkNvZGUmIGVjKSBjb25zdAogewogICAgIC8vIEZJWE1F
OiBXZSBzaG91bGQgdXNlIG51bWVyaWNfbGltaXRzPGRvdWJsZT46Om1heCBmb3IgbnVtYmVyIGlu
cHV0IHR5cGUuCi0gICAgY29uc3QgZG91YmxlIGZsb2F0TWF4ID0gbnVtZXJpY19saW1pdHM8Zmxv
YXQ+OjptYXgoKTsKKyAgICBjb25zdCBkb3VibGUgZmxvYXRNYXggPSBzdGQ6Om51bWVyaWNfbGlt
aXRzPGZsb2F0Pjo6bWF4KCk7CiAgICAgaWYgKG5ld1ZhbHVlIDwgLWZsb2F0TWF4KSB7CiAgICAg
ICAgIGVjID0gSU5WQUxJRF9TVEFURV9FUlI7CiAgICAgICAgIHJldHVybjsKQEAgLTE0MCw3ICsx
MzksNyBAQCB2b2lkIE51bWJlcklucHV0VHlwZTo6c2V0VmFsdWVBc0RvdWJsZShkb3VibGUgbmV3
VmFsdWUsIFRleHRGaWVsZEV2ZW50QmVoYXZpb3IgZQogdm9pZCBOdW1iZXJJbnB1dFR5cGU6OnNl
dFZhbHVlQXNEZWNpbWFsKGNvbnN0IERlY2ltYWwmIG5ld1ZhbHVlLCBUZXh0RmllbGRFdmVudEJl
aGF2aW9yIGV2ZW50QmVoYXZpb3IsIEV4Y2VwdGlvbkNvZGUmIGVjKSBjb25zdAogewogICAgIC8v
IEZJWE1FOiBXZSBzaG91bGQgdXNlIG51bWVyaWNfbGltaXRzPGRvdWJsZT46Om1heCBmb3IgbnVt
YmVyIGlucHV0IHR5cGUuCi0gICAgY29uc3QgRGVjaW1hbCBmbG9hdE1heCA9IERlY2ltYWw6OmZy
b21Eb3VibGUobnVtZXJpY19saW1pdHM8ZmxvYXQ+OjptYXgoKSk7CisgICAgY29uc3QgRGVjaW1h
bCBmbG9hdE1heCA9IERlY2ltYWw6OmZyb21Eb3VibGUoc3RkOjpudW1lcmljX2xpbWl0czxmbG9h
dD46Om1heCgpKTsKICAgICBpZiAobmV3VmFsdWUgPCAtZmxvYXRNYXgpIHsKICAgICAgICAgZWMg
PSBJTlZBTElEX1NUQVRFX0VSUjsKICAgICAgICAgcmV0dXJuOwpAQCAtMTY4LDcgKzE2Nyw3IEBA
IFN0ZXBSYW5nZSBOdW1iZXJJbnB1dFR5cGU6OmNyZWF0ZVN0ZXBSYW5nZShBbnlTdGVwSGFuZGxp
bmcgYW55U3RlcEhhbmRsaW5nKSBjb25zCiAgICAgREVGSU5FX1NUQVRJQ19MT0NBTChjb25zdCBT
dGVwUmFuZ2U6OlN0ZXBEZXNjcmlwdGlvbiwgc3RlcERlc2NyaXB0aW9uLCAobnVtYmVyRGVmYXVs
dFN0ZXAsIG51bWJlckRlZmF1bHRTdGVwQmFzZSwgbnVtYmVyU3RlcFNjYWxlRmFjdG9yKSk7CiAg
ICAgY29uc3QgRGVjaW1hbCBzdGVwQmFzZSA9IHBhcnNlVG9EZWNpbWFsRm9yTnVtYmVyVHlwZShl
bGVtZW50KCkuZmFzdEdldEF0dHJpYnV0ZShtaW5BdHRyKSwgbnVtYmVyRGVmYXVsdFN0ZXBCYXNl
KTsKICAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIHVzZSBudW1lcmljX2xpbWl0czxkb3VibGU+Ojpt
YXggZm9yIG51bWJlciBpbnB1dCB0eXBlLgotICAgIGNvbnN0IERlY2ltYWwgZmxvYXRNYXggPSBE
ZWNpbWFsOjpmcm9tRG91YmxlKG51bWVyaWNfbGltaXRzPGZsb2F0Pjo6bWF4KCkpOworICAgIGNv
bnN0IERlY2ltYWwgZmxvYXRNYXggPSBEZWNpbWFsOjpmcm9tRG91YmxlKHN0ZDo6bnVtZXJpY19s
aW1pdHM8ZmxvYXQ+OjptYXgoKSk7CiAgICAgY29uc3QgRGVjaW1hbCBtaW5pbXVtID0gcGFyc2VU
b051bWJlcihlbGVtZW50KCkuZmFzdEdldEF0dHJpYnV0ZShtaW5BdHRyKSwgLWZsb2F0TWF4KTsK
ICAgICBjb25zdCBEZWNpbWFsIG1heGltdW0gPSBwYXJzZVRvTnVtYmVyKGVsZW1lbnQoKS5mYXN0
R2V0QXR0cmlidXRlKG1heEF0dHIpLCBmbG9hdE1heCk7CiAgICAgY29uc3QgRGVjaW1hbCBzdGVw
ID0gU3RlcFJhbmdlOjpwYXJzZVN0ZXAoYW55U3RlcEhhbmRsaW5nLCBzdGVwRGVzY3JpcHRpb24s
IGVsZW1lbnQoKS5mYXN0R2V0QXR0cmlidXRlKHN0ZXBBdHRyKSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL1JhbmdlSW5wdXRUeXBlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
UmFuZ2VJbnB1dFR5cGUuY3BwCmluZGV4IDgwYjNiNjUxNDlkOWRkNThiNWE1ZTI1Y2QwMjk1MGU5
OTg0M2FmYTIuLjk5ZjBiODYxNjFmMzM1MmM0ZDFjNmRhNDUyMTNmZTllZjg3ZDcwNzAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvUmFuZ2VJbnB1dFR5cGUuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvUmFuZ2VJbnB1dFR5cGUuY3BwCkBAIC02NSw3ICs2NSw2IEBACiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKIHVzaW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7Ci11c2luZyBuYW1l
c3BhY2Ugc3RkOwogCiBzdGF0aWMgY29uc3QgaW50IHJhbmdlRGVmYXVsdE1pbmltdW0gPSAwOwog
c3RhdGljIGNvbnN0IGludCByYW5nZURlZmF1bHRNYXhpbXVtID0gMTAwOwpAQCAtMjA3LDcgKzIw
Niw3IEBAIHZvaWQgUmFuZ2VJbnB1dFR5cGU6OmhhbmRsZUtleWRvd25FdmVudChLZXlib2FyZEV2
ZW50KiBldmVudCkKICAgICAvLyBGSVhNRTogV2UgY2FuJ3QgdXNlIHN0ZXBVcCgpIGZvciB0aGUg
c3RlcCB2YWx1ZSAiYW55Ii4gU28sIHdlIGluY3JlYXNlCiAgICAgLy8gb3IgZGVjcmVhc2UgdGhl
IHZhbHVlIGJ5IDEvMTAwIG9mIHRoZSB2YWx1ZSByYW5nZS4gSXMgaXQgcmVhc29uYWJsZT8KICAg
ICBjb25zdCBEZWNpbWFsIHN0ZXAgPSBlcXVhbElnbm9yaW5nQ2FzZShlbGVtZW50KCkuZmFzdEdl
dEF0dHJpYnV0ZShzdGVwQXR0ciksICJhbnkiKSA/IChzdGVwUmFuZ2UubWF4aW11bSgpIC0gc3Rl
cFJhbmdlLm1pbmltdW0oKSkgLyAxMDAgOiBzdGVwUmFuZ2Uuc3RlcCgpOwotICAgIGNvbnN0IERl
Y2ltYWwgYmlnU3RlcCA9IG1heCgoc3RlcFJhbmdlLm1heGltdW0oKSAtIHN0ZXBSYW5nZS5taW5p
bXVtKCkpIC8gMTAsIHN0ZXApOworICAgIGNvbnN0IERlY2ltYWwgYmlnU3RlcCA9IHN0ZDo6bWF4
KChzdGVwUmFuZ2UubWF4aW11bSgpIC0gc3RlcFJhbmdlLm1pbmltdW0oKSkgLyAxMCwgc3RlcCk7
CiAKICAgICBib29sIGlzVmVydGljYWwgPSBmYWxzZTsKICAgICBpZiAoZWxlbWVudCgpLnJlbmRl
cmVyKCkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvU2VhcmNoSW5wdXRUeXBl
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvU2VhcmNoSW5wdXRUeXBlLmNwcAppbmRleCBmYzhk
ZDc2ZTFkMWU2YTBiMDFiZWVhNjhlNGViZmM0ZDcyODY5MGVlLi44Mjk2NjQ3ZGQ4NDI4MTJmNjcx
ZDZlYmY5YjY1Y2FlMzA2MjUxZGRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL1Nl
YXJjaElucHV0VHlwZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9TZWFyY2hJbnB1dFR5
cGUuY3BwCkBAIC0xNjIsNyArMTYyLDcgQEAgdm9pZCBTZWFyY2hJbnB1dFR5cGU6OnN0YXJ0U2Vh
cmNoRXZlbnRUaW1lcigpCiAKICAgICAvLyBBZnRlciB0eXBpbmcgdGhlIGZpcnN0IGtleSwgd2Ug
d2FpdCAwLjUgc2Vjb25kcy4KICAgICAvLyBBZnRlciB0aGUgc2Vjb25kIGtleSwgMC40IHNlY29u
ZHMsIHRoZW4gMC4zLCB0aGVuIDAuMiBmcm9tIHRoZW4gb24uCi0gICAgbV9zZWFyY2hFdmVudFRp
bWVyLnN0YXJ0T25lU2hvdChtYXgoMC4yLCAwLjYgLSAwLjEgKiBsZW5ndGgpKTsKKyAgICBtX3Nl
YXJjaEV2ZW50VGltZXIuc3RhcnRPbmVTaG90KHN0ZDo6bWF4KDAuMiwgMC42IC0gMC4xICogbGVu
Z3RoKSk7CiB9CiAKIHZvaWQgU2VhcmNoSW5wdXRUeXBlOjpzdG9wU2VhcmNoRXZlbnRUaW1lcigp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL1N0ZXBSYW5nZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL1N0ZXBSYW5nZS5jcHAKaW5kZXggNGQwMDQyZjI0MWZjOTVkNmFjYmQ3NDEy
NjhmNmQ1MzdjMmRkZGIwOS4uYmYyMzRlZDU0MmYyMGU0NDM1MzhlZGY5ZGRiMzgwMzBmMDI1ZWI4
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9TdGVwUmFuZ2UuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvU3RlcFJhbmdlLmNwcApAQCAtMjYsOCArMjYsNiBAQAogI2luY2x1
ZGUgPHd0Zi9NYXRoRXh0cmFzLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAK
LXVzaW5nIG5hbWVzcGFjZSBzdGQ7Ci0KIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogdXNpbmcgbmFt
ZXNwYWNlIEhUTUxOYW1lczsKQEAgLTgzLDcgKzgxLDcgQEAgRGVjaW1hbCBTdGVwUmFuZ2U6OmFs
aWduVmFsdWVGb3JTdGVwKGNvbnN0IERlY2ltYWwmIGN1cnJlbnRWYWx1ZSwgY29uc3QgRGVjaW1h
bCYKIAogRGVjaW1hbCBTdGVwUmFuZ2U6OmNsYW1wVmFsdWUoY29uc3QgRGVjaW1hbCYgdmFsdWUp
IGNvbnN0CiB7Ci0gICAgY29uc3QgRGVjaW1hbCBpblJhbmdlVmFsdWUgPSBtYXgobV9taW5pbXVt
LCBtaW4odmFsdWUsIG1fbWF4aW11bSkpOworICAgIGNvbnN0IERlY2ltYWwgaW5SYW5nZVZhbHVl
ID0gc3RkOjptYXgobV9taW5pbXVtLCBzdGQ6Om1pbih2YWx1ZSwgbV9tYXhpbXVtKSk7CiAgICAg
aWYgKCFtX2hhc1N0ZXApCiAgICAgICAgIHJldHVybiBpblJhbmdlVmFsdWU7CiAgICAgLy8gUm91
bmRzIGluUmFuZ2VWYWx1ZSB0byBtaW5pbXVtICsgTiAqIHN0ZXAuCkBAIC0xMjAsMTMgKzExOCwx
MyBAQCBEZWNpbWFsIFN0ZXBSYW5nZTo6cGFyc2VTdGVwKEFueVN0ZXBIYW5kbGluZyBhbnlTdGVw
SGFuZGxpbmcsIGNvbnN0IFN0ZXBEZXNjcmlwdAogICAgICAgICBicmVhazsKICAgICBjYXNlIFBh
cnNlZFN0ZXBWYWx1ZVNob3VsZEJlSW50ZWdlcjoKICAgICAgICAgLy8gRm9yIGRhdGUsIG1vbnRo
LCBhbmQgd2VlaywgdGhlIHBhcnNlZCB2YWx1ZSBzaG91bGQgYmUgYW4gaW50ZWdlciBmb3Igc29t
ZSB0eXBlcy4KLSAgICAgICAgc3RlcCA9IG1heChzdGVwLnJvdW5kKCksIERlY2ltYWwoMSkpOwor
ICAgICAgICBzdGVwID0gc3RkOjptYXgoc3RlcC5yb3VuZCgpLCBEZWNpbWFsKDEpKTsKICAgICAg
ICAgc3RlcCAqPSBzdGVwRGVzY3JpcHRpb24uc3RlcFNjYWxlRmFjdG9yOwogICAgICAgICBicmVh
azsKICAgICBjYXNlIFNjYWxlZFN0ZXBWYWx1ZVNob3VsZEJlSW50ZWdlcjoKICAgICAgICAgLy8g
Rm9yIGRhdGV0aW1lLCBkYXRldGltZS1sb2NhbCwgdGltZSwgdGhlIHJlc3VsdCBzaG91bGQgYmUg
YW4gaW50ZWdlci4KICAgICAgICAgc3RlcCAqPSBzdGVwRGVzY3JpcHRpb24uc3RlcFNjYWxlRmFj
dG9yOwotICAgICAgICBzdGVwID0gbWF4KHN0ZXAucm91bmQoKSwgRGVjaW1hbCgxKSk7CisgICAg
ICAgIHN0ZXAgPSBzdGQ6Om1heChzdGVwLnJvdW5kKCksIERlY2ltYWwoMSkpOwogICAgICAgICBi
cmVhazsKICAgICBkZWZhdWx0OgogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvVGltZVJhbmdlcy5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL1RpbWVSYW5nZXMuY3BwCmluZGV4IGNmOGUyMGZjMjNiMzA2MDJhMTY5YTU1ZjY5ZmNl
NWU5ZDUxZTJlN2EuLjEwOTNmYWU3NjYzNjgwMzA4MTIzYTlmYWY1OTEyNzg2ZWNhNzQ5MDggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvVGltZVJhbmdlcy5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9UaW1lUmFuZ2VzLmNwcApAQCAtMzEsOCArMzEsNyBAQAogI2luY2x1ZGUg
IkV4Y2VwdGlvbkNvZGVQbGFjZWhvbGRlci5oIgogI2luY2x1ZGUgPG1hdGguaD4KIAotdXNpbmcg
bmFtZXNwYWNlIFdlYkNvcmU7Ci11c2luZyBuYW1lc3BhY2Ugc3RkOworbmFtZXNwYWNlIFdlYkNv
cmUgewogCiBUaW1lUmFuZ2VzOjpUaW1lUmFuZ2VzKGRvdWJsZSBzdGFydCwgZG91YmxlIGVuZCkK
IHsKQEAgLTE5NCwzICsxOTMsNSBAQCBkb3VibGUgVGltZVJhbmdlczo6dG90YWxEdXJhdGlvbigp
IGNvbnN0CiAgICAgICAgIHRvdGFsICs9IGZhYnMoZW5kKG4sIElHTk9SRV9FWENFUFRJT04pIC0g
c3RhcnQobiwgSUdOT1JFX0VYQ0VQVElPTikpOwogICAgIHJldHVybiB0b3RhbDsKIH0KKworfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9WYWxpZGF0aW9uTWVzc2FnZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL1ZhbGlkYXRpb25NZXNzYWdlLmNwcAppbmRleCA3ZTljM2VhYjIz
NjY3ZGU0N2EwNGMyZTgzZjE2ODA0YzEyNmNhY2I1Li42NzE5Y2I1Yzg3NWUzMzMwN2M4ODRhMGYx
MzFjNWRjYjEyZGIzMjQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL1ZhbGlkYXRp
b25NZXNzYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL1ZhbGlkYXRpb25NZXNzYWdl
LmNwcApAQCAtMTQzLDcgKzE0Myw3IEBAIHZvaWQgVmFsaWRhdGlvbk1lc3NhZ2U6OnNldE1lc3Nh
Z2VET01BbmRTdGFydFRpbWVyKFRpbWVyPFZhbGlkYXRpb25NZXNzYWdlPiopCiAgICAgICAgIG1f
dGltZXIuY2xlYXIoKTsKICAgICBlbHNlIHsKICAgICAgICAgbV90aW1lciA9IGFkb3B0UHRyKG5l
dyBUaW1lcjxWYWxpZGF0aW9uTWVzc2FnZT4odGhpcywgJlZhbGlkYXRpb25NZXNzYWdlOjpkZWxl
dGVCdWJibGVUcmVlKSk7Ci0gICAgICAgIG1fdGltZXItPnN0YXJ0T25lU2hvdChtYXgoNS4wLCBz
dGF0aWNfY2FzdDxkb3VibGU+KG1fbWVzc2FnZS5sZW5ndGgoKSkgKiBtYWduaWZpY2F0aW9uIC8g
MTAwMCkpOworICAgICAgICBtX3RpbWVyLT5zdGFydE9uZVNob3Qoc3RkOjptYXgoNS4wLCBzdGF0
aWNfY2FzdDxkb3VibGU+KG1fbWVzc2FnZS5sZW5ndGgoKSkgKiBtYWduaWZpY2F0aW9uIC8gMTAw
MCkpOwogICAgIH0KIH0KIApAQCAtMTY3LDcgKzE2Nyw3IEBAIHN0YXRpYyB2b2lkIGFkanVzdEJ1
YmJsZVBvc2l0aW9uKGNvbnN0IExheW91dFJlY3QmIGhvc3RSZWN0LCBIVE1MRWxlbWVudCogYnVi
YmxlCiAgICAgY29uc3QgaW50IGJ1YmJsZUFycm93VG9wT2Zmc2V0ID0gMzI7CiAgICAgZG91Ymxl
IGJ1YmJsZVggPSBob3N0WDsKICAgICBpZiAoaG9zdFJlY3Qud2lkdGgoKSAvIDIgPCBidWJibGVB
cnJvd1RvcE9mZnNldCkKLSAgICAgICAgYnViYmxlWCA9IG1heChob3N0WCArIGhvc3RSZWN0Lndp
ZHRoKCkgLyAyIC0gYnViYmxlQXJyb3dUb3BPZmZzZXQsIDAuMCk7CisgICAgICAgIGJ1YmJsZVgg
PSBzdGQ6Om1heChob3N0WCArIGhvc3RSZWN0LndpZHRoKCkgLyAyIC0gYnViYmxlQXJyb3dUb3BP
ZmZzZXQsIDAuMCk7CiAgICAgYnViYmxlLT5zZXRJbmxpbmVTdHlsZVByb3BlcnR5KENTU1Byb3Bl
cnR5TGVmdCwgYnViYmxlWCwgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19QWCk7CiB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQy
RC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0
MkQuY3BwCmluZGV4IDcwYzgyOWU2ZTY2NjkwM2FiZjFkM2UwMmE5ODBlNDdiMjU0ZTkxZWUuLmU4
NGFhZTIyMDFhMDdhNTc5NjI0MTQ4MjIxNGI5YWI0NjljZGE0NjMgMTAwNzU1Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmNwcApA
QCAtNzQsOCArNzQsNiBAQAogI2luY2x1ZGUgPEFwcGxpY2F0aW9uU2VydmljZXMvQXBwbGljYXRp
b25TZXJ2aWNlcy5oPgogI2VuZGlmCiAKLXVzaW5nIG5hbWVzcGFjZSBzdGQ7Ci0KIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAogdXNpbmcgbmFtZXNwYWNlIEhUTUxOYW1lczsKQEAgLTEyMjksMTAgKzEy
MjcsMTAgQEAgc3RhdGljIEludFNpemUgc2l6ZShIVE1MVmlkZW9FbGVtZW50KiB2aWRlbykKIAog
c3RhdGljIGlubGluZSBGbG9hdFJlY3Qgbm9ybWFsaXplUmVjdChjb25zdCBGbG9hdFJlY3QmIHJl
Y3QpCiB7Ci0gICAgcmV0dXJuIEZsb2F0UmVjdChtaW4ocmVjdC54KCksIHJlY3QubWF4WCgpKSwK
LSAgICAgICAgbWluKHJlY3QueSgpLCByZWN0Lm1heFkoKSksCi0gICAgICAgIG1heChyZWN0Lndp
ZHRoKCksIC1yZWN0LndpZHRoKCkpLAotICAgICAgICBtYXgocmVjdC5oZWlnaHQoKSwgLXJlY3Qu
aGVpZ2h0KCkpKTsKKyAgICByZXR1cm4gRmxvYXRSZWN0KHN0ZDo6bWluKHJlY3QueCgpLCByZWN0
Lm1heFgoKSksCisgICAgICAgIHN0ZDo6bWluKHJlY3QueSgpLCByZWN0Lm1heFkoKSksCisgICAg
ICAgIHN0ZDo6bWF4KHJlY3Qud2lkdGgoKSwgLXJlY3Qud2lkdGgoKSksCisgICAgICAgIHN0ZDo6
bWF4KHJlY3QuaGVpZ2h0KCksIC1yZWN0LmhlaWdodCgpKSk7CiB9CiAKIHZvaWQgQ2FudmFzUmVu
ZGVyaW5nQ29udGV4dDJEOjpkcmF3SW1hZ2UoSFRNTEltYWdlRWxlbWVudCogaW1hZ2UsIGZsb2F0
IHgsIGZsb2F0IHksIEV4Y2VwdGlvbkNvZGUmIGVjKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dC5jcHAKaW5kZXggOTQwNzVkMTM5NjEy
MTgwNjAzMTAzYzNkODc2MDI2ZWMwYjhiOWZhOS4uZmY3MjQzOTAyNTZjNjQ1MThlNWFmZGFlNDQ1
MDdkYTVmYzZjMDU2ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2Vi
R0xSZW5kZXJpbmdDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9X
ZWJHTFJlbmRlcmluZ0NvbnRleHQuY3BwCkBAIC0xNzkzLDE0ICsxNzkzLDE0IEBAIGJvb2wgV2Vi
R0xSZW5kZXJpbmdDb250ZXh0Ojp2YWxpZGF0ZUluZGV4QXJyYXlDb25zZXJ2YXRpdmUoR0MzRGVu
dW0gdHlwZSwgdW5zaWduCiAgICAgICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6OlVOU0lHTkVE
X0JZVEU6IHsKICAgICAgICAgICAgIGNvbnN0IEdDM0R1Ynl0ZSogcCA9IHN0YXRpY19jYXN0PGNv
bnN0IEdDM0R1Ynl0ZSo+KGJ1ZmZlci0+ZGF0YSgpKTsKICAgICAgICAgICAgIGZvciAoR0MzRHNp
emVpcHRyIGkgPSAwOyBpIDwgbnVtRWxlbWVudHM7IGkrKykKLSAgICAgICAgICAgICAgICBtYXhJ
bmRleCA9IG1heChtYXhJbmRleCwgc3RhdGljX2Nhc3Q8aW50PihwW2ldKSk7CisgICAgICAgICAg
ICAgICAgbWF4SW5kZXggPSBzdGQ6Om1heChtYXhJbmRleCwgc3RhdGljX2Nhc3Q8aW50PihwW2ld
KSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBjYXNlIEdyYXBoaWNz
Q29udGV4dDNEOjpVTlNJR05FRF9TSE9SVDogewogICAgICAgICAgICAgbnVtRWxlbWVudHMgLz0g
c2l6ZW9mKEdDM0R1c2hvcnQpOwogICAgICAgICAgICAgY29uc3QgR0MzRHVzaG9ydCogcCA9IHN0
YXRpY19jYXN0PGNvbnN0IEdDM0R1c2hvcnQqPihidWZmZXItPmRhdGEoKSk7CiAgICAgICAgICAg
ICBmb3IgKEdDM0RzaXplaXB0ciBpID0gMDsgaSA8IG51bUVsZW1lbnRzOyBpKyspCi0gICAgICAg
ICAgICAgICAgbWF4SW5kZXggPSBtYXgobWF4SW5kZXgsIHN0YXRpY19jYXN0PGludD4ocFtpXSkp
OworICAgICAgICAgICAgICAgIG1heEluZGV4ID0gc3RkOjptYXgobWF4SW5kZXgsIHN0YXRpY19j
YXN0PGludD4ocFtpXSkpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAg
Y2FzZSBHcmFwaGljc0NvbnRleHQzRDo6VU5TSUdORURfSU5UOiB7CkBAIC0xODA5LDcgKzE4MDks
NyBAQCBib29sIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6dmFsaWRhdGVJbmRleEFycmF5Q29uc2Vy
dmF0aXZlKEdDM0RlbnVtIHR5cGUsIHVuc2lnbgogICAgICAgICAgICAgbnVtRWxlbWVudHMgLz0g
c2l6ZW9mKEdDM0R1aW50KTsKICAgICAgICAgICAgIGNvbnN0IEdDM0R1aW50KiBwID0gc3RhdGlj
X2Nhc3Q8Y29uc3QgR0MzRHVpbnQqPihidWZmZXItPmRhdGEoKSk7CiAgICAgICAgICAgICBmb3Ig
KEdDM0RzaXplaXB0ciBpID0gMDsgaSA8IG51bUVsZW1lbnRzOyBpKyspCi0gICAgICAgICAgICAg
ICAgbWF4SW5kZXggPSBtYXgobWF4SW5kZXgsIHN0YXRpY19jYXN0PGludD4ocFtpXSkpOworICAg
ICAgICAgICAgICAgIG1heEluZGV4ID0gc3RkOjptYXgobWF4SW5kZXgsIHN0YXRpY19jYXN0PGlu
dD4ocFtpXSkpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgZGVmYXVs
dDoKQEAgLTUzMjgsMTMgKzUzMjgsMTMgQEAgYm9vbCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OnZh
bGlkYXRlQ29tcHJlc3NlZFRleEZ1bmNEYXRhKGNvbnN0IGNoYXIqIGZ1bmN0aW9uTmEKICAgICBj
YXNlIEV4dGVuc2lvbnMzRDo6Q09NUFJFU1NFRF9SR0JfUFZSVENfNEJQUFYxX0lNRzoKICAgICBj
YXNlIEV4dGVuc2lvbnMzRDo6Q09NUFJFU1NFRF9SR0JBX1BWUlRDXzRCUFBWMV9JTUc6CiAgICAg
ICAgIHsKLSAgICAgICAgICAgIGJ5dGVzUmVxdWlyZWQgPSBtYXgod2lkdGgsIDgpICogbWF4KGhl
aWdodCwgOCkgLyAyOworICAgICAgICAgICAgYnl0ZXNSZXF1aXJlZCA9IHN0ZDo6bWF4KHdpZHRo
LCA4KSAqIHN0ZDo6bWF4KGhlaWdodCwgOCkgLyAyOwogICAgICAgICB9CiAgICAgICAgIGJyZWFr
OwogICAgIGNhc2UgRXh0ZW5zaW9uczNEOjpDT01QUkVTU0VEX1JHQl9QVlJUQ18yQlBQVjFfSU1H
OgogICAgIGNhc2UgRXh0ZW5zaW9uczNEOjpDT01QUkVTU0VEX1JHQkFfUFZSVENfMkJQUFYxX0lN
RzoKICAgICAgICAgewotICAgICAgICAgICAgYnl0ZXNSZXF1aXJlZCA9IG1heCh3aWR0aCwgOCkg
KiBtYXgoaGVpZ2h0LCA4KSAvIDQ7CisgICAgICAgICAgICBieXRlc1JlcXVpcmVkID0gc3RkOjpt
YXgod2lkdGgsIDgpICogc3RkOjptYXgoaGVpZ2h0LCA4KSAvIDQ7CiAgICAgICAgIH0KICAgICAg
ICAgYnJlYWs7CiAgICAgZGVmYXVsdDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
c2hhZG93L01lZGlhQ29udHJvbEVsZW1lbnRzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hh
ZG93L01lZGlhQ29udHJvbEVsZW1lbnRzLmNwcAppbmRleCA5ZjAyMWNiOTMwNzJjMmM2ZTlkMzYz
YjVmNTdkNTI4N2E4OTIzZDc5Li4yMDZjZTBlYzZlMTYyZWMyNTA1NzVhNzM1NTA4ODFiNTM0NDRk
NDY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xF
bGVtZW50cy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvTWVkaWFDb250cm9s
RWxlbWVudHMuY3BwCkBAIC02MzEsNyArNjMxLDcgQEAgUGFzc1JlZlB0cjxNZWRpYUNvbnRyb2xS
ZXdpbmRCdXR0b25FbGVtZW50PiBNZWRpYUNvbnRyb2xSZXdpbmRCdXR0b25FbGVtZW50OjpjcmUK
IHZvaWQgTWVkaWFDb250cm9sUmV3aW5kQnV0dG9uRWxlbWVudDo6ZGVmYXVsdEV2ZW50SGFuZGxl
cihFdmVudCogZXZlbnQpCiB7CiAgICAgaWYgKGV2ZW50LT50eXBlKCkgPT0gZXZlbnROYW1lcygp
LmNsaWNrRXZlbnQpIHsKLSAgICAgICAgbWVkaWFDb250cm9sbGVyKCktPnNldEN1cnJlbnRUaW1l
KG1heCgwLjAsIG1lZGlhQ29udHJvbGxlcigpLT5jdXJyZW50VGltZSgpIC0gMzApLCBJR05PUkVf
RVhDRVBUSU9OKTsKKyAgICAgICAgbWVkaWFDb250cm9sbGVyKCktPnNldEN1cnJlbnRUaW1lKHN0
ZDo6bWF4PGRvdWJsZT4oMCwgbWVkaWFDb250cm9sbGVyKCktPmN1cnJlbnRUaW1lKCkgLSAzMCks
IElHTk9SRV9FWENFUFRJT04pOwogICAgICAgICBldmVudC0+c2V0RGVmYXVsdEhhbmRsZWQoKTsK
ICAgICB9CiAgICAgSFRNTElucHV0RWxlbWVudDo6ZGVmYXVsdEV2ZW50SGFuZGxlcihldmVudCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xzQXBw
bGUuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvTWVkaWFDb250cm9sc0FwcGxlLmNw
cAppbmRleCAxZTQ4NzllNjIxNDcyZjQzOTFjMTU3ZDQ2YTE1ZTE4OTAxNjNiM2VmLi5iMDg3ZmJh
ODVmY2VjY2JjYTkyNGE3OWExYmMxNjM5NzNlZGNmNDhlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xzQXBwbGUuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvc2hhZG93L01lZGlhQ29udHJvbHNBcHBsZS5jcHAKQEAgLTQ1LDggKzQ1LDYgQEAK
ICNpbmNsdWRlICJUZXh0VHJhY2tDdWUuaCIKICNlbmRpZgogCi11c2luZyBuYW1lc3BhY2Ugc3Rk
OwotCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIE1lZGlhQ29udHJvbHNBcHBsZTo6TWVkaWFDb250
cm9sc0FwcGxlKERvY3VtZW50JiBkb2N1bWVudCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvc2hhZG93L1NsaWRlclRodW1iRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L3NoYWRvdy9TbGlkZXJUaHVtYkVsZW1lbnQuY3BwCmluZGV4IGJkY2Q5YThjZDMzOTFiODE0NGZi
ODVkZWE4YWQwM2I3ZDQ0ZTA0M2QuLjg5ZjAxMjM4ZDNkMmFkZmEyNmI5YzIyMjJmNDcyNmM2MWIx
Y2U1NTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L1NsaWRlclRodW1i
RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvU2xpZGVyVGh1bWJF
bGVtZW50LmNwcApAQCAtNDYsOCArNDYsNiBAQAogI2luY2x1ZGUgIlNoYWRvd1Jvb3QuaCIKICNp
bmNsdWRlICJTdGVwUmFuZ2UuaCIKIAotdXNpbmcgbmFtZXNwYWNlIHN0ZDsKLQogbmFtZXNwYWNl
IFdlYkNvcmUgewogCiB1c2luZyBuYW1lc3BhY2UgSFRNTE5hbWVzOwpAQCAtMjcyLDcgKzI3MCw3
IEBAIHZvaWQgU2xpZGVyVGh1bWJFbGVtZW50OjpzZXRQb3NpdGlvbkZyb21Qb2ludChjb25zdCBM
YXlvdXRQb2ludCYgYWJzb2x1dGVQb2ludCkKICAgICAgICAgcG9zaXRpb24gLT0gaXNMZWZ0VG9S
aWdodERpcmVjdGlvbiA/IHJlbmRlckJveCgpLT5tYXJnaW5MZWZ0KCkgOiByZW5kZXJCb3goKS0+
bWFyZ2luUmlnaHQoKTsKICAgICB9CiAKLSAgICBwb3NpdGlvbiA9IG1heDxMYXlvdXRVbml0Pigw
LCBtaW4ocG9zaXRpb24sIHRyYWNrTGVuZ3RoKSk7CisgICAgcG9zaXRpb24gPSBzdGQ6Om1heDxM
YXlvdXRVbml0PigwLCBzdGQ6Om1pbihwb3NpdGlvbiwgdHJhY2tMZW5ndGgpKTsKICAgICBjb25z
dCBEZWNpbWFsIHJhdGlvID0gRGVjaW1hbDo6ZnJvbURvdWJsZShzdGF0aWNfY2FzdDxkb3VibGU+
KHBvc2l0aW9uKSAvIHRyYWNrTGVuZ3RoKTsKICAgICBjb25zdCBEZWNpbWFsIGZyYWN0aW9uID0g
aXNWZXJ0aWNhbCB8fCAhaXNMZWZ0VG9SaWdodERpcmVjdGlvbiA/IERlY2ltYWwoMSkgLSByYXRp
byA6IHJhdGlvOwogICAgIFN0ZXBSYW5nZSBzdGVwUmFuZ2UoaW5wdXQtPmNyZWF0ZVN0ZXBSYW5n
ZShSZWplY3RBbnkpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Db250
ZW50U2VhcmNoVXRpbHMuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0NvbnRlbnRTZWFy
Y2hVdGlscy5jcHAKaW5kZXggNTQ1N2U1ZDlhYTE4NGNiZWVkNDdiY2RlMjUxMWI5ZDRmMDBmOTdi
Ni4uMDNhODA1ZmFjY2IxMzhhZDkzZWIxM2JiNjMwYjUyOWNlNWYyOGE0NCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0NvbnRlbnRTZWFyY2hVdGlscy5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0NvbnRlbnRTZWFyY2hVdGlscy5jcHAKQEAgLTM5LDggKzM5
LDYgQEAKICNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CiAjaW5jbHVkZSA8eWFyci9ZYXJy
Lmg+CiAKLXVzaW5nIG5hbWVzcGFjZSBzdGQ7Ci0KIG5hbWVzcGFjZSBXZWJDb3JlIHsKIG5hbWVz
cGFjZSBDb250ZW50U2VhcmNoVXRpbHMgewogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvRE9NRWRpdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9ET01FZGl0
b3IuY3BwCmluZGV4IDUxYWE4ZTQ0MGIxZWZhNWRjNjJhMDZjMGMwYTM1NzRjMjI0NDc5Y2QuLjQ1
YjI4OWZiN2MyYTczODlmMTFkMWZjOWU2NDdkY2E4OTZlMjk4ZWIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9ET01FZGl0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9ET01FZGl0b3IuY3BwCkBAIC00MSwxMyArNDEsOSBAQAogI2luY2x1ZGUgIkluc3Bl
Y3Rvckhpc3RvcnkuaCIKICNpbmNsdWRlICJOb2RlLmgiCiAjaW5jbHVkZSAiVGV4dC5oIgotCiAj
aW5jbHVkZSAibWFya3VwLmgiCi0KICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAKLXVzaW5nIG5h
bWVzcGFjZSBzdGQ7Ci0KIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgRE9NRWRpdG9yOjpS
ZW1vdmVDaGlsZEFjdGlvbiA6IHB1YmxpYyBJbnNwZWN0b3JIaXN0b3J5OjpBY3Rpb24gewpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0RPTVBhdGNoU3VwcG9ydC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvRE9NUGF0Y2hTdXBwb3J0LmNwcAppbmRleCA0NDc5ZDhh
YjE1YWZlYWFkYmE0NmRkYTc4MWY2MmMyYTYzOGE4MTc4Li5kMmM2NzRhNjVmZTYxYjkyOTBiY2U0
MzU4MzQ2MmZlNmU5Y2FmNjgzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
RE9NUGF0Y2hTdXBwb3J0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvRE9NUGF0
Y2hTdXBwb3J0LmNwcApAQCAtNTQsOCArNTQsNiBAQAogI2luY2x1ZGUgPHd0Zi90ZXh0L0Jhc2U2
NC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KIAotdXNpbmcgbmFtZXNwYWNlIHN0
ZDsKLQogbmFtZXNwYWNlIFdlYkNvcmUgewogCiB1c2luZyBIVE1MTmFtZXM6OmJvZHlUYWc7CkBA
IC0yNjcsOCArMjY1LDggQEAgRE9NUGF0Y2hTdXBwb3J0OjpkaWZmKGNvbnN0IFZlY3RvcjxPd25Q
dHI8RGlnZXN0Pj4mIG9sZExpc3QsIGNvbnN0IFZlY3RvcjxPd25QdHIKICAgICAgICAgaWYgKG9s
ZEl0ID09IG9sZFRhYmxlLmVuZCgpIHx8IG9sZEl0LT52YWx1ZS5zaXplKCkgIT0gMSkKICAgICAg
ICAgICAgIGNvbnRpbnVlOwogCi0gICAgICAgIG5ld01hcFtuZXdJdC0+dmFsdWVbMF1dID0gbWFr
ZV9wYWlyKG5ld0xpc3RbbmV3SXQtPnZhbHVlWzBdXS5nZXQoKSwgb2xkSXQtPnZhbHVlWzBdKTsK
LSAgICAgICAgb2xkTWFwW29sZEl0LT52YWx1ZVswXV0gPSBtYWtlX3BhaXIob2xkTGlzdFtvbGRJ
dC0+dmFsdWVbMF1dLmdldCgpLCBuZXdJdC0+dmFsdWVbMF0pOworICAgICAgICBuZXdNYXBbbmV3
SXQtPnZhbHVlWzBdXSA9IHN0ZDo6bWFrZV9wYWlyKG5ld0xpc3RbbmV3SXQtPnZhbHVlWzBdXS5n
ZXQoKSwgb2xkSXQtPnZhbHVlWzBdKTsKKyAgICAgICAgb2xkTWFwW29sZEl0LT52YWx1ZVswXV0g
PSBzdGQ6Om1ha2VfcGFpcihvbGRMaXN0W29sZEl0LT52YWx1ZVswXV0uZ2V0KCksIG5ld0l0LT52
YWx1ZVswXSk7CiAgICAgfQogCiAgICAgZm9yIChzaXplX3QgaSA9IDA7IG5ld0xpc3Quc2l6ZSgp
ID4gMCAmJiBpIDwgbmV3TGlzdC5zaXplKCkgLSAxOyArK2kpIHsKQEAgLTI3Nyw4ICsyNzUsOCBA
QCBET01QYXRjaFN1cHBvcnQ6OmRpZmYoY29uc3QgVmVjdG9yPE93blB0cjxEaWdlc3Q+PiYgb2xk
TGlzdCwgY29uc3QgVmVjdG9yPE93blB0cgogCiAgICAgICAgIHNpemVfdCBqID0gbmV3TWFwW2ld
LnNlY29uZCArIDE7CiAgICAgICAgIGlmIChqIDwgb2xkTWFwLnNpemUoKSAmJiAhb2xkTWFwW2pd
LmZpcnN0ICYmIG5ld0xpc3RbaSArIDFdLT5tX3NoYTEgPT0gb2xkTGlzdFtqXS0+bV9zaGExKSB7
Ci0gICAgICAgICAgICBuZXdNYXBbaSArIDFdID0gbWFrZV9wYWlyKG5ld0xpc3RbaSArIDFdLmdl
dCgpLCBqKTsKLSAgICAgICAgICAgIG9sZE1hcFtqXSA9IG1ha2VfcGFpcihvbGRMaXN0W2pdLmdl
dCgpLCBpICsgMSk7CisgICAgICAgICAgICBuZXdNYXBbaSArIDFdID0gc3RkOjptYWtlX3BhaXIo
bmV3TGlzdFtpICsgMV0uZ2V0KCksIGopOworICAgICAgICAgICAgb2xkTWFwW2pdID0gc3RkOjpt
YWtlX3BhaXIob2xkTGlzdFtqXS5nZXQoKSwgaSArIDEpOwogICAgICAgICB9CiAgICAgfQogCkBA
IC0yODgsOCArMjg2LDggQEAgRE9NUGF0Y2hTdXBwb3J0OjpkaWZmKGNvbnN0IFZlY3RvcjxPd25Q
dHI8RGlnZXN0Pj4mIG9sZExpc3QsIGNvbnN0IFZlY3RvcjxPd25QdHIKIAogICAgICAgICBzaXpl
X3QgaiA9IG5ld01hcFtpXS5zZWNvbmQgLSAxOwogICAgICAgICBpZiAoIW9sZE1hcFtqXS5maXJz
dCAmJiBuZXdMaXN0W2kgLSAxXS0+bV9zaGExID09IG9sZExpc3Rbal0tPm1fc2hhMSkgewotICAg
ICAgICAgICAgbmV3TWFwW2kgLSAxXSA9IG1ha2VfcGFpcihuZXdMaXN0W2kgLSAxXS5nZXQoKSwg
aik7Ci0gICAgICAgICAgICBvbGRNYXBbal0gPSBtYWtlX3BhaXIob2xkTGlzdFtqXS5nZXQoKSwg
aSAtIDEpOworICAgICAgICAgICAgbmV3TWFwW2kgLSAxXSA9IHN0ZDo6bWFrZV9wYWlyKG5ld0xp
c3RbaSAtIDFdLmdldCgpLCBqKTsKKyAgICAgICAgICAgIG9sZE1hcFtqXSA9IHN0ZDo6bWFrZV9w
YWlyKG9sZExpc3Rbal0uZ2V0KCksIGkgLSAxKTsKICAgICAgICAgfQogICAgIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0SG9zdC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRIb3N0LmNwcAppbmRleCAxZTQy
ZGMzZmMzOGY2YzdhNjg4Y2Q3MzE1M2VjMDE5MzJiY2U0MjdkLi4yNTAyNjk0MjljNTJiYzk0Nzlm
YTNhZWIyZGYxMWM4Njk0NzUxN2IwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5qZWN0ZWRTY3JpcHRIb3N0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5qZWN0ZWRTY3JpcHRIb3N0LmNwcApAQCAtNjAsOCArNjAsNiBAQAogI2luY2x1ZGUgPHd0Zi9S
ZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CiAKLXVzaW5nIG5hbWVzcGFj
ZSBzdGQ7Ci0KIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogUGFzc1JlZlB0cjxJbmplY3RlZFNjcmlw
dEhvc3Q+IEluamVjdGVkU2NyaXB0SG9zdDo6Y3JlYXRlKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9Qcm9ncmVzc1RyYWNrZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L1Byb2dyZXNzVHJhY2tlci5jcHAKaW5kZXggOGQxY2UxYTE1ODhmYjdhYzQ4ZDVlYTMyZDlkMGVk
NWI0ZmEzMGQ3Mi4uNmM5YjM1YzA5YjVjNzM5MzhhOGZkZDk4MThjOWEwMTA5NTFmNDkyNiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Byb2dyZXNzVHJhY2tlci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL1Byb2dyZXNzVHJhY2tlci5jcHAKQEAgLTM3LDggKzM3LDYg
QEAKICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAjaW5jbHVkZSA8d3RmL0N1cnJlbnRU
aW1lLmg+CiAKLXVzaW5nIHN0ZDo6bWluOwotCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIC8vIEFs
d2F5cyBzdGFydCBwcm9ncmVzcyBhdCBpbml0aWFsUHJvZ3Jlc3NWYWx1ZS4gVGhpcyBoZWxwcyBw
cm92aWRlIGZlZWRiYWNrIGFzIApAQCAtMjMxLDcgKzIyOSw3IEBAIHZvaWQgUHJvZ3Jlc3NUcmFj
a2VyOjppbmNyZW1lbnRQcm9ncmVzcyh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IGNo
YXIqLCBpCiAgICAgZG91YmxlIG1heFByb2dyZXNzVmFsdWUgPSB1c2VDbGFtcGVkTWF4UHJvZ3Jl
c3MgPyAwLjUgOiBmaW5hbFByb2dyZXNzVmFsdWU7CiAgICAgaW5jcmVtZW50ID0gKG1heFByb2dy
ZXNzVmFsdWUgLSBtX3Byb2dyZXNzVmFsdWUpICogcGVyY2VudE9mUmVtYWluaW5nQnl0ZXM7CiAg
ICAgbV9wcm9ncmVzc1ZhbHVlICs9IGluY3JlbWVudDsKLSAgICBtX3Byb2dyZXNzVmFsdWUgPSBt
aW4obV9wcm9ncmVzc1ZhbHVlLCBtYXhQcm9ncmVzc1ZhbHVlKTsKKyAgICBtX3Byb2dyZXNzVmFs
dWUgPSBzdGQ6Om1pbihtX3Byb2dyZXNzVmFsdWUsIG1heFByb2dyZXNzVmFsdWUpOwogICAgIEFT
U0VSVChtX3Byb2dyZXNzVmFsdWUgPj0gaW5pdGlhbFByb2dyZXNzVmFsdWUpOwogICAgIAogICAg
IG1fdG90YWxCeXRlc1JlY2VpdmVkICs9IGJ5dGVzUmVjZWl2ZWQ7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmNwcAppbmRleCAzMTljYjdlNDUyOThiNWIyZTUzYWVl
ZjAyODA5YTU4ZWRiODJhMWVjLi4xYjEzY2YzOWU1NmFlYTJmMWIxMmJhNmY4MmE0YTgwOGQ3Zjg1
ZmI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2Uu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5jcHAKQEAg
LTU2LDggKzU2LDYgQEAKICNpbmNsdWRlICJEaXNrSW1hZ2VDYWNoZUlPUy5oIgogI2VuZGlmCiAK
LXVzaW5nIHN0ZDo6bWF4OwotCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIENhY2hlZEltYWdlOjpD
YWNoZWRJbWFnZShjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlc291cmNlUmVxdWVzdCkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvRE9NV2luZG93LmNwcAppbmRleCA4YzdkMGRhOTRmOTcxNzZiNzFhNzllZDVjZDk3OGUw
NzVmZWQzZDNkLi4wNjRkMmE0ZWY2OWVhZWI0OGEzMWE3MzdlYzMyZmMxODViNDRkNGJkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9ET01XaW5kb3cuY3BwCkBAIC0xMTcsOSArMTE3LDYgQEAKICNpbmNsdWRlICJS
ZXF1ZXN0QW5pbWF0aW9uRnJhbWVDYWxsYmFjay5oIgogI2VuZGlmCiAKLXVzaW5nIHN0ZDo6bWlu
OwotdXNpbmcgc3RkOjptYXg7Ci0KIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgUG9zdE1l
c3NhZ2VUaW1lciA6IHB1YmxpYyBUaW1lckJhc2UgewpAQCAtMzI0LDEyICszMjEsMTIgQEAgRmxv
YXRSZWN0IERPTVdpbmRvdzo6YWRqdXN0V2luZG93UmVjdChQYWdlKiBwYWdlLCBjb25zdCBGbG9h
dFJlY3QmIHBlbmRpbmdDaGFuZ2UKICAgICAgICAgd2luZG93LnNldEhlaWdodChwZW5kaW5nQ2hh
bmdlcy5oZWlnaHQoKSk7CiAKICAgICBGbG9hdFNpemUgbWluaW11bVNpemUgPSBwYWdlLT5jaHJv
bWUoKS5jbGllbnQoKS5taW5pbXVtV2luZG93U2l6ZSgpOwotICAgIHdpbmRvdy5zZXRXaWR0aCht
aW4obWF4KG1pbmltdW1TaXplLndpZHRoKCksIHdpbmRvdy53aWR0aCgpKSwgc2NyZWVuLndpZHRo
KCkpKTsKLSAgICB3aW5kb3cuc2V0SGVpZ2h0KG1pbihtYXgobWluaW11bVNpemUuaGVpZ2h0KCks
IHdpbmRvdy5oZWlnaHQoKSksIHNjcmVlbi5oZWlnaHQoKSkpOworICAgIHdpbmRvdy5zZXRXaWR0
aChzdGQ6Om1pbihzdGQ6Om1heChtaW5pbXVtU2l6ZS53aWR0aCgpLCB3aW5kb3cud2lkdGgoKSks
IHNjcmVlbi53aWR0aCgpKSk7CisgICAgd2luZG93LnNldEhlaWdodChzdGQ6Om1pbihzdGQ6Om1h
eChtaW5pbXVtU2l6ZS5oZWlnaHQoKSwgd2luZG93LmhlaWdodCgpKSwgc2NyZWVuLmhlaWdodCgp
KSk7CiAKICAgICAvLyBDb25zdHJhaW4gdGhlIHdpbmRvdyBwb3NpdGlvbiB3aXRoaW4gdGhlIHZh
bGlkIHNjcmVlbiBhcmVhLgotICAgIHdpbmRvdy5zZXRYKG1heChzY3JlZW4ueCgpLCBtaW4od2lu
ZG93LngoKSwgc2NyZWVuLm1heFgoKSAtIHdpbmRvdy53aWR0aCgpKSkpOwotICAgIHdpbmRvdy5z
ZXRZKG1heChzY3JlZW4ueSgpLCBtaW4od2luZG93LnkoKSwgc2NyZWVuLm1heFkoKSAtIHdpbmRv
dy5oZWlnaHQoKSkpKTsKKyAgICB3aW5kb3cuc2V0WChzdGQ6Om1heChzY3JlZW4ueCgpLCBzdGQ6
Om1pbih3aW5kb3cueCgpLCBzY3JlZW4ubWF4WCgpIC0gd2luZG93LndpZHRoKCkpKSk7CisgICAg
d2luZG93LnNldFkoc3RkOjptYXgoc2NyZWVuLnkoKSwgc3RkOjptaW4od2luZG93LnkoKSwgc2Ny
ZWVuLm1heFkoKSAtIHdpbmRvdy5oZWlnaHQoKSkpKTsKIAogICAgIHJldHVybiB3aW5kb3c7CiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAKaW5kZXggYWE5YzhmMzk1NWJmNTZjZWQ5
NmE5NjQ1NTdlODk0YjYxNGM2MjVhYi4uMWJjNzMyYjVhYWYxN2UyNjczZDliOTVhZDU0ZDIwNWQz
OWY0NzRkZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcApAQCAtMTgyLDcgKzE4
Miw3IEBAIHB1YmxpYzoKIAogICAgIH5NYXhpbXVtRHVyYXRpb25UcmFja2VyKCkKICAgICB7Ci0g
ICAgICAgICptX21heER1cmF0aW9uID0gbWF4KCptX21heER1cmF0aW9uLCBtb25vdG9uaWNhbGx5
SW5jcmVhc2luZ1RpbWUoKSAtIG1fc3RhcnQpOworICAgICAgICAqbV9tYXhEdXJhdGlvbiA9IHN0
ZDo6bWF4KCptX21heER1cmF0aW9uLCBtb25vdG9uaWNhbGx5SW5jcmVhc2luZ1RpbWUoKSAtIG1f
c3RhcnQpOwogICAgIH0KIAogcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvRnJhbWVUcmVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVUcmVlLmNwcAppbmRl
eCAwMjVkMzJlODUzNTA3ODAzNjY5ZjJjNzQ4ZjAwNzZmODg5N2VmYzIyLi5jZWUxMjZkYmFhYjYy
YzVmMTRlZmE5N2FkODhhNGI4OWJlOGMxMjA5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
YWdlL0ZyYW1lVHJlZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVRyZWUuY3Bw
CkBAIC0zMyw4ICszMyw2IEBACiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgogI2luY2x1
ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4KIAotdXNpbmcgc3RkOjpzd2FwOwotCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKIEZyYW1lVHJlZTo6fkZyYW1lVHJlZSgpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Zy
YW1lVmlldy5jcHAKaW5kZXggNmU3ODNhYzYwY2Q5YTFhZGI2MGQzNWJhODkzOTJiZTcxMmFmZmY5
My4uODFiODQxMTE0MjY5YjJmZjFhZjAyYzRmNmM4N2ZhZWQ0ZTIzMjdhMSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvRnJhbWVWaWV3LmNwcApAQCAtMjI4OCw3ICsyMjg4LDcgQEAgZG91YmxlIEZyYW1lVmlldzo6
YWRqdXN0ZWREZWZlcnJlZFJlcGFpbnREZWxheSgpIGNvbnN0CiAgICAgaWYgKCFtX2RlZmVycmVk
UmVwYWludERlbGF5KQogICAgICAgICByZXR1cm4gMDsKICAgICBkb3VibGUgdGltZVNpbmNlTGFz
dFBhaW50ID0gbW9ub3RvbmljYWxseUluY3JlYXNpbmdUaW1lKCkgLSBtX2xhc3RQYWludFRpbWU7
Ci0gICAgcmV0dXJuIG1heCgwLiwgbV9kZWZlcnJlZFJlcGFpbnREZWxheSAtIHRpbWVTaW5jZUxh
c3RQYWludCk7CisgICAgcmV0dXJuIHN0ZDo6bWF4PGRvdWJsZT4oMCwgbV9kZWZlcnJlZFJlcGFp
bnREZWxheSAtIHRpbWVTaW5jZUxhc3RQYWludCk7CiB9CiAgICAgCiB2b2lkIEZyYW1lVmlldzo6
ZGVmZXJyZWRSZXBhaW50VGltZXJGaXJlZChUaW1lcjxGcmFtZVZpZXc+KikKQEAgLTI5MDQsNyAr
MjkwNCw3IEBAIHZvaWQgRnJhbWVWaWV3OjphdXRvU2l6ZUlmRW5hYmxlZCgpCiAgICAgbV9hdXRv
U2l6ZUNvbnRlbnRTaXplID0gY29udGVudHNTaXplKCk7CiAKICAgICBpZiAobV9hdXRvU2l6ZUZp
eGVkTWluaW11bUhlaWdodCkgewotICAgICAgICByZXNpemUobV9hdXRvU2l6ZUNvbnRlbnRTaXpl
LndpZHRoKCksIG1heChtX2F1dG9TaXplRml4ZWRNaW5pbXVtSGVpZ2h0LCBtX2F1dG9TaXplQ29u
dGVudFNpemUuaGVpZ2h0KCkpKTsKKyAgICAgICAgcmVzaXplKG1fYXV0b1NpemVDb250ZW50U2l6
ZS53aWR0aCgpLCBzdGQ6Om1heChtX2F1dG9TaXplRml4ZWRNaW5pbXVtSGVpZ2h0LCBtX2F1dG9T
aXplQ29udGVudFNpemUuaGVpZ2h0KCkpKTsKICAgICAgICAgZG9jdW1lbnQtPnVwZGF0ZUxheW91
dElnbm9yZVBlbmRpbmdTdHlsZXNoZWV0cygpOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGFnZS9QcmludENvbnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9Qcmlu
dENvbnRleHQuY3BwCmluZGV4IGViYzgxODBjZGQ0MmY1NjkyZTI0M2U1OTFmZjIxOGU2ZGVmNzJk
MjUuLjE0Yzc4YTA4OWNmNjQwZTcxMDkwZWVlYzJlOTA2OTM3ZDgwN2M0YTggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvUHJpbnRDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL1ByaW50Q29udGV4dC5jcHAKQEAgLTE4OCw3ICsxODgsNyBAQCBmbG9hdCBQcmludENv
bnRleHQ6OmNvbXB1dGVBdXRvbWF0aWNTY2FsZUZhY3Rvcihjb25zdCBGbG9hdFNpemUmIGF2YWls
YWJsZVBhcGVyUwogCiAgICAgZmxvYXQgbWF4U2hyaW5rVG9GaXRTY2FsZUZhY3RvciA9IDEgLyBw
cmludGluZ01heGltdW1TaHJpbmtGYWN0b3I7CiAgICAgZmxvYXQgc2hyaW5rVG9GaXRTY2FsZUZh
Y3RvciA9ICh1c2VWaWV3V2lkdGggPyBhdmFpbGFibGVQYXBlclNpemUud2lkdGgoKSA6IGF2YWls
YWJsZVBhcGVyU2l6ZS5oZWlnaHQoKSkgLyB2aWV3TG9naWNhbFdpZHRoOwotICAgIHJldHVybiBt
YXgobWF4U2hyaW5rVG9GaXRTY2FsZUZhY3Rvciwgc2hyaW5rVG9GaXRTY2FsZUZhY3Rvcik7Cisg
ICAgcmV0dXJuIHN0ZDo6bWF4KG1heFNocmlua1RvRml0U2NhbGVGYWN0b3IsIHNocmlua1RvRml0
U2NhbGVGYWN0b3IpOwogfQogCiB2b2lkIFByaW50Q29udGV4dDo6c3Bvb2xQYWdlKEdyYXBoaWNz
Q29udGV4dCYgY3R4LCBpbnQgcGFnZU51bWJlciwgZmxvYXQgd2lkdGgpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL1NwYXRpYWxOYXZpZ2F0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvU3BhdGlhbE5hdmlnYXRpb24uY3BwCmluZGV4IDFhMjY4ZjRmNTZlZjQwN2IyZDQ4ZTFm
MTZiM2MzZTE2NDE4NWNmMzIuLjkzZjVmZmI3OTM4ODU2MDZkNWM1YzljNTM2ZmE1NjAwNzg4OGM4
ODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU3BhdGlhbE5hdmlnYXRpb24uY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU3BhdGlhbE5hdmlnYXRpb24uY3BwCkBAIC01NzQs
NyArNTc0LDcgQEAgdm9pZCBlbnRyeUFuZEV4aXRQb2ludHNGb3JEaXJlY3Rpb24oRm9jdXNEaXJl
Y3Rpb24gZGlyZWN0aW9uLCBjb25zdCBMYXlvdXRSZWN0JgogICAgICAgICAgICAgZXhpdFBvaW50
LnNldFkoc3RhcnRpbmdSZWN0Lm1heFkoKSk7CiAgICAgICAgICAgICBlbnRyeVBvaW50LnNldFko
cG90ZW50aWFsUmVjdC55KCkpOwogICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgZXhpdFBv
aW50LnNldFkobWF4KHN0YXJ0aW5nUmVjdC55KCksIHBvdGVudGlhbFJlY3QueSgpKSk7CisgICAg
ICAgICAgICBleGl0UG9pbnQuc2V0WShzdGQ6Om1heChzdGFydGluZ1JlY3QueSgpLCBwb3RlbnRp
YWxSZWN0LnkoKSkpOwogICAgICAgICAgICAgZW50cnlQb2ludC5zZXRZKGV4aXRQb2ludC55KCkp
OwogICAgICAgICB9CiAgICAgICAgIGJyZWFrOwpAQCAtNTg3LDcgKzU4Nyw3IEBAIHZvaWQgZW50
cnlBbmRFeGl0UG9pbnRzRm9yRGlyZWN0aW9uKEZvY3VzRGlyZWN0aW9uIGRpcmVjdGlvbiwgY29u
c3QgTGF5b3V0UmVjdCYKICAgICAgICAgICAgIGV4aXRQb2ludC5zZXRYKHN0YXJ0aW5nUmVjdC5t
YXhYKCkpOwogICAgICAgICAgICAgZW50cnlQb2ludC5zZXRYKHBvdGVudGlhbFJlY3QueCgpKTsK
ICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIGV4aXRQb2ludC5zZXRYKG1heChzdGFydGlu
Z1JlY3QueCgpLCBwb3RlbnRpYWxSZWN0LngoKSkpOworICAgICAgICAgICAgZXhpdFBvaW50LnNl
dFgoc3RkOjptYXgoc3RhcnRpbmdSZWN0LngoKSwgcG90ZW50aWFsUmVjdC54KCkpKTsKICAgICAg
ICAgICAgIGVudHJ5UG9pbnQuc2V0WChleGl0UG9pbnQueCgpKTsKICAgICAgICAgfQogICAgICAg
ICBicmVhazsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvYW5pbWF0aW9uL0NTU1By
b3BlcnR5QW5pbWF0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvYW5pbWF0aW9uL0NTU1By
b3BlcnR5QW5pbWF0aW9uLmNwcAppbmRleCA3YWQwNWQ1OGFlYTVhNjFkNGQzZDExMzA3ZWYyOTEz
MzcwNjkxZGZmLi5mOWExYWE0MDAzNzc3NGU5OGYzNWQzNGU5ZDJjNzhmZTA0NTM5ZDAwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2FuaW1hdGlvbi9DU1NQcm9wZXJ0eUFuaW1hdGlv
bi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9hbmltYXRpb24vQ1NTUHJvcGVydHlBbmlt
YXRpb24uY3BwCkBAIC0xNzYsNyArMTc2LDcgQEAgc3RhdGljIGlubGluZSBGaWx0ZXJPcGVyYXRp
b25zIGJsZW5kRmlsdGVyT3BlcmF0aW9ucyhjb25zdCBBbmltYXRpb25CYXNlKiBhbmltLAogICAg
IEZpbHRlck9wZXJhdGlvbnMgcmVzdWx0OwogICAgIHNpemVfdCBmcm9tU2l6ZSA9IGZyb20ub3Bl
cmF0aW9ucygpLnNpemUoKTsKICAgICBzaXplX3QgdG9TaXplID0gdG8ub3BlcmF0aW9ucygpLnNp
emUoKTsKLSAgICBzaXplX3Qgc2l6ZSA9IG1heChmcm9tU2l6ZSwgdG9TaXplKTsKKyAgICBzaXpl
X3Qgc2l6ZSA9IHN0ZDo6bWF4KGZyb21TaXplLCB0b1NpemUpOwogICAgIGZvciAoc2l6ZV90IGkg
PSAwOyBpIDwgc2l6ZTsgaSsrKSB7CiAgICAgICAgIFJlZlB0cjxGaWx0ZXJPcGVyYXRpb24+IGZy
b21PcCA9IChpIDwgZnJvbVNpemUpID8gZnJvbS5vcGVyYXRpb25zKClbaV0uZ2V0KCkgOiAwOwog
ICAgICAgICBSZWZQdHI8RmlsdGVyT3BlcmF0aW9uPiB0b09wID0gKGkgPCB0b1NpemUpID8gdG8u
b3BlcmF0aW9ucygpW2ldLmdldCgpIDogMDsKQEAgLTY5OSw3ICs2OTksNyBAQCBwcml2YXRlOgog
CiAgICAgICAgIE93blB0cjxTaGFkb3dEYXRhPiBuZXdTaGFkb3dEYXRhOwogCi0gICAgICAgIGlu
dCBtYXhMZW5ndGggPSBtYXgoZnJvbUxlbmd0aCwgdG9MZW5ndGgpOworICAgICAgICBpbnQgbWF4
TGVuZ3RoID0gc3RkOjptYXgoZnJvbUxlbmd0aCwgdG9MZW5ndGgpOwogICAgICAgICBmb3IgKGlu
dCBpID0gMDsgaSA8IG1heExlbmd0aDsgKytpKSB7CiAgICAgICAgICAgICBjb25zdCBTaGFkb3dE
YXRhKiBmcm9tU2hhZG93ID0gaSA8IGZyb21MZW5ndGggPyBmcm9tU2hhZG93c1tpXSA6IDA7CiAg
ICAgICAgICAgICBjb25zdCBTaGFkb3dEYXRhKiB0b1NoYWRvdyA9IGkgPCB0b0xlbmd0aCA/IHRv
U2hhZG93c1tpXSA6IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lZmwv
UmVuZGVyVGhlbWVFZmwuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZWZsL1JlbmRlclRo
ZW1lRWZsLmNwcAppbmRleCAwMDllMTMzMjZlZDU5MDIzMDUzMjQ1ZmQxYjFkM2NiNWYxY2RjYjQ3
Li4xYTc3MDkwODM1NjViMDJiZjUzMDBiMDU2MmU3NmFiODAyN2Q4NTczIDEwMDc1NQotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lZmwvUmVuZGVyVGhlbWVFZmwuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2VmbC9SZW5kZXJUaGVtZUVmbC5jcHAKQEAgLTg4MSw3ICs4ODEs
NyBAQCB2b2lkIFJlbmRlclRoZW1lRWZsOjphZGp1c3RNZW51TGlzdEJ1dHRvblN0eWxlKFN0eWxl
UmVzb2x2ZXIqIHN0eWxlUmVzb2x2ZXIsIFJlbgogCiAgICAgLy8gQ2FsY3VsYXRlIG1pbi1oZWln
aHQgb2YgdGhlIDxzZWxlY3Q+IGVsZW1lbnQuCiAgICAgaW50IG1pbkhlaWdodCA9IHN0eWxlLT5m
b250TWV0cmljcygpLmhlaWdodCgpOwotICAgIG1pbkhlaWdodCA9IG1heChtaW5IZWlnaHQsIGRy
b3BEb3duQm94TWluSGVpZ2h0KTsKKyAgICBtaW5IZWlnaHQgPSBzdGQ6Om1heChtaW5IZWlnaHQs
IGRyb3BEb3duQm94TWluSGVpZ2h0KTsKICAgICBzdHlsZS0+c2V0TWluSGVpZ2h0KExlbmd0aCht
aW5IZWlnaHQsIEZpeGVkKSk7CiAKICAgICBhZGp1c3RNZW51TGlzdFN0eWxlKHN0eWxlUmVzb2x2
ZXIsIHN0eWxlLCBlbGVtZW50KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0Zsb2F0UmVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9GbG9hdFJlY3QuY3BwCmluZGV4IGFkNGMyZWJiZWI3MmU2NjVkMGE3ZDZiM2EyNzcxY2ZiMjk4
ZTIzMDkuLjJmYWU0ZTdiNDMyNWRlZTE0NTMzMTJkZWFkODVlYzQ4M2RlMTc3MjUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Zsb2F0UmVjdC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRmxvYXRSZWN0LmNwcApAQCAtMzQsMTIg
KzM0LDExIEBACiAjaW5jbHVkZSA8d3RmL01hdGhFeHRyYXMuaD4KICNpbmNsdWRlIDx3dGYvUHJp
bnRTdHJlYW0uaD4KIAotdXNpbmcgc3RkOjptYXg7Ci11c2luZyBzdGQ6Om1pbjsKLQogbmFtZXNw
YWNlIFdlYkNvcmUgewogCi1GbG9hdFJlY3Q6OkZsb2F0UmVjdChjb25zdCBJbnRSZWN0JiByKSA6
IG1fbG9jYXRpb24oci5sb2NhdGlvbigpKSwgbV9zaXplKHIuc2l6ZSgpKQorRmxvYXRSZWN0OjpG
bG9hdFJlY3QoY29uc3QgSW50UmVjdCYgcikKKyAgICA6IG1fbG9jYXRpb24oci5sb2NhdGlvbigp
KQorICAgICwgbV9zaXplKHIuc2l6ZSgpKQogewogfQogCkBAIC03OCwxMCArNzcsMTAgQEAgYm9v
bCBGbG9hdFJlY3Q6OmNvbnRhaW5zKGNvbnN0IEZsb2F0UG9pbnQmIHBvaW50LCBDb250YWluc01v
ZGUgY29udGFpbnNNb2RlKSBjb24KIAogdm9pZCBGbG9hdFJlY3Q6OmludGVyc2VjdChjb25zdCBG
bG9hdFJlY3QmIG90aGVyKQogewotICAgIGZsb2F0IGwgPSBtYXgoeCgpLCBvdGhlci54KCkpOwot
ICAgIGZsb2F0IHQgPSBtYXgoeSgpLCBvdGhlci55KCkpOwotICAgIGZsb2F0IHIgPSBtaW4obWF4
WCgpLCBvdGhlci5tYXhYKCkpOwotICAgIGZsb2F0IGIgPSBtaW4obWF4WSgpLCBvdGhlci5tYXhZ
KCkpOworICAgIGZsb2F0IGwgPSBzdGQ6Om1heCh4KCksIG90aGVyLngoKSk7CisgICAgZmxvYXQg
dCA9IHN0ZDo6bWF4KHkoKSwgb3RoZXIueSgpKTsKKyAgICBmbG9hdCByID0gc3RkOjptaW4obWF4
WCgpLCBvdGhlci5tYXhYKCkpOworICAgIGZsb2F0IGIgPSBzdGQ6Om1pbihtYXhZKCksIG90aGVy
Lm1heFkoKSk7CiAKICAgICAvLyBSZXR1cm4gYSBjbGVhbiBlbXB0eSByZWN0YW5nbGUgZm9yIG5v
bi1pbnRlcnNlY3RpbmcgY2FzZXMuCiAgICAgaWYgKGwgPj0gciB8fCB0ID49IGIpIHsKQEAgLTEw
OSwxMCArMTA4LDEwIEBAIHZvaWQgRmxvYXRSZWN0Ojp1bml0ZShjb25zdCBGbG9hdFJlY3QmIG90
aGVyKQogCiB2b2lkIEZsb2F0UmVjdDo6dW5pdGVFdmVuSWZFbXB0eShjb25zdCBGbG9hdFJlY3Qm
IG90aGVyKQogewotICAgIGZsb2F0IG1pblggPSBtaW4oeCgpLCBvdGhlci54KCkpOwotICAgIGZs
b2F0IG1pblkgPSBtaW4oeSgpLCBvdGhlci55KCkpOwotICAgIGZsb2F0IG1heFggPSBtYXgodGhp
cy0+bWF4WCgpLCBvdGhlci5tYXhYKCkpOwotICAgIGZsb2F0IG1heFkgPSBtYXgodGhpcy0+bWF4
WSgpLCBvdGhlci5tYXhZKCkpOworICAgIGZsb2F0IG1pblggPSBzdGQ6Om1pbih4KCksIG90aGVy
LngoKSk7CisgICAgZmxvYXQgbWluWSA9IHN0ZDo6bWluKHkoKSwgb3RoZXIueSgpKTsKKyAgICBm
bG9hdCBtYXhYID0gc3RkOjptYXgodGhpcy0+bWF4WCgpLCBvdGhlci5tYXhYKCkpOworICAgIGZs
b2F0IG1heFkgPSBzdGQ6Om1heCh0aGlzLT5tYXhZKCksIG90aGVyLm1heFkoKSk7CiAKICAgICBz
ZXRMb2NhdGlvbkFuZFNpemVGcm9tRWRnZXMobWluWCwgbWluWSwgbWF4WCwgbWF4WSk7CiB9CkBA
IC0xMzIsMTAgKzEzMSwxMCBAQCB2b2lkIEZsb2F0UmVjdDo6dW5pdGVJZk5vblplcm8oY29uc3Qg
RmxvYXRSZWN0JiBvdGhlcikKIAogdm9pZCBGbG9hdFJlY3Q6OmV4dGVuZChjb25zdCBGbG9hdFBv
aW50JiBwKQogewotICAgIGZsb2F0IG1pblggPSBtaW4oeCgpLCBwLngoKSk7Ci0gICAgZmxvYXQg
bWluWSA9IG1pbih5KCksIHAueSgpKTsKLSAgICBmbG9hdCBtYXhYID0gbWF4KHRoaXMtPm1heFgo
KSwgcC54KCkpOwotICAgIGZsb2F0IG1heFkgPSBtYXgodGhpcy0+bWF4WSgpLCBwLnkoKSk7Cisg
ICAgZmxvYXQgbWluWCA9IHN0ZDo6bWluKHgoKSwgcC54KCkpOworICAgIGZsb2F0IG1pblkgPSBz
dGQ6Om1pbih5KCksIHAueSgpKTsKKyAgICBmbG9hdCBtYXhYID0gc3RkOjptYXgodGhpcy0+bWF4
WCgpLCBwLngoKSk7CisgICAgZmxvYXQgbWF4WSA9IHN0ZDo6bWF4KHRoaXMtPm1heFkoKSwgcC55
KCkpOwogCiAgICAgc2V0TG9jYXRpb25BbmRTaXplRnJvbUVkZ2VzKG1pblgsIG1pblksIG1heFgs
IG1heFkpOwogfQpAQCAtMTYxLDEwICsxNjAsMTAgQEAgRmxvYXRSZWN0IHVuaW9uUmVjdChjb25z
dCBWZWN0b3I8RmxvYXRSZWN0PiYgcmVjdHMpCiAKIHZvaWQgRmxvYXRSZWN0OjpmaXRUb1BvaW50
cyhjb25zdCBGbG9hdFBvaW50JiBwMCwgY29uc3QgRmxvYXRQb2ludCYgcDEpCiB7Ci0gICAgZmxv
YXQgbGVmdCA9IG1pbihwMC54KCksIHAxLngoKSk7Ci0gICAgZmxvYXQgdG9wID0gbWluKHAwLnko
KSwgcDEueSgpKTsKLSAgICBmbG9hdCByaWdodCA9IG1heChwMC54KCksIHAxLngoKSk7Ci0gICAg
ZmxvYXQgYm90dG9tID0gbWF4KHAwLnkoKSwgcDEueSgpKTsKKyAgICBmbG9hdCBsZWZ0ID0gc3Rk
OjptaW4ocDAueCgpLCBwMS54KCkpOworICAgIGZsb2F0IHRvcCA9IHN0ZDo6bWluKHAwLnkoKSwg
cDEueSgpKTsKKyAgICBmbG9hdCByaWdodCA9IHN0ZDo6bWF4KHAwLngoKSwgcDEueCgpKTsKKyAg
ICBmbG9hdCBib3R0b20gPSBzdGQ6Om1heChwMC55KCksIHAxLnkoKSk7CiAKICAgICBzZXRMb2Nh
dGlvbkFuZFNpemVGcm9tRWRnZXMobGVmdCwgdG9wLCByaWdodCwgYm90dG9tKTsKIH0KQEAgLTE3
NSwyNSArMTc0LDI1IEBAIG5hbWVzcGFjZSB7CiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KIFQgbWlu
Myhjb25zdCBUJiB2MSwgY29uc3QgVCYgdjIsIGNvbnN0IFQmIHYzKQogewotICAgIHJldHVybiBt
aW4obWluKHYxLCB2MiksIHYzKTsKKyAgICByZXR1cm4gc3RkOjptaW4oc3RkOjptaW4odjEsIHYy
KSwgdjMpOwogfQogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KIFQgbWF4Myhjb25zdCBUJiB2MSwg
Y29uc3QgVCYgdjIsIGNvbnN0IFQmIHYzKQogewotICAgIHJldHVybiBtYXgobWF4KHYxLCB2Miks
IHYzKTsKKyAgICByZXR1cm4gc3RkOjptYXgoc3RkOjptYXgodjEsIHYyKSwgdjMpOwogfQogCiB0
ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KIFQgbWluNChjb25zdCBUJiB2MSwgY29uc3QgVCYgdjIsIGNv
bnN0IFQmIHYzLCBjb25zdCBUJiB2NCkKIHsKLSAgICByZXR1cm4gbWluKG1pbih2MSwgdjIpLCBt
aW4odjMsIHY0KSk7CisgICAgcmV0dXJuIHN0ZDo6bWluKHN0ZDo6bWluKHYxLCB2MiksIHN0ZDo6
bWluKHYzLCB2NCkpOwogfQogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KIFQgbWF4NChjb25zdCBU
JiB2MSwgY29uc3QgVCYgdjIsIGNvbnN0IFQmIHYzLCBjb25zdCBUJiB2NCkKIHsKLSAgICByZXR1
cm4gbWF4KG1heCh2MSwgdjIpLCBtYXgodjMsIHY0KSk7CisgICAgcmV0dXJuIHN0ZDo6bWF4KHN0
ZDo6bWF4KHYxLCB2MiksIHN0ZDo6bWF4KHYzLCB2NCkpOwogfQogCiB9IC8vIGFub255bW91cyBu
YW1lc3BhY2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ds
eXBoUGFnZVRyZWVOb2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ds
eXBoUGFnZVRyZWVOb2RlLmNwcAppbmRleCBhMzZmMzNiYWZmMDY0ZGZhYTJiOGY1Y2EwM2MzMTBi
ZDgyNDY3ZGY0Li42NDU0ZTczZTc2ZTlkYjhmM2JlYTNhNGFmMjNjNDdlNzkzY2RjYjBhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HbHlwaFBhZ2VUcmVlTm9k
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR2x5cGhQYWdlVHJl
ZU5vZGUuY3BwCkBAIC00Myw5ICs0Myw2IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotdXNp
bmcgc3RkOjptYXg7Ci11c2luZyBzdGQ6Om1pbjsKLQogSGFzaE1hcDxpbnQsIEdseXBoUGFnZVRy
ZWVOb2RlKj4qIEdseXBoUGFnZVRyZWVOb2RlOjpyb290cyA9IDA7CiBHbHlwaFBhZ2VUcmVlTm9k
ZSogR2x5cGhQYWdlVHJlZU5vZGU6OnBhZ2VaZXJvUm9vdCA9IDA7CiAKQEAgLTIyOSw4ICsyMjYs
OCBAQCB2b2lkIEdseXBoUGFnZVRyZWVOb2RlOjppbml0aWFsaXplUGFnZShjb25zdCBGb250RGF0
YSogZm9udERhdGEsIHVuc2lnbmVkIHBhZ2VOdQogICAgICAgICAgICAgICAgICAgICBjb25zdCBG
b250RGF0YVJhbmdlJiByYW5nZSA9IHNlZ21lbnRlZEZvbnREYXRhLT5yYW5nZUF0KGkpOwogICAg
ICAgICAgICAgICAgICAgICAvLyBhbGwgdGhpcyBjYXN0aW5nIGlzIHRvIGVuc3VyZSBhbGwgdGhl
IHBhcmFtZXRlcnMgdG8gbWluIGFuZCBtYXggaGF2ZSB0aGUgc2FtZSB0eXBlLAogICAgICAgICAg
ICAgICAgICAgICAvLyB0byBhdm9pZCBhbWJpZ3VvdXMgdGVtcGxhdGUgcGFyYW1ldGVyIGVycm9y
cyBvbiBXaW5kb3dzCi0gICAgICAgICAgICAgICAgICAgIGludCBmcm9tID0gbWF4KDAsIHN0YXRp
Y19jYXN0PGludD4ocmFuZ2UuZnJvbSgpKSAtIHN0YXRpY19jYXN0PGludD4oc3RhcnQpKTsKLSAg
ICAgICAgICAgICAgICAgICAgaW50IHRvID0gMSArIG1pbihzdGF0aWNfY2FzdDxpbnQ+KHJhbmdl
LnRvKCkpIC0gc3RhdGljX2Nhc3Q8aW50PihzdGFydCksIHN0YXRpY19jYXN0PGludD4oR2x5cGhQ
YWdlOjpzaXplKSAtIDEpOworICAgICAgICAgICAgICAgICAgICBpbnQgZnJvbSA9IHN0ZDo6bWF4
KDAsIHN0YXRpY19jYXN0PGludD4ocmFuZ2UuZnJvbSgpKSAtIHN0YXRpY19jYXN0PGludD4oc3Rh
cnQpKTsKKyAgICAgICAgICAgICAgICAgICAgaW50IHRvID0gMSArIHN0ZDo6bWluKHN0YXRpY19j
YXN0PGludD4ocmFuZ2UudG8oKSkgLSBzdGF0aWNfY2FzdDxpbnQ+KHN0YXJ0KSwgc3RhdGljX2Nh
c3Q8aW50PihHbHlwaFBhZ2U6OnNpemUpIC0gMSk7CiAgICAgICAgICAgICAgICAgICAgIGlmIChm
cm9tIDwgc3RhdGljX2Nhc3Q8aW50PihHbHlwaFBhZ2U6OnNpemUpICYmIHRvID4gMCkgewogICAg
ICAgICAgICAgICAgICAgICAgICAgaWYgKGhhdmVHbHlwaHMgJiYgIXNjcmF0Y2hQYWdlKSB7CiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgc2NyYXRjaFBhZ2UgPSBHbHlwaFBhZ2U6OmNyZWF0
ZUZvck1peGVkRm9udERhdGEodGhpcyk7CkBAIC0zMzksNyArMzM2LDcgQEAgR2x5cGhQYWdlVHJl
ZU5vZGUqIEdseXBoUGFnZVRyZWVOb2RlOjpnZXRDaGlsZChjb25zdCBGb250RGF0YSogZm9udERh
dGEsIHVuc2lnbmUKICNlbmRpZgogICAgIGlmIChmb250RGF0YSkgewogICAgICAgICBtX2NoaWxk
cmVuLnNldChmb250RGF0YSwgYWRvcHRQdHIoY2hpbGQpKTsKLSAgICAgICAgZm9udERhdGEtPnNl
dE1heEdseXBoUGFnZVRyZWVMZXZlbChtYXgoZm9udERhdGEtPm1heEdseXBoUGFnZVRyZWVMZXZl
bCgpLCBjaGlsZC0+bV9sZXZlbCkpOworICAgICAgICBmb250RGF0YS0+c2V0TWF4R2x5cGhQYWdl
VHJlZUxldmVsKHN0ZDo6bWF4KGZvbnREYXRhLT5tYXhHbHlwaFBhZ2VUcmVlTGV2ZWwoKSwgY2hp
bGQtPm1fbGV2ZWwpKTsKICAgICB9IGVsc2UgewogICAgICAgICBtX3N5c3RlbUZhbGxiYWNrQ2hp
bGQgPSBhZG9wdFB0cihjaGlsZCk7CiAgICAgICAgIGNoaWxkLT5tX2lzU3lzdGVtRmFsbGJhY2sg
PSB0cnVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW50
UmVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbnRSZWN0LmNwcApp
bmRleCBjZGEwZWMzYjA2ZGJlMDE1OWQzMjM2ODc2ZmM5MDM5MGRlYWM1MjcyLi4wZThmZjk3ODUx
YjRiNDliZjk4OTY1MWM0NWI4M2ZlNGUxZmQ3Mjk2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9JbnRSZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9JbnRSZWN0LmNwcApAQCAtMzEsOSArMzEsNiBAQAogI2luY2x1ZGUgPGFs
Z29yaXRobT4KICNpbmNsdWRlIDx3dGYvUHJpbnRTdHJlYW0uaD4KIAotdXNpbmcgc3RkOjptYXg7
Ci11c2luZyBzdGQ6Om1pbjsKLQogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBJbnRSZWN0OjpJbnRS
ZWN0KGNvbnN0IEZsb2F0UmVjdCYgcikKQEAgLTY0LDEwICs2MSwxMCBAQCBib29sIEludFJlY3Q6
OmNvbnRhaW5zKGNvbnN0IEludFJlY3QmIG90aGVyKSBjb25zdAogCiB2b2lkIEludFJlY3Q6Omlu
dGVyc2VjdChjb25zdCBJbnRSZWN0JiBvdGhlcikKIHsKLSAgICBpbnQgbCA9IG1heCh4KCksIG90
aGVyLngoKSk7Ci0gICAgaW50IHQgPSBtYXgoeSgpLCBvdGhlci55KCkpOwotICAgIGludCByID0g
bWluKG1heFgoKSwgb3RoZXIubWF4WCgpKTsKLSAgICBpbnQgYiA9IG1pbihtYXhZKCksIG90aGVy
Lm1heFkoKSk7CisgICAgaW50IGwgPSBzdGQ6Om1heCh4KCksIG90aGVyLngoKSk7CisgICAgaW50
IHQgPSBzdGQ6Om1heCh5KCksIG90aGVyLnkoKSk7CisgICAgaW50IHIgPSBzdGQ6Om1pbihtYXhY
KCksIG90aGVyLm1heFgoKSk7CisgICAgaW50IGIgPSBzdGQ6Om1pbihtYXhZKCksIG90aGVyLm1h
eFkoKSk7CiAKICAgICAvLyBSZXR1cm4gYSBjbGVhbiBlbXB0eSByZWN0YW5nbGUgZm9yIG5vbi1p
bnRlcnNlY3RpbmcgY2FzZXMuCiAgICAgaWYgKGwgPj0gciB8fCB0ID49IGIpIHsKQEAgLTkzLDEw
ICs5MCwxMCBAQCB2b2lkIEludFJlY3Q6OnVuaXRlKGNvbnN0IEludFJlY3QmIG90aGVyKQogICAg
ICAgICByZXR1cm47CiAgICAgfQogCi0gICAgaW50IGwgPSBtaW4oeCgpLCBvdGhlci54KCkpOwot
ICAgIGludCB0ID0gbWluKHkoKSwgb3RoZXIueSgpKTsKLSAgICBpbnQgciA9IG1heChtYXhYKCks
IG90aGVyLm1heFgoKSk7Ci0gICAgaW50IGIgPSBtYXgobWF4WSgpLCBvdGhlci5tYXhZKCkpOwor
ICAgIGludCBsID0gc3RkOjptaW4oeCgpLCBvdGhlci54KCkpOworICAgIGludCB0ID0gc3RkOjpt
aW4oeSgpLCBvdGhlci55KCkpOworICAgIGludCByID0gc3RkOjptYXgobWF4WCgpLCBvdGhlci5t
YXhYKCkpOworICAgIGludCBiID0gc3RkOjptYXgobWF4WSgpLCBvdGhlci5tYXhZKCkpOwogCiAg
ICAgbV9sb2NhdGlvbi5zZXRYKGwpOwogICAgIG1fbG9jYXRpb24uc2V0WSh0KTsKQEAgLTExNCwx
MCArMTExLDEwIEBAIHZvaWQgSW50UmVjdDo6dW5pdGVJZk5vblplcm8oY29uc3QgSW50UmVjdCYg
b3RoZXIpCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBpbnQgbGVmdCA9IG1pbih4KCks
IG90aGVyLngoKSk7Ci0gICAgaW50IHRvcCA9IG1pbih5KCksIG90aGVyLnkoKSk7Ci0gICAgaW50
IHJpZ2h0ID0gbWF4KG1heFgoKSwgb3RoZXIubWF4WCgpKTsKLSAgICBpbnQgYm90dG9tID0gbWF4
KG1heFkoKSwgb3RoZXIubWF4WSgpKTsKKyAgICBpbnQgbGVmdCA9IHN0ZDo6bWluKHgoKSwgb3Ro
ZXIueCgpKTsKKyAgICBpbnQgdG9wID0gc3RkOjptaW4oeSgpLCBvdGhlci55KCkpOworICAgIGlu
dCByaWdodCA9IHN0ZDo6bWF4KG1heFgoKSwgb3RoZXIubWF4WCgpKTsKKyAgICBpbnQgYm90dG9t
ID0gc3RkOjptYXgobWF4WSgpLCBvdGhlci5tYXhZKCkpOwogCiAgICAgbV9sb2NhdGlvbi5zZXRY
KGxlZnQpOwogICAgIG1fbG9jYXRpb24uc2V0WSh0b3ApOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTGF5b3V0UmVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9MYXlvdXRSZWN0LmNwcAppbmRleCAxYTViOTg5NDg0YjM3YjU5OTZm
MTE4Y2NkNjJlNDBiZjFhMzFkNWJlLi5kY2UwZTEyZGIxNjMxZDdmODRkNTZiMGE2NTI4OGI4MTIx
YTU2NWJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9MYXlv
dXRSZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9MYXlvdXRS
ZWN0LmNwcApAQCAtMzMsOSArMzMsNiBAQAogCiAjaW5jbHVkZSA8YWxnb3JpdGhtPgogCi11c2lu
ZyBzdGQ6Om1heDsKLXVzaW5nIHN0ZDo6bWluOwotCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIExh
eW91dFJlY3Q6OkxheW91dFJlY3QoY29uc3QgRmxvYXRSZWN0JiByKQpAQCAtNjAsOCArNTcsOCBA
QCBib29sIExheW91dFJlY3Q6OmNvbnRhaW5zKGNvbnN0IExheW91dFJlY3QmIG90aGVyKSBjb25z
dAogCiB2b2lkIExheW91dFJlY3Q6OmludGVyc2VjdChjb25zdCBMYXlvdXRSZWN0JiBvdGhlcikK
IHsKLSAgICBMYXlvdXRQb2ludCBuZXdMb2NhdGlvbihtYXgoeCgpLCBvdGhlci54KCkpLCBtYXgo
eSgpLCBvdGhlci55KCkpKTsKLSAgICBMYXlvdXRQb2ludCBuZXdNYXhQb2ludChtaW4obWF4WCgp
LCBvdGhlci5tYXhYKCkpLCBtaW4obWF4WSgpLCBvdGhlci5tYXhZKCkpKTsKKyAgICBMYXlvdXRQ
b2ludCBuZXdMb2NhdGlvbihzdGQ6Om1heCh4KCksIG90aGVyLngoKSksIHN0ZDo6bWF4KHkoKSwg
b3RoZXIueSgpKSk7CisgICAgTGF5b3V0UG9pbnQgbmV3TWF4UG9pbnQoc3RkOjptaW4obWF4WCgp
LCBvdGhlci5tYXhYKCkpLCBzdGQ6Om1pbihtYXhZKCksIG90aGVyLm1heFkoKSkpOwogCiAgICAg
Ly8gUmV0dXJuIGEgY2xlYW4gZW1wdHkgcmVjdGFuZ2xlIGZvciBub24taW50ZXJzZWN0aW5nIGNh
c2VzLgogICAgIGlmIChuZXdMb2NhdGlvbi54KCkgPj0gbmV3TWF4UG9pbnQueCgpIHx8IG5ld0xv
Y2F0aW9uLnkoKSA+PSBuZXdNYXhQb2ludC55KCkpIHsKQEAgLTgzLDggKzgwLDggQEAgdm9pZCBM
YXlvdXRSZWN0Ojp1bml0ZShjb25zdCBMYXlvdXRSZWN0JiBvdGhlcikKICAgICAgICAgcmV0dXJu
OwogICAgIH0KIAotICAgIExheW91dFBvaW50IG5ld0xvY2F0aW9uKG1pbih4KCksIG90aGVyLngo
KSksIG1pbih5KCksIG90aGVyLnkoKSkpOwotICAgIExheW91dFBvaW50IG5ld01heFBvaW50KG1h
eChtYXhYKCksIG90aGVyLm1heFgoKSksIG1heChtYXhZKCksIG90aGVyLm1heFkoKSkpOworICAg
IExheW91dFBvaW50IG5ld0xvY2F0aW9uKHN0ZDo6bWluKHgoKSwgb3RoZXIueCgpKSwgc3RkOjpt
aW4oeSgpLCBvdGhlci55KCkpKTsKKyAgICBMYXlvdXRQb2ludCBuZXdNYXhQb2ludChzdGQ6Om1h
eChtYXhYKCksIG90aGVyLm1heFgoKSksIHN0ZDo6bWF4KG1heFkoKSwgb3RoZXIubWF4WSgpKSk7
CiAKICAgICBtX2xvY2F0aW9uID0gbmV3TG9jYXRpb247CiAgICAgbV9zaXplID0gbmV3TWF4UG9p
bnQgLSBuZXdMb2NhdGlvbjsKQEAgLTEwMCw4ICs5Nyw4IEBAIHZvaWQgTGF5b3V0UmVjdDo6dW5p
dGVJZk5vblplcm8oY29uc3QgTGF5b3V0UmVjdCYgb3RoZXIpCiAgICAgICAgIHJldHVybjsKICAg
ICB9CiAKLSAgICBMYXlvdXRQb2ludCBuZXdMb2NhdGlvbihtaW4oeCgpLCBvdGhlci54KCkpLCBt
aW4oeSgpLCBvdGhlci55KCkpKTsKLSAgICBMYXlvdXRQb2ludCBuZXdNYXhQb2ludChtYXgobWF4
WCgpLCBvdGhlci5tYXhYKCkpLCBtYXgobWF4WSgpLCBvdGhlci5tYXhZKCkpKTsKKyAgICBMYXlv
dXRQb2ludCBuZXdMb2NhdGlvbihzdGQ6Om1pbih4KCksIG90aGVyLngoKSksIHN0ZDo6bWluKHko
KSwgb3RoZXIueSgpKSk7CisgICAgTGF5b3V0UG9pbnQgbmV3TWF4UG9pbnQoc3RkOjptYXgobWF4
WCgpLCBvdGhlci5tYXhYKCkpLCBzdGQ6Om1heChtYXhZKCksIG90aGVyLm1heFkoKSkpOwogCiAg
ICAgbV9sb2NhdGlvbiA9IG5ld0xvY2F0aW9uOwogICAgIG1fc2l6ZSA9IG5ld01heFBvaW50IC0g
bmV3TG9jYXRpb247CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9maWx0ZXJzL0ZFTW9ycGhvbG9neS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9maWx0ZXJzL0ZFTW9ycGhvbG9neS5jcHAKaW5kZXggNmIwMjhlZTM5Mzc2OTI5ZGRlZWI3
ZjM0YWMxNDI3ODI2ZmQyZTZiYy4uMmQzOWU2OTRjYTZkZmJmNGZhNTc0Yzk1MjU4MmI2NWYwNDc3
MTEzOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVy
cy9GRU1vcnBob2xvZ3kuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2ZpbHRlcnMvRkVNb3JwaG9sb2d5LmNwcApAQCAtMzQsOSArMzQsNiBAQAogI2luY2x1ZGUgPHd0
Zi9QYXJhbGxlbEpvYnMuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAKLXVzaW5nIHN0ZDo6
bWluOwotdXNpbmcgc3RkOjptYXg7Ci0KIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogRkVNb3JwaG9s
b2d5OjpGRU1vcnBob2xvZ3koRmlsdGVyKiBmaWx0ZXIsIE1vcnBob2xvZ3lPcGVyYXRvclR5cGUg
dHlwZSwgZmxvYXQgcmFkaXVzWCwgZmxvYXQgcmFkaXVzWSkKQEAgLTExNiw4ICsxMTMsOCBAQCB2
b2lkIEZFTW9ycGhvbG9neTo6cGxhdGZvcm1BcHBseUdlbmVyaWMoUGFpbnRpbmdEYXRhKiBwYWlu
dGluZ0RhdGEsIGludCB5U3RhcnQsCiAKICAgICBWZWN0b3I8dW5zaWduZWQgY2hhcj4gZXh0cmVt
YTsKICAgICBmb3IgKGludCB5ID0geVN0YXJ0OyB5IDwgeUVuZDsgKyt5KSB7Ci0gICAgICAgIGlu
dCBleHRyZW1hU3RhcnRZID0gbWF4KDAsIHkgLSByYWRpdXNZKTsKLSAgICAgICAgaW50IGV4dHJl
bWFFbmRZID0gbWluKGhlaWdodCAtIDEsIHkgKyByYWRpdXNZKTsKKyAgICAgICAgaW50IGV4dHJl
bWFTdGFydFkgPSBzdGQ6Om1heCgwLCB5IC0gcmFkaXVzWSk7CisgICAgICAgIGludCBleHRyZW1h
RW5kWSA9IHN0ZDo6bWluKGhlaWdodCAtIDEsIHkgKyByYWRpdXNZKTsKICAgICAgICAgZm9yICh1
bnNpZ25lZCBpbnQgY2xyQ2hhbm5lbCA9IDA7IGNsckNoYW5uZWwgPCA0OyArK2NsckNoYW5uZWwp
IHsKICAgICAgICAgICAgIGV4dHJlbWEuY2xlYXIoKTsKICAgICAgICAgICAgIC8vIENvbXB1dGUg
ZXh0cmVtYXMgZm9yIGVhY2ggY29sdW1ucwpAQCAtMTM2LDcgKzEzMyw3IEBAIHZvaWQgRkVNb3Jw
aG9sb2d5OjpwbGF0Zm9ybUFwcGx5R2VuZXJpYyhQYWludGluZ0RhdGEqIHBhaW50aW5nRGF0YSwg
aW50IHlTdGFydCwKIAogICAgICAgICAgICAgLy8gS2VybmVsIGlzIGZpbGxlZCwgZ2V0IGV4dHJl
bWEgb2YgbmV4dCBjb2x1bW4KICAgICAgICAgICAgIGZvciAoaW50IHggPSAwOyB4IDwgd2lkdGg7
ICsreCkgewotICAgICAgICAgICAgICAgIGNvbnN0IGludCBlbmRYID0gbWluKHggKyByYWRpdXNY
LCB3aWR0aCAtIDEpOworICAgICAgICAgICAgICAgIGNvbnN0IGludCBlbmRYID0gc3RkOjptaW4o
eCArIHJhZGl1c1gsIHdpZHRoIC0gMSk7CiAgICAgICAgICAgICAgICAgdW5zaWduZWQgY2hhciBj
b2x1bW5FeHRyZW1hID0gc3JjUGl4ZWxBcnJheS0+aXRlbShleHRyZW1hU3RhcnRZICogZWZmZWN0
V2lkdGggKyBlbmRYICogNCArIGNsckNoYW5uZWwpOwogICAgICAgICAgICAgICAgIGZvciAoaW50
IGkgPSBleHRyZW1hU3RhcnRZICsgMTsgaSA8PSBleHRyZW1hRW5kWTsgKytpKSB7CiAgICAgICAg
ICAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIgcGl4ZWwgPSBzcmNQaXhlbEFycmF5LT5pdGVtKGkg
KiBlZmZlY3RXaWR0aCArIGVuZFggKiA0ICsgY2xyQ2hhbm5lbCk7CkBAIC0yMjIsOCArMjE5LDgg
QEAgdm9pZCBGRU1vcnBob2xvZ3k6OnBsYXRmb3JtQXBwbHlTb2Z0d2FyZSgpCiAgICAgcGFpbnRp
bmdEYXRhLmRzdFBpeGVsQXJyYXkgPSBkc3RQaXhlbEFycmF5OwogICAgIHBhaW50aW5nRGF0YS53
aWR0aCA9IGVmZmVjdERyYXdpbmdSZWN0LndpZHRoKCk7CiAgICAgcGFpbnRpbmdEYXRhLmhlaWdo
dCA9IGVmZmVjdERyYXdpbmdSZWN0LmhlaWdodCgpOwotICAgIHBhaW50aW5nRGF0YS5yYWRpdXNY
ID0gbWluKGVmZmVjdERyYXdpbmdSZWN0LndpZHRoKCkgLSAxLCByYWRpdXNYKTsKLSAgICBwYWlu
dGluZ0RhdGEucmFkaXVzWSA9IG1pbihlZmZlY3REcmF3aW5nUmVjdC5oZWlnaHQoKSAtIDEsIHJh
ZGl1c1kpOworICAgIHBhaW50aW5nRGF0YS5yYWRpdXNYID0gc3RkOjptaW4oZWZmZWN0RHJhd2lu
Z1JlY3Qud2lkdGgoKSAtIDEsIHJhZGl1c1gpOworICAgIHBhaW50aW5nRGF0YS5yYWRpdXNZID0g
c3RkOjptaW4oZWZmZWN0RHJhd2luZ1JlY3QuaGVpZ2h0KCkgLSAxLCByYWRpdXNZKTsKIAogICAg
IHBsYXRmb3JtQXBwbHkoJnBhaW50aW5nRGF0YSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tYWMvTWVtb3J5UHJlc3N1cmVIYW5kbGVyTWFjLm1tIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWFjL01lbW9yeVByZXNzdXJlSGFuZGxlck1hYy5tbQppbmRleCA3Njk2
NGZhMTI3YjBmYzkwYmU2NTQ3NGRjYjY4NjI1Y2ZkNTc1MWNiLi5lNmU5NmRiMDU4NTU2YWI5YjJm
YmE4N2YyZWYxZjRjOWUyYTYwZGUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tYWMvTWVtb3J5UHJlc3N1cmVIYW5kbGVyTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21hYy9NZW1vcnlQcmVzc3VyZUhhbmRsZXJNYWMubW0KQEAgLTQ0LDggKzQ0LDYgQEAK
ICNpbXBvcnQgPG5vdGlmeS5oPgogI2VuZGlmCiAKLXVzaW5nIHN0ZDo6bWF4OwotCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKICNpZiAhUExBVEZPUk0oSU9TKQpAQCAtMTQwLDcgKzEzOCw3IEBAIHZv
aWQgTWVtb3J5UHJlc3N1cmVIYW5kbGVyOjpyZXNwb25kVG9NZW1vcnlQcmVzc3VyZSgpCiAKICAg
ICB1bnNpZ25lZCBob2xkT2ZmVGltZSA9IChtb25vdG9uaWNhbGx5SW5jcmVhc2luZ1RpbWUoKSAt
IHN0YXJ0VGltZSkgKiBzX2hvbGRPZmZNdWx0aXBsaWVyOwogCi0gICAgaG9sZE9mZihtYXgoaG9s
ZE9mZlRpbWUsIHNfbWluaW11bUhvbGRPZmZUaW1lKSk7CisgICAgaG9sZE9mZihzdGQ6Om1heCho
b2xkT2ZmVGltZSwgc19taW5pbXVtSG9sZE9mZlRpbWUpKTsKIH0KICNlbmRpZiAvLyAhUExBVEZP
Uk0oSU9TKQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1RleHRD
b2RlY0lDVS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1RleHRDb2RlY0lDVS5j
cHAKaW5kZXggODZkNGVhMTcyNjU0MjNkNDNjZjNmY2E2MDMwM2RlNDI2NDM5OWJjYS4uYjRiYjM5
MDdmNjE0OGMzNDkzZjZhMTdmYWY5ZTgyMDA3ZTAzNjAxNSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vdGV4dC9UZXh0Q29kZWNJQ1UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL3RleHQvVGV4dENvZGVjSUNVLmNwcApAQCAtNDAsOCArNDAsNiBAQAogI2luY2x1
ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4KICNpbmNsdWRlIDx3dGYvdW5pY29kZS9DaGFy
YWN0ZXJOYW1lcy5oPgogCi11c2luZyBzdGQ6Om1pbjsKLQogbmFtZXNwYWNlIFdlYkNvcmUgewog
CiBjb25zdCBzaXplX3QgQ29udmVyc2lvbkJ1ZmZlclNpemUgPSAxNjM4NDsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9MaW5lV2lkdGguY3BwIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL0xpbmVXaWR0aC5jcHAKaW5kZXggNzk4NzUyY2YxYzQwZTdjN2JiMWJmMGJlYTE3
MWFiN2Y5MGE3ZjkxNC4uMjgzMGJiNThlOTFiODEwNDIxMTYzYmQxOWYyMTJlZDM3MjA4YWUyMiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0xpbmVXaWR0aC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0xpbmVXaWR0aC5jcHAKQEAgLTE4Nyw3ICsxODcsNyBA
QCB2b2lkIExpbmVXaWR0aDo6Zml0QmVsb3dGbG9hdHMoKQogCiAgICAgICAgIG5ld0xpbmVMZWZ0
ID0gbV9ibG9jay5sb2dpY2FsTGVmdE9mZnNldEZvckxpbmUoZmxvYXRMb2dpY2FsQm90dG9tLCBz
aG91bGRJbmRlbnRUZXh0KCkpOwogICAgICAgICBuZXdMaW5lUmlnaHQgPSBtX2Jsb2NrLmxvZ2lj
YWxSaWdodE9mZnNldEZvckxpbmUoZmxvYXRMb2dpY2FsQm90dG9tLCBzaG91bGRJbmRlbnRUZXh0
KCkpOwotICAgICAgICBuZXdMaW5lV2lkdGggPSBtYXgoMC4wZiwgbmV3TGluZVJpZ2h0IC0gbmV3
TGluZUxlZnQpOworICAgICAgICBuZXdMaW5lV2lkdGggPSBzdGQ6Om1heCgwLjBmLCBuZXdMaW5l
UmlnaHQgLSBuZXdMaW5lTGVmdCk7CiAgICAgICAgIGxhc3RGbG9hdExvZ2ljYWxCb3R0b20gPSBm
bG9hdExvZ2ljYWxCb3R0b207CiAKICNpZiBFTkFCTEUoQ1NTX1NIQVBFUykKQEAgLTIyOSw3ICsy
MjksNyBAQCB2b2lkIExpbmVXaWR0aDo6dXBkYXRlQ3VycmVudFNoYXBlU2VnbWVudCgpCiAKIHZv
aWQgTGluZVdpZHRoOjpjb21wdXRlQXZhaWxhYmxlV2lkdGhGcm9tTGVmdEFuZFJpZ2h0KCkKIHsK
LSAgICBtX2F2YWlsYWJsZVdpZHRoID0gbWF4KDAuMGYsIG1fcmlnaHQgLSBtX2xlZnQpICsgbV9v
dmVyaGFuZ1dpZHRoOworICAgIG1fYXZhaWxhYmxlV2lkdGggPSBzdGQ6Om1heDxmbG9hdD4oMCwg
bV9yaWdodCAtIG1fbGVmdCkgKyBtX292ZXJoYW5nV2lkdGg7CiB9CiAKIGJvb2wgTGluZVdpZHRo
OjpmaXRzT25MaW5lRXhjbHVkaW5nVHJhaWxpbmdDb2xsYXBzZWRXaGl0ZXNwYWNlKCkgY29uc3QK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5oIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmgKaW5kZXggZDZlNDQyMjhlM2U3Yzg1
YjJjYTc4ZjlkMjhmOWE3NWNkYTQzODQ2Ni4uZDU4Y2FjMWRlOWMxYzNmYmExOWFmNTQzMzQ1MTAw
YmQ1MGM2ZWMzMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJs
b2NrLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmgKQEAgLTE1
Nyw3ICsxNTcsNyBAQCBwdWJsaWM6CiAgICAgLy8gY29tcHV0ZSB0aGUgcmVnaW9uIGFsbCBvdmVy
IGFnYWluIHdoZW4geW91IGFscmVhZHkga25vdyBpdC4KICAgICBMYXlvdXRVbml0IGF2YWlsYWJs
ZUxvZ2ljYWxXaWR0aEZvckxpbmUoTGF5b3V0VW5pdCBwb3NpdGlvbiwgYm9vbCBzaG91bGRJbmRl
bnRUZXh0LCBSZW5kZXJSZWdpb24qIHJlZ2lvbiwgTGF5b3V0VW5pdCBsb2dpY2FsSGVpZ2h0ID0g
MCkgY29uc3QKICAgICB7Ci0gICAgICAgIHJldHVybiBtYXg8TGF5b3V0VW5pdD4oMCwgbG9naWNh
bFJpZ2h0T2Zmc2V0Rm9yTGluZShwb3NpdGlvbiwgc2hvdWxkSW5kZW50VGV4dCwgcmVnaW9uLCBs
b2dpY2FsSGVpZ2h0KQorICAgICAgICByZXR1cm4gc3RkOjptYXg8TGF5b3V0VW5pdD4oMCwgbG9n
aWNhbFJpZ2h0T2Zmc2V0Rm9yTGluZShwb3NpdGlvbiwgc2hvdWxkSW5kZW50VGV4dCwgcmVnaW9u
LCBsb2dpY2FsSGVpZ2h0KQogICAgICAgICAgICAgLSBsb2dpY2FsTGVmdE9mZnNldEZvckxpbmUo
cG9zaXRpb24sIHNob3VsZEluZGVudFRleHQsIHJlZ2lvbiwgbG9naWNhbEhlaWdodCkpOwogICAg
IH0KICAgICBMYXlvdXRVbml0IGxvZ2ljYWxSaWdodE9mZnNldEZvckxpbmUoTGF5b3V0VW5pdCBw
b3NpdGlvbiwgYm9vbCBzaG91bGRJbmRlbnRUZXh0LCBSZW5kZXJSZWdpb24qIHJlZ2lvbiwgTGF5
b3V0VW5pdCBsb2dpY2FsSGVpZ2h0ID0gMCkgY29uc3QgCkBAIC0zMzMsNyArMzMzLDcgQEAgcHVi
bGljOgogICAgIExheW91dFVuaXQgbG9naWNhbFJpZ2h0T2Zmc2V0Rm9yQ29udGVudChSZW5kZXJS
ZWdpb24qKSBjb25zdDsKICAgICBMYXlvdXRVbml0IGF2YWlsYWJsZUxvZ2ljYWxXaWR0aEZvckNv
bnRlbnQoUmVuZGVyUmVnaW9uKiByZWdpb24pIGNvbnN0CiAgICAgeyAKLSAgICAgICAgcmV0dXJu
IG1heDxMYXlvdXRVbml0PigwLCBsb2dpY2FsUmlnaHRPZmZzZXRGb3JDb250ZW50KHJlZ2lvbikg
LSBsb2dpY2FsTGVmdE9mZnNldEZvckNvbnRlbnQocmVnaW9uKSk7IH0KKyAgICAgICAgcmV0dXJu
IHN0ZDo6bWF4PExheW91dFVuaXQ+KDAsIGxvZ2ljYWxSaWdodE9mZnNldEZvckNvbnRlbnQocmVn
aW9uKSAtIGxvZ2ljYWxMZWZ0T2Zmc2V0Rm9yQ29udGVudChyZWdpb24pKTsgfQogICAgIExheW91
dFVuaXQgc3RhcnRPZmZzZXRGb3JDb250ZW50KFJlbmRlclJlZ2lvbiogcmVnaW9uKSBjb25zdAog
ICAgIHsKICAgICAgICAgcmV0dXJuIHN0eWxlKCktPmlzTGVmdFRvUmlnaHREaXJlY3Rpb24oKSA/
IGxvZ2ljYWxMZWZ0T2Zmc2V0Rm9yQ29udGVudChyZWdpb24pIDogbG9naWNhbFdpZHRoKCkgLSBs
b2dpY2FsUmlnaHRPZmZzZXRGb3JDb250ZW50KHJlZ2lvbik7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRmllbGRzZXQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckZpZWxkc2V0LmNwcAppbmRleCA5NTJkNzVlMDk5ZWVhOTNhNTc1ZjM4ZWQ4
MWQ0MmViNzIyMTlkODVlLi4yMDkxNTgxZDQzNWVjZTEyODNlZjNkMDdiNGNjZWViZTFmZmIwNDEw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRmllbGRzZXQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGaWVsZHNldC5jcHAKQEAgLTMw
LDkgKzMwLDYgQEAKICNpbmNsdWRlICJIVE1MTmFtZXMuaCIKICNpbmNsdWRlICJQYWludEluZm8u
aCIKIAotdXNpbmcgc3RkOjptaW47Ci11c2luZyBzdGQ6Om1heDsKLQogbmFtZXNwYWNlIFdlYkNv
cmUgewogCiB1c2luZyBuYW1lc3BhY2UgSFRNTE5hbWVzOwpAQCAtNTcsNyArNTQsNyBAQCB2b2lk
IFJlbmRlckZpZWxkc2V0Ojpjb21wdXRlUHJlZmVycmVkTG9naWNhbFdpZHRocygpCiAgICAgICAg
IGlmIChsZWdlbmRNYXJnaW5SaWdodC5pc0ZpeGVkKCkpCiAgICAgICAgICAgICBsZWdlbmRNaW5X
aWR0aCArPSBsZWdlbmRNYXJnaW5SaWdodC52YWx1ZSgpOwogCi0gICAgICAgIG1fbWluUHJlZmVy
cmVkTG9naWNhbFdpZHRoID0gbWF4KG1fbWluUHJlZmVycmVkTG9naWNhbFdpZHRoLCBsZWdlbmRN
aW5XaWR0aCArIGJvcmRlckFuZFBhZGRpbmdXaWR0aCgpKTsKKyAgICAgICAgbV9taW5QcmVmZXJy
ZWRMb2dpY2FsV2lkdGggPSBzdGQ6Om1heChtX21pblByZWZlcnJlZExvZ2ljYWxXaWR0aCwgbGVn
ZW5kTWluV2lkdGggKyBib3JkZXJBbmRQYWRkaW5nV2lkdGgoKSk7CiAgICAgfQogfQogCkBAIC0x
MTcsNyArMTE0LDcgQEAgUmVuZGVyT2JqZWN0KiBSZW5kZXJGaWVsZHNldDo6bGF5b3V0U3BlY2lh
bEV4Y2x1ZGVkQ2hpbGQoYm9vbCByZWxheW91dENoaWxkcmVuKQogICAgICAgICAvLyBvbiB0aGUg
bGVnZW5kJ3MgbWFyZ2lucyBhcyB3ZSB3YW50IHRvIHN0aWxsIGZvbGxvdyB0aGUgYXV0aG9yJ3Mg
Y3Vlcy4KICAgICAgICAgLy8gRmlyZWZveCBjb21wbGV0ZWx5IGlnbm9yZXMgdGhlIG1hcmdpbnMg
aW4gdGhpcyBjYXNlIHdoaWNoIHNlZW1zIHdyb25nLgogICAgICAgICBsZWdlbmRMb2dpY2FsVG9w
ID0gKGZpZWxkc2V0Qm9yZGVyQmVmb3JlIC0gbGVnZW5kTG9naWNhbEhlaWdodCkgLyAyOwotICAg
ICAgICBjb2xsYXBzZWRMZWdlbmRFeHRlbnQgPSBtYXg8TGF5b3V0VW5pdD4oZmllbGRzZXRCb3Jk
ZXJCZWZvcmUsIGxlZ2VuZExvZ2ljYWxUb3AgKyBsZWdlbmRMb2dpY2FsSGVpZ2h0ICsgbWFyZ2lu
QWZ0ZXJGb3JDaGlsZChsZWdlbmQpKTsKKyAgICAgICAgY29sbGFwc2VkTGVnZW5kRXh0ZW50ID0g
c3RkOjptYXg8TGF5b3V0VW5pdD4oZmllbGRzZXRCb3JkZXJCZWZvcmUsIGxlZ2VuZExvZ2ljYWxU
b3AgKyBsZWdlbmRMb2dpY2FsSGVpZ2h0ICsgbWFyZ2luQWZ0ZXJGb3JDaGlsZChsZWdlbmQpKTsK
ICAgICB9IGVsc2UKICAgICAgICAgY29sbGFwc2VkTGVnZW5kRXh0ZW50ID0gbGVnZW5kTG9naWNh
bEhlaWdodCArIG1hcmdpbkFmdGVyRm9yQ2hpbGQobGVnZW5kKTsKIApAQCAtMTc5LDExICsxNzYs
MTEgQEAgdm9pZCBSZW5kZXJGaWVsZHNldDo6cGFpbnRCb3hEZWNvcmF0aW9ucyhQYWludEluZm8m
IHBhaW50SW5mbywgY29uc3QgTGF5b3V0UG9pbnQKICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDcyMzYKICAgICBpZiAoc3R5bGUoKS0+aXNIb3Jpem9udGFs
V3JpdGluZ01vZGUoKSkgewogICAgICAgICBMYXlvdXRVbml0IGNsaXBUb3AgPSBwYWludFJlY3Qu
eSgpOwotICAgICAgICBMYXlvdXRVbml0IGNsaXBIZWlnaHQgPSBtYXgoc3RhdGljX2Nhc3Q8TGF5
b3V0VW5pdD4oc3R5bGUoKS0+Ym9yZGVyVG9wV2lkdGgoKSksIGxlZ2VuZC0+aGVpZ2h0KCkgLSAo
KGxlZ2VuZC0+aGVpZ2h0KCkgLSBib3JkZXJUb3AoKSkgLyAyKSk7CisgICAgICAgIExheW91dFVu
aXQgY2xpcEhlaWdodCA9IHN0ZDo6bWF4KHN0YXRpY19jYXN0PExheW91dFVuaXQ+KHN0eWxlKCkt
PmJvcmRlclRvcFdpZHRoKCkpLCBsZWdlbmQtPmhlaWdodCgpIC0gKChsZWdlbmQtPmhlaWdodCgp
IC0gYm9yZGVyVG9wKCkpIC8gMikpOwogICAgICAgICBncmFwaGljc0NvbnRleHQtPmNsaXBPdXQo
cGl4ZWxTbmFwcGVkSW50UmVjdChwYWludFJlY3QueCgpICsgbGVnZW5kLT54KCksIGNsaXBUb3As
IGxlZ2VuZC0+d2lkdGgoKSwgY2xpcEhlaWdodCkpOwogICAgIH0gZWxzZSB7CiAgICAgICAgIExh
eW91dFVuaXQgY2xpcExlZnQgPSBwYWludFJlY3QueCgpOwotICAgICAgICBMYXlvdXRVbml0IGNs
aXBXaWR0aCA9IG1heChzdGF0aWNfY2FzdDxMYXlvdXRVbml0PihzdHlsZSgpLT5ib3JkZXJMZWZ0
V2lkdGgoKSksIGxlZ2VuZC0+d2lkdGgoKSk7CisgICAgICAgIExheW91dFVuaXQgY2xpcFdpZHRo
ID0gc3RkOjptYXgoc3RhdGljX2Nhc3Q8TGF5b3V0VW5pdD4oc3R5bGUoKS0+Ym9yZGVyTGVmdFdp
ZHRoKCkpLCBsZWdlbmQtPndpZHRoKCkpOwogICAgICAgICBncmFwaGljc0NvbnRleHQtPmNsaXBP
dXQocGl4ZWxTbmFwcGVkSW50UmVjdChjbGlwTGVmdCwgcGFpbnRSZWN0LnkoKSArIGxlZ2VuZC0+
eSgpLCBjbGlwV2lkdGgsIGxlZ2VuZC0+aGVpZ2h0KCkpKTsKICAgICB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGbG93VGhyZWFkLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGbG93VGhyZWFkLmNwcAppbmRleCBhOThkYzkzZWY0YjZj
MThmMzY3MDJkNzkxMTRlOTQ3NmY1NGMxYWIxLi5lYzhkODNkODI0M2E0MDlhNjNhZWI2MTU4ODI3
MGViOWZlZmQzYmUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
Rmxvd1RocmVhZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZsb3dU
aHJlYWQuY3BwCkBAIC0zNjgsNyArMzY4LDcgQEAgdm9pZCBSZW5kZXJGbG93VGhyZWFkOjp1cGRh
dGVMb2dpY2FsV2lkdGgoKQogICAgIGZvciAoUmVuZGVyUmVnaW9uTGlzdDo6aXRlcmF0b3IgaXRl
ciA9IG1fcmVnaW9uTGlzdC5iZWdpbigpOyBpdGVyICE9IG1fcmVnaW9uTGlzdC5lbmQoKTsgKytp
dGVyKSB7CiAgICAgICAgIFJlbmRlclJlZ2lvbiogcmVnaW9uID0gKml0ZXI7CiAgICAgICAgIEFT
U0VSVCghcmVnaW9uLT5uZWVkc0xheW91dCgpIHx8IHJlZ2lvbi0+aXNSZW5kZXJSZWdpb25TZXQo
KSk7Ci0gICAgICAgIGxvZ2ljYWxXaWR0aCA9IG1heChyZWdpb24tPnBhZ2VMb2dpY2FsV2lkdGgo
KSwgbG9naWNhbFdpZHRoKTsKKyAgICAgICAgbG9naWNhbFdpZHRoID0gc3RkOjptYXgocmVnaW9u
LT5wYWdlTG9naWNhbFdpZHRoKCksIGxvZ2ljYWxXaWR0aCk7CiAgICAgfQogICAgIHNldExvZ2lj
YWxXaWR0aChsb2dpY2FsV2lkdGgpOwogCkBAIC0xMTMyLDcgKzExMzIsNyBAQCBib29sIFJlbmRl
ckZsb3dUaHJlYWQ6OmFkZEZvcmNlZFJlZ2lvbkJyZWFrKGNvbnN0IFJlbmRlckJsb2NrKiBibG9j
aywgTGF5b3V0VW5pdAogICAgICAgICB1cGRhdGVSZWdpb25zRmxvd1RocmVhZFBvcnRpb25SZWN0
KCk7CiAKICAgICBpZiAob2Zmc2V0QnJlYWtBZGp1c3RtZW50KQotICAgICAgICAqb2Zmc2V0QnJl
YWtBZGp1c3RtZW50ID0gbWF4PExheW91dFVuaXQ+KDAsIGN1cnJlbnRSZWdpb25PZmZzZXRJbkZs
b3dUaHJlYWQgLSBvZmZzZXRCcmVha0luRmxvd1RocmVhZCk7CisgICAgICAgICpvZmZzZXRCcmVh
a0FkanVzdG1lbnQgPSBzdGQ6Om1heDxMYXlvdXRVbml0PigwLCBjdXJyZW50UmVnaW9uT2Zmc2V0
SW5GbG93VGhyZWFkIC0gb2Zmc2V0QnJlYWtJbkZsb3dUaHJlYWQpOwogCiAgICAgcmV0dXJuIGhh
c0NvbXB1dGVkQXV0b0hlaWdodDsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJGcmFtZUJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckZyYW1lQmFzZS5jcHAKaW5kZXggODFjMzAwNzI5YThlMGUyY2NhNGY2YmNlZGNhMDg3ZDc2ZGYz
OTA1OC4uZjUwNWQzZTYyYWYyYzRkOWY3NmQ4ZTU5OWRlOWM3NWI0N2U0NDU1OCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZyYW1lQmFzZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZyYW1lQmFzZS5jcHAKQEAgLTgwLDcgKzgwLDcg
QEAgdm9pZCBSZW5kZXJGcmFtZUJhc2U6OmxheW91dFdpdGhGbGF0dGVuaW5nKGJvb2wgaGFzRml4
ZWRXaWR0aCwgYm9vbCBoYXNGaXhlZEhlaWcKIAogICAgIC8vIG1ha2Ugc3VyZSBtaW5pbXVtIHBy
ZWZlcnJlZCB3aWR0aCBpcyBlbmZvcmNlZAogICAgIGlmIChpc1Njcm9sbGFibGUgfHwgIWhhc0Zp
eGVkV2lkdGgpIHsKLSAgICAgICAgc2V0V2lkdGgobWF4KHdpZHRoKCksIGNoaWxkUm9vdC0+bWlu
UHJlZmVycmVkTG9naWNhbFdpZHRoKCkgKyBoQm9yZGVyKSk7CisgICAgICAgIHNldFdpZHRoKHN0
ZDo6bWF4KHdpZHRoKCksIGNoaWxkUm9vdC0+bWluUHJlZmVycmVkTG9naWNhbFdpZHRoKCkgKyBo
Qm9yZGVyKSk7CiAgICAgICAgIC8vIHVwZGF0ZSBhZ2FpbiB0byBwYXNzIHRoZSBuZXcgd2lkdGgg
dG8gdGhlIGNoaWxkIGZyYW1lCiAgICAgICAgIHVwZGF0ZVdpZGdldFBvc2l0aW9uKCk7CiAgICAg
ICAgIGNoaWxkRnJhbWVWaWV3LT5sYXlvdXQoKTsKQEAgLTg4LDkgKzg4LDkgQEAgdm9pZCBSZW5k
ZXJGcmFtZUJhc2U6OmxheW91dFdpdGhGbGF0dGVuaW5nKGJvb2wgaGFzRml4ZWRXaWR0aCwgYm9v
bCBoYXNGaXhlZEhlaWcKIAogICAgIC8vIGV4cGFuZCB0aGUgZnJhbWUgYnkgc2V0dGluZyBmcmFt
ZSBoZWlnaHQgPSBjb250ZW50IGhlaWdodAogICAgIGlmIChpc1Njcm9sbGFibGUgfHwgIWhhc0Zp
eGVkSGVpZ2h0IHx8IGNoaWxkUm9vdC0+aXNGcmFtZVNldCgpKQotICAgICAgICBzZXRIZWlnaHQo
bWF4PExheW91dFVuaXQ+KGhlaWdodCgpLCBjaGlsZEZyYW1lVmlldy0+Y29udGVudHNIZWlnaHQo
KSArIHZCb3JkZXIpKTsKKyAgICAgICAgc2V0SGVpZ2h0KHN0ZDo6bWF4PExheW91dFVuaXQ+KGhl
aWdodCgpLCBjaGlsZEZyYW1lVmlldy0+Y29udGVudHNIZWlnaHQoKSArIHZCb3JkZXIpKTsKICAg
ICBpZiAoaXNTY3JvbGxhYmxlIHx8ICFoYXNGaXhlZFdpZHRoIHx8IGNoaWxkUm9vdC0+aXNGcmFt
ZVNldCgpKQotICAgICAgICBzZXRXaWR0aChtYXg8TGF5b3V0VW5pdD4od2lkdGgoKSwgY2hpbGRG
cmFtZVZpZXctPmNvbnRlbnRzV2lkdGgoKSArIGhCb3JkZXIpKTsKKyAgICAgICAgc2V0V2lkdGgo
c3RkOjptYXg8TGF5b3V0VW5pdD4od2lkdGgoKSwgY2hpbGRGcmFtZVZpZXctPmNvbnRlbnRzV2lk
dGgoKSArIGhCb3JkZXIpKTsKIAogICAgIHVwZGF0ZVdpZGdldFBvc2l0aW9uKCk7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGcmFtZVNldC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRnJhbWVTZXQuY3BwCmluZGV4IDJlNWRiMGNjNDg2
OWY1YzM3N2NiOTcwYzJiZDU1NjNhMmQ2YTEwN2MuLjA3NWUzMTAwMzBhMDhhYTNjNzZmZmIxYzU0
MDk1MGRlYWRkODQyMTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJGcmFtZVNldC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZyYW1l
U2V0LmNwcApAQCAtMTczLDcgKzE3Myw3IEBAIHZvaWQgUmVuZGVyRnJhbWVTZXQ6OkdyaWRBeGlz
OjpyZXNpemUoaW50IHNpemUpCiAKIHZvaWQgUmVuZGVyRnJhbWVTZXQ6OmxheU91dEF4aXMoR3Jp
ZEF4aXMmIGF4aXMsIGNvbnN0IExlbmd0aCogZ3JpZCwgaW50IGF2YWlsYWJsZUxlbikKIHsKLSAg
ICBhdmFpbGFibGVMZW4gPSBtYXgoYXZhaWxhYmxlTGVuLCAwKTsKKyAgICBhdmFpbGFibGVMZW4g
PSBzdGQ6Om1heChhdmFpbGFibGVMZW4sIDApOwogCiAgICAgaW50KiBncmlkTGF5b3V0ID0gYXhp
cy5tX3NpemVzLmRhdGEoKTsKIApAQCAtMTk4LDcgKzE5OCw3IEBAIHZvaWQgUmVuZGVyRnJhbWVT
ZXQ6OmxheU91dEF4aXMoR3JpZEF4aXMmIGF4aXMsIGNvbnN0IExlbmd0aCogZ3JpZCwgaW50IGF2
YWlsYWJsCiAgICAgICAgIC8vIENvdW50IHRoZSB0b3RhbCBsZW5ndGggb2YgYWxsIG9mIHRoZSBm
aXhlZCBjb2x1bW5zL3Jvd3MgLT4gdG90YWxGaXhlZAogICAgICAgICAvLyBDb3VudCB0aGUgbnVt
YmVyIG9mIGNvbHVtbnMvcm93cyB3aGljaCBhcmUgZml4ZWQgLT4gY291bnRGaXhlZAogICAgICAg
ICBpZiAoZ3JpZFtpXS5pc0ZpeGVkKCkpIHsKLSAgICAgICAgICAgIGdyaWRMYXlvdXRbaV0gPSBt
YXgoZ3JpZFtpXS5pbnRWYWx1ZSgpLCAwKTsKKyAgICAgICAgICAgIGdyaWRMYXlvdXRbaV0gPSBz
dGQ6Om1heChncmlkW2ldLmludFZhbHVlKCksIDApOwogICAgICAgICAgICAgdG90YWxGaXhlZCAr
PSBncmlkTGF5b3V0W2ldOwogICAgICAgICAgICAgY291bnRGaXhlZCsrOwogICAgICAgICB9CkBA
IC0yMDYsNyArMjA2LDcgQEAgdm9pZCBSZW5kZXJGcmFtZVNldDo6bGF5T3V0QXhpcyhHcmlkQXhp
cyYgYXhpcywgY29uc3QgTGVuZ3RoKiBncmlkLCBpbnQgYXZhaWxhYmwKICAgICAgICAgLy8gQ291
bnQgdGhlIHRvdGFsIHBlcmNlbnRhZ2Ugb2YgYWxsIG9mIHRoZSBwZXJjZW50YWdlIGNvbHVtbnMv
cm93cyAtPiB0b3RhbFBlcmNlbnQKICAgICAgICAgLy8gQ291bnQgdGhlIG51bWJlciBvZiBjb2x1
bW5zL3Jvd3Mgd2hpY2ggYXJlIHBlcmNlbnRhZ2VzIC0+IGNvdW50UGVyY2VudAogICAgICAgICBp
ZiAoZ3JpZFtpXS5pc1BlcmNlbnQoKSkgewotICAgICAgICAgICAgZ3JpZExheW91dFtpXSA9IG1h
eChpbnRWYWx1ZUZvckxlbmd0aChncmlkW2ldLCBhdmFpbGFibGVMZW4pLCAwKTsKKyAgICAgICAg
ICAgIGdyaWRMYXlvdXRbaV0gPSBzdGQ6Om1heChpbnRWYWx1ZUZvckxlbmd0aChncmlkW2ldLCBh
dmFpbGFibGVMZW4pLCAwKTsKICAgICAgICAgICAgIHRvdGFsUGVyY2VudCArPSBncmlkTGF5b3V0
W2ldOwogICAgICAgICAgICAgY291bnRQZXJjZW50Kys7CiAgICAgICAgIH0KQEAgLTIxNCw3ICsy
MTQsNyBAQCB2b2lkIFJlbmRlckZyYW1lU2V0OjpsYXlPdXRBeGlzKEdyaWRBeGlzJiBheGlzLCBj
b25zdCBMZW5ndGgqIGdyaWQsIGludCBhdmFpbGFibAogICAgICAgICAvLyBDb3VudCB0aGUgdG90
YWwgcmVsYXRpdmUgb2YgYWxsIHRoZSByZWxhdGl2ZSBjb2x1bW5zL3Jvd3MgLT4gdG90YWxSZWxh
dGl2ZQogICAgICAgICAvLyBDb3VudCB0aGUgbnVtYmVyIG9mIGNvbHVtbnMvcm93cyB3aGljaCBh
cmUgcmVsYXRpdmUgLT4gY291bnRSZWxhdGl2ZQogICAgICAgICBpZiAoZ3JpZFtpXS5pc1JlbGF0
aXZlKCkpIHsKLSAgICAgICAgICAgIHRvdGFsUmVsYXRpdmUgKz0gbWF4KGdyaWRbaV0uaW50VmFs
dWUoKSwgMSk7CisgICAgICAgICAgICB0b3RhbFJlbGF0aXZlICs9IHN0ZDo6bWF4KGdyaWRbaV0u
aW50VmFsdWUoKSwgMSk7CiAgICAgICAgICAgICBjb3VudFJlbGF0aXZlKys7CiAgICAgICAgIH0g
ICAgICAgICAgICAKICAgICB9CkBAIC0yNTksNyArMjU5LDcgQEAgdm9pZCBSZW5kZXJGcmFtZVNl
dDo6bGF5T3V0QXhpcyhHcmlkQXhpcyYgYXhpcywgY29uc3QgTGVuZ3RoKiBncmlkLCBpbnQgYXZh
aWxhYmwKIAogICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IGdyaWRMZW47ICsraSkgewogICAg
ICAgICAgICAgaWYgKGdyaWRbaV0uaXNSZWxhdGl2ZSgpKSB7Ci0gICAgICAgICAgICAgICAgZ3Jp
ZExheW91dFtpXSA9IChtYXgoZ3JpZFtpXS5pbnRWYWx1ZSgpLCAxKSAqIHJlbWFpbmluZ1JlbGF0
aXZlKSAvIHRvdGFsUmVsYXRpdmU7CisgICAgICAgICAgICAgICAgZ3JpZExheW91dFtpXSA9IChz
dGQ6Om1heChncmlkW2ldLmludFZhbHVlKCksIDEpICogcmVtYWluaW5nUmVsYXRpdmUpIC8gdG90
YWxSZWxhdGl2ZTsKICAgICAgICAgICAgICAgICByZW1haW5pbmdMZW4gLT0gZ3JpZExheW91dFtp
XTsKICAgICAgICAgICAgICAgICBsYXN0UmVsYXRpdmUgPSBpOwogICAgICAgICAgICAgfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNsaWRlci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU2xpZGVyLmNwcAppbmRleCAxZDk0ODUwOThhNjgy
YWE3NDkyZGRkZGQ0MmM0MjU5MzQ2ZDAwMTQ1Li5iNTA1ODhlNmM1MTgyNThiNmNlOTc1MzZhMGU2
OTU2Mzc0NmZhZDRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
U2xpZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU2xpZGVyLmNw
cApAQCAtNDMsOCArNDMsNiBAQAogI2luY2x1ZGUgPHd0Zi9NYXRoRXh0cmFzLmg+CiAjaW5jbHVk
ZSA8d3RmL1N0YWNrU3RhdHMuaD4KIAotdXNpbmcgc3RkOjptaW47Ci0KIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAogY29uc3QgaW50IFJlbmRlclNsaWRlcjo6ZGVmYXVsdFRyYWNrTGVuZ3RoID0gMTI5
OwpAQCAtOTQsMTMgKzkyLDEzIEBAIHZvaWQgUmVuZGVyU2xpZGVyOjpjb21wdXRlUHJlZmVycmVk
TG9naWNhbFdpZHRocygpCiAgICAgICAgIGNvbXB1dGVJbnRyaW5zaWNMb2dpY2FsV2lkdGhzKG1f
bWluUHJlZmVycmVkTG9naWNhbFdpZHRoLCBtX21heFByZWZlcnJlZExvZ2ljYWxXaWR0aCk7CiAK
ICAgICBpZiAoc3R5bGUoKS0+bWluV2lkdGgoKS5pc0ZpeGVkKCkgJiYgc3R5bGUoKS0+bWluV2lk
dGgoKS52YWx1ZSgpID4gMCkgewotICAgICAgICBtX21heFByZWZlcnJlZExvZ2ljYWxXaWR0aCA9
IG1heChtX21heFByZWZlcnJlZExvZ2ljYWxXaWR0aCwgYWRqdXN0Q29udGVudEJveExvZ2ljYWxX
aWR0aEZvckJveFNpemluZyhzdHlsZSgpLT5taW5XaWR0aCgpLnZhbHVlKCkpKTsKLSAgICAgICAg
bV9taW5QcmVmZXJyZWRMb2dpY2FsV2lkdGggPSBtYXgobV9taW5QcmVmZXJyZWRMb2dpY2FsV2lk
dGgsIGFkanVzdENvbnRlbnRCb3hMb2dpY2FsV2lkdGhGb3JCb3hTaXppbmcoc3R5bGUoKS0+bWlu
V2lkdGgoKS52YWx1ZSgpKSk7CisgICAgICAgIG1fbWF4UHJlZmVycmVkTG9naWNhbFdpZHRoID0g
c3RkOjptYXgobV9tYXhQcmVmZXJyZWRMb2dpY2FsV2lkdGgsIGFkanVzdENvbnRlbnRCb3hMb2dp
Y2FsV2lkdGhGb3JCb3hTaXppbmcoc3R5bGUoKS0+bWluV2lkdGgoKS52YWx1ZSgpKSk7CisgICAg
ICAgIG1fbWluUHJlZmVycmVkTG9naWNhbFdpZHRoID0gc3RkOjptYXgobV9taW5QcmVmZXJyZWRM
b2dpY2FsV2lkdGgsIGFkanVzdENvbnRlbnRCb3hMb2dpY2FsV2lkdGhGb3JCb3hTaXppbmcoc3R5
bGUoKS0+bWluV2lkdGgoKS52YWx1ZSgpKSk7CiAgICAgfQogCiAgICAgaWYgKHN0eWxlKCktPm1h
eFdpZHRoKCkuaXNGaXhlZCgpKSB7Ci0gICAgICAgIG1fbWF4UHJlZmVycmVkTG9naWNhbFdpZHRo
ID0gbWluKG1fbWF4UHJlZmVycmVkTG9naWNhbFdpZHRoLCBhZGp1c3RDb250ZW50Qm94TG9naWNh
bFdpZHRoRm9yQm94U2l6aW5nKHN0eWxlKCktPm1heFdpZHRoKCkudmFsdWUoKSkpOwotICAgICAg
ICBtX21pblByZWZlcnJlZExvZ2ljYWxXaWR0aCA9IG1pbihtX21pblByZWZlcnJlZExvZ2ljYWxX
aWR0aCwgYWRqdXN0Q29udGVudEJveExvZ2ljYWxXaWR0aEZvckJveFNpemluZyhzdHlsZSgpLT5t
YXhXaWR0aCgpLnZhbHVlKCkpKTsKKyAgICAgICAgbV9tYXhQcmVmZXJyZWRMb2dpY2FsV2lkdGgg
PSBzdGQ6Om1pbihtX21heFByZWZlcnJlZExvZ2ljYWxXaWR0aCwgYWRqdXN0Q29udGVudEJveExv
Z2ljYWxXaWR0aEZvckJveFNpemluZyhzdHlsZSgpLT5tYXhXaWR0aCgpLnZhbHVlKCkpKTsKKyAg
ICAgICAgbV9taW5QcmVmZXJyZWRMb2dpY2FsV2lkdGggPSBzdGQ6Om1pbihtX21pblByZWZlcnJl
ZExvZ2ljYWxXaWR0aCwgYWRqdXN0Q29udGVudEJveExvZ2ljYWxXaWR0aEZvckJveFNpemluZyhz
dHlsZSgpLT5tYXhXaWR0aCgpLnZhbHVlKCkpKTsKICAgICB9CiAKICAgICBMYXlvdXRVbml0IHRv
QWRkID0gYm9yZGVyQW5kUGFkZGluZ1dpZHRoKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVDZWxsLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyVGFibGVDZWxsLmgKaW5kZXggMDExMTZiMmM1MGNhYjkwNmMzNjc0MjU3NzFkNTM2Nzkw
NDM1NDAyYy4uNWVhMjQ5ZTI4MjlkODM4NGFhYmMwZDhiMjk5OTQ5ZTg1ZGQ4MDIyNiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlQ2VsbC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZUNlbGwuaApAQCAtMTA0LDcgKzEwNCw3
IEBAIHB1YmxpYzoKICAgICAgICAgLy8gQ2FsbCBjb21wdXRlZENTU1BhZGRpbmcqIGRpcmVjdGx5
IHRvIGF2b2lkIGluY2x1ZGluZyBpbXBsaWNpdFBhZGRpbmcuCiAgICAgICAgIGlmICghZG9jdW1l
bnQoKS5pblF1aXJrc01vZGUoKSAmJiBzdHlsZSgpLT5ib3hTaXppbmcoKSAhPSBCT1JERVJfQk9Y
KQogICAgICAgICAgICAgc3R5bGVMb2dpY2FsSGVpZ2h0ICs9IChjb21wdXRlZENTU1BhZGRpbmdC
ZWZvcmUoKSArIGNvbXB1dGVkQ1NTUGFkZGluZ0FmdGVyKCkpLmZsb29yKCkgKyBib3JkZXJCZWZv
cmUoKSArIGJvcmRlckFmdGVyKCk7Ci0gICAgICAgIHJldHVybiBtYXgoc3R5bGVMb2dpY2FsSGVp
Z2h0LCBhZGp1c3RlZExvZ2ljYWxIZWlnaHQpOworICAgICAgICByZXR1cm4gc3RkOjptYXgoc3R5
bGVMb2dpY2FsSGVpZ2h0LCBhZGp1c3RlZExvZ2ljYWxIZWlnaHQpOwogICAgIH0KIAogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVHJlZUFzVGV4dC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVHJlZUFzVGV4dC5jcHAKaW5kZXggN2RmYWY0
YmEwZTRkNjg1YWNkNDlhNzFhMTI2ZjIzM2QwYTk0MGI4YS4uMmIyYmU4MmE3OWIyODFmNjU2NWYx
OGRkZmM1YjQ2NmVlODQ3MjFlYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlclRyZWVBc1RleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJUcmVlQXNUZXh0LmNwcApAQCAtNzMwLDggKzczMCw4IEBAIHN0YXRpYyB2b2lkIHdyaXRlTGF5
ZXJzKFRleHRTdHJlYW0mIHRzLCBjb25zdCBSZW5kZXJMYXllciogcm9vdExheWVyLCBSZW5kZXJM
YXllCiAgICAgLy8gRklYTUU6IEFwcGx5IG92ZXJmbG93IHRvIHRoZSByb290IGxheWVyIHRvIG5v
dCBicmVhayBldmVyeSB0ZXN0LiAgQ29tcGxldGUgaGFjay4gIFNpZ2guCiAgICAgTGF5b3V0UmVj
dCBwYWludERpcnR5UmVjdChwYWludFJlY3QpOwogICAgIGlmIChyb290TGF5ZXIgPT0gbCkgewot
ICAgICAgICBwYWludERpcnR5UmVjdC5zZXRXaWR0aChtYXg8TGF5b3V0VW5pdD4ocGFpbnREaXJ0
eVJlY3Qud2lkdGgoKSwgcm9vdExheWVyLT5yZW5kZXJCb3goKS0+bGF5b3V0T3ZlcmZsb3dSZWN0
KCkubWF4WCgpKSk7Ci0gICAgICAgIHBhaW50RGlydHlSZWN0LnNldEhlaWdodChtYXg8TGF5b3V0
VW5pdD4ocGFpbnREaXJ0eVJlY3QuaGVpZ2h0KCksIHJvb3RMYXllci0+cmVuZGVyQm94KCktPmxh
eW91dE92ZXJmbG93UmVjdCgpLm1heFkoKSkpOworICAgICAgICBwYWludERpcnR5UmVjdC5zZXRX
aWR0aChzdGQ6Om1heDxMYXlvdXRVbml0PihwYWludERpcnR5UmVjdC53aWR0aCgpLCByb290TGF5
ZXItPnJlbmRlckJveCgpLT5sYXlvdXRPdmVyZmxvd1JlY3QoKS5tYXhYKCkpKTsKKyAgICAgICAg
cGFpbnREaXJ0eVJlY3Quc2V0SGVpZ2h0KHN0ZDo6bWF4PExheW91dFVuaXQ+KHBhaW50RGlydHlS
ZWN0LmhlaWdodCgpLCByb290TGF5ZXItPnJlbmRlckJveCgpLT5sYXlvdXRPdmVyZmxvd1JlY3Qo
KS5tYXhZKCkpKTsKICAgICAgICAgbC0+c2V0U2l6ZShsLT5zaXplKCkuZXhwYW5kZWRUbyhwaXhl
bFNuYXBwZWRJbnRTaXplKG1heExheW91dE92ZXJmbG93KGwtPnJlbmRlckJveCgpKSwgTGF5b3V0
UG9pbnQoMCwgMCkpKSk7CiAgICAgfQogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1Jvb3RJbmxpbmVCb3guaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9Sb290
SW5saW5lQm94LmgKaW5kZXggYTliYjViMTc0NDIyZmFmM2QwMTIwMTFkMGI5YjVhNjdlMDI1YTY1
Mi4uZjljYWFmZTgyODBhOWM5OGI2MzExZjY0YzJlZGU3NDI3Mjc3ZmE5YiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jvb3RJbmxpbmVCb3guaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUm9vdElubGluZUJveC5oCkBAIC03MSwxMCArNzEsMTAgQEAgcHVibGlj
OgogCiAgICAgTGF5b3V0VW5pdCBzZWxlY3Rpb25Ub3AoKSBjb25zdDsKICAgICBMYXlvdXRVbml0
IHNlbGVjdGlvbkJvdHRvbSgpIGNvbnN0OwotICAgIExheW91dFVuaXQgc2VsZWN0aW9uSGVpZ2h0
KCkgY29uc3QgeyByZXR1cm4gbWF4PExheW91dFVuaXQ+KDAsIHNlbGVjdGlvbkJvdHRvbSgpIC0g
c2VsZWN0aW9uVG9wKCkpOyB9CisgICAgTGF5b3V0VW5pdCBzZWxlY3Rpb25IZWlnaHQoKSBjb25z
dCB7IHJldHVybiBzdGQ6Om1heDxMYXlvdXRVbml0PigwLCBzZWxlY3Rpb25Cb3R0b20oKSAtIHNl
bGVjdGlvblRvcCgpKTsgfQogCiAgICAgTGF5b3V0VW5pdCBzZWxlY3Rpb25Ub3BBZGp1c3RlZEZv
clByZWNlZGluZ0Jsb2NrKCkgY29uc3Q7Ci0gICAgTGF5b3V0VW5pdCBzZWxlY3Rpb25IZWlnaHRB
ZGp1c3RlZEZvclByZWNlZGluZ0Jsb2NrKCkgY29uc3QgeyByZXR1cm4gbWF4PExheW91dFVuaXQ+
KDAsIHNlbGVjdGlvbkJvdHRvbSgpIC0gc2VsZWN0aW9uVG9wQWRqdXN0ZWRGb3JQcmVjZWRpbmdC
bG9jaygpKTsgfQorICAgIExheW91dFVuaXQgc2VsZWN0aW9uSGVpZ2h0QWRqdXN0ZWRGb3JQcmVj
ZWRpbmdCbG9jaygpIGNvbnN0IHsgcmV0dXJuIHN0ZDo6bWF4PExheW91dFVuaXQ+KDAsIHNlbGVj
dGlvbkJvdHRvbSgpIC0gc2VsZWN0aW9uVG9wQWRqdXN0ZWRGb3JQcmVjZWRpbmdCbG9jaygpKTsg
fQogCiAgICAgaW50IGJsb2NrRGlyZWN0aW9uUG9pbnRJbkxpbmUoKSBjb25zdDsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxSb3cuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxSb3cuY3BwCmlu
ZGV4IGQ2OGVlYWU5MzVkYTUzYTdmM2QzYjQ5NzE0MjdiZGY2NGZiYmJhMjkuLmQ4ZDQ1ZTNkYmM1
ZTYxZGZiNzFhZGM4ZjlmYWIwZGZlMjBmMWI5MDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MUm93LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFJvdy5jcHAKQEAgLTY0LDcgKzY0LDcgQEAg
dm9pZCBSZW5kZXJNYXRoTUxSb3c6OmxheW91dCgpCiAgICAgICAgIGlmIChjaGlsZC0+aXNSZW5k
ZXJNYXRoTUxCbG9jaygpICYmIHRvUmVuZGVyTWF0aE1MQmxvY2soY2hpbGQpLT51bmVtYmVsbGlz
aGVkT3BlcmF0b3IoKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICBpZiAoY2hpbGQt
PmlzQm94KCkpCi0gICAgICAgICAgICBzdHJldGNoTG9naWNhbEhlaWdodCA9IG1heDxpbnQ+KHN0
cmV0Y2hMb2dpY2FsSGVpZ2h0LCByb3VuZFRvSW50KHRvUmVuZGVyQm94KGNoaWxkKS0+bG9naWNh
bEhlaWdodCgpKSk7CisgICAgICAgICAgICBzdHJldGNoTG9naWNhbEhlaWdodCA9IHN0ZDo6bWF4
PGludD4oc3RyZXRjaExvZ2ljYWxIZWlnaHQsIHJvdW5kVG9JbnQodG9SZW5kZXJCb3goY2hpbGQp
LT5sb2dpY2FsSGVpZ2h0KCkpKTsKICAgICB9CiAgICAgaWYgKCFzdHJldGNoTG9naWNhbEhlaWdo
dCkKICAgICAgICAgc3RyZXRjaExvZ2ljYWxIZWlnaHQgPSBzdHlsZSgpLT5mb250U2l6ZSgpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxT
Y3JpcHRzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1M
U2NyaXB0cy5jcHAKaW5kZXggYTJkMzMwOTAxMDg4NjM3YTA4OGYxMTFhNjhiNjY2ZWQzNzA2M2Yx
Ny4uM2YwNTdiMjc0ZTQzNWUzOTYyZjk3NzE3NjlhN2ZkMTM0NDRkNjdkOSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxTY3JpcHRzLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFNjcmlwdHMu
Y3BwCkBAIC0zMTYsOSArMzE2LDkgQEAgdm9pZCBSZW5kZXJNYXRoTUxTY3JpcHRzOjpsYXlvdXQo
KQogICAgICAgICAgICAgTGF5b3V0VW5pdCBzdXBlcnNjcmlwdEJhc2VsaW5lID0gc3VwZXJzY3Jp
cHQtPmZpcnN0TGluZUJhc2VsaW5lKCk7CiAgICAgICAgICAgICBpZiAoc3VwZXJzY3JpcHRCYXNl
bGluZSA9PSAtMSkKICAgICAgICAgICAgICAgICBzdXBlcnNjcmlwdEJhc2VsaW5lID0gc3VwZXJz
Y3JpcHRIZWlnaHQ7Ci0gICAgICAgICAgICBMYXlvdXRVbml0IG1pbkJhc2VsaW5lID0gbWF4PExh
eW91dFVuaXQ+KGZvbnRTaXplIC8gMyArIDEgKyBzdXBlcnNjcmlwdEJhc2VsaW5lLCBzdXBlcnNj
cmlwdEhlaWdodCArIGF4aXMgKyBzdXBlcnNjcmlwdFNoaWZ0VmFsdWUpOworICAgICAgICAgICAg
TGF5b3V0VW5pdCBtaW5CYXNlbGluZSA9IHN0ZDo6bWF4PExheW91dFVuaXQ+KGZvbnRTaXplIC8g
MyArIDEgKyBzdXBlcnNjcmlwdEJhc2VsaW5lLCBzdXBlcnNjcmlwdEhlaWdodCArIGF4aXMgKyBz
dXBlcnNjcmlwdFNoaWZ0VmFsdWUpOwogCi0gICAgICAgICAgICB0b3BQYWRkaW5nID0gbWF4PExh
eW91dFVuaXQ+KHRvcFBhZGRpbmcsIG1pbkJhc2VsaW5lIC0gYmFzZUJhc2VsaW5lKTsKKyAgICAg
ICAgICAgIHRvcFBhZGRpbmcgPSBzdGQ6Om1heDxMYXlvdXRVbml0Pih0b3BQYWRkaW5nLCBtaW5C
YXNlbGluZSAtIGJhc2VCYXNlbGluZSk7CiAgICAgICAgIH0KIAogICAgICAgICBpZiAoUmVuZGVy
Qm94KiBzdWJzY3JpcHQgPSBtX2tpbmQgPT0gU3VwZXIgPyAwIDogc3ViU3VwUGFpci0+Zmlyc3RD
aGlsZEJveCgpKSB7CkBAIC0zMjgsOSArMzI4LDkgQEAgdm9pZCBSZW5kZXJNYXRoTUxTY3JpcHRz
OjpsYXlvdXQoKQogICAgICAgICAgICAgICAgIHN1YnNjcmlwdEJhc2VsaW5lID0gc3Vic2NyaXB0
SGVpZ2h0OwogICAgICAgICAgICAgTGF5b3V0VW5pdCBiYXNlRXh0ZW5kVW5kZXJCYXNlbGluZSA9
IGJhc2VIZWlnaHQgLSBiYXNlQmFzZWxpbmU7CiAgICAgICAgICAgICBMYXlvdXRVbml0IHN1YnNj
cmlwdFVuZGVySXRzQmFzZWxpbmUgPSBzdWJzY3JpcHRIZWlnaHQgLSBzdWJzY3JpcHRCYXNlbGlu
ZTsKLSAgICAgICAgICAgIExheW91dFVuaXQgbWluRXh0ZW5kVW5kZXJCYXNlbGluZSA9IG1heDxM
YXlvdXRVbml0Pihmb250U2l6ZSAvIDUgKyAxICsgc3Vic2NyaXB0VW5kZXJJdHNCYXNlbGluZSwg
c3Vic2NyaXB0SGVpZ2h0ICsgc3Vic2NyaXB0U2hpZnRWYWx1ZSAtIGF4aXMpOworICAgICAgICAg
ICAgTGF5b3V0VW5pdCBtaW5FeHRlbmRVbmRlckJhc2VsaW5lID0gc3RkOjptYXg8TGF5b3V0VW5p
dD4oZm9udFNpemUgLyA1ICsgMSArIHN1YnNjcmlwdFVuZGVySXRzQmFzZWxpbmUsIHN1YnNjcmlw
dEhlaWdodCArIHN1YnNjcmlwdFNoaWZ0VmFsdWUgLSBheGlzKTsKIAotICAgICAgICAgICAgYm90
dG9tUGFkZGluZyA9IG1heDxMYXlvdXRVbml0Pihib3R0b21QYWRkaW5nLCBtaW5FeHRlbmRVbmRl
ckJhc2VsaW5lIC0gYmFzZUV4dGVuZFVuZGVyQmFzZWxpbmUpOworICAgICAgICAgICAgYm90dG9t
UGFkZGluZyA9IHN0ZDo6bWF4PExheW91dFVuaXQ+KGJvdHRvbVBhZGRpbmcsIG1pbkV4dGVuZFVu
ZGVyQmFzZWxpbmUgLSBiYXNlRXh0ZW5kVW5kZXJCYXNlbGluZSk7CiAgICAgICAgIH0KICAgICB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHls
ZS5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmgKaW5kZXgg
ZTlkN2JlNjgyYWQ1YmU3N2JlNDdjMWMwNGIwN2ZjY2M5NTVmODM0Zi4uNmEzNDE5ODJiMmJkYzc4
NjM1NzBiMWUzOGMxMjg3Y2IxZWRkYWJmMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3N0eWxlL1JlbmRlclN0eWxlLmgKQEAgLTEwMyw4ICsxMDMsNiBAQCB0ZW1wbGF0ZTx0eXBlbmFt
ZSBULCB0eXBlbmFtZSBVPiBpbmxpbmUgYm9vbCBjb21wYXJlRXF1YWwoY29uc3QgVCYgdCwgY29u
c3QgVSYgdQogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXVzaW5nIHN0ZDo6bWF4OwotCiAjaWYg
RU5BQkxFKENTU19GSUxURVJTKQogY2xhc3MgRmlsdGVyT3BlcmF0aW9uczsKICNlbmRpZgpAQCAt
NTI1LDcgKzUyMyw3IEBAIHB1YmxpYzoKICAgICB1bnNpZ25lZCBzaG9ydCBib3JkZXJTdGFydFdp
ZHRoKCkgY29uc3Q7CiAgICAgdW5zaWduZWQgc2hvcnQgYm9yZGVyRW5kV2lkdGgoKSBjb25zdDsK
IAotICAgIHVuc2lnbmVkIHNob3J0IG91dGxpbmVTaXplKCkgY29uc3QgeyByZXR1cm4gbWF4KDAs
IG91dGxpbmVXaWR0aCgpICsgb3V0bGluZU9mZnNldCgpKTsgfQorICAgIHVuc2lnbmVkIHNob3J0
IG91dGxpbmVTaXplKCkgY29uc3QgeyByZXR1cm4gc3RkOjptYXgoMCwgb3V0bGluZVdpZHRoKCkg
KyBvdXRsaW5lT2Zmc2V0KCkpOyB9CiAgICAgdW5zaWduZWQgc2hvcnQgb3V0bGluZVdpZHRoKCkg
Y29uc3QKICAgICB7CiAgICAgICAgIGlmIChtX2JhY2tncm91bmQtPm91dGxpbmUoKS5zdHlsZSgp
ID09IEJOT05FKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0
eWxlR2VuZXJhdGVkSW1hZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0
eWxlR2VuZXJhdGVkSW1hZ2UuY3BwCmluZGV4IDI3OGE4NTc3MDIxYTFiMjExODQ1MDAxNGU2M2E5
OWEwMmFkNjMxNTMuLmU0ZmM3MTIwZjlmNjg0NTAyOWFhZmM4Y2U4Yzk5NDljNjNjOWQwMGIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZUdlbmVyYXRlZElt
YWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVHZW5lcmF0
ZWRJbWFnZS5jcHAKQEAgLTU0LDEwICs1NCwxMCBAQCBMYXlvdXRTaXplIFN0eWxlR2VuZXJhdGVk
SW1hZ2U6OmltYWdlU2l6ZShjb25zdCBSZW5kZXJFbGVtZW50KiByZW5kZXJlciwgZmxvYXQgbQog
CiAgICAgICAgIC8vIERvbid0IGxldCBpbWFnZXMgdGhhdCBoYXZlIGEgd2lkdGgvaGVpZ2h0ID49
IDEgc2hyaW5rIGJlbG93IDEgd2hlbiB6b29tZWQuCiAgICAgICAgIGlmIChmaXhlZFNpemUud2lk
dGgoKSA+IDApCi0gICAgICAgICAgICB3aWR0aCA9IG1heDxMYXlvdXRVbml0PigxLCB3aWR0aCk7
CisgICAgICAgICAgICB3aWR0aCA9IHN0ZDo6bWF4PExheW91dFVuaXQ+KDEsIHdpZHRoKTsKIAog
ICAgICAgICBpZiAoZml4ZWRTaXplLmhlaWdodCgpID4gMCkKLSAgICAgICAgICAgIGhlaWdodCA9
IG1heDxMYXlvdXRVbml0PigxLCBoZWlnaHQpOworICAgICAgICAgICAgaGVpZ2h0ID0gc3RkOjpt
YXg8TGF5b3V0VW5pdD4oMSwgaGVpZ2h0KTsKIAogICAgICAgICByZXR1cm4gTGF5b3V0U2l6ZSh3
aWR0aCwgaGVpZ2h0KTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9T
dHlsZUZvbnRTaXplRnVuY3Rpb25zLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlRm9u
dFNpemVGdW5jdGlvbnMuY3BwCmluZGV4IDY4ZGRhNzE5OWVhMGIyNjM4YTkwZTUwZTk3NDRlOGFh
MTg0YTg5MjguLjBhYjNlMTYzZmIxYzU1OTJkNjQ1NzMzNjE0NjFiNmM0NTQzMWY1M2YgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlRm9udFNpemVGdW5jdGlvbnMuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlRm9udFNpemVGdW5jdGlvbnMuY3BwCkBAIC0x
NTcsOCArMTU3LDggQEAgZmxvYXQgZm9udFNpemVGb3JLZXl3b3JkKHVuc2lnbmVkIGtleXdvcmRJ
RCwgYm9vbCBzaG91bGRVc2VGaXhlZERlZmF1bHRTaXplLCBjb24KICAgICB9CiAKICAgICAvLyBW
YWx1ZSBpcyBvdXRzaWRlIHRoZSByYW5nZSBvZiB0aGUgdGFibGUuIEFwcGx5IHRoZSBzY2FsZSBm
YWN0b3IgaW5zdGVhZC4KLSAgICBmbG9hdCBtaW5Mb2dpY2FsU2l6ZSA9IG1heChzZXR0aW5ncy0+
bWluaW11bUxvZ2ljYWxGb250U2l6ZSgpLCAxKTsKLSAgICByZXR1cm4gbWF4KGZvbnRTaXplRmFj
dG9yc1trZXl3b3JkSUQgLSBDU1NWYWx1ZVh4U21hbGxdICogbWVkaXVtU2l6ZSwgbWluTG9naWNh
bFNpemUpOworICAgIGZsb2F0IG1pbkxvZ2ljYWxTaXplID0gc3RkOjptYXgoc2V0dGluZ3MtPm1p
bmltdW1Mb2dpY2FsRm9udFNpemUoKSwgMSk7CisgICAgcmV0dXJuIHN0ZDo6bWF4KGZvbnRTaXpl
RmFjdG9yc1trZXl3b3JkSUQgLSBDU1NWYWx1ZVh4U21hbGxdICogbWVkaXVtU2l6ZSwgbWluTG9n
aWNhbFNpemUpOwogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvc3ZnL1NWR1NWR0VsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1NW
R0VsZW1lbnQuY3BwCmluZGV4IGE0MGI5NTk2YzkyNzM3MGU4ZWU4OGFlZDE4ZjVjNjkyNjM5NjAw
NGYuLjg1YjhhNjNkMzVlNDMwYjQ1OTY4MWRkN2U1NWEzMWExNzhhYjMyOTMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTVkdFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHU1ZHRWxlbWVudC5jcHAKQEAgLTUzNSw3ICs1MzUsNyBAQCB2b2lkIFNWR1NWR0Vs
ZW1lbnQ6OnNldEN1cnJlbnRUaW1lKGZsb2F0IHNlY29uZHMpCiB7CiAgICAgaWYgKHN0ZDo6aXNu
YW4oc2Vjb25kcykpCiAgICAgICAgIHJldHVybjsKLSAgICBzZWNvbmRzID0gbWF4KHNlY29uZHMs
IDAuMGYpOworICAgIHNlY29uZHMgPSBzdGQ6Om1heChzZWNvbmRzLCAwLjBmKTsKICAgICBtX3Rp
bWVDb250YWluZXItPnNldEVsYXBzZWQoc2Vjb25kcyk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViRnJhbWVWaWV3Lm1tIGIvU291cmNlL1dlYktpdC9tYWMv
V2ViVmlldy9XZWJGcmFtZVZpZXcubW0KaW5kZXggNmNlMGYzYTI3YTM1ZjMwYTliOWI5NmE3ZGVj
ODIyYjhiZDUxNWRmMS4uZjlmYzEzOTIwODMzNjBkYzU4NjcwNzVmNmUwYzYyYjdiMDA2MmIwMSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJGcmFtZVZpZXcubW0KKysr
IGIvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJGcmFtZVZpZXcubW0KQEAgLTIxNiw3ICsy
MTYsNyBAQCBlbnVtIHsKIC0gKGZsb2F0KV92ZXJ0aWNhbFBhZ2VTY3JvbGxEaXN0YW5jZQogewog
ICAgIGZsb2F0IGhlaWdodCA9IFtbc2VsZiBfY29udGVudFZpZXddIGJvdW5kc10uc2l6ZS5oZWln
aHQ7Ci0gICAgcmV0dXJuIG1heDxmbG9hdD4oaGVpZ2h0ICogU2Nyb2xsYmFyOjptaW5GcmFjdGlv
blRvU3RlcFdoZW5QYWdpbmcoKSwgaGVpZ2h0IC0gU2Nyb2xsYmFyOjptYXhPdmVybGFwQmV0d2Vl
blBhZ2VzKCkpOworICAgIHJldHVybiBzdGQ6Om1heDxmbG9hdD4oaGVpZ2h0ICogU2Nyb2xsYmFy
OjptaW5GcmFjdGlvblRvU3RlcFdoZW5QYWdpbmcoKSwgaGVpZ2h0IC0gU2Nyb2xsYmFyOjptYXhP
dmVybGFwQmV0d2VlblBhZ2VzKCkpOwogfQogCiBzdGF0aWMgaW5saW5lIHZvaWQgYWRkVHlwZXNG
cm9tQ2xhc3MoTlNNdXRhYmxlRGljdGlvbmFyeSAqYWxsVHlwZXMsIENsYXNzIG9iakNDbGFzcywg
TlNBcnJheSAqc3VwcG9ydFR5cGVzKQpAQCAtNjk4LDcgKzY5OCw3IEBAIHN0YXRpYyBpbmxpbmUg
dm9pZCBhZGRUeXBlc0Zyb21DbGFzcyhOU011dGFibGVEaWN0aW9uYXJ5ICphbGxUeXBlcywgQ2xh
c3Mgb2JqQ0NsCiAtIChmbG9hdClfaG9yaXpvbnRhbFBhZ2VTY3JvbGxEaXN0YW5jZQogewogICAg
IGZsb2F0IHdpZHRoID0gW1tzZWxmIF9jb250ZW50Vmlld10gYm91bmRzXS5zaXplLndpZHRoOwot
ICAgIHJldHVybiBtYXg8ZmxvYXQ+KHdpZHRoICogU2Nyb2xsYmFyOjptaW5GcmFjdGlvblRvU3Rl
cFdoZW5QYWdpbmcoKSwgd2lkdGggLSBTY3JvbGxiYXI6Om1heE92ZXJsYXBCZXR3ZWVuUGFnZXMo
KSk7CisgICAgcmV0dXJuIHN0ZDo6bWF4PGZsb2F0Pih3aWR0aCAqIFNjcm9sbGJhcjo6bWluRnJh
Y3Rpb25Ub1N0ZXBXaGVuUGFnaW5nKCksIHdpZHRoIC0gU2Nyb2xsYmFyOjptYXhPdmVybGFwQmV0
d2VlblBhZ2VzKCkpOwogfQogCiAtIChCT09MKV9wYWdlVmVydGljYWxseTooQk9PTCl1cApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJIVE1MVmlldy5tbSBiL1NvdXJj
ZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViSFRNTFZpZXcubW0KaW5kZXggZWI1YjExODFlY2JkODJi
NGVlYzIwYmQzYzRkNThkMzE0ZWY2MGY4NS4uNDBkMWFjNTI4Yzk3N2MzYzE5ZjJhNzFlYzk2ZGU3
YmVhODM0YjQ5NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJIVE1M
Vmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkhUTUxWaWV3Lm1tCkBA
IC0zOTg0LDcgKzM5ODQsNyBAQCBzdGF0aWMgUGFzc1JlZlB0cjxLZXlib2FyZEV2ZW50PiBjdXJy
ZW50S2V5Ym9hcmRFdmVudChGcmFtZSogY29yZUZyYW1lKQogICAgIGZsb2F0IHVzZXJTY2FsZUZh
Y3RvciA9IFtwcmludE9wZXJhdGlvbiBfd2ViX3BhZ2VTZXR1cFNjYWxlRmFjdG9yXTsKICAgICBm
bG9hdCBtYXhTaHJpbmtUb0ZpdFNjYWxlRmFjdG9yID0gMS4wZiAvIF9XZWJIVE1MVmlld1ByaW50
aW5nTWF4aW11bVNocmlua0ZhY3RvcjsKICAgICBmbG9hdCBzaHJpbmtUb0ZpdFNjYWxlRmFjdG9y
ID0gKHVzZVZpZXdXaWR0aCA/IFtwcmludE9wZXJhdGlvbiBfd2ViX2F2YWlsYWJsZVBhcGVyV2lk
dGhdIDogIFtwcmludE9wZXJhdGlvbiBfd2ViX2F2YWlsYWJsZVBhcGVySGVpZ2h0XSkgLyB2aWV3
TG9naWNhbFdpZHRoOwotICAgIHJldHVybiB1c2VyU2NhbGVGYWN0b3IgKiBtYXgobWF4U2hyaW5r
VG9GaXRTY2FsZUZhY3Rvciwgc2hyaW5rVG9GaXRTY2FsZUZhY3Rvcik7CisgICAgcmV0dXJuIHVz
ZXJTY2FsZUZhY3RvciAqIHN0ZDo6bWF4KG1heFNocmlua1RvRml0U2NhbGVGYWN0b3IsIHNocmlu
a1RvRml0U2NhbGVGYWN0b3IpOwogfQogCiAvLyBGSVhNRSAzNDkxMzQ0OiBUaGlzIGlzIGEgc2Vj
cmV0IEFwcEtpdC1pbnRlcm5hbCBtZXRob2QgdGhhdCB3ZSBuZWVkIHRvIG92ZXJyaWRlIGluIG9y
ZGVyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXcubW0gYi9T
b3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXcubW0KaW5kZXggNzUwYzc5YWZjMmEwZWY4
ZWRjY2IxYmY2MDA0ZDMxOTZhZTQ0ODgxNi4uMTk1NTljYmQ5YTlhNzkzNDFkODQ1OTZkZGFlZjE5
YmUzMjk4MzRkYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3
Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQpAQCAtNjA3MSw3
ICs2MDcxLDcgQEAgc3RhdGljIGlubGluZSB1aW50NjRfdCByb3VuZFVwVG9Qb3dlck9mMih1aW50
NjRfdCBudW0pCiAKICAgICAgICAgLy8gVGhpcyBjb2RlIGlzIGhlcmUgdG8gYXZvaWQgYSBQTFQg
cmVncmVzc2lvbi4gV2UgY2FuIHJlbW92ZSBpdCBpZiB3ZQogICAgICAgICAvLyBjYW4gcHJvdmUg
dGhhdCB0aGUgb3ZlcmFsbCBzeXN0ZW0gZ2FpbiB3b3VsZCBqdXN0aWZ5IHRoZSByZWdyZXNzaW9u
LgotICAgICAgICBjYWNoZU1heERlYWRDYXBhY2l0eSA9IG1heCgyNHUsIGNhY2hlTWF4RGVhZENh
cGFjaXR5KTsKKyAgICAgICAgY2FjaGVNYXhEZWFkQ2FwYWNpdHkgPSBzdGQ6Om1heDx1bnNpZ25l
ZD4oMjQsIGNhY2hlTWF4RGVhZENhcGFjaXR5KTsKIAogICAgICAgICBkZWFkRGVjb2RlZERhdGFE
ZWxldGlvbkludGVydmFsID0gNjA7CiAKQEAgLTYxMDgsNyArNjEwOCw3IEBAIHN0YXRpYyBpbmxp
bmUgdWludDY0X3Qgcm91bmRVcFRvUG93ZXJPZjIodWludDY0X3QgbnVtKQogCiAKICAgICAvLyBE
b24ndCBzaHJpbmsgYSBiaWcgZGlzayBjYWNoZSwgc2luY2UgdGhhdCB3b3VsZCBjYXVzZSBjaHVy
bi4KLSAgICBuc3VybENhY2hlRGlza0NhcGFjaXR5ID0gbWF4KG5zdXJsQ2FjaGVEaXNrQ2FwYWNp
dHksIFtuc3VybENhY2hlIGRpc2tDYXBhY2l0eV0pOworICAgIG5zdXJsQ2FjaGVEaXNrQ2FwYWNp
dHkgPSBzdGQ6Om1heChuc3VybENhY2hlRGlza0NhcGFjaXR5LCBbbnN1cmxDYWNoZSBkaXNrQ2Fw
YWNpdHldKTsKIAogICAgIG1lbW9yeUNhY2hlKCktPnNldENhcGFjaXRpZXMoY2FjaGVNaW5EZWFk
Q2FwYWNpdHksIGNhY2hlTWF4RGVhZENhcGFjaXR5LCBjYWNoZVRvdGFsQ2FwYWNpdHkpOwogICAg
IG1lbW9yeUNhY2hlKCktPnNldERlYWREZWNvZGVkRGF0YURlbGV0aW9uSW50ZXJ2YWwoZGVhZERl
Y29kZWREYXRhRGVsZXRpb25JbnRlcnZhbCk7CkBAIC02MTM1LDcgKzYxMzUsNyBAQCBzdGF0aWMg
aW5saW5lIHVpbnQ2NF90IHJvdW5kVXBUb1Bvd2VyT2YyKHVpbnQ2NF90IG51bSkKICAgICBXZWJD
YWNoZU1vZGVsIGNhY2hlTW9kZWwgPSBXZWJDYWNoZU1vZGVsRG9jdW1lbnRWaWV3ZXI7CiAgICAg
TlNFbnVtZXJhdG9yICplbnVtZXJhdG9yID0gWyhOU011dGFibGVTZXQgKilhbGxXZWJWaWV3c1Nl
dCBvYmplY3RFbnVtZXJhdG9yXTsKICAgICB3aGlsZSAoV2ViUHJlZmVyZW5jZXMgKnByZWZlcmVu
Y2VzID0gW1tlbnVtZXJhdG9yIG5leHRPYmplY3RdIHByZWZlcmVuY2VzXSkKLSAgICAgICAgY2Fj
aGVNb2RlbCA9IG1heChjYWNoZU1vZGVsLCBbcHJlZmVyZW5jZXMgY2FjaGVNb2RlbF0pOworICAg
ICAgICBjYWNoZU1vZGVsID0gc3RkOjptYXgoY2FjaGVNb2RlbCwgW3ByZWZlcmVuY2VzIGNhY2hl
TW9kZWxdKTsKICAgICByZXR1cm4gY2FjaGVNb2RlbDsKIH0KIApAQCAtNjE0OCw3ICs2MTQ4LDcg
QEAgc3RhdGljIGlubGluZSB1aW50NjRfdCByb3VuZFVwVG9Qb3dlck9mMih1aW50NjRfdCBudW0p
CiAgICAgaWYgKCFbc2VsZiBfZGlkU2V0Q2FjaGVNb2RlbF0gfHwgY2FjaGVNb2RlbCA+IFtzZWxm
IF9jYWNoZU1vZGVsXSkKICAgICAgICAgW3NlbGYgX3NldENhY2hlTW9kZWw6Y2FjaGVNb2RlbF07
CiAgICAgZWxzZSBpZiAoY2FjaGVNb2RlbCA8IFtzZWxmIF9jYWNoZU1vZGVsXSkKLSAgICAgICAg
W3NlbGYgX3NldENhY2hlTW9kZWw6bWF4KFtbV2ViUHJlZmVyZW5jZXMgc3RhbmRhcmRQcmVmZXJl
bmNlc10gY2FjaGVNb2RlbF0sIFtzZWxmIF9tYXhDYWNoZU1vZGVsSW5BbnlJbnN0YW5jZV0pXTsK
KyAgICAgICAgW3NlbGYgX3NldENhY2hlTW9kZWw6c3RkOjptYXgoW1tXZWJQcmVmZXJlbmNlcyBz
dGFuZGFyZFByZWZlcmVuY2VzXSBjYWNoZU1vZGVsXSwgW3NlbGYgX21heENhY2hlTW9kZWxJbkFu
eUluc3RhbmNlXSldOwogfQogCiArICh2b2lkKV9wcmVmZXJlbmNlc1JlbW92ZWROb3RpZmljYXRp
b246KE5TTm90aWZpY2F0aW9uICopbm90aWZpY2F0aW9uCkBAIC02MTU3LDcgKzYxNTcsNyBAQCBz
dGF0aWMgaW5saW5lIHVpbnQ2NF90IHJvdW5kVXBUb1Bvd2VyT2YyKHVpbnQ2NF90IG51bSkKICAg
ICBBU1NFUlQoW3ByZWZlcmVuY2VzIGlzS2luZE9mQ2xhc3M6W1dlYlByZWZlcmVuY2VzIGNsYXNz
XV0pOwogCiAgICAgaWYgKFtwcmVmZXJlbmNlcyBjYWNoZU1vZGVsXSA9PSBbc2VsZiBfY2FjaGVN
b2RlbF0pCi0gICAgICAgIFtzZWxmIF9zZXRDYWNoZU1vZGVsOm1heChbW1dlYlByZWZlcmVuY2Vz
IHN0YW5kYXJkUHJlZmVyZW5jZXNdIGNhY2hlTW9kZWxdLCBbc2VsZiBfbWF4Q2FjaGVNb2RlbElu
QW55SW5zdGFuY2VdKV07CisgICAgICAgIFtzZWxmIF9zZXRDYWNoZU1vZGVsOnN0ZDo6bWF4KFtb
V2ViUHJlZmVyZW5jZXMgc3RhbmRhcmRQcmVmZXJlbmNlc10gY2FjaGVNb2RlbF0sIFtzZWxmIF9t
YXhDYWNoZU1vZGVsSW5BbnlJbnN0YW5jZV0pXTsKIH0KIAogLSAoV2ViRnJhbWUgKilfZm9jdXNl
ZEZyYW1lCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL21hYy9XZWJQcm9j
ZXNzTWFjLm1tIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9tYWMvV2ViUHJvY2Vzc01hYy5t
bQppbmRleCA5MWRjNGRiZjJhZDRkNDI4ZDczNTIwZDgyNGE5MTMxY2M1Yjk3Y2UzLi40ZGQ2NWE1
ZTFmNzYyNWY5Mjg0MWY2OGY3OTdjNTBhMWU4MzA0OWE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL21hYy9XZWJQcm9jZXNzTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvbWFjL1dlYlByb2Nlc3NNYWMubW0KQEAgLTEyNiw3ICsxMjYsNyBAQCB2b2lk
IFdlYlByb2Nlc3M6OnBsYXRmb3JtU2V0Q2FjaGVNb2RlbChDYWNoZU1vZGVsIGNhY2hlTW9kZWwp
CiAjZW5kaWYKIAogICAgIFtuc3VybENhY2hlIHNldE1lbW9yeUNhcGFjaXR5OnVybENhY2hlTWVt
b3J5Q2FwYWNpdHldOwotICAgIFtuc3VybENhY2hlIHNldERpc2tDYXBhY2l0eTptYXg8dW5zaWdu
ZWQgbG9uZz4odXJsQ2FjaGVEaXNrQ2FwYWNpdHksIFtuc3VybENhY2hlIGRpc2tDYXBhY2l0eV0p
XTsgLy8gRG9uJ3Qgc2hyaW5rIGEgYmlnIGRpc2sgY2FjaGUsIHNpbmNlIHRoYXQgd291bGQgY2F1
c2UgY2h1cm4uCisgICAgW25zdXJsQ2FjaGUgc2V0RGlza0NhcGFjaXR5OnN0ZDo6bWF4PHVuc2ln
bmVkIGxvbmc+KHVybENhY2hlRGlza0NhcGFjaXR5LCBbbnN1cmxDYWNoZSBkaXNrQ2FwYWNpdHld
KV07IC8vIERvbid0IHNocmluayBhIGJpZyBkaXNrIGNhY2hlLCBzaW5jZSB0aGF0IHdvdWxkIGNh
dXNlIGNodXJuLgogfQogCiB2b2lkIFdlYlByb2Nlc3M6OnBsYXRmb3JtQ2xlYXJSZXNvdXJjZUNh
Y2hlcyhSZXNvdXJjZUNhY2hlc1RvQ2xlYXIgY2FjaGVzVG9DbGVhcikK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>215071</attachid>
            <date>2013-10-24 09:24:22 -0700</date>
            <delta_ts>2013-10-24 10:15:59 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-123273-20131024092420.patch</filename>
            <type>text/plain</type>
            <size>185461</size>
            <attacher name="Anders Carlsson">andersca</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTU3OTI2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjA1YzkyNTBmYTZjODUz
ZDhhOTlkZDViOTNmYTA2ZDNkNTAzZTAyZC4uNWJhOWJmZGE1ZjgxNmViMDQwMzg5NDhjNjM5NDE1
YjBmMGYzOWJhZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI5MSBAQAorMjAxMy0xMC0yNCAgQW5k
ZXJzIENhcmxzc29uICA8YW5kZXJzY2FAYXBwbGUuY29tPgorCisgICAgICAgIFN0b3AgYnJpbmdp
bmcgaW4gdGhlIHN0ZCBuYW1lc3BhY2UKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTEyMzI3MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9BdWRpb0J1ZmZlclNvdXJjZU5vZGUu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9CdWZmZXJTb3VyY2VOb2RlOjpyZW5kZXJGcm9t
QnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvQnVmZmVyU291cmNlTm9kZTo6c3RhcnRH
cmFpbik6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb0J1ZmZlclNvdXJjZU5vZGU6OnRvdGFsUGl0
Y2hSYXRlKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvTm9kZUlucHV0LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvTm9kZUlucHV0OjpudW1iZXJPZkNoYW5uZWxzKToKKyAg
ICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvUGFyYW1UaW1lbGluZS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpBdWRpb1BhcmFtVGltZWxpbmU6OnZhbHVlc0ZvclRpbWVSYW5nZUltcGwpOgor
ICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vQXVkaW9TY2hlZHVsZWRTb3VyY2VOb2RlLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvU2NoZWR1bGVkU291cmNlTm9kZTo6dXBkYXRlU2NoZWR1
bGluZ0luZm8pOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9TY2hlZHVsZWRTb3VyY2VOb2RlOjpz
dG9wKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvU3VtbWluZ0p1bmN0aW9uLmNw
cDoKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL0RlbGF5RFNQS2VybmVsLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkRlbGF5RFNQS2VybmVsOjpwcm9jZXNzKToKKyAgICAgICAgKiBNb2R1bGVz
L3dlYmF1ZGlvL09mZmxpbmVBdWRpb0Rlc3RpbmF0aW9uTm9kZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpPZmZsaW5lQXVkaW9EZXN0aW5hdGlvbk5vZGU6Om9mZmxpbmVSZW5kZXIpOgorICAgICAg
ICAqIE1vZHVsZXMvd2ViYXVkaW8vT3NjaWxsYXRvck5vZGUuY3BwOgorICAgICAgICAqIE1vZHVs
ZXMvd2ViYXVkaW8vUGFubmVyTm9kZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQYW5uZXJOb2Rl
Ojpkb3BwbGVyUmF0ZSk6CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9XYXZlU2hhcGVyRFNQ
S2VybmVsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldhdmVTaGFwZXJEU1BLZXJuZWw6OnByb2Nl
c3NDdXJ2ZSk6CisgICAgICAgICogTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZVRyYWNrZXIu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6RGF0YWJhc2VUcmFja2VyOjpoYXNBZGVxdWF0ZVF1b3Rh
Rm9yT3JpZ2luKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OnNhdHVyYXRlQWRkKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYnNv
Y2tldHMvV2ViU29ja2V0Q2hhbm5lbC5jcHA6CisgICAgICAgICogTW9kdWxlcy93ZWJzb2NrZXRz
L1dlYlNvY2tldEZyYW1lLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tldEZyYW1lOjpw
YXJzZUZyYW1lKToKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlBUklBR3Jp
ZC5jcHA6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5QVJJQUdyaWRDZWxs
LmNwcDoKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlBUklBR3JpZFJvdy5j
cHA6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5TGlzdC5jcHA6CisgICAg
ICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5TGlzdEJveC5jcHA6CisgICAgICAgICog
YWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5TGlzdEJveE9wdGlvbi5jcHA6CisgICAgICAgICog
YWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdC5jcHA6CisgICAgICAgICogYWNj
ZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmNwcDoKKyAgICAgICAgKiBhY2Nlc3NpYmls
aXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3BwOgorICAgICAgICAqIGFjY2Vzc2liaWxp
dHkvQWNjZXNzaWJpbGl0eVRhYmxlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxp
dHlUYWJsZTo6YWRkQ2hpbGRyZW4pOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJp
bGl0eVRhYmxlQ2VsbC5jcHA6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5
VGFibGVDb2x1bW4uY3BwOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRh
YmxlSGVhZGVyQ29udGFpbmVyLmNwcDoKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2li
aWxpdHlUYWJsZVJvdy5jcHA6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNz
aWJpbGl0eU9iamVjdFdyYXBwZXJCYXNlLm1tOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvbWFj
L1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyTWFjLm1tOgorICAgICAgICAoLVtXZWJBY2Nl
c3NpYmlsaXR5T2JqZWN0V3JhcHBlciBhY2Nlc3NpYmlsaXR5QXJyYXlBdHRyaWJ1dGVWYWx1ZXM6
aW5kZXg6bWF4Q291bnQ6XSk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNDU1NTdHlsZURlY2xh
cmF0aW9uQ3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTQ1NTU3R5bGVEZWNsYXJhdGlv
bjo6Z2V0T3duUHJvcGVydHlOYW1lcyk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNHZW9sb2Nh
dGlvbkN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpzZXRUaW1lb3V0KToKKyAgICAgICAg
KFdlYkNvcmU6OnNldE1heGltdW1BZ2UpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL1NjcmlwdENv
bnRyb2xsZXIuY3BwOgorICAgICAgICAqIGJpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1
ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjp3cml0ZUxpdHRsZUVuZGlhbik6CisgICAgICAgIChX
ZWJDb3JlOjpDbG9uZVNlcmlhbGl6ZXI6OndyaXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkNsb25l
RGVzZXJpYWxpemVyOjpkZXNlcmlhbGl6ZSk6CisgICAgICAgIChXZWJDb3JlOjpDbG9uZURlc2Vy
aWFsaXplcjo6cmVhZFN0cmluZyk6CisgICAgICAgICogY3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNs
YXJhdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb21wdXRlZFN0eWxlRXh0cmFjdG9yOjpw
cm9wZXJ0eVZhbHVlKToKKyAgICAgICAgKiBjc3MvQ1NTRm9udFNlbGVjdG9yLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkNTU0ZvbnRTZWxlY3Rvcjo6Z2V0Rm9udEZhY2UpOgorICAgICAgICAqIGNz
cy9DU1NHcmFkaWVudFZhbHVlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU1JhZGlhbEdyYWRp
ZW50VmFsdWU6OmNyZWF0ZUdyYWRpZW50KToKKyAgICAgICAgKiBjc3MvQ1NTUGFyc2VyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlcjo6cGFyc2VWYWx1ZSk6CisgICAgICAgIChXZWJD
b3JlOjpDU1NQYXJzZXI6OnBhcnNlQ29sb3JQYXJhbWV0ZXJzKToKKyAgICAgICAgKFdlYkNvcmU6
OkNTU1BhcnNlcjo6cGFyc2VIU0xQYXJhbWV0ZXJzKToKKyAgICAgICAgKiBjc3MvQ1NTUmVmbGVj
dFZhbHVlLmNwcDoKKyAgICAgICAgKiBjc3MvRGVwcmVjYXRlZFN0eWxlQnVpbGRlci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpBcHBseVByb3BlcnR5Rm9udFNpemU6OmFwcGx5VmFsdWUpOgorICAg
ICAgICAqIGNzcy9Qcm9wZXJ0eVNldENTU1N0eWxlRGVjbGFyYXRpb24uY3BwOgorICAgICAgICAq
IGNzcy9TVkdDU1NQYXJzZXIuY3BwOgorICAgICAgICAqIGNzcy9TdHlsZVByb3BlcnR5U2V0LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlUHJvcGVydHlTZXQ6OmdldExheWVyZWRTaG9ydGhh
bmRWYWx1ZSk6CisgICAgICAgICogY3NzL1N0eWxlUmVzb2x2ZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6U3R5bGVSZXNvbHZlcjo6dmlld3BvcnRQZXJjZW50YWdlVmFsdWUpOgorICAgICAgICAq
IGRvbS9DaGFyYWN0ZXJEYXRhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNoYXJhY3RlckRhdGE6
OnBhcnNlckFwcGVuZERhdGEpOgorICAgICAgICAqIGRvbS9Db250YWluZXJOb2RlLmNwcDoKKyAg
ICAgICAgKiBkb20vRG9jdW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6Om1p
bmltdW1MYXlvdXREZWxheSk6CisgICAgICAgICogZG9tL05vZGUuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6Tm9kZTo6Y29tcGFyZURvY3VtZW50UG9zaXRpb24pOgorICAgICAgICAqIGRvbS9SYW5n
ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSYW5nZTo6dG9TdHJpbmcpOgorICAgICAgICAoV2Vi
Q29yZTo6UmFuZ2U6OnRleHRSZWN0cyk6CisgICAgICAgIChXZWJDb3JlOjpSYW5nZTo6dGV4dFF1
YWRzKToKKyAgICAgICAgKiBkb20vU2NyaXB0ZWRBbmltYXRpb25Db250cm9sbGVyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlNjcmlwdGVkQW5pbWF0aW9uQ29udHJvbGxlcjo6c2NoZWR1bGVBbmlt
YXRpb24pOgorICAgICAgICAqIGRvbS9TdHlsZWRFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlN0eWxlZEVsZW1lbnQ6Om1ha2VQcmVzZW50YXRpb25BdHRyaWJ1dGVDYWNoZUtleSk6Cisg
ICAgICAgICogZG9tL1RleHQuY3BwOgorICAgICAgICAqIGRvbS9WaWV3cG9ydEFyZ3VtZW50cy5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpjbGFtcExlbmd0aFZhbHVlKToKKyAgICAgICAgKFdlYkNv
cmU6OmNsYW1wU2NhbGVWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpWaWV3cG9ydEFyZ3VtZW50
czo6cmVzb2x2ZSk6CisgICAgICAgIChXZWJDb3JlOjpjb21wdXRlTWluaW11bVNjYWxlRmFjdG9y
Rm9yQ29udGVudENvbnRhaW5lZCk6CisgICAgICAgIChXZWJDb3JlOjpyZXN0cmljdE1pbmltdW1T
Y2FsZUZhY3RvclRvVmlld3BvcnRTaXplKToKKyAgICAgICAgKiBlZGl0aW5nL0FsdGVybmF0aXZl
VGV4dENvbnRyb2xsZXIuY3BwOgorICAgICAgICAqIGVkaXRpbmcvQXBwbHlTdHlsZUNvbW1hbmQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6QXBwbHlTdHlsZUNvbW1hbmQ6OmFwcGx5UmVsYXRpdmVG
b250U3R5bGVDaGFuZ2UpOgorICAgICAgICAqIGVkaXRpbmcvQ29tcG9zaXRlRWRpdENvbW1hbmQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29tcG9zaXRlRWRpdENvbW1hbmQ6OmRlbGV0ZUluc2ln
bmlmaWNhbnRUZXh0KToKKyAgICAgICAgKiBlZGl0aW5nL0VkaXRvci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpFZGl0b3I6OnNldENvbXBvc2l0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRv
cjo6Y29tcG9zaXRpb25SYW5nZSk6CisgICAgICAgICogZWRpdGluZy9FZGl0b3JDb21tYW5kLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OnZlcnRpY2FsU2Nyb2xsRGlzdGFuY2UpOgorICAgICAgICAq
IGVkaXRpbmcvVGV4dEl0ZXJhdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRleHRJdGVyYXRv
cjo6aGFuZGxlVGV4dE5vZGUpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dEl0ZXJhdG9yOjpoYW5k
bGVUZXh0Qm94KToKKyAgICAgICAgKFdlYkNvcmU6OkNoYXJhY3Rlckl0ZXJhdG9yOjpzdHJpbmcp
OgorICAgICAgICAoV2ViQ29yZTo6U2VhcmNoQnVmZmVyOjpTZWFyY2hCdWZmZXIpOgorICAgICAg
ICAoV2ViQ29yZTo6U2VhcmNoQnVmZmVyOjphcHBlbmQpOgorICAgICAgICAoV2ViQ29yZTo6U2Vh
cmNoQnVmZmVyOjpwcmVwZW5kQ29udGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpTZWFyY2hCdWZm
ZXI6OnNlYXJjaCk6CisgICAgICAgICogZWRpdGluZy9WaXNpYmxlVW5pdHMuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6c3RhcnRPZlBhcmFncmFwaCk6CisgICAgICAgICogZWRpdGluZy9odG1sZWRp
dGluZy5jcHA6CisgICAgICAgICogZWRpdGluZy9tYXJrdXAuY3BwOgorICAgICAgICAqIGZpbGVh
cGkvRmlsZVJlYWRlckxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGaWxlUmVhZGVyTG9h
ZGVyOjpkaWRSZWNlaXZlUmVzcG9uc2UpOgorICAgICAgICAoV2ViQ29yZTo6RmlsZVJlYWRlckxv
YWRlcjo6ZGlkUmVjZWl2ZURhdGEpOgorICAgICAgICAqIGhpc3RvcnkvQmFja0ZvcndhcmRMaXN0
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkJhY2tGb3J3YXJkTGlzdDo6YmFja0xpc3RXaXRoTGlt
aXQpOgorICAgICAgICAoV2ViQ29yZTo6QmFja0ZvcndhcmRMaXN0Ojpmb3J3YXJkTGlzdFdpdGhM
aW1pdCk6CisgICAgICAgICogaGlzdG9yeS9QYWdlQ2FjaGUuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6UGFnZUNhY2hlOjpzZXRDYXBhY2l0eSk6CisgICAgICAgICogaHRtbC9CYXNlRGF0ZUFuZFRp
bWVJbnB1dFR5cGUuY3BwOgorICAgICAgICAqIGh0bWwvRlRQRGlyZWN0b3J5RG9jdW1lbnQuY3Bw
OgorICAgICAgICAqIGh0bWwvSFRNTEFyZWFFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkhUTUxBcmVhRWxlbWVudDo6Z2V0UmVnaW9uKToKKyAgICAgICAgKiBodG1sL0hUTUxFbGVtZW50
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpwYXJzZUNvbG9yU3RyaW5nV2l0aENyYXp5TGVnYWN5UnVsZXMpOgor
ICAgICAgICAqIGh0bWwvSFRNTEZvcm1Db250cm9sRWxlbWVudC5jcHA6CisgICAgICAgICogaHRt
bC9IVE1MRm9ybUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEZvcm1FbGVtZW50
OjpnZXRUZXh0RmllbGRWYWx1ZXMpOgorICAgICAgICAqIGh0bWwvSFRNTEltYWdlRWxlbWVudC5j
cHA6CisgICAgICAgICogaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcDoKKyAgICAgICAgKiBodG1s
L0hUTUxNYXBFbGVtZW50LmNwcDoKKyAgICAgICAgKiBodG1sL0hUTUxNZWRpYUVsZW1lbnQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6SFRNTE1lZGlhRWxlbWVudCk6
CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50Ojp1cGRhdGVBY3RpdmVUZXh0VHJh
Y2tDdWVzKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OnRleHRUcmFja0Fk
ZEN1ZSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50Ojp0ZXh0VHJhY2tSZW1v
dmVDdWUpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6cmV3aW5kKToKKyAg
ICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OnNlZWspOgorICAgICAgICAoV2ViQ29y
ZTo6SFRNTE1lZGlhRWxlbWVudDo6ZHVyYXRpb24pOgorICAgICAgICAqIGh0bWwvSFRNTFNlbGVj
dEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFNlbGVjdEVsZW1lbnQ6OnBhcnNl
QXR0cmlidXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxTZWxlY3RFbGVtZW50Ojp1cGRhdGVM
aXN0Qm94U2VsZWN0aW9uKToKKyAgICAgICAgKiBodG1sL0hUTUxTb3VyY2VFbGVtZW50LmNwcDoK
KyAgICAgICAgKiBodG1sL0hUTUxUYWJsZUNlbGxFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkhUTUxUYWJsZUNlbGxFbGVtZW50Ojpjb2xTcGFuKToKKyAgICAgICAgKFdlYkNvcmU6OkhU
TUxUYWJsZUNlbGxFbGVtZW50Ojpyb3dTcGFuKToKKyAgICAgICAgKiBodG1sL0hUTUxUYWJsZUVs
ZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRhYmxlRWxlbWVudDo6cGFyc2VBdHRy
aWJ1dGUpOgorICAgICAgICAqIGh0bWwvSFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQ6OnNldFNlbGVjdGlv
blN0YXJ0KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50Ojpz
ZXRTZWxlY3Rpb25FbmQpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRleHRGb3JtQ29udHJvbEVs
ZW1lbnQ6OnNlbGVjdCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVGV4dEZvcm1Db250cm9sRWxl
bWVudDo6c2V0U2VsZWN0aW9uUmFuZ2UpOgorICAgICAgICAqIGh0bWwvSFRNTFRyYWNrRWxlbWVu
dC5jcHA6CisgICAgICAgICogaHRtbC9JbWFnZURvY3VtZW50LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkltYWdlRG9jdW1lbnQ6OnNjYWxlKToKKyAgICAgICAgKiBodG1sL0lucHV0VHlwZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpJbnB1dFR5cGU6OnZhbHVlQXNEb3VibGUpOgorICAgICAgICAq
IGh0bWwvTWVkaWFDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKE1lZGlhQ29udHJvbGxlcjo6ZHVy
YXRpb24pOgorICAgICAgICAoTWVkaWFDb250cm9sbGVyOjpjdXJyZW50VGltZSk6CisgICAgICAg
IChNZWRpYUNvbnRyb2xsZXI6OnNldEN1cnJlbnRUaW1lKToKKyAgICAgICAgKE1lZGlhQ29udHJv
bGxlcjo6dXBkYXRlUmVhZHlTdGF0ZSk6CisgICAgICAgICogaHRtbC9OdW1iZXJJbnB1dFR5cGUu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6TnVtYmVySW5wdXRUeXBlOjpzZXRWYWx1ZUFzRG91Ymxl
KToKKyAgICAgICAgKFdlYkNvcmU6Ok51bWJlcklucHV0VHlwZTo6c2V0VmFsdWVBc0RlY2ltYWwp
OgorICAgICAgICAoV2ViQ29yZTo6TnVtYmVySW5wdXRUeXBlOjpjcmVhdGVTdGVwUmFuZ2UpOgor
ICAgICAgICAqIGh0bWwvUmFuZ2VJbnB1dFR5cGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmFu
Z2VJbnB1dFR5cGU6OmhhbmRsZUtleWRvd25FdmVudCk6CisgICAgICAgICogaHRtbC9TZWFyY2hJ
bnB1dFR5cGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2VhcmNoSW5wdXRUeXBlOjpzdGFydFNl
YXJjaEV2ZW50VGltZXIpOgorICAgICAgICAqIGh0bWwvU3RlcFJhbmdlLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlN0ZXBSYW5nZTo6Y2xhbXBWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpTdGVw
UmFuZ2U6OnBhcnNlU3RlcCk6CisgICAgICAgICogaHRtbC9UaW1lUmFuZ2VzLmNwcDoKKyAgICAg
ICAgKiBodG1sL1ZhbGlkYXRpb25NZXNzYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlZhbGlk
YXRpb25NZXNzYWdlOjpzZXRNZXNzYWdlRE9NQW5kU3RhcnRUaW1lcik6CisgICAgICAgIChXZWJD
b3JlOjphZGp1c3RCdWJibGVQb3NpdGlvbik6CisgICAgICAgICogaHRtbC9jYW52YXMvQ2FudmFz
UmVuZGVyaW5nQ29udGV4dDJELmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Om5vcm1hbGl6ZVJlY3Qp
OgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OnZhbGlkYXRlSW5kZXhBcnJheUNv
bnNlcnZhdGl2ZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OnZh
bGlkYXRlQ29tcHJlc3NlZFRleEZ1bmNEYXRhKToKKyAgICAgICAgKiBodG1sL3NoYWRvdy9NZWRp
YUNvbnRyb2xFbGVtZW50cy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUNvbnRyb2xSZXdp
bmRCdXR0b25FbGVtZW50OjpkZWZhdWx0RXZlbnRIYW5kbGVyKToKKyAgICAgICAgKiBodG1sL3No
YWRvdy9NZWRpYUNvbnRyb2xzQXBwbGUuY3BwOgorICAgICAgICAqIGh0bWwvc2hhZG93L1NsaWRl
clRodW1iRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTbGlkZXJUaHVtYkVsZW1lbnQ6
OnNldFBvc2l0aW9uRnJvbVBvaW50KToKKyAgICAgICAgKiBpbnNwZWN0b3IvQ29udGVudFNlYXJj
aFV0aWxzLmNwcDoKKyAgICAgICAgKiBpbnNwZWN0b3IvRE9NRWRpdG9yLmNwcDoKKyAgICAgICAg
KiBpbnNwZWN0b3IvRE9NUGF0Y2hTdXBwb3J0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRPTVBh
dGNoU3VwcG9ydDo6ZGlmZik6CisgICAgICAgICogaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0SG9z
dC5jcHA6CisgICAgICAgICogbG9hZGVyL1Byb2dyZXNzVHJhY2tlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpQcm9ncmVzc1RyYWNrZXI6OmluY3JlbWVudFByb2dyZXNzKToKKyAgICAgICAgKiBs
b2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuY3BwOgorICAgICAgICAqIHBhZ2UvRE9NV2luZG93LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkRPTVdpbmRvdzo6YWRqdXN0V2luZG93UmVjdCk6CisgICAg
ICAgICogcGFnZS9FdmVudEhhbmRsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWF4aW11bUR1
cmF0aW9uVHJhY2tlcjo6fk1heGltdW1EdXJhdGlvblRyYWNrZXIpOgorICAgICAgICAqIHBhZ2Uv
RnJhbWVUcmVlLmNwcDoKKyAgICAgICAgKiBwYWdlL0ZyYW1lVmlldy5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpGcmFtZVZpZXc6OmFkanVzdGVkRGVmZXJyZWRSZXBhaW50RGVsYXkpOgorICAgICAg
ICAoV2ViQ29yZTo6RnJhbWVWaWV3OjphdXRvU2l6ZUlmRW5hYmxlZCk6CisgICAgICAgICogcGFn
ZS9QcmludENvbnRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UHJpbnRDb250ZXh0Ojpjb21w
dXRlQXV0b21hdGljU2NhbGVGYWN0b3IpOgorICAgICAgICAqIHBhZ2UvU3BhdGlhbE5hdmlnYXRp
b24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6ZW50cnlBbmRFeGl0UG9pbnRzRm9yRGlyZWN0aW9u
KToKKyAgICAgICAgKiBwYWdlL2FuaW1hdGlvbi9DU1NQcm9wZXJ0eUFuaW1hdGlvbi5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpibGVuZEZpbHRlck9wZXJhdGlvbnMpOgorICAgICAgICAoV2ViQ29y
ZTo6UHJvcGVydHlXcmFwcGVyU2hhZG93OjpibGVuZE1pc21hdGNoZWRTaGFkb3dMaXN0cyk6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvRmxvYXRSZWN0LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkZsb2F0UmVjdDo6RmxvYXRSZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OkZsb2F0UmVjdDo6
aW50ZXJzZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OkZsb2F0UmVjdDo6dW5pdGVFdmVuSWZFbXB0
eSk6CisgICAgICAgIChXZWJDb3JlOjpGbG9hdFJlY3Q6OmV4dGVuZCk6CisgICAgICAgIChXZWJD
b3JlOjpGbG9hdFJlY3Q6OmZpdFRvUG9pbnRzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9HbHlwaFBhZ2VUcmVlTm9kZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHbHlwaFBhZ2VUcmVl
Tm9kZTo6aW5pdGlhbGl6ZVBhZ2UpOgorICAgICAgICAoV2ViQ29yZTo6R2x5cGhQYWdlVHJlZU5v
ZGU6OmdldENoaWxkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9JbnRSZWN0LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkludFJlY3Q6OmludGVyc2VjdCk6CisgICAgICAgIChXZWJDb3Jl
OjpJbnRSZWN0Ojp1bml0ZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnRSZWN0Ojp1bml0ZUlmTm9u
WmVybyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvTGF5b3V0UmVjdC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpMYXlvdXRSZWN0OjppbnRlcnNlY3QpOgorICAgICAgICAoV2ViQ29yZTo6
TGF5b3V0UmVjdDo6dW5pdGUpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0UmVjdDo6dW5pdGVJ
Zk5vblplcm8pOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVNb3JwaG9s
b2d5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZFTW9ycGhvbG9neTo6cGxhdGZvcm1BcHBseUdl
bmVyaWMpOgorICAgICAgICAoV2ViQ29yZTo6RkVNb3JwaG9sb2d5OjpwbGF0Zm9ybUFwcGx5U29m
dHdhcmUpOgorICAgICAgICAqIHBsYXRmb3JtL21hYy9NZW1vcnlQcmVzc3VyZUhhbmRsZXJNYWMu
bW06CisgICAgICAgIChXZWJDb3JlOjpNZW1vcnlQcmVzc3VyZUhhbmRsZXI6OnJlc3BvbmRUb01l
bW9yeVByZXNzdXJlKToKKyAgICAgICAgKiBwbGF0Zm9ybS90ZXh0L1RleHRDb2RlY0lDVS5jcHA6
CisgICAgICAgICogcmVuZGVyaW5nL0xpbmVXaWR0aC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpM
aW5lV2lkdGg6OmZpdEJlbG93RmxvYXRzKToKKyAgICAgICAgKFdlYkNvcmU6OkxpbmVXaWR0aDo6
Y29tcHV0ZUF2YWlsYWJsZVdpZHRoRnJvbUxlZnRBbmRSaWdodCk6CisgICAgICAgICogcmVuZGVy
aW5nL1JlbmRlckJsb2NrLmg6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9jazo6YXZhaWxh
YmxlTG9naWNhbFdpZHRoRm9yTGluZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9jazo6
YXZhaWxhYmxlTG9naWNhbFdpZHRoRm9yQ29udGVudCk6CisgICAgICAgICogcmVuZGVyaW5nL1Jl
bmRlckZpZWxkc2V0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckZpZWxkc2V0Ojpjb21w
dXRlUHJlZmVycmVkTG9naWNhbFdpZHRocyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJGaWVs
ZHNldDo6bGF5b3V0U3BlY2lhbEV4Y2x1ZGVkQ2hpbGQpOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyRmllbGRzZXQ6OnBhaW50Qm94RGVjb3JhdGlvbnMpOgorICAgICAgICAqIHJlbmRlcmluZy9S
ZW5kZXJGbG93VGhyZWFkLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckZsb3dUaHJlYWQ6
OnVwZGF0ZUxvZ2ljYWxXaWR0aCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJGbG93VGhyZWFk
OjphZGRGb3JjZWRSZWdpb25CcmVhayk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckZyYW1l
QmFzZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJGcmFtZUJhc2U6OmxheW91dFdpdGhG
bGF0dGVuaW5nKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyRnJhbWVTZXQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyRnJhbWVTZXQ6OmxheU91dEF4aXMpOgorICAgICAgICAqIHJl
bmRlcmluZy9SZW5kZXJTbGlkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU2xpZGVy
Ojpjb21wdXRlUHJlZmVycmVkTG9naWNhbFdpZHRocyk6CisgICAgICAgICogcmVuZGVyaW5nL1Jl
bmRlclRhYmxlQ2VsbC5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUcmVlQXNUZXh0LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OndyaXRlTGF5ZXJzKToKKyAgICAgICAgKiByZW5kZXJpbmcv
Um9vdElubGluZUJveC5oOgorICAgICAgICAoV2ViQ29yZTo6Um9vdElubGluZUJveDo6c2VsZWN0
aW9uSGVpZ2h0KToKKyAgICAgICAgKFdlYkNvcmU6OlJvb3RJbmxpbmVCb3g6OnNlbGVjdGlvbkhl
aWdodEFkanVzdGVkRm9yUHJlY2VkaW5nQmxvY2spOgorICAgICAgICAqIHJlbmRlcmluZy9tYXRo
bWwvUmVuZGVyTWF0aE1MUm93LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck1hdGhNTFJv
dzo6bGF5b3V0KToKKyAgICAgICAgKiByZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFNjcmlw
dHMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTWF0aE1MU2NyaXB0czo6bGF5b3V0KToK
KyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuaDoKKyAgICAgICAgKiByZW5k
ZXJpbmcvc3R5bGUvU3R5bGVHZW5lcmF0ZWRJbWFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpT
dHlsZUdlbmVyYXRlZEltYWdlOjppbWFnZVNpemUpOgorICAgICAgICAqIHN0eWxlL1N0eWxlRm9u
dFNpemVGdW5jdGlvbnMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGU6OmZvbnRTaXplRm9y
S2V5d29yZCk6CisgICAgICAgICogc3ZnL1NWR1NWR0VsZW1lbnQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6U1ZHU1ZHRWxlbWVudDo6c2V0Q3VycmVudFRpbWUpOgorCiAyMDEzLTEwLTI0ICBQZXRl
ciBNb2xuYXIgIDxwbW9sbmFyLnUtc3plZ2VkQHBhcnRuZXIuc2Ftc3VuZy5jb20+CiAKICAgICAg
ICAgUmVtb3ZlZCBRdCB3b3JrYXJvdW5kLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMv
Q2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCmluZGV4IDk5M2FhYmNkNDcx
NjNmZTNjZjc5N2JkYjMwMDZhYjZmY2M0NmFlNjYuLjBjYjdkZjVmNDZlZDhiMTYwNTQwM2U0Mzhi
ZWIwNWZmMGQ5M2EwZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwor
KysgYi9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMSBAQAorMjAxMy0x
MC0yNCAgQW5kZXJzIENhcmxzc29uICA8YW5kZXJzY2FAYXBwbGUuY29tPgorCisgICAgICAgIFN0
b3AgYnJpbmdpbmcgaW4gdGhlIHN0ZCBuYW1lc3BhY2UKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyMzI3MworCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViVmlldy9XZWJGcmFtZVZpZXcubW06CisgICAg
ICAgICgtW1dlYkZyYW1lVmlldyBfdmVydGljYWxQYWdlU2Nyb2xsRGlzdGFuY2VdKToKKyAgICAg
ICAgKC1bV2ViRnJhbWVWaWV3IF9ob3Jpem9udGFsUGFnZVNjcm9sbERpc3RhbmNlXSk6CisgICAg
ICAgICogV2ViVmlldy9XZWJIVE1MVmlldy5tbToKKyAgICAgICAgKC1bV2ViSFRNTFZpZXcgX3Nj
YWxlRmFjdG9yRm9yUHJpbnRPcGVyYXRpb246XSk6CisgICAgICAgICogV2ViVmlldy9XZWJWaWV3
Lm1tOgorICAgICAgICAoK1tXZWJWaWV3IF9zZXRDYWNoZU1vZGVsOl0pOgorICAgICAgICAoK1tX
ZWJWaWV3IF9tYXhDYWNoZU1vZGVsSW5BbnlJbnN0YW5jZV0pOgorICAgICAgICAoK1tXZWJWaWV3
IF9jYWNoZU1vZGVsQ2hhbmdlZE5vdGlmaWNhdGlvbjpdKToKKyAgICAgICAgKCtbV2ViVmlldyBf
cHJlZmVyZW5jZXNSZW1vdmVkTm90aWZpY2F0aW9uOl0pOgorCiAyMDEzLTEwLTIyICBEZWFuIEph
Y2tzb24gIDxkaW5vQGFwcGxlLmNvbT4KIAogICAgICAgICBbV2ViR0xdIEltcGxlbWVudCBhIHNv
ZnR3YXJlIHJlbmRlcmluZyBvcHRpb24gb24gTWFjCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggZTIzNmY0N2M1NjQw
YzI1Yzc4NTBlZDc1NTYyZjZjYjQyMjVlOTU1NS4uN2U5YzE4YTQwMzQ3NWEwOTRjNDk2YzhjZTI1
M2U5YmM0ZWRjMjA5OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBACisyMDEzLTEwLTI0ICBB
bmRlcnMgQ2FybHNzb24gIDxhbmRlcnNjYUBhcHBsZS5jb20+CisKKyAgICAgICAgU3RvcCBicmlu
Z2luZyBpbiB0aGUgc3RkIG5hbWVzcGFjZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTIzMjczCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL21hYy9XZWJQcm9jZXNzTWFjLm1tOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzOjpwbGF0Zm9ybVNldENhY2hlTW9kZWwpOgorCiAyMDEz
LTEwLTIzICBDaGFuZ1Nlb2sgT2ggIDxjaGFuZ3Nlb2sub2hAY29sbGFib3JhLmNvbT4KIAogICAg
ICAgICBVbnJldmlld2VkIGJ1aWxkIGZpeCBzaW5jZSByMTU3ODIzLgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0J1ZmZlclNvdXJjZU5vZGUuY3BwIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0J1ZmZlclNvdXJjZU5vZGUuY3Bw
CmluZGV4IDliZWMzNDdhYmJmZjE0ZDFkYzAwODRjZWNjNDNjM2M2ZjI1N2JiMzYuLmEzMDdjYWM4
ZmQxMTNjYWQ0YTFiNjNmMmM2ZTU1NzUxN2Q5NWFmMmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9CdWZmZXJTb3VyY2VOb2RlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQnVmZmVyU291cmNlTm9kZS5jcHAKQEAg
LTQwLDggKzQwLDYgQEAKICNpbmNsdWRlIDx3dGYvTWF0aEV4dHJhcy5oPgogI2luY2x1ZGUgPHd0
Zi9TdGRMaWJFeHRyYXMuaD4KIAotdXNpbmcgbmFtZXNwYWNlIHN0ZDsKLQogbmFtZXNwYWNlIFdl
YkNvcmUgewogCiBjb25zdCBkb3VibGUgRGVmYXVsdEdyYWluRHVyYXRpb24gPSAwLjAyMDsgLy8g
MjBtcwpAQCAtMjMxLDcgKzIyOSw3IEBAIGJvb2wgQXVkaW9CdWZmZXJTb3VyY2VOb2RlOjpyZW5k
ZXJGcm9tQnVmZmVyKEF1ZGlvQnVzKiBidXMsIHVuc2lnbmVkIGRlc3RpbmF0aW9uCiAgICAgICAg
IGRvdWJsZSBsb29wU3RhcnRGcmFtZSA9IG1fbG9vcFN0YXJ0ICogYnVmZmVyKCktPnNhbXBsZVJh
dGUoKTsKICAgICAgICAgZG91YmxlIGxvb3BFbmRGcmFtZSA9IG1fbG9vcEVuZCAqIGJ1ZmZlcigp
LT5zYW1wbGVSYXRlKCk7CiAKLSAgICAgICAgdmlydHVhbEVuZEZyYW1lID0gbWluKGxvb3BFbmRG
cmFtZSwgdmlydHVhbEVuZEZyYW1lKTsKKyAgICAgICAgdmlydHVhbEVuZEZyYW1lID0gc3RkOjpt
aW4obG9vcEVuZEZyYW1lLCB2aXJ0dWFsRW5kRnJhbWUpOwogICAgICAgICB2aXJ0dWFsRGVsdGFG
cmFtZXMgPSB2aXJ0dWFsRW5kRnJhbWUgLSBsb29wU3RhcnRGcmFtZTsKICAgICB9CiAKQEAgLTI2
MSw4ICsyNTksOCBAQCBib29sIEF1ZGlvQnVmZmVyU291cmNlTm9kZTo6cmVuZGVyRnJvbUJ1ZmZl
cihBdWRpb0J1cyogYnVzLCB1bnNpZ25lZCBkZXN0aW5hdGlvbgogICAgICAgICBlbmRGcmFtZSA9
IHN0YXRpY19jYXN0PHVuc2lnbmVkPih2aXJ0dWFsRW5kRnJhbWUpOwogICAgICAgICB3aGlsZSAo
ZnJhbWVzVG9Qcm9jZXNzID4gMCkgewogICAgICAgICAgICAgaW50IGZyYW1lc1RvRW5kID0gZW5k
RnJhbWUgLSByZWFkSW5kZXg7Ci0gICAgICAgICAgICBpbnQgZnJhbWVzVGhpc1RpbWUgPSBtaW4o
ZnJhbWVzVG9Qcm9jZXNzLCBmcmFtZXNUb0VuZCk7Ci0gICAgICAgICAgICBmcmFtZXNUaGlzVGlt
ZSA9IG1heCgwLCBmcmFtZXNUaGlzVGltZSk7CisgICAgICAgICAgICBpbnQgZnJhbWVzVGhpc1Rp
bWUgPSBzdGQ6Om1pbihmcmFtZXNUb1Byb2Nlc3MsIGZyYW1lc1RvRW5kKTsKKyAgICAgICAgICAg
IGZyYW1lc1RoaXNUaW1lID0gc3RkOjptYXgoMCwgZnJhbWVzVGhpc1RpbWUpOwogCiAgICAgICAg
ICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbnVtYmVyT2ZDaGFubmVsczsgKytpKSAKICAg
ICAgICAgICAgICAgICBtZW1jcHkoZGVzdGluYXRpb25DaGFubmVsc1tpXSArIHdyaXRlSW5kZXgs
IHNvdXJjZUNoYW5uZWxzW2ldICsgcmVhZEluZGV4LCBzaXplb2YoZmxvYXQpICogZnJhbWVzVGhp
c1RpbWUpOwpAQCAtMzk4LDggKzM5Niw4IEBAIHZvaWQgQXVkaW9CdWZmZXJTb3VyY2VOb2RlOjpz
dGFydEdyYWluKGRvdWJsZSB3aGVuLCBkb3VibGUgZ3JhaW5PZmZzZXQsIGRvdWJsZSBnCiAgICAg
Ly8gRG8gc2FuaXR5IGNoZWNraW5nIG9mIGdyYWluIHBhcmFtZXRlcnMgdmVyc3VzIGJ1ZmZlciBz
aXplLgogICAgIGRvdWJsZSBidWZmZXJEdXJhdGlvbiA9IGJ1ZmZlcigpLT5kdXJhdGlvbigpOwog
Ci0gICAgZ3JhaW5PZmZzZXQgPSBtYXgoMC4wLCBncmFpbk9mZnNldCk7Ci0gICAgZ3JhaW5PZmZz
ZXQgPSBtaW4oYnVmZmVyRHVyYXRpb24sIGdyYWluT2Zmc2V0KTsKKyAgICBncmFpbk9mZnNldCA9
IHN0ZDo6bWF4KDAuMCwgZ3JhaW5PZmZzZXQpOworICAgIGdyYWluT2Zmc2V0ID0gc3RkOjptaW4o
YnVmZmVyRHVyYXRpb24sIGdyYWluT2Zmc2V0KTsKICAgICBtX2dyYWluT2Zmc2V0ID0gZ3JhaW5P
ZmZzZXQ7CiAKICAgICAvLyBIYW5kbGUgZGVmYXVsdC91bnNwZWNpZmllZCBkdXJhdGlvbi4KQEAg
LTQwNyw4ICs0MDUsOCBAQCB2b2lkIEF1ZGlvQnVmZmVyU291cmNlTm9kZTo6c3RhcnRHcmFpbihk
b3VibGUgd2hlbiwgZG91YmxlIGdyYWluT2Zmc2V0LCBkb3VibGUgZwogICAgIGlmICghZ3JhaW5E
dXJhdGlvbikKICAgICAgICAgZ3JhaW5EdXJhdGlvbiA9IG1heER1cmF0aW9uOwogCi0gICAgZ3Jh
aW5EdXJhdGlvbiA9IG1heCgwLjAsIGdyYWluRHVyYXRpb24pOwotICAgIGdyYWluRHVyYXRpb24g
PSBtaW4obWF4RHVyYXRpb24sIGdyYWluRHVyYXRpb24pOworICAgIGdyYWluRHVyYXRpb24gPSBz
dGQ6Om1heCgwLjAsIGdyYWluRHVyYXRpb24pOworICAgIGdyYWluRHVyYXRpb24gPSBzdGQ6Om1p
bihtYXhEdXJhdGlvbiwgZ3JhaW5EdXJhdGlvbik7CiAgICAgbV9ncmFpbkR1cmF0aW9uID0gZ3Jh
aW5EdXJhdGlvbjsKIAogICAgIG1faXNHcmFpbiA9IHRydWU7CkBAIC00NDcsMTAgKzQ0NSwxMCBA
QCBkb3VibGUgQXVkaW9CdWZmZXJTb3VyY2VOb2RlOjp0b3RhbFBpdGNoUmF0ZSgpCiAgICAgZG91
YmxlIHRvdGFsUmF0ZSA9IGRvcHBsZXJSYXRlICogc2FtcGxlUmF0ZUZhY3RvciAqIGJhc2VQaXRj
aFJhdGU7CiAKICAgICAvLyBTYW5pdHkgY2hlY2sgdGhlIHRvdGFsIHJhdGUuICBJdCdzIHZlcnkg
aW1wb3J0YW50IHRoYXQgdGhlIHJlc2FtcGxlciBub3QgZ2V0IGFueSBiYWQgcmF0ZSB2YWx1ZXMu
Ci0gICAgdG90YWxSYXRlID0gbWF4KDAuMCwgdG90YWxSYXRlKTsKKyAgICB0b3RhbFJhdGUgPSBz
dGQ6Om1heCgwLjAsIHRvdGFsUmF0ZSk7CiAgICAgaWYgKCF0b3RhbFJhdGUpCiAgICAgICAgIHRv
dGFsUmF0ZSA9IDE7IC8vIHplcm8gcmF0ZSBpcyBjb25zaWRlcmVkIGlsbGVnYWwKLSAgICB0b3Rh
bFJhdGUgPSBtaW4oTWF4UmF0ZSwgdG90YWxSYXRlKTsKKyAgICB0b3RhbFJhdGUgPSBzdGQ6Om1p
bihNYXhSYXRlLCB0b3RhbFJhdGUpOwogICAgIAogICAgIGJvb2wgaXNUb3RhbFJhdGVWYWxpZCA9
ICFzdGQ6OmlzbmFuKHRvdGFsUmF0ZSkgJiYgIXN0ZDo6aXNpbmYodG90YWxSYXRlKTsKICAgICBB
U1NFUlQoaXNUb3RhbFJhdGVWYWxpZCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmF1ZGlvL0F1ZGlvTm9kZUlucHV0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViYXVkaW8vQXVkaW9Ob2RlSW5wdXQuY3BwCmluZGV4IDZhMmU1ZGQzYjQyZTMwZDE1YjVlNzEz
ZmNlMmU0NTQ2M2Y3MTM4NTIuLmM2MjMzM2QyYjIxOTc4NThiMmU4MGYzMTkwMzBhZjNkZGM4ZWIy
NzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Ob2Rl
SW5wdXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Ob2Rl
SW5wdXQuY3BwCkBAIC0zMyw4ICszMyw2IEBACiAjaW5jbHVkZSAiQXVkaW9Ob2RlT3V0cHV0Lmgi
CiAjaW5jbHVkZSA8YWxnb3JpdGhtPgogCi11c2luZyBuYW1lc3BhY2Ugc3RkOwotIAogbmFtZXNw
YWNlIFdlYkNvcmUgewogCiBBdWRpb05vZGVJbnB1dDo6QXVkaW9Ob2RlSW5wdXQoQXVkaW9Ob2Rl
KiBub2RlKQpAQCAtMTU3LDExICsxNTUsMTEgQEAgdW5zaWduZWQgQXVkaW9Ob2RlSW5wdXQ6Om51
bWJlck9mQ2hhbm5lbHMoKSBjb25zdAogICAgICAgICBBdWRpb05vZGVPdXRwdXQqIG91dHB1dCA9
ICppOwogICAgICAgICAvLyBVc2Ugb3V0cHV0KCktPm51bWJlck9mQ2hhbm5lbHMoKSBpbnN0ZWFk
IG9mIG91dHB1dC0+YnVzKCktPm51bWJlck9mQ2hhbm5lbHMoKSwKICAgICAgICAgLy8gYmVjYXVz
ZSB0aGUgY2FsbGluZyBvZiBBdWRpb05vZGVPdXRwdXQ6OmJ1cygpIGlzIG5vdCBzYWZlIGhlcmUu
Ci0gICAgICAgIG1heENoYW5uZWxzID0gbWF4KG1heENoYW5uZWxzLCBvdXRwdXQtPm51bWJlck9m
Q2hhbm5lbHMoKSk7CisgICAgICAgIG1heENoYW5uZWxzID0gc3RkOjptYXgobWF4Q2hhbm5lbHMs
IG91dHB1dC0+bnVtYmVyT2ZDaGFubmVscygpKTsKICAgICB9CiAKICAgICBpZiAobW9kZSA9PSBB
dWRpb05vZGU6OkNsYW1wZWRNYXgpCi0gICAgICAgIG1heENoYW5uZWxzID0gbWluKG1heENoYW5u
ZWxzLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4obm9kZSgpLT5jaGFubmVsQ291bnQoKSkpOworICAg
ICAgICBtYXhDaGFubmVscyA9IHN0ZDo6bWluKG1heENoYW5uZWxzLCBzdGF0aWNfY2FzdDx1bnNp
Z25lZD4obm9kZSgpLT5jaGFubmVsQ291bnQoKSkpOwogCiAgICAgcmV0dXJuIG1heENoYW5uZWxz
OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1Bh
cmFtVGltZWxpbmUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1Bh
cmFtVGltZWxpbmUuY3BwCmluZGV4IGE2MzY4M2E1ZjQxNzcwYWNhOWRlYjRmNjk4ODE2ZGUzNmY4
NjkyOGMuLjEyMTllNDljZjUwZTU2ODc1ODdjNTIzMWUwZGZiM2MzNzY5ZjYzM2UgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9QYXJhbVRpbWVsaW5lLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvUGFyYW1UaW1lbGlu
ZS5jcHAKQEAgLTM0LDggKzM0LDYgQEAKICNpbmNsdWRlIDxhbGdvcml0aG0+CiAjaW5jbHVkZSA8
d3RmL01hdGhFeHRyYXMuaD4KIAotdXNpbmcgbmFtZXNwYWNlIHN0ZDsKLQogbmFtZXNwYWNlIFdl
YkNvcmUgewogCiB2b2lkIEF1ZGlvUGFyYW1UaW1lbGluZTo6c2V0VmFsdWVBdFRpbWUoZmxvYXQg
dmFsdWUsIGZsb2F0IHRpbWUpCkBAIC0xODksOSArMTg3LDkgQEAgZmxvYXQgQXVkaW9QYXJhbVRp
bWVsaW5lOjp2YWx1ZXNGb3JUaW1lUmFuZ2VJbXBsKAogICAgIC8vIHVudGlsIHdlIHJlYWNoIHRo
ZSBmaXJzdCBldmVudCB0aW1lLgogICAgIGRvdWJsZSBmaXJzdEV2ZW50VGltZSA9IG1fZXZlbnRz
WzBdLnRpbWUoKTsKICAgICBpZiAoZmlyc3RFdmVudFRpbWUgPiBzdGFydFRpbWUpIHsKLSAgICAg
ICAgZG91YmxlIGZpbGxUb1RpbWUgPSBtaW4oZW5kVGltZSwgZmlyc3RFdmVudFRpbWUpOworICAg
ICAgICBkb3VibGUgZmlsbFRvVGltZSA9IHN0ZDo6bWluKGVuZFRpbWUsIGZpcnN0RXZlbnRUaW1l
KTsKICAgICAgICAgdW5zaWduZWQgZmlsbFRvRnJhbWUgPSBBdWRpb1V0aWxpdGllczo6dGltZVRv
U2FtcGxlRnJhbWUoZmlsbFRvVGltZSAtIHN0YXJ0VGltZSwgc2FtcGxlUmF0ZSk7Ci0gICAgICAg
IGZpbGxUb0ZyYW1lID0gbWluKGZpbGxUb0ZyYW1lLCBudW1iZXJPZlZhbHVlcyk7CisgICAgICAg
IGZpbGxUb0ZyYW1lID0gc3RkOjptaW4oZmlsbFRvRnJhbWUsIG51bWJlck9mVmFsdWVzKTsKICAg
ICAgICAgZm9yICg7IHdyaXRlSW5kZXggPCBmaWxsVG9GcmFtZTsgKyt3cml0ZUluZGV4KQogICAg
ICAgICAgICAgdmFsdWVzW3dyaXRlSW5kZXhdID0gZGVmYXVsdFZhbHVlOwogCkBAIC0yMjIsOSAr
MjIwLDkgQEAgZmxvYXQgQXVkaW9QYXJhbVRpbWVsaW5lOjp2YWx1ZXNGb3JUaW1lUmFuZ2VJbXBs
KAogICAgICAgICBmbG9hdCBrID0gZGVsdGFUaW1lID4gMCA/IDEgLyBkZWx0YVRpbWUgOiAwOwog
ICAgICAgICBkb3VibGUgc2FtcGxlRnJhbWVUaW1lSW5jciA9IDEgLyBzYW1wbGVSYXRlOwogCi0g
ICAgICAgIGRvdWJsZSBmaWxsVG9UaW1lID0gbWluKGVuZFRpbWUsIHRpbWUyKTsKKyAgICAgICAg
ZG91YmxlIGZpbGxUb1RpbWUgPSBzdGQ6Om1pbihlbmRUaW1lLCB0aW1lMik7CiAgICAgICAgIHVu
c2lnbmVkIGZpbGxUb0ZyYW1lID0gQXVkaW9VdGlsaXRpZXM6OnRpbWVUb1NhbXBsZUZyYW1lKGZp
bGxUb1RpbWUgLSBzdGFydFRpbWUsIHNhbXBsZVJhdGUpOwotICAgICAgICBmaWxsVG9GcmFtZSA9
IG1pbihmaWxsVG9GcmFtZSwgbnVtYmVyT2ZWYWx1ZXMpOworICAgICAgICBmaWxsVG9GcmFtZSA9
IHN0ZDo6bWluKGZpbGxUb0ZyYW1lLCBudW1iZXJPZlZhbHVlcyk7CiAKICAgICAgICAgUGFyYW1F
dmVudDo6VHlwZSBuZXh0RXZlbnRUeXBlID0gbmV4dEV2ZW50ID8gc3RhdGljX2Nhc3Q8UGFyYW1F
dmVudDo6VHlwZT4obmV4dEV2ZW50LT50eXBlKCkpIDogUGFyYW1FdmVudDo6TGFzdFR5cGUgLyog
dW5rbm93biAqLzsKIApAQCAtMzE2LDkgKzMxNCw5IEBAIGZsb2F0IEF1ZGlvUGFyYW1UaW1lbGlu
ZTo6dmFsdWVzRm9yVGltZVJhbmdlSW1wbCgKICAgICAgICAgICAgICAgICAgICAgLy8gaW5zdGVh
ZCBvZiB0aGUgbmV4dCBldmVudCB0aW1lLgogICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBu
ZXh0RXZlbnRGaWxsVG9GcmFtZSA9IGZpbGxUb0ZyYW1lOwogICAgICAgICAgICAgICAgICAgICBm
bG9hdCBuZXh0RXZlbnRGaWxsVG9UaW1lID0gZmlsbFRvVGltZTsKLSAgICAgICAgICAgICAgICAg
ICAgZmlsbFRvVGltZSA9IG1pbihlbmRUaW1lLCB0aW1lMSArIGR1cmF0aW9uKTsKKyAgICAgICAg
ICAgICAgICAgICAgZmlsbFRvVGltZSA9IHN0ZDo6bWluKGVuZFRpbWUsIHRpbWUxICsgZHVyYXRp
b24pOwogICAgICAgICAgICAgICAgICAgICBmaWxsVG9GcmFtZSA9IEF1ZGlvVXRpbGl0aWVzOjp0
aW1lVG9TYW1wbGVGcmFtZShmaWxsVG9UaW1lIC0gc3RhcnRUaW1lLCBzYW1wbGVSYXRlKTsKLSAg
ICAgICAgICAgICAgICAgICAgZmlsbFRvRnJhbWUgPSBtaW4oZmlsbFRvRnJhbWUsIG51bWJlck9m
VmFsdWVzKTsKKyAgICAgICAgICAgICAgICAgICAgZmlsbFRvRnJhbWUgPSBzdGQ6Om1pbihmaWxs
VG9GcmFtZSwgbnVtYmVyT2ZWYWx1ZXMpOwogCiAgICAgICAgICAgICAgICAgICAgIC8vIEluZGV4
IGludG8gdGhlIGN1cnZlIGRhdGEgdXNpbmcgYSBmbG9hdGluZy1wb2ludCB2YWx1ZS4KICAgICAg
ICAgICAgICAgICAgICAgLy8gV2UncmUgc2NhbGluZyB0aGUgbnVtYmVyIG9mIGN1cnZlIHBvaW50
cyBieSB0aGUgZHVyYXRpb24gKHNlZSBjdXJ2ZVBvaW50c1BlckZyYW1lKS4KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9TY2hlZHVsZWRTb3VyY2VOb2Rl
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9TY2hlZHVsZWRTb3Vy
Y2VOb2RlLmNwcAppbmRleCAwMzYxYjhiZTkwZDkwNzA3ZTY2M2FlMjQ1YmRiMzM1NjhlYzUwMjI4
Li42N2MwMzU5OWU0MzNmMzZiYTc3MTA5YzA0ZTEzNzNhNjQzMTI2YWUwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvU2NoZWR1bGVkU291cmNlTm9kZS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1NjaGVkdWxlZFNv
dXJjZU5vZGUuY3BwCkBAIC0zNSw4ICszNSw2IEBACiAjaW5jbHVkZSA8YWxnb3JpdGhtPgogI2lu
Y2x1ZGUgPHd0Zi9NYXRoRXh0cmFzLmg+CiAKLXVzaW5nIG5hbWVzcGFjZSBzdGQ7Ci0KIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAogY29uc3QgZG91YmxlIEF1ZGlvU2NoZWR1bGVkU291cmNlTm9kZTo6
VW5rbm93blRpbWUgPSAtMTsKQEAgLTkzLDcgKzkxLDcgQEAgdm9pZCBBdWRpb1NjaGVkdWxlZFNv
dXJjZU5vZGU6OnVwZGF0ZVNjaGVkdWxpbmdJbmZvKHNpemVfdCBxdWFudHVtRnJhbWVTaXplLAog
ICAgIH0KIAogICAgIHF1YW50dW1GcmFtZU9mZnNldCA9IHN0YXJ0RnJhbWUgPiBxdWFudHVtU3Rh
cnRGcmFtZSA/IHN0YXJ0RnJhbWUgLSBxdWFudHVtU3RhcnRGcmFtZSA6IDA7Ci0gICAgcXVhbnR1
bUZyYW1lT2Zmc2V0ID0gbWluKHF1YW50dW1GcmFtZU9mZnNldCwgcXVhbnR1bUZyYW1lU2l6ZSk7
IC8vIGNsYW1wIHRvIHZhbGlkIHJhbmdlCisgICAgcXVhbnR1bUZyYW1lT2Zmc2V0ID0gc3RkOjpt
aW4ocXVhbnR1bUZyYW1lT2Zmc2V0LCBxdWFudHVtRnJhbWVTaXplKTsgLy8gY2xhbXAgdG8gdmFs
aWQgcmFuZ2UKICAgICBub25TaWxlbnRGcmFtZXNUb1Byb2Nlc3MgPSBxdWFudHVtRnJhbWVTaXpl
IC0gcXVhbnR1bUZyYW1lT2Zmc2V0OwogCiAgICAgaWYgKCFub25TaWxlbnRGcmFtZXNUb1Byb2Nl
c3MpIHsKQEAgLTE1OSw3ICsxNTcsNyBAQCB2b2lkIEF1ZGlvU2NoZWR1bGVkU291cmNlTm9kZTo6
c3RvcChkb3VibGUgd2hlbiwgRXhjZXB0aW9uQ29kZSYgZWMpCiAgICAgICAgIHJldHVybjsKICAg
ICB9CiAgICAgCi0gICAgd2hlbiA9IG1heCgwLjAsIHdoZW4pOworICAgIHdoZW4gPSBzdGQ6Om1h
eDxkb3VibGU+KDAsIHdoZW4pOwogICAgIG1fZW5kVGltZSA9IHdoZW47CiB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9TdW1taW5nSnVuY3Rpb24u
Y3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1N1bW1pbmdKdW5jdGlv
bi5jcHAKaW5kZXggYWQ4MWNhZGE1YTMwZGE2ZWI3OTdjYTEyYTMzNDEzNmZlZDdhN2E3YS4uZWQ0
MTdmYWRiZDU1ZWU2M2Q2YjhmY2Y4NWRmNzQ3ZGFmZDY4MjhhNCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1N1bW1pbmdKdW5jdGlvbi5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1N1bW1pbmdKdW5jdGlvbi5jcHAK
QEAgLTMyLDggKzMyLDYgQEAKICNpbmNsdWRlICJBdWRpb05vZGVPdXRwdXQuaCIKICNpbmNsdWRl
IDxhbGdvcml0aG0+CiAKLXVzaW5nIG5hbWVzcGFjZSBzdGQ7Ci0KIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAogQXVkaW9TdW1taW5nSnVuY3Rpb246OkF1ZGlvU3VtbWluZ0p1bmN0aW9uKEF1ZGlvQ29u
dGV4dCogY29udGV4dCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVk
aW8vRGVsYXlEU1BLZXJuZWwuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9E
ZWxheURTUEtlcm5lbC5jcHAKaW5kZXggYTM1MDVmMTM3ZWVjODEzOWIyZWM0OTE4ZmQyNzAzNDIy
MGM4OGU4OC4uZGI3MDRiZWY4MzI0N2Q3ODA0MGRhZDRhMjIxMjMxMzJjYWYxZTQyZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9EZWxheURTUEtlcm5lbC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9EZWxheURTUEtlcm5lbC5jcHAK
QEAgLTMxLDggKzMxLDYgQEAKICNpbmNsdWRlICJBdWRpb1V0aWxpdGllcy5oIgogI2luY2x1ZGUg
PGFsZ29yaXRobT4KIAotdXNpbmcgbmFtZXNwYWNlIHN0ZDsKLQogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCiBjb25zdCBmbG9hdCBTbW9vdGhpbmdUaW1lQ29uc3RhbnQgPSAwLjAyMGY7IC8vIDIwbXMK
QEAgLTExMiw4ICsxMTAsOCBAQCB2b2lkIERlbGF5RFNQS2VybmVsOjpwcm9jZXNzKGNvbnN0IGZs
b2F0KiBzb3VyY2UsIGZsb2F0KiBkZXN0aW5hdGlvbiwgc2l6ZV90IGZyYQogICAgICAgICBkZWxh
eVRpbWUgPSBkZWxheVByb2Nlc3NvcigpID8gZGVsYXlQcm9jZXNzb3IoKS0+ZGVsYXlUaW1lKCkt
PmZpbmFsVmFsdWUoKSA6IG1fZGVzaXJlZERlbGF5RnJhbWVzIC8gc2FtcGxlUmF0ZTsKIAogICAg
ICAgICAvLyBNYWtlIHN1cmUgdGhlIGRlbGF5IHRpbWUgaXMgaW4gYSB2YWxpZCByYW5nZS4KLSAg
ICAgICAgZGVsYXlUaW1lID0gbWluKG1heFRpbWUsIGRlbGF5VGltZSk7Ci0gICAgICAgIGRlbGF5
VGltZSA9IG1heCgwLjAsIGRlbGF5VGltZSk7CisgICAgICAgIGRlbGF5VGltZSA9IHN0ZDo6bWlu
KG1heFRpbWUsIGRlbGF5VGltZSk7CisgICAgICAgIGRlbGF5VGltZSA9IHN0ZDo6bWF4KDAuMCwg
ZGVsYXlUaW1lKTsKIAogICAgICAgICBpZiAobV9maXJzdFRpbWUpIHsKICAgICAgICAgICAgIG1f
Y3VycmVudERlbGF5VGltZSA9IGRlbGF5VGltZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViYXVkaW8vT2ZmbGluZUF1ZGlvRGVzdGluYXRpb25Ob2RlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vT2ZmbGluZUF1ZGlvRGVzdGluYXRpb25Ob2RlLmNw
cAppbmRleCBmZjM2NWY2ZDkwNTgxODE2ZWE1ZjYzNjlkMjcwNWM5YmY5ZmM2MmRiLi5mZDMxMjNh
OTFkMDk5NmQwOGJmMTcyNDMwMDkzNWNjODMzMTU3MDIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmF1ZGlvL09mZmxpbmVBdWRpb0Rlc3RpbmF0aW9uTm9kZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9PZmZsaW5lQXVkaW9EZXN0aW5hdGlv
bk5vZGUuY3BwCkBAIC0zMyw4ICszMyw2IEBACiAjaW5jbHVkZSAiSFJURkRhdGFiYXNlTG9hZGVy
LmgiCiAjaW5jbHVkZSA8YWxnb3JpdGhtPgogI2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+Ci0K
LXVzaW5nIG5hbWVzcGFjZSBzdGQ7CiAgCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgCkBAIC0x
MzMsNyArMTMxLDcgQEAgdm9pZCBPZmZsaW5lQXVkaW9EZXN0aW5hdGlvbk5vZGU6Om9mZmxpbmVS
ZW5kZXIoKQogICAgICAgICAvLyBSZW5kZXIgb25lIHJlbmRlciBxdWFudHVtLgogICAgICAgICBy
ZW5kZXIoMCwgbV9yZW5kZXJCdXMuZ2V0KCksIHJlbmRlclF1YW50dW1TaXplKTsKICAgICAgICAg
Ci0gICAgICAgIHNpemVfdCBmcmFtZXNBdmFpbGFibGVUb0NvcHkgPSBtaW4oZnJhbWVzVG9Qcm9j
ZXNzLCByZW5kZXJRdWFudHVtU2l6ZSk7CisgICAgICAgIHNpemVfdCBmcmFtZXNBdmFpbGFibGVU
b0NvcHkgPSBzdGQ6Om1pbihmcmFtZXNUb1Byb2Nlc3MsIHJlbmRlclF1YW50dW1TaXplKTsKICAg
ICAgICAgCiAgICAgICAgIGZvciAodW5zaWduZWQgY2hhbm5lbEluZGV4ID0gMDsgY2hhbm5lbElu
ZGV4IDwgbnVtYmVyT2ZDaGFubmVsczsgKytjaGFubmVsSW5kZXgpIHsKICAgICAgICAgICAgIGNv
bnN0IGZsb2F0KiBzb3VyY2UgPSBtX3JlbmRlckJ1cy0+Y2hhbm5lbChjaGFubmVsSW5kZXgpLT5k
YXRhKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL09zY2ls
bGF0b3JOb2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vT3NjaWxsYXRv
ck5vZGUuY3BwCmluZGV4IGU2OGQ4ZGQ2OTUwOTBjNGE5NmI0ZmU3OTMxN2E5MGU5M2UzOTQ5Mzcu
LjdlYjE0N2Q0MDIyMWQ5NTFhYjU3M2FkYTVkODhmMTQ1MjVlZWRiOGMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vT3NjaWxsYXRvck5vZGUuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vT3NjaWxsYXRvck5vZGUuY3BwCkBAIC0zNyw4
ICszNyw2IEBACiAjaW5jbHVkZSA8YWxnb3JpdGhtPgogI2luY2x1ZGUgPHd0Zi9NYXRoRXh0cmFz
Lmg+CiAKLXVzaW5nIG5hbWVzcGFjZSBzdGQ7Ci0KIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogdXNp
bmcgbmFtZXNwYWNlIFZlY3Rvck1hdGg7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmF1ZGlvL1Bhbm5lck5vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJh
dWRpby9QYW5uZXJOb2RlLmNwcAppbmRleCAxNzE1ZTcxNWM5ZWEzNmM5ZmZlNzJiZDU1OGJmOWQx
OGVkZjI0OWMzLi5iZTkzODY5NjVlY2Q3ZTQ1MTQyYTg1YWJmZTYwNGRmMWQ4MjIwYTczIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1Bhbm5lck5vZGUuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vUGFubmVyTm9kZS5jcHAKQEAgLTM4
LDggKzM4LDYgQEAKICNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCiAjaW5jbHVk
ZSA8d3RmL01hdGhFeHRyYXMuaD4KIAotdXNpbmcgbmFtZXNwYWNlIHN0ZDsKLQogbmFtZXNwYWNl
IFdlYkNvcmUgewogCiBzdGF0aWMgdm9pZCBmaXhOQU5zKGRvdWJsZSAmeCkKQEAgLTM1Myw4ICsz
NTEsOCBAQCBmbG9hdCBQYW5uZXJOb2RlOjpkb3BwbGVyUmF0ZSgpCiAgICAgICAgICAgICBzb3Vy
Y2VQcm9qZWN0aW9uID0gLXNvdXJjZVByb2plY3Rpb247CiAKICAgICAgICAgICAgIGRvdWJsZSBz
Y2FsZWRTcGVlZE9mU291bmQgPSBzcGVlZE9mU291bmQgLyBkb3BwbGVyRmFjdG9yOwotICAgICAg
ICAgICAgbGlzdGVuZXJQcm9qZWN0aW9uID0gbWluKGxpc3RlbmVyUHJvamVjdGlvbiwgc2NhbGVk
U3BlZWRPZlNvdW5kKTsKLSAgICAgICAgICAgIHNvdXJjZVByb2plY3Rpb24gPSBtaW4oc291cmNl
UHJvamVjdGlvbiwgc2NhbGVkU3BlZWRPZlNvdW5kKTsKKyAgICAgICAgICAgIGxpc3RlbmVyUHJv
amVjdGlvbiA9IHN0ZDo6bWluKGxpc3RlbmVyUHJvamVjdGlvbiwgc2NhbGVkU3BlZWRPZlNvdW5k
KTsKKyAgICAgICAgICAgIHNvdXJjZVByb2plY3Rpb24gPSBzdGQ6Om1pbihzb3VyY2VQcm9qZWN0
aW9uLCBzY2FsZWRTcGVlZE9mU291bmQpOwogCiAgICAgICAgICAgICBkb3BwbGVyU2hpZnQgPSAo
KHNwZWVkT2ZTb3VuZCAtIGRvcHBsZXJGYWN0b3IgKiBsaXN0ZW5lclByb2plY3Rpb24pIC8gKHNw
ZWVkT2ZTb3VuZCAtIGRvcHBsZXJGYWN0b3IgKiBzb3VyY2VQcm9qZWN0aW9uKSk7CiAgICAgICAg
ICAgICBmaXhOQU5zKGRvcHBsZXJTaGlmdCk7IC8vIGF2b2lkIGlsbGVnYWwgdmFsdWVzCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1dhdmVTaGFwZXJEU1BLZXJu
ZWwuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9XYXZlU2hhcGVyRFNQS2Vy
bmVsLmNwcAppbmRleCA0MzEzZjBkNjQyMzhmYzVjOTMwMDQ2Njc2NDA1N2Y1OTlmNjMyYzUxLi5l
NThhZDFiMjI1NTY5YWRkOTE4ZDQ1YmMxZDUwYzVjY2JjM2I4ZTZiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1dhdmVTaGFwZXJEU1BLZXJuZWwuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vV2F2ZVNoYXBlckRTUEtlcm5lbC5jcHAK
QEAgLTM1LDggKzM1LDYgQEAKIAogY29uc3QgdW5zaWduZWQgUmVuZGVyaW5nUXVhbnR1bSA9IDEy
ODsKIAotdXNpbmcgbmFtZXNwYWNlIHN0ZDsKLQogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBXYXZl
U2hhcGVyRFNQS2VybmVsOjpXYXZlU2hhcGVyRFNQS2VybmVsKFdhdmVTaGFwZXJQcm9jZXNzb3Iq
IHByb2Nlc3NvcikKQEAgLTExMiwxMCArMTEwLDEwIEBAIHZvaWQgV2F2ZVNoYXBlckRTUEtlcm5l
bDo6cHJvY2Vzc0N1cnZlKGNvbnN0IGZsb2F0KiBzb3VyY2UsIGZsb2F0KiBkZXN0aW5hdGlvbiwK
IAogICAgICAgICAvLyBDbGlwIGluZGV4IHRvIHRoZSBpbnB1dCByYW5nZSBvZiB0aGUgY3VydmUu
CiAgICAgICAgIC8vIFRoaXMgdGFrZXMgY2FyZSBvZiBpbnB1dCBvdXRzaWRlIG9mIG5vbWluYWwg
cmFuZ2UgLTEgLT4gKzEKLSAgICAgICAgaW5kZXgxID0gbWF4KGluZGV4MSwgMCk7Ci0gICAgICAg
IGluZGV4MSA9IG1pbihpbmRleDEsIGN1cnZlTGVuZ3RoIC0gMSk7Ci0gICAgICAgIGluZGV4MiA9
IG1heChpbmRleDIsIDApOwotICAgICAgICBpbmRleDIgPSBtaW4oaW5kZXgyLCBjdXJ2ZUxlbmd0
aCAtIDEpOworICAgICAgICBpbmRleDEgPSBzdGQ6Om1heChpbmRleDEsIDApOworICAgICAgICBp
bmRleDEgPSBzdGQ6Om1pbihpbmRleDEsIGN1cnZlTGVuZ3RoIC0gMSk7CisgICAgICAgIGluZGV4
MiA9IHN0ZDo6bWF4KGluZGV4MiwgMCk7CisgICAgICAgIGluZGV4MiA9IHN0ZDo6bWluKGluZGV4
MiwgY3VydmVMZW5ndGggLSAxKTsKIAogICAgICAgICBkb3VibGUgdmFsdWUxID0gY3VydmVEYXRh
W2luZGV4MV07CiAgICAgICAgIGRvdWJsZSB2YWx1ZTIgPSBjdXJ2ZURhdGFbaW5kZXgyXTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VUcmFj
a2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VUcmFj
a2VyLmNwcAppbmRleCAyMWY5ZGQ2NTMyNDllZmJiZmUxMjBhYWIzZThjMzM4YjJjYWE5Y2UyLi5l
ZjM3NWI2NmQwZTQzODQ5ZDRjMmFiYzQ2NzI5OTE5M2ZhODAxZDg4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlVHJhY2tlci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZVRyYWNrZXIuY3BwCkBA
IC01MCw4ICs1MCw2IEBACiAjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgogI2luY2x1ZGUg
PHd0Zi90ZXh0L0NTdHJpbmcuaD4KIAotdXNpbmcgbmFtZXNwYWNlIHN0ZDsKLQogbmFtZXNwYWNl
IFdlYkNvcmUgewogCiBzdGF0aWMgRGF0YWJhc2VUcmFja2VyKiBzdGF0aWNUcmFja2VyID0gMDsK
QEAgLTE0MSw3ICsxMzksNyBAQCBib29sIERhdGFiYXNlVHJhY2tlcjo6aGFzQWRlcXVhdGVRdW90
YUZvck9yaWdpbihTZWN1cml0eU9yaWdpbiogb3JpZ2luLCB1bnNpZ25lZAogICAgIHVuc2lnbmVk
IGxvbmcgbG9uZyB1c2FnZSA9IHVzYWdlRm9yT3JpZ2luKG9yaWdpbik7CiAKICAgICAvLyBJZiB0
aGUgZGF0YWJhc2Ugd2lsbCBmaXQsIGFsbG93IGl0cyBjcmVhdGlvbi4KLSAgICB1bnNpZ25lZCBs
b25nIGxvbmcgcmVxdWlyZW1lbnQgPSB1c2FnZSArIG1heCgxVUwsIGVzdGltYXRlZFNpemUpOwor
ICAgIHVuc2lnbmVkIGxvbmcgbG9uZyByZXF1aXJlbWVudCA9IHVzYWdlICsgc3RkOjptYXg8dW5z
aWduZWQgbG9uZyBsb25nPigxLCBlc3RpbWF0ZWRTaXplKTsKICAgICBpZiAocmVxdWlyZW1lbnQg
PCB1c2FnZSkgewogICAgICAgICAvLyBUaGUgZXN0aW1hdGVkIHNpemUgaXMgc28gYmlnIGl0IGNh
dXNlcyBhbiBvdmVyZmxvdzsgZG9uJ3QgYWxsb3cgY3JlYXRpb24uCiAgICAgICAgIGVyciA9IERh
dGFiYXNlRXJyb3I6OkRhdGFiYXNlU2l6ZU92ZXJmbG93ZWQ7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXQuY3BwCmluZGV4IDlhMTUzOTFjNmQ3YjJhMmRh
OWY3NjRjNWM2ZTc0M2NhYWJiYmJmNTcuLjA3N2E2YjY4YjRjMzBkOWYxNWM3N2FkNmVhMjU2OWY2
NzU1NjU3ZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9X
ZWJTb2NrZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJT
b2NrZXQuY3BwCkBAIC02NCw4ICs2NCw2IEBACiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVp
bGRlci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCi11c2luZyBuYW1lc3Bh
Y2Ugc3RkOwotCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNvbnN0IHNpemVfdCBtYXhSZWFzb25T
aXplSW5CeXRlcyA9IDEyMzsKQEAgLTEyMSw4ICsxMTksOCBAQCBzdGF0aWMgU3RyaW5nIGpvaW5T
dHJpbmdzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBzdHJpbmdzLCBjb25zdCBjaGFyKiBzZXBhcmF0
b3IpCiAKIHN0YXRpYyB1bnNpZ25lZCBsb25nIHNhdHVyYXRlQWRkKHVuc2lnbmVkIGxvbmcgYSwg
dW5zaWduZWQgbG9uZyBiKQogewotICAgIGlmIChudW1lcmljX2xpbWl0czx1bnNpZ25lZCBsb25n
Pjo6bWF4KCkgLSBhIDwgYikKLSAgICAgICAgcmV0dXJuIG51bWVyaWNfbGltaXRzPHVuc2lnbmVk
IGxvbmc+OjptYXgoKTsKKyAgICBpZiAoc3RkOjpudW1lcmljX2xpbWl0czx1bnNpZ25lZCBsb25n
Pjo6bWF4KCkgLSBhIDwgYikKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVtZXJpY19saW1pdHM8dW5z
aWduZWQgbG9uZz46Om1heCgpOwogICAgIHJldHVybiBhICsgYjsKIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldENoYW5uZWwuY3BwIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldENoYW5uZWwuY3BwCmlu
ZGV4IDY0OWY5N2U2YWVmNzQ2ZjU1YTdhMjE5NjgyN2ExMGU1NjM4MzUxY2QuLjcxNjRlZGMxZWI2
Y2FjM2VjOWYzNDIyM2ViZWQ2NDkxMjlkZjQzYzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRDaGFubmVsLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0Q2hhbm5lbC5jcHAKQEAgLTY2LDggKzY2
LDYgQEAKICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdIYXNoLmg+CiAjaW5jbHVkZSA8d3RmL3Rl
eHQvV1RGU3RyaW5nLmg+CiAKLXVzaW5nIG5hbWVzcGFjZSBzdGQ7Ci0KIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAogY29uc3QgZG91YmxlIFRDUE1heGltdW1TZWdtZW50TGlmZXRpbWUgPSAyICogNjAu
MDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2Nr
ZXRGcmFtZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0
RnJhbWUuY3BwCmluZGV4IGEyODc2ZWFkYmYxNjUwZmZmYWE4NDFkNTgwYTg3MTI4MTc3NTI4ZGYu
LjE2YmI0NThiMzNiOGQ2NmJiYWFlMTI2OTRiNTMwNjIyNzBiODFiZGEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRGcmFtZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldEZyYW1lLmNwcApAQCAt
MjksOCArMjksNiBAQAogI2luY2x1ZGUgPHd0Zi9DcnlwdG9ncmFwaGljYWxseVJhbmRvbU51bWJl
ci5oPgogI2luY2x1ZGUgPHd0Zi9NYXRoRXh0cmFzLmg+CiAKLXVzaW5nIG5hbWVzcGFjZSBzdGQ7
Ci0KIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogLy8gQ29uc3RhbnRzIGZvciBoeWJpLTEwIGZyYW1l
IGZvcm1hdC4KQEAgLTk3LDcgKzk1LDcgQEAgV2ViU29ja2V0RnJhbWU6OlBhcnNlRnJhbWVSZXN1
bHQgV2ViU29ja2V0RnJhbWU6OnBhcnNlRnJhbWUoY2hhciogZGF0YSwgc2l6ZV90IGQKIAogICAg
IHN0YXRpYyBjb25zdCB1aW50NjRfdCBtYXhQYXlsb2FkTGVuZ3RoID0gVUlOVDY0X0MoMHg3RkZG
RkZGRkZGRkZGRkZGKTsKICAgICBzaXplX3QgbWFza2luZ0tleUxlbmd0aCA9IG1hc2tlZCA/IG1h
c2tpbmdLZXlXaWR0aEluQnl0ZXMgOiAwOwotICAgIGlmIChwYXlsb2FkTGVuZ3RoNjQgPiBtYXhQ
YXlsb2FkTGVuZ3RoIHx8IHBheWxvYWRMZW5ndGg2NCArIG1hc2tpbmdLZXlMZW5ndGggPiBudW1l
cmljX2xpbWl0czxzaXplX3Q+OjptYXgoKSkgeworICAgIGlmIChwYXlsb2FkTGVuZ3RoNjQgPiBt
YXhQYXlsb2FkTGVuZ3RoIHx8IHBheWxvYWRMZW5ndGg2NCArIG1hc2tpbmdLZXlMZW5ndGggPiBz
dGQ6Om51bWVyaWNfbGltaXRzPHNpemVfdD46Om1heCgpKSB7CiAgICAgICAgIGVycm9yU3RyaW5n
ID0gIldlYlNvY2tldCBmcmFtZSBsZW5ndGggdG9vIGxhcmdlOiAiICsgU3RyaW5nOjpudW1iZXIo
cGF5bG9hZExlbmd0aDY0KSArICIgYnl0ZXMiOwogICAgICAgICByZXR1cm4gRnJhbWVFcnJvcjsK
ICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2li
aWxpdHlBUklBR3JpZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2li
aWxpdHlBUklBR3JpZC5jcHAKaW5kZXggYzVlYzliZjA0MjFjMjc5MTgzNmJlMjM1MjU3MDQ4ZDJm
MDg4YzJhYy4uZWI3NDRkY2JlMDFkODZiMmM1NjQ5ZTAxYzJiNzU1NTkzZDhmNGI1YyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5QVJJQUdyaWQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eUFSSUFH
cmlkLmNwcApAQCAtMzYsOCArMzYsNiBAQAogI2luY2x1ZGUgIkFjY2Vzc2liaWxpdHlUYWJsZVJv
dy5oIgogI2luY2x1ZGUgIlJlbmRlck9iamVjdC5oIgogCi11c2luZyBuYW1lc3BhY2Ugc3RkOwot
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIEFjY2Vzc2liaWxpdHlBUklBR3JpZDo6QWNjZXNzaWJp
bGl0eUFSSUFHcmlkKFJlbmRlck9iamVjdCogcmVuZGVyZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlBUklBR3JpZENlbGwuY3BwIGIvU291
cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5QVJJQUdyaWRDZWxsLmNwcApp
bmRleCA5YzNiMTY3OWRhYzdlNjE3MWU3NjllMDk0Zjg5NTM1OTIyNTk5NTc5Li4zZjZiNDQyYzNk
ZmZiMmJiYTZiMTdmZjUxMGIxOTNhZjg4N2VkMTk4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlBUklBR3JpZENlbGwuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eUFSSUFHcmlkQ2VsbC5jcHAKQEAg
LTMzLDggKzMzLDYgQEAKICNpbmNsdWRlICJBY2Nlc3NpYmlsaXR5VGFibGUuaCIKICNpbmNsdWRl
ICJBY2Nlc3NpYmlsaXR5VGFibGVSb3cuaCIKIAotdXNpbmcgbmFtZXNwYWNlIHN0ZDsKLQogbmFt
ZXNwYWNlIFdlYkNvcmUgewogICAgIAogQWNjZXNzaWJpbGl0eUFSSUFHcmlkQ2VsbDo6QWNjZXNz
aWJpbGl0eUFSSUFHcmlkQ2VsbChSZW5kZXJPYmplY3QqIHJlbmRlcmVyKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5QVJJQUdyaWRSb3cuY3Bw
IGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5QVJJQUdyaWRSb3cu
Y3BwCmluZGV4IDM5ZWRmNzAyZjg3MjNhM2Q1MTMzNTg5YzI3NDcxNTY0NTU4NWVmOTQuLmQwOGQy
NzllZDE4MjAwOTdiNzhkZjQ4M2ZkZDE2OWY3OGQyMmEwODMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eUFSSUFHcmlkUm93LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlBUklBR3JpZFJvdy5jcHAK
QEAgLTMzLDggKzMzLDYgQEAKICNpbmNsdWRlICJBY2Nlc3NpYmlsaXR5VGFibGUuaCIKICNpbmNs
dWRlICJSZW5kZXJPYmplY3QuaCIKIAotdXNpbmcgbmFtZXNwYWNlIHN0ZDsKLQogbmFtZXNwYWNl
IFdlYkNvcmUgewogICAgIAogQWNjZXNzaWJpbGl0eUFSSUFHcmlkUm93OjpBY2Nlc3NpYmlsaXR5
QVJJQUdyaWRSb3coUmVuZGVyT2JqZWN0KiByZW5kZXJlcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eUxpc3QuY3BwIGIvU291cmNlL1dlYkNv
cmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5TGlzdC5jcHAKaW5kZXggODAzOWNmMDM0YmIz
OTBkMDQ5NDYyYmY1ZjA4NzcwZmVlOGQzZWRiNi4uYTI0MDZiYTc2MzcwMGMxMzMxNTlhYmE0Yjk0
ZGJlYzVmYjE0NzY5NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9B
Y2Nlc3NpYmlsaXR5TGlzdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9B
Y2Nlc3NpYmlsaXR5TGlzdC5jcHAKQEAgLTMzLDggKzMzLDYgQEAKICNpbmNsdWRlICJIVE1MTmFt
ZXMuaCIKICNpbmNsdWRlICJSZW5kZXJPYmplY3QuaCIKIAotdXNpbmcgbmFtZXNwYWNlIHN0ZDsK
LQogbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIAogdXNpbmcgbmFtZXNwYWNlIEhUTUxOYW1lczsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eUxp
c3RCb3guY3BwIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5TGlz
dEJveC5jcHAKaW5kZXggMGYwODY4NzZlZGNhNjA3NDQ1ZjhmNzA4NjFkY2NjNWVlOTg2ODdhYy4u
N2EzYzk3MTBmODFmMWNiNjBjMjMwMDg5MTFiMjVjOGQ3NDZjNzFlNSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5TGlzdEJveC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5TGlzdEJveC5jcHAKQEAg
LTM3LDggKzM3LDYgQEAKICNpbmNsdWRlICJSZW5kZXJMaXN0Qm94LmgiCiAjaW5jbHVkZSAiUmVu
ZGVyT2JqZWN0LmgiCiAKLXVzaW5nIG5hbWVzcGFjZSBzdGQ7Ci0KIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAogdXNpbmcgbmFtZXNwYWNlIEhUTUxOYW1lczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eUxpc3RCb3hPcHRpb24uY3BwIGIvU291cmNl
L1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5TGlzdEJveE9wdGlvbi5jcHAKaW5k
ZXggNDg0YTIwZDg2YmY0YTNkNWU3NzBmYjFjMTI1MmNiMGUzYmVkMjJkZC4uZDJiMjQzYzU3Mzhm
MTZkZWU5NzBhODVlNjJmZmYxZDk2YjhjZDViOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
YWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5TGlzdEJveE9wdGlvbi5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5TGlzdEJveE9wdGlvbi5jcHAKQEAg
LTQxLDggKzQxLDYgQEAKICNpbmNsdWRlICJSZW5kZXJMaXN0Qm94LmgiCiAjaW5jbHVkZSAiUmVu
ZGVyT2JqZWN0LmgiCiAKLXVzaW5nIG5hbWVzcGFjZSBzdGQ7Ci0KIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAogdXNpbmcgbmFtZXNwYWNlIEhUTUxOYW1lczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU5vZGVPYmplY3QuY3BwIGIvU291cmNlL1dl
YkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdC5jcHAKaW5kZXggMWIz
OGNiYmJmNDVmODUzNTg0NWZlYmUxNDYxNGRmMDc4MjdhZjg0NS4uZjUwYjRiM2E2YzliYzc5MmE5
OWYwNDcwMzM5YWY3Njg4NGMyZDU4NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9BY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
YWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdC5jcHAKQEAgLTgyLDggKzgyLDYg
QEAKICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+CiAjaW5jbHVkZSA8d3RmL3Vu
aWNvZGUvQ2hhcmFjdGVyTmFtZXMuaD4KIAotdXNpbmcgbmFtZXNwYWNlIHN0ZDsKLQogbmFtZXNw
YWNlIFdlYkNvcmUgewogCiB1c2luZyBuYW1lc3BhY2UgSFRNTE5hbWVzOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5jcHAKaW5kZXgg
Zjg1NTdmMGIwMWYzM2U3NjI4MGM1MzRjODJlOTVlMzE3NjgyY2ZmOC4uZmEzMTRhZDAxNDcxODVl
NTU5MTM4NjA4N2NmMTU1MTg4ZjhkMDY5ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNj
ZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9h
Y2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuY3BwCkBAIC02Nyw4ICs2Nyw2IEBACiAj
aW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAjaW5jbHVkZSA8d3RmL3VuaWNvZGUvQ2hh
cmFjdGVyTmFtZXMuaD4KIAotdXNpbmcgbmFtZXNwYWNlIHN0ZDsKLQogbmFtZXNwYWNlIFdlYkNv
cmUgewogCiB1c2luZyBuYW1lc3BhY2UgSFRNTE5hbWVzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5jcHAKaW5k
ZXggM2NhMmE5NGUzNWI1Mjg1MmJmY2Y3YTVlN2M0M2ZkZTNiOTYwMjViNy4uNWMwNDRhMmYxZTZj
ZTAxNjg1MWFiYzMwYTM0YjY1ZGFjODQyMGVjZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
YWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3BwCkBAIC0x
MDEsOCArMTAxLDYgQEAKICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+CiAjaW5j
bHVkZSA8d3RmL3VuaWNvZGUvQ2hhcmFjdGVyTmFtZXMuaD4KIAotdXNpbmcgbmFtZXNwYWNlIHN0
ZDsKLQogbmFtZXNwYWNlIFdlYkNvcmUgewogCiB1c2luZyBuYW1lc3BhY2UgSFRNTE5hbWVzOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFi
bGUuY3BwIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFibGUu
Y3BwCmluZGV4IDMzOTUyOWZhODU2MjlmNWY1Y2I3NjcxMmU1OTYxMzg4ZWM2NTI1MzMuLjRjNDA0
NzAyN2E5MTIzNzQ3ZTkxOWQ1YWFjOGZmYjFmOThkMDVlMmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlUYWJsZS5jcHAKQEAgLTM4Miw3ICsz
ODIsNyBAQCB2b2lkIEFjY2Vzc2liaWxpdHlUYWJsZTo6YWRkQ2hpbGRyZW4oKQogICAgICAgICAg
ICAgYXBwZW5kZWRSb3dzLmFkZChyb3cpOwogICAgICAgICB9CiAgICAgCi0gICAgICAgIG1heENv
bHVtbkNvdW50ID0gbWF4KHRhYmxlU2VjdGlvbi0+bnVtQ29sdW1ucygpLCBtYXhDb2x1bW5Db3Vu
dCk7CisgICAgICAgIG1heENvbHVtbkNvdW50ID0gc3RkOjptYXgodGFibGVTZWN0aW9uLT5udW1D
b2x1bW5zKCksIG1heENvbHVtbkNvdW50KTsKICAgICAgICAgdGFibGVTZWN0aW9uID0gdGFibGUt
PnNlY3Rpb25CZWxvdyh0YWJsZVNlY3Rpb24sIFNraXBFbXB0eVNlY3Rpb25zKTsKICAgICB9CiAg
ICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxp
dHlUYWJsZUNlbGwuY3BwIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmls
aXR5VGFibGVDZWxsLmNwcAppbmRleCA1MzVhZmVkNDk2NmJiN2MzYmM3ZGQwNGVmMzJhMTBiODY4
ZmMzYWRmLi44YTJjZDU3NTllMWEwOGIxMmVhNjQ5ZjE3NGVkMzdkNGY4YzRjMWRiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlUYWJsZUNlbGwu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxl
Q2VsbC5jcHAKQEAgLTM0LDggKzM0LDYgQEAKICNpbmNsdWRlICJSZW5kZXJPYmplY3QuaCIKICNp
bmNsdWRlICJSZW5kZXJUYWJsZUNlbGwuaCIKIAotdXNpbmcgbmFtZXNwYWNlIHN0ZDsKLQogbmFt
ZXNwYWNlIFdlYkNvcmUgewogICAgIAogdXNpbmcgbmFtZXNwYWNlIEhUTUxOYW1lczsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxlQ29s
dW1uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxl
Q29sdW1uLmNwcAppbmRleCBjNDc5Yzg2NjI0OWMyMTRhYjQ1M2QzZjljMDc5MTBiNzQ0NDVlYWFj
Li4xYTU1OTQzNDAwNmRmMjA4MzgxYzc2Mzk3MzFmMThlOGViMTc4NjlmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlUYWJsZUNvbHVtbi5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFibGVDb2x1
bW4uY3BwCkBAIC0zNiw4ICszNiw2IEBACiAjaW5jbHVkZSAiUmVuZGVyVGFibGVDZWxsLmgiCiAj
aW5jbHVkZSAiUmVuZGVyVGFibGVTZWN0aW9uLmgiCiAKLXVzaW5nIG5hbWVzcGFjZSBzdGQ7Ci0K
IG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAKIHVzaW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlUYWJs
ZUhlYWRlckNvbnRhaW5lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vz
c2liaWxpdHlUYWJsZUhlYWRlckNvbnRhaW5lci5jcHAKaW5kZXggOGEwOTEyZDMxNTVmMjQ4NTZk
MjcxYmFjNDVlYTU3OTViOWU0ZmMyMS4uMDE5ZjMxMjMwMjdjYTBiZTczZGFiNjdhMzE3ZmMxNjFi
M2UwZjNiZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3Np
YmlsaXR5VGFibGVIZWFkZXJDb250YWluZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vz
c2liaWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxlSGVhZGVyQ29udGFpbmVyLmNwcApAQCAtMzIsOCAr
MzIsNiBAQAogI2luY2x1ZGUgIkFYT2JqZWN0Q2FjaGUuaCIKICNpbmNsdWRlICJBY2Nlc3NpYmls
aXR5VGFibGUuaCIKIAotdXNpbmcgbmFtZXNwYWNlIHN0ZDsKLQogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCiBBY2Nlc3NpYmlsaXR5VGFibGVIZWFkZXJDb250YWluZXI6OkFjY2Vzc2liaWxpdHlUYWJs
ZUhlYWRlckNvbnRhaW5lcigpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L0FjY2Vzc2liaWxpdHlUYWJsZVJvdy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L0FjY2Vzc2liaWxpdHlUYWJsZVJvdy5jcHAKaW5kZXggNDRlZGFkYTI4YmQ3N2YzMDBmZjQ0
MDNhMDg4MzE4OWJmY2QyNjg1ZS4uNjUzYTA2MjAzMDg3YThkNjRmYjljNzZjM2RjODUzZjdiNGJk
MGQzNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmls
aXR5VGFibGVSb3cuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNz
aWJpbGl0eVRhYmxlUm93LmNwcApAQCAtMzcsOCArMzcsNiBAQAogI2luY2x1ZGUgIlJlbmRlclRh
YmxlQ2VsbC5oIgogI2luY2x1ZGUgIlJlbmRlclRhYmxlUm93LmgiCiAKLXVzaW5nIG5hbWVzcGFj
ZSBzdGQ7Ci0KIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAKIHVzaW5nIG5hbWVzcGFjZSBIVE1M
TmFtZXM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9XZWJB
Y2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlckJhc2UubW0gYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3Np
YmlsaXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlckJhc2UubW0KaW5kZXggZDFi
ODQxN2Y5NzA4Yjg5Zjg1YjVhNzc4NDU1MDNiMjIxNTUxMWMyMi4uMWNhZjRiM2FlZDU2ZTAxNGZm
ZDU0MmEyN2UyMGNkYTRmNGUwZmFhMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJCYXNlLm1tCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFw
cGVyQmFzZS5tbQpAQCAtNzUsNyArNzUsNiBAQAogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsK
IHVzaW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7Ci11c2luZyBuYW1lc3BhY2Ugc3RkOwogCiBzdGF0
aWMgTlNBcnJheSAqY29udmVydE1hdGhQYWlyc1RvTlNBcnJheShjb25zdCBBY2Nlc3NpYmlsaXR5
T2JqZWN0OjpBY2Nlc3NpYmlsaXR5TWF0aE11bHRpc2NyaXB0UGFpcnMmIHBhaXJzLCBOU1N0cmlu
ZyAqc3Vic2NyaXB0S2V5LCBOU1N0cmluZyAqc3VwZXJzY3JpcHRLZXkpCiB7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0
V3JhcHBlck1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vz
c2liaWxpdHlPYmplY3RXcmFwcGVyTWFjLm1tCmluZGV4IDhlMjM5MjBlYjk5YmI1ODE5ODg3Yzdj
NDIxOGI2MzUyNGRlYmMzMDEuLmE4YTJkMTkxYTk2NGVlY2Y3OTQ3ZDMxNDQzMzQ0ODYyMjNkYmRi
YWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vz
c2liaWxpdHlPYmplY3RXcmFwcGVyTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2li
aWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyTWFjLm1tCkBAIC03Nyw3ICs3
Nyw2IEBACiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogdXNpbmcgbmFtZXNwYWNlIEhUTUxO
YW1lczsKLXVzaW5nIG5hbWVzcGFjZSBzdGQ7CiAKIC8vIENlbGwgVGFibGVzCiAjaWZuZGVmIE5T
QWNjZXNzaWJpbGl0eVNlbGVjdGVkQ2VsbHNBdHRyaWJ1dGUKQEAgLTM2MTksNyArMzYxOCw3IEBA
IHN0YXRpYyBSZW5kZXJPYmplY3QqIHJlbmRlcmVyRm9yVmlldyhOU1ZpZXcqIHZpZXcpCiAgICAg
ICAgICAgICBpZiAoaW5kZXggPj0gY2hpbGRDb3VudCkKICAgICAgICAgICAgICAgICByZXR1cm4g
bmlsOwogICAgICAgICAgICAgCi0gICAgICAgICAgICBOU1VJbnRlZ2VyIGFycmF5TGVuZ3RoID0g
bWluKGNoaWxkQ291bnQgLSBpbmRleCwgbWF4Q291bnQpOworICAgICAgICAgICAgTlNVSW50ZWdl
ciBhcnJheUxlbmd0aCA9IHN0ZDo6bWluKGNoaWxkQ291bnQgLSBpbmRleCwgbWF4Q291bnQpOwog
ICAgICAgICAgICAgcmV0dXJuIFtjaGlsZHJlbiBzdWJhcnJheVdpdGhSYW5nZTpOU01ha2VSYW5n
ZShpbmRleCwgYXJyYXlMZW5ndGgpXTsKICAgICAgICAgfSBlbHNlIGlmIChtX29iamVjdC0+aXNU
cmVlKCkpIHsKICAgICAgICAgICAgIC8vIFRyZWUgb2JqZWN0cyByZXR1cm4gdGhlaXIgcm93cyBh
cyB0aGVpciBjaGlsZHJlbi4gV2UgY2FuIHVzZSB0aGUgb3JpZ2luYWwgbWV0aG9kIGluIHRoaXMg
Y2FzZS4KQEAgLTM2MzEsNyArMzYzMCw3IEBAIHN0YXRpYyBSZW5kZXJPYmplY3QqIHJlbmRlcmVy
Rm9yVmlldyhOU1ZpZXcqIHZpZXcpCiAgICAgICAgIGlmIChpbmRleCA+PSBjaGlsZENvdW50KQog
ICAgICAgICAgICAgcmV0dXJuIG5pbDsKICAgICAgICAgCi0gICAgICAgIHVuc2lnbmVkIGF2YWls
YWJsZSA9IG1pbihjaGlsZENvdW50IC0gaW5kZXgsIG1heENvdW50KTsKKyAgICAgICAgdW5zaWdu
ZWQgYXZhaWxhYmxlID0gc3RkOjptaW4oY2hpbGRDb3VudCAtIGluZGV4LCBtYXhDb3VudCk7CiAg
ICAgICAgIAogICAgICAgICBOU011dGFibGVBcnJheSAqc3ViYXJyYXkgPSBbTlNNdXRhYmxlQXJy
YXkgYXJyYXlXaXRoQ2FwYWNpdHk6YXZhaWxhYmxlXTsKICAgICAgICAgZm9yICh1bnNpZ25lZCBh
ZGRlZCA9IDA7IGFkZGVkIDwgYXZhaWxhYmxlOyArK2luZGV4LCArK2FkZGVkKSB7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0NTU1N0eWxlRGVjbGFyYXRpb25DdXN0
b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDU1NTdHlsZURlY2xhcmF0aW9u
Q3VzdG9tLmNwcAppbmRleCA2NjQ4OGJmYWY4ZTJhYTZjYzZmNWI4ZTVjYWQ0NWUzYmM3OTkwYTc3
Li4wYWI5OGNlNGNiZDdjOWVjZGIyY2U4NDk1NWJlMWM2NWYwNjNmNWQ3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0NTU1N0eWxlRGVjbGFyYXRpb25DdXN0b20uY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ1NTU3R5bGVEZWNsYXJhdGlvbkN1
c3RvbS5jcHAKQEAgLTQ1LDcgKzQ1LDYgQEAKIAogdXNpbmcgbmFtZXNwYWNlIEpTQzsKIHVzaW5n
IG5hbWVzcGFjZSBXVEY7Ci11c2luZyBuYW1lc3BhY2Ugc3RkOwogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKQEAgLTM4OSw3ICszODgsNyBAQCB2b2lkIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbjo6Z2V0
T3duUHJvcGVydHlOYW1lcyhKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZQogICAgICAg
ICBWZWN0b3I8U3RyaW5nLCBudW1DU1NQcm9wZXJ0aWVzPiBqc1Byb3BlcnR5TmFtZXM7CiAgICAg
ICAgIGZvciAoaW50IGlkID0gZmlyc3RDU1NQcm9wZXJ0eTsgaWQgPCBmaXJzdENTU1Byb3BlcnR5
ICsgbnVtQ1NTUHJvcGVydGllczsgKytpZCkKICAgICAgICAgICAgIGpzUHJvcGVydHlOYW1lcy5h
cHBlbmQoZ2V0SlNQcm9wZXJ0eU5hbWUoc3RhdGljX2Nhc3Q8Q1NTUHJvcGVydHlJRD4oaWQpKSk7
Ci0gICAgICAgIHNvcnQoanNQcm9wZXJ0eU5hbWVzLmJlZ2luKCksIGpzUHJvcGVydHlOYW1lcy5l
bmQoKSwgV1RGOjpjb2RlUG9pbnRDb21wYXJlTGVzc1RoYW4pOworICAgICAgICBzdGQ6OnNvcnQo
anNQcm9wZXJ0eU5hbWVzLmJlZ2luKCksIGpzUHJvcGVydHlOYW1lcy5lbmQoKSwgV1RGOjpjb2Rl
UG9pbnRDb21wYXJlTGVzc1RoYW4pOwogCiAgICAgICAgIHByb3BlcnR5SWRlbnRpZmllcnMgPSBu
ZXcgSWRlbnRpZmllcltudW1DU1NQcm9wZXJ0aWVzXTsKICAgICAgICAgZm9yIChpbnQgaSA9IDA7
IGkgPCBudW1DU1NQcm9wZXJ0aWVzOyArK2kpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU0dlb2xvY2F0aW9uQ3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTR2VvbG9jYXRpb25DdXN0b20uY3BwCmluZGV4IGNiMDA3NDQxZTM4NDVkYzUxN2Yx
MTljZjZlZGUzYWRjOTM2YmQxZWEuLmQxYTJkYWExYTViMTQ1NWRkMTdkYzU0NjhjNWY0ODQzMzk2
M2M5YTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTR2VvbG9jYXRp
b25DdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTR2VvbG9jYXRp
b25DdXN0b20uY3BwCkBAIC0zOCw3ICszOCw2IEBACiAjaW5jbHVkZSAiUG9zaXRpb25PcHRpb25z
LmgiCiAKIHVzaW5nIG5hbWVzcGFjZSBKU0M7Ci11c2luZyBuYW1lc3BhY2Ugc3RkOwogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKQEAgLTU0LDcgKzUzLDcgQEAgc3RhdGljIHZvaWQgc2V0VGltZW91
dChQb3NpdGlvbk9wdGlvbnMqIG9wdGlvbnMsIGNvbnN0IGRvdWJsZSYgdGltZW91dCkKICAgICAv
LyBJZiB0aGUgdmFsdWUgaXMgcG9zaXRpdmUgaW5maW5pdHksIHRoZXJlJ3Mgbm90aGluZyB0byBk
by4KICAgICBpZiAoIShzdGQ6OmlzaW5mKHRpbWVvdXQpICYmICh0aW1lb3V0ID4gMCkpKSB7CiAg
ICAgICAgIC8vIFdyYXAgdG8gaW50MzIgYW5kIGZvcmNlIG5vbi1uZWdhdGl2ZSB0byBtYXRjaCBi
ZWhhdmlvciBvZiB3aW5kb3cuc2V0VGltZW91dC4KLSAgICAgICAgb3B0aW9ucy0+c2V0VGltZW91
dChtYXgoMCwgc3RhdGljX2Nhc3Q8aW50Pih0aW1lb3V0KSkpOworICAgICAgICBvcHRpb25zLT5z
ZXRUaW1lb3V0KHN0ZDo6bWF4PGludD4oMCwgdGltZW91dCkpOwogICAgIH0KIH0KIApAQCAtNjUs
NyArNjQsNyBAQCBzdGF0aWMgdm9pZCBzZXRNYXhpbXVtQWdlKFBvc2l0aW9uT3B0aW9ucyogb3B0
aW9ucywgY29uc3QgZG91YmxlJiBtYXhpbXVtQWdlKQogICAgICAgICBvcHRpb25zLT5jbGVhck1h
eGltdW1BZ2UoKTsKICAgICB9IGVsc2UgewogICAgICAgICAvLyBXcmFwIHRvIGludDMyIGFuZCBm
b3JjZSBub24tbmVnYXRpdmUgdG8gbWF0Y2ggYmVoYXZpb3Igb2Ygd2luZG93LnNldFRpbWVvdXQu
Ci0gICAgICAgIG9wdGlvbnMtPnNldE1heGltdW1BZ2UobWF4KDAsIHN0YXRpY19jYXN0PGludD4o
bWF4aW11bUFnZSkpKTsKKyAgICAgICAgb3B0aW9ucy0+c2V0TWF4aW11bUFnZShzdGQ6Om1heDxp
bnQ+KDAsIG1heGltdW1BZ2UpKTsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlci5jcHAKaW5kZXggNDFhZDQwODNlODVjNWYwNzQ1Y2Fl
ZDI4MGRkMDdhZjIyYTBlNWE1Yy4uZTZjNzhjNWU0N2E3MjU0OWY2NjAzNmY4NmY1NWQ4NGZlZWZi
ZDU3MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q29udHJv
bGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxl
ci5jcHAKQEAgLTU2LDcgKzU2LDYgQEAKICNpbmNsdWRlIDx3dGYvdGV4dC9UZXh0UG9zaXRpb24u
aD4KIAogdXNpbmcgbmFtZXNwYWNlIEpTQzsKLXVzaW5nIG5hbWVzcGFjZSBzdGQ7CiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
U2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1Nl
cmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHAKaW5kZXggZGU0YzcyOTFhMTgxODJjZmIwNDUwMTg1YTFl
YjE2ODc0MmMyZTY2MS4uYTUzNWMzNDkyMDM3NGIwZTdhNzczZDU2YmQ1N2U4YmY3OTQyYmM3ZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZh
bHVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0
VmFsdWUuY3BwCkBAIC02OSw3ICs2OSw2IEBACiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogCiB1
c2luZyBuYW1lc3BhY2UgSlNDOwotdXNpbmcgbmFtZXNwYWNlIHN0ZDsKIAogI2lmIENQVShCSUdf
RU5ESUFOKSB8fCBDUFUoTUlERExFX0VORElBTikgfHwgQ1BVKE5FRURTX0FMSUdORURfQUNDRVNT
KQogI2RlZmluZSBBU1NVTUVfTElUVExFX0VORElBTiAwCkBAIC0zMTIsNyArMzExLDcgQEAgdGVt
cGxhdGUgPD4gdm9pZCB3cml0ZUxpdHRsZUVuZGlhbjx1aW50OF90PihWZWN0b3I8dWludDhfdD4m
IGJ1ZmZlciwgdWludDhfdCB2YWwKIAogdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IHN0YXRpYyBib29s
IHdyaXRlTGl0dGxlRW5kaWFuKFZlY3Rvcjx1aW50OF90PiYgYnVmZmVyLCBjb25zdCBUKiB2YWx1
ZXMsIHVpbnQzMl90IGxlbmd0aCkKIHsKLSAgICBpZiAobGVuZ3RoID4gbnVtZXJpY19saW1pdHM8
dWludDMyX3Q+OjptYXgoKSAvIHNpemVvZihUKSkKKyAgICBpZiAobGVuZ3RoID4gc3RkOjpudW1l
cmljX2xpbWl0czx1aW50MzJfdD46Om1heCgpIC8gc2l6ZW9mKFQpKQogICAgICAgICByZXR1cm4g
ZmFsc2U7CiAKICNpZiBBU1NVTUVfTElUVExFX0VORElBTgpAQCAtODIxLDcgKzgyMCw3IEBAIHBy
aXZhdGU6CiAgICAgICAgIH0KIAogICAgICAgICAvLyBHdWFyZCBhZ2FpbnN0IG92ZXJmbG93Ci0g
ICAgICAgIGlmIChzdHIubGVuZ3RoKCkgPiAobnVtZXJpY19saW1pdHM8dWludDMyX3Q+OjptYXgo
KSAtIHNpemVvZih1aW50MzJfdCkpIC8gc2l6ZW9mKFVDaGFyKSkgeworICAgICAgICBpZiAoc3Ry
Lmxlbmd0aCgpID4gKHN0ZDo6bnVtZXJpY19saW1pdHM8dWludDMyX3Q+OjptYXgoKSAtIHNpemVv
Zih1aW50MzJfdCkpIC8gc2l6ZW9mKFVDaGFyKSkgewogICAgICAgICAgICAgZmFpbCgpOwogICAg
ICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CkBAIC0xMTA5LDEwICsxMTA4LDEwIEBAIHB1Ymxp
YzoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFZl
Y3Rvcjx1aW50OF90PiYgYnVmZmVyKQogICAgIHsKICAgICAgICAgaWYgKCFidWZmZXIuc2l6ZSgp
KQotICAgICAgICAgICAgcmV0dXJuIG1ha2VfcGFpcihqc051bGwoKSwgVW5zcGVjaWZpZWRFcnJv
cik7CisgICAgICAgICAgICByZXR1cm4gc3RkOjptYWtlX3BhaXIoanNOdWxsKCksIFVuc3BlY2lm
aWVkRXJyb3IpOwogICAgICAgICBDbG9uZURlc2VyaWFsaXplciBkZXNlcmlhbGl6ZXIoZXhlYywg
Z2xvYmFsT2JqZWN0LCBtZXNzYWdlUG9ydHMsIGFycmF5QnVmZmVyQ29udGVudHNBcnJheSwgYnVm
ZmVyKTsKICAgICAgICAgaWYgKCFkZXNlcmlhbGl6ZXIuaXNWYWxpZCgpKQotICAgICAgICAgICAg
cmV0dXJuIG1ha2VfcGFpcihKU1ZhbHVlKCksIFZhbGlkYXRpb25FcnJvcik7CisgICAgICAgICAg
ICByZXR1cm4gc3RkOjptYWtlX3BhaXIoSlNWYWx1ZSgpLCBWYWxpZGF0aW9uRXJyb3IpOwogICAg
ICAgICByZXR1cm4gZGVzZXJpYWxpemVyLmRlc2VyaWFsaXplKCk7CiAgICAgfQogCkBAIC0xMjgz
LDcgKzEyODIsNyBAQCBwcml2YXRlOgogCiAgICAgc3RhdGljIGJvb2wgcmVhZFN0cmluZyhjb25z
dCB1aW50OF90KiYgcHRyLCBjb25zdCB1aW50OF90KiBlbmQsIFN0cmluZyYgc3RyLCB1bnNpZ25l
ZCBsZW5ndGgpCiAgICAgewotICAgICAgICBpZiAobGVuZ3RoID49IG51bWVyaWNfbGltaXRzPGlu
dDMyX3Q+OjptYXgoKSAvIHNpemVvZihVQ2hhcikpCisgICAgICAgIGlmIChsZW5ndGggPj0gc3Rk
OjpudW1lcmljX2xpbWl0czxpbnQzMl90Pjo6bWF4KCkgLyBzaXplb2YoVUNoYXIpKQogICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgICAgIHVuc2lnbmVkIHNpemUgPSBsZW5ndGggKiBz
aXplb2YoVUNoYXIpOwpAQCAtMTc0OCw3ICsxNzQ3LDcgQEAgRGVzZXJpYWxpemF0aW9uUmVzdWx0
IENsb25lRGVzZXJpYWxpemVyOjpkZXNlcmlhbGl6ZSgpCiAgICAgICAgIG9iamVjdFN0YXJ0U3Rh
dGU6CiAgICAgICAgIGNhc2UgT2JqZWN0U3RhcnRTdGF0ZTogewogICAgICAgICAgICAgaWYgKG91
dHB1dE9iamVjdFN0YWNrLnNpemUoKSA+IG1heGltdW1GaWx0ZXJSZWN1cnNpb24pCi0gICAgICAg
ICAgICAgICAgcmV0dXJuIG1ha2VfcGFpcihKU1ZhbHVlKCksIFN0YWNrT3ZlcmZsb3dFcnJvcik7
CisgICAgICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV9wYWlyKEpTVmFsdWUoKSwgU3RhY2tP
dmVyZmxvd0Vycm9yKTsKICAgICAgICAgICAgIEpTT2JqZWN0KiBvdXRPYmplY3QgPSBjb25zdHJ1
Y3RFbXB0eU9iamVjdChtX2V4ZWMsIG1fZ2xvYmFsT2JqZWN0LT5vYmplY3RQcm90b3R5cGUoKSk7
CiAgICAgICAgICAgICBtX2djQnVmZmVyLmFwcGVuZChvdXRPYmplY3QpOwogICAgICAgICAgICAg
b3V0cHV0T2JqZWN0U3RhY2suYXBwZW5kKG91dE9iamVjdCk7CkBAIC0xNzgzLDcgKzE3ODIsNyBA
QCBEZXNlcmlhbGl6YXRpb25SZXN1bHQgQ2xvbmVEZXNlcmlhbGl6ZXI6OmRlc2VyaWFsaXplKCkK
ICAgICAgICAgfQogICAgICAgICBtYXBPYmplY3RTdGFydFN0YXRlOiB7CiAgICAgICAgICAgICBp
ZiAob3V0cHV0T2JqZWN0U3RhY2suc2l6ZSgpID4gbWF4aW11bUZpbHRlclJlY3Vyc2lvbikKLSAg
ICAgICAgICAgICAgICByZXR1cm4gbWFrZV9wYWlyKEpTVmFsdWUoKSwgU3RhY2tPdmVyZmxvd0Vy
cm9yKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gc3RkOjptYWtlX3BhaXIoSlNWYWx1ZSgpLCBT
dGFja092ZXJmbG93RXJyb3IpOwogICAgICAgICAgICAgSlNNYXAqIG1hcCA9IEpTTWFwOjpjcmVh
dGUobV9leGVjLT52bSgpLCBtX2dsb2JhbE9iamVjdC0+bWFwU3RydWN0dXJlKCkpOwogICAgICAg
ICAgICAgbV9nY0J1ZmZlci5hcHBlbmQobWFwKTsKICAgICAgICAgICAgIG91dHB1dE9iamVjdFN0
YWNrLmFwcGVuZChtYXApOwpAQCAtMTc5Myw3ICsxNzkyLDcgQEAgRGVzZXJpYWxpemF0aW9uUmVz
dWx0IENsb25lRGVzZXJpYWxpemVyOjpkZXNlcmlhbGl6ZSgpCiAgICAgICAgIH0KICAgICAgICAg
c2V0T2JqZWN0U3RhcnRTdGF0ZTogewogICAgICAgICAgICAgaWYgKG91dHB1dE9iamVjdFN0YWNr
LnNpemUoKSA+IG1heGltdW1GaWx0ZXJSZWN1cnNpb24pCi0gICAgICAgICAgICAgICAgcmV0dXJu
IG1ha2VfcGFpcihKU1ZhbHVlKCksIFN0YWNrT3ZlcmZsb3dFcnJvcik7CisgICAgICAgICAgICAg
ICAgcmV0dXJuIHN0ZDo6bWFrZV9wYWlyKEpTVmFsdWUoKSwgU3RhY2tPdmVyZmxvd0Vycm9yKTsK
ICAgICAgICAgICAgIEpTU2V0KiBzZXQgPSBKU1NldDo6Y3JlYXRlKG1fZXhlYy0+dm0oKSwgbV9n
bG9iYWxPYmplY3QtPnNldFN0cnVjdHVyZSgpKTsKICAgICAgICAgICAgIG1fZ2NCdWZmZXIuYXBw
ZW5kKHNldCk7CiAgICAgICAgICAgICBvdXRwdXRPYmplY3RTdGFjay5hcHBlbmQoc2V0KTsKQEAg
LTE4NDcsMTAgKzE4NDYsMTAgQEAgRGVzZXJpYWxpemF0aW9uUmVzdWx0IENsb25lRGVzZXJpYWxp
emVyOjpkZXNlcmlhbGl6ZSgpCiAgICAgfQogICAgIEFTU0VSVChvdXRWYWx1ZSk7CiAgICAgQVNT
RVJUKCFtX2ZhaWxlZCk7Ci0gICAgcmV0dXJuIG1ha2VfcGFpcihvdXRWYWx1ZSwgU3VjY2Vzc2Z1
bGx5Q29tcGxldGVkKTsKKyAgICByZXR1cm4gc3RkOjptYWtlX3BhaXIob3V0VmFsdWUsIFN1Y2Nl
c3NmdWxseUNvbXBsZXRlZCk7CiBlcnJvcjoKICAgICBmYWlsKCk7Ci0gICAgcmV0dXJuIG1ha2Vf
cGFpcihKU1ZhbHVlKCksIFZhbGlkYXRpb25FcnJvcik7CisgICAgcmV0dXJuIHN0ZDo6bWFrZV9w
YWlyKEpTVmFsdWUoKSwgVmFsaWRhdGlvbkVycm9yKTsKIH0KIAogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9DU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uY3BwCmluZGV4IGQxYmVhMDRk
NTUzYmY2OTZmMTZiODEyMjBkOTk0MjMxMzhkNDdiN2MuLjU2NWZmNTk0ZTRlZDJmNDY2YmY2NjA0
ODFkMGM0ZjgzMjczZDQyNzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDb21w
dXRlZFN0eWxlRGVjbGFyYXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDb21w
dXRlZFN0eWxlRGVjbGFyYXRpb24uY3BwCkBAIC0yMzAyLDcgKzIzMDIsNyBAQCBQYXNzUmVmUHRy
PENTU1ZhbHVlPiBDb21wdXRlZFN0eWxlRXh0cmFjdG9yOjpwcm9wZXJ0eVZhbHVlKENTU1Byb3Bl
cnR5SUQgcHJvcGVydAogICAgICAgICBjYXNlIENTU1Byb3BlcnR5T3V0bGluZVdpZHRoOgogICAg
ICAgICAgICAgcmV0dXJuIHpvb21BZGp1c3RlZFBpeGVsVmFsdWUoc3R5bGUtPm91dGxpbmVXaWR0
aCgpLCBzdHlsZS5nZXQoKSk7CiAgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlPdmVyZmxvdzoKLSAg
ICAgICAgICAgIHJldHVybiBjc3NWYWx1ZVBvb2woKS5jcmVhdGVWYWx1ZShtYXgoc3R5bGUtPm92
ZXJmbG93WCgpLCBzdHlsZS0+b3ZlcmZsb3dZKCkpKTsKKyAgICAgICAgICAgIHJldHVybiBjc3NW
YWx1ZVBvb2woKS5jcmVhdGVWYWx1ZShzdGQ6Om1heChzdHlsZS0+b3ZlcmZsb3dYKCksIHN0eWxl
LT5vdmVyZmxvd1koKSkpOwogICAgICAgICBjYXNlIENTU1Byb3BlcnR5T3ZlcmZsb3dXcmFwOgog
ICAgICAgICAgICAgcmV0dXJuIGNzc1ZhbHVlUG9vbCgpLmNyZWF0ZVZhbHVlKHN0eWxlLT5vdmVy
Zmxvd1dyYXAoKSk7CiAgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlPdmVyZmxvd1g6CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udFNlbGVjdG9yLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2Nzcy9DU1NGb250U2VsZWN0b3IuY3BwCmluZGV4IDFhNjRjN2EwN2ZiNzRmMTU0YzZmOTNj
ZDBmOTFjOTU5NGRkZWU2NDkuLjIxMWRmYTVjYjRkZDAxOTk1NmExMzhmMGZhY2MwZmY0M2VkZGFh
ZWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250U2VsZWN0b3IuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250U2VsZWN0b3IuY3BwCkBAIC01Nyw4ICs1Nyw2
IEBACiAjaW5jbHVkZSAiU1ZHTmFtZXMuaCIKICNlbmRpZgogCi11c2luZyBuYW1lc3BhY2Ugc3Rk
OwotCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHN0YXRpYyB1bnNpZ25lZCBmb250U2VsZWN0b3JJ
ZDsKQEAgLTU1MCw3ICs1NDgsNyBAQCBDU1NTZWdtZW50ZWRGb250RmFjZSogQ1NTRm9udFNlbGVj
dG9yOjpnZXRGb250RmFjZShjb25zdCBGb250RGVzY3JpcHRpb24mIGZvbnREZQogICAgICAgICB9
CiAKICAgICAgICAgZGVzaXJlZFRyYWl0c01hc2tGb3JDb21wYXJpc29uID0gdHJhaXRzTWFzazsK
LSAgICAgICAgc3RhYmxlX3NvcnQoY2FuZGlkYXRlRm9udEZhY2VzLmJlZ2luKCksIGNhbmRpZGF0
ZUZvbnRGYWNlcy5lbmQoKSwgY29tcGFyZUZvbnRGYWNlcyk7CisgICAgICAgIHN0ZDo6c3RhYmxl
X3NvcnQoY2FuZGlkYXRlRm9udEZhY2VzLmJlZ2luKCksIGNhbmRpZGF0ZUZvbnRGYWNlcy5lbmQo
KSwgY29tcGFyZUZvbnRGYWNlcyk7CiAgICAgICAgIHVuc2lnbmVkIG51bUNhbmRpZGF0ZXMgPSBj
YW5kaWRhdGVGb250RmFjZXMuc2l6ZSgpOwogICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBp
IDwgbnVtQ2FuZGlkYXRlczsgKytpKQogICAgICAgICAgICAgZmFjZS0+YXBwZW5kRm9udEZhY2Uo
Y2FuZGlkYXRlRm9udEZhY2VzW2ldKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9D
U1NHcmFkaWVudFZhbHVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NHcmFkaWVudFZhbHVl
LmNwcAppbmRleCBiZDM4MmNhZWUxOTRiMDFhYjI3NTBmYjViMmJjY2JiMDI2ZWE5YjQ1Li5lMzNk
ZTNkODUxNDczMzAwYzAxMWUwMDdhYmUzMThkYTBjZmZiMGNlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9jc3MvQ1NTR3JhZGllbnRWYWx1ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3Nz
L0NTU0dyYWRpZW50VmFsdWUuY3BwCkBAIC0zOSw4ICszOSw2IEBACiAjaW5jbHVkZSA8d3RmL3Rl
eHQvU3RyaW5nQnVpbGRlci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCi11
c2luZyBuYW1lc3BhY2Ugc3RkOwotCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFBhc3NSZWZQdHI8
SW1hZ2U+IENTU0dyYWRpZW50VmFsdWU6OmltYWdlKFJlbmRlckVsZW1lbnQqIHJlbmRlcmVyLCBj
b25zdCBJbnRTaXplJiBzaXplKQpAQCAtMTA0OSwxMCArMTA0NywxMCBAQCBQYXNzUmVmUHRyPEdy
YWRpZW50PiBDU1NSYWRpYWxHcmFkaWVudFZhbHVlOjpjcmVhdGVHcmFkaWVudChSZW5kZXJFbGVt
ZW50KiByZW5kZQogICAgICAgICAvLyBIb3Jpem9udGFsCiAgICAgICAgIHN3aXRjaCAoZmlsbCkg
ewogICAgICAgICBjYXNlIENsb3Nlc3RTaWRlOiB7Ci0gICAgICAgICAgICBmbG9hdCB4RGlzdCA9
IG1pbihzZWNvbmRQb2ludC54KCksIHNpemUud2lkdGgoKSAtIHNlY29uZFBvaW50LngoKSk7Ci0g
ICAgICAgICAgICBmbG9hdCB5RGlzdCA9IG1pbihzZWNvbmRQb2ludC55KCksIHNpemUuaGVpZ2h0
KCkgLSBzZWNvbmRQb2ludC55KCkpOworICAgICAgICAgICAgZmxvYXQgeERpc3QgPSBzdGQ6Om1p
bihzZWNvbmRQb2ludC54KCksIHNpemUud2lkdGgoKSAtIHNlY29uZFBvaW50LngoKSk7CisgICAg
ICAgICAgICBmbG9hdCB5RGlzdCA9IHN0ZDo6bWluKHNlY29uZFBvaW50LnkoKSwgc2l6ZS5oZWln
aHQoKSAtIHNlY29uZFBvaW50LnkoKSk7CiAgICAgICAgICAgICBpZiAoc2hhcGUgPT0gQ2lyY2xl
KSB7Ci0gICAgICAgICAgICAgICAgZmxvYXQgc21hbGxlciA9IG1pbih4RGlzdCwgeURpc3QpOwor
ICAgICAgICAgICAgICAgIGZsb2F0IHNtYWxsZXIgPSBzdGQ6Om1pbih4RGlzdCwgeURpc3QpOwog
ICAgICAgICAgICAgICAgIHhEaXN0ID0gc21hbGxlcjsKICAgICAgICAgICAgICAgICB5RGlzdCA9
IHNtYWxsZXI7CiAgICAgICAgICAgICB9CkBAIC0xMDYxLDEwICsxMDU5LDEwIEBAIFBhc3NSZWZQ
dHI8R3JhZGllbnQ+IENTU1JhZGlhbEdyYWRpZW50VmFsdWU6OmNyZWF0ZUdyYWRpZW50KFJlbmRl
ckVsZW1lbnQqIHJlbmRlCiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBj
YXNlIEZhcnRoZXN0U2lkZTogewotICAgICAgICAgICAgZmxvYXQgeERpc3QgPSBtYXgoc2Vjb25k
UG9pbnQueCgpLCBzaXplLndpZHRoKCkgLSBzZWNvbmRQb2ludC54KCkpOwotICAgICAgICAgICAg
ZmxvYXQgeURpc3QgPSBtYXgoc2Vjb25kUG9pbnQueSgpLCBzaXplLmhlaWdodCgpIC0gc2Vjb25k
UG9pbnQueSgpKTsKKyAgICAgICAgICAgIGZsb2F0IHhEaXN0ID0gc3RkOjptYXgoc2Vjb25kUG9p
bnQueCgpLCBzaXplLndpZHRoKCkgLSBzZWNvbmRQb2ludC54KCkpOworICAgICAgICAgICAgZmxv
YXQgeURpc3QgPSBzdGQ6Om1heChzZWNvbmRQb2ludC55KCksIHNpemUuaGVpZ2h0KCkgLSBzZWNv
bmRQb2ludC55KCkpOwogICAgICAgICAgICAgaWYgKHNoYXBlID09IENpcmNsZSkgewotICAgICAg
ICAgICAgICAgIGZsb2F0IGxhcmdlciA9IG1heCh4RGlzdCwgeURpc3QpOworICAgICAgICAgICAg
ICAgIGZsb2F0IGxhcmdlciA9IHN0ZDo6bWF4KHhEaXN0LCB5RGlzdCk7CiAgICAgICAgICAgICAg
ICAgeERpc3QgPSBsYXJnZXI7CiAgICAgICAgICAgICAgICAgeURpc3QgPSBsYXJnZXI7CiAgICAg
ICAgICAgICB9CkBAIC0xMDgwLDggKzEwNzgsOCBAQCBQYXNzUmVmUHRyPEdyYWRpZW50PiBDU1NS
YWRpYWxHcmFkaWVudFZhbHVlOjpjcmVhdGVHcmFkaWVudChSZW5kZXJFbGVtZW50KiByZW5kZQog
ICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgLy8gSWYgPHNoYXBlPiBpcyBlbGxp
cHNlLCB0aGUgZ3JhZGllbnQtc2hhcGUgaGFzIHRoZSBzYW1lIHJhdGlvIG9mIHdpZHRoIHRvIGhl
aWdodAogICAgICAgICAgICAgICAgIC8vIHRoYXQgaXQgd291bGQgaWYgY2xvc2VzdC1zaWRlIG9y
IGZhcnRoZXN0LXNpZGUgd2VyZSBzcGVjaWZpZWQsIGFzIGFwcHJvcHJpYXRlLgotICAgICAgICAg
ICAgICAgIGZsb2F0IHhEaXN0ID0gbWluKHNlY29uZFBvaW50LngoKSwgc2l6ZS53aWR0aCgpIC0g
c2Vjb25kUG9pbnQueCgpKTsKLSAgICAgICAgICAgICAgICBmbG9hdCB5RGlzdCA9IG1pbihzZWNv
bmRQb2ludC55KCksIHNpemUuaGVpZ2h0KCkgLSBzZWNvbmRQb2ludC55KCkpOworICAgICAgICAg
ICAgICAgIGZsb2F0IHhEaXN0ID0gc3RkOjptaW4oc2Vjb25kUG9pbnQueCgpLCBzaXplLndpZHRo
KCkgLSBzZWNvbmRQb2ludC54KCkpOworICAgICAgICAgICAgICAgIGZsb2F0IHlEaXN0ID0gc3Rk
OjptaW4oc2Vjb25kUG9pbnQueSgpLCBzaXplLmhlaWdodCgpIC0gc2Vjb25kUG9pbnQueSgpKTsK
IAogICAgICAgICAgICAgICAgIHNlY29uZFJhZGl1cyA9IGhvcml6b250YWxFbGxpcHNlUmFkaXVz
KGNvcm5lciAtIHNlY29uZFBvaW50LCB4RGlzdCAvIHlEaXN0KTsKICAgICAgICAgICAgICAgICBh
c3BlY3RSYXRpbyA9IHhEaXN0IC8geURpc3Q7CkBAIC0xMDk3LDggKzEwOTUsOCBAQCBQYXNzUmVm
UHRyPEdyYWRpZW50PiBDU1NSYWRpYWxHcmFkaWVudFZhbHVlOjpjcmVhdGVHcmFkaWVudChSZW5k
ZXJFbGVtZW50KiByZW5kZQogICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgLy8g
SWYgPHNoYXBlPiBpcyBlbGxpcHNlLCB0aGUgZ3JhZGllbnQtc2hhcGUgaGFzIHRoZSBzYW1lIHJh
dGlvIG9mIHdpZHRoIHRvIGhlaWdodAogICAgICAgICAgICAgICAgIC8vIHRoYXQgaXQgd291bGQg
aWYgY2xvc2VzdC1zaWRlIG9yIGZhcnRoZXN0LXNpZGUgd2VyZSBzcGVjaWZpZWQsIGFzIGFwcHJv
cHJpYXRlLgotICAgICAgICAgICAgICAgIGZsb2F0IHhEaXN0ID0gbWF4KHNlY29uZFBvaW50Lngo
KSwgc2l6ZS53aWR0aCgpIC0gc2Vjb25kUG9pbnQueCgpKTsKLSAgICAgICAgICAgICAgICBmbG9h
dCB5RGlzdCA9IG1heChzZWNvbmRQb2ludC55KCksIHNpemUuaGVpZ2h0KCkgLSBzZWNvbmRQb2lu
dC55KCkpOworICAgICAgICAgICAgICAgIGZsb2F0IHhEaXN0ID0gc3RkOjptYXgoc2Vjb25kUG9p
bnQueCgpLCBzaXplLndpZHRoKCkgLSBzZWNvbmRQb2ludC54KCkpOworICAgICAgICAgICAgICAg
IGZsb2F0IHlEaXN0ID0gc3RkOjptYXgoc2Vjb25kUG9pbnQueSgpLCBzaXplLmhlaWdodCgpIC0g
c2Vjb25kUG9pbnQueSgpKTsKIAogICAgICAgICAgICAgICAgIHNlY29uZFJhZGl1cyA9IGhvcml6
b250YWxFbGxpcHNlUmFkaXVzKGNvcm5lciAtIHNlY29uZFBvaW50LCB4RGlzdCAvIHlEaXN0KTsK
ICAgICAgICAgICAgICAgICBhc3BlY3RSYXRpbyA9IHhEaXN0IC8geURpc3Q7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9D
U1NQYXJzZXIuY3BwCmluZGV4IGE1MGY0MWEwODVjMjFiMTA5MWNlNzAwNTExMmM3MDNiYWIxMzdk
YTkuLmEzYzRjMjExMWRiZjVhNTYyYWE3NjUxNTgzYzVhYmMxYWQ5MjFhYWEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nz
cy9DU1NQYXJzZXIuY3BwCkBAIC0xMjcsNyArMTI3LDYgQEAgZXh0ZXJuIGludCBjc3N5eWRlYnVn
OwogCiBleHRlcm4gaW50IGNzc3l5cGFyc2UoV2ViQ29yZTo6Q1NTUGFyc2VyKik7CiAKLXVzaW5n
IG5hbWVzcGFjZSBzdGQ7CiB1c2luZyBuYW1lc3BhY2UgV1RGOwogCiBuYW1lc3BhY2UgewpAQCAt
MjU2OSw4ICsyNTY4LDcgQEAgYm9vbCBDU1NQYXJzZXI6OnBhcnNlVmFsdWUoQ1NTUHJvcGVydHlJ
RCBwcm9wSWQsIGJvb2wgaW1wb3J0YW50KQogICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRPcmRl
cjoKICAgICAgICAgaWYgKHZhbGlkVW5pdCh2YWx1ZSwgRkludGVnZXIsIENTU1N0cmljdE1vZGUp
KSB7CiAgICAgICAgICAgICAvLyBXZSByZXN0cmljdCB0aGUgc21hbGxlc3QgdmFsdWUgdG8gaW50
IG1pbiArIDIgYmVjYXVzZSB3ZSB1c2UgaW50IG1pbiBhbmQgaW50IG1pbiArIDEgYXMgc3BlY2lh
bCB2YWx1ZXMgaW4gYSBoYXNoIHNldC4KLSAgICAgICAgICAgIHBhcnNlZFZhbHVlID0gY3NzVmFs
dWVQb29sKCkuY3JlYXRlVmFsdWUobWF4KHN0YXRpY19jYXN0PGRvdWJsZT4oc3RkOjpudW1lcmlj
X2xpbWl0czxpbnQ+OjptaW4oKSArIDIpLCB2YWx1ZS0+ZlZhbHVlKSwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0aWNfY2Fz
dDxDU1NQcmltaXRpdmVWYWx1ZTo6VW5pdFR5cGVzPih2YWx1ZS0+dW5pdCkpOworICAgICAgICAg
ICAgcGFyc2VkVmFsdWUgPSBjc3NWYWx1ZVBvb2woKS5jcmVhdGVWYWx1ZShzdGQ6Om1heDxkb3Vi
bGU+KHN0ZDo6bnVtZXJpY19saW1pdHM8aW50Pjo6bWluKCkgKyAyLCB2YWx1ZS0+ZlZhbHVlKSwg
c3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU6OlVuaXRUeXBlcz4odmFsdWUtPnVuaXQpKTsK
ICAgICAgICAgICAgIG1fdmFsdWVMaXN0LT5uZXh0KCk7CiAgICAgICAgIH0KICAgICAgICAgYnJl
YWs7CkBAIC02NDgwLDcgKzY0NzgsNyBAQCBib29sIENTU1BhcnNlcjo6cGFyc2VDb2xvclBhcmFt
ZXRlcnMoQ1NTUGFyc2VyVmFsdWUqIHZhbHVlLCBpbnQqIGNvbG9yQXJyYXksIGJvbwogICAgICAg
ICBjb25zdCBkb3VibGUgdmFsdWUgPSBwYXJzZWREb3VibGUodiwgUmVsZWFzZVBhcnNlZENhbGNW
YWx1ZSk7CiAgICAgICAgIC8vIENvbnZlcnQgdGhlIGZsb2F0aW5nIHBvaW50ZXIgbnVtYmVyIG9m
IGFscGhhIHRvIGFuIGludGVnZXIgaW4gdGhlIHJhbmdlIFswLCAyNTYpLAogICAgICAgICAvLyB3
aXRoIGFuIGVxdWFsIGRpc3RyaWJ1dGlvbiBhY3Jvc3MgYWxsIDI1NiB2YWx1ZXMuCi0gICAgICAg
IGNvbG9yQXJyYXlbM10gPSBzdGF0aWNfY2FzdDxpbnQ+KG1heCgwLjAsIG1pbigxLjAsIHZhbHVl
KSkgKiBuZXh0YWZ0ZXIoMjU2LjAsIDAuMCkpOworICAgICAgICBjb2xvckFycmF5WzNdID0gc3Rh
dGljX2Nhc3Q8aW50PihzdGQ6Om1heDxkb3VibGU+KDAsIHN0ZDo6bWluPGRvdWJsZT4oMSwgdmFs
dWUpKSAqIG5leHRhZnRlcigyNTYuMCwgMC4wKSk7CiAgICAgfQogICAgIHJldHVybiB0cnVlOwog
fQpAQCAtNjUwNiw3ICs2NTA0LDcgQEAgYm9vbCBDU1NQYXJzZXI6OnBhcnNlSFNMUGFyYW1ldGVy
cyhDU1NQYXJzZXJWYWx1ZSogdmFsdWUsIGRvdWJsZSogY29sb3JBcnJheSwgYm8KICAgICAgICAg
diA9IGFyZ3MtPm5leHQoKTsKICAgICAgICAgaWYgKCF2YWxpZFVuaXQodiwgRlBlcmNlbnQsIENT
U1N0cmljdE1vZGUpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICBjb2xvckFy
cmF5W2ldID0gbWF4KDAuMCwgbWluKDEwMC4wLCBwYXJzZWREb3VibGUodiwgUmVsZWFzZVBhcnNl
ZENhbGNWYWx1ZSkpKSAvIDEwMC4wOyAvLyBuZWVkcyB0byBiZSB2YWx1ZSBiZXR3ZWVuIDAgYW5k
IDEuMAorICAgICAgICBjb2xvckFycmF5W2ldID0gc3RkOjptYXg8ZG91YmxlPigwLCBzdGQ6Om1p
bjxkb3VibGU+KDEwMCwgcGFyc2VkRG91YmxlKHYsIFJlbGVhc2VQYXJzZWRDYWxjVmFsdWUpKSkg
LyAxMDAuMDsgLy8gbmVlZHMgdG8gYmUgdmFsdWUgYmV0d2VlbiAwIGFuZCAxLjAKICAgICB9CiAg
ICAgaWYgKHBhcnNlQWxwaGEpIHsKICAgICAgICAgdiA9IGFyZ3MtPm5leHQoKTsKQEAgLTY1MTUs
NyArNjUxMyw3IEBAIGJvb2wgQ1NTUGFyc2VyOjpwYXJzZUhTTFBhcmFtZXRlcnMoQ1NTUGFyc2Vy
VmFsdWUqIHZhbHVlLCBkb3VibGUqIGNvbG9yQXJyYXksIGJvCiAgICAgICAgIHYgPSBhcmdzLT5u
ZXh0KCk7CiAgICAgICAgIGlmICghdmFsaWRVbml0KHYsIEZOdW1iZXIsIENTU1N0cmljdE1vZGUp
KQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICBjb2xvckFycmF5WzNdID0gbWF4
KDAuMCwgbWluKDEuMCwgcGFyc2VkRG91YmxlKHYsIFJlbGVhc2VQYXJzZWRDYWxjVmFsdWUpKSk7
CisgICAgICAgIGNvbG9yQXJyYXlbM10gPSBzdGQ6Om1heDxkb3VibGU+KDAsIHN0ZDo6bWluPGRv
dWJsZT4oMSwgcGFyc2VkRG91YmxlKHYsIFJlbGVhc2VQYXJzZWRDYWxjVmFsdWUpKSk7CiAgICAg
fQogICAgIHJldHVybiB0cnVlOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NT
U1JlZmxlY3RWYWx1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUmVmbGVjdFZhbHVlLmNw
cAppbmRleCAxNWFlOGZhZmIzOGE5NTMzNjNlMThjZDRmYzNjOTY5ODU3ZWE0ZGIxLi44YWU4M2Nm
NWU4NWQ4N2U4NmEwODdlM2Q0OTNmMzZiYmVkNjAyYWY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9jc3MvQ1NTUmVmbGVjdFZhbHVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NT
UmVmbGVjdFZhbHVlLmNwcApAQCAtMjksOCArMjksNiBAQAogI2luY2x1ZGUgIkNTU1ByaW1pdGl2
ZVZhbHVlLmgiCiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgogCi11c2luZyBu
YW1lc3BhY2Ugc3RkOwotCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFN0cmluZyBDU1NSZWZsZWN0
VmFsdWU6OmN1c3RvbUNTU1RleHQoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
Y3NzL0RlcHJlY2F0ZWRTdHlsZUJ1aWxkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0RlcHJl
Y2F0ZWRTdHlsZUJ1aWxkZXIuY3BwCmluZGV4IDcwNzQ5MDBhNjA3NzFmZGJkNjgxY2YwODlhNTlk
NGVhYmM1MTcyZDUuLjAwMGY0NzMwMjgwMTU5YjAyZTFkNGYzMmY1ZTBmYWM3ZjdiODZmYzYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9EZXByZWNhdGVkU3R5bGVCdWlsZGVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvRGVwcmVjYXRlZFN0eWxlQnVpbGRlci5jcHAKQEAgLTUz
LDggKzUzLDYgQEAKICNpbmNsdWRlICJTaGFwZVZhbHVlLmgiCiAjZW5kaWYKIAotdXNpbmcgbmFt
ZXNwYWNlIHN0ZDsKLQogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBlbnVtIEV4cGFuZFZhbHVlQmVo
YXZpb3Ige1N1cHByZXNzVmFsdWUgPSAwLCBFeHBhbmRWYWx1ZX07CkBAIC04ODMsNyArODgxLDcg
QEAgcHVibGljOgogCiAgICAgICAgIC8vIE92ZXJseSBsYXJnZSBmb250IHNpemVzIHdpbGwgY2F1
c2UgY3Jhc2hlcyBvbiBzb21lIHBsYXRmb3JtcyAoc3VjaCBhcyBXaW5kb3dzKS4KICAgICAgICAg
Ly8gQ2FwIGZvbnQgc2l6ZSBoZXJlIHRvIG1ha2Ugc3VyZSB0aGF0IGRvZXNuJ3QgaGFwcGVuLgot
ICAgICAgICBzaXplID0gbWluKG1heGltdW1BbGxvd2VkRm9udFNpemUsIHNpemUpOworICAgICAg
ICBzaXplID0gc3RkOjptaW4obWF4aW11bUFsbG93ZWRGb250U2l6ZSwgc2l6ZSk7CiAKICAgICAg
ICAgc3R5bGVSZXNvbHZlci0+c2V0Rm9udFNpemUoZm9udERlc2NyaXB0aW9uLCBzaXplKTsKICAg
ICAgICAgc3R5bGVSZXNvbHZlci0+c2V0Rm9udERlc2NyaXB0aW9uKGZvbnREZXNjcmlwdGlvbik7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvUHJvcGVydHlTZXRDU1NTdHlsZURlY2xh
cmF0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9Qcm9wZXJ0eVNldENTU1N0eWxlRGVjbGFy
YXRpb24uY3BwCmluZGV4IDFkODAyZjVkMTg5NGUzNzdkNDc5NDg2NTdiN2JjMmY3MTJkNzgyZDAu
LmRhMjhhNGNjMjQ1ODAwMzk3M2ZhNWI3NzlkNjJhZDIzNGM5ZTYxZDYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9Qcm9wZXJ0eVNldENTU1N0eWxlRGVjbGFyYXRpb24uY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2Nzcy9Qcm9wZXJ0eVNldENTU1N0eWxlRGVjbGFyYXRpb24uY3BwCkBA
IC0zMSw4ICszMSw2IEBACiAjaW5jbHVkZSAiU3R5bGVQcm9wZXJ0eVNldC5oIgogI2luY2x1ZGUg
IlN0eWxlZEVsZW1lbnQuaCIKIAotdXNpbmcgbmFtZXNwYWNlIHN0ZDsKLQogbmFtZXNwYWNlIFdl
YkNvcmUgewogCiBuYW1lc3BhY2UgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL1NW
R0NTU1BhcnNlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU1ZHQ1NTUGFyc2VyLmNwcAppbmRl
eCBkZmRjNzRlOGJhMzkyMzI0MjZkNDVhMjQzYzRlNjNkZGRjMDAyYjQzLi45ZTUyZTljYzE1OGE3
MzVjYzYwOGZjNDFlMTI2YWQzZTkyNDk4NDk2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9j
c3MvU1ZHQ1NTUGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU1ZHQ1NTUGFyc2Vy
LmNwcApAQCAtMzIsOCArMzIsNiBAQAogI2luY2x1ZGUgIlJlbmRlclRoZW1lLmgiCiAjaW5jbHVk
ZSAiU1ZHUGFpbnQuaCIKIAotdXNpbmcgbmFtZXNwYWNlIHN0ZDsKLQogbmFtZXNwYWNlIFdlYkNv
cmUgewogCiBib29sIENTU1BhcnNlcjo6cGFyc2VTVkdWYWx1ZShDU1NQcm9wZXJ0eUlEIHByb3BJ
ZCwgYm9vbCBpbXBvcnRhbnQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVQ
cm9wZXJ0eVNldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVQcm9wZXJ0eVNldC5jcHAK
aW5kZXggYmVhN2Q0MDE4ZDJiNzA3NTA1OWNiY2YwOTkxMjRkOTY4NTRhNjAwOS4uZDA2OTg2Y2M2
NDNiYjkwNWEwY2JjMWIyMmUzNWU1MjRhMTE4Yjg1YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvY3NzL1N0eWxlUHJvcGVydHlTZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHls
ZVByb3BlcnR5U2V0LmNwcApAQCAtNDUsOCArNDUsNiBAQAogI2luY2x1ZGUgPHd0Zi90ZXh0L0NT
dHJpbmcuaD4KICNlbmRpZgogCi11c2luZyBuYW1lc3BhY2Ugc3RkOwotCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKIHN0YXRpYyBzaXplX3Qgc2l6ZUZvckltbXV0YWJsZVN0eWxlUHJvcGVydHlTZXRX
aXRoUHJvcGVydHlDb3VudCh1bnNpZ25lZCBjb3VudCkKQEAgLTM2Nyw5ICszNjUsOSBAQCBTdHJp
bmcgU3R5bGVQcm9wZXJ0eVNldDo6Z2V0TGF5ZXJlZFNob3J0aGFuZFZhbHVlKGNvbnN0IFN0eWxl
UHJvcGVydHlTaG9ydGhhbmQmCiAgICAgICAgIHZhbHVlc1tpXSA9IGdldFByb3BlcnR5Q1NTVmFs
dWUoc2hvcnRoYW5kLnByb3BlcnRpZXMoKVtpXSk7CiAgICAgICAgIGlmICh2YWx1ZXNbaV0pIHsK
ICAgICAgICAgICAgIGlmICh2YWx1ZXNbaV0tPmlzQmFzZVZhbHVlTGlzdCgpKQotICAgICAgICAg
ICAgICAgIG51bUxheWVycyA9IG1heCh0b0NTU1ZhbHVlTGlzdCh2YWx1ZXNbaV0uZ2V0KCkpLT5s
ZW5ndGgoKSwgbnVtTGF5ZXJzKTsKKyAgICAgICAgICAgICAgICBudW1MYXllcnMgPSBzdGQ6Om1h
eCh0b0NTU1ZhbHVlTGlzdCh2YWx1ZXNbaV0uZ2V0KCkpLT5sZW5ndGgoKSwgbnVtTGF5ZXJzKTsK
ICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICBudW1MYXllcnMgPSBtYXg8c2l6ZV90
PigxVSwgbnVtTGF5ZXJzKTsKKyAgICAgICAgICAgICAgICBudW1MYXllcnMgPSBzdGQ6Om1heDxz
aXplX3Q+KDFVLCBudW1MYXllcnMpOwogICAgICAgICB9CiAgICAgfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3Mv
U3R5bGVSZXNvbHZlci5jcHAKaW5kZXggM2M4ZTc4MWFjMjYwMjY5ZmY1MjZlZmM5NDIwZmVmNzQ2
MDIxM2Q0ZS4uZTdhZjYzZjExNzcwNDIwZDIzN2E1ZDU0OGNkMmNkMDY5NGZjMzE2OSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVyLmNwcApAQCAtMTg3LDggKzE4Nyw2IEBACiAjaW5jbHVk
ZSAiV2ViVlRURWxlbWVudC5oIgogI2VuZGlmCiAKLXVzaW5nIG5hbWVzcGFjZSBzdGQ7Ci0KIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAogdXNpbmcgbmFtZXNwYWNlIEhUTUxOYW1lczsKQEAgLTQxMjEs
OSArNDExOSw5IEBAIGludCBTdHlsZVJlc29sdmVyOjp2aWV3cG9ydFBlcmNlbnRhZ2VWYWx1ZShD
U1NQcmltaXRpdmVWYWx1ZSYgdW5pdCwgaW50IHBlcmNlbnRhCiAgICAgaWYgKHVuaXQuaXNWaWV3
cG9ydFBlcmNlbnRhZ2VXaWR0aCgpKQogICAgICAgICByZXR1cm4gdmlld1BvcnRXaWR0aDsKICAg
ICBpZiAodW5pdC5pc1ZpZXdwb3J0UGVyY2VudGFnZU1heCgpKQotICAgICAgICByZXR1cm4gbWF4
KHZpZXdQb3J0V2lkdGgsIHZpZXdQb3J0SGVpZ2h0KTsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bWF4
KHZpZXdQb3J0V2lkdGgsIHZpZXdQb3J0SGVpZ2h0KTsKICAgICBpZiAodW5pdC5pc1ZpZXdwb3J0
UGVyY2VudGFnZU1pbigpKQotICAgICAgICByZXR1cm4gbWluKHZpZXdQb3J0V2lkdGgsIHZpZXdQ
b3J0SGVpZ2h0KTsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bWluKHZpZXdQb3J0V2lkdGgsIHZpZXdQ
b3J0SGVpZ2h0KTsKIAogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIHJldHVybiAwOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0NoYXJhY3RlckRhdGEuY3BwIGIvU291cmNl
L1dlYkNvcmUvZG9tL0NoYXJhY3RlckRhdGEuY3BwCmluZGV4IGEyYzc2M2M0MjcxNzcyNjA4NTM4
MTQ4NzExN2MyNmU1YmY5NTcwNjcuLjcxMGRhNWVlNGQ2Mjg3ODQzNTM1NTM5OGY4OGIwNTFjYmE3
MjYyZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9DaGFyYWN0ZXJEYXRhLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQ2hhcmFjdGVyRGF0YS5jcHAKQEAgLTM4LDggKzM4LDYg
QEAKICNpbmNsdWRlICJUZXh0QnJlYWtJdGVyYXRvci5oIgogI2luY2x1ZGUgPHd0Zi9SZWYuaD4K
IAotdXNpbmcgbmFtZXNwYWNlIHN0ZDsKLQogbmFtZXNwYWNlIFdlYkNvcmUgewogCiB2b2lkIENo
YXJhY3RlckRhdGE6OnNldERhdGEoY29uc3QgU3RyaW5nJiBkYXRhLCBFeGNlcHRpb25Db2RlJikK
QEAgLTcyLDcgKzcwLDcgQEAgdW5zaWduZWQgQ2hhcmFjdGVyRGF0YTo6cGFyc2VyQXBwZW5kRGF0
YShjb25zdCBTdHJpbmcmIHN0cmluZywgdW5zaWduZWQgb2Zmc2V0LAogICAgIEFTU0VSVChsZW5n
dGhMaW1pdCA+PSBvbGRMZW5ndGgpOwogCiAgICAgdW5zaWduZWQgY2hhcmFjdGVyTGVuZ3RoID0g
c3RyaW5nLmxlbmd0aCgpIC0gb2Zmc2V0OwotICAgIHVuc2lnbmVkIGNoYXJhY3Rlckxlbmd0aExp
bWl0ID0gbWluKGNoYXJhY3Rlckxlbmd0aCwgbGVuZ3RoTGltaXQgLSBvbGRMZW5ndGgpOworICAg
IHVuc2lnbmVkIGNoYXJhY3Rlckxlbmd0aExpbWl0ID0gc3RkOjptaW4oY2hhcmFjdGVyTGVuZ3Ro
LCBsZW5ndGhMaW1pdCAtIG9sZExlbmd0aCk7CiAKICAgICAvLyBDaGVjayB0aGF0IHdlIGFyZSBu
b3Qgb24gYW4gdW5icmVha2FibGUgYm91bmRhcnkuCiAgICAgLy8gU29tZSB0ZXh0IGJyZWFrIGl0
ZXJhdG9yIGltcGxlbWVudGF0aW9ucyB3b3JrIGJlc3QgaWYgdGhlIHBhc3NlZCBidWZmZXIgaXMg
YXMgc21hbGwgYXMgcG9zc2libGUsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vQ29u
dGFpbmVyTm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQ29udGFpbmVyTm9kZS5jcHAKaW5k
ZXggYzBhZWFkMzk3MjQzNDljNWVlNTAxNmM1YTM2ODJmZGUzOTQ4YzFmMS4uMzI0NGQ4MjExMjA2
ODQwMGJiMTkzOTlhYWE5NGFjYzJhMmNhZjFhOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
ZG9tL0NvbnRhaW5lck5vZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Db250YWluZXJO
b2RlLmNwcApAQCAtNjQsOCArNjQsNiBAQAogI2luY2x1ZGUgIkRlbGV0ZUJ1dHRvbkNvbnRyb2xs
ZXIuaCIKICNlbmRpZgogCi11c2luZyBuYW1lc3BhY2Ugc3RkOwotCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKIHN0YXRpYyB2b2lkIGRpc3BhdGNoQ2hpbGRJbnNlcnRpb25FdmVudHMoTm9kZSYpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9Eb2N1bWVudC5jcHAKaW5kZXggZGE1MWUzM2IzYWNmMTk4ZGZmMTY4YTMxMDhkNzVm
YmMwYzBkMGEyNC4uZWRjOGEyNTg4M2U4MTMyNWY2OWI2ZGE3ZTlhNmIxMThkM2MyMjFmMCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vRG9jdW1lbnQuY3BwCkBAIC0yMjQsNyArMjI0LDYgQEAKICNpbmNsdWRlICJDYXB0
aW9uVXNlclByZWZlcmVuY2VzLmgiCiAjZW5kaWYKIAotdXNpbmcgbmFtZXNwYWNlIHN0ZDsKIHVz
aW5nIG5hbWVzcGFjZSBXVEY7CiB1c2luZyBuYW1lc3BhY2UgVW5pY29kZTsKIApAQCAtMjQ4Miw3
ICsyNDgxLDcgQEAgaW50IERvY3VtZW50OjptaW5pbXVtTGF5b3V0RGVsYXkoKQogICAgIG1fb3Zl
ck1pbmltdW1MYXlvdXRUaHJlc2hvbGQgPSBlbGFwc2VkID4gY0xheW91dFNjaGVkdWxlVGhyZXNo
b2xkOwogICAgIAogICAgIC8vIFdlJ2xsIHdhbnQgdG8gc2NoZWR1bGUgdGhlIHRpbWVyIHRvIGZp
cmUgYXQgdGhlIG1pbmltdW0gbGF5b3V0IHRocmVzaG9sZC4KLSAgICByZXR1cm4gbWF4KDAsIGNM
YXlvdXRTY2hlZHVsZVRocmVzaG9sZCAtIGVsYXBzZWQpOworICAgIHJldHVybiBzdGQ6Om1heCgw
LCBjTGF5b3V0U2NoZWR1bGVUaHJlc2hvbGQgLSBlbGFwc2VkKTsKIH0KIAogaW50IERvY3VtZW50
OjplbGFwc2VkVGltZSgpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9k
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5jcHAKaW5kZXggNTBjODIzNzI1MmVlNzFm
YjU3N2FjNTJhNjk3YWJhYTY0YTYyMGE4Ny4uNmUzMzhkYTA2OTFiYTliODI2ZWY0ODFmYTE4Yjli
YTU5Nzc0Y2I0YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcApAQCAtMTIyLDggKzEyMiw2IEBACiAjaW5jbHVk
ZSAiSW5zcGVjdG9yQ29udHJvbGxlci5oIgogI2VuZGlmCiAKLXVzaW5nIG5hbWVzcGFjZSBzdGQ7
Ci0KIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogdXNpbmcgbmFtZXNwYWNlIEhUTUxOYW1lczsKQEAg
LTE1MDgsNyArMTUwNiw3IEBAIHVuc2lnbmVkIHNob3J0IE5vZGU6OmNvbXBhcmVEb2N1bWVudFBv
c2l0aW9uKE5vZGUqIG90aGVyTm9kZSkKICAgICAgICAgcmV0dXJuIGNvbXBhcmVEZXRhY2hlZEVs
ZW1lbnRzUG9zaXRpb24odGhpcywgb3RoZXJOb2RlKTsKIAogICAgIC8vIFdhbGsgdGhlIHR3byBj
aGFpbnMgYmFja3dhcmRzIGFuZCBsb29rIGZvciB0aGUgZmlyc3QgZGlmZmVyZW5jZS4KLSAgICBm
b3IgKHVuc2lnbmVkIGkgPSBtaW4oaW5kZXgxLCBpbmRleDIpOyBpOyAtLWkpIHsKKyAgICBmb3Ig
KHVuc2lnbmVkIGkgPSBzdGQ6Om1pbihpbmRleDEsIGluZGV4Mik7IGk7IC0taSkgewogICAgICAg
ICBOb2RlKiBjaGlsZDEgPSBjaGFpbjFbLS1pbmRleDFdOwogICAgICAgICBOb2RlKiBjaGlsZDIg
PSBjaGFpbjJbLS1pbmRleDJdOwogICAgICAgICBpZiAoY2hpbGQxICE9IGNoaWxkMikgewpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1JhbmdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9SYW5nZS5jcHAKaW5kZXggNmFlZjdlYWVlYzY4YTIxNzlkNTk0NjY5ZTczYzE4OWM4YzRiNzBh
Zi4uN2FiYTE3NWFjYzFkN2MwMmFmYjFhYjVhMGE3ZTMzMzhhMmRkMmY2ZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvZG9tL1JhbmdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vUmFu
Z2UuY3BwCkBAIC01Nyw3ICs1Nyw2IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotdXNpbmcg
bmFtZXNwYWNlIHN0ZDsKIHVzaW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7CiAKIERFRklORV9ERUJV
R19PTkxZX0dMT0JBTChXVEY6OlJlZkNvdW50ZWRMZWFrQ291bnRlciwgcmFuZ2VDb3VudGVyLCAo
IlJhbmdlIikpOwpAQCAtMTA3Miw4ICsxMDcxLDggQEAgU3RyaW5nIFJhbmdlOjp0b1N0cmluZyhF
eGNlcHRpb25Db2RlJiBlYykgY29uc3QKICAgICAgICAgaWYgKG4tPm5vZGVUeXBlKCkgPT0gTm9k
ZTo6VEVYVF9OT0RFIHx8IG4tPm5vZGVUeXBlKCkgPT0gTm9kZTo6Q0RBVEFfU0VDVElPTl9OT0RF
KSB7CiAgICAgICAgICAgICBjb25zdCBTdHJpbmcmIGRhdGEgPSBzdGF0aWNfY2FzdDxDaGFyYWN0
ZXJEYXRhKj4obiktPmRhdGEoKTsKICAgICAgICAgICAgIGludCBsZW5ndGggPSBkYXRhLmxlbmd0
aCgpOwotICAgICAgICAgICAgaW50IHN0YXJ0ID0gKG4gPT0gbV9zdGFydC5jb250YWluZXIoKSkg
PyBtaW4obWF4KDAsIG1fc3RhcnQub2Zmc2V0KCkpLCBsZW5ndGgpIDogMDsKLSAgICAgICAgICAg
IGludCBlbmQgPSAobiA9PSBtX2VuZC5jb250YWluZXIoKSkgPyBtaW4obWF4KHN0YXJ0LCBtX2Vu
ZC5vZmZzZXQoKSksIGxlbmd0aCkgOiBsZW5ndGg7CisgICAgICAgICAgICBpbnQgc3RhcnQgPSAo
biA9PSBtX3N0YXJ0LmNvbnRhaW5lcigpKSA/IHN0ZDo6bWluKHN0ZDo6bWF4KDAsIG1fc3RhcnQu
b2Zmc2V0KCkpLCBsZW5ndGgpIDogMDsKKyAgICAgICAgICAgIGludCBlbmQgPSAobiA9PSBtX2Vu
ZC5jb250YWluZXIoKSkgPyBzdGQ6Om1pbihzdGQ6Om1heChzdGFydCwgbV9lbmQub2Zmc2V0KCkp
LCBsZW5ndGgpIDogbGVuZ3RoOwogICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoZGF0YSwgc3Rh
cnQsIGVuZCAtIHN0YXJ0KTsKICAgICAgICAgfQogICAgIH0KQEAgLTE2MTQsNyArMTYxMyw3IEBA
IHZvaWQgUmFuZ2U6OnRleHRSZWN0cyhWZWN0b3I8SW50UmVjdD4mIHJlY3RzLCBib29sIHVzZVNl
bGVjdGlvbkhlaWdodCwgUmFuZ2VJbkZpCiAgICAgICAgICAgICByLT5hYnNvbHV0ZVJlY3RzKHJl
Y3RzLCBmbG9vcmVkTGF5b3V0UG9pbnQoci0+bG9jYWxUb0Fic29sdXRlKCkpKTsKICAgICAgICAg
ZWxzZSBpZiAoci0+aXNUZXh0KCkpIHsKICAgICAgICAgICAgIGludCBzdGFydE9mZnNldCA9IG5v
ZGUgPT0gc3RhcnRDb250YWluZXIgPyBtX3N0YXJ0Lm9mZnNldCgpIDogMDsKLSAgICAgICAgICAg
IGludCBlbmRPZmZzZXQgPSBub2RlID09IGVuZENvbnRhaW5lciA/IG1fZW5kLm9mZnNldCgpIDog
bnVtZXJpY19saW1pdHM8aW50Pjo6bWF4KCk7CisgICAgICAgICAgICBpbnQgZW5kT2Zmc2V0ID0g
bm9kZSA9PSBlbmRDb250YWluZXIgPyBtX2VuZC5vZmZzZXQoKSA6IHN0ZDo6bnVtZXJpY19saW1p
dHM8aW50Pjo6bWF4KCk7CiAgICAgICAgICAgICByZWN0cy5hcHBlbmRWZWN0b3IodG9SZW5kZXJU
ZXh0KHIpLT5hYnNvbHV0ZVJlY3RzRm9yUmFuZ2Uoc3RhcnRPZmZzZXQsIGVuZE9mZnNldCwgdXNl
U2VsZWN0aW9uSGVpZ2h0LCAmaXNGaXhlZCkpOwogICAgICAgICB9IGVsc2UKICAgICAgICAgICAg
IGNvbnRpbnVlOwpAQCAtMTY1MCw3ICsxNjQ5LDcgQEAgdm9pZCBSYW5nZTo6dGV4dFF1YWRzKFZl
Y3RvcjxGbG9hdFF1YWQ+JiBxdWFkcywgYm9vbCB1c2VTZWxlY3Rpb25IZWlnaHQsIFJhbmdlSW4K
ICAgICAgICAgICAgIHItPmFic29sdXRlUXVhZHMocXVhZHMsICZpc0ZpeGVkKTsKICAgICAgICAg
ZWxzZSBpZiAoci0+aXNUZXh0KCkpIHsKICAgICAgICAgICAgIGludCBzdGFydE9mZnNldCA9IG5v
ZGUgPT0gc3RhcnRDb250YWluZXIgPyBtX3N0YXJ0Lm9mZnNldCgpIDogMDsKLSAgICAgICAgICAg
IGludCBlbmRPZmZzZXQgPSBub2RlID09IGVuZENvbnRhaW5lciA/IG1fZW5kLm9mZnNldCgpIDog
bnVtZXJpY19saW1pdHM8aW50Pjo6bWF4KCk7CisgICAgICAgICAgICBpbnQgZW5kT2Zmc2V0ID0g
bm9kZSA9PSBlbmRDb250YWluZXIgPyBtX2VuZC5vZmZzZXQoKSA6IHN0ZDo6bnVtZXJpY19saW1p
dHM8aW50Pjo6bWF4KCk7CiAgICAgICAgICAgICBxdWFkcy5hcHBlbmRWZWN0b3IodG9SZW5kZXJU
ZXh0KHIpLT5hYnNvbHV0ZVF1YWRzRm9yUmFuZ2Uoc3RhcnRPZmZzZXQsIGVuZE9mZnNldCwgdXNl
U2VsZWN0aW9uSGVpZ2h0LCAmaXNGaXhlZCkpOwogICAgICAgICB9IGVsc2UKICAgICAgICAgICAg
IGNvbnRpbnVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdGVkQW5pbWF0
aW9uQ29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0ZWRBbmltYXRpb25D
b250cm9sbGVyLmNwcAppbmRleCAzNGM4MWQwNzgwOTc1NGRjNDMxNzExNTM3N2U3ODlkOTI1MzIz
ZmM3Li42NWI5NWNiZTMzYzAzMTk5MTdiMzUyMjc4ODI1YTIwYmUxNWM0OTc2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0ZWRBbmltYXRpb25Db250cm9sbGVyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0ZWRBbmltYXRpb25Db250cm9sbGVyLmNwcApAQCAt
NDAsOCArNDAsNiBAQAogI2luY2x1ZGUgPGFsZ29yaXRobT4KICNpbmNsdWRlIDx3dGYvQ3VycmVu
dFRpbWUuaD4KIAotdXNpbmcgbmFtZXNwYWNlIHN0ZDsKLQogLy8gQWxsb3cgYSBsaXR0bGUgbW9y
ZSB0aGFuIDYwZnBzIHRvIG1ha2Ugc3VyZSB3ZSBjYW4gYXQgbGVhc3QgaGl0IHRoYXQgZnJhbWUg
cmF0ZS4KICNkZWZpbmUgTWluaW11bUFuaW1hdGlvbkludGVydmFsIDAuMDE1CiAjZGVmaW5lIE1p
bmltdW1UaHJvdHRsZWRBbmltYXRpb25JbnRlcnZhbCAxMApAQCAtMjAyLDcgKzIwMCw3IEBAIHZv
aWQgU2NyaXB0ZWRBbmltYXRpb25Db250cm9sbGVyOjpzY2hlZHVsZUFuaW1hdGlvbigpCiAgICAg
ICAgIGFuaW1hdGlvbkludGVydmFsID0gTWluaW11bVRocm90dGxlZEFuaW1hdGlvbkludGVydmFs
OwogI2VuZGlmCiAKLSAgICBkb3VibGUgc2NoZWR1bGVEZWxheSA9IG1heDxkb3VibGU+KGFuaW1h
dGlvbkludGVydmFsIC0gKG1vbm90b25pY2FsbHlJbmNyZWFzaW5nVGltZSgpIC0gbV9sYXN0QW5p
bWF0aW9uRnJhbWVUaW1lTW9ub3RvbmljKSwgMCk7CisgICAgZG91YmxlIHNjaGVkdWxlRGVsYXkg
PSBzdGQ6Om1heDxkb3VibGU+KGFuaW1hdGlvbkludGVydmFsIC0gKG1vbm90b25pY2FsbHlJbmNy
ZWFzaW5nVGltZSgpIC0gbV9sYXN0QW5pbWF0aW9uRnJhbWVUaW1lTW9ub3RvbmljKSwgMCk7CiAg
ICAgbV9hbmltYXRpb25UaW1lci5zdGFydE9uZVNob3Qoc2NoZWR1bGVEZWxheSk7CiAjZWxzZQog
ICAgIGlmIChGcmFtZVZpZXcqIGZyYW1lVmlldyA9IG1fZG9jdW1lbnQtPnZpZXcoKSkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TdHlsZWRFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9TdHlsZWRFbGVtZW50LmNwcAppbmRleCBjNWQ1MzdhMGI3YjNiMjA0YmQyODkwYzI1
NWEyMmY1ZGVjNzY1YjA0Li4zODY4YWQyZDcwZTAwNTc3ZTNhNmQ4NTVkNjllNDNmNDE2ODU1NTkw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vU3R5bGVkRWxlbWVudC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvZG9tL1N0eWxlZEVsZW1lbnQuY3BwCkBAIC00NSw4ICs0NSw2IEBACiAj
aW5jbHVkZSA8d3RmL0hhc2hGdW5jdGlvbnMuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9UZXh0UG9z
aXRpb24uaD4KIAotdXNpbmcgbmFtZXNwYWNlIHN0ZDsKLQogbmFtZXNwYWNlIFdlYkNvcmUgewog
CiBDT01QSUxFX0FTU0VSVChzaXplb2YoU3R5bGVkRWxlbWVudCkgPT0gc2l6ZW9mKEVsZW1lbnQp
LCBzdHlsZWRlbGVtZW50X3Nob3VsZF9yZW1haW5fc2FtZV9zaXplX2FzX2VsZW1lbnQpOwpAQCAt
MzA0LDcgKzMwMiw3IEBAIHZvaWQgU3R5bGVkRWxlbWVudDo6bWFrZVByZXNlbnRhdGlvbkF0dHJp
YnV0ZUNhY2hlS2V5KFByZXNlbnRhdGlvbkF0dHJpYnV0ZUNhY2hlCiAgICAgICAgIC8vIEZJWE1F
OiBCYWNrZ3JvdW5kIFVSTCBtYXkgZGVwZW5kIG9uIHRoZSBiYXNlIFVSTCBhbmQgY2FuJ3QgYmUg
c2hhcmVkLiBEaXNhbGxvdyBjYWNoaW5nLgogICAgICAgICBpZiAoYXR0cmlidXRlLm5hbWUoKSA9
PSBiYWNrZ3JvdW5kQXR0cikKICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgcmVzdWx0LmF0
dHJpYnV0ZXNBbmRWYWx1ZXMuYXBwZW5kKG1ha2VfcGFpcihhdHRyaWJ1dGUubG9jYWxOYW1lKCku
aW1wbCgpLCBhdHRyaWJ1dGUudmFsdWUoKSkpOworICAgICAgICByZXN1bHQuYXR0cmlidXRlc0Fu
ZFZhbHVlcy5hcHBlbmQoc3RkOjptYWtlX3BhaXIoYXR0cmlidXRlLmxvY2FsTmFtZSgpLmltcGwo
KSwgYXR0cmlidXRlLnZhbHVlKCkpKTsKICAgICB9CiAgICAgaWYgKHJlc3VsdC5hdHRyaWJ1dGVz
QW5kVmFsdWVzLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvZG9tL1RleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL1RleHQuY3BwCmluZGV4
IDEyYWE0OGU3Mjg3ZTRmMDIyZWNkMWVhZTdjZjM1MTUzNjFmM2UxMDcuLjIyYTVkYzU4OGUxMDQ3
ODY2YTBjMDNiNDM5MDNmNjMwYjgzNGM4MTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9UZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vVGV4dC5jcHAKQEAgLTQxLDggKzQx
LDYgQEAKICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQv
U3RyaW5nQnVpbGRlci5oPgogCi11c2luZyBuYW1lc3BhY2Ugc3RkOwotCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKIFBhc3NSZWZQdHI8VGV4dD4gVGV4dDo6Y3JlYXRlKERvY3VtZW50JiBkb2N1bWVu
dCwgY29uc3QgU3RyaW5nJiBkYXRhKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1Zp
ZXdwb3J0QXJndW1lbnRzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9WaWV3cG9ydEFyZ3VtZW50
cy5jcHAKaW5kZXggNTkxYTFlODQyY2UxNWRmYjBlYmRlZjcyMGVmNTIyZGRhYmFjMTEyYi4uODY2
MDAwNDIwNmRmMGYyOWJjNmZiYjM4YjRiYTIxMzJhZDVjNDE2OSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvZG9tL1ZpZXdwb3J0QXJndW1lbnRzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9k
b20vVmlld3BvcnRBcmd1bWVudHMuY3BwCkBAIC0zOCw4ICszOCw2IEBACiAjaW5jbHVkZSAiU2Ny
aXB0YWJsZURvY3VtZW50UGFyc2VyLmgiCiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+
CiAKLXVzaW5nIG5hbWVzcGFjZSBzdGQ7Ci0KIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogI2lmIFBM
QVRGT1JNKEJMQUNLQkVSUlkpIHx8IFBMQVRGT1JNKEdUSykKQEAgLTY2LDcgKzY0LDcgQEAgc3Rh
dGljIGlubGluZSBmbG9hdCBjbGFtcExlbmd0aFZhbHVlKGZsb2F0IHZhbHVlKQogCiAgICAgLy8g
TGltaXRzIGFzIGRlZmluZWQgaW4gdGhlIGNzcy1kZXZpY2UtYWRhcHQgc3BlYy4KICAgICBpZiAo
dmFsdWUgIT0gVmlld3BvcnRBcmd1bWVudHM6OlZhbHVlQXV0bykKLSAgICAgICAgcmV0dXJuIG1p
bihmbG9hdCgxMDAwMCksIG1heCh2YWx1ZSwgZmxvYXQoMSkpKTsKKyAgICAgICAgcmV0dXJuIHN0
ZDo6bWluPGZsb2F0PigxMDAwMCwgc3RkOjptYXg8ZmxvYXQ+KHZhbHVlLCAxKSk7CiAgICAgcmV0
dXJuIHZhbHVlOwogfQogCkBAIC03Nyw3ICs3NSw3IEBAIHN0YXRpYyBpbmxpbmUgZmxvYXQgY2xh
bXBTY2FsZVZhbHVlKGZsb2F0IHZhbHVlKQogCiAgICAgLy8gTGltaXRzIGFzIGRlZmluZWQgaW4g
dGhlIGNzcy1kZXZpY2UtYWRhcHQgc3BlYy4KICAgICBpZiAodmFsdWUgIT0gVmlld3BvcnRBcmd1
bWVudHM6OlZhbHVlQXV0bykKLSAgICAgICAgcmV0dXJuIG1pbihmbG9hdCgxMCksIG1heCh2YWx1
ZSwgZmxvYXQoMC4xKSkpOworICAgICAgICByZXR1cm4gc3RkOjptaW48ZmxvYXQ+KDEwLCBzdGQ6
Om1heDxmbG9hdD4odmFsdWUsIDAuMSkpOwogICAgIHJldHVybiB2YWx1ZTsKIH0KIApAQCAtMTUw
LDE2ICsxNDgsMTYgQEAgVmlld3BvcnRBdHRyaWJ1dGVzIFZpZXdwb3J0QXJndW1lbnRzOjpyZXNv
bHZlKGNvbnN0IEZsb2F0U2l6ZSYgaW5pdGlhbFZpZXdwb3J0U2kKICAgICAgICAgfQogCiAgICAg
ICAgIGlmIChyZXN1bHRNaW5XaWR0aCAhPSBWaWV3cG9ydEFyZ3VtZW50czo6VmFsdWVBdXRvIHx8
IHJlc3VsdE1heFdpZHRoICE9IFZpZXdwb3J0QXJndW1lbnRzOjpWYWx1ZUF1dG8pCi0gICAgICAg
ICAgICByZXN1bHRXaWR0aCA9IGNvbXBhcmVJZ25vcmluZ0F1dG8ocmVzdWx0TWluV2lkdGgsIGNv
bXBhcmVJZ25vcmluZ0F1dG8ocmVzdWx0TWF4V2lkdGgsIGRldmljZVNpemUud2lkdGgoKSwgbWlu
KSwgbWF4KTsKKyAgICAgICAgICAgIHJlc3VsdFdpZHRoID0gY29tcGFyZUlnbm9yaW5nQXV0byhy
ZXN1bHRNaW5XaWR0aCwgY29tcGFyZUlnbm9yaW5nQXV0byhyZXN1bHRNYXhXaWR0aCwgZGV2aWNl
U2l6ZS53aWR0aCgpLCBzdGQ6Om1pbiksIHN0ZDo6bWF4KTsKIAogICAgICAgICBpZiAocmVzdWx0
TWluSGVpZ2h0ICE9IFZpZXdwb3J0QXJndW1lbnRzOjpWYWx1ZUF1dG8gfHwgcmVzdWx0TWF4SGVp
Z2h0ICE9IFZpZXdwb3J0QXJndW1lbnRzOjpWYWx1ZUF1dG8pCi0gICAgICAgICAgICByZXN1bHRI
ZWlnaHQgPSBjb21wYXJlSWdub3JpbmdBdXRvKHJlc3VsdE1pbkhlaWdodCwgY29tcGFyZUlnbm9y
aW5nQXV0byhyZXN1bHRNYXhIZWlnaHQsIGRldmljZVNpemUuaGVpZ2h0KCksIG1pbiksIG1heCk7
CisgICAgICAgICAgICByZXN1bHRIZWlnaHQgPSBjb21wYXJlSWdub3JpbmdBdXRvKHJlc3VsdE1p
bkhlaWdodCwgY29tcGFyZUlnbm9yaW5nQXV0byhyZXN1bHRNYXhIZWlnaHQsIGRldmljZVNpemUu
aGVpZ2h0KCksIHN0ZDo6bWluKSwgc3RkOjptYXgpOwogCiAgICAgICAgIGlmIChyZXN1bHRNaW5a
b29tICE9IFZpZXdwb3J0QXJndW1lbnRzOjpWYWx1ZUF1dG8gJiYgcmVzdWx0TWF4Wm9vbSAhPSBW
aWV3cG9ydEFyZ3VtZW50czo6VmFsdWVBdXRvKQotICAgICAgICAgICAgcmVzdWx0TWF4Wm9vbSA9
IG1heChyZXN1bHRNaW5ab29tLCByZXN1bHRNYXhab29tKTsKKyAgICAgICAgICAgIHJlc3VsdE1h
eFpvb20gPSBzdGQ6Om1heChyZXN1bHRNaW5ab29tLCByZXN1bHRNYXhab29tKTsKIAogICAgICAg
ICBpZiAocmVzdWx0Wm9vbSAhPSBWaWV3cG9ydEFyZ3VtZW50czo6VmFsdWVBdXRvKQotICAgICAg
ICAgICAgcmVzdWx0Wm9vbSA9IGNvbXBhcmVJZ25vcmluZ0F1dG8ocmVzdWx0TWluWm9vbSwgY29t
cGFyZUlnbm9yaW5nQXV0byhyZXN1bHRNYXhab29tLCByZXN1bHRab29tLCBtaW4pLCBtYXgpOwor
ICAgICAgICAgICAgcmVzdWx0Wm9vbSA9IGNvbXBhcmVJZ25vcmluZ0F1dG8ocmVzdWx0TWluWm9v
bSwgY29tcGFyZUlnbm9yaW5nQXV0byhyZXN1bHRNYXhab29tLCByZXN1bHRab29tLCBzdGQ6Om1p
biksIHN0ZDo6bWF4KTsKIAogICAgICAgICBpZiAocmVzdWx0V2lkdGggPT0gVmlld3BvcnRBcmd1
bWVudHM6OlZhbHVlQXV0byAmJiByZXN1bHRab29tID09IFZpZXdwb3J0QXJndW1lbnRzOjpWYWx1
ZUF1dG8pCiAgICAgICAgICAgICByZXN1bHRXaWR0aCA9IGRldmljZVNpemUud2lkdGgoKTsKQEAg
LTE3NCwxMiArMTcyLDEyIEBAIFZpZXdwb3J0QXR0cmlidXRlcyBWaWV3cG9ydEFyZ3VtZW50czo6
cmVzb2x2ZShjb25zdCBGbG9hdFNpemUmIGluaXRpYWxWaWV3cG9ydFNpCiAgICAgICAgICAgICBy
ZXN1bHRIZWlnaHQgPSByZXN1bHRXaWR0aCAqIGRldmljZVNpemUuaGVpZ2h0KCkgLyBkZXZpY2VT
aXplLndpZHRoKCk7CiAKICAgICAgICAgaWYgKHJlc3VsdFpvb20gIT0gVmlld3BvcnRBcmd1bWVu
dHM6OlZhbHVlQXV0byB8fCByZXN1bHRNYXhab29tICE9IFZpZXdwb3J0QXJndW1lbnRzOjpWYWx1
ZUF1dG8pIHsKLSAgICAgICAgICAgIHJlc3VsdFdpZHRoID0gY29tcGFyZUlnbm9yaW5nQXV0byhy
ZXN1bHRXaWR0aCwgZGV2aWNlU2l6ZS53aWR0aCgpIC8gY29tcGFyZUlnbm9yaW5nQXV0byhyZXN1
bHRab29tLCByZXN1bHRNYXhab29tLCBtaW4pLCBtYXgpOwotICAgICAgICAgICAgcmVzdWx0SGVp
Z2h0ID0gY29tcGFyZUlnbm9yaW5nQXV0byhyZXN1bHRIZWlnaHQsIGRldmljZVNpemUuaGVpZ2h0
KCkgLyBjb21wYXJlSWdub3JpbmdBdXRvKHJlc3VsdFpvb20sIHJlc3VsdE1heFpvb20sIG1pbiks
IG1heCk7CisgICAgICAgICAgICByZXN1bHRXaWR0aCA9IGNvbXBhcmVJZ25vcmluZ0F1dG8ocmVz
dWx0V2lkdGgsIGRldmljZVNpemUud2lkdGgoKSAvIGNvbXBhcmVJZ25vcmluZ0F1dG8ocmVzdWx0
Wm9vbSwgcmVzdWx0TWF4Wm9vbSwgc3RkOjptaW4pLCBzdGQ6Om1heCk7CisgICAgICAgICAgICBy
ZXN1bHRIZWlnaHQgPSBjb21wYXJlSWdub3JpbmdBdXRvKHJlc3VsdEhlaWdodCwgZGV2aWNlU2l6
ZS5oZWlnaHQoKSAvIGNvbXBhcmVJZ25vcmluZ0F1dG8ocmVzdWx0Wm9vbSwgcmVzdWx0TWF4Wm9v
bSwgc3RkOjptaW4pLCBzdGQ6Om1heCk7CiAgICAgICAgIH0KIAotICAgICAgICByZXN1bHRXaWR0
aCA9IG1heDxmbG9hdD4oMSwgcmVzdWx0V2lkdGgpOwotICAgICAgICByZXN1bHRIZWlnaHQgPSBt
YXg8ZmxvYXQ+KDEsIHJlc3VsdEhlaWdodCk7CisgICAgICAgIHJlc3VsdFdpZHRoID0gc3RkOjpt
YXg8ZmxvYXQ+KDEsIHJlc3VsdFdpZHRoKTsKKyAgICAgICAgcmVzdWx0SGVpZ2h0ID0gc3RkOjpt
YXg8ZmxvYXQ+KDEsIHJlc3VsdEhlaWdodCk7CiAgICAgfQogCiAgICAgaWYgKHR5cGUgIT0gVmll
d3BvcnRBcmd1bWVudHM6OkNTU0RldmljZUFkYXB0YXRpb24gJiYgdHlwZSAhPSBWaWV3cG9ydEFy
Z3VtZW50czo6SW1wbGljaXQpIHsKQEAgLTIwMSwxMSArMTk5LDExIEBAIFZpZXdwb3J0QXR0cmli
dXRlcyBWaWV3cG9ydEFyZ3VtZW50czo6cmVzb2x2ZShjb25zdCBGbG9hdFNpemUmIGluaXRpYWxW
aWV3cG9ydFNpCiAgICAgICAgIHJlc3VsdC5taW5pbXVtU2NhbGUgPSByZXN1bHRNaW5ab29tOwog
CiAgICAgaWYgKHJlc3VsdE1heFpvb20gPT0gVmlld3BvcnRBcmd1bWVudHM6OlZhbHVlQXV0bykg
ewotICAgICAgICByZXN1bHQubWF4aW11bVNjYWxlID0gZmxvYXQoNS4wKTsKLSAgICAgICAgcmVz
dWx0Lm1pbmltdW1TY2FsZSA9IG1pbihmbG9hdCg1LjApLCByZXN1bHQubWluaW11bVNjYWxlKTsK
KyAgICAgICAgcmVzdWx0Lm1heGltdW1TY2FsZSA9IDU7CisgICAgICAgIHJlc3VsdC5taW5pbXVt
U2NhbGUgPSBzdGQ6Om1pbjxmbG9hdD4oNSwgcmVzdWx0Lm1pbmltdW1TY2FsZSk7CiAgICAgfSBl
bHNlCiAgICAgICAgIHJlc3VsdC5tYXhpbXVtU2NhbGUgPSByZXN1bHRNYXhab29tOwotICAgIHJl
c3VsdC5tYXhpbXVtU2NhbGUgPSBtYXgocmVzdWx0Lm1pbmltdW1TY2FsZSwgcmVzdWx0Lm1heGlt
dW1TY2FsZSk7CisgICAgcmVzdWx0Lm1heGltdW1TY2FsZSA9IHN0ZDo6bWF4KHJlc3VsdC5taW5p
bXVtU2NhbGUsIHJlc3VsdC5tYXhpbXVtU2NhbGUpOwogCiAgICAgLy8gUmVzb2x2ZSBpbml0aWFs
LXNjYWxlIHZhbHVlLgogICAgIHJlc3VsdC5pbml0aWFsU2NhbGUgPSByZXN1bHRab29tOwpAQCAt
MjE1LDEyICsyMTMsMTIgQEAgVmlld3BvcnRBdHRyaWJ1dGVzIFZpZXdwb3J0QXJndW1lbnRzOjpy
ZXNvbHZlKGNvbnN0IEZsb2F0U2l6ZSYgaW5pdGlhbFZpZXdwb3J0U2kKICAgICAgICAgICAgIHJl
c3VsdC5pbml0aWFsU2NhbGUgPSBpbml0aWFsVmlld3BvcnRTaXplLndpZHRoKCkgLyByZXN1bHRX
aWR0aDsKICAgICAgICAgaWYgKHJlc3VsdEhlaWdodCAhPSBWaWV3cG9ydEFyZ3VtZW50czo6VmFs
dWVBdXRvKSB7CiAgICAgICAgICAgICAvLyBpZiAnYXV0bycsIHRoZSBpbml0aWFsLXNjYWxlIHdp
bGwgYmUgbmVnYXRpdmUgaGVyZSBhbmQgdGh1cyBpZ25vcmVkLgotICAgICAgICAgICAgcmVzdWx0
LmluaXRpYWxTY2FsZSA9IG1heDxmbG9hdD4ocmVzdWx0LmluaXRpYWxTY2FsZSwgaW5pdGlhbFZp
ZXdwb3J0U2l6ZS5oZWlnaHQoKSAvIHJlc3VsdEhlaWdodCk7CisgICAgICAgICAgICByZXN1bHQu
aW5pdGlhbFNjYWxlID0gc3RkOjptYXg8ZmxvYXQ+KHJlc3VsdC5pbml0aWFsU2NhbGUsIGluaXRp
YWxWaWV3cG9ydFNpemUuaGVpZ2h0KCkgLyByZXN1bHRIZWlnaHQpOwogICAgICAgICB9CiAgICAg
fQogCiAgICAgLy8gQ29uc3RyYWluIGluaXRpYWwtc2NhbGUgdmFsdWUgdG8gbWluaW11bS1zY2Fs
ZS9tYXhpbXVtLXNjYWxlIHJhbmdlLgotICAgIHJlc3VsdC5pbml0aWFsU2NhbGUgPSBtaW4ocmVz
dWx0Lm1heGltdW1TY2FsZSwgbWF4KHJlc3VsdC5taW5pbXVtU2NhbGUsIHJlc3VsdC5pbml0aWFs
U2NhbGUpKTsKKyAgICByZXN1bHQuaW5pdGlhbFNjYWxlID0gc3RkOjptaW4ocmVzdWx0Lm1heGlt
dW1TY2FsZSwgc3RkOjptYXgocmVzdWx0Lm1pbmltdW1TY2FsZSwgcmVzdWx0LmluaXRpYWxTY2Fs
ZSkpOwogCiAgICAgLy8gUmVzb2x2ZSB3aWR0aCB2YWx1ZS4KICAgICBpZiAocmVzdWx0V2lkdGgg
PT0gVmlld3BvcnRBcmd1bWVudHM6OlZhbHVlQXV0bykgewpAQCAtMjM4LDggKzIzNiw4IEBAIFZp
ZXdwb3J0QXR0cmlidXRlcyBWaWV3cG9ydEFyZ3VtZW50czo6cmVzb2x2ZShjb25zdCBGbG9hdFNp
emUmIGluaXRpYWxWaWV3cG9ydFNpCiAKICAgICBpZiAodHlwZSA9PSBWaWV3cG9ydEFyZ3VtZW50
czo6Vmlld3BvcnRNZXRhKSB7CiAgICAgICAgIC8vIEV4dGVuZCB3aWR0aCBhbmQgaGVpZ2h0IHRv
IGZpbGwgdGhlIHZpc3VhbCB2aWV3cG9ydCBmb3IgdGhlIHJlc29sdmVkIGluaXRpYWwtc2NhbGUu
Ci0gICAgICAgIHJlc3VsdFdpZHRoID0gbWF4PGZsb2F0PihyZXN1bHRXaWR0aCwgaW5pdGlhbFZp
ZXdwb3J0U2l6ZS53aWR0aCgpIC8gcmVzdWx0LmluaXRpYWxTY2FsZSk7Ci0gICAgICAgIHJlc3Vs
dEhlaWdodCA9IG1heDxmbG9hdD4ocmVzdWx0SGVpZ2h0LCBpbml0aWFsVmlld3BvcnRTaXplLmhl
aWdodCgpIC8gcmVzdWx0LmluaXRpYWxTY2FsZSk7CisgICAgICAgIHJlc3VsdFdpZHRoID0gc3Rk
OjptYXg8ZmxvYXQ+KHJlc3VsdFdpZHRoLCBpbml0aWFsVmlld3BvcnRTaXplLndpZHRoKCkgLyBy
ZXN1bHQuaW5pdGlhbFNjYWxlKTsKKyAgICAgICAgcmVzdWx0SGVpZ2h0ID0gc3RkOjptYXg8Zmxv
YXQ+KHJlc3VsdEhlaWdodCwgaW5pdGlhbFZpZXdwb3J0U2l6ZS5oZWlnaHQoKSAvIHJlc3VsdC5p
bml0aWFsU2NhbGUpOwogICAgIH0KIAogICAgIHJlc3VsdC5sYXlvdXRTaXplLnNldFdpZHRoKHJl
c3VsdFdpZHRoKTsKQEAgLTI3NSwxNCArMjczLDE0IEBAIFZpZXdwb3J0QXR0cmlidXRlcyBjb21w
dXRlVmlld3BvcnRBdHRyaWJ1dGVzKFZpZXdwb3J0QXJndW1lbnRzIGFyZ3MsIGludCBkZXNrdG9w
CiBmbG9hdCBjb21wdXRlTWluaW11bVNjYWxlRmFjdG9yRm9yQ29udGVudENvbnRhaW5lZChjb25z
dCBWaWV3cG9ydEF0dHJpYnV0ZXMmIHJlc3VsdCwgY29uc3QgSW50U2l6ZSYgdmlzaWJsZVZpZXdw
b3J0LCBjb25zdCBJbnRTaXplJiBjb250ZW50c1NpemUpCiB7CiAgICAgRmxvYXRTaXplIHZpZXdw
b3J0U2l6ZSh2aXNpYmxlVmlld3BvcnQpOwotICAgIHJldHVybiBtYXg8ZmxvYXQ+KHJlc3VsdC5t
aW5pbXVtU2NhbGUsIG1heCh2aWV3cG9ydFNpemUud2lkdGgoKSAvIGNvbnRlbnRzU2l6ZS53aWR0
aCgpLCB2aWV3cG9ydFNpemUuaGVpZ2h0KCkgLyBjb250ZW50c1NpemUuaGVpZ2h0KCkpKTsKKyAg
ICByZXR1cm4gc3RkOjptYXg8ZmxvYXQ+KHJlc3VsdC5taW5pbXVtU2NhbGUsIHN0ZDo6bWF4KHZp
ZXdwb3J0U2l6ZS53aWR0aCgpIC8gY29udGVudHNTaXplLndpZHRoKCksIHZpZXdwb3J0U2l6ZS5o
ZWlnaHQoKSAvIGNvbnRlbnRzU2l6ZS5oZWlnaHQoKSkpOwogfQogCiB2b2lkIHJlc3RyaWN0TWlu
aW11bVNjYWxlRmFjdG9yVG9WaWV3cG9ydFNpemUoVmlld3BvcnRBdHRyaWJ1dGVzJiByZXN1bHQs
IEludFNpemUgdmlzaWJsZVZpZXdwb3J0LCBmbG9hdCBkZXZpY2VQaXhlbFJhdGlvKQogewogICAg
IEZsb2F0U2l6ZSB2aWV3cG9ydFNpemUgPSBjb252ZXJ0VG9Vc2VyU3BhY2UodmlzaWJsZVZpZXdw
b3J0LCBkZXZpY2VQaXhlbFJhdGlvKTsKIAotICAgIHJlc3VsdC5taW5pbXVtU2NhbGUgPSBtYXg8
ZmxvYXQ+KHJlc3VsdC5taW5pbXVtU2NhbGUsIG1heCh2aWV3cG9ydFNpemUud2lkdGgoKSAvIHJl
c3VsdC5sYXlvdXRTaXplLndpZHRoKCksIHZpZXdwb3J0U2l6ZS5oZWlnaHQoKSAvIHJlc3VsdC5s
YXlvdXRTaXplLmhlaWdodCgpKSk7CisgICAgcmVzdWx0Lm1pbmltdW1TY2FsZSA9IHN0ZDo6bWF4
PGZsb2F0PihyZXN1bHQubWluaW11bVNjYWxlLCBzdGQ6Om1heCh2aWV3cG9ydFNpemUud2lkdGgo
KSAvIHJlc3VsdC5sYXlvdXRTaXplLndpZHRoKCksIHZpZXdwb3J0U2l6ZS5oZWlnaHQoKSAvIHJl
c3VsdC5sYXlvdXRTaXplLmhlaWdodCgpKSk7CiB9CiAKIHZvaWQgcmVzdHJpY3RTY2FsZUZhY3Rv
clRvSW5pdGlhbFNjYWxlSWZOb3RVc2VyU2NhbGFibGUoVmlld3BvcnRBdHRyaWJ1dGVzJiByZXN1
bHQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0FsdGVybmF0aXZlVGV4dENv
bnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9BbHRlcm5hdGl2ZVRleHRDb250
cm9sbGVyLmNwcAppbmRleCAyNjkyMjJhN2JjYTMyMzA3NDdhMjgyMzQ5ZDQ5ZjFkYjVlYzEwNDEz
Li4yMzAwMTdiOTc3N2NiM2I4NTY5ZTk5Yjk1YzhjNzExMGZhYTRkMmVjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL0FsdGVybmF0aXZlVGV4dENvbnRyb2xsZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvQWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxlci5jcHAKQEAg
LTUyLDkgKzUyLDYgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi11c2luZyBuYW1lc3BhY2Ug
c3RkOwotdXNpbmcgbmFtZXNwYWNlIFdURjsKLQogY2xhc3MgQXV0b2NvcnJlY3Rpb25BbHRlcm5h
dGl2ZURldGFpbHMgOiBwdWJsaWMgQWx0ZXJuYXRpdmVUZXh0RGV0YWlscyB7CiBwdWJsaWM6CiAg
ICAgc3RhdGljIFBhc3NSZWZQdHI8QXV0b2NvcnJlY3Rpb25BbHRlcm5hdGl2ZURldGFpbHM+IGNy
ZWF0ZShjb25zdCBTdHJpbmcmIHJlcGxhY2VtZW50U3RyaW5nKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvZWRpdGluZy9BcHBseVN0eWxlQ29tbWFuZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL0FwcGx5U3R5bGVDb21tYW5kLmNwcAppbmRleCBjOGEzNTU0MmIzODYwODA2MDA3MGNi
ZmMyNmNiNTUyM2MwM2M0NDAyLi5mNjE4YWRhZjFlMzcyNzE2YmQyZWEwOWI1OGQ1MzRmMjY1NzJh
OGZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0FwcGx5U3R5bGVDb21tYW5k
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0FwcGx5U3R5bGVDb21tYW5kLmNwcApA
QCAtNDAzLDcgKzQwMyw3IEBAIHZvaWQgQXBwbHlTdHlsZUNvbW1hbmQ6OmFwcGx5UmVsYXRpdmVG
b250U3R5bGVDaGFuZ2UoRWRpdGluZ1N0eWxlKiBzdHlsZSkKIAogICAgICAgICBSZWZQdHI8TXV0
YWJsZVN0eWxlUHJvcGVydHlTZXQ+IGlubGluZVN0eWxlID0gY29weVN0eWxlT3JDcmVhdGVFbXB0
eShlbGVtZW50LT5pbmxpbmVTdHlsZSgpKTsKICAgICAgICAgZmxvYXQgY3VycmVudEZvbnRTaXpl
ID0gY29tcHV0ZWRGb250U2l6ZShub2RlKTsKLSAgICAgICAgZmxvYXQgZGVzaXJlZEZvbnRTaXpl
ID0gbWF4KE1pbmltdW1Gb250U2l6ZSwgc3RhcnRpbmdGb250U2l6ZXMuZ2V0KG5vZGUpICsgc3R5
bGUtPmZvbnRTaXplRGVsdGEoKSk7CisgICAgICAgIGZsb2F0IGRlc2lyZWRGb250U2l6ZSA9IHN0
ZDo6bWF4KE1pbmltdW1Gb250U2l6ZSwgc3RhcnRpbmdGb250U2l6ZXMuZ2V0KG5vZGUpICsgc3R5
bGUtPmZvbnRTaXplRGVsdGEoKSk7CiAgICAgICAgIFJlZlB0cjxDU1NWYWx1ZT4gdmFsdWUgPSBp
bmxpbmVTdHlsZS0+Z2V0UHJvcGVydHlDU1NWYWx1ZShDU1NQcm9wZXJ0eUZvbnRTaXplKTsKICAg
ICAgICAgaWYgKHZhbHVlKSB7CiAgICAgICAgICAgICBlbGVtZW50LT5yZW1vdmVJbmxpbmVTdHls
ZVByb3BlcnR5KENTU1Byb3BlcnR5Rm9udFNpemUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvZWRpdGluZy9Db21wb3NpdGVFZGl0Q29tbWFuZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL0NvbXBvc2l0ZUVkaXRDb21tYW5kLmNwcAppbmRleCAyNmFiMjRkNzYwMjgxODMwZmZlNWQ1
OWMwYjQ3MDQyNDA4MGJjMDkyLi41MWNlOThiMTY5ZTJkYTZiMTUyMGMxODczZjRkMjAyYmU4MGQx
NzRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0NvbXBvc2l0ZUVkaXRDb21t
YW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0NvbXBvc2l0ZUVkaXRDb21tYW5k
LmNwcApAQCAtNzIsOCArNzIsNiBAQAogI2luY2x1ZGUgIkRlbGV0ZUJ1dHRvbkNvbnRyb2xsZXIu
aCIKICNlbmRpZgogCi11c2luZyBuYW1lc3BhY2Ugc3RkOwotCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKIHVzaW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7CkBAIC03NzYsOCArNzc0LDggQEAgdm9pZCBD
b21wb3NpdGVFZGl0Q29tbWFuZDo6ZGVsZXRlSW5zaWduaWZpY2FudFRleHQoUGFzc1JlZlB0cjxU
ZXh0PiB0ZXh0Tm9kZSwgdW4KICAgICAgICAgYm9vbCBpbmRpY2VzSW50ZXJzZWN0ID0gc3RhcnQg
PD0gZ2FwRW5kICYmIGVuZCA+PSBnYXBTdGFydDsKICAgICAgICAgaW50IGdhcExlbiA9IGdhcEVu
ZCAtIGdhcFN0YXJ0OwogICAgICAgICBpZiAoaW5kaWNlc0ludGVyc2VjdCAmJiBnYXBMZW4gPiAw
KSB7Ci0gICAgICAgICAgICBnYXBTdGFydCA9IG1heChnYXBTdGFydCwgc3RhcnQpOwotICAgICAg
ICAgICAgZ2FwRW5kID0gbWluKGdhcEVuZCwgZW5kKTsKKyAgICAgICAgICAgIGdhcFN0YXJ0ID0g
c3RkOjptYXgoZ2FwU3RhcnQsIHN0YXJ0KTsKKyAgICAgICAgICAgIGdhcEVuZCA9IHN0ZDo6bWlu
KGdhcEVuZCwgZW5kKTsKICAgICAgICAgICAgIGlmIChzdHIuaXNOdWxsKCkpCiAgICAgICAgICAg
ICAgICAgc3RyID0gdGV4dE5vZGUtPmRhdGEoKS5zdWJzdHJpbmcoc3RhcnQsIGVuZCAtIHN0YXJ0
KTsKICAgICAgICAgICAgIC8vIHJlbW92ZSB0ZXh0IGluIHRoZSBnYXAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
RWRpdG9yLmNwcAppbmRleCA3YjhhNWY3ZWU4NmIyNzkyMzZjZDE3YThlZmNmZjY1ZmQzMGQwYjg4
Li4xOWY1Y2IwOTFmMWViOGM4MGI3ZDA4MmQ4MjMzM2ExYjUzM2JiYWRiIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRp
dGluZy9FZGl0b3IuY3BwCkBAIC05Nyw3ICs5Nyw2IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAotdXNpbmcgbmFtZXNwYWNlIHN0ZDsKIHVzaW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7CiB1c2lu
ZyBuYW1lc3BhY2UgV1RGOwogdXNpbmcgbmFtZXNwYWNlIFVuaWNvZGU7CkBAIC0xNjM1LDggKzE2
MzQsOCBAQCB2b2lkIEVkaXRvcjo6c2V0Q29tcG9zaXRpb24oY29uc3QgU3RyaW5nJiB0ZXh0LCBj
b25zdCBWZWN0b3I8Q29tcG9zaXRpb25VbmRlcmxpbgogICAgICAgICAgICAgaWYgKGJhc2VOb2Rl
LT5yZW5kZXJlcigpKQogICAgICAgICAgICAgICAgIGJhc2VOb2RlLT5yZW5kZXJlcigpLT5yZXBh
aW50KCk7CiAKLSAgICAgICAgICAgIHVuc2lnbmVkIHN0YXJ0ID0gbWluKGJhc2VPZmZzZXQgKyBz
ZWxlY3Rpb25TdGFydCwgZXh0ZW50T2Zmc2V0KTsKLSAgICAgICAgICAgIHVuc2lnbmVkIGVuZCA9
IG1pbihtYXgoc3RhcnQsIGJhc2VPZmZzZXQgKyBzZWxlY3Rpb25FbmQpLCBleHRlbnRPZmZzZXQp
OworICAgICAgICAgICAgdW5zaWduZWQgc3RhcnQgPSBzdGQ6Om1pbihiYXNlT2Zmc2V0ICsgc2Vs
ZWN0aW9uU3RhcnQsIGV4dGVudE9mZnNldCk7CisgICAgICAgICAgICB1bnNpZ25lZCBlbmQgPSBz
dGQ6Om1pbihzdGQ6Om1heChzdGFydCwgYmFzZU9mZnNldCArIHNlbGVjdGlvbkVuZCksIGV4dGVu
dE9mZnNldCk7CiAgICAgICAgICAgICBSZWZQdHI8UmFuZ2U+IHNlbGVjdGVkUmFuZ2UgPSBSYW5n
ZTo6Y3JlYXRlKGJhc2VOb2RlLT5kb2N1bWVudCgpLCBiYXNlTm9kZSwgc3RhcnQsIGJhc2VOb2Rl
LCBlbmQpOwogICAgICAgICAgICAgbV9mcmFtZS5zZWxlY3Rpb24oKS5zZXRTZWxlY3RlZFJhbmdl
KHNlbGVjdGVkUmFuZ2UuZ2V0KCksIERPV05TVFJFQU0sIGZhbHNlKTsKICAgICAgICAgfQpAQCAt
MjU0Myw4ICsyNTQyLDggQEAgUGFzc1JlZlB0cjxSYW5nZT4gRWRpdG9yOjpjb21wb3NpdGlvblJh
bmdlKCkgY29uc3QKICAgICBpZiAoIW1fY29tcG9zaXRpb25Ob2RlKQogICAgICAgICByZXR1cm4g
MDsKICAgICB1bnNpZ25lZCBsZW5ndGggPSBtX2NvbXBvc2l0aW9uTm9kZS0+bGVuZ3RoKCk7Ci0g
ICAgdW5zaWduZWQgc3RhcnQgPSBtaW4obV9jb21wb3NpdGlvblN0YXJ0LCBsZW5ndGgpOwotICAg
IHVuc2lnbmVkIGVuZCA9IG1pbihtYXgoc3RhcnQsIG1fY29tcG9zaXRpb25FbmQpLCBsZW5ndGgp
OworICAgIHVuc2lnbmVkIHN0YXJ0ID0gc3RkOjptaW4obV9jb21wb3NpdGlvblN0YXJ0LCBsZW5n
dGgpOworICAgIHVuc2lnbmVkIGVuZCA9IHN0ZDo6bWluKHN0ZDo6bWF4KHN0YXJ0LCBtX2NvbXBv
c2l0aW9uRW5kKSwgbGVuZ3RoKTsKICAgICBpZiAoc3RhcnQgPj0gZW5kKQogICAgICAgICByZXR1
cm4gMDsKICAgICByZXR1cm4gUmFuZ2U6OmNyZWF0ZShtX2NvbXBvc2l0aW9uTm9kZS0+ZG9jdW1l
bnQoKSwgbV9jb21wb3NpdGlvbk5vZGUuZ2V0KCksIHN0YXJ0LCBtX2NvbXBvc2l0aW9uTm9kZS5n
ZXQoKSwgZW5kKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yQ29t
bWFuZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvckNvbW1hbmQuY3BwCmluZGV4
IDkzN2Q2N2E3NTEyMzZlYzBlN2U3OWM2YmQ4NzJmYjcwNGYyZDk4YjkuLjBhMTkyNzYwYWVhMDRk
MzEzOTYzYjllOGE0YWRiOGFmMjNlOGMyODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvRWRpdG9yQ29tbWFuZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0
b3JDb21tYW5kLmNwcApAQCAtMjYyLDcgKzI2Miw3IEBAIHN0YXRpYyB1bnNpZ25lZCB2ZXJ0aWNh
bFNjcm9sbERpc3RhbmNlKEZyYW1lJiBmcmFtZSkKICAgICBpZiAoIShzdHlsZS0+b3ZlcmZsb3dZ
KCkgPT0gT1NDUk9MTCB8fCBzdHlsZS0+b3ZlcmZsb3dZKCkgPT0gT0FVVE8gfHwgZm9jdXNlZEVs
ZW1lbnQtPnJlbmRlcmVySXNFZGl0YWJsZSgpKSkKICAgICAgICAgcmV0dXJuIDA7CiAgICAgaW50
IGhlaWdodCA9IHN0ZDo6bWluPGludD4odG9SZW5kZXJCb3gocmVuZGVyZXIpLT5jbGllbnRIZWln
aHQoKSwgZnJhbWUudmlldygpLT52aXNpYmxlSGVpZ2h0KCkpOwotICAgIHJldHVybiBzdGF0aWNf
Y2FzdDx1bnNpZ25lZD4obWF4KG1heDxpbnQ+KGhlaWdodCAqIFNjcm9sbGJhcjo6bWluRnJhY3Rp
b25Ub1N0ZXBXaGVuUGFnaW5nKCksIGhlaWdodCAtIFNjcm9sbGJhcjo6bWF4T3ZlcmxhcEJldHdl
ZW5QYWdlcygpKSwgMSkpOworICAgIHJldHVybiBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oc3RkOjpt
YXgoc3RkOjptYXg8aW50PihoZWlnaHQgKiBTY3JvbGxiYXI6Om1pbkZyYWN0aW9uVG9TdGVwV2hl
blBhZ2luZygpLCBoZWlnaHQgLSBTY3JvbGxiYXI6Om1heE92ZXJsYXBCZXR3ZWVuUGFnZXMoKSks
IDEpKTsKIH0KIAogc3RhdGljIFJlZlB0cjxSYW5nZT4gdW5pb25ET01SYW5nZXMoUmFuZ2UqIGEs
IFJhbmdlKiBiKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0SXRlcmF0
b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0SXRlcmF0b3IuY3BwCmluZGV4IGI2
NTVmMjU2MzA2YmNlMDJhNDYwYWI2MTRlMzQxZjA4OWM5NGJmMzYuLjU2MTRiNmU3ZmQyOGVkZjI2
NDVlNTFlOTQzNjVmZGUzMjM5ZmZmMmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvVGV4dEl0ZXJhdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1RleHRJdGVy
YXRvci5jcHAKQEAgLTU4LDcgKzU4LDYgQEAKICNlbmRpZgogCiB1c2luZyBuYW1lc3BhY2UgV1RG
OjpVbmljb2RlOwotdXNpbmcgbmFtZXNwYWNlIHN0ZDsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
CkBAIC01MTIsNyArNTExLDcgQEAgYm9vbCBUZXh0SXRlcmF0b3I6OmhhbmRsZVRleHROb2RlKCkK
ICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgaW50IHN0ckxlbmd0aCA9IHN0ci5s
ZW5ndGgoKTsKICAgICAgICAgaW50IGVuZCA9IChtX25vZGUgPT0gbV9lbmRDb250YWluZXIpID8g
bV9lbmRPZmZzZXQgOiBJTlRfTUFYOwotICAgICAgICBpbnQgcnVuRW5kID0gbWluKHN0ckxlbmd0
aCwgZW5kKTsKKyAgICAgICAgaW50IHJ1bkVuZCA9IHN0ZDo6bWluKHN0ckxlbmd0aCwgZW5kKTsK
IAogICAgICAgICBpZiAocnVuU3RhcnQgPj0gcnVuRW5kKQogICAgICAgICAgICAgcmV0dXJuIHRy
dWU7CkBAIC01NjUsNyArNTY0LDcgQEAgdm9pZCBUZXh0SXRlcmF0b3I6OmhhbmRsZVRleHRCb3go
KQogICAgIHVuc2lnbmVkIGVuZCA9IChtX25vZGUgPT0gbV9lbmRDb250YWluZXIpID8gc3RhdGlj
X2Nhc3Q8dW5zaWduZWQ+KG1fZW5kT2Zmc2V0KSA6IFVJTlRfTUFYOwogICAgIHdoaWxlIChtX3Rl
eHRCb3gpIHsKICAgICAgICAgdW5zaWduZWQgdGV4dEJveFN0YXJ0ID0gbV90ZXh0Qm94LT5zdGFy
dCgpOwotICAgICAgICB1bnNpZ25lZCBydW5TdGFydCA9IG1heCh0ZXh0Qm94U3RhcnQsIHN0YXJ0
KTsKKyAgICAgICAgdW5zaWduZWQgcnVuU3RhcnQgPSBzdGQ6Om1heCh0ZXh0Qm94U3RhcnQsIHN0
YXJ0KTsKIAogICAgICAgICAvLyBDaGVjayBmb3IgY29sbGFwc2VkIHNwYWNlIGF0IHRoZSBzdGFy
dCBvZiB0aGlzIHJ1bi4KICAgICAgICAgSW5saW5lVGV4dEJveCogZmlyc3RUZXh0Qm94ID0gcmVu
ZGVyZXItPmNvbnRhaW5zUmV2ZXJzZWRUZXh0KCkgPyAobV9zb3J0ZWRUZXh0Qm94ZXMuaXNFbXB0
eSgpID8gMCA6IG1fc29ydGVkVGV4dEJveGVzWzBdKSA6IHJlbmRlcmVyLT5maXJzdFRleHRCb3go
KTsKQEAgLTU4Miw3ICs1ODEsNyBAQCB2b2lkIFRleHRJdGVyYXRvcjo6aGFuZGxlVGV4dEJveCgp
CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICAgICAgdW5zaWduZWQgdGV4dEJv
eEVuZCA9IHRleHRCb3hTdGFydCArIG1fdGV4dEJveC0+bGVuKCk7Ci0gICAgICAgIHVuc2lnbmVk
IHJ1bkVuZCA9IG1pbih0ZXh0Qm94RW5kLCBlbmQpOworICAgICAgICB1bnNpZ25lZCBydW5FbmQg
PSBzdGQ6Om1pbih0ZXh0Qm94RW5kLCBlbmQpOwogICAgICAgICAKICAgICAgICAgLy8gRGV0ZXJt
aW5lIHdoYXQgdGhlIG5leHQgdGV4dCBib3ggd2lsbCBiZSwgYnV0IGRvbid0IGFkdmFuY2UgeWV0
CiAgICAgICAgIElubGluZVRleHRCb3gqIG5leHRUZXh0Qm94ID0gMDsKQEAgLTE0NTIsNyArMTQ1
MSw3IEBAIFN0cmluZyBDaGFyYWN0ZXJJdGVyYXRvcjo6c3RyaW5nKGludCBudW1DaGFycykKICAg
ICBWZWN0b3I8VUNoYXI+IHJlc3VsdDsKICAgICByZXN1bHQucmVzZXJ2ZUluaXRpYWxDYXBhY2l0
eShudW1DaGFycyk7CiAgICAgd2hpbGUgKG51bUNoYXJzID4gMCAmJiAhYXRFbmQoKSkgewotICAg
ICAgICBpbnQgcnVuU2l6ZSA9IG1pbihudW1DaGFycywgbGVuZ3RoKCkpOworICAgICAgICBpbnQg
cnVuU2l6ZSA9IHN0ZDo6bWluKG51bUNoYXJzLCBsZW5ndGgoKSk7CiAgICAgICAgIHJlc3VsdC5h
cHBlbmQoY2hhcmFjdGVycygpLCBydW5TaXplKTsKICAgICAgICAgbnVtQ2hhcnMgLT0gcnVuU2l6
ZTsKICAgICAgICAgYWR2YW5jZShydW5TaXplKTsKQEAgLTE5NjUsNyArMTk2NCw3IEBAIGlubGlu
ZSBTZWFyY2hCdWZmZXI6OlNlYXJjaEJ1ZmZlcihjb25zdCBTdHJpbmcmIHRhcmdldCwgRmluZE9w
dGlvbnMgb3B0aW9ucykKICAgICBmb2xkUXVvdGVNYXJrc0FuZFNvZnRIeXBoZW5zKG1fdGFyZ2V0
KTsKIAogICAgIHNpemVfdCB0YXJnZXRMZW5ndGggPSBtX3RhcmdldC5sZW5ndGgoKTsKLSAgICBt
X2J1ZmZlci5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KG1heCh0YXJnZXRMZW5ndGggKiA4LCBtaW5p
bXVtU2VhcmNoQnVmZmVyU2l6ZSkpOworICAgIG1fYnVmZmVyLnJlc2VydmVJbml0aWFsQ2FwYWNp
dHkoc3RkOjptYXgodGFyZ2V0TGVuZ3RoICogOCwgbWluaW11bVNlYXJjaEJ1ZmZlclNpemUpKTsK
ICAgICBtX292ZXJsYXAgPSBtX2J1ZmZlci5jYXBhY2l0eSgpIC8gNDsKIAogICAgIGlmICgobV9v
cHRpb25zICYgQXRXb3JkU3RhcnRzKSAmJiB0YXJnZXRMZW5ndGgpIHsKQEAgLTIwMzUsMTIgKzIw
MzQsMTIgQEAgaW5saW5lIHNpemVfdCBTZWFyY2hCdWZmZXI6OmFwcGVuZChjb25zdCBVQ2hhciog
Y2hhcmFjdGVycywgc2l6ZV90IGxlbmd0aCkKICAgICAgICAgbV9hdEJyZWFrID0gZmFsc2U7CiAg
ICAgfSBlbHNlIGlmIChtX2J1ZmZlci5zaXplKCkgPT0gbV9idWZmZXIuY2FwYWNpdHkoKSkgewog
ICAgICAgICBtZW1jcHkobV9idWZmZXIuZGF0YSgpLCBtX2J1ZmZlci5kYXRhKCkgKyBtX2J1ZmZl
ci5zaXplKCkgLSBtX292ZXJsYXAsIG1fb3ZlcmxhcCAqIHNpemVvZihVQ2hhcikpOwotICAgICAg
ICBtX3ByZWZpeExlbmd0aCAtPSBtaW4obV9wcmVmaXhMZW5ndGgsIG1fYnVmZmVyLnNpemUoKSAt
IG1fb3ZlcmxhcCk7CisgICAgICAgIG1fcHJlZml4TGVuZ3RoIC09IHN0ZDo6bWluKG1fcHJlZml4
TGVuZ3RoLCBtX2J1ZmZlci5zaXplKCkgLSBtX292ZXJsYXApOwogICAgICAgICBtX2J1ZmZlci5z
aHJpbmsobV9vdmVybGFwKTsKICAgICB9CiAKICAgICBzaXplX3Qgb2xkTGVuZ3RoID0gbV9idWZm
ZXIuc2l6ZSgpOwotICAgIHNpemVfdCB1c2FibGVMZW5ndGggPSBtaW4obV9idWZmZXIuY2FwYWNp
dHkoKSAtIG9sZExlbmd0aCwgbGVuZ3RoKTsKKyAgICBzaXplX3QgdXNhYmxlTGVuZ3RoID0gc3Rk
OjptaW4obV9idWZmZXIuY2FwYWNpdHkoKSAtIG9sZExlbmd0aCwgbGVuZ3RoKTsKICAgICBBU1NF
UlQodXNhYmxlTGVuZ3RoKTsKICAgICBtX2J1ZmZlci5hcHBlbmQoY2hhcmFjdGVycywgdXNhYmxl
TGVuZ3RoKTsKICAgICBmb2xkUXVvdGVNYXJrc0FuZFNvZnRIeXBoZW5zKG1fYnVmZmVyLmRhdGEo
KSArIG9sZExlbmd0aCwgdXNhYmxlTGVuZ3RoKTsKQEAgLTIwNjgsNyArMjA2Nyw3IEBAIGlubGlu
ZSB2b2lkIFNlYXJjaEJ1ZmZlcjo6cHJlcGVuZENvbnRleHQoY29uc3QgVUNoYXIqIGNoYXJhY3Rl
cnMsIHNpemVfdCBsZW5ndGgpCiAgICAgICAgIHdvcmRCb3VuZGFyeUNvbnRleHRTdGFydCA9IHN0
YXJ0T2ZMYXN0V29yZEJvdW5kYXJ5Q29udGV4dChjaGFyYWN0ZXJzLCB3b3JkQm91bmRhcnlDb250
ZXh0U3RhcnQpOwogICAgIH0KIAotICAgIHNpemVfdCB1c2FibGVMZW5ndGggPSBtaW4obV9idWZm
ZXIuY2FwYWNpdHkoKSAtIG1fcHJlZml4TGVuZ3RoLCBsZW5ndGggLSB3b3JkQm91bmRhcnlDb250
ZXh0U3RhcnQpOworICAgIHNpemVfdCB1c2FibGVMZW5ndGggPSBzdGQ6Om1pbihtX2J1ZmZlci5j
YXBhY2l0eSgpIC0gbV9wcmVmaXhMZW5ndGgsIGxlbmd0aCAtIHdvcmRCb3VuZGFyeUNvbnRleHRT
dGFydCk7CiAgICAgbV9idWZmZXIuaW5zZXJ0KDAsIGNoYXJhY3RlcnMgKyBsZW5ndGggLSB1c2Fi
bGVMZW5ndGgsIHVzYWJsZUxlbmd0aCk7CiAgICAgbV9wcmVmaXhMZW5ndGggKz0gdXNhYmxlTGVu
Z3RoOwogCkBAIC0yMjQxLDEwICsyMjQwLDEwIEBAIG5leHRNYXRjaDoKICAgICAgICAgICAgIGlu
dCB3b3JkQm91bmRhcnlDb250ZXh0U3RhcnQgPSBtYXRjaFN0YXJ0OwogICAgICAgICAgICAgVTE2
X0JBQ0tfMShtX2J1ZmZlci5kYXRhKCksIDAsIHdvcmRCb3VuZGFyeUNvbnRleHRTdGFydCk7CiAg
ICAgICAgICAgICB3b3JkQm91bmRhcnlDb250ZXh0U3RhcnQgPSBzdGFydE9mTGFzdFdvcmRCb3Vu
ZGFyeUNvbnRleHQobV9idWZmZXIuZGF0YSgpLCB3b3JkQm91bmRhcnlDb250ZXh0U3RhcnQpOwot
ICAgICAgICAgICAgb3ZlcmxhcCA9IG1pbihzaXplIC0gMSwgbWF4KG92ZXJsYXAsIHNpemUgLSB3
b3JkQm91bmRhcnlDb250ZXh0U3RhcnQpKTsKKyAgICAgICAgICAgIG92ZXJsYXAgPSBzdGQ6Om1p
bihzaXplIC0gMSwgc3RkOjptYXgob3ZlcmxhcCwgc2l6ZSAtIHdvcmRCb3VuZGFyeUNvbnRleHRT
dGFydCkpOwogICAgICAgICB9CiAgICAgICAgIG1lbWNweShtX2J1ZmZlci5kYXRhKCksIG1fYnVm
ZmVyLmRhdGEoKSArIHNpemUgLSBvdmVybGFwLCBvdmVybGFwICogc2l6ZW9mKFVDaGFyKSk7Ci0g
ICAgICAgIG1fcHJlZml4TGVuZ3RoIC09IG1pbihtX3ByZWZpeExlbmd0aCwgc2l6ZSAtIG92ZXJs
YXApOworICAgICAgICBtX3ByZWZpeExlbmd0aCAtPSBzdGQ6Om1pbihtX3ByZWZpeExlbmd0aCwg
c2l6ZSAtIG92ZXJsYXApOwogICAgICAgICBtX2J1ZmZlci5zaHJpbmsob3ZlcmxhcCk7CiAgICAg
ICAgIHJldHVybiAwOwogICAgIH0KQEAgLTIyNjEsNyArMjI2MCw3IEBAIG5leHRNYXRjaDoKIAog
ICAgIHNpemVfdCBuZXdTaXplID0gc2l6ZSAtIChtYXRjaFN0YXJ0ICsgMSk7CiAgICAgbWVtbW92
ZShtX2J1ZmZlci5kYXRhKCksIG1fYnVmZmVyLmRhdGEoKSArIG1hdGNoU3RhcnQgKyAxLCBuZXdT
aXplICogc2l6ZW9mKFVDaGFyKSk7Ci0gICAgbV9wcmVmaXhMZW5ndGggLT0gbWluPHNpemVfdD4o
bV9wcmVmaXhMZW5ndGgsIG1hdGNoU3RhcnQgKyAxKTsKKyAgICBtX3ByZWZpeExlbmd0aCAtPSBz
dGQ6Om1pbjxzaXplX3Q+KG1fcHJlZml4TGVuZ3RoLCBtYXRjaFN0YXJ0ICsgMSk7CiAgICAgbV9i
dWZmZXIuc2hyaW5rKG5ld1NpemUpOwogCiAgICAgc3RhcnQgPSBzaXplIC0gbWF0Y2hTdGFydDsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVmlzaWJsZVVuaXRzLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvVmlzaWJsZVVuaXRzLmNwcAppbmRleCBhZjJlYTEzM2JhNzJk
YjIzMTNiOTBjM2Y3NWUzNTQ5NjIzYzI3NDY5Li41ZTdmY2I2NjExZTJlZGM3OTJhMjhlMDljOGY2
NjEyZjU4YzIwMDZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1Zpc2libGVV
bml0cy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9WaXNpYmxlVW5pdHMuY3BwCkBA
IC0xMTM3LDcgKzExMzcsNyBAQCBWaXNpYmxlUG9zaXRpb24gc3RhcnRPZlBhcmFncmFwaChjb25z
dCBWaXNpYmxlUG9zaXRpb24mIGMsIEVkaXRpbmdCb3VuZGFyeUNyb3NzaQogICAgICAgICAgICAg
ICAgIGludCBpID0gdG9SZW5kZXJUZXh0KHIpLT50ZXh0TGVuZ3RoKCk7CiAgICAgICAgICAgICAg
ICAgaW50IG8gPSBvZmZzZXQ7CiAgICAgICAgICAgICAgICAgaWYgKG4gPT0gc3RhcnROb2RlICYm
IG8gPCBpKQotICAgICAgICAgICAgICAgICAgICBpID0gbWF4KDAsIG8pOworICAgICAgICAgICAg
ICAgICAgICBpID0gc3RkOjptYXgoMCwgbyk7CiAgICAgICAgICAgICAgICAgd2hpbGUgKC0taSA+
PSAwKSB7CiAgICAgICAgICAgICAgICAgICAgIGlmIChjaGFyc1tpXSA9PSAnXG4nKQogICAgICAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuIFZpc2libGVQb3NpdGlvbihQb3NpdGlvbih0b1RleHQo
biksIGkgKyAxKSwgRE9XTlNUUkVBTSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL2h0bWxlZGl0aW5nLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvaHRtbGVkaXRpbmcu
Y3BwCmluZGV4IGZjN2E4MzUyOTQ4YmE3NzYyYzdlOWRjNGIyMWZkZmZlYmQzNzZiZjcuLmVmZjQ1
ODVjNmE4MTA4ZDExZGUyNDA5YTM3NmM4YjAzNzBkNjJmNzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvaHRtbGVkaXRpbmcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvaHRtbGVkaXRpbmcuY3BwCkBAIC01Nyw4ICs1Nyw2IEBACiAjaW5jbHVkZSA8d3RmL1N0ZExp
YkV4dHJhcy5oPgogI2luY2x1ZGUgPHd0Zi91bmljb2RlL0NoYXJhY3Rlck5hbWVzLmg+CiAKLXVz
aW5nIG5hbWVzcGFjZSBzdGQ7Ci0KIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogdXNpbmcgbmFtZXNw
YWNlIEhUTUxOYW1lczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFya3Vw
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFya3VwLmNwcAppbmRleCA3MGI1NGZlZDVm
NTdmYjI0NGZkMTI4ZDBmMTdmMTgzY2RhMGQxMjBjLi5lODM4YTQzYTA2YzRjZDc1ZjA4ZDBmM2Nk
NmMyOWYxZjY1NzU3YjA1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hcmt1
cC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYXJrdXAuY3BwCkBAIC02NCw4ICs2
NCw2IEBACiAjaW5jbHVkZSAiRGVsZXRlQnV0dG9uQ29udHJvbGxlci5oIgogI2VuZGlmCiAKLXVz
aW5nIG5hbWVzcGFjZSBzdGQ7Ci0KIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogdXNpbmcgbmFtZXNw
YWNlIEhUTUxOYW1lczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZVJl
YWRlckxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGVSZWFkZXJMb2FkZXIu
Y3BwCmluZGV4IDI0NDdjMzBlYTUxNGFmYzhhZjIyNWI0ZWE2ZWYwNGMyMmRhNTdjZWIuLjg5YTY3
YjlmMjNkMzVkZjFlNWRiYjgyYmI3OGQxYTgwY2YwYjcwNjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2ZpbGVhcGkvRmlsZVJlYWRlckxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
ZmlsZWFwaS9GaWxlUmVhZGVyTG9hZGVyLmNwcApAQCAtNTAsOCArNTAsNiBAQAogI2luY2x1ZGUg
PHd0Zi90ZXh0L0Jhc2U2NC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4K
IAotdXNpbmcgbmFtZXNwYWNlIHN0ZDsKLQogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjb25zdCBp
bnQgZGVmYXVsdEJ1ZmZlckxlbmd0aCA9IDMyNzY4OwpAQCAtMTU0LDcgKzE1Miw3IEBAIHZvaWQg
RmlsZVJlYWRlckxvYWRlcjo6ZGlkUmVjZWl2ZVJlc3BvbnNlKHVuc2lnbmVkIGxvbmcsIGNvbnN0
IFJlc291cmNlUmVzcG9uc2UmCiAgICAgLy8gQ2hlY2sgdGhhdCB3ZSBjYW4gY2FzdCB0byB1bnNp
Z25lZCBzaW5jZSB3ZSBoYXZlIHRvIGRvCiAgICAgLy8gc28gdG8gY2FsbCBBcnJheUJ1ZmZlcidz
IGNyZWF0ZSBmdW5jdGlvbi4KICAgICAvLyBGSVhNRTogU3VwcG9ydCByZWFkaW5nIG1vcmUgdGhh
biB0aGUgY3VycmVudCBzaXplIGxpbWl0IG9mIEFycmF5QnVmZmVyLgotICAgIGlmIChsZW5ndGgg
PiBudW1lcmljX2xpbWl0czx1bnNpZ25lZD46Om1heCgpKSB7CisgICAgaWYgKGxlbmd0aCA+IHN0
ZDo6bnVtZXJpY19saW1pdHM8dW5zaWduZWQ+OjptYXgoKSkgewogICAgICAgICBmYWlsZWQoRmls
ZUVycm9yOjpOT1RfUkVBREFCTEVfRVJSKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTE4
NiwxNCArMTg0LDE0IEBAIHZvaWQgRmlsZVJlYWRlckxvYWRlcjo6ZGlkUmVjZWl2ZURhdGEoY29u
c3QgY2hhciogZGF0YSwgaW50IGRhdGFMZW5ndGgpCiAgICAgdW5zaWduZWQgcmVtYWluaW5nQnVm
ZmVyU3BhY2UgPSBtX3RvdGFsQnl0ZXMgLSBtX2J5dGVzTG9hZGVkOwogICAgIGlmIChsZW5ndGgg
PiBzdGF0aWNfY2FzdDxsb25nIGxvbmc+KHJlbWFpbmluZ0J1ZmZlclNwYWNlKSkgewogICAgICAg
ICAvLyBJZiB0aGUgYnVmZmVyIGhhcyBoaXQgbWF4aW11bSBzaXplLCBpdCBjYW4ndCBiZSBncm93
biBhbnkgbW9yZS4KLSAgICAgICAgaWYgKG1fdG90YWxCeXRlcyA+PSBudW1lcmljX2xpbWl0czx1
bnNpZ25lZD46Om1heCgpKSB7CisgICAgICAgIGlmIChtX3RvdGFsQnl0ZXMgPj0gc3RkOjpudW1l
cmljX2xpbWl0czx1bnNpZ25lZD46Om1heCgpKSB7CiAgICAgICAgICAgICBmYWlsZWQoRmlsZUVy
cm9yOjpOT1RfUkVBREFCTEVfRVJSKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQog
ICAgICAgICBpZiAobV92YXJpYWJsZUxlbmd0aCkgewogICAgICAgICAgICAgdW5zaWduZWQgbG9u
ZyBsb25nIG5ld0xlbmd0aCA9IG1fdG90YWxCeXRlcyAqIDI7Ci0gICAgICAgICAgICBpZiAobmV3
TGVuZ3RoID4gbnVtZXJpY19saW1pdHM8dW5zaWduZWQ+OjptYXgoKSkKLSAgICAgICAgICAgICAg
ICBuZXdMZW5ndGggPSBudW1lcmljX2xpbWl0czx1bnNpZ25lZD46Om1heCgpOworICAgICAgICAg
ICAgaWYgKG5ld0xlbmd0aCA+IHN0ZDo6bnVtZXJpY19saW1pdHM8dW5zaWduZWQ+OjptYXgoKSkK
KyAgICAgICAgICAgICAgICBuZXdMZW5ndGggPSBzdGQ6Om51bWVyaWNfbGltaXRzPHVuc2lnbmVk
Pjo6bWF4KCk7CiAgICAgICAgICAgICBSZWZQdHI8QXJyYXlCdWZmZXI+IG5ld0RhdGEgPQogICAg
ICAgICAgICAgICAgIEFycmF5QnVmZmVyOjpjcmVhdGUoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KG5l
d0xlbmd0aCksIDEpOwogICAgICAgICAgICAgbWVtY3B5KHN0YXRpY19jYXN0PGNoYXIqPihuZXdE
YXRhLT5kYXRhKCkpLCBzdGF0aWNfY2FzdDxjaGFyKj4obV9yYXdEYXRhLT5kYXRhKCkpLCBtX2J5
dGVzTG9hZGVkKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2hpc3RvcnkvQmFja0Zvcndh
cmRMaXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2hpc3RvcnkvQmFja0ZvcndhcmRMaXN0LmNwcApp
bmRleCAxNWYxMDE1OWNmNjZjMDIyNzhlZjhhNjkyNmI4YzFlN2QxNGJhN2JlLi4xYjRmNzY1OGMy
ODViNGZmNDhiMjE0YTg3MDM2N2RmYzBkZTRlMTc0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9oaXN0b3J5L0JhY2tGb3J3YXJkTGlzdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaGlzdG9y
eS9CYWNrRm9yd2FyZExpc3QuY3BwCkBAIC0zNiw4ICszNiw2IEBACiAjaW5jbHVkZSAiUGFnZUNh
Y2hlLmgiCiAjaW5jbHVkZSAiU2VyaWFsaXplZFNjcmlwdFZhbHVlLmgiCiAKLXVzaW5nIG5hbWVz
cGFjZSBzdGQ7Ci0KIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogc3RhdGljIGNvbnN0IHVuc2lnbmVk
IERlZmF1bHRDYXBhY2l0eSA9IDEwMDsKQEAgLTE0NCw3ICsxNDIsNyBAQCB2b2lkIEJhY2tGb3J3
YXJkTGlzdDo6YmFja0xpc3RXaXRoTGltaXQoaW50IGxpbWl0LCBIaXN0b3J5SXRlbVZlY3RvciYg
bGlzdCkKIHsKICAgICBsaXN0LmNsZWFyKCk7CiAgICAgaWYgKG1fY3VycmVudCAhPSBOb0N1cnJl
bnRJdGVtSW5kZXgpIHsKLSAgICAgICAgdW5zaWduZWQgZmlyc3QgPSBtYXgoKGludCltX2N1cnJl
bnQgLSBsaW1pdCwgMCk7CisgICAgICAgIHVuc2lnbmVkIGZpcnN0ID0gc3RkOjptYXgoKGludClt
X2N1cnJlbnQgLSBsaW1pdCwgMCk7CiAgICAgICAgIGZvciAoOyBmaXJzdCA8IG1fY3VycmVudDsg
KytmaXJzdCkKICAgICAgICAgICAgIGxpc3QuYXBwZW5kKG1fZW50cmllc1tmaXJzdF0pOwogICAg
IH0KQEAgLTE1OSw3ICsxNTcsNyBAQCB2b2lkIEJhY2tGb3J3YXJkTGlzdDo6Zm9yd2FyZExpc3RX
aXRoTGltaXQoaW50IGxpbWl0LCBIaXN0b3J5SXRlbVZlY3RvciYgbGlzdCkKICAgICAgICAgCiAg
ICAgdW5zaWduZWQgbGFzdEVudHJ5ID0gbV9lbnRyaWVzLnNpemUoKSAtIDE7CiAgICAgaWYgKG1f
Y3VycmVudCA8IGxhc3RFbnRyeSkgewotICAgICAgICBpbnQgbGFzdCA9IG1pbihtX2N1cnJlbnQg
KyBsaW1pdCwgbGFzdEVudHJ5KTsKKyAgICAgICAgaW50IGxhc3QgPSBzdGQ6Om1pbihtX2N1cnJl
bnQgKyBsaW1pdCwgbGFzdEVudHJ5KTsKICAgICAgICAgbGltaXQgPSBtX2N1cnJlbnQgKyAxOwog
ICAgICAgICBmb3IgKDsgbGltaXQgPD0gbGFzdDsgKytsaW1pdCkKICAgICAgICAgICAgIGxpc3Qu
YXBwZW5kKG1fZW50cmllc1tsaW1pdF0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaGlz
dG9yeS9QYWdlQ2FjaGUuY3BwIGIvU291cmNlL1dlYkNvcmUvaGlzdG9yeS9QYWdlQ2FjaGUuY3Bw
CmluZGV4IDMyOTQyMDY4MDY1ZGFlNTc2YTU3YzJjZDczNzU2ZGYxOGUwNGZhOTIuLjA5Y2YzODdj
MDQ0NTI5MWZkNWNhZjVkMDU5YTQ5YjM3YmQzMWI5ZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2hpc3RvcnkvUGFnZUNhY2hlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9oaXN0b3J5L1Bh
Z2VDYWNoZS5jcHAKQEAgLTU3LDggKzU3LDYgQEAKICNpbmNsdWRlICJEZXZpY2VQcm94aW1pdHlD
b250cm9sbGVyLmgiCiAjZW5kaWYKIAotdXNpbmcgbmFtZXNwYWNlIHN0ZDsKLQogbmFtZXNwYWNl
IFdlYkNvcmUgewogCiAjaWYgIWRlZmluZWQoTkRFQlVHKQpAQCAtMzczLDcgKzM3MSw3IEBAIGJv
b2wgUGFnZUNhY2hlOjpjYW5DYWNoZShQYWdlKiBwYWdlKSBjb25zdAogdm9pZCBQYWdlQ2FjaGU6
OnNldENhcGFjaXR5KGludCBjYXBhY2l0eSkKIHsKICAgICBBU1NFUlQoY2FwYWNpdHkgPj0gMCk7
Ci0gICAgbV9jYXBhY2l0eSA9IG1heChjYXBhY2l0eSwgMCk7CisgICAgbV9jYXBhY2l0eSA9IHN0
ZDo6bWF4KGNhcGFjaXR5LCAwKTsKIAogICAgIHBydW5lKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0Jhc2VEYXRlQW5kVGltZUlucHV0VHlwZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0Jhc2VEYXRlQW5kVGltZUlucHV0VHlwZS5jcHAKaW5kZXggMGNhZDY4NWQzMGMw
ZDU4MWQ5NzMyMDA0NThiZmZjMWYwY2EyNjZkZS4uODQzZjlmNzFmYzQ0MThlZDMzNzlkNTM3Mjcy
ZjRjOTFhNGNlYzNjNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9CYXNlRGF0ZUFu
ZFRpbWVJbnB1dFR5cGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvQmFzZURhdGVBbmRU
aW1lSW5wdXRUeXBlLmNwcApAQCAtNDUsNyArNDUsNiBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewog
CiB1c2luZyBuYW1lc3BhY2UgSFRNTE5hbWVzOwotdXNpbmcgbmFtZXNwYWNlIHN0ZDsKIAogc3Rh
dGljIGNvbnN0IGludCBtc2VjUGVyTWludXRlID0gNjAgKiAxMDAwOwogc3RhdGljIGNvbnN0IGlu
dCBtc2VjUGVyU2Vjb25kID0gMTAwMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
RlRQRGlyZWN0b3J5RG9jdW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9GVFBEaXJlY3Rv
cnlEb2N1bWVudC5jcHAKaW5kZXggOGY5MmYzZjM1ZDRlMTgwZGUxMWM0NjBmNjBlNmZhNzMzNDkx
OGViNS4uMjNkNzViNDFhN2UwOWE0N2UxYTYzMzZlNjViMDI4NThmM2I3YmU3ZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9GVFBEaXJlY3RvcnlEb2N1bWVudC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9GVFBEaXJlY3RvcnlEb2N1bWVudC5jcHAKQEAgLTQ0LDggKzQ0LDYg
QEAKICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KICNpbmNsdWRlIDx3dGYvdW5pY29k
ZS9DaGFyYWN0ZXJOYW1lcy5oPgogCi11c2luZyBuYW1lc3BhY2Ugc3RkOwotCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKIHVzaW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7CkBAIC02Niw3ICs2NCw3IEBA
IHB1YmxpYzoKICAgICB7CiAgICAgICAgIGlmICgobV9kZXN0IC0gbV9idWZmZXIpID4gbV9zaXpl
IC0gbGVuKSB7CiAgICAgICAgICAgICAvLyBFbmxhcmdlIGJ1ZmZlcgotICAgICAgICAgICAgaW50
IG5ld1NpemUgPSBtYXgobV9zaXplICogMiwgbV9zaXplICsgbGVuKTsKKyAgICAgICAgICAgIGlu
dCBuZXdTaXplID0gc3RkOjptYXgobV9zaXplICogMiwgbV9zaXplICsgbGVuKTsKICAgICAgICAg
ICAgIGludCBvbGRPZmZzZXQgPSBtX2Rlc3QgLSBtX2J1ZmZlcjsKICAgICAgICAgICAgIG1fYnVm
ZmVyID0gc3RhdGljX2Nhc3Q8VUNoYXIqPihmYXN0UmVhbGxvYyhtX2J1ZmZlciwgbmV3U2l6ZSAq
IHNpemVvZihVQ2hhcikpKTsKICAgICAgICAgICAgIG1fZGVzdCA9IG1fYnVmZmVyICsgb2xkT2Zm
c2V0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQXJlYUVsZW1lbnQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQXJlYUVsZW1lbnQuY3BwCmluZGV4IGRiNDFjNWIz
OThkZjhiOTg4NDViY2NhNTk3NzhjZGUwOGZkNDJhMTMuLmVmMDlkZmQyYmQwMzhlOGFmMjQwZDUx
M2YzNjlmZDA1MTc2NDZkY2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEFy
ZWFFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBcmVhRWxlbWVudC5j
cHAKQEAgLTMzLDggKzMzLDYgQEAKICNpbmNsdWRlICJSZW5kZXJJbWFnZS5oIgogI2luY2x1ZGUg
IlJlbmRlclZpZXcuaCIKIAotdXNpbmcgbmFtZXNwYWNlIHN0ZDsKLQogbmFtZXNwYWNlIFdlYkNv
cmUgewogCiB1c2luZyBuYW1lc3BhY2UgSFRNTE5hbWVzOwpAQCAtMTU4LDcgKzE1Niw3IEBAIFBh
dGggSFRNTEFyZWFFbGVtZW50OjpnZXRSZWdpb24oY29uc3QgTGF5b3V0U2l6ZSYgc2l6ZSkgY29u
c3QKICAgICAgICAgY2FzZSBDaXJjbGU6CiAgICAgICAgICAgICBpZiAobV9jb29yZHNMZW4gPj0g
MykgewogICAgICAgICAgICAgICAgIExlbmd0aCByYWRpdXMgPSBtX2Nvb3Jkc1syXTsKLSAgICAg
ICAgICAgICAgICBpbnQgciA9IG1pbihtaW5pbXVtVmFsdWVGb3JMZW5ndGgocmFkaXVzLCB3aWR0
aCwgcmVuZGVyVmlldyksIG1pbmltdW1WYWx1ZUZvckxlbmd0aChyYWRpdXMsIGhlaWdodCwgcmVu
ZGVyVmlldykpOworICAgICAgICAgICAgICAgIGludCByID0gc3RkOjptaW4obWluaW11bVZhbHVl
Rm9yTGVuZ3RoKHJhZGl1cywgd2lkdGgsIHJlbmRlclZpZXcpLCBtaW5pbXVtVmFsdWVGb3JMZW5n
dGgocmFkaXVzLCBoZWlnaHQsIHJlbmRlclZpZXcpKTsKICAgICAgICAgICAgICAgICBwYXRoLmFk
ZEVsbGlwc2UoRmxvYXRSZWN0KG1pbmltdW1WYWx1ZUZvckxlbmd0aChtX2Nvb3Jkc1swXSwgd2lk
dGgsIHJlbmRlclZpZXcpIC0gciwgbWluaW11bVZhbHVlRm9yTGVuZ3RoKG1fY29vcmRzWzFdLCBo
ZWlnaHQsIHJlbmRlclZpZXcpIC0gciwgMiAqIHIsIDIgKiByKSk7CiAgICAgICAgICAgICB9CiAg
ICAgICAgICAgICBicmVhazsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEVs
ZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRWxlbWVudC5jcHAKaW5kZXggNjk3
MDVkZTMxNjhlZTM1MjJhMWZlYmY3MWI5ZjMyNmNhYzBmMDZlZC4uZjczOTU4MmYzODlhODhkOWU4
NmI4NTZiM2RhMGFmNDEwYTQyMDE3ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRWxlbWVudC5jcHAK
QEAgLTY3LDkgKzY3LDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogdXNpbmcgbmFtZXNwYWNlIEhU
TUxOYW1lczsKIHVzaW5nIG5hbWVzcGFjZSBXVEY7CiAKLXVzaW5nIHN0ZDo6bWluOwotdXNpbmcg
c3RkOjptYXg7Ci0KIFBhc3NSZWZQdHI8SFRNTEVsZW1lbnQ+IEhUTUxFbGVtZW50OjpjcmVhdGUo
Y29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQmIGRvY3VtZW50KQogewogICAg
IHJldHVybiBhZG9wdFJlZihuZXcgSFRNTEVsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQpKTsKQEAg
LTMyOSw3ICszMjYsNyBAQCB2b2lkIEhUTUxFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZShjb25zdCBR
dWFsaWZpZWROYW1lJiBuYW1lLCBjb25zdCBBdG9taWNTdHJpbmcmCiAgICAgICAgICAgICBjbGVh
clRhYkluZGV4RXhwbGljaXRseUlmTmVlZGVkKCk7CiAgICAgICAgIGVsc2UgaWYgKHBhcnNlSFRN
TEludGVnZXIodmFsdWUsIHRhYmluZGV4KSkgewogICAgICAgICAgICAgLy8gQ2xhbXAgdGFiaW5k
ZXggdG8gdGhlIHJhbmdlIG9mICdzaG9ydCcgdG8gbWF0Y2ggRmlyZWZveCdzIGJlaGF2aW9yLgot
ICAgICAgICAgICAgc2V0VGFiSW5kZXhFeHBsaWNpdGx5KG1heChzdGF0aWNfY2FzdDxpbnQ+KHN0
ZDo6bnVtZXJpY19saW1pdHM8c2hvcnQ+OjptaW4oKSksIG1pbih0YWJpbmRleCwgc3RhdGljX2Nh
c3Q8aW50PihzdGQ6Om51bWVyaWNfbGltaXRzPHNob3J0Pjo6bWF4KCkpKSkpOworICAgICAgICAg
ICAgc2V0VGFiSW5kZXhFeHBsaWNpdGx5KHN0ZDo6bWF4KHN0YXRpY19jYXN0PGludD4oc3RkOjpu
dW1lcmljX2xpbWl0czxzaG9ydD46Om1pbigpKSwgc3RkOjptaW4odGFiaW5kZXgsIHN0YXRpY19j
YXN0PGludD4oc3RkOjpudW1lcmljX2xpbWl0czxzaG9ydD46Om1heCgpKSkpKTsKICAgICAgICAg
fQogICAgIH0gZWxzZSBpZiAobmFtZS5uYW1lc3BhY2VVUkkoKS5pc051bGwoKSkgewogICAgICAg
ICAvLyBGSVhNRTogQ2FuIHdlIGRvIHRoaXMgZXZlbiBmYXN0ZXIgYnkgY2hlY2tpbmcgdGhlIGxv
Y2FsIG5hbWUgIm9uIiBwcmVmaXggYmVmb3JlIHdlIGRvIGFueXRoaW5nIHdpdGggdGhlIG1hcD8K
QEAgLTEwMzQsNyArMTAzMSw3IEBAIHN0YXRpYyBSR0JBMzIgcGFyc2VDb2xvclN0cmluZ1dpdGhD
cmF6eUxlZ2FjeVJ1bGVzKGNvbnN0IFN0cmluZyYgY29sb3JTdHJpbmcpCiAgICAgLy8gU3BsaXQg
dGhlIGRpZ2l0cyBpbnRvIHRocmVlIGNvbXBvbmVudHMsIHRoZW4gc2VhcmNoIHRoZSBsYXN0IDgg
ZGlnaXRzIG9mIGVhY2ggY29tcG9uZW50LgogICAgIEFTU0VSVChkaWdpdEJ1ZmZlci5zaXplKCkg
Pj0gNik7CiAgICAgc2l6ZV90IGNvbXBvbmVudExlbmd0aCA9IGRpZ2l0QnVmZmVyLnNpemUoKSAv
IDM7Ci0gICAgc2l6ZV90IGNvbXBvbmVudFNlYXJjaFdpbmRvd0xlbmd0aCA9IG1pbjxzaXplX3Q+
KGNvbXBvbmVudExlbmd0aCwgOCk7CisgICAgc2l6ZV90IGNvbXBvbmVudFNlYXJjaFdpbmRvd0xl
bmd0aCA9IHN0ZDo6bWluPHNpemVfdD4oY29tcG9uZW50TGVuZ3RoLCA4KTsKICAgICBzaXplX3Qg
cmVkSW5kZXggPSBjb21wb25lbnRMZW5ndGggLSBjb21wb25lbnRTZWFyY2hXaW5kb3dMZW5ndGg7
CiAgICAgc2l6ZV90IGdyZWVuSW5kZXggPSBjb21wb25lbnRMZW5ndGggKiAyIC0gY29tcG9uZW50
U2VhcmNoV2luZG93TGVuZ3RoOwogICAgIHNpemVfdCBibHVlSW5kZXggPSBjb21wb25lbnRMZW5n
dGggKiAzIC0gY29tcG9uZW50U2VhcmNoV2luZG93TGVuZ3RoOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MRm9ybUNvbnRyb2xFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTEZvcm1Db250cm9sRWxlbWVudC5jcHAKaW5kZXggMDQzOWFlOWI2ODA3MzI2YTYx
OTNmYWFjOGEzMmQ0MWU0YWQyYWI2MC4uMGY1NzZjMjk1M2JkYjM3MDI3NTA2NzJmNjE3ZjZkNjU0
YTVjMTMyZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUNvbnRyb2xF
bGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtQ29udHJvbEVsZW1l
bnQuY3BwCkBAIC00NSw3ICs0NSw2IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHVzaW5nIG5h
bWVzcGFjZSBIVE1MTmFtZXM7Ci11c2luZyBuYW1lc3BhY2Ugc3RkOwogCiBIVE1MRm9ybUNvbnRy
b2xFbGVtZW50OjpIVE1MRm9ybUNvbnRyb2xFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmIHRh
Z05hbWUsIERvY3VtZW50JiBkb2N1bWVudCwgSFRNTEZvcm1FbGVtZW50KiBmb3JtKQogICAgIDog
TGFiZWxhYmxlRWxlbWVudCh0YWdOYW1lLCBkb2N1bWVudCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTEZvcm1FbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TEZvcm1FbGVtZW50LmNwcAppbmRleCBiMTdiODdlOWM5YjE4NjhlNjEzM2VmODVjY2FkZTAyYzgz
NTM0ZWJmLi45NTg5MDNlMzYzNTk3NDA4MTUyOGY4YmVmNWY5ZmNmZDZlYzRlMzMzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtRWxlbWVudC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MRm9ybUVsZW1lbnQuY3BwCkBAIC00OCw4ICs0OCw2IEBACiAjaW5j
bHVkZSA8bGltaXRzPgogI2luY2x1ZGUgPHd0Zi9SZWYuaD4KIAotdXNpbmcgbmFtZXNwYWNlIHN0
ZDsKLQogbmFtZXNwYWNlIFdlYkNvcmUgewogCiB1c2luZyBuYW1lc3BhY2UgSFRNTE5hbWVzOwpA
QCAtMzExLDcgKzMwOSw3IEBAIHZvaWQgSFRNTEZvcm1FbGVtZW50OjpnZXRUZXh0RmllbGRWYWx1
ZXMoU3RyaW5nUGFpclZlY3RvciYgZmllbGROYW1lc0FuZFZhbHVlcykKICAgICAgICAgSFRNTElu
cHV0RWxlbWVudCYgaW5wdXQgPSB0b0hUTUxJbnB1dEVsZW1lbnQoZWxlbWVudCk7CiAgICAgICAg
IGlmICghaW5wdXQuaXNUZXh0RmllbGQoKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAg
ICBmaWVsZE5hbWVzQW5kVmFsdWVzLmFwcGVuZChtYWtlX3BhaXIoaW5wdXQubmFtZSgpLnN0cmlu
ZygpLCBpbnB1dC52YWx1ZSgpKSk7CisgICAgICAgIGZpZWxkTmFtZXNBbmRWYWx1ZXMuYXBwZW5k
KHN0ZDo6bWFrZV9wYWlyKGlucHV0Lm5hbWUoKS5zdHJpbmcoKSwgaW5wdXQudmFsdWUoKSkpOwog
ICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW1hZ2VFbGVt
ZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEltYWdlRWxlbWVudC5jcHAKaW5kZXgg
ZTQ0NzgwYjQ1NWFhOWNjMGJjM2Q5NGJmMjE2ZTE0ZWY1MWU0M2E2My4uNzk2NjYxNDFkMTdkZDZi
ZjQyZDA3YTdkMjk2NDE1ZWRlNDk1MWJlMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MSW1hZ2VFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbWFn
ZUVsZW1lbnQuY3BwCkBAIC0zNyw4ICszNyw2IEBACiAjaW5jbHVkZSAiUGFnZS5oIgogI2luY2x1
ZGUgIlJlbmRlckltYWdlLmgiCiAKLXVzaW5nIG5hbWVzcGFjZSBzdGQ7Ci0KIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAogdXNpbmcgbmFtZXNwYWNlIEhUTUxOYW1lczsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxJbnB1dEVsZW1lbnQuY3BwCmluZGV4IDcyNTZmMmU1M2MwZWY5NDM4ODA4ZTUwZmIzY2I3
YWEyZmUwMTdmZDUuLmJjMDQwNTcxNDhjYjc1ZjhmMDdkZjRkMzQzODRiMjg3YWM5ZmU5ZDQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcApAQCAtODEsOCArODEsNiBA
QAogI2luY2x1ZGUgIlRvdWNoRXZlbnQuaCIKICNlbmRpZgogCi11c2luZyBuYW1lc3BhY2Ugc3Rk
OwotCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHVzaW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNYXBFbGVtZW50LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTE1hcEVsZW1lbnQuY3BwCmluZGV4IDAwYWRjMzBkN2YwMDdkMDI5
M2NmY2IxZGRhYjEwOGNmZjg2ZjczNGUuLjRlMzliMWUxOTQ5ODRjZTFlMzliMDkyYTcyOGMzNzdi
NmVjOTQzZmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1hcEVsZW1lbnQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1hcEVsZW1lbnQuY3BwCkBAIC0zMiw4
ICszMiw2IEBACiAjaW5jbHVkZSAiSGl0VGVzdFJlc3VsdC5oIgogI2luY2x1ZGUgIkludFNpemUu
aCIKIAotdXNpbmcgbmFtZXNwYWNlIHN0ZDsKLQogbmFtZXNwYWNlIFdlYkNvcmUgewogCiB1c2lu
ZyBuYW1lc3BhY2UgSFRNTE5hbWVzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MTWVkaWFFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVu
dC5jcHAKaW5kZXggNTYzZWQ0OGVhMjRmNzhmN2NjYTI3NzU2ZjZlZmQwZmQ0Mjc3NjAwZS4uMjk1
YmQ1NmNjN2RkZDE0MzU0ZGJlNDlkZmEwZDhjOGMxNjQxMzZlZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCkBAIC0xNDksOCArMTQ5LDYgQEAKICNpbmNsdWRlICJV
c2VyQWdlbnRTY3JpcHRzLmgiCiAjZW5kaWYKIAotdXNpbmcgbmFtZXNwYWNlIHN0ZDsKLQogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCiBzdGF0aWMgdm9pZCBzZXRGbGFncyh1bnNpZ25lZCYgdmFsdWUs
IHVuc2lnbmVkIGZsYWdzKQpAQCAtMTk3LDcgKzE5NSw2IEBAIHN0YXRpYyBjb25zdCBjaGFyKiBt
ZWRpYVNvdXJjZUJsb2JQcm90b2NvbCA9ICJibG9iIjsKICNlbmRpZgogCiB1c2luZyBuYW1lc3Bh
Y2UgSFRNTE5hbWVzOwotdXNpbmcgbmFtZXNwYWNlIHN0ZDsKIAogdHlwZWRlZiBIYXNoTWFwPERv
Y3VtZW50KiwgSGFzaFNldDxIVE1MTWVkaWFFbGVtZW50Kj4+IERvY3VtZW50RWxlbWVudFNldE1h
cDsKIHN0YXRpYyBEb2N1bWVudEVsZW1lbnRTZXRNYXAmIGRvY3VtZW50VG9FbGVtZW50U2V0TWFw
KCkKQEAgLTI3Niw5ICsyNzMsOSBAQCBIVE1MTWVkaWFFbGVtZW50OjpIVE1MTWVkaWFFbGVtZW50
KGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50JiBkb2N1bQogICAgICwgbV92
b2x1bWUoMS4wZikKICAgICAsIG1fdm9sdW1lSW5pdGlhbGl6ZWQoZmFsc2UpCiAgICAgLCBtX2xh
c3RTZWVrVGltZSgwKQotICAgICwgbV9wcmV2aW91c1Byb2dyZXNzVGltZShudW1lcmljX2xpbWl0
czxkb3VibGU+OjptYXgoKSkKKyAgICAsIG1fcHJldmlvdXNQcm9ncmVzc1RpbWUoc3RkOjpudW1l
cmljX2xpbWl0czxkb3VibGU+OjptYXgoKSkKICAgICAsIG1fY2xvY2tUaW1lQXRMYXN0VXBkYXRl
RXZlbnQoMCkKLSAgICAsIG1fbGFzdFRpbWVVcGRhdGVFdmVudE1vdmllVGltZShudW1lcmljX2xp
bWl0czxkb3VibGU+OjptYXgoKSkKKyAgICAsIG1fbGFzdFRpbWVVcGRhdGVFdmVudE1vdmllVGlt
ZShzdGQ6Om51bWVyaWNfbGltaXRzPGRvdWJsZT46Om1heCgpKQogICAgICwgbV9sb2FkU3RhdGUo
V2FpdGluZ0ZvclNvdXJjZSkKICNpZiBFTkFCTEUoUExVR0lOX1BST1hZX0ZPUl9WSURFTykKICAg
ICAsIG1fcHJveHlXaWRnZXQoMCkKQEAgLTEyMjQsNyArMTIyMSw3IEBAIHZvaWQgSFRNTE1lZGlh
RWxlbWVudDo6dXBkYXRlQWN0aXZlVGV4dFRyYWNrQ3Vlcyhkb3VibGUgbW92aWVUaW1lKQogICAg
ICAgICAgICAgZG91YmxlIGN1ZUVuZFRpbWUgPSBwb3RlbnRpYWxseVNraXBwZWRDdWVzW2ldLmhp
Z2goKTsKIAogICAgICAgICAgICAgLy8gQ29uc2lkZXIgY3VlcyB0aGF0IG1heSBoYXZlIGJlZW4g
bWlzc2VkIHNpbmNlIHRoZSBsYXN0IHNlZWsgdGltZS4KLSAgICAgICAgICAgIGlmIChjdWVTdGFy
dFRpbWUgPiBtYXgobV9sYXN0U2Vla1RpbWUsIGxhc3RUaW1lKSAmJiBjdWVFbmRUaW1lIDwgbW92
aWVUaW1lKQorICAgICAgICAgICAgaWYgKGN1ZVN0YXJ0VGltZSA+IHN0ZDo6bWF4KG1fbGFzdFNl
ZWtUaW1lLCBsYXN0VGltZSkgJiYgY3VlRW5kVGltZSA8IG1vdmllVGltZSkKICAgICAgICAgICAg
ICAgICBtaXNzZWRDdWVzLmFwcGVuZChwb3RlbnRpYWxseVNraXBwZWRDdWVzW2ldKTsKICAgICAg
ICAgfQogICAgIH0KQEAgLTE1MjAsNyArMTUxNyw3IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6
dGV4dFRyYWNrQWRkQ3VlKFRleHRUcmFjayogdHJhY2ssIFBhc3NSZWZQdHI8VGV4dFRyYWNrQ3Vl
CiAKICAgICAvLyBOZWdhdGl2ZSBkdXJhdGlvbiBjdWVzIG5lZWQgYmUgdHJlYXRlZCBpbiB0aGUg
aW50ZXJ2YWwgdHJlZSBhcwogICAgIC8vIHplcm8tbGVuZ3RoIGN1ZXMuCi0gICAgZG91YmxlIGVu
ZFRpbWUgPSBtYXgoY3VlLT5zdGFydFRpbWUoKSwgY3VlLT5lbmRUaW1lKCkpOworICAgIGRvdWJs
ZSBlbmRUaW1lID0gc3RkOjptYXgoY3VlLT5zdGFydFRpbWUoKSwgY3VlLT5lbmRUaW1lKCkpOwog
CiAgICAgQ3VlSW50ZXJ2YWwgaW50ZXJ2YWwgPSBtX2N1ZVRyZWUuY3JlYXRlSW50ZXJ2YWwoY3Vl
LT5zdGFydFRpbWUoKSwgZW5kVGltZSwgY3VlLmdldCgpKTsKICAgICBpZiAoIW1fY3VlVHJlZS5j
b250YWlucyhpbnRlcnZhbCkpCkBAIC0xNTMyLDcgKzE1MjksNyBAQCB2b2lkIEhUTUxNZWRpYUVs
ZW1lbnQ6OnRleHRUcmFja1JlbW92ZUN1ZShUZXh0VHJhY2sqLCBQYXNzUmVmUHRyPFRleHRUcmFj
a0N1ZT4gYwogewogICAgIC8vIE5lZ2F0aXZlIGR1cmF0aW9uIGN1ZXMgbmVlZCB0byBiZSB0cmVh
dGVkIGluIHRoZSBpbnRlcnZhbCB0cmVlIGFzCiAgICAgLy8gemVyby1sZW5ndGggY3Vlcy4KLSAg
ICBkb3VibGUgZW5kVGltZSA9IG1heChjdWUtPnN0YXJ0VGltZSgpLCBjdWUtPmVuZFRpbWUoKSk7
CisgICAgZG91YmxlIGVuZFRpbWUgPSBzdGQ6Om1heChjdWUtPnN0YXJ0VGltZSgpLCBjdWUtPmVu
ZFRpbWUoKSk7CiAKICAgICBDdWVJbnRlcnZhbCBpbnRlcnZhbCA9IG1fY3VlVHJlZS5jcmVhdGVJ
bnRlcnZhbChjdWUtPnN0YXJ0VGltZSgpLCBlbmRUaW1lLCBjdWUuZ2V0KCkpOwogICAgIG1fY3Vl
VHJlZS5yZW1vdmUoaW50ZXJ2YWwpOwpAQCAtMjEwMyw3ICsyMTAwLDcgQEAgdm9pZCBIVE1MTWVk
aWFFbGVtZW50Ojpwcm9ncmVzc0V2ZW50VGltZXJGaXJlZChUaW1lcjxIVE1MTWVkaWFFbGVtZW50
PiopCiB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnJld2luZChkb3VibGUgdGltZURlbHRhKQogewog
ICAgIExPRyhNZWRpYSwgIkhUTUxNZWRpYUVsZW1lbnQ6OnJld2luZCglZikiLCB0aW1lRGVsdGEp
OwotICAgIHNldEN1cnJlbnRUaW1lKG1heChjdXJyZW50VGltZSgpIC0gdGltZURlbHRhLCBtaW5U
aW1lU2Vla2FibGUoKSksIElHTk9SRV9FWENFUFRJT04pOworICAgIHNldEN1cnJlbnRUaW1lKHN0
ZDo6bWF4KGN1cnJlbnRUaW1lKCkgLSB0aW1lRGVsdGEsIG1pblRpbWVTZWVrYWJsZSgpKSwgSUdO
T1JFX0VYQ0VQVElPTik7CiB9CiAKIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6cmV0dXJuVG9SZWFs
dGltZSgpCkBAIC0yMTcwLDExICsyMTY3LDExIEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6c2Vl
ayhkb3VibGUgdGltZSwgRXhjZXB0aW9uQ29kZSYgZWMpCiAKICAgICAvLyA1IC0gSWYgdGhlIG5l
dyBwbGF5YmFjayBwb3NpdGlvbiBpcyBsYXRlciB0aGFuIHRoZSBlbmQgb2YgdGhlIG1lZGlhIHJl
c291cmNlLCB0aGVuIGxldCBpdCBiZSB0aGUgZW5kIAogICAgIC8vIG9mIHRoZSBtZWRpYSByZXNv
dXJjZSBpbnN0ZWFkLgotICAgIHRpbWUgPSBtaW4odGltZSwgZHVyYXRpb24oKSk7CisgICAgdGlt
ZSA9IHN0ZDo6bWluKHRpbWUsIGR1cmF0aW9uKCkpOwogCiAgICAgLy8gNiAtIElmIHRoZSBuZXcg
cGxheWJhY2sgcG9zaXRpb24gaXMgbGVzcyB0aGFuIHRoZSBlYXJsaWVzdCBwb3NzaWJsZSBwb3Np
dGlvbiwgbGV0IGl0IGJlIHRoYXQgcG9zaXRpb24gaW5zdGVhZC4KICAgICBkb3VibGUgZWFybGll
c3RUaW1lID0gbV9wbGF5ZXItPnN0YXJ0VGltZSgpOwotICAgIHRpbWUgPSBtYXgodGltZSwgZWFy
bGllc3RUaW1lKTsKKyAgICB0aW1lID0gc3RkOjptYXgodGltZSwgZWFybGllc3RUaW1lKTsKIAog
ICAgIC8vIEFzayB0aGUgbWVkaWEgZW5naW5lIGZvciB0aGUgdGltZSB2YWx1ZSBpbiB0aGUgbW92
aWUncyB0aW1lIHNjYWxlIGJlZm9yZSBjb21wYXJpbmcgd2l0aCBjdXJyZW50IHRpbWUuIFRoaXMK
ICAgICAvLyBpcyBuZWNlc3NhcnkgYmVjYXVzZSBpZiB0aGUgc2VlayB0aW1lIGlzIG5vdCBlcXVh
bCB0byBjdXJyZW50VGltZSBidXQgdGhlIGRlbHRhIGlzIGxlc3MgdGhhbiB0aGUgbW92aWUncwpA
QCAtMjM3Nyw3ICsyMzc0LDcgQEAgZG91YmxlIEhUTUxNZWRpYUVsZW1lbnQ6OmR1cmF0aW9uKCkg
Y29uc3QKICAgICBpZiAobV9wbGF5ZXIgJiYgbV9yZWFkeVN0YXRlID49IEhBVkVfTUVUQURBVEEp
CiAgICAgICAgIHJldHVybiBtX3BsYXllci0+ZHVyYXRpb24oKTsKIAotICAgIHJldHVybiBudW1l
cmljX2xpbWl0czxkb3VibGU+OjpxdWlldF9OYU4oKTsKKyAgICByZXR1cm4gc3RkOjpudW1lcmlj
X2xpbWl0czxkb3VibGU+OjpxdWlldF9OYU4oKTsKIH0KIAogYm9vbCBIVE1MTWVkaWFFbGVtZW50
OjpwYXVzZWQoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MU2Vs
ZWN0RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxTZWxlY3RFbGVtZW50LmNw
cAppbmRleCBlYWE3NmM3YTNkOTk5MGNlMzY4ZmI5ZjZmMzZhZTUxNTI3NjBjN2M4Li4zM2NjMTYy
NTQ2MzBhNWY3ZjFjZmYxMjgzNzBiMzhlMzFhMTRkYTQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxTZWxlY3RFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxTZWxlY3RFbGVtZW50LmNwcApAQCAtNTUsNyArNTUsNiBAQAogI2luY2x1ZGUgIlNldHRp
bmdzLmgiCiAjaW5jbHVkZSAiU3BhdGlhbE5hdmlnYXRpb24uaCIKIAotdXNpbmcgbmFtZXNwYWNl
IHN0ZDsKIHVzaW5nIG5hbWVzcGFjZSBXVEY6OlVuaWNvZGU7CiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKQEAgLTMwNCw3ICszMDMsNyBAQCB2b2lkIEhUTUxTZWxlY3RFbGVtZW50OjpwYXJzZUF0dHJp
YnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lLCBjb25zdCBBdG9taWNTdAogICAgICAgICAg
ICAgaWYgKEF0dHJpYnV0ZSogc2l6ZUF0dHJpYnV0ZSA9IGVuc3VyZVVuaXF1ZUVsZW1lbnREYXRh
KCkuZmluZEF0dHJpYnV0ZUJ5TmFtZShzaXplQXR0cikpCiAgICAgICAgICAgICAgICAgc2l6ZUF0
dHJpYnV0ZS0+c2V0VmFsdWUoYXR0clNpemUpOwogICAgICAgICB9Ci0gICAgICAgIHNpemUgPSBt
YXgoc2l6ZSwgMSk7CisgICAgICAgIHNpemUgPSBzdGQ6Om1heChzaXplLCAxKTsKIAogICAgICAg
ICAvLyBFbnN1cmUgdGhhdCB3ZSd2ZSBkZXRlcm1pbmVkIHNlbGVjdGVkbmVzcyBvZiB0aGUgaXRl
bXMgYXQgbGVhc3Qgb25jZSBwcmlvciB0byBjaGFuZ2luZyB0aGUgc2l6ZS4KICAgICAgICAgaWYg
KG9sZFNpemUgIT0gc2l6ZSkKQEAgLTYyMSw4ICs2MjAsOCBAQCB2b2lkIEhUTUxTZWxlY3RFbGVt
ZW50Ojp1cGRhdGVMaXN0Qm94U2VsZWN0aW9uKGJvb2wgZGVzZWxlY3RPdGhlck9wdGlvbnMpCiAg
ICAgQVNTRVJUKHJlbmRlcmVyKCkgJiYgKHJlbmRlcmVyKCktPmlzTGlzdEJveCgpIHx8IG1fbXVs
dGlwbGUpKTsKICAgICBBU1NFUlQoIWxpc3RJdGVtcygpLnNpemUoKSB8fCBtX2FjdGl2ZVNlbGVj
dGlvbkFuY2hvckluZGV4ID49IDApOwogCi0gICAgdW5zaWduZWQgc3RhcnQgPSBtaW4obV9hY3Rp
dmVTZWxlY3Rpb25BbmNob3JJbmRleCwgbV9hY3RpdmVTZWxlY3Rpb25FbmRJbmRleCk7Ci0gICAg
dW5zaWduZWQgZW5kID0gbWF4KG1fYWN0aXZlU2VsZWN0aW9uQW5jaG9ySW5kZXgsIG1fYWN0aXZl
U2VsZWN0aW9uRW5kSW5kZXgpOworICAgIHVuc2lnbmVkIHN0YXJ0ID0gc3RkOjptaW4obV9hY3Rp
dmVTZWxlY3Rpb25BbmNob3JJbmRleCwgbV9hY3RpdmVTZWxlY3Rpb25FbmRJbmRleCk7CisgICAg
dW5zaWduZWQgZW5kID0gc3RkOjptYXgobV9hY3RpdmVTZWxlY3Rpb25BbmNob3JJbmRleCwgbV9h
Y3RpdmVTZWxlY3Rpb25FbmRJbmRleCk7CiAKICAgICBjb25zdCBWZWN0b3I8SFRNTEVsZW1lbnQq
PiYgaXRlbXMgPSBsaXN0SXRlbXMoKTsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgaXRl
bXMuc2l6ZSgpOyArK2kpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFNv
dXJjZUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MU291cmNlRWxlbWVudC5j
cHAKaW5kZXggOTJkNjk1NjNlODM4NGFiNWJjNTFkNzQyMDBjZGUyMWVjODFmNmE4My4uZmEwZDI0
ZDYwMjJhOGRjMjI4YzA3ZGFjYTg4NzM2M2NlM2QzYmNmZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MU291cmNlRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MU291cmNlRWxlbWVudC5jcHAKQEAgLTM0LDggKzM0LDYgQEAKICNpbmNsdWRlICJIVE1M
TmFtZXMuaCIKICNpbmNsdWRlICJMb2dnaW5nLmgiCiAKLXVzaW5nIG5hbWVzcGFjZSBzdGQ7Ci0K
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogdXNpbmcgbmFtZXNwYWNlIEhUTUxOYW1lczsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRhYmxlQ2VsbEVsZW1lbnQuY3BwIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGFibGVDZWxsRWxlbWVudC5jcHAKaW5kZXggMDM0NTFlODQ5
ZjNkZTRiM2NjYzc0ZjY3YjExODhlMTU4NjJlNDZlNy4uOTFmZDExNTZhYTNkNjRlNTcwYjI1YWRh
ZjA0NDk4ZmJhM2JhYzdlYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGFi
bGVDZWxsRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGFibGVDZWxs
RWxlbWVudC5jcHAKQEAgLTMyLDkgKzMyLDYgQEAKICNpbmNsdWRlICJIVE1MVGFibGVFbGVtZW50
LmgiCiAjaW5jbHVkZSAiUmVuZGVyVGFibGVDZWxsLmgiCiAKLXVzaW5nIHN0ZDo6bWF4OwotdXNp
bmcgc3RkOjptaW47Ci0KIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogLy8gQ2xhbXAgcm93c3BhbiBh
dCA4ayB0byBtYXRjaCBGaXJlZm94LgpAQCAtNTUsMTMgKzUyLDEzIEBAIFBhc3NSZWZQdHI8SFRN
TFRhYmxlQ2VsbEVsZW1lbnQ+IEhUTUxUYWJsZUNlbGxFbGVtZW50OjpjcmVhdGUoY29uc3QgUXVh
bGlmaWVkTmFtCiBpbnQgSFRNTFRhYmxlQ2VsbEVsZW1lbnQ6OmNvbFNwYW4oKSBjb25zdAogewog
ICAgIGNvbnN0IEF0b21pY1N0cmluZyYgY29sU3BhblZhbHVlID0gZmFzdEdldEF0dHJpYnV0ZShj
b2xzcGFuQXR0cik7Ci0gICAgcmV0dXJuIG1heCgxLCBjb2xTcGFuVmFsdWUudG9JbnQoKSk7Cisg
ICAgcmV0dXJuIHN0ZDo6bWF4KDEsIGNvbFNwYW5WYWx1ZS50b0ludCgpKTsKIH0KIAogaW50IEhU
TUxUYWJsZUNlbGxFbGVtZW50Ojpyb3dTcGFuKCkgY29uc3QKIHsKICAgICBjb25zdCBBdG9taWNT
dHJpbmcmIHJvd1NwYW5WYWx1ZSA9IGZhc3RHZXRBdHRyaWJ1dGUocm93c3BhbkF0dHIpOwotICAg
IHJldHVybiBtYXgoMSwgbWluKHJvd1NwYW5WYWx1ZS50b0ludCgpLCBtYXhSb3dzcGFuKSk7Cisg
ICAgcmV0dXJuIHN0ZDo6bWF4KDEsIHN0ZDo6bWluKHJvd1NwYW5WYWx1ZS50b0ludCgpLCBtYXhS
b3dzcGFuKSk7CiB9CiAKIGludCBIVE1MVGFibGVDZWxsRWxlbWVudDo6Y2VsbEluZGV4KCkgY29u
c3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRhYmxlRWxlbWVudC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUYWJsZUVsZW1lbnQuY3BwCmluZGV4IDk3YjNiMDgz
OTBmNjY5ODA2YjE2ZTRkNDY4NTVkMzY4OWI2MTViODguLjQ1YWQ3NzQ2MmE1ZjlhZTc1NzMyNmYw
MTE3MjkwMzdhNTFjOWQ0YzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRh
YmxlRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGFibGVFbGVtZW50
LmNwcApAQCAtMzk0LDcgKzM5NCw3IEBAIHZvaWQgSFRNTFRhYmxlRWxlbWVudDo6cGFyc2VBdHRy
aWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwgY29uc3QgQXRvbWljU3RyCiAgICAgICAg
ICAgICBtX3J1bGVzQXR0ciA9IEFsbFJ1bGVzOwogICAgIH0gZWxzZSBpZiAobmFtZSA9PSBjZWxs
cGFkZGluZ0F0dHIpIHsKICAgICAgICAgaWYgKCF2YWx1ZS5pc0VtcHR5KCkpCi0gICAgICAgICAg
ICBtX3BhZGRpbmcgPSBtYXgoMCwgdmFsdWUudG9JbnQoKSk7CisgICAgICAgICAgICBtX3BhZGRp
bmcgPSBzdGQ6Om1heCgwLCB2YWx1ZS50b0ludCgpKTsKICAgICAgICAgZWxzZQogICAgICAgICAg
ICAgbV9wYWRkaW5nID0gMTsKICAgICB9IGVsc2UgaWYgKG5hbWUgPT0gY29sc0F0dHIpIHsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudC5jcHAK
aW5kZXggZjI1N2I2YmZhN2U4YWY1ZDkwYjgyM2JmMDhmYmQyZDMxNzhjMjFhMS4uYzc3NzBkMzVk
Y2QzM2E4MTY3M2I3ZjljY2RjODU0MDQ0ZjgyYzg4NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudC5jcHAKQEAgLTUxLDcgKzUxLDYgQEAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogdXNpbmcgbmFtZXNwYWNlIEhUTUxOYW1lczsKLXVzaW5n
IG5hbWVzcGFjZSBzdGQ7CiAKIEhUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50OjpIVE1MVGV4dEZv
cm1Db250cm9sRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCYg
ZG9jdW1lbnQsIEhUTUxGb3JtRWxlbWVudCogZm9ybSkKICAgICA6IEhUTUxGb3JtQ29udHJvbEVs
ZW1lbnRXaXRoU3RhdGUodGFnTmFtZSwgZG9jdW1lbnQsIGZvcm0pCkBAIC0xNzEsMTIgKzE3MCwx
MiBAQCB2b2lkIEhUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50Ojp1cGRhdGVQbGFjZWhvbGRlclZp
c2liaWxpdHkoYm9vbCBwbGFjZWhvbGRlclZhbAogCiB2b2lkIEhUTUxUZXh0Rm9ybUNvbnRyb2xF
bGVtZW50OjpzZXRTZWxlY3Rpb25TdGFydChpbnQgc3RhcnQpCiB7Ci0gICAgc2V0U2VsZWN0aW9u
UmFuZ2Uoc3RhcnQsIG1heChzdGFydCwgc2VsZWN0aW9uRW5kKCkpLCBzZWxlY3Rpb25EaXJlY3Rp
b24oKSk7CisgICAgc2V0U2VsZWN0aW9uUmFuZ2Uoc3RhcnQsIHN0ZDo6bWF4KHN0YXJ0LCBzZWxl
Y3Rpb25FbmQoKSksIHNlbGVjdGlvbkRpcmVjdGlvbigpKTsKIH0KIAogdm9pZCBIVE1MVGV4dEZv
cm1Db250cm9sRWxlbWVudDo6c2V0U2VsZWN0aW9uRW5kKGludCBlbmQpCiB7Ci0gICAgc2V0U2Vs
ZWN0aW9uUmFuZ2UobWluKGVuZCwgc2VsZWN0aW9uU3RhcnQoKSksIGVuZCwgc2VsZWN0aW9uRGly
ZWN0aW9uKCkpOworICAgIHNldFNlbGVjdGlvblJhbmdlKHN0ZDo6bWluKGVuZCwgc2VsZWN0aW9u
U3RhcnQoKSksIGVuZCwgc2VsZWN0aW9uRGlyZWN0aW9uKCkpOwogfQogCiB2b2lkIEhUTUxUZXh0
Rm9ybUNvbnRyb2xFbGVtZW50OjpzZXRTZWxlY3Rpb25EaXJlY3Rpb24oY29uc3QgU3RyaW5nJiBk
aXJlY3Rpb24pCkBAIC0xODYsNyArMTg1LDcgQEAgdm9pZCBIVE1MVGV4dEZvcm1Db250cm9sRWxl
bWVudDo6c2V0U2VsZWN0aW9uRGlyZWN0aW9uKGNvbnN0IFN0cmluZyYgZGlyZWN0aW9uKQogCiB2
b2lkIEhUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50OjpzZWxlY3QoKQogewotICAgIHNldFNlbGVj
dGlvblJhbmdlKDAsIG51bWVyaWNfbGltaXRzPGludD46Om1heCgpLCBTZWxlY3Rpb25IYXNOb0Rp
cmVjdGlvbik7CisgICAgc2V0U2VsZWN0aW9uUmFuZ2UoMCwgc3RkOjpudW1lcmljX2xpbWl0czxp
bnQ+OjptYXgoKSwgU2VsZWN0aW9uSGFzTm9EaXJlY3Rpb24pOwogfQogCiBTdHJpbmcgSFRNTFRl
eHRGb3JtQ29udHJvbEVsZW1lbnQ6OnNlbGVjdGVkVGV4dCgpIGNvbnN0CkBAIC0yODcsOCArMjg2
LDggQEAgdm9pZCBIVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudDo6c2V0U2VsZWN0aW9uUmFuZ2Uo
aW50IHN0YXJ0LCBpbnQgZW5kLCBUZXh0RmllbGQKICAgICBpZiAoIXJlbmRlcmVyKCkgfHwgIXJl
bmRlcmVyKCktPmlzVGV4dENvbnRyb2woKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgZW5kID0g
bWF4KGVuZCwgMCk7Ci0gICAgc3RhcnQgPSBtaW4obWF4KHN0YXJ0LCAwKSwgZW5kKTsKKyAgICBl
bmQgPSBzdGQ6Om1heChlbmQsIDApOworICAgIHN0YXJ0ID0gc3RkOjptaW4oc3RkOjptYXgoc3Rh
cnQsIDApLCBlbmQpOwogCiAgICAgaWYgKCFoYXNWaXNpYmxlVGV4dEFyZWEoKnJlbmRlcmVyKCks
IGlubmVyVGV4dEVsZW1lbnQoKSkpIHsKICAgICAgICAgY2FjaGVTZWxlY3Rpb24oc3RhcnQsIGVu
ZCwgZGlyZWN0aW9uKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRyYWNr
RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUcmFja0VsZW1lbnQuY3BwCmlu
ZGV4IDIyMTI5OTAwMGJhZGQ1MzU5Y2Y0ZDQ4OWVkZmIwNzBkM2E4OGZkZGIuLjhjOWI3NThmM2Jh
ZmEwMzdhOWZjYjc5MDk5MWQ2YzdhYTYzOWUzODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTFRyYWNrRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
VHJhY2tFbGVtZW50LmNwcApAQCAtMzQsOCArMzQsNiBAQAogI2luY2x1ZGUgIkxvZ2dpbmcuaCIK
ICNpbmNsdWRlICJSdW50aW1lRW5hYmxlZEZlYXR1cmVzLmgiCiAKLXVzaW5nIG5hbWVzcGFjZSBz
dGQ7Ci0KIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogdXNpbmcgbmFtZXNwYWNlIEhUTUxOYW1lczsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW1hZ2VEb2N1bWVudC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0ltYWdlRG9jdW1lbnQuY3BwCmluZGV4IDg1NGM0NzFhYzFiODNlNmI5
MzNlZDk1ZTBmYzIzMDY0YTY3NThhYWUuLmU1MTg2MDZhNzk1MDIzNzE5ZmUwMGM3ODU1YWVhODQ5
OGQ2NjQwMzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW1hZ2VEb2N1bWVudC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9JbWFnZURvY3VtZW50LmNwcApAQCAtNDYsOCAr
NDYsNiBAQAogI2luY2x1ZGUgIlJlc291cmNlQnVmZmVyLmgiCiAjaW5jbHVkZSAiU2V0dGluZ3Mu
aCIKIAotdXNpbmcgc3RkOjptaW47Ci0KIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogdXNpbmcgbmFt
ZXNwYWNlIEhUTUxOYW1lczsKQEAgLTI0MSw3ICsyMzksNyBAQCBmbG9hdCBJbWFnZURvY3VtZW50
OjpzY2FsZSgpIGNvbnN0CiAgICAgZmxvYXQgd2lkdGhTY2FsZSA9IChmbG9hdCl3aW5kb3dTaXpl
LndpZHRoKCkgLyBpbWFnZVNpemUud2lkdGgoKTsKICAgICBmbG9hdCBoZWlnaHRTY2FsZSA9IChm
bG9hdCl3aW5kb3dTaXplLmhlaWdodCgpIC8gaW1hZ2VTaXplLmhlaWdodCgpOwogCi0gICAgcmV0
dXJuIG1pbih3aWR0aFNjYWxlLCBoZWlnaHRTY2FsZSk7CisgICAgcmV0dXJuIHN0ZDo6bWluKHdp
ZHRoU2NhbGUsIGhlaWdodFNjYWxlKTsKIH0KIAogdm9pZCBJbWFnZURvY3VtZW50OjpyZXNpemVJ
bWFnZVRvRml0KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW5wdXRUeXBlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW5wdXRUeXBlLmNwcAppbmRleCA5MDA3OGJiYzk4Mzg5
ZDg5ZDA1NWUzZjYyYjY5MDUwNGE0ZjFlMTFhLi5lZDM0NDNhNWMxYzM0MmZjNmNlNzM4OTcwOTM3
ZDZkNWI1NGQ4MWNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0lucHV0VHlwZS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9JbnB1dFR5cGUuY3BwCkBAIC04Miw3ICs4Miw2
IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHVzaW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7Ci11
c2luZyBuYW1lc3BhY2Ugc3RkOwogCiB0eXBlZGVmIE93blB0cjxJbnB1dFR5cGU+ICgqSW5wdXRU
eXBlRmFjdG9yeUZ1bmN0aW9uKShIVE1MSW5wdXRFbGVtZW50Jik7CiB0eXBlZGVmIEhhc2hNYXA8
QXRvbWljU3RyaW5nLCBJbnB1dFR5cGVGYWN0b3J5RnVuY3Rpb24sIENhc2VGb2xkaW5nSGFzaD4g
SW5wdXRUeXBlRmFjdG9yeU1hcDsKQEAgLTIyMyw3ICsyMjIsNyBAQCB2b2lkIElucHV0VHlwZTo6
c2V0VmFsdWVBc0RhdGUoZG91YmxlLCBFeGNlcHRpb25Db2RlJiBlYykgY29uc3QKIAogZG91Ymxl
IElucHV0VHlwZTo6dmFsdWVBc0RvdWJsZSgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG51bWVyaWNf
bGltaXRzPGRvdWJsZT46OnF1aWV0X05hTigpOworICAgIHJldHVybiBzdGQ6Om51bWVyaWNfbGlt
aXRzPGRvdWJsZT46OnF1aWV0X05hTigpOwogfQogCiB2b2lkIElucHV0VHlwZTo6c2V0VmFsdWVB
c0RvdWJsZShkb3VibGUgZG91YmxlVmFsdWUsIFRleHRGaWVsZEV2ZW50QmVoYXZpb3IgZXZlbnRC
ZWhhdmlvciwgRXhjZXB0aW9uQ29kZSYgZWMpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL01lZGlhQ29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL01lZGlh
Q29udHJvbGxlci5jcHAKaW5kZXggMjdkOGUzYTkyMmFlMzM3YjQ4Mzg3NzE3MjE2YTBlMzM4N2Zm
MjZjOS4uMjQ2ZDMxNGYzN2U2ZDg5YmI1ZjYyMjAyYTBkYWJkNjYxYjdhYzNiMyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9NZWRpYUNvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvTWVkaWFDb250cm9sbGVyLmNwcApAQCAtMzcsNyArMzcsNiBAQAogI2luY2x1
ZGUgPHd0Zi90ZXh0L0F0b21pY1N0cmluZy5oPgogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsK
LXVzaW5nIG5hbWVzcGFjZSBzdGQ7CiAKIFBhc3NSZWZQdHI8TWVkaWFDb250cm9sbGVyPiBNZWRp
YUNvbnRyb2xsZXI6OmNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0KQogewpA
QCAtMTM4LDcgKzEzNyw3IEBAIGRvdWJsZSBNZWRpYUNvbnRyb2xsZXI6OmR1cmF0aW9uKCkgY29u
c3QKICAgICAgICAgZG91YmxlIGR1cmF0aW9uID0gbV9tZWRpYUVsZW1lbnRzW2luZGV4XS0+ZHVy
YXRpb24oKTsKICAgICAgICAgaWYgKHN0ZDo6aXNuYW4oZHVyYXRpb24pKQogICAgICAgICAgICAg
Y29udGludWU7Ci0gICAgICAgIG1heER1cmF0aW9uID0gbWF4KG1heER1cmF0aW9uLCBkdXJhdGlv
bik7CisgICAgICAgIG1heER1cmF0aW9uID0gc3RkOjptYXgobWF4RHVyYXRpb24sIGR1cmF0aW9u
KTsKICAgICB9CiAgICAgcmV0dXJuIG1heER1cmF0aW9uOwogfQpAQCAtMTUwLDcgKzE0OSw3IEBA
IGRvdWJsZSBNZWRpYUNvbnRyb2xsZXI6OmN1cnJlbnRUaW1lKCkgY29uc3QKIAogICAgIGlmICht
X3Bvc2l0aW9uID09IE1lZGlhUGxheWVyOjppbnZhbGlkVGltZSgpKSB7CiAgICAgICAgIC8vIFNv
bWUgY2xvY2tzIG1heSByZXR1cm4gdGltZXMgb3V0c2lkZSB0aGUgcmFuZ2Ugb2YgWzAuLmR1cmF0
aW9uXS4KLSAgICAgICAgbV9wb3NpdGlvbiA9IG1heCgwLjAsIG1pbihkdXJhdGlvbigpLCBtX2Ns
b2NrLT5jdXJyZW50VGltZSgpKSk7CisgICAgICAgIG1fcG9zaXRpb24gPSBzdGQ6Om1heDxkb3Vi
bGU+KDAsIHN0ZDo6bWluKGR1cmF0aW9uKCksIG1fY2xvY2stPmN1cnJlbnRUaW1lKCkpKTsKICAg
ICAgICAgbV9jbGVhclBvc2l0aW9uVGltZXIuc3RhcnRPbmVTaG90KDApOwogICAgIH0KIApAQCAt
MTYyLDExICsxNjEsMTEgQEAgdm9pZCBNZWRpYUNvbnRyb2xsZXI6OnNldEN1cnJlbnRUaW1lKGRv
dWJsZSB0aW1lLCBFeGNlcHRpb25Db2RlJiBjb2RlKQogICAgIC8vIFdoZW4gdGhlIHVzZXIgYWdl
bnQgaXMgdG8gc2VlayB0aGUgbWVkaWEgY29udHJvbGxlciB0byBhIHBhcnRpY3VsYXIgbmV3IHBs
YXliYWNrIHBvc2l0aW9uLCAKICAgICAvLyBpdCBtdXN0IGZvbGxvdyB0aGVzZSBzdGVwczoKICAg
ICAvLyBJZiB0aGUgbmV3IHBsYXliYWNrIHBvc2l0aW9uIGlzIGxlc3MgdGhhbiB6ZXJvLCB0aGVu
IHNldCBpdCB0byB6ZXJvLgotICAgIHRpbWUgPSBtYXgoMC4wLCB0aW1lKTsKKyAgICB0aW1lID0g
c3RkOjptYXgoMC4wLCB0aW1lKTsKICAgICAKICAgICAvLyBJZiB0aGUgbmV3IHBsYXliYWNrIHBv
c2l0aW9uIGlzIGdyZWF0ZXIgdGhhbiB0aGUgbWVkaWEgY29udHJvbGxlciBkdXJhdGlvbiwgdGhl
biBzZXQgaXQgCiAgICAgLy8gdG8gdGhlIG1lZGlhIGNvbnRyb2xsZXIgZHVyYXRpb24uCi0gICAg
dGltZSA9IG1pbih0aW1lLCBkdXJhdGlvbigpKTsKKyAgICB0aW1lID0gc3RkOjptaW4odGltZSwg
ZHVyYXRpb24oKSk7CiAgICAgCiAgICAgLy8gU2V0IHRoZSBtZWRpYSBjb250cm9sbGVyIHBvc2l0
aW9uIHRvIHRoZSBuZXcgcGxheWJhY2sgcG9zaXRpb24uCiAgICAgbV9jbG9jay0+c2V0Q3VycmVu
dFRpbWUodGltZSk7CkBAIC0zNjAsNyArMzU5LDcgQEAgdm9pZCBNZWRpYUNvbnRyb2xsZXI6OnVw
ZGF0ZVJlYWR5U3RhdGUoKQogICAgICAgICAvLyBzbGF2ZWQgbWVkaWEgZWxlbWVudHMuCiAgICAg
ICAgIG5ld1JlYWR5U3RhdGUgPSBtX21lZGlhRWxlbWVudHMuZmlyc3QoKS0+cmVhZHlTdGF0ZSgp
OwogICAgICAgICBmb3IgKHNpemVfdCBpbmRleCA9IDE7IGluZGV4IDwgbV9tZWRpYUVsZW1lbnRz
LnNpemUoKTsgKytpbmRleCkKLSAgICAgICAgICAgIG5ld1JlYWR5U3RhdGUgPSBtaW4obmV3UmVh
ZHlTdGF0ZSwgbV9tZWRpYUVsZW1lbnRzW2luZGV4XS0+cmVhZHlTdGF0ZSgpKTsKKyAgICAgICAg
ICAgIG5ld1JlYWR5U3RhdGUgPSBzdGQ6Om1pbihuZXdSZWFkeVN0YXRlLCBtX21lZGlhRWxlbWVu
dHNbaW5kZXhdLT5yZWFkeVN0YXRlKCkpOwogICAgIH0KIAogICAgIGlmIChuZXdSZWFkeVN0YXRl
ID09IG9sZFJlYWR5U3RhdGUpIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9OdW1i
ZXJJbnB1dFR5cGUuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9OdW1iZXJJbnB1dFR5cGUuY3Bw
CmluZGV4IDZmNTVkZmI5YzAyNDM5NmVkODI5MDAwMzI0ZWYyYzlmZjRhYmFhMzguLjJmMzAyZjJj
YTNjMjI3MzU0NmViOTIxMWY2ODFlODhjZjljZTNlYTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvTnVtYmVySW5wdXRUeXBlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL051
bWJlcklucHV0VHlwZS5jcHAKQEAgLTQ5LDcgKzQ5LDYgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAogdXNpbmcgbmFtZXNwYWNlIEhUTUxOYW1lczsKLXVzaW5nIG5hbWVzcGFjZSBzdGQ7CiAKIHN0
YXRpYyBjb25zdCBpbnQgbnVtYmVyRGVmYXVsdFN0ZXAgPSAxOwogc3RhdGljIGNvbnN0IGludCBu
dW1iZXJEZWZhdWx0U3RlcEJhc2UgPSAwOwpAQCAtMTI1LDcgKzEyNCw3IEBAIGRvdWJsZSBOdW1i
ZXJJbnB1dFR5cGU6OnZhbHVlQXNEb3VibGUoKSBjb25zdAogdm9pZCBOdW1iZXJJbnB1dFR5cGU6
OnNldFZhbHVlQXNEb3VibGUoZG91YmxlIG5ld1ZhbHVlLCBUZXh0RmllbGRFdmVudEJlaGF2aW9y
IGV2ZW50QmVoYXZpb3IsIEV4Y2VwdGlvbkNvZGUmIGVjKSBjb25zdAogewogICAgIC8vIEZJWE1F
OiBXZSBzaG91bGQgdXNlIG51bWVyaWNfbGltaXRzPGRvdWJsZT46Om1heCBmb3IgbnVtYmVyIGlu
cHV0IHR5cGUuCi0gICAgY29uc3QgZG91YmxlIGZsb2F0TWF4ID0gbnVtZXJpY19saW1pdHM8Zmxv
YXQ+OjptYXgoKTsKKyAgICBjb25zdCBkb3VibGUgZmxvYXRNYXggPSBzdGQ6Om51bWVyaWNfbGlt
aXRzPGZsb2F0Pjo6bWF4KCk7CiAgICAgaWYgKG5ld1ZhbHVlIDwgLWZsb2F0TWF4KSB7CiAgICAg
ICAgIGVjID0gSU5WQUxJRF9TVEFURV9FUlI7CiAgICAgICAgIHJldHVybjsKQEAgLTE0MCw3ICsx
MzksNyBAQCB2b2lkIE51bWJlcklucHV0VHlwZTo6c2V0VmFsdWVBc0RvdWJsZShkb3VibGUgbmV3
VmFsdWUsIFRleHRGaWVsZEV2ZW50QmVoYXZpb3IgZQogdm9pZCBOdW1iZXJJbnB1dFR5cGU6OnNl
dFZhbHVlQXNEZWNpbWFsKGNvbnN0IERlY2ltYWwmIG5ld1ZhbHVlLCBUZXh0RmllbGRFdmVudEJl
aGF2aW9yIGV2ZW50QmVoYXZpb3IsIEV4Y2VwdGlvbkNvZGUmIGVjKSBjb25zdAogewogICAgIC8v
IEZJWE1FOiBXZSBzaG91bGQgdXNlIG51bWVyaWNfbGltaXRzPGRvdWJsZT46Om1heCBmb3IgbnVt
YmVyIGlucHV0IHR5cGUuCi0gICAgY29uc3QgRGVjaW1hbCBmbG9hdE1heCA9IERlY2ltYWw6OmZy
b21Eb3VibGUobnVtZXJpY19saW1pdHM8ZmxvYXQ+OjptYXgoKSk7CisgICAgY29uc3QgRGVjaW1h
bCBmbG9hdE1heCA9IERlY2ltYWw6OmZyb21Eb3VibGUoc3RkOjpudW1lcmljX2xpbWl0czxmbG9h
dD46Om1heCgpKTsKICAgICBpZiAobmV3VmFsdWUgPCAtZmxvYXRNYXgpIHsKICAgICAgICAgZWMg
PSBJTlZBTElEX1NUQVRFX0VSUjsKICAgICAgICAgcmV0dXJuOwpAQCAtMTY4LDcgKzE2Nyw3IEBA
IFN0ZXBSYW5nZSBOdW1iZXJJbnB1dFR5cGU6OmNyZWF0ZVN0ZXBSYW5nZShBbnlTdGVwSGFuZGxp
bmcgYW55U3RlcEhhbmRsaW5nKSBjb25zCiAgICAgREVGSU5FX1NUQVRJQ19MT0NBTChjb25zdCBT
dGVwUmFuZ2U6OlN0ZXBEZXNjcmlwdGlvbiwgc3RlcERlc2NyaXB0aW9uLCAobnVtYmVyRGVmYXVs
dFN0ZXAsIG51bWJlckRlZmF1bHRTdGVwQmFzZSwgbnVtYmVyU3RlcFNjYWxlRmFjdG9yKSk7CiAg
ICAgY29uc3QgRGVjaW1hbCBzdGVwQmFzZSA9IHBhcnNlVG9EZWNpbWFsRm9yTnVtYmVyVHlwZShl
bGVtZW50KCkuZmFzdEdldEF0dHJpYnV0ZShtaW5BdHRyKSwgbnVtYmVyRGVmYXVsdFN0ZXBCYXNl
KTsKICAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIHVzZSBudW1lcmljX2xpbWl0czxkb3VibGU+Ojpt
YXggZm9yIG51bWJlciBpbnB1dCB0eXBlLgotICAgIGNvbnN0IERlY2ltYWwgZmxvYXRNYXggPSBE
ZWNpbWFsOjpmcm9tRG91YmxlKG51bWVyaWNfbGltaXRzPGZsb2F0Pjo6bWF4KCkpOworICAgIGNv
bnN0IERlY2ltYWwgZmxvYXRNYXggPSBEZWNpbWFsOjpmcm9tRG91YmxlKHN0ZDo6bnVtZXJpY19s
aW1pdHM8ZmxvYXQ+OjptYXgoKSk7CiAgICAgY29uc3QgRGVjaW1hbCBtaW5pbXVtID0gcGFyc2VU
b051bWJlcihlbGVtZW50KCkuZmFzdEdldEF0dHJpYnV0ZShtaW5BdHRyKSwgLWZsb2F0TWF4KTsK
ICAgICBjb25zdCBEZWNpbWFsIG1heGltdW0gPSBwYXJzZVRvTnVtYmVyKGVsZW1lbnQoKS5mYXN0
R2V0QXR0cmlidXRlKG1heEF0dHIpLCBmbG9hdE1heCk7CiAgICAgY29uc3QgRGVjaW1hbCBzdGVw
ID0gU3RlcFJhbmdlOjpwYXJzZVN0ZXAoYW55U3RlcEhhbmRsaW5nLCBzdGVwRGVzY3JpcHRpb24s
IGVsZW1lbnQoKS5mYXN0R2V0QXR0cmlidXRlKHN0ZXBBdHRyKSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL1JhbmdlSW5wdXRUeXBlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
UmFuZ2VJbnB1dFR5cGUuY3BwCmluZGV4IDgwYjNiNjUxNDlkOWRkNThiNWE1ZTI1Y2QwMjk1MGU5
OTg0M2FmYTIuLjk5ZjBiODYxNjFmMzM1MmM0ZDFjNmRhNDUyMTNmZTllZjg3ZDcwNzAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvUmFuZ2VJbnB1dFR5cGUuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvUmFuZ2VJbnB1dFR5cGUuY3BwCkBAIC02NSw3ICs2NSw2IEBACiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKIHVzaW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7Ci11c2luZyBuYW1l
c3BhY2Ugc3RkOwogCiBzdGF0aWMgY29uc3QgaW50IHJhbmdlRGVmYXVsdE1pbmltdW0gPSAwOwog
c3RhdGljIGNvbnN0IGludCByYW5nZURlZmF1bHRNYXhpbXVtID0gMTAwOwpAQCAtMjA3LDcgKzIw
Niw3IEBAIHZvaWQgUmFuZ2VJbnB1dFR5cGU6OmhhbmRsZUtleWRvd25FdmVudChLZXlib2FyZEV2
ZW50KiBldmVudCkKICAgICAvLyBGSVhNRTogV2UgY2FuJ3QgdXNlIHN0ZXBVcCgpIGZvciB0aGUg
c3RlcCB2YWx1ZSAiYW55Ii4gU28sIHdlIGluY3JlYXNlCiAgICAgLy8gb3IgZGVjcmVhc2UgdGhl
IHZhbHVlIGJ5IDEvMTAwIG9mIHRoZSB2YWx1ZSByYW5nZS4gSXMgaXQgcmVhc29uYWJsZT8KICAg
ICBjb25zdCBEZWNpbWFsIHN0ZXAgPSBlcXVhbElnbm9yaW5nQ2FzZShlbGVtZW50KCkuZmFzdEdl
dEF0dHJpYnV0ZShzdGVwQXR0ciksICJhbnkiKSA/IChzdGVwUmFuZ2UubWF4aW11bSgpIC0gc3Rl
cFJhbmdlLm1pbmltdW0oKSkgLyAxMDAgOiBzdGVwUmFuZ2Uuc3RlcCgpOwotICAgIGNvbnN0IERl
Y2ltYWwgYmlnU3RlcCA9IG1heCgoc3RlcFJhbmdlLm1heGltdW0oKSAtIHN0ZXBSYW5nZS5taW5p
bXVtKCkpIC8gMTAsIHN0ZXApOworICAgIGNvbnN0IERlY2ltYWwgYmlnU3RlcCA9IHN0ZDo6bWF4
KChzdGVwUmFuZ2UubWF4aW11bSgpIC0gc3RlcFJhbmdlLm1pbmltdW0oKSkgLyAxMCwgc3RlcCk7
CiAKICAgICBib29sIGlzVmVydGljYWwgPSBmYWxzZTsKICAgICBpZiAoZWxlbWVudCgpLnJlbmRl
cmVyKCkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvU2VhcmNoSW5wdXRUeXBl
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvU2VhcmNoSW5wdXRUeXBlLmNwcAppbmRleCBmYzhk
ZDc2ZTFkMWU2YTBiMDFiZWVhNjhlNGViZmM0ZDcyODY5MGVlLi44Mjk2NjQ3ZGQ4NDI4MTJmNjcx
ZDZlYmY5YjY1Y2FlMzA2MjUxZGRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL1Nl
YXJjaElucHV0VHlwZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9TZWFyY2hJbnB1dFR5
cGUuY3BwCkBAIC0xNjIsNyArMTYyLDcgQEAgdm9pZCBTZWFyY2hJbnB1dFR5cGU6OnN0YXJ0U2Vh
cmNoRXZlbnRUaW1lcigpCiAKICAgICAvLyBBZnRlciB0eXBpbmcgdGhlIGZpcnN0IGtleSwgd2Ug
d2FpdCAwLjUgc2Vjb25kcy4KICAgICAvLyBBZnRlciB0aGUgc2Vjb25kIGtleSwgMC40IHNlY29u
ZHMsIHRoZW4gMC4zLCB0aGVuIDAuMiBmcm9tIHRoZW4gb24uCi0gICAgbV9zZWFyY2hFdmVudFRp
bWVyLnN0YXJ0T25lU2hvdChtYXgoMC4yLCAwLjYgLSAwLjEgKiBsZW5ndGgpKTsKKyAgICBtX3Nl
YXJjaEV2ZW50VGltZXIuc3RhcnRPbmVTaG90KHN0ZDo6bWF4KDAuMiwgMC42IC0gMC4xICogbGVu
Z3RoKSk7CiB9CiAKIHZvaWQgU2VhcmNoSW5wdXRUeXBlOjpzdG9wU2VhcmNoRXZlbnRUaW1lcigp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL1N0ZXBSYW5nZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL1N0ZXBSYW5nZS5jcHAKaW5kZXggNGQwMDQyZjI0MWZjOTVkNmFjYmQ3NDEy
NjhmNmQ1MzdjMmRkZGIwOS4uYmYyMzRlZDU0MmYyMGU0NDM1MzhlZGY5ZGRiMzgwMzBmMDI1ZWI4
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9TdGVwUmFuZ2UuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvU3RlcFJhbmdlLmNwcApAQCAtMjYsOCArMjYsNiBAQAogI2luY2x1
ZGUgPHd0Zi9NYXRoRXh0cmFzLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAK
LXVzaW5nIG5hbWVzcGFjZSBzdGQ7Ci0KIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogdXNpbmcgbmFt
ZXNwYWNlIEhUTUxOYW1lczsKQEAgLTgzLDcgKzgxLDcgQEAgRGVjaW1hbCBTdGVwUmFuZ2U6OmFs
aWduVmFsdWVGb3JTdGVwKGNvbnN0IERlY2ltYWwmIGN1cnJlbnRWYWx1ZSwgY29uc3QgRGVjaW1h
bCYKIAogRGVjaW1hbCBTdGVwUmFuZ2U6OmNsYW1wVmFsdWUoY29uc3QgRGVjaW1hbCYgdmFsdWUp
IGNvbnN0CiB7Ci0gICAgY29uc3QgRGVjaW1hbCBpblJhbmdlVmFsdWUgPSBtYXgobV9taW5pbXVt
LCBtaW4odmFsdWUsIG1fbWF4aW11bSkpOworICAgIGNvbnN0IERlY2ltYWwgaW5SYW5nZVZhbHVl
ID0gc3RkOjptYXgobV9taW5pbXVtLCBzdGQ6Om1pbih2YWx1ZSwgbV9tYXhpbXVtKSk7CiAgICAg
aWYgKCFtX2hhc1N0ZXApCiAgICAgICAgIHJldHVybiBpblJhbmdlVmFsdWU7CiAgICAgLy8gUm91
bmRzIGluUmFuZ2VWYWx1ZSB0byBtaW5pbXVtICsgTiAqIHN0ZXAuCkBAIC0xMjAsMTMgKzExOCwx
MyBAQCBEZWNpbWFsIFN0ZXBSYW5nZTo6cGFyc2VTdGVwKEFueVN0ZXBIYW5kbGluZyBhbnlTdGVw
SGFuZGxpbmcsIGNvbnN0IFN0ZXBEZXNjcmlwdAogICAgICAgICBicmVhazsKICAgICBjYXNlIFBh
cnNlZFN0ZXBWYWx1ZVNob3VsZEJlSW50ZWdlcjoKICAgICAgICAgLy8gRm9yIGRhdGUsIG1vbnRo
LCBhbmQgd2VlaywgdGhlIHBhcnNlZCB2YWx1ZSBzaG91bGQgYmUgYW4gaW50ZWdlciBmb3Igc29t
ZSB0eXBlcy4KLSAgICAgICAgc3RlcCA9IG1heChzdGVwLnJvdW5kKCksIERlY2ltYWwoMSkpOwor
ICAgICAgICBzdGVwID0gc3RkOjptYXgoc3RlcC5yb3VuZCgpLCBEZWNpbWFsKDEpKTsKICAgICAg
ICAgc3RlcCAqPSBzdGVwRGVzY3JpcHRpb24uc3RlcFNjYWxlRmFjdG9yOwogICAgICAgICBicmVh
azsKICAgICBjYXNlIFNjYWxlZFN0ZXBWYWx1ZVNob3VsZEJlSW50ZWdlcjoKICAgICAgICAgLy8g
Rm9yIGRhdGV0aW1lLCBkYXRldGltZS1sb2NhbCwgdGltZSwgdGhlIHJlc3VsdCBzaG91bGQgYmUg
YW4gaW50ZWdlci4KICAgICAgICAgc3RlcCAqPSBzdGVwRGVzY3JpcHRpb24uc3RlcFNjYWxlRmFj
dG9yOwotICAgICAgICBzdGVwID0gbWF4KHN0ZXAucm91bmQoKSwgRGVjaW1hbCgxKSk7CisgICAg
ICAgIHN0ZXAgPSBzdGQ6Om1heChzdGVwLnJvdW5kKCksIERlY2ltYWwoMSkpOwogICAgICAgICBi
cmVhazsKICAgICBkZWZhdWx0OgogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvVGltZVJhbmdlcy5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL1RpbWVSYW5nZXMuY3BwCmluZGV4IGNmOGUyMGZjMjNiMzA2MDJhMTY5YTU1ZjY5ZmNl
NWU5ZDUxZTJlN2EuLjEwOTNmYWU3NjYzNjgwMzA4MTIzYTlmYWY1OTEyNzg2ZWNhNzQ5MDggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvVGltZVJhbmdlcy5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9UaW1lUmFuZ2VzLmNwcApAQCAtMzEsOCArMzEsNyBAQAogI2luY2x1ZGUg
IkV4Y2VwdGlvbkNvZGVQbGFjZWhvbGRlci5oIgogI2luY2x1ZGUgPG1hdGguaD4KIAotdXNpbmcg
bmFtZXNwYWNlIFdlYkNvcmU7Ci11c2luZyBuYW1lc3BhY2Ugc3RkOworbmFtZXNwYWNlIFdlYkNv
cmUgewogCiBUaW1lUmFuZ2VzOjpUaW1lUmFuZ2VzKGRvdWJsZSBzdGFydCwgZG91YmxlIGVuZCkK
IHsKQEAgLTE5NCwzICsxOTMsNSBAQCBkb3VibGUgVGltZVJhbmdlczo6dG90YWxEdXJhdGlvbigp
IGNvbnN0CiAgICAgICAgIHRvdGFsICs9IGZhYnMoZW5kKG4sIElHTk9SRV9FWENFUFRJT04pIC0g
c3RhcnQobiwgSUdOT1JFX0VYQ0VQVElPTikpOwogICAgIHJldHVybiB0b3RhbDsKIH0KKworfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9WYWxpZGF0aW9uTWVzc2FnZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL1ZhbGlkYXRpb25NZXNzYWdlLmNwcAppbmRleCA3ZTljM2VhYjIz
NjY3ZGU0N2EwNGMyZTgzZjE2ODA0YzEyNmNhY2I1Li42NzE5Y2I1Yzg3NWUzMzMwN2M4ODRhMGYx
MzFjNWRjYjEyZGIzMjQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL1ZhbGlkYXRp
b25NZXNzYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL1ZhbGlkYXRpb25NZXNzYWdl
LmNwcApAQCAtMTQzLDcgKzE0Myw3IEBAIHZvaWQgVmFsaWRhdGlvbk1lc3NhZ2U6OnNldE1lc3Nh
Z2VET01BbmRTdGFydFRpbWVyKFRpbWVyPFZhbGlkYXRpb25NZXNzYWdlPiopCiAgICAgICAgIG1f
dGltZXIuY2xlYXIoKTsKICAgICBlbHNlIHsKICAgICAgICAgbV90aW1lciA9IGFkb3B0UHRyKG5l
dyBUaW1lcjxWYWxpZGF0aW9uTWVzc2FnZT4odGhpcywgJlZhbGlkYXRpb25NZXNzYWdlOjpkZWxl
dGVCdWJibGVUcmVlKSk7Ci0gICAgICAgIG1fdGltZXItPnN0YXJ0T25lU2hvdChtYXgoNS4wLCBz
dGF0aWNfY2FzdDxkb3VibGU+KG1fbWVzc2FnZS5sZW5ndGgoKSkgKiBtYWduaWZpY2F0aW9uIC8g
MTAwMCkpOworICAgICAgICBtX3RpbWVyLT5zdGFydE9uZVNob3Qoc3RkOjptYXgoNS4wLCBzdGF0
aWNfY2FzdDxkb3VibGU+KG1fbWVzc2FnZS5sZW5ndGgoKSkgKiBtYWduaWZpY2F0aW9uIC8gMTAw
MCkpOwogICAgIH0KIH0KIApAQCAtMTY3LDcgKzE2Nyw3IEBAIHN0YXRpYyB2b2lkIGFkanVzdEJ1
YmJsZVBvc2l0aW9uKGNvbnN0IExheW91dFJlY3QmIGhvc3RSZWN0LCBIVE1MRWxlbWVudCogYnVi
YmxlCiAgICAgY29uc3QgaW50IGJ1YmJsZUFycm93VG9wT2Zmc2V0ID0gMzI7CiAgICAgZG91Ymxl
IGJ1YmJsZVggPSBob3N0WDsKICAgICBpZiAoaG9zdFJlY3Qud2lkdGgoKSAvIDIgPCBidWJibGVB
cnJvd1RvcE9mZnNldCkKLSAgICAgICAgYnViYmxlWCA9IG1heChob3N0WCArIGhvc3RSZWN0Lndp
ZHRoKCkgLyAyIC0gYnViYmxlQXJyb3dUb3BPZmZzZXQsIDAuMCk7CisgICAgICAgIGJ1YmJsZVgg
PSBzdGQ6Om1heChob3N0WCArIGhvc3RSZWN0LndpZHRoKCkgLyAyIC0gYnViYmxlQXJyb3dUb3BP
ZmZzZXQsIDAuMCk7CiAgICAgYnViYmxlLT5zZXRJbmxpbmVTdHlsZVByb3BlcnR5KENTU1Byb3Bl
cnR5TGVmdCwgYnViYmxlWCwgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19QWCk7CiB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQy
RC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0
MkQuY3BwCmluZGV4IDcwYzgyOWU2ZTY2NjkwM2FiZjFkM2UwMmE5ODBlNDdiMjU0ZTkxZWUuLmU4
NGFhZTIyMDFhMDdhNTc5NjI0MTQ4MjIxNGI5YWI0NjljZGE0NjMgMTAwNzU1Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmNwcApA
QCAtNzQsOCArNzQsNiBAQAogI2luY2x1ZGUgPEFwcGxpY2F0aW9uU2VydmljZXMvQXBwbGljYXRp
b25TZXJ2aWNlcy5oPgogI2VuZGlmCiAKLXVzaW5nIG5hbWVzcGFjZSBzdGQ7Ci0KIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAogdXNpbmcgbmFtZXNwYWNlIEhUTUxOYW1lczsKQEAgLTEyMjksMTAgKzEy
MjcsMTAgQEAgc3RhdGljIEludFNpemUgc2l6ZShIVE1MVmlkZW9FbGVtZW50KiB2aWRlbykKIAog
c3RhdGljIGlubGluZSBGbG9hdFJlY3Qgbm9ybWFsaXplUmVjdChjb25zdCBGbG9hdFJlY3QmIHJl
Y3QpCiB7Ci0gICAgcmV0dXJuIEZsb2F0UmVjdChtaW4ocmVjdC54KCksIHJlY3QubWF4WCgpKSwK
LSAgICAgICAgbWluKHJlY3QueSgpLCByZWN0Lm1heFkoKSksCi0gICAgICAgIG1heChyZWN0Lndp
ZHRoKCksIC1yZWN0LndpZHRoKCkpLAotICAgICAgICBtYXgocmVjdC5oZWlnaHQoKSwgLXJlY3Qu
aGVpZ2h0KCkpKTsKKyAgICByZXR1cm4gRmxvYXRSZWN0KHN0ZDo6bWluKHJlY3QueCgpLCByZWN0
Lm1heFgoKSksCisgICAgICAgIHN0ZDo6bWluKHJlY3QueSgpLCByZWN0Lm1heFkoKSksCisgICAg
ICAgIHN0ZDo6bWF4KHJlY3Qud2lkdGgoKSwgLXJlY3Qud2lkdGgoKSksCisgICAgICAgIHN0ZDo6
bWF4KHJlY3QuaGVpZ2h0KCksIC1yZWN0LmhlaWdodCgpKSk7CiB9CiAKIHZvaWQgQ2FudmFzUmVu
ZGVyaW5nQ29udGV4dDJEOjpkcmF3SW1hZ2UoSFRNTEltYWdlRWxlbWVudCogaW1hZ2UsIGZsb2F0
IHgsIGZsb2F0IHksIEV4Y2VwdGlvbkNvZGUmIGVjKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dC5jcHAKaW5kZXggOTQwNzVkMTM5NjEy
MTgwNjAzMTAzYzNkODc2MDI2ZWMwYjhiOWZhOS4uZmY3MjQzOTAyNTZjNjQ1MThlNWFmZGFlNDQ1
MDdkYTVmYzZjMDU2ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2Vi
R0xSZW5kZXJpbmdDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9X
ZWJHTFJlbmRlcmluZ0NvbnRleHQuY3BwCkBAIC0xNzkzLDE0ICsxNzkzLDE0IEBAIGJvb2wgV2Vi
R0xSZW5kZXJpbmdDb250ZXh0Ojp2YWxpZGF0ZUluZGV4QXJyYXlDb25zZXJ2YXRpdmUoR0MzRGVu
dW0gdHlwZSwgdW5zaWduCiAgICAgICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6OlVOU0lHTkVE
X0JZVEU6IHsKICAgICAgICAgICAgIGNvbnN0IEdDM0R1Ynl0ZSogcCA9IHN0YXRpY19jYXN0PGNv
bnN0IEdDM0R1Ynl0ZSo+KGJ1ZmZlci0+ZGF0YSgpKTsKICAgICAgICAgICAgIGZvciAoR0MzRHNp
emVpcHRyIGkgPSAwOyBpIDwgbnVtRWxlbWVudHM7IGkrKykKLSAgICAgICAgICAgICAgICBtYXhJ
bmRleCA9IG1heChtYXhJbmRleCwgc3RhdGljX2Nhc3Q8aW50PihwW2ldKSk7CisgICAgICAgICAg
ICAgICAgbWF4SW5kZXggPSBzdGQ6Om1heChtYXhJbmRleCwgc3RhdGljX2Nhc3Q8aW50PihwW2ld
KSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBjYXNlIEdyYXBoaWNz
Q29udGV4dDNEOjpVTlNJR05FRF9TSE9SVDogewogICAgICAgICAgICAgbnVtRWxlbWVudHMgLz0g
c2l6ZW9mKEdDM0R1c2hvcnQpOwogICAgICAgICAgICAgY29uc3QgR0MzRHVzaG9ydCogcCA9IHN0
YXRpY19jYXN0PGNvbnN0IEdDM0R1c2hvcnQqPihidWZmZXItPmRhdGEoKSk7CiAgICAgICAgICAg
ICBmb3IgKEdDM0RzaXplaXB0ciBpID0gMDsgaSA8IG51bUVsZW1lbnRzOyBpKyspCi0gICAgICAg
ICAgICAgICAgbWF4SW5kZXggPSBtYXgobWF4SW5kZXgsIHN0YXRpY19jYXN0PGludD4ocFtpXSkp
OworICAgICAgICAgICAgICAgIG1heEluZGV4ID0gc3RkOjptYXgobWF4SW5kZXgsIHN0YXRpY19j
YXN0PGludD4ocFtpXSkpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAg
Y2FzZSBHcmFwaGljc0NvbnRleHQzRDo6VU5TSUdORURfSU5UOiB7CkBAIC0xODA5LDcgKzE4MDks
NyBAQCBib29sIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6dmFsaWRhdGVJbmRleEFycmF5Q29uc2Vy
dmF0aXZlKEdDM0RlbnVtIHR5cGUsIHVuc2lnbgogICAgICAgICAgICAgbnVtRWxlbWVudHMgLz0g
c2l6ZW9mKEdDM0R1aW50KTsKICAgICAgICAgICAgIGNvbnN0IEdDM0R1aW50KiBwID0gc3RhdGlj
X2Nhc3Q8Y29uc3QgR0MzRHVpbnQqPihidWZmZXItPmRhdGEoKSk7CiAgICAgICAgICAgICBmb3Ig
KEdDM0RzaXplaXB0ciBpID0gMDsgaSA8IG51bUVsZW1lbnRzOyBpKyspCi0gICAgICAgICAgICAg
ICAgbWF4SW5kZXggPSBtYXgobWF4SW5kZXgsIHN0YXRpY19jYXN0PGludD4ocFtpXSkpOworICAg
ICAgICAgICAgICAgIG1heEluZGV4ID0gc3RkOjptYXgobWF4SW5kZXgsIHN0YXRpY19jYXN0PGlu
dD4ocFtpXSkpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgZGVmYXVs
dDoKQEAgLTUzMjgsMTMgKzUzMjgsMTMgQEAgYm9vbCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OnZh
bGlkYXRlQ29tcHJlc3NlZFRleEZ1bmNEYXRhKGNvbnN0IGNoYXIqIGZ1bmN0aW9uTmEKICAgICBj
YXNlIEV4dGVuc2lvbnMzRDo6Q09NUFJFU1NFRF9SR0JfUFZSVENfNEJQUFYxX0lNRzoKICAgICBj
YXNlIEV4dGVuc2lvbnMzRDo6Q09NUFJFU1NFRF9SR0JBX1BWUlRDXzRCUFBWMV9JTUc6CiAgICAg
ICAgIHsKLSAgICAgICAgICAgIGJ5dGVzUmVxdWlyZWQgPSBtYXgod2lkdGgsIDgpICogbWF4KGhl
aWdodCwgOCkgLyAyOworICAgICAgICAgICAgYnl0ZXNSZXF1aXJlZCA9IHN0ZDo6bWF4KHdpZHRo
LCA4KSAqIHN0ZDo6bWF4KGhlaWdodCwgOCkgLyAyOwogICAgICAgICB9CiAgICAgICAgIGJyZWFr
OwogICAgIGNhc2UgRXh0ZW5zaW9uczNEOjpDT01QUkVTU0VEX1JHQl9QVlJUQ18yQlBQVjFfSU1H
OgogICAgIGNhc2UgRXh0ZW5zaW9uczNEOjpDT01QUkVTU0VEX1JHQkFfUFZSVENfMkJQUFYxX0lN
RzoKICAgICAgICAgewotICAgICAgICAgICAgYnl0ZXNSZXF1aXJlZCA9IG1heCh3aWR0aCwgOCkg
KiBtYXgoaGVpZ2h0LCA4KSAvIDQ7CisgICAgICAgICAgICBieXRlc1JlcXVpcmVkID0gc3RkOjpt
YXgod2lkdGgsIDgpICogc3RkOjptYXgoaGVpZ2h0LCA4KSAvIDQ7CiAgICAgICAgIH0KICAgICAg
ICAgYnJlYWs7CiAgICAgZGVmYXVsdDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
c2hhZG93L01lZGlhQ29udHJvbEVsZW1lbnRzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hh
ZG93L01lZGlhQ29udHJvbEVsZW1lbnRzLmNwcAppbmRleCA5ZjAyMWNiOTMwNzJjMmM2ZTlkMzYz
YjVmNTdkNTI4N2E4OTIzZDc5Li4yMDZjZTBlYzZlMTYyZWMyNTA1NzVhNzM1NTA4ODFiNTM0NDRk
NDY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xF
bGVtZW50cy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvTWVkaWFDb250cm9s
RWxlbWVudHMuY3BwCkBAIC02MzEsNyArNjMxLDcgQEAgUGFzc1JlZlB0cjxNZWRpYUNvbnRyb2xS
ZXdpbmRCdXR0b25FbGVtZW50PiBNZWRpYUNvbnRyb2xSZXdpbmRCdXR0b25FbGVtZW50OjpjcmUK
IHZvaWQgTWVkaWFDb250cm9sUmV3aW5kQnV0dG9uRWxlbWVudDo6ZGVmYXVsdEV2ZW50SGFuZGxl
cihFdmVudCogZXZlbnQpCiB7CiAgICAgaWYgKGV2ZW50LT50eXBlKCkgPT0gZXZlbnROYW1lcygp
LmNsaWNrRXZlbnQpIHsKLSAgICAgICAgbWVkaWFDb250cm9sbGVyKCktPnNldEN1cnJlbnRUaW1l
KG1heCgwLjAsIG1lZGlhQ29udHJvbGxlcigpLT5jdXJyZW50VGltZSgpIC0gMzApLCBJR05PUkVf
RVhDRVBUSU9OKTsKKyAgICAgICAgbWVkaWFDb250cm9sbGVyKCktPnNldEN1cnJlbnRUaW1lKHN0
ZDo6bWF4PGRvdWJsZT4oMCwgbWVkaWFDb250cm9sbGVyKCktPmN1cnJlbnRUaW1lKCkgLSAzMCks
IElHTk9SRV9FWENFUFRJT04pOwogICAgICAgICBldmVudC0+c2V0RGVmYXVsdEhhbmRsZWQoKTsK
ICAgICB9CiAgICAgSFRNTElucHV0RWxlbWVudDo6ZGVmYXVsdEV2ZW50SGFuZGxlcihldmVudCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xzQXBw
bGUuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvTWVkaWFDb250cm9sc0FwcGxlLmNw
cAppbmRleCAxZTQ4NzllNjIxNDcyZjQzOTFjMTU3ZDQ2YTE1ZTE4OTAxNjNiM2VmLi5iMDg3ZmJh
ODVmY2VjY2JjYTkyNGE3OWExYmMxNjM5NzNlZGNmNDhlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xzQXBwbGUuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvc2hhZG93L01lZGlhQ29udHJvbHNBcHBsZS5jcHAKQEAgLTQ1LDggKzQ1LDYgQEAK
ICNpbmNsdWRlICJUZXh0VHJhY2tDdWUuaCIKICNlbmRpZgogCi11c2luZyBuYW1lc3BhY2Ugc3Rk
OwotCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIE1lZGlhQ29udHJvbHNBcHBsZTo6TWVkaWFDb250
cm9sc0FwcGxlKERvY3VtZW50JiBkb2N1bWVudCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvc2hhZG93L1NsaWRlclRodW1iRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L3NoYWRvdy9TbGlkZXJUaHVtYkVsZW1lbnQuY3BwCmluZGV4IGJkY2Q5YThjZDMzOTFiODE0NGZi
ODVkZWE4YWQwM2I3ZDQ0ZTA0M2QuLjg5ZjAxMjM4ZDNkMmFkZmEyNmI5YzIyMjJmNDcyNmM2MWIx
Y2U1NTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L1NsaWRlclRodW1i
RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvU2xpZGVyVGh1bWJF
bGVtZW50LmNwcApAQCAtNDYsOCArNDYsNiBAQAogI2luY2x1ZGUgIlNoYWRvd1Jvb3QuaCIKICNp
bmNsdWRlICJTdGVwUmFuZ2UuaCIKIAotdXNpbmcgbmFtZXNwYWNlIHN0ZDsKLQogbmFtZXNwYWNl
IFdlYkNvcmUgewogCiB1c2luZyBuYW1lc3BhY2UgSFRNTE5hbWVzOwpAQCAtMjcyLDcgKzI3MCw3
IEBAIHZvaWQgU2xpZGVyVGh1bWJFbGVtZW50OjpzZXRQb3NpdGlvbkZyb21Qb2ludChjb25zdCBM
YXlvdXRQb2ludCYgYWJzb2x1dGVQb2ludCkKICAgICAgICAgcG9zaXRpb24gLT0gaXNMZWZ0VG9S
aWdodERpcmVjdGlvbiA/IHJlbmRlckJveCgpLT5tYXJnaW5MZWZ0KCkgOiByZW5kZXJCb3goKS0+
bWFyZ2luUmlnaHQoKTsKICAgICB9CiAKLSAgICBwb3NpdGlvbiA9IG1heDxMYXlvdXRVbml0Pigw
LCBtaW4ocG9zaXRpb24sIHRyYWNrTGVuZ3RoKSk7CisgICAgcG9zaXRpb24gPSBzdGQ6Om1heDxM
YXlvdXRVbml0PigwLCBzdGQ6Om1pbihwb3NpdGlvbiwgdHJhY2tMZW5ndGgpKTsKICAgICBjb25z
dCBEZWNpbWFsIHJhdGlvID0gRGVjaW1hbDo6ZnJvbURvdWJsZShzdGF0aWNfY2FzdDxkb3VibGU+
KHBvc2l0aW9uKSAvIHRyYWNrTGVuZ3RoKTsKICAgICBjb25zdCBEZWNpbWFsIGZyYWN0aW9uID0g
aXNWZXJ0aWNhbCB8fCAhaXNMZWZ0VG9SaWdodERpcmVjdGlvbiA/IERlY2ltYWwoMSkgLSByYXRp
byA6IHJhdGlvOwogICAgIFN0ZXBSYW5nZSBzdGVwUmFuZ2UoaW5wdXQtPmNyZWF0ZVN0ZXBSYW5n
ZShSZWplY3RBbnkpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Db250
ZW50U2VhcmNoVXRpbHMuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0NvbnRlbnRTZWFy
Y2hVdGlscy5jcHAKaW5kZXggNTQ1N2U1ZDlhYTE4NGNiZWVkNDdiY2RlMjUxMWI5ZDRmMDBmOTdi
Ni4uMDNhODA1ZmFjY2IxMzhhZDkzZWIxM2JiNjMwYjUyOWNlNWYyOGE0NCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0NvbnRlbnRTZWFyY2hVdGlscy5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0NvbnRlbnRTZWFyY2hVdGlscy5jcHAKQEAgLTM5LDggKzM5
LDYgQEAKICNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CiAjaW5jbHVkZSA8eWFyci9ZYXJy
Lmg+CiAKLXVzaW5nIG5hbWVzcGFjZSBzdGQ7Ci0KIG5hbWVzcGFjZSBXZWJDb3JlIHsKIG5hbWVz
cGFjZSBDb250ZW50U2VhcmNoVXRpbHMgewogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvRE9NRWRpdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9ET01FZGl0
b3IuY3BwCmluZGV4IDUxYWE4ZTQ0MGIxZWZhNWRjNjJhMDZjMGMwYTM1NzRjMjI0NDc5Y2QuLjQ1
YjI4OWZiN2MyYTczODlmMTFkMWZjOWU2NDdkY2E4OTZlMjk4ZWIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9ET01FZGl0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9ET01FZGl0b3IuY3BwCkBAIC00MSwxMyArNDEsOSBAQAogI2luY2x1ZGUgIkluc3Bl
Y3Rvckhpc3RvcnkuaCIKICNpbmNsdWRlICJOb2RlLmgiCiAjaW5jbHVkZSAiVGV4dC5oIgotCiAj
aW5jbHVkZSAibWFya3VwLmgiCi0KICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAKLXVzaW5nIG5h
bWVzcGFjZSBzdGQ7Ci0KIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgRE9NRWRpdG9yOjpS
ZW1vdmVDaGlsZEFjdGlvbiA6IHB1YmxpYyBJbnNwZWN0b3JIaXN0b3J5OjpBY3Rpb24gewpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0RPTVBhdGNoU3VwcG9ydC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvRE9NUGF0Y2hTdXBwb3J0LmNwcAppbmRleCA0NDc5ZDhh
YjE1YWZlYWFkYmE0NmRkYTc4MWY2MmMyYTYzOGE4MTc4Li5kMmM2NzRhNjVmZTYxYjkyOTBiY2U0
MzU4MzQ2MmZlNmU5Y2FmNjgzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
RE9NUGF0Y2hTdXBwb3J0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvRE9NUGF0
Y2hTdXBwb3J0LmNwcApAQCAtNTQsOCArNTQsNiBAQAogI2luY2x1ZGUgPHd0Zi90ZXh0L0Jhc2U2
NC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KIAotdXNpbmcgbmFtZXNwYWNlIHN0
ZDsKLQogbmFtZXNwYWNlIFdlYkNvcmUgewogCiB1c2luZyBIVE1MTmFtZXM6OmJvZHlUYWc7CkBA
IC0yNjcsOCArMjY1LDggQEAgRE9NUGF0Y2hTdXBwb3J0OjpkaWZmKGNvbnN0IFZlY3RvcjxPd25Q
dHI8RGlnZXN0Pj4mIG9sZExpc3QsIGNvbnN0IFZlY3RvcjxPd25QdHIKICAgICAgICAgaWYgKG9s
ZEl0ID09IG9sZFRhYmxlLmVuZCgpIHx8IG9sZEl0LT52YWx1ZS5zaXplKCkgIT0gMSkKICAgICAg
ICAgICAgIGNvbnRpbnVlOwogCi0gICAgICAgIG5ld01hcFtuZXdJdC0+dmFsdWVbMF1dID0gbWFr
ZV9wYWlyKG5ld0xpc3RbbmV3SXQtPnZhbHVlWzBdXS5nZXQoKSwgb2xkSXQtPnZhbHVlWzBdKTsK
LSAgICAgICAgb2xkTWFwW29sZEl0LT52YWx1ZVswXV0gPSBtYWtlX3BhaXIob2xkTGlzdFtvbGRJ
dC0+dmFsdWVbMF1dLmdldCgpLCBuZXdJdC0+dmFsdWVbMF0pOworICAgICAgICBuZXdNYXBbbmV3
SXQtPnZhbHVlWzBdXSA9IHN0ZDo6bWFrZV9wYWlyKG5ld0xpc3RbbmV3SXQtPnZhbHVlWzBdXS5n
ZXQoKSwgb2xkSXQtPnZhbHVlWzBdKTsKKyAgICAgICAgb2xkTWFwW29sZEl0LT52YWx1ZVswXV0g
PSBzdGQ6Om1ha2VfcGFpcihvbGRMaXN0W29sZEl0LT52YWx1ZVswXV0uZ2V0KCksIG5ld0l0LT52
YWx1ZVswXSk7CiAgICAgfQogCiAgICAgZm9yIChzaXplX3QgaSA9IDA7IG5ld0xpc3Quc2l6ZSgp
ID4gMCAmJiBpIDwgbmV3TGlzdC5zaXplKCkgLSAxOyArK2kpIHsKQEAgLTI3Nyw4ICsyNzUsOCBA
QCBET01QYXRjaFN1cHBvcnQ6OmRpZmYoY29uc3QgVmVjdG9yPE93blB0cjxEaWdlc3Q+PiYgb2xk
TGlzdCwgY29uc3QgVmVjdG9yPE93blB0cgogCiAgICAgICAgIHNpemVfdCBqID0gbmV3TWFwW2ld
LnNlY29uZCArIDE7CiAgICAgICAgIGlmIChqIDwgb2xkTWFwLnNpemUoKSAmJiAhb2xkTWFwW2pd
LmZpcnN0ICYmIG5ld0xpc3RbaSArIDFdLT5tX3NoYTEgPT0gb2xkTGlzdFtqXS0+bV9zaGExKSB7
Ci0gICAgICAgICAgICBuZXdNYXBbaSArIDFdID0gbWFrZV9wYWlyKG5ld0xpc3RbaSArIDFdLmdl
dCgpLCBqKTsKLSAgICAgICAgICAgIG9sZE1hcFtqXSA9IG1ha2VfcGFpcihvbGRMaXN0W2pdLmdl
dCgpLCBpICsgMSk7CisgICAgICAgICAgICBuZXdNYXBbaSArIDFdID0gc3RkOjptYWtlX3BhaXIo
bmV3TGlzdFtpICsgMV0uZ2V0KCksIGopOworICAgICAgICAgICAgb2xkTWFwW2pdID0gc3RkOjpt
YWtlX3BhaXIob2xkTGlzdFtqXS5nZXQoKSwgaSArIDEpOwogICAgICAgICB9CiAgICAgfQogCkBA
IC0yODgsOCArMjg2LDggQEAgRE9NUGF0Y2hTdXBwb3J0OjpkaWZmKGNvbnN0IFZlY3RvcjxPd25Q
dHI8RGlnZXN0Pj4mIG9sZExpc3QsIGNvbnN0IFZlY3RvcjxPd25QdHIKIAogICAgICAgICBzaXpl
X3QgaiA9IG5ld01hcFtpXS5zZWNvbmQgLSAxOwogICAgICAgICBpZiAoIW9sZE1hcFtqXS5maXJz
dCAmJiBuZXdMaXN0W2kgLSAxXS0+bV9zaGExID09IG9sZExpc3Rbal0tPm1fc2hhMSkgewotICAg
ICAgICAgICAgbmV3TWFwW2kgLSAxXSA9IG1ha2VfcGFpcihuZXdMaXN0W2kgLSAxXS5nZXQoKSwg
aik7Ci0gICAgICAgICAgICBvbGRNYXBbal0gPSBtYWtlX3BhaXIob2xkTGlzdFtqXS5nZXQoKSwg
aSAtIDEpOworICAgICAgICAgICAgbmV3TWFwW2kgLSAxXSA9IHN0ZDo6bWFrZV9wYWlyKG5ld0xp
c3RbaSAtIDFdLmdldCgpLCBqKTsKKyAgICAgICAgICAgIG9sZE1hcFtqXSA9IHN0ZDo6bWFrZV9w
YWlyKG9sZExpc3Rbal0uZ2V0KCksIGkgLSAxKTsKICAgICAgICAgfQogICAgIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0SG9zdC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRIb3N0LmNwcAppbmRleCAxZTQy
ZGMzZmMzOGY2YzdhNjg4Y2Q3MzE1M2VjMDE5MzJiY2U0MjdkLi4yNTAyNjk0MjljNTJiYzk0Nzlm
YTNhZWIyZGYxMWM4Njk0NzUxN2IwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5qZWN0ZWRTY3JpcHRIb3N0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5qZWN0ZWRTY3JpcHRIb3N0LmNwcApAQCAtNjAsOCArNjAsNiBAQAogI2luY2x1ZGUgPHd0Zi9S
ZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CiAKLXVzaW5nIG5hbWVzcGFj
ZSBzdGQ7Ci0KIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogUGFzc1JlZlB0cjxJbmplY3RlZFNjcmlw
dEhvc3Q+IEluamVjdGVkU2NyaXB0SG9zdDo6Y3JlYXRlKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9Qcm9ncmVzc1RyYWNrZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L1Byb2dyZXNzVHJhY2tlci5jcHAKaW5kZXggOGQxY2UxYTE1ODhmYjdhYzQ4ZDVlYTMyZDlkMGVk
NWI0ZmEzMGQ3Mi4uNmM5YjM1YzA5YjVjNzM5MzhhOGZkZDk4MThjOWEwMTA5NTFmNDkyNiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Byb2dyZXNzVHJhY2tlci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL1Byb2dyZXNzVHJhY2tlci5jcHAKQEAgLTM3LDggKzM3LDYg
QEAKICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAjaW5jbHVkZSA8d3RmL0N1cnJlbnRU
aW1lLmg+CiAKLXVzaW5nIHN0ZDo6bWluOwotCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIC8vIEFs
d2F5cyBzdGFydCBwcm9ncmVzcyBhdCBpbml0aWFsUHJvZ3Jlc3NWYWx1ZS4gVGhpcyBoZWxwcyBw
cm92aWRlIGZlZWRiYWNrIGFzIApAQCAtMjMxLDcgKzIyOSw3IEBAIHZvaWQgUHJvZ3Jlc3NUcmFj
a2VyOjppbmNyZW1lbnRQcm9ncmVzcyh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IGNo
YXIqLCBpCiAgICAgZG91YmxlIG1heFByb2dyZXNzVmFsdWUgPSB1c2VDbGFtcGVkTWF4UHJvZ3Jl
c3MgPyAwLjUgOiBmaW5hbFByb2dyZXNzVmFsdWU7CiAgICAgaW5jcmVtZW50ID0gKG1heFByb2dy
ZXNzVmFsdWUgLSBtX3Byb2dyZXNzVmFsdWUpICogcGVyY2VudE9mUmVtYWluaW5nQnl0ZXM7CiAg
ICAgbV9wcm9ncmVzc1ZhbHVlICs9IGluY3JlbWVudDsKLSAgICBtX3Byb2dyZXNzVmFsdWUgPSBt
aW4obV9wcm9ncmVzc1ZhbHVlLCBtYXhQcm9ncmVzc1ZhbHVlKTsKKyAgICBtX3Byb2dyZXNzVmFs
dWUgPSBzdGQ6Om1pbihtX3Byb2dyZXNzVmFsdWUsIG1heFByb2dyZXNzVmFsdWUpOwogICAgIEFT
U0VSVChtX3Byb2dyZXNzVmFsdWUgPj0gaW5pdGlhbFByb2dyZXNzVmFsdWUpOwogICAgIAogICAg
IG1fdG90YWxCeXRlc1JlY2VpdmVkICs9IGJ5dGVzUmVjZWl2ZWQ7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmNwcAppbmRleCAzMTljYjdlNDUyOThiNWIyZTUzYWVl
ZjAyODA5YTU4ZWRiODJhMWVjLi4xYjEzY2YzOWU1NmFlYTJmMWIxMmJhNmY4MmE0YTgwOGQ3Zjg1
ZmI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2Uu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5jcHAKQEAg
LTU2LDggKzU2LDYgQEAKICNpbmNsdWRlICJEaXNrSW1hZ2VDYWNoZUlPUy5oIgogI2VuZGlmCiAK
LXVzaW5nIHN0ZDo6bWF4OwotCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIENhY2hlZEltYWdlOjpD
YWNoZWRJbWFnZShjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlc291cmNlUmVxdWVzdCkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvRE9NV2luZG93LmNwcAppbmRleCA4YzdkMGRhOTRmOTcxNzZiNzFhNzllZDVjZDk3OGUw
NzVmZWQzZDNkLi4wNjRkMmE0ZWY2OWVhZWI0OGEzMWE3MzdlYzMyZmMxODViNDRkNGJkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9ET01XaW5kb3cuY3BwCkBAIC0xMTcsOSArMTE3LDYgQEAKICNpbmNsdWRlICJS
ZXF1ZXN0QW5pbWF0aW9uRnJhbWVDYWxsYmFjay5oIgogI2VuZGlmCiAKLXVzaW5nIHN0ZDo6bWlu
OwotdXNpbmcgc3RkOjptYXg7Ci0KIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgUG9zdE1l
c3NhZ2VUaW1lciA6IHB1YmxpYyBUaW1lckJhc2UgewpAQCAtMzI0LDEyICszMjEsMTIgQEAgRmxv
YXRSZWN0IERPTVdpbmRvdzo6YWRqdXN0V2luZG93UmVjdChQYWdlKiBwYWdlLCBjb25zdCBGbG9h
dFJlY3QmIHBlbmRpbmdDaGFuZ2UKICAgICAgICAgd2luZG93LnNldEhlaWdodChwZW5kaW5nQ2hh
bmdlcy5oZWlnaHQoKSk7CiAKICAgICBGbG9hdFNpemUgbWluaW11bVNpemUgPSBwYWdlLT5jaHJv
bWUoKS5jbGllbnQoKS5taW5pbXVtV2luZG93U2l6ZSgpOwotICAgIHdpbmRvdy5zZXRXaWR0aCht
aW4obWF4KG1pbmltdW1TaXplLndpZHRoKCksIHdpbmRvdy53aWR0aCgpKSwgc2NyZWVuLndpZHRo
KCkpKTsKLSAgICB3aW5kb3cuc2V0SGVpZ2h0KG1pbihtYXgobWluaW11bVNpemUuaGVpZ2h0KCks
IHdpbmRvdy5oZWlnaHQoKSksIHNjcmVlbi5oZWlnaHQoKSkpOworICAgIHdpbmRvdy5zZXRXaWR0
aChzdGQ6Om1pbihzdGQ6Om1heChtaW5pbXVtU2l6ZS53aWR0aCgpLCB3aW5kb3cud2lkdGgoKSks
IHNjcmVlbi53aWR0aCgpKSk7CisgICAgd2luZG93LnNldEhlaWdodChzdGQ6Om1pbihzdGQ6Om1h
eChtaW5pbXVtU2l6ZS5oZWlnaHQoKSwgd2luZG93LmhlaWdodCgpKSwgc2NyZWVuLmhlaWdodCgp
KSk7CiAKICAgICAvLyBDb25zdHJhaW4gdGhlIHdpbmRvdyBwb3NpdGlvbiB3aXRoaW4gdGhlIHZh
bGlkIHNjcmVlbiBhcmVhLgotICAgIHdpbmRvdy5zZXRYKG1heChzY3JlZW4ueCgpLCBtaW4od2lu
ZG93LngoKSwgc2NyZWVuLm1heFgoKSAtIHdpbmRvdy53aWR0aCgpKSkpOwotICAgIHdpbmRvdy5z
ZXRZKG1heChzY3JlZW4ueSgpLCBtaW4od2luZG93LnkoKSwgc2NyZWVuLm1heFkoKSAtIHdpbmRv
dy5oZWlnaHQoKSkpKTsKKyAgICB3aW5kb3cuc2V0WChzdGQ6Om1heChzY3JlZW4ueCgpLCBzdGQ6
Om1pbih3aW5kb3cueCgpLCBzY3JlZW4ubWF4WCgpIC0gd2luZG93LndpZHRoKCkpKSk7CisgICAg
d2luZG93LnNldFkoc3RkOjptYXgoc2NyZWVuLnkoKSwgc3RkOjptaW4od2luZG93LnkoKSwgc2Ny
ZWVuLm1heFkoKSAtIHdpbmRvdy5oZWlnaHQoKSkpKTsKIAogICAgIHJldHVybiB3aW5kb3c7CiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAKaW5kZXggYWE5YzhmMzk1NWJmNTZjZWQ5
NmE5NjQ1NTdlODk0YjYxNGM2MjVhYi4uMWJjNzMyYjVhYWYxN2UyNjczZDliOTVhZDU0ZDIwNWQz
OWY0NzRkZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcApAQCAtMTgyLDcgKzE4
Miw3IEBAIHB1YmxpYzoKIAogICAgIH5NYXhpbXVtRHVyYXRpb25UcmFja2VyKCkKICAgICB7Ci0g
ICAgICAgICptX21heER1cmF0aW9uID0gbWF4KCptX21heER1cmF0aW9uLCBtb25vdG9uaWNhbGx5
SW5jcmVhc2luZ1RpbWUoKSAtIG1fc3RhcnQpOworICAgICAgICAqbV9tYXhEdXJhdGlvbiA9IHN0
ZDo6bWF4KCptX21heER1cmF0aW9uLCBtb25vdG9uaWNhbGx5SW5jcmVhc2luZ1RpbWUoKSAtIG1f
c3RhcnQpOwogICAgIH0KIAogcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvRnJhbWVUcmVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVUcmVlLmNwcAppbmRl
eCAwMjVkMzJlODUzNTA3ODAzNjY5ZjJjNzQ4ZjAwNzZmODg5N2VmYzIyLi5jZWUxMjZkYmFhYjYy
YzVmMTRlZmE5N2FkODhhNGI4OWJlOGMxMjA5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
YWdlL0ZyYW1lVHJlZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVRyZWUuY3Bw
CkBAIC0zMyw4ICszMyw2IEBACiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgogI2luY2x1
ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4KIAotdXNpbmcgc3RkOjpzd2FwOwotCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKIEZyYW1lVHJlZTo6fkZyYW1lVHJlZSgpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Zy
YW1lVmlldy5jcHAKaW5kZXggNmU3ODNhYzYwY2Q5YTFhZGI2MGQzNWJhODkzOTJiZTcxMmFmZmY5
My4uODFiODQxMTE0MjY5YjJmZjFhZjAyYzRmNmM4N2ZhZWQ0ZTIzMjdhMSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvRnJhbWVWaWV3LmNwcApAQCAtMjI4OCw3ICsyMjg4LDcgQEAgZG91YmxlIEZyYW1lVmlldzo6
YWRqdXN0ZWREZWZlcnJlZFJlcGFpbnREZWxheSgpIGNvbnN0CiAgICAgaWYgKCFtX2RlZmVycmVk
UmVwYWludERlbGF5KQogICAgICAgICByZXR1cm4gMDsKICAgICBkb3VibGUgdGltZVNpbmNlTGFz
dFBhaW50ID0gbW9ub3RvbmljYWxseUluY3JlYXNpbmdUaW1lKCkgLSBtX2xhc3RQYWludFRpbWU7
Ci0gICAgcmV0dXJuIG1heCgwLiwgbV9kZWZlcnJlZFJlcGFpbnREZWxheSAtIHRpbWVTaW5jZUxh
c3RQYWludCk7CisgICAgcmV0dXJuIHN0ZDo6bWF4PGRvdWJsZT4oMCwgbV9kZWZlcnJlZFJlcGFp
bnREZWxheSAtIHRpbWVTaW5jZUxhc3RQYWludCk7CiB9CiAgICAgCiB2b2lkIEZyYW1lVmlldzo6
ZGVmZXJyZWRSZXBhaW50VGltZXJGaXJlZChUaW1lcjxGcmFtZVZpZXc+KikKQEAgLTI5MDQsNyAr
MjkwNCw3IEBAIHZvaWQgRnJhbWVWaWV3OjphdXRvU2l6ZUlmRW5hYmxlZCgpCiAgICAgbV9hdXRv
U2l6ZUNvbnRlbnRTaXplID0gY29udGVudHNTaXplKCk7CiAKICAgICBpZiAobV9hdXRvU2l6ZUZp
eGVkTWluaW11bUhlaWdodCkgewotICAgICAgICByZXNpemUobV9hdXRvU2l6ZUNvbnRlbnRTaXpl
LndpZHRoKCksIG1heChtX2F1dG9TaXplRml4ZWRNaW5pbXVtSGVpZ2h0LCBtX2F1dG9TaXplQ29u
dGVudFNpemUuaGVpZ2h0KCkpKTsKKyAgICAgICAgcmVzaXplKG1fYXV0b1NpemVDb250ZW50U2l6
ZS53aWR0aCgpLCBzdGQ6Om1heChtX2F1dG9TaXplRml4ZWRNaW5pbXVtSGVpZ2h0LCBtX2F1dG9T
aXplQ29udGVudFNpemUuaGVpZ2h0KCkpKTsKICAgICAgICAgZG9jdW1lbnQtPnVwZGF0ZUxheW91
dElnbm9yZVBlbmRpbmdTdHlsZXNoZWV0cygpOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGFnZS9QcmludENvbnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9Qcmlu
dENvbnRleHQuY3BwCmluZGV4IGViYzgxODBjZGQ0MmY1NjkyZTI0M2U1OTFmZjIxOGU2ZGVmNzJk
MjUuLjE0Yzc4YTA4OWNmNjQwZTcxMDkwZWVlYzJlOTA2OTM3ZDgwN2M0YTggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvUHJpbnRDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL1ByaW50Q29udGV4dC5jcHAKQEAgLTE4OCw3ICsxODgsNyBAQCBmbG9hdCBQcmludENv
bnRleHQ6OmNvbXB1dGVBdXRvbWF0aWNTY2FsZUZhY3Rvcihjb25zdCBGbG9hdFNpemUmIGF2YWls
YWJsZVBhcGVyUwogCiAgICAgZmxvYXQgbWF4U2hyaW5rVG9GaXRTY2FsZUZhY3RvciA9IDEgLyBw
cmludGluZ01heGltdW1TaHJpbmtGYWN0b3I7CiAgICAgZmxvYXQgc2hyaW5rVG9GaXRTY2FsZUZh
Y3RvciA9ICh1c2VWaWV3V2lkdGggPyBhdmFpbGFibGVQYXBlclNpemUud2lkdGgoKSA6IGF2YWls
YWJsZVBhcGVyU2l6ZS5oZWlnaHQoKSkgLyB2aWV3TG9naWNhbFdpZHRoOwotICAgIHJldHVybiBt
YXgobWF4U2hyaW5rVG9GaXRTY2FsZUZhY3Rvciwgc2hyaW5rVG9GaXRTY2FsZUZhY3Rvcik7Cisg
ICAgcmV0dXJuIHN0ZDo6bWF4KG1heFNocmlua1RvRml0U2NhbGVGYWN0b3IsIHNocmlua1RvRml0
U2NhbGVGYWN0b3IpOwogfQogCiB2b2lkIFByaW50Q29udGV4dDo6c3Bvb2xQYWdlKEdyYXBoaWNz
Q29udGV4dCYgY3R4LCBpbnQgcGFnZU51bWJlciwgZmxvYXQgd2lkdGgpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL1NwYXRpYWxOYXZpZ2F0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvU3BhdGlhbE5hdmlnYXRpb24uY3BwCmluZGV4IDFhMjY4ZjRmNTZlZjQwN2IyZDQ4ZTFm
MTZiM2MzZTE2NDE4NWNmMzIuLjkzZjVmZmI3OTM4ODU2MDZkNWM1YzljNTM2ZmE1NjAwNzg4OGM4
ODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU3BhdGlhbE5hdmlnYXRpb24uY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU3BhdGlhbE5hdmlnYXRpb24uY3BwCkBAIC01NzQs
NyArNTc0LDcgQEAgdm9pZCBlbnRyeUFuZEV4aXRQb2ludHNGb3JEaXJlY3Rpb24oRm9jdXNEaXJl
Y3Rpb24gZGlyZWN0aW9uLCBjb25zdCBMYXlvdXRSZWN0JgogICAgICAgICAgICAgZXhpdFBvaW50
LnNldFkoc3RhcnRpbmdSZWN0Lm1heFkoKSk7CiAgICAgICAgICAgICBlbnRyeVBvaW50LnNldFko
cG90ZW50aWFsUmVjdC55KCkpOwogICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgZXhpdFBv
aW50LnNldFkobWF4KHN0YXJ0aW5nUmVjdC55KCksIHBvdGVudGlhbFJlY3QueSgpKSk7CisgICAg
ICAgICAgICBleGl0UG9pbnQuc2V0WShzdGQ6Om1heChzdGFydGluZ1JlY3QueSgpLCBwb3RlbnRp
YWxSZWN0LnkoKSkpOwogICAgICAgICAgICAgZW50cnlQb2ludC5zZXRZKGV4aXRQb2ludC55KCkp
OwogICAgICAgICB9CiAgICAgICAgIGJyZWFrOwpAQCAtNTg3LDcgKzU4Nyw3IEBAIHZvaWQgZW50
cnlBbmRFeGl0UG9pbnRzRm9yRGlyZWN0aW9uKEZvY3VzRGlyZWN0aW9uIGRpcmVjdGlvbiwgY29u
c3QgTGF5b3V0UmVjdCYKICAgICAgICAgICAgIGV4aXRQb2ludC5zZXRYKHN0YXJ0aW5nUmVjdC5t
YXhYKCkpOwogICAgICAgICAgICAgZW50cnlQb2ludC5zZXRYKHBvdGVudGlhbFJlY3QueCgpKTsK
ICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIGV4aXRQb2ludC5zZXRYKG1heChzdGFydGlu
Z1JlY3QueCgpLCBwb3RlbnRpYWxSZWN0LngoKSkpOworICAgICAgICAgICAgZXhpdFBvaW50LnNl
dFgoc3RkOjptYXgoc3RhcnRpbmdSZWN0LngoKSwgcG90ZW50aWFsUmVjdC54KCkpKTsKICAgICAg
ICAgICAgIGVudHJ5UG9pbnQuc2V0WChleGl0UG9pbnQueCgpKTsKICAgICAgICAgfQogICAgICAg
ICBicmVhazsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvYW5pbWF0aW9uL0NTU1By
b3BlcnR5QW5pbWF0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvYW5pbWF0aW9uL0NTU1By
b3BlcnR5QW5pbWF0aW9uLmNwcAppbmRleCA3YWQwNWQ1OGFlYTVhNjFkNGQzZDExMzA3ZWYyOTEz
MzcwNjkxZGZmLi5mOWExYWE0MDAzNzc3NGU5OGYzNWQzNGU5ZDJjNzhmZTA0NTM5ZDAwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2FuaW1hdGlvbi9DU1NQcm9wZXJ0eUFuaW1hdGlv
bi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9hbmltYXRpb24vQ1NTUHJvcGVydHlBbmlt
YXRpb24uY3BwCkBAIC0xNzYsNyArMTc2LDcgQEAgc3RhdGljIGlubGluZSBGaWx0ZXJPcGVyYXRp
b25zIGJsZW5kRmlsdGVyT3BlcmF0aW9ucyhjb25zdCBBbmltYXRpb25CYXNlKiBhbmltLAogICAg
IEZpbHRlck9wZXJhdGlvbnMgcmVzdWx0OwogICAgIHNpemVfdCBmcm9tU2l6ZSA9IGZyb20ub3Bl
cmF0aW9ucygpLnNpemUoKTsKICAgICBzaXplX3QgdG9TaXplID0gdG8ub3BlcmF0aW9ucygpLnNp
emUoKTsKLSAgICBzaXplX3Qgc2l6ZSA9IG1heChmcm9tU2l6ZSwgdG9TaXplKTsKKyAgICBzaXpl
X3Qgc2l6ZSA9IHN0ZDo6bWF4KGZyb21TaXplLCB0b1NpemUpOwogICAgIGZvciAoc2l6ZV90IGkg
PSAwOyBpIDwgc2l6ZTsgaSsrKSB7CiAgICAgICAgIFJlZlB0cjxGaWx0ZXJPcGVyYXRpb24+IGZy
b21PcCA9IChpIDwgZnJvbVNpemUpID8gZnJvbS5vcGVyYXRpb25zKClbaV0uZ2V0KCkgOiAwOwog
ICAgICAgICBSZWZQdHI8RmlsdGVyT3BlcmF0aW9uPiB0b09wID0gKGkgPCB0b1NpemUpID8gdG8u
b3BlcmF0aW9ucygpW2ldLmdldCgpIDogMDsKQEAgLTY5OSw3ICs2OTksNyBAQCBwcml2YXRlOgog
CiAgICAgICAgIE93blB0cjxTaGFkb3dEYXRhPiBuZXdTaGFkb3dEYXRhOwogCi0gICAgICAgIGlu
dCBtYXhMZW5ndGggPSBtYXgoZnJvbUxlbmd0aCwgdG9MZW5ndGgpOworICAgICAgICBpbnQgbWF4
TGVuZ3RoID0gc3RkOjptYXgoZnJvbUxlbmd0aCwgdG9MZW5ndGgpOwogICAgICAgICBmb3IgKGlu
dCBpID0gMDsgaSA8IG1heExlbmd0aDsgKytpKSB7CiAgICAgICAgICAgICBjb25zdCBTaGFkb3dE
YXRhKiBmcm9tU2hhZG93ID0gaSA8IGZyb21MZW5ndGggPyBmcm9tU2hhZG93c1tpXSA6IDA7CiAg
ICAgICAgICAgICBjb25zdCBTaGFkb3dEYXRhKiB0b1NoYWRvdyA9IGkgPCB0b0xlbmd0aCA/IHRv
U2hhZG93c1tpXSA6IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lZmwv
UmVuZGVyVGhlbWVFZmwuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZWZsL1JlbmRlclRo
ZW1lRWZsLmNwcAppbmRleCAwMDllMTMzMjZlZDU5MDIzMDUzMjQ1ZmQxYjFkM2NiNWYxY2RjYjQ3
Li4xYTc3MDkwODM1NjViMDJiZjUzMDBiMDU2MmU3NmFiODAyN2Q4NTczIDEwMDc1NQotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lZmwvUmVuZGVyVGhlbWVFZmwuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2VmbC9SZW5kZXJUaGVtZUVmbC5jcHAKQEAgLTg4MSw3ICs4ODEs
NyBAQCB2b2lkIFJlbmRlclRoZW1lRWZsOjphZGp1c3RNZW51TGlzdEJ1dHRvblN0eWxlKFN0eWxl
UmVzb2x2ZXIqIHN0eWxlUmVzb2x2ZXIsIFJlbgogCiAgICAgLy8gQ2FsY3VsYXRlIG1pbi1oZWln
aHQgb2YgdGhlIDxzZWxlY3Q+IGVsZW1lbnQuCiAgICAgaW50IG1pbkhlaWdodCA9IHN0eWxlLT5m
b250TWV0cmljcygpLmhlaWdodCgpOwotICAgIG1pbkhlaWdodCA9IG1heChtaW5IZWlnaHQsIGRy
b3BEb3duQm94TWluSGVpZ2h0KTsKKyAgICBtaW5IZWlnaHQgPSBzdGQ6Om1heChtaW5IZWlnaHQs
IGRyb3BEb3duQm94TWluSGVpZ2h0KTsKICAgICBzdHlsZS0+c2V0TWluSGVpZ2h0KExlbmd0aCht
aW5IZWlnaHQsIEZpeGVkKSk7CiAKICAgICBhZGp1c3RNZW51TGlzdFN0eWxlKHN0eWxlUmVzb2x2
ZXIsIHN0eWxlLCBlbGVtZW50KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0Zsb2F0UmVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9GbG9hdFJlY3QuY3BwCmluZGV4IGFkNGMyZWJiZWI3MmU2NjVkMGE3ZDZiM2EyNzcxY2ZiMjk4
ZTIzMDkuLjJmYWU0ZTdiNDMyNWRlZTE0NTMzMTJkZWFkODVlYzQ4M2RlMTc3MjUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Zsb2F0UmVjdC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRmxvYXRSZWN0LmNwcApAQCAtMzQsMTIg
KzM0LDExIEBACiAjaW5jbHVkZSA8d3RmL01hdGhFeHRyYXMuaD4KICNpbmNsdWRlIDx3dGYvUHJp
bnRTdHJlYW0uaD4KIAotdXNpbmcgc3RkOjptYXg7Ci11c2luZyBzdGQ6Om1pbjsKLQogbmFtZXNw
YWNlIFdlYkNvcmUgewogCi1GbG9hdFJlY3Q6OkZsb2F0UmVjdChjb25zdCBJbnRSZWN0JiByKSA6
IG1fbG9jYXRpb24oci5sb2NhdGlvbigpKSwgbV9zaXplKHIuc2l6ZSgpKQorRmxvYXRSZWN0OjpG
bG9hdFJlY3QoY29uc3QgSW50UmVjdCYgcikKKyAgICA6IG1fbG9jYXRpb24oci5sb2NhdGlvbigp
KQorICAgICwgbV9zaXplKHIuc2l6ZSgpKQogewogfQogCkBAIC03OCwxMCArNzcsMTAgQEAgYm9v
bCBGbG9hdFJlY3Q6OmNvbnRhaW5zKGNvbnN0IEZsb2F0UG9pbnQmIHBvaW50LCBDb250YWluc01v
ZGUgY29udGFpbnNNb2RlKSBjb24KIAogdm9pZCBGbG9hdFJlY3Q6OmludGVyc2VjdChjb25zdCBG
bG9hdFJlY3QmIG90aGVyKQogewotICAgIGZsb2F0IGwgPSBtYXgoeCgpLCBvdGhlci54KCkpOwot
ICAgIGZsb2F0IHQgPSBtYXgoeSgpLCBvdGhlci55KCkpOwotICAgIGZsb2F0IHIgPSBtaW4obWF4
WCgpLCBvdGhlci5tYXhYKCkpOwotICAgIGZsb2F0IGIgPSBtaW4obWF4WSgpLCBvdGhlci5tYXhZ
KCkpOworICAgIGZsb2F0IGwgPSBzdGQ6Om1heCh4KCksIG90aGVyLngoKSk7CisgICAgZmxvYXQg
dCA9IHN0ZDo6bWF4KHkoKSwgb3RoZXIueSgpKTsKKyAgICBmbG9hdCByID0gc3RkOjptaW4obWF4
WCgpLCBvdGhlci5tYXhYKCkpOworICAgIGZsb2F0IGIgPSBzdGQ6Om1pbihtYXhZKCksIG90aGVy
Lm1heFkoKSk7CiAKICAgICAvLyBSZXR1cm4gYSBjbGVhbiBlbXB0eSByZWN0YW5nbGUgZm9yIG5v
bi1pbnRlcnNlY3RpbmcgY2FzZXMuCiAgICAgaWYgKGwgPj0gciB8fCB0ID49IGIpIHsKQEAgLTEw
OSwxMCArMTA4LDEwIEBAIHZvaWQgRmxvYXRSZWN0Ojp1bml0ZShjb25zdCBGbG9hdFJlY3QmIG90
aGVyKQogCiB2b2lkIEZsb2F0UmVjdDo6dW5pdGVFdmVuSWZFbXB0eShjb25zdCBGbG9hdFJlY3Qm
IG90aGVyKQogewotICAgIGZsb2F0IG1pblggPSBtaW4oeCgpLCBvdGhlci54KCkpOwotICAgIGZs
b2F0IG1pblkgPSBtaW4oeSgpLCBvdGhlci55KCkpOwotICAgIGZsb2F0IG1heFggPSBtYXgodGhp
cy0+bWF4WCgpLCBvdGhlci5tYXhYKCkpOwotICAgIGZsb2F0IG1heFkgPSBtYXgodGhpcy0+bWF4
WSgpLCBvdGhlci5tYXhZKCkpOworICAgIGZsb2F0IG1pblggPSBzdGQ6Om1pbih4KCksIG90aGVy
LngoKSk7CisgICAgZmxvYXQgbWluWSA9IHN0ZDo6bWluKHkoKSwgb3RoZXIueSgpKTsKKyAgICBm
bG9hdCBtYXhYID0gc3RkOjptYXgodGhpcy0+bWF4WCgpLCBvdGhlci5tYXhYKCkpOworICAgIGZs
b2F0IG1heFkgPSBzdGQ6Om1heCh0aGlzLT5tYXhZKCksIG90aGVyLm1heFkoKSk7CiAKICAgICBz
ZXRMb2NhdGlvbkFuZFNpemVGcm9tRWRnZXMobWluWCwgbWluWSwgbWF4WCwgbWF4WSk7CiB9CkBA
IC0xMzIsMTAgKzEzMSwxMCBAQCB2b2lkIEZsb2F0UmVjdDo6dW5pdGVJZk5vblplcm8oY29uc3Qg
RmxvYXRSZWN0JiBvdGhlcikKIAogdm9pZCBGbG9hdFJlY3Q6OmV4dGVuZChjb25zdCBGbG9hdFBv
aW50JiBwKQogewotICAgIGZsb2F0IG1pblggPSBtaW4oeCgpLCBwLngoKSk7Ci0gICAgZmxvYXQg
bWluWSA9IG1pbih5KCksIHAueSgpKTsKLSAgICBmbG9hdCBtYXhYID0gbWF4KHRoaXMtPm1heFgo
KSwgcC54KCkpOwotICAgIGZsb2F0IG1heFkgPSBtYXgodGhpcy0+bWF4WSgpLCBwLnkoKSk7Cisg
ICAgZmxvYXQgbWluWCA9IHN0ZDo6bWluKHgoKSwgcC54KCkpOworICAgIGZsb2F0IG1pblkgPSBz
dGQ6Om1pbih5KCksIHAueSgpKTsKKyAgICBmbG9hdCBtYXhYID0gc3RkOjptYXgodGhpcy0+bWF4
WCgpLCBwLngoKSk7CisgICAgZmxvYXQgbWF4WSA9IHN0ZDo6bWF4KHRoaXMtPm1heFkoKSwgcC55
KCkpOwogCiAgICAgc2V0TG9jYXRpb25BbmRTaXplRnJvbUVkZ2VzKG1pblgsIG1pblksIG1heFgs
IG1heFkpOwogfQpAQCAtMTYxLDEwICsxNjAsMTAgQEAgRmxvYXRSZWN0IHVuaW9uUmVjdChjb25z
dCBWZWN0b3I8RmxvYXRSZWN0PiYgcmVjdHMpCiAKIHZvaWQgRmxvYXRSZWN0OjpmaXRUb1BvaW50
cyhjb25zdCBGbG9hdFBvaW50JiBwMCwgY29uc3QgRmxvYXRQb2ludCYgcDEpCiB7Ci0gICAgZmxv
YXQgbGVmdCA9IG1pbihwMC54KCksIHAxLngoKSk7Ci0gICAgZmxvYXQgdG9wID0gbWluKHAwLnko
KSwgcDEueSgpKTsKLSAgICBmbG9hdCByaWdodCA9IG1heChwMC54KCksIHAxLngoKSk7Ci0gICAg
ZmxvYXQgYm90dG9tID0gbWF4KHAwLnkoKSwgcDEueSgpKTsKKyAgICBmbG9hdCBsZWZ0ID0gc3Rk
OjptaW4ocDAueCgpLCBwMS54KCkpOworICAgIGZsb2F0IHRvcCA9IHN0ZDo6bWluKHAwLnkoKSwg
cDEueSgpKTsKKyAgICBmbG9hdCByaWdodCA9IHN0ZDo6bWF4KHAwLngoKSwgcDEueCgpKTsKKyAg
ICBmbG9hdCBib3R0b20gPSBzdGQ6Om1heChwMC55KCksIHAxLnkoKSk7CiAKICAgICBzZXRMb2Nh
dGlvbkFuZFNpemVGcm9tRWRnZXMobGVmdCwgdG9wLCByaWdodCwgYm90dG9tKTsKIH0KQEAgLTE3
NSwyNSArMTc0LDI1IEBAIG5hbWVzcGFjZSB7CiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KIFQgbWlu
Myhjb25zdCBUJiB2MSwgY29uc3QgVCYgdjIsIGNvbnN0IFQmIHYzKQogewotICAgIHJldHVybiBt
aW4obWluKHYxLCB2MiksIHYzKTsKKyAgICByZXR1cm4gc3RkOjptaW4oc3RkOjptaW4odjEsIHYy
KSwgdjMpOwogfQogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KIFQgbWF4Myhjb25zdCBUJiB2MSwg
Y29uc3QgVCYgdjIsIGNvbnN0IFQmIHYzKQogewotICAgIHJldHVybiBtYXgobWF4KHYxLCB2Miks
IHYzKTsKKyAgICByZXR1cm4gc3RkOjptYXgoc3RkOjptYXgodjEsIHYyKSwgdjMpOwogfQogCiB0
ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KIFQgbWluNChjb25zdCBUJiB2MSwgY29uc3QgVCYgdjIsIGNv
bnN0IFQmIHYzLCBjb25zdCBUJiB2NCkKIHsKLSAgICByZXR1cm4gbWluKG1pbih2MSwgdjIpLCBt
aW4odjMsIHY0KSk7CisgICAgcmV0dXJuIHN0ZDo6bWluKHN0ZDo6bWluKHYxLCB2MiksIHN0ZDo6
bWluKHYzLCB2NCkpOwogfQogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KIFQgbWF4NChjb25zdCBU
JiB2MSwgY29uc3QgVCYgdjIsIGNvbnN0IFQmIHYzLCBjb25zdCBUJiB2NCkKIHsKLSAgICByZXR1
cm4gbWF4KG1heCh2MSwgdjIpLCBtYXgodjMsIHY0KSk7CisgICAgcmV0dXJuIHN0ZDo6bWF4KHN0
ZDo6bWF4KHYxLCB2MiksIHN0ZDo6bWF4KHYzLCB2NCkpOwogfQogCiB9IC8vIGFub255bW91cyBu
YW1lc3BhY2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ds
eXBoUGFnZVRyZWVOb2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ds
eXBoUGFnZVRyZWVOb2RlLmNwcAppbmRleCBhMzZmMzNiYWZmMDY0ZGZhYTJiOGY1Y2EwM2MzMTBi
ZDgyNDY3ZGY0Li42NDU0ZTczZTc2ZTlkYjhmM2JlYTNhNGFmMjNjNDdlNzkzY2RjYjBhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HbHlwaFBhZ2VUcmVlTm9k
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR2x5cGhQYWdlVHJl
ZU5vZGUuY3BwCkBAIC00Myw5ICs0Myw2IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotdXNp
bmcgc3RkOjptYXg7Ci11c2luZyBzdGQ6Om1pbjsKLQogSGFzaE1hcDxpbnQsIEdseXBoUGFnZVRy
ZWVOb2RlKj4qIEdseXBoUGFnZVRyZWVOb2RlOjpyb290cyA9IDA7CiBHbHlwaFBhZ2VUcmVlTm9k
ZSogR2x5cGhQYWdlVHJlZU5vZGU6OnBhZ2VaZXJvUm9vdCA9IDA7CiAKQEAgLTIyOSw4ICsyMjYs
OCBAQCB2b2lkIEdseXBoUGFnZVRyZWVOb2RlOjppbml0aWFsaXplUGFnZShjb25zdCBGb250RGF0
YSogZm9udERhdGEsIHVuc2lnbmVkIHBhZ2VOdQogICAgICAgICAgICAgICAgICAgICBjb25zdCBG
b250RGF0YVJhbmdlJiByYW5nZSA9IHNlZ21lbnRlZEZvbnREYXRhLT5yYW5nZUF0KGkpOwogICAg
ICAgICAgICAgICAgICAgICAvLyBhbGwgdGhpcyBjYXN0aW5nIGlzIHRvIGVuc3VyZSBhbGwgdGhl
IHBhcmFtZXRlcnMgdG8gbWluIGFuZCBtYXggaGF2ZSB0aGUgc2FtZSB0eXBlLAogICAgICAgICAg
ICAgICAgICAgICAvLyB0byBhdm9pZCBhbWJpZ3VvdXMgdGVtcGxhdGUgcGFyYW1ldGVyIGVycm9y
cyBvbiBXaW5kb3dzCi0gICAgICAgICAgICAgICAgICAgIGludCBmcm9tID0gbWF4KDAsIHN0YXRp
Y19jYXN0PGludD4ocmFuZ2UuZnJvbSgpKSAtIHN0YXRpY19jYXN0PGludD4oc3RhcnQpKTsKLSAg
ICAgICAgICAgICAgICAgICAgaW50IHRvID0gMSArIG1pbihzdGF0aWNfY2FzdDxpbnQ+KHJhbmdl
LnRvKCkpIC0gc3RhdGljX2Nhc3Q8aW50PihzdGFydCksIHN0YXRpY19jYXN0PGludD4oR2x5cGhQ
YWdlOjpzaXplKSAtIDEpOworICAgICAgICAgICAgICAgICAgICBpbnQgZnJvbSA9IHN0ZDo6bWF4
KDAsIHN0YXRpY19jYXN0PGludD4ocmFuZ2UuZnJvbSgpKSAtIHN0YXRpY19jYXN0PGludD4oc3Rh
cnQpKTsKKyAgICAgICAgICAgICAgICAgICAgaW50IHRvID0gMSArIHN0ZDo6bWluKHN0YXRpY19j
YXN0PGludD4ocmFuZ2UudG8oKSkgLSBzdGF0aWNfY2FzdDxpbnQ+KHN0YXJ0KSwgc3RhdGljX2Nh
c3Q8aW50PihHbHlwaFBhZ2U6OnNpemUpIC0gMSk7CiAgICAgICAgICAgICAgICAgICAgIGlmIChm
cm9tIDwgc3RhdGljX2Nhc3Q8aW50PihHbHlwaFBhZ2U6OnNpemUpICYmIHRvID4gMCkgewogICAg
ICAgICAgICAgICAgICAgICAgICAgaWYgKGhhdmVHbHlwaHMgJiYgIXNjcmF0Y2hQYWdlKSB7CiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgc2NyYXRjaFBhZ2UgPSBHbHlwaFBhZ2U6OmNyZWF0
ZUZvck1peGVkRm9udERhdGEodGhpcyk7CkBAIC0zMzksNyArMzM2LDcgQEAgR2x5cGhQYWdlVHJl
ZU5vZGUqIEdseXBoUGFnZVRyZWVOb2RlOjpnZXRDaGlsZChjb25zdCBGb250RGF0YSogZm9udERh
dGEsIHVuc2lnbmUKICNlbmRpZgogICAgIGlmIChmb250RGF0YSkgewogICAgICAgICBtX2NoaWxk
cmVuLnNldChmb250RGF0YSwgYWRvcHRQdHIoY2hpbGQpKTsKLSAgICAgICAgZm9udERhdGEtPnNl
dE1heEdseXBoUGFnZVRyZWVMZXZlbChtYXgoZm9udERhdGEtPm1heEdseXBoUGFnZVRyZWVMZXZl
bCgpLCBjaGlsZC0+bV9sZXZlbCkpOworICAgICAgICBmb250RGF0YS0+c2V0TWF4R2x5cGhQYWdl
VHJlZUxldmVsKHN0ZDo6bWF4KGZvbnREYXRhLT5tYXhHbHlwaFBhZ2VUcmVlTGV2ZWwoKSwgY2hp
bGQtPm1fbGV2ZWwpKTsKICAgICB9IGVsc2UgewogICAgICAgICBtX3N5c3RlbUZhbGxiYWNrQ2hp
bGQgPSBhZG9wdFB0cihjaGlsZCk7CiAgICAgICAgIGNoaWxkLT5tX2lzU3lzdGVtRmFsbGJhY2sg
PSB0cnVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW50
UmVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbnRSZWN0LmNwcApp
bmRleCBjZGEwZWMzYjA2ZGJlMDE1OWQzMjM2ODc2ZmM5MDM5MGRlYWM1MjcyLi4wZThmZjk3ODUx
YjRiNDliZjk4OTY1MWM0NWI4M2ZlNGUxZmQ3Mjk2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9JbnRSZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9JbnRSZWN0LmNwcApAQCAtMzEsOSArMzEsNiBAQAogI2luY2x1ZGUgPGFs
Z29yaXRobT4KICNpbmNsdWRlIDx3dGYvUHJpbnRTdHJlYW0uaD4KIAotdXNpbmcgc3RkOjptYXg7
Ci11c2luZyBzdGQ6Om1pbjsKLQogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBJbnRSZWN0OjpJbnRS
ZWN0KGNvbnN0IEZsb2F0UmVjdCYgcikKQEAgLTY0LDEwICs2MSwxMCBAQCBib29sIEludFJlY3Q6
OmNvbnRhaW5zKGNvbnN0IEludFJlY3QmIG90aGVyKSBjb25zdAogCiB2b2lkIEludFJlY3Q6Omlu
dGVyc2VjdChjb25zdCBJbnRSZWN0JiBvdGhlcikKIHsKLSAgICBpbnQgbCA9IG1heCh4KCksIG90
aGVyLngoKSk7Ci0gICAgaW50IHQgPSBtYXgoeSgpLCBvdGhlci55KCkpOwotICAgIGludCByID0g
bWluKG1heFgoKSwgb3RoZXIubWF4WCgpKTsKLSAgICBpbnQgYiA9IG1pbihtYXhZKCksIG90aGVy
Lm1heFkoKSk7CisgICAgaW50IGwgPSBzdGQ6Om1heCh4KCksIG90aGVyLngoKSk7CisgICAgaW50
IHQgPSBzdGQ6Om1heCh5KCksIG90aGVyLnkoKSk7CisgICAgaW50IHIgPSBzdGQ6Om1pbihtYXhY
KCksIG90aGVyLm1heFgoKSk7CisgICAgaW50IGIgPSBzdGQ6Om1pbihtYXhZKCksIG90aGVyLm1h
eFkoKSk7CiAKICAgICAvLyBSZXR1cm4gYSBjbGVhbiBlbXB0eSByZWN0YW5nbGUgZm9yIG5vbi1p
bnRlcnNlY3RpbmcgY2FzZXMuCiAgICAgaWYgKGwgPj0gciB8fCB0ID49IGIpIHsKQEAgLTkzLDEw
ICs5MCwxMCBAQCB2b2lkIEludFJlY3Q6OnVuaXRlKGNvbnN0IEludFJlY3QmIG90aGVyKQogICAg
ICAgICByZXR1cm47CiAgICAgfQogCi0gICAgaW50IGwgPSBtaW4oeCgpLCBvdGhlci54KCkpOwot
ICAgIGludCB0ID0gbWluKHkoKSwgb3RoZXIueSgpKTsKLSAgICBpbnQgciA9IG1heChtYXhYKCks
IG90aGVyLm1heFgoKSk7Ci0gICAgaW50IGIgPSBtYXgobWF4WSgpLCBvdGhlci5tYXhZKCkpOwor
ICAgIGludCBsID0gc3RkOjptaW4oeCgpLCBvdGhlci54KCkpOworICAgIGludCB0ID0gc3RkOjpt
aW4oeSgpLCBvdGhlci55KCkpOworICAgIGludCByID0gc3RkOjptYXgobWF4WCgpLCBvdGhlci5t
YXhYKCkpOworICAgIGludCBiID0gc3RkOjptYXgobWF4WSgpLCBvdGhlci5tYXhZKCkpOwogCiAg
ICAgbV9sb2NhdGlvbi5zZXRYKGwpOwogICAgIG1fbG9jYXRpb24uc2V0WSh0KTsKQEAgLTExNCwx
MCArMTExLDEwIEBAIHZvaWQgSW50UmVjdDo6dW5pdGVJZk5vblplcm8oY29uc3QgSW50UmVjdCYg
b3RoZXIpCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBpbnQgbGVmdCA9IG1pbih4KCks
IG90aGVyLngoKSk7Ci0gICAgaW50IHRvcCA9IG1pbih5KCksIG90aGVyLnkoKSk7Ci0gICAgaW50
IHJpZ2h0ID0gbWF4KG1heFgoKSwgb3RoZXIubWF4WCgpKTsKLSAgICBpbnQgYm90dG9tID0gbWF4
KG1heFkoKSwgb3RoZXIubWF4WSgpKTsKKyAgICBpbnQgbGVmdCA9IHN0ZDo6bWluKHgoKSwgb3Ro
ZXIueCgpKTsKKyAgICBpbnQgdG9wID0gc3RkOjptaW4oeSgpLCBvdGhlci55KCkpOworICAgIGlu
dCByaWdodCA9IHN0ZDo6bWF4KG1heFgoKSwgb3RoZXIubWF4WCgpKTsKKyAgICBpbnQgYm90dG9t
ID0gc3RkOjptYXgobWF4WSgpLCBvdGhlci5tYXhZKCkpOwogCiAgICAgbV9sb2NhdGlvbi5zZXRY
KGxlZnQpOwogICAgIG1fbG9jYXRpb24uc2V0WSh0b3ApOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTGF5b3V0UmVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9MYXlvdXRSZWN0LmNwcAppbmRleCAxYTViOTg5NDg0YjM3YjU5OTZm
MTE4Y2NkNjJlNDBiZjFhMzFkNWJlLi5kY2UwZTEyZGIxNjMxZDdmODRkNTZiMGE2NTI4OGI4MTIx
YTU2NWJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9MYXlv
dXRSZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9MYXlvdXRS
ZWN0LmNwcApAQCAtMzMsOSArMzMsNiBAQAogCiAjaW5jbHVkZSA8YWxnb3JpdGhtPgogCi11c2lu
ZyBzdGQ6Om1heDsKLXVzaW5nIHN0ZDo6bWluOwotCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIExh
eW91dFJlY3Q6OkxheW91dFJlY3QoY29uc3QgRmxvYXRSZWN0JiByKQpAQCAtNjAsOCArNTcsOCBA
QCBib29sIExheW91dFJlY3Q6OmNvbnRhaW5zKGNvbnN0IExheW91dFJlY3QmIG90aGVyKSBjb25z
dAogCiB2b2lkIExheW91dFJlY3Q6OmludGVyc2VjdChjb25zdCBMYXlvdXRSZWN0JiBvdGhlcikK
IHsKLSAgICBMYXlvdXRQb2ludCBuZXdMb2NhdGlvbihtYXgoeCgpLCBvdGhlci54KCkpLCBtYXgo
eSgpLCBvdGhlci55KCkpKTsKLSAgICBMYXlvdXRQb2ludCBuZXdNYXhQb2ludChtaW4obWF4WCgp
LCBvdGhlci5tYXhYKCkpLCBtaW4obWF4WSgpLCBvdGhlci5tYXhZKCkpKTsKKyAgICBMYXlvdXRQ
b2ludCBuZXdMb2NhdGlvbihzdGQ6Om1heCh4KCksIG90aGVyLngoKSksIHN0ZDo6bWF4KHkoKSwg
b3RoZXIueSgpKSk7CisgICAgTGF5b3V0UG9pbnQgbmV3TWF4UG9pbnQoc3RkOjptaW4obWF4WCgp
LCBvdGhlci5tYXhYKCkpLCBzdGQ6Om1pbihtYXhZKCksIG90aGVyLm1heFkoKSkpOwogCiAgICAg
Ly8gUmV0dXJuIGEgY2xlYW4gZW1wdHkgcmVjdGFuZ2xlIGZvciBub24taW50ZXJzZWN0aW5nIGNh
c2VzLgogICAgIGlmIChuZXdMb2NhdGlvbi54KCkgPj0gbmV3TWF4UG9pbnQueCgpIHx8IG5ld0xv
Y2F0aW9uLnkoKSA+PSBuZXdNYXhQb2ludC55KCkpIHsKQEAgLTgzLDggKzgwLDggQEAgdm9pZCBM
YXlvdXRSZWN0Ojp1bml0ZShjb25zdCBMYXlvdXRSZWN0JiBvdGhlcikKICAgICAgICAgcmV0dXJu
OwogICAgIH0KIAotICAgIExheW91dFBvaW50IG5ld0xvY2F0aW9uKG1pbih4KCksIG90aGVyLngo
KSksIG1pbih5KCksIG90aGVyLnkoKSkpOwotICAgIExheW91dFBvaW50IG5ld01heFBvaW50KG1h
eChtYXhYKCksIG90aGVyLm1heFgoKSksIG1heChtYXhZKCksIG90aGVyLm1heFkoKSkpOworICAg
IExheW91dFBvaW50IG5ld0xvY2F0aW9uKHN0ZDo6bWluKHgoKSwgb3RoZXIueCgpKSwgc3RkOjpt
aW4oeSgpLCBvdGhlci55KCkpKTsKKyAgICBMYXlvdXRQb2ludCBuZXdNYXhQb2ludChzdGQ6Om1h
eChtYXhYKCksIG90aGVyLm1heFgoKSksIHN0ZDo6bWF4KG1heFkoKSwgb3RoZXIubWF4WSgpKSk7
CiAKICAgICBtX2xvY2F0aW9uID0gbmV3TG9jYXRpb247CiAgICAgbV9zaXplID0gbmV3TWF4UG9p
bnQgLSBuZXdMb2NhdGlvbjsKQEAgLTEwMCw4ICs5Nyw4IEBAIHZvaWQgTGF5b3V0UmVjdDo6dW5p
dGVJZk5vblplcm8oY29uc3QgTGF5b3V0UmVjdCYgb3RoZXIpCiAgICAgICAgIHJldHVybjsKICAg
ICB9CiAKLSAgICBMYXlvdXRQb2ludCBuZXdMb2NhdGlvbihtaW4oeCgpLCBvdGhlci54KCkpLCBt
aW4oeSgpLCBvdGhlci55KCkpKTsKLSAgICBMYXlvdXRQb2ludCBuZXdNYXhQb2ludChtYXgobWF4
WCgpLCBvdGhlci5tYXhYKCkpLCBtYXgobWF4WSgpLCBvdGhlci5tYXhZKCkpKTsKKyAgICBMYXlv
dXRQb2ludCBuZXdMb2NhdGlvbihzdGQ6Om1pbih4KCksIG90aGVyLngoKSksIHN0ZDo6bWluKHko
KSwgb3RoZXIueSgpKSk7CisgICAgTGF5b3V0UG9pbnQgbmV3TWF4UG9pbnQoc3RkOjptYXgobWF4
WCgpLCBvdGhlci5tYXhYKCkpLCBzdGQ6Om1heChtYXhZKCksIG90aGVyLm1heFkoKSkpOwogCiAg
ICAgbV9sb2NhdGlvbiA9IG5ld0xvY2F0aW9uOwogICAgIG1fc2l6ZSA9IG5ld01heFBvaW50IC0g
bmV3TG9jYXRpb247CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9maWx0ZXJzL0ZFTW9ycGhvbG9neS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9maWx0ZXJzL0ZFTW9ycGhvbG9neS5jcHAKaW5kZXggNmIwMjhlZTM5Mzc2OTI5ZGRlZWI3
ZjM0YWMxNDI3ODI2ZmQyZTZiYy4uMmQzOWU2OTRjYTZkZmJmNGZhNTc0Yzk1MjU4MmI2NWYwNDc3
MTEzOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVy
cy9GRU1vcnBob2xvZ3kuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2ZpbHRlcnMvRkVNb3JwaG9sb2d5LmNwcApAQCAtMzQsOSArMzQsNiBAQAogI2luY2x1ZGUgPHd0
Zi9QYXJhbGxlbEpvYnMuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAKLXVzaW5nIHN0ZDo6
bWluOwotdXNpbmcgc3RkOjptYXg7Ci0KIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogRkVNb3JwaG9s
b2d5OjpGRU1vcnBob2xvZ3koRmlsdGVyKiBmaWx0ZXIsIE1vcnBob2xvZ3lPcGVyYXRvclR5cGUg
dHlwZSwgZmxvYXQgcmFkaXVzWCwgZmxvYXQgcmFkaXVzWSkKQEAgLTExNiw4ICsxMTMsOCBAQCB2
b2lkIEZFTW9ycGhvbG9neTo6cGxhdGZvcm1BcHBseUdlbmVyaWMoUGFpbnRpbmdEYXRhKiBwYWlu
dGluZ0RhdGEsIGludCB5U3RhcnQsCiAKICAgICBWZWN0b3I8dW5zaWduZWQgY2hhcj4gZXh0cmVt
YTsKICAgICBmb3IgKGludCB5ID0geVN0YXJ0OyB5IDwgeUVuZDsgKyt5KSB7Ci0gICAgICAgIGlu
dCBleHRyZW1hU3RhcnRZID0gbWF4KDAsIHkgLSByYWRpdXNZKTsKLSAgICAgICAgaW50IGV4dHJl
bWFFbmRZID0gbWluKGhlaWdodCAtIDEsIHkgKyByYWRpdXNZKTsKKyAgICAgICAgaW50IGV4dHJl
bWFTdGFydFkgPSBzdGQ6Om1heCgwLCB5IC0gcmFkaXVzWSk7CisgICAgICAgIGludCBleHRyZW1h
RW5kWSA9IHN0ZDo6bWluKGhlaWdodCAtIDEsIHkgKyByYWRpdXNZKTsKICAgICAgICAgZm9yICh1
bnNpZ25lZCBpbnQgY2xyQ2hhbm5lbCA9IDA7IGNsckNoYW5uZWwgPCA0OyArK2NsckNoYW5uZWwp
IHsKICAgICAgICAgICAgIGV4dHJlbWEuY2xlYXIoKTsKICAgICAgICAgICAgIC8vIENvbXB1dGUg
ZXh0cmVtYXMgZm9yIGVhY2ggY29sdW1ucwpAQCAtMTM2LDcgKzEzMyw3IEBAIHZvaWQgRkVNb3Jw
aG9sb2d5OjpwbGF0Zm9ybUFwcGx5R2VuZXJpYyhQYWludGluZ0RhdGEqIHBhaW50aW5nRGF0YSwg
aW50IHlTdGFydCwKIAogICAgICAgICAgICAgLy8gS2VybmVsIGlzIGZpbGxlZCwgZ2V0IGV4dHJl
bWEgb2YgbmV4dCBjb2x1bW4KICAgICAgICAgICAgIGZvciAoaW50IHggPSAwOyB4IDwgd2lkdGg7
ICsreCkgewotICAgICAgICAgICAgICAgIGNvbnN0IGludCBlbmRYID0gbWluKHggKyByYWRpdXNY
LCB3aWR0aCAtIDEpOworICAgICAgICAgICAgICAgIGNvbnN0IGludCBlbmRYID0gc3RkOjptaW4o
eCArIHJhZGl1c1gsIHdpZHRoIC0gMSk7CiAgICAgICAgICAgICAgICAgdW5zaWduZWQgY2hhciBj
b2x1bW5FeHRyZW1hID0gc3JjUGl4ZWxBcnJheS0+aXRlbShleHRyZW1hU3RhcnRZICogZWZmZWN0
V2lkdGggKyBlbmRYICogNCArIGNsckNoYW5uZWwpOwogICAgICAgICAgICAgICAgIGZvciAoaW50
IGkgPSBleHRyZW1hU3RhcnRZICsgMTsgaSA8PSBleHRyZW1hRW5kWTsgKytpKSB7CiAgICAgICAg
ICAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIgcGl4ZWwgPSBzcmNQaXhlbEFycmF5LT5pdGVtKGkg
KiBlZmZlY3RXaWR0aCArIGVuZFggKiA0ICsgY2xyQ2hhbm5lbCk7CkBAIC0yMjIsOCArMjE5LDgg
QEAgdm9pZCBGRU1vcnBob2xvZ3k6OnBsYXRmb3JtQXBwbHlTb2Z0d2FyZSgpCiAgICAgcGFpbnRp
bmdEYXRhLmRzdFBpeGVsQXJyYXkgPSBkc3RQaXhlbEFycmF5OwogICAgIHBhaW50aW5nRGF0YS53
aWR0aCA9IGVmZmVjdERyYXdpbmdSZWN0LndpZHRoKCk7CiAgICAgcGFpbnRpbmdEYXRhLmhlaWdo
dCA9IGVmZmVjdERyYXdpbmdSZWN0LmhlaWdodCgpOwotICAgIHBhaW50aW5nRGF0YS5yYWRpdXNY
ID0gbWluKGVmZmVjdERyYXdpbmdSZWN0LndpZHRoKCkgLSAxLCByYWRpdXNYKTsKLSAgICBwYWlu
dGluZ0RhdGEucmFkaXVzWSA9IG1pbihlZmZlY3REcmF3aW5nUmVjdC5oZWlnaHQoKSAtIDEsIHJh
ZGl1c1kpOworICAgIHBhaW50aW5nRGF0YS5yYWRpdXNYID0gc3RkOjptaW4oZWZmZWN0RHJhd2lu
Z1JlY3Qud2lkdGgoKSAtIDEsIHJhZGl1c1gpOworICAgIHBhaW50aW5nRGF0YS5yYWRpdXNZID0g
c3RkOjptaW4oZWZmZWN0RHJhd2luZ1JlY3QuaGVpZ2h0KCkgLSAxLCByYWRpdXNZKTsKIAogICAg
IHBsYXRmb3JtQXBwbHkoJnBhaW50aW5nRGF0YSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ndGsvUmVuZGVyVGhlbWVHdGsuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3RrL1JlbmRlclRoZW1lR3RrLmNwcAppbmRleCBjNzIyZmE2NjA5OTExY2ZjM2FiNWUz
ZWEwMDcwY2I2Nzk2OGU3YzcyLi43NTIzMWY2Y2E5NWMxMTQ0OGUxZWI4N2Q5NmM3NDgxZmI3Mzc0
ZDE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvUmVuZGVyVGhlbWVH
dGsuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9SZW5kZXJUaGVtZUd0ay5j
cHAKQEAgLTY3Nyw3ICs2NzcsNyBAQCBJbnRSZWN0IFJlbmRlclRoZW1lR3RrOjpjYWxjdWxhdGVQ
cm9ncmVzc1JlY3QoUmVuZGVyT2JqZWN0KiByZW5kZXJPYmplY3QsIGNvbnN0CiAgICAgZG91Ymxl
IGFuaW1hdGlvblByb2dyZXNzID0gcmVuZGVyUHJvZ3Jlc3MtPmFuaW1hdGlvblByb2dyZXNzKCk7
CiAKICAgICAvLyBOZXZlciBsZXQgdGhlIHByb2dyZXNzIHJlY3Qgc2hyaW5rIHNtYWxsZXIgdGhh
biAyIHBpeGVscy4KLSAgICBpbnQgbmV3V2lkdGggPSBtYXgoMiwgcHJvZ3Jlc3NSZWN0LndpZHRo
KCkgLyBwcm9ncmVzc0FjdGl2aXR5QmxvY2tzKTsKKyAgICBpbnQgbmV3V2lkdGggPSBzdGQ6Om1h
eCgyLCBwcm9ncmVzc1JlY3Qud2lkdGgoKSAvIHByb2dyZXNzQWN0aXZpdHlCbG9ja3MpOwogICAg
IGludCBtb3ZhYmxlV2lkdGggPSBwcm9ncmVzc1JlY3Qud2lkdGgoKSAtIG5ld1dpZHRoOwogICAg
IHByb2dyZXNzUmVjdC5zZXRXaWR0aChuZXdXaWR0aCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2d0ay9SZW5kZXJUaGVtZUd0azMuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3RrL1JlbmRlclRoZW1lR3RrMy5jcHAKaW5kZXggMmVjYTM5MGFhMGUzN2I5ODVi
M2IzZDcxYjkxZGMyM2Q0MjVhMjU5Ny4uMjUyODc3M2JhOWI3ODYzYjZhNWZhOTg1ZmJkNjE0Nzkx
MzhkM2YzMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1JlbmRlclRo
ZW1lR3RrMy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1JlbmRlclRoZW1l
R3RrMy5jcHAKQEAgLTUwOSw4ICs1MDksOCBAQCBib29sIFJlbmRlclRoZW1lR3RrOjpwYWludE1l
bnVMaXN0KFJlbmRlck9iamVjdCogcmVuZGVyT2JqZWN0LCBjb25zdCBQYWludEluZm8mCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMKTsKICAgICAgICAgaW5uZXJSZWN0
Lm1vdmUoY2hpbGREaXNwbGFjZW1lbnRYLCBjaGlsZERpc3BsYWNlbWVudFkpOwogICAgIH0KLSAg
ICBpbm5lclJlY3Quc2V0V2lkdGgobWF4KDEsIGlubmVyUmVjdC53aWR0aCgpKSk7Ci0gICAgaW5u
ZXJSZWN0LnNldEhlaWdodChtYXgoMSwgaW5uZXJSZWN0LmhlaWdodCgpKSk7CisgICAgaW5uZXJS
ZWN0LnNldFdpZHRoKHN0ZDo6bWF4KDEsIGlubmVyUmVjdC53aWR0aCgpKSk7CisgICAgaW5uZXJS
ZWN0LnNldEhlaWdodChzdGQ6Om1heCgxLCBpbm5lclJlY3QuaGVpZ2h0KCkpKTsKIAogICAgIGd0
a19zdHlsZV9jb250ZXh0X3Jlc3RvcmUoYnV0dG9uU3R5bGVDb250ZXh0KTsKIApAQCAtNzY4LDcg
Kzc2OCw3IEBAIHN0YXRpYyBnaW50IHNwaW5CdXR0b25BcnJvd1NpemUoR3RrU3R5bGVDb250ZXh0
KiBjb250ZXh0KQogICAgIFBhbmdvRm9udERlc2NyaXB0aW9uKiBmb250RGVzY3JpcHRpb247CiAg
ICAgZ3RrX3N0eWxlX2NvbnRleHRfZ2V0KGNvbnRleHQsIHN0YXRpY19jYXN0PEd0a1N0YXRlRmxh
Z3M+KDApLCAiZm9udCIsICZmb250RGVzY3JpcHRpb24sIE5VTEwpOwogICAgIGdpbnQgZm9udFNp
emUgPSBwYW5nb19mb250X2Rlc2NyaXB0aW9uX2dldF9zaXplKGZvbnREZXNjcmlwdGlvbik7Ci0g
ICAgZ2ludCBhcnJvd1NpemUgPSBtYXgoUEFOR09fUElYRUxTKGZvbnRTaXplKSwgbWluU3BpbkJ1
dHRvbkFycm93U2l6ZSk7CisgICAgZ2ludCBhcnJvd1NpemUgPSBzdGQ6Om1heChQQU5HT19QSVhF
TFMoZm9udFNpemUpLCBtaW5TcGluQnV0dG9uQXJyb3dTaXplKTsKICAgICBwYW5nb19mb250X2Rl
c2NyaXB0aW9uX2ZyZWUoZm9udERlc2NyaXB0aW9uKTsKIAogICAgIHJldHVybiBhcnJvd1NpemUg
LSBhcnJvd1NpemUgJSAyOyAvLyBGb3JjZSBldmVuLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWFjL01lbW9yeVByZXNzdXJlSGFuZGxlck1hYy5tbSBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21hYy9NZW1vcnlQcmVzc3VyZUhhbmRsZXJNYWMubW0KaW5kZXggNzY5NjRm
YTEyN2IwZmM5MGJlNjU0NzRkY2I2ODYyNWNmZDU3NTFjYi4uZTZlOTZkYjA1ODU1NmFiOWIyZmJh
ODdmMmVmMWY0YzllMmE2MGRlMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWFjL01lbW9yeVByZXNzdXJlSGFuZGxlck1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tYWMvTWVtb3J5UHJlc3N1cmVIYW5kbGVyTWFjLm1tCkBAIC00NCw4ICs0NCw2IEBACiAj
aW1wb3J0IDxub3RpZnkuaD4KICNlbmRpZgogCi11c2luZyBzdGQ6Om1heDsKLQogbmFtZXNwYWNl
IFdlYkNvcmUgewogCiAjaWYgIVBMQVRGT1JNKElPUykKQEAgLTE0MCw3ICsxMzgsNyBAQCB2b2lk
IE1lbW9yeVByZXNzdXJlSGFuZGxlcjo6cmVzcG9uZFRvTWVtb3J5UHJlc3N1cmUoKQogCiAgICAg
dW5zaWduZWQgaG9sZE9mZlRpbWUgPSAobW9ub3RvbmljYWxseUluY3JlYXNpbmdUaW1lKCkgLSBz
dGFydFRpbWUpICogc19ob2xkT2ZmTXVsdGlwbGllcjsKIAotICAgIGhvbGRPZmYobWF4KGhvbGRP
ZmZUaW1lLCBzX21pbmltdW1Ib2xkT2ZmVGltZSkpOworICAgIGhvbGRPZmYoc3RkOjptYXgoaG9s
ZE9mZlRpbWUsIHNfbWluaW11bUhvbGRPZmZUaW1lKSk7CiB9CiAjZW5kaWYgLy8gIVBMQVRGT1JN
KElPUykKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9UZXh0Q29k
ZWNJQ1UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9UZXh0Q29kZWNJQ1UuY3Bw
CmluZGV4IDg2ZDRlYTE3MjY1NDIzZDQzY2YzZmNhNjAzMDNkZTQyNjQzOTliY2EuLmI0YmIzOTA3
ZjYxNDhjMzQ5M2Y2YTE3ZmFmOWU4MjAwN2UwMzYwMTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL3RleHQvVGV4dENvZGVjSUNVLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS90ZXh0L1RleHRDb2RlY0lDVS5jcHAKQEAgLTQwLDggKzQwLDYgQEAKICNpbmNsdWRl
IDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+CiAjaW5jbHVkZSA8d3RmL3VuaWNvZGUvQ2hhcmFj
dGVyTmFtZXMuaD4KIAotdXNpbmcgc3RkOjptaW47Ci0KIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAog
Y29uc3Qgc2l6ZV90IENvbnZlcnNpb25CdWZmZXJTaXplID0gMTYzODQ7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvTGluZVdpZHRoLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9MaW5lV2lkdGguY3BwCmluZGV4IDc5ODc1MmNmMWM0MGU3YzdiYjFiZjBiZWExNzFh
YjdmOTBhN2Y5MTQuLjI4MzBiYjU4ZTkxYjgxMDQyMTE2M2JkMTlmMjEyZWQzNzIwOGFlMjIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9MaW5lV2lkdGguY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9MaW5lV2lkdGguY3BwCkBAIC0xODcsNyArMTg3LDcgQEAg
dm9pZCBMaW5lV2lkdGg6OmZpdEJlbG93RmxvYXRzKCkKIAogICAgICAgICBuZXdMaW5lTGVmdCA9
IG1fYmxvY2subG9naWNhbExlZnRPZmZzZXRGb3JMaW5lKGZsb2F0TG9naWNhbEJvdHRvbSwgc2hv
dWxkSW5kZW50VGV4dCgpKTsKICAgICAgICAgbmV3TGluZVJpZ2h0ID0gbV9ibG9jay5sb2dpY2Fs
UmlnaHRPZmZzZXRGb3JMaW5lKGZsb2F0TG9naWNhbEJvdHRvbSwgc2hvdWxkSW5kZW50VGV4dCgp
KTsKLSAgICAgICAgbmV3TGluZVdpZHRoID0gbWF4KDAuMGYsIG5ld0xpbmVSaWdodCAtIG5ld0xp
bmVMZWZ0KTsKKyAgICAgICAgbmV3TGluZVdpZHRoID0gc3RkOjptYXgoMC4wZiwgbmV3TGluZVJp
Z2h0IC0gbmV3TGluZUxlZnQpOwogICAgICAgICBsYXN0RmxvYXRMb2dpY2FsQm90dG9tID0gZmxv
YXRMb2dpY2FsQm90dG9tOwogCiAjaWYgRU5BQkxFKENTU19TSEFQRVMpCkBAIC0yMjksNyArMjI5
LDcgQEAgdm9pZCBMaW5lV2lkdGg6OnVwZGF0ZUN1cnJlbnRTaGFwZVNlZ21lbnQoKQogCiB2b2lk
IExpbmVXaWR0aDo6Y29tcHV0ZUF2YWlsYWJsZVdpZHRoRnJvbUxlZnRBbmRSaWdodCgpCiB7Ci0g
ICAgbV9hdmFpbGFibGVXaWR0aCA9IG1heCgwLjBmLCBtX3JpZ2h0IC0gbV9sZWZ0KSArIG1fb3Zl
cmhhbmdXaWR0aDsKKyAgICBtX2F2YWlsYWJsZVdpZHRoID0gc3RkOjptYXg8ZmxvYXQ+KDAsIG1f
cmlnaHQgLSBtX2xlZnQpICsgbV9vdmVyaGFuZ1dpZHRoOwogfQogCiBib29sIExpbmVXaWR0aDo6
Zml0c09uTGluZUV4Y2x1ZGluZ1RyYWlsaW5nQ29sbGFwc2VkV2hpdGVzcGFjZSgpIGNvbnN0CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suaCBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5oCmluZGV4IGQ2ZTQ0MjI4ZTNlN2M4NWIy
Y2E3OGY5ZDI4ZjlhNzVjZGE0Mzg0NjYuLmQ1OGNhYzFkZTljMWMzZmJhMTlhZjU0MzM0NTEwMGJk
NTBjNmVjMzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9j
ay5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5oCkBAIC0xNTcs
NyArMTU3LDcgQEAgcHVibGljOgogICAgIC8vIGNvbXB1dGUgdGhlIHJlZ2lvbiBhbGwgb3ZlciBh
Z2FpbiB3aGVuIHlvdSBhbHJlYWR5IGtub3cgaXQuCiAgICAgTGF5b3V0VW5pdCBhdmFpbGFibGVM
b2dpY2FsV2lkdGhGb3JMaW5lKExheW91dFVuaXQgcG9zaXRpb24sIGJvb2wgc2hvdWxkSW5kZW50
VGV4dCwgUmVuZGVyUmVnaW9uKiByZWdpb24sIExheW91dFVuaXQgbG9naWNhbEhlaWdodCA9IDAp
IGNvbnN0CiAgICAgewotICAgICAgICByZXR1cm4gbWF4PExheW91dFVuaXQ+KDAsIGxvZ2ljYWxS
aWdodE9mZnNldEZvckxpbmUocG9zaXRpb24sIHNob3VsZEluZGVudFRleHQsIHJlZ2lvbiwgbG9n
aWNhbEhlaWdodCkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bWF4PExheW91dFVuaXQ+KDAsIGxvZ2lj
YWxSaWdodE9mZnNldEZvckxpbmUocG9zaXRpb24sIHNob3VsZEluZGVudFRleHQsIHJlZ2lvbiwg
bG9naWNhbEhlaWdodCkKICAgICAgICAgICAgIC0gbG9naWNhbExlZnRPZmZzZXRGb3JMaW5lKHBv
c2l0aW9uLCBzaG91bGRJbmRlbnRUZXh0LCByZWdpb24sIGxvZ2ljYWxIZWlnaHQpKTsKICAgICB9
CiAgICAgTGF5b3V0VW5pdCBsb2dpY2FsUmlnaHRPZmZzZXRGb3JMaW5lKExheW91dFVuaXQgcG9z
aXRpb24sIGJvb2wgc2hvdWxkSW5kZW50VGV4dCwgUmVuZGVyUmVnaW9uKiByZWdpb24sIExheW91
dFVuaXQgbG9naWNhbEhlaWdodCA9IDApIGNvbnN0IApAQCAtMzMzLDcgKzMzMyw3IEBAIHB1Ymxp
YzoKICAgICBMYXlvdXRVbml0IGxvZ2ljYWxSaWdodE9mZnNldEZvckNvbnRlbnQoUmVuZGVyUmVn
aW9uKikgY29uc3Q7CiAgICAgTGF5b3V0VW5pdCBhdmFpbGFibGVMb2dpY2FsV2lkdGhGb3JDb250
ZW50KFJlbmRlclJlZ2lvbiogcmVnaW9uKSBjb25zdAogICAgIHsgCi0gICAgICAgIHJldHVybiBt
YXg8TGF5b3V0VW5pdD4oMCwgbG9naWNhbFJpZ2h0T2Zmc2V0Rm9yQ29udGVudChyZWdpb24pIC0g
bG9naWNhbExlZnRPZmZzZXRGb3JDb250ZW50KHJlZ2lvbikpOyB9CisgICAgICAgIHJldHVybiBz
dGQ6Om1heDxMYXlvdXRVbml0PigwLCBsb2dpY2FsUmlnaHRPZmZzZXRGb3JDb250ZW50KHJlZ2lv
bikgLSBsb2dpY2FsTGVmdE9mZnNldEZvckNvbnRlbnQocmVnaW9uKSk7IH0KICAgICBMYXlvdXRV
bml0IHN0YXJ0T2Zmc2V0Rm9yQ29udGVudChSZW5kZXJSZWdpb24qIHJlZ2lvbikgY29uc3QKICAg
ICB7CiAgICAgICAgIHJldHVybiBzdHlsZSgpLT5pc0xlZnRUb1JpZ2h0RGlyZWN0aW9uKCkgPyBs
b2dpY2FsTGVmdE9mZnNldEZvckNvbnRlbnQocmVnaW9uKSA6IGxvZ2ljYWxXaWR0aCgpIC0gbG9n
aWNhbFJpZ2h0T2Zmc2V0Rm9yQ29udGVudChyZWdpb24pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckZpZWxkc2V0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJGaWVsZHNldC5jcHAKaW5kZXggOTUyZDc1ZTA5OWVlYTkzYTU3NWYzOGVkODFk
NDJlYjcyMjE5ZDg1ZS4uMjA5MTU4MWQ0MzVlY2UxMjgzZWYzZDA3YjRjY2VlYmUxZmZiMDQxMCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZpZWxkc2V0LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRmllbGRzZXQuY3BwCkBAIC0zMCw5
ICszMCw2IEBACiAjaW5jbHVkZSAiSFRNTE5hbWVzLmgiCiAjaW5jbHVkZSAiUGFpbnRJbmZvLmgi
CiAKLXVzaW5nIHN0ZDo6bWluOwotdXNpbmcgc3RkOjptYXg7Ci0KIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAogdXNpbmcgbmFtZXNwYWNlIEhUTUxOYW1lczsKQEAgLTU3LDcgKzU0LDcgQEAgdm9pZCBS
ZW5kZXJGaWVsZHNldDo6Y29tcHV0ZVByZWZlcnJlZExvZ2ljYWxXaWR0aHMoKQogICAgICAgICBp
ZiAobGVnZW5kTWFyZ2luUmlnaHQuaXNGaXhlZCgpKQogICAgICAgICAgICAgbGVnZW5kTWluV2lk
dGggKz0gbGVnZW5kTWFyZ2luUmlnaHQudmFsdWUoKTsKIAotICAgICAgICBtX21pblByZWZlcnJl
ZExvZ2ljYWxXaWR0aCA9IG1heChtX21pblByZWZlcnJlZExvZ2ljYWxXaWR0aCwgbGVnZW5kTWlu
V2lkdGggKyBib3JkZXJBbmRQYWRkaW5nV2lkdGgoKSk7CisgICAgICAgIG1fbWluUHJlZmVycmVk
TG9naWNhbFdpZHRoID0gc3RkOjptYXgobV9taW5QcmVmZXJyZWRMb2dpY2FsV2lkdGgsIGxlZ2Vu
ZE1pbldpZHRoICsgYm9yZGVyQW5kUGFkZGluZ1dpZHRoKCkpOwogICAgIH0KIH0KIApAQCAtMTE3
LDcgKzExNCw3IEBAIFJlbmRlck9iamVjdCogUmVuZGVyRmllbGRzZXQ6OmxheW91dFNwZWNpYWxF
eGNsdWRlZENoaWxkKGJvb2wgcmVsYXlvdXRDaGlsZHJlbikKICAgICAgICAgLy8gb24gdGhlIGxl
Z2VuZCdzIG1hcmdpbnMgYXMgd2Ugd2FudCB0byBzdGlsbCBmb2xsb3cgdGhlIGF1dGhvcidzIGN1
ZXMuCiAgICAgICAgIC8vIEZpcmVmb3ggY29tcGxldGVseSBpZ25vcmVzIHRoZSBtYXJnaW5zIGlu
IHRoaXMgY2FzZSB3aGljaCBzZWVtcyB3cm9uZy4KICAgICAgICAgbGVnZW5kTG9naWNhbFRvcCA9
IChmaWVsZHNldEJvcmRlckJlZm9yZSAtIGxlZ2VuZExvZ2ljYWxIZWlnaHQpIC8gMjsKLSAgICAg
ICAgY29sbGFwc2VkTGVnZW5kRXh0ZW50ID0gbWF4PExheW91dFVuaXQ+KGZpZWxkc2V0Qm9yZGVy
QmVmb3JlLCBsZWdlbmRMb2dpY2FsVG9wICsgbGVnZW5kTG9naWNhbEhlaWdodCArIG1hcmdpbkFm
dGVyRm9yQ2hpbGQobGVnZW5kKSk7CisgICAgICAgIGNvbGxhcHNlZExlZ2VuZEV4dGVudCA9IHN0
ZDo6bWF4PExheW91dFVuaXQ+KGZpZWxkc2V0Qm9yZGVyQmVmb3JlLCBsZWdlbmRMb2dpY2FsVG9w
ICsgbGVnZW5kTG9naWNhbEhlaWdodCArIG1hcmdpbkFmdGVyRm9yQ2hpbGQobGVnZW5kKSk7CiAg
ICAgfSBlbHNlCiAgICAgICAgIGNvbGxhcHNlZExlZ2VuZEV4dGVudCA9IGxlZ2VuZExvZ2ljYWxI
ZWlnaHQgKyBtYXJnaW5BZnRlckZvckNoaWxkKGxlZ2VuZCk7CiAKQEAgLTE3OSwxMSArMTc2LDEx
IEBAIHZvaWQgUmVuZGVyRmllbGRzZXQ6OnBhaW50Qm94RGVjb3JhdGlvbnMoUGFpbnRJbmZvJiBw
YWludEluZm8sIGNvbnN0IExheW91dFBvaW50CiAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTQ3MjM2CiAgICAgaWYgKHN0eWxlKCktPmlzSG9yaXpvbnRhbFdy
aXRpbmdNb2RlKCkpIHsKICAgICAgICAgTGF5b3V0VW5pdCBjbGlwVG9wID0gcGFpbnRSZWN0Lnko
KTsKLSAgICAgICAgTGF5b3V0VW5pdCBjbGlwSGVpZ2h0ID0gbWF4KHN0YXRpY19jYXN0PExheW91
dFVuaXQ+KHN0eWxlKCktPmJvcmRlclRvcFdpZHRoKCkpLCBsZWdlbmQtPmhlaWdodCgpIC0gKChs
ZWdlbmQtPmhlaWdodCgpIC0gYm9yZGVyVG9wKCkpIC8gMikpOworICAgICAgICBMYXlvdXRVbml0
IGNsaXBIZWlnaHQgPSBzdGQ6Om1heChzdGF0aWNfY2FzdDxMYXlvdXRVbml0PihzdHlsZSgpLT5i
b3JkZXJUb3BXaWR0aCgpKSwgbGVnZW5kLT5oZWlnaHQoKSAtICgobGVnZW5kLT5oZWlnaHQoKSAt
IGJvcmRlclRvcCgpKSAvIDIpKTsKICAgICAgICAgZ3JhcGhpY3NDb250ZXh0LT5jbGlwT3V0KHBp
eGVsU25hcHBlZEludFJlY3QocGFpbnRSZWN0LngoKSArIGxlZ2VuZC0+eCgpLCBjbGlwVG9wLCBs
ZWdlbmQtPndpZHRoKCksIGNsaXBIZWlnaHQpKTsKICAgICB9IGVsc2UgewogICAgICAgICBMYXlv
dXRVbml0IGNsaXBMZWZ0ID0gcGFpbnRSZWN0LngoKTsKLSAgICAgICAgTGF5b3V0VW5pdCBjbGlw
V2lkdGggPSBtYXgoc3RhdGljX2Nhc3Q8TGF5b3V0VW5pdD4oc3R5bGUoKS0+Ym9yZGVyTGVmdFdp
ZHRoKCkpLCBsZWdlbmQtPndpZHRoKCkpOworICAgICAgICBMYXlvdXRVbml0IGNsaXBXaWR0aCA9
IHN0ZDo6bWF4KHN0YXRpY19jYXN0PExheW91dFVuaXQ+KHN0eWxlKCktPmJvcmRlckxlZnRXaWR0
aCgpKSwgbGVnZW5kLT53aWR0aCgpKTsKICAgICAgICAgZ3JhcGhpY3NDb250ZXh0LT5jbGlwT3V0
KHBpeGVsU25hcHBlZEludFJlY3QoY2xpcExlZnQsIHBhaW50UmVjdC55KCkgKyBsZWdlbmQtPnko
KSwgY2xpcFdpZHRoLCBsZWdlbmQtPmhlaWdodCgpKSk7CiAgICAgfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRmxvd1RocmVhZC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyRmxvd1RocmVhZC5jcHAKaW5kZXggYTk4ZGM5M2VmNGI2YzE4
ZjM2NzAyZDc5MTE0ZTk0NzZmNTRjMWFiMS4uZWM4ZDgzZDgyNDNhNDA5YTYzYWViNjE1ODgyNzBl
YjlmZWZkM2JlMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZs
b3dUaHJlYWQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGbG93VGhy
ZWFkLmNwcApAQCAtMzY4LDcgKzM2OCw3IEBAIHZvaWQgUmVuZGVyRmxvd1RocmVhZDo6dXBkYXRl
TG9naWNhbFdpZHRoKCkKICAgICBmb3IgKFJlbmRlclJlZ2lvbkxpc3Q6Oml0ZXJhdG9yIGl0ZXIg
PSBtX3JlZ2lvbkxpc3QuYmVnaW4oKTsgaXRlciAhPSBtX3JlZ2lvbkxpc3QuZW5kKCk7ICsraXRl
cikgewogICAgICAgICBSZW5kZXJSZWdpb24qIHJlZ2lvbiA9ICppdGVyOwogICAgICAgICBBU1NF
UlQoIXJlZ2lvbi0+bmVlZHNMYXlvdXQoKSB8fCByZWdpb24tPmlzUmVuZGVyUmVnaW9uU2V0KCkp
OwotICAgICAgICBsb2dpY2FsV2lkdGggPSBtYXgocmVnaW9uLT5wYWdlTG9naWNhbFdpZHRoKCks
IGxvZ2ljYWxXaWR0aCk7CisgICAgICAgIGxvZ2ljYWxXaWR0aCA9IHN0ZDo6bWF4KHJlZ2lvbi0+
cGFnZUxvZ2ljYWxXaWR0aCgpLCBsb2dpY2FsV2lkdGgpOwogICAgIH0KICAgICBzZXRMb2dpY2Fs
V2lkdGgobG9naWNhbFdpZHRoKTsKIApAQCAtMTEzMiw3ICsxMTMyLDcgQEAgYm9vbCBSZW5kZXJG
bG93VGhyZWFkOjphZGRGb3JjZWRSZWdpb25CcmVhayhjb25zdCBSZW5kZXJCbG9jayogYmxvY2ss
IExheW91dFVuaXQKICAgICAgICAgdXBkYXRlUmVnaW9uc0Zsb3dUaHJlYWRQb3J0aW9uUmVjdCgp
OwogCiAgICAgaWYgKG9mZnNldEJyZWFrQWRqdXN0bWVudCkKLSAgICAgICAgKm9mZnNldEJyZWFr
QWRqdXN0bWVudCA9IG1heDxMYXlvdXRVbml0PigwLCBjdXJyZW50UmVnaW9uT2Zmc2V0SW5GbG93
VGhyZWFkIC0gb2Zmc2V0QnJlYWtJbkZsb3dUaHJlYWQpOworICAgICAgICAqb2Zmc2V0QnJlYWtB
ZGp1c3RtZW50ID0gc3RkOjptYXg8TGF5b3V0VW5pdD4oMCwgY3VycmVudFJlZ2lvbk9mZnNldElu
Rmxvd1RocmVhZCAtIG9mZnNldEJyZWFrSW5GbG93VGhyZWFkKTsKIAogICAgIHJldHVybiBoYXND
b21wdXRlZEF1dG9IZWlnaHQ7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyRnJhbWVCYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJG
cmFtZUJhc2UuY3BwCmluZGV4IDgxYzMwMDcyOWE4ZTBlMmNjYTRmNmJjZWRjYTA4N2Q3NmRmMzkw
NTguLmY1MDVkM2U2MmFmMmM0ZDlmNzZkOGU1OTlkZTljNzViNDdlNDQ1NTggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGcmFtZUJhc2UuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGcmFtZUJhc2UuY3BwCkBAIC04MCw3ICs4MCw3IEBA
IHZvaWQgUmVuZGVyRnJhbWVCYXNlOjpsYXlvdXRXaXRoRmxhdHRlbmluZyhib29sIGhhc0ZpeGVk
V2lkdGgsIGJvb2wgaGFzRml4ZWRIZWlnCiAKICAgICAvLyBtYWtlIHN1cmUgbWluaW11bSBwcmVm
ZXJyZWQgd2lkdGggaXMgZW5mb3JjZWQKICAgICBpZiAoaXNTY3JvbGxhYmxlIHx8ICFoYXNGaXhl
ZFdpZHRoKSB7Ci0gICAgICAgIHNldFdpZHRoKG1heCh3aWR0aCgpLCBjaGlsZFJvb3QtPm1pblBy
ZWZlcnJlZExvZ2ljYWxXaWR0aCgpICsgaEJvcmRlcikpOworICAgICAgICBzZXRXaWR0aChzdGQ6
Om1heCh3aWR0aCgpLCBjaGlsZFJvb3QtPm1pblByZWZlcnJlZExvZ2ljYWxXaWR0aCgpICsgaEJv
cmRlcikpOwogICAgICAgICAvLyB1cGRhdGUgYWdhaW4gdG8gcGFzcyB0aGUgbmV3IHdpZHRoIHRv
IHRoZSBjaGlsZCBmcmFtZQogICAgICAgICB1cGRhdGVXaWRnZXRQb3NpdGlvbigpOwogICAgICAg
ICBjaGlsZEZyYW1lVmlldy0+bGF5b3V0KCk7CkBAIC04OCw5ICs4OCw5IEBAIHZvaWQgUmVuZGVy
RnJhbWVCYXNlOjpsYXlvdXRXaXRoRmxhdHRlbmluZyhib29sIGhhc0ZpeGVkV2lkdGgsIGJvb2wg
aGFzRml4ZWRIZWlnCiAKICAgICAvLyBleHBhbmQgdGhlIGZyYW1lIGJ5IHNldHRpbmcgZnJhbWUg
aGVpZ2h0ID0gY29udGVudCBoZWlnaHQKICAgICBpZiAoaXNTY3JvbGxhYmxlIHx8ICFoYXNGaXhl
ZEhlaWdodCB8fCBjaGlsZFJvb3QtPmlzRnJhbWVTZXQoKSkKLSAgICAgICAgc2V0SGVpZ2h0KG1h
eDxMYXlvdXRVbml0PihoZWlnaHQoKSwgY2hpbGRGcmFtZVZpZXctPmNvbnRlbnRzSGVpZ2h0KCkg
KyB2Qm9yZGVyKSk7CisgICAgICAgIHNldEhlaWdodChzdGQ6Om1heDxMYXlvdXRVbml0PihoZWln
aHQoKSwgY2hpbGRGcmFtZVZpZXctPmNvbnRlbnRzSGVpZ2h0KCkgKyB2Qm9yZGVyKSk7CiAgICAg
aWYgKGlzU2Nyb2xsYWJsZSB8fCAhaGFzRml4ZWRXaWR0aCB8fCBjaGlsZFJvb3QtPmlzRnJhbWVT
ZXQoKSkKLSAgICAgICAgc2V0V2lkdGgobWF4PExheW91dFVuaXQ+KHdpZHRoKCksIGNoaWxkRnJh
bWVWaWV3LT5jb250ZW50c1dpZHRoKCkgKyBoQm9yZGVyKSk7CisgICAgICAgIHNldFdpZHRoKHN0
ZDo6bWF4PExheW91dFVuaXQ+KHdpZHRoKCksIGNoaWxkRnJhbWVWaWV3LT5jb250ZW50c1dpZHRo
KCkgKyBoQm9yZGVyKSk7CiAKICAgICB1cGRhdGVXaWRnZXRQb3NpdGlvbigpOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRnJhbWVTZXQuY3BwIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZyYW1lU2V0LmNwcAppbmRleCAyZTVkYjBjYzQ4Njlm
NWMzNzdjYjk3MGMyYmQ1NTYzYTJkNmExMDdjLi4wNzVlMzEwMDMwYTA4YWEzYzc2ZmZiMWM1NDA5
NTBkZWFkZDg0MjExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
RnJhbWVTZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGcmFtZVNl
dC5jcHAKQEAgLTE3Myw3ICsxNzMsNyBAQCB2b2lkIFJlbmRlckZyYW1lU2V0OjpHcmlkQXhpczo6
cmVzaXplKGludCBzaXplKQogCiB2b2lkIFJlbmRlckZyYW1lU2V0OjpsYXlPdXRBeGlzKEdyaWRB
eGlzJiBheGlzLCBjb25zdCBMZW5ndGgqIGdyaWQsIGludCBhdmFpbGFibGVMZW4pCiB7Ci0gICAg
YXZhaWxhYmxlTGVuID0gbWF4KGF2YWlsYWJsZUxlbiwgMCk7CisgICAgYXZhaWxhYmxlTGVuID0g
c3RkOjptYXgoYXZhaWxhYmxlTGVuLCAwKTsKIAogICAgIGludCogZ3JpZExheW91dCA9IGF4aXMu
bV9zaXplcy5kYXRhKCk7CiAKQEAgLTE5OCw3ICsxOTgsNyBAQCB2b2lkIFJlbmRlckZyYW1lU2V0
OjpsYXlPdXRBeGlzKEdyaWRBeGlzJiBheGlzLCBjb25zdCBMZW5ndGgqIGdyaWQsIGludCBhdmFp
bGFibAogICAgICAgICAvLyBDb3VudCB0aGUgdG90YWwgbGVuZ3RoIG9mIGFsbCBvZiB0aGUgZml4
ZWQgY29sdW1ucy9yb3dzIC0+IHRvdGFsRml4ZWQKICAgICAgICAgLy8gQ291bnQgdGhlIG51bWJl
ciBvZiBjb2x1bW5zL3Jvd3Mgd2hpY2ggYXJlIGZpeGVkIC0+IGNvdW50Rml4ZWQKICAgICAgICAg
aWYgKGdyaWRbaV0uaXNGaXhlZCgpKSB7Ci0gICAgICAgICAgICBncmlkTGF5b3V0W2ldID0gbWF4
KGdyaWRbaV0uaW50VmFsdWUoKSwgMCk7CisgICAgICAgICAgICBncmlkTGF5b3V0W2ldID0gc3Rk
OjptYXgoZ3JpZFtpXS5pbnRWYWx1ZSgpLCAwKTsKICAgICAgICAgICAgIHRvdGFsRml4ZWQgKz0g
Z3JpZExheW91dFtpXTsKICAgICAgICAgICAgIGNvdW50Rml4ZWQrKzsKICAgICAgICAgfQpAQCAt
MjA2LDcgKzIwNiw3IEBAIHZvaWQgUmVuZGVyRnJhbWVTZXQ6OmxheU91dEF4aXMoR3JpZEF4aXMm
IGF4aXMsIGNvbnN0IExlbmd0aCogZ3JpZCwgaW50IGF2YWlsYWJsCiAgICAgICAgIC8vIENvdW50
IHRoZSB0b3RhbCBwZXJjZW50YWdlIG9mIGFsbCBvZiB0aGUgcGVyY2VudGFnZSBjb2x1bW5zL3Jv
d3MgLT4gdG90YWxQZXJjZW50CiAgICAgICAgIC8vIENvdW50IHRoZSBudW1iZXIgb2YgY29sdW1u
cy9yb3dzIHdoaWNoIGFyZSBwZXJjZW50YWdlcyAtPiBjb3VudFBlcmNlbnQKICAgICAgICAgaWYg
KGdyaWRbaV0uaXNQZXJjZW50KCkpIHsKLSAgICAgICAgICAgIGdyaWRMYXlvdXRbaV0gPSBtYXgo
aW50VmFsdWVGb3JMZW5ndGgoZ3JpZFtpXSwgYXZhaWxhYmxlTGVuKSwgMCk7CisgICAgICAgICAg
ICBncmlkTGF5b3V0W2ldID0gc3RkOjptYXgoaW50VmFsdWVGb3JMZW5ndGgoZ3JpZFtpXSwgYXZh
aWxhYmxlTGVuKSwgMCk7CiAgICAgICAgICAgICB0b3RhbFBlcmNlbnQgKz0gZ3JpZExheW91dFtp
XTsKICAgICAgICAgICAgIGNvdW50UGVyY2VudCsrOwogICAgICAgICB9CkBAIC0yMTQsNyArMjE0
LDcgQEAgdm9pZCBSZW5kZXJGcmFtZVNldDo6bGF5T3V0QXhpcyhHcmlkQXhpcyYgYXhpcywgY29u
c3QgTGVuZ3RoKiBncmlkLCBpbnQgYXZhaWxhYmwKICAgICAgICAgLy8gQ291bnQgdGhlIHRvdGFs
IHJlbGF0aXZlIG9mIGFsbCB0aGUgcmVsYXRpdmUgY29sdW1ucy9yb3dzIC0+IHRvdGFsUmVsYXRp
dmUKICAgICAgICAgLy8gQ291bnQgdGhlIG51bWJlciBvZiBjb2x1bW5zL3Jvd3Mgd2hpY2ggYXJl
IHJlbGF0aXZlIC0+IGNvdW50UmVsYXRpdmUKICAgICAgICAgaWYgKGdyaWRbaV0uaXNSZWxhdGl2
ZSgpKSB7Ci0gICAgICAgICAgICB0b3RhbFJlbGF0aXZlICs9IG1heChncmlkW2ldLmludFZhbHVl
KCksIDEpOworICAgICAgICAgICAgdG90YWxSZWxhdGl2ZSArPSBzdGQ6Om1heChncmlkW2ldLmlu
dFZhbHVlKCksIDEpOwogICAgICAgICAgICAgY291bnRSZWxhdGl2ZSsrOwogICAgICAgICB9ICAg
ICAgICAgICAgCiAgICAgfQpAQCAtMjU5LDcgKzI1OSw3IEBAIHZvaWQgUmVuZGVyRnJhbWVTZXQ6
OmxheU91dEF4aXMoR3JpZEF4aXMmIGF4aXMsIGNvbnN0IExlbmd0aCogZ3JpZCwgaW50IGF2YWls
YWJsCiAKICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBncmlkTGVuOyArK2kpIHsKICAgICAg
ICAgICAgIGlmIChncmlkW2ldLmlzUmVsYXRpdmUoKSkgewotICAgICAgICAgICAgICAgIGdyaWRM
YXlvdXRbaV0gPSAobWF4KGdyaWRbaV0uaW50VmFsdWUoKSwgMSkgKiByZW1haW5pbmdSZWxhdGl2
ZSkgLyB0b3RhbFJlbGF0aXZlOworICAgICAgICAgICAgICAgIGdyaWRMYXlvdXRbaV0gPSAoc3Rk
OjptYXgoZ3JpZFtpXS5pbnRWYWx1ZSgpLCAxKSAqIHJlbWFpbmluZ1JlbGF0aXZlKSAvIHRvdGFs
UmVsYXRpdmU7CiAgICAgICAgICAgICAgICAgcmVtYWluaW5nTGVuIC09IGdyaWRMYXlvdXRbaV07
CiAgICAgICAgICAgICAgICAgbGFzdFJlbGF0aXZlID0gaTsKICAgICAgICAgICAgIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTbGlkZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNsaWRlci5jcHAKaW5kZXggMWQ5NDg1MDk4YTY4MmFh
NzQ5MmRkZGRkNDJjNDI1OTM0NmQwMDE0NS4uYjUwNTg4ZTZjNTE4MjU4YjZjZTk3NTM2YTBlNjk1
NjM3NDZmYWQ0ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNs
aWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNsaWRlci5jcHAK
QEAgLTQzLDggKzQzLDYgQEAKICNpbmNsdWRlIDx3dGYvTWF0aEV4dHJhcy5oPgogI2luY2x1ZGUg
PHd0Zi9TdGFja1N0YXRzLmg+CiAKLXVzaW5nIHN0ZDo6bWluOwotCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKIGNvbnN0IGludCBSZW5kZXJTbGlkZXI6OmRlZmF1bHRUcmFja0xlbmd0aCA9IDEyOTsK
QEAgLTk0LDEzICs5MiwxMyBAQCB2b2lkIFJlbmRlclNsaWRlcjo6Y29tcHV0ZVByZWZlcnJlZExv
Z2ljYWxXaWR0aHMoKQogICAgICAgICBjb21wdXRlSW50cmluc2ljTG9naWNhbFdpZHRocyhtX21p
blByZWZlcnJlZExvZ2ljYWxXaWR0aCwgbV9tYXhQcmVmZXJyZWRMb2dpY2FsV2lkdGgpOwogCiAg
ICAgaWYgKHN0eWxlKCktPm1pbldpZHRoKCkuaXNGaXhlZCgpICYmIHN0eWxlKCktPm1pbldpZHRo
KCkudmFsdWUoKSA+IDApIHsKLSAgICAgICAgbV9tYXhQcmVmZXJyZWRMb2dpY2FsV2lkdGggPSBt
YXgobV9tYXhQcmVmZXJyZWRMb2dpY2FsV2lkdGgsIGFkanVzdENvbnRlbnRCb3hMb2dpY2FsV2lk
dGhGb3JCb3hTaXppbmcoc3R5bGUoKS0+bWluV2lkdGgoKS52YWx1ZSgpKSk7Ci0gICAgICAgIG1f
bWluUHJlZmVycmVkTG9naWNhbFdpZHRoID0gbWF4KG1fbWluUHJlZmVycmVkTG9naWNhbFdpZHRo
LCBhZGp1c3RDb250ZW50Qm94TG9naWNhbFdpZHRoRm9yQm94U2l6aW5nKHN0eWxlKCktPm1pbldp
ZHRoKCkudmFsdWUoKSkpOworICAgICAgICBtX21heFByZWZlcnJlZExvZ2ljYWxXaWR0aCA9IHN0
ZDo6bWF4KG1fbWF4UHJlZmVycmVkTG9naWNhbFdpZHRoLCBhZGp1c3RDb250ZW50Qm94TG9naWNh
bFdpZHRoRm9yQm94U2l6aW5nKHN0eWxlKCktPm1pbldpZHRoKCkudmFsdWUoKSkpOworICAgICAg
ICBtX21pblByZWZlcnJlZExvZ2ljYWxXaWR0aCA9IHN0ZDo6bWF4KG1fbWluUHJlZmVycmVkTG9n
aWNhbFdpZHRoLCBhZGp1c3RDb250ZW50Qm94TG9naWNhbFdpZHRoRm9yQm94U2l6aW5nKHN0eWxl
KCktPm1pbldpZHRoKCkudmFsdWUoKSkpOwogICAgIH0KIAogICAgIGlmIChzdHlsZSgpLT5tYXhX
aWR0aCgpLmlzRml4ZWQoKSkgewotICAgICAgICBtX21heFByZWZlcnJlZExvZ2ljYWxXaWR0aCA9
IG1pbihtX21heFByZWZlcnJlZExvZ2ljYWxXaWR0aCwgYWRqdXN0Q29udGVudEJveExvZ2ljYWxX
aWR0aEZvckJveFNpemluZyhzdHlsZSgpLT5tYXhXaWR0aCgpLnZhbHVlKCkpKTsKLSAgICAgICAg
bV9taW5QcmVmZXJyZWRMb2dpY2FsV2lkdGggPSBtaW4obV9taW5QcmVmZXJyZWRMb2dpY2FsV2lk
dGgsIGFkanVzdENvbnRlbnRCb3hMb2dpY2FsV2lkdGhGb3JCb3hTaXppbmcoc3R5bGUoKS0+bWF4
V2lkdGgoKS52YWx1ZSgpKSk7CisgICAgICAgIG1fbWF4UHJlZmVycmVkTG9naWNhbFdpZHRoID0g
c3RkOjptaW4obV9tYXhQcmVmZXJyZWRMb2dpY2FsV2lkdGgsIGFkanVzdENvbnRlbnRCb3hMb2dp
Y2FsV2lkdGhGb3JCb3hTaXppbmcoc3R5bGUoKS0+bWF4V2lkdGgoKS52YWx1ZSgpKSk7CisgICAg
ICAgIG1fbWluUHJlZmVycmVkTG9naWNhbFdpZHRoID0gc3RkOjptaW4obV9taW5QcmVmZXJyZWRM
b2dpY2FsV2lkdGgsIGFkanVzdENvbnRlbnRCb3hMb2dpY2FsV2lkdGhGb3JCb3hTaXppbmcoc3R5
bGUoKS0+bWF4V2lkdGgoKS52YWx1ZSgpKSk7CiAgICAgfQogCiAgICAgTGF5b3V0VW5pdCB0b0Fk
ZCA9IGJvcmRlckFuZFBhZGRpbmdXaWR0aCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlclRhYmxlQ2VsbC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlclRhYmxlQ2VsbC5oCmluZGV4IDAxMTE2YjJjNTBjYWI5MDZjMzY3NDI1NzcxZDUzNjc5MDQz
NTQwMmMuLjVlYTI0OWUyODI5ZDgzODRhYWJjMGQ4YjI5OTk0OWU4NWRkODAyMjYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZUNlbGwuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVDZWxsLmgKQEAgLTEwNCw3ICsxMDQsNyBA
QCBwdWJsaWM6CiAgICAgICAgIC8vIENhbGwgY29tcHV0ZWRDU1NQYWRkaW5nKiBkaXJlY3RseSB0
byBhdm9pZCBpbmNsdWRpbmcgaW1wbGljaXRQYWRkaW5nLgogICAgICAgICBpZiAoIWRvY3VtZW50
KCkuaW5RdWlya3NNb2RlKCkgJiYgc3R5bGUoKS0+Ym94U2l6aW5nKCkgIT0gQk9SREVSX0JPWCkK
ICAgICAgICAgICAgIHN0eWxlTG9naWNhbEhlaWdodCArPSAoY29tcHV0ZWRDU1NQYWRkaW5nQmVm
b3JlKCkgKyBjb21wdXRlZENTU1BhZGRpbmdBZnRlcigpKS5mbG9vcigpICsgYm9yZGVyQmVmb3Jl
KCkgKyBib3JkZXJBZnRlcigpOwotICAgICAgICByZXR1cm4gbWF4KHN0eWxlTG9naWNhbEhlaWdo
dCwgYWRqdXN0ZWRMb2dpY2FsSGVpZ2h0KTsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bWF4KHN0eWxl
TG9naWNhbEhlaWdodCwgYWRqdXN0ZWRMb2dpY2FsSGVpZ2h0KTsKICAgICB9CiAKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRyZWVBc1RleHQuY3BwIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRyZWVBc1RleHQuY3BwCmluZGV4IDdkZmFmNGJh
MGU0ZDY4NWFjZDQ5YTcxYTEyNmYyMzNkMGE5NDBiOGEuLjJiMmJlODJhNzliMjgxZjY1NjVmMThk
ZGZjNWI0NjZlZTg0NzIxZWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJUcmVlQXNUZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
VHJlZUFzVGV4dC5jcHAKQEAgLTczMCw4ICs3MzAsOCBAQCBzdGF0aWMgdm9pZCB3cml0ZUxheWVy
cyhUZXh0U3RyZWFtJiB0cywgY29uc3QgUmVuZGVyTGF5ZXIqIHJvb3RMYXllciwgUmVuZGVyTGF5
ZQogICAgIC8vIEZJWE1FOiBBcHBseSBvdmVyZmxvdyB0byB0aGUgcm9vdCBsYXllciB0byBub3Qg
YnJlYWsgZXZlcnkgdGVzdC4gIENvbXBsZXRlIGhhY2suICBTaWdoLgogICAgIExheW91dFJlY3Qg
cGFpbnREaXJ0eVJlY3QocGFpbnRSZWN0KTsKICAgICBpZiAocm9vdExheWVyID09IGwpIHsKLSAg
ICAgICAgcGFpbnREaXJ0eVJlY3Quc2V0V2lkdGgobWF4PExheW91dFVuaXQ+KHBhaW50RGlydHlS
ZWN0LndpZHRoKCksIHJvb3RMYXllci0+cmVuZGVyQm94KCktPmxheW91dE92ZXJmbG93UmVjdCgp
Lm1heFgoKSkpOwotICAgICAgICBwYWludERpcnR5UmVjdC5zZXRIZWlnaHQobWF4PExheW91dFVu
aXQ+KHBhaW50RGlydHlSZWN0LmhlaWdodCgpLCByb290TGF5ZXItPnJlbmRlckJveCgpLT5sYXlv
dXRPdmVyZmxvd1JlY3QoKS5tYXhZKCkpKTsKKyAgICAgICAgcGFpbnREaXJ0eVJlY3Quc2V0V2lk
dGgoc3RkOjptYXg8TGF5b3V0VW5pdD4ocGFpbnREaXJ0eVJlY3Qud2lkdGgoKSwgcm9vdExheWVy
LT5yZW5kZXJCb3goKS0+bGF5b3V0T3ZlcmZsb3dSZWN0KCkubWF4WCgpKSk7CisgICAgICAgIHBh
aW50RGlydHlSZWN0LnNldEhlaWdodChzdGQ6Om1heDxMYXlvdXRVbml0PihwYWludERpcnR5UmVj
dC5oZWlnaHQoKSwgcm9vdExheWVyLT5yZW5kZXJCb3goKS0+bGF5b3V0T3ZlcmZsb3dSZWN0KCku
bWF4WSgpKSk7CiAgICAgICAgIGwtPnNldFNpemUobC0+c2l6ZSgpLmV4cGFuZGVkVG8ocGl4ZWxT
bmFwcGVkSW50U2l6ZShtYXhMYXlvdXRPdmVyZmxvdyhsLT5yZW5kZXJCb3goKSksIExheW91dFBv
aW50KDAsIDApKSkpOwogICAgIH0KICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9Sb290SW5saW5lQm94LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUm9vdElu
bGluZUJveC5oCmluZGV4IGE5YmI1YjE3NDQyMmZhZjNkMDEyMDExZDBiOWI1YTY3ZTAyNWE2NTIu
LmY5Y2FhZmU4MjgwYTljOThiNjMxMWY2NGMyZWRlNzQyNzI3N2ZhOWIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9Sb290SW5saW5lQm94LmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1Jvb3RJbmxpbmVCb3guaApAQCAtNzEsMTAgKzcxLDEwIEBAIHB1YmxpYzoK
IAogICAgIExheW91dFVuaXQgc2VsZWN0aW9uVG9wKCkgY29uc3Q7CiAgICAgTGF5b3V0VW5pdCBz
ZWxlY3Rpb25Cb3R0b20oKSBjb25zdDsKLSAgICBMYXlvdXRVbml0IHNlbGVjdGlvbkhlaWdodCgp
IGNvbnN0IHsgcmV0dXJuIG1heDxMYXlvdXRVbml0PigwLCBzZWxlY3Rpb25Cb3R0b20oKSAtIHNl
bGVjdGlvblRvcCgpKTsgfQorICAgIExheW91dFVuaXQgc2VsZWN0aW9uSGVpZ2h0KCkgY29uc3Qg
eyByZXR1cm4gc3RkOjptYXg8TGF5b3V0VW5pdD4oMCwgc2VsZWN0aW9uQm90dG9tKCkgLSBzZWxl
Y3Rpb25Ub3AoKSk7IH0KIAogICAgIExheW91dFVuaXQgc2VsZWN0aW9uVG9wQWRqdXN0ZWRGb3JQ
cmVjZWRpbmdCbG9jaygpIGNvbnN0OwotICAgIExheW91dFVuaXQgc2VsZWN0aW9uSGVpZ2h0QWRq
dXN0ZWRGb3JQcmVjZWRpbmdCbG9jaygpIGNvbnN0IHsgcmV0dXJuIG1heDxMYXlvdXRVbml0Pigw
LCBzZWxlY3Rpb25Cb3R0b20oKSAtIHNlbGVjdGlvblRvcEFkanVzdGVkRm9yUHJlY2VkaW5nQmxv
Y2soKSk7IH0KKyAgICBMYXlvdXRVbml0IHNlbGVjdGlvbkhlaWdodEFkanVzdGVkRm9yUHJlY2Vk
aW5nQmxvY2soKSBjb25zdCB7IHJldHVybiBzdGQ6Om1heDxMYXlvdXRVbml0PigwLCBzZWxlY3Rp
b25Cb3R0b20oKSAtIHNlbGVjdGlvblRvcEFkanVzdGVkRm9yUHJlY2VkaW5nQmxvY2soKSk7IH0K
IAogICAgIGludCBibG9ja0RpcmVjdGlvblBvaW50SW5MaW5lKCkgY29uc3Q7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MUm93LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MUm93LmNwcAppbmRl
eCBkNjhlZWFlOTM1ZGE1M2E3ZjNkM2I0OTcxNDI3YmRmNjRmYmJiYTI5Li5kOGQ0NWUzZGJjNWU2
MWRmYjcxYWRjOGY5ZmFiMGRmZTIwZjFiOTAyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFJvdy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxSb3cuY3BwCkBAIC02NCw3ICs2NCw3IEBAIHZv
aWQgUmVuZGVyTWF0aE1MUm93OjpsYXlvdXQoKQogICAgICAgICBpZiAoY2hpbGQtPmlzUmVuZGVy
TWF0aE1MQmxvY2soKSAmJiB0b1JlbmRlck1hdGhNTEJsb2NrKGNoaWxkKS0+dW5lbWJlbGxpc2hl
ZE9wZXJhdG9yKCkpCiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgaWYgKGNoaWxkLT5p
c0JveCgpKQotICAgICAgICAgICAgc3RyZXRjaExvZ2ljYWxIZWlnaHQgPSBtYXg8aW50PihzdHJl
dGNoTG9naWNhbEhlaWdodCwgcm91bmRUb0ludCh0b1JlbmRlckJveChjaGlsZCktPmxvZ2ljYWxI
ZWlnaHQoKSkpOworICAgICAgICAgICAgc3RyZXRjaExvZ2ljYWxIZWlnaHQgPSBzdGQ6Om1heDxp
bnQ+KHN0cmV0Y2hMb2dpY2FsSGVpZ2h0LCByb3VuZFRvSW50KHRvUmVuZGVyQm94KGNoaWxkKS0+
bG9naWNhbEhlaWdodCgpKSk7CiAgICAgfQogICAgIGlmICghc3RyZXRjaExvZ2ljYWxIZWlnaHQp
CiAgICAgICAgIHN0cmV0Y2hMb2dpY2FsSGVpZ2h0ID0gc3R5bGUoKS0+Zm9udFNpemUoKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MU2Ny
aXB0cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFNj
cmlwdHMuY3BwCmluZGV4IGEyZDMzMDkwMTA4ODYzN2EwODhmMTExYTY4YjY2NmVkMzcwNjNmMTcu
LjNmMDU3YjI3NGU0MzVlMzk2MmY5NzcxNzY5YTdmZDEzNDQ0ZDY3ZDkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MU2NyaXB0cy5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxTY3JpcHRzLmNw
cApAQCAtMzE2LDkgKzMxNiw5IEBAIHZvaWQgUmVuZGVyTWF0aE1MU2NyaXB0czo6bGF5b3V0KCkK
ICAgICAgICAgICAgIExheW91dFVuaXQgc3VwZXJzY3JpcHRCYXNlbGluZSA9IHN1cGVyc2NyaXB0
LT5maXJzdExpbmVCYXNlbGluZSgpOwogICAgICAgICAgICAgaWYgKHN1cGVyc2NyaXB0QmFzZWxp
bmUgPT0gLTEpCiAgICAgICAgICAgICAgICAgc3VwZXJzY3JpcHRCYXNlbGluZSA9IHN1cGVyc2Ny
aXB0SGVpZ2h0OwotICAgICAgICAgICAgTGF5b3V0VW5pdCBtaW5CYXNlbGluZSA9IG1heDxMYXlv
dXRVbml0Pihmb250U2l6ZSAvIDMgKyAxICsgc3VwZXJzY3JpcHRCYXNlbGluZSwgc3VwZXJzY3Jp
cHRIZWlnaHQgKyBheGlzICsgc3VwZXJzY3JpcHRTaGlmdFZhbHVlKTsKKyAgICAgICAgICAgIExh
eW91dFVuaXQgbWluQmFzZWxpbmUgPSBzdGQ6Om1heDxMYXlvdXRVbml0Pihmb250U2l6ZSAvIDMg
KyAxICsgc3VwZXJzY3JpcHRCYXNlbGluZSwgc3VwZXJzY3JpcHRIZWlnaHQgKyBheGlzICsgc3Vw
ZXJzY3JpcHRTaGlmdFZhbHVlKTsKIAotICAgICAgICAgICAgdG9wUGFkZGluZyA9IG1heDxMYXlv
dXRVbml0Pih0b3BQYWRkaW5nLCBtaW5CYXNlbGluZSAtIGJhc2VCYXNlbGluZSk7CisgICAgICAg
ICAgICB0b3BQYWRkaW5nID0gc3RkOjptYXg8TGF5b3V0VW5pdD4odG9wUGFkZGluZywgbWluQmFz
ZWxpbmUgLSBiYXNlQmFzZWxpbmUpOwogICAgICAgICB9CiAKICAgICAgICAgaWYgKFJlbmRlckJv
eCogc3Vic2NyaXB0ID0gbV9raW5kID09IFN1cGVyID8gMCA6IHN1YlN1cFBhaXItPmZpcnN0Q2hp
bGRCb3goKSkgewpAQCAtMzI4LDkgKzMyOCw5IEBAIHZvaWQgUmVuZGVyTWF0aE1MU2NyaXB0czo6
bGF5b3V0KCkKICAgICAgICAgICAgICAgICBzdWJzY3JpcHRCYXNlbGluZSA9IHN1YnNjcmlwdEhl
aWdodDsKICAgICAgICAgICAgIExheW91dFVuaXQgYmFzZUV4dGVuZFVuZGVyQmFzZWxpbmUgPSBi
YXNlSGVpZ2h0IC0gYmFzZUJhc2VsaW5lOwogICAgICAgICAgICAgTGF5b3V0VW5pdCBzdWJzY3Jp
cHRVbmRlckl0c0Jhc2VsaW5lID0gc3Vic2NyaXB0SGVpZ2h0IC0gc3Vic2NyaXB0QmFzZWxpbmU7
Ci0gICAgICAgICAgICBMYXlvdXRVbml0IG1pbkV4dGVuZFVuZGVyQmFzZWxpbmUgPSBtYXg8TGF5
b3V0VW5pdD4oZm9udFNpemUgLyA1ICsgMSArIHN1YnNjcmlwdFVuZGVySXRzQmFzZWxpbmUsIHN1
YnNjcmlwdEhlaWdodCArIHN1YnNjcmlwdFNoaWZ0VmFsdWUgLSBheGlzKTsKKyAgICAgICAgICAg
IExheW91dFVuaXQgbWluRXh0ZW5kVW5kZXJCYXNlbGluZSA9IHN0ZDo6bWF4PExheW91dFVuaXQ+
KGZvbnRTaXplIC8gNSArIDEgKyBzdWJzY3JpcHRVbmRlckl0c0Jhc2VsaW5lLCBzdWJzY3JpcHRI
ZWlnaHQgKyBzdWJzY3JpcHRTaGlmdFZhbHVlIC0gYXhpcyk7CiAKLSAgICAgICAgICAgIGJvdHRv
bVBhZGRpbmcgPSBtYXg8TGF5b3V0VW5pdD4oYm90dG9tUGFkZGluZywgbWluRXh0ZW5kVW5kZXJC
YXNlbGluZSAtIGJhc2VFeHRlbmRVbmRlckJhc2VsaW5lKTsKKyAgICAgICAgICAgIGJvdHRvbVBh
ZGRpbmcgPSBzdGQ6Om1heDxMYXlvdXRVbml0Pihib3R0b21QYWRkaW5nLCBtaW5FeHRlbmRVbmRl
ckJhc2VsaW5lIC0gYmFzZUV4dGVuZFVuZGVyQmFzZWxpbmUpOwogICAgICAgICB9CiAgICAgfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUu
aCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5oCmluZGV4IGU5
ZDdiZTY4MmFkNWJlNzdiZTQ3YzFjMDRiMDdmY2NjOTU1ZjgzNGYuLjZhMzQxOTgyYjJiZGM3ODYz
NTcwYjFlMzhjMTI4N2NiMWVkZGFiZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zdHlsZS9SZW5kZXJTdHlsZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
dHlsZS9SZW5kZXJTdHlsZS5oCkBAIC0xMDMsOCArMTAzLDYgQEAgdGVtcGxhdGU8dHlwZW5hbWUg
VCwgdHlwZW5hbWUgVT4gaW5saW5lIGJvb2wgY29tcGFyZUVxdWFsKGNvbnN0IFQmIHQsIGNvbnN0
IFUmIHUKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi11c2luZyBzdGQ6Om1heDsKLQogI2lmIEVO
QUJMRShDU1NfRklMVEVSUykKIGNsYXNzIEZpbHRlck9wZXJhdGlvbnM7CiAjZW5kaWYKQEAgLTUy
NSw3ICs1MjMsNyBAQCBwdWJsaWM6CiAgICAgdW5zaWduZWQgc2hvcnQgYm9yZGVyU3RhcnRXaWR0
aCgpIGNvbnN0OwogICAgIHVuc2lnbmVkIHNob3J0IGJvcmRlckVuZFdpZHRoKCkgY29uc3Q7CiAK
LSAgICB1bnNpZ25lZCBzaG9ydCBvdXRsaW5lU2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1heCgwLCBv
dXRsaW5lV2lkdGgoKSArIG91dGxpbmVPZmZzZXQoKSk7IH0KKyAgICB1bnNpZ25lZCBzaG9ydCBv
dXRsaW5lU2l6ZSgpIGNvbnN0IHsgcmV0dXJuIHN0ZDo6bWF4KDAsIG91dGxpbmVXaWR0aCgpICsg
b3V0bGluZU9mZnNldCgpKTsgfQogICAgIHVuc2lnbmVkIHNob3J0IG91dGxpbmVXaWR0aCgpIGNv
bnN0CiAgICAgewogICAgICAgICBpZiAobV9iYWNrZ3JvdW5kLT5vdXRsaW5lKCkuc3R5bGUoKSA9
PSBCTk9ORSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHls
ZUdlbmVyYXRlZEltYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHls
ZUdlbmVyYXRlZEltYWdlLmNwcAppbmRleCAyNzhhODU3NzAyMWExYjIxMTg0NTAwMTRlNjNhOTlh
MDJhZDYzMTUzLi5lNGZjNzEyMGY5ZjY4NDUwMjlhYWZjOGNlOGM5OTQ5YzYzYzlkMDBiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVHZW5lcmF0ZWRJbWFn
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlR2VuZXJhdGVk
SW1hZ2UuY3BwCkBAIC01NCwxMCArNTQsMTAgQEAgTGF5b3V0U2l6ZSBTdHlsZUdlbmVyYXRlZElt
YWdlOjppbWFnZVNpemUoY29uc3QgUmVuZGVyRWxlbWVudCogcmVuZGVyZXIsIGZsb2F0IG0KIAog
ICAgICAgICAvLyBEb24ndCBsZXQgaW1hZ2VzIHRoYXQgaGF2ZSBhIHdpZHRoL2hlaWdodCA+PSAx
IHNocmluayBiZWxvdyAxIHdoZW4gem9vbWVkLgogICAgICAgICBpZiAoZml4ZWRTaXplLndpZHRo
KCkgPiAwKQotICAgICAgICAgICAgd2lkdGggPSBtYXg8TGF5b3V0VW5pdD4oMSwgd2lkdGgpOwor
ICAgICAgICAgICAgd2lkdGggPSBzdGQ6Om1heDxMYXlvdXRVbml0PigxLCB3aWR0aCk7CiAKICAg
ICAgICAgaWYgKGZpeGVkU2l6ZS5oZWlnaHQoKSA+IDApCi0gICAgICAgICAgICBoZWlnaHQgPSBt
YXg8TGF5b3V0VW5pdD4oMSwgaGVpZ2h0KTsKKyAgICAgICAgICAgIGhlaWdodCA9IHN0ZDo6bWF4
PExheW91dFVuaXQ+KDEsIGhlaWdodCk7CiAKICAgICAgICAgcmV0dXJuIExheW91dFNpemUod2lk
dGgsIGhlaWdodCk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5
bGVGb250U2l6ZUZ1bmN0aW9ucy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZUZvbnRT
aXplRnVuY3Rpb25zLmNwcAppbmRleCA2OGRkYTcxOTllYTBiMjYzOGE5MGU1MGU5NzQ0ZThhYTE4
NGE4OTI4Li4wYWIzZTE2M2ZiMWM1NTkyZDY0NTczMzYxNDYxYjZjNDU0MzFmNTNmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZUZvbnRTaXplRnVuY3Rpb25zLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZUZvbnRTaXplRnVuY3Rpb25zLmNwcApAQCAtMTU3
LDggKzE1Nyw4IEBAIGZsb2F0IGZvbnRTaXplRm9yS2V5d29yZCh1bnNpZ25lZCBrZXl3b3JkSUQs
IGJvb2wgc2hvdWxkVXNlRml4ZWREZWZhdWx0U2l6ZSwgY29uCiAgICAgfQogCiAgICAgLy8gVmFs
dWUgaXMgb3V0c2lkZSB0aGUgcmFuZ2Ugb2YgdGhlIHRhYmxlLiBBcHBseSB0aGUgc2NhbGUgZmFj
dG9yIGluc3RlYWQuCi0gICAgZmxvYXQgbWluTG9naWNhbFNpemUgPSBtYXgoc2V0dGluZ3MtPm1p
bmltdW1Mb2dpY2FsRm9udFNpemUoKSwgMSk7Ci0gICAgcmV0dXJuIG1heChmb250U2l6ZUZhY3Rv
cnNba2V5d29yZElEIC0gQ1NTVmFsdWVYeFNtYWxsXSAqIG1lZGl1bVNpemUsIG1pbkxvZ2ljYWxT
aXplKTsKKyAgICBmbG9hdCBtaW5Mb2dpY2FsU2l6ZSA9IHN0ZDo6bWF4KHNldHRpbmdzLT5taW5p
bXVtTG9naWNhbEZvbnRTaXplKCksIDEpOworICAgIHJldHVybiBzdGQ6Om1heChmb250U2l6ZUZh
Y3RvcnNba2V5d29yZElEIC0gQ1NTVmFsdWVYeFNtYWxsXSAqIG1lZGl1bVNpemUsIG1pbkxvZ2lj
YWxTaXplKTsKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgVD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdTVkdFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTVkdF
bGVtZW50LmNwcAppbmRleCBhNDBiOTU5NmM5MjczNzBlOGVlODhhZWQxOGY1YzY5MjYzOTYwMDRm
Li44NWI4YTYzZDM1ZTQzMGI0NTk2ODFkZDdlNTVhMzFhMTc4YWIzMjkzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHU1ZHRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
c3ZnL1NWR1NWR0VsZW1lbnQuY3BwCkBAIC01MzUsNyArNTM1LDcgQEAgdm9pZCBTVkdTVkdFbGVt
ZW50OjpzZXRDdXJyZW50VGltZShmbG9hdCBzZWNvbmRzKQogewogICAgIGlmIChzdGQ6OmlzbmFu
KHNlY29uZHMpKQogICAgICAgICByZXR1cm47Ci0gICAgc2Vjb25kcyA9IG1heChzZWNvbmRzLCAw
LjBmKTsKKyAgICBzZWNvbmRzID0gc3RkOjptYXgoc2Vjb25kcywgMC4wZik7CiAgICAgbV90aW1l
Q29udGFpbmVyLT5zZXRFbGFwc2VkKHNlY29uZHMpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L21hYy9XZWJWaWV3L1dlYkZyYW1lVmlldy5tbSBiL1NvdXJjZS9XZWJLaXQvbWFjL1dl
YlZpZXcvV2ViRnJhbWVWaWV3Lm1tCmluZGV4IDZjZTBmM2EyN2EzNWYzMGE5YjliOTZhN2RlYzgy
MmI4YmQ1MTVkZjEuLmY5ZmMxMzkyMDgzMzYwZGM1ODY3MDc1ZjZlMGM2MmI3YjAwNjJiMDEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViRnJhbWVWaWV3Lm1tCisrKyBi
L1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViRnJhbWVWaWV3Lm1tCkBAIC0yMTYsNyArMjE2
LDcgQEAgZW51bSB7CiAtIChmbG9hdClfdmVydGljYWxQYWdlU2Nyb2xsRGlzdGFuY2UKIHsKICAg
ICBmbG9hdCBoZWlnaHQgPSBbW3NlbGYgX2NvbnRlbnRWaWV3XSBib3VuZHNdLnNpemUuaGVpZ2h0
OwotICAgIHJldHVybiBtYXg8ZmxvYXQ+KGhlaWdodCAqIFNjcm9sbGJhcjo6bWluRnJhY3Rpb25U
b1N0ZXBXaGVuUGFnaW5nKCksIGhlaWdodCAtIFNjcm9sbGJhcjo6bWF4T3ZlcmxhcEJldHdlZW5Q
YWdlcygpKTsKKyAgICByZXR1cm4gc3RkOjptYXg8ZmxvYXQ+KGhlaWdodCAqIFNjcm9sbGJhcjo6
bWluRnJhY3Rpb25Ub1N0ZXBXaGVuUGFnaW5nKCksIGhlaWdodCAtIFNjcm9sbGJhcjo6bWF4T3Zl
cmxhcEJldHdlZW5QYWdlcygpKTsKIH0KIAogc3RhdGljIGlubGluZSB2b2lkIGFkZFR5cGVzRnJv
bUNsYXNzKE5TTXV0YWJsZURpY3Rpb25hcnkgKmFsbFR5cGVzLCBDbGFzcyBvYmpDQ2xhc3MsIE5T
QXJyYXkgKnN1cHBvcnRUeXBlcykKQEAgLTY5OCw3ICs2OTgsNyBAQCBzdGF0aWMgaW5saW5lIHZv
aWQgYWRkVHlwZXNGcm9tQ2xhc3MoTlNNdXRhYmxlRGljdGlvbmFyeSAqYWxsVHlwZXMsIENsYXNz
IG9iakNDbAogLSAoZmxvYXQpX2hvcml6b250YWxQYWdlU2Nyb2xsRGlzdGFuY2UKIHsKICAgICBm
bG9hdCB3aWR0aCA9IFtbc2VsZiBfY29udGVudFZpZXddIGJvdW5kc10uc2l6ZS53aWR0aDsKLSAg
ICByZXR1cm4gbWF4PGZsb2F0Pih3aWR0aCAqIFNjcm9sbGJhcjo6bWluRnJhY3Rpb25Ub1N0ZXBX
aGVuUGFnaW5nKCksIHdpZHRoIC0gU2Nyb2xsYmFyOjptYXhPdmVybGFwQmV0d2VlblBhZ2VzKCkp
OworICAgIHJldHVybiBzdGQ6Om1heDxmbG9hdD4od2lkdGggKiBTY3JvbGxiYXI6Om1pbkZyYWN0
aW9uVG9TdGVwV2hlblBhZ2luZygpLCB3aWR0aCAtIFNjcm9sbGJhcjo6bWF4T3ZlcmxhcEJldHdl
ZW5QYWdlcygpKTsKIH0KIAogLSAoQk9PTClfcGFnZVZlcnRpY2FsbHk6KEJPT0wpdXAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViSFRNTFZpZXcubW0gYi9Tb3VyY2Uv
V2ViS2l0L21hYy9XZWJWaWV3L1dlYkhUTUxWaWV3Lm1tCmluZGV4IGViNWIxMTgxZWNiZDgyYjRl
ZWMyMGJkM2M0ZDU4ZDMxNGVmNjBmODUuLjQwZDFhYzUyOGM5NzdjM2MxOWYyYTcxZWM5NmRlN2Jl
YTgzNGI0OTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViSFRNTFZp
ZXcubW0KKysrIGIvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJIVE1MVmlldy5tbQpAQCAt
Mzk4NCw3ICszOTg0LDcgQEAgc3RhdGljIFBhc3NSZWZQdHI8S2V5Ym9hcmRFdmVudD4gY3VycmVu
dEtleWJvYXJkRXZlbnQoRnJhbWUqIGNvcmVGcmFtZSkKICAgICBmbG9hdCB1c2VyU2NhbGVGYWN0
b3IgPSBbcHJpbnRPcGVyYXRpb24gX3dlYl9wYWdlU2V0dXBTY2FsZUZhY3Rvcl07CiAgICAgZmxv
YXQgbWF4U2hyaW5rVG9GaXRTY2FsZUZhY3RvciA9IDEuMGYgLyBfV2ViSFRNTFZpZXdQcmludGlu
Z01heGltdW1TaHJpbmtGYWN0b3I7CiAgICAgZmxvYXQgc2hyaW5rVG9GaXRTY2FsZUZhY3RvciA9
ICh1c2VWaWV3V2lkdGggPyBbcHJpbnRPcGVyYXRpb24gX3dlYl9hdmFpbGFibGVQYXBlcldpZHRo
XSA6ICBbcHJpbnRPcGVyYXRpb24gX3dlYl9hdmFpbGFibGVQYXBlckhlaWdodF0pIC8gdmlld0xv
Z2ljYWxXaWR0aDsKLSAgICByZXR1cm4gdXNlclNjYWxlRmFjdG9yICogbWF4KG1heFNocmlua1Rv
Rml0U2NhbGVGYWN0b3IsIHNocmlua1RvRml0U2NhbGVGYWN0b3IpOworICAgIHJldHVybiB1c2Vy
U2NhbGVGYWN0b3IgKiBzdGQ6Om1heChtYXhTaHJpbmtUb0ZpdFNjYWxlRmFjdG9yLCBzaHJpbmtU
b0ZpdFNjYWxlRmFjdG9yKTsKIH0KIAogLy8gRklYTUUgMzQ5MTM0NDogVGhpcyBpcyBhIHNlY3Jl
dCBBcHBLaXQtaW50ZXJuYWwgbWV0aG9kIHRoYXQgd2UgbmVlZCB0byBvdmVycmlkZSBpbiBvcmRl
cgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tIGIvU291
cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCmluZGV4IDc1MGM3OWFmYzJhMGVmOGVk
Y2NiMWJmNjAwNGQzMTk2YWU0NDg4MTYuLjE5NTU5Y2JkOWE5YTc5MzQxZDg0NTk2ZGRhZWYxOWJl
MzI5ODM0ZGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlldy5t
bQorKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXcubW0KQEAgLTYwNzEsNyAr
NjA3MSw3IEBAIHN0YXRpYyBpbmxpbmUgdWludDY0X3Qgcm91bmRVcFRvUG93ZXJPZjIodWludDY0
X3QgbnVtKQogCiAgICAgICAgIC8vIFRoaXMgY29kZSBpcyBoZXJlIHRvIGF2b2lkIGEgUExUIHJl
Z3Jlc3Npb24uIFdlIGNhbiByZW1vdmUgaXQgaWYgd2UKICAgICAgICAgLy8gY2FuIHByb3ZlIHRo
YXQgdGhlIG92ZXJhbGwgc3lzdGVtIGdhaW4gd291bGQganVzdGlmeSB0aGUgcmVncmVzc2lvbi4K
LSAgICAgICAgY2FjaGVNYXhEZWFkQ2FwYWNpdHkgPSBtYXgoMjR1LCBjYWNoZU1heERlYWRDYXBh
Y2l0eSk7CisgICAgICAgIGNhY2hlTWF4RGVhZENhcGFjaXR5ID0gc3RkOjptYXg8dW5zaWduZWQ+
KDI0LCBjYWNoZU1heERlYWRDYXBhY2l0eSk7CiAKICAgICAgICAgZGVhZERlY29kZWREYXRhRGVs
ZXRpb25JbnRlcnZhbCA9IDYwOwogCkBAIC02MTA4LDcgKzYxMDgsNyBAQCBzdGF0aWMgaW5saW5l
IHVpbnQ2NF90IHJvdW5kVXBUb1Bvd2VyT2YyKHVpbnQ2NF90IG51bSkKIAogCiAgICAgLy8gRG9u
J3Qgc2hyaW5rIGEgYmlnIGRpc2sgY2FjaGUsIHNpbmNlIHRoYXQgd291bGQgY2F1c2UgY2h1cm4u
Ci0gICAgbnN1cmxDYWNoZURpc2tDYXBhY2l0eSA9IG1heChuc3VybENhY2hlRGlza0NhcGFjaXR5
LCBbbnN1cmxDYWNoZSBkaXNrQ2FwYWNpdHldKTsKKyAgICBuc3VybENhY2hlRGlza0NhcGFjaXR5
ID0gc3RkOjptYXgobnN1cmxDYWNoZURpc2tDYXBhY2l0eSwgW25zdXJsQ2FjaGUgZGlza0NhcGFj
aXR5XSk7CiAKICAgICBtZW1vcnlDYWNoZSgpLT5zZXRDYXBhY2l0aWVzKGNhY2hlTWluRGVhZENh
cGFjaXR5LCBjYWNoZU1heERlYWRDYXBhY2l0eSwgY2FjaGVUb3RhbENhcGFjaXR5KTsKICAgICBt
ZW1vcnlDYWNoZSgpLT5zZXREZWFkRGVjb2RlZERhdGFEZWxldGlvbkludGVydmFsKGRlYWREZWNv
ZGVkRGF0YURlbGV0aW9uSW50ZXJ2YWwpOwpAQCAtNjEzNSw3ICs2MTM1LDcgQEAgc3RhdGljIGlu
bGluZSB1aW50NjRfdCByb3VuZFVwVG9Qb3dlck9mMih1aW50NjRfdCBudW0pCiAgICAgV2ViQ2Fj
aGVNb2RlbCBjYWNoZU1vZGVsID0gV2ViQ2FjaGVNb2RlbERvY3VtZW50Vmlld2VyOwogICAgIE5T
RW51bWVyYXRvciAqZW51bWVyYXRvciA9IFsoTlNNdXRhYmxlU2V0ICopYWxsV2ViVmlld3NTZXQg
b2JqZWN0RW51bWVyYXRvcl07CiAgICAgd2hpbGUgKFdlYlByZWZlcmVuY2VzICpwcmVmZXJlbmNl
cyA9IFtbZW51bWVyYXRvciBuZXh0T2JqZWN0XSBwcmVmZXJlbmNlc10pCi0gICAgICAgIGNhY2hl
TW9kZWwgPSBtYXgoY2FjaGVNb2RlbCwgW3ByZWZlcmVuY2VzIGNhY2hlTW9kZWxdKTsKKyAgICAg
ICAgY2FjaGVNb2RlbCA9IHN0ZDo6bWF4KGNhY2hlTW9kZWwsIFtwcmVmZXJlbmNlcyBjYWNoZU1v
ZGVsXSk7CiAgICAgcmV0dXJuIGNhY2hlTW9kZWw7CiB9CiAKQEAgLTYxNDgsNyArNjE0OCw3IEBA
IHN0YXRpYyBpbmxpbmUgdWludDY0X3Qgcm91bmRVcFRvUG93ZXJPZjIodWludDY0X3QgbnVtKQog
ICAgIGlmICghW3NlbGYgX2RpZFNldENhY2hlTW9kZWxdIHx8IGNhY2hlTW9kZWwgPiBbc2VsZiBf
Y2FjaGVNb2RlbF0pCiAgICAgICAgIFtzZWxmIF9zZXRDYWNoZU1vZGVsOmNhY2hlTW9kZWxdOwog
ICAgIGVsc2UgaWYgKGNhY2hlTW9kZWwgPCBbc2VsZiBfY2FjaGVNb2RlbF0pCi0gICAgICAgIFtz
ZWxmIF9zZXRDYWNoZU1vZGVsOm1heChbW1dlYlByZWZlcmVuY2VzIHN0YW5kYXJkUHJlZmVyZW5j
ZXNdIGNhY2hlTW9kZWxdLCBbc2VsZiBfbWF4Q2FjaGVNb2RlbEluQW55SW5zdGFuY2VdKV07Cisg
ICAgICAgIFtzZWxmIF9zZXRDYWNoZU1vZGVsOnN0ZDo6bWF4KFtbV2ViUHJlZmVyZW5jZXMgc3Rh
bmRhcmRQcmVmZXJlbmNlc10gY2FjaGVNb2RlbF0sIFtzZWxmIF9tYXhDYWNoZU1vZGVsSW5BbnlJ
bnN0YW5jZV0pXTsKIH0KIAogKyAodm9pZClfcHJlZmVyZW5jZXNSZW1vdmVkTm90aWZpY2F0aW9u
OihOU05vdGlmaWNhdGlvbiAqKW5vdGlmaWNhdGlvbgpAQCAtNjE1Nyw3ICs2MTU3LDcgQEAgc3Rh
dGljIGlubGluZSB1aW50NjRfdCByb3VuZFVwVG9Qb3dlck9mMih1aW50NjRfdCBudW0pCiAgICAg
QVNTRVJUKFtwcmVmZXJlbmNlcyBpc0tpbmRPZkNsYXNzOltXZWJQcmVmZXJlbmNlcyBjbGFzc11d
KTsKIAogICAgIGlmIChbcHJlZmVyZW5jZXMgY2FjaGVNb2RlbF0gPT0gW3NlbGYgX2NhY2hlTW9k
ZWxdKQotICAgICAgICBbc2VsZiBfc2V0Q2FjaGVNb2RlbDptYXgoW1tXZWJQcmVmZXJlbmNlcyBz
dGFuZGFyZFByZWZlcmVuY2VzXSBjYWNoZU1vZGVsXSwgW3NlbGYgX21heENhY2hlTW9kZWxJbkFu
eUluc3RhbmNlXSldOworICAgICAgICBbc2VsZiBfc2V0Q2FjaGVNb2RlbDpzdGQ6Om1heChbW1dl
YlByZWZlcmVuY2VzIHN0YW5kYXJkUHJlZmVyZW5jZXNdIGNhY2hlTW9kZWxdLCBbc2VsZiBfbWF4
Q2FjaGVNb2RlbEluQW55SW5zdGFuY2VdKV07CiB9CiAKIC0gKFdlYkZyYW1lICopX2ZvY3VzZWRG
cmFtZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9tYWMvV2ViUHJvY2Vz
c01hYy5tbSBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvbWFjL1dlYlByb2Nlc3NNYWMubW0K
aW5kZXggOTFkYzRkYmYyYWQ0ZDQyOGQ3MzUyMGQ4MjRhOTEzMWNjNWI5N2NlMy4uNGRkNjVhNWUx
Zjc2MjVmOTI4NDFmNjhmNzk3YzUwYTFlODMwNDlhNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9tYWMvV2ViUHJvY2Vzc01hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL21hYy9XZWJQcm9jZXNzTWFjLm1tCkBAIC0xMjYsNyArMTI2LDcgQEAgdm9pZCBX
ZWJQcm9jZXNzOjpwbGF0Zm9ybVNldENhY2hlTW9kZWwoQ2FjaGVNb2RlbCBjYWNoZU1vZGVsKQog
I2VuZGlmCiAKICAgICBbbnN1cmxDYWNoZSBzZXRNZW1vcnlDYXBhY2l0eTp1cmxDYWNoZU1lbW9y
eUNhcGFjaXR5XTsKLSAgICBbbnN1cmxDYWNoZSBzZXREaXNrQ2FwYWNpdHk6bWF4PHVuc2lnbmVk
IGxvbmc+KHVybENhY2hlRGlza0NhcGFjaXR5LCBbbnN1cmxDYWNoZSBkaXNrQ2FwYWNpdHldKV07
IC8vIERvbid0IHNocmluayBhIGJpZyBkaXNrIGNhY2hlLCBzaW5jZSB0aGF0IHdvdWxkIGNhdXNl
IGNodXJuLgorICAgIFtuc3VybENhY2hlIHNldERpc2tDYXBhY2l0eTpzdGQ6Om1heDx1bnNpZ25l
ZCBsb25nPih1cmxDYWNoZURpc2tDYXBhY2l0eSwgW25zdXJsQ2FjaGUgZGlza0NhcGFjaXR5XSld
OyAvLyBEb24ndCBzaHJpbmsgYSBiaWcgZGlzayBjYWNoZSwgc2luY2UgdGhhdCB3b3VsZCBjYXVz
ZSBjaHVybi4KIH0KIAogdm9pZCBXZWJQcm9jZXNzOjpwbGF0Zm9ybUNsZWFyUmVzb3VyY2VDYWNo
ZXMoUmVzb3VyY2VDYWNoZXNUb0NsZWFyIGNhY2hlc1RvQ2xlYXIpCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>215078</attachid>
            <date>2013-10-24 10:16:03 -0700</date>
            <delta_ts>2013-10-24 18:13:55 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-123273-20131024101600.patch</filename>
            <type>text/plain</type>
            <size>190412</size>
            <attacher name="Anders Carlsson">andersca</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTU3OTI2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjA1YzkyNTBmYTZjODUz
ZDhhOTlkZDViOTNmYTA2ZDNkNTAzZTAyZC4uNWJhOWJmZGE1ZjgxNmViMDQwMzg5NDhjNjM5NDE1
YjBmMGYzOWJhZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI5MSBAQAorMjAxMy0xMC0yNCAgQW5k
ZXJzIENhcmxzc29uICA8YW5kZXJzY2FAYXBwbGUuY29tPgorCisgICAgICAgIFN0b3AgYnJpbmdp
bmcgaW4gdGhlIHN0ZCBuYW1lc3BhY2UKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTEyMzI3MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9BdWRpb0J1ZmZlclNvdXJjZU5vZGUu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9CdWZmZXJTb3VyY2VOb2RlOjpyZW5kZXJGcm9t
QnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvQnVmZmVyU291cmNlTm9kZTo6c3RhcnRH
cmFpbik6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb0J1ZmZlclNvdXJjZU5vZGU6OnRvdGFsUGl0
Y2hSYXRlKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvTm9kZUlucHV0LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvTm9kZUlucHV0OjpudW1iZXJPZkNoYW5uZWxzKToKKyAg
ICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvUGFyYW1UaW1lbGluZS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpBdWRpb1BhcmFtVGltZWxpbmU6OnZhbHVlc0ZvclRpbWVSYW5nZUltcGwpOgor
ICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vQXVkaW9TY2hlZHVsZWRTb3VyY2VOb2RlLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvU2NoZWR1bGVkU291cmNlTm9kZTo6dXBkYXRlU2NoZWR1
bGluZ0luZm8pOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9TY2hlZHVsZWRTb3VyY2VOb2RlOjpz
dG9wKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvU3VtbWluZ0p1bmN0aW9uLmNw
cDoKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL0RlbGF5RFNQS2VybmVsLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkRlbGF5RFNQS2VybmVsOjpwcm9jZXNzKToKKyAgICAgICAgKiBNb2R1bGVz
L3dlYmF1ZGlvL09mZmxpbmVBdWRpb0Rlc3RpbmF0aW9uTm9kZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpPZmZsaW5lQXVkaW9EZXN0aW5hdGlvbk5vZGU6Om9mZmxpbmVSZW5kZXIpOgorICAgICAg
ICAqIE1vZHVsZXMvd2ViYXVkaW8vT3NjaWxsYXRvck5vZGUuY3BwOgorICAgICAgICAqIE1vZHVs
ZXMvd2ViYXVkaW8vUGFubmVyTm9kZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQYW5uZXJOb2Rl
Ojpkb3BwbGVyUmF0ZSk6CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9XYXZlU2hhcGVyRFNQ
S2VybmVsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldhdmVTaGFwZXJEU1BLZXJuZWw6OnByb2Nl
c3NDdXJ2ZSk6CisgICAgICAgICogTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZVRyYWNrZXIu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6RGF0YWJhc2VUcmFja2VyOjpoYXNBZGVxdWF0ZVF1b3Rh
Rm9yT3JpZ2luKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OnNhdHVyYXRlQWRkKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYnNv
Y2tldHMvV2ViU29ja2V0Q2hhbm5lbC5jcHA6CisgICAgICAgICogTW9kdWxlcy93ZWJzb2NrZXRz
L1dlYlNvY2tldEZyYW1lLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tldEZyYW1lOjpw
YXJzZUZyYW1lKToKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlBUklBR3Jp
ZC5jcHA6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5QVJJQUdyaWRDZWxs
LmNwcDoKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlBUklBR3JpZFJvdy5j
cHA6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5TGlzdC5jcHA6CisgICAg
ICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5TGlzdEJveC5jcHA6CisgICAgICAgICog
YWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5TGlzdEJveE9wdGlvbi5jcHA6CisgICAgICAgICog
YWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdC5jcHA6CisgICAgICAgICogYWNj
ZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmNwcDoKKyAgICAgICAgKiBhY2Nlc3NpYmls
aXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3BwOgorICAgICAgICAqIGFjY2Vzc2liaWxp
dHkvQWNjZXNzaWJpbGl0eVRhYmxlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxp
dHlUYWJsZTo6YWRkQ2hpbGRyZW4pOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJp
bGl0eVRhYmxlQ2VsbC5jcHA6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5
VGFibGVDb2x1bW4uY3BwOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRh
YmxlSGVhZGVyQ29udGFpbmVyLmNwcDoKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2li
aWxpdHlUYWJsZVJvdy5jcHA6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNz
aWJpbGl0eU9iamVjdFdyYXBwZXJCYXNlLm1tOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvbWFj
L1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyTWFjLm1tOgorICAgICAgICAoLVtXZWJBY2Nl
c3NpYmlsaXR5T2JqZWN0V3JhcHBlciBhY2Nlc3NpYmlsaXR5QXJyYXlBdHRyaWJ1dGVWYWx1ZXM6
aW5kZXg6bWF4Q291bnQ6XSk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNDU1NTdHlsZURlY2xh
cmF0aW9uQ3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTQ1NTU3R5bGVEZWNsYXJhdGlv
bjo6Z2V0T3duUHJvcGVydHlOYW1lcyk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNHZW9sb2Nh
dGlvbkN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpzZXRUaW1lb3V0KToKKyAgICAgICAg
KFdlYkNvcmU6OnNldE1heGltdW1BZ2UpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL1NjcmlwdENv
bnRyb2xsZXIuY3BwOgorICAgICAgICAqIGJpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1
ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjp3cml0ZUxpdHRsZUVuZGlhbik6CisgICAgICAgIChX
ZWJDb3JlOjpDbG9uZVNlcmlhbGl6ZXI6OndyaXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkNsb25l
RGVzZXJpYWxpemVyOjpkZXNlcmlhbGl6ZSk6CisgICAgICAgIChXZWJDb3JlOjpDbG9uZURlc2Vy
aWFsaXplcjo6cmVhZFN0cmluZyk6CisgICAgICAgICogY3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNs
YXJhdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb21wdXRlZFN0eWxlRXh0cmFjdG9yOjpw
cm9wZXJ0eVZhbHVlKToKKyAgICAgICAgKiBjc3MvQ1NTRm9udFNlbGVjdG9yLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkNTU0ZvbnRTZWxlY3Rvcjo6Z2V0Rm9udEZhY2UpOgorICAgICAgICAqIGNz
cy9DU1NHcmFkaWVudFZhbHVlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU1JhZGlhbEdyYWRp
ZW50VmFsdWU6OmNyZWF0ZUdyYWRpZW50KToKKyAgICAgICAgKiBjc3MvQ1NTUGFyc2VyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlcjo6cGFyc2VWYWx1ZSk6CisgICAgICAgIChXZWJD
b3JlOjpDU1NQYXJzZXI6OnBhcnNlQ29sb3JQYXJhbWV0ZXJzKToKKyAgICAgICAgKFdlYkNvcmU6
OkNTU1BhcnNlcjo6cGFyc2VIU0xQYXJhbWV0ZXJzKToKKyAgICAgICAgKiBjc3MvQ1NTUmVmbGVj
dFZhbHVlLmNwcDoKKyAgICAgICAgKiBjc3MvRGVwcmVjYXRlZFN0eWxlQnVpbGRlci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpBcHBseVByb3BlcnR5Rm9udFNpemU6OmFwcGx5VmFsdWUpOgorICAg
ICAgICAqIGNzcy9Qcm9wZXJ0eVNldENTU1N0eWxlRGVjbGFyYXRpb24uY3BwOgorICAgICAgICAq
IGNzcy9TVkdDU1NQYXJzZXIuY3BwOgorICAgICAgICAqIGNzcy9TdHlsZVByb3BlcnR5U2V0LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlUHJvcGVydHlTZXQ6OmdldExheWVyZWRTaG9ydGhh
bmRWYWx1ZSk6CisgICAgICAgICogY3NzL1N0eWxlUmVzb2x2ZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6U3R5bGVSZXNvbHZlcjo6dmlld3BvcnRQZXJjZW50YWdlVmFsdWUpOgorICAgICAgICAq
IGRvbS9DaGFyYWN0ZXJEYXRhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNoYXJhY3RlckRhdGE6
OnBhcnNlckFwcGVuZERhdGEpOgorICAgICAgICAqIGRvbS9Db250YWluZXJOb2RlLmNwcDoKKyAg
ICAgICAgKiBkb20vRG9jdW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6Om1p
bmltdW1MYXlvdXREZWxheSk6CisgICAgICAgICogZG9tL05vZGUuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6Tm9kZTo6Y29tcGFyZURvY3VtZW50UG9zaXRpb24pOgorICAgICAgICAqIGRvbS9SYW5n
ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSYW5nZTo6dG9TdHJpbmcpOgorICAgICAgICAoV2Vi
Q29yZTo6UmFuZ2U6OnRleHRSZWN0cyk6CisgICAgICAgIChXZWJDb3JlOjpSYW5nZTo6dGV4dFF1
YWRzKToKKyAgICAgICAgKiBkb20vU2NyaXB0ZWRBbmltYXRpb25Db250cm9sbGVyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlNjcmlwdGVkQW5pbWF0aW9uQ29udHJvbGxlcjo6c2NoZWR1bGVBbmlt
YXRpb24pOgorICAgICAgICAqIGRvbS9TdHlsZWRFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlN0eWxlZEVsZW1lbnQ6Om1ha2VQcmVzZW50YXRpb25BdHRyaWJ1dGVDYWNoZUtleSk6Cisg
ICAgICAgICogZG9tL1RleHQuY3BwOgorICAgICAgICAqIGRvbS9WaWV3cG9ydEFyZ3VtZW50cy5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpjbGFtcExlbmd0aFZhbHVlKToKKyAgICAgICAgKFdlYkNv
cmU6OmNsYW1wU2NhbGVWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpWaWV3cG9ydEFyZ3VtZW50
czo6cmVzb2x2ZSk6CisgICAgICAgIChXZWJDb3JlOjpjb21wdXRlTWluaW11bVNjYWxlRmFjdG9y
Rm9yQ29udGVudENvbnRhaW5lZCk6CisgICAgICAgIChXZWJDb3JlOjpyZXN0cmljdE1pbmltdW1T
Y2FsZUZhY3RvclRvVmlld3BvcnRTaXplKToKKyAgICAgICAgKiBlZGl0aW5nL0FsdGVybmF0aXZl
VGV4dENvbnRyb2xsZXIuY3BwOgorICAgICAgICAqIGVkaXRpbmcvQXBwbHlTdHlsZUNvbW1hbmQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6QXBwbHlTdHlsZUNvbW1hbmQ6OmFwcGx5UmVsYXRpdmVG
b250U3R5bGVDaGFuZ2UpOgorICAgICAgICAqIGVkaXRpbmcvQ29tcG9zaXRlRWRpdENvbW1hbmQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29tcG9zaXRlRWRpdENvbW1hbmQ6OmRlbGV0ZUluc2ln
bmlmaWNhbnRUZXh0KToKKyAgICAgICAgKiBlZGl0aW5nL0VkaXRvci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpFZGl0b3I6OnNldENvbXBvc2l0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRv
cjo6Y29tcG9zaXRpb25SYW5nZSk6CisgICAgICAgICogZWRpdGluZy9FZGl0b3JDb21tYW5kLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OnZlcnRpY2FsU2Nyb2xsRGlzdGFuY2UpOgorICAgICAgICAq
IGVkaXRpbmcvVGV4dEl0ZXJhdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRleHRJdGVyYXRv
cjo6aGFuZGxlVGV4dE5vZGUpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dEl0ZXJhdG9yOjpoYW5k
bGVUZXh0Qm94KToKKyAgICAgICAgKFdlYkNvcmU6OkNoYXJhY3Rlckl0ZXJhdG9yOjpzdHJpbmcp
OgorICAgICAgICAoV2ViQ29yZTo6U2VhcmNoQnVmZmVyOjpTZWFyY2hCdWZmZXIpOgorICAgICAg
ICAoV2ViQ29yZTo6U2VhcmNoQnVmZmVyOjphcHBlbmQpOgorICAgICAgICAoV2ViQ29yZTo6U2Vh
cmNoQnVmZmVyOjpwcmVwZW5kQ29udGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpTZWFyY2hCdWZm
ZXI6OnNlYXJjaCk6CisgICAgICAgICogZWRpdGluZy9WaXNpYmxlVW5pdHMuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6c3RhcnRPZlBhcmFncmFwaCk6CisgICAgICAgICogZWRpdGluZy9odG1sZWRp
dGluZy5jcHA6CisgICAgICAgICogZWRpdGluZy9tYXJrdXAuY3BwOgorICAgICAgICAqIGZpbGVh
cGkvRmlsZVJlYWRlckxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGaWxlUmVhZGVyTG9h
ZGVyOjpkaWRSZWNlaXZlUmVzcG9uc2UpOgorICAgICAgICAoV2ViQ29yZTo6RmlsZVJlYWRlckxv
YWRlcjo6ZGlkUmVjZWl2ZURhdGEpOgorICAgICAgICAqIGhpc3RvcnkvQmFja0ZvcndhcmRMaXN0
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkJhY2tGb3J3YXJkTGlzdDo6YmFja0xpc3RXaXRoTGlt
aXQpOgorICAgICAgICAoV2ViQ29yZTo6QmFja0ZvcndhcmRMaXN0Ojpmb3J3YXJkTGlzdFdpdGhM
aW1pdCk6CisgICAgICAgICogaGlzdG9yeS9QYWdlQ2FjaGUuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6UGFnZUNhY2hlOjpzZXRDYXBhY2l0eSk6CisgICAgICAgICogaHRtbC9CYXNlRGF0ZUFuZFRp
bWVJbnB1dFR5cGUuY3BwOgorICAgICAgICAqIGh0bWwvRlRQRGlyZWN0b3J5RG9jdW1lbnQuY3Bw
OgorICAgICAgICAqIGh0bWwvSFRNTEFyZWFFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkhUTUxBcmVhRWxlbWVudDo6Z2V0UmVnaW9uKToKKyAgICAgICAgKiBodG1sL0hUTUxFbGVtZW50
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpwYXJzZUNvbG9yU3RyaW5nV2l0aENyYXp5TGVnYWN5UnVsZXMpOgor
ICAgICAgICAqIGh0bWwvSFRNTEZvcm1Db250cm9sRWxlbWVudC5jcHA6CisgICAgICAgICogaHRt
bC9IVE1MRm9ybUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEZvcm1FbGVtZW50
OjpnZXRUZXh0RmllbGRWYWx1ZXMpOgorICAgICAgICAqIGh0bWwvSFRNTEltYWdlRWxlbWVudC5j
cHA6CisgICAgICAgICogaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcDoKKyAgICAgICAgKiBodG1s
L0hUTUxNYXBFbGVtZW50LmNwcDoKKyAgICAgICAgKiBodG1sL0hUTUxNZWRpYUVsZW1lbnQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6SFRNTE1lZGlhRWxlbWVudCk6
CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50Ojp1cGRhdGVBY3RpdmVUZXh0VHJh
Y2tDdWVzKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OnRleHRUcmFja0Fk
ZEN1ZSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50Ojp0ZXh0VHJhY2tSZW1v
dmVDdWUpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6cmV3aW5kKToKKyAg
ICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OnNlZWspOgorICAgICAgICAoV2ViQ29y
ZTo6SFRNTE1lZGlhRWxlbWVudDo6ZHVyYXRpb24pOgorICAgICAgICAqIGh0bWwvSFRNTFNlbGVj
dEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFNlbGVjdEVsZW1lbnQ6OnBhcnNl
QXR0cmlidXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxTZWxlY3RFbGVtZW50Ojp1cGRhdGVM
aXN0Qm94U2VsZWN0aW9uKToKKyAgICAgICAgKiBodG1sL0hUTUxTb3VyY2VFbGVtZW50LmNwcDoK
KyAgICAgICAgKiBodG1sL0hUTUxUYWJsZUNlbGxFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkhUTUxUYWJsZUNlbGxFbGVtZW50Ojpjb2xTcGFuKToKKyAgICAgICAgKFdlYkNvcmU6OkhU
TUxUYWJsZUNlbGxFbGVtZW50Ojpyb3dTcGFuKToKKyAgICAgICAgKiBodG1sL0hUTUxUYWJsZUVs
ZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRhYmxlRWxlbWVudDo6cGFyc2VBdHRy
aWJ1dGUpOgorICAgICAgICAqIGh0bWwvSFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQ6OnNldFNlbGVjdGlv
blN0YXJ0KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50Ojpz
ZXRTZWxlY3Rpb25FbmQpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRleHRGb3JtQ29udHJvbEVs
ZW1lbnQ6OnNlbGVjdCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVGV4dEZvcm1Db250cm9sRWxl
bWVudDo6c2V0U2VsZWN0aW9uUmFuZ2UpOgorICAgICAgICAqIGh0bWwvSFRNTFRyYWNrRWxlbWVu
dC5jcHA6CisgICAgICAgICogaHRtbC9JbWFnZURvY3VtZW50LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkltYWdlRG9jdW1lbnQ6OnNjYWxlKToKKyAgICAgICAgKiBodG1sL0lucHV0VHlwZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpJbnB1dFR5cGU6OnZhbHVlQXNEb3VibGUpOgorICAgICAgICAq
IGh0bWwvTWVkaWFDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKE1lZGlhQ29udHJvbGxlcjo6ZHVy
YXRpb24pOgorICAgICAgICAoTWVkaWFDb250cm9sbGVyOjpjdXJyZW50VGltZSk6CisgICAgICAg
IChNZWRpYUNvbnRyb2xsZXI6OnNldEN1cnJlbnRUaW1lKToKKyAgICAgICAgKE1lZGlhQ29udHJv
bGxlcjo6dXBkYXRlUmVhZHlTdGF0ZSk6CisgICAgICAgICogaHRtbC9OdW1iZXJJbnB1dFR5cGUu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6TnVtYmVySW5wdXRUeXBlOjpzZXRWYWx1ZUFzRG91Ymxl
KToKKyAgICAgICAgKFdlYkNvcmU6Ok51bWJlcklucHV0VHlwZTo6c2V0VmFsdWVBc0RlY2ltYWwp
OgorICAgICAgICAoV2ViQ29yZTo6TnVtYmVySW5wdXRUeXBlOjpjcmVhdGVTdGVwUmFuZ2UpOgor
ICAgICAgICAqIGh0bWwvUmFuZ2VJbnB1dFR5cGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmFu
Z2VJbnB1dFR5cGU6OmhhbmRsZUtleWRvd25FdmVudCk6CisgICAgICAgICogaHRtbC9TZWFyY2hJ
bnB1dFR5cGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2VhcmNoSW5wdXRUeXBlOjpzdGFydFNl
YXJjaEV2ZW50VGltZXIpOgorICAgICAgICAqIGh0bWwvU3RlcFJhbmdlLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlN0ZXBSYW5nZTo6Y2xhbXBWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpTdGVw
UmFuZ2U6OnBhcnNlU3RlcCk6CisgICAgICAgICogaHRtbC9UaW1lUmFuZ2VzLmNwcDoKKyAgICAg
ICAgKiBodG1sL1ZhbGlkYXRpb25NZXNzYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlZhbGlk
YXRpb25NZXNzYWdlOjpzZXRNZXNzYWdlRE9NQW5kU3RhcnRUaW1lcik6CisgICAgICAgIChXZWJD
b3JlOjphZGp1c3RCdWJibGVQb3NpdGlvbik6CisgICAgICAgICogaHRtbC9jYW52YXMvQ2FudmFz
UmVuZGVyaW5nQ29udGV4dDJELmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Om5vcm1hbGl6ZVJlY3Qp
OgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OnZhbGlkYXRlSW5kZXhBcnJheUNv
bnNlcnZhdGl2ZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OnZh
bGlkYXRlQ29tcHJlc3NlZFRleEZ1bmNEYXRhKToKKyAgICAgICAgKiBodG1sL3NoYWRvdy9NZWRp
YUNvbnRyb2xFbGVtZW50cy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUNvbnRyb2xSZXdp
bmRCdXR0b25FbGVtZW50OjpkZWZhdWx0RXZlbnRIYW5kbGVyKToKKyAgICAgICAgKiBodG1sL3No
YWRvdy9NZWRpYUNvbnRyb2xzQXBwbGUuY3BwOgorICAgICAgICAqIGh0bWwvc2hhZG93L1NsaWRl
clRodW1iRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTbGlkZXJUaHVtYkVsZW1lbnQ6
OnNldFBvc2l0aW9uRnJvbVBvaW50KToKKyAgICAgICAgKiBpbnNwZWN0b3IvQ29udGVudFNlYXJj
aFV0aWxzLmNwcDoKKyAgICAgICAgKiBpbnNwZWN0b3IvRE9NRWRpdG9yLmNwcDoKKyAgICAgICAg
KiBpbnNwZWN0b3IvRE9NUGF0Y2hTdXBwb3J0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRPTVBh
dGNoU3VwcG9ydDo6ZGlmZik6CisgICAgICAgICogaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0SG9z
dC5jcHA6CisgICAgICAgICogbG9hZGVyL1Byb2dyZXNzVHJhY2tlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpQcm9ncmVzc1RyYWNrZXI6OmluY3JlbWVudFByb2dyZXNzKToKKyAgICAgICAgKiBs
b2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuY3BwOgorICAgICAgICAqIHBhZ2UvRE9NV2luZG93LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkRPTVdpbmRvdzo6YWRqdXN0V2luZG93UmVjdCk6CisgICAg
ICAgICogcGFnZS9FdmVudEhhbmRsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWF4aW11bUR1
cmF0aW9uVHJhY2tlcjo6fk1heGltdW1EdXJhdGlvblRyYWNrZXIpOgorICAgICAgICAqIHBhZ2Uv
RnJhbWVUcmVlLmNwcDoKKyAgICAgICAgKiBwYWdlL0ZyYW1lVmlldy5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpGcmFtZVZpZXc6OmFkanVzdGVkRGVmZXJyZWRSZXBhaW50RGVsYXkpOgorICAgICAg
ICAoV2ViQ29yZTo6RnJhbWVWaWV3OjphdXRvU2l6ZUlmRW5hYmxlZCk6CisgICAgICAgICogcGFn
ZS9QcmludENvbnRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UHJpbnRDb250ZXh0Ojpjb21w
dXRlQXV0b21hdGljU2NhbGVGYWN0b3IpOgorICAgICAgICAqIHBhZ2UvU3BhdGlhbE5hdmlnYXRp
b24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6ZW50cnlBbmRFeGl0UG9pbnRzRm9yRGlyZWN0aW9u
KToKKyAgICAgICAgKiBwYWdlL2FuaW1hdGlvbi9DU1NQcm9wZXJ0eUFuaW1hdGlvbi5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpibGVuZEZpbHRlck9wZXJhdGlvbnMpOgorICAgICAgICAoV2ViQ29y
ZTo6UHJvcGVydHlXcmFwcGVyU2hhZG93OjpibGVuZE1pc21hdGNoZWRTaGFkb3dMaXN0cyk6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvRmxvYXRSZWN0LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkZsb2F0UmVjdDo6RmxvYXRSZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OkZsb2F0UmVjdDo6
aW50ZXJzZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OkZsb2F0UmVjdDo6dW5pdGVFdmVuSWZFbXB0
eSk6CisgICAgICAgIChXZWJDb3JlOjpGbG9hdFJlY3Q6OmV4dGVuZCk6CisgICAgICAgIChXZWJD
b3JlOjpGbG9hdFJlY3Q6OmZpdFRvUG9pbnRzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9HbHlwaFBhZ2VUcmVlTm9kZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHbHlwaFBhZ2VUcmVl
Tm9kZTo6aW5pdGlhbGl6ZVBhZ2UpOgorICAgICAgICAoV2ViQ29yZTo6R2x5cGhQYWdlVHJlZU5v
ZGU6OmdldENoaWxkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9JbnRSZWN0LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkludFJlY3Q6OmludGVyc2VjdCk6CisgICAgICAgIChXZWJDb3Jl
OjpJbnRSZWN0Ojp1bml0ZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnRSZWN0Ojp1bml0ZUlmTm9u
WmVybyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvTGF5b3V0UmVjdC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpMYXlvdXRSZWN0OjppbnRlcnNlY3QpOgorICAgICAgICAoV2ViQ29yZTo6
TGF5b3V0UmVjdDo6dW5pdGUpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0UmVjdDo6dW5pdGVJ
Zk5vblplcm8pOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVNb3JwaG9s
b2d5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZFTW9ycGhvbG9neTo6cGxhdGZvcm1BcHBseUdl
bmVyaWMpOgorICAgICAgICAoV2ViQ29yZTo6RkVNb3JwaG9sb2d5OjpwbGF0Zm9ybUFwcGx5U29m
dHdhcmUpOgorICAgICAgICAqIHBsYXRmb3JtL21hYy9NZW1vcnlQcmVzc3VyZUhhbmRsZXJNYWMu
bW06CisgICAgICAgIChXZWJDb3JlOjpNZW1vcnlQcmVzc3VyZUhhbmRsZXI6OnJlc3BvbmRUb01l
bW9yeVByZXNzdXJlKToKKyAgICAgICAgKiBwbGF0Zm9ybS90ZXh0L1RleHRDb2RlY0lDVS5jcHA6
CisgICAgICAgICogcmVuZGVyaW5nL0xpbmVXaWR0aC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpM
aW5lV2lkdGg6OmZpdEJlbG93RmxvYXRzKToKKyAgICAgICAgKFdlYkNvcmU6OkxpbmVXaWR0aDo6
Y29tcHV0ZUF2YWlsYWJsZVdpZHRoRnJvbUxlZnRBbmRSaWdodCk6CisgICAgICAgICogcmVuZGVy
aW5nL1JlbmRlckJsb2NrLmg6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9jazo6YXZhaWxh
YmxlTG9naWNhbFdpZHRoRm9yTGluZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9jazo6
YXZhaWxhYmxlTG9naWNhbFdpZHRoRm9yQ29udGVudCk6CisgICAgICAgICogcmVuZGVyaW5nL1Jl
bmRlckZpZWxkc2V0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckZpZWxkc2V0Ojpjb21w
dXRlUHJlZmVycmVkTG9naWNhbFdpZHRocyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJGaWVs
ZHNldDo6bGF5b3V0U3BlY2lhbEV4Y2x1ZGVkQ2hpbGQpOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyRmllbGRzZXQ6OnBhaW50Qm94RGVjb3JhdGlvbnMpOgorICAgICAgICAqIHJlbmRlcmluZy9S
ZW5kZXJGbG93VGhyZWFkLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckZsb3dUaHJlYWQ6
OnVwZGF0ZUxvZ2ljYWxXaWR0aCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJGbG93VGhyZWFk
OjphZGRGb3JjZWRSZWdpb25CcmVhayk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckZyYW1l
QmFzZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJGcmFtZUJhc2U6OmxheW91dFdpdGhG
bGF0dGVuaW5nKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyRnJhbWVTZXQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyRnJhbWVTZXQ6OmxheU91dEF4aXMpOgorICAgICAgICAqIHJl
bmRlcmluZy9SZW5kZXJTbGlkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU2xpZGVy
Ojpjb21wdXRlUHJlZmVycmVkTG9naWNhbFdpZHRocyk6CisgICAgICAgICogcmVuZGVyaW5nL1Jl
bmRlclRhYmxlQ2VsbC5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUcmVlQXNUZXh0LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OndyaXRlTGF5ZXJzKToKKyAgICAgICAgKiByZW5kZXJpbmcv
Um9vdElubGluZUJveC5oOgorICAgICAgICAoV2ViQ29yZTo6Um9vdElubGluZUJveDo6c2VsZWN0
aW9uSGVpZ2h0KToKKyAgICAgICAgKFdlYkNvcmU6OlJvb3RJbmxpbmVCb3g6OnNlbGVjdGlvbkhl
aWdodEFkanVzdGVkRm9yUHJlY2VkaW5nQmxvY2spOgorICAgICAgICAqIHJlbmRlcmluZy9tYXRo
bWwvUmVuZGVyTWF0aE1MUm93LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck1hdGhNTFJv
dzo6bGF5b3V0KToKKyAgICAgICAgKiByZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFNjcmlw
dHMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTWF0aE1MU2NyaXB0czo6bGF5b3V0KToK
KyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuaDoKKyAgICAgICAgKiByZW5k
ZXJpbmcvc3R5bGUvU3R5bGVHZW5lcmF0ZWRJbWFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpT
dHlsZUdlbmVyYXRlZEltYWdlOjppbWFnZVNpemUpOgorICAgICAgICAqIHN0eWxlL1N0eWxlRm9u
dFNpemVGdW5jdGlvbnMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGU6OmZvbnRTaXplRm9y
S2V5d29yZCk6CisgICAgICAgICogc3ZnL1NWR1NWR0VsZW1lbnQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6U1ZHU1ZHRWxlbWVudDo6c2V0Q3VycmVudFRpbWUpOgorCiAyMDEzLTEwLTI0ICBQZXRl
ciBNb2xuYXIgIDxwbW9sbmFyLnUtc3plZ2VkQHBhcnRuZXIuc2Ftc3VuZy5jb20+CiAKICAgICAg
ICAgUmVtb3ZlZCBRdCB3b3JrYXJvdW5kLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMv
Q2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCmluZGV4IDk5M2FhYmNkNDcx
NjNmZTNjZjc5N2JkYjMwMDZhYjZmY2M0NmFlNjYuLjBjYjdkZjVmNDZlZDhiMTYwNTQwM2U0Mzhi
ZWIwNWZmMGQ5M2EwZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwor
KysgYi9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMSBAQAorMjAxMy0x
MC0yNCAgQW5kZXJzIENhcmxzc29uICA8YW5kZXJzY2FAYXBwbGUuY29tPgorCisgICAgICAgIFN0
b3AgYnJpbmdpbmcgaW4gdGhlIHN0ZCBuYW1lc3BhY2UKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyMzI3MworCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViVmlldy9XZWJGcmFtZVZpZXcubW06CisgICAg
ICAgICgtW1dlYkZyYW1lVmlldyBfdmVydGljYWxQYWdlU2Nyb2xsRGlzdGFuY2VdKToKKyAgICAg
ICAgKC1bV2ViRnJhbWVWaWV3IF9ob3Jpem9udGFsUGFnZVNjcm9sbERpc3RhbmNlXSk6CisgICAg
ICAgICogV2ViVmlldy9XZWJIVE1MVmlldy5tbToKKyAgICAgICAgKC1bV2ViSFRNTFZpZXcgX3Nj
YWxlRmFjdG9yRm9yUHJpbnRPcGVyYXRpb246XSk6CisgICAgICAgICogV2ViVmlldy9XZWJWaWV3
Lm1tOgorICAgICAgICAoK1tXZWJWaWV3IF9zZXRDYWNoZU1vZGVsOl0pOgorICAgICAgICAoK1tX
ZWJWaWV3IF9tYXhDYWNoZU1vZGVsSW5BbnlJbnN0YW5jZV0pOgorICAgICAgICAoK1tXZWJWaWV3
IF9jYWNoZU1vZGVsQ2hhbmdlZE5vdGlmaWNhdGlvbjpdKToKKyAgICAgICAgKCtbV2ViVmlldyBf
cHJlZmVyZW5jZXNSZW1vdmVkTm90aWZpY2F0aW9uOl0pOgorCiAyMDEzLTEwLTIyICBEZWFuIEph
Y2tzb24gIDxkaW5vQGFwcGxlLmNvbT4KIAogICAgICAgICBbV2ViR0xdIEltcGxlbWVudCBhIHNv
ZnR3YXJlIHJlbmRlcmluZyBvcHRpb24gb24gTWFjCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggZTIzNmY0N2M1NjQw
YzI1Yzc4NTBlZDc1NTYyZjZjYjQyMjVlOTU1NS4uN2U5YzE4YTQwMzQ3NWEwOTRjNDk2YzhjZTI1
M2U5YmM0ZWRjMjA5OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBACisyMDEzLTEwLTI0ICBB
bmRlcnMgQ2FybHNzb24gIDxhbmRlcnNjYUBhcHBsZS5jb20+CisKKyAgICAgICAgU3RvcCBicmlu
Z2luZyBpbiB0aGUgc3RkIG5hbWVzcGFjZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTIzMjczCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL21hYy9XZWJQcm9jZXNzTWFjLm1tOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzOjpwbGF0Zm9ybVNldENhY2hlTW9kZWwpOgorCiAyMDEz
LTEwLTIzICBDaGFuZ1Nlb2sgT2ggIDxjaGFuZ3Nlb2sub2hAY29sbGFib3JhLmNvbT4KIAogICAg
ICAgICBVbnJldmlld2VkIGJ1aWxkIGZpeCBzaW5jZSByMTU3ODIzLgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0J1ZmZlclNvdXJjZU5vZGUuY3BwIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0J1ZmZlclNvdXJjZU5vZGUuY3Bw
CmluZGV4IDliZWMzNDdhYmJmZjE0ZDFkYzAwODRjZWNjNDNjM2M2ZjI1N2JiMzYuLmEzMDdjYWM4
ZmQxMTNjYWQ0YTFiNjNmMmM2ZTU1NzUxN2Q5NWFmMmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9CdWZmZXJTb3VyY2VOb2RlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQnVmZmVyU291cmNlTm9kZS5jcHAKQEAg
LTQwLDggKzQwLDYgQEAKICNpbmNsdWRlIDx3dGYvTWF0aEV4dHJhcy5oPgogI2luY2x1ZGUgPHd0
Zi9TdGRMaWJFeHRyYXMuaD4KIAotdXNpbmcgbmFtZXNwYWNlIHN0ZDsKLQogbmFtZXNwYWNlIFdl
YkNvcmUgewogCiBjb25zdCBkb3VibGUgRGVmYXVsdEdyYWluRHVyYXRpb24gPSAwLjAyMDsgLy8g
MjBtcwpAQCAtMjMxLDcgKzIyOSw3IEBAIGJvb2wgQXVkaW9CdWZmZXJTb3VyY2VOb2RlOjpyZW5k
ZXJGcm9tQnVmZmVyKEF1ZGlvQnVzKiBidXMsIHVuc2lnbmVkIGRlc3RpbmF0aW9uCiAgICAgICAg
IGRvdWJsZSBsb29wU3RhcnRGcmFtZSA9IG1fbG9vcFN0YXJ0ICogYnVmZmVyKCktPnNhbXBsZVJh
dGUoKTsKICAgICAgICAgZG91YmxlIGxvb3BFbmRGcmFtZSA9IG1fbG9vcEVuZCAqIGJ1ZmZlcigp
LT5zYW1wbGVSYXRlKCk7CiAKLSAgICAgICAgdmlydHVhbEVuZEZyYW1lID0gbWluKGxvb3BFbmRG
cmFtZSwgdmlydHVhbEVuZEZyYW1lKTsKKyAgICAgICAgdmlydHVhbEVuZEZyYW1lID0gc3RkOjpt
aW4obG9vcEVuZEZyYW1lLCB2aXJ0dWFsRW5kRnJhbWUpOwogICAgICAgICB2aXJ0dWFsRGVsdGFG
cmFtZXMgPSB2aXJ0dWFsRW5kRnJhbWUgLSBsb29wU3RhcnRGcmFtZTsKICAgICB9CiAKQEAgLTI2
MSw4ICsyNTksOCBAQCBib29sIEF1ZGlvQnVmZmVyU291cmNlTm9kZTo6cmVuZGVyRnJvbUJ1ZmZl
cihBdWRpb0J1cyogYnVzLCB1bnNpZ25lZCBkZXN0aW5hdGlvbgogICAgICAgICBlbmRGcmFtZSA9
IHN0YXRpY19jYXN0PHVuc2lnbmVkPih2aXJ0dWFsRW5kRnJhbWUpOwogICAgICAgICB3aGlsZSAo
ZnJhbWVzVG9Qcm9jZXNzID4gMCkgewogICAgICAgICAgICAgaW50IGZyYW1lc1RvRW5kID0gZW5k
RnJhbWUgLSByZWFkSW5kZXg7Ci0gICAgICAgICAgICBpbnQgZnJhbWVzVGhpc1RpbWUgPSBtaW4o
ZnJhbWVzVG9Qcm9jZXNzLCBmcmFtZXNUb0VuZCk7Ci0gICAgICAgICAgICBmcmFtZXNUaGlzVGlt
ZSA9IG1heCgwLCBmcmFtZXNUaGlzVGltZSk7CisgICAgICAgICAgICBpbnQgZnJhbWVzVGhpc1Rp
bWUgPSBzdGQ6Om1pbihmcmFtZXNUb1Byb2Nlc3MsIGZyYW1lc1RvRW5kKTsKKyAgICAgICAgICAg
IGZyYW1lc1RoaXNUaW1lID0gc3RkOjptYXgoMCwgZnJhbWVzVGhpc1RpbWUpOwogCiAgICAgICAg
ICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbnVtYmVyT2ZDaGFubmVsczsgKytpKSAKICAg
ICAgICAgICAgICAgICBtZW1jcHkoZGVzdGluYXRpb25DaGFubmVsc1tpXSArIHdyaXRlSW5kZXgs
IHNvdXJjZUNoYW5uZWxzW2ldICsgcmVhZEluZGV4LCBzaXplb2YoZmxvYXQpICogZnJhbWVzVGhp
c1RpbWUpOwpAQCAtMzk4LDggKzM5Niw4IEBAIHZvaWQgQXVkaW9CdWZmZXJTb3VyY2VOb2RlOjpz
dGFydEdyYWluKGRvdWJsZSB3aGVuLCBkb3VibGUgZ3JhaW5PZmZzZXQsIGRvdWJsZSBnCiAgICAg
Ly8gRG8gc2FuaXR5IGNoZWNraW5nIG9mIGdyYWluIHBhcmFtZXRlcnMgdmVyc3VzIGJ1ZmZlciBz
aXplLgogICAgIGRvdWJsZSBidWZmZXJEdXJhdGlvbiA9IGJ1ZmZlcigpLT5kdXJhdGlvbigpOwog
Ci0gICAgZ3JhaW5PZmZzZXQgPSBtYXgoMC4wLCBncmFpbk9mZnNldCk7Ci0gICAgZ3JhaW5PZmZz
ZXQgPSBtaW4oYnVmZmVyRHVyYXRpb24sIGdyYWluT2Zmc2V0KTsKKyAgICBncmFpbk9mZnNldCA9
IHN0ZDo6bWF4KDAuMCwgZ3JhaW5PZmZzZXQpOworICAgIGdyYWluT2Zmc2V0ID0gc3RkOjptaW4o
YnVmZmVyRHVyYXRpb24sIGdyYWluT2Zmc2V0KTsKICAgICBtX2dyYWluT2Zmc2V0ID0gZ3JhaW5P
ZmZzZXQ7CiAKICAgICAvLyBIYW5kbGUgZGVmYXVsdC91bnNwZWNpZmllZCBkdXJhdGlvbi4KQEAg
LTQwNyw4ICs0MDUsOCBAQCB2b2lkIEF1ZGlvQnVmZmVyU291cmNlTm9kZTo6c3RhcnRHcmFpbihk
b3VibGUgd2hlbiwgZG91YmxlIGdyYWluT2Zmc2V0LCBkb3VibGUgZwogICAgIGlmICghZ3JhaW5E
dXJhdGlvbikKICAgICAgICAgZ3JhaW5EdXJhdGlvbiA9IG1heER1cmF0aW9uOwogCi0gICAgZ3Jh
aW5EdXJhdGlvbiA9IG1heCgwLjAsIGdyYWluRHVyYXRpb24pOwotICAgIGdyYWluRHVyYXRpb24g
PSBtaW4obWF4RHVyYXRpb24sIGdyYWluRHVyYXRpb24pOworICAgIGdyYWluRHVyYXRpb24gPSBz
dGQ6Om1heCgwLjAsIGdyYWluRHVyYXRpb24pOworICAgIGdyYWluRHVyYXRpb24gPSBzdGQ6Om1p
bihtYXhEdXJhdGlvbiwgZ3JhaW5EdXJhdGlvbik7CiAgICAgbV9ncmFpbkR1cmF0aW9uID0gZ3Jh
aW5EdXJhdGlvbjsKIAogICAgIG1faXNHcmFpbiA9IHRydWU7CkBAIC00NDcsMTAgKzQ0NSwxMCBA
QCBkb3VibGUgQXVkaW9CdWZmZXJTb3VyY2VOb2RlOjp0b3RhbFBpdGNoUmF0ZSgpCiAgICAgZG91
YmxlIHRvdGFsUmF0ZSA9IGRvcHBsZXJSYXRlICogc2FtcGxlUmF0ZUZhY3RvciAqIGJhc2VQaXRj
aFJhdGU7CiAKICAgICAvLyBTYW5pdHkgY2hlY2sgdGhlIHRvdGFsIHJhdGUuICBJdCdzIHZlcnkg
aW1wb3J0YW50IHRoYXQgdGhlIHJlc2FtcGxlciBub3QgZ2V0IGFueSBiYWQgcmF0ZSB2YWx1ZXMu
Ci0gICAgdG90YWxSYXRlID0gbWF4KDAuMCwgdG90YWxSYXRlKTsKKyAgICB0b3RhbFJhdGUgPSBz
dGQ6Om1heCgwLjAsIHRvdGFsUmF0ZSk7CiAgICAgaWYgKCF0b3RhbFJhdGUpCiAgICAgICAgIHRv
dGFsUmF0ZSA9IDE7IC8vIHplcm8gcmF0ZSBpcyBjb25zaWRlcmVkIGlsbGVnYWwKLSAgICB0b3Rh
bFJhdGUgPSBtaW4oTWF4UmF0ZSwgdG90YWxSYXRlKTsKKyAgICB0b3RhbFJhdGUgPSBzdGQ6Om1p
bihNYXhSYXRlLCB0b3RhbFJhdGUpOwogICAgIAogICAgIGJvb2wgaXNUb3RhbFJhdGVWYWxpZCA9
ICFzdGQ6OmlzbmFuKHRvdGFsUmF0ZSkgJiYgIXN0ZDo6aXNpbmYodG90YWxSYXRlKTsKICAgICBB
U1NFUlQoaXNUb3RhbFJhdGVWYWxpZCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmF1ZGlvL0F1ZGlvTm9kZUlucHV0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViYXVkaW8vQXVkaW9Ob2RlSW5wdXQuY3BwCmluZGV4IDZhMmU1ZGQzYjQyZTMwZDE1YjVlNzEz
ZmNlMmU0NTQ2M2Y3MTM4NTIuLmM2MjMzM2QyYjIxOTc4NThiMmU4MGYzMTkwMzBhZjNkZGM4ZWIy
NzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Ob2Rl
SW5wdXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Ob2Rl
SW5wdXQuY3BwCkBAIC0zMyw4ICszMyw2IEBACiAjaW5jbHVkZSAiQXVkaW9Ob2RlT3V0cHV0Lmgi
CiAjaW5jbHVkZSA8YWxnb3JpdGhtPgogCi11c2luZyBuYW1lc3BhY2Ugc3RkOwotIAogbmFtZXNw
YWNlIFdlYkNvcmUgewogCiBBdWRpb05vZGVJbnB1dDo6QXVkaW9Ob2RlSW5wdXQoQXVkaW9Ob2Rl
KiBub2RlKQpAQCAtMTU3LDExICsxNTUsMTEgQEAgdW5zaWduZWQgQXVkaW9Ob2RlSW5wdXQ6Om51
bWJlck9mQ2hhbm5lbHMoKSBjb25zdAogICAgICAgICBBdWRpb05vZGVPdXRwdXQqIG91dHB1dCA9
ICppOwogICAgICAgICAvLyBVc2Ugb3V0cHV0KCktPm51bWJlck9mQ2hhbm5lbHMoKSBpbnN0ZWFk
IG9mIG91dHB1dC0+YnVzKCktPm51bWJlck9mQ2hhbm5lbHMoKSwKICAgICAgICAgLy8gYmVjYXVz
ZSB0aGUgY2FsbGluZyBvZiBBdWRpb05vZGVPdXRwdXQ6OmJ1cygpIGlzIG5vdCBzYWZlIGhlcmUu
Ci0gICAgICAgIG1heENoYW5uZWxzID0gbWF4KG1heENoYW5uZWxzLCBvdXRwdXQtPm51bWJlck9m
Q2hhbm5lbHMoKSk7CisgICAgICAgIG1heENoYW5uZWxzID0gc3RkOjptYXgobWF4Q2hhbm5lbHMs
IG91dHB1dC0+bnVtYmVyT2ZDaGFubmVscygpKTsKICAgICB9CiAKICAgICBpZiAobW9kZSA9PSBB
dWRpb05vZGU6OkNsYW1wZWRNYXgpCi0gICAgICAgIG1heENoYW5uZWxzID0gbWluKG1heENoYW5u
ZWxzLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4obm9kZSgpLT5jaGFubmVsQ291bnQoKSkpOworICAg
ICAgICBtYXhDaGFubmVscyA9IHN0ZDo6bWluKG1heENoYW5uZWxzLCBzdGF0aWNfY2FzdDx1bnNp
Z25lZD4obm9kZSgpLT5jaGFubmVsQ291bnQoKSkpOwogCiAgICAgcmV0dXJuIG1heENoYW5uZWxz
OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1Bh
cmFtVGltZWxpbmUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1Bh
cmFtVGltZWxpbmUuY3BwCmluZGV4IGE2MzY4M2E1ZjQxNzcwYWNhOWRlYjRmNjk4ODE2ZGUzNmY4
NjkyOGMuLjEyMTllNDljZjUwZTU2ODc1ODdjNTIzMWUwZGZiM2MzNzY5ZjYzM2UgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9QYXJhbVRpbWVsaW5lLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvUGFyYW1UaW1lbGlu
ZS5jcHAKQEAgLTM0LDggKzM0LDYgQEAKICNpbmNsdWRlIDxhbGdvcml0aG0+CiAjaW5jbHVkZSA8
d3RmL01hdGhFeHRyYXMuaD4KIAotdXNpbmcgbmFtZXNwYWNlIHN0ZDsKLQogbmFtZXNwYWNlIFdl
YkNvcmUgewogCiB2b2lkIEF1ZGlvUGFyYW1UaW1lbGluZTo6c2V0VmFsdWVBdFRpbWUoZmxvYXQg
dmFsdWUsIGZsb2F0IHRpbWUpCkBAIC0xODksOSArMTg3LDkgQEAgZmxvYXQgQXVkaW9QYXJhbVRp
bWVsaW5lOjp2YWx1ZXNGb3JUaW1lUmFuZ2VJbXBsKAogICAgIC8vIHVudGlsIHdlIHJlYWNoIHRo
ZSBmaXJzdCBldmVudCB0aW1lLgogICAgIGRvdWJsZSBmaXJzdEV2ZW50VGltZSA9IG1fZXZlbnRz
WzBdLnRpbWUoKTsKICAgICBpZiAoZmlyc3RFdmVudFRpbWUgPiBzdGFydFRpbWUpIHsKLSAgICAg
ICAgZG91YmxlIGZpbGxUb1RpbWUgPSBtaW4oZW5kVGltZSwgZmlyc3RFdmVudFRpbWUpOworICAg
ICAgICBkb3VibGUgZmlsbFRvVGltZSA9IHN0ZDo6bWluKGVuZFRpbWUsIGZpcnN0RXZlbnRUaW1l
KTsKICAgICAgICAgdW5zaWduZWQgZmlsbFRvRnJhbWUgPSBBdWRpb1V0aWxpdGllczo6dGltZVRv
U2FtcGxlRnJhbWUoZmlsbFRvVGltZSAtIHN0YXJ0VGltZSwgc2FtcGxlUmF0ZSk7Ci0gICAgICAg
IGZpbGxUb0ZyYW1lID0gbWluKGZpbGxUb0ZyYW1lLCBudW1iZXJPZlZhbHVlcyk7CisgICAgICAg
IGZpbGxUb0ZyYW1lID0gc3RkOjptaW4oZmlsbFRvRnJhbWUsIG51bWJlck9mVmFsdWVzKTsKICAg
ICAgICAgZm9yICg7IHdyaXRlSW5kZXggPCBmaWxsVG9GcmFtZTsgKyt3cml0ZUluZGV4KQogICAg
ICAgICAgICAgdmFsdWVzW3dyaXRlSW5kZXhdID0gZGVmYXVsdFZhbHVlOwogCkBAIC0yMjIsOSAr
MjIwLDkgQEAgZmxvYXQgQXVkaW9QYXJhbVRpbWVsaW5lOjp2YWx1ZXNGb3JUaW1lUmFuZ2VJbXBs
KAogICAgICAgICBmbG9hdCBrID0gZGVsdGFUaW1lID4gMCA/IDEgLyBkZWx0YVRpbWUgOiAwOwog
ICAgICAgICBkb3VibGUgc2FtcGxlRnJhbWVUaW1lSW5jciA9IDEgLyBzYW1wbGVSYXRlOwogCi0g
ICAgICAgIGRvdWJsZSBmaWxsVG9UaW1lID0gbWluKGVuZFRpbWUsIHRpbWUyKTsKKyAgICAgICAg
ZG91YmxlIGZpbGxUb1RpbWUgPSBzdGQ6Om1pbihlbmRUaW1lLCB0aW1lMik7CiAgICAgICAgIHVu
c2lnbmVkIGZpbGxUb0ZyYW1lID0gQXVkaW9VdGlsaXRpZXM6OnRpbWVUb1NhbXBsZUZyYW1lKGZp
bGxUb1RpbWUgLSBzdGFydFRpbWUsIHNhbXBsZVJhdGUpOwotICAgICAgICBmaWxsVG9GcmFtZSA9
IG1pbihmaWxsVG9GcmFtZSwgbnVtYmVyT2ZWYWx1ZXMpOworICAgICAgICBmaWxsVG9GcmFtZSA9
IHN0ZDo6bWluKGZpbGxUb0ZyYW1lLCBudW1iZXJPZlZhbHVlcyk7CiAKICAgICAgICAgUGFyYW1F
dmVudDo6VHlwZSBuZXh0RXZlbnRUeXBlID0gbmV4dEV2ZW50ID8gc3RhdGljX2Nhc3Q8UGFyYW1F
dmVudDo6VHlwZT4obmV4dEV2ZW50LT50eXBlKCkpIDogUGFyYW1FdmVudDo6TGFzdFR5cGUgLyog
dW5rbm93biAqLzsKIApAQCAtMzE2LDkgKzMxNCw5IEBAIGZsb2F0IEF1ZGlvUGFyYW1UaW1lbGlu
ZTo6dmFsdWVzRm9yVGltZVJhbmdlSW1wbCgKICAgICAgICAgICAgICAgICAgICAgLy8gaW5zdGVh
ZCBvZiB0aGUgbmV4dCBldmVudCB0aW1lLgogICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBu
ZXh0RXZlbnRGaWxsVG9GcmFtZSA9IGZpbGxUb0ZyYW1lOwogICAgICAgICAgICAgICAgICAgICBm
bG9hdCBuZXh0RXZlbnRGaWxsVG9UaW1lID0gZmlsbFRvVGltZTsKLSAgICAgICAgICAgICAgICAg
ICAgZmlsbFRvVGltZSA9IG1pbihlbmRUaW1lLCB0aW1lMSArIGR1cmF0aW9uKTsKKyAgICAgICAg
ICAgICAgICAgICAgZmlsbFRvVGltZSA9IHN0ZDo6bWluKGVuZFRpbWUsIHRpbWUxICsgZHVyYXRp
b24pOwogICAgICAgICAgICAgICAgICAgICBmaWxsVG9GcmFtZSA9IEF1ZGlvVXRpbGl0aWVzOjp0
aW1lVG9TYW1wbGVGcmFtZShmaWxsVG9UaW1lIC0gc3RhcnRUaW1lLCBzYW1wbGVSYXRlKTsKLSAg
ICAgICAgICAgICAgICAgICAgZmlsbFRvRnJhbWUgPSBtaW4oZmlsbFRvRnJhbWUsIG51bWJlck9m
VmFsdWVzKTsKKyAgICAgICAgICAgICAgICAgICAgZmlsbFRvRnJhbWUgPSBzdGQ6Om1pbihmaWxs
VG9GcmFtZSwgbnVtYmVyT2ZWYWx1ZXMpOwogCiAgICAgICAgICAgICAgICAgICAgIC8vIEluZGV4
IGludG8gdGhlIGN1cnZlIGRhdGEgdXNpbmcgYSBmbG9hdGluZy1wb2ludCB2YWx1ZS4KICAgICAg
ICAgICAgICAgICAgICAgLy8gV2UncmUgc2NhbGluZyB0aGUgbnVtYmVyIG9mIGN1cnZlIHBvaW50
cyBieSB0aGUgZHVyYXRpb24gKHNlZSBjdXJ2ZVBvaW50c1BlckZyYW1lKS4KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9TY2hlZHVsZWRTb3VyY2VOb2Rl
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9TY2hlZHVsZWRTb3Vy
Y2VOb2RlLmNwcAppbmRleCAwMzYxYjhiZTkwZDkwNzA3ZTY2M2FlMjQ1YmRiMzM1NjhlYzUwMjI4
Li42N2MwMzU5OWU0MzNmMzZiYTc3MTA5YzA0ZTEzNzNhNjQzMTI2YWUwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvU2NoZWR1bGVkU291cmNlTm9kZS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1NjaGVkdWxlZFNv
dXJjZU5vZGUuY3BwCkBAIC0zNSw4ICszNSw2IEBACiAjaW5jbHVkZSA8YWxnb3JpdGhtPgogI2lu
Y2x1ZGUgPHd0Zi9NYXRoRXh0cmFzLmg+CiAKLXVzaW5nIG5hbWVzcGFjZSBzdGQ7Ci0KIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAogY29uc3QgZG91YmxlIEF1ZGlvU2NoZWR1bGVkU291cmNlTm9kZTo6
VW5rbm93blRpbWUgPSAtMTsKQEAgLTkzLDcgKzkxLDcgQEAgdm9pZCBBdWRpb1NjaGVkdWxlZFNv
dXJjZU5vZGU6OnVwZGF0ZVNjaGVkdWxpbmdJbmZvKHNpemVfdCBxdWFudHVtRnJhbWVTaXplLAog
ICAgIH0KIAogICAgIHF1YW50dW1GcmFtZU9mZnNldCA9IHN0YXJ0RnJhbWUgPiBxdWFudHVtU3Rh
cnRGcmFtZSA/IHN0YXJ0RnJhbWUgLSBxdWFudHVtU3RhcnRGcmFtZSA6IDA7Ci0gICAgcXVhbnR1
bUZyYW1lT2Zmc2V0ID0gbWluKHF1YW50dW1GcmFtZU9mZnNldCwgcXVhbnR1bUZyYW1lU2l6ZSk7
IC8vIGNsYW1wIHRvIHZhbGlkIHJhbmdlCisgICAgcXVhbnR1bUZyYW1lT2Zmc2V0ID0gc3RkOjpt
aW4ocXVhbnR1bUZyYW1lT2Zmc2V0LCBxdWFudHVtRnJhbWVTaXplKTsgLy8gY2xhbXAgdG8gdmFs
aWQgcmFuZ2UKICAgICBub25TaWxlbnRGcmFtZXNUb1Byb2Nlc3MgPSBxdWFudHVtRnJhbWVTaXpl
IC0gcXVhbnR1bUZyYW1lT2Zmc2V0OwogCiAgICAgaWYgKCFub25TaWxlbnRGcmFtZXNUb1Byb2Nl
c3MpIHsKQEAgLTE1OSw3ICsxNTcsNyBAQCB2b2lkIEF1ZGlvU2NoZWR1bGVkU291cmNlTm9kZTo6
c3RvcChkb3VibGUgd2hlbiwgRXhjZXB0aW9uQ29kZSYgZWMpCiAgICAgICAgIHJldHVybjsKICAg
ICB9CiAgICAgCi0gICAgd2hlbiA9IG1heCgwLjAsIHdoZW4pOworICAgIHdoZW4gPSBzdGQ6Om1h
eDxkb3VibGU+KDAsIHdoZW4pOwogICAgIG1fZW5kVGltZSA9IHdoZW47CiB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9TdW1taW5nSnVuY3Rpb24u
Y3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1N1bW1pbmdKdW5jdGlv
bi5jcHAKaW5kZXggYWQ4MWNhZGE1YTMwZGE2ZWI3OTdjYTEyYTMzNDEzNmZlZDdhN2E3YS4uZWQ0
MTdmYWRiZDU1ZWU2M2Q2YjhmY2Y4NWRmNzQ3ZGFmZDY4MjhhNCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1N1bW1pbmdKdW5jdGlvbi5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1N1bW1pbmdKdW5jdGlvbi5jcHAK
QEAgLTMyLDggKzMyLDYgQEAKICNpbmNsdWRlICJBdWRpb05vZGVPdXRwdXQuaCIKICNpbmNsdWRl
IDxhbGdvcml0aG0+CiAKLXVzaW5nIG5hbWVzcGFjZSBzdGQ7Ci0KIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAogQXVkaW9TdW1taW5nSnVuY3Rpb246OkF1ZGlvU3VtbWluZ0p1bmN0aW9uKEF1ZGlvQ29u
dGV4dCogY29udGV4dCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVk
aW8vRGVsYXlEU1BLZXJuZWwuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9E
ZWxheURTUEtlcm5lbC5jcHAKaW5kZXggYTM1MDVmMTM3ZWVjODEzOWIyZWM0OTE4ZmQyNzAzNDIy
MGM4OGU4OC4uZGI3MDRiZWY4MzI0N2Q3ODA0MGRhZDRhMjIxMjMxMzJjYWYxZTQyZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9EZWxheURTUEtlcm5lbC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9EZWxheURTUEtlcm5lbC5jcHAK
QEAgLTMxLDggKzMxLDYgQEAKICNpbmNsdWRlICJBdWRpb1V0aWxpdGllcy5oIgogI2luY2x1ZGUg
PGFsZ29yaXRobT4KIAotdXNpbmcgbmFtZXNwYWNlIHN0ZDsKLQogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCiBjb25zdCBmbG9hdCBTbW9vdGhpbmdUaW1lQ29uc3RhbnQgPSAwLjAyMGY7IC8vIDIwbXMK
QEAgLTExMiw4ICsxMTAsOCBAQCB2b2lkIERlbGF5RFNQS2VybmVsOjpwcm9jZXNzKGNvbnN0IGZs
b2F0KiBzb3VyY2UsIGZsb2F0KiBkZXN0aW5hdGlvbiwgc2l6ZV90IGZyYQogICAgICAgICBkZWxh
eVRpbWUgPSBkZWxheVByb2Nlc3NvcigpID8gZGVsYXlQcm9jZXNzb3IoKS0+ZGVsYXlUaW1lKCkt
PmZpbmFsVmFsdWUoKSA6IG1fZGVzaXJlZERlbGF5RnJhbWVzIC8gc2FtcGxlUmF0ZTsKIAogICAg
ICAgICAvLyBNYWtlIHN1cmUgdGhlIGRlbGF5IHRpbWUgaXMgaW4gYSB2YWxpZCByYW5nZS4KLSAg
ICAgICAgZGVsYXlUaW1lID0gbWluKG1heFRpbWUsIGRlbGF5VGltZSk7Ci0gICAgICAgIGRlbGF5
VGltZSA9IG1heCgwLjAsIGRlbGF5VGltZSk7CisgICAgICAgIGRlbGF5VGltZSA9IHN0ZDo6bWlu
KG1heFRpbWUsIGRlbGF5VGltZSk7CisgICAgICAgIGRlbGF5VGltZSA9IHN0ZDo6bWF4KDAuMCwg
ZGVsYXlUaW1lKTsKIAogICAgICAgICBpZiAobV9maXJzdFRpbWUpIHsKICAgICAgICAgICAgIG1f
Y3VycmVudERlbGF5VGltZSA9IGRlbGF5VGltZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViYXVkaW8vT2ZmbGluZUF1ZGlvRGVzdGluYXRpb25Ob2RlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vT2ZmbGluZUF1ZGlvRGVzdGluYXRpb25Ob2RlLmNw
cAppbmRleCBmZjM2NWY2ZDkwNTgxODE2ZWE1ZjYzNjlkMjcwNWM5YmY5ZmM2MmRiLi5mZDMxMjNh
OTFkMDk5NmQwOGJmMTcyNDMwMDkzNWNjODMzMTU3MDIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmF1ZGlvL09mZmxpbmVBdWRpb0Rlc3RpbmF0aW9uTm9kZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9PZmZsaW5lQXVkaW9EZXN0aW5hdGlv
bk5vZGUuY3BwCkBAIC0zMyw4ICszMyw2IEBACiAjaW5jbHVkZSAiSFJURkRhdGFiYXNlTG9hZGVy
LmgiCiAjaW5jbHVkZSA8YWxnb3JpdGhtPgogI2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+Ci0K
LXVzaW5nIG5hbWVzcGFjZSBzdGQ7CiAgCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgCkBAIC0x
MzMsNyArMTMxLDcgQEAgdm9pZCBPZmZsaW5lQXVkaW9EZXN0aW5hdGlvbk5vZGU6Om9mZmxpbmVS
ZW5kZXIoKQogICAgICAgICAvLyBSZW5kZXIgb25lIHJlbmRlciBxdWFudHVtLgogICAgICAgICBy
ZW5kZXIoMCwgbV9yZW5kZXJCdXMuZ2V0KCksIHJlbmRlclF1YW50dW1TaXplKTsKICAgICAgICAg
Ci0gICAgICAgIHNpemVfdCBmcmFtZXNBdmFpbGFibGVUb0NvcHkgPSBtaW4oZnJhbWVzVG9Qcm9j
ZXNzLCByZW5kZXJRdWFudHVtU2l6ZSk7CisgICAgICAgIHNpemVfdCBmcmFtZXNBdmFpbGFibGVU
b0NvcHkgPSBzdGQ6Om1pbihmcmFtZXNUb1Byb2Nlc3MsIHJlbmRlclF1YW50dW1TaXplKTsKICAg
ICAgICAgCiAgICAgICAgIGZvciAodW5zaWduZWQgY2hhbm5lbEluZGV4ID0gMDsgY2hhbm5lbElu
ZGV4IDwgbnVtYmVyT2ZDaGFubmVsczsgKytjaGFubmVsSW5kZXgpIHsKICAgICAgICAgICAgIGNv
bnN0IGZsb2F0KiBzb3VyY2UgPSBtX3JlbmRlckJ1cy0+Y2hhbm5lbChjaGFubmVsSW5kZXgpLT5k
YXRhKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL09zY2ls
bGF0b3JOb2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vT3NjaWxsYXRv
ck5vZGUuY3BwCmluZGV4IGU2OGQ4ZGQ2OTUwOTBjNGE5NmI0ZmU3OTMxN2E5MGU5M2UzOTQ5Mzcu
LjdlYjE0N2Q0MDIyMWQ5NTFhYjU3M2FkYTVkODhmMTQ1MjVlZWRiOGMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vT3NjaWxsYXRvck5vZGUuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vT3NjaWxsYXRvck5vZGUuY3BwCkBAIC0zNyw4
ICszNyw2IEBACiAjaW5jbHVkZSA8YWxnb3JpdGhtPgogI2luY2x1ZGUgPHd0Zi9NYXRoRXh0cmFz
Lmg+CiAKLXVzaW5nIG5hbWVzcGFjZSBzdGQ7Ci0KIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogdXNp
bmcgbmFtZXNwYWNlIFZlY3Rvck1hdGg7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmF1ZGlvL1Bhbm5lck5vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJh
dWRpby9QYW5uZXJOb2RlLmNwcAppbmRleCAxNzE1ZTcxNWM5ZWEzNmM5ZmZlNzJiZDU1OGJmOWQx
OGVkZjI0OWMzLi5iZTkzODY5NjVlY2Q3ZTQ1MTQyYTg1YWJmZTYwNGRmMWQ4MjIwYTczIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1Bhbm5lck5vZGUuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vUGFubmVyTm9kZS5jcHAKQEAgLTM4
LDggKzM4LDYgQEAKICNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCiAjaW5jbHVk
ZSA8d3RmL01hdGhFeHRyYXMuaD4KIAotdXNpbmcgbmFtZXNwYWNlIHN0ZDsKLQogbmFtZXNwYWNl
IFdlYkNvcmUgewogCiBzdGF0aWMgdm9pZCBmaXhOQU5zKGRvdWJsZSAmeCkKQEAgLTM1Myw4ICsz
NTEsOCBAQCBmbG9hdCBQYW5uZXJOb2RlOjpkb3BwbGVyUmF0ZSgpCiAgICAgICAgICAgICBzb3Vy
Y2VQcm9qZWN0aW9uID0gLXNvdXJjZVByb2plY3Rpb247CiAKICAgICAgICAgICAgIGRvdWJsZSBz
Y2FsZWRTcGVlZE9mU291bmQgPSBzcGVlZE9mU291bmQgLyBkb3BwbGVyRmFjdG9yOwotICAgICAg
ICAgICAgbGlzdGVuZXJQcm9qZWN0aW9uID0gbWluKGxpc3RlbmVyUHJvamVjdGlvbiwgc2NhbGVk
U3BlZWRPZlNvdW5kKTsKLSAgICAgICAgICAgIHNvdXJjZVByb2plY3Rpb24gPSBtaW4oc291cmNl
UHJvamVjdGlvbiwgc2NhbGVkU3BlZWRPZlNvdW5kKTsKKyAgICAgICAgICAgIGxpc3RlbmVyUHJv
amVjdGlvbiA9IHN0ZDo6bWluKGxpc3RlbmVyUHJvamVjdGlvbiwgc2NhbGVkU3BlZWRPZlNvdW5k
KTsKKyAgICAgICAgICAgIHNvdXJjZVByb2plY3Rpb24gPSBzdGQ6Om1pbihzb3VyY2VQcm9qZWN0
aW9uLCBzY2FsZWRTcGVlZE9mU291bmQpOwogCiAgICAgICAgICAgICBkb3BwbGVyU2hpZnQgPSAo
KHNwZWVkT2ZTb3VuZCAtIGRvcHBsZXJGYWN0b3IgKiBsaXN0ZW5lclByb2plY3Rpb24pIC8gKHNw
ZWVkT2ZTb3VuZCAtIGRvcHBsZXJGYWN0b3IgKiBzb3VyY2VQcm9qZWN0aW9uKSk7CiAgICAgICAg
ICAgICBmaXhOQU5zKGRvcHBsZXJTaGlmdCk7IC8vIGF2b2lkIGlsbGVnYWwgdmFsdWVzCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1dhdmVTaGFwZXJEU1BLZXJu
ZWwuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9XYXZlU2hhcGVyRFNQS2Vy
bmVsLmNwcAppbmRleCA0MzEzZjBkNjQyMzhmYzVjOTMwMDQ2Njc2NDA1N2Y1OTlmNjMyYzUxLi5l
NThhZDFiMjI1NTY5YWRkOTE4ZDQ1YmMxZDUwYzVjY2JjM2I4ZTZiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1dhdmVTaGFwZXJEU1BLZXJuZWwuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vV2F2ZVNoYXBlckRTUEtlcm5lbC5jcHAK
QEAgLTM1LDggKzM1LDYgQEAKIAogY29uc3QgdW5zaWduZWQgUmVuZGVyaW5nUXVhbnR1bSA9IDEy
ODsKIAotdXNpbmcgbmFtZXNwYWNlIHN0ZDsKLQogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBXYXZl
U2hhcGVyRFNQS2VybmVsOjpXYXZlU2hhcGVyRFNQS2VybmVsKFdhdmVTaGFwZXJQcm9jZXNzb3Iq
IHByb2Nlc3NvcikKQEAgLTExMiwxMCArMTEwLDEwIEBAIHZvaWQgV2F2ZVNoYXBlckRTUEtlcm5l
bDo6cHJvY2Vzc0N1cnZlKGNvbnN0IGZsb2F0KiBzb3VyY2UsIGZsb2F0KiBkZXN0aW5hdGlvbiwK
IAogICAgICAgICAvLyBDbGlwIGluZGV4IHRvIHRoZSBpbnB1dCByYW5nZSBvZiB0aGUgY3VydmUu
CiAgICAgICAgIC8vIFRoaXMgdGFrZXMgY2FyZSBvZiBpbnB1dCBvdXRzaWRlIG9mIG5vbWluYWwg
cmFuZ2UgLTEgLT4gKzEKLSAgICAgICAgaW5kZXgxID0gbWF4KGluZGV4MSwgMCk7Ci0gICAgICAg
IGluZGV4MSA9IG1pbihpbmRleDEsIGN1cnZlTGVuZ3RoIC0gMSk7Ci0gICAgICAgIGluZGV4MiA9
IG1heChpbmRleDIsIDApOwotICAgICAgICBpbmRleDIgPSBtaW4oaW5kZXgyLCBjdXJ2ZUxlbmd0
aCAtIDEpOworICAgICAgICBpbmRleDEgPSBzdGQ6Om1heChpbmRleDEsIDApOworICAgICAgICBp
bmRleDEgPSBzdGQ6Om1pbihpbmRleDEsIGN1cnZlTGVuZ3RoIC0gMSk7CisgICAgICAgIGluZGV4
MiA9IHN0ZDo6bWF4KGluZGV4MiwgMCk7CisgICAgICAgIGluZGV4MiA9IHN0ZDo6bWluKGluZGV4
MiwgY3VydmVMZW5ndGggLSAxKTsKIAogICAgICAgICBkb3VibGUgdmFsdWUxID0gY3VydmVEYXRh
W2luZGV4MV07CiAgICAgICAgIGRvdWJsZSB2YWx1ZTIgPSBjdXJ2ZURhdGFbaW5kZXgyXTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VUcmFj
a2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VUcmFj
a2VyLmNwcAppbmRleCAyMWY5ZGQ2NTMyNDllZmJiZmUxMjBhYWIzZThjMzM4YjJjYWE5Y2UyLi5l
ZjM3NWI2NmQwZTQzODQ5ZDRjMmFiYzQ2NzI5OTE5M2ZhODAxZDg4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlVHJhY2tlci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZVRyYWNrZXIuY3BwCkBA
IC01MCw4ICs1MCw2IEBACiAjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgogI2luY2x1ZGUg
PHd0Zi90ZXh0L0NTdHJpbmcuaD4KIAotdXNpbmcgbmFtZXNwYWNlIHN0ZDsKLQogbmFtZXNwYWNl
IFdlYkNvcmUgewogCiBzdGF0aWMgRGF0YWJhc2VUcmFja2VyKiBzdGF0aWNUcmFja2VyID0gMDsK
QEAgLTE0MSw3ICsxMzksNyBAQCBib29sIERhdGFiYXNlVHJhY2tlcjo6aGFzQWRlcXVhdGVRdW90
YUZvck9yaWdpbihTZWN1cml0eU9yaWdpbiogb3JpZ2luLCB1bnNpZ25lZAogICAgIHVuc2lnbmVk
IGxvbmcgbG9uZyB1c2FnZSA9IHVzYWdlRm9yT3JpZ2luKG9yaWdpbik7CiAKICAgICAvLyBJZiB0
aGUgZGF0YWJhc2Ugd2lsbCBmaXQsIGFsbG93IGl0cyBjcmVhdGlvbi4KLSAgICB1bnNpZ25lZCBs
b25nIGxvbmcgcmVxdWlyZW1lbnQgPSB1c2FnZSArIG1heCgxVUwsIGVzdGltYXRlZFNpemUpOwor
ICAgIHVuc2lnbmVkIGxvbmcgbG9uZyByZXF1aXJlbWVudCA9IHVzYWdlICsgc3RkOjptYXg8dW5z
aWduZWQgbG9uZyBsb25nPigxLCBlc3RpbWF0ZWRTaXplKTsKICAgICBpZiAocmVxdWlyZW1lbnQg
PCB1c2FnZSkgewogICAgICAgICAvLyBUaGUgZXN0aW1hdGVkIHNpemUgaXMgc28gYmlnIGl0IGNh
dXNlcyBhbiBvdmVyZmxvdzsgZG9uJ3QgYWxsb3cgY3JlYXRpb24uCiAgICAgICAgIGVyciA9IERh
dGFiYXNlRXJyb3I6OkRhdGFiYXNlU2l6ZU92ZXJmbG93ZWQ7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXQuY3BwCmluZGV4IDlhMTUzOTFjNmQ3YjJhMmRh
OWY3NjRjNWM2ZTc0M2NhYWJiYmJmNTcuLjA3N2E2YjY4YjRjMzBkOWYxNWM3N2FkNmVhMjU2OWY2
NzU1NjU3ZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9X
ZWJTb2NrZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJT
b2NrZXQuY3BwCkBAIC02NCw4ICs2NCw2IEBACiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVp
bGRlci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCi11c2luZyBuYW1lc3Bh
Y2Ugc3RkOwotCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNvbnN0IHNpemVfdCBtYXhSZWFzb25T
aXplSW5CeXRlcyA9IDEyMzsKQEAgLTEyMSw4ICsxMTksOCBAQCBzdGF0aWMgU3RyaW5nIGpvaW5T
dHJpbmdzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBzdHJpbmdzLCBjb25zdCBjaGFyKiBzZXBhcmF0
b3IpCiAKIHN0YXRpYyB1bnNpZ25lZCBsb25nIHNhdHVyYXRlQWRkKHVuc2lnbmVkIGxvbmcgYSwg
dW5zaWduZWQgbG9uZyBiKQogewotICAgIGlmIChudW1lcmljX2xpbWl0czx1bnNpZ25lZCBsb25n
Pjo6bWF4KCkgLSBhIDwgYikKLSAgICAgICAgcmV0dXJuIG51bWVyaWNfbGltaXRzPHVuc2lnbmVk
IGxvbmc+OjptYXgoKTsKKyAgICBpZiAoc3RkOjpudW1lcmljX2xpbWl0czx1bnNpZ25lZCBsb25n
Pjo6bWF4KCkgLSBhIDwgYikKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVtZXJpY19saW1pdHM8dW5z
aWduZWQgbG9uZz46Om1heCgpOwogICAgIHJldHVybiBhICsgYjsKIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldENoYW5uZWwuY3BwIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldENoYW5uZWwuY3BwCmlu
ZGV4IDY0OWY5N2U2YWVmNzQ2ZjU1YTdhMjE5NjgyN2ExMGU1NjM4MzUxY2QuLjcxNjRlZGMxZWI2
Y2FjM2VjOWYzNDIyM2ViZWQ2NDkxMjlkZjQzYzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRDaGFubmVsLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0Q2hhbm5lbC5jcHAKQEAgLTY2LDggKzY2
LDYgQEAKICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdIYXNoLmg+CiAjaW5jbHVkZSA8d3RmL3Rl
eHQvV1RGU3RyaW5nLmg+CiAKLXVzaW5nIG5hbWVzcGFjZSBzdGQ7Ci0KIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAogY29uc3QgZG91YmxlIFRDUE1heGltdW1TZWdtZW50TGlmZXRpbWUgPSAyICogNjAu
MDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2Nr
ZXRGcmFtZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0
RnJhbWUuY3BwCmluZGV4IGEyODc2ZWFkYmYxNjUwZmZmYWE4NDFkNTgwYTg3MTI4MTc3NTI4ZGYu
LjE2YmI0NThiMzNiOGQ2NmJiYWFlMTI2OTRiNTMwNjIyNzBiODFiZGEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRGcmFtZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldEZyYW1lLmNwcApAQCAt
MjksOCArMjksNiBAQAogI2luY2x1ZGUgPHd0Zi9DcnlwdG9ncmFwaGljYWxseVJhbmRvbU51bWJl
ci5oPgogI2luY2x1ZGUgPHd0Zi9NYXRoRXh0cmFzLmg+CiAKLXVzaW5nIG5hbWVzcGFjZSBzdGQ7
Ci0KIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogLy8gQ29uc3RhbnRzIGZvciBoeWJpLTEwIGZyYW1l
IGZvcm1hdC4KQEAgLTk3LDcgKzk1LDcgQEAgV2ViU29ja2V0RnJhbWU6OlBhcnNlRnJhbWVSZXN1
bHQgV2ViU29ja2V0RnJhbWU6OnBhcnNlRnJhbWUoY2hhciogZGF0YSwgc2l6ZV90IGQKIAogICAg
IHN0YXRpYyBjb25zdCB1aW50NjRfdCBtYXhQYXlsb2FkTGVuZ3RoID0gVUlOVDY0X0MoMHg3RkZG
RkZGRkZGRkZGRkZGKTsKICAgICBzaXplX3QgbWFza2luZ0tleUxlbmd0aCA9IG1hc2tlZCA/IG1h
c2tpbmdLZXlXaWR0aEluQnl0ZXMgOiAwOwotICAgIGlmIChwYXlsb2FkTGVuZ3RoNjQgPiBtYXhQ
YXlsb2FkTGVuZ3RoIHx8IHBheWxvYWRMZW5ndGg2NCArIG1hc2tpbmdLZXlMZW5ndGggPiBudW1l
cmljX2xpbWl0czxzaXplX3Q+OjptYXgoKSkgeworICAgIGlmIChwYXlsb2FkTGVuZ3RoNjQgPiBt
YXhQYXlsb2FkTGVuZ3RoIHx8IHBheWxvYWRMZW5ndGg2NCArIG1hc2tpbmdLZXlMZW5ndGggPiBz
dGQ6Om51bWVyaWNfbGltaXRzPHNpemVfdD46Om1heCgpKSB7CiAgICAgICAgIGVycm9yU3RyaW5n
ID0gIldlYlNvY2tldCBmcmFtZSBsZW5ndGggdG9vIGxhcmdlOiAiICsgU3RyaW5nOjpudW1iZXIo
cGF5bG9hZExlbmd0aDY0KSArICIgYnl0ZXMiOwogICAgICAgICByZXR1cm4gRnJhbWVFcnJvcjsK
ICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2li
aWxpdHlBUklBR3JpZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2li
aWxpdHlBUklBR3JpZC5jcHAKaW5kZXggYzVlYzliZjA0MjFjMjc5MTgzNmJlMjM1MjU3MDQ4ZDJm
MDg4YzJhYy4uZWI3NDRkY2JlMDFkODZiMmM1NjQ5ZTAxYzJiNzU1NTkzZDhmNGI1YyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5QVJJQUdyaWQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eUFSSUFH
cmlkLmNwcApAQCAtMzYsOCArMzYsNiBAQAogI2luY2x1ZGUgIkFjY2Vzc2liaWxpdHlUYWJsZVJv
dy5oIgogI2luY2x1ZGUgIlJlbmRlck9iamVjdC5oIgogCi11c2luZyBuYW1lc3BhY2Ugc3RkOwot
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIEFjY2Vzc2liaWxpdHlBUklBR3JpZDo6QWNjZXNzaWJp
bGl0eUFSSUFHcmlkKFJlbmRlck9iamVjdCogcmVuZGVyZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlBUklBR3JpZENlbGwuY3BwIGIvU291
cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5QVJJQUdyaWRDZWxsLmNwcApp
bmRleCA5YzNiMTY3OWRhYzdlNjE3MWU3NjllMDk0Zjg5NTM1OTIyNTk5NTc5Li4zZjZiNDQyYzNk
ZmZiMmJiYTZiMTdmZjUxMGIxOTNhZjg4N2VkMTk4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlBUklBR3JpZENlbGwuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eUFSSUFHcmlkQ2VsbC5jcHAKQEAg
LTMzLDggKzMzLDYgQEAKICNpbmNsdWRlICJBY2Nlc3NpYmlsaXR5VGFibGUuaCIKICNpbmNsdWRl
ICJBY2Nlc3NpYmlsaXR5VGFibGVSb3cuaCIKIAotdXNpbmcgbmFtZXNwYWNlIHN0ZDsKLQogbmFt
ZXNwYWNlIFdlYkNvcmUgewogICAgIAogQWNjZXNzaWJpbGl0eUFSSUFHcmlkQ2VsbDo6QWNjZXNz
aWJpbGl0eUFSSUFHcmlkQ2VsbChSZW5kZXJPYmplY3QqIHJlbmRlcmVyKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5QVJJQUdyaWRSb3cuY3Bw
IGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5QVJJQUdyaWRSb3cu
Y3BwCmluZGV4IDM5ZWRmNzAyZjg3MjNhM2Q1MTMzNTg5YzI3NDcxNTY0NTU4NWVmOTQuLmQwOGQy
NzllZDE4MjAwOTdiNzhkZjQ4M2ZkZDE2OWY3OGQyMmEwODMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eUFSSUFHcmlkUm93LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlBUklBR3JpZFJvdy5jcHAK
QEAgLTMzLDggKzMzLDYgQEAKICNpbmNsdWRlICJBY2Nlc3NpYmlsaXR5VGFibGUuaCIKICNpbmNs
dWRlICJSZW5kZXJPYmplY3QuaCIKIAotdXNpbmcgbmFtZXNwYWNlIHN0ZDsKLQogbmFtZXNwYWNl
IFdlYkNvcmUgewogICAgIAogQWNjZXNzaWJpbGl0eUFSSUFHcmlkUm93OjpBY2Nlc3NpYmlsaXR5
QVJJQUdyaWRSb3coUmVuZGVyT2JqZWN0KiByZW5kZXJlcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eUxpc3QuY3BwIGIvU291cmNlL1dlYkNv
cmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5TGlzdC5jcHAKaW5kZXggODAzOWNmMDM0YmIz
OTBkMDQ5NDYyYmY1ZjA4NzcwZmVlOGQzZWRiNi4uYTI0MDZiYTc2MzcwMGMxMzMxNTlhYmE0Yjk0
ZGJlYzVmYjE0NzY5NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9B
Y2Nlc3NpYmlsaXR5TGlzdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9B
Y2Nlc3NpYmlsaXR5TGlzdC5jcHAKQEAgLTMzLDggKzMzLDYgQEAKICNpbmNsdWRlICJIVE1MTmFt
ZXMuaCIKICNpbmNsdWRlICJSZW5kZXJPYmplY3QuaCIKIAotdXNpbmcgbmFtZXNwYWNlIHN0ZDsK
LQogbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIAogdXNpbmcgbmFtZXNwYWNlIEhUTUxOYW1lczsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eUxp
c3RCb3guY3BwIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5TGlz
dEJveC5jcHAKaW5kZXggMGYwODY4NzZlZGNhNjA3NDQ1ZjhmNzA4NjFkY2NjNWVlOTg2ODdhYy4u
N2EzYzk3MTBmODFmMWNiNjBjMjMwMDg5MTFiMjVjOGQ3NDZjNzFlNSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5TGlzdEJveC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5TGlzdEJveC5jcHAKQEAg
LTM3LDggKzM3LDYgQEAKICNpbmNsdWRlICJSZW5kZXJMaXN0Qm94LmgiCiAjaW5jbHVkZSAiUmVu
ZGVyT2JqZWN0LmgiCiAKLXVzaW5nIG5hbWVzcGFjZSBzdGQ7Ci0KIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAogdXNpbmcgbmFtZXNwYWNlIEhUTUxOYW1lczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eUxpc3RCb3hPcHRpb24uY3BwIGIvU291cmNl
L1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5TGlzdEJveE9wdGlvbi5jcHAKaW5k
ZXggNDg0YTIwZDg2YmY0YTNkNWU3NzBmYjFjMTI1MmNiMGUzYmVkMjJkZC4uZDJiMjQzYzU3Mzhm
MTZkZWU5NzBhODVlNjJmZmYxZDk2YjhjZDViOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
YWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5TGlzdEJveE9wdGlvbi5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5TGlzdEJveE9wdGlvbi5jcHAKQEAg
LTQxLDggKzQxLDYgQEAKICNpbmNsdWRlICJSZW5kZXJMaXN0Qm94LmgiCiAjaW5jbHVkZSAiUmVu
ZGVyT2JqZWN0LmgiCiAKLXVzaW5nIG5hbWVzcGFjZSBzdGQ7Ci0KIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAogdXNpbmcgbmFtZXNwYWNlIEhUTUxOYW1lczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU5vZGVPYmplY3QuY3BwIGIvU291cmNlL1dl
YkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdC5jcHAKaW5kZXggMWIz
OGNiYmJmNDVmODUzNTg0NWZlYmUxNDYxNGRmMDc4MjdhZjg0NS4uZjUwYjRiM2E2YzliYzc5MmE5
OWYwNDcwMzM5YWY3Njg4NGMyZDU4NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9BY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
YWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdC5jcHAKQEAgLTgyLDggKzgyLDYg
QEAKICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+CiAjaW5jbHVkZSA8d3RmL3Vu
aWNvZGUvQ2hhcmFjdGVyTmFtZXMuaD4KIAotdXNpbmcgbmFtZXNwYWNlIHN0ZDsKLQogbmFtZXNw
YWNlIFdlYkNvcmUgewogCiB1c2luZyBuYW1lc3BhY2UgSFRNTE5hbWVzOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5jcHAKaW5kZXgg
Zjg1NTdmMGIwMWYzM2U3NjI4MGM1MzRjODJlOTVlMzE3NjgyY2ZmOC4uZmEzMTRhZDAxNDcxODVl
NTU5MTM4NjA4N2NmMTU1MTg4ZjhkMDY5ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNj
ZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9h
Y2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuY3BwCkBAIC02Nyw4ICs2Nyw2IEBACiAj
aW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAjaW5jbHVkZSA8d3RmL3VuaWNvZGUvQ2hh
cmFjdGVyTmFtZXMuaD4KIAotdXNpbmcgbmFtZXNwYWNlIHN0ZDsKLQogbmFtZXNwYWNlIFdlYkNv
cmUgewogCiB1c2luZyBuYW1lc3BhY2UgSFRNTE5hbWVzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5jcHAKaW5k
ZXggM2NhMmE5NGUzNWI1Mjg1MmJmY2Y3YTVlN2M0M2ZkZTNiOTYwMjViNy4uNWMwNDRhMmYxZTZj
ZTAxNjg1MWFiYzMwYTM0YjY1ZGFjODQyMGVjZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
YWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3BwCkBAIC0x
MDEsOCArMTAxLDYgQEAKICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+CiAjaW5j
bHVkZSA8d3RmL3VuaWNvZGUvQ2hhcmFjdGVyTmFtZXMuaD4KIAotdXNpbmcgbmFtZXNwYWNlIHN0
ZDsKLQogbmFtZXNwYWNlIFdlYkNvcmUgewogCiB1c2luZyBuYW1lc3BhY2UgSFRNTE5hbWVzOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFi
bGUuY3BwIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFibGUu
Y3BwCmluZGV4IDMzOTUyOWZhODU2MjlmNWY1Y2I3NjcxMmU1OTYxMzg4ZWM2NTI1MzMuLjRjNDA0
NzAyN2E5MTIzNzQ3ZTkxOWQ1YWFjOGZmYjFmOThkMDVlMmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlUYWJsZS5jcHAKQEAgLTM4Miw3ICsz
ODIsNyBAQCB2b2lkIEFjY2Vzc2liaWxpdHlUYWJsZTo6YWRkQ2hpbGRyZW4oKQogICAgICAgICAg
ICAgYXBwZW5kZWRSb3dzLmFkZChyb3cpOwogICAgICAgICB9CiAgICAgCi0gICAgICAgIG1heENv
bHVtbkNvdW50ID0gbWF4KHRhYmxlU2VjdGlvbi0+bnVtQ29sdW1ucygpLCBtYXhDb2x1bW5Db3Vu
dCk7CisgICAgICAgIG1heENvbHVtbkNvdW50ID0gc3RkOjptYXgodGFibGVTZWN0aW9uLT5udW1D
b2x1bW5zKCksIG1heENvbHVtbkNvdW50KTsKICAgICAgICAgdGFibGVTZWN0aW9uID0gdGFibGUt
PnNlY3Rpb25CZWxvdyh0YWJsZVNlY3Rpb24sIFNraXBFbXB0eVNlY3Rpb25zKTsKICAgICB9CiAg
ICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxp
dHlUYWJsZUNlbGwuY3BwIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmls
aXR5VGFibGVDZWxsLmNwcAppbmRleCA1MzVhZmVkNDk2NmJiN2MzYmM3ZGQwNGVmMzJhMTBiODY4
ZmMzYWRmLi44YTJjZDU3NTllMWEwOGIxMmVhNjQ5ZjE3NGVkMzdkNGY4YzRjMWRiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlUYWJsZUNlbGwu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxl
Q2VsbC5jcHAKQEAgLTM0LDggKzM0LDYgQEAKICNpbmNsdWRlICJSZW5kZXJPYmplY3QuaCIKICNp
bmNsdWRlICJSZW5kZXJUYWJsZUNlbGwuaCIKIAotdXNpbmcgbmFtZXNwYWNlIHN0ZDsKLQogbmFt
ZXNwYWNlIFdlYkNvcmUgewogICAgIAogdXNpbmcgbmFtZXNwYWNlIEhUTUxOYW1lczsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxlQ29s
dW1uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxl
Q29sdW1uLmNwcAppbmRleCBjNDc5Yzg2NjI0OWMyMTRhYjQ1M2QzZjljMDc5MTBiNzQ0NDVlYWFj
Li4xYTU1OTQzNDAwNmRmMjA4MzgxYzc2Mzk3MzFmMThlOGViMTc4NjlmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlUYWJsZUNvbHVtbi5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFibGVDb2x1
bW4uY3BwCkBAIC0zNiw4ICszNiw2IEBACiAjaW5jbHVkZSAiUmVuZGVyVGFibGVDZWxsLmgiCiAj
aW5jbHVkZSAiUmVuZGVyVGFibGVTZWN0aW9uLmgiCiAKLXVzaW5nIG5hbWVzcGFjZSBzdGQ7Ci0K
IG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAKIHVzaW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlUYWJs
ZUhlYWRlckNvbnRhaW5lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vz
c2liaWxpdHlUYWJsZUhlYWRlckNvbnRhaW5lci5jcHAKaW5kZXggOGEwOTEyZDMxNTVmMjQ4NTZk
MjcxYmFjNDVlYTU3OTViOWU0ZmMyMS4uMDE5ZjMxMjMwMjdjYTBiZTczZGFiNjdhMzE3ZmMxNjFi
M2UwZjNiZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3Np
YmlsaXR5VGFibGVIZWFkZXJDb250YWluZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vz
c2liaWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxlSGVhZGVyQ29udGFpbmVyLmNwcApAQCAtMzIsOCAr
MzIsNiBAQAogI2luY2x1ZGUgIkFYT2JqZWN0Q2FjaGUuaCIKICNpbmNsdWRlICJBY2Nlc3NpYmls
aXR5VGFibGUuaCIKIAotdXNpbmcgbmFtZXNwYWNlIHN0ZDsKLQogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCiBBY2Nlc3NpYmlsaXR5VGFibGVIZWFkZXJDb250YWluZXI6OkFjY2Vzc2liaWxpdHlUYWJs
ZUhlYWRlckNvbnRhaW5lcigpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L0FjY2Vzc2liaWxpdHlUYWJsZVJvdy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L0FjY2Vzc2liaWxpdHlUYWJsZVJvdy5jcHAKaW5kZXggNDRlZGFkYTI4YmQ3N2YzMDBmZjQ0
MDNhMDg4MzE4OWJmY2QyNjg1ZS4uNjUzYTA2MjAzMDg3YThkNjRmYjljNzZjM2RjODUzZjdiNGJk
MGQzNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmls
aXR5VGFibGVSb3cuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNz
aWJpbGl0eVRhYmxlUm93LmNwcApAQCAtMzcsOCArMzcsNiBAQAogI2luY2x1ZGUgIlJlbmRlclRh
YmxlQ2VsbC5oIgogI2luY2x1ZGUgIlJlbmRlclRhYmxlUm93LmgiCiAKLXVzaW5nIG5hbWVzcGFj
ZSBzdGQ7Ci0KIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAKIHVzaW5nIG5hbWVzcGFjZSBIVE1M
TmFtZXM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9XZWJB
Y2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlckJhc2UubW0gYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3Np
YmlsaXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlckJhc2UubW0KaW5kZXggZDFi
ODQxN2Y5NzA4Yjg5Zjg1YjVhNzc4NDU1MDNiMjIxNTUxMWMyMi4uMWNhZjRiM2FlZDU2ZTAxNGZm
ZDU0MmEyN2UyMGNkYTRmNGUwZmFhMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJCYXNlLm1tCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFw
cGVyQmFzZS5tbQpAQCAtNzUsNyArNzUsNiBAQAogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsK
IHVzaW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7Ci11c2luZyBuYW1lc3BhY2Ugc3RkOwogCiBzdGF0
aWMgTlNBcnJheSAqY29udmVydE1hdGhQYWlyc1RvTlNBcnJheShjb25zdCBBY2Nlc3NpYmlsaXR5
T2JqZWN0OjpBY2Nlc3NpYmlsaXR5TWF0aE11bHRpc2NyaXB0UGFpcnMmIHBhaXJzLCBOU1N0cmlu
ZyAqc3Vic2NyaXB0S2V5LCBOU1N0cmluZyAqc3VwZXJzY3JpcHRLZXkpCiB7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0
V3JhcHBlck1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vz
c2liaWxpdHlPYmplY3RXcmFwcGVyTWFjLm1tCmluZGV4IDhlMjM5MjBlYjk5YmI1ODE5ODg3Yzdj
NDIxOGI2MzUyNGRlYmMzMDEuLmE4YTJkMTkxYTk2NGVlY2Y3OTQ3ZDMxNDQzMzQ0ODYyMjNkYmRi
YWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vz
c2liaWxpdHlPYmplY3RXcmFwcGVyTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2li
aWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyTWFjLm1tCkBAIC03Nyw3ICs3
Nyw2IEBACiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogdXNpbmcgbmFtZXNwYWNlIEhUTUxO
YW1lczsKLXVzaW5nIG5hbWVzcGFjZSBzdGQ7CiAKIC8vIENlbGwgVGFibGVzCiAjaWZuZGVmIE5T
QWNjZXNzaWJpbGl0eVNlbGVjdGVkQ2VsbHNBdHRyaWJ1dGUKQEAgLTM2MTksNyArMzYxOCw3IEBA
IHN0YXRpYyBSZW5kZXJPYmplY3QqIHJlbmRlcmVyRm9yVmlldyhOU1ZpZXcqIHZpZXcpCiAgICAg
ICAgICAgICBpZiAoaW5kZXggPj0gY2hpbGRDb3VudCkKICAgICAgICAgICAgICAgICByZXR1cm4g
bmlsOwogICAgICAgICAgICAgCi0gICAgICAgICAgICBOU1VJbnRlZ2VyIGFycmF5TGVuZ3RoID0g
bWluKGNoaWxkQ291bnQgLSBpbmRleCwgbWF4Q291bnQpOworICAgICAgICAgICAgTlNVSW50ZWdl
ciBhcnJheUxlbmd0aCA9IHN0ZDo6bWluKGNoaWxkQ291bnQgLSBpbmRleCwgbWF4Q291bnQpOwog
ICAgICAgICAgICAgcmV0dXJuIFtjaGlsZHJlbiBzdWJhcnJheVdpdGhSYW5nZTpOU01ha2VSYW5n
ZShpbmRleCwgYXJyYXlMZW5ndGgpXTsKICAgICAgICAgfSBlbHNlIGlmIChtX29iamVjdC0+aXNU
cmVlKCkpIHsKICAgICAgICAgICAgIC8vIFRyZWUgb2JqZWN0cyByZXR1cm4gdGhlaXIgcm93cyBh
cyB0aGVpciBjaGlsZHJlbi4gV2UgY2FuIHVzZSB0aGUgb3JpZ2luYWwgbWV0aG9kIGluIHRoaXMg
Y2FzZS4KQEAgLTM2MzEsNyArMzYzMCw3IEBAIHN0YXRpYyBSZW5kZXJPYmplY3QqIHJlbmRlcmVy
Rm9yVmlldyhOU1ZpZXcqIHZpZXcpCiAgICAgICAgIGlmIChpbmRleCA+PSBjaGlsZENvdW50KQog
ICAgICAgICAgICAgcmV0dXJuIG5pbDsKICAgICAgICAgCi0gICAgICAgIHVuc2lnbmVkIGF2YWls
YWJsZSA9IG1pbihjaGlsZENvdW50IC0gaW5kZXgsIG1heENvdW50KTsKKyAgICAgICAgdW5zaWdu
ZWQgYXZhaWxhYmxlID0gc3RkOjptaW4oY2hpbGRDb3VudCAtIGluZGV4LCBtYXhDb3VudCk7CiAg
ICAgICAgIAogICAgICAgICBOU011dGFibGVBcnJheSAqc3ViYXJyYXkgPSBbTlNNdXRhYmxlQXJy
YXkgYXJyYXlXaXRoQ2FwYWNpdHk6YXZhaWxhYmxlXTsKICAgICAgICAgZm9yICh1bnNpZ25lZCBh
ZGRlZCA9IDA7IGFkZGVkIDwgYXZhaWxhYmxlOyArK2luZGV4LCArK2FkZGVkKSB7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0NTU1N0eWxlRGVjbGFyYXRpb25DdXN0
b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDU1NTdHlsZURlY2xhcmF0aW9u
Q3VzdG9tLmNwcAppbmRleCA2NjQ4OGJmYWY4ZTJhYTZjYzZmNWI4ZTVjYWQ0NWUzYmM3OTkwYTc3
Li4wYWI5OGNlNGNiZDdjOWVjZGIyY2U4NDk1NWJlMWM2NWYwNjNmNWQ3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0NTU1N0eWxlRGVjbGFyYXRpb25DdXN0b20uY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ1NTU3R5bGVEZWNsYXJhdGlvbkN1
c3RvbS5jcHAKQEAgLTQ1LDcgKzQ1LDYgQEAKIAogdXNpbmcgbmFtZXNwYWNlIEpTQzsKIHVzaW5n
IG5hbWVzcGFjZSBXVEY7Ci11c2luZyBuYW1lc3BhY2Ugc3RkOwogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKQEAgLTM4OSw3ICszODgsNyBAQCB2b2lkIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbjo6Z2V0
T3duUHJvcGVydHlOYW1lcyhKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZQogICAgICAg
ICBWZWN0b3I8U3RyaW5nLCBudW1DU1NQcm9wZXJ0aWVzPiBqc1Byb3BlcnR5TmFtZXM7CiAgICAg
ICAgIGZvciAoaW50IGlkID0gZmlyc3RDU1NQcm9wZXJ0eTsgaWQgPCBmaXJzdENTU1Byb3BlcnR5
ICsgbnVtQ1NTUHJvcGVydGllczsgKytpZCkKICAgICAgICAgICAgIGpzUHJvcGVydHlOYW1lcy5h
cHBlbmQoZ2V0SlNQcm9wZXJ0eU5hbWUoc3RhdGljX2Nhc3Q8Q1NTUHJvcGVydHlJRD4oaWQpKSk7
Ci0gICAgICAgIHNvcnQoanNQcm9wZXJ0eU5hbWVzLmJlZ2luKCksIGpzUHJvcGVydHlOYW1lcy5l
bmQoKSwgV1RGOjpjb2RlUG9pbnRDb21wYXJlTGVzc1RoYW4pOworICAgICAgICBzdGQ6OnNvcnQo
anNQcm9wZXJ0eU5hbWVzLmJlZ2luKCksIGpzUHJvcGVydHlOYW1lcy5lbmQoKSwgV1RGOjpjb2Rl
UG9pbnRDb21wYXJlTGVzc1RoYW4pOwogCiAgICAgICAgIHByb3BlcnR5SWRlbnRpZmllcnMgPSBu
ZXcgSWRlbnRpZmllcltudW1DU1NQcm9wZXJ0aWVzXTsKICAgICAgICAgZm9yIChpbnQgaSA9IDA7
IGkgPCBudW1DU1NQcm9wZXJ0aWVzOyArK2kpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU0dlb2xvY2F0aW9uQ3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTR2VvbG9jYXRpb25DdXN0b20uY3BwCmluZGV4IGNiMDA3NDQxZTM4NDVkYzUxN2Yx
MTljZjZlZGUzYWRjOTM2YmQxZWEuLmQxYTJkYWExYTViMTQ1NWRkMTdkYzU0NjhjNWY0ODQzMzk2
M2M5YTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTR2VvbG9jYXRp
b25DdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTR2VvbG9jYXRp
b25DdXN0b20uY3BwCkBAIC0zOCw3ICszOCw2IEBACiAjaW5jbHVkZSAiUG9zaXRpb25PcHRpb25z
LmgiCiAKIHVzaW5nIG5hbWVzcGFjZSBKU0M7Ci11c2luZyBuYW1lc3BhY2Ugc3RkOwogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKQEAgLTU0LDcgKzUzLDcgQEAgc3RhdGljIHZvaWQgc2V0VGltZW91
dChQb3NpdGlvbk9wdGlvbnMqIG9wdGlvbnMsIGNvbnN0IGRvdWJsZSYgdGltZW91dCkKICAgICAv
LyBJZiB0aGUgdmFsdWUgaXMgcG9zaXRpdmUgaW5maW5pdHksIHRoZXJlJ3Mgbm90aGluZyB0byBk
by4KICAgICBpZiAoIShzdGQ6OmlzaW5mKHRpbWVvdXQpICYmICh0aW1lb3V0ID4gMCkpKSB7CiAg
ICAgICAgIC8vIFdyYXAgdG8gaW50MzIgYW5kIGZvcmNlIG5vbi1uZWdhdGl2ZSB0byBtYXRjaCBi
ZWhhdmlvciBvZiB3aW5kb3cuc2V0VGltZW91dC4KLSAgICAgICAgb3B0aW9ucy0+c2V0VGltZW91
dChtYXgoMCwgc3RhdGljX2Nhc3Q8aW50Pih0aW1lb3V0KSkpOworICAgICAgICBvcHRpb25zLT5z
ZXRUaW1lb3V0KHN0ZDo6bWF4PGludD4oMCwgdGltZW91dCkpOwogICAgIH0KIH0KIApAQCAtNjUs
NyArNjQsNyBAQCBzdGF0aWMgdm9pZCBzZXRNYXhpbXVtQWdlKFBvc2l0aW9uT3B0aW9ucyogb3B0
aW9ucywgY29uc3QgZG91YmxlJiBtYXhpbXVtQWdlKQogICAgICAgICBvcHRpb25zLT5jbGVhck1h
eGltdW1BZ2UoKTsKICAgICB9IGVsc2UgewogICAgICAgICAvLyBXcmFwIHRvIGludDMyIGFuZCBm
b3JjZSBub24tbmVnYXRpdmUgdG8gbWF0Y2ggYmVoYXZpb3Igb2Ygd2luZG93LnNldFRpbWVvdXQu
Ci0gICAgICAgIG9wdGlvbnMtPnNldE1heGltdW1BZ2UobWF4KDAsIHN0YXRpY19jYXN0PGludD4o
bWF4aW11bUFnZSkpKTsKKyAgICAgICAgb3B0aW9ucy0+c2V0TWF4aW11bUFnZShzdGQ6Om1heDxp
bnQ+KDAsIG1heGltdW1BZ2UpKTsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlci5jcHAKaW5kZXggNDFhZDQwODNlODVjNWYwNzQ1Y2Fl
ZDI4MGRkMDdhZjIyYTBlNWE1Yy4uZTZjNzhjNWU0N2E3MjU0OWY2NjAzNmY4NmY1NWQ4NGZlZWZi
ZDU3MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q29udHJv
bGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxl
ci5jcHAKQEAgLTU2LDcgKzU2LDYgQEAKICNpbmNsdWRlIDx3dGYvdGV4dC9UZXh0UG9zaXRpb24u
aD4KIAogdXNpbmcgbmFtZXNwYWNlIEpTQzsKLXVzaW5nIG5hbWVzcGFjZSBzdGQ7CiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
U2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1Nl
cmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHAKaW5kZXggZGU0YzcyOTFhMTgxODJjZmIwNDUwMTg1YTFl
YjE2ODc0MmMyZTY2MS4uYTUzNWMzNDkyMDM3NGIwZTdhNzczZDU2YmQ1N2U4YmY3OTQyYmM3ZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZh
bHVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0
VmFsdWUuY3BwCkBAIC02OSw3ICs2OSw2IEBACiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogCiB1
c2luZyBuYW1lc3BhY2UgSlNDOwotdXNpbmcgbmFtZXNwYWNlIHN0ZDsKIAogI2lmIENQVShCSUdf
RU5ESUFOKSB8fCBDUFUoTUlERExFX0VORElBTikgfHwgQ1BVKE5FRURTX0FMSUdORURfQUNDRVNT
KQogI2RlZmluZSBBU1NVTUVfTElUVExFX0VORElBTiAwCkBAIC0zMTIsNyArMzExLDcgQEAgdGVt
cGxhdGUgPD4gdm9pZCB3cml0ZUxpdHRsZUVuZGlhbjx1aW50OF90PihWZWN0b3I8dWludDhfdD4m
IGJ1ZmZlciwgdWludDhfdCB2YWwKIAogdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IHN0YXRpYyBib29s
IHdyaXRlTGl0dGxlRW5kaWFuKFZlY3Rvcjx1aW50OF90PiYgYnVmZmVyLCBjb25zdCBUKiB2YWx1
ZXMsIHVpbnQzMl90IGxlbmd0aCkKIHsKLSAgICBpZiAobGVuZ3RoID4gbnVtZXJpY19saW1pdHM8
dWludDMyX3Q+OjptYXgoKSAvIHNpemVvZihUKSkKKyAgICBpZiAobGVuZ3RoID4gc3RkOjpudW1l
cmljX2xpbWl0czx1aW50MzJfdD46Om1heCgpIC8gc2l6ZW9mKFQpKQogICAgICAgICByZXR1cm4g
ZmFsc2U7CiAKICNpZiBBU1NVTUVfTElUVExFX0VORElBTgpAQCAtODIxLDcgKzgyMCw3IEBAIHBy
aXZhdGU6CiAgICAgICAgIH0KIAogICAgICAgICAvLyBHdWFyZCBhZ2FpbnN0IG92ZXJmbG93Ci0g
ICAgICAgIGlmIChzdHIubGVuZ3RoKCkgPiAobnVtZXJpY19saW1pdHM8dWludDMyX3Q+OjptYXgo
KSAtIHNpemVvZih1aW50MzJfdCkpIC8gc2l6ZW9mKFVDaGFyKSkgeworICAgICAgICBpZiAoc3Ry
Lmxlbmd0aCgpID4gKHN0ZDo6bnVtZXJpY19saW1pdHM8dWludDMyX3Q+OjptYXgoKSAtIHNpemVv
Zih1aW50MzJfdCkpIC8gc2l6ZW9mKFVDaGFyKSkgewogICAgICAgICAgICAgZmFpbCgpOwogICAg
ICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CkBAIC0xMTA5LDEwICsxMTA4LDEwIEBAIHB1Ymxp
YzoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFZl
Y3Rvcjx1aW50OF90PiYgYnVmZmVyKQogICAgIHsKICAgICAgICAgaWYgKCFidWZmZXIuc2l6ZSgp
KQotICAgICAgICAgICAgcmV0dXJuIG1ha2VfcGFpcihqc051bGwoKSwgVW5zcGVjaWZpZWRFcnJv
cik7CisgICAgICAgICAgICByZXR1cm4gc3RkOjptYWtlX3BhaXIoanNOdWxsKCksIFVuc3BlY2lm
aWVkRXJyb3IpOwogICAgICAgICBDbG9uZURlc2VyaWFsaXplciBkZXNlcmlhbGl6ZXIoZXhlYywg
Z2xvYmFsT2JqZWN0LCBtZXNzYWdlUG9ydHMsIGFycmF5QnVmZmVyQ29udGVudHNBcnJheSwgYnVm
ZmVyKTsKICAgICAgICAgaWYgKCFkZXNlcmlhbGl6ZXIuaXNWYWxpZCgpKQotICAgICAgICAgICAg
cmV0dXJuIG1ha2VfcGFpcihKU1ZhbHVlKCksIFZhbGlkYXRpb25FcnJvcik7CisgICAgICAgICAg
ICByZXR1cm4gc3RkOjptYWtlX3BhaXIoSlNWYWx1ZSgpLCBWYWxpZGF0aW9uRXJyb3IpOwogICAg
ICAgICByZXR1cm4gZGVzZXJpYWxpemVyLmRlc2VyaWFsaXplKCk7CiAgICAgfQogCkBAIC0xMjgz
LDcgKzEyODIsNyBAQCBwcml2YXRlOgogCiAgICAgc3RhdGljIGJvb2wgcmVhZFN0cmluZyhjb25z
dCB1aW50OF90KiYgcHRyLCBjb25zdCB1aW50OF90KiBlbmQsIFN0cmluZyYgc3RyLCB1bnNpZ25l
ZCBsZW5ndGgpCiAgICAgewotICAgICAgICBpZiAobGVuZ3RoID49IG51bWVyaWNfbGltaXRzPGlu
dDMyX3Q+OjptYXgoKSAvIHNpemVvZihVQ2hhcikpCisgICAgICAgIGlmIChsZW5ndGggPj0gc3Rk
OjpudW1lcmljX2xpbWl0czxpbnQzMl90Pjo6bWF4KCkgLyBzaXplb2YoVUNoYXIpKQogICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgICAgIHVuc2lnbmVkIHNpemUgPSBsZW5ndGggKiBz
aXplb2YoVUNoYXIpOwpAQCAtMTc0OCw3ICsxNzQ3LDcgQEAgRGVzZXJpYWxpemF0aW9uUmVzdWx0
IENsb25lRGVzZXJpYWxpemVyOjpkZXNlcmlhbGl6ZSgpCiAgICAgICAgIG9iamVjdFN0YXJ0U3Rh
dGU6CiAgICAgICAgIGNhc2UgT2JqZWN0U3RhcnRTdGF0ZTogewogICAgICAgICAgICAgaWYgKG91
dHB1dE9iamVjdFN0YWNrLnNpemUoKSA+IG1heGltdW1GaWx0ZXJSZWN1cnNpb24pCi0gICAgICAg
ICAgICAgICAgcmV0dXJuIG1ha2VfcGFpcihKU1ZhbHVlKCksIFN0YWNrT3ZlcmZsb3dFcnJvcik7
CisgICAgICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV9wYWlyKEpTVmFsdWUoKSwgU3RhY2tP
dmVyZmxvd0Vycm9yKTsKICAgICAgICAgICAgIEpTT2JqZWN0KiBvdXRPYmplY3QgPSBjb25zdHJ1
Y3RFbXB0eU9iamVjdChtX2V4ZWMsIG1fZ2xvYmFsT2JqZWN0LT5vYmplY3RQcm90b3R5cGUoKSk7
CiAgICAgICAgICAgICBtX2djQnVmZmVyLmFwcGVuZChvdXRPYmplY3QpOwogICAgICAgICAgICAg
b3V0cHV0T2JqZWN0U3RhY2suYXBwZW5kKG91dE9iamVjdCk7CkBAIC0xNzgzLDcgKzE3ODIsNyBA
QCBEZXNlcmlhbGl6YXRpb25SZXN1bHQgQ2xvbmVEZXNlcmlhbGl6ZXI6OmRlc2VyaWFsaXplKCkK
ICAgICAgICAgfQogICAgICAgICBtYXBPYmplY3RTdGFydFN0YXRlOiB7CiAgICAgICAgICAgICBp
ZiAob3V0cHV0T2JqZWN0U3RhY2suc2l6ZSgpID4gbWF4aW11bUZpbHRlclJlY3Vyc2lvbikKLSAg
ICAgICAgICAgICAgICByZXR1cm4gbWFrZV9wYWlyKEpTVmFsdWUoKSwgU3RhY2tPdmVyZmxvd0Vy
cm9yKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gc3RkOjptYWtlX3BhaXIoSlNWYWx1ZSgpLCBT
dGFja092ZXJmbG93RXJyb3IpOwogICAgICAgICAgICAgSlNNYXAqIG1hcCA9IEpTTWFwOjpjcmVh
dGUobV9leGVjLT52bSgpLCBtX2dsb2JhbE9iamVjdC0+bWFwU3RydWN0dXJlKCkpOwogICAgICAg
ICAgICAgbV9nY0J1ZmZlci5hcHBlbmQobWFwKTsKICAgICAgICAgICAgIG91dHB1dE9iamVjdFN0
YWNrLmFwcGVuZChtYXApOwpAQCAtMTc5Myw3ICsxNzkyLDcgQEAgRGVzZXJpYWxpemF0aW9uUmVz
dWx0IENsb25lRGVzZXJpYWxpemVyOjpkZXNlcmlhbGl6ZSgpCiAgICAgICAgIH0KICAgICAgICAg
c2V0T2JqZWN0U3RhcnRTdGF0ZTogewogICAgICAgICAgICAgaWYgKG91dHB1dE9iamVjdFN0YWNr
LnNpemUoKSA+IG1heGltdW1GaWx0ZXJSZWN1cnNpb24pCi0gICAgICAgICAgICAgICAgcmV0dXJu
IG1ha2VfcGFpcihKU1ZhbHVlKCksIFN0YWNrT3ZlcmZsb3dFcnJvcik7CisgICAgICAgICAgICAg
ICAgcmV0dXJuIHN0ZDo6bWFrZV9wYWlyKEpTVmFsdWUoKSwgU3RhY2tPdmVyZmxvd0Vycm9yKTsK
ICAgICAgICAgICAgIEpTU2V0KiBzZXQgPSBKU1NldDo6Y3JlYXRlKG1fZXhlYy0+dm0oKSwgbV9n
bG9iYWxPYmplY3QtPnNldFN0cnVjdHVyZSgpKTsKICAgICAgICAgICAgIG1fZ2NCdWZmZXIuYXBw
ZW5kKHNldCk7CiAgICAgICAgICAgICBvdXRwdXRPYmplY3RTdGFjay5hcHBlbmQoc2V0KTsKQEAg
LTE4NDcsMTAgKzE4NDYsMTAgQEAgRGVzZXJpYWxpemF0aW9uUmVzdWx0IENsb25lRGVzZXJpYWxp
emVyOjpkZXNlcmlhbGl6ZSgpCiAgICAgfQogICAgIEFTU0VSVChvdXRWYWx1ZSk7CiAgICAgQVNT
RVJUKCFtX2ZhaWxlZCk7Ci0gICAgcmV0dXJuIG1ha2VfcGFpcihvdXRWYWx1ZSwgU3VjY2Vzc2Z1
bGx5Q29tcGxldGVkKTsKKyAgICByZXR1cm4gc3RkOjptYWtlX3BhaXIob3V0VmFsdWUsIFN1Y2Nl
c3NmdWxseUNvbXBsZXRlZCk7CiBlcnJvcjoKICAgICBmYWlsKCk7Ci0gICAgcmV0dXJuIG1ha2Vf
cGFpcihKU1ZhbHVlKCksIFZhbGlkYXRpb25FcnJvcik7CisgICAgcmV0dXJuIHN0ZDo6bWFrZV9w
YWlyKEpTVmFsdWUoKSwgVmFsaWRhdGlvbkVycm9yKTsKIH0KIAogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9DU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uY3BwCmluZGV4IGQxYmVhMDRk
NTUzYmY2OTZmMTZiODEyMjBkOTk0MjMxMzhkNDdiN2MuLjU2NWZmNTk0ZTRlZDJmNDY2YmY2NjA0
ODFkMGM0ZjgzMjczZDQyNzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDb21w
dXRlZFN0eWxlRGVjbGFyYXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDb21w
dXRlZFN0eWxlRGVjbGFyYXRpb24uY3BwCkBAIC0yMzAyLDcgKzIzMDIsNyBAQCBQYXNzUmVmUHRy
PENTU1ZhbHVlPiBDb21wdXRlZFN0eWxlRXh0cmFjdG9yOjpwcm9wZXJ0eVZhbHVlKENTU1Byb3Bl
cnR5SUQgcHJvcGVydAogICAgICAgICBjYXNlIENTU1Byb3BlcnR5T3V0bGluZVdpZHRoOgogICAg
ICAgICAgICAgcmV0dXJuIHpvb21BZGp1c3RlZFBpeGVsVmFsdWUoc3R5bGUtPm91dGxpbmVXaWR0
aCgpLCBzdHlsZS5nZXQoKSk7CiAgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlPdmVyZmxvdzoKLSAg
ICAgICAgICAgIHJldHVybiBjc3NWYWx1ZVBvb2woKS5jcmVhdGVWYWx1ZShtYXgoc3R5bGUtPm92
ZXJmbG93WCgpLCBzdHlsZS0+b3ZlcmZsb3dZKCkpKTsKKyAgICAgICAgICAgIHJldHVybiBjc3NW
YWx1ZVBvb2woKS5jcmVhdGVWYWx1ZShzdGQ6Om1heChzdHlsZS0+b3ZlcmZsb3dYKCksIHN0eWxl
LT5vdmVyZmxvd1koKSkpOwogICAgICAgICBjYXNlIENTU1Byb3BlcnR5T3ZlcmZsb3dXcmFwOgog
ICAgICAgICAgICAgcmV0dXJuIGNzc1ZhbHVlUG9vbCgpLmNyZWF0ZVZhbHVlKHN0eWxlLT5vdmVy
Zmxvd1dyYXAoKSk7CiAgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlPdmVyZmxvd1g6CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udFNlbGVjdG9yLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2Nzcy9DU1NGb250U2VsZWN0b3IuY3BwCmluZGV4IDFhNjRjN2EwN2ZiNzRmMTU0YzZmOTNj
ZDBmOTFjOTU5NGRkZWU2NDkuLjIxMWRmYTVjYjRkZDAxOTk1NmExMzhmMGZhY2MwZmY0M2VkZGFh
ZWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250U2VsZWN0b3IuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250U2VsZWN0b3IuY3BwCkBAIC01Nyw4ICs1Nyw2
IEBACiAjaW5jbHVkZSAiU1ZHTmFtZXMuaCIKICNlbmRpZgogCi11c2luZyBuYW1lc3BhY2Ugc3Rk
OwotCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHN0YXRpYyB1bnNpZ25lZCBmb250U2VsZWN0b3JJ
ZDsKQEAgLTU1MCw3ICs1NDgsNyBAQCBDU1NTZWdtZW50ZWRGb250RmFjZSogQ1NTRm9udFNlbGVj
dG9yOjpnZXRGb250RmFjZShjb25zdCBGb250RGVzY3JpcHRpb24mIGZvbnREZQogICAgICAgICB9
CiAKICAgICAgICAgZGVzaXJlZFRyYWl0c01hc2tGb3JDb21wYXJpc29uID0gdHJhaXRzTWFzazsK
LSAgICAgICAgc3RhYmxlX3NvcnQoY2FuZGlkYXRlRm9udEZhY2VzLmJlZ2luKCksIGNhbmRpZGF0
ZUZvbnRGYWNlcy5lbmQoKSwgY29tcGFyZUZvbnRGYWNlcyk7CisgICAgICAgIHN0ZDo6c3RhYmxl
X3NvcnQoY2FuZGlkYXRlRm9udEZhY2VzLmJlZ2luKCksIGNhbmRpZGF0ZUZvbnRGYWNlcy5lbmQo
KSwgY29tcGFyZUZvbnRGYWNlcyk7CiAgICAgICAgIHVuc2lnbmVkIG51bUNhbmRpZGF0ZXMgPSBj
YW5kaWRhdGVGb250RmFjZXMuc2l6ZSgpOwogICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBp
IDwgbnVtQ2FuZGlkYXRlczsgKytpKQogICAgICAgICAgICAgZmFjZS0+YXBwZW5kRm9udEZhY2Uo
Y2FuZGlkYXRlRm9udEZhY2VzW2ldKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9D
U1NHcmFkaWVudFZhbHVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NHcmFkaWVudFZhbHVl
LmNwcAppbmRleCBiZDM4MmNhZWUxOTRiMDFhYjI3NTBmYjViMmJjY2JiMDI2ZWE5YjQ1Li5lMzNk
ZTNkODUxNDczMzAwYzAxMWUwMDdhYmUzMThkYTBjZmZiMGNlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9jc3MvQ1NTR3JhZGllbnRWYWx1ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3Nz
L0NTU0dyYWRpZW50VmFsdWUuY3BwCkBAIC0zOSw4ICszOSw2IEBACiAjaW5jbHVkZSA8d3RmL3Rl
eHQvU3RyaW5nQnVpbGRlci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCi11
c2luZyBuYW1lc3BhY2Ugc3RkOwotCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFBhc3NSZWZQdHI8
SW1hZ2U+IENTU0dyYWRpZW50VmFsdWU6OmltYWdlKFJlbmRlckVsZW1lbnQqIHJlbmRlcmVyLCBj
b25zdCBJbnRTaXplJiBzaXplKQpAQCAtMTA0OSwxMCArMTA0NywxMCBAQCBQYXNzUmVmUHRyPEdy
YWRpZW50PiBDU1NSYWRpYWxHcmFkaWVudFZhbHVlOjpjcmVhdGVHcmFkaWVudChSZW5kZXJFbGVt
ZW50KiByZW5kZQogICAgICAgICAvLyBIb3Jpem9udGFsCiAgICAgICAgIHN3aXRjaCAoZmlsbCkg
ewogICAgICAgICBjYXNlIENsb3Nlc3RTaWRlOiB7Ci0gICAgICAgICAgICBmbG9hdCB4RGlzdCA9
IG1pbihzZWNvbmRQb2ludC54KCksIHNpemUud2lkdGgoKSAtIHNlY29uZFBvaW50LngoKSk7Ci0g
ICAgICAgICAgICBmbG9hdCB5RGlzdCA9IG1pbihzZWNvbmRQb2ludC55KCksIHNpemUuaGVpZ2h0
KCkgLSBzZWNvbmRQb2ludC55KCkpOworICAgICAgICAgICAgZmxvYXQgeERpc3QgPSBzdGQ6Om1p
bihzZWNvbmRQb2ludC54KCksIHNpemUud2lkdGgoKSAtIHNlY29uZFBvaW50LngoKSk7CisgICAg
ICAgICAgICBmbG9hdCB5RGlzdCA9IHN0ZDo6bWluKHNlY29uZFBvaW50LnkoKSwgc2l6ZS5oZWln
aHQoKSAtIHNlY29uZFBvaW50LnkoKSk7CiAgICAgICAgICAgICBpZiAoc2hhcGUgPT0gQ2lyY2xl
KSB7Ci0gICAgICAgICAgICAgICAgZmxvYXQgc21hbGxlciA9IG1pbih4RGlzdCwgeURpc3QpOwor
ICAgICAgICAgICAgICAgIGZsb2F0IHNtYWxsZXIgPSBzdGQ6Om1pbih4RGlzdCwgeURpc3QpOwog
ICAgICAgICAgICAgICAgIHhEaXN0ID0gc21hbGxlcjsKICAgICAgICAgICAgICAgICB5RGlzdCA9
IHNtYWxsZXI7CiAgICAgICAgICAgICB9CkBAIC0xMDYxLDEwICsxMDU5LDEwIEBAIFBhc3NSZWZQ
dHI8R3JhZGllbnQ+IENTU1JhZGlhbEdyYWRpZW50VmFsdWU6OmNyZWF0ZUdyYWRpZW50KFJlbmRl
ckVsZW1lbnQqIHJlbmRlCiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBj
YXNlIEZhcnRoZXN0U2lkZTogewotICAgICAgICAgICAgZmxvYXQgeERpc3QgPSBtYXgoc2Vjb25k
UG9pbnQueCgpLCBzaXplLndpZHRoKCkgLSBzZWNvbmRQb2ludC54KCkpOwotICAgICAgICAgICAg
ZmxvYXQgeURpc3QgPSBtYXgoc2Vjb25kUG9pbnQueSgpLCBzaXplLmhlaWdodCgpIC0gc2Vjb25k
UG9pbnQueSgpKTsKKyAgICAgICAgICAgIGZsb2F0IHhEaXN0ID0gc3RkOjptYXgoc2Vjb25kUG9p
bnQueCgpLCBzaXplLndpZHRoKCkgLSBzZWNvbmRQb2ludC54KCkpOworICAgICAgICAgICAgZmxv
YXQgeURpc3QgPSBzdGQ6Om1heChzZWNvbmRQb2ludC55KCksIHNpemUuaGVpZ2h0KCkgLSBzZWNv
bmRQb2ludC55KCkpOwogICAgICAgICAgICAgaWYgKHNoYXBlID09IENpcmNsZSkgewotICAgICAg
ICAgICAgICAgIGZsb2F0IGxhcmdlciA9IG1heCh4RGlzdCwgeURpc3QpOworICAgICAgICAgICAg
ICAgIGZsb2F0IGxhcmdlciA9IHN0ZDo6bWF4KHhEaXN0LCB5RGlzdCk7CiAgICAgICAgICAgICAg
ICAgeERpc3QgPSBsYXJnZXI7CiAgICAgICAgICAgICAgICAgeURpc3QgPSBsYXJnZXI7CiAgICAg
ICAgICAgICB9CkBAIC0xMDgwLDggKzEwNzgsOCBAQCBQYXNzUmVmUHRyPEdyYWRpZW50PiBDU1NS
YWRpYWxHcmFkaWVudFZhbHVlOjpjcmVhdGVHcmFkaWVudChSZW5kZXJFbGVtZW50KiByZW5kZQog
ICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgLy8gSWYgPHNoYXBlPiBpcyBlbGxp
cHNlLCB0aGUgZ3JhZGllbnQtc2hhcGUgaGFzIHRoZSBzYW1lIHJhdGlvIG9mIHdpZHRoIHRvIGhl
aWdodAogICAgICAgICAgICAgICAgIC8vIHRoYXQgaXQgd291bGQgaWYgY2xvc2VzdC1zaWRlIG9y
IGZhcnRoZXN0LXNpZGUgd2VyZSBzcGVjaWZpZWQsIGFzIGFwcHJvcHJpYXRlLgotICAgICAgICAg
ICAgICAgIGZsb2F0IHhEaXN0ID0gbWluKHNlY29uZFBvaW50LngoKSwgc2l6ZS53aWR0aCgpIC0g
c2Vjb25kUG9pbnQueCgpKTsKLSAgICAgICAgICAgICAgICBmbG9hdCB5RGlzdCA9IG1pbihzZWNv
bmRQb2ludC55KCksIHNpemUuaGVpZ2h0KCkgLSBzZWNvbmRQb2ludC55KCkpOworICAgICAgICAg
ICAgICAgIGZsb2F0IHhEaXN0ID0gc3RkOjptaW4oc2Vjb25kUG9pbnQueCgpLCBzaXplLndpZHRo
KCkgLSBzZWNvbmRQb2ludC54KCkpOworICAgICAgICAgICAgICAgIGZsb2F0IHlEaXN0ID0gc3Rk
OjptaW4oc2Vjb25kUG9pbnQueSgpLCBzaXplLmhlaWdodCgpIC0gc2Vjb25kUG9pbnQueSgpKTsK
IAogICAgICAgICAgICAgICAgIHNlY29uZFJhZGl1cyA9IGhvcml6b250YWxFbGxpcHNlUmFkaXVz
KGNvcm5lciAtIHNlY29uZFBvaW50LCB4RGlzdCAvIHlEaXN0KTsKICAgICAgICAgICAgICAgICBh
c3BlY3RSYXRpbyA9IHhEaXN0IC8geURpc3Q7CkBAIC0xMDk3LDggKzEwOTUsOCBAQCBQYXNzUmVm
UHRyPEdyYWRpZW50PiBDU1NSYWRpYWxHcmFkaWVudFZhbHVlOjpjcmVhdGVHcmFkaWVudChSZW5k
ZXJFbGVtZW50KiByZW5kZQogICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgLy8g
SWYgPHNoYXBlPiBpcyBlbGxpcHNlLCB0aGUgZ3JhZGllbnQtc2hhcGUgaGFzIHRoZSBzYW1lIHJh
dGlvIG9mIHdpZHRoIHRvIGhlaWdodAogICAgICAgICAgICAgICAgIC8vIHRoYXQgaXQgd291bGQg
aWYgY2xvc2VzdC1zaWRlIG9yIGZhcnRoZXN0LXNpZGUgd2VyZSBzcGVjaWZpZWQsIGFzIGFwcHJv
cHJpYXRlLgotICAgICAgICAgICAgICAgIGZsb2F0IHhEaXN0ID0gbWF4KHNlY29uZFBvaW50Lngo
KSwgc2l6ZS53aWR0aCgpIC0gc2Vjb25kUG9pbnQueCgpKTsKLSAgICAgICAgICAgICAgICBmbG9h
dCB5RGlzdCA9IG1heChzZWNvbmRQb2ludC55KCksIHNpemUuaGVpZ2h0KCkgLSBzZWNvbmRQb2lu
dC55KCkpOworICAgICAgICAgICAgICAgIGZsb2F0IHhEaXN0ID0gc3RkOjptYXgoc2Vjb25kUG9p
bnQueCgpLCBzaXplLndpZHRoKCkgLSBzZWNvbmRQb2ludC54KCkpOworICAgICAgICAgICAgICAg
IGZsb2F0IHlEaXN0ID0gc3RkOjptYXgoc2Vjb25kUG9pbnQueSgpLCBzaXplLmhlaWdodCgpIC0g
c2Vjb25kUG9pbnQueSgpKTsKIAogICAgICAgICAgICAgICAgIHNlY29uZFJhZGl1cyA9IGhvcml6
b250YWxFbGxpcHNlUmFkaXVzKGNvcm5lciAtIHNlY29uZFBvaW50LCB4RGlzdCAvIHlEaXN0KTsK
ICAgICAgICAgICAgICAgICBhc3BlY3RSYXRpbyA9IHhEaXN0IC8geURpc3Q7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9D
U1NQYXJzZXIuY3BwCmluZGV4IGE1MGY0MWEwODVjMjFiMTA5MWNlNzAwNTExMmM3MDNiYWIxMzdk
YTkuLmEzYzRjMjExMWRiZjVhNTYyYWE3NjUxNTgzYzVhYmMxYWQ5MjFhYWEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nz
cy9DU1NQYXJzZXIuY3BwCkBAIC0xMjcsNyArMTI3LDYgQEAgZXh0ZXJuIGludCBjc3N5eWRlYnVn
OwogCiBleHRlcm4gaW50IGNzc3l5cGFyc2UoV2ViQ29yZTo6Q1NTUGFyc2VyKik7CiAKLXVzaW5n
IG5hbWVzcGFjZSBzdGQ7CiB1c2luZyBuYW1lc3BhY2UgV1RGOwogCiBuYW1lc3BhY2UgewpAQCAt
MjU2OSw4ICsyNTY4LDcgQEAgYm9vbCBDU1NQYXJzZXI6OnBhcnNlVmFsdWUoQ1NTUHJvcGVydHlJ
RCBwcm9wSWQsIGJvb2wgaW1wb3J0YW50KQogICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRPcmRl
cjoKICAgICAgICAgaWYgKHZhbGlkVW5pdCh2YWx1ZSwgRkludGVnZXIsIENTU1N0cmljdE1vZGUp
KSB7CiAgICAgICAgICAgICAvLyBXZSByZXN0cmljdCB0aGUgc21hbGxlc3QgdmFsdWUgdG8gaW50
IG1pbiArIDIgYmVjYXVzZSB3ZSB1c2UgaW50IG1pbiBhbmQgaW50IG1pbiArIDEgYXMgc3BlY2lh
bCB2YWx1ZXMgaW4gYSBoYXNoIHNldC4KLSAgICAgICAgICAgIHBhcnNlZFZhbHVlID0gY3NzVmFs
dWVQb29sKCkuY3JlYXRlVmFsdWUobWF4KHN0YXRpY19jYXN0PGRvdWJsZT4oc3RkOjpudW1lcmlj
X2xpbWl0czxpbnQ+OjptaW4oKSArIDIpLCB2YWx1ZS0+ZlZhbHVlKSwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0aWNfY2Fz
dDxDU1NQcmltaXRpdmVWYWx1ZTo6VW5pdFR5cGVzPih2YWx1ZS0+dW5pdCkpOworICAgICAgICAg
ICAgcGFyc2VkVmFsdWUgPSBjc3NWYWx1ZVBvb2woKS5jcmVhdGVWYWx1ZShzdGQ6Om1heDxkb3Vi
bGU+KHN0ZDo6bnVtZXJpY19saW1pdHM8aW50Pjo6bWluKCkgKyAyLCB2YWx1ZS0+ZlZhbHVlKSwg
c3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU6OlVuaXRUeXBlcz4odmFsdWUtPnVuaXQpKTsK
ICAgICAgICAgICAgIG1fdmFsdWVMaXN0LT5uZXh0KCk7CiAgICAgICAgIH0KICAgICAgICAgYnJl
YWs7CkBAIC02NDgwLDcgKzY0NzgsNyBAQCBib29sIENTU1BhcnNlcjo6cGFyc2VDb2xvclBhcmFt
ZXRlcnMoQ1NTUGFyc2VyVmFsdWUqIHZhbHVlLCBpbnQqIGNvbG9yQXJyYXksIGJvbwogICAgICAg
ICBjb25zdCBkb3VibGUgdmFsdWUgPSBwYXJzZWREb3VibGUodiwgUmVsZWFzZVBhcnNlZENhbGNW
YWx1ZSk7CiAgICAgICAgIC8vIENvbnZlcnQgdGhlIGZsb2F0aW5nIHBvaW50ZXIgbnVtYmVyIG9m
IGFscGhhIHRvIGFuIGludGVnZXIgaW4gdGhlIHJhbmdlIFswLCAyNTYpLAogICAgICAgICAvLyB3
aXRoIGFuIGVxdWFsIGRpc3RyaWJ1dGlvbiBhY3Jvc3MgYWxsIDI1NiB2YWx1ZXMuCi0gICAgICAg
IGNvbG9yQXJyYXlbM10gPSBzdGF0aWNfY2FzdDxpbnQ+KG1heCgwLjAsIG1pbigxLjAsIHZhbHVl
KSkgKiBuZXh0YWZ0ZXIoMjU2LjAsIDAuMCkpOworICAgICAgICBjb2xvckFycmF5WzNdID0gc3Rh
dGljX2Nhc3Q8aW50PihzdGQ6Om1heDxkb3VibGU+KDAsIHN0ZDo6bWluPGRvdWJsZT4oMSwgdmFs
dWUpKSAqIG5leHRhZnRlcigyNTYuMCwgMC4wKSk7CiAgICAgfQogICAgIHJldHVybiB0cnVlOwog
fQpAQCAtNjUwNiw3ICs2NTA0LDcgQEAgYm9vbCBDU1NQYXJzZXI6OnBhcnNlSFNMUGFyYW1ldGVy
cyhDU1NQYXJzZXJWYWx1ZSogdmFsdWUsIGRvdWJsZSogY29sb3JBcnJheSwgYm8KICAgICAgICAg
diA9IGFyZ3MtPm5leHQoKTsKICAgICAgICAgaWYgKCF2YWxpZFVuaXQodiwgRlBlcmNlbnQsIENT
U1N0cmljdE1vZGUpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICBjb2xvckFy
cmF5W2ldID0gbWF4KDAuMCwgbWluKDEwMC4wLCBwYXJzZWREb3VibGUodiwgUmVsZWFzZVBhcnNl
ZENhbGNWYWx1ZSkpKSAvIDEwMC4wOyAvLyBuZWVkcyB0byBiZSB2YWx1ZSBiZXR3ZWVuIDAgYW5k
IDEuMAorICAgICAgICBjb2xvckFycmF5W2ldID0gc3RkOjptYXg8ZG91YmxlPigwLCBzdGQ6Om1p
bjxkb3VibGU+KDEwMCwgcGFyc2VkRG91YmxlKHYsIFJlbGVhc2VQYXJzZWRDYWxjVmFsdWUpKSkg
LyAxMDAuMDsgLy8gbmVlZHMgdG8gYmUgdmFsdWUgYmV0d2VlbiAwIGFuZCAxLjAKICAgICB9CiAg
ICAgaWYgKHBhcnNlQWxwaGEpIHsKICAgICAgICAgdiA9IGFyZ3MtPm5leHQoKTsKQEAgLTY1MTUs
NyArNjUxMyw3IEBAIGJvb2wgQ1NTUGFyc2VyOjpwYXJzZUhTTFBhcmFtZXRlcnMoQ1NTUGFyc2Vy
VmFsdWUqIHZhbHVlLCBkb3VibGUqIGNvbG9yQXJyYXksIGJvCiAgICAgICAgIHYgPSBhcmdzLT5u
ZXh0KCk7CiAgICAgICAgIGlmICghdmFsaWRVbml0KHYsIEZOdW1iZXIsIENTU1N0cmljdE1vZGUp
KQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICBjb2xvckFycmF5WzNdID0gbWF4
KDAuMCwgbWluKDEuMCwgcGFyc2VkRG91YmxlKHYsIFJlbGVhc2VQYXJzZWRDYWxjVmFsdWUpKSk7
CisgICAgICAgIGNvbG9yQXJyYXlbM10gPSBzdGQ6Om1heDxkb3VibGU+KDAsIHN0ZDo6bWluPGRv
dWJsZT4oMSwgcGFyc2VkRG91YmxlKHYsIFJlbGVhc2VQYXJzZWRDYWxjVmFsdWUpKSk7CiAgICAg
fQogICAgIHJldHVybiB0cnVlOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NT
U1JlZmxlY3RWYWx1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUmVmbGVjdFZhbHVlLmNw
cAppbmRleCAxNWFlOGZhZmIzOGE5NTMzNjNlMThjZDRmYzNjOTY5ODU3ZWE0ZGIxLi44YWU4M2Nm
NWU4NWQ4N2U4NmEwODdlM2Q0OTNmMzZiYmVkNjAyYWY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9jc3MvQ1NTUmVmbGVjdFZhbHVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NT
UmVmbGVjdFZhbHVlLmNwcApAQCAtMjksOCArMjksNiBAQAogI2luY2x1ZGUgIkNTU1ByaW1pdGl2
ZVZhbHVlLmgiCiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgogCi11c2luZyBu
YW1lc3BhY2Ugc3RkOwotCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFN0cmluZyBDU1NSZWZsZWN0
VmFsdWU6OmN1c3RvbUNTU1RleHQoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
Y3NzL0RlcHJlY2F0ZWRTdHlsZUJ1aWxkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0RlcHJl
Y2F0ZWRTdHlsZUJ1aWxkZXIuY3BwCmluZGV4IDcwNzQ5MDBhNjA3NzFmZGJkNjgxY2YwODlhNTlk
NGVhYmM1MTcyZDUuLjAwMGY0NzMwMjgwMTU5YjAyZTFkNGYzMmY1ZTBmYWM3ZjdiODZmYzYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9EZXByZWNhdGVkU3R5bGVCdWlsZGVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvRGVwcmVjYXRlZFN0eWxlQnVpbGRlci5jcHAKQEAgLTUz
LDggKzUzLDYgQEAKICNpbmNsdWRlICJTaGFwZVZhbHVlLmgiCiAjZW5kaWYKIAotdXNpbmcgbmFt
ZXNwYWNlIHN0ZDsKLQogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBlbnVtIEV4cGFuZFZhbHVlQmVo
YXZpb3Ige1N1cHByZXNzVmFsdWUgPSAwLCBFeHBhbmRWYWx1ZX07CkBAIC04ODMsNyArODgxLDcg
QEAgcHVibGljOgogCiAgICAgICAgIC8vIE92ZXJseSBsYXJnZSBmb250IHNpemVzIHdpbGwgY2F1
c2UgY3Jhc2hlcyBvbiBzb21lIHBsYXRmb3JtcyAoc3VjaCBhcyBXaW5kb3dzKS4KICAgICAgICAg
Ly8gQ2FwIGZvbnQgc2l6ZSBoZXJlIHRvIG1ha2Ugc3VyZSB0aGF0IGRvZXNuJ3QgaGFwcGVuLgot
ICAgICAgICBzaXplID0gbWluKG1heGltdW1BbGxvd2VkRm9udFNpemUsIHNpemUpOworICAgICAg
ICBzaXplID0gc3RkOjptaW4obWF4aW11bUFsbG93ZWRGb250U2l6ZSwgc2l6ZSk7CiAKICAgICAg
ICAgc3R5bGVSZXNvbHZlci0+c2V0Rm9udFNpemUoZm9udERlc2NyaXB0aW9uLCBzaXplKTsKICAg
ICAgICAgc3R5bGVSZXNvbHZlci0+c2V0Rm9udERlc2NyaXB0aW9uKGZvbnREZXNjcmlwdGlvbik7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvUHJvcGVydHlTZXRDU1NTdHlsZURlY2xh
cmF0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9Qcm9wZXJ0eVNldENTU1N0eWxlRGVjbGFy
YXRpb24uY3BwCmluZGV4IDFkODAyZjVkMTg5NGUzNzdkNDc5NDg2NTdiN2JjMmY3MTJkNzgyZDAu
LmRhMjhhNGNjMjQ1ODAwMzk3M2ZhNWI3NzlkNjJhZDIzNGM5ZTYxZDYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9Qcm9wZXJ0eVNldENTU1N0eWxlRGVjbGFyYXRpb24uY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2Nzcy9Qcm9wZXJ0eVNldENTU1N0eWxlRGVjbGFyYXRpb24uY3BwCkBA
IC0zMSw4ICszMSw2IEBACiAjaW5jbHVkZSAiU3R5bGVQcm9wZXJ0eVNldC5oIgogI2luY2x1ZGUg
IlN0eWxlZEVsZW1lbnQuaCIKIAotdXNpbmcgbmFtZXNwYWNlIHN0ZDsKLQogbmFtZXNwYWNlIFdl
YkNvcmUgewogCiBuYW1lc3BhY2UgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL1NW
R0NTU1BhcnNlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU1ZHQ1NTUGFyc2VyLmNwcAppbmRl
eCBkZmRjNzRlOGJhMzkyMzI0MjZkNDVhMjQzYzRlNjNkZGRjMDAyYjQzLi45ZTUyZTljYzE1OGE3
MzVjYzYwOGZjNDFlMTI2YWQzZTkyNDk4NDk2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9j
c3MvU1ZHQ1NTUGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU1ZHQ1NTUGFyc2Vy
LmNwcApAQCAtMzIsOCArMzIsNiBAQAogI2luY2x1ZGUgIlJlbmRlclRoZW1lLmgiCiAjaW5jbHVk
ZSAiU1ZHUGFpbnQuaCIKIAotdXNpbmcgbmFtZXNwYWNlIHN0ZDsKLQogbmFtZXNwYWNlIFdlYkNv
cmUgewogCiBib29sIENTU1BhcnNlcjo6cGFyc2VTVkdWYWx1ZShDU1NQcm9wZXJ0eUlEIHByb3BJ
ZCwgYm9vbCBpbXBvcnRhbnQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVQ
cm9wZXJ0eVNldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVQcm9wZXJ0eVNldC5jcHAK
aW5kZXggYmVhN2Q0MDE4ZDJiNzA3NTA1OWNiY2YwOTkxMjRkOTY4NTRhNjAwOS4uZDA2OTg2Y2M2
NDNiYjkwNWEwY2JjMWIyMmUzNWU1MjRhMTE4Yjg1YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvY3NzL1N0eWxlUHJvcGVydHlTZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHls
ZVByb3BlcnR5U2V0LmNwcApAQCAtNDUsOCArNDUsNiBAQAogI2luY2x1ZGUgPHd0Zi90ZXh0L0NT
dHJpbmcuaD4KICNlbmRpZgogCi11c2luZyBuYW1lc3BhY2Ugc3RkOwotCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKIHN0YXRpYyBzaXplX3Qgc2l6ZUZvckltbXV0YWJsZVN0eWxlUHJvcGVydHlTZXRX
aXRoUHJvcGVydHlDb3VudCh1bnNpZ25lZCBjb3VudCkKQEAgLTM2Nyw5ICszNjUsOSBAQCBTdHJp
bmcgU3R5bGVQcm9wZXJ0eVNldDo6Z2V0TGF5ZXJlZFNob3J0aGFuZFZhbHVlKGNvbnN0IFN0eWxl
UHJvcGVydHlTaG9ydGhhbmQmCiAgICAgICAgIHZhbHVlc1tpXSA9IGdldFByb3BlcnR5Q1NTVmFs
dWUoc2hvcnRoYW5kLnByb3BlcnRpZXMoKVtpXSk7CiAgICAgICAgIGlmICh2YWx1ZXNbaV0pIHsK
ICAgICAgICAgICAgIGlmICh2YWx1ZXNbaV0tPmlzQmFzZVZhbHVlTGlzdCgpKQotICAgICAgICAg
ICAgICAgIG51bUxheWVycyA9IG1heCh0b0NTU1ZhbHVlTGlzdCh2YWx1ZXNbaV0uZ2V0KCkpLT5s
ZW5ndGgoKSwgbnVtTGF5ZXJzKTsKKyAgICAgICAgICAgICAgICBudW1MYXllcnMgPSBzdGQ6Om1h
eCh0b0NTU1ZhbHVlTGlzdCh2YWx1ZXNbaV0uZ2V0KCkpLT5sZW5ndGgoKSwgbnVtTGF5ZXJzKTsK
ICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICBudW1MYXllcnMgPSBtYXg8c2l6ZV90
PigxVSwgbnVtTGF5ZXJzKTsKKyAgICAgICAgICAgICAgICBudW1MYXllcnMgPSBzdGQ6Om1heDxz
aXplX3Q+KDFVLCBudW1MYXllcnMpOwogICAgICAgICB9CiAgICAgfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3Mv
U3R5bGVSZXNvbHZlci5jcHAKaW5kZXggM2M4ZTc4MWFjMjYwMjY5ZmY1MjZlZmM5NDIwZmVmNzQ2
MDIxM2Q0ZS4uZTdhZjYzZjExNzcwNDIwZDIzN2E1ZDU0OGNkMmNkMDY5NGZjMzE2OSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVyLmNwcApAQCAtMTg3LDggKzE4Nyw2IEBACiAjaW5jbHVk
ZSAiV2ViVlRURWxlbWVudC5oIgogI2VuZGlmCiAKLXVzaW5nIG5hbWVzcGFjZSBzdGQ7Ci0KIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAogdXNpbmcgbmFtZXNwYWNlIEhUTUxOYW1lczsKQEAgLTQxMjEs
OSArNDExOSw5IEBAIGludCBTdHlsZVJlc29sdmVyOjp2aWV3cG9ydFBlcmNlbnRhZ2VWYWx1ZShD
U1NQcmltaXRpdmVWYWx1ZSYgdW5pdCwgaW50IHBlcmNlbnRhCiAgICAgaWYgKHVuaXQuaXNWaWV3
cG9ydFBlcmNlbnRhZ2VXaWR0aCgpKQogICAgICAgICByZXR1cm4gdmlld1BvcnRXaWR0aDsKICAg
ICBpZiAodW5pdC5pc1ZpZXdwb3J0UGVyY2VudGFnZU1heCgpKQotICAgICAgICByZXR1cm4gbWF4
KHZpZXdQb3J0V2lkdGgsIHZpZXdQb3J0SGVpZ2h0KTsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bWF4
KHZpZXdQb3J0V2lkdGgsIHZpZXdQb3J0SGVpZ2h0KTsKICAgICBpZiAodW5pdC5pc1ZpZXdwb3J0
UGVyY2VudGFnZU1pbigpKQotICAgICAgICByZXR1cm4gbWluKHZpZXdQb3J0V2lkdGgsIHZpZXdQ
b3J0SGVpZ2h0KTsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bWluKHZpZXdQb3J0V2lkdGgsIHZpZXdQ
b3J0SGVpZ2h0KTsKIAogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIHJldHVybiAwOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0NoYXJhY3RlckRhdGEuY3BwIGIvU291cmNl
L1dlYkNvcmUvZG9tL0NoYXJhY3RlckRhdGEuY3BwCmluZGV4IGEyYzc2M2M0MjcxNzcyNjA4NTM4
MTQ4NzExN2MyNmU1YmY5NTcwNjcuLjcxMGRhNWVlNGQ2Mjg3ODQzNTM1NTM5OGY4OGIwNTFjYmE3
MjYyZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9DaGFyYWN0ZXJEYXRhLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQ2hhcmFjdGVyRGF0YS5jcHAKQEAgLTM4LDggKzM4LDYg
QEAKICNpbmNsdWRlICJUZXh0QnJlYWtJdGVyYXRvci5oIgogI2luY2x1ZGUgPHd0Zi9SZWYuaD4K
IAotdXNpbmcgbmFtZXNwYWNlIHN0ZDsKLQogbmFtZXNwYWNlIFdlYkNvcmUgewogCiB2b2lkIENo
YXJhY3RlckRhdGE6OnNldERhdGEoY29uc3QgU3RyaW5nJiBkYXRhLCBFeGNlcHRpb25Db2RlJikK
QEAgLTcyLDcgKzcwLDcgQEAgdW5zaWduZWQgQ2hhcmFjdGVyRGF0YTo6cGFyc2VyQXBwZW5kRGF0
YShjb25zdCBTdHJpbmcmIHN0cmluZywgdW5zaWduZWQgb2Zmc2V0LAogICAgIEFTU0VSVChsZW5n
dGhMaW1pdCA+PSBvbGRMZW5ndGgpOwogCiAgICAgdW5zaWduZWQgY2hhcmFjdGVyTGVuZ3RoID0g
c3RyaW5nLmxlbmd0aCgpIC0gb2Zmc2V0OwotICAgIHVuc2lnbmVkIGNoYXJhY3Rlckxlbmd0aExp
bWl0ID0gbWluKGNoYXJhY3Rlckxlbmd0aCwgbGVuZ3RoTGltaXQgLSBvbGRMZW5ndGgpOworICAg
IHVuc2lnbmVkIGNoYXJhY3Rlckxlbmd0aExpbWl0ID0gc3RkOjptaW4oY2hhcmFjdGVyTGVuZ3Ro
LCBsZW5ndGhMaW1pdCAtIG9sZExlbmd0aCk7CiAKICAgICAvLyBDaGVjayB0aGF0IHdlIGFyZSBu
b3Qgb24gYW4gdW5icmVha2FibGUgYm91bmRhcnkuCiAgICAgLy8gU29tZSB0ZXh0IGJyZWFrIGl0
ZXJhdG9yIGltcGxlbWVudGF0aW9ucyB3b3JrIGJlc3QgaWYgdGhlIHBhc3NlZCBidWZmZXIgaXMg
YXMgc21hbGwgYXMgcG9zc2libGUsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vQ29u
dGFpbmVyTm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQ29udGFpbmVyTm9kZS5jcHAKaW5k
ZXggYzBhZWFkMzk3MjQzNDljNWVlNTAxNmM1YTM2ODJmZGUzOTQ4YzFmMS4uMzI0NGQ4MjExMjA2
ODQwMGJiMTkzOTlhYWE5NGFjYzJhMmNhZjFhOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
ZG9tL0NvbnRhaW5lck5vZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Db250YWluZXJO
b2RlLmNwcApAQCAtNjQsOCArNjQsNiBAQAogI2luY2x1ZGUgIkRlbGV0ZUJ1dHRvbkNvbnRyb2xs
ZXIuaCIKICNlbmRpZgogCi11c2luZyBuYW1lc3BhY2Ugc3RkOwotCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKIHN0YXRpYyB2b2lkIGRpc3BhdGNoQ2hpbGRJbnNlcnRpb25FdmVudHMoTm9kZSYpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9Eb2N1bWVudC5jcHAKaW5kZXggZGE1MWUzM2IzYWNmMTk4ZGZmMTY4YTMxMDhkNzVm
YmMwYzBkMGEyNC4uZWRjOGEyNTg4M2U4MTMyNWY2OWI2ZGE3ZTlhNmIxMThkM2MyMjFmMCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vRG9jdW1lbnQuY3BwCkBAIC0yMjQsNyArMjI0LDYgQEAKICNpbmNsdWRlICJDYXB0
aW9uVXNlclByZWZlcmVuY2VzLmgiCiAjZW5kaWYKIAotdXNpbmcgbmFtZXNwYWNlIHN0ZDsKIHVz
aW5nIG5hbWVzcGFjZSBXVEY7CiB1c2luZyBuYW1lc3BhY2UgVW5pY29kZTsKIApAQCAtMjQ4Miw3
ICsyNDgxLDcgQEAgaW50IERvY3VtZW50OjptaW5pbXVtTGF5b3V0RGVsYXkoKQogICAgIG1fb3Zl
ck1pbmltdW1MYXlvdXRUaHJlc2hvbGQgPSBlbGFwc2VkID4gY0xheW91dFNjaGVkdWxlVGhyZXNo
b2xkOwogICAgIAogICAgIC8vIFdlJ2xsIHdhbnQgdG8gc2NoZWR1bGUgdGhlIHRpbWVyIHRvIGZp
cmUgYXQgdGhlIG1pbmltdW0gbGF5b3V0IHRocmVzaG9sZC4KLSAgICByZXR1cm4gbWF4KDAsIGNM
YXlvdXRTY2hlZHVsZVRocmVzaG9sZCAtIGVsYXBzZWQpOworICAgIHJldHVybiBzdGQ6Om1heCgw
LCBjTGF5b3V0U2NoZWR1bGVUaHJlc2hvbGQgLSBlbGFwc2VkKTsKIH0KIAogaW50IERvY3VtZW50
OjplbGFwc2VkVGltZSgpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9k
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5jcHAKaW5kZXggNTBjODIzNzI1MmVlNzFm
YjU3N2FjNTJhNjk3YWJhYTY0YTYyMGE4Ny4uNmUzMzhkYTA2OTFiYTliODI2ZWY0ODFmYTE4Yjli
YTU5Nzc0Y2I0YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcApAQCAtMTIyLDggKzEyMiw2IEBACiAjaW5jbHVk
ZSAiSW5zcGVjdG9yQ29udHJvbGxlci5oIgogI2VuZGlmCiAKLXVzaW5nIG5hbWVzcGFjZSBzdGQ7
Ci0KIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogdXNpbmcgbmFtZXNwYWNlIEhUTUxOYW1lczsKQEAg
LTE1MDgsNyArMTUwNiw3IEBAIHVuc2lnbmVkIHNob3J0IE5vZGU6OmNvbXBhcmVEb2N1bWVudFBv
c2l0aW9uKE5vZGUqIG90aGVyTm9kZSkKICAgICAgICAgcmV0dXJuIGNvbXBhcmVEZXRhY2hlZEVs
ZW1lbnRzUG9zaXRpb24odGhpcywgb3RoZXJOb2RlKTsKIAogICAgIC8vIFdhbGsgdGhlIHR3byBj
aGFpbnMgYmFja3dhcmRzIGFuZCBsb29rIGZvciB0aGUgZmlyc3QgZGlmZmVyZW5jZS4KLSAgICBm
b3IgKHVuc2lnbmVkIGkgPSBtaW4oaW5kZXgxLCBpbmRleDIpOyBpOyAtLWkpIHsKKyAgICBmb3Ig
KHVuc2lnbmVkIGkgPSBzdGQ6Om1pbihpbmRleDEsIGluZGV4Mik7IGk7IC0taSkgewogICAgICAg
ICBOb2RlKiBjaGlsZDEgPSBjaGFpbjFbLS1pbmRleDFdOwogICAgICAgICBOb2RlKiBjaGlsZDIg
PSBjaGFpbjJbLS1pbmRleDJdOwogICAgICAgICBpZiAoY2hpbGQxICE9IGNoaWxkMikgewpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1JhbmdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9SYW5nZS5jcHAKaW5kZXggNmFlZjdlYWVlYzY4YTIxNzlkNTk0NjY5ZTczYzE4OWM4YzRiNzBh
Zi4uN2FiYTE3NWFjYzFkN2MwMmFmYjFhYjVhMGE3ZTMzMzhhMmRkMmY2ZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvZG9tL1JhbmdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vUmFu
Z2UuY3BwCkBAIC01Nyw3ICs1Nyw2IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotdXNpbmcg
bmFtZXNwYWNlIHN0ZDsKIHVzaW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7CiAKIERFRklORV9ERUJV
R19PTkxZX0dMT0JBTChXVEY6OlJlZkNvdW50ZWRMZWFrQ291bnRlciwgcmFuZ2VDb3VudGVyLCAo
IlJhbmdlIikpOwpAQCAtMTA3Miw4ICsxMDcxLDggQEAgU3RyaW5nIFJhbmdlOjp0b1N0cmluZyhF
eGNlcHRpb25Db2RlJiBlYykgY29uc3QKICAgICAgICAgaWYgKG4tPm5vZGVUeXBlKCkgPT0gTm9k
ZTo6VEVYVF9OT0RFIHx8IG4tPm5vZGVUeXBlKCkgPT0gTm9kZTo6Q0RBVEFfU0VDVElPTl9OT0RF
KSB7CiAgICAgICAgICAgICBjb25zdCBTdHJpbmcmIGRhdGEgPSBzdGF0aWNfY2FzdDxDaGFyYWN0
ZXJEYXRhKj4obiktPmRhdGEoKTsKICAgICAgICAgICAgIGludCBsZW5ndGggPSBkYXRhLmxlbmd0
aCgpOwotICAgICAgICAgICAgaW50IHN0YXJ0ID0gKG4gPT0gbV9zdGFydC5jb250YWluZXIoKSkg
PyBtaW4obWF4KDAsIG1fc3RhcnQub2Zmc2V0KCkpLCBsZW5ndGgpIDogMDsKLSAgICAgICAgICAg
IGludCBlbmQgPSAobiA9PSBtX2VuZC5jb250YWluZXIoKSkgPyBtaW4obWF4KHN0YXJ0LCBtX2Vu
ZC5vZmZzZXQoKSksIGxlbmd0aCkgOiBsZW5ndGg7CisgICAgICAgICAgICBpbnQgc3RhcnQgPSAo
biA9PSBtX3N0YXJ0LmNvbnRhaW5lcigpKSA/IHN0ZDo6bWluKHN0ZDo6bWF4KDAsIG1fc3RhcnQu
b2Zmc2V0KCkpLCBsZW5ndGgpIDogMDsKKyAgICAgICAgICAgIGludCBlbmQgPSAobiA9PSBtX2Vu
ZC5jb250YWluZXIoKSkgPyBzdGQ6Om1pbihzdGQ6Om1heChzdGFydCwgbV9lbmQub2Zmc2V0KCkp
LCBsZW5ndGgpIDogbGVuZ3RoOwogICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoZGF0YSwgc3Rh
cnQsIGVuZCAtIHN0YXJ0KTsKICAgICAgICAgfQogICAgIH0KQEAgLTE2MTQsNyArMTYxMyw3IEBA
IHZvaWQgUmFuZ2U6OnRleHRSZWN0cyhWZWN0b3I8SW50UmVjdD4mIHJlY3RzLCBib29sIHVzZVNl
bGVjdGlvbkhlaWdodCwgUmFuZ2VJbkZpCiAgICAgICAgICAgICByLT5hYnNvbHV0ZVJlY3RzKHJl
Y3RzLCBmbG9vcmVkTGF5b3V0UG9pbnQoci0+bG9jYWxUb0Fic29sdXRlKCkpKTsKICAgICAgICAg
ZWxzZSBpZiAoci0+aXNUZXh0KCkpIHsKICAgICAgICAgICAgIGludCBzdGFydE9mZnNldCA9IG5v
ZGUgPT0gc3RhcnRDb250YWluZXIgPyBtX3N0YXJ0Lm9mZnNldCgpIDogMDsKLSAgICAgICAgICAg
IGludCBlbmRPZmZzZXQgPSBub2RlID09IGVuZENvbnRhaW5lciA/IG1fZW5kLm9mZnNldCgpIDog
bnVtZXJpY19saW1pdHM8aW50Pjo6bWF4KCk7CisgICAgICAgICAgICBpbnQgZW5kT2Zmc2V0ID0g
bm9kZSA9PSBlbmRDb250YWluZXIgPyBtX2VuZC5vZmZzZXQoKSA6IHN0ZDo6bnVtZXJpY19saW1p
dHM8aW50Pjo6bWF4KCk7CiAgICAgICAgICAgICByZWN0cy5hcHBlbmRWZWN0b3IodG9SZW5kZXJU
ZXh0KHIpLT5hYnNvbHV0ZVJlY3RzRm9yUmFuZ2Uoc3RhcnRPZmZzZXQsIGVuZE9mZnNldCwgdXNl
U2VsZWN0aW9uSGVpZ2h0LCAmaXNGaXhlZCkpOwogICAgICAgICB9IGVsc2UKICAgICAgICAgICAg
IGNvbnRpbnVlOwpAQCAtMTY1MCw3ICsxNjQ5LDcgQEAgdm9pZCBSYW5nZTo6dGV4dFF1YWRzKFZl
Y3RvcjxGbG9hdFF1YWQ+JiBxdWFkcywgYm9vbCB1c2VTZWxlY3Rpb25IZWlnaHQsIFJhbmdlSW4K
ICAgICAgICAgICAgIHItPmFic29sdXRlUXVhZHMocXVhZHMsICZpc0ZpeGVkKTsKICAgICAgICAg
ZWxzZSBpZiAoci0+aXNUZXh0KCkpIHsKICAgICAgICAgICAgIGludCBzdGFydE9mZnNldCA9IG5v
ZGUgPT0gc3RhcnRDb250YWluZXIgPyBtX3N0YXJ0Lm9mZnNldCgpIDogMDsKLSAgICAgICAgICAg
IGludCBlbmRPZmZzZXQgPSBub2RlID09IGVuZENvbnRhaW5lciA/IG1fZW5kLm9mZnNldCgpIDog
bnVtZXJpY19saW1pdHM8aW50Pjo6bWF4KCk7CisgICAgICAgICAgICBpbnQgZW5kT2Zmc2V0ID0g
bm9kZSA9PSBlbmRDb250YWluZXIgPyBtX2VuZC5vZmZzZXQoKSA6IHN0ZDo6bnVtZXJpY19saW1p
dHM8aW50Pjo6bWF4KCk7CiAgICAgICAgICAgICBxdWFkcy5hcHBlbmRWZWN0b3IodG9SZW5kZXJU
ZXh0KHIpLT5hYnNvbHV0ZVF1YWRzRm9yUmFuZ2Uoc3RhcnRPZmZzZXQsIGVuZE9mZnNldCwgdXNl
U2VsZWN0aW9uSGVpZ2h0LCAmaXNGaXhlZCkpOwogICAgICAgICB9IGVsc2UKICAgICAgICAgICAg
IGNvbnRpbnVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdGVkQW5pbWF0
aW9uQ29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0ZWRBbmltYXRpb25D
b250cm9sbGVyLmNwcAppbmRleCAzNGM4MWQwNzgwOTc1NGRjNDMxNzExNTM3N2U3ODlkOTI1MzIz
ZmM3Li42NWI5NWNiZTMzYzAzMTk5MTdiMzUyMjc4ODI1YTIwYmUxNWM0OTc2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0ZWRBbmltYXRpb25Db250cm9sbGVyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0ZWRBbmltYXRpb25Db250cm9sbGVyLmNwcApAQCAt
NDAsOCArNDAsNiBAQAogI2luY2x1ZGUgPGFsZ29yaXRobT4KICNpbmNsdWRlIDx3dGYvQ3VycmVu
dFRpbWUuaD4KIAotdXNpbmcgbmFtZXNwYWNlIHN0ZDsKLQogLy8gQWxsb3cgYSBsaXR0bGUgbW9y
ZSB0aGFuIDYwZnBzIHRvIG1ha2Ugc3VyZSB3ZSBjYW4gYXQgbGVhc3QgaGl0IHRoYXQgZnJhbWUg
cmF0ZS4KICNkZWZpbmUgTWluaW11bUFuaW1hdGlvbkludGVydmFsIDAuMDE1CiAjZGVmaW5lIE1p
bmltdW1UaHJvdHRsZWRBbmltYXRpb25JbnRlcnZhbCAxMApAQCAtMjAyLDcgKzIwMCw3IEBAIHZv
aWQgU2NyaXB0ZWRBbmltYXRpb25Db250cm9sbGVyOjpzY2hlZHVsZUFuaW1hdGlvbigpCiAgICAg
ICAgIGFuaW1hdGlvbkludGVydmFsID0gTWluaW11bVRocm90dGxlZEFuaW1hdGlvbkludGVydmFs
OwogI2VuZGlmCiAKLSAgICBkb3VibGUgc2NoZWR1bGVEZWxheSA9IG1heDxkb3VibGU+KGFuaW1h
dGlvbkludGVydmFsIC0gKG1vbm90b25pY2FsbHlJbmNyZWFzaW5nVGltZSgpIC0gbV9sYXN0QW5p
bWF0aW9uRnJhbWVUaW1lTW9ub3RvbmljKSwgMCk7CisgICAgZG91YmxlIHNjaGVkdWxlRGVsYXkg
PSBzdGQ6Om1heDxkb3VibGU+KGFuaW1hdGlvbkludGVydmFsIC0gKG1vbm90b25pY2FsbHlJbmNy
ZWFzaW5nVGltZSgpIC0gbV9sYXN0QW5pbWF0aW9uRnJhbWVUaW1lTW9ub3RvbmljKSwgMCk7CiAg
ICAgbV9hbmltYXRpb25UaW1lci5zdGFydE9uZVNob3Qoc2NoZWR1bGVEZWxheSk7CiAjZWxzZQog
ICAgIGlmIChGcmFtZVZpZXcqIGZyYW1lVmlldyA9IG1fZG9jdW1lbnQtPnZpZXcoKSkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TdHlsZWRFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9TdHlsZWRFbGVtZW50LmNwcAppbmRleCBjNWQ1MzdhMGI3YjNiMjA0YmQyODkwYzI1
NWEyMmY1ZGVjNzY1YjA0Li4zODY4YWQyZDcwZTAwNTc3ZTNhNmQ4NTVkNjllNDNmNDE2ODU1NTkw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vU3R5bGVkRWxlbWVudC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvZG9tL1N0eWxlZEVsZW1lbnQuY3BwCkBAIC00NSw4ICs0NSw2IEBACiAj
aW5jbHVkZSA8d3RmL0hhc2hGdW5jdGlvbnMuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9UZXh0UG9z
aXRpb24uaD4KIAotdXNpbmcgbmFtZXNwYWNlIHN0ZDsKLQogbmFtZXNwYWNlIFdlYkNvcmUgewog
CiBDT01QSUxFX0FTU0VSVChzaXplb2YoU3R5bGVkRWxlbWVudCkgPT0gc2l6ZW9mKEVsZW1lbnQp
LCBzdHlsZWRlbGVtZW50X3Nob3VsZF9yZW1haW5fc2FtZV9zaXplX2FzX2VsZW1lbnQpOwpAQCAt
MzA0LDcgKzMwMiw3IEBAIHZvaWQgU3R5bGVkRWxlbWVudDo6bWFrZVByZXNlbnRhdGlvbkF0dHJp
YnV0ZUNhY2hlS2V5KFByZXNlbnRhdGlvbkF0dHJpYnV0ZUNhY2hlCiAgICAgICAgIC8vIEZJWE1F
OiBCYWNrZ3JvdW5kIFVSTCBtYXkgZGVwZW5kIG9uIHRoZSBiYXNlIFVSTCBhbmQgY2FuJ3QgYmUg
c2hhcmVkLiBEaXNhbGxvdyBjYWNoaW5nLgogICAgICAgICBpZiAoYXR0cmlidXRlLm5hbWUoKSA9
PSBiYWNrZ3JvdW5kQXR0cikKICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgcmVzdWx0LmF0
dHJpYnV0ZXNBbmRWYWx1ZXMuYXBwZW5kKG1ha2VfcGFpcihhdHRyaWJ1dGUubG9jYWxOYW1lKCku
aW1wbCgpLCBhdHRyaWJ1dGUudmFsdWUoKSkpOworICAgICAgICByZXN1bHQuYXR0cmlidXRlc0Fu
ZFZhbHVlcy5hcHBlbmQoc3RkOjptYWtlX3BhaXIoYXR0cmlidXRlLmxvY2FsTmFtZSgpLmltcGwo
KSwgYXR0cmlidXRlLnZhbHVlKCkpKTsKICAgICB9CiAgICAgaWYgKHJlc3VsdC5hdHRyaWJ1dGVz
QW5kVmFsdWVzLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvZG9tL1RleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL1RleHQuY3BwCmluZGV4
IDEyYWE0OGU3Mjg3ZTRmMDIyZWNkMWVhZTdjZjM1MTUzNjFmM2UxMDcuLjIyYTVkYzU4OGUxMDQ3
ODY2YTBjMDNiNDM5MDNmNjMwYjgzNGM4MTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9UZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vVGV4dC5jcHAKQEAgLTQxLDggKzQx
LDYgQEAKICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQv
U3RyaW5nQnVpbGRlci5oPgogCi11c2luZyBuYW1lc3BhY2Ugc3RkOwotCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKIFBhc3NSZWZQdHI8VGV4dD4gVGV4dDo6Y3JlYXRlKERvY3VtZW50JiBkb2N1bWVu
dCwgY29uc3QgU3RyaW5nJiBkYXRhKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1Zp
ZXdwb3J0QXJndW1lbnRzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9WaWV3cG9ydEFyZ3VtZW50
cy5jcHAKaW5kZXggNTkxYTFlODQyY2UxNWRmYjBlYmRlZjcyMGVmNTIyZGRhYmFjMTEyYi4uODY2
MDAwNDIwNmRmMGYyOWJjNmZiYjM4YjRiYTIxMzJhZDVjNDE2OSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvZG9tL1ZpZXdwb3J0QXJndW1lbnRzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9k
b20vVmlld3BvcnRBcmd1bWVudHMuY3BwCkBAIC0zOCw4ICszOCw2IEBACiAjaW5jbHVkZSAiU2Ny
aXB0YWJsZURvY3VtZW50UGFyc2VyLmgiCiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+
CiAKLXVzaW5nIG5hbWVzcGFjZSBzdGQ7Ci0KIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogI2lmIFBM
QVRGT1JNKEJMQUNLQkVSUlkpIHx8IFBMQVRGT1JNKEdUSykKQEAgLTY2LDcgKzY0LDcgQEAgc3Rh
dGljIGlubGluZSBmbG9hdCBjbGFtcExlbmd0aFZhbHVlKGZsb2F0IHZhbHVlKQogCiAgICAgLy8g
TGltaXRzIGFzIGRlZmluZWQgaW4gdGhlIGNzcy1kZXZpY2UtYWRhcHQgc3BlYy4KICAgICBpZiAo
dmFsdWUgIT0gVmlld3BvcnRBcmd1bWVudHM6OlZhbHVlQXV0bykKLSAgICAgICAgcmV0dXJuIG1p
bihmbG9hdCgxMDAwMCksIG1heCh2YWx1ZSwgZmxvYXQoMSkpKTsKKyAgICAgICAgcmV0dXJuIHN0
ZDo6bWluPGZsb2F0PigxMDAwMCwgc3RkOjptYXg8ZmxvYXQ+KHZhbHVlLCAxKSk7CiAgICAgcmV0
dXJuIHZhbHVlOwogfQogCkBAIC03Nyw3ICs3NSw3IEBAIHN0YXRpYyBpbmxpbmUgZmxvYXQgY2xh
bXBTY2FsZVZhbHVlKGZsb2F0IHZhbHVlKQogCiAgICAgLy8gTGltaXRzIGFzIGRlZmluZWQgaW4g
dGhlIGNzcy1kZXZpY2UtYWRhcHQgc3BlYy4KICAgICBpZiAodmFsdWUgIT0gVmlld3BvcnRBcmd1
bWVudHM6OlZhbHVlQXV0bykKLSAgICAgICAgcmV0dXJuIG1pbihmbG9hdCgxMCksIG1heCh2YWx1
ZSwgZmxvYXQoMC4xKSkpOworICAgICAgICByZXR1cm4gc3RkOjptaW48ZmxvYXQ+KDEwLCBzdGQ6
Om1heDxmbG9hdD4odmFsdWUsIDAuMSkpOwogICAgIHJldHVybiB2YWx1ZTsKIH0KIApAQCAtMTUw
LDE2ICsxNDgsMTYgQEAgVmlld3BvcnRBdHRyaWJ1dGVzIFZpZXdwb3J0QXJndW1lbnRzOjpyZXNv
bHZlKGNvbnN0IEZsb2F0U2l6ZSYgaW5pdGlhbFZpZXdwb3J0U2kKICAgICAgICAgfQogCiAgICAg
ICAgIGlmIChyZXN1bHRNaW5XaWR0aCAhPSBWaWV3cG9ydEFyZ3VtZW50czo6VmFsdWVBdXRvIHx8
IHJlc3VsdE1heFdpZHRoICE9IFZpZXdwb3J0QXJndW1lbnRzOjpWYWx1ZUF1dG8pCi0gICAgICAg
ICAgICByZXN1bHRXaWR0aCA9IGNvbXBhcmVJZ25vcmluZ0F1dG8ocmVzdWx0TWluV2lkdGgsIGNv
bXBhcmVJZ25vcmluZ0F1dG8ocmVzdWx0TWF4V2lkdGgsIGRldmljZVNpemUud2lkdGgoKSwgbWlu
KSwgbWF4KTsKKyAgICAgICAgICAgIHJlc3VsdFdpZHRoID0gY29tcGFyZUlnbm9yaW5nQXV0byhy
ZXN1bHRNaW5XaWR0aCwgY29tcGFyZUlnbm9yaW5nQXV0byhyZXN1bHRNYXhXaWR0aCwgZGV2aWNl
U2l6ZS53aWR0aCgpLCBzdGQ6Om1pbiksIHN0ZDo6bWF4KTsKIAogICAgICAgICBpZiAocmVzdWx0
TWluSGVpZ2h0ICE9IFZpZXdwb3J0QXJndW1lbnRzOjpWYWx1ZUF1dG8gfHwgcmVzdWx0TWF4SGVp
Z2h0ICE9IFZpZXdwb3J0QXJndW1lbnRzOjpWYWx1ZUF1dG8pCi0gICAgICAgICAgICByZXN1bHRI
ZWlnaHQgPSBjb21wYXJlSWdub3JpbmdBdXRvKHJlc3VsdE1pbkhlaWdodCwgY29tcGFyZUlnbm9y
aW5nQXV0byhyZXN1bHRNYXhIZWlnaHQsIGRldmljZVNpemUuaGVpZ2h0KCksIG1pbiksIG1heCk7
CisgICAgICAgICAgICByZXN1bHRIZWlnaHQgPSBjb21wYXJlSWdub3JpbmdBdXRvKHJlc3VsdE1p
bkhlaWdodCwgY29tcGFyZUlnbm9yaW5nQXV0byhyZXN1bHRNYXhIZWlnaHQsIGRldmljZVNpemUu
aGVpZ2h0KCksIHN0ZDo6bWluKSwgc3RkOjptYXgpOwogCiAgICAgICAgIGlmIChyZXN1bHRNaW5a
b29tICE9IFZpZXdwb3J0QXJndW1lbnRzOjpWYWx1ZUF1dG8gJiYgcmVzdWx0TWF4Wm9vbSAhPSBW
aWV3cG9ydEFyZ3VtZW50czo6VmFsdWVBdXRvKQotICAgICAgICAgICAgcmVzdWx0TWF4Wm9vbSA9
IG1heChyZXN1bHRNaW5ab29tLCByZXN1bHRNYXhab29tKTsKKyAgICAgICAgICAgIHJlc3VsdE1h
eFpvb20gPSBzdGQ6Om1heChyZXN1bHRNaW5ab29tLCByZXN1bHRNYXhab29tKTsKIAogICAgICAg
ICBpZiAocmVzdWx0Wm9vbSAhPSBWaWV3cG9ydEFyZ3VtZW50czo6VmFsdWVBdXRvKQotICAgICAg
ICAgICAgcmVzdWx0Wm9vbSA9IGNvbXBhcmVJZ25vcmluZ0F1dG8ocmVzdWx0TWluWm9vbSwgY29t
cGFyZUlnbm9yaW5nQXV0byhyZXN1bHRNYXhab29tLCByZXN1bHRab29tLCBtaW4pLCBtYXgpOwor
ICAgICAgICAgICAgcmVzdWx0Wm9vbSA9IGNvbXBhcmVJZ25vcmluZ0F1dG8ocmVzdWx0TWluWm9v
bSwgY29tcGFyZUlnbm9yaW5nQXV0byhyZXN1bHRNYXhab29tLCByZXN1bHRab29tLCBzdGQ6Om1p
biksIHN0ZDo6bWF4KTsKIAogICAgICAgICBpZiAocmVzdWx0V2lkdGggPT0gVmlld3BvcnRBcmd1
bWVudHM6OlZhbHVlQXV0byAmJiByZXN1bHRab29tID09IFZpZXdwb3J0QXJndW1lbnRzOjpWYWx1
ZUF1dG8pCiAgICAgICAgICAgICByZXN1bHRXaWR0aCA9IGRldmljZVNpemUud2lkdGgoKTsKQEAg
LTE3NCwxMiArMTcyLDEyIEBAIFZpZXdwb3J0QXR0cmlidXRlcyBWaWV3cG9ydEFyZ3VtZW50czo6
cmVzb2x2ZShjb25zdCBGbG9hdFNpemUmIGluaXRpYWxWaWV3cG9ydFNpCiAgICAgICAgICAgICBy
ZXN1bHRIZWlnaHQgPSByZXN1bHRXaWR0aCAqIGRldmljZVNpemUuaGVpZ2h0KCkgLyBkZXZpY2VT
aXplLndpZHRoKCk7CiAKICAgICAgICAgaWYgKHJlc3VsdFpvb20gIT0gVmlld3BvcnRBcmd1bWVu
dHM6OlZhbHVlQXV0byB8fCByZXN1bHRNYXhab29tICE9IFZpZXdwb3J0QXJndW1lbnRzOjpWYWx1
ZUF1dG8pIHsKLSAgICAgICAgICAgIHJlc3VsdFdpZHRoID0gY29tcGFyZUlnbm9yaW5nQXV0byhy
ZXN1bHRXaWR0aCwgZGV2aWNlU2l6ZS53aWR0aCgpIC8gY29tcGFyZUlnbm9yaW5nQXV0byhyZXN1
bHRab29tLCByZXN1bHRNYXhab29tLCBtaW4pLCBtYXgpOwotICAgICAgICAgICAgcmVzdWx0SGVp
Z2h0ID0gY29tcGFyZUlnbm9yaW5nQXV0byhyZXN1bHRIZWlnaHQsIGRldmljZVNpemUuaGVpZ2h0
KCkgLyBjb21wYXJlSWdub3JpbmdBdXRvKHJlc3VsdFpvb20sIHJlc3VsdE1heFpvb20sIG1pbiks
IG1heCk7CisgICAgICAgICAgICByZXN1bHRXaWR0aCA9IGNvbXBhcmVJZ25vcmluZ0F1dG8ocmVz
dWx0V2lkdGgsIGRldmljZVNpemUud2lkdGgoKSAvIGNvbXBhcmVJZ25vcmluZ0F1dG8ocmVzdWx0
Wm9vbSwgcmVzdWx0TWF4Wm9vbSwgc3RkOjptaW4pLCBzdGQ6Om1heCk7CisgICAgICAgICAgICBy
ZXN1bHRIZWlnaHQgPSBjb21wYXJlSWdub3JpbmdBdXRvKHJlc3VsdEhlaWdodCwgZGV2aWNlU2l6
ZS5oZWlnaHQoKSAvIGNvbXBhcmVJZ25vcmluZ0F1dG8ocmVzdWx0Wm9vbSwgcmVzdWx0TWF4Wm9v
bSwgc3RkOjptaW4pLCBzdGQ6Om1heCk7CiAgICAgICAgIH0KIAotICAgICAgICByZXN1bHRXaWR0
aCA9IG1heDxmbG9hdD4oMSwgcmVzdWx0V2lkdGgpOwotICAgICAgICByZXN1bHRIZWlnaHQgPSBt
YXg8ZmxvYXQ+KDEsIHJlc3VsdEhlaWdodCk7CisgICAgICAgIHJlc3VsdFdpZHRoID0gc3RkOjpt
YXg8ZmxvYXQ+KDEsIHJlc3VsdFdpZHRoKTsKKyAgICAgICAgcmVzdWx0SGVpZ2h0ID0gc3RkOjpt
YXg8ZmxvYXQ+KDEsIHJlc3VsdEhlaWdodCk7CiAgICAgfQogCiAgICAgaWYgKHR5cGUgIT0gVmll
d3BvcnRBcmd1bWVudHM6OkNTU0RldmljZUFkYXB0YXRpb24gJiYgdHlwZSAhPSBWaWV3cG9ydEFy
Z3VtZW50czo6SW1wbGljaXQpIHsKQEAgLTIwMSwxMSArMTk5LDExIEBAIFZpZXdwb3J0QXR0cmli
dXRlcyBWaWV3cG9ydEFyZ3VtZW50czo6cmVzb2x2ZShjb25zdCBGbG9hdFNpemUmIGluaXRpYWxW
aWV3cG9ydFNpCiAgICAgICAgIHJlc3VsdC5taW5pbXVtU2NhbGUgPSByZXN1bHRNaW5ab29tOwog
CiAgICAgaWYgKHJlc3VsdE1heFpvb20gPT0gVmlld3BvcnRBcmd1bWVudHM6OlZhbHVlQXV0bykg
ewotICAgICAgICByZXN1bHQubWF4aW11bVNjYWxlID0gZmxvYXQoNS4wKTsKLSAgICAgICAgcmVz
dWx0Lm1pbmltdW1TY2FsZSA9IG1pbihmbG9hdCg1LjApLCByZXN1bHQubWluaW11bVNjYWxlKTsK
KyAgICAgICAgcmVzdWx0Lm1heGltdW1TY2FsZSA9IDU7CisgICAgICAgIHJlc3VsdC5taW5pbXVt
U2NhbGUgPSBzdGQ6Om1pbjxmbG9hdD4oNSwgcmVzdWx0Lm1pbmltdW1TY2FsZSk7CiAgICAgfSBl
bHNlCiAgICAgICAgIHJlc3VsdC5tYXhpbXVtU2NhbGUgPSByZXN1bHRNYXhab29tOwotICAgIHJl
c3VsdC5tYXhpbXVtU2NhbGUgPSBtYXgocmVzdWx0Lm1pbmltdW1TY2FsZSwgcmVzdWx0Lm1heGlt
dW1TY2FsZSk7CisgICAgcmVzdWx0Lm1heGltdW1TY2FsZSA9IHN0ZDo6bWF4KHJlc3VsdC5taW5p
bXVtU2NhbGUsIHJlc3VsdC5tYXhpbXVtU2NhbGUpOwogCiAgICAgLy8gUmVzb2x2ZSBpbml0aWFs
LXNjYWxlIHZhbHVlLgogICAgIHJlc3VsdC5pbml0aWFsU2NhbGUgPSByZXN1bHRab29tOwpAQCAt
MjE1LDEyICsyMTMsMTIgQEAgVmlld3BvcnRBdHRyaWJ1dGVzIFZpZXdwb3J0QXJndW1lbnRzOjpy
ZXNvbHZlKGNvbnN0IEZsb2F0U2l6ZSYgaW5pdGlhbFZpZXdwb3J0U2kKICAgICAgICAgICAgIHJl
c3VsdC5pbml0aWFsU2NhbGUgPSBpbml0aWFsVmlld3BvcnRTaXplLndpZHRoKCkgLyByZXN1bHRX
aWR0aDsKICAgICAgICAgaWYgKHJlc3VsdEhlaWdodCAhPSBWaWV3cG9ydEFyZ3VtZW50czo6VmFs
dWVBdXRvKSB7CiAgICAgICAgICAgICAvLyBpZiAnYXV0bycsIHRoZSBpbml0aWFsLXNjYWxlIHdp
bGwgYmUgbmVnYXRpdmUgaGVyZSBhbmQgdGh1cyBpZ25vcmVkLgotICAgICAgICAgICAgcmVzdWx0
LmluaXRpYWxTY2FsZSA9IG1heDxmbG9hdD4ocmVzdWx0LmluaXRpYWxTY2FsZSwgaW5pdGlhbFZp
ZXdwb3J0U2l6ZS5oZWlnaHQoKSAvIHJlc3VsdEhlaWdodCk7CisgICAgICAgICAgICByZXN1bHQu
aW5pdGlhbFNjYWxlID0gc3RkOjptYXg8ZmxvYXQ+KHJlc3VsdC5pbml0aWFsU2NhbGUsIGluaXRp
YWxWaWV3cG9ydFNpemUuaGVpZ2h0KCkgLyByZXN1bHRIZWlnaHQpOwogICAgICAgICB9CiAgICAg
fQogCiAgICAgLy8gQ29uc3RyYWluIGluaXRpYWwtc2NhbGUgdmFsdWUgdG8gbWluaW11bS1zY2Fs
ZS9tYXhpbXVtLXNjYWxlIHJhbmdlLgotICAgIHJlc3VsdC5pbml0aWFsU2NhbGUgPSBtaW4ocmVz
dWx0Lm1heGltdW1TY2FsZSwgbWF4KHJlc3VsdC5taW5pbXVtU2NhbGUsIHJlc3VsdC5pbml0aWFs
U2NhbGUpKTsKKyAgICByZXN1bHQuaW5pdGlhbFNjYWxlID0gc3RkOjptaW4ocmVzdWx0Lm1heGlt
dW1TY2FsZSwgc3RkOjptYXgocmVzdWx0Lm1pbmltdW1TY2FsZSwgcmVzdWx0LmluaXRpYWxTY2Fs
ZSkpOwogCiAgICAgLy8gUmVzb2x2ZSB3aWR0aCB2YWx1ZS4KICAgICBpZiAocmVzdWx0V2lkdGgg
PT0gVmlld3BvcnRBcmd1bWVudHM6OlZhbHVlQXV0bykgewpAQCAtMjM4LDggKzIzNiw4IEBAIFZp
ZXdwb3J0QXR0cmlidXRlcyBWaWV3cG9ydEFyZ3VtZW50czo6cmVzb2x2ZShjb25zdCBGbG9hdFNp
emUmIGluaXRpYWxWaWV3cG9ydFNpCiAKICAgICBpZiAodHlwZSA9PSBWaWV3cG9ydEFyZ3VtZW50
czo6Vmlld3BvcnRNZXRhKSB7CiAgICAgICAgIC8vIEV4dGVuZCB3aWR0aCBhbmQgaGVpZ2h0IHRv
IGZpbGwgdGhlIHZpc3VhbCB2aWV3cG9ydCBmb3IgdGhlIHJlc29sdmVkIGluaXRpYWwtc2NhbGUu
Ci0gICAgICAgIHJlc3VsdFdpZHRoID0gbWF4PGZsb2F0PihyZXN1bHRXaWR0aCwgaW5pdGlhbFZp
ZXdwb3J0U2l6ZS53aWR0aCgpIC8gcmVzdWx0LmluaXRpYWxTY2FsZSk7Ci0gICAgICAgIHJlc3Vs
dEhlaWdodCA9IG1heDxmbG9hdD4ocmVzdWx0SGVpZ2h0LCBpbml0aWFsVmlld3BvcnRTaXplLmhl
aWdodCgpIC8gcmVzdWx0LmluaXRpYWxTY2FsZSk7CisgICAgICAgIHJlc3VsdFdpZHRoID0gc3Rk
OjptYXg8ZmxvYXQ+KHJlc3VsdFdpZHRoLCBpbml0aWFsVmlld3BvcnRTaXplLndpZHRoKCkgLyBy
ZXN1bHQuaW5pdGlhbFNjYWxlKTsKKyAgICAgICAgcmVzdWx0SGVpZ2h0ID0gc3RkOjptYXg8Zmxv
YXQ+KHJlc3VsdEhlaWdodCwgaW5pdGlhbFZpZXdwb3J0U2l6ZS5oZWlnaHQoKSAvIHJlc3VsdC5p
bml0aWFsU2NhbGUpOwogICAgIH0KIAogICAgIHJlc3VsdC5sYXlvdXRTaXplLnNldFdpZHRoKHJl
c3VsdFdpZHRoKTsKQEAgLTI3NSwxNCArMjczLDE0IEBAIFZpZXdwb3J0QXR0cmlidXRlcyBjb21w
dXRlVmlld3BvcnRBdHRyaWJ1dGVzKFZpZXdwb3J0QXJndW1lbnRzIGFyZ3MsIGludCBkZXNrdG9w
CiBmbG9hdCBjb21wdXRlTWluaW11bVNjYWxlRmFjdG9yRm9yQ29udGVudENvbnRhaW5lZChjb25z
dCBWaWV3cG9ydEF0dHJpYnV0ZXMmIHJlc3VsdCwgY29uc3QgSW50U2l6ZSYgdmlzaWJsZVZpZXdw
b3J0LCBjb25zdCBJbnRTaXplJiBjb250ZW50c1NpemUpCiB7CiAgICAgRmxvYXRTaXplIHZpZXdw
b3J0U2l6ZSh2aXNpYmxlVmlld3BvcnQpOwotICAgIHJldHVybiBtYXg8ZmxvYXQ+KHJlc3VsdC5t
aW5pbXVtU2NhbGUsIG1heCh2aWV3cG9ydFNpemUud2lkdGgoKSAvIGNvbnRlbnRzU2l6ZS53aWR0
aCgpLCB2aWV3cG9ydFNpemUuaGVpZ2h0KCkgLyBjb250ZW50c1NpemUuaGVpZ2h0KCkpKTsKKyAg
ICByZXR1cm4gc3RkOjptYXg8ZmxvYXQ+KHJlc3VsdC5taW5pbXVtU2NhbGUsIHN0ZDo6bWF4KHZp
ZXdwb3J0U2l6ZS53aWR0aCgpIC8gY29udGVudHNTaXplLndpZHRoKCksIHZpZXdwb3J0U2l6ZS5o
ZWlnaHQoKSAvIGNvbnRlbnRzU2l6ZS5oZWlnaHQoKSkpOwogfQogCiB2b2lkIHJlc3RyaWN0TWlu
aW11bVNjYWxlRmFjdG9yVG9WaWV3cG9ydFNpemUoVmlld3BvcnRBdHRyaWJ1dGVzJiByZXN1bHQs
IEludFNpemUgdmlzaWJsZVZpZXdwb3J0LCBmbG9hdCBkZXZpY2VQaXhlbFJhdGlvKQogewogICAg
IEZsb2F0U2l6ZSB2aWV3cG9ydFNpemUgPSBjb252ZXJ0VG9Vc2VyU3BhY2UodmlzaWJsZVZpZXdw
b3J0LCBkZXZpY2VQaXhlbFJhdGlvKTsKIAotICAgIHJlc3VsdC5taW5pbXVtU2NhbGUgPSBtYXg8
ZmxvYXQ+KHJlc3VsdC5taW5pbXVtU2NhbGUsIG1heCh2aWV3cG9ydFNpemUud2lkdGgoKSAvIHJl
c3VsdC5sYXlvdXRTaXplLndpZHRoKCksIHZpZXdwb3J0U2l6ZS5oZWlnaHQoKSAvIHJlc3VsdC5s
YXlvdXRTaXplLmhlaWdodCgpKSk7CisgICAgcmVzdWx0Lm1pbmltdW1TY2FsZSA9IHN0ZDo6bWF4
PGZsb2F0PihyZXN1bHQubWluaW11bVNjYWxlLCBzdGQ6Om1heCh2aWV3cG9ydFNpemUud2lkdGgo
KSAvIHJlc3VsdC5sYXlvdXRTaXplLndpZHRoKCksIHZpZXdwb3J0U2l6ZS5oZWlnaHQoKSAvIHJl
c3VsdC5sYXlvdXRTaXplLmhlaWdodCgpKSk7CiB9CiAKIHZvaWQgcmVzdHJpY3RTY2FsZUZhY3Rv
clRvSW5pdGlhbFNjYWxlSWZOb3RVc2VyU2NhbGFibGUoVmlld3BvcnRBdHRyaWJ1dGVzJiByZXN1
bHQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0FsdGVybmF0aXZlVGV4dENv
bnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9BbHRlcm5hdGl2ZVRleHRDb250
cm9sbGVyLmNwcAppbmRleCAyNjkyMjJhN2JjYTMyMzA3NDdhMjgyMzQ5ZDQ5ZjFkYjVlYzEwNDEz
Li4yMzAwMTdiOTc3N2NiM2I4NTY5ZTk5Yjk1YzhjNzExMGZhYTRkMmVjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL0FsdGVybmF0aXZlVGV4dENvbnRyb2xsZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvQWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxlci5jcHAKQEAg
LTUyLDkgKzUyLDYgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi11c2luZyBuYW1lc3BhY2Ug
c3RkOwotdXNpbmcgbmFtZXNwYWNlIFdURjsKLQogY2xhc3MgQXV0b2NvcnJlY3Rpb25BbHRlcm5h
dGl2ZURldGFpbHMgOiBwdWJsaWMgQWx0ZXJuYXRpdmVUZXh0RGV0YWlscyB7CiBwdWJsaWM6CiAg
ICAgc3RhdGljIFBhc3NSZWZQdHI8QXV0b2NvcnJlY3Rpb25BbHRlcm5hdGl2ZURldGFpbHM+IGNy
ZWF0ZShjb25zdCBTdHJpbmcmIHJlcGxhY2VtZW50U3RyaW5nKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvZWRpdGluZy9BcHBseVN0eWxlQ29tbWFuZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL0FwcGx5U3R5bGVDb21tYW5kLmNwcAppbmRleCBjOGEzNTU0MmIzODYwODA2MDA3MGNi
ZmMyNmNiNTUyM2MwM2M0NDAyLi5mNjE4YWRhZjFlMzcyNzE2YmQyZWEwOWI1OGQ1MzRmMjY1NzJh
OGZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0FwcGx5U3R5bGVDb21tYW5k
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0FwcGx5U3R5bGVDb21tYW5kLmNwcApA
QCAtNDAzLDcgKzQwMyw3IEBAIHZvaWQgQXBwbHlTdHlsZUNvbW1hbmQ6OmFwcGx5UmVsYXRpdmVG
b250U3R5bGVDaGFuZ2UoRWRpdGluZ1N0eWxlKiBzdHlsZSkKIAogICAgICAgICBSZWZQdHI8TXV0
YWJsZVN0eWxlUHJvcGVydHlTZXQ+IGlubGluZVN0eWxlID0gY29weVN0eWxlT3JDcmVhdGVFbXB0
eShlbGVtZW50LT5pbmxpbmVTdHlsZSgpKTsKICAgICAgICAgZmxvYXQgY3VycmVudEZvbnRTaXpl
ID0gY29tcHV0ZWRGb250U2l6ZShub2RlKTsKLSAgICAgICAgZmxvYXQgZGVzaXJlZEZvbnRTaXpl
ID0gbWF4KE1pbmltdW1Gb250U2l6ZSwgc3RhcnRpbmdGb250U2l6ZXMuZ2V0KG5vZGUpICsgc3R5
bGUtPmZvbnRTaXplRGVsdGEoKSk7CisgICAgICAgIGZsb2F0IGRlc2lyZWRGb250U2l6ZSA9IHN0
ZDo6bWF4KE1pbmltdW1Gb250U2l6ZSwgc3RhcnRpbmdGb250U2l6ZXMuZ2V0KG5vZGUpICsgc3R5
bGUtPmZvbnRTaXplRGVsdGEoKSk7CiAgICAgICAgIFJlZlB0cjxDU1NWYWx1ZT4gdmFsdWUgPSBp
bmxpbmVTdHlsZS0+Z2V0UHJvcGVydHlDU1NWYWx1ZShDU1NQcm9wZXJ0eUZvbnRTaXplKTsKICAg
ICAgICAgaWYgKHZhbHVlKSB7CiAgICAgICAgICAgICBlbGVtZW50LT5yZW1vdmVJbmxpbmVTdHls
ZVByb3BlcnR5KENTU1Byb3BlcnR5Rm9udFNpemUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvZWRpdGluZy9Db21wb3NpdGVFZGl0Q29tbWFuZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL0NvbXBvc2l0ZUVkaXRDb21tYW5kLmNwcAppbmRleCAyNmFiMjRkNzYwMjgxODMwZmZlNWQ1
OWMwYjQ3MDQyNDA4MGJjMDkyLi41MWNlOThiMTY5ZTJkYTZiMTUyMGMxODczZjRkMjAyYmU4MGQx
NzRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0NvbXBvc2l0ZUVkaXRDb21t
YW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0NvbXBvc2l0ZUVkaXRDb21tYW5k
LmNwcApAQCAtNzIsOCArNzIsNiBAQAogI2luY2x1ZGUgIkRlbGV0ZUJ1dHRvbkNvbnRyb2xsZXIu
aCIKICNlbmRpZgogCi11c2luZyBuYW1lc3BhY2Ugc3RkOwotCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKIHVzaW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7CkBAIC03NzYsOCArNzc0LDggQEAgdm9pZCBD
b21wb3NpdGVFZGl0Q29tbWFuZDo6ZGVsZXRlSW5zaWduaWZpY2FudFRleHQoUGFzc1JlZlB0cjxU
ZXh0PiB0ZXh0Tm9kZSwgdW4KICAgICAgICAgYm9vbCBpbmRpY2VzSW50ZXJzZWN0ID0gc3RhcnQg
PD0gZ2FwRW5kICYmIGVuZCA+PSBnYXBTdGFydDsKICAgICAgICAgaW50IGdhcExlbiA9IGdhcEVu
ZCAtIGdhcFN0YXJ0OwogICAgICAgICBpZiAoaW5kaWNlc0ludGVyc2VjdCAmJiBnYXBMZW4gPiAw
KSB7Ci0gICAgICAgICAgICBnYXBTdGFydCA9IG1heChnYXBTdGFydCwgc3RhcnQpOwotICAgICAg
ICAgICAgZ2FwRW5kID0gbWluKGdhcEVuZCwgZW5kKTsKKyAgICAgICAgICAgIGdhcFN0YXJ0ID0g
c3RkOjptYXgoZ2FwU3RhcnQsIHN0YXJ0KTsKKyAgICAgICAgICAgIGdhcEVuZCA9IHN0ZDo6bWlu
KGdhcEVuZCwgZW5kKTsKICAgICAgICAgICAgIGlmIChzdHIuaXNOdWxsKCkpCiAgICAgICAgICAg
ICAgICAgc3RyID0gdGV4dE5vZGUtPmRhdGEoKS5zdWJzdHJpbmcoc3RhcnQsIGVuZCAtIHN0YXJ0
KTsKICAgICAgICAgICAgIC8vIHJlbW92ZSB0ZXh0IGluIHRoZSBnYXAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
RWRpdG9yLmNwcAppbmRleCA3YjhhNWY3ZWU4NmIyNzkyMzZjZDE3YThlZmNmZjY1ZmQzMGQwYjg4
Li4xOWY1Y2IwOTFmMWViOGM4MGI3ZDA4MmQ4MjMzM2ExYjUzM2JiYWRiIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRp
dGluZy9FZGl0b3IuY3BwCkBAIC05Nyw3ICs5Nyw2IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAotdXNpbmcgbmFtZXNwYWNlIHN0ZDsKIHVzaW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7CiB1c2lu
ZyBuYW1lc3BhY2UgV1RGOwogdXNpbmcgbmFtZXNwYWNlIFVuaWNvZGU7CkBAIC0xNjM1LDggKzE2
MzQsOCBAQCB2b2lkIEVkaXRvcjo6c2V0Q29tcG9zaXRpb24oY29uc3QgU3RyaW5nJiB0ZXh0LCBj
b25zdCBWZWN0b3I8Q29tcG9zaXRpb25VbmRlcmxpbgogICAgICAgICAgICAgaWYgKGJhc2VOb2Rl
LT5yZW5kZXJlcigpKQogICAgICAgICAgICAgICAgIGJhc2VOb2RlLT5yZW5kZXJlcigpLT5yZXBh
aW50KCk7CiAKLSAgICAgICAgICAgIHVuc2lnbmVkIHN0YXJ0ID0gbWluKGJhc2VPZmZzZXQgKyBz
ZWxlY3Rpb25TdGFydCwgZXh0ZW50T2Zmc2V0KTsKLSAgICAgICAgICAgIHVuc2lnbmVkIGVuZCA9
IG1pbihtYXgoc3RhcnQsIGJhc2VPZmZzZXQgKyBzZWxlY3Rpb25FbmQpLCBleHRlbnRPZmZzZXQp
OworICAgICAgICAgICAgdW5zaWduZWQgc3RhcnQgPSBzdGQ6Om1pbihiYXNlT2Zmc2V0ICsgc2Vs
ZWN0aW9uU3RhcnQsIGV4dGVudE9mZnNldCk7CisgICAgICAgICAgICB1bnNpZ25lZCBlbmQgPSBz
dGQ6Om1pbihzdGQ6Om1heChzdGFydCwgYmFzZU9mZnNldCArIHNlbGVjdGlvbkVuZCksIGV4dGVu
dE9mZnNldCk7CiAgICAgICAgICAgICBSZWZQdHI8UmFuZ2U+IHNlbGVjdGVkUmFuZ2UgPSBSYW5n
ZTo6Y3JlYXRlKGJhc2VOb2RlLT5kb2N1bWVudCgpLCBiYXNlTm9kZSwgc3RhcnQsIGJhc2VOb2Rl
LCBlbmQpOwogICAgICAgICAgICAgbV9mcmFtZS5zZWxlY3Rpb24oKS5zZXRTZWxlY3RlZFJhbmdl
KHNlbGVjdGVkUmFuZ2UuZ2V0KCksIERPV05TVFJFQU0sIGZhbHNlKTsKICAgICAgICAgfQpAQCAt
MjU0Myw4ICsyNTQyLDggQEAgUGFzc1JlZlB0cjxSYW5nZT4gRWRpdG9yOjpjb21wb3NpdGlvblJh
bmdlKCkgY29uc3QKICAgICBpZiAoIW1fY29tcG9zaXRpb25Ob2RlKQogICAgICAgICByZXR1cm4g
MDsKICAgICB1bnNpZ25lZCBsZW5ndGggPSBtX2NvbXBvc2l0aW9uTm9kZS0+bGVuZ3RoKCk7Ci0g
ICAgdW5zaWduZWQgc3RhcnQgPSBtaW4obV9jb21wb3NpdGlvblN0YXJ0LCBsZW5ndGgpOwotICAg
IHVuc2lnbmVkIGVuZCA9IG1pbihtYXgoc3RhcnQsIG1fY29tcG9zaXRpb25FbmQpLCBsZW5ndGgp
OworICAgIHVuc2lnbmVkIHN0YXJ0ID0gc3RkOjptaW4obV9jb21wb3NpdGlvblN0YXJ0LCBsZW5n
dGgpOworICAgIHVuc2lnbmVkIGVuZCA9IHN0ZDo6bWluKHN0ZDo6bWF4KHN0YXJ0LCBtX2NvbXBv
c2l0aW9uRW5kKSwgbGVuZ3RoKTsKICAgICBpZiAoc3RhcnQgPj0gZW5kKQogICAgICAgICByZXR1
cm4gMDsKICAgICByZXR1cm4gUmFuZ2U6OmNyZWF0ZShtX2NvbXBvc2l0aW9uTm9kZS0+ZG9jdW1l
bnQoKSwgbV9jb21wb3NpdGlvbk5vZGUuZ2V0KCksIHN0YXJ0LCBtX2NvbXBvc2l0aW9uTm9kZS5n
ZXQoKSwgZW5kKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yQ29t
bWFuZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvckNvbW1hbmQuY3BwCmluZGV4
IDkzN2Q2N2E3NTEyMzZlYzBlN2U3OWM2YmQ4NzJmYjcwNGYyZDk4YjkuLjBhMTkyNzYwYWVhMDRk
MzEzOTYzYjllOGE0YWRiOGFmMjNlOGMyODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvRWRpdG9yQ29tbWFuZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0
b3JDb21tYW5kLmNwcApAQCAtMjYyLDcgKzI2Miw3IEBAIHN0YXRpYyB1bnNpZ25lZCB2ZXJ0aWNh
bFNjcm9sbERpc3RhbmNlKEZyYW1lJiBmcmFtZSkKICAgICBpZiAoIShzdHlsZS0+b3ZlcmZsb3dZ
KCkgPT0gT1NDUk9MTCB8fCBzdHlsZS0+b3ZlcmZsb3dZKCkgPT0gT0FVVE8gfHwgZm9jdXNlZEVs
ZW1lbnQtPnJlbmRlcmVySXNFZGl0YWJsZSgpKSkKICAgICAgICAgcmV0dXJuIDA7CiAgICAgaW50
IGhlaWdodCA9IHN0ZDo6bWluPGludD4odG9SZW5kZXJCb3gocmVuZGVyZXIpLT5jbGllbnRIZWln
aHQoKSwgZnJhbWUudmlldygpLT52aXNpYmxlSGVpZ2h0KCkpOwotICAgIHJldHVybiBzdGF0aWNf
Y2FzdDx1bnNpZ25lZD4obWF4KG1heDxpbnQ+KGhlaWdodCAqIFNjcm9sbGJhcjo6bWluRnJhY3Rp
b25Ub1N0ZXBXaGVuUGFnaW5nKCksIGhlaWdodCAtIFNjcm9sbGJhcjo6bWF4T3ZlcmxhcEJldHdl
ZW5QYWdlcygpKSwgMSkpOworICAgIHJldHVybiBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oc3RkOjpt
YXgoc3RkOjptYXg8aW50PihoZWlnaHQgKiBTY3JvbGxiYXI6Om1pbkZyYWN0aW9uVG9TdGVwV2hl
blBhZ2luZygpLCBoZWlnaHQgLSBTY3JvbGxiYXI6Om1heE92ZXJsYXBCZXR3ZWVuUGFnZXMoKSks
IDEpKTsKIH0KIAogc3RhdGljIFJlZlB0cjxSYW5nZT4gdW5pb25ET01SYW5nZXMoUmFuZ2UqIGEs
IFJhbmdlKiBiKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0SXRlcmF0
b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0SXRlcmF0b3IuY3BwCmluZGV4IGI2
NTVmMjU2MzA2YmNlMDJhNDYwYWI2MTRlMzQxZjA4OWM5NGJmMzYuLjU2MTRiNmU3ZmQyOGVkZjI2
NDVlNTFlOTQzNjVmZGUzMjM5ZmZmMmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvVGV4dEl0ZXJhdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1RleHRJdGVy
YXRvci5jcHAKQEAgLTU4LDcgKzU4LDYgQEAKICNlbmRpZgogCiB1c2luZyBuYW1lc3BhY2UgV1RG
OjpVbmljb2RlOwotdXNpbmcgbmFtZXNwYWNlIHN0ZDsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
CkBAIC01MTIsNyArNTExLDcgQEAgYm9vbCBUZXh0SXRlcmF0b3I6OmhhbmRsZVRleHROb2RlKCkK
ICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgaW50IHN0ckxlbmd0aCA9IHN0ci5s
ZW5ndGgoKTsKICAgICAgICAgaW50IGVuZCA9IChtX25vZGUgPT0gbV9lbmRDb250YWluZXIpID8g
bV9lbmRPZmZzZXQgOiBJTlRfTUFYOwotICAgICAgICBpbnQgcnVuRW5kID0gbWluKHN0ckxlbmd0
aCwgZW5kKTsKKyAgICAgICAgaW50IHJ1bkVuZCA9IHN0ZDo6bWluKHN0ckxlbmd0aCwgZW5kKTsK
IAogICAgICAgICBpZiAocnVuU3RhcnQgPj0gcnVuRW5kKQogICAgICAgICAgICAgcmV0dXJuIHRy
dWU7CkBAIC01NjUsNyArNTY0LDcgQEAgdm9pZCBUZXh0SXRlcmF0b3I6OmhhbmRsZVRleHRCb3go
KQogICAgIHVuc2lnbmVkIGVuZCA9IChtX25vZGUgPT0gbV9lbmRDb250YWluZXIpID8gc3RhdGlj
X2Nhc3Q8dW5zaWduZWQ+KG1fZW5kT2Zmc2V0KSA6IFVJTlRfTUFYOwogICAgIHdoaWxlIChtX3Rl
eHRCb3gpIHsKICAgICAgICAgdW5zaWduZWQgdGV4dEJveFN0YXJ0ID0gbV90ZXh0Qm94LT5zdGFy
dCgpOwotICAgICAgICB1bnNpZ25lZCBydW5TdGFydCA9IG1heCh0ZXh0Qm94U3RhcnQsIHN0YXJ0
KTsKKyAgICAgICAgdW5zaWduZWQgcnVuU3RhcnQgPSBzdGQ6Om1heCh0ZXh0Qm94U3RhcnQsIHN0
YXJ0KTsKIAogICAgICAgICAvLyBDaGVjayBmb3IgY29sbGFwc2VkIHNwYWNlIGF0IHRoZSBzdGFy
dCBvZiB0aGlzIHJ1bi4KICAgICAgICAgSW5saW5lVGV4dEJveCogZmlyc3RUZXh0Qm94ID0gcmVu
ZGVyZXItPmNvbnRhaW5zUmV2ZXJzZWRUZXh0KCkgPyAobV9zb3J0ZWRUZXh0Qm94ZXMuaXNFbXB0
eSgpID8gMCA6IG1fc29ydGVkVGV4dEJveGVzWzBdKSA6IHJlbmRlcmVyLT5maXJzdFRleHRCb3go
KTsKQEAgLTU4Miw3ICs1ODEsNyBAQCB2b2lkIFRleHRJdGVyYXRvcjo6aGFuZGxlVGV4dEJveCgp
CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICAgICAgdW5zaWduZWQgdGV4dEJv
eEVuZCA9IHRleHRCb3hTdGFydCArIG1fdGV4dEJveC0+bGVuKCk7Ci0gICAgICAgIHVuc2lnbmVk
IHJ1bkVuZCA9IG1pbih0ZXh0Qm94RW5kLCBlbmQpOworICAgICAgICB1bnNpZ25lZCBydW5FbmQg
PSBzdGQ6Om1pbih0ZXh0Qm94RW5kLCBlbmQpOwogICAgICAgICAKICAgICAgICAgLy8gRGV0ZXJt
aW5lIHdoYXQgdGhlIG5leHQgdGV4dCBib3ggd2lsbCBiZSwgYnV0IGRvbid0IGFkdmFuY2UgeWV0
CiAgICAgICAgIElubGluZVRleHRCb3gqIG5leHRUZXh0Qm94ID0gMDsKQEAgLTE0NTIsNyArMTQ1
MSw3IEBAIFN0cmluZyBDaGFyYWN0ZXJJdGVyYXRvcjo6c3RyaW5nKGludCBudW1DaGFycykKICAg
ICBWZWN0b3I8VUNoYXI+IHJlc3VsdDsKICAgICByZXN1bHQucmVzZXJ2ZUluaXRpYWxDYXBhY2l0
eShudW1DaGFycyk7CiAgICAgd2hpbGUgKG51bUNoYXJzID4gMCAmJiAhYXRFbmQoKSkgewotICAg
ICAgICBpbnQgcnVuU2l6ZSA9IG1pbihudW1DaGFycywgbGVuZ3RoKCkpOworICAgICAgICBpbnQg
cnVuU2l6ZSA9IHN0ZDo6bWluKG51bUNoYXJzLCBsZW5ndGgoKSk7CiAgICAgICAgIHJlc3VsdC5h
cHBlbmQoY2hhcmFjdGVycygpLCBydW5TaXplKTsKICAgICAgICAgbnVtQ2hhcnMgLT0gcnVuU2l6
ZTsKICAgICAgICAgYWR2YW5jZShydW5TaXplKTsKQEAgLTE5NjUsNyArMTk2NCw3IEBAIGlubGlu
ZSBTZWFyY2hCdWZmZXI6OlNlYXJjaEJ1ZmZlcihjb25zdCBTdHJpbmcmIHRhcmdldCwgRmluZE9w
dGlvbnMgb3B0aW9ucykKICAgICBmb2xkUXVvdGVNYXJrc0FuZFNvZnRIeXBoZW5zKG1fdGFyZ2V0
KTsKIAogICAgIHNpemVfdCB0YXJnZXRMZW5ndGggPSBtX3RhcmdldC5sZW5ndGgoKTsKLSAgICBt
X2J1ZmZlci5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KG1heCh0YXJnZXRMZW5ndGggKiA4LCBtaW5p
bXVtU2VhcmNoQnVmZmVyU2l6ZSkpOworICAgIG1fYnVmZmVyLnJlc2VydmVJbml0aWFsQ2FwYWNp
dHkoc3RkOjptYXgodGFyZ2V0TGVuZ3RoICogOCwgbWluaW11bVNlYXJjaEJ1ZmZlclNpemUpKTsK
ICAgICBtX292ZXJsYXAgPSBtX2J1ZmZlci5jYXBhY2l0eSgpIC8gNDsKIAogICAgIGlmICgobV9v
cHRpb25zICYgQXRXb3JkU3RhcnRzKSAmJiB0YXJnZXRMZW5ndGgpIHsKQEAgLTIwMzUsMTIgKzIw
MzQsMTIgQEAgaW5saW5lIHNpemVfdCBTZWFyY2hCdWZmZXI6OmFwcGVuZChjb25zdCBVQ2hhciog
Y2hhcmFjdGVycywgc2l6ZV90IGxlbmd0aCkKICAgICAgICAgbV9hdEJyZWFrID0gZmFsc2U7CiAg
ICAgfSBlbHNlIGlmIChtX2J1ZmZlci5zaXplKCkgPT0gbV9idWZmZXIuY2FwYWNpdHkoKSkgewog
ICAgICAgICBtZW1jcHkobV9idWZmZXIuZGF0YSgpLCBtX2J1ZmZlci5kYXRhKCkgKyBtX2J1ZmZl
ci5zaXplKCkgLSBtX292ZXJsYXAsIG1fb3ZlcmxhcCAqIHNpemVvZihVQ2hhcikpOwotICAgICAg
ICBtX3ByZWZpeExlbmd0aCAtPSBtaW4obV9wcmVmaXhMZW5ndGgsIG1fYnVmZmVyLnNpemUoKSAt
IG1fb3ZlcmxhcCk7CisgICAgICAgIG1fcHJlZml4TGVuZ3RoIC09IHN0ZDo6bWluKG1fcHJlZml4
TGVuZ3RoLCBtX2J1ZmZlci5zaXplKCkgLSBtX292ZXJsYXApOwogICAgICAgICBtX2J1ZmZlci5z
aHJpbmsobV9vdmVybGFwKTsKICAgICB9CiAKICAgICBzaXplX3Qgb2xkTGVuZ3RoID0gbV9idWZm
ZXIuc2l6ZSgpOwotICAgIHNpemVfdCB1c2FibGVMZW5ndGggPSBtaW4obV9idWZmZXIuY2FwYWNp
dHkoKSAtIG9sZExlbmd0aCwgbGVuZ3RoKTsKKyAgICBzaXplX3QgdXNhYmxlTGVuZ3RoID0gc3Rk
OjptaW4obV9idWZmZXIuY2FwYWNpdHkoKSAtIG9sZExlbmd0aCwgbGVuZ3RoKTsKICAgICBBU1NF
UlQodXNhYmxlTGVuZ3RoKTsKICAgICBtX2J1ZmZlci5hcHBlbmQoY2hhcmFjdGVycywgdXNhYmxl
TGVuZ3RoKTsKICAgICBmb2xkUXVvdGVNYXJrc0FuZFNvZnRIeXBoZW5zKG1fYnVmZmVyLmRhdGEo
KSArIG9sZExlbmd0aCwgdXNhYmxlTGVuZ3RoKTsKQEAgLTIwNjgsNyArMjA2Nyw3IEBAIGlubGlu
ZSB2b2lkIFNlYXJjaEJ1ZmZlcjo6cHJlcGVuZENvbnRleHQoY29uc3QgVUNoYXIqIGNoYXJhY3Rl
cnMsIHNpemVfdCBsZW5ndGgpCiAgICAgICAgIHdvcmRCb3VuZGFyeUNvbnRleHRTdGFydCA9IHN0
YXJ0T2ZMYXN0V29yZEJvdW5kYXJ5Q29udGV4dChjaGFyYWN0ZXJzLCB3b3JkQm91bmRhcnlDb250
ZXh0U3RhcnQpOwogICAgIH0KIAotICAgIHNpemVfdCB1c2FibGVMZW5ndGggPSBtaW4obV9idWZm
ZXIuY2FwYWNpdHkoKSAtIG1fcHJlZml4TGVuZ3RoLCBsZW5ndGggLSB3b3JkQm91bmRhcnlDb250
ZXh0U3RhcnQpOworICAgIHNpemVfdCB1c2FibGVMZW5ndGggPSBzdGQ6Om1pbihtX2J1ZmZlci5j
YXBhY2l0eSgpIC0gbV9wcmVmaXhMZW5ndGgsIGxlbmd0aCAtIHdvcmRCb3VuZGFyeUNvbnRleHRT
dGFydCk7CiAgICAgbV9idWZmZXIuaW5zZXJ0KDAsIGNoYXJhY3RlcnMgKyBsZW5ndGggLSB1c2Fi
bGVMZW5ndGgsIHVzYWJsZUxlbmd0aCk7CiAgICAgbV9wcmVmaXhMZW5ndGggKz0gdXNhYmxlTGVu
Z3RoOwogCkBAIC0yMjQxLDEwICsyMjQwLDEwIEBAIG5leHRNYXRjaDoKICAgICAgICAgICAgIGlu
dCB3b3JkQm91bmRhcnlDb250ZXh0U3RhcnQgPSBtYXRjaFN0YXJ0OwogICAgICAgICAgICAgVTE2
X0JBQ0tfMShtX2J1ZmZlci5kYXRhKCksIDAsIHdvcmRCb3VuZGFyeUNvbnRleHRTdGFydCk7CiAg
ICAgICAgICAgICB3b3JkQm91bmRhcnlDb250ZXh0U3RhcnQgPSBzdGFydE9mTGFzdFdvcmRCb3Vu
ZGFyeUNvbnRleHQobV9idWZmZXIuZGF0YSgpLCB3b3JkQm91bmRhcnlDb250ZXh0U3RhcnQpOwot
ICAgICAgICAgICAgb3ZlcmxhcCA9IG1pbihzaXplIC0gMSwgbWF4KG92ZXJsYXAsIHNpemUgLSB3
b3JkQm91bmRhcnlDb250ZXh0U3RhcnQpKTsKKyAgICAgICAgICAgIG92ZXJsYXAgPSBzdGQ6Om1p
bihzaXplIC0gMSwgc3RkOjptYXgob3ZlcmxhcCwgc2l6ZSAtIHdvcmRCb3VuZGFyeUNvbnRleHRT
dGFydCkpOwogICAgICAgICB9CiAgICAgICAgIG1lbWNweShtX2J1ZmZlci5kYXRhKCksIG1fYnVm
ZmVyLmRhdGEoKSArIHNpemUgLSBvdmVybGFwLCBvdmVybGFwICogc2l6ZW9mKFVDaGFyKSk7Ci0g
ICAgICAgIG1fcHJlZml4TGVuZ3RoIC09IG1pbihtX3ByZWZpeExlbmd0aCwgc2l6ZSAtIG92ZXJs
YXApOworICAgICAgICBtX3ByZWZpeExlbmd0aCAtPSBzdGQ6Om1pbihtX3ByZWZpeExlbmd0aCwg
c2l6ZSAtIG92ZXJsYXApOwogICAgICAgICBtX2J1ZmZlci5zaHJpbmsob3ZlcmxhcCk7CiAgICAg
ICAgIHJldHVybiAwOwogICAgIH0KQEAgLTIyNjEsNyArMjI2MCw3IEBAIG5leHRNYXRjaDoKIAog
ICAgIHNpemVfdCBuZXdTaXplID0gc2l6ZSAtIChtYXRjaFN0YXJ0ICsgMSk7CiAgICAgbWVtbW92
ZShtX2J1ZmZlci5kYXRhKCksIG1fYnVmZmVyLmRhdGEoKSArIG1hdGNoU3RhcnQgKyAxLCBuZXdT
aXplICogc2l6ZW9mKFVDaGFyKSk7Ci0gICAgbV9wcmVmaXhMZW5ndGggLT0gbWluPHNpemVfdD4o
bV9wcmVmaXhMZW5ndGgsIG1hdGNoU3RhcnQgKyAxKTsKKyAgICBtX3ByZWZpeExlbmd0aCAtPSBz
dGQ6Om1pbjxzaXplX3Q+KG1fcHJlZml4TGVuZ3RoLCBtYXRjaFN0YXJ0ICsgMSk7CiAgICAgbV9i
dWZmZXIuc2hyaW5rKG5ld1NpemUpOwogCiAgICAgc3RhcnQgPSBzaXplIC0gbWF0Y2hTdGFydDsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVmlzaWJsZVVuaXRzLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvVmlzaWJsZVVuaXRzLmNwcAppbmRleCBhZjJlYTEzM2JhNzJk
YjIzMTNiOTBjM2Y3NWUzNTQ5NjIzYzI3NDY5Li41ZTdmY2I2NjExZTJlZGM3OTJhMjhlMDljOGY2
NjEyZjU4YzIwMDZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1Zpc2libGVV
bml0cy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9WaXNpYmxlVW5pdHMuY3BwCkBA
IC0xMTM3LDcgKzExMzcsNyBAQCBWaXNpYmxlUG9zaXRpb24gc3RhcnRPZlBhcmFncmFwaChjb25z
dCBWaXNpYmxlUG9zaXRpb24mIGMsIEVkaXRpbmdCb3VuZGFyeUNyb3NzaQogICAgICAgICAgICAg
ICAgIGludCBpID0gdG9SZW5kZXJUZXh0KHIpLT50ZXh0TGVuZ3RoKCk7CiAgICAgICAgICAgICAg
ICAgaW50IG8gPSBvZmZzZXQ7CiAgICAgICAgICAgICAgICAgaWYgKG4gPT0gc3RhcnROb2RlICYm
IG8gPCBpKQotICAgICAgICAgICAgICAgICAgICBpID0gbWF4KDAsIG8pOworICAgICAgICAgICAg
ICAgICAgICBpID0gc3RkOjptYXgoMCwgbyk7CiAgICAgICAgICAgICAgICAgd2hpbGUgKC0taSA+
PSAwKSB7CiAgICAgICAgICAgICAgICAgICAgIGlmIChjaGFyc1tpXSA9PSAnXG4nKQogICAgICAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuIFZpc2libGVQb3NpdGlvbihQb3NpdGlvbih0b1RleHQo
biksIGkgKyAxKSwgRE9XTlNUUkVBTSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL2h0bWxlZGl0aW5nLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvaHRtbGVkaXRpbmcu
Y3BwCmluZGV4IGZjN2E4MzUyOTQ4YmE3NzYyYzdlOWRjNGIyMWZkZmZlYmQzNzZiZjcuLmVmZjQ1
ODVjNmE4MTA4ZDExZGUyNDA5YTM3NmM4YjAzNzBkNjJmNzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvaHRtbGVkaXRpbmcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvaHRtbGVkaXRpbmcuY3BwCkBAIC01Nyw4ICs1Nyw2IEBACiAjaW5jbHVkZSA8d3RmL1N0ZExp
YkV4dHJhcy5oPgogI2luY2x1ZGUgPHd0Zi91bmljb2RlL0NoYXJhY3Rlck5hbWVzLmg+CiAKLXVz
aW5nIG5hbWVzcGFjZSBzdGQ7Ci0KIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogdXNpbmcgbmFtZXNw
YWNlIEhUTUxOYW1lczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFya3Vw
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFya3VwLmNwcAppbmRleCA3MGI1NGZlZDVm
NTdmYjI0NGZkMTI4ZDBmMTdmMTgzY2RhMGQxMjBjLi5lODM4YTQzYTA2YzRjZDc1ZjA4ZDBmM2Nk
NmMyOWYxZjY1NzU3YjA1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hcmt1
cC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYXJrdXAuY3BwCkBAIC02NCw4ICs2
NCw2IEBACiAjaW5jbHVkZSAiRGVsZXRlQnV0dG9uQ29udHJvbGxlci5oIgogI2VuZGlmCiAKLXVz
aW5nIG5hbWVzcGFjZSBzdGQ7Ci0KIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogdXNpbmcgbmFtZXNw
YWNlIEhUTUxOYW1lczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZVJl
YWRlckxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGVSZWFkZXJMb2FkZXIu
Y3BwCmluZGV4IDI0NDdjMzBlYTUxNGFmYzhhZjIyNWI0ZWE2ZWYwNGMyMmRhNTdjZWIuLjg5YTY3
YjlmMjNkMzVkZjFlNWRiYjgyYmI3OGQxYTgwY2YwYjcwNjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2ZpbGVhcGkvRmlsZVJlYWRlckxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
ZmlsZWFwaS9GaWxlUmVhZGVyTG9hZGVyLmNwcApAQCAtNTAsOCArNTAsNiBAQAogI2luY2x1ZGUg
PHd0Zi90ZXh0L0Jhc2U2NC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4K
IAotdXNpbmcgbmFtZXNwYWNlIHN0ZDsKLQogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjb25zdCBp
bnQgZGVmYXVsdEJ1ZmZlckxlbmd0aCA9IDMyNzY4OwpAQCAtMTU0LDcgKzE1Miw3IEBAIHZvaWQg
RmlsZVJlYWRlckxvYWRlcjo6ZGlkUmVjZWl2ZVJlc3BvbnNlKHVuc2lnbmVkIGxvbmcsIGNvbnN0
IFJlc291cmNlUmVzcG9uc2UmCiAgICAgLy8gQ2hlY2sgdGhhdCB3ZSBjYW4gY2FzdCB0byB1bnNp
Z25lZCBzaW5jZSB3ZSBoYXZlIHRvIGRvCiAgICAgLy8gc28gdG8gY2FsbCBBcnJheUJ1ZmZlcidz
IGNyZWF0ZSBmdW5jdGlvbi4KICAgICAvLyBGSVhNRTogU3VwcG9ydCByZWFkaW5nIG1vcmUgdGhh
biB0aGUgY3VycmVudCBzaXplIGxpbWl0IG9mIEFycmF5QnVmZmVyLgotICAgIGlmIChsZW5ndGgg
PiBudW1lcmljX2xpbWl0czx1bnNpZ25lZD46Om1heCgpKSB7CisgICAgaWYgKGxlbmd0aCA+IHN0
ZDo6bnVtZXJpY19saW1pdHM8dW5zaWduZWQ+OjptYXgoKSkgewogICAgICAgICBmYWlsZWQoRmls
ZUVycm9yOjpOT1RfUkVBREFCTEVfRVJSKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTE4
NiwxNCArMTg0LDE0IEBAIHZvaWQgRmlsZVJlYWRlckxvYWRlcjo6ZGlkUmVjZWl2ZURhdGEoY29u
c3QgY2hhciogZGF0YSwgaW50IGRhdGFMZW5ndGgpCiAgICAgdW5zaWduZWQgcmVtYWluaW5nQnVm
ZmVyU3BhY2UgPSBtX3RvdGFsQnl0ZXMgLSBtX2J5dGVzTG9hZGVkOwogICAgIGlmIChsZW5ndGgg
PiBzdGF0aWNfY2FzdDxsb25nIGxvbmc+KHJlbWFpbmluZ0J1ZmZlclNwYWNlKSkgewogICAgICAg
ICAvLyBJZiB0aGUgYnVmZmVyIGhhcyBoaXQgbWF4aW11bSBzaXplLCBpdCBjYW4ndCBiZSBncm93
biBhbnkgbW9yZS4KLSAgICAgICAgaWYgKG1fdG90YWxCeXRlcyA+PSBudW1lcmljX2xpbWl0czx1
bnNpZ25lZD46Om1heCgpKSB7CisgICAgICAgIGlmIChtX3RvdGFsQnl0ZXMgPj0gc3RkOjpudW1l
cmljX2xpbWl0czx1bnNpZ25lZD46Om1heCgpKSB7CiAgICAgICAgICAgICBmYWlsZWQoRmlsZUVy
cm9yOjpOT1RfUkVBREFCTEVfRVJSKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQog
ICAgICAgICBpZiAobV92YXJpYWJsZUxlbmd0aCkgewogICAgICAgICAgICAgdW5zaWduZWQgbG9u
ZyBsb25nIG5ld0xlbmd0aCA9IG1fdG90YWxCeXRlcyAqIDI7Ci0gICAgICAgICAgICBpZiAobmV3
TGVuZ3RoID4gbnVtZXJpY19saW1pdHM8dW5zaWduZWQ+OjptYXgoKSkKLSAgICAgICAgICAgICAg
ICBuZXdMZW5ndGggPSBudW1lcmljX2xpbWl0czx1bnNpZ25lZD46Om1heCgpOworICAgICAgICAg
ICAgaWYgKG5ld0xlbmd0aCA+IHN0ZDo6bnVtZXJpY19saW1pdHM8dW5zaWduZWQ+OjptYXgoKSkK
KyAgICAgICAgICAgICAgICBuZXdMZW5ndGggPSBzdGQ6Om51bWVyaWNfbGltaXRzPHVuc2lnbmVk
Pjo6bWF4KCk7CiAgICAgICAgICAgICBSZWZQdHI8QXJyYXlCdWZmZXI+IG5ld0RhdGEgPQogICAg
ICAgICAgICAgICAgIEFycmF5QnVmZmVyOjpjcmVhdGUoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KG5l
d0xlbmd0aCksIDEpOwogICAgICAgICAgICAgbWVtY3B5KHN0YXRpY19jYXN0PGNoYXIqPihuZXdE
YXRhLT5kYXRhKCkpLCBzdGF0aWNfY2FzdDxjaGFyKj4obV9yYXdEYXRhLT5kYXRhKCkpLCBtX2J5
dGVzTG9hZGVkKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2hpc3RvcnkvQmFja0Zvcndh
cmRMaXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2hpc3RvcnkvQmFja0ZvcndhcmRMaXN0LmNwcApp
bmRleCAxNWYxMDE1OWNmNjZjMDIyNzhlZjhhNjkyNmI4YzFlN2QxNGJhN2JlLi4xYjRmNzY1OGMy
ODViNGZmNDhiMjE0YTg3MDM2N2RmYzBkZTRlMTc0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9oaXN0b3J5L0JhY2tGb3J3YXJkTGlzdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaGlzdG9y
eS9CYWNrRm9yd2FyZExpc3QuY3BwCkBAIC0zNiw4ICszNiw2IEBACiAjaW5jbHVkZSAiUGFnZUNh
Y2hlLmgiCiAjaW5jbHVkZSAiU2VyaWFsaXplZFNjcmlwdFZhbHVlLmgiCiAKLXVzaW5nIG5hbWVz
cGFjZSBzdGQ7Ci0KIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogc3RhdGljIGNvbnN0IHVuc2lnbmVk
IERlZmF1bHRDYXBhY2l0eSA9IDEwMDsKQEAgLTE0NCw3ICsxNDIsNyBAQCB2b2lkIEJhY2tGb3J3
YXJkTGlzdDo6YmFja0xpc3RXaXRoTGltaXQoaW50IGxpbWl0LCBIaXN0b3J5SXRlbVZlY3RvciYg
bGlzdCkKIHsKICAgICBsaXN0LmNsZWFyKCk7CiAgICAgaWYgKG1fY3VycmVudCAhPSBOb0N1cnJl
bnRJdGVtSW5kZXgpIHsKLSAgICAgICAgdW5zaWduZWQgZmlyc3QgPSBtYXgoKGludCltX2N1cnJl
bnQgLSBsaW1pdCwgMCk7CisgICAgICAgIHVuc2lnbmVkIGZpcnN0ID0gc3RkOjptYXgoKGludClt
X2N1cnJlbnQgLSBsaW1pdCwgMCk7CiAgICAgICAgIGZvciAoOyBmaXJzdCA8IG1fY3VycmVudDsg
KytmaXJzdCkKICAgICAgICAgICAgIGxpc3QuYXBwZW5kKG1fZW50cmllc1tmaXJzdF0pOwogICAg
IH0KQEAgLTE1OSw3ICsxNTcsNyBAQCB2b2lkIEJhY2tGb3J3YXJkTGlzdDo6Zm9yd2FyZExpc3RX
aXRoTGltaXQoaW50IGxpbWl0LCBIaXN0b3J5SXRlbVZlY3RvciYgbGlzdCkKICAgICAgICAgCiAg
ICAgdW5zaWduZWQgbGFzdEVudHJ5ID0gbV9lbnRyaWVzLnNpemUoKSAtIDE7CiAgICAgaWYgKG1f
Y3VycmVudCA8IGxhc3RFbnRyeSkgewotICAgICAgICBpbnQgbGFzdCA9IG1pbihtX2N1cnJlbnQg
KyBsaW1pdCwgbGFzdEVudHJ5KTsKKyAgICAgICAgaW50IGxhc3QgPSBzdGQ6Om1pbihtX2N1cnJl
bnQgKyBsaW1pdCwgbGFzdEVudHJ5KTsKICAgICAgICAgbGltaXQgPSBtX2N1cnJlbnQgKyAxOwog
ICAgICAgICBmb3IgKDsgbGltaXQgPD0gbGFzdDsgKytsaW1pdCkKICAgICAgICAgICAgIGxpc3Qu
YXBwZW5kKG1fZW50cmllc1tsaW1pdF0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaGlz
dG9yeS9QYWdlQ2FjaGUuY3BwIGIvU291cmNlL1dlYkNvcmUvaGlzdG9yeS9QYWdlQ2FjaGUuY3Bw
CmluZGV4IDMyOTQyMDY4MDY1ZGFlNTc2YTU3YzJjZDczNzU2ZGYxOGUwNGZhOTIuLjA5Y2YzODdj
MDQ0NTI5MWZkNWNhZjVkMDU5YTQ5YjM3YmQzMWI5ZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2hpc3RvcnkvUGFnZUNhY2hlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9oaXN0b3J5L1Bh
Z2VDYWNoZS5jcHAKQEAgLTU3LDggKzU3LDYgQEAKICNpbmNsdWRlICJEZXZpY2VQcm94aW1pdHlD
b250cm9sbGVyLmgiCiAjZW5kaWYKIAotdXNpbmcgbmFtZXNwYWNlIHN0ZDsKLQogbmFtZXNwYWNl
IFdlYkNvcmUgewogCiAjaWYgIWRlZmluZWQoTkRFQlVHKQpAQCAtMzczLDcgKzM3MSw3IEBAIGJv
b2wgUGFnZUNhY2hlOjpjYW5DYWNoZShQYWdlKiBwYWdlKSBjb25zdAogdm9pZCBQYWdlQ2FjaGU6
OnNldENhcGFjaXR5KGludCBjYXBhY2l0eSkKIHsKICAgICBBU1NFUlQoY2FwYWNpdHkgPj0gMCk7
Ci0gICAgbV9jYXBhY2l0eSA9IG1heChjYXBhY2l0eSwgMCk7CisgICAgbV9jYXBhY2l0eSA9IHN0
ZDo6bWF4KGNhcGFjaXR5LCAwKTsKIAogICAgIHBydW5lKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0Jhc2VEYXRlQW5kVGltZUlucHV0VHlwZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0Jhc2VEYXRlQW5kVGltZUlucHV0VHlwZS5jcHAKaW5kZXggMGNhZDY4NWQzMGMw
ZDU4MWQ5NzMyMDA0NThiZmZjMWYwY2EyNjZkZS4uODQzZjlmNzFmYzQ0MThlZDMzNzlkNTM3Mjcy
ZjRjOTFhNGNlYzNjNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9CYXNlRGF0ZUFu
ZFRpbWVJbnB1dFR5cGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvQmFzZURhdGVBbmRU
aW1lSW5wdXRUeXBlLmNwcApAQCAtNDUsNyArNDUsNiBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewog
CiB1c2luZyBuYW1lc3BhY2UgSFRNTE5hbWVzOwotdXNpbmcgbmFtZXNwYWNlIHN0ZDsKIAogc3Rh
dGljIGNvbnN0IGludCBtc2VjUGVyTWludXRlID0gNjAgKiAxMDAwOwogc3RhdGljIGNvbnN0IGlu
dCBtc2VjUGVyU2Vjb25kID0gMTAwMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
RlRQRGlyZWN0b3J5RG9jdW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9GVFBEaXJlY3Rv
cnlEb2N1bWVudC5jcHAKaW5kZXggOGY5MmYzZjM1ZDRlMTgwZGUxMWM0NjBmNjBlNmZhNzMzNDkx
OGViNS4uMjNkNzViNDFhN2UwOWE0N2UxYTYzMzZlNjViMDI4NThmM2I3YmU3ZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9GVFBEaXJlY3RvcnlEb2N1bWVudC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9GVFBEaXJlY3RvcnlEb2N1bWVudC5jcHAKQEAgLTQ0LDggKzQ0LDYg
QEAKICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KICNpbmNsdWRlIDx3dGYvdW5pY29k
ZS9DaGFyYWN0ZXJOYW1lcy5oPgogCi11c2luZyBuYW1lc3BhY2Ugc3RkOwotCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKIHVzaW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7CkBAIC02Niw3ICs2NCw3IEBA
IHB1YmxpYzoKICAgICB7CiAgICAgICAgIGlmICgobV9kZXN0IC0gbV9idWZmZXIpID4gbV9zaXpl
IC0gbGVuKSB7CiAgICAgICAgICAgICAvLyBFbmxhcmdlIGJ1ZmZlcgotICAgICAgICAgICAgaW50
IG5ld1NpemUgPSBtYXgobV9zaXplICogMiwgbV9zaXplICsgbGVuKTsKKyAgICAgICAgICAgIGlu
dCBuZXdTaXplID0gc3RkOjptYXgobV9zaXplICogMiwgbV9zaXplICsgbGVuKTsKICAgICAgICAg
ICAgIGludCBvbGRPZmZzZXQgPSBtX2Rlc3QgLSBtX2J1ZmZlcjsKICAgICAgICAgICAgIG1fYnVm
ZmVyID0gc3RhdGljX2Nhc3Q8VUNoYXIqPihmYXN0UmVhbGxvYyhtX2J1ZmZlciwgbmV3U2l6ZSAq
IHNpemVvZihVQ2hhcikpKTsKICAgICAgICAgICAgIG1fZGVzdCA9IG1fYnVmZmVyICsgb2xkT2Zm
c2V0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQXJlYUVsZW1lbnQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQXJlYUVsZW1lbnQuY3BwCmluZGV4IGRiNDFjNWIz
OThkZjhiOTg4NDViY2NhNTk3NzhjZGUwOGZkNDJhMTMuLmVmMDlkZmQyYmQwMzhlOGFmMjQwZDUx
M2YzNjlmZDA1MTc2NDZkY2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEFy
ZWFFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBcmVhRWxlbWVudC5j
cHAKQEAgLTMzLDggKzMzLDYgQEAKICNpbmNsdWRlICJSZW5kZXJJbWFnZS5oIgogI2luY2x1ZGUg
IlJlbmRlclZpZXcuaCIKIAotdXNpbmcgbmFtZXNwYWNlIHN0ZDsKLQogbmFtZXNwYWNlIFdlYkNv
cmUgewogCiB1c2luZyBuYW1lc3BhY2UgSFRNTE5hbWVzOwpAQCAtMTU4LDcgKzE1Niw3IEBAIFBh
dGggSFRNTEFyZWFFbGVtZW50OjpnZXRSZWdpb24oY29uc3QgTGF5b3V0U2l6ZSYgc2l6ZSkgY29u
c3QKICAgICAgICAgY2FzZSBDaXJjbGU6CiAgICAgICAgICAgICBpZiAobV9jb29yZHNMZW4gPj0g
MykgewogICAgICAgICAgICAgICAgIExlbmd0aCByYWRpdXMgPSBtX2Nvb3Jkc1syXTsKLSAgICAg
ICAgICAgICAgICBpbnQgciA9IG1pbihtaW5pbXVtVmFsdWVGb3JMZW5ndGgocmFkaXVzLCB3aWR0
aCwgcmVuZGVyVmlldyksIG1pbmltdW1WYWx1ZUZvckxlbmd0aChyYWRpdXMsIGhlaWdodCwgcmVu
ZGVyVmlldykpOworICAgICAgICAgICAgICAgIGludCByID0gc3RkOjptaW4obWluaW11bVZhbHVl
Rm9yTGVuZ3RoKHJhZGl1cywgd2lkdGgsIHJlbmRlclZpZXcpLCBtaW5pbXVtVmFsdWVGb3JMZW5n
dGgocmFkaXVzLCBoZWlnaHQsIHJlbmRlclZpZXcpKTsKICAgICAgICAgICAgICAgICBwYXRoLmFk
ZEVsbGlwc2UoRmxvYXRSZWN0KG1pbmltdW1WYWx1ZUZvckxlbmd0aChtX2Nvb3Jkc1swXSwgd2lk
dGgsIHJlbmRlclZpZXcpIC0gciwgbWluaW11bVZhbHVlRm9yTGVuZ3RoKG1fY29vcmRzWzFdLCBo
ZWlnaHQsIHJlbmRlclZpZXcpIC0gciwgMiAqIHIsIDIgKiByKSk7CiAgICAgICAgICAgICB9CiAg
ICAgICAgICAgICBicmVhazsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEVs
ZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRWxlbWVudC5jcHAKaW5kZXggNjk3
MDVkZTMxNjhlZTM1MjJhMWZlYmY3MWI5ZjMyNmNhYzBmMDZlZC4uZjczOTU4MmYzODlhODhkOWU4
NmI4NTZiM2RhMGFmNDEwYTQyMDE3ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRWxlbWVudC5jcHAK
QEAgLTY3LDkgKzY3LDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogdXNpbmcgbmFtZXNwYWNlIEhU
TUxOYW1lczsKIHVzaW5nIG5hbWVzcGFjZSBXVEY7CiAKLXVzaW5nIHN0ZDo6bWluOwotdXNpbmcg
c3RkOjptYXg7Ci0KIFBhc3NSZWZQdHI8SFRNTEVsZW1lbnQ+IEhUTUxFbGVtZW50OjpjcmVhdGUo
Y29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQmIGRvY3VtZW50KQogewogICAg
IHJldHVybiBhZG9wdFJlZihuZXcgSFRNTEVsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQpKTsKQEAg
LTMyOSw3ICszMjYsNyBAQCB2b2lkIEhUTUxFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZShjb25zdCBR
dWFsaWZpZWROYW1lJiBuYW1lLCBjb25zdCBBdG9taWNTdHJpbmcmCiAgICAgICAgICAgICBjbGVh
clRhYkluZGV4RXhwbGljaXRseUlmTmVlZGVkKCk7CiAgICAgICAgIGVsc2UgaWYgKHBhcnNlSFRN
TEludGVnZXIodmFsdWUsIHRhYmluZGV4KSkgewogICAgICAgICAgICAgLy8gQ2xhbXAgdGFiaW5k
ZXggdG8gdGhlIHJhbmdlIG9mICdzaG9ydCcgdG8gbWF0Y2ggRmlyZWZveCdzIGJlaGF2aW9yLgot
ICAgICAgICAgICAgc2V0VGFiSW5kZXhFeHBsaWNpdGx5KG1heChzdGF0aWNfY2FzdDxpbnQ+KHN0
ZDo6bnVtZXJpY19saW1pdHM8c2hvcnQ+OjptaW4oKSksIG1pbih0YWJpbmRleCwgc3RhdGljX2Nh
c3Q8aW50PihzdGQ6Om51bWVyaWNfbGltaXRzPHNob3J0Pjo6bWF4KCkpKSkpOworICAgICAgICAg
ICAgc2V0VGFiSW5kZXhFeHBsaWNpdGx5KHN0ZDo6bWF4KHN0YXRpY19jYXN0PGludD4oc3RkOjpu
dW1lcmljX2xpbWl0czxzaG9ydD46Om1pbigpKSwgc3RkOjptaW4odGFiaW5kZXgsIHN0YXRpY19j
YXN0PGludD4oc3RkOjpudW1lcmljX2xpbWl0czxzaG9ydD46Om1heCgpKSkpKTsKICAgICAgICAg
fQogICAgIH0gZWxzZSBpZiAobmFtZS5uYW1lc3BhY2VVUkkoKS5pc051bGwoKSkgewogICAgICAg
ICAvLyBGSVhNRTogQ2FuIHdlIGRvIHRoaXMgZXZlbiBmYXN0ZXIgYnkgY2hlY2tpbmcgdGhlIGxv
Y2FsIG5hbWUgIm9uIiBwcmVmaXggYmVmb3JlIHdlIGRvIGFueXRoaW5nIHdpdGggdGhlIG1hcD8K
QEAgLTEwMzQsNyArMTAzMSw3IEBAIHN0YXRpYyBSR0JBMzIgcGFyc2VDb2xvclN0cmluZ1dpdGhD
cmF6eUxlZ2FjeVJ1bGVzKGNvbnN0IFN0cmluZyYgY29sb3JTdHJpbmcpCiAgICAgLy8gU3BsaXQg
dGhlIGRpZ2l0cyBpbnRvIHRocmVlIGNvbXBvbmVudHMsIHRoZW4gc2VhcmNoIHRoZSBsYXN0IDgg
ZGlnaXRzIG9mIGVhY2ggY29tcG9uZW50LgogICAgIEFTU0VSVChkaWdpdEJ1ZmZlci5zaXplKCkg
Pj0gNik7CiAgICAgc2l6ZV90IGNvbXBvbmVudExlbmd0aCA9IGRpZ2l0QnVmZmVyLnNpemUoKSAv
IDM7Ci0gICAgc2l6ZV90IGNvbXBvbmVudFNlYXJjaFdpbmRvd0xlbmd0aCA9IG1pbjxzaXplX3Q+
KGNvbXBvbmVudExlbmd0aCwgOCk7CisgICAgc2l6ZV90IGNvbXBvbmVudFNlYXJjaFdpbmRvd0xl
bmd0aCA9IHN0ZDo6bWluPHNpemVfdD4oY29tcG9uZW50TGVuZ3RoLCA4KTsKICAgICBzaXplX3Qg
cmVkSW5kZXggPSBjb21wb25lbnRMZW5ndGggLSBjb21wb25lbnRTZWFyY2hXaW5kb3dMZW5ndGg7
CiAgICAgc2l6ZV90IGdyZWVuSW5kZXggPSBjb21wb25lbnRMZW5ndGggKiAyIC0gY29tcG9uZW50
U2VhcmNoV2luZG93TGVuZ3RoOwogICAgIHNpemVfdCBibHVlSW5kZXggPSBjb21wb25lbnRMZW5n
dGggKiAzIC0gY29tcG9uZW50U2VhcmNoV2luZG93TGVuZ3RoOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MRm9ybUNvbnRyb2xFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTEZvcm1Db250cm9sRWxlbWVudC5jcHAKaW5kZXggMDQzOWFlOWI2ODA3MzI2YTYx
OTNmYWFjOGEzMmQ0MWU0YWQyYWI2MC4uMGY1NzZjMjk1M2JkYjM3MDI3NTA2NzJmNjE3ZjZkNjU0
YTVjMTMyZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUNvbnRyb2xF
bGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtQ29udHJvbEVsZW1l
bnQuY3BwCkBAIC00NSw3ICs0NSw2IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHVzaW5nIG5h
bWVzcGFjZSBIVE1MTmFtZXM7Ci11c2luZyBuYW1lc3BhY2Ugc3RkOwogCiBIVE1MRm9ybUNvbnRy
b2xFbGVtZW50OjpIVE1MRm9ybUNvbnRyb2xFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmIHRh
Z05hbWUsIERvY3VtZW50JiBkb2N1bWVudCwgSFRNTEZvcm1FbGVtZW50KiBmb3JtKQogICAgIDog
TGFiZWxhYmxlRWxlbWVudCh0YWdOYW1lLCBkb2N1bWVudCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTEZvcm1FbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TEZvcm1FbGVtZW50LmNwcAppbmRleCBiMTdiODdlOWM5YjE4NjhlNjEzM2VmODVjY2FkZTAyYzgz
NTM0ZWJmLi45NTg5MDNlMzYzNTk3NDA4MTUyOGY4YmVmNWY5ZmNmZDZlYzRlMzMzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtRWxlbWVudC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MRm9ybUVsZW1lbnQuY3BwCkBAIC00OCw4ICs0OCw2IEBACiAjaW5j
bHVkZSA8bGltaXRzPgogI2luY2x1ZGUgPHd0Zi9SZWYuaD4KIAotdXNpbmcgbmFtZXNwYWNlIHN0
ZDsKLQogbmFtZXNwYWNlIFdlYkNvcmUgewogCiB1c2luZyBuYW1lc3BhY2UgSFRNTE5hbWVzOwpA
QCAtMzExLDcgKzMwOSw3IEBAIHZvaWQgSFRNTEZvcm1FbGVtZW50OjpnZXRUZXh0RmllbGRWYWx1
ZXMoU3RyaW5nUGFpclZlY3RvciYgZmllbGROYW1lc0FuZFZhbHVlcykKICAgICAgICAgSFRNTElu
cHV0RWxlbWVudCYgaW5wdXQgPSB0b0hUTUxJbnB1dEVsZW1lbnQoZWxlbWVudCk7CiAgICAgICAg
IGlmICghaW5wdXQuaXNUZXh0RmllbGQoKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAg
ICBmaWVsZE5hbWVzQW5kVmFsdWVzLmFwcGVuZChtYWtlX3BhaXIoaW5wdXQubmFtZSgpLnN0cmlu
ZygpLCBpbnB1dC52YWx1ZSgpKSk7CisgICAgICAgIGZpZWxkTmFtZXNBbmRWYWx1ZXMuYXBwZW5k
KHN0ZDo6bWFrZV9wYWlyKGlucHV0Lm5hbWUoKS5zdHJpbmcoKSwgaW5wdXQudmFsdWUoKSkpOwog
ICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW1hZ2VFbGVt
ZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEltYWdlRWxlbWVudC5jcHAKaW5kZXgg
ZTQ0NzgwYjQ1NWFhOWNjMGJjM2Q5NGJmMjE2ZTE0ZWY1MWU0M2E2My4uNzk2NjYxNDFkMTdkZDZi
ZjQyZDA3YTdkMjk2NDE1ZWRlNDk1MWJlMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MSW1hZ2VFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbWFn
ZUVsZW1lbnQuY3BwCkBAIC0zNyw4ICszNyw2IEBACiAjaW5jbHVkZSAiUGFnZS5oIgogI2luY2x1
ZGUgIlJlbmRlckltYWdlLmgiCiAKLXVzaW5nIG5hbWVzcGFjZSBzdGQ7Ci0KIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAogdXNpbmcgbmFtZXNwYWNlIEhUTUxOYW1lczsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxJbnB1dEVsZW1lbnQuY3BwCmluZGV4IDcyNTZmMmU1M2MwZWY5NDM4ODA4ZTUwZmIzY2I3
YWEyZmUwMTdmZDUuLmJjMDQwNTcxNDhjYjc1ZjhmMDdkZjRkMzQzODRiMjg3YWM5ZmU5ZDQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcApAQCAtODEsOCArODEsNiBA
QAogI2luY2x1ZGUgIlRvdWNoRXZlbnQuaCIKICNlbmRpZgogCi11c2luZyBuYW1lc3BhY2Ugc3Rk
OwotCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHVzaW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNYXBFbGVtZW50LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTE1hcEVsZW1lbnQuY3BwCmluZGV4IDAwYWRjMzBkN2YwMDdkMDI5
M2NmY2IxZGRhYjEwOGNmZjg2ZjczNGUuLjRlMzliMWUxOTQ5ODRjZTFlMzliMDkyYTcyOGMzNzdi
NmVjOTQzZmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1hcEVsZW1lbnQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1hcEVsZW1lbnQuY3BwCkBAIC0zMiw4
ICszMiw2IEBACiAjaW5jbHVkZSAiSGl0VGVzdFJlc3VsdC5oIgogI2luY2x1ZGUgIkludFNpemUu
aCIKIAotdXNpbmcgbmFtZXNwYWNlIHN0ZDsKLQogbmFtZXNwYWNlIFdlYkNvcmUgewogCiB1c2lu
ZyBuYW1lc3BhY2UgSFRNTE5hbWVzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MTWVkaWFFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVu
dC5jcHAKaW5kZXggNTYzZWQ0OGVhMjRmNzhmN2NjYTI3NzU2ZjZlZmQwZmQ0Mjc3NjAwZS4uMjk1
YmQ1NmNjN2RkZDE0MzU0ZGJlNDlkZmEwZDhjOGMxNjQxMzZlZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCkBAIC0xNDksOCArMTQ5LDYgQEAKICNpbmNsdWRlICJV
c2VyQWdlbnRTY3JpcHRzLmgiCiAjZW5kaWYKIAotdXNpbmcgbmFtZXNwYWNlIHN0ZDsKLQogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCiBzdGF0aWMgdm9pZCBzZXRGbGFncyh1bnNpZ25lZCYgdmFsdWUs
IHVuc2lnbmVkIGZsYWdzKQpAQCAtMTk3LDcgKzE5NSw2IEBAIHN0YXRpYyBjb25zdCBjaGFyKiBt
ZWRpYVNvdXJjZUJsb2JQcm90b2NvbCA9ICJibG9iIjsKICNlbmRpZgogCiB1c2luZyBuYW1lc3Bh
Y2UgSFRNTE5hbWVzOwotdXNpbmcgbmFtZXNwYWNlIHN0ZDsKIAogdHlwZWRlZiBIYXNoTWFwPERv
Y3VtZW50KiwgSGFzaFNldDxIVE1MTWVkaWFFbGVtZW50Kj4+IERvY3VtZW50RWxlbWVudFNldE1h
cDsKIHN0YXRpYyBEb2N1bWVudEVsZW1lbnRTZXRNYXAmIGRvY3VtZW50VG9FbGVtZW50U2V0TWFw
KCkKQEAgLTI3Niw5ICsyNzMsOSBAQCBIVE1MTWVkaWFFbGVtZW50OjpIVE1MTWVkaWFFbGVtZW50
KGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50JiBkb2N1bQogICAgICwgbV92
b2x1bWUoMS4wZikKICAgICAsIG1fdm9sdW1lSW5pdGlhbGl6ZWQoZmFsc2UpCiAgICAgLCBtX2xh
c3RTZWVrVGltZSgwKQotICAgICwgbV9wcmV2aW91c1Byb2dyZXNzVGltZShudW1lcmljX2xpbWl0
czxkb3VibGU+OjptYXgoKSkKKyAgICAsIG1fcHJldmlvdXNQcm9ncmVzc1RpbWUoc3RkOjpudW1l
cmljX2xpbWl0czxkb3VibGU+OjptYXgoKSkKICAgICAsIG1fY2xvY2tUaW1lQXRMYXN0VXBkYXRl
RXZlbnQoMCkKLSAgICAsIG1fbGFzdFRpbWVVcGRhdGVFdmVudE1vdmllVGltZShudW1lcmljX2xp
bWl0czxkb3VibGU+OjptYXgoKSkKKyAgICAsIG1fbGFzdFRpbWVVcGRhdGVFdmVudE1vdmllVGlt
ZShzdGQ6Om51bWVyaWNfbGltaXRzPGRvdWJsZT46Om1heCgpKQogICAgICwgbV9sb2FkU3RhdGUo
V2FpdGluZ0ZvclNvdXJjZSkKICNpZiBFTkFCTEUoUExVR0lOX1BST1hZX0ZPUl9WSURFTykKICAg
ICAsIG1fcHJveHlXaWRnZXQoMCkKQEAgLTEyMjQsNyArMTIyMSw3IEBAIHZvaWQgSFRNTE1lZGlh
RWxlbWVudDo6dXBkYXRlQWN0aXZlVGV4dFRyYWNrQ3Vlcyhkb3VibGUgbW92aWVUaW1lKQogICAg
ICAgICAgICAgZG91YmxlIGN1ZUVuZFRpbWUgPSBwb3RlbnRpYWxseVNraXBwZWRDdWVzW2ldLmhp
Z2goKTsKIAogICAgICAgICAgICAgLy8gQ29uc2lkZXIgY3VlcyB0aGF0IG1heSBoYXZlIGJlZW4g
bWlzc2VkIHNpbmNlIHRoZSBsYXN0IHNlZWsgdGltZS4KLSAgICAgICAgICAgIGlmIChjdWVTdGFy
dFRpbWUgPiBtYXgobV9sYXN0U2Vla1RpbWUsIGxhc3RUaW1lKSAmJiBjdWVFbmRUaW1lIDwgbW92
aWVUaW1lKQorICAgICAgICAgICAgaWYgKGN1ZVN0YXJ0VGltZSA+IHN0ZDo6bWF4KG1fbGFzdFNl
ZWtUaW1lLCBsYXN0VGltZSkgJiYgY3VlRW5kVGltZSA8IG1vdmllVGltZSkKICAgICAgICAgICAg
ICAgICBtaXNzZWRDdWVzLmFwcGVuZChwb3RlbnRpYWxseVNraXBwZWRDdWVzW2ldKTsKICAgICAg
ICAgfQogICAgIH0KQEAgLTE1MjAsNyArMTUxNyw3IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6
dGV4dFRyYWNrQWRkQ3VlKFRleHRUcmFjayogdHJhY2ssIFBhc3NSZWZQdHI8VGV4dFRyYWNrQ3Vl
CiAKICAgICAvLyBOZWdhdGl2ZSBkdXJhdGlvbiBjdWVzIG5lZWQgYmUgdHJlYXRlZCBpbiB0aGUg
aW50ZXJ2YWwgdHJlZSBhcwogICAgIC8vIHplcm8tbGVuZ3RoIGN1ZXMuCi0gICAgZG91YmxlIGVu
ZFRpbWUgPSBtYXgoY3VlLT5zdGFydFRpbWUoKSwgY3VlLT5lbmRUaW1lKCkpOworICAgIGRvdWJs
ZSBlbmRUaW1lID0gc3RkOjptYXgoY3VlLT5zdGFydFRpbWUoKSwgY3VlLT5lbmRUaW1lKCkpOwog
CiAgICAgQ3VlSW50ZXJ2YWwgaW50ZXJ2YWwgPSBtX2N1ZVRyZWUuY3JlYXRlSW50ZXJ2YWwoY3Vl
LT5zdGFydFRpbWUoKSwgZW5kVGltZSwgY3VlLmdldCgpKTsKICAgICBpZiAoIW1fY3VlVHJlZS5j
b250YWlucyhpbnRlcnZhbCkpCkBAIC0xNTMyLDcgKzE1MjksNyBAQCB2b2lkIEhUTUxNZWRpYUVs
ZW1lbnQ6OnRleHRUcmFja1JlbW92ZUN1ZShUZXh0VHJhY2sqLCBQYXNzUmVmUHRyPFRleHRUcmFj
a0N1ZT4gYwogewogICAgIC8vIE5lZ2F0aXZlIGR1cmF0aW9uIGN1ZXMgbmVlZCB0byBiZSB0cmVh
dGVkIGluIHRoZSBpbnRlcnZhbCB0cmVlIGFzCiAgICAgLy8gemVyby1sZW5ndGggY3Vlcy4KLSAg
ICBkb3VibGUgZW5kVGltZSA9IG1heChjdWUtPnN0YXJ0VGltZSgpLCBjdWUtPmVuZFRpbWUoKSk7
CisgICAgZG91YmxlIGVuZFRpbWUgPSBzdGQ6Om1heChjdWUtPnN0YXJ0VGltZSgpLCBjdWUtPmVu
ZFRpbWUoKSk7CiAKICAgICBDdWVJbnRlcnZhbCBpbnRlcnZhbCA9IG1fY3VlVHJlZS5jcmVhdGVJ
bnRlcnZhbChjdWUtPnN0YXJ0VGltZSgpLCBlbmRUaW1lLCBjdWUuZ2V0KCkpOwogICAgIG1fY3Vl
VHJlZS5yZW1vdmUoaW50ZXJ2YWwpOwpAQCAtMjEwMyw3ICsyMTAwLDcgQEAgdm9pZCBIVE1MTWVk
aWFFbGVtZW50Ojpwcm9ncmVzc0V2ZW50VGltZXJGaXJlZChUaW1lcjxIVE1MTWVkaWFFbGVtZW50
PiopCiB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnJld2luZChkb3VibGUgdGltZURlbHRhKQogewog
ICAgIExPRyhNZWRpYSwgIkhUTUxNZWRpYUVsZW1lbnQ6OnJld2luZCglZikiLCB0aW1lRGVsdGEp
OwotICAgIHNldEN1cnJlbnRUaW1lKG1heChjdXJyZW50VGltZSgpIC0gdGltZURlbHRhLCBtaW5U
aW1lU2Vla2FibGUoKSksIElHTk9SRV9FWENFUFRJT04pOworICAgIHNldEN1cnJlbnRUaW1lKHN0
ZDo6bWF4KGN1cnJlbnRUaW1lKCkgLSB0aW1lRGVsdGEsIG1pblRpbWVTZWVrYWJsZSgpKSwgSUdO
T1JFX0VYQ0VQVElPTik7CiB9CiAKIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6cmV0dXJuVG9SZWFs
dGltZSgpCkBAIC0yMTcwLDExICsyMTY3LDExIEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6c2Vl
ayhkb3VibGUgdGltZSwgRXhjZXB0aW9uQ29kZSYgZWMpCiAKICAgICAvLyA1IC0gSWYgdGhlIG5l
dyBwbGF5YmFjayBwb3NpdGlvbiBpcyBsYXRlciB0aGFuIHRoZSBlbmQgb2YgdGhlIG1lZGlhIHJl
c291cmNlLCB0aGVuIGxldCBpdCBiZSB0aGUgZW5kIAogICAgIC8vIG9mIHRoZSBtZWRpYSByZXNv
dXJjZSBpbnN0ZWFkLgotICAgIHRpbWUgPSBtaW4odGltZSwgZHVyYXRpb24oKSk7CisgICAgdGlt
ZSA9IHN0ZDo6bWluKHRpbWUsIGR1cmF0aW9uKCkpOwogCiAgICAgLy8gNiAtIElmIHRoZSBuZXcg
cGxheWJhY2sgcG9zaXRpb24gaXMgbGVzcyB0aGFuIHRoZSBlYXJsaWVzdCBwb3NzaWJsZSBwb3Np
dGlvbiwgbGV0IGl0IGJlIHRoYXQgcG9zaXRpb24gaW5zdGVhZC4KICAgICBkb3VibGUgZWFybGll
c3RUaW1lID0gbV9wbGF5ZXItPnN0YXJ0VGltZSgpOwotICAgIHRpbWUgPSBtYXgodGltZSwgZWFy
bGllc3RUaW1lKTsKKyAgICB0aW1lID0gc3RkOjptYXgodGltZSwgZWFybGllc3RUaW1lKTsKIAog
ICAgIC8vIEFzayB0aGUgbWVkaWEgZW5naW5lIGZvciB0aGUgdGltZSB2YWx1ZSBpbiB0aGUgbW92
aWUncyB0aW1lIHNjYWxlIGJlZm9yZSBjb21wYXJpbmcgd2l0aCBjdXJyZW50IHRpbWUuIFRoaXMK
ICAgICAvLyBpcyBuZWNlc3NhcnkgYmVjYXVzZSBpZiB0aGUgc2VlayB0aW1lIGlzIG5vdCBlcXVh
bCB0byBjdXJyZW50VGltZSBidXQgdGhlIGRlbHRhIGlzIGxlc3MgdGhhbiB0aGUgbW92aWUncwpA
QCAtMjM3Nyw3ICsyMzc0LDcgQEAgZG91YmxlIEhUTUxNZWRpYUVsZW1lbnQ6OmR1cmF0aW9uKCkg
Y29uc3QKICAgICBpZiAobV9wbGF5ZXIgJiYgbV9yZWFkeVN0YXRlID49IEhBVkVfTUVUQURBVEEp
CiAgICAgICAgIHJldHVybiBtX3BsYXllci0+ZHVyYXRpb24oKTsKIAotICAgIHJldHVybiBudW1l
cmljX2xpbWl0czxkb3VibGU+OjpxdWlldF9OYU4oKTsKKyAgICByZXR1cm4gc3RkOjpudW1lcmlj
X2xpbWl0czxkb3VibGU+OjpxdWlldF9OYU4oKTsKIH0KIAogYm9vbCBIVE1MTWVkaWFFbGVtZW50
OjpwYXVzZWQoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MU2Vs
ZWN0RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxTZWxlY3RFbGVtZW50LmNw
cAppbmRleCBlYWE3NmM3YTNkOTk5MGNlMzY4ZmI5ZjZmMzZhZTUxNTI3NjBjN2M4Li4zM2NjMTYy
NTQ2MzBhNWY3ZjFjZmYxMjgzNzBiMzhlMzFhMTRkYTQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxTZWxlY3RFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxTZWxlY3RFbGVtZW50LmNwcApAQCAtNTUsNyArNTUsNiBAQAogI2luY2x1ZGUgIlNldHRp
bmdzLmgiCiAjaW5jbHVkZSAiU3BhdGlhbE5hdmlnYXRpb24uaCIKIAotdXNpbmcgbmFtZXNwYWNl
IHN0ZDsKIHVzaW5nIG5hbWVzcGFjZSBXVEY6OlVuaWNvZGU7CiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKQEAgLTMwNCw3ICszMDMsNyBAQCB2b2lkIEhUTUxTZWxlY3RFbGVtZW50OjpwYXJzZUF0dHJp
YnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lLCBjb25zdCBBdG9taWNTdAogICAgICAgICAg
ICAgaWYgKEF0dHJpYnV0ZSogc2l6ZUF0dHJpYnV0ZSA9IGVuc3VyZVVuaXF1ZUVsZW1lbnREYXRh
KCkuZmluZEF0dHJpYnV0ZUJ5TmFtZShzaXplQXR0cikpCiAgICAgICAgICAgICAgICAgc2l6ZUF0
dHJpYnV0ZS0+c2V0VmFsdWUoYXR0clNpemUpOwogICAgICAgICB9Ci0gICAgICAgIHNpemUgPSBt
YXgoc2l6ZSwgMSk7CisgICAgICAgIHNpemUgPSBzdGQ6Om1heChzaXplLCAxKTsKIAogICAgICAg
ICAvLyBFbnN1cmUgdGhhdCB3ZSd2ZSBkZXRlcm1pbmVkIHNlbGVjdGVkbmVzcyBvZiB0aGUgaXRl
bXMgYXQgbGVhc3Qgb25jZSBwcmlvciB0byBjaGFuZ2luZyB0aGUgc2l6ZS4KICAgICAgICAgaWYg
KG9sZFNpemUgIT0gc2l6ZSkKQEAgLTYyMSw4ICs2MjAsOCBAQCB2b2lkIEhUTUxTZWxlY3RFbGVt
ZW50Ojp1cGRhdGVMaXN0Qm94U2VsZWN0aW9uKGJvb2wgZGVzZWxlY3RPdGhlck9wdGlvbnMpCiAg
ICAgQVNTRVJUKHJlbmRlcmVyKCkgJiYgKHJlbmRlcmVyKCktPmlzTGlzdEJveCgpIHx8IG1fbXVs
dGlwbGUpKTsKICAgICBBU1NFUlQoIWxpc3RJdGVtcygpLnNpemUoKSB8fCBtX2FjdGl2ZVNlbGVj
dGlvbkFuY2hvckluZGV4ID49IDApOwogCi0gICAgdW5zaWduZWQgc3RhcnQgPSBtaW4obV9hY3Rp
dmVTZWxlY3Rpb25BbmNob3JJbmRleCwgbV9hY3RpdmVTZWxlY3Rpb25FbmRJbmRleCk7Ci0gICAg
dW5zaWduZWQgZW5kID0gbWF4KG1fYWN0aXZlU2VsZWN0aW9uQW5jaG9ySW5kZXgsIG1fYWN0aXZl
U2VsZWN0aW9uRW5kSW5kZXgpOworICAgIHVuc2lnbmVkIHN0YXJ0ID0gc3RkOjptaW4obV9hY3Rp
dmVTZWxlY3Rpb25BbmNob3JJbmRleCwgbV9hY3RpdmVTZWxlY3Rpb25FbmRJbmRleCk7CisgICAg
dW5zaWduZWQgZW5kID0gc3RkOjptYXgobV9hY3RpdmVTZWxlY3Rpb25BbmNob3JJbmRleCwgbV9h
Y3RpdmVTZWxlY3Rpb25FbmRJbmRleCk7CiAKICAgICBjb25zdCBWZWN0b3I8SFRNTEVsZW1lbnQq
PiYgaXRlbXMgPSBsaXN0SXRlbXMoKTsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgaXRl
bXMuc2l6ZSgpOyArK2kpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFNv
dXJjZUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MU291cmNlRWxlbWVudC5j
cHAKaW5kZXggOTJkNjk1NjNlODM4NGFiNWJjNTFkNzQyMDBjZGUyMWVjODFmNmE4My4uZmEwZDI0
ZDYwMjJhOGRjMjI4YzA3ZGFjYTg4NzM2M2NlM2QzYmNmZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MU291cmNlRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MU291cmNlRWxlbWVudC5jcHAKQEAgLTM0LDggKzM0LDYgQEAKICNpbmNsdWRlICJIVE1M
TmFtZXMuaCIKICNpbmNsdWRlICJMb2dnaW5nLmgiCiAKLXVzaW5nIG5hbWVzcGFjZSBzdGQ7Ci0K
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogdXNpbmcgbmFtZXNwYWNlIEhUTUxOYW1lczsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRhYmxlQ2VsbEVsZW1lbnQuY3BwIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGFibGVDZWxsRWxlbWVudC5jcHAKaW5kZXggMDM0NTFlODQ5
ZjNkZTRiM2NjYzc0ZjY3YjExODhlMTU4NjJlNDZlNy4uOTFmZDExNTZhYTNkNjRlNTcwYjI1YWRh
ZjA0NDk4ZmJhM2JhYzdlYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGFi
bGVDZWxsRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGFibGVDZWxs
RWxlbWVudC5jcHAKQEAgLTMyLDkgKzMyLDYgQEAKICNpbmNsdWRlICJIVE1MVGFibGVFbGVtZW50
LmgiCiAjaW5jbHVkZSAiUmVuZGVyVGFibGVDZWxsLmgiCiAKLXVzaW5nIHN0ZDo6bWF4OwotdXNp
bmcgc3RkOjptaW47Ci0KIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogLy8gQ2xhbXAgcm93c3BhbiBh
dCA4ayB0byBtYXRjaCBGaXJlZm94LgpAQCAtNTUsMTMgKzUyLDEzIEBAIFBhc3NSZWZQdHI8SFRN
TFRhYmxlQ2VsbEVsZW1lbnQ+IEhUTUxUYWJsZUNlbGxFbGVtZW50OjpjcmVhdGUoY29uc3QgUXVh
bGlmaWVkTmFtCiBpbnQgSFRNTFRhYmxlQ2VsbEVsZW1lbnQ6OmNvbFNwYW4oKSBjb25zdAogewog
ICAgIGNvbnN0IEF0b21pY1N0cmluZyYgY29sU3BhblZhbHVlID0gZmFzdEdldEF0dHJpYnV0ZShj
b2xzcGFuQXR0cik7Ci0gICAgcmV0dXJuIG1heCgxLCBjb2xTcGFuVmFsdWUudG9JbnQoKSk7Cisg
ICAgcmV0dXJuIHN0ZDo6bWF4KDEsIGNvbFNwYW5WYWx1ZS50b0ludCgpKTsKIH0KIAogaW50IEhU
TUxUYWJsZUNlbGxFbGVtZW50Ojpyb3dTcGFuKCkgY29uc3QKIHsKICAgICBjb25zdCBBdG9taWNT
dHJpbmcmIHJvd1NwYW5WYWx1ZSA9IGZhc3RHZXRBdHRyaWJ1dGUocm93c3BhbkF0dHIpOwotICAg
IHJldHVybiBtYXgoMSwgbWluKHJvd1NwYW5WYWx1ZS50b0ludCgpLCBtYXhSb3dzcGFuKSk7Cisg
ICAgcmV0dXJuIHN0ZDo6bWF4KDEsIHN0ZDo6bWluKHJvd1NwYW5WYWx1ZS50b0ludCgpLCBtYXhS
b3dzcGFuKSk7CiB9CiAKIGludCBIVE1MVGFibGVDZWxsRWxlbWVudDo6Y2VsbEluZGV4KCkgY29u
c3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRhYmxlRWxlbWVudC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUYWJsZUVsZW1lbnQuY3BwCmluZGV4IDk3YjNiMDgz
OTBmNjY5ODA2YjE2ZTRkNDY4NTVkMzY4OWI2MTViODguLjQ1YWQ3NzQ2MmE1ZjlhZTc1NzMyNmYw
MTE3MjkwMzdhNTFjOWQ0YzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRh
YmxlRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGFibGVFbGVtZW50
LmNwcApAQCAtMzk0LDcgKzM5NCw3IEBAIHZvaWQgSFRNTFRhYmxlRWxlbWVudDo6cGFyc2VBdHRy
aWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwgY29uc3QgQXRvbWljU3RyCiAgICAgICAg
ICAgICBtX3J1bGVzQXR0ciA9IEFsbFJ1bGVzOwogICAgIH0gZWxzZSBpZiAobmFtZSA9PSBjZWxs
cGFkZGluZ0F0dHIpIHsKICAgICAgICAgaWYgKCF2YWx1ZS5pc0VtcHR5KCkpCi0gICAgICAgICAg
ICBtX3BhZGRpbmcgPSBtYXgoMCwgdmFsdWUudG9JbnQoKSk7CisgICAgICAgICAgICBtX3BhZGRp
bmcgPSBzdGQ6Om1heCgwLCB2YWx1ZS50b0ludCgpKTsKICAgICAgICAgZWxzZQogICAgICAgICAg
ICAgbV9wYWRkaW5nID0gMTsKICAgICB9IGVsc2UgaWYgKG5hbWUgPT0gY29sc0F0dHIpIHsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudC5jcHAK
aW5kZXggZjI1N2I2YmZhN2U4YWY1ZDkwYjgyM2JmMDhmYmQyZDMxNzhjMjFhMS4uYzc3NzBkMzVk
Y2QzM2E4MTY3M2I3ZjljY2RjODU0MDQ0ZjgyYzg4NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudC5jcHAKQEAgLTUxLDcgKzUxLDYgQEAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogdXNpbmcgbmFtZXNwYWNlIEhUTUxOYW1lczsKLXVzaW5n
IG5hbWVzcGFjZSBzdGQ7CiAKIEhUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50OjpIVE1MVGV4dEZv
cm1Db250cm9sRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCYg
ZG9jdW1lbnQsIEhUTUxGb3JtRWxlbWVudCogZm9ybSkKICAgICA6IEhUTUxGb3JtQ29udHJvbEVs
ZW1lbnRXaXRoU3RhdGUodGFnTmFtZSwgZG9jdW1lbnQsIGZvcm0pCkBAIC0xNzEsMTIgKzE3MCwx
MiBAQCB2b2lkIEhUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50Ojp1cGRhdGVQbGFjZWhvbGRlclZp
c2liaWxpdHkoYm9vbCBwbGFjZWhvbGRlclZhbAogCiB2b2lkIEhUTUxUZXh0Rm9ybUNvbnRyb2xF
bGVtZW50OjpzZXRTZWxlY3Rpb25TdGFydChpbnQgc3RhcnQpCiB7Ci0gICAgc2V0U2VsZWN0aW9u
UmFuZ2Uoc3RhcnQsIG1heChzdGFydCwgc2VsZWN0aW9uRW5kKCkpLCBzZWxlY3Rpb25EaXJlY3Rp
b24oKSk7CisgICAgc2V0U2VsZWN0aW9uUmFuZ2Uoc3RhcnQsIHN0ZDo6bWF4KHN0YXJ0LCBzZWxl
Y3Rpb25FbmQoKSksIHNlbGVjdGlvbkRpcmVjdGlvbigpKTsKIH0KIAogdm9pZCBIVE1MVGV4dEZv
cm1Db250cm9sRWxlbWVudDo6c2V0U2VsZWN0aW9uRW5kKGludCBlbmQpCiB7Ci0gICAgc2V0U2Vs
ZWN0aW9uUmFuZ2UobWluKGVuZCwgc2VsZWN0aW9uU3RhcnQoKSksIGVuZCwgc2VsZWN0aW9uRGly
ZWN0aW9uKCkpOworICAgIHNldFNlbGVjdGlvblJhbmdlKHN0ZDo6bWluKGVuZCwgc2VsZWN0aW9u
U3RhcnQoKSksIGVuZCwgc2VsZWN0aW9uRGlyZWN0aW9uKCkpOwogfQogCiB2b2lkIEhUTUxUZXh0
Rm9ybUNvbnRyb2xFbGVtZW50OjpzZXRTZWxlY3Rpb25EaXJlY3Rpb24oY29uc3QgU3RyaW5nJiBk
aXJlY3Rpb24pCkBAIC0xODYsNyArMTg1LDcgQEAgdm9pZCBIVE1MVGV4dEZvcm1Db250cm9sRWxl
bWVudDo6c2V0U2VsZWN0aW9uRGlyZWN0aW9uKGNvbnN0IFN0cmluZyYgZGlyZWN0aW9uKQogCiB2
b2lkIEhUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50OjpzZWxlY3QoKQogewotICAgIHNldFNlbGVj
dGlvblJhbmdlKDAsIG51bWVyaWNfbGltaXRzPGludD46Om1heCgpLCBTZWxlY3Rpb25IYXNOb0Rp
cmVjdGlvbik7CisgICAgc2V0U2VsZWN0aW9uUmFuZ2UoMCwgc3RkOjpudW1lcmljX2xpbWl0czxp
bnQ+OjptYXgoKSwgU2VsZWN0aW9uSGFzTm9EaXJlY3Rpb24pOwogfQogCiBTdHJpbmcgSFRNTFRl
eHRGb3JtQ29udHJvbEVsZW1lbnQ6OnNlbGVjdGVkVGV4dCgpIGNvbnN0CkBAIC0yODcsOCArMjg2
LDggQEAgdm9pZCBIVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudDo6c2V0U2VsZWN0aW9uUmFuZ2Uo
aW50IHN0YXJ0LCBpbnQgZW5kLCBUZXh0RmllbGQKICAgICBpZiAoIXJlbmRlcmVyKCkgfHwgIXJl
bmRlcmVyKCktPmlzVGV4dENvbnRyb2woKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgZW5kID0g
bWF4KGVuZCwgMCk7Ci0gICAgc3RhcnQgPSBtaW4obWF4KHN0YXJ0LCAwKSwgZW5kKTsKKyAgICBl
bmQgPSBzdGQ6Om1heChlbmQsIDApOworICAgIHN0YXJ0ID0gc3RkOjptaW4oc3RkOjptYXgoc3Rh
cnQsIDApLCBlbmQpOwogCiAgICAgaWYgKCFoYXNWaXNpYmxlVGV4dEFyZWEoKnJlbmRlcmVyKCks
IGlubmVyVGV4dEVsZW1lbnQoKSkpIHsKICAgICAgICAgY2FjaGVTZWxlY3Rpb24oc3RhcnQsIGVu
ZCwgZGlyZWN0aW9uKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRyYWNr
RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUcmFja0VsZW1lbnQuY3BwCmlu
ZGV4IDIyMTI5OTAwMGJhZGQ1MzU5Y2Y0ZDQ4OWVkZmIwNzBkM2E4OGZkZGIuLjhjOWI3NThmM2Jh
ZmEwMzdhOWZjYjc5MDk5MWQ2YzdhYTYzOWUzODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTFRyYWNrRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
VHJhY2tFbGVtZW50LmNwcApAQCAtMzQsOCArMzQsNiBAQAogI2luY2x1ZGUgIkxvZ2dpbmcuaCIK
ICNpbmNsdWRlICJSdW50aW1lRW5hYmxlZEZlYXR1cmVzLmgiCiAKLXVzaW5nIG5hbWVzcGFjZSBz
dGQ7Ci0KIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogdXNpbmcgbmFtZXNwYWNlIEhUTUxOYW1lczsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW1hZ2VEb2N1bWVudC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0ltYWdlRG9jdW1lbnQuY3BwCmluZGV4IDg1NGM0NzFhYzFiODNlNmI5
MzNlZDk1ZTBmYzIzMDY0YTY3NThhYWUuLmU1MTg2MDZhNzk1MDIzNzE5ZmUwMGM3ODU1YWVhODQ5
OGQ2NjQwMzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW1hZ2VEb2N1bWVudC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9JbWFnZURvY3VtZW50LmNwcApAQCAtNDYsOCAr
NDYsNiBAQAogI2luY2x1ZGUgIlJlc291cmNlQnVmZmVyLmgiCiAjaW5jbHVkZSAiU2V0dGluZ3Mu
aCIKIAotdXNpbmcgc3RkOjptaW47Ci0KIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogdXNpbmcgbmFt
ZXNwYWNlIEhUTUxOYW1lczsKQEAgLTI0MSw3ICsyMzksNyBAQCBmbG9hdCBJbWFnZURvY3VtZW50
OjpzY2FsZSgpIGNvbnN0CiAgICAgZmxvYXQgd2lkdGhTY2FsZSA9IChmbG9hdCl3aW5kb3dTaXpl
LndpZHRoKCkgLyBpbWFnZVNpemUud2lkdGgoKTsKICAgICBmbG9hdCBoZWlnaHRTY2FsZSA9IChm
bG9hdCl3aW5kb3dTaXplLmhlaWdodCgpIC8gaW1hZ2VTaXplLmhlaWdodCgpOwogCi0gICAgcmV0
dXJuIG1pbih3aWR0aFNjYWxlLCBoZWlnaHRTY2FsZSk7CisgICAgcmV0dXJuIHN0ZDo6bWluKHdp
ZHRoU2NhbGUsIGhlaWdodFNjYWxlKTsKIH0KIAogdm9pZCBJbWFnZURvY3VtZW50OjpyZXNpemVJ
bWFnZVRvRml0KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW5wdXRUeXBlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW5wdXRUeXBlLmNwcAppbmRleCA5MDA3OGJiYzk4Mzg5
ZDg5ZDA1NWUzZjYyYjY5MDUwNGE0ZjFlMTFhLi5lZDM0NDNhNWMxYzM0MmZjNmNlNzM4OTcwOTM3
ZDZkNWI1NGQ4MWNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0lucHV0VHlwZS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9JbnB1dFR5cGUuY3BwCkBAIC04Miw3ICs4Miw2
IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHVzaW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7Ci11
c2luZyBuYW1lc3BhY2Ugc3RkOwogCiB0eXBlZGVmIE93blB0cjxJbnB1dFR5cGU+ICgqSW5wdXRU
eXBlRmFjdG9yeUZ1bmN0aW9uKShIVE1MSW5wdXRFbGVtZW50Jik7CiB0eXBlZGVmIEhhc2hNYXA8
QXRvbWljU3RyaW5nLCBJbnB1dFR5cGVGYWN0b3J5RnVuY3Rpb24sIENhc2VGb2xkaW5nSGFzaD4g
SW5wdXRUeXBlRmFjdG9yeU1hcDsKQEAgLTIyMyw3ICsyMjIsNyBAQCB2b2lkIElucHV0VHlwZTo6
c2V0VmFsdWVBc0RhdGUoZG91YmxlLCBFeGNlcHRpb25Db2RlJiBlYykgY29uc3QKIAogZG91Ymxl
IElucHV0VHlwZTo6dmFsdWVBc0RvdWJsZSgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG51bWVyaWNf
bGltaXRzPGRvdWJsZT46OnF1aWV0X05hTigpOworICAgIHJldHVybiBzdGQ6Om51bWVyaWNfbGlt
aXRzPGRvdWJsZT46OnF1aWV0X05hTigpOwogfQogCiB2b2lkIElucHV0VHlwZTo6c2V0VmFsdWVB
c0RvdWJsZShkb3VibGUgZG91YmxlVmFsdWUsIFRleHRGaWVsZEV2ZW50QmVoYXZpb3IgZXZlbnRC
ZWhhdmlvciwgRXhjZXB0aW9uQ29kZSYgZWMpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL01lZGlhQ29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL01lZGlh
Q29udHJvbGxlci5jcHAKaW5kZXggMjdkOGUzYTkyMmFlMzM3YjQ4Mzg3NzE3MjE2YTBlMzM4N2Zm
MjZjOS4uMjQ2ZDMxNGYzN2U2ZDg5YmI1ZjYyMjAyYTBkYWJkNjYxYjdhYzNiMyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9NZWRpYUNvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvTWVkaWFDb250cm9sbGVyLmNwcApAQCAtMzcsNyArMzcsNiBAQAogI2luY2x1
ZGUgPHd0Zi90ZXh0L0F0b21pY1N0cmluZy5oPgogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsK
LXVzaW5nIG5hbWVzcGFjZSBzdGQ7CiAKIFBhc3NSZWZQdHI8TWVkaWFDb250cm9sbGVyPiBNZWRp
YUNvbnRyb2xsZXI6OmNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0KQogewpA
QCAtMTM4LDcgKzEzNyw3IEBAIGRvdWJsZSBNZWRpYUNvbnRyb2xsZXI6OmR1cmF0aW9uKCkgY29u
c3QKICAgICAgICAgZG91YmxlIGR1cmF0aW9uID0gbV9tZWRpYUVsZW1lbnRzW2luZGV4XS0+ZHVy
YXRpb24oKTsKICAgICAgICAgaWYgKHN0ZDo6aXNuYW4oZHVyYXRpb24pKQogICAgICAgICAgICAg
Y29udGludWU7Ci0gICAgICAgIG1heER1cmF0aW9uID0gbWF4KG1heER1cmF0aW9uLCBkdXJhdGlv
bik7CisgICAgICAgIG1heER1cmF0aW9uID0gc3RkOjptYXgobWF4RHVyYXRpb24sIGR1cmF0aW9u
KTsKICAgICB9CiAgICAgcmV0dXJuIG1heER1cmF0aW9uOwogfQpAQCAtMTUwLDcgKzE0OSw3IEBA
IGRvdWJsZSBNZWRpYUNvbnRyb2xsZXI6OmN1cnJlbnRUaW1lKCkgY29uc3QKIAogICAgIGlmICht
X3Bvc2l0aW9uID09IE1lZGlhUGxheWVyOjppbnZhbGlkVGltZSgpKSB7CiAgICAgICAgIC8vIFNv
bWUgY2xvY2tzIG1heSByZXR1cm4gdGltZXMgb3V0c2lkZSB0aGUgcmFuZ2Ugb2YgWzAuLmR1cmF0
aW9uXS4KLSAgICAgICAgbV9wb3NpdGlvbiA9IG1heCgwLjAsIG1pbihkdXJhdGlvbigpLCBtX2Ns
b2NrLT5jdXJyZW50VGltZSgpKSk7CisgICAgICAgIG1fcG9zaXRpb24gPSBzdGQ6Om1heDxkb3Vi
bGU+KDAsIHN0ZDo6bWluKGR1cmF0aW9uKCksIG1fY2xvY2stPmN1cnJlbnRUaW1lKCkpKTsKICAg
ICAgICAgbV9jbGVhclBvc2l0aW9uVGltZXIuc3RhcnRPbmVTaG90KDApOwogICAgIH0KIApAQCAt
MTYyLDExICsxNjEsMTEgQEAgdm9pZCBNZWRpYUNvbnRyb2xsZXI6OnNldEN1cnJlbnRUaW1lKGRv
dWJsZSB0aW1lLCBFeGNlcHRpb25Db2RlJiBjb2RlKQogICAgIC8vIFdoZW4gdGhlIHVzZXIgYWdl
bnQgaXMgdG8gc2VlayB0aGUgbWVkaWEgY29udHJvbGxlciB0byBhIHBhcnRpY3VsYXIgbmV3IHBs
YXliYWNrIHBvc2l0aW9uLCAKICAgICAvLyBpdCBtdXN0IGZvbGxvdyB0aGVzZSBzdGVwczoKICAg
ICAvLyBJZiB0aGUgbmV3IHBsYXliYWNrIHBvc2l0aW9uIGlzIGxlc3MgdGhhbiB6ZXJvLCB0aGVu
IHNldCBpdCB0byB6ZXJvLgotICAgIHRpbWUgPSBtYXgoMC4wLCB0aW1lKTsKKyAgICB0aW1lID0g
c3RkOjptYXgoMC4wLCB0aW1lKTsKICAgICAKICAgICAvLyBJZiB0aGUgbmV3IHBsYXliYWNrIHBv
c2l0aW9uIGlzIGdyZWF0ZXIgdGhhbiB0aGUgbWVkaWEgY29udHJvbGxlciBkdXJhdGlvbiwgdGhl
biBzZXQgaXQgCiAgICAgLy8gdG8gdGhlIG1lZGlhIGNvbnRyb2xsZXIgZHVyYXRpb24uCi0gICAg
dGltZSA9IG1pbih0aW1lLCBkdXJhdGlvbigpKTsKKyAgICB0aW1lID0gc3RkOjptaW4odGltZSwg
ZHVyYXRpb24oKSk7CiAgICAgCiAgICAgLy8gU2V0IHRoZSBtZWRpYSBjb250cm9sbGVyIHBvc2l0
aW9uIHRvIHRoZSBuZXcgcGxheWJhY2sgcG9zaXRpb24uCiAgICAgbV9jbG9jay0+c2V0Q3VycmVu
dFRpbWUodGltZSk7CkBAIC0zNjAsNyArMzU5LDcgQEAgdm9pZCBNZWRpYUNvbnRyb2xsZXI6OnVw
ZGF0ZVJlYWR5U3RhdGUoKQogICAgICAgICAvLyBzbGF2ZWQgbWVkaWEgZWxlbWVudHMuCiAgICAg
ICAgIG5ld1JlYWR5U3RhdGUgPSBtX21lZGlhRWxlbWVudHMuZmlyc3QoKS0+cmVhZHlTdGF0ZSgp
OwogICAgICAgICBmb3IgKHNpemVfdCBpbmRleCA9IDE7IGluZGV4IDwgbV9tZWRpYUVsZW1lbnRz
LnNpemUoKTsgKytpbmRleCkKLSAgICAgICAgICAgIG5ld1JlYWR5U3RhdGUgPSBtaW4obmV3UmVh
ZHlTdGF0ZSwgbV9tZWRpYUVsZW1lbnRzW2luZGV4XS0+cmVhZHlTdGF0ZSgpKTsKKyAgICAgICAg
ICAgIG5ld1JlYWR5U3RhdGUgPSBzdGQ6Om1pbihuZXdSZWFkeVN0YXRlLCBtX21lZGlhRWxlbWVu
dHNbaW5kZXhdLT5yZWFkeVN0YXRlKCkpOwogICAgIH0KIAogICAgIGlmIChuZXdSZWFkeVN0YXRl
ID09IG9sZFJlYWR5U3RhdGUpIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9OdW1i
ZXJJbnB1dFR5cGUuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9OdW1iZXJJbnB1dFR5cGUuY3Bw
CmluZGV4IDZmNTVkZmI5YzAyNDM5NmVkODI5MDAwMzI0ZWYyYzlmZjRhYmFhMzguLjJmMzAyZjJj
YTNjMjI3MzU0NmViOTIxMWY2ODFlODhjZjljZTNlYTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvTnVtYmVySW5wdXRUeXBlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL051
bWJlcklucHV0VHlwZS5jcHAKQEAgLTQ5LDcgKzQ5LDYgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAogdXNpbmcgbmFtZXNwYWNlIEhUTUxOYW1lczsKLXVzaW5nIG5hbWVzcGFjZSBzdGQ7CiAKIHN0
YXRpYyBjb25zdCBpbnQgbnVtYmVyRGVmYXVsdFN0ZXAgPSAxOwogc3RhdGljIGNvbnN0IGludCBu
dW1iZXJEZWZhdWx0U3RlcEJhc2UgPSAwOwpAQCAtMTI1LDcgKzEyNCw3IEBAIGRvdWJsZSBOdW1i
ZXJJbnB1dFR5cGU6OnZhbHVlQXNEb3VibGUoKSBjb25zdAogdm9pZCBOdW1iZXJJbnB1dFR5cGU6
OnNldFZhbHVlQXNEb3VibGUoZG91YmxlIG5ld1ZhbHVlLCBUZXh0RmllbGRFdmVudEJlaGF2aW9y
IGV2ZW50QmVoYXZpb3IsIEV4Y2VwdGlvbkNvZGUmIGVjKSBjb25zdAogewogICAgIC8vIEZJWE1F
OiBXZSBzaG91bGQgdXNlIG51bWVyaWNfbGltaXRzPGRvdWJsZT46Om1heCBmb3IgbnVtYmVyIGlu
cHV0IHR5cGUuCi0gICAgY29uc3QgZG91YmxlIGZsb2F0TWF4ID0gbnVtZXJpY19saW1pdHM8Zmxv
YXQ+OjptYXgoKTsKKyAgICBjb25zdCBkb3VibGUgZmxvYXRNYXggPSBzdGQ6Om51bWVyaWNfbGlt
aXRzPGZsb2F0Pjo6bWF4KCk7CiAgICAgaWYgKG5ld1ZhbHVlIDwgLWZsb2F0TWF4KSB7CiAgICAg
ICAgIGVjID0gSU5WQUxJRF9TVEFURV9FUlI7CiAgICAgICAgIHJldHVybjsKQEAgLTE0MCw3ICsx
MzksNyBAQCB2b2lkIE51bWJlcklucHV0VHlwZTo6c2V0VmFsdWVBc0RvdWJsZShkb3VibGUgbmV3
VmFsdWUsIFRleHRGaWVsZEV2ZW50QmVoYXZpb3IgZQogdm9pZCBOdW1iZXJJbnB1dFR5cGU6OnNl
dFZhbHVlQXNEZWNpbWFsKGNvbnN0IERlY2ltYWwmIG5ld1ZhbHVlLCBUZXh0RmllbGRFdmVudEJl
aGF2aW9yIGV2ZW50QmVoYXZpb3IsIEV4Y2VwdGlvbkNvZGUmIGVjKSBjb25zdAogewogICAgIC8v
IEZJWE1FOiBXZSBzaG91bGQgdXNlIG51bWVyaWNfbGltaXRzPGRvdWJsZT46Om1heCBmb3IgbnVt
YmVyIGlucHV0IHR5cGUuCi0gICAgY29uc3QgRGVjaW1hbCBmbG9hdE1heCA9IERlY2ltYWw6OmZy
b21Eb3VibGUobnVtZXJpY19saW1pdHM8ZmxvYXQ+OjptYXgoKSk7CisgICAgY29uc3QgRGVjaW1h
bCBmbG9hdE1heCA9IERlY2ltYWw6OmZyb21Eb3VibGUoc3RkOjpudW1lcmljX2xpbWl0czxmbG9h
dD46Om1heCgpKTsKICAgICBpZiAobmV3VmFsdWUgPCAtZmxvYXRNYXgpIHsKICAgICAgICAgZWMg
PSBJTlZBTElEX1NUQVRFX0VSUjsKICAgICAgICAgcmV0dXJuOwpAQCAtMTY4LDcgKzE2Nyw3IEBA
IFN0ZXBSYW5nZSBOdW1iZXJJbnB1dFR5cGU6OmNyZWF0ZVN0ZXBSYW5nZShBbnlTdGVwSGFuZGxp
bmcgYW55U3RlcEhhbmRsaW5nKSBjb25zCiAgICAgREVGSU5FX1NUQVRJQ19MT0NBTChjb25zdCBT
dGVwUmFuZ2U6OlN0ZXBEZXNjcmlwdGlvbiwgc3RlcERlc2NyaXB0aW9uLCAobnVtYmVyRGVmYXVs
dFN0ZXAsIG51bWJlckRlZmF1bHRTdGVwQmFzZSwgbnVtYmVyU3RlcFNjYWxlRmFjdG9yKSk7CiAg
ICAgY29uc3QgRGVjaW1hbCBzdGVwQmFzZSA9IHBhcnNlVG9EZWNpbWFsRm9yTnVtYmVyVHlwZShl
bGVtZW50KCkuZmFzdEdldEF0dHJpYnV0ZShtaW5BdHRyKSwgbnVtYmVyRGVmYXVsdFN0ZXBCYXNl
KTsKICAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIHVzZSBudW1lcmljX2xpbWl0czxkb3VibGU+Ojpt
YXggZm9yIG51bWJlciBpbnB1dCB0eXBlLgotICAgIGNvbnN0IERlY2ltYWwgZmxvYXRNYXggPSBE
ZWNpbWFsOjpmcm9tRG91YmxlKG51bWVyaWNfbGltaXRzPGZsb2F0Pjo6bWF4KCkpOworICAgIGNv
bnN0IERlY2ltYWwgZmxvYXRNYXggPSBEZWNpbWFsOjpmcm9tRG91YmxlKHN0ZDo6bnVtZXJpY19s
aW1pdHM8ZmxvYXQ+OjptYXgoKSk7CiAgICAgY29uc3QgRGVjaW1hbCBtaW5pbXVtID0gcGFyc2VU
b051bWJlcihlbGVtZW50KCkuZmFzdEdldEF0dHJpYnV0ZShtaW5BdHRyKSwgLWZsb2F0TWF4KTsK
ICAgICBjb25zdCBEZWNpbWFsIG1heGltdW0gPSBwYXJzZVRvTnVtYmVyKGVsZW1lbnQoKS5mYXN0
R2V0QXR0cmlidXRlKG1heEF0dHIpLCBmbG9hdE1heCk7CiAgICAgY29uc3QgRGVjaW1hbCBzdGVw
ID0gU3RlcFJhbmdlOjpwYXJzZVN0ZXAoYW55U3RlcEhhbmRsaW5nLCBzdGVwRGVzY3JpcHRpb24s
IGVsZW1lbnQoKS5mYXN0R2V0QXR0cmlidXRlKHN0ZXBBdHRyKSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL1JhbmdlSW5wdXRUeXBlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
UmFuZ2VJbnB1dFR5cGUuY3BwCmluZGV4IDgwYjNiNjUxNDlkOWRkNThiNWE1ZTI1Y2QwMjk1MGU5
OTg0M2FmYTIuLjk5ZjBiODYxNjFmMzM1MmM0ZDFjNmRhNDUyMTNmZTllZjg3ZDcwNzAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvUmFuZ2VJbnB1dFR5cGUuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvUmFuZ2VJbnB1dFR5cGUuY3BwCkBAIC02NSw3ICs2NSw2IEBACiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKIHVzaW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7Ci11c2luZyBuYW1l
c3BhY2Ugc3RkOwogCiBzdGF0aWMgY29uc3QgaW50IHJhbmdlRGVmYXVsdE1pbmltdW0gPSAwOwog
c3RhdGljIGNvbnN0IGludCByYW5nZURlZmF1bHRNYXhpbXVtID0gMTAwOwpAQCAtMjA3LDcgKzIw
Niw3IEBAIHZvaWQgUmFuZ2VJbnB1dFR5cGU6OmhhbmRsZUtleWRvd25FdmVudChLZXlib2FyZEV2
ZW50KiBldmVudCkKICAgICAvLyBGSVhNRTogV2UgY2FuJ3QgdXNlIHN0ZXBVcCgpIGZvciB0aGUg
c3RlcCB2YWx1ZSAiYW55Ii4gU28sIHdlIGluY3JlYXNlCiAgICAgLy8gb3IgZGVjcmVhc2UgdGhl
IHZhbHVlIGJ5IDEvMTAwIG9mIHRoZSB2YWx1ZSByYW5nZS4gSXMgaXQgcmVhc29uYWJsZT8KICAg
ICBjb25zdCBEZWNpbWFsIHN0ZXAgPSBlcXVhbElnbm9yaW5nQ2FzZShlbGVtZW50KCkuZmFzdEdl
dEF0dHJpYnV0ZShzdGVwQXR0ciksICJhbnkiKSA/IChzdGVwUmFuZ2UubWF4aW11bSgpIC0gc3Rl
cFJhbmdlLm1pbmltdW0oKSkgLyAxMDAgOiBzdGVwUmFuZ2Uuc3RlcCgpOwotICAgIGNvbnN0IERl
Y2ltYWwgYmlnU3RlcCA9IG1heCgoc3RlcFJhbmdlLm1heGltdW0oKSAtIHN0ZXBSYW5nZS5taW5p
bXVtKCkpIC8gMTAsIHN0ZXApOworICAgIGNvbnN0IERlY2ltYWwgYmlnU3RlcCA9IHN0ZDo6bWF4
KChzdGVwUmFuZ2UubWF4aW11bSgpIC0gc3RlcFJhbmdlLm1pbmltdW0oKSkgLyAxMCwgc3RlcCk7
CiAKICAgICBib29sIGlzVmVydGljYWwgPSBmYWxzZTsKICAgICBpZiAoZWxlbWVudCgpLnJlbmRl
cmVyKCkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvU2VhcmNoSW5wdXRUeXBl
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvU2VhcmNoSW5wdXRUeXBlLmNwcAppbmRleCBmYzhk
ZDc2ZTFkMWU2YTBiMDFiZWVhNjhlNGViZmM0ZDcyODY5MGVlLi44Mjk2NjQ3ZGQ4NDI4MTJmNjcx
ZDZlYmY5YjY1Y2FlMzA2MjUxZGRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL1Nl
YXJjaElucHV0VHlwZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9TZWFyY2hJbnB1dFR5
cGUuY3BwCkBAIC0xNjIsNyArMTYyLDcgQEAgdm9pZCBTZWFyY2hJbnB1dFR5cGU6OnN0YXJ0U2Vh
cmNoRXZlbnRUaW1lcigpCiAKICAgICAvLyBBZnRlciB0eXBpbmcgdGhlIGZpcnN0IGtleSwgd2Ug
d2FpdCAwLjUgc2Vjb25kcy4KICAgICAvLyBBZnRlciB0aGUgc2Vjb25kIGtleSwgMC40IHNlY29u
ZHMsIHRoZW4gMC4zLCB0aGVuIDAuMiBmcm9tIHRoZW4gb24uCi0gICAgbV9zZWFyY2hFdmVudFRp
bWVyLnN0YXJ0T25lU2hvdChtYXgoMC4yLCAwLjYgLSAwLjEgKiBsZW5ndGgpKTsKKyAgICBtX3Nl
YXJjaEV2ZW50VGltZXIuc3RhcnRPbmVTaG90KHN0ZDo6bWF4KDAuMiwgMC42IC0gMC4xICogbGVu
Z3RoKSk7CiB9CiAKIHZvaWQgU2VhcmNoSW5wdXRUeXBlOjpzdG9wU2VhcmNoRXZlbnRUaW1lcigp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL1N0ZXBSYW5nZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL1N0ZXBSYW5nZS5jcHAKaW5kZXggNGQwMDQyZjI0MWZjOTVkNmFjYmQ3NDEy
NjhmNmQ1MzdjMmRkZGIwOS4uYmYyMzRlZDU0MmYyMGU0NDM1MzhlZGY5ZGRiMzgwMzBmMDI1ZWI4
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9TdGVwUmFuZ2UuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvU3RlcFJhbmdlLmNwcApAQCAtMjYsOCArMjYsNiBAQAogI2luY2x1
ZGUgPHd0Zi9NYXRoRXh0cmFzLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAK
LXVzaW5nIG5hbWVzcGFjZSBzdGQ7Ci0KIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogdXNpbmcgbmFt
ZXNwYWNlIEhUTUxOYW1lczsKQEAgLTgzLDcgKzgxLDcgQEAgRGVjaW1hbCBTdGVwUmFuZ2U6OmFs
aWduVmFsdWVGb3JTdGVwKGNvbnN0IERlY2ltYWwmIGN1cnJlbnRWYWx1ZSwgY29uc3QgRGVjaW1h
bCYKIAogRGVjaW1hbCBTdGVwUmFuZ2U6OmNsYW1wVmFsdWUoY29uc3QgRGVjaW1hbCYgdmFsdWUp
IGNvbnN0CiB7Ci0gICAgY29uc3QgRGVjaW1hbCBpblJhbmdlVmFsdWUgPSBtYXgobV9taW5pbXVt
LCBtaW4odmFsdWUsIG1fbWF4aW11bSkpOworICAgIGNvbnN0IERlY2ltYWwgaW5SYW5nZVZhbHVl
ID0gc3RkOjptYXgobV9taW5pbXVtLCBzdGQ6Om1pbih2YWx1ZSwgbV9tYXhpbXVtKSk7CiAgICAg
aWYgKCFtX2hhc1N0ZXApCiAgICAgICAgIHJldHVybiBpblJhbmdlVmFsdWU7CiAgICAgLy8gUm91
bmRzIGluUmFuZ2VWYWx1ZSB0byBtaW5pbXVtICsgTiAqIHN0ZXAuCkBAIC0xMjAsMTMgKzExOCwx
MyBAQCBEZWNpbWFsIFN0ZXBSYW5nZTo6cGFyc2VTdGVwKEFueVN0ZXBIYW5kbGluZyBhbnlTdGVw
SGFuZGxpbmcsIGNvbnN0IFN0ZXBEZXNjcmlwdAogICAgICAgICBicmVhazsKICAgICBjYXNlIFBh
cnNlZFN0ZXBWYWx1ZVNob3VsZEJlSW50ZWdlcjoKICAgICAgICAgLy8gRm9yIGRhdGUsIG1vbnRo
LCBhbmQgd2VlaywgdGhlIHBhcnNlZCB2YWx1ZSBzaG91bGQgYmUgYW4gaW50ZWdlciBmb3Igc29t
ZSB0eXBlcy4KLSAgICAgICAgc3RlcCA9IG1heChzdGVwLnJvdW5kKCksIERlY2ltYWwoMSkpOwor
ICAgICAgICBzdGVwID0gc3RkOjptYXgoc3RlcC5yb3VuZCgpLCBEZWNpbWFsKDEpKTsKICAgICAg
ICAgc3RlcCAqPSBzdGVwRGVzY3JpcHRpb24uc3RlcFNjYWxlRmFjdG9yOwogICAgICAgICBicmVh
azsKICAgICBjYXNlIFNjYWxlZFN0ZXBWYWx1ZVNob3VsZEJlSW50ZWdlcjoKICAgICAgICAgLy8g
Rm9yIGRhdGV0aW1lLCBkYXRldGltZS1sb2NhbCwgdGltZSwgdGhlIHJlc3VsdCBzaG91bGQgYmUg
YW4gaW50ZWdlci4KICAgICAgICAgc3RlcCAqPSBzdGVwRGVzY3JpcHRpb24uc3RlcFNjYWxlRmFj
dG9yOwotICAgICAgICBzdGVwID0gbWF4KHN0ZXAucm91bmQoKSwgRGVjaW1hbCgxKSk7CisgICAg
ICAgIHN0ZXAgPSBzdGQ6Om1heChzdGVwLnJvdW5kKCksIERlY2ltYWwoMSkpOwogICAgICAgICBi
cmVhazsKICAgICBkZWZhdWx0OgogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvVGltZVJhbmdlcy5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL1RpbWVSYW5nZXMuY3BwCmluZGV4IGNmOGUyMGZjMjNiMzA2MDJhMTY5YTU1ZjY5ZmNl
NWU5ZDUxZTJlN2EuLjEwOTNmYWU3NjYzNjgwMzA4MTIzYTlmYWY1OTEyNzg2ZWNhNzQ5MDggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvVGltZVJhbmdlcy5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9UaW1lUmFuZ2VzLmNwcApAQCAtMzEsOCArMzEsNyBAQAogI2luY2x1ZGUg
IkV4Y2VwdGlvbkNvZGVQbGFjZWhvbGRlci5oIgogI2luY2x1ZGUgPG1hdGguaD4KIAotdXNpbmcg
bmFtZXNwYWNlIFdlYkNvcmU7Ci11c2luZyBuYW1lc3BhY2Ugc3RkOworbmFtZXNwYWNlIFdlYkNv
cmUgewogCiBUaW1lUmFuZ2VzOjpUaW1lUmFuZ2VzKGRvdWJsZSBzdGFydCwgZG91YmxlIGVuZCkK
IHsKQEAgLTE5NCwzICsxOTMsNSBAQCBkb3VibGUgVGltZVJhbmdlczo6dG90YWxEdXJhdGlvbigp
IGNvbnN0CiAgICAgICAgIHRvdGFsICs9IGZhYnMoZW5kKG4sIElHTk9SRV9FWENFUFRJT04pIC0g
c3RhcnQobiwgSUdOT1JFX0VYQ0VQVElPTikpOwogICAgIHJldHVybiB0b3RhbDsKIH0KKworfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9WYWxpZGF0aW9uTWVzc2FnZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL1ZhbGlkYXRpb25NZXNzYWdlLmNwcAppbmRleCA3ZTljM2VhYjIz
NjY3ZGU0N2EwNGMyZTgzZjE2ODA0YzEyNmNhY2I1Li42NzE5Y2I1Yzg3NWUzMzMwN2M4ODRhMGYx
MzFjNWRjYjEyZGIzMjQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL1ZhbGlkYXRp
b25NZXNzYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL1ZhbGlkYXRpb25NZXNzYWdl
LmNwcApAQCAtMTQzLDcgKzE0Myw3IEBAIHZvaWQgVmFsaWRhdGlvbk1lc3NhZ2U6OnNldE1lc3Nh
Z2VET01BbmRTdGFydFRpbWVyKFRpbWVyPFZhbGlkYXRpb25NZXNzYWdlPiopCiAgICAgICAgIG1f
dGltZXIuY2xlYXIoKTsKICAgICBlbHNlIHsKICAgICAgICAgbV90aW1lciA9IGFkb3B0UHRyKG5l
dyBUaW1lcjxWYWxpZGF0aW9uTWVzc2FnZT4odGhpcywgJlZhbGlkYXRpb25NZXNzYWdlOjpkZWxl
dGVCdWJibGVUcmVlKSk7Ci0gICAgICAgIG1fdGltZXItPnN0YXJ0T25lU2hvdChtYXgoNS4wLCBz
dGF0aWNfY2FzdDxkb3VibGU+KG1fbWVzc2FnZS5sZW5ndGgoKSkgKiBtYWduaWZpY2F0aW9uIC8g
MTAwMCkpOworICAgICAgICBtX3RpbWVyLT5zdGFydE9uZVNob3Qoc3RkOjptYXgoNS4wLCBzdGF0
aWNfY2FzdDxkb3VibGU+KG1fbWVzc2FnZS5sZW5ndGgoKSkgKiBtYWduaWZpY2F0aW9uIC8gMTAw
MCkpOwogICAgIH0KIH0KIApAQCAtMTY3LDcgKzE2Nyw3IEBAIHN0YXRpYyB2b2lkIGFkanVzdEJ1
YmJsZVBvc2l0aW9uKGNvbnN0IExheW91dFJlY3QmIGhvc3RSZWN0LCBIVE1MRWxlbWVudCogYnVi
YmxlCiAgICAgY29uc3QgaW50IGJ1YmJsZUFycm93VG9wT2Zmc2V0ID0gMzI7CiAgICAgZG91Ymxl
IGJ1YmJsZVggPSBob3N0WDsKICAgICBpZiAoaG9zdFJlY3Qud2lkdGgoKSAvIDIgPCBidWJibGVB
cnJvd1RvcE9mZnNldCkKLSAgICAgICAgYnViYmxlWCA9IG1heChob3N0WCArIGhvc3RSZWN0Lndp
ZHRoKCkgLyAyIC0gYnViYmxlQXJyb3dUb3BPZmZzZXQsIDAuMCk7CisgICAgICAgIGJ1YmJsZVgg
PSBzdGQ6Om1heChob3N0WCArIGhvc3RSZWN0LndpZHRoKCkgLyAyIC0gYnViYmxlQXJyb3dUb3BP
ZmZzZXQsIDAuMCk7CiAgICAgYnViYmxlLT5zZXRJbmxpbmVTdHlsZVByb3BlcnR5KENTU1Byb3Bl
cnR5TGVmdCwgYnViYmxlWCwgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19QWCk7CiB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQy
RC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0
MkQuY3BwCmluZGV4IDcwYzgyOWU2ZTY2NjkwM2FiZjFkM2UwMmE5ODBlNDdiMjU0ZTkxZWUuLmU4
NGFhZTIyMDFhMDdhNTc5NjI0MTQ4MjIxNGI5YWI0NjljZGE0NjMgMTAwNzU1Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmNwcApA
QCAtNzQsOCArNzQsNiBAQAogI2luY2x1ZGUgPEFwcGxpY2F0aW9uU2VydmljZXMvQXBwbGljYXRp
b25TZXJ2aWNlcy5oPgogI2VuZGlmCiAKLXVzaW5nIG5hbWVzcGFjZSBzdGQ7Ci0KIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAogdXNpbmcgbmFtZXNwYWNlIEhUTUxOYW1lczsKQEAgLTEyMjksMTAgKzEy
MjcsMTAgQEAgc3RhdGljIEludFNpemUgc2l6ZShIVE1MVmlkZW9FbGVtZW50KiB2aWRlbykKIAog
c3RhdGljIGlubGluZSBGbG9hdFJlY3Qgbm9ybWFsaXplUmVjdChjb25zdCBGbG9hdFJlY3QmIHJl
Y3QpCiB7Ci0gICAgcmV0dXJuIEZsb2F0UmVjdChtaW4ocmVjdC54KCksIHJlY3QubWF4WCgpKSwK
LSAgICAgICAgbWluKHJlY3QueSgpLCByZWN0Lm1heFkoKSksCi0gICAgICAgIG1heChyZWN0Lndp
ZHRoKCksIC1yZWN0LndpZHRoKCkpLAotICAgICAgICBtYXgocmVjdC5oZWlnaHQoKSwgLXJlY3Qu
aGVpZ2h0KCkpKTsKKyAgICByZXR1cm4gRmxvYXRSZWN0KHN0ZDo6bWluKHJlY3QueCgpLCByZWN0
Lm1heFgoKSksCisgICAgICAgIHN0ZDo6bWluKHJlY3QueSgpLCByZWN0Lm1heFkoKSksCisgICAg
ICAgIHN0ZDo6bWF4KHJlY3Qud2lkdGgoKSwgLXJlY3Qud2lkdGgoKSksCisgICAgICAgIHN0ZDo6
bWF4KHJlY3QuaGVpZ2h0KCksIC1yZWN0LmhlaWdodCgpKSk7CiB9CiAKIHZvaWQgQ2FudmFzUmVu
ZGVyaW5nQ29udGV4dDJEOjpkcmF3SW1hZ2UoSFRNTEltYWdlRWxlbWVudCogaW1hZ2UsIGZsb2F0
IHgsIGZsb2F0IHksIEV4Y2VwdGlvbkNvZGUmIGVjKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dC5jcHAKaW5kZXggOTQwNzVkMTM5NjEy
MTgwNjAzMTAzYzNkODc2MDI2ZWMwYjhiOWZhOS4uZmY3MjQzOTAyNTZjNjQ1MThlNWFmZGFlNDQ1
MDdkYTVmYzZjMDU2ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2Vi
R0xSZW5kZXJpbmdDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9X
ZWJHTFJlbmRlcmluZ0NvbnRleHQuY3BwCkBAIC0xNzkzLDE0ICsxNzkzLDE0IEBAIGJvb2wgV2Vi
R0xSZW5kZXJpbmdDb250ZXh0Ojp2YWxpZGF0ZUluZGV4QXJyYXlDb25zZXJ2YXRpdmUoR0MzRGVu
dW0gdHlwZSwgdW5zaWduCiAgICAgICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6OlVOU0lHTkVE
X0JZVEU6IHsKICAgICAgICAgICAgIGNvbnN0IEdDM0R1Ynl0ZSogcCA9IHN0YXRpY19jYXN0PGNv
bnN0IEdDM0R1Ynl0ZSo+KGJ1ZmZlci0+ZGF0YSgpKTsKICAgICAgICAgICAgIGZvciAoR0MzRHNp
emVpcHRyIGkgPSAwOyBpIDwgbnVtRWxlbWVudHM7IGkrKykKLSAgICAgICAgICAgICAgICBtYXhJ
bmRleCA9IG1heChtYXhJbmRleCwgc3RhdGljX2Nhc3Q8aW50PihwW2ldKSk7CisgICAgICAgICAg
ICAgICAgbWF4SW5kZXggPSBzdGQ6Om1heChtYXhJbmRleCwgc3RhdGljX2Nhc3Q8aW50PihwW2ld
KSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBjYXNlIEdyYXBoaWNz
Q29udGV4dDNEOjpVTlNJR05FRF9TSE9SVDogewogICAgICAgICAgICAgbnVtRWxlbWVudHMgLz0g
c2l6ZW9mKEdDM0R1c2hvcnQpOwogICAgICAgICAgICAgY29uc3QgR0MzRHVzaG9ydCogcCA9IHN0
YXRpY19jYXN0PGNvbnN0IEdDM0R1c2hvcnQqPihidWZmZXItPmRhdGEoKSk7CiAgICAgICAgICAg
ICBmb3IgKEdDM0RzaXplaXB0ciBpID0gMDsgaSA8IG51bUVsZW1lbnRzOyBpKyspCi0gICAgICAg
ICAgICAgICAgbWF4SW5kZXggPSBtYXgobWF4SW5kZXgsIHN0YXRpY19jYXN0PGludD4ocFtpXSkp
OworICAgICAgICAgICAgICAgIG1heEluZGV4ID0gc3RkOjptYXgobWF4SW5kZXgsIHN0YXRpY19j
YXN0PGludD4ocFtpXSkpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAg
Y2FzZSBHcmFwaGljc0NvbnRleHQzRDo6VU5TSUdORURfSU5UOiB7CkBAIC0xODA5LDcgKzE4MDks
NyBAQCBib29sIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6dmFsaWRhdGVJbmRleEFycmF5Q29uc2Vy
dmF0aXZlKEdDM0RlbnVtIHR5cGUsIHVuc2lnbgogICAgICAgICAgICAgbnVtRWxlbWVudHMgLz0g
c2l6ZW9mKEdDM0R1aW50KTsKICAgICAgICAgICAgIGNvbnN0IEdDM0R1aW50KiBwID0gc3RhdGlj
X2Nhc3Q8Y29uc3QgR0MzRHVpbnQqPihidWZmZXItPmRhdGEoKSk7CiAgICAgICAgICAgICBmb3Ig
KEdDM0RzaXplaXB0ciBpID0gMDsgaSA8IG51bUVsZW1lbnRzOyBpKyspCi0gICAgICAgICAgICAg
ICAgbWF4SW5kZXggPSBtYXgobWF4SW5kZXgsIHN0YXRpY19jYXN0PGludD4ocFtpXSkpOworICAg
ICAgICAgICAgICAgIG1heEluZGV4ID0gc3RkOjptYXgobWF4SW5kZXgsIHN0YXRpY19jYXN0PGlu
dD4ocFtpXSkpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgZGVmYXVs
dDoKQEAgLTUzMjgsMTMgKzUzMjgsMTMgQEAgYm9vbCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OnZh
bGlkYXRlQ29tcHJlc3NlZFRleEZ1bmNEYXRhKGNvbnN0IGNoYXIqIGZ1bmN0aW9uTmEKICAgICBj
YXNlIEV4dGVuc2lvbnMzRDo6Q09NUFJFU1NFRF9SR0JfUFZSVENfNEJQUFYxX0lNRzoKICAgICBj
YXNlIEV4dGVuc2lvbnMzRDo6Q09NUFJFU1NFRF9SR0JBX1BWUlRDXzRCUFBWMV9JTUc6CiAgICAg
ICAgIHsKLSAgICAgICAgICAgIGJ5dGVzUmVxdWlyZWQgPSBtYXgod2lkdGgsIDgpICogbWF4KGhl
aWdodCwgOCkgLyAyOworICAgICAgICAgICAgYnl0ZXNSZXF1aXJlZCA9IHN0ZDo6bWF4KHdpZHRo
LCA4KSAqIHN0ZDo6bWF4KGhlaWdodCwgOCkgLyAyOwogICAgICAgICB9CiAgICAgICAgIGJyZWFr
OwogICAgIGNhc2UgRXh0ZW5zaW9uczNEOjpDT01QUkVTU0VEX1JHQl9QVlJUQ18yQlBQVjFfSU1H
OgogICAgIGNhc2UgRXh0ZW5zaW9uczNEOjpDT01QUkVTU0VEX1JHQkFfUFZSVENfMkJQUFYxX0lN
RzoKICAgICAgICAgewotICAgICAgICAgICAgYnl0ZXNSZXF1aXJlZCA9IG1heCh3aWR0aCwgOCkg
KiBtYXgoaGVpZ2h0LCA4KSAvIDQ7CisgICAgICAgICAgICBieXRlc1JlcXVpcmVkID0gc3RkOjpt
YXgod2lkdGgsIDgpICogc3RkOjptYXgoaGVpZ2h0LCA4KSAvIDQ7CiAgICAgICAgIH0KICAgICAg
ICAgYnJlYWs7CiAgICAgZGVmYXVsdDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
c2hhZG93L01lZGlhQ29udHJvbEVsZW1lbnRzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hh
ZG93L01lZGlhQ29udHJvbEVsZW1lbnRzLmNwcAppbmRleCA5ZjAyMWNiOTMwNzJjMmM2ZTlkMzYz
YjVmNTdkNTI4N2E4OTIzZDc5Li4yMDZjZTBlYzZlMTYyZWMyNTA1NzVhNzM1NTA4ODFiNTM0NDRk
NDY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xF
bGVtZW50cy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvTWVkaWFDb250cm9s
RWxlbWVudHMuY3BwCkBAIC02MzEsNyArNjMxLDcgQEAgUGFzc1JlZlB0cjxNZWRpYUNvbnRyb2xS
ZXdpbmRCdXR0b25FbGVtZW50PiBNZWRpYUNvbnRyb2xSZXdpbmRCdXR0b25FbGVtZW50OjpjcmUK
IHZvaWQgTWVkaWFDb250cm9sUmV3aW5kQnV0dG9uRWxlbWVudDo6ZGVmYXVsdEV2ZW50SGFuZGxl
cihFdmVudCogZXZlbnQpCiB7CiAgICAgaWYgKGV2ZW50LT50eXBlKCkgPT0gZXZlbnROYW1lcygp
LmNsaWNrRXZlbnQpIHsKLSAgICAgICAgbWVkaWFDb250cm9sbGVyKCktPnNldEN1cnJlbnRUaW1l
KG1heCgwLjAsIG1lZGlhQ29udHJvbGxlcigpLT5jdXJyZW50VGltZSgpIC0gMzApLCBJR05PUkVf
RVhDRVBUSU9OKTsKKyAgICAgICAgbWVkaWFDb250cm9sbGVyKCktPnNldEN1cnJlbnRUaW1lKHN0
ZDo6bWF4PGRvdWJsZT4oMCwgbWVkaWFDb250cm9sbGVyKCktPmN1cnJlbnRUaW1lKCkgLSAzMCks
IElHTk9SRV9FWENFUFRJT04pOwogICAgICAgICBldmVudC0+c2V0RGVmYXVsdEhhbmRsZWQoKTsK
ICAgICB9CiAgICAgSFRNTElucHV0RWxlbWVudDo6ZGVmYXVsdEV2ZW50SGFuZGxlcihldmVudCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xzQXBw
bGUuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvTWVkaWFDb250cm9sc0FwcGxlLmNw
cAppbmRleCAxZTQ4NzllNjIxNDcyZjQzOTFjMTU3ZDQ2YTE1ZTE4OTAxNjNiM2VmLi5iMDg3ZmJh
ODVmY2VjY2JjYTkyNGE3OWExYmMxNjM5NzNlZGNmNDhlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xzQXBwbGUuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvc2hhZG93L01lZGlhQ29udHJvbHNBcHBsZS5jcHAKQEAgLTQ1LDggKzQ1LDYgQEAK
ICNpbmNsdWRlICJUZXh0VHJhY2tDdWUuaCIKICNlbmRpZgogCi11c2luZyBuYW1lc3BhY2Ugc3Rk
OwotCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIE1lZGlhQ29udHJvbHNBcHBsZTo6TWVkaWFDb250
cm9sc0FwcGxlKERvY3VtZW50JiBkb2N1bWVudCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvc2hhZG93L1NsaWRlclRodW1iRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L3NoYWRvdy9TbGlkZXJUaHVtYkVsZW1lbnQuY3BwCmluZGV4IGJkY2Q5YThjZDMzOTFiODE0NGZi
ODVkZWE4YWQwM2I3ZDQ0ZTA0M2QuLjg5ZjAxMjM4ZDNkMmFkZmEyNmI5YzIyMjJmNDcyNmM2MWIx
Y2U1NTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L1NsaWRlclRodW1i
RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvU2xpZGVyVGh1bWJF
bGVtZW50LmNwcApAQCAtNDYsOCArNDYsNiBAQAogI2luY2x1ZGUgIlNoYWRvd1Jvb3QuaCIKICNp
bmNsdWRlICJTdGVwUmFuZ2UuaCIKIAotdXNpbmcgbmFtZXNwYWNlIHN0ZDsKLQogbmFtZXNwYWNl
IFdlYkNvcmUgewogCiB1c2luZyBuYW1lc3BhY2UgSFRNTE5hbWVzOwpAQCAtMjcyLDcgKzI3MCw3
IEBAIHZvaWQgU2xpZGVyVGh1bWJFbGVtZW50OjpzZXRQb3NpdGlvbkZyb21Qb2ludChjb25zdCBM
YXlvdXRQb2ludCYgYWJzb2x1dGVQb2ludCkKICAgICAgICAgcG9zaXRpb24gLT0gaXNMZWZ0VG9S
aWdodERpcmVjdGlvbiA/IHJlbmRlckJveCgpLT5tYXJnaW5MZWZ0KCkgOiByZW5kZXJCb3goKS0+
bWFyZ2luUmlnaHQoKTsKICAgICB9CiAKLSAgICBwb3NpdGlvbiA9IG1heDxMYXlvdXRVbml0Pigw
LCBtaW4ocG9zaXRpb24sIHRyYWNrTGVuZ3RoKSk7CisgICAgcG9zaXRpb24gPSBzdGQ6Om1heDxM
YXlvdXRVbml0PigwLCBzdGQ6Om1pbihwb3NpdGlvbiwgdHJhY2tMZW5ndGgpKTsKICAgICBjb25z
dCBEZWNpbWFsIHJhdGlvID0gRGVjaW1hbDo6ZnJvbURvdWJsZShzdGF0aWNfY2FzdDxkb3VibGU+
KHBvc2l0aW9uKSAvIHRyYWNrTGVuZ3RoKTsKICAgICBjb25zdCBEZWNpbWFsIGZyYWN0aW9uID0g
aXNWZXJ0aWNhbCB8fCAhaXNMZWZ0VG9SaWdodERpcmVjdGlvbiA/IERlY2ltYWwoMSkgLSByYXRp
byA6IHJhdGlvOwogICAgIFN0ZXBSYW5nZSBzdGVwUmFuZ2UoaW5wdXQtPmNyZWF0ZVN0ZXBSYW5n
ZShSZWplY3RBbnkpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Db250
ZW50U2VhcmNoVXRpbHMuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0NvbnRlbnRTZWFy
Y2hVdGlscy5jcHAKaW5kZXggNTQ1N2U1ZDlhYTE4NGNiZWVkNDdiY2RlMjUxMWI5ZDRmMDBmOTdi
Ni4uMDNhODA1ZmFjY2IxMzhhZDkzZWIxM2JiNjMwYjUyOWNlNWYyOGE0NCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0NvbnRlbnRTZWFyY2hVdGlscy5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0NvbnRlbnRTZWFyY2hVdGlscy5jcHAKQEAgLTM5LDggKzM5
LDYgQEAKICNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CiAjaW5jbHVkZSA8eWFyci9ZYXJy
Lmg+CiAKLXVzaW5nIG5hbWVzcGFjZSBzdGQ7Ci0KIG5hbWVzcGFjZSBXZWJDb3JlIHsKIG5hbWVz
cGFjZSBDb250ZW50U2VhcmNoVXRpbHMgewogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvRE9NRWRpdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9ET01FZGl0
b3IuY3BwCmluZGV4IDUxYWE4ZTQ0MGIxZWZhNWRjNjJhMDZjMGMwYTM1NzRjMjI0NDc5Y2QuLjQ1
YjI4OWZiN2MyYTczODlmMTFkMWZjOWU2NDdkY2E4OTZlMjk4ZWIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9ET01FZGl0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9ET01FZGl0b3IuY3BwCkBAIC00MSwxMyArNDEsOSBAQAogI2luY2x1ZGUgIkluc3Bl
Y3Rvckhpc3RvcnkuaCIKICNpbmNsdWRlICJOb2RlLmgiCiAjaW5jbHVkZSAiVGV4dC5oIgotCiAj
aW5jbHVkZSAibWFya3VwLmgiCi0KICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAKLXVzaW5nIG5h
bWVzcGFjZSBzdGQ7Ci0KIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgRE9NRWRpdG9yOjpS
ZW1vdmVDaGlsZEFjdGlvbiA6IHB1YmxpYyBJbnNwZWN0b3JIaXN0b3J5OjpBY3Rpb24gewpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0RPTVBhdGNoU3VwcG9ydC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvRE9NUGF0Y2hTdXBwb3J0LmNwcAppbmRleCA0NDc5ZDhh
YjE1YWZlYWFkYmE0NmRkYTc4MWY2MmMyYTYzOGE4MTc4Li5kMmM2NzRhNjVmZTYxYjkyOTBiY2U0
MzU4MzQ2MmZlNmU5Y2FmNjgzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
RE9NUGF0Y2hTdXBwb3J0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvRE9NUGF0
Y2hTdXBwb3J0LmNwcApAQCAtNTQsOCArNTQsNiBAQAogI2luY2x1ZGUgPHd0Zi90ZXh0L0Jhc2U2
NC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KIAotdXNpbmcgbmFtZXNwYWNlIHN0
ZDsKLQogbmFtZXNwYWNlIFdlYkNvcmUgewogCiB1c2luZyBIVE1MTmFtZXM6OmJvZHlUYWc7CkBA
IC0yNjcsOCArMjY1LDggQEAgRE9NUGF0Y2hTdXBwb3J0OjpkaWZmKGNvbnN0IFZlY3RvcjxPd25Q
dHI8RGlnZXN0Pj4mIG9sZExpc3QsIGNvbnN0IFZlY3RvcjxPd25QdHIKICAgICAgICAgaWYgKG9s
ZEl0ID09IG9sZFRhYmxlLmVuZCgpIHx8IG9sZEl0LT52YWx1ZS5zaXplKCkgIT0gMSkKICAgICAg
ICAgICAgIGNvbnRpbnVlOwogCi0gICAgICAgIG5ld01hcFtuZXdJdC0+dmFsdWVbMF1dID0gbWFr
ZV9wYWlyKG5ld0xpc3RbbmV3SXQtPnZhbHVlWzBdXS5nZXQoKSwgb2xkSXQtPnZhbHVlWzBdKTsK
LSAgICAgICAgb2xkTWFwW29sZEl0LT52YWx1ZVswXV0gPSBtYWtlX3BhaXIob2xkTGlzdFtvbGRJ
dC0+dmFsdWVbMF1dLmdldCgpLCBuZXdJdC0+dmFsdWVbMF0pOworICAgICAgICBuZXdNYXBbbmV3
SXQtPnZhbHVlWzBdXSA9IHN0ZDo6bWFrZV9wYWlyKG5ld0xpc3RbbmV3SXQtPnZhbHVlWzBdXS5n
ZXQoKSwgb2xkSXQtPnZhbHVlWzBdKTsKKyAgICAgICAgb2xkTWFwW29sZEl0LT52YWx1ZVswXV0g
PSBzdGQ6Om1ha2VfcGFpcihvbGRMaXN0W29sZEl0LT52YWx1ZVswXV0uZ2V0KCksIG5ld0l0LT52
YWx1ZVswXSk7CiAgICAgfQogCiAgICAgZm9yIChzaXplX3QgaSA9IDA7IG5ld0xpc3Quc2l6ZSgp
ID4gMCAmJiBpIDwgbmV3TGlzdC5zaXplKCkgLSAxOyArK2kpIHsKQEAgLTI3Nyw4ICsyNzUsOCBA
QCBET01QYXRjaFN1cHBvcnQ6OmRpZmYoY29uc3QgVmVjdG9yPE93blB0cjxEaWdlc3Q+PiYgb2xk
TGlzdCwgY29uc3QgVmVjdG9yPE93blB0cgogCiAgICAgICAgIHNpemVfdCBqID0gbmV3TWFwW2ld
LnNlY29uZCArIDE7CiAgICAgICAgIGlmIChqIDwgb2xkTWFwLnNpemUoKSAmJiAhb2xkTWFwW2pd
LmZpcnN0ICYmIG5ld0xpc3RbaSArIDFdLT5tX3NoYTEgPT0gb2xkTGlzdFtqXS0+bV9zaGExKSB7
Ci0gICAgICAgICAgICBuZXdNYXBbaSArIDFdID0gbWFrZV9wYWlyKG5ld0xpc3RbaSArIDFdLmdl
dCgpLCBqKTsKLSAgICAgICAgICAgIG9sZE1hcFtqXSA9IG1ha2VfcGFpcihvbGRMaXN0W2pdLmdl
dCgpLCBpICsgMSk7CisgICAgICAgICAgICBuZXdNYXBbaSArIDFdID0gc3RkOjptYWtlX3BhaXIo
bmV3TGlzdFtpICsgMV0uZ2V0KCksIGopOworICAgICAgICAgICAgb2xkTWFwW2pdID0gc3RkOjpt
YWtlX3BhaXIob2xkTGlzdFtqXS5nZXQoKSwgaSArIDEpOwogICAgICAgICB9CiAgICAgfQogCkBA
IC0yODgsOCArMjg2LDggQEAgRE9NUGF0Y2hTdXBwb3J0OjpkaWZmKGNvbnN0IFZlY3RvcjxPd25Q
dHI8RGlnZXN0Pj4mIG9sZExpc3QsIGNvbnN0IFZlY3RvcjxPd25QdHIKIAogICAgICAgICBzaXpl
X3QgaiA9IG5ld01hcFtpXS5zZWNvbmQgLSAxOwogICAgICAgICBpZiAoIW9sZE1hcFtqXS5maXJz
dCAmJiBuZXdMaXN0W2kgLSAxXS0+bV9zaGExID09IG9sZExpc3Rbal0tPm1fc2hhMSkgewotICAg
ICAgICAgICAgbmV3TWFwW2kgLSAxXSA9IG1ha2VfcGFpcihuZXdMaXN0W2kgLSAxXS5nZXQoKSwg
aik7Ci0gICAgICAgICAgICBvbGRNYXBbal0gPSBtYWtlX3BhaXIob2xkTGlzdFtqXS5nZXQoKSwg
aSAtIDEpOworICAgICAgICAgICAgbmV3TWFwW2kgLSAxXSA9IHN0ZDo6bWFrZV9wYWlyKG5ld0xp
c3RbaSAtIDFdLmdldCgpLCBqKTsKKyAgICAgICAgICAgIG9sZE1hcFtqXSA9IHN0ZDo6bWFrZV9w
YWlyKG9sZExpc3Rbal0uZ2V0KCksIGkgLSAxKTsKICAgICAgICAgfQogICAgIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0SG9zdC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRIb3N0LmNwcAppbmRleCAxZTQy
ZGMzZmMzOGY2YzdhNjg4Y2Q3MzE1M2VjMDE5MzJiY2U0MjdkLi4yNTAyNjk0MjljNTJiYzk0Nzlm
YTNhZWIyZGYxMWM4Njk0NzUxN2IwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5qZWN0ZWRTY3JpcHRIb3N0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5qZWN0ZWRTY3JpcHRIb3N0LmNwcApAQCAtNjAsOCArNjAsNiBAQAogI2luY2x1ZGUgPHd0Zi9S
ZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CiAKLXVzaW5nIG5hbWVzcGFj
ZSBzdGQ7Ci0KIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogUGFzc1JlZlB0cjxJbmplY3RlZFNjcmlw
dEhvc3Q+IEluamVjdGVkU2NyaXB0SG9zdDo6Y3JlYXRlKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9Qcm9ncmVzc1RyYWNrZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L1Byb2dyZXNzVHJhY2tlci5jcHAKaW5kZXggOGQxY2UxYTE1ODhmYjdhYzQ4ZDVlYTMyZDlkMGVk
NWI0ZmEzMGQ3Mi4uNmM5YjM1YzA5YjVjNzM5MzhhOGZkZDk4MThjOWEwMTA5NTFmNDkyNiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Byb2dyZXNzVHJhY2tlci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL1Byb2dyZXNzVHJhY2tlci5jcHAKQEAgLTM3LDggKzM3LDYg
QEAKICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAjaW5jbHVkZSA8d3RmL0N1cnJlbnRU
aW1lLmg+CiAKLXVzaW5nIHN0ZDo6bWluOwotCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIC8vIEFs
d2F5cyBzdGFydCBwcm9ncmVzcyBhdCBpbml0aWFsUHJvZ3Jlc3NWYWx1ZS4gVGhpcyBoZWxwcyBw
cm92aWRlIGZlZWRiYWNrIGFzIApAQCAtMjMxLDcgKzIyOSw3IEBAIHZvaWQgUHJvZ3Jlc3NUcmFj
a2VyOjppbmNyZW1lbnRQcm9ncmVzcyh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IGNo
YXIqLCBpCiAgICAgZG91YmxlIG1heFByb2dyZXNzVmFsdWUgPSB1c2VDbGFtcGVkTWF4UHJvZ3Jl
c3MgPyAwLjUgOiBmaW5hbFByb2dyZXNzVmFsdWU7CiAgICAgaW5jcmVtZW50ID0gKG1heFByb2dy
ZXNzVmFsdWUgLSBtX3Byb2dyZXNzVmFsdWUpICogcGVyY2VudE9mUmVtYWluaW5nQnl0ZXM7CiAg
ICAgbV9wcm9ncmVzc1ZhbHVlICs9IGluY3JlbWVudDsKLSAgICBtX3Byb2dyZXNzVmFsdWUgPSBt
aW4obV9wcm9ncmVzc1ZhbHVlLCBtYXhQcm9ncmVzc1ZhbHVlKTsKKyAgICBtX3Byb2dyZXNzVmFs
dWUgPSBzdGQ6Om1pbihtX3Byb2dyZXNzVmFsdWUsIG1heFByb2dyZXNzVmFsdWUpOwogICAgIEFT
U0VSVChtX3Byb2dyZXNzVmFsdWUgPj0gaW5pdGlhbFByb2dyZXNzVmFsdWUpOwogICAgIAogICAg
IG1fdG90YWxCeXRlc1JlY2VpdmVkICs9IGJ5dGVzUmVjZWl2ZWQ7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmNwcAppbmRleCAzMTljYjdlNDUyOThiNWIyZTUzYWVl
ZjAyODA5YTU4ZWRiODJhMWVjLi4xYjEzY2YzOWU1NmFlYTJmMWIxMmJhNmY4MmE0YTgwOGQ3Zjg1
ZmI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2Uu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5jcHAKQEAg
LTU2LDggKzU2LDYgQEAKICNpbmNsdWRlICJEaXNrSW1hZ2VDYWNoZUlPUy5oIgogI2VuZGlmCiAK
LXVzaW5nIHN0ZDo6bWF4OwotCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIENhY2hlZEltYWdlOjpD
YWNoZWRJbWFnZShjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlc291cmNlUmVxdWVzdCkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvRE9NV2luZG93LmNwcAppbmRleCA4YzdkMGRhOTRmOTcxNzZiNzFhNzllZDVjZDk3OGUw
NzVmZWQzZDNkLi4wNjRkMmE0ZWY2OWVhZWI0OGEzMWE3MzdlYzMyZmMxODViNDRkNGJkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9ET01XaW5kb3cuY3BwCkBAIC0xMTcsOSArMTE3LDYgQEAKICNpbmNsdWRlICJS
ZXF1ZXN0QW5pbWF0aW9uRnJhbWVDYWxsYmFjay5oIgogI2VuZGlmCiAKLXVzaW5nIHN0ZDo6bWlu
OwotdXNpbmcgc3RkOjptYXg7Ci0KIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgUG9zdE1l
c3NhZ2VUaW1lciA6IHB1YmxpYyBUaW1lckJhc2UgewpAQCAtMzI0LDEyICszMjEsMTIgQEAgRmxv
YXRSZWN0IERPTVdpbmRvdzo6YWRqdXN0V2luZG93UmVjdChQYWdlKiBwYWdlLCBjb25zdCBGbG9h
dFJlY3QmIHBlbmRpbmdDaGFuZ2UKICAgICAgICAgd2luZG93LnNldEhlaWdodChwZW5kaW5nQ2hh
bmdlcy5oZWlnaHQoKSk7CiAKICAgICBGbG9hdFNpemUgbWluaW11bVNpemUgPSBwYWdlLT5jaHJv
bWUoKS5jbGllbnQoKS5taW5pbXVtV2luZG93U2l6ZSgpOwotICAgIHdpbmRvdy5zZXRXaWR0aCht
aW4obWF4KG1pbmltdW1TaXplLndpZHRoKCksIHdpbmRvdy53aWR0aCgpKSwgc2NyZWVuLndpZHRo
KCkpKTsKLSAgICB3aW5kb3cuc2V0SGVpZ2h0KG1pbihtYXgobWluaW11bVNpemUuaGVpZ2h0KCks
IHdpbmRvdy5oZWlnaHQoKSksIHNjcmVlbi5oZWlnaHQoKSkpOworICAgIHdpbmRvdy5zZXRXaWR0
aChzdGQ6Om1pbihzdGQ6Om1heChtaW5pbXVtU2l6ZS53aWR0aCgpLCB3aW5kb3cud2lkdGgoKSks
IHNjcmVlbi53aWR0aCgpKSk7CisgICAgd2luZG93LnNldEhlaWdodChzdGQ6Om1pbihzdGQ6Om1h
eChtaW5pbXVtU2l6ZS5oZWlnaHQoKSwgd2luZG93LmhlaWdodCgpKSwgc2NyZWVuLmhlaWdodCgp
KSk7CiAKICAgICAvLyBDb25zdHJhaW4gdGhlIHdpbmRvdyBwb3NpdGlvbiB3aXRoaW4gdGhlIHZh
bGlkIHNjcmVlbiBhcmVhLgotICAgIHdpbmRvdy5zZXRYKG1heChzY3JlZW4ueCgpLCBtaW4od2lu
ZG93LngoKSwgc2NyZWVuLm1heFgoKSAtIHdpbmRvdy53aWR0aCgpKSkpOwotICAgIHdpbmRvdy5z
ZXRZKG1heChzY3JlZW4ueSgpLCBtaW4od2luZG93LnkoKSwgc2NyZWVuLm1heFkoKSAtIHdpbmRv
dy5oZWlnaHQoKSkpKTsKKyAgICB3aW5kb3cuc2V0WChzdGQ6Om1heChzY3JlZW4ueCgpLCBzdGQ6
Om1pbih3aW5kb3cueCgpLCBzY3JlZW4ubWF4WCgpIC0gd2luZG93LndpZHRoKCkpKSk7CisgICAg
d2luZG93LnNldFkoc3RkOjptYXgoc2NyZWVuLnkoKSwgc3RkOjptaW4od2luZG93LnkoKSwgc2Ny
ZWVuLm1heFkoKSAtIHdpbmRvdy5oZWlnaHQoKSkpKTsKIAogICAgIHJldHVybiB3aW5kb3c7CiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAKaW5kZXggYWE5YzhmMzk1NWJmNTZjZWQ5
NmE5NjQ1NTdlODk0YjYxNGM2MjVhYi4uMWJjNzMyYjVhYWYxN2UyNjczZDliOTVhZDU0ZDIwNWQz
OWY0NzRkZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcApAQCAtMTgyLDcgKzE4
Miw3IEBAIHB1YmxpYzoKIAogICAgIH5NYXhpbXVtRHVyYXRpb25UcmFja2VyKCkKICAgICB7Ci0g
ICAgICAgICptX21heER1cmF0aW9uID0gbWF4KCptX21heER1cmF0aW9uLCBtb25vdG9uaWNhbGx5
SW5jcmVhc2luZ1RpbWUoKSAtIG1fc3RhcnQpOworICAgICAgICAqbV9tYXhEdXJhdGlvbiA9IHN0
ZDo6bWF4KCptX21heER1cmF0aW9uLCBtb25vdG9uaWNhbGx5SW5jcmVhc2luZ1RpbWUoKSAtIG1f
c3RhcnQpOwogICAgIH0KIAogcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvRnJhbWVUcmVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVUcmVlLmNwcAppbmRl
eCAwMjVkMzJlODUzNTA3ODAzNjY5ZjJjNzQ4ZjAwNzZmODg5N2VmYzIyLi5jZWUxMjZkYmFhYjYy
YzVmMTRlZmE5N2FkODhhNGI4OWJlOGMxMjA5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
YWdlL0ZyYW1lVHJlZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVRyZWUuY3Bw
CkBAIC0zMyw4ICszMyw2IEBACiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgogI2luY2x1
ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4KIAotdXNpbmcgc3RkOjpzd2FwOwotCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKIEZyYW1lVHJlZTo6fkZyYW1lVHJlZSgpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Zy
YW1lVmlldy5jcHAKaW5kZXggNmU3ODNhYzYwY2Q5YTFhZGI2MGQzNWJhODkzOTJiZTcxMmFmZmY5
My4uODFiODQxMTE0MjY5YjJmZjFhZjAyYzRmNmM4N2ZhZWQ0ZTIzMjdhMSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvRnJhbWVWaWV3LmNwcApAQCAtMjI4OCw3ICsyMjg4LDcgQEAgZG91YmxlIEZyYW1lVmlldzo6
YWRqdXN0ZWREZWZlcnJlZFJlcGFpbnREZWxheSgpIGNvbnN0CiAgICAgaWYgKCFtX2RlZmVycmVk
UmVwYWludERlbGF5KQogICAgICAgICByZXR1cm4gMDsKICAgICBkb3VibGUgdGltZVNpbmNlTGFz
dFBhaW50ID0gbW9ub3RvbmljYWxseUluY3JlYXNpbmdUaW1lKCkgLSBtX2xhc3RQYWludFRpbWU7
Ci0gICAgcmV0dXJuIG1heCgwLiwgbV9kZWZlcnJlZFJlcGFpbnREZWxheSAtIHRpbWVTaW5jZUxh
c3RQYWludCk7CisgICAgcmV0dXJuIHN0ZDo6bWF4PGRvdWJsZT4oMCwgbV9kZWZlcnJlZFJlcGFp
bnREZWxheSAtIHRpbWVTaW5jZUxhc3RQYWludCk7CiB9CiAgICAgCiB2b2lkIEZyYW1lVmlldzo6
ZGVmZXJyZWRSZXBhaW50VGltZXJGaXJlZChUaW1lcjxGcmFtZVZpZXc+KikKQEAgLTI5MDQsNyAr
MjkwNCw3IEBAIHZvaWQgRnJhbWVWaWV3OjphdXRvU2l6ZUlmRW5hYmxlZCgpCiAgICAgbV9hdXRv
U2l6ZUNvbnRlbnRTaXplID0gY29udGVudHNTaXplKCk7CiAKICAgICBpZiAobV9hdXRvU2l6ZUZp
eGVkTWluaW11bUhlaWdodCkgewotICAgICAgICByZXNpemUobV9hdXRvU2l6ZUNvbnRlbnRTaXpl
LndpZHRoKCksIG1heChtX2F1dG9TaXplRml4ZWRNaW5pbXVtSGVpZ2h0LCBtX2F1dG9TaXplQ29u
dGVudFNpemUuaGVpZ2h0KCkpKTsKKyAgICAgICAgcmVzaXplKG1fYXV0b1NpemVDb250ZW50U2l6
ZS53aWR0aCgpLCBzdGQ6Om1heChtX2F1dG9TaXplRml4ZWRNaW5pbXVtSGVpZ2h0LCBtX2F1dG9T
aXplQ29udGVudFNpemUuaGVpZ2h0KCkpKTsKICAgICAgICAgZG9jdW1lbnQtPnVwZGF0ZUxheW91
dElnbm9yZVBlbmRpbmdTdHlsZXNoZWV0cygpOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGFnZS9QcmludENvbnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9Qcmlu
dENvbnRleHQuY3BwCmluZGV4IGViYzgxODBjZGQ0MmY1NjkyZTI0M2U1OTFmZjIxOGU2ZGVmNzJk
MjUuLjE0Yzc4YTA4OWNmNjQwZTcxMDkwZWVlYzJlOTA2OTM3ZDgwN2M0YTggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvUHJpbnRDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL1ByaW50Q29udGV4dC5jcHAKQEAgLTE4OCw3ICsxODgsNyBAQCBmbG9hdCBQcmludENv
bnRleHQ6OmNvbXB1dGVBdXRvbWF0aWNTY2FsZUZhY3Rvcihjb25zdCBGbG9hdFNpemUmIGF2YWls
YWJsZVBhcGVyUwogCiAgICAgZmxvYXQgbWF4U2hyaW5rVG9GaXRTY2FsZUZhY3RvciA9IDEgLyBw
cmludGluZ01heGltdW1TaHJpbmtGYWN0b3I7CiAgICAgZmxvYXQgc2hyaW5rVG9GaXRTY2FsZUZh
Y3RvciA9ICh1c2VWaWV3V2lkdGggPyBhdmFpbGFibGVQYXBlclNpemUud2lkdGgoKSA6IGF2YWls
YWJsZVBhcGVyU2l6ZS5oZWlnaHQoKSkgLyB2aWV3TG9naWNhbFdpZHRoOwotICAgIHJldHVybiBt
YXgobWF4U2hyaW5rVG9GaXRTY2FsZUZhY3Rvciwgc2hyaW5rVG9GaXRTY2FsZUZhY3Rvcik7Cisg
ICAgcmV0dXJuIHN0ZDo6bWF4KG1heFNocmlua1RvRml0U2NhbGVGYWN0b3IsIHNocmlua1RvRml0
U2NhbGVGYWN0b3IpOwogfQogCiB2b2lkIFByaW50Q29udGV4dDo6c3Bvb2xQYWdlKEdyYXBoaWNz
Q29udGV4dCYgY3R4LCBpbnQgcGFnZU51bWJlciwgZmxvYXQgd2lkdGgpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL1NwYXRpYWxOYXZpZ2F0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvU3BhdGlhbE5hdmlnYXRpb24uY3BwCmluZGV4IDFhMjY4ZjRmNTZlZjQwN2IyZDQ4ZTFm
MTZiM2MzZTE2NDE4NWNmMzIuLjkzZjVmZmI3OTM4ODU2MDZkNWM1YzljNTM2ZmE1NjAwNzg4OGM4
ODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU3BhdGlhbE5hdmlnYXRpb24uY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU3BhdGlhbE5hdmlnYXRpb24uY3BwCkBAIC01NzQs
NyArNTc0LDcgQEAgdm9pZCBlbnRyeUFuZEV4aXRQb2ludHNGb3JEaXJlY3Rpb24oRm9jdXNEaXJl
Y3Rpb24gZGlyZWN0aW9uLCBjb25zdCBMYXlvdXRSZWN0JgogICAgICAgICAgICAgZXhpdFBvaW50
LnNldFkoc3RhcnRpbmdSZWN0Lm1heFkoKSk7CiAgICAgICAgICAgICBlbnRyeVBvaW50LnNldFko
cG90ZW50aWFsUmVjdC55KCkpOwogICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgZXhpdFBv
aW50LnNldFkobWF4KHN0YXJ0aW5nUmVjdC55KCksIHBvdGVudGlhbFJlY3QueSgpKSk7CisgICAg
ICAgICAgICBleGl0UG9pbnQuc2V0WShzdGQ6Om1heChzdGFydGluZ1JlY3QueSgpLCBwb3RlbnRp
YWxSZWN0LnkoKSkpOwogICAgICAgICAgICAgZW50cnlQb2ludC5zZXRZKGV4aXRQb2ludC55KCkp
OwogICAgICAgICB9CiAgICAgICAgIGJyZWFrOwpAQCAtNTg3LDcgKzU4Nyw3IEBAIHZvaWQgZW50
cnlBbmRFeGl0UG9pbnRzRm9yRGlyZWN0aW9uKEZvY3VzRGlyZWN0aW9uIGRpcmVjdGlvbiwgY29u
c3QgTGF5b3V0UmVjdCYKICAgICAgICAgICAgIGV4aXRQb2ludC5zZXRYKHN0YXJ0aW5nUmVjdC5t
YXhYKCkpOwogICAgICAgICAgICAgZW50cnlQb2ludC5zZXRYKHBvdGVudGlhbFJlY3QueCgpKTsK
ICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIGV4aXRQb2ludC5zZXRYKG1heChzdGFydGlu
Z1JlY3QueCgpLCBwb3RlbnRpYWxSZWN0LngoKSkpOworICAgICAgICAgICAgZXhpdFBvaW50LnNl
dFgoc3RkOjptYXgoc3RhcnRpbmdSZWN0LngoKSwgcG90ZW50aWFsUmVjdC54KCkpKTsKICAgICAg
ICAgICAgIGVudHJ5UG9pbnQuc2V0WChleGl0UG9pbnQueCgpKTsKICAgICAgICAgfQogICAgICAg
ICBicmVhazsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvYW5pbWF0aW9uL0NTU1By
b3BlcnR5QW5pbWF0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvYW5pbWF0aW9uL0NTU1By
b3BlcnR5QW5pbWF0aW9uLmNwcAppbmRleCA3YWQwNWQ1OGFlYTVhNjFkNGQzZDExMzA3ZWYyOTEz
MzcwNjkxZGZmLi5mOWExYWE0MDAzNzc3NGU5OGYzNWQzNGU5ZDJjNzhmZTA0NTM5ZDAwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2FuaW1hdGlvbi9DU1NQcm9wZXJ0eUFuaW1hdGlv
bi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9hbmltYXRpb24vQ1NTUHJvcGVydHlBbmlt
YXRpb24uY3BwCkBAIC0xNzYsNyArMTc2LDcgQEAgc3RhdGljIGlubGluZSBGaWx0ZXJPcGVyYXRp
b25zIGJsZW5kRmlsdGVyT3BlcmF0aW9ucyhjb25zdCBBbmltYXRpb25CYXNlKiBhbmltLAogICAg
IEZpbHRlck9wZXJhdGlvbnMgcmVzdWx0OwogICAgIHNpemVfdCBmcm9tU2l6ZSA9IGZyb20ub3Bl
cmF0aW9ucygpLnNpemUoKTsKICAgICBzaXplX3QgdG9TaXplID0gdG8ub3BlcmF0aW9ucygpLnNp
emUoKTsKLSAgICBzaXplX3Qgc2l6ZSA9IG1heChmcm9tU2l6ZSwgdG9TaXplKTsKKyAgICBzaXpl
X3Qgc2l6ZSA9IHN0ZDo6bWF4KGZyb21TaXplLCB0b1NpemUpOwogICAgIGZvciAoc2l6ZV90IGkg
PSAwOyBpIDwgc2l6ZTsgaSsrKSB7CiAgICAgICAgIFJlZlB0cjxGaWx0ZXJPcGVyYXRpb24+IGZy
b21PcCA9IChpIDwgZnJvbVNpemUpID8gZnJvbS5vcGVyYXRpb25zKClbaV0uZ2V0KCkgOiAwOwog
ICAgICAgICBSZWZQdHI8RmlsdGVyT3BlcmF0aW9uPiB0b09wID0gKGkgPCB0b1NpemUpID8gdG8u
b3BlcmF0aW9ucygpW2ldLmdldCgpIDogMDsKQEAgLTY5OSw3ICs2OTksNyBAQCBwcml2YXRlOgog
CiAgICAgICAgIE93blB0cjxTaGFkb3dEYXRhPiBuZXdTaGFkb3dEYXRhOwogCi0gICAgICAgIGlu
dCBtYXhMZW5ndGggPSBtYXgoZnJvbUxlbmd0aCwgdG9MZW5ndGgpOworICAgICAgICBpbnQgbWF4
TGVuZ3RoID0gc3RkOjptYXgoZnJvbUxlbmd0aCwgdG9MZW5ndGgpOwogICAgICAgICBmb3IgKGlu
dCBpID0gMDsgaSA8IG1heExlbmd0aDsgKytpKSB7CiAgICAgICAgICAgICBjb25zdCBTaGFkb3dE
YXRhKiBmcm9tU2hhZG93ID0gaSA8IGZyb21MZW5ndGggPyBmcm9tU2hhZG93c1tpXSA6IDA7CiAg
ICAgICAgICAgICBjb25zdCBTaGFkb3dEYXRhKiB0b1NoYWRvdyA9IGkgPCB0b0xlbmd0aCA/IHRv
U2hhZG93c1tpXSA6IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lZmwv
UmVuZGVyVGhlbWVFZmwuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZWZsL1JlbmRlclRo
ZW1lRWZsLmNwcAppbmRleCAwMDllMTMzMjZlZDU5MDIzMDUzMjQ1ZmQxYjFkM2NiNWYxY2RjYjQ3
Li4xYTc3MDkwODM1NjViMDJiZjUzMDBiMDU2MmU3NmFiODAyN2Q4NTczIDEwMDc1NQotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lZmwvUmVuZGVyVGhlbWVFZmwuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2VmbC9SZW5kZXJUaGVtZUVmbC5jcHAKQEAgLTg4MSw3ICs4ODEs
NyBAQCB2b2lkIFJlbmRlclRoZW1lRWZsOjphZGp1c3RNZW51TGlzdEJ1dHRvblN0eWxlKFN0eWxl
UmVzb2x2ZXIqIHN0eWxlUmVzb2x2ZXIsIFJlbgogCiAgICAgLy8gQ2FsY3VsYXRlIG1pbi1oZWln
aHQgb2YgdGhlIDxzZWxlY3Q+IGVsZW1lbnQuCiAgICAgaW50IG1pbkhlaWdodCA9IHN0eWxlLT5m
b250TWV0cmljcygpLmhlaWdodCgpOwotICAgIG1pbkhlaWdodCA9IG1heChtaW5IZWlnaHQsIGRy
b3BEb3duQm94TWluSGVpZ2h0KTsKKyAgICBtaW5IZWlnaHQgPSBzdGQ6Om1heChtaW5IZWlnaHQs
IGRyb3BEb3duQm94TWluSGVpZ2h0KTsKICAgICBzdHlsZS0+c2V0TWluSGVpZ2h0KExlbmd0aCht
aW5IZWlnaHQsIEZpeGVkKSk7CiAKICAgICBhZGp1c3RNZW51TGlzdFN0eWxlKHN0eWxlUmVzb2x2
ZXIsIHN0eWxlLCBlbGVtZW50KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0Zsb2F0UmVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9GbG9hdFJlY3QuY3BwCmluZGV4IGFkNGMyZWJiZWI3MmU2NjVkMGE3ZDZiM2EyNzcxY2ZiMjk4
ZTIzMDkuLjJmYWU0ZTdiNDMyNWRlZTE0NTMzMTJkZWFkODVlYzQ4M2RlMTc3MjUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Zsb2F0UmVjdC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRmxvYXRSZWN0LmNwcApAQCAtMzQsMTIg
KzM0LDExIEBACiAjaW5jbHVkZSA8d3RmL01hdGhFeHRyYXMuaD4KICNpbmNsdWRlIDx3dGYvUHJp
bnRTdHJlYW0uaD4KIAotdXNpbmcgc3RkOjptYXg7Ci11c2luZyBzdGQ6Om1pbjsKLQogbmFtZXNw
YWNlIFdlYkNvcmUgewogCi1GbG9hdFJlY3Q6OkZsb2F0UmVjdChjb25zdCBJbnRSZWN0JiByKSA6
IG1fbG9jYXRpb24oci5sb2NhdGlvbigpKSwgbV9zaXplKHIuc2l6ZSgpKQorRmxvYXRSZWN0OjpG
bG9hdFJlY3QoY29uc3QgSW50UmVjdCYgcikKKyAgICA6IG1fbG9jYXRpb24oci5sb2NhdGlvbigp
KQorICAgICwgbV9zaXplKHIuc2l6ZSgpKQogewogfQogCkBAIC03OCwxMCArNzcsMTAgQEAgYm9v
bCBGbG9hdFJlY3Q6OmNvbnRhaW5zKGNvbnN0IEZsb2F0UG9pbnQmIHBvaW50LCBDb250YWluc01v
ZGUgY29udGFpbnNNb2RlKSBjb24KIAogdm9pZCBGbG9hdFJlY3Q6OmludGVyc2VjdChjb25zdCBG
bG9hdFJlY3QmIG90aGVyKQogewotICAgIGZsb2F0IGwgPSBtYXgoeCgpLCBvdGhlci54KCkpOwot
ICAgIGZsb2F0IHQgPSBtYXgoeSgpLCBvdGhlci55KCkpOwotICAgIGZsb2F0IHIgPSBtaW4obWF4
WCgpLCBvdGhlci5tYXhYKCkpOwotICAgIGZsb2F0IGIgPSBtaW4obWF4WSgpLCBvdGhlci5tYXhZ
KCkpOworICAgIGZsb2F0IGwgPSBzdGQ6Om1heCh4KCksIG90aGVyLngoKSk7CisgICAgZmxvYXQg
dCA9IHN0ZDo6bWF4KHkoKSwgb3RoZXIueSgpKTsKKyAgICBmbG9hdCByID0gc3RkOjptaW4obWF4
WCgpLCBvdGhlci5tYXhYKCkpOworICAgIGZsb2F0IGIgPSBzdGQ6Om1pbihtYXhZKCksIG90aGVy
Lm1heFkoKSk7CiAKICAgICAvLyBSZXR1cm4gYSBjbGVhbiBlbXB0eSByZWN0YW5nbGUgZm9yIG5v
bi1pbnRlcnNlY3RpbmcgY2FzZXMuCiAgICAgaWYgKGwgPj0gciB8fCB0ID49IGIpIHsKQEAgLTEw
OSwxMCArMTA4LDEwIEBAIHZvaWQgRmxvYXRSZWN0Ojp1bml0ZShjb25zdCBGbG9hdFJlY3QmIG90
aGVyKQogCiB2b2lkIEZsb2F0UmVjdDo6dW5pdGVFdmVuSWZFbXB0eShjb25zdCBGbG9hdFJlY3Qm
IG90aGVyKQogewotICAgIGZsb2F0IG1pblggPSBtaW4oeCgpLCBvdGhlci54KCkpOwotICAgIGZs
b2F0IG1pblkgPSBtaW4oeSgpLCBvdGhlci55KCkpOwotICAgIGZsb2F0IG1heFggPSBtYXgodGhp
cy0+bWF4WCgpLCBvdGhlci5tYXhYKCkpOwotICAgIGZsb2F0IG1heFkgPSBtYXgodGhpcy0+bWF4
WSgpLCBvdGhlci5tYXhZKCkpOworICAgIGZsb2F0IG1pblggPSBzdGQ6Om1pbih4KCksIG90aGVy
LngoKSk7CisgICAgZmxvYXQgbWluWSA9IHN0ZDo6bWluKHkoKSwgb3RoZXIueSgpKTsKKyAgICBm
bG9hdCBtYXhYID0gc3RkOjptYXgodGhpcy0+bWF4WCgpLCBvdGhlci5tYXhYKCkpOworICAgIGZs
b2F0IG1heFkgPSBzdGQ6Om1heCh0aGlzLT5tYXhZKCksIG90aGVyLm1heFkoKSk7CiAKICAgICBz
ZXRMb2NhdGlvbkFuZFNpemVGcm9tRWRnZXMobWluWCwgbWluWSwgbWF4WCwgbWF4WSk7CiB9CkBA
IC0xMzIsMTAgKzEzMSwxMCBAQCB2b2lkIEZsb2F0UmVjdDo6dW5pdGVJZk5vblplcm8oY29uc3Qg
RmxvYXRSZWN0JiBvdGhlcikKIAogdm9pZCBGbG9hdFJlY3Q6OmV4dGVuZChjb25zdCBGbG9hdFBv
aW50JiBwKQogewotICAgIGZsb2F0IG1pblggPSBtaW4oeCgpLCBwLngoKSk7Ci0gICAgZmxvYXQg
bWluWSA9IG1pbih5KCksIHAueSgpKTsKLSAgICBmbG9hdCBtYXhYID0gbWF4KHRoaXMtPm1heFgo
KSwgcC54KCkpOwotICAgIGZsb2F0IG1heFkgPSBtYXgodGhpcy0+bWF4WSgpLCBwLnkoKSk7Cisg
ICAgZmxvYXQgbWluWCA9IHN0ZDo6bWluKHgoKSwgcC54KCkpOworICAgIGZsb2F0IG1pblkgPSBz
dGQ6Om1pbih5KCksIHAueSgpKTsKKyAgICBmbG9hdCBtYXhYID0gc3RkOjptYXgodGhpcy0+bWF4
WCgpLCBwLngoKSk7CisgICAgZmxvYXQgbWF4WSA9IHN0ZDo6bWF4KHRoaXMtPm1heFkoKSwgcC55
KCkpOwogCiAgICAgc2V0TG9jYXRpb25BbmRTaXplRnJvbUVkZ2VzKG1pblgsIG1pblksIG1heFgs
IG1heFkpOwogfQpAQCAtMTYxLDEwICsxNjAsMTAgQEAgRmxvYXRSZWN0IHVuaW9uUmVjdChjb25z
dCBWZWN0b3I8RmxvYXRSZWN0PiYgcmVjdHMpCiAKIHZvaWQgRmxvYXRSZWN0OjpmaXRUb1BvaW50
cyhjb25zdCBGbG9hdFBvaW50JiBwMCwgY29uc3QgRmxvYXRQb2ludCYgcDEpCiB7Ci0gICAgZmxv
YXQgbGVmdCA9IG1pbihwMC54KCksIHAxLngoKSk7Ci0gICAgZmxvYXQgdG9wID0gbWluKHAwLnko
KSwgcDEueSgpKTsKLSAgICBmbG9hdCByaWdodCA9IG1heChwMC54KCksIHAxLngoKSk7Ci0gICAg
ZmxvYXQgYm90dG9tID0gbWF4KHAwLnkoKSwgcDEueSgpKTsKKyAgICBmbG9hdCBsZWZ0ID0gc3Rk
OjptaW4ocDAueCgpLCBwMS54KCkpOworICAgIGZsb2F0IHRvcCA9IHN0ZDo6bWluKHAwLnkoKSwg
cDEueSgpKTsKKyAgICBmbG9hdCByaWdodCA9IHN0ZDo6bWF4KHAwLngoKSwgcDEueCgpKTsKKyAg
ICBmbG9hdCBib3R0b20gPSBzdGQ6Om1heChwMC55KCksIHAxLnkoKSk7CiAKICAgICBzZXRMb2Nh
dGlvbkFuZFNpemVGcm9tRWRnZXMobGVmdCwgdG9wLCByaWdodCwgYm90dG9tKTsKIH0KQEAgLTE3
NSwyNSArMTc0LDI1IEBAIG5hbWVzcGFjZSB7CiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KIFQgbWlu
Myhjb25zdCBUJiB2MSwgY29uc3QgVCYgdjIsIGNvbnN0IFQmIHYzKQogewotICAgIHJldHVybiBt
aW4obWluKHYxLCB2MiksIHYzKTsKKyAgICByZXR1cm4gc3RkOjptaW4oc3RkOjptaW4odjEsIHYy
KSwgdjMpOwogfQogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KIFQgbWF4Myhjb25zdCBUJiB2MSwg
Y29uc3QgVCYgdjIsIGNvbnN0IFQmIHYzKQogewotICAgIHJldHVybiBtYXgobWF4KHYxLCB2Miks
IHYzKTsKKyAgICByZXR1cm4gc3RkOjptYXgoc3RkOjptYXgodjEsIHYyKSwgdjMpOwogfQogCiB0
ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KIFQgbWluNChjb25zdCBUJiB2MSwgY29uc3QgVCYgdjIsIGNv
bnN0IFQmIHYzLCBjb25zdCBUJiB2NCkKIHsKLSAgICByZXR1cm4gbWluKG1pbih2MSwgdjIpLCBt
aW4odjMsIHY0KSk7CisgICAgcmV0dXJuIHN0ZDo6bWluKHN0ZDo6bWluKHYxLCB2MiksIHN0ZDo6
bWluKHYzLCB2NCkpOwogfQogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KIFQgbWF4NChjb25zdCBU
JiB2MSwgY29uc3QgVCYgdjIsIGNvbnN0IFQmIHYzLCBjb25zdCBUJiB2NCkKIHsKLSAgICByZXR1
cm4gbWF4KG1heCh2MSwgdjIpLCBtYXgodjMsIHY0KSk7CisgICAgcmV0dXJuIHN0ZDo6bWF4KHN0
ZDo6bWF4KHYxLCB2MiksIHN0ZDo6bWF4KHYzLCB2NCkpOwogfQogCiB9IC8vIGFub255bW91cyBu
YW1lc3BhY2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ds
eXBoUGFnZVRyZWVOb2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ds
eXBoUGFnZVRyZWVOb2RlLmNwcAppbmRleCBhMzZmMzNiYWZmMDY0ZGZhYTJiOGY1Y2EwM2MzMTBi
ZDgyNDY3ZGY0Li42NDU0ZTczZTc2ZTlkYjhmM2JlYTNhNGFmMjNjNDdlNzkzY2RjYjBhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HbHlwaFBhZ2VUcmVlTm9k
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR2x5cGhQYWdlVHJl
ZU5vZGUuY3BwCkBAIC00Myw5ICs0Myw2IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotdXNp
bmcgc3RkOjptYXg7Ci11c2luZyBzdGQ6Om1pbjsKLQogSGFzaE1hcDxpbnQsIEdseXBoUGFnZVRy
ZWVOb2RlKj4qIEdseXBoUGFnZVRyZWVOb2RlOjpyb290cyA9IDA7CiBHbHlwaFBhZ2VUcmVlTm9k
ZSogR2x5cGhQYWdlVHJlZU5vZGU6OnBhZ2VaZXJvUm9vdCA9IDA7CiAKQEAgLTIyOSw4ICsyMjYs
OCBAQCB2b2lkIEdseXBoUGFnZVRyZWVOb2RlOjppbml0aWFsaXplUGFnZShjb25zdCBGb250RGF0
YSogZm9udERhdGEsIHVuc2lnbmVkIHBhZ2VOdQogICAgICAgICAgICAgICAgICAgICBjb25zdCBG
b250RGF0YVJhbmdlJiByYW5nZSA9IHNlZ21lbnRlZEZvbnREYXRhLT5yYW5nZUF0KGkpOwogICAg
ICAgICAgICAgICAgICAgICAvLyBhbGwgdGhpcyBjYXN0aW5nIGlzIHRvIGVuc3VyZSBhbGwgdGhl
IHBhcmFtZXRlcnMgdG8gbWluIGFuZCBtYXggaGF2ZSB0aGUgc2FtZSB0eXBlLAogICAgICAgICAg
ICAgICAgICAgICAvLyB0byBhdm9pZCBhbWJpZ3VvdXMgdGVtcGxhdGUgcGFyYW1ldGVyIGVycm9y
cyBvbiBXaW5kb3dzCi0gICAgICAgICAgICAgICAgICAgIGludCBmcm9tID0gbWF4KDAsIHN0YXRp
Y19jYXN0PGludD4ocmFuZ2UuZnJvbSgpKSAtIHN0YXRpY19jYXN0PGludD4oc3RhcnQpKTsKLSAg
ICAgICAgICAgICAgICAgICAgaW50IHRvID0gMSArIG1pbihzdGF0aWNfY2FzdDxpbnQ+KHJhbmdl
LnRvKCkpIC0gc3RhdGljX2Nhc3Q8aW50PihzdGFydCksIHN0YXRpY19jYXN0PGludD4oR2x5cGhQ
YWdlOjpzaXplKSAtIDEpOworICAgICAgICAgICAgICAgICAgICBpbnQgZnJvbSA9IHN0ZDo6bWF4
KDAsIHN0YXRpY19jYXN0PGludD4ocmFuZ2UuZnJvbSgpKSAtIHN0YXRpY19jYXN0PGludD4oc3Rh
cnQpKTsKKyAgICAgICAgICAgICAgICAgICAgaW50IHRvID0gMSArIHN0ZDo6bWluKHN0YXRpY19j
YXN0PGludD4ocmFuZ2UudG8oKSkgLSBzdGF0aWNfY2FzdDxpbnQ+KHN0YXJ0KSwgc3RhdGljX2Nh
c3Q8aW50PihHbHlwaFBhZ2U6OnNpemUpIC0gMSk7CiAgICAgICAgICAgICAgICAgICAgIGlmIChm
cm9tIDwgc3RhdGljX2Nhc3Q8aW50PihHbHlwaFBhZ2U6OnNpemUpICYmIHRvID4gMCkgewogICAg
ICAgICAgICAgICAgICAgICAgICAgaWYgKGhhdmVHbHlwaHMgJiYgIXNjcmF0Y2hQYWdlKSB7CiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgc2NyYXRjaFBhZ2UgPSBHbHlwaFBhZ2U6OmNyZWF0
ZUZvck1peGVkRm9udERhdGEodGhpcyk7CkBAIC0zMzksNyArMzM2LDcgQEAgR2x5cGhQYWdlVHJl
ZU5vZGUqIEdseXBoUGFnZVRyZWVOb2RlOjpnZXRDaGlsZChjb25zdCBGb250RGF0YSogZm9udERh
dGEsIHVuc2lnbmUKICNlbmRpZgogICAgIGlmIChmb250RGF0YSkgewogICAgICAgICBtX2NoaWxk
cmVuLnNldChmb250RGF0YSwgYWRvcHRQdHIoY2hpbGQpKTsKLSAgICAgICAgZm9udERhdGEtPnNl
dE1heEdseXBoUGFnZVRyZWVMZXZlbChtYXgoZm9udERhdGEtPm1heEdseXBoUGFnZVRyZWVMZXZl
bCgpLCBjaGlsZC0+bV9sZXZlbCkpOworICAgICAgICBmb250RGF0YS0+c2V0TWF4R2x5cGhQYWdl
VHJlZUxldmVsKHN0ZDo6bWF4KGZvbnREYXRhLT5tYXhHbHlwaFBhZ2VUcmVlTGV2ZWwoKSwgY2hp
bGQtPm1fbGV2ZWwpKTsKICAgICB9IGVsc2UgewogICAgICAgICBtX3N5c3RlbUZhbGxiYWNrQ2hp
bGQgPSBhZG9wdFB0cihjaGlsZCk7CiAgICAgICAgIGNoaWxkLT5tX2lzU3lzdGVtRmFsbGJhY2sg
PSB0cnVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW50
UmVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbnRSZWN0LmNwcApp
bmRleCBjZGEwZWMzYjA2ZGJlMDE1OWQzMjM2ODc2ZmM5MDM5MGRlYWM1MjcyLi4wZThmZjk3ODUx
YjRiNDliZjk4OTY1MWM0NWI4M2ZlNGUxZmQ3Mjk2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9JbnRSZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9JbnRSZWN0LmNwcApAQCAtMzEsOSArMzEsNiBAQAogI2luY2x1ZGUgPGFs
Z29yaXRobT4KICNpbmNsdWRlIDx3dGYvUHJpbnRTdHJlYW0uaD4KIAotdXNpbmcgc3RkOjptYXg7
Ci11c2luZyBzdGQ6Om1pbjsKLQogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBJbnRSZWN0OjpJbnRS
ZWN0KGNvbnN0IEZsb2F0UmVjdCYgcikKQEAgLTY0LDEwICs2MSwxMCBAQCBib29sIEludFJlY3Q6
OmNvbnRhaW5zKGNvbnN0IEludFJlY3QmIG90aGVyKSBjb25zdAogCiB2b2lkIEludFJlY3Q6Omlu
dGVyc2VjdChjb25zdCBJbnRSZWN0JiBvdGhlcikKIHsKLSAgICBpbnQgbCA9IG1heCh4KCksIG90
aGVyLngoKSk7Ci0gICAgaW50IHQgPSBtYXgoeSgpLCBvdGhlci55KCkpOwotICAgIGludCByID0g
bWluKG1heFgoKSwgb3RoZXIubWF4WCgpKTsKLSAgICBpbnQgYiA9IG1pbihtYXhZKCksIG90aGVy
Lm1heFkoKSk7CisgICAgaW50IGwgPSBzdGQ6Om1heCh4KCksIG90aGVyLngoKSk7CisgICAgaW50
IHQgPSBzdGQ6Om1heCh5KCksIG90aGVyLnkoKSk7CisgICAgaW50IHIgPSBzdGQ6Om1pbihtYXhY
KCksIG90aGVyLm1heFgoKSk7CisgICAgaW50IGIgPSBzdGQ6Om1pbihtYXhZKCksIG90aGVyLm1h
eFkoKSk7CiAKICAgICAvLyBSZXR1cm4gYSBjbGVhbiBlbXB0eSByZWN0YW5nbGUgZm9yIG5vbi1p
bnRlcnNlY3RpbmcgY2FzZXMuCiAgICAgaWYgKGwgPj0gciB8fCB0ID49IGIpIHsKQEAgLTkzLDEw
ICs5MCwxMCBAQCB2b2lkIEludFJlY3Q6OnVuaXRlKGNvbnN0IEludFJlY3QmIG90aGVyKQogICAg
ICAgICByZXR1cm47CiAgICAgfQogCi0gICAgaW50IGwgPSBtaW4oeCgpLCBvdGhlci54KCkpOwot
ICAgIGludCB0ID0gbWluKHkoKSwgb3RoZXIueSgpKTsKLSAgICBpbnQgciA9IG1heChtYXhYKCks
IG90aGVyLm1heFgoKSk7Ci0gICAgaW50IGIgPSBtYXgobWF4WSgpLCBvdGhlci5tYXhZKCkpOwor
ICAgIGludCBsID0gc3RkOjptaW4oeCgpLCBvdGhlci54KCkpOworICAgIGludCB0ID0gc3RkOjpt
aW4oeSgpLCBvdGhlci55KCkpOworICAgIGludCByID0gc3RkOjptYXgobWF4WCgpLCBvdGhlci5t
YXhYKCkpOworICAgIGludCBiID0gc3RkOjptYXgobWF4WSgpLCBvdGhlci5tYXhZKCkpOwogCiAg
ICAgbV9sb2NhdGlvbi5zZXRYKGwpOwogICAgIG1fbG9jYXRpb24uc2V0WSh0KTsKQEAgLTExNCwx
MCArMTExLDEwIEBAIHZvaWQgSW50UmVjdDo6dW5pdGVJZk5vblplcm8oY29uc3QgSW50UmVjdCYg
b3RoZXIpCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBpbnQgbGVmdCA9IG1pbih4KCks
IG90aGVyLngoKSk7Ci0gICAgaW50IHRvcCA9IG1pbih5KCksIG90aGVyLnkoKSk7Ci0gICAgaW50
IHJpZ2h0ID0gbWF4KG1heFgoKSwgb3RoZXIubWF4WCgpKTsKLSAgICBpbnQgYm90dG9tID0gbWF4
KG1heFkoKSwgb3RoZXIubWF4WSgpKTsKKyAgICBpbnQgbGVmdCA9IHN0ZDo6bWluKHgoKSwgb3Ro
ZXIueCgpKTsKKyAgICBpbnQgdG9wID0gc3RkOjptaW4oeSgpLCBvdGhlci55KCkpOworICAgIGlu
dCByaWdodCA9IHN0ZDo6bWF4KG1heFgoKSwgb3RoZXIubWF4WCgpKTsKKyAgICBpbnQgYm90dG9t
ID0gc3RkOjptYXgobWF4WSgpLCBvdGhlci5tYXhZKCkpOwogCiAgICAgbV9sb2NhdGlvbi5zZXRY
KGxlZnQpOwogICAgIG1fbG9jYXRpb24uc2V0WSh0b3ApOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTGF5b3V0UmVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9MYXlvdXRSZWN0LmNwcAppbmRleCAxYTViOTg5NDg0YjM3YjU5OTZm
MTE4Y2NkNjJlNDBiZjFhMzFkNWJlLi5kY2UwZTEyZGIxNjMxZDdmODRkNTZiMGE2NTI4OGI4MTIx
YTU2NWJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9MYXlv
dXRSZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9MYXlvdXRS
ZWN0LmNwcApAQCAtMzMsOSArMzMsNiBAQAogCiAjaW5jbHVkZSA8YWxnb3JpdGhtPgogCi11c2lu
ZyBzdGQ6Om1heDsKLXVzaW5nIHN0ZDo6bWluOwotCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIExh
eW91dFJlY3Q6OkxheW91dFJlY3QoY29uc3QgRmxvYXRSZWN0JiByKQpAQCAtNjAsOCArNTcsOCBA
QCBib29sIExheW91dFJlY3Q6OmNvbnRhaW5zKGNvbnN0IExheW91dFJlY3QmIG90aGVyKSBjb25z
dAogCiB2b2lkIExheW91dFJlY3Q6OmludGVyc2VjdChjb25zdCBMYXlvdXRSZWN0JiBvdGhlcikK
IHsKLSAgICBMYXlvdXRQb2ludCBuZXdMb2NhdGlvbihtYXgoeCgpLCBvdGhlci54KCkpLCBtYXgo
eSgpLCBvdGhlci55KCkpKTsKLSAgICBMYXlvdXRQb2ludCBuZXdNYXhQb2ludChtaW4obWF4WCgp
LCBvdGhlci5tYXhYKCkpLCBtaW4obWF4WSgpLCBvdGhlci5tYXhZKCkpKTsKKyAgICBMYXlvdXRQ
b2ludCBuZXdMb2NhdGlvbihzdGQ6Om1heCh4KCksIG90aGVyLngoKSksIHN0ZDo6bWF4KHkoKSwg
b3RoZXIueSgpKSk7CisgICAgTGF5b3V0UG9pbnQgbmV3TWF4UG9pbnQoc3RkOjptaW4obWF4WCgp
LCBvdGhlci5tYXhYKCkpLCBzdGQ6Om1pbihtYXhZKCksIG90aGVyLm1heFkoKSkpOwogCiAgICAg
Ly8gUmV0dXJuIGEgY2xlYW4gZW1wdHkgcmVjdGFuZ2xlIGZvciBub24taW50ZXJzZWN0aW5nIGNh
c2VzLgogICAgIGlmIChuZXdMb2NhdGlvbi54KCkgPj0gbmV3TWF4UG9pbnQueCgpIHx8IG5ld0xv
Y2F0aW9uLnkoKSA+PSBuZXdNYXhQb2ludC55KCkpIHsKQEAgLTgzLDggKzgwLDggQEAgdm9pZCBM
YXlvdXRSZWN0Ojp1bml0ZShjb25zdCBMYXlvdXRSZWN0JiBvdGhlcikKICAgICAgICAgcmV0dXJu
OwogICAgIH0KIAotICAgIExheW91dFBvaW50IG5ld0xvY2F0aW9uKG1pbih4KCksIG90aGVyLngo
KSksIG1pbih5KCksIG90aGVyLnkoKSkpOwotICAgIExheW91dFBvaW50IG5ld01heFBvaW50KG1h
eChtYXhYKCksIG90aGVyLm1heFgoKSksIG1heChtYXhZKCksIG90aGVyLm1heFkoKSkpOworICAg
IExheW91dFBvaW50IG5ld0xvY2F0aW9uKHN0ZDo6bWluKHgoKSwgb3RoZXIueCgpKSwgc3RkOjpt
aW4oeSgpLCBvdGhlci55KCkpKTsKKyAgICBMYXlvdXRQb2ludCBuZXdNYXhQb2ludChzdGQ6Om1h
eChtYXhYKCksIG90aGVyLm1heFgoKSksIHN0ZDo6bWF4KG1heFkoKSwgb3RoZXIubWF4WSgpKSk7
CiAKICAgICBtX2xvY2F0aW9uID0gbmV3TG9jYXRpb247CiAgICAgbV9zaXplID0gbmV3TWF4UG9p
bnQgLSBuZXdMb2NhdGlvbjsKQEAgLTEwMCw4ICs5Nyw4IEBAIHZvaWQgTGF5b3V0UmVjdDo6dW5p
dGVJZk5vblplcm8oY29uc3QgTGF5b3V0UmVjdCYgb3RoZXIpCiAgICAgICAgIHJldHVybjsKICAg
ICB9CiAKLSAgICBMYXlvdXRQb2ludCBuZXdMb2NhdGlvbihtaW4oeCgpLCBvdGhlci54KCkpLCBt
aW4oeSgpLCBvdGhlci55KCkpKTsKLSAgICBMYXlvdXRQb2ludCBuZXdNYXhQb2ludChtYXgobWF4
WCgpLCBvdGhlci5tYXhYKCkpLCBtYXgobWF4WSgpLCBvdGhlci5tYXhZKCkpKTsKKyAgICBMYXlv
dXRQb2ludCBuZXdMb2NhdGlvbihzdGQ6Om1pbih4KCksIG90aGVyLngoKSksIHN0ZDo6bWluKHko
KSwgb3RoZXIueSgpKSk7CisgICAgTGF5b3V0UG9pbnQgbmV3TWF4UG9pbnQoc3RkOjptYXgobWF4
WCgpLCBvdGhlci5tYXhYKCkpLCBzdGQ6Om1heChtYXhZKCksIG90aGVyLm1heFkoKSkpOwogCiAg
ICAgbV9sb2NhdGlvbiA9IG5ld0xvY2F0aW9uOwogICAgIG1fc2l6ZSA9IG5ld01heFBvaW50IC0g
bmV3TG9jYXRpb247CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9maWx0ZXJzL0ZFTW9ycGhvbG9neS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9maWx0ZXJzL0ZFTW9ycGhvbG9neS5jcHAKaW5kZXggNmIwMjhlZTM5Mzc2OTI5ZGRlZWI3
ZjM0YWMxNDI3ODI2ZmQyZTZiYy4uMmQzOWU2OTRjYTZkZmJmNGZhNTc0Yzk1MjU4MmI2NWYwNDc3
MTEzOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVy
cy9GRU1vcnBob2xvZ3kuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2ZpbHRlcnMvRkVNb3JwaG9sb2d5LmNwcApAQCAtMzQsOSArMzQsNiBAQAogI2luY2x1ZGUgPHd0
Zi9QYXJhbGxlbEpvYnMuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAKLXVzaW5nIHN0ZDo6
bWluOwotdXNpbmcgc3RkOjptYXg7Ci0KIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogRkVNb3JwaG9s
b2d5OjpGRU1vcnBob2xvZ3koRmlsdGVyKiBmaWx0ZXIsIE1vcnBob2xvZ3lPcGVyYXRvclR5cGUg
dHlwZSwgZmxvYXQgcmFkaXVzWCwgZmxvYXQgcmFkaXVzWSkKQEAgLTExNiw4ICsxMTMsOCBAQCB2
b2lkIEZFTW9ycGhvbG9neTo6cGxhdGZvcm1BcHBseUdlbmVyaWMoUGFpbnRpbmdEYXRhKiBwYWlu
dGluZ0RhdGEsIGludCB5U3RhcnQsCiAKICAgICBWZWN0b3I8dW5zaWduZWQgY2hhcj4gZXh0cmVt
YTsKICAgICBmb3IgKGludCB5ID0geVN0YXJ0OyB5IDwgeUVuZDsgKyt5KSB7Ci0gICAgICAgIGlu
dCBleHRyZW1hU3RhcnRZID0gbWF4KDAsIHkgLSByYWRpdXNZKTsKLSAgICAgICAgaW50IGV4dHJl
bWFFbmRZID0gbWluKGhlaWdodCAtIDEsIHkgKyByYWRpdXNZKTsKKyAgICAgICAgaW50IGV4dHJl
bWFTdGFydFkgPSBzdGQ6Om1heCgwLCB5IC0gcmFkaXVzWSk7CisgICAgICAgIGludCBleHRyZW1h
RW5kWSA9IHN0ZDo6bWluKGhlaWdodCAtIDEsIHkgKyByYWRpdXNZKTsKICAgICAgICAgZm9yICh1
bnNpZ25lZCBpbnQgY2xyQ2hhbm5lbCA9IDA7IGNsckNoYW5uZWwgPCA0OyArK2NsckNoYW5uZWwp
IHsKICAgICAgICAgICAgIGV4dHJlbWEuY2xlYXIoKTsKICAgICAgICAgICAgIC8vIENvbXB1dGUg
ZXh0cmVtYXMgZm9yIGVhY2ggY29sdW1ucwpAQCAtMTM2LDcgKzEzMyw3IEBAIHZvaWQgRkVNb3Jw
aG9sb2d5OjpwbGF0Zm9ybUFwcGx5R2VuZXJpYyhQYWludGluZ0RhdGEqIHBhaW50aW5nRGF0YSwg
aW50IHlTdGFydCwKIAogICAgICAgICAgICAgLy8gS2VybmVsIGlzIGZpbGxlZCwgZ2V0IGV4dHJl
bWEgb2YgbmV4dCBjb2x1bW4KICAgICAgICAgICAgIGZvciAoaW50IHggPSAwOyB4IDwgd2lkdGg7
ICsreCkgewotICAgICAgICAgICAgICAgIGNvbnN0IGludCBlbmRYID0gbWluKHggKyByYWRpdXNY
LCB3aWR0aCAtIDEpOworICAgICAgICAgICAgICAgIGNvbnN0IGludCBlbmRYID0gc3RkOjptaW4o
eCArIHJhZGl1c1gsIHdpZHRoIC0gMSk7CiAgICAgICAgICAgICAgICAgdW5zaWduZWQgY2hhciBj
b2x1bW5FeHRyZW1hID0gc3JjUGl4ZWxBcnJheS0+aXRlbShleHRyZW1hU3RhcnRZICogZWZmZWN0
V2lkdGggKyBlbmRYICogNCArIGNsckNoYW5uZWwpOwogICAgICAgICAgICAgICAgIGZvciAoaW50
IGkgPSBleHRyZW1hU3RhcnRZICsgMTsgaSA8PSBleHRyZW1hRW5kWTsgKytpKSB7CiAgICAgICAg
ICAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIgcGl4ZWwgPSBzcmNQaXhlbEFycmF5LT5pdGVtKGkg
KiBlZmZlY3RXaWR0aCArIGVuZFggKiA0ICsgY2xyQ2hhbm5lbCk7CkBAIC0yMjIsOCArMjE5LDgg
QEAgdm9pZCBGRU1vcnBob2xvZ3k6OnBsYXRmb3JtQXBwbHlTb2Z0d2FyZSgpCiAgICAgcGFpbnRp
bmdEYXRhLmRzdFBpeGVsQXJyYXkgPSBkc3RQaXhlbEFycmF5OwogICAgIHBhaW50aW5nRGF0YS53
aWR0aCA9IGVmZmVjdERyYXdpbmdSZWN0LndpZHRoKCk7CiAgICAgcGFpbnRpbmdEYXRhLmhlaWdo
dCA9IGVmZmVjdERyYXdpbmdSZWN0LmhlaWdodCgpOwotICAgIHBhaW50aW5nRGF0YS5yYWRpdXNY
ID0gbWluKGVmZmVjdERyYXdpbmdSZWN0LndpZHRoKCkgLSAxLCByYWRpdXNYKTsKLSAgICBwYWlu
dGluZ0RhdGEucmFkaXVzWSA9IG1pbihlZmZlY3REcmF3aW5nUmVjdC5oZWlnaHQoKSAtIDEsIHJh
ZGl1c1kpOworICAgIHBhaW50aW5nRGF0YS5yYWRpdXNYID0gc3RkOjptaW4oZWZmZWN0RHJhd2lu
Z1JlY3Qud2lkdGgoKSAtIDEsIHJhZGl1c1gpOworICAgIHBhaW50aW5nRGF0YS5yYWRpdXNZID0g
c3RkOjptaW4oZWZmZWN0RHJhd2luZ1JlY3QuaGVpZ2h0KCkgLSAxLCByYWRpdXNZKTsKIAogICAg
IHBsYXRmb3JtQXBwbHkoJnBhaW50aW5nRGF0YSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ndGsvUmVuZGVyVGhlbWVHdGsuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3RrL1JlbmRlclRoZW1lR3RrLmNwcAppbmRleCBjNzIyZmE2NjA5OTExY2ZjM2FiNWUz
ZWEwMDcwY2I2Nzk2OGU3YzcyLi43NTIzMWY2Y2E5NWMxMTQ0OGUxZWI4N2Q5NmM3NDgxZmI3Mzc0
ZDE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvUmVuZGVyVGhlbWVH
dGsuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9SZW5kZXJUaGVtZUd0ay5j
cHAKQEAgLTY3Nyw3ICs2NzcsNyBAQCBJbnRSZWN0IFJlbmRlclRoZW1lR3RrOjpjYWxjdWxhdGVQ
cm9ncmVzc1JlY3QoUmVuZGVyT2JqZWN0KiByZW5kZXJPYmplY3QsIGNvbnN0CiAgICAgZG91Ymxl
IGFuaW1hdGlvblByb2dyZXNzID0gcmVuZGVyUHJvZ3Jlc3MtPmFuaW1hdGlvblByb2dyZXNzKCk7
CiAKICAgICAvLyBOZXZlciBsZXQgdGhlIHByb2dyZXNzIHJlY3Qgc2hyaW5rIHNtYWxsZXIgdGhh
biAyIHBpeGVscy4KLSAgICBpbnQgbmV3V2lkdGggPSBtYXgoMiwgcHJvZ3Jlc3NSZWN0LndpZHRo
KCkgLyBwcm9ncmVzc0FjdGl2aXR5QmxvY2tzKTsKKyAgICBpbnQgbmV3V2lkdGggPSBzdGQ6Om1h
eCgyLCBwcm9ncmVzc1JlY3Qud2lkdGgoKSAvIHByb2dyZXNzQWN0aXZpdHlCbG9ja3MpOwogICAg
IGludCBtb3ZhYmxlV2lkdGggPSBwcm9ncmVzc1JlY3Qud2lkdGgoKSAtIG5ld1dpZHRoOwogICAg
IHByb2dyZXNzUmVjdC5zZXRXaWR0aChuZXdXaWR0aCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2d0ay9SZW5kZXJUaGVtZUd0azIuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3RrL1JlbmRlclRoZW1lR3RrMi5jcHAKaW5kZXggOTkzZmU0NDJmMzI3NjM1ZjI0
M2FlOWQ1N2Y4ZTY4ODkzYzA1ZGYzMC4uODMyYzJkMjZmMWMwNjU4ZmZiN2YxOWQ5NGVlMjVhMWNk
OTA5ZDM4NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1JlbmRlclRo
ZW1lR3RrMi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1JlbmRlclRoZW1l
R3RrMi5jcHAKQEAgLTU3OSw3ICs1NzksNyBAQCB2b2lkIFJlbmRlclRoZW1lR3RrOjphZGp1c3RJ
bm5lclNwaW5CdXR0b25TdHlsZShTdHlsZVJlc29sdmVyKiwgUmVuZGVyU3R5bGUqIHN0eQogCiAg
ICAgLy8gRm9yY2UgYW4gb2RkIGFycm93IHNpemUgaGVyZS4gR1RLKyAzLnggZm9yY2VzIGV2ZW4g
aW4gdGhpcyBjYXNlLCBidXQKICAgICAvLyBOb2Rva2EtYmFzZWQgdGhlbWVzIGxvb2sgaW5jb3Jy
ZWN0IHdpdGggYW4gZXZlbiBhcnJvdyBzaXplLgotICAgIGludCB3aWR0aCA9IG1heChQQU5HT19Q
SVhFTFMoZm9udFNpemUpLCBtaW5TcGluQnV0dG9uQXJyb3dTaXplKTsKKyAgICBpbnQgd2lkdGgg
PSBzdGQ6Om1heChQQU5HT19QSVhFTFMoZm9udFNpemUpLCBtaW5TcGluQnV0dG9uQXJyb3dTaXpl
KTsKICAgICB3aWR0aCArPSAtKCh3aWR0aCAlIDIpIC0gMSkgKyBndGtTdHlsZS0+eHRoaWNrbmVz
czsKIAogICAgIHN0eWxlLT5zZXRXaWR0aChMZW5ndGgod2lkdGgsIEZpeGVkKSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvUmVuZGVyVGhlbWVHdGszLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9SZW5kZXJUaGVtZUd0azMuY3BwCmluZGV4IDJlY2Ez
OTBhYTBlMzdiOTg1YjNiM2Q3MWI5MWRjMjNkNDI1YTI1OTcuLjI1Mjg3NzNiYTliNzg2M2I2YTVm
YTk4NWZiZDYxNDc5MTM4ZDNmMzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2d0ay9SZW5kZXJUaGVtZUd0azMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0
ay9SZW5kZXJUaGVtZUd0azMuY3BwCkBAIC01MDksOCArNTA5LDggQEAgYm9vbCBSZW5kZXJUaGVt
ZUd0azo6cGFpbnRNZW51TGlzdChSZW5kZXJPYmplY3QqIHJlbmRlck9iamVjdCwgY29uc3QgUGFp
bnRJbmZvJgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCk7CiAgICAg
ICAgIGlubmVyUmVjdC5tb3ZlKGNoaWxkRGlzcGxhY2VtZW50WCwgY2hpbGREaXNwbGFjZW1lbnRZ
KTsKICAgICB9Ci0gICAgaW5uZXJSZWN0LnNldFdpZHRoKG1heCgxLCBpbm5lclJlY3Qud2lkdGgo
KSkpOwotICAgIGlubmVyUmVjdC5zZXRIZWlnaHQobWF4KDEsIGlubmVyUmVjdC5oZWlnaHQoKSkp
OworICAgIGlubmVyUmVjdC5zZXRXaWR0aChzdGQ6Om1heCgxLCBpbm5lclJlY3Qud2lkdGgoKSkp
OworICAgIGlubmVyUmVjdC5zZXRIZWlnaHQoc3RkOjptYXgoMSwgaW5uZXJSZWN0LmhlaWdodCgp
KSk7CiAKICAgICBndGtfc3R5bGVfY29udGV4dF9yZXN0b3JlKGJ1dHRvblN0eWxlQ29udGV4dCk7
CiAKQEAgLTc2OCw3ICs3NjgsNyBAQCBzdGF0aWMgZ2ludCBzcGluQnV0dG9uQXJyb3dTaXplKEd0
a1N0eWxlQ29udGV4dCogY29udGV4dCkKICAgICBQYW5nb0ZvbnREZXNjcmlwdGlvbiogZm9udERl
c2NyaXB0aW9uOwogICAgIGd0a19zdHlsZV9jb250ZXh0X2dldChjb250ZXh0LCBzdGF0aWNfY2Fz
dDxHdGtTdGF0ZUZsYWdzPigwKSwgImZvbnQiLCAmZm9udERlc2NyaXB0aW9uLCBOVUxMKTsKICAg
ICBnaW50IGZvbnRTaXplID0gcGFuZ29fZm9udF9kZXNjcmlwdGlvbl9nZXRfc2l6ZShmb250RGVz
Y3JpcHRpb24pOwotICAgIGdpbnQgYXJyb3dTaXplID0gbWF4KFBBTkdPX1BJWEVMUyhmb250U2l6
ZSksIG1pblNwaW5CdXR0b25BcnJvd1NpemUpOworICAgIGdpbnQgYXJyb3dTaXplID0gc3RkOjpt
YXgoUEFOR09fUElYRUxTKGZvbnRTaXplKSwgbWluU3BpbkJ1dHRvbkFycm93U2l6ZSk7CiAgICAg
cGFuZ29fZm9udF9kZXNjcmlwdGlvbl9mcmVlKGZvbnREZXNjcmlwdGlvbik7CiAKICAgICByZXR1
cm4gYXJyb3dTaXplIC0gYXJyb3dTaXplICUgMjsgLy8gRm9yY2UgZXZlbi4KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9NZW1vcnlQcmVzc3VyZUhhbmRsZXJNYWMubW0g
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvTWVtb3J5UHJlc3N1cmVIYW5kbGVyTWFjLm1t
CmluZGV4IDc2OTY0ZmExMjdiMGZjOTBiZTY1NDc0ZGNiNjg2MjVjZmQ1NzUxY2IuLmU2ZTk2ZGIw
NTg1NTZhYjliMmZiYTg3ZjJlZjFmNGM5ZTJhNjBkZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21hYy9NZW1vcnlQcmVzc3VyZUhhbmRsZXJNYWMubW0KKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWFjL01lbW9yeVByZXNzdXJlSGFuZGxlck1hYy5tbQpAQCAtNDQs
OCArNDQsNiBAQAogI2ltcG9ydCA8bm90aWZ5Lmg+CiAjZW5kaWYKIAotdXNpbmcgc3RkOjptYXg7
Ci0KIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogI2lmICFQTEFURk9STShJT1MpCkBAIC0xNDAsNyAr
MTM4LDcgQEAgdm9pZCBNZW1vcnlQcmVzc3VyZUhhbmRsZXI6OnJlc3BvbmRUb01lbW9yeVByZXNz
dXJlKCkKIAogICAgIHVuc2lnbmVkIGhvbGRPZmZUaW1lID0gKG1vbm90b25pY2FsbHlJbmNyZWFz
aW5nVGltZSgpIC0gc3RhcnRUaW1lKSAqIHNfaG9sZE9mZk11bHRpcGxpZXI7CiAKLSAgICBob2xk
T2ZmKG1heChob2xkT2ZmVGltZSwgc19taW5pbXVtSG9sZE9mZlRpbWUpKTsKKyAgICBob2xkT2Zm
KHN0ZDo6bWF4KGhvbGRPZmZUaW1lLCBzX21pbmltdW1Ib2xkT2ZmVGltZSkpOwogfQogI2VuZGlm
IC8vICFQTEFURk9STShJT1MpCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L3RleHQvVGV4dENvZGVjSUNVLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvVGV4
dENvZGVjSUNVLmNwcAppbmRleCA4NmQ0ZWExNzI2NTQyM2Q0M2NmM2ZjYTYwMzAzZGU0MjY0Mzk5
YmNhLi5iNGJiMzkwN2Y2MTQ4YzM0OTNmNmExN2ZhZjllODIwMDdlMDM2MDE1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1RleHRDb2RlY0lDVS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9UZXh0Q29kZWNJQ1UuY3BwCkBAIC00MCw4ICs0MCw2
IEBACiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgogI2luY2x1ZGUgPHd0Zi91
bmljb2RlL0NoYXJhY3Rlck5hbWVzLmg+CiAKLXVzaW5nIHN0ZDo6bWluOwotCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKIGNvbnN0IHNpemVfdCBDb252ZXJzaW9uQnVmZmVyU2l6ZSA9IDE2Mzg0Owpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1BvcHVwTWVudVdpbi5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vUG9wdXBNZW51V2luLmNwcAppbmRleCA0YzU2
ZmFjZDJhOTNiMzNmNDlhMzZjOTIxODhkMjA1ODViY2FjMzQyLi4xZGQ5NDEzZTgxM2YxMzcwMjQz
OTE1NmRjMGUwMGE0M2Y2ZjIxMjBiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS93aW4vUG9wdXBNZW51V2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4v
UG9wdXBNZW51V2luLmNwcApAQCAtMzMyLDcgKzMzMiw3IEBAIHZvaWQgUG9wdXBNZW51V2luOjpj
YWxjdWxhdGVQb3NpdGlvbkFuZFNpemUoY29uc3QgSW50UmVjdCYgciwgRnJhbWVWaWV3KiB2KQog
ICAgIGludCBpdGVtQ291bnQgPSBjbGllbnQoKS0+bGlzdFNpemUoKTsKICAgICBtX2l0ZW1IZWln
aHQgPSBjbGllbnQoKS0+bWVudVN0eWxlKCkuZm9udCgpLmZvbnRNZXRyaWNzKCkuaGVpZ2h0KCkg
KyBvcHRpb25TcGFjaW5nTWlkZGxlOwogICAgIGludCBuYXR1cmFsSGVpZ2h0ID0gbV9pdGVtSGVp
Z2h0ICogaXRlbUNvdW50OwotICAgIGludCBwb3B1cEhlaWdodCA9IG1pbihtYXhQb3B1cEhlaWdo
dCwgbmF0dXJhbEhlaWdodCk7CisgICAgaW50IHBvcHVwSGVpZ2h0ID0gc3RkOjptaW4obWF4UG9w
dXBIZWlnaHQsIG5hdHVyYWxIZWlnaHQpOwogICAgIC8vIFRoZSBwb3B1cCBzaG91bGQgc2hvdyBh
biBpbnRlZ3JhbCBudW1iZXIgb2YgaXRlbXMgKGkuZS4gbm8gcGFydGlhbCBpdGVtcyBzaG91bGQg
YmUgdmlzaWJsZSkKICAgICBwb3B1cEhlaWdodCAtPSBwb3B1cEhlaWdodCAlIG1faXRlbUhlaWdo
dDsKICAgICAKQEAgLTM1MSw3ICszNTEsNyBAQCB2b2lkIFBvcHVwTWVudVdpbjo6Y2FsY3VsYXRl
UG9zaXRpb25BbmRTaXplKGNvbnN0IEludFJlY3QmIHIsIEZyYW1lVmlldyogdikKICAgICAgICAg
ICAgIGl0ZW1Gb250LnVwZGF0ZShtX3BvcHVwQ2xpZW50LT5mb250U2VsZWN0b3IoKSk7CiAgICAg
ICAgIH0KIAotICAgICAgICBwb3B1cFdpZHRoID0gbWF4KHBvcHVwV2lkdGgsIHN0YXRpY19jYXN0
PGludD4oY2VpbGYoaXRlbUZvbnQud2lkdGgoVGV4dFJ1bih0ZXh0LmNoYXJhY3RlcnMoKSwgdGV4
dC5sZW5ndGgoKSkpKSkpOworICAgICAgICBwb3B1cFdpZHRoID0gc3RkOjptYXgocG9wdXBXaWR0
aCwgc3RhdGljX2Nhc3Q8aW50PihjZWlsZihpdGVtRm9udC53aWR0aChUZXh0UnVuKHRleHQuY2hh
cmFjdGVycygpLCB0ZXh0Lmxlbmd0aCgpKSkpKSk7CiAgICAgfQogCiAgICAgaWYgKG5hdHVyYWxI
ZWlnaHQgPiBtYXhQb3B1cEhlaWdodCkKQEAgLTM1OSwxNCArMzU5LDE0IEBAIHZvaWQgUG9wdXBN
ZW51V2luOjpjYWxjdWxhdGVQb3NpdGlvbkFuZFNpemUoY29uc3QgSW50UmVjdCYgciwgRnJhbWVW
aWV3KiB2KQogICAgICAgICBwb3B1cFdpZHRoICs9IFNjcm9sbGJhclRoZW1lOjp0aGVtZSgpLT5z
Y3JvbGxiYXJUaGlja25lc3MoU21hbGxTY3JvbGxiYXIpOwogCiAgICAgLy8gQWRkIHBhZGRpbmcg
dG8gYWxpZ24gdGhlIHBvcHVwIHRleHQgd2l0aCB0aGUgPHNlbGVjdD4gdGV4dAotICAgIHBvcHVw
V2lkdGggKz0gbWF4PGludD4oMCwgY2xpZW50KCktPmNsaWVudFBhZGRpbmdSaWdodCgpIC0gY2xp
ZW50KCktPmNsaWVudEluc2V0UmlnaHQoKSkgKyBtYXg8aW50PigwLCBjbGllbnQoKS0+Y2xpZW50
UGFkZGluZ0xlZnQoKSAtIGNsaWVudCgpLT5jbGllbnRJbnNldExlZnQoKSk7CisgICAgcG9wdXBX
aWR0aCArPSBzdGQ6Om1heDxpbnQ+KDAsIGNsaWVudCgpLT5jbGllbnRQYWRkaW5nUmlnaHQoKSAt
IGNsaWVudCgpLT5jbGllbnRJbnNldFJpZ2h0KCkpICsgc3RkOjptYXg8aW50PigwLCBjbGllbnQo
KS0+Y2xpZW50UGFkZGluZ0xlZnQoKSAtIGNsaWVudCgpLT5jbGllbnRJbnNldExlZnQoKSk7CiAK
ICAgICAvLyBMZWF2ZSByb29tIGZvciB0aGUgYm9yZGVyCiAgICAgcG9wdXBXaWR0aCArPSAyICog
cG9wdXBXaW5kb3dCb3JkZXJXaWR0aDsKICAgICBwb3B1cEhlaWdodCArPSAyICogcG9wdXBXaW5k
b3dCb3JkZXJXaWR0aDsKIAogICAgIC8vIFRoZSBwb3B1cCBzaG91bGQgYmUgYXQgbGVhc3QgYXMg
d2lkZSBhcyB0aGUgY29udHJvbCBvbiB0aGUgcGFnZQotICAgIHBvcHVwV2lkdGggPSBtYXgoclNj
cmVlbkNvb3Jkcy53aWR0aCgpIC0gY2xpZW50KCktPmNsaWVudEluc2V0TGVmdCgpIC0gY2xpZW50
KCktPmNsaWVudEluc2V0UmlnaHQoKSwgcG9wdXBXaWR0aCk7CisgICAgcG9wdXBXaWR0aCA9IHN0
ZDo6bWF4KHJTY3JlZW5Db29yZHMud2lkdGgoKSAtIGNsaWVudCgpLT5jbGllbnRJbnNldExlZnQo
KSAtIGNsaWVudCgpLT5jbGllbnRJbnNldFJpZ2h0KCksIHBvcHVwV2lkdGgpOwogCiAgICAgLy8g
QWx3YXlzIGxlZnQtYWxpZ24gaXRlbXMgaW4gdGhlIHBvcHVwLiAgVGhpcyBtYXRjaGVzIHBvcHVw
IG1lbnVzIG9uIHRoZSBtYWMuCiAgICAgaW50IHBvcHVwWCA9IHJTY3JlZW5Db29yZHMueCgpICsg
Y2xpZW50KCktPmNsaWVudEluc2V0TGVmdCgpOwpAQCAtNjY1LDEyICs2NjUsMTIgQEAgdm9pZCBQ
b3B1cE1lbnVXaW46OnBhaW50KGNvbnN0IEludFJlY3QmIGRhbWFnZVJlY3QsIEhEQyBoZGMpCiAg
ICAgICAgIGlmIChpdGVtU3R5bGUuaXNWaXNpYmxlKCkpIHsKICAgICAgICAgICAgIGludCB0ZXh0
WCA9IDA7CiAgICAgICAgICAgICBpZiAoY2xpZW50KCktPm1lbnVTdHlsZSgpLnRleHREaXJlY3Rp
b24oKSA9PSBMVFIpIHsKLSAgICAgICAgICAgICAgICB0ZXh0WCA9IG1heDxpbnQ+KDAsIGNsaWVu
dCgpLT5jbGllbnRQYWRkaW5nTGVmdCgpIC0gY2xpZW50KCktPmNsaWVudEluc2V0TGVmdCgpKTsK
KyAgICAgICAgICAgICAgICB0ZXh0WCA9IHN0ZDo6bWF4PGludD4oMCwgY2xpZW50KCktPmNsaWVu
dFBhZGRpbmdMZWZ0KCkgLSBjbGllbnQoKS0+Y2xpZW50SW5zZXRMZWZ0KCkpOwogICAgICAgICAg
ICAgICAgIGlmIChSZW5kZXJUaGVtZTo6ZGVmYXVsdFRoZW1lKCktPnBvcHVwT3B0aW9uU3VwcG9y
dHNUZXh0SW5kZW50KCkpCiAgICAgICAgICAgICAgICAgICAgIHRleHRYICs9IG1pbmltdW1JbnRW
YWx1ZUZvckxlbmd0aChpdGVtU3R5bGUudGV4dEluZGVudCgpLCBpdGVtUmVjdC53aWR0aCgpKTsK
ICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgdGV4dFggPSBpdGVtUmVjdC53
aWR0aCgpIC0gY2xpZW50KCktPm1lbnVTdHlsZSgpLmZvbnQoKS53aWR0aCh0ZXh0UnVuKTsKLSAg
ICAgICAgICAgICAgICB0ZXh0WCA9IG1pbjxpbnQ+KHRleHRYLCB0ZXh0WCAtIGNsaWVudCgpLT5j
bGllbnRQYWRkaW5nUmlnaHQoKSArIGNsaWVudCgpLT5jbGllbnRJbnNldFJpZ2h0KCkpOworICAg
ICAgICAgICAgICAgIHRleHRYID0gc3RkOjptaW48aW50Pih0ZXh0WCwgdGV4dFggLSBjbGllbnQo
KS0+Y2xpZW50UGFkZGluZ1JpZ2h0KCkgKyBjbGllbnQoKS0+Y2xpZW50SW5zZXRSaWdodCgpKTsK
ICAgICAgICAgICAgICAgICBpZiAoUmVuZGVyVGhlbWU6OmRlZmF1bHRUaGVtZSgpLT5wb3B1cE9w
dGlvblN1cHBvcnRzVGV4dEluZGVudCgpKQogICAgICAgICAgICAgICAgICAgICB0ZXh0WCAtPSBt
aW5pbXVtSW50VmFsdWVGb3JMZW5ndGgoaXRlbVN0eWxlLnRleHRJbmRlbnQoKSwgaXRlbVJlY3Qu
d2lkdGgoKSk7CiAgICAgICAgICAgICB9CkBAIC04MzcsNyArODM3LDcgQEAgTFJFU1VMVCBQb3B1
cE1lbnVXaW46OnduZFByb2MoSFdORCBoV25kLCBVSU5UIG1lc3NhZ2UsIFdQQVJBTSB3UGFyYW0s
IExQQVJBTSBsUGEKIAogICAgICAgICAgICAgaW50IHZpc2libGVJdGVtcyA9IHRoaXMtPnZpc2li
bGVJdGVtcygpOwogICAgICAgICAgICAgc2Nyb2xsYmFyKCktPnNldEVuYWJsZWQodmlzaWJsZUl0
ZW1zIDwgY2xpZW50KCktPmxpc3RTaXplKCkpOwotICAgICAgICAgICAgc2Nyb2xsYmFyKCktPnNl
dFN0ZXBzKDEsIG1heCgxLCB2aXNpYmxlSXRlbXMgLSAxKSk7CisgICAgICAgICAgICBzY3JvbGxi
YXIoKS0+c2V0U3RlcHMoMSwgc3RkOjptYXgoMSwgdmlzaWJsZUl0ZW1zIC0gMSkpOwogICAgICAg
ICAgICAgc2Nyb2xsYmFyKCktPnNldFByb3BvcnRpb24odmlzaWJsZUl0ZW1zLCBjbGllbnQoKS0+
bGlzdFNpemUoKSk7CiAKICAgICAgICAgICAgIGJyZWFrOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL0xpbmVXaWR0aC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
TGluZVdpZHRoLmNwcAppbmRleCA3OTg3NTJjZjFjNDBlN2M3YmIxYmYwYmVhMTcxYWI3ZjkwYTdm
OTE0Li4yODMwYmI1OGU5MWI4MTA0MjExNjNiZDE5ZjIxMmVkMzcyMDhhZTIyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvTGluZVdpZHRoLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvTGluZVdpZHRoLmNwcApAQCAtMTg3LDcgKzE4Nyw3IEBAIHZvaWQgTGlu
ZVdpZHRoOjpmaXRCZWxvd0Zsb2F0cygpCiAKICAgICAgICAgbmV3TGluZUxlZnQgPSBtX2Jsb2Nr
LmxvZ2ljYWxMZWZ0T2Zmc2V0Rm9yTGluZShmbG9hdExvZ2ljYWxCb3R0b20sIHNob3VsZEluZGVu
dFRleHQoKSk7CiAgICAgICAgIG5ld0xpbmVSaWdodCA9IG1fYmxvY2subG9naWNhbFJpZ2h0T2Zm
c2V0Rm9yTGluZShmbG9hdExvZ2ljYWxCb3R0b20sIHNob3VsZEluZGVudFRleHQoKSk7Ci0gICAg
ICAgIG5ld0xpbmVXaWR0aCA9IG1heCgwLjBmLCBuZXdMaW5lUmlnaHQgLSBuZXdMaW5lTGVmdCk7
CisgICAgICAgIG5ld0xpbmVXaWR0aCA9IHN0ZDo6bWF4KDAuMGYsIG5ld0xpbmVSaWdodCAtIG5l
d0xpbmVMZWZ0KTsKICAgICAgICAgbGFzdEZsb2F0TG9naWNhbEJvdHRvbSA9IGZsb2F0TG9naWNh
bEJvdHRvbTsKIAogI2lmIEVOQUJMRShDU1NfU0hBUEVTKQpAQCAtMjI5LDcgKzIyOSw3IEBAIHZv
aWQgTGluZVdpZHRoOjp1cGRhdGVDdXJyZW50U2hhcGVTZWdtZW50KCkKIAogdm9pZCBMaW5lV2lk
dGg6OmNvbXB1dGVBdmFpbGFibGVXaWR0aEZyb21MZWZ0QW5kUmlnaHQoKQogewotICAgIG1fYXZh
aWxhYmxlV2lkdGggPSBtYXgoMC4wZiwgbV9yaWdodCAtIG1fbGVmdCkgKyBtX292ZXJoYW5nV2lk
dGg7CisgICAgbV9hdmFpbGFibGVXaWR0aCA9IHN0ZDo6bWF4PGZsb2F0PigwLCBtX3JpZ2h0IC0g
bV9sZWZ0KSArIG1fb3ZlcmhhbmdXaWR0aDsKIH0KIAogYm9vbCBMaW5lV2lkdGg6OmZpdHNPbkxp
bmVFeGNsdWRpbmdUcmFpbGluZ0NvbGxhcHNlZFdoaXRlc3BhY2UoKSBjb25zdApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmggYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suaAppbmRleCBkNmU0NDIyOGUzZTdjODViMmNhNzhmOWQy
OGY5YTc1Y2RhNDM4NDY2Li5kNThjYWMxZGU5YzFjM2ZiYTE5YWY1NDMzNDUxMDBiZDUwYzZlYzMx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suaApAQCAtMTU3LDcgKzE1Nyw3
IEBAIHB1YmxpYzoKICAgICAvLyBjb21wdXRlIHRoZSByZWdpb24gYWxsIG92ZXIgYWdhaW4gd2hl
biB5b3UgYWxyZWFkeSBrbm93IGl0LgogICAgIExheW91dFVuaXQgYXZhaWxhYmxlTG9naWNhbFdp
ZHRoRm9yTGluZShMYXlvdXRVbml0IHBvc2l0aW9uLCBib29sIHNob3VsZEluZGVudFRleHQsIFJl
bmRlclJlZ2lvbiogcmVnaW9uLCBMYXlvdXRVbml0IGxvZ2ljYWxIZWlnaHQgPSAwKSBjb25zdAog
ICAgIHsKLSAgICAgICAgcmV0dXJuIG1heDxMYXlvdXRVbml0PigwLCBsb2dpY2FsUmlnaHRPZmZz
ZXRGb3JMaW5lKHBvc2l0aW9uLCBzaG91bGRJbmRlbnRUZXh0LCByZWdpb24sIGxvZ2ljYWxIZWln
aHQpCisgICAgICAgIHJldHVybiBzdGQ6Om1heDxMYXlvdXRVbml0PigwLCBsb2dpY2FsUmlnaHRP
ZmZzZXRGb3JMaW5lKHBvc2l0aW9uLCBzaG91bGRJbmRlbnRUZXh0LCByZWdpb24sIGxvZ2ljYWxI
ZWlnaHQpCiAgICAgICAgICAgICAtIGxvZ2ljYWxMZWZ0T2Zmc2V0Rm9yTGluZShwb3NpdGlvbiwg
c2hvdWxkSW5kZW50VGV4dCwgcmVnaW9uLCBsb2dpY2FsSGVpZ2h0KSk7CiAgICAgfQogICAgIExh
eW91dFVuaXQgbG9naWNhbFJpZ2h0T2Zmc2V0Rm9yTGluZShMYXlvdXRVbml0IHBvc2l0aW9uLCBi
b29sIHNob3VsZEluZGVudFRleHQsIFJlbmRlclJlZ2lvbiogcmVnaW9uLCBMYXlvdXRVbml0IGxv
Z2ljYWxIZWlnaHQgPSAwKSBjb25zdCAKQEAgLTMzMyw3ICszMzMsNyBAQCBwdWJsaWM6CiAgICAg
TGF5b3V0VW5pdCBsb2dpY2FsUmlnaHRPZmZzZXRGb3JDb250ZW50KFJlbmRlclJlZ2lvbiopIGNv
bnN0OwogICAgIExheW91dFVuaXQgYXZhaWxhYmxlTG9naWNhbFdpZHRoRm9yQ29udGVudChSZW5k
ZXJSZWdpb24qIHJlZ2lvbikgY29uc3QKICAgICB7IAotICAgICAgICByZXR1cm4gbWF4PExheW91
dFVuaXQ+KDAsIGxvZ2ljYWxSaWdodE9mZnNldEZvckNvbnRlbnQocmVnaW9uKSAtIGxvZ2ljYWxM
ZWZ0T2Zmc2V0Rm9yQ29udGVudChyZWdpb24pKTsgfQorICAgICAgICByZXR1cm4gc3RkOjptYXg8
TGF5b3V0VW5pdD4oMCwgbG9naWNhbFJpZ2h0T2Zmc2V0Rm9yQ29udGVudChyZWdpb24pIC0gbG9n
aWNhbExlZnRPZmZzZXRGb3JDb250ZW50KHJlZ2lvbikpOyB9CiAgICAgTGF5b3V0VW5pdCBzdGFy
dE9mZnNldEZvckNvbnRlbnQoUmVuZGVyUmVnaW9uKiByZWdpb24pIGNvbnN0CiAgICAgewogICAg
ICAgICByZXR1cm4gc3R5bGUoKS0+aXNMZWZ0VG9SaWdodERpcmVjdGlvbigpID8gbG9naWNhbExl
ZnRPZmZzZXRGb3JDb250ZW50KHJlZ2lvbikgOiBsb2dpY2FsV2lkdGgoKSAtIGxvZ2ljYWxSaWdo
dE9mZnNldEZvckNvbnRlbnQocmVnaW9uKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJGaWVsZHNldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyRmllbGRzZXQuY3BwCmluZGV4IDk1MmQ3NWUwOTllZWE5M2E1NzVmMzhlZDgxZDQyZWI3MjIx
OWQ4NWUuLjIwOTE1ODFkNDM1ZWNlMTI4M2VmM2QwN2I0Y2NlZWJlMWZmYjA0MTAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGaWVsZHNldC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZpZWxkc2V0LmNwcApAQCAtMzAsOSArMzAsNiBA
QAogI2luY2x1ZGUgIkhUTUxOYW1lcy5oIgogI2luY2x1ZGUgIlBhaW50SW5mby5oIgogCi11c2lu
ZyBzdGQ6Om1pbjsKLXVzaW5nIHN0ZDo6bWF4OwotCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHVz
aW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7CkBAIC01Nyw3ICs1NCw3IEBAIHZvaWQgUmVuZGVyRmll
bGRzZXQ6OmNvbXB1dGVQcmVmZXJyZWRMb2dpY2FsV2lkdGhzKCkKICAgICAgICAgaWYgKGxlZ2Vu
ZE1hcmdpblJpZ2h0LmlzRml4ZWQoKSkKICAgICAgICAgICAgIGxlZ2VuZE1pbldpZHRoICs9IGxl
Z2VuZE1hcmdpblJpZ2h0LnZhbHVlKCk7CiAKLSAgICAgICAgbV9taW5QcmVmZXJyZWRMb2dpY2Fs
V2lkdGggPSBtYXgobV9taW5QcmVmZXJyZWRMb2dpY2FsV2lkdGgsIGxlZ2VuZE1pbldpZHRoICsg
Ym9yZGVyQW5kUGFkZGluZ1dpZHRoKCkpOworICAgICAgICBtX21pblByZWZlcnJlZExvZ2ljYWxX
aWR0aCA9IHN0ZDo6bWF4KG1fbWluUHJlZmVycmVkTG9naWNhbFdpZHRoLCBsZWdlbmRNaW5XaWR0
aCArIGJvcmRlckFuZFBhZGRpbmdXaWR0aCgpKTsKICAgICB9CiB9CiAKQEAgLTExNyw3ICsxMTQs
NyBAQCBSZW5kZXJPYmplY3QqIFJlbmRlckZpZWxkc2V0OjpsYXlvdXRTcGVjaWFsRXhjbHVkZWRD
aGlsZChib29sIHJlbGF5b3V0Q2hpbGRyZW4pCiAgICAgICAgIC8vIG9uIHRoZSBsZWdlbmQncyBt
YXJnaW5zIGFzIHdlIHdhbnQgdG8gc3RpbGwgZm9sbG93IHRoZSBhdXRob3IncyBjdWVzLgogICAg
ICAgICAvLyBGaXJlZm94IGNvbXBsZXRlbHkgaWdub3JlcyB0aGUgbWFyZ2lucyBpbiB0aGlzIGNh
c2Ugd2hpY2ggc2VlbXMgd3JvbmcuCiAgICAgICAgIGxlZ2VuZExvZ2ljYWxUb3AgPSAoZmllbGRz
ZXRCb3JkZXJCZWZvcmUgLSBsZWdlbmRMb2dpY2FsSGVpZ2h0KSAvIDI7Ci0gICAgICAgIGNvbGxh
cHNlZExlZ2VuZEV4dGVudCA9IG1heDxMYXlvdXRVbml0PihmaWVsZHNldEJvcmRlckJlZm9yZSwg
bGVnZW5kTG9naWNhbFRvcCArIGxlZ2VuZExvZ2ljYWxIZWlnaHQgKyBtYXJnaW5BZnRlckZvckNo
aWxkKGxlZ2VuZCkpOworICAgICAgICBjb2xsYXBzZWRMZWdlbmRFeHRlbnQgPSBzdGQ6Om1heDxM
YXlvdXRVbml0PihmaWVsZHNldEJvcmRlckJlZm9yZSwgbGVnZW5kTG9naWNhbFRvcCArIGxlZ2Vu
ZExvZ2ljYWxIZWlnaHQgKyBtYXJnaW5BZnRlckZvckNoaWxkKGxlZ2VuZCkpOwogICAgIH0gZWxz
ZQogICAgICAgICBjb2xsYXBzZWRMZWdlbmRFeHRlbnQgPSBsZWdlbmRMb2dpY2FsSGVpZ2h0ICsg
bWFyZ2luQWZ0ZXJGb3JDaGlsZChsZWdlbmQpOwogCkBAIC0xNzksMTEgKzE3NiwxMSBAQCB2b2lk
IFJlbmRlckZpZWxkc2V0OjpwYWludEJveERlY29yYXRpb25zKFBhaW50SW5mbyYgcGFpbnRJbmZv
LCBjb25zdCBMYXlvdXRQb2ludAogICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD00NzIzNgogICAgIGlmIChzdHlsZSgpLT5pc0hvcml6b250YWxXcml0aW5nTW9k
ZSgpKSB7CiAgICAgICAgIExheW91dFVuaXQgY2xpcFRvcCA9IHBhaW50UmVjdC55KCk7Ci0gICAg
ICAgIExheW91dFVuaXQgY2xpcEhlaWdodCA9IG1heChzdGF0aWNfY2FzdDxMYXlvdXRVbml0Pihz
dHlsZSgpLT5ib3JkZXJUb3BXaWR0aCgpKSwgbGVnZW5kLT5oZWlnaHQoKSAtICgobGVnZW5kLT5o
ZWlnaHQoKSAtIGJvcmRlclRvcCgpKSAvIDIpKTsKKyAgICAgICAgTGF5b3V0VW5pdCBjbGlwSGVp
Z2h0ID0gc3RkOjptYXgoc3RhdGljX2Nhc3Q8TGF5b3V0VW5pdD4oc3R5bGUoKS0+Ym9yZGVyVG9w
V2lkdGgoKSksIGxlZ2VuZC0+aGVpZ2h0KCkgLSAoKGxlZ2VuZC0+aGVpZ2h0KCkgLSBib3JkZXJU
b3AoKSkgLyAyKSk7CiAgICAgICAgIGdyYXBoaWNzQ29udGV4dC0+Y2xpcE91dChwaXhlbFNuYXBw
ZWRJbnRSZWN0KHBhaW50UmVjdC54KCkgKyBsZWdlbmQtPngoKSwgY2xpcFRvcCwgbGVnZW5kLT53
aWR0aCgpLCBjbGlwSGVpZ2h0KSk7CiAgICAgfSBlbHNlIHsKICAgICAgICAgTGF5b3V0VW5pdCBj
bGlwTGVmdCA9IHBhaW50UmVjdC54KCk7Ci0gICAgICAgIExheW91dFVuaXQgY2xpcFdpZHRoID0g
bWF4KHN0YXRpY19jYXN0PExheW91dFVuaXQ+KHN0eWxlKCktPmJvcmRlckxlZnRXaWR0aCgpKSwg
bGVnZW5kLT53aWR0aCgpKTsKKyAgICAgICAgTGF5b3V0VW5pdCBjbGlwV2lkdGggPSBzdGQ6Om1h
eChzdGF0aWNfY2FzdDxMYXlvdXRVbml0PihzdHlsZSgpLT5ib3JkZXJMZWZ0V2lkdGgoKSksIGxl
Z2VuZC0+d2lkdGgoKSk7CiAgICAgICAgIGdyYXBoaWNzQ29udGV4dC0+Y2xpcE91dChwaXhlbFNu
YXBwZWRJbnRSZWN0KGNsaXBMZWZ0LCBwYWludFJlY3QueSgpICsgbGVnZW5kLT55KCksIGNsaXBX
aWR0aCwgbGVnZW5kLT5oZWlnaHQoKSkpOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckZsb3dUaHJlYWQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckZsb3dUaHJlYWQuY3BwCmluZGV4IGE5OGRjOTNlZjRiNmMxOGYzNjcwMmQ3
OTExNGU5NDc2ZjU0YzFhYjEuLmVjOGQ4M2Q4MjQzYTQwOWE2M2FlYjYxNTg4MjcwZWI5ZmVmZDNi
ZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGbG93VGhyZWFk
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRmxvd1RocmVhZC5jcHAK
QEAgLTM2OCw3ICszNjgsNyBAQCB2b2lkIFJlbmRlckZsb3dUaHJlYWQ6OnVwZGF0ZUxvZ2ljYWxX
aWR0aCgpCiAgICAgZm9yIChSZW5kZXJSZWdpb25MaXN0OjppdGVyYXRvciBpdGVyID0gbV9yZWdp
b25MaXN0LmJlZ2luKCk7IGl0ZXIgIT0gbV9yZWdpb25MaXN0LmVuZCgpOyArK2l0ZXIpIHsKICAg
ICAgICAgUmVuZGVyUmVnaW9uKiByZWdpb24gPSAqaXRlcjsKICAgICAgICAgQVNTRVJUKCFyZWdp
b24tPm5lZWRzTGF5b3V0KCkgfHwgcmVnaW9uLT5pc1JlbmRlclJlZ2lvblNldCgpKTsKLSAgICAg
ICAgbG9naWNhbFdpZHRoID0gbWF4KHJlZ2lvbi0+cGFnZUxvZ2ljYWxXaWR0aCgpLCBsb2dpY2Fs
V2lkdGgpOworICAgICAgICBsb2dpY2FsV2lkdGggPSBzdGQ6Om1heChyZWdpb24tPnBhZ2VMb2dp
Y2FsV2lkdGgoKSwgbG9naWNhbFdpZHRoKTsKICAgICB9CiAgICAgc2V0TG9naWNhbFdpZHRoKGxv
Z2ljYWxXaWR0aCk7CiAKQEAgLTExMzIsNyArMTEzMiw3IEBAIGJvb2wgUmVuZGVyRmxvd1RocmVh
ZDo6YWRkRm9yY2VkUmVnaW9uQnJlYWsoY29uc3QgUmVuZGVyQmxvY2sqIGJsb2NrLCBMYXlvdXRV
bml0CiAgICAgICAgIHVwZGF0ZVJlZ2lvbnNGbG93VGhyZWFkUG9ydGlvblJlY3QoKTsKIAogICAg
IGlmIChvZmZzZXRCcmVha0FkanVzdG1lbnQpCi0gICAgICAgICpvZmZzZXRCcmVha0FkanVzdG1l
bnQgPSBtYXg8TGF5b3V0VW5pdD4oMCwgY3VycmVudFJlZ2lvbk9mZnNldEluRmxvd1RocmVhZCAt
IG9mZnNldEJyZWFrSW5GbG93VGhyZWFkKTsKKyAgICAgICAgKm9mZnNldEJyZWFrQWRqdXN0bWVu
dCA9IHN0ZDo6bWF4PExheW91dFVuaXQ+KDAsIGN1cnJlbnRSZWdpb25PZmZzZXRJbkZsb3dUaHJl
YWQgLSBvZmZzZXRCcmVha0luRmxvd1RocmVhZCk7CiAKICAgICByZXR1cm4gaGFzQ29tcHV0ZWRB
dXRvSGVpZ2h0OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckZyYW1lQmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRnJhbWVCYXNl
LmNwcAppbmRleCA4MWMzMDA3MjlhOGUwZTJjY2E0ZjZiY2VkY2EwODdkNzZkZjM5MDU4Li5mNTA1
ZDNlNjJhZjJjNGQ5Zjc2ZDhlNTk5ZGU5Yzc1YjQ3ZTQ0NTU4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRnJhbWVCYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyRnJhbWVCYXNlLmNwcApAQCAtODAsNyArODAsNyBAQCB2b2lkIFJl
bmRlckZyYW1lQmFzZTo6bGF5b3V0V2l0aEZsYXR0ZW5pbmcoYm9vbCBoYXNGaXhlZFdpZHRoLCBi
b29sIGhhc0ZpeGVkSGVpZwogCiAgICAgLy8gbWFrZSBzdXJlIG1pbmltdW0gcHJlZmVycmVkIHdp
ZHRoIGlzIGVuZm9yY2VkCiAgICAgaWYgKGlzU2Nyb2xsYWJsZSB8fCAhaGFzRml4ZWRXaWR0aCkg
ewotICAgICAgICBzZXRXaWR0aChtYXgod2lkdGgoKSwgY2hpbGRSb290LT5taW5QcmVmZXJyZWRM
b2dpY2FsV2lkdGgoKSArIGhCb3JkZXIpKTsKKyAgICAgICAgc2V0V2lkdGgoc3RkOjptYXgod2lk
dGgoKSwgY2hpbGRSb290LT5taW5QcmVmZXJyZWRMb2dpY2FsV2lkdGgoKSArIGhCb3JkZXIpKTsK
ICAgICAgICAgLy8gdXBkYXRlIGFnYWluIHRvIHBhc3MgdGhlIG5ldyB3aWR0aCB0byB0aGUgY2hp
bGQgZnJhbWUKICAgICAgICAgdXBkYXRlV2lkZ2V0UG9zaXRpb24oKTsKICAgICAgICAgY2hpbGRG
cmFtZVZpZXctPmxheW91dCgpOwpAQCAtODgsOSArODgsOSBAQCB2b2lkIFJlbmRlckZyYW1lQmFz
ZTo6bGF5b3V0V2l0aEZsYXR0ZW5pbmcoYm9vbCBoYXNGaXhlZFdpZHRoLCBib29sIGhhc0ZpeGVk
SGVpZwogCiAgICAgLy8gZXhwYW5kIHRoZSBmcmFtZSBieSBzZXR0aW5nIGZyYW1lIGhlaWdodCA9
IGNvbnRlbnQgaGVpZ2h0CiAgICAgaWYgKGlzU2Nyb2xsYWJsZSB8fCAhaGFzRml4ZWRIZWlnaHQg
fHwgY2hpbGRSb290LT5pc0ZyYW1lU2V0KCkpCi0gICAgICAgIHNldEhlaWdodChtYXg8TGF5b3V0
VW5pdD4oaGVpZ2h0KCksIGNoaWxkRnJhbWVWaWV3LT5jb250ZW50c0hlaWdodCgpICsgdkJvcmRl
cikpOworICAgICAgICBzZXRIZWlnaHQoc3RkOjptYXg8TGF5b3V0VW5pdD4oaGVpZ2h0KCksIGNo
aWxkRnJhbWVWaWV3LT5jb250ZW50c0hlaWdodCgpICsgdkJvcmRlcikpOwogICAgIGlmIChpc1Nj
cm9sbGFibGUgfHwgIWhhc0ZpeGVkV2lkdGggfHwgY2hpbGRSb290LT5pc0ZyYW1lU2V0KCkpCi0g
ICAgICAgIHNldFdpZHRoKG1heDxMYXlvdXRVbml0Pih3aWR0aCgpLCBjaGlsZEZyYW1lVmlldy0+
Y29udGVudHNXaWR0aCgpICsgaEJvcmRlcikpOworICAgICAgICBzZXRXaWR0aChzdGQ6Om1heDxM
YXlvdXRVbml0Pih3aWR0aCgpLCBjaGlsZEZyYW1lVmlldy0+Y29udGVudHNXaWR0aCgpICsgaEJv
cmRlcikpOwogCiAgICAgdXBkYXRlV2lkZ2V0UG9zaXRpb24oKTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZyYW1lU2V0LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJGcmFtZVNldC5jcHAKaW5kZXggMmU1ZGIwY2M0ODY5ZjVjMzc3Y2I5
NzBjMmJkNTU2M2EyZDZhMTA3Yy4uMDc1ZTMxMDAzMGEwOGFhM2M3NmZmYjFjNTQwOTUwZGVhZGQ4
NDIxMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZyYW1lU2V0
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRnJhbWVTZXQuY3BwCkBA
IC0xNzMsNyArMTczLDcgQEAgdm9pZCBSZW5kZXJGcmFtZVNldDo6R3JpZEF4aXM6OnJlc2l6ZShp
bnQgc2l6ZSkKIAogdm9pZCBSZW5kZXJGcmFtZVNldDo6bGF5T3V0QXhpcyhHcmlkQXhpcyYgYXhp
cywgY29uc3QgTGVuZ3RoKiBncmlkLCBpbnQgYXZhaWxhYmxlTGVuKQogewotICAgIGF2YWlsYWJs
ZUxlbiA9IG1heChhdmFpbGFibGVMZW4sIDApOworICAgIGF2YWlsYWJsZUxlbiA9IHN0ZDo6bWF4
KGF2YWlsYWJsZUxlbiwgMCk7CiAKICAgICBpbnQqIGdyaWRMYXlvdXQgPSBheGlzLm1fc2l6ZXMu
ZGF0YSgpOwogCkBAIC0xOTgsNyArMTk4LDcgQEAgdm9pZCBSZW5kZXJGcmFtZVNldDo6bGF5T3V0
QXhpcyhHcmlkQXhpcyYgYXhpcywgY29uc3QgTGVuZ3RoKiBncmlkLCBpbnQgYXZhaWxhYmwKICAg
ICAgICAgLy8gQ291bnQgdGhlIHRvdGFsIGxlbmd0aCBvZiBhbGwgb2YgdGhlIGZpeGVkIGNvbHVt
bnMvcm93cyAtPiB0b3RhbEZpeGVkCiAgICAgICAgIC8vIENvdW50IHRoZSBudW1iZXIgb2YgY29s
dW1ucy9yb3dzIHdoaWNoIGFyZSBmaXhlZCAtPiBjb3VudEZpeGVkCiAgICAgICAgIGlmIChncmlk
W2ldLmlzRml4ZWQoKSkgewotICAgICAgICAgICAgZ3JpZExheW91dFtpXSA9IG1heChncmlkW2ld
LmludFZhbHVlKCksIDApOworICAgICAgICAgICAgZ3JpZExheW91dFtpXSA9IHN0ZDo6bWF4KGdy
aWRbaV0uaW50VmFsdWUoKSwgMCk7CiAgICAgICAgICAgICB0b3RhbEZpeGVkICs9IGdyaWRMYXlv
dXRbaV07CiAgICAgICAgICAgICBjb3VudEZpeGVkKys7CiAgICAgICAgIH0KQEAgLTIwNiw3ICsy
MDYsNyBAQCB2b2lkIFJlbmRlckZyYW1lU2V0OjpsYXlPdXRBeGlzKEdyaWRBeGlzJiBheGlzLCBj
b25zdCBMZW5ndGgqIGdyaWQsIGludCBhdmFpbGFibAogICAgICAgICAvLyBDb3VudCB0aGUgdG90
YWwgcGVyY2VudGFnZSBvZiBhbGwgb2YgdGhlIHBlcmNlbnRhZ2UgY29sdW1ucy9yb3dzIC0+IHRv
dGFsUGVyY2VudAogICAgICAgICAvLyBDb3VudCB0aGUgbnVtYmVyIG9mIGNvbHVtbnMvcm93cyB3
aGljaCBhcmUgcGVyY2VudGFnZXMgLT4gY291bnRQZXJjZW50CiAgICAgICAgIGlmIChncmlkW2ld
LmlzUGVyY2VudCgpKSB7Ci0gICAgICAgICAgICBncmlkTGF5b3V0W2ldID0gbWF4KGludFZhbHVl
Rm9yTGVuZ3RoKGdyaWRbaV0sIGF2YWlsYWJsZUxlbiksIDApOworICAgICAgICAgICAgZ3JpZExh
eW91dFtpXSA9IHN0ZDo6bWF4KGludFZhbHVlRm9yTGVuZ3RoKGdyaWRbaV0sIGF2YWlsYWJsZUxl
biksIDApOwogICAgICAgICAgICAgdG90YWxQZXJjZW50ICs9IGdyaWRMYXlvdXRbaV07CiAgICAg
ICAgICAgICBjb3VudFBlcmNlbnQrKzsKICAgICAgICAgfQpAQCAtMjE0LDcgKzIxNCw3IEBAIHZv
aWQgUmVuZGVyRnJhbWVTZXQ6OmxheU91dEF4aXMoR3JpZEF4aXMmIGF4aXMsIGNvbnN0IExlbmd0
aCogZ3JpZCwgaW50IGF2YWlsYWJsCiAgICAgICAgIC8vIENvdW50IHRoZSB0b3RhbCByZWxhdGl2
ZSBvZiBhbGwgdGhlIHJlbGF0aXZlIGNvbHVtbnMvcm93cyAtPiB0b3RhbFJlbGF0aXZlCiAgICAg
ICAgIC8vIENvdW50IHRoZSBudW1iZXIgb2YgY29sdW1ucy9yb3dzIHdoaWNoIGFyZSByZWxhdGl2
ZSAtPiBjb3VudFJlbGF0aXZlCiAgICAgICAgIGlmIChncmlkW2ldLmlzUmVsYXRpdmUoKSkgewot
ICAgICAgICAgICAgdG90YWxSZWxhdGl2ZSArPSBtYXgoZ3JpZFtpXS5pbnRWYWx1ZSgpLCAxKTsK
KyAgICAgICAgICAgIHRvdGFsUmVsYXRpdmUgKz0gc3RkOjptYXgoZ3JpZFtpXS5pbnRWYWx1ZSgp
LCAxKTsKICAgICAgICAgICAgIGNvdW50UmVsYXRpdmUrKzsKICAgICAgICAgfSAgICAgICAgICAg
IAogICAgIH0KQEAgLTI1OSw3ICsyNTksNyBAQCB2b2lkIFJlbmRlckZyYW1lU2V0OjpsYXlPdXRB
eGlzKEdyaWRBeGlzJiBheGlzLCBjb25zdCBMZW5ndGgqIGdyaWQsIGludCBhdmFpbGFibAogCiAg
ICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgZ3JpZExlbjsgKytpKSB7CiAgICAgICAgICAgICBp
ZiAoZ3JpZFtpXS5pc1JlbGF0aXZlKCkpIHsKLSAgICAgICAgICAgICAgICBncmlkTGF5b3V0W2ld
ID0gKG1heChncmlkW2ldLmludFZhbHVlKCksIDEpICogcmVtYWluaW5nUmVsYXRpdmUpIC8gdG90
YWxSZWxhdGl2ZTsKKyAgICAgICAgICAgICAgICBncmlkTGF5b3V0W2ldID0gKHN0ZDo6bWF4KGdy
aWRbaV0uaW50VmFsdWUoKSwgMSkgKiByZW1haW5pbmdSZWxhdGl2ZSkgLyB0b3RhbFJlbGF0aXZl
OwogICAgICAgICAgICAgICAgIHJlbWFpbmluZ0xlbiAtPSBncmlkTGF5b3V0W2ldOwogICAgICAg
ICAgICAgICAgIGxhc3RSZWxhdGl2ZSA9IGk7CiAgICAgICAgICAgICB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU2xpZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJTbGlkZXIuY3BwCmluZGV4IDFkOTQ4NTA5OGE2ODJhYTc0OTJkZGRk
ZDQyYzQyNTkzNDZkMDAxNDUuLmI1MDU4OGU2YzUxODI1OGI2Y2U5NzUzNmEwZTY5NTYzNzQ2ZmFk
NGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTbGlkZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTbGlkZXIuY3BwCkBAIC00Myw4
ICs0Myw2IEBACiAjaW5jbHVkZSA8d3RmL01hdGhFeHRyYXMuaD4KICNpbmNsdWRlIDx3dGYvU3Rh
Y2tTdGF0cy5oPgogCi11c2luZyBzdGQ6Om1pbjsKLQogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBj
b25zdCBpbnQgUmVuZGVyU2xpZGVyOjpkZWZhdWx0VHJhY2tMZW5ndGggPSAxMjk7CkBAIC05NCwx
MyArOTIsMTMgQEAgdm9pZCBSZW5kZXJTbGlkZXI6OmNvbXB1dGVQcmVmZXJyZWRMb2dpY2FsV2lk
dGhzKCkKICAgICAgICAgY29tcHV0ZUludHJpbnNpY0xvZ2ljYWxXaWR0aHMobV9taW5QcmVmZXJy
ZWRMb2dpY2FsV2lkdGgsIG1fbWF4UHJlZmVycmVkTG9naWNhbFdpZHRoKTsKIAogICAgIGlmIChz
dHlsZSgpLT5taW5XaWR0aCgpLmlzRml4ZWQoKSAmJiBzdHlsZSgpLT5taW5XaWR0aCgpLnZhbHVl
KCkgPiAwKSB7Ci0gICAgICAgIG1fbWF4UHJlZmVycmVkTG9naWNhbFdpZHRoID0gbWF4KG1fbWF4
UHJlZmVycmVkTG9naWNhbFdpZHRoLCBhZGp1c3RDb250ZW50Qm94TG9naWNhbFdpZHRoRm9yQm94
U2l6aW5nKHN0eWxlKCktPm1pbldpZHRoKCkudmFsdWUoKSkpOwotICAgICAgICBtX21pblByZWZl
cnJlZExvZ2ljYWxXaWR0aCA9IG1heChtX21pblByZWZlcnJlZExvZ2ljYWxXaWR0aCwgYWRqdXN0
Q29udGVudEJveExvZ2ljYWxXaWR0aEZvckJveFNpemluZyhzdHlsZSgpLT5taW5XaWR0aCgpLnZh
bHVlKCkpKTsKKyAgICAgICAgbV9tYXhQcmVmZXJyZWRMb2dpY2FsV2lkdGggPSBzdGQ6Om1heCht
X21heFByZWZlcnJlZExvZ2ljYWxXaWR0aCwgYWRqdXN0Q29udGVudEJveExvZ2ljYWxXaWR0aEZv
ckJveFNpemluZyhzdHlsZSgpLT5taW5XaWR0aCgpLnZhbHVlKCkpKTsKKyAgICAgICAgbV9taW5Q
cmVmZXJyZWRMb2dpY2FsV2lkdGggPSBzdGQ6Om1heChtX21pblByZWZlcnJlZExvZ2ljYWxXaWR0
aCwgYWRqdXN0Q29udGVudEJveExvZ2ljYWxXaWR0aEZvckJveFNpemluZyhzdHlsZSgpLT5taW5X
aWR0aCgpLnZhbHVlKCkpKTsKICAgICB9CiAKICAgICBpZiAoc3R5bGUoKS0+bWF4V2lkdGgoKS5p
c0ZpeGVkKCkpIHsKLSAgICAgICAgbV9tYXhQcmVmZXJyZWRMb2dpY2FsV2lkdGggPSBtaW4obV9t
YXhQcmVmZXJyZWRMb2dpY2FsV2lkdGgsIGFkanVzdENvbnRlbnRCb3hMb2dpY2FsV2lkdGhGb3JC
b3hTaXppbmcoc3R5bGUoKS0+bWF4V2lkdGgoKS52YWx1ZSgpKSk7Ci0gICAgICAgIG1fbWluUHJl
ZmVycmVkTG9naWNhbFdpZHRoID0gbWluKG1fbWluUHJlZmVycmVkTG9naWNhbFdpZHRoLCBhZGp1
c3RDb250ZW50Qm94TG9naWNhbFdpZHRoRm9yQm94U2l6aW5nKHN0eWxlKCktPm1heFdpZHRoKCku
dmFsdWUoKSkpOworICAgICAgICBtX21heFByZWZlcnJlZExvZ2ljYWxXaWR0aCA9IHN0ZDo6bWlu
KG1fbWF4UHJlZmVycmVkTG9naWNhbFdpZHRoLCBhZGp1c3RDb250ZW50Qm94TG9naWNhbFdpZHRo
Rm9yQm94U2l6aW5nKHN0eWxlKCktPm1heFdpZHRoKCkudmFsdWUoKSkpOworICAgICAgICBtX21p
blByZWZlcnJlZExvZ2ljYWxXaWR0aCA9IHN0ZDo6bWluKG1fbWluUHJlZmVycmVkTG9naWNhbFdp
ZHRoLCBhZGp1c3RDb250ZW50Qm94TG9naWNhbFdpZHRoRm9yQm94U2l6aW5nKHN0eWxlKCktPm1h
eFdpZHRoKCkudmFsdWUoKSkpOwogICAgIH0KIAogICAgIExheW91dFVuaXQgdG9BZGQgPSBib3Jk
ZXJBbmRQYWRkaW5nV2lkdGgoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJUYWJsZUNlbGwuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJs
ZUNlbGwuaAppbmRleCAwMTExNmIyYzUwY2FiOTA2YzM2NzQyNTc3MWQ1MzY3OTA0MzU0MDJjLi41
ZWEyNDllMjgyOWQ4Mzg0YWFiYzBkOGIyOTk5NDllODVkZDgwMjI2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVDZWxsLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlQ2VsbC5oCkBAIC0xMDQsNyArMTA0LDcgQEAgcHVibGlj
OgogICAgICAgICAvLyBDYWxsIGNvbXB1dGVkQ1NTUGFkZGluZyogZGlyZWN0bHkgdG8gYXZvaWQg
aW5jbHVkaW5nIGltcGxpY2l0UGFkZGluZy4KICAgICAgICAgaWYgKCFkb2N1bWVudCgpLmluUXVp
cmtzTW9kZSgpICYmIHN0eWxlKCktPmJveFNpemluZygpICE9IEJPUkRFUl9CT1gpCiAgICAgICAg
ICAgICBzdHlsZUxvZ2ljYWxIZWlnaHQgKz0gKGNvbXB1dGVkQ1NTUGFkZGluZ0JlZm9yZSgpICsg
Y29tcHV0ZWRDU1NQYWRkaW5nQWZ0ZXIoKSkuZmxvb3IoKSArIGJvcmRlckJlZm9yZSgpICsgYm9y
ZGVyQWZ0ZXIoKTsKLSAgICAgICAgcmV0dXJuIG1heChzdHlsZUxvZ2ljYWxIZWlnaHQsIGFkanVz
dGVkTG9naWNhbEhlaWdodCk7CisgICAgICAgIHJldHVybiBzdGQ6Om1heChzdHlsZUxvZ2ljYWxI
ZWlnaHQsIGFkanVzdGVkTG9naWNhbEhlaWdodCk7CiAgICAgfQogCiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUcmVlQXNUZXh0LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJUcmVlQXNUZXh0LmNwcAppbmRleCA3ZGZhZjRiYTBlNGQ2ODVh
Y2Q0OWE3MWExMjZmMjMzZDBhOTQwYjhhLi4yYjJiZTgyYTc5YjI4MWY2NTY1ZjE4ZGRmYzViNDY2
ZWU4NDcyMWViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVHJl
ZUFzVGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRyZWVBc1Rl
eHQuY3BwCkBAIC03MzAsOCArNzMwLDggQEAgc3RhdGljIHZvaWQgd3JpdGVMYXllcnMoVGV4dFN0
cmVhbSYgdHMsIGNvbnN0IFJlbmRlckxheWVyKiByb290TGF5ZXIsIFJlbmRlckxheWUKICAgICAv
LyBGSVhNRTogQXBwbHkgb3ZlcmZsb3cgdG8gdGhlIHJvb3QgbGF5ZXIgdG8gbm90IGJyZWFrIGV2
ZXJ5IHRlc3QuICBDb21wbGV0ZSBoYWNrLiAgU2lnaC4KICAgICBMYXlvdXRSZWN0IHBhaW50RGly
dHlSZWN0KHBhaW50UmVjdCk7CiAgICAgaWYgKHJvb3RMYXllciA9PSBsKSB7Ci0gICAgICAgIHBh
aW50RGlydHlSZWN0LnNldFdpZHRoKG1heDxMYXlvdXRVbml0PihwYWludERpcnR5UmVjdC53aWR0
aCgpLCByb290TGF5ZXItPnJlbmRlckJveCgpLT5sYXlvdXRPdmVyZmxvd1JlY3QoKS5tYXhYKCkp
KTsKLSAgICAgICAgcGFpbnREaXJ0eVJlY3Quc2V0SGVpZ2h0KG1heDxMYXlvdXRVbml0PihwYWlu
dERpcnR5UmVjdC5oZWlnaHQoKSwgcm9vdExheWVyLT5yZW5kZXJCb3goKS0+bGF5b3V0T3ZlcmZs
b3dSZWN0KCkubWF4WSgpKSk7CisgICAgICAgIHBhaW50RGlydHlSZWN0LnNldFdpZHRoKHN0ZDo6
bWF4PExheW91dFVuaXQ+KHBhaW50RGlydHlSZWN0LndpZHRoKCksIHJvb3RMYXllci0+cmVuZGVy
Qm94KCktPmxheW91dE92ZXJmbG93UmVjdCgpLm1heFgoKSkpOworICAgICAgICBwYWludERpcnR5
UmVjdC5zZXRIZWlnaHQoc3RkOjptYXg8TGF5b3V0VW5pdD4ocGFpbnREaXJ0eVJlY3QuaGVpZ2h0
KCksIHJvb3RMYXllci0+cmVuZGVyQm94KCktPmxheW91dE92ZXJmbG93UmVjdCgpLm1heFkoKSkp
OwogICAgICAgICBsLT5zZXRTaXplKGwtPnNpemUoKS5leHBhbmRlZFRvKHBpeGVsU25hcHBlZElu
dFNpemUobWF4TGF5b3V0T3ZlcmZsb3cobC0+cmVuZGVyQm94KCkpLCBMYXlvdXRQb2ludCgwLCAw
KSkpKTsKICAgICB9CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
Um9vdElubGluZUJveC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jvb3RJbmxpbmVCb3gu
aAppbmRleCBhOWJiNWIxNzQ0MjJmYWYzZDAxMjAxMWQwYjliNWE2N2UwMjVhNjUyLi5mOWNhYWZl
ODI4MGE5Yzk4YjYzMTFmNjRjMmVkZTc0MjcyNzdmYTliIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUm9vdElubGluZUJveC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9Sb290SW5saW5lQm94LmgKQEAgLTcxLDEwICs3MSwxMCBAQCBwdWJsaWM6CiAKICAgICBM
YXlvdXRVbml0IHNlbGVjdGlvblRvcCgpIGNvbnN0OwogICAgIExheW91dFVuaXQgc2VsZWN0aW9u
Qm90dG9tKCkgY29uc3Q7Ci0gICAgTGF5b3V0VW5pdCBzZWxlY3Rpb25IZWlnaHQoKSBjb25zdCB7
IHJldHVybiBtYXg8TGF5b3V0VW5pdD4oMCwgc2VsZWN0aW9uQm90dG9tKCkgLSBzZWxlY3Rpb25U
b3AoKSk7IH0KKyAgICBMYXlvdXRVbml0IHNlbGVjdGlvbkhlaWdodCgpIGNvbnN0IHsgcmV0dXJu
IHN0ZDo6bWF4PExheW91dFVuaXQ+KDAsIHNlbGVjdGlvbkJvdHRvbSgpIC0gc2VsZWN0aW9uVG9w
KCkpOyB9CiAKICAgICBMYXlvdXRVbml0IHNlbGVjdGlvblRvcEFkanVzdGVkRm9yUHJlY2VkaW5n
QmxvY2soKSBjb25zdDsKLSAgICBMYXlvdXRVbml0IHNlbGVjdGlvbkhlaWdodEFkanVzdGVkRm9y
UHJlY2VkaW5nQmxvY2soKSBjb25zdCB7IHJldHVybiBtYXg8TGF5b3V0VW5pdD4oMCwgc2VsZWN0
aW9uQm90dG9tKCkgLSBzZWxlY3Rpb25Ub3BBZGp1c3RlZEZvclByZWNlZGluZ0Jsb2NrKCkpOyB9
CisgICAgTGF5b3V0VW5pdCBzZWxlY3Rpb25IZWlnaHRBZGp1c3RlZEZvclByZWNlZGluZ0Jsb2Nr
KCkgY29uc3QgeyByZXR1cm4gc3RkOjptYXg8TGF5b3V0VW5pdD4oMCwgc2VsZWN0aW9uQm90dG9t
KCkgLSBzZWxlY3Rpb25Ub3BBZGp1c3RlZEZvclByZWNlZGluZ0Jsb2NrKCkpOyB9CiAKICAgICBp
bnQgYmxvY2tEaXJlY3Rpb25Qb2ludEluTGluZSgpIGNvbnN0OwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFJvdy5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFJvdy5jcHAKaW5kZXggZDY4ZWVh
ZTkzNWRhNTNhN2YzZDNiNDk3MTQyN2JkZjY0ZmJiYmEyOS4uZDhkNDVlM2RiYzVlNjFkZmI3MWFk
YzhmOWZhYjBkZmUyMGYxYjkwMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L21hdGhtbC9SZW5kZXJNYXRoTUxSb3cuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9tYXRobWwvUmVuZGVyTWF0aE1MUm93LmNwcApAQCAtNjQsNyArNjQsNyBAQCB2b2lkIFJlbmRl
ck1hdGhNTFJvdzo6bGF5b3V0KCkKICAgICAgICAgaWYgKGNoaWxkLT5pc1JlbmRlck1hdGhNTEJs
b2NrKCkgJiYgdG9SZW5kZXJNYXRoTUxCbG9jayhjaGlsZCktPnVuZW1iZWxsaXNoZWRPcGVyYXRv
cigpKQogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIGlmIChjaGlsZC0+aXNCb3goKSkK
LSAgICAgICAgICAgIHN0cmV0Y2hMb2dpY2FsSGVpZ2h0ID0gbWF4PGludD4oc3RyZXRjaExvZ2lj
YWxIZWlnaHQsIHJvdW5kVG9JbnQodG9SZW5kZXJCb3goY2hpbGQpLT5sb2dpY2FsSGVpZ2h0KCkp
KTsKKyAgICAgICAgICAgIHN0cmV0Y2hMb2dpY2FsSGVpZ2h0ID0gc3RkOjptYXg8aW50PihzdHJl
dGNoTG9naWNhbEhlaWdodCwgcm91bmRUb0ludCh0b1JlbmRlckJveChjaGlsZCktPmxvZ2ljYWxI
ZWlnaHQoKSkpOwogICAgIH0KICAgICBpZiAoIXN0cmV0Y2hMb2dpY2FsSGVpZ2h0KQogICAgICAg
ICBzdHJldGNoTG9naWNhbEhlaWdodCA9IHN0eWxlKCktPmZvbnRTaXplKCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFNjcmlwdHMuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxTY3JpcHRzLmNw
cAppbmRleCBhMmQzMzA5MDEwODg2MzdhMDg4ZjExMWE2OGI2NjZlZDM3MDYzZjE3Li4zZjA1N2Iy
NzRlNDM1ZTM5NjJmOTc3MTc2OWE3ZmQxMzQ0NGQ2N2Q5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFNjcmlwdHMuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MU2NyaXB0cy5jcHAKQEAgLTMx
Niw5ICszMTYsOSBAQCB2b2lkIFJlbmRlck1hdGhNTFNjcmlwdHM6OmxheW91dCgpCiAgICAgICAg
ICAgICBMYXlvdXRVbml0IHN1cGVyc2NyaXB0QmFzZWxpbmUgPSBzdXBlcnNjcmlwdC0+Zmlyc3RM
aW5lQmFzZWxpbmUoKTsKICAgICAgICAgICAgIGlmIChzdXBlcnNjcmlwdEJhc2VsaW5lID09IC0x
KQogICAgICAgICAgICAgICAgIHN1cGVyc2NyaXB0QmFzZWxpbmUgPSBzdXBlcnNjcmlwdEhlaWdo
dDsKLSAgICAgICAgICAgIExheW91dFVuaXQgbWluQmFzZWxpbmUgPSBtYXg8TGF5b3V0VW5pdD4o
Zm9udFNpemUgLyAzICsgMSArIHN1cGVyc2NyaXB0QmFzZWxpbmUsIHN1cGVyc2NyaXB0SGVpZ2h0
ICsgYXhpcyArIHN1cGVyc2NyaXB0U2hpZnRWYWx1ZSk7CisgICAgICAgICAgICBMYXlvdXRVbml0
IG1pbkJhc2VsaW5lID0gc3RkOjptYXg8TGF5b3V0VW5pdD4oZm9udFNpemUgLyAzICsgMSArIHN1
cGVyc2NyaXB0QmFzZWxpbmUsIHN1cGVyc2NyaXB0SGVpZ2h0ICsgYXhpcyArIHN1cGVyc2NyaXB0
U2hpZnRWYWx1ZSk7CiAKLSAgICAgICAgICAgIHRvcFBhZGRpbmcgPSBtYXg8TGF5b3V0VW5pdD4o
dG9wUGFkZGluZywgbWluQmFzZWxpbmUgLSBiYXNlQmFzZWxpbmUpOworICAgICAgICAgICAgdG9w
UGFkZGluZyA9IHN0ZDo6bWF4PExheW91dFVuaXQ+KHRvcFBhZGRpbmcsIG1pbkJhc2VsaW5lIC0g
YmFzZUJhc2VsaW5lKTsKICAgICAgICAgfQogCiAgICAgICAgIGlmIChSZW5kZXJCb3gqIHN1YnNj
cmlwdCA9IG1fa2luZCA9PSBTdXBlciA/IDAgOiBzdWJTdXBQYWlyLT5maXJzdENoaWxkQm94KCkp
IHsKQEAgLTMyOCw5ICszMjgsOSBAQCB2b2lkIFJlbmRlck1hdGhNTFNjcmlwdHM6OmxheW91dCgp
CiAgICAgICAgICAgICAgICAgc3Vic2NyaXB0QmFzZWxpbmUgPSBzdWJzY3JpcHRIZWlnaHQ7CiAg
ICAgICAgICAgICBMYXlvdXRVbml0IGJhc2VFeHRlbmRVbmRlckJhc2VsaW5lID0gYmFzZUhlaWdo
dCAtIGJhc2VCYXNlbGluZTsKICAgICAgICAgICAgIExheW91dFVuaXQgc3Vic2NyaXB0VW5kZXJJ
dHNCYXNlbGluZSA9IHN1YnNjcmlwdEhlaWdodCAtIHN1YnNjcmlwdEJhc2VsaW5lOwotICAgICAg
ICAgICAgTGF5b3V0VW5pdCBtaW5FeHRlbmRVbmRlckJhc2VsaW5lID0gbWF4PExheW91dFVuaXQ+
KGZvbnRTaXplIC8gNSArIDEgKyBzdWJzY3JpcHRVbmRlckl0c0Jhc2VsaW5lLCBzdWJzY3JpcHRI
ZWlnaHQgKyBzdWJzY3JpcHRTaGlmdFZhbHVlIC0gYXhpcyk7CisgICAgICAgICAgICBMYXlvdXRV
bml0IG1pbkV4dGVuZFVuZGVyQmFzZWxpbmUgPSBzdGQ6Om1heDxMYXlvdXRVbml0Pihmb250U2l6
ZSAvIDUgKyAxICsgc3Vic2NyaXB0VW5kZXJJdHNCYXNlbGluZSwgc3Vic2NyaXB0SGVpZ2h0ICsg
c3Vic2NyaXB0U2hpZnRWYWx1ZSAtIGF4aXMpOwogCi0gICAgICAgICAgICBib3R0b21QYWRkaW5n
ID0gbWF4PExheW91dFVuaXQ+KGJvdHRvbVBhZGRpbmcsIG1pbkV4dGVuZFVuZGVyQmFzZWxpbmUg
LSBiYXNlRXh0ZW5kVW5kZXJCYXNlbGluZSk7CisgICAgICAgICAgICBib3R0b21QYWRkaW5nID0g
c3RkOjptYXg8TGF5b3V0VW5pdD4oYm90dG9tUGFkZGluZywgbWluRXh0ZW5kVW5kZXJCYXNlbGlu
ZSAtIGJhc2VFeHRlbmRVbmRlckJhc2VsaW5lKTsKICAgICAgICAgfQogICAgIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuaAppbmRleCBlOWQ3YmU2ODJh
ZDViZTc3YmU0N2MxYzA0YjA3ZmNjYzk1NWY4MzRmLi42YTM0MTk4MmIyYmRjNzg2MzU3MGIxZTM4
YzEyODdjYjFlZGRhYmYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5
bGUvUmVuZGVyU3R5bGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVu
ZGVyU3R5bGUuaApAQCAtMTAzLDggKzEwMyw2IEBAIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVu
YW1lIFU+IGlubGluZSBib29sIGNvbXBhcmVFcXVhbChjb25zdCBUJiB0LCBjb25zdCBVJiB1CiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotdXNpbmcgc3RkOjptYXg7Ci0KICNpZiBFTkFCTEUoQ1NT
X0ZJTFRFUlMpCiBjbGFzcyBGaWx0ZXJPcGVyYXRpb25zOwogI2VuZGlmCkBAIC01MjUsNyArNTIz
LDcgQEAgcHVibGljOgogICAgIHVuc2lnbmVkIHNob3J0IGJvcmRlclN0YXJ0V2lkdGgoKSBjb25z
dDsKICAgICB1bnNpZ25lZCBzaG9ydCBib3JkZXJFbmRXaWR0aCgpIGNvbnN0OwogCi0gICAgdW5z
aWduZWQgc2hvcnQgb3V0bGluZVNpemUoKSBjb25zdCB7IHJldHVybiBtYXgoMCwgb3V0bGluZVdp
ZHRoKCkgKyBvdXRsaW5lT2Zmc2V0KCkpOyB9CisgICAgdW5zaWduZWQgc2hvcnQgb3V0bGluZVNp
emUoKSBjb25zdCB7IHJldHVybiBzdGQ6Om1heCgwLCBvdXRsaW5lV2lkdGgoKSArIG91dGxpbmVP
ZmZzZXQoKSk7IH0KICAgICB1bnNpZ25lZCBzaG9ydCBvdXRsaW5lV2lkdGgoKSBjb25zdAogICAg
IHsKICAgICAgICAgaWYgKG1fYmFja2dyb3VuZC0+b3V0bGluZSgpLnN0eWxlKCkgPT0gQk5PTkUp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVHZW5lcmF0
ZWRJbWFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVHZW5lcmF0
ZWRJbWFnZS5jcHAKaW5kZXggMjc4YTg1NzcwMjFhMWIyMTE4NDUwMDE0ZTYzYTk5YTAyYWQ2MzE1
My4uZTRmYzcxMjBmOWY2ODQ1MDI5YWFmYzhjZThjOTk0OWM2M2M5ZDAwYiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlR2VuZXJhdGVkSW1hZ2UuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZUdlbmVyYXRlZEltYWdlLmNw
cApAQCAtNTQsMTAgKzU0LDEwIEBAIExheW91dFNpemUgU3R5bGVHZW5lcmF0ZWRJbWFnZTo6aW1h
Z2VTaXplKGNvbnN0IFJlbmRlckVsZW1lbnQqIHJlbmRlcmVyLCBmbG9hdCBtCiAKICAgICAgICAg
Ly8gRG9uJ3QgbGV0IGltYWdlcyB0aGF0IGhhdmUgYSB3aWR0aC9oZWlnaHQgPj0gMSBzaHJpbmsg
YmVsb3cgMSB3aGVuIHpvb21lZC4KICAgICAgICAgaWYgKGZpeGVkU2l6ZS53aWR0aCgpID4gMCkK
LSAgICAgICAgICAgIHdpZHRoID0gbWF4PExheW91dFVuaXQ+KDEsIHdpZHRoKTsKKyAgICAgICAg
ICAgIHdpZHRoID0gc3RkOjptYXg8TGF5b3V0VW5pdD4oMSwgd2lkdGgpOwogCiAgICAgICAgIGlm
IChmaXhlZFNpemUuaGVpZ2h0KCkgPiAwKQotICAgICAgICAgICAgaGVpZ2h0ID0gbWF4PExheW91
dFVuaXQ+KDEsIGhlaWdodCk7CisgICAgICAgICAgICBoZWlnaHQgPSBzdGQ6Om1heDxMYXlvdXRV
bml0PigxLCBoZWlnaHQpOwogCiAgICAgICAgIHJldHVybiBMYXlvdXRTaXplKHdpZHRoLCBoZWln
aHQpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlRm9udFNp
emVGdW5jdGlvbnMuY3BwIGIvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVGb250U2l6ZUZ1bmN0
aW9ucy5jcHAKaW5kZXggNjhkZGE3MTk5ZWEwYjI2MzhhOTBlNTBlOTc0NGU4YWExODRhODkyOC4u
MGFiM2UxNjNmYjFjNTU5MmQ2NDU3MzM2MTQ2MWI2YzQ1NDMxZjUzZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVGb250U2l6ZUZ1bmN0aW9ucy5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvc3R5bGUvU3R5bGVGb250U2l6ZUZ1bmN0aW9ucy5jcHAKQEAgLTE1Nyw4ICsxNTcs
OCBAQCBmbG9hdCBmb250U2l6ZUZvcktleXdvcmQodW5zaWduZWQga2V5d29yZElELCBib29sIHNo
b3VsZFVzZUZpeGVkRGVmYXVsdFNpemUsIGNvbgogICAgIH0KIAogICAgIC8vIFZhbHVlIGlzIG91
dHNpZGUgdGhlIHJhbmdlIG9mIHRoZSB0YWJsZS4gQXBwbHkgdGhlIHNjYWxlIGZhY3RvciBpbnN0
ZWFkLgotICAgIGZsb2F0IG1pbkxvZ2ljYWxTaXplID0gbWF4KHNldHRpbmdzLT5taW5pbXVtTG9n
aWNhbEZvbnRTaXplKCksIDEpOwotICAgIHJldHVybiBtYXgoZm9udFNpemVGYWN0b3JzW2tleXdv
cmRJRCAtIENTU1ZhbHVlWHhTbWFsbF0gKiBtZWRpdW1TaXplLCBtaW5Mb2dpY2FsU2l6ZSk7Cisg
ICAgZmxvYXQgbWluTG9naWNhbFNpemUgPSBzdGQ6Om1heChzZXR0aW5ncy0+bWluaW11bUxvZ2lj
YWxGb250U2l6ZSgpLCAxKTsKKyAgICByZXR1cm4gc3RkOjptYXgoZm9udFNpemVGYWN0b3JzW2tl
eXdvcmRJRCAtIENTU1ZhbHVlWHhTbWFsbF0gKiBtZWRpdW1TaXplLCBtaW5Mb2dpY2FsU2l6ZSk7
CiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHU1ZHRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU1ZHRWxlbWVudC5j
cHAKaW5kZXggYTQwYjk1OTZjOTI3MzcwZThlZTg4YWVkMThmNWM2OTI2Mzk2MDA0Zi4uODViOGE2
M2QzNWU0MzBiNDU5NjgxZGQ3ZTU1YTMxYTE3OGFiMzI5MyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvc3ZnL1NWR1NWR0VsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdT
VkdFbGVtZW50LmNwcApAQCAtNTM1LDcgKzUzNSw3IEBAIHZvaWQgU1ZHU1ZHRWxlbWVudDo6c2V0
Q3VycmVudFRpbWUoZmxvYXQgc2Vjb25kcykKIHsKICAgICBpZiAoc3RkOjppc25hbihzZWNvbmRz
KSkKICAgICAgICAgcmV0dXJuOwotICAgIHNlY29uZHMgPSBtYXgoc2Vjb25kcywgMC4wZik7Cisg
ICAgc2Vjb25kcyA9IHN0ZDo6bWF4KHNlY29uZHMsIDAuMGYpOwogICAgIG1fdGltZUNvbnRhaW5l
ci0+c2V0RWxhcHNlZChzZWNvbmRzKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9t
YWMvV2ViVmlldy9XZWJGcmFtZVZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dl
YkZyYW1lVmlldy5tbQppbmRleCA2Y2UwZjNhMjdhMzVmMzBhOWI5Yjk2YTdkZWM4MjJiOGJkNTE1
ZGYxLi5mOWZjMTM5MjA4MzM2MGRjNTg2NzA3NWY2ZTBjNjJiN2IwMDYyYjAxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkZyYW1lVmlldy5tbQorKysgYi9Tb3VyY2Uv
V2ViS2l0L21hYy9XZWJWaWV3L1dlYkZyYW1lVmlldy5tbQpAQCAtMjE2LDcgKzIxNiw3IEBAIGVu
dW0gewogLSAoZmxvYXQpX3ZlcnRpY2FsUGFnZVNjcm9sbERpc3RhbmNlCiB7CiAgICAgZmxvYXQg
aGVpZ2h0ID0gW1tzZWxmIF9jb250ZW50Vmlld10gYm91bmRzXS5zaXplLmhlaWdodDsKLSAgICBy
ZXR1cm4gbWF4PGZsb2F0PihoZWlnaHQgKiBTY3JvbGxiYXI6Om1pbkZyYWN0aW9uVG9TdGVwV2hl
blBhZ2luZygpLCBoZWlnaHQgLSBTY3JvbGxiYXI6Om1heE92ZXJsYXBCZXR3ZWVuUGFnZXMoKSk7
CisgICAgcmV0dXJuIHN0ZDo6bWF4PGZsb2F0PihoZWlnaHQgKiBTY3JvbGxiYXI6Om1pbkZyYWN0
aW9uVG9TdGVwV2hlblBhZ2luZygpLCBoZWlnaHQgLSBTY3JvbGxiYXI6Om1heE92ZXJsYXBCZXR3
ZWVuUGFnZXMoKSk7CiB9CiAKIHN0YXRpYyBpbmxpbmUgdm9pZCBhZGRUeXBlc0Zyb21DbGFzcyhO
U011dGFibGVEaWN0aW9uYXJ5ICphbGxUeXBlcywgQ2xhc3Mgb2JqQ0NsYXNzLCBOU0FycmF5ICpz
dXBwb3J0VHlwZXMpCkBAIC02OTgsNyArNjk4LDcgQEAgc3RhdGljIGlubGluZSB2b2lkIGFkZFR5
cGVzRnJvbUNsYXNzKE5TTXV0YWJsZURpY3Rpb25hcnkgKmFsbFR5cGVzLCBDbGFzcyBvYmpDQ2wK
IC0gKGZsb2F0KV9ob3Jpem9udGFsUGFnZVNjcm9sbERpc3RhbmNlCiB7CiAgICAgZmxvYXQgd2lk
dGggPSBbW3NlbGYgX2NvbnRlbnRWaWV3XSBib3VuZHNdLnNpemUud2lkdGg7Ci0gICAgcmV0dXJu
IG1heDxmbG9hdD4od2lkdGggKiBTY3JvbGxiYXI6Om1pbkZyYWN0aW9uVG9TdGVwV2hlblBhZ2lu
ZygpLCB3aWR0aCAtIFNjcm9sbGJhcjo6bWF4T3ZlcmxhcEJldHdlZW5QYWdlcygpKTsKKyAgICBy
ZXR1cm4gc3RkOjptYXg8ZmxvYXQ+KHdpZHRoICogU2Nyb2xsYmFyOjptaW5GcmFjdGlvblRvU3Rl
cFdoZW5QYWdpbmcoKSwgd2lkdGggLSBTY3JvbGxiYXI6Om1heE92ZXJsYXBCZXR3ZWVuUGFnZXMo
KSk7CiB9CiAKIC0gKEJPT0wpX3BhZ2VWZXJ0aWNhbGx5OihCT09MKXVwCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkhUTUxWaWV3Lm1tIGIvU291cmNlL1dlYktpdC9t
YWMvV2ViVmlldy9XZWJIVE1MVmlldy5tbQppbmRleCBlYjViMTE4MWVjYmQ4MmI0ZWVjMjBiZDNj
NGQ1OGQzMTRlZjYwZjg1Li40MGQxYWM1MjhjOTc3YzNjMTlmMmE3MWVjOTZkZTdiZWE4MzRiNDk3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkhUTUxWaWV3Lm1tCisr
KyBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViSFRNTFZpZXcubW0KQEAgLTM5ODQsNyAr
Mzk4NCw3IEBAIHN0YXRpYyBQYXNzUmVmUHRyPEtleWJvYXJkRXZlbnQ+IGN1cnJlbnRLZXlib2Fy
ZEV2ZW50KEZyYW1lKiBjb3JlRnJhbWUpCiAgICAgZmxvYXQgdXNlclNjYWxlRmFjdG9yID0gW3By
aW50T3BlcmF0aW9uIF93ZWJfcGFnZVNldHVwU2NhbGVGYWN0b3JdOwogICAgIGZsb2F0IG1heFNo
cmlua1RvRml0U2NhbGVGYWN0b3IgPSAxLjBmIC8gX1dlYkhUTUxWaWV3UHJpbnRpbmdNYXhpbXVt
U2hyaW5rRmFjdG9yOwogICAgIGZsb2F0IHNocmlua1RvRml0U2NhbGVGYWN0b3IgPSAodXNlVmll
d1dpZHRoID8gW3ByaW50T3BlcmF0aW9uIF93ZWJfYXZhaWxhYmxlUGFwZXJXaWR0aF0gOiAgW3By
aW50T3BlcmF0aW9uIF93ZWJfYXZhaWxhYmxlUGFwZXJIZWlnaHRdKSAvIHZpZXdMb2dpY2FsV2lk
dGg7Ci0gICAgcmV0dXJuIHVzZXJTY2FsZUZhY3RvciAqIG1heChtYXhTaHJpbmtUb0ZpdFNjYWxl
RmFjdG9yLCBzaHJpbmtUb0ZpdFNjYWxlRmFjdG9yKTsKKyAgICByZXR1cm4gdXNlclNjYWxlRmFj
dG9yICogc3RkOjptYXgobWF4U2hyaW5rVG9GaXRTY2FsZUZhY3Rvciwgc2hyaW5rVG9GaXRTY2Fs
ZUZhY3Rvcik7CiB9CiAKIC8vIEZJWE1FIDM0OTEzNDQ6IFRoaXMgaXMgYSBzZWNyZXQgQXBwS2l0
LWludGVybmFsIG1ldGhvZCB0aGF0IHdlIG5lZWQgdG8gb3ZlcnJpZGUgaW4gb3JkZXIKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlldy5tbSBiL1NvdXJjZS9XZWJL
aXQvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQppbmRleCA3NTBjNzlhZmMyYTBlZjhlZGNjYjFiZjYw
MDRkMzE5NmFlNDQ4ODE2Li4xOTU1OWNiZDlhOWE3OTM0MWQ4NDU5NmRkYWVmMTliZTMyOTgzNGRh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXcubW0KKysrIGIv
U291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCkBAIC02MDcxLDcgKzYwNzEsNyBA
QCBzdGF0aWMgaW5saW5lIHVpbnQ2NF90IHJvdW5kVXBUb1Bvd2VyT2YyKHVpbnQ2NF90IG51bSkK
IAogICAgICAgICAvLyBUaGlzIGNvZGUgaXMgaGVyZSB0byBhdm9pZCBhIFBMVCByZWdyZXNzaW9u
LiBXZSBjYW4gcmVtb3ZlIGl0IGlmIHdlCiAgICAgICAgIC8vIGNhbiBwcm92ZSB0aGF0IHRoZSBv
dmVyYWxsIHN5c3RlbSBnYWluIHdvdWxkIGp1c3RpZnkgdGhlIHJlZ3Jlc3Npb24uCi0gICAgICAg
IGNhY2hlTWF4RGVhZENhcGFjaXR5ID0gbWF4KDI0dSwgY2FjaGVNYXhEZWFkQ2FwYWNpdHkpOwor
ICAgICAgICBjYWNoZU1heERlYWRDYXBhY2l0eSA9IHN0ZDo6bWF4PHVuc2lnbmVkPigyNCwgY2Fj
aGVNYXhEZWFkQ2FwYWNpdHkpOwogCiAgICAgICAgIGRlYWREZWNvZGVkRGF0YURlbGV0aW9uSW50
ZXJ2YWwgPSA2MDsKIApAQCAtNjEwOCw3ICs2MTA4LDcgQEAgc3RhdGljIGlubGluZSB1aW50NjRf
dCByb3VuZFVwVG9Qb3dlck9mMih1aW50NjRfdCBudW0pCiAKIAogICAgIC8vIERvbid0IHNocmlu
ayBhIGJpZyBkaXNrIGNhY2hlLCBzaW5jZSB0aGF0IHdvdWxkIGNhdXNlIGNodXJuLgotICAgIG5z
dXJsQ2FjaGVEaXNrQ2FwYWNpdHkgPSBtYXgobnN1cmxDYWNoZURpc2tDYXBhY2l0eSwgW25zdXJs
Q2FjaGUgZGlza0NhcGFjaXR5XSk7CisgICAgbnN1cmxDYWNoZURpc2tDYXBhY2l0eSA9IHN0ZDo6
bWF4KG5zdXJsQ2FjaGVEaXNrQ2FwYWNpdHksIFtuc3VybENhY2hlIGRpc2tDYXBhY2l0eV0pOwog
CiAgICAgbWVtb3J5Q2FjaGUoKS0+c2V0Q2FwYWNpdGllcyhjYWNoZU1pbkRlYWRDYXBhY2l0eSwg
Y2FjaGVNYXhEZWFkQ2FwYWNpdHksIGNhY2hlVG90YWxDYXBhY2l0eSk7CiAgICAgbWVtb3J5Q2Fj
aGUoKS0+c2V0RGVhZERlY29kZWREYXRhRGVsZXRpb25JbnRlcnZhbChkZWFkRGVjb2RlZERhdGFE
ZWxldGlvbkludGVydmFsKTsKQEAgLTYxMzUsNyArNjEzNSw3IEBAIHN0YXRpYyBpbmxpbmUgdWlu
dDY0X3Qgcm91bmRVcFRvUG93ZXJPZjIodWludDY0X3QgbnVtKQogICAgIFdlYkNhY2hlTW9kZWwg
Y2FjaGVNb2RlbCA9IFdlYkNhY2hlTW9kZWxEb2N1bWVudFZpZXdlcjsKICAgICBOU0VudW1lcmF0
b3IgKmVudW1lcmF0b3IgPSBbKE5TTXV0YWJsZVNldCAqKWFsbFdlYlZpZXdzU2V0IG9iamVjdEVu
dW1lcmF0b3JdOwogICAgIHdoaWxlIChXZWJQcmVmZXJlbmNlcyAqcHJlZmVyZW5jZXMgPSBbW2Vu
dW1lcmF0b3IgbmV4dE9iamVjdF0gcHJlZmVyZW5jZXNdKQotICAgICAgICBjYWNoZU1vZGVsID0g
bWF4KGNhY2hlTW9kZWwsIFtwcmVmZXJlbmNlcyBjYWNoZU1vZGVsXSk7CisgICAgICAgIGNhY2hl
TW9kZWwgPSBzdGQ6Om1heChjYWNoZU1vZGVsLCBbcHJlZmVyZW5jZXMgY2FjaGVNb2RlbF0pOwog
ICAgIHJldHVybiBjYWNoZU1vZGVsOwogfQogCkBAIC02MTQ4LDcgKzYxNDgsNyBAQCBzdGF0aWMg
aW5saW5lIHVpbnQ2NF90IHJvdW5kVXBUb1Bvd2VyT2YyKHVpbnQ2NF90IG51bSkKICAgICBpZiAo
IVtzZWxmIF9kaWRTZXRDYWNoZU1vZGVsXSB8fCBjYWNoZU1vZGVsID4gW3NlbGYgX2NhY2hlTW9k
ZWxdKQogICAgICAgICBbc2VsZiBfc2V0Q2FjaGVNb2RlbDpjYWNoZU1vZGVsXTsKICAgICBlbHNl
IGlmIChjYWNoZU1vZGVsIDwgW3NlbGYgX2NhY2hlTW9kZWxdKQotICAgICAgICBbc2VsZiBfc2V0
Q2FjaGVNb2RlbDptYXgoW1tXZWJQcmVmZXJlbmNlcyBzdGFuZGFyZFByZWZlcmVuY2VzXSBjYWNo
ZU1vZGVsXSwgW3NlbGYgX21heENhY2hlTW9kZWxJbkFueUluc3RhbmNlXSldOworICAgICAgICBb
c2VsZiBfc2V0Q2FjaGVNb2RlbDpzdGQ6Om1heChbW1dlYlByZWZlcmVuY2VzIHN0YW5kYXJkUHJl
ZmVyZW5jZXNdIGNhY2hlTW9kZWxdLCBbc2VsZiBfbWF4Q2FjaGVNb2RlbEluQW55SW5zdGFuY2Vd
KV07CiB9CiAKICsgKHZvaWQpX3ByZWZlcmVuY2VzUmVtb3ZlZE5vdGlmaWNhdGlvbjooTlNOb3Rp
ZmljYXRpb24gKilub3RpZmljYXRpb24KQEAgLTYxNTcsNyArNjE1Nyw3IEBAIHN0YXRpYyBpbmxp
bmUgdWludDY0X3Qgcm91bmRVcFRvUG93ZXJPZjIodWludDY0X3QgbnVtKQogICAgIEFTU0VSVChb
cHJlZmVyZW5jZXMgaXNLaW5kT2ZDbGFzczpbV2ViUHJlZmVyZW5jZXMgY2xhc3NdXSk7CiAKICAg
ICBpZiAoW3ByZWZlcmVuY2VzIGNhY2hlTW9kZWxdID09IFtzZWxmIF9jYWNoZU1vZGVsXSkKLSAg
ICAgICAgW3NlbGYgX3NldENhY2hlTW9kZWw6bWF4KFtbV2ViUHJlZmVyZW5jZXMgc3RhbmRhcmRQ
cmVmZXJlbmNlc10gY2FjaGVNb2RlbF0sIFtzZWxmIF9tYXhDYWNoZU1vZGVsSW5BbnlJbnN0YW5j
ZV0pXTsKKyAgICAgICAgW3NlbGYgX3NldENhY2hlTW9kZWw6c3RkOjptYXgoW1tXZWJQcmVmZXJl
bmNlcyBzdGFuZGFyZFByZWZlcmVuY2VzXSBjYWNoZU1vZGVsXSwgW3NlbGYgX21heENhY2hlTW9k
ZWxJbkFueUluc3RhbmNlXSldOwogfQogCiAtIChXZWJGcmFtZSAqKV9mb2N1c2VkRnJhbWUKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvbWFjL1dlYlByb2Nlc3NNYWMubW0g
Yi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL21hYy9XZWJQcm9jZXNzTWFjLm1tCmluZGV4IDkx
ZGM0ZGJmMmFkNGQ0MjhkNzM1MjBkODI0YTkxMzFjYzViOTdjZTMuLjRkZDY1YTVlMWY3NjI1Zjky
ODQxZjY4Zjc5N2M1MGExZTgzMDQ5YTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvbWFjL1dlYlByb2Nlc3NNYWMubW0KKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9tYWMvV2ViUHJvY2Vzc01hYy5tbQpAQCAtMTI2LDcgKzEyNiw3IEBAIHZvaWQgV2ViUHJvY2Vz
czo6cGxhdGZvcm1TZXRDYWNoZU1vZGVsKENhY2hlTW9kZWwgY2FjaGVNb2RlbCkKICNlbmRpZgog
CiAgICAgW25zdXJsQ2FjaGUgc2V0TWVtb3J5Q2FwYWNpdHk6dXJsQ2FjaGVNZW1vcnlDYXBhY2l0
eV07Ci0gICAgW25zdXJsQ2FjaGUgc2V0RGlza0NhcGFjaXR5Om1heDx1bnNpZ25lZCBsb25nPih1
cmxDYWNoZURpc2tDYXBhY2l0eSwgW25zdXJsQ2FjaGUgZGlza0NhcGFjaXR5XSldOyAvLyBEb24n
dCBzaHJpbmsgYSBiaWcgZGlzayBjYWNoZSwgc2luY2UgdGhhdCB3b3VsZCBjYXVzZSBjaHVybi4K
KyAgICBbbnN1cmxDYWNoZSBzZXREaXNrQ2FwYWNpdHk6c3RkOjptYXg8dW5zaWduZWQgbG9uZz4o
dXJsQ2FjaGVEaXNrQ2FwYWNpdHksIFtuc3VybENhY2hlIGRpc2tDYXBhY2l0eV0pXTsgLy8gRG9u
J3Qgc2hyaW5rIGEgYmlnIGRpc2sgY2FjaGUsIHNpbmNlIHRoYXQgd291bGQgY2F1c2UgY2h1cm4u
CiB9CiAKIHZvaWQgV2ViUHJvY2Vzczo6cGxhdGZvcm1DbGVhclJlc291cmNlQ2FjaGVzKFJlc291
cmNlQ2FjaGVzVG9DbGVhciBjYWNoZXNUb0NsZWFyKQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>