<?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>122635</bug_id>
          
          <creation_ts>2013-10-10 20:16:38 -0700</creation_ts>
          <short_desc>Change most call sites to call ICU directly instead of through WTF::Unicode</short_desc>
          <delta_ts>2013-11-02 10:36:53 -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>Web Template Framework</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>123668</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Darin Adler">darin</reporter>
          <assigned_to name="Darin Adler">darin</assigned_to>
          <cc>ap</cc>
    
    <cc>commit-queue</cc>
    
    <cc>paroga</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>938663</commentid>
    <comment_count>0</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2013-10-10 20:16:38 -0700</bug_when>
    <thetext>Change most call sites to call ICU directly instead of through WTF::Unicode</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>938683</commentid>
    <comment_count>1</comment_count>
      <attachid>213966</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2013-10-10 22:24:06 -0700</bug_when>
    <thetext>Created attachment 213966
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>938684</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-10-10 22:25:46 -0700</bug_when>
    <thetext>Attachment 213966 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/JavaScriptCore/ChangeLog&apos;, u&apos;Source/JavaScriptCore/parser/Lexer.cpp&apos;, u&apos;Source/JavaScriptCore/parser/Lexer.h&apos;, u&apos;Source/JavaScriptCore/runtime/JSFunction.cpp&apos;, u&apos;Source/JavaScriptCore/runtime/JSGlobalObjectFunctions.cpp&apos;, u&apos;Source/JavaScriptCore/yarr/YarrInterpreter.cpp&apos;, u&apos;Source/WTF/ChangeLog&apos;, u&apos;Source/WTF/wtf/text/StringHash.h&apos;, u&apos;Source/WTF/wtf/text/StringImpl.cpp&apos;, u&apos;Source/WTF/wtf/text/StringImpl.h&apos;, u&apos;Source/WTF/wtf/text/WTFString.h&apos;, u&apos;Source/WTF/wtf/unicode/icu/UnicodeIcu.h&apos;, u&apos;Source/WTF/wtf/unicode/wchar/UnicodeWchar.cpp&apos;, u&apos;Source/WTF/wtf/unicode/wchar/UnicodeWchar.h&apos;, u&apos;Source/WebCore/ChangeLog&apos;, u&apos;Source/WebCore/Modules/indexeddb/IDBKeyPath.cpp&apos;, u&apos;Source/WebCore/css/CSSParser.cpp&apos;, u&apos;Source/WebCore/dom/Document.cpp&apos;, u&apos;Source/WebCore/editing/Editor.cpp&apos;, u&apos;Source/WebCore/editing/TextIterator.cpp&apos;, u&apos;Source/WebCore/html/HTMLElement.cpp&apos;, u&apos;Source/WebCore/html/HTMLSelectElement.cpp&apos;, u&apos;Source/WebCore/html/TypeAhead.cpp&apos;, u&apos;Source/WebCore/html/track/TextTrackCue.cpp&apos;, u&apos;Source/WebCore/page/ContextMenuController.cpp&apos;, u&apos;Source/WebCore/platform/graphics/Font.cpp&apos;, u&apos;Source/WebCore/platform/graphics/FontGlyphs.cpp&apos;, u&apos;Source/WebCore/platform/graphics/GraphicsContext.cpp&apos;, u&apos;Source/WebCore/platform/graphics/SVGGlyph.cpp&apos;, u&apos;Source/WebCore/platform/graphics/SurrogatePairAwareTextIterator.cpp&apos;, u&apos;Source/WebCore/platform/graphics/WidthIterator.cpp&apos;, u&apos;Source/WebCore/platform/graphics/mac/ComplexTextController.cpp&apos;, u&apos;Source/WebCore/platform/text/BidiContext.cpp&apos;, u&apos;Source/WebCore/platform/text/BidiContext.h&apos;, u&apos;Source/WebCore/platform/text/BidiResolver.h&apos;, u&apos;Source/WebCore/platform/text/SegmentedString.h&apos;, u&apos;Source/WebCore/platform/text/TextBoundaries.cpp&apos;, u&apos;Source/WebCore/platform/text/TextBoundaries.h&apos;, u&apos;Source/WebCore/platform/text/mac/TextBoundaries.mm&apos;, u&apos;Source/WebCore/rendering/BidiRun.h&apos;, u&apos;Source/WebCore/rendering/InlineFlowBox.h&apos;, u&apos;Source/WebCore/rendering/InlineIterator.h&apos;, u&apos;Source/WebCore/rendering/RenderBlock.cpp&apos;, u&apos;Source/WebCore/rendering/RenderBlockLineLayout.cpp&apos;, u&apos;Source/WebCore/rendering/RenderListMarker.cpp&apos;, u&apos;Source/WebCore/rendering/RenderMenuList.cpp&apos;, u&apos;Source/WebCore/rendering/RenderText.cpp&apos;, u&apos;Source/WebCore/rendering/RootInlineBox.cpp&apos;, u&apos;Source/WebCore/svg/SVGFontData.cpp&apos;, u&apos;Source/WebCore/xml/XPathParser.cpp&apos;]&quot; exit_code: 1
Source/WebCore/platform/text/TextBoundaries.h:33:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
Source/WebCore/platform/text/TextBoundaries.h:38:  WK_U_LB_CONDITIONAL_JAPANESE_STARTER is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
Source/WTF/wtf/unicode/wchar/UnicodeWchar.h:36:  enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
Source/WTF/wtf/unicode/wchar/UnicodeWchar.h:39:  enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
Source/WTF/wtf/unicode/wchar/UnicodeWchar.h:40:  enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
Source/WTF/wtf/unicode/wchar/UnicodeWchar.h:41:  enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
Source/WTF/wtf/unicode/wchar/UnicodeWchar.h:45:  enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
Source/WTF/wtf/unicode/wchar/UnicodeWchar.h:46:  enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
Source/WTF/wtf/unicode/wchar/UnicodeWchar.h:47:  enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
Source/WTF/wtf/unicode/wchar/UnicodeWchar.h:48:  enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
Source/WTF/wtf/unicode/wchar/UnicodeWchar.h:49:  enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
Source/WTF/wtf/unicode/wchar/UnicodeWchar.h:50:  enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
Source/WTF/wtf/unicode/wchar/UnicodeWchar.h:51:  enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
Source/WTF/wtf/unicode/wchar/UnicodeWchar.h:52:  enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
Source/WTF/wtf/unicode/wchar/UnicodeWchar.h:53:  enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
Source/WTF/wtf/unicode/wchar/UnicodeWchar.h:54:  enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
Source/WTF/wtf/unicode/wchar/UnicodeWchar.h:55:  enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
Source/WTF/wtf/unicode/wchar/UnicodeWchar.h:56:  enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
Source/WTF/wtf/unicode/wchar/UnicodeWchar.h:57:  enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
Source/WTF/wtf/unicode/wchar/UnicodeWchar.h:58:  enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
Source/WTF/wtf/unicode/wchar/UnicodeWchar.h:59:  enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
Source/WTF/wtf/unicode/wchar/UnicodeWchar.h:60:  enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
Source/WTF/wtf/unicode/wchar/UnicodeWchar.h:61:  enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
Source/WTF/wtf/unicode/wchar/UnicodeWchar.h:62:  enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
Source/WTF/wtf/unicode/wchar/UnicodeWchar.h:63:  enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
Source/WTF/wtf/unicode/wchar/UnicodeWchar.h:68:  enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
Source/WTF/wtf/unicode/wchar/UnicodeWchar.h:70:  enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
Source/WTF/wtf/unicode/wchar/UnicodeWchar.h:72:  enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
Source/WTF/wtf/unicode/wchar/UnicodeWchar.h:74:  enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
Source/WTF/wtf/unicode/wchar/UnicodeWchar.h:76:  enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
Source/WTF/wtf/unicode/wchar/UnicodeWchar.h:113:  ublock_getCode is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
Source/WTF/wtf/unicode/wchar/UnicodeWchar.h:114:  The parameter name &quot;mode&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/WTF/wtf/unicode/wchar/UnicodeWchar.h:118:  More than one command on the same line  [whitespace/newline] [4]
Source/WTF/wtf/unicode/wchar/UnicodeWchar.h:118:  u_foldCase is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
Source/WTF/wtf/unicode/wchar/UnicodeWchar.h:121:  u_isalnum is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
Source/WTF/wtf/unicode/wchar/UnicodeWchar.h:122:  u_ispunct is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
Source/WTF/wtf/unicode/wchar/UnicodeWchar.h:124:  u_print is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
Source/WTF/wtf/unicode/wchar/UnicodeWchar.h:128:  u_tolower is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
Source/WTF/wtf/unicode/wchar/UnicodeWchar.h:129:  u_totitle is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
Source/WTF/wtf/unicode/wchar/UnicodeWchar.h:130:  u_toupper is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
Source/WebCore/platform/text/BidiResolver.h:573:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
Source/WebCore/platform/text/BidiResolver.h:604:  A case label should not be indented, but line up with its switch statement.  [whitespace/indent] [4]
Source/WebCore/platform/text/BidiResolver.h:662:  A case label should not be indented, but line up with its switch statement.  [whitespace/indent] [4]
Source/WebCore/platform/text/BidiResolver.h:703:  A case label should not be indented, but line up with its switch statement.  [whitespace/indent] [4]
Source/WebCore/platform/text/BidiResolver.h:766:  A case label should not be indented, but line up with its switch statement.  [whitespace/indent] [4]
Source/WebCore/platform/text/BidiResolver.h:843:  A case label should not be indented, but line up with its switch statement.  [whitespace/indent] [4]
Source/WTF/wtf/unicode/wchar/UnicodeWchar.cpp:30:  unorm_normalize is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
Source/WTF/wtf/unicode/wchar/UnicodeWchar.cpp:35:  u_charDirection is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
Source/WTF/wtf/unicode/wchar/UnicodeWchar.cpp:40:  u_charMirror is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
Source/WTF/wtf/unicode/wchar/UnicodeWchar.cpp:46:  u_charType is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
Source/WTF/wtf/unicode/wchar/UnicodeWchar.cpp:52:  u_getCombiningClass is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
Source/WTF/wtf/unicode/wchar/UnicodeWchar.cpp:58:  u_getIntPropertyValue is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
Source/WTF/wtf/unicode/wchar/UnicodeWchar.cpp:73:  u_memcasecmp is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
Source/WTF/wtf/unicode/wchar/UnicodeWchar.cpp:100:  u_strFoldCase is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
Source/WTF/wtf/unicode/wchar/UnicodeWchar.cpp:106:  u_strToLower is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
Source/WTF/wtf/unicode/wchar/UnicodeWchar.cpp:111:  u_strToUpper is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
Source/WebCore/platform/graphics/mac/ComplexTextController.cpp:330:  Tests for true/false, null/non-null, and zero/non-zero should all be done without equality comparisons.  [readability/comparison_to_zero] [5]
Total errors found: 57 in 48 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>938698</commentid>
    <comment_count>3</comment_count>
      <attachid>213968</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2013-10-10 23:09:58 -0700</bug_when>
    <thetext>Created attachment 213968
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>938699</commentid>
    <comment_count>4</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2013-10-10 23:10:44 -0700</bug_when>
    <thetext>Original patch had a small bug where I forgot to reinitialize status to U_ZERO_ERROR in one code path.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>938700</commentid>
    <comment_count>5</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-10-10 23:11:35 -0700</bug_when>
    <thetext>Attachment 213968 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/JavaScriptCore/ChangeLog&apos;, u&apos;Source/JavaScriptCore/parser/Lexer.cpp&apos;, u&apos;Source/JavaScriptCore/parser/Lexer.h&apos;, u&apos;Source/JavaScriptCore/runtime/JSFunction.cpp&apos;, u&apos;Source/JavaScriptCore/runtime/JSGlobalObjectFunctions.cpp&apos;, u&apos;Source/JavaScriptCore/yarr/YarrInterpreter.cpp&apos;, u&apos;Source/WTF/ChangeLog&apos;, u&apos;Source/WTF/wtf/text/StringHash.h&apos;, u&apos;Source/WTF/wtf/text/StringImpl.cpp&apos;, u&apos;Source/WTF/wtf/text/StringImpl.h&apos;, u&apos;Source/WTF/wtf/text/WTFString.h&apos;, u&apos;Source/WTF/wtf/unicode/icu/UnicodeIcu.h&apos;, u&apos;Source/WTF/wtf/unicode/wchar/UnicodeWchar.cpp&apos;, u&apos;Source/WTF/wtf/unicode/wchar/UnicodeWchar.h&apos;, u&apos;Source/WebCore/ChangeLog&apos;, u&apos;Source/WebCore/Modules/indexeddb/IDBKeyPath.cpp&apos;, u&apos;Source/WebCore/css/CSSParser.cpp&apos;, u&apos;Source/WebCore/dom/Document.cpp&apos;, u&apos;Source/WebCore/editing/Editor.cpp&apos;, u&apos;Source/WebCore/editing/TextIterator.cpp&apos;, u&apos;Source/WebCore/html/HTMLElement.cpp&apos;, u&apos;Source/WebCore/html/HTMLSelectElement.cpp&apos;, u&apos;Source/WebCore/html/TypeAhead.cpp&apos;, u&apos;Source/WebCore/html/track/TextTrackCue.cpp&apos;, u&apos;Source/WebCore/page/ContextMenuController.cpp&apos;, u&apos;Source/WebCore/platform/graphics/Font.cpp&apos;, u&apos;Source/WebCore/platform/graphics/FontGlyphs.cpp&apos;, u&apos;Source/WebCore/platform/graphics/GraphicsContext.cpp&apos;, u&apos;Source/WebCore/platform/graphics/SVGGlyph.cpp&apos;, u&apos;Source/WebCore/platform/graphics/SurrogatePairAwareTextIterator.cpp&apos;, u&apos;Source/WebCore/platform/graphics/WidthIterator.cpp&apos;, u&apos;Source/WebCore/platform/graphics/mac/ComplexTextController.cpp&apos;, u&apos;Source/WebCore/platform/text/BidiContext.cpp&apos;, u&apos;Source/WebCore/platform/text/BidiContext.h&apos;, u&apos;Source/WebCore/platform/text/BidiResolver.h&apos;, u&apos;Source/WebCore/platform/text/SegmentedString.h&apos;, u&apos;Source/WebCore/platform/text/TextBoundaries.cpp&apos;, u&apos;Source/WebCore/platform/text/TextBoundaries.h&apos;, u&apos;Source/WebCore/platform/text/mac/TextBoundaries.mm&apos;, u&apos;Source/WebCore/rendering/BidiRun.h&apos;, u&apos;Source/WebCore/rendering/InlineFlowBox.h&apos;, u&apos;Source/WebCore/rendering/InlineIterator.h&apos;, u&apos;Source/WebCore/rendering/RenderBlock.cpp&apos;, u&apos;Source/WebCore/rendering/RenderBlockLineLayout.cpp&apos;, u&apos;Source/WebCore/rendering/RenderListMarker.cpp&apos;, u&apos;Source/WebCore/rendering/RenderMenuList.cpp&apos;, u&apos;Source/WebCore/rendering/RenderText.cpp&apos;, u&apos;Source/WebCore/rendering/RootInlineBox.cpp&apos;, u&apos;Source/WebCore/svg/SVGFontData.cpp&apos;, u&apos;Source/WebCore/xml/XPathParser.cpp&apos;]&quot; exit_code: 1
Source/WebCore/platform/text/TextBoundaries.h:33:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
Source/WebCore/platform/text/TextBoundaries.h:38:  WK_U_LB_CONDITIONAL_JAPANESE_STARTER is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
Source/WTF/wtf/unicode/wchar/UnicodeWchar.h:36:  enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
Source/WTF/wtf/unicode/wchar/UnicodeWchar.h:39:  enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
Source/WTF/wtf/unicode/wchar/UnicodeWchar.h:40:  enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
Source/WTF/wtf/unicode/wchar/UnicodeWchar.h:41:  enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
Source/WTF/wtf/unicode/wchar/UnicodeWchar.h:45:  enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
Source/WTF/wtf/unicode/wchar/UnicodeWchar.h:46:  enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
Source/WTF/wtf/unicode/wchar/UnicodeWchar.h:47:  enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
Source/WTF/wtf/unicode/wchar/UnicodeWchar.h:48:  enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
Source/WTF/wtf/unicode/wchar/UnicodeWchar.h:49:  enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
Source/WTF/wtf/unicode/wchar/UnicodeWchar.h:50:  enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
Source/WTF/wtf/unicode/wchar/UnicodeWchar.h:51:  enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
Source/WTF/wtf/unicode/wchar/UnicodeWchar.h:52:  enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
Source/WTF/wtf/unicode/wchar/UnicodeWchar.h:53:  enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
Source/WTF/wtf/unicode/wchar/UnicodeWchar.h:54:  enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
Source/WTF/wtf/unicode/wchar/UnicodeWchar.h:55:  enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
Source/WTF/wtf/unicode/wchar/UnicodeWchar.h:56:  enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
Source/WTF/wtf/unicode/wchar/UnicodeWchar.h:57:  enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
Source/WTF/wtf/unicode/wchar/UnicodeWchar.h:58:  enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
Source/WTF/wtf/unicode/wchar/UnicodeWchar.h:59:  enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
Source/WTF/wtf/unicode/wchar/UnicodeWchar.h:60:  enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
Source/WTF/wtf/unicode/wchar/UnicodeWchar.h:61:  enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
Source/WTF/wtf/unicode/wchar/UnicodeWchar.h:62:  enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
Source/WTF/wtf/unicode/wchar/UnicodeWchar.h:63:  enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
Source/WTF/wtf/unicode/wchar/UnicodeWchar.h:68:  enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
Source/WTF/wtf/unicode/wchar/UnicodeWchar.h:70:  enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
Source/WTF/wtf/unicode/wchar/UnicodeWchar.h:72:  enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
Source/WTF/wtf/unicode/wchar/UnicodeWchar.h:74:  enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
Source/WTF/wtf/unicode/wchar/UnicodeWchar.h:76:  enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
Source/WTF/wtf/unicode/wchar/UnicodeWchar.h:113:  ublock_getCode is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
Source/WTF/wtf/unicode/wchar/UnicodeWchar.h:114:  The parameter name &quot;mode&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/WTF/wtf/unicode/wchar/UnicodeWchar.h:118:  More than one command on the same line  [whitespace/newline] [4]
Source/WTF/wtf/unicode/wchar/UnicodeWchar.h:118:  u_foldCase is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
Source/WTF/wtf/unicode/wchar/UnicodeWchar.h:121:  u_isalnum is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
Source/WTF/wtf/unicode/wchar/UnicodeWchar.h:122:  u_ispunct is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
Source/WTF/wtf/unicode/wchar/UnicodeWchar.h:124:  u_print is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
Source/WTF/wtf/unicode/wchar/UnicodeWchar.h:128:  u_tolower is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
Source/WTF/wtf/unicode/wchar/UnicodeWchar.h:129:  u_totitle is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
Source/WTF/wtf/unicode/wchar/UnicodeWchar.h:130:  u_toupper is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
Source/WebCore/platform/text/BidiResolver.h:573:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
Source/WebCore/platform/text/BidiResolver.h:604:  A case label should not be indented, but line up with its switch statement.  [whitespace/indent] [4]
Source/WebCore/platform/text/BidiResolver.h:662:  A case label should not be indented, but line up with its switch statement.  [whitespace/indent] [4]
Source/WebCore/platform/text/BidiResolver.h:703:  A case label should not be indented, but line up with its switch statement.  [whitespace/indent] [4]
Source/WebCore/platform/text/BidiResolver.h:766:  A case label should not be indented, but line up with its switch statement.  [whitespace/indent] [4]
Source/WebCore/platform/text/BidiResolver.h:843:  A case label should not be indented, but line up with its switch statement.  [whitespace/indent] [4]
Source/WTF/wtf/unicode/wchar/UnicodeWchar.cpp:30:  unorm_normalize is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
Source/WTF/wtf/unicode/wchar/UnicodeWchar.cpp:35:  u_charDirection is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
Source/WTF/wtf/unicode/wchar/UnicodeWchar.cpp:40:  u_charMirror is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
Source/WTF/wtf/unicode/wchar/UnicodeWchar.cpp:46:  u_charType is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
Source/WTF/wtf/unicode/wchar/UnicodeWchar.cpp:52:  u_getCombiningClass is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
Source/WTF/wtf/unicode/wchar/UnicodeWchar.cpp:58:  u_getIntPropertyValue is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
Source/WTF/wtf/unicode/wchar/UnicodeWchar.cpp:73:  u_memcasecmp is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
Source/WTF/wtf/unicode/wchar/UnicodeWchar.cpp:100:  u_strFoldCase is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
Source/WTF/wtf/unicode/wchar/UnicodeWchar.cpp:106:  u_strToLower is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
Source/WTF/wtf/unicode/wchar/UnicodeWchar.cpp:111:  u_strToUpper is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
Source/WebCore/platform/graphics/mac/ComplexTextController.cpp:330:  Tests for true/false, null/non-null, and zero/non-zero should all be done without equality comparisons.  [readability/comparison_to_zero] [5]
Total errors found: 57 in 48 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>938729</commentid>
    <comment_count>6</comment_count>
      <attachid>213968</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-10-10 23:56:19 -0700</bug_when>
    <thetext>Comment on attachment 213968
Patch

Attachment 213968 did not pass win-ews (win):
Output: http://webkit-queues.appspot.com/results/3947022</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>938749</commentid>
    <comment_count>7</comment_count>
    <who name="Patrick R. Gansterer">paroga</who>
    <bug_when>2013-10-11 01:59:13 -0700</bug_when>
    <thetext>Do you want to keep the dummy ICU in UnicodeWchar? What do you think about implementing them in ThirdParty/DummyICU/unicode/(uchar|uscript|...).h, so we have only one Unicode.h in WTF? But this can be done in a follow up patch, since it requires a little more work.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>938792</commentid>
    <comment_count>8</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2013-10-11 07:14:09 -0700</bug_when>
    <thetext>(In reply to comment #7)
&gt; Do you want to keep the dummy ICU in UnicodeWchar?

No.

&gt; What do you think about implementing them in ThirdParty/DummyICU/unicode/(uchar|uscript|...).h, so we have only one Unicode.h in WTF? But this can be done in a follow up patch, since it requires a little more work.

Exactly right. I think I even said as much in the ChangeLog.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>938855</commentid>
    <comment_count>9</comment_count>
      <attachid>213968</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2013-10-11 10:31:52 -0700</bug_when>
    <thetext>Comment on attachment 213968
Patch

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

Looking at the patch, I now have concerns about readability of the code that uses ICU directly. Some of their names are not exactly great.

r=me

&gt; Source/WebCore/xml/XPathParser.cpp:77
&gt; +    if (characterTypeMask &amp; (U_GC_M_MASK | U_GC_LM_MASK | U_GC_ND_MASK))

:-/</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>939035</commentid>
    <comment_count>10</comment_count>
      <attachid>214042</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2013-10-11 19:23:33 -0700</bug_when>
    <thetext>Created attachment 214042
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>939038</commentid>
    <comment_count>11</comment_count>
      <attachid>214044</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2013-10-11 19:33:23 -0700</bug_when>
    <thetext>Created attachment 214044
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>939039</commentid>
    <comment_count>12</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-10-11 19:34:15 -0700</bug_when>
    <thetext>Attachment 214044 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/JavaScriptCore/ChangeLog&apos;, u&apos;Source/JavaScriptCore/parser/Lexer.cpp&apos;, u&apos;Source/JavaScriptCore/parser/Lexer.h&apos;, u&apos;Source/JavaScriptCore/runtime/JSFunction.cpp&apos;, u&apos;Source/JavaScriptCore/runtime/JSGlobalObjectFunctions.cpp&apos;, u&apos;Source/JavaScriptCore/yarr/YarrInterpreter.cpp&apos;, u&apos;Source/WTF/ChangeLog&apos;, u&apos;Source/WTF/wtf/text/StringHash.h&apos;, u&apos;Source/WTF/wtf/text/StringImpl.cpp&apos;, u&apos;Source/WTF/wtf/text/StringImpl.h&apos;, u&apos;Source/WTF/wtf/text/WTFString.h&apos;, u&apos;Source/WTF/wtf/unicode/icu/UnicodeIcu.h&apos;, u&apos;Source/WTF/wtf/unicode/wchar/UnicodeWchar.cpp&apos;, u&apos;Source/WTF/wtf/unicode/wchar/UnicodeWchar.h&apos;, u&apos;Source/WebCore/ChangeLog&apos;, u&apos;Source/WebCore/Modules/indexeddb/IDBKeyPath.cpp&apos;, u&apos;Source/WebCore/css/CSSParser.cpp&apos;, u&apos;Source/WebCore/dom/Document.cpp&apos;, u&apos;Source/WebCore/editing/Editor.cpp&apos;, u&apos;Source/WebCore/editing/TextIterator.cpp&apos;, u&apos;Source/WebCore/html/HTMLElement.cpp&apos;, u&apos;Source/WebCore/html/HTMLSelectElement.cpp&apos;, u&apos;Source/WebCore/html/TypeAhead.cpp&apos;, u&apos;Source/WebCore/html/track/TextTrackCue.cpp&apos;, u&apos;Source/WebCore/page/ContextMenuController.cpp&apos;, u&apos;Source/WebCore/platform/graphics/Font.cpp&apos;, u&apos;Source/WebCore/platform/graphics/FontGlyphs.cpp&apos;, u&apos;Source/WebCore/platform/graphics/GraphicsContext.cpp&apos;, u&apos;Source/WebCore/platform/graphics/SVGGlyph.cpp&apos;, u&apos;Source/WebCore/platform/graphics/SurrogatePairAwareTextIterator.cpp&apos;, u&apos;Source/WebCore/platform/graphics/WidthIterator.cpp&apos;, u&apos;Source/WebCore/platform/graphics/mac/ComplexTextController.cpp&apos;, u&apos;Source/WebCore/platform/graphics/win/UniscribeController.cpp&apos;, u&apos;Source/WebCore/platform/text/BidiContext.cpp&apos;, u&apos;Source/WebCore/platform/text/BidiContext.h&apos;, u&apos;Source/WebCore/platform/text/BidiResolver.h&apos;, u&apos;Source/WebCore/platform/text/SegmentedString.h&apos;, u&apos;Source/WebCore/platform/text/TextBoundaries.cpp&apos;, u&apos;Source/WebCore/platform/text/TextBoundaries.h&apos;, u&apos;Source/WebCore/platform/text/mac/TextBoundaries.mm&apos;, u&apos;Source/WebCore/platform/win/PopupMenuWin.cpp&apos;, u&apos;Source/WebCore/platform/win/WebCoreTextRenderer.cpp&apos;, u&apos;Source/WebCore/rendering/BidiRun.h&apos;, u&apos;Source/WebCore/rendering/InlineFlowBox.h&apos;, u&apos;Source/WebCore/rendering/InlineIterator.h&apos;, u&apos;Source/WebCore/rendering/RenderBlock.cpp&apos;, u&apos;Source/WebCore/rendering/RenderBlockLineLayout.cpp&apos;, u&apos;Source/WebCore/rendering/RenderListMarker.cpp&apos;, u&apos;Source/WebCore/rendering/RenderMenuList.cpp&apos;, u&apos;Source/WebCore/rendering/RenderText.cpp&apos;, u&apos;Source/WebCore/rendering/RootInlineBox.cpp&apos;, u&apos;Source/WebCore/svg/SVGFontData.cpp&apos;, u&apos;Source/WebCore/xml/XPathParser.cpp&apos;]&quot; exit_code: 1
Source/WebCore/platform/text/TextBoundaries.h:33:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
Source/WebCore/platform/text/TextBoundaries.h:38:  WK_U_LB_CONDITIONAL_JAPANESE_STARTER is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
Source/WTF/wtf/unicode/wchar/UnicodeWchar.h:36:  enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
Source/WTF/wtf/unicode/wchar/UnicodeWchar.h:39:  enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
Source/WTF/wtf/unicode/wchar/UnicodeWchar.h:40:  enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
Source/WTF/wtf/unicode/wchar/UnicodeWchar.h:41:  enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
Source/WTF/wtf/unicode/wchar/UnicodeWchar.h:45:  enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
Source/WTF/wtf/unicode/wchar/UnicodeWchar.h:46:  enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
Source/WTF/wtf/unicode/wchar/UnicodeWchar.h:47:  enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
Source/WTF/wtf/unicode/wchar/UnicodeWchar.h:48:  enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
Source/WTF/wtf/unicode/wchar/UnicodeWchar.h:49:  enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
Source/WTF/wtf/unicode/wchar/UnicodeWchar.h:50:  enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
Source/WTF/wtf/unicode/wchar/UnicodeWchar.h:51:  enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
Source/WTF/wtf/unicode/wchar/UnicodeWchar.h:52:  enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
Source/WTF/wtf/unicode/wchar/UnicodeWchar.h:53:  enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
Source/WTF/wtf/unicode/wchar/UnicodeWchar.h:54:  enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
Source/WTF/wtf/unicode/wchar/UnicodeWchar.h:55:  enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
Source/WTF/wtf/unicode/wchar/UnicodeWchar.h:56:  enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
Source/WTF/wtf/unicode/wchar/UnicodeWchar.h:57:  enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
Source/WTF/wtf/unicode/wchar/UnicodeWchar.h:58:  enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
Source/WTF/wtf/unicode/wchar/UnicodeWchar.h:59:  enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
Source/WTF/wtf/unicode/wchar/UnicodeWchar.h:60:  enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
Source/WTF/wtf/unicode/wchar/UnicodeWchar.h:61:  enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
Source/WTF/wtf/unicode/wchar/UnicodeWchar.h:62:  enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
Source/WTF/wtf/unicode/wchar/UnicodeWchar.h:63:  enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
Source/WTF/wtf/unicode/wchar/UnicodeWchar.h:68:  enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
Source/WTF/wtf/unicode/wchar/UnicodeWchar.h:70:  enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
Source/WTF/wtf/unicode/wchar/UnicodeWchar.h:72:  enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
Source/WTF/wtf/unicode/wchar/UnicodeWchar.h:74:  enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
Source/WTF/wtf/unicode/wchar/UnicodeWchar.h:76:  enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
Source/WTF/wtf/unicode/wchar/UnicodeWchar.h:113:  ublock_getCode is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
Source/WTF/wtf/unicode/wchar/UnicodeWchar.h:114:  The parameter name &quot;mode&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/WTF/wtf/unicode/wchar/UnicodeWchar.h:118:  More than one command on the same line  [whitespace/newline] [4]
Source/WTF/wtf/unicode/wchar/UnicodeWchar.h:118:  u_foldCase is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
Source/WTF/wtf/unicode/wchar/UnicodeWchar.h:121:  u_isalnum is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
Source/WTF/wtf/unicode/wchar/UnicodeWchar.h:122:  u_ispunct is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
Source/WTF/wtf/unicode/wchar/UnicodeWchar.h:124:  u_print is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
Source/WTF/wtf/unicode/wchar/UnicodeWchar.h:128:  u_tolower is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
Source/WTF/wtf/unicode/wchar/UnicodeWchar.h:129:  u_totitle is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
Source/WTF/wtf/unicode/wchar/UnicodeWchar.h:130:  u_toupper is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
Source/WebCore/platform/text/BidiResolver.h:573:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
Source/WebCore/platform/text/BidiResolver.h:604:  A case label should not be indented, but line up with its switch statement.  [whitespace/indent] [4]
Source/WebCore/platform/text/BidiResolver.h:662:  A case label should not be indented, but line up with its switch statement.  [whitespace/indent] [4]
Source/WebCore/platform/text/BidiResolver.h:703:  A case label should not be indented, but line up with its switch statement.  [whitespace/indent] [4]
Source/WebCore/platform/text/BidiResolver.h:766:  A case label should not be indented, but line up with its switch statement.  [whitespace/indent] [4]
Source/WebCore/platform/text/BidiResolver.h:843:  A case label should not be indented, but line up with its switch statement.  [whitespace/indent] [4]
Source/WTF/wtf/unicode/wchar/UnicodeWchar.cpp:30:  unorm_normalize is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
Source/WTF/wtf/unicode/wchar/UnicodeWchar.cpp:35:  u_charDirection is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
Source/WTF/wtf/unicode/wchar/UnicodeWchar.cpp:40:  u_charMirror is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
Source/WTF/wtf/unicode/wchar/UnicodeWchar.cpp:46:  u_charType is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
Source/WTF/wtf/unicode/wchar/UnicodeWchar.cpp:52:  u_getCombiningClass is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
Source/WTF/wtf/unicode/wchar/UnicodeWchar.cpp:58:  u_getIntPropertyValue is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
Source/WTF/wtf/unicode/wchar/UnicodeWchar.cpp:73:  u_memcasecmp is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
Source/WTF/wtf/unicode/wchar/UnicodeWchar.cpp:100:  u_strFoldCase is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
Source/WTF/wtf/unicode/wchar/UnicodeWchar.cpp:106:  u_strToLower is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
Source/WTF/wtf/unicode/wchar/UnicodeWchar.cpp:111:  u_strToUpper is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
Source/WebCore/platform/graphics/mac/ComplexTextController.cpp:330:  Tests for true/false, null/non-null, and zero/non-zero should all be done without equality comparisons.  [readability/comparison_to_zero] [5]
Total errors found: 57 in 51 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>939051</commentid>
    <comment_count>13</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2013-10-11 21:15:09 -0700</bug_when>
    <thetext>Committed r157330: &lt;http://trac.webkit.org/changeset/157330&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>213966</attachid>
            <date>2013-10-10 22:24:06 -0700</date>
            <delta_ts>2013-10-10 23:09:54 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-122635-20131010222405.patch</filename>
            <type>text/plain</type>
            <size>137084</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTU3Mjg1CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBm
MDEwYzA5NWVjZjc1NTMxOGQxYTMxZTE1MGQ1MzFlYmQ4ODE1M2M1Li42OTE0ZWZlNDU1MWQzNWQ0
Mzk1ZjgxOTc3YTc1NDRiMDJhNjI4ZTQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwzMSBAQAorMjAxMy0xMC0xMCAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CisK
KyAgICAgICAgQ2hhbmdlIG1vc3QgY2FsbCBzaXRlcyB0byBjYWxsIElDVSBkaXJlY3RseSBpbnN0
ZWFkIG9mIHRocm91Z2ggV1RGOjpVbmljb2RlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xMjI2MzUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICAqIHBhcnNlci9MZXhlci5jcHA6CisgICAgICAgIChKU0M6Omlz
Tm9uTGF0aW4xSWRlbnRTdGFydCk6IFRha2UgYSBVQ2hhciBzaW5jZSB0aGF0J3Mgd2hhdCB0aGUg
b25seSBjYWxsZXIgd2FudHMgdG8gcGFzcy4KKyAgICAgICAgVXNlIFVfR0VUX0dDX01BU0sgaW5z
dGVhZCBvZiBXVEY6OlVuaWNvZGU6OmNhdGVnb3J5LgorICAgICAgICAoSlNDOjppc05vbkxhdGlu
MUlkZW50UGFydCk6IERpdHRvLgorCisgICAgICAgICogcGFyc2VyL0xleGVyLmg6CisgICAgICAg
IChKU0M6OkxleGVyOjppc1doaXRlU3BhY2UpOiBVc2UgdV9jaGFyVHlwZSBpbnN0ZWFkIG9mIFdU
Rjo6VW5pY29kZTo6aXNTZXBhcmF0b3JTcGFjZS4KKworICAgICAgICAqIHJ1bnRpbWUvSlNGdW5j
dGlvbi5jcHA6IFJlbW92ZWQgInVzaW5nIG5hbWVzcGFjZSIgZm9yIFdURjo6VW5pY29kZSwgdGhp
cyB3aWxsIG5vIGxvbmdlcgorICAgICAgICBjb21waWxlIHNpbmNlIHRoaXMgZG9lc24ndCBpbmNs
dWRlIGFueXRoaW5nIHRoYXQgZGVmaW5lcyB0aGF0IG5hbWVzcGFjZS4KKworICAgICAgICAqIHJ1
bnRpbWUvSlNHbG9iYWxPYmplY3RGdW5jdGlvbnMuY3BwOgorICAgICAgICAoSlNDOjppc1N0cldo
aXRlU3BhY2UpOiBVc2UgdV9jaGFyVHlwZSBpbnN0ZWFkIG9mIFdURjo6VW5pY29kZTo6aXNTZXBh
cmF0b3JTcGFjZS4KKworICAgICAgICAqIHlhcnIvWWFyckludGVycHJldGVyLmNwcDoKKyAgICAg
ICAgKEpTQzo6WWFycjo6Qnl0ZUNvbXBpbGVyOjphdG9tUGF0dGVybkNoYXJhY3Rlcik6IFVzZSB1
X3RvbG93ZXIgYW5kIHVfdG91cHBlciBpbnN0ZWFkIG9mCisgICAgICAgIFVuaWNvZGU6OnRvTG93
ZXIgYW5kIFVuaWNvZGU6OnRvVXBwZXIuIEFsc28gYWRkZWQgc29tZSBhc3NlcnRpb25zIHNpbmNl
IHRoaXMgY29kZSBhc3N1bWVzCisgICAgICAgIGl0IGNhbiBjb252ZXJ0IGFueSBVQ2hhciB0byBs
b3dlcmNhc2Ugb3IgdXBwZXJjYXNlIGluIGFub3RoZXIgVUNoYXIsIHdpdGggbm8gcmlzayBvZiBu
ZWVkaW5nCisgICAgICAgIGEgVUNoYXIzMiBmb3IgdGhlIHJlc3VsdC4gSSBndWVzcyB0aGF0J3Mg
cHJvYmFibHkgdHJ1ZSwgYnV0IGl0IHdvdWxkIGJlIGdvb2QgdG8ga25vdyBpbiBhCisgICAgICAg
IGRlYnVnIGJ1aWxkIGlmIG5vdC4KKwogMjAxMy0xMC0wOSAgT2xpdmVyIEh1bnQgIDxvbGl2ZXJA
YXBwbGUuY29tPgogCiAgICAgICAgIEZ1cnRoZXIgaW1wcm92ZSBBcnJheUl0ZXJhdG9yIHBlcmZv
cm1hbmNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5nZUxvZyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCmluZGV4IDVlMzU0MzQ3OGQ2NDM5Mjc4YjBmNTJiMjQ4OWZmZWI4MGEyYmNiMjQuLmQ5
MzdlNTg5YzA2NTEyN2I2MDFiOGJkZWJiYjNlODk3MjE1YzY3M2EgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTQg
QEAKKzIwMTMtMTAtMTAgIERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29tPgorCisgICAgICAg
IENoYW5nZSBtb3N0IGNhbGwgc2l0ZXMgdG8gY2FsbCBJQ1UgZGlyZWN0bHkgaW5zdGVhZCBvZiB0
aHJvdWdoIFdURjo6VW5pY29kZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTIyNjM1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgKiB3dGYvdGV4dC9TdHJpbmdIYXNoLmg6CisgICAgICAgIChXVEY6OkNhc2VG
b2xkaW5nSGFzaDo6Zm9sZENhc2UpOiBVc2UgdV9mb2xkQ2FzZSBpbnN0ZWFkIG9mIFdURjo6VW5p
Y29kZTo6Zm9sZENhc2UuCisgICAgICAgIChXVEY6OkNhc2VGb2xkaW5nSGFzaDo6aGFzaCk6IEFk
ZGVkIGFuIG92ZXJsb2FkIGZvciBhIFN0cmluZ0ltcGwmIGJlY2F1c2Ugd2h5IG5vdC4KKworICAg
ICAgICAqIHd0Zi90ZXh0L1N0cmluZ0ltcGwuY3BwOgorICAgICAgICAoV1RGOjpTdHJpbmdJbXBs
Ojpsb3dlcik6IFVzZSB1X3RvbG93ZXIgcmF0aGVyIHRoYW4gV1RGOjpVbmljb2RlOjp0b0xvd2Vy
LiBBbHNvIGFkZGVkCisgICAgICAgIGFuIGFzc2VydGlvbiB0byBjaGVjayB0aGF0IHRoZSBsb3dl
cmNhc2UgdmVyc2lvbiBpcyBhbHNvIHBhcnQgb2YgTGF0aW4tMS4gSWYgdGhpcworICAgICAgICBp
cyBub3QgZ3VhcmFudGVlZCBpdCB3b3VsZCBiZSBnb29kIHRvIGtub3cgaW4gYSBkZWJ1ZyBidWls
ZCBhdCBsZWFzdC4gVXNlIHVfc3RyVG9Mb3dlcgorICAgICAgICByYXRoZXIgdGhhbiBXVEY6OlVu
aWNvZGU6OnRvTG93ZXIuIEFsc28gcmVtb3ZlZCAjaWYgVVNFKElDVV9VTklDT0RFKSBhcm91bmQg
dGhlCisgICAgICAgIGxvY2FsZS1zcGVjaWZpYyB2ZXJzaW9uLgorICAgICAgICAoV1RGOjpTdHJp
bmdJbXBsOjp1cHBlcik6IFVzZSB1X3RvdXBwZXIgYW5kIHVfc3RyVG9VcHBlciwgYXMgYWJvdmUu
CisgICAgICAgIChXVEY6OlN0cmluZ0ltcGw6OmZvbGRDYXNlKTogVXNlIHVfdG9sb3dlciBhbmQg
dV9zdHJGb2xkQ2FzZSwgYXMgYWJvdmUuCisgICAgICAgIChXVEY6OmVxdWFsSWdub3JpbmdDYXNl
KTogVXNlIHVfZm9sZENhc2UgaW5zdGVhZCBvZiBXVEY6OlVuaWNvZGU6OmZvbGRDYXNlLgorICAg
ICAgICAoV1RGOjpTdHJpbmdJbXBsOjpkZWZhdWx0V3JpdGluZ0RpcmVjdGlvbik6IFVzZSB1X2No
YXJEaXJlY3Rpb24gYW5kIFVDaGFyRGlyZWN0aW9uCisgICAgICAgIGluc3RlYWQgb2YgV1RGOjpV
bmljb2RlOjpkaXJlY3Rpb24gYW5kIFdURjo6VW5pY29kZTo6RGlyZWN0aW9uLgorCisgICAgICAg
ICogd3RmL3RleHQvU3RyaW5nSW1wbC5oOgorICAgICAgICAoV1RGOjplcXVhbElnbm9yaW5nQ2Fz
ZSk6IFVzZSB1X21lbWNhc2VjbXAgaW5zdGVhZCBvZiBXVEY6OlVuaWNvZGU6OnVtZW1jYXNlY21w
LgorICAgICAgICAoV1RGOjppc1NwYWNlT3JOZXdsaW5lKTogVXNlIHVfY2hhckRpcmVjdGlvbiBp
bnN0ZWFkIG9mIFdURjo6VW5pY29kZTo6ZGlyZWN0aW9uLgorCisgICAgICAgICogd3RmL3RleHQv
V1RGU3RyaW5nLmg6CisgICAgICAgIChXVEY6OlN0cmluZzo6ZGVmYXVsdFdyaXRpbmdEaXJlY3Rp
b24pOiBVc2UgVUNoYXJEaXJlY3Rpb24gaW5zdGVhZCBvZiBXVEY6OlVuaWNvZGU6OkRpcmVjdGlv
bi4KKworICAgICAgICAqIHd0Zi91bmljb2RlL2ljdS9Vbmljb2RlSWN1Lmg6IFJlbW92ZWQgYWxt
b3N0IGV2ZXJ5dGhpbmcuCisKKyAgICAgICAgKiB3dGYvdW5pY29kZS93Y2hhci9Vbmljb2RlV2No
YXIuY3BwOiBUcmllZCB0byBkbyB0aGUgcmlnaHQgdGhpbmcgaW4gdGhpcyBmaWxlLCBidXQKKyAg
ICAgICAgSSBkaWQgbm90IGFjdHVhbGx5IGNvbXBpbGUgaXQuIEFsc28sIHRoZSBpbXBsZW1lbnRh
dGlvbnMgaGVyZSBhcmVuJ3QgcmVhbGx5IHN1ZmZpY2llbnQKKyAgICAgICAgdG8gbWFrZSBXZWJL
aXQgd29yayBicm9hZGx5LiBUaGVyZSBhcmUgbWFueSB0aGluZ3MgdGhhdCBqdXN0IGFyZW4ndCB3
b3JraW5nIHdpdGggdGhpcworICAgICAgICBpbXBsZW1lbnRhdGlvbiwgc3VjaCBhcyBwYXJzaW5n
IHRoYXQgdXNlcyB1X2NoYXJUeXBlIHRvIGZpZ3VyZSBvdXQgd2hpY2ggY2hhcmFjdGVycyBhcmUg
dmFsaWQuCisgICAgICAgICh1bm9ybV9ub3JtYWxpemUpOiBBZGRlZC4KKyAgICAgICAgKHVfY2hh
ckRpcmVjdGlvbik6IEFkZGVkLgorICAgICAgICAodV9jaGFyTWlycm9yKTogQWRkZWQuCisgICAg
ICAgICh1X2NoYXJUeXBlKTogQWRkZWQuCisgICAgICAgICh1X2dldENvbWJpbmluZ0NsYXNzKTog
QWRkZWQuCisgICAgICAgICh1X2dldEludFByb3BlcnR5VmFsdWUpOiBBZGRlZC4KKyAgICAgICAg
KHVfbWVtY2FzZWNtcCk6IEFkZGVkLgorICAgICAgICAoY29udmVydFdpdGhGdW5jdGlvbik6IENo
YW5nZWQgdG8gd29yayB3aXRoIElDVS1zdHlsZSBzdGF0dXMgY29kZSBpbnN0ZWFkIG9mIGVycm9y
IGJvb2wuCisgICAgICAgICh1X3N0ckZvbGRDYXNlKTogQWRkZWQuCisgICAgICAgICh1X3N0clRv
TG93ZXIpOiBBZGRlZC4KKyAgICAgICAgKHVfc3RyVG9VcHBlcik6IEFkZGVkLgorICAgICAgICAq
IHd0Zi91bmljb2RlL3djaGFyL1VuaWNvZGVXY2hhci5oOiBEaXR0by4gTGF0ZXIgdGhpcyBmaWxl
IHNob3VsZCBqdXN0IGJlIG5hbWVkIGxpa2UgdGhlCisgICAgICAgIHJlYWwgSUNVIGhlYWRlcnMg
c28gdGhlIGNvZGUgY2FuIGluY2x1ZGUgaXQgdGhlIHNhbWUgd2F5IGl0IHdvdWxkIElDVS4gQnV0
IHRoYXQgd2lsbCBiZQorICAgICAgICBpbiBhIGZ1dHVyZSBwYXRjaC4KKwogMjAxMy0xMC0wOSAg
RmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgogCiAgICAgICAgIEZUTDogU29mdC1saW5r
IExMVk0gYXMgYSB3b3JrYXJvdW5kIGZvciBMTFZNJ3Mgc3RhdGljIGluaXRpYWxpemVycyBhbmQg
ZXhpdC10aW1lIGRlc3RydWN0b3JzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VM
b2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMmUxYjAyM2Q2NmY2YWY0NjRiNTQ0
Y2YwNjI1MThkMmYzNGUxNWMxYi4uZjM4ZTdjNWVhYzcyZjkyZDFkYjVjMTE1ZWY3Nzc2ZWZiOGEz
MTcxMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2NyBAQAorMjAxMy0xMC0xMCAgRGFyaW4gQWRs
ZXIgIDxkYXJpbkBhcHBsZS5jb20+CisKKyAgICAgICAgQ2hhbmdlIG1vc3QgY2FsbCBzaXRlcyB0
byBjYWxsIElDVSBkaXJlY3RseSBpbnN0ZWFkIG9mIHRocm91Z2ggV1RGOjpVbmljb2RlCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjI2MzUKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIE1vZHVsZXMvaW5k
ZXhlZGRiL0lEQktleVBhdGguY3BwOgorICAgICAgICAoaXNJZGVudGlmaWVyU3RhcnRDaGFyYWN0
ZXIpOiBVc2UgVV9HRVRfR0NfTUFTSyBpbnN0ZWFkIG9mIFdURjo6VW5pY29kZTo6Y2F0ZWdvcnku
CisgICAgICAgIChpc0lkZW50aWZpZXJDaGFyYWN0ZXIpOiBEaXR0by4KKworICAgICAgICAqIGNz
cy9DU1NQYXJzZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6bWFrZUxvd2VyKTogVXNlIHVfdG9s
b3dlciBpbnN0ZWFkIG9mIFdURjo6VW5pY29kZTo6dG9Mb3dlci4KKyAgICAgICAgQWxzbyBhc3Nl
cnQgdGhlIGNoYXJhY3RlciBmaXRzIGluIGEgVUNoYXIuCisKKyAgICAgICAgKiBkb20vRG9jdW1l
bnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6aXNWYWxpZE5hbWVTdGFydCk6IFVzZSBVX0dFVF9H
Q19NQVNLIGluc3RlYWQgb2YgV1RGOjpVbmljb2RlOjpjYXRlZ29yeSwKKyAgICAgICAgYW5kIHVf
Z2V0SW50UHJvcGVydHlWYWx1ZSBpbnN0ZWFkIG9mIFdURjo6VW5pY29kZTo6ZGVjb21wb3NpdGlv
blR5cGUuCisgICAgICAgIChXZWJDb3JlOjppc1ZhbGlkTmFtZVBhcnQpOiBEaXR0by4KKyAgICAg
ICAgKFdlYkNvcmU6OmNhbm9uaWNhbGl6ZWRUaXRsZSk6IERpdHRvLgorCisgICAgICAgICogZWRp
dGluZy9FZGl0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjppbnNlcnRUZXh0V2l0
aG91dFNlbmRpbmdUZXh0RXZlbnQpOiBVc2UgdV9pc1B1bmN0IGluc3RlYWQgb2YKKyAgICAgICAg
V1RGOjpVbmljb2RlOjppc1B1bmN0LgorCisgICAgICAgICogZWRpdGluZy9UZXh0SXRlcmF0b3Iu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6U2VhcmNoQnVmZmVyOjphcHBlbmQpOiBVc2UgdV9zdHJG
b2xkQ2FzZSBpbnN0ZWFkIG9mIFdURjo6VW5pY29kZTo6Zm9sZENhc2UuCisKKyAgICAgICAgKiBo
dG1sL0hUTUxFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxFbGVtZW50OjpkaXJl
Y3Rpb25hbGl0eSk6IFVzZSBVQ2hhckRpcmVjdGlvbiBpbnN0ZWFkIG9mCisgICAgICAgIFdURjo6
VW5pY29kZTo6RGlyZWN0aW9uLgorCisgICAgICAgICogaHRtbC9IVE1MU2VsZWN0RWxlbWVudC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MU2VsZWN0RWxlbWVudDo6ZGVmYXVsdEV2ZW50SGFu
ZGxlcik6IFVzZSB1X2lzcHJpbnQgaW5zdGVhZCBvZgorICAgICAgICBXVEY6OlVuaWNvZGU6Omlz
UHJpbnRhYmxlQ2hhci4KKworICAgICAgICAqIGh0bWwvVHlwZUFoZWFkLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OnN0cmlwTGVhZGluZ1doaXRlU3BhY2UpOiBVc2UgdV9jaGFyRGlyZWN0aW9uIGlu
c3RlYWQgb2YKKyAgICAgICAgV1RGOjpVbmljb2RlOjpkaXJlY3Rpb24uCisKKyAgICAgICAgKiBo
dG1sL3RyYWNrL1RleHRUcmFja0N1ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjppc0N1ZVBhcmFn
cmFwaFNlcGFyYXRvcik6IFVzZSB1X2NoYXJUeXBlIGluc3RlYWQgb2YKKyAgICAgICAgV1RGOjpV
bmljb2RlOjpjYXRlZ29yeS4KKyAgICAgICAgKFdlYkNvcmU6OlRleHRUcmFja0N1ZTo6ZGV0ZXJt
aW5lVGV4dERpcmVjdGlvbik6IFVzZSB1X2NoYXJEaXJlY3Rpb24gaW5zdGVhZCBvZgorICAgICAg
ICBXVEY6OlVuaWNvZGU6OmRpcmVjdGlvbi4KKworICAgICAgICAqIHBhZ2UvQ29udGV4dE1lbnVD
b250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnNlbGVjdGlvbkNvbnRhaW5zUG9zc2li
bGVXb3JkKTogVXNlIFVfR0VUX0dDX01BU0sgaW5zdGVhZCBvZgorICAgICAgICBXVEY6OlVuaWNv
ZGU6OmNhdGVnb3J5LgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ZvbnQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6Rm9udDo6Y2FuUmVjZWl2ZVRleHRFbXBoYXNpcyk6IERpdHRvLgorCisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvRm9udEdseXBocy5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpGb250R2x5cGhzOjpnbHlwaERhdGFBbmRQYWdlRm9yQ2hhcmFjdGVyKTogVXNlIHVfdG91
cHBlciBpbnN0ZWFkIG9mCisgICAgICAgIFdURjo6VW5pY29kZTo6dG9VcHBlci4gVXNlIHVfY2hh
ck1pcnJvciBpbnN0ZWFkIG9mIFdURjo6VW5pY29kZTo6bWlycm9yZWRDaGFyLgorCisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlRleHRSdW5JdGVyYXRvcjo6ZGlyZWN0aW9uKTogVXNlIHVfY2hhckRpcmVjdGlvbiBpbnN0
ZWFkIG9mCisgICAgICAgIFdURjo6VW5pY29kZTo6ZGlyZWN0aW9uLgorCisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvU1ZHR2x5cGguY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y2hhcmFjdGVy
c1dpdGhBcmFiaWNGb3JtKTogVXNlIHVibG9ja19nZXRDb2RlIGluc3RlYWQgb2YKKyAgICAgICAg
V1RGOjpVbmljb2RlOjppc0FyYWJpY0NoYXIuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9TdXJyb2dhdGVQYWlyQXdhcmVUZXh0SXRlcmF0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
U3Vycm9nYXRlUGFpckF3YXJlVGV4dEl0ZXJhdG9yOjpub3JtYWxpemVWb2ljaW5nTWFya3MpOiBV
c2UKKyAgICAgICAgdV9nZXRDb21iaW5pbmdDbGFzcyBpbnN0ZWFkIG9mIFdURjo6VW5pY29kZTo6
Y29tYmluaW5nQ2xhc3MuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9XaWR0aEl0ZXJh
dG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldpZHRoSXRlcmF0b3I6OmFkdmFuY2VJbnRlcm5h
bCk6IFVzZSB1X3RvdXBwZXIgaW5zdGVhZCBvZgorICAgICAgICBXVEY6OlVuaWNvZGU6OnRvVXBw
ZXIuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9tYWMvQ29tcGxleFRleHRDb250cm9s
bGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbXBsZXhUZXh0Q29udHJvbGxlcjo6Y29sbGVj
dENvbXBsZXhUZXh0UnVucyk6IEFkZGVkIHNvbWUKKyAgICAgICAgYXNzZXJ0aW9ucyBhYm91dCB0
aGUgdXNlciBvZiB1X3RvdXBwZXIgYW5kIHR3ZWFrZWQgY29kaW5nIHN0eWxlIGEgYml0LgorCisg
ICAgICAgICogcGxhdGZvcm0vdGV4dC9CaWRpQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpCaWRpQ29udGV4dDo6Y3JlYXRlVW5jYWNoZWQpOiBVc2UgVUNoYXJEaXJlY3Rpb24gaW5zdGVh
ZCBvZgorICAgICAgICBXVEY6OlVuaWNvZGU6OkRpcmVjdGlvbi4KKyAgICAgICAgKFdlYkNvcmU6
OkJpZGlDb250ZXh0OjpjcmVhdGUpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OmNvcHlDb250
ZXh0QW5kUmViYXNlbGluZUxldmVsKTogRGl0dG8uCisgICAgICAgICogcGxhdGZvcm0vdGV4dC9C
aWRpQ29udGV4dC5oOgorICAgICAgICAoV2ViQ29yZTo6QmlkaUNvbnRleHQ6OmRpcik6IERpdHRv
LgorICAgICAgICAoV2ViQ29yZTo6QmlkaUNvbnRleHQ6OkJpZGlDb250ZXh0KTogRGl0dG8uCisg
ICAgICAgICogcGxhdGZvcm0vdGV4dC9CaWRpUmVzb2x2ZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6
OkJpZGlTdGF0dXM6OkJpZGlTdGF0dXMpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkJpZGlF
bWJlZGRpbmc6OkJpZGlFbWJlZGRpbmcpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkJpZGlF
bWJlZGRpbmc6OmRpcmVjdGlvbik6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6QmlkaUNoYXJh
Y3RlclJ1bjo6QmlkaUNoYXJhY3RlclJ1bik6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6Qmlk
aVJlc29sdmVyOjpCaWRpUmVzb2x2ZXIpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkJpZGlS
ZXNvbHZlcjo6c2V0TGFzdERpcik6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6QmlkaVJlc29s
dmVyOjpzZXRMYXN0U3Ryb25nRGlyKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpCaWRpUmVz
b2x2ZXI6OnNldEVvckRpcik6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6QmlkaVJlc29sdmVy
OjpkaXIpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkJpZGlSZXNvbHZlcjo6c2V0RGlyKTog
RGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpCaWRpUmVzb2x2ZXI6OmFwcGVuZFJ1bik6IERpdHRv
LgorICAgICAgICAoV2ViQ29yZTo6QmlkaVJlc29sdmVyOjplbWJlZCk6IERpdHRvLgorICAgICAg
ICAoV2ViQ29yZTo6QmlkaVJlc29sdmVyOjpjaGVja0RpcmVjdGlvbkluTG93ZXJSYWlzZUVtYmVk
ZGluZ0xldmVsKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpCaWRpUmVzb2x2ZXI6Omxvd2Vy
RXhwbGljaXRFbWJlZGRpbmdMZXZlbCk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6QmlkaVJl
c29sdmVyOjpyYWlzZUV4cGxpY2l0RW1iZWRkaW5nTGV2ZWwpOiBEaXR0by4KKyAgICAgICAgKFdl
YkNvcmU6OkJpZGlSZXNvbHZlcjo6Y29tbWl0RXhwbGljaXRFbWJlZGRpbmcpOiBEaXR0by4KKyAg
ICAgICAgKFdlYkNvcmU6OkJpZGlSZXNvbHZlcjo6dXBkYXRlU3RhdHVzTGFzdEZyb21DdXJyZW50
RGlyZWN0aW9uKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpCaWRpUmVzb2x2ZXI6OmNyZWF0
ZUJpZGlSdW5zRm9yTGluZSk6IERpdHRvLgorCisgICAgICAgICogcGxhdGZvcm0vdGV4dC9TZWdt
ZW50ZWRTdHJpbmcuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNlZ21lbnRlZFN0cmluZzo6YWR2YW5j
ZUFuZEFTU0VSVElnbm9yaW5nQ2FzZSk6IFVzZSB1X2ZvbGRDYXNlCisgICAgICAgIGluc3RlYWQg
b2YgV1RGOjpVbmljb2RlOjpmb2xkQ2FzZS4KKworICAgICAgICAqIHBsYXRmb3JtL3RleHQvVGV4
dEJvdW5kYXJpZXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6ZmluZE5leHRXb3JkRnJvbUluZGV4
KTogVXNlIHVfaXNhbG51bSBpbnN0ZWFkIG9mCisgICAgICAgIFdURjo6VW5pY29kZTo6aXNBbHBo
YW51bWVyaWMuCisKKyAgICAgICAgKiBwbGF0Zm9ybS90ZXh0L1RleHRCb3VuZGFyaWVzLmg6Cisg
ICAgICAgIChXZWJDb3JlOjpyZXF1aXJlc0NvbnRleHRGb3JXb3JkQm91bmRhcnkpOiBVc2UgdV9n
ZXRJbnRQcm9wZXJ0eVZhbHVlIGRpcmVjdGx5CisgICAgICAgIGluc3RlYWQgb2YgV1RGOjpVbmlj
b2RlOjpyZXF1aXJlc0NvbXBsZXhDb250ZXh0Rm9yV29yZEJyZWFraW5nLgorCisgICAgICAgICog
cGxhdGZvcm0vdGV4dC9tYWMvVGV4dEJvdW5kYXJpZXMubW06IFJlbW92ZWQgZXhwbGljaXQgdXNl
IG9mIFdURjo6VW5pY29kZSwKKyAgICAgICAgd2hpY2ggd2FzIHVubmVlZGVkIGFuZCBhbHNvIHdp
bGwgbm8gbG9uZ2VyIGNvbXBpbGUuCisKKyAgICAgICAgKiByZW5kZXJpbmcvQmlkaVJ1bi5oOgor
ICAgICAgICAoV2ViQ29yZTo6QmlkaVJ1bjo6QmlkaVJ1bik6IFVzZSBVQ2hhckRpcmVjdGlvbiBp
bnN0ZWFkIG9mIFdURjo6VW5pY29kZTo6RGlyZWN0aW9uLgorICAgICAgICAqIHJlbmRlcmluZy9J
bmxpbmVGbG93Qm94Lmg6IERpdHRvLgorICAgICAgICAqIHJlbmRlcmluZy9JbmxpbmVJdGVyYXRv
ci5oOgorICAgICAgICAoV2ViQ29yZTo6ZW1iZWRDaGFyRnJvbURpcmVjdGlvbik6IERpdHRvLgor
ICAgICAgICAoV2ViQ29yZTo6bm90aWZ5T2JzZXJ2ZXJXaWxsRXhpdE9iamVjdCk6IERpdHRvLgor
ICAgICAgICAoV2ViQ29yZTo6SW5saW5lSXRlcmF0b3I6OmRpcmVjdGlvbik6IERpdHRvLgorICAg
ICAgICAoV2ViQ29yZTo6SXNvbGF0ZVRyYWNrZXI6OmVtYmVkKTogRGl0dG8uCisgICAgICAgIChX
ZWJDb3JlOjpJbmxpbmVCaWRpUmVzb2x2ZXI6OmFwcGVuZFJ1bik6IERpdHRvLgorCisgICAgICAg
ICogcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmlzUHVuY3R1
YXRpb25Gb3JGaXJzdExldHRlcik6IFVzZSBVX0dFVF9HQ19NQVNLIGluc3RlYWQgb2YKKyAgICAg
ICAgV1RGOjpVbmljb2RlOjpjYXRlZ29yeS4KKworICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJC
bG9ja0xpbmVMYXlvdXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6ZGV0ZXJtaW5lRGlyZWN0aW9u
YWxpdHkpOiBVc2UgdV9jaGFyRGlyZWN0aW9uIGluc3RlYWQgb2YKKyAgICAgICAgV1RGOjpVbmlj
b2RlOjpkaXJlY3Rpb24uCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9ja0Zsb3c6OmhhbmRs
ZVRyYWlsaW5nU3BhY2VzKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpzdGF0dXNXaXRoRGly
ZWN0aW9uKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpMaW5lQnJlYWtlcjo6bmV4dFNlZ21l
bnRCcmVhayk6IFVzZSBVX0dFVF9HQ19NQVNLIGluc3RlYWQgb2YgCisgICAgICAgIFdURjo6VW5p
Y29kZTo6Y2F0ZWdvcnkuCisKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGlzdE1hcmtlci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMaXN0TWFya2VyOjpwYWludCk6IFVzZSB1X2No
YXJEaXJlY3Rpb24gaW5zdGVhZCBvZiAKKyAgICAgICAgV1RGOjpVbmljb2RlOjpkaXJlY3Rpb24u
CisKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTWVudUxpc3QuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyTWVudUxpc3Q6OmFkanVzdElubmVyU3R5bGUpOiBVc2UgVUNoYXJEaXJlY3Rp
b24gaW5zdGVhZCBvZgorICAgICAgICBXVEY6OlVuaWNvZGU6OkRpcmVjdGlvbi4KKworICAgICAg
ICAqIHJlbmRlcmluZy9SZW5kZXJUZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Om1ha2VDYXBp
dGFsaXplZCk6IFVzZSB1X3RvdGlsZSBpbnN0ZWFkIG9mIFdURjo6VW5pY29kZTo6dG9UaXRsZUNh
c2UuCisgICAgICAgIEFsc28gYWRkZWQgYSBjb21tZW50IGFib3V0IHRoZSBmYWN0IHRoYXQgd2Ug
bmVlZCB0byB1c2UgdV9zdHJUb1RpdGxlIGluc3RlYWQuCisKKyAgICAgICAgKiByZW5kZXJpbmcv
Um9vdElubGluZUJveC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSb290SW5saW5lQm94OjpsaW5l
QnJlYWtCaWRpU3RhdHVzKTogVXNlIFVDaGFyRGlyZWN0aW9uIGluc3RlYWQgb2YKKyAgICAgICAg
V1RGOjpVbmljb2RlOjpEaXJlY3Rpb24uCisKKyAgICAgICAgKiBzdmcvU1ZHRm9udERhdGEuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6U1ZHRm9udERhdGE6OmNyZWF0ZVN0cmluZ1dpdGhNaXJyb3Jl
ZENoYXJhY3RlcnMpOiBVc2UgdV9jaGFyTWlycm9yCisgICAgICAgIGluc3RlYWQgb2YgV1RGOjpV
bmljb2RlOjptaXJyb3JlZENoYXIuCisKKyAgICAgICAgKiB4bWwvWFBhdGhQYXJzZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6WFBhdGg6OmNoYXJDYXQpOiBVc2UgVV9HRVRfR0NfTUFTSyBpbnN0
ZWFkIG9mIFdURjo6VW5pY29kZTo6Y2F0ZWdvcnkuCisKIDIwMTMtMTAtMTAgIEFuZHJlYXMgS2xp
bmcgIDxha2xpbmdAYXBwbGUuY29tPgogCiAgICAgICAgIEtpbGwgV2ViQ29yZTo6QmluZGluZ1N0
YXRlLgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9MZXhlci5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL0xleGVyLmNwcAppbmRleCAzYzBjOTE0ODk2
YmNmNjZhOGY2NDQ5Zjg2MTNkZGQxYWFlM2RlMzI1Li5mYjYyYjk3M2YyOGJlMzNkODY4ODg1YWQ1
YjliOWY0ODQ2ZmMxZGQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2Vy
L0xleGVyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL0xleGVyLmNwcApA
QCAtMzcsOSArMzcsNiBAQAogI2luY2x1ZGUgPHN0cmluZy5oPgogI2luY2x1ZGUgPHd0Zi9Bc3Nl
cnRpb25zLmg+CiAKLXVzaW5nIG5hbWVzcGFjZSBXVEY7Ci11c2luZyBuYW1lc3BhY2UgVW5pY29k
ZTsKLQogI2luY2x1ZGUgIktleXdvcmRMb29rdXAuaCIKICNpbmNsdWRlICJMZXhlci5sdXQuaCIK
ICNpbmNsdWRlICJQYXJzZXIuaCIKQEAgLTYzNyw5ICs2MzQsOSBAQCBBTFdBWVNfSU5MSU5FIGJv
b2wgTGV4ZXI8VD46Omxhc3RUb2tlbldhc1Jlc3RyS2V5d29yZCgpIGNvbnN0CiAgICAgcmV0dXJu
IG1fbGFzdFRva2VuID09IENPTlRJTlVFIHx8IG1fbGFzdFRva2VuID09IEJSRUFLIHx8IG1fbGFz
dFRva2VuID09IFJFVFVSTiB8fCBtX2xhc3RUb2tlbiA9PSBUSFJPVzsKIH0KIAotc3RhdGljIE5F
VkVSX0lOTElORSBib29sIGlzTm9uTGF0aW4xSWRlbnRTdGFydChpbnQgYykKK3N0YXRpYyBORVZF
Ul9JTkxJTkUgYm9vbCBpc05vbkxhdGluMUlkZW50U3RhcnQoVUNoYXIgYykKIHsKLSAgICByZXR1
cm4gY2F0ZWdvcnkoYykgJiAoTGV0dGVyX1VwcGVyY2FzZSB8IExldHRlcl9Mb3dlcmNhc2UgfCBM
ZXR0ZXJfVGl0bGVjYXNlIHwgTGV0dGVyX01vZGlmaWVyIHwgTGV0dGVyX090aGVyKTsKKyAgICBy
ZXR1cm4gVV9HRVRfR0NfTUFTSyhjKSAmIFVfR0NfTF9NQVNLOwogfQogCiBzdGF0aWMgQUxXQVlT
X0lOTElORSBib29sIGlzTGF0aW4xKExDaGFyKQpAQCAtNjY0LDggKzY2MSw3IEBAIHN0YXRpYyBp
bmxpbmUgYm9vbCBpc0lkZW50U3RhcnQoVUNoYXIgYykKIAogc3RhdGljIE5FVkVSX0lOTElORSBi
b29sIGlzTm9uTGF0aW4xSWRlbnRQYXJ0KGludCBjKQogewotICAgIHJldHVybiAoY2F0ZWdvcnko
YykgJiAoTGV0dGVyX1VwcGVyY2FzZSB8IExldHRlcl9Mb3dlcmNhc2UgfCBMZXR0ZXJfVGl0bGVj
YXNlIHwgTGV0dGVyX01vZGlmaWVyIHwgTGV0dGVyX090aGVyCi0gICAgICAgIHwgTWFya19Ob25T
cGFjaW5nIHwgTWFya19TcGFjaW5nQ29tYmluaW5nIHwgTnVtYmVyX0RlY2ltYWxEaWdpdCB8IFB1
bmN0dWF0aW9uX0Nvbm5lY3RvcikpIHx8IGMgPT0gMHgyMDBDIHx8IGMgPT0gMHgyMDBEOworICAg
IHJldHVybiAoVV9HRVRfR0NfTUFTSyhjKSAmIChVX0dDX0xfTUFTSyB8IFVfR0NfTU5fTUFTSyB8
IFVfR0NfTUNfTUFTSyB8IFVfR0NfTkRfTUFTSyB8IFVfR0NfUENfTUFTSykpIHx8IGMgPT0gMHgy
MDBDIHx8IGMgPT0gMHgyMDBEOwogfQogCiBzdGF0aWMgQUxXQVlTX0lOTElORSBib29sIGlzSWRl
bnRQYXJ0KExDaGFyIGMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2Vy
L0xleGVyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL0xleGVyLmgKaW5kZXggMTM3
ZmY1ZmI2NDQxNDEzM2I5NzcyZTM2NjBmZTUzMWQwMGUxMDY0Yy4uNTFjOWExZDk4ZDQ2NDJmYzEy
ZDVjZDlhYzMxODhmZTcyMjlmMTQ4OSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3BhcnNlci9MZXhlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTGV4ZXIu
aApAQCAtMjQ4LDcgKzI0OCw3IEBAIEFMV0FZU19JTkxJTkUgYm9vbCBMZXhlcjxMQ2hhcj46Omlz
V2hpdGVTcGFjZShMQ2hhciBjaCkKIHRlbXBsYXRlIDw+CiBBTFdBWVNfSU5MSU5FIGJvb2wgTGV4
ZXI8VUNoYXI+Ojppc1doaXRlU3BhY2UoVUNoYXIgY2gpCiB7Ci0gICAgcmV0dXJuIChjaCA8IDI1
NikgPyBMZXhlcjxMQ2hhcj46OmlzV2hpdGVTcGFjZShzdGF0aWNfY2FzdDxMQ2hhcj4oY2gpKSA6
IChXVEY6OlVuaWNvZGU6OmlzU2VwYXJhdG9yU3BhY2UoY2gpIHx8IGNoID09IDB4RkVGRik7Cisg
ICAgcmV0dXJuIChjaCA8IDI1NikgPyBMZXhlcjxMQ2hhcj46OmlzV2hpdGVTcGFjZShzdGF0aWNf
Y2FzdDxMQ2hhcj4oY2gpKSA6ICh1X2NoYXJUeXBlKGNoKSA9PSBVX1NQQUNFX1NFUEFSQVRPUiB8
fCBjaCA9PSAweEZFRkYpOwogfQogCiB0ZW1wbGF0ZSA8PgpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0Z1bmN0aW9uLmNwcAppbmRleCBjMTA2MGI5Zjg0YTIxNDdiYTg3ZDIwYTE3
NjYwMTkzMjI0ZDlmMGRkLi4yNzA1OTU3OGU2ZWNiZTFjYmFhMTY1YTJkNzFkNjcwMGVlODA0MmQ1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmNwcApAQCAt
NDUsMTAgKzQ1LDggQEAKICNpbmNsdWRlICJQcm9wZXJ0eU5hbWVBcnJheS5oIgogI2luY2x1ZGUg
IlN0YWNrVmlzaXRvci5oIgogCi11c2luZyBuYW1lc3BhY2UgV1RGOwotdXNpbmcgbmFtZXNwYWNl
IFVuaWNvZGU7Ci0KIG5hbWVzcGFjZSBKU0MgeworCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGNhbGxIb3N0RnVuY3Rpb25Bc0NvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogZXhlYykKIHsKICAg
ICByZXR1cm4gdGhyb3dWTUVycm9yKGV4ZWMsIGNyZWF0ZU5vdEFDb25zdHJ1Y3RvckVycm9yKGV4
ZWMsIGV4ZWMtPmNhbGxlZSgpKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0dsb2JhbE9iamVjdEZ1bmN0aW9ucy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0dsb2JhbE9iamVjdEZ1bmN0aW9ucy5jcHAKaW5kZXggYTRkMTk0YzBjYjA5
ZjI3OTI4Njc1ZDBlMzVmOGYwYTc2MTg4OWE5My4uOTIwMDU2N2UxNDliYTE1YzU0ZGRkYWI5MDQ0
ZTVmMGZkY2FkMjQzOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNHbG9iYWxPYmplY3RGdW5jdGlvbnMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTR2xvYmFsT2JqZWN0RnVuY3Rpb25zLmNwcApAQCAtMTY5LDcgKzE2OSw3IEBAIGJv
b2wgaXNTdHJXaGl0ZVNwYWNlKFVDaGFyIGMpCiAgICAgICAgIGNhc2UgMHhGRUZGOgogICAgICAg
ICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICByZXR1cm4g
YyA+IDB4ZmYgJiYgaXNTZXBhcmF0b3JTcGFjZShjKTsKKyAgICAgICAgICAgIHJldHVybiBjID4g
MHhGRiAmJiB1X2NoYXJUeXBlKGMpID09IFVfU1BBQ0VfU0VQQVJBVE9SOwogICAgIH0KIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIvWWFyckludGVycHJldGVyLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS95YXJyL1lhcnJJbnRlcnByZXRlci5jcHAKaW5kZXgg
ZjAzMTJlYTI1MTlhYzNkOGM2OTllODhkMTk2MTk2ZDYwNmQ0NjhkMy4uZTc3NWFkNjI0MjgxZTQ2
NjViMzJmZGJhMTQwMWRkYjU4MmFlZjc3ZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3lhcnIvWWFyckludGVycHJldGVyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
eWFyci9ZYXJySW50ZXJwcmV0ZXIuY3BwCkBAIC0xNTEwLDggKzE1MTAsMTEgQEAgcHVibGljOgog
ICAgIHZvaWQgYXRvbVBhdHRlcm5DaGFyYWN0ZXIoVUNoYXIgY2gsIHVuc2lnbmVkIGlucHV0UG9z
aXRpb24sIHVuc2lnbmVkIGZyYW1lTG9jYXRpb24sIENoZWNrZWQ8dW5zaWduZWQ+IHF1YW50aXR5
Q291bnQsIFF1YW50aWZpZXJUeXBlIHF1YW50aXR5VHlwZSkKICAgICB7CiAgICAgICAgIGlmICht
X3BhdHRlcm4ubV9pZ25vcmVDYXNlKSB7Ci0gICAgICAgICAgICBVQ2hhciBsbyA9IFVuaWNvZGU6
OnRvTG93ZXIoY2gpOwotICAgICAgICAgICAgVUNoYXIgaGkgPSBVbmljb2RlOjp0b1VwcGVyKGNo
KTsKKyAgICAgICAgICAgIEFTU0VSVCh1X3RvbG93ZXIoY2gpIDw9IDB4RkZGRik7CisgICAgICAg
ICAgICBBU1NFUlQodV90b3VwcGVyKGNoKSA8PSAweEZGRkYpOworCisgICAgICAgICAgICBVQ2hh
ciBsbyA9IHVfdG9sb3dlcihjaCk7CisgICAgICAgICAgICBVQ2hhciBoaSA9IHVfdG91cHBlcihj
aCk7CiAKICAgICAgICAgICAgIGlmIChsbyAhPSBoaSkgewogICAgICAgICAgICAgICAgIG1fYm9k
eURpc2p1bmN0aW9uLT50ZXJtcy5hcHBlbmQoQnl0ZVRlcm0obG8sIGhpLCBpbnB1dFBvc2l0aW9u
LCBmcmFtZUxvY2F0aW9uLCBxdWFudGl0eUNvdW50LCBxdWFudGl0eVR5cGUpKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nSGFzaC5oIGIvU291cmNlL1dURi93dGYvdGV4
dC9TdHJpbmdIYXNoLmgKaW5kZXggMTA0MzA3NDhhMDEwMDQwNzg5YmRlODQxYWVkYmMwMjFkOWE1
MzNmNC4uZjA0NjA0YjQ1ZTZiMDEzYjhlMGQ5NzAxM2NkMzdkYWFjMzMyNTk4YSAxMDA2NDQKLS0t
IGEvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdIYXNoLmgKKysrIGIvU291cmNlL1dURi93dGYv
dGV4dC9TdHJpbmdIYXNoLmgKQEAgLTczLDI2ICs3MywzMSBAQCBuYW1lc3BhY2UgV1RGIHsKIAog
ICAgIGNsYXNzIENhc2VGb2xkaW5nSGFzaCB7CiAgICAgcHVibGljOgotICAgICAgICB0ZW1wbGF0
ZTx0eXBlbmFtZSBUPiBzdGF0aWMgaW5saW5lIFVDaGFyIGZvbGRDYXNlKFQgY2gpCisgICAgICAg
IHRlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0YXRpYyBpbmxpbmUgVUNoYXIgZm9sZENhc2UoVCBjaGFy
YWN0ZXIpCiAgICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBXVEY6OlVuaWNvZGU6OmZvbGRD
YXNlKGNoKTsKKyAgICAgICAgICAgIHJldHVybiB1X2ZvbGRDYXNlKGNoYXJhY3RlciwgVV9GT0xE
X0NBU0VfREVGQVVMVCk7CiAgICAgICAgIH0KIAogICAgICAgICBzdGF0aWMgdW5zaWduZWQgaGFz
aChjb25zdCBVQ2hhciogZGF0YSwgdW5zaWduZWQgbGVuZ3RoKQogICAgICAgICB7Ci0gICAgICAg
ICAgICByZXR1cm4gU3RyaW5nSGFzaGVyOjpjb21wdXRlSGFzaEFuZE1hc2tUb3A4Qml0czxVQ2hh
ciwgZm9sZENhc2U8VUNoYXI+ID4oZGF0YSwgbGVuZ3RoKTsKKyAgICAgICAgICAgIHJldHVybiBT
dHJpbmdIYXNoZXI6OmNvbXB1dGVIYXNoQW5kTWFza1RvcDhCaXRzPFVDaGFyLCBmb2xkQ2FzZTxV
Q2hhcj4+KGRhdGEsIGxlbmd0aCk7CiAgICAgICAgIH0KIAotICAgICAgICBzdGF0aWMgdW5zaWdu
ZWQgaGFzaChTdHJpbmdJbXBsKiBzdHIpCisgICAgICAgIHN0YXRpYyB1bnNpZ25lZCBoYXNoKFN0
cmluZ0ltcGwmIHN0cmluZykKICAgICAgICAgewotICAgICAgICAgICAgaWYgKHN0ci0+aXM4Qml0
KCkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIGhhc2goc3RyLT5jaGFyYWN0ZXJzOCgpLCBzdHIt
Pmxlbmd0aCgpKTsKLSAgICAgICAgICAgIHJldHVybiBoYXNoKHN0ci0+Y2hhcmFjdGVyczE2KCks
IHN0ci0+bGVuZ3RoKCkpOworICAgICAgICAgICAgaWYgKHN0cmluZy5pczhCaXQoKSkKKyAgICAg
ICAgICAgICAgICByZXR1cm4gaGFzaChzdHJpbmcuY2hhcmFjdGVyczgoKSwgc3RyaW5nLmxlbmd0
aCgpKTsKKyAgICAgICAgICAgIHJldHVybiBoYXNoKHN0cmluZy5jaGFyYWN0ZXJzMTYoKSwgc3Ry
aW5nLmxlbmd0aCgpKTsKKyAgICAgICAgfQorICAgICAgICBzdGF0aWMgdW5zaWduZWQgaGFzaChT
dHJpbmdJbXBsKiBzdHJpbmcpCisgICAgICAgIHsKKyAgICAgICAgICAgIEFTU0VSVChzdHJpbmcp
OworICAgICAgICAgICAgcmV0dXJuIGhhc2goKnN0cmluZyk7CiAgICAgICAgIH0KIAogICAgICAg
ICBzdGF0aWMgdW5zaWduZWQgaGFzaChjb25zdCBMQ2hhciogZGF0YSwgdW5zaWduZWQgbGVuZ3Ro
KQogICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gU3RyaW5nSGFzaGVyOjpjb21wdXRlSGFz
aEFuZE1hc2tUb3A4Qml0czxMQ2hhciwgZm9sZENhc2U8TENoYXI+ID4oZGF0YSwgbGVuZ3RoKTsK
KyAgICAgICAgICAgIHJldHVybiBTdHJpbmdIYXNoZXI6OmNvbXB1dGVIYXNoQW5kTWFza1RvcDhC
aXRzPExDaGFyLCBmb2xkQ2FzZTxMQ2hhcj4+KGRhdGEsIGxlbmd0aCk7CiAgICAgICAgIH0KIAog
ICAgICAgICBzdGF0aWMgaW5saW5lIHVuc2lnbmVkIGhhc2goY29uc3QgY2hhciogZGF0YSwgdW5z
aWduZWQgbGVuZ3RoKQpAQCAtMTA3LDcgKzExMiw3IEBAIG5hbWVzcGFjZSBXVEYgewogCiAgICAg
ICAgIHN0YXRpYyB1bnNpZ25lZCBoYXNoKGNvbnN0IFJlZlB0cjxTdHJpbmdJbXBsPiYga2V5KSAK
ICAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIGhhc2goa2V5LmdldCgpKTsKKyAgICAgICAg
ICAgIHJldHVybiBoYXNoKCprZXkpOwogICAgICAgICB9CiAKICAgICAgICAgc3RhdGljIGJvb2wg
ZXF1YWwoY29uc3QgUmVmUHRyPFN0cmluZ0ltcGw+JiBhLCBjb25zdCBSZWZQdHI8U3RyaW5nSW1w
bD4mIGIpCkBAIC0xMjksNyArMTM0LDkgQEAgbmFtZXNwYWNlIFdURiB7CiAgICAgICAgIH0KICAg
ICAgICAgc3RhdGljIGJvb2wgZXF1YWwoY29uc3QgQXRvbWljU3RyaW5nJiBhLCBjb25zdCBBdG9t
aWNTdHJpbmcmIGIpCiAgICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiAoYSA9PSBiKSB8fCBl
cXVhbChhLmltcGwoKSwgYi5pbXBsKCkpOworICAgICAgICAgICAgLy8gRklYTUU6IElzIHRoZSAi
YSA9PSBiIiBoZXJlIGEgaGVscGZ1bCBvcHRpbWl6YXRpb24/CisgICAgICAgICAgICAvLyBJdCBt
YWtlcyBhbGwgY2FzZXMgd2hlcmUgdGhlIHN0cmluZ3MgYXJlIG5vdCBpZGVudGljYWwgc2xpZ2h0
bHkgc2xvd2VyLgorICAgICAgICAgICAgcmV0dXJuIGEgPT0gYiB8fCBlcXVhbChhLmltcGwoKSwg
Yi5pbXBsKCkpOwogICAgICAgICB9CiAKICAgICAgICAgc3RhdGljIGNvbnN0IGJvb2wgc2FmZVRv
Q29tcGFyZVRvRW1wdHlPckRlbGV0ZWQgPSBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYv
d3RmL3RleHQvU3RyaW5nSW1wbC5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ0ltcGwu
Y3BwCmluZGV4IDQxMDMwZTA0MzRjNTJhOTk5NTNjNjI5MmJmNTA1NmNkZDVkN2ZlNGEuLmFkOGZh
MDAzZWI5MjJiYmE2NmFkZGVhMGUwODY0YWU2Mjc4YWY0NzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
VEYvd3RmL3RleHQvU3RyaW5nSW1wbC5jcHAKKysrIGIvU291cmNlL1dURi93dGYvdGV4dC9TdHJp
bmdJbXBsLmNwcApAQCAtNDE1LDggKzQxNSwxMCBAQCBTbG93UGF0aDhiaXRMb3dlcjoKICAgICAg
ICAgICAgIExDaGFyIGNoYXJhY3RlciA9IG1fZGF0YThbaV07CiAgICAgICAgICAgICBpZiAoIShj
aGFyYWN0ZXIgJiB+MHg3RikpCiAgICAgICAgICAgICAgICAgZGF0YThbaV0gPSB0b0FTQ0lJTG93
ZXIoY2hhcmFjdGVyKTsKLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICBkYXRhOFtp
XSA9IHN0YXRpY19jYXN0PExDaGFyPihVbmljb2RlOjp0b0xvd2VyKGNoYXJhY3RlcikpOworICAg
ICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgQVNTRVJUKHVfdG9sb3dlcihjaGFyYWN0
ZXIpIDw9IDB4RkYpOworICAgICAgICAgICAgICAgIGRhdGE4W2ldID0gc3RhdGljX2Nhc3Q8TENo
YXI+KHVfdG9sb3dlcihjaGFyYWN0ZXIpKTsKKyAgICAgICAgICAgIH0KICAgICAgICAgfQogCiAg
ICAgICAgIHJldHVybiBuZXdJbXBsLnJlbGVhc2UoKTsKQEAgLTQ1MywxNCArNDU1LDE1IEBAIFNs
b3dQYXRoOGJpdExvd2VyOgogICAgIFVDaGFyKiBkYXRhMTY7CiAgICAgUmVmUHRyPFN0cmluZ0lt
cGw+IG5ld0ltcGwgPSBjcmVhdGVVbmluaXRpYWxpemVkSW50ZXJuYWxOb25FbXB0eShtX2xlbmd0
aCwgZGF0YTE2KTsKIAotICAgIGJvb2wgZXJyb3I7Ci0gICAgaW50MzJfdCByZWFsTGVuZ3RoID0g
VW5pY29kZTo6dG9Mb3dlcihkYXRhMTYsIGxlbmd0aCwgbV9kYXRhMTYsIG1fbGVuZ3RoLCAmZXJy
b3IpOwotICAgIGlmICghZXJyb3IgJiYgcmVhbExlbmd0aCA9PSBsZW5ndGgpCisgICAgVUVycm9y
Q29kZSBzdGF0dXMgPSBVX1pFUk9fRVJST1I7CisgICAgaW50MzJfdCByZWFsTGVuZ3RoID0gdV9z
dHJUb0xvd2VyKGRhdGExNiwgbGVuZ3RoLCBtX2RhdGExNiwgbV9sZW5ndGgsICIiLCAmc3RhdHVz
KTsKKyAgICBpZiAoVV9TVUNDRVNTKHN0YXR1cykgJiYgcmVhbExlbmd0aCA9PSBsZW5ndGgpCiAg
ICAgICAgIHJldHVybiBuZXdJbXBsLnJlbGVhc2UoKTsKIAogICAgIG5ld0ltcGwgPSBjcmVhdGVV
bmluaXRpYWxpemVkKHJlYWxMZW5ndGgsIGRhdGExNik7Ci0gICAgVW5pY29kZTo6dG9Mb3dlcihk
YXRhMTYsIHJlYWxMZW5ndGgsIG1fZGF0YTE2LCBtX2xlbmd0aCwgJmVycm9yKTsKLSAgICBpZiAo
ZXJyb3IpCisgICAgc3RhdHVzID0gVV9aRVJPX0VSUk9SOworICAgIHVfc3RyVG9Mb3dlcihkYXRh
MTYsIHJlYWxMZW5ndGgsIG1fZGF0YTE2LCBtX2xlbmd0aCwgIiIsICZzdGF0dXMpOworICAgIGlm
IChVX0ZBSUxVUkUoc3RhdHVzKSkKICAgICAgICAgcmV0dXJuIHRoaXM7CiAgICAgcmV0dXJuIG5l
d0ltcGwucmVsZWFzZSgpOwogfQpAQCAtNTA2LDcgKzUwOSw4IEBAIFBhc3NSZWZQdHI8U3RyaW5n
SW1wbD4gU3RyaW5nSW1wbDo6dXBwZXIoKQogICAgICAgICAgICAgTENoYXIgYyA9IG1fZGF0YThb
aV07CiAgICAgICAgICAgICBpZiAoVU5MSUtFTFkoYyA9PSBzbWFsbExldHRlclNoYXJwUykpCiAg
ICAgICAgICAgICAgICAgKytudW1iZXJTaGFycFNDaGFyYWN0ZXJzOwotICAgICAgICAgICAgVUNo
YXIgdXBwZXIgPSBVbmljb2RlOjp0b1VwcGVyKGMpOworICAgICAgICAgICAgQVNTRVJUKHVfdG91
cHBlcihjKSA8PSAweEZGRkYpOworICAgICAgICAgICAgVUNoYXIgdXBwZXIgPSB1X3RvdXBwZXIo
Yyk7CiAgICAgICAgICAgICBpZiAoVU5MSUtFTFkodXBwZXIgPiAweGZmKSkgewogICAgICAgICAg
ICAgICAgIC8vIFNpbmNlIHRoaXMgdXBwZXItY2FzZWQgY2hhcmFjdGVyIGRvZXMgbm90IGZpdCBp
biBhbiA4LWJpdCBzdHJpbmcsIHdlIG5lZWQgdG8gdGFrZSB0aGUgMTYtYml0IHBhdGguCiAgICAg
ICAgICAgICAgICAgZ290byB1cGNvbnZlcnQ7CkBAIC01MjcsOCArNTMxLDEwIEBAIFBhc3NSZWZQ
dHI8U3RyaW5nSW1wbD4gU3RyaW5nSW1wbDo6dXBwZXIoKQogICAgICAgICAgICAgaWYgKGMgPT0g
c21hbGxMZXR0ZXJTaGFycFMpIHsKICAgICAgICAgICAgICAgICAqZGVzdCsrID0gJ1MnOwogICAg
ICAgICAgICAgICAgICpkZXN0KysgPSAnUyc7Ci0gICAgICAgICAgICB9IGVsc2UKLSAgICAgICAg
ICAgICAgICAqZGVzdCsrID0gc3RhdGljX2Nhc3Q8TENoYXI+KFVuaWNvZGU6OnRvVXBwZXIoYykp
OworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBBU1NFUlQodV90b3VwcGVy
KGMpIDw9IDB4RkYpOworICAgICAgICAgICAgICAgICpkZXN0KysgPSBzdGF0aWNfY2FzdDxMQ2hh
cj4odV90b3VwcGVyKGMpKTsKKyAgICAgICAgICAgIH0KICAgICAgICAgfQogCiAgICAgICAgIHJl
dHVybiBuZXdJbXBsLnJlbGVhc2UoKTsKQEAgLTU1MSwxMyArNTU3LDEzIEBAIHVwY29udmVydDoK
ICAgICAgICAgcmV0dXJuIG5ld0ltcGwucmVsZWFzZSgpOwogCiAgICAgLy8gRG8gYSBzbG93ZXIg
aW1wbGVtZW50YXRpb24gZm9yIGNhc2VzIHRoYXQgaW5jbHVkZSBub24tQVNDSUkgY2hhcmFjdGVy
cy4KLSAgICBib29sIGVycm9yOwotICAgIGludDMyX3QgcmVhbExlbmd0aCA9IFVuaWNvZGU6OnRv
VXBwZXIoZGF0YTE2LCBsZW5ndGgsIHNvdXJjZTE2LCBtX2xlbmd0aCwgJmVycm9yKTsKLSAgICBp
ZiAoIWVycm9yICYmIHJlYWxMZW5ndGggPT0gbGVuZ3RoKQorICAgIFVFcnJvckNvZGUgc3RhdHVz
ID0gVV9aRVJPX0VSUk9SOworICAgIGludDMyX3QgcmVhbExlbmd0aCA9IHVfc3RyVG9VcHBlcihk
YXRhMTYsIGxlbmd0aCwgc291cmNlMTYsIG1fbGVuZ3RoLCAiIiwgJnN0YXR1cyk7CisgICAgaWYg
KFVfU1VDQ0VTUyhzdGF0dXMpICYmIHJlYWxMZW5ndGggPT0gbGVuZ3RoKQogICAgICAgICByZXR1
cm4gbmV3SW1wbDsKICAgICBuZXdJbXBsID0gY3JlYXRlVW5pbml0aWFsaXplZChyZWFsTGVuZ3Ro
LCBkYXRhMTYpOwotICAgIFVuaWNvZGU6OnRvVXBwZXIoZGF0YTE2LCByZWFsTGVuZ3RoLCBzb3Vy
Y2UxNiwgbV9sZW5ndGgsICZlcnJvcik7Ci0gICAgaWYgKGVycm9yKQorICAgIHVfc3RyVG9VcHBl
cihkYXRhMTYsIHJlYWxMZW5ndGgsIHNvdXJjZTE2LCBtX2xlbmd0aCwgIiIsICZzdGF0dXMpOwor
ICAgIGlmIChVX0ZBSUxVUkUoc3RhdHVzKSkKICAgICAgICAgcmV0dXJuIHRoaXM7CiAgICAgcmV0
dXJuIG5ld0ltcGwucmVsZWFzZSgpOwogfQpAQCAtNTc0LDEwICs1ODAsNiBAQCBzdGF0aWMgaW5s
aW5lIGJvb2wgbmVlZHNUdXJraXNoQ2FzaW5nUnVsZXMoY29uc3QgQXRvbWljU3RyaW5nJiBsb2Nh
bGVJZGVudGlmaWVyKQogCiBSZWZQdHI8U3RyaW5nSW1wbD4gU3RyaW5nSW1wbDo6bG93ZXIoY29u
c3QgQXRvbWljU3RyaW5nJiBsb2NhbGVJZGVudGlmaWVyKQogewotI2lmICFVU0UoSUNVX1VOSUNP
REUpCi0gICAgVU5VU0VEX1BBUkFNKGxvY2FsZUlkZW50aWZpZXIpOwotICAgIHJldHVybiBsb3dl
cigpOwotI2Vsc2UKICAgICAvLyBVc2UgdGhlIG1vcmUtb3B0aW1pemVkIGNvZGUgcGF0aCBtb3N0
IG9mIHRoZSB0aW1lLgogICAgIC8vIEFzc3VtaW5nIGhlcmUgdGhhdCB0aGUgb25seSBsb2NhbGUt
c3BlY2lmaWMgbG93ZXJjYXNpbmcgaXMgdGhlIFR1cmtpc2ggY2FzaW5nIHJ1bGVzLgogICAgIC8v
IEZJWE1FOiBDb3VsZCBwb3NzaWJseSBvcHRpbWl6ZSBmdXJ0aGVyIGJ5IGxvb2tpbmcgZm9yIHRo
ZSBzcGVjaWZpYyBzZXF1ZW5jZXMKQEAgLTYwOSwxNSArNjExLDEwIEBAIFJlZlB0cjxTdHJpbmdJ
bXBsPiBTdHJpbmdJbXBsOjpsb3dlcihjb25zdCBBdG9taWNTdHJpbmcmIGxvY2FsZUlkZW50aWZp
ZXIpCiAgICAgaWYgKFVfRkFJTFVSRShzdGF0dXMpKQogICAgICAgICByZXR1cm4gdGhpczsKICAg
ICByZXR1cm4gbmV3U3RyaW5nLnJlbGVhc2UoKTsKLSNlbmRpZgogfQogCiBSZWZQdHI8U3RyaW5n
SW1wbD4gU3RyaW5nSW1wbDo6dXBwZXIoY29uc3QgQXRvbWljU3RyaW5nJiBsb2NhbGVJZGVudGlm
aWVyKQogewotI2lmICFVU0UoSUNVX1VOSUNPREUpCi0gICAgVU5VU0VEX1BBUkFNKGxvY2FsZUlk
ZW50aWZpZXIpOwotICAgIHJldHVybiB1cHBlcigpOwotI2Vsc2UKICAgICAvLyBVc2UgdGhlIG1v
cmUtb3B0aW1pemVkIGNvZGUgcGF0aCBtb3N0IG9mIHRoZSB0aW1lLgogICAgIC8vIEFzc3VtaW5n
IGhlcmUgdGhhdCB0aGUgb25seSBsb2NhbGUtc3BlY2lmaWMgbG93ZXJjYXNpbmcgaXMgdGhlIFR1
cmtpc2ggY2FzaW5nIHJ1bGVzLAogICAgIC8vIGFuZCB0aGF0IHRoZSBvbmx5IGFmZmVjdGVkIGNo
YXJhY3RlciBpcyBsb3dlcmNhc2UgImkiLgpAQCAtNjQ0LDcgKzY0MSw2IEBAIFJlZlB0cjxTdHJp
bmdJbXBsPiBTdHJpbmdJbXBsOjp1cHBlcihjb25zdCBBdG9taWNTdHJpbmcmIGxvY2FsZUlkZW50
aWZpZXIpCiAgICAgaWYgKFVfRkFJTFVSRShzdGF0dXMpKQogICAgICAgICByZXR1cm4gdGhpczsK
ICAgICByZXR1cm4gbmV3U3RyaW5nLnJlbGVhc2UoKTsKLSNlbmRpZgogfQogCiBQYXNzUmVmUHRy
PFN0cmluZ0ltcGw+IFN0cmluZ0ltcGw6OmZpbGwoVUNoYXIgY2hhcmFjdGVyKQpAQCAtNjg1LDgg
KzY4MSwxMSBAQCBQYXNzUmVmUHRyPFN0cmluZ0ltcGw+IFN0cmluZ0ltcGw6OmZvbGRDYXNlKCkK
ICAgICAgICAgICAgIHJldHVybiBuZXdJbXBsLnJlbGVhc2UoKTsKIAogICAgICAgICAvLyBEbyBh
IHNsb3dlciBpbXBsZW1lbnRhdGlvbiBmb3IgY2FzZXMgdGhhdCBpbmNsdWRlIG5vbi1BU0NJSSBM
YXRpbi0xIGNoYXJhY3RlcnMuCi0gICAgICAgIGZvciAoaW50MzJfdCBpID0gMDsgaSA8IGxlbmd0
aDsgKytpKQotICAgICAgICAgICAgZGF0YVtpXSA9IHN0YXRpY19jYXN0PExDaGFyPihVbmljb2Rl
Ojp0b0xvd2VyKG1fZGF0YThbaV0pKTsKKyAgICAgICAgLy8gRklYTUU6IFNob3VsZG4ndCB0aGlz
IHVzZSB1X2ZvbGRDYXNlIGluc3RlYWQgb2YgdV90b2xvd2VyPworICAgICAgICBmb3IgKGludDMy
X3QgaSA9IDA7IGkgPCBsZW5ndGg7ICsraSkgeworICAgICAgICAgICAgQVNTRVJUKHVfdG9sb3dl
cihtX2RhdGE4W2ldKSA8PSAweEZGKTsKKyAgICAgICAgICAgIGRhdGFbaV0gPSBzdGF0aWNfY2Fz
dDxMQ2hhcj4odV90b2xvd2VyKG1fZGF0YThbaV0pKTsKKyAgICAgICAgfQogCiAgICAgICAgIHJl
dHVybiBuZXdJbXBsLnJlbGVhc2UoKTsKICAgICB9CkBAIC03MDQsMTMgKzcwMywxNCBAQCBQYXNz
UmVmUHRyPFN0cmluZ0ltcGw+IFN0cmluZ0ltcGw6OmZvbGRDYXNlKCkKICAgICAgICAgcmV0dXJu
IG5ld0ltcGwucmVsZWFzZSgpOwogCiAgICAgLy8gRG8gYSBzbG93ZXIgaW1wbGVtZW50YXRpb24g
Zm9yIGNhc2VzIHRoYXQgaW5jbHVkZSBub24tQVNDSUkgY2hhcmFjdGVycy4KLSAgICBib29sIGVy
cm9yOwotICAgIGludDMyX3QgcmVhbExlbmd0aCA9IFVuaWNvZGU6OmZvbGRDYXNlKGRhdGEsIGxl
bmd0aCwgbV9kYXRhMTYsIG1fbGVuZ3RoLCAmZXJyb3IpOwotICAgIGlmICghZXJyb3IgJiYgcmVh
bExlbmd0aCA9PSBsZW5ndGgpCisgICAgVUVycm9yQ29kZSBzdGF0dXMgPSBVX1pFUk9fRVJST1I7
CisgICAgaW50MzJfdCByZWFsTGVuZ3RoID0gdV9zdHJGb2xkQ2FzZShkYXRhLCBsZW5ndGgsIG1f
ZGF0YTE2LCBtX2xlbmd0aCwgVV9GT0xEX0NBU0VfREVGQVVMVCwgJnN0YXR1cyk7CisgICAgaWYg
KFVfU1VDQ0VTUyhzdGF0dXMpICYmIHJlYWxMZW5ndGggPT0gbGVuZ3RoKQogICAgICAgICByZXR1
cm4gbmV3SW1wbC5yZWxlYXNlKCk7CiAgICAgbmV3SW1wbCA9IGNyZWF0ZVVuaW5pdGlhbGl6ZWQo
cmVhbExlbmd0aCwgZGF0YSk7Ci0gICAgVW5pY29kZTo6Zm9sZENhc2UoZGF0YSwgcmVhbExlbmd0
aCwgbV9kYXRhMTYsIG1fbGVuZ3RoLCAmZXJyb3IpOwotICAgIGlmIChlcnJvcikKKyAgICBzdGF0
dXMgPSBVX1pFUk9fRVJST1I7CisgICAgdV9zdHJGb2xkQ2FzZShkYXRhLCByZWFsTGVuZ3RoLCBt
X2RhdGExNiwgbV9sZW5ndGgsIFVfRk9MRF9DQVNFX0RFRkFVTFQsICZzdGF0dXMpOworICAgIGlm
IChVX0ZBSUxVUkUoc3RhdHVzKSkKICAgICAgICAgcmV0dXJuIHRoaXM7CiAgICAgcmV0dXJuIG5l
d0ltcGwucmVsZWFzZSgpOwogfQpAQCAtOTUyLDggKzk1Miw3IEBAIGZsb2F0IFN0cmluZ0ltcGw6
OnRvRmxvYXQoYm9vbCogb2spCiBib29sIGVxdWFsSWdub3JpbmdDYXNlKGNvbnN0IExDaGFyKiBh
LCBjb25zdCBMQ2hhciogYiwgdW5zaWduZWQgbGVuZ3RoKQogewogICAgIHdoaWxlIChsZW5ndGgt
LSkgewotICAgICAgICBMQ2hhciBiYyA9ICpiKys7Ci0gICAgICAgIGlmIChmb2xkQ2FzZSgqYSsr
KSAhPSBmb2xkQ2FzZShiYykpCisgICAgICAgIGlmICh1X2ZvbGRDYXNlKCphKyssIFVfRk9MRF9D
QVNFX0RFRkFVTFQpICE9IHVfZm9sZENhc2UoKmIrKywgVV9GT0xEX0NBU0VfREVGQVVMVCkpCiAg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogICAgIHJldHVybiB0cnVlOwpAQCAtOTYy
LDggKzk2MSw3IEBAIGJvb2wgZXF1YWxJZ25vcmluZ0Nhc2UoY29uc3QgTENoYXIqIGEsIGNvbnN0
IExDaGFyKiBiLCB1bnNpZ25lZCBsZW5ndGgpCiBib29sIGVxdWFsSWdub3JpbmdDYXNlKGNvbnN0
IFVDaGFyKiBhLCBjb25zdCBMQ2hhciogYiwgdW5zaWduZWQgbGVuZ3RoKQogewogICAgIHdoaWxl
IChsZW5ndGgtLSkgewotICAgICAgICBMQ2hhciBiYyA9ICpiKys7Ci0gICAgICAgIGlmIChmb2xk
Q2FzZSgqYSsrKSAhPSBmb2xkQ2FzZShiYykpCisgICAgICAgIGlmICh1X2ZvbGRDYXNlKCphKyss
IFVfRk9MRF9DQVNFX0RFRkFVTFQpICE9IHVfZm9sZENhc2UoKmIrKywgVV9GT0xEX0NBU0VfREVG
QVVMVCkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogICAgIHJldHVybiB0cnVl
OwpAQCAtMTkxMSw3ICsxOTA5LDcgQEAgYm9vbCBlcXVhbElnbm9yaW5nQ2FzZShjb25zdCBTdHJp
bmdJbXBsKiBhLCBjb25zdCBMQ2hhciogYikKICAgICAgICAgaWYgKG9yZWQgJiB+MHg3Rikgewog
ICAgICAgICAgICAgZXF1YWwgPSB0cnVlOwogICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0g
MDsgaSAhPSBsZW5ndGg7ICsraSkKLSAgICAgICAgICAgICAgICBlcXVhbCA9IGVxdWFsICYmIChm
b2xkQ2FzZShhc1tpXSkgPT0gZm9sZENhc2UoYltpXSkpOworICAgICAgICAgICAgICAgIGVxdWFs
ID0gZXF1YWwgJiYgdV9mb2xkQ2FzZShhc1tpXSwgVV9GT0xEX0NBU0VfREVGQVVMVCkgPT0gdV9m
b2xkQ2FzZShiW2ldLCBVX0ZPTERfQ0FTRV9ERUZBVUxUKTsKICAgICAgICAgfQogICAgICAgICAK
ICAgICAgICAgcmV0dXJuIGVxdWFsICYmICFiW2xlbmd0aF07ICAgICAgICAKQEAgLTE5MzEsNyAr
MTkyOSw3IEBAIGJvb2wgZXF1YWxJZ25vcmluZ0Nhc2UoY29uc3QgU3RyaW5nSW1wbCogYSwgY29u
c3QgTENoYXIqIGIpCiAgICAgaWYgKG9yZWQgJiB+MHg3RikgewogICAgICAgICBlcXVhbCA9IHRy
dWU7CiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgIT0gbGVuZ3RoOyArK2kpIHsKLSAg
ICAgICAgICAgIGVxdWFsID0gZXF1YWwgJiYgKGZvbGRDYXNlKGFzW2ldKSA9PSBmb2xkQ2FzZShi
W2ldKSk7CisgICAgICAgICAgICBlcXVhbCA9IGVxdWFsICYmIHVfZm9sZENhc2UoYXNbaV0sIFVf
Rk9MRF9DQVNFX0RFRkFVTFQpID09IHVfZm9sZENhc2UoYltpXSwgVV9GT0xEX0NBU0VfREVGQVVM
VCk7CiAgICAgICAgIH0KICAgICB9CiAKQEAgLTE5NzAsMjQgKzE5NjgsMjQgQEAgYm9vbCBlcXVh
bElnbm9yaW5nTnVsbGl0eShTdHJpbmdJbXBsKiBhLCBTdHJpbmdJbXBsKiBiKQogICAgIHJldHVy
biBlcXVhbChhLCBiKTsKIH0KIAotV1RGOjpVbmljb2RlOjpEaXJlY3Rpb24gU3RyaW5nSW1wbDo6
ZGVmYXVsdFdyaXRpbmdEaXJlY3Rpb24oYm9vbCogaGFzU3Ryb25nRGlyZWN0aW9uYWxpdHkpCitV
Q2hhckRpcmVjdGlvbiBTdHJpbmdJbXBsOjpkZWZhdWx0V3JpdGluZ0RpcmVjdGlvbihib29sKiBo
YXNTdHJvbmdEaXJlY3Rpb25hbGl0eSkKIHsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwg
bV9sZW5ndGg7ICsraSkgewotICAgICAgICBXVEY6OlVuaWNvZGU6OkRpcmVjdGlvbiBjaGFyRGly
ZWN0aW9uID0gV1RGOjpVbmljb2RlOjpkaXJlY3Rpb24oaXM4Qml0KCkgPyBtX2RhdGE4W2ldIDog
bV9kYXRhMTZbaV0pOwotICAgICAgICBpZiAoY2hhckRpcmVjdGlvbiA9PSBXVEY6OlVuaWNvZGU6
OkxlZnRUb1JpZ2h0KSB7CisgICAgICAgIFVDaGFyRGlyZWN0aW9uIGNoYXJEaXJlY3Rpb24gPSB1
X2NoYXJEaXJlY3Rpb24oaXM4Qml0KCkgPyBtX2RhdGE4W2ldIDogbV9kYXRhMTZbaV0pOworICAg
ICAgICBpZiAoY2hhckRpcmVjdGlvbiA9PSBVX0xFRlRfVE9fUklHSFQpIHsKICAgICAgICAgICAg
IGlmIChoYXNTdHJvbmdEaXJlY3Rpb25hbGl0eSkKICAgICAgICAgICAgICAgICAqaGFzU3Ryb25n
RGlyZWN0aW9uYWxpdHkgPSB0cnVlOwotICAgICAgICAgICAgcmV0dXJuIFdURjo6VW5pY29kZTo6
TGVmdFRvUmlnaHQ7CisgICAgICAgICAgICByZXR1cm4gVV9MRUZUX1RPX1JJR0hUOwogICAgICAg
ICB9Ci0gICAgICAgIGlmIChjaGFyRGlyZWN0aW9uID09IFdURjo6VW5pY29kZTo6UmlnaHRUb0xl
ZnQgfHwgY2hhckRpcmVjdGlvbiA9PSBXVEY6OlVuaWNvZGU6OlJpZ2h0VG9MZWZ0QXJhYmljKSB7
CisgICAgICAgIGlmIChjaGFyRGlyZWN0aW9uID09IFVfUklHSFRfVE9fTEVGVCB8fCBjaGFyRGly
ZWN0aW9uID09IFVfUklHSFRfVE9fTEVGVF9BUkFCSUMpIHsKICAgICAgICAgICAgIGlmIChoYXNT
dHJvbmdEaXJlY3Rpb25hbGl0eSkKICAgICAgICAgICAgICAgICAqaGFzU3Ryb25nRGlyZWN0aW9u
YWxpdHkgPSB0cnVlOwotICAgICAgICAgICAgcmV0dXJuIFdURjo6VW5pY29kZTo6UmlnaHRUb0xl
ZnQ7CisgICAgICAgICAgICByZXR1cm4gVV9SSUdIVF9UT19MRUZUOwogICAgICAgICB9CiAgICAg
fQogICAgIGlmIChoYXNTdHJvbmdEaXJlY3Rpb25hbGl0eSkKICAgICAgICAgKmhhc1N0cm9uZ0Rp
cmVjdGlvbmFsaXR5ID0gZmFsc2U7Ci0gICAgcmV0dXJuIFdURjo6VW5pY29kZTo6TGVmdFRvUmln
aHQ7CisgICAgcmV0dXJuIFVfTEVGVF9UT19SSUdIVDsKIH0KIAogUGFzc1JlZlB0cjxTdHJpbmdJ
bXBsPiBTdHJpbmdJbXBsOjphZG9wdChTdHJpbmdCdWZmZXI8TENoYXI+JiBidWZmZXIpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ0ltcGwuaCBiL1NvdXJjZS9XVEYvd3Rm
L3RleHQvU3RyaW5nSW1wbC5oCmluZGV4IGNkMmI2OWJjNGExZWUyMDg1ODU3ZDMwMGYyMzcyMjZi
ZDkwZGRmNjIuLjlhYTA2ZmNkZDQ4NzZiZjQzYWNlMzM1MTEwZGVjOGEyMWI5ZTViMjEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nSW1wbC5oCisrKyBiL1NvdXJjZS9XVEYv
d3RmL3RleHQvU3RyaW5nSW1wbC5oCkBAIC03NDUsNyArNzQ1LDcgQEAgcHVibGljOgogICAgIFdU
Rl9FWFBPUlRfU1RSSU5HX0FQSSBQYXNzUmVmUHRyPFN0cmluZ0ltcGw+IHJlcGxhY2UoU3RyaW5n
SW1wbCosIFN0cmluZ0ltcGwqKTsKICAgICBXVEZfRVhQT1JUX1NUUklOR19BUEkgUGFzc1JlZlB0
cjxTdHJpbmdJbXBsPiByZXBsYWNlKHVuc2lnbmVkIGluZGV4LCB1bnNpZ25lZCBsZW4sIFN0cmlu
Z0ltcGwqKTsKIAotICAgIFdURl9FWFBPUlRfU1RSSU5HX0FQSSBXVEY6OlVuaWNvZGU6OkRpcmVj
dGlvbiBkZWZhdWx0V3JpdGluZ0RpcmVjdGlvbihib29sKiBoYXNTdHJvbmdEaXJlY3Rpb25hbGl0
eSA9IDApOworICAgIFdURl9FWFBPUlRfU1RSSU5HX0FQSSBVQ2hhckRpcmVjdGlvbiBkZWZhdWx0
V3JpdGluZ0RpcmVjdGlvbihib29sKiBoYXNTdHJvbmdEaXJlY3Rpb25hbGl0eSA9IG51bGxwdHIp
OwogCiAjaWYgVVNFKENGKQogICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gY3JlYXRlQ0ZTdHJp
bmcoKTsKQEAgLTExMDcsNyArMTEwNyw3IEBAIGlubGluZSBib29sIGVxdWFsSWdub3JpbmdDYXNl
KGNvbnN0IGNoYXIqIGEsIGNvbnN0IExDaGFyKiBiLCB1bnNpZ25lZCBsZW5ndGgpIHsKIGlubGlu
ZSBib29sIGVxdWFsSWdub3JpbmdDYXNlKGNvbnN0IFVDaGFyKiBhLCBjb25zdCBVQ2hhciogYiwg
aW50IGxlbmd0aCkKIHsKICAgICBBU1NFUlQobGVuZ3RoID49IDApOwotICAgIHJldHVybiAhVW5p
Y29kZTo6dW1lbWNhc2VjbXAoYSwgYiwgbGVuZ3RoKTsKKyAgICByZXR1cm4gIXVfbWVtY2FzZWNt
cChhLCBiLCBsZW5ndGgsIFVfRk9MRF9DQVNFX0RFRkFVTFQpOwogfQogV1RGX0VYUE9SVF9TVFJJ
TkdfQVBJIGJvb2wgZXF1YWxJZ25vcmluZ0Nhc2VOb25OdWxsKGNvbnN0IFN0cmluZ0ltcGwqLCBj
b25zdCBTdHJpbmdJbXBsKik7CiAKQEAgLTEzMTcsNyArMTMxNyw3IEBAIHN0YXRpYyBpbmxpbmUg
Ym9vbCBpc1NwYWNlT3JOZXdsaW5lKFVDaGFyIGMpCiB7CiAgICAgLy8gVXNlIGlzQVNDSUlTcGFj
ZSgpIGZvciBiYXNpYyBMYXRpbi0xLgogICAgIC8vIFRoaXMgd2lsbCBpbmNsdWRlIG5ld2xpbmVz
LCB3aGljaCBhcmVuJ3QgaW5jbHVkZWQgaW4gVW5pY29kZSBEaXJXUy4KLSAgICByZXR1cm4gYyA8
PSAweDdGID8gV1RGOjppc0FTQ0lJU3BhY2UoYykgOiBXVEY6OlVuaWNvZGU6OmRpcmVjdGlvbihj
KSA9PSBXVEY6OlVuaWNvZGU6OldoaXRlU3BhY2VOZXV0cmFsOworICAgIHJldHVybiBjIDw9IDB4
N0YgPyBpc0FTQ0lJU3BhY2UoYykgOiB1X2NoYXJEaXJlY3Rpb24oYykgPT0gVV9XSElURV9TUEFD
RV9ORVVUUkFMOwogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dURi93dGYvdGV4dC9XVEZTdHJpbmcuaCBiL1NvdXJjZS9XVEYvd3RmL3Rl
eHQvV1RGU3RyaW5nLmgKaW5kZXggMDliNTU0MWE5OWQ3NmIxNWIxOTRiZjA1NzBkMmYxMjUxMzVh
YWU0Yy4uNjE5MTRiYjA2OGZhYzE1Y2Y4OWJhMmVlODU1NmYwZDY1YmExMzU3MSAxMDA2NDQKLS0t
IGEvU291cmNlL1dURi93dGYvdGV4dC9XVEZTdHJpbmcuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi90
ZXh0L1dURlN0cmluZy5oCkBAIC00NDAsMTMgKzQ0MCwxMyBAQCBwdWJsaWM6CiAgICAgc3RhdGlj
IFN0cmluZyBmcm9tVVRGOFdpdGhMYXRpbjFGYWxsYmFjayhjb25zdCBjaGFyKiBzLCBzaXplX3Qg
bGVuZ3RoKSB7IHJldHVybiBmcm9tVVRGOFdpdGhMYXRpbjFGYWxsYmFjayhyZWludGVycHJldF9j
YXN0PGNvbnN0IExDaGFyKj4ocyksIGxlbmd0aCk7IH07CiAgICAgCiAgICAgLy8gRGV0ZXJtaW5l
cyB0aGUgd3JpdGluZyBkaXJlY3Rpb24gdXNpbmcgdGhlIFVuaWNvZGUgQmlkaSBBbGdvcml0aG0g
cnVsZXMgUDIgYW5kIFAzLgotICAgIFdURjo6VW5pY29kZTo6RGlyZWN0aW9uIGRlZmF1bHRXcml0
aW5nRGlyZWN0aW9uKGJvb2wqIGhhc1N0cm9uZ0RpcmVjdGlvbmFsaXR5ID0gMCkgY29uc3QKKyAg
ICBVQ2hhckRpcmVjdGlvbiBkZWZhdWx0V3JpdGluZ0RpcmVjdGlvbihib29sKiBoYXNTdHJvbmdE
aXJlY3Rpb25hbGl0eSA9IG51bGxwdHIpIGNvbnN0CiAgICAgewogICAgICAgICBpZiAobV9pbXBs
KQogICAgICAgICAgICAgcmV0dXJuIG1faW1wbC0+ZGVmYXVsdFdyaXRpbmdEaXJlY3Rpb24oaGFz
U3Ryb25nRGlyZWN0aW9uYWxpdHkpOwogICAgICAgICBpZiAoaGFzU3Ryb25nRGlyZWN0aW9uYWxp
dHkpCiAgICAgICAgICAgICAqaGFzU3Ryb25nRGlyZWN0aW9uYWxpdHkgPSBmYWxzZTsKLSAgICAg
ICAgcmV0dXJuIFdURjo6VW5pY29kZTo6TGVmdFRvUmlnaHQ7CisgICAgICAgIHJldHVybiBVX0xF
RlRfVE9fUklHSFQ7CiAgICAgfQogCiAgICAgYm9vbCBjb250YWluc09ubHlBU0NJSSgpIGNvbnN0
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvdW5pY29kZS9pY3UvVW5pY29kZUljdS5oIGIv
U291cmNlL1dURi93dGYvdW5pY29kZS9pY3UvVW5pY29kZUljdS5oCmluZGV4IDdjY2E5NTViNGJl
ZGUwYTEzYjY4N2U4ZWRkOTFlMTMxMWNhZDdjZTEuLjBhMzg2YjU5ZGMyNzNjMDI4Mzc4NTIxNDAx
NjNjZWJjNDcxNzU3YzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3VuaWNvZGUvaWN1L1Vu
aWNvZGVJY3UuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi91bmljb2RlL2ljdS9Vbmljb2RlSWN1LmgK
QEAgLTIzLDIxOCArMjMsMTAgQEAKICNpZm5kZWYgV1RGX1VOSUNPREVfSUNVX0gKICNkZWZpbmUg
V1RGX1VOSUNPREVfSUNVX0gKIAotI2lmIFVTRShJQ1VfVU5JQ09ERSkKLQogI2luY2x1ZGUgPHN0
ZGxpYi5oPgogI2luY2x1ZGUgPHVuaWNvZGUvdWNoYXIuaD4KICNpbmNsdWRlIDx1bmljb2RlL3Vz
Y3JpcHQuaD4KICNpbmNsdWRlIDx1bmljb2RlL3VzdHJpbmcuaD4KICNpbmNsdWRlIDx1bmljb2Rl
L3V0ZjE2Lmg+CiAKLW5hbWVzcGFjZSBXVEYgewotCi1uYW1lc3BhY2UgVW5pY29kZSB7Ci0KLWVu
dW0gRGlyZWN0aW9uIHsKLSAgICBMZWZ0VG9SaWdodCA9IFVfTEVGVF9UT19SSUdIVCwKLSAgICBS
aWdodFRvTGVmdCA9IFVfUklHSFRfVE9fTEVGVCwKLSAgICBFdXJvcGVhbk51bWJlciA9IFVfRVVS
T1BFQU5fTlVNQkVSLAotICAgIEV1cm9wZWFuTnVtYmVyU2VwYXJhdG9yID0gVV9FVVJPUEVBTl9O
VU1CRVJfU0VQQVJBVE9SLAotICAgIEV1cm9wZWFuTnVtYmVyVGVybWluYXRvciA9IFVfRVVST1BF
QU5fTlVNQkVSX1RFUk1JTkFUT1IsCi0gICAgQXJhYmljTnVtYmVyID0gVV9BUkFCSUNfTlVNQkVS
LAotICAgIENvbW1vbk51bWJlclNlcGFyYXRvciA9IFVfQ09NTU9OX05VTUJFUl9TRVBBUkFUT1Is
Ci0gICAgQmxvY2tTZXBhcmF0b3IgPSBVX0JMT0NLX1NFUEFSQVRPUiwKLSAgICBTZWdtZW50U2Vw
YXJhdG9yID0gVV9TRUdNRU5UX1NFUEFSQVRPUiwKLSAgICBXaGl0ZVNwYWNlTmV1dHJhbCA9IFVf
V0hJVEVfU1BBQ0VfTkVVVFJBTCwKLSAgICBPdGhlck5ldXRyYWwgPSBVX09USEVSX05FVVRSQUws
Ci0gICAgTGVmdFRvUmlnaHRFbWJlZGRpbmcgPSBVX0xFRlRfVE9fUklHSFRfRU1CRURESU5HLAot
ICAgIExlZnRUb1JpZ2h0T3ZlcnJpZGUgPSBVX0xFRlRfVE9fUklHSFRfT1ZFUlJJREUsCi0gICAg
UmlnaHRUb0xlZnRBcmFiaWMgPSBVX1JJR0hUX1RPX0xFRlRfQVJBQklDLAotICAgIFJpZ2h0VG9M
ZWZ0RW1iZWRkaW5nID0gVV9SSUdIVF9UT19MRUZUX0VNQkVERElORywKLSAgICBSaWdodFRvTGVm
dE92ZXJyaWRlID0gVV9SSUdIVF9UT19MRUZUX09WRVJSSURFLAotICAgIFBvcERpcmVjdGlvbmFs
Rm9ybWF0ID0gVV9QT1BfRElSRUNUSU9OQUxfRk9STUFULAotICAgIE5vblNwYWNpbmdNYXJrID0g
VV9ESVJfTk9OX1NQQUNJTkdfTUFSSywKLSAgICBCb3VuZGFyeU5ldXRyYWwgPSBVX0JPVU5EQVJZ
X05FVVRSQUwKLX07Ci0KLWVudW0gRGVjb21wb3NpdGlvblR5cGUgewotICAgIERlY29tcG9zaXRp
b25Ob25lID0gVV9EVF9OT05FLAotICAgIERlY29tcG9zaXRpb25DYW5vbmljYWwgPSBVX0RUX0NB
Tk9OSUNBTCwKLSAgICBEZWNvbXBvc2l0aW9uQ29tcGF0ID0gVV9EVF9DT01QQVQsCi0gICAgRGVj
b21wb3NpdGlvbkNpcmNsZSA9IFVfRFRfQ0lSQ0xFLAotICAgIERlY29tcG9zaXRpb25GaW5hbCA9
IFVfRFRfRklOQUwsCi0gICAgRGVjb21wb3NpdGlvbkZvbnQgPSBVX0RUX0ZPTlQsCi0gICAgRGVj
b21wb3NpdGlvbkZyYWN0aW9uID0gVV9EVF9GUkFDVElPTiwKLSAgICBEZWNvbXBvc2l0aW9uSW5p
dGlhbCA9IFVfRFRfSU5JVElBTCwKLSAgICBEZWNvbXBvc2l0aW9uSXNvbGF0ZWQgPSBVX0RUX0lT
T0xBVEVELAotICAgIERlY29tcG9zaXRpb25NZWRpYWwgPSBVX0RUX01FRElBTCwKLSAgICBEZWNv
bXBvc2l0aW9uTmFycm93ID0gVV9EVF9OQVJST1csCi0gICAgRGVjb21wb3NpdGlvbk5vQnJlYWsg
PSBVX0RUX05PQlJFQUssCi0gICAgRGVjb21wb3NpdGlvblNtYWxsID0gVV9EVF9TTUFMTCwKLSAg
ICBEZWNvbXBvc2l0aW9uU3F1YXJlID0gVV9EVF9TUVVBUkUsCi0gICAgRGVjb21wb3NpdGlvblN1
YiA9IFVfRFRfU1VCLAotICAgIERlY29tcG9zaXRpb25TdXBlciA9IFVfRFRfU1VQRVIsCi0gICAg
RGVjb21wb3NpdGlvblZlcnRpY2FsID0gVV9EVF9WRVJUSUNBTCwKLSAgICBEZWNvbXBvc2l0aW9u
V2lkZSA9IFVfRFRfV0lERSwKLX07Ci0KLWVudW0gQ2hhckNhdGVnb3J5IHsKLSAgICBOb0NhdGVn
b3J5ID0gIDAsCi0gICAgT3RoZXJfTm90QXNzaWduZWQgPSBVX01BU0soVV9HRU5FUkFMX09USEVS
X1RZUEVTKSwKLSAgICBMZXR0ZXJfVXBwZXJjYXNlID0gVV9NQVNLKFVfVVBQRVJDQVNFX0xFVFRF
UiksCi0gICAgTGV0dGVyX0xvd2VyY2FzZSA9IFVfTUFTSyhVX0xPV0VSQ0FTRV9MRVRURVIpLAot
ICAgIExldHRlcl9UaXRsZWNhc2UgPSBVX01BU0soVV9USVRMRUNBU0VfTEVUVEVSKSwKLSAgICBM
ZXR0ZXJfTW9kaWZpZXIgPSBVX01BU0soVV9NT0RJRklFUl9MRVRURVIpLAotICAgIExldHRlcl9P
dGhlciA9IFVfTUFTSyhVX09USEVSX0xFVFRFUiksCi0KLSAgICBNYXJrX05vblNwYWNpbmcgPSBV
X01BU0soVV9OT05fU1BBQ0lOR19NQVJLKSwKLSAgICBNYXJrX0VuY2xvc2luZyA9IFVfTUFTSyhV
X0VOQ0xPU0lOR19NQVJLKSwKLSAgICBNYXJrX1NwYWNpbmdDb21iaW5pbmcgPSBVX01BU0soVV9D
T01CSU5JTkdfU1BBQ0lOR19NQVJLKSwKLQotICAgIE51bWJlcl9EZWNpbWFsRGlnaXQgPSBVX01B
U0soVV9ERUNJTUFMX0RJR0lUX05VTUJFUiksCi0gICAgTnVtYmVyX0xldHRlciA9IFVfTUFTSyhV
X0xFVFRFUl9OVU1CRVIpLAotICAgIE51bWJlcl9PdGhlciA9IFVfTUFTSyhVX09USEVSX05VTUJF
UiksCi0KLSAgICBTZXBhcmF0b3JfU3BhY2UgPSBVX01BU0soVV9TUEFDRV9TRVBBUkFUT1IpLAot
ICAgIFNlcGFyYXRvcl9MaW5lID0gVV9NQVNLKFVfTElORV9TRVBBUkFUT1IpLAotICAgIFNlcGFy
YXRvcl9QYXJhZ3JhcGggPSBVX01BU0soVV9QQVJBR1JBUEhfU0VQQVJBVE9SKSwKLQotICAgIE90
aGVyX0NvbnRyb2wgPSBVX01BU0soVV9DT05UUk9MX0NIQVIpLAotICAgIE90aGVyX0Zvcm1hdCA9
IFVfTUFTSyhVX0ZPUk1BVF9DSEFSKSwKLSAgICBPdGhlcl9Qcml2YXRlVXNlID0gVV9NQVNLKFVf
UFJJVkFURV9VU0VfQ0hBUiksCi0gICAgT3RoZXJfU3Vycm9nYXRlID0gVV9NQVNLKFVfU1VSUk9H
QVRFKSwKLQotICAgIFB1bmN0dWF0aW9uX0Rhc2ggPSBVX01BU0soVV9EQVNIX1BVTkNUVUFUSU9O
KSwKLSAgICBQdW5jdHVhdGlvbl9PcGVuID0gVV9NQVNLKFVfU1RBUlRfUFVOQ1RVQVRJT04pLAot
ICAgIFB1bmN0dWF0aW9uX0Nsb3NlID0gVV9NQVNLKFVfRU5EX1BVTkNUVUFUSU9OKSwKLSAgICBQ
dW5jdHVhdGlvbl9Db25uZWN0b3IgPSBVX01BU0soVV9DT05ORUNUT1JfUFVOQ1RVQVRJT04pLAot
ICAgIFB1bmN0dWF0aW9uX090aGVyID0gVV9NQVNLKFVfT1RIRVJfUFVOQ1RVQVRJT04pLAotCi0g
ICAgU3ltYm9sX01hdGggPSBVX01BU0soVV9NQVRIX1NZTUJPTCksCi0gICAgU3ltYm9sX0N1cnJl
bmN5ID0gVV9NQVNLKFVfQ1VSUkVOQ1lfU1lNQk9MKSwKLSAgICBTeW1ib2xfTW9kaWZpZXIgPSBV
X01BU0soVV9NT0RJRklFUl9TWU1CT0wpLAotICAgIFN5bWJvbF9PdGhlciA9IFVfTUFTSyhVX09U
SEVSX1NZTUJPTCksCi0KLSAgICBQdW5jdHVhdGlvbl9Jbml0aWFsUXVvdGUgPSBVX01BU0soVV9J
TklUSUFMX1BVTkNUVUFUSU9OKSwKLSAgICBQdW5jdHVhdGlvbl9GaW5hbFF1b3RlID0gVV9NQVNL
KFVfRklOQUxfUFVOQ1RVQVRJT04pCi19OwotCi1pbmxpbmUgVUNoYXIzMiBmb2xkQ2FzZShVQ2hh
cjMyIGMpCi17Ci0gICAgcmV0dXJuIHVfZm9sZENhc2UoYywgVV9GT0xEX0NBU0VfREVGQVVMVCk7
Ci19Ci0KLWlubGluZSBpbnQgZm9sZENhc2UoVUNoYXIqIHJlc3VsdCwgaW50IHJlc3VsdExlbmd0
aCwgY29uc3QgVUNoYXIqIHNyYywgaW50IHNyY0xlbmd0aCwgYm9vbCogZXJyb3IpCi17Ci0gICAg
VUVycm9yQ29kZSBzdGF0dXMgPSBVX1pFUk9fRVJST1I7Ci0gICAgaW50IHJlYWxMZW5ndGggPSB1
X3N0ckZvbGRDYXNlKHJlc3VsdCwgcmVzdWx0TGVuZ3RoLCBzcmMsIHNyY0xlbmd0aCwgVV9GT0xE
X0NBU0VfREVGQVVMVCwgJnN0YXR1cyk7Ci0gICAgKmVycm9yID0gIVVfU1VDQ0VTUyhzdGF0dXMp
OwotICAgIHJldHVybiByZWFsTGVuZ3RoOwotfQotCi1pbmxpbmUgaW50IHRvTG93ZXIoVUNoYXIq
IHJlc3VsdCwgaW50IHJlc3VsdExlbmd0aCwgY29uc3QgVUNoYXIqIHNyYywgaW50IHNyY0xlbmd0
aCwgYm9vbCogZXJyb3IpCi17Ci0gICAgVUVycm9yQ29kZSBzdGF0dXMgPSBVX1pFUk9fRVJST1I7
Ci0gICAgaW50IHJlYWxMZW5ndGggPSB1X3N0clRvTG93ZXIocmVzdWx0LCByZXN1bHRMZW5ndGgs
IHNyYywgc3JjTGVuZ3RoLCAiIiwgJnN0YXR1cyk7Ci0gICAgKmVycm9yID0gISFVX0ZBSUxVUkUo
c3RhdHVzKTsKLSAgICByZXR1cm4gcmVhbExlbmd0aDsKLX0KLQotaW5saW5lIFVDaGFyMzIgdG9M
b3dlcihVQ2hhcjMyIGMpCi17Ci0gICAgcmV0dXJuIHVfdG9sb3dlcihjKTsKLX0KLQotaW5saW5l
IFVDaGFyMzIgdG9VcHBlcihVQ2hhcjMyIGMpCi17Ci0gICAgcmV0dXJuIHVfdG91cHBlcihjKTsK
LX0KLQotaW5saW5lIGludCB0b1VwcGVyKFVDaGFyKiByZXN1bHQsIGludCByZXN1bHRMZW5ndGgs
IGNvbnN0IFVDaGFyKiBzcmMsIGludCBzcmNMZW5ndGgsIGJvb2wqIGVycm9yKQotewotICAgIFVF
cnJvckNvZGUgc3RhdHVzID0gVV9aRVJPX0VSUk9SOwotICAgIGludCByZWFsTGVuZ3RoID0gdV9z
dHJUb1VwcGVyKHJlc3VsdCwgcmVzdWx0TGVuZ3RoLCBzcmMsIHNyY0xlbmd0aCwgIiIsICZzdGF0
dXMpOwotICAgICplcnJvciA9ICEhVV9GQUlMVVJFKHN0YXR1cyk7Ci0gICAgcmV0dXJuIHJlYWxM
ZW5ndGg7Ci19Ci0KLWlubGluZSBVQ2hhcjMyIHRvVGl0bGVDYXNlKFVDaGFyMzIgYykKLXsKLSAg
ICByZXR1cm4gdV90b3RpdGxlKGMpOwotfQotCi1pbmxpbmUgYm9vbCBpc0FyYWJpY0NoYXIoVUNo
YXIzMiBjKQotewotICAgICAgcmV0dXJuIHVibG9ja19nZXRDb2RlKGMpID09IFVCTE9DS19BUkFC
SUM7Ci19Ci0KLWlubGluZSBib29sIGlzQWxwaGFudW1lcmljKFVDaGFyMzIgYykKLXsKLSAgICBy
ZXR1cm4gdV9pc2FsbnVtKGMpOwotfQotCi1pbmxpbmUgYm9vbCBpc1NlcGFyYXRvclNwYWNlKFVD
aGFyMzIgYykKLXsKLSAgICByZXR1cm4gdV9jaGFyVHlwZShjKSA9PSBVX1NQQUNFX1NFUEFSQVRP
UjsKLX0KLQotaW5saW5lIGJvb2wgaXNQcmludGFibGVDaGFyKFVDaGFyMzIgYykKLXsKLSAgICBy
ZXR1cm4gISF1X2lzcHJpbnQoYyk7Ci19Ci0KLWlubGluZSBib29sIGlzUHVuY3QoVUNoYXIzMiBj
KQotewotICAgIHJldHVybiAhIXVfaXNwdW5jdChjKTsKLX0KLQotI2RlZmluZSBXS19MQl9DT05E
SVRJT05BTF9KQVBBTkVTRV9TVEFSVEVSIDM3Ci0KLWlubGluZSBib29sIHJlcXVpcmVzQ29tcGxl
eENvbnRleHRGb3JXb3JkQnJlYWtpbmcoVUNoYXIzMiBjKQotewotICAgIGludDMyX3QgcHJvcCA9
IHVfZ2V0SW50UHJvcGVydHlWYWx1ZShjLCBVQ0hBUl9MSU5FX0JSRUFLKTsKLSAgICByZXR1cm4g
cHJvcCA9PSBVX0xCX0NPTVBMRVhfQ09OVEVYVCB8fCBwcm9wID09IFdLX0xCX0NPTkRJVElPTkFM
X0pBUEFORVNFX1NUQVJURVIgfHwgcHJvcCA9PSBVX0xCX0lERU9HUkFQSElDOwotfQotCi1pbmxp
bmUgVUNoYXIzMiBtaXJyb3JlZENoYXIoVUNoYXIzMiBjKQotewotICAgIHJldHVybiB1X2NoYXJN
aXJyb3IoYyk7Ci19Ci0KLWlubGluZSBDaGFyQ2F0ZWdvcnkgY2F0ZWdvcnkoVUNoYXIzMiBjKQot
ewotICAgIHJldHVybiBzdGF0aWNfY2FzdDxDaGFyQ2F0ZWdvcnk+KFVfR0VUX0dDX01BU0soYykp
OwotfQotCi1pbmxpbmUgRGlyZWN0aW9uIGRpcmVjdGlvbihVQ2hhcjMyIGMpCi17Ci0gICAgcmV0
dXJuIHN0YXRpY19jYXN0PERpcmVjdGlvbj4odV9jaGFyRGlyZWN0aW9uKGMpKTsKLX0KLQotaW5s
aW5lIGJvb2wgaXNMb3dlcihVQ2hhcjMyIGMpCi17Ci0gICAgcmV0dXJuICEhdV9pc2xvd2VyKGMp
OwotfQotCi1pbmxpbmUgdWludDhfdCBjb21iaW5pbmdDbGFzcyhVQ2hhcjMyIGMpCi17Ci0gICAg
cmV0dXJuIHVfZ2V0Q29tYmluaW5nQ2xhc3MoYyk7Ci19Ci0KLWlubGluZSBEZWNvbXBvc2l0aW9u
VHlwZSBkZWNvbXBvc2l0aW9uVHlwZShVQ2hhcjMyIGMpCi17Ci0gICAgcmV0dXJuIHN0YXRpY19j
YXN0PERlY29tcG9zaXRpb25UeXBlPih1X2dldEludFByb3BlcnR5VmFsdWUoYywgVUNIQVJfREVD
T01QT1NJVElPTl9UWVBFKSk7Ci19Ci0KLWlubGluZSBpbnQgdW1lbWNhc2VjbXAoY29uc3QgVUNo
YXIqIGEsIGNvbnN0IFVDaGFyKiBiLCBpbnQgbGVuKQotewotICAgIHJldHVybiB1X21lbWNhc2Vj
bXAoYSwgYiwgbGVuLCBVX0ZPTERfQ0FTRV9ERUZBVUxUKTsKLX0KLQotfSAvLyBuYW1lc3BhY2Ug
VW5pY29kZQotCi19IC8vIG5hbWVzcGFjZSBXVEYKLQotI2VuZGlmIC8vIFVTRShJQ1VfVU5JQ09E
RSkKLQogI2VuZGlmIC8vIFdURl9VTklDT0RFX0lDVV9ICmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RG
L3d0Zi91bmljb2RlL3djaGFyL1VuaWNvZGVXY2hhci5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi91bmlj
b2RlL3djaGFyL1VuaWNvZGVXY2hhci5jcHAKaW5kZXggZjk4MDkwMGM4NDAwMDFlOWY0ODVlMzgy
Y2ViMDZjNDEyOGM2MWI5NC4uZjE3YzA1MjY3YTQwZmYxNjYxOTg4NTdiZjI0NjdmMzViMDMyZWVj
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvdW5pY29kZS93Y2hhci9Vbmljb2RlV2NoYXIu
Y3BwCisrKyBiL1NvdXJjZS9XVEYvd3RmL3VuaWNvZGUvd2NoYXIvVW5pY29kZVdjaGFyLmNwcApA
QCAtMjcsNDEgKzI3LDYzIEBACiAKICNpbmNsdWRlIDxhbGdvcml0aG0+CiAKLW5hbWVzcGFjZSBX
VEYgewotbmFtZXNwYWNlIFVuaWNvZGUgeworaW50IHVub3JtX25vcm1hbGl6ZShjb25zdCBVQ2hh
ciosIGludDMyX3QsIFVOb3JtYWxpemF0aW9uTW9kZSwgaW50MzJfdCwgVUNoYXIqLCBpbnQzMl90
LCBVRXJyb3JDb2RlKikKK3sKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKK30KIAotQ2hhckNh
dGVnb3J5IGNhdGVnb3J5KFVDaGFyMzIpCitVQ2hhckRpcmVjdGlvbiB1X2NoYXJEaXJlY3Rpb24o
VUNoYXIzMikKIHsKLSAgICByZXR1cm4gTm9DYXRlZ29yeTsgLy8gRklYTUU6IGltcGxlbWVudCEK
KyAgICByZXR1cm4gVV9MRUZUX1RPX1JJR0hUOyAvLyBGSVhNRTogaW1wbGVtZW50IQogfQogCi11
bnNpZ25lZCBjaGFyIGNvbWJpbmluZ0NsYXNzKFVDaGFyMzIpCitVQ2hhcjMyIHVfY2hhck1pcnJv
cihVQ2hhcjMyIGNoYXJhY3RlcikKIHsKLSAgICByZXR1cm4gMDsgLy8gRklYTUU6IGltcGxlbWVu
dCEKKyAgICAvLyBGSVhNRTogSW1wbGVtZW50IHRoaXMuCisgICAgcmV0dXJuIGNoYXJhY3RlcjsK
IH0KIAotRGlyZWN0aW9uIGRpcmVjdGlvbihVQ2hhcjMyKQoraW50OF90IHVfY2hhclR5cGUoVUNo
YXIzMikKIHsKLSAgICByZXR1cm4gTGVmdFRvUmlnaHQ7IC8vIEZJWE1FOiBpbXBsZW1lbnQhCisg
ICAgLy8gRklYTUU6IEltcGxlbWVudCB0aGlzLgorICAgIHJldHVybiBVX0NIQVJfQ0FURUdPUllf
VU5LTk9XTjsKIH0KIAotRGVjb21wb3NpdGlvblR5cGUgZGVjb21wb3NpdGlvblR5cGUoVUNoYXIz
MikKK3VpbnQ4X3QgdV9nZXRDb21iaW5pbmdDbGFzcyhVQ2hhcjMyKQogewotICAgIHJldHVybiBE
ZWNvbXBvc2l0aW9uTm9uZTsgLy8gRklYTUU6IGltcGxlbWVudCEKKyAgICAvLyBGSVhNRTogSW1w
bGVtZW50IHRoaXMuCisgICAgcmV0dXJuIDA7CiB9CiAKLWJvb2wgcmVxdWlyZXNDb21wbGV4Q29u
dGV4dEZvcldvcmRCcmVha2luZyhVQ2hhcjMyKQoraW50IHVfZ2V0SW50UHJvcGVydHlWYWx1ZShV
Q2hhcjMyLCBVUHJvcGVydHkgcHJvcGVydHkpCiB7Ci0gICAgcmV0dXJuIGZhbHNlOyAvLyBGSVhN
RTogaW1wbGVtZW50IQorICAgIHN3aXRjaCAocHJvcGVydHkpIHsKKyAgICBjYXNlIFVDSEFSX0RF
Q09NUE9TSVRJT05fVFlQRToKKyAgICAgICAgLy8gRklYTUU6IEltcGxlbWVudCB0aGlzLgorICAg
ICAgICByZXR1cm4gVV9EVF9OT05FOworICAgIGNhc2UgVUNIQVJfTElORV9CUkVBSzoKKyAgICAg
ICAgLy8gRklYTUU6IEltcGxlbWVudCB0aGlzLgorICAgICAgICByZXR1cm4gVV9MQl9VTktOT1dO
OworICAgIH0KKworICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiAwOwogfQog
Ci1VQ2hhcjMyIG1pcnJvcmVkQ2hhcihVQ2hhcjMyIGMpCitpbnQgdV9tZW1jYXNlY21wKGNvbnN0
IFVDaGFyKiBhLCBjb25zdCBVQ2hhciogYiwgaW50IGxlbmd0aCwgdW5zaWduZWQgb3B0aW9ucykK
IHsKLSAgICByZXR1cm4gYzsgLy8gRklYTUU6IGltcGxlbWVudCEKKyAgICBmb3IgKGludCBpID0g
MDsgaSA8IGxlbmd0aDsgKytpKSB7CisgICAgICAgIFVDaGFyIGMxID0gdV9mb2xkQ2FzZShhW2ld
LCBvcHRpb25zKTsKKyAgICAgICAgVUNoYXIgYzIgPSB1X2ZvbGRDYXNlKGJbaV0sIG9wdGlvbnMp
OworICAgICAgICBpZiAoYzEgIT0gYzIpCisgICAgICAgICAgICByZXR1cm4gYzEgLSBjMjsKKyAg
ICB9CisKKyAgICByZXR1cm4gMDsKIH0KIAogdGVtcGxhdGU8VUNoYXIgRnVuY3Rpb24oVUNoYXIp
Pgotc3RhdGljIGlubGluZSBpbnQgY29udmVydFdpdGhGdW5jdGlvbihVQ2hhciogcmVzdWx0LCBp
bnQgcmVzdWx0TGVuZ3RoLCBjb25zdCBVQ2hhciogc291cmNlLCBpbnQgc291cmNlTGVuZ3RoLCBi
b29sKiBpc0Vycm9yKQorc3RhdGljIGlubGluZSBpbnQgY29udmVydFdpdGhGdW5jdGlvbihVQ2hh
ciogcmVzdWx0LCBpbnQgcmVzdWx0TGVuZ3RoLCBjb25zdCBVQ2hhciogc291cmNlLCBpbnQgc291
cmNlTGVuZ3RoLCBVRXJyb3JDb2RlJiBzdGF0dXMpCiB7CiAgICAgVUNoYXIqIHJlc3VsdEl0ZXJh
dG9yID0gcmVzdWx0OwogICAgIFVDaGFyKiByZXN1bHRFbmQgPSByZXN1bHQgKyBzdGQ6Om1pbihy
ZXN1bHRMZW5ndGgsIHNvdXJjZUxlbmd0aCk7CkBAIC03MSwyNCArOTMsMjIgQEAgc3RhdGljIGlu
bGluZSBpbnQgY29udmVydFdpdGhGdW5jdGlvbihVQ2hhciogcmVzdWx0LCBpbnQgcmVzdWx0TGVu
Z3RoLCBjb25zdCBVQ2gKICAgICBpZiAoc291cmNlTGVuZ3RoIDwgcmVzdWx0TGVuZ3RoKQogICAg
ICAgICAqcmVzdWx0SXRlcmF0b3IgPSAnXDAnOwogCi0gICAgKmlzRXJyb3IgPSBzb3VyY2VMZW5n
dGggPiByZXN1bHRMZW5ndGg7CisgICAgc3RhdHVzID0gc291cmNlTGVuZ3RoID4gcmVzdWx0TGVu
Z3RoID8gVV9FUlJPUiA6IFVfWkVST19FUlJPUjsKICAgICByZXR1cm4gc291cmNlTGVuZ3RoOwog
fQogCi1pbnQgZm9sZENhc2UoVUNoYXIqIHJlc3VsdCwgaW50IHJlc3VsdExlbmd0aCwgY29uc3Qg
VUNoYXIqIHNvdXJjZSwgaW50IHNvdXJjZUxlbmd0aCwgYm9vbCogaXNFcnJvcikKK2ludCB1X3N0
ckZvbGRDYXNlKFVDaGFyKiByZXN1bHQsIGludCByZXN1bHRMZW5ndGgsIGNvbnN0IFVDaGFyKiBz
b3VyY2UsIGludCBzb3VyY2VMZW5ndGgsIHVuc2lnbmVkIG9wdGlvbnMsIFVFcnJvckNvZGUqIHN0
YXR1cykKIHsKLSAgICByZXR1cm4gY29udmVydFdpdGhGdW5jdGlvbjxmb2xkQ2FzZT4ocmVzdWx0
LCByZXN1bHRMZW5ndGgsIHNvdXJjZSwgc291cmNlTGVuZ3RoLCBpc0Vycm9yKTsKKyAgICBBU1NF
UlRfVU5VU0VEKG9wdGlvbnMsIG9wdGlvbnMgPT0gVV9GT0xEX0NBU0VfREVGQVVMVCk7CisgICAg
cmV0dXJuIGNvbnZlcnRXaXRoRnVuY3Rpb248dV9mb2xkQ2FzZT4ocmVzdWx0LCByZXN1bHRMZW5n
dGgsIHNvdXJjZSwgc291cmNlTGVuZ3RoLCAqc3RhdHVzKTsKIH0KIAotaW50IHRvTG93ZXIoVUNo
YXIqIHJlc3VsdCwgaW50IHJlc3VsdExlbmd0aCwgY29uc3QgVUNoYXIqIHNvdXJjZSwgaW50IHNv
dXJjZUxlbmd0aCwgYm9vbCogaXNFcnJvcikKK2ludCB1X3N0clRvTG93ZXIoVUNoYXIqIHJlc3Vs
dCwgaW50IHJlc3VsdExlbmd0aCwgY29uc3QgVUNoYXIqIHNvdXJjZSwgaW50IHNvdXJjZUxlbmd0
aCwgY29uc3QgY2hhciosIFVFcnJvckNvZGUqIHN0YXR1cykKIHsKLSAgICByZXR1cm4gY29udmVy
dFdpdGhGdW5jdGlvbjx0b0xvd2VyPihyZXN1bHQsIHJlc3VsdExlbmd0aCwgc291cmNlLCBzb3Vy
Y2VMZW5ndGgsIGlzRXJyb3IpOworICAgIHJldHVybiBjb252ZXJ0V2l0aEZ1bmN0aW9uPHVfdG9s
b3dlcj4ocmVzdWx0LCByZXN1bHRMZW5ndGgsIHNvdXJjZSwgc291cmNlTGVuZ3RoLCAqc3RhdHVz
KTsKIH0KIAotaW50IHRvVXBwZXIoVUNoYXIqIHJlc3VsdCwgaW50IHJlc3VsdExlbmd0aCwgY29u
c3QgVUNoYXIqIHNvdXJjZSwgaW50IHNvdXJjZUxlbmd0aCwgYm9vbCogaXNFcnJvcikKK2ludCB1
X3N0clRvVXBwZXIoVUNoYXIqIHJlc3VsdCwgaW50IHJlc3VsdExlbmd0aCwgY29uc3QgVUNoYXIq
IHNvdXJjZSwgaW50IHNvdXJjZUxlbmd0aCwgY29uc3QgY2hhciosIFVFcnJvckNvZGUqIHN0YXR1
cykKIHsKLSAgICByZXR1cm4gY29udmVydFdpdGhGdW5jdGlvbjx0b1VwcGVyPihyZXN1bHQsIHJl
c3VsdExlbmd0aCwgc291cmNlLCBzb3VyY2VMZW5ndGgsIGlzRXJyb3IpOworICAgIHJldHVybiBj
b252ZXJ0V2l0aEZ1bmN0aW9uPHVfdG91cHBlcj4ocmVzdWx0LCByZXN1bHRMZW5ndGgsIHNvdXJj
ZSwgc291cmNlTGVuZ3RoLCAqc3RhdHVzKTsKIH0KLQotfSAvLyBuYW1lc3BhY2UgVW5pY29kZQot
fSAvLyBuYW1lc3BhY2UgV1RGCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi91bmljb2RlL3dj
aGFyL1VuaWNvZGVXY2hhci5oIGIvU291cmNlL1dURi93dGYvdW5pY29kZS93Y2hhci9Vbmljb2Rl
V2NoYXIuaAppbmRleCBmZTEwOTRiMzc4MWQ2NzUxYzkzY2E2ZjRiNGYwYmU3YjE1NWI5YzUxLi4y
MjA2ZWRlODE5MGYxYjk4MGZmNWFjZmVhNmQxMDc1OGQ5NDNmYTMzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV1RGL3d0Zi91bmljb2RlL3djaGFyL1VuaWNvZGVXY2hhci5oCisrKyBiL1NvdXJjZS9XVEYv
d3RmL3VuaWNvZGUvd2NoYXIvVW5pY29kZVdjaGFyLmgKQEAgLTMzLDEzNSArMzMsMTAwIEBACiB0
eXBlZGVmIHdjaGFyX3QgVUNoYXI7CiB0eXBlZGVmIHVpbnQzMl90IFVDaGFyMzI7CiAKLW5hbWVz
cGFjZSBXVEYgewotbmFtZXNwYWNlIFVuaWNvZGUgewotCi1lbnVtIERpcmVjdGlvbiB7Ci0gICAg
TGVmdFRvUmlnaHQsCi0gICAgUmlnaHRUb0xlZnQsCi0gICAgRXVyb3BlYW5OdW1iZXIsCi0gICAg
RXVyb3BlYW5OdW1iZXJTZXBhcmF0b3IsCi0gICAgRXVyb3BlYW5OdW1iZXJUZXJtaW5hdG9yLAot
ICAgIEFyYWJpY051bWJlciwKLSAgICBDb21tb25OdW1iZXJTZXBhcmF0b3IsCi0gICAgQmxvY2tT
ZXBhcmF0b3IsCi0gICAgU2VnbWVudFNlcGFyYXRvciwKLSAgICBXaGl0ZVNwYWNlTmV1dHJhbCwK
LSAgICBPdGhlck5ldXRyYWwsCi0gICAgTGVmdFRvUmlnaHRFbWJlZGRpbmcsCi0gICAgTGVmdFRv
UmlnaHRPdmVycmlkZSwKLSAgICBSaWdodFRvTGVmdEFyYWJpYywKLSAgICBSaWdodFRvTGVmdEVt
YmVkZGluZywKLSAgICBSaWdodFRvTGVmdE92ZXJyaWRlLAotICAgIFBvcERpcmVjdGlvbmFsRm9y
bWF0LAotICAgIE5vblNwYWNpbmdNYXJrLAotICAgIEJvdW5kYXJ5TmV1dHJhbAotfTsKK2VudW0g
VUJsb2NrQ29kZSB7IFVCTE9DS19VTktOT1dOLCBVQkxPQ0tfQVJBQklDIH07CiAKLWVudW0gRGVj
b21wb3NpdGlvblR5cGUgewotICAgIERlY29tcG9zaXRpb25Ob25lLAotICAgIERlY29tcG9zaXRp
b25DYW5vbmljYWwsCi0gICAgRGVjb21wb3NpdGlvbkNvbXBhdCwKLSAgICBEZWNvbXBvc2l0aW9u
Q2lyY2xlLAotICAgIERlY29tcG9zaXRpb25GaW5hbCwKLSAgICBEZWNvbXBvc2l0aW9uRm9udCwK
LSAgICBEZWNvbXBvc2l0aW9uRnJhY3Rpb24sCi0gICAgRGVjb21wb3NpdGlvbkluaXRpYWwsCi0g
ICAgRGVjb21wb3NpdGlvbklzb2xhdGVkLAotICAgIERlY29tcG9zaXRpb25NZWRpYWwsCi0gICAg
RGVjb21wb3NpdGlvbk5hcnJvdywKLSAgICBEZWNvbXBvc2l0aW9uTm9CcmVhaywKLSAgICBEZWNv
bXBvc2l0aW9uU21hbGwsCi0gICAgRGVjb21wb3NpdGlvblNxdWFyZSwKLSAgICBEZWNvbXBvc2l0
aW9uU3ViLAotICAgIERlY29tcG9zaXRpb25TdXBlciwKLSAgICBEZWNvbXBvc2l0aW9uVmVydGlj
YWwsCi0gICAgRGVjb21wb3NpdGlvbldpZGUKK2VudW0gVUNoYXJDYXRlZ29yeSB7CisgICAgVV9D
SEFSX0NBVEVHT1JZX1VOS05PV04sCisgICAgVV9QQVJBR1JBUEhfU0VQQVJBVE9SLAorICAgIFVf
U1BBQ0VfU0VQQVJBVE9SCiB9OwogCi1lbnVtIENoYXJDYXRlZ29yeSB7Ci0gICAgTm9DYXRlZ29y
eSA9IDAsCi0gICAgT3RoZXJfTm90QXNzaWduZWQgPSBVX01BU0soMCksCi0gICAgTGV0dGVyX1Vw
cGVyY2FzZSA9IFVfTUFTSygxKSwKLSAgICBMZXR0ZXJfTG93ZXJjYXNlID0gVV9NQVNLKDIpLAot
ICAgIExldHRlcl9UaXRsZWNhc2UgPSBVX01BU0soMyksCi0gICAgTGV0dGVyX01vZGlmaWVyID0g
VV9NQVNLKDQpLAotICAgIExldHRlcl9PdGhlciA9IFVfTUFTSyg1KSwKLQotICAgIE1hcmtfTm9u
U3BhY2luZyA9IFVfTUFTSyg2KSwKLSAgICBNYXJrX0VuY2xvc2luZyA9IFVfTUFTSyg3KSwKLSAg
ICBNYXJrX1NwYWNpbmdDb21iaW5pbmcgPSBVX01BU0soOCksCi0KLSAgICBOdW1iZXJfRGVjaW1h
bERpZ2l0ID0gVV9NQVNLKDkpLAotICAgIE51bWJlcl9MZXR0ZXIgPSBVX01BU0soMTApLAotICAg
IE51bWJlcl9PdGhlciA9IFVfTUFTSygxMSksCi0KLSAgICBTZXBhcmF0b3JfU3BhY2UgPSBVX01B
U0soMTIpLAotICAgIFNlcGFyYXRvcl9MaW5lID0gVV9NQVNLKDEzKSwKLSAgICBTZXBhcmF0b3Jf
UGFyYWdyYXBoID0gVV9NQVNLKDE0KSwKLQotICAgIE90aGVyX0NvbnRyb2wgPSBVX01BU0soMTUp
LAotICAgIE90aGVyX0Zvcm1hdCA9IFVfTUFTSygxNiksCi0gICAgT3RoZXJfUHJpdmF0ZVVzZSA9
IFVfTUFTSygxNyksCi0gICAgT3RoZXJfU3Vycm9nYXRlID0gVV9NQVNLKDE4KSwKLQotICAgIFB1
bmN0dWF0aW9uX0Rhc2ggPSBVX01BU0soMTkpLAotICAgIFB1bmN0dWF0aW9uX09wZW4gPSBVX01B
U0soMjApLAotICAgIFB1bmN0dWF0aW9uX0Nsb3NlID0gVV9NQVNLKDIxKSwKLSAgICBQdW5jdHVh
dGlvbl9Db25uZWN0b3IgPSBVX01BU0soMjIpLAotICAgIFB1bmN0dWF0aW9uX090aGVyID0gVV9N
QVNLKDIzKSwKLQotICAgIFN5bWJvbF9NYXRoID0gVV9NQVNLKDI0KSwKLSAgICBTeW1ib2xfQ3Vy
cmVuY3kgPSBVX01BU0soMjUpLAotICAgIFN5bWJvbF9Nb2RpZmllciA9IFVfTUFTSygyNiksCi0g
ICAgU3ltYm9sX090aGVyID0gVV9NQVNLKDI3KSwKLQotICAgIFB1bmN0dWF0aW9uX0luaXRpYWxR
dW90ZSA9IFVfTUFTSygyOCksCi0gICAgUHVuY3R1YXRpb25fRmluYWxRdW90ZSA9IFVfTUFTSygy
OSkKK2VudW0gVUNoYXJEaXJlY3Rpb24geworICAgIFVfTEVGVF9UT19SSUdIVCwKKyAgICBVX1JJ
R0hUX1RPX0xFRlQsCisgICAgVV9FVVJPUEVBTl9OVU1CRVIsCisgICAgVV9FVVJPUEVBTl9OVU1C
RVJfU0VQQVJBVE9SLAorICAgIFVfRVVST1BFQU5fTlVNQkVSX1RFUk1JTkFUT1IsCisgICAgVV9B
UkFCSUNfTlVNQkVSLAorICAgIFVfQ09NTU9OX05VTUJFUl9TRVBBUkFUT1IsCisgICAgVV9CTE9D
S19TRVBBUkFUT1IsCisgICAgVV9TRUdNRU5UX1NFUEFSQVRPUiwKKyAgICBVX1dISVRFX1NQQUNF
X05FVVRSQUwsCisgICAgVV9PVEhFUl9ORVVUUkFMLAorICAgIFVfTEVGVF9UT19SSUdIVF9FTUJF
RERJTkcsCisgICAgVV9MRUZUX1RPX1JJR0hUX09WRVJSSURFLAorICAgIFVfUklHSFRfVE9fTEVG
VF9BUkFCSUMsCisgICAgVV9SSUdIVF9UT19MRUZUX0VNQkVERElORywKKyAgICBVX1JJR0hUX1RP
X0xFRlRfT1ZFUlJJREUsCisgICAgVV9QT1BfRElSRUNUSU9OQUxfRk9STUFULAorICAgIFVfRElS
X05PTl9TUEFDSU5HX01BUkssCisgICAgVV9CT1VOREFSWV9ORVVUUkFMCiB9OwogCi0KLVdURl9F
WFBPUlRfUFJJVkFURSBDaGFyQ2F0ZWdvcnkgY2F0ZWdvcnkoVUNoYXIzMik7Ci1XVEZfRVhQT1JU
X1BSSVZBVEUgdW5zaWduZWQgY2hhciBjb21iaW5pbmdDbGFzcyhVQ2hhcjMyKTsKLVdURl9FWFBP
UlRfUFJJVkFURSBEaXJlY3Rpb24gZGlyZWN0aW9uKFVDaGFyMzIpOwotV1RGX0VYUE9SVF9QUklW
QVRFIERlY29tcG9zaXRpb25UeXBlIGRlY29tcG9zaXRpb25UeXBlKFVDaGFyMzIpOwotV1RGX0VY
UE9SVF9QUklWQVRFIGJvb2wgcmVxdWlyZXNDb21wbGV4Q29udGV4dEZvcldvcmRCcmVha2luZyhV
Q2hhcjMyKTsKLVdURl9FWFBPUlRfUFJJVkFURSBVQ2hhcjMyIG1pcnJvcmVkQ2hhcihVQ2hhcjMy
KTsKLQotaW5saW5lIGJvb2wgaXNBbHBoYW51bWVyaWMoVUNoYXIgYykgeyByZXR1cm4gISFpc3dh
bG51bShjKTsgfQotaW5saW5lIGJvb2wgaXNEaWdpdChVQ2hhciBjKSB7IHJldHVybiAhIWlzd2Rp
Z2l0KGMpOyB9Ci1pbmxpbmUgYm9vbCBpc0xldHRlcihVQ2hhciBjKSB7IHJldHVybiAhIWlzd2Fs
cGhhKGMpOyB9Ci1pbmxpbmUgYm9vbCBpc0xvd2VyKFVDaGFyIGMpIHsgcmV0dXJuICEhaXN3bG93
ZXIoYyk7IH0KLWlubGluZSBib29sIGlzUHJpbnRhYmxlQ2hhcihVQ2hhciBjKSB7IHJldHVybiAh
IWlzd3ByaW50KGMpOyB9Ci1pbmxpbmUgYm9vbCBpc1B1bmN0KFVDaGFyIGMpIHsgcmV0dXJuICEh
aXN3cHVuY3QoYyk7IH0KLWlubGluZSBib29sIGlzU3BhY2UoVUNoYXIgYykgeyByZXR1cm4gISFp
c3dzcGFjZShjKTsgfQotaW5saW5lIGJvb2wgaXNVcHBlcihVQ2hhciBjKSB7IHJldHVybiAhIWlz
d3VwcGVyKGMpOyB9Ci0KLWlubGluZSBib29sIGlzQXJhYmljQ2hhcihVQ2hhcjMyIGMpIHsgcmV0
dXJuIGMgPj0gMHgwNjAwICYmIGMgPD0gMHgwNmZmOyB9Ci1pbmxpbmUgYm9vbCBpc1NlcGFyYXRv
clNwYWNlKFVDaGFyMzIgYykgeyByZXR1cm4gY2F0ZWdvcnkoYykgPT0gU2VwYXJhdG9yX1NwYWNl
OyB9Ci0KLWlubGluZSBVQ2hhciBmb2xkQ2FzZShVQ2hhciBjKSB7IHJldHVybiB0b3dsb3dlcihj
KTsgfQotaW5saW5lIFVDaGFyIHRvTG93ZXIoVUNoYXIgYykgeyByZXR1cm4gdG93bG93ZXIoYyk7
IH0KLWlubGluZSBVQ2hhciB0b1VwcGVyKFVDaGFyIGMpIHsgcmV0dXJuIHRvd3VwcGVyKGMpOyB9
Ci1pbmxpbmUgVUNoYXIgdG9UaXRsZUNhc2UoVUNoYXIgYykgeyByZXR1cm4gdG93dXBwZXIoYyk7
IH0KLQotV1RGX0VYUE9SVF9QUklWQVRFIGludCBmb2xkQ2FzZShVQ2hhciogcmVzdWx0LCBpbnQg
cmVzdWx0TGVuZ3RoLCBjb25zdCBVQ2hhciogc291cmNlLCBpbnQgc291cmNlTGVuZ3RoLCBib29s
KiBpc0Vycm9yKTsKLVdURl9FWFBPUlRfUFJJVkFURSBpbnQgdG9Mb3dlcihVQ2hhciogcmVzdWx0
LCBpbnQgcmVzdWx0TGVuZ3RoLCBjb25zdCBVQ2hhciogc291cmNlLCBpbnQgc291cmNlTGVuZ3Ro
LCBib29sKiBpc0Vycm9yKTsKLVdURl9FWFBPUlRfUFJJVkFURSBpbnQgdG9VcHBlcihVQ2hhciog
cmVzdWx0LCBpbnQgcmVzdWx0TGVuZ3RoLCBjb25zdCBVQ2hhciogc291cmNlLCBpbnQgc291cmNl
TGVuZ3RoLCBib29sKiBpc0Vycm9yKTsKLQotaW5saW5lIGludCB1bWVtY2FzZWNtcChjb25zdCBV
Q2hhciogYSwgY29uc3QgVUNoYXIqIGIsIGludCBsZW4pCi17Ci0gICAgZm9yIChpbnQgaSA9IDA7
IGkgPCBsZW47ICsraSkgewotICAgICAgICBVQ2hhciBjMSA9IGZvbGRDYXNlKGFbaV0pOwotICAg
ICAgICBVQ2hhciBjMiA9IGZvbGRDYXNlKGJbaV0pOwotICAgICAgICBpZiAoYzEgIT0gYzIpCi0g
ICAgICAgICAgICByZXR1cm4gYzEgLSBjMjsKLSAgICB9Ci0KLSAgICByZXR1cm4gMDsKLX0KLQot
fSAvLyBuYW1lc3BhY2UgVW5pY29kZQotfSAvLyBuYW1lc3BhY2UgV1RGCitlbnVtIFVEZWNvbXBv
c2l0aW9uVHlwZSB7IFVfRFRfTk9ORSwgVV9EVF9DT01QQVQsIFVfRFRfRk9OVCB9CisKK2VudW0g
VUVycm9yQ29kZSB7IFVfWkVST19FUlJPUiA9IDAsIFVfRVJST1IgfTsKKworZW51bSBVTGluZUJy
ZWFrIHsgVV9MQl9VTktOT1dOLCBVX0xCX0NPTVBMRVhfQ09OVEVYVCwgVV9MQl9DT05ESVRJT05B
TF9KQVBBTkVTRV9TVEFSVEVSLCBVX0xCX0lERU9HUkFQSElDIH07CisKK2VudW0gVU5vcm1hbGl6
YXRpb25Nb2RlIHsgVU5PUk1fTkZDIH07CisKK2VudW0gVVByb3BlcnR5IHsgVUNIQVJfREVDT01Q
T1NJVElPTl9UWVBFLCBVQ0hBUl9MSU5FX0JSRUFLIH07CisKK2VudW0geyBVTk9STV9VTklDT0RF
XzNfMiB9OworCisvLyBGSVhNRTogV291bGQgYmUgZ29vZCB0byBkZWZpbmUgYWxsIG9mIHRoZXNl
IGluIHRlcm1zIG9mIFVDaGFyQ2F0ZWdvcnkgY29uc3RhbnRzLCBidXQgdW50aWwgdV9jaGFyVHlw
ZQorLy8gaXMgaW1wbGVtZW50ZWQsIHRoYXQncyBub3QgcmVhbGx5IHdvcnRoIHRoZSB0aW1lLgor
CisjZGVmaW5lIFVfR0NfQ0NfTUFTSyAwCisjZGVmaW5lIFVfR0NfQ0ZfTUFTSyAwCisjZGVmaW5l
IFVfR0NfQ05fTUFTSyAwCisjZGVmaW5lIFVfR0NfTExfTUFTSyAwCisjZGVmaW5lIFVfR0NfTE1f
TUFTSyAwCisjZGVmaW5lIFVfR0NfTE9fTUFTSyAwCisjZGVmaW5lIFVfR0NfTFRfTUFTSyAwCisj
ZGVmaW5lIFVfR0NfTFVfTUFTSyAwCisjZGVmaW5lIFVfR0NfTUNfTUFTSyAwCisjZGVmaW5lIFVf
R0NfTU5fTUFTSyAwCisjZGVmaW5lIFVfR0NfTkRfTUFTSyAwCisjZGVmaW5lIFVfR0NfTkxfTUFT
SyAwCisjZGVmaW5lIFVfR0NfUENfTUFTSyAwCisjZGVmaW5lIFVfR0NfUEVfTUFTSyAwCisjZGVm
aW5lIFVfR0NfUEZfTUFTSyAwCisjZGVmaW5lIFVfR0NfUElfTUFTSyAwCisjZGVmaW5lIFVfR0Nf
UE9fTUFTSyAwCisjZGVmaW5lIFVfR0NfUFNfTUFTSyAwCisjZGVmaW5lIFVfR0NfWkxfTUFTSyAw
CisjZGVmaW5lIFVfR0NfWlBfTUFTSyAwCisKKyNkZWZpbmUgVV9HQ19MX01BU0sgMAorI2RlZmlu
ZSBVX0dDX01fTUFTSyAwCisjZGVmaW5lIFVfR0NfWl9NQVNLIDAKKworI2RlZmluZSBVX1NVQ0NF
U1Moc3RhdHVzKSAoKHN0YXR1cykgPD0gMCkKKyNkZWZpbmUgVV9GQUlMVVJFKHN0YXR1cykgKChz
dGF0dXMpID4gMCkKKworI2RlZmluZSBVX0ZPTERfQ0FTRV9ERUZBVUxUIDAKKworI2RlZmluZSBV
X0dFVF9HQ19NQVNLKGMpIFVfTUFTSyh1X2NoYXJUeXBlKGMpKQorCitpbmxpbmUgVUJsb2NrQ29k
ZSB1YmxvY2tfZ2V0Q29kZShVQ2hhcjMyIGNoYXJhY3RlcikgeyByZXR1cm4gKGNoYXJhY3RlciAm
IH4weEZGKSA9PSAweDYwMCA/IFVCTE9DS19BUkFCSUMgOiBVQkxPQ0tfVU5LTk9XTjsgfQorV1RG
X0VYUE9SVF9QUklWQVRFIGludCB1bm9ybV9ub3JtYWxpemUoY29uc3QgVUNoYXIqIHNvdXJjZSwg
aW50MzJfdCBzb3VyY2VMZW5ndGgsIFVOb3JtYWxpemF0aW9uTW9kZSBtb2RlLCBpbnQzMl90IG9w
dGlvbnMsIFVDaGFyKiByZXN1bHQsIGludDMyX3QgcmVzdWx0TGVuZ3RoLCBVRXJyb3JDb2RlKiBz
dGF0dXMpOworV1RGX0VYUE9SVF9QUklWQVRFIFVDaGFyRGlyZWN0aW9uIHVfY2hhckRpcmVjdGlv
bihVQ2hhcjMyKTsKK1dURl9FWFBPUlRfUFJJVkFURSBVQ2hhcjMyIHVfY2hhck1pcnJvcihVQ2hh
cjMyKTsKK1dURl9FWFBPUlRfUFJJVkFURSBVQ2hhckNhdGVnb3J5IHVfY2hhclR5cGUoVUNoYXIz
Mik7CitpbmxpbmUgVUNoYXIzMiB1X2ZvbGRDYXNlKFVDaGFyMzIgY2hhcmFjdGVyLCB1bnNpZ25l
ZCBvcHRpb24pIHsgQVNTRVJUX1VOVVNFRChvcHRpb25zLCBvcHRpb25zID09IFVfRk9MRF9DQVNF
X0RFRkFVTFQpOyByZXR1cm4gdG93bG93ZXIoY2hhcmFjdGVyKTsgfQorV1RGX0VYUE9SVF9QUklW
QVRFIHVpbnQ4X3QgdV9nZXRDb21iaW5pbmdDbGFzcyhVQ2hhcjMyKTsKK1dURl9FWFBPUlRfUFJJ
VkFURSBpbnQgdV9nZXRJbnRQcm9wZXJ0eVZhbHVlKFVDaGFyMzIsIFVQcm9wZXJ0eSk7Citpbmxp
bmUgYm9vbCB1X2lzYWxudW0oVUNoYXIzMiBjaGFyYWN0ZXIpIHsgcmV0dXJuIGlzd2FsbnVtKGNo
YXJhY3Rlcik7IH0KK2lubGluZSBib29sIHVfaXNwdW5jdChVQ2hhcjMyIGNoYXJhY3RlcikgeyBy
ZXR1cm4gaXN3cHVuY3QoY2hhcmFjdGVyKTsgfQorV1RGX0VYUE9SVF9QUklWQVRFIGludCB1X21l
bWNhc2VjbXAoY29uc3QgVUNoYXIqLCBjb25zdCBVQ2hhciosIGludCBzb3VyY2VMZW5ndGgsIHVu
c2lnbmVkIG9wdGlvbnMpOworaW5saW5lIGJvb2wgdV9wcmludChVQ2hhcjMyIGNoYXJhY3Rlcikg
eyByZXR1cm4gaXN3cHJpbnQoY2hhcmFjdGVyKTsgfQorV1RGX0VYUE9SVF9QUklWQVRFIGludCB1
X3N0ckZvbGRDYXNlKFVDaGFyKiByZXN1bHQsIGludCByZXN1bHRMZW5ndGgsIGNvbnN0IFVDaGFy
KiBzb3VyY2UsIGludCBzb3VyY2VMZW5ndGgsIHVuc2lnbmVkIG9wdGlvbnMsIFVFcnJvckNvZGUq
KTsKK1dURl9FWFBPUlRfUFJJVkFURSBpbnQgdV9zdHJUb0xvd2VyKFVDaGFyKiByZXN1bHQsIGlu
dCByZXN1bHRMZW5ndGgsIGNvbnN0IFVDaGFyKiBzb3VyY2UsIGludCBzb3VyY2VMZW5ndGgsIGNv
bnN0IGNoYXIqIGxvY2FsZSwgVUVycm9yQ29kZSopOworV1RGX0VYUE9SVF9QUklWQVRFIGludCB1
X3N0clRvVXBwZXIoVUNoYXIqIHJlc3VsdCwgaW50IHJlc3VsdExlbmd0aCwgY29uc3QgVUNoYXIq
IHNvdXJjZSwgaW50IHNvdXJjZUxlbmd0aCwgY29uc3QgY2hhciogbG9jYWxlLCBVRXJyb3JDb2Rl
Kik7CitpbmxpbmUgVUNoYXIzMiB1X3RvbG93ZXIoVUNoYXIzMiBjaGFyYWN0ZXIpIHsgcmV0dXJu
IHRvd2xvd2VyKGNoYXJhY3Rlcik7IH0KK2lubGluZSBVQ2hhcjMyIHVfdG90aXRsZShVQ2hhcjMy
IGNoYXJhY3RlcikgeyByZXR1cm4gdG93dXBwZXIoY2hhcmFjdGVyKTsgfQoraW5saW5lIFVDaGFy
MzIgdV90b3VwcGVyKFVDaGFyMzIgY2hhcmFjdGVyKSB7IHJldHVybiB0b3d1cHBlcihjaGFyYWN0
ZXIpOyB9CiAKICNlbmRpZiAvLyBXVEZfVW5pY29kZVdjaGFyX2gKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQktleVBhdGguY3BwIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbmRleGVkZGIvSURCS2V5UGF0aC5jcHAKaW5kZXggNTg4NTc0Nzk3YzMyYmEz
YTRmMjE4NjU4Njk5NDBkMDM4ZDM0MWFjNS4uZTQ1YWVhNDM3NjliZTdjZjBkNWQwNThlYWE0ZDA3
NWIyM2JiYTZiZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIv
SURCS2V5UGF0aC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURC
S2V5UGF0aC5jcHAKQEAgLTg2LDI0ICs4NiwyMiBAQCBJREJLZXlQYXRoTGV4ZXI6OlRva2VuVHlw
ZSBJREJLZXlQYXRoTGV4ZXI6OmxleChTdHJpbmcmIGVsZW1lbnQpCiAKIG5hbWVzcGFjZSB7CiAK
LXVzaW5nIG5hbWVzcGFjZSBXVEY6OlVuaWNvZGU7Ci0KIC8vIFRoZSBmb2xsb3dpbmcgY29ycmVz
cG9uZCB0byBncmFtbWFyIGluIEVDTUEtMjYyLgotY29uc3QgdWludDMyX3QgdW5pY29kZUxldHRl
ciA9IExldHRlcl9VcHBlcmNhc2UgfCBMZXR0ZXJfTG93ZXJjYXNlIHwgTGV0dGVyX1RpdGxlY2Fz
ZSB8IExldHRlcl9Nb2RpZmllciB8IExldHRlcl9PdGhlciB8IE51bWJlcl9MZXR0ZXI7Ci1jb25z
dCB1aW50MzJfdCB1bmljb2RlQ29tYmluaW5nTWFyayA9IE1hcmtfTm9uU3BhY2luZyB8IE1hcmtf
U3BhY2luZ0NvbWJpbmluZzsKLWNvbnN0IHVpbnQzMl90IHVuaWNvZGVEaWdpdCA9IE51bWJlcl9E
ZWNpbWFsRGlnaXQ7Ci1jb25zdCB1aW50MzJfdCB1bmljb2RlQ29ubmVjdG9yUHVuY3R1YXRpb24g
PSBQdW5jdHVhdGlvbl9Db25uZWN0b3I7Citjb25zdCB1aW50MzJfdCB1bmljb2RlTGV0dGVyID0g
VV9HQ19MX01BU0sgfCBVX0dDX05MX01BU0s7Citjb25zdCB1aW50MzJfdCB1bmljb2RlQ29tYmlu
aW5nTWFyayA9IFVfR0NfTU5fTUFTSyB8IFVfR0NfTUNfTUFTSzsKK2NvbnN0IHVpbnQzMl90IHVu
aWNvZGVEaWdpdCA9IFVfR0NfTkRfTUFTSzsKK2NvbnN0IHVpbnQzMl90IHVuaWNvZGVDb25uZWN0
b3JQdW5jdHVhdGlvbiA9IFVfR0NfUENfTUFTSzsKIGNvbnN0IFVDaGFyIFpXTkogPSAweDIwMEM7
CiBjb25zdCBVQ2hhciBaV0ogPSAweDIwMEQ7CiAKIHN0YXRpYyBpbmxpbmUgYm9vbCBpc0lkZW50
aWZpZXJTdGFydENoYXJhY3RlcihVQ2hhciBjKQogewotICAgIHJldHVybiAoY2F0ZWdvcnkoYykg
JiB1bmljb2RlTGV0dGVyKSB8fCAoYyA9PSAnJCcpIHx8IChjID09ICdfJyk7CisgICAgcmV0dXJu
IChVX0dFVF9HQ19NQVNLKGMpICYgdW5pY29kZUxldHRlcikgfHwgKGMgPT0gJyQnKSB8fCAoYyA9
PSAnXycpOwogfQogCiBzdGF0aWMgaW5saW5lIGJvb2wgaXNJZGVudGlmaWVyQ2hhcmFjdGVyKFVD
aGFyIGMpCiB7Ci0gICAgcmV0dXJuIChjYXRlZ29yeShjKSAmICh1bmljb2RlTGV0dGVyIHwgdW5p
Y29kZUNvbWJpbmluZ01hcmsgfCB1bmljb2RlRGlnaXQgfCB1bmljb2RlQ29ubmVjdG9yUHVuY3R1
YXRpb24pKSB8fCAoYyA9PSAnJCcpIHx8IChjID09ICdfJykgfHwgKGMgPT0gWldOSikgfHwgKGMg
PT0gWldKKTsKKyAgICByZXR1cm4gKFVfR0VUX0dDX01BU0soYykgJiAodW5pY29kZUxldHRlciB8
IHVuaWNvZGVDb21iaW5pbmdNYXJrIHwgdW5pY29kZURpZ2l0IHwgdW5pY29kZUNvbm5lY3RvclB1
bmN0dWF0aW9uKSkgfHwgKGMgPT0gJyQnKSB8fCAoYyA9PSAnXycpIHx8IChjID09IFpXTkopIHx8
IChjID09IFpXSik7CiB9CiAKIH0gLy8gbmFtZXNwYWNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9jc3MvQ1NTUGFyc2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXIuY3Bw
CmluZGV4IDYxM2E0MzZjNzhiMTA0M2QwMzlkMGNiYThlM2ZlYzRlMTM5NmQ0YzcuLmQxYjk3MmEw
YjRjMzdlZWRjMGFhZmQzNjkwOWMyYzI4ZDI4Y2RhZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2Nzcy9DU1NQYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXIu
Y3BwCkBAIC0zNzUsOCArMzc1LDEwIEBAIEFMV0FZU19JTkxJTkUgc3RhdGljIHZvaWQgbWFrZUxv
d2VyKGNvbnN0IENoYXJhY3RlclR5cGUqIGlucHV0LCBDaGFyYWN0ZXJUeXBlKiBvCiAgICAgICAg
IGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykKICAgICAgICAgICAgIG91dHB1
dFtpXSA9IHRvQVNDSUlMb3dlcihpbnB1dFtpXSk7CiAgICAgfSBlbHNlIHsKLSAgICAgICAgZm9y
ICh1bnNpZ25lZCBpID0gMDsgaSA8IGxlbmd0aDsgaSsrKQotICAgICAgICAgICAgb3V0cHV0W2ld
ID0gVW5pY29kZTo6dG9Mb3dlcihpbnB1dFtpXSk7CisgICAgICAgIGZvciAodW5zaWduZWQgaSA9
IDA7IGkgPCBsZW5ndGg7IGkrKykgeworICAgICAgICAgICAgQVNTRVJUKHVfdG9sb3dlcihpbnB1
dFtpXSkgPD0gMHhGRkZGKTsKKyAgICAgICAgICAgIG91dHB1dFtpXSA9IHVfdG9sb3dlcihpbnB1
dFtpXSk7CisgICAgICAgIH0KICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9Eb2N1bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCmluZGV4
IGQ4YjczMDIzZGM0M2Y3YWY4ZDA1YjNiODIwM2ZmMjlkNDIyYWNkZmQuLmFlYmE2MzIzNGVlMWVl
YmU1MjEwZmI5ZjI0MGVlMWNiMjYwOTZhMmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9Eb2N1bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcApAQCAt
MjY3LDggKzI2Nyw3IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBpc1ZhbGlkTmFtZVN0YXJ0KFVDaGFy
MzIgYykKICAgICAgICAgcmV0dXJuIHRydWU7CiAKICAgICAvLyBydWxlcyAoYSkgYW5kIChmKSBh
Ym92ZQotICAgIGNvbnN0IHVpbnQzMl90IG5hbWVTdGFydE1hc2sgPSBMZXR0ZXJfTG93ZXJjYXNl
IHwgTGV0dGVyX1VwcGVyY2FzZSB8IExldHRlcl9PdGhlciB8IExldHRlcl9UaXRsZWNhc2UgfCBO
dW1iZXJfTGV0dGVyOwotICAgIGlmICghKFVuaWNvZGU6OmNhdGVnb3J5KGMpICYgbmFtZVN0YXJ0
TWFzaykpCisgICAgaWYgKCEoVV9HRVRfR0NfTUFTSyhjKSAmIChVX0dDX0xMX01BU0sgfCBVX0dD
X0xVX01BU0sgfCBVX0dDX0xPX01BU0sgfCBVX0dDX0xUX01BU0sgfCBVX0dDX05MX01BU0spKSkK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgLy8gcnVsZSAoYykgYWJvdmUKQEAgLTI3Niw4
ICsyNzUsOCBAQCBzdGF0aWMgaW5saW5lIGJvb2wgaXNWYWxpZE5hbWVTdGFydChVQ2hhcjMyIGMp
CiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIC8vIHJ1bGUgKGQpIGFib3ZlCi0gICAgRGVj
b21wb3NpdGlvblR5cGUgZGVjb21wVHlwZSA9IGRlY29tcG9zaXRpb25UeXBlKGMpOwotICAgIGlm
IChkZWNvbXBUeXBlID09IERlY29tcG9zaXRpb25Gb250IHx8IGRlY29tcFR5cGUgPT0gRGVjb21w
b3NpdGlvbkNvbXBhdCkKKyAgICBpbnQgdHlwZSA9IHVfZ2V0SW50UHJvcGVydHlWYWx1ZShjLCBV
Q0hBUl9ERUNPTVBPU0lUSU9OX1RZUEUpOworICAgIGlmICh0eXBlID09IFVfRFRfRk9OVCB8fCB0
eXBlID09IFVfRFRfQ09NUEFUKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICByZXR1cm4g
dHJ1ZTsKQEAgLTI5OCw4ICsyOTcsNyBAQCBzdGF0aWMgaW5saW5lIGJvb2wgaXNWYWxpZE5hbWVQ
YXJ0KFVDaGFyMzIgYykKICAgICAgICAgcmV0dXJuIHRydWU7CiAKICAgICAvLyBydWxlcyAoYikg
YW5kIChmKSBhYm92ZQotICAgIGNvbnN0IHVpbnQzMl90IG90aGVyTmFtZVBhcnRNYXNrID0gTWFy
a19Ob25TcGFjaW5nIHwgTWFya19FbmNsb3NpbmcgfCBNYXJrX1NwYWNpbmdDb21iaW5pbmcgfCBM
ZXR0ZXJfTW9kaWZpZXIgfCBOdW1iZXJfRGVjaW1hbERpZ2l0OwotICAgIGlmICghKFVuaWNvZGU6
OmNhdGVnb3J5KGMpICYgb3RoZXJOYW1lUGFydE1hc2spKQorICAgIGlmICghKFVfR0VUX0dDX01B
U0soYykgJiAoVV9HQ19NX01BU0sgfCBVX0dDX0xNX01BU0sgfCBVX0dDX05EX01BU0spKSkKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgLy8gcnVsZSAoYykgYWJvdmUKQEAgLTMwNyw4ICsz
MDUsOCBAQCBzdGF0aWMgaW5saW5lIGJvb2wgaXNWYWxpZE5hbWVQYXJ0KFVDaGFyMzIgYykKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgLy8gcnVsZSAoZCkgYWJvdmUKLSAgICBEZWNvbXBv
c2l0aW9uVHlwZSBkZWNvbXBUeXBlID0gZGVjb21wb3NpdGlvblR5cGUoYyk7Ci0gICAgaWYgKGRl
Y29tcFR5cGUgPT0gRGVjb21wb3NpdGlvbkZvbnQgfHwgZGVjb21wVHlwZSA9PSBEZWNvbXBvc2l0
aW9uQ29tcGF0KQorICAgIGludCB0eXBlID0gdV9nZXRJbnRQcm9wZXJ0eVZhbHVlKGMsIFVDSEFS
X0RFQ09NUE9TSVRJT05fVFlQRSk7CisgICAgaWYgKHR5cGUgPT0gVV9EVF9GT05UIHx8IHR5cGUg
PT0gVV9EVF9DT01QQVQpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIHJldHVybiB0cnVl
OwpAQCAtMTUwNiw3ICsxNTA0LDcgQEAgc3RhdGljIGlubGluZSBTdHJpbmdXaXRoRGlyZWN0aW9u
IGNhbm9uaWNhbGl6ZWRUaXRsZShEb2N1bWVudCogZG9jdW1lbnQsIGNvbnN0IFMKICAgICBib29s
IHByZXZpb3VzQ2hhcldhc1dTID0gZmFsc2U7CiAgICAgZm9yICg7IGkgPCBsZW5ndGg7ICsraSkg
ewogICAgICAgICBDaGFyYWN0ZXJUeXBlIGMgPSBjaGFyYWN0ZXJzW2ldOwotICAgICAgICBpZiAo
YyA8PSAweDIwIHx8IGMgPT0gMHg3RiB8fCAoV1RGOjpVbmljb2RlOjpjYXRlZ29yeShjKSAmIChX
VEY6OlVuaWNvZGU6OlNlcGFyYXRvcl9MaW5lIHwgV1RGOjpVbmljb2RlOjpTZXBhcmF0b3JfUGFy
YWdyYXBoKSkpIHsKKyAgICAgICAgaWYgKGMgPD0gMHgyMCB8fCBjID09IDB4N0YgfHwgKFVfR0VU
X0dDX01BU0soYykgJiAoVV9HQ19aTF9NQVNLIHwgVV9HQ19aUF9NQVNLKSkpIHsKICAgICAgICAg
ICAgIGlmIChwcmV2aW91c0NoYXJXYXNXUykKICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAg
ICAgICAgICAgIGJ1ZmZlcltidWlsZGVySW5kZXgrK10gPSAnICc7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0Vk
aXRvci5jcHAKaW5kZXggNmQ4NWQ4MjE5MTdkNWIyM2I4OWU5NjE4Y2IwYzM4NDg4N2ZkOTZkMi4u
MjIwMDgyY2E2ZjhkMmFmODg4M2RhYTZlNDdhYjQ0YzBhYTRjZjQ0NiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvRWRpdG9yLmNwcApAQCAtOTc1LDcgKzk3NSw3IEBAIGJvb2wgRWRpdG9yOjppbnNlcnRUZXh0
V2l0aG91dFNlbmRpbmdUZXh0RXZlbnQoY29uc3QgU3RyaW5nJiB0ZXh0LCBib29sIHNlbGVjdElu
CiAgICAgaWYgKHRleHQgPT0gIiAiIHx8IHRleHQgPT0gIlx0IikKICAgICAgICAgc2hvdWxkQ29u
c2lkZXJBcHBseWluZ0F1dG9jb3JyZWN0aW9uID0gdHJ1ZTsKIAotICAgIGlmICh0ZXh0Lmxlbmd0
aCgpID09IDEgJiYgaXNQdW5jdCh0ZXh0WzBdKSAmJiAhaXNBbWJpZ3VvdXNCb3VuZGFyeUNoYXJh
Y3Rlcih0ZXh0WzBdKSkKKyAgICBpZiAodGV4dC5sZW5ndGgoKSA9PSAxICYmIHVfaXNwdW5jdCh0
ZXh0WzBdKSAmJiAhaXNBbWJpZ3VvdXNCb3VuZGFyeUNoYXJhY3Rlcih0ZXh0WzBdKSkKICAgICAg
ICAgc2hvdWxkQ29uc2lkZXJBcHBseWluZ0F1dG9jb3JyZWN0aW9uID0gdHJ1ZTsKIAogICAgIGJv
b2wgYXV0b2NvcnJlY3Rpb25XYXNBcHBsaWVkID0gc2hvdWxkQ29uc2lkZXJBcHBseWluZ0F1dG9j
b3JyZWN0aW9uICYmIG1fYWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxlci0+YXBwbHlBdXRvY29ycmVj
dGlvbkJlZm9yZVR5cGluZ0lmQXBwcm9wcmlhdGUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvVGV4dEl0ZXJhdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4
dEl0ZXJhdG9yLmNwcAppbmRleCA0NjZkZTgzNWU5NDM4ZmYyOGQwN2Q5NGVlOWQyYjBhZGJhYTYx
M2ZjLi44NDZmNmM5NmRiMmFkODk1N2YxOThjOTIzMGQzOGNlNmU5Y2VjOTVlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1RleHRJdGVyYXRvci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvZWRpdGluZy9UZXh0SXRlcmF0b3IuY3BwCkBAIC0yMzE2LDkgKzIzMTYsOSBAQCBpbmxp
bmUgc2l6ZV90IFNlYXJjaEJ1ZmZlcjo6YXBwZW5kKGNvbnN0IFVDaGFyKiBjaGFyYWN0ZXJzLCBz
aXplX3QgbGVuZ3RoKQogICAgIH0KICAgICBjb25zdCBpbnQgbWF4Rm9sZGVkQ2hhcmFjdGVycyA9
IDE2OyAvLyBzZW5zaWJsZSBtYXhpbXVtIGlzIDMsIHRoaXMgc2hvdWxkIGJlIG1vcmUgdGhhbiBl
bm91Z2gKICAgICBVQ2hhciBmb2xkZWRDaGFyYWN0ZXJzW21heEZvbGRlZENoYXJhY3RlcnNdOwot
ICAgIGJvb2wgZXJyb3I7Ci0gICAgaW50IG51bUZvbGRlZENoYXJhY3RlcnMgPSBmb2xkQ2FzZShm
b2xkZWRDaGFyYWN0ZXJzLCBtYXhGb2xkZWRDaGFyYWN0ZXJzLCBjaGFyYWN0ZXJzLCAxLCAmZXJy
b3IpOwotICAgIEFTU0VSVCghZXJyb3IpOworICAgIFVFcnJvckNvZGUgc3RhdHVzID0gVV9aRVJP
X0VSUk9SOworICAgIGludCBudW1Gb2xkZWRDaGFyYWN0ZXJzID0gdV9zdHJGb2xkQ2FzZShmb2xk
ZWRDaGFyYWN0ZXJzLCBtYXhGb2xkZWRDaGFyYWN0ZXJzLCBjaGFyYWN0ZXJzLCAxLCBVX0ZPTERf
Q0FTRV9ERUZBVUxULCAmc3RhdHVzKTsKKyAgICBBU1NFUlQoVV9TVUNDRVNTKHN0YXR1cykpOwog
ICAgIEFTU0VSVChudW1Gb2xkZWRDaGFyYWN0ZXJzKTsKICAgICBBU1NFUlQobnVtRm9sZGVkQ2hh
cmFjdGVycyA8PSBtYXhGb2xkZWRDaGFyYWN0ZXJzKTsKICAgICBpZiAoIWVycm9yICYmIG51bUZv
bGRlZENoYXJhY3RlcnMpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEVs
ZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRWxlbWVudC5jcHAKaW5kZXggMTBi
Mzg2ZDFhZjk3OWQ0ZmRkNGE3MjdmZDgyN2Q2YTM0NjVlMWUzYy4uMDhjNWE0NDc1ZTI1NGJkMmY2
YmY2ZTQwN2QzMDZjMWE5NDRmMWZlZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRWxlbWVudC5jcHAK
QEAgLTg1NSwxMCArODU1LDEwIEBAIFRleHREaXJlY3Rpb24gSFRNTEVsZW1lbnQ6OmRpcmVjdGlv
bmFsaXR5KE5vZGUqKiBzdHJvbmdEaXJlY3Rpb25hbGl0eVRleHROb2RlKSBjCiAgICAgaWYgKGlz
SFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQodGhpcykpIHsKICAgICAgICAgSFRNTFRleHRGb3Jt
Q29udHJvbEVsZW1lbnQqIHRleHRFbGVtZW50ID0gdG9IVE1MVGV4dEZvcm1Db250cm9sRWxlbWVu
dChjb25zdF9jYXN0PEhUTUxFbGVtZW50Kj4odGhpcykpOwogICAgICAgICBib29sIGhhc1N0cm9u
Z0RpcmVjdGlvbmFsaXR5OwotICAgICAgICBVbmljb2RlOjpEaXJlY3Rpb24gdGV4dERpcmVjdGlv
biA9IHRleHRFbGVtZW50LT52YWx1ZSgpLmRlZmF1bHRXcml0aW5nRGlyZWN0aW9uKCZoYXNTdHJv
bmdEaXJlY3Rpb25hbGl0eSk7CisgICAgICAgIFVDaGFyRGlyZWN0aW9uIHRleHREaXJlY3Rpb24g
PSB0ZXh0RWxlbWVudC0+dmFsdWUoKS5kZWZhdWx0V3JpdGluZ0RpcmVjdGlvbigmaGFzU3Ryb25n
RGlyZWN0aW9uYWxpdHkpOwogICAgICAgICBpZiAoc3Ryb25nRGlyZWN0aW9uYWxpdHlUZXh0Tm9k
ZSkKICAgICAgICAgICAgICpzdHJvbmdEaXJlY3Rpb25hbGl0eVRleHROb2RlID0gaGFzU3Ryb25n
RGlyZWN0aW9uYWxpdHkgPyB0ZXh0RWxlbWVudCA6IDA7Ci0gICAgICAgIHJldHVybiAodGV4dERp
cmVjdGlvbiA9PSBVbmljb2RlOjpMZWZ0VG9SaWdodCkgPyBMVFIgOiBSVEw7CisgICAgICAgIHJl
dHVybiAodGV4dERpcmVjdGlvbiA9PSBVX0xFRlRfVE9fUklHSFQpID8gTFRSIDogUlRMOwogICAg
IH0KIAogICAgIE5vZGUqIG5vZGUgPSBmaXJzdENoaWxkKCk7CkBAIC04ODEsMTEgKzg4MSwxMSBA
QCBUZXh0RGlyZWN0aW9uIEhUTUxFbGVtZW50OjpkaXJlY3Rpb25hbGl0eShOb2RlKiogc3Ryb25n
RGlyZWN0aW9uYWxpdHlUZXh0Tm9kZSkgYwogCiAgICAgICAgIGlmIChub2RlLT5pc1RleHROb2Rl
KCkpIHsKICAgICAgICAgICAgIGJvb2wgaGFzU3Ryb25nRGlyZWN0aW9uYWxpdHk7Ci0gICAgICAg
ICAgICBXVEY6OlVuaWNvZGU6OkRpcmVjdGlvbiB0ZXh0RGlyZWN0aW9uID0gbm9kZS0+dGV4dENv
bnRlbnQodHJ1ZSkuZGVmYXVsdFdyaXRpbmdEaXJlY3Rpb24oJmhhc1N0cm9uZ0RpcmVjdGlvbmFs
aXR5KTsKKyAgICAgICAgICAgIFVDaGFyRGlyZWN0aW9uIHRleHREaXJlY3Rpb24gPSBub2RlLT50
ZXh0Q29udGVudCh0cnVlKS5kZWZhdWx0V3JpdGluZ0RpcmVjdGlvbigmaGFzU3Ryb25nRGlyZWN0
aW9uYWxpdHkpOwogICAgICAgICAgICAgaWYgKGhhc1N0cm9uZ0RpcmVjdGlvbmFsaXR5KSB7CiAg
ICAgICAgICAgICAgICAgaWYgKHN0cm9uZ0RpcmVjdGlvbmFsaXR5VGV4dE5vZGUpCiAgICAgICAg
ICAgICAgICAgICAgICpzdHJvbmdEaXJlY3Rpb25hbGl0eVRleHROb2RlID0gbm9kZTsKLSAgICAg
ICAgICAgICAgICByZXR1cm4gKHRleHREaXJlY3Rpb24gPT0gV1RGOjpVbmljb2RlOjpMZWZ0VG9S
aWdodCkgPyBMVFIgOiBSVEw7CisgICAgICAgICAgICAgICAgcmV0dXJuICh0ZXh0RGlyZWN0aW9u
ID09IFVfTEVGVF9UT19SSUdIVCkgPyBMVFIgOiBSVEw7CiAgICAgICAgICAgICB9CiAgICAgICAg
IH0KICAgICAgICAgbm9kZSA9IE5vZGVUcmF2ZXJzYWw6Om5leHQobm9kZSwgdGhpcyk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxTZWxlY3RFbGVtZW50LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTFNlbGVjdEVsZW1lbnQuY3BwCmluZGV4IGQxZDdjMjYwNzdhY2E3
ZThhNTc4OTZhYjFkMWEzOGM1YTM2NGYzMGUuLjA1MjU3NDkyMTUxY2VjN2M0OTJjZGQ1ZTc5YzIw
NTEyOGM4ZTcwODcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFNlbGVjdEVs
ZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFNlbGVjdEVsZW1lbnQuY3Bw
CkBAIC0xNDg3LDcgKzE0ODcsNyBAQCB2b2lkIEhUTUxTZWxlY3RFbGVtZW50OjpkZWZhdWx0RXZl
bnRIYW5kbGVyKEV2ZW50KiBldmVudCkKIAogICAgIGlmIChldmVudC0+dHlwZSgpID09IGV2ZW50
TmFtZXMoKS5rZXlwcmVzc0V2ZW50ICYmIGV2ZW50LT5pc0tleWJvYXJkRXZlbnQoKSkgewogICAg
ICAgICBLZXlib2FyZEV2ZW50KiBrZXlib2FyZEV2ZW50ID0gc3RhdGljX2Nhc3Q8S2V5Ym9hcmRF
dmVudCo+KGV2ZW50KTsKLSAgICAgICAgaWYgKCFrZXlib2FyZEV2ZW50LT5jdHJsS2V5KCkgJiYg
IWtleWJvYXJkRXZlbnQtPmFsdEtleSgpICYmICFrZXlib2FyZEV2ZW50LT5tZXRhS2V5KCkgJiYg
aXNQcmludGFibGVDaGFyKGtleWJvYXJkRXZlbnQtPmNoYXJDb2RlKCkpKSB7CisgICAgICAgIGlm
ICgha2V5Ym9hcmRFdmVudC0+Y3RybEtleSgpICYmICFrZXlib2FyZEV2ZW50LT5hbHRLZXkoKSAm
JiAha2V5Ym9hcmRFdmVudC0+bWV0YUtleSgpICYmIHVfaXNwcmludChrZXlib2FyZEV2ZW50LT5j
aGFyQ29kZSgpKSkgewogICAgICAgICAgICAgdHlwZUFoZWFkRmluZChrZXlib2FyZEV2ZW50KTsK
ICAgICAgICAgICAgIGV2ZW50LT5zZXREZWZhdWx0SGFuZGxlZCgpOwogICAgICAgICAgICAgcmV0
dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9UeXBlQWhlYWQuY3BwIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9UeXBlQWhlYWQuY3BwCmluZGV4IDYxY2MxZWI2ODk3NTdhNWNmNGI0
ODFjZDdmZDFiY2JjODUxYTNjOGEuLmQyNmY1N2Q4NDlhNmJhZTA1OTY4NmI1ZDI5NDk0ODAwYmU1
YTczODggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvVHlwZUFoZWFkLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL1R5cGVBaGVhZC5jcHAKQEAgLTUwLDcgKzUwLDcgQEAgc3Rh
dGljIFN0cmluZyBzdHJpcExlYWRpbmdXaGl0ZVNwYWNlKGNvbnN0IFN0cmluZyYgc3RyaW5nKQog
CiAgICAgdW5zaWduZWQgaTsKICAgICBmb3IgKGkgPSAwOyBpIDwgbGVuZ3RoOyArK2kpIHsKLSAg
ICAgICAgaWYgKHN0cmluZ1tpXSAhPSBub0JyZWFrU3BhY2UgJiYgKHN0cmluZ1tpXSA8PSAweDdG
ID8gIWlzQVNDSUlTcGFjZShzdHJpbmdbaV0pIDogKGRpcmVjdGlvbihzdHJpbmdbaV0pICE9IFdo
aXRlU3BhY2VOZXV0cmFsKSkpCisgICAgICAgIGlmIChzdHJpbmdbaV0gIT0gbm9CcmVha1NwYWNl
ICYmIChzdHJpbmdbaV0gPD0gMHg3RiA/ICFpc0FTQ0lJU3BhY2Uoc3RyaW5nW2ldKSA6ICh1X2No
YXJEaXJlY3Rpb24oc3RyaW5nW2ldKSAhPSBVX1dISVRFX1NQQUNFX05FVVRSQUwpKSkKICAgICAg
ICAgICAgIGJyZWFrOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC90
cmFjay9UZXh0VHJhY2tDdWUuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UZXh0VHJh
Y2tDdWUuY3BwCmluZGV4IGM1MzkyNjg2YmE4N2VmMWQ5ODVmNGE3MzBmNWUxYzEyZjQ4YTFjMDYu
LjE0YzQ3NjgwYjUxOThjYTkxYTU0Y2MxYjFjNzg0OGUzMzNmNDE0OTkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRyYWNrQ3VlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL3RyYWNrL1RleHRUcmFja0N1ZS5jcHAKQEAgLTYxNSw3ICs2MTUsNyBAQCBzdGF0
aWMgYm9vbCBpc0N1ZVBhcmFncmFwaFNlcGFyYXRvcihVQ2hhciBjaGFyYWN0ZXIpCiB7CiAgICAg
Ly8gV2l0aGluIGEgY3VlLCBwYXJhZ3JhcGggYm91bmRhcmllcyBhcmUgb25seSBkZW5vdGVkIGJ5
IFR5cGUgQiBjaGFyYWN0ZXJzLAogICAgIC8vIHN1Y2ggYXMgVSswMDBBIExJTkUgRkVFRCAoTEYp
LCBVKzAwODUgTkVYVCBMSU5FIChORUwpLCBhbmQgVSsyMDI5IFBBUkFHUkFQSCBTRVBBUkFUT1Iu
Ci0gICAgcmV0dXJuIFdURjo6VW5pY29kZTo6Y2F0ZWdvcnkoY2hhcmFjdGVyKSAmIFdURjo6VW5p
Y29kZTo6U2VwYXJhdG9yX1BhcmFncmFwaDsKKyAgICByZXR1cm4gdV9jaGFyVHlwZShjaGFyYWN0
ZXIpID09IFVfUEFSQUdSQVBIX1NFUEFSQVRPUjsKIH0KIAogdm9pZCBUZXh0VHJhY2tDdWU6OmRl
dGVybWluZVRleHREaXJlY3Rpb24oKQpAQCAtNjQ4LDEzICs2NDgsMTIgQEAgdm9pZCBUZXh0VHJh
Y2tDdWU6OmRldGVybWluZVRleHREaXJlY3Rpb24oKQogICAgICAgICAgICAgcmV0dXJuOwogCiAg
ICAgICAgIGlmIChVQ2hhciBjdXJyZW50ID0gcGFyYWdyYXBoW2ldKSB7Ci0gICAgICAgICAgICBX
VEY6OlVuaWNvZGU6OkRpcmVjdGlvbiBjaGFyRGlyZWN0aW9uID0gV1RGOjpVbmljb2RlOjpkaXJl
Y3Rpb24oY3VycmVudCk7Ci0gICAgICAgICAgICBpZiAoY2hhckRpcmVjdGlvbiA9PSBXVEY6OlVu
aWNvZGU6OkxlZnRUb1JpZ2h0KSB7CisgICAgICAgICAgICBVQ2hhckRpcmVjdGlvbiBjaGFyRGly
ZWN0aW9uID0gdV9jaGFyRGlyZWN0aW9uKGN1cnJlbnQpOworICAgICAgICAgICAgaWYgKGNoYXJE
aXJlY3Rpb24gPT0gVV9MRUZUX1RPX1JJR0hUKSB7CiAgICAgICAgICAgICAgICAgbV9kaXNwbGF5
RGlyZWN0aW9uID0gQ1NTVmFsdWVMdHI7CiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAg
ICAgICAgfQotICAgICAgICAgICAgaWYgKGNoYXJEaXJlY3Rpb24gPT0gV1RGOjpVbmljb2RlOjpS
aWdodFRvTGVmdAotICAgICAgICAgICAgICAgIHx8IGNoYXJEaXJlY3Rpb24gPT0gV1RGOjpVbmlj
b2RlOjpSaWdodFRvTGVmdEFyYWJpYykgeworICAgICAgICAgICAgaWYgKGNoYXJEaXJlY3Rpb24g
PT0gVV9SSUdIVF9UT19MRUZUIHx8IGNoYXJEaXJlY3Rpb24gPT0gVV9SSUdIVF9UT19MRUZUX0FS
QUJJQykgewogICAgICAgICAgICAgICAgIG1fZGlzcGxheURpcmVjdGlvbiA9IENTU1ZhbHVlUnRs
OwogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvQ29udGV4dE1lbnVDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvQ29udGV4dE1lbnVDb250cm9sbGVyLmNwcAppbmRleCBmN2Q3ZTY4MWIzMTAyYjQ4
ZWU1NmQyZmU4OWYzOTZhOWI3YTE2MjMwLi5jZTU0YTkzZDQzYjU2ZWJhOGZkMjhiN2JjYmNjNjY4
NTIxY2ZhYWNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0NvbnRleHRNZW51Q29u
dHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9Db250ZXh0TWVudUNvbnRyb2xs
ZXIuY3BwCkBAIC03MTgsOSArNzE4LDEwIEBAIHN0YXRpYyBib29sIHNlbGVjdGlvbkNvbnRhaW5z
UG9zc2libGVXb3JkKEZyYW1lKiBmcmFtZSkKICAgICAvLyBDdXJyZW50IGFsZ29yaXRobTogbG9v
ayBmb3IgYSBjaGFyYWN0ZXIgdGhhdCdzIG5vdCBqdXN0IGEgc2VwYXJhdG9yLgogICAgIGZvciAo
VGV4dEl0ZXJhdG9yIGl0KGZyYW1lLT5zZWxlY3Rpb24oKS50b05vcm1hbGl6ZWRSYW5nZSgpLmdl
dCgpKTsgIWl0LmF0RW5kKCk7IGl0LmFkdmFuY2UoKSkgewogICAgICAgICBpbnQgbGVuZ3RoID0g
aXQubGVuZ3RoKCk7Ci0gICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbGVuZ3RoOyArK2kpCi0g
ICAgICAgICAgICBpZiAoIShjYXRlZ29yeShpdC5jaGFyYWN0ZXJBdChpKSkgJiAoU2VwYXJhdG9y
X1NwYWNlIHwgU2VwYXJhdG9yX0xpbmUgfCBTZXBhcmF0b3JfUGFyYWdyYXBoKSkpCisgICAgICAg
IGZvciAoaW50IGkgPSAwOyBpIDwgbGVuZ3RoOyArK2kpIHsKKyAgICAgICAgICAgIGlmICghKFVf
R0VUX0dDX01BU0soaXQuY2hhcmFjdGVyQXQoaSkpICYgVV9HQ19aX01BU0spKQogICAgICAgICAg
ICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9CiAgICAgfQogICAgIHJldHVybiBmYWxzZTsK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udC5jcHAKaW5kZXggZjgyNmQ1
NWQzMjhlZmU2NjMwZDkxZGUwZGMyNTA0ZTFiZGFhNmQ0Ny4uYThhNDExMTYyMGE0ZDkwNzNlMjA0
MDVjZmViM2VjOWIzMzQwMzgyMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvRm9udC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Rm9udC5jcHAKQEAgLTkxNCw4ICs5MTQsNyBAQCB1bnNpZ25lZCBGb250OjpleHBhbnNpb25PcHBv
cnR1bml0eUNvdW50KGNvbnN0IFVDaGFyKiBjaGFyYWN0ZXJzLCBzaXplX3QgbGVuZ3RoLAogCiBi
b29sIEZvbnQ6OmNhblJlY2VpdmVUZXh0RW1waGFzaXMoVUNoYXIzMiBjKQogewotICAgIENoYXJD
YXRlZ29yeSBjYXRlZ29yeSA9IFVuaWNvZGU6OmNhdGVnb3J5KGMpOwotICAgIGlmIChjYXRlZ29y
eSAmIChTZXBhcmF0b3JfU3BhY2UgfCBTZXBhcmF0b3JfTGluZSB8IFNlcGFyYXRvcl9QYXJhZ3Jh
cGggfCBPdGhlcl9Ob3RBc3NpZ25lZCB8IE90aGVyX0NvbnRyb2wgfCBPdGhlcl9Gb3JtYXQpKQor
ICAgIGlmIChVX0dFVF9HQ19NQVNLKGMpICYgKFVfR0NfWl9NQVNLIHwgVV9HQ19DTl9NQVNLIHwg
VV9HQ19DQ19NQVNLIHwgVV9HQ19DRl9NQVNLKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAg
ICAgLy8gQWRkaXRpb25hbCB3b3JkLXNlcGFyYXRvciBjaGFyYWN0ZXJzIGxpc3RlZCBpbiBDU1Mg
VGV4dCBMZXZlbCAzIEVkaXRvcidzIERyYWZ0IDMgTm92ZW1iZXIgMjAxMC4KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRHbHlwaHMuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udEdseXBocy5jcHAKaW5kZXggODYxMmRhMTk3
NjU3M2VkMzYyMGI2YTAzZDRmZDgyY2M0MDkyOWMwZi4uM2RiMmY2MDAzZjY0NmJlYzA0YjU5NDQ0
ZmVkMmY4MjQ3OThkOWExNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvRm9udEdseXBocy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvRm9udEdseXBocy5jcHAKQEAgLTI2NSw3ICsyNjUsNyBAQCBzdGQ6OnBhaXI8R2x5cGhEYXRh
LCBHbHlwaFBhZ2UqPiBGb250R2x5cGhzOjpnbHlwaERhdGFBbmRQYWdlRm9yQ2hhcmFjdGVyKGNv
bnN0CiAKICAgICBpZiAodmFyaWFudCA9PSBBdXRvVmFyaWFudCkgewogICAgICAgICBpZiAoZGVz
Y3JpcHRpb24uc21hbGxDYXBzKCkgJiYgIXByaW1hcnlTaW1wbGVGb250RGF0YShkZXNjcmlwdGlv
biktPmlzU1ZHRm9udCgpKSB7Ci0gICAgICAgICAgICBVQ2hhcjMyIHVwcGVyQyA9IFdURjo6VW5p
Y29kZTo6dG9VcHBlcihjKTsKKyAgICAgICAgICAgIFVDaGFyMzIgdXBwZXJDID0gdV90b3VwcGVy
KGMpOwogICAgICAgICAgICAgaWYgKHVwcGVyQyAhPSBjKSB7CiAgICAgICAgICAgICAgICAgYyA9
IHVwcGVyQzsKICAgICAgICAgICAgICAgICB2YXJpYW50ID0gU21hbGxDYXBzVmFyaWFudDsKQEAg
LTI3Niw3ICsyNzYsNyBAQCBzdGQ6OnBhaXI8R2x5cGhEYXRhLCBHbHlwaFBhZ2UqPiBGb250R2x5
cGhzOjpnbHlwaERhdGFBbmRQYWdlRm9yQ2hhcmFjdGVyKGNvbnN0CiAgICAgfQogCiAgICAgaWYg
KG1pcnJvcikKLSAgICAgICAgYyA9IFdURjo6VW5pY29kZTo6bWlycm9yZWRDaGFyKGMpOworICAg
ICAgICBjID0gdV9jaGFyTWlycm9yKGMpOwogCiAgICAgdW5zaWduZWQgcGFnZU51bWJlciA9IChj
IC8gR2x5cGhQYWdlOjpzaXplKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5jcHAKaW5kZXggYWZiNWQ5YjVkODAyNjIzYjQ0MjRh
MzhhNzY5Y2FiMWMyNWI1ZWFmZi4uZjVjOWQ3ZWU4NTM1YmQzOWM5MTIyODNjNmE5NWE4ZGFiMmZj
ODI5ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhp
Y3NDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFw
aGljc0NvbnRleHQuY3BwCkBAIC02NCw3ICs2NCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGluY3Jl
bWVudCgpIHsgbV9vZmZzZXQrKzsgfQogICAgIGJvb2wgYXRFbmQoKSBjb25zdCB7IHJldHVybiAh
bV90ZXh0UnVuIHx8IG1fb2Zmc2V0ID49IG1fdGV4dFJ1bi0+bGVuZ3RoKCk7IH0KICAgICBVQ2hh
ciBjdXJyZW50KCkgY29uc3QgeyByZXR1cm4gKCptX3RleHRSdW4pW21fb2Zmc2V0XTsgfQotICAg
IFdURjo6VW5pY29kZTo6RGlyZWN0aW9uIGRpcmVjdGlvbigpIGNvbnN0IHsgcmV0dXJuIGF0RW5k
KCkgPyBXVEY6OlVuaWNvZGU6Ok90aGVyTmV1dHJhbCA6IFdURjo6VW5pY29kZTo6ZGlyZWN0aW9u
KGN1cnJlbnQoKSk7IH0KKyAgICBVQ2hhckRpcmVjdGlvbiBkaXJlY3Rpb24oKSBjb25zdCB7IHJl
dHVybiBhdEVuZCgpID8gVV9PVEhFUl9ORVVUUkFMIDogdV9jaGFyRGlyZWN0aW9uKGN1cnJlbnQo
KSk7IH0KIAogICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBUZXh0UnVuSXRlcmF0b3ImIG90aGVy
KQogICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1NW
R0dseXBoLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1NWR0dseXBoLmNw
cAppbmRleCBlMjgyMGU0OTZlZmUxNmY1YWMwMDNlYmI2NzZlNTBkYmE3NzZhODhjLi5hZDNiZTFl
ZmNmYmJkZWJjNDRkMWY4MDQ4MzMzMWIyMDdiYjNmODYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9TVkdHbHlwaC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvU1ZHR2x5cGguY3BwCkBAIC0yNSw4ICsyNSw2IEBACiAKICNpbmNs
dWRlIDx3dGYvdW5pY29kZS9Vbmljb2RlLmg+CiAKLXVzaW5nIG5hbWVzcGFjZSBXVEY6OlVuaWNv
ZGU7Ci0KIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogLy8gSGVscGVyIGZ1bmN0aW9ucyB0byBkZXRl
cm1pbmUgdGhlIGFyYWJpYyBjaGFyYWN0ZXIgZm9ybXMgKGluaXRpYWwsIG1lZGlhbCwgdGVybWlu
YWwsIGlzb2xhdGVkKQpAQCAtODcsNyArODUsNyBAQCBWZWN0b3I8U1ZHR2x5cGg6OkFyYWJpY0Zv
cm0+IGNoYXJhY3RlcnNXaXRoQXJhYmljRm9ybShjb25zdCBTdHJpbmcmIGlucHV0LCBib29sCiAK
ICAgICBib29sIGNvbnRhaW5zQXJhYmljID0gZmFsc2U7CiAgICAgZm9yICh1bnNpZ25lZCBpID0g
MDsgaSA8IGxlbmd0aDsgKytpKSB7Ci0gICAgICAgIGlmIChpc0FyYWJpY0NoYXIoaW5wdXRbaV0p
KSB7CisgICAgICAgIGlmICh1YmxvY2tfZ2V0Q29kZShpbnB1dFtpXSkgPT0gVUJMT0NLX0FSQUJJ
QykgewogICAgICAgICAgICAgY29udGFpbnNBcmFiaWMgPSB0cnVlOwogICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL1N1cnJvZ2F0ZVBhaXJBd2FyZVRleHRJdGVyYXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9TdXJyb2dhdGVQYWlyQXdhcmVUZXh0SXRlcmF0b3IuY3BwCmluZGV4
IGU3ZWI0M2I1NjEyMTc1NTc1ZDUzMzZjYmJiNmRkYjJkMjAwMWY0ZGQuLmVkNmEzMzM3NmE1YTg1
MjNiYjcxODhiYjRmOTg4MDRlOGFlNDBhYWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL1N1cnJvZ2F0ZVBhaXJBd2FyZVRleHRJdGVyYXRvci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvU3Vycm9nYXRlUGFpckF3YXJlVGV4dEl0
ZXJhdG9yLmNwcApAQCAtODIsMTUgKzgyLDEzIEBAIFVDaGFyMzIgU3Vycm9nYXRlUGFpckF3YXJl
VGV4dEl0ZXJhdG9yOjpub3JtYWxpemVWb2ljaW5nTWFya3MoKQogICAgIGlmIChtX2N1cnJlbnRD
aGFyYWN0ZXIgKyAxID49IG1fZW5kQ2hhcmFjdGVyKQogICAgICAgICByZXR1cm4gMDsKIAotICAg
IGlmIChjb21iaW5pbmdDbGFzcyhtX2NoYXJhY3RlcnNbMV0pID09IGhpcmFnYW5hS2F0YWthbmFW
b2ljaW5nTWFya3NDb21iaW5pbmdDbGFzcykgewotI2lmIFVTRShJQ1VfVU5JQ09ERSkKKyAgICBp
ZiAodV9nZXRDb21iaW5pbmdDbGFzcyhtX2NoYXJhY3RlcnNbMV0pID09IGhpcmFnYW5hS2F0YWth
bmFWb2ljaW5nTWFya3NDb21iaW5pbmdDbGFzcykgewogICAgICAgICAvLyBOb3JtYWxpemUgaW50
byBjb21wb3NlZCBmb3JtIHVzaW5nIDMuMiBydWxlcy4KICAgICAgICAgVUNoYXIgbm9ybWFsaXpl
ZENoYXJhY3RlcnNbMl0gPSB7IDAsIDAgfTsKICAgICAgICAgVUVycm9yQ29kZSB1U3RhdHVzID0g
VV9aRVJPX0VSUk9SOyAgCiAgICAgICAgIGludDMyX3QgcmVzdWx0TGVuZ3RoID0gdW5vcm1fbm9y
bWFsaXplKG1fY2hhcmFjdGVycywgMiwgVU5PUk1fTkZDLCBVTk9STV9VTklDT0RFXzNfMiwgJm5v
cm1hbGl6ZWRDaGFyYWN0ZXJzWzBdLCAyLCAmdVN0YXR1cyk7CiAgICAgICAgIGlmIChyZXN1bHRM
ZW5ndGggPT0gMSAmJiAhdVN0YXR1cykKICAgICAgICAgICAgIHJldHVybiBub3JtYWxpemVkQ2hh
cmFjdGVyc1swXTsKLSNlbmRpZgogICAgIH0KIAogICAgIHJldHVybiAwOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvV2lkdGhJdGVyYXRvci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9XaWR0aEl0ZXJhdG9yLmNwcAppbmRleCBlOGI2
MjBmOGFkYzhlZDMzZmExNDY1MjY3Nzg1OThhZDgyMTllZTg2Li5iOGYyNTljNGE1ZTQzOWFmMTM5
YzFmN2VhZjgyNTYzMTA3NTg2NmQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9XaWR0aEl0ZXJhdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9XaWR0aEl0ZXJhdG9yLmNwcApAQCAtMjEwLDEwICsyMTAsMTAgQEAgaW5saW5l
IHVuc2lnbmVkIFdpZHRoSXRlcmF0b3I6OmFkdmFuY2VJbnRlcm5hbChUZXh0SXRlcmF0b3ImIHRl
eHRJdGVyYXRvciwgR2x5cGgKICAgICAgICAgICAgIGlmIChtX2ZhbGxiYWNrRm9udHMgJiYgZm9u
dERhdGEgIT0gcHJpbWFyeUZvbnQpIHsKICAgICAgICAgICAgICAgICAvLyBGSVhNRTogVGhpcyBk
b2VzIGEgbGl0dGxlIGV4dHJhIHdvcmsgdGhhdCBjb3VsZCBiZSBhdm9pZGVkIGlmCiAgICAgICAg
ICAgICAgICAgLy8gZ2x5cGhEYXRhRm9yQ2hhcmFjdGVyKCkgcmV0dXJuZWQgd2hldGhlciBpdCBj
aG9zZSB0byB1c2UgYSBzbWFsbCBjYXBzIGZvbnQuCi0gICAgICAgICAgICAgICAgaWYgKCFtX2Zv
bnQtPmlzU21hbGxDYXBzKCkgfHwgY2hhcmFjdGVyID09IHRvVXBwZXIoY2hhcmFjdGVyKSkKKyAg
ICAgICAgICAgICAgICBpZiAoIW1fZm9udC0+aXNTbWFsbENhcHMoKSB8fCBjaGFyYWN0ZXIgPT0g
dV90b3VwcGVyKGNoYXJhY3RlcikpCiAgICAgICAgICAgICAgICAgICAgIG1fZmFsbGJhY2tGb250
cy0+YWRkKGZvbnREYXRhKTsKICAgICAgICAgICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgICAg
ICAgICAgY29uc3QgR2x5cGhEYXRhJiB1cHBlcmNhc2VHbHlwaERhdGEgPSBtX2ZvbnQtPmdseXBo
RGF0YUZvckNoYXJhY3Rlcih0b1VwcGVyKGNoYXJhY3RlciksIHJ0bCk7CisgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IEdseXBoRGF0YSYgdXBwZXJjYXNlR2x5cGhEYXRhID0gbV9mb250LT5nbHlw
aERhdGFGb3JDaGFyYWN0ZXIodV90b3VwcGVyKGNoYXJhY3RlciksIHJ0bCk7CiAgICAgICAgICAg
ICAgICAgICAgIGlmICh1cHBlcmNhc2VHbHlwaERhdGEuZm9udERhdGEgIT0gcHJpbWFyeUZvbnQp
CiAgICAgICAgICAgICAgICAgICAgICAgICBtX2ZhbGxiYWNrRm9udHMtPmFkZCh1cHBlcmNhc2VH
bHlwaERhdGEuZm9udERhdGEpOwogICAgICAgICAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9Db21wbGV4VGV4dENvbnRyb2xsZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0NvbXBsZXhUZXh0Q29udHJv
bGxlci5jcHAKaW5kZXggMjhhMzU1MzA1OWUyZGUwNjc1MTAyZjY5NTY5OGUwMmQ4MDYwM2QwZi4u
MDdkY2JkYTNkNTA0MmRmMzllNDA3NTIyNjcyZjA4MjdmZjhlYTU1MyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0NvbXBsZXhUZXh0Q29udHJvbGxlci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0NvbXBsZXhUZXh0
Q29udHJvbGxlci5jcHAKQEAgLTMyNyw2ICszMjcsNyBAQCB2b2lkIENvbXBsZXhUZXh0Q29udHJv
bGxlcjo6Y29sbGVjdENvbXBsZXhUZXh0UnVucygpCiAKICAgICBib29sIGlzU21hbGxDYXBzOwog
ICAgIGJvb2wgbmV4dElzU21hbGxDYXBzID0gbV9mb250LmlzU21hbGxDYXBzKCkgJiYgIShVX0dF
VF9HQ19NQVNLKGJhc2VDaGFyYWN0ZXIpICYgVV9HQ19NX01BU0spICYmICh1cHBlcmNhc2VDaGFy
YWN0ZXIgPSB1X3RvdXBwZXIoYmFzZUNoYXJhY3RlcikpICE9IGJhc2VDaGFyYWN0ZXI7CisgICAg
QVNTRVJUKHVwcGVyY2FzZUNoYXJhY3RlciA9PSAwIHx8IHVfdG91cHBlcihiYXNlQ2hhcmFjdGVy
KSA8PSAweEZGRkYpOwogCiAgICAgaWYgKG5leHRJc1NtYWxsQ2FwcykgewogICAgICAgICBtX3Nt
YWxsQ2Fwc0J1ZmZlcltzZXF1ZW5jZVN0YXJ0IC0gY3BdID0gdXBwZXJjYXNlQ2hhcmFjdGVyOwpA
QCAtMzQ5LDcgKzM1MCw5IEBAIHZvaWQgQ29tcGxleFRleHRDb250cm9sbGVyOjpjb2xsZWN0Q29t
cGxleFRleHRSdW5zKCkKICAgICAgICAgICAgIHJldHVybjsKIAogICAgICAgICBpZiAobV9mb250
LmlzU21hbGxDYXBzKCkpIHsKLSAgICAgICAgICAgIG5leHRJc1NtYWxsQ2FwcyA9ICh1cHBlcmNh
c2VDaGFyYWN0ZXIgPSB1X3RvdXBwZXIoYmFzZUNoYXJhY3RlcikpICE9IGJhc2VDaGFyYWN0ZXI7
CisgICAgICAgICAgICBBU1NFUlQodV90b3VwcGVyKGJhc2VDaGFyYWN0ZXIpIDw9IDB4RkZGRik7
CisgICAgICAgICAgICB1cHBlcmNhc2VDaGFyYWN0ZXIgPSB1X3RvdXBwZXIoYmFzZUNoYXJhY3Rl
cik7CisgICAgICAgICAgICBuZXh0SXNTbWFsbENhcHMgPSB1cHBlcmNhc2VDaGFyYWN0ZXIgIT0g
YmFzZUNoYXJhY3RlcjsKICAgICAgICAgICAgIGlmIChuZXh0SXNTbWFsbENhcHMpIHsKICAgICAg
ICAgICAgICAgICBtX3NtYWxsQ2Fwc0J1ZmZlcltpbmRleF0gPSB1cHBlcmNhc2VDaGFyYWN0ZXI7
CiAgICAgICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1hcmtDb3VudDsgKytp
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9CaWRpQ29udGV4dC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L0JpZGlDb250ZXh0LmNwcAppbmRleCA2
YzA4YjA4ZjIwYmNjYTE2NGJlZWZmMzkwNmU3OWFhZGE2MzcyZWM5Li5kYjEyNmM5OTFmNGNhMGFk
MDlhZGU1NzJkNWQ3ODBiODE2ZGYyZWM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS90ZXh0L0JpZGlDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90
ZXh0L0JpZGlDb250ZXh0LmNwcApAQCAtMjUsOCArMjUsNiBAQAogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKLXVzaW5nIG5hbWVzcGFjZSBXVEY6OlVuaWNvZGU7Ci0KIHN0cnVjdCBTYW1lU2l6ZUFz
QmlkaUNvbnRleHQgOiBwdWJsaWMgUmVmQ291bnRlZDxTYW1lU2l6ZUFzQmlkaUNvbnRleHQ+IHsK
ICAgICB1aW50MzJfdCBiaXRmaWVsZHMgOiAxNjsKICAgICB2b2lkKiBwYXJlbnQ7CkBAIC0zNCwx
NCArMzIsMTQgQEAgc3RydWN0IFNhbWVTaXplQXNCaWRpQ29udGV4dCA6IHB1YmxpYyBSZWZDb3Vu
dGVkPFNhbWVTaXplQXNCaWRpQ29udGV4dD4gewogCiBDT01QSUxFX0FTU0VSVChzaXplb2YoQmlk
aUNvbnRleHQpID09IHNpemVvZihTYW1lU2l6ZUFzQmlkaUNvbnRleHQpLCBCaWRpQ29udGV4dF9z
aG91bGRfc3RheV9zbWFsbCk7CiAKLWlubGluZSBQYXNzUmVmUHRyPEJpZGlDb250ZXh0PiBCaWRp
Q29udGV4dDo6Y3JlYXRlVW5jYWNoZWQodW5zaWduZWQgY2hhciBsZXZlbCwgRGlyZWN0aW9uIGRp
cmVjdGlvbiwgYm9vbCBvdmVycmlkZSwgQmlkaUVtYmVkZGluZ1NvdXJjZSBzb3VyY2UsIEJpZGlD
b250ZXh0KiBwYXJlbnQpCitpbmxpbmUgUGFzc1JlZlB0cjxCaWRpQ29udGV4dD4gQmlkaUNvbnRl
eHQ6OmNyZWF0ZVVuY2FjaGVkKHVuc2lnbmVkIGNoYXIgbGV2ZWwsIFVDaGFyRGlyZWN0aW9uIGRp
cmVjdGlvbiwgYm9vbCBvdmVycmlkZSwgQmlkaUVtYmVkZGluZ1NvdXJjZSBzb3VyY2UsIEJpZGlD
b250ZXh0KiBwYXJlbnQpCiB7CiAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBCaWRpQ29udGV4dChs
ZXZlbCwgZGlyZWN0aW9uLCBvdmVycmlkZSwgc291cmNlLCBwYXJlbnQpKTsKIH0KIAotUGFzc1Jl
ZlB0cjxCaWRpQ29udGV4dD4gQmlkaUNvbnRleHQ6OmNyZWF0ZSh1bnNpZ25lZCBjaGFyIGxldmVs
LCBEaXJlY3Rpb24gZGlyZWN0aW9uLCBib29sIG92ZXJyaWRlLCBCaWRpRW1iZWRkaW5nU291cmNl
IHNvdXJjZSwgQmlkaUNvbnRleHQqIHBhcmVudCkKK1Bhc3NSZWZQdHI8QmlkaUNvbnRleHQ+IEJp
ZGlDb250ZXh0OjpjcmVhdGUodW5zaWduZWQgY2hhciBsZXZlbCwgVUNoYXJEaXJlY3Rpb24gZGly
ZWN0aW9uLCBib29sIG92ZXJyaWRlLCBCaWRpRW1iZWRkaW5nU291cmNlIHNvdXJjZSwgQmlkaUNv
bnRleHQqIHBhcmVudCkKIHsKLSAgICBBU1NFUlQoZGlyZWN0aW9uID09IChsZXZlbCAlIDIgPyBS
aWdodFRvTGVmdCA6IExlZnRUb1JpZ2h0KSk7CisgICAgQVNTRVJUKGRpcmVjdGlvbiA9PSAobGV2
ZWwgJSAyID8gVV9SSUdIVF9UT19MRUZUIDogVV9MRUZUX1RPX1JJR0hUKSk7CiAKICAgICBpZiAo
cGFyZW50KQogICAgICAgICByZXR1cm4gY3JlYXRlVW5jYWNoZWQobGV2ZWwsIGRpcmVjdGlvbiwg
b3ZlcnJpZGUsIHNvdXJjZSwgcGFyZW50KTsKQEAgLTQ5LDIwICs0NywyMCBAQCBQYXNzUmVmUHRy
PEJpZGlDb250ZXh0PiBCaWRpQ29udGV4dDo6Y3JlYXRlKHVuc2lnbmVkIGNoYXIgbGV2ZWwsIERp
cmVjdGlvbiBkaXJlYwogICAgIEFTU0VSVChsZXZlbCA8PSAxKTsKICAgICBpZiAoIWxldmVsKSB7
CiAgICAgICAgIGlmICghb3ZlcnJpZGUpIHsKLSAgICAgICAgICAgIHN0YXRpYyBCaWRpQ29udGV4
dCogbHRyQ29udGV4dCA9IGNyZWF0ZVVuY2FjaGVkKDAsIExlZnRUb1JpZ2h0LCBmYWxzZSwgRnJv
bVN0eWxlT3JET00sIDApLmxlYWtSZWYoKTsKKyAgICAgICAgICAgIHN0YXRpYyBCaWRpQ29udGV4
dCogbHRyQ29udGV4dCA9IGNyZWF0ZVVuY2FjaGVkKDAsIFVfTEVGVF9UT19SSUdIVCwgZmFsc2Us
IEZyb21TdHlsZU9yRE9NLCAwKS5sZWFrUmVmKCk7CiAgICAgICAgICAgICByZXR1cm4gbHRyQ29u
dGV4dDsKICAgICAgICAgfQogCi0gICAgICAgIHN0YXRpYyBCaWRpQ29udGV4dCogbHRyT3ZlcnJp
ZGVDb250ZXh0ID0gY3JlYXRlVW5jYWNoZWQoMCwgTGVmdFRvUmlnaHQsIHRydWUsIEZyb21TdHls
ZU9yRE9NLCAwKS5sZWFrUmVmKCk7CisgICAgICAgIHN0YXRpYyBCaWRpQ29udGV4dCogbHRyT3Zl
cnJpZGVDb250ZXh0ID0gY3JlYXRlVW5jYWNoZWQoMCwgVV9MRUZUX1RPX1JJR0hULCB0cnVlLCBG
cm9tU3R5bGVPckRPTSwgMCkubGVha1JlZigpOwogICAgICAgICByZXR1cm4gbHRyT3ZlcnJpZGVD
b250ZXh0OwogICAgIH0KIAogICAgIGlmICghb3ZlcnJpZGUpIHsKLSAgICAgICAgc3RhdGljIEJp
ZGlDb250ZXh0KiBydGxDb250ZXh0ID0gY3JlYXRlVW5jYWNoZWQoMSwgUmlnaHRUb0xlZnQsIGZh
bHNlLCBGcm9tU3R5bGVPckRPTSwgMCkubGVha1JlZigpOworICAgICAgICBzdGF0aWMgQmlkaUNv
bnRleHQqIHJ0bENvbnRleHQgPSBjcmVhdGVVbmNhY2hlZCgxLCBVX1JJR0hUX1RPX0xFRlQsIGZh
bHNlLCBGcm9tU3R5bGVPckRPTSwgMCkubGVha1JlZigpOwogICAgICAgICByZXR1cm4gcnRsQ29u
dGV4dDsKICAgICB9CiAKLSAgICBzdGF0aWMgQmlkaUNvbnRleHQqIHJ0bE92ZXJyaWRlQ29udGV4
dCA9IGNyZWF0ZVVuY2FjaGVkKDEsIFJpZ2h0VG9MZWZ0LCB0cnVlLCBGcm9tU3R5bGVPckRPTSwg
MCkubGVha1JlZigpOworICAgIHN0YXRpYyBCaWRpQ29udGV4dCogcnRsT3ZlcnJpZGVDb250ZXh0
ID0gY3JlYXRlVW5jYWNoZWQoMSwgVV9SSUdIVF9UT19MRUZULCB0cnVlLCBGcm9tU3R5bGVPckRP
TSwgMCkubGVha1JlZigpOwogICAgIHJldHVybiBydGxPdmVycmlkZUNvbnRleHQ7CiB9CiAKQEAg
LTcwLDcgKzY4LDcgQEAgc3RhdGljIGlubGluZSBQYXNzUmVmUHRyPEJpZGlDb250ZXh0PiBjb3B5
Q29udGV4dEFuZFJlYmFzZWxpbmVMZXZlbChCaWRpQ29udGV4dCoKIHsKICAgICBBU1NFUlQoY29u
dGV4dCk7CiAgICAgdW5zaWduZWQgY2hhciBuZXdMZXZlbCA9IHBhcmVudCA/IHBhcmVudC0+bGV2
ZWwoKSA6IDA7Ci0gICAgaWYgKGNvbnRleHQtPmRpcigpID09IFJpZ2h0VG9MZWZ0KQorICAgIGlm
IChjb250ZXh0LT5kaXIoKSA9PSBVX1JJR0hUX1RPX0xFRlQpCiAgICAgICAgIG5ld0xldmVsID0g
bmV4dEdyZWF0ZXJPZGRMZXZlbChuZXdMZXZlbCk7CiAgICAgZWxzZSBpZiAocGFyZW50KQogICAg
ICAgICBuZXdMZXZlbCA9IG5leHRHcmVhdGVyRXZlbkxldmVsKG5ld0xldmVsKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvQmlkaUNvbnRleHQuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL3RleHQvQmlkaUNvbnRleHQuaAppbmRleCAxZDQ4ZDM2NmZhNzkzZGY2
YWIzM2Q5ZDFhYzY5MDVkZTZhNDA3ZWRhLi4zNzE5ODMwNTVjZjZiYWEyMGM2OGE0M2Q2MjU5Mjgw
YTQ4ZmYzZTI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L0JpZGlD
b250ZXh0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9CaWRpQ29udGV4dC5o
CkBAIC0zOCwxNyArMzgsMTcgQEAgZW51bSBCaWRpRW1iZWRkaW5nU291cmNlIHsKIC8vIFVzZWQg
dG8ga2VlcCB0cmFjayBvZiBleHBsaWNpdCBlbWJlZGRpbmdzLgogY2xhc3MgQmlkaUNvbnRleHQg
OiBwdWJsaWMgUmVmQ291bnRlZDxCaWRpQ29udGV4dD4gewogcHVibGljOgotICAgIHN0YXRpYyBQ
YXNzUmVmUHRyPEJpZGlDb250ZXh0PiBjcmVhdGUodW5zaWduZWQgY2hhciBsZXZlbCwgV1RGOjpV
bmljb2RlOjpEaXJlY3Rpb24sIGJvb2wgb3ZlcnJpZGUgPSBmYWxzZSwgQmlkaUVtYmVkZGluZ1Nv
dXJjZSA9IEZyb21TdHlsZU9yRE9NLCBCaWRpQ29udGV4dCogcGFyZW50ID0gMCk7CisgICAgc3Rh
dGljIFBhc3NSZWZQdHI8QmlkaUNvbnRleHQ+IGNyZWF0ZSh1bnNpZ25lZCBjaGFyIGxldmVsLCBV
Q2hhckRpcmVjdGlvbiwgYm9vbCBvdmVycmlkZSA9IGZhbHNlLCBCaWRpRW1iZWRkaW5nU291cmNl
ID0gRnJvbVN0eWxlT3JET00sIEJpZGlDb250ZXh0KiBwYXJlbnQgPSAwKTsKIAogICAgIEJpZGlD
b250ZXh0KiBwYXJlbnQoKSBjb25zdCB7IHJldHVybiBtX3BhcmVudC5nZXQoKTsgfQogICAgIHVu
c2lnbmVkIGNoYXIgbGV2ZWwoKSBjb25zdCB7IHJldHVybiBtX2xldmVsOyB9Ci0gICAgV1RGOjpV
bmljb2RlOjpEaXJlY3Rpb24gZGlyKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8V1RGOjpV
bmljb2RlOjpEaXJlY3Rpb24+KG1fZGlyZWN0aW9uKTsgfQorICAgIFVDaGFyRGlyZWN0aW9uIGRp
cigpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PFVDaGFyRGlyZWN0aW9uPihtX2RpcmVjdGlv
bik7IH0KICAgICBib29sIG92ZXJyaWRlKCkgY29uc3QgeyByZXR1cm4gbV9vdmVycmlkZTsgfQog
ICAgIEJpZGlFbWJlZGRpbmdTb3VyY2Ugc291cmNlKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nh
c3Q8QmlkaUVtYmVkZGluZ1NvdXJjZT4obV9zb3VyY2UpOyB9CiAKICAgICBQYXNzUmVmUHRyPEJp
ZGlDb250ZXh0PiBjb3B5U3RhY2tSZW1vdmluZ1VuaWNvZGVFbWJlZGRpbmdDb250ZXh0cygpOwog
cHJpdmF0ZToKLSAgICBCaWRpQ29udGV4dCh1bnNpZ25lZCBjaGFyIGxldmVsLCBXVEY6OlVuaWNv
ZGU6OkRpcmVjdGlvbiBkaXJlY3Rpb24sIGJvb2wgb3ZlcnJpZGUsIEJpZGlFbWJlZGRpbmdTb3Vy
Y2Ugc291cmNlLCBCaWRpQ29udGV4dCogcGFyZW50KQorICAgIEJpZGlDb250ZXh0KHVuc2lnbmVk
IGNoYXIgbGV2ZWwsIFVDaGFyRGlyZWN0aW9uIGRpcmVjdGlvbiwgYm9vbCBvdmVycmlkZSwgQmlk
aUVtYmVkZGluZ1NvdXJjZSBzb3VyY2UsIEJpZGlDb250ZXh0KiBwYXJlbnQpCiAgICAgICAgIDog
bV9sZXZlbChsZXZlbCkKICAgICAgICAgLCBtX2RpcmVjdGlvbihkaXJlY3Rpb24pCiAgICAgICAg
ICwgbV9vdmVycmlkZShvdmVycmlkZSkKQEAgLTU3LDcgKzU3LDcgQEAgcHJpdmF0ZToKICAgICB7
CiAgICAgfQogCi0gICAgc3RhdGljIFBhc3NSZWZQdHI8QmlkaUNvbnRleHQ+IGNyZWF0ZVVuY2Fj
aGVkKHVuc2lnbmVkIGNoYXIgbGV2ZWwsIFdURjo6VW5pY29kZTo6RGlyZWN0aW9uLCBib29sIG92
ZXJyaWRlLCBCaWRpRW1iZWRkaW5nU291cmNlLCBCaWRpQ29udGV4dCogcGFyZW50KTsKKyAgICBz
dGF0aWMgUGFzc1JlZlB0cjxCaWRpQ29udGV4dD4gY3JlYXRlVW5jYWNoZWQodW5zaWduZWQgY2hh
ciBsZXZlbCwgVUNoYXJEaXJlY3Rpb24sIGJvb2wgb3ZlcnJpZGUsIEJpZGlFbWJlZGRpbmdTb3Vy
Y2UsIEJpZGlDb250ZXh0KiBwYXJlbnQpOwogCiAgICAgdW5zaWduZWQgbV9sZXZlbCA6IDY7IC8v
IFRoZSBtYXhpbWl1bSBiaWRpIGxldmVsIGlzIDYyOiBodHRwOi8vdW5pY29kZS5vcmcvcmVwb3J0
cy90cjkvI0V4cGxpY2l0X0xldmVsc19hbmRfRGlyZWN0aW9ucwogICAgIHVuc2lnbmVkIG1fZGly
ZWN0aW9uIDogNTsgLy8gRGlyZWN0aW9uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS90ZXh0L0JpZGlSZXNvbHZlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9C
aWRpUmVzb2x2ZXIuaAppbmRleCBlMDY0OWZjYjQzZjRmMjkwMzA1NTFmYWY3NTlmMzVlYTkxYjZl
YTI0Li5iNzQ0N2JlZWQ2OWYzZjlmZjYzODE0ZDgwMzU1MzQxYmVjNDA0OGIxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L0JpZGlSZXNvbHZlci5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvQmlkaVJlc29sdmVyLmgKQEAgLTU3LDIyICs1NywyMiBA
QCB0ZW1wbGF0ZSA8Y2xhc3MgSXRlcmF0b3I+IHN0cnVjdCBNaWRwb2ludFN0YXRlIHsKIC8vIGJl
IGNhY2hlZCBhbmQgdGhlbiB1c2VkIHRvIHJlc3RhcnQgYmlkaSByZXNvbHV0aW9uIGF0IHRoYXQg
cG9zaXRpb24uCiBzdHJ1Y3QgQmlkaVN0YXR1cyB7CiAgICAgQmlkaVN0YXR1cygpCi0gICAgICAg
IDogZW9yKFdURjo6VW5pY29kZTo6T3RoZXJOZXV0cmFsKQotICAgICAgICAsIGxhc3RTdHJvbmco
V1RGOjpVbmljb2RlOjpPdGhlck5ldXRyYWwpCi0gICAgICAgICwgbGFzdChXVEY6OlVuaWNvZGU6
Ok90aGVyTmV1dHJhbCkKKyAgICAgICAgOiBlb3IoVV9PVEhFUl9ORVVUUkFMKQorICAgICAgICAs
IGxhc3RTdHJvbmcoVV9PVEhFUl9ORVVUUkFMKQorICAgICAgICAsIGxhc3QoVV9PVEhFUl9ORVVU
UkFMKQogICAgIHsKICAgICB9CiAKICAgICAvLyBDcmVhdGVzIGEgQmlkaVN0YXR1cyByZXByZXNl
bnRpbmcgYSBuZXcgcGFyYWdyYXBoIHJvb3Qgd2l0aCBhIGRlZmF1bHQgZGlyZWN0aW9uLgotICAg
IC8vIFVzZXMgVGV4dERpcmVjdGlvbiBhcyBpdCBvbmx5IGhhcyB0d28gcG9zc2liaWxpdGllcyBp
bnN0ZWFkIG9mIFdURjo6VW5pY29kZTo6RGlyZWN0aW9uIHdoaWNoIGhhcyAxOS4KKyAgICAvLyBV
c2VzIFRleHREaXJlY3Rpb24gYXMgaXQgb25seSBoYXMgdHdvIHBvc3NpYmlsaXRpZXMgaW5zdGVh
ZCBvZiBVQ2hhckRpcmVjdGlvbiB3aGljaCBoYXMgYXQgbGVhc3QgMTkuCiAgICAgQmlkaVN0YXR1
cyhUZXh0RGlyZWN0aW9uIHRleHREaXJlY3Rpb24sIGJvb2wgaXNPdmVycmlkZSkKICAgICB7Ci0g
ICAgICAgIFdURjo6VW5pY29kZTo6RGlyZWN0aW9uIGRpcmVjdGlvbiA9IHRleHREaXJlY3Rpb24g
PT0gTFRSID8gV1RGOjpVbmljb2RlOjpMZWZ0VG9SaWdodCA6IFdURjo6VW5pY29kZTo6UmlnaHRU
b0xlZnQ7CisgICAgICAgIFVDaGFyRGlyZWN0aW9uIGRpcmVjdGlvbiA9IHRleHREaXJlY3Rpb24g
PT0gTFRSID8gVV9MRUZUX1RPX1JJR0hUIDogVV9SSUdIVF9UT19MRUZUOwogICAgICAgICBlb3Ig
PSBsYXN0U3Ryb25nID0gbGFzdCA9IGRpcmVjdGlvbjsKICAgICAgICAgY29udGV4dCA9IEJpZGlD
b250ZXh0OjpjcmVhdGUodGV4dERpcmVjdGlvbiA9PSBMVFIgPyAwIDogMSwgZGlyZWN0aW9uLCBp
c092ZXJyaWRlKTsKICAgICB9CiAKLSAgICBCaWRpU3RhdHVzKFdURjo6VW5pY29kZTo6RGlyZWN0
aW9uIGVvckRpciwgV1RGOjpVbmljb2RlOjpEaXJlY3Rpb24gbGFzdFN0cm9uZ0RpciwgV1RGOjpV
bmljb2RlOjpEaXJlY3Rpb24gbGFzdERpciwgUGFzc1JlZlB0cjxCaWRpQ29udGV4dD4gYmlkaUNv
bnRleHQpCisgICAgQmlkaVN0YXR1cyhVQ2hhckRpcmVjdGlvbiBlb3JEaXIsIFVDaGFyRGlyZWN0
aW9uIGxhc3RTdHJvbmdEaXIsIFVDaGFyRGlyZWN0aW9uIGxhc3REaXIsIFBhc3NSZWZQdHI8Qmlk
aUNvbnRleHQ+IGJpZGlDb250ZXh0KQogICAgICAgICA6IGVvcihlb3JEaXIpCiAgICAgICAgICwg
bGFzdFN0cm9uZyhsYXN0U3Ryb25nRGlyKQogICAgICAgICAsIGxhc3QobGFzdERpcikKQEAgLTgw
LDI0ICs4MCwyNCBAQCBzdHJ1Y3QgQmlkaVN0YXR1cyB7CiAgICAgewogICAgIH0KIAotICAgIFdU
Rjo6VW5pY29kZTo6RGlyZWN0aW9uIGVvcjsKLSAgICBXVEY6OlVuaWNvZGU6OkRpcmVjdGlvbiBs
YXN0U3Ryb25nOwotICAgIFdURjo6VW5pY29kZTo6RGlyZWN0aW9uIGxhc3Q7CisgICAgVUNoYXJE
aXJlY3Rpb24gZW9yOworICAgIFVDaGFyRGlyZWN0aW9uIGxhc3RTdHJvbmc7CisgICAgVUNoYXJE
aXJlY3Rpb24gbGFzdDsKICAgICBSZWZQdHI8QmlkaUNvbnRleHQ+IGNvbnRleHQ7CiB9OwogCiBj
bGFzcyBCaWRpRW1iZWRkaW5nIHsKIHB1YmxpYzoKLSAgICBCaWRpRW1iZWRkaW5nKFdURjo6VW5p
Y29kZTo6RGlyZWN0aW9uIGRpcmVjdGlvbiwgQmlkaUVtYmVkZGluZ1NvdXJjZSBzb3VyY2UpCisg
ICAgQmlkaUVtYmVkZGluZyhVQ2hhckRpcmVjdGlvbiBkaXJlY3Rpb24sIEJpZGlFbWJlZGRpbmdT
b3VyY2Ugc291cmNlKQogICAgIDogbV9kaXJlY3Rpb24oZGlyZWN0aW9uKQogICAgICwgbV9zb3Vy
Y2Uoc291cmNlKQogICAgIHsKICAgICB9CiAKLSAgICBXVEY6OlVuaWNvZGU6OkRpcmVjdGlvbiBk
aXJlY3Rpb24oKSBjb25zdCB7IHJldHVybiBtX2RpcmVjdGlvbjsgfQorICAgIFVDaGFyRGlyZWN0
aW9uIGRpcmVjdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fZGlyZWN0aW9uOyB9CiAgICAgQmlkaUVt
YmVkZGluZ1NvdXJjZSBzb3VyY2UoKSBjb25zdCB7IHJldHVybiBtX3NvdXJjZTsgfQogcHJpdmF0
ZToKLSAgICBXVEY6OlVuaWNvZGU6OkRpcmVjdGlvbiBtX2RpcmVjdGlvbjsKKyAgICBVQ2hhckRp
cmVjdGlvbiBtX2RpcmVjdGlvbjsKICAgICBCaWRpRW1iZWRkaW5nU291cmNlIG1fc291cmNlOwog
fTsKIApAQCAtMTEyLDI1ICsxMTIsMjUgQEAgaW5saW5lIGJvb2wgb3BlcmF0b3IhPShjb25zdCBC
aWRpU3RhdHVzJiBzdGF0dXMxLCBjb25zdCBCaWRpU3RhdHVzJiBzdGF0dXMyKQogfQogCiBzdHJ1
Y3QgQmlkaUNoYXJhY3RlclJ1biB7Ci0gICAgQmlkaUNoYXJhY3RlclJ1bihpbnQgc3RhcnQsIGlu
dCBzdG9wLCBCaWRpQ29udGV4dCogY29udGV4dCwgV1RGOjpVbmljb2RlOjpEaXJlY3Rpb24gZGly
KQorICAgIEJpZGlDaGFyYWN0ZXJSdW4oaW50IHN0YXJ0LCBpbnQgc3RvcCwgQmlkaUNvbnRleHQq
IGNvbnRleHQsIFVDaGFyRGlyZWN0aW9uIGRpcmVjdGlvbikKICAgICAgICAgOiBtX292ZXJyaWRl
KGNvbnRleHQtPm92ZXJyaWRlKCkpCiAgICAgICAgICwgbV9uZXh0KDApCiAgICAgICAgICwgbV9z
dGFydChzdGFydCkKICAgICAgICAgLCBtX3N0b3Aoc3RvcCkKICAgICB7Ci0gICAgICAgIGlmIChk
aXIgPT0gV1RGOjpVbmljb2RlOjpPdGhlck5ldXRyYWwpCi0gICAgICAgICAgICBkaXIgPSBjb250
ZXh0LT5kaXIoKTsKKyAgICAgICAgaWYgKGRpcmVjdGlvbiA9PSBVX09USEVSX05FVVRSQUwpCisg
ICAgICAgICAgICBkaXJlY3Rpb24gPSBjb250ZXh0LT5kaXIoKTsKIAogICAgICAgICBtX2xldmVs
ID0gY29udGV4dC0+bGV2ZWwoKTsKIAogICAgICAgICAvLyBhZGQgbGV2ZWwgb2YgcnVuIChjYXNl
cyBJMSAmIEkyKQogICAgICAgICBpZiAobV9sZXZlbCAlIDIpIHsKLSAgICAgICAgICAgIGlmIChk
aXIgPT0gV1RGOjpVbmljb2RlOjpMZWZ0VG9SaWdodCB8fCBkaXIgPT0gV1RGOjpVbmljb2RlOjpB
cmFiaWNOdW1iZXIgfHwgZGlyID09IFdURjo6VW5pY29kZTo6RXVyb3BlYW5OdW1iZXIpCisgICAg
ICAgICAgICBpZiAoZGlyZWN0aW9uID09IFVfTEVGVF9UT19SSUdIVCB8fCBkaXJlY3Rpb24gPT0g
VV9BUkFCSUNfTlVNQkVSIHx8IGRpcmVjdGlvbiA9PSBVX0VVUk9QRUFOX05VTUJFUikKICAgICAg
ICAgICAgICAgICBtX2xldmVsKys7CiAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBpZiAo
ZGlyID09IFdURjo6VW5pY29kZTo6UmlnaHRUb0xlZnQpCisgICAgICAgICAgICBpZiAoZGlyZWN0
aW9uID09IFVfUklHSFRfVE9fTEVGVCkKICAgICAgICAgICAgICAgICBtX2xldmVsKys7Ci0gICAg
ICAgICAgICBlbHNlIGlmIChkaXIgPT0gV1RGOjpVbmljb2RlOjpBcmFiaWNOdW1iZXIgfHwgZGly
ID09IFdURjo6VW5pY29kZTo6RXVyb3BlYW5OdW1iZXIpCisgICAgICAgICAgICBlbHNlIGlmIChk
aXJlY3Rpb24gPT0gVV9BUkFCSUNfTlVNQkVSIHx8IGRpcmVjdGlvbiA9PSBVX0VVUk9QRUFOX05V
TUJFUikKICAgICAgICAgICAgICAgICBtX2xldmVsICs9IDI7CiAgICAgICAgIH0KICAgICB9CkBA
IC0xNzAsNyArMTcwLDcgQEAgdGVtcGxhdGUgPGNsYXNzIEl0ZXJhdG9yLCBjbGFzcyBSdW4+IGNs
YXNzIEJpZGlSZXNvbHZlciB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoQmlkaVJlc29sdmVy
KTsKIHB1YmxpYzoKICAgICBCaWRpUmVzb2x2ZXIoKQotICAgICAgICA6IG1fZGlyZWN0aW9uKFdU
Rjo6VW5pY29kZTo6T3RoZXJOZXV0cmFsKQorICAgICAgICA6IG1fZGlyZWN0aW9uKFVfT1RIRVJf
TkVVVFJBTCkKICAgICAgICAgLCBtX3JlYWNoZWRFbmRPZkxpbmUoZmFsc2UpCiAgICAgICAgICwg
bV9lbXB0eVJ1bih0cnVlKQogICAgICAgICAsIG1fbmVzdGVkSXNvbGF0ZUNvdW50KDApCkBAIC0x
OTQsMTIgKzE5NCwxMiBAQCBwdWJsaWM6CiAgICAgQmlkaUNvbnRleHQqIGNvbnRleHQoKSBjb25z
dCB7IHJldHVybiBtX3N0YXR1cy5jb250ZXh0LmdldCgpOyB9CiAgICAgdm9pZCBzZXRDb250ZXh0
KFBhc3NSZWZQdHI8QmlkaUNvbnRleHQ+IGMpIHsgbV9zdGF0dXMuY29udGV4dCA9IGM7IH0KIAot
ICAgIHZvaWQgc2V0TGFzdERpcihXVEY6OlVuaWNvZGU6OkRpcmVjdGlvbiBsYXN0RGlyKSB7IG1f
c3RhdHVzLmxhc3QgPSBsYXN0RGlyOyB9Ci0gICAgdm9pZCBzZXRMYXN0U3Ryb25nRGlyKFdURjo6
VW5pY29kZTo6RGlyZWN0aW9uIGxhc3RTdHJvbmdEaXIpIHsgbV9zdGF0dXMubGFzdFN0cm9uZyA9
IGxhc3RTdHJvbmdEaXI7IH0KLSAgICB2b2lkIHNldEVvckRpcihXVEY6OlVuaWNvZGU6OkRpcmVj
dGlvbiBlb3JEaXIpIHsgbV9zdGF0dXMuZW9yID0gZW9yRGlyOyB9CisgICAgdm9pZCBzZXRMYXN0
RGlyKFVDaGFyRGlyZWN0aW9uIGxhc3REaXIpIHsgbV9zdGF0dXMubGFzdCA9IGxhc3REaXI7IH0K
KyAgICB2b2lkIHNldExhc3RTdHJvbmdEaXIoVUNoYXJEaXJlY3Rpb24gbGFzdFN0cm9uZ0Rpcikg
eyBtX3N0YXR1cy5sYXN0U3Ryb25nID0gbGFzdFN0cm9uZ0RpcjsgfQorICAgIHZvaWQgc2V0RW9y
RGlyKFVDaGFyRGlyZWN0aW9uIGVvckRpcikgeyBtX3N0YXR1cy5lb3IgPSBlb3JEaXI7IH0KIAot
ICAgIFdURjo6VW5pY29kZTo6RGlyZWN0aW9uIGRpcigpIGNvbnN0IHsgcmV0dXJuIG1fZGlyZWN0
aW9uOyB9Ci0gICAgdm9pZCBzZXREaXIoV1RGOjpVbmljb2RlOjpEaXJlY3Rpb24gZCkgeyBtX2Rp
cmVjdGlvbiA9IGQ7IH0KKyAgICBVQ2hhckRpcmVjdGlvbiBkaXIoKSBjb25zdCB7IHJldHVybiBt
X2RpcmVjdGlvbjsgfQorICAgIHZvaWQgc2V0RGlyKFVDaGFyRGlyZWN0aW9uIGQpIHsgbV9kaXJl
Y3Rpb24gPSBkOyB9CiAKICAgICBjb25zdCBCaWRpU3RhdHVzJiBzdGF0dXMoKSBjb25zdCB7IHJl
dHVybiBtX3N0YXR1czsgfQogICAgIHZvaWQgc2V0U3RhdHVzKGNvbnN0IEJpZGlTdGF0dXMgcykg
eyBtX3N0YXR1cyA9IHM7IH0KQEAgLTIxMyw3ICsyMTMsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBl
eGl0SXNvbGF0ZSgpIHsgQVNTRVJUKG1fbmVzdGVkSXNvbGF0ZUNvdW50ID49IDEpOyBtX25lc3Rl
ZElzb2xhdGVDb3VudC0tOyB9CiAgICAgYm9vbCBpbklzb2xhdGUoKSBjb25zdCB7IHJldHVybiBt
X25lc3RlZElzb2xhdGVDb3VudDsgfQogCi0gICAgdm9pZCBlbWJlZChXVEY6OlVuaWNvZGU6OkRp
cmVjdGlvbiwgQmlkaUVtYmVkZGluZ1NvdXJjZSk7CisgICAgdm9pZCBlbWJlZChVQ2hhckRpcmVj
dGlvbiwgQmlkaUVtYmVkZGluZ1NvdXJjZSk7CiAgICAgYm9vbCBjb21taXRFeHBsaWNpdEVtYmVk
ZGluZygpOwogCiAgICAgdm9pZCBjcmVhdGVCaWRpUnVuc0ZvckxpbmUoY29uc3QgSXRlcmF0b3Im
IGVuZCwgVmlzdWFsRGlyZWN0aW9uT3ZlcnJpZGUgPSBOb1Zpc3VhbE92ZXJyaWRlLCBib29sIGhh
cmRMaW5lQnJlYWsgPSBmYWxzZSk7CkBAIC0yMzgsMTAgKzIzOCwxMCBAQCBwcm90ZWN0ZWQ6CiAg
ICAgSXRlcmF0b3IgbV9lb3I7IC8vIFBvaW50cyB0byB0aGUgbGFzdCBjaGFyYWN0ZXIgaW4gdGhl
IGN1cnJlbnQgcnVuLgogICAgIEl0ZXJhdG9yIG1fbGFzdDsKICAgICBCaWRpU3RhdHVzIG1fc3Rh
dHVzOwotICAgIFdURjo6VW5pY29kZTo6RGlyZWN0aW9uIG1fZGlyZWN0aW9uOworICAgIFVDaGFy
RGlyZWN0aW9uIG1fZGlyZWN0aW9uOwogICAgIEl0ZXJhdG9yIGVuZE9mTGluZTsKICAgICBib29s
IG1fcmVhY2hlZEVuZE9mTGluZTsKLSAgICBJdGVyYXRvciBtX2xhc3RCZWZvcmVFVDsgLy8gQmVm
b3JlIGEgRXVyb3BlYW5OdW1iZXJUZXJtaW5hdG9yCisgICAgSXRlcmF0b3IgbV9sYXN0QmVmb3Jl
RVQ7IC8vIEJlZm9yZSBhIFVfRVVST1BFQU5fTlVNQkVSX1RFUk1JTkFUT1IKICAgICBib29sIG1f
ZW1wdHlSdW47CiAKICAgICAvLyBGSVhNRTogVGhpcyBzaG91bGQgbm90IGJlbG9uZyB0byB0aGUg
cmVzb2x2ZXIsIGJ1dCByYXRoZXIgYmUgcGFzc2VkCkBAIC0yNTQsMTEgKzI1NCwxMSBAQCBwcm90
ZWN0ZWQ6CiAgICAgVmVjdG9yPFJ1bio+IG1faXNvbGF0ZWRSdW5zOwogCiBwcml2YXRlOgotICAg
IHZvaWQgcmFpc2VFeHBsaWNpdEVtYmVkZGluZ0xldmVsKFdURjo6VW5pY29kZTo6RGlyZWN0aW9u
IGZyb20sIFdURjo6VW5pY29kZTo6RGlyZWN0aW9uIHRvKTsKLSAgICB2b2lkIGxvd2VyRXhwbGlj
aXRFbWJlZGRpbmdMZXZlbChXVEY6OlVuaWNvZGU6OkRpcmVjdGlvbiBmcm9tKTsKKyAgICB2b2lk
IHJhaXNlRXhwbGljaXRFbWJlZGRpbmdMZXZlbChVQ2hhckRpcmVjdGlvbiBmcm9tLCBVQ2hhckRp
cmVjdGlvbiB0byk7CisgICAgdm9pZCBsb3dlckV4cGxpY2l0RW1iZWRkaW5nTGV2ZWwoVUNoYXJE
aXJlY3Rpb24gZnJvbSk7CiAgICAgdm9pZCBjaGVja0RpcmVjdGlvbkluTG93ZXJSYWlzZUVtYmVk
ZGluZ0xldmVsKCk7CiAKLSAgICB2b2lkIHVwZGF0ZVN0YXR1c0xhc3RGcm9tQ3VycmVudERpcmVj
dGlvbihXVEY6OlVuaWNvZGU6OkRpcmVjdGlvbik7CisgICAgdm9pZCB1cGRhdGVTdGF0dXNMYXN0
RnJvbUN1cnJlbnREaXJlY3Rpb24oVUNoYXJEaXJlY3Rpb24pOwogICAgIHZvaWQgcmVvcmRlclJ1
bnNGcm9tTGV2ZWxzKCk7CiAKICAgICBWZWN0b3I8QmlkaUVtYmVkZGluZywgOD4gbV9jdXJyZW50
RXhwbGljaXRFbWJlZGRpbmdTZXF1ZW5jZTsKQEAgLTI5NCw2NCArMjk0LDU5IEBAIHZvaWQgQmlk
aVJlc29sdmVyPEl0ZXJhdG9yLCBSdW4+OjphcHBlbmRSdW4oKQogICAgICAgICBtX3NvciA9IG1f
ZW9yOwogICAgIH0KIAotICAgIG1fZGlyZWN0aW9uID0gV1RGOjpVbmljb2RlOjpPdGhlck5ldXRy
YWw7Ci0gICAgbV9zdGF0dXMuZW9yID0gV1RGOjpVbmljb2RlOjpPdGhlck5ldXRyYWw7CisgICAg
bV9kaXJlY3Rpb24gPSBVX09USEVSX05FVVRSQUw7CisgICAgbV9zdGF0dXMuZW9yID0gVV9PVEhF
Ul9ORVVUUkFMOwogfQogCiB0ZW1wbGF0ZSA8Y2xhc3MgSXRlcmF0b3IsIGNsYXNzIFJ1bj4KLXZv
aWQgQmlkaVJlc29sdmVyPEl0ZXJhdG9yLCBSdW4+OjplbWJlZChXVEY6OlVuaWNvZGU6OkRpcmVj
dGlvbiBkaXIsIEJpZGlFbWJlZGRpbmdTb3VyY2Ugc291cmNlKQordm9pZCBCaWRpUmVzb2x2ZXI8
SXRlcmF0b3IsIFJ1bj46OmVtYmVkKFVDaGFyRGlyZWN0aW9uIGRpciwgQmlkaUVtYmVkZGluZ1Nv
dXJjZSBzb3VyY2UpCiB7CiAgICAgLy8gSXNvbGF0ZWQgc3BhbnMgY29tcHV0ZSBiYXNlIGRpcmVj
dGlvbmFsaXR5IGR1cmluZyB0aGVpciBvd24gVUJBIHJ1bi4KICAgICAvLyBEbyBub3QgaW5zZXJ0
IGZha2UgZW1iZWQgY2hhcmFjdGVycyBvbmNlIHdlIGVudGVyIGFuIGlzb2xhdGVkIHNwYW4uCiAg
ICAgQVNTRVJUKCFpbklzb2xhdGUoKSk7Ci0gICAgdXNpbmcgbmFtZXNwYWNlIFdURjo6VW5pY29k
ZTsKIAotICAgIEFTU0VSVChkaXIgPT0gUG9wRGlyZWN0aW9uYWxGb3JtYXQgfHwgZGlyID09IExl
ZnRUb1JpZ2h0RW1iZWRkaW5nIHx8IGRpciA9PSBMZWZ0VG9SaWdodE92ZXJyaWRlIHx8IGRpciA9
PSBSaWdodFRvTGVmdEVtYmVkZGluZyB8fCBkaXIgPT0gUmlnaHRUb0xlZnRPdmVycmlkZSk7Cisg
ICAgQVNTRVJUKGRpciA9PSBVX1BPUF9ESVJFQ1RJT05BTF9GT1JNQVQgfHwgZGlyID09IFVfTEVG
VF9UT19SSUdIVF9FTUJFRERJTkcgfHwgZGlyID09IFVfTEVGVF9UT19SSUdIVF9PVkVSUklERSB8
fCBkaXIgPT0gVV9SSUdIVF9UT19MRUZUX0VNQkVERElORyB8fCBkaXIgPT0gVV9SSUdIVF9UT19M
RUZUX09WRVJSSURFKTsKICAgICBtX2N1cnJlbnRFeHBsaWNpdEVtYmVkZGluZ1NlcXVlbmNlLmFw
cGVuZChCaWRpRW1iZWRkaW5nKGRpciwgc291cmNlKSk7CiB9CiAKIHRlbXBsYXRlIDxjbGFzcyBJ
dGVyYXRvciwgY2xhc3MgUnVuPgogdm9pZCBCaWRpUmVzb2x2ZXI8SXRlcmF0b3IsIFJ1bj46OmNo
ZWNrRGlyZWN0aW9uSW5Mb3dlclJhaXNlRW1iZWRkaW5nTGV2ZWwoKQogewotICAgIHVzaW5nIG5h
bWVzcGFjZSBXVEY6OlVuaWNvZGU7Ci0KLSAgICBBU1NFUlQobV9zdGF0dXMuZW9yICE9IE90aGVy
TmV1dHJhbCB8fCBtX2Vvci5hdEVuZCgpKTsKLSAgICBBU1NFUlQobV9zdGF0dXMubGFzdCAhPSBO
b25TcGFjaW5nTWFyawotICAgICAgICAmJiBtX3N0YXR1cy5sYXN0ICE9IEJvdW5kYXJ5TmV1dHJh
bAotICAgICAgICAmJiBtX3N0YXR1cy5sYXN0ICE9IFJpZ2h0VG9MZWZ0RW1iZWRkaW5nCi0gICAg
ICAgICYmIG1fc3RhdHVzLmxhc3QgIT0gTGVmdFRvUmlnaHRFbWJlZGRpbmcKLSAgICAgICAgJiYg
bV9zdGF0dXMubGFzdCAhPSBSaWdodFRvTGVmdE92ZXJyaWRlIAotICAgICAgICAmJiBtX3N0YXR1
cy5sYXN0ICE9IExlZnRUb1JpZ2h0T3ZlcnJpZGUgCi0gICAgICAgICYmIG1fc3RhdHVzLmxhc3Qg
IT0gUG9wRGlyZWN0aW9uYWxGb3JtYXQpOwotICAgIGlmIChtX2RpcmVjdGlvbiA9PSBPdGhlck5l
dXRyYWwpCi0gICAgICAgIG1fZGlyZWN0aW9uID0gbV9zdGF0dXMubGFzdFN0cm9uZyA9PSBMZWZ0
VG9SaWdodCA/IExlZnRUb1JpZ2h0IDogUmlnaHRUb0xlZnQ7CisgICAgQVNTRVJUKG1fc3RhdHVz
LmVvciAhPSBVX09USEVSX05FVVRSQUwgfHwgbV9lb3IuYXRFbmQoKSk7CisgICAgQVNTRVJUKG1f
c3RhdHVzLmxhc3QgIT0gVV9ESVJfTk9OX1NQQUNJTkdfTUFSSworICAgICAgICAmJiBtX3N0YXR1
cy5sYXN0ICE9IFVfQk9VTkRBUllfTkVVVFJBTAorICAgICAgICAmJiBtX3N0YXR1cy5sYXN0ICE9
IFVfUklHSFRfVE9fTEVGVF9FTUJFRERJTkcKKyAgICAgICAgJiYgbV9zdGF0dXMubGFzdCAhPSBV
X0xFRlRfVE9fUklHSFRfRU1CRURESU5HCisgICAgICAgICYmIG1fc3RhdHVzLmxhc3QgIT0gVV9S
SUdIVF9UT19MRUZUX09WRVJSSURFIAorICAgICAgICAmJiBtX3N0YXR1cy5sYXN0ICE9IFVfTEVG
VF9UT19SSUdIVF9PVkVSUklERQorICAgICAgICAmJiBtX3N0YXR1cy5sYXN0ICE9IFVfUE9QX0RJ
UkVDVElPTkFMX0ZPUk1BVCk7CisgICAgaWYgKG1fZGlyZWN0aW9uID09IFVfT1RIRVJfTkVVVFJB
TCkKKyAgICAgICAgbV9kaXJlY3Rpb24gPSBtX3N0YXR1cy5sYXN0U3Ryb25nID09IFVfTEVGVF9U
T19SSUdIVCA/IFVfTEVGVF9UT19SSUdIVCA6IFVfUklHSFRfVE9fTEVGVDsKIH0KIAogdGVtcGxh
dGUgPGNsYXNzIEl0ZXJhdG9yLCBjbGFzcyBSdW4+Ci12b2lkIEJpZGlSZXNvbHZlcjxJdGVyYXRv
ciwgUnVuPjo6bG93ZXJFeHBsaWNpdEVtYmVkZGluZ0xldmVsKFdURjo6VW5pY29kZTo6RGlyZWN0
aW9uIGZyb20pCit2b2lkIEJpZGlSZXNvbHZlcjxJdGVyYXRvciwgUnVuPjo6bG93ZXJFeHBsaWNp
dEVtYmVkZGluZ0xldmVsKFVDaGFyRGlyZWN0aW9uIGZyb20pCiB7Ci0gICAgdXNpbmcgbmFtZXNw
YWNlIFdURjo6VW5pY29kZTsKLQogICAgIGlmICghbV9lbXB0eVJ1biAmJiBtX2VvciAhPSBtX2xh
c3QpIHsKICAgICAgICAgY2hlY2tEaXJlY3Rpb25Jbkxvd2VyUmFpc2VFbWJlZGRpbmdMZXZlbCgp
OwogICAgICAgICAvLyBiaWRpLnNvciAuLi4gYmlkaS5lb3IgLi4uIGJpZGkubGFzdCBlb3I7IG5l
ZWQgdG8gYXBwZW5kIHRoZSBiaWRpLnNvci1iaWRpLmVvciBydW4gb3IgZXh0ZW5kIGl0IHRocm91
Z2ggYmlkaS5sYXN0Ci0gICAgICAgIGlmIChmcm9tID09IExlZnRUb1JpZ2h0KSB7CisgICAgICAg
IGlmIChmcm9tID09IFVfTEVGVF9UT19SSUdIVCkgewogICAgICAgICAgICAgLy8gYmlkaS5zb3Ig
Li4uIGJpZGkuZW9yIC4uLiBiaWRpLmxhc3QgTAotICAgICAgICAgICAgaWYgKG1fc3RhdHVzLmVv
ciA9PSBFdXJvcGVhbk51bWJlcikgewotICAgICAgICAgICAgICAgIGlmIChtX3N0YXR1cy5sYXN0
U3Ryb25nICE9IExlZnRUb1JpZ2h0KSB7Ci0gICAgICAgICAgICAgICAgICAgIG1fZGlyZWN0aW9u
ID0gRXVyb3BlYW5OdW1iZXI7CisgICAgICAgICAgICBpZiAobV9zdGF0dXMuZW9yID09IFVfRVVS
T1BFQU5fTlVNQkVSKSB7CisgICAgICAgICAgICAgICAgaWYgKG1fc3RhdHVzLmxhc3RTdHJvbmcg
IT0gVV9MRUZUX1RPX1JJR0hUKSB7CisgICAgICAgICAgICAgICAgICAgIG1fZGlyZWN0aW9uID0g
VV9FVVJPUEVBTl9OVU1CRVI7CiAgICAgICAgICAgICAgICAgICAgIGFwcGVuZFJ1bigpOwogICAg
ICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0gZWxzZSBpZiAobV9zdGF0dXMuZW9yID09IEFy
YWJpY051bWJlcikgewotICAgICAgICAgICAgICAgIG1fZGlyZWN0aW9uID0gQXJhYmljTnVtYmVy
OworICAgICAgICAgICAgfSBlbHNlIGlmIChtX3N0YXR1cy5lb3IgPT0gVV9BUkFCSUNfTlVNQkVS
KSB7CisgICAgICAgICAgICAgICAgbV9kaXJlY3Rpb24gPSBVX0FSQUJJQ19OVU1CRVI7CiAgICAg
ICAgICAgICAgICAgYXBwZW5kUnVuKCk7Ci0gICAgICAgICAgICB9IGVsc2UgaWYgKG1fc3RhdHVz
Lmxhc3RTdHJvbmcgIT0gTGVmdFRvUmlnaHQpIHsKKyAgICAgICAgICAgIH0gZWxzZSBpZiAobV9z
dGF0dXMubGFzdFN0cm9uZyAhPSBVX0xFRlRfVE9fUklHSFQpIHsKICAgICAgICAgICAgICAgICBh
cHBlbmRSdW4oKTsKLSAgICAgICAgICAgICAgICBtX2RpcmVjdGlvbiA9IExlZnRUb1JpZ2h0Owor
ICAgICAgICAgICAgICAgIG1fZGlyZWN0aW9uID0gVV9MRUZUX1RPX1JJR0hUOwogICAgICAgICAg
ICAgfQotICAgICAgICB9IGVsc2UgaWYgKG1fc3RhdHVzLmVvciA9PSBFdXJvcGVhbk51bWJlciB8
fCBtX3N0YXR1cy5lb3IgPT0gQXJhYmljTnVtYmVyIHx8IG1fc3RhdHVzLmxhc3RTdHJvbmcgPT0g
TGVmdFRvUmlnaHQpIHsKKyAgICAgICAgfSBlbHNlIGlmIChtX3N0YXR1cy5lb3IgPT0gVV9FVVJP
UEVBTl9OVU1CRVIgfHwgbV9zdGF0dXMuZW9yID09IFVfQVJBQklDX05VTUJFUiB8fCBtX3N0YXR1
cy5sYXN0U3Ryb25nID09IFVfTEVGVF9UT19SSUdIVCkgewogICAgICAgICAgICAgYXBwZW5kUnVu
KCk7Ci0gICAgICAgICAgICBtX2RpcmVjdGlvbiA9IFJpZ2h0VG9MZWZ0OworICAgICAgICAgICAg
bV9kaXJlY3Rpb24gPSBVX1JJR0hUX1RPX0xFRlQ7CiAgICAgICAgIH0KICAgICAgICAgbV9lb3Ig
PSBtX2xhc3Q7CiAgICAgfQpAQCAtMzY2LDMyICszNjEsMzAgQEAgdm9pZCBCaWRpUmVzb2x2ZXI8
SXRlcmF0b3IsIFJ1bj46Omxvd2VyRXhwbGljaXRFbWJlZGRpbmdMZXZlbChXVEY6OlVuaWNvZGU6
OkRpcmUKIH0KIAogdGVtcGxhdGUgPGNsYXNzIEl0ZXJhdG9yLCBjbGFzcyBSdW4+Ci12b2lkIEJp
ZGlSZXNvbHZlcjxJdGVyYXRvciwgUnVuPjo6cmFpc2VFeHBsaWNpdEVtYmVkZGluZ0xldmVsKFdU
Rjo6VW5pY29kZTo6RGlyZWN0aW9uIGZyb20sIFdURjo6VW5pY29kZTo6RGlyZWN0aW9uIHRvKQor
dm9pZCBCaWRpUmVzb2x2ZXI8SXRlcmF0b3IsIFJ1bj46OnJhaXNlRXhwbGljaXRFbWJlZGRpbmdM
ZXZlbChVQ2hhckRpcmVjdGlvbiBmcm9tLCBVQ2hhckRpcmVjdGlvbiB0bykKIHsKLSAgICB1c2lu
ZyBuYW1lc3BhY2UgV1RGOjpVbmljb2RlOwotCiAgICAgaWYgKCFtX2VtcHR5UnVuICYmIG1fZW9y
ICE9IG1fbGFzdCkgewogICAgICAgICBjaGVja0RpcmVjdGlvbkluTG93ZXJSYWlzZUVtYmVkZGlu
Z0xldmVsKCk7CiAgICAgICAgIC8vIGJpZGkuc29yIC4uLiBiaWRpLmVvciAuLi4gYmlkaS5sYXN0
IGVvcjsgbmVlZCB0byBhcHBlbmQgdGhlIGJpZGkuc29yLWJpZGkuZW9yIHJ1biBvciBleHRlbmQg
aXQgdGhyb3VnaCBiaWRpLmxhc3QKLSAgICAgICAgaWYgKHRvID09IExlZnRUb1JpZ2h0KSB7Cisg
ICAgICAgIGlmICh0byA9PSBVX0xFRlRfVE9fUklHSFQpIHsKICAgICAgICAgICAgIC8vIGJpZGku
c29yIC4uLiBiaWRpLmVvciAuLi4gYmlkaS5sYXN0IEwKLSAgICAgICAgICAgIGlmIChtX3N0YXR1
cy5lb3IgPT0gRXVyb3BlYW5OdW1iZXIpIHsKLSAgICAgICAgICAgICAgICBpZiAobV9zdGF0dXMu
bGFzdFN0cm9uZyAhPSBMZWZ0VG9SaWdodCkgewotICAgICAgICAgICAgICAgICAgICBtX2RpcmVj
dGlvbiA9IEV1cm9wZWFuTnVtYmVyOworICAgICAgICAgICAgaWYgKG1fc3RhdHVzLmVvciA9PSBV
X0VVUk9QRUFOX05VTUJFUikgeworICAgICAgICAgICAgICAgIGlmIChtX3N0YXR1cy5sYXN0U3Ry
b25nICE9IFVfTEVGVF9UT19SSUdIVCkgeworICAgICAgICAgICAgICAgICAgICBtX2RpcmVjdGlv
biA9IFVfRVVST1BFQU5fTlVNQkVSOwogICAgICAgICAgICAgICAgICAgICBhcHBlbmRSdW4oKTsK
ICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9IGVsc2UgaWYgKG1fc3RhdHVzLmVvciA9
PSBBcmFiaWNOdW1iZXIpIHsKLSAgICAgICAgICAgICAgICBtX2RpcmVjdGlvbiA9IEFyYWJpY051
bWJlcjsKKyAgICAgICAgICAgIH0gZWxzZSBpZiAobV9zdGF0dXMuZW9yID09IFVfQVJBQklDX05V
TUJFUikgeworICAgICAgICAgICAgICAgIG1fZGlyZWN0aW9uID0gVV9BUkFCSUNfTlVNQkVSOwog
ICAgICAgICAgICAgICAgIGFwcGVuZFJ1bigpOwotICAgICAgICAgICAgfSBlbHNlIGlmIChtX3N0
YXR1cy5sYXN0U3Ryb25nICE9IExlZnRUb1JpZ2h0ICYmIGZyb20gPT0gTGVmdFRvUmlnaHQpIHsK
KyAgICAgICAgICAgIH0gZWxzZSBpZiAobV9zdGF0dXMubGFzdFN0cm9uZyAhPSBVX0xFRlRfVE9f
UklHSFQgJiYgZnJvbSA9PSBVX0xFRlRfVE9fUklHSFQpIHsKICAgICAgICAgICAgICAgICBhcHBl
bmRSdW4oKTsKLSAgICAgICAgICAgICAgICBtX2RpcmVjdGlvbiA9IExlZnRUb1JpZ2h0OworICAg
ICAgICAgICAgICAgIG1fZGlyZWN0aW9uID0gVV9MRUZUX1RPX1JJR0hUOwogICAgICAgICAgICAg
fQotICAgICAgICB9IGVsc2UgaWYgKG1fc3RhdHVzLmVvciA9PSBBcmFiaWNOdW1iZXIKLSAgICAg
ICAgICAgIHx8IChtX3N0YXR1cy5lb3IgPT0gRXVyb3BlYW5OdW1iZXIgJiYgKG1fc3RhdHVzLmxh
c3RTdHJvbmcgIT0gTGVmdFRvUmlnaHQgfHwgZnJvbSA9PSBSaWdodFRvTGVmdCkpCi0gICAgICAg
ICAgICB8fCAobV9zdGF0dXMuZW9yICE9IEV1cm9wZWFuTnVtYmVyICYmIG1fc3RhdHVzLmxhc3RT
dHJvbmcgPT0gTGVmdFRvUmlnaHQgJiYgZnJvbSA9PSBSaWdodFRvTGVmdCkpIHsKKyAgICAgICAg
fSBlbHNlIGlmIChtX3N0YXR1cy5lb3IgPT0gVV9BUkFCSUNfTlVNQkVSCisgICAgICAgICAgICB8
fCAobV9zdGF0dXMuZW9yID09IFVfRVVST1BFQU5fTlVNQkVSICYmIChtX3N0YXR1cy5sYXN0U3Ry
b25nICE9IFVfTEVGVF9UT19SSUdIVCB8fCBmcm9tID09IFVfUklHSFRfVE9fTEVGVCkpCisgICAg
ICAgICAgICB8fCAobV9zdGF0dXMuZW9yICE9IFVfRVVST1BFQU5fTlVNQkVSICYmIG1fc3RhdHVz
Lmxhc3RTdHJvbmcgPT0gVV9MRUZUX1RPX1JJR0hUICYmIGZyb20gPT0gVV9SSUdIVF9UT19MRUZU
KSkgewogICAgICAgICAgICAgYXBwZW5kUnVuKCk7Ci0gICAgICAgICAgICBtX2RpcmVjdGlvbiA9
IFJpZ2h0VG9MZWZ0OworICAgICAgICAgICAgbV9kaXJlY3Rpb24gPSBVX1JJR0hUX1RPX0xFRlQ7
CiAgICAgICAgIH0KICAgICAgICAgbV9lb3IgPSBtX2xhc3Q7CiAgICAgfQpAQCAtNDEyLDIxICs0
MDUsMTkgQEAgYm9vbCBCaWRpUmVzb2x2ZXI8SXRlcmF0b3IsIFJ1bj46OmNvbW1pdEV4cGxpY2l0
RW1iZWRkaW5nKCkKICAgICAvLyBXZSBzaG91bGQgbmV2ZXIgYWNjcnVlIGVtYmVkZGluZyBsZXZl
bHMgd2hpbGUgc2tpcHBpbmcgb3ZlciBpc29sYXRlZCBjb250ZW50LgogICAgIEFTU0VSVCghaW5J
c29sYXRlKCkgfHwgbV9jdXJyZW50RXhwbGljaXRFbWJlZGRpbmdTZXF1ZW5jZS5pc0VtcHR5KCkp
OwogCi0gICAgdXNpbmcgbmFtZXNwYWNlIFdURjo6VW5pY29kZTsKLQogICAgIHVuc2lnbmVkIGNo
YXIgZnJvbUxldmVsID0gY29udGV4dCgpLT5sZXZlbCgpOwogICAgIFJlZlB0cjxCaWRpQ29udGV4
dD4gdG9Db250ZXh0ID0gY29udGV4dCgpOwogCiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBt
X2N1cnJlbnRFeHBsaWNpdEVtYmVkZGluZ1NlcXVlbmNlLnNpemUoKTsgKytpKSB7CiAgICAgICAg
IEJpZGlFbWJlZGRpbmcgZW1iZWRkaW5nID0gbV9jdXJyZW50RXhwbGljaXRFbWJlZGRpbmdTZXF1
ZW5jZVtpXTsKLSAgICAgICAgaWYgKGVtYmVkZGluZy5kaXJlY3Rpb24oKSA9PSBQb3BEaXJlY3Rp
b25hbEZvcm1hdCkgeworICAgICAgICBpZiAoZW1iZWRkaW5nLmRpcmVjdGlvbigpID09IFVfUE9Q
X0RJUkVDVElPTkFMX0ZPUk1BVCkgewogICAgICAgICAgICAgaWYgKEJpZGlDb250ZXh0KiBwYXJl
bnRDb250ZXh0ID0gdG9Db250ZXh0LT5wYXJlbnQoKSkKICAgICAgICAgICAgICAgICB0b0NvbnRl
eHQgPSBwYXJlbnRDb250ZXh0OwogICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgRGlyZWN0
aW9uIGRpcmVjdGlvbiA9IChlbWJlZGRpbmcuZGlyZWN0aW9uKCkgPT0gUmlnaHRUb0xlZnRFbWJl
ZGRpbmcgfHwgZW1iZWRkaW5nLmRpcmVjdGlvbigpID09IFJpZ2h0VG9MZWZ0T3ZlcnJpZGUpID8g
UmlnaHRUb0xlZnQgOiBMZWZ0VG9SaWdodDsKLSAgICAgICAgICAgIGJvb2wgb3ZlcnJpZGUgPSBl
bWJlZGRpbmcuZGlyZWN0aW9uKCkgPT0gTGVmdFRvUmlnaHRPdmVycmlkZSB8fCBlbWJlZGRpbmcu
ZGlyZWN0aW9uKCkgPT0gUmlnaHRUb0xlZnRPdmVycmlkZTsKKyAgICAgICAgICAgIFVDaGFyRGly
ZWN0aW9uIGRpcmVjdGlvbiA9IChlbWJlZGRpbmcuZGlyZWN0aW9uKCkgPT0gVV9SSUdIVF9UT19M
RUZUX0VNQkVERElORyB8fCBlbWJlZGRpbmcuZGlyZWN0aW9uKCkgPT0gVV9SSUdIVF9UT19MRUZU
X09WRVJSSURFKSA/IFVfUklHSFRfVE9fTEVGVCA6IFVfTEVGVF9UT19SSUdIVDsKKyAgICAgICAg
ICAgIGJvb2wgb3ZlcnJpZGUgPSBlbWJlZGRpbmcuZGlyZWN0aW9uKCkgPT0gVV9MRUZUX1RPX1JJ
R0hUX09WRVJSSURFIHx8IGVtYmVkZGluZy5kaXJlY3Rpb24oKSA9PSBVX1JJR0hUX1RPX0xFRlRf
T1ZFUlJJREU7CiAgICAgICAgICAgICB1bnNpZ25lZCBjaGFyIGxldmVsID0gdG9Db250ZXh0LT5s
ZXZlbCgpOwotICAgICAgICAgICAgaWYgKGRpcmVjdGlvbiA9PSBSaWdodFRvTGVmdCkKKyAgICAg
ICAgICAgIGlmIChkaXJlY3Rpb24gPT0gVV9SSUdIVF9UT19MRUZUKQogICAgICAgICAgICAgICAg
IGxldmVsID0gbmV4dEdyZWF0ZXJPZGRMZXZlbChsZXZlbCk7CiAgICAgICAgICAgICBlbHNlCiAg
ICAgICAgICAgICAgICAgbGV2ZWwgPSBuZXh0R3JlYXRlckV2ZW5MZXZlbChsZXZlbCk7CkBAIC00
MzgsOSArNDI5LDkgQEAgYm9vbCBCaWRpUmVzb2x2ZXI8SXRlcmF0b3IsIFJ1bj46OmNvbW1pdEV4
cGxpY2l0RW1iZWRkaW5nKCkKICAgICB1bnNpZ25lZCBjaGFyIHRvTGV2ZWwgPSB0b0NvbnRleHQt
PmxldmVsKCk7CiAKICAgICBpZiAodG9MZXZlbCA+IGZyb21MZXZlbCkKLSAgICAgICAgcmFpc2VF
eHBsaWNpdEVtYmVkZGluZ0xldmVsKGZyb21MZXZlbCAlIDIgPyBSaWdodFRvTGVmdCA6IExlZnRU
b1JpZ2h0LCB0b0xldmVsICUgMiA/IFJpZ2h0VG9MZWZ0IDogTGVmdFRvUmlnaHQpOworICAgICAg
ICByYWlzZUV4cGxpY2l0RW1iZWRkaW5nTGV2ZWwoZnJvbUxldmVsICUgMiA/IFVfUklHSFRfVE9f
TEVGVCA6IFVfTEVGVF9UT19SSUdIVCwgdG9MZXZlbCAlIDIgPyBVX1JJR0hUX1RPX0xFRlQgOiBV
X0xFRlRfVE9fUklHSFQpOwogICAgIGVsc2UgaWYgKHRvTGV2ZWwgPCBmcm9tTGV2ZWwpCi0gICAg
ICAgIGxvd2VyRXhwbGljaXRFbWJlZGRpbmdMZXZlbChmcm9tTGV2ZWwgJSAyID8gUmlnaHRUb0xl
ZnQgOiBMZWZ0VG9SaWdodCk7CisgICAgICAgIGxvd2VyRXhwbGljaXRFbWJlZGRpbmdMZXZlbChm
cm9tTGV2ZWwgJSAyID8gVV9SSUdIVF9UT19MRUZUIDogVV9MRUZUX1RPX1JJR0hUKTsKIAogICAg
IHNldENvbnRleHQodG9Db250ZXh0KTsKIApAQCAtNDUwLDQxICs0NDEsNDAgQEAgYm9vbCBCaWRp
UmVzb2x2ZXI8SXRlcmF0b3IsIFJ1bj46OmNvbW1pdEV4cGxpY2l0RW1iZWRkaW5nKCkKIH0KIAog
dGVtcGxhdGUgPGNsYXNzIEl0ZXJhdG9yLCBjbGFzcyBSdW4+Ci1pbmxpbmUgdm9pZCBCaWRpUmVz
b2x2ZXI8SXRlcmF0b3IsIFJ1bj46OnVwZGF0ZVN0YXR1c0xhc3RGcm9tQ3VycmVudERpcmVjdGlv
bihXVEY6OlVuaWNvZGU6OkRpcmVjdGlvbiBkaXJDdXJyZW50KQoraW5saW5lIHZvaWQgQmlkaVJl
c29sdmVyPEl0ZXJhdG9yLCBSdW4+Ojp1cGRhdGVTdGF0dXNMYXN0RnJvbUN1cnJlbnREaXJlY3Rp
b24oVUNoYXJEaXJlY3Rpb24gZGlyQ3VycmVudCkKIHsKLSAgICB1c2luZyBuYW1lc3BhY2UgV1RG
OjpVbmljb2RlOwogICAgIHN3aXRjaCAoZGlyQ3VycmVudCkgewotICAgIGNhc2UgRXVyb3BlYW5O
dW1iZXJUZXJtaW5hdG9yOgotICAgICAgICBpZiAobV9zdGF0dXMubGFzdCAhPSBFdXJvcGVhbk51
bWJlcikKLSAgICAgICAgICAgIG1fc3RhdHVzLmxhc3QgPSBFdXJvcGVhbk51bWJlclRlcm1pbmF0
b3I7CisgICAgY2FzZSBVX0VVUk9QRUFOX05VTUJFUl9URVJNSU5BVE9SOgorICAgICAgICBpZiAo
bV9zdGF0dXMubGFzdCAhPSBVX0VVUk9QRUFOX05VTUJFUikKKyAgICAgICAgICAgIG1fc3RhdHVz
Lmxhc3QgPSBVX0VVUk9QRUFOX05VTUJFUl9URVJNSU5BVE9SOwogICAgICAgICBicmVhazsKLSAg
ICBjYXNlIEV1cm9wZWFuTnVtYmVyU2VwYXJhdG9yOgotICAgIGNhc2UgQ29tbW9uTnVtYmVyU2Vw
YXJhdG9yOgotICAgIGNhc2UgU2VnbWVudFNlcGFyYXRvcjoKLSAgICBjYXNlIFdoaXRlU3BhY2VO
ZXV0cmFsOgotICAgIGNhc2UgT3RoZXJOZXV0cmFsOgorICAgIGNhc2UgVV9FVVJPUEVBTl9OVU1C
RVJfU0VQQVJBVE9SOgorICAgIGNhc2UgVV9DT01NT05fTlVNQkVSX1NFUEFSQVRPUjoKKyAgICBj
YXNlIFVfU0VHTUVOVF9TRVBBUkFUT1I6CisgICAgY2FzZSBVX1dISVRFX1NQQUNFX05FVVRSQUw6
CisgICAgY2FzZSBVX09USEVSX05FVVRSQUw6CiAgICAgICAgIHN3aXRjaCAobV9zdGF0dXMubGFz
dCkgewotICAgICAgICBjYXNlIExlZnRUb1JpZ2h0OgotICAgICAgICBjYXNlIFJpZ2h0VG9MZWZ0
OgotICAgICAgICBjYXNlIFJpZ2h0VG9MZWZ0QXJhYmljOgotICAgICAgICBjYXNlIEV1cm9wZWFu
TnVtYmVyOgotICAgICAgICBjYXNlIEFyYWJpY051bWJlcjoKKyAgICAgICAgY2FzZSBVX0xFRlRf
VE9fUklHSFQ6CisgICAgICAgIGNhc2UgVV9SSUdIVF9UT19MRUZUOgorICAgICAgICBjYXNlIFVf
UklHSFRfVE9fTEVGVF9BUkFCSUM6CisgICAgICAgIGNhc2UgVV9FVVJPUEVBTl9OVU1CRVI6Cisg
ICAgICAgIGNhc2UgVV9BUkFCSUNfTlVNQkVSOgogICAgICAgICAgICAgbV9zdGF0dXMubGFzdCA9
IGRpckN1cnJlbnQ7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgZGVmYXVsdDoKLSAgICAg
ICAgICAgIG1fc3RhdHVzLmxhc3QgPSBPdGhlck5ldXRyYWw7CisgICAgICAgICAgICBtX3N0YXR1
cy5sYXN0ID0gVV9PVEhFUl9ORVVUUkFMOwogICAgICAgICB9CiAgICAgICAgIGJyZWFrOwotICAg
IGNhc2UgTm9uU3BhY2luZ01hcms6Ci0gICAgY2FzZSBCb3VuZGFyeU5ldXRyYWw6Ci0gICAgY2Fz
ZSBSaWdodFRvTGVmdEVtYmVkZGluZzoKLSAgICBjYXNlIExlZnRUb1JpZ2h0RW1iZWRkaW5nOgot
ICAgIGNhc2UgUmlnaHRUb0xlZnRPdmVycmlkZToKLSAgICBjYXNlIExlZnRUb1JpZ2h0T3ZlcnJp
ZGU6Ci0gICAgY2FzZSBQb3BEaXJlY3Rpb25hbEZvcm1hdDoKKyAgICBjYXNlIFVfRElSX05PTl9T
UEFDSU5HX01BUks6CisgICAgY2FzZSBVX0JPVU5EQVJZX05FVVRSQUw6CisgICAgY2FzZSBVX1JJ
R0hUX1RPX0xFRlRfRU1CRURESU5HOgorICAgIGNhc2UgVV9MRUZUX1RPX1JJR0hUX0VNQkVERElO
RzoKKyAgICBjYXNlIFVfUklHSFRfVE9fTEVGVF9PVkVSUklERToKKyAgICBjYXNlIFVfTEVGVF9U
T19SSUdIVF9PVkVSUklERToKKyAgICBjYXNlIFVfUE9QX0RJUkVDVElPTkFMX0ZPUk1BVDoKICAg
ICAgICAgLy8gaWdub3JlIHRoZXNlCiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgRXVyb3BlYW5O
dW1iZXI6CisgICAgY2FzZSBVX0VVUk9QRUFOX05VTUJFUjoKICAgICAgICAgLy8gZmFsbCB0aHJv
dWdoCiAgICAgZGVmYXVsdDoKICAgICAgICAgbV9zdGF0dXMubGFzdCA9IGRpckN1cnJlbnQ7CkBA
IC01MzEsOSArNTIxLDcgQEAgaW5saW5lIHZvaWQgQmlkaVJlc29sdmVyPEl0ZXJhdG9yLCBSdW4+
OjpyZW9yZGVyUnVuc0Zyb21MZXZlbHMoKQogdGVtcGxhdGUgPGNsYXNzIEl0ZXJhdG9yLCBjbGFz
cyBSdW4+CiB2b2lkIEJpZGlSZXNvbHZlcjxJdGVyYXRvciwgUnVuPjo6Y3JlYXRlQmlkaVJ1bnNG
b3JMaW5lKGNvbnN0IEl0ZXJhdG9yJiBlbmQsIFZpc3VhbERpcmVjdGlvbk92ZXJyaWRlIG92ZXJy
aWRlLCBib29sIGhhcmRMaW5lQnJlYWspCiB7Ci0gICAgdXNpbmcgbmFtZXNwYWNlIFdURjo6VW5p
Y29kZTsKLQotICAgIEFTU0VSVChtX2RpcmVjdGlvbiA9PSBPdGhlck5ldXRyYWwpOworICAgIEFT
U0VSVChtX2RpcmVjdGlvbiA9PSBVX09USEVSX05FVVRSQUwpOwogCiAgICAgaWYgKG92ZXJyaWRl
ICE9IE5vVmlzdWFsT3ZlcnJpZGUpIHsKICAgICAgICAgbV9lbXB0eVJ1biA9IGZhbHNlOwpAQCAt
NTQzLDcgKzUzMSw3IEBAIHZvaWQgQmlkaVJlc29sdmVyPEl0ZXJhdG9yLCBSdW4+OjpjcmVhdGVC
aWRpUnVuc0ZvckxpbmUoY29uc3QgSXRlcmF0b3ImIGVuZCwgVmlzCiAgICAgICAgICAgICBtX2Vv
ciA9IG1fY3VycmVudDsKICAgICAgICAgICAgIGluY3JlbWVudCgpOwogICAgICAgICB9Ci0gICAg
ICAgIG1fZGlyZWN0aW9uID0gb3ZlcnJpZGUgPT0gVmlzdWFsTGVmdFRvUmlnaHRPdmVycmlkZSA/
IExlZnRUb1JpZ2h0IDogUmlnaHRUb0xlZnQ7CisgICAgICAgIG1fZGlyZWN0aW9uID0gb3ZlcnJp
ZGUgPT0gVmlzdWFsTGVmdFRvUmlnaHRPdmVycmlkZSA/IFVfTEVGVF9UT19SSUdIVCA6IFVfUklH
SFRfVE9fTEVGVDsKICAgICAgICAgYXBwZW5kUnVuKCk7CiAgICAgICAgIG1fcnVucy5zZXRMb2dp
Y2FsbHlMYXN0UnVuKG1fcnVucy5sYXN0UnVuKCkpOwogICAgICAgICBpZiAob3ZlcnJpZGUgPT0g
VmlzdWFsUmlnaHRUb0xlZnRPdmVycmlkZSkKQEAgLTU2MCw3ICs1NDgsNyBAQCB2b2lkIEJpZGlS
ZXNvbHZlcjxJdGVyYXRvciwgUnVuPjo6Y3JlYXRlQmlkaVJ1bnNGb3JMaW5lKGNvbnN0IEl0ZXJh
dG9yJiBlbmQsIFZpcwogICAgIEJpZGlSZXNvbHZlcjxJdGVyYXRvciwgUnVuPiBzdGF0ZUF0RW5k
OwogCiAgICAgd2hpbGUgKHRydWUpIHsKLSAgICAgICAgRGlyZWN0aW9uIGRpckN1cnJlbnQ7Cisg
ICAgICAgIFVDaGFyRGlyZWN0aW9uIGRpckN1cnJlbnQ7CiAgICAgICAgIGlmIChwYXN0RW5kICYm
IChoYXJkTGluZUJyZWFrIHx8IG1fY3VycmVudC5hdEVuZCgpKSkgewogICAgICAgICAgICAgQmlk
aUNvbnRleHQqIGMgPSBjb250ZXh0KCk7CiAgICAgICAgICAgICBpZiAoaGFyZExpbmVCcmVhaykg
ewpAQCAtNTgyLDgxICs1NzAsODEgQEAgdm9pZCBCaWRpUmVzb2x2ZXI8SXRlcmF0b3IsIFJ1bj46
OmNyZWF0ZUJpZGlSdW5zRm9yTGluZShjb25zdCBJdGVyYXRvciYgZW5kLCBWaXMKICAgICAgICAg
fSBlbHNlIHsKICAgICAgICAgICAgIGRpckN1cnJlbnQgPSBtX2N1cnJlbnQuZGlyZWN0aW9uKCk7
CiAgICAgICAgICAgICBpZiAoY29udGV4dCgpLT5vdmVycmlkZSgpCi0gICAgICAgICAgICAgICAg
ICAgICYmIGRpckN1cnJlbnQgIT0gUmlnaHRUb0xlZnRFbWJlZGRpbmcKLSAgICAgICAgICAgICAg
ICAgICAgJiYgZGlyQ3VycmVudCAhPSBMZWZ0VG9SaWdodEVtYmVkZGluZwotICAgICAgICAgICAg
ICAgICAgICAmJiBkaXJDdXJyZW50ICE9IFJpZ2h0VG9MZWZ0T3ZlcnJpZGUKLSAgICAgICAgICAg
ICAgICAgICAgJiYgZGlyQ3VycmVudCAhPSBMZWZ0VG9SaWdodE92ZXJyaWRlCi0gICAgICAgICAg
ICAgICAgICAgICYmIGRpckN1cnJlbnQgIT0gUG9wRGlyZWN0aW9uYWxGb3JtYXQpCisgICAgICAg
ICAgICAgICAgICAgICYmIGRpckN1cnJlbnQgIT0gVV9SSUdIVF9UT19MRUZUX0VNQkVERElORwor
ICAgICAgICAgICAgICAgICAgICAmJiBkaXJDdXJyZW50ICE9IFVfTEVGVF9UT19SSUdIVF9FTUJF
RERJTkcKKyAgICAgICAgICAgICAgICAgICAgJiYgZGlyQ3VycmVudCAhPSBVX1JJR0hUX1RPX0xF
RlRfT1ZFUlJJREUKKyAgICAgICAgICAgICAgICAgICAgJiYgZGlyQ3VycmVudCAhPSBVX0xFRlRf
VE9fUklHSFRfT1ZFUlJJREUKKyAgICAgICAgICAgICAgICAgICAgJiYgZGlyQ3VycmVudCAhPSBV
X1BPUF9ESVJFQ1RJT05BTF9GT1JNQVQpCiAgICAgICAgICAgICAgICAgZGlyQ3VycmVudCA9IGNv
bnRleHQoKS0+ZGlyKCk7Ci0gICAgICAgICAgICBlbHNlIGlmIChkaXJDdXJyZW50ID09IE5vblNw
YWNpbmdNYXJrKQorICAgICAgICAgICAgZWxzZSBpZiAoZGlyQ3VycmVudCA9PSBVX0RJUl9OT05f
U1BBQ0lOR19NQVJLKQogICAgICAgICAgICAgICAgIGRpckN1cnJlbnQgPSBtX3N0YXR1cy5sYXN0
OwogICAgICAgICB9CiAKICAgICAgICAgLy8gV2UgaWdub3JlIGFsbCBjaGFyYWN0ZXIgZGlyZWN0
aW9uYWxpdHkgd2hpbGUgaW4gdW5pY29kZS1iaWRpOiBpc29sYXRlIHNwYW5zLgogICAgICAgICAv
LyBXZSdsbCBoYW5kbGUgb3JkZXJpbmcgdGhlIGlzb2xhdGVkIGNoYXJhY3RlcnMgaW4gYSBzZWNv
bmQgcGFzcy4KICAgICAgICAgaWYgKGluSXNvbGF0ZSgpKQotICAgICAgICAgICAgZGlyQ3VycmVu
dCA9IE90aGVyTmV1dHJhbDsKKyAgICAgICAgICAgIGRpckN1cnJlbnQgPSBVX09USEVSX05FVVRS
QUw7CiAKLSAgICAgICAgQVNTRVJUKG1fc3RhdHVzLmVvciAhPSBPdGhlck5ldXRyYWwgfHwgbV9l
b3IuYXRFbmQoKSk7CisgICAgICAgIEFTU0VSVChtX3N0YXR1cy5lb3IgIT0gVV9PVEhFUl9ORVVU
UkFMIHx8IG1fZW9yLmF0RW5kKCkpOwogICAgICAgICBzd2l0Y2ggKGRpckN1cnJlbnQpIHsKIAog
ICAgICAgICAvLyBlbWJlZGRpbmcgYW5kIG92ZXJyaWRlcyAoWDEtWDkgaW4gdGhlIEJpZGkgc3Bl
Y3MpCi0gICAgICAgIGNhc2UgUmlnaHRUb0xlZnRFbWJlZGRpbmc6Ci0gICAgICAgIGNhc2UgTGVm
dFRvUmlnaHRFbWJlZGRpbmc6Ci0gICAgICAgIGNhc2UgUmlnaHRUb0xlZnRPdmVycmlkZToKLSAg
ICAgICAgY2FzZSBMZWZ0VG9SaWdodE92ZXJyaWRlOgotICAgICAgICBjYXNlIFBvcERpcmVjdGlv
bmFsRm9ybWF0OgorICAgICAgICBjYXNlIFVfUklHSFRfVE9fTEVGVF9FTUJFRERJTkc6CisgICAg
ICAgIGNhc2UgVV9MRUZUX1RPX1JJR0hUX0VNQkVERElORzoKKyAgICAgICAgY2FzZSBVX1JJR0hU
X1RPX0xFRlRfT1ZFUlJJREU6CisgICAgICAgIGNhc2UgVV9MRUZUX1RPX1JJR0hUX09WRVJSSURF
OgorICAgICAgICBjYXNlIFVfUE9QX0RJUkVDVElPTkFMX0ZPUk1BVDoKICAgICAgICAgICAgIGVt
YmVkKGRpckN1cnJlbnQsIEZyb21Vbmljb2RlKTsKICAgICAgICAgICAgIGNvbW1pdEV4cGxpY2l0
RW1iZWRkaW5nKCk7CiAgICAgICAgICAgICBicmVhazsKIAogICAgICAgICAvLyBzdHJvbmcgdHlw
ZXMKLSAgICAgICAgY2FzZSBMZWZ0VG9SaWdodDoKKyAgICAgICAgY2FzZSBVX0xFRlRfVE9fUklH
SFQ6CiAgICAgICAgICAgICBzd2l0Y2gobV9zdGF0dXMubGFzdCkgewotICAgICAgICAgICAgICAg
IGNhc2UgUmlnaHRUb0xlZnQ6Ci0gICAgICAgICAgICAgICAgY2FzZSBSaWdodFRvTGVmdEFyYWJp
YzoKLSAgICAgICAgICAgICAgICBjYXNlIEV1cm9wZWFuTnVtYmVyOgotICAgICAgICAgICAgICAg
IGNhc2UgQXJhYmljTnVtYmVyOgotICAgICAgICAgICAgICAgICAgICBpZiAobV9zdGF0dXMubGFz
dCAhPSBFdXJvcGVhbk51bWJlciB8fCBtX3N0YXR1cy5sYXN0U3Ryb25nICE9IExlZnRUb1JpZ2h0
KQorICAgICAgICAgICAgICAgIGNhc2UgVV9SSUdIVF9UT19MRUZUOgorICAgICAgICAgICAgICAg
IGNhc2UgVV9SSUdIVF9UT19MRUZUX0FSQUJJQzoKKyAgICAgICAgICAgICAgICBjYXNlIFVfRVVS
T1BFQU5fTlVNQkVSOgorICAgICAgICAgICAgICAgIGNhc2UgVV9BUkFCSUNfTlVNQkVSOgorICAg
ICAgICAgICAgICAgICAgICBpZiAobV9zdGF0dXMubGFzdCAhPSBVX0VVUk9QRUFOX05VTUJFUiB8
fCBtX3N0YXR1cy5sYXN0U3Ryb25nICE9IFVfTEVGVF9UT19SSUdIVCkKICAgICAgICAgICAgICAg
ICAgICAgICAgIGFwcGVuZFJ1bigpOwogICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAg
ICAgICAgICAgICBjYXNlIExlZnRUb1JpZ2h0OgorICAgICAgICAgICAgICAgIGNhc2UgVV9MRUZU
X1RPX1JJR0hUOgogICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICBj
YXNlIEV1cm9wZWFuTnVtYmVyU2VwYXJhdG9yOgotICAgICAgICAgICAgICAgIGNhc2UgRXVyb3Bl
YW5OdW1iZXJUZXJtaW5hdG9yOgotICAgICAgICAgICAgICAgIGNhc2UgQ29tbW9uTnVtYmVyU2Vw
YXJhdG9yOgotICAgICAgICAgICAgICAgIGNhc2UgQm91bmRhcnlOZXV0cmFsOgotICAgICAgICAg
ICAgICAgIGNhc2UgQmxvY2tTZXBhcmF0b3I6Ci0gICAgICAgICAgICAgICAgY2FzZSBTZWdtZW50
U2VwYXJhdG9yOgotICAgICAgICAgICAgICAgIGNhc2UgV2hpdGVTcGFjZU5ldXRyYWw6Ci0gICAg
ICAgICAgICAgICAgY2FzZSBPdGhlck5ldXRyYWw6Ci0gICAgICAgICAgICAgICAgICAgIGlmICht
X3N0YXR1cy5lb3IgPT0gRXVyb3BlYW5OdW1iZXIpIHsKLSAgICAgICAgICAgICAgICAgICAgICAg
IGlmIChtX3N0YXR1cy5sYXN0U3Ryb25nICE9IExlZnRUb1JpZ2h0KSB7CisgICAgICAgICAgICAg
ICAgY2FzZSBVX0VVUk9QRUFOX05VTUJFUl9TRVBBUkFUT1I6CisgICAgICAgICAgICAgICAgY2Fz
ZSBVX0VVUk9QRUFOX05VTUJFUl9URVJNSU5BVE9SOgorICAgICAgICAgICAgICAgIGNhc2UgVV9D
T01NT05fTlVNQkVSX1NFUEFSQVRPUjoKKyAgICAgICAgICAgICAgICBjYXNlIFVfQk9VTkRBUllf
TkVVVFJBTDoKKyAgICAgICAgICAgICAgICBjYXNlIFVfQkxPQ0tfU0VQQVJBVE9SOgorICAgICAg
ICAgICAgICAgIGNhc2UgVV9TRUdNRU5UX1NFUEFSQVRPUjoKKyAgICAgICAgICAgICAgICBjYXNl
IFVfV0hJVEVfU1BBQ0VfTkVVVFJBTDoKKyAgICAgICAgICAgICAgICBjYXNlIFVfT1RIRVJfTkVV
VFJBTDoKKyAgICAgICAgICAgICAgICAgICAgaWYgKG1fc3RhdHVzLmVvciA9PSBVX0VVUk9QRUFO
X05VTUJFUikgeworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG1fc3RhdHVzLmxhc3RTdHJv
bmcgIT0gVV9MRUZUX1RPX1JJR0hUKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8g
dGhlIG51bWJlcnMgbmVlZCB0byBiZSBvbiBhIGhpZ2hlciBlbWJlZGRpbmcgbGV2ZWwsIHNvIGxl
dCdzIGNsb3NlIHRoYXQgcnVuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9kaXJlY3Rp
b24gPSBFdXJvcGVhbk51bWJlcjsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX2RpcmVj
dGlvbiA9IFVfRVVST1BFQU5fTlVNQkVSOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFw
cGVuZFJ1bigpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjb250ZXh0KCktPmRp
cigpICE9IExlZnRUb1JpZ2h0KSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGNv
bnRleHQoKS0+ZGlyKCkgIT0gVV9MRUZUX1RPX1JJR0hUKSB7CiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIC8vIHRoZSBuZXV0cmFscyB0YWtlIHRoZSBlbWJlZGRpbmcgZGlyZWN0aW9u
LCB3aGljaCBpcyBSCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fZW9yID0gbV9s
YXN0OwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX2RpcmVjdGlvbiA9IFJpZ2h0
VG9MZWZ0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX2RpcmVjdGlvbiA9IFVf
UklHSFRfVE9fTEVGVDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXBwZW5kUnVu
KCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAg
ICAgfQotICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKG1fc3RhdHVzLmVvciA9PSBBcmFi
aWNOdW1iZXIpIHsKKyAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChtX3N0YXR1cy5lb3Ig
PT0gVV9BUkFCSUNfTlVNQkVSKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAvLyBBcmFiaWMg
bnVtYmVycyBhcmUgYWx3YXlzIG9uIGEgaGlnaGVyIGVtYmVkZGluZyBsZXZlbCwgc28gbGV0J3Mg
Y2xvc2UgdGhhdCBydW4KLSAgICAgICAgICAgICAgICAgICAgICAgIG1fZGlyZWN0aW9uID0gQXJh
YmljTnVtYmVyOworICAgICAgICAgICAgICAgICAgICAgICAgbV9kaXJlY3Rpb24gPSBVX0FSQUJJ
Q19OVU1CRVI7CiAgICAgICAgICAgICAgICAgICAgICAgICBhcHBlbmRSdW4oKTsKLSAgICAgICAg
ICAgICAgICAgICAgICAgIGlmIChjb250ZXh0KCktPmRpcigpICE9IExlZnRUb1JpZ2h0KSB7Cisg
ICAgICAgICAgICAgICAgICAgICAgICBpZiAoY29udGV4dCgpLT5kaXIoKSAhPSBVX0xFRlRfVE9f
UklHSFQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB0aGUgbmV1dHJhbHMgdGFr
ZSB0aGUgZW1iZWRkaW5nIGRpcmVjdGlvbiwgd2hpY2ggaXMgUgogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIG1fZW9yID0gbV9sYXN0OwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1f
ZGlyZWN0aW9uID0gUmlnaHRUb0xlZnQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9k
aXJlY3Rpb24gPSBVX1JJR0hUX1RPX0xFRlQ7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
YXBwZW5kUnVuKCk7CiAgICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAg
ICAgIH0gZWxzZSBpZiAobV9zdGF0dXMubGFzdFN0cm9uZyAhPSBMZWZ0VG9SaWdodCkgeworICAg
ICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKG1fc3RhdHVzLmxhc3RTdHJvbmcgIT0gVV9MRUZU
X1RPX1JJR0hUKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAvL2xhc3Qgc3R1ZmYgdGFrZXMg
ZW1iZWRkaW5nIGRpcgotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGNvbnRleHQoKS0+ZGly
KCkgPT0gUmlnaHRUb0xlZnQpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjb250ZXh0
KCktPmRpcigpID09IFVfUklHSFRfVE9fTEVGVCkgewogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIG1fZW9yID0gbV9sYXN0OyAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX2RpcmVj
dGlvbiA9IFJpZ2h0VG9MZWZ0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fZGlyZWN0
aW9uID0gVV9SSUdIVF9UT19MRUZUOwogICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAg
ICAgICAgICAgICAgICAgICAgYXBwZW5kUnVuKCk7CiAgICAgICAgICAgICAgICAgICAgIH0KQEAg
LTY2NCwzNiArNjUyLDM2IEBAIHZvaWQgQmlkaVJlc29sdmVyPEl0ZXJhdG9yLCBSdW4+OjpjcmVh
dGVCaWRpUnVuc0ZvckxpbmUoY29uc3QgSXRlcmF0b3ImIGVuZCwgVmlzCiAgICAgICAgICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgbV9lb3IgPSBtX2N1cnJl
bnQ7Ci0gICAgICAgICAgICBtX3N0YXR1cy5lb3IgPSBMZWZ0VG9SaWdodDsKLSAgICAgICAgICAg
IG1fc3RhdHVzLmxhc3RTdHJvbmcgPSBMZWZ0VG9SaWdodDsKLSAgICAgICAgICAgIG1fZGlyZWN0
aW9uID0gTGVmdFRvUmlnaHQ7CisgICAgICAgICAgICBtX3N0YXR1cy5lb3IgPSBVX0xFRlRfVE9f
UklHSFQ7CisgICAgICAgICAgICBtX3N0YXR1cy5sYXN0U3Ryb25nID0gVV9MRUZUX1RPX1JJR0hU
OworICAgICAgICAgICAgbV9kaXJlY3Rpb24gPSBVX0xFRlRfVE9fUklHSFQ7CiAgICAgICAgICAg
ICBicmVhazsKLSAgICAgICAgY2FzZSBSaWdodFRvTGVmdEFyYWJpYzoKLSAgICAgICAgY2FzZSBS
aWdodFRvTGVmdDoKKyAgICAgICAgY2FzZSBVX1JJR0hUX1RPX0xFRlRfQVJBQklDOgorICAgICAg
ICBjYXNlIFVfUklHSFRfVE9fTEVGVDoKICAgICAgICAgICAgIHN3aXRjaCAobV9zdGF0dXMubGFz
dCkgewotICAgICAgICAgICAgICAgIGNhc2UgTGVmdFRvUmlnaHQ6Ci0gICAgICAgICAgICAgICAg
Y2FzZSBFdXJvcGVhbk51bWJlcjoKLSAgICAgICAgICAgICAgICBjYXNlIEFyYWJpY051bWJlcjoK
KyAgICAgICAgICAgICAgICBjYXNlIFVfTEVGVF9UT19SSUdIVDoKKyAgICAgICAgICAgICAgICBj
YXNlIFVfRVVST1BFQU5fTlVNQkVSOgorICAgICAgICAgICAgICAgIGNhc2UgVV9BUkFCSUNfTlVN
QkVSOgogICAgICAgICAgICAgICAgICAgICBhcHBlbmRSdW4oKTsKLSAgICAgICAgICAgICAgICBj
YXNlIFJpZ2h0VG9MZWZ0OgotICAgICAgICAgICAgICAgIGNhc2UgUmlnaHRUb0xlZnRBcmFiaWM6
CisgICAgICAgICAgICAgICAgY2FzZSBVX1JJR0hUX1RPX0xFRlQ6CisgICAgICAgICAgICAgICAg
Y2FzZSBVX1JJR0hUX1RPX0xFRlRfQVJBQklDOgogICAgICAgICAgICAgICAgICAgICBicmVhazsK
LSAgICAgICAgICAgICAgICBjYXNlIEV1cm9wZWFuTnVtYmVyU2VwYXJhdG9yOgotICAgICAgICAg
ICAgICAgIGNhc2UgRXVyb3BlYW5OdW1iZXJUZXJtaW5hdG9yOgotICAgICAgICAgICAgICAgIGNh
c2UgQ29tbW9uTnVtYmVyU2VwYXJhdG9yOgotICAgICAgICAgICAgICAgIGNhc2UgQm91bmRhcnlO
ZXV0cmFsOgotICAgICAgICAgICAgICAgIGNhc2UgQmxvY2tTZXBhcmF0b3I6Ci0gICAgICAgICAg
ICAgICAgY2FzZSBTZWdtZW50U2VwYXJhdG9yOgotICAgICAgICAgICAgICAgIGNhc2UgV2hpdGVT
cGFjZU5ldXRyYWw6Ci0gICAgICAgICAgICAgICAgY2FzZSBPdGhlck5ldXRyYWw6Ci0gICAgICAg
ICAgICAgICAgICAgIGlmIChtX3N0YXR1cy5lb3IgPT0gRXVyb3BlYW5OdW1iZXIpIHsKLSAgICAg
ICAgICAgICAgICAgICAgICAgIGlmIChtX3N0YXR1cy5sYXN0U3Ryb25nID09IExlZnRUb1JpZ2h0
ICYmIGNvbnRleHQoKS0+ZGlyKCkgPT0gTGVmdFRvUmlnaHQpCisgICAgICAgICAgICAgICAgY2Fz
ZSBVX0VVUk9QRUFOX05VTUJFUl9TRVBBUkFUT1I6CisgICAgICAgICAgICAgICAgY2FzZSBVX0VV
Uk9QRUFOX05VTUJFUl9URVJNSU5BVE9SOgorICAgICAgICAgICAgICAgIGNhc2UgVV9DT01NT05f
TlVNQkVSX1NFUEFSQVRPUjoKKyAgICAgICAgICAgICAgICBjYXNlIFVfQk9VTkRBUllfTkVVVFJB
TDoKKyAgICAgICAgICAgICAgICBjYXNlIFVfQkxPQ0tfU0VQQVJBVE9SOgorICAgICAgICAgICAg
ICAgIGNhc2UgVV9TRUdNRU5UX1NFUEFSQVRPUjoKKyAgICAgICAgICAgICAgICBjYXNlIFVfV0hJ
VEVfU1BBQ0VfTkVVVFJBTDoKKyAgICAgICAgICAgICAgICBjYXNlIFVfT1RIRVJfTkVVVFJBTDoK
KyAgICAgICAgICAgICAgICAgICAgaWYgKG1fc3RhdHVzLmVvciA9PSBVX0VVUk9QRUFOX05VTUJF
UikgeworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG1fc3RhdHVzLmxhc3RTdHJvbmcgPT0g
VV9MRUZUX1RPX1JJR0hUICYmIGNvbnRleHQoKS0+ZGlyKCkgPT0gVV9MRUZUX1RPX1JJR0hUKQog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fZW9yID0gbV9sYXN0OwogICAgICAgICAgICAg
ICAgICAgICAgICAgYXBwZW5kUnVuKCk7Ci0gICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAo
bV9zdGF0dXMuZW9yID09IEFyYWJpY051bWJlcikKKyAgICAgICAgICAgICAgICAgICAgfSBlbHNl
IGlmIChtX3N0YXR1cy5lb3IgPT0gVV9BUkFCSUNfTlVNQkVSKQogICAgICAgICAgICAgICAgICAg
ICAgICAgYXBwZW5kUnVuKCk7Ci0gICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKG1fc3RhdHVz
Lmxhc3RTdHJvbmcgPT0gTGVmdFRvUmlnaHQpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGlm
IChjb250ZXh0KCktPmRpcigpID09IExlZnRUb1JpZ2h0KQorICAgICAgICAgICAgICAgICAgICBl
bHNlIGlmIChtX3N0YXR1cy5sYXN0U3Ryb25nID09IFVfTEVGVF9UT19SSUdIVCkgeworICAgICAg
ICAgICAgICAgICAgICAgICAgaWYgKGNvbnRleHQoKS0+ZGlyKCkgPT0gVV9MRUZUX1RPX1JJR0hU
KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fZW9yID0gbV9sYXN0OwogICAgICAgICAg
ICAgICAgICAgICAgICAgYXBwZW5kUnVuKCk7CiAgICAgICAgICAgICAgICAgICAgIH0KQEAgLTcw
MSwxNDggKzY4OSwxNDggQEAgdm9pZCBCaWRpUmVzb2x2ZXI8SXRlcmF0b3IsIFJ1bj46OmNyZWF0
ZUJpZGlSdW5zRm9yTGluZShjb25zdCBJdGVyYXRvciYgZW5kLCBWaXMKICAgICAgICAgICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBtX2VvciA9IG1fY3VycmVu
dDsKLSAgICAgICAgICAgIG1fc3RhdHVzLmVvciA9IFJpZ2h0VG9MZWZ0OworICAgICAgICAgICAg
bV9zdGF0dXMuZW9yID0gVV9SSUdIVF9UT19MRUZUOwogICAgICAgICAgICAgbV9zdGF0dXMubGFz
dFN0cm9uZyA9IGRpckN1cnJlbnQ7Ci0gICAgICAgICAgICBtX2RpcmVjdGlvbiA9IFJpZ2h0VG9M
ZWZ0OworICAgICAgICAgICAgbV9kaXJlY3Rpb24gPSBVX1JJR0hUX1RPX0xFRlQ7CiAgICAgICAg
ICAgICBicmVhazsKIAogICAgICAgICAgICAgLy8gd2VhayB0eXBlczoKIAotICAgICAgICBjYXNl
IEV1cm9wZWFuTnVtYmVyOgotICAgICAgICAgICAgaWYgKG1fc3RhdHVzLmxhc3RTdHJvbmcgIT0g
UmlnaHRUb0xlZnRBcmFiaWMpIHsKKyAgICAgICAgY2FzZSBVX0VVUk9QRUFOX05VTUJFUjoKKyAg
ICAgICAgICAgIGlmIChtX3N0YXR1cy5sYXN0U3Ryb25nICE9IFVfUklHSFRfVE9fTEVGVF9BUkFC
SUMpIHsKICAgICAgICAgICAgICAgICAvLyBpZiBsYXN0IHN0cm9uZyB3YXMgQUwgY2hhbmdlIEVO
IHRvIEFOCiAgICAgICAgICAgICAgICAgc3dpdGNoIChtX3N0YXR1cy5sYXN0KSB7Ci0gICAgICAg
ICAgICAgICAgICAgIGNhc2UgRXVyb3BlYW5OdW1iZXI6Ci0gICAgICAgICAgICAgICAgICAgIGNh
c2UgTGVmdFRvUmlnaHQ6CisgICAgICAgICAgICAgICAgICAgIGNhc2UgVV9FVVJPUEVBTl9OVU1C
RVI6CisgICAgICAgICAgICAgICAgICAgIGNhc2UgVV9MRUZUX1RPX1JJR0hUOgogICAgICAgICAg
ICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgIGNhc2UgUmlnaHRUb0xl
ZnQ6Ci0gICAgICAgICAgICAgICAgICAgIGNhc2UgUmlnaHRUb0xlZnRBcmFiaWM6Ci0gICAgICAg
ICAgICAgICAgICAgIGNhc2UgQXJhYmljTnVtYmVyOgorICAgICAgICAgICAgICAgICAgICBjYXNl
IFVfUklHSFRfVE9fTEVGVDoKKyAgICAgICAgICAgICAgICAgICAgY2FzZSBVX1JJR0hUX1RPX0xF
RlRfQVJBQklDOgorICAgICAgICAgICAgICAgICAgICBjYXNlIFVfQVJBQklDX05VTUJFUjoKICAg
ICAgICAgICAgICAgICAgICAgICAgIG1fZW9yID0gbV9sYXN0OwogICAgICAgICAgICAgICAgICAg
ICAgICAgYXBwZW5kUnVuKCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBtX2RpcmVjdGlvbiA9
IEV1cm9wZWFuTnVtYmVyOworICAgICAgICAgICAgICAgICAgICAgICAgbV9kaXJlY3Rpb24gPSBV
X0VVUk9QRUFOX05VTUJFUjsKICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAg
ICAgICAgICAgICAgICBjYXNlIEV1cm9wZWFuTnVtYmVyU2VwYXJhdG9yOgotICAgICAgICAgICAg
ICAgICAgICBjYXNlIENvbW1vbk51bWJlclNlcGFyYXRvcjoKLSAgICAgICAgICAgICAgICAgICAg
ICAgIGlmIChtX3N0YXR1cy5lb3IgPT0gRXVyb3BlYW5OdW1iZXIpCisgICAgICAgICAgICAgICAg
ICAgIGNhc2UgVV9FVVJPUEVBTl9OVU1CRVJfU0VQQVJBVE9SOgorICAgICAgICAgICAgICAgICAg
ICBjYXNlIFVfQ09NTU9OX05VTUJFUl9TRVBBUkFUT1I6CisgICAgICAgICAgICAgICAgICAgICAg
ICBpZiAobV9zdGF0dXMuZW9yID09IFVfRVVST1BFQU5fTlVNQkVSKQogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgICAgICBjYXNlIEV1cm9wZWFuTnVt
YmVyVGVybWluYXRvcjoKLSAgICAgICAgICAgICAgICAgICAgY2FzZSBCb3VuZGFyeU5ldXRyYWw6
Ci0gICAgICAgICAgICAgICAgICAgIGNhc2UgQmxvY2tTZXBhcmF0b3I6Ci0gICAgICAgICAgICAg
ICAgICAgIGNhc2UgU2VnbWVudFNlcGFyYXRvcjoKLSAgICAgICAgICAgICAgICAgICAgY2FzZSBX
aGl0ZVNwYWNlTmV1dHJhbDoKLSAgICAgICAgICAgICAgICAgICAgY2FzZSBPdGhlck5ldXRyYWw6
Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiAobV9zdGF0dXMuZW9yID09IEV1cm9wZWFuTnVt
YmVyKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG1fc3RhdHVzLmxhc3RTdHJv
bmcgPT0gUmlnaHRUb0xlZnQpIHsKKyAgICAgICAgICAgICAgICAgICAgY2FzZSBVX0VVUk9QRUFO
X05VTUJFUl9URVJNSU5BVE9SOgorICAgICAgICAgICAgICAgICAgICBjYXNlIFVfQk9VTkRBUllf
TkVVVFJBTDoKKyAgICAgICAgICAgICAgICAgICAgY2FzZSBVX0JMT0NLX1NFUEFSQVRPUjoKKyAg
ICAgICAgICAgICAgICAgICAgY2FzZSBVX1NFR01FTlRfU0VQQVJBVE9SOgorICAgICAgICAgICAg
ICAgICAgICBjYXNlIFVfV0hJVEVfU1BBQ0VfTkVVVFJBTDoKKyAgICAgICAgICAgICAgICAgICAg
Y2FzZSBVX09USEVSX05FVVRSQUw6CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAobV9zdGF0
dXMuZW9yID09IFVfRVVST1BFQU5fTlVNQkVSKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgaWYgKG1fc3RhdHVzLmxhc3RTdHJvbmcgPT0gVV9SSUdIVF9UT19MRUZUKSB7CiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEVOcyBvbiBib3RoIHNpZGVzIGJlaGF2ZSBsaWtl
IFJzLCBzbyB0aGUgbmV1dHJhbHMgc2hvdWxkIGJlIFIuCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIC8vIFRlcm1pbmF0ZSB0aGUgRU4gcnVuLgogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBhcHBlbmRSdW4oKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Ly8gTWFrZSBhbiBSIHJ1bi4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9lb3Ig
PSBtX3N0YXR1cy5sYXN0ID09IEV1cm9wZWFuTnVtYmVyVGVybWluYXRvciA/IG1fbGFzdEJlZm9y
ZUVUIDogbV9sYXN0OwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX2RpcmVjdGlv
biA9IFJpZ2h0VG9MZWZ0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX2VvciA9
IG1fc3RhdHVzLmxhc3QgPT0gVV9FVVJPUEVBTl9OVU1CRVJfVEVSTUlOQVRPUiA/IG1fbGFzdEJl
Zm9yZUVUIDogbV9sYXN0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX2RpcmVj
dGlvbiA9IFVfUklHSFRfVE9fTEVGVDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
YXBwZW5kUnVuKCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEJlZ2luIGEg
bmV3IEVOIHJ1bi4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9kaXJlY3Rpb24g
PSBFdXJvcGVhbk51bWJlcjsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9kaXJl
Y3Rpb24gPSBVX0VVUk9QRUFOX05VTUJFUjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9
Ci0gICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKG1fc3RhdHVzLmVvciA9PSBBcmFi
aWNOdW1iZXIpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAobV9zdGF0dXMu
ZW9yID09IFVfQVJBQklDX05VTUJFUikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8v
IFRlcm1pbmF0ZSB0aGUgQU4gcnVuLgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFwcGVu
ZFJ1bigpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChtX3N0YXR1cy5sYXN0U3Ry
b25nID09IFJpZ2h0VG9MZWZ0IHx8IGNvbnRleHQoKS0+ZGlyKCkgPT0gUmlnaHRUb0xlZnQpIHsK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobV9zdGF0dXMubGFzdFN0cm9uZyA9PSBV
X1JJR0hUX1RPX0xFRlQgfHwgY29udGV4dCgpLT5kaXIoKSA9PSBVX1JJR0hUX1RPX0xFRlQpIHsK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gTWFrZSBhbiBSIHJ1bi4KLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9lb3IgPSBtX3N0YXR1cy5sYXN0ID09IEV1cm9w
ZWFuTnVtYmVyVGVybWluYXRvciA/IG1fbGFzdEJlZm9yZUVUIDogbV9sYXN0OwotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBtX2RpcmVjdGlvbiA9IFJpZ2h0VG9MZWZ0OworICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBtX2VvciA9IG1fc3RhdHVzLmxhc3QgPT0gVV9FVVJP
UEVBTl9OVU1CRVJfVEVSTUlOQVRPUiA/IG1fbGFzdEJlZm9yZUVUIDogbV9sYXN0OworICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBtX2RpcmVjdGlvbiA9IFVfUklHSFRfVE9fTEVGVDsK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXBwZW5kUnVuKCk7CiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIC8vIEJlZ2luIGEgbmV3IEVOIHJ1bi4KLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgbV9kaXJlY3Rpb24gPSBFdXJvcGVhbk51bWJlcjsKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9kaXJlY3Rpb24gPSBVX0VVUk9QRUFOX05VTUJF
UjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgICAg
ICB9IGVsc2UgaWYgKG1fc3RhdHVzLmxhc3RTdHJvbmcgPT0gUmlnaHRUb0xlZnQpIHsKKyAgICAg
ICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAobV9zdGF0dXMubGFzdFN0cm9uZyA9PSBVX1JJ
R0hUX1RPX0xFRlQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBFeHRlbmQgdGhl
IFIgcnVuIHRvIGluY2x1ZGUgdGhlIG5ldXRyYWxzLgotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIG1fZW9yID0gbV9zdGF0dXMubGFzdCA9PSBFdXJvcGVhbk51bWJlclRlcm1pbmF0b3IgPyBt
X2xhc3RCZWZvcmVFVCA6IG1fbGFzdDsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX2Rp
cmVjdGlvbiA9IFJpZ2h0VG9MZWZ0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fZW9y
ID0gbV9zdGF0dXMubGFzdCA9PSBVX0VVUk9QRUFOX05VTUJFUl9URVJNSU5BVE9SID8gbV9sYXN0
QmVmb3JlRVQgOiBtX2xhc3Q7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9kaXJlY3Rp
b24gPSBVX1JJR0hUX1RPX0xFRlQ7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXBwZW5k
UnVuKCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gQmVnaW4gYSBuZXcgRU4gcnVu
LgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fZGlyZWN0aW9uID0gRXVyb3BlYW5OdW1i
ZXI7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9kaXJlY3Rpb24gPSBVX0VVUk9QRUFO
X05VTUJFUjsKICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAg
ZGVmYXVsdDoKICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAg
IH0KICAgICAgICAgICAgICAgICBtX2VvciA9IG1fY3VycmVudDsKLSAgICAgICAgICAgICAgICBt
X3N0YXR1cy5lb3IgPSBFdXJvcGVhbk51bWJlcjsKLSAgICAgICAgICAgICAgICBpZiAobV9kaXJl
Y3Rpb24gPT0gT3RoZXJOZXV0cmFsKQotICAgICAgICAgICAgICAgICAgICBtX2RpcmVjdGlvbiA9
IExlZnRUb1JpZ2h0OworICAgICAgICAgICAgICAgIG1fc3RhdHVzLmVvciA9IFVfRVVST1BFQU5f
TlVNQkVSOworICAgICAgICAgICAgICAgIGlmIChtX2RpcmVjdGlvbiA9PSBVX09USEVSX05FVVRS
QUwpCisgICAgICAgICAgICAgICAgICAgIG1fZGlyZWN0aW9uID0gVV9MRUZUX1RPX1JJR0hUOwog
ICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQotICAgICAgICBjYXNlIEFyYWJp
Y051bWJlcjoKLSAgICAgICAgICAgIGRpckN1cnJlbnQgPSBBcmFiaWNOdW1iZXI7CisgICAgICAg
IGNhc2UgVV9BUkFCSUNfTlVNQkVSOgorICAgICAgICAgICAgZGlyQ3VycmVudCA9IFVfQVJBQklD
X05VTUJFUjsKICAgICAgICAgICAgIHN3aXRjaCAobV9zdGF0dXMubGFzdCkgewotICAgICAgICAg
ICAgICAgIGNhc2UgTGVmdFRvUmlnaHQ6Ci0gICAgICAgICAgICAgICAgICAgIGlmIChjb250ZXh0
KCktPmRpcigpID09IExlZnRUb1JpZ2h0KQorICAgICAgICAgICAgICAgIGNhc2UgVV9MRUZUX1RP
X1JJR0hUOgorICAgICAgICAgICAgICAgICAgICBpZiAoY29udGV4dCgpLT5kaXIoKSA9PSBVX0xF
RlRfVE9fUklHSFQpCiAgICAgICAgICAgICAgICAgICAgICAgICBhcHBlbmRSdW4oKTsKICAgICAg
ICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgY2FzZSBBcmFiaWNOdW1iZXI6
CisgICAgICAgICAgICAgICAgY2FzZSBVX0FSQUJJQ19OVU1CRVI6CiAgICAgICAgICAgICAgICAg
ICAgIGJyZWFrOwotICAgICAgICAgICAgICAgIGNhc2UgUmlnaHRUb0xlZnQ6Ci0gICAgICAgICAg
ICAgICAgY2FzZSBSaWdodFRvTGVmdEFyYWJpYzoKLSAgICAgICAgICAgICAgICBjYXNlIEV1cm9w
ZWFuTnVtYmVyOgorICAgICAgICAgICAgICAgIGNhc2UgVV9SSUdIVF9UT19MRUZUOgorICAgICAg
ICAgICAgICAgIGNhc2UgVV9SSUdIVF9UT19MRUZUX0FSQUJJQzoKKyAgICAgICAgICAgICAgICBj
YXNlIFVfRVVST1BFQU5fTlVNQkVSOgogICAgICAgICAgICAgICAgICAgICBtX2VvciA9IG1fbGFz
dDsKICAgICAgICAgICAgICAgICAgICAgYXBwZW5kUnVuKCk7CiAgICAgICAgICAgICAgICAgICAg
IGJyZWFrOwotICAgICAgICAgICAgICAgIGNhc2UgQ29tbW9uTnVtYmVyU2VwYXJhdG9yOgotICAg
ICAgICAgICAgICAgICAgICBpZiAobV9zdGF0dXMuZW9yID09IEFyYWJpY051bWJlcikKKyAgICAg
ICAgICAgICAgICBjYXNlIFVfQ09NTU9OX05VTUJFUl9TRVBBUkFUT1I6CisgICAgICAgICAgICAg
ICAgICAgIGlmIChtX3N0YXR1cy5lb3IgPT0gVV9BUkFCSUNfTlVNQkVSKQogICAgICAgICAgICAg
ICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgY2FzZSBFdXJvcGVhbk51bWJlclNl
cGFyYXRvcjoKLSAgICAgICAgICAgICAgICBjYXNlIEV1cm9wZWFuTnVtYmVyVGVybWluYXRvcjoK
LSAgICAgICAgICAgICAgICBjYXNlIEJvdW5kYXJ5TmV1dHJhbDoKLSAgICAgICAgICAgICAgICBj
YXNlIEJsb2NrU2VwYXJhdG9yOgotICAgICAgICAgICAgICAgIGNhc2UgU2VnbWVudFNlcGFyYXRv
cjoKLSAgICAgICAgICAgICAgICBjYXNlIFdoaXRlU3BhY2VOZXV0cmFsOgotICAgICAgICAgICAg
ICAgIGNhc2UgT3RoZXJOZXV0cmFsOgotICAgICAgICAgICAgICAgICAgICBpZiAobV9zdGF0dXMu
ZW9yID09IEFyYWJpY051bWJlcgotICAgICAgICAgICAgICAgICAgICAgICAgfHwgKG1fc3RhdHVz
LmVvciA9PSBFdXJvcGVhbk51bWJlciAmJiAobV9zdGF0dXMubGFzdFN0cm9uZyA9PSBSaWdodFRv
TGVmdCB8fCBjb250ZXh0KCktPmRpcigpID09IFJpZ2h0VG9MZWZ0KSkKLSAgICAgICAgICAgICAg
ICAgICAgICAgIHx8IChtX3N0YXR1cy5lb3IgIT0gRXVyb3BlYW5OdW1iZXIgJiYgbV9zdGF0dXMu
bGFzdFN0cm9uZyA9PSBMZWZ0VG9SaWdodCAmJiBjb250ZXh0KCktPmRpcigpID09IFJpZ2h0VG9M
ZWZ0KSkgeworICAgICAgICAgICAgICAgIGNhc2UgVV9FVVJPUEVBTl9OVU1CRVJfU0VQQVJBVE9S
OgorICAgICAgICAgICAgICAgIGNhc2UgVV9FVVJPUEVBTl9OVU1CRVJfVEVSTUlOQVRPUjoKKyAg
ICAgICAgICAgICAgICBjYXNlIFVfQk9VTkRBUllfTkVVVFJBTDoKKyAgICAgICAgICAgICAgICBj
YXNlIFVfQkxPQ0tfU0VQQVJBVE9SOgorICAgICAgICAgICAgICAgIGNhc2UgVV9TRUdNRU5UX1NF
UEFSQVRPUjoKKyAgICAgICAgICAgICAgICBjYXNlIFVfV0hJVEVfU1BBQ0VfTkVVVFJBTDoKKyAg
ICAgICAgICAgICAgICBjYXNlIFVfT1RIRVJfTkVVVFJBTDoKKyAgICAgICAgICAgICAgICAgICAg
aWYgKG1fc3RhdHVzLmVvciA9PSBVX0FSQUJJQ19OVU1CRVIKKyAgICAgICAgICAgICAgICAgICAg
ICAgIHx8IChtX3N0YXR1cy5lb3IgPT0gVV9FVVJPUEVBTl9OVU1CRVIgJiYgKG1fc3RhdHVzLmxh
c3RTdHJvbmcgPT0gVV9SSUdIVF9UT19MRUZUIHx8IGNvbnRleHQoKS0+ZGlyKCkgPT0gVV9SSUdI
VF9UT19MRUZUKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIHx8IChtX3N0YXR1cy5lb3IgIT0g
VV9FVVJPUEVBTl9OVU1CRVIgJiYgbV9zdGF0dXMubGFzdFN0cm9uZyA9PSBVX0xFRlRfVE9fUklH
SFQgJiYgY29udGV4dCgpLT5kaXIoKSA9PSBVX1JJR0hUX1RPX0xFRlQpKSB7CiAgICAgICAgICAg
ICAgICAgICAgICAgICAvLyBUZXJtaW5hdGUgdGhlIHJ1biBiZWZvcmUgdGhlIG5ldXRyYWxzLgog
ICAgICAgICAgICAgICAgICAgICAgICAgYXBwZW5kUnVuKCk7CiAgICAgICAgICAgICAgICAgICAg
ICAgICAvLyBCZWdpbiBhbiBSIHJ1biBmb3IgdGhlIG5ldXRyYWxzLgotICAgICAgICAgICAgICAg
ICAgICAgICAgbV9kaXJlY3Rpb24gPSBSaWdodFRvTGVmdDsKLSAgICAgICAgICAgICAgICAgICAg
fSBlbHNlIGlmIChtX2RpcmVjdGlvbiA9PSBPdGhlck5ldXRyYWwpCi0gICAgICAgICAgICAgICAg
ICAgICAgICBtX2RpcmVjdGlvbiA9IG1fc3RhdHVzLmxhc3RTdHJvbmcgPT0gTGVmdFRvUmlnaHQg
PyBMZWZ0VG9SaWdodCA6IFJpZ2h0VG9MZWZ0OworICAgICAgICAgICAgICAgICAgICAgICAgbV9k
aXJlY3Rpb24gPSBVX1JJR0hUX1RPX0xFRlQ7CisgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBp
ZiAobV9kaXJlY3Rpb24gPT0gVV9PVEhFUl9ORVVUUkFMKQorICAgICAgICAgICAgICAgICAgICAg
ICAgbV9kaXJlY3Rpb24gPSBtX3N0YXR1cy5sYXN0U3Ryb25nID09IFVfTEVGVF9UT19SSUdIVCA/
IFVfTEVGVF9UT19SSUdIVCA6IFVfUklHSFRfVE9fTEVGVDsKICAgICAgICAgICAgICAgICAgICAg
bV9lb3IgPSBtX2xhc3Q7CiAgICAgICAgICAgICAgICAgICAgIGFwcGVuZFJ1bigpOwogICAgICAg
ICAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAg
ICAgfQogICAgICAgICAgICAgbV9lb3IgPSBtX2N1cnJlbnQ7Ci0gICAgICAgICAgICBtX3N0YXR1
cy5lb3IgPSBBcmFiaWNOdW1iZXI7Ci0gICAgICAgICAgICBpZiAobV9kaXJlY3Rpb24gPT0gT3Ro
ZXJOZXV0cmFsKQotICAgICAgICAgICAgICAgIG1fZGlyZWN0aW9uID0gQXJhYmljTnVtYmVyOwor
ICAgICAgICAgICAgbV9zdGF0dXMuZW9yID0gVV9BUkFCSUNfTlVNQkVSOworICAgICAgICAgICAg
aWYgKG1fZGlyZWN0aW9uID09IFVfT1RIRVJfTkVVVFJBTCkKKyAgICAgICAgICAgICAgICBtX2Rp
cmVjdGlvbiA9IFVfQVJBQklDX05VTUJFUjsKICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBj
YXNlIEV1cm9wZWFuTnVtYmVyU2VwYXJhdG9yOgotICAgICAgICBjYXNlIENvbW1vbk51bWJlclNl
cGFyYXRvcjoKKyAgICAgICAgY2FzZSBVX0VVUk9QRUFOX05VTUJFUl9TRVBBUkFUT1I6CisgICAg
ICAgIGNhc2UgVV9DT01NT05fTlVNQkVSX1NFUEFSQVRPUjoKICAgICAgICAgICAgIGJyZWFrOwot
ICAgICAgICBjYXNlIEV1cm9wZWFuTnVtYmVyVGVybWluYXRvcjoKLSAgICAgICAgICAgIGlmICht
X3N0YXR1cy5sYXN0ID09IEV1cm9wZWFuTnVtYmVyKSB7Ci0gICAgICAgICAgICAgICAgZGlyQ3Vy
cmVudCA9IEV1cm9wZWFuTnVtYmVyOworICAgICAgICBjYXNlIFVfRVVST1BFQU5fTlVNQkVSX1RF
Uk1JTkFUT1I6CisgICAgICAgICAgICBpZiAobV9zdGF0dXMubGFzdCA9PSBVX0VVUk9QRUFOX05V
TUJFUikgeworICAgICAgICAgICAgICAgIGRpckN1cnJlbnQgPSBVX0VVUk9QRUFOX05VTUJFUjsK
ICAgICAgICAgICAgICAgICBtX2VvciA9IG1fY3VycmVudDsKICAgICAgICAgICAgICAgICBtX3N0
YXR1cy5lb3IgPSBkaXJDdXJyZW50OwotICAgICAgICAgICAgfSBlbHNlIGlmIChtX3N0YXR1cy5s
YXN0ICE9IEV1cm9wZWFuTnVtYmVyVGVybWluYXRvcikKKyAgICAgICAgICAgIH0gZWxzZSBpZiAo
bV9zdGF0dXMubGFzdCAhPSBVX0VVUk9QRUFOX05VTUJFUl9URVJNSU5BVE9SKQogICAgICAgICAg
ICAgICAgIG1fbGFzdEJlZm9yZUVUID0gbV9lbXB0eVJ1biA/IG1fZW9yIDogbV9sYXN0OwogICAg
ICAgICAgICAgYnJlYWs7CiAKICAgICAgICAgLy8gYm91bmRhcnkgbmV1dHJhbHMgc2hvdWxkIGJl
IGlnbm9yZWQKLSAgICAgICAgY2FzZSBCb3VuZGFyeU5ldXRyYWw6CisgICAgICAgIGNhc2UgVV9C
T1VOREFSWV9ORVVUUkFMOgogICAgICAgICAgICAgaWYgKG1fZW9yID09IG1fbGFzdCkKICAgICAg
ICAgICAgICAgICBtX2VvciA9IG1fY3VycmVudDsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICAgICAgLy8gbmV1dHJhbHMKLSAgICAgICAgY2FzZSBCbG9ja1NlcGFyYXRvcjoKLSAgICAgICAg
ICAgIC8vICMjIyB3aGF0IGRvIHdlIGRvIHdpdGggbmV3bGluZSBhbmQgcGFyYWdyYXBoIHNlcGVy
YXRvcnMgdGhhdCBjb21lIHRvIGhlcmU/CisgICAgICAgIGNhc2UgVV9CTE9DS19TRVBBUkFUT1I6
CisgICAgICAgICAgICAvLyBGSVhNRTogV2hhdCBkbyB3ZSBkbyB3aXRoIG5ld2xpbmUgYW5kIHBh
cmFncmFwaCBzZXBhcmF0b3JzIHRoYXQgY29tZSB0byBoZXJlPwogICAgICAgICAgICAgYnJlYWs7
Ci0gICAgICAgIGNhc2UgU2VnbWVudFNlcGFyYXRvcjoKLSAgICAgICAgICAgIC8vICMjIyBpbXBs
ZW1lbnQgcnVsZSBMMQorICAgICAgICBjYXNlIFVfU0VHTUVOVF9TRVBBUkFUT1I6CisgICAgICAg
ICAgICAvLyBGSVhNRTogSW1wbGVtZW50IHJ1bGUgTDEuCiAgICAgICAgICAgICBicmVhazsKLSAg
ICAgICAgY2FzZSBXaGl0ZVNwYWNlTmV1dHJhbDoKKyAgICAgICAgY2FzZSBVX1dISVRFX1NQQUNF
X05FVVRSQUw6CiAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBPdGhlck5ldXRyYWw6
CisgICAgICAgIGNhc2UgVV9PVEhFUl9ORVVUUkFMOgogICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICBicmVhazsKQEAgLTg1MiwxMyArODQwLDEzIEBAIHZv
aWQgQmlkaVJlc29sdmVyPEl0ZXJhdG9yLCBSdW4+OjpjcmVhdGVCaWRpUnVuc0ZvckxpbmUoY29u
c3QgSXRlcmF0b3ImIGVuZCwgVmlzCiAgICAgICAgICAgICBpZiAoIW1fcmVhY2hlZEVuZE9mTGlu
ZSkgewogICAgICAgICAgICAgICAgIG1fZW9yID0gZW5kT2ZMaW5lOwogICAgICAgICAgICAgICAg
IHN3aXRjaCAobV9zdGF0dXMuZW9yKSB7Ci0gICAgICAgICAgICAgICAgICAgIGNhc2UgTGVmdFRv
UmlnaHQ6Ci0gICAgICAgICAgICAgICAgICAgIGNhc2UgUmlnaHRUb0xlZnQ6Ci0gICAgICAgICAg
ICAgICAgICAgIGNhc2UgQXJhYmljTnVtYmVyOgorICAgICAgICAgICAgICAgICAgICBjYXNlIFVf
TEVGVF9UT19SSUdIVDoKKyAgICAgICAgICAgICAgICAgICAgY2FzZSBVX1JJR0hUX1RPX0xFRlQ6
CisgICAgICAgICAgICAgICAgICAgIGNhc2UgVV9BUkFCSUNfTlVNQkVSOgogICAgICAgICAgICAg
ICAgICAgICAgICAgbV9kaXJlY3Rpb24gPSBtX3N0YXR1cy5lb3I7CiAgICAgICAgICAgICAgICAg
ICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAgY2FzZSBFdXJvcGVhbk51bWJlcjoK
LSAgICAgICAgICAgICAgICAgICAgICAgIG1fZGlyZWN0aW9uID0gbV9zdGF0dXMubGFzdFN0cm9u
ZyA9PSBMZWZ0VG9SaWdodCA/IExlZnRUb1JpZ2h0IDogRXVyb3BlYW5OdW1iZXI7CisgICAgICAg
ICAgICAgICAgICAgIGNhc2UgVV9FVVJPUEVBTl9OVU1CRVI6CisgICAgICAgICAgICAgICAgICAg
ICAgICBtX2RpcmVjdGlvbiA9IG1fc3RhdHVzLmxhc3RTdHJvbmcgPT0gVV9MRUZUX1RPX1JJR0hU
ID8gVV9MRUZUX1RPX1JJR0hUIDogVV9FVVJPUEVBTl9OVU1CRVI7CiAgICAgICAgICAgICAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAg
ICAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwpAQCAtODczLDcgKzg2MSw3IEBAIHZv
aWQgQmlkaVJlc29sdmVyPEl0ZXJhdG9yLCBSdW4+OjpjcmVhdGVCaWRpUnVuc0ZvckxpbmUoY29u
c3QgSXRlcmF0b3ImIGVuZCwgVmlzCiAgICAgICAgICAgICBtX3JlYWNoZWRFbmRPZkxpbmUgPSBz
dGF0ZUF0RW5kLm1fcmVhY2hlZEVuZE9mTGluZTsKICAgICAgICAgICAgIG1fbGFzdEJlZm9yZUVU
ID0gc3RhdGVBdEVuZC5tX2xhc3RCZWZvcmVFVDsKICAgICAgICAgICAgIG1fZW1wdHlSdW4gPSBz
dGF0ZUF0RW5kLm1fZW1wdHlSdW47Ci0gICAgICAgICAgICBtX2RpcmVjdGlvbiA9IE90aGVyTmV1
dHJhbDsKKyAgICAgICAgICAgIG1fZGlyZWN0aW9uID0gVV9PVEhFUl9ORVVUUkFMOwogICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgIH0KIApAQCAtODk3LDcgKzg4NSw3IEBAIHZvaWQgQmlkaVJl
c29sdmVyPEl0ZXJhdG9yLCBSdW4+OjpjcmVhdGVCaWRpUnVuc0ZvckxpbmUoY29uc3QgSXRlcmF0
b3ImIGVuZCwgVmlzCiAgICAgICAgICAgICAgICAgbV9yZWFjaGVkRW5kT2ZMaW5lID0gc3RhdGVB
dEVuZC5tX3JlYWNoZWRFbmRPZkxpbmU7CiAgICAgICAgICAgICAgICAgbV9sYXN0QmVmb3JlRVQg
PSBzdGF0ZUF0RW5kLm1fbGFzdEJlZm9yZUVUOwogICAgICAgICAgICAgICAgIG1fZW1wdHlSdW4g
PSBzdGF0ZUF0RW5kLm1fZW1wdHlSdW47Ci0gICAgICAgICAgICAgICAgbV9kaXJlY3Rpb24gPSBP
dGhlck5ldXRyYWw7CisgICAgICAgICAgICAgICAgbV9kaXJlY3Rpb24gPSBVX09USEVSX05FVVRS
QUw7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvU2VnbWVudGVkU3RyaW5nLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1NlZ21lbnRlZFN0cmluZy5oCmluZGV4IGFi
ZDc5OGFlY2ExN2E5NzYxZjJiMTFkNWVjMTc5YmE1Yzc0MTg0MmMuLmQ1ZmUzNjdiMzI4OTBkMTIy
Nzg0NDUwNGQ2NzhjNTdmZmIyOWE5OWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL3RleHQvU2VnbWVudGVkU3RyaW5nLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
dGV4dC9TZWdtZW50ZWRTdHJpbmcuaApAQCAtMjYxLDcgKzI2MSw3IEBAIHB1YmxpYzoKIAogICAg
IHZvaWQgYWR2YW5jZUFuZEFTU0VSVElnbm9yaW5nQ2FzZShVQ2hhciBleHBlY3RlZENoYXJhY3Rl
cikKICAgICB7Ci0gICAgICAgIEFTU0VSVF9VTlVTRUQoZXhwZWN0ZWRDaGFyYWN0ZXIsIFdURjo6
VW5pY29kZTo6Zm9sZENhc2UoY3VycmVudENoYXIoKSkgPT0gV1RGOjpVbmljb2RlOjpmb2xkQ2Fz
ZShleHBlY3RlZENoYXJhY3RlcikpOworICAgICAgICBBU1NFUlRfVU5VU0VEKGV4cGVjdGVkQ2hh
cmFjdGVyLCB1X2ZvbGRDYXNlKGN1cnJlbnRDaGFyKCksIFVfRk9MRF9DQVNFX0RFRkFVTFQpID09
IHVfZm9sZENhc2UoZXhwZWN0ZWRDaGFyYWN0ZXIsIFVfRk9MRF9DQVNFX0RFRkFVTFQpKTsKICAg
ICAgICAgYWR2YW5jZSgpOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vdGV4dC9UZXh0Qm91bmRhcmllcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90
ZXh0L1RleHRCb3VuZGFyaWVzLmNwcAppbmRleCBjMWY5OTJkYWYwMzIwYmQ2NmM3NWM1ZjcwNzdk
M2Y1YWM1MmI4MjM5Li5jNDZmYjg1Zjk2Yzg2NThmYmQ4OTM0N2Q5M2Q1MGIyYTAyOTY3ZDBjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1RleHRCb3VuZGFyaWVzLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1RleHRCb3VuZGFyaWVzLmNwcApA
QCAtMzEsOSArMzEsNiBAQAogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0ltcGwuaD4KICNpbmNs
dWRlIDx3dGYvdW5pY29kZS9Vbmljb2RlLmg+CiAKLXVzaW5nIG5hbWVzcGFjZSBXVEY7Ci11c2lu
ZyBuYW1lc3BhY2UgVW5pY29kZTsKLQogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBpbnQgZW5kT2ZG
aXJzdFdvcmRCb3VuZGFyeUNvbnRleHQoY29uc3QgVUNoYXIqIGNoYXJhY3RlcnMsIGludCBsZW5n
dGgpCkBAIC02OSw5ICs2Niw4IEBAIGludCBmaW5kTmV4dFdvcmRGcm9tSW5kZXgoY29uc3QgVUNo
YXIqIGNoYXJzLCBpbnQgbGVuLCBpbnQgcG9zaXRpb24sIGJvb2wgZm9yd2FyCiAgICAgaWYgKGZv
cndhcmQpIHsKICAgICAgICAgcG9zaXRpb24gPSB0ZXh0QnJlYWtGb2xsb3dpbmcoaXQsIHBvc2l0
aW9uKTsKICAgICAgICAgd2hpbGUgKHBvc2l0aW9uICE9IFRleHRCcmVha0RvbmUpIHsKLSAgICAg
ICAgICAgIC8vIFdlIHN0b3Agc2VhcmNoaW5nIHdoZW4gdGhlIGNoYXJhY3RlciBwcmVjZWVkaW5n
IHRoZSBicmVhawotICAgICAgICAgICAgLy8gaXMgYWxwaGFudW1lcmljLgotICAgICAgICAgICAg
aWYgKHBvc2l0aW9uIDwgbGVuICYmIGlzQWxwaGFudW1lcmljKGNoYXJzW3Bvc2l0aW9uIC0gMV0p
KQorICAgICAgICAgICAgLy8gV2Ugc3RvcCBzZWFyY2hpbmcgd2hlbiB0aGUgY2hhcmFjdGVyIHBy
ZWNlZWRpbmcgdGhlIGJyZWFrIGlzIGFscGhhbnVtZXJpYy4KKyAgICAgICAgICAgIGlmIChwb3Np
dGlvbiA8IGxlbiAmJiB1X2lzYWxudW0oY2hhcnNbcG9zaXRpb24gLSAxXSkpCiAgICAgICAgICAg
ICAgICAgcmV0dXJuIHBvc2l0aW9uOwogCiAgICAgICAgICAgICBwb3NpdGlvbiA9IHRleHRCcmVh
a0ZvbGxvd2luZyhpdCwgcG9zaXRpb24pOwpAQCAtODEsOSArNzcsOCBAQCBpbnQgZmluZE5leHRX
b3JkRnJvbUluZGV4KGNvbnN0IFVDaGFyKiBjaGFycywgaW50IGxlbiwgaW50IHBvc2l0aW9uLCBi
b29sIGZvcndhcgogICAgIH0gZWxzZSB7CiAgICAgICAgIHBvc2l0aW9uID0gdGV4dEJyZWFrUHJl
Y2VkaW5nKGl0LCBwb3NpdGlvbik7CiAgICAgICAgIHdoaWxlIChwb3NpdGlvbiAhPSBUZXh0QnJl
YWtEb25lKSB7Ci0gICAgICAgICAgICAvLyBXZSBzdG9wIHNlYXJjaGluZyB3aGVuIHRoZSBjaGFy
YWN0ZXIgZm9sbG93aW5nIHRoZSBicmVhawotICAgICAgICAgICAgLy8gaXMgYWxwaGFudW1lcmlj
LgotICAgICAgICAgICAgaWYgKHBvc2l0aW9uID4gMCAmJiBpc0FscGhhbnVtZXJpYyhjaGFyc1tw
b3NpdGlvbl0pKQorICAgICAgICAgICAgLy8gV2Ugc3RvcCBzZWFyY2hpbmcgd2hlbiB0aGUgY2hh
cmFjdGVyIGZvbGxvd2luZyB0aGUgYnJlYWsgaXMgYWxwaGFudW1lcmljLgorICAgICAgICAgICAg
aWYgKHBvc2l0aW9uID4gMCAmJiB1X2lzYWxudW0oY2hhcnNbcG9zaXRpb25dKSkKICAgICAgICAg
ICAgICAgICByZXR1cm4gcG9zaXRpb247CiAKICAgICAgICAgICAgIHBvc2l0aW9uID0gdGV4dEJy
ZWFrUHJlY2VkaW5nKGl0LCBwb3NpdGlvbik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS90ZXh0L1RleHRCb3VuZGFyaWVzLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90
ZXh0L1RleHRCb3VuZGFyaWVzLmgKaW5kZXggMTIyZTBlODdjYjA5Y2NhM2E2ZWQ5ZDVkOTQzOWY1
NjVlMmNlZTUzYi4uMTYzODZhN2E3ZTkwOWZiMmZjMzhhNzFmZmQzNmIxMDUyZTUzNDM2YSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9UZXh0Qm91bmRhcmllcy5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvVGV4dEJvdW5kYXJpZXMuaApAQCAtMzAs
MTIgKzMwLDE1IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotICAgIC8vIEZJWE1FOiB0aGlz
IGZ1bmN0aW9uIHdvbid0IGJlIG5lZWRlZCB0b2dldGhlciB3aXRoIHRoZSBmdW5jdGlvbgotICAg
IC8vIGl0IGNhbGxzIHdoZW4gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTEyMDY1NgotICAgIC8vIHdpbGwgYmUgZml4ZWQuCi0gICAgaW5saW5lIGJvb2wgcmVxdWlyZXND
b250ZXh0Rm9yV29yZEJvdW5kYXJ5KFVDaGFyMzIgY2gpCisgICAgaW5saW5lIGJvb2wgcmVxdWly
ZXNDb250ZXh0Rm9yV29yZEJvdW5kYXJ5KFVDaGFyMzIgY2hhcmFjdGVyKQogICAgIHsKLSAgICAg
ICAgcmV0dXJuIFdURjo6VW5pY29kZTo6cmVxdWlyZXNDb21wbGV4Q29udGV4dEZvcldvcmRCcmVh
a2luZyhjaCk7CisgICAgICAgIC8vIEZJWE1FOiBUaGlzIGZ1bmN0aW9uIHdvbid0IGJlIG5lZWRl
ZCB3aGVuIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjA2NTYgaXMg
Zml4ZWQuCisKKyAgICAgICAgLy8gV2UgY2FuIGdldCByaWQgb2YgdGhpcyBjb25zdGFudCBpZiB3
ZSByZXF1aXJlIGEgbmV3ZXIgdmVyc2lvbiBvZiB0aGUgSUNVIGhlYWRlcnMuCisgICAgICAgIGNv
bnN0IGludCBXS19VX0xCX0NPTkRJVElPTkFMX0pBUEFORVNFX1NUQVJURVIgPSAzNzsKKworICAg
ICAgICBpbnQgbGluZUJyZWFrID0gdV9nZXRJbnRQcm9wZXJ0eVZhbHVlKGNoYXJhY3RlciwgVUNI
QVJfTElORV9CUkVBSyk7CisgICAgICAgIHJldHVybiBsaW5lQnJlYWsgPT0gVV9MQl9DT01QTEVY
X0NPTlRFWFQgfHwgbGluZUJyZWFrID09IFdLX1VfTEJfQ09ORElUSU9OQUxfSkFQQU5FU0VfU1RB
UlRFUiB8fCBsaW5lQnJlYWsgPT0gVV9MQl9JREVPR1JBUEhJQzsKICAgICB9CiAKICAgICBpbnQg
ZW5kT2ZGaXJzdFdvcmRCb3VuZGFyeUNvbnRleHQoY29uc3QgVUNoYXIqIGNoYXJhY3RlcnMsIGlu
dCBsZW5ndGgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9tYWMv
VGV4dEJvdW5kYXJpZXMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L21hYy9UZXh0
Qm91bmRhcmllcy5tbQppbmRleCBiZDdkZGY4YTBmODI4ZTU2NjNkYzRmYTIyYjdiYTQyMDgxNzMy
M2Q1Li5mZjFkZmQyMGRjNTg0Zjg4YzYwNjY4NmQ5YzUzNzUxZTA2ZGNhYzVkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L21hYy9UZXh0Qm91bmRhcmllcy5tbQorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L21hYy9UZXh0Qm91bmRhcmllcy5tbQpAQCAt
MjYsOCArMjYsNiBAQAogI2ltcG9ydCAiY29uZmlnLmgiCiAjaW1wb3J0ICJUZXh0Qm91bmRhcmll
cy5oIgogCi11c2luZyBuYW1lc3BhY2UgV1RGOjpVbmljb2RlOwotCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKIHZvaWQgZmluZFdvcmRCb3VuZGFyeShjb25zdCBVQ2hhciogY2hhcnMsIGludCBsZW4s
IGludCBwb3NpdGlvbiwgaW50KiBzdGFydCwgaW50KiBlbmQpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvQmlkaVJ1bi5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0Jp
ZGlSdW4uaAppbmRleCA5YmY4ZWQzOTQ3NWFmOGE1NWMzZThjMTZmZWJhZGRjNTI3NzY5MDk4Li41
ZjE0MDgyNjUyNjBlM2ExZTQ0NTRjNTRlOWJiMjczNmRhNWZmMzc5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvQmlkaVJ1bi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9CaWRpUnVuLmgKQEAgLTM0LDcgKzM0LDcgQEAgY2xhc3MgQmlkaUNvbnRleHQ7CiBjbGFz
cyBJbmxpbmVCb3g7CiAKIHN0cnVjdCBCaWRpUnVuIDogQmlkaUNoYXJhY3RlclJ1biB7Ci0gICAg
QmlkaVJ1bihpbnQgc3RhcnQsIGludCBzdG9wLCBSZW5kZXJPYmplY3QqIG9iamVjdCwgQmlkaUNv
bnRleHQqIGNvbnRleHQsIFdURjo6VW5pY29kZTo6RGlyZWN0aW9uIGRpcikKKyAgICBCaWRpUnVu
KGludCBzdGFydCwgaW50IHN0b3AsIFJlbmRlck9iamVjdCogb2JqZWN0LCBCaWRpQ29udGV4dCog
Y29udGV4dCwgVUNoYXJEaXJlY3Rpb24gZGlyKQogICAgICAgICA6IEJpZGlDaGFyYWN0ZXJSdW4o
c3RhcnQsIHN0b3AsIGNvbnRleHQsIGRpcikKICAgICAgICAgLCBtX29iamVjdChvYmplY3QpCiAg
ICAgICAgICwgbV9ib3goMCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9J
bmxpbmVGbG93Qm94LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lRmxvd0JveC5o
CmluZGV4IDYzOTg5YTllYThlNDVlNDY5NTdlNjlhYzgzMWI0NzU0N2VmZGQ2MjkuLjhmMzcyNzJl
MDkxMmE3ZGJlNzlmYTQ3YzJiM2ZiYmMyYWZhNmYwNWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9JbmxpbmVGbG93Qm94LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL0lubGluZUZsb3dCb3guaApAQCAtMzMyLDkgKzMzMiw5IEBAIHByb3RlY3RlZDoKICAgICB1
bnNpZ25lZCBtX2hhc0Fubm90YXRpb25zQmVmb3JlIDogMTsKICAgICB1bnNpZ25lZCBtX2hhc0Fu
bm90YXRpb25zQWZ0ZXIgOiAxOwogCi0gICAgdW5zaWduZWQgbV9saW5lQnJlYWtCaWRpU3RhdHVz
RW9yIDogNTsgLy8gV1RGOjpVbmljb2RlOjpEaXJlY3Rpb24KLSAgICB1bnNpZ25lZCBtX2xpbmVC
cmVha0JpZGlTdGF0dXNMYXN0U3Ryb25nIDogNTsgLy8gV1RGOjpVbmljb2RlOjpEaXJlY3Rpb24K
LSAgICB1bnNpZ25lZCBtX2xpbmVCcmVha0JpZGlTdGF0dXNMYXN0IDogNTsgLy8gV1RGOjpVbmlj
b2RlOjpEaXJlY3Rpb24KKyAgICB1bnNpZ25lZCBtX2xpbmVCcmVha0JpZGlTdGF0dXNFb3IgOiA1
OyAvLyBVQ2hhckRpcmVjdGlvbgorICAgIHVuc2lnbmVkIG1fbGluZUJyZWFrQmlkaVN0YXR1c0xh
c3RTdHJvbmcgOiA1OyAvLyBVQ2hhckRpcmVjdGlvbgorICAgIHVuc2lnbmVkIG1fbGluZUJyZWFr
QmlkaVN0YXR1c0xhc3QgOiA1OyAvLyBVQ2hhckRpcmVjdGlvbgogCiAgICAgLy8gRW5kIG9mIFJv
b3RJbmxpbmVCb3gtc3BlY2lmaWMgbWVtYmVycy4KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL0lubGluZUl0ZXJhdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
SW5saW5lSXRlcmF0b3IuaAppbmRleCA4ZWJhZTUzYjE0YTk4YjM4MGIxY2QzZGRkZDZmNjc0NjY5
MWNiZmVkLi40Y2M3ZTA1ZTQxNTIxYzcyODkwMjU4ZmVkZmU5N2QzN2YyM2Q3ZDdmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lSXRlcmF0b3IuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lSXRlcmF0b3IuaApAQCAtODgsNyArODgsNyBAQCBw
dWJsaWM6CiAgICAgVUNoYXIgY2hhcmFjdGVyQXQodW5zaWduZWQpIGNvbnN0OwogICAgIFVDaGFy
IGN1cnJlbnQoKSBjb25zdDsKICAgICBVQ2hhciBwcmV2aW91c0luU2FtZU5vZGUoKSBjb25zdDsK
LSAgICBBTFdBWVNfSU5MSU5FIFdURjo6VW5pY29kZTo6RGlyZWN0aW9uIGRpcmVjdGlvbigpIGNv
bnN0OworICAgIEFMV0FZU19JTkxJTkUgVUNoYXJEaXJlY3Rpb24gZGlyZWN0aW9uKCkgY29uc3Q7
CiAKIHByaXZhdGU6CiAgICAgUmVuZGVyRWxlbWVudCogbV9yb290OwpAQCAtMTEwLDEyICsxMTAs
MTIgQEAgaW5saW5lIGJvb2wgb3BlcmF0b3IhPShjb25zdCBJbmxpbmVJdGVyYXRvciYgaXQxLCBj
b25zdCBJbmxpbmVJdGVyYXRvciYgaXQyKQogICAgIHJldHVybiBpdDEubV9wb3MgIT0gaXQyLm1f
cG9zIHx8IGl0MS5tX29iaiAhPSBpdDIubV9vYmo7CiB9CiAKLXN0YXRpYyBpbmxpbmUgV1RGOjpV
bmljb2RlOjpEaXJlY3Rpb24gZW1iZWRDaGFyRnJvbURpcmVjdGlvbihUZXh0RGlyZWN0aW9uIGRp
ciwgRVVuaWNvZGVCaWRpIHVuaWNvZGVCaWRpKQorc3RhdGljIGlubGluZSBVQ2hhckRpcmVjdGlv
biBlbWJlZENoYXJGcm9tRGlyZWN0aW9uKFRleHREaXJlY3Rpb24gZGlyZWN0aW9uLCBFVW5pY29k
ZUJpZGkgdW5pY29kZUJpZGkpCiB7CiAgICAgdXNpbmcgbmFtZXNwYWNlIFdURjo6VW5pY29kZTsK
ICAgICBpZiAodW5pY29kZUJpZGkgPT0gRW1iZWQpCi0gICAgICAgIHJldHVybiBkaXIgPT0gUlRM
ID8gUmlnaHRUb0xlZnRFbWJlZGRpbmcgOiBMZWZ0VG9SaWdodEVtYmVkZGluZzsKLSAgICByZXR1
cm4gZGlyID09IFJUTCA/IFJpZ2h0VG9MZWZ0T3ZlcnJpZGUgOiBMZWZ0VG9SaWdodE92ZXJyaWRl
OworICAgICAgICByZXR1cm4gZGlyZWN0aW9uID09IFJUTCA/IFVfUklHSFRfVE9fTEVGVF9FTUJF
RERJTkcgOiBVX0xFRlRfVE9fUklHSFRfRU1CRURESU5HOworICAgIHJldHVybiBkaXJlY3Rpb24g
PT0gUlRMID8gVV9SSUdIVF9UT19MRUZUX09WRVJSSURFIDogVV9MRUZUX1RPX1JJR0hUX09WRVJS
SURFOwogfQogCiB0ZW1wbGF0ZSA8Y2xhc3MgT2JzZXJ2ZXI+CkBAIC0xNjEsNyArMTYxLDcgQEAg
c3RhdGljIGlubGluZSB2b2lkIG5vdGlmeU9ic2VydmVyV2lsbEV4aXRPYmplY3QoT2JzZXJ2ZXIq
IG9ic2VydmVyLCBSZW5kZXJPYmplY3QKIAogICAgIC8vIE90aGVyd2lzZSB3ZSBwb3AgYW55IGVt
YmVkL292ZXJyaWRlIGNoYXJhY3RlciB3ZSBhZGRlZCB3aGVuIHdlIG9wZW5lZCB0aGlzIHRhZy4K
ICAgICBpZiAoIW9ic2VydmVyLT5pbklzb2xhdGUoKSkKLSAgICAgICAgb2JzZXJ2ZXItPmVtYmVk
KFdURjo6VW5pY29kZTo6UG9wRGlyZWN0aW9uYWxGb3JtYXQsIEZyb21TdHlsZU9yRE9NKTsKKyAg
ICAgICAgb2JzZXJ2ZXItPmVtYmVkKFVfUE9QX0RJUkVDVElPTkFMX0ZPUk1BVCwgRnJvbVN0eWxl
T3JET00pOwogfQogCiBzdGF0aWMgaW5saW5lIGJvb2wgaXNJdGVyYXRvclRhcmdldChSZW5kZXJP
YmplY3QqIG9iamVjdCkKQEAgLTM5MywxNSArMzkzLDE1IEBAIGlubGluZSBVQ2hhciBJbmxpbmVJ
dGVyYXRvcjo6cHJldmlvdXNJblNhbWVOb2RlKCkgY29uc3QKICAgICByZXR1cm4gY2hhcmFjdGVy
QXQobV9wb3MgLSAxKTsKIH0KIAotQUxXQVlTX0lOTElORSBXVEY6OlVuaWNvZGU6OkRpcmVjdGlv
biBJbmxpbmVJdGVyYXRvcjo6ZGlyZWN0aW9uKCkgY29uc3QKK0FMV0FZU19JTkxJTkUgVUNoYXJE
aXJlY3Rpb24gSW5saW5lSXRlcmF0b3I6OmRpcmVjdGlvbigpIGNvbnN0CiB7Ci0gICAgaWYgKFVD
aGFyIGMgPSBjdXJyZW50KCkpCi0gICAgICAgIHJldHVybiBXVEY6OlVuaWNvZGU6OmRpcmVjdGlv
bihjKTsKKyAgICBpZiAoVUNoYXIgY2hhcmFjdGVyID0gY3VycmVudCgpKQorICAgICAgICByZXR1
cm4gdV9jaGFyRGlyZWN0aW9uKGNoYXJhY3Rlcik7CiAKICAgICBpZiAobV9vYmogJiYgbV9vYmot
PmlzTGlzdE1hcmtlcigpKQotICAgICAgICByZXR1cm4gbV9vYmotPnN0eWxlKCktPmlzTGVmdFRv
UmlnaHREaXJlY3Rpb24oKSA/IFdURjo6VW5pY29kZTo6TGVmdFRvUmlnaHQgOiBXVEY6OlVuaWNv
ZGU6OlJpZ2h0VG9MZWZ0OworICAgICAgICByZXR1cm4gbV9vYmotPnN0eWxlKCktPmlzTGVmdFRv
UmlnaHREaXJlY3Rpb24oKSA/IFVfTEVGVF9UT19SSUdIVCA6IFVfUklHSFRfVE9fTEVGVDsKIAot
ICAgIHJldHVybiBXVEY6OlVuaWNvZGU6Ok90aGVyTmV1dHJhbDsKKyAgICByZXR1cm4gVV9PVEhF
Ul9ORVVUUkFMOwogfQogCiB0ZW1wbGF0ZTw+CkBAIC00NzcsNyArNDc3LDcgQEAgcHVibGljOgog
ICAgIGJvb2wgaW5Jc29sYXRlKCkgY29uc3QgeyByZXR1cm4gbV9uZXN0ZWRJc29sYXRlQ291bnQ7
IH0KIAogICAgIC8vIFdlIGRvbid0IGNhcmUgaWYgd2UgZW5jb3VudGVyIGJpZGkgZGlyZWN0aW9u
YWwgb3ZlcnJpZGVzLgotICAgIHZvaWQgZW1iZWQoV1RGOjpVbmljb2RlOjpEaXJlY3Rpb24sIEJp
ZGlFbWJlZGRpbmdTb3VyY2UpIHsgfQorICAgIHZvaWQgZW1iZWQoVUNoYXJEaXJlY3Rpb24sIEJp
ZGlFbWJlZGRpbmdTb3VyY2UpIHsgfQogICAgIHZvaWQgY29tbWl0RXhwbGljaXRFbWJlZGRpbmco
KSB7IH0KIAogICAgIHZvaWQgYWRkRmFrZVJ1bklmTmVjZXNzYXJ5KFJlbmRlck9iamVjdCogb2Jq
LCB1bnNpZ25lZCBwb3MsIElubGluZUJpZGlSZXNvbHZlciYgcmVzb2x2ZXIpCkBAIC01NDQsOCAr
NTQ0LDggQEAgaW5saW5lIHZvaWQgSW5saW5lQmlkaVJlc29sdmVyOjphcHBlbmRSdW4oKQogICAg
ICAgICBtX3NvciA9IG1fZW9yOwogICAgIH0KIAotICAgIG1fZGlyZWN0aW9uID0gV1RGOjpVbmlj
b2RlOjpPdGhlck5ldXRyYWw7Ci0gICAgbV9zdGF0dXMuZW9yID0gV1RGOjpVbmljb2RlOjpPdGhl
ck5ldXRyYWw7CisgICAgbV9kaXJlY3Rpb24gPSBVX09USEVSX05FVVRSQUw7CisgICAgbV9zdGF0
dXMuZW9yID0gVV9PVEhFUl9ORVVUUkFMOwogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckJsb2NrLmNwcAppbmRleCBmMjc5MzU1YTg0OTE3NTQ0ZDljYWZjM2E5OWMwOTIzMjNk
ZTQwNWRjLi4wYWU3NWU1YjA2YzM2NDI1NjM1OWIyOWE1YjM2NzRlYzg5YTc2NGM0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5jcHAKQEAgLTQ5NTIsMTIgKzQ5NTIsNyBA
QCBzdGF0aWMgUmVuZGVyU3R5bGUqIHN0eWxlRm9yRmlyc3RMZXR0ZXIoUmVuZGVyT2JqZWN0KiBm
aXJzdExldHRlckJsb2NrLCBSZW5kZXJPYgogLy8gImluaXRpYWwiIChQaSkuICJmaW5hbCIgKFBm
KSBhbmQgIm90aGVyIiAoUG8pIHB1bmN0dWF0aW9uIGNsYXNzZXMpLCB0aGF0IHByZWNlZGVzIG9y
IGZvbGxvd3MgdGhlIGZpcnN0IGxldHRlciBzaG91bGQgYmUgaW5jbHVkZWQiCiBzdGF0aWMgaW5s
aW5lIGJvb2wgaXNQdW5jdHVhdGlvbkZvckZpcnN0TGV0dGVyKFVDaGFyIGMpCiB7Ci0gICAgQ2hh
ckNhdGVnb3J5IGNoYXJDYXRlZ29yeSA9IGNhdGVnb3J5KGMpOwotICAgIHJldHVybiBjaGFyQ2F0
ZWdvcnkgPT0gUHVuY3R1YXRpb25fT3BlbgotICAgICAgICB8fCBjaGFyQ2F0ZWdvcnkgPT0gUHVu
Y3R1YXRpb25fQ2xvc2UKLSAgICAgICAgfHwgY2hhckNhdGVnb3J5ID09IFB1bmN0dWF0aW9uX0lu
aXRpYWxRdW90ZQotICAgICAgICB8fCBjaGFyQ2F0ZWdvcnkgPT0gUHVuY3R1YXRpb25fRmluYWxR
dW90ZQotICAgICAgICB8fCBjaGFyQ2F0ZWdvcnkgPT0gUHVuY3R1YXRpb25fT3RoZXI7CisgICAg
cmV0dXJuIFVfR0VUX0dDX01BU0soYykgJiAoVV9HQ19QU19NQVNLIHwgVV9HQ19QRV9NQVNLIHwg
VV9HQ19QSV9NQVNLIHwgVV9HQ19QRl9NQVNLIHwgVV9HQ19QT19NQVNLKTsKIH0KIAogc3RhdGlj
IGlubGluZSBib29sIHNob3VsZFNraXBGb3JGaXJzdExldHRlcihVQ2hhciBjKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrTGluZUxheW91dC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2tMaW5lTGF5b3V0LmNwcAppbmRleCBh
Njg0YmVhNDY2OWY3MjI2M2JjY2Y0YjljYzNlOTc0ODZkODQ1YzE3Li40OGU4ZDVhNDJhYWEyNDkw
ZjNhMDI2Zjc4MGExMzFmN2UzMDY0MjI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyQmxvY2tMaW5lTGF5b3V0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyQmxvY2tMaW5lTGF5b3V0LmNwcApAQCAtMTc4LDEyICsxNzgsMTIgQEAgc3Rh
dGljIHZvaWQgZGV0ZXJtaW5lRGlyZWN0aW9uYWxpdHkoVGV4dERpcmVjdGlvbiYgZGlyLCBJbmxp
bmVJdGVyYXRvciBpdGVyKQogICAgICAgICBpZiAoaXRlci5hdFBhcmFncmFwaFNlcGFyYXRvcigp
KQogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICBpZiAoVUNoYXIgY3VycmVudCA9IGl0ZXIu
Y3VycmVudCgpKSB7Ci0gICAgICAgICAgICBEaXJlY3Rpb24gY2hhckRpcmVjdGlvbiA9IGRpcmVj
dGlvbihjdXJyZW50KTsKLSAgICAgICAgICAgIGlmIChjaGFyRGlyZWN0aW9uID09IExlZnRUb1Jp
Z2h0KSB7CisgICAgICAgICAgICBVQ2hhckRpcmVjdGlvbiBjaGFyRGlyZWN0aW9uID0gdV9jaGFy
RGlyZWN0aW9uKGN1cnJlbnQpOworICAgICAgICAgICAgaWYgKGNoYXJEaXJlY3Rpb24gPT0gVV9M
RUZUX1RPX1JJR0hUKSB7CiAgICAgICAgICAgICAgICAgZGlyID0gTFRSOwogICAgICAgICAgICAg
ICAgIHJldHVybjsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGlmIChjaGFyRGlyZWN0aW9u
ID09IFJpZ2h0VG9MZWZ0IHx8IGNoYXJEaXJlY3Rpb24gPT0gUmlnaHRUb0xlZnRBcmFiaWMpIHsK
KyAgICAgICAgICAgIGlmIChjaGFyRGlyZWN0aW9uID09IFVfUklHSFRfVE9fTEVGVCB8fCBjaGFy
RGlyZWN0aW9uID09IFVfUklHSFRfVE9fTEVGVF9BUkFCSUMpIHsKICAgICAgICAgICAgICAgICBk
aXIgPSBSVEw7CiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgfQpAQCAtMTA1
MSw3ICsxMDUxLDcgQEAgaW5saW5lIEJpZGlSdW4qIFJlbmRlckJsb2NrRmxvdzo6aGFuZGxlVHJh
aWxpbmdTcGFjZXMoQmlkaVJ1bkxpc3Q8QmlkaVJ1bj4mIGJpZGkKICAgICAgICAgd2hpbGUgKEJp
ZGlDb250ZXh0KiBwYXJlbnQgPSBiYXNlQ29udGV4dC0+cGFyZW50KCkpCiAgICAgICAgICAgICBi
YXNlQ29udGV4dCA9IHBhcmVudDsKIAotICAgICAgICBCaWRpUnVuKiBuZXdUcmFpbGluZ1J1biA9
IG5ldyAocmVuZGVyQXJlbmEoKSkgQmlkaVJ1bihmaXJzdFNwYWNlLCB0cmFpbGluZ1NwYWNlUnVu
LT5tX3N0b3AsIHRyYWlsaW5nU3BhY2VSdW4tPm1fb2JqZWN0LCBiYXNlQ29udGV4dCwgT3RoZXJO
ZXV0cmFsKTsKKyAgICAgICAgQmlkaVJ1biogbmV3VHJhaWxpbmdSdW4gPSBuZXcgKHJlbmRlckFy
ZW5hKCkpIEJpZGlSdW4oZmlyc3RTcGFjZSwgdHJhaWxpbmdTcGFjZVJ1bi0+bV9zdG9wLCB0cmFp
bGluZ1NwYWNlUnVuLT5tX29iamVjdCwgYmFzZUNvbnRleHQsIFVfT1RIRVJfTkVVVFJBTCk7CiAg
ICAgICAgIHRyYWlsaW5nU3BhY2VSdW4tPm1fc3RvcCA9IGZpcnN0U3BhY2U7CiAgICAgICAgIGlm
IChkaXJlY3Rpb24gPT0gTFRSKQogICAgICAgICAgICAgYmlkaVJ1bnMuYWRkUnVuKG5ld1RyYWls
aW5nUnVuKTsKQEAgLTEwODMsNyArMTA4Myw3IEBAIHZvaWQgUmVuZGVyQmxvY2tGbG93OjphcHBl
bmRGbG9hdGluZ09iamVjdFRvTGFzdExpbmUoRmxvYXRpbmdPYmplY3QqIGZsb2F0aW5nT2JqCiAv
LyBGSVhNRTogVGhpcyBzaG91bGQgYmUgYSBCaWRpU3RhdHVzIGNvbnN0cnVjdG9yIG9yIGNyZWF0
ZSBtZXRob2QuCiBzdGF0aWMgaW5saW5lIEJpZGlTdGF0dXMgc3RhdHVzV2l0aERpcmVjdGlvbihU
ZXh0RGlyZWN0aW9uIHRleHREaXJlY3Rpb24sIGJvb2wgaXNPdmVycmlkZSkKIHsKLSAgICBXVEY6
OlVuaWNvZGU6OkRpcmVjdGlvbiBkaXJlY3Rpb24gPSB0ZXh0RGlyZWN0aW9uID09IExUUiA/IExl
ZnRUb1JpZ2h0IDogUmlnaHRUb0xlZnQ7CisgICAgVUNoYXJEaXJlY3Rpb24gZGlyZWN0aW9uID0g
dGV4dERpcmVjdGlvbiA9PSBMVFIgPyBVX0xFRlRfVE9fUklHSFQgOiBVX1JJR0hUX1RPX0xFRlQ7
CiAgICAgUmVmUHRyPEJpZGlDb250ZXh0PiBjb250ZXh0ID0gQmlkaUNvbnRleHQ6OmNyZWF0ZSh0
ZXh0RGlyZWN0aW9uID09IExUUiA/IDAgOiAxLCBkaXJlY3Rpb24sIGlzT3ZlcnJpZGUsIEZyb21T
dHlsZU9yRE9NKTsKIAogICAgIC8vIFRoaXMgY29waWVzIEJpZGlTdGF0dXMgYW5kIG1heSBjaHVy
biB0aGUgcmVmIG9uIEJpZGlDb250ZXh0LiBJIGRvdWJ0IGl0IG1hdHRlcnMuCkBAIC0zMTMyLDcg
KzMxMzIsNyBAQCBJbmxpbmVJdGVyYXRvciBMaW5lQnJlYWtlcjo6bmV4dFNlZ21lbnRCcmVhayhJ
bmxpbmVCaWRpUmVzb2x2ZXImIHJlc29sdmVyLCBMaW5lSQogICAgICAgICAgICAgICAgICAgICAg
ICAgYnJlYWtXb3JkcyA9IGZhbHNlOwogICAgICAgICAgICAgICAgICAgICB9CiAKLSAgICAgICAg
ICAgICAgICAgICAgaWYgKG1pZFdvcmRCcmVhayAmJiAhVTE2X0lTX1RSQUlMKGMpICYmICEoY2F0
ZWdvcnkoYykgJiAoTWFya19Ob25TcGFjaW5nIHwgTWFya19FbmNsb3NpbmcgfCBNYXJrX1NwYWNp
bmdDb21iaW5pbmcpKSkgeworICAgICAgICAgICAgICAgICAgICBpZiAobWlkV29yZEJyZWFrICYm
ICFVMTZfSVNfVFJBSUwoYykgJiYgIShVX0dFVF9HQ19NQVNLKGMpICYgVV9HQ19NX01BU0spKSB7
CiAgICAgICAgICAgICAgICAgICAgICAgICAvLyBSZW1lbWJlciB0aGlzIGFzIGEgYnJlYWthYmxl
IHBvc2l0aW9uIGluIGNhc2UKICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGFkZGluZyB0aGUg
ZW5kIHdpZHRoIGZvcmNlcyBhIGJyZWFrLgogICAgICAgICAgICAgICAgICAgICAgICAgbEJyZWFr
Lm1vdmVUbyhjdXJyZW50Lm1fb2JqLCBjdXJyZW50Lm1fcG9zLCBjdXJyZW50Lm1fbmV4dEJyZWFr
YWJsZVBvc2l0aW9uKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJMaXN0TWFya2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0TWFy
a2VyLmNwcAppbmRleCA5YzU5YmJjMjJlNzNiZDc5MjYxNTMyZmQxNTQwMjc5OGQwM2QxMmY1Li5l
M2EyOWEzZTEwMWMyYTQyZTNkZWU3NmRmZmU3NzZmZWZiYzQyMTEzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGlzdE1hcmtlci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpc3RNYXJrZXIuY3BwCkBAIC0xMzU2LDggKzEzNTYsOCBA
QCB2b2lkIFJlbmRlckxpc3RNYXJrZXI6OnBhaW50KFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25z
dCBMYXlvdXRQb2ludCYgcGFpbnRPZmZzZQogICAgICAgICBjb250ZXh0LT5kcmF3VGV4dChmb250
LCB0ZXh0UnVuLCB0ZXh0T3JpZ2luKTsKICAgICBlbHNlIHsKICAgICAgICAgLy8gVGV4dCBpcyBu
b3QgYXJiaXRyYXJ5LiBXZSBjYW4ganVkZ2Ugd2hldGhlciBpdCdzIFJUTCBmcm9tIHRoZSBmaXJz
dCBjaGFyYWN0ZXIsCi0gICAgICAgIC8vIGFuZCB3ZSBvbmx5IG5lZWQgdG8gaGFuZGxlIHRoZSBk
aXJlY3Rpb24gUmlnaHRUb0xlZnQgZm9yIG5vdy4KLSAgICAgICAgYm9vbCB0ZXh0TmVlZHNSZXZl
cnNpbmcgPSBkaXJlY3Rpb24obV90ZXh0WzBdKSA9PSBSaWdodFRvTGVmdDsKKyAgICAgICAgLy8g
YW5kIHdlIG9ubHkgbmVlZCB0byBoYW5kbGUgdGhlIGRpcmVjdGlvbiBVX1JJR0hUX1RPX0xFRlQg
Zm9yIG5vdy4KKyAgICAgICAgYm9vbCB0ZXh0TmVlZHNSZXZlcnNpbmcgPSB1X2NoYXJEaXJlY3Rp
b24obV90ZXh0WzBdKSA9PSBVX1JJR0hUX1RPX0xFRlQ7CiAgICAgICAgIFN0cmluZ0J1aWxkZXIg
cmV2ZXJzZWRUZXh0OwogICAgICAgICBpZiAodGV4dE5lZWRzUmV2ZXJzaW5nKSB7CiAgICAgICAg
ICAgICBpbnQgbGVuZ3RoID0gbV90ZXh0Lmxlbmd0aCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlck1lbnVMaXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJNZW51TGlzdC5jcHAKaW5kZXggMTcyOWI3NTYxYTBkMDBhNTc4NGM2ZWZkY2E3
OTcxZTQzNjNhMzgwYS4uZWNkZDUyZDgyMDJkNjhhMDkxZWYxMjQ3NjJmNDFkMzU4ODg3NmJmZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck1lbnVMaXN0LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTWVudUxpc3QuY3BwCkBAIC0xMTgs
NyArMTE4LDcgQEAgdm9pZCBSZW5kZXJNZW51TGlzdDo6YWRqdXN0SW5uZXJTdHlsZSgpCiAgICAg
ICAgIC8vIEl0ZW1zIGluIHRoZSBwb3B1cCB3aWxsIG5vdCByZXNwZWN0IHRoZSBDU1MgdGV4dC1h
bGlnbiBhbmQgZGlyZWN0aW9uIHByb3BlcnRpZXMsCiAgICAgICAgIC8vIHNvIHdlIG11c3QgYWRq
dXN0IG91ciBvd24gc3R5bGUgdG8gbWF0Y2guCiAgICAgICAgIGlubmVyU3R5bGUtPnNldFRleHRB
bGlnbihMRUZUKTsKLSAgICAgICAgVGV4dERpcmVjdGlvbiBkaXJlY3Rpb24gPSAobV9idXR0b25U
ZXh0ICYmIG1fYnV0dG9uVGV4dC0+dGV4dCgpLT5kZWZhdWx0V3JpdGluZ0RpcmVjdGlvbigpID09
IFdURjo6VW5pY29kZTo6UmlnaHRUb0xlZnQpID8gUlRMIDogTFRSOworICAgICAgICBUZXh0RGly
ZWN0aW9uIGRpcmVjdGlvbiA9IChtX2J1dHRvblRleHQgJiYgbV9idXR0b25UZXh0LT50ZXh0KCkt
PmRlZmF1bHRXcml0aW5nRGlyZWN0aW9uKCkgPT0gVV9SSUdIVF9UT19MRUZUKSA/IFJUTCA6IExU
UjsKICAgICAgICAgaW5uZXJTdHlsZS0+c2V0RGlyZWN0aW9uKGRpcmVjdGlvbik7CiAgICAgfSBl
bHNlIGlmIChtX29wdGlvblN0eWxlICYmIGRvY3VtZW50KCkucGFnZSgpLT5jaHJvbWUoKS5zZWxl
Y3RJdGVtQWxpZ25tZW50Rm9sbG93c01lbnVXcml0aW5nRGlyZWN0aW9uKCkpIHsKICAgICAgICAg
aWYgKChtX29wdGlvblN0eWxlLT5kaXJlY3Rpb24oKSAhPSBpbm5lclN0eWxlLT5kaXJlY3Rpb24o
KSB8fCBtX29wdGlvblN0eWxlLT51bmljb2RlQmlkaSgpICE9IGlubmVyU3R5bGUtPnVuaWNvZGVC
aWRpKCkpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHQuY3BwCmluZGV4IDUyYjZk
ODhhMzhiYzg0M2I3NmYwZTM5ZjE4OGYyMmZjMWNjODc3MDUuLmI1NDg3ZWY0MTUwNDcyNTc4MDA3
NmQzMmRkZGJiNzk4ZjVhYWQxZmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJUZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4
dC5jcHAKQEAgLTk5LDYgKzk5LDggQEAgcHJpdmF0ZToKIAogc3RhdGljIHZvaWQgbWFrZUNhcGl0
YWxpemVkKFN0cmluZyogc3RyaW5nLCBVQ2hhciBwcmV2aW91cykKIHsKKyAgICAvLyBGSVhNRTog
TmVlZCB0byBjaGFuZ2UgdGhpcyB0byB1c2UgdV9zdHJUb1RpdGxlIGluc3RlYWQgb2YgdV90b3Rp
dGxlIGFuZCB0byBjb25zaWRlciBsb2NhbGUuCisKICAgICBpZiAoc3RyaW5nLT5pc051bGwoKSkK
ICAgICAgICAgcmV0dXJuOwogCkBAIC0xMjksNyArMTMxLDcgQEAgc3RhdGljIHZvaWQgbWFrZUNh
cGl0YWxpemVkKFN0cmluZyogc3RyaW5nLCBVQ2hhciBwcmV2aW91cykKICAgICBpbnQzMl90IHN0
YXJ0T2ZXb3JkID0gdGV4dEJyZWFrRmlyc3QoYm91bmRhcnkpOwogICAgIGZvciAoZW5kT2ZXb3Jk
ID0gdGV4dEJyZWFrTmV4dChib3VuZGFyeSk7IGVuZE9mV29yZCAhPSBUZXh0QnJlYWtEb25lOyBz
dGFydE9mV29yZCA9IGVuZE9mV29yZCwgZW5kT2ZXb3JkID0gdGV4dEJyZWFrTmV4dChib3VuZGFy
eSkpIHsKICAgICAgICAgaWYgKHN0YXJ0T2ZXb3JkKSAvLyBJZ25vcmUgZmlyc3QgY2hhciBvZiBw
cmV2aW91cyBzdHJpbmcKLSAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoc3RyaW5nSW1wbFtzdGFy
dE9mV29yZCAtIDFdID09IG5vQnJlYWtTcGFjZSA/IG5vQnJlYWtTcGFjZSA6IHRvVGl0bGVDYXNl
KHN0cmluZ1dpdGhQcmV2aW91c1tzdGFydE9mV29yZF0pKTsKKyAgICAgICAgICAgIHJlc3VsdC5h
cHBlbmQoc3RyaW5nSW1wbFtzdGFydE9mV29yZCAtIDFdID09IG5vQnJlYWtTcGFjZSA/IG5vQnJl
YWtTcGFjZSA6IHVfdG90aXRsZShzdHJpbmdXaXRoUHJldmlvdXNbc3RhcnRPZldvcmRdKSk7CiAg
ICAgICAgIGZvciAoaW50IGkgPSBzdGFydE9mV29yZCArIDE7IGkgPCBlbmRPZldvcmQ7IGkrKykK
ICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoc3RyaW5nSW1wbFtpIC0gMV0pOwogICAgIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9Sb290SW5saW5lQm94LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9Sb290SW5saW5lQm94LmNwcAppbmRleCBhYjI1M2QyMjY0
ZTdiM2RkMjBhYmUzYmRmNGQwYmZhNDA2MzM1YzVlLi5kZTcyYWQ0ODgxZDg5NzljNWQzZDExOTI5
MTA2ZWEzNGI4MzkwYmEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUm9v
dElubGluZUJveC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jvb3RJbmxpbmVC
b3guY3BwCkBAIC03NTUsNyArNzU1LDcgQEAgSW5saW5lQm94KiBSb290SW5saW5lQm94OjpjbG9z
ZXN0TGVhZkNoaWxkRm9yTG9naWNhbExlZnRQb3NpdGlvbihpbnQgbGVmdFBvc2l0aW8KIAogQmlk
aVN0YXR1cyBSb290SW5saW5lQm94OjpsaW5lQnJlYWtCaWRpU3RhdHVzKCkgY29uc3QKIHsgCi0g
ICAgcmV0dXJuIEJpZGlTdGF0dXMoc3RhdGljX2Nhc3Q8V1RGOjpVbmljb2RlOjpEaXJlY3Rpb24+
KG1fbGluZUJyZWFrQmlkaVN0YXR1c0VvciksIHN0YXRpY19jYXN0PFdURjo6VW5pY29kZTo6RGly
ZWN0aW9uPihtX2xpbmVCcmVha0JpZGlTdGF0dXNMYXN0U3Ryb25nKSwgc3RhdGljX2Nhc3Q8V1RG
OjpVbmljb2RlOjpEaXJlY3Rpb24+KG1fbGluZUJyZWFrQmlkaVN0YXR1c0xhc3QpLCBtX2xpbmVC
cmVha0NvbnRleHQpOworICAgIHJldHVybiBCaWRpU3RhdHVzKHN0YXRpY19jYXN0PFVDaGFyRGly
ZWN0aW9uPihtX2xpbmVCcmVha0JpZGlTdGF0dXNFb3IpLCBzdGF0aWNfY2FzdDxVQ2hhckRpcmVj
dGlvbj4obV9saW5lQnJlYWtCaWRpU3RhdHVzTGFzdFN0cm9uZyksIHN0YXRpY19jYXN0PFVDaGFy
RGlyZWN0aW9uPihtX2xpbmVCcmVha0JpZGlTdGF0dXNMYXN0KSwgbV9saW5lQnJlYWtDb250ZXh0
KTsKIH0KIAogdm9pZCBSb290SW5saW5lQm94OjpzZXRMaW5lQnJlYWtJbmZvKFJlbmRlck9iamVj
dCogb2JqLCB1bnNpZ25lZCBicmVha1BvcywgY29uc3QgQmlkaVN0YXR1cyYgc3RhdHVzKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZvbnREYXRhLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdGb250RGF0YS5jcHAKaW5kZXggYjNiZWQ4Y2VhNTFjYTg1YWMxNzk2Njc1OTNh
Zjk1Y2UzZmI0MGQxNy4uYmRmNTBjMjZkOGM2YjBjNTI0Yzg0ZjliMGU0N2I2NTZkZGJjZWEyNSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZvbnREYXRhLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHRm9udERhdGEuY3BwCkBAIC0yOTcsNyArMjk3LDcgQEAgU3RyaW5n
IFNWR0ZvbnREYXRhOjpjcmVhdGVTdHJpbmdXaXRoTWlycm9yZWRDaGFyYWN0ZXJzKGNvbnN0IFVD
aGFyKiBjaGFyYWN0ZXJzLAogICAgIHdoaWxlIChpIDwgbGVuZ3RoKSB7CiAgICAgICAgIFVDaGFy
MzIgY2hhcmFjdGVyOwogICAgICAgICBVMTZfTkVYVChjaGFyYWN0ZXJzLCBpLCBsZW5ndGgsIGNo
YXJhY3Rlcik7Ci0gICAgICAgIG1pcnJvcmVkQ2hhcmFjdGVycy5hcHBlbmQobWlycm9yZWRDaGFy
KGNoYXJhY3RlcikpOworICAgICAgICBtaXJyb3JlZENoYXJhY3RlcnMuYXBwZW5kKHVfY2hhck1p
cnJvcihjaGFyYWN0ZXIpKTsKICAgICB9CiAKICAgICByZXR1cm4gbWlycm9yZWRDaGFyYWN0ZXJz
LnRvU3RyaW5nKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS94bWwvWFBhdGhQYXJzZXIu
Y3BwIGIvU291cmNlL1dlYkNvcmUveG1sL1hQYXRoUGFyc2VyLmNwcAppbmRleCA4MjY5ODViZTRj
M2Y3NGJiNDRhZjRkNmJjZDIyNzk5MGJkODYwNTY5Li4xMzYxZmI5NjU5NzM4OGI5YWQ4MTM2ZjBh
YzdkOTA4YzIyYzE5YWY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS94bWwvWFBhdGhQYXJz
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3htbC9YUGF0aFBhcnNlci5jcHAKQEAgLTY0LDIw
ICs2NCwxNyBAQCBzdHJ1Y3QgUGFyc2VyOjpUb2tlbiB7CiAKIGVudW0gWE1MQ2F0IHsgTmFtZVN0
YXJ0LCBOYW1lQ29udCwgTm90UGFydE9mTmFtZSB9OwogCi1zdGF0aWMgWE1MQ2F0IGNoYXJDYXQo
VUNoYXIgYUNoYXIpCitzdGF0aWMgWE1MQ2F0IGNoYXJDYXQoVUNoYXIgY2hhcmFjdGVyKQogewot
ICAgIHVzaW5nIG5hbWVzcGFjZSBXVEY7Ci0gICAgdXNpbmcgbmFtZXNwYWNlIFVuaWNvZGU7Ci0K
LSAgICBpZiAoYUNoYXIgPT0gJ18nKQorICAgIGlmIChjaGFyYWN0ZXIgPT0gJ18nKQogICAgICAg
ICByZXR1cm4gTmFtZVN0YXJ0OwogCi0gICAgaWYgKGFDaGFyID09ICcuJyB8fCBhQ2hhciA9PSAn
LScpCisgICAgaWYgKGNoYXJhY3RlciA9PSAnLicgfHwgY2hhcmFjdGVyID09ICctJykKICAgICAg
ICAgcmV0dXJuIE5hbWVDb250OwotICAgIENoYXJDYXRlZ29yeSBjYXRlZ29yeSA9IFVuaWNvZGU6
OmNhdGVnb3J5KGFDaGFyKTsKLSAgICBpZiAoY2F0ZWdvcnkgJiAoTGV0dGVyX1VwcGVyY2FzZSB8
IExldHRlcl9Mb3dlcmNhc2UgfCBMZXR0ZXJfT3RoZXIgfCBMZXR0ZXJfVGl0bGVjYXNlIHwgTnVt
YmVyX0xldHRlcikpCisgICAgdW5zaWduZWQgY2hhcmFjdGVyVHlwZU1hc2sgPSBVX0dFVF9HQ19N
QVNLKGNoYXJhY3Rlcik7CisgICAgaWYgKGNoYXJhY3RlclR5cGVNYXNrICYgKFVfR0NfTFVfTUFT
SyB8IFVfR0NfTExfTUFTSyB8IFVfR0NfTE9fTUFTSyB8IFVfR0NfTFRfTUFTSyB8IFVfR0NfTkxf
TUFTSykpCiAgICAgICAgIHJldHVybiBOYW1lU3RhcnQ7Ci0gICAgaWYgKGNhdGVnb3J5ICYgKE1h
cmtfTm9uU3BhY2luZyB8IE1hcmtfU3BhY2luZ0NvbWJpbmluZyB8IE1hcmtfRW5jbG9zaW5nIHwg
TGV0dGVyX01vZGlmaWVyIHwgTnVtYmVyX0RlY2ltYWxEaWdpdCkpCisgICAgaWYgKGNoYXJhY3Rl
clR5cGVNYXNrICYgKFVfR0NfTV9NQVNLIHwgVV9HQ19MTV9NQVNLIHwgVV9HQ19ORF9NQVNLKSkK
ICAgICAgICAgcmV0dXJuIE5hbWVDb250OwogICAgIHJldHVybiBOb3RQYXJ0T2ZOYW1lOwogfQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>213968</attachid>
            <date>2013-10-10 23:09:58 -0700</date>
            <delta_ts>2013-10-11 10:31:51 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-122635-20131010230956.patch</filename>
            <type>text/plain</type>
            <size>137462</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTU3Mjg1CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBm
MDEwYzA5NWVjZjc1NTMxOGQxYTMxZTE1MGQ1MzFlYmQ4ODE1M2M1Li42OTE0ZWZlNDU1MWQzNWQ0
Mzk1ZjgxOTc3YTc1NDRiMDJhNjI4ZTQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwzMSBAQAorMjAxMy0xMC0xMCAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CisK
KyAgICAgICAgQ2hhbmdlIG1vc3QgY2FsbCBzaXRlcyB0byBjYWxsIElDVSBkaXJlY3RseSBpbnN0
ZWFkIG9mIHRocm91Z2ggV1RGOjpVbmljb2RlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xMjI2MzUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICAqIHBhcnNlci9MZXhlci5jcHA6CisgICAgICAgIChKU0M6Omlz
Tm9uTGF0aW4xSWRlbnRTdGFydCk6IFRha2UgYSBVQ2hhciBzaW5jZSB0aGF0J3Mgd2hhdCB0aGUg
b25seSBjYWxsZXIgd2FudHMgdG8gcGFzcy4KKyAgICAgICAgVXNlIFVfR0VUX0dDX01BU0sgaW5z
dGVhZCBvZiBXVEY6OlVuaWNvZGU6OmNhdGVnb3J5LgorICAgICAgICAoSlNDOjppc05vbkxhdGlu
MUlkZW50UGFydCk6IERpdHRvLgorCisgICAgICAgICogcGFyc2VyL0xleGVyLmg6CisgICAgICAg
IChKU0M6OkxleGVyOjppc1doaXRlU3BhY2UpOiBVc2UgdV9jaGFyVHlwZSBpbnN0ZWFkIG9mIFdU
Rjo6VW5pY29kZTo6aXNTZXBhcmF0b3JTcGFjZS4KKworICAgICAgICAqIHJ1bnRpbWUvSlNGdW5j
dGlvbi5jcHA6IFJlbW92ZWQgInVzaW5nIG5hbWVzcGFjZSIgZm9yIFdURjo6VW5pY29kZSwgdGhp
cyB3aWxsIG5vIGxvbmdlcgorICAgICAgICBjb21waWxlIHNpbmNlIHRoaXMgZG9lc24ndCBpbmNs
dWRlIGFueXRoaW5nIHRoYXQgZGVmaW5lcyB0aGF0IG5hbWVzcGFjZS4KKworICAgICAgICAqIHJ1
bnRpbWUvSlNHbG9iYWxPYmplY3RGdW5jdGlvbnMuY3BwOgorICAgICAgICAoSlNDOjppc1N0cldo
aXRlU3BhY2UpOiBVc2UgdV9jaGFyVHlwZSBpbnN0ZWFkIG9mIFdURjo6VW5pY29kZTo6aXNTZXBh
cmF0b3JTcGFjZS4KKworICAgICAgICAqIHlhcnIvWWFyckludGVycHJldGVyLmNwcDoKKyAgICAg
ICAgKEpTQzo6WWFycjo6Qnl0ZUNvbXBpbGVyOjphdG9tUGF0dGVybkNoYXJhY3Rlcik6IFVzZSB1
X3RvbG93ZXIgYW5kIHVfdG91cHBlciBpbnN0ZWFkIG9mCisgICAgICAgIFVuaWNvZGU6OnRvTG93
ZXIgYW5kIFVuaWNvZGU6OnRvVXBwZXIuIEFsc28gYWRkZWQgc29tZSBhc3NlcnRpb25zIHNpbmNl
IHRoaXMgY29kZSBhc3N1bWVzCisgICAgICAgIGl0IGNhbiBjb252ZXJ0IGFueSBVQ2hhciB0byBs
b3dlcmNhc2Ugb3IgdXBwZXJjYXNlIGluIGFub3RoZXIgVUNoYXIsIHdpdGggbm8gcmlzayBvZiBu
ZWVkaW5nCisgICAgICAgIGEgVUNoYXIzMiBmb3IgdGhlIHJlc3VsdC4gSSBndWVzcyB0aGF0J3Mg
cHJvYmFibHkgdHJ1ZSwgYnV0IGl0IHdvdWxkIGJlIGdvb2QgdG8ga25vdyBpbiBhCisgICAgICAg
IGRlYnVnIGJ1aWxkIGlmIG5vdC4KKwogMjAxMy0xMC0wOSAgT2xpdmVyIEh1bnQgIDxvbGl2ZXJA
YXBwbGUuY29tPgogCiAgICAgICAgIEZ1cnRoZXIgaW1wcm92ZSBBcnJheUl0ZXJhdG9yIHBlcmZv
cm1hbmNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5nZUxvZyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCmluZGV4IDVlMzU0MzQ3OGQ2NDM5Mjc4YjBmNTJiMjQ4OWZmZWI4MGEyYmNiMjQuLmQ5
MzdlNTg5YzA2NTEyN2I2MDFiOGJkZWJiYjNlODk3MjE1YzY3M2EgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTQg
QEAKKzIwMTMtMTAtMTAgIERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29tPgorCisgICAgICAg
IENoYW5nZSBtb3N0IGNhbGwgc2l0ZXMgdG8gY2FsbCBJQ1UgZGlyZWN0bHkgaW5zdGVhZCBvZiB0
aHJvdWdoIFdURjo6VW5pY29kZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTIyNjM1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgKiB3dGYvdGV4dC9TdHJpbmdIYXNoLmg6CisgICAgICAgIChXVEY6OkNhc2VG
b2xkaW5nSGFzaDo6Zm9sZENhc2UpOiBVc2UgdV9mb2xkQ2FzZSBpbnN0ZWFkIG9mIFdURjo6VW5p
Y29kZTo6Zm9sZENhc2UuCisgICAgICAgIChXVEY6OkNhc2VGb2xkaW5nSGFzaDo6aGFzaCk6IEFk
ZGVkIGFuIG92ZXJsb2FkIGZvciBhIFN0cmluZ0ltcGwmIGJlY2F1c2Ugd2h5IG5vdC4KKworICAg
ICAgICAqIHd0Zi90ZXh0L1N0cmluZ0ltcGwuY3BwOgorICAgICAgICAoV1RGOjpTdHJpbmdJbXBs
Ojpsb3dlcik6IFVzZSB1X3RvbG93ZXIgcmF0aGVyIHRoYW4gV1RGOjpVbmljb2RlOjp0b0xvd2Vy
LiBBbHNvIGFkZGVkCisgICAgICAgIGFuIGFzc2VydGlvbiB0byBjaGVjayB0aGF0IHRoZSBsb3dl
cmNhc2UgdmVyc2lvbiBpcyBhbHNvIHBhcnQgb2YgTGF0aW4tMS4gSWYgdGhpcworICAgICAgICBp
cyBub3QgZ3VhcmFudGVlZCBpdCB3b3VsZCBiZSBnb29kIHRvIGtub3cgaW4gYSBkZWJ1ZyBidWls
ZCBhdCBsZWFzdC4gVXNlIHVfc3RyVG9Mb3dlcgorICAgICAgICByYXRoZXIgdGhhbiBXVEY6OlVu
aWNvZGU6OnRvTG93ZXIuIEFsc28gcmVtb3ZlZCAjaWYgVVNFKElDVV9VTklDT0RFKSBhcm91bmQg
dGhlCisgICAgICAgIGxvY2FsZS1zcGVjaWZpYyB2ZXJzaW9uLgorICAgICAgICAoV1RGOjpTdHJp
bmdJbXBsOjp1cHBlcik6IFVzZSB1X3RvdXBwZXIgYW5kIHVfc3RyVG9VcHBlciwgYXMgYWJvdmUu
CisgICAgICAgIChXVEY6OlN0cmluZ0ltcGw6OmZvbGRDYXNlKTogVXNlIHVfdG9sb3dlciBhbmQg
dV9zdHJGb2xkQ2FzZSwgYXMgYWJvdmUuCisgICAgICAgIChXVEY6OmVxdWFsSWdub3JpbmdDYXNl
KTogVXNlIHVfZm9sZENhc2UgaW5zdGVhZCBvZiBXVEY6OlVuaWNvZGU6OmZvbGRDYXNlLgorICAg
ICAgICAoV1RGOjpTdHJpbmdJbXBsOjpkZWZhdWx0V3JpdGluZ0RpcmVjdGlvbik6IFVzZSB1X2No
YXJEaXJlY3Rpb24gYW5kIFVDaGFyRGlyZWN0aW9uCisgICAgICAgIGluc3RlYWQgb2YgV1RGOjpV
bmljb2RlOjpkaXJlY3Rpb24gYW5kIFdURjo6VW5pY29kZTo6RGlyZWN0aW9uLgorCisgICAgICAg
ICogd3RmL3RleHQvU3RyaW5nSW1wbC5oOgorICAgICAgICAoV1RGOjplcXVhbElnbm9yaW5nQ2Fz
ZSk6IFVzZSB1X21lbWNhc2VjbXAgaW5zdGVhZCBvZiBXVEY6OlVuaWNvZGU6OnVtZW1jYXNlY21w
LgorICAgICAgICAoV1RGOjppc1NwYWNlT3JOZXdsaW5lKTogVXNlIHVfY2hhckRpcmVjdGlvbiBp
bnN0ZWFkIG9mIFdURjo6VW5pY29kZTo6ZGlyZWN0aW9uLgorCisgICAgICAgICogd3RmL3RleHQv
V1RGU3RyaW5nLmg6CisgICAgICAgIChXVEY6OlN0cmluZzo6ZGVmYXVsdFdyaXRpbmdEaXJlY3Rp
b24pOiBVc2UgVUNoYXJEaXJlY3Rpb24gaW5zdGVhZCBvZiBXVEY6OlVuaWNvZGU6OkRpcmVjdGlv
bi4KKworICAgICAgICAqIHd0Zi91bmljb2RlL2ljdS9Vbmljb2RlSWN1Lmg6IFJlbW92ZWQgYWxt
b3N0IGV2ZXJ5dGhpbmcuCisKKyAgICAgICAgKiB3dGYvdW5pY29kZS93Y2hhci9Vbmljb2RlV2No
YXIuY3BwOiBUcmllZCB0byBkbyB0aGUgcmlnaHQgdGhpbmcgaW4gdGhpcyBmaWxlLCBidXQKKyAg
ICAgICAgSSBkaWQgbm90IGFjdHVhbGx5IGNvbXBpbGUgaXQuIEFsc28sIHRoZSBpbXBsZW1lbnRh
dGlvbnMgaGVyZSBhcmVuJ3QgcmVhbGx5IHN1ZmZpY2llbnQKKyAgICAgICAgdG8gbWFrZSBXZWJL
aXQgd29yayBicm9hZGx5LiBUaGVyZSBhcmUgbWFueSB0aGluZ3MgdGhhdCBqdXN0IGFyZW4ndCB3
b3JraW5nIHdpdGggdGhpcworICAgICAgICBpbXBsZW1lbnRhdGlvbiwgc3VjaCBhcyBwYXJzaW5n
IHRoYXQgdXNlcyB1X2NoYXJUeXBlIHRvIGZpZ3VyZSBvdXQgd2hpY2ggY2hhcmFjdGVycyBhcmUg
dmFsaWQuCisgICAgICAgICh1bm9ybV9ub3JtYWxpemUpOiBBZGRlZC4KKyAgICAgICAgKHVfY2hh
ckRpcmVjdGlvbik6IEFkZGVkLgorICAgICAgICAodV9jaGFyTWlycm9yKTogQWRkZWQuCisgICAg
ICAgICh1X2NoYXJUeXBlKTogQWRkZWQuCisgICAgICAgICh1X2dldENvbWJpbmluZ0NsYXNzKTog
QWRkZWQuCisgICAgICAgICh1X2dldEludFByb3BlcnR5VmFsdWUpOiBBZGRlZC4KKyAgICAgICAg
KHVfbWVtY2FzZWNtcCk6IEFkZGVkLgorICAgICAgICAoY29udmVydFdpdGhGdW5jdGlvbik6IENo
YW5nZWQgdG8gd29yayB3aXRoIElDVS1zdHlsZSBzdGF0dXMgY29kZSBpbnN0ZWFkIG9mIGVycm9y
IGJvb2wuCisgICAgICAgICh1X3N0ckZvbGRDYXNlKTogQWRkZWQuCisgICAgICAgICh1X3N0clRv
TG93ZXIpOiBBZGRlZC4KKyAgICAgICAgKHVfc3RyVG9VcHBlcik6IEFkZGVkLgorICAgICAgICAq
IHd0Zi91bmljb2RlL3djaGFyL1VuaWNvZGVXY2hhci5oOiBEaXR0by4gTGF0ZXIgdGhpcyBmaWxl
IHNob3VsZCBqdXN0IGJlIG5hbWVkIGxpa2UgdGhlCisgICAgICAgIHJlYWwgSUNVIGhlYWRlcnMg
c28gdGhlIGNvZGUgY2FuIGluY2x1ZGUgaXQgdGhlIHNhbWUgd2F5IGl0IHdvdWxkIElDVS4gQnV0
IHRoYXQgd2lsbCBiZQorICAgICAgICBpbiBhIGZ1dHVyZSBwYXRjaC4KKwogMjAxMy0xMC0wOSAg
RmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgogCiAgICAgICAgIEZUTDogU29mdC1saW5r
IExMVk0gYXMgYSB3b3JrYXJvdW5kIGZvciBMTFZNJ3Mgc3RhdGljIGluaXRpYWxpemVycyBhbmQg
ZXhpdC10aW1lIGRlc3RydWN0b3JzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VM
b2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMmUxYjAyM2Q2NmY2YWY0NjRiNTQ0
Y2YwNjI1MThkMmYzNGUxNWMxYi4uZjM4ZTdjNWVhYzcyZjkyZDFkYjVjMTE1ZWY3Nzc2ZWZiOGEz
MTcxMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2NyBAQAorMjAxMy0xMC0xMCAgRGFyaW4gQWRs
ZXIgIDxkYXJpbkBhcHBsZS5jb20+CisKKyAgICAgICAgQ2hhbmdlIG1vc3QgY2FsbCBzaXRlcyB0
byBjYWxsIElDVSBkaXJlY3RseSBpbnN0ZWFkIG9mIHRocm91Z2ggV1RGOjpVbmljb2RlCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjI2MzUKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIE1vZHVsZXMvaW5k
ZXhlZGRiL0lEQktleVBhdGguY3BwOgorICAgICAgICAoaXNJZGVudGlmaWVyU3RhcnRDaGFyYWN0
ZXIpOiBVc2UgVV9HRVRfR0NfTUFTSyBpbnN0ZWFkIG9mIFdURjo6VW5pY29kZTo6Y2F0ZWdvcnku
CisgICAgICAgIChpc0lkZW50aWZpZXJDaGFyYWN0ZXIpOiBEaXR0by4KKworICAgICAgICAqIGNz
cy9DU1NQYXJzZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6bWFrZUxvd2VyKTogVXNlIHVfdG9s
b3dlciBpbnN0ZWFkIG9mIFdURjo6VW5pY29kZTo6dG9Mb3dlci4KKyAgICAgICAgQWxzbyBhc3Nl
cnQgdGhlIGNoYXJhY3RlciBmaXRzIGluIGEgVUNoYXIuCisKKyAgICAgICAgKiBkb20vRG9jdW1l
bnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6aXNWYWxpZE5hbWVTdGFydCk6IFVzZSBVX0dFVF9H
Q19NQVNLIGluc3RlYWQgb2YgV1RGOjpVbmljb2RlOjpjYXRlZ29yeSwKKyAgICAgICAgYW5kIHVf
Z2V0SW50UHJvcGVydHlWYWx1ZSBpbnN0ZWFkIG9mIFdURjo6VW5pY29kZTo6ZGVjb21wb3NpdGlv
blR5cGUuCisgICAgICAgIChXZWJDb3JlOjppc1ZhbGlkTmFtZVBhcnQpOiBEaXR0by4KKyAgICAg
ICAgKFdlYkNvcmU6OmNhbm9uaWNhbGl6ZWRUaXRsZSk6IERpdHRvLgorCisgICAgICAgICogZWRp
dGluZy9FZGl0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjppbnNlcnRUZXh0V2l0
aG91dFNlbmRpbmdUZXh0RXZlbnQpOiBVc2UgdV9pc1B1bmN0IGluc3RlYWQgb2YKKyAgICAgICAg
V1RGOjpVbmljb2RlOjppc1B1bmN0LgorCisgICAgICAgICogZWRpdGluZy9UZXh0SXRlcmF0b3Iu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6U2VhcmNoQnVmZmVyOjphcHBlbmQpOiBVc2UgdV9zdHJG
b2xkQ2FzZSBpbnN0ZWFkIG9mIFdURjo6VW5pY29kZTo6Zm9sZENhc2UuCisKKyAgICAgICAgKiBo
dG1sL0hUTUxFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxFbGVtZW50OjpkaXJl
Y3Rpb25hbGl0eSk6IFVzZSBVQ2hhckRpcmVjdGlvbiBpbnN0ZWFkIG9mCisgICAgICAgIFdURjo6
VW5pY29kZTo6RGlyZWN0aW9uLgorCisgICAgICAgICogaHRtbC9IVE1MU2VsZWN0RWxlbWVudC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MU2VsZWN0RWxlbWVudDo6ZGVmYXVsdEV2ZW50SGFu
ZGxlcik6IFVzZSB1X2lzcHJpbnQgaW5zdGVhZCBvZgorICAgICAgICBXVEY6OlVuaWNvZGU6Omlz
UHJpbnRhYmxlQ2hhci4KKworICAgICAgICAqIGh0bWwvVHlwZUFoZWFkLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OnN0cmlwTGVhZGluZ1doaXRlU3BhY2UpOiBVc2UgdV9jaGFyRGlyZWN0aW9uIGlu
c3RlYWQgb2YKKyAgICAgICAgV1RGOjpVbmljb2RlOjpkaXJlY3Rpb24uCisKKyAgICAgICAgKiBo
dG1sL3RyYWNrL1RleHRUcmFja0N1ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjppc0N1ZVBhcmFn
cmFwaFNlcGFyYXRvcik6IFVzZSB1X2NoYXJUeXBlIGluc3RlYWQgb2YKKyAgICAgICAgV1RGOjpV
bmljb2RlOjpjYXRlZ29yeS4KKyAgICAgICAgKFdlYkNvcmU6OlRleHRUcmFja0N1ZTo6ZGV0ZXJt
aW5lVGV4dERpcmVjdGlvbik6IFVzZSB1X2NoYXJEaXJlY3Rpb24gaW5zdGVhZCBvZgorICAgICAg
ICBXVEY6OlVuaWNvZGU6OmRpcmVjdGlvbi4KKworICAgICAgICAqIHBhZ2UvQ29udGV4dE1lbnVD
b250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnNlbGVjdGlvbkNvbnRhaW5zUG9zc2li
bGVXb3JkKTogVXNlIFVfR0VUX0dDX01BU0sgaW5zdGVhZCBvZgorICAgICAgICBXVEY6OlVuaWNv
ZGU6OmNhdGVnb3J5LgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ZvbnQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6Rm9udDo6Y2FuUmVjZWl2ZVRleHRFbXBoYXNpcyk6IERpdHRvLgorCisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvRm9udEdseXBocy5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpGb250R2x5cGhzOjpnbHlwaERhdGFBbmRQYWdlRm9yQ2hhcmFjdGVyKTogVXNlIHVfdG91
cHBlciBpbnN0ZWFkIG9mCisgICAgICAgIFdURjo6VW5pY29kZTo6dG9VcHBlci4gVXNlIHVfY2hh
ck1pcnJvciBpbnN0ZWFkIG9mIFdURjo6VW5pY29kZTo6bWlycm9yZWRDaGFyLgorCisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlRleHRSdW5JdGVyYXRvcjo6ZGlyZWN0aW9uKTogVXNlIHVfY2hhckRpcmVjdGlvbiBpbnN0
ZWFkIG9mCisgICAgICAgIFdURjo6VW5pY29kZTo6ZGlyZWN0aW9uLgorCisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvU1ZHR2x5cGguY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y2hhcmFjdGVy
c1dpdGhBcmFiaWNGb3JtKTogVXNlIHVibG9ja19nZXRDb2RlIGluc3RlYWQgb2YKKyAgICAgICAg
V1RGOjpVbmljb2RlOjppc0FyYWJpY0NoYXIuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9TdXJyb2dhdGVQYWlyQXdhcmVUZXh0SXRlcmF0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
U3Vycm9nYXRlUGFpckF3YXJlVGV4dEl0ZXJhdG9yOjpub3JtYWxpemVWb2ljaW5nTWFya3MpOiBV
c2UKKyAgICAgICAgdV9nZXRDb21iaW5pbmdDbGFzcyBpbnN0ZWFkIG9mIFdURjo6VW5pY29kZTo6
Y29tYmluaW5nQ2xhc3MuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9XaWR0aEl0ZXJh
dG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldpZHRoSXRlcmF0b3I6OmFkdmFuY2VJbnRlcm5h
bCk6IFVzZSB1X3RvdXBwZXIgaW5zdGVhZCBvZgorICAgICAgICBXVEY6OlVuaWNvZGU6OnRvVXBw
ZXIuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9tYWMvQ29tcGxleFRleHRDb250cm9s
bGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbXBsZXhUZXh0Q29udHJvbGxlcjo6Y29sbGVj
dENvbXBsZXhUZXh0UnVucyk6IEFkZGVkIHNvbWUKKyAgICAgICAgYXNzZXJ0aW9ucyBhYm91dCB0
aGUgdXNlciBvZiB1X3RvdXBwZXIgYW5kIHR3ZWFrZWQgY29kaW5nIHN0eWxlIGEgYml0LgorCisg
ICAgICAgICogcGxhdGZvcm0vdGV4dC9CaWRpQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpCaWRpQ29udGV4dDo6Y3JlYXRlVW5jYWNoZWQpOiBVc2UgVUNoYXJEaXJlY3Rpb24gaW5zdGVh
ZCBvZgorICAgICAgICBXVEY6OlVuaWNvZGU6OkRpcmVjdGlvbi4KKyAgICAgICAgKFdlYkNvcmU6
OkJpZGlDb250ZXh0OjpjcmVhdGUpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OmNvcHlDb250
ZXh0QW5kUmViYXNlbGluZUxldmVsKTogRGl0dG8uCisgICAgICAgICogcGxhdGZvcm0vdGV4dC9C
aWRpQ29udGV4dC5oOgorICAgICAgICAoV2ViQ29yZTo6QmlkaUNvbnRleHQ6OmRpcik6IERpdHRv
LgorICAgICAgICAoV2ViQ29yZTo6QmlkaUNvbnRleHQ6OkJpZGlDb250ZXh0KTogRGl0dG8uCisg
ICAgICAgICogcGxhdGZvcm0vdGV4dC9CaWRpUmVzb2x2ZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6
OkJpZGlTdGF0dXM6OkJpZGlTdGF0dXMpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkJpZGlF
bWJlZGRpbmc6OkJpZGlFbWJlZGRpbmcpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkJpZGlF
bWJlZGRpbmc6OmRpcmVjdGlvbik6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6QmlkaUNoYXJh
Y3RlclJ1bjo6QmlkaUNoYXJhY3RlclJ1bik6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6Qmlk
aVJlc29sdmVyOjpCaWRpUmVzb2x2ZXIpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkJpZGlS
ZXNvbHZlcjo6c2V0TGFzdERpcik6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6QmlkaVJlc29s
dmVyOjpzZXRMYXN0U3Ryb25nRGlyKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpCaWRpUmVz
b2x2ZXI6OnNldEVvckRpcik6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6QmlkaVJlc29sdmVy
OjpkaXIpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkJpZGlSZXNvbHZlcjo6c2V0RGlyKTog
RGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpCaWRpUmVzb2x2ZXI6OmFwcGVuZFJ1bik6IERpdHRv
LgorICAgICAgICAoV2ViQ29yZTo6QmlkaVJlc29sdmVyOjplbWJlZCk6IERpdHRvLgorICAgICAg
ICAoV2ViQ29yZTo6QmlkaVJlc29sdmVyOjpjaGVja0RpcmVjdGlvbkluTG93ZXJSYWlzZUVtYmVk
ZGluZ0xldmVsKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpCaWRpUmVzb2x2ZXI6Omxvd2Vy
RXhwbGljaXRFbWJlZGRpbmdMZXZlbCk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6QmlkaVJl
c29sdmVyOjpyYWlzZUV4cGxpY2l0RW1iZWRkaW5nTGV2ZWwpOiBEaXR0by4KKyAgICAgICAgKFdl
YkNvcmU6OkJpZGlSZXNvbHZlcjo6Y29tbWl0RXhwbGljaXRFbWJlZGRpbmcpOiBEaXR0by4KKyAg
ICAgICAgKFdlYkNvcmU6OkJpZGlSZXNvbHZlcjo6dXBkYXRlU3RhdHVzTGFzdEZyb21DdXJyZW50
RGlyZWN0aW9uKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpCaWRpUmVzb2x2ZXI6OmNyZWF0
ZUJpZGlSdW5zRm9yTGluZSk6IERpdHRvLgorCisgICAgICAgICogcGxhdGZvcm0vdGV4dC9TZWdt
ZW50ZWRTdHJpbmcuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNlZ21lbnRlZFN0cmluZzo6YWR2YW5j
ZUFuZEFTU0VSVElnbm9yaW5nQ2FzZSk6IFVzZSB1X2ZvbGRDYXNlCisgICAgICAgIGluc3RlYWQg
b2YgV1RGOjpVbmljb2RlOjpmb2xkQ2FzZS4KKworICAgICAgICAqIHBsYXRmb3JtL3RleHQvVGV4
dEJvdW5kYXJpZXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6ZmluZE5leHRXb3JkRnJvbUluZGV4
KTogVXNlIHVfaXNhbG51bSBpbnN0ZWFkIG9mCisgICAgICAgIFdURjo6VW5pY29kZTo6aXNBbHBo
YW51bWVyaWMuCisKKyAgICAgICAgKiBwbGF0Zm9ybS90ZXh0L1RleHRCb3VuZGFyaWVzLmg6Cisg
ICAgICAgIChXZWJDb3JlOjpyZXF1aXJlc0NvbnRleHRGb3JXb3JkQm91bmRhcnkpOiBVc2UgdV9n
ZXRJbnRQcm9wZXJ0eVZhbHVlIGRpcmVjdGx5CisgICAgICAgIGluc3RlYWQgb2YgV1RGOjpVbmlj
b2RlOjpyZXF1aXJlc0NvbXBsZXhDb250ZXh0Rm9yV29yZEJyZWFraW5nLgorCisgICAgICAgICog
cGxhdGZvcm0vdGV4dC9tYWMvVGV4dEJvdW5kYXJpZXMubW06IFJlbW92ZWQgZXhwbGljaXQgdXNl
IG9mIFdURjo6VW5pY29kZSwKKyAgICAgICAgd2hpY2ggd2FzIHVubmVlZGVkIGFuZCBhbHNvIHdp
bGwgbm8gbG9uZ2VyIGNvbXBpbGUuCisKKyAgICAgICAgKiByZW5kZXJpbmcvQmlkaVJ1bi5oOgor
ICAgICAgICAoV2ViQ29yZTo6QmlkaVJ1bjo6QmlkaVJ1bik6IFVzZSBVQ2hhckRpcmVjdGlvbiBp
bnN0ZWFkIG9mIFdURjo6VW5pY29kZTo6RGlyZWN0aW9uLgorICAgICAgICAqIHJlbmRlcmluZy9J
bmxpbmVGbG93Qm94Lmg6IERpdHRvLgorICAgICAgICAqIHJlbmRlcmluZy9JbmxpbmVJdGVyYXRv
ci5oOgorICAgICAgICAoV2ViQ29yZTo6ZW1iZWRDaGFyRnJvbURpcmVjdGlvbik6IERpdHRvLgor
ICAgICAgICAoV2ViQ29yZTo6bm90aWZ5T2JzZXJ2ZXJXaWxsRXhpdE9iamVjdCk6IERpdHRvLgor
ICAgICAgICAoV2ViQ29yZTo6SW5saW5lSXRlcmF0b3I6OmRpcmVjdGlvbik6IERpdHRvLgorICAg
ICAgICAoV2ViQ29yZTo6SXNvbGF0ZVRyYWNrZXI6OmVtYmVkKTogRGl0dG8uCisgICAgICAgIChX
ZWJDb3JlOjpJbmxpbmVCaWRpUmVzb2x2ZXI6OmFwcGVuZFJ1bik6IERpdHRvLgorCisgICAgICAg
ICogcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmlzUHVuY3R1
YXRpb25Gb3JGaXJzdExldHRlcik6IFVzZSBVX0dFVF9HQ19NQVNLIGluc3RlYWQgb2YKKyAgICAg
ICAgV1RGOjpVbmljb2RlOjpjYXRlZ29yeS4KKworICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJC
bG9ja0xpbmVMYXlvdXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6ZGV0ZXJtaW5lRGlyZWN0aW9u
YWxpdHkpOiBVc2UgdV9jaGFyRGlyZWN0aW9uIGluc3RlYWQgb2YKKyAgICAgICAgV1RGOjpVbmlj
b2RlOjpkaXJlY3Rpb24uCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9ja0Zsb3c6OmhhbmRs
ZVRyYWlsaW5nU3BhY2VzKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpzdGF0dXNXaXRoRGly
ZWN0aW9uKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpMaW5lQnJlYWtlcjo6bmV4dFNlZ21l
bnRCcmVhayk6IFVzZSBVX0dFVF9HQ19NQVNLIGluc3RlYWQgb2YgCisgICAgICAgIFdURjo6VW5p
Y29kZTo6Y2F0ZWdvcnkuCisKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGlzdE1hcmtlci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMaXN0TWFya2VyOjpwYWludCk6IFVzZSB1X2No
YXJEaXJlY3Rpb24gaW5zdGVhZCBvZiAKKyAgICAgICAgV1RGOjpVbmljb2RlOjpkaXJlY3Rpb24u
CisKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTWVudUxpc3QuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyTWVudUxpc3Q6OmFkanVzdElubmVyU3R5bGUpOiBVc2UgVUNoYXJEaXJlY3Rp
b24gaW5zdGVhZCBvZgorICAgICAgICBXVEY6OlVuaWNvZGU6OkRpcmVjdGlvbi4KKworICAgICAg
ICAqIHJlbmRlcmluZy9SZW5kZXJUZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Om1ha2VDYXBp
dGFsaXplZCk6IFVzZSB1X3RvdGlsZSBpbnN0ZWFkIG9mIFdURjo6VW5pY29kZTo6dG9UaXRsZUNh
c2UuCisgICAgICAgIEFsc28gYWRkZWQgYSBjb21tZW50IGFib3V0IHRoZSBmYWN0IHRoYXQgd2Ug
bmVlZCB0byB1c2UgdV9zdHJUb1RpdGxlIGluc3RlYWQuCisKKyAgICAgICAgKiByZW5kZXJpbmcv
Um9vdElubGluZUJveC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSb290SW5saW5lQm94OjpsaW5l
QnJlYWtCaWRpU3RhdHVzKTogVXNlIFVDaGFyRGlyZWN0aW9uIGluc3RlYWQgb2YKKyAgICAgICAg
V1RGOjpVbmljb2RlOjpEaXJlY3Rpb24uCisKKyAgICAgICAgKiBzdmcvU1ZHRm9udERhdGEuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6U1ZHRm9udERhdGE6OmNyZWF0ZVN0cmluZ1dpdGhNaXJyb3Jl
ZENoYXJhY3RlcnMpOiBVc2UgdV9jaGFyTWlycm9yCisgICAgICAgIGluc3RlYWQgb2YgV1RGOjpV
bmljb2RlOjptaXJyb3JlZENoYXIuCisKKyAgICAgICAgKiB4bWwvWFBhdGhQYXJzZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6WFBhdGg6OmNoYXJDYXQpOiBVc2UgVV9HRVRfR0NfTUFTSyBpbnN0
ZWFkIG9mIFdURjo6VW5pY29kZTo6Y2F0ZWdvcnkuCisKIDIwMTMtMTAtMTAgIEFuZHJlYXMgS2xp
bmcgIDxha2xpbmdAYXBwbGUuY29tPgogCiAgICAgICAgIEtpbGwgV2ViQ29yZTo6QmluZGluZ1N0
YXRlLgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9MZXhlci5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL0xleGVyLmNwcAppbmRleCAzYzBjOTE0ODk2
YmNmNjZhOGY2NDQ5Zjg2MTNkZGQxYWFlM2RlMzI1Li5mYjYyYjk3M2YyOGJlMzNkODY4ODg1YWQ1
YjliOWY0ODQ2ZmMxZGQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2Vy
L0xleGVyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL0xleGVyLmNwcApA
QCAtMzcsOSArMzcsNiBAQAogI2luY2x1ZGUgPHN0cmluZy5oPgogI2luY2x1ZGUgPHd0Zi9Bc3Nl
cnRpb25zLmg+CiAKLXVzaW5nIG5hbWVzcGFjZSBXVEY7Ci11c2luZyBuYW1lc3BhY2UgVW5pY29k
ZTsKLQogI2luY2x1ZGUgIktleXdvcmRMb29rdXAuaCIKICNpbmNsdWRlICJMZXhlci5sdXQuaCIK
ICNpbmNsdWRlICJQYXJzZXIuaCIKQEAgLTYzNyw5ICs2MzQsOSBAQCBBTFdBWVNfSU5MSU5FIGJv
b2wgTGV4ZXI8VD46Omxhc3RUb2tlbldhc1Jlc3RyS2V5d29yZCgpIGNvbnN0CiAgICAgcmV0dXJu
IG1fbGFzdFRva2VuID09IENPTlRJTlVFIHx8IG1fbGFzdFRva2VuID09IEJSRUFLIHx8IG1fbGFz
dFRva2VuID09IFJFVFVSTiB8fCBtX2xhc3RUb2tlbiA9PSBUSFJPVzsKIH0KIAotc3RhdGljIE5F
VkVSX0lOTElORSBib29sIGlzTm9uTGF0aW4xSWRlbnRTdGFydChpbnQgYykKK3N0YXRpYyBORVZF
Ul9JTkxJTkUgYm9vbCBpc05vbkxhdGluMUlkZW50U3RhcnQoVUNoYXIgYykKIHsKLSAgICByZXR1
cm4gY2F0ZWdvcnkoYykgJiAoTGV0dGVyX1VwcGVyY2FzZSB8IExldHRlcl9Mb3dlcmNhc2UgfCBM
ZXR0ZXJfVGl0bGVjYXNlIHwgTGV0dGVyX01vZGlmaWVyIHwgTGV0dGVyX090aGVyKTsKKyAgICBy
ZXR1cm4gVV9HRVRfR0NfTUFTSyhjKSAmIFVfR0NfTF9NQVNLOwogfQogCiBzdGF0aWMgQUxXQVlT
X0lOTElORSBib29sIGlzTGF0aW4xKExDaGFyKQpAQCAtNjY0LDggKzY2MSw3IEBAIHN0YXRpYyBp
bmxpbmUgYm9vbCBpc0lkZW50U3RhcnQoVUNoYXIgYykKIAogc3RhdGljIE5FVkVSX0lOTElORSBi
b29sIGlzTm9uTGF0aW4xSWRlbnRQYXJ0KGludCBjKQogewotICAgIHJldHVybiAoY2F0ZWdvcnko
YykgJiAoTGV0dGVyX1VwcGVyY2FzZSB8IExldHRlcl9Mb3dlcmNhc2UgfCBMZXR0ZXJfVGl0bGVj
YXNlIHwgTGV0dGVyX01vZGlmaWVyIHwgTGV0dGVyX090aGVyCi0gICAgICAgIHwgTWFya19Ob25T
cGFjaW5nIHwgTWFya19TcGFjaW5nQ29tYmluaW5nIHwgTnVtYmVyX0RlY2ltYWxEaWdpdCB8IFB1
bmN0dWF0aW9uX0Nvbm5lY3RvcikpIHx8IGMgPT0gMHgyMDBDIHx8IGMgPT0gMHgyMDBEOworICAg
IHJldHVybiAoVV9HRVRfR0NfTUFTSyhjKSAmIChVX0dDX0xfTUFTSyB8IFVfR0NfTU5fTUFTSyB8
IFVfR0NfTUNfTUFTSyB8IFVfR0NfTkRfTUFTSyB8IFVfR0NfUENfTUFTSykpIHx8IGMgPT0gMHgy
MDBDIHx8IGMgPT0gMHgyMDBEOwogfQogCiBzdGF0aWMgQUxXQVlTX0lOTElORSBib29sIGlzSWRl
bnRQYXJ0KExDaGFyIGMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2Vy
L0xleGVyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL0xleGVyLmgKaW5kZXggMTM3
ZmY1ZmI2NDQxNDEzM2I5NzcyZTM2NjBmZTUzMWQwMGUxMDY0Yy4uNTFjOWExZDk4ZDQ2NDJmYzEy
ZDVjZDlhYzMxODhmZTcyMjlmMTQ4OSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3BhcnNlci9MZXhlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTGV4ZXIu
aApAQCAtMjQ4LDcgKzI0OCw3IEBAIEFMV0FZU19JTkxJTkUgYm9vbCBMZXhlcjxMQ2hhcj46Omlz
V2hpdGVTcGFjZShMQ2hhciBjaCkKIHRlbXBsYXRlIDw+CiBBTFdBWVNfSU5MSU5FIGJvb2wgTGV4
ZXI8VUNoYXI+Ojppc1doaXRlU3BhY2UoVUNoYXIgY2gpCiB7Ci0gICAgcmV0dXJuIChjaCA8IDI1
NikgPyBMZXhlcjxMQ2hhcj46OmlzV2hpdGVTcGFjZShzdGF0aWNfY2FzdDxMQ2hhcj4oY2gpKSA6
IChXVEY6OlVuaWNvZGU6OmlzU2VwYXJhdG9yU3BhY2UoY2gpIHx8IGNoID09IDB4RkVGRik7Cisg
ICAgcmV0dXJuIChjaCA8IDI1NikgPyBMZXhlcjxMQ2hhcj46OmlzV2hpdGVTcGFjZShzdGF0aWNf
Y2FzdDxMQ2hhcj4oY2gpKSA6ICh1X2NoYXJUeXBlKGNoKSA9PSBVX1NQQUNFX1NFUEFSQVRPUiB8
fCBjaCA9PSAweEZFRkYpOwogfQogCiB0ZW1wbGF0ZSA8PgpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0Z1bmN0aW9uLmNwcAppbmRleCBjMTA2MGI5Zjg0YTIxNDdiYTg3ZDIwYTE3
NjYwMTkzMjI0ZDlmMGRkLi4yNzA1OTU3OGU2ZWNiZTFjYmFhMTY1YTJkNzFkNjcwMGVlODA0MmQ1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmNwcApAQCAt
NDUsMTAgKzQ1LDggQEAKICNpbmNsdWRlICJQcm9wZXJ0eU5hbWVBcnJheS5oIgogI2luY2x1ZGUg
IlN0YWNrVmlzaXRvci5oIgogCi11c2luZyBuYW1lc3BhY2UgV1RGOwotdXNpbmcgbmFtZXNwYWNl
IFVuaWNvZGU7Ci0KIG5hbWVzcGFjZSBKU0MgeworCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGNhbGxIb3N0RnVuY3Rpb25Bc0NvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogZXhlYykKIHsKICAg
ICByZXR1cm4gdGhyb3dWTUVycm9yKGV4ZWMsIGNyZWF0ZU5vdEFDb25zdHJ1Y3RvckVycm9yKGV4
ZWMsIGV4ZWMtPmNhbGxlZSgpKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0dsb2JhbE9iamVjdEZ1bmN0aW9ucy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0dsb2JhbE9iamVjdEZ1bmN0aW9ucy5jcHAKaW5kZXggYTRkMTk0YzBjYjA5
ZjI3OTI4Njc1ZDBlMzVmOGYwYTc2MTg4OWE5My4uOTIwMDU2N2UxNDliYTE1YzU0ZGRkYWI5MDQ0
ZTVmMGZkY2FkMjQzOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNHbG9iYWxPYmplY3RGdW5jdGlvbnMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTR2xvYmFsT2JqZWN0RnVuY3Rpb25zLmNwcApAQCAtMTY5LDcgKzE2OSw3IEBAIGJv
b2wgaXNTdHJXaGl0ZVNwYWNlKFVDaGFyIGMpCiAgICAgICAgIGNhc2UgMHhGRUZGOgogICAgICAg
ICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICByZXR1cm4g
YyA+IDB4ZmYgJiYgaXNTZXBhcmF0b3JTcGFjZShjKTsKKyAgICAgICAgICAgIHJldHVybiBjID4g
MHhGRiAmJiB1X2NoYXJUeXBlKGMpID09IFVfU1BBQ0VfU0VQQVJBVE9SOwogICAgIH0KIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIvWWFyckludGVycHJldGVyLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS95YXJyL1lhcnJJbnRlcnByZXRlci5jcHAKaW5kZXgg
ZjAzMTJlYTI1MTlhYzNkOGM2OTllODhkMTk2MTk2ZDYwNmQ0NjhkMy4uZTc3NWFkNjI0MjgxZTQ2
NjViMzJmZGJhMTQwMWRkYjU4MmFlZjc3ZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3lhcnIvWWFyckludGVycHJldGVyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
eWFyci9ZYXJySW50ZXJwcmV0ZXIuY3BwCkBAIC0xNTEwLDggKzE1MTAsMTEgQEAgcHVibGljOgog
ICAgIHZvaWQgYXRvbVBhdHRlcm5DaGFyYWN0ZXIoVUNoYXIgY2gsIHVuc2lnbmVkIGlucHV0UG9z
aXRpb24sIHVuc2lnbmVkIGZyYW1lTG9jYXRpb24sIENoZWNrZWQ8dW5zaWduZWQ+IHF1YW50aXR5
Q291bnQsIFF1YW50aWZpZXJUeXBlIHF1YW50aXR5VHlwZSkKICAgICB7CiAgICAgICAgIGlmICht
X3BhdHRlcm4ubV9pZ25vcmVDYXNlKSB7Ci0gICAgICAgICAgICBVQ2hhciBsbyA9IFVuaWNvZGU6
OnRvTG93ZXIoY2gpOwotICAgICAgICAgICAgVUNoYXIgaGkgPSBVbmljb2RlOjp0b1VwcGVyKGNo
KTsKKyAgICAgICAgICAgIEFTU0VSVCh1X3RvbG93ZXIoY2gpIDw9IDB4RkZGRik7CisgICAgICAg
ICAgICBBU1NFUlQodV90b3VwcGVyKGNoKSA8PSAweEZGRkYpOworCisgICAgICAgICAgICBVQ2hh
ciBsbyA9IHVfdG9sb3dlcihjaCk7CisgICAgICAgICAgICBVQ2hhciBoaSA9IHVfdG91cHBlcihj
aCk7CiAKICAgICAgICAgICAgIGlmIChsbyAhPSBoaSkgewogICAgICAgICAgICAgICAgIG1fYm9k
eURpc2p1bmN0aW9uLT50ZXJtcy5hcHBlbmQoQnl0ZVRlcm0obG8sIGhpLCBpbnB1dFBvc2l0aW9u
LCBmcmFtZUxvY2F0aW9uLCBxdWFudGl0eUNvdW50LCBxdWFudGl0eVR5cGUpKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nSGFzaC5oIGIvU291cmNlL1dURi93dGYvdGV4
dC9TdHJpbmdIYXNoLmgKaW5kZXggMTA0MzA3NDhhMDEwMDQwNzg5YmRlODQxYWVkYmMwMjFkOWE1
MzNmNC4uZjA0NjA0YjQ1ZTZiMDEzYjhlMGQ5NzAxM2NkMzdkYWFjMzMyNTk4YSAxMDA2NDQKLS0t
IGEvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdIYXNoLmgKKysrIGIvU291cmNlL1dURi93dGYv
dGV4dC9TdHJpbmdIYXNoLmgKQEAgLTczLDI2ICs3MywzMSBAQCBuYW1lc3BhY2UgV1RGIHsKIAog
ICAgIGNsYXNzIENhc2VGb2xkaW5nSGFzaCB7CiAgICAgcHVibGljOgotICAgICAgICB0ZW1wbGF0
ZTx0eXBlbmFtZSBUPiBzdGF0aWMgaW5saW5lIFVDaGFyIGZvbGRDYXNlKFQgY2gpCisgICAgICAg
IHRlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0YXRpYyBpbmxpbmUgVUNoYXIgZm9sZENhc2UoVCBjaGFy
YWN0ZXIpCiAgICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBXVEY6OlVuaWNvZGU6OmZvbGRD
YXNlKGNoKTsKKyAgICAgICAgICAgIHJldHVybiB1X2ZvbGRDYXNlKGNoYXJhY3RlciwgVV9GT0xE
X0NBU0VfREVGQVVMVCk7CiAgICAgICAgIH0KIAogICAgICAgICBzdGF0aWMgdW5zaWduZWQgaGFz
aChjb25zdCBVQ2hhciogZGF0YSwgdW5zaWduZWQgbGVuZ3RoKQogICAgICAgICB7Ci0gICAgICAg
ICAgICByZXR1cm4gU3RyaW5nSGFzaGVyOjpjb21wdXRlSGFzaEFuZE1hc2tUb3A4Qml0czxVQ2hh
ciwgZm9sZENhc2U8VUNoYXI+ID4oZGF0YSwgbGVuZ3RoKTsKKyAgICAgICAgICAgIHJldHVybiBT
dHJpbmdIYXNoZXI6OmNvbXB1dGVIYXNoQW5kTWFza1RvcDhCaXRzPFVDaGFyLCBmb2xkQ2FzZTxV
Q2hhcj4+KGRhdGEsIGxlbmd0aCk7CiAgICAgICAgIH0KIAotICAgICAgICBzdGF0aWMgdW5zaWdu
ZWQgaGFzaChTdHJpbmdJbXBsKiBzdHIpCisgICAgICAgIHN0YXRpYyB1bnNpZ25lZCBoYXNoKFN0
cmluZ0ltcGwmIHN0cmluZykKICAgICAgICAgewotICAgICAgICAgICAgaWYgKHN0ci0+aXM4Qml0
KCkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIGhhc2goc3RyLT5jaGFyYWN0ZXJzOCgpLCBzdHIt
Pmxlbmd0aCgpKTsKLSAgICAgICAgICAgIHJldHVybiBoYXNoKHN0ci0+Y2hhcmFjdGVyczE2KCks
IHN0ci0+bGVuZ3RoKCkpOworICAgICAgICAgICAgaWYgKHN0cmluZy5pczhCaXQoKSkKKyAgICAg
ICAgICAgICAgICByZXR1cm4gaGFzaChzdHJpbmcuY2hhcmFjdGVyczgoKSwgc3RyaW5nLmxlbmd0
aCgpKTsKKyAgICAgICAgICAgIHJldHVybiBoYXNoKHN0cmluZy5jaGFyYWN0ZXJzMTYoKSwgc3Ry
aW5nLmxlbmd0aCgpKTsKKyAgICAgICAgfQorICAgICAgICBzdGF0aWMgdW5zaWduZWQgaGFzaChT
dHJpbmdJbXBsKiBzdHJpbmcpCisgICAgICAgIHsKKyAgICAgICAgICAgIEFTU0VSVChzdHJpbmcp
OworICAgICAgICAgICAgcmV0dXJuIGhhc2goKnN0cmluZyk7CiAgICAgICAgIH0KIAogICAgICAg
ICBzdGF0aWMgdW5zaWduZWQgaGFzaChjb25zdCBMQ2hhciogZGF0YSwgdW5zaWduZWQgbGVuZ3Ro
KQogICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gU3RyaW5nSGFzaGVyOjpjb21wdXRlSGFz
aEFuZE1hc2tUb3A4Qml0czxMQ2hhciwgZm9sZENhc2U8TENoYXI+ID4oZGF0YSwgbGVuZ3RoKTsK
KyAgICAgICAgICAgIHJldHVybiBTdHJpbmdIYXNoZXI6OmNvbXB1dGVIYXNoQW5kTWFza1RvcDhC
aXRzPExDaGFyLCBmb2xkQ2FzZTxMQ2hhcj4+KGRhdGEsIGxlbmd0aCk7CiAgICAgICAgIH0KIAog
ICAgICAgICBzdGF0aWMgaW5saW5lIHVuc2lnbmVkIGhhc2goY29uc3QgY2hhciogZGF0YSwgdW5z
aWduZWQgbGVuZ3RoKQpAQCAtMTA3LDcgKzExMiw3IEBAIG5hbWVzcGFjZSBXVEYgewogCiAgICAg
ICAgIHN0YXRpYyB1bnNpZ25lZCBoYXNoKGNvbnN0IFJlZlB0cjxTdHJpbmdJbXBsPiYga2V5KSAK
ICAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIGhhc2goa2V5LmdldCgpKTsKKyAgICAgICAg
ICAgIHJldHVybiBoYXNoKCprZXkpOwogICAgICAgICB9CiAKICAgICAgICAgc3RhdGljIGJvb2wg
ZXF1YWwoY29uc3QgUmVmUHRyPFN0cmluZ0ltcGw+JiBhLCBjb25zdCBSZWZQdHI8U3RyaW5nSW1w
bD4mIGIpCkBAIC0xMjksNyArMTM0LDkgQEAgbmFtZXNwYWNlIFdURiB7CiAgICAgICAgIH0KICAg
ICAgICAgc3RhdGljIGJvb2wgZXF1YWwoY29uc3QgQXRvbWljU3RyaW5nJiBhLCBjb25zdCBBdG9t
aWNTdHJpbmcmIGIpCiAgICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiAoYSA9PSBiKSB8fCBl
cXVhbChhLmltcGwoKSwgYi5pbXBsKCkpOworICAgICAgICAgICAgLy8gRklYTUU6IElzIHRoZSAi
YSA9PSBiIiBoZXJlIGEgaGVscGZ1bCBvcHRpbWl6YXRpb24/CisgICAgICAgICAgICAvLyBJdCBt
YWtlcyBhbGwgY2FzZXMgd2hlcmUgdGhlIHN0cmluZ3MgYXJlIG5vdCBpZGVudGljYWwgc2xpZ2h0
bHkgc2xvd2VyLgorICAgICAgICAgICAgcmV0dXJuIGEgPT0gYiB8fCBlcXVhbChhLmltcGwoKSwg
Yi5pbXBsKCkpOwogICAgICAgICB9CiAKICAgICAgICAgc3RhdGljIGNvbnN0IGJvb2wgc2FmZVRv
Q29tcGFyZVRvRW1wdHlPckRlbGV0ZWQgPSBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYv
d3RmL3RleHQvU3RyaW5nSW1wbC5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ0ltcGwu
Y3BwCmluZGV4IDQxMDMwZTA0MzRjNTJhOTk5NTNjNjI5MmJmNTA1NmNkZDVkN2ZlNGEuLmQwNzlk
ZWQwY2NjZGI3N2I1Mzc5MDQ2YmEzZmQ5NTJlZmVhYWEzYWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
VEYvd3RmL3RleHQvU3RyaW5nSW1wbC5jcHAKKysrIGIvU291cmNlL1dURi93dGYvdGV4dC9TdHJp
bmdJbXBsLmNwcApAQCAtNDE1LDggKzQxNSwxMCBAQCBTbG93UGF0aDhiaXRMb3dlcjoKICAgICAg
ICAgICAgIExDaGFyIGNoYXJhY3RlciA9IG1fZGF0YThbaV07CiAgICAgICAgICAgICBpZiAoIShj
aGFyYWN0ZXIgJiB+MHg3RikpCiAgICAgICAgICAgICAgICAgZGF0YThbaV0gPSB0b0FTQ0lJTG93
ZXIoY2hhcmFjdGVyKTsKLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICBkYXRhOFtp
XSA9IHN0YXRpY19jYXN0PExDaGFyPihVbmljb2RlOjp0b0xvd2VyKGNoYXJhY3RlcikpOworICAg
ICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgQVNTRVJUKHVfdG9sb3dlcihjaGFyYWN0
ZXIpIDw9IDB4RkYpOworICAgICAgICAgICAgICAgIGRhdGE4W2ldID0gc3RhdGljX2Nhc3Q8TENo
YXI+KHVfdG9sb3dlcihjaGFyYWN0ZXIpKTsKKyAgICAgICAgICAgIH0KICAgICAgICAgfQogCiAg
ICAgICAgIHJldHVybiBuZXdJbXBsLnJlbGVhc2UoKTsKQEAgLTQ1MywxNCArNDU1LDE1IEBAIFNs
b3dQYXRoOGJpdExvd2VyOgogICAgIFVDaGFyKiBkYXRhMTY7CiAgICAgUmVmUHRyPFN0cmluZ0lt
cGw+IG5ld0ltcGwgPSBjcmVhdGVVbmluaXRpYWxpemVkSW50ZXJuYWxOb25FbXB0eShtX2xlbmd0
aCwgZGF0YTE2KTsKIAotICAgIGJvb2wgZXJyb3I7Ci0gICAgaW50MzJfdCByZWFsTGVuZ3RoID0g
VW5pY29kZTo6dG9Mb3dlcihkYXRhMTYsIGxlbmd0aCwgbV9kYXRhMTYsIG1fbGVuZ3RoLCAmZXJy
b3IpOwotICAgIGlmICghZXJyb3IgJiYgcmVhbExlbmd0aCA9PSBsZW5ndGgpCisgICAgVUVycm9y
Q29kZSBzdGF0dXMgPSBVX1pFUk9fRVJST1I7CisgICAgaW50MzJfdCByZWFsTGVuZ3RoID0gdV9z
dHJUb0xvd2VyKGRhdGExNiwgbGVuZ3RoLCBtX2RhdGExNiwgbV9sZW5ndGgsICIiLCAmc3RhdHVz
KTsKKyAgICBpZiAoVV9TVUNDRVNTKHN0YXR1cykgJiYgcmVhbExlbmd0aCA9PSBsZW5ndGgpCiAg
ICAgICAgIHJldHVybiBuZXdJbXBsLnJlbGVhc2UoKTsKIAogICAgIG5ld0ltcGwgPSBjcmVhdGVV
bmluaXRpYWxpemVkKHJlYWxMZW5ndGgsIGRhdGExNik7Ci0gICAgVW5pY29kZTo6dG9Mb3dlcihk
YXRhMTYsIHJlYWxMZW5ndGgsIG1fZGF0YTE2LCBtX2xlbmd0aCwgJmVycm9yKTsKLSAgICBpZiAo
ZXJyb3IpCisgICAgc3RhdHVzID0gVV9aRVJPX0VSUk9SOworICAgIHVfc3RyVG9Mb3dlcihkYXRh
MTYsIHJlYWxMZW5ndGgsIG1fZGF0YTE2LCBtX2xlbmd0aCwgIiIsICZzdGF0dXMpOworICAgIGlm
IChVX0ZBSUxVUkUoc3RhdHVzKSkKICAgICAgICAgcmV0dXJuIHRoaXM7CiAgICAgcmV0dXJuIG5l
d0ltcGwucmVsZWFzZSgpOwogfQpAQCAtNTA2LDcgKzUwOSw4IEBAIFBhc3NSZWZQdHI8U3RyaW5n
SW1wbD4gU3RyaW5nSW1wbDo6dXBwZXIoKQogICAgICAgICAgICAgTENoYXIgYyA9IG1fZGF0YThb
aV07CiAgICAgICAgICAgICBpZiAoVU5MSUtFTFkoYyA9PSBzbWFsbExldHRlclNoYXJwUykpCiAg
ICAgICAgICAgICAgICAgKytudW1iZXJTaGFycFNDaGFyYWN0ZXJzOwotICAgICAgICAgICAgVUNo
YXIgdXBwZXIgPSBVbmljb2RlOjp0b1VwcGVyKGMpOworICAgICAgICAgICAgQVNTRVJUKHVfdG91
cHBlcihjKSA8PSAweEZGRkYpOworICAgICAgICAgICAgVUNoYXIgdXBwZXIgPSB1X3RvdXBwZXIo
Yyk7CiAgICAgICAgICAgICBpZiAoVU5MSUtFTFkodXBwZXIgPiAweGZmKSkgewogICAgICAgICAg
ICAgICAgIC8vIFNpbmNlIHRoaXMgdXBwZXItY2FzZWQgY2hhcmFjdGVyIGRvZXMgbm90IGZpdCBp
biBhbiA4LWJpdCBzdHJpbmcsIHdlIG5lZWQgdG8gdGFrZSB0aGUgMTYtYml0IHBhdGguCiAgICAg
ICAgICAgICAgICAgZ290byB1cGNvbnZlcnQ7CkBAIC01MjcsOCArNTMxLDEwIEBAIFBhc3NSZWZQ
dHI8U3RyaW5nSW1wbD4gU3RyaW5nSW1wbDo6dXBwZXIoKQogICAgICAgICAgICAgaWYgKGMgPT0g
c21hbGxMZXR0ZXJTaGFycFMpIHsKICAgICAgICAgICAgICAgICAqZGVzdCsrID0gJ1MnOwogICAg
ICAgICAgICAgICAgICpkZXN0KysgPSAnUyc7Ci0gICAgICAgICAgICB9IGVsc2UKLSAgICAgICAg
ICAgICAgICAqZGVzdCsrID0gc3RhdGljX2Nhc3Q8TENoYXI+KFVuaWNvZGU6OnRvVXBwZXIoYykp
OworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBBU1NFUlQodV90b3VwcGVy
KGMpIDw9IDB4RkYpOworICAgICAgICAgICAgICAgICpkZXN0KysgPSBzdGF0aWNfY2FzdDxMQ2hh
cj4odV90b3VwcGVyKGMpKTsKKyAgICAgICAgICAgIH0KICAgICAgICAgfQogCiAgICAgICAgIHJl
dHVybiBuZXdJbXBsLnJlbGVhc2UoKTsKQEAgLTU1MSwxMyArNTU3LDE0IEBAIHVwY29udmVydDoK
ICAgICAgICAgcmV0dXJuIG5ld0ltcGwucmVsZWFzZSgpOwogCiAgICAgLy8gRG8gYSBzbG93ZXIg
aW1wbGVtZW50YXRpb24gZm9yIGNhc2VzIHRoYXQgaW5jbHVkZSBub24tQVNDSUkgY2hhcmFjdGVy
cy4KLSAgICBib29sIGVycm9yOwotICAgIGludDMyX3QgcmVhbExlbmd0aCA9IFVuaWNvZGU6OnRv
VXBwZXIoZGF0YTE2LCBsZW5ndGgsIHNvdXJjZTE2LCBtX2xlbmd0aCwgJmVycm9yKTsKLSAgICBp
ZiAoIWVycm9yICYmIHJlYWxMZW5ndGggPT0gbGVuZ3RoKQorICAgIFVFcnJvckNvZGUgc3RhdHVz
ID0gVV9aRVJPX0VSUk9SOworICAgIGludDMyX3QgcmVhbExlbmd0aCA9IHVfc3RyVG9VcHBlcihk
YXRhMTYsIGxlbmd0aCwgc291cmNlMTYsIG1fbGVuZ3RoLCAiIiwgJnN0YXR1cyk7CisgICAgaWYg
KFVfU1VDQ0VTUyhzdGF0dXMpICYmIHJlYWxMZW5ndGggPT0gbGVuZ3RoKQogICAgICAgICByZXR1
cm4gbmV3SW1wbDsKICAgICBuZXdJbXBsID0gY3JlYXRlVW5pbml0aWFsaXplZChyZWFsTGVuZ3Ro
LCBkYXRhMTYpOwotICAgIFVuaWNvZGU6OnRvVXBwZXIoZGF0YTE2LCByZWFsTGVuZ3RoLCBzb3Vy
Y2UxNiwgbV9sZW5ndGgsICZlcnJvcik7Ci0gICAgaWYgKGVycm9yKQorICAgIHN0YXR1cyA9IFVf
WkVST19FUlJPUjsKKyAgICB1X3N0clRvVXBwZXIoZGF0YTE2LCByZWFsTGVuZ3RoLCBzb3VyY2Ux
NiwgbV9sZW5ndGgsICIiLCAmc3RhdHVzKTsKKyAgICBpZiAoVV9GQUlMVVJFKHN0YXR1cykpCiAg
ICAgICAgIHJldHVybiB0aGlzOwogICAgIHJldHVybiBuZXdJbXBsLnJlbGVhc2UoKTsKIH0KQEAg
LTU3NCwxMCArNTgxLDYgQEAgc3RhdGljIGlubGluZSBib29sIG5lZWRzVHVya2lzaENhc2luZ1J1
bGVzKGNvbnN0IEF0b21pY1N0cmluZyYgbG9jYWxlSWRlbnRpZmllcikKIAogUmVmUHRyPFN0cmlu
Z0ltcGw+IFN0cmluZ0ltcGw6Omxvd2VyKGNvbnN0IEF0b21pY1N0cmluZyYgbG9jYWxlSWRlbnRp
ZmllcikKIHsKLSNpZiAhVVNFKElDVV9VTklDT0RFKQotICAgIFVOVVNFRF9QQVJBTShsb2NhbGVJ
ZGVudGlmaWVyKTsKLSAgICByZXR1cm4gbG93ZXIoKTsKLSNlbHNlCiAgICAgLy8gVXNlIHRoZSBt
b3JlLW9wdGltaXplZCBjb2RlIHBhdGggbW9zdCBvZiB0aGUgdGltZS4KICAgICAvLyBBc3N1bWlu
ZyBoZXJlIHRoYXQgdGhlIG9ubHkgbG9jYWxlLXNwZWNpZmljIGxvd2VyY2FzaW5nIGlzIHRoZSBU
dXJraXNoIGNhc2luZyBydWxlcy4KICAgICAvLyBGSVhNRTogQ291bGQgcG9zc2libHkgb3B0aW1p
emUgZnVydGhlciBieSBsb29raW5nIGZvciB0aGUgc3BlY2lmaWMgc2VxdWVuY2VzCkBAIC02MDMs
MjEgKzYwNiwxNiBAQCBSZWZQdHI8U3RyaW5nSW1wbD4gU3RyaW5nSW1wbDo6bG93ZXIoY29uc3Qg
QXRvbWljU3RyaW5nJiBsb2NhbGVJZGVudGlmaWVyKQogICAgIGludCByZWFsTGVuZ3RoID0gdV9z
dHJUb0xvd2VyKGRhdGExNiwgbGVuZ3RoLCBzb3VyY2UxNiwgbGVuZ3RoLCAidHIiLCAmc3RhdHVz
KTsKICAgICBpZiAoVV9TVUNDRVNTKHN0YXR1cykgJiYgcmVhbExlbmd0aCA9PSBsZW5ndGgpCiAg
ICAgICAgIHJldHVybiBuZXdTdHJpbmc7Ci0gICAgc3RhdHVzID0gVV9aRVJPX0VSUk9SOwogICAg
IG5ld1N0cmluZyA9IGNyZWF0ZVVuaW5pdGlhbGl6ZWQocmVhbExlbmd0aCwgZGF0YTE2KTsKKyAg
ICBzdGF0dXMgPSBVX1pFUk9fRVJST1I7CiAgICAgdV9zdHJUb0xvd2VyKGRhdGExNiwgcmVhbExl
bmd0aCwgc291cmNlMTYsIGxlbmd0aCwgInRyIiwgJnN0YXR1cyk7CiAgICAgaWYgKFVfRkFJTFVS
RShzdGF0dXMpKQogICAgICAgICByZXR1cm4gdGhpczsKICAgICByZXR1cm4gbmV3U3RyaW5nLnJl
bGVhc2UoKTsKLSNlbmRpZgogfQogCiBSZWZQdHI8U3RyaW5nSW1wbD4gU3RyaW5nSW1wbDo6dXBw
ZXIoY29uc3QgQXRvbWljU3RyaW5nJiBsb2NhbGVJZGVudGlmaWVyKQogewotI2lmICFVU0UoSUNV
X1VOSUNPREUpCi0gICAgVU5VU0VEX1BBUkFNKGxvY2FsZUlkZW50aWZpZXIpOwotICAgIHJldHVy
biB1cHBlcigpOwotI2Vsc2UKICAgICAvLyBVc2UgdGhlIG1vcmUtb3B0aW1pemVkIGNvZGUgcGF0
aCBtb3N0IG9mIHRoZSB0aW1lLgogICAgIC8vIEFzc3VtaW5nIGhlcmUgdGhhdCB0aGUgb25seSBs
b2NhbGUtc3BlY2lmaWMgbG93ZXJjYXNpbmcgaXMgdGhlIFR1cmtpc2ggY2FzaW5nIHJ1bGVzLAog
ICAgIC8vIGFuZCB0aGF0IHRoZSBvbmx5IGFmZmVjdGVkIGNoYXJhY3RlciBpcyBsb3dlcmNhc2Ug
ImkiLgpAQCAtNjQ0LDcgKzY0Miw2IEBAIFJlZlB0cjxTdHJpbmdJbXBsPiBTdHJpbmdJbXBsOjp1
cHBlcihjb25zdCBBdG9taWNTdHJpbmcmIGxvY2FsZUlkZW50aWZpZXIpCiAgICAgaWYgKFVfRkFJ
TFVSRShzdGF0dXMpKQogICAgICAgICByZXR1cm4gdGhpczsKICAgICByZXR1cm4gbmV3U3RyaW5n
LnJlbGVhc2UoKTsKLSNlbmRpZgogfQogCiBQYXNzUmVmUHRyPFN0cmluZ0ltcGw+IFN0cmluZ0lt
cGw6OmZpbGwoVUNoYXIgY2hhcmFjdGVyKQpAQCAtNjg1LDggKzY4MiwxMSBAQCBQYXNzUmVmUHRy
PFN0cmluZ0ltcGw+IFN0cmluZ0ltcGw6OmZvbGRDYXNlKCkKICAgICAgICAgICAgIHJldHVybiBu
ZXdJbXBsLnJlbGVhc2UoKTsKIAogICAgICAgICAvLyBEbyBhIHNsb3dlciBpbXBsZW1lbnRhdGlv
biBmb3IgY2FzZXMgdGhhdCBpbmNsdWRlIG5vbi1BU0NJSSBMYXRpbi0xIGNoYXJhY3RlcnMuCi0g
ICAgICAgIGZvciAoaW50MzJfdCBpID0gMDsgaSA8IGxlbmd0aDsgKytpKQotICAgICAgICAgICAg
ZGF0YVtpXSA9IHN0YXRpY19jYXN0PExDaGFyPihVbmljb2RlOjp0b0xvd2VyKG1fZGF0YThbaV0p
KTsKKyAgICAgICAgLy8gRklYTUU6IFNob3VsZG4ndCB0aGlzIHVzZSB1X2ZvbGRDYXNlIGluc3Rl
YWQgb2YgdV90b2xvd2VyPworICAgICAgICBmb3IgKGludDMyX3QgaSA9IDA7IGkgPCBsZW5ndGg7
ICsraSkgeworICAgICAgICAgICAgQVNTRVJUKHVfdG9sb3dlcihtX2RhdGE4W2ldKSA8PSAweEZG
KTsKKyAgICAgICAgICAgIGRhdGFbaV0gPSBzdGF0aWNfY2FzdDxMQ2hhcj4odV90b2xvd2VyKG1f
ZGF0YThbaV0pKTsKKyAgICAgICAgfQogCiAgICAgICAgIHJldHVybiBuZXdJbXBsLnJlbGVhc2Uo
KTsKICAgICB9CkBAIC03MDQsMTMgKzcwNCwxNCBAQCBQYXNzUmVmUHRyPFN0cmluZ0ltcGw+IFN0
cmluZ0ltcGw6OmZvbGRDYXNlKCkKICAgICAgICAgcmV0dXJuIG5ld0ltcGwucmVsZWFzZSgpOwog
CiAgICAgLy8gRG8gYSBzbG93ZXIgaW1wbGVtZW50YXRpb24gZm9yIGNhc2VzIHRoYXQgaW5jbHVk
ZSBub24tQVNDSUkgY2hhcmFjdGVycy4KLSAgICBib29sIGVycm9yOwotICAgIGludDMyX3QgcmVh
bExlbmd0aCA9IFVuaWNvZGU6OmZvbGRDYXNlKGRhdGEsIGxlbmd0aCwgbV9kYXRhMTYsIG1fbGVu
Z3RoLCAmZXJyb3IpOwotICAgIGlmICghZXJyb3IgJiYgcmVhbExlbmd0aCA9PSBsZW5ndGgpCisg
ICAgVUVycm9yQ29kZSBzdGF0dXMgPSBVX1pFUk9fRVJST1I7CisgICAgaW50MzJfdCByZWFsTGVu
Z3RoID0gdV9zdHJGb2xkQ2FzZShkYXRhLCBsZW5ndGgsIG1fZGF0YTE2LCBtX2xlbmd0aCwgVV9G
T0xEX0NBU0VfREVGQVVMVCwgJnN0YXR1cyk7CisgICAgaWYgKFVfU1VDQ0VTUyhzdGF0dXMpICYm
IHJlYWxMZW5ndGggPT0gbGVuZ3RoKQogICAgICAgICByZXR1cm4gbmV3SW1wbC5yZWxlYXNlKCk7
CiAgICAgbmV3SW1wbCA9IGNyZWF0ZVVuaW5pdGlhbGl6ZWQocmVhbExlbmd0aCwgZGF0YSk7Ci0g
ICAgVW5pY29kZTo6Zm9sZENhc2UoZGF0YSwgcmVhbExlbmd0aCwgbV9kYXRhMTYsIG1fbGVuZ3Ro
LCAmZXJyb3IpOwotICAgIGlmIChlcnJvcikKKyAgICBzdGF0dXMgPSBVX1pFUk9fRVJST1I7Cisg
ICAgdV9zdHJGb2xkQ2FzZShkYXRhLCByZWFsTGVuZ3RoLCBtX2RhdGExNiwgbV9sZW5ndGgsIFVf
Rk9MRF9DQVNFX0RFRkFVTFQsICZzdGF0dXMpOworICAgIGlmIChVX0ZBSUxVUkUoc3RhdHVzKSkK
ICAgICAgICAgcmV0dXJuIHRoaXM7CiAgICAgcmV0dXJuIG5ld0ltcGwucmVsZWFzZSgpOwogfQpA
QCAtOTUyLDggKzk1Myw3IEBAIGZsb2F0IFN0cmluZ0ltcGw6OnRvRmxvYXQoYm9vbCogb2spCiBi
b29sIGVxdWFsSWdub3JpbmdDYXNlKGNvbnN0IExDaGFyKiBhLCBjb25zdCBMQ2hhciogYiwgdW5z
aWduZWQgbGVuZ3RoKQogewogICAgIHdoaWxlIChsZW5ndGgtLSkgewotICAgICAgICBMQ2hhciBi
YyA9ICpiKys7Ci0gICAgICAgIGlmIChmb2xkQ2FzZSgqYSsrKSAhPSBmb2xkQ2FzZShiYykpCisg
ICAgICAgIGlmICh1X2ZvbGRDYXNlKCphKyssIFVfRk9MRF9DQVNFX0RFRkFVTFQpICE9IHVfZm9s
ZENhc2UoKmIrKywgVV9GT0xEX0NBU0VfREVGQVVMVCkpCiAgICAgICAgICAgICByZXR1cm4gZmFs
c2U7CiAgICAgfQogICAgIHJldHVybiB0cnVlOwpAQCAtOTYyLDggKzk2Miw3IEBAIGJvb2wgZXF1
YWxJZ25vcmluZ0Nhc2UoY29uc3QgTENoYXIqIGEsIGNvbnN0IExDaGFyKiBiLCB1bnNpZ25lZCBs
ZW5ndGgpCiBib29sIGVxdWFsSWdub3JpbmdDYXNlKGNvbnN0IFVDaGFyKiBhLCBjb25zdCBMQ2hh
ciogYiwgdW5zaWduZWQgbGVuZ3RoKQogewogICAgIHdoaWxlIChsZW5ndGgtLSkgewotICAgICAg
ICBMQ2hhciBiYyA9ICpiKys7Ci0gICAgICAgIGlmIChmb2xkQ2FzZSgqYSsrKSAhPSBmb2xkQ2Fz
ZShiYykpCisgICAgICAgIGlmICh1X2ZvbGRDYXNlKCphKyssIFVfRk9MRF9DQVNFX0RFRkFVTFQp
ICE9IHVfZm9sZENhc2UoKmIrKywgVV9GT0xEX0NBU0VfREVGQVVMVCkpCiAgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAgICAgfQogICAgIHJldHVybiB0cnVlOwpAQCAtMTkxMSw3ICsxOTEwLDcg
QEAgYm9vbCBlcXVhbElnbm9yaW5nQ2FzZShjb25zdCBTdHJpbmdJbXBsKiBhLCBjb25zdCBMQ2hh
ciogYikKICAgICAgICAgaWYgKG9yZWQgJiB+MHg3RikgewogICAgICAgICAgICAgZXF1YWwgPSB0
cnVlOwogICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSAhPSBsZW5ndGg7ICsraSkK
LSAgICAgICAgICAgICAgICBlcXVhbCA9IGVxdWFsICYmIChmb2xkQ2FzZShhc1tpXSkgPT0gZm9s
ZENhc2UoYltpXSkpOworICAgICAgICAgICAgICAgIGVxdWFsID0gZXF1YWwgJiYgdV9mb2xkQ2Fz
ZShhc1tpXSwgVV9GT0xEX0NBU0VfREVGQVVMVCkgPT0gdV9mb2xkQ2FzZShiW2ldLCBVX0ZPTERf
Q0FTRV9ERUZBVUxUKTsKICAgICAgICAgfQogICAgICAgICAKICAgICAgICAgcmV0dXJuIGVxdWFs
ICYmICFiW2xlbmd0aF07ICAgICAgICAKQEAgLTE5MzEsNyArMTkzMCw3IEBAIGJvb2wgZXF1YWxJ
Z25vcmluZ0Nhc2UoY29uc3QgU3RyaW5nSW1wbCogYSwgY29uc3QgTENoYXIqIGIpCiAgICAgaWYg
KG9yZWQgJiB+MHg3RikgewogICAgICAgICBlcXVhbCA9IHRydWU7CiAgICAgICAgIGZvciAodW5z
aWduZWQgaSA9IDA7IGkgIT0gbGVuZ3RoOyArK2kpIHsKLSAgICAgICAgICAgIGVxdWFsID0gZXF1
YWwgJiYgKGZvbGRDYXNlKGFzW2ldKSA9PSBmb2xkQ2FzZShiW2ldKSk7CisgICAgICAgICAgICBl
cXVhbCA9IGVxdWFsICYmIHVfZm9sZENhc2UoYXNbaV0sIFVfRk9MRF9DQVNFX0RFRkFVTFQpID09
IHVfZm9sZENhc2UoYltpXSwgVV9GT0xEX0NBU0VfREVGQVVMVCk7CiAgICAgICAgIH0KICAgICB9
CiAKQEAgLTE5NzAsMjQgKzE5NjksMjQgQEAgYm9vbCBlcXVhbElnbm9yaW5nTnVsbGl0eShTdHJp
bmdJbXBsKiBhLCBTdHJpbmdJbXBsKiBiKQogICAgIHJldHVybiBlcXVhbChhLCBiKTsKIH0KIAot
V1RGOjpVbmljb2RlOjpEaXJlY3Rpb24gU3RyaW5nSW1wbDo6ZGVmYXVsdFdyaXRpbmdEaXJlY3Rp
b24oYm9vbCogaGFzU3Ryb25nRGlyZWN0aW9uYWxpdHkpCitVQ2hhckRpcmVjdGlvbiBTdHJpbmdJ
bXBsOjpkZWZhdWx0V3JpdGluZ0RpcmVjdGlvbihib29sKiBoYXNTdHJvbmdEaXJlY3Rpb25hbGl0
eSkKIHsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9sZW5ndGg7ICsraSkgewotICAg
ICAgICBXVEY6OlVuaWNvZGU6OkRpcmVjdGlvbiBjaGFyRGlyZWN0aW9uID0gV1RGOjpVbmljb2Rl
OjpkaXJlY3Rpb24oaXM4Qml0KCkgPyBtX2RhdGE4W2ldIDogbV9kYXRhMTZbaV0pOwotICAgICAg
ICBpZiAoY2hhckRpcmVjdGlvbiA9PSBXVEY6OlVuaWNvZGU6OkxlZnRUb1JpZ2h0KSB7CisgICAg
ICAgIFVDaGFyRGlyZWN0aW9uIGNoYXJEaXJlY3Rpb24gPSB1X2NoYXJEaXJlY3Rpb24oaXM4Qml0
KCkgPyBtX2RhdGE4W2ldIDogbV9kYXRhMTZbaV0pOworICAgICAgICBpZiAoY2hhckRpcmVjdGlv
biA9PSBVX0xFRlRfVE9fUklHSFQpIHsKICAgICAgICAgICAgIGlmIChoYXNTdHJvbmdEaXJlY3Rp
b25hbGl0eSkKICAgICAgICAgICAgICAgICAqaGFzU3Ryb25nRGlyZWN0aW9uYWxpdHkgPSB0cnVl
OwotICAgICAgICAgICAgcmV0dXJuIFdURjo6VW5pY29kZTo6TGVmdFRvUmlnaHQ7CisgICAgICAg
ICAgICByZXR1cm4gVV9MRUZUX1RPX1JJR0hUOwogICAgICAgICB9Ci0gICAgICAgIGlmIChjaGFy
RGlyZWN0aW9uID09IFdURjo6VW5pY29kZTo6UmlnaHRUb0xlZnQgfHwgY2hhckRpcmVjdGlvbiA9
PSBXVEY6OlVuaWNvZGU6OlJpZ2h0VG9MZWZ0QXJhYmljKSB7CisgICAgICAgIGlmIChjaGFyRGly
ZWN0aW9uID09IFVfUklHSFRfVE9fTEVGVCB8fCBjaGFyRGlyZWN0aW9uID09IFVfUklHSFRfVE9f
TEVGVF9BUkFCSUMpIHsKICAgICAgICAgICAgIGlmIChoYXNTdHJvbmdEaXJlY3Rpb25hbGl0eSkK
ICAgICAgICAgICAgICAgICAqaGFzU3Ryb25nRGlyZWN0aW9uYWxpdHkgPSB0cnVlOwotICAgICAg
ICAgICAgcmV0dXJuIFdURjo6VW5pY29kZTo6UmlnaHRUb0xlZnQ7CisgICAgICAgICAgICByZXR1
cm4gVV9SSUdIVF9UT19MRUZUOwogICAgICAgICB9CiAgICAgfQogICAgIGlmIChoYXNTdHJvbmdE
aXJlY3Rpb25hbGl0eSkKICAgICAgICAgKmhhc1N0cm9uZ0RpcmVjdGlvbmFsaXR5ID0gZmFsc2U7
Ci0gICAgcmV0dXJuIFdURjo6VW5pY29kZTo6TGVmdFRvUmlnaHQ7CisgICAgcmV0dXJuIFVfTEVG
VF9UT19SSUdIVDsKIH0KIAogUGFzc1JlZlB0cjxTdHJpbmdJbXBsPiBTdHJpbmdJbXBsOjphZG9w
dChTdHJpbmdCdWZmZXI8TENoYXI+JiBidWZmZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0
Zi90ZXh0L1N0cmluZ0ltcGwuaCBiL1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nSW1wbC5oCmlu
ZGV4IGNkMmI2OWJjNGExZWUyMDg1ODU3ZDMwMGYyMzcyMjZiZDkwZGRmNjIuLjlhYTA2ZmNkZDQ4
NzZiZjQzYWNlMzM1MTEwZGVjOGEyMWI5ZTViMjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3Rm
L3RleHQvU3RyaW5nSW1wbC5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nSW1wbC5o
CkBAIC03NDUsNyArNzQ1LDcgQEAgcHVibGljOgogICAgIFdURl9FWFBPUlRfU1RSSU5HX0FQSSBQ
YXNzUmVmUHRyPFN0cmluZ0ltcGw+IHJlcGxhY2UoU3RyaW5nSW1wbCosIFN0cmluZ0ltcGwqKTsK
ICAgICBXVEZfRVhQT1JUX1NUUklOR19BUEkgUGFzc1JlZlB0cjxTdHJpbmdJbXBsPiByZXBsYWNl
KHVuc2lnbmVkIGluZGV4LCB1bnNpZ25lZCBsZW4sIFN0cmluZ0ltcGwqKTsKIAotICAgIFdURl9F
WFBPUlRfU1RSSU5HX0FQSSBXVEY6OlVuaWNvZGU6OkRpcmVjdGlvbiBkZWZhdWx0V3JpdGluZ0Rp
cmVjdGlvbihib29sKiBoYXNTdHJvbmdEaXJlY3Rpb25hbGl0eSA9IDApOworICAgIFdURl9FWFBP
UlRfU1RSSU5HX0FQSSBVQ2hhckRpcmVjdGlvbiBkZWZhdWx0V3JpdGluZ0RpcmVjdGlvbihib29s
KiBoYXNTdHJvbmdEaXJlY3Rpb25hbGl0eSA9IG51bGxwdHIpOwogCiAjaWYgVVNFKENGKQogICAg
IFJldGFpblB0cjxDRlN0cmluZ1JlZj4gY3JlYXRlQ0ZTdHJpbmcoKTsKQEAgLTExMDcsNyArMTEw
Nyw3IEBAIGlubGluZSBib29sIGVxdWFsSWdub3JpbmdDYXNlKGNvbnN0IGNoYXIqIGEsIGNvbnN0
IExDaGFyKiBiLCB1bnNpZ25lZCBsZW5ndGgpIHsKIGlubGluZSBib29sIGVxdWFsSWdub3JpbmdD
YXNlKGNvbnN0IFVDaGFyKiBhLCBjb25zdCBVQ2hhciogYiwgaW50IGxlbmd0aCkKIHsKICAgICBB
U1NFUlQobGVuZ3RoID49IDApOwotICAgIHJldHVybiAhVW5pY29kZTo6dW1lbWNhc2VjbXAoYSwg
YiwgbGVuZ3RoKTsKKyAgICByZXR1cm4gIXVfbWVtY2FzZWNtcChhLCBiLCBsZW5ndGgsIFVfRk9M
RF9DQVNFX0RFRkFVTFQpOwogfQogV1RGX0VYUE9SVF9TVFJJTkdfQVBJIGJvb2wgZXF1YWxJZ25v
cmluZ0Nhc2VOb25OdWxsKGNvbnN0IFN0cmluZ0ltcGwqLCBjb25zdCBTdHJpbmdJbXBsKik7CiAK
QEAgLTEzMTcsNyArMTMxNyw3IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBpc1NwYWNlT3JOZXdsaW5l
KFVDaGFyIGMpCiB7CiAgICAgLy8gVXNlIGlzQVNDSUlTcGFjZSgpIGZvciBiYXNpYyBMYXRpbi0x
LgogICAgIC8vIFRoaXMgd2lsbCBpbmNsdWRlIG5ld2xpbmVzLCB3aGljaCBhcmVuJ3QgaW5jbHVk
ZWQgaW4gVW5pY29kZSBEaXJXUy4KLSAgICByZXR1cm4gYyA8PSAweDdGID8gV1RGOjppc0FTQ0lJ
U3BhY2UoYykgOiBXVEY6OlVuaWNvZGU6OmRpcmVjdGlvbihjKSA9PSBXVEY6OlVuaWNvZGU6Oldo
aXRlU3BhY2VOZXV0cmFsOworICAgIHJldHVybiBjIDw9IDB4N0YgPyBpc0FTQ0lJU3BhY2UoYykg
OiB1X2NoYXJEaXJlY3Rpb24oYykgPT0gVV9XSElURV9TUEFDRV9ORVVUUkFMOwogfQogCiB0ZW1w
bGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYv
dGV4dC9XVEZTdHJpbmcuaCBiL1NvdXJjZS9XVEYvd3RmL3RleHQvV1RGU3RyaW5nLmgKaW5kZXgg
MDliNTU0MWE5OWQ3NmIxNWIxOTRiZjA1NzBkMmYxMjUxMzVhYWU0Yy4uNjE5MTRiYjA2OGZhYzE1
Y2Y4OWJhMmVlODU1NmYwZDY1YmExMzU3MSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvdGV4
dC9XVEZTdHJpbmcuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1dURlN0cmluZy5oCkBAIC00
NDAsMTMgKzQ0MCwxMyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIFN0cmluZyBmcm9tVVRGOFdpdGhM
YXRpbjFGYWxsYmFjayhjb25zdCBjaGFyKiBzLCBzaXplX3QgbGVuZ3RoKSB7IHJldHVybiBmcm9t
VVRGOFdpdGhMYXRpbjFGYWxsYmFjayhyZWludGVycHJldF9jYXN0PGNvbnN0IExDaGFyKj4ocyks
IGxlbmd0aCk7IH07CiAgICAgCiAgICAgLy8gRGV0ZXJtaW5lcyB0aGUgd3JpdGluZyBkaXJlY3Rp
b24gdXNpbmcgdGhlIFVuaWNvZGUgQmlkaSBBbGdvcml0aG0gcnVsZXMgUDIgYW5kIFAzLgotICAg
IFdURjo6VW5pY29kZTo6RGlyZWN0aW9uIGRlZmF1bHRXcml0aW5nRGlyZWN0aW9uKGJvb2wqIGhh
c1N0cm9uZ0RpcmVjdGlvbmFsaXR5ID0gMCkgY29uc3QKKyAgICBVQ2hhckRpcmVjdGlvbiBkZWZh
dWx0V3JpdGluZ0RpcmVjdGlvbihib29sKiBoYXNTdHJvbmdEaXJlY3Rpb25hbGl0eSA9IG51bGxw
dHIpIGNvbnN0CiAgICAgewogICAgICAgICBpZiAobV9pbXBsKQogICAgICAgICAgICAgcmV0dXJu
IG1faW1wbC0+ZGVmYXVsdFdyaXRpbmdEaXJlY3Rpb24oaGFzU3Ryb25nRGlyZWN0aW9uYWxpdHkp
OwogICAgICAgICBpZiAoaGFzU3Ryb25nRGlyZWN0aW9uYWxpdHkpCiAgICAgICAgICAgICAqaGFz
U3Ryb25nRGlyZWN0aW9uYWxpdHkgPSBmYWxzZTsKLSAgICAgICAgcmV0dXJuIFdURjo6VW5pY29k
ZTo6TGVmdFRvUmlnaHQ7CisgICAgICAgIHJldHVybiBVX0xFRlRfVE9fUklHSFQ7CiAgICAgfQog
CiAgICAgYm9vbCBjb250YWluc09ubHlBU0NJSSgpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dURi93dGYvdW5pY29kZS9pY3UvVW5pY29kZUljdS5oIGIvU291cmNlL1dURi93dGYvdW5pY29k
ZS9pY3UvVW5pY29kZUljdS5oCmluZGV4IDdjY2E5NTViNGJlZGUwYTEzYjY4N2U4ZWRkOTFlMTMx
MWNhZDdjZTEuLjBhMzg2YjU5ZGMyNzNjMDI4Mzc4NTIxNDAxNjNjZWJjNDcxNzU3YzcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3VuaWNvZGUvaWN1L1VuaWNvZGVJY3UuaAorKysgYi9Tb3Vy
Y2UvV1RGL3d0Zi91bmljb2RlL2ljdS9Vbmljb2RlSWN1LmgKQEAgLTIzLDIxOCArMjMsMTAgQEAK
ICNpZm5kZWYgV1RGX1VOSUNPREVfSUNVX0gKICNkZWZpbmUgV1RGX1VOSUNPREVfSUNVX0gKIAot
I2lmIFVTRShJQ1VfVU5JQ09ERSkKLQogI2luY2x1ZGUgPHN0ZGxpYi5oPgogI2luY2x1ZGUgPHVu
aWNvZGUvdWNoYXIuaD4KICNpbmNsdWRlIDx1bmljb2RlL3VzY3JpcHQuaD4KICNpbmNsdWRlIDx1
bmljb2RlL3VzdHJpbmcuaD4KICNpbmNsdWRlIDx1bmljb2RlL3V0ZjE2Lmg+CiAKLW5hbWVzcGFj
ZSBXVEYgewotCi1uYW1lc3BhY2UgVW5pY29kZSB7Ci0KLWVudW0gRGlyZWN0aW9uIHsKLSAgICBM
ZWZ0VG9SaWdodCA9IFVfTEVGVF9UT19SSUdIVCwKLSAgICBSaWdodFRvTGVmdCA9IFVfUklHSFRf
VE9fTEVGVCwKLSAgICBFdXJvcGVhbk51bWJlciA9IFVfRVVST1BFQU5fTlVNQkVSLAotICAgIEV1
cm9wZWFuTnVtYmVyU2VwYXJhdG9yID0gVV9FVVJPUEVBTl9OVU1CRVJfU0VQQVJBVE9SLAotICAg
IEV1cm9wZWFuTnVtYmVyVGVybWluYXRvciA9IFVfRVVST1BFQU5fTlVNQkVSX1RFUk1JTkFUT1Is
Ci0gICAgQXJhYmljTnVtYmVyID0gVV9BUkFCSUNfTlVNQkVSLAotICAgIENvbW1vbk51bWJlclNl
cGFyYXRvciA9IFVfQ09NTU9OX05VTUJFUl9TRVBBUkFUT1IsCi0gICAgQmxvY2tTZXBhcmF0b3Ig
PSBVX0JMT0NLX1NFUEFSQVRPUiwKLSAgICBTZWdtZW50U2VwYXJhdG9yID0gVV9TRUdNRU5UX1NF
UEFSQVRPUiwKLSAgICBXaGl0ZVNwYWNlTmV1dHJhbCA9IFVfV0hJVEVfU1BBQ0VfTkVVVFJBTCwK
LSAgICBPdGhlck5ldXRyYWwgPSBVX09USEVSX05FVVRSQUwsCi0gICAgTGVmdFRvUmlnaHRFbWJl
ZGRpbmcgPSBVX0xFRlRfVE9fUklHSFRfRU1CRURESU5HLAotICAgIExlZnRUb1JpZ2h0T3ZlcnJp
ZGUgPSBVX0xFRlRfVE9fUklHSFRfT1ZFUlJJREUsCi0gICAgUmlnaHRUb0xlZnRBcmFiaWMgPSBV
X1JJR0hUX1RPX0xFRlRfQVJBQklDLAotICAgIFJpZ2h0VG9MZWZ0RW1iZWRkaW5nID0gVV9SSUdI
VF9UT19MRUZUX0VNQkVERElORywKLSAgICBSaWdodFRvTGVmdE92ZXJyaWRlID0gVV9SSUdIVF9U
T19MRUZUX09WRVJSSURFLAotICAgIFBvcERpcmVjdGlvbmFsRm9ybWF0ID0gVV9QT1BfRElSRUNU
SU9OQUxfRk9STUFULAotICAgIE5vblNwYWNpbmdNYXJrID0gVV9ESVJfTk9OX1NQQUNJTkdfTUFS
SywKLSAgICBCb3VuZGFyeU5ldXRyYWwgPSBVX0JPVU5EQVJZX05FVVRSQUwKLX07Ci0KLWVudW0g
RGVjb21wb3NpdGlvblR5cGUgewotICAgIERlY29tcG9zaXRpb25Ob25lID0gVV9EVF9OT05FLAot
ICAgIERlY29tcG9zaXRpb25DYW5vbmljYWwgPSBVX0RUX0NBTk9OSUNBTCwKLSAgICBEZWNvbXBv
c2l0aW9uQ29tcGF0ID0gVV9EVF9DT01QQVQsCi0gICAgRGVjb21wb3NpdGlvbkNpcmNsZSA9IFVf
RFRfQ0lSQ0xFLAotICAgIERlY29tcG9zaXRpb25GaW5hbCA9IFVfRFRfRklOQUwsCi0gICAgRGVj
b21wb3NpdGlvbkZvbnQgPSBVX0RUX0ZPTlQsCi0gICAgRGVjb21wb3NpdGlvbkZyYWN0aW9uID0g
VV9EVF9GUkFDVElPTiwKLSAgICBEZWNvbXBvc2l0aW9uSW5pdGlhbCA9IFVfRFRfSU5JVElBTCwK
LSAgICBEZWNvbXBvc2l0aW9uSXNvbGF0ZWQgPSBVX0RUX0lTT0xBVEVELAotICAgIERlY29tcG9z
aXRpb25NZWRpYWwgPSBVX0RUX01FRElBTCwKLSAgICBEZWNvbXBvc2l0aW9uTmFycm93ID0gVV9E
VF9OQVJST1csCi0gICAgRGVjb21wb3NpdGlvbk5vQnJlYWsgPSBVX0RUX05PQlJFQUssCi0gICAg
RGVjb21wb3NpdGlvblNtYWxsID0gVV9EVF9TTUFMTCwKLSAgICBEZWNvbXBvc2l0aW9uU3F1YXJl
ID0gVV9EVF9TUVVBUkUsCi0gICAgRGVjb21wb3NpdGlvblN1YiA9IFVfRFRfU1VCLAotICAgIERl
Y29tcG9zaXRpb25TdXBlciA9IFVfRFRfU1VQRVIsCi0gICAgRGVjb21wb3NpdGlvblZlcnRpY2Fs
ID0gVV9EVF9WRVJUSUNBTCwKLSAgICBEZWNvbXBvc2l0aW9uV2lkZSA9IFVfRFRfV0lERSwKLX07
Ci0KLWVudW0gQ2hhckNhdGVnb3J5IHsKLSAgICBOb0NhdGVnb3J5ID0gIDAsCi0gICAgT3RoZXJf
Tm90QXNzaWduZWQgPSBVX01BU0soVV9HRU5FUkFMX09USEVSX1RZUEVTKSwKLSAgICBMZXR0ZXJf
VXBwZXJjYXNlID0gVV9NQVNLKFVfVVBQRVJDQVNFX0xFVFRFUiksCi0gICAgTGV0dGVyX0xvd2Vy
Y2FzZSA9IFVfTUFTSyhVX0xPV0VSQ0FTRV9MRVRURVIpLAotICAgIExldHRlcl9UaXRsZWNhc2Ug
PSBVX01BU0soVV9USVRMRUNBU0VfTEVUVEVSKSwKLSAgICBMZXR0ZXJfTW9kaWZpZXIgPSBVX01B
U0soVV9NT0RJRklFUl9MRVRURVIpLAotICAgIExldHRlcl9PdGhlciA9IFVfTUFTSyhVX09USEVS
X0xFVFRFUiksCi0KLSAgICBNYXJrX05vblNwYWNpbmcgPSBVX01BU0soVV9OT05fU1BBQ0lOR19N
QVJLKSwKLSAgICBNYXJrX0VuY2xvc2luZyA9IFVfTUFTSyhVX0VOQ0xPU0lOR19NQVJLKSwKLSAg
ICBNYXJrX1NwYWNpbmdDb21iaW5pbmcgPSBVX01BU0soVV9DT01CSU5JTkdfU1BBQ0lOR19NQVJL
KSwKLQotICAgIE51bWJlcl9EZWNpbWFsRGlnaXQgPSBVX01BU0soVV9ERUNJTUFMX0RJR0lUX05V
TUJFUiksCi0gICAgTnVtYmVyX0xldHRlciA9IFVfTUFTSyhVX0xFVFRFUl9OVU1CRVIpLAotICAg
IE51bWJlcl9PdGhlciA9IFVfTUFTSyhVX09USEVSX05VTUJFUiksCi0KLSAgICBTZXBhcmF0b3Jf
U3BhY2UgPSBVX01BU0soVV9TUEFDRV9TRVBBUkFUT1IpLAotICAgIFNlcGFyYXRvcl9MaW5lID0g
VV9NQVNLKFVfTElORV9TRVBBUkFUT1IpLAotICAgIFNlcGFyYXRvcl9QYXJhZ3JhcGggPSBVX01B
U0soVV9QQVJBR1JBUEhfU0VQQVJBVE9SKSwKLQotICAgIE90aGVyX0NvbnRyb2wgPSBVX01BU0so
VV9DT05UUk9MX0NIQVIpLAotICAgIE90aGVyX0Zvcm1hdCA9IFVfTUFTSyhVX0ZPUk1BVF9DSEFS
KSwKLSAgICBPdGhlcl9Qcml2YXRlVXNlID0gVV9NQVNLKFVfUFJJVkFURV9VU0VfQ0hBUiksCi0g
ICAgT3RoZXJfU3Vycm9nYXRlID0gVV9NQVNLKFVfU1VSUk9HQVRFKSwKLQotICAgIFB1bmN0dWF0
aW9uX0Rhc2ggPSBVX01BU0soVV9EQVNIX1BVTkNUVUFUSU9OKSwKLSAgICBQdW5jdHVhdGlvbl9P
cGVuID0gVV9NQVNLKFVfU1RBUlRfUFVOQ1RVQVRJT04pLAotICAgIFB1bmN0dWF0aW9uX0Nsb3Nl
ID0gVV9NQVNLKFVfRU5EX1BVTkNUVUFUSU9OKSwKLSAgICBQdW5jdHVhdGlvbl9Db25uZWN0b3Ig
PSBVX01BU0soVV9DT05ORUNUT1JfUFVOQ1RVQVRJT04pLAotICAgIFB1bmN0dWF0aW9uX090aGVy
ID0gVV9NQVNLKFVfT1RIRVJfUFVOQ1RVQVRJT04pLAotCi0gICAgU3ltYm9sX01hdGggPSBVX01B
U0soVV9NQVRIX1NZTUJPTCksCi0gICAgU3ltYm9sX0N1cnJlbmN5ID0gVV9NQVNLKFVfQ1VSUkVO
Q1lfU1lNQk9MKSwKLSAgICBTeW1ib2xfTW9kaWZpZXIgPSBVX01BU0soVV9NT0RJRklFUl9TWU1C
T0wpLAotICAgIFN5bWJvbF9PdGhlciA9IFVfTUFTSyhVX09USEVSX1NZTUJPTCksCi0KLSAgICBQ
dW5jdHVhdGlvbl9Jbml0aWFsUXVvdGUgPSBVX01BU0soVV9JTklUSUFMX1BVTkNUVUFUSU9OKSwK
LSAgICBQdW5jdHVhdGlvbl9GaW5hbFF1b3RlID0gVV9NQVNLKFVfRklOQUxfUFVOQ1RVQVRJT04p
Ci19OwotCi1pbmxpbmUgVUNoYXIzMiBmb2xkQ2FzZShVQ2hhcjMyIGMpCi17Ci0gICAgcmV0dXJu
IHVfZm9sZENhc2UoYywgVV9GT0xEX0NBU0VfREVGQVVMVCk7Ci19Ci0KLWlubGluZSBpbnQgZm9s
ZENhc2UoVUNoYXIqIHJlc3VsdCwgaW50IHJlc3VsdExlbmd0aCwgY29uc3QgVUNoYXIqIHNyYywg
aW50IHNyY0xlbmd0aCwgYm9vbCogZXJyb3IpCi17Ci0gICAgVUVycm9yQ29kZSBzdGF0dXMgPSBV
X1pFUk9fRVJST1I7Ci0gICAgaW50IHJlYWxMZW5ndGggPSB1X3N0ckZvbGRDYXNlKHJlc3VsdCwg
cmVzdWx0TGVuZ3RoLCBzcmMsIHNyY0xlbmd0aCwgVV9GT0xEX0NBU0VfREVGQVVMVCwgJnN0YXR1
cyk7Ci0gICAgKmVycm9yID0gIVVfU1VDQ0VTUyhzdGF0dXMpOwotICAgIHJldHVybiByZWFsTGVu
Z3RoOwotfQotCi1pbmxpbmUgaW50IHRvTG93ZXIoVUNoYXIqIHJlc3VsdCwgaW50IHJlc3VsdExl
bmd0aCwgY29uc3QgVUNoYXIqIHNyYywgaW50IHNyY0xlbmd0aCwgYm9vbCogZXJyb3IpCi17Ci0g
ICAgVUVycm9yQ29kZSBzdGF0dXMgPSBVX1pFUk9fRVJST1I7Ci0gICAgaW50IHJlYWxMZW5ndGgg
PSB1X3N0clRvTG93ZXIocmVzdWx0LCByZXN1bHRMZW5ndGgsIHNyYywgc3JjTGVuZ3RoLCAiIiwg
JnN0YXR1cyk7Ci0gICAgKmVycm9yID0gISFVX0ZBSUxVUkUoc3RhdHVzKTsKLSAgICByZXR1cm4g
cmVhbExlbmd0aDsKLX0KLQotaW5saW5lIFVDaGFyMzIgdG9Mb3dlcihVQ2hhcjMyIGMpCi17Ci0g
ICAgcmV0dXJuIHVfdG9sb3dlcihjKTsKLX0KLQotaW5saW5lIFVDaGFyMzIgdG9VcHBlcihVQ2hh
cjMyIGMpCi17Ci0gICAgcmV0dXJuIHVfdG91cHBlcihjKTsKLX0KLQotaW5saW5lIGludCB0b1Vw
cGVyKFVDaGFyKiByZXN1bHQsIGludCByZXN1bHRMZW5ndGgsIGNvbnN0IFVDaGFyKiBzcmMsIGlu
dCBzcmNMZW5ndGgsIGJvb2wqIGVycm9yKQotewotICAgIFVFcnJvckNvZGUgc3RhdHVzID0gVV9a
RVJPX0VSUk9SOwotICAgIGludCByZWFsTGVuZ3RoID0gdV9zdHJUb1VwcGVyKHJlc3VsdCwgcmVz
dWx0TGVuZ3RoLCBzcmMsIHNyY0xlbmd0aCwgIiIsICZzdGF0dXMpOwotICAgICplcnJvciA9ICEh
VV9GQUlMVVJFKHN0YXR1cyk7Ci0gICAgcmV0dXJuIHJlYWxMZW5ndGg7Ci19Ci0KLWlubGluZSBV
Q2hhcjMyIHRvVGl0bGVDYXNlKFVDaGFyMzIgYykKLXsKLSAgICByZXR1cm4gdV90b3RpdGxlKGMp
OwotfQotCi1pbmxpbmUgYm9vbCBpc0FyYWJpY0NoYXIoVUNoYXIzMiBjKQotewotICAgICAgcmV0
dXJuIHVibG9ja19nZXRDb2RlKGMpID09IFVCTE9DS19BUkFCSUM7Ci19Ci0KLWlubGluZSBib29s
IGlzQWxwaGFudW1lcmljKFVDaGFyMzIgYykKLXsKLSAgICByZXR1cm4gdV9pc2FsbnVtKGMpOwot
fQotCi1pbmxpbmUgYm9vbCBpc1NlcGFyYXRvclNwYWNlKFVDaGFyMzIgYykKLXsKLSAgICByZXR1
cm4gdV9jaGFyVHlwZShjKSA9PSBVX1NQQUNFX1NFUEFSQVRPUjsKLX0KLQotaW5saW5lIGJvb2wg
aXNQcmludGFibGVDaGFyKFVDaGFyMzIgYykKLXsKLSAgICByZXR1cm4gISF1X2lzcHJpbnQoYyk7
Ci19Ci0KLWlubGluZSBib29sIGlzUHVuY3QoVUNoYXIzMiBjKQotewotICAgIHJldHVybiAhIXVf
aXNwdW5jdChjKTsKLX0KLQotI2RlZmluZSBXS19MQl9DT05ESVRJT05BTF9KQVBBTkVTRV9TVEFS
VEVSIDM3Ci0KLWlubGluZSBib29sIHJlcXVpcmVzQ29tcGxleENvbnRleHRGb3JXb3JkQnJlYWtp
bmcoVUNoYXIzMiBjKQotewotICAgIGludDMyX3QgcHJvcCA9IHVfZ2V0SW50UHJvcGVydHlWYWx1
ZShjLCBVQ0hBUl9MSU5FX0JSRUFLKTsKLSAgICByZXR1cm4gcHJvcCA9PSBVX0xCX0NPTVBMRVhf
Q09OVEVYVCB8fCBwcm9wID09IFdLX0xCX0NPTkRJVElPTkFMX0pBUEFORVNFX1NUQVJURVIgfHwg
cHJvcCA9PSBVX0xCX0lERU9HUkFQSElDOwotfQotCi1pbmxpbmUgVUNoYXIzMiBtaXJyb3JlZENo
YXIoVUNoYXIzMiBjKQotewotICAgIHJldHVybiB1X2NoYXJNaXJyb3IoYyk7Ci19Ci0KLWlubGlu
ZSBDaGFyQ2F0ZWdvcnkgY2F0ZWdvcnkoVUNoYXIzMiBjKQotewotICAgIHJldHVybiBzdGF0aWNf
Y2FzdDxDaGFyQ2F0ZWdvcnk+KFVfR0VUX0dDX01BU0soYykpOwotfQotCi1pbmxpbmUgRGlyZWN0
aW9uIGRpcmVjdGlvbihVQ2hhcjMyIGMpCi17Ci0gICAgcmV0dXJuIHN0YXRpY19jYXN0PERpcmVj
dGlvbj4odV9jaGFyRGlyZWN0aW9uKGMpKTsKLX0KLQotaW5saW5lIGJvb2wgaXNMb3dlcihVQ2hh
cjMyIGMpCi17Ci0gICAgcmV0dXJuICEhdV9pc2xvd2VyKGMpOwotfQotCi1pbmxpbmUgdWludDhf
dCBjb21iaW5pbmdDbGFzcyhVQ2hhcjMyIGMpCi17Ci0gICAgcmV0dXJuIHVfZ2V0Q29tYmluaW5n
Q2xhc3MoYyk7Ci19Ci0KLWlubGluZSBEZWNvbXBvc2l0aW9uVHlwZSBkZWNvbXBvc2l0aW9uVHlw
ZShVQ2hhcjMyIGMpCi17Ci0gICAgcmV0dXJuIHN0YXRpY19jYXN0PERlY29tcG9zaXRpb25UeXBl
Pih1X2dldEludFByb3BlcnR5VmFsdWUoYywgVUNIQVJfREVDT01QT1NJVElPTl9UWVBFKSk7Ci19
Ci0KLWlubGluZSBpbnQgdW1lbWNhc2VjbXAoY29uc3QgVUNoYXIqIGEsIGNvbnN0IFVDaGFyKiBi
LCBpbnQgbGVuKQotewotICAgIHJldHVybiB1X21lbWNhc2VjbXAoYSwgYiwgbGVuLCBVX0ZPTERf
Q0FTRV9ERUZBVUxUKTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgVW5pY29kZQotCi19IC8vIG5hbWVz
cGFjZSBXVEYKLQotI2VuZGlmIC8vIFVTRShJQ1VfVU5JQ09ERSkKLQogI2VuZGlmIC8vIFdURl9V
TklDT0RFX0lDVV9ICmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi91bmljb2RlL3djaGFyL1Vu
aWNvZGVXY2hhci5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi91bmljb2RlL3djaGFyL1VuaWNvZGVXY2hh
ci5jcHAKaW5kZXggZjk4MDkwMGM4NDAwMDFlOWY0ODVlMzgyY2ViMDZjNDEyOGM2MWI5NC4uZjE3
YzA1MjY3YTQwZmYxNjYxOTg4NTdiZjI0NjdmMzViMDMyZWVjZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dURi93dGYvdW5pY29kZS93Y2hhci9Vbmljb2RlV2NoYXIuY3BwCisrKyBiL1NvdXJjZS9XVEYv
d3RmL3VuaWNvZGUvd2NoYXIvVW5pY29kZVdjaGFyLmNwcApAQCAtMjcsNDEgKzI3LDYzIEBACiAK
ICNpbmNsdWRlIDxhbGdvcml0aG0+CiAKLW5hbWVzcGFjZSBXVEYgewotbmFtZXNwYWNlIFVuaWNv
ZGUgeworaW50IHVub3JtX25vcm1hbGl6ZShjb25zdCBVQ2hhciosIGludDMyX3QsIFVOb3JtYWxp
emF0aW9uTW9kZSwgaW50MzJfdCwgVUNoYXIqLCBpbnQzMl90LCBVRXJyb3JDb2RlKikKK3sKKyAg
ICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKK30KIAotQ2hhckNhdGVnb3J5IGNhdGVnb3J5KFVDaGFy
MzIpCitVQ2hhckRpcmVjdGlvbiB1X2NoYXJEaXJlY3Rpb24oVUNoYXIzMikKIHsKLSAgICByZXR1
cm4gTm9DYXRlZ29yeTsgLy8gRklYTUU6IGltcGxlbWVudCEKKyAgICByZXR1cm4gVV9MRUZUX1RP
X1JJR0hUOyAvLyBGSVhNRTogaW1wbGVtZW50IQogfQogCi11bnNpZ25lZCBjaGFyIGNvbWJpbmlu
Z0NsYXNzKFVDaGFyMzIpCitVQ2hhcjMyIHVfY2hhck1pcnJvcihVQ2hhcjMyIGNoYXJhY3RlcikK
IHsKLSAgICByZXR1cm4gMDsgLy8gRklYTUU6IGltcGxlbWVudCEKKyAgICAvLyBGSVhNRTogSW1w
bGVtZW50IHRoaXMuCisgICAgcmV0dXJuIGNoYXJhY3RlcjsKIH0KIAotRGlyZWN0aW9uIGRpcmVj
dGlvbihVQ2hhcjMyKQoraW50OF90IHVfY2hhclR5cGUoVUNoYXIzMikKIHsKLSAgICByZXR1cm4g
TGVmdFRvUmlnaHQ7IC8vIEZJWE1FOiBpbXBsZW1lbnQhCisgICAgLy8gRklYTUU6IEltcGxlbWVu
dCB0aGlzLgorICAgIHJldHVybiBVX0NIQVJfQ0FURUdPUllfVU5LTk9XTjsKIH0KIAotRGVjb21w
b3NpdGlvblR5cGUgZGVjb21wb3NpdGlvblR5cGUoVUNoYXIzMikKK3VpbnQ4X3QgdV9nZXRDb21i
aW5pbmdDbGFzcyhVQ2hhcjMyKQogewotICAgIHJldHVybiBEZWNvbXBvc2l0aW9uTm9uZTsgLy8g
RklYTUU6IGltcGxlbWVudCEKKyAgICAvLyBGSVhNRTogSW1wbGVtZW50IHRoaXMuCisgICAgcmV0
dXJuIDA7CiB9CiAKLWJvb2wgcmVxdWlyZXNDb21wbGV4Q29udGV4dEZvcldvcmRCcmVha2luZyhV
Q2hhcjMyKQoraW50IHVfZ2V0SW50UHJvcGVydHlWYWx1ZShVQ2hhcjMyLCBVUHJvcGVydHkgcHJv
cGVydHkpCiB7Ci0gICAgcmV0dXJuIGZhbHNlOyAvLyBGSVhNRTogaW1wbGVtZW50IQorICAgIHN3
aXRjaCAocHJvcGVydHkpIHsKKyAgICBjYXNlIFVDSEFSX0RFQ09NUE9TSVRJT05fVFlQRToKKyAg
ICAgICAgLy8gRklYTUU6IEltcGxlbWVudCB0aGlzLgorICAgICAgICByZXR1cm4gVV9EVF9OT05F
OworICAgIGNhc2UgVUNIQVJfTElORV9CUkVBSzoKKyAgICAgICAgLy8gRklYTUU6IEltcGxlbWVu
dCB0aGlzLgorICAgICAgICByZXR1cm4gVV9MQl9VTktOT1dOOworICAgIH0KKworICAgIEFTU0VS
VF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiAwOwogfQogCi1VQ2hhcjMyIG1pcnJvcmVkQ2hh
cihVQ2hhcjMyIGMpCitpbnQgdV9tZW1jYXNlY21wKGNvbnN0IFVDaGFyKiBhLCBjb25zdCBVQ2hh
ciogYiwgaW50IGxlbmd0aCwgdW5zaWduZWQgb3B0aW9ucykKIHsKLSAgICByZXR1cm4gYzsgLy8g
RklYTUU6IGltcGxlbWVudCEKKyAgICBmb3IgKGludCBpID0gMDsgaSA8IGxlbmd0aDsgKytpKSB7
CisgICAgICAgIFVDaGFyIGMxID0gdV9mb2xkQ2FzZShhW2ldLCBvcHRpb25zKTsKKyAgICAgICAg
VUNoYXIgYzIgPSB1X2ZvbGRDYXNlKGJbaV0sIG9wdGlvbnMpOworICAgICAgICBpZiAoYzEgIT0g
YzIpCisgICAgICAgICAgICByZXR1cm4gYzEgLSBjMjsKKyAgICB9CisKKyAgICByZXR1cm4gMDsK
IH0KIAogdGVtcGxhdGU8VUNoYXIgRnVuY3Rpb24oVUNoYXIpPgotc3RhdGljIGlubGluZSBpbnQg
Y29udmVydFdpdGhGdW5jdGlvbihVQ2hhciogcmVzdWx0LCBpbnQgcmVzdWx0TGVuZ3RoLCBjb25z
dCBVQ2hhciogc291cmNlLCBpbnQgc291cmNlTGVuZ3RoLCBib29sKiBpc0Vycm9yKQorc3RhdGlj
IGlubGluZSBpbnQgY29udmVydFdpdGhGdW5jdGlvbihVQ2hhciogcmVzdWx0LCBpbnQgcmVzdWx0
TGVuZ3RoLCBjb25zdCBVQ2hhciogc291cmNlLCBpbnQgc291cmNlTGVuZ3RoLCBVRXJyb3JDb2Rl
JiBzdGF0dXMpCiB7CiAgICAgVUNoYXIqIHJlc3VsdEl0ZXJhdG9yID0gcmVzdWx0OwogICAgIFVD
aGFyKiByZXN1bHRFbmQgPSByZXN1bHQgKyBzdGQ6Om1pbihyZXN1bHRMZW5ndGgsIHNvdXJjZUxl
bmd0aCk7CkBAIC03MSwyNCArOTMsMjIgQEAgc3RhdGljIGlubGluZSBpbnQgY29udmVydFdpdGhG
dW5jdGlvbihVQ2hhciogcmVzdWx0LCBpbnQgcmVzdWx0TGVuZ3RoLCBjb25zdCBVQ2gKICAgICBp
ZiAoc291cmNlTGVuZ3RoIDwgcmVzdWx0TGVuZ3RoKQogICAgICAgICAqcmVzdWx0SXRlcmF0b3Ig
PSAnXDAnOwogCi0gICAgKmlzRXJyb3IgPSBzb3VyY2VMZW5ndGggPiByZXN1bHRMZW5ndGg7Cisg
ICAgc3RhdHVzID0gc291cmNlTGVuZ3RoID4gcmVzdWx0TGVuZ3RoID8gVV9FUlJPUiA6IFVfWkVS
T19FUlJPUjsKICAgICByZXR1cm4gc291cmNlTGVuZ3RoOwogfQogCi1pbnQgZm9sZENhc2UoVUNo
YXIqIHJlc3VsdCwgaW50IHJlc3VsdExlbmd0aCwgY29uc3QgVUNoYXIqIHNvdXJjZSwgaW50IHNv
dXJjZUxlbmd0aCwgYm9vbCogaXNFcnJvcikKK2ludCB1X3N0ckZvbGRDYXNlKFVDaGFyKiByZXN1
bHQsIGludCByZXN1bHRMZW5ndGgsIGNvbnN0IFVDaGFyKiBzb3VyY2UsIGludCBzb3VyY2VMZW5n
dGgsIHVuc2lnbmVkIG9wdGlvbnMsIFVFcnJvckNvZGUqIHN0YXR1cykKIHsKLSAgICByZXR1cm4g
Y29udmVydFdpdGhGdW5jdGlvbjxmb2xkQ2FzZT4ocmVzdWx0LCByZXN1bHRMZW5ndGgsIHNvdXJj
ZSwgc291cmNlTGVuZ3RoLCBpc0Vycm9yKTsKKyAgICBBU1NFUlRfVU5VU0VEKG9wdGlvbnMsIG9w
dGlvbnMgPT0gVV9GT0xEX0NBU0VfREVGQVVMVCk7CisgICAgcmV0dXJuIGNvbnZlcnRXaXRoRnVu
Y3Rpb248dV9mb2xkQ2FzZT4ocmVzdWx0LCByZXN1bHRMZW5ndGgsIHNvdXJjZSwgc291cmNlTGVu
Z3RoLCAqc3RhdHVzKTsKIH0KIAotaW50IHRvTG93ZXIoVUNoYXIqIHJlc3VsdCwgaW50IHJlc3Vs
dExlbmd0aCwgY29uc3QgVUNoYXIqIHNvdXJjZSwgaW50IHNvdXJjZUxlbmd0aCwgYm9vbCogaXNF
cnJvcikKK2ludCB1X3N0clRvTG93ZXIoVUNoYXIqIHJlc3VsdCwgaW50IHJlc3VsdExlbmd0aCwg
Y29uc3QgVUNoYXIqIHNvdXJjZSwgaW50IHNvdXJjZUxlbmd0aCwgY29uc3QgY2hhciosIFVFcnJv
ckNvZGUqIHN0YXR1cykKIHsKLSAgICByZXR1cm4gY29udmVydFdpdGhGdW5jdGlvbjx0b0xvd2Vy
PihyZXN1bHQsIHJlc3VsdExlbmd0aCwgc291cmNlLCBzb3VyY2VMZW5ndGgsIGlzRXJyb3IpOwor
ICAgIHJldHVybiBjb252ZXJ0V2l0aEZ1bmN0aW9uPHVfdG9sb3dlcj4ocmVzdWx0LCByZXN1bHRM
ZW5ndGgsIHNvdXJjZSwgc291cmNlTGVuZ3RoLCAqc3RhdHVzKTsKIH0KIAotaW50IHRvVXBwZXIo
VUNoYXIqIHJlc3VsdCwgaW50IHJlc3VsdExlbmd0aCwgY29uc3QgVUNoYXIqIHNvdXJjZSwgaW50
IHNvdXJjZUxlbmd0aCwgYm9vbCogaXNFcnJvcikKK2ludCB1X3N0clRvVXBwZXIoVUNoYXIqIHJl
c3VsdCwgaW50IHJlc3VsdExlbmd0aCwgY29uc3QgVUNoYXIqIHNvdXJjZSwgaW50IHNvdXJjZUxl
bmd0aCwgY29uc3QgY2hhciosIFVFcnJvckNvZGUqIHN0YXR1cykKIHsKLSAgICByZXR1cm4gY29u
dmVydFdpdGhGdW5jdGlvbjx0b1VwcGVyPihyZXN1bHQsIHJlc3VsdExlbmd0aCwgc291cmNlLCBz
b3VyY2VMZW5ndGgsIGlzRXJyb3IpOworICAgIHJldHVybiBjb252ZXJ0V2l0aEZ1bmN0aW9uPHVf
dG91cHBlcj4ocmVzdWx0LCByZXN1bHRMZW5ndGgsIHNvdXJjZSwgc291cmNlTGVuZ3RoLCAqc3Rh
dHVzKTsKIH0KLQotfSAvLyBuYW1lc3BhY2UgVW5pY29kZQotfSAvLyBuYW1lc3BhY2UgV1RGCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi91bmljb2RlL3djaGFyL1VuaWNvZGVXY2hhci5oIGIv
U291cmNlL1dURi93dGYvdW5pY29kZS93Y2hhci9Vbmljb2RlV2NoYXIuaAppbmRleCBmZTEwOTRi
Mzc4MWQ2NzUxYzkzY2E2ZjRiNGYwYmU3YjE1NWI5YzUxLi4yMjA2ZWRlODE5MGYxYjk4MGZmNWFj
ZmVhNmQxMDc1OGQ5NDNmYTMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi91bmljb2RlL3dj
aGFyL1VuaWNvZGVXY2hhci5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL3VuaWNvZGUvd2NoYXIvVW5p
Y29kZVdjaGFyLmgKQEAgLTMzLDEzNSArMzMsMTAwIEBACiB0eXBlZGVmIHdjaGFyX3QgVUNoYXI7
CiB0eXBlZGVmIHVpbnQzMl90IFVDaGFyMzI7CiAKLW5hbWVzcGFjZSBXVEYgewotbmFtZXNwYWNl
IFVuaWNvZGUgewotCi1lbnVtIERpcmVjdGlvbiB7Ci0gICAgTGVmdFRvUmlnaHQsCi0gICAgUmln
aHRUb0xlZnQsCi0gICAgRXVyb3BlYW5OdW1iZXIsCi0gICAgRXVyb3BlYW5OdW1iZXJTZXBhcmF0
b3IsCi0gICAgRXVyb3BlYW5OdW1iZXJUZXJtaW5hdG9yLAotICAgIEFyYWJpY051bWJlciwKLSAg
ICBDb21tb25OdW1iZXJTZXBhcmF0b3IsCi0gICAgQmxvY2tTZXBhcmF0b3IsCi0gICAgU2VnbWVu
dFNlcGFyYXRvciwKLSAgICBXaGl0ZVNwYWNlTmV1dHJhbCwKLSAgICBPdGhlck5ldXRyYWwsCi0g
ICAgTGVmdFRvUmlnaHRFbWJlZGRpbmcsCi0gICAgTGVmdFRvUmlnaHRPdmVycmlkZSwKLSAgICBS
aWdodFRvTGVmdEFyYWJpYywKLSAgICBSaWdodFRvTGVmdEVtYmVkZGluZywKLSAgICBSaWdodFRv
TGVmdE92ZXJyaWRlLAotICAgIFBvcERpcmVjdGlvbmFsRm9ybWF0LAotICAgIE5vblNwYWNpbmdN
YXJrLAotICAgIEJvdW5kYXJ5TmV1dHJhbAotfTsKK2VudW0gVUJsb2NrQ29kZSB7IFVCTE9DS19V
TktOT1dOLCBVQkxPQ0tfQVJBQklDIH07CiAKLWVudW0gRGVjb21wb3NpdGlvblR5cGUgewotICAg
IERlY29tcG9zaXRpb25Ob25lLAotICAgIERlY29tcG9zaXRpb25DYW5vbmljYWwsCi0gICAgRGVj
b21wb3NpdGlvbkNvbXBhdCwKLSAgICBEZWNvbXBvc2l0aW9uQ2lyY2xlLAotICAgIERlY29tcG9z
aXRpb25GaW5hbCwKLSAgICBEZWNvbXBvc2l0aW9uRm9udCwKLSAgICBEZWNvbXBvc2l0aW9uRnJh
Y3Rpb24sCi0gICAgRGVjb21wb3NpdGlvbkluaXRpYWwsCi0gICAgRGVjb21wb3NpdGlvbklzb2xh
dGVkLAotICAgIERlY29tcG9zaXRpb25NZWRpYWwsCi0gICAgRGVjb21wb3NpdGlvbk5hcnJvdywK
LSAgICBEZWNvbXBvc2l0aW9uTm9CcmVhaywKLSAgICBEZWNvbXBvc2l0aW9uU21hbGwsCi0gICAg
RGVjb21wb3NpdGlvblNxdWFyZSwKLSAgICBEZWNvbXBvc2l0aW9uU3ViLAotICAgIERlY29tcG9z
aXRpb25TdXBlciwKLSAgICBEZWNvbXBvc2l0aW9uVmVydGljYWwsCi0gICAgRGVjb21wb3NpdGlv
bldpZGUKK2VudW0gVUNoYXJDYXRlZ29yeSB7CisgICAgVV9DSEFSX0NBVEVHT1JZX1VOS05PV04s
CisgICAgVV9QQVJBR1JBUEhfU0VQQVJBVE9SLAorICAgIFVfU1BBQ0VfU0VQQVJBVE9SCiB9Owog
Ci1lbnVtIENoYXJDYXRlZ29yeSB7Ci0gICAgTm9DYXRlZ29yeSA9IDAsCi0gICAgT3RoZXJfTm90
QXNzaWduZWQgPSBVX01BU0soMCksCi0gICAgTGV0dGVyX1VwcGVyY2FzZSA9IFVfTUFTSygxKSwK
LSAgICBMZXR0ZXJfTG93ZXJjYXNlID0gVV9NQVNLKDIpLAotICAgIExldHRlcl9UaXRsZWNhc2Ug
PSBVX01BU0soMyksCi0gICAgTGV0dGVyX01vZGlmaWVyID0gVV9NQVNLKDQpLAotICAgIExldHRl
cl9PdGhlciA9IFVfTUFTSyg1KSwKLQotICAgIE1hcmtfTm9uU3BhY2luZyA9IFVfTUFTSyg2KSwK
LSAgICBNYXJrX0VuY2xvc2luZyA9IFVfTUFTSyg3KSwKLSAgICBNYXJrX1NwYWNpbmdDb21iaW5p
bmcgPSBVX01BU0soOCksCi0KLSAgICBOdW1iZXJfRGVjaW1hbERpZ2l0ID0gVV9NQVNLKDkpLAot
ICAgIE51bWJlcl9MZXR0ZXIgPSBVX01BU0soMTApLAotICAgIE51bWJlcl9PdGhlciA9IFVfTUFT
SygxMSksCi0KLSAgICBTZXBhcmF0b3JfU3BhY2UgPSBVX01BU0soMTIpLAotICAgIFNlcGFyYXRv
cl9MaW5lID0gVV9NQVNLKDEzKSwKLSAgICBTZXBhcmF0b3JfUGFyYWdyYXBoID0gVV9NQVNLKDE0
KSwKLQotICAgIE90aGVyX0NvbnRyb2wgPSBVX01BU0soMTUpLAotICAgIE90aGVyX0Zvcm1hdCA9
IFVfTUFTSygxNiksCi0gICAgT3RoZXJfUHJpdmF0ZVVzZSA9IFVfTUFTSygxNyksCi0gICAgT3Ro
ZXJfU3Vycm9nYXRlID0gVV9NQVNLKDE4KSwKLQotICAgIFB1bmN0dWF0aW9uX0Rhc2ggPSBVX01B
U0soMTkpLAotICAgIFB1bmN0dWF0aW9uX09wZW4gPSBVX01BU0soMjApLAotICAgIFB1bmN0dWF0
aW9uX0Nsb3NlID0gVV9NQVNLKDIxKSwKLSAgICBQdW5jdHVhdGlvbl9Db25uZWN0b3IgPSBVX01B
U0soMjIpLAotICAgIFB1bmN0dWF0aW9uX090aGVyID0gVV9NQVNLKDIzKSwKLQotICAgIFN5bWJv
bF9NYXRoID0gVV9NQVNLKDI0KSwKLSAgICBTeW1ib2xfQ3VycmVuY3kgPSBVX01BU0soMjUpLAot
ICAgIFN5bWJvbF9Nb2RpZmllciA9IFVfTUFTSygyNiksCi0gICAgU3ltYm9sX090aGVyID0gVV9N
QVNLKDI3KSwKLQotICAgIFB1bmN0dWF0aW9uX0luaXRpYWxRdW90ZSA9IFVfTUFTSygyOCksCi0g
ICAgUHVuY3R1YXRpb25fRmluYWxRdW90ZSA9IFVfTUFTSygyOSkKK2VudW0gVUNoYXJEaXJlY3Rp
b24geworICAgIFVfTEVGVF9UT19SSUdIVCwKKyAgICBVX1JJR0hUX1RPX0xFRlQsCisgICAgVV9F
VVJPUEVBTl9OVU1CRVIsCisgICAgVV9FVVJPUEVBTl9OVU1CRVJfU0VQQVJBVE9SLAorICAgIFVf
RVVST1BFQU5fTlVNQkVSX1RFUk1JTkFUT1IsCisgICAgVV9BUkFCSUNfTlVNQkVSLAorICAgIFVf
Q09NTU9OX05VTUJFUl9TRVBBUkFUT1IsCisgICAgVV9CTE9DS19TRVBBUkFUT1IsCisgICAgVV9T
RUdNRU5UX1NFUEFSQVRPUiwKKyAgICBVX1dISVRFX1NQQUNFX05FVVRSQUwsCisgICAgVV9PVEhF
Ul9ORVVUUkFMLAorICAgIFVfTEVGVF9UT19SSUdIVF9FTUJFRERJTkcsCisgICAgVV9MRUZUX1RP
X1JJR0hUX09WRVJSSURFLAorICAgIFVfUklHSFRfVE9fTEVGVF9BUkFCSUMsCisgICAgVV9SSUdI
VF9UT19MRUZUX0VNQkVERElORywKKyAgICBVX1JJR0hUX1RPX0xFRlRfT1ZFUlJJREUsCisgICAg
VV9QT1BfRElSRUNUSU9OQUxfRk9STUFULAorICAgIFVfRElSX05PTl9TUEFDSU5HX01BUkssCisg
ICAgVV9CT1VOREFSWV9ORVVUUkFMCiB9OwogCi0KLVdURl9FWFBPUlRfUFJJVkFURSBDaGFyQ2F0
ZWdvcnkgY2F0ZWdvcnkoVUNoYXIzMik7Ci1XVEZfRVhQT1JUX1BSSVZBVEUgdW5zaWduZWQgY2hh
ciBjb21iaW5pbmdDbGFzcyhVQ2hhcjMyKTsKLVdURl9FWFBPUlRfUFJJVkFURSBEaXJlY3Rpb24g
ZGlyZWN0aW9uKFVDaGFyMzIpOwotV1RGX0VYUE9SVF9QUklWQVRFIERlY29tcG9zaXRpb25UeXBl
IGRlY29tcG9zaXRpb25UeXBlKFVDaGFyMzIpOwotV1RGX0VYUE9SVF9QUklWQVRFIGJvb2wgcmVx
dWlyZXNDb21wbGV4Q29udGV4dEZvcldvcmRCcmVha2luZyhVQ2hhcjMyKTsKLVdURl9FWFBPUlRf
UFJJVkFURSBVQ2hhcjMyIG1pcnJvcmVkQ2hhcihVQ2hhcjMyKTsKLQotaW5saW5lIGJvb2wgaXNB
bHBoYW51bWVyaWMoVUNoYXIgYykgeyByZXR1cm4gISFpc3dhbG51bShjKTsgfQotaW5saW5lIGJv
b2wgaXNEaWdpdChVQ2hhciBjKSB7IHJldHVybiAhIWlzd2RpZ2l0KGMpOyB9Ci1pbmxpbmUgYm9v
bCBpc0xldHRlcihVQ2hhciBjKSB7IHJldHVybiAhIWlzd2FscGhhKGMpOyB9Ci1pbmxpbmUgYm9v
bCBpc0xvd2VyKFVDaGFyIGMpIHsgcmV0dXJuICEhaXN3bG93ZXIoYyk7IH0KLWlubGluZSBib29s
IGlzUHJpbnRhYmxlQ2hhcihVQ2hhciBjKSB7IHJldHVybiAhIWlzd3ByaW50KGMpOyB9Ci1pbmxp
bmUgYm9vbCBpc1B1bmN0KFVDaGFyIGMpIHsgcmV0dXJuICEhaXN3cHVuY3QoYyk7IH0KLWlubGlu
ZSBib29sIGlzU3BhY2UoVUNoYXIgYykgeyByZXR1cm4gISFpc3dzcGFjZShjKTsgfQotaW5saW5l
IGJvb2wgaXNVcHBlcihVQ2hhciBjKSB7IHJldHVybiAhIWlzd3VwcGVyKGMpOyB9Ci0KLWlubGlu
ZSBib29sIGlzQXJhYmljQ2hhcihVQ2hhcjMyIGMpIHsgcmV0dXJuIGMgPj0gMHgwNjAwICYmIGMg
PD0gMHgwNmZmOyB9Ci1pbmxpbmUgYm9vbCBpc1NlcGFyYXRvclNwYWNlKFVDaGFyMzIgYykgeyBy
ZXR1cm4gY2F0ZWdvcnkoYykgPT0gU2VwYXJhdG9yX1NwYWNlOyB9Ci0KLWlubGluZSBVQ2hhciBm
b2xkQ2FzZShVQ2hhciBjKSB7IHJldHVybiB0b3dsb3dlcihjKTsgfQotaW5saW5lIFVDaGFyIHRv
TG93ZXIoVUNoYXIgYykgeyByZXR1cm4gdG93bG93ZXIoYyk7IH0KLWlubGluZSBVQ2hhciB0b1Vw
cGVyKFVDaGFyIGMpIHsgcmV0dXJuIHRvd3VwcGVyKGMpOyB9Ci1pbmxpbmUgVUNoYXIgdG9UaXRs
ZUNhc2UoVUNoYXIgYykgeyByZXR1cm4gdG93dXBwZXIoYyk7IH0KLQotV1RGX0VYUE9SVF9QUklW
QVRFIGludCBmb2xkQ2FzZShVQ2hhciogcmVzdWx0LCBpbnQgcmVzdWx0TGVuZ3RoLCBjb25zdCBV
Q2hhciogc291cmNlLCBpbnQgc291cmNlTGVuZ3RoLCBib29sKiBpc0Vycm9yKTsKLVdURl9FWFBP
UlRfUFJJVkFURSBpbnQgdG9Mb3dlcihVQ2hhciogcmVzdWx0LCBpbnQgcmVzdWx0TGVuZ3RoLCBj
b25zdCBVQ2hhciogc291cmNlLCBpbnQgc291cmNlTGVuZ3RoLCBib29sKiBpc0Vycm9yKTsKLVdU
Rl9FWFBPUlRfUFJJVkFURSBpbnQgdG9VcHBlcihVQ2hhciogcmVzdWx0LCBpbnQgcmVzdWx0TGVu
Z3RoLCBjb25zdCBVQ2hhciogc291cmNlLCBpbnQgc291cmNlTGVuZ3RoLCBib29sKiBpc0Vycm9y
KTsKLQotaW5saW5lIGludCB1bWVtY2FzZWNtcChjb25zdCBVQ2hhciogYSwgY29uc3QgVUNoYXIq
IGIsIGludCBsZW4pCi17Ci0gICAgZm9yIChpbnQgaSA9IDA7IGkgPCBsZW47ICsraSkgewotICAg
ICAgICBVQ2hhciBjMSA9IGZvbGRDYXNlKGFbaV0pOwotICAgICAgICBVQ2hhciBjMiA9IGZvbGRD
YXNlKGJbaV0pOwotICAgICAgICBpZiAoYzEgIT0gYzIpCi0gICAgICAgICAgICByZXR1cm4gYzEg
LSBjMjsKLSAgICB9Ci0KLSAgICByZXR1cm4gMDsKLX0KLQotfSAvLyBuYW1lc3BhY2UgVW5pY29k
ZQotfSAvLyBuYW1lc3BhY2UgV1RGCitlbnVtIFVEZWNvbXBvc2l0aW9uVHlwZSB7IFVfRFRfTk9O
RSwgVV9EVF9DT01QQVQsIFVfRFRfRk9OVCB9CisKK2VudW0gVUVycm9yQ29kZSB7IFVfWkVST19F
UlJPUiA9IDAsIFVfRVJST1IgfTsKKworZW51bSBVTGluZUJyZWFrIHsgVV9MQl9VTktOT1dOLCBV
X0xCX0NPTVBMRVhfQ09OVEVYVCwgVV9MQl9DT05ESVRJT05BTF9KQVBBTkVTRV9TVEFSVEVSLCBV
X0xCX0lERU9HUkFQSElDIH07CisKK2VudW0gVU5vcm1hbGl6YXRpb25Nb2RlIHsgVU5PUk1fTkZD
IH07CisKK2VudW0gVVByb3BlcnR5IHsgVUNIQVJfREVDT01QT1NJVElPTl9UWVBFLCBVQ0hBUl9M
SU5FX0JSRUFLIH07CisKK2VudW0geyBVTk9STV9VTklDT0RFXzNfMiB9OworCisvLyBGSVhNRTog
V291bGQgYmUgZ29vZCB0byBkZWZpbmUgYWxsIG9mIHRoZXNlIGluIHRlcm1zIG9mIFVDaGFyQ2F0
ZWdvcnkgY29uc3RhbnRzLCBidXQgdW50aWwgdV9jaGFyVHlwZQorLy8gaXMgaW1wbGVtZW50ZWQs
IHRoYXQncyBub3QgcmVhbGx5IHdvcnRoIHRoZSB0aW1lLgorCisjZGVmaW5lIFVfR0NfQ0NfTUFT
SyAwCisjZGVmaW5lIFVfR0NfQ0ZfTUFTSyAwCisjZGVmaW5lIFVfR0NfQ05fTUFTSyAwCisjZGVm
aW5lIFVfR0NfTExfTUFTSyAwCisjZGVmaW5lIFVfR0NfTE1fTUFTSyAwCisjZGVmaW5lIFVfR0Nf
TE9fTUFTSyAwCisjZGVmaW5lIFVfR0NfTFRfTUFTSyAwCisjZGVmaW5lIFVfR0NfTFVfTUFTSyAw
CisjZGVmaW5lIFVfR0NfTUNfTUFTSyAwCisjZGVmaW5lIFVfR0NfTU5fTUFTSyAwCisjZGVmaW5l
IFVfR0NfTkRfTUFTSyAwCisjZGVmaW5lIFVfR0NfTkxfTUFTSyAwCisjZGVmaW5lIFVfR0NfUENf
TUFTSyAwCisjZGVmaW5lIFVfR0NfUEVfTUFTSyAwCisjZGVmaW5lIFVfR0NfUEZfTUFTSyAwCisj
ZGVmaW5lIFVfR0NfUElfTUFTSyAwCisjZGVmaW5lIFVfR0NfUE9fTUFTSyAwCisjZGVmaW5lIFVf
R0NfUFNfTUFTSyAwCisjZGVmaW5lIFVfR0NfWkxfTUFTSyAwCisjZGVmaW5lIFVfR0NfWlBfTUFT
SyAwCisKKyNkZWZpbmUgVV9HQ19MX01BU0sgMAorI2RlZmluZSBVX0dDX01fTUFTSyAwCisjZGVm
aW5lIFVfR0NfWl9NQVNLIDAKKworI2RlZmluZSBVX1NVQ0NFU1Moc3RhdHVzKSAoKHN0YXR1cykg
PD0gMCkKKyNkZWZpbmUgVV9GQUlMVVJFKHN0YXR1cykgKChzdGF0dXMpID4gMCkKKworI2RlZmlu
ZSBVX0ZPTERfQ0FTRV9ERUZBVUxUIDAKKworI2RlZmluZSBVX0dFVF9HQ19NQVNLKGMpIFVfTUFT
Syh1X2NoYXJUeXBlKGMpKQorCitpbmxpbmUgVUJsb2NrQ29kZSB1YmxvY2tfZ2V0Q29kZShVQ2hh
cjMyIGNoYXJhY3RlcikgeyByZXR1cm4gKGNoYXJhY3RlciAmIH4weEZGKSA9PSAweDYwMCA/IFVC
TE9DS19BUkFCSUMgOiBVQkxPQ0tfVU5LTk9XTjsgfQorV1RGX0VYUE9SVF9QUklWQVRFIGludCB1
bm9ybV9ub3JtYWxpemUoY29uc3QgVUNoYXIqIHNvdXJjZSwgaW50MzJfdCBzb3VyY2VMZW5ndGgs
IFVOb3JtYWxpemF0aW9uTW9kZSBtb2RlLCBpbnQzMl90IG9wdGlvbnMsIFVDaGFyKiByZXN1bHQs
IGludDMyX3QgcmVzdWx0TGVuZ3RoLCBVRXJyb3JDb2RlKiBzdGF0dXMpOworV1RGX0VYUE9SVF9Q
UklWQVRFIFVDaGFyRGlyZWN0aW9uIHVfY2hhckRpcmVjdGlvbihVQ2hhcjMyKTsKK1dURl9FWFBP
UlRfUFJJVkFURSBVQ2hhcjMyIHVfY2hhck1pcnJvcihVQ2hhcjMyKTsKK1dURl9FWFBPUlRfUFJJ
VkFURSBVQ2hhckNhdGVnb3J5IHVfY2hhclR5cGUoVUNoYXIzMik7CitpbmxpbmUgVUNoYXIzMiB1
X2ZvbGRDYXNlKFVDaGFyMzIgY2hhcmFjdGVyLCB1bnNpZ25lZCBvcHRpb24pIHsgQVNTRVJUX1VO
VVNFRChvcHRpb25zLCBvcHRpb25zID09IFVfRk9MRF9DQVNFX0RFRkFVTFQpOyByZXR1cm4gdG93
bG93ZXIoY2hhcmFjdGVyKTsgfQorV1RGX0VYUE9SVF9QUklWQVRFIHVpbnQ4X3QgdV9nZXRDb21i
aW5pbmdDbGFzcyhVQ2hhcjMyKTsKK1dURl9FWFBPUlRfUFJJVkFURSBpbnQgdV9nZXRJbnRQcm9w
ZXJ0eVZhbHVlKFVDaGFyMzIsIFVQcm9wZXJ0eSk7CitpbmxpbmUgYm9vbCB1X2lzYWxudW0oVUNo
YXIzMiBjaGFyYWN0ZXIpIHsgcmV0dXJuIGlzd2FsbnVtKGNoYXJhY3Rlcik7IH0KK2lubGluZSBi
b29sIHVfaXNwdW5jdChVQ2hhcjMyIGNoYXJhY3RlcikgeyByZXR1cm4gaXN3cHVuY3QoY2hhcmFj
dGVyKTsgfQorV1RGX0VYUE9SVF9QUklWQVRFIGludCB1X21lbWNhc2VjbXAoY29uc3QgVUNoYXIq
LCBjb25zdCBVQ2hhciosIGludCBzb3VyY2VMZW5ndGgsIHVuc2lnbmVkIG9wdGlvbnMpOworaW5s
aW5lIGJvb2wgdV9wcmludChVQ2hhcjMyIGNoYXJhY3RlcikgeyByZXR1cm4gaXN3cHJpbnQoY2hh
cmFjdGVyKTsgfQorV1RGX0VYUE9SVF9QUklWQVRFIGludCB1X3N0ckZvbGRDYXNlKFVDaGFyKiBy
ZXN1bHQsIGludCByZXN1bHRMZW5ndGgsIGNvbnN0IFVDaGFyKiBzb3VyY2UsIGludCBzb3VyY2VM
ZW5ndGgsIHVuc2lnbmVkIG9wdGlvbnMsIFVFcnJvckNvZGUqKTsKK1dURl9FWFBPUlRfUFJJVkFU
RSBpbnQgdV9zdHJUb0xvd2VyKFVDaGFyKiByZXN1bHQsIGludCByZXN1bHRMZW5ndGgsIGNvbnN0
IFVDaGFyKiBzb3VyY2UsIGludCBzb3VyY2VMZW5ndGgsIGNvbnN0IGNoYXIqIGxvY2FsZSwgVUVy
cm9yQ29kZSopOworV1RGX0VYUE9SVF9QUklWQVRFIGludCB1X3N0clRvVXBwZXIoVUNoYXIqIHJl
c3VsdCwgaW50IHJlc3VsdExlbmd0aCwgY29uc3QgVUNoYXIqIHNvdXJjZSwgaW50IHNvdXJjZUxl
bmd0aCwgY29uc3QgY2hhciogbG9jYWxlLCBVRXJyb3JDb2RlKik7CitpbmxpbmUgVUNoYXIzMiB1
X3RvbG93ZXIoVUNoYXIzMiBjaGFyYWN0ZXIpIHsgcmV0dXJuIHRvd2xvd2VyKGNoYXJhY3Rlcik7
IH0KK2lubGluZSBVQ2hhcjMyIHVfdG90aXRsZShVQ2hhcjMyIGNoYXJhY3RlcikgeyByZXR1cm4g
dG93dXBwZXIoY2hhcmFjdGVyKTsgfQoraW5saW5lIFVDaGFyMzIgdV90b3VwcGVyKFVDaGFyMzIg
Y2hhcmFjdGVyKSB7IHJldHVybiB0b3d1cHBlcihjaGFyYWN0ZXIpOyB9CiAKICNlbmRpZiAvLyBX
VEZfVW5pY29kZVdjaGFyX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5k
ZXhlZGRiL0lEQktleVBhdGguY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIv
SURCS2V5UGF0aC5jcHAKaW5kZXggNTg4NTc0Nzk3YzMyYmEzYTRmMjE4NjU4Njk5NDBkMDM4ZDM0
MWFjNS4uZTQ1YWVhNDM3NjliZTdjZjBkNWQwNThlYWE0ZDA3NWIyM2JiYTZiZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCS2V5UGF0aC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCS2V5UGF0aC5jcHAKQEAgLTg2LDI0
ICs4NiwyMiBAQCBJREJLZXlQYXRoTGV4ZXI6OlRva2VuVHlwZSBJREJLZXlQYXRoTGV4ZXI6Omxl
eChTdHJpbmcmIGVsZW1lbnQpCiAKIG5hbWVzcGFjZSB7CiAKLXVzaW5nIG5hbWVzcGFjZSBXVEY6
OlVuaWNvZGU7Ci0KIC8vIFRoZSBmb2xsb3dpbmcgY29ycmVzcG9uZCB0byBncmFtbWFyIGluIEVD
TUEtMjYyLgotY29uc3QgdWludDMyX3QgdW5pY29kZUxldHRlciA9IExldHRlcl9VcHBlcmNhc2Ug
fCBMZXR0ZXJfTG93ZXJjYXNlIHwgTGV0dGVyX1RpdGxlY2FzZSB8IExldHRlcl9Nb2RpZmllciB8
IExldHRlcl9PdGhlciB8IE51bWJlcl9MZXR0ZXI7Ci1jb25zdCB1aW50MzJfdCB1bmljb2RlQ29t
YmluaW5nTWFyayA9IE1hcmtfTm9uU3BhY2luZyB8IE1hcmtfU3BhY2luZ0NvbWJpbmluZzsKLWNv
bnN0IHVpbnQzMl90IHVuaWNvZGVEaWdpdCA9IE51bWJlcl9EZWNpbWFsRGlnaXQ7Ci1jb25zdCB1
aW50MzJfdCB1bmljb2RlQ29ubmVjdG9yUHVuY3R1YXRpb24gPSBQdW5jdHVhdGlvbl9Db25uZWN0
b3I7Citjb25zdCB1aW50MzJfdCB1bmljb2RlTGV0dGVyID0gVV9HQ19MX01BU0sgfCBVX0dDX05M
X01BU0s7Citjb25zdCB1aW50MzJfdCB1bmljb2RlQ29tYmluaW5nTWFyayA9IFVfR0NfTU5fTUFT
SyB8IFVfR0NfTUNfTUFTSzsKK2NvbnN0IHVpbnQzMl90IHVuaWNvZGVEaWdpdCA9IFVfR0NfTkRf
TUFTSzsKK2NvbnN0IHVpbnQzMl90IHVuaWNvZGVDb25uZWN0b3JQdW5jdHVhdGlvbiA9IFVfR0Nf
UENfTUFTSzsKIGNvbnN0IFVDaGFyIFpXTkogPSAweDIwMEM7CiBjb25zdCBVQ2hhciBaV0ogPSAw
eDIwMEQ7CiAKIHN0YXRpYyBpbmxpbmUgYm9vbCBpc0lkZW50aWZpZXJTdGFydENoYXJhY3RlcihV
Q2hhciBjKQogewotICAgIHJldHVybiAoY2F0ZWdvcnkoYykgJiB1bmljb2RlTGV0dGVyKSB8fCAo
YyA9PSAnJCcpIHx8IChjID09ICdfJyk7CisgICAgcmV0dXJuIChVX0dFVF9HQ19NQVNLKGMpICYg
dW5pY29kZUxldHRlcikgfHwgKGMgPT0gJyQnKSB8fCAoYyA9PSAnXycpOwogfQogCiBzdGF0aWMg
aW5saW5lIGJvb2wgaXNJZGVudGlmaWVyQ2hhcmFjdGVyKFVDaGFyIGMpCiB7Ci0gICAgcmV0dXJu
IChjYXRlZ29yeShjKSAmICh1bmljb2RlTGV0dGVyIHwgdW5pY29kZUNvbWJpbmluZ01hcmsgfCB1
bmljb2RlRGlnaXQgfCB1bmljb2RlQ29ubmVjdG9yUHVuY3R1YXRpb24pKSB8fCAoYyA9PSAnJCcp
IHx8IChjID09ICdfJykgfHwgKGMgPT0gWldOSikgfHwgKGMgPT0gWldKKTsKKyAgICByZXR1cm4g
KFVfR0VUX0dDX01BU0soYykgJiAodW5pY29kZUxldHRlciB8IHVuaWNvZGVDb21iaW5pbmdNYXJr
IHwgdW5pY29kZURpZ2l0IHwgdW5pY29kZUNvbm5lY3RvclB1bmN0dWF0aW9uKSkgfHwgKGMgPT0g
JyQnKSB8fCAoYyA9PSAnXycpIHx8IChjID09IFpXTkopIHx8IChjID09IFpXSik7CiB9CiAKIH0g
Ly8gbmFtZXNwYWNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXIuY3BwCmluZGV4IDYxM2E0MzZjNzhiMTA0
M2QwMzlkMGNiYThlM2ZlYzRlMTM5NmQ0YzcuLmQxYjk3MmEwYjRjMzdlZWRjMGFhZmQzNjkwOWMy
YzI4ZDI4Y2RhZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXIuY3BwCkBAIC0zNzUsOCArMzc1LDEw
IEBAIEFMV0FZU19JTkxJTkUgc3RhdGljIHZvaWQgbWFrZUxvd2VyKGNvbnN0IENoYXJhY3RlclR5
cGUqIGlucHV0LCBDaGFyYWN0ZXJUeXBlKiBvCiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7
IGkgPCBsZW5ndGg7IGkrKykKICAgICAgICAgICAgIG91dHB1dFtpXSA9IHRvQVNDSUlMb3dlcihp
bnB1dFtpXSk7CiAgICAgfSBlbHNlIHsKLSAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8
IGxlbmd0aDsgaSsrKQotICAgICAgICAgICAgb3V0cHV0W2ldID0gVW5pY29kZTo6dG9Mb3dlcihp
bnB1dFtpXSk7CisgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykg
eworICAgICAgICAgICAgQVNTRVJUKHVfdG9sb3dlcihpbnB1dFtpXSkgPD0gMHhGRkZGKTsKKyAg
ICAgICAgICAgIG91dHB1dFtpXSA9IHVfdG9sb3dlcihpbnB1dFtpXSk7CisgICAgICAgIH0KICAg
ICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCmluZGV4IGQ4YjczMDIzZGM0M2Y3YWY4ZDA1
YjNiODIwM2ZmMjlkNDIyYWNkZmQuLmFlYmE2MzIzNGVlMWVlYmU1MjEwZmI5ZjI0MGVlMWNiMjYw
OTZhMmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcApAQCAtMjY3LDggKzI2Nyw3IEBAIHN0YXRp
YyBpbmxpbmUgYm9vbCBpc1ZhbGlkTmFtZVN0YXJ0KFVDaGFyMzIgYykKICAgICAgICAgcmV0dXJu
IHRydWU7CiAKICAgICAvLyBydWxlcyAoYSkgYW5kIChmKSBhYm92ZQotICAgIGNvbnN0IHVpbnQz
Ml90IG5hbWVTdGFydE1hc2sgPSBMZXR0ZXJfTG93ZXJjYXNlIHwgTGV0dGVyX1VwcGVyY2FzZSB8
IExldHRlcl9PdGhlciB8IExldHRlcl9UaXRsZWNhc2UgfCBOdW1iZXJfTGV0dGVyOwotICAgIGlm
ICghKFVuaWNvZGU6OmNhdGVnb3J5KGMpICYgbmFtZVN0YXJ0TWFzaykpCisgICAgaWYgKCEoVV9H
RVRfR0NfTUFTSyhjKSAmIChVX0dDX0xMX01BU0sgfCBVX0dDX0xVX01BU0sgfCBVX0dDX0xPX01B
U0sgfCBVX0dDX0xUX01BU0sgfCBVX0dDX05MX01BU0spKSkKICAgICAgICAgcmV0dXJuIGZhbHNl
OwogCiAgICAgLy8gcnVsZSAoYykgYWJvdmUKQEAgLTI3Niw4ICsyNzUsOCBAQCBzdGF0aWMgaW5s
aW5lIGJvb2wgaXNWYWxpZE5hbWVTdGFydChVQ2hhcjMyIGMpCiAgICAgICAgIHJldHVybiBmYWxz
ZTsKIAogICAgIC8vIHJ1bGUgKGQpIGFib3ZlCi0gICAgRGVjb21wb3NpdGlvblR5cGUgZGVjb21w
VHlwZSA9IGRlY29tcG9zaXRpb25UeXBlKGMpOwotICAgIGlmIChkZWNvbXBUeXBlID09IERlY29t
cG9zaXRpb25Gb250IHx8IGRlY29tcFR5cGUgPT0gRGVjb21wb3NpdGlvbkNvbXBhdCkKKyAgICBp
bnQgdHlwZSA9IHVfZ2V0SW50UHJvcGVydHlWYWx1ZShjLCBVQ0hBUl9ERUNPTVBPU0lUSU9OX1RZ
UEUpOworICAgIGlmICh0eXBlID09IFVfRFRfRk9OVCB8fCB0eXBlID09IFVfRFRfQ09NUEFUKQog
ICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICByZXR1cm4gdHJ1ZTsKQEAgLTI5OCw4ICsyOTcs
NyBAQCBzdGF0aWMgaW5saW5lIGJvb2wgaXNWYWxpZE5hbWVQYXJ0KFVDaGFyMzIgYykKICAgICAg
ICAgcmV0dXJuIHRydWU7CiAKICAgICAvLyBydWxlcyAoYikgYW5kIChmKSBhYm92ZQotICAgIGNv
bnN0IHVpbnQzMl90IG90aGVyTmFtZVBhcnRNYXNrID0gTWFya19Ob25TcGFjaW5nIHwgTWFya19F
bmNsb3NpbmcgfCBNYXJrX1NwYWNpbmdDb21iaW5pbmcgfCBMZXR0ZXJfTW9kaWZpZXIgfCBOdW1i
ZXJfRGVjaW1hbERpZ2l0OwotICAgIGlmICghKFVuaWNvZGU6OmNhdGVnb3J5KGMpICYgb3RoZXJO
YW1lUGFydE1hc2spKQorICAgIGlmICghKFVfR0VUX0dDX01BU0soYykgJiAoVV9HQ19NX01BU0sg
fCBVX0dDX0xNX01BU0sgfCBVX0dDX05EX01BU0spKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwog
CiAgICAgLy8gcnVsZSAoYykgYWJvdmUKQEAgLTMwNyw4ICszMDUsOCBAQCBzdGF0aWMgaW5saW5l
IGJvb2wgaXNWYWxpZE5hbWVQYXJ0KFVDaGFyMzIgYykKICAgICAgICAgcmV0dXJuIGZhbHNlOwog
CiAgICAgLy8gcnVsZSAoZCkgYWJvdmUKLSAgICBEZWNvbXBvc2l0aW9uVHlwZSBkZWNvbXBUeXBl
ID0gZGVjb21wb3NpdGlvblR5cGUoYyk7Ci0gICAgaWYgKGRlY29tcFR5cGUgPT0gRGVjb21wb3Np
dGlvbkZvbnQgfHwgZGVjb21wVHlwZSA9PSBEZWNvbXBvc2l0aW9uQ29tcGF0KQorICAgIGludCB0
eXBlID0gdV9nZXRJbnRQcm9wZXJ0eVZhbHVlKGMsIFVDSEFSX0RFQ09NUE9TSVRJT05fVFlQRSk7
CisgICAgaWYgKHR5cGUgPT0gVV9EVF9GT05UIHx8IHR5cGUgPT0gVV9EVF9DT01QQVQpCiAgICAg
ICAgIHJldHVybiBmYWxzZTsKIAogICAgIHJldHVybiB0cnVlOwpAQCAtMTUwNiw3ICsxNTA0LDcg
QEAgc3RhdGljIGlubGluZSBTdHJpbmdXaXRoRGlyZWN0aW9uIGNhbm9uaWNhbGl6ZWRUaXRsZShE
b2N1bWVudCogZG9jdW1lbnQsIGNvbnN0IFMKICAgICBib29sIHByZXZpb3VzQ2hhcldhc1dTID0g
ZmFsc2U7CiAgICAgZm9yICg7IGkgPCBsZW5ndGg7ICsraSkgewogICAgICAgICBDaGFyYWN0ZXJU
eXBlIGMgPSBjaGFyYWN0ZXJzW2ldOwotICAgICAgICBpZiAoYyA8PSAweDIwIHx8IGMgPT0gMHg3
RiB8fCAoV1RGOjpVbmljb2RlOjpjYXRlZ29yeShjKSAmIChXVEY6OlVuaWNvZGU6OlNlcGFyYXRv
cl9MaW5lIHwgV1RGOjpVbmljb2RlOjpTZXBhcmF0b3JfUGFyYWdyYXBoKSkpIHsKKyAgICAgICAg
aWYgKGMgPD0gMHgyMCB8fCBjID09IDB4N0YgfHwgKFVfR0VUX0dDX01BU0soYykgJiAoVV9HQ19a
TF9NQVNLIHwgVV9HQ19aUF9NQVNLKSkpIHsKICAgICAgICAgICAgIGlmIChwcmV2aW91c0NoYXJX
YXNXUykKICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgIGJ1ZmZlcltidWls
ZGVySW5kZXgrK10gPSAnICc7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0Vk
aXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAKaW5kZXggNmQ4NWQ4
MjE5MTdkNWIyM2I4OWU5NjE4Y2IwYzM4NDg4N2ZkOTZkMi4uMjIwMDgyY2E2ZjhkMmFmODg4M2Rh
YTZlNDdhYjQ0YzBhYTRjZjQ0NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9F
ZGl0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcApAQCAtOTc1
LDcgKzk3NSw3IEBAIGJvb2wgRWRpdG9yOjppbnNlcnRUZXh0V2l0aG91dFNlbmRpbmdUZXh0RXZl
bnQoY29uc3QgU3RyaW5nJiB0ZXh0LCBib29sIHNlbGVjdEluCiAgICAgaWYgKHRleHQgPT0gIiAi
IHx8IHRleHQgPT0gIlx0IikKICAgICAgICAgc2hvdWxkQ29uc2lkZXJBcHBseWluZ0F1dG9jb3Jy
ZWN0aW9uID0gdHJ1ZTsKIAotICAgIGlmICh0ZXh0Lmxlbmd0aCgpID09IDEgJiYgaXNQdW5jdCh0
ZXh0WzBdKSAmJiAhaXNBbWJpZ3VvdXNCb3VuZGFyeUNoYXJhY3Rlcih0ZXh0WzBdKSkKKyAgICBp
ZiAodGV4dC5sZW5ndGgoKSA9PSAxICYmIHVfaXNwdW5jdCh0ZXh0WzBdKSAmJiAhaXNBbWJpZ3Vv
dXNCb3VuZGFyeUNoYXJhY3Rlcih0ZXh0WzBdKSkKICAgICAgICAgc2hvdWxkQ29uc2lkZXJBcHBs
eWluZ0F1dG9jb3JyZWN0aW9uID0gdHJ1ZTsKIAogICAgIGJvb2wgYXV0b2NvcnJlY3Rpb25XYXNB
cHBsaWVkID0gc2hvdWxkQ29uc2lkZXJBcHBseWluZ0F1dG9jb3JyZWN0aW9uICYmIG1fYWx0ZXJu
YXRpdmVUZXh0Q29udHJvbGxlci0+YXBwbHlBdXRvY29ycmVjdGlvbkJlZm9yZVR5cGluZ0lmQXBw
cm9wcmlhdGUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dEl0ZXJh
dG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dEl0ZXJhdG9yLmNwcAppbmRleCA0
NjZkZTgzNWU5NDM4ZmYyOGQwN2Q5NGVlOWQyYjBhZGJhYTYxM2ZjLi44NDZmNmM5NmRiMmFkODk1
N2YxOThjOTIzMGQzOGNlNmU5Y2VjOTVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL1RleHRJdGVyYXRvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0SXRl
cmF0b3IuY3BwCkBAIC0yMzE2LDkgKzIzMTYsOSBAQCBpbmxpbmUgc2l6ZV90IFNlYXJjaEJ1ZmZl
cjo6YXBwZW5kKGNvbnN0IFVDaGFyKiBjaGFyYWN0ZXJzLCBzaXplX3QgbGVuZ3RoKQogICAgIH0K
ICAgICBjb25zdCBpbnQgbWF4Rm9sZGVkQ2hhcmFjdGVycyA9IDE2OyAvLyBzZW5zaWJsZSBtYXhp
bXVtIGlzIDMsIHRoaXMgc2hvdWxkIGJlIG1vcmUgdGhhbiBlbm91Z2gKICAgICBVQ2hhciBmb2xk
ZWRDaGFyYWN0ZXJzW21heEZvbGRlZENoYXJhY3RlcnNdOwotICAgIGJvb2wgZXJyb3I7Ci0gICAg
aW50IG51bUZvbGRlZENoYXJhY3RlcnMgPSBmb2xkQ2FzZShmb2xkZWRDaGFyYWN0ZXJzLCBtYXhG
b2xkZWRDaGFyYWN0ZXJzLCBjaGFyYWN0ZXJzLCAxLCAmZXJyb3IpOwotICAgIEFTU0VSVCghZXJy
b3IpOworICAgIFVFcnJvckNvZGUgc3RhdHVzID0gVV9aRVJPX0VSUk9SOworICAgIGludCBudW1G
b2xkZWRDaGFyYWN0ZXJzID0gdV9zdHJGb2xkQ2FzZShmb2xkZWRDaGFyYWN0ZXJzLCBtYXhGb2xk
ZWRDaGFyYWN0ZXJzLCBjaGFyYWN0ZXJzLCAxLCBVX0ZPTERfQ0FTRV9ERUZBVUxULCAmc3RhdHVz
KTsKKyAgICBBU1NFUlQoVV9TVUNDRVNTKHN0YXR1cykpOwogICAgIEFTU0VSVChudW1Gb2xkZWRD
aGFyYWN0ZXJzKTsKICAgICBBU1NFUlQobnVtRm9sZGVkQ2hhcmFjdGVycyA8PSBtYXhGb2xkZWRD
aGFyYWN0ZXJzKTsKICAgICBpZiAoIWVycm9yICYmIG51bUZvbGRlZENoYXJhY3RlcnMpIHsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEVsZW1lbnQuY3BwIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MRWxlbWVudC5jcHAKaW5kZXggMTBiMzg2ZDFhZjk3OWQ0ZmRkNGE3Mjdm
ZDgyN2Q2YTM0NjVlMWUzYy4uMDhjNWE0NDc1ZTI1NGJkMmY2YmY2ZTQwN2QzMDZjMWE5NDRmMWZl
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRWxlbWVudC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRWxlbWVudC5jcHAKQEAgLTg1NSwxMCArODU1LDEwIEBA
IFRleHREaXJlY3Rpb24gSFRNTEVsZW1lbnQ6OmRpcmVjdGlvbmFsaXR5KE5vZGUqKiBzdHJvbmdE
aXJlY3Rpb25hbGl0eVRleHROb2RlKSBjCiAgICAgaWYgKGlzSFRNTFRleHRGb3JtQ29udHJvbEVs
ZW1lbnQodGhpcykpIHsKICAgICAgICAgSFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQqIHRleHRF
bGVtZW50ID0gdG9IVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudChjb25zdF9jYXN0PEhUTUxFbGVt
ZW50Kj4odGhpcykpOwogICAgICAgICBib29sIGhhc1N0cm9uZ0RpcmVjdGlvbmFsaXR5OwotICAg
ICAgICBVbmljb2RlOjpEaXJlY3Rpb24gdGV4dERpcmVjdGlvbiA9IHRleHRFbGVtZW50LT52YWx1
ZSgpLmRlZmF1bHRXcml0aW5nRGlyZWN0aW9uKCZoYXNTdHJvbmdEaXJlY3Rpb25hbGl0eSk7Cisg
ICAgICAgIFVDaGFyRGlyZWN0aW9uIHRleHREaXJlY3Rpb24gPSB0ZXh0RWxlbWVudC0+dmFsdWUo
KS5kZWZhdWx0V3JpdGluZ0RpcmVjdGlvbigmaGFzU3Ryb25nRGlyZWN0aW9uYWxpdHkpOwogICAg
ICAgICBpZiAoc3Ryb25nRGlyZWN0aW9uYWxpdHlUZXh0Tm9kZSkKICAgICAgICAgICAgICpzdHJv
bmdEaXJlY3Rpb25hbGl0eVRleHROb2RlID0gaGFzU3Ryb25nRGlyZWN0aW9uYWxpdHkgPyB0ZXh0
RWxlbWVudCA6IDA7Ci0gICAgICAgIHJldHVybiAodGV4dERpcmVjdGlvbiA9PSBVbmljb2RlOjpM
ZWZ0VG9SaWdodCkgPyBMVFIgOiBSVEw7CisgICAgICAgIHJldHVybiAodGV4dERpcmVjdGlvbiA9
PSBVX0xFRlRfVE9fUklHSFQpID8gTFRSIDogUlRMOwogICAgIH0KIAogICAgIE5vZGUqIG5vZGUg
PSBmaXJzdENoaWxkKCk7CkBAIC04ODEsMTEgKzg4MSwxMSBAQCBUZXh0RGlyZWN0aW9uIEhUTUxF
bGVtZW50OjpkaXJlY3Rpb25hbGl0eShOb2RlKiogc3Ryb25nRGlyZWN0aW9uYWxpdHlUZXh0Tm9k
ZSkgYwogCiAgICAgICAgIGlmIChub2RlLT5pc1RleHROb2RlKCkpIHsKICAgICAgICAgICAgIGJv
b2wgaGFzU3Ryb25nRGlyZWN0aW9uYWxpdHk7Ci0gICAgICAgICAgICBXVEY6OlVuaWNvZGU6OkRp
cmVjdGlvbiB0ZXh0RGlyZWN0aW9uID0gbm9kZS0+dGV4dENvbnRlbnQodHJ1ZSkuZGVmYXVsdFdy
aXRpbmdEaXJlY3Rpb24oJmhhc1N0cm9uZ0RpcmVjdGlvbmFsaXR5KTsKKyAgICAgICAgICAgIFVD
aGFyRGlyZWN0aW9uIHRleHREaXJlY3Rpb24gPSBub2RlLT50ZXh0Q29udGVudCh0cnVlKS5kZWZh
dWx0V3JpdGluZ0RpcmVjdGlvbigmaGFzU3Ryb25nRGlyZWN0aW9uYWxpdHkpOwogICAgICAgICAg
ICAgaWYgKGhhc1N0cm9uZ0RpcmVjdGlvbmFsaXR5KSB7CiAgICAgICAgICAgICAgICAgaWYgKHN0
cm9uZ0RpcmVjdGlvbmFsaXR5VGV4dE5vZGUpCiAgICAgICAgICAgICAgICAgICAgICpzdHJvbmdE
aXJlY3Rpb25hbGl0eVRleHROb2RlID0gbm9kZTsKLSAgICAgICAgICAgICAgICByZXR1cm4gKHRl
eHREaXJlY3Rpb24gPT0gV1RGOjpVbmljb2RlOjpMZWZ0VG9SaWdodCkgPyBMVFIgOiBSVEw7Cisg
ICAgICAgICAgICAgICAgcmV0dXJuICh0ZXh0RGlyZWN0aW9uID09IFVfTEVGVF9UT19SSUdIVCkg
PyBMVFIgOiBSVEw7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICAgICAgbm9kZSA9IE5v
ZGVUcmF2ZXJzYWw6Om5leHQobm9kZSwgdGhpcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxTZWxlY3RFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFNl
bGVjdEVsZW1lbnQuY3BwCmluZGV4IGQxZDdjMjYwNzdhY2E3ZThhNTc4OTZhYjFkMWEzOGM1YTM2
NGYzMGUuLjA1MjU3NDkyMTUxY2VjN2M0OTJjZGQ1ZTc5YzIwNTEyOGM4ZTcwODcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFNlbGVjdEVsZW1lbnQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTFNlbGVjdEVsZW1lbnQuY3BwCkBAIC0xNDg3LDcgKzE0ODcsNyBA
QCB2b2lkIEhUTUxTZWxlY3RFbGVtZW50OjpkZWZhdWx0RXZlbnRIYW5kbGVyKEV2ZW50KiBldmVu
dCkKIAogICAgIGlmIChldmVudC0+dHlwZSgpID09IGV2ZW50TmFtZXMoKS5rZXlwcmVzc0V2ZW50
ICYmIGV2ZW50LT5pc0tleWJvYXJkRXZlbnQoKSkgewogICAgICAgICBLZXlib2FyZEV2ZW50KiBr
ZXlib2FyZEV2ZW50ID0gc3RhdGljX2Nhc3Q8S2V5Ym9hcmRFdmVudCo+KGV2ZW50KTsKLSAgICAg
ICAgaWYgKCFrZXlib2FyZEV2ZW50LT5jdHJsS2V5KCkgJiYgIWtleWJvYXJkRXZlbnQtPmFsdEtl
eSgpICYmICFrZXlib2FyZEV2ZW50LT5tZXRhS2V5KCkgJiYgaXNQcmludGFibGVDaGFyKGtleWJv
YXJkRXZlbnQtPmNoYXJDb2RlKCkpKSB7CisgICAgICAgIGlmICgha2V5Ym9hcmRFdmVudC0+Y3Ry
bEtleSgpICYmICFrZXlib2FyZEV2ZW50LT5hbHRLZXkoKSAmJiAha2V5Ym9hcmRFdmVudC0+bWV0
YUtleSgpICYmIHVfaXNwcmludChrZXlib2FyZEV2ZW50LT5jaGFyQ29kZSgpKSkgewogICAgICAg
ICAgICAgdHlwZUFoZWFkRmluZChrZXlib2FyZEV2ZW50KTsKICAgICAgICAgICAgIGV2ZW50LT5z
ZXREZWZhdWx0SGFuZGxlZCgpOwogICAgICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaHRtbC9UeXBlQWhlYWQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9UeXBl
QWhlYWQuY3BwCmluZGV4IDYxY2MxZWI2ODk3NTdhNWNmNGI0ODFjZDdmZDFiY2JjODUxYTNjOGEu
LmQyNmY1N2Q4NDlhNmJhZTA1OTY4NmI1ZDI5NDk0ODAwYmU1YTczODggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvVHlwZUFoZWFkLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L1R5cGVBaGVhZC5jcHAKQEAgLTUwLDcgKzUwLDcgQEAgc3RhdGljIFN0cmluZyBzdHJpcExlYWRp
bmdXaGl0ZVNwYWNlKGNvbnN0IFN0cmluZyYgc3RyaW5nKQogCiAgICAgdW5zaWduZWQgaTsKICAg
ICBmb3IgKGkgPSAwOyBpIDwgbGVuZ3RoOyArK2kpIHsKLSAgICAgICAgaWYgKHN0cmluZ1tpXSAh
PSBub0JyZWFrU3BhY2UgJiYgKHN0cmluZ1tpXSA8PSAweDdGID8gIWlzQVNDSUlTcGFjZShzdHJp
bmdbaV0pIDogKGRpcmVjdGlvbihzdHJpbmdbaV0pICE9IFdoaXRlU3BhY2VOZXV0cmFsKSkpCisg
ICAgICAgIGlmIChzdHJpbmdbaV0gIT0gbm9CcmVha1NwYWNlICYmIChzdHJpbmdbaV0gPD0gMHg3
RiA/ICFpc0FTQ0lJU3BhY2Uoc3RyaW5nW2ldKSA6ICh1X2NoYXJEaXJlY3Rpb24oc3RyaW5nW2ld
KSAhPSBVX1dISVRFX1NQQUNFX05FVVRSQUwpKSkKICAgICAgICAgICAgIGJyZWFrOwogICAgIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UZXh0VHJhY2tDdWUuY3Bw
IGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UZXh0VHJhY2tDdWUuY3BwCmluZGV4IGM1Mzky
Njg2YmE4N2VmMWQ5ODVmNGE3MzBmNWUxYzEyZjQ4YTFjMDYuLjE0YzQ3NjgwYjUxOThjYTkxYTU0
Y2MxYjFjNzg0OGUzMzNmNDE0OTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJh
Y2svVGV4dFRyYWNrQ3VlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRU
cmFja0N1ZS5jcHAKQEAgLTYxNSw3ICs2MTUsNyBAQCBzdGF0aWMgYm9vbCBpc0N1ZVBhcmFncmFw
aFNlcGFyYXRvcihVQ2hhciBjaGFyYWN0ZXIpCiB7CiAgICAgLy8gV2l0aGluIGEgY3VlLCBwYXJh
Z3JhcGggYm91bmRhcmllcyBhcmUgb25seSBkZW5vdGVkIGJ5IFR5cGUgQiBjaGFyYWN0ZXJzLAog
ICAgIC8vIHN1Y2ggYXMgVSswMDBBIExJTkUgRkVFRCAoTEYpLCBVKzAwODUgTkVYVCBMSU5FIChO
RUwpLCBhbmQgVSsyMDI5IFBBUkFHUkFQSCBTRVBBUkFUT1IuCi0gICAgcmV0dXJuIFdURjo6VW5p
Y29kZTo6Y2F0ZWdvcnkoY2hhcmFjdGVyKSAmIFdURjo6VW5pY29kZTo6U2VwYXJhdG9yX1BhcmFn
cmFwaDsKKyAgICByZXR1cm4gdV9jaGFyVHlwZShjaGFyYWN0ZXIpID09IFVfUEFSQUdSQVBIX1NF
UEFSQVRPUjsKIH0KIAogdm9pZCBUZXh0VHJhY2tDdWU6OmRldGVybWluZVRleHREaXJlY3Rpb24o
KQpAQCAtNjQ4LDEzICs2NDgsMTIgQEAgdm9pZCBUZXh0VHJhY2tDdWU6OmRldGVybWluZVRleHRE
aXJlY3Rpb24oKQogICAgICAgICAgICAgcmV0dXJuOwogCiAgICAgICAgIGlmIChVQ2hhciBjdXJy
ZW50ID0gcGFyYWdyYXBoW2ldKSB7Ci0gICAgICAgICAgICBXVEY6OlVuaWNvZGU6OkRpcmVjdGlv
biBjaGFyRGlyZWN0aW9uID0gV1RGOjpVbmljb2RlOjpkaXJlY3Rpb24oY3VycmVudCk7Ci0gICAg
ICAgICAgICBpZiAoY2hhckRpcmVjdGlvbiA9PSBXVEY6OlVuaWNvZGU6OkxlZnRUb1JpZ2h0KSB7
CisgICAgICAgICAgICBVQ2hhckRpcmVjdGlvbiBjaGFyRGlyZWN0aW9uID0gdV9jaGFyRGlyZWN0
aW9uKGN1cnJlbnQpOworICAgICAgICAgICAgaWYgKGNoYXJEaXJlY3Rpb24gPT0gVV9MRUZUX1RP
X1JJR0hUKSB7CiAgICAgICAgICAgICAgICAgbV9kaXNwbGF5RGlyZWN0aW9uID0gQ1NTVmFsdWVM
dHI7CiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgfQotICAgICAgICAgICAg
aWYgKGNoYXJEaXJlY3Rpb24gPT0gV1RGOjpVbmljb2RlOjpSaWdodFRvTGVmdAotICAgICAgICAg
ICAgICAgIHx8IGNoYXJEaXJlY3Rpb24gPT0gV1RGOjpVbmljb2RlOjpSaWdodFRvTGVmdEFyYWJp
YykgeworICAgICAgICAgICAgaWYgKGNoYXJEaXJlY3Rpb24gPT0gVV9SSUdIVF9UT19MRUZUIHx8
IGNoYXJEaXJlY3Rpb24gPT0gVV9SSUdIVF9UT19MRUZUX0FSQUJJQykgewogICAgICAgICAgICAg
ICAgIG1fZGlzcGxheURpcmVjdGlvbiA9IENTU1ZhbHVlUnRsOwogICAgICAgICAgICAgICAgIHJl
dHVybjsKICAgICAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ29u
dGV4dE1lbnVDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ29udGV4dE1lbnVD
b250cm9sbGVyLmNwcAppbmRleCBmN2Q3ZTY4MWIzMTAyYjQ4ZWU1NmQyZmU4OWYzOTZhOWI3YTE2
MjMwLi5jZTU0YTkzZDQzYjU2ZWJhOGZkMjhiN2JjYmNjNjY4NTIxY2ZhYWNjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0NvbnRleHRNZW51Q29udHJvbGxlci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9Db250ZXh0TWVudUNvbnRyb2xsZXIuY3BwCkBAIC03MTgsOSArNzE4
LDEwIEBAIHN0YXRpYyBib29sIHNlbGVjdGlvbkNvbnRhaW5zUG9zc2libGVXb3JkKEZyYW1lKiBm
cmFtZSkKICAgICAvLyBDdXJyZW50IGFsZ29yaXRobTogbG9vayBmb3IgYSBjaGFyYWN0ZXIgdGhh
dCdzIG5vdCBqdXN0IGEgc2VwYXJhdG9yLgogICAgIGZvciAoVGV4dEl0ZXJhdG9yIGl0KGZyYW1l
LT5zZWxlY3Rpb24oKS50b05vcm1hbGl6ZWRSYW5nZSgpLmdldCgpKTsgIWl0LmF0RW5kKCk7IGl0
LmFkdmFuY2UoKSkgewogICAgICAgICBpbnQgbGVuZ3RoID0gaXQubGVuZ3RoKCk7Ci0gICAgICAg
IGZvciAoaW50IGkgPSAwOyBpIDwgbGVuZ3RoOyArK2kpCi0gICAgICAgICAgICBpZiAoIShjYXRl
Z29yeShpdC5jaGFyYWN0ZXJBdChpKSkgJiAoU2VwYXJhdG9yX1NwYWNlIHwgU2VwYXJhdG9yX0xp
bmUgfCBTZXBhcmF0b3JfUGFyYWdyYXBoKSkpCisgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwg
bGVuZ3RoOyArK2kpIHsKKyAgICAgICAgICAgIGlmICghKFVfR0VUX0dDX01BU0soaXQuY2hhcmFj
dGVyQXQoaSkpICYgVV9HQ19aX01BU0spKQogICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwor
ICAgICAgICB9CiAgICAgfQogICAgIHJldHVybiBmYWxzZTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvRm9udC5jcHAKaW5kZXggZjgyNmQ1NWQzMjhlZmU2NjMwZDkxZGUwZGMy
NTA0ZTFiZGFhNmQ0Ny4uYThhNDExMTYyMGE0ZDkwNzNlMjA0MDVjZmViM2VjOWIzMzQwMzgyMiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udC5jcHAKQEAgLTkxNCw4ICs5
MTQsNyBAQCB1bnNpZ25lZCBGb250OjpleHBhbnNpb25PcHBvcnR1bml0eUNvdW50KGNvbnN0IFVD
aGFyKiBjaGFyYWN0ZXJzLCBzaXplX3QgbGVuZ3RoLAogCiBib29sIEZvbnQ6OmNhblJlY2VpdmVU
ZXh0RW1waGFzaXMoVUNoYXIzMiBjKQogewotICAgIENoYXJDYXRlZ29yeSBjYXRlZ29yeSA9IFVu
aWNvZGU6OmNhdGVnb3J5KGMpOwotICAgIGlmIChjYXRlZ29yeSAmIChTZXBhcmF0b3JfU3BhY2Ug
fCBTZXBhcmF0b3JfTGluZSB8IFNlcGFyYXRvcl9QYXJhZ3JhcGggfCBPdGhlcl9Ob3RBc3NpZ25l
ZCB8IE90aGVyX0NvbnRyb2wgfCBPdGhlcl9Gb3JtYXQpKQorICAgIGlmIChVX0dFVF9HQ19NQVNL
KGMpICYgKFVfR0NfWl9NQVNLIHwgVV9HQ19DTl9NQVNLIHwgVV9HQ19DQ19NQVNLIHwgVV9HQ19D
Rl9NQVNLKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgLy8gQWRkaXRpb25hbCB3b3Jk
LXNlcGFyYXRvciBjaGFyYWN0ZXJzIGxpc3RlZCBpbiBDU1MgVGV4dCBMZXZlbCAzIEVkaXRvcidz
IERyYWZ0IDMgTm92ZW1iZXIgMjAxMC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0ZvbnRHbHlwaHMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvRm9udEdseXBocy5jcHAKaW5kZXggODYxMmRhMTk3NjU3M2VkMzYyMGI2YTAzZDRmZDgy
Y2M0MDkyOWMwZi4uM2RiMmY2MDAzZjY0NmJlYzA0YjU5NDQ0ZmVkMmY4MjQ3OThkOWExNyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udEdseXBocy5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udEdseXBocy5jcHAKQEAg
LTI2NSw3ICsyNjUsNyBAQCBzdGQ6OnBhaXI8R2x5cGhEYXRhLCBHbHlwaFBhZ2UqPiBGb250R2x5
cGhzOjpnbHlwaERhdGFBbmRQYWdlRm9yQ2hhcmFjdGVyKGNvbnN0CiAKICAgICBpZiAodmFyaWFu
dCA9PSBBdXRvVmFyaWFudCkgewogICAgICAgICBpZiAoZGVzY3JpcHRpb24uc21hbGxDYXBzKCkg
JiYgIXByaW1hcnlTaW1wbGVGb250RGF0YShkZXNjcmlwdGlvbiktPmlzU1ZHRm9udCgpKSB7Ci0g
ICAgICAgICAgICBVQ2hhcjMyIHVwcGVyQyA9IFdURjo6VW5pY29kZTo6dG9VcHBlcihjKTsKKyAg
ICAgICAgICAgIFVDaGFyMzIgdXBwZXJDID0gdV90b3VwcGVyKGMpOwogICAgICAgICAgICAgaWYg
KHVwcGVyQyAhPSBjKSB7CiAgICAgICAgICAgICAgICAgYyA9IHVwcGVyQzsKICAgICAgICAgICAg
ICAgICB2YXJpYW50ID0gU21hbGxDYXBzVmFyaWFudDsKQEAgLTI3Niw3ICsyNzYsNyBAQCBzdGQ6
OnBhaXI8R2x5cGhEYXRhLCBHbHlwaFBhZ2UqPiBGb250R2x5cGhzOjpnbHlwaERhdGFBbmRQYWdl
Rm9yQ2hhcmFjdGVyKGNvbnN0CiAgICAgfQogCiAgICAgaWYgKG1pcnJvcikKLSAgICAgICAgYyA9
IFdURjo6VW5pY29kZTo6bWlycm9yZWRDaGFyKGMpOworICAgICAgICBjID0gdV9jaGFyTWlycm9y
KGMpOwogCiAgICAgdW5zaWduZWQgcGFnZU51bWJlciA9IChjIC8gR2x5cGhQYWdlOjpzaXplKTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3ND
b250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29u
dGV4dC5jcHAKaW5kZXggYWZiNWQ5YjVkODAyNjIzYjQ0MjRhMzhhNzY5Y2FiMWMyNWI1ZWFmZi4u
ZjVjOWQ3ZWU4NTM1YmQzOWM5MTIyODNjNmE5NWE4ZGFiMmZjODI5ZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuY3BwCkBAIC02
NCw3ICs2NCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGluY3JlbWVudCgpIHsgbV9vZmZzZXQrKzsg
fQogICAgIGJvb2wgYXRFbmQoKSBjb25zdCB7IHJldHVybiAhbV90ZXh0UnVuIHx8IG1fb2Zmc2V0
ID49IG1fdGV4dFJ1bi0+bGVuZ3RoKCk7IH0KICAgICBVQ2hhciBjdXJyZW50KCkgY29uc3QgeyBy
ZXR1cm4gKCptX3RleHRSdW4pW21fb2Zmc2V0XTsgfQotICAgIFdURjo6VW5pY29kZTo6RGlyZWN0
aW9uIGRpcmVjdGlvbigpIGNvbnN0IHsgcmV0dXJuIGF0RW5kKCkgPyBXVEY6OlVuaWNvZGU6Ok90
aGVyTmV1dHJhbCA6IFdURjo6VW5pY29kZTo6ZGlyZWN0aW9uKGN1cnJlbnQoKSk7IH0KKyAgICBV
Q2hhckRpcmVjdGlvbiBkaXJlY3Rpb24oKSBjb25zdCB7IHJldHVybiBhdEVuZCgpID8gVV9PVEhF
Ul9ORVVUUkFMIDogdV9jaGFyRGlyZWN0aW9uKGN1cnJlbnQoKSk7IH0KIAogICAgIGJvb2wgb3Bl
cmF0b3I9PShjb25zdCBUZXh0UnVuSXRlcmF0b3ImIG90aGVyKQogICAgIHsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1NWR0dseXBoLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1NWR0dseXBoLmNwcAppbmRleCBlMjgyMGU0OTZlZmUx
NmY1YWMwMDNlYmI2NzZlNTBkYmE3NzZhODhjLi5hZDNiZTFlZmNmYmJkZWJjNDRkMWY4MDQ4MzMz
MWIyMDdiYjNmODYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9TVkdHbHlwaC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvU1ZH
R2x5cGguY3BwCkBAIC0yNSw4ICsyNSw2IEBACiAKICNpbmNsdWRlIDx3dGYvdW5pY29kZS9Vbmlj
b2RlLmg+CiAKLXVzaW5nIG5hbWVzcGFjZSBXVEY6OlVuaWNvZGU7Ci0KIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAogLy8gSGVscGVyIGZ1bmN0aW9ucyB0byBkZXRlcm1pbmUgdGhlIGFyYWJpYyBjaGFy
YWN0ZXIgZm9ybXMgKGluaXRpYWwsIG1lZGlhbCwgdGVybWluYWwsIGlzb2xhdGVkKQpAQCAtODcs
NyArODUsNyBAQCBWZWN0b3I8U1ZHR2x5cGg6OkFyYWJpY0Zvcm0+IGNoYXJhY3RlcnNXaXRoQXJh
YmljRm9ybShjb25zdCBTdHJpbmcmIGlucHV0LCBib29sCiAKICAgICBib29sIGNvbnRhaW5zQXJh
YmljID0gZmFsc2U7CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGxlbmd0aDsgKytpKSB7
Ci0gICAgICAgIGlmIChpc0FyYWJpY0NoYXIoaW5wdXRbaV0pKSB7CisgICAgICAgIGlmICh1Ymxv
Y2tfZ2V0Q29kZShpbnB1dFtpXSkgPT0gVUJMT0NLX0FSQUJJQykgewogICAgICAgICAgICAgY29u
dGFpbnNBcmFiaWMgPSB0cnVlOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1N1cnJvZ2F0ZVBhaXJBd2Fy
ZVRleHRJdGVyYXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9TdXJy
b2dhdGVQYWlyQXdhcmVUZXh0SXRlcmF0b3IuY3BwCmluZGV4IGU3ZWI0M2I1NjEyMTc1NTc1ZDUz
MzZjYmJiNmRkYjJkMjAwMWY0ZGQuLmVkNmEzMzM3NmE1YTg1MjNiYjcxODhiYjRmOTg4MDRlOGFl
NDBhYWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1N1cnJv
Z2F0ZVBhaXJBd2FyZVRleHRJdGVyYXRvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvU3Vycm9nYXRlUGFpckF3YXJlVGV4dEl0ZXJhdG9yLmNwcApAQCAtODIsMTUg
KzgyLDEzIEBAIFVDaGFyMzIgU3Vycm9nYXRlUGFpckF3YXJlVGV4dEl0ZXJhdG9yOjpub3JtYWxp
emVWb2ljaW5nTWFya3MoKQogICAgIGlmIChtX2N1cnJlbnRDaGFyYWN0ZXIgKyAxID49IG1fZW5k
Q2hhcmFjdGVyKQogICAgICAgICByZXR1cm4gMDsKIAotICAgIGlmIChjb21iaW5pbmdDbGFzcyht
X2NoYXJhY3RlcnNbMV0pID09IGhpcmFnYW5hS2F0YWthbmFWb2ljaW5nTWFya3NDb21iaW5pbmdD
bGFzcykgewotI2lmIFVTRShJQ1VfVU5JQ09ERSkKKyAgICBpZiAodV9nZXRDb21iaW5pbmdDbGFz
cyhtX2NoYXJhY3RlcnNbMV0pID09IGhpcmFnYW5hS2F0YWthbmFWb2ljaW5nTWFya3NDb21iaW5p
bmdDbGFzcykgewogICAgICAgICAvLyBOb3JtYWxpemUgaW50byBjb21wb3NlZCBmb3JtIHVzaW5n
IDMuMiBydWxlcy4KICAgICAgICAgVUNoYXIgbm9ybWFsaXplZENoYXJhY3RlcnNbMl0gPSB7IDAs
IDAgfTsKICAgICAgICAgVUVycm9yQ29kZSB1U3RhdHVzID0gVV9aRVJPX0VSUk9SOyAgCiAgICAg
ICAgIGludDMyX3QgcmVzdWx0TGVuZ3RoID0gdW5vcm1fbm9ybWFsaXplKG1fY2hhcmFjdGVycywg
MiwgVU5PUk1fTkZDLCBVTk9STV9VTklDT0RFXzNfMiwgJm5vcm1hbGl6ZWRDaGFyYWN0ZXJzWzBd
LCAyLCAmdVN0YXR1cyk7CiAgICAgICAgIGlmIChyZXN1bHRMZW5ndGggPT0gMSAmJiAhdVN0YXR1
cykKICAgICAgICAgICAgIHJldHVybiBub3JtYWxpemVkQ2hhcmFjdGVyc1swXTsKLSNlbmRpZgog
ICAgIH0KIAogICAgIHJldHVybiAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvV2lkdGhJdGVyYXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9XaWR0aEl0ZXJhdG9yLmNwcAppbmRleCBlOGI2MjBmOGFkYzhlZDMzZmExNDY1MjY3
Nzg1OThhZDgyMTllZTg2Li5iOGYyNTljNGE1ZTQzOWFmMTM5YzFmN2VhZjgyNTYzMTA3NTg2NmQ3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9XaWR0aEl0ZXJh
dG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9XaWR0aEl0ZXJh
dG9yLmNwcApAQCAtMjEwLDEwICsyMTAsMTAgQEAgaW5saW5lIHVuc2lnbmVkIFdpZHRoSXRlcmF0
b3I6OmFkdmFuY2VJbnRlcm5hbChUZXh0SXRlcmF0b3ImIHRleHRJdGVyYXRvciwgR2x5cGgKICAg
ICAgICAgICAgIGlmIChtX2ZhbGxiYWNrRm9udHMgJiYgZm9udERhdGEgIT0gcHJpbWFyeUZvbnQp
IHsKICAgICAgICAgICAgICAgICAvLyBGSVhNRTogVGhpcyBkb2VzIGEgbGl0dGxlIGV4dHJhIHdv
cmsgdGhhdCBjb3VsZCBiZSBhdm9pZGVkIGlmCiAgICAgICAgICAgICAgICAgLy8gZ2x5cGhEYXRh
Rm9yQ2hhcmFjdGVyKCkgcmV0dXJuZWQgd2hldGhlciBpdCBjaG9zZSB0byB1c2UgYSBzbWFsbCBj
YXBzIGZvbnQuCi0gICAgICAgICAgICAgICAgaWYgKCFtX2ZvbnQtPmlzU21hbGxDYXBzKCkgfHwg
Y2hhcmFjdGVyID09IHRvVXBwZXIoY2hhcmFjdGVyKSkKKyAgICAgICAgICAgICAgICBpZiAoIW1f
Zm9udC0+aXNTbWFsbENhcHMoKSB8fCBjaGFyYWN0ZXIgPT0gdV90b3VwcGVyKGNoYXJhY3Rlcikp
CiAgICAgICAgICAgICAgICAgICAgIG1fZmFsbGJhY2tGb250cy0+YWRkKGZvbnREYXRhKTsKICAg
ICAgICAgICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgY29uc3QgR2x5cGhEYXRh
JiB1cHBlcmNhc2VHbHlwaERhdGEgPSBtX2ZvbnQtPmdseXBoRGF0YUZvckNoYXJhY3Rlcih0b1Vw
cGVyKGNoYXJhY3RlciksIHJ0bCk7CisgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdseXBoRGF0
YSYgdXBwZXJjYXNlR2x5cGhEYXRhID0gbV9mb250LT5nbHlwaERhdGFGb3JDaGFyYWN0ZXIodV90
b3VwcGVyKGNoYXJhY3RlciksIHJ0bCk7CiAgICAgICAgICAgICAgICAgICAgIGlmICh1cHBlcmNh
c2VHbHlwaERhdGEuZm9udERhdGEgIT0gcHJpbWFyeUZvbnQpCiAgICAgICAgICAgICAgICAgICAg
ICAgICBtX2ZhbGxiYWNrRm9udHMtPmFkZCh1cHBlcmNhc2VHbHlwaERhdGEuZm9udERhdGEpOwog
ICAgICAgICAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL21hYy9Db21wbGV4VGV4dENvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvbWFjL0NvbXBsZXhUZXh0Q29udHJvbGxlci5jcHAKaW5kZXggMjhhMzU1
MzA1OWUyZGUwNjc1MTAyZjY5NTY5OGUwMmQ4MDYwM2QwZi4uMDdkY2JkYTNkNTA0MmRmMzllNDA3
NTIyNjcyZjA4MjdmZjhlYTU1MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvbWFjL0NvbXBsZXhUZXh0Q29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0NvbXBsZXhUZXh0Q29udHJvbGxlci5jcHAKQEAgLTMy
Nyw2ICszMjcsNyBAQCB2b2lkIENvbXBsZXhUZXh0Q29udHJvbGxlcjo6Y29sbGVjdENvbXBsZXhU
ZXh0UnVucygpCiAKICAgICBib29sIGlzU21hbGxDYXBzOwogICAgIGJvb2wgbmV4dElzU21hbGxD
YXBzID0gbV9mb250LmlzU21hbGxDYXBzKCkgJiYgIShVX0dFVF9HQ19NQVNLKGJhc2VDaGFyYWN0
ZXIpICYgVV9HQ19NX01BU0spICYmICh1cHBlcmNhc2VDaGFyYWN0ZXIgPSB1X3RvdXBwZXIoYmFz
ZUNoYXJhY3RlcikpICE9IGJhc2VDaGFyYWN0ZXI7CisgICAgQVNTRVJUKHVwcGVyY2FzZUNoYXJh
Y3RlciA9PSAwIHx8IHVfdG91cHBlcihiYXNlQ2hhcmFjdGVyKSA8PSAweEZGRkYpOwogCiAgICAg
aWYgKG5leHRJc1NtYWxsQ2FwcykgewogICAgICAgICBtX3NtYWxsQ2Fwc0J1ZmZlcltzZXF1ZW5j
ZVN0YXJ0IC0gY3BdID0gdXBwZXJjYXNlQ2hhcmFjdGVyOwpAQCAtMzQ5LDcgKzM1MCw5IEBAIHZv
aWQgQ29tcGxleFRleHRDb250cm9sbGVyOjpjb2xsZWN0Q29tcGxleFRleHRSdW5zKCkKICAgICAg
ICAgICAgIHJldHVybjsKIAogICAgICAgICBpZiAobV9mb250LmlzU21hbGxDYXBzKCkpIHsKLSAg
ICAgICAgICAgIG5leHRJc1NtYWxsQ2FwcyA9ICh1cHBlcmNhc2VDaGFyYWN0ZXIgPSB1X3RvdXBw
ZXIoYmFzZUNoYXJhY3RlcikpICE9IGJhc2VDaGFyYWN0ZXI7CisgICAgICAgICAgICBBU1NFUlQo
dV90b3VwcGVyKGJhc2VDaGFyYWN0ZXIpIDw9IDB4RkZGRik7CisgICAgICAgICAgICB1cHBlcmNh
c2VDaGFyYWN0ZXIgPSB1X3RvdXBwZXIoYmFzZUNoYXJhY3Rlcik7CisgICAgICAgICAgICBuZXh0
SXNTbWFsbENhcHMgPSB1cHBlcmNhc2VDaGFyYWN0ZXIgIT0gYmFzZUNoYXJhY3RlcjsKICAgICAg
ICAgICAgIGlmIChuZXh0SXNTbWFsbENhcHMpIHsKICAgICAgICAgICAgICAgICBtX3NtYWxsQ2Fw
c0J1ZmZlcltpbmRleF0gPSB1cHBlcmNhc2VDaGFyYWN0ZXI7CiAgICAgICAgICAgICAgICAgZm9y
ICh1bnNpZ25lZCBpID0gMDsgaSA8IG1hcmtDb3VudDsgKytpKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9CaWRpQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS90ZXh0L0JpZGlDb250ZXh0LmNwcAppbmRleCA2YzA4YjA4ZjIwYmNjYTE2NGJlZWZm
MzkwNmU3OWFhZGE2MzcyZWM5Li5kYjEyNmM5OTFmNGNhMGFkMDlhZGU1NzJkNWQ3ODBiODE2ZGYy
ZWM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L0JpZGlDb250ZXh0
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L0JpZGlDb250ZXh0LmNwcApA
QCAtMjUsOCArMjUsNiBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXVzaW5nIG5hbWVzcGFj
ZSBXVEY6OlVuaWNvZGU7Ci0KIHN0cnVjdCBTYW1lU2l6ZUFzQmlkaUNvbnRleHQgOiBwdWJsaWMg
UmVmQ291bnRlZDxTYW1lU2l6ZUFzQmlkaUNvbnRleHQ+IHsKICAgICB1aW50MzJfdCBiaXRmaWVs
ZHMgOiAxNjsKICAgICB2b2lkKiBwYXJlbnQ7CkBAIC0zNCwxNCArMzIsMTQgQEAgc3RydWN0IFNh
bWVTaXplQXNCaWRpQ29udGV4dCA6IHB1YmxpYyBSZWZDb3VudGVkPFNhbWVTaXplQXNCaWRpQ29u
dGV4dD4gewogCiBDT01QSUxFX0FTU0VSVChzaXplb2YoQmlkaUNvbnRleHQpID09IHNpemVvZihT
YW1lU2l6ZUFzQmlkaUNvbnRleHQpLCBCaWRpQ29udGV4dF9zaG91bGRfc3RheV9zbWFsbCk7CiAK
LWlubGluZSBQYXNzUmVmUHRyPEJpZGlDb250ZXh0PiBCaWRpQ29udGV4dDo6Y3JlYXRlVW5jYWNo
ZWQodW5zaWduZWQgY2hhciBsZXZlbCwgRGlyZWN0aW9uIGRpcmVjdGlvbiwgYm9vbCBvdmVycmlk
ZSwgQmlkaUVtYmVkZGluZ1NvdXJjZSBzb3VyY2UsIEJpZGlDb250ZXh0KiBwYXJlbnQpCitpbmxp
bmUgUGFzc1JlZlB0cjxCaWRpQ29udGV4dD4gQmlkaUNvbnRleHQ6OmNyZWF0ZVVuY2FjaGVkKHVu
c2lnbmVkIGNoYXIgbGV2ZWwsIFVDaGFyRGlyZWN0aW9uIGRpcmVjdGlvbiwgYm9vbCBvdmVycmlk
ZSwgQmlkaUVtYmVkZGluZ1NvdXJjZSBzb3VyY2UsIEJpZGlDb250ZXh0KiBwYXJlbnQpCiB7CiAg
ICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBCaWRpQ29udGV4dChsZXZlbCwgZGlyZWN0aW9uLCBvdmVy
cmlkZSwgc291cmNlLCBwYXJlbnQpKTsKIH0KIAotUGFzc1JlZlB0cjxCaWRpQ29udGV4dD4gQmlk
aUNvbnRleHQ6OmNyZWF0ZSh1bnNpZ25lZCBjaGFyIGxldmVsLCBEaXJlY3Rpb24gZGlyZWN0aW9u
LCBib29sIG92ZXJyaWRlLCBCaWRpRW1iZWRkaW5nU291cmNlIHNvdXJjZSwgQmlkaUNvbnRleHQq
IHBhcmVudCkKK1Bhc3NSZWZQdHI8QmlkaUNvbnRleHQ+IEJpZGlDb250ZXh0OjpjcmVhdGUodW5z
aWduZWQgY2hhciBsZXZlbCwgVUNoYXJEaXJlY3Rpb24gZGlyZWN0aW9uLCBib29sIG92ZXJyaWRl
LCBCaWRpRW1iZWRkaW5nU291cmNlIHNvdXJjZSwgQmlkaUNvbnRleHQqIHBhcmVudCkKIHsKLSAg
ICBBU1NFUlQoZGlyZWN0aW9uID09IChsZXZlbCAlIDIgPyBSaWdodFRvTGVmdCA6IExlZnRUb1Jp
Z2h0KSk7CisgICAgQVNTRVJUKGRpcmVjdGlvbiA9PSAobGV2ZWwgJSAyID8gVV9SSUdIVF9UT19M
RUZUIDogVV9MRUZUX1RPX1JJR0hUKSk7CiAKICAgICBpZiAocGFyZW50KQogICAgICAgICByZXR1
cm4gY3JlYXRlVW5jYWNoZWQobGV2ZWwsIGRpcmVjdGlvbiwgb3ZlcnJpZGUsIHNvdXJjZSwgcGFy
ZW50KTsKQEAgLTQ5LDIwICs0NywyMCBAQCBQYXNzUmVmUHRyPEJpZGlDb250ZXh0PiBCaWRpQ29u
dGV4dDo6Y3JlYXRlKHVuc2lnbmVkIGNoYXIgbGV2ZWwsIERpcmVjdGlvbiBkaXJlYwogICAgIEFT
U0VSVChsZXZlbCA8PSAxKTsKICAgICBpZiAoIWxldmVsKSB7CiAgICAgICAgIGlmICghb3ZlcnJp
ZGUpIHsKLSAgICAgICAgICAgIHN0YXRpYyBCaWRpQ29udGV4dCogbHRyQ29udGV4dCA9IGNyZWF0
ZVVuY2FjaGVkKDAsIExlZnRUb1JpZ2h0LCBmYWxzZSwgRnJvbVN0eWxlT3JET00sIDApLmxlYWtS
ZWYoKTsKKyAgICAgICAgICAgIHN0YXRpYyBCaWRpQ29udGV4dCogbHRyQ29udGV4dCA9IGNyZWF0
ZVVuY2FjaGVkKDAsIFVfTEVGVF9UT19SSUdIVCwgZmFsc2UsIEZyb21TdHlsZU9yRE9NLCAwKS5s
ZWFrUmVmKCk7CiAgICAgICAgICAgICByZXR1cm4gbHRyQ29udGV4dDsKICAgICAgICAgfQogCi0g
ICAgICAgIHN0YXRpYyBCaWRpQ29udGV4dCogbHRyT3ZlcnJpZGVDb250ZXh0ID0gY3JlYXRlVW5j
YWNoZWQoMCwgTGVmdFRvUmlnaHQsIHRydWUsIEZyb21TdHlsZU9yRE9NLCAwKS5sZWFrUmVmKCk7
CisgICAgICAgIHN0YXRpYyBCaWRpQ29udGV4dCogbHRyT3ZlcnJpZGVDb250ZXh0ID0gY3JlYXRl
VW5jYWNoZWQoMCwgVV9MRUZUX1RPX1JJR0hULCB0cnVlLCBGcm9tU3R5bGVPckRPTSwgMCkubGVh
a1JlZigpOwogICAgICAgICByZXR1cm4gbHRyT3ZlcnJpZGVDb250ZXh0OwogICAgIH0KIAogICAg
IGlmICghb3ZlcnJpZGUpIHsKLSAgICAgICAgc3RhdGljIEJpZGlDb250ZXh0KiBydGxDb250ZXh0
ID0gY3JlYXRlVW5jYWNoZWQoMSwgUmlnaHRUb0xlZnQsIGZhbHNlLCBGcm9tU3R5bGVPckRPTSwg
MCkubGVha1JlZigpOworICAgICAgICBzdGF0aWMgQmlkaUNvbnRleHQqIHJ0bENvbnRleHQgPSBj
cmVhdGVVbmNhY2hlZCgxLCBVX1JJR0hUX1RPX0xFRlQsIGZhbHNlLCBGcm9tU3R5bGVPckRPTSwg
MCkubGVha1JlZigpOwogICAgICAgICByZXR1cm4gcnRsQ29udGV4dDsKICAgICB9CiAKLSAgICBz
dGF0aWMgQmlkaUNvbnRleHQqIHJ0bE92ZXJyaWRlQ29udGV4dCA9IGNyZWF0ZVVuY2FjaGVkKDEs
IFJpZ2h0VG9MZWZ0LCB0cnVlLCBGcm9tU3R5bGVPckRPTSwgMCkubGVha1JlZigpOworICAgIHN0
YXRpYyBCaWRpQ29udGV4dCogcnRsT3ZlcnJpZGVDb250ZXh0ID0gY3JlYXRlVW5jYWNoZWQoMSwg
VV9SSUdIVF9UT19MRUZULCB0cnVlLCBGcm9tU3R5bGVPckRPTSwgMCkubGVha1JlZigpOwogICAg
IHJldHVybiBydGxPdmVycmlkZUNvbnRleHQ7CiB9CiAKQEAgLTcwLDcgKzY4LDcgQEAgc3RhdGlj
IGlubGluZSBQYXNzUmVmUHRyPEJpZGlDb250ZXh0PiBjb3B5Q29udGV4dEFuZFJlYmFzZWxpbmVM
ZXZlbChCaWRpQ29udGV4dCoKIHsKICAgICBBU1NFUlQoY29udGV4dCk7CiAgICAgdW5zaWduZWQg
Y2hhciBuZXdMZXZlbCA9IHBhcmVudCA/IHBhcmVudC0+bGV2ZWwoKSA6IDA7Ci0gICAgaWYgKGNv
bnRleHQtPmRpcigpID09IFJpZ2h0VG9MZWZ0KQorICAgIGlmIChjb250ZXh0LT5kaXIoKSA9PSBV
X1JJR0hUX1RPX0xFRlQpCiAgICAgICAgIG5ld0xldmVsID0gbmV4dEdyZWF0ZXJPZGRMZXZlbChu
ZXdMZXZlbCk7CiAgICAgZWxzZSBpZiAocGFyZW50KQogICAgICAgICBuZXdMZXZlbCA9IG5leHRH
cmVhdGVyRXZlbkxldmVsKG5ld0xldmVsKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL3RleHQvQmlkaUNvbnRleHQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQv
QmlkaUNvbnRleHQuaAppbmRleCAxZDQ4ZDM2NmZhNzkzZGY2YWIzM2Q5ZDFhYzY5MDVkZTZhNDA3
ZWRhLi4zNzE5ODMwNTVjZjZiYWEyMGM2OGE0M2Q2MjU5MjgwYTQ4ZmYzZTI3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L0JpZGlDb250ZXh0LmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9CaWRpQ29udGV4dC5oCkBAIC0zOCwxNyArMzgsMTcgQEAg
ZW51bSBCaWRpRW1iZWRkaW5nU291cmNlIHsKIC8vIFVzZWQgdG8ga2VlcCB0cmFjayBvZiBleHBs
aWNpdCBlbWJlZGRpbmdzLgogY2xhc3MgQmlkaUNvbnRleHQgOiBwdWJsaWMgUmVmQ291bnRlZDxC
aWRpQ29udGV4dD4gewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPEJpZGlDb250ZXh0
PiBjcmVhdGUodW5zaWduZWQgY2hhciBsZXZlbCwgV1RGOjpVbmljb2RlOjpEaXJlY3Rpb24sIGJv
b2wgb3ZlcnJpZGUgPSBmYWxzZSwgQmlkaUVtYmVkZGluZ1NvdXJjZSA9IEZyb21TdHlsZU9yRE9N
LCBCaWRpQ29udGV4dCogcGFyZW50ID0gMCk7CisgICAgc3RhdGljIFBhc3NSZWZQdHI8QmlkaUNv
bnRleHQ+IGNyZWF0ZSh1bnNpZ25lZCBjaGFyIGxldmVsLCBVQ2hhckRpcmVjdGlvbiwgYm9vbCBv
dmVycmlkZSA9IGZhbHNlLCBCaWRpRW1iZWRkaW5nU291cmNlID0gRnJvbVN0eWxlT3JET00sIEJp
ZGlDb250ZXh0KiBwYXJlbnQgPSAwKTsKIAogICAgIEJpZGlDb250ZXh0KiBwYXJlbnQoKSBjb25z
dCB7IHJldHVybiBtX3BhcmVudC5nZXQoKTsgfQogICAgIHVuc2lnbmVkIGNoYXIgbGV2ZWwoKSBj
b25zdCB7IHJldHVybiBtX2xldmVsOyB9Ci0gICAgV1RGOjpVbmljb2RlOjpEaXJlY3Rpb24gZGly
KCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8V1RGOjpVbmljb2RlOjpEaXJlY3Rpb24+KG1f
ZGlyZWN0aW9uKTsgfQorICAgIFVDaGFyRGlyZWN0aW9uIGRpcigpIGNvbnN0IHsgcmV0dXJuIHN0
YXRpY19jYXN0PFVDaGFyRGlyZWN0aW9uPihtX2RpcmVjdGlvbik7IH0KICAgICBib29sIG92ZXJy
aWRlKCkgY29uc3QgeyByZXR1cm4gbV9vdmVycmlkZTsgfQogICAgIEJpZGlFbWJlZGRpbmdTb3Vy
Y2Ugc291cmNlKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8QmlkaUVtYmVkZGluZ1NvdXJj
ZT4obV9zb3VyY2UpOyB9CiAKICAgICBQYXNzUmVmUHRyPEJpZGlDb250ZXh0PiBjb3B5U3RhY2tS
ZW1vdmluZ1VuaWNvZGVFbWJlZGRpbmdDb250ZXh0cygpOwogcHJpdmF0ZToKLSAgICBCaWRpQ29u
dGV4dCh1bnNpZ25lZCBjaGFyIGxldmVsLCBXVEY6OlVuaWNvZGU6OkRpcmVjdGlvbiBkaXJlY3Rp
b24sIGJvb2wgb3ZlcnJpZGUsIEJpZGlFbWJlZGRpbmdTb3VyY2Ugc291cmNlLCBCaWRpQ29udGV4
dCogcGFyZW50KQorICAgIEJpZGlDb250ZXh0KHVuc2lnbmVkIGNoYXIgbGV2ZWwsIFVDaGFyRGly
ZWN0aW9uIGRpcmVjdGlvbiwgYm9vbCBvdmVycmlkZSwgQmlkaUVtYmVkZGluZ1NvdXJjZSBzb3Vy
Y2UsIEJpZGlDb250ZXh0KiBwYXJlbnQpCiAgICAgICAgIDogbV9sZXZlbChsZXZlbCkKICAgICAg
ICAgLCBtX2RpcmVjdGlvbihkaXJlY3Rpb24pCiAgICAgICAgICwgbV9vdmVycmlkZShvdmVycmlk
ZSkKQEAgLTU3LDcgKzU3LDcgQEAgcHJpdmF0ZToKICAgICB7CiAgICAgfQogCi0gICAgc3RhdGlj
IFBhc3NSZWZQdHI8QmlkaUNvbnRleHQ+IGNyZWF0ZVVuY2FjaGVkKHVuc2lnbmVkIGNoYXIgbGV2
ZWwsIFdURjo6VW5pY29kZTo6RGlyZWN0aW9uLCBib29sIG92ZXJyaWRlLCBCaWRpRW1iZWRkaW5n
U291cmNlLCBCaWRpQ29udGV4dCogcGFyZW50KTsKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxCaWRp
Q29udGV4dD4gY3JlYXRlVW5jYWNoZWQodW5zaWduZWQgY2hhciBsZXZlbCwgVUNoYXJEaXJlY3Rp
b24sIGJvb2wgb3ZlcnJpZGUsIEJpZGlFbWJlZGRpbmdTb3VyY2UsIEJpZGlDb250ZXh0KiBwYXJl
bnQpOwogCiAgICAgdW5zaWduZWQgbV9sZXZlbCA6IDY7IC8vIFRoZSBtYXhpbWl1bSBiaWRpIGxl
dmVsIGlzIDYyOiBodHRwOi8vdW5pY29kZS5vcmcvcmVwb3J0cy90cjkvI0V4cGxpY2l0X0xldmVs
c19hbmRfRGlyZWN0aW9ucwogICAgIHVuc2lnbmVkIG1fZGlyZWN0aW9uIDogNTsgLy8gRGlyZWN0
aW9uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L0JpZGlSZXNvbHZl
ci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9CaWRpUmVzb2x2ZXIuaAppbmRleCBl
MDY0OWZjYjQzZjRmMjkwMzA1NTFmYWY3NTlmMzVlYTkxYjZlYTI0Li5iNzQ0N2JlZWQ2OWYzZjlm
ZjYzODE0ZDgwMzU1MzQxYmVjNDA0OGIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS90ZXh0L0JpZGlSZXNvbHZlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3Rl
eHQvQmlkaVJlc29sdmVyLmgKQEAgLTU3LDIyICs1NywyMiBAQCB0ZW1wbGF0ZSA8Y2xhc3MgSXRl
cmF0b3I+IHN0cnVjdCBNaWRwb2ludFN0YXRlIHsKIC8vIGJlIGNhY2hlZCBhbmQgdGhlbiB1c2Vk
IHRvIHJlc3RhcnQgYmlkaSByZXNvbHV0aW9uIGF0IHRoYXQgcG9zaXRpb24uCiBzdHJ1Y3QgQmlk
aVN0YXR1cyB7CiAgICAgQmlkaVN0YXR1cygpCi0gICAgICAgIDogZW9yKFdURjo6VW5pY29kZTo6
T3RoZXJOZXV0cmFsKQotICAgICAgICAsIGxhc3RTdHJvbmcoV1RGOjpVbmljb2RlOjpPdGhlck5l
dXRyYWwpCi0gICAgICAgICwgbGFzdChXVEY6OlVuaWNvZGU6Ok90aGVyTmV1dHJhbCkKKyAgICAg
ICAgOiBlb3IoVV9PVEhFUl9ORVVUUkFMKQorICAgICAgICAsIGxhc3RTdHJvbmcoVV9PVEhFUl9O
RVVUUkFMKQorICAgICAgICAsIGxhc3QoVV9PVEhFUl9ORVVUUkFMKQogICAgIHsKICAgICB9CiAK
ICAgICAvLyBDcmVhdGVzIGEgQmlkaVN0YXR1cyByZXByZXNlbnRpbmcgYSBuZXcgcGFyYWdyYXBo
IHJvb3Qgd2l0aCBhIGRlZmF1bHQgZGlyZWN0aW9uLgotICAgIC8vIFVzZXMgVGV4dERpcmVjdGlv
biBhcyBpdCBvbmx5IGhhcyB0d28gcG9zc2liaWxpdGllcyBpbnN0ZWFkIG9mIFdURjo6VW5pY29k
ZTo6RGlyZWN0aW9uIHdoaWNoIGhhcyAxOS4KKyAgICAvLyBVc2VzIFRleHREaXJlY3Rpb24gYXMg
aXQgb25seSBoYXMgdHdvIHBvc3NpYmlsaXRpZXMgaW5zdGVhZCBvZiBVQ2hhckRpcmVjdGlvbiB3
aGljaCBoYXMgYXQgbGVhc3QgMTkuCiAgICAgQmlkaVN0YXR1cyhUZXh0RGlyZWN0aW9uIHRleHRE
aXJlY3Rpb24sIGJvb2wgaXNPdmVycmlkZSkKICAgICB7Ci0gICAgICAgIFdURjo6VW5pY29kZTo6
RGlyZWN0aW9uIGRpcmVjdGlvbiA9IHRleHREaXJlY3Rpb24gPT0gTFRSID8gV1RGOjpVbmljb2Rl
OjpMZWZ0VG9SaWdodCA6IFdURjo6VW5pY29kZTo6UmlnaHRUb0xlZnQ7CisgICAgICAgIFVDaGFy
RGlyZWN0aW9uIGRpcmVjdGlvbiA9IHRleHREaXJlY3Rpb24gPT0gTFRSID8gVV9MRUZUX1RPX1JJ
R0hUIDogVV9SSUdIVF9UT19MRUZUOwogICAgICAgICBlb3IgPSBsYXN0U3Ryb25nID0gbGFzdCA9
IGRpcmVjdGlvbjsKICAgICAgICAgY29udGV4dCA9IEJpZGlDb250ZXh0OjpjcmVhdGUodGV4dERp
cmVjdGlvbiA9PSBMVFIgPyAwIDogMSwgZGlyZWN0aW9uLCBpc092ZXJyaWRlKTsKICAgICB9CiAK
LSAgICBCaWRpU3RhdHVzKFdURjo6VW5pY29kZTo6RGlyZWN0aW9uIGVvckRpciwgV1RGOjpVbmlj
b2RlOjpEaXJlY3Rpb24gbGFzdFN0cm9uZ0RpciwgV1RGOjpVbmljb2RlOjpEaXJlY3Rpb24gbGFz
dERpciwgUGFzc1JlZlB0cjxCaWRpQ29udGV4dD4gYmlkaUNvbnRleHQpCisgICAgQmlkaVN0YXR1
cyhVQ2hhckRpcmVjdGlvbiBlb3JEaXIsIFVDaGFyRGlyZWN0aW9uIGxhc3RTdHJvbmdEaXIsIFVD
aGFyRGlyZWN0aW9uIGxhc3REaXIsIFBhc3NSZWZQdHI8QmlkaUNvbnRleHQ+IGJpZGlDb250ZXh0
KQogICAgICAgICA6IGVvcihlb3JEaXIpCiAgICAgICAgICwgbGFzdFN0cm9uZyhsYXN0U3Ryb25n
RGlyKQogICAgICAgICAsIGxhc3QobGFzdERpcikKQEAgLTgwLDI0ICs4MCwyNCBAQCBzdHJ1Y3Qg
QmlkaVN0YXR1cyB7CiAgICAgewogICAgIH0KIAotICAgIFdURjo6VW5pY29kZTo6RGlyZWN0aW9u
IGVvcjsKLSAgICBXVEY6OlVuaWNvZGU6OkRpcmVjdGlvbiBsYXN0U3Ryb25nOwotICAgIFdURjo6
VW5pY29kZTo6RGlyZWN0aW9uIGxhc3Q7CisgICAgVUNoYXJEaXJlY3Rpb24gZW9yOworICAgIFVD
aGFyRGlyZWN0aW9uIGxhc3RTdHJvbmc7CisgICAgVUNoYXJEaXJlY3Rpb24gbGFzdDsKICAgICBS
ZWZQdHI8QmlkaUNvbnRleHQ+IGNvbnRleHQ7CiB9OwogCiBjbGFzcyBCaWRpRW1iZWRkaW5nIHsK
IHB1YmxpYzoKLSAgICBCaWRpRW1iZWRkaW5nKFdURjo6VW5pY29kZTo6RGlyZWN0aW9uIGRpcmVj
dGlvbiwgQmlkaUVtYmVkZGluZ1NvdXJjZSBzb3VyY2UpCisgICAgQmlkaUVtYmVkZGluZyhVQ2hh
ckRpcmVjdGlvbiBkaXJlY3Rpb24sIEJpZGlFbWJlZGRpbmdTb3VyY2Ugc291cmNlKQogICAgIDog
bV9kaXJlY3Rpb24oZGlyZWN0aW9uKQogICAgICwgbV9zb3VyY2Uoc291cmNlKQogICAgIHsKICAg
ICB9CiAKLSAgICBXVEY6OlVuaWNvZGU6OkRpcmVjdGlvbiBkaXJlY3Rpb24oKSBjb25zdCB7IHJl
dHVybiBtX2RpcmVjdGlvbjsgfQorICAgIFVDaGFyRGlyZWN0aW9uIGRpcmVjdGlvbigpIGNvbnN0
IHsgcmV0dXJuIG1fZGlyZWN0aW9uOyB9CiAgICAgQmlkaUVtYmVkZGluZ1NvdXJjZSBzb3VyY2Uo
KSBjb25zdCB7IHJldHVybiBtX3NvdXJjZTsgfQogcHJpdmF0ZToKLSAgICBXVEY6OlVuaWNvZGU6
OkRpcmVjdGlvbiBtX2RpcmVjdGlvbjsKKyAgICBVQ2hhckRpcmVjdGlvbiBtX2RpcmVjdGlvbjsK
ICAgICBCaWRpRW1iZWRkaW5nU291cmNlIG1fc291cmNlOwogfTsKIApAQCAtMTEyLDI1ICsxMTIs
MjUgQEAgaW5saW5lIGJvb2wgb3BlcmF0b3IhPShjb25zdCBCaWRpU3RhdHVzJiBzdGF0dXMxLCBj
b25zdCBCaWRpU3RhdHVzJiBzdGF0dXMyKQogfQogCiBzdHJ1Y3QgQmlkaUNoYXJhY3RlclJ1biB7
Ci0gICAgQmlkaUNoYXJhY3RlclJ1bihpbnQgc3RhcnQsIGludCBzdG9wLCBCaWRpQ29udGV4dCog
Y29udGV4dCwgV1RGOjpVbmljb2RlOjpEaXJlY3Rpb24gZGlyKQorICAgIEJpZGlDaGFyYWN0ZXJS
dW4oaW50IHN0YXJ0LCBpbnQgc3RvcCwgQmlkaUNvbnRleHQqIGNvbnRleHQsIFVDaGFyRGlyZWN0
aW9uIGRpcmVjdGlvbikKICAgICAgICAgOiBtX292ZXJyaWRlKGNvbnRleHQtPm92ZXJyaWRlKCkp
CiAgICAgICAgICwgbV9uZXh0KDApCiAgICAgICAgICwgbV9zdGFydChzdGFydCkKICAgICAgICAg
LCBtX3N0b3Aoc3RvcCkKICAgICB7Ci0gICAgICAgIGlmIChkaXIgPT0gV1RGOjpVbmljb2RlOjpP
dGhlck5ldXRyYWwpCi0gICAgICAgICAgICBkaXIgPSBjb250ZXh0LT5kaXIoKTsKKyAgICAgICAg
aWYgKGRpcmVjdGlvbiA9PSBVX09USEVSX05FVVRSQUwpCisgICAgICAgICAgICBkaXJlY3Rpb24g
PSBjb250ZXh0LT5kaXIoKTsKIAogICAgICAgICBtX2xldmVsID0gY29udGV4dC0+bGV2ZWwoKTsK
IAogICAgICAgICAvLyBhZGQgbGV2ZWwgb2YgcnVuIChjYXNlcyBJMSAmIEkyKQogICAgICAgICBp
ZiAobV9sZXZlbCAlIDIpIHsKLSAgICAgICAgICAgIGlmIChkaXIgPT0gV1RGOjpVbmljb2RlOjpM
ZWZ0VG9SaWdodCB8fCBkaXIgPT0gV1RGOjpVbmljb2RlOjpBcmFiaWNOdW1iZXIgfHwgZGlyID09
IFdURjo6VW5pY29kZTo6RXVyb3BlYW5OdW1iZXIpCisgICAgICAgICAgICBpZiAoZGlyZWN0aW9u
ID09IFVfTEVGVF9UT19SSUdIVCB8fCBkaXJlY3Rpb24gPT0gVV9BUkFCSUNfTlVNQkVSIHx8IGRp
cmVjdGlvbiA9PSBVX0VVUk9QRUFOX05VTUJFUikKICAgICAgICAgICAgICAgICBtX2xldmVsKys7
CiAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBpZiAoZGlyID09IFdURjo6VW5pY29kZTo6
UmlnaHRUb0xlZnQpCisgICAgICAgICAgICBpZiAoZGlyZWN0aW9uID09IFVfUklHSFRfVE9fTEVG
VCkKICAgICAgICAgICAgICAgICBtX2xldmVsKys7Ci0gICAgICAgICAgICBlbHNlIGlmIChkaXIg
PT0gV1RGOjpVbmljb2RlOjpBcmFiaWNOdW1iZXIgfHwgZGlyID09IFdURjo6VW5pY29kZTo6RXVy
b3BlYW5OdW1iZXIpCisgICAgICAgICAgICBlbHNlIGlmIChkaXJlY3Rpb24gPT0gVV9BUkFCSUNf
TlVNQkVSIHx8IGRpcmVjdGlvbiA9PSBVX0VVUk9QRUFOX05VTUJFUikKICAgICAgICAgICAgICAg
ICBtX2xldmVsICs9IDI7CiAgICAgICAgIH0KICAgICB9CkBAIC0xNzAsNyArMTcwLDcgQEAgdGVt
cGxhdGUgPGNsYXNzIEl0ZXJhdG9yLCBjbGFzcyBSdW4+IGNsYXNzIEJpZGlSZXNvbHZlciB7CiAg
ICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoQmlkaVJlc29sdmVyKTsKIHB1YmxpYzoKICAgICBCaWRp
UmVzb2x2ZXIoKQotICAgICAgICA6IG1fZGlyZWN0aW9uKFdURjo6VW5pY29kZTo6T3RoZXJOZXV0
cmFsKQorICAgICAgICA6IG1fZGlyZWN0aW9uKFVfT1RIRVJfTkVVVFJBTCkKICAgICAgICAgLCBt
X3JlYWNoZWRFbmRPZkxpbmUoZmFsc2UpCiAgICAgICAgICwgbV9lbXB0eVJ1bih0cnVlKQogICAg
ICAgICAsIG1fbmVzdGVkSXNvbGF0ZUNvdW50KDApCkBAIC0xOTQsMTIgKzE5NCwxMiBAQCBwdWJs
aWM6CiAgICAgQmlkaUNvbnRleHQqIGNvbnRleHQoKSBjb25zdCB7IHJldHVybiBtX3N0YXR1cy5j
b250ZXh0LmdldCgpOyB9CiAgICAgdm9pZCBzZXRDb250ZXh0KFBhc3NSZWZQdHI8QmlkaUNvbnRl
eHQ+IGMpIHsgbV9zdGF0dXMuY29udGV4dCA9IGM7IH0KIAotICAgIHZvaWQgc2V0TGFzdERpcihX
VEY6OlVuaWNvZGU6OkRpcmVjdGlvbiBsYXN0RGlyKSB7IG1fc3RhdHVzLmxhc3QgPSBsYXN0RGly
OyB9Ci0gICAgdm9pZCBzZXRMYXN0U3Ryb25nRGlyKFdURjo6VW5pY29kZTo6RGlyZWN0aW9uIGxh
c3RTdHJvbmdEaXIpIHsgbV9zdGF0dXMubGFzdFN0cm9uZyA9IGxhc3RTdHJvbmdEaXI7IH0KLSAg
ICB2b2lkIHNldEVvckRpcihXVEY6OlVuaWNvZGU6OkRpcmVjdGlvbiBlb3JEaXIpIHsgbV9zdGF0
dXMuZW9yID0gZW9yRGlyOyB9CisgICAgdm9pZCBzZXRMYXN0RGlyKFVDaGFyRGlyZWN0aW9uIGxh
c3REaXIpIHsgbV9zdGF0dXMubGFzdCA9IGxhc3REaXI7IH0KKyAgICB2b2lkIHNldExhc3RTdHJv
bmdEaXIoVUNoYXJEaXJlY3Rpb24gbGFzdFN0cm9uZ0RpcikgeyBtX3N0YXR1cy5sYXN0U3Ryb25n
ID0gbGFzdFN0cm9uZ0RpcjsgfQorICAgIHZvaWQgc2V0RW9yRGlyKFVDaGFyRGlyZWN0aW9uIGVv
ckRpcikgeyBtX3N0YXR1cy5lb3IgPSBlb3JEaXI7IH0KIAotICAgIFdURjo6VW5pY29kZTo6RGly
ZWN0aW9uIGRpcigpIGNvbnN0IHsgcmV0dXJuIG1fZGlyZWN0aW9uOyB9Ci0gICAgdm9pZCBzZXRE
aXIoV1RGOjpVbmljb2RlOjpEaXJlY3Rpb24gZCkgeyBtX2RpcmVjdGlvbiA9IGQ7IH0KKyAgICBV
Q2hhckRpcmVjdGlvbiBkaXIoKSBjb25zdCB7IHJldHVybiBtX2RpcmVjdGlvbjsgfQorICAgIHZv
aWQgc2V0RGlyKFVDaGFyRGlyZWN0aW9uIGQpIHsgbV9kaXJlY3Rpb24gPSBkOyB9CiAKICAgICBj
b25zdCBCaWRpU3RhdHVzJiBzdGF0dXMoKSBjb25zdCB7IHJldHVybiBtX3N0YXR1czsgfQogICAg
IHZvaWQgc2V0U3RhdHVzKGNvbnN0IEJpZGlTdGF0dXMgcykgeyBtX3N0YXR1cyA9IHM7IH0KQEAg
LTIxMyw3ICsyMTMsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBleGl0SXNvbGF0ZSgpIHsgQVNTRVJU
KG1fbmVzdGVkSXNvbGF0ZUNvdW50ID49IDEpOyBtX25lc3RlZElzb2xhdGVDb3VudC0tOyB9CiAg
ICAgYm9vbCBpbklzb2xhdGUoKSBjb25zdCB7IHJldHVybiBtX25lc3RlZElzb2xhdGVDb3VudDsg
fQogCi0gICAgdm9pZCBlbWJlZChXVEY6OlVuaWNvZGU6OkRpcmVjdGlvbiwgQmlkaUVtYmVkZGlu
Z1NvdXJjZSk7CisgICAgdm9pZCBlbWJlZChVQ2hhckRpcmVjdGlvbiwgQmlkaUVtYmVkZGluZ1Nv
dXJjZSk7CiAgICAgYm9vbCBjb21taXRFeHBsaWNpdEVtYmVkZGluZygpOwogCiAgICAgdm9pZCBj
cmVhdGVCaWRpUnVuc0ZvckxpbmUoY29uc3QgSXRlcmF0b3ImIGVuZCwgVmlzdWFsRGlyZWN0aW9u
T3ZlcnJpZGUgPSBOb1Zpc3VhbE92ZXJyaWRlLCBib29sIGhhcmRMaW5lQnJlYWsgPSBmYWxzZSk7
CkBAIC0yMzgsMTAgKzIzOCwxMCBAQCBwcm90ZWN0ZWQ6CiAgICAgSXRlcmF0b3IgbV9lb3I7IC8v
IFBvaW50cyB0byB0aGUgbGFzdCBjaGFyYWN0ZXIgaW4gdGhlIGN1cnJlbnQgcnVuLgogICAgIEl0
ZXJhdG9yIG1fbGFzdDsKICAgICBCaWRpU3RhdHVzIG1fc3RhdHVzOwotICAgIFdURjo6VW5pY29k
ZTo6RGlyZWN0aW9uIG1fZGlyZWN0aW9uOworICAgIFVDaGFyRGlyZWN0aW9uIG1fZGlyZWN0aW9u
OwogICAgIEl0ZXJhdG9yIGVuZE9mTGluZTsKICAgICBib29sIG1fcmVhY2hlZEVuZE9mTGluZTsK
LSAgICBJdGVyYXRvciBtX2xhc3RCZWZvcmVFVDsgLy8gQmVmb3JlIGEgRXVyb3BlYW5OdW1iZXJU
ZXJtaW5hdG9yCisgICAgSXRlcmF0b3IgbV9sYXN0QmVmb3JlRVQ7IC8vIEJlZm9yZSBhIFVfRVVS
T1BFQU5fTlVNQkVSX1RFUk1JTkFUT1IKICAgICBib29sIG1fZW1wdHlSdW47CiAKICAgICAvLyBG
SVhNRTogVGhpcyBzaG91bGQgbm90IGJlbG9uZyB0byB0aGUgcmVzb2x2ZXIsIGJ1dCByYXRoZXIg
YmUgcGFzc2VkCkBAIC0yNTQsMTEgKzI1NCwxMSBAQCBwcm90ZWN0ZWQ6CiAgICAgVmVjdG9yPFJ1
bio+IG1faXNvbGF0ZWRSdW5zOwogCiBwcml2YXRlOgotICAgIHZvaWQgcmFpc2VFeHBsaWNpdEVt
YmVkZGluZ0xldmVsKFdURjo6VW5pY29kZTo6RGlyZWN0aW9uIGZyb20sIFdURjo6VW5pY29kZTo6
RGlyZWN0aW9uIHRvKTsKLSAgICB2b2lkIGxvd2VyRXhwbGljaXRFbWJlZGRpbmdMZXZlbChXVEY6
OlVuaWNvZGU6OkRpcmVjdGlvbiBmcm9tKTsKKyAgICB2b2lkIHJhaXNlRXhwbGljaXRFbWJlZGRp
bmdMZXZlbChVQ2hhckRpcmVjdGlvbiBmcm9tLCBVQ2hhckRpcmVjdGlvbiB0byk7CisgICAgdm9p
ZCBsb3dlckV4cGxpY2l0RW1iZWRkaW5nTGV2ZWwoVUNoYXJEaXJlY3Rpb24gZnJvbSk7CiAgICAg
dm9pZCBjaGVja0RpcmVjdGlvbkluTG93ZXJSYWlzZUVtYmVkZGluZ0xldmVsKCk7CiAKLSAgICB2
b2lkIHVwZGF0ZVN0YXR1c0xhc3RGcm9tQ3VycmVudERpcmVjdGlvbihXVEY6OlVuaWNvZGU6OkRp
cmVjdGlvbik7CisgICAgdm9pZCB1cGRhdGVTdGF0dXNMYXN0RnJvbUN1cnJlbnREaXJlY3Rpb24o
VUNoYXJEaXJlY3Rpb24pOwogICAgIHZvaWQgcmVvcmRlclJ1bnNGcm9tTGV2ZWxzKCk7CiAKICAg
ICBWZWN0b3I8QmlkaUVtYmVkZGluZywgOD4gbV9jdXJyZW50RXhwbGljaXRFbWJlZGRpbmdTZXF1
ZW5jZTsKQEAgLTI5NCw2NCArMjk0LDU5IEBAIHZvaWQgQmlkaVJlc29sdmVyPEl0ZXJhdG9yLCBS
dW4+OjphcHBlbmRSdW4oKQogICAgICAgICBtX3NvciA9IG1fZW9yOwogICAgIH0KIAotICAgIG1f
ZGlyZWN0aW9uID0gV1RGOjpVbmljb2RlOjpPdGhlck5ldXRyYWw7Ci0gICAgbV9zdGF0dXMuZW9y
ID0gV1RGOjpVbmljb2RlOjpPdGhlck5ldXRyYWw7CisgICAgbV9kaXJlY3Rpb24gPSBVX09USEVS
X05FVVRSQUw7CisgICAgbV9zdGF0dXMuZW9yID0gVV9PVEhFUl9ORVVUUkFMOwogfQogCiB0ZW1w
bGF0ZSA8Y2xhc3MgSXRlcmF0b3IsIGNsYXNzIFJ1bj4KLXZvaWQgQmlkaVJlc29sdmVyPEl0ZXJh
dG9yLCBSdW4+OjplbWJlZChXVEY6OlVuaWNvZGU6OkRpcmVjdGlvbiBkaXIsIEJpZGlFbWJlZGRp
bmdTb3VyY2Ugc291cmNlKQordm9pZCBCaWRpUmVzb2x2ZXI8SXRlcmF0b3IsIFJ1bj46OmVtYmVk
KFVDaGFyRGlyZWN0aW9uIGRpciwgQmlkaUVtYmVkZGluZ1NvdXJjZSBzb3VyY2UpCiB7CiAgICAg
Ly8gSXNvbGF0ZWQgc3BhbnMgY29tcHV0ZSBiYXNlIGRpcmVjdGlvbmFsaXR5IGR1cmluZyB0aGVp
ciBvd24gVUJBIHJ1bi4KICAgICAvLyBEbyBub3QgaW5zZXJ0IGZha2UgZW1iZWQgY2hhcmFjdGVy
cyBvbmNlIHdlIGVudGVyIGFuIGlzb2xhdGVkIHNwYW4uCiAgICAgQVNTRVJUKCFpbklzb2xhdGUo
KSk7Ci0gICAgdXNpbmcgbmFtZXNwYWNlIFdURjo6VW5pY29kZTsKIAotICAgIEFTU0VSVChkaXIg
PT0gUG9wRGlyZWN0aW9uYWxGb3JtYXQgfHwgZGlyID09IExlZnRUb1JpZ2h0RW1iZWRkaW5nIHx8
IGRpciA9PSBMZWZ0VG9SaWdodE92ZXJyaWRlIHx8IGRpciA9PSBSaWdodFRvTGVmdEVtYmVkZGlu
ZyB8fCBkaXIgPT0gUmlnaHRUb0xlZnRPdmVycmlkZSk7CisgICAgQVNTRVJUKGRpciA9PSBVX1BP
UF9ESVJFQ1RJT05BTF9GT1JNQVQgfHwgZGlyID09IFVfTEVGVF9UT19SSUdIVF9FTUJFRERJTkcg
fHwgZGlyID09IFVfTEVGVF9UT19SSUdIVF9PVkVSUklERSB8fCBkaXIgPT0gVV9SSUdIVF9UT19M
RUZUX0VNQkVERElORyB8fCBkaXIgPT0gVV9SSUdIVF9UT19MRUZUX09WRVJSSURFKTsKICAgICBt
X2N1cnJlbnRFeHBsaWNpdEVtYmVkZGluZ1NlcXVlbmNlLmFwcGVuZChCaWRpRW1iZWRkaW5nKGRp
ciwgc291cmNlKSk7CiB9CiAKIHRlbXBsYXRlIDxjbGFzcyBJdGVyYXRvciwgY2xhc3MgUnVuPgog
dm9pZCBCaWRpUmVzb2x2ZXI8SXRlcmF0b3IsIFJ1bj46OmNoZWNrRGlyZWN0aW9uSW5Mb3dlclJh
aXNlRW1iZWRkaW5nTGV2ZWwoKQogewotICAgIHVzaW5nIG5hbWVzcGFjZSBXVEY6OlVuaWNvZGU7
Ci0KLSAgICBBU1NFUlQobV9zdGF0dXMuZW9yICE9IE90aGVyTmV1dHJhbCB8fCBtX2Vvci5hdEVu
ZCgpKTsKLSAgICBBU1NFUlQobV9zdGF0dXMubGFzdCAhPSBOb25TcGFjaW5nTWFyawotICAgICAg
ICAmJiBtX3N0YXR1cy5sYXN0ICE9IEJvdW5kYXJ5TmV1dHJhbAotICAgICAgICAmJiBtX3N0YXR1
cy5sYXN0ICE9IFJpZ2h0VG9MZWZ0RW1iZWRkaW5nCi0gICAgICAgICYmIG1fc3RhdHVzLmxhc3Qg
IT0gTGVmdFRvUmlnaHRFbWJlZGRpbmcKLSAgICAgICAgJiYgbV9zdGF0dXMubGFzdCAhPSBSaWdo
dFRvTGVmdE92ZXJyaWRlIAotICAgICAgICAmJiBtX3N0YXR1cy5sYXN0ICE9IExlZnRUb1JpZ2h0
T3ZlcnJpZGUgCi0gICAgICAgICYmIG1fc3RhdHVzLmxhc3QgIT0gUG9wRGlyZWN0aW9uYWxGb3Jt
YXQpOwotICAgIGlmIChtX2RpcmVjdGlvbiA9PSBPdGhlck5ldXRyYWwpCi0gICAgICAgIG1fZGly
ZWN0aW9uID0gbV9zdGF0dXMubGFzdFN0cm9uZyA9PSBMZWZ0VG9SaWdodCA/IExlZnRUb1JpZ2h0
IDogUmlnaHRUb0xlZnQ7CisgICAgQVNTRVJUKG1fc3RhdHVzLmVvciAhPSBVX09USEVSX05FVVRS
QUwgfHwgbV9lb3IuYXRFbmQoKSk7CisgICAgQVNTRVJUKG1fc3RhdHVzLmxhc3QgIT0gVV9ESVJf
Tk9OX1NQQUNJTkdfTUFSSworICAgICAgICAmJiBtX3N0YXR1cy5sYXN0ICE9IFVfQk9VTkRBUllf
TkVVVFJBTAorICAgICAgICAmJiBtX3N0YXR1cy5sYXN0ICE9IFVfUklHSFRfVE9fTEVGVF9FTUJF
RERJTkcKKyAgICAgICAgJiYgbV9zdGF0dXMubGFzdCAhPSBVX0xFRlRfVE9fUklHSFRfRU1CRURE
SU5HCisgICAgICAgICYmIG1fc3RhdHVzLmxhc3QgIT0gVV9SSUdIVF9UT19MRUZUX09WRVJSSURF
IAorICAgICAgICAmJiBtX3N0YXR1cy5sYXN0ICE9IFVfTEVGVF9UT19SSUdIVF9PVkVSUklERQor
ICAgICAgICAmJiBtX3N0YXR1cy5sYXN0ICE9IFVfUE9QX0RJUkVDVElPTkFMX0ZPUk1BVCk7Cisg
ICAgaWYgKG1fZGlyZWN0aW9uID09IFVfT1RIRVJfTkVVVFJBTCkKKyAgICAgICAgbV9kaXJlY3Rp
b24gPSBtX3N0YXR1cy5sYXN0U3Ryb25nID09IFVfTEVGVF9UT19SSUdIVCA/IFVfTEVGVF9UT19S
SUdIVCA6IFVfUklHSFRfVE9fTEVGVDsKIH0KIAogdGVtcGxhdGUgPGNsYXNzIEl0ZXJhdG9yLCBj
bGFzcyBSdW4+Ci12b2lkIEJpZGlSZXNvbHZlcjxJdGVyYXRvciwgUnVuPjo6bG93ZXJFeHBsaWNp
dEVtYmVkZGluZ0xldmVsKFdURjo6VW5pY29kZTo6RGlyZWN0aW9uIGZyb20pCit2b2lkIEJpZGlS
ZXNvbHZlcjxJdGVyYXRvciwgUnVuPjo6bG93ZXJFeHBsaWNpdEVtYmVkZGluZ0xldmVsKFVDaGFy
RGlyZWN0aW9uIGZyb20pCiB7Ci0gICAgdXNpbmcgbmFtZXNwYWNlIFdURjo6VW5pY29kZTsKLQog
ICAgIGlmICghbV9lbXB0eVJ1biAmJiBtX2VvciAhPSBtX2xhc3QpIHsKICAgICAgICAgY2hlY2tE
aXJlY3Rpb25Jbkxvd2VyUmFpc2VFbWJlZGRpbmdMZXZlbCgpOwogICAgICAgICAvLyBiaWRpLnNv
ciAuLi4gYmlkaS5lb3IgLi4uIGJpZGkubGFzdCBlb3I7IG5lZWQgdG8gYXBwZW5kIHRoZSBiaWRp
LnNvci1iaWRpLmVvciBydW4gb3IgZXh0ZW5kIGl0IHRocm91Z2ggYmlkaS5sYXN0Ci0gICAgICAg
IGlmIChmcm9tID09IExlZnRUb1JpZ2h0KSB7CisgICAgICAgIGlmIChmcm9tID09IFVfTEVGVF9U
T19SSUdIVCkgewogICAgICAgICAgICAgLy8gYmlkaS5zb3IgLi4uIGJpZGkuZW9yIC4uLiBiaWRp
Lmxhc3QgTAotICAgICAgICAgICAgaWYgKG1fc3RhdHVzLmVvciA9PSBFdXJvcGVhbk51bWJlcikg
ewotICAgICAgICAgICAgICAgIGlmIChtX3N0YXR1cy5sYXN0U3Ryb25nICE9IExlZnRUb1JpZ2h0
KSB7Ci0gICAgICAgICAgICAgICAgICAgIG1fZGlyZWN0aW9uID0gRXVyb3BlYW5OdW1iZXI7Cisg
ICAgICAgICAgICBpZiAobV9zdGF0dXMuZW9yID09IFVfRVVST1BFQU5fTlVNQkVSKSB7CisgICAg
ICAgICAgICAgICAgaWYgKG1fc3RhdHVzLmxhc3RTdHJvbmcgIT0gVV9MRUZUX1RPX1JJR0hUKSB7
CisgICAgICAgICAgICAgICAgICAgIG1fZGlyZWN0aW9uID0gVV9FVVJPUEVBTl9OVU1CRVI7CiAg
ICAgICAgICAgICAgICAgICAgIGFwcGVuZFJ1bigpOwogICAgICAgICAgICAgICAgIH0KLSAgICAg
ICAgICAgIH0gZWxzZSBpZiAobV9zdGF0dXMuZW9yID09IEFyYWJpY051bWJlcikgewotICAgICAg
ICAgICAgICAgIG1fZGlyZWN0aW9uID0gQXJhYmljTnVtYmVyOworICAgICAgICAgICAgfSBlbHNl
IGlmIChtX3N0YXR1cy5lb3IgPT0gVV9BUkFCSUNfTlVNQkVSKSB7CisgICAgICAgICAgICAgICAg
bV9kaXJlY3Rpb24gPSBVX0FSQUJJQ19OVU1CRVI7CiAgICAgICAgICAgICAgICAgYXBwZW5kUnVu
KCk7Ci0gICAgICAgICAgICB9IGVsc2UgaWYgKG1fc3RhdHVzLmxhc3RTdHJvbmcgIT0gTGVmdFRv
UmlnaHQpIHsKKyAgICAgICAgICAgIH0gZWxzZSBpZiAobV9zdGF0dXMubGFzdFN0cm9uZyAhPSBV
X0xFRlRfVE9fUklHSFQpIHsKICAgICAgICAgICAgICAgICBhcHBlbmRSdW4oKTsKLSAgICAgICAg
ICAgICAgICBtX2RpcmVjdGlvbiA9IExlZnRUb1JpZ2h0OworICAgICAgICAgICAgICAgIG1fZGly
ZWN0aW9uID0gVV9MRUZUX1RPX1JJR0hUOwogICAgICAgICAgICAgfQotICAgICAgICB9IGVsc2Ug
aWYgKG1fc3RhdHVzLmVvciA9PSBFdXJvcGVhbk51bWJlciB8fCBtX3N0YXR1cy5lb3IgPT0gQXJh
YmljTnVtYmVyIHx8IG1fc3RhdHVzLmxhc3RTdHJvbmcgPT0gTGVmdFRvUmlnaHQpIHsKKyAgICAg
ICAgfSBlbHNlIGlmIChtX3N0YXR1cy5lb3IgPT0gVV9FVVJPUEVBTl9OVU1CRVIgfHwgbV9zdGF0
dXMuZW9yID09IFVfQVJBQklDX05VTUJFUiB8fCBtX3N0YXR1cy5sYXN0U3Ryb25nID09IFVfTEVG
VF9UT19SSUdIVCkgewogICAgICAgICAgICAgYXBwZW5kUnVuKCk7Ci0gICAgICAgICAgICBtX2Rp
cmVjdGlvbiA9IFJpZ2h0VG9MZWZ0OworICAgICAgICAgICAgbV9kaXJlY3Rpb24gPSBVX1JJR0hU
X1RPX0xFRlQ7CiAgICAgICAgIH0KICAgICAgICAgbV9lb3IgPSBtX2xhc3Q7CiAgICAgfQpAQCAt
MzY2LDMyICszNjEsMzAgQEAgdm9pZCBCaWRpUmVzb2x2ZXI8SXRlcmF0b3IsIFJ1bj46Omxvd2Vy
RXhwbGljaXRFbWJlZGRpbmdMZXZlbChXVEY6OlVuaWNvZGU6OkRpcmUKIH0KIAogdGVtcGxhdGUg
PGNsYXNzIEl0ZXJhdG9yLCBjbGFzcyBSdW4+Ci12b2lkIEJpZGlSZXNvbHZlcjxJdGVyYXRvciwg
UnVuPjo6cmFpc2VFeHBsaWNpdEVtYmVkZGluZ0xldmVsKFdURjo6VW5pY29kZTo6RGlyZWN0aW9u
IGZyb20sIFdURjo6VW5pY29kZTo6RGlyZWN0aW9uIHRvKQordm9pZCBCaWRpUmVzb2x2ZXI8SXRl
cmF0b3IsIFJ1bj46OnJhaXNlRXhwbGljaXRFbWJlZGRpbmdMZXZlbChVQ2hhckRpcmVjdGlvbiBm
cm9tLCBVQ2hhckRpcmVjdGlvbiB0bykKIHsKLSAgICB1c2luZyBuYW1lc3BhY2UgV1RGOjpVbmlj
b2RlOwotCiAgICAgaWYgKCFtX2VtcHR5UnVuICYmIG1fZW9yICE9IG1fbGFzdCkgewogICAgICAg
ICBjaGVja0RpcmVjdGlvbkluTG93ZXJSYWlzZUVtYmVkZGluZ0xldmVsKCk7CiAgICAgICAgIC8v
IGJpZGkuc29yIC4uLiBiaWRpLmVvciAuLi4gYmlkaS5sYXN0IGVvcjsgbmVlZCB0byBhcHBlbmQg
dGhlIGJpZGkuc29yLWJpZGkuZW9yIHJ1biBvciBleHRlbmQgaXQgdGhyb3VnaCBiaWRpLmxhc3QK
LSAgICAgICAgaWYgKHRvID09IExlZnRUb1JpZ2h0KSB7CisgICAgICAgIGlmICh0byA9PSBVX0xF
RlRfVE9fUklHSFQpIHsKICAgICAgICAgICAgIC8vIGJpZGkuc29yIC4uLiBiaWRpLmVvciAuLi4g
YmlkaS5sYXN0IEwKLSAgICAgICAgICAgIGlmIChtX3N0YXR1cy5lb3IgPT0gRXVyb3BlYW5OdW1i
ZXIpIHsKLSAgICAgICAgICAgICAgICBpZiAobV9zdGF0dXMubGFzdFN0cm9uZyAhPSBMZWZ0VG9S
aWdodCkgewotICAgICAgICAgICAgICAgICAgICBtX2RpcmVjdGlvbiA9IEV1cm9wZWFuTnVtYmVy
OworICAgICAgICAgICAgaWYgKG1fc3RhdHVzLmVvciA9PSBVX0VVUk9QRUFOX05VTUJFUikgewor
ICAgICAgICAgICAgICAgIGlmIChtX3N0YXR1cy5sYXN0U3Ryb25nICE9IFVfTEVGVF9UT19SSUdI
VCkgeworICAgICAgICAgICAgICAgICAgICBtX2RpcmVjdGlvbiA9IFVfRVVST1BFQU5fTlVNQkVS
OwogICAgICAgICAgICAgICAgICAgICBhcHBlbmRSdW4oKTsKICAgICAgICAgICAgICAgICB9Ci0g
ICAgICAgICAgICB9IGVsc2UgaWYgKG1fc3RhdHVzLmVvciA9PSBBcmFiaWNOdW1iZXIpIHsKLSAg
ICAgICAgICAgICAgICBtX2RpcmVjdGlvbiA9IEFyYWJpY051bWJlcjsKKyAgICAgICAgICAgIH0g
ZWxzZSBpZiAobV9zdGF0dXMuZW9yID09IFVfQVJBQklDX05VTUJFUikgeworICAgICAgICAgICAg
ICAgIG1fZGlyZWN0aW9uID0gVV9BUkFCSUNfTlVNQkVSOwogICAgICAgICAgICAgICAgIGFwcGVu
ZFJ1bigpOwotICAgICAgICAgICAgfSBlbHNlIGlmIChtX3N0YXR1cy5sYXN0U3Ryb25nICE9IExl
ZnRUb1JpZ2h0ICYmIGZyb20gPT0gTGVmdFRvUmlnaHQpIHsKKyAgICAgICAgICAgIH0gZWxzZSBp
ZiAobV9zdGF0dXMubGFzdFN0cm9uZyAhPSBVX0xFRlRfVE9fUklHSFQgJiYgZnJvbSA9PSBVX0xF
RlRfVE9fUklHSFQpIHsKICAgICAgICAgICAgICAgICBhcHBlbmRSdW4oKTsKLSAgICAgICAgICAg
ICAgICBtX2RpcmVjdGlvbiA9IExlZnRUb1JpZ2h0OworICAgICAgICAgICAgICAgIG1fZGlyZWN0
aW9uID0gVV9MRUZUX1RPX1JJR0hUOwogICAgICAgICAgICAgfQotICAgICAgICB9IGVsc2UgaWYg
KG1fc3RhdHVzLmVvciA9PSBBcmFiaWNOdW1iZXIKLSAgICAgICAgICAgIHx8IChtX3N0YXR1cy5l
b3IgPT0gRXVyb3BlYW5OdW1iZXIgJiYgKG1fc3RhdHVzLmxhc3RTdHJvbmcgIT0gTGVmdFRvUmln
aHQgfHwgZnJvbSA9PSBSaWdodFRvTGVmdCkpCi0gICAgICAgICAgICB8fCAobV9zdGF0dXMuZW9y
ICE9IEV1cm9wZWFuTnVtYmVyICYmIG1fc3RhdHVzLmxhc3RTdHJvbmcgPT0gTGVmdFRvUmlnaHQg
JiYgZnJvbSA9PSBSaWdodFRvTGVmdCkpIHsKKyAgICAgICAgfSBlbHNlIGlmIChtX3N0YXR1cy5l
b3IgPT0gVV9BUkFCSUNfTlVNQkVSCisgICAgICAgICAgICB8fCAobV9zdGF0dXMuZW9yID09IFVf
RVVST1BFQU5fTlVNQkVSICYmIChtX3N0YXR1cy5sYXN0U3Ryb25nICE9IFVfTEVGVF9UT19SSUdI
VCB8fCBmcm9tID09IFVfUklHSFRfVE9fTEVGVCkpCisgICAgICAgICAgICB8fCAobV9zdGF0dXMu
ZW9yICE9IFVfRVVST1BFQU5fTlVNQkVSICYmIG1fc3RhdHVzLmxhc3RTdHJvbmcgPT0gVV9MRUZU
X1RPX1JJR0hUICYmIGZyb20gPT0gVV9SSUdIVF9UT19MRUZUKSkgewogICAgICAgICAgICAgYXBw
ZW5kUnVuKCk7Ci0gICAgICAgICAgICBtX2RpcmVjdGlvbiA9IFJpZ2h0VG9MZWZ0OworICAgICAg
ICAgICAgbV9kaXJlY3Rpb24gPSBVX1JJR0hUX1RPX0xFRlQ7CiAgICAgICAgIH0KICAgICAgICAg
bV9lb3IgPSBtX2xhc3Q7CiAgICAgfQpAQCAtNDEyLDIxICs0MDUsMTkgQEAgYm9vbCBCaWRpUmVz
b2x2ZXI8SXRlcmF0b3IsIFJ1bj46OmNvbW1pdEV4cGxpY2l0RW1iZWRkaW5nKCkKICAgICAvLyBX
ZSBzaG91bGQgbmV2ZXIgYWNjcnVlIGVtYmVkZGluZyBsZXZlbHMgd2hpbGUgc2tpcHBpbmcgb3Zl
ciBpc29sYXRlZCBjb250ZW50LgogICAgIEFTU0VSVCghaW5Jc29sYXRlKCkgfHwgbV9jdXJyZW50
RXhwbGljaXRFbWJlZGRpbmdTZXF1ZW5jZS5pc0VtcHR5KCkpOwogCi0gICAgdXNpbmcgbmFtZXNw
YWNlIFdURjo6VW5pY29kZTsKLQogICAgIHVuc2lnbmVkIGNoYXIgZnJvbUxldmVsID0gY29udGV4
dCgpLT5sZXZlbCgpOwogICAgIFJlZlB0cjxCaWRpQ29udGV4dD4gdG9Db250ZXh0ID0gY29udGV4
dCgpOwogCiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX2N1cnJlbnRFeHBsaWNpdEVtYmVk
ZGluZ1NlcXVlbmNlLnNpemUoKTsgKytpKSB7CiAgICAgICAgIEJpZGlFbWJlZGRpbmcgZW1iZWRk
aW5nID0gbV9jdXJyZW50RXhwbGljaXRFbWJlZGRpbmdTZXF1ZW5jZVtpXTsKLSAgICAgICAgaWYg
KGVtYmVkZGluZy5kaXJlY3Rpb24oKSA9PSBQb3BEaXJlY3Rpb25hbEZvcm1hdCkgeworICAgICAg
ICBpZiAoZW1iZWRkaW5nLmRpcmVjdGlvbigpID09IFVfUE9QX0RJUkVDVElPTkFMX0ZPUk1BVCkg
ewogICAgICAgICAgICAgaWYgKEJpZGlDb250ZXh0KiBwYXJlbnRDb250ZXh0ID0gdG9Db250ZXh0
LT5wYXJlbnQoKSkKICAgICAgICAgICAgICAgICB0b0NvbnRleHQgPSBwYXJlbnRDb250ZXh0Owog
ICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgRGlyZWN0aW9uIGRpcmVjdGlvbiA9IChlbWJl
ZGRpbmcuZGlyZWN0aW9uKCkgPT0gUmlnaHRUb0xlZnRFbWJlZGRpbmcgfHwgZW1iZWRkaW5nLmRp
cmVjdGlvbigpID09IFJpZ2h0VG9MZWZ0T3ZlcnJpZGUpID8gUmlnaHRUb0xlZnQgOiBMZWZ0VG9S
aWdodDsKLSAgICAgICAgICAgIGJvb2wgb3ZlcnJpZGUgPSBlbWJlZGRpbmcuZGlyZWN0aW9uKCkg
PT0gTGVmdFRvUmlnaHRPdmVycmlkZSB8fCBlbWJlZGRpbmcuZGlyZWN0aW9uKCkgPT0gUmlnaHRU
b0xlZnRPdmVycmlkZTsKKyAgICAgICAgICAgIFVDaGFyRGlyZWN0aW9uIGRpcmVjdGlvbiA9IChl
bWJlZGRpbmcuZGlyZWN0aW9uKCkgPT0gVV9SSUdIVF9UT19MRUZUX0VNQkVERElORyB8fCBlbWJl
ZGRpbmcuZGlyZWN0aW9uKCkgPT0gVV9SSUdIVF9UT19MRUZUX09WRVJSSURFKSA/IFVfUklHSFRf
VE9fTEVGVCA6IFVfTEVGVF9UT19SSUdIVDsKKyAgICAgICAgICAgIGJvb2wgb3ZlcnJpZGUgPSBl
bWJlZGRpbmcuZGlyZWN0aW9uKCkgPT0gVV9MRUZUX1RPX1JJR0hUX09WRVJSSURFIHx8IGVtYmVk
ZGluZy5kaXJlY3Rpb24oKSA9PSBVX1JJR0hUX1RPX0xFRlRfT1ZFUlJJREU7CiAgICAgICAgICAg
ICB1bnNpZ25lZCBjaGFyIGxldmVsID0gdG9Db250ZXh0LT5sZXZlbCgpOwotICAgICAgICAgICAg
aWYgKGRpcmVjdGlvbiA9PSBSaWdodFRvTGVmdCkKKyAgICAgICAgICAgIGlmIChkaXJlY3Rpb24g
PT0gVV9SSUdIVF9UT19MRUZUKQogICAgICAgICAgICAgICAgIGxldmVsID0gbmV4dEdyZWF0ZXJP
ZGRMZXZlbChsZXZlbCk7CiAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgbGV2ZWwg
PSBuZXh0R3JlYXRlckV2ZW5MZXZlbChsZXZlbCk7CkBAIC00MzgsOSArNDI5LDkgQEAgYm9vbCBC
aWRpUmVzb2x2ZXI8SXRlcmF0b3IsIFJ1bj46OmNvbW1pdEV4cGxpY2l0RW1iZWRkaW5nKCkKICAg
ICB1bnNpZ25lZCBjaGFyIHRvTGV2ZWwgPSB0b0NvbnRleHQtPmxldmVsKCk7CiAKICAgICBpZiAo
dG9MZXZlbCA+IGZyb21MZXZlbCkKLSAgICAgICAgcmFpc2VFeHBsaWNpdEVtYmVkZGluZ0xldmVs
KGZyb21MZXZlbCAlIDIgPyBSaWdodFRvTGVmdCA6IExlZnRUb1JpZ2h0LCB0b0xldmVsICUgMiA/
IFJpZ2h0VG9MZWZ0IDogTGVmdFRvUmlnaHQpOworICAgICAgICByYWlzZUV4cGxpY2l0RW1iZWRk
aW5nTGV2ZWwoZnJvbUxldmVsICUgMiA/IFVfUklHSFRfVE9fTEVGVCA6IFVfTEVGVF9UT19SSUdI
VCwgdG9MZXZlbCAlIDIgPyBVX1JJR0hUX1RPX0xFRlQgOiBVX0xFRlRfVE9fUklHSFQpOwogICAg
IGVsc2UgaWYgKHRvTGV2ZWwgPCBmcm9tTGV2ZWwpCi0gICAgICAgIGxvd2VyRXhwbGljaXRFbWJl
ZGRpbmdMZXZlbChmcm9tTGV2ZWwgJSAyID8gUmlnaHRUb0xlZnQgOiBMZWZ0VG9SaWdodCk7Cisg
ICAgICAgIGxvd2VyRXhwbGljaXRFbWJlZGRpbmdMZXZlbChmcm9tTGV2ZWwgJSAyID8gVV9SSUdI
VF9UT19MRUZUIDogVV9MRUZUX1RPX1JJR0hUKTsKIAogICAgIHNldENvbnRleHQodG9Db250ZXh0
KTsKIApAQCAtNDUwLDQxICs0NDEsNDAgQEAgYm9vbCBCaWRpUmVzb2x2ZXI8SXRlcmF0b3IsIFJ1
bj46OmNvbW1pdEV4cGxpY2l0RW1iZWRkaW5nKCkKIH0KIAogdGVtcGxhdGUgPGNsYXNzIEl0ZXJh
dG9yLCBjbGFzcyBSdW4+Ci1pbmxpbmUgdm9pZCBCaWRpUmVzb2x2ZXI8SXRlcmF0b3IsIFJ1bj46
OnVwZGF0ZVN0YXR1c0xhc3RGcm9tQ3VycmVudERpcmVjdGlvbihXVEY6OlVuaWNvZGU6OkRpcmVj
dGlvbiBkaXJDdXJyZW50KQoraW5saW5lIHZvaWQgQmlkaVJlc29sdmVyPEl0ZXJhdG9yLCBSdW4+
Ojp1cGRhdGVTdGF0dXNMYXN0RnJvbUN1cnJlbnREaXJlY3Rpb24oVUNoYXJEaXJlY3Rpb24gZGly
Q3VycmVudCkKIHsKLSAgICB1c2luZyBuYW1lc3BhY2UgV1RGOjpVbmljb2RlOwogICAgIHN3aXRj
aCAoZGlyQ3VycmVudCkgewotICAgIGNhc2UgRXVyb3BlYW5OdW1iZXJUZXJtaW5hdG9yOgotICAg
ICAgICBpZiAobV9zdGF0dXMubGFzdCAhPSBFdXJvcGVhbk51bWJlcikKLSAgICAgICAgICAgIG1f
c3RhdHVzLmxhc3QgPSBFdXJvcGVhbk51bWJlclRlcm1pbmF0b3I7CisgICAgY2FzZSBVX0VVUk9Q
RUFOX05VTUJFUl9URVJNSU5BVE9SOgorICAgICAgICBpZiAobV9zdGF0dXMubGFzdCAhPSBVX0VV
Uk9QRUFOX05VTUJFUikKKyAgICAgICAgICAgIG1fc3RhdHVzLmxhc3QgPSBVX0VVUk9QRUFOX05V
TUJFUl9URVJNSU5BVE9SOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIEV1cm9wZWFuTnVtYmVy
U2VwYXJhdG9yOgotICAgIGNhc2UgQ29tbW9uTnVtYmVyU2VwYXJhdG9yOgotICAgIGNhc2UgU2Vn
bWVudFNlcGFyYXRvcjoKLSAgICBjYXNlIFdoaXRlU3BhY2VOZXV0cmFsOgotICAgIGNhc2UgT3Ro
ZXJOZXV0cmFsOgorICAgIGNhc2UgVV9FVVJPUEVBTl9OVU1CRVJfU0VQQVJBVE9SOgorICAgIGNh
c2UgVV9DT01NT05fTlVNQkVSX1NFUEFSQVRPUjoKKyAgICBjYXNlIFVfU0VHTUVOVF9TRVBBUkFU
T1I6CisgICAgY2FzZSBVX1dISVRFX1NQQUNFX05FVVRSQUw6CisgICAgY2FzZSBVX09USEVSX05F
VVRSQUw6CiAgICAgICAgIHN3aXRjaCAobV9zdGF0dXMubGFzdCkgewotICAgICAgICBjYXNlIExl
ZnRUb1JpZ2h0OgotICAgICAgICBjYXNlIFJpZ2h0VG9MZWZ0OgotICAgICAgICBjYXNlIFJpZ2h0
VG9MZWZ0QXJhYmljOgotICAgICAgICBjYXNlIEV1cm9wZWFuTnVtYmVyOgotICAgICAgICBjYXNl
IEFyYWJpY051bWJlcjoKKyAgICAgICAgY2FzZSBVX0xFRlRfVE9fUklHSFQ6CisgICAgICAgIGNh
c2UgVV9SSUdIVF9UT19MRUZUOgorICAgICAgICBjYXNlIFVfUklHSFRfVE9fTEVGVF9BUkFCSUM6
CisgICAgICAgIGNhc2UgVV9FVVJPUEVBTl9OVU1CRVI6CisgICAgICAgIGNhc2UgVV9BUkFCSUNf
TlVNQkVSOgogICAgICAgICAgICAgbV9zdGF0dXMubGFzdCA9IGRpckN1cnJlbnQ7CiAgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgIG1fc3RhdHVzLmxhc3Qg
PSBPdGhlck5ldXRyYWw7CisgICAgICAgICAgICBtX3N0YXR1cy5sYXN0ID0gVV9PVEhFUl9ORVVU
UkFMOwogICAgICAgICB9CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgTm9uU3BhY2luZ01hcms6
Ci0gICAgY2FzZSBCb3VuZGFyeU5ldXRyYWw6Ci0gICAgY2FzZSBSaWdodFRvTGVmdEVtYmVkZGlu
ZzoKLSAgICBjYXNlIExlZnRUb1JpZ2h0RW1iZWRkaW5nOgotICAgIGNhc2UgUmlnaHRUb0xlZnRP
dmVycmlkZToKLSAgICBjYXNlIExlZnRUb1JpZ2h0T3ZlcnJpZGU6Ci0gICAgY2FzZSBQb3BEaXJl
Y3Rpb25hbEZvcm1hdDoKKyAgICBjYXNlIFVfRElSX05PTl9TUEFDSU5HX01BUks6CisgICAgY2Fz
ZSBVX0JPVU5EQVJZX05FVVRSQUw6CisgICAgY2FzZSBVX1JJR0hUX1RPX0xFRlRfRU1CRURESU5H
OgorICAgIGNhc2UgVV9MRUZUX1RPX1JJR0hUX0VNQkVERElORzoKKyAgICBjYXNlIFVfUklHSFRf
VE9fTEVGVF9PVkVSUklERToKKyAgICBjYXNlIFVfTEVGVF9UT19SSUdIVF9PVkVSUklERToKKyAg
ICBjYXNlIFVfUE9QX0RJUkVDVElPTkFMX0ZPUk1BVDoKICAgICAgICAgLy8gaWdub3JlIHRoZXNl
CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgRXVyb3BlYW5OdW1iZXI6CisgICAgY2FzZSBVX0VV
Uk9QRUFOX05VTUJFUjoKICAgICAgICAgLy8gZmFsbCB0aHJvdWdoCiAgICAgZGVmYXVsdDoKICAg
ICAgICAgbV9zdGF0dXMubGFzdCA9IGRpckN1cnJlbnQ7CkBAIC01MzEsOSArNTIxLDcgQEAgaW5s
aW5lIHZvaWQgQmlkaVJlc29sdmVyPEl0ZXJhdG9yLCBSdW4+OjpyZW9yZGVyUnVuc0Zyb21MZXZl
bHMoKQogdGVtcGxhdGUgPGNsYXNzIEl0ZXJhdG9yLCBjbGFzcyBSdW4+CiB2b2lkIEJpZGlSZXNv
bHZlcjxJdGVyYXRvciwgUnVuPjo6Y3JlYXRlQmlkaVJ1bnNGb3JMaW5lKGNvbnN0IEl0ZXJhdG9y
JiBlbmQsIFZpc3VhbERpcmVjdGlvbk92ZXJyaWRlIG92ZXJyaWRlLCBib29sIGhhcmRMaW5lQnJl
YWspCiB7Ci0gICAgdXNpbmcgbmFtZXNwYWNlIFdURjo6VW5pY29kZTsKLQotICAgIEFTU0VSVCht
X2RpcmVjdGlvbiA9PSBPdGhlck5ldXRyYWwpOworICAgIEFTU0VSVChtX2RpcmVjdGlvbiA9PSBV
X09USEVSX05FVVRSQUwpOwogCiAgICAgaWYgKG92ZXJyaWRlICE9IE5vVmlzdWFsT3ZlcnJpZGUp
IHsKICAgICAgICAgbV9lbXB0eVJ1biA9IGZhbHNlOwpAQCAtNTQzLDcgKzUzMSw3IEBAIHZvaWQg
QmlkaVJlc29sdmVyPEl0ZXJhdG9yLCBSdW4+OjpjcmVhdGVCaWRpUnVuc0ZvckxpbmUoY29uc3Qg
SXRlcmF0b3ImIGVuZCwgVmlzCiAgICAgICAgICAgICBtX2VvciA9IG1fY3VycmVudDsKICAgICAg
ICAgICAgIGluY3JlbWVudCgpOwogICAgICAgICB9Ci0gICAgICAgIG1fZGlyZWN0aW9uID0gb3Zl
cnJpZGUgPT0gVmlzdWFsTGVmdFRvUmlnaHRPdmVycmlkZSA/IExlZnRUb1JpZ2h0IDogUmlnaHRU
b0xlZnQ7CisgICAgICAgIG1fZGlyZWN0aW9uID0gb3ZlcnJpZGUgPT0gVmlzdWFsTGVmdFRvUmln
aHRPdmVycmlkZSA/IFVfTEVGVF9UT19SSUdIVCA6IFVfUklHSFRfVE9fTEVGVDsKICAgICAgICAg
YXBwZW5kUnVuKCk7CiAgICAgICAgIG1fcnVucy5zZXRMb2dpY2FsbHlMYXN0UnVuKG1fcnVucy5s
YXN0UnVuKCkpOwogICAgICAgICBpZiAob3ZlcnJpZGUgPT0gVmlzdWFsUmlnaHRUb0xlZnRPdmVy
cmlkZSkKQEAgLTU2MCw3ICs1NDgsNyBAQCB2b2lkIEJpZGlSZXNvbHZlcjxJdGVyYXRvciwgUnVu
Pjo6Y3JlYXRlQmlkaVJ1bnNGb3JMaW5lKGNvbnN0IEl0ZXJhdG9yJiBlbmQsIFZpcwogICAgIEJp
ZGlSZXNvbHZlcjxJdGVyYXRvciwgUnVuPiBzdGF0ZUF0RW5kOwogCiAgICAgd2hpbGUgKHRydWUp
IHsKLSAgICAgICAgRGlyZWN0aW9uIGRpckN1cnJlbnQ7CisgICAgICAgIFVDaGFyRGlyZWN0aW9u
IGRpckN1cnJlbnQ7CiAgICAgICAgIGlmIChwYXN0RW5kICYmIChoYXJkTGluZUJyZWFrIHx8IG1f
Y3VycmVudC5hdEVuZCgpKSkgewogICAgICAgICAgICAgQmlkaUNvbnRleHQqIGMgPSBjb250ZXh0
KCk7CiAgICAgICAgICAgICBpZiAoaGFyZExpbmVCcmVhaykgewpAQCAtNTgyLDgxICs1NzAsODEg
QEAgdm9pZCBCaWRpUmVzb2x2ZXI8SXRlcmF0b3IsIFJ1bj46OmNyZWF0ZUJpZGlSdW5zRm9yTGlu
ZShjb25zdCBJdGVyYXRvciYgZW5kLCBWaXMKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAg
IGRpckN1cnJlbnQgPSBtX2N1cnJlbnQuZGlyZWN0aW9uKCk7CiAgICAgICAgICAgICBpZiAoY29u
dGV4dCgpLT5vdmVycmlkZSgpCi0gICAgICAgICAgICAgICAgICAgICYmIGRpckN1cnJlbnQgIT0g
UmlnaHRUb0xlZnRFbWJlZGRpbmcKLSAgICAgICAgICAgICAgICAgICAgJiYgZGlyQ3VycmVudCAh
PSBMZWZ0VG9SaWdodEVtYmVkZGluZwotICAgICAgICAgICAgICAgICAgICAmJiBkaXJDdXJyZW50
ICE9IFJpZ2h0VG9MZWZ0T3ZlcnJpZGUKLSAgICAgICAgICAgICAgICAgICAgJiYgZGlyQ3VycmVu
dCAhPSBMZWZ0VG9SaWdodE92ZXJyaWRlCi0gICAgICAgICAgICAgICAgICAgICYmIGRpckN1cnJl
bnQgIT0gUG9wRGlyZWN0aW9uYWxGb3JtYXQpCisgICAgICAgICAgICAgICAgICAgICYmIGRpckN1
cnJlbnQgIT0gVV9SSUdIVF9UT19MRUZUX0VNQkVERElORworICAgICAgICAgICAgICAgICAgICAm
JiBkaXJDdXJyZW50ICE9IFVfTEVGVF9UT19SSUdIVF9FTUJFRERJTkcKKyAgICAgICAgICAgICAg
ICAgICAgJiYgZGlyQ3VycmVudCAhPSBVX1JJR0hUX1RPX0xFRlRfT1ZFUlJJREUKKyAgICAgICAg
ICAgICAgICAgICAgJiYgZGlyQ3VycmVudCAhPSBVX0xFRlRfVE9fUklHSFRfT1ZFUlJJREUKKyAg
ICAgICAgICAgICAgICAgICAgJiYgZGlyQ3VycmVudCAhPSBVX1BPUF9ESVJFQ1RJT05BTF9GT1JN
QVQpCiAgICAgICAgICAgICAgICAgZGlyQ3VycmVudCA9IGNvbnRleHQoKS0+ZGlyKCk7Ci0gICAg
ICAgICAgICBlbHNlIGlmIChkaXJDdXJyZW50ID09IE5vblNwYWNpbmdNYXJrKQorICAgICAgICAg
ICAgZWxzZSBpZiAoZGlyQ3VycmVudCA9PSBVX0RJUl9OT05fU1BBQ0lOR19NQVJLKQogICAgICAg
ICAgICAgICAgIGRpckN1cnJlbnQgPSBtX3N0YXR1cy5sYXN0OwogICAgICAgICB9CiAKICAgICAg
ICAgLy8gV2UgaWdub3JlIGFsbCBjaGFyYWN0ZXIgZGlyZWN0aW9uYWxpdHkgd2hpbGUgaW4gdW5p
Y29kZS1iaWRpOiBpc29sYXRlIHNwYW5zLgogICAgICAgICAvLyBXZSdsbCBoYW5kbGUgb3JkZXJp
bmcgdGhlIGlzb2xhdGVkIGNoYXJhY3RlcnMgaW4gYSBzZWNvbmQgcGFzcy4KICAgICAgICAgaWYg
KGluSXNvbGF0ZSgpKQotICAgICAgICAgICAgZGlyQ3VycmVudCA9IE90aGVyTmV1dHJhbDsKKyAg
ICAgICAgICAgIGRpckN1cnJlbnQgPSBVX09USEVSX05FVVRSQUw7CiAKLSAgICAgICAgQVNTRVJU
KG1fc3RhdHVzLmVvciAhPSBPdGhlck5ldXRyYWwgfHwgbV9lb3IuYXRFbmQoKSk7CisgICAgICAg
IEFTU0VSVChtX3N0YXR1cy5lb3IgIT0gVV9PVEhFUl9ORVVUUkFMIHx8IG1fZW9yLmF0RW5kKCkp
OwogICAgICAgICBzd2l0Y2ggKGRpckN1cnJlbnQpIHsKIAogICAgICAgICAvLyBlbWJlZGRpbmcg
YW5kIG92ZXJyaWRlcyAoWDEtWDkgaW4gdGhlIEJpZGkgc3BlY3MpCi0gICAgICAgIGNhc2UgUmln
aHRUb0xlZnRFbWJlZGRpbmc6Ci0gICAgICAgIGNhc2UgTGVmdFRvUmlnaHRFbWJlZGRpbmc6Ci0g
ICAgICAgIGNhc2UgUmlnaHRUb0xlZnRPdmVycmlkZToKLSAgICAgICAgY2FzZSBMZWZ0VG9SaWdo
dE92ZXJyaWRlOgotICAgICAgICBjYXNlIFBvcERpcmVjdGlvbmFsRm9ybWF0OgorICAgICAgICBj
YXNlIFVfUklHSFRfVE9fTEVGVF9FTUJFRERJTkc6CisgICAgICAgIGNhc2UgVV9MRUZUX1RPX1JJ
R0hUX0VNQkVERElORzoKKyAgICAgICAgY2FzZSBVX1JJR0hUX1RPX0xFRlRfT1ZFUlJJREU6Cisg
ICAgICAgIGNhc2UgVV9MRUZUX1RPX1JJR0hUX09WRVJSSURFOgorICAgICAgICBjYXNlIFVfUE9Q
X0RJUkVDVElPTkFMX0ZPUk1BVDoKICAgICAgICAgICAgIGVtYmVkKGRpckN1cnJlbnQsIEZyb21V
bmljb2RlKTsKICAgICAgICAgICAgIGNvbW1pdEV4cGxpY2l0RW1iZWRkaW5nKCk7CiAgICAgICAg
ICAgICBicmVhazsKIAogICAgICAgICAvLyBzdHJvbmcgdHlwZXMKLSAgICAgICAgY2FzZSBMZWZ0
VG9SaWdodDoKKyAgICAgICAgY2FzZSBVX0xFRlRfVE9fUklHSFQ6CiAgICAgICAgICAgICBzd2l0
Y2gobV9zdGF0dXMubGFzdCkgewotICAgICAgICAgICAgICAgIGNhc2UgUmlnaHRUb0xlZnQ6Ci0g
ICAgICAgICAgICAgICAgY2FzZSBSaWdodFRvTGVmdEFyYWJpYzoKLSAgICAgICAgICAgICAgICBj
YXNlIEV1cm9wZWFuTnVtYmVyOgotICAgICAgICAgICAgICAgIGNhc2UgQXJhYmljTnVtYmVyOgot
ICAgICAgICAgICAgICAgICAgICBpZiAobV9zdGF0dXMubGFzdCAhPSBFdXJvcGVhbk51bWJlciB8
fCBtX3N0YXR1cy5sYXN0U3Ryb25nICE9IExlZnRUb1JpZ2h0KQorICAgICAgICAgICAgICAgIGNh
c2UgVV9SSUdIVF9UT19MRUZUOgorICAgICAgICAgICAgICAgIGNhc2UgVV9SSUdIVF9UT19MRUZU
X0FSQUJJQzoKKyAgICAgICAgICAgICAgICBjYXNlIFVfRVVST1BFQU5fTlVNQkVSOgorICAgICAg
ICAgICAgICAgIGNhc2UgVV9BUkFCSUNfTlVNQkVSOgorICAgICAgICAgICAgICAgICAgICBpZiAo
bV9zdGF0dXMubGFzdCAhPSBVX0VVUk9QRUFOX05VTUJFUiB8fCBtX3N0YXR1cy5sYXN0U3Ryb25n
ICE9IFVfTEVGVF9UT19SSUdIVCkKICAgICAgICAgICAgICAgICAgICAgICAgIGFwcGVuZFJ1bigp
OwogICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICBjYXNlIExlZnRU
b1JpZ2h0OgorICAgICAgICAgICAgICAgIGNhc2UgVV9MRUZUX1RPX1JJR0hUOgogICAgICAgICAg
ICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICBjYXNlIEV1cm9wZWFuTnVtYmVyU2Vw
YXJhdG9yOgotICAgICAgICAgICAgICAgIGNhc2UgRXVyb3BlYW5OdW1iZXJUZXJtaW5hdG9yOgot
ICAgICAgICAgICAgICAgIGNhc2UgQ29tbW9uTnVtYmVyU2VwYXJhdG9yOgotICAgICAgICAgICAg
ICAgIGNhc2UgQm91bmRhcnlOZXV0cmFsOgotICAgICAgICAgICAgICAgIGNhc2UgQmxvY2tTZXBh
cmF0b3I6Ci0gICAgICAgICAgICAgICAgY2FzZSBTZWdtZW50U2VwYXJhdG9yOgotICAgICAgICAg
ICAgICAgIGNhc2UgV2hpdGVTcGFjZU5ldXRyYWw6Ci0gICAgICAgICAgICAgICAgY2FzZSBPdGhl
ck5ldXRyYWw6Ci0gICAgICAgICAgICAgICAgICAgIGlmIChtX3N0YXR1cy5lb3IgPT0gRXVyb3Bl
YW5OdW1iZXIpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIChtX3N0YXR1cy5sYXN0U3Ry
b25nICE9IExlZnRUb1JpZ2h0KSB7CisgICAgICAgICAgICAgICAgY2FzZSBVX0VVUk9QRUFOX05V
TUJFUl9TRVBBUkFUT1I6CisgICAgICAgICAgICAgICAgY2FzZSBVX0VVUk9QRUFOX05VTUJFUl9U
RVJNSU5BVE9SOgorICAgICAgICAgICAgICAgIGNhc2UgVV9DT01NT05fTlVNQkVSX1NFUEFSQVRP
UjoKKyAgICAgICAgICAgICAgICBjYXNlIFVfQk9VTkRBUllfTkVVVFJBTDoKKyAgICAgICAgICAg
ICAgICBjYXNlIFVfQkxPQ0tfU0VQQVJBVE9SOgorICAgICAgICAgICAgICAgIGNhc2UgVV9TRUdN
RU5UX1NFUEFSQVRPUjoKKyAgICAgICAgICAgICAgICBjYXNlIFVfV0hJVEVfU1BBQ0VfTkVVVFJB
TDoKKyAgICAgICAgICAgICAgICBjYXNlIFVfT1RIRVJfTkVVVFJBTDoKKyAgICAgICAgICAgICAg
ICAgICAgaWYgKG1fc3RhdHVzLmVvciA9PSBVX0VVUk9QRUFOX05VTUJFUikgeworICAgICAgICAg
ICAgICAgICAgICAgICAgaWYgKG1fc3RhdHVzLmxhc3RTdHJvbmcgIT0gVV9MRUZUX1RPX1JJR0hU
KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdGhlIG51bWJlcnMgbmVlZCB0byBi
ZSBvbiBhIGhpZ2hlciBlbWJlZGRpbmcgbGV2ZWwsIHNvIGxldCdzIGNsb3NlIHRoYXQgcnVuCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9kaXJlY3Rpb24gPSBFdXJvcGVhbk51bWJlcjsK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX2RpcmVjdGlvbiA9IFVfRVVST1BFQU5fTlVN
QkVSOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFwcGVuZFJ1bigpOwotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGlmIChjb250ZXh0KCktPmRpcigpICE9IExlZnRUb1JpZ2h0KSB7
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGNvbnRleHQoKS0+ZGlyKCkgIT0gVV9M
RUZUX1RPX1JJR0hUKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRoZSBu
ZXV0cmFscyB0YWtlIHRoZSBlbWJlZGRpbmcgZGlyZWN0aW9uLCB3aGljaCBpcyBSCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIG1fZW9yID0gbV9sYXN0OwotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBtX2RpcmVjdGlvbiA9IFJpZ2h0VG9MZWZ0OworICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBtX2RpcmVjdGlvbiA9IFVfUklHSFRfVE9fTEVGVDsKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgYXBwZW5kUnVuKCk7CiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAg
ICAgICB9IGVsc2UgaWYgKG1fc3RhdHVzLmVvciA9PSBBcmFiaWNOdW1iZXIpIHsKKyAgICAgICAg
ICAgICAgICAgICAgfSBlbHNlIGlmIChtX3N0YXR1cy5lb3IgPT0gVV9BUkFCSUNfTlVNQkVSKSB7
CiAgICAgICAgICAgICAgICAgICAgICAgICAvLyBBcmFiaWMgbnVtYmVycyBhcmUgYWx3YXlzIG9u
IGEgaGlnaGVyIGVtYmVkZGluZyBsZXZlbCwgc28gbGV0J3MgY2xvc2UgdGhhdCBydW4KLSAgICAg
ICAgICAgICAgICAgICAgICAgIG1fZGlyZWN0aW9uID0gQXJhYmljTnVtYmVyOworICAgICAgICAg
ICAgICAgICAgICAgICAgbV9kaXJlY3Rpb24gPSBVX0FSQUJJQ19OVU1CRVI7CiAgICAgICAgICAg
ICAgICAgICAgICAgICBhcHBlbmRSdW4oKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIChj
b250ZXh0KCktPmRpcigpICE9IExlZnRUb1JpZ2h0KSB7CisgICAgICAgICAgICAgICAgICAgICAg
ICBpZiAoY29udGV4dCgpLT5kaXIoKSAhPSBVX0xFRlRfVE9fUklHSFQpIHsKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAvLyB0aGUgbmV1dHJhbHMgdGFrZSB0aGUgZW1iZWRkaW5nIGRpcmVj
dGlvbiwgd2hpY2ggaXMgUgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fZW9yID0gbV9s
YXN0OwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fZGlyZWN0aW9uID0gUmlnaHRUb0xl
ZnQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9kaXJlY3Rpb24gPSBVX1JJR0hUX1RP
X0xFRlQ7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXBwZW5kUnVuKCk7CiAgICAgICAg
ICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAobV9zdGF0
dXMubGFzdFN0cm9uZyAhPSBMZWZ0VG9SaWdodCkgeworICAgICAgICAgICAgICAgICAgICB9IGVs
c2UgaWYgKG1fc3RhdHVzLmxhc3RTdHJvbmcgIT0gVV9MRUZUX1RPX1JJR0hUKSB7CiAgICAgICAg
ICAgICAgICAgICAgICAgICAvL2xhc3Qgc3R1ZmYgdGFrZXMgZW1iZWRkaW5nIGRpcgotICAgICAg
ICAgICAgICAgICAgICAgICAgaWYgKGNvbnRleHQoKS0+ZGlyKCkgPT0gUmlnaHRUb0xlZnQpIHsK
KyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjb250ZXh0KCktPmRpcigpID09IFVfUklHSFRf
VE9fTEVGVCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fZW9yID0gbV9sYXN0OyAK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX2RpcmVjdGlvbiA9IFJpZ2h0VG9MZWZ0Owor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fZGlyZWN0aW9uID0gVV9SSUdIVF9UT19MRUZU
OwogICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgYXBw
ZW5kUnVuKCk7CiAgICAgICAgICAgICAgICAgICAgIH0KQEAgLTY2NCwzNiArNjUyLDM2IEBAIHZv
aWQgQmlkaVJlc29sdmVyPEl0ZXJhdG9yLCBSdW4+OjpjcmVhdGVCaWRpUnVuc0ZvckxpbmUoY29u
c3QgSXRlcmF0b3ImIGVuZCwgVmlzCiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICAgICAgfQogICAgICAgICAgICAgbV9lb3IgPSBtX2N1cnJlbnQ7Ci0gICAgICAgICAgICBtX3N0
YXR1cy5lb3IgPSBMZWZ0VG9SaWdodDsKLSAgICAgICAgICAgIG1fc3RhdHVzLmxhc3RTdHJvbmcg
PSBMZWZ0VG9SaWdodDsKLSAgICAgICAgICAgIG1fZGlyZWN0aW9uID0gTGVmdFRvUmlnaHQ7Cisg
ICAgICAgICAgICBtX3N0YXR1cy5lb3IgPSBVX0xFRlRfVE9fUklHSFQ7CisgICAgICAgICAgICBt
X3N0YXR1cy5sYXN0U3Ryb25nID0gVV9MRUZUX1RPX1JJR0hUOworICAgICAgICAgICAgbV9kaXJl
Y3Rpb24gPSBVX0xFRlRfVE9fUklHSFQ7CiAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2Fz
ZSBSaWdodFRvTGVmdEFyYWJpYzoKLSAgICAgICAgY2FzZSBSaWdodFRvTGVmdDoKKyAgICAgICAg
Y2FzZSBVX1JJR0hUX1RPX0xFRlRfQVJBQklDOgorICAgICAgICBjYXNlIFVfUklHSFRfVE9fTEVG
VDoKICAgICAgICAgICAgIHN3aXRjaCAobV9zdGF0dXMubGFzdCkgewotICAgICAgICAgICAgICAg
IGNhc2UgTGVmdFRvUmlnaHQ6Ci0gICAgICAgICAgICAgICAgY2FzZSBFdXJvcGVhbk51bWJlcjoK
LSAgICAgICAgICAgICAgICBjYXNlIEFyYWJpY051bWJlcjoKKyAgICAgICAgICAgICAgICBjYXNl
IFVfTEVGVF9UT19SSUdIVDoKKyAgICAgICAgICAgICAgICBjYXNlIFVfRVVST1BFQU5fTlVNQkVS
OgorICAgICAgICAgICAgICAgIGNhc2UgVV9BUkFCSUNfTlVNQkVSOgogICAgICAgICAgICAgICAg
ICAgICBhcHBlbmRSdW4oKTsKLSAgICAgICAgICAgICAgICBjYXNlIFJpZ2h0VG9MZWZ0OgotICAg
ICAgICAgICAgICAgIGNhc2UgUmlnaHRUb0xlZnRBcmFiaWM6CisgICAgICAgICAgICAgICAgY2Fz
ZSBVX1JJR0hUX1RPX0xFRlQ6CisgICAgICAgICAgICAgICAgY2FzZSBVX1JJR0hUX1RPX0xFRlRf
QVJBQklDOgogICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICBjYXNl
IEV1cm9wZWFuTnVtYmVyU2VwYXJhdG9yOgotICAgICAgICAgICAgICAgIGNhc2UgRXVyb3BlYW5O
dW1iZXJUZXJtaW5hdG9yOgotICAgICAgICAgICAgICAgIGNhc2UgQ29tbW9uTnVtYmVyU2VwYXJh
dG9yOgotICAgICAgICAgICAgICAgIGNhc2UgQm91bmRhcnlOZXV0cmFsOgotICAgICAgICAgICAg
ICAgIGNhc2UgQmxvY2tTZXBhcmF0b3I6Ci0gICAgICAgICAgICAgICAgY2FzZSBTZWdtZW50U2Vw
YXJhdG9yOgotICAgICAgICAgICAgICAgIGNhc2UgV2hpdGVTcGFjZU5ldXRyYWw6Ci0gICAgICAg
ICAgICAgICAgY2FzZSBPdGhlck5ldXRyYWw6Ci0gICAgICAgICAgICAgICAgICAgIGlmIChtX3N0
YXR1cy5lb3IgPT0gRXVyb3BlYW5OdW1iZXIpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGlm
IChtX3N0YXR1cy5sYXN0U3Ryb25nID09IExlZnRUb1JpZ2h0ICYmIGNvbnRleHQoKS0+ZGlyKCkg
PT0gTGVmdFRvUmlnaHQpCisgICAgICAgICAgICAgICAgY2FzZSBVX0VVUk9QRUFOX05VTUJFUl9T
RVBBUkFUT1I6CisgICAgICAgICAgICAgICAgY2FzZSBVX0VVUk9QRUFOX05VTUJFUl9URVJNSU5B
VE9SOgorICAgICAgICAgICAgICAgIGNhc2UgVV9DT01NT05fTlVNQkVSX1NFUEFSQVRPUjoKKyAg
ICAgICAgICAgICAgICBjYXNlIFVfQk9VTkRBUllfTkVVVFJBTDoKKyAgICAgICAgICAgICAgICBj
YXNlIFVfQkxPQ0tfU0VQQVJBVE9SOgorICAgICAgICAgICAgICAgIGNhc2UgVV9TRUdNRU5UX1NF
UEFSQVRPUjoKKyAgICAgICAgICAgICAgICBjYXNlIFVfV0hJVEVfU1BBQ0VfTkVVVFJBTDoKKyAg
ICAgICAgICAgICAgICBjYXNlIFVfT1RIRVJfTkVVVFJBTDoKKyAgICAgICAgICAgICAgICAgICAg
aWYgKG1fc3RhdHVzLmVvciA9PSBVX0VVUk9QRUFOX05VTUJFUikgeworICAgICAgICAgICAgICAg
ICAgICAgICAgaWYgKG1fc3RhdHVzLmxhc3RTdHJvbmcgPT0gVV9MRUZUX1RPX1JJR0hUICYmIGNv
bnRleHQoKS0+ZGlyKCkgPT0gVV9MRUZUX1RPX1JJR0hUKQogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIG1fZW9yID0gbV9sYXN0OwogICAgICAgICAgICAgICAgICAgICAgICAgYXBwZW5kUnVu
KCk7Ci0gICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAobV9zdGF0dXMuZW9yID09IEFyYWJp
Y051bWJlcikKKyAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChtX3N0YXR1cy5lb3IgPT0g
VV9BUkFCSUNfTlVNQkVSKQogICAgICAgICAgICAgICAgICAgICAgICAgYXBwZW5kUnVuKCk7Ci0g
ICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKG1fc3RhdHVzLmxhc3RTdHJvbmcgPT0gTGVmdFRv
UmlnaHQpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjb250ZXh0KCktPmRpcigpID09
IExlZnRUb1JpZ2h0KQorICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIChtX3N0YXR1cy5sYXN0
U3Ryb25nID09IFVfTEVGVF9UT19SSUdIVCkgeworICAgICAgICAgICAgICAgICAgICAgICAgaWYg
KGNvbnRleHQoKS0+ZGlyKCkgPT0gVV9MRUZUX1RPX1JJR0hUKQogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIG1fZW9yID0gbV9sYXN0OwogICAgICAgICAgICAgICAgICAgICAgICAgYXBwZW5k
UnVuKCk7CiAgICAgICAgICAgICAgICAgICAgIH0KQEAgLTcwMSwxNDggKzY4OSwxNDggQEAgdm9p
ZCBCaWRpUmVzb2x2ZXI8SXRlcmF0b3IsIFJ1bj46OmNyZWF0ZUJpZGlSdW5zRm9yTGluZShjb25z
dCBJdGVyYXRvciYgZW5kLCBWaXMKICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
ICAgICB9CiAgICAgICAgICAgICBtX2VvciA9IG1fY3VycmVudDsKLSAgICAgICAgICAgIG1fc3Rh
dHVzLmVvciA9IFJpZ2h0VG9MZWZ0OworICAgICAgICAgICAgbV9zdGF0dXMuZW9yID0gVV9SSUdI
VF9UT19MRUZUOwogICAgICAgICAgICAgbV9zdGF0dXMubGFzdFN0cm9uZyA9IGRpckN1cnJlbnQ7
Ci0gICAgICAgICAgICBtX2RpcmVjdGlvbiA9IFJpZ2h0VG9MZWZ0OworICAgICAgICAgICAgbV9k
aXJlY3Rpb24gPSBVX1JJR0hUX1RPX0xFRlQ7CiAgICAgICAgICAgICBicmVhazsKIAogICAgICAg
ICAgICAgLy8gd2VhayB0eXBlczoKIAotICAgICAgICBjYXNlIEV1cm9wZWFuTnVtYmVyOgotICAg
ICAgICAgICAgaWYgKG1fc3RhdHVzLmxhc3RTdHJvbmcgIT0gUmlnaHRUb0xlZnRBcmFiaWMpIHsK
KyAgICAgICAgY2FzZSBVX0VVUk9QRUFOX05VTUJFUjoKKyAgICAgICAgICAgIGlmIChtX3N0YXR1
cy5sYXN0U3Ryb25nICE9IFVfUklHSFRfVE9fTEVGVF9BUkFCSUMpIHsKICAgICAgICAgICAgICAg
ICAvLyBpZiBsYXN0IHN0cm9uZyB3YXMgQUwgY2hhbmdlIEVOIHRvIEFOCiAgICAgICAgICAgICAg
ICAgc3dpdGNoIChtX3N0YXR1cy5sYXN0KSB7Ci0gICAgICAgICAgICAgICAgICAgIGNhc2UgRXVy
b3BlYW5OdW1iZXI6Ci0gICAgICAgICAgICAgICAgICAgIGNhc2UgTGVmdFRvUmlnaHQ6CisgICAg
ICAgICAgICAgICAgICAgIGNhc2UgVV9FVVJPUEVBTl9OVU1CRVI6CisgICAgICAgICAgICAgICAg
ICAgIGNhc2UgVV9MRUZUX1RPX1JJR0hUOgogICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7
Ci0gICAgICAgICAgICAgICAgICAgIGNhc2UgUmlnaHRUb0xlZnQ6Ci0gICAgICAgICAgICAgICAg
ICAgIGNhc2UgUmlnaHRUb0xlZnRBcmFiaWM6Ci0gICAgICAgICAgICAgICAgICAgIGNhc2UgQXJh
YmljTnVtYmVyOgorICAgICAgICAgICAgICAgICAgICBjYXNlIFVfUklHSFRfVE9fTEVGVDoKKyAg
ICAgICAgICAgICAgICAgICAgY2FzZSBVX1JJR0hUX1RPX0xFRlRfQVJBQklDOgorICAgICAgICAg
ICAgICAgICAgICBjYXNlIFVfQVJBQklDX05VTUJFUjoKICAgICAgICAgICAgICAgICAgICAgICAg
IG1fZW9yID0gbV9sYXN0OwogICAgICAgICAgICAgICAgICAgICAgICAgYXBwZW5kUnVuKCk7Ci0g
ICAgICAgICAgICAgICAgICAgICAgICBtX2RpcmVjdGlvbiA9IEV1cm9wZWFuTnVtYmVyOworICAg
ICAgICAgICAgICAgICAgICAgICAgbV9kaXJlY3Rpb24gPSBVX0VVUk9QRUFOX05VTUJFUjsKICAg
ICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgICAgICBjYXNlIEV1
cm9wZWFuTnVtYmVyU2VwYXJhdG9yOgotICAgICAgICAgICAgICAgICAgICBjYXNlIENvbW1vbk51
bWJlclNlcGFyYXRvcjoKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIChtX3N0YXR1cy5lb3Ig
PT0gRXVyb3BlYW5OdW1iZXIpCisgICAgICAgICAgICAgICAgICAgIGNhc2UgVV9FVVJPUEVBTl9O
VU1CRVJfU0VQQVJBVE9SOgorICAgICAgICAgICAgICAgICAgICBjYXNlIFVfQ09NTU9OX05VTUJF
Ul9TRVBBUkFUT1I6CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAobV9zdGF0dXMuZW9yID09
IFVfRVVST1BFQU5fTlVNQkVSKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwot
ICAgICAgICAgICAgICAgICAgICBjYXNlIEV1cm9wZWFuTnVtYmVyVGVybWluYXRvcjoKLSAgICAg
ICAgICAgICAgICAgICAgY2FzZSBCb3VuZGFyeU5ldXRyYWw6Ci0gICAgICAgICAgICAgICAgICAg
IGNhc2UgQmxvY2tTZXBhcmF0b3I6Ci0gICAgICAgICAgICAgICAgICAgIGNhc2UgU2VnbWVudFNl
cGFyYXRvcjoKLSAgICAgICAgICAgICAgICAgICAgY2FzZSBXaGl0ZVNwYWNlTmV1dHJhbDoKLSAg
ICAgICAgICAgICAgICAgICAgY2FzZSBPdGhlck5ldXRyYWw6Ci0gICAgICAgICAgICAgICAgICAg
ICAgICBpZiAobV9zdGF0dXMuZW9yID09IEV1cm9wZWFuTnVtYmVyKSB7Ci0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgaWYgKG1fc3RhdHVzLmxhc3RTdHJvbmcgPT0gUmlnaHRUb0xlZnQpIHsK
KyAgICAgICAgICAgICAgICAgICAgY2FzZSBVX0VVUk9QRUFOX05VTUJFUl9URVJNSU5BVE9SOgor
ICAgICAgICAgICAgICAgICAgICBjYXNlIFVfQk9VTkRBUllfTkVVVFJBTDoKKyAgICAgICAgICAg
ICAgICAgICAgY2FzZSBVX0JMT0NLX1NFUEFSQVRPUjoKKyAgICAgICAgICAgICAgICAgICAgY2Fz
ZSBVX1NFR01FTlRfU0VQQVJBVE9SOgorICAgICAgICAgICAgICAgICAgICBjYXNlIFVfV0hJVEVf
U1BBQ0VfTkVVVFJBTDoKKyAgICAgICAgICAgICAgICAgICAgY2FzZSBVX09USEVSX05FVVRSQUw6
CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAobV9zdGF0dXMuZW9yID09IFVfRVVST1BFQU5f
TlVNQkVSKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG1fc3RhdHVzLmxhc3RT
dHJvbmcgPT0gVV9SSUdIVF9UT19MRUZUKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIC8vIEVOcyBvbiBib3RoIHNpZGVzIGJlaGF2ZSBsaWtlIFJzLCBzbyB0aGUgbmV1dHJhbHMg
c2hvdWxkIGJlIFIuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFRlcm1pbmF0
ZSB0aGUgRU4gcnVuLgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcHBlbmRSdW4o
KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gTWFrZSBhbiBSIHJ1bi4KLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9lb3IgPSBtX3N0YXR1cy5sYXN0ID09IEV1
cm9wZWFuTnVtYmVyVGVybWluYXRvciA/IG1fbGFzdEJlZm9yZUVUIDogbV9sYXN0OwotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBtX2RpcmVjdGlvbiA9IFJpZ2h0VG9MZWZ0OworICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX2VvciA9IG1fc3RhdHVzLmxhc3QgPT0gVV9F
VVJPUEVBTl9OVU1CRVJfVEVSTUlOQVRPUiA/IG1fbGFzdEJlZm9yZUVUIDogbV9sYXN0OworICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX2RpcmVjdGlvbiA9IFVfUklHSFRfVE9fTEVG
VDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXBwZW5kUnVuKCk7CiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEJlZ2luIGEgbmV3IEVOIHJ1bi4KLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgbV9kaXJlY3Rpb24gPSBFdXJvcGVhbk51bWJlcjsKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9kaXJlY3Rpb24gPSBVX0VVUk9QRUFOX05V
TUJFUjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAg
ICAgICB9IGVsc2UgaWYgKG1fc3RhdHVzLmVvciA9PSBBcmFiaWNOdW1iZXIpIHsKKyAgICAgICAg
ICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAobV9zdGF0dXMuZW9yID09IFVfQVJBQklDX05VTUJF
UikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFRlcm1pbmF0ZSB0aGUgQU4gcnVu
LgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFwcGVuZFJ1bigpOwotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGlmIChtX3N0YXR1cy5sYXN0U3Ryb25nID09IFJpZ2h0VG9MZWZ0IHx8
IGNvbnRleHQoKS0+ZGlyKCkgPT0gUmlnaHRUb0xlZnQpIHsKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBpZiAobV9zdGF0dXMubGFzdFN0cm9uZyA9PSBVX1JJR0hUX1RPX0xFRlQgfHwgY29u
dGV4dCgpLT5kaXIoKSA9PSBVX1JJR0hUX1RPX0xFRlQpIHsKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgLy8gTWFrZSBhbiBSIHJ1bi4KLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgbV9lb3IgPSBtX3N0YXR1cy5sYXN0ID09IEV1cm9wZWFuTnVtYmVyVGVybWluYXRvciA/
IG1fbGFzdEJlZm9yZUVUIDogbV9sYXN0OwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBtX2RpcmVjdGlvbiA9IFJpZ2h0VG9MZWZ0OworICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBtX2VvciA9IG1fc3RhdHVzLmxhc3QgPT0gVV9FVVJPUEVBTl9OVU1CRVJfVEVSTUlOQVRP
UiA/IG1fbGFzdEJlZm9yZUVUIDogbV9sYXN0OworICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBtX2RpcmVjdGlvbiA9IFVfUklHSFRfVE9fTEVGVDsKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgYXBwZW5kUnVuKCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IC8vIEJlZ2luIGEgbmV3IEVOIHJ1bi4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
bV9kaXJlY3Rpb24gPSBFdXJvcGVhbk51bWJlcjsKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgbV9kaXJlY3Rpb24gPSBVX0VVUk9QRUFOX05VTUJFUjsKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKG1fc3RhdHVz
Lmxhc3RTdHJvbmcgPT0gUmlnaHRUb0xlZnQpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0g
ZWxzZSBpZiAobV9zdGF0dXMubGFzdFN0cm9uZyA9PSBVX1JJR0hUX1RPX0xFRlQpIHsKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAvLyBFeHRlbmQgdGhlIFIgcnVuIHRvIGluY2x1ZGUgdGhl
IG5ldXRyYWxzLgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fZW9yID0gbV9zdGF0dXMu
bGFzdCA9PSBFdXJvcGVhbk51bWJlclRlcm1pbmF0b3IgPyBtX2xhc3RCZWZvcmVFVCA6IG1fbGFz
dDsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX2RpcmVjdGlvbiA9IFJpZ2h0VG9MZWZ0
OworICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fZW9yID0gbV9zdGF0dXMubGFzdCA9PSBV
X0VVUk9QRUFOX05VTUJFUl9URVJNSU5BVE9SID8gbV9sYXN0QmVmb3JlRVQgOiBtX2xhc3Q7Cisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9kaXJlY3Rpb24gPSBVX1JJR0hUX1RPX0xFRlQ7
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXBwZW5kUnVuKCk7CiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgLy8gQmVnaW4gYSBuZXcgRU4gcnVuLgotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIG1fZGlyZWN0aW9uID0gRXVyb3BlYW5OdW1iZXI7CisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgbV9kaXJlY3Rpb24gPSBVX0VVUk9QRUFOX05VTUJFUjsKICAgICAgICAgICAg
ICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAg
ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBt
X2VvciA9IG1fY3VycmVudDsKLSAgICAgICAgICAgICAgICBtX3N0YXR1cy5lb3IgPSBFdXJvcGVh
bk51bWJlcjsKLSAgICAgICAgICAgICAgICBpZiAobV9kaXJlY3Rpb24gPT0gT3RoZXJOZXV0cmFs
KQotICAgICAgICAgICAgICAgICAgICBtX2RpcmVjdGlvbiA9IExlZnRUb1JpZ2h0OworICAgICAg
ICAgICAgICAgIG1fc3RhdHVzLmVvciA9IFVfRVVST1BFQU5fTlVNQkVSOworICAgICAgICAgICAg
ICAgIGlmIChtX2RpcmVjdGlvbiA9PSBVX09USEVSX05FVVRSQUwpCisgICAgICAgICAgICAgICAg
ICAgIG1fZGlyZWN0aW9uID0gVV9MRUZUX1RPX1JJR0hUOwogICAgICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICAgICAgfQotICAgICAgICBjYXNlIEFyYWJpY051bWJlcjoKLSAgICAgICAgICAg
IGRpckN1cnJlbnQgPSBBcmFiaWNOdW1iZXI7CisgICAgICAgIGNhc2UgVV9BUkFCSUNfTlVNQkVS
OgorICAgICAgICAgICAgZGlyQ3VycmVudCA9IFVfQVJBQklDX05VTUJFUjsKICAgICAgICAgICAg
IHN3aXRjaCAobV9zdGF0dXMubGFzdCkgewotICAgICAgICAgICAgICAgIGNhc2UgTGVmdFRvUmln
aHQ6Ci0gICAgICAgICAgICAgICAgICAgIGlmIChjb250ZXh0KCktPmRpcigpID09IExlZnRUb1Jp
Z2h0KQorICAgICAgICAgICAgICAgIGNhc2UgVV9MRUZUX1RPX1JJR0hUOgorICAgICAgICAgICAg
ICAgICAgICBpZiAoY29udGV4dCgpLT5kaXIoKSA9PSBVX0xFRlRfVE9fUklHSFQpCiAgICAgICAg
ICAgICAgICAgICAgICAgICBhcHBlbmRSdW4oKTsKICAgICAgICAgICAgICAgICAgICAgYnJlYWs7
Ci0gICAgICAgICAgICAgICAgY2FzZSBBcmFiaWNOdW1iZXI6CisgICAgICAgICAgICAgICAgY2Fz
ZSBVX0FSQUJJQ19OVU1CRVI6CiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAg
ICAgICAgIGNhc2UgUmlnaHRUb0xlZnQ6Ci0gICAgICAgICAgICAgICAgY2FzZSBSaWdodFRvTGVm
dEFyYWJpYzoKLSAgICAgICAgICAgICAgICBjYXNlIEV1cm9wZWFuTnVtYmVyOgorICAgICAgICAg
ICAgICAgIGNhc2UgVV9SSUdIVF9UT19MRUZUOgorICAgICAgICAgICAgICAgIGNhc2UgVV9SSUdI
VF9UT19MRUZUX0FSQUJJQzoKKyAgICAgICAgICAgICAgICBjYXNlIFVfRVVST1BFQU5fTlVNQkVS
OgogICAgICAgICAgICAgICAgICAgICBtX2VvciA9IG1fbGFzdDsKICAgICAgICAgICAgICAgICAg
ICAgYXBwZW5kUnVuKCk7CiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAg
ICAgIGNhc2UgQ29tbW9uTnVtYmVyU2VwYXJhdG9yOgotICAgICAgICAgICAgICAgICAgICBpZiAo
bV9zdGF0dXMuZW9yID09IEFyYWJpY051bWJlcikKKyAgICAgICAgICAgICAgICBjYXNlIFVfQ09N
TU9OX05VTUJFUl9TRVBBUkFUT1I6CisgICAgICAgICAgICAgICAgICAgIGlmIChtX3N0YXR1cy5l
b3IgPT0gVV9BUkFCSUNfTlVNQkVSKQogICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0g
ICAgICAgICAgICAgICAgY2FzZSBFdXJvcGVhbk51bWJlclNlcGFyYXRvcjoKLSAgICAgICAgICAg
ICAgICBjYXNlIEV1cm9wZWFuTnVtYmVyVGVybWluYXRvcjoKLSAgICAgICAgICAgICAgICBjYXNl
IEJvdW5kYXJ5TmV1dHJhbDoKLSAgICAgICAgICAgICAgICBjYXNlIEJsb2NrU2VwYXJhdG9yOgot
ICAgICAgICAgICAgICAgIGNhc2UgU2VnbWVudFNlcGFyYXRvcjoKLSAgICAgICAgICAgICAgICBj
YXNlIFdoaXRlU3BhY2VOZXV0cmFsOgotICAgICAgICAgICAgICAgIGNhc2UgT3RoZXJOZXV0cmFs
OgotICAgICAgICAgICAgICAgICAgICBpZiAobV9zdGF0dXMuZW9yID09IEFyYWJpY051bWJlcgot
ICAgICAgICAgICAgICAgICAgICAgICAgfHwgKG1fc3RhdHVzLmVvciA9PSBFdXJvcGVhbk51bWJl
ciAmJiAobV9zdGF0dXMubGFzdFN0cm9uZyA9PSBSaWdodFRvTGVmdCB8fCBjb250ZXh0KCktPmRp
cigpID09IFJpZ2h0VG9MZWZ0KSkKLSAgICAgICAgICAgICAgICAgICAgICAgIHx8IChtX3N0YXR1
cy5lb3IgIT0gRXVyb3BlYW5OdW1iZXIgJiYgbV9zdGF0dXMubGFzdFN0cm9uZyA9PSBMZWZ0VG9S
aWdodCAmJiBjb250ZXh0KCktPmRpcigpID09IFJpZ2h0VG9MZWZ0KSkgeworICAgICAgICAgICAg
ICAgIGNhc2UgVV9FVVJPUEVBTl9OVU1CRVJfU0VQQVJBVE9SOgorICAgICAgICAgICAgICAgIGNh
c2UgVV9FVVJPUEVBTl9OVU1CRVJfVEVSTUlOQVRPUjoKKyAgICAgICAgICAgICAgICBjYXNlIFVf
Qk9VTkRBUllfTkVVVFJBTDoKKyAgICAgICAgICAgICAgICBjYXNlIFVfQkxPQ0tfU0VQQVJBVE9S
OgorICAgICAgICAgICAgICAgIGNhc2UgVV9TRUdNRU5UX1NFUEFSQVRPUjoKKyAgICAgICAgICAg
ICAgICBjYXNlIFVfV0hJVEVfU1BBQ0VfTkVVVFJBTDoKKyAgICAgICAgICAgICAgICBjYXNlIFVf
T1RIRVJfTkVVVFJBTDoKKyAgICAgICAgICAgICAgICAgICAgaWYgKG1fc3RhdHVzLmVvciA9PSBV
X0FSQUJJQ19OVU1CRVIKKyAgICAgICAgICAgICAgICAgICAgICAgIHx8IChtX3N0YXR1cy5lb3Ig
PT0gVV9FVVJPUEVBTl9OVU1CRVIgJiYgKG1fc3RhdHVzLmxhc3RTdHJvbmcgPT0gVV9SSUdIVF9U
T19MRUZUIHx8IGNvbnRleHQoKS0+ZGlyKCkgPT0gVV9SSUdIVF9UT19MRUZUKSkKKyAgICAgICAg
ICAgICAgICAgICAgICAgIHx8IChtX3N0YXR1cy5lb3IgIT0gVV9FVVJPUEVBTl9OVU1CRVIgJiYg
bV9zdGF0dXMubGFzdFN0cm9uZyA9PSBVX0xFRlRfVE9fUklHSFQgJiYgY29udGV4dCgpLT5kaXIo
KSA9PSBVX1JJR0hUX1RPX0xFRlQpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAvLyBUZXJt
aW5hdGUgdGhlIHJ1biBiZWZvcmUgdGhlIG5ldXRyYWxzLgogICAgICAgICAgICAgICAgICAgICAg
ICAgYXBwZW5kUnVuKCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAvLyBCZWdpbiBhbiBSIHJ1
biBmb3IgdGhlIG5ldXRyYWxzLgotICAgICAgICAgICAgICAgICAgICAgICAgbV9kaXJlY3Rpb24g
PSBSaWdodFRvTGVmdDsKLSAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChtX2RpcmVjdGlv
biA9PSBPdGhlck5ldXRyYWwpCi0gICAgICAgICAgICAgICAgICAgICAgICBtX2RpcmVjdGlvbiA9
IG1fc3RhdHVzLmxhc3RTdHJvbmcgPT0gTGVmdFRvUmlnaHQgPyBMZWZ0VG9SaWdodCA6IFJpZ2h0
VG9MZWZ0OworICAgICAgICAgICAgICAgICAgICAgICAgbV9kaXJlY3Rpb24gPSBVX1JJR0hUX1RP
X0xFRlQ7CisgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAobV9kaXJlY3Rpb24gPT0gVV9P
VEhFUl9ORVVUUkFMKQorICAgICAgICAgICAgICAgICAgICAgICAgbV9kaXJlY3Rpb24gPSBtX3N0
YXR1cy5sYXN0U3Ryb25nID09IFVfTEVGVF9UT19SSUdIVCA/IFVfTEVGVF9UT19SSUdIVCA6IFVf
UklHSFRfVE9fTEVGVDsKICAgICAgICAgICAgICAgICAgICAgbV9lb3IgPSBtX2xhc3Q7CiAgICAg
ICAgICAgICAgICAgICAgIGFwcGVuZFJ1bigpOwogICAgICAgICAgICAgICAgIGRlZmF1bHQ6CiAg
ICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgbV9l
b3IgPSBtX2N1cnJlbnQ7Ci0gICAgICAgICAgICBtX3N0YXR1cy5lb3IgPSBBcmFiaWNOdW1iZXI7
Ci0gICAgICAgICAgICBpZiAobV9kaXJlY3Rpb24gPT0gT3RoZXJOZXV0cmFsKQotICAgICAgICAg
ICAgICAgIG1fZGlyZWN0aW9uID0gQXJhYmljTnVtYmVyOworICAgICAgICAgICAgbV9zdGF0dXMu
ZW9yID0gVV9BUkFCSUNfTlVNQkVSOworICAgICAgICAgICAgaWYgKG1fZGlyZWN0aW9uID09IFVf
T1RIRVJfTkVVVFJBTCkKKyAgICAgICAgICAgICAgICBtX2RpcmVjdGlvbiA9IFVfQVJBQklDX05V
TUJFUjsKICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIEV1cm9wZWFuTnVtYmVyU2Vw
YXJhdG9yOgotICAgICAgICBjYXNlIENvbW1vbk51bWJlclNlcGFyYXRvcjoKKyAgICAgICAgY2Fz
ZSBVX0VVUk9QRUFOX05VTUJFUl9TRVBBUkFUT1I6CisgICAgICAgIGNhc2UgVV9DT01NT05fTlVN
QkVSX1NFUEFSQVRPUjoKICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIEV1cm9wZWFu
TnVtYmVyVGVybWluYXRvcjoKLSAgICAgICAgICAgIGlmIChtX3N0YXR1cy5sYXN0ID09IEV1cm9w
ZWFuTnVtYmVyKSB7Ci0gICAgICAgICAgICAgICAgZGlyQ3VycmVudCA9IEV1cm9wZWFuTnVtYmVy
OworICAgICAgICBjYXNlIFVfRVVST1BFQU5fTlVNQkVSX1RFUk1JTkFUT1I6CisgICAgICAgICAg
ICBpZiAobV9zdGF0dXMubGFzdCA9PSBVX0VVUk9QRUFOX05VTUJFUikgeworICAgICAgICAgICAg
ICAgIGRpckN1cnJlbnQgPSBVX0VVUk9QRUFOX05VTUJFUjsKICAgICAgICAgICAgICAgICBtX2Vv
ciA9IG1fY3VycmVudDsKICAgICAgICAgICAgICAgICBtX3N0YXR1cy5lb3IgPSBkaXJDdXJyZW50
OwotICAgICAgICAgICAgfSBlbHNlIGlmIChtX3N0YXR1cy5sYXN0ICE9IEV1cm9wZWFuTnVtYmVy
VGVybWluYXRvcikKKyAgICAgICAgICAgIH0gZWxzZSBpZiAobV9zdGF0dXMubGFzdCAhPSBVX0VV
Uk9QRUFOX05VTUJFUl9URVJNSU5BVE9SKQogICAgICAgICAgICAgICAgIG1fbGFzdEJlZm9yZUVU
ID0gbV9lbXB0eVJ1biA/IG1fZW9yIDogbV9sYXN0OwogICAgICAgICAgICAgYnJlYWs7CiAKICAg
ICAgICAgLy8gYm91bmRhcnkgbmV1dHJhbHMgc2hvdWxkIGJlIGlnbm9yZWQKLSAgICAgICAgY2Fz
ZSBCb3VuZGFyeU5ldXRyYWw6CisgICAgICAgIGNhc2UgVV9CT1VOREFSWV9ORVVUUkFMOgogICAg
ICAgICAgICAgaWYgKG1fZW9yID09IG1fbGFzdCkKICAgICAgICAgICAgICAgICBtX2VvciA9IG1f
Y3VycmVudDsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgLy8gbmV1dHJhbHMKLSAg
ICAgICAgY2FzZSBCbG9ja1NlcGFyYXRvcjoKLSAgICAgICAgICAgIC8vICMjIyB3aGF0IGRvIHdl
IGRvIHdpdGggbmV3bGluZSBhbmQgcGFyYWdyYXBoIHNlcGVyYXRvcnMgdGhhdCBjb21lIHRvIGhl
cmU/CisgICAgICAgIGNhc2UgVV9CTE9DS19TRVBBUkFUT1I6CisgICAgICAgICAgICAvLyBGSVhN
RTogV2hhdCBkbyB3ZSBkbyB3aXRoIG5ld2xpbmUgYW5kIHBhcmFncmFwaCBzZXBhcmF0b3JzIHRo
YXQgY29tZSB0byBoZXJlPwogICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgU2VnbWVu
dFNlcGFyYXRvcjoKLSAgICAgICAgICAgIC8vICMjIyBpbXBsZW1lbnQgcnVsZSBMMQorICAgICAg
ICBjYXNlIFVfU0VHTUVOVF9TRVBBUkFUT1I6CisgICAgICAgICAgICAvLyBGSVhNRTogSW1wbGVt
ZW50IHJ1bGUgTDEuCiAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBXaGl0ZVNwYWNl
TmV1dHJhbDoKKyAgICAgICAgY2FzZSBVX1dISVRFX1NQQUNFX05FVVRSQUw6CiAgICAgICAgICAg
ICBicmVhazsKLSAgICAgICAgY2FzZSBPdGhlck5ldXRyYWw6CisgICAgICAgIGNhc2UgVV9PVEhF
Ul9ORVVUUkFMOgogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAg
ICAgICBicmVhazsKQEAgLTg1MiwxMyArODQwLDEzIEBAIHZvaWQgQmlkaVJlc29sdmVyPEl0ZXJh
dG9yLCBSdW4+OjpjcmVhdGVCaWRpUnVuc0ZvckxpbmUoY29uc3QgSXRlcmF0b3ImIGVuZCwgVmlz
CiAgICAgICAgICAgICBpZiAoIW1fcmVhY2hlZEVuZE9mTGluZSkgewogICAgICAgICAgICAgICAg
IG1fZW9yID0gZW5kT2ZMaW5lOwogICAgICAgICAgICAgICAgIHN3aXRjaCAobV9zdGF0dXMuZW9y
KSB7Ci0gICAgICAgICAgICAgICAgICAgIGNhc2UgTGVmdFRvUmlnaHQ6Ci0gICAgICAgICAgICAg
ICAgICAgIGNhc2UgUmlnaHRUb0xlZnQ6Ci0gICAgICAgICAgICAgICAgICAgIGNhc2UgQXJhYmlj
TnVtYmVyOgorICAgICAgICAgICAgICAgICAgICBjYXNlIFVfTEVGVF9UT19SSUdIVDoKKyAgICAg
ICAgICAgICAgICAgICAgY2FzZSBVX1JJR0hUX1RPX0xFRlQ6CisgICAgICAgICAgICAgICAgICAg
IGNhc2UgVV9BUkFCSUNfTlVNQkVSOgogICAgICAgICAgICAgICAgICAgICAgICAgbV9kaXJlY3Rp
b24gPSBtX3N0YXR1cy5lb3I7CiAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAg
ICAgICAgICAgICAgICAgY2FzZSBFdXJvcGVhbk51bWJlcjoKLSAgICAgICAgICAgICAgICAgICAg
ICAgIG1fZGlyZWN0aW9uID0gbV9zdGF0dXMubGFzdFN0cm9uZyA9PSBMZWZ0VG9SaWdodCA/IExl
ZnRUb1JpZ2h0IDogRXVyb3BlYW5OdW1iZXI7CisgICAgICAgICAgICAgICAgICAgIGNhc2UgVV9F
VVJPUEVBTl9OVU1CRVI6CisgICAgICAgICAgICAgICAgICAgICAgICBtX2RpcmVjdGlvbiA9IG1f
c3RhdHVzLmxhc3RTdHJvbmcgPT0gVV9MRUZUX1RPX1JJR0hUID8gVV9MRUZUX1RPX1JJR0hUIDog
VV9FVVJPUEVBTl9OVU1CRVI7CiAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAg
ICAgICAgICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgICAgICAgICAgICAgIEFTU0VSVF9O
T1RfUkVBQ0hFRCgpOwpAQCAtODczLDcgKzg2MSw3IEBAIHZvaWQgQmlkaVJlc29sdmVyPEl0ZXJh
dG9yLCBSdW4+OjpjcmVhdGVCaWRpUnVuc0ZvckxpbmUoY29uc3QgSXRlcmF0b3ImIGVuZCwgVmlz
CiAgICAgICAgICAgICBtX3JlYWNoZWRFbmRPZkxpbmUgPSBzdGF0ZUF0RW5kLm1fcmVhY2hlZEVu
ZE9mTGluZTsKICAgICAgICAgICAgIG1fbGFzdEJlZm9yZUVUID0gc3RhdGVBdEVuZC5tX2xhc3RC
ZWZvcmVFVDsKICAgICAgICAgICAgIG1fZW1wdHlSdW4gPSBzdGF0ZUF0RW5kLm1fZW1wdHlSdW47
Ci0gICAgICAgICAgICBtX2RpcmVjdGlvbiA9IE90aGVyTmV1dHJhbDsKKyAgICAgICAgICAgIG1f
ZGlyZWN0aW9uID0gVV9PVEhFUl9ORVVUUkFMOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
IH0KIApAQCAtODk3LDcgKzg4NSw3IEBAIHZvaWQgQmlkaVJlc29sdmVyPEl0ZXJhdG9yLCBSdW4+
OjpjcmVhdGVCaWRpUnVuc0ZvckxpbmUoY29uc3QgSXRlcmF0b3ImIGVuZCwgVmlzCiAgICAgICAg
ICAgICAgICAgbV9yZWFjaGVkRW5kT2ZMaW5lID0gc3RhdGVBdEVuZC5tX3JlYWNoZWRFbmRPZkxp
bmU7CiAgICAgICAgICAgICAgICAgbV9sYXN0QmVmb3JlRVQgPSBzdGF0ZUF0RW5kLm1fbGFzdEJl
Zm9yZUVUOwogICAgICAgICAgICAgICAgIG1fZW1wdHlSdW4gPSBzdGF0ZUF0RW5kLm1fZW1wdHlS
dW47Ci0gICAgICAgICAgICAgICAgbV9kaXJlY3Rpb24gPSBPdGhlck5ldXRyYWw7CisgICAgICAg
ICAgICAgICAgbV9kaXJlY3Rpb24gPSBVX09USEVSX05FVVRSQUw7CiAgICAgICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL3RleHQvU2VnbWVudGVkU3RyaW5nLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS90ZXh0L1NlZ21lbnRlZFN0cmluZy5oCmluZGV4IGFiZDc5OGFlY2ExN2E5NzYxZjJiMTFk
NWVjMTc5YmE1Yzc0MTg0MmMuLmQ1ZmUzNjdiMzI4OTBkMTIyNzg0NDUwNGQ2NzhjNTdmZmIyOWE5
OWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvU2VnbWVudGVkU3Ry
aW5nLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9TZWdtZW50ZWRTdHJpbmcu
aApAQCAtMjYxLDcgKzI2MSw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgYWR2YW5jZUFuZEFTU0VS
VElnbm9yaW5nQ2FzZShVQ2hhciBleHBlY3RlZENoYXJhY3RlcikKICAgICB7Ci0gICAgICAgIEFT
U0VSVF9VTlVTRUQoZXhwZWN0ZWRDaGFyYWN0ZXIsIFdURjo6VW5pY29kZTo6Zm9sZENhc2UoY3Vy
cmVudENoYXIoKSkgPT0gV1RGOjpVbmljb2RlOjpmb2xkQ2FzZShleHBlY3RlZENoYXJhY3Rlcikp
OworICAgICAgICBBU1NFUlRfVU5VU0VEKGV4cGVjdGVkQ2hhcmFjdGVyLCB1X2ZvbGRDYXNlKGN1
cnJlbnRDaGFyKCksIFVfRk9MRF9DQVNFX0RFRkFVTFQpID09IHVfZm9sZENhc2UoZXhwZWN0ZWRD
aGFyYWN0ZXIsIFVfRk9MRF9DQVNFX0RFRkFVTFQpKTsKICAgICAgICAgYWR2YW5jZSgpOwogICAg
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9UZXh0Qm91bmRh
cmllcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1RleHRCb3VuZGFyaWVzLmNw
cAppbmRleCBjMWY5OTJkYWYwMzIwYmQ2NmM3NWM1ZjcwNzdkM2Y1YWM1MmI4MjM5Li5jNDZmYjg1
Zjk2Yzg2NThmYmQ4OTM0N2Q5M2Q1MGIyYTAyOTY3ZDBjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS90ZXh0L1RleHRCb3VuZGFyaWVzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS90ZXh0L1RleHRCb3VuZGFyaWVzLmNwcApAQCAtMzEsOSArMzEsNiBAQAogI2lu
Y2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0ltcGwuaD4KICNpbmNsdWRlIDx3dGYvdW5pY29kZS9Vbmlj
b2RlLmg+CiAKLXVzaW5nIG5hbWVzcGFjZSBXVEY7Ci11c2luZyBuYW1lc3BhY2UgVW5pY29kZTsK
LQogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBpbnQgZW5kT2ZGaXJzdFdvcmRCb3VuZGFyeUNvbnRl
eHQoY29uc3QgVUNoYXIqIGNoYXJhY3RlcnMsIGludCBsZW5ndGgpCkBAIC02OSw5ICs2Niw4IEBA
IGludCBmaW5kTmV4dFdvcmRGcm9tSW5kZXgoY29uc3QgVUNoYXIqIGNoYXJzLCBpbnQgbGVuLCBp
bnQgcG9zaXRpb24sIGJvb2wgZm9yd2FyCiAgICAgaWYgKGZvcndhcmQpIHsKICAgICAgICAgcG9z
aXRpb24gPSB0ZXh0QnJlYWtGb2xsb3dpbmcoaXQsIHBvc2l0aW9uKTsKICAgICAgICAgd2hpbGUg
KHBvc2l0aW9uICE9IFRleHRCcmVha0RvbmUpIHsKLSAgICAgICAgICAgIC8vIFdlIHN0b3Agc2Vh
cmNoaW5nIHdoZW4gdGhlIGNoYXJhY3RlciBwcmVjZWVkaW5nIHRoZSBicmVhawotICAgICAgICAg
ICAgLy8gaXMgYWxwaGFudW1lcmljLgotICAgICAgICAgICAgaWYgKHBvc2l0aW9uIDwgbGVuICYm
IGlzQWxwaGFudW1lcmljKGNoYXJzW3Bvc2l0aW9uIC0gMV0pKQorICAgICAgICAgICAgLy8gV2Ug
c3RvcCBzZWFyY2hpbmcgd2hlbiB0aGUgY2hhcmFjdGVyIHByZWNlZWRpbmcgdGhlIGJyZWFrIGlz
IGFscGhhbnVtZXJpYy4KKyAgICAgICAgICAgIGlmIChwb3NpdGlvbiA8IGxlbiAmJiB1X2lzYWxu
dW0oY2hhcnNbcG9zaXRpb24gLSAxXSkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIHBvc2l0aW9u
OwogCiAgICAgICAgICAgICBwb3NpdGlvbiA9IHRleHRCcmVha0ZvbGxvd2luZyhpdCwgcG9zaXRp
b24pOwpAQCAtODEsOSArNzcsOCBAQCBpbnQgZmluZE5leHRXb3JkRnJvbUluZGV4KGNvbnN0IFVD
aGFyKiBjaGFycywgaW50IGxlbiwgaW50IHBvc2l0aW9uLCBib29sIGZvcndhcgogICAgIH0gZWxz
ZSB7CiAgICAgICAgIHBvc2l0aW9uID0gdGV4dEJyZWFrUHJlY2VkaW5nKGl0LCBwb3NpdGlvbik7
CiAgICAgICAgIHdoaWxlIChwb3NpdGlvbiAhPSBUZXh0QnJlYWtEb25lKSB7Ci0gICAgICAgICAg
ICAvLyBXZSBzdG9wIHNlYXJjaGluZyB3aGVuIHRoZSBjaGFyYWN0ZXIgZm9sbG93aW5nIHRoZSBi
cmVhawotICAgICAgICAgICAgLy8gaXMgYWxwaGFudW1lcmljLgotICAgICAgICAgICAgaWYgKHBv
c2l0aW9uID4gMCAmJiBpc0FscGhhbnVtZXJpYyhjaGFyc1twb3NpdGlvbl0pKQorICAgICAgICAg
ICAgLy8gV2Ugc3RvcCBzZWFyY2hpbmcgd2hlbiB0aGUgY2hhcmFjdGVyIGZvbGxvd2luZyB0aGUg
YnJlYWsgaXMgYWxwaGFudW1lcmljLgorICAgICAgICAgICAgaWYgKHBvc2l0aW9uID4gMCAmJiB1
X2lzYWxudW0oY2hhcnNbcG9zaXRpb25dKSkKICAgICAgICAgICAgICAgICByZXR1cm4gcG9zaXRp
b247CiAKICAgICAgICAgICAgIHBvc2l0aW9uID0gdGV4dEJyZWFrUHJlY2VkaW5nKGl0LCBwb3Np
dGlvbik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1RleHRCb3Vu
ZGFyaWVzLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1RleHRCb3VuZGFyaWVzLmgK
aW5kZXggMTIyZTBlODdjYjA5Y2NhM2E2ZWQ5ZDVkOTQzOWY1NjVlMmNlZTUzYi4uMTYzODZhN2E3
ZTkwOWZiMmZjMzhhNzFmZmQzNmIxMDUyZTUzNDM2YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vdGV4dC9UZXh0Qm91bmRhcmllcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL3RleHQvVGV4dEJvdW5kYXJpZXMuaApAQCAtMzAsMTIgKzMwLDE1IEBACiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAotICAgIC8vIEZJWE1FOiB0aGlzIGZ1bmN0aW9uIHdvbid0IGJlIG5l
ZWRlZCB0b2dldGhlciB3aXRoIHRoZSBmdW5jdGlvbgotICAgIC8vIGl0IGNhbGxzIHdoZW4gaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyMDY1NgotICAgIC8vIHdpbGwg
YmUgZml4ZWQuCi0gICAgaW5saW5lIGJvb2wgcmVxdWlyZXNDb250ZXh0Rm9yV29yZEJvdW5kYXJ5
KFVDaGFyMzIgY2gpCisgICAgaW5saW5lIGJvb2wgcmVxdWlyZXNDb250ZXh0Rm9yV29yZEJvdW5k
YXJ5KFVDaGFyMzIgY2hhcmFjdGVyKQogICAgIHsKLSAgICAgICAgcmV0dXJuIFdURjo6VW5pY29k
ZTo6cmVxdWlyZXNDb21wbGV4Q29udGV4dEZvcldvcmRCcmVha2luZyhjaCk7CisgICAgICAgIC8v
IEZJWE1FOiBUaGlzIGZ1bmN0aW9uIHdvbid0IGJlIG5lZWRlZCB3aGVuIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjA2NTYgaXMgZml4ZWQuCisKKyAgICAgICAgLy8g
V2UgY2FuIGdldCByaWQgb2YgdGhpcyBjb25zdGFudCBpZiB3ZSByZXF1aXJlIGEgbmV3ZXIgdmVy
c2lvbiBvZiB0aGUgSUNVIGhlYWRlcnMuCisgICAgICAgIGNvbnN0IGludCBXS19VX0xCX0NPTkRJ
VElPTkFMX0pBUEFORVNFX1NUQVJURVIgPSAzNzsKKworICAgICAgICBpbnQgbGluZUJyZWFrID0g
dV9nZXRJbnRQcm9wZXJ0eVZhbHVlKGNoYXJhY3RlciwgVUNIQVJfTElORV9CUkVBSyk7CisgICAg
ICAgIHJldHVybiBsaW5lQnJlYWsgPT0gVV9MQl9DT01QTEVYX0NPTlRFWFQgfHwgbGluZUJyZWFr
ID09IFdLX1VfTEJfQ09ORElUSU9OQUxfSkFQQU5FU0VfU1RBUlRFUiB8fCBsaW5lQnJlYWsgPT0g
VV9MQl9JREVPR1JBUEhJQzsKICAgICB9CiAKICAgICBpbnQgZW5kT2ZGaXJzdFdvcmRCb3VuZGFy
eUNvbnRleHQoY29uc3QgVUNoYXIqIGNoYXJhY3RlcnMsIGludCBsZW5ndGgpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9tYWMvVGV4dEJvdW5kYXJpZXMubW0gYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L21hYy9UZXh0Qm91bmRhcmllcy5tbQppbmRleCBi
ZDdkZGY4YTBmODI4ZTU2NjNkYzRmYTIyYjdiYTQyMDgxNzMyM2Q1Li5mZjFkZmQyMGRjNTg0Zjg4
YzYwNjY4NmQ5YzUzNzUxZTA2ZGNhYzVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS90ZXh0L21hYy9UZXh0Qm91bmRhcmllcy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS90ZXh0L21hYy9UZXh0Qm91bmRhcmllcy5tbQpAQCAtMjYsOCArMjYsNiBAQAogI2ltcG9y
dCAiY29uZmlnLmgiCiAjaW1wb3J0ICJUZXh0Qm91bmRhcmllcy5oIgogCi11c2luZyBuYW1lc3Bh
Y2UgV1RGOjpVbmljb2RlOwotCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHZvaWQgZmluZFdvcmRC
b3VuZGFyeShjb25zdCBVQ2hhciogY2hhcnMsIGludCBsZW4sIGludCBwb3NpdGlvbiwgaW50KiBz
dGFydCwgaW50KiBlbmQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvQmlk
aVJ1bi5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0JpZGlSdW4uaAppbmRleCA5YmY4ZWQz
OTQ3NWFmOGE1NWMzZThjMTZmZWJhZGRjNTI3NzY5MDk4Li41ZjE0MDgyNjUyNjBlM2ExZTQ0NTRj
NTRlOWJiMjczNmRhNWZmMzc5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
QmlkaVJ1bi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9CaWRpUnVuLmgKQEAgLTM0
LDcgKzM0LDcgQEAgY2xhc3MgQmlkaUNvbnRleHQ7CiBjbGFzcyBJbmxpbmVCb3g7CiAKIHN0cnVj
dCBCaWRpUnVuIDogQmlkaUNoYXJhY3RlclJ1biB7Ci0gICAgQmlkaVJ1bihpbnQgc3RhcnQsIGlu
dCBzdG9wLCBSZW5kZXJPYmplY3QqIG9iamVjdCwgQmlkaUNvbnRleHQqIGNvbnRleHQsIFdURjo6
VW5pY29kZTo6RGlyZWN0aW9uIGRpcikKKyAgICBCaWRpUnVuKGludCBzdGFydCwgaW50IHN0b3As
IFJlbmRlck9iamVjdCogb2JqZWN0LCBCaWRpQ29udGV4dCogY29udGV4dCwgVUNoYXJEaXJlY3Rp
b24gZGlyKQogICAgICAgICA6IEJpZGlDaGFyYWN0ZXJSdW4oc3RhcnQsIHN0b3AsIGNvbnRleHQs
IGRpcikKICAgICAgICAgLCBtX29iamVjdChvYmplY3QpCiAgICAgICAgICwgbV9ib3goMCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVGbG93Qm94LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lRmxvd0JveC5oCmluZGV4IDYzOTg5YTllYThlNDVl
NDY5NTdlNjlhYzgzMWI0NzU0N2VmZGQ2MjkuLjhmMzcyNzJlMDkxMmE3ZGJlNzlmYTQ3YzJiM2Zi
YmMyYWZhNmYwNWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVG
bG93Qm94LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0lubGluZUZsb3dCb3guaApA
QCAtMzMyLDkgKzMzMiw5IEBAIHByb3RlY3RlZDoKICAgICB1bnNpZ25lZCBtX2hhc0Fubm90YXRp
b25zQmVmb3JlIDogMTsKICAgICB1bnNpZ25lZCBtX2hhc0Fubm90YXRpb25zQWZ0ZXIgOiAxOwog
Ci0gICAgdW5zaWduZWQgbV9saW5lQnJlYWtCaWRpU3RhdHVzRW9yIDogNTsgLy8gV1RGOjpVbmlj
b2RlOjpEaXJlY3Rpb24KLSAgICB1bnNpZ25lZCBtX2xpbmVCcmVha0JpZGlTdGF0dXNMYXN0U3Ry
b25nIDogNTsgLy8gV1RGOjpVbmljb2RlOjpEaXJlY3Rpb24KLSAgICB1bnNpZ25lZCBtX2xpbmVC
cmVha0JpZGlTdGF0dXNMYXN0IDogNTsgLy8gV1RGOjpVbmljb2RlOjpEaXJlY3Rpb24KKyAgICB1
bnNpZ25lZCBtX2xpbmVCcmVha0JpZGlTdGF0dXNFb3IgOiA1OyAvLyBVQ2hhckRpcmVjdGlvbgor
ICAgIHVuc2lnbmVkIG1fbGluZUJyZWFrQmlkaVN0YXR1c0xhc3RTdHJvbmcgOiA1OyAvLyBVQ2hh
ckRpcmVjdGlvbgorICAgIHVuc2lnbmVkIG1fbGluZUJyZWFrQmlkaVN0YXR1c0xhc3QgOiA1OyAv
LyBVQ2hhckRpcmVjdGlvbgogCiAgICAgLy8gRW5kIG9mIFJvb3RJbmxpbmVCb3gtc3BlY2lmaWMg
bWVtYmVycy4KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0lubGluZUl0
ZXJhdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lSXRlcmF0b3IuaAppbmRl
eCA4ZWJhZTUzYjE0YTk4YjM4MGIxY2QzZGRkZDZmNjc0NjY5MWNiZmVkLi40Y2M3ZTA1ZTQxNTIx
YzcyODkwMjU4ZmVkZmU5N2QzN2YyM2Q3ZDdmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvSW5saW5lSXRlcmF0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
SW5saW5lSXRlcmF0b3IuaApAQCAtODgsNyArODgsNyBAQCBwdWJsaWM6CiAgICAgVUNoYXIgY2hh
cmFjdGVyQXQodW5zaWduZWQpIGNvbnN0OwogICAgIFVDaGFyIGN1cnJlbnQoKSBjb25zdDsKICAg
ICBVQ2hhciBwcmV2aW91c0luU2FtZU5vZGUoKSBjb25zdDsKLSAgICBBTFdBWVNfSU5MSU5FIFdU
Rjo6VW5pY29kZTo6RGlyZWN0aW9uIGRpcmVjdGlvbigpIGNvbnN0OworICAgIEFMV0FZU19JTkxJ
TkUgVUNoYXJEaXJlY3Rpb24gZGlyZWN0aW9uKCkgY29uc3Q7CiAKIHByaXZhdGU6CiAgICAgUmVu
ZGVyRWxlbWVudCogbV9yb290OwpAQCAtMTEwLDEyICsxMTAsMTIgQEAgaW5saW5lIGJvb2wgb3Bl
cmF0b3IhPShjb25zdCBJbmxpbmVJdGVyYXRvciYgaXQxLCBjb25zdCBJbmxpbmVJdGVyYXRvciYg
aXQyKQogICAgIHJldHVybiBpdDEubV9wb3MgIT0gaXQyLm1fcG9zIHx8IGl0MS5tX29iaiAhPSBp
dDIubV9vYmo7CiB9CiAKLXN0YXRpYyBpbmxpbmUgV1RGOjpVbmljb2RlOjpEaXJlY3Rpb24gZW1i
ZWRDaGFyRnJvbURpcmVjdGlvbihUZXh0RGlyZWN0aW9uIGRpciwgRVVuaWNvZGVCaWRpIHVuaWNv
ZGVCaWRpKQorc3RhdGljIGlubGluZSBVQ2hhckRpcmVjdGlvbiBlbWJlZENoYXJGcm9tRGlyZWN0
aW9uKFRleHREaXJlY3Rpb24gZGlyZWN0aW9uLCBFVW5pY29kZUJpZGkgdW5pY29kZUJpZGkpCiB7
CiAgICAgdXNpbmcgbmFtZXNwYWNlIFdURjo6VW5pY29kZTsKICAgICBpZiAodW5pY29kZUJpZGkg
PT0gRW1iZWQpCi0gICAgICAgIHJldHVybiBkaXIgPT0gUlRMID8gUmlnaHRUb0xlZnRFbWJlZGRp
bmcgOiBMZWZ0VG9SaWdodEVtYmVkZGluZzsKLSAgICByZXR1cm4gZGlyID09IFJUTCA/IFJpZ2h0
VG9MZWZ0T3ZlcnJpZGUgOiBMZWZ0VG9SaWdodE92ZXJyaWRlOworICAgICAgICByZXR1cm4gZGly
ZWN0aW9uID09IFJUTCA/IFVfUklHSFRfVE9fTEVGVF9FTUJFRERJTkcgOiBVX0xFRlRfVE9fUklH
SFRfRU1CRURESU5HOworICAgIHJldHVybiBkaXJlY3Rpb24gPT0gUlRMID8gVV9SSUdIVF9UT19M
RUZUX09WRVJSSURFIDogVV9MRUZUX1RPX1JJR0hUX09WRVJSSURFOwogfQogCiB0ZW1wbGF0ZSA8
Y2xhc3MgT2JzZXJ2ZXI+CkBAIC0xNjEsNyArMTYxLDcgQEAgc3RhdGljIGlubGluZSB2b2lkIG5v
dGlmeU9ic2VydmVyV2lsbEV4aXRPYmplY3QoT2JzZXJ2ZXIqIG9ic2VydmVyLCBSZW5kZXJPYmpl
Y3QKIAogICAgIC8vIE90aGVyd2lzZSB3ZSBwb3AgYW55IGVtYmVkL292ZXJyaWRlIGNoYXJhY3Rl
ciB3ZSBhZGRlZCB3aGVuIHdlIG9wZW5lZCB0aGlzIHRhZy4KICAgICBpZiAoIW9ic2VydmVyLT5p
bklzb2xhdGUoKSkKLSAgICAgICAgb2JzZXJ2ZXItPmVtYmVkKFdURjo6VW5pY29kZTo6UG9wRGly
ZWN0aW9uYWxGb3JtYXQsIEZyb21TdHlsZU9yRE9NKTsKKyAgICAgICAgb2JzZXJ2ZXItPmVtYmVk
KFVfUE9QX0RJUkVDVElPTkFMX0ZPUk1BVCwgRnJvbVN0eWxlT3JET00pOwogfQogCiBzdGF0aWMg
aW5saW5lIGJvb2wgaXNJdGVyYXRvclRhcmdldChSZW5kZXJPYmplY3QqIG9iamVjdCkKQEAgLTM5
MywxNSArMzkzLDE1IEBAIGlubGluZSBVQ2hhciBJbmxpbmVJdGVyYXRvcjo6cHJldmlvdXNJblNh
bWVOb2RlKCkgY29uc3QKICAgICByZXR1cm4gY2hhcmFjdGVyQXQobV9wb3MgLSAxKTsKIH0KIAot
QUxXQVlTX0lOTElORSBXVEY6OlVuaWNvZGU6OkRpcmVjdGlvbiBJbmxpbmVJdGVyYXRvcjo6ZGly
ZWN0aW9uKCkgY29uc3QKK0FMV0FZU19JTkxJTkUgVUNoYXJEaXJlY3Rpb24gSW5saW5lSXRlcmF0
b3I6OmRpcmVjdGlvbigpIGNvbnN0CiB7Ci0gICAgaWYgKFVDaGFyIGMgPSBjdXJyZW50KCkpCi0g
ICAgICAgIHJldHVybiBXVEY6OlVuaWNvZGU6OmRpcmVjdGlvbihjKTsKKyAgICBpZiAoVUNoYXIg
Y2hhcmFjdGVyID0gY3VycmVudCgpKQorICAgICAgICByZXR1cm4gdV9jaGFyRGlyZWN0aW9uKGNo
YXJhY3Rlcik7CiAKICAgICBpZiAobV9vYmogJiYgbV9vYmotPmlzTGlzdE1hcmtlcigpKQotICAg
ICAgICByZXR1cm4gbV9vYmotPnN0eWxlKCktPmlzTGVmdFRvUmlnaHREaXJlY3Rpb24oKSA/IFdU
Rjo6VW5pY29kZTo6TGVmdFRvUmlnaHQgOiBXVEY6OlVuaWNvZGU6OlJpZ2h0VG9MZWZ0OworICAg
ICAgICByZXR1cm4gbV9vYmotPnN0eWxlKCktPmlzTGVmdFRvUmlnaHREaXJlY3Rpb24oKSA/IFVf
TEVGVF9UT19SSUdIVCA6IFVfUklHSFRfVE9fTEVGVDsKIAotICAgIHJldHVybiBXVEY6OlVuaWNv
ZGU6Ok90aGVyTmV1dHJhbDsKKyAgICByZXR1cm4gVV9PVEhFUl9ORVVUUkFMOwogfQogCiB0ZW1w
bGF0ZTw+CkBAIC00NzcsNyArNDc3LDcgQEAgcHVibGljOgogICAgIGJvb2wgaW5Jc29sYXRlKCkg
Y29uc3QgeyByZXR1cm4gbV9uZXN0ZWRJc29sYXRlQ291bnQ7IH0KIAogICAgIC8vIFdlIGRvbid0
IGNhcmUgaWYgd2UgZW5jb3VudGVyIGJpZGkgZGlyZWN0aW9uYWwgb3ZlcnJpZGVzLgotICAgIHZv
aWQgZW1iZWQoV1RGOjpVbmljb2RlOjpEaXJlY3Rpb24sIEJpZGlFbWJlZGRpbmdTb3VyY2UpIHsg
fQorICAgIHZvaWQgZW1iZWQoVUNoYXJEaXJlY3Rpb24sIEJpZGlFbWJlZGRpbmdTb3VyY2UpIHsg
fQogICAgIHZvaWQgY29tbWl0RXhwbGljaXRFbWJlZGRpbmcoKSB7IH0KIAogICAgIHZvaWQgYWRk
RmFrZVJ1bklmTmVjZXNzYXJ5KFJlbmRlck9iamVjdCogb2JqLCB1bnNpZ25lZCBwb3MsIElubGlu
ZUJpZGlSZXNvbHZlciYgcmVzb2x2ZXIpCkBAIC01NDQsOCArNTQ0LDggQEAgaW5saW5lIHZvaWQg
SW5saW5lQmlkaVJlc29sdmVyOjphcHBlbmRSdW4oKQogICAgICAgICBtX3NvciA9IG1fZW9yOwog
ICAgIH0KIAotICAgIG1fZGlyZWN0aW9uID0gV1RGOjpVbmljb2RlOjpPdGhlck5ldXRyYWw7Ci0g
ICAgbV9zdGF0dXMuZW9yID0gV1RGOjpVbmljb2RlOjpPdGhlck5ldXRyYWw7CisgICAgbV9kaXJl
Y3Rpb24gPSBVX09USEVSX05FVVRSQUw7CisgICAgbV9zdGF0dXMuZW9yID0gVV9PVEhFUl9ORVVU
UkFMOwogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
QmxvY2suY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcAppbmRl
eCBmMjc5MzU1YTg0OTE3NTQ0ZDljYWZjM2E5OWMwOTIzMjNkZTQwNWRjLi4wYWU3NWU1YjA2YzM2
NDI1NjM1OWIyOWE1YjM2NzRlYzg5YTc2NGM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJCbG9jay5jcHAKQEAgLTQ5NTIsMTIgKzQ5NTIsNyBAQCBzdGF0aWMgUmVuZGVyU3R5bGUq
IHN0eWxlRm9yRmlyc3RMZXR0ZXIoUmVuZGVyT2JqZWN0KiBmaXJzdExldHRlckJsb2NrLCBSZW5k
ZXJPYgogLy8gImluaXRpYWwiIChQaSkuICJmaW5hbCIgKFBmKSBhbmQgIm90aGVyIiAoUG8pIHB1
bmN0dWF0aW9uIGNsYXNzZXMpLCB0aGF0IHByZWNlZGVzIG9yIGZvbGxvd3MgdGhlIGZpcnN0IGxl
dHRlciBzaG91bGQgYmUgaW5jbHVkZWQiCiBzdGF0aWMgaW5saW5lIGJvb2wgaXNQdW5jdHVhdGlv
bkZvckZpcnN0TGV0dGVyKFVDaGFyIGMpCiB7Ci0gICAgQ2hhckNhdGVnb3J5IGNoYXJDYXRlZ29y
eSA9IGNhdGVnb3J5KGMpOwotICAgIHJldHVybiBjaGFyQ2F0ZWdvcnkgPT0gUHVuY3R1YXRpb25f
T3BlbgotICAgICAgICB8fCBjaGFyQ2F0ZWdvcnkgPT0gUHVuY3R1YXRpb25fQ2xvc2UKLSAgICAg
ICAgfHwgY2hhckNhdGVnb3J5ID09IFB1bmN0dWF0aW9uX0luaXRpYWxRdW90ZQotICAgICAgICB8
fCBjaGFyQ2F0ZWdvcnkgPT0gUHVuY3R1YXRpb25fRmluYWxRdW90ZQotICAgICAgICB8fCBjaGFy
Q2F0ZWdvcnkgPT0gUHVuY3R1YXRpb25fT3RoZXI7CisgICAgcmV0dXJuIFVfR0VUX0dDX01BU0so
YykgJiAoVV9HQ19QU19NQVNLIHwgVV9HQ19QRV9NQVNLIHwgVV9HQ19QSV9NQVNLIHwgVV9HQ19Q
Rl9NQVNLIHwgVV9HQ19QT19NQVNLKTsKIH0KIAogc3RhdGljIGlubGluZSBib29sIHNob3VsZFNr
aXBGb3JGaXJzdExldHRlcihVQ2hhciBjKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckJsb2NrTGluZUxheW91dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyQmxvY2tMaW5lTGF5b3V0LmNwcAppbmRleCBhNjg0YmVhNDY2OWY3MjI2M2JjY2Y0
YjljYzNlOTc0ODZkODQ1YzE3Li40OGU4ZDVhNDJhYWEyNDkwZjNhMDI2Zjc4MGExMzFmN2UzMDY0
MjI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2tMaW5l
TGF5b3V0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2tMaW5l
TGF5b3V0LmNwcApAQCAtMTc4LDEyICsxNzgsMTIgQEAgc3RhdGljIHZvaWQgZGV0ZXJtaW5lRGly
ZWN0aW9uYWxpdHkoVGV4dERpcmVjdGlvbiYgZGlyLCBJbmxpbmVJdGVyYXRvciBpdGVyKQogICAg
ICAgICBpZiAoaXRlci5hdFBhcmFncmFwaFNlcGFyYXRvcigpKQogICAgICAgICAgICAgcmV0dXJu
OwogICAgICAgICBpZiAoVUNoYXIgY3VycmVudCA9IGl0ZXIuY3VycmVudCgpKSB7Ci0gICAgICAg
ICAgICBEaXJlY3Rpb24gY2hhckRpcmVjdGlvbiA9IGRpcmVjdGlvbihjdXJyZW50KTsKLSAgICAg
ICAgICAgIGlmIChjaGFyRGlyZWN0aW9uID09IExlZnRUb1JpZ2h0KSB7CisgICAgICAgICAgICBV
Q2hhckRpcmVjdGlvbiBjaGFyRGlyZWN0aW9uID0gdV9jaGFyRGlyZWN0aW9uKGN1cnJlbnQpOwor
ICAgICAgICAgICAgaWYgKGNoYXJEaXJlY3Rpb24gPT0gVV9MRUZUX1RPX1JJR0hUKSB7CiAgICAg
ICAgICAgICAgICAgZGlyID0gTFRSOwogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAg
ICAgIH0KLSAgICAgICAgICAgIGlmIChjaGFyRGlyZWN0aW9uID09IFJpZ2h0VG9MZWZ0IHx8IGNo
YXJEaXJlY3Rpb24gPT0gUmlnaHRUb0xlZnRBcmFiaWMpIHsKKyAgICAgICAgICAgIGlmIChjaGFy
RGlyZWN0aW9uID09IFVfUklHSFRfVE9fTEVGVCB8fCBjaGFyRGlyZWN0aW9uID09IFVfUklHSFRf
VE9fTEVGVF9BUkFCSUMpIHsKICAgICAgICAgICAgICAgICBkaXIgPSBSVEw7CiAgICAgICAgICAg
ICAgICAgcmV0dXJuOwogICAgICAgICAgICAgfQpAQCAtMTA1MSw3ICsxMDUxLDcgQEAgaW5saW5l
IEJpZGlSdW4qIFJlbmRlckJsb2NrRmxvdzo6aGFuZGxlVHJhaWxpbmdTcGFjZXMoQmlkaVJ1bkxp
c3Q8QmlkaVJ1bj4mIGJpZGkKICAgICAgICAgd2hpbGUgKEJpZGlDb250ZXh0KiBwYXJlbnQgPSBi
YXNlQ29udGV4dC0+cGFyZW50KCkpCiAgICAgICAgICAgICBiYXNlQ29udGV4dCA9IHBhcmVudDsK
IAotICAgICAgICBCaWRpUnVuKiBuZXdUcmFpbGluZ1J1biA9IG5ldyAocmVuZGVyQXJlbmEoKSkg
QmlkaVJ1bihmaXJzdFNwYWNlLCB0cmFpbGluZ1NwYWNlUnVuLT5tX3N0b3AsIHRyYWlsaW5nU3Bh
Y2VSdW4tPm1fb2JqZWN0LCBiYXNlQ29udGV4dCwgT3RoZXJOZXV0cmFsKTsKKyAgICAgICAgQmlk
aVJ1biogbmV3VHJhaWxpbmdSdW4gPSBuZXcgKHJlbmRlckFyZW5hKCkpIEJpZGlSdW4oZmlyc3RT
cGFjZSwgdHJhaWxpbmdTcGFjZVJ1bi0+bV9zdG9wLCB0cmFpbGluZ1NwYWNlUnVuLT5tX29iamVj
dCwgYmFzZUNvbnRleHQsIFVfT1RIRVJfTkVVVFJBTCk7CiAgICAgICAgIHRyYWlsaW5nU3BhY2VS
dW4tPm1fc3RvcCA9IGZpcnN0U3BhY2U7CiAgICAgICAgIGlmIChkaXJlY3Rpb24gPT0gTFRSKQog
ICAgICAgICAgICAgYmlkaVJ1bnMuYWRkUnVuKG5ld1RyYWlsaW5nUnVuKTsKQEAgLTEwODMsNyAr
MTA4Myw3IEBAIHZvaWQgUmVuZGVyQmxvY2tGbG93OjphcHBlbmRGbG9hdGluZ09iamVjdFRvTGFz
dExpbmUoRmxvYXRpbmdPYmplY3QqIGZsb2F0aW5nT2JqCiAvLyBGSVhNRTogVGhpcyBzaG91bGQg
YmUgYSBCaWRpU3RhdHVzIGNvbnN0cnVjdG9yIG9yIGNyZWF0ZSBtZXRob2QuCiBzdGF0aWMgaW5s
aW5lIEJpZGlTdGF0dXMgc3RhdHVzV2l0aERpcmVjdGlvbihUZXh0RGlyZWN0aW9uIHRleHREaXJl
Y3Rpb24sIGJvb2wgaXNPdmVycmlkZSkKIHsKLSAgICBXVEY6OlVuaWNvZGU6OkRpcmVjdGlvbiBk
aXJlY3Rpb24gPSB0ZXh0RGlyZWN0aW9uID09IExUUiA/IExlZnRUb1JpZ2h0IDogUmlnaHRUb0xl
ZnQ7CisgICAgVUNoYXJEaXJlY3Rpb24gZGlyZWN0aW9uID0gdGV4dERpcmVjdGlvbiA9PSBMVFIg
PyBVX0xFRlRfVE9fUklHSFQgOiBVX1JJR0hUX1RPX0xFRlQ7CiAgICAgUmVmUHRyPEJpZGlDb250
ZXh0PiBjb250ZXh0ID0gQmlkaUNvbnRleHQ6OmNyZWF0ZSh0ZXh0RGlyZWN0aW9uID09IExUUiA/
IDAgOiAxLCBkaXJlY3Rpb24sIGlzT3ZlcnJpZGUsIEZyb21TdHlsZU9yRE9NKTsKIAogICAgIC8v
IFRoaXMgY29waWVzIEJpZGlTdGF0dXMgYW5kIG1heSBjaHVybiB0aGUgcmVmIG9uIEJpZGlDb250
ZXh0LiBJIGRvdWJ0IGl0IG1hdHRlcnMuCkBAIC0zMTMyLDcgKzMxMzIsNyBAQCBJbmxpbmVJdGVy
YXRvciBMaW5lQnJlYWtlcjo6bmV4dFNlZ21lbnRCcmVhayhJbmxpbmVCaWRpUmVzb2x2ZXImIHJl
c29sdmVyLCBMaW5lSQogICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWtXb3JkcyA9IGZhbHNl
OwogICAgICAgICAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgICAgICAgICAgaWYgKG1pZFdv
cmRCcmVhayAmJiAhVTE2X0lTX1RSQUlMKGMpICYmICEoY2F0ZWdvcnkoYykgJiAoTWFya19Ob25T
cGFjaW5nIHwgTWFya19FbmNsb3NpbmcgfCBNYXJrX1NwYWNpbmdDb21iaW5pbmcpKSkgeworICAg
ICAgICAgICAgICAgICAgICBpZiAobWlkV29yZEJyZWFrICYmICFVMTZfSVNfVFJBSUwoYykgJiYg
IShVX0dFVF9HQ19NQVNLKGMpICYgVV9HQ19NX01BU0spKSB7CiAgICAgICAgICAgICAgICAgICAg
ICAgICAvLyBSZW1lbWJlciB0aGlzIGFzIGEgYnJlYWthYmxlIHBvc2l0aW9uIGluIGNhc2UKICAg
ICAgICAgICAgICAgICAgICAgICAgIC8vIGFkZGluZyB0aGUgZW5kIHdpZHRoIGZvcmNlcyBhIGJy
ZWFrLgogICAgICAgICAgICAgICAgICAgICAgICAgbEJyZWFrLm1vdmVUbyhjdXJyZW50Lm1fb2Jq
LCBjdXJyZW50Lm1fcG9zLCBjdXJyZW50Lm1fbmV4dEJyZWFrYWJsZVBvc2l0aW9uKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0TWFya2VyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0TWFya2VyLmNwcAppbmRleCA5YzU5YmJj
MjJlNzNiZDc5MjYxNTMyZmQxNTQwMjc5OGQwM2QxMmY1Li5lM2EyOWEzZTEwMWMyYTQyZTNkZWU3
NmRmZmU3NzZmZWZiYzQyMTEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyTGlzdE1hcmtlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckxpc3RNYXJrZXIuY3BwCkBAIC0xMzU2LDggKzEzNTYsOCBAQCB2b2lkIFJlbmRlckxpc3RNYXJr
ZXI6OnBhaW50KFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBMYXlvdXRQb2ludCYgcGFpbnRP
ZmZzZQogICAgICAgICBjb250ZXh0LT5kcmF3VGV4dChmb250LCB0ZXh0UnVuLCB0ZXh0T3JpZ2lu
KTsKICAgICBlbHNlIHsKICAgICAgICAgLy8gVGV4dCBpcyBub3QgYXJiaXRyYXJ5LiBXZSBjYW4g
anVkZ2Ugd2hldGhlciBpdCdzIFJUTCBmcm9tIHRoZSBmaXJzdCBjaGFyYWN0ZXIsCi0gICAgICAg
IC8vIGFuZCB3ZSBvbmx5IG5lZWQgdG8gaGFuZGxlIHRoZSBkaXJlY3Rpb24gUmlnaHRUb0xlZnQg
Zm9yIG5vdy4KLSAgICAgICAgYm9vbCB0ZXh0TmVlZHNSZXZlcnNpbmcgPSBkaXJlY3Rpb24obV90
ZXh0WzBdKSA9PSBSaWdodFRvTGVmdDsKKyAgICAgICAgLy8gYW5kIHdlIG9ubHkgbmVlZCB0byBo
YW5kbGUgdGhlIGRpcmVjdGlvbiBVX1JJR0hUX1RPX0xFRlQgZm9yIG5vdy4KKyAgICAgICAgYm9v
bCB0ZXh0TmVlZHNSZXZlcnNpbmcgPSB1X2NoYXJEaXJlY3Rpb24obV90ZXh0WzBdKSA9PSBVX1JJ
R0hUX1RPX0xFRlQ7CiAgICAgICAgIFN0cmluZ0J1aWxkZXIgcmV2ZXJzZWRUZXh0OwogICAgICAg
ICBpZiAodGV4dE5lZWRzUmV2ZXJzaW5nKSB7CiAgICAgICAgICAgICBpbnQgbGVuZ3RoID0gbV90
ZXh0Lmxlbmd0aCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ck1lbnVMaXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNZW51TGlzdC5j
cHAKaW5kZXggMTcyOWI3NTYxYTBkMDBhNTc4NGM2ZWZkY2E3OTcxZTQzNjNhMzgwYS4uZWNkZDUy
ZDgyMDJkNjhhMDkxZWYxMjQ3NjJmNDFkMzU4ODg3NmJmZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlck1lbnVMaXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyTWVudUxpc3QuY3BwCkBAIC0xMTgsNyArMTE4LDcgQEAgdm9pZCBSZW5k
ZXJNZW51TGlzdDo6YWRqdXN0SW5uZXJTdHlsZSgpCiAgICAgICAgIC8vIEl0ZW1zIGluIHRoZSBw
b3B1cCB3aWxsIG5vdCByZXNwZWN0IHRoZSBDU1MgdGV4dC1hbGlnbiBhbmQgZGlyZWN0aW9uIHBy
b3BlcnRpZXMsCiAgICAgICAgIC8vIHNvIHdlIG11c3QgYWRqdXN0IG91ciBvd24gc3R5bGUgdG8g
bWF0Y2guCiAgICAgICAgIGlubmVyU3R5bGUtPnNldFRleHRBbGlnbihMRUZUKTsKLSAgICAgICAg
VGV4dERpcmVjdGlvbiBkaXJlY3Rpb24gPSAobV9idXR0b25UZXh0ICYmIG1fYnV0dG9uVGV4dC0+
dGV4dCgpLT5kZWZhdWx0V3JpdGluZ0RpcmVjdGlvbigpID09IFdURjo6VW5pY29kZTo6UmlnaHRU
b0xlZnQpID8gUlRMIDogTFRSOworICAgICAgICBUZXh0RGlyZWN0aW9uIGRpcmVjdGlvbiA9ICht
X2J1dHRvblRleHQgJiYgbV9idXR0b25UZXh0LT50ZXh0KCktPmRlZmF1bHRXcml0aW5nRGlyZWN0
aW9uKCkgPT0gVV9SSUdIVF9UT19MRUZUKSA/IFJUTCA6IExUUjsKICAgICAgICAgaW5uZXJTdHls
ZS0+c2V0RGlyZWN0aW9uKGRpcmVjdGlvbik7CiAgICAgfSBlbHNlIGlmIChtX29wdGlvblN0eWxl
ICYmIGRvY3VtZW50KCkucGFnZSgpLT5jaHJvbWUoKS5zZWxlY3RJdGVtQWxpZ25tZW50Rm9sbG93
c01lbnVXcml0aW5nRGlyZWN0aW9uKCkpIHsKICAgICAgICAgaWYgKChtX29wdGlvblN0eWxlLT5k
aXJlY3Rpb24oKSAhPSBpbm5lclN0eWxlLT5kaXJlY3Rpb24oKSB8fCBtX29wdGlvblN0eWxlLT51
bmljb2RlQmlkaSgpICE9IGlubmVyU3R5bGUtPnVuaWNvZGVCaWRpKCkpKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlclRleHQuY3BwCmluZGV4IDUyYjZkODhhMzhiYzg0M2I3NmYwZTM5ZjE4
OGYyMmZjMWNjODc3MDUuLmI1NDg3ZWY0MTUwNDcyNTc4MDA3NmQzMmRkZGJiNzk4ZjVhYWQxZmMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dC5jcHAKQEAgLTk5LDYgKzk5LDgg
QEAgcHJpdmF0ZToKIAogc3RhdGljIHZvaWQgbWFrZUNhcGl0YWxpemVkKFN0cmluZyogc3RyaW5n
LCBVQ2hhciBwcmV2aW91cykKIHsKKyAgICAvLyBGSVhNRTogTmVlZCB0byBjaGFuZ2UgdGhpcyB0
byB1c2UgdV9zdHJUb1RpdGxlIGluc3RlYWQgb2YgdV90b3RpdGxlIGFuZCB0byBjb25zaWRlciBs
b2NhbGUuCisKICAgICBpZiAoc3RyaW5nLT5pc051bGwoKSkKICAgICAgICAgcmV0dXJuOwogCkBA
IC0xMjksNyArMTMxLDcgQEAgc3RhdGljIHZvaWQgbWFrZUNhcGl0YWxpemVkKFN0cmluZyogc3Ry
aW5nLCBVQ2hhciBwcmV2aW91cykKICAgICBpbnQzMl90IHN0YXJ0T2ZXb3JkID0gdGV4dEJyZWFr
Rmlyc3QoYm91bmRhcnkpOwogICAgIGZvciAoZW5kT2ZXb3JkID0gdGV4dEJyZWFrTmV4dChib3Vu
ZGFyeSk7IGVuZE9mV29yZCAhPSBUZXh0QnJlYWtEb25lOyBzdGFydE9mV29yZCA9IGVuZE9mV29y
ZCwgZW5kT2ZXb3JkID0gdGV4dEJyZWFrTmV4dChib3VuZGFyeSkpIHsKICAgICAgICAgaWYgKHN0
YXJ0T2ZXb3JkKSAvLyBJZ25vcmUgZmlyc3QgY2hhciBvZiBwcmV2aW91cyBzdHJpbmcKLSAgICAg
ICAgICAgIHJlc3VsdC5hcHBlbmQoc3RyaW5nSW1wbFtzdGFydE9mV29yZCAtIDFdID09IG5vQnJl
YWtTcGFjZSA/IG5vQnJlYWtTcGFjZSA6IHRvVGl0bGVDYXNlKHN0cmluZ1dpdGhQcmV2aW91c1tz
dGFydE9mV29yZF0pKTsKKyAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoc3RyaW5nSW1wbFtzdGFy
dE9mV29yZCAtIDFdID09IG5vQnJlYWtTcGFjZSA/IG5vQnJlYWtTcGFjZSA6IHVfdG90aXRsZShz
dHJpbmdXaXRoUHJldmlvdXNbc3RhcnRPZldvcmRdKSk7CiAgICAgICAgIGZvciAoaW50IGkgPSBz
dGFydE9mV29yZCArIDE7IGkgPCBlbmRPZldvcmQ7IGkrKykKICAgICAgICAgICAgIHJlc3VsdC5h
cHBlbmQoc3RyaW5nSW1wbFtpIC0gMV0pOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9Sb290SW5saW5lQm94LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9Sb290SW5saW5lQm94LmNwcAppbmRleCBhYjI1M2QyMjY0ZTdiM2RkMjBhYmUzYmRmNGQwYmZh
NDA2MzM1YzVlLi5kZTcyYWQ0ODgxZDg5NzljNWQzZDExOTI5MTA2ZWEzNGI4MzkwYmEwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUm9vdElubGluZUJveC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jvb3RJbmxpbmVCb3guY3BwCkBAIC03NTUsNyArNzU1
LDcgQEAgSW5saW5lQm94KiBSb290SW5saW5lQm94OjpjbG9zZXN0TGVhZkNoaWxkRm9yTG9naWNh
bExlZnRQb3NpdGlvbihpbnQgbGVmdFBvc2l0aW8KIAogQmlkaVN0YXR1cyBSb290SW5saW5lQm94
OjpsaW5lQnJlYWtCaWRpU3RhdHVzKCkgY29uc3QKIHsgCi0gICAgcmV0dXJuIEJpZGlTdGF0dXMo
c3RhdGljX2Nhc3Q8V1RGOjpVbmljb2RlOjpEaXJlY3Rpb24+KG1fbGluZUJyZWFrQmlkaVN0YXR1
c0VvciksIHN0YXRpY19jYXN0PFdURjo6VW5pY29kZTo6RGlyZWN0aW9uPihtX2xpbmVCcmVha0Jp
ZGlTdGF0dXNMYXN0U3Ryb25nKSwgc3RhdGljX2Nhc3Q8V1RGOjpVbmljb2RlOjpEaXJlY3Rpb24+
KG1fbGluZUJyZWFrQmlkaVN0YXR1c0xhc3QpLCBtX2xpbmVCcmVha0NvbnRleHQpOworICAgIHJl
dHVybiBCaWRpU3RhdHVzKHN0YXRpY19jYXN0PFVDaGFyRGlyZWN0aW9uPihtX2xpbmVCcmVha0Jp
ZGlTdGF0dXNFb3IpLCBzdGF0aWNfY2FzdDxVQ2hhckRpcmVjdGlvbj4obV9saW5lQnJlYWtCaWRp
U3RhdHVzTGFzdFN0cm9uZyksIHN0YXRpY19jYXN0PFVDaGFyRGlyZWN0aW9uPihtX2xpbmVCcmVh
a0JpZGlTdGF0dXNMYXN0KSwgbV9saW5lQnJlYWtDb250ZXh0KTsKIH0KIAogdm9pZCBSb290SW5s
aW5lQm94OjpzZXRMaW5lQnJlYWtJbmZvKFJlbmRlck9iamVjdCogb2JqLCB1bnNpZ25lZCBicmVh
a1BvcywgY29uc3QgQmlkaVN0YXR1cyYgc3RhdHVzKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvc3ZnL1NWR0ZvbnREYXRhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGb250RGF0YS5j
cHAKaW5kZXggYjNiZWQ4Y2VhNTFjYTg1YWMxNzk2Njc1OTNhZjk1Y2UzZmI0MGQxNy4uYmRmNTBj
MjZkOGM2YjBjNTI0Yzg0ZjliMGU0N2I2NTZkZGJjZWEyNSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvc3ZnL1NWR0ZvbnREYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRm9u
dERhdGEuY3BwCkBAIC0yOTcsNyArMjk3LDcgQEAgU3RyaW5nIFNWR0ZvbnREYXRhOjpjcmVhdGVT
dHJpbmdXaXRoTWlycm9yZWRDaGFyYWN0ZXJzKGNvbnN0IFVDaGFyKiBjaGFyYWN0ZXJzLAogICAg
IHdoaWxlIChpIDwgbGVuZ3RoKSB7CiAgICAgICAgIFVDaGFyMzIgY2hhcmFjdGVyOwogICAgICAg
ICBVMTZfTkVYVChjaGFyYWN0ZXJzLCBpLCBsZW5ndGgsIGNoYXJhY3Rlcik7Ci0gICAgICAgIG1p
cnJvcmVkQ2hhcmFjdGVycy5hcHBlbmQobWlycm9yZWRDaGFyKGNoYXJhY3RlcikpOworICAgICAg
ICBtaXJyb3JlZENoYXJhY3RlcnMuYXBwZW5kKHVfY2hhck1pcnJvcihjaGFyYWN0ZXIpKTsKICAg
ICB9CiAKICAgICByZXR1cm4gbWlycm9yZWRDaGFyYWN0ZXJzLnRvU3RyaW5nKCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS94bWwvWFBhdGhQYXJzZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
eG1sL1hQYXRoUGFyc2VyLmNwcAppbmRleCA4MjY5ODViZTRjM2Y3NGJiNDRhZjRkNmJjZDIyNzk5
MGJkODYwNTY5Li4xMzYxZmI5NjU5NzM4OGI5YWQ4MTM2ZjBhYzdkOTA4YzIyYzE5YWY4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS94bWwvWFBhdGhQYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3htbC9YUGF0aFBhcnNlci5jcHAKQEAgLTY0LDIwICs2NCwxNyBAQCBzdHJ1Y3QgUGFy
c2VyOjpUb2tlbiB7CiAKIGVudW0gWE1MQ2F0IHsgTmFtZVN0YXJ0LCBOYW1lQ29udCwgTm90UGFy
dE9mTmFtZSB9OwogCi1zdGF0aWMgWE1MQ2F0IGNoYXJDYXQoVUNoYXIgYUNoYXIpCitzdGF0aWMg
WE1MQ2F0IGNoYXJDYXQoVUNoYXIgY2hhcmFjdGVyKQogewotICAgIHVzaW5nIG5hbWVzcGFjZSBX
VEY7Ci0gICAgdXNpbmcgbmFtZXNwYWNlIFVuaWNvZGU7Ci0KLSAgICBpZiAoYUNoYXIgPT0gJ18n
KQorICAgIGlmIChjaGFyYWN0ZXIgPT0gJ18nKQogICAgICAgICByZXR1cm4gTmFtZVN0YXJ0Owog
Ci0gICAgaWYgKGFDaGFyID09ICcuJyB8fCBhQ2hhciA9PSAnLScpCisgICAgaWYgKGNoYXJhY3Rl
ciA9PSAnLicgfHwgY2hhcmFjdGVyID09ICctJykKICAgICAgICAgcmV0dXJuIE5hbWVDb250Owot
ICAgIENoYXJDYXRlZ29yeSBjYXRlZ29yeSA9IFVuaWNvZGU6OmNhdGVnb3J5KGFDaGFyKTsKLSAg
ICBpZiAoY2F0ZWdvcnkgJiAoTGV0dGVyX1VwcGVyY2FzZSB8IExldHRlcl9Mb3dlcmNhc2UgfCBM
ZXR0ZXJfT3RoZXIgfCBMZXR0ZXJfVGl0bGVjYXNlIHwgTnVtYmVyX0xldHRlcikpCisgICAgdW5z
aWduZWQgY2hhcmFjdGVyVHlwZU1hc2sgPSBVX0dFVF9HQ19NQVNLKGNoYXJhY3Rlcik7CisgICAg
aWYgKGNoYXJhY3RlclR5cGVNYXNrICYgKFVfR0NfTFVfTUFTSyB8IFVfR0NfTExfTUFTSyB8IFVf
R0NfTE9fTUFTSyB8IFVfR0NfTFRfTUFTSyB8IFVfR0NfTkxfTUFTSykpCiAgICAgICAgIHJldHVy
biBOYW1lU3RhcnQ7Ci0gICAgaWYgKGNhdGVnb3J5ICYgKE1hcmtfTm9uU3BhY2luZyB8IE1hcmtf
U3BhY2luZ0NvbWJpbmluZyB8IE1hcmtfRW5jbG9zaW5nIHwgTGV0dGVyX01vZGlmaWVyIHwgTnVt
YmVyX0RlY2ltYWxEaWdpdCkpCisgICAgaWYgKGNoYXJhY3RlclR5cGVNYXNrICYgKFVfR0NfTV9N
QVNLIHwgVV9HQ19MTV9NQVNLIHwgVV9HQ19ORF9NQVNLKSkKICAgICAgICAgcmV0dXJuIE5hbWVD
b250OwogICAgIHJldHVybiBOb3RQYXJ0T2ZOYW1lOwogfQo=
</data>
<flag name="review"
          id="236433"
          type_id="1"
          status="+"
          setter="ap"
    />
    <flag name="commit-queue"
          id="236440"
          type_id="3"
          status="-"
          setter="buildbot"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>214042</attachid>
            <date>2013-10-11 19:23:33 -0700</date>
            <delta_ts>2013-10-11 19:33:38 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-122635-20131011192332.patch</filename>
            <type>text/plain</type>
            <size>141137</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTU3Mjg1CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBm
MDEwYzA5NWVjZjc1NTMxOGQxYTMxZTE1MGQ1MzFlYmQ4ODE1M2M1Li40YTViYzU1YWFkNDFlZTQ5
NTdmODYzMmE0ZjY3YWU0YmJkZGY3NzI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwzMSBAQAorMjAxMy0xMC0xMSAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CisK
KyAgICAgICAgQ2hhbmdlIG1vc3QgY2FsbCBzaXRlcyB0byBjYWxsIElDVSBkaXJlY3RseSBpbnN0
ZWFkIG9mIHRocm91Z2ggV1RGOjpVbmljb2RlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xMjI2MzUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICAqIHBhcnNlci9MZXhlci5jcHA6CisgICAgICAgIChKU0M6Omlz
Tm9uTGF0aW4xSWRlbnRTdGFydCk6IFRha2UgYSBVQ2hhciBzaW5jZSB0aGF0J3Mgd2hhdCB0aGUg
b25seSBjYWxsZXIgd2FudHMgdG8gcGFzcy4KKyAgICAgICAgVXNlIFVfR0VUX0dDX01BU0sgaW5z
dGVhZCBvZiBXVEY6OlVuaWNvZGU6OmNhdGVnb3J5LgorICAgICAgICAoSlNDOjppc05vbkxhdGlu
MUlkZW50UGFydCk6IERpdHRvLgorCisgICAgICAgICogcGFyc2VyL0xleGVyLmg6CisgICAgICAg
IChKU0M6OkxleGVyOjppc1doaXRlU3BhY2UpOiBVc2UgdV9jaGFyVHlwZSBpbnN0ZWFkIG9mIFdU
Rjo6VW5pY29kZTo6aXNTZXBhcmF0b3JTcGFjZS4KKworICAgICAgICAqIHJ1bnRpbWUvSlNGdW5j
dGlvbi5jcHA6IFJlbW92ZWQgInVzaW5nIG5hbWVzcGFjZSIgZm9yIFdURjo6VW5pY29kZSwgdGhp
cyB3aWxsIG5vIGxvbmdlcgorICAgICAgICBjb21waWxlIHNpbmNlIHRoaXMgZG9lc24ndCBpbmNs
dWRlIGFueXRoaW5nIHRoYXQgZGVmaW5lcyB0aGF0IG5hbWVzcGFjZS4KKworICAgICAgICAqIHJ1
bnRpbWUvSlNHbG9iYWxPYmplY3RGdW5jdGlvbnMuY3BwOgorICAgICAgICAoSlNDOjppc1N0cldo
aXRlU3BhY2UpOiBVc2UgdV9jaGFyVHlwZSBpbnN0ZWFkIG9mIFdURjo6VW5pY29kZTo6aXNTZXBh
cmF0b3JTcGFjZS4KKworICAgICAgICAqIHlhcnIvWWFyckludGVycHJldGVyLmNwcDoKKyAgICAg
ICAgKEpTQzo6WWFycjo6Qnl0ZUNvbXBpbGVyOjphdG9tUGF0dGVybkNoYXJhY3Rlcik6IFVzZSB1
X3RvbG93ZXIgYW5kIHVfdG91cHBlciBpbnN0ZWFkIG9mCisgICAgICAgIFVuaWNvZGU6OnRvTG93
ZXIgYW5kIFVuaWNvZGU6OnRvVXBwZXIuIEFsc28gYWRkZWQgc29tZSBhc3NlcnRpb25zIHNpbmNl
IHRoaXMgY29kZSBhc3N1bWVzCisgICAgICAgIGl0IGNhbiBjb252ZXJ0IGFueSBVQ2hhciB0byBs
b3dlcmNhc2Ugb3IgdXBwZXJjYXNlIGluIGFub3RoZXIgVUNoYXIsIHdpdGggbm8gcmlzayBvZiBu
ZWVkaW5nCisgICAgICAgIGEgVUNoYXIzMiBmb3IgdGhlIHJlc3VsdC4gSSBndWVzcyB0aGF0J3Mg
cHJvYmFibHkgdHJ1ZSwgYnV0IGl0IHdvdWxkIGJlIGdvb2QgdG8ga25vdyBpbiBhCisgICAgICAg
IGRlYnVnIGJ1aWxkIGlmIG5vdC4KKwogMjAxMy0xMC0wOSAgT2xpdmVyIEh1bnQgIDxvbGl2ZXJA
YXBwbGUuY29tPgogCiAgICAgICAgIEZ1cnRoZXIgaW1wcm92ZSBBcnJheUl0ZXJhdG9yIHBlcmZv
cm1hbmNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5nZUxvZyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCmluZGV4IDVlMzU0MzQ3OGQ2NDM5Mjc4YjBmNTJiMjQ4OWZmZWI4MGEyYmNiMjQuLmRh
ZmUzMmYxZGQzM2M1NzY4ZDczODVhMzdkZDFmMWM4MGYzZDgwNjIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTQg
QEAKKzIwMTMtMTAtMTEgIERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29tPgorCisgICAgICAg
IENoYW5nZSBtb3N0IGNhbGwgc2l0ZXMgdG8gY2FsbCBJQ1UgZGlyZWN0bHkgaW5zdGVhZCBvZiB0
aHJvdWdoIFdURjo6VW5pY29kZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTIyNjM1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgKiB3dGYvdGV4dC9TdHJpbmdIYXNoLmg6CisgICAgICAgIChXVEY6OkNhc2VG
b2xkaW5nSGFzaDo6Zm9sZENhc2UpOiBVc2UgdV9mb2xkQ2FzZSBpbnN0ZWFkIG9mIFdURjo6VW5p
Y29kZTo6Zm9sZENhc2UuCisgICAgICAgIChXVEY6OkNhc2VGb2xkaW5nSGFzaDo6aGFzaCk6IEFk
ZGVkIGFuIG92ZXJsb2FkIGZvciBhIFN0cmluZ0ltcGwmIGJlY2F1c2Ugd2h5IG5vdC4KKworICAg
ICAgICAqIHd0Zi90ZXh0L1N0cmluZ0ltcGwuY3BwOgorICAgICAgICAoV1RGOjpTdHJpbmdJbXBs
Ojpsb3dlcik6IFVzZSB1X3RvbG93ZXIgcmF0aGVyIHRoYW4gV1RGOjpVbmljb2RlOjp0b0xvd2Vy
LiBBbHNvIGFkZGVkCisgICAgICAgIGFuIGFzc2VydGlvbiB0byBjaGVjayB0aGF0IHRoZSBsb3dl
cmNhc2UgdmVyc2lvbiBpcyBhbHNvIHBhcnQgb2YgTGF0aW4tMS4gSWYgdGhpcworICAgICAgICBp
cyBub3QgZ3VhcmFudGVlZCBpdCB3b3VsZCBiZSBnb29kIHRvIGtub3cgaW4gYSBkZWJ1ZyBidWls
ZCBhdCBsZWFzdC4gVXNlIHVfc3RyVG9Mb3dlcgorICAgICAgICByYXRoZXIgdGhhbiBXVEY6OlVu
aWNvZGU6OnRvTG93ZXIuIEFsc28gcmVtb3ZlZCAjaWYgVVNFKElDVV9VTklDT0RFKSBhcm91bmQg
dGhlCisgICAgICAgIGxvY2FsZS1zcGVjaWZpYyB2ZXJzaW9uLgorICAgICAgICAoV1RGOjpTdHJp
bmdJbXBsOjp1cHBlcik6IFVzZSB1X3RvdXBwZXIgYW5kIHVfc3RyVG9VcHBlciwgYXMgYWJvdmUu
CisgICAgICAgIChXVEY6OlN0cmluZ0ltcGw6OmZvbGRDYXNlKTogVXNlIHVfdG9sb3dlciBhbmQg
dV9zdHJGb2xkQ2FzZSwgYXMgYWJvdmUuCisgICAgICAgIChXVEY6OmVxdWFsSWdub3JpbmdDYXNl
KTogVXNlIHVfZm9sZENhc2UgaW5zdGVhZCBvZiBXVEY6OlVuaWNvZGU6OmZvbGRDYXNlLgorICAg
ICAgICAoV1RGOjpTdHJpbmdJbXBsOjpkZWZhdWx0V3JpdGluZ0RpcmVjdGlvbik6IFVzZSB1X2No
YXJEaXJlY3Rpb24gYW5kIFVDaGFyRGlyZWN0aW9uCisgICAgICAgIGluc3RlYWQgb2YgV1RGOjpV
bmljb2RlOjpkaXJlY3Rpb24gYW5kIFdURjo6VW5pY29kZTo6RGlyZWN0aW9uLgorCisgICAgICAg
ICogd3RmL3RleHQvU3RyaW5nSW1wbC5oOgorICAgICAgICAoV1RGOjplcXVhbElnbm9yaW5nQ2Fz
ZSk6IFVzZSB1X21lbWNhc2VjbXAgaW5zdGVhZCBvZiBXVEY6OlVuaWNvZGU6OnVtZW1jYXNlY21w
LgorICAgICAgICAoV1RGOjppc1NwYWNlT3JOZXdsaW5lKTogVXNlIHVfY2hhckRpcmVjdGlvbiBp
bnN0ZWFkIG9mIFdURjo6VW5pY29kZTo6ZGlyZWN0aW9uLgorCisgICAgICAgICogd3RmL3RleHQv
V1RGU3RyaW5nLmg6CisgICAgICAgIChXVEY6OlN0cmluZzo6ZGVmYXVsdFdyaXRpbmdEaXJlY3Rp
b24pOiBVc2UgVUNoYXJEaXJlY3Rpb24gaW5zdGVhZCBvZiBXVEY6OlVuaWNvZGU6OkRpcmVjdGlv
bi4KKworICAgICAgICAqIHd0Zi91bmljb2RlL2ljdS9Vbmljb2RlSWN1Lmg6IFJlbW92ZWQgYWxt
b3N0IGV2ZXJ5dGhpbmcuCisKKyAgICAgICAgKiB3dGYvdW5pY29kZS93Y2hhci9Vbmljb2RlV2No
YXIuY3BwOiBUcmllZCB0byBkbyB0aGUgcmlnaHQgdGhpbmcgaW4gdGhpcyBmaWxlLCBidXQKKyAg
ICAgICAgSSBkaWQgbm90IGFjdHVhbGx5IGNvbXBpbGUgaXQuIEFsc28sIHRoZSBpbXBsZW1lbnRh
dGlvbnMgaGVyZSBhcmVuJ3QgcmVhbGx5IHN1ZmZpY2llbnQKKyAgICAgICAgdG8gbWFrZSBXZWJL
aXQgd29yayBicm9hZGx5LiBUaGVyZSBhcmUgbWFueSB0aGluZ3MgdGhhdCBqdXN0IGFyZW4ndCB3
b3JraW5nIHdpdGggdGhpcworICAgICAgICBpbXBsZW1lbnRhdGlvbiwgc3VjaCBhcyBwYXJzaW5n
IHRoYXQgdXNlcyB1X2NoYXJUeXBlIHRvIGZpZ3VyZSBvdXQgd2hpY2ggY2hhcmFjdGVycyBhcmUg
dmFsaWQuCisgICAgICAgICh1bm9ybV9ub3JtYWxpemUpOiBBZGRlZC4KKyAgICAgICAgKHVfY2hh
ckRpcmVjdGlvbik6IEFkZGVkLgorICAgICAgICAodV9jaGFyTWlycm9yKTogQWRkZWQuCisgICAg
ICAgICh1X2NoYXJUeXBlKTogQWRkZWQuCisgICAgICAgICh1X2dldENvbWJpbmluZ0NsYXNzKTog
QWRkZWQuCisgICAgICAgICh1X2dldEludFByb3BlcnR5VmFsdWUpOiBBZGRlZC4KKyAgICAgICAg
KHVfbWVtY2FzZWNtcCk6IEFkZGVkLgorICAgICAgICAoY29udmVydFdpdGhGdW5jdGlvbik6IENo
YW5nZWQgdG8gd29yayB3aXRoIElDVS1zdHlsZSBzdGF0dXMgY29kZSBpbnN0ZWFkIG9mIGVycm9y
IGJvb2wuCisgICAgICAgICh1X3N0ckZvbGRDYXNlKTogQWRkZWQuCisgICAgICAgICh1X3N0clRv
TG93ZXIpOiBBZGRlZC4KKyAgICAgICAgKHVfc3RyVG9VcHBlcik6IEFkZGVkLgorICAgICAgICAq
IHd0Zi91bmljb2RlL3djaGFyL1VuaWNvZGVXY2hhci5oOiBEaXR0by4gTGF0ZXIgdGhpcyBmaWxl
IHNob3VsZCBqdXN0IGJlIG5hbWVkIGxpa2UgdGhlCisgICAgICAgIHJlYWwgSUNVIGhlYWRlcnMg
c28gdGhlIGNvZGUgY2FuIGluY2x1ZGUgaXQgdGhlIHNhbWUgd2F5IGl0IHdvdWxkIElDVS4gQnV0
IHRoYXQgd2lsbCBiZQorICAgICAgICBpbiBhIGZ1dHVyZSBwYXRjaC4KKwogMjAxMy0xMC0wOSAg
RmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgogCiAgICAgICAgIEZUTDogU29mdC1saW5r
IExMVk0gYXMgYSB3b3JrYXJvdW5kIGZvciBMTFZNJ3Mgc3RhdGljIGluaXRpYWxpemVycyBhbmQg
ZXhpdC10aW1lIGRlc3RydWN0b3JzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VM
b2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMmUxYjAyM2Q2NmY2YWY0NjRiNTQ0
Y2YwNjI1MThkMmYzNGUxNWMxYi4uMzQxNjg2MDZmMzZmOWMxNTZjODEwYjY5MjkzNDE0MTc1ZWU5
Y2ZkYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3NSBAQAorMjAxMy0xMC0xMSAgRGFyaW4gQWRs
ZXIgIDxkYXJpbkBhcHBsZS5jb20+CisKKyAgICAgICAgQ2hhbmdlIG1vc3QgY2FsbCBzaXRlcyB0
byBjYWxsIElDVSBkaXJlY3RseSBpbnN0ZWFkIG9mIHRocm91Z2ggV1RGOjpVbmljb2RlCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjI2MzUKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIE1vZHVsZXMvaW5k
ZXhlZGRiL0lEQktleVBhdGguY3BwOgorICAgICAgICAoaXNJZGVudGlmaWVyU3RhcnRDaGFyYWN0
ZXIpOiBVc2UgVV9HRVRfR0NfTUFTSyBpbnN0ZWFkIG9mIFdURjo6VW5pY29kZTo6Y2F0ZWdvcnku
CisgICAgICAgIChpc0lkZW50aWZpZXJDaGFyYWN0ZXIpOiBEaXR0by4KKworICAgICAgICAqIGNz
cy9DU1NQYXJzZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6bWFrZUxvd2VyKTogVXNlIHVfdG9s
b3dlciBpbnN0ZWFkIG9mIFdURjo6VW5pY29kZTo6dG9Mb3dlci4KKyAgICAgICAgQWxzbyBhc3Nl
cnQgdGhlIGNoYXJhY3RlciBmaXRzIGluIGEgVUNoYXIuCisKKyAgICAgICAgKiBkb20vRG9jdW1l
bnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6aXNWYWxpZE5hbWVTdGFydCk6IFVzZSBVX0dFVF9H
Q19NQVNLIGluc3RlYWQgb2YgV1RGOjpVbmljb2RlOjpjYXRlZ29yeSwKKyAgICAgICAgYW5kIHVf
Z2V0SW50UHJvcGVydHlWYWx1ZSBpbnN0ZWFkIG9mIFdURjo6VW5pY29kZTo6ZGVjb21wb3NpdGlv
blR5cGUuCisgICAgICAgIChXZWJDb3JlOjppc1ZhbGlkTmFtZVBhcnQpOiBEaXR0by4KKyAgICAg
ICAgKFdlYkNvcmU6OmNhbm9uaWNhbGl6ZWRUaXRsZSk6IERpdHRvLgorCisgICAgICAgICogZWRp
dGluZy9FZGl0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjppbnNlcnRUZXh0V2l0
aG91dFNlbmRpbmdUZXh0RXZlbnQpOiBVc2UgdV9pc1B1bmN0IGluc3RlYWQgb2YKKyAgICAgICAg
V1RGOjpVbmljb2RlOjppc1B1bmN0LgorCisgICAgICAgICogZWRpdGluZy9UZXh0SXRlcmF0b3Iu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6U2VhcmNoQnVmZmVyOjphcHBlbmQpOiBVc2UgdV9zdHJG
b2xkQ2FzZSBpbnN0ZWFkIG9mIFdURjo6VW5pY29kZTo6Zm9sZENhc2UuCisKKyAgICAgICAgKiBo
dG1sL0hUTUxFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxFbGVtZW50OjpkaXJl
Y3Rpb25hbGl0eSk6IFVzZSBVQ2hhckRpcmVjdGlvbiBpbnN0ZWFkIG9mCisgICAgICAgIFdURjo6
VW5pY29kZTo6RGlyZWN0aW9uLgorCisgICAgICAgICogaHRtbC9IVE1MU2VsZWN0RWxlbWVudC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MU2VsZWN0RWxlbWVudDo6ZGVmYXVsdEV2ZW50SGFu
ZGxlcik6IFVzZSB1X2lzcHJpbnQgaW5zdGVhZCBvZgorICAgICAgICBXVEY6OlVuaWNvZGU6Omlz
UHJpbnRhYmxlQ2hhci4KKworICAgICAgICAqIGh0bWwvVHlwZUFoZWFkLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OnN0cmlwTGVhZGluZ1doaXRlU3BhY2UpOiBVc2UgdV9jaGFyRGlyZWN0aW9uIGlu
c3RlYWQgb2YKKyAgICAgICAgV1RGOjpVbmljb2RlOjpkaXJlY3Rpb24uCisKKyAgICAgICAgKiBo
dG1sL3RyYWNrL1RleHRUcmFja0N1ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjppc0N1ZVBhcmFn
cmFwaFNlcGFyYXRvcik6IFVzZSB1X2NoYXJUeXBlIGluc3RlYWQgb2YKKyAgICAgICAgV1RGOjpV
bmljb2RlOjpjYXRlZ29yeS4KKyAgICAgICAgKFdlYkNvcmU6OlRleHRUcmFja0N1ZTo6ZGV0ZXJt
aW5lVGV4dERpcmVjdGlvbik6IFVzZSB1X2NoYXJEaXJlY3Rpb24gaW5zdGVhZCBvZgorICAgICAg
ICBXVEY6OlVuaWNvZGU6OmRpcmVjdGlvbi4KKworICAgICAgICAqIHBhZ2UvQ29udGV4dE1lbnVD
b250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnNlbGVjdGlvbkNvbnRhaW5zUG9zc2li
bGVXb3JkKTogVXNlIFVfR0VUX0dDX01BU0sgaW5zdGVhZCBvZgorICAgICAgICBXVEY6OlVuaWNv
ZGU6OmNhdGVnb3J5LgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ZvbnQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6Rm9udDo6Y2FuUmVjZWl2ZVRleHRFbXBoYXNpcyk6IERpdHRvLgorCisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvRm9udEdseXBocy5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpGb250R2x5cGhzOjpnbHlwaERhdGFBbmRQYWdlRm9yQ2hhcmFjdGVyKTogVXNlIHVfdG91
cHBlciBpbnN0ZWFkIG9mCisgICAgICAgIFdURjo6VW5pY29kZTo6dG9VcHBlci4gVXNlIHVfY2hh
ck1pcnJvciBpbnN0ZWFkIG9mIFdURjo6VW5pY29kZTo6bWlycm9yZWRDaGFyLgorCisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlRleHRSdW5JdGVyYXRvcjo6ZGlyZWN0aW9uKTogVXNlIHVfY2hhckRpcmVjdGlvbiBpbnN0
ZWFkIG9mCisgICAgICAgIFdURjo6VW5pY29kZTo6ZGlyZWN0aW9uLgorCisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvU1ZHR2x5cGguY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y2hhcmFjdGVy
c1dpdGhBcmFiaWNGb3JtKTogVXNlIHVibG9ja19nZXRDb2RlIGluc3RlYWQgb2YKKyAgICAgICAg
V1RGOjpVbmljb2RlOjppc0FyYWJpY0NoYXIuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9TdXJyb2dhdGVQYWlyQXdhcmVUZXh0SXRlcmF0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
U3Vycm9nYXRlUGFpckF3YXJlVGV4dEl0ZXJhdG9yOjpub3JtYWxpemVWb2ljaW5nTWFya3MpOiBV
c2UKKyAgICAgICAgdV9nZXRDb21iaW5pbmdDbGFzcyBpbnN0ZWFkIG9mIFdURjo6VW5pY29kZTo6
Y29tYmluaW5nQ2xhc3MuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9XaWR0aEl0ZXJh
dG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldpZHRoSXRlcmF0b3I6OmFkdmFuY2VJbnRlcm5h
bCk6IFVzZSB1X3RvdXBwZXIgaW5zdGVhZCBvZgorICAgICAgICBXVEY6OlVuaWNvZGU6OnRvVXBw
ZXIuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9tYWMvQ29tcGxleFRleHRDb250cm9s
bGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbXBsZXhUZXh0Q29udHJvbGxlcjo6Y29sbGVj
dENvbXBsZXhUZXh0UnVucyk6IEFkZGVkIHNvbWUKKyAgICAgICAgYXNzZXJ0aW9ucyBhYm91dCB0
aGUgdXNlciBvZiB1X3RvdXBwZXIgYW5kIHR3ZWFrZWQgY29kaW5nIHN0eWxlIGEgYml0LgorCisg
ICAgICAgICogcGxhdGZvcm0vdGV4dC9CaWRpQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpCaWRpQ29udGV4dDo6Y3JlYXRlVW5jYWNoZWQpOiBVc2UgVUNoYXJEaXJlY3Rpb24gaW5zdGVh
ZCBvZgorICAgICAgICBXVEY6OlVuaWNvZGU6OkRpcmVjdGlvbi4KKyAgICAgICAgKFdlYkNvcmU6
OkJpZGlDb250ZXh0OjpjcmVhdGUpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OmNvcHlDb250
ZXh0QW5kUmViYXNlbGluZUxldmVsKTogRGl0dG8uCisgICAgICAgICogcGxhdGZvcm0vdGV4dC9C
aWRpQ29udGV4dC5oOgorICAgICAgICAoV2ViQ29yZTo6QmlkaUNvbnRleHQ6OmRpcik6IERpdHRv
LgorICAgICAgICAoV2ViQ29yZTo6QmlkaUNvbnRleHQ6OkJpZGlDb250ZXh0KTogRGl0dG8uCisg
ICAgICAgICogcGxhdGZvcm0vdGV4dC9CaWRpUmVzb2x2ZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6
OkJpZGlTdGF0dXM6OkJpZGlTdGF0dXMpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkJpZGlF
bWJlZGRpbmc6OkJpZGlFbWJlZGRpbmcpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkJpZGlF
bWJlZGRpbmc6OmRpcmVjdGlvbik6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6QmlkaUNoYXJh
Y3RlclJ1bjo6QmlkaUNoYXJhY3RlclJ1bik6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6Qmlk
aVJlc29sdmVyOjpCaWRpUmVzb2x2ZXIpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkJpZGlS
ZXNvbHZlcjo6c2V0TGFzdERpcik6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6QmlkaVJlc29s
dmVyOjpzZXRMYXN0U3Ryb25nRGlyKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpCaWRpUmVz
b2x2ZXI6OnNldEVvckRpcik6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6QmlkaVJlc29sdmVy
OjpkaXIpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkJpZGlSZXNvbHZlcjo6c2V0RGlyKTog
RGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpCaWRpUmVzb2x2ZXI6OmFwcGVuZFJ1bik6IERpdHRv
LgorICAgICAgICAoV2ViQ29yZTo6QmlkaVJlc29sdmVyOjplbWJlZCk6IERpdHRvLgorICAgICAg
ICAoV2ViQ29yZTo6QmlkaVJlc29sdmVyOjpjaGVja0RpcmVjdGlvbkluTG93ZXJSYWlzZUVtYmVk
ZGluZ0xldmVsKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpCaWRpUmVzb2x2ZXI6Omxvd2Vy
RXhwbGljaXRFbWJlZGRpbmdMZXZlbCk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6QmlkaVJl
c29sdmVyOjpyYWlzZUV4cGxpY2l0RW1iZWRkaW5nTGV2ZWwpOiBEaXR0by4KKyAgICAgICAgKFdl
YkNvcmU6OkJpZGlSZXNvbHZlcjo6Y29tbWl0RXhwbGljaXRFbWJlZGRpbmcpOiBEaXR0by4KKyAg
ICAgICAgKFdlYkNvcmU6OkJpZGlSZXNvbHZlcjo6dXBkYXRlU3RhdHVzTGFzdEZyb21DdXJyZW50
RGlyZWN0aW9uKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpCaWRpUmVzb2x2ZXI6OmNyZWF0
ZUJpZGlSdW5zRm9yTGluZSk6IERpdHRvLgorCisgICAgICAgICogcGxhdGZvcm0vdGV4dC9TZWdt
ZW50ZWRTdHJpbmcuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNlZ21lbnRlZFN0cmluZzo6YWR2YW5j
ZUFuZEFTU0VSVElnbm9yaW5nQ2FzZSk6IFVzZSB1X2ZvbGRDYXNlCisgICAgICAgIGluc3RlYWQg
b2YgV1RGOjpVbmljb2RlOjpmb2xkQ2FzZS4KKworICAgICAgICAqIHBsYXRmb3JtL3RleHQvVGV4
dEJvdW5kYXJpZXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6ZmluZE5leHRXb3JkRnJvbUluZGV4
KTogVXNlIHVfaXNhbG51bSBpbnN0ZWFkIG9mCisgICAgICAgIFdURjo6VW5pY29kZTo6aXNBbHBo
YW51bWVyaWMuCisKKyAgICAgICAgKiBwbGF0Zm9ybS90ZXh0L1RleHRCb3VuZGFyaWVzLmg6Cisg
ICAgICAgIChXZWJDb3JlOjpyZXF1aXJlc0NvbnRleHRGb3JXb3JkQm91bmRhcnkpOiBVc2UgdV9n
ZXRJbnRQcm9wZXJ0eVZhbHVlIGRpcmVjdGx5CisgICAgICAgIGluc3RlYWQgb2YgV1RGOjpVbmlj
b2RlOjpyZXF1aXJlc0NvbXBsZXhDb250ZXh0Rm9yV29yZEJyZWFraW5nLgorCisgICAgICAgICog
cGxhdGZvcm0vdGV4dC9tYWMvVGV4dEJvdW5kYXJpZXMubW06IFJlbW92ZWQgZXhwbGljaXQgdXNl
IG9mIFdURjo6VW5pY29kZSwKKyAgICAgICAgd2hpY2ggd2FzIHVubmVlZGVkIGFuZCBhbHNvIHdp
bGwgbm8gbG9uZ2VyIGNvbXBpbGUuCisKKyAgICAgICAgKiByZW5kZXJpbmcvQmlkaVJ1bi5oOgor
ICAgICAgICAoV2ViQ29yZTo6QmlkaVJ1bjo6QmlkaVJ1bik6IFVzZSBVQ2hhckRpcmVjdGlvbiBp
bnN0ZWFkIG9mIFdURjo6VW5pY29kZTo6RGlyZWN0aW9uLgorICAgICAgICAqIHJlbmRlcmluZy9J
bmxpbmVGbG93Qm94Lmg6IERpdHRvLgorICAgICAgICAqIHJlbmRlcmluZy9JbmxpbmVJdGVyYXRv
ci5oOgorICAgICAgICAoV2ViQ29yZTo6ZW1iZWRDaGFyRnJvbURpcmVjdGlvbik6IERpdHRvLgor
ICAgICAgICAoV2ViQ29yZTo6bm90aWZ5T2JzZXJ2ZXJXaWxsRXhpdE9iamVjdCk6IERpdHRvLgor
ICAgICAgICAoV2ViQ29yZTo6SW5saW5lSXRlcmF0b3I6OmRpcmVjdGlvbik6IERpdHRvLgorICAg
ICAgICAoV2ViQ29yZTo6SXNvbGF0ZVRyYWNrZXI6OmVtYmVkKTogRGl0dG8uCisgICAgICAgIChX
ZWJDb3JlOjpJbmxpbmVCaWRpUmVzb2x2ZXI6OmFwcGVuZFJ1bik6IERpdHRvLgorCisgICAgICAg
ICogcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmlzUHVuY3R1
YXRpb25Gb3JGaXJzdExldHRlcik6IFVzZSBVX0dFVF9HQ19NQVNLIGluc3RlYWQgb2YKKyAgICAg
ICAgV1RGOjpVbmljb2RlOjpjYXRlZ29yeS4KKworICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJC
bG9ja0xpbmVMYXlvdXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6ZGV0ZXJtaW5lRGlyZWN0aW9u
YWxpdHkpOiBVc2UgdV9jaGFyRGlyZWN0aW9uIGluc3RlYWQgb2YKKyAgICAgICAgV1RGOjpVbmlj
b2RlOjpkaXJlY3Rpb24uCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9ja0Zsb3c6OmhhbmRs
ZVRyYWlsaW5nU3BhY2VzKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpzdGF0dXNXaXRoRGly
ZWN0aW9uKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpMaW5lQnJlYWtlcjo6bmV4dFNlZ21l
bnRCcmVhayk6IFVzZSBVX0dFVF9HQ19NQVNLIGluc3RlYWQgb2YgCisgICAgICAgIFdURjo6VW5p
Y29kZTo6Y2F0ZWdvcnkuCisKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGlzdE1hcmtlci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMaXN0TWFya2VyOjpwYWludCk6IFVzZSB1X2No
YXJEaXJlY3Rpb24gaW5zdGVhZCBvZiAKKyAgICAgICAgV1RGOjpVbmljb2RlOjpkaXJlY3Rpb24u
CisKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTWVudUxpc3QuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyTWVudUxpc3Q6OmFkanVzdElubmVyU3R5bGUpOiBVc2UgVUNoYXJEaXJlY3Rp
b24gaW5zdGVhZCBvZgorICAgICAgICBXVEY6OlVuaWNvZGU6OkRpcmVjdGlvbi4KKworICAgICAg
ICAqIHJlbmRlcmluZy9SZW5kZXJUZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Om1ha2VDYXBp
dGFsaXplZCk6IFVzZSB1X3RvdGlsZSBpbnN0ZWFkIG9mIFdURjo6VW5pY29kZTo6dG9UaXRsZUNh
c2UuCisgICAgICAgIEFsc28gYWRkZWQgYSBjb21tZW50IGFib3V0IHRoZSBmYWN0IHRoYXQgd2Ug
bmVlZCB0byB1c2UgdV9zdHJUb1RpdGxlIGluc3RlYWQuCisKKyAgICAgICAgKiByZW5kZXJpbmcv
Um9vdElubGluZUJveC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSb290SW5saW5lQm94OjpsaW5l
QnJlYWtCaWRpU3RhdHVzKTogVXNlIFVDaGFyRGlyZWN0aW9uIGluc3RlYWQgb2YKKyAgICAgICAg
V1RGOjpVbmljb2RlOjpEaXJlY3Rpb24uCisKKyAgICAgICAgKiBzdmcvU1ZHRm9udERhdGEuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6U1ZHRm9udERhdGE6OmNyZWF0ZVN0cmluZ1dpdGhNaXJyb3Jl
ZENoYXJhY3RlcnMpOiBVc2UgdV9jaGFyTWlycm9yCisgICAgICAgIGluc3RlYWQgb2YgV1RGOjpV
bmljb2RlOjptaXJyb3JlZENoYXIuCisKKyAgICAgICAgKiB4bWwvWFBhdGhQYXJzZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6WFBhdGg6OmNoYXJDYXQpOiBVc2UgVV9HRVRfR0NfTUFTSyBpbnN0
ZWFkIG9mIFdURjo6VW5pY29kZTo6Y2F0ZWdvcnkuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy93aW4vVW5pc2NyaWJlQ29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpVbmlz
Y3JpYmVDb250cm9sbGVyOjphZHZhbmNlKToKKyAgICAgICAgKiBwbGF0Zm9ybS93aW4vUG9wdXBN
ZW51V2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBvcHVwTWVudVdpbjo6cGFpbnQpOgorICAg
ICAgICAqIHBsYXRmb3JtL3dpbi9XZWJDb3JlVGV4dFJlbmRlcmVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OmlzT25lTGVmdFRvUmlnaHRSdW4pOgorICAgICAgICBNb3JlIG9mIHRoZSBzYW1lIGZv
ciBXaW5kb3dzLgorCiAyMDEzLTEwLTEwICBBbmRyZWFzIEtsaW5nICA8YWtsaW5nQGFwcGxlLmNv
bT4KIAogICAgICAgICBLaWxsIFdlYkNvcmU6OkJpbmRpbmdTdGF0ZS4KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTGV4ZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3BhcnNlci9MZXhlci5jcHAKaW5kZXggM2MwYzkxNDg5NmJjZjY2YThmNjQ0OWY4NjEzZGRk
MWFhZTNkZTMyNS4uZmI2MmI5NzNmMjhiZTMzZDg2ODg4NWFkNWI5YjlmNDg0NmZjMWRkNCAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9MZXhlci5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9MZXhlci5jcHAKQEAgLTM3LDkgKzM3LDYgQEAKICNp
bmNsdWRlIDxzdHJpbmcuaD4KICNpbmNsdWRlIDx3dGYvQXNzZXJ0aW9ucy5oPgogCi11c2luZyBu
YW1lc3BhY2UgV1RGOwotdXNpbmcgbmFtZXNwYWNlIFVuaWNvZGU7Ci0KICNpbmNsdWRlICJLZXl3
b3JkTG9va3VwLmgiCiAjaW5jbHVkZSAiTGV4ZXIubHV0LmgiCiAjaW5jbHVkZSAiUGFyc2VyLmgi
CkBAIC02MzcsOSArNjM0LDkgQEAgQUxXQVlTX0lOTElORSBib29sIExleGVyPFQ+OjpsYXN0VG9r
ZW5XYXNSZXN0cktleXdvcmQoKSBjb25zdAogICAgIHJldHVybiBtX2xhc3RUb2tlbiA9PSBDT05U
SU5VRSB8fCBtX2xhc3RUb2tlbiA9PSBCUkVBSyB8fCBtX2xhc3RUb2tlbiA9PSBSRVRVUk4gfHwg
bV9sYXN0VG9rZW4gPT0gVEhST1c7CiB9CiAKLXN0YXRpYyBORVZFUl9JTkxJTkUgYm9vbCBpc05v
bkxhdGluMUlkZW50U3RhcnQoaW50IGMpCitzdGF0aWMgTkVWRVJfSU5MSU5FIGJvb2wgaXNOb25M
YXRpbjFJZGVudFN0YXJ0KFVDaGFyIGMpCiB7Ci0gICAgcmV0dXJuIGNhdGVnb3J5KGMpICYgKExl
dHRlcl9VcHBlcmNhc2UgfCBMZXR0ZXJfTG93ZXJjYXNlIHwgTGV0dGVyX1RpdGxlY2FzZSB8IExl
dHRlcl9Nb2RpZmllciB8IExldHRlcl9PdGhlcik7CisgICAgcmV0dXJuIFVfR0VUX0dDX01BU0so
YykgJiBVX0dDX0xfTUFTSzsKIH0KIAogc3RhdGljIEFMV0FZU19JTkxJTkUgYm9vbCBpc0xhdGlu
MShMQ2hhcikKQEAgLTY2NCw4ICs2NjEsNyBAQCBzdGF0aWMgaW5saW5lIGJvb2wgaXNJZGVudFN0
YXJ0KFVDaGFyIGMpCiAKIHN0YXRpYyBORVZFUl9JTkxJTkUgYm9vbCBpc05vbkxhdGluMUlkZW50
UGFydChpbnQgYykKIHsKLSAgICByZXR1cm4gKGNhdGVnb3J5KGMpICYgKExldHRlcl9VcHBlcmNh
c2UgfCBMZXR0ZXJfTG93ZXJjYXNlIHwgTGV0dGVyX1RpdGxlY2FzZSB8IExldHRlcl9Nb2RpZmll
ciB8IExldHRlcl9PdGhlcgotICAgICAgICB8IE1hcmtfTm9uU3BhY2luZyB8IE1hcmtfU3BhY2lu
Z0NvbWJpbmluZyB8IE51bWJlcl9EZWNpbWFsRGlnaXQgfCBQdW5jdHVhdGlvbl9Db25uZWN0b3Ip
KSB8fCBjID09IDB4MjAwQyB8fCBjID09IDB4MjAwRDsKKyAgICByZXR1cm4gKFVfR0VUX0dDX01B
U0soYykgJiAoVV9HQ19MX01BU0sgfCBVX0dDX01OX01BU0sgfCBVX0dDX01DX01BU0sgfCBVX0dD
X05EX01BU0sgfCBVX0dDX1BDX01BU0spKSB8fCBjID09IDB4MjAwQyB8fCBjID09IDB4MjAwRDsK
IH0KIAogc3RhdGljIEFMV0FZU19JTkxJTkUgYm9vbCBpc0lkZW50UGFydChMQ2hhciBjKQpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9MZXhlci5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3BhcnNlci9MZXhlci5oCmluZGV4IDEzN2ZmNWZiNjQ0MTQxMzNiOTc3MmUz
NjYwZmU1MzFkMDBlMTA2NGMuLjUxYzlhMWQ5OGQ0NjQyZmMxMmQ1Y2Q5YWMzMTg4ZmU3MjI5ZjE0
ODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTGV4ZXIuaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL0xleGVyLmgKQEAgLTI0OCw3ICsyNDgsNyBA
QCBBTFdBWVNfSU5MSU5FIGJvb2wgTGV4ZXI8TENoYXI+Ojppc1doaXRlU3BhY2UoTENoYXIgY2gp
CiB0ZW1wbGF0ZSA8PgogQUxXQVlTX0lOTElORSBib29sIExleGVyPFVDaGFyPjo6aXNXaGl0ZVNw
YWNlKFVDaGFyIGNoKQogewotICAgIHJldHVybiAoY2ggPCAyNTYpID8gTGV4ZXI8TENoYXI+Ojpp
c1doaXRlU3BhY2Uoc3RhdGljX2Nhc3Q8TENoYXI+KGNoKSkgOiAoV1RGOjpVbmljb2RlOjppc1Nl
cGFyYXRvclNwYWNlKGNoKSB8fCBjaCA9PSAweEZFRkYpOworICAgIHJldHVybiAoY2ggPCAyNTYp
ID8gTGV4ZXI8TENoYXI+Ojppc1doaXRlU3BhY2Uoc3RhdGljX2Nhc3Q8TENoYXI+KGNoKSkgOiAo
dV9jaGFyVHlwZShjaCkgPT0gVV9TUEFDRV9TRVBBUkFUT1IgfHwgY2ggPT0gMHhGRUZGKTsKIH0K
IAogdGVtcGxhdGUgPD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTRnVuY3Rpb24uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlv
bi5jcHAKaW5kZXggYzEwNjBiOWY4NGEyMTQ3YmE4N2QyMGExNzY2MDE5MzIyNGQ5ZjBkZC4uMjcw
NTk1NzhlNmVjYmUxY2JhYTE2NWEyZDcxZDY3MDBlZTgwNDJkNSAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5jcHAKQEAgLTQ1LDEwICs0NSw4IEBACiAjaW5j
bHVkZSAiUHJvcGVydHlOYW1lQXJyYXkuaCIKICNpbmNsdWRlICJTdGFja1Zpc2l0b3IuaCIKIAot
dXNpbmcgbmFtZXNwYWNlIFdURjsKLXVzaW5nIG5hbWVzcGFjZSBVbmljb2RlOwotCiBuYW1lc3Bh
Y2UgSlNDIHsKKwogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjYWxsSG9zdEZ1bmN0aW9u
QXNDb25zdHJ1Y3RvcihFeGVjU3RhdGUqIGV4ZWMpCiB7CiAgICAgcmV0dXJuIHRocm93Vk1FcnJv
cihleGVjLCBjcmVhdGVOb3RBQ29uc3RydWN0b3JFcnJvcihleGVjLCBleGVjLT5jYWxsZWUoKSkp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmpl
Y3RGdW5jdGlvbnMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxP
YmplY3RGdW5jdGlvbnMuY3BwCmluZGV4IGE0ZDE5NGMwY2IwOWYyNzkyODY3NWQwZTM1ZjhmMGE3
NjE4ODlhOTMuLjkyMDA1NjdlMTQ5YmExNWM1NGRkZGFiOTA0NGU1ZjBmZGNhZDI0MzggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0RnVuY3Rp
b25zLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVj
dEZ1bmN0aW9ucy5jcHAKQEAgLTE2OSw3ICsxNjksNyBAQCBib29sIGlzU3RyV2hpdGVTcGFjZShV
Q2hhciBjKQogICAgICAgICBjYXNlIDB4RkVGRjoKICAgICAgICAgICAgIHJldHVybiB0cnVlOwog
ICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgcmV0dXJuIGMgPiAweGZmICYmIGlzU2VwYXJh
dG9yU3BhY2UoYyk7CisgICAgICAgICAgICByZXR1cm4gYyA+IDB4RkYgJiYgdV9jaGFyVHlwZShj
KSA9PSBVX1NQQUNFX1NFUEFSQVRPUjsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS95YXJyL1lhcnJJbnRlcnByZXRlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUveWFyci9ZYXJySW50ZXJwcmV0ZXIuY3BwCmluZGV4IGYwMzEyZWEyNTE5YWMzZDhjNjk5
ZTg4ZDE5NjE5NmQ2MDZkNDY4ZDMuLmU3NzVhZDYyNDI4MWU0NjY1YjMyZmRiYTE0MDFkZGI1ODJh
ZWY3N2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS95YXJyL1lhcnJJbnRlcnBy
ZXRlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIvWWFyckludGVycHJldGVy
LmNwcApAQCAtMTUxMCw4ICsxNTEwLDExIEBAIHB1YmxpYzoKICAgICB2b2lkIGF0b21QYXR0ZXJu
Q2hhcmFjdGVyKFVDaGFyIGNoLCB1bnNpZ25lZCBpbnB1dFBvc2l0aW9uLCB1bnNpZ25lZCBmcmFt
ZUxvY2F0aW9uLCBDaGVja2VkPHVuc2lnbmVkPiBxdWFudGl0eUNvdW50LCBRdWFudGlmaWVyVHlw
ZSBxdWFudGl0eVR5cGUpCiAgICAgewogICAgICAgICBpZiAobV9wYXR0ZXJuLm1faWdub3JlQ2Fz
ZSkgewotICAgICAgICAgICAgVUNoYXIgbG8gPSBVbmljb2RlOjp0b0xvd2VyKGNoKTsKLSAgICAg
ICAgICAgIFVDaGFyIGhpID0gVW5pY29kZTo6dG9VcHBlcihjaCk7CisgICAgICAgICAgICBBU1NF
UlQodV90b2xvd2VyKGNoKSA8PSAweEZGRkYpOworICAgICAgICAgICAgQVNTRVJUKHVfdG91cHBl
cihjaCkgPD0gMHhGRkZGKTsKKworICAgICAgICAgICAgVUNoYXIgbG8gPSB1X3RvbG93ZXIoY2gp
OworICAgICAgICAgICAgVUNoYXIgaGkgPSB1X3RvdXBwZXIoY2gpOwogCiAgICAgICAgICAgICBp
ZiAobG8gIT0gaGkpIHsKICAgICAgICAgICAgICAgICBtX2JvZHlEaXNqdW5jdGlvbi0+dGVybXMu
YXBwZW5kKEJ5dGVUZXJtKGxvLCBoaSwgaW5wdXRQb3NpdGlvbiwgZnJhbWVMb2NhdGlvbiwgcXVh
bnRpdHlDb3VudCwgcXVhbnRpdHlUeXBlKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi90
ZXh0L1N0cmluZ0hhc2guaCBiL1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nSGFzaC5oCmluZGV4
IDEwNDMwNzQ4YTAxMDA0MDc4OWJkZTg0MWFlZGJjMDIxZDlhNTMzZjQuLmYwNDYwNGI0NWU2YjAx
M2I4ZTBkOTcwMTNjZDM3ZGFhYzMzMjU5OGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3Rl
eHQvU3RyaW5nSGFzaC5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nSGFzaC5oCkBA
IC03MywyNiArNzMsMzEgQEAgbmFtZXNwYWNlIFdURiB7CiAKICAgICBjbGFzcyBDYXNlRm9sZGlu
Z0hhc2ggewogICAgIHB1YmxpYzoKLSAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RhdGlj
IGlubGluZSBVQ2hhciBmb2xkQ2FzZShUIGNoKQorICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBU
PiBzdGF0aWMgaW5saW5lIFVDaGFyIGZvbGRDYXNlKFQgY2hhcmFjdGVyKQogICAgICAgICB7Ci0g
ICAgICAgICAgICByZXR1cm4gV1RGOjpVbmljb2RlOjpmb2xkQ2FzZShjaCk7CisgICAgICAgICAg
ICByZXR1cm4gdV9mb2xkQ2FzZShjaGFyYWN0ZXIsIFVfRk9MRF9DQVNFX0RFRkFVTFQpOwogICAg
ICAgICB9CiAKICAgICAgICAgc3RhdGljIHVuc2lnbmVkIGhhc2goY29uc3QgVUNoYXIqIGRhdGEs
IHVuc2lnbmVkIGxlbmd0aCkKICAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIFN0cmluZ0hh
c2hlcjo6Y29tcHV0ZUhhc2hBbmRNYXNrVG9wOEJpdHM8VUNoYXIsIGZvbGRDYXNlPFVDaGFyPiA+
KGRhdGEsIGxlbmd0aCk7CisgICAgICAgICAgICByZXR1cm4gU3RyaW5nSGFzaGVyOjpjb21wdXRl
SGFzaEFuZE1hc2tUb3A4Qml0czxVQ2hhciwgZm9sZENhc2U8VUNoYXI+PihkYXRhLCBsZW5ndGgp
OwogICAgICAgICB9CiAKLSAgICAgICAgc3RhdGljIHVuc2lnbmVkIGhhc2goU3RyaW5nSW1wbCog
c3RyKQorICAgICAgICBzdGF0aWMgdW5zaWduZWQgaGFzaChTdHJpbmdJbXBsJiBzdHJpbmcpCiAg
ICAgICAgIHsKLSAgICAgICAgICAgIGlmIChzdHItPmlzOEJpdCgpKQotICAgICAgICAgICAgICAg
IHJldHVybiBoYXNoKHN0ci0+Y2hhcmFjdGVyczgoKSwgc3RyLT5sZW5ndGgoKSk7Ci0gICAgICAg
ICAgICByZXR1cm4gaGFzaChzdHItPmNoYXJhY3RlcnMxNigpLCBzdHItPmxlbmd0aCgpKTsKKyAg
ICAgICAgICAgIGlmIChzdHJpbmcuaXM4Qml0KCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIGhh
c2goc3RyaW5nLmNoYXJhY3RlcnM4KCksIHN0cmluZy5sZW5ndGgoKSk7CisgICAgICAgICAgICBy
ZXR1cm4gaGFzaChzdHJpbmcuY2hhcmFjdGVyczE2KCksIHN0cmluZy5sZW5ndGgoKSk7CisgICAg
ICAgIH0KKyAgICAgICAgc3RhdGljIHVuc2lnbmVkIGhhc2goU3RyaW5nSW1wbCogc3RyaW5nKQor
ICAgICAgICB7CisgICAgICAgICAgICBBU1NFUlQoc3RyaW5nKTsKKyAgICAgICAgICAgIHJldHVy
biBoYXNoKCpzdHJpbmcpOwogICAgICAgICB9CiAKICAgICAgICAgc3RhdGljIHVuc2lnbmVkIGhh
c2goY29uc3QgTENoYXIqIGRhdGEsIHVuc2lnbmVkIGxlbmd0aCkKICAgICAgICAgewotICAgICAg
ICAgICAgcmV0dXJuIFN0cmluZ0hhc2hlcjo6Y29tcHV0ZUhhc2hBbmRNYXNrVG9wOEJpdHM8TENo
YXIsIGZvbGRDYXNlPExDaGFyPiA+KGRhdGEsIGxlbmd0aCk7CisgICAgICAgICAgICByZXR1cm4g
U3RyaW5nSGFzaGVyOjpjb21wdXRlSGFzaEFuZE1hc2tUb3A4Qml0czxMQ2hhciwgZm9sZENhc2U8
TENoYXI+PihkYXRhLCBsZW5ndGgpOwogICAgICAgICB9CiAKICAgICAgICAgc3RhdGljIGlubGlu
ZSB1bnNpZ25lZCBoYXNoKGNvbnN0IGNoYXIqIGRhdGEsIHVuc2lnbmVkIGxlbmd0aCkKQEAgLTEw
Nyw3ICsxMTIsNyBAQCBuYW1lc3BhY2UgV1RGIHsKIAogICAgICAgICBzdGF0aWMgdW5zaWduZWQg
aGFzaChjb25zdCBSZWZQdHI8U3RyaW5nSW1wbD4mIGtleSkgCiAgICAgICAgIHsKLSAgICAgICAg
ICAgIHJldHVybiBoYXNoKGtleS5nZXQoKSk7CisgICAgICAgICAgICByZXR1cm4gaGFzaCgqa2V5
KTsKICAgICAgICAgfQogCiAgICAgICAgIHN0YXRpYyBib29sIGVxdWFsKGNvbnN0IFJlZlB0cjxT
dHJpbmdJbXBsPiYgYSwgY29uc3QgUmVmUHRyPFN0cmluZ0ltcGw+JiBiKQpAQCAtMTI5LDcgKzEz
NCw5IEBAIG5hbWVzcGFjZSBXVEYgewogICAgICAgICB9CiAgICAgICAgIHN0YXRpYyBib29sIGVx
dWFsKGNvbnN0IEF0b21pY1N0cmluZyYgYSwgY29uc3QgQXRvbWljU3RyaW5nJiBiKQogICAgICAg
ICB7Ci0gICAgICAgICAgICByZXR1cm4gKGEgPT0gYikgfHwgZXF1YWwoYS5pbXBsKCksIGIuaW1w
bCgpKTsKKyAgICAgICAgICAgIC8vIEZJWE1FOiBJcyB0aGUgImEgPT0gYiIgaGVyZSBhIGhlbHBm
dWwgb3B0aW1pemF0aW9uPworICAgICAgICAgICAgLy8gSXQgbWFrZXMgYWxsIGNhc2VzIHdoZXJl
IHRoZSBzdHJpbmdzIGFyZSBub3QgaWRlbnRpY2FsIHNsaWdodGx5IHNsb3dlci4KKyAgICAgICAg
ICAgIHJldHVybiBhID09IGIgfHwgZXF1YWwoYS5pbXBsKCksIGIuaW1wbCgpKTsKICAgICAgICAg
fQogCiAgICAgICAgIHN0YXRpYyBjb25zdCBib29sIHNhZmVUb0NvbXBhcmVUb0VtcHR5T3JEZWxl
dGVkID0gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ0ltcGwu
Y3BwIGIvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdJbXBsLmNwcAppbmRleCA0MTAzMGUwNDM0
YzUyYTk5OTUzYzYyOTJiZjUwNTZjZGQ1ZDdmZTRhLi5kMDc5ZGVkMGNjY2RiNzdiNTM3OTA0NmJh
M2ZkOTUyZWZlYWFhM2FhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ0lt
cGwuY3BwCisrKyBiL1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nSW1wbC5jcHAKQEAgLTQxNSw4
ICs0MTUsMTAgQEAgU2xvd1BhdGg4Yml0TG93ZXI6CiAgICAgICAgICAgICBMQ2hhciBjaGFyYWN0
ZXIgPSBtX2RhdGE4W2ldOwogICAgICAgICAgICAgaWYgKCEoY2hhcmFjdGVyICYgfjB4N0YpKQog
ICAgICAgICAgICAgICAgIGRhdGE4W2ldID0gdG9BU0NJSUxvd2VyKGNoYXJhY3Rlcik7Ci0gICAg
ICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgZGF0YThbaV0gPSBzdGF0aWNfY2FzdDxMQ2hh
cj4oVW5pY29kZTo6dG9Mb3dlcihjaGFyYWN0ZXIpKTsKKyAgICAgICAgICAgIGVsc2UgeworICAg
ICAgICAgICAgICAgIEFTU0VSVCh1X3RvbG93ZXIoY2hhcmFjdGVyKSA8PSAweEZGKTsKKyAgICAg
ICAgICAgICAgICBkYXRhOFtpXSA9IHN0YXRpY19jYXN0PExDaGFyPih1X3RvbG93ZXIoY2hhcmFj
dGVyKSk7CisgICAgICAgICAgICB9CiAgICAgICAgIH0KIAogICAgICAgICByZXR1cm4gbmV3SW1w
bC5yZWxlYXNlKCk7CkBAIC00NTMsMTQgKzQ1NSwxNSBAQCBTbG93UGF0aDhiaXRMb3dlcjoKICAg
ICBVQ2hhciogZGF0YTE2OwogICAgIFJlZlB0cjxTdHJpbmdJbXBsPiBuZXdJbXBsID0gY3JlYXRl
VW5pbml0aWFsaXplZEludGVybmFsTm9uRW1wdHkobV9sZW5ndGgsIGRhdGExNik7CiAKLSAgICBi
b29sIGVycm9yOwotICAgIGludDMyX3QgcmVhbExlbmd0aCA9IFVuaWNvZGU6OnRvTG93ZXIoZGF0
YTE2LCBsZW5ndGgsIG1fZGF0YTE2LCBtX2xlbmd0aCwgJmVycm9yKTsKLSAgICBpZiAoIWVycm9y
ICYmIHJlYWxMZW5ndGggPT0gbGVuZ3RoKQorICAgIFVFcnJvckNvZGUgc3RhdHVzID0gVV9aRVJP
X0VSUk9SOworICAgIGludDMyX3QgcmVhbExlbmd0aCA9IHVfc3RyVG9Mb3dlcihkYXRhMTYsIGxl
bmd0aCwgbV9kYXRhMTYsIG1fbGVuZ3RoLCAiIiwgJnN0YXR1cyk7CisgICAgaWYgKFVfU1VDQ0VT
UyhzdGF0dXMpICYmIHJlYWxMZW5ndGggPT0gbGVuZ3RoKQogICAgICAgICByZXR1cm4gbmV3SW1w
bC5yZWxlYXNlKCk7CiAKICAgICBuZXdJbXBsID0gY3JlYXRlVW5pbml0aWFsaXplZChyZWFsTGVu
Z3RoLCBkYXRhMTYpOwotICAgIFVuaWNvZGU6OnRvTG93ZXIoZGF0YTE2LCByZWFsTGVuZ3RoLCBt
X2RhdGExNiwgbV9sZW5ndGgsICZlcnJvcik7Ci0gICAgaWYgKGVycm9yKQorICAgIHN0YXR1cyA9
IFVfWkVST19FUlJPUjsKKyAgICB1X3N0clRvTG93ZXIoZGF0YTE2LCByZWFsTGVuZ3RoLCBtX2Rh
dGExNiwgbV9sZW5ndGgsICIiLCAmc3RhdHVzKTsKKyAgICBpZiAoVV9GQUlMVVJFKHN0YXR1cykp
CiAgICAgICAgIHJldHVybiB0aGlzOwogICAgIHJldHVybiBuZXdJbXBsLnJlbGVhc2UoKTsKIH0K
QEAgLTUwNiw3ICs1MDksOCBAQCBQYXNzUmVmUHRyPFN0cmluZ0ltcGw+IFN0cmluZ0ltcGw6OnVw
cGVyKCkKICAgICAgICAgICAgIExDaGFyIGMgPSBtX2RhdGE4W2ldOwogICAgICAgICAgICAgaWYg
KFVOTElLRUxZKGMgPT0gc21hbGxMZXR0ZXJTaGFycFMpKQogICAgICAgICAgICAgICAgICsrbnVt
YmVyU2hhcnBTQ2hhcmFjdGVyczsKLSAgICAgICAgICAgIFVDaGFyIHVwcGVyID0gVW5pY29kZTo6
dG9VcHBlcihjKTsKKyAgICAgICAgICAgIEFTU0VSVCh1X3RvdXBwZXIoYykgPD0gMHhGRkZGKTsK
KyAgICAgICAgICAgIFVDaGFyIHVwcGVyID0gdV90b3VwcGVyKGMpOwogICAgICAgICAgICAgaWYg
KFVOTElLRUxZKHVwcGVyID4gMHhmZikpIHsKICAgICAgICAgICAgICAgICAvLyBTaW5jZSB0aGlz
IHVwcGVyLWNhc2VkIGNoYXJhY3RlciBkb2VzIG5vdCBmaXQgaW4gYW4gOC1iaXQgc3RyaW5nLCB3
ZSBuZWVkIHRvIHRha2UgdGhlIDE2LWJpdCBwYXRoLgogICAgICAgICAgICAgICAgIGdvdG8gdXBj
b252ZXJ0OwpAQCAtNTI3LDggKzUzMSwxMCBAQCBQYXNzUmVmUHRyPFN0cmluZ0ltcGw+IFN0cmlu
Z0ltcGw6OnVwcGVyKCkKICAgICAgICAgICAgIGlmIChjID09IHNtYWxsTGV0dGVyU2hhcnBTKSB7
CiAgICAgICAgICAgICAgICAgKmRlc3QrKyA9ICdTJzsKICAgICAgICAgICAgICAgICAqZGVzdCsr
ID0gJ1MnOwotICAgICAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICAgICAgKmRlc3QrKyA9IHN0
YXRpY19jYXN0PExDaGFyPihVbmljb2RlOjp0b1VwcGVyKGMpKTsKKyAgICAgICAgICAgIH0gZWxz
ZSB7CisgICAgICAgICAgICAgICAgQVNTRVJUKHVfdG91cHBlcihjKSA8PSAweEZGKTsKKyAgICAg
ICAgICAgICAgICAqZGVzdCsrID0gc3RhdGljX2Nhc3Q8TENoYXI+KHVfdG91cHBlcihjKSk7Cisg
ICAgICAgICAgICB9CiAgICAgICAgIH0KIAogICAgICAgICByZXR1cm4gbmV3SW1wbC5yZWxlYXNl
KCk7CkBAIC01NTEsMTMgKzU1NywxNCBAQCB1cGNvbnZlcnQ6CiAgICAgICAgIHJldHVybiBuZXdJ
bXBsLnJlbGVhc2UoKTsKIAogICAgIC8vIERvIGEgc2xvd2VyIGltcGxlbWVudGF0aW9uIGZvciBj
YXNlcyB0aGF0IGluY2x1ZGUgbm9uLUFTQ0lJIGNoYXJhY3RlcnMuCi0gICAgYm9vbCBlcnJvcjsK
LSAgICBpbnQzMl90IHJlYWxMZW5ndGggPSBVbmljb2RlOjp0b1VwcGVyKGRhdGExNiwgbGVuZ3Ro
LCBzb3VyY2UxNiwgbV9sZW5ndGgsICZlcnJvcik7Ci0gICAgaWYgKCFlcnJvciAmJiByZWFsTGVu
Z3RoID09IGxlbmd0aCkKKyAgICBVRXJyb3JDb2RlIHN0YXR1cyA9IFVfWkVST19FUlJPUjsKKyAg
ICBpbnQzMl90IHJlYWxMZW5ndGggPSB1X3N0clRvVXBwZXIoZGF0YTE2LCBsZW5ndGgsIHNvdXJj
ZTE2LCBtX2xlbmd0aCwgIiIsICZzdGF0dXMpOworICAgIGlmIChVX1NVQ0NFU1Moc3RhdHVzKSAm
JiByZWFsTGVuZ3RoID09IGxlbmd0aCkKICAgICAgICAgcmV0dXJuIG5ld0ltcGw7CiAgICAgbmV3
SW1wbCA9IGNyZWF0ZVVuaW5pdGlhbGl6ZWQocmVhbExlbmd0aCwgZGF0YTE2KTsKLSAgICBVbmlj
b2RlOjp0b1VwcGVyKGRhdGExNiwgcmVhbExlbmd0aCwgc291cmNlMTYsIG1fbGVuZ3RoLCAmZXJy
b3IpOwotICAgIGlmIChlcnJvcikKKyAgICBzdGF0dXMgPSBVX1pFUk9fRVJST1I7CisgICAgdV9z
dHJUb1VwcGVyKGRhdGExNiwgcmVhbExlbmd0aCwgc291cmNlMTYsIG1fbGVuZ3RoLCAiIiwgJnN0
YXR1cyk7CisgICAgaWYgKFVfRkFJTFVSRShzdGF0dXMpKQogICAgICAgICByZXR1cm4gdGhpczsK
ICAgICByZXR1cm4gbmV3SW1wbC5yZWxlYXNlKCk7CiB9CkBAIC01NzQsMTAgKzU4MSw2IEBAIHN0
YXRpYyBpbmxpbmUgYm9vbCBuZWVkc1R1cmtpc2hDYXNpbmdSdWxlcyhjb25zdCBBdG9taWNTdHJp
bmcmIGxvY2FsZUlkZW50aWZpZXIpCiAKIFJlZlB0cjxTdHJpbmdJbXBsPiBTdHJpbmdJbXBsOjps
b3dlcihjb25zdCBBdG9taWNTdHJpbmcmIGxvY2FsZUlkZW50aWZpZXIpCiB7Ci0jaWYgIVVTRShJ
Q1VfVU5JQ09ERSkKLSAgICBVTlVTRURfUEFSQU0obG9jYWxlSWRlbnRpZmllcik7Ci0gICAgcmV0
dXJuIGxvd2VyKCk7Ci0jZWxzZQogICAgIC8vIFVzZSB0aGUgbW9yZS1vcHRpbWl6ZWQgY29kZSBw
YXRoIG1vc3Qgb2YgdGhlIHRpbWUuCiAgICAgLy8gQXNzdW1pbmcgaGVyZSB0aGF0IHRoZSBvbmx5
IGxvY2FsZS1zcGVjaWZpYyBsb3dlcmNhc2luZyBpcyB0aGUgVHVya2lzaCBjYXNpbmcgcnVsZXMu
CiAgICAgLy8gRklYTUU6IENvdWxkIHBvc3NpYmx5IG9wdGltaXplIGZ1cnRoZXIgYnkgbG9va2lu
ZyBmb3IgdGhlIHNwZWNpZmljIHNlcXVlbmNlcwpAQCAtNjAzLDIxICs2MDYsMTYgQEAgUmVmUHRy
PFN0cmluZ0ltcGw+IFN0cmluZ0ltcGw6Omxvd2VyKGNvbnN0IEF0b21pY1N0cmluZyYgbG9jYWxl
SWRlbnRpZmllcikKICAgICBpbnQgcmVhbExlbmd0aCA9IHVfc3RyVG9Mb3dlcihkYXRhMTYsIGxl
bmd0aCwgc291cmNlMTYsIGxlbmd0aCwgInRyIiwgJnN0YXR1cyk7CiAgICAgaWYgKFVfU1VDQ0VT
UyhzdGF0dXMpICYmIHJlYWxMZW5ndGggPT0gbGVuZ3RoKQogICAgICAgICByZXR1cm4gbmV3U3Ry
aW5nOwotICAgIHN0YXR1cyA9IFVfWkVST19FUlJPUjsKICAgICBuZXdTdHJpbmcgPSBjcmVhdGVV
bmluaXRpYWxpemVkKHJlYWxMZW5ndGgsIGRhdGExNik7CisgICAgc3RhdHVzID0gVV9aRVJPX0VS
Uk9SOwogICAgIHVfc3RyVG9Mb3dlcihkYXRhMTYsIHJlYWxMZW5ndGgsIHNvdXJjZTE2LCBsZW5n
dGgsICJ0ciIsICZzdGF0dXMpOwogICAgIGlmIChVX0ZBSUxVUkUoc3RhdHVzKSkKICAgICAgICAg
cmV0dXJuIHRoaXM7CiAgICAgcmV0dXJuIG5ld1N0cmluZy5yZWxlYXNlKCk7Ci0jZW5kaWYKIH0K
IAogUmVmUHRyPFN0cmluZ0ltcGw+IFN0cmluZ0ltcGw6OnVwcGVyKGNvbnN0IEF0b21pY1N0cmlu
ZyYgbG9jYWxlSWRlbnRpZmllcikKIHsKLSNpZiAhVVNFKElDVV9VTklDT0RFKQotICAgIFVOVVNF
RF9QQVJBTShsb2NhbGVJZGVudGlmaWVyKTsKLSAgICByZXR1cm4gdXBwZXIoKTsKLSNlbHNlCiAg
ICAgLy8gVXNlIHRoZSBtb3JlLW9wdGltaXplZCBjb2RlIHBhdGggbW9zdCBvZiB0aGUgdGltZS4K
ICAgICAvLyBBc3N1bWluZyBoZXJlIHRoYXQgdGhlIG9ubHkgbG9jYWxlLXNwZWNpZmljIGxvd2Vy
Y2FzaW5nIGlzIHRoZSBUdXJraXNoIGNhc2luZyBydWxlcywKICAgICAvLyBhbmQgdGhhdCB0aGUg
b25seSBhZmZlY3RlZCBjaGFyYWN0ZXIgaXMgbG93ZXJjYXNlICJpIi4KQEAgLTY0NCw3ICs2NDIs
NiBAQCBSZWZQdHI8U3RyaW5nSW1wbD4gU3RyaW5nSW1wbDo6dXBwZXIoY29uc3QgQXRvbWljU3Ry
aW5nJiBsb2NhbGVJZGVudGlmaWVyKQogICAgIGlmIChVX0ZBSUxVUkUoc3RhdHVzKSkKICAgICAg
ICAgcmV0dXJuIHRoaXM7CiAgICAgcmV0dXJuIG5ld1N0cmluZy5yZWxlYXNlKCk7Ci0jZW5kaWYK
IH0KIAogUGFzc1JlZlB0cjxTdHJpbmdJbXBsPiBTdHJpbmdJbXBsOjpmaWxsKFVDaGFyIGNoYXJh
Y3RlcikKQEAgLTY4NSw4ICs2ODIsMTEgQEAgUGFzc1JlZlB0cjxTdHJpbmdJbXBsPiBTdHJpbmdJ
bXBsOjpmb2xkQ2FzZSgpCiAgICAgICAgICAgICByZXR1cm4gbmV3SW1wbC5yZWxlYXNlKCk7CiAK
ICAgICAgICAgLy8gRG8gYSBzbG93ZXIgaW1wbGVtZW50YXRpb24gZm9yIGNhc2VzIHRoYXQgaW5j
bHVkZSBub24tQVNDSUkgTGF0aW4tMSBjaGFyYWN0ZXJzLgotICAgICAgICBmb3IgKGludDMyX3Qg
aSA9IDA7IGkgPCBsZW5ndGg7ICsraSkKLSAgICAgICAgICAgIGRhdGFbaV0gPSBzdGF0aWNfY2Fz
dDxMQ2hhcj4oVW5pY29kZTo6dG9Mb3dlcihtX2RhdGE4W2ldKSk7CisgICAgICAgIC8vIEZJWE1F
OiBTaG91bGRuJ3QgdGhpcyB1c2UgdV9mb2xkQ2FzZSBpbnN0ZWFkIG9mIHVfdG9sb3dlcj8KKyAg
ICAgICAgZm9yIChpbnQzMl90IGkgPSAwOyBpIDwgbGVuZ3RoOyArK2kpIHsKKyAgICAgICAgICAg
IEFTU0VSVCh1X3RvbG93ZXIobV9kYXRhOFtpXSkgPD0gMHhGRik7CisgICAgICAgICAgICBkYXRh
W2ldID0gc3RhdGljX2Nhc3Q8TENoYXI+KHVfdG9sb3dlcihtX2RhdGE4W2ldKSk7CisgICAgICAg
IH0KIAogICAgICAgICByZXR1cm4gbmV3SW1wbC5yZWxlYXNlKCk7CiAgICAgfQpAQCAtNzA0LDEz
ICs3MDQsMTQgQEAgUGFzc1JlZlB0cjxTdHJpbmdJbXBsPiBTdHJpbmdJbXBsOjpmb2xkQ2FzZSgp
CiAgICAgICAgIHJldHVybiBuZXdJbXBsLnJlbGVhc2UoKTsKIAogICAgIC8vIERvIGEgc2xvd2Vy
IGltcGxlbWVudGF0aW9uIGZvciBjYXNlcyB0aGF0IGluY2x1ZGUgbm9uLUFTQ0lJIGNoYXJhY3Rl
cnMuCi0gICAgYm9vbCBlcnJvcjsKLSAgICBpbnQzMl90IHJlYWxMZW5ndGggPSBVbmljb2RlOjpm
b2xkQ2FzZShkYXRhLCBsZW5ndGgsIG1fZGF0YTE2LCBtX2xlbmd0aCwgJmVycm9yKTsKLSAgICBp
ZiAoIWVycm9yICYmIHJlYWxMZW5ndGggPT0gbGVuZ3RoKQorICAgIFVFcnJvckNvZGUgc3RhdHVz
ID0gVV9aRVJPX0VSUk9SOworICAgIGludDMyX3QgcmVhbExlbmd0aCA9IHVfc3RyRm9sZENhc2Uo
ZGF0YSwgbGVuZ3RoLCBtX2RhdGExNiwgbV9sZW5ndGgsIFVfRk9MRF9DQVNFX0RFRkFVTFQsICZz
dGF0dXMpOworICAgIGlmIChVX1NVQ0NFU1Moc3RhdHVzKSAmJiByZWFsTGVuZ3RoID09IGxlbmd0
aCkKICAgICAgICAgcmV0dXJuIG5ld0ltcGwucmVsZWFzZSgpOwogICAgIG5ld0ltcGwgPSBjcmVh
dGVVbmluaXRpYWxpemVkKHJlYWxMZW5ndGgsIGRhdGEpOwotICAgIFVuaWNvZGU6OmZvbGRDYXNl
KGRhdGEsIHJlYWxMZW5ndGgsIG1fZGF0YTE2LCBtX2xlbmd0aCwgJmVycm9yKTsKLSAgICBpZiAo
ZXJyb3IpCisgICAgc3RhdHVzID0gVV9aRVJPX0VSUk9SOworICAgIHVfc3RyRm9sZENhc2UoZGF0
YSwgcmVhbExlbmd0aCwgbV9kYXRhMTYsIG1fbGVuZ3RoLCBVX0ZPTERfQ0FTRV9ERUZBVUxULCAm
c3RhdHVzKTsKKyAgICBpZiAoVV9GQUlMVVJFKHN0YXR1cykpCiAgICAgICAgIHJldHVybiB0aGlz
OwogICAgIHJldHVybiBuZXdJbXBsLnJlbGVhc2UoKTsKIH0KQEAgLTk1Miw4ICs5NTMsNyBAQCBm
bG9hdCBTdHJpbmdJbXBsOjp0b0Zsb2F0KGJvb2wqIG9rKQogYm9vbCBlcXVhbElnbm9yaW5nQ2Fz
ZShjb25zdCBMQ2hhciogYSwgY29uc3QgTENoYXIqIGIsIHVuc2lnbmVkIGxlbmd0aCkKIHsKICAg
ICB3aGlsZSAobGVuZ3RoLS0pIHsKLSAgICAgICAgTENoYXIgYmMgPSAqYisrOwotICAgICAgICBp
ZiAoZm9sZENhc2UoKmErKykgIT0gZm9sZENhc2UoYmMpKQorICAgICAgICBpZiAodV9mb2xkQ2Fz
ZSgqYSsrLCBVX0ZPTERfQ0FTRV9ERUZBVUxUKSAhPSB1X2ZvbGRDYXNlKCpiKyssIFVfRk9MRF9D
QVNFX0RFRkFVTFQpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KICAgICByZXR1
cm4gdHJ1ZTsKQEAgLTk2Miw4ICs5NjIsNyBAQCBib29sIGVxdWFsSWdub3JpbmdDYXNlKGNvbnN0
IExDaGFyKiBhLCBjb25zdCBMQ2hhciogYiwgdW5zaWduZWQgbGVuZ3RoKQogYm9vbCBlcXVhbEln
bm9yaW5nQ2FzZShjb25zdCBVQ2hhciogYSwgY29uc3QgTENoYXIqIGIsIHVuc2lnbmVkIGxlbmd0
aCkKIHsKICAgICB3aGlsZSAobGVuZ3RoLS0pIHsKLSAgICAgICAgTENoYXIgYmMgPSAqYisrOwot
ICAgICAgICBpZiAoZm9sZENhc2UoKmErKykgIT0gZm9sZENhc2UoYmMpKQorICAgICAgICBpZiAo
dV9mb2xkQ2FzZSgqYSsrLCBVX0ZPTERfQ0FTRV9ERUZBVUxUKSAhPSB1X2ZvbGRDYXNlKCpiKyss
IFVfRk9MRF9DQVNFX0RFRkFVTFQpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0K
ICAgICByZXR1cm4gdHJ1ZTsKQEAgLTE5MTEsNyArMTkxMCw3IEBAIGJvb2wgZXF1YWxJZ25vcmlu
Z0Nhc2UoY29uc3QgU3RyaW5nSW1wbCogYSwgY29uc3QgTENoYXIqIGIpCiAgICAgICAgIGlmIChv
cmVkICYgfjB4N0YpIHsKICAgICAgICAgICAgIGVxdWFsID0gdHJ1ZTsKICAgICAgICAgICAgIGZv
ciAodW5zaWduZWQgaSA9IDA7IGkgIT0gbGVuZ3RoOyArK2kpCi0gICAgICAgICAgICAgICAgZXF1
YWwgPSBlcXVhbCAmJiAoZm9sZENhc2UoYXNbaV0pID09IGZvbGRDYXNlKGJbaV0pKTsKKyAgICAg
ICAgICAgICAgICBlcXVhbCA9IGVxdWFsICYmIHVfZm9sZENhc2UoYXNbaV0sIFVfRk9MRF9DQVNF
X0RFRkFVTFQpID09IHVfZm9sZENhc2UoYltpXSwgVV9GT0xEX0NBU0VfREVGQVVMVCk7CiAgICAg
ICAgIH0KICAgICAgICAgCiAgICAgICAgIHJldHVybiBlcXVhbCAmJiAhYltsZW5ndGhdOyAgICAg
ICAgCkBAIC0xOTMxLDcgKzE5MzAsNyBAQCBib29sIGVxdWFsSWdub3JpbmdDYXNlKGNvbnN0IFN0
cmluZ0ltcGwqIGEsIGNvbnN0IExDaGFyKiBiKQogICAgIGlmIChvcmVkICYgfjB4N0YpIHsKICAg
ICAgICAgZXF1YWwgPSB0cnVlOwogICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpICE9IGxl
bmd0aDsgKytpKSB7Ci0gICAgICAgICAgICBlcXVhbCA9IGVxdWFsICYmIChmb2xkQ2FzZShhc1tp
XSkgPT0gZm9sZENhc2UoYltpXSkpOworICAgICAgICAgICAgZXF1YWwgPSBlcXVhbCAmJiB1X2Zv
bGRDYXNlKGFzW2ldLCBVX0ZPTERfQ0FTRV9ERUZBVUxUKSA9PSB1X2ZvbGRDYXNlKGJbaV0sIFVf
Rk9MRF9DQVNFX0RFRkFVTFQpOwogICAgICAgICB9CiAgICAgfQogCkBAIC0xOTcwLDI0ICsxOTY5
LDI0IEBAIGJvb2wgZXF1YWxJZ25vcmluZ051bGxpdHkoU3RyaW5nSW1wbCogYSwgU3RyaW5nSW1w
bCogYikKICAgICByZXR1cm4gZXF1YWwoYSwgYik7CiB9CiAKLVdURjo6VW5pY29kZTo6RGlyZWN0
aW9uIFN0cmluZ0ltcGw6OmRlZmF1bHRXcml0aW5nRGlyZWN0aW9uKGJvb2wqIGhhc1N0cm9uZ0Rp
cmVjdGlvbmFsaXR5KQorVUNoYXJEaXJlY3Rpb24gU3RyaW5nSW1wbDo6ZGVmYXVsdFdyaXRpbmdE
aXJlY3Rpb24oYm9vbCogaGFzU3Ryb25nRGlyZWN0aW9uYWxpdHkpCiB7CiAgICAgZm9yICh1bnNp
Z25lZCBpID0gMDsgaSA8IG1fbGVuZ3RoOyArK2kpIHsKLSAgICAgICAgV1RGOjpVbmljb2RlOjpE
aXJlY3Rpb24gY2hhckRpcmVjdGlvbiA9IFdURjo6VW5pY29kZTo6ZGlyZWN0aW9uKGlzOEJpdCgp
ID8gbV9kYXRhOFtpXSA6IG1fZGF0YTE2W2ldKTsKLSAgICAgICAgaWYgKGNoYXJEaXJlY3Rpb24g
PT0gV1RGOjpVbmljb2RlOjpMZWZ0VG9SaWdodCkgeworICAgICAgICBVQ2hhckRpcmVjdGlvbiBj
aGFyRGlyZWN0aW9uID0gdV9jaGFyRGlyZWN0aW9uKGlzOEJpdCgpID8gbV9kYXRhOFtpXSA6IG1f
ZGF0YTE2W2ldKTsKKyAgICAgICAgaWYgKGNoYXJEaXJlY3Rpb24gPT0gVV9MRUZUX1RPX1JJR0hU
KSB7CiAgICAgICAgICAgICBpZiAoaGFzU3Ryb25nRGlyZWN0aW9uYWxpdHkpCiAgICAgICAgICAg
ICAgICAgKmhhc1N0cm9uZ0RpcmVjdGlvbmFsaXR5ID0gdHJ1ZTsKLSAgICAgICAgICAgIHJldHVy
biBXVEY6OlVuaWNvZGU6OkxlZnRUb1JpZ2h0OworICAgICAgICAgICAgcmV0dXJuIFVfTEVGVF9U
T19SSUdIVDsKICAgICAgICAgfQotICAgICAgICBpZiAoY2hhckRpcmVjdGlvbiA9PSBXVEY6OlVu
aWNvZGU6OlJpZ2h0VG9MZWZ0IHx8IGNoYXJEaXJlY3Rpb24gPT0gV1RGOjpVbmljb2RlOjpSaWdo
dFRvTGVmdEFyYWJpYykgeworICAgICAgICBpZiAoY2hhckRpcmVjdGlvbiA9PSBVX1JJR0hUX1RP
X0xFRlQgfHwgY2hhckRpcmVjdGlvbiA9PSBVX1JJR0hUX1RPX0xFRlRfQVJBQklDKSB7CiAgICAg
ICAgICAgICBpZiAoaGFzU3Ryb25nRGlyZWN0aW9uYWxpdHkpCiAgICAgICAgICAgICAgICAgKmhh
c1N0cm9uZ0RpcmVjdGlvbmFsaXR5ID0gdHJ1ZTsKLSAgICAgICAgICAgIHJldHVybiBXVEY6OlVu
aWNvZGU6OlJpZ2h0VG9MZWZ0OworICAgICAgICAgICAgcmV0dXJuIFVfUklHSFRfVE9fTEVGVDsK
ICAgICAgICAgfQogICAgIH0KICAgICBpZiAoaGFzU3Ryb25nRGlyZWN0aW9uYWxpdHkpCiAgICAg
ICAgICpoYXNTdHJvbmdEaXJlY3Rpb25hbGl0eSA9IGZhbHNlOwotICAgIHJldHVybiBXVEY6OlVu
aWNvZGU6OkxlZnRUb1JpZ2h0OworICAgIHJldHVybiBVX0xFRlRfVE9fUklHSFQ7CiB9CiAKIFBh
c3NSZWZQdHI8U3RyaW5nSW1wbD4gU3RyaW5nSW1wbDo6YWRvcHQoU3RyaW5nQnVmZmVyPExDaGFy
PiYgYnVmZmVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdJbXBsLmgg
Yi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ0ltcGwuaAppbmRleCBjZDJiNjliYzRhMWVlMjA4
NTg1N2QzMDBmMjM3MjI2YmQ5MGRkZjYyLi45YWEwNmZjZGQ0ODc2YmY0M2FjZTMzNTExMGRlYzhh
MjFiOWU1YjIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ0ltcGwuaAor
KysgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ0ltcGwuaApAQCAtNzQ1LDcgKzc0NSw3IEBA
IHB1YmxpYzoKICAgICBXVEZfRVhQT1JUX1NUUklOR19BUEkgUGFzc1JlZlB0cjxTdHJpbmdJbXBs
PiByZXBsYWNlKFN0cmluZ0ltcGwqLCBTdHJpbmdJbXBsKik7CiAgICAgV1RGX0VYUE9SVF9TVFJJ
TkdfQVBJIFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4gcmVwbGFjZSh1bnNpZ25lZCBpbmRleCwgdW5z
aWduZWQgbGVuLCBTdHJpbmdJbXBsKik7CiAKLSAgICBXVEZfRVhQT1JUX1NUUklOR19BUEkgV1RG
OjpVbmljb2RlOjpEaXJlY3Rpb24gZGVmYXVsdFdyaXRpbmdEaXJlY3Rpb24oYm9vbCogaGFzU3Ry
b25nRGlyZWN0aW9uYWxpdHkgPSAwKTsKKyAgICBXVEZfRVhQT1JUX1NUUklOR19BUEkgVUNoYXJE
aXJlY3Rpb24gZGVmYXVsdFdyaXRpbmdEaXJlY3Rpb24oYm9vbCogaGFzU3Ryb25nRGlyZWN0aW9u
YWxpdHkgPSBudWxscHRyKTsKIAogI2lmIFVTRShDRikKICAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdS
ZWY+IGNyZWF0ZUNGU3RyaW5nKCk7CkBAIC0xMTA3LDcgKzExMDcsNyBAQCBpbmxpbmUgYm9vbCBl
cXVhbElnbm9yaW5nQ2FzZShjb25zdCBjaGFyKiBhLCBjb25zdCBMQ2hhciogYiwgdW5zaWduZWQg
bGVuZ3RoKSB7CiBpbmxpbmUgYm9vbCBlcXVhbElnbm9yaW5nQ2FzZShjb25zdCBVQ2hhciogYSwg
Y29uc3QgVUNoYXIqIGIsIGludCBsZW5ndGgpCiB7CiAgICAgQVNTRVJUKGxlbmd0aCA+PSAwKTsK
LSAgICByZXR1cm4gIVVuaWNvZGU6OnVtZW1jYXNlY21wKGEsIGIsIGxlbmd0aCk7CisgICAgcmV0
dXJuICF1X21lbWNhc2VjbXAoYSwgYiwgbGVuZ3RoLCBVX0ZPTERfQ0FTRV9ERUZBVUxUKTsKIH0K
IFdURl9FWFBPUlRfU1RSSU5HX0FQSSBib29sIGVxdWFsSWdub3JpbmdDYXNlTm9uTnVsbChjb25z
dCBTdHJpbmdJbXBsKiwgY29uc3QgU3RyaW5nSW1wbCopOwogCkBAIC0xMzE3LDcgKzEzMTcsNyBA
QCBzdGF0aWMgaW5saW5lIGJvb2wgaXNTcGFjZU9yTmV3bGluZShVQ2hhciBjKQogewogICAgIC8v
IFVzZSBpc0FTQ0lJU3BhY2UoKSBmb3IgYmFzaWMgTGF0aW4tMS4KICAgICAvLyBUaGlzIHdpbGwg
aW5jbHVkZSBuZXdsaW5lcywgd2hpY2ggYXJlbid0IGluY2x1ZGVkIGluIFVuaWNvZGUgRGlyV1Mu
Ci0gICAgcmV0dXJuIGMgPD0gMHg3RiA/IFdURjo6aXNBU0NJSVNwYWNlKGMpIDogV1RGOjpVbmlj
b2RlOjpkaXJlY3Rpb24oYykgPT0gV1RGOjpVbmljb2RlOjpXaGl0ZVNwYWNlTmV1dHJhbDsKKyAg
ICByZXR1cm4gYyA8PSAweDdGID8gaXNBU0NJSVNwYWNlKGMpIDogdV9jaGFyRGlyZWN0aW9uKGMp
ID09IFVfV0hJVEVfU1BBQ0VfTkVVVFJBTDsKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFj
dGVyVHlwZT4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3RleHQvV1RGU3RyaW5nLmggYi9T
b3VyY2UvV1RGL3d0Zi90ZXh0L1dURlN0cmluZy5oCmluZGV4IDA5YjU1NDFhOTlkNzZiMTViMTk0
YmYwNTcwZDJmMTI1MTM1YWFlNGMuLjYxOTE0YmIwNjhmYWMxNWNmODliYTJlZTg1NTZmMGQ2NWJh
MTM1NzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3RleHQvV1RGU3RyaW5nLmgKKysrIGIv
U291cmNlL1dURi93dGYvdGV4dC9XVEZTdHJpbmcuaApAQCAtNDQwLDEzICs0NDAsMTMgQEAgcHVi
bGljOgogICAgIHN0YXRpYyBTdHJpbmcgZnJvbVVURjhXaXRoTGF0aW4xRmFsbGJhY2soY29uc3Qg
Y2hhciogcywgc2l6ZV90IGxlbmd0aCkgeyByZXR1cm4gZnJvbVVURjhXaXRoTGF0aW4xRmFsbGJh
Y2socmVpbnRlcnByZXRfY2FzdDxjb25zdCBMQ2hhcio+KHMpLCBsZW5ndGgpOyB9OwogICAgIAog
ICAgIC8vIERldGVybWluZXMgdGhlIHdyaXRpbmcgZGlyZWN0aW9uIHVzaW5nIHRoZSBVbmljb2Rl
IEJpZGkgQWxnb3JpdGhtIHJ1bGVzIFAyIGFuZCBQMy4KLSAgICBXVEY6OlVuaWNvZGU6OkRpcmVj
dGlvbiBkZWZhdWx0V3JpdGluZ0RpcmVjdGlvbihib29sKiBoYXNTdHJvbmdEaXJlY3Rpb25hbGl0
eSA9IDApIGNvbnN0CisgICAgVUNoYXJEaXJlY3Rpb24gZGVmYXVsdFdyaXRpbmdEaXJlY3Rpb24o
Ym9vbCogaGFzU3Ryb25nRGlyZWN0aW9uYWxpdHkgPSBudWxscHRyKSBjb25zdAogICAgIHsKICAg
ICAgICAgaWYgKG1faW1wbCkKICAgICAgICAgICAgIHJldHVybiBtX2ltcGwtPmRlZmF1bHRXcml0
aW5nRGlyZWN0aW9uKGhhc1N0cm9uZ0RpcmVjdGlvbmFsaXR5KTsKICAgICAgICAgaWYgKGhhc1N0
cm9uZ0RpcmVjdGlvbmFsaXR5KQogICAgICAgICAgICAgKmhhc1N0cm9uZ0RpcmVjdGlvbmFsaXR5
ID0gZmFsc2U7Ci0gICAgICAgIHJldHVybiBXVEY6OlVuaWNvZGU6OkxlZnRUb1JpZ2h0OworICAg
ICAgICByZXR1cm4gVV9MRUZUX1RPX1JJR0hUOwogICAgIH0KIAogICAgIGJvb2wgY29udGFpbnNP
bmx5QVNDSUkoKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3VuaWNvZGUvaWN1
L1VuaWNvZGVJY3UuaCBiL1NvdXJjZS9XVEYvd3RmL3VuaWNvZGUvaWN1L1VuaWNvZGVJY3UuaApp
bmRleCA3Y2NhOTU1YjRiZWRlMGExM2I2ODdlOGVkZDkxZTEzMTFjYWQ3Y2UxLi4wYTM4NmI1OWRj
MjczYzAyODM3ODUyMTQwMTYzY2ViYzQ3MTc1N2M3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0
Zi91bmljb2RlL2ljdS9Vbmljb2RlSWN1LmgKKysrIGIvU291cmNlL1dURi93dGYvdW5pY29kZS9p
Y3UvVW5pY29kZUljdS5oCkBAIC0yMywyMTggKzIzLDEwIEBACiAjaWZuZGVmIFdURl9VTklDT0RF
X0lDVV9ICiAjZGVmaW5lIFdURl9VTklDT0RFX0lDVV9ICiAKLSNpZiBVU0UoSUNVX1VOSUNPREUp
Ci0KICNpbmNsdWRlIDxzdGRsaWIuaD4KICNpbmNsdWRlIDx1bmljb2RlL3VjaGFyLmg+CiAjaW5j
bHVkZSA8dW5pY29kZS91c2NyaXB0Lmg+CiAjaW5jbHVkZSA8dW5pY29kZS91c3RyaW5nLmg+CiAj
aW5jbHVkZSA8dW5pY29kZS91dGYxNi5oPgogCi1uYW1lc3BhY2UgV1RGIHsKLQotbmFtZXNwYWNl
IFVuaWNvZGUgewotCi1lbnVtIERpcmVjdGlvbiB7Ci0gICAgTGVmdFRvUmlnaHQgPSBVX0xFRlRf
VE9fUklHSFQsCi0gICAgUmlnaHRUb0xlZnQgPSBVX1JJR0hUX1RPX0xFRlQsCi0gICAgRXVyb3Bl
YW5OdW1iZXIgPSBVX0VVUk9QRUFOX05VTUJFUiwKLSAgICBFdXJvcGVhbk51bWJlclNlcGFyYXRv
ciA9IFVfRVVST1BFQU5fTlVNQkVSX1NFUEFSQVRPUiwKLSAgICBFdXJvcGVhbk51bWJlclRlcm1p
bmF0b3IgPSBVX0VVUk9QRUFOX05VTUJFUl9URVJNSU5BVE9SLAotICAgIEFyYWJpY051bWJlciA9
IFVfQVJBQklDX05VTUJFUiwKLSAgICBDb21tb25OdW1iZXJTZXBhcmF0b3IgPSBVX0NPTU1PTl9O
VU1CRVJfU0VQQVJBVE9SLAotICAgIEJsb2NrU2VwYXJhdG9yID0gVV9CTE9DS19TRVBBUkFUT1Is
Ci0gICAgU2VnbWVudFNlcGFyYXRvciA9IFVfU0VHTUVOVF9TRVBBUkFUT1IsCi0gICAgV2hpdGVT
cGFjZU5ldXRyYWwgPSBVX1dISVRFX1NQQUNFX05FVVRSQUwsCi0gICAgT3RoZXJOZXV0cmFsID0g
VV9PVEhFUl9ORVVUUkFMLAotICAgIExlZnRUb1JpZ2h0RW1iZWRkaW5nID0gVV9MRUZUX1RPX1JJ
R0hUX0VNQkVERElORywKLSAgICBMZWZ0VG9SaWdodE92ZXJyaWRlID0gVV9MRUZUX1RPX1JJR0hU
X09WRVJSSURFLAotICAgIFJpZ2h0VG9MZWZ0QXJhYmljID0gVV9SSUdIVF9UT19MRUZUX0FSQUJJ
QywKLSAgICBSaWdodFRvTGVmdEVtYmVkZGluZyA9IFVfUklHSFRfVE9fTEVGVF9FTUJFRERJTkcs
Ci0gICAgUmlnaHRUb0xlZnRPdmVycmlkZSA9IFVfUklHSFRfVE9fTEVGVF9PVkVSUklERSwKLSAg
ICBQb3BEaXJlY3Rpb25hbEZvcm1hdCA9IFVfUE9QX0RJUkVDVElPTkFMX0ZPUk1BVCwKLSAgICBO
b25TcGFjaW5nTWFyayA9IFVfRElSX05PTl9TUEFDSU5HX01BUkssCi0gICAgQm91bmRhcnlOZXV0
cmFsID0gVV9CT1VOREFSWV9ORVVUUkFMCi19OwotCi1lbnVtIERlY29tcG9zaXRpb25UeXBlIHsK
LSAgICBEZWNvbXBvc2l0aW9uTm9uZSA9IFVfRFRfTk9ORSwKLSAgICBEZWNvbXBvc2l0aW9uQ2Fu
b25pY2FsID0gVV9EVF9DQU5PTklDQUwsCi0gICAgRGVjb21wb3NpdGlvbkNvbXBhdCA9IFVfRFRf
Q09NUEFULAotICAgIERlY29tcG9zaXRpb25DaXJjbGUgPSBVX0RUX0NJUkNMRSwKLSAgICBEZWNv
bXBvc2l0aW9uRmluYWwgPSBVX0RUX0ZJTkFMLAotICAgIERlY29tcG9zaXRpb25Gb250ID0gVV9E
VF9GT05ULAotICAgIERlY29tcG9zaXRpb25GcmFjdGlvbiA9IFVfRFRfRlJBQ1RJT04sCi0gICAg
RGVjb21wb3NpdGlvbkluaXRpYWwgPSBVX0RUX0lOSVRJQUwsCi0gICAgRGVjb21wb3NpdGlvbklz
b2xhdGVkID0gVV9EVF9JU09MQVRFRCwKLSAgICBEZWNvbXBvc2l0aW9uTWVkaWFsID0gVV9EVF9N
RURJQUwsCi0gICAgRGVjb21wb3NpdGlvbk5hcnJvdyA9IFVfRFRfTkFSUk9XLAotICAgIERlY29t
cG9zaXRpb25Ob0JyZWFrID0gVV9EVF9OT0JSRUFLLAotICAgIERlY29tcG9zaXRpb25TbWFsbCA9
IFVfRFRfU01BTEwsCi0gICAgRGVjb21wb3NpdGlvblNxdWFyZSA9IFVfRFRfU1FVQVJFLAotICAg
IERlY29tcG9zaXRpb25TdWIgPSBVX0RUX1NVQiwKLSAgICBEZWNvbXBvc2l0aW9uU3VwZXIgPSBV
X0RUX1NVUEVSLAotICAgIERlY29tcG9zaXRpb25WZXJ0aWNhbCA9IFVfRFRfVkVSVElDQUwsCi0g
ICAgRGVjb21wb3NpdGlvbldpZGUgPSBVX0RUX1dJREUsCi19OwotCi1lbnVtIENoYXJDYXRlZ29y
eSB7Ci0gICAgTm9DYXRlZ29yeSA9ICAwLAotICAgIE90aGVyX05vdEFzc2lnbmVkID0gVV9NQVNL
KFVfR0VORVJBTF9PVEhFUl9UWVBFUyksCi0gICAgTGV0dGVyX1VwcGVyY2FzZSA9IFVfTUFTSyhV
X1VQUEVSQ0FTRV9MRVRURVIpLAotICAgIExldHRlcl9Mb3dlcmNhc2UgPSBVX01BU0soVV9MT1dF
UkNBU0VfTEVUVEVSKSwKLSAgICBMZXR0ZXJfVGl0bGVjYXNlID0gVV9NQVNLKFVfVElUTEVDQVNF
X0xFVFRFUiksCi0gICAgTGV0dGVyX01vZGlmaWVyID0gVV9NQVNLKFVfTU9ESUZJRVJfTEVUVEVS
KSwKLSAgICBMZXR0ZXJfT3RoZXIgPSBVX01BU0soVV9PVEhFUl9MRVRURVIpLAotCi0gICAgTWFy
a19Ob25TcGFjaW5nID0gVV9NQVNLKFVfTk9OX1NQQUNJTkdfTUFSSyksCi0gICAgTWFya19FbmNs
b3NpbmcgPSBVX01BU0soVV9FTkNMT1NJTkdfTUFSSyksCi0gICAgTWFya19TcGFjaW5nQ29tYmlu
aW5nID0gVV9NQVNLKFVfQ09NQklOSU5HX1NQQUNJTkdfTUFSSyksCi0KLSAgICBOdW1iZXJfRGVj
aW1hbERpZ2l0ID0gVV9NQVNLKFVfREVDSU1BTF9ESUdJVF9OVU1CRVIpLAotICAgIE51bWJlcl9M
ZXR0ZXIgPSBVX01BU0soVV9MRVRURVJfTlVNQkVSKSwKLSAgICBOdW1iZXJfT3RoZXIgPSBVX01B
U0soVV9PVEhFUl9OVU1CRVIpLAotCi0gICAgU2VwYXJhdG9yX1NwYWNlID0gVV9NQVNLKFVfU1BB
Q0VfU0VQQVJBVE9SKSwKLSAgICBTZXBhcmF0b3JfTGluZSA9IFVfTUFTSyhVX0xJTkVfU0VQQVJB
VE9SKSwKLSAgICBTZXBhcmF0b3JfUGFyYWdyYXBoID0gVV9NQVNLKFVfUEFSQUdSQVBIX1NFUEFS
QVRPUiksCi0KLSAgICBPdGhlcl9Db250cm9sID0gVV9NQVNLKFVfQ09OVFJPTF9DSEFSKSwKLSAg
ICBPdGhlcl9Gb3JtYXQgPSBVX01BU0soVV9GT1JNQVRfQ0hBUiksCi0gICAgT3RoZXJfUHJpdmF0
ZVVzZSA9IFVfTUFTSyhVX1BSSVZBVEVfVVNFX0NIQVIpLAotICAgIE90aGVyX1N1cnJvZ2F0ZSA9
IFVfTUFTSyhVX1NVUlJPR0FURSksCi0KLSAgICBQdW5jdHVhdGlvbl9EYXNoID0gVV9NQVNLKFVf
REFTSF9QVU5DVFVBVElPTiksCi0gICAgUHVuY3R1YXRpb25fT3BlbiA9IFVfTUFTSyhVX1NUQVJU
X1BVTkNUVUFUSU9OKSwKLSAgICBQdW5jdHVhdGlvbl9DbG9zZSA9IFVfTUFTSyhVX0VORF9QVU5D
VFVBVElPTiksCi0gICAgUHVuY3R1YXRpb25fQ29ubmVjdG9yID0gVV9NQVNLKFVfQ09OTkVDVE9S
X1BVTkNUVUFUSU9OKSwKLSAgICBQdW5jdHVhdGlvbl9PdGhlciA9IFVfTUFTSyhVX09USEVSX1BV
TkNUVUFUSU9OKSwKLQotICAgIFN5bWJvbF9NYXRoID0gVV9NQVNLKFVfTUFUSF9TWU1CT0wpLAot
ICAgIFN5bWJvbF9DdXJyZW5jeSA9IFVfTUFTSyhVX0NVUlJFTkNZX1NZTUJPTCksCi0gICAgU3lt
Ym9sX01vZGlmaWVyID0gVV9NQVNLKFVfTU9ESUZJRVJfU1lNQk9MKSwKLSAgICBTeW1ib2xfT3Ro
ZXIgPSBVX01BU0soVV9PVEhFUl9TWU1CT0wpLAotCi0gICAgUHVuY3R1YXRpb25fSW5pdGlhbFF1
b3RlID0gVV9NQVNLKFVfSU5JVElBTF9QVU5DVFVBVElPTiksCi0gICAgUHVuY3R1YXRpb25fRmlu
YWxRdW90ZSA9IFVfTUFTSyhVX0ZJTkFMX1BVTkNUVUFUSU9OKQotfTsKLQotaW5saW5lIFVDaGFy
MzIgZm9sZENhc2UoVUNoYXIzMiBjKQotewotICAgIHJldHVybiB1X2ZvbGRDYXNlKGMsIFVfRk9M
RF9DQVNFX0RFRkFVTFQpOwotfQotCi1pbmxpbmUgaW50IGZvbGRDYXNlKFVDaGFyKiByZXN1bHQs
IGludCByZXN1bHRMZW5ndGgsIGNvbnN0IFVDaGFyKiBzcmMsIGludCBzcmNMZW5ndGgsIGJvb2wq
IGVycm9yKQotewotICAgIFVFcnJvckNvZGUgc3RhdHVzID0gVV9aRVJPX0VSUk9SOwotICAgIGlu
dCByZWFsTGVuZ3RoID0gdV9zdHJGb2xkQ2FzZShyZXN1bHQsIHJlc3VsdExlbmd0aCwgc3JjLCBz
cmNMZW5ndGgsIFVfRk9MRF9DQVNFX0RFRkFVTFQsICZzdGF0dXMpOwotICAgICplcnJvciA9ICFV
X1NVQ0NFU1Moc3RhdHVzKTsKLSAgICByZXR1cm4gcmVhbExlbmd0aDsKLX0KLQotaW5saW5lIGlu
dCB0b0xvd2VyKFVDaGFyKiByZXN1bHQsIGludCByZXN1bHRMZW5ndGgsIGNvbnN0IFVDaGFyKiBz
cmMsIGludCBzcmNMZW5ndGgsIGJvb2wqIGVycm9yKQotewotICAgIFVFcnJvckNvZGUgc3RhdHVz
ID0gVV9aRVJPX0VSUk9SOwotICAgIGludCByZWFsTGVuZ3RoID0gdV9zdHJUb0xvd2VyKHJlc3Vs
dCwgcmVzdWx0TGVuZ3RoLCBzcmMsIHNyY0xlbmd0aCwgIiIsICZzdGF0dXMpOwotICAgICplcnJv
ciA9ICEhVV9GQUlMVVJFKHN0YXR1cyk7Ci0gICAgcmV0dXJuIHJlYWxMZW5ndGg7Ci19Ci0KLWlu
bGluZSBVQ2hhcjMyIHRvTG93ZXIoVUNoYXIzMiBjKQotewotICAgIHJldHVybiB1X3RvbG93ZXIo
Yyk7Ci19Ci0KLWlubGluZSBVQ2hhcjMyIHRvVXBwZXIoVUNoYXIzMiBjKQotewotICAgIHJldHVy
biB1X3RvdXBwZXIoYyk7Ci19Ci0KLWlubGluZSBpbnQgdG9VcHBlcihVQ2hhciogcmVzdWx0LCBp
bnQgcmVzdWx0TGVuZ3RoLCBjb25zdCBVQ2hhciogc3JjLCBpbnQgc3JjTGVuZ3RoLCBib29sKiBl
cnJvcikKLXsKLSAgICBVRXJyb3JDb2RlIHN0YXR1cyA9IFVfWkVST19FUlJPUjsKLSAgICBpbnQg
cmVhbExlbmd0aCA9IHVfc3RyVG9VcHBlcihyZXN1bHQsIHJlc3VsdExlbmd0aCwgc3JjLCBzcmNM
ZW5ndGgsICIiLCAmc3RhdHVzKTsKLSAgICAqZXJyb3IgPSAhIVVfRkFJTFVSRShzdGF0dXMpOwot
ICAgIHJldHVybiByZWFsTGVuZ3RoOwotfQotCi1pbmxpbmUgVUNoYXIzMiB0b1RpdGxlQ2FzZShV
Q2hhcjMyIGMpCi17Ci0gICAgcmV0dXJuIHVfdG90aXRsZShjKTsKLX0KLQotaW5saW5lIGJvb2wg
aXNBcmFiaWNDaGFyKFVDaGFyMzIgYykKLXsKLSAgICAgIHJldHVybiB1YmxvY2tfZ2V0Q29kZShj
KSA9PSBVQkxPQ0tfQVJBQklDOwotfQotCi1pbmxpbmUgYm9vbCBpc0FscGhhbnVtZXJpYyhVQ2hh
cjMyIGMpCi17Ci0gICAgcmV0dXJuIHVfaXNhbG51bShjKTsKLX0KLQotaW5saW5lIGJvb2wgaXNT
ZXBhcmF0b3JTcGFjZShVQ2hhcjMyIGMpCi17Ci0gICAgcmV0dXJuIHVfY2hhclR5cGUoYykgPT0g
VV9TUEFDRV9TRVBBUkFUT1I7Ci19Ci0KLWlubGluZSBib29sIGlzUHJpbnRhYmxlQ2hhcihVQ2hh
cjMyIGMpCi17Ci0gICAgcmV0dXJuICEhdV9pc3ByaW50KGMpOwotfQotCi1pbmxpbmUgYm9vbCBp
c1B1bmN0KFVDaGFyMzIgYykKLXsKLSAgICByZXR1cm4gISF1X2lzcHVuY3QoYyk7Ci19Ci0KLSNk
ZWZpbmUgV0tfTEJfQ09ORElUSU9OQUxfSkFQQU5FU0VfU1RBUlRFUiAzNwotCi1pbmxpbmUgYm9v
bCByZXF1aXJlc0NvbXBsZXhDb250ZXh0Rm9yV29yZEJyZWFraW5nKFVDaGFyMzIgYykKLXsKLSAg
ICBpbnQzMl90IHByb3AgPSB1X2dldEludFByb3BlcnR5VmFsdWUoYywgVUNIQVJfTElORV9CUkVB
Syk7Ci0gICAgcmV0dXJuIHByb3AgPT0gVV9MQl9DT01QTEVYX0NPTlRFWFQgfHwgcHJvcCA9PSBX
S19MQl9DT05ESVRJT05BTF9KQVBBTkVTRV9TVEFSVEVSIHx8IHByb3AgPT0gVV9MQl9JREVPR1JB
UEhJQzsKLX0KLQotaW5saW5lIFVDaGFyMzIgbWlycm9yZWRDaGFyKFVDaGFyMzIgYykKLXsKLSAg
ICByZXR1cm4gdV9jaGFyTWlycm9yKGMpOwotfQotCi1pbmxpbmUgQ2hhckNhdGVnb3J5IGNhdGVn
b3J5KFVDaGFyMzIgYykKLXsKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Q2hhckNhdGVnb3J5PihV
X0dFVF9HQ19NQVNLKGMpKTsKLX0KLQotaW5saW5lIERpcmVjdGlvbiBkaXJlY3Rpb24oVUNoYXIz
MiBjKQotewotICAgIHJldHVybiBzdGF0aWNfY2FzdDxEaXJlY3Rpb24+KHVfY2hhckRpcmVjdGlv
bihjKSk7Ci19Ci0KLWlubGluZSBib29sIGlzTG93ZXIoVUNoYXIzMiBjKQotewotICAgIHJldHVy
biAhIXVfaXNsb3dlcihjKTsKLX0KLQotaW5saW5lIHVpbnQ4X3QgY29tYmluaW5nQ2xhc3MoVUNo
YXIzMiBjKQotewotICAgIHJldHVybiB1X2dldENvbWJpbmluZ0NsYXNzKGMpOwotfQotCi1pbmxp
bmUgRGVjb21wb3NpdGlvblR5cGUgZGVjb21wb3NpdGlvblR5cGUoVUNoYXIzMiBjKQotewotICAg
IHJldHVybiBzdGF0aWNfY2FzdDxEZWNvbXBvc2l0aW9uVHlwZT4odV9nZXRJbnRQcm9wZXJ0eVZh
bHVlKGMsIFVDSEFSX0RFQ09NUE9TSVRJT05fVFlQRSkpOwotfQotCi1pbmxpbmUgaW50IHVtZW1j
YXNlY21wKGNvbnN0IFVDaGFyKiBhLCBjb25zdCBVQ2hhciogYiwgaW50IGxlbikKLXsKLSAgICBy
ZXR1cm4gdV9tZW1jYXNlY21wKGEsIGIsIGxlbiwgVV9GT0xEX0NBU0VfREVGQVVMVCk7Ci19Ci0K
LX0gLy8gbmFtZXNwYWNlIFVuaWNvZGUKLQotfSAvLyBuYW1lc3BhY2UgV1RGCi0KLSNlbmRpZiAv
LyBVU0UoSUNVX1VOSUNPREUpCi0KICNlbmRpZiAvLyBXVEZfVU5JQ09ERV9JQ1VfSApkaWZmIC0t
Z2l0IGEvU291cmNlL1dURi93dGYvdW5pY29kZS93Y2hhci9Vbmljb2RlV2NoYXIuY3BwIGIvU291
cmNlL1dURi93dGYvdW5pY29kZS93Y2hhci9Vbmljb2RlV2NoYXIuY3BwCmluZGV4IGY5ODA5MDBj
ODQwMDAxZTlmNDg1ZTM4MmNlYjA2YzQxMjhjNjFiOTQuLmYxN2MwNTI2N2E0MGZmMTY2MTk4ODU3
YmYyNDY3ZjM1YjAzMmVlY2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3VuaWNvZGUvd2No
YXIvVW5pY29kZVdjaGFyLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi91bmljb2RlL3djaGFyL1Vu
aWNvZGVXY2hhci5jcHAKQEAgLTI3LDQxICsyNyw2MyBAQAogCiAjaW5jbHVkZSA8YWxnb3JpdGht
PgogCi1uYW1lc3BhY2UgV1RGIHsKLW5hbWVzcGFjZSBVbmljb2RlIHsKK2ludCB1bm9ybV9ub3Jt
YWxpemUoY29uc3QgVUNoYXIqLCBpbnQzMl90LCBVTm9ybWFsaXphdGlvbk1vZGUsIGludDMyX3Qs
IFVDaGFyKiwgaW50MzJfdCwgVUVycm9yQ29kZSopCit7CisgICAgQVNTRVJUX05PVF9SRUFDSEVE
KCk7Cit9CiAKLUNoYXJDYXRlZ29yeSBjYXRlZ29yeShVQ2hhcjMyKQorVUNoYXJEaXJlY3Rpb24g
dV9jaGFyRGlyZWN0aW9uKFVDaGFyMzIpCiB7Ci0gICAgcmV0dXJuIE5vQ2F0ZWdvcnk7IC8vIEZJ
WE1FOiBpbXBsZW1lbnQhCisgICAgcmV0dXJuIFVfTEVGVF9UT19SSUdIVDsgLy8gRklYTUU6IGlt
cGxlbWVudCEKIH0KIAotdW5zaWduZWQgY2hhciBjb21iaW5pbmdDbGFzcyhVQ2hhcjMyKQorVUNo
YXIzMiB1X2NoYXJNaXJyb3IoVUNoYXIzMiBjaGFyYWN0ZXIpCiB7Ci0gICAgcmV0dXJuIDA7IC8v
IEZJWE1FOiBpbXBsZW1lbnQhCisgICAgLy8gRklYTUU6IEltcGxlbWVudCB0aGlzLgorICAgIHJl
dHVybiBjaGFyYWN0ZXI7CiB9CiAKLURpcmVjdGlvbiBkaXJlY3Rpb24oVUNoYXIzMikKK2ludDhf
dCB1X2NoYXJUeXBlKFVDaGFyMzIpCiB7Ci0gICAgcmV0dXJuIExlZnRUb1JpZ2h0OyAvLyBGSVhN
RTogaW1wbGVtZW50IQorICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgdGhpcy4KKyAgICByZXR1cm4g
VV9DSEFSX0NBVEVHT1JZX1VOS05PV047CiB9CiAKLURlY29tcG9zaXRpb25UeXBlIGRlY29tcG9z
aXRpb25UeXBlKFVDaGFyMzIpCit1aW50OF90IHVfZ2V0Q29tYmluaW5nQ2xhc3MoVUNoYXIzMikK
IHsKLSAgICByZXR1cm4gRGVjb21wb3NpdGlvbk5vbmU7IC8vIEZJWE1FOiBpbXBsZW1lbnQhCisg
ICAgLy8gRklYTUU6IEltcGxlbWVudCB0aGlzLgorICAgIHJldHVybiAwOwogfQogCi1ib29sIHJl
cXVpcmVzQ29tcGxleENvbnRleHRGb3JXb3JkQnJlYWtpbmcoVUNoYXIzMikKK2ludCB1X2dldElu
dFByb3BlcnR5VmFsdWUoVUNoYXIzMiwgVVByb3BlcnR5IHByb3BlcnR5KQogewotICAgIHJldHVy
biBmYWxzZTsgLy8gRklYTUU6IGltcGxlbWVudCEKKyAgICBzd2l0Y2ggKHByb3BlcnR5KSB7Cisg
ICAgY2FzZSBVQ0hBUl9ERUNPTVBPU0lUSU9OX1RZUEU6CisgICAgICAgIC8vIEZJWE1FOiBJbXBs
ZW1lbnQgdGhpcy4KKyAgICAgICAgcmV0dXJuIFVfRFRfTk9ORTsKKyAgICBjYXNlIFVDSEFSX0xJ
TkVfQlJFQUs6CisgICAgICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgdGhpcy4KKyAgICAgICAgcmV0
dXJuIFVfTEJfVU5LTk9XTjsKKyAgICB9CisKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAg
ICByZXR1cm4gMDsKIH0KIAotVUNoYXIzMiBtaXJyb3JlZENoYXIoVUNoYXIzMiBjKQoraW50IHVf
bWVtY2FzZWNtcChjb25zdCBVQ2hhciogYSwgY29uc3QgVUNoYXIqIGIsIGludCBsZW5ndGgsIHVu
c2lnbmVkIG9wdGlvbnMpCiB7Ci0gICAgcmV0dXJuIGM7IC8vIEZJWE1FOiBpbXBsZW1lbnQhCisg
ICAgZm9yIChpbnQgaSA9IDA7IGkgPCBsZW5ndGg7ICsraSkgeworICAgICAgICBVQ2hhciBjMSA9
IHVfZm9sZENhc2UoYVtpXSwgb3B0aW9ucyk7CisgICAgICAgIFVDaGFyIGMyID0gdV9mb2xkQ2Fz
ZShiW2ldLCBvcHRpb25zKTsKKyAgICAgICAgaWYgKGMxICE9IGMyKQorICAgICAgICAgICAgcmV0
dXJuIGMxIC0gYzI7CisgICAgfQorCisgICAgcmV0dXJuIDA7CiB9CiAKIHRlbXBsYXRlPFVDaGFy
IEZ1bmN0aW9uKFVDaGFyKT4KLXN0YXRpYyBpbmxpbmUgaW50IGNvbnZlcnRXaXRoRnVuY3Rpb24o
VUNoYXIqIHJlc3VsdCwgaW50IHJlc3VsdExlbmd0aCwgY29uc3QgVUNoYXIqIHNvdXJjZSwgaW50
IHNvdXJjZUxlbmd0aCwgYm9vbCogaXNFcnJvcikKK3N0YXRpYyBpbmxpbmUgaW50IGNvbnZlcnRX
aXRoRnVuY3Rpb24oVUNoYXIqIHJlc3VsdCwgaW50IHJlc3VsdExlbmd0aCwgY29uc3QgVUNoYXIq
IHNvdXJjZSwgaW50IHNvdXJjZUxlbmd0aCwgVUVycm9yQ29kZSYgc3RhdHVzKQogewogICAgIFVD
aGFyKiByZXN1bHRJdGVyYXRvciA9IHJlc3VsdDsKICAgICBVQ2hhciogcmVzdWx0RW5kID0gcmVz
dWx0ICsgc3RkOjptaW4ocmVzdWx0TGVuZ3RoLCBzb3VyY2VMZW5ndGgpOwpAQCAtNzEsMjQgKzkz
LDIyIEBAIHN0YXRpYyBpbmxpbmUgaW50IGNvbnZlcnRXaXRoRnVuY3Rpb24oVUNoYXIqIHJlc3Vs
dCwgaW50IHJlc3VsdExlbmd0aCwgY29uc3QgVUNoCiAgICAgaWYgKHNvdXJjZUxlbmd0aCA8IHJl
c3VsdExlbmd0aCkKICAgICAgICAgKnJlc3VsdEl0ZXJhdG9yID0gJ1wwJzsKIAotICAgICppc0Vy
cm9yID0gc291cmNlTGVuZ3RoID4gcmVzdWx0TGVuZ3RoOworICAgIHN0YXR1cyA9IHNvdXJjZUxl
bmd0aCA+IHJlc3VsdExlbmd0aCA/IFVfRVJST1IgOiBVX1pFUk9fRVJST1I7CiAgICAgcmV0dXJu
IHNvdXJjZUxlbmd0aDsKIH0KIAotaW50IGZvbGRDYXNlKFVDaGFyKiByZXN1bHQsIGludCByZXN1
bHRMZW5ndGgsIGNvbnN0IFVDaGFyKiBzb3VyY2UsIGludCBzb3VyY2VMZW5ndGgsIGJvb2wqIGlz
RXJyb3IpCitpbnQgdV9zdHJGb2xkQ2FzZShVQ2hhciogcmVzdWx0LCBpbnQgcmVzdWx0TGVuZ3Ro
LCBjb25zdCBVQ2hhciogc291cmNlLCBpbnQgc291cmNlTGVuZ3RoLCB1bnNpZ25lZCBvcHRpb25z
LCBVRXJyb3JDb2RlKiBzdGF0dXMpCiB7Ci0gICAgcmV0dXJuIGNvbnZlcnRXaXRoRnVuY3Rpb248
Zm9sZENhc2U+KHJlc3VsdCwgcmVzdWx0TGVuZ3RoLCBzb3VyY2UsIHNvdXJjZUxlbmd0aCwgaXNF
cnJvcik7CisgICAgQVNTRVJUX1VOVVNFRChvcHRpb25zLCBvcHRpb25zID09IFVfRk9MRF9DQVNF
X0RFRkFVTFQpOworICAgIHJldHVybiBjb252ZXJ0V2l0aEZ1bmN0aW9uPHVfZm9sZENhc2U+KHJl
c3VsdCwgcmVzdWx0TGVuZ3RoLCBzb3VyY2UsIHNvdXJjZUxlbmd0aCwgKnN0YXR1cyk7CiB9CiAK
LWludCB0b0xvd2VyKFVDaGFyKiByZXN1bHQsIGludCByZXN1bHRMZW5ndGgsIGNvbnN0IFVDaGFy
KiBzb3VyY2UsIGludCBzb3VyY2VMZW5ndGgsIGJvb2wqIGlzRXJyb3IpCitpbnQgdV9zdHJUb0xv
d2VyKFVDaGFyKiByZXN1bHQsIGludCByZXN1bHRMZW5ndGgsIGNvbnN0IFVDaGFyKiBzb3VyY2Us
IGludCBzb3VyY2VMZW5ndGgsIGNvbnN0IGNoYXIqLCBVRXJyb3JDb2RlKiBzdGF0dXMpCiB7Ci0g
ICAgcmV0dXJuIGNvbnZlcnRXaXRoRnVuY3Rpb248dG9Mb3dlcj4ocmVzdWx0LCByZXN1bHRMZW5n
dGgsIHNvdXJjZSwgc291cmNlTGVuZ3RoLCBpc0Vycm9yKTsKKyAgICByZXR1cm4gY29udmVydFdp
dGhGdW5jdGlvbjx1X3RvbG93ZXI+KHJlc3VsdCwgcmVzdWx0TGVuZ3RoLCBzb3VyY2UsIHNvdXJj
ZUxlbmd0aCwgKnN0YXR1cyk7CiB9CiAKLWludCB0b1VwcGVyKFVDaGFyKiByZXN1bHQsIGludCBy
ZXN1bHRMZW5ndGgsIGNvbnN0IFVDaGFyKiBzb3VyY2UsIGludCBzb3VyY2VMZW5ndGgsIGJvb2wq
IGlzRXJyb3IpCitpbnQgdV9zdHJUb1VwcGVyKFVDaGFyKiByZXN1bHQsIGludCByZXN1bHRMZW5n
dGgsIGNvbnN0IFVDaGFyKiBzb3VyY2UsIGludCBzb3VyY2VMZW5ndGgsIGNvbnN0IGNoYXIqLCBV
RXJyb3JDb2RlKiBzdGF0dXMpCiB7Ci0gICAgcmV0dXJuIGNvbnZlcnRXaXRoRnVuY3Rpb248dG9V
cHBlcj4ocmVzdWx0LCByZXN1bHRMZW5ndGgsIHNvdXJjZSwgc291cmNlTGVuZ3RoLCBpc0Vycm9y
KTsKKyAgICByZXR1cm4gY29udmVydFdpdGhGdW5jdGlvbjx1X3RvdXBwZXI+KHJlc3VsdCwgcmVz
dWx0TGVuZ3RoLCBzb3VyY2UsIHNvdXJjZUxlbmd0aCwgKnN0YXR1cyk7CiB9Ci0KLX0gLy8gbmFt
ZXNwYWNlIFVuaWNvZGUKLX0gLy8gbmFtZXNwYWNlIFdURgpkaWZmIC0tZ2l0IGEvU291cmNlL1dU
Ri93dGYvdW5pY29kZS93Y2hhci9Vbmljb2RlV2NoYXIuaCBiL1NvdXJjZS9XVEYvd3RmL3VuaWNv
ZGUvd2NoYXIvVW5pY29kZVdjaGFyLmgKaW5kZXggZmUxMDk0YjM3ODFkNjc1MWM5M2NhNmY0YjRm
MGJlN2IxNTViOWM1MS4uMjIwNmVkZTgxOTBmMWI5ODBmZjVhY2ZlYTZkMTA3NThkOTQzZmEzMyAx
MDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvdW5pY29kZS93Y2hhci9Vbmljb2RlV2NoYXIuaAor
KysgYi9Tb3VyY2UvV1RGL3d0Zi91bmljb2RlL3djaGFyL1VuaWNvZGVXY2hhci5oCkBAIC0zMywx
MzUgKzMzLDEwMCBAQAogdHlwZWRlZiB3Y2hhcl90IFVDaGFyOwogdHlwZWRlZiB1aW50MzJfdCBV
Q2hhcjMyOwogCi1uYW1lc3BhY2UgV1RGIHsKLW5hbWVzcGFjZSBVbmljb2RlIHsKLQotZW51bSBE
aXJlY3Rpb24gewotICAgIExlZnRUb1JpZ2h0LAotICAgIFJpZ2h0VG9MZWZ0LAotICAgIEV1cm9w
ZWFuTnVtYmVyLAotICAgIEV1cm9wZWFuTnVtYmVyU2VwYXJhdG9yLAotICAgIEV1cm9wZWFuTnVt
YmVyVGVybWluYXRvciwKLSAgICBBcmFiaWNOdW1iZXIsCi0gICAgQ29tbW9uTnVtYmVyU2VwYXJh
dG9yLAotICAgIEJsb2NrU2VwYXJhdG9yLAotICAgIFNlZ21lbnRTZXBhcmF0b3IsCi0gICAgV2hp
dGVTcGFjZU5ldXRyYWwsCi0gICAgT3RoZXJOZXV0cmFsLAotICAgIExlZnRUb1JpZ2h0RW1iZWRk
aW5nLAotICAgIExlZnRUb1JpZ2h0T3ZlcnJpZGUsCi0gICAgUmlnaHRUb0xlZnRBcmFiaWMsCi0g
ICAgUmlnaHRUb0xlZnRFbWJlZGRpbmcsCi0gICAgUmlnaHRUb0xlZnRPdmVycmlkZSwKLSAgICBQ
b3BEaXJlY3Rpb25hbEZvcm1hdCwKLSAgICBOb25TcGFjaW5nTWFyaywKLSAgICBCb3VuZGFyeU5l
dXRyYWwKLX07CitlbnVtIFVCbG9ja0NvZGUgeyBVQkxPQ0tfVU5LTk9XTiwgVUJMT0NLX0FSQUJJ
QyB9OwogCi1lbnVtIERlY29tcG9zaXRpb25UeXBlIHsKLSAgICBEZWNvbXBvc2l0aW9uTm9uZSwK
LSAgICBEZWNvbXBvc2l0aW9uQ2Fub25pY2FsLAotICAgIERlY29tcG9zaXRpb25Db21wYXQsCi0g
ICAgRGVjb21wb3NpdGlvbkNpcmNsZSwKLSAgICBEZWNvbXBvc2l0aW9uRmluYWwsCi0gICAgRGVj
b21wb3NpdGlvbkZvbnQsCi0gICAgRGVjb21wb3NpdGlvbkZyYWN0aW9uLAotICAgIERlY29tcG9z
aXRpb25Jbml0aWFsLAotICAgIERlY29tcG9zaXRpb25Jc29sYXRlZCwKLSAgICBEZWNvbXBvc2l0
aW9uTWVkaWFsLAotICAgIERlY29tcG9zaXRpb25OYXJyb3csCi0gICAgRGVjb21wb3NpdGlvbk5v
QnJlYWssCi0gICAgRGVjb21wb3NpdGlvblNtYWxsLAotICAgIERlY29tcG9zaXRpb25TcXVhcmUs
Ci0gICAgRGVjb21wb3NpdGlvblN1YiwKLSAgICBEZWNvbXBvc2l0aW9uU3VwZXIsCi0gICAgRGVj
b21wb3NpdGlvblZlcnRpY2FsLAotICAgIERlY29tcG9zaXRpb25XaWRlCitlbnVtIFVDaGFyQ2F0
ZWdvcnkgeworICAgIFVfQ0hBUl9DQVRFR09SWV9VTktOT1dOLAorICAgIFVfUEFSQUdSQVBIX1NF
UEFSQVRPUiwKKyAgICBVX1NQQUNFX1NFUEFSQVRPUgogfTsKIAotZW51bSBDaGFyQ2F0ZWdvcnkg
ewotICAgIE5vQ2F0ZWdvcnkgPSAwLAotICAgIE90aGVyX05vdEFzc2lnbmVkID0gVV9NQVNLKDAp
LAotICAgIExldHRlcl9VcHBlcmNhc2UgPSBVX01BU0soMSksCi0gICAgTGV0dGVyX0xvd2VyY2Fz
ZSA9IFVfTUFTSygyKSwKLSAgICBMZXR0ZXJfVGl0bGVjYXNlID0gVV9NQVNLKDMpLAotICAgIExl
dHRlcl9Nb2RpZmllciA9IFVfTUFTSyg0KSwKLSAgICBMZXR0ZXJfT3RoZXIgPSBVX01BU0soNSks
Ci0KLSAgICBNYXJrX05vblNwYWNpbmcgPSBVX01BU0soNiksCi0gICAgTWFya19FbmNsb3Npbmcg
PSBVX01BU0soNyksCi0gICAgTWFya19TcGFjaW5nQ29tYmluaW5nID0gVV9NQVNLKDgpLAotCi0g
ICAgTnVtYmVyX0RlY2ltYWxEaWdpdCA9IFVfTUFTSyg5KSwKLSAgICBOdW1iZXJfTGV0dGVyID0g
VV9NQVNLKDEwKSwKLSAgICBOdW1iZXJfT3RoZXIgPSBVX01BU0soMTEpLAotCi0gICAgU2VwYXJh
dG9yX1NwYWNlID0gVV9NQVNLKDEyKSwKLSAgICBTZXBhcmF0b3JfTGluZSA9IFVfTUFTSygxMyks
Ci0gICAgU2VwYXJhdG9yX1BhcmFncmFwaCA9IFVfTUFTSygxNCksCi0KLSAgICBPdGhlcl9Db250
cm9sID0gVV9NQVNLKDE1KSwKLSAgICBPdGhlcl9Gb3JtYXQgPSBVX01BU0soMTYpLAotICAgIE90
aGVyX1ByaXZhdGVVc2UgPSBVX01BU0soMTcpLAotICAgIE90aGVyX1N1cnJvZ2F0ZSA9IFVfTUFT
SygxOCksCi0KLSAgICBQdW5jdHVhdGlvbl9EYXNoID0gVV9NQVNLKDE5KSwKLSAgICBQdW5jdHVh
dGlvbl9PcGVuID0gVV9NQVNLKDIwKSwKLSAgICBQdW5jdHVhdGlvbl9DbG9zZSA9IFVfTUFTSygy
MSksCi0gICAgUHVuY3R1YXRpb25fQ29ubmVjdG9yID0gVV9NQVNLKDIyKSwKLSAgICBQdW5jdHVh
dGlvbl9PdGhlciA9IFVfTUFTSygyMyksCi0KLSAgICBTeW1ib2xfTWF0aCA9IFVfTUFTSygyNCks
Ci0gICAgU3ltYm9sX0N1cnJlbmN5ID0gVV9NQVNLKDI1KSwKLSAgICBTeW1ib2xfTW9kaWZpZXIg
PSBVX01BU0soMjYpLAotICAgIFN5bWJvbF9PdGhlciA9IFVfTUFTSygyNyksCi0KLSAgICBQdW5j
dHVhdGlvbl9Jbml0aWFsUXVvdGUgPSBVX01BU0soMjgpLAotICAgIFB1bmN0dWF0aW9uX0ZpbmFs
UXVvdGUgPSBVX01BU0soMjkpCitlbnVtIFVDaGFyRGlyZWN0aW9uIHsKKyAgICBVX0xFRlRfVE9f
UklHSFQsCisgICAgVV9SSUdIVF9UT19MRUZULAorICAgIFVfRVVST1BFQU5fTlVNQkVSLAorICAg
IFVfRVVST1BFQU5fTlVNQkVSX1NFUEFSQVRPUiwKKyAgICBVX0VVUk9QRUFOX05VTUJFUl9URVJN
SU5BVE9SLAorICAgIFVfQVJBQklDX05VTUJFUiwKKyAgICBVX0NPTU1PTl9OVU1CRVJfU0VQQVJB
VE9SLAorICAgIFVfQkxPQ0tfU0VQQVJBVE9SLAorICAgIFVfU0VHTUVOVF9TRVBBUkFUT1IsCisg
ICAgVV9XSElURV9TUEFDRV9ORVVUUkFMLAorICAgIFVfT1RIRVJfTkVVVFJBTCwKKyAgICBVX0xF
RlRfVE9fUklHSFRfRU1CRURESU5HLAorICAgIFVfTEVGVF9UT19SSUdIVF9PVkVSUklERSwKKyAg
ICBVX1JJR0hUX1RPX0xFRlRfQVJBQklDLAorICAgIFVfUklHSFRfVE9fTEVGVF9FTUJFRERJTkcs
CisgICAgVV9SSUdIVF9UT19MRUZUX09WRVJSSURFLAorICAgIFVfUE9QX0RJUkVDVElPTkFMX0ZP
Uk1BVCwKKyAgICBVX0RJUl9OT05fU1BBQ0lOR19NQVJLLAorICAgIFVfQk9VTkRBUllfTkVVVFJB
TAogfTsKIAotCi1XVEZfRVhQT1JUX1BSSVZBVEUgQ2hhckNhdGVnb3J5IGNhdGVnb3J5KFVDaGFy
MzIpOwotV1RGX0VYUE9SVF9QUklWQVRFIHVuc2lnbmVkIGNoYXIgY29tYmluaW5nQ2xhc3MoVUNo
YXIzMik7Ci1XVEZfRVhQT1JUX1BSSVZBVEUgRGlyZWN0aW9uIGRpcmVjdGlvbihVQ2hhcjMyKTsK
LVdURl9FWFBPUlRfUFJJVkFURSBEZWNvbXBvc2l0aW9uVHlwZSBkZWNvbXBvc2l0aW9uVHlwZShV
Q2hhcjMyKTsKLVdURl9FWFBPUlRfUFJJVkFURSBib29sIHJlcXVpcmVzQ29tcGxleENvbnRleHRG
b3JXb3JkQnJlYWtpbmcoVUNoYXIzMik7Ci1XVEZfRVhQT1JUX1BSSVZBVEUgVUNoYXIzMiBtaXJy
b3JlZENoYXIoVUNoYXIzMik7Ci0KLWlubGluZSBib29sIGlzQWxwaGFudW1lcmljKFVDaGFyIGMp
IHsgcmV0dXJuICEhaXN3YWxudW0oYyk7IH0KLWlubGluZSBib29sIGlzRGlnaXQoVUNoYXIgYykg
eyByZXR1cm4gISFpc3dkaWdpdChjKTsgfQotaW5saW5lIGJvb2wgaXNMZXR0ZXIoVUNoYXIgYykg
eyByZXR1cm4gISFpc3dhbHBoYShjKTsgfQotaW5saW5lIGJvb2wgaXNMb3dlcihVQ2hhciBjKSB7
IHJldHVybiAhIWlzd2xvd2VyKGMpOyB9Ci1pbmxpbmUgYm9vbCBpc1ByaW50YWJsZUNoYXIoVUNo
YXIgYykgeyByZXR1cm4gISFpc3dwcmludChjKTsgfQotaW5saW5lIGJvb2wgaXNQdW5jdChVQ2hh
ciBjKSB7IHJldHVybiAhIWlzd3B1bmN0KGMpOyB9Ci1pbmxpbmUgYm9vbCBpc1NwYWNlKFVDaGFy
IGMpIHsgcmV0dXJuICEhaXN3c3BhY2UoYyk7IH0KLWlubGluZSBib29sIGlzVXBwZXIoVUNoYXIg
YykgeyByZXR1cm4gISFpc3d1cHBlcihjKTsgfQotCi1pbmxpbmUgYm9vbCBpc0FyYWJpY0NoYXIo
VUNoYXIzMiBjKSB7IHJldHVybiBjID49IDB4MDYwMCAmJiBjIDw9IDB4MDZmZjsgfQotaW5saW5l
IGJvb2wgaXNTZXBhcmF0b3JTcGFjZShVQ2hhcjMyIGMpIHsgcmV0dXJuIGNhdGVnb3J5KGMpID09
IFNlcGFyYXRvcl9TcGFjZTsgfQotCi1pbmxpbmUgVUNoYXIgZm9sZENhc2UoVUNoYXIgYykgeyBy
ZXR1cm4gdG93bG93ZXIoYyk7IH0KLWlubGluZSBVQ2hhciB0b0xvd2VyKFVDaGFyIGMpIHsgcmV0
dXJuIHRvd2xvd2VyKGMpOyB9Ci1pbmxpbmUgVUNoYXIgdG9VcHBlcihVQ2hhciBjKSB7IHJldHVy
biB0b3d1cHBlcihjKTsgfQotaW5saW5lIFVDaGFyIHRvVGl0bGVDYXNlKFVDaGFyIGMpIHsgcmV0
dXJuIHRvd3VwcGVyKGMpOyB9Ci0KLVdURl9FWFBPUlRfUFJJVkFURSBpbnQgZm9sZENhc2UoVUNo
YXIqIHJlc3VsdCwgaW50IHJlc3VsdExlbmd0aCwgY29uc3QgVUNoYXIqIHNvdXJjZSwgaW50IHNv
dXJjZUxlbmd0aCwgYm9vbCogaXNFcnJvcik7Ci1XVEZfRVhQT1JUX1BSSVZBVEUgaW50IHRvTG93
ZXIoVUNoYXIqIHJlc3VsdCwgaW50IHJlc3VsdExlbmd0aCwgY29uc3QgVUNoYXIqIHNvdXJjZSwg
aW50IHNvdXJjZUxlbmd0aCwgYm9vbCogaXNFcnJvcik7Ci1XVEZfRVhQT1JUX1BSSVZBVEUgaW50
IHRvVXBwZXIoVUNoYXIqIHJlc3VsdCwgaW50IHJlc3VsdExlbmd0aCwgY29uc3QgVUNoYXIqIHNv
dXJjZSwgaW50IHNvdXJjZUxlbmd0aCwgYm9vbCogaXNFcnJvcik7Ci0KLWlubGluZSBpbnQgdW1l
bWNhc2VjbXAoY29uc3QgVUNoYXIqIGEsIGNvbnN0IFVDaGFyKiBiLCBpbnQgbGVuKQotewotICAg
IGZvciAoaW50IGkgPSAwOyBpIDwgbGVuOyArK2kpIHsKLSAgICAgICAgVUNoYXIgYzEgPSBmb2xk
Q2FzZShhW2ldKTsKLSAgICAgICAgVUNoYXIgYzIgPSBmb2xkQ2FzZShiW2ldKTsKLSAgICAgICAg
aWYgKGMxICE9IGMyKQotICAgICAgICAgICAgcmV0dXJuIGMxIC0gYzI7Ci0gICAgfQotCi0gICAg
cmV0dXJuIDA7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFVuaWNvZGUKLX0gLy8gbmFtZXNwYWNlIFdU
RgorZW51bSBVRGVjb21wb3NpdGlvblR5cGUgeyBVX0RUX05PTkUsIFVfRFRfQ09NUEFULCBVX0RU
X0ZPTlQgfQorCitlbnVtIFVFcnJvckNvZGUgeyBVX1pFUk9fRVJST1IgPSAwLCBVX0VSUk9SIH07
CisKK2VudW0gVUxpbmVCcmVhayB7IFVfTEJfVU5LTk9XTiwgVV9MQl9DT01QTEVYX0NPTlRFWFQs
IFVfTEJfQ09ORElUSU9OQUxfSkFQQU5FU0VfU1RBUlRFUiwgVV9MQl9JREVPR1JBUEhJQyB9Owor
CitlbnVtIFVOb3JtYWxpemF0aW9uTW9kZSB7IFVOT1JNX05GQyB9OworCitlbnVtIFVQcm9wZXJ0
eSB7IFVDSEFSX0RFQ09NUE9TSVRJT05fVFlQRSwgVUNIQVJfTElORV9CUkVBSyB9OworCitlbnVt
IHsgVU5PUk1fVU5JQ09ERV8zXzIgfTsKKworLy8gRklYTUU6IFdvdWxkIGJlIGdvb2QgdG8gZGVm
aW5lIGFsbCBvZiB0aGVzZSBpbiB0ZXJtcyBvZiBVQ2hhckNhdGVnb3J5IGNvbnN0YW50cywgYnV0
IHVudGlsIHVfY2hhclR5cGUKKy8vIGlzIGltcGxlbWVudGVkLCB0aGF0J3Mgbm90IHJlYWxseSB3
b3J0aCB0aGUgdGltZS4KKworI2RlZmluZSBVX0dDX0NDX01BU0sgMAorI2RlZmluZSBVX0dDX0NG
X01BU0sgMAorI2RlZmluZSBVX0dDX0NOX01BU0sgMAorI2RlZmluZSBVX0dDX0xMX01BU0sgMAor
I2RlZmluZSBVX0dDX0xNX01BU0sgMAorI2RlZmluZSBVX0dDX0xPX01BU0sgMAorI2RlZmluZSBV
X0dDX0xUX01BU0sgMAorI2RlZmluZSBVX0dDX0xVX01BU0sgMAorI2RlZmluZSBVX0dDX01DX01B
U0sgMAorI2RlZmluZSBVX0dDX01OX01BU0sgMAorI2RlZmluZSBVX0dDX05EX01BU0sgMAorI2Rl
ZmluZSBVX0dDX05MX01BU0sgMAorI2RlZmluZSBVX0dDX1BDX01BU0sgMAorI2RlZmluZSBVX0dD
X1BFX01BU0sgMAorI2RlZmluZSBVX0dDX1BGX01BU0sgMAorI2RlZmluZSBVX0dDX1BJX01BU0sg
MAorI2RlZmluZSBVX0dDX1BPX01BU0sgMAorI2RlZmluZSBVX0dDX1BTX01BU0sgMAorI2RlZmlu
ZSBVX0dDX1pMX01BU0sgMAorI2RlZmluZSBVX0dDX1pQX01BU0sgMAorCisjZGVmaW5lIFVfR0Nf
TF9NQVNLIDAKKyNkZWZpbmUgVV9HQ19NX01BU0sgMAorI2RlZmluZSBVX0dDX1pfTUFTSyAwCisK
KyNkZWZpbmUgVV9TVUNDRVNTKHN0YXR1cykgKChzdGF0dXMpIDw9IDApCisjZGVmaW5lIFVfRkFJ
TFVSRShzdGF0dXMpICgoc3RhdHVzKSA+IDApCisKKyNkZWZpbmUgVV9GT0xEX0NBU0VfREVGQVVM
VCAwCisKKyNkZWZpbmUgVV9HRVRfR0NfTUFTSyhjKSBVX01BU0sodV9jaGFyVHlwZShjKSkKKwor
aW5saW5lIFVCbG9ja0NvZGUgdWJsb2NrX2dldENvZGUoVUNoYXIzMiBjaGFyYWN0ZXIpIHsgcmV0
dXJuIChjaGFyYWN0ZXIgJiB+MHhGRikgPT0gMHg2MDAgPyBVQkxPQ0tfQVJBQklDIDogVUJMT0NL
X1VOS05PV047IH0KK1dURl9FWFBPUlRfUFJJVkFURSBpbnQgdW5vcm1fbm9ybWFsaXplKGNvbnN0
IFVDaGFyKiBzb3VyY2UsIGludDMyX3Qgc291cmNlTGVuZ3RoLCBVTm9ybWFsaXphdGlvbk1vZGUg
bW9kZSwgaW50MzJfdCBvcHRpb25zLCBVQ2hhciogcmVzdWx0LCBpbnQzMl90IHJlc3VsdExlbmd0
aCwgVUVycm9yQ29kZSogc3RhdHVzKTsKK1dURl9FWFBPUlRfUFJJVkFURSBVQ2hhckRpcmVjdGlv
biB1X2NoYXJEaXJlY3Rpb24oVUNoYXIzMik7CitXVEZfRVhQT1JUX1BSSVZBVEUgVUNoYXIzMiB1
X2NoYXJNaXJyb3IoVUNoYXIzMik7CitXVEZfRVhQT1JUX1BSSVZBVEUgVUNoYXJDYXRlZ29yeSB1
X2NoYXJUeXBlKFVDaGFyMzIpOworaW5saW5lIFVDaGFyMzIgdV9mb2xkQ2FzZShVQ2hhcjMyIGNo
YXJhY3RlciwgdW5zaWduZWQgb3B0aW9uKSB7IEFTU0VSVF9VTlVTRUQob3B0aW9ucywgb3B0aW9u
cyA9PSBVX0ZPTERfQ0FTRV9ERUZBVUxUKTsgcmV0dXJuIHRvd2xvd2VyKGNoYXJhY3Rlcik7IH0K
K1dURl9FWFBPUlRfUFJJVkFURSB1aW50OF90IHVfZ2V0Q29tYmluaW5nQ2xhc3MoVUNoYXIzMik7
CitXVEZfRVhQT1JUX1BSSVZBVEUgaW50IHVfZ2V0SW50UHJvcGVydHlWYWx1ZShVQ2hhcjMyLCBV
UHJvcGVydHkpOworaW5saW5lIGJvb2wgdV9pc2FsbnVtKFVDaGFyMzIgY2hhcmFjdGVyKSB7IHJl
dHVybiBpc3dhbG51bShjaGFyYWN0ZXIpOyB9CitpbmxpbmUgYm9vbCB1X2lzcHVuY3QoVUNoYXIz
MiBjaGFyYWN0ZXIpIHsgcmV0dXJuIGlzd3B1bmN0KGNoYXJhY3Rlcik7IH0KK1dURl9FWFBPUlRf
UFJJVkFURSBpbnQgdV9tZW1jYXNlY21wKGNvbnN0IFVDaGFyKiwgY29uc3QgVUNoYXIqLCBpbnQg
c291cmNlTGVuZ3RoLCB1bnNpZ25lZCBvcHRpb25zKTsKK2lubGluZSBib29sIHVfcHJpbnQoVUNo
YXIzMiBjaGFyYWN0ZXIpIHsgcmV0dXJuIGlzd3ByaW50KGNoYXJhY3Rlcik7IH0KK1dURl9FWFBP
UlRfUFJJVkFURSBpbnQgdV9zdHJGb2xkQ2FzZShVQ2hhciogcmVzdWx0LCBpbnQgcmVzdWx0TGVu
Z3RoLCBjb25zdCBVQ2hhciogc291cmNlLCBpbnQgc291cmNlTGVuZ3RoLCB1bnNpZ25lZCBvcHRp
b25zLCBVRXJyb3JDb2RlKik7CitXVEZfRVhQT1JUX1BSSVZBVEUgaW50IHVfc3RyVG9Mb3dlcihV
Q2hhciogcmVzdWx0LCBpbnQgcmVzdWx0TGVuZ3RoLCBjb25zdCBVQ2hhciogc291cmNlLCBpbnQg
c291cmNlTGVuZ3RoLCBjb25zdCBjaGFyKiBsb2NhbGUsIFVFcnJvckNvZGUqKTsKK1dURl9FWFBP
UlRfUFJJVkFURSBpbnQgdV9zdHJUb1VwcGVyKFVDaGFyKiByZXN1bHQsIGludCByZXN1bHRMZW5n
dGgsIGNvbnN0IFVDaGFyKiBzb3VyY2UsIGludCBzb3VyY2VMZW5ndGgsIGNvbnN0IGNoYXIqIGxv
Y2FsZSwgVUVycm9yQ29kZSopOworaW5saW5lIFVDaGFyMzIgdV90b2xvd2VyKFVDaGFyMzIgY2hh
cmFjdGVyKSB7IHJldHVybiB0b3dsb3dlcihjaGFyYWN0ZXIpOyB9CitpbmxpbmUgVUNoYXIzMiB1
X3RvdGl0bGUoVUNoYXIzMiBjaGFyYWN0ZXIpIHsgcmV0dXJuIHRvd3VwcGVyKGNoYXJhY3Rlcik7
IH0KK2lubGluZSBVQ2hhcjMyIHVfdG91cHBlcihVQ2hhcjMyIGNoYXJhY3RlcikgeyByZXR1cm4g
dG93dXBwZXIoY2hhcmFjdGVyKTsgfQogCiAjZW5kaWYgLy8gV1RGX1VuaWNvZGVXY2hhcl9oCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJLZXlQYXRoLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQktleVBhdGguY3BwCmluZGV4
IDU4ODU3NDc5N2MzMmJhM2E0ZjIxODY1ODY5OTQwZDAzOGQzNDFhYzUuLmU0NWFlYTQzNzY5YmU3
Y2YwZDVkMDU4ZWFhNGQwNzViMjNiYmE2YmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaW5kZXhlZGRiL0lEQktleVBhdGguY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaW5kZXhlZGRiL0lEQktleVBhdGguY3BwCkBAIC04NiwyNCArODYsMjIgQEAgSURCS2V5UGF0
aExleGVyOjpUb2tlblR5cGUgSURCS2V5UGF0aExleGVyOjpsZXgoU3RyaW5nJiBlbGVtZW50KQog
CiBuYW1lc3BhY2UgewogCi11c2luZyBuYW1lc3BhY2UgV1RGOjpVbmljb2RlOwotCiAvLyBUaGUg
Zm9sbG93aW5nIGNvcnJlc3BvbmQgdG8gZ3JhbW1hciBpbiBFQ01BLTI2Mi4KLWNvbnN0IHVpbnQz
Ml90IHVuaWNvZGVMZXR0ZXIgPSBMZXR0ZXJfVXBwZXJjYXNlIHwgTGV0dGVyX0xvd2VyY2FzZSB8
IExldHRlcl9UaXRsZWNhc2UgfCBMZXR0ZXJfTW9kaWZpZXIgfCBMZXR0ZXJfT3RoZXIgfCBOdW1i
ZXJfTGV0dGVyOwotY29uc3QgdWludDMyX3QgdW5pY29kZUNvbWJpbmluZ01hcmsgPSBNYXJrX05v
blNwYWNpbmcgfCBNYXJrX1NwYWNpbmdDb21iaW5pbmc7Ci1jb25zdCB1aW50MzJfdCB1bmljb2Rl
RGlnaXQgPSBOdW1iZXJfRGVjaW1hbERpZ2l0OwotY29uc3QgdWludDMyX3QgdW5pY29kZUNvbm5l
Y3RvclB1bmN0dWF0aW9uID0gUHVuY3R1YXRpb25fQ29ubmVjdG9yOworY29uc3QgdWludDMyX3Qg
dW5pY29kZUxldHRlciA9IFVfR0NfTF9NQVNLIHwgVV9HQ19OTF9NQVNLOworY29uc3QgdWludDMy
X3QgdW5pY29kZUNvbWJpbmluZ01hcmsgPSBVX0dDX01OX01BU0sgfCBVX0dDX01DX01BU0s7Citj
b25zdCB1aW50MzJfdCB1bmljb2RlRGlnaXQgPSBVX0dDX05EX01BU0s7Citjb25zdCB1aW50MzJf
dCB1bmljb2RlQ29ubmVjdG9yUHVuY3R1YXRpb24gPSBVX0dDX1BDX01BU0s7CiBjb25zdCBVQ2hh
ciBaV05KID0gMHgyMDBDOwogY29uc3QgVUNoYXIgWldKID0gMHgyMDBEOwogCiBzdGF0aWMgaW5s
aW5lIGJvb2wgaXNJZGVudGlmaWVyU3RhcnRDaGFyYWN0ZXIoVUNoYXIgYykKIHsKLSAgICByZXR1
cm4gKGNhdGVnb3J5KGMpICYgdW5pY29kZUxldHRlcikgfHwgKGMgPT0gJyQnKSB8fCAoYyA9PSAn
XycpOworICAgIHJldHVybiAoVV9HRVRfR0NfTUFTSyhjKSAmIHVuaWNvZGVMZXR0ZXIpIHx8IChj
ID09ICckJykgfHwgKGMgPT0gJ18nKTsKIH0KIAogc3RhdGljIGlubGluZSBib29sIGlzSWRlbnRp
ZmllckNoYXJhY3RlcihVQ2hhciBjKQogewotICAgIHJldHVybiAoY2F0ZWdvcnkoYykgJiAodW5p
Y29kZUxldHRlciB8IHVuaWNvZGVDb21iaW5pbmdNYXJrIHwgdW5pY29kZURpZ2l0IHwgdW5pY29k
ZUNvbm5lY3RvclB1bmN0dWF0aW9uKSkgfHwgKGMgPT0gJyQnKSB8fCAoYyA9PSAnXycpIHx8IChj
ID09IFpXTkopIHx8IChjID09IFpXSik7CisgICAgcmV0dXJuIChVX0dFVF9HQ19NQVNLKGMpICYg
KHVuaWNvZGVMZXR0ZXIgfCB1bmljb2RlQ29tYmluaW5nTWFyayB8IHVuaWNvZGVEaWdpdCB8IHVu
aWNvZGVDb25uZWN0b3JQdW5jdHVhdGlvbikpIHx8IChjID09ICckJykgfHwgKGMgPT0gJ18nKSB8
fCAoYyA9PSBaV05KKSB8fCAoYyA9PSBaV0opOwogfQogCiB9IC8vIG5hbWVzcGFjZQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTUGFyc2VyLmNwcAppbmRleCA2MTNhNDM2Yzc4YjEwNDNkMDM5ZDBjYmE4ZTNmZWM0ZTEz
OTZkNGM3Li5kMWI5NzJhMGI0YzM3ZWVkYzBhYWZkMzY5MDljMmMyOGQyOGNkYWZhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9jc3MvQ1NTUGFyc2VyLmNwcApAQCAtMzc1LDggKzM3NSwxMCBAQCBBTFdBWVNfSU5MSU5FIHN0
YXRpYyB2b2lkIG1ha2VMb3dlcihjb25zdCBDaGFyYWN0ZXJUeXBlKiBpbnB1dCwgQ2hhcmFjdGVy
VHlwZSogbwogICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbGVuZ3RoOyBpKyspCiAg
ICAgICAgICAgICBvdXRwdXRbaV0gPSB0b0FTQ0lJTG93ZXIoaW5wdXRbaV0pOwogICAgIH0gZWxz
ZSB7Ci0gICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykKLSAgICAg
ICAgICAgIG91dHB1dFtpXSA9IFVuaWNvZGU6OnRvTG93ZXIoaW5wdXRbaV0pOworICAgICAgICBm
b3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbGVuZ3RoOyBpKyspIHsKKyAgICAgICAgICAgIEFTU0VS
VCh1X3RvbG93ZXIoaW5wdXRbaV0pIDw9IDB4RkZGRik7CisgICAgICAgICAgICBvdXRwdXRbaV0g
PSB1X3RvbG93ZXIoaW5wdXRbaV0pOworICAgICAgICB9CiAgICAgfQogfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0Rv
Y3VtZW50LmNwcAppbmRleCBkOGI3MzAyM2RjNDNmN2FmOGQwNWIzYjgyMDNmZjI5ZDQyMmFjZGZk
Li5hZWJhNjMyMzRlZTFlZWJlNTIxMGZiOWYyNDBlZTFjYjI2MDk2YTJlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9E
b2N1bWVudC5jcHAKQEAgLTI2Nyw4ICsyNjcsNyBAQCBzdGF0aWMgaW5saW5lIGJvb2wgaXNWYWxp
ZE5hbWVTdGFydChVQ2hhcjMyIGMpCiAgICAgICAgIHJldHVybiB0cnVlOwogCiAgICAgLy8gcnVs
ZXMgKGEpIGFuZCAoZikgYWJvdmUKLSAgICBjb25zdCB1aW50MzJfdCBuYW1lU3RhcnRNYXNrID0g
TGV0dGVyX0xvd2VyY2FzZSB8IExldHRlcl9VcHBlcmNhc2UgfCBMZXR0ZXJfT3RoZXIgfCBMZXR0
ZXJfVGl0bGVjYXNlIHwgTnVtYmVyX0xldHRlcjsKLSAgICBpZiAoIShVbmljb2RlOjpjYXRlZ29y
eShjKSAmIG5hbWVTdGFydE1hc2spKQorICAgIGlmICghKFVfR0VUX0dDX01BU0soYykgJiAoVV9H
Q19MTF9NQVNLIHwgVV9HQ19MVV9NQVNLIHwgVV9HQ19MT19NQVNLIHwgVV9HQ19MVF9NQVNLIHwg
VV9HQ19OTF9NQVNLKSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIC8vIHJ1bGUgKGMp
IGFib3ZlCkBAIC0yNzYsOCArMjc1LDggQEAgc3RhdGljIGlubGluZSBib29sIGlzVmFsaWROYW1l
U3RhcnQoVUNoYXIzMiBjKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICAvLyBydWxlIChk
KSBhYm92ZQotICAgIERlY29tcG9zaXRpb25UeXBlIGRlY29tcFR5cGUgPSBkZWNvbXBvc2l0aW9u
VHlwZShjKTsKLSAgICBpZiAoZGVjb21wVHlwZSA9PSBEZWNvbXBvc2l0aW9uRm9udCB8fCBkZWNv
bXBUeXBlID09IERlY29tcG9zaXRpb25Db21wYXQpCisgICAgaW50IHR5cGUgPSB1X2dldEludFBy
b3BlcnR5VmFsdWUoYywgVUNIQVJfREVDT01QT1NJVElPTl9UWVBFKTsKKyAgICBpZiAodHlwZSA9
PSBVX0RUX0ZPTlQgfHwgdHlwZSA9PSBVX0RUX0NPTVBBVCkKICAgICAgICAgcmV0dXJuIGZhbHNl
OwogCiAgICAgcmV0dXJuIHRydWU7CkBAIC0yOTgsOCArMjk3LDcgQEAgc3RhdGljIGlubGluZSBi
b29sIGlzVmFsaWROYW1lUGFydChVQ2hhcjMyIGMpCiAgICAgICAgIHJldHVybiB0cnVlOwogCiAg
ICAgLy8gcnVsZXMgKGIpIGFuZCAoZikgYWJvdmUKLSAgICBjb25zdCB1aW50MzJfdCBvdGhlck5h
bWVQYXJ0TWFzayA9IE1hcmtfTm9uU3BhY2luZyB8IE1hcmtfRW5jbG9zaW5nIHwgTWFya19TcGFj
aW5nQ29tYmluaW5nIHwgTGV0dGVyX01vZGlmaWVyIHwgTnVtYmVyX0RlY2ltYWxEaWdpdDsKLSAg
ICBpZiAoIShVbmljb2RlOjpjYXRlZ29yeShjKSAmIG90aGVyTmFtZVBhcnRNYXNrKSkKKyAgICBp
ZiAoIShVX0dFVF9HQ19NQVNLKGMpICYgKFVfR0NfTV9NQVNLIHwgVV9HQ19MTV9NQVNLIHwgVV9H
Q19ORF9NQVNLKSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIC8vIHJ1bGUgKGMpIGFi
b3ZlCkBAIC0zMDcsOCArMzA1LDggQEAgc3RhdGljIGlubGluZSBib29sIGlzVmFsaWROYW1lUGFy
dChVQ2hhcjMyIGMpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIC8vIHJ1bGUgKGQpIGFi
b3ZlCi0gICAgRGVjb21wb3NpdGlvblR5cGUgZGVjb21wVHlwZSA9IGRlY29tcG9zaXRpb25UeXBl
KGMpOwotICAgIGlmIChkZWNvbXBUeXBlID09IERlY29tcG9zaXRpb25Gb250IHx8IGRlY29tcFR5
cGUgPT0gRGVjb21wb3NpdGlvbkNvbXBhdCkKKyAgICBpbnQgdHlwZSA9IHVfZ2V0SW50UHJvcGVy
dHlWYWx1ZShjLCBVQ0hBUl9ERUNPTVBPU0lUSU9OX1RZUEUpOworICAgIGlmICh0eXBlID09IFVf
RFRfRk9OVCB8fCB0eXBlID09IFVfRFRfQ09NUEFUKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAK
ICAgICByZXR1cm4gdHJ1ZTsKQEAgLTE1MDYsNyArMTUwNCw3IEBAIHN0YXRpYyBpbmxpbmUgU3Ry
aW5nV2l0aERpcmVjdGlvbiBjYW5vbmljYWxpemVkVGl0bGUoRG9jdW1lbnQqIGRvY3VtZW50LCBj
b25zdCBTCiAgICAgYm9vbCBwcmV2aW91c0NoYXJXYXNXUyA9IGZhbHNlOwogICAgIGZvciAoOyBp
IDwgbGVuZ3RoOyArK2kpIHsKICAgICAgICAgQ2hhcmFjdGVyVHlwZSBjID0gY2hhcmFjdGVyc1tp
XTsKLSAgICAgICAgaWYgKGMgPD0gMHgyMCB8fCBjID09IDB4N0YgfHwgKFdURjo6VW5pY29kZTo6
Y2F0ZWdvcnkoYykgJiAoV1RGOjpVbmljb2RlOjpTZXBhcmF0b3JfTGluZSB8IFdURjo6VW5pY29k
ZTo6U2VwYXJhdG9yX1BhcmFncmFwaCkpKSB7CisgICAgICAgIGlmIChjIDw9IDB4MjAgfHwgYyA9
PSAweDdGIHx8IChVX0dFVF9HQ19NQVNLKGMpICYgKFVfR0NfWkxfTUFTSyB8IFVfR0NfWlBfTUFT
SykpKSB7CiAgICAgICAgICAgICBpZiAocHJldmlvdXNDaGFyV2FzV1MpCiAgICAgICAgICAgICAg
ICAgY29udGludWU7CiAgICAgICAgICAgICBidWZmZXJbYnVpbGRlckluZGV4KytdID0gJyAnOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwIGIvU291cmNlL1dl
YkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwCmluZGV4IDZkODVkODIxOTE3ZDViMjNiODllOTYxOGNi
MGMzODQ4ODdmZDk2ZDIuLjIyMDA4MmNhNmY4ZDJhZjg4ODNkYWE2ZTQ3YWI0NGMwYWE0Y2Y0NDYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAKQEAgLTk3NSw3ICs5NzUsNyBAQCBib29sIEVk
aXRvcjo6aW5zZXJ0VGV4dFdpdGhvdXRTZW5kaW5nVGV4dEV2ZW50KGNvbnN0IFN0cmluZyYgdGV4
dCwgYm9vbCBzZWxlY3RJbgogICAgIGlmICh0ZXh0ID09ICIgIiB8fCB0ZXh0ID09ICJcdCIpCiAg
ICAgICAgIHNob3VsZENvbnNpZGVyQXBwbHlpbmdBdXRvY29ycmVjdGlvbiA9IHRydWU7CiAKLSAg
ICBpZiAodGV4dC5sZW5ndGgoKSA9PSAxICYmIGlzUHVuY3QodGV4dFswXSkgJiYgIWlzQW1iaWd1
b3VzQm91bmRhcnlDaGFyYWN0ZXIodGV4dFswXSkpCisgICAgaWYgKHRleHQubGVuZ3RoKCkgPT0g
MSAmJiB1X2lzcHVuY3QodGV4dFswXSkgJiYgIWlzQW1iaWd1b3VzQm91bmRhcnlDaGFyYWN0ZXIo
dGV4dFswXSkpCiAgICAgICAgIHNob3VsZENvbnNpZGVyQXBwbHlpbmdBdXRvY29ycmVjdGlvbiA9
IHRydWU7CiAKICAgICBib29sIGF1dG9jb3JyZWN0aW9uV2FzQXBwbGllZCA9IHNob3VsZENvbnNp
ZGVyQXBwbHlpbmdBdXRvY29ycmVjdGlvbiAmJiBtX2FsdGVybmF0aXZlVGV4dENvbnRyb2xsZXIt
PmFwcGx5QXV0b2NvcnJlY3Rpb25CZWZvcmVUeXBpbmdJZkFwcHJvcHJpYXRlKCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1RleHRJdGVyYXRvci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL1RleHRJdGVyYXRvci5jcHAKaW5kZXggNDY2ZGU4MzVlOTQzOGZmMjhkMDdk
OTRlZTlkMmIwYWRiYWE2MTNmYy4uODQ2ZjZjOTZkYjJhZDg5NTdmMTk4YzkyMzBkMzhjZTZlOWNl
Yzk1ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0SXRlcmF0b3IuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dEl0ZXJhdG9yLmNwcApAQCAtMjMxNiw5
ICsyMzE2LDkgQEAgaW5saW5lIHNpemVfdCBTZWFyY2hCdWZmZXI6OmFwcGVuZChjb25zdCBVQ2hh
ciogY2hhcmFjdGVycywgc2l6ZV90IGxlbmd0aCkKICAgICB9CiAgICAgY29uc3QgaW50IG1heEZv
bGRlZENoYXJhY3RlcnMgPSAxNjsgLy8gc2Vuc2libGUgbWF4aW11bSBpcyAzLCB0aGlzIHNob3Vs
ZCBiZSBtb3JlIHRoYW4gZW5vdWdoCiAgICAgVUNoYXIgZm9sZGVkQ2hhcmFjdGVyc1ttYXhGb2xk
ZWRDaGFyYWN0ZXJzXTsKLSAgICBib29sIGVycm9yOwotICAgIGludCBudW1Gb2xkZWRDaGFyYWN0
ZXJzID0gZm9sZENhc2UoZm9sZGVkQ2hhcmFjdGVycywgbWF4Rm9sZGVkQ2hhcmFjdGVycywgY2hh
cmFjdGVycywgMSwgJmVycm9yKTsKLSAgICBBU1NFUlQoIWVycm9yKTsKKyAgICBVRXJyb3JDb2Rl
IHN0YXR1cyA9IFVfWkVST19FUlJPUjsKKyAgICBpbnQgbnVtRm9sZGVkQ2hhcmFjdGVycyA9IHVf
c3RyRm9sZENhc2UoZm9sZGVkQ2hhcmFjdGVycywgbWF4Rm9sZGVkQ2hhcmFjdGVycywgY2hhcmFj
dGVycywgMSwgVV9GT0xEX0NBU0VfREVGQVVMVCwgJnN0YXR1cyk7CisgICAgQVNTRVJUKFVfU1VD
Q0VTUyhzdGF0dXMpKTsKICAgICBBU1NFUlQobnVtRm9sZGVkQ2hhcmFjdGVycyk7CiAgICAgQVNT
RVJUKG51bUZvbGRlZENoYXJhY3RlcnMgPD0gbWF4Rm9sZGVkQ2hhcmFjdGVycyk7CiAgICAgaWYg
KCFlcnJvciAmJiBudW1Gb2xkZWRDaGFyYWN0ZXJzKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEVsZW1l
bnQuY3BwCmluZGV4IDEwYjM4NmQxYWY5NzlkNGZkZDRhNzI3ZmQ4MjdkNmEzNDY1ZTFlM2MuLjA4
YzVhNDQ3NWUyNTRiZDJmNmJmNmU0MDdkMzA2YzFhOTQ0ZjFmZWYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTEVsZW1lbnQuY3BwCkBAIC04NTUsMTAgKzg1NSwxMCBAQCBUZXh0RGlyZWN0aW9uIEhUTUxF
bGVtZW50OjpkaXJlY3Rpb25hbGl0eShOb2RlKiogc3Ryb25nRGlyZWN0aW9uYWxpdHlUZXh0Tm9k
ZSkgYwogICAgIGlmIChpc0hUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50KHRoaXMpKSB7CiAgICAg
ICAgIEhUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50KiB0ZXh0RWxlbWVudCA9IHRvSFRNTFRleHRG
b3JtQ29udHJvbEVsZW1lbnQoY29uc3RfY2FzdDxIVE1MRWxlbWVudCo+KHRoaXMpKTsKICAgICAg
ICAgYm9vbCBoYXNTdHJvbmdEaXJlY3Rpb25hbGl0eTsKLSAgICAgICAgVW5pY29kZTo6RGlyZWN0
aW9uIHRleHREaXJlY3Rpb24gPSB0ZXh0RWxlbWVudC0+dmFsdWUoKS5kZWZhdWx0V3JpdGluZ0Rp
cmVjdGlvbigmaGFzU3Ryb25nRGlyZWN0aW9uYWxpdHkpOworICAgICAgICBVQ2hhckRpcmVjdGlv
biB0ZXh0RGlyZWN0aW9uID0gdGV4dEVsZW1lbnQtPnZhbHVlKCkuZGVmYXVsdFdyaXRpbmdEaXJl
Y3Rpb24oJmhhc1N0cm9uZ0RpcmVjdGlvbmFsaXR5KTsKICAgICAgICAgaWYgKHN0cm9uZ0RpcmVj
dGlvbmFsaXR5VGV4dE5vZGUpCiAgICAgICAgICAgICAqc3Ryb25nRGlyZWN0aW9uYWxpdHlUZXh0
Tm9kZSA9IGhhc1N0cm9uZ0RpcmVjdGlvbmFsaXR5ID8gdGV4dEVsZW1lbnQgOiAwOwotICAgICAg
ICByZXR1cm4gKHRleHREaXJlY3Rpb24gPT0gVW5pY29kZTo6TGVmdFRvUmlnaHQpID8gTFRSIDog
UlRMOworICAgICAgICByZXR1cm4gKHRleHREaXJlY3Rpb24gPT0gVV9MRUZUX1RPX1JJR0hUKSA/
IExUUiA6IFJUTDsKICAgICB9CiAKICAgICBOb2RlKiBub2RlID0gZmlyc3RDaGlsZCgpOwpAQCAt
ODgxLDExICs4ODEsMTEgQEAgVGV4dERpcmVjdGlvbiBIVE1MRWxlbWVudDo6ZGlyZWN0aW9uYWxp
dHkoTm9kZSoqIHN0cm9uZ0RpcmVjdGlvbmFsaXR5VGV4dE5vZGUpIGMKIAogICAgICAgICBpZiAo
bm9kZS0+aXNUZXh0Tm9kZSgpKSB7CiAgICAgICAgICAgICBib29sIGhhc1N0cm9uZ0RpcmVjdGlv
bmFsaXR5OwotICAgICAgICAgICAgV1RGOjpVbmljb2RlOjpEaXJlY3Rpb24gdGV4dERpcmVjdGlv
biA9IG5vZGUtPnRleHRDb250ZW50KHRydWUpLmRlZmF1bHRXcml0aW5nRGlyZWN0aW9uKCZoYXNT
dHJvbmdEaXJlY3Rpb25hbGl0eSk7CisgICAgICAgICAgICBVQ2hhckRpcmVjdGlvbiB0ZXh0RGly
ZWN0aW9uID0gbm9kZS0+dGV4dENvbnRlbnQodHJ1ZSkuZGVmYXVsdFdyaXRpbmdEaXJlY3Rpb24o
Jmhhc1N0cm9uZ0RpcmVjdGlvbmFsaXR5KTsKICAgICAgICAgICAgIGlmIChoYXNTdHJvbmdEaXJl
Y3Rpb25hbGl0eSkgewogICAgICAgICAgICAgICAgIGlmIChzdHJvbmdEaXJlY3Rpb25hbGl0eVRl
eHROb2RlKQogICAgICAgICAgICAgICAgICAgICAqc3Ryb25nRGlyZWN0aW9uYWxpdHlUZXh0Tm9k
ZSA9IG5vZGU7Ci0gICAgICAgICAgICAgICAgcmV0dXJuICh0ZXh0RGlyZWN0aW9uID09IFdURjo6
VW5pY29kZTo6TGVmdFRvUmlnaHQpID8gTFRSIDogUlRMOworICAgICAgICAgICAgICAgIHJldHVy
biAodGV4dERpcmVjdGlvbiA9PSBVX0xFRlRfVE9fUklHSFQpID8gTFRSIDogUlRMOwogICAgICAg
ICAgICAgfQogICAgICAgICB9CiAgICAgICAgIG5vZGUgPSBOb2RlVHJhdmVyc2FsOjpuZXh0KG5v
ZGUsIHRoaXMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MU2VsZWN0RWxl
bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxTZWxlY3RFbGVtZW50LmNwcAppbmRl
eCBkMWQ3YzI2MDc3YWNhN2U4YTU3ODk2YWIxZDFhMzhjNWEzNjRmMzBlLi4wNTI1NzQ5MjE1MWNl
YzdjNDkyY2RkNWU3OWMyMDUxMjhjOGU3MDg3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxTZWxlY3RFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxT
ZWxlY3RFbGVtZW50LmNwcApAQCAtMTQ4Nyw3ICsxNDg3LDcgQEAgdm9pZCBIVE1MU2VsZWN0RWxl
bWVudDo6ZGVmYXVsdEV2ZW50SGFuZGxlcihFdmVudCogZXZlbnQpCiAKICAgICBpZiAoZXZlbnQt
PnR5cGUoKSA9PSBldmVudE5hbWVzKCkua2V5cHJlc3NFdmVudCAmJiBldmVudC0+aXNLZXlib2Fy
ZEV2ZW50KCkpIHsKICAgICAgICAgS2V5Ym9hcmRFdmVudCoga2V5Ym9hcmRFdmVudCA9IHN0YXRp
Y19jYXN0PEtleWJvYXJkRXZlbnQqPihldmVudCk7Ci0gICAgICAgIGlmICgha2V5Ym9hcmRFdmVu
dC0+Y3RybEtleSgpICYmICFrZXlib2FyZEV2ZW50LT5hbHRLZXkoKSAmJiAha2V5Ym9hcmRFdmVu
dC0+bWV0YUtleSgpICYmIGlzUHJpbnRhYmxlQ2hhcihrZXlib2FyZEV2ZW50LT5jaGFyQ29kZSgp
KSkgeworICAgICAgICBpZiAoIWtleWJvYXJkRXZlbnQtPmN0cmxLZXkoKSAmJiAha2V5Ym9hcmRF
dmVudC0+YWx0S2V5KCkgJiYgIWtleWJvYXJkRXZlbnQtPm1ldGFLZXkoKSAmJiB1X2lzcHJpbnQo
a2V5Ym9hcmRFdmVudC0+Y2hhckNvZGUoKSkpIHsKICAgICAgICAgICAgIHR5cGVBaGVhZEZpbmQo
a2V5Ym9hcmRFdmVudCk7CiAgICAgICAgICAgICBldmVudC0+c2V0RGVmYXVsdEhhbmRsZWQoKTsK
ICAgICAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvVHlw
ZUFoZWFkLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvVHlwZUFoZWFkLmNwcAppbmRleCA2MWNj
MWViNjg5NzU3YTVjZjRiNDgxY2Q3ZmQxYmNiYzg1MWEzYzhhLi5kMjZmNTdkODQ5YTZiYWUwNTk2
ODZiNWQyOTQ5NDgwMGJlNWE3Mzg4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL1R5
cGVBaGVhZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9UeXBlQWhlYWQuY3BwCkBAIC01
MCw3ICs1MCw3IEBAIHN0YXRpYyBTdHJpbmcgc3RyaXBMZWFkaW5nV2hpdGVTcGFjZShjb25zdCBT
dHJpbmcmIHN0cmluZykKIAogICAgIHVuc2lnbmVkIGk7CiAgICAgZm9yIChpID0gMDsgaSA8IGxl
bmd0aDsgKytpKSB7Ci0gICAgICAgIGlmIChzdHJpbmdbaV0gIT0gbm9CcmVha1NwYWNlICYmIChz
dHJpbmdbaV0gPD0gMHg3RiA/ICFpc0FTQ0lJU3BhY2Uoc3RyaW5nW2ldKSA6IChkaXJlY3Rpb24o
c3RyaW5nW2ldKSAhPSBXaGl0ZVNwYWNlTmV1dHJhbCkpKQorICAgICAgICBpZiAoc3RyaW5nW2ld
ICE9IG5vQnJlYWtTcGFjZSAmJiAoc3RyaW5nW2ldIDw9IDB4N0YgPyAhaXNBU0NJSVNwYWNlKHN0
cmluZ1tpXSkgOiAodV9jaGFyRGlyZWN0aW9uKHN0cmluZ1tpXSkgIT0gVV9XSElURV9TUEFDRV9O
RVVUUkFMKSkpCiAgICAgICAgICAgICBicmVhazsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRyYWNrQ3VlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvdHJhY2svVGV4dFRyYWNrQ3VlLmNwcAppbmRleCBjNTM5MjY4NmJhODdlZjFkOTg1ZjRhNzMw
ZjVlMWMxMmY0OGExYzA2Li4xNGM0NzY4MGI1MTk4Y2E5MWE1NGNjMWIxYzc4NDhlMzMzZjQxNDk5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFja0N1ZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UZXh0VHJhY2tDdWUuY3BwCkBAIC02MTUs
NyArNjE1LDcgQEAgc3RhdGljIGJvb2wgaXNDdWVQYXJhZ3JhcGhTZXBhcmF0b3IoVUNoYXIgY2hh
cmFjdGVyKQogewogICAgIC8vIFdpdGhpbiBhIGN1ZSwgcGFyYWdyYXBoIGJvdW5kYXJpZXMgYXJl
IG9ubHkgZGVub3RlZCBieSBUeXBlIEIgY2hhcmFjdGVycywKICAgICAvLyBzdWNoIGFzIFUrMDAw
QSBMSU5FIEZFRUQgKExGKSwgVSswMDg1IE5FWFQgTElORSAoTkVMKSwgYW5kIFUrMjAyOSBQQVJB
R1JBUEggU0VQQVJBVE9SLgotICAgIHJldHVybiBXVEY6OlVuaWNvZGU6OmNhdGVnb3J5KGNoYXJh
Y3RlcikgJiBXVEY6OlVuaWNvZGU6OlNlcGFyYXRvcl9QYXJhZ3JhcGg7CisgICAgcmV0dXJuIHVf
Y2hhclR5cGUoY2hhcmFjdGVyKSA9PSBVX1BBUkFHUkFQSF9TRVBBUkFUT1I7CiB9CiAKIHZvaWQg
VGV4dFRyYWNrQ3VlOjpkZXRlcm1pbmVUZXh0RGlyZWN0aW9uKCkKQEAgLTY0OCwxMyArNjQ4LDEy
IEBAIHZvaWQgVGV4dFRyYWNrQ3VlOjpkZXRlcm1pbmVUZXh0RGlyZWN0aW9uKCkKICAgICAgICAg
ICAgIHJldHVybjsKIAogICAgICAgICBpZiAoVUNoYXIgY3VycmVudCA9IHBhcmFncmFwaFtpXSkg
ewotICAgICAgICAgICAgV1RGOjpVbmljb2RlOjpEaXJlY3Rpb24gY2hhckRpcmVjdGlvbiA9IFdU
Rjo6VW5pY29kZTo6ZGlyZWN0aW9uKGN1cnJlbnQpOwotICAgICAgICAgICAgaWYgKGNoYXJEaXJl
Y3Rpb24gPT0gV1RGOjpVbmljb2RlOjpMZWZ0VG9SaWdodCkgeworICAgICAgICAgICAgVUNoYXJE
aXJlY3Rpb24gY2hhckRpcmVjdGlvbiA9IHVfY2hhckRpcmVjdGlvbihjdXJyZW50KTsKKyAgICAg
ICAgICAgIGlmIChjaGFyRGlyZWN0aW9uID09IFVfTEVGVF9UT19SSUdIVCkgewogICAgICAgICAg
ICAgICAgIG1fZGlzcGxheURpcmVjdGlvbiA9IENTU1ZhbHVlTHRyOwogICAgICAgICAgICAgICAg
IHJldHVybjsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGlmIChjaGFyRGlyZWN0aW9uID09
IFdURjo6VW5pY29kZTo6UmlnaHRUb0xlZnQKLSAgICAgICAgICAgICAgICB8fCBjaGFyRGlyZWN0
aW9uID09IFdURjo6VW5pY29kZTo6UmlnaHRUb0xlZnRBcmFiaWMpIHsKKyAgICAgICAgICAgIGlm
IChjaGFyRGlyZWN0aW9uID09IFVfUklHSFRfVE9fTEVGVCB8fCBjaGFyRGlyZWN0aW9uID09IFVf
UklHSFRfVE9fTEVGVF9BUkFCSUMpIHsKICAgICAgICAgICAgICAgICBtX2Rpc3BsYXlEaXJlY3Rp
b24gPSBDU1NWYWx1ZVJ0bDsKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0NvbnRleHRNZW51Q29udHJvbGxlci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0NvbnRleHRNZW51Q29udHJvbGxlci5jcHAKaW5kZXgg
ZjdkN2U2ODFiMzEwMmI0OGVlNTZkMmZlODlmMzk2YTliN2ExNjIzMC4uY2U1NGE5M2Q0M2I1NmVi
YThmZDI4YjdiY2JjYzY2ODUyMWNmYWFjYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFn
ZS9Db250ZXh0TWVudUNvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ29u
dGV4dE1lbnVDb250cm9sbGVyLmNwcApAQCAtNzE4LDkgKzcxOCwxMCBAQCBzdGF0aWMgYm9vbCBz
ZWxlY3Rpb25Db250YWluc1Bvc3NpYmxlV29yZChGcmFtZSogZnJhbWUpCiAgICAgLy8gQ3VycmVu
dCBhbGdvcml0aG06IGxvb2sgZm9yIGEgY2hhcmFjdGVyIHRoYXQncyBub3QganVzdCBhIHNlcGFy
YXRvci4KICAgICBmb3IgKFRleHRJdGVyYXRvciBpdChmcmFtZS0+c2VsZWN0aW9uKCkudG9Ob3Jt
YWxpemVkUmFuZ2UoKS5nZXQoKSk7ICFpdC5hdEVuZCgpOyBpdC5hZHZhbmNlKCkpIHsKICAgICAg
ICAgaW50IGxlbmd0aCA9IGl0Lmxlbmd0aCgpOwotICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8
IGxlbmd0aDsgKytpKQotICAgICAgICAgICAgaWYgKCEoY2F0ZWdvcnkoaXQuY2hhcmFjdGVyQXQo
aSkpICYgKFNlcGFyYXRvcl9TcGFjZSB8IFNlcGFyYXRvcl9MaW5lIHwgU2VwYXJhdG9yX1BhcmFn
cmFwaCkpKQorICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IGxlbmd0aDsgKytpKSB7CisgICAg
ICAgICAgICBpZiAoIShVX0dFVF9HQ19NQVNLKGl0LmNoYXJhY3RlckF0KGkpKSAmIFVfR0NfWl9N
QVNLKSkKICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQogICAgIH0KICAg
ICByZXR1cm4gZmFsc2U7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9Gb250LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnQu
Y3BwCmluZGV4IGY4MjZkNTVkMzI4ZWZlNjYzMGQ5MWRlMGRjMjUwNGUxYmRhYTZkNDcuLmE4YTQx
MTE2MjBhNGQ5MDczZTIwNDA1Y2ZlYjNlYzliMzM0MDM4MjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0ZvbnQuY3BwCkBAIC05MTQsOCArOTE0LDcgQEAgdW5zaWduZWQgRm9u
dDo6ZXhwYW5zaW9uT3Bwb3J0dW5pdHlDb3VudChjb25zdCBVQ2hhciogY2hhcmFjdGVycywgc2l6
ZV90IGxlbmd0aCwKIAogYm9vbCBGb250OjpjYW5SZWNlaXZlVGV4dEVtcGhhc2lzKFVDaGFyMzIg
YykKIHsKLSAgICBDaGFyQ2F0ZWdvcnkgY2F0ZWdvcnkgPSBVbmljb2RlOjpjYXRlZ29yeShjKTsK
LSAgICBpZiAoY2F0ZWdvcnkgJiAoU2VwYXJhdG9yX1NwYWNlIHwgU2VwYXJhdG9yX0xpbmUgfCBT
ZXBhcmF0b3JfUGFyYWdyYXBoIHwgT3RoZXJfTm90QXNzaWduZWQgfCBPdGhlcl9Db250cm9sIHwg
T3RoZXJfRm9ybWF0KSkKKyAgICBpZiAoVV9HRVRfR0NfTUFTSyhjKSAmIChVX0dDX1pfTUFTSyB8
IFVfR0NfQ05fTUFTSyB8IFVfR0NfQ0NfTUFTSyB8IFVfR0NfQ0ZfTUFTSykpCiAgICAgICAgIHJl
dHVybiBmYWxzZTsKIAogICAgIC8vIEFkZGl0aW9uYWwgd29yZC1zZXBhcmF0b3IgY2hhcmFjdGVy
cyBsaXN0ZWQgaW4gQ1NTIFRleHQgTGV2ZWwgMyBFZGl0b3IncyBEcmFmdCAzIE5vdmVtYmVyIDIw
MTAuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250R2x5
cGhzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRHbHlwaHMuY3Bw
CmluZGV4IDg2MTJkYTE5NzY1NzNlZDM2MjBiNmEwM2Q0ZmQ4MmNjNDA5MjljMGYuLjNkYjJmNjAw
M2Y2NDZiZWMwNGI1OTQ0NGZlZDJmODI0Nzk4ZDlhMTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRHbHlwaHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRHbHlwaHMuY3BwCkBAIC0yNjUsNyArMjY1LDcgQEAgc3Rk
OjpwYWlyPEdseXBoRGF0YSwgR2x5cGhQYWdlKj4gRm9udEdseXBoczo6Z2x5cGhEYXRhQW5kUGFn
ZUZvckNoYXJhY3Rlcihjb25zdAogCiAgICAgaWYgKHZhcmlhbnQgPT0gQXV0b1ZhcmlhbnQpIHsK
ICAgICAgICAgaWYgKGRlc2NyaXB0aW9uLnNtYWxsQ2FwcygpICYmICFwcmltYXJ5U2ltcGxlRm9u
dERhdGEoZGVzY3JpcHRpb24pLT5pc1NWR0ZvbnQoKSkgewotICAgICAgICAgICAgVUNoYXIzMiB1
cHBlckMgPSBXVEY6OlVuaWNvZGU6OnRvVXBwZXIoYyk7CisgICAgICAgICAgICBVQ2hhcjMyIHVw
cGVyQyA9IHVfdG91cHBlcihjKTsKICAgICAgICAgICAgIGlmICh1cHBlckMgIT0gYykgewogICAg
ICAgICAgICAgICAgIGMgPSB1cHBlckM7CiAgICAgICAgICAgICAgICAgdmFyaWFudCA9IFNtYWxs
Q2Fwc1ZhcmlhbnQ7CkBAIC0yNzYsNyArMjc2LDcgQEAgc3RkOjpwYWlyPEdseXBoRGF0YSwgR2x5
cGhQYWdlKj4gRm9udEdseXBoczo6Z2x5cGhEYXRhQW5kUGFnZUZvckNoYXJhY3Rlcihjb25zdAog
ICAgIH0KIAogICAgIGlmIChtaXJyb3IpCi0gICAgICAgIGMgPSBXVEY6OlVuaWNvZGU6Om1pcnJv
cmVkQ2hhcihjKTsKKyAgICAgICAgYyA9IHVfY2hhck1pcnJvcihjKTsKIAogICAgIHVuc2lnbmVk
IHBhZ2VOdW1iZXIgPSAoYyAvIEdseXBoUGFnZTo6c2l6ZSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuY3BwCmluZGV4IGFmYjVk
OWI1ZDgwMjYyM2I0NDI0YTM4YTc2OWNhYjFjMjViNWVhZmYuLmY1YzlkN2VlODUzNWJkMzljOTEy
MjgzYzZhOTVhOGRhYjJmYzgyOWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmNwcApAQCAtNjQsNyArNjQsNyBAQCBwdWJsaWM6
CiAgICAgdm9pZCBpbmNyZW1lbnQoKSB7IG1fb2Zmc2V0Kys7IH0KICAgICBib29sIGF0RW5kKCkg
Y29uc3QgeyByZXR1cm4gIW1fdGV4dFJ1biB8fCBtX29mZnNldCA+PSBtX3RleHRSdW4tPmxlbmd0
aCgpOyB9CiAgICAgVUNoYXIgY3VycmVudCgpIGNvbnN0IHsgcmV0dXJuICgqbV90ZXh0UnVuKVtt
X29mZnNldF07IH0KLSAgICBXVEY6OlVuaWNvZGU6OkRpcmVjdGlvbiBkaXJlY3Rpb24oKSBjb25z
dCB7IHJldHVybiBhdEVuZCgpID8gV1RGOjpVbmljb2RlOjpPdGhlck5ldXRyYWwgOiBXVEY6OlVu
aWNvZGU6OmRpcmVjdGlvbihjdXJyZW50KCkpOyB9CisgICAgVUNoYXJEaXJlY3Rpb24gZGlyZWN0
aW9uKCkgY29uc3QgeyByZXR1cm4gYXRFbmQoKSA/IFVfT1RIRVJfTkVVVFJBTCA6IHVfY2hhckRp
cmVjdGlvbihjdXJyZW50KCkpOyB9CiAKICAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgVGV4dFJ1
bkl0ZXJhdG9yJiBvdGhlcikKICAgICB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9TVkdHbHlwaC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9TVkdHbHlwaC5jcHAKaW5kZXggZTI4MjBlNDk2ZWZlMTZmNWFjMDAzZWJiNjc2ZTUwZGJh
Nzc2YTg4Yy4uYWQzYmUxZWZjZmJiZGViYzQ0ZDFmODA0ODMzMzFiMjA3YmIzZjg2MyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvU1ZHR2x5cGguY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1NWR0dseXBoLmNwcApAQCAtMjUsOCAr
MjUsNiBAQAogCiAjaW5jbHVkZSA8d3RmL3VuaWNvZGUvVW5pY29kZS5oPgogCi11c2luZyBuYW1l
c3BhY2UgV1RGOjpVbmljb2RlOwotCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIC8vIEhlbHBlciBm
dW5jdGlvbnMgdG8gZGV0ZXJtaW5lIHRoZSBhcmFiaWMgY2hhcmFjdGVyIGZvcm1zIChpbml0aWFs
LCBtZWRpYWwsIHRlcm1pbmFsLCBpc29sYXRlZCkKQEAgLTg3LDcgKzg1LDcgQEAgVmVjdG9yPFNW
R0dseXBoOjpBcmFiaWNGb3JtPiBjaGFyYWN0ZXJzV2l0aEFyYWJpY0Zvcm0oY29uc3QgU3RyaW5n
JiBpbnB1dCwgYm9vbAogCiAgICAgYm9vbCBjb250YWluc0FyYWJpYyA9IGZhbHNlOwogICAgIGZv
ciAodW5zaWduZWQgaSA9IDA7IGkgPCBsZW5ndGg7ICsraSkgewotICAgICAgICBpZiAoaXNBcmFi
aWNDaGFyKGlucHV0W2ldKSkgeworICAgICAgICBpZiAodWJsb2NrX2dldENvZGUoaW5wdXRbaV0p
ID09IFVCTE9DS19BUkFCSUMpIHsKICAgICAgICAgICAgIGNvbnRhaW5zQXJhYmljID0gdHJ1ZTsK
ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9TdXJyb2dhdGVQYWlyQXdhcmVUZXh0SXRlcmF0b3IuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvU3Vycm9nYXRlUGFpckF3YXJlVGV4dEl0
ZXJhdG9yLmNwcAppbmRleCBlN2ViNDNiNTYxMjE3NTU3NWQ1MzM2Y2JiYjZkZGIyZDIwMDFmNGRk
Li5lZDZhMzMzNzZhNWE4NTIzYmI3MTg4YmI0Zjk4ODA0ZThhZTQwYWFiIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9TdXJyb2dhdGVQYWlyQXdhcmVUZXh0SXRl
cmF0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1N1cnJvZ2F0
ZVBhaXJBd2FyZVRleHRJdGVyYXRvci5jcHAKQEAgLTgyLDE1ICs4MiwxMyBAQCBVQ2hhcjMyIFN1
cnJvZ2F0ZVBhaXJBd2FyZVRleHRJdGVyYXRvcjo6bm9ybWFsaXplVm9pY2luZ01hcmtzKCkKICAg
ICBpZiAobV9jdXJyZW50Q2hhcmFjdGVyICsgMSA+PSBtX2VuZENoYXJhY3RlcikKICAgICAgICAg
cmV0dXJuIDA7CiAKLSAgICBpZiAoY29tYmluaW5nQ2xhc3MobV9jaGFyYWN0ZXJzWzFdKSA9PSBo
aXJhZ2FuYUthdGFrYW5hVm9pY2luZ01hcmtzQ29tYmluaW5nQ2xhc3MpIHsKLSNpZiBVU0UoSUNV
X1VOSUNPREUpCisgICAgaWYgKHVfZ2V0Q29tYmluaW5nQ2xhc3MobV9jaGFyYWN0ZXJzWzFdKSA9
PSBoaXJhZ2FuYUthdGFrYW5hVm9pY2luZ01hcmtzQ29tYmluaW5nQ2xhc3MpIHsKICAgICAgICAg
Ly8gTm9ybWFsaXplIGludG8gY29tcG9zZWQgZm9ybSB1c2luZyAzLjIgcnVsZXMuCiAgICAgICAg
IFVDaGFyIG5vcm1hbGl6ZWRDaGFyYWN0ZXJzWzJdID0geyAwLCAwIH07CiAgICAgICAgIFVFcnJv
ckNvZGUgdVN0YXR1cyA9IFVfWkVST19FUlJPUjsgIAogICAgICAgICBpbnQzMl90IHJlc3VsdExl
bmd0aCA9IHVub3JtX25vcm1hbGl6ZShtX2NoYXJhY3RlcnMsIDIsIFVOT1JNX05GQywgVU5PUk1f
VU5JQ09ERV8zXzIsICZub3JtYWxpemVkQ2hhcmFjdGVyc1swXSwgMiwgJnVTdGF0dXMpOwogICAg
ICAgICBpZiAocmVzdWx0TGVuZ3RoID09IDEgJiYgIXVTdGF0dXMpCiAgICAgICAgICAgICByZXR1
cm4gbm9ybWFsaXplZENoYXJhY3RlcnNbMF07Ci0jZW5kaWYKICAgICB9CiAKICAgICByZXR1cm4g
MDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1dpZHRoSXRl
cmF0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvV2lkdGhJdGVyYXRv
ci5jcHAKaW5kZXggZThiNjIwZjhhZGM4ZWQzM2ZhMTQ2NTI2Nzc4NTk4YWQ4MjE5ZWU4Ni4uYjhm
MjU5YzRhNWU0MzlhZjEzOWMxZjdlYWY4MjU2MzEwNzU4NjZkNyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvV2lkdGhJdGVyYXRvci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvV2lkdGhJdGVyYXRvci5jcHAKQEAgLTIxMCwxMCAr
MjEwLDEwIEBAIGlubGluZSB1bnNpZ25lZCBXaWR0aEl0ZXJhdG9yOjphZHZhbmNlSW50ZXJuYWwo
VGV4dEl0ZXJhdG9yJiB0ZXh0SXRlcmF0b3IsIEdseXBoCiAgICAgICAgICAgICBpZiAobV9mYWxs
YmFja0ZvbnRzICYmIGZvbnREYXRhICE9IHByaW1hcnlGb250KSB7CiAgICAgICAgICAgICAgICAg
Ly8gRklYTUU6IFRoaXMgZG9lcyBhIGxpdHRsZSBleHRyYSB3b3JrIHRoYXQgY291bGQgYmUgYXZv
aWRlZCBpZgogICAgICAgICAgICAgICAgIC8vIGdseXBoRGF0YUZvckNoYXJhY3RlcigpIHJldHVy
bmVkIHdoZXRoZXIgaXQgY2hvc2UgdG8gdXNlIGEgc21hbGwgY2FwcyBmb250LgotICAgICAgICAg
ICAgICAgIGlmICghbV9mb250LT5pc1NtYWxsQ2FwcygpIHx8IGNoYXJhY3RlciA9PSB0b1VwcGVy
KGNoYXJhY3RlcikpCisgICAgICAgICAgICAgICAgaWYgKCFtX2ZvbnQtPmlzU21hbGxDYXBzKCkg
fHwgY2hhcmFjdGVyID09IHVfdG91cHBlcihjaGFyYWN0ZXIpKQogICAgICAgICAgICAgICAgICAg
ICBtX2ZhbGxiYWNrRm9udHMtPmFkZChmb250RGF0YSk7CiAgICAgICAgICAgICAgICAgZWxzZSB7
Ci0gICAgICAgICAgICAgICAgICAgIGNvbnN0IEdseXBoRGF0YSYgdXBwZXJjYXNlR2x5cGhEYXRh
ID0gbV9mb250LT5nbHlwaERhdGFGb3JDaGFyYWN0ZXIodG9VcHBlcihjaGFyYWN0ZXIpLCBydGwp
OworICAgICAgICAgICAgICAgICAgICBjb25zdCBHbHlwaERhdGEmIHVwcGVyY2FzZUdseXBoRGF0
YSA9IG1fZm9udC0+Z2x5cGhEYXRhRm9yQ2hhcmFjdGVyKHVfdG91cHBlcihjaGFyYWN0ZXIpLCBy
dGwpOwogICAgICAgICAgICAgICAgICAgICBpZiAodXBwZXJjYXNlR2x5cGhEYXRhLmZvbnREYXRh
ICE9IHByaW1hcnlGb250KQogICAgICAgICAgICAgICAgICAgICAgICAgbV9mYWxsYmFja0ZvbnRz
LT5hZGQodXBwZXJjYXNlR2x5cGhEYXRhLmZvbnREYXRhKTsKICAgICAgICAgICAgICAgICB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvQ29tcGxleFRl
eHRDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9D
b21wbGV4VGV4dENvbnRyb2xsZXIuY3BwCmluZGV4IDI4YTM1NTMwNTllMmRlMDY3NTEwMmY2OTU2
OThlMDJkODA2MDNkMGYuLjA3ZGNiZGEzZDUwNDJkZjM5ZTQwNzUyMjY3MmYwODI3ZmY4ZWE1NTMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9Db21wbGV4
VGV4dENvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L21hYy9Db21wbGV4VGV4dENvbnRyb2xsZXIuY3BwCkBAIC0zMjcsNiArMzI3LDcgQEAgdm9pZCBD
b21wbGV4VGV4dENvbnRyb2xsZXI6OmNvbGxlY3RDb21wbGV4VGV4dFJ1bnMoKQogCiAgICAgYm9v
bCBpc1NtYWxsQ2FwczsKICAgICBib29sIG5leHRJc1NtYWxsQ2FwcyA9IG1fZm9udC5pc1NtYWxs
Q2FwcygpICYmICEoVV9HRVRfR0NfTUFTSyhiYXNlQ2hhcmFjdGVyKSAmIFVfR0NfTV9NQVNLKSAm
JiAodXBwZXJjYXNlQ2hhcmFjdGVyID0gdV90b3VwcGVyKGJhc2VDaGFyYWN0ZXIpKSAhPSBiYXNl
Q2hhcmFjdGVyOworICAgIEFTU0VSVCh1cHBlcmNhc2VDaGFyYWN0ZXIgPT0gMCB8fCB1X3RvdXBw
ZXIoYmFzZUNoYXJhY3RlcikgPD0gMHhGRkZGKTsKIAogICAgIGlmIChuZXh0SXNTbWFsbENhcHMp
IHsKICAgICAgICAgbV9zbWFsbENhcHNCdWZmZXJbc2VxdWVuY2VTdGFydCAtIGNwXSA9IHVwcGVy
Y2FzZUNoYXJhY3RlcjsKQEAgLTM0OSw3ICszNTAsOSBAQCB2b2lkIENvbXBsZXhUZXh0Q29udHJv
bGxlcjo6Y29sbGVjdENvbXBsZXhUZXh0UnVucygpCiAgICAgICAgICAgICByZXR1cm47CiAKICAg
ICAgICAgaWYgKG1fZm9udC5pc1NtYWxsQ2FwcygpKSB7Ci0gICAgICAgICAgICBuZXh0SXNTbWFs
bENhcHMgPSAodXBwZXJjYXNlQ2hhcmFjdGVyID0gdV90b3VwcGVyKGJhc2VDaGFyYWN0ZXIpKSAh
PSBiYXNlQ2hhcmFjdGVyOworICAgICAgICAgICAgQVNTRVJUKHVfdG91cHBlcihiYXNlQ2hhcmFj
dGVyKSA8PSAweEZGRkYpOworICAgICAgICAgICAgdXBwZXJjYXNlQ2hhcmFjdGVyID0gdV90b3Vw
cGVyKGJhc2VDaGFyYWN0ZXIpOworICAgICAgICAgICAgbmV4dElzU21hbGxDYXBzID0gdXBwZXJj
YXNlQ2hhcmFjdGVyICE9IGJhc2VDaGFyYWN0ZXI7CiAgICAgICAgICAgICBpZiAobmV4dElzU21h
bGxDYXBzKSB7CiAgICAgICAgICAgICAgICAgbV9zbWFsbENhcHNCdWZmZXJbaW5kZXhdID0gdXBw
ZXJjYXNlQ2hhcmFjdGVyOwogICAgICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkg
PCBtYXJrQ291bnQ7ICsraSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3dpbi9VbmlzY3JpYmVDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3dpbi9VbmlzY3JpYmVDb250cm9sbGVyLmNwcAppbmRleCBhYWNmYjE2OTU3
MmJmYTVhMTlkNWE3Zjg3MGRiZDc1YzA1YzkxNTg1Li4yNDIwNjllZTI1MDlmYzcyY2RiZjQ4ZjA0
NTgwNjk3MDEyNjMwMTJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy93aW4vVW5pc2NyaWJlQ29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3Mvd2luL1VuaXNjcmliZUNvbnRyb2xsZXIuY3BwCkBAIC0xMzMsNyArMTMz
LDcgQEAgdm9pZCBVbmlzY3JpYmVDb250cm9sbGVyOjphZHZhbmNlKHVuc2lnbmVkIG9mZnNldCwg
R2x5cGhCdWZmZXIqIGdseXBoQnVmZmVyKQogICAgIFVDaGFyIG5ld0MgPSAwOwogCiAgICAgYm9v
bCBpc1NtYWxsQ2FwczsKLSAgICBib29sIG5leHRJc1NtYWxsQ2FwcyA9IG1fZm9udC5pc1NtYWxs
Q2FwcygpICYmICEoY2F0ZWdvcnkoKmN1cnIpICYgKE1hcmtfTm9uU3BhY2luZyB8IE1hcmtfRW5j
bG9zaW5nIHwgTWFya19TcGFjaW5nQ29tYmluaW5nKSkgJiYgKG5ld0MgPSB0b1VwcGVyKCpjdXJy
KSkgIT0gKmN1cnI7CisgICAgYm9vbCBuZXh0SXNTbWFsbENhcHMgPSBtX2ZvbnQuaXNTbWFsbENh
cHMoKSAmJiAhKFVfR0VUX0dDX01BU0soKmN1cnIpICYgVV9HQ19NX01BU0spICYmIChuZXdDID0g
dV90b3VwcGVyKCpjdXJyKSkgIT0gKmN1cnI7CiAKICAgICBpZiAobmV4dElzU21hbGxDYXBzKQog
ICAgICAgICBzbWFsbENhcHNCdWZmZXJbY3VyciAtIGNwXSA9IG5ld0M7CkBAIC0xNDgsMTAgKzE0
OCwxMCBAQCB2b2lkIFVuaXNjcmliZUNvbnRyb2xsZXI6OmFkdmFuY2UodW5zaWduZWQgb2Zmc2V0
LCBHbHlwaEJ1ZmZlciogZ2x5cGhCdWZmZXIpCiAgICAgICAgIGludCBpbmRleCA9IGN1cnIgLSBj
cDsKICAgICAgICAgVUNoYXIgYyA9ICpjdXJyOwogCi0gICAgICAgIGJvb2wgZm9yY2VTbWFsbENh
cHMgPSBpc1NtYWxsQ2FwcyAmJiAoY2F0ZWdvcnkoYykgJiAoTWFya19Ob25TcGFjaW5nIHwgTWFy
a19FbmNsb3NpbmcgfCBNYXJrX1NwYWNpbmdDb21iaW5pbmcpKTsKKyAgICAgICAgYm9vbCBmb3Jj
ZVNtYWxsQ2FwcyA9IGlzU21hbGxDYXBzICYmIChVX0dFVF9HQ19NQVNLKGMpICYgVV9HQ19NX01B
U0spOwogICAgICAgICBuZXh0Rm9udERhdGEgPSBtX2ZvbnQuZ2x5cGhEYXRhRm9yQ2hhcmFjdGVy
KCpjdXJyLCBmYWxzZSwgZm9yY2VTbWFsbENhcHMgPyBTbWFsbENhcHNWYXJpYW50IDogQXV0b1Zh
cmlhbnQpLmZvbnREYXRhOwogICAgICAgICBpZiAobV9mb250LmlzU21hbGxDYXBzKCkpIHsKLSAg
ICAgICAgICAgIG5leHRJc1NtYWxsQ2FwcyA9IGZvcmNlU21hbGxDYXBzIHx8IChuZXdDID0gdG9V
cHBlcihjKSkgIT0gYzsKKyAgICAgICAgICAgIG5leHRJc1NtYWxsQ2FwcyA9IGZvcmNlU21hbGxD
YXBzIHx8IChuZXdDID0gdV90b3VwcGVyKGMpKSAhPSBjOwogICAgICAgICAgICAgaWYgKG5leHRJ
c1NtYWxsQ2FwcykKICAgICAgICAgICAgICAgICBzbWFsbENhcHNCdWZmZXJbaW5kZXhdID0gZm9y
Y2VTbWFsbENhcHMgPyBjIDogbmV3QzsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vdGV4dC9CaWRpQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS90ZXh0L0JpZGlDb250ZXh0LmNwcAppbmRleCA2YzA4YjA4ZjIwYmNjYTE2NGJlZWZmMzkw
NmU3OWFhZGE2MzcyZWM5Li5kYjEyNmM5OTFmNGNhMGFkMDlhZGU1NzJkNWQ3ODBiODE2ZGYyZWM2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L0JpZGlDb250ZXh0LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L0JpZGlDb250ZXh0LmNwcApAQCAt
MjUsOCArMjUsNiBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXVzaW5nIG5hbWVzcGFjZSBX
VEY6OlVuaWNvZGU7Ci0KIHN0cnVjdCBTYW1lU2l6ZUFzQmlkaUNvbnRleHQgOiBwdWJsaWMgUmVm
Q291bnRlZDxTYW1lU2l6ZUFzQmlkaUNvbnRleHQ+IHsKICAgICB1aW50MzJfdCBiaXRmaWVsZHMg
OiAxNjsKICAgICB2b2lkKiBwYXJlbnQ7CkBAIC0zNCwxNCArMzIsMTQgQEAgc3RydWN0IFNhbWVT
aXplQXNCaWRpQ29udGV4dCA6IHB1YmxpYyBSZWZDb3VudGVkPFNhbWVTaXplQXNCaWRpQ29udGV4
dD4gewogCiBDT01QSUxFX0FTU0VSVChzaXplb2YoQmlkaUNvbnRleHQpID09IHNpemVvZihTYW1l
U2l6ZUFzQmlkaUNvbnRleHQpLCBCaWRpQ29udGV4dF9zaG91bGRfc3RheV9zbWFsbCk7CiAKLWlu
bGluZSBQYXNzUmVmUHRyPEJpZGlDb250ZXh0PiBCaWRpQ29udGV4dDo6Y3JlYXRlVW5jYWNoZWQo
dW5zaWduZWQgY2hhciBsZXZlbCwgRGlyZWN0aW9uIGRpcmVjdGlvbiwgYm9vbCBvdmVycmlkZSwg
QmlkaUVtYmVkZGluZ1NvdXJjZSBzb3VyY2UsIEJpZGlDb250ZXh0KiBwYXJlbnQpCitpbmxpbmUg
UGFzc1JlZlB0cjxCaWRpQ29udGV4dD4gQmlkaUNvbnRleHQ6OmNyZWF0ZVVuY2FjaGVkKHVuc2ln
bmVkIGNoYXIgbGV2ZWwsIFVDaGFyRGlyZWN0aW9uIGRpcmVjdGlvbiwgYm9vbCBvdmVycmlkZSwg
QmlkaUVtYmVkZGluZ1NvdXJjZSBzb3VyY2UsIEJpZGlDb250ZXh0KiBwYXJlbnQpCiB7CiAgICAg
cmV0dXJuIGFkb3B0UmVmKG5ldyBCaWRpQ29udGV4dChsZXZlbCwgZGlyZWN0aW9uLCBvdmVycmlk
ZSwgc291cmNlLCBwYXJlbnQpKTsKIH0KIAotUGFzc1JlZlB0cjxCaWRpQ29udGV4dD4gQmlkaUNv
bnRleHQ6OmNyZWF0ZSh1bnNpZ25lZCBjaGFyIGxldmVsLCBEaXJlY3Rpb24gZGlyZWN0aW9uLCBi
b29sIG92ZXJyaWRlLCBCaWRpRW1iZWRkaW5nU291cmNlIHNvdXJjZSwgQmlkaUNvbnRleHQqIHBh
cmVudCkKK1Bhc3NSZWZQdHI8QmlkaUNvbnRleHQ+IEJpZGlDb250ZXh0OjpjcmVhdGUodW5zaWdu
ZWQgY2hhciBsZXZlbCwgVUNoYXJEaXJlY3Rpb24gZGlyZWN0aW9uLCBib29sIG92ZXJyaWRlLCBC
aWRpRW1iZWRkaW5nU291cmNlIHNvdXJjZSwgQmlkaUNvbnRleHQqIHBhcmVudCkKIHsKLSAgICBB
U1NFUlQoZGlyZWN0aW9uID09IChsZXZlbCAlIDIgPyBSaWdodFRvTGVmdCA6IExlZnRUb1JpZ2h0
KSk7CisgICAgQVNTRVJUKGRpcmVjdGlvbiA9PSAobGV2ZWwgJSAyID8gVV9SSUdIVF9UT19MRUZU
IDogVV9MRUZUX1RPX1JJR0hUKSk7CiAKICAgICBpZiAocGFyZW50KQogICAgICAgICByZXR1cm4g
Y3JlYXRlVW5jYWNoZWQobGV2ZWwsIGRpcmVjdGlvbiwgb3ZlcnJpZGUsIHNvdXJjZSwgcGFyZW50
KTsKQEAgLTQ5LDIwICs0NywyMCBAQCBQYXNzUmVmUHRyPEJpZGlDb250ZXh0PiBCaWRpQ29udGV4
dDo6Y3JlYXRlKHVuc2lnbmVkIGNoYXIgbGV2ZWwsIERpcmVjdGlvbiBkaXJlYwogICAgIEFTU0VS
VChsZXZlbCA8PSAxKTsKICAgICBpZiAoIWxldmVsKSB7CiAgICAgICAgIGlmICghb3ZlcnJpZGUp
IHsKLSAgICAgICAgICAgIHN0YXRpYyBCaWRpQ29udGV4dCogbHRyQ29udGV4dCA9IGNyZWF0ZVVu
Y2FjaGVkKDAsIExlZnRUb1JpZ2h0LCBmYWxzZSwgRnJvbVN0eWxlT3JET00sIDApLmxlYWtSZWYo
KTsKKyAgICAgICAgICAgIHN0YXRpYyBCaWRpQ29udGV4dCogbHRyQ29udGV4dCA9IGNyZWF0ZVVu
Y2FjaGVkKDAsIFVfTEVGVF9UT19SSUdIVCwgZmFsc2UsIEZyb21TdHlsZU9yRE9NLCAwKS5sZWFr
UmVmKCk7CiAgICAgICAgICAgICByZXR1cm4gbHRyQ29udGV4dDsKICAgICAgICAgfQogCi0gICAg
ICAgIHN0YXRpYyBCaWRpQ29udGV4dCogbHRyT3ZlcnJpZGVDb250ZXh0ID0gY3JlYXRlVW5jYWNo
ZWQoMCwgTGVmdFRvUmlnaHQsIHRydWUsIEZyb21TdHlsZU9yRE9NLCAwKS5sZWFrUmVmKCk7Cisg
ICAgICAgIHN0YXRpYyBCaWRpQ29udGV4dCogbHRyT3ZlcnJpZGVDb250ZXh0ID0gY3JlYXRlVW5j
YWNoZWQoMCwgVV9MRUZUX1RPX1JJR0hULCB0cnVlLCBGcm9tU3R5bGVPckRPTSwgMCkubGVha1Jl
ZigpOwogICAgICAgICByZXR1cm4gbHRyT3ZlcnJpZGVDb250ZXh0OwogICAgIH0KIAogICAgIGlm
ICghb3ZlcnJpZGUpIHsKLSAgICAgICAgc3RhdGljIEJpZGlDb250ZXh0KiBydGxDb250ZXh0ID0g
Y3JlYXRlVW5jYWNoZWQoMSwgUmlnaHRUb0xlZnQsIGZhbHNlLCBGcm9tU3R5bGVPckRPTSwgMCku
bGVha1JlZigpOworICAgICAgICBzdGF0aWMgQmlkaUNvbnRleHQqIHJ0bENvbnRleHQgPSBjcmVh
dGVVbmNhY2hlZCgxLCBVX1JJR0hUX1RPX0xFRlQsIGZhbHNlLCBGcm9tU3R5bGVPckRPTSwgMCku
bGVha1JlZigpOwogICAgICAgICByZXR1cm4gcnRsQ29udGV4dDsKICAgICB9CiAKLSAgICBzdGF0
aWMgQmlkaUNvbnRleHQqIHJ0bE92ZXJyaWRlQ29udGV4dCA9IGNyZWF0ZVVuY2FjaGVkKDEsIFJp
Z2h0VG9MZWZ0LCB0cnVlLCBGcm9tU3R5bGVPckRPTSwgMCkubGVha1JlZigpOworICAgIHN0YXRp
YyBCaWRpQ29udGV4dCogcnRsT3ZlcnJpZGVDb250ZXh0ID0gY3JlYXRlVW5jYWNoZWQoMSwgVV9S
SUdIVF9UT19MRUZULCB0cnVlLCBGcm9tU3R5bGVPckRPTSwgMCkubGVha1JlZigpOwogICAgIHJl
dHVybiBydGxPdmVycmlkZUNvbnRleHQ7CiB9CiAKQEAgLTcwLDcgKzY4LDcgQEAgc3RhdGljIGlu
bGluZSBQYXNzUmVmUHRyPEJpZGlDb250ZXh0PiBjb3B5Q29udGV4dEFuZFJlYmFzZWxpbmVMZXZl
bChCaWRpQ29udGV4dCoKIHsKICAgICBBU1NFUlQoY29udGV4dCk7CiAgICAgdW5zaWduZWQgY2hh
ciBuZXdMZXZlbCA9IHBhcmVudCA/IHBhcmVudC0+bGV2ZWwoKSA6IDA7Ci0gICAgaWYgKGNvbnRl
eHQtPmRpcigpID09IFJpZ2h0VG9MZWZ0KQorICAgIGlmIChjb250ZXh0LT5kaXIoKSA9PSBVX1JJ
R0hUX1RPX0xFRlQpCiAgICAgICAgIG5ld0xldmVsID0gbmV4dEdyZWF0ZXJPZGRMZXZlbChuZXdM
ZXZlbCk7CiAgICAgZWxzZSBpZiAocGFyZW50KQogICAgICAgICBuZXdMZXZlbCA9IG5leHRHcmVh
dGVyRXZlbkxldmVsKG5ld0xldmVsKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL3RleHQvQmlkaUNvbnRleHQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvQmlk
aUNvbnRleHQuaAppbmRleCAxZDQ4ZDM2NmZhNzkzZGY2YWIzM2Q5ZDFhYzY5MDVkZTZhNDA3ZWRh
Li4zNzE5ODMwNTVjZjZiYWEyMGM2OGE0M2Q2MjU5MjgwYTQ4ZmYzZTI3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L0JpZGlDb250ZXh0LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vdGV4dC9CaWRpQ29udGV4dC5oCkBAIC0zOCwxNyArMzgsMTcgQEAgZW51
bSBCaWRpRW1iZWRkaW5nU291cmNlIHsKIC8vIFVzZWQgdG8ga2VlcCB0cmFjayBvZiBleHBsaWNp
dCBlbWJlZGRpbmdzLgogY2xhc3MgQmlkaUNvbnRleHQgOiBwdWJsaWMgUmVmQ291bnRlZDxCaWRp
Q29udGV4dD4gewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPEJpZGlDb250ZXh0PiBj
cmVhdGUodW5zaWduZWQgY2hhciBsZXZlbCwgV1RGOjpVbmljb2RlOjpEaXJlY3Rpb24sIGJvb2wg
b3ZlcnJpZGUgPSBmYWxzZSwgQmlkaUVtYmVkZGluZ1NvdXJjZSA9IEZyb21TdHlsZU9yRE9NLCBC
aWRpQ29udGV4dCogcGFyZW50ID0gMCk7CisgICAgc3RhdGljIFBhc3NSZWZQdHI8QmlkaUNvbnRl
eHQ+IGNyZWF0ZSh1bnNpZ25lZCBjaGFyIGxldmVsLCBVQ2hhckRpcmVjdGlvbiwgYm9vbCBvdmVy
cmlkZSA9IGZhbHNlLCBCaWRpRW1iZWRkaW5nU291cmNlID0gRnJvbVN0eWxlT3JET00sIEJpZGlD
b250ZXh0KiBwYXJlbnQgPSAwKTsKIAogICAgIEJpZGlDb250ZXh0KiBwYXJlbnQoKSBjb25zdCB7
IHJldHVybiBtX3BhcmVudC5nZXQoKTsgfQogICAgIHVuc2lnbmVkIGNoYXIgbGV2ZWwoKSBjb25z
dCB7IHJldHVybiBtX2xldmVsOyB9Ci0gICAgV1RGOjpVbmljb2RlOjpEaXJlY3Rpb24gZGlyKCkg
Y29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8V1RGOjpVbmljb2RlOjpEaXJlY3Rpb24+KG1fZGly
ZWN0aW9uKTsgfQorICAgIFVDaGFyRGlyZWN0aW9uIGRpcigpIGNvbnN0IHsgcmV0dXJuIHN0YXRp
Y19jYXN0PFVDaGFyRGlyZWN0aW9uPihtX2RpcmVjdGlvbik7IH0KICAgICBib29sIG92ZXJyaWRl
KCkgY29uc3QgeyByZXR1cm4gbV9vdmVycmlkZTsgfQogICAgIEJpZGlFbWJlZGRpbmdTb3VyY2Ug
c291cmNlKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8QmlkaUVtYmVkZGluZ1NvdXJjZT4o
bV9zb3VyY2UpOyB9CiAKICAgICBQYXNzUmVmUHRyPEJpZGlDb250ZXh0PiBjb3B5U3RhY2tSZW1v
dmluZ1VuaWNvZGVFbWJlZGRpbmdDb250ZXh0cygpOwogcHJpdmF0ZToKLSAgICBCaWRpQ29udGV4
dCh1bnNpZ25lZCBjaGFyIGxldmVsLCBXVEY6OlVuaWNvZGU6OkRpcmVjdGlvbiBkaXJlY3Rpb24s
IGJvb2wgb3ZlcnJpZGUsIEJpZGlFbWJlZGRpbmdTb3VyY2Ugc291cmNlLCBCaWRpQ29udGV4dCog
cGFyZW50KQorICAgIEJpZGlDb250ZXh0KHVuc2lnbmVkIGNoYXIgbGV2ZWwsIFVDaGFyRGlyZWN0
aW9uIGRpcmVjdGlvbiwgYm9vbCBvdmVycmlkZSwgQmlkaUVtYmVkZGluZ1NvdXJjZSBzb3VyY2Us
IEJpZGlDb250ZXh0KiBwYXJlbnQpCiAgICAgICAgIDogbV9sZXZlbChsZXZlbCkKICAgICAgICAg
LCBtX2RpcmVjdGlvbihkaXJlY3Rpb24pCiAgICAgICAgICwgbV9vdmVycmlkZShvdmVycmlkZSkK
QEAgLTU3LDcgKzU3LDcgQEAgcHJpdmF0ZToKICAgICB7CiAgICAgfQogCi0gICAgc3RhdGljIFBh
c3NSZWZQdHI8QmlkaUNvbnRleHQ+IGNyZWF0ZVVuY2FjaGVkKHVuc2lnbmVkIGNoYXIgbGV2ZWws
IFdURjo6VW5pY29kZTo6RGlyZWN0aW9uLCBib29sIG92ZXJyaWRlLCBCaWRpRW1iZWRkaW5nU291
cmNlLCBCaWRpQ29udGV4dCogcGFyZW50KTsKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxCaWRpQ29u
dGV4dD4gY3JlYXRlVW5jYWNoZWQodW5zaWduZWQgY2hhciBsZXZlbCwgVUNoYXJEaXJlY3Rpb24s
IGJvb2wgb3ZlcnJpZGUsIEJpZGlFbWJlZGRpbmdTb3VyY2UsIEJpZGlDb250ZXh0KiBwYXJlbnQp
OwogCiAgICAgdW5zaWduZWQgbV9sZXZlbCA6IDY7IC8vIFRoZSBtYXhpbWl1bSBiaWRpIGxldmVs
IGlzIDYyOiBodHRwOi8vdW5pY29kZS5vcmcvcmVwb3J0cy90cjkvI0V4cGxpY2l0X0xldmVsc19h
bmRfRGlyZWN0aW9ucwogICAgIHVuc2lnbmVkIG1fZGlyZWN0aW9uIDogNTsgLy8gRGlyZWN0aW9u
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L0JpZGlSZXNvbHZlci5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9CaWRpUmVzb2x2ZXIuaAppbmRleCBlMDY0
OWZjYjQzZjRmMjkwMzA1NTFmYWY3NTlmMzVlYTkxYjZlYTI0Li5iNzQ0N2JlZWQ2OWYzZjlmZjYz
ODE0ZDgwMzU1MzQxYmVjNDA0OGIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS90ZXh0L0JpZGlSZXNvbHZlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQv
QmlkaVJlc29sdmVyLmgKQEAgLTU3LDIyICs1NywyMiBAQCB0ZW1wbGF0ZSA8Y2xhc3MgSXRlcmF0
b3I+IHN0cnVjdCBNaWRwb2ludFN0YXRlIHsKIC8vIGJlIGNhY2hlZCBhbmQgdGhlbiB1c2VkIHRv
IHJlc3RhcnQgYmlkaSByZXNvbHV0aW9uIGF0IHRoYXQgcG9zaXRpb24uCiBzdHJ1Y3QgQmlkaVN0
YXR1cyB7CiAgICAgQmlkaVN0YXR1cygpCi0gICAgICAgIDogZW9yKFdURjo6VW5pY29kZTo6T3Ro
ZXJOZXV0cmFsKQotICAgICAgICAsIGxhc3RTdHJvbmcoV1RGOjpVbmljb2RlOjpPdGhlck5ldXRy
YWwpCi0gICAgICAgICwgbGFzdChXVEY6OlVuaWNvZGU6Ok90aGVyTmV1dHJhbCkKKyAgICAgICAg
OiBlb3IoVV9PVEhFUl9ORVVUUkFMKQorICAgICAgICAsIGxhc3RTdHJvbmcoVV9PVEhFUl9ORVVU
UkFMKQorICAgICAgICAsIGxhc3QoVV9PVEhFUl9ORVVUUkFMKQogICAgIHsKICAgICB9CiAKICAg
ICAvLyBDcmVhdGVzIGEgQmlkaVN0YXR1cyByZXByZXNlbnRpbmcgYSBuZXcgcGFyYWdyYXBoIHJv
b3Qgd2l0aCBhIGRlZmF1bHQgZGlyZWN0aW9uLgotICAgIC8vIFVzZXMgVGV4dERpcmVjdGlvbiBh
cyBpdCBvbmx5IGhhcyB0d28gcG9zc2liaWxpdGllcyBpbnN0ZWFkIG9mIFdURjo6VW5pY29kZTo6
RGlyZWN0aW9uIHdoaWNoIGhhcyAxOS4KKyAgICAvLyBVc2VzIFRleHREaXJlY3Rpb24gYXMgaXQg
b25seSBoYXMgdHdvIHBvc3NpYmlsaXRpZXMgaW5zdGVhZCBvZiBVQ2hhckRpcmVjdGlvbiB3aGlj
aCBoYXMgYXQgbGVhc3QgMTkuCiAgICAgQmlkaVN0YXR1cyhUZXh0RGlyZWN0aW9uIHRleHREaXJl
Y3Rpb24sIGJvb2wgaXNPdmVycmlkZSkKICAgICB7Ci0gICAgICAgIFdURjo6VW5pY29kZTo6RGly
ZWN0aW9uIGRpcmVjdGlvbiA9IHRleHREaXJlY3Rpb24gPT0gTFRSID8gV1RGOjpVbmljb2RlOjpM
ZWZ0VG9SaWdodCA6IFdURjo6VW5pY29kZTo6UmlnaHRUb0xlZnQ7CisgICAgICAgIFVDaGFyRGly
ZWN0aW9uIGRpcmVjdGlvbiA9IHRleHREaXJlY3Rpb24gPT0gTFRSID8gVV9MRUZUX1RPX1JJR0hU
IDogVV9SSUdIVF9UT19MRUZUOwogICAgICAgICBlb3IgPSBsYXN0U3Ryb25nID0gbGFzdCA9IGRp
cmVjdGlvbjsKICAgICAgICAgY29udGV4dCA9IEJpZGlDb250ZXh0OjpjcmVhdGUodGV4dERpcmVj
dGlvbiA9PSBMVFIgPyAwIDogMSwgZGlyZWN0aW9uLCBpc092ZXJyaWRlKTsKICAgICB9CiAKLSAg
ICBCaWRpU3RhdHVzKFdURjo6VW5pY29kZTo6RGlyZWN0aW9uIGVvckRpciwgV1RGOjpVbmljb2Rl
OjpEaXJlY3Rpb24gbGFzdFN0cm9uZ0RpciwgV1RGOjpVbmljb2RlOjpEaXJlY3Rpb24gbGFzdERp
ciwgUGFzc1JlZlB0cjxCaWRpQ29udGV4dD4gYmlkaUNvbnRleHQpCisgICAgQmlkaVN0YXR1cyhV
Q2hhckRpcmVjdGlvbiBlb3JEaXIsIFVDaGFyRGlyZWN0aW9uIGxhc3RTdHJvbmdEaXIsIFVDaGFy
RGlyZWN0aW9uIGxhc3REaXIsIFBhc3NSZWZQdHI8QmlkaUNvbnRleHQ+IGJpZGlDb250ZXh0KQog
ICAgICAgICA6IGVvcihlb3JEaXIpCiAgICAgICAgICwgbGFzdFN0cm9uZyhsYXN0U3Ryb25nRGly
KQogICAgICAgICAsIGxhc3QobGFzdERpcikKQEAgLTgwLDI0ICs4MCwyNCBAQCBzdHJ1Y3QgQmlk
aVN0YXR1cyB7CiAgICAgewogICAgIH0KIAotICAgIFdURjo6VW5pY29kZTo6RGlyZWN0aW9uIGVv
cjsKLSAgICBXVEY6OlVuaWNvZGU6OkRpcmVjdGlvbiBsYXN0U3Ryb25nOwotICAgIFdURjo6VW5p
Y29kZTo6RGlyZWN0aW9uIGxhc3Q7CisgICAgVUNoYXJEaXJlY3Rpb24gZW9yOworICAgIFVDaGFy
RGlyZWN0aW9uIGxhc3RTdHJvbmc7CisgICAgVUNoYXJEaXJlY3Rpb24gbGFzdDsKICAgICBSZWZQ
dHI8QmlkaUNvbnRleHQ+IGNvbnRleHQ7CiB9OwogCiBjbGFzcyBCaWRpRW1iZWRkaW5nIHsKIHB1
YmxpYzoKLSAgICBCaWRpRW1iZWRkaW5nKFdURjo6VW5pY29kZTo6RGlyZWN0aW9uIGRpcmVjdGlv
biwgQmlkaUVtYmVkZGluZ1NvdXJjZSBzb3VyY2UpCisgICAgQmlkaUVtYmVkZGluZyhVQ2hhckRp
cmVjdGlvbiBkaXJlY3Rpb24sIEJpZGlFbWJlZGRpbmdTb3VyY2Ugc291cmNlKQogICAgIDogbV9k
aXJlY3Rpb24oZGlyZWN0aW9uKQogICAgICwgbV9zb3VyY2Uoc291cmNlKQogICAgIHsKICAgICB9
CiAKLSAgICBXVEY6OlVuaWNvZGU6OkRpcmVjdGlvbiBkaXJlY3Rpb24oKSBjb25zdCB7IHJldHVy
biBtX2RpcmVjdGlvbjsgfQorICAgIFVDaGFyRGlyZWN0aW9uIGRpcmVjdGlvbigpIGNvbnN0IHsg
cmV0dXJuIG1fZGlyZWN0aW9uOyB9CiAgICAgQmlkaUVtYmVkZGluZ1NvdXJjZSBzb3VyY2UoKSBj
b25zdCB7IHJldHVybiBtX3NvdXJjZTsgfQogcHJpdmF0ZToKLSAgICBXVEY6OlVuaWNvZGU6OkRp
cmVjdGlvbiBtX2RpcmVjdGlvbjsKKyAgICBVQ2hhckRpcmVjdGlvbiBtX2RpcmVjdGlvbjsKICAg
ICBCaWRpRW1iZWRkaW5nU291cmNlIG1fc291cmNlOwogfTsKIApAQCAtMTEyLDI1ICsxMTIsMjUg
QEAgaW5saW5lIGJvb2wgb3BlcmF0b3IhPShjb25zdCBCaWRpU3RhdHVzJiBzdGF0dXMxLCBjb25z
dCBCaWRpU3RhdHVzJiBzdGF0dXMyKQogfQogCiBzdHJ1Y3QgQmlkaUNoYXJhY3RlclJ1biB7Ci0g
ICAgQmlkaUNoYXJhY3RlclJ1bihpbnQgc3RhcnQsIGludCBzdG9wLCBCaWRpQ29udGV4dCogY29u
dGV4dCwgV1RGOjpVbmljb2RlOjpEaXJlY3Rpb24gZGlyKQorICAgIEJpZGlDaGFyYWN0ZXJSdW4o
aW50IHN0YXJ0LCBpbnQgc3RvcCwgQmlkaUNvbnRleHQqIGNvbnRleHQsIFVDaGFyRGlyZWN0aW9u
IGRpcmVjdGlvbikKICAgICAgICAgOiBtX292ZXJyaWRlKGNvbnRleHQtPm92ZXJyaWRlKCkpCiAg
ICAgICAgICwgbV9uZXh0KDApCiAgICAgICAgICwgbV9zdGFydChzdGFydCkKICAgICAgICAgLCBt
X3N0b3Aoc3RvcCkKICAgICB7Ci0gICAgICAgIGlmIChkaXIgPT0gV1RGOjpVbmljb2RlOjpPdGhl
ck5ldXRyYWwpCi0gICAgICAgICAgICBkaXIgPSBjb250ZXh0LT5kaXIoKTsKKyAgICAgICAgaWYg
KGRpcmVjdGlvbiA9PSBVX09USEVSX05FVVRSQUwpCisgICAgICAgICAgICBkaXJlY3Rpb24gPSBj
b250ZXh0LT5kaXIoKTsKIAogICAgICAgICBtX2xldmVsID0gY29udGV4dC0+bGV2ZWwoKTsKIAog
ICAgICAgICAvLyBhZGQgbGV2ZWwgb2YgcnVuIChjYXNlcyBJMSAmIEkyKQogICAgICAgICBpZiAo
bV9sZXZlbCAlIDIpIHsKLSAgICAgICAgICAgIGlmIChkaXIgPT0gV1RGOjpVbmljb2RlOjpMZWZ0
VG9SaWdodCB8fCBkaXIgPT0gV1RGOjpVbmljb2RlOjpBcmFiaWNOdW1iZXIgfHwgZGlyID09IFdU
Rjo6VW5pY29kZTo6RXVyb3BlYW5OdW1iZXIpCisgICAgICAgICAgICBpZiAoZGlyZWN0aW9uID09
IFVfTEVGVF9UT19SSUdIVCB8fCBkaXJlY3Rpb24gPT0gVV9BUkFCSUNfTlVNQkVSIHx8IGRpcmVj
dGlvbiA9PSBVX0VVUk9QRUFOX05VTUJFUikKICAgICAgICAgICAgICAgICBtX2xldmVsKys7CiAg
ICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBpZiAoZGlyID09IFdURjo6VW5pY29kZTo6Umln
aHRUb0xlZnQpCisgICAgICAgICAgICBpZiAoZGlyZWN0aW9uID09IFVfUklHSFRfVE9fTEVGVCkK
ICAgICAgICAgICAgICAgICBtX2xldmVsKys7Ci0gICAgICAgICAgICBlbHNlIGlmIChkaXIgPT0g
V1RGOjpVbmljb2RlOjpBcmFiaWNOdW1iZXIgfHwgZGlyID09IFdURjo6VW5pY29kZTo6RXVyb3Bl
YW5OdW1iZXIpCisgICAgICAgICAgICBlbHNlIGlmIChkaXJlY3Rpb24gPT0gVV9BUkFCSUNfTlVN
QkVSIHx8IGRpcmVjdGlvbiA9PSBVX0VVUk9QRUFOX05VTUJFUikKICAgICAgICAgICAgICAgICBt
X2xldmVsICs9IDI7CiAgICAgICAgIH0KICAgICB9CkBAIC0xNzAsNyArMTcwLDcgQEAgdGVtcGxh
dGUgPGNsYXNzIEl0ZXJhdG9yLCBjbGFzcyBSdW4+IGNsYXNzIEJpZGlSZXNvbHZlciB7CiAgICAg
V1RGX01BS0VfTk9OQ09QWUFCTEUoQmlkaVJlc29sdmVyKTsKIHB1YmxpYzoKICAgICBCaWRpUmVz
b2x2ZXIoKQotICAgICAgICA6IG1fZGlyZWN0aW9uKFdURjo6VW5pY29kZTo6T3RoZXJOZXV0cmFs
KQorICAgICAgICA6IG1fZGlyZWN0aW9uKFVfT1RIRVJfTkVVVFJBTCkKICAgICAgICAgLCBtX3Jl
YWNoZWRFbmRPZkxpbmUoZmFsc2UpCiAgICAgICAgICwgbV9lbXB0eVJ1bih0cnVlKQogICAgICAg
ICAsIG1fbmVzdGVkSXNvbGF0ZUNvdW50KDApCkBAIC0xOTQsMTIgKzE5NCwxMiBAQCBwdWJsaWM6
CiAgICAgQmlkaUNvbnRleHQqIGNvbnRleHQoKSBjb25zdCB7IHJldHVybiBtX3N0YXR1cy5jb250
ZXh0LmdldCgpOyB9CiAgICAgdm9pZCBzZXRDb250ZXh0KFBhc3NSZWZQdHI8QmlkaUNvbnRleHQ+
IGMpIHsgbV9zdGF0dXMuY29udGV4dCA9IGM7IH0KIAotICAgIHZvaWQgc2V0TGFzdERpcihXVEY6
OlVuaWNvZGU6OkRpcmVjdGlvbiBsYXN0RGlyKSB7IG1fc3RhdHVzLmxhc3QgPSBsYXN0RGlyOyB9
Ci0gICAgdm9pZCBzZXRMYXN0U3Ryb25nRGlyKFdURjo6VW5pY29kZTo6RGlyZWN0aW9uIGxhc3RT
dHJvbmdEaXIpIHsgbV9zdGF0dXMubGFzdFN0cm9uZyA9IGxhc3RTdHJvbmdEaXI7IH0KLSAgICB2
b2lkIHNldEVvckRpcihXVEY6OlVuaWNvZGU6OkRpcmVjdGlvbiBlb3JEaXIpIHsgbV9zdGF0dXMu
ZW9yID0gZW9yRGlyOyB9CisgICAgdm9pZCBzZXRMYXN0RGlyKFVDaGFyRGlyZWN0aW9uIGxhc3RE
aXIpIHsgbV9zdGF0dXMubGFzdCA9IGxhc3REaXI7IH0KKyAgICB2b2lkIHNldExhc3RTdHJvbmdE
aXIoVUNoYXJEaXJlY3Rpb24gbGFzdFN0cm9uZ0RpcikgeyBtX3N0YXR1cy5sYXN0U3Ryb25nID0g
bGFzdFN0cm9uZ0RpcjsgfQorICAgIHZvaWQgc2V0RW9yRGlyKFVDaGFyRGlyZWN0aW9uIGVvckRp
cikgeyBtX3N0YXR1cy5lb3IgPSBlb3JEaXI7IH0KIAotICAgIFdURjo6VW5pY29kZTo6RGlyZWN0
aW9uIGRpcigpIGNvbnN0IHsgcmV0dXJuIG1fZGlyZWN0aW9uOyB9Ci0gICAgdm9pZCBzZXREaXIo
V1RGOjpVbmljb2RlOjpEaXJlY3Rpb24gZCkgeyBtX2RpcmVjdGlvbiA9IGQ7IH0KKyAgICBVQ2hh
ckRpcmVjdGlvbiBkaXIoKSBjb25zdCB7IHJldHVybiBtX2RpcmVjdGlvbjsgfQorICAgIHZvaWQg
c2V0RGlyKFVDaGFyRGlyZWN0aW9uIGQpIHsgbV9kaXJlY3Rpb24gPSBkOyB9CiAKICAgICBjb25z
dCBCaWRpU3RhdHVzJiBzdGF0dXMoKSBjb25zdCB7IHJldHVybiBtX3N0YXR1czsgfQogICAgIHZv
aWQgc2V0U3RhdHVzKGNvbnN0IEJpZGlTdGF0dXMgcykgeyBtX3N0YXR1cyA9IHM7IH0KQEAgLTIx
Myw3ICsyMTMsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBleGl0SXNvbGF0ZSgpIHsgQVNTRVJUKG1f
bmVzdGVkSXNvbGF0ZUNvdW50ID49IDEpOyBtX25lc3RlZElzb2xhdGVDb3VudC0tOyB9CiAgICAg
Ym9vbCBpbklzb2xhdGUoKSBjb25zdCB7IHJldHVybiBtX25lc3RlZElzb2xhdGVDb3VudDsgfQog
Ci0gICAgdm9pZCBlbWJlZChXVEY6OlVuaWNvZGU6OkRpcmVjdGlvbiwgQmlkaUVtYmVkZGluZ1Nv
dXJjZSk7CisgICAgdm9pZCBlbWJlZChVQ2hhckRpcmVjdGlvbiwgQmlkaUVtYmVkZGluZ1NvdXJj
ZSk7CiAgICAgYm9vbCBjb21taXRFeHBsaWNpdEVtYmVkZGluZygpOwogCiAgICAgdm9pZCBjcmVh
dGVCaWRpUnVuc0ZvckxpbmUoY29uc3QgSXRlcmF0b3ImIGVuZCwgVmlzdWFsRGlyZWN0aW9uT3Zl
cnJpZGUgPSBOb1Zpc3VhbE92ZXJyaWRlLCBib29sIGhhcmRMaW5lQnJlYWsgPSBmYWxzZSk7CkBA
IC0yMzgsMTAgKzIzOCwxMCBAQCBwcm90ZWN0ZWQ6CiAgICAgSXRlcmF0b3IgbV9lb3I7IC8vIFBv
aW50cyB0byB0aGUgbGFzdCBjaGFyYWN0ZXIgaW4gdGhlIGN1cnJlbnQgcnVuLgogICAgIEl0ZXJh
dG9yIG1fbGFzdDsKICAgICBCaWRpU3RhdHVzIG1fc3RhdHVzOwotICAgIFdURjo6VW5pY29kZTo6
RGlyZWN0aW9uIG1fZGlyZWN0aW9uOworICAgIFVDaGFyRGlyZWN0aW9uIG1fZGlyZWN0aW9uOwog
ICAgIEl0ZXJhdG9yIGVuZE9mTGluZTsKICAgICBib29sIG1fcmVhY2hlZEVuZE9mTGluZTsKLSAg
ICBJdGVyYXRvciBtX2xhc3RCZWZvcmVFVDsgLy8gQmVmb3JlIGEgRXVyb3BlYW5OdW1iZXJUZXJt
aW5hdG9yCisgICAgSXRlcmF0b3IgbV9sYXN0QmVmb3JlRVQ7IC8vIEJlZm9yZSBhIFVfRVVST1BF
QU5fTlVNQkVSX1RFUk1JTkFUT1IKICAgICBib29sIG1fZW1wdHlSdW47CiAKICAgICAvLyBGSVhN
RTogVGhpcyBzaG91bGQgbm90IGJlbG9uZyB0byB0aGUgcmVzb2x2ZXIsIGJ1dCByYXRoZXIgYmUg
cGFzc2VkCkBAIC0yNTQsMTEgKzI1NCwxMSBAQCBwcm90ZWN0ZWQ6CiAgICAgVmVjdG9yPFJ1bio+
IG1faXNvbGF0ZWRSdW5zOwogCiBwcml2YXRlOgotICAgIHZvaWQgcmFpc2VFeHBsaWNpdEVtYmVk
ZGluZ0xldmVsKFdURjo6VW5pY29kZTo6RGlyZWN0aW9uIGZyb20sIFdURjo6VW5pY29kZTo6RGly
ZWN0aW9uIHRvKTsKLSAgICB2b2lkIGxvd2VyRXhwbGljaXRFbWJlZGRpbmdMZXZlbChXVEY6OlVu
aWNvZGU6OkRpcmVjdGlvbiBmcm9tKTsKKyAgICB2b2lkIHJhaXNlRXhwbGljaXRFbWJlZGRpbmdM
ZXZlbChVQ2hhckRpcmVjdGlvbiBmcm9tLCBVQ2hhckRpcmVjdGlvbiB0byk7CisgICAgdm9pZCBs
b3dlckV4cGxpY2l0RW1iZWRkaW5nTGV2ZWwoVUNoYXJEaXJlY3Rpb24gZnJvbSk7CiAgICAgdm9p
ZCBjaGVja0RpcmVjdGlvbkluTG93ZXJSYWlzZUVtYmVkZGluZ0xldmVsKCk7CiAKLSAgICB2b2lk
IHVwZGF0ZVN0YXR1c0xhc3RGcm9tQ3VycmVudERpcmVjdGlvbihXVEY6OlVuaWNvZGU6OkRpcmVj
dGlvbik7CisgICAgdm9pZCB1cGRhdGVTdGF0dXNMYXN0RnJvbUN1cnJlbnREaXJlY3Rpb24oVUNo
YXJEaXJlY3Rpb24pOwogICAgIHZvaWQgcmVvcmRlclJ1bnNGcm9tTGV2ZWxzKCk7CiAKICAgICBW
ZWN0b3I8QmlkaUVtYmVkZGluZywgOD4gbV9jdXJyZW50RXhwbGljaXRFbWJlZGRpbmdTZXF1ZW5j
ZTsKQEAgLTI5NCw2NCArMjk0LDU5IEBAIHZvaWQgQmlkaVJlc29sdmVyPEl0ZXJhdG9yLCBSdW4+
OjphcHBlbmRSdW4oKQogICAgICAgICBtX3NvciA9IG1fZW9yOwogICAgIH0KIAotICAgIG1fZGly
ZWN0aW9uID0gV1RGOjpVbmljb2RlOjpPdGhlck5ldXRyYWw7Ci0gICAgbV9zdGF0dXMuZW9yID0g
V1RGOjpVbmljb2RlOjpPdGhlck5ldXRyYWw7CisgICAgbV9kaXJlY3Rpb24gPSBVX09USEVSX05F
VVRSQUw7CisgICAgbV9zdGF0dXMuZW9yID0gVV9PVEhFUl9ORVVUUkFMOwogfQogCiB0ZW1wbGF0
ZSA8Y2xhc3MgSXRlcmF0b3IsIGNsYXNzIFJ1bj4KLXZvaWQgQmlkaVJlc29sdmVyPEl0ZXJhdG9y
LCBSdW4+OjplbWJlZChXVEY6OlVuaWNvZGU6OkRpcmVjdGlvbiBkaXIsIEJpZGlFbWJlZGRpbmdT
b3VyY2Ugc291cmNlKQordm9pZCBCaWRpUmVzb2x2ZXI8SXRlcmF0b3IsIFJ1bj46OmVtYmVkKFVD
aGFyRGlyZWN0aW9uIGRpciwgQmlkaUVtYmVkZGluZ1NvdXJjZSBzb3VyY2UpCiB7CiAgICAgLy8g
SXNvbGF0ZWQgc3BhbnMgY29tcHV0ZSBiYXNlIGRpcmVjdGlvbmFsaXR5IGR1cmluZyB0aGVpciBv
d24gVUJBIHJ1bi4KICAgICAvLyBEbyBub3QgaW5zZXJ0IGZha2UgZW1iZWQgY2hhcmFjdGVycyBv
bmNlIHdlIGVudGVyIGFuIGlzb2xhdGVkIHNwYW4uCiAgICAgQVNTRVJUKCFpbklzb2xhdGUoKSk7
Ci0gICAgdXNpbmcgbmFtZXNwYWNlIFdURjo6VW5pY29kZTsKIAotICAgIEFTU0VSVChkaXIgPT0g
UG9wRGlyZWN0aW9uYWxGb3JtYXQgfHwgZGlyID09IExlZnRUb1JpZ2h0RW1iZWRkaW5nIHx8IGRp
ciA9PSBMZWZ0VG9SaWdodE92ZXJyaWRlIHx8IGRpciA9PSBSaWdodFRvTGVmdEVtYmVkZGluZyB8
fCBkaXIgPT0gUmlnaHRUb0xlZnRPdmVycmlkZSk7CisgICAgQVNTRVJUKGRpciA9PSBVX1BPUF9E
SVJFQ1RJT05BTF9GT1JNQVQgfHwgZGlyID09IFVfTEVGVF9UT19SSUdIVF9FTUJFRERJTkcgfHwg
ZGlyID09IFVfTEVGVF9UT19SSUdIVF9PVkVSUklERSB8fCBkaXIgPT0gVV9SSUdIVF9UT19MRUZU
X0VNQkVERElORyB8fCBkaXIgPT0gVV9SSUdIVF9UT19MRUZUX09WRVJSSURFKTsKICAgICBtX2N1
cnJlbnRFeHBsaWNpdEVtYmVkZGluZ1NlcXVlbmNlLmFwcGVuZChCaWRpRW1iZWRkaW5nKGRpciwg
c291cmNlKSk7CiB9CiAKIHRlbXBsYXRlIDxjbGFzcyBJdGVyYXRvciwgY2xhc3MgUnVuPgogdm9p
ZCBCaWRpUmVzb2x2ZXI8SXRlcmF0b3IsIFJ1bj46OmNoZWNrRGlyZWN0aW9uSW5Mb3dlclJhaXNl
RW1iZWRkaW5nTGV2ZWwoKQogewotICAgIHVzaW5nIG5hbWVzcGFjZSBXVEY6OlVuaWNvZGU7Ci0K
LSAgICBBU1NFUlQobV9zdGF0dXMuZW9yICE9IE90aGVyTmV1dHJhbCB8fCBtX2Vvci5hdEVuZCgp
KTsKLSAgICBBU1NFUlQobV9zdGF0dXMubGFzdCAhPSBOb25TcGFjaW5nTWFyawotICAgICAgICAm
JiBtX3N0YXR1cy5sYXN0ICE9IEJvdW5kYXJ5TmV1dHJhbAotICAgICAgICAmJiBtX3N0YXR1cy5s
YXN0ICE9IFJpZ2h0VG9MZWZ0RW1iZWRkaW5nCi0gICAgICAgICYmIG1fc3RhdHVzLmxhc3QgIT0g
TGVmdFRvUmlnaHRFbWJlZGRpbmcKLSAgICAgICAgJiYgbV9zdGF0dXMubGFzdCAhPSBSaWdodFRv
TGVmdE92ZXJyaWRlIAotICAgICAgICAmJiBtX3N0YXR1cy5sYXN0ICE9IExlZnRUb1JpZ2h0T3Zl
cnJpZGUgCi0gICAgICAgICYmIG1fc3RhdHVzLmxhc3QgIT0gUG9wRGlyZWN0aW9uYWxGb3JtYXQp
OwotICAgIGlmIChtX2RpcmVjdGlvbiA9PSBPdGhlck5ldXRyYWwpCi0gICAgICAgIG1fZGlyZWN0
aW9uID0gbV9zdGF0dXMubGFzdFN0cm9uZyA9PSBMZWZ0VG9SaWdodCA/IExlZnRUb1JpZ2h0IDog
UmlnaHRUb0xlZnQ7CisgICAgQVNTRVJUKG1fc3RhdHVzLmVvciAhPSBVX09USEVSX05FVVRSQUwg
fHwgbV9lb3IuYXRFbmQoKSk7CisgICAgQVNTRVJUKG1fc3RhdHVzLmxhc3QgIT0gVV9ESVJfTk9O
X1NQQUNJTkdfTUFSSworICAgICAgICAmJiBtX3N0YXR1cy5sYXN0ICE9IFVfQk9VTkRBUllfTkVV
VFJBTAorICAgICAgICAmJiBtX3N0YXR1cy5sYXN0ICE9IFVfUklHSFRfVE9fTEVGVF9FTUJFRERJ
TkcKKyAgICAgICAgJiYgbV9zdGF0dXMubGFzdCAhPSBVX0xFRlRfVE9fUklHSFRfRU1CRURESU5H
CisgICAgICAgICYmIG1fc3RhdHVzLmxhc3QgIT0gVV9SSUdIVF9UT19MRUZUX09WRVJSSURFIAor
ICAgICAgICAmJiBtX3N0YXR1cy5sYXN0ICE9IFVfTEVGVF9UT19SSUdIVF9PVkVSUklERQorICAg
ICAgICAmJiBtX3N0YXR1cy5sYXN0ICE9IFVfUE9QX0RJUkVDVElPTkFMX0ZPUk1BVCk7CisgICAg
aWYgKG1fZGlyZWN0aW9uID09IFVfT1RIRVJfTkVVVFJBTCkKKyAgICAgICAgbV9kaXJlY3Rpb24g
PSBtX3N0YXR1cy5sYXN0U3Ryb25nID09IFVfTEVGVF9UT19SSUdIVCA/IFVfTEVGVF9UT19SSUdI
VCA6IFVfUklHSFRfVE9fTEVGVDsKIH0KIAogdGVtcGxhdGUgPGNsYXNzIEl0ZXJhdG9yLCBjbGFz
cyBSdW4+Ci12b2lkIEJpZGlSZXNvbHZlcjxJdGVyYXRvciwgUnVuPjo6bG93ZXJFeHBsaWNpdEVt
YmVkZGluZ0xldmVsKFdURjo6VW5pY29kZTo6RGlyZWN0aW9uIGZyb20pCit2b2lkIEJpZGlSZXNv
bHZlcjxJdGVyYXRvciwgUnVuPjo6bG93ZXJFeHBsaWNpdEVtYmVkZGluZ0xldmVsKFVDaGFyRGly
ZWN0aW9uIGZyb20pCiB7Ci0gICAgdXNpbmcgbmFtZXNwYWNlIFdURjo6VW5pY29kZTsKLQogICAg
IGlmICghbV9lbXB0eVJ1biAmJiBtX2VvciAhPSBtX2xhc3QpIHsKICAgICAgICAgY2hlY2tEaXJl
Y3Rpb25Jbkxvd2VyUmFpc2VFbWJlZGRpbmdMZXZlbCgpOwogICAgICAgICAvLyBiaWRpLnNvciAu
Li4gYmlkaS5lb3IgLi4uIGJpZGkubGFzdCBlb3I7IG5lZWQgdG8gYXBwZW5kIHRoZSBiaWRpLnNv
ci1iaWRpLmVvciBydW4gb3IgZXh0ZW5kIGl0IHRocm91Z2ggYmlkaS5sYXN0Ci0gICAgICAgIGlm
IChmcm9tID09IExlZnRUb1JpZ2h0KSB7CisgICAgICAgIGlmIChmcm9tID09IFVfTEVGVF9UT19S
SUdIVCkgewogICAgICAgICAgICAgLy8gYmlkaS5zb3IgLi4uIGJpZGkuZW9yIC4uLiBiaWRpLmxh
c3QgTAotICAgICAgICAgICAgaWYgKG1fc3RhdHVzLmVvciA9PSBFdXJvcGVhbk51bWJlcikgewot
ICAgICAgICAgICAgICAgIGlmIChtX3N0YXR1cy5sYXN0U3Ryb25nICE9IExlZnRUb1JpZ2h0KSB7
Ci0gICAgICAgICAgICAgICAgICAgIG1fZGlyZWN0aW9uID0gRXVyb3BlYW5OdW1iZXI7CisgICAg
ICAgICAgICBpZiAobV9zdGF0dXMuZW9yID09IFVfRVVST1BFQU5fTlVNQkVSKSB7CisgICAgICAg
ICAgICAgICAgaWYgKG1fc3RhdHVzLmxhc3RTdHJvbmcgIT0gVV9MRUZUX1RPX1JJR0hUKSB7Cisg
ICAgICAgICAgICAgICAgICAgIG1fZGlyZWN0aW9uID0gVV9FVVJPUEVBTl9OVU1CRVI7CiAgICAg
ICAgICAgICAgICAgICAgIGFwcGVuZFJ1bigpOwogICAgICAgICAgICAgICAgIH0KLSAgICAgICAg
ICAgIH0gZWxzZSBpZiAobV9zdGF0dXMuZW9yID09IEFyYWJpY051bWJlcikgewotICAgICAgICAg
ICAgICAgIG1fZGlyZWN0aW9uID0gQXJhYmljTnVtYmVyOworICAgICAgICAgICAgfSBlbHNlIGlm
IChtX3N0YXR1cy5lb3IgPT0gVV9BUkFCSUNfTlVNQkVSKSB7CisgICAgICAgICAgICAgICAgbV9k
aXJlY3Rpb24gPSBVX0FSQUJJQ19OVU1CRVI7CiAgICAgICAgICAgICAgICAgYXBwZW5kUnVuKCk7
Ci0gICAgICAgICAgICB9IGVsc2UgaWYgKG1fc3RhdHVzLmxhc3RTdHJvbmcgIT0gTGVmdFRvUmln
aHQpIHsKKyAgICAgICAgICAgIH0gZWxzZSBpZiAobV9zdGF0dXMubGFzdFN0cm9uZyAhPSBVX0xF
RlRfVE9fUklHSFQpIHsKICAgICAgICAgICAgICAgICBhcHBlbmRSdW4oKTsKLSAgICAgICAgICAg
ICAgICBtX2RpcmVjdGlvbiA9IExlZnRUb1JpZ2h0OworICAgICAgICAgICAgICAgIG1fZGlyZWN0
aW9uID0gVV9MRUZUX1RPX1JJR0hUOwogICAgICAgICAgICAgfQotICAgICAgICB9IGVsc2UgaWYg
KG1fc3RhdHVzLmVvciA9PSBFdXJvcGVhbk51bWJlciB8fCBtX3N0YXR1cy5lb3IgPT0gQXJhYmlj
TnVtYmVyIHx8IG1fc3RhdHVzLmxhc3RTdHJvbmcgPT0gTGVmdFRvUmlnaHQpIHsKKyAgICAgICAg
fSBlbHNlIGlmIChtX3N0YXR1cy5lb3IgPT0gVV9FVVJPUEVBTl9OVU1CRVIgfHwgbV9zdGF0dXMu
ZW9yID09IFVfQVJBQklDX05VTUJFUiB8fCBtX3N0YXR1cy5sYXN0U3Ryb25nID09IFVfTEVGVF9U
T19SSUdIVCkgewogICAgICAgICAgICAgYXBwZW5kUnVuKCk7Ci0gICAgICAgICAgICBtX2RpcmVj
dGlvbiA9IFJpZ2h0VG9MZWZ0OworICAgICAgICAgICAgbV9kaXJlY3Rpb24gPSBVX1JJR0hUX1RP
X0xFRlQ7CiAgICAgICAgIH0KICAgICAgICAgbV9lb3IgPSBtX2xhc3Q7CiAgICAgfQpAQCAtMzY2
LDMyICszNjEsMzAgQEAgdm9pZCBCaWRpUmVzb2x2ZXI8SXRlcmF0b3IsIFJ1bj46Omxvd2VyRXhw
bGljaXRFbWJlZGRpbmdMZXZlbChXVEY6OlVuaWNvZGU6OkRpcmUKIH0KIAogdGVtcGxhdGUgPGNs
YXNzIEl0ZXJhdG9yLCBjbGFzcyBSdW4+Ci12b2lkIEJpZGlSZXNvbHZlcjxJdGVyYXRvciwgUnVu
Pjo6cmFpc2VFeHBsaWNpdEVtYmVkZGluZ0xldmVsKFdURjo6VW5pY29kZTo6RGlyZWN0aW9uIGZy
b20sIFdURjo6VW5pY29kZTo6RGlyZWN0aW9uIHRvKQordm9pZCBCaWRpUmVzb2x2ZXI8SXRlcmF0
b3IsIFJ1bj46OnJhaXNlRXhwbGljaXRFbWJlZGRpbmdMZXZlbChVQ2hhckRpcmVjdGlvbiBmcm9t
LCBVQ2hhckRpcmVjdGlvbiB0bykKIHsKLSAgICB1c2luZyBuYW1lc3BhY2UgV1RGOjpVbmljb2Rl
OwotCiAgICAgaWYgKCFtX2VtcHR5UnVuICYmIG1fZW9yICE9IG1fbGFzdCkgewogICAgICAgICBj
aGVja0RpcmVjdGlvbkluTG93ZXJSYWlzZUVtYmVkZGluZ0xldmVsKCk7CiAgICAgICAgIC8vIGJp
ZGkuc29yIC4uLiBiaWRpLmVvciAuLi4gYmlkaS5sYXN0IGVvcjsgbmVlZCB0byBhcHBlbmQgdGhl
IGJpZGkuc29yLWJpZGkuZW9yIHJ1biBvciBleHRlbmQgaXQgdGhyb3VnaCBiaWRpLmxhc3QKLSAg
ICAgICAgaWYgKHRvID09IExlZnRUb1JpZ2h0KSB7CisgICAgICAgIGlmICh0byA9PSBVX0xFRlRf
VE9fUklHSFQpIHsKICAgICAgICAgICAgIC8vIGJpZGkuc29yIC4uLiBiaWRpLmVvciAuLi4gYmlk
aS5sYXN0IEwKLSAgICAgICAgICAgIGlmIChtX3N0YXR1cy5lb3IgPT0gRXVyb3BlYW5OdW1iZXIp
IHsKLSAgICAgICAgICAgICAgICBpZiAobV9zdGF0dXMubGFzdFN0cm9uZyAhPSBMZWZ0VG9SaWdo
dCkgewotICAgICAgICAgICAgICAgICAgICBtX2RpcmVjdGlvbiA9IEV1cm9wZWFuTnVtYmVyOwor
ICAgICAgICAgICAgaWYgKG1fc3RhdHVzLmVvciA9PSBVX0VVUk9QRUFOX05VTUJFUikgeworICAg
ICAgICAgICAgICAgIGlmIChtX3N0YXR1cy5sYXN0U3Ryb25nICE9IFVfTEVGVF9UT19SSUdIVCkg
eworICAgICAgICAgICAgICAgICAgICBtX2RpcmVjdGlvbiA9IFVfRVVST1BFQU5fTlVNQkVSOwog
ICAgICAgICAgICAgICAgICAgICBhcHBlbmRSdW4oKTsKICAgICAgICAgICAgICAgICB9Ci0gICAg
ICAgICAgICB9IGVsc2UgaWYgKG1fc3RhdHVzLmVvciA9PSBBcmFiaWNOdW1iZXIpIHsKLSAgICAg
ICAgICAgICAgICBtX2RpcmVjdGlvbiA9IEFyYWJpY051bWJlcjsKKyAgICAgICAgICAgIH0gZWxz
ZSBpZiAobV9zdGF0dXMuZW9yID09IFVfQVJBQklDX05VTUJFUikgeworICAgICAgICAgICAgICAg
IG1fZGlyZWN0aW9uID0gVV9BUkFCSUNfTlVNQkVSOwogICAgICAgICAgICAgICAgIGFwcGVuZFJ1
bigpOwotICAgICAgICAgICAgfSBlbHNlIGlmIChtX3N0YXR1cy5sYXN0U3Ryb25nICE9IExlZnRU
b1JpZ2h0ICYmIGZyb20gPT0gTGVmdFRvUmlnaHQpIHsKKyAgICAgICAgICAgIH0gZWxzZSBpZiAo
bV9zdGF0dXMubGFzdFN0cm9uZyAhPSBVX0xFRlRfVE9fUklHSFQgJiYgZnJvbSA9PSBVX0xFRlRf
VE9fUklHSFQpIHsKICAgICAgICAgICAgICAgICBhcHBlbmRSdW4oKTsKLSAgICAgICAgICAgICAg
ICBtX2RpcmVjdGlvbiA9IExlZnRUb1JpZ2h0OworICAgICAgICAgICAgICAgIG1fZGlyZWN0aW9u
ID0gVV9MRUZUX1RPX1JJR0hUOwogICAgICAgICAgICAgfQotICAgICAgICB9IGVsc2UgaWYgKG1f
c3RhdHVzLmVvciA9PSBBcmFiaWNOdW1iZXIKLSAgICAgICAgICAgIHx8IChtX3N0YXR1cy5lb3Ig
PT0gRXVyb3BlYW5OdW1iZXIgJiYgKG1fc3RhdHVzLmxhc3RTdHJvbmcgIT0gTGVmdFRvUmlnaHQg
fHwgZnJvbSA9PSBSaWdodFRvTGVmdCkpCi0gICAgICAgICAgICB8fCAobV9zdGF0dXMuZW9yICE9
IEV1cm9wZWFuTnVtYmVyICYmIG1fc3RhdHVzLmxhc3RTdHJvbmcgPT0gTGVmdFRvUmlnaHQgJiYg
ZnJvbSA9PSBSaWdodFRvTGVmdCkpIHsKKyAgICAgICAgfSBlbHNlIGlmIChtX3N0YXR1cy5lb3Ig
PT0gVV9BUkFCSUNfTlVNQkVSCisgICAgICAgICAgICB8fCAobV9zdGF0dXMuZW9yID09IFVfRVVS
T1BFQU5fTlVNQkVSICYmIChtX3N0YXR1cy5sYXN0U3Ryb25nICE9IFVfTEVGVF9UT19SSUdIVCB8
fCBmcm9tID09IFVfUklHSFRfVE9fTEVGVCkpCisgICAgICAgICAgICB8fCAobV9zdGF0dXMuZW9y
ICE9IFVfRVVST1BFQU5fTlVNQkVSICYmIG1fc3RhdHVzLmxhc3RTdHJvbmcgPT0gVV9MRUZUX1RP
X1JJR0hUICYmIGZyb20gPT0gVV9SSUdIVF9UT19MRUZUKSkgewogICAgICAgICAgICAgYXBwZW5k
UnVuKCk7Ci0gICAgICAgICAgICBtX2RpcmVjdGlvbiA9IFJpZ2h0VG9MZWZ0OworICAgICAgICAg
ICAgbV9kaXJlY3Rpb24gPSBVX1JJR0hUX1RPX0xFRlQ7CiAgICAgICAgIH0KICAgICAgICAgbV9l
b3IgPSBtX2xhc3Q7CiAgICAgfQpAQCAtNDEyLDIxICs0MDUsMTkgQEAgYm9vbCBCaWRpUmVzb2x2
ZXI8SXRlcmF0b3IsIFJ1bj46OmNvbW1pdEV4cGxpY2l0RW1iZWRkaW5nKCkKICAgICAvLyBXZSBz
aG91bGQgbmV2ZXIgYWNjcnVlIGVtYmVkZGluZyBsZXZlbHMgd2hpbGUgc2tpcHBpbmcgb3ZlciBp
c29sYXRlZCBjb250ZW50LgogICAgIEFTU0VSVCghaW5Jc29sYXRlKCkgfHwgbV9jdXJyZW50RXhw
bGljaXRFbWJlZGRpbmdTZXF1ZW5jZS5pc0VtcHR5KCkpOwogCi0gICAgdXNpbmcgbmFtZXNwYWNl
IFdURjo6VW5pY29kZTsKLQogICAgIHVuc2lnbmVkIGNoYXIgZnJvbUxldmVsID0gY29udGV4dCgp
LT5sZXZlbCgpOwogICAgIFJlZlB0cjxCaWRpQ29udGV4dD4gdG9Db250ZXh0ID0gY29udGV4dCgp
OwogCiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX2N1cnJlbnRFeHBsaWNpdEVtYmVkZGlu
Z1NlcXVlbmNlLnNpemUoKTsgKytpKSB7CiAgICAgICAgIEJpZGlFbWJlZGRpbmcgZW1iZWRkaW5n
ID0gbV9jdXJyZW50RXhwbGljaXRFbWJlZGRpbmdTZXF1ZW5jZVtpXTsKLSAgICAgICAgaWYgKGVt
YmVkZGluZy5kaXJlY3Rpb24oKSA9PSBQb3BEaXJlY3Rpb25hbEZvcm1hdCkgeworICAgICAgICBp
ZiAoZW1iZWRkaW5nLmRpcmVjdGlvbigpID09IFVfUE9QX0RJUkVDVElPTkFMX0ZPUk1BVCkgewog
ICAgICAgICAgICAgaWYgKEJpZGlDb250ZXh0KiBwYXJlbnRDb250ZXh0ID0gdG9Db250ZXh0LT5w
YXJlbnQoKSkKICAgICAgICAgICAgICAgICB0b0NvbnRleHQgPSBwYXJlbnRDb250ZXh0OwogICAg
ICAgICB9IGVsc2UgewotICAgICAgICAgICAgRGlyZWN0aW9uIGRpcmVjdGlvbiA9IChlbWJlZGRp
bmcuZGlyZWN0aW9uKCkgPT0gUmlnaHRUb0xlZnRFbWJlZGRpbmcgfHwgZW1iZWRkaW5nLmRpcmVj
dGlvbigpID09IFJpZ2h0VG9MZWZ0T3ZlcnJpZGUpID8gUmlnaHRUb0xlZnQgOiBMZWZ0VG9SaWdo
dDsKLSAgICAgICAgICAgIGJvb2wgb3ZlcnJpZGUgPSBlbWJlZGRpbmcuZGlyZWN0aW9uKCkgPT0g
TGVmdFRvUmlnaHRPdmVycmlkZSB8fCBlbWJlZGRpbmcuZGlyZWN0aW9uKCkgPT0gUmlnaHRUb0xl
ZnRPdmVycmlkZTsKKyAgICAgICAgICAgIFVDaGFyRGlyZWN0aW9uIGRpcmVjdGlvbiA9IChlbWJl
ZGRpbmcuZGlyZWN0aW9uKCkgPT0gVV9SSUdIVF9UT19MRUZUX0VNQkVERElORyB8fCBlbWJlZGRp
bmcuZGlyZWN0aW9uKCkgPT0gVV9SSUdIVF9UT19MRUZUX09WRVJSSURFKSA/IFVfUklHSFRfVE9f
TEVGVCA6IFVfTEVGVF9UT19SSUdIVDsKKyAgICAgICAgICAgIGJvb2wgb3ZlcnJpZGUgPSBlbWJl
ZGRpbmcuZGlyZWN0aW9uKCkgPT0gVV9MRUZUX1RPX1JJR0hUX09WRVJSSURFIHx8IGVtYmVkZGlu
Zy5kaXJlY3Rpb24oKSA9PSBVX1JJR0hUX1RPX0xFRlRfT1ZFUlJJREU7CiAgICAgICAgICAgICB1
bnNpZ25lZCBjaGFyIGxldmVsID0gdG9Db250ZXh0LT5sZXZlbCgpOwotICAgICAgICAgICAgaWYg
KGRpcmVjdGlvbiA9PSBSaWdodFRvTGVmdCkKKyAgICAgICAgICAgIGlmIChkaXJlY3Rpb24gPT0g
VV9SSUdIVF9UT19MRUZUKQogICAgICAgICAgICAgICAgIGxldmVsID0gbmV4dEdyZWF0ZXJPZGRM
ZXZlbChsZXZlbCk7CiAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgbGV2ZWwgPSBu
ZXh0R3JlYXRlckV2ZW5MZXZlbChsZXZlbCk7CkBAIC00MzgsOSArNDI5LDkgQEAgYm9vbCBCaWRp
UmVzb2x2ZXI8SXRlcmF0b3IsIFJ1bj46OmNvbW1pdEV4cGxpY2l0RW1iZWRkaW5nKCkKICAgICB1
bnNpZ25lZCBjaGFyIHRvTGV2ZWwgPSB0b0NvbnRleHQtPmxldmVsKCk7CiAKICAgICBpZiAodG9M
ZXZlbCA+IGZyb21MZXZlbCkKLSAgICAgICAgcmFpc2VFeHBsaWNpdEVtYmVkZGluZ0xldmVsKGZy
b21MZXZlbCAlIDIgPyBSaWdodFRvTGVmdCA6IExlZnRUb1JpZ2h0LCB0b0xldmVsICUgMiA/IFJp
Z2h0VG9MZWZ0IDogTGVmdFRvUmlnaHQpOworICAgICAgICByYWlzZUV4cGxpY2l0RW1iZWRkaW5n
TGV2ZWwoZnJvbUxldmVsICUgMiA/IFVfUklHSFRfVE9fTEVGVCA6IFVfTEVGVF9UT19SSUdIVCwg
dG9MZXZlbCAlIDIgPyBVX1JJR0hUX1RPX0xFRlQgOiBVX0xFRlRfVE9fUklHSFQpOwogICAgIGVs
c2UgaWYgKHRvTGV2ZWwgPCBmcm9tTGV2ZWwpCi0gICAgICAgIGxvd2VyRXhwbGljaXRFbWJlZGRp
bmdMZXZlbChmcm9tTGV2ZWwgJSAyID8gUmlnaHRUb0xlZnQgOiBMZWZ0VG9SaWdodCk7CisgICAg
ICAgIGxvd2VyRXhwbGljaXRFbWJlZGRpbmdMZXZlbChmcm9tTGV2ZWwgJSAyID8gVV9SSUdIVF9U
T19MRUZUIDogVV9MRUZUX1RPX1JJR0hUKTsKIAogICAgIHNldENvbnRleHQodG9Db250ZXh0KTsK
IApAQCAtNDUwLDQxICs0NDEsNDAgQEAgYm9vbCBCaWRpUmVzb2x2ZXI8SXRlcmF0b3IsIFJ1bj46
OmNvbW1pdEV4cGxpY2l0RW1iZWRkaW5nKCkKIH0KIAogdGVtcGxhdGUgPGNsYXNzIEl0ZXJhdG9y
LCBjbGFzcyBSdW4+Ci1pbmxpbmUgdm9pZCBCaWRpUmVzb2x2ZXI8SXRlcmF0b3IsIFJ1bj46OnVw
ZGF0ZVN0YXR1c0xhc3RGcm9tQ3VycmVudERpcmVjdGlvbihXVEY6OlVuaWNvZGU6OkRpcmVjdGlv
biBkaXJDdXJyZW50KQoraW5saW5lIHZvaWQgQmlkaVJlc29sdmVyPEl0ZXJhdG9yLCBSdW4+Ojp1
cGRhdGVTdGF0dXNMYXN0RnJvbUN1cnJlbnREaXJlY3Rpb24oVUNoYXJEaXJlY3Rpb24gZGlyQ3Vy
cmVudCkKIHsKLSAgICB1c2luZyBuYW1lc3BhY2UgV1RGOjpVbmljb2RlOwogICAgIHN3aXRjaCAo
ZGlyQ3VycmVudCkgewotICAgIGNhc2UgRXVyb3BlYW5OdW1iZXJUZXJtaW5hdG9yOgotICAgICAg
ICBpZiAobV9zdGF0dXMubGFzdCAhPSBFdXJvcGVhbk51bWJlcikKLSAgICAgICAgICAgIG1fc3Rh
dHVzLmxhc3QgPSBFdXJvcGVhbk51bWJlclRlcm1pbmF0b3I7CisgICAgY2FzZSBVX0VVUk9QRUFO
X05VTUJFUl9URVJNSU5BVE9SOgorICAgICAgICBpZiAobV9zdGF0dXMubGFzdCAhPSBVX0VVUk9Q
RUFOX05VTUJFUikKKyAgICAgICAgICAgIG1fc3RhdHVzLmxhc3QgPSBVX0VVUk9QRUFOX05VTUJF
Ul9URVJNSU5BVE9SOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIEV1cm9wZWFuTnVtYmVyU2Vw
YXJhdG9yOgotICAgIGNhc2UgQ29tbW9uTnVtYmVyU2VwYXJhdG9yOgotICAgIGNhc2UgU2VnbWVu
dFNlcGFyYXRvcjoKLSAgICBjYXNlIFdoaXRlU3BhY2VOZXV0cmFsOgotICAgIGNhc2UgT3RoZXJO
ZXV0cmFsOgorICAgIGNhc2UgVV9FVVJPUEVBTl9OVU1CRVJfU0VQQVJBVE9SOgorICAgIGNhc2Ug
VV9DT01NT05fTlVNQkVSX1NFUEFSQVRPUjoKKyAgICBjYXNlIFVfU0VHTUVOVF9TRVBBUkFUT1I6
CisgICAgY2FzZSBVX1dISVRFX1NQQUNFX05FVVRSQUw6CisgICAgY2FzZSBVX09USEVSX05FVVRS
QUw6CiAgICAgICAgIHN3aXRjaCAobV9zdGF0dXMubGFzdCkgewotICAgICAgICBjYXNlIExlZnRU
b1JpZ2h0OgotICAgICAgICBjYXNlIFJpZ2h0VG9MZWZ0OgotICAgICAgICBjYXNlIFJpZ2h0VG9M
ZWZ0QXJhYmljOgotICAgICAgICBjYXNlIEV1cm9wZWFuTnVtYmVyOgotICAgICAgICBjYXNlIEFy
YWJpY051bWJlcjoKKyAgICAgICAgY2FzZSBVX0xFRlRfVE9fUklHSFQ6CisgICAgICAgIGNhc2Ug
VV9SSUdIVF9UT19MRUZUOgorICAgICAgICBjYXNlIFVfUklHSFRfVE9fTEVGVF9BUkFCSUM6Cisg
ICAgICAgIGNhc2UgVV9FVVJPUEVBTl9OVU1CRVI6CisgICAgICAgIGNhc2UgVV9BUkFCSUNfTlVN
QkVSOgogICAgICAgICAgICAgbV9zdGF0dXMubGFzdCA9IGRpckN1cnJlbnQ7CiAgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgIG1fc3RhdHVzLmxhc3QgPSBP
dGhlck5ldXRyYWw7CisgICAgICAgICAgICBtX3N0YXR1cy5sYXN0ID0gVV9PVEhFUl9ORVVUUkFM
OwogICAgICAgICB9CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgTm9uU3BhY2luZ01hcms6Ci0g
ICAgY2FzZSBCb3VuZGFyeU5ldXRyYWw6Ci0gICAgY2FzZSBSaWdodFRvTGVmdEVtYmVkZGluZzoK
LSAgICBjYXNlIExlZnRUb1JpZ2h0RW1iZWRkaW5nOgotICAgIGNhc2UgUmlnaHRUb0xlZnRPdmVy
cmlkZToKLSAgICBjYXNlIExlZnRUb1JpZ2h0T3ZlcnJpZGU6Ci0gICAgY2FzZSBQb3BEaXJlY3Rp
b25hbEZvcm1hdDoKKyAgICBjYXNlIFVfRElSX05PTl9TUEFDSU5HX01BUks6CisgICAgY2FzZSBV
X0JPVU5EQVJZX05FVVRSQUw6CisgICAgY2FzZSBVX1JJR0hUX1RPX0xFRlRfRU1CRURESU5HOgor
ICAgIGNhc2UgVV9MRUZUX1RPX1JJR0hUX0VNQkVERElORzoKKyAgICBjYXNlIFVfUklHSFRfVE9f
TEVGVF9PVkVSUklERToKKyAgICBjYXNlIFVfTEVGVF9UT19SSUdIVF9PVkVSUklERToKKyAgICBj
YXNlIFVfUE9QX0RJUkVDVElPTkFMX0ZPUk1BVDoKICAgICAgICAgLy8gaWdub3JlIHRoZXNlCiAg
ICAgICAgIGJyZWFrOwotICAgIGNhc2UgRXVyb3BlYW5OdW1iZXI6CisgICAgY2FzZSBVX0VVUk9Q
RUFOX05VTUJFUjoKICAgICAgICAgLy8gZmFsbCB0aHJvdWdoCiAgICAgZGVmYXVsdDoKICAgICAg
ICAgbV9zdGF0dXMubGFzdCA9IGRpckN1cnJlbnQ7CkBAIC01MzEsOSArNTIxLDcgQEAgaW5saW5l
IHZvaWQgQmlkaVJlc29sdmVyPEl0ZXJhdG9yLCBSdW4+OjpyZW9yZGVyUnVuc0Zyb21MZXZlbHMo
KQogdGVtcGxhdGUgPGNsYXNzIEl0ZXJhdG9yLCBjbGFzcyBSdW4+CiB2b2lkIEJpZGlSZXNvbHZl
cjxJdGVyYXRvciwgUnVuPjo6Y3JlYXRlQmlkaVJ1bnNGb3JMaW5lKGNvbnN0IEl0ZXJhdG9yJiBl
bmQsIFZpc3VhbERpcmVjdGlvbk92ZXJyaWRlIG92ZXJyaWRlLCBib29sIGhhcmRMaW5lQnJlYWsp
CiB7Ci0gICAgdXNpbmcgbmFtZXNwYWNlIFdURjo6VW5pY29kZTsKLQotICAgIEFTU0VSVChtX2Rp
cmVjdGlvbiA9PSBPdGhlck5ldXRyYWwpOworICAgIEFTU0VSVChtX2RpcmVjdGlvbiA9PSBVX09U
SEVSX05FVVRSQUwpOwogCiAgICAgaWYgKG92ZXJyaWRlICE9IE5vVmlzdWFsT3ZlcnJpZGUpIHsK
ICAgICAgICAgbV9lbXB0eVJ1biA9IGZhbHNlOwpAQCAtNTQzLDcgKzUzMSw3IEBAIHZvaWQgQmlk
aVJlc29sdmVyPEl0ZXJhdG9yLCBSdW4+OjpjcmVhdGVCaWRpUnVuc0ZvckxpbmUoY29uc3QgSXRl
cmF0b3ImIGVuZCwgVmlzCiAgICAgICAgICAgICBtX2VvciA9IG1fY3VycmVudDsKICAgICAgICAg
ICAgIGluY3JlbWVudCgpOwogICAgICAgICB9Ci0gICAgICAgIG1fZGlyZWN0aW9uID0gb3ZlcnJp
ZGUgPT0gVmlzdWFsTGVmdFRvUmlnaHRPdmVycmlkZSA/IExlZnRUb1JpZ2h0IDogUmlnaHRUb0xl
ZnQ7CisgICAgICAgIG1fZGlyZWN0aW9uID0gb3ZlcnJpZGUgPT0gVmlzdWFsTGVmdFRvUmlnaHRP
dmVycmlkZSA/IFVfTEVGVF9UT19SSUdIVCA6IFVfUklHSFRfVE9fTEVGVDsKICAgICAgICAgYXBw
ZW5kUnVuKCk7CiAgICAgICAgIG1fcnVucy5zZXRMb2dpY2FsbHlMYXN0UnVuKG1fcnVucy5sYXN0
UnVuKCkpOwogICAgICAgICBpZiAob3ZlcnJpZGUgPT0gVmlzdWFsUmlnaHRUb0xlZnRPdmVycmlk
ZSkKQEAgLTU2MCw3ICs1NDgsNyBAQCB2b2lkIEJpZGlSZXNvbHZlcjxJdGVyYXRvciwgUnVuPjo6
Y3JlYXRlQmlkaVJ1bnNGb3JMaW5lKGNvbnN0IEl0ZXJhdG9yJiBlbmQsIFZpcwogICAgIEJpZGlS
ZXNvbHZlcjxJdGVyYXRvciwgUnVuPiBzdGF0ZUF0RW5kOwogCiAgICAgd2hpbGUgKHRydWUpIHsK
LSAgICAgICAgRGlyZWN0aW9uIGRpckN1cnJlbnQ7CisgICAgICAgIFVDaGFyRGlyZWN0aW9uIGRp
ckN1cnJlbnQ7CiAgICAgICAgIGlmIChwYXN0RW5kICYmIChoYXJkTGluZUJyZWFrIHx8IG1fY3Vy
cmVudC5hdEVuZCgpKSkgewogICAgICAgICAgICAgQmlkaUNvbnRleHQqIGMgPSBjb250ZXh0KCk7
CiAgICAgICAgICAgICBpZiAoaGFyZExpbmVCcmVhaykgewpAQCAtNTgyLDgxICs1NzAsODEgQEAg
dm9pZCBCaWRpUmVzb2x2ZXI8SXRlcmF0b3IsIFJ1bj46OmNyZWF0ZUJpZGlSdW5zRm9yTGluZShj
b25zdCBJdGVyYXRvciYgZW5kLCBWaXMKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIGRp
ckN1cnJlbnQgPSBtX2N1cnJlbnQuZGlyZWN0aW9uKCk7CiAgICAgICAgICAgICBpZiAoY29udGV4
dCgpLT5vdmVycmlkZSgpCi0gICAgICAgICAgICAgICAgICAgICYmIGRpckN1cnJlbnQgIT0gUmln
aHRUb0xlZnRFbWJlZGRpbmcKLSAgICAgICAgICAgICAgICAgICAgJiYgZGlyQ3VycmVudCAhPSBM
ZWZ0VG9SaWdodEVtYmVkZGluZwotICAgICAgICAgICAgICAgICAgICAmJiBkaXJDdXJyZW50ICE9
IFJpZ2h0VG9MZWZ0T3ZlcnJpZGUKLSAgICAgICAgICAgICAgICAgICAgJiYgZGlyQ3VycmVudCAh
PSBMZWZ0VG9SaWdodE92ZXJyaWRlCi0gICAgICAgICAgICAgICAgICAgICYmIGRpckN1cnJlbnQg
IT0gUG9wRGlyZWN0aW9uYWxGb3JtYXQpCisgICAgICAgICAgICAgICAgICAgICYmIGRpckN1cnJl
bnQgIT0gVV9SSUdIVF9UT19MRUZUX0VNQkVERElORworICAgICAgICAgICAgICAgICAgICAmJiBk
aXJDdXJyZW50ICE9IFVfTEVGVF9UT19SSUdIVF9FTUJFRERJTkcKKyAgICAgICAgICAgICAgICAg
ICAgJiYgZGlyQ3VycmVudCAhPSBVX1JJR0hUX1RPX0xFRlRfT1ZFUlJJREUKKyAgICAgICAgICAg
ICAgICAgICAgJiYgZGlyQ3VycmVudCAhPSBVX0xFRlRfVE9fUklHSFRfT1ZFUlJJREUKKyAgICAg
ICAgICAgICAgICAgICAgJiYgZGlyQ3VycmVudCAhPSBVX1BPUF9ESVJFQ1RJT05BTF9GT1JNQVQp
CiAgICAgICAgICAgICAgICAgZGlyQ3VycmVudCA9IGNvbnRleHQoKS0+ZGlyKCk7Ci0gICAgICAg
ICAgICBlbHNlIGlmIChkaXJDdXJyZW50ID09IE5vblNwYWNpbmdNYXJrKQorICAgICAgICAgICAg
ZWxzZSBpZiAoZGlyQ3VycmVudCA9PSBVX0RJUl9OT05fU1BBQ0lOR19NQVJLKQogICAgICAgICAg
ICAgICAgIGRpckN1cnJlbnQgPSBtX3N0YXR1cy5sYXN0OwogICAgICAgICB9CiAKICAgICAgICAg
Ly8gV2UgaWdub3JlIGFsbCBjaGFyYWN0ZXIgZGlyZWN0aW9uYWxpdHkgd2hpbGUgaW4gdW5pY29k
ZS1iaWRpOiBpc29sYXRlIHNwYW5zLgogICAgICAgICAvLyBXZSdsbCBoYW5kbGUgb3JkZXJpbmcg
dGhlIGlzb2xhdGVkIGNoYXJhY3RlcnMgaW4gYSBzZWNvbmQgcGFzcy4KICAgICAgICAgaWYgKGlu
SXNvbGF0ZSgpKQotICAgICAgICAgICAgZGlyQ3VycmVudCA9IE90aGVyTmV1dHJhbDsKKyAgICAg
ICAgICAgIGRpckN1cnJlbnQgPSBVX09USEVSX05FVVRSQUw7CiAKLSAgICAgICAgQVNTRVJUKG1f
c3RhdHVzLmVvciAhPSBPdGhlck5ldXRyYWwgfHwgbV9lb3IuYXRFbmQoKSk7CisgICAgICAgIEFT
U0VSVChtX3N0YXR1cy5lb3IgIT0gVV9PVEhFUl9ORVVUUkFMIHx8IG1fZW9yLmF0RW5kKCkpOwog
ICAgICAgICBzd2l0Y2ggKGRpckN1cnJlbnQpIHsKIAogICAgICAgICAvLyBlbWJlZGRpbmcgYW5k
IG92ZXJyaWRlcyAoWDEtWDkgaW4gdGhlIEJpZGkgc3BlY3MpCi0gICAgICAgIGNhc2UgUmlnaHRU
b0xlZnRFbWJlZGRpbmc6Ci0gICAgICAgIGNhc2UgTGVmdFRvUmlnaHRFbWJlZGRpbmc6Ci0gICAg
ICAgIGNhc2UgUmlnaHRUb0xlZnRPdmVycmlkZToKLSAgICAgICAgY2FzZSBMZWZ0VG9SaWdodE92
ZXJyaWRlOgotICAgICAgICBjYXNlIFBvcERpcmVjdGlvbmFsRm9ybWF0OgorICAgICAgICBjYXNl
IFVfUklHSFRfVE9fTEVGVF9FTUJFRERJTkc6CisgICAgICAgIGNhc2UgVV9MRUZUX1RPX1JJR0hU
X0VNQkVERElORzoKKyAgICAgICAgY2FzZSBVX1JJR0hUX1RPX0xFRlRfT1ZFUlJJREU6CisgICAg
ICAgIGNhc2UgVV9MRUZUX1RPX1JJR0hUX09WRVJSSURFOgorICAgICAgICBjYXNlIFVfUE9QX0RJ
UkVDVElPTkFMX0ZPUk1BVDoKICAgICAgICAgICAgIGVtYmVkKGRpckN1cnJlbnQsIEZyb21Vbmlj
b2RlKTsKICAgICAgICAgICAgIGNvbW1pdEV4cGxpY2l0RW1iZWRkaW5nKCk7CiAgICAgICAgICAg
ICBicmVhazsKIAogICAgICAgICAvLyBzdHJvbmcgdHlwZXMKLSAgICAgICAgY2FzZSBMZWZ0VG9S
aWdodDoKKyAgICAgICAgY2FzZSBVX0xFRlRfVE9fUklHSFQ6CiAgICAgICAgICAgICBzd2l0Y2go
bV9zdGF0dXMubGFzdCkgewotICAgICAgICAgICAgICAgIGNhc2UgUmlnaHRUb0xlZnQ6Ci0gICAg
ICAgICAgICAgICAgY2FzZSBSaWdodFRvTGVmdEFyYWJpYzoKLSAgICAgICAgICAgICAgICBjYXNl
IEV1cm9wZWFuTnVtYmVyOgotICAgICAgICAgICAgICAgIGNhc2UgQXJhYmljTnVtYmVyOgotICAg
ICAgICAgICAgICAgICAgICBpZiAobV9zdGF0dXMubGFzdCAhPSBFdXJvcGVhbk51bWJlciB8fCBt
X3N0YXR1cy5sYXN0U3Ryb25nICE9IExlZnRUb1JpZ2h0KQorICAgICAgICAgICAgICAgIGNhc2Ug
VV9SSUdIVF9UT19MRUZUOgorICAgICAgICAgICAgICAgIGNhc2UgVV9SSUdIVF9UT19MRUZUX0FS
QUJJQzoKKyAgICAgICAgICAgICAgICBjYXNlIFVfRVVST1BFQU5fTlVNQkVSOgorICAgICAgICAg
ICAgICAgIGNhc2UgVV9BUkFCSUNfTlVNQkVSOgorICAgICAgICAgICAgICAgICAgICBpZiAobV9z
dGF0dXMubGFzdCAhPSBVX0VVUk9QRUFOX05VTUJFUiB8fCBtX3N0YXR1cy5sYXN0U3Ryb25nICE9
IFVfTEVGVF9UT19SSUdIVCkKICAgICAgICAgICAgICAgICAgICAgICAgIGFwcGVuZFJ1bigpOwog
ICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICBjYXNlIExlZnRUb1Jp
Z2h0OgorICAgICAgICAgICAgICAgIGNhc2UgVV9MRUZUX1RPX1JJR0hUOgogICAgICAgICAgICAg
ICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICBjYXNlIEV1cm9wZWFuTnVtYmVyU2VwYXJh
dG9yOgotICAgICAgICAgICAgICAgIGNhc2UgRXVyb3BlYW5OdW1iZXJUZXJtaW5hdG9yOgotICAg
ICAgICAgICAgICAgIGNhc2UgQ29tbW9uTnVtYmVyU2VwYXJhdG9yOgotICAgICAgICAgICAgICAg
IGNhc2UgQm91bmRhcnlOZXV0cmFsOgotICAgICAgICAgICAgICAgIGNhc2UgQmxvY2tTZXBhcmF0
b3I6Ci0gICAgICAgICAgICAgICAgY2FzZSBTZWdtZW50U2VwYXJhdG9yOgotICAgICAgICAgICAg
ICAgIGNhc2UgV2hpdGVTcGFjZU5ldXRyYWw6Ci0gICAgICAgICAgICAgICAgY2FzZSBPdGhlck5l
dXRyYWw6Ci0gICAgICAgICAgICAgICAgICAgIGlmIChtX3N0YXR1cy5lb3IgPT0gRXVyb3BlYW5O
dW1iZXIpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIChtX3N0YXR1cy5sYXN0U3Ryb25n
ICE9IExlZnRUb1JpZ2h0KSB7CisgICAgICAgICAgICAgICAgY2FzZSBVX0VVUk9QRUFOX05VTUJF
Ul9TRVBBUkFUT1I6CisgICAgICAgICAgICAgICAgY2FzZSBVX0VVUk9QRUFOX05VTUJFUl9URVJN
SU5BVE9SOgorICAgICAgICAgICAgICAgIGNhc2UgVV9DT01NT05fTlVNQkVSX1NFUEFSQVRPUjoK
KyAgICAgICAgICAgICAgICBjYXNlIFVfQk9VTkRBUllfTkVVVFJBTDoKKyAgICAgICAgICAgICAg
ICBjYXNlIFVfQkxPQ0tfU0VQQVJBVE9SOgorICAgICAgICAgICAgICAgIGNhc2UgVV9TRUdNRU5U
X1NFUEFSQVRPUjoKKyAgICAgICAgICAgICAgICBjYXNlIFVfV0hJVEVfU1BBQ0VfTkVVVFJBTDoK
KyAgICAgICAgICAgICAgICBjYXNlIFVfT1RIRVJfTkVVVFJBTDoKKyAgICAgICAgICAgICAgICAg
ICAgaWYgKG1fc3RhdHVzLmVvciA9PSBVX0VVUk9QRUFOX05VTUJFUikgeworICAgICAgICAgICAg
ICAgICAgICAgICAgaWYgKG1fc3RhdHVzLmxhc3RTdHJvbmcgIT0gVV9MRUZUX1RPX1JJR0hUKSB7
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdGhlIG51bWJlcnMgbmVlZCB0byBiZSBv
biBhIGhpZ2hlciBlbWJlZGRpbmcgbGV2ZWwsIHNvIGxldCdzIGNsb3NlIHRoYXQgcnVuCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgbV9kaXJlY3Rpb24gPSBFdXJvcGVhbk51bWJlcjsKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBtX2RpcmVjdGlvbiA9IFVfRVVST1BFQU5fTlVNQkVS
OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFwcGVuZFJ1bigpOwotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGlmIChjb250ZXh0KCktPmRpcigpICE9IExlZnRUb1JpZ2h0KSB7Cisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGNvbnRleHQoKS0+ZGlyKCkgIT0gVV9MRUZU
X1RPX1JJR0hUKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRoZSBuZXV0
cmFscyB0YWtlIHRoZSBlbWJlZGRpbmcgZGlyZWN0aW9uLCB3aGljaCBpcyBSCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIG1fZW9yID0gbV9sYXN0OwotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBtX2RpcmVjdGlvbiA9IFJpZ2h0VG9MZWZ0OworICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBtX2RpcmVjdGlvbiA9IFVfUklHSFRfVE9fTEVGVDsKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgYXBwZW5kUnVuKCk7CiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAg
ICB9IGVsc2UgaWYgKG1fc3RhdHVzLmVvciA9PSBBcmFiaWNOdW1iZXIpIHsKKyAgICAgICAgICAg
ICAgICAgICAgfSBlbHNlIGlmIChtX3N0YXR1cy5lb3IgPT0gVV9BUkFCSUNfTlVNQkVSKSB7CiAg
ICAgICAgICAgICAgICAgICAgICAgICAvLyBBcmFiaWMgbnVtYmVycyBhcmUgYWx3YXlzIG9uIGEg
aGlnaGVyIGVtYmVkZGluZyBsZXZlbCwgc28gbGV0J3MgY2xvc2UgdGhhdCBydW4KLSAgICAgICAg
ICAgICAgICAgICAgICAgIG1fZGlyZWN0aW9uID0gQXJhYmljTnVtYmVyOworICAgICAgICAgICAg
ICAgICAgICAgICAgbV9kaXJlY3Rpb24gPSBVX0FSQUJJQ19OVU1CRVI7CiAgICAgICAgICAgICAg
ICAgICAgICAgICBhcHBlbmRSdW4oKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjb250
ZXh0KCktPmRpcigpICE9IExlZnRUb1JpZ2h0KSB7CisgICAgICAgICAgICAgICAgICAgICAgICBp
ZiAoY29udGV4dCgpLT5kaXIoKSAhPSBVX0xFRlRfVE9fUklHSFQpIHsKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAvLyB0aGUgbmV1dHJhbHMgdGFrZSB0aGUgZW1iZWRkaW5nIGRpcmVjdGlv
biwgd2hpY2ggaXMgUgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fZW9yID0gbV9sYXN0
OwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fZGlyZWN0aW9uID0gUmlnaHRUb0xlZnQ7
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9kaXJlY3Rpb24gPSBVX1JJR0hUX1RPX0xF
RlQ7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXBwZW5kUnVuKCk7CiAgICAgICAgICAg
ICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAobV9zdGF0dXMu
bGFzdFN0cm9uZyAhPSBMZWZ0VG9SaWdodCkgeworICAgICAgICAgICAgICAgICAgICB9IGVsc2Ug
aWYgKG1fc3RhdHVzLmxhc3RTdHJvbmcgIT0gVV9MRUZUX1RPX1JJR0hUKSB7CiAgICAgICAgICAg
ICAgICAgICAgICAgICAvL2xhc3Qgc3R1ZmYgdGFrZXMgZW1iZWRkaW5nIGRpcgotICAgICAgICAg
ICAgICAgICAgICAgICAgaWYgKGNvbnRleHQoKS0+ZGlyKCkgPT0gUmlnaHRUb0xlZnQpIHsKKyAg
ICAgICAgICAgICAgICAgICAgICAgIGlmIChjb250ZXh0KCktPmRpcigpID09IFVfUklHSFRfVE9f
TEVGVCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fZW9yID0gbV9sYXN0OyAKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBtX2RpcmVjdGlvbiA9IFJpZ2h0VG9MZWZ0OworICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIG1fZGlyZWN0aW9uID0gVV9SSUdIVF9UT19MRUZUOwog
ICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgYXBwZW5k
UnVuKCk7CiAgICAgICAgICAgICAgICAgICAgIH0KQEAgLTY2NCwzNiArNjUyLDM2IEBAIHZvaWQg
QmlkaVJlc29sdmVyPEl0ZXJhdG9yLCBSdW4+OjpjcmVhdGVCaWRpUnVuc0ZvckxpbmUoY29uc3Qg
SXRlcmF0b3ImIGVuZCwgVmlzCiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAg
ICAgfQogICAgICAgICAgICAgbV9lb3IgPSBtX2N1cnJlbnQ7Ci0gICAgICAgICAgICBtX3N0YXR1
cy5lb3IgPSBMZWZ0VG9SaWdodDsKLSAgICAgICAgICAgIG1fc3RhdHVzLmxhc3RTdHJvbmcgPSBM
ZWZ0VG9SaWdodDsKLSAgICAgICAgICAgIG1fZGlyZWN0aW9uID0gTGVmdFRvUmlnaHQ7CisgICAg
ICAgICAgICBtX3N0YXR1cy5lb3IgPSBVX0xFRlRfVE9fUklHSFQ7CisgICAgICAgICAgICBtX3N0
YXR1cy5sYXN0U3Ryb25nID0gVV9MRUZUX1RPX1JJR0hUOworICAgICAgICAgICAgbV9kaXJlY3Rp
b24gPSBVX0xFRlRfVE9fUklHSFQ7CiAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBS
aWdodFRvTGVmdEFyYWJpYzoKLSAgICAgICAgY2FzZSBSaWdodFRvTGVmdDoKKyAgICAgICAgY2Fz
ZSBVX1JJR0hUX1RPX0xFRlRfQVJBQklDOgorICAgICAgICBjYXNlIFVfUklHSFRfVE9fTEVGVDoK
ICAgICAgICAgICAgIHN3aXRjaCAobV9zdGF0dXMubGFzdCkgewotICAgICAgICAgICAgICAgIGNh
c2UgTGVmdFRvUmlnaHQ6Ci0gICAgICAgICAgICAgICAgY2FzZSBFdXJvcGVhbk51bWJlcjoKLSAg
ICAgICAgICAgICAgICBjYXNlIEFyYWJpY051bWJlcjoKKyAgICAgICAgICAgICAgICBjYXNlIFVf
TEVGVF9UT19SSUdIVDoKKyAgICAgICAgICAgICAgICBjYXNlIFVfRVVST1BFQU5fTlVNQkVSOgor
ICAgICAgICAgICAgICAgIGNhc2UgVV9BUkFCSUNfTlVNQkVSOgogICAgICAgICAgICAgICAgICAg
ICBhcHBlbmRSdW4oKTsKLSAgICAgICAgICAgICAgICBjYXNlIFJpZ2h0VG9MZWZ0OgotICAgICAg
ICAgICAgICAgIGNhc2UgUmlnaHRUb0xlZnRBcmFiaWM6CisgICAgICAgICAgICAgICAgY2FzZSBV
X1JJR0hUX1RPX0xFRlQ6CisgICAgICAgICAgICAgICAgY2FzZSBVX1JJR0hUX1RPX0xFRlRfQVJB
QklDOgogICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICBjYXNlIEV1
cm9wZWFuTnVtYmVyU2VwYXJhdG9yOgotICAgICAgICAgICAgICAgIGNhc2UgRXVyb3BlYW5OdW1i
ZXJUZXJtaW5hdG9yOgotICAgICAgICAgICAgICAgIGNhc2UgQ29tbW9uTnVtYmVyU2VwYXJhdG9y
OgotICAgICAgICAgICAgICAgIGNhc2UgQm91bmRhcnlOZXV0cmFsOgotICAgICAgICAgICAgICAg
IGNhc2UgQmxvY2tTZXBhcmF0b3I6Ci0gICAgICAgICAgICAgICAgY2FzZSBTZWdtZW50U2VwYXJh
dG9yOgotICAgICAgICAgICAgICAgIGNhc2UgV2hpdGVTcGFjZU5ldXRyYWw6Ci0gICAgICAgICAg
ICAgICAgY2FzZSBPdGhlck5ldXRyYWw6Ci0gICAgICAgICAgICAgICAgICAgIGlmIChtX3N0YXR1
cy5lb3IgPT0gRXVyb3BlYW5OdW1iZXIpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmICht
X3N0YXR1cy5sYXN0U3Ryb25nID09IExlZnRUb1JpZ2h0ICYmIGNvbnRleHQoKS0+ZGlyKCkgPT0g
TGVmdFRvUmlnaHQpCisgICAgICAgICAgICAgICAgY2FzZSBVX0VVUk9QRUFOX05VTUJFUl9TRVBB
UkFUT1I6CisgICAgICAgICAgICAgICAgY2FzZSBVX0VVUk9QRUFOX05VTUJFUl9URVJNSU5BVE9S
OgorICAgICAgICAgICAgICAgIGNhc2UgVV9DT01NT05fTlVNQkVSX1NFUEFSQVRPUjoKKyAgICAg
ICAgICAgICAgICBjYXNlIFVfQk9VTkRBUllfTkVVVFJBTDoKKyAgICAgICAgICAgICAgICBjYXNl
IFVfQkxPQ0tfU0VQQVJBVE9SOgorICAgICAgICAgICAgICAgIGNhc2UgVV9TRUdNRU5UX1NFUEFS
QVRPUjoKKyAgICAgICAgICAgICAgICBjYXNlIFVfV0hJVEVfU1BBQ0VfTkVVVFJBTDoKKyAgICAg
ICAgICAgICAgICBjYXNlIFVfT1RIRVJfTkVVVFJBTDoKKyAgICAgICAgICAgICAgICAgICAgaWYg
KG1fc3RhdHVzLmVvciA9PSBVX0VVUk9QRUFOX05VTUJFUikgeworICAgICAgICAgICAgICAgICAg
ICAgICAgaWYgKG1fc3RhdHVzLmxhc3RTdHJvbmcgPT0gVV9MRUZUX1RPX1JJR0hUICYmIGNvbnRl
eHQoKS0+ZGlyKCkgPT0gVV9MRUZUX1RPX1JJR0hUKQogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIG1fZW9yID0gbV9sYXN0OwogICAgICAgICAgICAgICAgICAgICAgICAgYXBwZW5kUnVuKCk7
Ci0gICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAobV9zdGF0dXMuZW9yID09IEFyYWJpY051
bWJlcikKKyAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChtX3N0YXR1cy5lb3IgPT0gVV9B
UkFCSUNfTlVNQkVSKQogICAgICAgICAgICAgICAgICAgICAgICAgYXBwZW5kUnVuKCk7Ci0gICAg
ICAgICAgICAgICAgICAgIGVsc2UgaWYgKG1fc3RhdHVzLmxhc3RTdHJvbmcgPT0gTGVmdFRvUmln
aHQpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjb250ZXh0KCktPmRpcigpID09IExl
ZnRUb1JpZ2h0KQorICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIChtX3N0YXR1cy5sYXN0U3Ry
b25nID09IFVfTEVGVF9UT19SSUdIVCkgeworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGNv
bnRleHQoKS0+ZGlyKCkgPT0gVV9MRUZUX1RPX1JJR0hUKQogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIG1fZW9yID0gbV9sYXN0OwogICAgICAgICAgICAgICAgICAgICAgICAgYXBwZW5kUnVu
KCk7CiAgICAgICAgICAgICAgICAgICAgIH0KQEAgLTcwMSwxNDggKzY4OSwxNDggQEAgdm9pZCBC
aWRpUmVzb2x2ZXI8SXRlcmF0b3IsIFJ1bj46OmNyZWF0ZUJpZGlSdW5zRm9yTGluZShjb25zdCBJ
dGVyYXRvciYgZW5kLCBWaXMKICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAg
ICB9CiAgICAgICAgICAgICBtX2VvciA9IG1fY3VycmVudDsKLSAgICAgICAgICAgIG1fc3RhdHVz
LmVvciA9IFJpZ2h0VG9MZWZ0OworICAgICAgICAgICAgbV9zdGF0dXMuZW9yID0gVV9SSUdIVF9U
T19MRUZUOwogICAgICAgICAgICAgbV9zdGF0dXMubGFzdFN0cm9uZyA9IGRpckN1cnJlbnQ7Ci0g
ICAgICAgICAgICBtX2RpcmVjdGlvbiA9IFJpZ2h0VG9MZWZ0OworICAgICAgICAgICAgbV9kaXJl
Y3Rpb24gPSBVX1JJR0hUX1RPX0xFRlQ7CiAgICAgICAgICAgICBicmVhazsKIAogICAgICAgICAg
ICAgLy8gd2VhayB0eXBlczoKIAotICAgICAgICBjYXNlIEV1cm9wZWFuTnVtYmVyOgotICAgICAg
ICAgICAgaWYgKG1fc3RhdHVzLmxhc3RTdHJvbmcgIT0gUmlnaHRUb0xlZnRBcmFiaWMpIHsKKyAg
ICAgICAgY2FzZSBVX0VVUk9QRUFOX05VTUJFUjoKKyAgICAgICAgICAgIGlmIChtX3N0YXR1cy5s
YXN0U3Ryb25nICE9IFVfUklHSFRfVE9fTEVGVF9BUkFCSUMpIHsKICAgICAgICAgICAgICAgICAv
LyBpZiBsYXN0IHN0cm9uZyB3YXMgQUwgY2hhbmdlIEVOIHRvIEFOCiAgICAgICAgICAgICAgICAg
c3dpdGNoIChtX3N0YXR1cy5sYXN0KSB7Ci0gICAgICAgICAgICAgICAgICAgIGNhc2UgRXVyb3Bl
YW5OdW1iZXI6Ci0gICAgICAgICAgICAgICAgICAgIGNhc2UgTGVmdFRvUmlnaHQ6CisgICAgICAg
ICAgICAgICAgICAgIGNhc2UgVV9FVVJPUEVBTl9OVU1CRVI6CisgICAgICAgICAgICAgICAgICAg
IGNhc2UgVV9MRUZUX1RPX1JJR0hUOgogICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0g
ICAgICAgICAgICAgICAgICAgIGNhc2UgUmlnaHRUb0xlZnQ6Ci0gICAgICAgICAgICAgICAgICAg
IGNhc2UgUmlnaHRUb0xlZnRBcmFiaWM6Ci0gICAgICAgICAgICAgICAgICAgIGNhc2UgQXJhYmlj
TnVtYmVyOgorICAgICAgICAgICAgICAgICAgICBjYXNlIFVfUklHSFRfVE9fTEVGVDoKKyAgICAg
ICAgICAgICAgICAgICAgY2FzZSBVX1JJR0hUX1RPX0xFRlRfQVJBQklDOgorICAgICAgICAgICAg
ICAgICAgICBjYXNlIFVfQVJBQklDX05VTUJFUjoKICAgICAgICAgICAgICAgICAgICAgICAgIG1f
ZW9yID0gbV9sYXN0OwogICAgICAgICAgICAgICAgICAgICAgICAgYXBwZW5kUnVuKCk7Ci0gICAg
ICAgICAgICAgICAgICAgICAgICBtX2RpcmVjdGlvbiA9IEV1cm9wZWFuTnVtYmVyOworICAgICAg
ICAgICAgICAgICAgICAgICAgbV9kaXJlY3Rpb24gPSBVX0VVUk9QRUFOX05VTUJFUjsKICAgICAg
ICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgICAgICBjYXNlIEV1cm9w
ZWFuTnVtYmVyU2VwYXJhdG9yOgotICAgICAgICAgICAgICAgICAgICBjYXNlIENvbW1vbk51bWJl
clNlcGFyYXRvcjoKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIChtX3N0YXR1cy5lb3IgPT0g
RXVyb3BlYW5OdW1iZXIpCisgICAgICAgICAgICAgICAgICAgIGNhc2UgVV9FVVJPUEVBTl9OVU1C
RVJfU0VQQVJBVE9SOgorICAgICAgICAgICAgICAgICAgICBjYXNlIFVfQ09NTU9OX05VTUJFUl9T
RVBBUkFUT1I6CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAobV9zdGF0dXMuZW9yID09IFVf
RVVST1BFQU5fTlVNQkVSKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAg
ICAgICAgICAgICAgICAgICBjYXNlIEV1cm9wZWFuTnVtYmVyVGVybWluYXRvcjoKLSAgICAgICAg
ICAgICAgICAgICAgY2FzZSBCb3VuZGFyeU5ldXRyYWw6Ci0gICAgICAgICAgICAgICAgICAgIGNh
c2UgQmxvY2tTZXBhcmF0b3I6Ci0gICAgICAgICAgICAgICAgICAgIGNhc2UgU2VnbWVudFNlcGFy
YXRvcjoKLSAgICAgICAgICAgICAgICAgICAgY2FzZSBXaGl0ZVNwYWNlTmV1dHJhbDoKLSAgICAg
ICAgICAgICAgICAgICAgY2FzZSBPdGhlck5ldXRyYWw6Ci0gICAgICAgICAgICAgICAgICAgICAg
ICBpZiAobV9zdGF0dXMuZW9yID09IEV1cm9wZWFuTnVtYmVyKSB7Ci0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgaWYgKG1fc3RhdHVzLmxhc3RTdHJvbmcgPT0gUmlnaHRUb0xlZnQpIHsKKyAg
ICAgICAgICAgICAgICAgICAgY2FzZSBVX0VVUk9QRUFOX05VTUJFUl9URVJNSU5BVE9SOgorICAg
ICAgICAgICAgICAgICAgICBjYXNlIFVfQk9VTkRBUllfTkVVVFJBTDoKKyAgICAgICAgICAgICAg
ICAgICAgY2FzZSBVX0JMT0NLX1NFUEFSQVRPUjoKKyAgICAgICAgICAgICAgICAgICAgY2FzZSBV
X1NFR01FTlRfU0VQQVJBVE9SOgorICAgICAgICAgICAgICAgICAgICBjYXNlIFVfV0hJVEVfU1BB
Q0VfTkVVVFJBTDoKKyAgICAgICAgICAgICAgICAgICAgY2FzZSBVX09USEVSX05FVVRSQUw6Cisg
ICAgICAgICAgICAgICAgICAgICAgICBpZiAobV9zdGF0dXMuZW9yID09IFVfRVVST1BFQU5fTlVN
QkVSKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG1fc3RhdHVzLmxhc3RTdHJv
bmcgPT0gVV9SSUdIVF9UT19MRUZUKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IC8vIEVOcyBvbiBib3RoIHNpZGVzIGJlaGF2ZSBsaWtlIFJzLCBzbyB0aGUgbmV1dHJhbHMgc2hv
dWxkIGJlIFIuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFRlcm1pbmF0ZSB0
aGUgRU4gcnVuLgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcHBlbmRSdW4oKTsK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gTWFrZSBhbiBSIHJ1bi4KLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9lb3IgPSBtX3N0YXR1cy5sYXN0ID09IEV1cm9w
ZWFuTnVtYmVyVGVybWluYXRvciA/IG1fbGFzdEJlZm9yZUVUIDogbV9sYXN0OwotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBtX2RpcmVjdGlvbiA9IFJpZ2h0VG9MZWZ0OworICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBtX2VvciA9IG1fc3RhdHVzLmxhc3QgPT0gVV9FVVJP
UEVBTl9OVU1CRVJfVEVSTUlOQVRPUiA/IG1fbGFzdEJlZm9yZUVUIDogbV9sYXN0OworICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBtX2RpcmVjdGlvbiA9IFVfUklHSFRfVE9fTEVGVDsK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXBwZW5kUnVuKCk7CiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIC8vIEJlZ2luIGEgbmV3IEVOIHJ1bi4KLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgbV9kaXJlY3Rpb24gPSBFdXJvcGVhbk51bWJlcjsKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9kaXJlY3Rpb24gPSBVX0VVUk9QRUFOX05VTUJF
UjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgICAg
ICB9IGVsc2UgaWYgKG1fc3RhdHVzLmVvciA9PSBBcmFiaWNOdW1iZXIpIHsKKyAgICAgICAgICAg
ICAgICAgICAgICAgIH0gZWxzZSBpZiAobV9zdGF0dXMuZW9yID09IFVfQVJBQklDX05VTUJFUikg
ewogICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFRlcm1pbmF0ZSB0aGUgQU4gcnVuLgog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFwcGVuZFJ1bigpOwotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGlmIChtX3N0YXR1cy5sYXN0U3Ryb25nID09IFJpZ2h0VG9MZWZ0IHx8IGNv
bnRleHQoKS0+ZGlyKCkgPT0gUmlnaHRUb0xlZnQpIHsKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBpZiAobV9zdGF0dXMubGFzdFN0cm9uZyA9PSBVX1JJR0hUX1RPX0xFRlQgfHwgY29udGV4
dCgpLT5kaXIoKSA9PSBVX1JJR0hUX1RPX0xFRlQpIHsKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgLy8gTWFrZSBhbiBSIHJ1bi4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgbV9lb3IgPSBtX3N0YXR1cy5sYXN0ID09IEV1cm9wZWFuTnVtYmVyVGVybWluYXRvciA/IG1f
bGFzdEJlZm9yZUVUIDogbV9sYXN0OwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBt
X2RpcmVjdGlvbiA9IFJpZ2h0VG9MZWZ0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBtX2VvciA9IG1fc3RhdHVzLmxhc3QgPT0gVV9FVVJPUEVBTl9OVU1CRVJfVEVSTUlOQVRPUiA/
IG1fbGFzdEJlZm9yZUVUIDogbV9sYXN0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBtX2RpcmVjdGlvbiA9IFVfUklHSFRfVE9fTEVGVDsKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgYXBwZW5kUnVuKCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8v
IEJlZ2luIGEgbmV3IEVOIHJ1bi4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9k
aXJlY3Rpb24gPSBFdXJvcGVhbk51bWJlcjsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgbV9kaXJlY3Rpb24gPSBVX0VVUk9QRUFOX05VTUJFUjsKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKG1fc3RhdHVzLmxh
c3RTdHJvbmcgPT0gUmlnaHRUb0xlZnQpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxz
ZSBpZiAobV9zdGF0dXMubGFzdFN0cm9uZyA9PSBVX1JJR0hUX1RPX0xFRlQpIHsKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAvLyBFeHRlbmQgdGhlIFIgcnVuIHRvIGluY2x1ZGUgdGhlIG5l
dXRyYWxzLgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fZW9yID0gbV9zdGF0dXMubGFz
dCA9PSBFdXJvcGVhbk51bWJlclRlcm1pbmF0b3IgPyBtX2xhc3RCZWZvcmVFVCA6IG1fbGFzdDsK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX2RpcmVjdGlvbiA9IFJpZ2h0VG9MZWZ0Owor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fZW9yID0gbV9zdGF0dXMubGFzdCA9PSBVX0VV
Uk9QRUFOX05VTUJFUl9URVJNSU5BVE9SID8gbV9sYXN0QmVmb3JlRVQgOiBtX2xhc3Q7CisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgbV9kaXJlY3Rpb24gPSBVX1JJR0hUX1RPX0xFRlQ7CiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgYXBwZW5kUnVuKCk7CiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgLy8gQmVnaW4gYSBuZXcgRU4gcnVuLgotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIG1fZGlyZWN0aW9uID0gRXVyb3BlYW5OdW1iZXI7CisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgbV9kaXJlY3Rpb24gPSBVX0VVUk9QRUFOX05VTUJFUjsKICAgICAgICAgICAgICAg
ICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgICAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBtX2Vv
ciA9IG1fY3VycmVudDsKLSAgICAgICAgICAgICAgICBtX3N0YXR1cy5lb3IgPSBFdXJvcGVhbk51
bWJlcjsKLSAgICAgICAgICAgICAgICBpZiAobV9kaXJlY3Rpb24gPT0gT3RoZXJOZXV0cmFsKQot
ICAgICAgICAgICAgICAgICAgICBtX2RpcmVjdGlvbiA9IExlZnRUb1JpZ2h0OworICAgICAgICAg
ICAgICAgIG1fc3RhdHVzLmVvciA9IFVfRVVST1BFQU5fTlVNQkVSOworICAgICAgICAgICAgICAg
IGlmIChtX2RpcmVjdGlvbiA9PSBVX09USEVSX05FVVRSQUwpCisgICAgICAgICAgICAgICAgICAg
IG1fZGlyZWN0aW9uID0gVV9MRUZUX1RPX1JJR0hUOwogICAgICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICAgICAgfQotICAgICAgICBjYXNlIEFyYWJpY051bWJlcjoKLSAgICAgICAgICAgIGRp
ckN1cnJlbnQgPSBBcmFiaWNOdW1iZXI7CisgICAgICAgIGNhc2UgVV9BUkFCSUNfTlVNQkVSOgor
ICAgICAgICAgICAgZGlyQ3VycmVudCA9IFVfQVJBQklDX05VTUJFUjsKICAgICAgICAgICAgIHN3
aXRjaCAobV9zdGF0dXMubGFzdCkgewotICAgICAgICAgICAgICAgIGNhc2UgTGVmdFRvUmlnaHQ6
Ci0gICAgICAgICAgICAgICAgICAgIGlmIChjb250ZXh0KCktPmRpcigpID09IExlZnRUb1JpZ2h0
KQorICAgICAgICAgICAgICAgIGNhc2UgVV9MRUZUX1RPX1JJR0hUOgorICAgICAgICAgICAgICAg
ICAgICBpZiAoY29udGV4dCgpLT5kaXIoKSA9PSBVX0xFRlRfVE9fUklHSFQpCiAgICAgICAgICAg
ICAgICAgICAgICAgICBhcHBlbmRSdW4oKTsKICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0g
ICAgICAgICAgICAgICAgY2FzZSBBcmFiaWNOdW1iZXI6CisgICAgICAgICAgICAgICAgY2FzZSBV
X0FSQUJJQ19OVU1CRVI6CiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAg
ICAgIGNhc2UgUmlnaHRUb0xlZnQ6Ci0gICAgICAgICAgICAgICAgY2FzZSBSaWdodFRvTGVmdEFy
YWJpYzoKLSAgICAgICAgICAgICAgICBjYXNlIEV1cm9wZWFuTnVtYmVyOgorICAgICAgICAgICAg
ICAgIGNhc2UgVV9SSUdIVF9UT19MRUZUOgorICAgICAgICAgICAgICAgIGNhc2UgVV9SSUdIVF9U
T19MRUZUX0FSQUJJQzoKKyAgICAgICAgICAgICAgICBjYXNlIFVfRVVST1BFQU5fTlVNQkVSOgog
ICAgICAgICAgICAgICAgICAgICBtX2VvciA9IG1fbGFzdDsKICAgICAgICAgICAgICAgICAgICAg
YXBwZW5kUnVuKCk7CiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAg
IGNhc2UgQ29tbW9uTnVtYmVyU2VwYXJhdG9yOgotICAgICAgICAgICAgICAgICAgICBpZiAobV9z
dGF0dXMuZW9yID09IEFyYWJpY051bWJlcikKKyAgICAgICAgICAgICAgICBjYXNlIFVfQ09NTU9O
X05VTUJFUl9TRVBBUkFUT1I6CisgICAgICAgICAgICAgICAgICAgIGlmIChtX3N0YXR1cy5lb3Ig
PT0gVV9BUkFCSUNfTlVNQkVSKQogICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAg
ICAgICAgICAgICAgY2FzZSBFdXJvcGVhbk51bWJlclNlcGFyYXRvcjoKLSAgICAgICAgICAgICAg
ICBjYXNlIEV1cm9wZWFuTnVtYmVyVGVybWluYXRvcjoKLSAgICAgICAgICAgICAgICBjYXNlIEJv
dW5kYXJ5TmV1dHJhbDoKLSAgICAgICAgICAgICAgICBjYXNlIEJsb2NrU2VwYXJhdG9yOgotICAg
ICAgICAgICAgICAgIGNhc2UgU2VnbWVudFNlcGFyYXRvcjoKLSAgICAgICAgICAgICAgICBjYXNl
IFdoaXRlU3BhY2VOZXV0cmFsOgotICAgICAgICAgICAgICAgIGNhc2UgT3RoZXJOZXV0cmFsOgot
ICAgICAgICAgICAgICAgICAgICBpZiAobV9zdGF0dXMuZW9yID09IEFyYWJpY051bWJlcgotICAg
ICAgICAgICAgICAgICAgICAgICAgfHwgKG1fc3RhdHVzLmVvciA9PSBFdXJvcGVhbk51bWJlciAm
JiAobV9zdGF0dXMubGFzdFN0cm9uZyA9PSBSaWdodFRvTGVmdCB8fCBjb250ZXh0KCktPmRpcigp
ID09IFJpZ2h0VG9MZWZ0KSkKLSAgICAgICAgICAgICAgICAgICAgICAgIHx8IChtX3N0YXR1cy5l
b3IgIT0gRXVyb3BlYW5OdW1iZXIgJiYgbV9zdGF0dXMubGFzdFN0cm9uZyA9PSBMZWZ0VG9SaWdo
dCAmJiBjb250ZXh0KCktPmRpcigpID09IFJpZ2h0VG9MZWZ0KSkgeworICAgICAgICAgICAgICAg
IGNhc2UgVV9FVVJPUEVBTl9OVU1CRVJfU0VQQVJBVE9SOgorICAgICAgICAgICAgICAgIGNhc2Ug
VV9FVVJPUEVBTl9OVU1CRVJfVEVSTUlOQVRPUjoKKyAgICAgICAgICAgICAgICBjYXNlIFVfQk9V
TkRBUllfTkVVVFJBTDoKKyAgICAgICAgICAgICAgICBjYXNlIFVfQkxPQ0tfU0VQQVJBVE9SOgor
ICAgICAgICAgICAgICAgIGNhc2UgVV9TRUdNRU5UX1NFUEFSQVRPUjoKKyAgICAgICAgICAgICAg
ICBjYXNlIFVfV0hJVEVfU1BBQ0VfTkVVVFJBTDoKKyAgICAgICAgICAgICAgICBjYXNlIFVfT1RI
RVJfTkVVVFJBTDoKKyAgICAgICAgICAgICAgICAgICAgaWYgKG1fc3RhdHVzLmVvciA9PSBVX0FS
QUJJQ19OVU1CRVIKKyAgICAgICAgICAgICAgICAgICAgICAgIHx8IChtX3N0YXR1cy5lb3IgPT0g
VV9FVVJPUEVBTl9OVU1CRVIgJiYgKG1fc3RhdHVzLmxhc3RTdHJvbmcgPT0gVV9SSUdIVF9UT19M
RUZUIHx8IGNvbnRleHQoKS0+ZGlyKCkgPT0gVV9SSUdIVF9UT19MRUZUKSkKKyAgICAgICAgICAg
ICAgICAgICAgICAgIHx8IChtX3N0YXR1cy5lb3IgIT0gVV9FVVJPUEVBTl9OVU1CRVIgJiYgbV9z
dGF0dXMubGFzdFN0cm9uZyA9PSBVX0xFRlRfVE9fUklHSFQgJiYgY29udGV4dCgpLT5kaXIoKSA9
PSBVX1JJR0hUX1RPX0xFRlQpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAvLyBUZXJtaW5h
dGUgdGhlIHJ1biBiZWZvcmUgdGhlIG5ldXRyYWxzLgogICAgICAgICAgICAgICAgICAgICAgICAg
YXBwZW5kUnVuKCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAvLyBCZWdpbiBhbiBSIHJ1biBm
b3IgdGhlIG5ldXRyYWxzLgotICAgICAgICAgICAgICAgICAgICAgICAgbV9kaXJlY3Rpb24gPSBS
aWdodFRvTGVmdDsKLSAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChtX2RpcmVjdGlvbiA9
PSBPdGhlck5ldXRyYWwpCi0gICAgICAgICAgICAgICAgICAgICAgICBtX2RpcmVjdGlvbiA9IG1f
c3RhdHVzLmxhc3RTdHJvbmcgPT0gTGVmdFRvUmlnaHQgPyBMZWZ0VG9SaWdodCA6IFJpZ2h0VG9M
ZWZ0OworICAgICAgICAgICAgICAgICAgICAgICAgbV9kaXJlY3Rpb24gPSBVX1JJR0hUX1RPX0xF
RlQ7CisgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAobV9kaXJlY3Rpb24gPT0gVV9PVEhF
Ul9ORVVUUkFMKQorICAgICAgICAgICAgICAgICAgICAgICAgbV9kaXJlY3Rpb24gPSBtX3N0YXR1
cy5sYXN0U3Ryb25nID09IFVfTEVGVF9UT19SSUdIVCA/IFVfTEVGVF9UT19SSUdIVCA6IFVfUklH
SFRfVE9fTEVGVDsKICAgICAgICAgICAgICAgICAgICAgbV9lb3IgPSBtX2xhc3Q7CiAgICAgICAg
ICAgICAgICAgICAgIGFwcGVuZFJ1bigpOwogICAgICAgICAgICAgICAgIGRlZmF1bHQ6CiAgICAg
ICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgbV9lb3Ig
PSBtX2N1cnJlbnQ7Ci0gICAgICAgICAgICBtX3N0YXR1cy5lb3IgPSBBcmFiaWNOdW1iZXI7Ci0g
ICAgICAgICAgICBpZiAobV9kaXJlY3Rpb24gPT0gT3RoZXJOZXV0cmFsKQotICAgICAgICAgICAg
ICAgIG1fZGlyZWN0aW9uID0gQXJhYmljTnVtYmVyOworICAgICAgICAgICAgbV9zdGF0dXMuZW9y
ID0gVV9BUkFCSUNfTlVNQkVSOworICAgICAgICAgICAgaWYgKG1fZGlyZWN0aW9uID09IFVfT1RI
RVJfTkVVVFJBTCkKKyAgICAgICAgICAgICAgICBtX2RpcmVjdGlvbiA9IFVfQVJBQklDX05VTUJF
UjsKICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIEV1cm9wZWFuTnVtYmVyU2VwYXJh
dG9yOgotICAgICAgICBjYXNlIENvbW1vbk51bWJlclNlcGFyYXRvcjoKKyAgICAgICAgY2FzZSBV
X0VVUk9QRUFOX05VTUJFUl9TRVBBUkFUT1I6CisgICAgICAgIGNhc2UgVV9DT01NT05fTlVNQkVS
X1NFUEFSQVRPUjoKICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIEV1cm9wZWFuTnVt
YmVyVGVybWluYXRvcjoKLSAgICAgICAgICAgIGlmIChtX3N0YXR1cy5sYXN0ID09IEV1cm9wZWFu
TnVtYmVyKSB7Ci0gICAgICAgICAgICAgICAgZGlyQ3VycmVudCA9IEV1cm9wZWFuTnVtYmVyOwor
ICAgICAgICBjYXNlIFVfRVVST1BFQU5fTlVNQkVSX1RFUk1JTkFUT1I6CisgICAgICAgICAgICBp
ZiAobV9zdGF0dXMubGFzdCA9PSBVX0VVUk9QRUFOX05VTUJFUikgeworICAgICAgICAgICAgICAg
IGRpckN1cnJlbnQgPSBVX0VVUk9QRUFOX05VTUJFUjsKICAgICAgICAgICAgICAgICBtX2VvciA9
IG1fY3VycmVudDsKICAgICAgICAgICAgICAgICBtX3N0YXR1cy5lb3IgPSBkaXJDdXJyZW50Owot
ICAgICAgICAgICAgfSBlbHNlIGlmIChtX3N0YXR1cy5sYXN0ICE9IEV1cm9wZWFuTnVtYmVyVGVy
bWluYXRvcikKKyAgICAgICAgICAgIH0gZWxzZSBpZiAobV9zdGF0dXMubGFzdCAhPSBVX0VVUk9Q
RUFOX05VTUJFUl9URVJNSU5BVE9SKQogICAgICAgICAgICAgICAgIG1fbGFzdEJlZm9yZUVUID0g
bV9lbXB0eVJ1biA/IG1fZW9yIDogbV9sYXN0OwogICAgICAgICAgICAgYnJlYWs7CiAKICAgICAg
ICAgLy8gYm91bmRhcnkgbmV1dHJhbHMgc2hvdWxkIGJlIGlnbm9yZWQKLSAgICAgICAgY2FzZSBC
b3VuZGFyeU5ldXRyYWw6CisgICAgICAgIGNhc2UgVV9CT1VOREFSWV9ORVVUUkFMOgogICAgICAg
ICAgICAgaWYgKG1fZW9yID09IG1fbGFzdCkKICAgICAgICAgICAgICAgICBtX2VvciA9IG1fY3Vy
cmVudDsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgLy8gbmV1dHJhbHMKLSAgICAg
ICAgY2FzZSBCbG9ja1NlcGFyYXRvcjoKLSAgICAgICAgICAgIC8vICMjIyB3aGF0IGRvIHdlIGRv
IHdpdGggbmV3bGluZSBhbmQgcGFyYWdyYXBoIHNlcGVyYXRvcnMgdGhhdCBjb21lIHRvIGhlcmU/
CisgICAgICAgIGNhc2UgVV9CTE9DS19TRVBBUkFUT1I6CisgICAgICAgICAgICAvLyBGSVhNRTog
V2hhdCBkbyB3ZSBkbyB3aXRoIG5ld2xpbmUgYW5kIHBhcmFncmFwaCBzZXBhcmF0b3JzIHRoYXQg
Y29tZSB0byBoZXJlPwogICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgU2VnbWVudFNl
cGFyYXRvcjoKLSAgICAgICAgICAgIC8vICMjIyBpbXBsZW1lbnQgcnVsZSBMMQorICAgICAgICBj
YXNlIFVfU0VHTUVOVF9TRVBBUkFUT1I6CisgICAgICAgICAgICAvLyBGSVhNRTogSW1wbGVtZW50
IHJ1bGUgTDEuCiAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBXaGl0ZVNwYWNlTmV1
dHJhbDoKKyAgICAgICAgY2FzZSBVX1dISVRFX1NQQUNFX05FVVRSQUw6CiAgICAgICAgICAgICBi
cmVhazsKLSAgICAgICAgY2FzZSBPdGhlck5ldXRyYWw6CisgICAgICAgIGNhc2UgVV9PVEhFUl9O
RVVUUkFMOgogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAg
ICBicmVhazsKQEAgLTg1MiwxMyArODQwLDEzIEBAIHZvaWQgQmlkaVJlc29sdmVyPEl0ZXJhdG9y
LCBSdW4+OjpjcmVhdGVCaWRpUnVuc0ZvckxpbmUoY29uc3QgSXRlcmF0b3ImIGVuZCwgVmlzCiAg
ICAgICAgICAgICBpZiAoIW1fcmVhY2hlZEVuZE9mTGluZSkgewogICAgICAgICAgICAgICAgIG1f
ZW9yID0gZW5kT2ZMaW5lOwogICAgICAgICAgICAgICAgIHN3aXRjaCAobV9zdGF0dXMuZW9yKSB7
Ci0gICAgICAgICAgICAgICAgICAgIGNhc2UgTGVmdFRvUmlnaHQ6Ci0gICAgICAgICAgICAgICAg
ICAgIGNhc2UgUmlnaHRUb0xlZnQ6Ci0gICAgICAgICAgICAgICAgICAgIGNhc2UgQXJhYmljTnVt
YmVyOgorICAgICAgICAgICAgICAgICAgICBjYXNlIFVfTEVGVF9UT19SSUdIVDoKKyAgICAgICAg
ICAgICAgICAgICAgY2FzZSBVX1JJR0hUX1RPX0xFRlQ6CisgICAgICAgICAgICAgICAgICAgIGNh
c2UgVV9BUkFCSUNfTlVNQkVSOgogICAgICAgICAgICAgICAgICAgICAgICAgbV9kaXJlY3Rpb24g
PSBtX3N0YXR1cy5lb3I7CiAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAg
ICAgICAgICAgICAgY2FzZSBFdXJvcGVhbk51bWJlcjoKLSAgICAgICAgICAgICAgICAgICAgICAg
IG1fZGlyZWN0aW9uID0gbV9zdGF0dXMubGFzdFN0cm9uZyA9PSBMZWZ0VG9SaWdodCA/IExlZnRU
b1JpZ2h0IDogRXVyb3BlYW5OdW1iZXI7CisgICAgICAgICAgICAgICAgICAgIGNhc2UgVV9FVVJP
UEVBTl9OVU1CRVI6CisgICAgICAgICAgICAgICAgICAgICAgICBtX2RpcmVjdGlvbiA9IG1fc3Rh
dHVzLmxhc3RTdHJvbmcgPT0gVV9MRUZUX1RPX1JJR0hUID8gVV9MRUZUX1RPX1JJR0hUIDogVV9F
VVJPUEVBTl9OVU1CRVI7CiAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAg
ICAgICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgICAgICAgICAgICAgIEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOwpAQCAtODczLDcgKzg2MSw3IEBAIHZvaWQgQmlkaVJlc29sdmVyPEl0ZXJhdG9y
LCBSdW4+OjpjcmVhdGVCaWRpUnVuc0ZvckxpbmUoY29uc3QgSXRlcmF0b3ImIGVuZCwgVmlzCiAg
ICAgICAgICAgICBtX3JlYWNoZWRFbmRPZkxpbmUgPSBzdGF0ZUF0RW5kLm1fcmVhY2hlZEVuZE9m
TGluZTsKICAgICAgICAgICAgIG1fbGFzdEJlZm9yZUVUID0gc3RhdGVBdEVuZC5tX2xhc3RCZWZv
cmVFVDsKICAgICAgICAgICAgIG1fZW1wdHlSdW4gPSBzdGF0ZUF0RW5kLm1fZW1wdHlSdW47Ci0g
ICAgICAgICAgICBtX2RpcmVjdGlvbiA9IE90aGVyTmV1dHJhbDsKKyAgICAgICAgICAgIG1fZGly
ZWN0aW9uID0gVV9PVEhFUl9ORVVUUkFMOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0K
IApAQCAtODk3LDcgKzg4NSw3IEBAIHZvaWQgQmlkaVJlc29sdmVyPEl0ZXJhdG9yLCBSdW4+Ojpj
cmVhdGVCaWRpUnVuc0ZvckxpbmUoY29uc3QgSXRlcmF0b3ImIGVuZCwgVmlzCiAgICAgICAgICAg
ICAgICAgbV9yZWFjaGVkRW5kT2ZMaW5lID0gc3RhdGVBdEVuZC5tX3JlYWNoZWRFbmRPZkxpbmU7
CiAgICAgICAgICAgICAgICAgbV9sYXN0QmVmb3JlRVQgPSBzdGF0ZUF0RW5kLm1fbGFzdEJlZm9y
ZUVUOwogICAgICAgICAgICAgICAgIG1fZW1wdHlSdW4gPSBzdGF0ZUF0RW5kLm1fZW1wdHlSdW47
Ci0gICAgICAgICAgICAgICAgbV9kaXJlY3Rpb24gPSBPdGhlck5ldXRyYWw7CisgICAgICAgICAg
ICAgICAgbV9kaXJlY3Rpb24gPSBVX09USEVSX05FVVRSQUw7CiAgICAgICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL3RleHQvU2VnbWVudGVkU3RyaW5nLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS90ZXh0L1NlZ21lbnRlZFN0cmluZy5oCmluZGV4IGFiZDc5OGFlY2ExN2E5NzYxZjJiMTFkNWVj
MTc5YmE1Yzc0MTg0MmMuLmQ1ZmUzNjdiMzI4OTBkMTIyNzg0NDUwNGQ2NzhjNTdmZmIyOWE5OWEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvU2VnbWVudGVkU3RyaW5n
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9TZWdtZW50ZWRTdHJpbmcuaApA
QCAtMjYxLDcgKzI2MSw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgYWR2YW5jZUFuZEFTU0VSVEln
bm9yaW5nQ2FzZShVQ2hhciBleHBlY3RlZENoYXJhY3RlcikKICAgICB7Ci0gICAgICAgIEFTU0VS
VF9VTlVTRUQoZXhwZWN0ZWRDaGFyYWN0ZXIsIFdURjo6VW5pY29kZTo6Zm9sZENhc2UoY3VycmVu
dENoYXIoKSkgPT0gV1RGOjpVbmljb2RlOjpmb2xkQ2FzZShleHBlY3RlZENoYXJhY3RlcikpOwor
ICAgICAgICBBU1NFUlRfVU5VU0VEKGV4cGVjdGVkQ2hhcmFjdGVyLCB1X2ZvbGRDYXNlKGN1cnJl
bnRDaGFyKCksIFVfRk9MRF9DQVNFX0RFRkFVTFQpID09IHVfZm9sZENhc2UoZXhwZWN0ZWRDaGFy
YWN0ZXIsIFVfRk9MRF9DQVNFX0RFRkFVTFQpKTsKICAgICAgICAgYWR2YW5jZSgpOwogICAgIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9UZXh0Qm91bmRhcmll
cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1RleHRCb3VuZGFyaWVzLmNwcApp
bmRleCBjMWY5OTJkYWYwMzIwYmQ2NmM3NWM1ZjcwNzdkM2Y1YWM1MmI4MjM5Li5jNDZmYjg1Zjk2
Yzg2NThmYmQ4OTM0N2Q5M2Q1MGIyYTAyOTY3ZDBjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS90ZXh0L1RleHRCb3VuZGFyaWVzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS90ZXh0L1RleHRCb3VuZGFyaWVzLmNwcApAQCAtMzEsOSArMzEsNiBAQAogI2luY2x1
ZGUgPHd0Zi90ZXh0L1N0cmluZ0ltcGwuaD4KICNpbmNsdWRlIDx3dGYvdW5pY29kZS9Vbmljb2Rl
Lmg+CiAKLXVzaW5nIG5hbWVzcGFjZSBXVEY7Ci11c2luZyBuYW1lc3BhY2UgVW5pY29kZTsKLQog
bmFtZXNwYWNlIFdlYkNvcmUgewogCiBpbnQgZW5kT2ZGaXJzdFdvcmRCb3VuZGFyeUNvbnRleHQo
Y29uc3QgVUNoYXIqIGNoYXJhY3RlcnMsIGludCBsZW5ndGgpCkBAIC02OSw5ICs2Niw4IEBAIGlu
dCBmaW5kTmV4dFdvcmRGcm9tSW5kZXgoY29uc3QgVUNoYXIqIGNoYXJzLCBpbnQgbGVuLCBpbnQg
cG9zaXRpb24sIGJvb2wgZm9yd2FyCiAgICAgaWYgKGZvcndhcmQpIHsKICAgICAgICAgcG9zaXRp
b24gPSB0ZXh0QnJlYWtGb2xsb3dpbmcoaXQsIHBvc2l0aW9uKTsKICAgICAgICAgd2hpbGUgKHBv
c2l0aW9uICE9IFRleHRCcmVha0RvbmUpIHsKLSAgICAgICAgICAgIC8vIFdlIHN0b3Agc2VhcmNo
aW5nIHdoZW4gdGhlIGNoYXJhY3RlciBwcmVjZWVkaW5nIHRoZSBicmVhawotICAgICAgICAgICAg
Ly8gaXMgYWxwaGFudW1lcmljLgotICAgICAgICAgICAgaWYgKHBvc2l0aW9uIDwgbGVuICYmIGlz
QWxwaGFudW1lcmljKGNoYXJzW3Bvc2l0aW9uIC0gMV0pKQorICAgICAgICAgICAgLy8gV2Ugc3Rv
cCBzZWFyY2hpbmcgd2hlbiB0aGUgY2hhcmFjdGVyIHByZWNlZWRpbmcgdGhlIGJyZWFrIGlzIGFs
cGhhbnVtZXJpYy4KKyAgICAgICAgICAgIGlmIChwb3NpdGlvbiA8IGxlbiAmJiB1X2lzYWxudW0o
Y2hhcnNbcG9zaXRpb24gLSAxXSkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIHBvc2l0aW9uOwog
CiAgICAgICAgICAgICBwb3NpdGlvbiA9IHRleHRCcmVha0ZvbGxvd2luZyhpdCwgcG9zaXRpb24p
OwpAQCAtODEsOSArNzcsOCBAQCBpbnQgZmluZE5leHRXb3JkRnJvbUluZGV4KGNvbnN0IFVDaGFy
KiBjaGFycywgaW50IGxlbiwgaW50IHBvc2l0aW9uLCBib29sIGZvcndhcgogICAgIH0gZWxzZSB7
CiAgICAgICAgIHBvc2l0aW9uID0gdGV4dEJyZWFrUHJlY2VkaW5nKGl0LCBwb3NpdGlvbik7CiAg
ICAgICAgIHdoaWxlIChwb3NpdGlvbiAhPSBUZXh0QnJlYWtEb25lKSB7Ci0gICAgICAgICAgICAv
LyBXZSBzdG9wIHNlYXJjaGluZyB3aGVuIHRoZSBjaGFyYWN0ZXIgZm9sbG93aW5nIHRoZSBicmVh
awotICAgICAgICAgICAgLy8gaXMgYWxwaGFudW1lcmljLgotICAgICAgICAgICAgaWYgKHBvc2l0
aW9uID4gMCAmJiBpc0FscGhhbnVtZXJpYyhjaGFyc1twb3NpdGlvbl0pKQorICAgICAgICAgICAg
Ly8gV2Ugc3RvcCBzZWFyY2hpbmcgd2hlbiB0aGUgY2hhcmFjdGVyIGZvbGxvd2luZyB0aGUgYnJl
YWsgaXMgYWxwaGFudW1lcmljLgorICAgICAgICAgICAgaWYgKHBvc2l0aW9uID4gMCAmJiB1X2lz
YWxudW0oY2hhcnNbcG9zaXRpb25dKSkKICAgICAgICAgICAgICAgICByZXR1cm4gcG9zaXRpb247
CiAKICAgICAgICAgICAgIHBvc2l0aW9uID0gdGV4dEJyZWFrUHJlY2VkaW5nKGl0LCBwb3NpdGlv
bik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1RleHRCb3VuZGFy
aWVzLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1RleHRCb3VuZGFyaWVzLmgKaW5k
ZXggMTIyZTBlODdjYjA5Y2NhM2E2ZWQ5ZDVkOTQzOWY1NjVlMmNlZTUzYi4uMTYzODZhN2E3ZTkw
OWZiMmZjMzhhNzFmZmQzNmIxMDUyZTUzNDM2YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vdGV4dC9UZXh0Qm91bmRhcmllcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL3RleHQvVGV4dEJvdW5kYXJpZXMuaApAQCAtMzAsMTIgKzMwLDE1IEBACiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAotICAgIC8vIEZJWE1FOiB0aGlzIGZ1bmN0aW9uIHdvbid0IGJlIG5lZWRl
ZCB0b2dldGhlciB3aXRoIHRoZSBmdW5jdGlvbgotICAgIC8vIGl0IGNhbGxzIHdoZW4gaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyMDY1NgotICAgIC8vIHdpbGwgYmUg
Zml4ZWQuCi0gICAgaW5saW5lIGJvb2wgcmVxdWlyZXNDb250ZXh0Rm9yV29yZEJvdW5kYXJ5KFVD
aGFyMzIgY2gpCisgICAgaW5saW5lIGJvb2wgcmVxdWlyZXNDb250ZXh0Rm9yV29yZEJvdW5kYXJ5
KFVDaGFyMzIgY2hhcmFjdGVyKQogICAgIHsKLSAgICAgICAgcmV0dXJuIFdURjo6VW5pY29kZTo6
cmVxdWlyZXNDb21wbGV4Q29udGV4dEZvcldvcmRCcmVha2luZyhjaCk7CisgICAgICAgIC8vIEZJ
WE1FOiBUaGlzIGZ1bmN0aW9uIHdvbid0IGJlIG5lZWRlZCB3aGVuIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjA2NTYgaXMgZml4ZWQuCisKKyAgICAgICAgLy8gV2Ug
Y2FuIGdldCByaWQgb2YgdGhpcyBjb25zdGFudCBpZiB3ZSByZXF1aXJlIGEgbmV3ZXIgdmVyc2lv
biBvZiB0aGUgSUNVIGhlYWRlcnMuCisgICAgICAgIGNvbnN0IGludCBXS19VX0xCX0NPTkRJVElP
TkFMX0pBUEFORVNFX1NUQVJURVIgPSAzNzsKKworICAgICAgICBpbnQgbGluZUJyZWFrID0gdV9n
ZXRJbnRQcm9wZXJ0eVZhbHVlKGNoYXJhY3RlciwgVUNIQVJfTElORV9CUkVBSyk7CisgICAgICAg
IHJldHVybiBsaW5lQnJlYWsgPT0gVV9MQl9DT01QTEVYX0NPTlRFWFQgfHwgbGluZUJyZWFrID09
IFdLX1VfTEJfQ09ORElUSU9OQUxfSkFQQU5FU0VfU1RBUlRFUiB8fCBsaW5lQnJlYWsgPT0gVV9M
Ql9JREVPR1JBUEhJQzsKICAgICB9CiAKICAgICBpbnQgZW5kT2ZGaXJzdFdvcmRCb3VuZGFyeUNv
bnRleHQoY29uc3QgVUNoYXIqIGNoYXJhY3RlcnMsIGludCBsZW5ndGgpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9tYWMvVGV4dEJvdW5kYXJpZXMubW0gYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L21hYy9UZXh0Qm91bmRhcmllcy5tbQppbmRleCBiZDdk
ZGY4YTBmODI4ZTU2NjNkYzRmYTIyYjdiYTQyMDgxNzMyM2Q1Li5mZjFkZmQyMGRjNTg0Zjg4YzYw
NjY4NmQ5YzUzNzUxZTA2ZGNhYzVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS90ZXh0L21hYy9UZXh0Qm91bmRhcmllcy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS90ZXh0L21hYy9UZXh0Qm91bmRhcmllcy5tbQpAQCAtMjYsOCArMjYsNiBAQAogI2ltcG9ydCAi
Y29uZmlnLmgiCiAjaW1wb3J0ICJUZXh0Qm91bmRhcmllcy5oIgogCi11c2luZyBuYW1lc3BhY2Ug
V1RGOjpVbmljb2RlOwotCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHZvaWQgZmluZFdvcmRCb3Vu
ZGFyeShjb25zdCBVQ2hhciogY2hhcnMsIGludCBsZW4sIGludCBwb3NpdGlvbiwgaW50KiBzdGFy
dCwgaW50KiBlbmQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vUG9w
dXBNZW51V2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9Qb3B1cE1lbnVXaW4u
Y3BwCmluZGV4IDhlOGJlNGY5OWY3Yzc3NThmYWRmNTgxN2U3YTJjMzAzMWUzYmM4NTkuLjA4NmZj
ODAyNWQxOGRjOThlMWE2NGU5NThmNjFiOTVjZmIyMDVjZTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL3dpbi9Qb3B1cE1lbnVXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL3dpbi9Qb3B1cE1lbnVXaW4uY3BwCkBAIC02NDcsNyArNjQ3LDcgQEAgdm9pZCBQ
b3B1cE1lbnVXaW46OnBhaW50KGNvbnN0IEludFJlY3QmIGRhbWFnZVJlY3QsIEhEQyBoZGMpCiAK
ICAgICAgICAgU3RyaW5nIGl0ZW1UZXh0ID0gY2xpZW50KCktPml0ZW1UZXh0KGluZGV4KTsKICAg
ICAgICAgICAgIAotICAgICAgICBUZXh0RGlyZWN0aW9uIGRpcmVjdGlvbiA9IChpdGVtVGV4dC5k
ZWZhdWx0V3JpdGluZ0RpcmVjdGlvbigpID09IFdURjo6VW5pY29kZTo6UmlnaHRUb0xlZnQpID8g
UlRMIDogTFRSOworICAgICAgICBUZXh0RGlyZWN0aW9uIGRpcmVjdGlvbiA9IChpdGVtVGV4dC5k
ZWZhdWx0V3JpdGluZ0RpcmVjdGlvbigpID09IFVfUklHSFRfVE9fTEVGVCkgPyBSVEwgOiBMVFI7
CiAgICAgICAgIFRleHRSdW4gdGV4dFJ1bihpdGVtVGV4dCwgMCwgMCwgVGV4dFJ1bjo6QWxsb3dU
cmFpbGluZ0V4cGFuc2lvbiwgZGlyZWN0aW9uKTsKIAogICAgICAgICBjb250ZXh0LnNldEZpbGxD
b2xvcihvcHRpb25UZXh0Q29sb3IsIENvbG9yU3BhY2VEZXZpY2VSR0IpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1dlYkNvcmVUZXh0UmVuZGVyZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1dlYkNvcmVUZXh0UmVuZGVyZXIuY3BwCmluZGV4IDkx
MmM4ZDY2N2NlZjgzY2MyN2NmNDczMjU5YzY1MjUzMmZhN2Y3NjEuLmY1NDBmZmJmMDIxOTdlNDFh
Nzc2M2JhYWZhZDg5NWJjZjQwMGVmM2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL3dpbi9XZWJDb3JlVGV4dFJlbmRlcmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS93aW4vV2ViQ29yZVRleHRSZW5kZXJlci5jcHAKQEAgLTQwLDggKzQwLDggQEAgc3RhdGlj
IGJvb2wgc2hvdWxkVXNlRm9udFNtb290aGluZyA9IHRydWU7CiBzdGF0aWMgYm9vbCBpc09uZUxl
ZnRUb1JpZ2h0UnVuKGNvbnN0IFRleHRSdW4mIHJ1bikKIHsKICAgICBmb3IgKGludCBpID0gMDsg
aSA8IHJ1bi5sZW5ndGgoKTsgaSsrKSB7Ci0gICAgICAgIFdURjo6VW5pY29kZTo6RGlyZWN0aW9u
IGRpcmVjdGlvbiA9IFdURjo6VW5pY29kZTo6ZGlyZWN0aW9uKHJ1bltpXSk7Ci0gICAgICAgIGlm
IChkaXJlY3Rpb24gPT0gV1RGOjpVbmljb2RlOjpSaWdodFRvTGVmdCB8fCBkaXJlY3Rpb24gPiBX
VEY6OlVuaWNvZGU6Ok90aGVyTmV1dHJhbCkKKyAgICAgICAgVUNoYXJEaXJlY3Rpb24gZGlyZWN0
aW9uID0gdV9jaGFyRGlyZWN0aW9uKHJ1bltpXSk7CisgICAgICAgIGlmIChkaXJlY3Rpb24gPT0g
VV9SSUdIVF9UT19MRUZUIHx8IGRpcmVjdGlvbiA+IFVfT1RIRVJfTkVVVFJBTCkKICAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAgICAgcmV0dXJuIHRydWU7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvQmlkaVJ1bi5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL0JpZGlSdW4uaAppbmRleCA5YmY4ZWQzOTQ3NWFmOGE1NWMzZThjMTZmZWJhZGRjNTI3NzY5
MDk4Li41ZjE0MDgyNjUyNjBlM2ExZTQ0NTRjNTRlOWJiMjczNmRhNWZmMzc5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvQmlkaVJ1bi5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9CaWRpUnVuLmgKQEAgLTM0LDcgKzM0LDcgQEAgY2xhc3MgQmlkaUNvbnRleHQ7
CiBjbGFzcyBJbmxpbmVCb3g7CiAKIHN0cnVjdCBCaWRpUnVuIDogQmlkaUNoYXJhY3RlclJ1biB7
Ci0gICAgQmlkaVJ1bihpbnQgc3RhcnQsIGludCBzdG9wLCBSZW5kZXJPYmplY3QqIG9iamVjdCwg
QmlkaUNvbnRleHQqIGNvbnRleHQsIFdURjo6VW5pY29kZTo6RGlyZWN0aW9uIGRpcikKKyAgICBC
aWRpUnVuKGludCBzdGFydCwgaW50IHN0b3AsIFJlbmRlck9iamVjdCogb2JqZWN0LCBCaWRpQ29u
dGV4dCogY29udGV4dCwgVUNoYXJEaXJlY3Rpb24gZGlyKQogICAgICAgICA6IEJpZGlDaGFyYWN0
ZXJSdW4oc3RhcnQsIHN0b3AsIGNvbnRleHQsIGRpcikKICAgICAgICAgLCBtX29iamVjdChvYmpl
Y3QpCiAgICAgICAgICwgbV9ib3goMCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9JbmxpbmVGbG93Qm94LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lRmxv
d0JveC5oCmluZGV4IDYzOTg5YTllYThlNDVlNDY5NTdlNjlhYzgzMWI0NzU0N2VmZGQ2MjkuLjhm
MzcyNzJlMDkxMmE3ZGJlNzlmYTQ3YzJiM2ZiYmMyYWZhNmYwNWEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVGbG93Qm94LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL0lubGluZUZsb3dCb3guaApAQCAtMzMyLDkgKzMzMiw5IEBAIHByb3RlY3RlZDoK
ICAgICB1bnNpZ25lZCBtX2hhc0Fubm90YXRpb25zQmVmb3JlIDogMTsKICAgICB1bnNpZ25lZCBt
X2hhc0Fubm90YXRpb25zQWZ0ZXIgOiAxOwogCi0gICAgdW5zaWduZWQgbV9saW5lQnJlYWtCaWRp
U3RhdHVzRW9yIDogNTsgLy8gV1RGOjpVbmljb2RlOjpEaXJlY3Rpb24KLSAgICB1bnNpZ25lZCBt
X2xpbmVCcmVha0JpZGlTdGF0dXNMYXN0U3Ryb25nIDogNTsgLy8gV1RGOjpVbmljb2RlOjpEaXJl
Y3Rpb24KLSAgICB1bnNpZ25lZCBtX2xpbmVCcmVha0JpZGlTdGF0dXNMYXN0IDogNTsgLy8gV1RG
OjpVbmljb2RlOjpEaXJlY3Rpb24KKyAgICB1bnNpZ25lZCBtX2xpbmVCcmVha0JpZGlTdGF0dXNF
b3IgOiA1OyAvLyBVQ2hhckRpcmVjdGlvbgorICAgIHVuc2lnbmVkIG1fbGluZUJyZWFrQmlkaVN0
YXR1c0xhc3RTdHJvbmcgOiA1OyAvLyBVQ2hhckRpcmVjdGlvbgorICAgIHVuc2lnbmVkIG1fbGlu
ZUJyZWFrQmlkaVN0YXR1c0xhc3QgOiA1OyAvLyBVQ2hhckRpcmVjdGlvbgogCiAgICAgLy8gRW5k
IG9mIFJvb3RJbmxpbmVCb3gtc3BlY2lmaWMgbWVtYmVycy4KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL0lubGluZUl0ZXJhdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvSW5saW5lSXRlcmF0b3IuaAppbmRleCA4ZWJhZTUzYjE0YTk4YjM4MGIxY2QzZGRkZDZm
Njc0NjY5MWNiZmVkLi40Y2M3ZTA1ZTQxNTIxYzcyODkwMjU4ZmVkZmU5N2QzN2YyM2Q3ZDdmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lSXRlcmF0b3IuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lSXRlcmF0b3IuaApAQCAtODgsNyArODgs
NyBAQCBwdWJsaWM6CiAgICAgVUNoYXIgY2hhcmFjdGVyQXQodW5zaWduZWQpIGNvbnN0OwogICAg
IFVDaGFyIGN1cnJlbnQoKSBjb25zdDsKICAgICBVQ2hhciBwcmV2aW91c0luU2FtZU5vZGUoKSBj
b25zdDsKLSAgICBBTFdBWVNfSU5MSU5FIFdURjo6VW5pY29kZTo6RGlyZWN0aW9uIGRpcmVjdGlv
bigpIGNvbnN0OworICAgIEFMV0FZU19JTkxJTkUgVUNoYXJEaXJlY3Rpb24gZGlyZWN0aW9uKCkg
Y29uc3Q7CiAKIHByaXZhdGU6CiAgICAgUmVuZGVyRWxlbWVudCogbV9yb290OwpAQCAtMTEwLDEy
ICsxMTAsMTIgQEAgaW5saW5lIGJvb2wgb3BlcmF0b3IhPShjb25zdCBJbmxpbmVJdGVyYXRvciYg
aXQxLCBjb25zdCBJbmxpbmVJdGVyYXRvciYgaXQyKQogICAgIHJldHVybiBpdDEubV9wb3MgIT0g
aXQyLm1fcG9zIHx8IGl0MS5tX29iaiAhPSBpdDIubV9vYmo7CiB9CiAKLXN0YXRpYyBpbmxpbmUg
V1RGOjpVbmljb2RlOjpEaXJlY3Rpb24gZW1iZWRDaGFyRnJvbURpcmVjdGlvbihUZXh0RGlyZWN0
aW9uIGRpciwgRVVuaWNvZGVCaWRpIHVuaWNvZGVCaWRpKQorc3RhdGljIGlubGluZSBVQ2hhckRp
cmVjdGlvbiBlbWJlZENoYXJGcm9tRGlyZWN0aW9uKFRleHREaXJlY3Rpb24gZGlyZWN0aW9uLCBF
VW5pY29kZUJpZGkgdW5pY29kZUJpZGkpCiB7CiAgICAgdXNpbmcgbmFtZXNwYWNlIFdURjo6VW5p
Y29kZTsKICAgICBpZiAodW5pY29kZUJpZGkgPT0gRW1iZWQpCi0gICAgICAgIHJldHVybiBkaXIg
PT0gUlRMID8gUmlnaHRUb0xlZnRFbWJlZGRpbmcgOiBMZWZ0VG9SaWdodEVtYmVkZGluZzsKLSAg
ICByZXR1cm4gZGlyID09IFJUTCA/IFJpZ2h0VG9MZWZ0T3ZlcnJpZGUgOiBMZWZ0VG9SaWdodE92
ZXJyaWRlOworICAgICAgICByZXR1cm4gZGlyZWN0aW9uID09IFJUTCA/IFVfUklHSFRfVE9fTEVG
VF9FTUJFRERJTkcgOiBVX0xFRlRfVE9fUklHSFRfRU1CRURESU5HOworICAgIHJldHVybiBkaXJl
Y3Rpb24gPT0gUlRMID8gVV9SSUdIVF9UT19MRUZUX09WRVJSSURFIDogVV9MRUZUX1RPX1JJR0hU
X09WRVJSSURFOwogfQogCiB0ZW1wbGF0ZSA8Y2xhc3MgT2JzZXJ2ZXI+CkBAIC0xNjEsNyArMTYx
LDcgQEAgc3RhdGljIGlubGluZSB2b2lkIG5vdGlmeU9ic2VydmVyV2lsbEV4aXRPYmplY3QoT2Jz
ZXJ2ZXIqIG9ic2VydmVyLCBSZW5kZXJPYmplY3QKIAogICAgIC8vIE90aGVyd2lzZSB3ZSBwb3Ag
YW55IGVtYmVkL292ZXJyaWRlIGNoYXJhY3RlciB3ZSBhZGRlZCB3aGVuIHdlIG9wZW5lZCB0aGlz
IHRhZy4KICAgICBpZiAoIW9ic2VydmVyLT5pbklzb2xhdGUoKSkKLSAgICAgICAgb2JzZXJ2ZXIt
PmVtYmVkKFdURjo6VW5pY29kZTo6UG9wRGlyZWN0aW9uYWxGb3JtYXQsIEZyb21TdHlsZU9yRE9N
KTsKKyAgICAgICAgb2JzZXJ2ZXItPmVtYmVkKFVfUE9QX0RJUkVDVElPTkFMX0ZPUk1BVCwgRnJv
bVN0eWxlT3JET00pOwogfQogCiBzdGF0aWMgaW5saW5lIGJvb2wgaXNJdGVyYXRvclRhcmdldChS
ZW5kZXJPYmplY3QqIG9iamVjdCkKQEAgLTM5MywxNSArMzkzLDE1IEBAIGlubGluZSBVQ2hhciBJ
bmxpbmVJdGVyYXRvcjo6cHJldmlvdXNJblNhbWVOb2RlKCkgY29uc3QKICAgICByZXR1cm4gY2hh
cmFjdGVyQXQobV9wb3MgLSAxKTsKIH0KIAotQUxXQVlTX0lOTElORSBXVEY6OlVuaWNvZGU6OkRp
cmVjdGlvbiBJbmxpbmVJdGVyYXRvcjo6ZGlyZWN0aW9uKCkgY29uc3QKK0FMV0FZU19JTkxJTkUg
VUNoYXJEaXJlY3Rpb24gSW5saW5lSXRlcmF0b3I6OmRpcmVjdGlvbigpIGNvbnN0CiB7Ci0gICAg
aWYgKFVDaGFyIGMgPSBjdXJyZW50KCkpCi0gICAgICAgIHJldHVybiBXVEY6OlVuaWNvZGU6OmRp
cmVjdGlvbihjKTsKKyAgICBpZiAoVUNoYXIgY2hhcmFjdGVyID0gY3VycmVudCgpKQorICAgICAg
ICByZXR1cm4gdV9jaGFyRGlyZWN0aW9uKGNoYXJhY3Rlcik7CiAKICAgICBpZiAobV9vYmogJiYg
bV9vYmotPmlzTGlzdE1hcmtlcigpKQotICAgICAgICByZXR1cm4gbV9vYmotPnN0eWxlKCktPmlz
TGVmdFRvUmlnaHREaXJlY3Rpb24oKSA/IFdURjo6VW5pY29kZTo6TGVmdFRvUmlnaHQgOiBXVEY6
OlVuaWNvZGU6OlJpZ2h0VG9MZWZ0OworICAgICAgICByZXR1cm4gbV9vYmotPnN0eWxlKCktPmlz
TGVmdFRvUmlnaHREaXJlY3Rpb24oKSA/IFVfTEVGVF9UT19SSUdIVCA6IFVfUklHSFRfVE9fTEVG
VDsKIAotICAgIHJldHVybiBXVEY6OlVuaWNvZGU6Ok90aGVyTmV1dHJhbDsKKyAgICByZXR1cm4g
VV9PVEhFUl9ORVVUUkFMOwogfQogCiB0ZW1wbGF0ZTw+CkBAIC00NzcsNyArNDc3LDcgQEAgcHVi
bGljOgogICAgIGJvb2wgaW5Jc29sYXRlKCkgY29uc3QgeyByZXR1cm4gbV9uZXN0ZWRJc29sYXRl
Q291bnQ7IH0KIAogICAgIC8vIFdlIGRvbid0IGNhcmUgaWYgd2UgZW5jb3VudGVyIGJpZGkgZGly
ZWN0aW9uYWwgb3ZlcnJpZGVzLgotICAgIHZvaWQgZW1iZWQoV1RGOjpVbmljb2RlOjpEaXJlY3Rp
b24sIEJpZGlFbWJlZGRpbmdTb3VyY2UpIHsgfQorICAgIHZvaWQgZW1iZWQoVUNoYXJEaXJlY3Rp
b24sIEJpZGlFbWJlZGRpbmdTb3VyY2UpIHsgfQogICAgIHZvaWQgY29tbWl0RXhwbGljaXRFbWJl
ZGRpbmcoKSB7IH0KIAogICAgIHZvaWQgYWRkRmFrZVJ1bklmTmVjZXNzYXJ5KFJlbmRlck9iamVj
dCogb2JqLCB1bnNpZ25lZCBwb3MsIElubGluZUJpZGlSZXNvbHZlciYgcmVzb2x2ZXIpCkBAIC01
NDQsOCArNTQ0LDggQEAgaW5saW5lIHZvaWQgSW5saW5lQmlkaVJlc29sdmVyOjphcHBlbmRSdW4o
KQogICAgICAgICBtX3NvciA9IG1fZW9yOwogICAgIH0KIAotICAgIG1fZGlyZWN0aW9uID0gV1RG
OjpVbmljb2RlOjpPdGhlck5ldXRyYWw7Ci0gICAgbV9zdGF0dXMuZW9yID0gV1RGOjpVbmljb2Rl
OjpPdGhlck5ldXRyYWw7CisgICAgbV9kaXJlY3Rpb24gPSBVX09USEVSX05FVVRSQUw7CisgICAg
bV9zdGF0dXMuZW9yID0gVV9PVEhFUl9ORVVUUkFMOwogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckJsb2NrLmNwcAppbmRleCBmMjc5MzU1YTg0OTE3NTQ0ZDljYWZjM2E5OWMw
OTIzMjNkZTQwNWRjLi4wYWU3NWU1YjA2YzM2NDI1NjM1OWIyOWE1YjM2NzRlYzg5YTc2NGM0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5jcHAKQEAgLTQ5NTIsMTIgKzQ5
NTIsNyBAQCBzdGF0aWMgUmVuZGVyU3R5bGUqIHN0eWxlRm9yRmlyc3RMZXR0ZXIoUmVuZGVyT2Jq
ZWN0KiBmaXJzdExldHRlckJsb2NrLCBSZW5kZXJPYgogLy8gImluaXRpYWwiIChQaSkuICJmaW5h
bCIgKFBmKSBhbmQgIm90aGVyIiAoUG8pIHB1bmN0dWF0aW9uIGNsYXNzZXMpLCB0aGF0IHByZWNl
ZGVzIG9yIGZvbGxvd3MgdGhlIGZpcnN0IGxldHRlciBzaG91bGQgYmUgaW5jbHVkZWQiCiBzdGF0
aWMgaW5saW5lIGJvb2wgaXNQdW5jdHVhdGlvbkZvckZpcnN0TGV0dGVyKFVDaGFyIGMpCiB7Ci0g
ICAgQ2hhckNhdGVnb3J5IGNoYXJDYXRlZ29yeSA9IGNhdGVnb3J5KGMpOwotICAgIHJldHVybiBj
aGFyQ2F0ZWdvcnkgPT0gUHVuY3R1YXRpb25fT3BlbgotICAgICAgICB8fCBjaGFyQ2F0ZWdvcnkg
PT0gUHVuY3R1YXRpb25fQ2xvc2UKLSAgICAgICAgfHwgY2hhckNhdGVnb3J5ID09IFB1bmN0dWF0
aW9uX0luaXRpYWxRdW90ZQotICAgICAgICB8fCBjaGFyQ2F0ZWdvcnkgPT0gUHVuY3R1YXRpb25f
RmluYWxRdW90ZQotICAgICAgICB8fCBjaGFyQ2F0ZWdvcnkgPT0gUHVuY3R1YXRpb25fT3RoZXI7
CisgICAgcmV0dXJuIFVfR0VUX0dDX01BU0soYykgJiAoVV9HQ19QU19NQVNLIHwgVV9HQ19QRV9N
QVNLIHwgVV9HQ19QSV9NQVNLIHwgVV9HQ19QRl9NQVNLIHwgVV9HQ19QT19NQVNLKTsKIH0KIAog
c3RhdGljIGlubGluZSBib29sIHNob3VsZFNraXBGb3JGaXJzdExldHRlcihVQ2hhciBjKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrTGluZUxheW91dC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2tMaW5lTGF5b3V0LmNwcApp
bmRleCBhNjg0YmVhNDY2OWY3MjI2M2JjY2Y0YjljYzNlOTc0ODZkODQ1YzE3Li40OGU4ZDVhNDJh
YWEyNDkwZjNhMDI2Zjc4MGExMzFmN2UzMDY0MjI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2tMaW5lTGF5b3V0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2tMaW5lTGF5b3V0LmNwcApAQCAtMTc4LDEyICsxNzgsMTIg
QEAgc3RhdGljIHZvaWQgZGV0ZXJtaW5lRGlyZWN0aW9uYWxpdHkoVGV4dERpcmVjdGlvbiYgZGly
LCBJbmxpbmVJdGVyYXRvciBpdGVyKQogICAgICAgICBpZiAoaXRlci5hdFBhcmFncmFwaFNlcGFy
YXRvcigpKQogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICBpZiAoVUNoYXIgY3VycmVudCA9
IGl0ZXIuY3VycmVudCgpKSB7Ci0gICAgICAgICAgICBEaXJlY3Rpb24gY2hhckRpcmVjdGlvbiA9
IGRpcmVjdGlvbihjdXJyZW50KTsKLSAgICAgICAgICAgIGlmIChjaGFyRGlyZWN0aW9uID09IExl
ZnRUb1JpZ2h0KSB7CisgICAgICAgICAgICBVQ2hhckRpcmVjdGlvbiBjaGFyRGlyZWN0aW9uID0g
dV9jaGFyRGlyZWN0aW9uKGN1cnJlbnQpOworICAgICAgICAgICAgaWYgKGNoYXJEaXJlY3Rpb24g
PT0gVV9MRUZUX1RPX1JJR0hUKSB7CiAgICAgICAgICAgICAgICAgZGlyID0gTFRSOwogICAgICAg
ICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGlmIChjaGFyRGly
ZWN0aW9uID09IFJpZ2h0VG9MZWZ0IHx8IGNoYXJEaXJlY3Rpb24gPT0gUmlnaHRUb0xlZnRBcmFi
aWMpIHsKKyAgICAgICAgICAgIGlmIChjaGFyRGlyZWN0aW9uID09IFVfUklHSFRfVE9fTEVGVCB8
fCBjaGFyRGlyZWN0aW9uID09IFVfUklHSFRfVE9fTEVGVF9BUkFCSUMpIHsKICAgICAgICAgICAg
ICAgICBkaXIgPSBSVEw7CiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgfQpA
QCAtMTA1MSw3ICsxMDUxLDcgQEAgaW5saW5lIEJpZGlSdW4qIFJlbmRlckJsb2NrRmxvdzo6aGFu
ZGxlVHJhaWxpbmdTcGFjZXMoQmlkaVJ1bkxpc3Q8QmlkaVJ1bj4mIGJpZGkKICAgICAgICAgd2hp
bGUgKEJpZGlDb250ZXh0KiBwYXJlbnQgPSBiYXNlQ29udGV4dC0+cGFyZW50KCkpCiAgICAgICAg
ICAgICBiYXNlQ29udGV4dCA9IHBhcmVudDsKIAotICAgICAgICBCaWRpUnVuKiBuZXdUcmFpbGlu
Z1J1biA9IG5ldyAocmVuZGVyQXJlbmEoKSkgQmlkaVJ1bihmaXJzdFNwYWNlLCB0cmFpbGluZ1Nw
YWNlUnVuLT5tX3N0b3AsIHRyYWlsaW5nU3BhY2VSdW4tPm1fb2JqZWN0LCBiYXNlQ29udGV4dCwg
T3RoZXJOZXV0cmFsKTsKKyAgICAgICAgQmlkaVJ1biogbmV3VHJhaWxpbmdSdW4gPSBuZXcgKHJl
bmRlckFyZW5hKCkpIEJpZGlSdW4oZmlyc3RTcGFjZSwgdHJhaWxpbmdTcGFjZVJ1bi0+bV9zdG9w
LCB0cmFpbGluZ1NwYWNlUnVuLT5tX29iamVjdCwgYmFzZUNvbnRleHQsIFVfT1RIRVJfTkVVVFJB
TCk7CiAgICAgICAgIHRyYWlsaW5nU3BhY2VSdW4tPm1fc3RvcCA9IGZpcnN0U3BhY2U7CiAgICAg
ICAgIGlmIChkaXJlY3Rpb24gPT0gTFRSKQogICAgICAgICAgICAgYmlkaVJ1bnMuYWRkUnVuKG5l
d1RyYWlsaW5nUnVuKTsKQEAgLTEwODMsNyArMTA4Myw3IEBAIHZvaWQgUmVuZGVyQmxvY2tGbG93
OjphcHBlbmRGbG9hdGluZ09iamVjdFRvTGFzdExpbmUoRmxvYXRpbmdPYmplY3QqIGZsb2F0aW5n
T2JqCiAvLyBGSVhNRTogVGhpcyBzaG91bGQgYmUgYSBCaWRpU3RhdHVzIGNvbnN0cnVjdG9yIG9y
IGNyZWF0ZSBtZXRob2QuCiBzdGF0aWMgaW5saW5lIEJpZGlTdGF0dXMgc3RhdHVzV2l0aERpcmVj
dGlvbihUZXh0RGlyZWN0aW9uIHRleHREaXJlY3Rpb24sIGJvb2wgaXNPdmVycmlkZSkKIHsKLSAg
ICBXVEY6OlVuaWNvZGU6OkRpcmVjdGlvbiBkaXJlY3Rpb24gPSB0ZXh0RGlyZWN0aW9uID09IExU
UiA/IExlZnRUb1JpZ2h0IDogUmlnaHRUb0xlZnQ7CisgICAgVUNoYXJEaXJlY3Rpb24gZGlyZWN0
aW9uID0gdGV4dERpcmVjdGlvbiA9PSBMVFIgPyBVX0xFRlRfVE9fUklHSFQgOiBVX1JJR0hUX1RP
X0xFRlQ7CiAgICAgUmVmUHRyPEJpZGlDb250ZXh0PiBjb250ZXh0ID0gQmlkaUNvbnRleHQ6OmNy
ZWF0ZSh0ZXh0RGlyZWN0aW9uID09IExUUiA/IDAgOiAxLCBkaXJlY3Rpb24sIGlzT3ZlcnJpZGUs
IEZyb21TdHlsZU9yRE9NKTsKIAogICAgIC8vIFRoaXMgY29waWVzIEJpZGlTdGF0dXMgYW5kIG1h
eSBjaHVybiB0aGUgcmVmIG9uIEJpZGlDb250ZXh0LiBJIGRvdWJ0IGl0IG1hdHRlcnMuCkBAIC0z
MTMyLDcgKzMxMzIsNyBAQCBJbmxpbmVJdGVyYXRvciBMaW5lQnJlYWtlcjo6bmV4dFNlZ21lbnRC
cmVhayhJbmxpbmVCaWRpUmVzb2x2ZXImIHJlc29sdmVyLCBMaW5lSQogICAgICAgICAgICAgICAg
ICAgICAgICAgYnJlYWtXb3JkcyA9IGZhbHNlOwogICAgICAgICAgICAgICAgICAgICB9CiAKLSAg
ICAgICAgICAgICAgICAgICAgaWYgKG1pZFdvcmRCcmVhayAmJiAhVTE2X0lTX1RSQUlMKGMpICYm
ICEoY2F0ZWdvcnkoYykgJiAoTWFya19Ob25TcGFjaW5nIHwgTWFya19FbmNsb3NpbmcgfCBNYXJr
X1NwYWNpbmdDb21iaW5pbmcpKSkgeworICAgICAgICAgICAgICAgICAgICBpZiAobWlkV29yZEJy
ZWFrICYmICFVMTZfSVNfVFJBSUwoYykgJiYgIShVX0dFVF9HQ19NQVNLKGMpICYgVV9HQ19NX01B
U0spKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAvLyBSZW1lbWJlciB0aGlzIGFzIGEgYnJl
YWthYmxlIHBvc2l0aW9uIGluIGNhc2UKICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGFkZGlu
ZyB0aGUgZW5kIHdpZHRoIGZvcmNlcyBhIGJyZWFrLgogICAgICAgICAgICAgICAgICAgICAgICAg
bEJyZWFrLm1vdmVUbyhjdXJyZW50Lm1fb2JqLCBjdXJyZW50Lm1fcG9zLCBjdXJyZW50Lm1fbmV4
dEJyZWFrYWJsZVBvc2l0aW9uKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJMaXN0TWFya2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJM
aXN0TWFya2VyLmNwcAppbmRleCA5YzU5YmJjMjJlNzNiZDc5MjYxNTMyZmQxNTQwMjc5OGQwM2Qx
MmY1Li5lM2EyOWEzZTEwMWMyYTQyZTNkZWU3NmRmZmU3NzZmZWZiYzQyMTEzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGlzdE1hcmtlci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpc3RNYXJrZXIuY3BwCkBAIC0xMzU2LDggKzEz
NTYsOCBAQCB2b2lkIFJlbmRlckxpc3RNYXJrZXI6OnBhaW50KFBhaW50SW5mbyYgcGFpbnRJbmZv
LCBjb25zdCBMYXlvdXRQb2ludCYgcGFpbnRPZmZzZQogICAgICAgICBjb250ZXh0LT5kcmF3VGV4
dChmb250LCB0ZXh0UnVuLCB0ZXh0T3JpZ2luKTsKICAgICBlbHNlIHsKICAgICAgICAgLy8gVGV4
dCBpcyBub3QgYXJiaXRyYXJ5LiBXZSBjYW4ganVkZ2Ugd2hldGhlciBpdCdzIFJUTCBmcm9tIHRo
ZSBmaXJzdCBjaGFyYWN0ZXIsCi0gICAgICAgIC8vIGFuZCB3ZSBvbmx5IG5lZWQgdG8gaGFuZGxl
IHRoZSBkaXJlY3Rpb24gUmlnaHRUb0xlZnQgZm9yIG5vdy4KLSAgICAgICAgYm9vbCB0ZXh0TmVl
ZHNSZXZlcnNpbmcgPSBkaXJlY3Rpb24obV90ZXh0WzBdKSA9PSBSaWdodFRvTGVmdDsKKyAgICAg
ICAgLy8gYW5kIHdlIG9ubHkgbmVlZCB0byBoYW5kbGUgdGhlIGRpcmVjdGlvbiBVX1JJR0hUX1RP
X0xFRlQgZm9yIG5vdy4KKyAgICAgICAgYm9vbCB0ZXh0TmVlZHNSZXZlcnNpbmcgPSB1X2NoYXJE
aXJlY3Rpb24obV90ZXh0WzBdKSA9PSBVX1JJR0hUX1RPX0xFRlQ7CiAgICAgICAgIFN0cmluZ0J1
aWxkZXIgcmV2ZXJzZWRUZXh0OwogICAgICAgICBpZiAodGV4dE5lZWRzUmV2ZXJzaW5nKSB7CiAg
ICAgICAgICAgICBpbnQgbGVuZ3RoID0gbV90ZXh0Lmxlbmd0aCgpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck1lbnVMaXN0LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJNZW51TGlzdC5jcHAKaW5kZXggMTcyOWI3NTYxYTBkMDBhNTc4NGM2
ZWZkY2E3OTcxZTQzNjNhMzgwYS4uZWNkZDUyZDgyMDJkNjhhMDkxZWYxMjQ3NjJmNDFkMzU4ODg3
NmJmZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck1lbnVMaXN0
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTWVudUxpc3QuY3BwCkBA
IC0xMTgsNyArMTE4LDcgQEAgdm9pZCBSZW5kZXJNZW51TGlzdDo6YWRqdXN0SW5uZXJTdHlsZSgp
CiAgICAgICAgIC8vIEl0ZW1zIGluIHRoZSBwb3B1cCB3aWxsIG5vdCByZXNwZWN0IHRoZSBDU1Mg
dGV4dC1hbGlnbiBhbmQgZGlyZWN0aW9uIHByb3BlcnRpZXMsCiAgICAgICAgIC8vIHNvIHdlIG11
c3QgYWRqdXN0IG91ciBvd24gc3R5bGUgdG8gbWF0Y2guCiAgICAgICAgIGlubmVyU3R5bGUtPnNl
dFRleHRBbGlnbihMRUZUKTsKLSAgICAgICAgVGV4dERpcmVjdGlvbiBkaXJlY3Rpb24gPSAobV9i
dXR0b25UZXh0ICYmIG1fYnV0dG9uVGV4dC0+dGV4dCgpLT5kZWZhdWx0V3JpdGluZ0RpcmVjdGlv
bigpID09IFdURjo6VW5pY29kZTo6UmlnaHRUb0xlZnQpID8gUlRMIDogTFRSOworICAgICAgICBU
ZXh0RGlyZWN0aW9uIGRpcmVjdGlvbiA9IChtX2J1dHRvblRleHQgJiYgbV9idXR0b25UZXh0LT50
ZXh0KCktPmRlZmF1bHRXcml0aW5nRGlyZWN0aW9uKCkgPT0gVV9SSUdIVF9UT19MRUZUKSA/IFJU
TCA6IExUUjsKICAgICAgICAgaW5uZXJTdHlsZS0+c2V0RGlyZWN0aW9uKGRpcmVjdGlvbik7CiAg
ICAgfSBlbHNlIGlmIChtX29wdGlvblN0eWxlICYmIGRvY3VtZW50KCkucGFnZSgpLT5jaHJvbWUo
KS5zZWxlY3RJdGVtQWxpZ25tZW50Rm9sbG93c01lbnVXcml0aW5nRGlyZWN0aW9uKCkpIHsKICAg
ICAgICAgaWYgKChtX29wdGlvblN0eWxlLT5kaXJlY3Rpb24oKSAhPSBpbm5lclN0eWxlLT5kaXJl
Y3Rpb24oKSB8fCBtX29wdGlvblN0eWxlLT51bmljb2RlQmlkaSgpICE9IGlubmVyU3R5bGUtPnVu
aWNvZGVCaWRpKCkpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
clRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHQuY3BwCmluZGV4
IDUyYjZkODhhMzhiYzg0M2I3NmYwZTM5ZjE4OGYyMmZjMWNjODc3MDUuLmI1NDg3ZWY0MTUwNDcy
NTc4MDA3NmQzMmRkZGJiNzk4ZjVhYWQxZmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJUZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyVGV4dC5jcHAKQEAgLTk5LDYgKzk5LDggQEAgcHJpdmF0ZToKIAogc3RhdGljIHZvaWQgbWFr
ZUNhcGl0YWxpemVkKFN0cmluZyogc3RyaW5nLCBVQ2hhciBwcmV2aW91cykKIHsKKyAgICAvLyBG
SVhNRTogTmVlZCB0byBjaGFuZ2UgdGhpcyB0byB1c2UgdV9zdHJUb1RpdGxlIGluc3RlYWQgb2Yg
dV90b3RpdGxlIGFuZCB0byBjb25zaWRlciBsb2NhbGUuCisKICAgICBpZiAoc3RyaW5nLT5pc051
bGwoKSkKICAgICAgICAgcmV0dXJuOwogCkBAIC0xMjksNyArMTMxLDcgQEAgc3RhdGljIHZvaWQg
bWFrZUNhcGl0YWxpemVkKFN0cmluZyogc3RyaW5nLCBVQ2hhciBwcmV2aW91cykKICAgICBpbnQz
Ml90IHN0YXJ0T2ZXb3JkID0gdGV4dEJyZWFrRmlyc3QoYm91bmRhcnkpOwogICAgIGZvciAoZW5k
T2ZXb3JkID0gdGV4dEJyZWFrTmV4dChib3VuZGFyeSk7IGVuZE9mV29yZCAhPSBUZXh0QnJlYWtE
b25lOyBzdGFydE9mV29yZCA9IGVuZE9mV29yZCwgZW5kT2ZXb3JkID0gdGV4dEJyZWFrTmV4dChi
b3VuZGFyeSkpIHsKICAgICAgICAgaWYgKHN0YXJ0T2ZXb3JkKSAvLyBJZ25vcmUgZmlyc3QgY2hh
ciBvZiBwcmV2aW91cyBzdHJpbmcKLSAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoc3RyaW5nSW1w
bFtzdGFydE9mV29yZCAtIDFdID09IG5vQnJlYWtTcGFjZSA/IG5vQnJlYWtTcGFjZSA6IHRvVGl0
bGVDYXNlKHN0cmluZ1dpdGhQcmV2aW91c1tzdGFydE9mV29yZF0pKTsKKyAgICAgICAgICAgIHJl
c3VsdC5hcHBlbmQoc3RyaW5nSW1wbFtzdGFydE9mV29yZCAtIDFdID09IG5vQnJlYWtTcGFjZSA/
IG5vQnJlYWtTcGFjZSA6IHVfdG90aXRsZShzdHJpbmdXaXRoUHJldmlvdXNbc3RhcnRPZldvcmRd
KSk7CiAgICAgICAgIGZvciAoaW50IGkgPSBzdGFydE9mV29yZCArIDE7IGkgPCBlbmRPZldvcmQ7
IGkrKykKICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoc3RyaW5nSW1wbFtpIC0gMV0pOwogICAg
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9Sb290SW5saW5lQm94LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9Sb290SW5saW5lQm94LmNwcAppbmRleCBhYjI1
M2QyMjY0ZTdiM2RkMjBhYmUzYmRmNGQwYmZhNDA2MzM1YzVlLi5kZTcyYWQ0ODgxZDg5NzljNWQz
ZDExOTI5MTA2ZWEzNGI4MzkwYmEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUm9vdElubGluZUJveC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jvb3RJ
bmxpbmVCb3guY3BwCkBAIC03NTUsNyArNzU1LDcgQEAgSW5saW5lQm94KiBSb290SW5saW5lQm94
OjpjbG9zZXN0TGVhZkNoaWxkRm9yTG9naWNhbExlZnRQb3NpdGlvbihpbnQgbGVmdFBvc2l0aW8K
IAogQmlkaVN0YXR1cyBSb290SW5saW5lQm94OjpsaW5lQnJlYWtCaWRpU3RhdHVzKCkgY29uc3QK
IHsgCi0gICAgcmV0dXJuIEJpZGlTdGF0dXMoc3RhdGljX2Nhc3Q8V1RGOjpVbmljb2RlOjpEaXJl
Y3Rpb24+KG1fbGluZUJyZWFrQmlkaVN0YXR1c0VvciksIHN0YXRpY19jYXN0PFdURjo6VW5pY29k
ZTo6RGlyZWN0aW9uPihtX2xpbmVCcmVha0JpZGlTdGF0dXNMYXN0U3Ryb25nKSwgc3RhdGljX2Nh
c3Q8V1RGOjpVbmljb2RlOjpEaXJlY3Rpb24+KG1fbGluZUJyZWFrQmlkaVN0YXR1c0xhc3QpLCBt
X2xpbmVCcmVha0NvbnRleHQpOworICAgIHJldHVybiBCaWRpU3RhdHVzKHN0YXRpY19jYXN0PFVD
aGFyRGlyZWN0aW9uPihtX2xpbmVCcmVha0JpZGlTdGF0dXNFb3IpLCBzdGF0aWNfY2FzdDxVQ2hh
ckRpcmVjdGlvbj4obV9saW5lQnJlYWtCaWRpU3RhdHVzTGFzdFN0cm9uZyksIHN0YXRpY19jYXN0
PFVDaGFyRGlyZWN0aW9uPihtX2xpbmVCcmVha0JpZGlTdGF0dXNMYXN0KSwgbV9saW5lQnJlYWtD
b250ZXh0KTsKIH0KIAogdm9pZCBSb290SW5saW5lQm94OjpzZXRMaW5lQnJlYWtJbmZvKFJlbmRl
ck9iamVjdCogb2JqLCB1bnNpZ25lZCBicmVha1BvcywgY29uc3QgQmlkaVN0YXR1cyYgc3RhdHVz
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZvbnREYXRhLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdGb250RGF0YS5jcHAKaW5kZXggYjNiZWQ4Y2VhNTFjYTg1YWMxNzk2
Njc1OTNhZjk1Y2UzZmI0MGQxNy4uYmRmNTBjMjZkOGM2YjBjNTI0Yzg0ZjliMGU0N2I2NTZkZGJj
ZWEyNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZvbnREYXRhLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRm9udERhdGEuY3BwCkBAIC0yOTcsNyArMjk3LDcgQEAg
U3RyaW5nIFNWR0ZvbnREYXRhOjpjcmVhdGVTdHJpbmdXaXRoTWlycm9yZWRDaGFyYWN0ZXJzKGNv
bnN0IFVDaGFyKiBjaGFyYWN0ZXJzLAogICAgIHdoaWxlIChpIDwgbGVuZ3RoKSB7CiAgICAgICAg
IFVDaGFyMzIgY2hhcmFjdGVyOwogICAgICAgICBVMTZfTkVYVChjaGFyYWN0ZXJzLCBpLCBsZW5n
dGgsIGNoYXJhY3Rlcik7Ci0gICAgICAgIG1pcnJvcmVkQ2hhcmFjdGVycy5hcHBlbmQobWlycm9y
ZWRDaGFyKGNoYXJhY3RlcikpOworICAgICAgICBtaXJyb3JlZENoYXJhY3RlcnMuYXBwZW5kKHVf
Y2hhck1pcnJvcihjaGFyYWN0ZXIpKTsKICAgICB9CiAKICAgICByZXR1cm4gbWlycm9yZWRDaGFy
YWN0ZXJzLnRvU3RyaW5nKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS94bWwvWFBhdGhQ
YXJzZXIuY3BwIGIvU291cmNlL1dlYkNvcmUveG1sL1hQYXRoUGFyc2VyLmNwcAppbmRleCA4MjY5
ODViZTRjM2Y3NGJiNDRhZjRkNmJjZDIyNzk5MGJkODYwNTY5Li4xMzYxZmI5NjU5NzM4OGI5YWQ4
MTM2ZjBhYzdkOTA4YzIyYzE5YWY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS94bWwvWFBh
dGhQYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3htbC9YUGF0aFBhcnNlci5jcHAKQEAg
LTY0LDIwICs2NCwxNyBAQCBzdHJ1Y3QgUGFyc2VyOjpUb2tlbiB7CiAKIGVudW0gWE1MQ2F0IHsg
TmFtZVN0YXJ0LCBOYW1lQ29udCwgTm90UGFydE9mTmFtZSB9OwogCi1zdGF0aWMgWE1MQ2F0IGNo
YXJDYXQoVUNoYXIgYUNoYXIpCitzdGF0aWMgWE1MQ2F0IGNoYXJDYXQoVUNoYXIgY2hhcmFjdGVy
KQogewotICAgIHVzaW5nIG5hbWVzcGFjZSBXVEY7Ci0gICAgdXNpbmcgbmFtZXNwYWNlIFVuaWNv
ZGU7Ci0KLSAgICBpZiAoYUNoYXIgPT0gJ18nKQorICAgIGlmIChjaGFyYWN0ZXIgPT0gJ18nKQog
ICAgICAgICByZXR1cm4gTmFtZVN0YXJ0OwogCi0gICAgaWYgKGFDaGFyID09ICcuJyB8fCBhQ2hh
ciA9PSAnLScpCisgICAgaWYgKGNoYXJhY3RlciA9PSAnLicgfHwgY2hhcmFjdGVyID09ICctJykK
ICAgICAgICAgcmV0dXJuIE5hbWVDb250OwotICAgIENoYXJDYXRlZ29yeSBjYXRlZ29yeSA9IFVu
aWNvZGU6OmNhdGVnb3J5KGFDaGFyKTsKLSAgICBpZiAoY2F0ZWdvcnkgJiAoTGV0dGVyX1VwcGVy
Y2FzZSB8IExldHRlcl9Mb3dlcmNhc2UgfCBMZXR0ZXJfT3RoZXIgfCBMZXR0ZXJfVGl0bGVjYXNl
IHwgTnVtYmVyX0xldHRlcikpCisgICAgdW5zaWduZWQgY2hhcmFjdGVyVHlwZU1hc2sgPSBVX0dF
VF9HQ19NQVNLKGNoYXJhY3Rlcik7CisgICAgaWYgKGNoYXJhY3RlclR5cGVNYXNrICYgKFVfR0Nf
TFVfTUFTSyB8IFVfR0NfTExfTUFTSyB8IFVfR0NfTE9fTUFTSyB8IFVfR0NfTFRfTUFTSyB8IFVf
R0NfTkxfTUFTSykpCiAgICAgICAgIHJldHVybiBOYW1lU3RhcnQ7Ci0gICAgaWYgKGNhdGVnb3J5
ICYgKE1hcmtfTm9uU3BhY2luZyB8IE1hcmtfU3BhY2luZ0NvbWJpbmluZyB8IE1hcmtfRW5jbG9z
aW5nIHwgTGV0dGVyX01vZGlmaWVyIHwgTnVtYmVyX0RlY2ltYWxEaWdpdCkpCisgICAgaWYgKGNo
YXJhY3RlclR5cGVNYXNrICYgKFVfR0NfTV9NQVNLIHwgVV9HQ19MTV9NQVNLIHwgVV9HQ19ORF9N
QVNLKSkKICAgICAgICAgcmV0dXJuIE5hbWVDb250OwogICAgIHJldHVybiBOb3RQYXJ0T2ZOYW1l
OwogfQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>214044</attachid>
            <date>2013-10-11 19:33:23 -0700</date>
            <delta_ts>2013-10-11 19:33:23 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-122635-20131011193322.patch</filename>
            <type>text/plain</type>
            <size>141127</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTU3MzI5CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA4
OGU4MDIzYmQwZmYyZTg4Mjg1NDg2NWQ1NzYxNDkwNGZkY2NkY2NhLi4wODg0MjAwMWJjN2NjNTVi
YTI4OTAwZTNmOTdlNTFjZjY1YjZlZTkyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwzMSBAQAorMjAxMy0xMC0xMSAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CisK
KyAgICAgICAgQ2hhbmdlIG1vc3QgY2FsbCBzaXRlcyB0byBjYWxsIElDVSBkaXJlY3RseSBpbnN0
ZWFkIG9mIHRocm91Z2ggV1RGOjpVbmljb2RlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xMjI2MzUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICAqIHBhcnNlci9MZXhlci5jcHA6CisgICAgICAgIChKU0M6Omlz
Tm9uTGF0aW4xSWRlbnRTdGFydCk6IFRha2UgYSBVQ2hhciBzaW5jZSB0aGF0J3Mgd2hhdCB0aGUg
b25seSBjYWxsZXIgd2FudHMgdG8gcGFzcy4KKyAgICAgICAgVXNlIFVfR0VUX0dDX01BU0sgaW5z
dGVhZCBvZiBXVEY6OlVuaWNvZGU6OmNhdGVnb3J5LgorICAgICAgICAoSlNDOjppc05vbkxhdGlu
MUlkZW50UGFydCk6IERpdHRvLgorCisgICAgICAgICogcGFyc2VyL0xleGVyLmg6CisgICAgICAg
IChKU0M6OkxleGVyOjppc1doaXRlU3BhY2UpOiBVc2UgdV9jaGFyVHlwZSBpbnN0ZWFkIG9mIFdU
Rjo6VW5pY29kZTo6aXNTZXBhcmF0b3JTcGFjZS4KKworICAgICAgICAqIHJ1bnRpbWUvSlNGdW5j
dGlvbi5jcHA6IFJlbW92ZWQgInVzaW5nIG5hbWVzcGFjZSIgZm9yIFdURjo6VW5pY29kZSwgdGhp
cyB3aWxsIG5vIGxvbmdlcgorICAgICAgICBjb21waWxlIHNpbmNlIHRoaXMgZG9lc24ndCBpbmNs
dWRlIGFueXRoaW5nIHRoYXQgZGVmaW5lcyB0aGF0IG5hbWVzcGFjZS4KKworICAgICAgICAqIHJ1
bnRpbWUvSlNHbG9iYWxPYmplY3RGdW5jdGlvbnMuY3BwOgorICAgICAgICAoSlNDOjppc1N0cldo
aXRlU3BhY2UpOiBVc2UgdV9jaGFyVHlwZSBpbnN0ZWFkIG9mIFdURjo6VW5pY29kZTo6aXNTZXBh
cmF0b3JTcGFjZS4KKworICAgICAgICAqIHlhcnIvWWFyckludGVycHJldGVyLmNwcDoKKyAgICAg
ICAgKEpTQzo6WWFycjo6Qnl0ZUNvbXBpbGVyOjphdG9tUGF0dGVybkNoYXJhY3Rlcik6IFVzZSB1
X3RvbG93ZXIgYW5kIHVfdG91cHBlciBpbnN0ZWFkIG9mCisgICAgICAgIFVuaWNvZGU6OnRvTG93
ZXIgYW5kIFVuaWNvZGU6OnRvVXBwZXIuIEFsc28gYWRkZWQgc29tZSBhc3NlcnRpb25zIHNpbmNl
IHRoaXMgY29kZSBhc3N1bWVzCisgICAgICAgIGl0IGNhbiBjb252ZXJ0IGFueSBVQ2hhciB0byBs
b3dlcmNhc2Ugb3IgdXBwZXJjYXNlIGluIGFub3RoZXIgVUNoYXIsIHdpdGggbm8gcmlzayBvZiBu
ZWVkaW5nCisgICAgICAgIGEgVUNoYXIzMiBmb3IgdGhlIHJlc3VsdC4gSSBndWVzcyB0aGF0J3Mg
cHJvYmFibHkgdHJ1ZSwgYnV0IGl0IHdvdWxkIGJlIGdvb2QgdG8ga25vdyBpbiBhCisgICAgICAg
IGRlYnVnIGJ1aWxkIGlmIG5vdC4KKwogMjAxMy0xMC0xMSAgTmFkYXYgUm90ZW0gIDxucm90ZW1A
YXBwbGUuY29tPgogCiAgICAgICAgIERGRzogQWRkIEpJVCBzdXBwb3J0IGZvciAgTG9naWNhbE5v
dChTdHJpbmcvU3RyaW5nSWRlbnQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5nZUxvZyBi
L1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGI4MDIwYjFlMGU3ZjZmOWJmMGQ2NzMzMjNhODBj
MzBkZjNlNmZlNDIuLjgyZmQ0N2E3YWQ3ZjExNmU5NjQwODdiNDI4NmFmMWVjZTE0MzViYTAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsNTQgQEAKKzIwMTMtMTAtMTEgIERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUu
Y29tPgorCisgICAgICAgIENoYW5nZSBtb3N0IGNhbGwgc2l0ZXMgdG8gY2FsbCBJQ1UgZGlyZWN0
bHkgaW5zdGVhZCBvZiB0aHJvdWdoIFdURjo6VW5pY29kZQorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTIyNjM1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiB3dGYvdGV4dC9TdHJpbmdIYXNoLmg6CisgICAg
ICAgIChXVEY6OkNhc2VGb2xkaW5nSGFzaDo6Zm9sZENhc2UpOiBVc2UgdV9mb2xkQ2FzZSBpbnN0
ZWFkIG9mIFdURjo6VW5pY29kZTo6Zm9sZENhc2UuCisgICAgICAgIChXVEY6OkNhc2VGb2xkaW5n
SGFzaDo6aGFzaCk6IEFkZGVkIGFuIG92ZXJsb2FkIGZvciBhIFN0cmluZ0ltcGwmIGJlY2F1c2Ug
d2h5IG5vdC4KKworICAgICAgICAqIHd0Zi90ZXh0L1N0cmluZ0ltcGwuY3BwOgorICAgICAgICAo
V1RGOjpTdHJpbmdJbXBsOjpsb3dlcik6IFVzZSB1X3RvbG93ZXIgcmF0aGVyIHRoYW4gV1RGOjpV
bmljb2RlOjp0b0xvd2VyLiBBbHNvIGFkZGVkCisgICAgICAgIGFuIGFzc2VydGlvbiB0byBjaGVj
ayB0aGF0IHRoZSBsb3dlcmNhc2UgdmVyc2lvbiBpcyBhbHNvIHBhcnQgb2YgTGF0aW4tMS4gSWYg
dGhpcworICAgICAgICBpcyBub3QgZ3VhcmFudGVlZCBpdCB3b3VsZCBiZSBnb29kIHRvIGtub3cg
aW4gYSBkZWJ1ZyBidWlsZCBhdCBsZWFzdC4gVXNlIHVfc3RyVG9Mb3dlcgorICAgICAgICByYXRo
ZXIgdGhhbiBXVEY6OlVuaWNvZGU6OnRvTG93ZXIuIEFsc28gcmVtb3ZlZCAjaWYgVVNFKElDVV9V
TklDT0RFKSBhcm91bmQgdGhlCisgICAgICAgIGxvY2FsZS1zcGVjaWZpYyB2ZXJzaW9uLgorICAg
ICAgICAoV1RGOjpTdHJpbmdJbXBsOjp1cHBlcik6IFVzZSB1X3RvdXBwZXIgYW5kIHVfc3RyVG9V
cHBlciwgYXMgYWJvdmUuCisgICAgICAgIChXVEY6OlN0cmluZ0ltcGw6OmZvbGRDYXNlKTogVXNl
IHVfdG9sb3dlciBhbmQgdV9zdHJGb2xkQ2FzZSwgYXMgYWJvdmUuCisgICAgICAgIChXVEY6OmVx
dWFsSWdub3JpbmdDYXNlKTogVXNlIHVfZm9sZENhc2UgaW5zdGVhZCBvZiBXVEY6OlVuaWNvZGU6
OmZvbGRDYXNlLgorICAgICAgICAoV1RGOjpTdHJpbmdJbXBsOjpkZWZhdWx0V3JpdGluZ0RpcmVj
dGlvbik6IFVzZSB1X2NoYXJEaXJlY3Rpb24gYW5kIFVDaGFyRGlyZWN0aW9uCisgICAgICAgIGlu
c3RlYWQgb2YgV1RGOjpVbmljb2RlOjpkaXJlY3Rpb24gYW5kIFdURjo6VW5pY29kZTo6RGlyZWN0
aW9uLgorCisgICAgICAgICogd3RmL3RleHQvU3RyaW5nSW1wbC5oOgorICAgICAgICAoV1RGOjpl
cXVhbElnbm9yaW5nQ2FzZSk6IFVzZSB1X21lbWNhc2VjbXAgaW5zdGVhZCBvZiBXVEY6OlVuaWNv
ZGU6OnVtZW1jYXNlY21wLgorICAgICAgICAoV1RGOjppc1NwYWNlT3JOZXdsaW5lKTogVXNlIHVf
Y2hhckRpcmVjdGlvbiBpbnN0ZWFkIG9mIFdURjo6VW5pY29kZTo6ZGlyZWN0aW9uLgorCisgICAg
ICAgICogd3RmL3RleHQvV1RGU3RyaW5nLmg6CisgICAgICAgIChXVEY6OlN0cmluZzo6ZGVmYXVs
dFdyaXRpbmdEaXJlY3Rpb24pOiBVc2UgVUNoYXJEaXJlY3Rpb24gaW5zdGVhZCBvZiBXVEY6OlVu
aWNvZGU6OkRpcmVjdGlvbi4KKworICAgICAgICAqIHd0Zi91bmljb2RlL2ljdS9Vbmljb2RlSWN1
Lmg6IFJlbW92ZWQgYWxtb3N0IGV2ZXJ5dGhpbmcuCisKKyAgICAgICAgKiB3dGYvdW5pY29kZS93
Y2hhci9Vbmljb2RlV2NoYXIuY3BwOiBUcmllZCB0byBkbyB0aGUgcmlnaHQgdGhpbmcgaW4gdGhp
cyBmaWxlLCBidXQKKyAgICAgICAgSSBkaWQgbm90IGFjdHVhbGx5IGNvbXBpbGUgaXQuIEFsc28s
IHRoZSBpbXBsZW1lbnRhdGlvbnMgaGVyZSBhcmVuJ3QgcmVhbGx5IHN1ZmZpY2llbnQKKyAgICAg
ICAgdG8gbWFrZSBXZWJLaXQgd29yayBicm9hZGx5LiBUaGVyZSBhcmUgbWFueSB0aGluZ3MgdGhh
dCBqdXN0IGFyZW4ndCB3b3JraW5nIHdpdGggdGhpcworICAgICAgICBpbXBsZW1lbnRhdGlvbiwg
c3VjaCBhcyBwYXJzaW5nIHRoYXQgdXNlcyB1X2NoYXJUeXBlIHRvIGZpZ3VyZSBvdXQgd2hpY2gg
Y2hhcmFjdGVycyBhcmUgdmFsaWQuCisgICAgICAgICh1bm9ybV9ub3JtYWxpemUpOiBBZGRlZC4K
KyAgICAgICAgKHVfY2hhckRpcmVjdGlvbik6IEFkZGVkLgorICAgICAgICAodV9jaGFyTWlycm9y
KTogQWRkZWQuCisgICAgICAgICh1X2NoYXJUeXBlKTogQWRkZWQuCisgICAgICAgICh1X2dldENv
bWJpbmluZ0NsYXNzKTogQWRkZWQuCisgICAgICAgICh1X2dldEludFByb3BlcnR5VmFsdWUpOiBB
ZGRlZC4KKyAgICAgICAgKHVfbWVtY2FzZWNtcCk6IEFkZGVkLgorICAgICAgICAoY29udmVydFdp
dGhGdW5jdGlvbik6IENoYW5nZWQgdG8gd29yayB3aXRoIElDVS1zdHlsZSBzdGF0dXMgY29kZSBp
bnN0ZWFkIG9mIGVycm9yIGJvb2wuCisgICAgICAgICh1X3N0ckZvbGRDYXNlKTogQWRkZWQuCisg
ICAgICAgICh1X3N0clRvTG93ZXIpOiBBZGRlZC4KKyAgICAgICAgKHVfc3RyVG9VcHBlcik6IEFk
ZGVkLgorICAgICAgICAqIHd0Zi91bmljb2RlL3djaGFyL1VuaWNvZGVXY2hhci5oOiBEaXR0by4g
TGF0ZXIgdGhpcyBmaWxlIHNob3VsZCBqdXN0IGJlIG5hbWVkIGxpa2UgdGhlCisgICAgICAgIHJl
YWwgSUNVIGhlYWRlcnMgc28gdGhlIGNvZGUgY2FuIGluY2x1ZGUgaXQgdGhlIHNhbWUgd2F5IGl0
IHdvdWxkIElDVS4gQnV0IHRoYXQgd2lsbCBiZQorICAgICAgICBpbiBhIGZ1dHVyZSBwYXRjaC4K
KwogMjAxMy0xMC0xMSAgQW5kZXJzIENhcmxzc29uICA8YW5kZXJzY2FAYXBwbGUuY29tPgogCiAg
ICAgICAgIFJlbW92ZSBnZXN0dXJlIGV2ZW50IHN1cHBvcnQgZnJvbSBXZWJDb3JlCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cK
aW5kZXggNjA5MjA0ZDFiNmYzMmY0NTJjMzhkMmZiYzU4NGY2ZjEzNmQ4NGJhMy4uNGE2ZTcyMTdk
MWM0NzUzNTk0ZmI4NjYyYzg3ZGRlNmYzOWUyNjA3NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3
NSBAQAorMjAxMy0xMC0xMSAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CisKKyAgICAg
ICAgQ2hhbmdlIG1vc3QgY2FsbCBzaXRlcyB0byBjYWxsIElDVSBkaXJlY3RseSBpbnN0ZWFkIG9m
IHRocm91Z2ggV1RGOjpVbmljb2RlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xMjI2MzUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQktleVBhdGguY3BwOgorICAgICAg
ICAoaXNJZGVudGlmaWVyU3RhcnRDaGFyYWN0ZXIpOiBVc2UgVV9HRVRfR0NfTUFTSyBpbnN0ZWFk
IG9mIFdURjo6VW5pY29kZTo6Y2F0ZWdvcnkuCisgICAgICAgIChpc0lkZW50aWZpZXJDaGFyYWN0
ZXIpOiBEaXR0by4KKworICAgICAgICAqIGNzcy9DU1NQYXJzZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6bWFrZUxvd2VyKTogVXNlIHVfdG9sb3dlciBpbnN0ZWFkIG9mIFdURjo6VW5pY29kZTo6
dG9Mb3dlci4KKyAgICAgICAgQWxzbyBhc3NlcnQgdGhlIGNoYXJhY3RlciBmaXRzIGluIGEgVUNo
YXIuCisKKyAgICAgICAgKiBkb20vRG9jdW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6aXNW
YWxpZE5hbWVTdGFydCk6IFVzZSBVX0dFVF9HQ19NQVNLIGluc3RlYWQgb2YgV1RGOjpVbmljb2Rl
OjpjYXRlZ29yeSwKKyAgICAgICAgYW5kIHVfZ2V0SW50UHJvcGVydHlWYWx1ZSBpbnN0ZWFkIG9m
IFdURjo6VW5pY29kZTo6ZGVjb21wb3NpdGlvblR5cGUuCisgICAgICAgIChXZWJDb3JlOjppc1Zh
bGlkTmFtZVBhcnQpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OmNhbm9uaWNhbGl6ZWRUaXRs
ZSk6IERpdHRvLgorCisgICAgICAgICogZWRpdGluZy9FZGl0b3IuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6RWRpdG9yOjppbnNlcnRUZXh0V2l0aG91dFNlbmRpbmdUZXh0RXZlbnQpOiBVc2UgdV9p
c1B1bmN0IGluc3RlYWQgb2YKKyAgICAgICAgV1RGOjpVbmljb2RlOjppc1B1bmN0LgorCisgICAg
ICAgICogZWRpdGluZy9UZXh0SXRlcmF0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2VhcmNo
QnVmZmVyOjphcHBlbmQpOiBVc2UgdV9zdHJGb2xkQ2FzZSBpbnN0ZWFkIG9mIFdURjo6VW5pY29k
ZTo6Zm9sZENhc2UuCisKKyAgICAgICAgKiBodG1sL0hUTUxFbGVtZW50LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkhUTUxFbGVtZW50OjpkaXJlY3Rpb25hbGl0eSk6IFVzZSBVQ2hhckRpcmVjdGlv
biBpbnN0ZWFkIG9mCisgICAgICAgIFdURjo6VW5pY29kZTo6RGlyZWN0aW9uLgorCisgICAgICAg
ICogaHRtbC9IVE1MU2VsZWN0RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MU2Vs
ZWN0RWxlbWVudDo6ZGVmYXVsdEV2ZW50SGFuZGxlcik6IFVzZSB1X2lzcHJpbnQgaW5zdGVhZCBv
ZgorICAgICAgICBXVEY6OlVuaWNvZGU6OmlzUHJpbnRhYmxlQ2hhci4KKworICAgICAgICAqIGh0
bWwvVHlwZUFoZWFkLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnN0cmlwTGVhZGluZ1doaXRlU3Bh
Y2UpOiBVc2UgdV9jaGFyRGlyZWN0aW9uIGluc3RlYWQgb2YKKyAgICAgICAgV1RGOjpVbmljb2Rl
OjpkaXJlY3Rpb24uCisKKyAgICAgICAgKiBodG1sL3RyYWNrL1RleHRUcmFja0N1ZS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjppc0N1ZVBhcmFncmFwaFNlcGFyYXRvcik6IFVzZSB1X2NoYXJUeXBl
IGluc3RlYWQgb2YKKyAgICAgICAgV1RGOjpVbmljb2RlOjpjYXRlZ29yeS4KKyAgICAgICAgKFdl
YkNvcmU6OlRleHRUcmFja0N1ZTo6ZGV0ZXJtaW5lVGV4dERpcmVjdGlvbik6IFVzZSB1X2NoYXJE
aXJlY3Rpb24gaW5zdGVhZCBvZgorICAgICAgICBXVEY6OlVuaWNvZGU6OmRpcmVjdGlvbi4KKwor
ICAgICAgICAqIHBhZ2UvQ29udGV4dE1lbnVDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OnNlbGVjdGlvbkNvbnRhaW5zUG9zc2libGVXb3JkKTogVXNlIFVfR0VUX0dDX01BU0sgaW5z
dGVhZCBvZgorICAgICAgICBXVEY6OlVuaWNvZGU6OmNhdGVnb3J5LgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL0ZvbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Rm9udDo6Y2FuUmVjZWl2
ZVRleHRFbXBoYXNpcyk6IERpdHRvLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvRm9u
dEdseXBocy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGb250R2x5cGhzOjpnbHlwaERhdGFBbmRQ
YWdlRm9yQ2hhcmFjdGVyKTogVXNlIHVfdG91cHBlciBpbnN0ZWFkIG9mCisgICAgICAgIFdURjo6
VW5pY29kZTo6dG9VcHBlci4gVXNlIHVfY2hhck1pcnJvciBpbnN0ZWFkIG9mIFdURjo6VW5pY29k
ZTo6bWlycm9yZWRDaGFyLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3ND
b250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRleHRSdW5JdGVyYXRvcjo6ZGlyZWN0aW9u
KTogVXNlIHVfY2hhckRpcmVjdGlvbiBpbnN0ZWFkIG9mCisgICAgICAgIFdURjo6VW5pY29kZTo6
ZGlyZWN0aW9uLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvU1ZHR2x5cGguY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Y2hhcmFjdGVyc1dpdGhBcmFiaWNGb3JtKTogVXNlIHVibG9ja19n
ZXRDb2RlIGluc3RlYWQgb2YKKyAgICAgICAgV1RGOjpVbmljb2RlOjppc0FyYWJpY0NoYXIuCisK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9TdXJyb2dhdGVQYWlyQXdhcmVUZXh0SXRlcmF0
b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3Vycm9nYXRlUGFpckF3YXJlVGV4dEl0ZXJhdG9y
Ojpub3JtYWxpemVWb2ljaW5nTWFya3MpOiBVc2UKKyAgICAgICAgdV9nZXRDb21iaW5pbmdDbGFz
cyBpbnN0ZWFkIG9mIFdURjo6VW5pY29kZTo6Y29tYmluaW5nQ2xhc3MuCisKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9XaWR0aEl0ZXJhdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Oldp
ZHRoSXRlcmF0b3I6OmFkdmFuY2VJbnRlcm5hbCk6IFVzZSB1X3RvdXBwZXIgaW5zdGVhZCBvZgor
ICAgICAgICBXVEY6OlVuaWNvZGU6OnRvVXBwZXIuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9tYWMvQ29tcGxleFRleHRDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNv
bXBsZXhUZXh0Q29udHJvbGxlcjo6Y29sbGVjdENvbXBsZXhUZXh0UnVucyk6IEFkZGVkIHNvbWUK
KyAgICAgICAgYXNzZXJ0aW9ucyBhYm91dCB0aGUgdXNlciBvZiB1X3RvdXBwZXIgYW5kIHR3ZWFr
ZWQgY29kaW5nIHN0eWxlIGEgYml0LgorCisgICAgICAgICogcGxhdGZvcm0vdGV4dC9CaWRpQ29u
dGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpCaWRpQ29udGV4dDo6Y3JlYXRlVW5jYWNoZWQp
OiBVc2UgVUNoYXJEaXJlY3Rpb24gaW5zdGVhZCBvZgorICAgICAgICBXVEY6OlVuaWNvZGU6OkRp
cmVjdGlvbi4KKyAgICAgICAgKFdlYkNvcmU6OkJpZGlDb250ZXh0OjpjcmVhdGUpOiBEaXR0by4K
KyAgICAgICAgKFdlYkNvcmU6OmNvcHlDb250ZXh0QW5kUmViYXNlbGluZUxldmVsKTogRGl0dG8u
CisgICAgICAgICogcGxhdGZvcm0vdGV4dC9CaWRpQ29udGV4dC5oOgorICAgICAgICAoV2ViQ29y
ZTo6QmlkaUNvbnRleHQ6OmRpcik6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6QmlkaUNvbnRl
eHQ6OkJpZGlDb250ZXh0KTogRGl0dG8uCisgICAgICAgICogcGxhdGZvcm0vdGV4dC9CaWRpUmVz
b2x2ZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OkJpZGlTdGF0dXM6OkJpZGlTdGF0dXMpOiBEaXR0
by4KKyAgICAgICAgKFdlYkNvcmU6OkJpZGlFbWJlZGRpbmc6OkJpZGlFbWJlZGRpbmcpOiBEaXR0
by4KKyAgICAgICAgKFdlYkNvcmU6OkJpZGlFbWJlZGRpbmc6OmRpcmVjdGlvbik6IERpdHRvLgor
ICAgICAgICAoV2ViQ29yZTo6QmlkaUNoYXJhY3RlclJ1bjo6QmlkaUNoYXJhY3RlclJ1bik6IERp
dHRvLgorICAgICAgICAoV2ViQ29yZTo6QmlkaVJlc29sdmVyOjpCaWRpUmVzb2x2ZXIpOiBEaXR0
by4KKyAgICAgICAgKFdlYkNvcmU6OkJpZGlSZXNvbHZlcjo6c2V0TGFzdERpcik6IERpdHRvLgor
ICAgICAgICAoV2ViQ29yZTo6QmlkaVJlc29sdmVyOjpzZXRMYXN0U3Ryb25nRGlyKTogRGl0dG8u
CisgICAgICAgIChXZWJDb3JlOjpCaWRpUmVzb2x2ZXI6OnNldEVvckRpcik6IERpdHRvLgorICAg
ICAgICAoV2ViQ29yZTo6QmlkaVJlc29sdmVyOjpkaXIpOiBEaXR0by4KKyAgICAgICAgKFdlYkNv
cmU6OkJpZGlSZXNvbHZlcjo6c2V0RGlyKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpCaWRp
UmVzb2x2ZXI6OmFwcGVuZFJ1bik6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6QmlkaVJlc29s
dmVyOjplbWJlZCk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6QmlkaVJlc29sdmVyOjpjaGVj
a0RpcmVjdGlvbkluTG93ZXJSYWlzZUVtYmVkZGluZ0xldmVsKTogRGl0dG8uCisgICAgICAgIChX
ZWJDb3JlOjpCaWRpUmVzb2x2ZXI6Omxvd2VyRXhwbGljaXRFbWJlZGRpbmdMZXZlbCk6IERpdHRv
LgorICAgICAgICAoV2ViQ29yZTo6QmlkaVJlc29sdmVyOjpyYWlzZUV4cGxpY2l0RW1iZWRkaW5n
TGV2ZWwpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkJpZGlSZXNvbHZlcjo6Y29tbWl0RXhw
bGljaXRFbWJlZGRpbmcpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkJpZGlSZXNvbHZlcjo6
dXBkYXRlU3RhdHVzTGFzdEZyb21DdXJyZW50RGlyZWN0aW9uKTogRGl0dG8uCisgICAgICAgIChX
ZWJDb3JlOjpCaWRpUmVzb2x2ZXI6OmNyZWF0ZUJpZGlSdW5zRm9yTGluZSk6IERpdHRvLgorCisg
ICAgICAgICogcGxhdGZvcm0vdGV4dC9TZWdtZW50ZWRTdHJpbmcuaDoKKyAgICAgICAgKFdlYkNv
cmU6OlNlZ21lbnRlZFN0cmluZzo6YWR2YW5jZUFuZEFTU0VSVElnbm9yaW5nQ2FzZSk6IFVzZSB1
X2ZvbGRDYXNlCisgICAgICAgIGluc3RlYWQgb2YgV1RGOjpVbmljb2RlOjpmb2xkQ2FzZS4KKwor
ICAgICAgICAqIHBsYXRmb3JtL3RleHQvVGV4dEJvdW5kYXJpZXMuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6ZmluZE5leHRXb3JkRnJvbUluZGV4KTogVXNlIHVfaXNhbG51bSBpbnN0ZWFkIG9mCisg
ICAgICAgIFdURjo6VW5pY29kZTo6aXNBbHBoYW51bWVyaWMuCisKKyAgICAgICAgKiBwbGF0Zm9y
bS90ZXh0L1RleHRCb3VuZGFyaWVzLmg6CisgICAgICAgIChXZWJDb3JlOjpyZXF1aXJlc0NvbnRl
eHRGb3JXb3JkQm91bmRhcnkpOiBVc2UgdV9nZXRJbnRQcm9wZXJ0eVZhbHVlIGRpcmVjdGx5Cisg
ICAgICAgIGluc3RlYWQgb2YgV1RGOjpVbmljb2RlOjpyZXF1aXJlc0NvbXBsZXhDb250ZXh0Rm9y
V29yZEJyZWFraW5nLgorCisgICAgICAgICogcGxhdGZvcm0vdGV4dC9tYWMvVGV4dEJvdW5kYXJp
ZXMubW06IFJlbW92ZWQgZXhwbGljaXQgdXNlIG9mIFdURjo6VW5pY29kZSwKKyAgICAgICAgd2hp
Y2ggd2FzIHVubmVlZGVkIGFuZCBhbHNvIHdpbGwgbm8gbG9uZ2VyIGNvbXBpbGUuCisKKyAgICAg
ICAgKiByZW5kZXJpbmcvQmlkaVJ1bi5oOgorICAgICAgICAoV2ViQ29yZTo6QmlkaVJ1bjo6Qmlk
aVJ1bik6IFVzZSBVQ2hhckRpcmVjdGlvbiBpbnN0ZWFkIG9mIFdURjo6VW5pY29kZTo6RGlyZWN0
aW9uLgorICAgICAgICAqIHJlbmRlcmluZy9JbmxpbmVGbG93Qm94Lmg6IERpdHRvLgorICAgICAg
ICAqIHJlbmRlcmluZy9JbmxpbmVJdGVyYXRvci5oOgorICAgICAgICAoV2ViQ29yZTo6ZW1iZWRD
aGFyRnJvbURpcmVjdGlvbik6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6bm90aWZ5T2JzZXJ2
ZXJXaWxsRXhpdE9iamVjdCk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6SW5saW5lSXRlcmF0
b3I6OmRpcmVjdGlvbik6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6SXNvbGF0ZVRyYWNrZXI6
OmVtYmVkKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVCaWRpUmVzb2x2ZXI6OmFw
cGVuZFJ1bik6IERpdHRvLgorCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OmlzUHVuY3R1YXRpb25Gb3JGaXJzdExldHRlcik6IFVzZSBVX0dF
VF9HQ19NQVNLIGluc3RlYWQgb2YKKyAgICAgICAgV1RGOjpVbmljb2RlOjpjYXRlZ29yeS4KKwor
ICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJCbG9ja0xpbmVMYXlvdXQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6ZGV0ZXJtaW5lRGlyZWN0aW9uYWxpdHkpOiBVc2UgdV9jaGFyRGlyZWN0aW9uIGlu
c3RlYWQgb2YKKyAgICAgICAgV1RGOjpVbmljb2RlOjpkaXJlY3Rpb24uCisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJCbG9ja0Zsb3c6OmhhbmRsZVRyYWlsaW5nU3BhY2VzKTogRGl0dG8uCisgICAg
ICAgIChXZWJDb3JlOjpzdGF0dXNXaXRoRGlyZWN0aW9uKTogRGl0dG8uCisgICAgICAgIChXZWJD
b3JlOjpMaW5lQnJlYWtlcjo6bmV4dFNlZ21lbnRCcmVhayk6IFVzZSBVX0dFVF9HQ19NQVNLIGlu
c3RlYWQgb2YKKyAgICAgICAgV1RGOjpVbmljb2RlOjpjYXRlZ29yeS4KKworICAgICAgICAqIHJl
bmRlcmluZy9SZW5kZXJMaXN0TWFya2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxp
c3RNYXJrZXI6OnBhaW50KTogVXNlIHVfY2hhckRpcmVjdGlvbiBpbnN0ZWFkIG9mCisgICAgICAg
IFdURjo6VW5pY29kZTo6ZGlyZWN0aW9uLgorCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlck1l
bnVMaXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck1lbnVMaXN0OjphZGp1c3RJbm5l
clN0eWxlKTogVXNlIFVDaGFyRGlyZWN0aW9uIGluc3RlYWQgb2YKKyAgICAgICAgV1RGOjpVbmlj
b2RlOjpEaXJlY3Rpb24uCisKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGV4dC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjptYWtlQ2FwaXRhbGl6ZWQpOiBVc2UgdV90b3RpbGUgaW5zdGVhZCBv
ZiBXVEY6OlVuaWNvZGU6OnRvVGl0bGVDYXNlLgorICAgICAgICBBbHNvIGFkZGVkIGEgY29tbWVu
dCBhYm91dCB0aGUgZmFjdCB0aGF0IHdlIG5lZWQgdG8gdXNlIHVfc3RyVG9UaXRsZSBpbnN0ZWFk
LgorCisgICAgICAgICogcmVuZGVyaW5nL1Jvb3RJbmxpbmVCb3guY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6Um9vdElubGluZUJveDo6bGluZUJyZWFrQmlkaVN0YXR1cyk6IFVzZSBVQ2hhckRpcmVj
dGlvbiBpbnN0ZWFkIG9mCisgICAgICAgIFdURjo6VW5pY29kZTo6RGlyZWN0aW9uLgorCisgICAg
ICAgICogc3ZnL1NWR0ZvbnREYXRhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZvbnREYXRh
OjpjcmVhdGVTdHJpbmdXaXRoTWlycm9yZWRDaGFyYWN0ZXJzKTogVXNlIHVfY2hhck1pcnJvcgor
ICAgICAgICBpbnN0ZWFkIG9mIFdURjo6VW5pY29kZTo6bWlycm9yZWRDaGFyLgorCisgICAgICAg
ICogeG1sL1hQYXRoUGFyc2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlhQYXRoOjpjaGFyQ2F0
KTogVXNlIFVfR0VUX0dDX01BU0sgaW5zdGVhZCBvZiBXVEY6OlVuaWNvZGU6OmNhdGVnb3J5Lgor
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL1VuaXNjcmliZUNvbnRyb2xsZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6VW5pc2NyaWJlQ29udHJvbGxlcjo6YWR2YW5jZSk6CisgICAg
ICAgICogcGxhdGZvcm0vd2luL1BvcHVwTWVudVdpbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQ
b3B1cE1lbnVXaW46OnBhaW50KToKKyAgICAgICAgKiBwbGF0Zm9ybS93aW4vV2ViQ29yZVRleHRS
ZW5kZXJlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjppc09uZUxlZnRUb1JpZ2h0UnVuKToKKyAg
ICAgICAgTW9yZSBvZiB0aGUgc2FtZSBmb3IgV2luZG93cy4KKwogMjAxMy0xMC0xMSAgUnlvc3Vr
ZSBOaXdhICA8cm5pd2FAd2Via2l0Lm9yZz4KIAogICAgICAgICBEcmFtYXRpY2FsbHkgc2ltcGxp
ZnkgY2FsY3VsYXRlQWRqdXN0ZWROb2RlcwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3BhcnNlci9MZXhlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL0xleGVy
LmNwcAppbmRleCAzYzBjOTE0ODk2YmNmNjZhOGY2NDQ5Zjg2MTNkZGQxYWFlM2RlMzI1Li5mYjYy
Yjk3M2YyOGJlMzNkODY4ODg1YWQ1YjliOWY0ODQ2ZmMxZGQ0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcGFyc2VyL0xleGVyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcGFyc2VyL0xleGVyLmNwcApAQCAtMzcsOSArMzcsNiBAQAogI2luY2x1ZGUgPHN0cmluZy5o
PgogI2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+CiAKLXVzaW5nIG5hbWVzcGFjZSBXVEY7Ci11
c2luZyBuYW1lc3BhY2UgVW5pY29kZTsKLQogI2luY2x1ZGUgIktleXdvcmRMb29rdXAuaCIKICNp
bmNsdWRlICJMZXhlci5sdXQuaCIKICNpbmNsdWRlICJQYXJzZXIuaCIKQEAgLTYzNyw5ICs2MzQs
OSBAQCBBTFdBWVNfSU5MSU5FIGJvb2wgTGV4ZXI8VD46Omxhc3RUb2tlbldhc1Jlc3RyS2V5d29y
ZCgpIGNvbnN0CiAgICAgcmV0dXJuIG1fbGFzdFRva2VuID09IENPTlRJTlVFIHx8IG1fbGFzdFRv
a2VuID09IEJSRUFLIHx8IG1fbGFzdFRva2VuID09IFJFVFVSTiB8fCBtX2xhc3RUb2tlbiA9PSBU
SFJPVzsKIH0KIAotc3RhdGljIE5FVkVSX0lOTElORSBib29sIGlzTm9uTGF0aW4xSWRlbnRTdGFy
dChpbnQgYykKK3N0YXRpYyBORVZFUl9JTkxJTkUgYm9vbCBpc05vbkxhdGluMUlkZW50U3RhcnQo
VUNoYXIgYykKIHsKLSAgICByZXR1cm4gY2F0ZWdvcnkoYykgJiAoTGV0dGVyX1VwcGVyY2FzZSB8
IExldHRlcl9Mb3dlcmNhc2UgfCBMZXR0ZXJfVGl0bGVjYXNlIHwgTGV0dGVyX01vZGlmaWVyIHwg
TGV0dGVyX090aGVyKTsKKyAgICByZXR1cm4gVV9HRVRfR0NfTUFTSyhjKSAmIFVfR0NfTF9NQVNL
OwogfQogCiBzdGF0aWMgQUxXQVlTX0lOTElORSBib29sIGlzTGF0aW4xKExDaGFyKQpAQCAtNjY0
LDggKzY2MSw3IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBpc0lkZW50U3RhcnQoVUNoYXIgYykKIAog
c3RhdGljIE5FVkVSX0lOTElORSBib29sIGlzTm9uTGF0aW4xSWRlbnRQYXJ0KGludCBjKQogewot
ICAgIHJldHVybiAoY2F0ZWdvcnkoYykgJiAoTGV0dGVyX1VwcGVyY2FzZSB8IExldHRlcl9Mb3dl
cmNhc2UgfCBMZXR0ZXJfVGl0bGVjYXNlIHwgTGV0dGVyX01vZGlmaWVyIHwgTGV0dGVyX090aGVy
Ci0gICAgICAgIHwgTWFya19Ob25TcGFjaW5nIHwgTWFya19TcGFjaW5nQ29tYmluaW5nIHwgTnVt
YmVyX0RlY2ltYWxEaWdpdCB8IFB1bmN0dWF0aW9uX0Nvbm5lY3RvcikpIHx8IGMgPT0gMHgyMDBD
IHx8IGMgPT0gMHgyMDBEOworICAgIHJldHVybiAoVV9HRVRfR0NfTUFTSyhjKSAmIChVX0dDX0xf
TUFTSyB8IFVfR0NfTU5fTUFTSyB8IFVfR0NfTUNfTUFTSyB8IFVfR0NfTkRfTUFTSyB8IFVfR0Nf
UENfTUFTSykpIHx8IGMgPT0gMHgyMDBDIHx8IGMgPT0gMHgyMDBEOwogfQogCiBzdGF0aWMgQUxX
QVlTX0lOTElORSBib29sIGlzSWRlbnRQYXJ0KExDaGFyIGMpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcGFyc2VyL0xleGVyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFy
c2VyL0xleGVyLmgKaW5kZXggMTM3ZmY1ZmI2NDQxNDEzM2I5NzcyZTM2NjBmZTUzMWQwMGUxMDY0
Yy4uNTFjOWExZDk4ZDQ2NDJmYzEyZDVjZDlhYzMxODhmZTcyMjlmMTQ4OSAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9MZXhlci5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9wYXJzZXIvTGV4ZXIuaApAQCAtMjQ4LDcgKzI0OCw3IEBAIEFMV0FZU19JTkxJTkUg
Ym9vbCBMZXhlcjxMQ2hhcj46OmlzV2hpdGVTcGFjZShMQ2hhciBjaCkKIHRlbXBsYXRlIDw+CiBB
TFdBWVNfSU5MSU5FIGJvb2wgTGV4ZXI8VUNoYXI+Ojppc1doaXRlU3BhY2UoVUNoYXIgY2gpCiB7
Ci0gICAgcmV0dXJuIChjaCA8IDI1NikgPyBMZXhlcjxMQ2hhcj46OmlzV2hpdGVTcGFjZShzdGF0
aWNfY2FzdDxMQ2hhcj4oY2gpKSA6IChXVEY6OlVuaWNvZGU6OmlzU2VwYXJhdG9yU3BhY2UoY2gp
IHx8IGNoID09IDB4RkVGRik7CisgICAgcmV0dXJuIChjaCA8IDI1NikgPyBMZXhlcjxMQ2hhcj46
OmlzV2hpdGVTcGFjZShzdGF0aWNfY2FzdDxMQ2hhcj4oY2gpKSA6ICh1X2NoYXJUeXBlKGNoKSA9
PSBVX1NQQUNFX1NFUEFSQVRPUiB8fCBjaCA9PSAweEZFRkYpOwogfQogCiB0ZW1wbGF0ZSA8Pgpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmNwcAppbmRleCBjMTA2
MGI5Zjg0YTIxNDdiYTg3ZDIwYTE3NjYwMTkzMjI0ZDlmMGRkLi4yNzA1OTU3OGU2ZWNiZTFjYmFh
MTY1YTJkNzFkNjcwMGVlODA0MmQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0Z1bmN0aW9uLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0Z1bmN0aW9uLmNwcApAQCAtNDUsMTAgKzQ1LDggQEAKICNpbmNsdWRlICJQcm9wZXJ0eU5h
bWVBcnJheS5oIgogI2luY2x1ZGUgIlN0YWNrVmlzaXRvci5oIgogCi11c2luZyBuYW1lc3BhY2Ug
V1RGOwotdXNpbmcgbmFtZXNwYWNlIFVuaWNvZGU7Ci0KIG5hbWVzcGFjZSBKU0MgeworCiBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNhbGxIb3N0RnVuY3Rpb25Bc0NvbnN0cnVjdG9yKEV4
ZWNTdGF0ZSogZXhlYykKIHsKICAgICByZXR1cm4gdGhyb3dWTUVycm9yKGV4ZWMsIGNyZWF0ZU5v
dEFDb25zdHJ1Y3RvckVycm9yKGV4ZWMsIGV4ZWMtPmNhbGxlZSgpKSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdEZ1bmN0aW9ucy5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdEZ1bmN0aW9ucy5j
cHAKaW5kZXggYTRkMTk0YzBjYjA5ZjI3OTI4Njc1ZDBlMzVmOGYwYTc2MTg4OWE5My4uOTIwMDU2
N2UxNDliYTE1YzU0ZGRkYWI5MDQ0ZTVmMGZkY2FkMjQzOCAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3RGdW5jdGlvbnMuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0RnVuY3Rpb25zLmNwcApA
QCAtMTY5LDcgKzE2OSw3IEBAIGJvb2wgaXNTdHJXaGl0ZVNwYWNlKFVDaGFyIGMpCiAgICAgICAg
IGNhc2UgMHhGRUZGOgogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIGRlZmF1bHQ6
Ci0gICAgICAgICAgICByZXR1cm4gYyA+IDB4ZmYgJiYgaXNTZXBhcmF0b3JTcGFjZShjKTsKKyAg
ICAgICAgICAgIHJldHVybiBjID4gMHhGRiAmJiB1X2NoYXJUeXBlKGMpID09IFVfU1BBQ0VfU0VQ
QVJBVE9SOwogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3lh
cnIvWWFyckludGVycHJldGVyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS95YXJyL1lhcnJJ
bnRlcnByZXRlci5jcHAKaW5kZXggZjAzMTJlYTI1MTlhYzNkOGM2OTllODhkMTk2MTk2ZDYwNmQ0
NjhkMy4uZTc3NWFkNjI0MjgxZTQ2NjViMzJmZGJhMTQwMWRkYjU4MmFlZjc3ZSAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIvWWFyckludGVycHJldGVyLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUveWFyci9ZYXJySW50ZXJwcmV0ZXIuY3BwCkBAIC0xNTEwLDgg
KzE1MTAsMTEgQEAgcHVibGljOgogICAgIHZvaWQgYXRvbVBhdHRlcm5DaGFyYWN0ZXIoVUNoYXIg
Y2gsIHVuc2lnbmVkIGlucHV0UG9zaXRpb24sIHVuc2lnbmVkIGZyYW1lTG9jYXRpb24sIENoZWNr
ZWQ8dW5zaWduZWQ+IHF1YW50aXR5Q291bnQsIFF1YW50aWZpZXJUeXBlIHF1YW50aXR5VHlwZSkK
ICAgICB7CiAgICAgICAgIGlmIChtX3BhdHRlcm4ubV9pZ25vcmVDYXNlKSB7Ci0gICAgICAgICAg
ICBVQ2hhciBsbyA9IFVuaWNvZGU6OnRvTG93ZXIoY2gpOwotICAgICAgICAgICAgVUNoYXIgaGkg
PSBVbmljb2RlOjp0b1VwcGVyKGNoKTsKKyAgICAgICAgICAgIEFTU0VSVCh1X3RvbG93ZXIoY2gp
IDw9IDB4RkZGRik7CisgICAgICAgICAgICBBU1NFUlQodV90b3VwcGVyKGNoKSA8PSAweEZGRkYp
OworCisgICAgICAgICAgICBVQ2hhciBsbyA9IHVfdG9sb3dlcihjaCk7CisgICAgICAgICAgICBV
Q2hhciBoaSA9IHVfdG91cHBlcihjaCk7CiAKICAgICAgICAgICAgIGlmIChsbyAhPSBoaSkgewog
ICAgICAgICAgICAgICAgIG1fYm9keURpc2p1bmN0aW9uLT50ZXJtcy5hcHBlbmQoQnl0ZVRlcm0o
bG8sIGhpLCBpbnB1dFBvc2l0aW9uLCBmcmFtZUxvY2F0aW9uLCBxdWFudGl0eUNvdW50LCBxdWFu
dGl0eVR5cGUpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nSGFzaC5o
IGIvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdIYXNoLmgKaW5kZXggMTA0MzA3NDhhMDEwMDQw
Nzg5YmRlODQxYWVkYmMwMjFkOWE1MzNmNC4uZjA0NjA0YjQ1ZTZiMDEzYjhlMGQ5NzAxM2NkMzdk
YWFjMzMyNTk4YSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdIYXNoLmgK
KysrIGIvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdIYXNoLmgKQEAgLTczLDI2ICs3MywzMSBA
QCBuYW1lc3BhY2UgV1RGIHsKIAogICAgIGNsYXNzIENhc2VGb2xkaW5nSGFzaCB7CiAgICAgcHVi
bGljOgotICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdGF0aWMgaW5saW5lIFVDaGFyIGZv
bGRDYXNlKFQgY2gpCisgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0YXRpYyBpbmxpbmUg
VUNoYXIgZm9sZENhc2UoVCBjaGFyYWN0ZXIpCiAgICAgICAgIHsKLSAgICAgICAgICAgIHJldHVy
biBXVEY6OlVuaWNvZGU6OmZvbGRDYXNlKGNoKTsKKyAgICAgICAgICAgIHJldHVybiB1X2ZvbGRD
YXNlKGNoYXJhY3RlciwgVV9GT0xEX0NBU0VfREVGQVVMVCk7CiAgICAgICAgIH0KIAogICAgICAg
ICBzdGF0aWMgdW5zaWduZWQgaGFzaChjb25zdCBVQ2hhciogZGF0YSwgdW5zaWduZWQgbGVuZ3Ro
KQogICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gU3RyaW5nSGFzaGVyOjpjb21wdXRlSGFz
aEFuZE1hc2tUb3A4Qml0czxVQ2hhciwgZm9sZENhc2U8VUNoYXI+ID4oZGF0YSwgbGVuZ3RoKTsK
KyAgICAgICAgICAgIHJldHVybiBTdHJpbmdIYXNoZXI6OmNvbXB1dGVIYXNoQW5kTWFza1RvcDhC
aXRzPFVDaGFyLCBmb2xkQ2FzZTxVQ2hhcj4+KGRhdGEsIGxlbmd0aCk7CiAgICAgICAgIH0KIAot
ICAgICAgICBzdGF0aWMgdW5zaWduZWQgaGFzaChTdHJpbmdJbXBsKiBzdHIpCisgICAgICAgIHN0
YXRpYyB1bnNpZ25lZCBoYXNoKFN0cmluZ0ltcGwmIHN0cmluZykKICAgICAgICAgewotICAgICAg
ICAgICAgaWYgKHN0ci0+aXM4Qml0KCkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIGhhc2goc3Ry
LT5jaGFyYWN0ZXJzOCgpLCBzdHItPmxlbmd0aCgpKTsKLSAgICAgICAgICAgIHJldHVybiBoYXNo
KHN0ci0+Y2hhcmFjdGVyczE2KCksIHN0ci0+bGVuZ3RoKCkpOworICAgICAgICAgICAgaWYgKHN0
cmluZy5pczhCaXQoKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gaGFzaChzdHJpbmcuY2hhcmFj
dGVyczgoKSwgc3RyaW5nLmxlbmd0aCgpKTsKKyAgICAgICAgICAgIHJldHVybiBoYXNoKHN0cmlu
Zy5jaGFyYWN0ZXJzMTYoKSwgc3RyaW5nLmxlbmd0aCgpKTsKKyAgICAgICAgfQorICAgICAgICBz
dGF0aWMgdW5zaWduZWQgaGFzaChTdHJpbmdJbXBsKiBzdHJpbmcpCisgICAgICAgIHsKKyAgICAg
ICAgICAgIEFTU0VSVChzdHJpbmcpOworICAgICAgICAgICAgcmV0dXJuIGhhc2goKnN0cmluZyk7
CiAgICAgICAgIH0KIAogICAgICAgICBzdGF0aWMgdW5zaWduZWQgaGFzaChjb25zdCBMQ2hhciog
ZGF0YSwgdW5zaWduZWQgbGVuZ3RoKQogICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gU3Ry
aW5nSGFzaGVyOjpjb21wdXRlSGFzaEFuZE1hc2tUb3A4Qml0czxMQ2hhciwgZm9sZENhc2U8TENo
YXI+ID4oZGF0YSwgbGVuZ3RoKTsKKyAgICAgICAgICAgIHJldHVybiBTdHJpbmdIYXNoZXI6OmNv
bXB1dGVIYXNoQW5kTWFza1RvcDhCaXRzPExDaGFyLCBmb2xkQ2FzZTxMQ2hhcj4+KGRhdGEsIGxl
bmd0aCk7CiAgICAgICAgIH0KIAogICAgICAgICBzdGF0aWMgaW5saW5lIHVuc2lnbmVkIGhhc2go
Y29uc3QgY2hhciogZGF0YSwgdW5zaWduZWQgbGVuZ3RoKQpAQCAtMTA3LDcgKzExMiw3IEBAIG5h
bWVzcGFjZSBXVEYgewogCiAgICAgICAgIHN0YXRpYyB1bnNpZ25lZCBoYXNoKGNvbnN0IFJlZlB0
cjxTdHJpbmdJbXBsPiYga2V5KSAKICAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIGhhc2go
a2V5LmdldCgpKTsKKyAgICAgICAgICAgIHJldHVybiBoYXNoKCprZXkpOwogICAgICAgICB9CiAK
ICAgICAgICAgc3RhdGljIGJvb2wgZXF1YWwoY29uc3QgUmVmUHRyPFN0cmluZ0ltcGw+JiBhLCBj
b25zdCBSZWZQdHI8U3RyaW5nSW1wbD4mIGIpCkBAIC0xMjksNyArMTM0LDkgQEAgbmFtZXNwYWNl
IFdURiB7CiAgICAgICAgIH0KICAgICAgICAgc3RhdGljIGJvb2wgZXF1YWwoY29uc3QgQXRvbWlj
U3RyaW5nJiBhLCBjb25zdCBBdG9taWNTdHJpbmcmIGIpCiAgICAgICAgIHsKLSAgICAgICAgICAg
IHJldHVybiAoYSA9PSBiKSB8fCBlcXVhbChhLmltcGwoKSwgYi5pbXBsKCkpOworICAgICAgICAg
ICAgLy8gRklYTUU6IElzIHRoZSAiYSA9PSBiIiBoZXJlIGEgaGVscGZ1bCBvcHRpbWl6YXRpb24/
CisgICAgICAgICAgICAvLyBJdCBtYWtlcyBhbGwgY2FzZXMgd2hlcmUgdGhlIHN0cmluZ3MgYXJl
IG5vdCBpZGVudGljYWwgc2xpZ2h0bHkgc2xvd2VyLgorICAgICAgICAgICAgcmV0dXJuIGEgPT0g
YiB8fCBlcXVhbChhLmltcGwoKSwgYi5pbXBsKCkpOwogICAgICAgICB9CiAKICAgICAgICAgc3Rh
dGljIGNvbnN0IGJvb2wgc2FmZVRvQ29tcGFyZVRvRW1wdHlPckRlbGV0ZWQgPSBmYWxzZTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nSW1wbC5jcHAgYi9Tb3VyY2UvV1RG
L3d0Zi90ZXh0L1N0cmluZ0ltcGwuY3BwCmluZGV4IDQxMDMwZTA0MzRjNTJhOTk5NTNjNjI5MmJm
NTA1NmNkZDVkN2ZlNGEuLmQwNzlkZWQwY2NjZGI3N2I1Mzc5MDQ2YmEzZmQ5NTJlZmVhYWEzYWEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nSW1wbC5jcHAKKysrIGIvU291
cmNlL1dURi93dGYvdGV4dC9TdHJpbmdJbXBsLmNwcApAQCAtNDE1LDggKzQxNSwxMCBAQCBTbG93
UGF0aDhiaXRMb3dlcjoKICAgICAgICAgICAgIExDaGFyIGNoYXJhY3RlciA9IG1fZGF0YThbaV07
CiAgICAgICAgICAgICBpZiAoIShjaGFyYWN0ZXIgJiB+MHg3RikpCiAgICAgICAgICAgICAgICAg
ZGF0YThbaV0gPSB0b0FTQ0lJTG93ZXIoY2hhcmFjdGVyKTsKLSAgICAgICAgICAgIGVsc2UKLSAg
ICAgICAgICAgICAgICBkYXRhOFtpXSA9IHN0YXRpY19jYXN0PExDaGFyPihVbmljb2RlOjp0b0xv
d2VyKGNoYXJhY3RlcikpOworICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgQVNT
RVJUKHVfdG9sb3dlcihjaGFyYWN0ZXIpIDw9IDB4RkYpOworICAgICAgICAgICAgICAgIGRhdGE4
W2ldID0gc3RhdGljX2Nhc3Q8TENoYXI+KHVfdG9sb3dlcihjaGFyYWN0ZXIpKTsKKyAgICAgICAg
ICAgIH0KICAgICAgICAgfQogCiAgICAgICAgIHJldHVybiBuZXdJbXBsLnJlbGVhc2UoKTsKQEAg
LTQ1MywxNCArNDU1LDE1IEBAIFNsb3dQYXRoOGJpdExvd2VyOgogICAgIFVDaGFyKiBkYXRhMTY7
CiAgICAgUmVmUHRyPFN0cmluZ0ltcGw+IG5ld0ltcGwgPSBjcmVhdGVVbmluaXRpYWxpemVkSW50
ZXJuYWxOb25FbXB0eShtX2xlbmd0aCwgZGF0YTE2KTsKIAotICAgIGJvb2wgZXJyb3I7Ci0gICAg
aW50MzJfdCByZWFsTGVuZ3RoID0gVW5pY29kZTo6dG9Mb3dlcihkYXRhMTYsIGxlbmd0aCwgbV9k
YXRhMTYsIG1fbGVuZ3RoLCAmZXJyb3IpOwotICAgIGlmICghZXJyb3IgJiYgcmVhbExlbmd0aCA9
PSBsZW5ndGgpCisgICAgVUVycm9yQ29kZSBzdGF0dXMgPSBVX1pFUk9fRVJST1I7CisgICAgaW50
MzJfdCByZWFsTGVuZ3RoID0gdV9zdHJUb0xvd2VyKGRhdGExNiwgbGVuZ3RoLCBtX2RhdGExNiwg
bV9sZW5ndGgsICIiLCAmc3RhdHVzKTsKKyAgICBpZiAoVV9TVUNDRVNTKHN0YXR1cykgJiYgcmVh
bExlbmd0aCA9PSBsZW5ndGgpCiAgICAgICAgIHJldHVybiBuZXdJbXBsLnJlbGVhc2UoKTsKIAog
ICAgIG5ld0ltcGwgPSBjcmVhdGVVbmluaXRpYWxpemVkKHJlYWxMZW5ndGgsIGRhdGExNik7Ci0g
ICAgVW5pY29kZTo6dG9Mb3dlcihkYXRhMTYsIHJlYWxMZW5ndGgsIG1fZGF0YTE2LCBtX2xlbmd0
aCwgJmVycm9yKTsKLSAgICBpZiAoZXJyb3IpCisgICAgc3RhdHVzID0gVV9aRVJPX0VSUk9SOwor
ICAgIHVfc3RyVG9Mb3dlcihkYXRhMTYsIHJlYWxMZW5ndGgsIG1fZGF0YTE2LCBtX2xlbmd0aCwg
IiIsICZzdGF0dXMpOworICAgIGlmIChVX0ZBSUxVUkUoc3RhdHVzKSkKICAgICAgICAgcmV0dXJu
IHRoaXM7CiAgICAgcmV0dXJuIG5ld0ltcGwucmVsZWFzZSgpOwogfQpAQCAtNTA2LDcgKzUwOSw4
IEBAIFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4gU3RyaW5nSW1wbDo6dXBwZXIoKQogICAgICAgICAg
ICAgTENoYXIgYyA9IG1fZGF0YThbaV07CiAgICAgICAgICAgICBpZiAoVU5MSUtFTFkoYyA9PSBz
bWFsbExldHRlclNoYXJwUykpCiAgICAgICAgICAgICAgICAgKytudW1iZXJTaGFycFNDaGFyYWN0
ZXJzOwotICAgICAgICAgICAgVUNoYXIgdXBwZXIgPSBVbmljb2RlOjp0b1VwcGVyKGMpOworICAg
ICAgICAgICAgQVNTRVJUKHVfdG91cHBlcihjKSA8PSAweEZGRkYpOworICAgICAgICAgICAgVUNo
YXIgdXBwZXIgPSB1X3RvdXBwZXIoYyk7CiAgICAgICAgICAgICBpZiAoVU5MSUtFTFkodXBwZXIg
PiAweGZmKSkgewogICAgICAgICAgICAgICAgIC8vIFNpbmNlIHRoaXMgdXBwZXItY2FzZWQgY2hh
cmFjdGVyIGRvZXMgbm90IGZpdCBpbiBhbiA4LWJpdCBzdHJpbmcsIHdlIG5lZWQgdG8gdGFrZSB0
aGUgMTYtYml0IHBhdGguCiAgICAgICAgICAgICAgICAgZ290byB1cGNvbnZlcnQ7CkBAIC01Mjcs
OCArNTMxLDEwIEBAIFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4gU3RyaW5nSW1wbDo6dXBwZXIoKQog
ICAgICAgICAgICAgaWYgKGMgPT0gc21hbGxMZXR0ZXJTaGFycFMpIHsKICAgICAgICAgICAgICAg
ICAqZGVzdCsrID0gJ1MnOwogICAgICAgICAgICAgICAgICpkZXN0KysgPSAnUyc7Ci0gICAgICAg
ICAgICB9IGVsc2UKLSAgICAgICAgICAgICAgICAqZGVzdCsrID0gc3RhdGljX2Nhc3Q8TENoYXI+
KFVuaWNvZGU6OnRvVXBwZXIoYykpOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAg
ICAgICBBU1NFUlQodV90b3VwcGVyKGMpIDw9IDB4RkYpOworICAgICAgICAgICAgICAgICpkZXN0
KysgPSBzdGF0aWNfY2FzdDxMQ2hhcj4odV90b3VwcGVyKGMpKTsKKyAgICAgICAgICAgIH0KICAg
ICAgICAgfQogCiAgICAgICAgIHJldHVybiBuZXdJbXBsLnJlbGVhc2UoKTsKQEAgLTU1MSwxMyAr
NTU3LDE0IEBAIHVwY29udmVydDoKICAgICAgICAgcmV0dXJuIG5ld0ltcGwucmVsZWFzZSgpOwog
CiAgICAgLy8gRG8gYSBzbG93ZXIgaW1wbGVtZW50YXRpb24gZm9yIGNhc2VzIHRoYXQgaW5jbHVk
ZSBub24tQVNDSUkgY2hhcmFjdGVycy4KLSAgICBib29sIGVycm9yOwotICAgIGludDMyX3QgcmVh
bExlbmd0aCA9IFVuaWNvZGU6OnRvVXBwZXIoZGF0YTE2LCBsZW5ndGgsIHNvdXJjZTE2LCBtX2xl
bmd0aCwgJmVycm9yKTsKLSAgICBpZiAoIWVycm9yICYmIHJlYWxMZW5ndGggPT0gbGVuZ3RoKQor
ICAgIFVFcnJvckNvZGUgc3RhdHVzID0gVV9aRVJPX0VSUk9SOworICAgIGludDMyX3QgcmVhbExl
bmd0aCA9IHVfc3RyVG9VcHBlcihkYXRhMTYsIGxlbmd0aCwgc291cmNlMTYsIG1fbGVuZ3RoLCAi
IiwgJnN0YXR1cyk7CisgICAgaWYgKFVfU1VDQ0VTUyhzdGF0dXMpICYmIHJlYWxMZW5ndGggPT0g
bGVuZ3RoKQogICAgICAgICByZXR1cm4gbmV3SW1wbDsKICAgICBuZXdJbXBsID0gY3JlYXRlVW5p
bml0aWFsaXplZChyZWFsTGVuZ3RoLCBkYXRhMTYpOwotICAgIFVuaWNvZGU6OnRvVXBwZXIoZGF0
YTE2LCByZWFsTGVuZ3RoLCBzb3VyY2UxNiwgbV9sZW5ndGgsICZlcnJvcik7Ci0gICAgaWYgKGVy
cm9yKQorICAgIHN0YXR1cyA9IFVfWkVST19FUlJPUjsKKyAgICB1X3N0clRvVXBwZXIoZGF0YTE2
LCByZWFsTGVuZ3RoLCBzb3VyY2UxNiwgbV9sZW5ndGgsICIiLCAmc3RhdHVzKTsKKyAgICBpZiAo
VV9GQUlMVVJFKHN0YXR1cykpCiAgICAgICAgIHJldHVybiB0aGlzOwogICAgIHJldHVybiBuZXdJ
bXBsLnJlbGVhc2UoKTsKIH0KQEAgLTU3NCwxMCArNTgxLDYgQEAgc3RhdGljIGlubGluZSBib29s
IG5lZWRzVHVya2lzaENhc2luZ1J1bGVzKGNvbnN0IEF0b21pY1N0cmluZyYgbG9jYWxlSWRlbnRp
ZmllcikKIAogUmVmUHRyPFN0cmluZ0ltcGw+IFN0cmluZ0ltcGw6Omxvd2VyKGNvbnN0IEF0b21p
Y1N0cmluZyYgbG9jYWxlSWRlbnRpZmllcikKIHsKLSNpZiAhVVNFKElDVV9VTklDT0RFKQotICAg
IFVOVVNFRF9QQVJBTShsb2NhbGVJZGVudGlmaWVyKTsKLSAgICByZXR1cm4gbG93ZXIoKTsKLSNl
bHNlCiAgICAgLy8gVXNlIHRoZSBtb3JlLW9wdGltaXplZCBjb2RlIHBhdGggbW9zdCBvZiB0aGUg
dGltZS4KICAgICAvLyBBc3N1bWluZyBoZXJlIHRoYXQgdGhlIG9ubHkgbG9jYWxlLXNwZWNpZmlj
IGxvd2VyY2FzaW5nIGlzIHRoZSBUdXJraXNoIGNhc2luZyBydWxlcy4KICAgICAvLyBGSVhNRTog
Q291bGQgcG9zc2libHkgb3B0aW1pemUgZnVydGhlciBieSBsb29raW5nIGZvciB0aGUgc3BlY2lm
aWMgc2VxdWVuY2VzCkBAIC02MDMsMjEgKzYwNiwxNiBAQCBSZWZQdHI8U3RyaW5nSW1wbD4gU3Ry
aW5nSW1wbDo6bG93ZXIoY29uc3QgQXRvbWljU3RyaW5nJiBsb2NhbGVJZGVudGlmaWVyKQogICAg
IGludCByZWFsTGVuZ3RoID0gdV9zdHJUb0xvd2VyKGRhdGExNiwgbGVuZ3RoLCBzb3VyY2UxNiwg
bGVuZ3RoLCAidHIiLCAmc3RhdHVzKTsKICAgICBpZiAoVV9TVUNDRVNTKHN0YXR1cykgJiYgcmVh
bExlbmd0aCA9PSBsZW5ndGgpCiAgICAgICAgIHJldHVybiBuZXdTdHJpbmc7Ci0gICAgc3RhdHVz
ID0gVV9aRVJPX0VSUk9SOwogICAgIG5ld1N0cmluZyA9IGNyZWF0ZVVuaW5pdGlhbGl6ZWQocmVh
bExlbmd0aCwgZGF0YTE2KTsKKyAgICBzdGF0dXMgPSBVX1pFUk9fRVJST1I7CiAgICAgdV9zdHJU
b0xvd2VyKGRhdGExNiwgcmVhbExlbmd0aCwgc291cmNlMTYsIGxlbmd0aCwgInRyIiwgJnN0YXR1
cyk7CiAgICAgaWYgKFVfRkFJTFVSRShzdGF0dXMpKQogICAgICAgICByZXR1cm4gdGhpczsKICAg
ICByZXR1cm4gbmV3U3RyaW5nLnJlbGVhc2UoKTsKLSNlbmRpZgogfQogCiBSZWZQdHI8U3RyaW5n
SW1wbD4gU3RyaW5nSW1wbDo6dXBwZXIoY29uc3QgQXRvbWljU3RyaW5nJiBsb2NhbGVJZGVudGlm
aWVyKQogewotI2lmICFVU0UoSUNVX1VOSUNPREUpCi0gICAgVU5VU0VEX1BBUkFNKGxvY2FsZUlk
ZW50aWZpZXIpOwotICAgIHJldHVybiB1cHBlcigpOwotI2Vsc2UKICAgICAvLyBVc2UgdGhlIG1v
cmUtb3B0aW1pemVkIGNvZGUgcGF0aCBtb3N0IG9mIHRoZSB0aW1lLgogICAgIC8vIEFzc3VtaW5n
IGhlcmUgdGhhdCB0aGUgb25seSBsb2NhbGUtc3BlY2lmaWMgbG93ZXJjYXNpbmcgaXMgdGhlIFR1
cmtpc2ggY2FzaW5nIHJ1bGVzLAogICAgIC8vIGFuZCB0aGF0IHRoZSBvbmx5IGFmZmVjdGVkIGNo
YXJhY3RlciBpcyBsb3dlcmNhc2UgImkiLgpAQCAtNjQ0LDcgKzY0Miw2IEBAIFJlZlB0cjxTdHJp
bmdJbXBsPiBTdHJpbmdJbXBsOjp1cHBlcihjb25zdCBBdG9taWNTdHJpbmcmIGxvY2FsZUlkZW50
aWZpZXIpCiAgICAgaWYgKFVfRkFJTFVSRShzdGF0dXMpKQogICAgICAgICByZXR1cm4gdGhpczsK
ICAgICByZXR1cm4gbmV3U3RyaW5nLnJlbGVhc2UoKTsKLSNlbmRpZgogfQogCiBQYXNzUmVmUHRy
PFN0cmluZ0ltcGw+IFN0cmluZ0ltcGw6OmZpbGwoVUNoYXIgY2hhcmFjdGVyKQpAQCAtNjg1LDgg
KzY4MiwxMSBAQCBQYXNzUmVmUHRyPFN0cmluZ0ltcGw+IFN0cmluZ0ltcGw6OmZvbGRDYXNlKCkK
ICAgICAgICAgICAgIHJldHVybiBuZXdJbXBsLnJlbGVhc2UoKTsKIAogICAgICAgICAvLyBEbyBh
IHNsb3dlciBpbXBsZW1lbnRhdGlvbiBmb3IgY2FzZXMgdGhhdCBpbmNsdWRlIG5vbi1BU0NJSSBM
YXRpbi0xIGNoYXJhY3RlcnMuCi0gICAgICAgIGZvciAoaW50MzJfdCBpID0gMDsgaSA8IGxlbmd0
aDsgKytpKQotICAgICAgICAgICAgZGF0YVtpXSA9IHN0YXRpY19jYXN0PExDaGFyPihVbmljb2Rl
Ojp0b0xvd2VyKG1fZGF0YThbaV0pKTsKKyAgICAgICAgLy8gRklYTUU6IFNob3VsZG4ndCB0aGlz
IHVzZSB1X2ZvbGRDYXNlIGluc3RlYWQgb2YgdV90b2xvd2VyPworICAgICAgICBmb3IgKGludDMy
X3QgaSA9IDA7IGkgPCBsZW5ndGg7ICsraSkgeworICAgICAgICAgICAgQVNTRVJUKHVfdG9sb3dl
cihtX2RhdGE4W2ldKSA8PSAweEZGKTsKKyAgICAgICAgICAgIGRhdGFbaV0gPSBzdGF0aWNfY2Fz
dDxMQ2hhcj4odV90b2xvd2VyKG1fZGF0YThbaV0pKTsKKyAgICAgICAgfQogCiAgICAgICAgIHJl
dHVybiBuZXdJbXBsLnJlbGVhc2UoKTsKICAgICB9CkBAIC03MDQsMTMgKzcwNCwxNCBAQCBQYXNz
UmVmUHRyPFN0cmluZ0ltcGw+IFN0cmluZ0ltcGw6OmZvbGRDYXNlKCkKICAgICAgICAgcmV0dXJu
IG5ld0ltcGwucmVsZWFzZSgpOwogCiAgICAgLy8gRG8gYSBzbG93ZXIgaW1wbGVtZW50YXRpb24g
Zm9yIGNhc2VzIHRoYXQgaW5jbHVkZSBub24tQVNDSUkgY2hhcmFjdGVycy4KLSAgICBib29sIGVy
cm9yOwotICAgIGludDMyX3QgcmVhbExlbmd0aCA9IFVuaWNvZGU6OmZvbGRDYXNlKGRhdGEsIGxl
bmd0aCwgbV9kYXRhMTYsIG1fbGVuZ3RoLCAmZXJyb3IpOwotICAgIGlmICghZXJyb3IgJiYgcmVh
bExlbmd0aCA9PSBsZW5ndGgpCisgICAgVUVycm9yQ29kZSBzdGF0dXMgPSBVX1pFUk9fRVJST1I7
CisgICAgaW50MzJfdCByZWFsTGVuZ3RoID0gdV9zdHJGb2xkQ2FzZShkYXRhLCBsZW5ndGgsIG1f
ZGF0YTE2LCBtX2xlbmd0aCwgVV9GT0xEX0NBU0VfREVGQVVMVCwgJnN0YXR1cyk7CisgICAgaWYg
KFVfU1VDQ0VTUyhzdGF0dXMpICYmIHJlYWxMZW5ndGggPT0gbGVuZ3RoKQogICAgICAgICByZXR1
cm4gbmV3SW1wbC5yZWxlYXNlKCk7CiAgICAgbmV3SW1wbCA9IGNyZWF0ZVVuaW5pdGlhbGl6ZWQo
cmVhbExlbmd0aCwgZGF0YSk7Ci0gICAgVW5pY29kZTo6Zm9sZENhc2UoZGF0YSwgcmVhbExlbmd0
aCwgbV9kYXRhMTYsIG1fbGVuZ3RoLCAmZXJyb3IpOwotICAgIGlmIChlcnJvcikKKyAgICBzdGF0
dXMgPSBVX1pFUk9fRVJST1I7CisgICAgdV9zdHJGb2xkQ2FzZShkYXRhLCByZWFsTGVuZ3RoLCBt
X2RhdGExNiwgbV9sZW5ndGgsIFVfRk9MRF9DQVNFX0RFRkFVTFQsICZzdGF0dXMpOworICAgIGlm
IChVX0ZBSUxVUkUoc3RhdHVzKSkKICAgICAgICAgcmV0dXJuIHRoaXM7CiAgICAgcmV0dXJuIG5l
d0ltcGwucmVsZWFzZSgpOwogfQpAQCAtOTUyLDggKzk1Myw3IEBAIGZsb2F0IFN0cmluZ0ltcGw6
OnRvRmxvYXQoYm9vbCogb2spCiBib29sIGVxdWFsSWdub3JpbmdDYXNlKGNvbnN0IExDaGFyKiBh
LCBjb25zdCBMQ2hhciogYiwgdW5zaWduZWQgbGVuZ3RoKQogewogICAgIHdoaWxlIChsZW5ndGgt
LSkgewotICAgICAgICBMQ2hhciBiYyA9ICpiKys7Ci0gICAgICAgIGlmIChmb2xkQ2FzZSgqYSsr
KSAhPSBmb2xkQ2FzZShiYykpCisgICAgICAgIGlmICh1X2ZvbGRDYXNlKCphKyssIFVfRk9MRF9D
QVNFX0RFRkFVTFQpICE9IHVfZm9sZENhc2UoKmIrKywgVV9GT0xEX0NBU0VfREVGQVVMVCkpCiAg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogICAgIHJldHVybiB0cnVlOwpAQCAtOTYy
LDggKzk2Miw3IEBAIGJvb2wgZXF1YWxJZ25vcmluZ0Nhc2UoY29uc3QgTENoYXIqIGEsIGNvbnN0
IExDaGFyKiBiLCB1bnNpZ25lZCBsZW5ndGgpCiBib29sIGVxdWFsSWdub3JpbmdDYXNlKGNvbnN0
IFVDaGFyKiBhLCBjb25zdCBMQ2hhciogYiwgdW5zaWduZWQgbGVuZ3RoKQogewogICAgIHdoaWxl
IChsZW5ndGgtLSkgewotICAgICAgICBMQ2hhciBiYyA9ICpiKys7Ci0gICAgICAgIGlmIChmb2xk
Q2FzZSgqYSsrKSAhPSBmb2xkQ2FzZShiYykpCisgICAgICAgIGlmICh1X2ZvbGRDYXNlKCphKyss
IFVfRk9MRF9DQVNFX0RFRkFVTFQpICE9IHVfZm9sZENhc2UoKmIrKywgVV9GT0xEX0NBU0VfREVG
QVVMVCkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogICAgIHJldHVybiB0cnVl
OwpAQCAtMTkxMSw3ICsxOTEwLDcgQEAgYm9vbCBlcXVhbElnbm9yaW5nQ2FzZShjb25zdCBTdHJp
bmdJbXBsKiBhLCBjb25zdCBMQ2hhciogYikKICAgICAgICAgaWYgKG9yZWQgJiB+MHg3Rikgewog
ICAgICAgICAgICAgZXF1YWwgPSB0cnVlOwogICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0g
MDsgaSAhPSBsZW5ndGg7ICsraSkKLSAgICAgICAgICAgICAgICBlcXVhbCA9IGVxdWFsICYmIChm
b2xkQ2FzZShhc1tpXSkgPT0gZm9sZENhc2UoYltpXSkpOworICAgICAgICAgICAgICAgIGVxdWFs
ID0gZXF1YWwgJiYgdV9mb2xkQ2FzZShhc1tpXSwgVV9GT0xEX0NBU0VfREVGQVVMVCkgPT0gdV9m
b2xkQ2FzZShiW2ldLCBVX0ZPTERfQ0FTRV9ERUZBVUxUKTsKICAgICAgICAgfQogICAgICAgICAK
ICAgICAgICAgcmV0dXJuIGVxdWFsICYmICFiW2xlbmd0aF07ICAgICAgICAKQEAgLTE5MzEsNyAr
MTkzMCw3IEBAIGJvb2wgZXF1YWxJZ25vcmluZ0Nhc2UoY29uc3QgU3RyaW5nSW1wbCogYSwgY29u
c3QgTENoYXIqIGIpCiAgICAgaWYgKG9yZWQgJiB+MHg3RikgewogICAgICAgICBlcXVhbCA9IHRy
dWU7CiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgIT0gbGVuZ3RoOyArK2kpIHsKLSAg
ICAgICAgICAgIGVxdWFsID0gZXF1YWwgJiYgKGZvbGRDYXNlKGFzW2ldKSA9PSBmb2xkQ2FzZShi
W2ldKSk7CisgICAgICAgICAgICBlcXVhbCA9IGVxdWFsICYmIHVfZm9sZENhc2UoYXNbaV0sIFVf
Rk9MRF9DQVNFX0RFRkFVTFQpID09IHVfZm9sZENhc2UoYltpXSwgVV9GT0xEX0NBU0VfREVGQVVM
VCk7CiAgICAgICAgIH0KICAgICB9CiAKQEAgLTE5NzAsMjQgKzE5NjksMjQgQEAgYm9vbCBlcXVh
bElnbm9yaW5nTnVsbGl0eShTdHJpbmdJbXBsKiBhLCBTdHJpbmdJbXBsKiBiKQogICAgIHJldHVy
biBlcXVhbChhLCBiKTsKIH0KIAotV1RGOjpVbmljb2RlOjpEaXJlY3Rpb24gU3RyaW5nSW1wbDo6
ZGVmYXVsdFdyaXRpbmdEaXJlY3Rpb24oYm9vbCogaGFzU3Ryb25nRGlyZWN0aW9uYWxpdHkpCitV
Q2hhckRpcmVjdGlvbiBTdHJpbmdJbXBsOjpkZWZhdWx0V3JpdGluZ0RpcmVjdGlvbihib29sKiBo
YXNTdHJvbmdEaXJlY3Rpb25hbGl0eSkKIHsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwg
bV9sZW5ndGg7ICsraSkgewotICAgICAgICBXVEY6OlVuaWNvZGU6OkRpcmVjdGlvbiBjaGFyRGly
ZWN0aW9uID0gV1RGOjpVbmljb2RlOjpkaXJlY3Rpb24oaXM4Qml0KCkgPyBtX2RhdGE4W2ldIDog
bV9kYXRhMTZbaV0pOwotICAgICAgICBpZiAoY2hhckRpcmVjdGlvbiA9PSBXVEY6OlVuaWNvZGU6
OkxlZnRUb1JpZ2h0KSB7CisgICAgICAgIFVDaGFyRGlyZWN0aW9uIGNoYXJEaXJlY3Rpb24gPSB1
X2NoYXJEaXJlY3Rpb24oaXM4Qml0KCkgPyBtX2RhdGE4W2ldIDogbV9kYXRhMTZbaV0pOworICAg
ICAgICBpZiAoY2hhckRpcmVjdGlvbiA9PSBVX0xFRlRfVE9fUklHSFQpIHsKICAgICAgICAgICAg
IGlmIChoYXNTdHJvbmdEaXJlY3Rpb25hbGl0eSkKICAgICAgICAgICAgICAgICAqaGFzU3Ryb25n
RGlyZWN0aW9uYWxpdHkgPSB0cnVlOwotICAgICAgICAgICAgcmV0dXJuIFdURjo6VW5pY29kZTo6
TGVmdFRvUmlnaHQ7CisgICAgICAgICAgICByZXR1cm4gVV9MRUZUX1RPX1JJR0hUOwogICAgICAg
ICB9Ci0gICAgICAgIGlmIChjaGFyRGlyZWN0aW9uID09IFdURjo6VW5pY29kZTo6UmlnaHRUb0xl
ZnQgfHwgY2hhckRpcmVjdGlvbiA9PSBXVEY6OlVuaWNvZGU6OlJpZ2h0VG9MZWZ0QXJhYmljKSB7
CisgICAgICAgIGlmIChjaGFyRGlyZWN0aW9uID09IFVfUklHSFRfVE9fTEVGVCB8fCBjaGFyRGly
ZWN0aW9uID09IFVfUklHSFRfVE9fTEVGVF9BUkFCSUMpIHsKICAgICAgICAgICAgIGlmIChoYXNT
dHJvbmdEaXJlY3Rpb25hbGl0eSkKICAgICAgICAgICAgICAgICAqaGFzU3Ryb25nRGlyZWN0aW9u
YWxpdHkgPSB0cnVlOwotICAgICAgICAgICAgcmV0dXJuIFdURjo6VW5pY29kZTo6UmlnaHRUb0xl
ZnQ7CisgICAgICAgICAgICByZXR1cm4gVV9SSUdIVF9UT19MRUZUOwogICAgICAgICB9CiAgICAg
fQogICAgIGlmIChoYXNTdHJvbmdEaXJlY3Rpb25hbGl0eSkKICAgICAgICAgKmhhc1N0cm9uZ0Rp
cmVjdGlvbmFsaXR5ID0gZmFsc2U7Ci0gICAgcmV0dXJuIFdURjo6VW5pY29kZTo6TGVmdFRvUmln
aHQ7CisgICAgcmV0dXJuIFVfTEVGVF9UT19SSUdIVDsKIH0KIAogUGFzc1JlZlB0cjxTdHJpbmdJ
bXBsPiBTdHJpbmdJbXBsOjphZG9wdChTdHJpbmdCdWZmZXI8TENoYXI+JiBidWZmZXIpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ0ltcGwuaCBiL1NvdXJjZS9XVEYvd3Rm
L3RleHQvU3RyaW5nSW1wbC5oCmluZGV4IGNkMmI2OWJjNGExZWUyMDg1ODU3ZDMwMGYyMzcyMjZi
ZDkwZGRmNjIuLjlhYTA2ZmNkZDQ4NzZiZjQzYWNlMzM1MTEwZGVjOGEyMWI5ZTViMjEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nSW1wbC5oCisrKyBiL1NvdXJjZS9XVEYv
d3RmL3RleHQvU3RyaW5nSW1wbC5oCkBAIC03NDUsNyArNzQ1LDcgQEAgcHVibGljOgogICAgIFdU
Rl9FWFBPUlRfU1RSSU5HX0FQSSBQYXNzUmVmUHRyPFN0cmluZ0ltcGw+IHJlcGxhY2UoU3RyaW5n
SW1wbCosIFN0cmluZ0ltcGwqKTsKICAgICBXVEZfRVhQT1JUX1NUUklOR19BUEkgUGFzc1JlZlB0
cjxTdHJpbmdJbXBsPiByZXBsYWNlKHVuc2lnbmVkIGluZGV4LCB1bnNpZ25lZCBsZW4sIFN0cmlu
Z0ltcGwqKTsKIAotICAgIFdURl9FWFBPUlRfU1RSSU5HX0FQSSBXVEY6OlVuaWNvZGU6OkRpcmVj
dGlvbiBkZWZhdWx0V3JpdGluZ0RpcmVjdGlvbihib29sKiBoYXNTdHJvbmdEaXJlY3Rpb25hbGl0
eSA9IDApOworICAgIFdURl9FWFBPUlRfU1RSSU5HX0FQSSBVQ2hhckRpcmVjdGlvbiBkZWZhdWx0
V3JpdGluZ0RpcmVjdGlvbihib29sKiBoYXNTdHJvbmdEaXJlY3Rpb25hbGl0eSA9IG51bGxwdHIp
OwogCiAjaWYgVVNFKENGKQogICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gY3JlYXRlQ0ZTdHJp
bmcoKTsKQEAgLTExMDcsNyArMTEwNyw3IEBAIGlubGluZSBib29sIGVxdWFsSWdub3JpbmdDYXNl
KGNvbnN0IGNoYXIqIGEsIGNvbnN0IExDaGFyKiBiLCB1bnNpZ25lZCBsZW5ndGgpIHsKIGlubGlu
ZSBib29sIGVxdWFsSWdub3JpbmdDYXNlKGNvbnN0IFVDaGFyKiBhLCBjb25zdCBVQ2hhciogYiwg
aW50IGxlbmd0aCkKIHsKICAgICBBU1NFUlQobGVuZ3RoID49IDApOwotICAgIHJldHVybiAhVW5p
Y29kZTo6dW1lbWNhc2VjbXAoYSwgYiwgbGVuZ3RoKTsKKyAgICByZXR1cm4gIXVfbWVtY2FzZWNt
cChhLCBiLCBsZW5ndGgsIFVfRk9MRF9DQVNFX0RFRkFVTFQpOwogfQogV1RGX0VYUE9SVF9TVFJJ
TkdfQVBJIGJvb2wgZXF1YWxJZ25vcmluZ0Nhc2VOb25OdWxsKGNvbnN0IFN0cmluZ0ltcGwqLCBj
b25zdCBTdHJpbmdJbXBsKik7CiAKQEAgLTEzMTcsNyArMTMxNyw3IEBAIHN0YXRpYyBpbmxpbmUg
Ym9vbCBpc1NwYWNlT3JOZXdsaW5lKFVDaGFyIGMpCiB7CiAgICAgLy8gVXNlIGlzQVNDSUlTcGFj
ZSgpIGZvciBiYXNpYyBMYXRpbi0xLgogICAgIC8vIFRoaXMgd2lsbCBpbmNsdWRlIG5ld2xpbmVz
LCB3aGljaCBhcmVuJ3QgaW5jbHVkZWQgaW4gVW5pY29kZSBEaXJXUy4KLSAgICByZXR1cm4gYyA8
PSAweDdGID8gV1RGOjppc0FTQ0lJU3BhY2UoYykgOiBXVEY6OlVuaWNvZGU6OmRpcmVjdGlvbihj
KSA9PSBXVEY6OlVuaWNvZGU6OldoaXRlU3BhY2VOZXV0cmFsOworICAgIHJldHVybiBjIDw9IDB4
N0YgPyBpc0FTQ0lJU3BhY2UoYykgOiB1X2NoYXJEaXJlY3Rpb24oYykgPT0gVV9XSElURV9TUEFD
RV9ORVVUUkFMOwogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dURi93dGYvdGV4dC9XVEZTdHJpbmcuaCBiL1NvdXJjZS9XVEYvd3RmL3Rl
eHQvV1RGU3RyaW5nLmgKaW5kZXggMDliNTU0MWE5OWQ3NmIxNWIxOTRiZjA1NzBkMmYxMjUxMzVh
YWU0Yy4uNjE5MTRiYjA2OGZhYzE1Y2Y4OWJhMmVlODU1NmYwZDY1YmExMzU3MSAxMDA2NDQKLS0t
IGEvU291cmNlL1dURi93dGYvdGV4dC9XVEZTdHJpbmcuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi90
ZXh0L1dURlN0cmluZy5oCkBAIC00NDAsMTMgKzQ0MCwxMyBAQCBwdWJsaWM6CiAgICAgc3RhdGlj
IFN0cmluZyBmcm9tVVRGOFdpdGhMYXRpbjFGYWxsYmFjayhjb25zdCBjaGFyKiBzLCBzaXplX3Qg
bGVuZ3RoKSB7IHJldHVybiBmcm9tVVRGOFdpdGhMYXRpbjFGYWxsYmFjayhyZWludGVycHJldF9j
YXN0PGNvbnN0IExDaGFyKj4ocyksIGxlbmd0aCk7IH07CiAgICAgCiAgICAgLy8gRGV0ZXJtaW5l
cyB0aGUgd3JpdGluZyBkaXJlY3Rpb24gdXNpbmcgdGhlIFVuaWNvZGUgQmlkaSBBbGdvcml0aG0g
cnVsZXMgUDIgYW5kIFAzLgotICAgIFdURjo6VW5pY29kZTo6RGlyZWN0aW9uIGRlZmF1bHRXcml0
aW5nRGlyZWN0aW9uKGJvb2wqIGhhc1N0cm9uZ0RpcmVjdGlvbmFsaXR5ID0gMCkgY29uc3QKKyAg
ICBVQ2hhckRpcmVjdGlvbiBkZWZhdWx0V3JpdGluZ0RpcmVjdGlvbihib29sKiBoYXNTdHJvbmdE
aXJlY3Rpb25hbGl0eSA9IG51bGxwdHIpIGNvbnN0CiAgICAgewogICAgICAgICBpZiAobV9pbXBs
KQogICAgICAgICAgICAgcmV0dXJuIG1faW1wbC0+ZGVmYXVsdFdyaXRpbmdEaXJlY3Rpb24oaGFz
U3Ryb25nRGlyZWN0aW9uYWxpdHkpOwogICAgICAgICBpZiAoaGFzU3Ryb25nRGlyZWN0aW9uYWxp
dHkpCiAgICAgICAgICAgICAqaGFzU3Ryb25nRGlyZWN0aW9uYWxpdHkgPSBmYWxzZTsKLSAgICAg
ICAgcmV0dXJuIFdURjo6VW5pY29kZTo6TGVmdFRvUmlnaHQ7CisgICAgICAgIHJldHVybiBVX0xF
RlRfVE9fUklHSFQ7CiAgICAgfQogCiAgICAgYm9vbCBjb250YWluc09ubHlBU0NJSSgpIGNvbnN0
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvdW5pY29kZS9pY3UvVW5pY29kZUljdS5oIGIv
U291cmNlL1dURi93dGYvdW5pY29kZS9pY3UvVW5pY29kZUljdS5oCmluZGV4IDdjY2E5NTViNGJl
ZGUwYTEzYjY4N2U4ZWRkOTFlMTMxMWNhZDdjZTEuLjBhMzg2YjU5ZGMyNzNjMDI4Mzc4NTIxNDAx
NjNjZWJjNDcxNzU3YzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3VuaWNvZGUvaWN1L1Vu
aWNvZGVJY3UuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi91bmljb2RlL2ljdS9Vbmljb2RlSWN1LmgK
QEAgLTIzLDIxOCArMjMsMTAgQEAKICNpZm5kZWYgV1RGX1VOSUNPREVfSUNVX0gKICNkZWZpbmUg
V1RGX1VOSUNPREVfSUNVX0gKIAotI2lmIFVTRShJQ1VfVU5JQ09ERSkKLQogI2luY2x1ZGUgPHN0
ZGxpYi5oPgogI2luY2x1ZGUgPHVuaWNvZGUvdWNoYXIuaD4KICNpbmNsdWRlIDx1bmljb2RlL3Vz
Y3JpcHQuaD4KICNpbmNsdWRlIDx1bmljb2RlL3VzdHJpbmcuaD4KICNpbmNsdWRlIDx1bmljb2Rl
L3V0ZjE2Lmg+CiAKLW5hbWVzcGFjZSBXVEYgewotCi1uYW1lc3BhY2UgVW5pY29kZSB7Ci0KLWVu
dW0gRGlyZWN0aW9uIHsKLSAgICBMZWZ0VG9SaWdodCA9IFVfTEVGVF9UT19SSUdIVCwKLSAgICBS
aWdodFRvTGVmdCA9IFVfUklHSFRfVE9fTEVGVCwKLSAgICBFdXJvcGVhbk51bWJlciA9IFVfRVVS
T1BFQU5fTlVNQkVSLAotICAgIEV1cm9wZWFuTnVtYmVyU2VwYXJhdG9yID0gVV9FVVJPUEVBTl9O
VU1CRVJfU0VQQVJBVE9SLAotICAgIEV1cm9wZWFuTnVtYmVyVGVybWluYXRvciA9IFVfRVVST1BF
QU5fTlVNQkVSX1RFUk1JTkFUT1IsCi0gICAgQXJhYmljTnVtYmVyID0gVV9BUkFCSUNfTlVNQkVS
LAotICAgIENvbW1vbk51bWJlclNlcGFyYXRvciA9IFVfQ09NTU9OX05VTUJFUl9TRVBBUkFUT1Is
Ci0gICAgQmxvY2tTZXBhcmF0b3IgPSBVX0JMT0NLX1NFUEFSQVRPUiwKLSAgICBTZWdtZW50U2Vw
YXJhdG9yID0gVV9TRUdNRU5UX1NFUEFSQVRPUiwKLSAgICBXaGl0ZVNwYWNlTmV1dHJhbCA9IFVf
V0hJVEVfU1BBQ0VfTkVVVFJBTCwKLSAgICBPdGhlck5ldXRyYWwgPSBVX09USEVSX05FVVRSQUws
Ci0gICAgTGVmdFRvUmlnaHRFbWJlZGRpbmcgPSBVX0xFRlRfVE9fUklHSFRfRU1CRURESU5HLAot
ICAgIExlZnRUb1JpZ2h0T3ZlcnJpZGUgPSBVX0xFRlRfVE9fUklHSFRfT1ZFUlJJREUsCi0gICAg
UmlnaHRUb0xlZnRBcmFiaWMgPSBVX1JJR0hUX1RPX0xFRlRfQVJBQklDLAotICAgIFJpZ2h0VG9M
ZWZ0RW1iZWRkaW5nID0gVV9SSUdIVF9UT19MRUZUX0VNQkVERElORywKLSAgICBSaWdodFRvTGVm
dE92ZXJyaWRlID0gVV9SSUdIVF9UT19MRUZUX09WRVJSSURFLAotICAgIFBvcERpcmVjdGlvbmFs
Rm9ybWF0ID0gVV9QT1BfRElSRUNUSU9OQUxfRk9STUFULAotICAgIE5vblNwYWNpbmdNYXJrID0g
VV9ESVJfTk9OX1NQQUNJTkdfTUFSSywKLSAgICBCb3VuZGFyeU5ldXRyYWwgPSBVX0JPVU5EQVJZ
X05FVVRSQUwKLX07Ci0KLWVudW0gRGVjb21wb3NpdGlvblR5cGUgewotICAgIERlY29tcG9zaXRp
b25Ob25lID0gVV9EVF9OT05FLAotICAgIERlY29tcG9zaXRpb25DYW5vbmljYWwgPSBVX0RUX0NB
Tk9OSUNBTCwKLSAgICBEZWNvbXBvc2l0aW9uQ29tcGF0ID0gVV9EVF9DT01QQVQsCi0gICAgRGVj
b21wb3NpdGlvbkNpcmNsZSA9IFVfRFRfQ0lSQ0xFLAotICAgIERlY29tcG9zaXRpb25GaW5hbCA9
IFVfRFRfRklOQUwsCi0gICAgRGVjb21wb3NpdGlvbkZvbnQgPSBVX0RUX0ZPTlQsCi0gICAgRGVj
b21wb3NpdGlvbkZyYWN0aW9uID0gVV9EVF9GUkFDVElPTiwKLSAgICBEZWNvbXBvc2l0aW9uSW5p
dGlhbCA9IFVfRFRfSU5JVElBTCwKLSAgICBEZWNvbXBvc2l0aW9uSXNvbGF0ZWQgPSBVX0RUX0lT
T0xBVEVELAotICAgIERlY29tcG9zaXRpb25NZWRpYWwgPSBVX0RUX01FRElBTCwKLSAgICBEZWNv
bXBvc2l0aW9uTmFycm93ID0gVV9EVF9OQVJST1csCi0gICAgRGVjb21wb3NpdGlvbk5vQnJlYWsg
PSBVX0RUX05PQlJFQUssCi0gICAgRGVjb21wb3NpdGlvblNtYWxsID0gVV9EVF9TTUFMTCwKLSAg
ICBEZWNvbXBvc2l0aW9uU3F1YXJlID0gVV9EVF9TUVVBUkUsCi0gICAgRGVjb21wb3NpdGlvblN1
YiA9IFVfRFRfU1VCLAotICAgIERlY29tcG9zaXRpb25TdXBlciA9IFVfRFRfU1VQRVIsCi0gICAg
RGVjb21wb3NpdGlvblZlcnRpY2FsID0gVV9EVF9WRVJUSUNBTCwKLSAgICBEZWNvbXBvc2l0aW9u
V2lkZSA9IFVfRFRfV0lERSwKLX07Ci0KLWVudW0gQ2hhckNhdGVnb3J5IHsKLSAgICBOb0NhdGVn
b3J5ID0gIDAsCi0gICAgT3RoZXJfTm90QXNzaWduZWQgPSBVX01BU0soVV9HRU5FUkFMX09USEVS
X1RZUEVTKSwKLSAgICBMZXR0ZXJfVXBwZXJjYXNlID0gVV9NQVNLKFVfVVBQRVJDQVNFX0xFVFRF
UiksCi0gICAgTGV0dGVyX0xvd2VyY2FzZSA9IFVfTUFTSyhVX0xPV0VSQ0FTRV9MRVRURVIpLAot
ICAgIExldHRlcl9UaXRsZWNhc2UgPSBVX01BU0soVV9USVRMRUNBU0VfTEVUVEVSKSwKLSAgICBM
ZXR0ZXJfTW9kaWZpZXIgPSBVX01BU0soVV9NT0RJRklFUl9MRVRURVIpLAotICAgIExldHRlcl9P
dGhlciA9IFVfTUFTSyhVX09USEVSX0xFVFRFUiksCi0KLSAgICBNYXJrX05vblNwYWNpbmcgPSBV
X01BU0soVV9OT05fU1BBQ0lOR19NQVJLKSwKLSAgICBNYXJrX0VuY2xvc2luZyA9IFVfTUFTSyhV
X0VOQ0xPU0lOR19NQVJLKSwKLSAgICBNYXJrX1NwYWNpbmdDb21iaW5pbmcgPSBVX01BU0soVV9D
T01CSU5JTkdfU1BBQ0lOR19NQVJLKSwKLQotICAgIE51bWJlcl9EZWNpbWFsRGlnaXQgPSBVX01B
U0soVV9ERUNJTUFMX0RJR0lUX05VTUJFUiksCi0gICAgTnVtYmVyX0xldHRlciA9IFVfTUFTSyhV
X0xFVFRFUl9OVU1CRVIpLAotICAgIE51bWJlcl9PdGhlciA9IFVfTUFTSyhVX09USEVSX05VTUJF
UiksCi0KLSAgICBTZXBhcmF0b3JfU3BhY2UgPSBVX01BU0soVV9TUEFDRV9TRVBBUkFUT1IpLAot
ICAgIFNlcGFyYXRvcl9MaW5lID0gVV9NQVNLKFVfTElORV9TRVBBUkFUT1IpLAotICAgIFNlcGFy
YXRvcl9QYXJhZ3JhcGggPSBVX01BU0soVV9QQVJBR1JBUEhfU0VQQVJBVE9SKSwKLQotICAgIE90
aGVyX0NvbnRyb2wgPSBVX01BU0soVV9DT05UUk9MX0NIQVIpLAotICAgIE90aGVyX0Zvcm1hdCA9
IFVfTUFTSyhVX0ZPUk1BVF9DSEFSKSwKLSAgICBPdGhlcl9Qcml2YXRlVXNlID0gVV9NQVNLKFVf
UFJJVkFURV9VU0VfQ0hBUiksCi0gICAgT3RoZXJfU3Vycm9nYXRlID0gVV9NQVNLKFVfU1VSUk9H
QVRFKSwKLQotICAgIFB1bmN0dWF0aW9uX0Rhc2ggPSBVX01BU0soVV9EQVNIX1BVTkNUVUFUSU9O
KSwKLSAgICBQdW5jdHVhdGlvbl9PcGVuID0gVV9NQVNLKFVfU1RBUlRfUFVOQ1RVQVRJT04pLAot
ICAgIFB1bmN0dWF0aW9uX0Nsb3NlID0gVV9NQVNLKFVfRU5EX1BVTkNUVUFUSU9OKSwKLSAgICBQ
dW5jdHVhdGlvbl9Db25uZWN0b3IgPSBVX01BU0soVV9DT05ORUNUT1JfUFVOQ1RVQVRJT04pLAot
ICAgIFB1bmN0dWF0aW9uX090aGVyID0gVV9NQVNLKFVfT1RIRVJfUFVOQ1RVQVRJT04pLAotCi0g
ICAgU3ltYm9sX01hdGggPSBVX01BU0soVV9NQVRIX1NZTUJPTCksCi0gICAgU3ltYm9sX0N1cnJl
bmN5ID0gVV9NQVNLKFVfQ1VSUkVOQ1lfU1lNQk9MKSwKLSAgICBTeW1ib2xfTW9kaWZpZXIgPSBV
X01BU0soVV9NT0RJRklFUl9TWU1CT0wpLAotICAgIFN5bWJvbF9PdGhlciA9IFVfTUFTSyhVX09U
SEVSX1NZTUJPTCksCi0KLSAgICBQdW5jdHVhdGlvbl9Jbml0aWFsUXVvdGUgPSBVX01BU0soVV9J
TklUSUFMX1BVTkNUVUFUSU9OKSwKLSAgICBQdW5jdHVhdGlvbl9GaW5hbFF1b3RlID0gVV9NQVNL
KFVfRklOQUxfUFVOQ1RVQVRJT04pCi19OwotCi1pbmxpbmUgVUNoYXIzMiBmb2xkQ2FzZShVQ2hh
cjMyIGMpCi17Ci0gICAgcmV0dXJuIHVfZm9sZENhc2UoYywgVV9GT0xEX0NBU0VfREVGQVVMVCk7
Ci19Ci0KLWlubGluZSBpbnQgZm9sZENhc2UoVUNoYXIqIHJlc3VsdCwgaW50IHJlc3VsdExlbmd0
aCwgY29uc3QgVUNoYXIqIHNyYywgaW50IHNyY0xlbmd0aCwgYm9vbCogZXJyb3IpCi17Ci0gICAg
VUVycm9yQ29kZSBzdGF0dXMgPSBVX1pFUk9fRVJST1I7Ci0gICAgaW50IHJlYWxMZW5ndGggPSB1
X3N0ckZvbGRDYXNlKHJlc3VsdCwgcmVzdWx0TGVuZ3RoLCBzcmMsIHNyY0xlbmd0aCwgVV9GT0xE
X0NBU0VfREVGQVVMVCwgJnN0YXR1cyk7Ci0gICAgKmVycm9yID0gIVVfU1VDQ0VTUyhzdGF0dXMp
OwotICAgIHJldHVybiByZWFsTGVuZ3RoOwotfQotCi1pbmxpbmUgaW50IHRvTG93ZXIoVUNoYXIq
IHJlc3VsdCwgaW50IHJlc3VsdExlbmd0aCwgY29uc3QgVUNoYXIqIHNyYywgaW50IHNyY0xlbmd0
aCwgYm9vbCogZXJyb3IpCi17Ci0gICAgVUVycm9yQ29kZSBzdGF0dXMgPSBVX1pFUk9fRVJST1I7
Ci0gICAgaW50IHJlYWxMZW5ndGggPSB1X3N0clRvTG93ZXIocmVzdWx0LCByZXN1bHRMZW5ndGgs
IHNyYywgc3JjTGVuZ3RoLCAiIiwgJnN0YXR1cyk7Ci0gICAgKmVycm9yID0gISFVX0ZBSUxVUkUo
c3RhdHVzKTsKLSAgICByZXR1cm4gcmVhbExlbmd0aDsKLX0KLQotaW5saW5lIFVDaGFyMzIgdG9M
b3dlcihVQ2hhcjMyIGMpCi17Ci0gICAgcmV0dXJuIHVfdG9sb3dlcihjKTsKLX0KLQotaW5saW5l
IFVDaGFyMzIgdG9VcHBlcihVQ2hhcjMyIGMpCi17Ci0gICAgcmV0dXJuIHVfdG91cHBlcihjKTsK
LX0KLQotaW5saW5lIGludCB0b1VwcGVyKFVDaGFyKiByZXN1bHQsIGludCByZXN1bHRMZW5ndGgs
IGNvbnN0IFVDaGFyKiBzcmMsIGludCBzcmNMZW5ndGgsIGJvb2wqIGVycm9yKQotewotICAgIFVF
cnJvckNvZGUgc3RhdHVzID0gVV9aRVJPX0VSUk9SOwotICAgIGludCByZWFsTGVuZ3RoID0gdV9z
dHJUb1VwcGVyKHJlc3VsdCwgcmVzdWx0TGVuZ3RoLCBzcmMsIHNyY0xlbmd0aCwgIiIsICZzdGF0
dXMpOwotICAgICplcnJvciA9ICEhVV9GQUlMVVJFKHN0YXR1cyk7Ci0gICAgcmV0dXJuIHJlYWxM
ZW5ndGg7Ci19Ci0KLWlubGluZSBVQ2hhcjMyIHRvVGl0bGVDYXNlKFVDaGFyMzIgYykKLXsKLSAg
ICByZXR1cm4gdV90b3RpdGxlKGMpOwotfQotCi1pbmxpbmUgYm9vbCBpc0FyYWJpY0NoYXIoVUNo
YXIzMiBjKQotewotICAgICAgcmV0dXJuIHVibG9ja19nZXRDb2RlKGMpID09IFVCTE9DS19BUkFC
SUM7Ci19Ci0KLWlubGluZSBib29sIGlzQWxwaGFudW1lcmljKFVDaGFyMzIgYykKLXsKLSAgICBy
ZXR1cm4gdV9pc2FsbnVtKGMpOwotfQotCi1pbmxpbmUgYm9vbCBpc1NlcGFyYXRvclNwYWNlKFVD
aGFyMzIgYykKLXsKLSAgICByZXR1cm4gdV9jaGFyVHlwZShjKSA9PSBVX1NQQUNFX1NFUEFSQVRP
UjsKLX0KLQotaW5saW5lIGJvb2wgaXNQcmludGFibGVDaGFyKFVDaGFyMzIgYykKLXsKLSAgICBy
ZXR1cm4gISF1X2lzcHJpbnQoYyk7Ci19Ci0KLWlubGluZSBib29sIGlzUHVuY3QoVUNoYXIzMiBj
KQotewotICAgIHJldHVybiAhIXVfaXNwdW5jdChjKTsKLX0KLQotI2RlZmluZSBXS19MQl9DT05E
SVRJT05BTF9KQVBBTkVTRV9TVEFSVEVSIDM3Ci0KLWlubGluZSBib29sIHJlcXVpcmVzQ29tcGxl
eENvbnRleHRGb3JXb3JkQnJlYWtpbmcoVUNoYXIzMiBjKQotewotICAgIGludDMyX3QgcHJvcCA9
IHVfZ2V0SW50UHJvcGVydHlWYWx1ZShjLCBVQ0hBUl9MSU5FX0JSRUFLKTsKLSAgICByZXR1cm4g
cHJvcCA9PSBVX0xCX0NPTVBMRVhfQ09OVEVYVCB8fCBwcm9wID09IFdLX0xCX0NPTkRJVElPTkFM
X0pBUEFORVNFX1NUQVJURVIgfHwgcHJvcCA9PSBVX0xCX0lERU9HUkFQSElDOwotfQotCi1pbmxp
bmUgVUNoYXIzMiBtaXJyb3JlZENoYXIoVUNoYXIzMiBjKQotewotICAgIHJldHVybiB1X2NoYXJN
aXJyb3IoYyk7Ci19Ci0KLWlubGluZSBDaGFyQ2F0ZWdvcnkgY2F0ZWdvcnkoVUNoYXIzMiBjKQot
ewotICAgIHJldHVybiBzdGF0aWNfY2FzdDxDaGFyQ2F0ZWdvcnk+KFVfR0VUX0dDX01BU0soYykp
OwotfQotCi1pbmxpbmUgRGlyZWN0aW9uIGRpcmVjdGlvbihVQ2hhcjMyIGMpCi17Ci0gICAgcmV0
dXJuIHN0YXRpY19jYXN0PERpcmVjdGlvbj4odV9jaGFyRGlyZWN0aW9uKGMpKTsKLX0KLQotaW5s
aW5lIGJvb2wgaXNMb3dlcihVQ2hhcjMyIGMpCi17Ci0gICAgcmV0dXJuICEhdV9pc2xvd2VyKGMp
OwotfQotCi1pbmxpbmUgdWludDhfdCBjb21iaW5pbmdDbGFzcyhVQ2hhcjMyIGMpCi17Ci0gICAg
cmV0dXJuIHVfZ2V0Q29tYmluaW5nQ2xhc3MoYyk7Ci19Ci0KLWlubGluZSBEZWNvbXBvc2l0aW9u
VHlwZSBkZWNvbXBvc2l0aW9uVHlwZShVQ2hhcjMyIGMpCi17Ci0gICAgcmV0dXJuIHN0YXRpY19j
YXN0PERlY29tcG9zaXRpb25UeXBlPih1X2dldEludFByb3BlcnR5VmFsdWUoYywgVUNIQVJfREVD
T01QT1NJVElPTl9UWVBFKSk7Ci19Ci0KLWlubGluZSBpbnQgdW1lbWNhc2VjbXAoY29uc3QgVUNo
YXIqIGEsIGNvbnN0IFVDaGFyKiBiLCBpbnQgbGVuKQotewotICAgIHJldHVybiB1X21lbWNhc2Vj
bXAoYSwgYiwgbGVuLCBVX0ZPTERfQ0FTRV9ERUZBVUxUKTsKLX0KLQotfSAvLyBuYW1lc3BhY2Ug
VW5pY29kZQotCi19IC8vIG5hbWVzcGFjZSBXVEYKLQotI2VuZGlmIC8vIFVTRShJQ1VfVU5JQ09E
RSkKLQogI2VuZGlmIC8vIFdURl9VTklDT0RFX0lDVV9ICmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RG
L3d0Zi91bmljb2RlL3djaGFyL1VuaWNvZGVXY2hhci5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi91bmlj
b2RlL3djaGFyL1VuaWNvZGVXY2hhci5jcHAKaW5kZXggZjk4MDkwMGM4NDAwMDFlOWY0ODVlMzgy
Y2ViMDZjNDEyOGM2MWI5NC4uZjE3YzA1MjY3YTQwZmYxNjYxOTg4NTdiZjI0NjdmMzViMDMyZWVj
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvdW5pY29kZS93Y2hhci9Vbmljb2RlV2NoYXIu
Y3BwCisrKyBiL1NvdXJjZS9XVEYvd3RmL3VuaWNvZGUvd2NoYXIvVW5pY29kZVdjaGFyLmNwcApA
QCAtMjcsNDEgKzI3LDYzIEBACiAKICNpbmNsdWRlIDxhbGdvcml0aG0+CiAKLW5hbWVzcGFjZSBX
VEYgewotbmFtZXNwYWNlIFVuaWNvZGUgeworaW50IHVub3JtX25vcm1hbGl6ZShjb25zdCBVQ2hh
ciosIGludDMyX3QsIFVOb3JtYWxpemF0aW9uTW9kZSwgaW50MzJfdCwgVUNoYXIqLCBpbnQzMl90
LCBVRXJyb3JDb2RlKikKK3sKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKK30KIAotQ2hhckNh
dGVnb3J5IGNhdGVnb3J5KFVDaGFyMzIpCitVQ2hhckRpcmVjdGlvbiB1X2NoYXJEaXJlY3Rpb24o
VUNoYXIzMikKIHsKLSAgICByZXR1cm4gTm9DYXRlZ29yeTsgLy8gRklYTUU6IGltcGxlbWVudCEK
KyAgICByZXR1cm4gVV9MRUZUX1RPX1JJR0hUOyAvLyBGSVhNRTogaW1wbGVtZW50IQogfQogCi11
bnNpZ25lZCBjaGFyIGNvbWJpbmluZ0NsYXNzKFVDaGFyMzIpCitVQ2hhcjMyIHVfY2hhck1pcnJv
cihVQ2hhcjMyIGNoYXJhY3RlcikKIHsKLSAgICByZXR1cm4gMDsgLy8gRklYTUU6IGltcGxlbWVu
dCEKKyAgICAvLyBGSVhNRTogSW1wbGVtZW50IHRoaXMuCisgICAgcmV0dXJuIGNoYXJhY3RlcjsK
IH0KIAotRGlyZWN0aW9uIGRpcmVjdGlvbihVQ2hhcjMyKQoraW50OF90IHVfY2hhclR5cGUoVUNo
YXIzMikKIHsKLSAgICByZXR1cm4gTGVmdFRvUmlnaHQ7IC8vIEZJWE1FOiBpbXBsZW1lbnQhCisg
ICAgLy8gRklYTUU6IEltcGxlbWVudCB0aGlzLgorICAgIHJldHVybiBVX0NIQVJfQ0FURUdPUllf
VU5LTk9XTjsKIH0KIAotRGVjb21wb3NpdGlvblR5cGUgZGVjb21wb3NpdGlvblR5cGUoVUNoYXIz
MikKK3VpbnQ4X3QgdV9nZXRDb21iaW5pbmdDbGFzcyhVQ2hhcjMyKQogewotICAgIHJldHVybiBE
ZWNvbXBvc2l0aW9uTm9uZTsgLy8gRklYTUU6IGltcGxlbWVudCEKKyAgICAvLyBGSVhNRTogSW1w
bGVtZW50IHRoaXMuCisgICAgcmV0dXJuIDA7CiB9CiAKLWJvb2wgcmVxdWlyZXNDb21wbGV4Q29u
dGV4dEZvcldvcmRCcmVha2luZyhVQ2hhcjMyKQoraW50IHVfZ2V0SW50UHJvcGVydHlWYWx1ZShV
Q2hhcjMyLCBVUHJvcGVydHkgcHJvcGVydHkpCiB7Ci0gICAgcmV0dXJuIGZhbHNlOyAvLyBGSVhN
RTogaW1wbGVtZW50IQorICAgIHN3aXRjaCAocHJvcGVydHkpIHsKKyAgICBjYXNlIFVDSEFSX0RF
Q09NUE9TSVRJT05fVFlQRToKKyAgICAgICAgLy8gRklYTUU6IEltcGxlbWVudCB0aGlzLgorICAg
ICAgICByZXR1cm4gVV9EVF9OT05FOworICAgIGNhc2UgVUNIQVJfTElORV9CUkVBSzoKKyAgICAg
ICAgLy8gRklYTUU6IEltcGxlbWVudCB0aGlzLgorICAgICAgICByZXR1cm4gVV9MQl9VTktOT1dO
OworICAgIH0KKworICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiAwOwogfQog
Ci1VQ2hhcjMyIG1pcnJvcmVkQ2hhcihVQ2hhcjMyIGMpCitpbnQgdV9tZW1jYXNlY21wKGNvbnN0
IFVDaGFyKiBhLCBjb25zdCBVQ2hhciogYiwgaW50IGxlbmd0aCwgdW5zaWduZWQgb3B0aW9ucykK
IHsKLSAgICByZXR1cm4gYzsgLy8gRklYTUU6IGltcGxlbWVudCEKKyAgICBmb3IgKGludCBpID0g
MDsgaSA8IGxlbmd0aDsgKytpKSB7CisgICAgICAgIFVDaGFyIGMxID0gdV9mb2xkQ2FzZShhW2ld
LCBvcHRpb25zKTsKKyAgICAgICAgVUNoYXIgYzIgPSB1X2ZvbGRDYXNlKGJbaV0sIG9wdGlvbnMp
OworICAgICAgICBpZiAoYzEgIT0gYzIpCisgICAgICAgICAgICByZXR1cm4gYzEgLSBjMjsKKyAg
ICB9CisKKyAgICByZXR1cm4gMDsKIH0KIAogdGVtcGxhdGU8VUNoYXIgRnVuY3Rpb24oVUNoYXIp
Pgotc3RhdGljIGlubGluZSBpbnQgY29udmVydFdpdGhGdW5jdGlvbihVQ2hhciogcmVzdWx0LCBp
bnQgcmVzdWx0TGVuZ3RoLCBjb25zdCBVQ2hhciogc291cmNlLCBpbnQgc291cmNlTGVuZ3RoLCBi
b29sKiBpc0Vycm9yKQorc3RhdGljIGlubGluZSBpbnQgY29udmVydFdpdGhGdW5jdGlvbihVQ2hh
ciogcmVzdWx0LCBpbnQgcmVzdWx0TGVuZ3RoLCBjb25zdCBVQ2hhciogc291cmNlLCBpbnQgc291
cmNlTGVuZ3RoLCBVRXJyb3JDb2RlJiBzdGF0dXMpCiB7CiAgICAgVUNoYXIqIHJlc3VsdEl0ZXJh
dG9yID0gcmVzdWx0OwogICAgIFVDaGFyKiByZXN1bHRFbmQgPSByZXN1bHQgKyBzdGQ6Om1pbihy
ZXN1bHRMZW5ndGgsIHNvdXJjZUxlbmd0aCk7CkBAIC03MSwyNCArOTMsMjIgQEAgc3RhdGljIGlu
bGluZSBpbnQgY29udmVydFdpdGhGdW5jdGlvbihVQ2hhciogcmVzdWx0LCBpbnQgcmVzdWx0TGVu
Z3RoLCBjb25zdCBVQ2gKICAgICBpZiAoc291cmNlTGVuZ3RoIDwgcmVzdWx0TGVuZ3RoKQogICAg
ICAgICAqcmVzdWx0SXRlcmF0b3IgPSAnXDAnOwogCi0gICAgKmlzRXJyb3IgPSBzb3VyY2VMZW5n
dGggPiByZXN1bHRMZW5ndGg7CisgICAgc3RhdHVzID0gc291cmNlTGVuZ3RoID4gcmVzdWx0TGVu
Z3RoID8gVV9FUlJPUiA6IFVfWkVST19FUlJPUjsKICAgICByZXR1cm4gc291cmNlTGVuZ3RoOwog
fQogCi1pbnQgZm9sZENhc2UoVUNoYXIqIHJlc3VsdCwgaW50IHJlc3VsdExlbmd0aCwgY29uc3Qg
VUNoYXIqIHNvdXJjZSwgaW50IHNvdXJjZUxlbmd0aCwgYm9vbCogaXNFcnJvcikKK2ludCB1X3N0
ckZvbGRDYXNlKFVDaGFyKiByZXN1bHQsIGludCByZXN1bHRMZW5ndGgsIGNvbnN0IFVDaGFyKiBz
b3VyY2UsIGludCBzb3VyY2VMZW5ndGgsIHVuc2lnbmVkIG9wdGlvbnMsIFVFcnJvckNvZGUqIHN0
YXR1cykKIHsKLSAgICByZXR1cm4gY29udmVydFdpdGhGdW5jdGlvbjxmb2xkQ2FzZT4ocmVzdWx0
LCByZXN1bHRMZW5ndGgsIHNvdXJjZSwgc291cmNlTGVuZ3RoLCBpc0Vycm9yKTsKKyAgICBBU1NF
UlRfVU5VU0VEKG9wdGlvbnMsIG9wdGlvbnMgPT0gVV9GT0xEX0NBU0VfREVGQVVMVCk7CisgICAg
cmV0dXJuIGNvbnZlcnRXaXRoRnVuY3Rpb248dV9mb2xkQ2FzZT4ocmVzdWx0LCByZXN1bHRMZW5n
dGgsIHNvdXJjZSwgc291cmNlTGVuZ3RoLCAqc3RhdHVzKTsKIH0KIAotaW50IHRvTG93ZXIoVUNo
YXIqIHJlc3VsdCwgaW50IHJlc3VsdExlbmd0aCwgY29uc3QgVUNoYXIqIHNvdXJjZSwgaW50IHNv
dXJjZUxlbmd0aCwgYm9vbCogaXNFcnJvcikKK2ludCB1X3N0clRvTG93ZXIoVUNoYXIqIHJlc3Vs
dCwgaW50IHJlc3VsdExlbmd0aCwgY29uc3QgVUNoYXIqIHNvdXJjZSwgaW50IHNvdXJjZUxlbmd0
aCwgY29uc3QgY2hhciosIFVFcnJvckNvZGUqIHN0YXR1cykKIHsKLSAgICByZXR1cm4gY29udmVy
dFdpdGhGdW5jdGlvbjx0b0xvd2VyPihyZXN1bHQsIHJlc3VsdExlbmd0aCwgc291cmNlLCBzb3Vy
Y2VMZW5ndGgsIGlzRXJyb3IpOworICAgIHJldHVybiBjb252ZXJ0V2l0aEZ1bmN0aW9uPHVfdG9s
b3dlcj4ocmVzdWx0LCByZXN1bHRMZW5ndGgsIHNvdXJjZSwgc291cmNlTGVuZ3RoLCAqc3RhdHVz
KTsKIH0KIAotaW50IHRvVXBwZXIoVUNoYXIqIHJlc3VsdCwgaW50IHJlc3VsdExlbmd0aCwgY29u
c3QgVUNoYXIqIHNvdXJjZSwgaW50IHNvdXJjZUxlbmd0aCwgYm9vbCogaXNFcnJvcikKK2ludCB1
X3N0clRvVXBwZXIoVUNoYXIqIHJlc3VsdCwgaW50IHJlc3VsdExlbmd0aCwgY29uc3QgVUNoYXIq
IHNvdXJjZSwgaW50IHNvdXJjZUxlbmd0aCwgY29uc3QgY2hhciosIFVFcnJvckNvZGUqIHN0YXR1
cykKIHsKLSAgICByZXR1cm4gY29udmVydFdpdGhGdW5jdGlvbjx0b1VwcGVyPihyZXN1bHQsIHJl
c3VsdExlbmd0aCwgc291cmNlLCBzb3VyY2VMZW5ndGgsIGlzRXJyb3IpOworICAgIHJldHVybiBj
b252ZXJ0V2l0aEZ1bmN0aW9uPHVfdG91cHBlcj4ocmVzdWx0LCByZXN1bHRMZW5ndGgsIHNvdXJj
ZSwgc291cmNlTGVuZ3RoLCAqc3RhdHVzKTsKIH0KLQotfSAvLyBuYW1lc3BhY2UgVW5pY29kZQot
fSAvLyBuYW1lc3BhY2UgV1RGCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi91bmljb2RlL3dj
aGFyL1VuaWNvZGVXY2hhci5oIGIvU291cmNlL1dURi93dGYvdW5pY29kZS93Y2hhci9Vbmljb2Rl
V2NoYXIuaAppbmRleCBmZTEwOTRiMzc4MWQ2NzUxYzkzY2E2ZjRiNGYwYmU3YjE1NWI5YzUxLi4y
MjA2ZWRlODE5MGYxYjk4MGZmNWFjZmVhNmQxMDc1OGQ5NDNmYTMzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV1RGL3d0Zi91bmljb2RlL3djaGFyL1VuaWNvZGVXY2hhci5oCisrKyBiL1NvdXJjZS9XVEYv
d3RmL3VuaWNvZGUvd2NoYXIvVW5pY29kZVdjaGFyLmgKQEAgLTMzLDEzNSArMzMsMTAwIEBACiB0
eXBlZGVmIHdjaGFyX3QgVUNoYXI7CiB0eXBlZGVmIHVpbnQzMl90IFVDaGFyMzI7CiAKLW5hbWVz
cGFjZSBXVEYgewotbmFtZXNwYWNlIFVuaWNvZGUgewotCi1lbnVtIERpcmVjdGlvbiB7Ci0gICAg
TGVmdFRvUmlnaHQsCi0gICAgUmlnaHRUb0xlZnQsCi0gICAgRXVyb3BlYW5OdW1iZXIsCi0gICAg
RXVyb3BlYW5OdW1iZXJTZXBhcmF0b3IsCi0gICAgRXVyb3BlYW5OdW1iZXJUZXJtaW5hdG9yLAot
ICAgIEFyYWJpY051bWJlciwKLSAgICBDb21tb25OdW1iZXJTZXBhcmF0b3IsCi0gICAgQmxvY2tT
ZXBhcmF0b3IsCi0gICAgU2VnbWVudFNlcGFyYXRvciwKLSAgICBXaGl0ZVNwYWNlTmV1dHJhbCwK
LSAgICBPdGhlck5ldXRyYWwsCi0gICAgTGVmdFRvUmlnaHRFbWJlZGRpbmcsCi0gICAgTGVmdFRv
UmlnaHRPdmVycmlkZSwKLSAgICBSaWdodFRvTGVmdEFyYWJpYywKLSAgICBSaWdodFRvTGVmdEVt
YmVkZGluZywKLSAgICBSaWdodFRvTGVmdE92ZXJyaWRlLAotICAgIFBvcERpcmVjdGlvbmFsRm9y
bWF0LAotICAgIE5vblNwYWNpbmdNYXJrLAotICAgIEJvdW5kYXJ5TmV1dHJhbAotfTsKK2VudW0g
VUJsb2NrQ29kZSB7IFVCTE9DS19VTktOT1dOLCBVQkxPQ0tfQVJBQklDIH07CiAKLWVudW0gRGVj
b21wb3NpdGlvblR5cGUgewotICAgIERlY29tcG9zaXRpb25Ob25lLAotICAgIERlY29tcG9zaXRp
b25DYW5vbmljYWwsCi0gICAgRGVjb21wb3NpdGlvbkNvbXBhdCwKLSAgICBEZWNvbXBvc2l0aW9u
Q2lyY2xlLAotICAgIERlY29tcG9zaXRpb25GaW5hbCwKLSAgICBEZWNvbXBvc2l0aW9uRm9udCwK
LSAgICBEZWNvbXBvc2l0aW9uRnJhY3Rpb24sCi0gICAgRGVjb21wb3NpdGlvbkluaXRpYWwsCi0g
ICAgRGVjb21wb3NpdGlvbklzb2xhdGVkLAotICAgIERlY29tcG9zaXRpb25NZWRpYWwsCi0gICAg
RGVjb21wb3NpdGlvbk5hcnJvdywKLSAgICBEZWNvbXBvc2l0aW9uTm9CcmVhaywKLSAgICBEZWNv
bXBvc2l0aW9uU21hbGwsCi0gICAgRGVjb21wb3NpdGlvblNxdWFyZSwKLSAgICBEZWNvbXBvc2l0
aW9uU3ViLAotICAgIERlY29tcG9zaXRpb25TdXBlciwKLSAgICBEZWNvbXBvc2l0aW9uVmVydGlj
YWwsCi0gICAgRGVjb21wb3NpdGlvbldpZGUKK2VudW0gVUNoYXJDYXRlZ29yeSB7CisgICAgVV9D
SEFSX0NBVEVHT1JZX1VOS05PV04sCisgICAgVV9QQVJBR1JBUEhfU0VQQVJBVE9SLAorICAgIFVf
U1BBQ0VfU0VQQVJBVE9SCiB9OwogCi1lbnVtIENoYXJDYXRlZ29yeSB7Ci0gICAgTm9DYXRlZ29y
eSA9IDAsCi0gICAgT3RoZXJfTm90QXNzaWduZWQgPSBVX01BU0soMCksCi0gICAgTGV0dGVyX1Vw
cGVyY2FzZSA9IFVfTUFTSygxKSwKLSAgICBMZXR0ZXJfTG93ZXJjYXNlID0gVV9NQVNLKDIpLAot
ICAgIExldHRlcl9UaXRsZWNhc2UgPSBVX01BU0soMyksCi0gICAgTGV0dGVyX01vZGlmaWVyID0g
VV9NQVNLKDQpLAotICAgIExldHRlcl9PdGhlciA9IFVfTUFTSyg1KSwKLQotICAgIE1hcmtfTm9u
U3BhY2luZyA9IFVfTUFTSyg2KSwKLSAgICBNYXJrX0VuY2xvc2luZyA9IFVfTUFTSyg3KSwKLSAg
ICBNYXJrX1NwYWNpbmdDb21iaW5pbmcgPSBVX01BU0soOCksCi0KLSAgICBOdW1iZXJfRGVjaW1h
bERpZ2l0ID0gVV9NQVNLKDkpLAotICAgIE51bWJlcl9MZXR0ZXIgPSBVX01BU0soMTApLAotICAg
IE51bWJlcl9PdGhlciA9IFVfTUFTSygxMSksCi0KLSAgICBTZXBhcmF0b3JfU3BhY2UgPSBVX01B
U0soMTIpLAotICAgIFNlcGFyYXRvcl9MaW5lID0gVV9NQVNLKDEzKSwKLSAgICBTZXBhcmF0b3Jf
UGFyYWdyYXBoID0gVV9NQVNLKDE0KSwKLQotICAgIE90aGVyX0NvbnRyb2wgPSBVX01BU0soMTUp
LAotICAgIE90aGVyX0Zvcm1hdCA9IFVfTUFTSygxNiksCi0gICAgT3RoZXJfUHJpdmF0ZVVzZSA9
IFVfTUFTSygxNyksCi0gICAgT3RoZXJfU3Vycm9nYXRlID0gVV9NQVNLKDE4KSwKLQotICAgIFB1
bmN0dWF0aW9uX0Rhc2ggPSBVX01BU0soMTkpLAotICAgIFB1bmN0dWF0aW9uX09wZW4gPSBVX01B
U0soMjApLAotICAgIFB1bmN0dWF0aW9uX0Nsb3NlID0gVV9NQVNLKDIxKSwKLSAgICBQdW5jdHVh
dGlvbl9Db25uZWN0b3IgPSBVX01BU0soMjIpLAotICAgIFB1bmN0dWF0aW9uX090aGVyID0gVV9N
QVNLKDIzKSwKLQotICAgIFN5bWJvbF9NYXRoID0gVV9NQVNLKDI0KSwKLSAgICBTeW1ib2xfQ3Vy
cmVuY3kgPSBVX01BU0soMjUpLAotICAgIFN5bWJvbF9Nb2RpZmllciA9IFVfTUFTSygyNiksCi0g
ICAgU3ltYm9sX090aGVyID0gVV9NQVNLKDI3KSwKLQotICAgIFB1bmN0dWF0aW9uX0luaXRpYWxR
dW90ZSA9IFVfTUFTSygyOCksCi0gICAgUHVuY3R1YXRpb25fRmluYWxRdW90ZSA9IFVfTUFTSygy
OSkKK2VudW0gVUNoYXJEaXJlY3Rpb24geworICAgIFVfTEVGVF9UT19SSUdIVCwKKyAgICBVX1JJ
R0hUX1RPX0xFRlQsCisgICAgVV9FVVJPUEVBTl9OVU1CRVIsCisgICAgVV9FVVJPUEVBTl9OVU1C
RVJfU0VQQVJBVE9SLAorICAgIFVfRVVST1BFQU5fTlVNQkVSX1RFUk1JTkFUT1IsCisgICAgVV9B
UkFCSUNfTlVNQkVSLAorICAgIFVfQ09NTU9OX05VTUJFUl9TRVBBUkFUT1IsCisgICAgVV9CTE9D
S19TRVBBUkFUT1IsCisgICAgVV9TRUdNRU5UX1NFUEFSQVRPUiwKKyAgICBVX1dISVRFX1NQQUNF
X05FVVRSQUwsCisgICAgVV9PVEhFUl9ORVVUUkFMLAorICAgIFVfTEVGVF9UT19SSUdIVF9FTUJF
RERJTkcsCisgICAgVV9MRUZUX1RPX1JJR0hUX09WRVJSSURFLAorICAgIFVfUklHSFRfVE9fTEVG
VF9BUkFCSUMsCisgICAgVV9SSUdIVF9UT19MRUZUX0VNQkVERElORywKKyAgICBVX1JJR0hUX1RP
X0xFRlRfT1ZFUlJJREUsCisgICAgVV9QT1BfRElSRUNUSU9OQUxfRk9STUFULAorICAgIFVfRElS
X05PTl9TUEFDSU5HX01BUkssCisgICAgVV9CT1VOREFSWV9ORVVUUkFMCiB9OwogCi0KLVdURl9F
WFBPUlRfUFJJVkFURSBDaGFyQ2F0ZWdvcnkgY2F0ZWdvcnkoVUNoYXIzMik7Ci1XVEZfRVhQT1JU
X1BSSVZBVEUgdW5zaWduZWQgY2hhciBjb21iaW5pbmdDbGFzcyhVQ2hhcjMyKTsKLVdURl9FWFBP
UlRfUFJJVkFURSBEaXJlY3Rpb24gZGlyZWN0aW9uKFVDaGFyMzIpOwotV1RGX0VYUE9SVF9QUklW
QVRFIERlY29tcG9zaXRpb25UeXBlIGRlY29tcG9zaXRpb25UeXBlKFVDaGFyMzIpOwotV1RGX0VY
UE9SVF9QUklWQVRFIGJvb2wgcmVxdWlyZXNDb21wbGV4Q29udGV4dEZvcldvcmRCcmVha2luZyhV
Q2hhcjMyKTsKLVdURl9FWFBPUlRfUFJJVkFURSBVQ2hhcjMyIG1pcnJvcmVkQ2hhcihVQ2hhcjMy
KTsKLQotaW5saW5lIGJvb2wgaXNBbHBoYW51bWVyaWMoVUNoYXIgYykgeyByZXR1cm4gISFpc3dh
bG51bShjKTsgfQotaW5saW5lIGJvb2wgaXNEaWdpdChVQ2hhciBjKSB7IHJldHVybiAhIWlzd2Rp
Z2l0KGMpOyB9Ci1pbmxpbmUgYm9vbCBpc0xldHRlcihVQ2hhciBjKSB7IHJldHVybiAhIWlzd2Fs
cGhhKGMpOyB9Ci1pbmxpbmUgYm9vbCBpc0xvd2VyKFVDaGFyIGMpIHsgcmV0dXJuICEhaXN3bG93
ZXIoYyk7IH0KLWlubGluZSBib29sIGlzUHJpbnRhYmxlQ2hhcihVQ2hhciBjKSB7IHJldHVybiAh
IWlzd3ByaW50KGMpOyB9Ci1pbmxpbmUgYm9vbCBpc1B1bmN0KFVDaGFyIGMpIHsgcmV0dXJuICEh
aXN3cHVuY3QoYyk7IH0KLWlubGluZSBib29sIGlzU3BhY2UoVUNoYXIgYykgeyByZXR1cm4gISFp
c3dzcGFjZShjKTsgfQotaW5saW5lIGJvb2wgaXNVcHBlcihVQ2hhciBjKSB7IHJldHVybiAhIWlz
d3VwcGVyKGMpOyB9Ci0KLWlubGluZSBib29sIGlzQXJhYmljQ2hhcihVQ2hhcjMyIGMpIHsgcmV0
dXJuIGMgPj0gMHgwNjAwICYmIGMgPD0gMHgwNmZmOyB9Ci1pbmxpbmUgYm9vbCBpc1NlcGFyYXRv
clNwYWNlKFVDaGFyMzIgYykgeyByZXR1cm4gY2F0ZWdvcnkoYykgPT0gU2VwYXJhdG9yX1NwYWNl
OyB9Ci0KLWlubGluZSBVQ2hhciBmb2xkQ2FzZShVQ2hhciBjKSB7IHJldHVybiB0b3dsb3dlcihj
KTsgfQotaW5saW5lIFVDaGFyIHRvTG93ZXIoVUNoYXIgYykgeyByZXR1cm4gdG93bG93ZXIoYyk7
IH0KLWlubGluZSBVQ2hhciB0b1VwcGVyKFVDaGFyIGMpIHsgcmV0dXJuIHRvd3VwcGVyKGMpOyB9
Ci1pbmxpbmUgVUNoYXIgdG9UaXRsZUNhc2UoVUNoYXIgYykgeyByZXR1cm4gdG93dXBwZXIoYyk7
IH0KLQotV1RGX0VYUE9SVF9QUklWQVRFIGludCBmb2xkQ2FzZShVQ2hhciogcmVzdWx0LCBpbnQg
cmVzdWx0TGVuZ3RoLCBjb25zdCBVQ2hhciogc291cmNlLCBpbnQgc291cmNlTGVuZ3RoLCBib29s
KiBpc0Vycm9yKTsKLVdURl9FWFBPUlRfUFJJVkFURSBpbnQgdG9Mb3dlcihVQ2hhciogcmVzdWx0
LCBpbnQgcmVzdWx0TGVuZ3RoLCBjb25zdCBVQ2hhciogc291cmNlLCBpbnQgc291cmNlTGVuZ3Ro
LCBib29sKiBpc0Vycm9yKTsKLVdURl9FWFBPUlRfUFJJVkFURSBpbnQgdG9VcHBlcihVQ2hhciog
cmVzdWx0LCBpbnQgcmVzdWx0TGVuZ3RoLCBjb25zdCBVQ2hhciogc291cmNlLCBpbnQgc291cmNl
TGVuZ3RoLCBib29sKiBpc0Vycm9yKTsKLQotaW5saW5lIGludCB1bWVtY2FzZWNtcChjb25zdCBV
Q2hhciogYSwgY29uc3QgVUNoYXIqIGIsIGludCBsZW4pCi17Ci0gICAgZm9yIChpbnQgaSA9IDA7
IGkgPCBsZW47ICsraSkgewotICAgICAgICBVQ2hhciBjMSA9IGZvbGRDYXNlKGFbaV0pOwotICAg
ICAgICBVQ2hhciBjMiA9IGZvbGRDYXNlKGJbaV0pOwotICAgICAgICBpZiAoYzEgIT0gYzIpCi0g
ICAgICAgICAgICByZXR1cm4gYzEgLSBjMjsKLSAgICB9Ci0KLSAgICByZXR1cm4gMDsKLX0KLQot
fSAvLyBuYW1lc3BhY2UgVW5pY29kZQotfSAvLyBuYW1lc3BhY2UgV1RGCitlbnVtIFVEZWNvbXBv
c2l0aW9uVHlwZSB7IFVfRFRfTk9ORSwgVV9EVF9DT01QQVQsIFVfRFRfRk9OVCB9CisKK2VudW0g
VUVycm9yQ29kZSB7IFVfWkVST19FUlJPUiA9IDAsIFVfRVJST1IgfTsKKworZW51bSBVTGluZUJy
ZWFrIHsgVV9MQl9VTktOT1dOLCBVX0xCX0NPTVBMRVhfQ09OVEVYVCwgVV9MQl9DT05ESVRJT05B
TF9KQVBBTkVTRV9TVEFSVEVSLCBVX0xCX0lERU9HUkFQSElDIH07CisKK2VudW0gVU5vcm1hbGl6
YXRpb25Nb2RlIHsgVU5PUk1fTkZDIH07CisKK2VudW0gVVByb3BlcnR5IHsgVUNIQVJfREVDT01Q
T1NJVElPTl9UWVBFLCBVQ0hBUl9MSU5FX0JSRUFLIH07CisKK2VudW0geyBVTk9STV9VTklDT0RF
XzNfMiB9OworCisvLyBGSVhNRTogV291bGQgYmUgZ29vZCB0byBkZWZpbmUgYWxsIG9mIHRoZXNl
IGluIHRlcm1zIG9mIFVDaGFyQ2F0ZWdvcnkgY29uc3RhbnRzLCBidXQgdW50aWwgdV9jaGFyVHlw
ZQorLy8gaXMgaW1wbGVtZW50ZWQsIHRoYXQncyBub3QgcmVhbGx5IHdvcnRoIHRoZSB0aW1lLgor
CisjZGVmaW5lIFVfR0NfQ0NfTUFTSyAwCisjZGVmaW5lIFVfR0NfQ0ZfTUFTSyAwCisjZGVmaW5l
IFVfR0NfQ05fTUFTSyAwCisjZGVmaW5lIFVfR0NfTExfTUFTSyAwCisjZGVmaW5lIFVfR0NfTE1f
TUFTSyAwCisjZGVmaW5lIFVfR0NfTE9fTUFTSyAwCisjZGVmaW5lIFVfR0NfTFRfTUFTSyAwCisj
ZGVmaW5lIFVfR0NfTFVfTUFTSyAwCisjZGVmaW5lIFVfR0NfTUNfTUFTSyAwCisjZGVmaW5lIFVf
R0NfTU5fTUFTSyAwCisjZGVmaW5lIFVfR0NfTkRfTUFTSyAwCisjZGVmaW5lIFVfR0NfTkxfTUFT
SyAwCisjZGVmaW5lIFVfR0NfUENfTUFTSyAwCisjZGVmaW5lIFVfR0NfUEVfTUFTSyAwCisjZGVm
aW5lIFVfR0NfUEZfTUFTSyAwCisjZGVmaW5lIFVfR0NfUElfTUFTSyAwCisjZGVmaW5lIFVfR0Nf
UE9fTUFTSyAwCisjZGVmaW5lIFVfR0NfUFNfTUFTSyAwCisjZGVmaW5lIFVfR0NfWkxfTUFTSyAw
CisjZGVmaW5lIFVfR0NfWlBfTUFTSyAwCisKKyNkZWZpbmUgVV9HQ19MX01BU0sgMAorI2RlZmlu
ZSBVX0dDX01fTUFTSyAwCisjZGVmaW5lIFVfR0NfWl9NQVNLIDAKKworI2RlZmluZSBVX1NVQ0NF
U1Moc3RhdHVzKSAoKHN0YXR1cykgPD0gMCkKKyNkZWZpbmUgVV9GQUlMVVJFKHN0YXR1cykgKChz
dGF0dXMpID4gMCkKKworI2RlZmluZSBVX0ZPTERfQ0FTRV9ERUZBVUxUIDAKKworI2RlZmluZSBV
X0dFVF9HQ19NQVNLKGMpIFVfTUFTSyh1X2NoYXJUeXBlKGMpKQorCitpbmxpbmUgVUJsb2NrQ29k
ZSB1YmxvY2tfZ2V0Q29kZShVQ2hhcjMyIGNoYXJhY3RlcikgeyByZXR1cm4gKGNoYXJhY3RlciAm
IH4weEZGKSA9PSAweDYwMCA/IFVCTE9DS19BUkFCSUMgOiBVQkxPQ0tfVU5LTk9XTjsgfQorV1RG
X0VYUE9SVF9QUklWQVRFIGludCB1bm9ybV9ub3JtYWxpemUoY29uc3QgVUNoYXIqIHNvdXJjZSwg
aW50MzJfdCBzb3VyY2VMZW5ndGgsIFVOb3JtYWxpemF0aW9uTW9kZSBtb2RlLCBpbnQzMl90IG9w
dGlvbnMsIFVDaGFyKiByZXN1bHQsIGludDMyX3QgcmVzdWx0TGVuZ3RoLCBVRXJyb3JDb2RlKiBz
dGF0dXMpOworV1RGX0VYUE9SVF9QUklWQVRFIFVDaGFyRGlyZWN0aW9uIHVfY2hhckRpcmVjdGlv
bihVQ2hhcjMyKTsKK1dURl9FWFBPUlRfUFJJVkFURSBVQ2hhcjMyIHVfY2hhck1pcnJvcihVQ2hh
cjMyKTsKK1dURl9FWFBPUlRfUFJJVkFURSBVQ2hhckNhdGVnb3J5IHVfY2hhclR5cGUoVUNoYXIz
Mik7CitpbmxpbmUgVUNoYXIzMiB1X2ZvbGRDYXNlKFVDaGFyMzIgY2hhcmFjdGVyLCB1bnNpZ25l
ZCBvcHRpb24pIHsgQVNTRVJUX1VOVVNFRChvcHRpb25zLCBvcHRpb25zID09IFVfRk9MRF9DQVNF
X0RFRkFVTFQpOyByZXR1cm4gdG93bG93ZXIoY2hhcmFjdGVyKTsgfQorV1RGX0VYUE9SVF9QUklW
QVRFIHVpbnQ4X3QgdV9nZXRDb21iaW5pbmdDbGFzcyhVQ2hhcjMyKTsKK1dURl9FWFBPUlRfUFJJ
VkFURSBpbnQgdV9nZXRJbnRQcm9wZXJ0eVZhbHVlKFVDaGFyMzIsIFVQcm9wZXJ0eSk7Citpbmxp
bmUgYm9vbCB1X2lzYWxudW0oVUNoYXIzMiBjaGFyYWN0ZXIpIHsgcmV0dXJuIGlzd2FsbnVtKGNo
YXJhY3Rlcik7IH0KK2lubGluZSBib29sIHVfaXNwdW5jdChVQ2hhcjMyIGNoYXJhY3RlcikgeyBy
ZXR1cm4gaXN3cHVuY3QoY2hhcmFjdGVyKTsgfQorV1RGX0VYUE9SVF9QUklWQVRFIGludCB1X21l
bWNhc2VjbXAoY29uc3QgVUNoYXIqLCBjb25zdCBVQ2hhciosIGludCBzb3VyY2VMZW5ndGgsIHVu
c2lnbmVkIG9wdGlvbnMpOworaW5saW5lIGJvb2wgdV9wcmludChVQ2hhcjMyIGNoYXJhY3Rlcikg
eyByZXR1cm4gaXN3cHJpbnQoY2hhcmFjdGVyKTsgfQorV1RGX0VYUE9SVF9QUklWQVRFIGludCB1
X3N0ckZvbGRDYXNlKFVDaGFyKiByZXN1bHQsIGludCByZXN1bHRMZW5ndGgsIGNvbnN0IFVDaGFy
KiBzb3VyY2UsIGludCBzb3VyY2VMZW5ndGgsIHVuc2lnbmVkIG9wdGlvbnMsIFVFcnJvckNvZGUq
KTsKK1dURl9FWFBPUlRfUFJJVkFURSBpbnQgdV9zdHJUb0xvd2VyKFVDaGFyKiByZXN1bHQsIGlu
dCByZXN1bHRMZW5ndGgsIGNvbnN0IFVDaGFyKiBzb3VyY2UsIGludCBzb3VyY2VMZW5ndGgsIGNv
bnN0IGNoYXIqIGxvY2FsZSwgVUVycm9yQ29kZSopOworV1RGX0VYUE9SVF9QUklWQVRFIGludCB1
X3N0clRvVXBwZXIoVUNoYXIqIHJlc3VsdCwgaW50IHJlc3VsdExlbmd0aCwgY29uc3QgVUNoYXIq
IHNvdXJjZSwgaW50IHNvdXJjZUxlbmd0aCwgY29uc3QgY2hhciogbG9jYWxlLCBVRXJyb3JDb2Rl
Kik7CitpbmxpbmUgVUNoYXIzMiB1X3RvbG93ZXIoVUNoYXIzMiBjaGFyYWN0ZXIpIHsgcmV0dXJu
IHRvd2xvd2VyKGNoYXJhY3Rlcik7IH0KK2lubGluZSBVQ2hhcjMyIHVfdG90aXRsZShVQ2hhcjMy
IGNoYXJhY3RlcikgeyByZXR1cm4gdG93dXBwZXIoY2hhcmFjdGVyKTsgfQoraW5saW5lIFVDaGFy
MzIgdV90b3VwcGVyKFVDaGFyMzIgY2hhcmFjdGVyKSB7IHJldHVybiB0b3d1cHBlcihjaGFyYWN0
ZXIpOyB9CiAKICNlbmRpZiAvLyBXVEZfVW5pY29kZVdjaGFyX2gKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQktleVBhdGguY3BwIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbmRleGVkZGIvSURCS2V5UGF0aC5jcHAKaW5kZXggNTg4NTc0Nzk3YzMyYmEz
YTRmMjE4NjU4Njk5NDBkMDM4ZDM0MWFjNS4uZTQ1YWVhNDM3NjliZTdjZjBkNWQwNThlYWE0ZDA3
NWIyM2JiYTZiZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIv
SURCS2V5UGF0aC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURC
S2V5UGF0aC5jcHAKQEAgLTg2LDI0ICs4NiwyMiBAQCBJREJLZXlQYXRoTGV4ZXI6OlRva2VuVHlw
ZSBJREJLZXlQYXRoTGV4ZXI6OmxleChTdHJpbmcmIGVsZW1lbnQpCiAKIG5hbWVzcGFjZSB7CiAK
LXVzaW5nIG5hbWVzcGFjZSBXVEY6OlVuaWNvZGU7Ci0KIC8vIFRoZSBmb2xsb3dpbmcgY29ycmVz
cG9uZCB0byBncmFtbWFyIGluIEVDTUEtMjYyLgotY29uc3QgdWludDMyX3QgdW5pY29kZUxldHRl
ciA9IExldHRlcl9VcHBlcmNhc2UgfCBMZXR0ZXJfTG93ZXJjYXNlIHwgTGV0dGVyX1RpdGxlY2Fz
ZSB8IExldHRlcl9Nb2RpZmllciB8IExldHRlcl9PdGhlciB8IE51bWJlcl9MZXR0ZXI7Ci1jb25z
dCB1aW50MzJfdCB1bmljb2RlQ29tYmluaW5nTWFyayA9IE1hcmtfTm9uU3BhY2luZyB8IE1hcmtf
U3BhY2luZ0NvbWJpbmluZzsKLWNvbnN0IHVpbnQzMl90IHVuaWNvZGVEaWdpdCA9IE51bWJlcl9E
ZWNpbWFsRGlnaXQ7Ci1jb25zdCB1aW50MzJfdCB1bmljb2RlQ29ubmVjdG9yUHVuY3R1YXRpb24g
PSBQdW5jdHVhdGlvbl9Db25uZWN0b3I7Citjb25zdCB1aW50MzJfdCB1bmljb2RlTGV0dGVyID0g
VV9HQ19MX01BU0sgfCBVX0dDX05MX01BU0s7Citjb25zdCB1aW50MzJfdCB1bmljb2RlQ29tYmlu
aW5nTWFyayA9IFVfR0NfTU5fTUFTSyB8IFVfR0NfTUNfTUFTSzsKK2NvbnN0IHVpbnQzMl90IHVu
aWNvZGVEaWdpdCA9IFVfR0NfTkRfTUFTSzsKK2NvbnN0IHVpbnQzMl90IHVuaWNvZGVDb25uZWN0
b3JQdW5jdHVhdGlvbiA9IFVfR0NfUENfTUFTSzsKIGNvbnN0IFVDaGFyIFpXTkogPSAweDIwMEM7
CiBjb25zdCBVQ2hhciBaV0ogPSAweDIwMEQ7CiAKIHN0YXRpYyBpbmxpbmUgYm9vbCBpc0lkZW50
aWZpZXJTdGFydENoYXJhY3RlcihVQ2hhciBjKQogewotICAgIHJldHVybiAoY2F0ZWdvcnkoYykg
JiB1bmljb2RlTGV0dGVyKSB8fCAoYyA9PSAnJCcpIHx8IChjID09ICdfJyk7CisgICAgcmV0dXJu
IChVX0dFVF9HQ19NQVNLKGMpICYgdW5pY29kZUxldHRlcikgfHwgKGMgPT0gJyQnKSB8fCAoYyA9
PSAnXycpOwogfQogCiBzdGF0aWMgaW5saW5lIGJvb2wgaXNJZGVudGlmaWVyQ2hhcmFjdGVyKFVD
aGFyIGMpCiB7Ci0gICAgcmV0dXJuIChjYXRlZ29yeShjKSAmICh1bmljb2RlTGV0dGVyIHwgdW5p
Y29kZUNvbWJpbmluZ01hcmsgfCB1bmljb2RlRGlnaXQgfCB1bmljb2RlQ29ubmVjdG9yUHVuY3R1
YXRpb24pKSB8fCAoYyA9PSAnJCcpIHx8IChjID09ICdfJykgfHwgKGMgPT0gWldOSikgfHwgKGMg
PT0gWldKKTsKKyAgICByZXR1cm4gKFVfR0VUX0dDX01BU0soYykgJiAodW5pY29kZUxldHRlciB8
IHVuaWNvZGVDb21iaW5pbmdNYXJrIHwgdW5pY29kZURpZ2l0IHwgdW5pY29kZUNvbm5lY3RvclB1
bmN0dWF0aW9uKSkgfHwgKGMgPT0gJyQnKSB8fCAoYyA9PSAnXycpIHx8IChjID09IFpXTkopIHx8
IChjID09IFpXSik7CiB9CiAKIH0gLy8gbmFtZXNwYWNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9jc3MvQ1NTUGFyc2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXIuY3Bw
CmluZGV4IDYxM2E0MzZjNzhiMTA0M2QwMzlkMGNiYThlM2ZlYzRlMTM5NmQ0YzcuLmQxYjk3MmEw
YjRjMzdlZWRjMGFhZmQzNjkwOWMyYzI4ZDI4Y2RhZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2Nzcy9DU1NQYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXIu
Y3BwCkBAIC0zNzUsOCArMzc1LDEwIEBAIEFMV0FZU19JTkxJTkUgc3RhdGljIHZvaWQgbWFrZUxv
d2VyKGNvbnN0IENoYXJhY3RlclR5cGUqIGlucHV0LCBDaGFyYWN0ZXJUeXBlKiBvCiAgICAgICAg
IGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykKICAgICAgICAgICAgIG91dHB1
dFtpXSA9IHRvQVNDSUlMb3dlcihpbnB1dFtpXSk7CiAgICAgfSBlbHNlIHsKLSAgICAgICAgZm9y
ICh1bnNpZ25lZCBpID0gMDsgaSA8IGxlbmd0aDsgaSsrKQotICAgICAgICAgICAgb3V0cHV0W2ld
ID0gVW5pY29kZTo6dG9Mb3dlcihpbnB1dFtpXSk7CisgICAgICAgIGZvciAodW5zaWduZWQgaSA9
IDA7IGkgPCBsZW5ndGg7IGkrKykgeworICAgICAgICAgICAgQVNTRVJUKHVfdG9sb3dlcihpbnB1
dFtpXSkgPD0gMHhGRkZGKTsKKyAgICAgICAgICAgIG91dHB1dFtpXSA9IHVfdG9sb3dlcihpbnB1
dFtpXSk7CisgICAgICAgIH0KICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9Eb2N1bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCmluZGV4
IGQ4YjczMDIzZGM0M2Y3YWY4ZDA1YjNiODIwM2ZmMjlkNDIyYWNkZmQuLmFlYmE2MzIzNGVlMWVl
YmU1MjEwZmI5ZjI0MGVlMWNiMjYwOTZhMmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9Eb2N1bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcApAQCAt
MjY3LDggKzI2Nyw3IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBpc1ZhbGlkTmFtZVN0YXJ0KFVDaGFy
MzIgYykKICAgICAgICAgcmV0dXJuIHRydWU7CiAKICAgICAvLyBydWxlcyAoYSkgYW5kIChmKSBh
Ym92ZQotICAgIGNvbnN0IHVpbnQzMl90IG5hbWVTdGFydE1hc2sgPSBMZXR0ZXJfTG93ZXJjYXNl
IHwgTGV0dGVyX1VwcGVyY2FzZSB8IExldHRlcl9PdGhlciB8IExldHRlcl9UaXRsZWNhc2UgfCBO
dW1iZXJfTGV0dGVyOwotICAgIGlmICghKFVuaWNvZGU6OmNhdGVnb3J5KGMpICYgbmFtZVN0YXJ0
TWFzaykpCisgICAgaWYgKCEoVV9HRVRfR0NfTUFTSyhjKSAmIChVX0dDX0xMX01BU0sgfCBVX0dD
X0xVX01BU0sgfCBVX0dDX0xPX01BU0sgfCBVX0dDX0xUX01BU0sgfCBVX0dDX05MX01BU0spKSkK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgLy8gcnVsZSAoYykgYWJvdmUKQEAgLTI3Niw4
ICsyNzUsOCBAQCBzdGF0aWMgaW5saW5lIGJvb2wgaXNWYWxpZE5hbWVTdGFydChVQ2hhcjMyIGMp
CiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIC8vIHJ1bGUgKGQpIGFib3ZlCi0gICAgRGVj
b21wb3NpdGlvblR5cGUgZGVjb21wVHlwZSA9IGRlY29tcG9zaXRpb25UeXBlKGMpOwotICAgIGlm
IChkZWNvbXBUeXBlID09IERlY29tcG9zaXRpb25Gb250IHx8IGRlY29tcFR5cGUgPT0gRGVjb21w
b3NpdGlvbkNvbXBhdCkKKyAgICBpbnQgdHlwZSA9IHVfZ2V0SW50UHJvcGVydHlWYWx1ZShjLCBV
Q0hBUl9ERUNPTVBPU0lUSU9OX1RZUEUpOworICAgIGlmICh0eXBlID09IFVfRFRfRk9OVCB8fCB0
eXBlID09IFVfRFRfQ09NUEFUKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICByZXR1cm4g
dHJ1ZTsKQEAgLTI5OCw4ICsyOTcsNyBAQCBzdGF0aWMgaW5saW5lIGJvb2wgaXNWYWxpZE5hbWVQ
YXJ0KFVDaGFyMzIgYykKICAgICAgICAgcmV0dXJuIHRydWU7CiAKICAgICAvLyBydWxlcyAoYikg
YW5kIChmKSBhYm92ZQotICAgIGNvbnN0IHVpbnQzMl90IG90aGVyTmFtZVBhcnRNYXNrID0gTWFy
a19Ob25TcGFjaW5nIHwgTWFya19FbmNsb3NpbmcgfCBNYXJrX1NwYWNpbmdDb21iaW5pbmcgfCBM
ZXR0ZXJfTW9kaWZpZXIgfCBOdW1iZXJfRGVjaW1hbERpZ2l0OwotICAgIGlmICghKFVuaWNvZGU6
OmNhdGVnb3J5KGMpICYgb3RoZXJOYW1lUGFydE1hc2spKQorICAgIGlmICghKFVfR0VUX0dDX01B
U0soYykgJiAoVV9HQ19NX01BU0sgfCBVX0dDX0xNX01BU0sgfCBVX0dDX05EX01BU0spKSkKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgLy8gcnVsZSAoYykgYWJvdmUKQEAgLTMwNyw4ICsz
MDUsOCBAQCBzdGF0aWMgaW5saW5lIGJvb2wgaXNWYWxpZE5hbWVQYXJ0KFVDaGFyMzIgYykKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgLy8gcnVsZSAoZCkgYWJvdmUKLSAgICBEZWNvbXBv
c2l0aW9uVHlwZSBkZWNvbXBUeXBlID0gZGVjb21wb3NpdGlvblR5cGUoYyk7Ci0gICAgaWYgKGRl
Y29tcFR5cGUgPT0gRGVjb21wb3NpdGlvbkZvbnQgfHwgZGVjb21wVHlwZSA9PSBEZWNvbXBvc2l0
aW9uQ29tcGF0KQorICAgIGludCB0eXBlID0gdV9nZXRJbnRQcm9wZXJ0eVZhbHVlKGMsIFVDSEFS
X0RFQ09NUE9TSVRJT05fVFlQRSk7CisgICAgaWYgKHR5cGUgPT0gVV9EVF9GT05UIHx8IHR5cGUg
PT0gVV9EVF9DT01QQVQpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIHJldHVybiB0cnVl
OwpAQCAtMTUwNiw3ICsxNTA0LDcgQEAgc3RhdGljIGlubGluZSBTdHJpbmdXaXRoRGlyZWN0aW9u
IGNhbm9uaWNhbGl6ZWRUaXRsZShEb2N1bWVudCogZG9jdW1lbnQsIGNvbnN0IFMKICAgICBib29s
IHByZXZpb3VzQ2hhcldhc1dTID0gZmFsc2U7CiAgICAgZm9yICg7IGkgPCBsZW5ndGg7ICsraSkg
ewogICAgICAgICBDaGFyYWN0ZXJUeXBlIGMgPSBjaGFyYWN0ZXJzW2ldOwotICAgICAgICBpZiAo
YyA8PSAweDIwIHx8IGMgPT0gMHg3RiB8fCAoV1RGOjpVbmljb2RlOjpjYXRlZ29yeShjKSAmIChX
VEY6OlVuaWNvZGU6OlNlcGFyYXRvcl9MaW5lIHwgV1RGOjpVbmljb2RlOjpTZXBhcmF0b3JfUGFy
YWdyYXBoKSkpIHsKKyAgICAgICAgaWYgKGMgPD0gMHgyMCB8fCBjID09IDB4N0YgfHwgKFVfR0VU
X0dDX01BU0soYykgJiAoVV9HQ19aTF9NQVNLIHwgVV9HQ19aUF9NQVNLKSkpIHsKICAgICAgICAg
ICAgIGlmIChwcmV2aW91c0NoYXJXYXNXUykKICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAg
ICAgICAgICAgIGJ1ZmZlcltidWlsZGVySW5kZXgrK10gPSAnICc7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0Vk
aXRvci5jcHAKaW5kZXggNmQ4NWQ4MjE5MTdkNWIyM2I4OWU5NjE4Y2IwYzM4NDg4N2ZkOTZkMi4u
MjIwMDgyY2E2ZjhkMmFmODg4M2RhYTZlNDdhYjQ0YzBhYTRjZjQ0NiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvRWRpdG9yLmNwcApAQCAtOTc1LDcgKzk3NSw3IEBAIGJvb2wgRWRpdG9yOjppbnNlcnRUZXh0
V2l0aG91dFNlbmRpbmdUZXh0RXZlbnQoY29uc3QgU3RyaW5nJiB0ZXh0LCBib29sIHNlbGVjdElu
CiAgICAgaWYgKHRleHQgPT0gIiAiIHx8IHRleHQgPT0gIlx0IikKICAgICAgICAgc2hvdWxkQ29u
c2lkZXJBcHBseWluZ0F1dG9jb3JyZWN0aW9uID0gdHJ1ZTsKIAotICAgIGlmICh0ZXh0Lmxlbmd0
aCgpID09IDEgJiYgaXNQdW5jdCh0ZXh0WzBdKSAmJiAhaXNBbWJpZ3VvdXNCb3VuZGFyeUNoYXJh
Y3Rlcih0ZXh0WzBdKSkKKyAgICBpZiAodGV4dC5sZW5ndGgoKSA9PSAxICYmIHVfaXNwdW5jdCh0
ZXh0WzBdKSAmJiAhaXNBbWJpZ3VvdXNCb3VuZGFyeUNoYXJhY3Rlcih0ZXh0WzBdKSkKICAgICAg
ICAgc2hvdWxkQ29uc2lkZXJBcHBseWluZ0F1dG9jb3JyZWN0aW9uID0gdHJ1ZTsKIAogICAgIGJv
b2wgYXV0b2NvcnJlY3Rpb25XYXNBcHBsaWVkID0gc2hvdWxkQ29uc2lkZXJBcHBseWluZ0F1dG9j
b3JyZWN0aW9uICYmIG1fYWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxlci0+YXBwbHlBdXRvY29ycmVj
dGlvbkJlZm9yZVR5cGluZ0lmQXBwcm9wcmlhdGUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvVGV4dEl0ZXJhdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4
dEl0ZXJhdG9yLmNwcAppbmRleCA0NjZkZTgzNWU5NDM4ZmYyOGQwN2Q5NGVlOWQyYjBhZGJhYTYx
M2ZjLi44NDZmNmM5NmRiMmFkODk1N2YxOThjOTIzMGQzOGNlNmU5Y2VjOTVlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1RleHRJdGVyYXRvci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvZWRpdGluZy9UZXh0SXRlcmF0b3IuY3BwCkBAIC0yMzE2LDkgKzIzMTYsOSBAQCBpbmxp
bmUgc2l6ZV90IFNlYXJjaEJ1ZmZlcjo6YXBwZW5kKGNvbnN0IFVDaGFyKiBjaGFyYWN0ZXJzLCBz
aXplX3QgbGVuZ3RoKQogICAgIH0KICAgICBjb25zdCBpbnQgbWF4Rm9sZGVkQ2hhcmFjdGVycyA9
IDE2OyAvLyBzZW5zaWJsZSBtYXhpbXVtIGlzIDMsIHRoaXMgc2hvdWxkIGJlIG1vcmUgdGhhbiBl
bm91Z2gKICAgICBVQ2hhciBmb2xkZWRDaGFyYWN0ZXJzW21heEZvbGRlZENoYXJhY3RlcnNdOwot
ICAgIGJvb2wgZXJyb3I7Ci0gICAgaW50IG51bUZvbGRlZENoYXJhY3RlcnMgPSBmb2xkQ2FzZShm
b2xkZWRDaGFyYWN0ZXJzLCBtYXhGb2xkZWRDaGFyYWN0ZXJzLCBjaGFyYWN0ZXJzLCAxLCAmZXJy
b3IpOwotICAgIEFTU0VSVCghZXJyb3IpOworICAgIFVFcnJvckNvZGUgc3RhdHVzID0gVV9aRVJP
X0VSUk9SOworICAgIGludCBudW1Gb2xkZWRDaGFyYWN0ZXJzID0gdV9zdHJGb2xkQ2FzZShmb2xk
ZWRDaGFyYWN0ZXJzLCBtYXhGb2xkZWRDaGFyYWN0ZXJzLCBjaGFyYWN0ZXJzLCAxLCBVX0ZPTERf
Q0FTRV9ERUZBVUxULCAmc3RhdHVzKTsKKyAgICBBU1NFUlQoVV9TVUNDRVNTKHN0YXR1cykpOwog
ICAgIEFTU0VSVChudW1Gb2xkZWRDaGFyYWN0ZXJzKTsKICAgICBBU1NFUlQobnVtRm9sZGVkQ2hh
cmFjdGVycyA8PSBtYXhGb2xkZWRDaGFyYWN0ZXJzKTsKICAgICBpZiAoIWVycm9yICYmIG51bUZv
bGRlZENoYXJhY3RlcnMpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEVs
ZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRWxlbWVudC5jcHAKaW5kZXggZTk0
ODI0NTI1Y2FmYjVmZTY0MGM2OTlkMjI2YTdlZjg3ZTdiOGI0NS4uYmMyM2UyNTkyMGQ0NTI1Mjcx
NjI4Mjg1ZDVhOWJkODA4M2FiZDRiNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRWxlbWVudC5jcHAK
QEAgLTg1MywxMCArODUzLDEwIEBAIFRleHREaXJlY3Rpb24gSFRNTEVsZW1lbnQ6OmRpcmVjdGlv
bmFsaXR5KE5vZGUqKiBzdHJvbmdEaXJlY3Rpb25hbGl0eVRleHROb2RlKSBjCiAgICAgaWYgKGlz
SFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQodGhpcykpIHsKICAgICAgICAgSFRNTFRleHRGb3Jt
Q29udHJvbEVsZW1lbnQqIHRleHRFbGVtZW50ID0gdG9IVE1MVGV4dEZvcm1Db250cm9sRWxlbWVu
dChjb25zdF9jYXN0PEhUTUxFbGVtZW50Kj4odGhpcykpOwogICAgICAgICBib29sIGhhc1N0cm9u
Z0RpcmVjdGlvbmFsaXR5OwotICAgICAgICBVbmljb2RlOjpEaXJlY3Rpb24gdGV4dERpcmVjdGlv
biA9IHRleHRFbGVtZW50LT52YWx1ZSgpLmRlZmF1bHRXcml0aW5nRGlyZWN0aW9uKCZoYXNTdHJv
bmdEaXJlY3Rpb25hbGl0eSk7CisgICAgICAgIFVDaGFyRGlyZWN0aW9uIHRleHREaXJlY3Rpb24g
PSB0ZXh0RWxlbWVudC0+dmFsdWUoKS5kZWZhdWx0V3JpdGluZ0RpcmVjdGlvbigmaGFzU3Ryb25n
RGlyZWN0aW9uYWxpdHkpOwogICAgICAgICBpZiAoc3Ryb25nRGlyZWN0aW9uYWxpdHlUZXh0Tm9k
ZSkKICAgICAgICAgICAgICpzdHJvbmdEaXJlY3Rpb25hbGl0eVRleHROb2RlID0gaGFzU3Ryb25n
RGlyZWN0aW9uYWxpdHkgPyB0ZXh0RWxlbWVudCA6IG51bGxwdHI7Ci0gICAgICAgIHJldHVybiAo
dGV4dERpcmVjdGlvbiA9PSBVbmljb2RlOjpMZWZ0VG9SaWdodCkgPyBMVFIgOiBSVEw7CisgICAg
ICAgIHJldHVybiAodGV4dERpcmVjdGlvbiA9PSBVX0xFRlRfVE9fUklHSFQpID8gTFRSIDogUlRM
OwogICAgIH0KIAogICAgIE5vZGUqIG5vZGUgPSBmaXJzdENoaWxkKCk7CkBAIC04NzksMTEgKzg3
OSwxMSBAQCBUZXh0RGlyZWN0aW9uIEhUTUxFbGVtZW50OjpkaXJlY3Rpb25hbGl0eShOb2RlKiog
c3Ryb25nRGlyZWN0aW9uYWxpdHlUZXh0Tm9kZSkgYwogCiAgICAgICAgIGlmIChub2RlLT5pc1Rl
eHROb2RlKCkpIHsKICAgICAgICAgICAgIGJvb2wgaGFzU3Ryb25nRGlyZWN0aW9uYWxpdHk7Ci0g
ICAgICAgICAgICBXVEY6OlVuaWNvZGU6OkRpcmVjdGlvbiB0ZXh0RGlyZWN0aW9uID0gbm9kZS0+
dGV4dENvbnRlbnQodHJ1ZSkuZGVmYXVsdFdyaXRpbmdEaXJlY3Rpb24oJmhhc1N0cm9uZ0RpcmVj
dGlvbmFsaXR5KTsKKyAgICAgICAgICAgIFVDaGFyRGlyZWN0aW9uIHRleHREaXJlY3Rpb24gPSBu
b2RlLT50ZXh0Q29udGVudCh0cnVlKS5kZWZhdWx0V3JpdGluZ0RpcmVjdGlvbigmaGFzU3Ryb25n
RGlyZWN0aW9uYWxpdHkpOwogICAgICAgICAgICAgaWYgKGhhc1N0cm9uZ0RpcmVjdGlvbmFsaXR5
KSB7CiAgICAgICAgICAgICAgICAgaWYgKHN0cm9uZ0RpcmVjdGlvbmFsaXR5VGV4dE5vZGUpCiAg
ICAgICAgICAgICAgICAgICAgICpzdHJvbmdEaXJlY3Rpb25hbGl0eVRleHROb2RlID0gbm9kZTsK
LSAgICAgICAgICAgICAgICByZXR1cm4gKHRleHREaXJlY3Rpb24gPT0gV1RGOjpVbmljb2RlOjpM
ZWZ0VG9SaWdodCkgPyBMVFIgOiBSVEw7CisgICAgICAgICAgICAgICAgcmV0dXJuICh0ZXh0RGly
ZWN0aW9uID09IFVfTEVGVF9UT19SSUdIVCkgPyBMVFIgOiBSVEw7CiAgICAgICAgICAgICB9CiAg
ICAgICAgIH0KICAgICAgICAgbm9kZSA9IE5vZGVUcmF2ZXJzYWw6Om5leHQobm9kZSwgdGhpcyk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxTZWxlY3RFbGVtZW50LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFNlbGVjdEVsZW1lbnQuY3BwCmluZGV4IGQxZDdjMjYw
NzdhY2E3ZThhNTc4OTZhYjFkMWEzOGM1YTM2NGYzMGUuLjA1MjU3NDkyMTUxY2VjN2M0OTJjZGQ1
ZTc5YzIwNTEyOGM4ZTcwODcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFNl
bGVjdEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFNlbGVjdEVsZW1l
bnQuY3BwCkBAIC0xNDg3LDcgKzE0ODcsNyBAQCB2b2lkIEhUTUxTZWxlY3RFbGVtZW50OjpkZWZh
dWx0RXZlbnRIYW5kbGVyKEV2ZW50KiBldmVudCkKIAogICAgIGlmIChldmVudC0+dHlwZSgpID09
IGV2ZW50TmFtZXMoKS5rZXlwcmVzc0V2ZW50ICYmIGV2ZW50LT5pc0tleWJvYXJkRXZlbnQoKSkg
ewogICAgICAgICBLZXlib2FyZEV2ZW50KiBrZXlib2FyZEV2ZW50ID0gc3RhdGljX2Nhc3Q8S2V5
Ym9hcmRFdmVudCo+KGV2ZW50KTsKLSAgICAgICAgaWYgKCFrZXlib2FyZEV2ZW50LT5jdHJsS2V5
KCkgJiYgIWtleWJvYXJkRXZlbnQtPmFsdEtleSgpICYmICFrZXlib2FyZEV2ZW50LT5tZXRhS2V5
KCkgJiYgaXNQcmludGFibGVDaGFyKGtleWJvYXJkRXZlbnQtPmNoYXJDb2RlKCkpKSB7CisgICAg
ICAgIGlmICgha2V5Ym9hcmRFdmVudC0+Y3RybEtleSgpICYmICFrZXlib2FyZEV2ZW50LT5hbHRL
ZXkoKSAmJiAha2V5Ym9hcmRFdmVudC0+bWV0YUtleSgpICYmIHVfaXNwcmludChrZXlib2FyZEV2
ZW50LT5jaGFyQ29kZSgpKSkgewogICAgICAgICAgICAgdHlwZUFoZWFkRmluZChrZXlib2FyZEV2
ZW50KTsKICAgICAgICAgICAgIGV2ZW50LT5zZXREZWZhdWx0SGFuZGxlZCgpOwogICAgICAgICAg
ICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9UeXBlQWhlYWQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9UeXBlQWhlYWQuY3BwCmluZGV4IDYxY2MxZWI2ODk3NTdh
NWNmNGI0ODFjZDdmZDFiY2JjODUxYTNjOGEuLmQyNmY1N2Q4NDlhNmJhZTA1OTY4NmI1ZDI5NDk0
ODAwYmU1YTczODggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvVHlwZUFoZWFkLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL1R5cGVBaGVhZC5jcHAKQEAgLTUwLDcgKzUwLDcg
QEAgc3RhdGljIFN0cmluZyBzdHJpcExlYWRpbmdXaGl0ZVNwYWNlKGNvbnN0IFN0cmluZyYgc3Ry
aW5nKQogCiAgICAgdW5zaWduZWQgaTsKICAgICBmb3IgKGkgPSAwOyBpIDwgbGVuZ3RoOyArK2kp
IHsKLSAgICAgICAgaWYgKHN0cmluZ1tpXSAhPSBub0JyZWFrU3BhY2UgJiYgKHN0cmluZ1tpXSA8
PSAweDdGID8gIWlzQVNDSUlTcGFjZShzdHJpbmdbaV0pIDogKGRpcmVjdGlvbihzdHJpbmdbaV0p
ICE9IFdoaXRlU3BhY2VOZXV0cmFsKSkpCisgICAgICAgIGlmIChzdHJpbmdbaV0gIT0gbm9CcmVh
a1NwYWNlICYmIChzdHJpbmdbaV0gPD0gMHg3RiA/ICFpc0FTQ0lJU3BhY2Uoc3RyaW5nW2ldKSA6
ICh1X2NoYXJEaXJlY3Rpb24oc3RyaW5nW2ldKSAhPSBVX1dISVRFX1NQQUNFX05FVVRSQUwpKSkK
ICAgICAgICAgICAgIGJyZWFrOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aHRtbC90cmFjay9UZXh0VHJhY2tDdWUuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9U
ZXh0VHJhY2tDdWUuY3BwCmluZGV4IGM1MzkyNjg2YmE4N2VmMWQ5ODVmNGE3MzBmNWUxYzEyZjQ4
YTFjMDYuLjE0YzQ3NjgwYjUxOThjYTkxYTU0Y2MxYjFjNzg0OGUzMzNmNDE0OTkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRyYWNrQ3VlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFja0N1ZS5jcHAKQEAgLTYxNSw3ICs2MTUsNyBA
QCBzdGF0aWMgYm9vbCBpc0N1ZVBhcmFncmFwaFNlcGFyYXRvcihVQ2hhciBjaGFyYWN0ZXIpCiB7
CiAgICAgLy8gV2l0aGluIGEgY3VlLCBwYXJhZ3JhcGggYm91bmRhcmllcyBhcmUgb25seSBkZW5v
dGVkIGJ5IFR5cGUgQiBjaGFyYWN0ZXJzLAogICAgIC8vIHN1Y2ggYXMgVSswMDBBIExJTkUgRkVF
RCAoTEYpLCBVKzAwODUgTkVYVCBMSU5FIChORUwpLCBhbmQgVSsyMDI5IFBBUkFHUkFQSCBTRVBB
UkFUT1IuCi0gICAgcmV0dXJuIFdURjo6VW5pY29kZTo6Y2F0ZWdvcnkoY2hhcmFjdGVyKSAmIFdU
Rjo6VW5pY29kZTo6U2VwYXJhdG9yX1BhcmFncmFwaDsKKyAgICByZXR1cm4gdV9jaGFyVHlwZShj
aGFyYWN0ZXIpID09IFVfUEFSQUdSQVBIX1NFUEFSQVRPUjsKIH0KIAogdm9pZCBUZXh0VHJhY2tD
dWU6OmRldGVybWluZVRleHREaXJlY3Rpb24oKQpAQCAtNjQ4LDEzICs2NDgsMTIgQEAgdm9pZCBU
ZXh0VHJhY2tDdWU6OmRldGVybWluZVRleHREaXJlY3Rpb24oKQogICAgICAgICAgICAgcmV0dXJu
OwogCiAgICAgICAgIGlmIChVQ2hhciBjdXJyZW50ID0gcGFyYWdyYXBoW2ldKSB7Ci0gICAgICAg
ICAgICBXVEY6OlVuaWNvZGU6OkRpcmVjdGlvbiBjaGFyRGlyZWN0aW9uID0gV1RGOjpVbmljb2Rl
OjpkaXJlY3Rpb24oY3VycmVudCk7Ci0gICAgICAgICAgICBpZiAoY2hhckRpcmVjdGlvbiA9PSBX
VEY6OlVuaWNvZGU6OkxlZnRUb1JpZ2h0KSB7CisgICAgICAgICAgICBVQ2hhckRpcmVjdGlvbiBj
aGFyRGlyZWN0aW9uID0gdV9jaGFyRGlyZWN0aW9uKGN1cnJlbnQpOworICAgICAgICAgICAgaWYg
KGNoYXJEaXJlY3Rpb24gPT0gVV9MRUZUX1RPX1JJR0hUKSB7CiAgICAgICAgICAgICAgICAgbV9k
aXNwbGF5RGlyZWN0aW9uID0gQ1NTVmFsdWVMdHI7CiAgICAgICAgICAgICAgICAgcmV0dXJuOwog
ICAgICAgICAgICAgfQotICAgICAgICAgICAgaWYgKGNoYXJEaXJlY3Rpb24gPT0gV1RGOjpVbmlj
b2RlOjpSaWdodFRvTGVmdAotICAgICAgICAgICAgICAgIHx8IGNoYXJEaXJlY3Rpb24gPT0gV1RG
OjpVbmljb2RlOjpSaWdodFRvTGVmdEFyYWJpYykgeworICAgICAgICAgICAgaWYgKGNoYXJEaXJl
Y3Rpb24gPT0gVV9SSUdIVF9UT19MRUZUIHx8IGNoYXJEaXJlY3Rpb24gPT0gVV9SSUdIVF9UT19M
RUZUX0FSQUJJQykgewogICAgICAgICAgICAgICAgIG1fZGlzcGxheURpcmVjdGlvbiA9IENTU1Zh
bHVlUnRsOwogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ29udGV4dE1lbnVDb250cm9sbGVyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvQ29udGV4dE1lbnVDb250cm9sbGVyLmNwcAppbmRleCBmN2Q3ZTY4MWIz
MTAyYjQ4ZWU1NmQyZmU4OWYzOTZhOWI3YTE2MjMwLi5jZTU0YTkzZDQzYjU2ZWJhOGZkMjhiN2Jj
YmNjNjY4NTIxY2ZhYWNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0NvbnRleHRN
ZW51Q29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9Db250ZXh0TWVudUNv
bnRyb2xsZXIuY3BwCkBAIC03MTgsOSArNzE4LDEwIEBAIHN0YXRpYyBib29sIHNlbGVjdGlvbkNv
bnRhaW5zUG9zc2libGVXb3JkKEZyYW1lKiBmcmFtZSkKICAgICAvLyBDdXJyZW50IGFsZ29yaXRo
bTogbG9vayBmb3IgYSBjaGFyYWN0ZXIgdGhhdCdzIG5vdCBqdXN0IGEgc2VwYXJhdG9yLgogICAg
IGZvciAoVGV4dEl0ZXJhdG9yIGl0KGZyYW1lLT5zZWxlY3Rpb24oKS50b05vcm1hbGl6ZWRSYW5n
ZSgpLmdldCgpKTsgIWl0LmF0RW5kKCk7IGl0LmFkdmFuY2UoKSkgewogICAgICAgICBpbnQgbGVu
Z3RoID0gaXQubGVuZ3RoKCk7Ci0gICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbGVuZ3RoOyAr
K2kpCi0gICAgICAgICAgICBpZiAoIShjYXRlZ29yeShpdC5jaGFyYWN0ZXJBdChpKSkgJiAoU2Vw
YXJhdG9yX1NwYWNlIHwgU2VwYXJhdG9yX0xpbmUgfCBTZXBhcmF0b3JfUGFyYWdyYXBoKSkpCisg
ICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbGVuZ3RoOyArK2kpIHsKKyAgICAgICAgICAgIGlm
ICghKFVfR0VUX0dDX01BU0soaXQuY2hhcmFjdGVyQXQoaSkpICYgVV9HQ19aX01BU0spKQogICAg
ICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9CiAgICAgfQogICAgIHJldHVybiBm
YWxzZTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Zv
bnQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udC5jcHAKaW5kZXgg
ZjgyNmQ1NWQzMjhlZmU2NjMwZDkxZGUwZGMyNTA0ZTFiZGFhNmQ0Ny4uYThhNDExMTYyMGE0ZDkw
NzNlMjA0MDVjZmViM2VjOWIzMzQwMzgyMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvRm9udC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvRm9udC5jcHAKQEAgLTkxNCw4ICs5MTQsNyBAQCB1bnNpZ25lZCBGb250OjpleHBhbnNp
b25PcHBvcnR1bml0eUNvdW50KGNvbnN0IFVDaGFyKiBjaGFyYWN0ZXJzLCBzaXplX3QgbGVuZ3Ro
LAogCiBib29sIEZvbnQ6OmNhblJlY2VpdmVUZXh0RW1waGFzaXMoVUNoYXIzMiBjKQogewotICAg
IENoYXJDYXRlZ29yeSBjYXRlZ29yeSA9IFVuaWNvZGU6OmNhdGVnb3J5KGMpOwotICAgIGlmIChj
YXRlZ29yeSAmIChTZXBhcmF0b3JfU3BhY2UgfCBTZXBhcmF0b3JfTGluZSB8IFNlcGFyYXRvcl9Q
YXJhZ3JhcGggfCBPdGhlcl9Ob3RBc3NpZ25lZCB8IE90aGVyX0NvbnRyb2wgfCBPdGhlcl9Gb3Jt
YXQpKQorICAgIGlmIChVX0dFVF9HQ19NQVNLKGMpICYgKFVfR0NfWl9NQVNLIHwgVV9HQ19DTl9N
QVNLIHwgVV9HQ19DQ19NQVNLIHwgVV9HQ19DRl9NQVNLKSkKICAgICAgICAgcmV0dXJuIGZhbHNl
OwogCiAgICAgLy8gQWRkaXRpb25hbCB3b3JkLXNlcGFyYXRvciBjaGFyYWN0ZXJzIGxpc3RlZCBp
biBDU1MgVGV4dCBMZXZlbCAzIEVkaXRvcidzIERyYWZ0IDMgTm92ZW1iZXIgMjAxMC4KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRHbHlwaHMuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udEdseXBocy5jcHAKaW5kZXggODYx
MmRhMTk3NjU3M2VkMzYyMGI2YTAzZDRmZDgyY2M0MDkyOWMwZi4uM2RiMmY2MDAzZjY0NmJlYzA0
YjU5NDQ0ZmVkMmY4MjQ3OThkOWExNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvRm9udEdseXBocy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvRm9udEdseXBocy5jcHAKQEAgLTI2NSw3ICsyNjUsNyBAQCBzdGQ6OnBhaXI8R2x5
cGhEYXRhLCBHbHlwaFBhZ2UqPiBGb250R2x5cGhzOjpnbHlwaERhdGFBbmRQYWdlRm9yQ2hhcmFj
dGVyKGNvbnN0CiAKICAgICBpZiAodmFyaWFudCA9PSBBdXRvVmFyaWFudCkgewogICAgICAgICBp
ZiAoZGVzY3JpcHRpb24uc21hbGxDYXBzKCkgJiYgIXByaW1hcnlTaW1wbGVGb250RGF0YShkZXNj
cmlwdGlvbiktPmlzU1ZHRm9udCgpKSB7Ci0gICAgICAgICAgICBVQ2hhcjMyIHVwcGVyQyA9IFdU
Rjo6VW5pY29kZTo6dG9VcHBlcihjKTsKKyAgICAgICAgICAgIFVDaGFyMzIgdXBwZXJDID0gdV90
b3VwcGVyKGMpOwogICAgICAgICAgICAgaWYgKHVwcGVyQyAhPSBjKSB7CiAgICAgICAgICAgICAg
ICAgYyA9IHVwcGVyQzsKICAgICAgICAgICAgICAgICB2YXJpYW50ID0gU21hbGxDYXBzVmFyaWFu
dDsKQEAgLTI3Niw3ICsyNzYsNyBAQCBzdGQ6OnBhaXI8R2x5cGhEYXRhLCBHbHlwaFBhZ2UqPiBG
b250R2x5cGhzOjpnbHlwaERhdGFBbmRQYWdlRm9yQ2hhcmFjdGVyKGNvbnN0CiAgICAgfQogCiAg
ICAgaWYgKG1pcnJvcikKLSAgICAgICAgYyA9IFdURjo6VW5pY29kZTo6bWlycm9yZWRDaGFyKGMp
OworICAgICAgICBjID0gdV9jaGFyTWlycm9yKGMpOwogCiAgICAgdW5zaWduZWQgcGFnZU51bWJl
ciA9IChjIC8gR2x5cGhQYWdlOjpzaXplKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5jcHAKaW5kZXggYWZiNWQ5YjVkODAyNjIz
YjQ0MjRhMzhhNzY5Y2FiMWMyNWI1ZWFmZi4uZjVjOWQ3ZWU4NTM1YmQzOWM5MTIyODNjNmE5NWE4
ZGFiMmZjODI5ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
R3JhcGhpY3NDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9HcmFwaGljc0NvbnRleHQuY3BwCkBAIC02NCw3ICs2NCw3IEBAIHB1YmxpYzoKICAgICB2b2lk
IGluY3JlbWVudCgpIHsgbV9vZmZzZXQrKzsgfQogICAgIGJvb2wgYXRFbmQoKSBjb25zdCB7IHJl
dHVybiAhbV90ZXh0UnVuIHx8IG1fb2Zmc2V0ID49IG1fdGV4dFJ1bi0+bGVuZ3RoKCk7IH0KICAg
ICBVQ2hhciBjdXJyZW50KCkgY29uc3QgeyByZXR1cm4gKCptX3RleHRSdW4pW21fb2Zmc2V0XTsg
fQotICAgIFdURjo6VW5pY29kZTo6RGlyZWN0aW9uIGRpcmVjdGlvbigpIGNvbnN0IHsgcmV0dXJu
IGF0RW5kKCkgPyBXVEY6OlVuaWNvZGU6Ok90aGVyTmV1dHJhbCA6IFdURjo6VW5pY29kZTo6ZGly
ZWN0aW9uKGN1cnJlbnQoKSk7IH0KKyAgICBVQ2hhckRpcmVjdGlvbiBkaXJlY3Rpb24oKSBjb25z
dCB7IHJldHVybiBhdEVuZCgpID8gVV9PVEhFUl9ORVVUUkFMIDogdV9jaGFyRGlyZWN0aW9uKGN1
cnJlbnQoKSk7IH0KIAogICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBUZXh0UnVuSXRlcmF0b3Im
IG90aGVyKQogICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL1NWR0dseXBoLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1NWR0ds
eXBoLmNwcAppbmRleCBlMjgyMGU0OTZlZmUxNmY1YWMwMDNlYmI2NzZlNTBkYmE3NzZhODhjLi5h
ZDNiZTFlZmNmYmJkZWJjNDRkMWY4MDQ4MzMzMWIyMDdiYjNmODYzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9TVkdHbHlwaC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvU1ZHR2x5cGguY3BwCkBAIC0yNSw4ICsyNSw2IEBACiAK
ICNpbmNsdWRlIDx3dGYvdW5pY29kZS9Vbmljb2RlLmg+CiAKLXVzaW5nIG5hbWVzcGFjZSBXVEY6
OlVuaWNvZGU7Ci0KIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogLy8gSGVscGVyIGZ1bmN0aW9ucyB0
byBkZXRlcm1pbmUgdGhlIGFyYWJpYyBjaGFyYWN0ZXIgZm9ybXMgKGluaXRpYWwsIG1lZGlhbCwg
dGVybWluYWwsIGlzb2xhdGVkKQpAQCAtODcsNyArODUsNyBAQCBWZWN0b3I8U1ZHR2x5cGg6OkFy
YWJpY0Zvcm0+IGNoYXJhY3RlcnNXaXRoQXJhYmljRm9ybShjb25zdCBTdHJpbmcmIGlucHV0LCBi
b29sCiAKICAgICBib29sIGNvbnRhaW5zQXJhYmljID0gZmFsc2U7CiAgICAgZm9yICh1bnNpZ25l
ZCBpID0gMDsgaSA8IGxlbmd0aDsgKytpKSB7Ci0gICAgICAgIGlmIChpc0FyYWJpY0NoYXIoaW5w
dXRbaV0pKSB7CisgICAgICAgIGlmICh1YmxvY2tfZ2V0Q29kZShpbnB1dFtpXSkgPT0gVUJMT0NL
X0FSQUJJQykgewogICAgICAgICAgICAgY29udGFpbnNBcmFiaWMgPSB0cnVlOwogICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL1N1cnJvZ2F0ZVBhaXJBd2FyZVRleHRJdGVyYXRvci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9TdXJyb2dhdGVQYWlyQXdhcmVUZXh0SXRlcmF0b3IuY3Bw
CmluZGV4IGU3ZWI0M2I1NjEyMTc1NTc1ZDUzMzZjYmJiNmRkYjJkMjAwMWY0ZGQuLmVkNmEzMzM3
NmE1YTg1MjNiYjcxODhiYjRmOTg4MDRlOGFlNDBhYWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL1N1cnJvZ2F0ZVBhaXJBd2FyZVRleHRJdGVyYXRvci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvU3Vycm9nYXRlUGFpckF3YXJl
VGV4dEl0ZXJhdG9yLmNwcApAQCAtODIsMTUgKzgyLDEzIEBAIFVDaGFyMzIgU3Vycm9nYXRlUGFp
ckF3YXJlVGV4dEl0ZXJhdG9yOjpub3JtYWxpemVWb2ljaW5nTWFya3MoKQogICAgIGlmIChtX2N1
cnJlbnRDaGFyYWN0ZXIgKyAxID49IG1fZW5kQ2hhcmFjdGVyKQogICAgICAgICByZXR1cm4gMDsK
IAotICAgIGlmIChjb21iaW5pbmdDbGFzcyhtX2NoYXJhY3RlcnNbMV0pID09IGhpcmFnYW5hS2F0
YWthbmFWb2ljaW5nTWFya3NDb21iaW5pbmdDbGFzcykgewotI2lmIFVTRShJQ1VfVU5JQ09ERSkK
KyAgICBpZiAodV9nZXRDb21iaW5pbmdDbGFzcyhtX2NoYXJhY3RlcnNbMV0pID09IGhpcmFnYW5h
S2F0YWthbmFWb2ljaW5nTWFya3NDb21iaW5pbmdDbGFzcykgewogICAgICAgICAvLyBOb3JtYWxp
emUgaW50byBjb21wb3NlZCBmb3JtIHVzaW5nIDMuMiBydWxlcy4KICAgICAgICAgVUNoYXIgbm9y
bWFsaXplZENoYXJhY3RlcnNbMl0gPSB7IDAsIDAgfTsKICAgICAgICAgVUVycm9yQ29kZSB1U3Rh
dHVzID0gVV9aRVJPX0VSUk9SOyAgCiAgICAgICAgIGludDMyX3QgcmVzdWx0TGVuZ3RoID0gdW5v
cm1fbm9ybWFsaXplKG1fY2hhcmFjdGVycywgMiwgVU5PUk1fTkZDLCBVTk9STV9VTklDT0RFXzNf
MiwgJm5vcm1hbGl6ZWRDaGFyYWN0ZXJzWzBdLCAyLCAmdVN0YXR1cyk7CiAgICAgICAgIGlmIChy
ZXN1bHRMZW5ndGggPT0gMSAmJiAhdVN0YXR1cykKICAgICAgICAgICAgIHJldHVybiBub3JtYWxp
emVkQ2hhcmFjdGVyc1swXTsKLSNlbmRpZgogICAgIH0KIAogICAgIHJldHVybiAwOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvV2lkdGhJdGVyYXRvci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9XaWR0aEl0ZXJhdG9yLmNwcAppbmRl
eCBlOGI2MjBmOGFkYzhlZDMzZmExNDY1MjY3Nzg1OThhZDgyMTllZTg2Li5iOGYyNTljNGE1ZTQz
OWFmMTM5YzFmN2VhZjgyNTYzMTA3NTg2NmQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9XaWR0aEl0ZXJhdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9XaWR0aEl0ZXJhdG9yLmNwcApAQCAtMjEwLDEwICsyMTAsMTAgQEAg
aW5saW5lIHVuc2lnbmVkIFdpZHRoSXRlcmF0b3I6OmFkdmFuY2VJbnRlcm5hbChUZXh0SXRlcmF0
b3ImIHRleHRJdGVyYXRvciwgR2x5cGgKICAgICAgICAgICAgIGlmIChtX2ZhbGxiYWNrRm9udHMg
JiYgZm9udERhdGEgIT0gcHJpbWFyeUZvbnQpIHsKICAgICAgICAgICAgICAgICAvLyBGSVhNRTog
VGhpcyBkb2VzIGEgbGl0dGxlIGV4dHJhIHdvcmsgdGhhdCBjb3VsZCBiZSBhdm9pZGVkIGlmCiAg
ICAgICAgICAgICAgICAgLy8gZ2x5cGhEYXRhRm9yQ2hhcmFjdGVyKCkgcmV0dXJuZWQgd2hldGhl
ciBpdCBjaG9zZSB0byB1c2UgYSBzbWFsbCBjYXBzIGZvbnQuCi0gICAgICAgICAgICAgICAgaWYg
KCFtX2ZvbnQtPmlzU21hbGxDYXBzKCkgfHwgY2hhcmFjdGVyID09IHRvVXBwZXIoY2hhcmFjdGVy
KSkKKyAgICAgICAgICAgICAgICBpZiAoIW1fZm9udC0+aXNTbWFsbENhcHMoKSB8fCBjaGFyYWN0
ZXIgPT0gdV90b3VwcGVyKGNoYXJhY3RlcikpCiAgICAgICAgICAgICAgICAgICAgIG1fZmFsbGJh
Y2tGb250cy0+YWRkKGZvbnREYXRhKTsKICAgICAgICAgICAgICAgICBlbHNlIHsKLSAgICAgICAg
ICAgICAgICAgICAgY29uc3QgR2x5cGhEYXRhJiB1cHBlcmNhc2VHbHlwaERhdGEgPSBtX2ZvbnQt
PmdseXBoRGF0YUZvckNoYXJhY3Rlcih0b1VwcGVyKGNoYXJhY3RlciksIHJ0bCk7CisgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IEdseXBoRGF0YSYgdXBwZXJjYXNlR2x5cGhEYXRhID0gbV9mb250
LT5nbHlwaERhdGFGb3JDaGFyYWN0ZXIodV90b3VwcGVyKGNoYXJhY3RlciksIHJ0bCk7CiAgICAg
ICAgICAgICAgICAgICAgIGlmICh1cHBlcmNhc2VHbHlwaERhdGEuZm9udERhdGEgIT0gcHJpbWFy
eUZvbnQpCiAgICAgICAgICAgICAgICAgICAgICAgICBtX2ZhbGxiYWNrRm9udHMtPmFkZCh1cHBl
cmNhc2VHbHlwaERhdGEuZm9udERhdGEpOwogICAgICAgICAgICAgICAgIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9Db21wbGV4VGV4dENvbnRyb2xs
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0NvbXBsZXhUZXh0
Q29udHJvbGxlci5jcHAKaW5kZXggMjhhMzU1MzA1OWUyZGUwNjc1MTAyZjY5NTY5OGUwMmQ4MDYw
M2QwZi4uMDdkY2JkYTNkNTA0MmRmMzllNDA3NTIyNjcyZjA4MjdmZjhlYTU1MyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0NvbXBsZXhUZXh0Q29udHJv
bGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0NvbXBs
ZXhUZXh0Q29udHJvbGxlci5jcHAKQEAgLTMyNyw2ICszMjcsNyBAQCB2b2lkIENvbXBsZXhUZXh0
Q29udHJvbGxlcjo6Y29sbGVjdENvbXBsZXhUZXh0UnVucygpCiAKICAgICBib29sIGlzU21hbGxD
YXBzOwogICAgIGJvb2wgbmV4dElzU21hbGxDYXBzID0gbV9mb250LmlzU21hbGxDYXBzKCkgJiYg
IShVX0dFVF9HQ19NQVNLKGJhc2VDaGFyYWN0ZXIpICYgVV9HQ19NX01BU0spICYmICh1cHBlcmNh
c2VDaGFyYWN0ZXIgPSB1X3RvdXBwZXIoYmFzZUNoYXJhY3RlcikpICE9IGJhc2VDaGFyYWN0ZXI7
CisgICAgQVNTRVJUKHVwcGVyY2FzZUNoYXJhY3RlciA9PSAwIHx8IHVfdG91cHBlcihiYXNlQ2hh
cmFjdGVyKSA8PSAweEZGRkYpOwogCiAgICAgaWYgKG5leHRJc1NtYWxsQ2FwcykgewogICAgICAg
ICBtX3NtYWxsQ2Fwc0J1ZmZlcltzZXF1ZW5jZVN0YXJ0IC0gY3BdID0gdXBwZXJjYXNlQ2hhcmFj
dGVyOwpAQCAtMzQ5LDcgKzM1MCw5IEBAIHZvaWQgQ29tcGxleFRleHRDb250cm9sbGVyOjpjb2xs
ZWN0Q29tcGxleFRleHRSdW5zKCkKICAgICAgICAgICAgIHJldHVybjsKIAogICAgICAgICBpZiAo
bV9mb250LmlzU21hbGxDYXBzKCkpIHsKLSAgICAgICAgICAgIG5leHRJc1NtYWxsQ2FwcyA9ICh1
cHBlcmNhc2VDaGFyYWN0ZXIgPSB1X3RvdXBwZXIoYmFzZUNoYXJhY3RlcikpICE9IGJhc2VDaGFy
YWN0ZXI7CisgICAgICAgICAgICBBU1NFUlQodV90b3VwcGVyKGJhc2VDaGFyYWN0ZXIpIDw9IDB4
RkZGRik7CisgICAgICAgICAgICB1cHBlcmNhc2VDaGFyYWN0ZXIgPSB1X3RvdXBwZXIoYmFzZUNo
YXJhY3Rlcik7CisgICAgICAgICAgICBuZXh0SXNTbWFsbENhcHMgPSB1cHBlcmNhc2VDaGFyYWN0
ZXIgIT0gYmFzZUNoYXJhY3RlcjsKICAgICAgICAgICAgIGlmIChuZXh0SXNTbWFsbENhcHMpIHsK
ICAgICAgICAgICAgICAgICBtX3NtYWxsQ2Fwc0J1ZmZlcltpbmRleF0gPSB1cHBlcmNhc2VDaGFy
YWN0ZXI7CiAgICAgICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1hcmtDb3Vu
dDsgKytpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2lu
L1VuaXNjcmliZUNvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3Mvd2luL1VuaXNjcmliZUNvbnRyb2xsZXIuY3BwCmluZGV4IGFhY2ZiMTY5NTcyYmZhNWExOWQ1
YTdmODcwZGJkNzVjMDVjOTE1ODUuLjI0MjA2OWVlMjUwOWZjNzJjZGJmNDhmMDQ1ODA2OTcwMTI2
MzAxMmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9V
bmlzY3JpYmVDb250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy93aW4vVW5pc2NyaWJlQ29udHJvbGxlci5jcHAKQEAgLTEzMyw3ICsxMzMsNyBAQCB2b2lk
IFVuaXNjcmliZUNvbnRyb2xsZXI6OmFkdmFuY2UodW5zaWduZWQgb2Zmc2V0LCBHbHlwaEJ1ZmZl
ciogZ2x5cGhCdWZmZXIpCiAgICAgVUNoYXIgbmV3QyA9IDA7CiAKICAgICBib29sIGlzU21hbGxD
YXBzOwotICAgIGJvb2wgbmV4dElzU21hbGxDYXBzID0gbV9mb250LmlzU21hbGxDYXBzKCkgJiYg
IShjYXRlZ29yeSgqY3VycikgJiAoTWFya19Ob25TcGFjaW5nIHwgTWFya19FbmNsb3NpbmcgfCBN
YXJrX1NwYWNpbmdDb21iaW5pbmcpKSAmJiAobmV3QyA9IHRvVXBwZXIoKmN1cnIpKSAhPSAqY3Vy
cjsKKyAgICBib29sIG5leHRJc1NtYWxsQ2FwcyA9IG1fZm9udC5pc1NtYWxsQ2FwcygpICYmICEo
VV9HRVRfR0NfTUFTSygqY3VycikgJiBVX0dDX01fTUFTSykgJiYgKG5ld0MgPSB1X3RvdXBwZXIo
KmN1cnIpKSAhPSAqY3VycjsKIAogICAgIGlmIChuZXh0SXNTbWFsbENhcHMpCiAgICAgICAgIHNt
YWxsQ2Fwc0J1ZmZlcltjdXJyIC0gY3BdID0gbmV3QzsKQEAgLTE0OCwxMCArMTQ4LDEwIEBAIHZv
aWQgVW5pc2NyaWJlQ29udHJvbGxlcjo6YWR2YW5jZSh1bnNpZ25lZCBvZmZzZXQsIEdseXBoQnVm
ZmVyKiBnbHlwaEJ1ZmZlcikKICAgICAgICAgaW50IGluZGV4ID0gY3VyciAtIGNwOwogICAgICAg
ICBVQ2hhciBjID0gKmN1cnI7CiAKLSAgICAgICAgYm9vbCBmb3JjZVNtYWxsQ2FwcyA9IGlzU21h
bGxDYXBzICYmIChjYXRlZ29yeShjKSAmIChNYXJrX05vblNwYWNpbmcgfCBNYXJrX0VuY2xvc2lu
ZyB8IE1hcmtfU3BhY2luZ0NvbWJpbmluZykpOworICAgICAgICBib29sIGZvcmNlU21hbGxDYXBz
ID0gaXNTbWFsbENhcHMgJiYgKFVfR0VUX0dDX01BU0soYykgJiBVX0dDX01fTUFTSyk7CiAgICAg
ICAgIG5leHRGb250RGF0YSA9IG1fZm9udC5nbHlwaERhdGFGb3JDaGFyYWN0ZXIoKmN1cnIsIGZh
bHNlLCBmb3JjZVNtYWxsQ2FwcyA/IFNtYWxsQ2Fwc1ZhcmlhbnQgOiBBdXRvVmFyaWFudCkuZm9u
dERhdGE7CiAgICAgICAgIGlmIChtX2ZvbnQuaXNTbWFsbENhcHMoKSkgewotICAgICAgICAgICAg
bmV4dElzU21hbGxDYXBzID0gZm9yY2VTbWFsbENhcHMgfHwgKG5ld0MgPSB0b1VwcGVyKGMpKSAh
PSBjOworICAgICAgICAgICAgbmV4dElzU21hbGxDYXBzID0gZm9yY2VTbWFsbENhcHMgfHwgKG5l
d0MgPSB1X3RvdXBwZXIoYykpICE9IGM7CiAgICAgICAgICAgICBpZiAobmV4dElzU21hbGxDYXBz
KQogICAgICAgICAgICAgICAgIHNtYWxsQ2Fwc0J1ZmZlcltpbmRleF0gPSBmb3JjZVNtYWxsQ2Fw
cyA/IGMgOiBuZXdDOwogICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS90ZXh0L0JpZGlDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQv
QmlkaUNvbnRleHQuY3BwCmluZGV4IDZjMDhiMDhmMjBiY2NhMTY0YmVlZmYzOTA2ZTc5YWFkYTYz
NzJlYzkuLmRiMTI2Yzk5MWY0Y2EwYWQwOWFkZTU3MmQ1ZDc4MGI4MTZkZjJlYzYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvQmlkaUNvbnRleHQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvQmlkaUNvbnRleHQuY3BwCkBAIC0yNSw4ICsyNSw2
IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotdXNpbmcgbmFtZXNwYWNlIFdURjo6VW5pY29k
ZTsKLQogc3RydWN0IFNhbWVTaXplQXNCaWRpQ29udGV4dCA6IHB1YmxpYyBSZWZDb3VudGVkPFNh
bWVTaXplQXNCaWRpQ29udGV4dD4gewogICAgIHVpbnQzMl90IGJpdGZpZWxkcyA6IDE2OwogICAg
IHZvaWQqIHBhcmVudDsKQEAgLTM0LDE0ICszMiwxNCBAQCBzdHJ1Y3QgU2FtZVNpemVBc0JpZGlD
b250ZXh0IDogcHVibGljIFJlZkNvdW50ZWQ8U2FtZVNpemVBc0JpZGlDb250ZXh0PiB7CiAKIENP
TVBJTEVfQVNTRVJUKHNpemVvZihCaWRpQ29udGV4dCkgPT0gc2l6ZW9mKFNhbWVTaXplQXNCaWRp
Q29udGV4dCksIEJpZGlDb250ZXh0X3Nob3VsZF9zdGF5X3NtYWxsKTsKIAotaW5saW5lIFBhc3NS
ZWZQdHI8QmlkaUNvbnRleHQ+IEJpZGlDb250ZXh0OjpjcmVhdGVVbmNhY2hlZCh1bnNpZ25lZCBj
aGFyIGxldmVsLCBEaXJlY3Rpb24gZGlyZWN0aW9uLCBib29sIG92ZXJyaWRlLCBCaWRpRW1iZWRk
aW5nU291cmNlIHNvdXJjZSwgQmlkaUNvbnRleHQqIHBhcmVudCkKK2lubGluZSBQYXNzUmVmUHRy
PEJpZGlDb250ZXh0PiBCaWRpQ29udGV4dDo6Y3JlYXRlVW5jYWNoZWQodW5zaWduZWQgY2hhciBs
ZXZlbCwgVUNoYXJEaXJlY3Rpb24gZGlyZWN0aW9uLCBib29sIG92ZXJyaWRlLCBCaWRpRW1iZWRk
aW5nU291cmNlIHNvdXJjZSwgQmlkaUNvbnRleHQqIHBhcmVudCkKIHsKICAgICByZXR1cm4gYWRv
cHRSZWYobmV3IEJpZGlDb250ZXh0KGxldmVsLCBkaXJlY3Rpb24sIG92ZXJyaWRlLCBzb3VyY2Us
IHBhcmVudCkpOwogfQogCi1QYXNzUmVmUHRyPEJpZGlDb250ZXh0PiBCaWRpQ29udGV4dDo6Y3Jl
YXRlKHVuc2lnbmVkIGNoYXIgbGV2ZWwsIERpcmVjdGlvbiBkaXJlY3Rpb24sIGJvb2wgb3ZlcnJp
ZGUsIEJpZGlFbWJlZGRpbmdTb3VyY2Ugc291cmNlLCBCaWRpQ29udGV4dCogcGFyZW50KQorUGFz
c1JlZlB0cjxCaWRpQ29udGV4dD4gQmlkaUNvbnRleHQ6OmNyZWF0ZSh1bnNpZ25lZCBjaGFyIGxl
dmVsLCBVQ2hhckRpcmVjdGlvbiBkaXJlY3Rpb24sIGJvb2wgb3ZlcnJpZGUsIEJpZGlFbWJlZGRp
bmdTb3VyY2Ugc291cmNlLCBCaWRpQ29udGV4dCogcGFyZW50KQogewotICAgIEFTU0VSVChkaXJl
Y3Rpb24gPT0gKGxldmVsICUgMiA/IFJpZ2h0VG9MZWZ0IDogTGVmdFRvUmlnaHQpKTsKKyAgICBB
U1NFUlQoZGlyZWN0aW9uID09IChsZXZlbCAlIDIgPyBVX1JJR0hUX1RPX0xFRlQgOiBVX0xFRlRf
VE9fUklHSFQpKTsKIAogICAgIGlmIChwYXJlbnQpCiAgICAgICAgIHJldHVybiBjcmVhdGVVbmNh
Y2hlZChsZXZlbCwgZGlyZWN0aW9uLCBvdmVycmlkZSwgc291cmNlLCBwYXJlbnQpOwpAQCAtNDks
MjAgKzQ3LDIwIEBAIFBhc3NSZWZQdHI8QmlkaUNvbnRleHQ+IEJpZGlDb250ZXh0OjpjcmVhdGUo
dW5zaWduZWQgY2hhciBsZXZlbCwgRGlyZWN0aW9uIGRpcmVjCiAgICAgQVNTRVJUKGxldmVsIDw9
IDEpOwogICAgIGlmICghbGV2ZWwpIHsKICAgICAgICAgaWYgKCFvdmVycmlkZSkgewotICAgICAg
ICAgICAgc3RhdGljIEJpZGlDb250ZXh0KiBsdHJDb250ZXh0ID0gY3JlYXRlVW5jYWNoZWQoMCwg
TGVmdFRvUmlnaHQsIGZhbHNlLCBGcm9tU3R5bGVPckRPTSwgMCkubGVha1JlZigpOworICAgICAg
ICAgICAgc3RhdGljIEJpZGlDb250ZXh0KiBsdHJDb250ZXh0ID0gY3JlYXRlVW5jYWNoZWQoMCwg
VV9MRUZUX1RPX1JJR0hULCBmYWxzZSwgRnJvbVN0eWxlT3JET00sIDApLmxlYWtSZWYoKTsKICAg
ICAgICAgICAgIHJldHVybiBsdHJDb250ZXh0OwogICAgICAgICB9CiAKLSAgICAgICAgc3RhdGlj
IEJpZGlDb250ZXh0KiBsdHJPdmVycmlkZUNvbnRleHQgPSBjcmVhdGVVbmNhY2hlZCgwLCBMZWZ0
VG9SaWdodCwgdHJ1ZSwgRnJvbVN0eWxlT3JET00sIDApLmxlYWtSZWYoKTsKKyAgICAgICAgc3Rh
dGljIEJpZGlDb250ZXh0KiBsdHJPdmVycmlkZUNvbnRleHQgPSBjcmVhdGVVbmNhY2hlZCgwLCBV
X0xFRlRfVE9fUklHSFQsIHRydWUsIEZyb21TdHlsZU9yRE9NLCAwKS5sZWFrUmVmKCk7CiAgICAg
ICAgIHJldHVybiBsdHJPdmVycmlkZUNvbnRleHQ7CiAgICAgfQogCiAgICAgaWYgKCFvdmVycmlk
ZSkgewotICAgICAgICBzdGF0aWMgQmlkaUNvbnRleHQqIHJ0bENvbnRleHQgPSBjcmVhdGVVbmNh
Y2hlZCgxLCBSaWdodFRvTGVmdCwgZmFsc2UsIEZyb21TdHlsZU9yRE9NLCAwKS5sZWFrUmVmKCk7
CisgICAgICAgIHN0YXRpYyBCaWRpQ29udGV4dCogcnRsQ29udGV4dCA9IGNyZWF0ZVVuY2FjaGVk
KDEsIFVfUklHSFRfVE9fTEVGVCwgZmFsc2UsIEZyb21TdHlsZU9yRE9NLCAwKS5sZWFrUmVmKCk7
CiAgICAgICAgIHJldHVybiBydGxDb250ZXh0OwogICAgIH0KIAotICAgIHN0YXRpYyBCaWRpQ29u
dGV4dCogcnRsT3ZlcnJpZGVDb250ZXh0ID0gY3JlYXRlVW5jYWNoZWQoMSwgUmlnaHRUb0xlZnQs
IHRydWUsIEZyb21TdHlsZU9yRE9NLCAwKS5sZWFrUmVmKCk7CisgICAgc3RhdGljIEJpZGlDb250
ZXh0KiBydGxPdmVycmlkZUNvbnRleHQgPSBjcmVhdGVVbmNhY2hlZCgxLCBVX1JJR0hUX1RPX0xF
RlQsIHRydWUsIEZyb21TdHlsZU9yRE9NLCAwKS5sZWFrUmVmKCk7CiAgICAgcmV0dXJuIHJ0bE92
ZXJyaWRlQ29udGV4dDsKIH0KIApAQCAtNzAsNyArNjgsNyBAQCBzdGF0aWMgaW5saW5lIFBhc3NS
ZWZQdHI8QmlkaUNvbnRleHQ+IGNvcHlDb250ZXh0QW5kUmViYXNlbGluZUxldmVsKEJpZGlDb250
ZXh0KgogewogICAgIEFTU0VSVChjb250ZXh0KTsKICAgICB1bnNpZ25lZCBjaGFyIG5ld0xldmVs
ID0gcGFyZW50ID8gcGFyZW50LT5sZXZlbCgpIDogMDsKLSAgICBpZiAoY29udGV4dC0+ZGlyKCkg
PT0gUmlnaHRUb0xlZnQpCisgICAgaWYgKGNvbnRleHQtPmRpcigpID09IFVfUklHSFRfVE9fTEVG
VCkKICAgICAgICAgbmV3TGV2ZWwgPSBuZXh0R3JlYXRlck9kZExldmVsKG5ld0xldmVsKTsKICAg
ICBlbHNlIGlmIChwYXJlbnQpCiAgICAgICAgIG5ld0xldmVsID0gbmV4dEdyZWF0ZXJFdmVuTGV2
ZWwobmV3TGV2ZWwpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9C
aWRpQ29udGV4dC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9CaWRpQ29udGV4dC5o
CmluZGV4IDFkNDhkMzY2ZmE3OTNkZjZhYjMzZDlkMWFjNjkwNWRlNmE0MDdlZGEuLjM3MTk4MzA1
NWNmNmJhYTIwYzY4YTQzZDYyNTkyODBhNDhmZjNlMjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL3RleHQvQmlkaUNvbnRleHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS90ZXh0L0JpZGlDb250ZXh0LmgKQEAgLTM4LDE3ICszOCwxNyBAQCBlbnVtIEJpZGlFbWJl
ZGRpbmdTb3VyY2UgewogLy8gVXNlZCB0byBrZWVwIHRyYWNrIG9mIGV4cGxpY2l0IGVtYmVkZGlu
Z3MuCiBjbGFzcyBCaWRpQ29udGV4dCA6IHB1YmxpYyBSZWZDb3VudGVkPEJpZGlDb250ZXh0PiB7
CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8QmlkaUNvbnRleHQ+IGNyZWF0ZSh1bnNp
Z25lZCBjaGFyIGxldmVsLCBXVEY6OlVuaWNvZGU6OkRpcmVjdGlvbiwgYm9vbCBvdmVycmlkZSA9
IGZhbHNlLCBCaWRpRW1iZWRkaW5nU291cmNlID0gRnJvbVN0eWxlT3JET00sIEJpZGlDb250ZXh0
KiBwYXJlbnQgPSAwKTsKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxCaWRpQ29udGV4dD4gY3JlYXRl
KHVuc2lnbmVkIGNoYXIgbGV2ZWwsIFVDaGFyRGlyZWN0aW9uLCBib29sIG92ZXJyaWRlID0gZmFs
c2UsIEJpZGlFbWJlZGRpbmdTb3VyY2UgPSBGcm9tU3R5bGVPckRPTSwgQmlkaUNvbnRleHQqIHBh
cmVudCA9IDApOwogCiAgICAgQmlkaUNvbnRleHQqIHBhcmVudCgpIGNvbnN0IHsgcmV0dXJuIG1f
cGFyZW50LmdldCgpOyB9CiAgICAgdW5zaWduZWQgY2hhciBsZXZlbCgpIGNvbnN0IHsgcmV0dXJu
IG1fbGV2ZWw7IH0KLSAgICBXVEY6OlVuaWNvZGU6OkRpcmVjdGlvbiBkaXIoKSBjb25zdCB7IHJl
dHVybiBzdGF0aWNfY2FzdDxXVEY6OlVuaWNvZGU6OkRpcmVjdGlvbj4obV9kaXJlY3Rpb24pOyB9
CisgICAgVUNoYXJEaXJlY3Rpb24gZGlyKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8VUNo
YXJEaXJlY3Rpb24+KG1fZGlyZWN0aW9uKTsgfQogICAgIGJvb2wgb3ZlcnJpZGUoKSBjb25zdCB7
IHJldHVybiBtX292ZXJyaWRlOyB9CiAgICAgQmlkaUVtYmVkZGluZ1NvdXJjZSBzb3VyY2UoKSBj
b25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxCaWRpRW1iZWRkaW5nU291cmNlPihtX3NvdXJjZSk7
IH0KIAogICAgIFBhc3NSZWZQdHI8QmlkaUNvbnRleHQ+IGNvcHlTdGFja1JlbW92aW5nVW5pY29k
ZUVtYmVkZGluZ0NvbnRleHRzKCk7CiBwcml2YXRlOgotICAgIEJpZGlDb250ZXh0KHVuc2lnbmVk
IGNoYXIgbGV2ZWwsIFdURjo6VW5pY29kZTo6RGlyZWN0aW9uIGRpcmVjdGlvbiwgYm9vbCBvdmVy
cmlkZSwgQmlkaUVtYmVkZGluZ1NvdXJjZSBzb3VyY2UsIEJpZGlDb250ZXh0KiBwYXJlbnQpCisg
ICAgQmlkaUNvbnRleHQodW5zaWduZWQgY2hhciBsZXZlbCwgVUNoYXJEaXJlY3Rpb24gZGlyZWN0
aW9uLCBib29sIG92ZXJyaWRlLCBCaWRpRW1iZWRkaW5nU291cmNlIHNvdXJjZSwgQmlkaUNvbnRl
eHQqIHBhcmVudCkKICAgICAgICAgOiBtX2xldmVsKGxldmVsKQogICAgICAgICAsIG1fZGlyZWN0
aW9uKGRpcmVjdGlvbikKICAgICAgICAgLCBtX292ZXJyaWRlKG92ZXJyaWRlKQpAQCAtNTcsNyAr
NTcsNyBAQCBwcml2YXRlOgogICAgIHsKICAgICB9CiAKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxC
aWRpQ29udGV4dD4gY3JlYXRlVW5jYWNoZWQodW5zaWduZWQgY2hhciBsZXZlbCwgV1RGOjpVbmlj
b2RlOjpEaXJlY3Rpb24sIGJvb2wgb3ZlcnJpZGUsIEJpZGlFbWJlZGRpbmdTb3VyY2UsIEJpZGlD
b250ZXh0KiBwYXJlbnQpOworICAgIHN0YXRpYyBQYXNzUmVmUHRyPEJpZGlDb250ZXh0PiBjcmVh
dGVVbmNhY2hlZCh1bnNpZ25lZCBjaGFyIGxldmVsLCBVQ2hhckRpcmVjdGlvbiwgYm9vbCBvdmVy
cmlkZSwgQmlkaUVtYmVkZGluZ1NvdXJjZSwgQmlkaUNvbnRleHQqIHBhcmVudCk7CiAKICAgICB1
bnNpZ25lZCBtX2xldmVsIDogNjsgLy8gVGhlIG1heGltaXVtIGJpZGkgbGV2ZWwgaXMgNjI6IGh0
dHA6Ly91bmljb2RlLm9yZy9yZXBvcnRzL3RyOS8jRXhwbGljaXRfTGV2ZWxzX2FuZF9EaXJlY3Rp
b25zCiAgICAgdW5zaWduZWQgbV9kaXJlY3Rpb24gOiA1OyAvLyBEaXJlY3Rpb24KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvQmlkaVJlc29sdmVyLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS90ZXh0L0JpZGlSZXNvbHZlci5oCmluZGV4IGUwNjQ5ZmNiNDNmNGYy
OTAzMDU1MWZhZjc1OWYzNWVhOTFiNmVhMjQuLmI3NDQ3YmVlZDY5ZjNmOWZmNjM4MTRkODAzNTUz
NDFiZWM0MDQ4YjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvQmlk
aVJlc29sdmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9CaWRpUmVzb2x2
ZXIuaApAQCAtNTcsMjIgKzU3LDIyIEBAIHRlbXBsYXRlIDxjbGFzcyBJdGVyYXRvcj4gc3RydWN0
IE1pZHBvaW50U3RhdGUgewogLy8gYmUgY2FjaGVkIGFuZCB0aGVuIHVzZWQgdG8gcmVzdGFydCBi
aWRpIHJlc29sdXRpb24gYXQgdGhhdCBwb3NpdGlvbi4KIHN0cnVjdCBCaWRpU3RhdHVzIHsKICAg
ICBCaWRpU3RhdHVzKCkKLSAgICAgICAgOiBlb3IoV1RGOjpVbmljb2RlOjpPdGhlck5ldXRyYWwp
Ci0gICAgICAgICwgbGFzdFN0cm9uZyhXVEY6OlVuaWNvZGU6Ok90aGVyTmV1dHJhbCkKLSAgICAg
ICAgLCBsYXN0KFdURjo6VW5pY29kZTo6T3RoZXJOZXV0cmFsKQorICAgICAgICA6IGVvcihVX09U
SEVSX05FVVRSQUwpCisgICAgICAgICwgbGFzdFN0cm9uZyhVX09USEVSX05FVVRSQUwpCisgICAg
ICAgICwgbGFzdChVX09USEVSX05FVVRSQUwpCiAgICAgewogICAgIH0KIAogICAgIC8vIENyZWF0
ZXMgYSBCaWRpU3RhdHVzIHJlcHJlc2VudGluZyBhIG5ldyBwYXJhZ3JhcGggcm9vdCB3aXRoIGEg
ZGVmYXVsdCBkaXJlY3Rpb24uCi0gICAgLy8gVXNlcyBUZXh0RGlyZWN0aW9uIGFzIGl0IG9ubHkg
aGFzIHR3byBwb3NzaWJpbGl0aWVzIGluc3RlYWQgb2YgV1RGOjpVbmljb2RlOjpEaXJlY3Rpb24g
d2hpY2ggaGFzIDE5LgorICAgIC8vIFVzZXMgVGV4dERpcmVjdGlvbiBhcyBpdCBvbmx5IGhhcyB0
d28gcG9zc2liaWxpdGllcyBpbnN0ZWFkIG9mIFVDaGFyRGlyZWN0aW9uIHdoaWNoIGhhcyBhdCBs
ZWFzdCAxOS4KICAgICBCaWRpU3RhdHVzKFRleHREaXJlY3Rpb24gdGV4dERpcmVjdGlvbiwgYm9v
bCBpc092ZXJyaWRlKQogICAgIHsKLSAgICAgICAgV1RGOjpVbmljb2RlOjpEaXJlY3Rpb24gZGly
ZWN0aW9uID0gdGV4dERpcmVjdGlvbiA9PSBMVFIgPyBXVEY6OlVuaWNvZGU6OkxlZnRUb1JpZ2h0
IDogV1RGOjpVbmljb2RlOjpSaWdodFRvTGVmdDsKKyAgICAgICAgVUNoYXJEaXJlY3Rpb24gZGly
ZWN0aW9uID0gdGV4dERpcmVjdGlvbiA9PSBMVFIgPyBVX0xFRlRfVE9fUklHSFQgOiBVX1JJR0hU
X1RPX0xFRlQ7CiAgICAgICAgIGVvciA9IGxhc3RTdHJvbmcgPSBsYXN0ID0gZGlyZWN0aW9uOwog
ICAgICAgICBjb250ZXh0ID0gQmlkaUNvbnRleHQ6OmNyZWF0ZSh0ZXh0RGlyZWN0aW9uID09IExU
UiA/IDAgOiAxLCBkaXJlY3Rpb24sIGlzT3ZlcnJpZGUpOwogICAgIH0KIAotICAgIEJpZGlTdGF0
dXMoV1RGOjpVbmljb2RlOjpEaXJlY3Rpb24gZW9yRGlyLCBXVEY6OlVuaWNvZGU6OkRpcmVjdGlv
biBsYXN0U3Ryb25nRGlyLCBXVEY6OlVuaWNvZGU6OkRpcmVjdGlvbiBsYXN0RGlyLCBQYXNzUmVm
UHRyPEJpZGlDb250ZXh0PiBiaWRpQ29udGV4dCkKKyAgICBCaWRpU3RhdHVzKFVDaGFyRGlyZWN0
aW9uIGVvckRpciwgVUNoYXJEaXJlY3Rpb24gbGFzdFN0cm9uZ0RpciwgVUNoYXJEaXJlY3Rpb24g
bGFzdERpciwgUGFzc1JlZlB0cjxCaWRpQ29udGV4dD4gYmlkaUNvbnRleHQpCiAgICAgICAgIDog
ZW9yKGVvckRpcikKICAgICAgICAgLCBsYXN0U3Ryb25nKGxhc3RTdHJvbmdEaXIpCiAgICAgICAg
ICwgbGFzdChsYXN0RGlyKQpAQCAtODAsMjQgKzgwLDI0IEBAIHN0cnVjdCBCaWRpU3RhdHVzIHsK
ICAgICB7CiAgICAgfQogCi0gICAgV1RGOjpVbmljb2RlOjpEaXJlY3Rpb24gZW9yOwotICAgIFdU
Rjo6VW5pY29kZTo6RGlyZWN0aW9uIGxhc3RTdHJvbmc7Ci0gICAgV1RGOjpVbmljb2RlOjpEaXJl
Y3Rpb24gbGFzdDsKKyAgICBVQ2hhckRpcmVjdGlvbiBlb3I7CisgICAgVUNoYXJEaXJlY3Rpb24g
bGFzdFN0cm9uZzsKKyAgICBVQ2hhckRpcmVjdGlvbiBsYXN0OwogICAgIFJlZlB0cjxCaWRpQ29u
dGV4dD4gY29udGV4dDsKIH07CiAKIGNsYXNzIEJpZGlFbWJlZGRpbmcgewogcHVibGljOgotICAg
IEJpZGlFbWJlZGRpbmcoV1RGOjpVbmljb2RlOjpEaXJlY3Rpb24gZGlyZWN0aW9uLCBCaWRpRW1i
ZWRkaW5nU291cmNlIHNvdXJjZSkKKyAgICBCaWRpRW1iZWRkaW5nKFVDaGFyRGlyZWN0aW9uIGRp
cmVjdGlvbiwgQmlkaUVtYmVkZGluZ1NvdXJjZSBzb3VyY2UpCiAgICAgOiBtX2RpcmVjdGlvbihk
aXJlY3Rpb24pCiAgICAgLCBtX3NvdXJjZShzb3VyY2UpCiAgICAgewogICAgIH0KIAotICAgIFdU
Rjo6VW5pY29kZTo6RGlyZWN0aW9uIGRpcmVjdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fZGlyZWN0
aW9uOyB9CisgICAgVUNoYXJEaXJlY3Rpb24gZGlyZWN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9k
aXJlY3Rpb247IH0KICAgICBCaWRpRW1iZWRkaW5nU291cmNlIHNvdXJjZSgpIGNvbnN0IHsgcmV0
dXJuIG1fc291cmNlOyB9CiBwcml2YXRlOgotICAgIFdURjo6VW5pY29kZTo6RGlyZWN0aW9uIG1f
ZGlyZWN0aW9uOworICAgIFVDaGFyRGlyZWN0aW9uIG1fZGlyZWN0aW9uOwogICAgIEJpZGlFbWJl
ZGRpbmdTb3VyY2UgbV9zb3VyY2U7CiB9OwogCkBAIC0xMTIsMjUgKzExMiwyNSBAQCBpbmxpbmUg
Ym9vbCBvcGVyYXRvciE9KGNvbnN0IEJpZGlTdGF0dXMmIHN0YXR1czEsIGNvbnN0IEJpZGlTdGF0
dXMmIHN0YXR1czIpCiB9CiAKIHN0cnVjdCBCaWRpQ2hhcmFjdGVyUnVuIHsKLSAgICBCaWRpQ2hh
cmFjdGVyUnVuKGludCBzdGFydCwgaW50IHN0b3AsIEJpZGlDb250ZXh0KiBjb250ZXh0LCBXVEY6
OlVuaWNvZGU6OkRpcmVjdGlvbiBkaXIpCisgICAgQmlkaUNoYXJhY3RlclJ1bihpbnQgc3RhcnQs
IGludCBzdG9wLCBCaWRpQ29udGV4dCogY29udGV4dCwgVUNoYXJEaXJlY3Rpb24gZGlyZWN0aW9u
KQogICAgICAgICA6IG1fb3ZlcnJpZGUoY29udGV4dC0+b3ZlcnJpZGUoKSkKICAgICAgICAgLCBt
X25leHQoMCkKICAgICAgICAgLCBtX3N0YXJ0KHN0YXJ0KQogICAgICAgICAsIG1fc3RvcChzdG9w
KQogICAgIHsKLSAgICAgICAgaWYgKGRpciA9PSBXVEY6OlVuaWNvZGU6Ok90aGVyTmV1dHJhbCkK
LSAgICAgICAgICAgIGRpciA9IGNvbnRleHQtPmRpcigpOworICAgICAgICBpZiAoZGlyZWN0aW9u
ID09IFVfT1RIRVJfTkVVVFJBTCkKKyAgICAgICAgICAgIGRpcmVjdGlvbiA9IGNvbnRleHQtPmRp
cigpOwogCiAgICAgICAgIG1fbGV2ZWwgPSBjb250ZXh0LT5sZXZlbCgpOwogCiAgICAgICAgIC8v
IGFkZCBsZXZlbCBvZiBydW4gKGNhc2VzIEkxICYgSTIpCiAgICAgICAgIGlmIChtX2xldmVsICUg
MikgewotICAgICAgICAgICAgaWYgKGRpciA9PSBXVEY6OlVuaWNvZGU6OkxlZnRUb1JpZ2h0IHx8
IGRpciA9PSBXVEY6OlVuaWNvZGU6OkFyYWJpY051bWJlciB8fCBkaXIgPT0gV1RGOjpVbmljb2Rl
OjpFdXJvcGVhbk51bWJlcikKKyAgICAgICAgICAgIGlmIChkaXJlY3Rpb24gPT0gVV9MRUZUX1RP
X1JJR0hUIHx8IGRpcmVjdGlvbiA9PSBVX0FSQUJJQ19OVU1CRVIgfHwgZGlyZWN0aW9uID09IFVf
RVVST1BFQU5fTlVNQkVSKQogICAgICAgICAgICAgICAgIG1fbGV2ZWwrKzsKICAgICAgICAgfSBl
bHNlIHsKLSAgICAgICAgICAgIGlmIChkaXIgPT0gV1RGOjpVbmljb2RlOjpSaWdodFRvTGVmdCkK
KyAgICAgICAgICAgIGlmIChkaXJlY3Rpb24gPT0gVV9SSUdIVF9UT19MRUZUKQogICAgICAgICAg
ICAgICAgIG1fbGV2ZWwrKzsKLSAgICAgICAgICAgIGVsc2UgaWYgKGRpciA9PSBXVEY6OlVuaWNv
ZGU6OkFyYWJpY051bWJlciB8fCBkaXIgPT0gV1RGOjpVbmljb2RlOjpFdXJvcGVhbk51bWJlcikK
KyAgICAgICAgICAgIGVsc2UgaWYgKGRpcmVjdGlvbiA9PSBVX0FSQUJJQ19OVU1CRVIgfHwgZGly
ZWN0aW9uID09IFVfRVVST1BFQU5fTlVNQkVSKQogICAgICAgICAgICAgICAgIG1fbGV2ZWwgKz0g
MjsKICAgICAgICAgfQogICAgIH0KQEAgLTE3MCw3ICsxNzAsNyBAQCB0ZW1wbGF0ZSA8Y2xhc3Mg
SXRlcmF0b3IsIGNsYXNzIFJ1bj4gY2xhc3MgQmlkaVJlc29sdmVyIHsKICAgICBXVEZfTUFLRV9O
T05DT1BZQUJMRShCaWRpUmVzb2x2ZXIpOwogcHVibGljOgogICAgIEJpZGlSZXNvbHZlcigpCi0g
ICAgICAgIDogbV9kaXJlY3Rpb24oV1RGOjpVbmljb2RlOjpPdGhlck5ldXRyYWwpCisgICAgICAg
IDogbV9kaXJlY3Rpb24oVV9PVEhFUl9ORVVUUkFMKQogICAgICAgICAsIG1fcmVhY2hlZEVuZE9m
TGluZShmYWxzZSkKICAgICAgICAgLCBtX2VtcHR5UnVuKHRydWUpCiAgICAgICAgICwgbV9uZXN0
ZWRJc29sYXRlQ291bnQoMCkKQEAgLTE5NCwxMiArMTk0LDEyIEBAIHB1YmxpYzoKICAgICBCaWRp
Q29udGV4dCogY29udGV4dCgpIGNvbnN0IHsgcmV0dXJuIG1fc3RhdHVzLmNvbnRleHQuZ2V0KCk7
IH0KICAgICB2b2lkIHNldENvbnRleHQoUGFzc1JlZlB0cjxCaWRpQ29udGV4dD4gYykgeyBtX3N0
YXR1cy5jb250ZXh0ID0gYzsgfQogCi0gICAgdm9pZCBzZXRMYXN0RGlyKFdURjo6VW5pY29kZTo6
RGlyZWN0aW9uIGxhc3REaXIpIHsgbV9zdGF0dXMubGFzdCA9IGxhc3REaXI7IH0KLSAgICB2b2lk
IHNldExhc3RTdHJvbmdEaXIoV1RGOjpVbmljb2RlOjpEaXJlY3Rpb24gbGFzdFN0cm9uZ0Rpcikg
eyBtX3N0YXR1cy5sYXN0U3Ryb25nID0gbGFzdFN0cm9uZ0RpcjsgfQotICAgIHZvaWQgc2V0RW9y
RGlyKFdURjo6VW5pY29kZTo6RGlyZWN0aW9uIGVvckRpcikgeyBtX3N0YXR1cy5lb3IgPSBlb3JE
aXI7IH0KKyAgICB2b2lkIHNldExhc3REaXIoVUNoYXJEaXJlY3Rpb24gbGFzdERpcikgeyBtX3N0
YXR1cy5sYXN0ID0gbGFzdERpcjsgfQorICAgIHZvaWQgc2V0TGFzdFN0cm9uZ0RpcihVQ2hhckRp
cmVjdGlvbiBsYXN0U3Ryb25nRGlyKSB7IG1fc3RhdHVzLmxhc3RTdHJvbmcgPSBsYXN0U3Ryb25n
RGlyOyB9CisgICAgdm9pZCBzZXRFb3JEaXIoVUNoYXJEaXJlY3Rpb24gZW9yRGlyKSB7IG1fc3Rh
dHVzLmVvciA9IGVvckRpcjsgfQogCi0gICAgV1RGOjpVbmljb2RlOjpEaXJlY3Rpb24gZGlyKCkg
Y29uc3QgeyByZXR1cm4gbV9kaXJlY3Rpb247IH0KLSAgICB2b2lkIHNldERpcihXVEY6OlVuaWNv
ZGU6OkRpcmVjdGlvbiBkKSB7IG1fZGlyZWN0aW9uID0gZDsgfQorICAgIFVDaGFyRGlyZWN0aW9u
IGRpcigpIGNvbnN0IHsgcmV0dXJuIG1fZGlyZWN0aW9uOyB9CisgICAgdm9pZCBzZXREaXIoVUNo
YXJEaXJlY3Rpb24gZCkgeyBtX2RpcmVjdGlvbiA9IGQ7IH0KIAogICAgIGNvbnN0IEJpZGlTdGF0
dXMmIHN0YXR1cygpIGNvbnN0IHsgcmV0dXJuIG1fc3RhdHVzOyB9CiAgICAgdm9pZCBzZXRTdGF0
dXMoY29uc3QgQmlkaVN0YXR1cyBzKSB7IG1fc3RhdHVzID0gczsgfQpAQCAtMjEzLDcgKzIxMyw3
IEBAIHB1YmxpYzoKICAgICB2b2lkIGV4aXRJc29sYXRlKCkgeyBBU1NFUlQobV9uZXN0ZWRJc29s
YXRlQ291bnQgPj0gMSk7IG1fbmVzdGVkSXNvbGF0ZUNvdW50LS07IH0KICAgICBib29sIGluSXNv
bGF0ZSgpIGNvbnN0IHsgcmV0dXJuIG1fbmVzdGVkSXNvbGF0ZUNvdW50OyB9CiAKLSAgICB2b2lk
IGVtYmVkKFdURjo6VW5pY29kZTo6RGlyZWN0aW9uLCBCaWRpRW1iZWRkaW5nU291cmNlKTsKKyAg
ICB2b2lkIGVtYmVkKFVDaGFyRGlyZWN0aW9uLCBCaWRpRW1iZWRkaW5nU291cmNlKTsKICAgICBi
b29sIGNvbW1pdEV4cGxpY2l0RW1iZWRkaW5nKCk7CiAKICAgICB2b2lkIGNyZWF0ZUJpZGlSdW5z
Rm9yTGluZShjb25zdCBJdGVyYXRvciYgZW5kLCBWaXN1YWxEaXJlY3Rpb25PdmVycmlkZSA9IE5v
VmlzdWFsT3ZlcnJpZGUsIGJvb2wgaGFyZExpbmVCcmVhayA9IGZhbHNlKTsKQEAgLTIzOCwxMCAr
MjM4LDEwIEBAIHByb3RlY3RlZDoKICAgICBJdGVyYXRvciBtX2VvcjsgLy8gUG9pbnRzIHRvIHRo
ZSBsYXN0IGNoYXJhY3RlciBpbiB0aGUgY3VycmVudCBydW4uCiAgICAgSXRlcmF0b3IgbV9sYXN0
OwogICAgIEJpZGlTdGF0dXMgbV9zdGF0dXM7Ci0gICAgV1RGOjpVbmljb2RlOjpEaXJlY3Rpb24g
bV9kaXJlY3Rpb247CisgICAgVUNoYXJEaXJlY3Rpb24gbV9kaXJlY3Rpb247CiAgICAgSXRlcmF0
b3IgZW5kT2ZMaW5lOwogICAgIGJvb2wgbV9yZWFjaGVkRW5kT2ZMaW5lOwotICAgIEl0ZXJhdG9y
IG1fbGFzdEJlZm9yZUVUOyAvLyBCZWZvcmUgYSBFdXJvcGVhbk51bWJlclRlcm1pbmF0b3IKKyAg
ICBJdGVyYXRvciBtX2xhc3RCZWZvcmVFVDsgLy8gQmVmb3JlIGEgVV9FVVJPUEVBTl9OVU1CRVJf
VEVSTUlOQVRPUgogICAgIGJvb2wgbV9lbXB0eVJ1bjsKIAogICAgIC8vIEZJWE1FOiBUaGlzIHNo
b3VsZCBub3QgYmVsb25nIHRvIHRoZSByZXNvbHZlciwgYnV0IHJhdGhlciBiZSBwYXNzZWQKQEAg
LTI1NCwxMSArMjU0LDExIEBAIHByb3RlY3RlZDoKICAgICBWZWN0b3I8UnVuKj4gbV9pc29sYXRl
ZFJ1bnM7CiAKIHByaXZhdGU6Ci0gICAgdm9pZCByYWlzZUV4cGxpY2l0RW1iZWRkaW5nTGV2ZWwo
V1RGOjpVbmljb2RlOjpEaXJlY3Rpb24gZnJvbSwgV1RGOjpVbmljb2RlOjpEaXJlY3Rpb24gdG8p
OwotICAgIHZvaWQgbG93ZXJFeHBsaWNpdEVtYmVkZGluZ0xldmVsKFdURjo6VW5pY29kZTo6RGly
ZWN0aW9uIGZyb20pOworICAgIHZvaWQgcmFpc2VFeHBsaWNpdEVtYmVkZGluZ0xldmVsKFVDaGFy
RGlyZWN0aW9uIGZyb20sIFVDaGFyRGlyZWN0aW9uIHRvKTsKKyAgICB2b2lkIGxvd2VyRXhwbGlj
aXRFbWJlZGRpbmdMZXZlbChVQ2hhckRpcmVjdGlvbiBmcm9tKTsKICAgICB2b2lkIGNoZWNrRGly
ZWN0aW9uSW5Mb3dlclJhaXNlRW1iZWRkaW5nTGV2ZWwoKTsKIAotICAgIHZvaWQgdXBkYXRlU3Rh
dHVzTGFzdEZyb21DdXJyZW50RGlyZWN0aW9uKFdURjo6VW5pY29kZTo6RGlyZWN0aW9uKTsKKyAg
ICB2b2lkIHVwZGF0ZVN0YXR1c0xhc3RGcm9tQ3VycmVudERpcmVjdGlvbihVQ2hhckRpcmVjdGlv
bik7CiAgICAgdm9pZCByZW9yZGVyUnVuc0Zyb21MZXZlbHMoKTsKIAogICAgIFZlY3RvcjxCaWRp
RW1iZWRkaW5nLCA4PiBtX2N1cnJlbnRFeHBsaWNpdEVtYmVkZGluZ1NlcXVlbmNlOwpAQCAtMjk0
LDY0ICsyOTQsNTkgQEAgdm9pZCBCaWRpUmVzb2x2ZXI8SXRlcmF0b3IsIFJ1bj46OmFwcGVuZFJ1
bigpCiAgICAgICAgIG1fc29yID0gbV9lb3I7CiAgICAgfQogCi0gICAgbV9kaXJlY3Rpb24gPSBX
VEY6OlVuaWNvZGU6Ok90aGVyTmV1dHJhbDsKLSAgICBtX3N0YXR1cy5lb3IgPSBXVEY6OlVuaWNv
ZGU6Ok90aGVyTmV1dHJhbDsKKyAgICBtX2RpcmVjdGlvbiA9IFVfT1RIRVJfTkVVVFJBTDsKKyAg
ICBtX3N0YXR1cy5lb3IgPSBVX09USEVSX05FVVRSQUw7CiB9CiAKIHRlbXBsYXRlIDxjbGFzcyBJ
dGVyYXRvciwgY2xhc3MgUnVuPgotdm9pZCBCaWRpUmVzb2x2ZXI8SXRlcmF0b3IsIFJ1bj46OmVt
YmVkKFdURjo6VW5pY29kZTo6RGlyZWN0aW9uIGRpciwgQmlkaUVtYmVkZGluZ1NvdXJjZSBzb3Vy
Y2UpCit2b2lkIEJpZGlSZXNvbHZlcjxJdGVyYXRvciwgUnVuPjo6ZW1iZWQoVUNoYXJEaXJlY3Rp
b24gZGlyLCBCaWRpRW1iZWRkaW5nU291cmNlIHNvdXJjZSkKIHsKICAgICAvLyBJc29sYXRlZCBz
cGFucyBjb21wdXRlIGJhc2UgZGlyZWN0aW9uYWxpdHkgZHVyaW5nIHRoZWlyIG93biBVQkEgcnVu
LgogICAgIC8vIERvIG5vdCBpbnNlcnQgZmFrZSBlbWJlZCBjaGFyYWN0ZXJzIG9uY2Ugd2UgZW50
ZXIgYW4gaXNvbGF0ZWQgc3Bhbi4KICAgICBBU1NFUlQoIWluSXNvbGF0ZSgpKTsKLSAgICB1c2lu
ZyBuYW1lc3BhY2UgV1RGOjpVbmljb2RlOwogCi0gICAgQVNTRVJUKGRpciA9PSBQb3BEaXJlY3Rp
b25hbEZvcm1hdCB8fCBkaXIgPT0gTGVmdFRvUmlnaHRFbWJlZGRpbmcgfHwgZGlyID09IExlZnRU
b1JpZ2h0T3ZlcnJpZGUgfHwgZGlyID09IFJpZ2h0VG9MZWZ0RW1iZWRkaW5nIHx8IGRpciA9PSBS
aWdodFRvTGVmdE92ZXJyaWRlKTsKKyAgICBBU1NFUlQoZGlyID09IFVfUE9QX0RJUkVDVElPTkFM
X0ZPUk1BVCB8fCBkaXIgPT0gVV9MRUZUX1RPX1JJR0hUX0VNQkVERElORyB8fCBkaXIgPT0gVV9M
RUZUX1RPX1JJR0hUX09WRVJSSURFIHx8IGRpciA9PSBVX1JJR0hUX1RPX0xFRlRfRU1CRURESU5H
IHx8IGRpciA9PSBVX1JJR0hUX1RPX0xFRlRfT1ZFUlJJREUpOwogICAgIG1fY3VycmVudEV4cGxp
Y2l0RW1iZWRkaW5nU2VxdWVuY2UuYXBwZW5kKEJpZGlFbWJlZGRpbmcoZGlyLCBzb3VyY2UpKTsK
IH0KIAogdGVtcGxhdGUgPGNsYXNzIEl0ZXJhdG9yLCBjbGFzcyBSdW4+CiB2b2lkIEJpZGlSZXNv
bHZlcjxJdGVyYXRvciwgUnVuPjo6Y2hlY2tEaXJlY3Rpb25Jbkxvd2VyUmFpc2VFbWJlZGRpbmdM
ZXZlbCgpCiB7Ci0gICAgdXNpbmcgbmFtZXNwYWNlIFdURjo6VW5pY29kZTsKLQotICAgIEFTU0VS
VChtX3N0YXR1cy5lb3IgIT0gT3RoZXJOZXV0cmFsIHx8IG1fZW9yLmF0RW5kKCkpOwotICAgIEFT
U0VSVChtX3N0YXR1cy5sYXN0ICE9IE5vblNwYWNpbmdNYXJrCi0gICAgICAgICYmIG1fc3RhdHVz
Lmxhc3QgIT0gQm91bmRhcnlOZXV0cmFsCi0gICAgICAgICYmIG1fc3RhdHVzLmxhc3QgIT0gUmln
aHRUb0xlZnRFbWJlZGRpbmcKLSAgICAgICAgJiYgbV9zdGF0dXMubGFzdCAhPSBMZWZ0VG9SaWdo
dEVtYmVkZGluZwotICAgICAgICAmJiBtX3N0YXR1cy5sYXN0ICE9IFJpZ2h0VG9MZWZ0T3ZlcnJp
ZGUgCi0gICAgICAgICYmIG1fc3RhdHVzLmxhc3QgIT0gTGVmdFRvUmlnaHRPdmVycmlkZSAKLSAg
ICAgICAgJiYgbV9zdGF0dXMubGFzdCAhPSBQb3BEaXJlY3Rpb25hbEZvcm1hdCk7Ci0gICAgaWYg
KG1fZGlyZWN0aW9uID09IE90aGVyTmV1dHJhbCkKLSAgICAgICAgbV9kaXJlY3Rpb24gPSBtX3N0
YXR1cy5sYXN0U3Ryb25nID09IExlZnRUb1JpZ2h0ID8gTGVmdFRvUmlnaHQgOiBSaWdodFRvTGVm
dDsKKyAgICBBU1NFUlQobV9zdGF0dXMuZW9yICE9IFVfT1RIRVJfTkVVVFJBTCB8fCBtX2Vvci5h
dEVuZCgpKTsKKyAgICBBU1NFUlQobV9zdGF0dXMubGFzdCAhPSBVX0RJUl9OT05fU1BBQ0lOR19N
QVJLCisgICAgICAgICYmIG1fc3RhdHVzLmxhc3QgIT0gVV9CT1VOREFSWV9ORVVUUkFMCisgICAg
ICAgICYmIG1fc3RhdHVzLmxhc3QgIT0gVV9SSUdIVF9UT19MRUZUX0VNQkVERElORworICAgICAg
ICAmJiBtX3N0YXR1cy5sYXN0ICE9IFVfTEVGVF9UT19SSUdIVF9FTUJFRERJTkcKKyAgICAgICAg
JiYgbV9zdGF0dXMubGFzdCAhPSBVX1JJR0hUX1RPX0xFRlRfT1ZFUlJJREUgCisgICAgICAgICYm
IG1fc3RhdHVzLmxhc3QgIT0gVV9MRUZUX1RPX1JJR0hUX09WRVJSSURFCisgICAgICAgICYmIG1f
c3RhdHVzLmxhc3QgIT0gVV9QT1BfRElSRUNUSU9OQUxfRk9STUFUKTsKKyAgICBpZiAobV9kaXJl
Y3Rpb24gPT0gVV9PVEhFUl9ORVVUUkFMKQorICAgICAgICBtX2RpcmVjdGlvbiA9IG1fc3RhdHVz
Lmxhc3RTdHJvbmcgPT0gVV9MRUZUX1RPX1JJR0hUID8gVV9MRUZUX1RPX1JJR0hUIDogVV9SSUdI
VF9UT19MRUZUOwogfQogCiB0ZW1wbGF0ZSA8Y2xhc3MgSXRlcmF0b3IsIGNsYXNzIFJ1bj4KLXZv
aWQgQmlkaVJlc29sdmVyPEl0ZXJhdG9yLCBSdW4+Ojpsb3dlckV4cGxpY2l0RW1iZWRkaW5nTGV2
ZWwoV1RGOjpVbmljb2RlOjpEaXJlY3Rpb24gZnJvbSkKK3ZvaWQgQmlkaVJlc29sdmVyPEl0ZXJh
dG9yLCBSdW4+Ojpsb3dlckV4cGxpY2l0RW1iZWRkaW5nTGV2ZWwoVUNoYXJEaXJlY3Rpb24gZnJv
bSkKIHsKLSAgICB1c2luZyBuYW1lc3BhY2UgV1RGOjpVbmljb2RlOwotCiAgICAgaWYgKCFtX2Vt
cHR5UnVuICYmIG1fZW9yICE9IG1fbGFzdCkgewogICAgICAgICBjaGVja0RpcmVjdGlvbkluTG93
ZXJSYWlzZUVtYmVkZGluZ0xldmVsKCk7CiAgICAgICAgIC8vIGJpZGkuc29yIC4uLiBiaWRpLmVv
ciAuLi4gYmlkaS5sYXN0IGVvcjsgbmVlZCB0byBhcHBlbmQgdGhlIGJpZGkuc29yLWJpZGkuZW9y
IHJ1biBvciBleHRlbmQgaXQgdGhyb3VnaCBiaWRpLmxhc3QKLSAgICAgICAgaWYgKGZyb20gPT0g
TGVmdFRvUmlnaHQpIHsKKyAgICAgICAgaWYgKGZyb20gPT0gVV9MRUZUX1RPX1JJR0hUKSB7CiAg
ICAgICAgICAgICAvLyBiaWRpLnNvciAuLi4gYmlkaS5lb3IgLi4uIGJpZGkubGFzdCBMCi0gICAg
ICAgICAgICBpZiAobV9zdGF0dXMuZW9yID09IEV1cm9wZWFuTnVtYmVyKSB7Ci0gICAgICAgICAg
ICAgICAgaWYgKG1fc3RhdHVzLmxhc3RTdHJvbmcgIT0gTGVmdFRvUmlnaHQpIHsKLSAgICAgICAg
ICAgICAgICAgICAgbV9kaXJlY3Rpb24gPSBFdXJvcGVhbk51bWJlcjsKKyAgICAgICAgICAgIGlm
IChtX3N0YXR1cy5lb3IgPT0gVV9FVVJPUEVBTl9OVU1CRVIpIHsKKyAgICAgICAgICAgICAgICBp
ZiAobV9zdGF0dXMubGFzdFN0cm9uZyAhPSBVX0xFRlRfVE9fUklHSFQpIHsKKyAgICAgICAgICAg
ICAgICAgICAgbV9kaXJlY3Rpb24gPSBVX0VVUk9QRUFOX05VTUJFUjsKICAgICAgICAgICAgICAg
ICAgICAgYXBwZW5kUnVuKCk7CiAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfSBlbHNl
IGlmIChtX3N0YXR1cy5lb3IgPT0gQXJhYmljTnVtYmVyKSB7Ci0gICAgICAgICAgICAgICAgbV9k
aXJlY3Rpb24gPSBBcmFiaWNOdW1iZXI7CisgICAgICAgICAgICB9IGVsc2UgaWYgKG1fc3RhdHVz
LmVvciA9PSBVX0FSQUJJQ19OVU1CRVIpIHsKKyAgICAgICAgICAgICAgICBtX2RpcmVjdGlvbiA9
IFVfQVJBQklDX05VTUJFUjsKICAgICAgICAgICAgICAgICBhcHBlbmRSdW4oKTsKLSAgICAgICAg
ICAgIH0gZWxzZSBpZiAobV9zdGF0dXMubGFzdFN0cm9uZyAhPSBMZWZ0VG9SaWdodCkgeworICAg
ICAgICAgICAgfSBlbHNlIGlmIChtX3N0YXR1cy5sYXN0U3Ryb25nICE9IFVfTEVGVF9UT19SSUdI
VCkgewogICAgICAgICAgICAgICAgIGFwcGVuZFJ1bigpOwotICAgICAgICAgICAgICAgIG1fZGly
ZWN0aW9uID0gTGVmdFRvUmlnaHQ7CisgICAgICAgICAgICAgICAgbV9kaXJlY3Rpb24gPSBVX0xF
RlRfVE9fUklHSFQ7CiAgICAgICAgICAgICB9Ci0gICAgICAgIH0gZWxzZSBpZiAobV9zdGF0dXMu
ZW9yID09IEV1cm9wZWFuTnVtYmVyIHx8IG1fc3RhdHVzLmVvciA9PSBBcmFiaWNOdW1iZXIgfHwg
bV9zdGF0dXMubGFzdFN0cm9uZyA9PSBMZWZ0VG9SaWdodCkgeworICAgICAgICB9IGVsc2UgaWYg
KG1fc3RhdHVzLmVvciA9PSBVX0VVUk9QRUFOX05VTUJFUiB8fCBtX3N0YXR1cy5lb3IgPT0gVV9B
UkFCSUNfTlVNQkVSIHx8IG1fc3RhdHVzLmxhc3RTdHJvbmcgPT0gVV9MRUZUX1RPX1JJR0hUKSB7
CiAgICAgICAgICAgICBhcHBlbmRSdW4oKTsKLSAgICAgICAgICAgIG1fZGlyZWN0aW9uID0gUmln
aHRUb0xlZnQ7CisgICAgICAgICAgICBtX2RpcmVjdGlvbiA9IFVfUklHSFRfVE9fTEVGVDsKICAg
ICAgICAgfQogICAgICAgICBtX2VvciA9IG1fbGFzdDsKICAgICB9CkBAIC0zNjYsMzIgKzM2MSwz
MCBAQCB2b2lkIEJpZGlSZXNvbHZlcjxJdGVyYXRvciwgUnVuPjo6bG93ZXJFeHBsaWNpdEVtYmVk
ZGluZ0xldmVsKFdURjo6VW5pY29kZTo6RGlyZQogfQogCiB0ZW1wbGF0ZSA8Y2xhc3MgSXRlcmF0
b3IsIGNsYXNzIFJ1bj4KLXZvaWQgQmlkaVJlc29sdmVyPEl0ZXJhdG9yLCBSdW4+OjpyYWlzZUV4
cGxpY2l0RW1iZWRkaW5nTGV2ZWwoV1RGOjpVbmljb2RlOjpEaXJlY3Rpb24gZnJvbSwgV1RGOjpV
bmljb2RlOjpEaXJlY3Rpb24gdG8pCit2b2lkIEJpZGlSZXNvbHZlcjxJdGVyYXRvciwgUnVuPjo6
cmFpc2VFeHBsaWNpdEVtYmVkZGluZ0xldmVsKFVDaGFyRGlyZWN0aW9uIGZyb20sIFVDaGFyRGly
ZWN0aW9uIHRvKQogewotICAgIHVzaW5nIG5hbWVzcGFjZSBXVEY6OlVuaWNvZGU7Ci0KICAgICBp
ZiAoIW1fZW1wdHlSdW4gJiYgbV9lb3IgIT0gbV9sYXN0KSB7CiAgICAgICAgIGNoZWNrRGlyZWN0
aW9uSW5Mb3dlclJhaXNlRW1iZWRkaW5nTGV2ZWwoKTsKICAgICAgICAgLy8gYmlkaS5zb3IgLi4u
IGJpZGkuZW9yIC4uLiBiaWRpLmxhc3QgZW9yOyBuZWVkIHRvIGFwcGVuZCB0aGUgYmlkaS5zb3It
YmlkaS5lb3IgcnVuIG9yIGV4dGVuZCBpdCB0aHJvdWdoIGJpZGkubGFzdAotICAgICAgICBpZiAo
dG8gPT0gTGVmdFRvUmlnaHQpIHsKKyAgICAgICAgaWYgKHRvID09IFVfTEVGVF9UT19SSUdIVCkg
ewogICAgICAgICAgICAgLy8gYmlkaS5zb3IgLi4uIGJpZGkuZW9yIC4uLiBiaWRpLmxhc3QgTAot
ICAgICAgICAgICAgaWYgKG1fc3RhdHVzLmVvciA9PSBFdXJvcGVhbk51bWJlcikgewotICAgICAg
ICAgICAgICAgIGlmIChtX3N0YXR1cy5sYXN0U3Ryb25nICE9IExlZnRUb1JpZ2h0KSB7Ci0gICAg
ICAgICAgICAgICAgICAgIG1fZGlyZWN0aW9uID0gRXVyb3BlYW5OdW1iZXI7CisgICAgICAgICAg
ICBpZiAobV9zdGF0dXMuZW9yID09IFVfRVVST1BFQU5fTlVNQkVSKSB7CisgICAgICAgICAgICAg
ICAgaWYgKG1fc3RhdHVzLmxhc3RTdHJvbmcgIT0gVV9MRUZUX1RPX1JJR0hUKSB7CisgICAgICAg
ICAgICAgICAgICAgIG1fZGlyZWN0aW9uID0gVV9FVVJPUEVBTl9OVU1CRVI7CiAgICAgICAgICAg
ICAgICAgICAgIGFwcGVuZFJ1bigpOwogICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0g
ZWxzZSBpZiAobV9zdGF0dXMuZW9yID09IEFyYWJpY051bWJlcikgewotICAgICAgICAgICAgICAg
IG1fZGlyZWN0aW9uID0gQXJhYmljTnVtYmVyOworICAgICAgICAgICAgfSBlbHNlIGlmIChtX3N0
YXR1cy5lb3IgPT0gVV9BUkFCSUNfTlVNQkVSKSB7CisgICAgICAgICAgICAgICAgbV9kaXJlY3Rp
b24gPSBVX0FSQUJJQ19OVU1CRVI7CiAgICAgICAgICAgICAgICAgYXBwZW5kUnVuKCk7Ci0gICAg
ICAgICAgICB9IGVsc2UgaWYgKG1fc3RhdHVzLmxhc3RTdHJvbmcgIT0gTGVmdFRvUmlnaHQgJiYg
ZnJvbSA9PSBMZWZ0VG9SaWdodCkgeworICAgICAgICAgICAgfSBlbHNlIGlmIChtX3N0YXR1cy5s
YXN0U3Ryb25nICE9IFVfTEVGVF9UT19SSUdIVCAmJiBmcm9tID09IFVfTEVGVF9UT19SSUdIVCkg
ewogICAgICAgICAgICAgICAgIGFwcGVuZFJ1bigpOwotICAgICAgICAgICAgICAgIG1fZGlyZWN0
aW9uID0gTGVmdFRvUmlnaHQ7CisgICAgICAgICAgICAgICAgbV9kaXJlY3Rpb24gPSBVX0xFRlRf
VE9fUklHSFQ7CiAgICAgICAgICAgICB9Ci0gICAgICAgIH0gZWxzZSBpZiAobV9zdGF0dXMuZW9y
ID09IEFyYWJpY051bWJlcgotICAgICAgICAgICAgfHwgKG1fc3RhdHVzLmVvciA9PSBFdXJvcGVh
bk51bWJlciAmJiAobV9zdGF0dXMubGFzdFN0cm9uZyAhPSBMZWZ0VG9SaWdodCB8fCBmcm9tID09
IFJpZ2h0VG9MZWZ0KSkKLSAgICAgICAgICAgIHx8IChtX3N0YXR1cy5lb3IgIT0gRXVyb3BlYW5O
dW1iZXIgJiYgbV9zdGF0dXMubGFzdFN0cm9uZyA9PSBMZWZ0VG9SaWdodCAmJiBmcm9tID09IFJp
Z2h0VG9MZWZ0KSkgeworICAgICAgICB9IGVsc2UgaWYgKG1fc3RhdHVzLmVvciA9PSBVX0FSQUJJ
Q19OVU1CRVIKKyAgICAgICAgICAgIHx8IChtX3N0YXR1cy5lb3IgPT0gVV9FVVJPUEVBTl9OVU1C
RVIgJiYgKG1fc3RhdHVzLmxhc3RTdHJvbmcgIT0gVV9MRUZUX1RPX1JJR0hUIHx8IGZyb20gPT0g
VV9SSUdIVF9UT19MRUZUKSkKKyAgICAgICAgICAgIHx8IChtX3N0YXR1cy5lb3IgIT0gVV9FVVJP
UEVBTl9OVU1CRVIgJiYgbV9zdGF0dXMubGFzdFN0cm9uZyA9PSBVX0xFRlRfVE9fUklHSFQgJiYg
ZnJvbSA9PSBVX1JJR0hUX1RPX0xFRlQpKSB7CiAgICAgICAgICAgICBhcHBlbmRSdW4oKTsKLSAg
ICAgICAgICAgIG1fZGlyZWN0aW9uID0gUmlnaHRUb0xlZnQ7CisgICAgICAgICAgICBtX2RpcmVj
dGlvbiA9IFVfUklHSFRfVE9fTEVGVDsKICAgICAgICAgfQogICAgICAgICBtX2VvciA9IG1fbGFz
dDsKICAgICB9CkBAIC00MTIsMjEgKzQwNSwxOSBAQCBib29sIEJpZGlSZXNvbHZlcjxJdGVyYXRv
ciwgUnVuPjo6Y29tbWl0RXhwbGljaXRFbWJlZGRpbmcoKQogICAgIC8vIFdlIHNob3VsZCBuZXZl
ciBhY2NydWUgZW1iZWRkaW5nIGxldmVscyB3aGlsZSBza2lwcGluZyBvdmVyIGlzb2xhdGVkIGNv
bnRlbnQuCiAgICAgQVNTRVJUKCFpbklzb2xhdGUoKSB8fCBtX2N1cnJlbnRFeHBsaWNpdEVtYmVk
ZGluZ1NlcXVlbmNlLmlzRW1wdHkoKSk7CiAKLSAgICB1c2luZyBuYW1lc3BhY2UgV1RGOjpVbmlj
b2RlOwotCiAgICAgdW5zaWduZWQgY2hhciBmcm9tTGV2ZWwgPSBjb250ZXh0KCktPmxldmVsKCk7
CiAgICAgUmVmUHRyPEJpZGlDb250ZXh0PiB0b0NvbnRleHQgPSBjb250ZXh0KCk7CiAKICAgICBm
b3IgKHNpemVfdCBpID0gMDsgaSA8IG1fY3VycmVudEV4cGxpY2l0RW1iZWRkaW5nU2VxdWVuY2Uu
c2l6ZSgpOyArK2kpIHsKICAgICAgICAgQmlkaUVtYmVkZGluZyBlbWJlZGRpbmcgPSBtX2N1cnJl
bnRFeHBsaWNpdEVtYmVkZGluZ1NlcXVlbmNlW2ldOwotICAgICAgICBpZiAoZW1iZWRkaW5nLmRp
cmVjdGlvbigpID09IFBvcERpcmVjdGlvbmFsRm9ybWF0KSB7CisgICAgICAgIGlmIChlbWJlZGRp
bmcuZGlyZWN0aW9uKCkgPT0gVV9QT1BfRElSRUNUSU9OQUxfRk9STUFUKSB7CiAgICAgICAgICAg
ICBpZiAoQmlkaUNvbnRleHQqIHBhcmVudENvbnRleHQgPSB0b0NvbnRleHQtPnBhcmVudCgpKQog
ICAgICAgICAgICAgICAgIHRvQ29udGV4dCA9IHBhcmVudENvbnRleHQ7CiAgICAgICAgIH0gZWxz
ZSB7Ci0gICAgICAgICAgICBEaXJlY3Rpb24gZGlyZWN0aW9uID0gKGVtYmVkZGluZy5kaXJlY3Rp
b24oKSA9PSBSaWdodFRvTGVmdEVtYmVkZGluZyB8fCBlbWJlZGRpbmcuZGlyZWN0aW9uKCkgPT0g
UmlnaHRUb0xlZnRPdmVycmlkZSkgPyBSaWdodFRvTGVmdCA6IExlZnRUb1JpZ2h0OwotICAgICAg
ICAgICAgYm9vbCBvdmVycmlkZSA9IGVtYmVkZGluZy5kaXJlY3Rpb24oKSA9PSBMZWZ0VG9SaWdo
dE92ZXJyaWRlIHx8IGVtYmVkZGluZy5kaXJlY3Rpb24oKSA9PSBSaWdodFRvTGVmdE92ZXJyaWRl
OworICAgICAgICAgICAgVUNoYXJEaXJlY3Rpb24gZGlyZWN0aW9uID0gKGVtYmVkZGluZy5kaXJl
Y3Rpb24oKSA9PSBVX1JJR0hUX1RPX0xFRlRfRU1CRURESU5HIHx8IGVtYmVkZGluZy5kaXJlY3Rp
b24oKSA9PSBVX1JJR0hUX1RPX0xFRlRfT1ZFUlJJREUpID8gVV9SSUdIVF9UT19MRUZUIDogVV9M
RUZUX1RPX1JJR0hUOworICAgICAgICAgICAgYm9vbCBvdmVycmlkZSA9IGVtYmVkZGluZy5kaXJl
Y3Rpb24oKSA9PSBVX0xFRlRfVE9fUklHSFRfT1ZFUlJJREUgfHwgZW1iZWRkaW5nLmRpcmVjdGlv
bigpID09IFVfUklHSFRfVE9fTEVGVF9PVkVSUklERTsKICAgICAgICAgICAgIHVuc2lnbmVkIGNo
YXIgbGV2ZWwgPSB0b0NvbnRleHQtPmxldmVsKCk7Ci0gICAgICAgICAgICBpZiAoZGlyZWN0aW9u
ID09IFJpZ2h0VG9MZWZ0KQorICAgICAgICAgICAgaWYgKGRpcmVjdGlvbiA9PSBVX1JJR0hUX1RP
X0xFRlQpCiAgICAgICAgICAgICAgICAgbGV2ZWwgPSBuZXh0R3JlYXRlck9kZExldmVsKGxldmVs
KTsKICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICBsZXZlbCA9IG5leHRHcmVhdGVy
RXZlbkxldmVsKGxldmVsKTsKQEAgLTQzOCw5ICs0MjksOSBAQCBib29sIEJpZGlSZXNvbHZlcjxJ
dGVyYXRvciwgUnVuPjo6Y29tbWl0RXhwbGljaXRFbWJlZGRpbmcoKQogICAgIHVuc2lnbmVkIGNo
YXIgdG9MZXZlbCA9IHRvQ29udGV4dC0+bGV2ZWwoKTsKIAogICAgIGlmICh0b0xldmVsID4gZnJv
bUxldmVsKQotICAgICAgICByYWlzZUV4cGxpY2l0RW1iZWRkaW5nTGV2ZWwoZnJvbUxldmVsICUg
MiA/IFJpZ2h0VG9MZWZ0IDogTGVmdFRvUmlnaHQsIHRvTGV2ZWwgJSAyID8gUmlnaHRUb0xlZnQg
OiBMZWZ0VG9SaWdodCk7CisgICAgICAgIHJhaXNlRXhwbGljaXRFbWJlZGRpbmdMZXZlbChmcm9t
TGV2ZWwgJSAyID8gVV9SSUdIVF9UT19MRUZUIDogVV9MRUZUX1RPX1JJR0hULCB0b0xldmVsICUg
MiA/IFVfUklHSFRfVE9fTEVGVCA6IFVfTEVGVF9UT19SSUdIVCk7CiAgICAgZWxzZSBpZiAodG9M
ZXZlbCA8IGZyb21MZXZlbCkKLSAgICAgICAgbG93ZXJFeHBsaWNpdEVtYmVkZGluZ0xldmVsKGZy
b21MZXZlbCAlIDIgPyBSaWdodFRvTGVmdCA6IExlZnRUb1JpZ2h0KTsKKyAgICAgICAgbG93ZXJF
eHBsaWNpdEVtYmVkZGluZ0xldmVsKGZyb21MZXZlbCAlIDIgPyBVX1JJR0hUX1RPX0xFRlQgOiBV
X0xFRlRfVE9fUklHSFQpOwogCiAgICAgc2V0Q29udGV4dCh0b0NvbnRleHQpOwogCkBAIC00NTAs
NDEgKzQ0MSw0MCBAQCBib29sIEJpZGlSZXNvbHZlcjxJdGVyYXRvciwgUnVuPjo6Y29tbWl0RXhw
bGljaXRFbWJlZGRpbmcoKQogfQogCiB0ZW1wbGF0ZSA8Y2xhc3MgSXRlcmF0b3IsIGNsYXNzIFJ1
bj4KLWlubGluZSB2b2lkIEJpZGlSZXNvbHZlcjxJdGVyYXRvciwgUnVuPjo6dXBkYXRlU3RhdHVz
TGFzdEZyb21DdXJyZW50RGlyZWN0aW9uKFdURjo6VW5pY29kZTo6RGlyZWN0aW9uIGRpckN1cnJl
bnQpCitpbmxpbmUgdm9pZCBCaWRpUmVzb2x2ZXI8SXRlcmF0b3IsIFJ1bj46OnVwZGF0ZVN0YXR1
c0xhc3RGcm9tQ3VycmVudERpcmVjdGlvbihVQ2hhckRpcmVjdGlvbiBkaXJDdXJyZW50KQogewot
ICAgIHVzaW5nIG5hbWVzcGFjZSBXVEY6OlVuaWNvZGU7CiAgICAgc3dpdGNoIChkaXJDdXJyZW50
KSB7Ci0gICAgY2FzZSBFdXJvcGVhbk51bWJlclRlcm1pbmF0b3I6Ci0gICAgICAgIGlmIChtX3N0
YXR1cy5sYXN0ICE9IEV1cm9wZWFuTnVtYmVyKQotICAgICAgICAgICAgbV9zdGF0dXMubGFzdCA9
IEV1cm9wZWFuTnVtYmVyVGVybWluYXRvcjsKKyAgICBjYXNlIFVfRVVST1BFQU5fTlVNQkVSX1RF
Uk1JTkFUT1I6CisgICAgICAgIGlmIChtX3N0YXR1cy5sYXN0ICE9IFVfRVVST1BFQU5fTlVNQkVS
KQorICAgICAgICAgICAgbV9zdGF0dXMubGFzdCA9IFVfRVVST1BFQU5fTlVNQkVSX1RFUk1JTkFU
T1I7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgRXVyb3BlYW5OdW1iZXJTZXBhcmF0b3I6Ci0g
ICAgY2FzZSBDb21tb25OdW1iZXJTZXBhcmF0b3I6Ci0gICAgY2FzZSBTZWdtZW50U2VwYXJhdG9y
OgotICAgIGNhc2UgV2hpdGVTcGFjZU5ldXRyYWw6Ci0gICAgY2FzZSBPdGhlck5ldXRyYWw6Cisg
ICAgY2FzZSBVX0VVUk9QRUFOX05VTUJFUl9TRVBBUkFUT1I6CisgICAgY2FzZSBVX0NPTU1PTl9O
VU1CRVJfU0VQQVJBVE9SOgorICAgIGNhc2UgVV9TRUdNRU5UX1NFUEFSQVRPUjoKKyAgICBjYXNl
IFVfV0hJVEVfU1BBQ0VfTkVVVFJBTDoKKyAgICBjYXNlIFVfT1RIRVJfTkVVVFJBTDoKICAgICAg
ICAgc3dpdGNoIChtX3N0YXR1cy5sYXN0KSB7Ci0gICAgICAgIGNhc2UgTGVmdFRvUmlnaHQ6Ci0g
ICAgICAgIGNhc2UgUmlnaHRUb0xlZnQ6Ci0gICAgICAgIGNhc2UgUmlnaHRUb0xlZnRBcmFiaWM6
Ci0gICAgICAgIGNhc2UgRXVyb3BlYW5OdW1iZXI6Ci0gICAgICAgIGNhc2UgQXJhYmljTnVtYmVy
OgorICAgICAgICBjYXNlIFVfTEVGVF9UT19SSUdIVDoKKyAgICAgICAgY2FzZSBVX1JJR0hUX1RP
X0xFRlQ6CisgICAgICAgIGNhc2UgVV9SSUdIVF9UT19MRUZUX0FSQUJJQzoKKyAgICAgICAgY2Fz
ZSBVX0VVUk9QRUFOX05VTUJFUjoKKyAgICAgICAgY2FzZSBVX0FSQUJJQ19OVU1CRVI6CiAgICAg
ICAgICAgICBtX3N0YXR1cy5sYXN0ID0gZGlyQ3VycmVudDsKICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgbV9zdGF0dXMubGFzdCA9IE90aGVyTmV1dHJh
bDsKKyAgICAgICAgICAgIG1fc3RhdHVzLmxhc3QgPSBVX09USEVSX05FVVRSQUw7CiAgICAgICAg
IH0KICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBOb25TcGFjaW5nTWFyazoKLSAgICBjYXNlIEJv
dW5kYXJ5TmV1dHJhbDoKLSAgICBjYXNlIFJpZ2h0VG9MZWZ0RW1iZWRkaW5nOgotICAgIGNhc2Ug
TGVmdFRvUmlnaHRFbWJlZGRpbmc6Ci0gICAgY2FzZSBSaWdodFRvTGVmdE92ZXJyaWRlOgotICAg
IGNhc2UgTGVmdFRvUmlnaHRPdmVycmlkZToKLSAgICBjYXNlIFBvcERpcmVjdGlvbmFsRm9ybWF0
OgorICAgIGNhc2UgVV9ESVJfTk9OX1NQQUNJTkdfTUFSSzoKKyAgICBjYXNlIFVfQk9VTkRBUllf
TkVVVFJBTDoKKyAgICBjYXNlIFVfUklHSFRfVE9fTEVGVF9FTUJFRERJTkc6CisgICAgY2FzZSBV
X0xFRlRfVE9fUklHSFRfRU1CRURESU5HOgorICAgIGNhc2UgVV9SSUdIVF9UT19MRUZUX09WRVJS
SURFOgorICAgIGNhc2UgVV9MRUZUX1RPX1JJR0hUX09WRVJSSURFOgorICAgIGNhc2UgVV9QT1Bf
RElSRUNUSU9OQUxfRk9STUFUOgogICAgICAgICAvLyBpZ25vcmUgdGhlc2UKICAgICAgICAgYnJl
YWs7Ci0gICAgY2FzZSBFdXJvcGVhbk51bWJlcjoKKyAgICBjYXNlIFVfRVVST1BFQU5fTlVNQkVS
OgogICAgICAgICAvLyBmYWxsIHRocm91Z2gKICAgICBkZWZhdWx0OgogICAgICAgICBtX3N0YXR1
cy5sYXN0ID0gZGlyQ3VycmVudDsKQEAgLTUzMSw5ICs1MjEsNyBAQCBpbmxpbmUgdm9pZCBCaWRp
UmVzb2x2ZXI8SXRlcmF0b3IsIFJ1bj46OnJlb3JkZXJSdW5zRnJvbUxldmVscygpCiB0ZW1wbGF0
ZSA8Y2xhc3MgSXRlcmF0b3IsIGNsYXNzIFJ1bj4KIHZvaWQgQmlkaVJlc29sdmVyPEl0ZXJhdG9y
LCBSdW4+OjpjcmVhdGVCaWRpUnVuc0ZvckxpbmUoY29uc3QgSXRlcmF0b3ImIGVuZCwgVmlzdWFs
RGlyZWN0aW9uT3ZlcnJpZGUgb3ZlcnJpZGUsIGJvb2wgaGFyZExpbmVCcmVhaykKIHsKLSAgICB1
c2luZyBuYW1lc3BhY2UgV1RGOjpVbmljb2RlOwotCi0gICAgQVNTRVJUKG1fZGlyZWN0aW9uID09
IE90aGVyTmV1dHJhbCk7CisgICAgQVNTRVJUKG1fZGlyZWN0aW9uID09IFVfT1RIRVJfTkVVVFJB
TCk7CiAKICAgICBpZiAob3ZlcnJpZGUgIT0gTm9WaXN1YWxPdmVycmlkZSkgewogICAgICAgICBt
X2VtcHR5UnVuID0gZmFsc2U7CkBAIC01NDMsNyArNTMxLDcgQEAgdm9pZCBCaWRpUmVzb2x2ZXI8
SXRlcmF0b3IsIFJ1bj46OmNyZWF0ZUJpZGlSdW5zRm9yTGluZShjb25zdCBJdGVyYXRvciYgZW5k
LCBWaXMKICAgICAgICAgICAgIG1fZW9yID0gbV9jdXJyZW50OwogICAgICAgICAgICAgaW5jcmVt
ZW50KCk7CiAgICAgICAgIH0KLSAgICAgICAgbV9kaXJlY3Rpb24gPSBvdmVycmlkZSA9PSBWaXN1
YWxMZWZ0VG9SaWdodE92ZXJyaWRlID8gTGVmdFRvUmlnaHQgOiBSaWdodFRvTGVmdDsKKyAgICAg
ICAgbV9kaXJlY3Rpb24gPSBvdmVycmlkZSA9PSBWaXN1YWxMZWZ0VG9SaWdodE92ZXJyaWRlID8g
VV9MRUZUX1RPX1JJR0hUIDogVV9SSUdIVF9UT19MRUZUOwogICAgICAgICBhcHBlbmRSdW4oKTsK
ICAgICAgICAgbV9ydW5zLnNldExvZ2ljYWxseUxhc3RSdW4obV9ydW5zLmxhc3RSdW4oKSk7CiAg
ICAgICAgIGlmIChvdmVycmlkZSA9PSBWaXN1YWxSaWdodFRvTGVmdE92ZXJyaWRlKQpAQCAtNTYw
LDcgKzU0OCw3IEBAIHZvaWQgQmlkaVJlc29sdmVyPEl0ZXJhdG9yLCBSdW4+OjpjcmVhdGVCaWRp
UnVuc0ZvckxpbmUoY29uc3QgSXRlcmF0b3ImIGVuZCwgVmlzCiAgICAgQmlkaVJlc29sdmVyPEl0
ZXJhdG9yLCBSdW4+IHN0YXRlQXRFbmQ7CiAKICAgICB3aGlsZSAodHJ1ZSkgewotICAgICAgICBE
aXJlY3Rpb24gZGlyQ3VycmVudDsKKyAgICAgICAgVUNoYXJEaXJlY3Rpb24gZGlyQ3VycmVudDsK
ICAgICAgICAgaWYgKHBhc3RFbmQgJiYgKGhhcmRMaW5lQnJlYWsgfHwgbV9jdXJyZW50LmF0RW5k
KCkpKSB7CiAgICAgICAgICAgICBCaWRpQ29udGV4dCogYyA9IGNvbnRleHQoKTsKICAgICAgICAg
ICAgIGlmIChoYXJkTGluZUJyZWFrKSB7CkBAIC01ODIsODEgKzU3MCw4MSBAQCB2b2lkIEJpZGlS
ZXNvbHZlcjxJdGVyYXRvciwgUnVuPjo6Y3JlYXRlQmlkaVJ1bnNGb3JMaW5lKGNvbnN0IEl0ZXJh
dG9yJiBlbmQsIFZpcwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgZGlyQ3VycmVudCA9
IG1fY3VycmVudC5kaXJlY3Rpb24oKTsKICAgICAgICAgICAgIGlmIChjb250ZXh0KCktPm92ZXJy
aWRlKCkKLSAgICAgICAgICAgICAgICAgICAgJiYgZGlyQ3VycmVudCAhPSBSaWdodFRvTGVmdEVt
YmVkZGluZwotICAgICAgICAgICAgICAgICAgICAmJiBkaXJDdXJyZW50ICE9IExlZnRUb1JpZ2h0
RW1iZWRkaW5nCi0gICAgICAgICAgICAgICAgICAgICYmIGRpckN1cnJlbnQgIT0gUmlnaHRUb0xl
ZnRPdmVycmlkZQotICAgICAgICAgICAgICAgICAgICAmJiBkaXJDdXJyZW50ICE9IExlZnRUb1Jp
Z2h0T3ZlcnJpZGUKLSAgICAgICAgICAgICAgICAgICAgJiYgZGlyQ3VycmVudCAhPSBQb3BEaXJl
Y3Rpb25hbEZvcm1hdCkKKyAgICAgICAgICAgICAgICAgICAgJiYgZGlyQ3VycmVudCAhPSBVX1JJ
R0hUX1RPX0xFRlRfRU1CRURESU5HCisgICAgICAgICAgICAgICAgICAgICYmIGRpckN1cnJlbnQg
IT0gVV9MRUZUX1RPX1JJR0hUX0VNQkVERElORworICAgICAgICAgICAgICAgICAgICAmJiBkaXJD
dXJyZW50ICE9IFVfUklHSFRfVE9fTEVGVF9PVkVSUklERQorICAgICAgICAgICAgICAgICAgICAm
JiBkaXJDdXJyZW50ICE9IFVfTEVGVF9UT19SSUdIVF9PVkVSUklERQorICAgICAgICAgICAgICAg
ICAgICAmJiBkaXJDdXJyZW50ICE9IFVfUE9QX0RJUkVDVElPTkFMX0ZPUk1BVCkKICAgICAgICAg
ICAgICAgICBkaXJDdXJyZW50ID0gY29udGV4dCgpLT5kaXIoKTsKLSAgICAgICAgICAgIGVsc2Ug
aWYgKGRpckN1cnJlbnQgPT0gTm9uU3BhY2luZ01hcmspCisgICAgICAgICAgICBlbHNlIGlmIChk
aXJDdXJyZW50ID09IFVfRElSX05PTl9TUEFDSU5HX01BUkspCiAgICAgICAgICAgICAgICAgZGly
Q3VycmVudCA9IG1fc3RhdHVzLmxhc3Q7CiAgICAgICAgIH0KIAogICAgICAgICAvLyBXZSBpZ25v
cmUgYWxsIGNoYXJhY3RlciBkaXJlY3Rpb25hbGl0eSB3aGlsZSBpbiB1bmljb2RlLWJpZGk6IGlz
b2xhdGUgc3BhbnMuCiAgICAgICAgIC8vIFdlJ2xsIGhhbmRsZSBvcmRlcmluZyB0aGUgaXNvbGF0
ZWQgY2hhcmFjdGVycyBpbiBhIHNlY29uZCBwYXNzLgogICAgICAgICBpZiAoaW5Jc29sYXRlKCkp
Ci0gICAgICAgICAgICBkaXJDdXJyZW50ID0gT3RoZXJOZXV0cmFsOworICAgICAgICAgICAgZGly
Q3VycmVudCA9IFVfT1RIRVJfTkVVVFJBTDsKIAotICAgICAgICBBU1NFUlQobV9zdGF0dXMuZW9y
ICE9IE90aGVyTmV1dHJhbCB8fCBtX2Vvci5hdEVuZCgpKTsKKyAgICAgICAgQVNTRVJUKG1fc3Rh
dHVzLmVvciAhPSBVX09USEVSX05FVVRSQUwgfHwgbV9lb3IuYXRFbmQoKSk7CiAgICAgICAgIHN3
aXRjaCAoZGlyQ3VycmVudCkgewogCiAgICAgICAgIC8vIGVtYmVkZGluZyBhbmQgb3ZlcnJpZGVz
IChYMS1YOSBpbiB0aGUgQmlkaSBzcGVjcykKLSAgICAgICAgY2FzZSBSaWdodFRvTGVmdEVtYmVk
ZGluZzoKLSAgICAgICAgY2FzZSBMZWZ0VG9SaWdodEVtYmVkZGluZzoKLSAgICAgICAgY2FzZSBS
aWdodFRvTGVmdE92ZXJyaWRlOgotICAgICAgICBjYXNlIExlZnRUb1JpZ2h0T3ZlcnJpZGU6Ci0g
ICAgICAgIGNhc2UgUG9wRGlyZWN0aW9uYWxGb3JtYXQ6CisgICAgICAgIGNhc2UgVV9SSUdIVF9U
T19MRUZUX0VNQkVERElORzoKKyAgICAgICAgY2FzZSBVX0xFRlRfVE9fUklHSFRfRU1CRURESU5H
OgorICAgICAgICBjYXNlIFVfUklHSFRfVE9fTEVGVF9PVkVSUklERToKKyAgICAgICAgY2FzZSBV
X0xFRlRfVE9fUklHSFRfT1ZFUlJJREU6CisgICAgICAgIGNhc2UgVV9QT1BfRElSRUNUSU9OQUxf
Rk9STUFUOgogICAgICAgICAgICAgZW1iZWQoZGlyQ3VycmVudCwgRnJvbVVuaWNvZGUpOwogICAg
ICAgICAgICAgY29tbWl0RXhwbGljaXRFbWJlZGRpbmcoKTsKICAgICAgICAgICAgIGJyZWFrOwog
CiAgICAgICAgIC8vIHN0cm9uZyB0eXBlcwotICAgICAgICBjYXNlIExlZnRUb1JpZ2h0OgorICAg
ICAgICBjYXNlIFVfTEVGVF9UT19SSUdIVDoKICAgICAgICAgICAgIHN3aXRjaChtX3N0YXR1cy5s
YXN0KSB7Ci0gICAgICAgICAgICAgICAgY2FzZSBSaWdodFRvTGVmdDoKLSAgICAgICAgICAgICAg
ICBjYXNlIFJpZ2h0VG9MZWZ0QXJhYmljOgotICAgICAgICAgICAgICAgIGNhc2UgRXVyb3BlYW5O
dW1iZXI6Ci0gICAgICAgICAgICAgICAgY2FzZSBBcmFiaWNOdW1iZXI6Ci0gICAgICAgICAgICAg
ICAgICAgIGlmIChtX3N0YXR1cy5sYXN0ICE9IEV1cm9wZWFuTnVtYmVyIHx8IG1fc3RhdHVzLmxh
c3RTdHJvbmcgIT0gTGVmdFRvUmlnaHQpCisgICAgICAgICAgICAgICAgY2FzZSBVX1JJR0hUX1RP
X0xFRlQ6CisgICAgICAgICAgICAgICAgY2FzZSBVX1JJR0hUX1RPX0xFRlRfQVJBQklDOgorICAg
ICAgICAgICAgICAgIGNhc2UgVV9FVVJPUEVBTl9OVU1CRVI6CisgICAgICAgICAgICAgICAgY2Fz
ZSBVX0FSQUJJQ19OVU1CRVI6CisgICAgICAgICAgICAgICAgICAgIGlmIChtX3N0YXR1cy5sYXN0
ICE9IFVfRVVST1BFQU5fTlVNQkVSIHx8IG1fc3RhdHVzLmxhc3RTdHJvbmcgIT0gVV9MRUZUX1RP
X1JJR0hUKQogICAgICAgICAgICAgICAgICAgICAgICAgYXBwZW5kUnVuKCk7CiAgICAgICAgICAg
ICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgIGNhc2UgTGVmdFRvUmlnaHQ6CisgICAg
ICAgICAgICAgICAgY2FzZSBVX0xFRlRfVE9fUklHSFQ6CiAgICAgICAgICAgICAgICAgICAgIGJy
ZWFrOwotICAgICAgICAgICAgICAgIGNhc2UgRXVyb3BlYW5OdW1iZXJTZXBhcmF0b3I6Ci0gICAg
ICAgICAgICAgICAgY2FzZSBFdXJvcGVhbk51bWJlclRlcm1pbmF0b3I6Ci0gICAgICAgICAgICAg
ICAgY2FzZSBDb21tb25OdW1iZXJTZXBhcmF0b3I6Ci0gICAgICAgICAgICAgICAgY2FzZSBCb3Vu
ZGFyeU5ldXRyYWw6Ci0gICAgICAgICAgICAgICAgY2FzZSBCbG9ja1NlcGFyYXRvcjoKLSAgICAg
ICAgICAgICAgICBjYXNlIFNlZ21lbnRTZXBhcmF0b3I6Ci0gICAgICAgICAgICAgICAgY2FzZSBX
aGl0ZVNwYWNlTmV1dHJhbDoKLSAgICAgICAgICAgICAgICBjYXNlIE90aGVyTmV1dHJhbDoKLSAg
ICAgICAgICAgICAgICAgICAgaWYgKG1fc3RhdHVzLmVvciA9PSBFdXJvcGVhbk51bWJlcikgewot
ICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG1fc3RhdHVzLmxhc3RTdHJvbmcgIT0gTGVmdFRv
UmlnaHQpIHsKKyAgICAgICAgICAgICAgICBjYXNlIFVfRVVST1BFQU5fTlVNQkVSX1NFUEFSQVRP
UjoKKyAgICAgICAgICAgICAgICBjYXNlIFVfRVVST1BFQU5fTlVNQkVSX1RFUk1JTkFUT1I6Cisg
ICAgICAgICAgICAgICAgY2FzZSBVX0NPTU1PTl9OVU1CRVJfU0VQQVJBVE9SOgorICAgICAgICAg
ICAgICAgIGNhc2UgVV9CT1VOREFSWV9ORVVUUkFMOgorICAgICAgICAgICAgICAgIGNhc2UgVV9C
TE9DS19TRVBBUkFUT1I6CisgICAgICAgICAgICAgICAgY2FzZSBVX1NFR01FTlRfU0VQQVJBVE9S
OgorICAgICAgICAgICAgICAgIGNhc2UgVV9XSElURV9TUEFDRV9ORVVUUkFMOgorICAgICAgICAg
ICAgICAgIGNhc2UgVV9PVEhFUl9ORVVUUkFMOgorICAgICAgICAgICAgICAgICAgICBpZiAobV9z
dGF0dXMuZW9yID09IFVfRVVST1BFQU5fTlVNQkVSKSB7CisgICAgICAgICAgICAgICAgICAgICAg
ICBpZiAobV9zdGF0dXMubGFzdFN0cm9uZyAhPSBVX0xFRlRfVE9fUklHSFQpIHsKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAvLyB0aGUgbnVtYmVycyBuZWVkIHRvIGJlIG9uIGEgaGlnaGVy
IGVtYmVkZGluZyBsZXZlbCwgc28gbGV0J3MgY2xvc2UgdGhhdCBydW4KLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBtX2RpcmVjdGlvbiA9IEV1cm9wZWFuTnVtYmVyOworICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIG1fZGlyZWN0aW9uID0gVV9FVVJPUEVBTl9OVU1CRVI7CiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgYXBwZW5kUnVuKCk7Ci0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgaWYgKGNvbnRleHQoKS0+ZGlyKCkgIT0gTGVmdFRvUmlnaHQpIHsKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBpZiAoY29udGV4dCgpLT5kaXIoKSAhPSBVX0xFRlRfVE9fUklHSFQp
IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdGhlIG5ldXRyYWxzIHRha2Ug
dGhlIGVtYmVkZGluZyBkaXJlY3Rpb24sIHdoaWNoIGlzIFIKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgbV9lb3IgPSBtX2xhc3Q7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIG1fZGlyZWN0aW9uID0gUmlnaHRUb0xlZnQ7CisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIG1fZGlyZWN0aW9uID0gVV9SSUdIVF9UT19MRUZUOwogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBhcHBlbmRSdW4oKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9
CiAgICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgIH0gZWxzZSBp
ZiAobV9zdGF0dXMuZW9yID09IEFyYWJpY051bWJlcikgeworICAgICAgICAgICAgICAgICAgICB9
IGVsc2UgaWYgKG1fc3RhdHVzLmVvciA9PSBVX0FSQUJJQ19OVU1CRVIpIHsKICAgICAgICAgICAg
ICAgICAgICAgICAgIC8vIEFyYWJpYyBudW1iZXJzIGFyZSBhbHdheXMgb24gYSBoaWdoZXIgZW1i
ZWRkaW5nIGxldmVsLCBzbyBsZXQncyBjbG9zZSB0aGF0IHJ1bgotICAgICAgICAgICAgICAgICAg
ICAgICAgbV9kaXJlY3Rpb24gPSBBcmFiaWNOdW1iZXI7CisgICAgICAgICAgICAgICAgICAgICAg
ICBtX2RpcmVjdGlvbiA9IFVfQVJBQklDX05VTUJFUjsKICAgICAgICAgICAgICAgICAgICAgICAg
IGFwcGVuZFJ1bigpOwotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGNvbnRleHQoKS0+ZGly
KCkgIT0gTGVmdFRvUmlnaHQpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjb250ZXh0
KCktPmRpcigpICE9IFVfTEVGVF9UT19SSUdIVCkgewogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIC8vIHRoZSBuZXV0cmFscyB0YWtlIHRoZSBlbWJlZGRpbmcgZGlyZWN0aW9uLCB3aGljaCBp
cyBSCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9lb3IgPSBtX2xhc3Q7Ci0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgbV9kaXJlY3Rpb24gPSBSaWdodFRvTGVmdDsKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBtX2RpcmVjdGlvbiA9IFVfUklHSFRfVE9fTEVGVDsKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBhcHBlbmRSdW4oKTsKICAgICAgICAgICAgICAgICAgICAg
ICAgIH0KLSAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChtX3N0YXR1cy5sYXN0U3Ryb25n
ICE9IExlZnRUb1JpZ2h0KSB7CisgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAobV9zdGF0
dXMubGFzdFN0cm9uZyAhPSBVX0xFRlRfVE9fUklHSFQpIHsKICAgICAgICAgICAgICAgICAgICAg
ICAgIC8vbGFzdCBzdHVmZiB0YWtlcyBlbWJlZGRpbmcgZGlyCi0gICAgICAgICAgICAgICAgICAg
ICAgICBpZiAoY29udGV4dCgpLT5kaXIoKSA9PSBSaWdodFRvTGVmdCkgeworICAgICAgICAgICAg
ICAgICAgICAgICAgaWYgKGNvbnRleHQoKS0+ZGlyKCkgPT0gVV9SSUdIVF9UT19MRUZUKSB7CiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9lb3IgPSBtX2xhc3Q7IAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIG1fZGlyZWN0aW9uID0gUmlnaHRUb0xlZnQ7CisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgbV9kaXJlY3Rpb24gPSBVX1JJR0hUX1RPX0xFRlQ7CiAgICAgICAgICAg
ICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICBhcHBlbmRSdW4oKTsKICAg
ICAgICAgICAgICAgICAgICAgfQpAQCAtNjY0LDM2ICs2NTIsMzYgQEAgdm9pZCBCaWRpUmVzb2x2
ZXI8SXRlcmF0b3IsIFJ1bj46OmNyZWF0ZUJpZGlSdW5zRm9yTGluZShjb25zdCBJdGVyYXRvciYg
ZW5kLCBWaXMKICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CiAgICAg
ICAgICAgICBtX2VvciA9IG1fY3VycmVudDsKLSAgICAgICAgICAgIG1fc3RhdHVzLmVvciA9IExl
ZnRUb1JpZ2h0OwotICAgICAgICAgICAgbV9zdGF0dXMubGFzdFN0cm9uZyA9IExlZnRUb1JpZ2h0
OwotICAgICAgICAgICAgbV9kaXJlY3Rpb24gPSBMZWZ0VG9SaWdodDsKKyAgICAgICAgICAgIG1f
c3RhdHVzLmVvciA9IFVfTEVGVF9UT19SSUdIVDsKKyAgICAgICAgICAgIG1fc3RhdHVzLmxhc3RT
dHJvbmcgPSBVX0xFRlRfVE9fUklHSFQ7CisgICAgICAgICAgICBtX2RpcmVjdGlvbiA9IFVfTEVG
VF9UT19SSUdIVDsKICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIFJpZ2h0VG9MZWZ0
QXJhYmljOgotICAgICAgICBjYXNlIFJpZ2h0VG9MZWZ0OgorICAgICAgICBjYXNlIFVfUklHSFRf
VE9fTEVGVF9BUkFCSUM6CisgICAgICAgIGNhc2UgVV9SSUdIVF9UT19MRUZUOgogICAgICAgICAg
ICAgc3dpdGNoIChtX3N0YXR1cy5sYXN0KSB7Ci0gICAgICAgICAgICAgICAgY2FzZSBMZWZ0VG9S
aWdodDoKLSAgICAgICAgICAgICAgICBjYXNlIEV1cm9wZWFuTnVtYmVyOgotICAgICAgICAgICAg
ICAgIGNhc2UgQXJhYmljTnVtYmVyOgorICAgICAgICAgICAgICAgIGNhc2UgVV9MRUZUX1RPX1JJ
R0hUOgorICAgICAgICAgICAgICAgIGNhc2UgVV9FVVJPUEVBTl9OVU1CRVI6CisgICAgICAgICAg
ICAgICAgY2FzZSBVX0FSQUJJQ19OVU1CRVI6CiAgICAgICAgICAgICAgICAgICAgIGFwcGVuZFJ1
bigpOwotICAgICAgICAgICAgICAgIGNhc2UgUmlnaHRUb0xlZnQ6Ci0gICAgICAgICAgICAgICAg
Y2FzZSBSaWdodFRvTGVmdEFyYWJpYzoKKyAgICAgICAgICAgICAgICBjYXNlIFVfUklHSFRfVE9f
TEVGVDoKKyAgICAgICAgICAgICAgICBjYXNlIFVfUklHSFRfVE9fTEVGVF9BUkFCSUM6CiAgICAg
ICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgIGNhc2UgRXVyb3BlYW5OdW1i
ZXJTZXBhcmF0b3I6Ci0gICAgICAgICAgICAgICAgY2FzZSBFdXJvcGVhbk51bWJlclRlcm1pbmF0
b3I6Ci0gICAgICAgICAgICAgICAgY2FzZSBDb21tb25OdW1iZXJTZXBhcmF0b3I6Ci0gICAgICAg
ICAgICAgICAgY2FzZSBCb3VuZGFyeU5ldXRyYWw6Ci0gICAgICAgICAgICAgICAgY2FzZSBCbG9j
a1NlcGFyYXRvcjoKLSAgICAgICAgICAgICAgICBjYXNlIFNlZ21lbnRTZXBhcmF0b3I6Ci0gICAg
ICAgICAgICAgICAgY2FzZSBXaGl0ZVNwYWNlTmV1dHJhbDoKLSAgICAgICAgICAgICAgICBjYXNl
IE90aGVyTmV1dHJhbDoKLSAgICAgICAgICAgICAgICAgICAgaWYgKG1fc3RhdHVzLmVvciA9PSBF
dXJvcGVhbk51bWJlcikgewotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG1fc3RhdHVzLmxh
c3RTdHJvbmcgPT0gTGVmdFRvUmlnaHQgJiYgY29udGV4dCgpLT5kaXIoKSA9PSBMZWZ0VG9SaWdo
dCkKKyAgICAgICAgICAgICAgICBjYXNlIFVfRVVST1BFQU5fTlVNQkVSX1NFUEFSQVRPUjoKKyAg
ICAgICAgICAgICAgICBjYXNlIFVfRVVST1BFQU5fTlVNQkVSX1RFUk1JTkFUT1I6CisgICAgICAg
ICAgICAgICAgY2FzZSBVX0NPTU1PTl9OVU1CRVJfU0VQQVJBVE9SOgorICAgICAgICAgICAgICAg
IGNhc2UgVV9CT1VOREFSWV9ORVVUUkFMOgorICAgICAgICAgICAgICAgIGNhc2UgVV9CTE9DS19T
RVBBUkFUT1I6CisgICAgICAgICAgICAgICAgY2FzZSBVX1NFR01FTlRfU0VQQVJBVE9SOgorICAg
ICAgICAgICAgICAgIGNhc2UgVV9XSElURV9TUEFDRV9ORVVUUkFMOgorICAgICAgICAgICAgICAg
IGNhc2UgVV9PVEhFUl9ORVVUUkFMOgorICAgICAgICAgICAgICAgICAgICBpZiAobV9zdGF0dXMu
ZW9yID09IFVfRVVST1BFQU5fTlVNQkVSKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAo
bV9zdGF0dXMubGFzdFN0cm9uZyA9PSBVX0xFRlRfVE9fUklHSFQgJiYgY29udGV4dCgpLT5kaXIo
KSA9PSBVX0xFRlRfVE9fUklHSFQpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9lb3Ig
PSBtX2xhc3Q7CiAgICAgICAgICAgICAgICAgICAgICAgICBhcHBlbmRSdW4oKTsKLSAgICAgICAg
ICAgICAgICAgICAgfSBlbHNlIGlmIChtX3N0YXR1cy5lb3IgPT0gQXJhYmljTnVtYmVyKQorICAg
ICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKG1fc3RhdHVzLmVvciA9PSBVX0FSQUJJQ19OVU1C
RVIpCiAgICAgICAgICAgICAgICAgICAgICAgICBhcHBlbmRSdW4oKTsKLSAgICAgICAgICAgICAg
ICAgICAgZWxzZSBpZiAobV9zdGF0dXMubGFzdFN0cm9uZyA9PSBMZWZ0VG9SaWdodCkgewotICAg
ICAgICAgICAgICAgICAgICAgICAgaWYgKGNvbnRleHQoKS0+ZGlyKCkgPT0gTGVmdFRvUmlnaHQp
CisgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKG1fc3RhdHVzLmxhc3RTdHJvbmcgPT0gVV9M
RUZUX1RPX1JJR0hUKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoY29udGV4dCgpLT5k
aXIoKSA9PSBVX0xFRlRfVE9fUklHSFQpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9l
b3IgPSBtX2xhc3Q7CiAgICAgICAgICAgICAgICAgICAgICAgICBhcHBlbmRSdW4oKTsKICAgICAg
ICAgICAgICAgICAgICAgfQpAQCAtNzAxLDE0OCArNjg5LDE0OCBAQCB2b2lkIEJpZGlSZXNvbHZl
cjxJdGVyYXRvciwgUnVuPjo6Y3JlYXRlQmlkaVJ1bnNGb3JMaW5lKGNvbnN0IEl0ZXJhdG9yJiBl
bmQsIFZpcwogICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KICAgICAg
ICAgICAgIG1fZW9yID0gbV9jdXJyZW50OwotICAgICAgICAgICAgbV9zdGF0dXMuZW9yID0gUmln
aHRUb0xlZnQ7CisgICAgICAgICAgICBtX3N0YXR1cy5lb3IgPSBVX1JJR0hUX1RPX0xFRlQ7CiAg
ICAgICAgICAgICBtX3N0YXR1cy5sYXN0U3Ryb25nID0gZGlyQ3VycmVudDsKLSAgICAgICAgICAg
IG1fZGlyZWN0aW9uID0gUmlnaHRUb0xlZnQ7CisgICAgICAgICAgICBtX2RpcmVjdGlvbiA9IFVf
UklHSFRfVE9fTEVGVDsKICAgICAgICAgICAgIGJyZWFrOwogCiAgICAgICAgICAgICAvLyB3ZWFr
IHR5cGVzOgogCi0gICAgICAgIGNhc2UgRXVyb3BlYW5OdW1iZXI6Ci0gICAgICAgICAgICBpZiAo
bV9zdGF0dXMubGFzdFN0cm9uZyAhPSBSaWdodFRvTGVmdEFyYWJpYykgeworICAgICAgICBjYXNl
IFVfRVVST1BFQU5fTlVNQkVSOgorICAgICAgICAgICAgaWYgKG1fc3RhdHVzLmxhc3RTdHJvbmcg
IT0gVV9SSUdIVF9UT19MRUZUX0FSQUJJQykgewogICAgICAgICAgICAgICAgIC8vIGlmIGxhc3Qg
c3Ryb25nIHdhcyBBTCBjaGFuZ2UgRU4gdG8gQU4KICAgICAgICAgICAgICAgICBzd2l0Y2ggKG1f
c3RhdHVzLmxhc3QpIHsKLSAgICAgICAgICAgICAgICAgICAgY2FzZSBFdXJvcGVhbk51bWJlcjoK
LSAgICAgICAgICAgICAgICAgICAgY2FzZSBMZWZ0VG9SaWdodDoKKyAgICAgICAgICAgICAgICAg
ICAgY2FzZSBVX0VVUk9QRUFOX05VTUJFUjoKKyAgICAgICAgICAgICAgICAgICAgY2FzZSBVX0xF
RlRfVE9fUklHSFQ6CiAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAg
ICAgICAgICAgY2FzZSBSaWdodFRvTGVmdDoKLSAgICAgICAgICAgICAgICAgICAgY2FzZSBSaWdo
dFRvTGVmdEFyYWJpYzoKLSAgICAgICAgICAgICAgICAgICAgY2FzZSBBcmFiaWNOdW1iZXI6Cisg
ICAgICAgICAgICAgICAgICAgIGNhc2UgVV9SSUdIVF9UT19MRUZUOgorICAgICAgICAgICAgICAg
ICAgICBjYXNlIFVfUklHSFRfVE9fTEVGVF9BUkFCSUM6CisgICAgICAgICAgICAgICAgICAgIGNh
c2UgVV9BUkFCSUNfTlVNQkVSOgogICAgICAgICAgICAgICAgICAgICAgICAgbV9lb3IgPSBtX2xh
c3Q7CiAgICAgICAgICAgICAgICAgICAgICAgICBhcHBlbmRSdW4oKTsKLSAgICAgICAgICAgICAg
ICAgICAgICAgIG1fZGlyZWN0aW9uID0gRXVyb3BlYW5OdW1iZXI7CisgICAgICAgICAgICAgICAg
ICAgICAgICBtX2RpcmVjdGlvbiA9IFVfRVVST1BFQU5fTlVNQkVSOwogICAgICAgICAgICAgICAg
ICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgIGNhc2UgRXVyb3BlYW5OdW1iZXJT
ZXBhcmF0b3I6Ci0gICAgICAgICAgICAgICAgICAgIGNhc2UgQ29tbW9uTnVtYmVyU2VwYXJhdG9y
OgotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG1fc3RhdHVzLmVvciA9PSBFdXJvcGVhbk51
bWJlcikKKyAgICAgICAgICAgICAgICAgICAgY2FzZSBVX0VVUk9QRUFOX05VTUJFUl9TRVBBUkFU
T1I6CisgICAgICAgICAgICAgICAgICAgIGNhc2UgVV9DT01NT05fTlVNQkVSX1NFUEFSQVRPUjoK
KyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChtX3N0YXR1cy5lb3IgPT0gVV9FVVJPUEVBTl9O
VU1CRVIpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAg
ICAgICAgIGNhc2UgRXVyb3BlYW5OdW1iZXJUZXJtaW5hdG9yOgotICAgICAgICAgICAgICAgICAg
ICBjYXNlIEJvdW5kYXJ5TmV1dHJhbDoKLSAgICAgICAgICAgICAgICAgICAgY2FzZSBCbG9ja1Nl
cGFyYXRvcjoKLSAgICAgICAgICAgICAgICAgICAgY2FzZSBTZWdtZW50U2VwYXJhdG9yOgotICAg
ICAgICAgICAgICAgICAgICBjYXNlIFdoaXRlU3BhY2VOZXV0cmFsOgotICAgICAgICAgICAgICAg
ICAgICBjYXNlIE90aGVyTmV1dHJhbDoKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIChtX3N0
YXR1cy5lb3IgPT0gRXVyb3BlYW5OdW1iZXIpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBpZiAobV9zdGF0dXMubGFzdFN0cm9uZyA9PSBSaWdodFRvTGVmdCkgeworICAgICAgICAgICAg
ICAgICAgICBjYXNlIFVfRVVST1BFQU5fTlVNQkVSX1RFUk1JTkFUT1I6CisgICAgICAgICAgICAg
ICAgICAgIGNhc2UgVV9CT1VOREFSWV9ORVVUUkFMOgorICAgICAgICAgICAgICAgICAgICBjYXNl
IFVfQkxPQ0tfU0VQQVJBVE9SOgorICAgICAgICAgICAgICAgICAgICBjYXNlIFVfU0VHTUVOVF9T
RVBBUkFUT1I6CisgICAgICAgICAgICAgICAgICAgIGNhc2UgVV9XSElURV9TUEFDRV9ORVVUUkFM
OgorICAgICAgICAgICAgICAgICAgICBjYXNlIFVfT1RIRVJfTkVVVFJBTDoKKyAgICAgICAgICAg
ICAgICAgICAgICAgIGlmIChtX3N0YXR1cy5lb3IgPT0gVV9FVVJPUEVBTl9OVU1CRVIpIHsKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobV9zdGF0dXMubGFzdFN0cm9uZyA9PSBVX1JJ
R0hUX1RPX0xFRlQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gRU5zIG9u
IGJvdGggc2lkZXMgYmVoYXZlIGxpa2UgUnMsIHNvIHRoZSBuZXV0cmFscyBzaG91bGQgYmUgUi4K
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gVGVybWluYXRlIHRoZSBFTiBydW4u
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFwcGVuZFJ1bigpOwogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAvLyBNYWtlIGFuIFIgcnVuLgotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBtX2VvciA9IG1fc3RhdHVzLmxhc3QgPT0gRXVyb3BlYW5OdW1iZXJU
ZXJtaW5hdG9yID8gbV9sYXN0QmVmb3JlRVQgOiBtX2xhc3Q7Ci0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIG1fZGlyZWN0aW9uID0gUmlnaHRUb0xlZnQ7CisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIG1fZW9yID0gbV9zdGF0dXMubGFzdCA9PSBVX0VVUk9QRUFOX05VTUJF
Ul9URVJNSU5BVE9SID8gbV9sYXN0QmVmb3JlRVQgOiBtX2xhc3Q7CisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIG1fZGlyZWN0aW9uID0gVV9SSUdIVF9UT19MRUZUOwogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBhcHBlbmRSdW4oKTsKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgLy8gQmVnaW4gYSBuZXcgRU4gcnVuLgotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBtX2RpcmVjdGlvbiA9IEV1cm9wZWFuTnVtYmVyOworICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBtX2RpcmVjdGlvbiA9IFVfRVVST1BFQU5fTlVNQkVSOwogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBp
ZiAobV9zdGF0dXMuZW9yID09IEFyYWJpY051bWJlcikgeworICAgICAgICAgICAgICAgICAgICAg
ICAgfSBlbHNlIGlmIChtX3N0YXR1cy5lb3IgPT0gVV9BUkFCSUNfTlVNQkVSKSB7CiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgLy8gVGVybWluYXRlIHRoZSBBTiBydW4uCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgYXBwZW5kUnVuKCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgaWYgKG1fc3RhdHVzLmxhc3RTdHJvbmcgPT0gUmlnaHRUb0xlZnQgfHwgY29udGV4dCgpLT5k
aXIoKSA9PSBSaWdodFRvTGVmdCkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICht
X3N0YXR1cy5sYXN0U3Ryb25nID09IFVfUklHSFRfVE9fTEVGVCB8fCBjb250ZXh0KCktPmRpcigp
ID09IFVfUklHSFRfVE9fTEVGVCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAv
LyBNYWtlIGFuIFIgcnVuLgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX2VvciA9
IG1fc3RhdHVzLmxhc3QgPT0gRXVyb3BlYW5OdW1iZXJUZXJtaW5hdG9yID8gbV9sYXN0QmVmb3Jl
RVQgOiBtX2xhc3Q7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fZGlyZWN0aW9u
ID0gUmlnaHRUb0xlZnQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fZW9yID0g
bV9zdGF0dXMubGFzdCA9PSBVX0VVUk9QRUFOX05VTUJFUl9URVJNSU5BVE9SID8gbV9sYXN0QmVm
b3JlRVQgOiBtX2xhc3Q7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fZGlyZWN0
aW9uID0gVV9SSUdIVF9UT19MRUZUOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBh
cHBlbmRSdW4oKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gQmVnaW4gYSBu
ZXcgRU4gcnVuLgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX2RpcmVjdGlvbiA9
IEV1cm9wZWFuTnVtYmVyOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX2RpcmVj
dGlvbiA9IFVfRVVST1BFQU5fTlVNQkVSOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0K
LSAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAobV9zdGF0dXMubGFzdFN0cm9uZyA9
PSBSaWdodFRvTGVmdCkgeworICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChtX3N0
YXR1cy5sYXN0U3Ryb25nID09IFVfUklHSFRfVE9fTEVGVCkgewogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIC8vIEV4dGVuZCB0aGUgUiBydW4gdG8gaW5jbHVkZSB0aGUgbmV1dHJhbHMuCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9lb3IgPSBtX3N0YXR1cy5sYXN0ID09IEV1cm9w
ZWFuTnVtYmVyVGVybWluYXRvciA/IG1fbGFzdEJlZm9yZUVUIDogbV9sYXN0OwotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIG1fZGlyZWN0aW9uID0gUmlnaHRUb0xlZnQ7CisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgbV9lb3IgPSBtX3N0YXR1cy5sYXN0ID09IFVfRVVST1BFQU5fTlVN
QkVSX1RFUk1JTkFUT1IgPyBtX2xhc3RCZWZvcmVFVCA6IG1fbGFzdDsKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBtX2RpcmVjdGlvbiA9IFVfUklHSFRfVE9fTEVGVDsKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBhcHBlbmRSdW4oKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAvLyBCZWdpbiBhIG5ldyBFTiBydW4uCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9k
aXJlY3Rpb24gPSBFdXJvcGVhbk51bWJlcjsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBt
X2RpcmVjdGlvbiA9IFVfRVVST1BFQU5fTlVNQkVSOwogICAgICAgICAgICAgICAgICAgICAgICAg
fQogICAgICAgICAgICAgICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIG1fZW9yID0gbV9jdXJy
ZW50OwotICAgICAgICAgICAgICAgIG1fc3RhdHVzLmVvciA9IEV1cm9wZWFuTnVtYmVyOwotICAg
ICAgICAgICAgICAgIGlmIChtX2RpcmVjdGlvbiA9PSBPdGhlck5ldXRyYWwpCi0gICAgICAgICAg
ICAgICAgICAgIG1fZGlyZWN0aW9uID0gTGVmdFRvUmlnaHQ7CisgICAgICAgICAgICAgICAgbV9z
dGF0dXMuZW9yID0gVV9FVVJPUEVBTl9OVU1CRVI7CisgICAgICAgICAgICAgICAgaWYgKG1fZGly
ZWN0aW9uID09IFVfT1RIRVJfTkVVVFJBTCkKKyAgICAgICAgICAgICAgICAgICAgbV9kaXJlY3Rp
b24gPSBVX0xFRlRfVE9fUklHSFQ7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAg
ICB9Ci0gICAgICAgIGNhc2UgQXJhYmljTnVtYmVyOgotICAgICAgICAgICAgZGlyQ3VycmVudCA9
IEFyYWJpY051bWJlcjsKKyAgICAgICAgY2FzZSBVX0FSQUJJQ19OVU1CRVI6CisgICAgICAgICAg
ICBkaXJDdXJyZW50ID0gVV9BUkFCSUNfTlVNQkVSOwogICAgICAgICAgICAgc3dpdGNoIChtX3N0
YXR1cy5sYXN0KSB7Ci0gICAgICAgICAgICAgICAgY2FzZSBMZWZ0VG9SaWdodDoKLSAgICAgICAg
ICAgICAgICAgICAgaWYgKGNvbnRleHQoKS0+ZGlyKCkgPT0gTGVmdFRvUmlnaHQpCisgICAgICAg
ICAgICAgICAgY2FzZSBVX0xFRlRfVE9fUklHSFQ6CisgICAgICAgICAgICAgICAgICAgIGlmIChj
b250ZXh0KCktPmRpcigpID09IFVfTEVGVF9UT19SSUdIVCkKICAgICAgICAgICAgICAgICAgICAg
ICAgIGFwcGVuZFJ1bigpOwogICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAg
ICAgICBjYXNlIEFyYWJpY051bWJlcjoKKyAgICAgICAgICAgICAgICBjYXNlIFVfQVJBQklDX05V
TUJFUjoKICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgY2FzZSBS
aWdodFRvTGVmdDoKLSAgICAgICAgICAgICAgICBjYXNlIFJpZ2h0VG9MZWZ0QXJhYmljOgotICAg
ICAgICAgICAgICAgIGNhc2UgRXVyb3BlYW5OdW1iZXI6CisgICAgICAgICAgICAgICAgY2FzZSBV
X1JJR0hUX1RPX0xFRlQ6CisgICAgICAgICAgICAgICAgY2FzZSBVX1JJR0hUX1RPX0xFRlRfQVJB
QklDOgorICAgICAgICAgICAgICAgIGNhc2UgVV9FVVJPUEVBTl9OVU1CRVI6CiAgICAgICAgICAg
ICAgICAgICAgIG1fZW9yID0gbV9sYXN0OwogICAgICAgICAgICAgICAgICAgICBhcHBlbmRSdW4o
KTsKICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgY2FzZSBDb21t
b25OdW1iZXJTZXBhcmF0b3I6Ci0gICAgICAgICAgICAgICAgICAgIGlmIChtX3N0YXR1cy5lb3Ig
PT0gQXJhYmljTnVtYmVyKQorICAgICAgICAgICAgICAgIGNhc2UgVV9DT01NT05fTlVNQkVSX1NF
UEFSQVRPUjoKKyAgICAgICAgICAgICAgICAgICAgaWYgKG1fc3RhdHVzLmVvciA9PSBVX0FSQUJJ
Q19OVU1CRVIpCiAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAg
ICBjYXNlIEV1cm9wZWFuTnVtYmVyU2VwYXJhdG9yOgotICAgICAgICAgICAgICAgIGNhc2UgRXVy
b3BlYW5OdW1iZXJUZXJtaW5hdG9yOgotICAgICAgICAgICAgICAgIGNhc2UgQm91bmRhcnlOZXV0
cmFsOgotICAgICAgICAgICAgICAgIGNhc2UgQmxvY2tTZXBhcmF0b3I6Ci0gICAgICAgICAgICAg
ICAgY2FzZSBTZWdtZW50U2VwYXJhdG9yOgotICAgICAgICAgICAgICAgIGNhc2UgV2hpdGVTcGFj
ZU5ldXRyYWw6Ci0gICAgICAgICAgICAgICAgY2FzZSBPdGhlck5ldXRyYWw6Ci0gICAgICAgICAg
ICAgICAgICAgIGlmIChtX3N0YXR1cy5lb3IgPT0gQXJhYmljTnVtYmVyCi0gICAgICAgICAgICAg
ICAgICAgICAgICB8fCAobV9zdGF0dXMuZW9yID09IEV1cm9wZWFuTnVtYmVyICYmIChtX3N0YXR1
cy5sYXN0U3Ryb25nID09IFJpZ2h0VG9MZWZ0IHx8IGNvbnRleHQoKS0+ZGlyKCkgPT0gUmlnaHRU
b0xlZnQpKQotICAgICAgICAgICAgICAgICAgICAgICAgfHwgKG1fc3RhdHVzLmVvciAhPSBFdXJv
cGVhbk51bWJlciAmJiBtX3N0YXR1cy5sYXN0U3Ryb25nID09IExlZnRUb1JpZ2h0ICYmIGNvbnRl
eHQoKS0+ZGlyKCkgPT0gUmlnaHRUb0xlZnQpKSB7CisgICAgICAgICAgICAgICAgY2FzZSBVX0VV
Uk9QRUFOX05VTUJFUl9TRVBBUkFUT1I6CisgICAgICAgICAgICAgICAgY2FzZSBVX0VVUk9QRUFO
X05VTUJFUl9URVJNSU5BVE9SOgorICAgICAgICAgICAgICAgIGNhc2UgVV9CT1VOREFSWV9ORVVU
UkFMOgorICAgICAgICAgICAgICAgIGNhc2UgVV9CTE9DS19TRVBBUkFUT1I6CisgICAgICAgICAg
ICAgICAgY2FzZSBVX1NFR01FTlRfU0VQQVJBVE9SOgorICAgICAgICAgICAgICAgIGNhc2UgVV9X
SElURV9TUEFDRV9ORVVUUkFMOgorICAgICAgICAgICAgICAgIGNhc2UgVV9PVEhFUl9ORVVUUkFM
OgorICAgICAgICAgICAgICAgICAgICBpZiAobV9zdGF0dXMuZW9yID09IFVfQVJBQklDX05VTUJF
UgorICAgICAgICAgICAgICAgICAgICAgICAgfHwgKG1fc3RhdHVzLmVvciA9PSBVX0VVUk9QRUFO
X05VTUJFUiAmJiAobV9zdGF0dXMubGFzdFN0cm9uZyA9PSBVX1JJR0hUX1RPX0xFRlQgfHwgY29u
dGV4dCgpLT5kaXIoKSA9PSBVX1JJR0hUX1RPX0xFRlQpKQorICAgICAgICAgICAgICAgICAgICAg
ICAgfHwgKG1fc3RhdHVzLmVvciAhPSBVX0VVUk9QRUFOX05VTUJFUiAmJiBtX3N0YXR1cy5sYXN0
U3Ryb25nID09IFVfTEVGVF9UT19SSUdIVCAmJiBjb250ZXh0KCktPmRpcigpID09IFVfUklHSFRf
VE9fTEVGVCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFRlcm1pbmF0ZSB0aGUgcnVu
IGJlZm9yZSB0aGUgbmV1dHJhbHMuCiAgICAgICAgICAgICAgICAgICAgICAgICBhcHBlbmRSdW4o
KTsKICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEJlZ2luIGFuIFIgcnVuIGZvciB0aGUgbmV1
dHJhbHMuCi0gICAgICAgICAgICAgICAgICAgICAgICBtX2RpcmVjdGlvbiA9IFJpZ2h0VG9MZWZ0
OwotICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKG1fZGlyZWN0aW9uID09IE90aGVyTmV1
dHJhbCkKLSAgICAgICAgICAgICAgICAgICAgICAgIG1fZGlyZWN0aW9uID0gbV9zdGF0dXMubGFz
dFN0cm9uZyA9PSBMZWZ0VG9SaWdodCA/IExlZnRUb1JpZ2h0IDogUmlnaHRUb0xlZnQ7CisgICAg
ICAgICAgICAgICAgICAgICAgICBtX2RpcmVjdGlvbiA9IFVfUklHSFRfVE9fTEVGVDsKKyAgICAg
ICAgICAgICAgICAgICAgfSBlbHNlIGlmIChtX2RpcmVjdGlvbiA9PSBVX09USEVSX05FVVRSQUwp
CisgICAgICAgICAgICAgICAgICAgICAgICBtX2RpcmVjdGlvbiA9IG1fc3RhdHVzLmxhc3RTdHJv
bmcgPT0gVV9MRUZUX1RPX1JJR0hUID8gVV9MRUZUX1RPX1JJR0hUIDogVV9SSUdIVF9UT19MRUZU
OwogICAgICAgICAgICAgICAgICAgICBtX2VvciA9IG1fbGFzdDsKICAgICAgICAgICAgICAgICAg
ICAgYXBwZW5kUnVuKCk7CiAgICAgICAgICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBtX2VvciA9IG1fY3VycmVu
dDsKLSAgICAgICAgICAgIG1fc3RhdHVzLmVvciA9IEFyYWJpY051bWJlcjsKLSAgICAgICAgICAg
IGlmIChtX2RpcmVjdGlvbiA9PSBPdGhlck5ldXRyYWwpCi0gICAgICAgICAgICAgICAgbV9kaXJl
Y3Rpb24gPSBBcmFiaWNOdW1iZXI7CisgICAgICAgICAgICBtX3N0YXR1cy5lb3IgPSBVX0FSQUJJ
Q19OVU1CRVI7CisgICAgICAgICAgICBpZiAobV9kaXJlY3Rpb24gPT0gVV9PVEhFUl9ORVVUUkFM
KQorICAgICAgICAgICAgICAgIG1fZGlyZWN0aW9uID0gVV9BUkFCSUNfTlVNQkVSOwogICAgICAg
ICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgRXVyb3BlYW5OdW1iZXJTZXBhcmF0b3I6Ci0gICAg
ICAgIGNhc2UgQ29tbW9uTnVtYmVyU2VwYXJhdG9yOgorICAgICAgICBjYXNlIFVfRVVST1BFQU5f
TlVNQkVSX1NFUEFSQVRPUjoKKyAgICAgICAgY2FzZSBVX0NPTU1PTl9OVU1CRVJfU0VQQVJBVE9S
OgogICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgRXVyb3BlYW5OdW1iZXJUZXJtaW5h
dG9yOgotICAgICAgICAgICAgaWYgKG1fc3RhdHVzLmxhc3QgPT0gRXVyb3BlYW5OdW1iZXIpIHsK
LSAgICAgICAgICAgICAgICBkaXJDdXJyZW50ID0gRXVyb3BlYW5OdW1iZXI7CisgICAgICAgIGNh
c2UgVV9FVVJPUEVBTl9OVU1CRVJfVEVSTUlOQVRPUjoKKyAgICAgICAgICAgIGlmIChtX3N0YXR1
cy5sYXN0ID09IFVfRVVST1BFQU5fTlVNQkVSKSB7CisgICAgICAgICAgICAgICAgZGlyQ3VycmVu
dCA9IFVfRVVST1BFQU5fTlVNQkVSOwogICAgICAgICAgICAgICAgIG1fZW9yID0gbV9jdXJyZW50
OwogICAgICAgICAgICAgICAgIG1fc3RhdHVzLmVvciA9IGRpckN1cnJlbnQ7Ci0gICAgICAgICAg
ICB9IGVsc2UgaWYgKG1fc3RhdHVzLmxhc3QgIT0gRXVyb3BlYW5OdW1iZXJUZXJtaW5hdG9yKQor
ICAgICAgICAgICAgfSBlbHNlIGlmIChtX3N0YXR1cy5sYXN0ICE9IFVfRVVST1BFQU5fTlVNQkVS
X1RFUk1JTkFUT1IpCiAgICAgICAgICAgICAgICAgbV9sYXN0QmVmb3JlRVQgPSBtX2VtcHR5UnVu
ID8gbV9lb3IgOiBtX2xhc3Q7CiAgICAgICAgICAgICBicmVhazsKIAogICAgICAgICAvLyBib3Vu
ZGFyeSBuZXV0cmFscyBzaG91bGQgYmUgaWdub3JlZAotICAgICAgICBjYXNlIEJvdW5kYXJ5TmV1
dHJhbDoKKyAgICAgICAgY2FzZSBVX0JPVU5EQVJZX05FVVRSQUw6CiAgICAgICAgICAgICBpZiAo
bV9lb3IgPT0gbV9sYXN0KQogICAgICAgICAgICAgICAgIG1fZW9yID0gbV9jdXJyZW50OwogICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAvLyBuZXV0cmFscwotICAgICAgICBjYXNlIEJs
b2NrU2VwYXJhdG9yOgotICAgICAgICAgICAgLy8gIyMjIHdoYXQgZG8gd2UgZG8gd2l0aCBuZXds
aW5lIGFuZCBwYXJhZ3JhcGggc2VwZXJhdG9ycyB0aGF0IGNvbWUgdG8gaGVyZT8KKyAgICAgICAg
Y2FzZSBVX0JMT0NLX1NFUEFSQVRPUjoKKyAgICAgICAgICAgIC8vIEZJWE1FOiBXaGF0IGRvIHdl
IGRvIHdpdGggbmV3bGluZSBhbmQgcGFyYWdyYXBoIHNlcGFyYXRvcnMgdGhhdCBjb21lIHRvIGhl
cmU/CiAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBTZWdtZW50U2VwYXJhdG9yOgot
ICAgICAgICAgICAgLy8gIyMjIGltcGxlbWVudCBydWxlIEwxCisgICAgICAgIGNhc2UgVV9TRUdN
RU5UX1NFUEFSQVRPUjoKKyAgICAgICAgICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgcnVsZSBMMS4K
ICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIFdoaXRlU3BhY2VOZXV0cmFsOgorICAg
ICAgICBjYXNlIFVfV0hJVEVfU1BBQ0VfTkVVVFJBTDoKICAgICAgICAgICAgIGJyZWFrOwotICAg
ICAgICBjYXNlIE90aGVyTmV1dHJhbDoKKyAgICAgICAgY2FzZSBVX09USEVSX05FVVRSQUw6CiAg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgIGJyZWFrOwpA
QCAtODUyLDEzICs4NDAsMTMgQEAgdm9pZCBCaWRpUmVzb2x2ZXI8SXRlcmF0b3IsIFJ1bj46OmNy
ZWF0ZUJpZGlSdW5zRm9yTGluZShjb25zdCBJdGVyYXRvciYgZW5kLCBWaXMKICAgICAgICAgICAg
IGlmICghbV9yZWFjaGVkRW5kT2ZMaW5lKSB7CiAgICAgICAgICAgICAgICAgbV9lb3IgPSBlbmRP
ZkxpbmU7CiAgICAgICAgICAgICAgICAgc3dpdGNoIChtX3N0YXR1cy5lb3IpIHsKLSAgICAgICAg
ICAgICAgICAgICAgY2FzZSBMZWZ0VG9SaWdodDoKLSAgICAgICAgICAgICAgICAgICAgY2FzZSBS
aWdodFRvTGVmdDoKLSAgICAgICAgICAgICAgICAgICAgY2FzZSBBcmFiaWNOdW1iZXI6CisgICAg
ICAgICAgICAgICAgICAgIGNhc2UgVV9MRUZUX1RPX1JJR0hUOgorICAgICAgICAgICAgICAgICAg
ICBjYXNlIFVfUklHSFRfVE9fTEVGVDoKKyAgICAgICAgICAgICAgICAgICAgY2FzZSBVX0FSQUJJ
Q19OVU1CRVI6CiAgICAgICAgICAgICAgICAgICAgICAgICBtX2RpcmVjdGlvbiA9IG1fc3RhdHVz
LmVvcjsKICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgICAg
ICBjYXNlIEV1cm9wZWFuTnVtYmVyOgotICAgICAgICAgICAgICAgICAgICAgICAgbV9kaXJlY3Rp
b24gPSBtX3N0YXR1cy5sYXN0U3Ryb25nID09IExlZnRUb1JpZ2h0ID8gTGVmdFRvUmlnaHQgOiBF
dXJvcGVhbk51bWJlcjsKKyAgICAgICAgICAgICAgICAgICAgY2FzZSBVX0VVUk9QRUFOX05VTUJF
UjoKKyAgICAgICAgICAgICAgICAgICAgICAgIG1fZGlyZWN0aW9uID0gbV9zdGF0dXMubGFzdFN0
cm9uZyA9PSBVX0xFRlRfVE9fUklHSFQgPyBVX0xFRlRfVE9fUklHSFQgOiBVX0VVUk9QRUFOX05V
TUJFUjsKICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAg
ICBkZWZhdWx0OgogICAgICAgICAgICAgICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7
CkBAIC04NzMsNyArODYxLDcgQEAgdm9pZCBCaWRpUmVzb2x2ZXI8SXRlcmF0b3IsIFJ1bj46OmNy
ZWF0ZUJpZGlSdW5zRm9yTGluZShjb25zdCBJdGVyYXRvciYgZW5kLCBWaXMKICAgICAgICAgICAg
IG1fcmVhY2hlZEVuZE9mTGluZSA9IHN0YXRlQXRFbmQubV9yZWFjaGVkRW5kT2ZMaW5lOwogICAg
ICAgICAgICAgbV9sYXN0QmVmb3JlRVQgPSBzdGF0ZUF0RW5kLm1fbGFzdEJlZm9yZUVUOwogICAg
ICAgICAgICAgbV9lbXB0eVJ1biA9IHN0YXRlQXRFbmQubV9lbXB0eVJ1bjsKLSAgICAgICAgICAg
IG1fZGlyZWN0aW9uID0gT3RoZXJOZXV0cmFsOworICAgICAgICAgICAgbV9kaXJlY3Rpb24gPSBV
X09USEVSX05FVVRSQUw7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogCkBAIC04OTcs
NyArODg1LDcgQEAgdm9pZCBCaWRpUmVzb2x2ZXI8SXRlcmF0b3IsIFJ1bj46OmNyZWF0ZUJpZGlS
dW5zRm9yTGluZShjb25zdCBJdGVyYXRvciYgZW5kLCBWaXMKICAgICAgICAgICAgICAgICBtX3Jl
YWNoZWRFbmRPZkxpbmUgPSBzdGF0ZUF0RW5kLm1fcmVhY2hlZEVuZE9mTGluZTsKICAgICAgICAg
ICAgICAgICBtX2xhc3RCZWZvcmVFVCA9IHN0YXRlQXRFbmQubV9sYXN0QmVmb3JlRVQ7CiAgICAg
ICAgICAgICAgICAgbV9lbXB0eVJ1biA9IHN0YXRlQXRFbmQubV9lbXB0eVJ1bjsKLSAgICAgICAg
ICAgICAgICBtX2RpcmVjdGlvbiA9IE90aGVyTmV1dHJhbDsKKyAgICAgICAgICAgICAgICBtX2Rp
cmVjdGlvbiA9IFVfT1RIRVJfTkVVVFJBTDsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAg
ICAgICAgIH0KICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
dGV4dC9TZWdtZW50ZWRTdHJpbmcuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvU2Vn
bWVudGVkU3RyaW5nLmgKaW5kZXggYWJkNzk4YWVjYTE3YTk3NjFmMmIxMWQ1ZWMxNzliYTVjNzQx
ODQyYy4uZDVmZTM2N2IzMjg5MGQxMjI3ODQ0NTA0ZDY3OGM1N2ZmYjI5YTk5YSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9TZWdtZW50ZWRTdHJpbmcuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1NlZ21lbnRlZFN0cmluZy5oCkBAIC0yNjEsNyAr
MjYxLDcgQEAgcHVibGljOgogCiAgICAgdm9pZCBhZHZhbmNlQW5kQVNTRVJUSWdub3JpbmdDYXNl
KFVDaGFyIGV4cGVjdGVkQ2hhcmFjdGVyKQogICAgIHsKLSAgICAgICAgQVNTRVJUX1VOVVNFRChl
eHBlY3RlZENoYXJhY3RlciwgV1RGOjpVbmljb2RlOjpmb2xkQ2FzZShjdXJyZW50Q2hhcigpKSA9
PSBXVEY6OlVuaWNvZGU6OmZvbGRDYXNlKGV4cGVjdGVkQ2hhcmFjdGVyKSk7CisgICAgICAgIEFT
U0VSVF9VTlVTRUQoZXhwZWN0ZWRDaGFyYWN0ZXIsIHVfZm9sZENhc2UoY3VycmVudENoYXIoKSwg
VV9GT0xEX0NBU0VfREVGQVVMVCkgPT0gdV9mb2xkQ2FzZShleHBlY3RlZENoYXJhY3RlciwgVV9G
T0xEX0NBU0VfREVGQVVMVCkpOwogICAgICAgICBhZHZhbmNlKCk7CiAgICAgfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1RleHRCb3VuZGFyaWVzLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvVGV4dEJvdW5kYXJpZXMuY3BwCmluZGV4IGMxZjk5
MmRhZjAzMjBiZDY2Yzc1YzVmNzA3N2QzZjVhYzUyYjgyMzkuLmM0NmZiODVmOTZjODY1OGZiZDg5
MzQ3ZDkzZDUwYjJhMDI5NjdkMGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L3RleHQvVGV4dEJvdW5kYXJpZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3Rl
eHQvVGV4dEJvdW5kYXJpZXMuY3BwCkBAIC0zMSw5ICszMSw2IEBACiAjaW5jbHVkZSA8d3RmL3Rl
eHQvU3RyaW5nSW1wbC5oPgogI2luY2x1ZGUgPHd0Zi91bmljb2RlL1VuaWNvZGUuaD4KIAotdXNp
bmcgbmFtZXNwYWNlIFdURjsKLXVzaW5nIG5hbWVzcGFjZSBVbmljb2RlOwotCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKIGludCBlbmRPZkZpcnN0V29yZEJvdW5kYXJ5Q29udGV4dChjb25zdCBVQ2hh
ciogY2hhcmFjdGVycywgaW50IGxlbmd0aCkKQEAgLTY5LDkgKzY2LDggQEAgaW50IGZpbmROZXh0
V29yZEZyb21JbmRleChjb25zdCBVQ2hhciogY2hhcnMsIGludCBsZW4sIGludCBwb3NpdGlvbiwg
Ym9vbCBmb3J3YXIKICAgICBpZiAoZm9yd2FyZCkgewogICAgICAgICBwb3NpdGlvbiA9IHRleHRC
cmVha0ZvbGxvd2luZyhpdCwgcG9zaXRpb24pOwogICAgICAgICB3aGlsZSAocG9zaXRpb24gIT0g
VGV4dEJyZWFrRG9uZSkgewotICAgICAgICAgICAgLy8gV2Ugc3RvcCBzZWFyY2hpbmcgd2hlbiB0
aGUgY2hhcmFjdGVyIHByZWNlZWRpbmcgdGhlIGJyZWFrCi0gICAgICAgICAgICAvLyBpcyBhbHBo
YW51bWVyaWMuCi0gICAgICAgICAgICBpZiAocG9zaXRpb24gPCBsZW4gJiYgaXNBbHBoYW51bWVy
aWMoY2hhcnNbcG9zaXRpb24gLSAxXSkpCisgICAgICAgICAgICAvLyBXZSBzdG9wIHNlYXJjaGlu
ZyB3aGVuIHRoZSBjaGFyYWN0ZXIgcHJlY2VlZGluZyB0aGUgYnJlYWsgaXMgYWxwaGFudW1lcmlj
LgorICAgICAgICAgICAgaWYgKHBvc2l0aW9uIDwgbGVuICYmIHVfaXNhbG51bShjaGFyc1twb3Np
dGlvbiAtIDFdKSkKICAgICAgICAgICAgICAgICByZXR1cm4gcG9zaXRpb247CiAKICAgICAgICAg
ICAgIHBvc2l0aW9uID0gdGV4dEJyZWFrRm9sbG93aW5nKGl0LCBwb3NpdGlvbik7CkBAIC04MSw5
ICs3Nyw4IEBAIGludCBmaW5kTmV4dFdvcmRGcm9tSW5kZXgoY29uc3QgVUNoYXIqIGNoYXJzLCBp
bnQgbGVuLCBpbnQgcG9zaXRpb24sIGJvb2wgZm9yd2FyCiAgICAgfSBlbHNlIHsKICAgICAgICAg
cG9zaXRpb24gPSB0ZXh0QnJlYWtQcmVjZWRpbmcoaXQsIHBvc2l0aW9uKTsKICAgICAgICAgd2hp
bGUgKHBvc2l0aW9uICE9IFRleHRCcmVha0RvbmUpIHsKLSAgICAgICAgICAgIC8vIFdlIHN0b3Ag
c2VhcmNoaW5nIHdoZW4gdGhlIGNoYXJhY3RlciBmb2xsb3dpbmcgdGhlIGJyZWFrCi0gICAgICAg
ICAgICAvLyBpcyBhbHBoYW51bWVyaWMuCi0gICAgICAgICAgICBpZiAocG9zaXRpb24gPiAwICYm
IGlzQWxwaGFudW1lcmljKGNoYXJzW3Bvc2l0aW9uXSkpCisgICAgICAgICAgICAvLyBXZSBzdG9w
IHNlYXJjaGluZyB3aGVuIHRoZSBjaGFyYWN0ZXIgZm9sbG93aW5nIHRoZSBicmVhayBpcyBhbHBo
YW51bWVyaWMuCisgICAgICAgICAgICBpZiAocG9zaXRpb24gPiAwICYmIHVfaXNhbG51bShjaGFy
c1twb3NpdGlvbl0pKQogICAgICAgICAgICAgICAgIHJldHVybiBwb3NpdGlvbjsKIAogICAgICAg
ICAgICAgcG9zaXRpb24gPSB0ZXh0QnJlYWtQcmVjZWRpbmcoaXQsIHBvc2l0aW9uKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvVGV4dEJvdW5kYXJpZXMuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvVGV4dEJvdW5kYXJpZXMuaAppbmRleCAxMjJlMGU4
N2NiMDljY2EzYTZlZDlkNWQ5NDM5ZjU2NWUyY2VlNTNiLi4xNjM4NmE3YTdlOTA5ZmIyZmMzOGE3
MWZmZDM2YjEwNTJlNTM0MzZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90
ZXh0L1RleHRCb3VuZGFyaWVzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9U
ZXh0Qm91bmRhcmllcy5oCkBAIC0zMCwxMiArMzAsMTUgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCi0gICAgLy8gRklYTUU6IHRoaXMgZnVuY3Rpb24gd29uJ3QgYmUgbmVlZGVkIHRvZ2V0aGVy
IHdpdGggdGhlIGZ1bmN0aW9uCi0gICAgLy8gaXQgY2FsbHMgd2hlbiBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTIwNjU2Ci0gICAgLy8gd2lsbCBiZSBmaXhlZC4KLSAg
ICBpbmxpbmUgYm9vbCByZXF1aXJlc0NvbnRleHRGb3JXb3JkQm91bmRhcnkoVUNoYXIzMiBjaCkK
KyAgICBpbmxpbmUgYm9vbCByZXF1aXJlc0NvbnRleHRGb3JXb3JkQm91bmRhcnkoVUNoYXIzMiBj
aGFyYWN0ZXIpCiAgICAgewotICAgICAgICByZXR1cm4gV1RGOjpVbmljb2RlOjpyZXF1aXJlc0Nv
bXBsZXhDb250ZXh0Rm9yV29yZEJyZWFraW5nKGNoKTsKKyAgICAgICAgLy8gRklYTUU6IFRoaXMg
ZnVuY3Rpb24gd29uJ3QgYmUgbmVlZGVkIHdoZW4gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTEyMDY1NiBpcyBmaXhlZC4KKworICAgICAgICAvLyBXZSBjYW4gZ2V0IHJp
ZCBvZiB0aGlzIGNvbnN0YW50IGlmIHdlIHJlcXVpcmUgYSBuZXdlciB2ZXJzaW9uIG9mIHRoZSBJ
Q1UgaGVhZGVycy4KKyAgICAgICAgY29uc3QgaW50IFdLX1VfTEJfQ09ORElUSU9OQUxfSkFQQU5F
U0VfU1RBUlRFUiA9IDM3OworCisgICAgICAgIGludCBsaW5lQnJlYWsgPSB1X2dldEludFByb3Bl
cnR5VmFsdWUoY2hhcmFjdGVyLCBVQ0hBUl9MSU5FX0JSRUFLKTsKKyAgICAgICAgcmV0dXJuIGxp
bmVCcmVhayA9PSBVX0xCX0NPTVBMRVhfQ09OVEVYVCB8fCBsaW5lQnJlYWsgPT0gV0tfVV9MQl9D
T05ESVRJT05BTF9KQVBBTkVTRV9TVEFSVEVSIHx8IGxpbmVCcmVhayA9PSBVX0xCX0lERU9HUkFQ
SElDOwogICAgIH0KIAogICAgIGludCBlbmRPZkZpcnN0V29yZEJvdW5kYXJ5Q29udGV4dChjb25z
dCBVQ2hhciogY2hhcmFjdGVycywgaW50IGxlbmd0aCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS90ZXh0L21hYy9UZXh0Qm91bmRhcmllcy5tbSBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL3RleHQvbWFjL1RleHRCb3VuZGFyaWVzLm1tCmluZGV4IGJkN2RkZjhhMGY4Mjhl
NTY2M2RjNGZhMjJiN2JhNDIwODE3MzIzZDUuLmZmMWRmZDIwZGM1ODRmODhjNjA2Njg2ZDljNTM3
NTFlMDZkY2FjNWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvbWFj
L1RleHRCb3VuZGFyaWVzLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvbWFj
L1RleHRCb3VuZGFyaWVzLm1tCkBAIC0yNiw4ICsyNiw2IEBACiAjaW1wb3J0ICJjb25maWcuaCIK
ICNpbXBvcnQgIlRleHRCb3VuZGFyaWVzLmgiCiAKLXVzaW5nIG5hbWVzcGFjZSBXVEY6OlVuaWNv
ZGU7Ci0KIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogdm9pZCBmaW5kV29yZEJvdW5kYXJ5KGNvbnN0
IFVDaGFyKiBjaGFycywgaW50IGxlbiwgaW50IHBvc2l0aW9uLCBpbnQqIHN0YXJ0LCBpbnQqIGVu
ZCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9Qb3B1cE1lbnVXaW4u
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1BvcHVwTWVudVdpbi5jcHAKaW5kZXgg
OGU4YmU0Zjk5ZjdjNzc1OGZhZGY1ODE3ZTdhMmMzMDMxZTNiYzg1OS4uMDg2ZmM4MDI1ZDE4ZGM5
OGUxYTY0ZTk1OGY2MWI5NWNmYjIwNWNlMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vd2luL1BvcHVwTWVudVdpbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
d2luL1BvcHVwTWVudVdpbi5jcHAKQEAgLTY0Nyw3ICs2NDcsNyBAQCB2b2lkIFBvcHVwTWVudVdp
bjo6cGFpbnQoY29uc3QgSW50UmVjdCYgZGFtYWdlUmVjdCwgSERDIGhkYykKIAogICAgICAgICBT
dHJpbmcgaXRlbVRleHQgPSBjbGllbnQoKS0+aXRlbVRleHQoaW5kZXgpOwogICAgICAgICAgICAg
Ci0gICAgICAgIFRleHREaXJlY3Rpb24gZGlyZWN0aW9uID0gKGl0ZW1UZXh0LmRlZmF1bHRXcml0
aW5nRGlyZWN0aW9uKCkgPT0gV1RGOjpVbmljb2RlOjpSaWdodFRvTGVmdCkgPyBSVEwgOiBMVFI7
CisgICAgICAgIFRleHREaXJlY3Rpb24gZGlyZWN0aW9uID0gKGl0ZW1UZXh0LmRlZmF1bHRXcml0
aW5nRGlyZWN0aW9uKCkgPT0gVV9SSUdIVF9UT19MRUZUKSA/IFJUTCA6IExUUjsKICAgICAgICAg
VGV4dFJ1biB0ZXh0UnVuKGl0ZW1UZXh0LCAwLCAwLCBUZXh0UnVuOjpBbGxvd1RyYWlsaW5nRXhw
YW5zaW9uLCBkaXJlY3Rpb24pOwogCiAgICAgICAgIGNvbnRleHQuc2V0RmlsbENvbG9yKG9wdGlv
blRleHRDb2xvciwgQ29sb3JTcGFjZURldmljZVJHQik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS93aW4vV2ViQ29yZVRleHRSZW5kZXJlci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS93aW4vV2ViQ29yZVRleHRSZW5kZXJlci5jcHAKaW5kZXggOTEyYzhkNjY3Y2Vm
ODNjYzI3Y2Y0NzMyNTljNjUyNTMyZmE3Zjc2MS4uZjU0MGZmYmYwMjE5N2U0MWE3NzYzYmFhZmFk
ODk1YmNmNDAwZWYzYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1dl
YkNvcmVUZXh0UmVuZGVyZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9X
ZWJDb3JlVGV4dFJlbmRlcmVyLmNwcApAQCAtNDAsOCArNDAsOCBAQCBzdGF0aWMgYm9vbCBzaG91
bGRVc2VGb250U21vb3RoaW5nID0gdHJ1ZTsKIHN0YXRpYyBib29sIGlzT25lTGVmdFRvUmlnaHRS
dW4oY29uc3QgVGV4dFJ1biYgcnVuKQogewogICAgIGZvciAoaW50IGkgPSAwOyBpIDwgcnVuLmxl
bmd0aCgpOyBpKyspIHsKLSAgICAgICAgV1RGOjpVbmljb2RlOjpEaXJlY3Rpb24gZGlyZWN0aW9u
ID0gV1RGOjpVbmljb2RlOjpkaXJlY3Rpb24ocnVuW2ldKTsKLSAgICAgICAgaWYgKGRpcmVjdGlv
biA9PSBXVEY6OlVuaWNvZGU6OlJpZ2h0VG9MZWZ0IHx8IGRpcmVjdGlvbiA+IFdURjo6VW5pY29k
ZTo6T3RoZXJOZXV0cmFsKQorICAgICAgICBVQ2hhckRpcmVjdGlvbiBkaXJlY3Rpb24gPSB1X2No
YXJEaXJlY3Rpb24ocnVuW2ldKTsKKyAgICAgICAgaWYgKGRpcmVjdGlvbiA9PSBVX1JJR0hUX1RP
X0xFRlQgfHwgZGlyZWN0aW9uID4gVV9PVEhFUl9ORVVUUkFMKQogICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOwogICAgIH0KICAgICByZXR1cm4gdHJ1ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9CaWRpUnVuLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvQmlkaVJ1
bi5oCmluZGV4IDliZjhlZDM5NDc1YWY4YTU1YzNlOGMxNmZlYmFkZGM1Mjc3NjkwOTguLjVmMTQw
ODI2NTI2MGUzYTFlNDQ1NGM1NGU5YmIyNzM2ZGE1ZmYzNzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9CaWRpUnVuLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L0JpZGlSdW4uaApAQCAtMzQsNyArMzQsNyBAQCBjbGFzcyBCaWRpQ29udGV4dDsKIGNsYXNzIElu
bGluZUJveDsKIAogc3RydWN0IEJpZGlSdW4gOiBCaWRpQ2hhcmFjdGVyUnVuIHsKLSAgICBCaWRp
UnVuKGludCBzdGFydCwgaW50IHN0b3AsIFJlbmRlck9iamVjdCogb2JqZWN0LCBCaWRpQ29udGV4
dCogY29udGV4dCwgV1RGOjpVbmljb2RlOjpEaXJlY3Rpb24gZGlyKQorICAgIEJpZGlSdW4oaW50
IHN0YXJ0LCBpbnQgc3RvcCwgUmVuZGVyT2JqZWN0KiBvYmplY3QsIEJpZGlDb250ZXh0KiBjb250
ZXh0LCBVQ2hhckRpcmVjdGlvbiBkaXIpCiAgICAgICAgIDogQmlkaUNoYXJhY3RlclJ1bihzdGFy
dCwgc3RvcCwgY29udGV4dCwgZGlyKQogICAgICAgICAsIG1fb2JqZWN0KG9iamVjdCkKICAgICAg
ICAgLCBtX2JveCgwKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0lubGlu
ZUZsb3dCb3guaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVGbG93Qm94LmgKaW5k
ZXggNjM5ODlhOWVhOGU0NWU0Njk1N2U2OWFjODMxYjQ3NTQ3ZWZkZDYyOS4uOGYzNzI3MmUwOTEy
YTdkYmU3OWZhNDdjMmIzZmJiYzJhZmE2ZjA1YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL0lubGluZUZsb3dCb3guaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
SW5saW5lRmxvd0JveC5oCkBAIC0zMzIsOSArMzMyLDkgQEAgcHJvdGVjdGVkOgogICAgIHVuc2ln
bmVkIG1faGFzQW5ub3RhdGlvbnNCZWZvcmUgOiAxOwogICAgIHVuc2lnbmVkIG1faGFzQW5ub3Rh
dGlvbnNBZnRlciA6IDE7CiAKLSAgICB1bnNpZ25lZCBtX2xpbmVCcmVha0JpZGlTdGF0dXNFb3Ig
OiA1OyAvLyBXVEY6OlVuaWNvZGU6OkRpcmVjdGlvbgotICAgIHVuc2lnbmVkIG1fbGluZUJyZWFr
QmlkaVN0YXR1c0xhc3RTdHJvbmcgOiA1OyAvLyBXVEY6OlVuaWNvZGU6OkRpcmVjdGlvbgotICAg
IHVuc2lnbmVkIG1fbGluZUJyZWFrQmlkaVN0YXR1c0xhc3QgOiA1OyAvLyBXVEY6OlVuaWNvZGU6
OkRpcmVjdGlvbgorICAgIHVuc2lnbmVkIG1fbGluZUJyZWFrQmlkaVN0YXR1c0VvciA6IDU7IC8v
IFVDaGFyRGlyZWN0aW9uCisgICAgdW5zaWduZWQgbV9saW5lQnJlYWtCaWRpU3RhdHVzTGFzdFN0
cm9uZyA6IDU7IC8vIFVDaGFyRGlyZWN0aW9uCisgICAgdW5zaWduZWQgbV9saW5lQnJlYWtCaWRp
U3RhdHVzTGFzdCA6IDU7IC8vIFVDaGFyRGlyZWN0aW9uCiAKICAgICAvLyBFbmQgb2YgUm9vdElu
bGluZUJveC1zcGVjaWZpYyBtZW1iZXJzLgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvSW5saW5lSXRlcmF0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9Jbmxp
bmVJdGVyYXRvci5oCmluZGV4IDhlYmFlNTNiMTRhOThiMzgwYjFjZDNkZGRkNmY2NzQ2NjkxY2Jm
ZWQuLjRjYzdlMDVlNDE1MjFjNzI4OTAyNThmZWRmZTk3ZDM3ZjIzZDdkN2YgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVJdGVyYXRvci5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVJdGVyYXRvci5oCkBAIC04OCw3ICs4OCw3IEBAIHB1Ymxp
YzoKICAgICBVQ2hhciBjaGFyYWN0ZXJBdCh1bnNpZ25lZCkgY29uc3Q7CiAgICAgVUNoYXIgY3Vy
cmVudCgpIGNvbnN0OwogICAgIFVDaGFyIHByZXZpb3VzSW5TYW1lTm9kZSgpIGNvbnN0OwotICAg
IEFMV0FZU19JTkxJTkUgV1RGOjpVbmljb2RlOjpEaXJlY3Rpb24gZGlyZWN0aW9uKCkgY29uc3Q7
CisgICAgQUxXQVlTX0lOTElORSBVQ2hhckRpcmVjdGlvbiBkaXJlY3Rpb24oKSBjb25zdDsKIAog
cHJpdmF0ZToKICAgICBSZW5kZXJFbGVtZW50KiBtX3Jvb3Q7CkBAIC0xMTAsMTIgKzExMCwxMiBA
QCBpbmxpbmUgYm9vbCBvcGVyYXRvciE9KGNvbnN0IElubGluZUl0ZXJhdG9yJiBpdDEsIGNvbnN0
IElubGluZUl0ZXJhdG9yJiBpdDIpCiAgICAgcmV0dXJuIGl0MS5tX3BvcyAhPSBpdDIubV9wb3Mg
fHwgaXQxLm1fb2JqICE9IGl0Mi5tX29iajsKIH0KIAotc3RhdGljIGlubGluZSBXVEY6OlVuaWNv
ZGU6OkRpcmVjdGlvbiBlbWJlZENoYXJGcm9tRGlyZWN0aW9uKFRleHREaXJlY3Rpb24gZGlyLCBF
VW5pY29kZUJpZGkgdW5pY29kZUJpZGkpCitzdGF0aWMgaW5saW5lIFVDaGFyRGlyZWN0aW9uIGVt
YmVkQ2hhckZyb21EaXJlY3Rpb24oVGV4dERpcmVjdGlvbiBkaXJlY3Rpb24sIEVVbmljb2RlQmlk
aSB1bmljb2RlQmlkaSkKIHsKICAgICB1c2luZyBuYW1lc3BhY2UgV1RGOjpVbmljb2RlOwogICAg
IGlmICh1bmljb2RlQmlkaSA9PSBFbWJlZCkKLSAgICAgICAgcmV0dXJuIGRpciA9PSBSVEwgPyBS
aWdodFRvTGVmdEVtYmVkZGluZyA6IExlZnRUb1JpZ2h0RW1iZWRkaW5nOwotICAgIHJldHVybiBk
aXIgPT0gUlRMID8gUmlnaHRUb0xlZnRPdmVycmlkZSA6IExlZnRUb1JpZ2h0T3ZlcnJpZGU7Cisg
ICAgICAgIHJldHVybiBkaXJlY3Rpb24gPT0gUlRMID8gVV9SSUdIVF9UT19MRUZUX0VNQkVERElO
RyA6IFVfTEVGVF9UT19SSUdIVF9FTUJFRERJTkc7CisgICAgcmV0dXJuIGRpcmVjdGlvbiA9PSBS
VEwgPyBVX1JJR0hUX1RPX0xFRlRfT1ZFUlJJREUgOiBVX0xFRlRfVE9fUklHSFRfT1ZFUlJJREU7
CiB9CiAKIHRlbXBsYXRlIDxjbGFzcyBPYnNlcnZlcj4KQEAgLTE2MSw3ICsxNjEsNyBAQCBzdGF0
aWMgaW5saW5lIHZvaWQgbm90aWZ5T2JzZXJ2ZXJXaWxsRXhpdE9iamVjdChPYnNlcnZlciogb2Jz
ZXJ2ZXIsIFJlbmRlck9iamVjdAogCiAgICAgLy8gT3RoZXJ3aXNlIHdlIHBvcCBhbnkgZW1iZWQv
b3ZlcnJpZGUgY2hhcmFjdGVyIHdlIGFkZGVkIHdoZW4gd2Ugb3BlbmVkIHRoaXMgdGFnLgogICAg
IGlmICghb2JzZXJ2ZXItPmluSXNvbGF0ZSgpKQotICAgICAgICBvYnNlcnZlci0+ZW1iZWQoV1RG
OjpVbmljb2RlOjpQb3BEaXJlY3Rpb25hbEZvcm1hdCwgRnJvbVN0eWxlT3JET00pOworICAgICAg
ICBvYnNlcnZlci0+ZW1iZWQoVV9QT1BfRElSRUNUSU9OQUxfRk9STUFULCBGcm9tU3R5bGVPckRP
TSk7CiB9CiAKIHN0YXRpYyBpbmxpbmUgYm9vbCBpc0l0ZXJhdG9yVGFyZ2V0KFJlbmRlck9iamVj
dCogb2JqZWN0KQpAQCAtMzkzLDE1ICszOTMsMTUgQEAgaW5saW5lIFVDaGFyIElubGluZUl0ZXJh
dG9yOjpwcmV2aW91c0luU2FtZU5vZGUoKSBjb25zdAogICAgIHJldHVybiBjaGFyYWN0ZXJBdCht
X3BvcyAtIDEpOwogfQogCi1BTFdBWVNfSU5MSU5FIFdURjo6VW5pY29kZTo6RGlyZWN0aW9uIElu
bGluZUl0ZXJhdG9yOjpkaXJlY3Rpb24oKSBjb25zdAorQUxXQVlTX0lOTElORSBVQ2hhckRpcmVj
dGlvbiBJbmxpbmVJdGVyYXRvcjo6ZGlyZWN0aW9uKCkgY29uc3QKIHsKLSAgICBpZiAoVUNoYXIg
YyA9IGN1cnJlbnQoKSkKLSAgICAgICAgcmV0dXJuIFdURjo6VW5pY29kZTo6ZGlyZWN0aW9uKGMp
OworICAgIGlmIChVQ2hhciBjaGFyYWN0ZXIgPSBjdXJyZW50KCkpCisgICAgICAgIHJldHVybiB1
X2NoYXJEaXJlY3Rpb24oY2hhcmFjdGVyKTsKIAogICAgIGlmIChtX29iaiAmJiBtX29iai0+aXNM
aXN0TWFya2VyKCkpCi0gICAgICAgIHJldHVybiBtX29iai0+c3R5bGUoKS0+aXNMZWZ0VG9SaWdo
dERpcmVjdGlvbigpID8gV1RGOjpVbmljb2RlOjpMZWZ0VG9SaWdodCA6IFdURjo6VW5pY29kZTo6
UmlnaHRUb0xlZnQ7CisgICAgICAgIHJldHVybiBtX29iai0+c3R5bGUoKS0+aXNMZWZ0VG9SaWdo
dERpcmVjdGlvbigpID8gVV9MRUZUX1RPX1JJR0hUIDogVV9SSUdIVF9UT19MRUZUOwogCi0gICAg
cmV0dXJuIFdURjo6VW5pY29kZTo6T3RoZXJOZXV0cmFsOworICAgIHJldHVybiBVX09USEVSX05F
VVRSQUw7CiB9CiAKIHRlbXBsYXRlPD4KQEAgLTQ3Nyw3ICs0NzcsNyBAQCBwdWJsaWM6CiAgICAg
Ym9vbCBpbklzb2xhdGUoKSBjb25zdCB7IHJldHVybiBtX25lc3RlZElzb2xhdGVDb3VudDsgfQog
CiAgICAgLy8gV2UgZG9uJ3QgY2FyZSBpZiB3ZSBlbmNvdW50ZXIgYmlkaSBkaXJlY3Rpb25hbCBv
dmVycmlkZXMuCi0gICAgdm9pZCBlbWJlZChXVEY6OlVuaWNvZGU6OkRpcmVjdGlvbiwgQmlkaUVt
YmVkZGluZ1NvdXJjZSkgeyB9CisgICAgdm9pZCBlbWJlZChVQ2hhckRpcmVjdGlvbiwgQmlkaUVt
YmVkZGluZ1NvdXJjZSkgeyB9CiAgICAgdm9pZCBjb21taXRFeHBsaWNpdEVtYmVkZGluZygpIHsg
fQogCiAgICAgdm9pZCBhZGRGYWtlUnVuSWZOZWNlc3NhcnkoUmVuZGVyT2JqZWN0KiBvYmosIHVu
c2lnbmVkIHBvcywgSW5saW5lQmlkaVJlc29sdmVyJiByZXNvbHZlcikKQEAgLTU0NCw4ICs1NDQs
OCBAQCBpbmxpbmUgdm9pZCBJbmxpbmVCaWRpUmVzb2x2ZXI6OmFwcGVuZFJ1bigpCiAgICAgICAg
IG1fc29yID0gbV9lb3I7CiAgICAgfQogCi0gICAgbV9kaXJlY3Rpb24gPSBXVEY6OlVuaWNvZGU6
Ok90aGVyTmV1dHJhbDsKLSAgICBtX3N0YXR1cy5lb3IgPSBXVEY6OlVuaWNvZGU6Ok90aGVyTmV1
dHJhbDsKKyAgICBtX2RpcmVjdGlvbiA9IFVfT1RIRVJfTkVVVFJBTDsKKyAgICBtX3N0YXR1cy5l
b3IgPSBVX09USEVSX05FVVRSQUw7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJCbG9jay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyQmxvY2suY3BwCmluZGV4IGYyNzkzNTVhODQ5MTc1NDRkOWNhZmMzYTk5YzA5MjMyM2RlNDA1
ZGMuLjBhZTc1ZTViMDZjMzY0MjU2MzU5YjI5YTViMzY3NGVjODlhNzY0YzQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcApAQCAtNDk1MiwxMiArNDk1Miw3IEBAIHN0
YXRpYyBSZW5kZXJTdHlsZSogc3R5bGVGb3JGaXJzdExldHRlcihSZW5kZXJPYmplY3QqIGZpcnN0
TGV0dGVyQmxvY2ssIFJlbmRlck9iCiAvLyAiaW5pdGlhbCIgKFBpKS4gImZpbmFsIiAoUGYpIGFu
ZCAib3RoZXIiIChQbykgcHVuY3R1YXRpb24gY2xhc3NlcyksIHRoYXQgcHJlY2VkZXMgb3IgZm9s
bG93cyB0aGUgZmlyc3QgbGV0dGVyIHNob3VsZCBiZSBpbmNsdWRlZCIKIHN0YXRpYyBpbmxpbmUg
Ym9vbCBpc1B1bmN0dWF0aW9uRm9yRmlyc3RMZXR0ZXIoVUNoYXIgYykKIHsKLSAgICBDaGFyQ2F0
ZWdvcnkgY2hhckNhdGVnb3J5ID0gY2F0ZWdvcnkoYyk7Ci0gICAgcmV0dXJuIGNoYXJDYXRlZ29y
eSA9PSBQdW5jdHVhdGlvbl9PcGVuCi0gICAgICAgIHx8IGNoYXJDYXRlZ29yeSA9PSBQdW5jdHVh
dGlvbl9DbG9zZQotICAgICAgICB8fCBjaGFyQ2F0ZWdvcnkgPT0gUHVuY3R1YXRpb25fSW5pdGlh
bFF1b3RlCi0gICAgICAgIHx8IGNoYXJDYXRlZ29yeSA9PSBQdW5jdHVhdGlvbl9GaW5hbFF1b3Rl
Ci0gICAgICAgIHx8IGNoYXJDYXRlZ29yeSA9PSBQdW5jdHVhdGlvbl9PdGhlcjsKKyAgICByZXR1
cm4gVV9HRVRfR0NfTUFTSyhjKSAmIChVX0dDX1BTX01BU0sgfCBVX0dDX1BFX01BU0sgfCBVX0dD
X1BJX01BU0sgfCBVX0dDX1BGX01BU0sgfCBVX0dDX1BPX01BU0spOwogfQogCiBzdGF0aWMgaW5s
aW5lIGJvb2wgc2hvdWxkU2tpcEZvckZpcnN0TGV0dGVyKFVDaGFyIGMpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2tMaW5lTGF5b3V0LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9ja0xpbmVMYXlvdXQuY3BwCmluZGV4IGE2ODRi
ZWE0NjY5ZjcyMjYzYmNjZjRiOWNjM2U5NzQ4NmQ4NDVjMTcuLjQ4ZThkNWE0MmFhYTI0OTBmM2Ew
MjZmNzgwYTEzMWY3ZTMwNjQyMjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJCbG9ja0xpbmVMYXlvdXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJCbG9ja0xpbmVMYXlvdXQuY3BwCkBAIC0xNzgsMTIgKzE3OCwxMiBAQCBzdGF0aWMg
dm9pZCBkZXRlcm1pbmVEaXJlY3Rpb25hbGl0eShUZXh0RGlyZWN0aW9uJiBkaXIsIElubGluZUl0
ZXJhdG9yIGl0ZXIpCiAgICAgICAgIGlmIChpdGVyLmF0UGFyYWdyYXBoU2VwYXJhdG9yKCkpCiAg
ICAgICAgICAgICByZXR1cm47CiAgICAgICAgIGlmIChVQ2hhciBjdXJyZW50ID0gaXRlci5jdXJy
ZW50KCkpIHsKLSAgICAgICAgICAgIERpcmVjdGlvbiBjaGFyRGlyZWN0aW9uID0gZGlyZWN0aW9u
KGN1cnJlbnQpOwotICAgICAgICAgICAgaWYgKGNoYXJEaXJlY3Rpb24gPT0gTGVmdFRvUmlnaHQp
IHsKKyAgICAgICAgICAgIFVDaGFyRGlyZWN0aW9uIGNoYXJEaXJlY3Rpb24gPSB1X2NoYXJEaXJl
Y3Rpb24oY3VycmVudCk7CisgICAgICAgICAgICBpZiAoY2hhckRpcmVjdGlvbiA9PSBVX0xFRlRf
VE9fUklHSFQpIHsKICAgICAgICAgICAgICAgICBkaXIgPSBMVFI7CiAgICAgICAgICAgICAgICAg
cmV0dXJuOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgaWYgKGNoYXJEaXJlY3Rpb24gPT0g
UmlnaHRUb0xlZnQgfHwgY2hhckRpcmVjdGlvbiA9PSBSaWdodFRvTGVmdEFyYWJpYykgeworICAg
ICAgICAgICAgaWYgKGNoYXJEaXJlY3Rpb24gPT0gVV9SSUdIVF9UT19MRUZUIHx8IGNoYXJEaXJl
Y3Rpb24gPT0gVV9SSUdIVF9UT19MRUZUX0FSQUJJQykgewogICAgICAgICAgICAgICAgIGRpciA9
IFJUTDsKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICB9CkBAIC0xMDUxLDcg
KzEwNTEsNyBAQCBpbmxpbmUgQmlkaVJ1biogUmVuZGVyQmxvY2tGbG93OjpoYW5kbGVUcmFpbGlu
Z1NwYWNlcyhCaWRpUnVuTGlzdDxCaWRpUnVuPiYgYmlkaQogICAgICAgICB3aGlsZSAoQmlkaUNv
bnRleHQqIHBhcmVudCA9IGJhc2VDb250ZXh0LT5wYXJlbnQoKSkKICAgICAgICAgICAgIGJhc2VD
b250ZXh0ID0gcGFyZW50OwogCi0gICAgICAgIEJpZGlSdW4qIG5ld1RyYWlsaW5nUnVuID0gbmV3
IChyZW5kZXJBcmVuYSgpKSBCaWRpUnVuKGZpcnN0U3BhY2UsIHRyYWlsaW5nU3BhY2VSdW4tPm1f
c3RvcCwgdHJhaWxpbmdTcGFjZVJ1bi0+bV9vYmplY3QsIGJhc2VDb250ZXh0LCBPdGhlck5ldXRy
YWwpOworICAgICAgICBCaWRpUnVuKiBuZXdUcmFpbGluZ1J1biA9IG5ldyAocmVuZGVyQXJlbmEo
KSkgQmlkaVJ1bihmaXJzdFNwYWNlLCB0cmFpbGluZ1NwYWNlUnVuLT5tX3N0b3AsIHRyYWlsaW5n
U3BhY2VSdW4tPm1fb2JqZWN0LCBiYXNlQ29udGV4dCwgVV9PVEhFUl9ORVVUUkFMKTsKICAgICAg
ICAgdHJhaWxpbmdTcGFjZVJ1bi0+bV9zdG9wID0gZmlyc3RTcGFjZTsKICAgICAgICAgaWYgKGRp
cmVjdGlvbiA9PSBMVFIpCiAgICAgICAgICAgICBiaWRpUnVucy5hZGRSdW4obmV3VHJhaWxpbmdS
dW4pOwpAQCAtMTA4Myw3ICsxMDgzLDcgQEAgdm9pZCBSZW5kZXJCbG9ja0Zsb3c6OmFwcGVuZEZs
b2F0aW5nT2JqZWN0VG9MYXN0TGluZShGbG9hdGluZ09iamVjdCogZmxvYXRpbmdPYmoKIC8vIEZJ
WE1FOiBUaGlzIHNob3VsZCBiZSBhIEJpZGlTdGF0dXMgY29uc3RydWN0b3Igb3IgY3JlYXRlIG1l
dGhvZC4KIHN0YXRpYyBpbmxpbmUgQmlkaVN0YXR1cyBzdGF0dXNXaXRoRGlyZWN0aW9uKFRleHRE
aXJlY3Rpb24gdGV4dERpcmVjdGlvbiwgYm9vbCBpc092ZXJyaWRlKQogewotICAgIFdURjo6VW5p
Y29kZTo6RGlyZWN0aW9uIGRpcmVjdGlvbiA9IHRleHREaXJlY3Rpb24gPT0gTFRSID8gTGVmdFRv
UmlnaHQgOiBSaWdodFRvTGVmdDsKKyAgICBVQ2hhckRpcmVjdGlvbiBkaXJlY3Rpb24gPSB0ZXh0
RGlyZWN0aW9uID09IExUUiA/IFVfTEVGVF9UT19SSUdIVCA6IFVfUklHSFRfVE9fTEVGVDsKICAg
ICBSZWZQdHI8QmlkaUNvbnRleHQ+IGNvbnRleHQgPSBCaWRpQ29udGV4dDo6Y3JlYXRlKHRleHRE
aXJlY3Rpb24gPT0gTFRSID8gMCA6IDEsIGRpcmVjdGlvbiwgaXNPdmVycmlkZSwgRnJvbVN0eWxl
T3JET00pOwogCiAgICAgLy8gVGhpcyBjb3BpZXMgQmlkaVN0YXR1cyBhbmQgbWF5IGNodXJuIHRo
ZSByZWYgb24gQmlkaUNvbnRleHQuIEkgZG91YnQgaXQgbWF0dGVycy4KQEAgLTMxMzIsNyArMzEz
Miw3IEBAIElubGluZUl0ZXJhdG9yIExpbmVCcmVha2VyOjpuZXh0U2VnbWVudEJyZWFrKElubGlu
ZUJpZGlSZXNvbHZlciYgcmVzb2x2ZXIsIExpbmVJCiAgICAgICAgICAgICAgICAgICAgICAgICBi
cmVha1dvcmRzID0gZmFsc2U7CiAgICAgICAgICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAg
ICAgICAgICBpZiAobWlkV29yZEJyZWFrICYmICFVMTZfSVNfVFJBSUwoYykgJiYgIShjYXRlZ29y
eShjKSAmIChNYXJrX05vblNwYWNpbmcgfCBNYXJrX0VuY2xvc2luZyB8IE1hcmtfU3BhY2luZ0Nv
bWJpbmluZykpKSB7CisgICAgICAgICAgICAgICAgICAgIGlmIChtaWRXb3JkQnJlYWsgJiYgIVUx
Nl9JU19UUkFJTChjKSAmJiAhKFVfR0VUX0dDX01BU0soYykgJiBVX0dDX01fTUFTSykpIHsKICAg
ICAgICAgICAgICAgICAgICAgICAgIC8vIFJlbWVtYmVyIHRoaXMgYXMgYSBicmVha2FibGUgcG9z
aXRpb24gaW4gY2FzZQogICAgICAgICAgICAgICAgICAgICAgICAgLy8gYWRkaW5nIHRoZSBlbmQg
d2lkdGggZm9yY2VzIGEgYnJlYWsuCiAgICAgICAgICAgICAgICAgICAgICAgICBsQnJlYWsubW92
ZVRvKGN1cnJlbnQubV9vYmosIGN1cnJlbnQubV9wb3MsIGN1cnJlbnQubV9uZXh0QnJlYWthYmxl
UG9zaXRpb24pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxp
c3RNYXJrZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpc3RNYXJrZXIu
Y3BwCmluZGV4IDljNTliYmMyMmU3M2JkNzkyNjE1MzJmZDE1NDAyNzk4ZDAzZDEyZjUuLmUzYTI5
YTNlMTAxYzJhNDJlM2RlZTc2ZGZmZTc3NmZlZmJjNDIxMTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0TWFya2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyTGlzdE1hcmtlci5jcHAKQEAgLTEzNTYsOCArMTM1Niw4IEBAIHZv
aWQgUmVuZGVyTGlzdE1hcmtlcjo6cGFpbnQoUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExh
eW91dFBvaW50JiBwYWludE9mZnNlCiAgICAgICAgIGNvbnRleHQtPmRyYXdUZXh0KGZvbnQsIHRl
eHRSdW4sIHRleHRPcmlnaW4pOwogICAgIGVsc2UgewogICAgICAgICAvLyBUZXh0IGlzIG5vdCBh
cmJpdHJhcnkuIFdlIGNhbiBqdWRnZSB3aGV0aGVyIGl0J3MgUlRMIGZyb20gdGhlIGZpcnN0IGNo
YXJhY3RlciwKLSAgICAgICAgLy8gYW5kIHdlIG9ubHkgbmVlZCB0byBoYW5kbGUgdGhlIGRpcmVj
dGlvbiBSaWdodFRvTGVmdCBmb3Igbm93LgotICAgICAgICBib29sIHRleHROZWVkc1JldmVyc2lu
ZyA9IGRpcmVjdGlvbihtX3RleHRbMF0pID09IFJpZ2h0VG9MZWZ0OworICAgICAgICAvLyBhbmQg
d2Ugb25seSBuZWVkIHRvIGhhbmRsZSB0aGUgZGlyZWN0aW9uIFVfUklHSFRfVE9fTEVGVCBmb3Ig
bm93LgorICAgICAgICBib29sIHRleHROZWVkc1JldmVyc2luZyA9IHVfY2hhckRpcmVjdGlvbiht
X3RleHRbMF0pID09IFVfUklHSFRfVE9fTEVGVDsKICAgICAgICAgU3RyaW5nQnVpbGRlciByZXZl
cnNlZFRleHQ7CiAgICAgICAgIGlmICh0ZXh0TmVlZHNSZXZlcnNpbmcpIHsKICAgICAgICAgICAg
IGludCBsZW5ndGggPSBtX3RleHQubGVuZ3RoKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyTWVudUxpc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlck1lbnVMaXN0LmNwcAppbmRleCAxNzI5Yjc1NjFhMGQwMGE1Nzg0YzZlZmRjYTc5NzFl
NDM2M2EzODBhLi5lY2RkNTJkODIwMmQ2OGEwOTFlZjEyNDc2MmY0MWQzNTg4ODc2YmZmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTWVudUxpc3QuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNZW51TGlzdC5jcHAKQEAgLTExOCw3ICsx
MTgsNyBAQCB2b2lkIFJlbmRlck1lbnVMaXN0OjphZGp1c3RJbm5lclN0eWxlKCkKICAgICAgICAg
Ly8gSXRlbXMgaW4gdGhlIHBvcHVwIHdpbGwgbm90IHJlc3BlY3QgdGhlIENTUyB0ZXh0LWFsaWdu
IGFuZCBkaXJlY3Rpb24gcHJvcGVydGllcywKICAgICAgICAgLy8gc28gd2UgbXVzdCBhZGp1c3Qg
b3VyIG93biBzdHlsZSB0byBtYXRjaC4KICAgICAgICAgaW5uZXJTdHlsZS0+c2V0VGV4dEFsaWdu
KExFRlQpOwotICAgICAgICBUZXh0RGlyZWN0aW9uIGRpcmVjdGlvbiA9IChtX2J1dHRvblRleHQg
JiYgbV9idXR0b25UZXh0LT50ZXh0KCktPmRlZmF1bHRXcml0aW5nRGlyZWN0aW9uKCkgPT0gV1RG
OjpVbmljb2RlOjpSaWdodFRvTGVmdCkgPyBSVEwgOiBMVFI7CisgICAgICAgIFRleHREaXJlY3Rp
b24gZGlyZWN0aW9uID0gKG1fYnV0dG9uVGV4dCAmJiBtX2J1dHRvblRleHQtPnRleHQoKS0+ZGVm
YXVsdFdyaXRpbmdEaXJlY3Rpb24oKSA9PSBVX1JJR0hUX1RPX0xFRlQpID8gUlRMIDogTFRSOwog
ICAgICAgICBpbm5lclN0eWxlLT5zZXREaXJlY3Rpb24oZGlyZWN0aW9uKTsKICAgICB9IGVsc2Ug
aWYgKG1fb3B0aW9uU3R5bGUgJiYgZG9jdW1lbnQoKS5wYWdlKCktPmNocm9tZSgpLnNlbGVjdEl0
ZW1BbGlnbm1lbnRGb2xsb3dzTWVudVdyaXRpbmdEaXJlY3Rpb24oKSkgewogICAgICAgICBpZiAo
KG1fb3B0aW9uU3R5bGUtPmRpcmVjdGlvbigpICE9IGlubmVyU3R5bGUtPmRpcmVjdGlvbigpIHx8
IG1fb3B0aW9uU3R5bGUtPnVuaWNvZGVCaWRpKCkgIT0gaW5uZXJTdHlsZS0+dW5pY29kZUJpZGko
KSkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dC5jcHAKaW5kZXggNTJiNmQ4OGEz
OGJjODQzYjc2ZjBlMzlmMTg4ZjIyZmMxY2M4NzcwNS4uYjU0ODdlZjQxNTA0NzI1NzgwMDc2ZDMy
ZGRkYmI3OThmNWFhZDFmYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlclRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0LmNw
cApAQCAtOTksNiArOTksOCBAQCBwcml2YXRlOgogCiBzdGF0aWMgdm9pZCBtYWtlQ2FwaXRhbGl6
ZWQoU3RyaW5nKiBzdHJpbmcsIFVDaGFyIHByZXZpb3VzKQogeworICAgIC8vIEZJWE1FOiBOZWVk
IHRvIGNoYW5nZSB0aGlzIHRvIHVzZSB1X3N0clRvVGl0bGUgaW5zdGVhZCBvZiB1X3RvdGl0bGUg
YW5kIHRvIGNvbnNpZGVyIGxvY2FsZS4KKwogICAgIGlmIChzdHJpbmctPmlzTnVsbCgpKQogICAg
ICAgICByZXR1cm47CiAKQEAgLTEyOSw3ICsxMzEsNyBAQCBzdGF0aWMgdm9pZCBtYWtlQ2FwaXRh
bGl6ZWQoU3RyaW5nKiBzdHJpbmcsIFVDaGFyIHByZXZpb3VzKQogICAgIGludDMyX3Qgc3RhcnRP
ZldvcmQgPSB0ZXh0QnJlYWtGaXJzdChib3VuZGFyeSk7CiAgICAgZm9yIChlbmRPZldvcmQgPSB0
ZXh0QnJlYWtOZXh0KGJvdW5kYXJ5KTsgZW5kT2ZXb3JkICE9IFRleHRCcmVha0RvbmU7IHN0YXJ0
T2ZXb3JkID0gZW5kT2ZXb3JkLCBlbmRPZldvcmQgPSB0ZXh0QnJlYWtOZXh0KGJvdW5kYXJ5KSkg
ewogICAgICAgICBpZiAoc3RhcnRPZldvcmQpIC8vIElnbm9yZSBmaXJzdCBjaGFyIG9mIHByZXZp
b3VzIHN0cmluZwotICAgICAgICAgICAgcmVzdWx0LmFwcGVuZChzdHJpbmdJbXBsW3N0YXJ0T2ZX
b3JkIC0gMV0gPT0gbm9CcmVha1NwYWNlID8gbm9CcmVha1NwYWNlIDogdG9UaXRsZUNhc2Uoc3Ry
aW5nV2l0aFByZXZpb3VzW3N0YXJ0T2ZXb3JkXSkpOworICAgICAgICAgICAgcmVzdWx0LmFwcGVu
ZChzdHJpbmdJbXBsW3N0YXJ0T2ZXb3JkIC0gMV0gPT0gbm9CcmVha1NwYWNlID8gbm9CcmVha1Nw
YWNlIDogdV90b3RpdGxlKHN0cmluZ1dpdGhQcmV2aW91c1tzdGFydE9mV29yZF0pKTsKICAgICAg
ICAgZm9yIChpbnQgaSA9IHN0YXJ0T2ZXb3JkICsgMTsgaSA8IGVuZE9mV29yZDsgaSsrKQogICAg
ICAgICAgICAgcmVzdWx0LmFwcGVuZChzdHJpbmdJbXBsW2kgLSAxXSk7CiAgICAgfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jvb3RJbmxpbmVCb3guY3BwIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1Jvb3RJbmxpbmVCb3guY3BwCmluZGV4IGFiMjUzZDIyNjRlN2Iz
ZGQyMGFiZTNiZGY0ZDBiZmE0MDYzMzVjNWUuLmRlNzJhZDQ4ODFkODk3OWM1ZDNkMTE5MjkxMDZl
YTM0YjgzOTBiYTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9Sb290SW5s
aW5lQm94LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUm9vdElubGluZUJveC5j
cHAKQEAgLTc1NSw3ICs3NTUsNyBAQCBJbmxpbmVCb3gqIFJvb3RJbmxpbmVCb3g6OmNsb3Nlc3RM
ZWFmQ2hpbGRGb3JMb2dpY2FsTGVmdFBvc2l0aW9uKGludCBsZWZ0UG9zaXRpbwogCiBCaWRpU3Rh
dHVzIFJvb3RJbmxpbmVCb3g6OmxpbmVCcmVha0JpZGlTdGF0dXMoKSBjb25zdAogeyAKLSAgICBy
ZXR1cm4gQmlkaVN0YXR1cyhzdGF0aWNfY2FzdDxXVEY6OlVuaWNvZGU6OkRpcmVjdGlvbj4obV9s
aW5lQnJlYWtCaWRpU3RhdHVzRW9yKSwgc3RhdGljX2Nhc3Q8V1RGOjpVbmljb2RlOjpEaXJlY3Rp
b24+KG1fbGluZUJyZWFrQmlkaVN0YXR1c0xhc3RTdHJvbmcpLCBzdGF0aWNfY2FzdDxXVEY6OlVu
aWNvZGU6OkRpcmVjdGlvbj4obV9saW5lQnJlYWtCaWRpU3RhdHVzTGFzdCksIG1fbGluZUJyZWFr
Q29udGV4dCk7CisgICAgcmV0dXJuIEJpZGlTdGF0dXMoc3RhdGljX2Nhc3Q8VUNoYXJEaXJlY3Rp
b24+KG1fbGluZUJyZWFrQmlkaVN0YXR1c0VvciksIHN0YXRpY19jYXN0PFVDaGFyRGlyZWN0aW9u
PihtX2xpbmVCcmVha0JpZGlTdGF0dXNMYXN0U3Ryb25nKSwgc3RhdGljX2Nhc3Q8VUNoYXJEaXJl
Y3Rpb24+KG1fbGluZUJyZWFrQmlkaVN0YXR1c0xhc3QpLCBtX2xpbmVCcmVha0NvbnRleHQpOwog
fQogCiB2b2lkIFJvb3RJbmxpbmVCb3g6OnNldExpbmVCcmVha0luZm8oUmVuZGVyT2JqZWN0KiBv
YmosIHVuc2lnbmVkIGJyZWFrUG9zLCBjb25zdCBCaWRpU3RhdHVzJiBzdGF0dXMpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRm9udERhdGEuY3BwIGIvU291cmNlL1dlYkNvcmUv
c3ZnL1NWR0ZvbnREYXRhLmNwcAppbmRleCBiM2JlZDhjZWE1MWNhODVhYzE3OTY2NzU5M2FmOTVj
ZTNmYjQwZDE3Li5iZGY1MGMyNmQ4YzZiMGM1MjRjODRmOWIwZTQ3YjY1NmRkYmNlYTI1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRm9udERhdGEuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdGb250RGF0YS5jcHAKQEAgLTI5Nyw3ICsyOTcsNyBAQCBTdHJpbmcgU1ZH
Rm9udERhdGE6OmNyZWF0ZVN0cmluZ1dpdGhNaXJyb3JlZENoYXJhY3RlcnMoY29uc3QgVUNoYXIq
IGNoYXJhY3RlcnMsCiAgICAgd2hpbGUgKGkgPCBsZW5ndGgpIHsKICAgICAgICAgVUNoYXIzMiBj
aGFyYWN0ZXI7CiAgICAgICAgIFUxNl9ORVhUKGNoYXJhY3RlcnMsIGksIGxlbmd0aCwgY2hhcmFj
dGVyKTsKLSAgICAgICAgbWlycm9yZWRDaGFyYWN0ZXJzLmFwcGVuZChtaXJyb3JlZENoYXIoY2hh
cmFjdGVyKSk7CisgICAgICAgIG1pcnJvcmVkQ2hhcmFjdGVycy5hcHBlbmQodV9jaGFyTWlycm9y
KGNoYXJhY3RlcikpOwogICAgIH0KIAogICAgIHJldHVybiBtaXJyb3JlZENoYXJhY3RlcnMudG9T
dHJpbmcoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3htbC9YUGF0aFBhcnNlci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS94bWwvWFBhdGhQYXJzZXIuY3BwCmluZGV4IDgyNjk4NWJlNGMzZjc0
YmI0NGFmNGQ2YmNkMjI3OTkwYmQ4NjA1NjkuLjEzNjFmYjk2NTk3Mzg4YjlhZDgxMzZmMGFjN2Q5
MDhjMjJjMTlhZjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3htbC9YUGF0aFBhcnNlci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUveG1sL1hQYXRoUGFyc2VyLmNwcApAQCAtNjQsMjAgKzY0
LDE3IEBAIHN0cnVjdCBQYXJzZXI6OlRva2VuIHsKIAogZW51bSBYTUxDYXQgeyBOYW1lU3RhcnQs
IE5hbWVDb250LCBOb3RQYXJ0T2ZOYW1lIH07CiAKLXN0YXRpYyBYTUxDYXQgY2hhckNhdChVQ2hh
ciBhQ2hhcikKK3N0YXRpYyBYTUxDYXQgY2hhckNhdChVQ2hhciBjaGFyYWN0ZXIpCiB7Ci0gICAg
dXNpbmcgbmFtZXNwYWNlIFdURjsKLSAgICB1c2luZyBuYW1lc3BhY2UgVW5pY29kZTsKLQotICAg
IGlmIChhQ2hhciA9PSAnXycpCisgICAgaWYgKGNoYXJhY3RlciA9PSAnXycpCiAgICAgICAgIHJl
dHVybiBOYW1lU3RhcnQ7CiAKLSAgICBpZiAoYUNoYXIgPT0gJy4nIHx8IGFDaGFyID09ICctJykK
KyAgICBpZiAoY2hhcmFjdGVyID09ICcuJyB8fCBjaGFyYWN0ZXIgPT0gJy0nKQogICAgICAgICBy
ZXR1cm4gTmFtZUNvbnQ7Ci0gICAgQ2hhckNhdGVnb3J5IGNhdGVnb3J5ID0gVW5pY29kZTo6Y2F0
ZWdvcnkoYUNoYXIpOwotICAgIGlmIChjYXRlZ29yeSAmIChMZXR0ZXJfVXBwZXJjYXNlIHwgTGV0
dGVyX0xvd2VyY2FzZSB8IExldHRlcl9PdGhlciB8IExldHRlcl9UaXRsZWNhc2UgfCBOdW1iZXJf
TGV0dGVyKSkKKyAgICB1bnNpZ25lZCBjaGFyYWN0ZXJUeXBlTWFzayA9IFVfR0VUX0dDX01BU0so
Y2hhcmFjdGVyKTsKKyAgICBpZiAoY2hhcmFjdGVyVHlwZU1hc2sgJiAoVV9HQ19MVV9NQVNLIHwg
VV9HQ19MTF9NQVNLIHwgVV9HQ19MT19NQVNLIHwgVV9HQ19MVF9NQVNLIHwgVV9HQ19OTF9NQVNL
KSkKICAgICAgICAgcmV0dXJuIE5hbWVTdGFydDsKLSAgICBpZiAoY2F0ZWdvcnkgJiAoTWFya19O
b25TcGFjaW5nIHwgTWFya19TcGFjaW5nQ29tYmluaW5nIHwgTWFya19FbmNsb3NpbmcgfCBMZXR0
ZXJfTW9kaWZpZXIgfCBOdW1iZXJfRGVjaW1hbERpZ2l0KSkKKyAgICBpZiAoY2hhcmFjdGVyVHlw
ZU1hc2sgJiAoVV9HQ19NX01BU0sgfCBVX0dDX0xNX01BU0sgfCBVX0dDX05EX01BU0spKQogICAg
ICAgICByZXR1cm4gTmFtZUNvbnQ7CiAgICAgcmV0dXJuIE5vdFBhcnRPZk5hbWU7CiB9Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>