<?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>206972</bug_id>
          
          <creation_ts>2020-01-29 15:37:52 -0800</creation_ts>
          <short_desc>Parser needs to restore unary stack state when backtracking</short_desc>
          <delta_ts>2020-01-30 13:23:26 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Keith Miller">keith_miller</reporter>
          <assigned_to name="Keith Miller">keith_miller</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>ljharb</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>ross.kirsling</cc>
    
    <cc>saam</cc>
    
    <cc>tzagallo</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1612735</commentid>
    <comment_count>0</comment_count>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2020-01-29 15:37:52 -0800</bug_when>
    <thetext>Parser needs to restore unary stack state when backtracking</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1612756</commentid>
    <comment_count>1</comment_count>
      <attachid>389200</attachid>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2020-01-29 16:36:10 -0800</bug_when>
    <thetext>Created attachment 389200
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1612761</commentid>
    <comment_count>2</comment_count>
      <attachid>389200</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2020-01-29 16:50:20 -0800</bug_when>
    <thetext>Comment on attachment 389200
Patch

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

nice

Maybe add some more tests. like test both strict and non strict. And maybe some of the other tests we were dealing with yesterday. Might also be good to try different unary ops, etc.

&gt; Source/JavaScriptCore/ChangeLog:8
&gt; +        Previously we would try to parse possibly stale stack entries

&quot;stack entries&quot; =&gt; &quot;unary operator. stack entries&quot;

&gt; Source/JavaScriptCore/bytecompiler/NodesCodegen.cpp:177
&gt; +    static constexpr unsigned thisLength = sizeof(&quot;this&quot;) - 1; // don&apos;t count \0

why?

why not strlen?

&gt; Source/JavaScriptCore/parser/SyntaxChecker.h:340
&gt; +    void assignmentStackAppend(int&amp; hasAssignements, int, int, int, int, Operator) { hasAssignements = 1; }

hasAssignments =&gt; assignmentStackDepth

&gt; Source/JavaScriptCore/parser/SyntaxChecker.h:341
&gt; +    int createAssignment(const JSTokenLocation&amp;, int&amp; hasAssignements, int, int, int, int) { hasAssignements = 0; return AssignmentExpr; }

hasAssignments =&gt; assignmentStackDepth</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1612762</commentid>
    <comment_count>3</comment_count>
      <attachid>389200</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2020-01-29 16:51:23 -0800</bug_when>
    <thetext>Comment on attachment 389200
Patch

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

&gt; Source/JavaScriptCore/ChangeLog:11
&gt; +        reparsing. Additionally, this patch fixes an issue where the

&quot;reparsing&quot; =&gt; &quot;reparsing after backtracking&quot;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1612835</commentid>
    <comment_count>4</comment_count>
      <attachid>389200</attachid>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2020-01-29 19:43:08 -0800</bug_when>
    <thetext>Comment on attachment 389200
Patch

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

&gt;&gt; Source/JavaScriptCore/ChangeLog:8
&gt;&gt; +        Previously we would try to parse possibly stale stack entries
&gt; 
&gt; &quot;stack entries&quot; =&gt; &quot;unary operator. stack entries&quot;

Fixed, I&apos;m assuming the period is a typo?

&gt;&gt; Source/JavaScriptCore/ChangeLog:11
&gt;&gt; +        reparsing. Additionally, this patch fixes an issue where the
&gt; 
&gt; &quot;reparsing&quot; =&gt; &quot;reparsing after backtracking&quot;

Fixed.

&gt;&gt; Source/JavaScriptCore/bytecompiler/NodesCodegen.cpp:177
&gt;&gt; +    static constexpr unsigned thisLength = sizeof(&quot;this&quot;) - 1; // don&apos;t count \0
&gt; 
&gt; why?
&gt; 
&gt; why not strlen?

This way it can be constexpr thus it has more big brain-ness. :P

Fixed.

&gt;&gt; Source/JavaScriptCore/parser/SyntaxChecker.h:340
&gt;&gt; +    void assignmentStackAppend(int&amp; hasAssignements, int, int, int, int, Operator) { hasAssignements = 1; }
&gt; 
&gt; hasAssignments =&gt; assignmentStackDepth

That seems inaccurate since it&apos;s not incremented. I think I&apos;m going to leave it as is.

&gt;&gt; Source/JavaScriptCore/parser/SyntaxChecker.h:341
&gt;&gt; +    int createAssignment(const JSTokenLocation&amp;, int&amp; hasAssignements, int, int, int, int) { hasAssignements = 0; return AssignmentExpr; }
&gt; 
&gt; hasAssignments =&gt; assignmentStackDepth

Ditto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1612836</commentid>
    <comment_count>5</comment_count>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2020-01-29 19:45:16 -0800</bug_when>
    <thetext>The function-toString-parentheses.js failures are just incorrect. The crash in the bytecode-cache test is because it asserts there&apos;s a codeBlock but since it exception&apos;d the first time there wasn&apos;t one. I changed that test to only run in default mode.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1612837</commentid>
    <comment_count>6</comment_count>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2020-01-29 19:47:37 -0800</bug_when>
    <thetext>rdar://problem/58862199</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1612871</commentid>
    <comment_count>7</comment_count>
      <attachid>389230</attachid>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2020-01-29 23:11:03 -0800</bug_when>
    <thetext>Created attachment 389230
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1612872</commentid>
    <comment_count>8</comment_count>
      <attachid>389230</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2020-01-29 23:42:13 -0800</bug_when>
    <thetext>Comment on attachment 389230
Patch for landing

Rejecting attachment 389230 from commit-queue.

Failed to run &quot;[&apos;/Volumes/Data/EWS/WebKit/Tools/Scripts/webkit-patch&apos;, &apos;--status-host=webkit-queues.webkit.org&apos;, &apos;--bot-id=webkit-cq-03&apos;, &apos;build&apos;, &apos;--no-clean&apos;, &apos;--no-update&apos;, &apos;--build-style=release&apos;, &apos;--port=mac&apos;]&quot; exit_code: 2 cwd: /Volumes/Data/EWS/WebKit

Last 5000 characters of output:
RGET -DENABLE_XSLT -DU_HIDE_DEPRECATED_API -DU_DISABLE_RENAMING=1 -DU_SHOW_CPLUSPLUS_API=0 -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.14.sdk -fasm-blocks -fstrict-aliasing -Wdeprecated-declarations -Winvalid-offsetof -mmacosx-version-min=10.14 -g -fvisibility=hidden -fvisibility-inlines-hidden -fno-threadsafe-statics -Wno-sign-conversion -Winfinite-recursion -Wmove -Wcomma -Wblock-capture-autoreleasing -Wstrict-prototypes -Wrange-loop-analysis -Wno-semicolon-before-method-body -iquote /Volumes/Data/EWS/WebKit/WebKitBuild/JavaScriptCore.build/Release/JavaScriptCore.build/JavaScriptCore-generated-files.hmap -I/Volumes/Data/EWS/WebKit/WebKitBuild/JavaScriptCore.build/Release/JavaScriptCore.build/JavaScriptCore-own-target-headers.hmap -I/Volumes/Data/EWS/WebKit/WebKitBuild/JavaScriptCore.build/Release/JavaScriptCore.build/JavaScriptCore-all-target-headers.hmap -iquote /Volumes/Data/EWS/WebKit/WebKitBuild/JavaScriptCore.build/Release/JavaScriptCore.build/JavaScriptCore-project-headers.hmap -I/Volumes/Data/EWS/WebKit/WebKitBuild/Release/include -I/Volumes/Data/EWS/WebKit/WebKitBuild/Release/DerivedSources/JavaScriptCore -I. -I/Volumes/Data/EWS/WebKit/WebKitBuild/Release/usr/local/include -I/Volumes/Data/EWS/WebKit/WebKitBuild/JavaScriptCore.build/Release/JavaScriptCore.build/DerivedSources-normal/x86_64 -I/Volumes/Data/EWS/WebKit/WebKitBuild/JavaScriptCore.build/Release/JavaScriptCore.build/DerivedSources/x86_64 -I/Volumes/Data/EWS/WebKit/WebKitBuild/JavaScriptCore.build/Release/JavaScriptCore.build/DerivedSources -Wall -Wextra -Wcast-qual -Wchar-subscripts -Wconditional-uninitialized -Wextra-tokens -Wformat=2 -Winit-self -Wmissing-format-attribute -Wmissing-noreturn -Wpacked -Wpointer-arith -Wredundant-decls -Wundef -Wwrite-strings -Wexit-time-destructors -Wglobal-constructors -Wtautological-compare -Wimplicit-fallthrough -F/Volumes/Data/EWS/WebKit/WebKitBuild/Release -isystem /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.14.sdk/System/Library/Frameworks/System.framework/PrivateHeaders --system-header-prefix=unicode/ -include /Volumes/Data/EWS/WebKit/WebKitBuild/PrecompiledHeaders/JavaScriptCorePrefix-focfrejsjmfkulfpzqniyatstmxf/JavaScriptCorePrefix.h -MMD -MT dependencies -MF /Volumes/Data/EWS/WebKit/WebKitBuild/JavaScriptCore.build/Release/JavaScriptCore.build/Objects-normal/x86_64/UnifiedSource95.d --serialize-diagnostics /Volumes/Data/EWS/WebKit/WebKitBuild/JavaScriptCore.build/Release/JavaScriptCore.build/Objects-normal/x86_64/UnifiedSource95.dia -c /Volumes/Data/EWS/WebKit/WebKitBuild/Release/DerivedSources/JavaScriptCore/unified-sources/UnifiedSource95.cpp -o /Volumes/Data/EWS/WebKit/WebKitBuild/JavaScriptCore.build/Release/JavaScriptCore.build/Objects-normal/x86_64/UnifiedSource95.o

Failed to run &quot;[&apos;Tools/Scripts/build-webkit&apos;, &apos;--release&apos;]&quot; exit_code: 65
/JavaScriptCore-own-target-headers.hmap -I/Volumes/Data/EWS/WebKit/WebKitBuild/JavaScriptCore.build/Release/JavaScriptCore.build/JavaScriptCore-all-target-headers.hmap -iquote /Volumes/Data/EWS/WebKit/WebKitBuild/JavaScriptCore.build/Release/JavaScriptCore.build/JavaScriptCore-project-headers.hmap -I/Volumes/Data/EWS/WebKit/WebKitBuild/Release/include -I/Volumes/Data/EWS/WebKit/WebKitBuild/Release/DerivedSources/JavaScriptCore -I. -I/Volumes/Data/EWS/WebKit/WebKitBuild/Release/usr/local/include -I/Volumes/Data/EWS/WebKit/WebKitBuild/JavaScriptCore.build/Release/JavaScriptCore.build/DerivedSources-normal/x86_64 -I/Volumes/Data/EWS/WebKit/WebKitBuild/JavaScriptCore.build/Release/JavaScriptCore.build/DerivedSources/x86_64 -I/Volumes/Data/EWS/WebKit/WebKitBuild/JavaScriptCore.build/Release/JavaScriptCore.build/DerivedSources -Wall -Wextra -Wcast-qual -Wchar-subscripts -Wconditional-uninitialized -Wextra-tokens -Wformat=2 -Winit-self -Wmissing-format-attribute -Wmissing-noreturn -Wpacked -Wpointer-arith -Wredundant-decls -Wundef -Wwrite-strings -Wexit-time-destructors -Wglobal-constructors -Wtautological-compare -Wimplicit-fallthrough -F/Volumes/Data/EWS/WebKit/WebKitBuild/Release -isystem /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.14.sdk/System/Library/Frameworks/System.framework/PrivateHeaders --system-header-prefix=unicode/ -include /Volumes/Data/EWS/WebKit/WebKitBuild/PrecompiledHeaders/JavaScriptCorePrefix-focfrejsjmfkulfpzqniyatstmxf/JavaScriptCorePrefix.h -MMD -MT dependencies -MF /Volumes/Data/EWS/WebKit/WebKitBuild/JavaScriptCore.build/Release/JavaScriptCore.build/Objects-normal/x86_64/UnifiedSource95.d --serialize-diagnostics /Volumes/Data/EWS/WebKit/WebKitBuild/JavaScriptCore.build/Release/JavaScriptCore.build/Objects-normal/x86_64/UnifiedSource95.dia -c /Volumes/Data/EWS/WebKit/WebKitBuild/Release/DerivedSources/JavaScriptCore/unified-sources/UnifiedSource95.cpp -o /Volumes/Data/EWS/WebKit/WebKitBuild/JavaScriptCore.build/Release/JavaScriptCore.build/Objects-normal/x86_64/UnifiedSource95.o

Full output: https://webkit-queues.webkit.org/results/13313829</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1612950</commentid>
    <comment_count>9</comment_count>
      <attachid>389248</attachid>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2020-01-30 07:54:31 -0800</bug_when>
    <thetext>Created attachment 389248
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1612960</commentid>
    <comment_count>10</comment_count>
      <attachid>389248</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2020-01-30 08:25:46 -0800</bug_when>
    <thetext>Comment on attachment 389248
Patch for landing

Rejecting attachment 389248 from commit-queue.

Failed to run &quot;[&apos;/Volumes/Data/EWS/WebKit/Tools/Scripts/webkit-patch&apos;, &apos;--status-host=webkit-queues.webkit.org&apos;, &apos;--bot-id=webkit-cq-03&apos;, &apos;build&apos;, &apos;--no-clean&apos;, &apos;--no-update&apos;, &apos;--build-style=release&apos;, &apos;--port=mac&apos;]&quot; exit_code: 2 cwd: /Volumes/Data/EWS/WebKit

Last 5000 characters of output:
TITIONING -DENABLE_CHANNEL_MESSAGING -DENABLE_CONTENT_FILTERING -DENABLE_CSS_BOX_DECORATION_BREAK -DENABLE_CSS_COMPOSITING -DENABLE_CSS_CONIC_GRADIENTS -DENABLE_CSS_PAINTING_API -DENABLE_CSS_SCROLL_SNAP -DENABLE_CSS_SELECTORS_LEVEL4 -DENABLE_CSS_TRAILING_WORD -DENABLE_CSS_TYPED_OM -DENABLE_CURSOR_VISIBILITY -DENABLE_DARK_MODE_CSS -DENABLE_DATACUE_VALUE -DENABLE_DATALIST_ELEMENT -DENABLE_ENCRYPTED_MEDIA -DENABLE_EXPERIMENTAL_FEATURES -DENABLE_FILTERS_LEVEL_2 -DENABLE_FTL_JIT -DENABLE_FULLSCREEN_API -DENABLE_PICTURE_IN_PICTURE_API -DENABLE_GAMEPAD -DENABLE_GEOLOCATION -DENABLE_GPU_PROCESS -DENABLE_INDEXED_DATABASE -DENABLE_INDEXED_DATABASE_IN_WORKERS -DENABLE_INPUT_TYPE_COLOR -DENABLE_INSPECTOR_ALTERNATE_DISPATCHERS -DENABLE_INSPECTOR_TELEMETRY -DENABLE_INTERSECTION_OBSERVER -DENABLE_INTL -DENABLE_LAYOUT_FORMATTING_CONTEXT -DENABLE_LEGACY_CSS_VENDOR_PREFIXES -DENABLE_LEGACY_CUSTOM_PROTOCOL_MANAGER -DENABLE_LEGACY_ENCRYPTED_MEDIA -DENABLE_MATHML -DENABLE_MEDIA_CONTROLS_SCRIPT -DENABLE_MEDIA_SOURCE -DENABLE_MEDIA_STREAM -DENABLE_MEMORY_SAMPLER -DENABLE_METER_ELEMENT -DENABLE_MOUSE_CURSOR_SCALE -DENABLE_NETWORK_CACHE_SPECULATIVE_REVALIDATION -DENABLE_NETWORK_CACHE_STALE_WHILE_REVALIDATE -DENABLE_NOTIFICATIONS -DENABLE_PAYMENT_REQUEST -DENABLE_PDFKIT_PLUGIN -DENABLE_POINTER_EVENTS -DENABLE_POINTER_LOCK -DENABLE_PUBLIC_SUFFIX_LIST -DENABLE_REMOTE_INSPECTOR -DENABLE_RESIZE_OBSERVER -DENABLE_RESOURCE_LOAD_STATISTICS -DENABLE_RESOURCE_USAGE -DENABLE_RUBBER_BANDING -DENABLE_SANDBOX_EXTENSIONS -DENABLE_SERVER_PRECONNECT -DENABLE_SERVICE_CONTROLS -DENABLE_SERVICE_WORKER -DENABLE_SHAREABLE_RESOURCE -DENABLE_SPEECH_SYNTHESIS -DENABLE_STREAMS_API -DENABLE_SVG_FONTS -DENABLE_TELEPHONE_NUMBER_DETECTION -DENABLE_TEXT_AUTOSIZING -DENABLE_USERSELECT_ALL -DENABLE_USER_MESSAGE_HANDLERS -DENABLE_VARIATION_FONTS -DENABLE_VIDEO -DENABLE_VIDEO_PRESENTATION_MODE -DENABLE_VIDEO_TRACK -DENABLE_VIDEO_USES_ELEMENT_FULLSCREEN -DENABLE_WEBDRIVER_MOUSE_INTERACTIONS -DENABLE_WEBDRIVER_KEYBOARD_INTERACTIONS -DENABLE_WEBGL -DENABLE_WEBGL2 -DENABLE_WEBGPU -DENABLE_WEB_AUDIO -DENABLE_WEB_AUTHN -DENABLE_WEB_CRYPTO -DENABLE_WEB_RTC -DENABLE_WIRELESS_PLAYBACK_TARGET -DENABLE_XSLT -DU_HIDE_DEPRECATED_API -DU_DISABLE_RENAMING=1 -DU_SHOW_CPLUSPLUS_API=0 -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.14.sdk -fasm-blocks -fstrict-aliasing -Wdeprecated-declarations -Winvalid-offsetof -mmacosx-version-min=10.14 -g -fvisibility=hidden -fvisibility-inlines-hidden -fno-threadsafe-statics -Wno-sign-conversion -Winfinite-recursion -Wmove -Wcomma -Wblock-capture-autoreleasing -Wstrict-prototypes -Wrange-loop-analysis -Wno-semicolon-before-method-body -iquote /Volumes/Data/EWS/WebKit/WebKitBuild/JavaScriptCore.build/Release/JavaScriptCore.build/JavaScriptCore-generated-files.hmap -I/Volumes/Data/EWS/WebKit/WebKitBuild/JavaScriptCore.build/Release/JavaScriptCore.build/JavaScriptCore-own-target-headers.hmap -I/Volumes/Data/EWS/WebKit/WebKitBuild/JavaScriptCore.build/Release/JavaScriptCore.build/JavaScriptCore-all-target-headers.hmap -iquote /Volumes/Data/EWS/WebKit/WebKitBuild/JavaScriptCore.build/Release/JavaScriptCore.build/JavaScriptCore-project-headers.hmap -I/Volumes/Data/EWS/WebKit/WebKitBuild/Release/include -I/Volumes/Data/EWS/WebKit/WebKitBuild/Release/DerivedSources/JavaScriptCore -I. -I/Volumes/Data/EWS/WebKit/WebKitBuild/Release/usr/local/include -I/Volumes/Data/EWS/WebKit/WebKitBuild/JavaScriptCore.build/Release/JavaScriptCore.build/DerivedSources-normal/x86_64 -I/Volumes/Data/EWS/WebKit/WebKitBuild/JavaScriptCore.build/Release/JavaScriptCore.build/DerivedSources/x86_64 -I/Volumes/Data/EWS/WebKit/WebKitBuild/JavaScriptCore.build/Release/JavaScriptCore.build/DerivedSources -Wall -Wextra -Wcast-qual -Wchar-subscripts -Wconditional-uninitialized -Wextra-tokens -Wformat=2 -Winit-self -Wmissing-format-attribute -Wmissing-noreturn -Wpacked -Wpointer-arith -Wredundant-decls -Wundef -Wwrite-strings -Wexit-time-destructors -Wglobal-constructors -Wtautological-compare -Wimplicit-fallthrough -F/Volumes/Data/EWS/WebKit/WebKitBuild/Release -isystem /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.14.sdk/System/Library/Frameworks/System.framework/PrivateHeaders --system-header-prefix=unicode/ -include /Volumes/Data/EWS/WebKit/WebKitBuild/PrecompiledHeaders/JavaScriptCorePrefix-focfrejsjmfkulfpzqniyatstmxf/JavaScriptCorePrefix.h -MMD -MT dependencies -MF /Volumes/Data/EWS/WebKit/WebKitBuild/JavaScriptCore.build/Release/JavaScriptCore.build/Objects-normal/x86_64/UnifiedSource94.d --serialize-diagnostics /Volumes/Data/EWS/WebKit/WebKitBuild/JavaScriptCore.build/Release/JavaScriptCore.build/Objects-normal/x86_64/UnifiedSource94.dia -c /Volumes/Data/EWS/WebKit/WebKitBuild/Release/DerivedSources/JavaScriptCore/unified-sources/UnifiedSource94.cpp -o /Volumes/Data/EWS/WebKit/WebKitBuild/JavaScriptCore.build/Release/JavaScriptCore.build/Objects-normal/x86_64/UnifiedSource94.o

Full output: https://webkit-queues.webkit.org/results/13313979</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1612993</commentid>
    <comment_count>11</comment_count>
      <attachid>389256</attachid>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2020-01-30 09:35:45 -0800</bug_when>
    <thetext>Created attachment 389256
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1613049</commentid>
    <comment_count>12</comment_count>
      <attachid>389256</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2020-01-30 11:04:19 -0800</bug_when>
    <thetext>Comment on attachment 389256
Patch for landing

Clearing flags on attachment: 389256

Committed r255440: &lt;https://trac.webkit.org/changeset/255440&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1613050</commentid>
    <comment_count>13</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2020-01-30 11:04:21 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1613055</commentid>
    <comment_count>14</comment_count>
      <attachid>389256</attachid>
    <who name="Ross Kirsling">ross.kirsling</who>
    <bug_when>2020-01-30 11:25:34 -0800</bug_when>
    <thetext>Comment on attachment 389256
Patch for landing

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

&gt; Source/JavaScriptCore/ChangeLog:13
&gt; +        expressions. Intrestingly, this was not tested in test262.

Can we make a test262 issue?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1613093</commentid>
    <comment_count>15</comment_count>
      <attachid>389256</attachid>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2020-01-30 12:39:48 -0800</bug_when>
    <thetext>Comment on attachment 389256
Patch for landing

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

&gt;&gt; Source/JavaScriptCore/ChangeLog:13
&gt;&gt; +        expressions. Intrestingly, this was not tested in test262.
&gt; 
&gt; Can we make a test262 issue?

I’ll file an issue, but I doubt I’ll have the bandwidth to make the test. It seems like there’s a general problem that test262 doesn’t test early errors inside functions. This means it doesn’t stress out SyntaxChecker...</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>389200</attachid>
            <date>2020-01-29 16:36:10 -0800</date>
            <delta_ts>2020-01-29 23:11:01 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-206972-20200129163609.patch</filename>
            <type>text/plain</type>
            <size>49812</size>
            <attacher name="Keith Miller">keith_miller</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU1MTE0CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBh
ZGQxNGVlMjViZGU1Y2VjYzc3ZGZhNDE3ZDY0MDAzODdlMmJjMDk4Li4yNDZlMTQxNjY4OGQ4NzY3
ZDRhZDJlNjMzNGI5OTliMjZkOTY3YWQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw3NiBAQAorMjAyMC0wMS0yOSAgS2VpdGggTWlsbGVyICA8a2VpdGhfbWlsbGVyQGFwcGxl
LmNvbT4KKworICAgICAgICBQYXJzZXIgbmVlZHMgdG8gcmVzdG9yZSB1bmFyeSBzdGFjayBzdGF0
ZSB3aGVuIGJhY2t0cmFja2luZworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MjA2OTcyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgUHJldmlvdXNseSB3ZSB3b3VsZCB0cnkgdG8gcGFyc2UgcG9zc2libHkgc3Rh
bGUgc3RhY2sgZW50cmllcworICAgICAgICBhZnRlciBiYWNrdHJhY2tpbmcgZnJvbSBhIHBhcnNl
IGVycm9yLiAgVGhpcyB3b3VsZCBjYXVzZSB1cyB0bworICAgICAgICB0aGluayBvbmUgdG9rZW4g
d2FzIGEgZGlmZmVyZW50IHRva2VuIHdoaWxlCisgICAgICAgIHJlcGFyc2luZy4gQWRkaXRpb25h
bGx5LCB0aGlzIHBhdGNoIGZpeGVzIGFuIGlzc3VlIHdoZXJlIHRoZQorICAgICAgICBzeW50YXgg
Y2hlY2tlciB3b3VsZCB0aGluayBhc3NpZ25tZW50IGV4cHJlc3Npb25zIHdlcmUgcmVzb2x2ZQor
ICAgICAgICBleHByZXNzaW9ucy4gSW50cmVzdGluZ2x5LCB0aGlzIHdhcyBub3QgdGVzdGVkIGlu
IHRlc3QyNjIuCisKKyAgICAgICAgTGFzdGx5LCBJIHRyaWVkIGFkZGluZyBzb21lIGFzc2VydGlv
bnMgdG8gaW1wcm92ZSBoZWxwIGRpYWdub3NlCisgICAgICAgIHdoZW4gb3VyIHNvdXJjZSB0ZXh0
IGxvY2F0aW9ucyBhcmUgaW5jb3JyZWN0LgorCisgICAgICAgICogYnl0ZWNvbXBpbGVyL0J5dGVj
b2RlR2VuZXJhdG9yLmg6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0RXhw
cmVzc2lvbkluZm8pOgorICAgICAgICAqIGJ5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwOgor
ICAgICAgICAoSlNDOjpUaGlzTm9kZTo6ZW1pdEJ5dGVjb2RlKToKKyAgICAgICAgKEpTQzo6UmVz
b2x2ZU5vZGU6OmVtaXRCeXRlY29kZSk6CisgICAgICAgIChKU0M6OkVtcHR5VmFyRXhwcmVzc2lv
bjo6ZW1pdEJ5dGVjb2RlKToKKyAgICAgICAgKEpTQzo6RW1wdHlMZXRFeHByZXNzaW9uOjplbWl0
Qnl0ZWNvZGUpOgorICAgICAgICAoSlNDOjpGb3JJbk5vZGU6OmVtaXRMb29wSGVhZGVyKToKKyAg
ICAgICAgKEpTQzo6Rm9yT2ZOb2RlOjplbWl0Qnl0ZWNvZGUpOgorICAgICAgICAoSlNDOjpEZWZp
bmVGaWVsZE5vZGU6OmVtaXRCeXRlY29kZSk6CisgICAgICAgICogcGFyc2VyL0FTVEJ1aWxkZXIu
aDoKKyAgICAgICAgKEpTQzo6QVNUQnVpbGRlcjo6dW5hcnlUb2tlblN0YWNrRGVwdGggY29uc3Qp
OgorICAgICAgICAoSlNDOjpBU1RCdWlsZGVyOjpzZXRVbmFyeVRva2VuU3RhY2tEZXB0aCk6Cisg
ICAgICAgICogcGFyc2VyL0xleGVyLmNwcDoKKyAgICAgICAgKEpTQzo6TGV4ZXI8VD46OkxleGVy
KToKKyAgICAgICAgKiBwYXJzZXIvTGV4ZXIuaDoKKyAgICAgICAgKEpTQzo6TGV4ZXI6OnNldExp
bmVOdW1iZXIpOgorICAgICAgICAqIHBhcnNlci9Ob2Rlcy5jcHA6CisgICAgICAgIChKU0M6OkZ1
bmN0aW9uTWV0YWRhdGFOb2RlOjpvcGVyYXRvcj09IGNvbnN0KToKKyAgICAgICAgKiBwYXJzZXIv
Tm9kZXMuaDoKKyAgICAgICAgKEpTQzo6VGhyb3dhYmxlRXhwcmVzc2lvbkRhdGE6OlRocm93YWJs
ZUV4cHJlc3Npb25EYXRhKToKKyAgICAgICAgKEpTQzo6VGhyb3dhYmxlRXhwcmVzc2lvbkRhdGE6
OnNldEV4Y2VwdGlvblNvdXJjZUNvZGUpOgorICAgICAgICAoSlNDOjpUaHJvd2FibGVFeHByZXNz
aW9uRGF0YTo6Y2hlY2tDb25zaXN0ZW5jeSBjb25zdCk6CisgICAgICAgICogcGFyc2VyL1BhcnNl
ci5jcHA6CisgICAgICAgIChKU0M6OlBhcnNlcjxMZXhlclR5cGU+Ojppc0Fycm93RnVuY3Rpb25Q
YXJhbWV0ZXJzKToKKyAgICAgICAgKEpTQzo6UGFyc2VyPExleGVyVHlwZT46OnBhcnNlU291cmNl
RWxlbWVudHMpOgorICAgICAgICAoSlNDOjpQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VNb2R1bGVT
b3VyY2VFbGVtZW50cyk6CisgICAgICAgIChKU0M6OlBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZVN0
YXRlbWVudExpc3RJdGVtKToKKyAgICAgICAgKEpTQzo6UGFyc2VyPExleGVyVHlwZT46OnBhcnNl
QXNzaWdubWVudEVsZW1lbnQpOgorICAgICAgICAoSlNDOjpQYXJzZXI8TGV4ZXJUeXBlPjo6cGFy
c2VGb3JTdGF0ZW1lbnQpOgorICAgICAgICAoSlNDOjpQYXJzZXI8TGV4ZXJUeXBlPjo6bWF5YmVQ
YXJzZUFzeW5jRnVuY3Rpb25EZWNsYXJhdGlvblN0YXRlbWVudCk6CisgICAgICAgIChKU0M6OlBh
cnNlcjxMZXhlclR5cGU+OjpwYXJzZUZ1bmN0aW9uSW5mbyk6CisgICAgICAgIChKU0M6OlBhcnNl
cjxMZXhlclR5cGU+OjpwYXJzZUNsYXNzKToKKyAgICAgICAgKEpTQzo6UGFyc2VyPExleGVyVHlw
ZT46OnBhcnNlRXhwb3J0RGVjbGFyYXRpb24pOgorICAgICAgICAoSlNDOjpQYXJzZXI8TGV4ZXJU
eXBlPjo6cGFyc2VBc3NpZ25tZW50RXhwcmVzc2lvbik6CisgICAgICAgIChKU0M6OlBhcnNlcjxM
ZXhlclR5cGU+OjpwYXJzZVlpZWxkRXhwcmVzc2lvbik6CisgICAgICAgIChKU0M6OlBhcnNlcjxM
ZXhlclR5cGU+OjpwYXJzZVByb3BlcnR5KToKKyAgICAgICAgKEpTQzo6UGFyc2VyPExleGVyVHlw
ZT46OnBhcnNlTWVtYmVyRXhwcmVzc2lvbik6CisgICAgICAgIChKU0M6OlBhcnNlcjxMZXhlclR5
cGU+OjpwYXJzZVVuYXJ5RXhwcmVzc2lvbik6CisgICAgICAgICogcGFyc2VyL1BhcnNlci5oOgor
ICAgICAgICAoSlNDOjpQYXJzZXI6OmxleEN1cnJlbnRUb2tlbkFnYWluVW5kZXJDdXJyZW50Q29u
dGV4dCk6CisgICAgICAgIChKU0M6OlBhcnNlcjo6aW50ZXJuYWxTYXZlUGFyc2VyU3RhdGUpOgor
ICAgICAgICAoSlNDOjpQYXJzZXI6OnJlc3RvcmVQYXJzZXJTdGF0ZSk6CisgICAgICAgIChKU0M6
OlBhcnNlcjo6aW50ZXJuYWxTYXZlU3RhdGUpOgorICAgICAgICAoSlNDOjpQYXJzZXI6OnN3YXBT
YXZlUG9pbnRGb3JFcnJvcik6CisgICAgICAgIChKU0M6OlBhcnNlcjo6Y3JlYXRlU2F2ZVBvaW50
KToKKyAgICAgICAgKEpTQzo6UGFyc2VyOjppbnRlcm5hbFJlc3RvcmVTdGF0ZSk6CisgICAgICAg
IChKU0M6OlBhcnNlcjo6cmVzdG9yZVNhdmVQb2ludFdpdGhFcnJvcik6CisgICAgICAgIChKU0M6
OlBhcnNlcjo6cmVzdG9yZVNhdmVQb2ludCk6CisgICAgICAgIChKU0M6OlBhcnNlcjo6Y3JlYXRl
U2F2ZVBvaW50Rm9yRXJyb3IpOiBEZWxldGVkLgorICAgICAgICAqIHBhcnNlci9QYXJzZXJUb2tl
bnMuaDoKKyAgICAgICAgKEpTQzo6SlNUZXh0UG9zaXRpb246OkpTVGV4dFBvc2l0aW9uKToKKyAg
ICAgICAgKEpTQzo6SlNUZXh0UG9zaXRpb246OmNoZWNrQ29uc2lzdGVuY3kpOgorICAgICAgICAq
IHBhcnNlci9TeW50YXhDaGVja2VyLmg6CisgICAgICAgIChKU0M6OlN5bnRheENoZWNrZXI6Om9w
ZXJhdG9yU3RhY2tQb3ApOgorCiAyMDIwLTAxLTI0ICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxl
LmNvbT4KIAogICAgICAgICBJbnRsT2JqZWN0J3MgY2FjaGVkIHN0cmluZ3Mgc2hvdWxkIGJlIGlt
bW9ydGFsIGFuZCBzYWZlIGZvciBjb25jdXJyZW50IGFjY2Vzcy4KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaAppbmRleCA0
MmM2MzAyNjBlZTZlYjhkYjYxNjMzODJmNjBmNjdjNWU4NDBmN2YwLi4xNDhhZWI2MzY1OGQyNzcz
NmQ3ZmJiMWZlMTg1NjAyNzViNmNjNDk1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oCkBAIC01OTMsNiArNTkzLDkg
QEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgICAgICBBU1NFUlQoZGl2b3Qub2Zmc2V0ID49IGRp
dm90U3RhcnQub2Zmc2V0KTsKICAgICAgICAgICAgIEFTU0VSVChkaXZvdEVuZC5vZmZzZXQgPj0g
ZGl2b3Qub2Zmc2V0KTsKIAorICAgICAgICAgICAgaWYgKG1faXNCdWlsdGluRnVuY3Rpb24pCisg
ICAgICAgICAgICAgICAgcmV0dXJuOworCiAgICAgICAgICAgICBpbnQgc291cmNlT2Zmc2V0ID0g
bV9zY29wZU5vZGUtPnNvdXJjZSgpLnN0YXJ0T2Zmc2V0KCk7CiAgICAgICAgICAgICB1bnNpZ25l
ZCBmaXJzdExpbmUgPSBtX3Njb3BlTm9kZS0+c291cmNlKCkuZmlyc3RMaW5lKCkub25lQmFzZWRJ
bnQoKTsKIApAQCAtNjE2LDggKzYxOSw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAg
dW5zaWduZWQgY29sdW1uID0gZGl2b3RPZmZzZXQgLSBsaW5lU3RhcnQ7CiAKICAgICAgICAgICAg
IHVuc2lnbmVkIGluc3RydWN0aW9uT2Zmc2V0ID0gaW5zdHJ1Y3Rpb25zKCkuc2l6ZSgpOwotICAg
ICAgICAgICAgaWYgKCFtX2lzQnVpbHRpbkZ1bmN0aW9uKQotICAgICAgICAgICAgICAgIG1fY29k
ZUJsb2NrLT5hZGRFeHByZXNzaW9uSW5mbyhpbnN0cnVjdGlvbk9mZnNldCwgZGl2b3RPZmZzZXQs
IHN0YXJ0T2Zmc2V0LCBlbmRPZmZzZXQsIGxpbmUsIGNvbHVtbik7CisgICAgICAgICAgICBtX2Nv
ZGVCbG9jay0+YWRkRXhwcmVzc2lvbkluZm8oaW5zdHJ1Y3Rpb25PZmZzZXQsIGRpdm90T2Zmc2V0
LCBzdGFydE9mZnNldCwgZW5kT2Zmc2V0LCBsaW5lLCBjb2x1bW4pOwogICAgICAgICB9CiAKIApk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rlc0NvZGVn
ZW4uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4u
Y3BwCmluZGV4IGFiOTZkOTUwNjNlNzc0ZDU3ZmQ4NGUzNTIzMmEwNmU1OTBjNzJkNGEuLjc2MDUx
YzIxYmVkYzNjMzU2YmE4ZmVmMGM5Y2VhYTZmNzIzNjg3YzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAKQEAgLTE3NCw4ICsx
NzQsOCBAQCBSZWdpc3RlcklEKiBUaGlzTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJh
dG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRzdAogICAgICAgICByZXR1cm4gMDsKIAogICAg
IFJlZ2lzdGVySUQqIHJlc3VsdCA9IGdlbmVyYXRvci5tb3ZlKGRzdCwgZ2VuZXJhdG9yLnRoaXNS
ZWdpc3RlcigpKTsKLSAgICBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIHRoaXNMZW5ndGggPSA0
OwotICAgIGdlbmVyYXRvci5lbWl0UHJvZmlsZVR5cGUoZ2VuZXJhdG9yLnRoaXNSZWdpc3Rlcigp
LCBwb3NpdGlvbigpLCBKU1RleHRQb3NpdGlvbigtMSwgcG9zaXRpb24oKS5vZmZzZXQgKyB0aGlz
TGVuZ3RoLCAtMSkpOworICAgIHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgdGhpc0xlbmd0aCA9
IHNpemVvZigidGhpcyIpIC0gMTsgLy8gZG9uJ3QgY291bnQgXDAKKyAgICBnZW5lcmF0b3IuZW1p
dFByb2ZpbGVUeXBlKGdlbmVyYXRvci50aGlzUmVnaXN0ZXIoKSwgcG9zaXRpb24oKSwgcG9zaXRp
b24oKSArIHRoaXNMZW5ndGgpOwogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKQEAgLTI1OCw3ICsy
NTgsNyBAQCBSZWdpc3RlcklEKiBSZXNvbHZlTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2Vu
ZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqCiAgICAgICAgIGlmIChkc3QgPT0gZ2VuZXJh
dG9yLmlnbm9yZWRSZXN1bHQoKSkKICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAg
ICAgIGdlbmVyYXRvci5lbWl0UHJvZmlsZVR5cGUobG9jYWwsIHZhciwgbV9wb3NpdGlvbiwgSlNU
ZXh0UG9zaXRpb24oLTEsIG1fcG9zaXRpb24ub2Zmc2V0ICsgbV9pZGVudC5sZW5ndGgoKSwgLTEp
KTsKKyAgICAgICAgZ2VuZXJhdG9yLmVtaXRQcm9maWxlVHlwZShsb2NhbCwgdmFyLCBtX3Bvc2l0
aW9uLCBtX3Bvc2l0aW9uICsgbV9pZGVudC5sZW5ndGgoKSk7CiAgICAgICAgIHJldHVybiBnZW5l
cmF0b3IubW92ZShkc3QsIGxvY2FsKTsKICAgICB9CiAgICAgCkBAIC0yNzAsNyArMjcwLDcgQEAg
UmVnaXN0ZXJJRCogUmVzb2x2ZU5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYg
Z2VuZXJhdG9yLCBSZWdpc3RlcklEKgogICAgIGdlbmVyYXRvci5lbWl0R2V0RnJvbVNjb3BlKHVu
Y2hlY2tlZFJlc3VsdC5nZXQoKSwgc2NvcGUuZ2V0KCksIHZhciwgVGhyb3dJZk5vdEZvdW5kKTsK
ICAgICBnZW5lcmF0b3IuZW1pdFREWkNoZWNrSWZOZWNlc3NhcnkodmFyLCB1bmNoZWNrZWRSZXN1
bHQuZ2V0KCksIG51bGxwdHIpOwogICAgIGdlbmVyYXRvci5tb3ZlKGZpbmFsRGVzdCwgdW5jaGVj
a2VkUmVzdWx0LmdldCgpKTsKLSAgICBnZW5lcmF0b3IuZW1pdFByb2ZpbGVUeXBlKGZpbmFsRGVz
dCwgdmFyLCBtX3Bvc2l0aW9uLCBKU1RleHRQb3NpdGlvbigtMSwgbV9wb3NpdGlvbi5vZmZzZXQg
KyBtX2lkZW50Lmxlbmd0aCgpLCAtMSkpOworICAgIGdlbmVyYXRvci5lbWl0UHJvZmlsZVR5cGUo
ZmluYWxEZXN0LCB2YXIsIG1fcG9zaXRpb24sIG1fcG9zaXRpb24gKyBtX2lkZW50Lmxlbmd0aCgp
KTsKICAgICByZXR1cm4gZmluYWxEZXN0OwogfQogCkBAIC0zMDg4LDExICszMDg4LDExIEBAIFJl
Z2lzdGVySUQqIEVtcHR5VmFyRXhwcmVzc2lvbjo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJh
dG9yJiBnZW5lcmF0b3IsIFJlZ2lzCiAKICAgICBWYXJpYWJsZSB2YXIgPSBnZW5lcmF0b3IudmFy
aWFibGUobV9pZGVudCk7CiAgICAgaWYgKFJlZ2lzdGVySUQqIGxvY2FsID0gdmFyLmxvY2FsKCkp
Ci0gICAgICAgIGdlbmVyYXRvci5lbWl0UHJvZmlsZVR5cGUobG9jYWwsIHZhciwgcG9zaXRpb24o
KSwgSlNUZXh0UG9zaXRpb24oLTEsIHBvc2l0aW9uKCkub2Zmc2V0ICsgbV9pZGVudC5sZW5ndGgo
KSwgLTEpKTsKKyAgICAgICAgZ2VuZXJhdG9yLmVtaXRQcm9maWxlVHlwZShsb2NhbCwgdmFyLCBw
b3NpdGlvbigpLCBwb3NpdGlvbigpICsgbV9pZGVudC5sZW5ndGgoKSk7CiAgICAgZWxzZSB7CiAg
ICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiBzY29wZSA9IGdlbmVyYXRvci5lbWl0UmVzb2x2ZVNj
b3BlKG51bGxwdHIsIHZhcik7CiAgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiB2YWx1ZSA9IGdl
bmVyYXRvci5lbWl0R2V0RnJvbVNjb3BlKGdlbmVyYXRvci5uZXdUZW1wb3JhcnkoKSwgc2NvcGUu
Z2V0KCksIHZhciwgRG9Ob3RUaHJvd0lmTm90Rm91bmQpOwotICAgICAgICBnZW5lcmF0b3IuZW1p
dFByb2ZpbGVUeXBlKHZhbHVlLmdldCgpLCB2YXIsIHBvc2l0aW9uKCksIEpTVGV4dFBvc2l0aW9u
KC0xLCBwb3NpdGlvbigpLm9mZnNldCArIG1faWRlbnQubGVuZ3RoKCksIC0xKSk7CisgICAgICAg
IGdlbmVyYXRvci5lbWl0UHJvZmlsZVR5cGUodmFsdWUuZ2V0KCksIHZhciwgcG9zaXRpb24oKSwg
cG9zaXRpb24oKSArIG1faWRlbnQubGVuZ3RoKCkpOwogICAgIH0KIAogICAgIHJldHVybiBudWxs
cHRyOwpAQCAtMzEwNywxMiArMzEwNywxMiBAQCBSZWdpc3RlcklEKiBFbXB0eUxldEV4cHJlc3Np
b246OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpcwogICAg
IFZhcmlhYmxlIHZhciA9IGdlbmVyYXRvci52YXJpYWJsZShtX2lkZW50KTsKICAgICBpZiAoUmVn
aXN0ZXJJRCogbG9jYWwgPSB2YXIubG9jYWwoKSkgewogICAgICAgICBnZW5lcmF0b3IuZW1pdExv
YWQobG9jYWwsIGpzVW5kZWZpbmVkKCkpOwotICAgICAgICBnZW5lcmF0b3IuZW1pdFByb2ZpbGVU
eXBlKGxvY2FsLCB2YXIsIHBvc2l0aW9uKCksIEpTVGV4dFBvc2l0aW9uKC0xLCBwb3NpdGlvbigp
Lm9mZnNldCArIG1faWRlbnQubGVuZ3RoKCksIC0xKSk7CisgICAgICAgIGdlbmVyYXRvci5lbWl0
UHJvZmlsZVR5cGUobG9jYWwsIHZhciwgcG9zaXRpb24oKSwgcG9zaXRpb24oKSArIG1faWRlbnQu
bGVuZ3RoKCkpOwogICAgIH0gZWxzZSB7CiAgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiBzY29w
ZSA9IGdlbmVyYXRvci5lbWl0UmVzb2x2ZVNjb3BlKG51bGxwdHIsIHZhcik7CiAgICAgICAgIFJl
ZlB0cjxSZWdpc3RlcklEPiB2YWx1ZSA9IGdlbmVyYXRvci5lbWl0TG9hZChudWxscHRyLCBqc1Vu
ZGVmaW5lZCgpKTsKICAgICAgICAgZ2VuZXJhdG9yLmVtaXRQdXRUb1Njb3BlKHNjb3BlLmdldCgp
LCB2YXIsIHZhbHVlLmdldCgpLCBnZW5lcmF0b3IuaXNTdHJpY3RNb2RlKCkgPyBUaHJvd0lmTm90
Rm91bmQgOiBEb05vdFRocm93SWZOb3RGb3VuZCwgSW5pdGlhbGl6YXRpb25Nb2RlOjpJbml0aWFs
aXphdGlvbik7Ci0gICAgICAgIGdlbmVyYXRvci5lbWl0UHJvZmlsZVR5cGUodmFsdWUuZ2V0KCks
IHZhciwgcG9zaXRpb24oKSwgSlNUZXh0UG9zaXRpb24oLTEsIHBvc2l0aW9uKCkub2Zmc2V0ICsg
bV9pZGVudC5sZW5ndGgoKSwgLTEpKTsgCisgICAgICAgIGdlbmVyYXRvci5lbWl0UHJvZmlsZVR5
cGUodmFsdWUuZ2V0KCksIHZhciwgcG9zaXRpb24oKSwgcG9zaXRpb24oKSArIG1faWRlbnQubGVu
Z3RoKCkpOyAKICAgICB9CiAKICAgICBnZW5lcmF0b3IubGlmdFREWkNoZWNrSWZQb3NzaWJsZSh2
YXIpOwpAQCAtMzMyOSw3ICszMzI5LDcgQEAgdm9pZCBGb3JJbk5vZGU6OmVtaXRMb29wSGVhZGVy
KEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIHByb3BlcnQKICAgICAg
ICAgICAgIGdlbmVyYXRvci5lbWl0RXhwcmVzc2lvbkluZm8oZGl2b3QoKSwgZGl2b3RTdGFydCgp
LCBkaXZvdEVuZCgpKTsKICAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0UHV0VG9TY29wZShzY29w
ZS5nZXQoKSwgdmFyLCBwcm9wZXJ0eU5hbWUsIGdlbmVyYXRvci5pc1N0cmljdE1vZGUoKSA/IFRo
cm93SWZOb3RGb3VuZCA6IERvTm90VGhyb3dJZk5vdEZvdW5kLCBJbml0aWFsaXphdGlvbk1vZGU6
Ok5vdEluaXRpYWxpemF0aW9uKTsKICAgICAgICAgfQotICAgICAgICBnZW5lcmF0b3IuZW1pdFBy
b2ZpbGVUeXBlKHByb3BlcnR5TmFtZSwgdmFyLCBtX2xleHByLT5wb3NpdGlvbigpLCBKU1RleHRQ
b3NpdGlvbigtMSwgbV9sZXhwci0+cG9zaXRpb24oKS5vZmZzZXQgKyBpZGVudC5sZW5ndGgoKSwg
LTEpKTsKKyAgICAgICAgZ2VuZXJhdG9yLmVtaXRQcm9maWxlVHlwZShwcm9wZXJ0eU5hbWUsIHZh
ciwgbV9sZXhwci0+cG9zaXRpb24oKSwgbV9sZXhwci0+cG9zaXRpb24oKSArIGlkZW50Lmxlbmd0
aCgpKTsKICAgICB9OwogCiAgICAgaWYgKG1fbGV4cHItPmlzUmVzb2x2ZU5vZGUoKSkgewpAQCAt
MzU4Niw3ICszNTg2LDcgQEAgdm9pZCBGb3JPZk5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdl
bmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBkc3QpCiAgICAgICAgICAgICAgICAgZ2Vu
ZXJhdG9yLmVtaXRFeHByZXNzaW9uSW5mbyhkaXZvdCgpLCBkaXZvdFN0YXJ0KCksIGRpdm90RW5k
KCkpOwogICAgICAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0UHV0VG9TY29wZShzY29wZS5nZXQo
KSwgdmFyLCB2YWx1ZSwgZ2VuZXJhdG9yLmlzU3RyaWN0TW9kZSgpID8gVGhyb3dJZk5vdEZvdW5k
IDogRG9Ob3RUaHJvd0lmTm90Rm91bmQsIEluaXRpYWxpemF0aW9uTW9kZTo6Tm90SW5pdGlhbGl6
YXRpb24pOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRQcm9maWxl
VHlwZSh2YWx1ZSwgdmFyLCBtX2xleHByLT5wb3NpdGlvbigpLCBKU1RleHRQb3NpdGlvbigtMSwg
bV9sZXhwci0+cG9zaXRpb24oKS5vZmZzZXQgKyBpZGVudC5sZW5ndGgoKSwgLTEpKTsKKyAgICAg
ICAgICAgIGdlbmVyYXRvci5lbWl0UHJvZmlsZVR5cGUodmFsdWUsIHZhciwgbV9sZXhwci0+cG9z
aXRpb24oKSwgbV9sZXhwci0+cG9zaXRpb24oKSArIGlkZW50Lmxlbmd0aCgpKTsKICAgICAgICAg
fSBlbHNlIGlmIChtX2xleHByLT5pc0RvdEFjY2Vzc29yTm9kZSgpKSB7CiAgICAgICAgICAgICBE
b3RBY2Nlc3Nvck5vZGUqIGFzc2lnbk5vZGUgPSBzdGF0aWNfY2FzdDxEb3RBY2Nlc3Nvck5vZGUq
PihtX2xleHByKTsKICAgICAgICAgICAgIGNvbnN0IElkZW50aWZpZXImIGlkZW50ID0gYXNzaWdu
Tm9kZS0+aWRlbnRpZmllcigpOwpAQCAtNDM1MCw3ICs0MzUwLDcgQEAgdm9pZCBEZWZpbmVGaWVs
ZE5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3Rl
cklEKikKICAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHNjb3BlID0gZ2VuZXJhdG9yLmVtaXRS
ZXNvbHZlU2NvcGUoZ2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgpLCB2YXIpOwogICAgICAgICBSZWZQ
dHI8UmVnaXN0ZXJJRD4gcHJpdmF0ZU5hbWUgPSBnZW5lcmF0b3IubmV3VGVtcG9yYXJ5KCk7CiAg
ICAgICAgIGdlbmVyYXRvci5lbWl0R2V0RnJvbVNjb3BlKHByaXZhdGVOYW1lLmdldCgpLCBzY29w
ZS5nZXQoKSwgdmFyLCBUaHJvd0lmTm90Rm91bmQpOwotICAgICAgICBnZW5lcmF0b3IuZW1pdFBy
b2ZpbGVUeXBlKHByaXZhdGVOYW1lLmdldCgpLCB2YXIsIG1fcG9zaXRpb24sIEpTVGV4dFBvc2l0
aW9uKC0xLCBtX3Bvc2l0aW9uLm9mZnNldCArIG1faWRlbnQtPmxlbmd0aCgpLCAtMSkpOworICAg
ICAgICBnZW5lcmF0b3IuZW1pdFByb2ZpbGVUeXBlKHByaXZhdGVOYW1lLmdldCgpLCB2YXIsIG1f
cG9zaXRpb24sIG1fcG9zaXRpb24gKyBtX2lkZW50LT5sZW5ndGgoKSk7CiAgICAgICAgIGdlbmVy
YXRvci5lbWl0Q2FsbERlZmluZVByb3BlcnR5KGdlbmVyYXRvci50aGlzUmVnaXN0ZXIoKSwgcHJp
dmF0ZU5hbWUuZ2V0KCksIHZhbHVlLmdldCgpLCBudWxscHRyLCBudWxscHRyLCBCeXRlY29kZUdl
bmVyYXRvcjo6UHJvcGVydHlDb25maWd1cmFibGUgfCBCeXRlY29kZUdlbmVyYXRvcjo6UHJvcGVy
dHlXcml0YWJsZSB8IEJ5dGVjb2RlR2VuZXJhdG9yOjpQcm9wZXJ0eUVudW1lcmFibGUsIG1fcG9z
aXRpb24pOwogICAgICAgICBicmVhazsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcGFyc2VyL0FTVEJ1aWxkZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJz
ZXIvQVNUQnVpbGRlci5oCmluZGV4IGRiZDUzYWU3NjA4NGYyZGE5Yjc1ZTc0ZjYxZjhhNzA0Yzc4
ZDM5NjAuLjRjNjE3MzBlZGVjOGFkZWJlOTVkNjlmYWE3MDVlYzFjMjBiZjVlOTggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvQVNUQnVpbGRlci5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvQVNUQnVpbGRlci5oCkBAIC05MjYsNiArOTI2LDE2IEBA
IHB1YmxpYzoKICAgICAgICAgdG9rZW5TdGFja0RlcHRoLS07CiAgICAgICAgIG1fdW5hcnlUb2tl
blN0YWNrLnJlbW92ZUxhc3QoKTsKICAgICB9CisKKyAgICBpbnQgdW5hcnlUb2tlblN0YWNrRGVw
dGgoKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fdW5hcnlUb2tlblN0YWNrLnNpemUo
KTsKKyAgICB9CisKKyAgICB2b2lkIHNldFVuYXJ5VG9rZW5TdGFja0RlcHRoKGludCBvbGREZXB0
aCkKKyAgICB7CisgICAgICAgIG1fdW5hcnlUb2tlblN0YWNrLnNocmluayhvbGREZXB0aCk7Cisg
ICAgfQogICAgIAogICAgIHZvaWQgYXNzaWdubWVudFN0YWNrQXBwZW5kKGludCYgYXNzaWdubWVu
dFN0YWNrRGVwdGgsIEV4cHJlc3Npb25Ob2RlKiBub2RlLCBjb25zdCBKU1RleHRQb3NpdGlvbiYg
c3RhcnQsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdCwgaW50IGFzc2lnbm1lbnRDb3VudCwg
T3BlcmF0b3Igb3ApCiAgICAgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Bh
cnNlci9MZXhlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL0xleGVyLmNwcApp
bmRleCBjMzQxZjQ5Mjc4MjU0ZTI3NzdkMGIyY2Q3M2JkNTVjMmQyM2FhN2UxLi45N2NhYmUxYzI0
Y2NhNjE0Mjc3NmJjYjYxMGM4MjQwNjY4YzE5ZGZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcGFyc2VyL0xleGVyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFy
c2VyL0xleGVyLmNwcApAQCAtNDk0LDcgKzQ5NCw4IEBAIHN0YXRpYyBjb25zdGV4cHIgY29uc3Qg
TENoYXIgc2luZ2xlQ2hhcmFjdGVyRXNjYXBlVmFsdWVzRm9yQVNDSUlbMTI4XSA9IHsKIAogdGVt
cGxhdGUgPHR5cGVuYW1lIFQ+CiBMZXhlcjxUPjo6TGV4ZXIoVk0mIHZtLCBKU1BhcnNlckJ1aWx0
aW5Nb2RlIGJ1aWx0aW5Nb2RlLCBKU1BhcnNlclNjcmlwdE1vZGUgc2NyaXB0TW9kZSkKLSAgICA6
IG1faXNSZXBhcnNpbmdGdW5jdGlvbihmYWxzZSkKKyAgICA6IG1fcG9zaXRpb25CZWZvcmVMYXN0
TmV3bGluZSgwLDAsMCkKKyAgICAsIG1faXNSZXBhcnNpbmdGdW5jdGlvbihmYWxzZSkKICAgICAs
IG1fdm0odm0pCiAgICAgLCBtX3BhcnNpbmdCdWlsdGluRnVuY3Rpb24oYnVpbHRpbk1vZGUgPT0g
SlNQYXJzZXJCdWlsdGluTW9kZTo6QnVpbHRpbikKICAgICAsIG1fc2NyaXB0TW9kZShzY3JpcHRN
b2RlKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9MZXhlci5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9MZXhlci5oCmluZGV4IGZkODI1ODAzYzgxMjA2
NTJjNzY0NzZlOThkMjY1NjhjMGNmNzJiYjMuLmVmZmNhNGE4MTU2ZjdkYTMwNmY3MjI2Njg3MjVi
NTYzMjQ0MGRmNDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTGV4
ZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL0xleGVyLmgKQEAgLTEwOSw2
ICsxMDksNyBAQCBwdWJsaWM6CiAgICAgfQogICAgIHZvaWQgc2V0TGluZU51bWJlcihpbnQgbGlu
ZSkKICAgICB7CisgICAgICAgIEFTU0VSVChsaW5lID49IDApOwogICAgICAgICBtX2xpbmVOdW1i
ZXIgPSBsaW5lOwogICAgIH0KICAgICB2b2lkIHNldEhhc0xpbmVUZXJtaW5hdG9yQmVmb3JlVG9r
ZW4oYm9vbCB0ZXJtaW5hdG9yKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Bh
cnNlci9Ob2Rlcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVzLmNwcApp
bmRleCBkZDhlZGI2ODc5MTFiZmYyMjEwMmJjNDliZDVjZTU1MzFkYTlmMDhlLi45ZDFjZmE0ZjE3
NjEzMDJhMzNiYmFlMzFlZjYwZmRmY2FmMjA3ZGY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcGFyc2VyL05vZGVzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFy
c2VyL05vZGVzLmNwcApAQCAtMjU0LDI0ICsyNTQsMjQgQEAgdm9pZCBGdW5jdGlvbk1ldGFkYXRh
Tm9kZTo6c2V0RW5kUG9zaXRpb24oSlNUZXh0UG9zaXRpb24gcG9zaXRpb24pCiAKIGJvb2wgRnVu
Y3Rpb25NZXRhZGF0YU5vZGU6Om9wZXJhdG9yPT0oY29uc3QgRnVuY3Rpb25NZXRhZGF0YU5vZGUm
IG90aGVyKSBjb25zdAogewotICAgIHJldHVybiBtX3BhcnNlTW9kZT09IG90aGVyLm1fcGFyc2VN
b2RlCisgICAgcmV0dXJuIG1fcGFyc2VNb2RlID09IG90aGVyLm1fcGFyc2VNb2RlCiAgICAgICAg
ICYmIG1faXNJblN0cmljdENvbnRleHQgPT0gb3RoZXIubV9pc0luU3RyaWN0Q29udGV4dAogICAg
ICAgICAmJiBtX3N1cGVyQmluZGluZyA9PSBvdGhlci5tX3N1cGVyQmluZGluZwogICAgICAgICAm
JiBtX2NvbnN0cnVjdG9yS2luZCA9PSBvdGhlci5tX2NvbnN0cnVjdG9yS2luZAogICAgICAgICAm
JiBtX2lzQXJyb3dGdW5jdGlvbkJvZHlFeHByZXNzaW9uID09IG90aGVyLm1faXNBcnJvd0Z1bmN0
aW9uQm9keUV4cHJlc3Npb24KICAgICAgICAgJiYgbV9pZGVudCA9PSBvdGhlci5tX2lkZW50CiAg
ICAgICAgICYmIG1fZWNtYU5hbWUgPT0gb3RoZXIubV9lY21hTmFtZQotICAgICAgICAmJiBtX2Z1
bmN0aW9uTW9kZT09IG90aGVyLm1fZnVuY3Rpb25Nb2RlCi0gICAgICAgICYmIG1fc3RhcnRDb2x1
bW49PSBvdGhlci5tX3N0YXJ0Q29sdW1uCi0gICAgICAgICYmIG1fZW5kQ29sdW1uPT0gb3RoZXIu
bV9lbmRDb2x1bW4KLSAgICAgICAgJiYgbV9mdW5jdGlvbktleXdvcmRTdGFydD09IG90aGVyLm1f
ZnVuY3Rpb25LZXl3b3JkU3RhcnQKLSAgICAgICAgJiYgbV9mdW5jdGlvbk5hbWVTdGFydD09IG90
aGVyLm1fZnVuY3Rpb25OYW1lU3RhcnQKLSAgICAgICAgJiYgbV9wYXJhbWV0ZXJzU3RhcnQ9PSBv
dGhlci5tX3BhcmFtZXRlcnNTdGFydAotICAgICAgICAmJiBtX3NvdXJjZT09IG90aGVyLm1fc291
cmNlCi0gICAgICAgICYmIG1fY2xhc3NTb3VyY2U9PSBvdGhlci5tX2NsYXNzU291cmNlCi0gICAg
ICAgICYmIG1fc3RhcnRTdGFydE9mZnNldD09IG90aGVyLm1fc3RhcnRTdGFydE9mZnNldAotICAg
ICAgICAmJiBtX3BhcmFtZXRlckNvdW50PT0gb3RoZXIubV9wYXJhbWV0ZXJDb3VudAotICAgICAg
ICAmJiBtX2xhc3RMaW5lPT0gb3RoZXIubV9sYXN0TGluZQorICAgICAgICAmJiBtX2Z1bmN0aW9u
TW9kZSA9PSBvdGhlci5tX2Z1bmN0aW9uTW9kZQorICAgICAgICAmJiBtX3N0YXJ0Q29sdW1uID09
IG90aGVyLm1fc3RhcnRDb2x1bW4KKyAgICAgICAgJiYgbV9lbmRDb2x1bW4gPT0gb3RoZXIubV9l
bmRDb2x1bW4KKyAgICAgICAgJiYgbV9mdW5jdGlvbktleXdvcmRTdGFydCA9PSBvdGhlci5tX2Z1
bmN0aW9uS2V5d29yZFN0YXJ0CisgICAgICAgICYmIG1fZnVuY3Rpb25OYW1lU3RhcnQgPT0gb3Ro
ZXIubV9mdW5jdGlvbk5hbWVTdGFydAorICAgICAgICAmJiBtX3BhcmFtZXRlcnNTdGFydCA9PSBv
dGhlci5tX3BhcmFtZXRlcnNTdGFydAorICAgICAgICAmJiBtX3NvdXJjZSA9PSBvdGhlci5tX3Nv
dXJjZQorICAgICAgICAmJiBtX2NsYXNzU291cmNlID09IG90aGVyLm1fY2xhc3NTb3VyY2UKKyAg
ICAgICAgJiYgbV9zdGFydFN0YXJ0T2Zmc2V0ID09IG90aGVyLm1fc3RhcnRTdGFydE9mZnNldAor
ICAgICAgICAmJiBtX3BhcmFtZXRlckNvdW50ID09IG90aGVyLm1fcGFyYW1ldGVyQ291bnQKKyAg
ICAgICAgJiYgbV9sYXN0TGluZSA9PSBvdGhlci5tX2xhc3RMaW5lCiAgICAgICAgICYmIG1fcG9z
aXRpb24gPT0gb3RoZXIubV9wb3NpdGlvbjsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3BhcnNlci9Ob2Rlcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9O
b2Rlcy5oCmluZGV4IDJhODM2NDY3NmU2NzFjNmY3OTM0YTk4ZGQzZmNhOWIwOTAxNWJhNWQuLjQ5
YWFjNDczNTgwNzBlM2YzOGI3OGMyMTJmMDIzMjkxMzVhOTZmYmEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcGFyc2VyL05vZGVzLmgKQEAgLTM3MiwzNyArMzcyLDM2IEBAIG5hbWVzcGFjZSBKU0Mgewog
CiAgICAgY2xhc3MgVGhyb3dhYmxlRXhwcmVzc2lvbkRhdGEgewogICAgIHB1YmxpYzoKLSAgICAg
ICAgVGhyb3dhYmxlRXhwcmVzc2lvbkRhdGEoKQotICAgICAgICAgICAgOiBtX2Rpdm90KC0xLCAt
MSwgLTEpCi0gICAgICAgICAgICAsIG1fZGl2b3RTdGFydCgtMSwgLTEsIC0xKQotICAgICAgICAg
ICAgLCBtX2Rpdm90RW5kKC0xLCAtMSwgLTEpCi0gICAgICAgIHsKLSAgICAgICAgfQorICAgICAg
ICBUaHJvd2FibGVFeHByZXNzaW9uRGF0YSgpID0gZGVmYXVsdDsKICAgICAgICAgCiAgICAgICAg
IFRocm93YWJsZUV4cHJlc3Npb25EYXRhKGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdCwgY29u
c3QgSlNUZXh0UG9zaXRpb24mIHN0YXJ0LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZW5kKQogICAg
ICAgICAgICAgOiBtX2Rpdm90KGRpdm90KQogICAgICAgICAgICAgLCBtX2Rpdm90U3RhcnQoc3Rh
cnQpCiAgICAgICAgICAgICAsIG1fZGl2b3RFbmQoZW5kKQogICAgICAgICB7Ci0gICAgICAgICAg
ICBBU1NFUlQobV9kaXZvdC5vZmZzZXQgPj0gbV9kaXZvdC5saW5lU3RhcnRPZmZzZXQpOwotICAg
ICAgICAgICAgQVNTRVJUKG1fZGl2b3RTdGFydC5vZmZzZXQgPj0gbV9kaXZvdFN0YXJ0LmxpbmVT
dGFydE9mZnNldCk7Ci0gICAgICAgICAgICBBU1NFUlQobV9kaXZvdEVuZC5vZmZzZXQgPj0gbV9k
aXZvdEVuZC5saW5lU3RhcnRPZmZzZXQpOworICAgICAgICAgICAgY2hlY2tDb25zaXN0ZW5jeSgp
OwogICAgICAgICB9CiAKICAgICAgICAgdm9pZCBzZXRFeGNlcHRpb25Tb3VyY2VDb2RlKGNvbnN0
IEpTVGV4dFBvc2l0aW9uJiBkaXZvdCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90U3RhcnQs
IGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdEVuZCkKICAgICAgICAgewotICAgICAgICAgICAg
QVNTRVJUKGRpdm90Lm9mZnNldCA+PSBkaXZvdC5saW5lU3RhcnRPZmZzZXQpOwotICAgICAgICAg
ICAgQVNTRVJUKGRpdm90U3RhcnQub2Zmc2V0ID49IGRpdm90U3RhcnQubGluZVN0YXJ0T2Zmc2V0
KTsKLSAgICAgICAgICAgIEFTU0VSVChkaXZvdEVuZC5vZmZzZXQgPj0gZGl2b3RFbmQubGluZVN0
YXJ0T2Zmc2V0KTsKICAgICAgICAgICAgIG1fZGl2b3QgPSBkaXZvdDsKICAgICAgICAgICAgIG1f
ZGl2b3RTdGFydCA9IGRpdm90U3RhcnQ7CiAgICAgICAgICAgICBtX2Rpdm90RW5kID0gZGl2b3RF
bmQ7CisgICAgICAgICAgICBjaGVja0NvbnNpc3RlbmN5KCk7CiAgICAgICAgIH0KIAogICAgICAg
ICBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3QoKSBjb25zdCB7IHJldHVybiBtX2Rpdm90OyB9
CiAgICAgICAgIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdFN0YXJ0KCkgY29uc3QgeyByZXR1
cm4gbV9kaXZvdFN0YXJ0OyB9CiAgICAgICAgIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdEVu
ZCgpIGNvbnN0IHsgcmV0dXJuIG1fZGl2b3RFbmQ7IH0KIAorICAgICAgICB2b2lkIGNoZWNrQ29u
c2lzdGVuY3koKSBjb25zdAorICAgICAgICB7CisgICAgICAgICAgICBBU1NFUlQobV9kaXZvdC5v
ZmZzZXQgPj0gbV9kaXZvdC5saW5lU3RhcnRPZmZzZXQpOworICAgICAgICAgICAgQVNTRVJUKG1f
ZGl2b3RTdGFydC5vZmZzZXQgPj0gbV9kaXZvdFN0YXJ0LmxpbmVTdGFydE9mZnNldCk7CisgICAg
ICAgICAgICBBU1NFUlQobV9kaXZvdEVuZC5vZmZzZXQgPj0gbV9kaXZvdEVuZC5saW5lU3RhcnRP
ZmZzZXQpOworICAgICAgICAgICAgQVNTRVJUKG1fZGl2b3Qub2Zmc2V0ID49IG1fZGl2b3RTdGFy
dC5vZmZzZXQpOworICAgICAgICAgICAgQVNTRVJUKG1fZGl2b3RFbmQub2Zmc2V0ID49IG1fZGl2
b3Qub2Zmc2V0KTsKKyAgICAgICAgfQogICAgIHByb3RlY3RlZDoKICAgICAgICAgUmVnaXN0ZXJJ
RCogZW1pdFRocm93UmVmZXJlbmNlRXJyb3IoQnl0ZWNvZGVHZW5lcmF0b3ImLCBjb25zdCBTdHJp
bmcmIG1lc3NhZ2UpOwogCkBAIC0yMTMzLDcgKzIxMzIsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAg
ICAgICAgU291cmNlQ29kZSBtX2NsYXNzU291cmNlOwogICAgICAgICBpbnQgbV9zdGFydFN0YXJ0
T2Zmc2V0OwogICAgICAgICB1bnNpZ25lZCBtX3BhcmFtZXRlckNvdW50OwotICAgICAgICBpbnQg
bV9sYXN0TGluZTsKKyAgICAgICAgaW50IG1fbGFzdExpbmUgeyAwIH07CiAgICAgfTsKIAogICAg
IGNsYXNzIEZ1bmN0aW9uTm9kZSBmaW5hbCA6IHB1YmxpYyBTY29wZU5vZGUgewpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuY3BwCmluZGV4IGI4MTEzMmIzZWRkNmE0ODlkYjIyN2Jj
NzExMTA0NDQ0YzU5YzA2MGQuLmMyZmE2MDdmMjc4ZjI3YzMzNTFlZDE5ODdiODMxZWE2OTI0MmQ5
OTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5jcHAKQEAgLTI5LDYgKzI5
LDcgQEAKICNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCiAjaW5jbHVkZSAiVk0uaCIKICNpbmNsdWRl
IDx1dGlsaXR5PgorI2luY2x1ZGUgPHd0Zi9TY29wZS5oPgogI2luY2x1ZGUgPHd0Zi9TZXRGb3JT
Y29wZS5oPgogI2luY2x1ZGUgPHd0Zi9TdHJpbmdQcmludFN0cmVhbS5oPgogCkBAIC0zMDYsMTAg
KzMwNywxMCBAQCBFeHBlY3RlZDx0eXBlbmFtZSBQYXJzZXI8TGV4ZXJUeXBlPjo6UGFyc2VJbm5l
clJlc3VsdCwgU3RyaW5nPiBQYXJzZXI8TGV4ZXJUeXBlPgogfQogCiB0ZW1wbGF0ZSA8dHlwZW5h
bWUgTGV4ZXJUeXBlPgotYm9vbCBQYXJzZXI8TGV4ZXJUeXBlPjo6aXNBcnJvd0Z1bmN0aW9uUGFy
YW1ldGVycygpCit0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IGJvb2wgUGFyc2VyPExleGVy
VHlwZT46OmlzQXJyb3dGdW5jdGlvblBhcmFtZXRlcnMoVHJlZUJ1aWxkZXImIGNvbnRleHQpCiB7
CiAgICAgaWYgKG1hdGNoKE9QRU5QQVJFTikpIHsKLSAgICAgICAgU2F2ZVBvaW50IHNhdmVBcnJv
d0Z1bmN0aW9uUG9pbnQgPSBjcmVhdGVTYXZlUG9pbnQoKTsKKyAgICAgICAgU2F2ZVBvaW50IHNh
dmVBcnJvd0Z1bmN0aW9uUG9pbnQgPSBjcmVhdGVTYXZlUG9pbnQoY29udGV4dCk7CiAgICAgICAg
IG5leHQoKTsKICAgICAgICAgYm9vbCBpc0Fycm93RnVuY3Rpb24gPSBmYWxzZTsKICAgICAgICAg
aWYgKG1hdGNoKENMT1NFUEFSRU4pKSB7CkBAIC0zMjgsMTYgKzMyOSwxNiBAQCBib29sIFBhcnNl
cjxMZXhlclR5cGU+Ojppc0Fycm93RnVuY3Rpb25QYXJhbWV0ZXJzKCkKICAgICAgICAgICAgIHBy
b3BhZ2F0ZUVycm9yKCk7CiAgICAgICAgICAgICBwb3BTY29wZShmYWtlU2NvcGUsIHN5bnRheENo
ZWNrZXIuTmVlZHNGcmVlVmFyaWFibGVJbmZvKTsKICAgICAgICAgfQotICAgICAgICByZXN0b3Jl
U2F2ZVBvaW50KHNhdmVBcnJvd0Z1bmN0aW9uUG9pbnQpOworICAgICAgICByZXN0b3JlU2F2ZVBv
aW50KGNvbnRleHQsIHNhdmVBcnJvd0Z1bmN0aW9uUG9pbnQpOwogICAgICAgICByZXR1cm4gaXNB
cnJvd0Z1bmN0aW9uOwogICAgIH0KIAogICAgIGlmIChtYXRjaFNwZWNJZGVudGlmaWVyKCkpIHsK
ICAgICAgICAgc2VtYW50aWNGYWlsSWZUcnVlKCFtX3BhcnNlclN0YXRlLmFsbG93QXdhaXQgJiYg
bWF0Y2goQVdBSVQpLCAiQ2Fubm90IHVzZSAnYXdhaXQnIGFzIGEgcGFyYW1ldGVyIG5hbWUgaW4g
YW4gYXN5bmMgZnVuY3Rpb24iKTsKLSAgICAgICAgU2F2ZVBvaW50IHNhdmVBcnJvd0Z1bmN0aW9u
UG9pbnQgPSBjcmVhdGVTYXZlUG9pbnQoKTsKKyAgICAgICAgU2F2ZVBvaW50IHNhdmVBcnJvd0Z1
bmN0aW9uUG9pbnQgPSBjcmVhdGVTYXZlUG9pbnQoY29udGV4dCk7CiAgICAgICAgIG5leHQoKTsK
ICAgICAgICAgYm9vbCBpc0Fycm93RnVuY3Rpb24gPSBtYXRjaChBUlJPV0ZVTkNUSU9OKTsKLSAg
ICAgICAgcmVzdG9yZVNhdmVQb2ludChzYXZlQXJyb3dGdW5jdGlvblBvaW50KTsKKyAgICAgICAg
cmVzdG9yZVNhdmVQb2ludChjb250ZXh0LCBzYXZlQXJyb3dGdW5jdGlvblBvaW50KTsKICAgICAg
ICAgcmV0dXJuIGlzQXJyb3dGdW5jdGlvbjsKICAgICB9CiAKQEAgLTM1Nyw3ICszNTgsNyBAQCB0
ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVTb3VyY2VFbGVtZW50cyBQYXJzZXI8TGV4
ZXJUeXBlPjo6cGFyc2VTb3VyY2VFbAogICAgIFRyZWVTb3VyY2VFbGVtZW50cyBzb3VyY2VFbGVt
ZW50cyA9IGNvbnRleHQuY3JlYXRlU291cmNlRWxlbWVudHMoKTsKICAgICBjb25zdCBJZGVudGlm
aWVyKiBkaXJlY3RpdmUgPSAwOwogICAgIHVuc2lnbmVkIGRpcmVjdGl2ZUxpdGVyYWxMZW5ndGgg
PSAwOwotICAgIGF1dG8gc2F2ZVBvaW50ID0gY3JlYXRlU2F2ZVBvaW50KCk7CisgICAgYXV0byBz
YXZlUG9pbnQgPSBjcmVhdGVTYXZlUG9pbnQoY29udGV4dCk7CiAgICAgYm9vbCBzaG91bGRDaGVj
a0ZvclVzZVN0cmljdCA9IG1vZGUgPT0gQ2hlY2tGb3JTdHJpY3RNb2RlOwogICAgIAogICAgIHdo
aWxlIChUcmVlU3RhdGVtZW50IHN0YXRlbWVudCA9IHBhcnNlU3RhdGVtZW50TGlzdEl0ZW0oY29u
dGV4dCwgZGlyZWN0aXZlLCAmZGlyZWN0aXZlTGl0ZXJhbExlbmd0aCkpIHsKQEAgLTM4Miw3ICsz
ODMsNyBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVTb3VyY2VFbGVtZW50cyBQ
YXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VTb3VyY2VFbAogICAgICAgICAgICAgICAgICAgICAgICAg
c2VtYW50aWNGYWlsSWZGYWxzZShpc1ZhbGlkU3RyaWN0TW9kZSgpLCAiSW52YWxpZCBwYXJhbWV0
ZXJzIG9yIGZ1bmN0aW9uIG5hbWUgaW4gc3RyaWN0IG1vZGUiKTsKICAgICAgICAgICAgICAgICAg
ICAgfQogICAgICAgICAgICAgICAgICAgICAvLyBTaW5jZSBzdHJpY3QgbW9kZSBpcyBjaGFuZ2Vk
LCByZXN0b3JpbmcgbGV4ZXIgc3RhdGUgYnkgY2FsbGluZyBuZXh0KCkgbWF5IGNhdXNlIGVycm9y
cy4KLSAgICAgICAgICAgICAgICAgICAgcmVzdG9yZVNhdmVQb2ludChzYXZlUG9pbnQpOworICAg
ICAgICAgICAgICAgICAgICByZXN0b3JlU2F2ZVBvaW50KGNvbnRleHQsIHNhdmVQb2ludCk7CiAg
ICAgICAgICAgICAgICAgICAgIHByb3BhZ2F0ZUVycm9yKCk7CiAgICAgICAgICAgICAgICAgICAg
IGNvbnRpbnVlOwogICAgICAgICAgICAgICAgIH0KQEAgLTQyMCwxMCArNDIxLDEwIEBAIHRlbXBs
YXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZVNvdXJjZUVsZW1lbnRzIFBhcnNlcjxMZXhlclR5
cGU+OjpwYXJzZU1vZHVsZVNvCiAgICAgICAgICAgICBicmVhazsKIAogICAgICAgICBjYXNlIElN
UE9SVDogewotICAgICAgICAgICAgU2F2ZVBvaW50IHNhdmVQb2ludCA9IGNyZWF0ZVNhdmVQb2lu
dCgpOworICAgICAgICAgICAgU2F2ZVBvaW50IHNhdmVQb2ludCA9IGNyZWF0ZVNhdmVQb2ludChj
b250ZXh0KTsKICAgICAgICAgICAgIG5leHQoKTsKICAgICAgICAgICAgIGJvb2wgaXNJbXBvcnRE
ZWNsYXJhdGlvbiA9ICFtYXRjaChPUEVOUEFSRU4pICYmICFtYXRjaChET1QpOwotICAgICAgICAg
ICAgcmVzdG9yZVNhdmVQb2ludChzYXZlUG9pbnQpOworICAgICAgICAgICAgcmVzdG9yZVNhdmVQ
b2ludChjb250ZXh0LCBzYXZlUG9pbnQpOwogICAgICAgICAgICAgaWYgKGlzSW1wb3J0RGVjbGFy
YXRpb24pIHsKICAgICAgICAgICAgICAgICBzdGF0ZW1lbnQgPSBwYXJzZUltcG9ydERlY2xhcmF0
aW9uKGNvbnRleHQpOwogICAgICAgICAgICAgICAgIGlmIChzdGF0ZW1lbnQpCkBAIC02NjcsNyAr
NjY4LDcgQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlU3RhdGVtZW50IFBhcnNl
cjxMZXhlclR5cGU+OjpwYXJzZVN0YXRlbWVudExpc3QKICAgICBjYXNlIExFVDogewogICAgICAg
ICBib29sIHNob3VsZFBhcnNlVmFyaWFibGVEZWNsYXJhdGlvbiA9IHRydWU7CiAgICAgICAgIGlm
ICghc3RyaWN0TW9kZSgpKSB7Ci0gICAgICAgICAgICBTYXZlUG9pbnQgc2F2ZVBvaW50ID0gY3Jl
YXRlU2F2ZVBvaW50KCk7CisgICAgICAgICAgICBTYXZlUG9pbnQgc2F2ZVBvaW50ID0gY3JlYXRl
U2F2ZVBvaW50KGNvbnRleHQpOwogICAgICAgICAgICAgbmV4dCgpOwogICAgICAgICAgICAgLy8g
SW50ZW50aW9uYWxseSB1c2UgYGlzSWRlbnRpZmllck9yQW55Q29udGV4dHVhbEtleXdvcmQobV90
b2tlbilgIGFuZCBkb24ndCB1c2UgYG1hdGNoU3BlY0lkZW50aWZpZXIoKWAuCiAgICAgICAgICAg
ICAvLyBXZSB3b3VsZCBsaWtlIHRvIGZhbGwgaW50byBwYXJzZVZhcmlhYmxlRGVjbGFyYXRpb24g
cGF0aCBldmVuIGlmICJ5aWVsZCIgaXMgbm90IHRyZWF0ZWQgYXMgYW4gSWRlbnRpZmllci4KQEAg
LTY3Niw3ICs2NzcsNyBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVTdGF0ZW1l
bnQgUGFyc2VyPExleGVyVHlwZT46OnBhcnNlU3RhdGVtZW50TGlzdAogICAgICAgICAgICAgLy8g
dG8gcmFpc2UgY29uc2lzdGVudCBlcnJvcnMgYmV0d2VlbiAidmFyIiwgImNvbnN0IiBhbmQgImxl
dCIuCiAgICAgICAgICAgICBpZiAoIWlzSWRlbnRpZmllck9yQW55Q29udGV4dHVhbEtleXdvcmQo
bV90b2tlbikgJiYgIW1hdGNoKE9QRU5CUkFDRSkgJiYgIW1hdGNoKE9QRU5CUkFDS0VUKSkKICAg
ICAgICAgICAgICAgICBzaG91bGRQYXJzZVZhcmlhYmxlRGVjbGFyYXRpb24gPSBmYWxzZTsKLSAg
ICAgICAgICAgIHJlc3RvcmVTYXZlUG9pbnQoc2F2ZVBvaW50KTsKKyAgICAgICAgICAgIHJlc3Rv
cmVTYXZlUG9pbnQoY29udGV4dCwgc2F2ZVBvaW50KTsKICAgICAgICAgfQogICAgICAgICBpZiAo
c2hvdWxkUGFyc2VWYXJpYWJsZURlY2xhcmF0aW9uKQogICAgICAgICAgICAgcmVzdWx0ID0gcGFy
c2VWYXJpYWJsZURlY2xhcmF0aW9uKGNvbnRleHQsIERlY2xhcmF0aW9uVHlwZTo6TGV0RGVjbGFy
YXRpb24pOwpAQCAtNjk3LDEzICs2OTgsMTMgQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVy
PiBUcmVlU3RhdGVtZW50IFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZVN0YXRlbWVudExpc3QKICAg
ICAgICAgaWYgKFVOTElLRUxZKCptX3Rva2VuLm1fZGF0YS5pZGVudCA9PSBtX3ZtLnByb3BlcnR5
TmFtZXMtPmFzeW5jICYmICFtX3Rva2VuLm1fZGF0YS5lc2NhcGVkKSkgewogICAgICAgICAgICAg
Ly8gRWFnZXJseSBwYXJzZSBhcyBBc3luY0Z1bmN0aW9uRGVjbGFyYXRpb24uIFRoaXMgaXMgdGhl
IHVuY29tbW9uIGNhc2UsCiAgICAgICAgICAgICAvLyBidXQgY291bGQgYmUgbWlzdGFrZW5seSBw
YXJzZWQgYXMgYW4gQXN5bmNGdW5jdGlvbkV4cHJlc3Npb24uCi0gICAgICAgICAgICBTYXZlUG9p
bnQgc2F2ZVBvaW50ID0gY3JlYXRlU2F2ZVBvaW50KCk7CisgICAgICAgICAgICBTYXZlUG9pbnQg
c2F2ZVBvaW50ID0gY3JlYXRlU2F2ZVBvaW50KGNvbnRleHQpOwogICAgICAgICAgICAgbmV4dCgp
OwogICAgICAgICAgICAgaWYgKFVOTElLRUxZKG1hdGNoKEZVTkNUSU9OKSAmJiAhbV9sZXhlci0+
aGFzTGluZVRlcm1pbmF0b3JCZWZvcmVUb2tlbigpKSkgewogICAgICAgICAgICAgICAgIHJlc3Vs
dCA9IHBhcnNlQXN5bmNGdW5jdGlvbkRlY2xhcmF0aW9uKGNvbnRleHQpOwogICAgICAgICAgICAg
ICAgIGJyZWFrOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgcmVzdG9yZVNhdmVQb2ludChz
YXZlUG9pbnQpOworICAgICAgICAgICAgcmVzdG9yZVNhdmVQb2ludChjb250ZXh0LCBzYXZlUG9p
bnQpOwogICAgICAgICB9CiAgICAgICAgIEZBTExUSFJPVUdIOwogICAgIGNhc2UgQVdBSVQ6CkBA
IC0xMDQyLDExICsxMDQzLDExIEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZURl
c3RydWN0dXJpbmdQYXR0ZXJuIFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUFzCiAgICAgVHJlZURl
c3RydWN0dXJpbmdQYXR0ZXJuIGFzc2lnbm1lbnRUYXJnZXQgPSAwOwogCiAgICAgaWYgKG1hdGNo
KE9QRU5CUkFDRSkgfHwgbWF0Y2goT1BFTkJSQUNLRVQpKSB7Ci0gICAgICAgIFNhdmVQb2ludCBz
YXZlUG9pbnQgPSBjcmVhdGVTYXZlUG9pbnQoKTsKKyAgICAgICAgU2F2ZVBvaW50IHNhdmVQb2lu
dCA9IGNyZWF0ZVNhdmVQb2ludChjb250ZXh0KTsKICAgICAgICAgYXNzaWdubWVudFRhcmdldCA9
IHBhcnNlRGVzdHJ1Y3R1cmluZ1BhdHRlcm4oY29udGV4dCwga2luZCwgZXhwb3J0VHlwZSwgZHVw
bGljYXRlSWRlbnRpZmllciwgaGFzRGVzdHJ1Y3R1cmluZ1BhdHRlcm4sIGJpbmRpbmdDb250ZXh0
LCBkZXB0aCk7CiAgICAgICAgIGlmIChhc3NpZ25tZW50VGFyZ2V0ICYmICFtYXRjaChET1QpICYm
ICFtYXRjaChPUEVOQlJBQ0tFVCkgJiYgIW1hdGNoKE9QRU5QQVJFTikgJiYgIW1hdGNoKEJBQ0tR
VU9URSkpCiAgICAgICAgICAgICByZXR1cm4gYXNzaWdubWVudFRhcmdldDsKLSAgICAgICAgcmVz
dG9yZVNhdmVQb2ludChzYXZlUG9pbnQpOworICAgICAgICByZXN0b3JlU2F2ZVBvaW50KGNvbnRl
eHQsIHNhdmVQb2ludCk7CiAgICAgfQogCiAgICAgSlNUZXh0UG9zaXRpb24gc3RhcnRQb3NpdGlv
biA9IHRva2VuU3RhcnRQb3NpdGlvbigpOwpAQCAtMTQzMSwxNCArMTQzMiwxNCBAQCB0ZW1wbGF0
ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVTdGF0ZW1lbnQgUGFyc2VyPExleGVyVHlwZT46OnBh
cnNlRm9yU3RhdGVtZW50KAogICAgIAogICAgIGlmICghbWF0Y2goU0VNSUNPTE9OKSkgewogICAg
ICAgICBpZiAobWF0Y2goT1BFTkJSQUNFKSB8fCBtYXRjaChPUEVOQlJBQ0tFVCkpIHsKLSAgICAg
ICAgICAgIFNhdmVQb2ludCBzYXZlUG9pbnQgPSBjcmVhdGVTYXZlUG9pbnQoKTsKKyAgICAgICAg
ICAgIFNhdmVQb2ludCBzYXZlUG9pbnQgPSBjcmVhdGVTYXZlUG9pbnQoY29udGV4dCk7CiAgICAg
ICAgICAgICBkZWNsc1N0YXJ0ID0gdG9rZW5TdGFydFBvc2l0aW9uKCk7CiAgICAgICAgICAgICBw
YXR0ZXJuID0gdHJ5UGFyc2VEZXN0cnVjdHVyaW5nUGF0dGVybkV4cHJlc3Npb24oY29udGV4dCwg
QXNzaWdubWVudENvbnRleHQ6OkRlY2xhcmF0aW9uU3RhdGVtZW50KTsKICAgICAgICAgICAgIGRl
Y2xzRW5kID0gbGFzdFRva2VuRW5kUG9zaXRpb24oKTsKICAgICAgICAgICAgIGlmIChwYXR0ZXJu
ICYmIChtYXRjaChJTlRPS0VOKSB8fCBtYXRjaENvbnRleHR1YWxLZXl3b3JkKG1fdm0ucHJvcGVy
dHlOYW1lcy0+b2YpKSkKICAgICAgICAgICAgICAgICBnb3RvIGVudW1lcmF0aW9uTG9vcDsKICAg
ICAgICAgICAgIHBhdHRlcm4gPSBUcmVlRGVzdHJ1Y3R1cmluZ1BhdHRlcm4oMCk7Ci0gICAgICAg
ICAgICByZXN0b3JlU2F2ZVBvaW50KHNhdmVQb2ludCk7CisgICAgICAgICAgICByZXN0b3JlU2F2
ZVBvaW50KGNvbnRleHQsIHNhdmVQb2ludCk7CiAgICAgICAgIH0KICAgICAgICAgbV9hbGxvd3NJ
biA9IGZhbHNlOwogICAgICAgICBkZWNsc1N0YXJ0ID0gdG9rZW5TdGFydFBvc2l0aW9uKCk7CkBA
IC0yMDI3LDE0ICsyMDI4LDE0IEBAIHRlbXBsYXRlIDx0eXBlbmFtZSBMZXhlclR5cGU+CiB0ZW1w
bGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IGJvb2wgUGFyc2VyPExleGVyVHlwZT46Om1heWJlUGFy
c2VBc3luY0Z1bmN0aW9uRGVjbGFyYXRpb25TdGF0ZW1lbnQoVHJlZUJ1aWxkZXImIGNvbnRleHQs
IFRyZWVTdGF0ZW1lbnQmIHJlc3VsdCwgYm9vbCBwYXJlbnRBbGxvd3NGdW5jdGlvbkRlY2xhcmF0
aW9uQXNTdGF0ZW1lbnQpCiB7CiAgICAgQVNTRVJUKG1hdGNoQ29udGV4dHVhbEtleXdvcmQobV92
bS5wcm9wZXJ0eU5hbWVzLT5hc3luYykpOwotICAgIFNhdmVQb2ludCBzYXZlUG9pbnQgPSBjcmVh
dGVTYXZlUG9pbnQoKTsKKyAgICBTYXZlUG9pbnQgc2F2ZVBvaW50ID0gY3JlYXRlU2F2ZVBvaW50
KGNvbnRleHQpOwogICAgIG5leHQoKTsKICAgICBpZiAobWF0Y2goRlVOQ1RJT04pICYmICFtX2xl
eGVyLT5oYXNMaW5lVGVybWluYXRvckJlZm9yZVRva2VuKCkpIHsKICAgICAgICAgY29uc3QgYm9v
bCBpc0FzeW5jID0gdHJ1ZTsKICAgICAgICAgcmVzdWx0ID0gcGFyc2VGdW5jdGlvbkRlY2xhcmF0
aW9uU3RhdGVtZW50KGNvbnRleHQsIGlzQXN5bmMsIHBhcmVudEFsbG93c0Z1bmN0aW9uRGVjbGFy
YXRpb25Bc1N0YXRlbWVudCk7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KLSAgICByZXN0
b3JlU2F2ZVBvaW50KHNhdmVQb2ludCk7CisgICAgcmVzdG9yZVNhdmVQb2ludChjb250ZXh0LCBz
YXZlUG9pbnQpOwogICAgIHJldHVybiBmYWxzZTsKIH0KIApAQCAtMjUyMCw3ICsyNTIxLDcgQEAg
dGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBib29sIFBhcnNlcjxMZXhlclR5cGU+OjpwYXJz
ZUZ1bmN0aW9uSW5mbyhUcmVlQnVpbGQKICAgICBmdW5jdGlvblNjb3BlLT5zZXRFeHBlY3RlZFN1
cGVyQmluZGluZyhleHBlY3RlZFN1cGVyQmluZGluZyk7CiAKICAgICBtX3BhcnNlclN0YXRlLmxh
c3RGdW5jdGlvbk5hbWUgPSBsYXN0RnVuY3Rpb25OYW1lOwotICAgIFBhcnNlclN0YXRlIG9sZFN0
YXRlID0gaW50ZXJuYWxTYXZlUGFyc2VyU3RhdGUoKTsKKyAgICBQYXJzZXJTdGF0ZSBvbGRTdGF0
ZSA9IGludGVybmFsU2F2ZVBhcnNlclN0YXRlKGNvbnRleHQpOwogCiAgICAgLy8gRklYTUU6IGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTY5NjIKICAgICAvLyBUaGlz
IGxvb3AgY29sbGVjdHMgdGhlIHNldCBvZiBjYXB0dXJlIGNhbmRpZGF0ZXMgdGhhdCBhcmVuJ3QK
QEAgLTI1NzMsNyArMjU3NCw3IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gYm9vbCBQ
YXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VGdW5jdGlvbkluZm8oVHJlZUJ1aWxkCiAgICAgfSBlbHNl
CiAgICAgICAgIGZ1bmN0aW9uSW5mby5ib2R5ID0gcGVyZm9ybVBhcnNpbmdGdW5jdGlvbkJvZHko
KTsKICAgICAKLSAgICByZXN0b3JlUGFyc2VyU3RhdGUob2xkU3RhdGUpOworICAgIHJlc3RvcmVQ
YXJzZXJTdGF0ZShjb250ZXh0LCBvbGRTdGF0ZSk7CiAgICAgZmFpbElmRmFsc2UoZnVuY3Rpb25J
bmZvLmJvZHksICJDYW5ub3QgcGFyc2UgdGhlIGJvZHkgb2YgdGhpcyAiLCBzdHJpbmdGb3JGdW5j
dGlvbk1vZGUobW9kZSkpOwogICAgIGNvbnRleHQuc2V0RW5kT2Zmc2V0KGZ1bmN0aW9uSW5mby5i
b2R5LCBtX2xleGVyLT5jdXJyZW50T2Zmc2V0KCkpOwogICAgIGlmIChmdW5jdGlvblNjb3BlLT5z
dHJpY3RNb2RlKCkgJiYgcmVxdWlyZW1lbnRzICE9IEZ1bmN0aW9uTmFtZVJlcXVpcmVtZW50czo6
VW5uYW1lZCkgewpAQCAtMjYzNCw3ICsyNjM1LDcgQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWls
ZGVyPiBib29sIFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUZ1bmN0aW9uSW5mbyhUcmVlQnVpbGQK
ICAgICAgICAgLy8gU28gd2Ugb25seSBjaGVjayBUcmVlQnVpbGRlcidzIHR5cGUgaGVyZS4KICAg
ICAgICAgQVNTRVJUX1VOVVNFRChmdW5jdGlvblNjb3BlV2FzU3RyaWN0TW9kZSwgZnVuY3Rpb25T
Y29wZVdhc1N0cmljdE1vZGUgPT0gY3VycmVudFNjb3BlKCktPnN0cmljdE1vZGUoKSk7CiAgICAg
ICAgIGlmICghc3RkOjppc19zYW1lPFRyZWVCdWlsZGVyLCBTeW50YXhDaGVja2VyPjo6dmFsdWUp
Ci0gICAgICAgICAgICBsZXhDdXJyZW50VG9rZW5BZ2FpblVuZGVyQ3VycmVudENvbnRleHQoKTsK
KyAgICAgICAgICAgIGxleEN1cnJlbnRUb2tlbkFnYWluVW5kZXJDdXJyZW50Q29udGV4dChjb250
ZXh0KTsKICAgICB9CiAKICAgICBpZiAobmV3SW5mbykKQEAgLTI4NjQsMTEgKzI4NjUsMTEgQEAg
dGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlQ2xhc3NFeHByZXNzaW9uIFBhcnNlcjxM
ZXhlclR5cGU+OjpwYXJzZUNsYXNzKFQKICAgICAgICAgQ2xhc3NFbGVtZW50VGFnIHRhZyA9IENs
YXNzRWxlbWVudFRhZzo6SW5zdGFuY2U7CiAgICAgICAgIGF1dG8gdHlwZSA9IFByb3BlcnR5Tm9k
ZTo6Q29uc3RhbnQ7CiAgICAgICAgIGlmIChtYXRjaChSRVNFUlZFRF9JRl9TVFJJQ1QpICYmICpt
X3Rva2VuLm1fZGF0YS5pZGVudCA9PSBtX3ZtLnByb3BlcnR5TmFtZXMtPnN0YXRpY0tleXdvcmQp
IHsKLSAgICAgICAgICAgIFNhdmVQb2ludCBzYXZlUG9pbnQgPSBjcmVhdGVTYXZlUG9pbnQoKTsK
KyAgICAgICAgICAgIFNhdmVQb2ludCBzYXZlUG9pbnQgPSBjcmVhdGVTYXZlUG9pbnQoY29udGV4
dCk7CiAgICAgICAgICAgICBuZXh0KCk7CiAgICAgICAgICAgICBpZiAobWF0Y2goT1BFTlBBUkVO
KSkgewogICAgICAgICAgICAgICAgIC8vIFJlcGFyc2UgInN0YXRpYygpIiBhcyBhIG1ldGhvZCBu
YW1lZCAic3RhdGljIi4KLSAgICAgICAgICAgICAgICByZXN0b3JlU2F2ZVBvaW50KHNhdmVQb2lu
dCk7CisgICAgICAgICAgICAgICAgcmVzdG9yZVNhdmVQb2ludChjb250ZXh0LCBzYXZlUG9pbnQp
OwogICAgICAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICAgICAgdGFnID0gQ2xhc3NFbGVtZW50
VGFnOjpTdGF0aWM7CiAgICAgICAgIH0KQEAgLTM0OTQsNyArMzQ5NSw3IEBAIHRlbXBsYXRlIDxj
bGFzcyBUcmVlQnVpbGRlcj4gVHJlZVN0YXRlbWVudCBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VF
eHBvcnREZWNsYXJhCiAKICAgICAgICAgYm9vbCBzdGFydHNXaXRoRnVuY3Rpb24gPSBtYXRjaChG
VU5DVElPTik7CiAgICAgICAgIGlmIChzdGFydHNXaXRoRnVuY3Rpb24gfHwgbWF0Y2goQ0xBU1NU
T0tFTikpIHsKLSAgICAgICAgICAgIFNhdmVQb2ludCBzYXZlUG9pbnQgPSBjcmVhdGVTYXZlUG9p
bnQoKTsKKyAgICAgICAgICAgIFNhdmVQb2ludCBzYXZlUG9pbnQgPSBjcmVhdGVTYXZlUG9pbnQo
Y29udGV4dCk7CiAgICAgICAgICAgICBpc0Z1bmN0aW9uT3JDbGFzc0RlY2xhcmF0aW9uID0gdHJ1
ZTsKICAgICAgICAgICAgIG5leHQoKTsKIApAQCAtMzUwMyw5ICszNTA0LDkgQEAgdGVtcGxhdGUg
PGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlU3RhdGVtZW50IFBhcnNlcjxMZXhlclR5cGU+OjpwYXJz
ZUV4cG9ydERlY2xhcmEKICAgICAgICAgICAgICAgICBuZXh0KCk7CiAgICAgICAgICAgICBpZiAo
bWF0Y2goSURFTlQpKQogICAgICAgICAgICAgICAgIGxvY2FsTmFtZSA9IG1fdG9rZW4ubV9kYXRh
LmlkZW50OwotICAgICAgICAgICAgcmVzdG9yZVNhdmVQb2ludChzYXZlUG9pbnQpOworICAgICAg
ICAgICAgcmVzdG9yZVNhdmVQb2ludChjb250ZXh0LCBzYXZlUG9pbnQpOwogICAgICAgICB9IGVs
c2UgaWYgKG1hdGNoQ29udGV4dHVhbEtleXdvcmQobV92bS5wcm9wZXJ0eU5hbWVzLT5hc3luYykp
IHsKLSAgICAgICAgICAgIFNhdmVQb2ludCBzYXZlUG9pbnQgPSBjcmVhdGVTYXZlUG9pbnQoKTsK
KyAgICAgICAgICAgIFNhdmVQb2ludCBzYXZlUG9pbnQgPSBjcmVhdGVTYXZlUG9pbnQoY29udGV4
dCk7CiAgICAgICAgICAgICBuZXh0KCk7CiAgICAgICAgICAgICBpZiAobWF0Y2goRlVOQ1RJT04p
ICYmICFtX2xleGVyLT5oYXNMaW5lVGVybWluYXRvckJlZm9yZVRva2VuKCkpIHsKICAgICAgICAg
ICAgICAgICBuZXh0KCk7CkBAIC0zNTEzLDcgKzM1MTQsNyBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJl
ZUJ1aWxkZXI+IFRyZWVTdGF0ZW1lbnQgUGFyc2VyPExleGVyVHlwZT46OnBhcnNlRXhwb3J0RGVj
bGFyYQogICAgICAgICAgICAgICAgICAgICBsb2NhbE5hbWUgPSBtX3Rva2VuLm1fZGF0YS5pZGVu
dDsKICAgICAgICAgICAgICAgICBpc0Z1bmN0aW9uT3JDbGFzc0RlY2xhcmF0aW9uID0gdHJ1ZTsK
ICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHJlc3RvcmVTYXZlUG9pbnQoc2F2ZVBvaW50KTsK
KyAgICAgICAgICAgIHJlc3RvcmVTYXZlUG9pbnQoY29udGV4dCwgc2F2ZVBvaW50KTsKICAgICAg
ICAgfQogCiAgICAgICAgIGlmICghbG9jYWxOYW1lKQpAQCAtMzc1OSw3ICszNzYwLDcgQEAgdGVt
cGxhdGUgPHR5cGVuYW1lIFRyZWVCdWlsZGVyPiBUcmVlRXhwcmVzc2lvbiBQYXJzZXI8TGV4ZXJU
eXBlPjo6cGFyc2VBc3NpZ25tZW4KICAgICAvLyBXaGV0aGVyIHNwZWMgaWRlbnRpZmllciBpcyB3
aWxsIGJlIHZhbGlkYXRlZCBieSBpc0Fycm93RnVuY3Rpb25QYXJhbWV0ZXJzKCkuCiAgICAgYm9v
bCB3YXNJZGVudGlmaWVyT3JLZXl3b3JkID0gaXNJZGVudGlmaWVyT3JLZXl3b3JkKG1fdG9rZW4p
OwogICAgIGJvb2wgbWF5YmVWYWxpZEFycm93RnVuY3Rpb25TdGFydCA9IHdhc09wZW5QYXJlbiB8
fCB3YXNJZGVudGlmaWVyT3JLZXl3b3JkOwotICAgIFNhdmVQb2ludCBzYXZlUG9pbnQgPSBjcmVh
dGVTYXZlUG9pbnQoKTsKKyAgICBTYXZlUG9pbnQgc2F2ZVBvaW50ID0gY3JlYXRlU2F2ZVBvaW50
KGNvbnRleHQpOwogICAgIHNpemVfdCB1c2VkVmFyaWFibGVzU2l6ZSA9IDA7CiAKICAgICBpZiAo
d2FzT3BlblBhcmVuKSB7CkBAIC0zNzcyLDggKzM3NzMsNyBAQCB0ZW1wbGF0ZSA8dHlwZW5hbWUg
VHJlZUJ1aWxkZXI+IFRyZWVFeHByZXNzaW9uIFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUFzc2ln
bm1lbgogICAgIGlmIChtYXliZVZhbGlkQXJyb3dGdW5jdGlvblN0YXJ0ICYmICFtYXRjaChFT0ZU
T0spKSB7CiAgICAgICAgIGJvb2wgaXNBcnJvd0Z1bmN0aW9uVG9rZW4gPSBtYXRjaChBUlJPV0ZV
TkNUSU9OKTsKICAgICAgICAgaWYgKCFsaHMgfHwgaXNBcnJvd0Z1bmN0aW9uVG9rZW4pIHsKLSAg
ICAgICAgICAgIFNhdmVQb2ludFdpdGhFcnJvciBlcnJvclJlc3RvcmF0aW9uU2F2ZVBvaW50ID0g
Y3JlYXRlU2F2ZVBvaW50Rm9yRXJyb3IoKTsKLSAgICAgICAgICAgIHJlc3RvcmVTYXZlUG9pbnQo
c2F2ZVBvaW50KTsKKyAgICAgICAgICAgIFNhdmVQb2ludFdpdGhFcnJvciBlcnJvclJlc3RvcmF0
aW9uU2F2ZVBvaW50ID0gc3dhcFNhdmVQb2ludEZvckVycm9yKGNvbnRleHQsIHNhdmVQb2ludCk7
CiAgICAgICAgICAgICBib29sIGlzQXN5bmNBcnJvdyA9IGZhbHNlOwogICAgICAgICAgICAgaWYg
KFVOTElLRUxZKGNsYXNzaWZpZXIuaW5kaWNhdGVzUG9zc2libGVBc3luY0Fycm93RnVuY3Rpb24o
KSkpIHsKICAgICAgICAgICAgICAgICBpZiAobWF0Y2hDb250ZXh0dWFsS2V5d29yZChtX3ZtLnBy
b3BlcnR5TmFtZXMtPmFzeW5jKSkgewpAQCAtMzc4MSwxNCArMzc4MSwxNCBAQCB0ZW1wbGF0ZSA8
dHlwZW5hbWUgVHJlZUJ1aWxkZXI+IFRyZWVFeHByZXNzaW9uIFBhcnNlcjxMZXhlclR5cGU+Ojpw
YXJzZUFzc2lnbm1lbgogICAgICAgICAgICAgICAgICAgICBpc0FzeW5jQXJyb3cgPSAhbV9sZXhl
ci0+aGFzTGluZVRlcm1pbmF0b3JCZWZvcmVUb2tlbigpOwogICAgICAgICAgICAgICAgIH0KICAg
ICAgICAgICAgIH0KLSAgICAgICAgICAgIGlmIChpc0Fycm93RnVuY3Rpb25QYXJhbWV0ZXJzKCkp
IHsKKyAgICAgICAgICAgIGlmIChpc0Fycm93RnVuY3Rpb25QYXJhbWV0ZXJzKGNvbnRleHQpKSB7
CiAgICAgICAgICAgICAgICAgaWYgKHdhc09wZW5QYXJlbikKICAgICAgICAgICAgICAgICAgICAg
Y3VycmVudFNjb3BlKCktPnJldmVydFRvUHJldmlvdXNVc2VkVmFyaWFibGVzKHVzZWRWYXJpYWJs
ZXNTaXplKTsKICAgICAgICAgICAgICAgICByZXR1cm4gcGFyc2VBcnJvd0Z1bmN0aW9uRXhwcmVz
c2lvbihjb250ZXh0LCBpc0FzeW5jQXJyb3cpOwogICAgICAgICAgICAgfQogICAgICAgICAgICAg
aWYgKGlzQXJyb3dGdW5jdGlvblRva2VuKQogICAgICAgICAgICAgICAgIHByb3BhZ2F0ZUVycm9y
KCk7Ci0gICAgICAgICAgICByZXN0b3JlU2F2ZVBvaW50V2l0aEVycm9yKGVycm9yUmVzdG9yYXRp
b25TYXZlUG9pbnQpOworICAgICAgICAgICAgcmVzdG9yZVNhdmVQb2ludFdpdGhFcnJvcihjb250
ZXh0LCBlcnJvclJlc3RvcmF0aW9uU2F2ZVBvaW50KTsKICAgICAgICAgICAgIGlmIChpc0Fycm93
RnVuY3Rpb25Ub2tlbikKICAgICAgICAgICAgICAgICBmYWlsRHVlVG9VbmV4cGVjdGVkVG9rZW4o
KTsKICAgICAgICAgfQpAQCAtMzc5OCwxMSArMzc5OCwxMCBAQCB0ZW1wbGF0ZSA8dHlwZW5hbWUg
VHJlZUJ1aWxkZXI+IFRyZWVFeHByZXNzaW9uIFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUFzc2ln
bm1lbgogICAgICAgICBwcm9wYWdhdGVFcnJvcigpOwogCiAgICAgaWYgKG1heWJlQXNzaWdubWVu
dFBhdHRlcm4gJiYgKCFsaHMgfHwgKGNvbnRleHQuaXNPYmplY3RPckFycmF5TGl0ZXJhbChsaHMp
ICYmIG1hdGNoKEVRVUFMKSkpKSB7Ci0gICAgICAgIFNhdmVQb2ludFdpdGhFcnJvciBleHByZXNz
aW9uRXJyb3JMb2NhdGlvbiA9IGNyZWF0ZVNhdmVQb2ludEZvckVycm9yKCk7Ci0gICAgICAgIHJl
c3RvcmVTYXZlUG9pbnQoc2F2ZVBvaW50KTsKKyAgICAgICAgU2F2ZVBvaW50V2l0aEVycm9yIGV4
cHJlc3Npb25FcnJvckxvY2F0aW9uID0gc3dhcFNhdmVQb2ludEZvckVycm9yKGNvbnRleHQsIHNh
dmVQb2ludCk7CiAgICAgICAgIGF1dG8gcGF0dGVybiA9IHRyeVBhcnNlRGVzdHJ1Y3R1cmluZ1Bh
dHRlcm5FeHByZXNzaW9uKGNvbnRleHQsIEFzc2lnbm1lbnRDb250ZXh0OjpBc3NpZ25tZW50RXhw
cmVzc2lvbik7CiAgICAgICAgIGlmIChjbGFzc2lmaWVyLmluZGljYXRlc1Bvc3NpYmxlUGF0dGVy
bigpICYmICghcGF0dGVybiB8fCAhbWF0Y2goRVFVQUwpKSkgewotICAgICAgICAgICAgcmVzdG9y
ZVNhdmVQb2ludFdpdGhFcnJvcihleHByZXNzaW9uRXJyb3JMb2NhdGlvbik7CisgICAgICAgICAg
ICByZXN0b3JlU2F2ZVBvaW50V2l0aEVycm9yKGNvbnRleHQsIGV4cHJlc3Npb25FcnJvckxvY2F0
aW9uKTsKICAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgICB9CiAgICAgICAgIGZhaWxJZkZh
bHNlKHBhdHRlcm4sICJDYW5ub3QgcGFyc2UgYXNzaWdubWVudCBwYXR0ZXJuIik7CkBAIC0zODY3
LDkgKzM4NjYsNiBAQCBlbmQ6CiAgICAgaWYgKGhhZEFzc2lnbm1lbnQpCiAgICAgICAgIG1fcGFy
c2VyU3RhdGUubm9uTEhTQ291bnQrKzsKICAgICAKLSAgICBpZiAoIVRyZWVCdWlsZGVyOjpDcmVh
dGVzQVNUKQotICAgICAgICByZXR1cm4gbGhzOwotICAgIAogICAgIHdoaWxlIChhc3NpZ25tZW50
U3RhY2spCiAgICAgICAgIGxocyA9IGNvbnRleHQuY3JlYXRlQXNzaWdubWVudChsb2NhdGlvbiwg
YXNzaWdubWVudFN0YWNrLCBsaHMsIGluaXRpYWxBc3NpZ25tZW50Q291bnQsIG1fcGFyc2VyU3Rh
dGUuYXNzaWdubWVudENvdW50LCBsYXN0VG9rZW5FbmRQb3NpdGlvbigpKTsKICAgICAKQEAgLTM4
OTMsNyArMzg4OSw3IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZUV4cHJlc3Np
b24gUGFyc2VyPExleGVyVHlwZT46OnBhcnNlWWllbGRFeHByZXNzCiAgICAgSlNUb2tlbkxvY2F0
aW9uIGxvY2F0aW9uKHRva2VuTG9jYXRpb24oKSk7CiAgICAgSlNUZXh0UG9zaXRpb24gZGl2b3RT
dGFydCA9IHRva2VuU3RhcnRQb3NpdGlvbigpOwogICAgIEFTU0VSVChtYXRjaChZSUVMRCkpOwot
ICAgIFNhdmVQb2ludCBzYXZlUG9pbnQgPSBjcmVhdGVTYXZlUG9pbnQoKTsKKyAgICBTYXZlUG9p
bnQgc2F2ZVBvaW50ID0gY3JlYXRlU2F2ZVBvaW50KGNvbnRleHQpOwogICAgIG5leHQoKTsKICAg
ICBpZiAobV9sZXhlci0+aGFzTGluZVRlcm1pbmF0b3JCZWZvcmVUb2tlbigpKQogICAgICAgICBy
ZXR1cm4gY29udGV4dC5jcmVhdGVZaWVsZChsb2NhdGlvbik7CkBAIC0zOTAyLDcgKzM4OTgsNyBA
QCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVFeHByZXNzaW9uIFBhcnNlcjxMZXhl
clR5cGU+OjpwYXJzZVlpZWxkRXhwcmVzcwogICAgIEpTVGV4dFBvc2l0aW9uIGFyZ3VtZW50U3Rh
cnQgPSB0b2tlblN0YXJ0UG9zaXRpb24oKTsKICAgICBUcmVlRXhwcmVzc2lvbiBhcmd1bWVudCA9
IHBhcnNlQXNzaWdubWVudEV4cHJlc3Npb24oY29udGV4dCk7CiAgICAgaWYgKCFhcmd1bWVudCkg
ewotICAgICAgICByZXN0b3JlU2F2ZVBvaW50KHNhdmVQb2ludCk7CisgICAgICAgIHJlc3RvcmVT
YXZlUG9pbnQoY29udGV4dCwgc2F2ZVBvaW50KTsKICAgICAgICAgbmV4dCgpOwogICAgICAgICBy
ZXR1cm4gY29udGV4dC5jcmVhdGVZaWVsZChsb2NhdGlvbik7CiAgICAgfQpAQCAtNDA1NywxMSAr
NDA1MywxMSBAQCBwYXJzZVByb3BlcnR5OgogICAgIGNhc2UgSURFTlQ6CiAgICAgICAgIGlmIChV
TkxJS0VMWSgqbV90b2tlbi5tX2RhdGEuaWRlbnQgPT0gbV92bS5wcm9wZXJ0eU5hbWVzLT5hc3lu
YyAmJiAhbV90b2tlbi5tX2RhdGEuZXNjYXBlZCkpIHsKICAgICAgICAgICAgIGlmIChwYXJzZU1v
ZGUgPT0gU291cmNlUGFyc2VNb2RlOjpNZXRob2RNb2RlKSB7Ci0gICAgICAgICAgICAgICAgU2F2
ZVBvaW50IHNhdmVQb2ludCA9IGNyZWF0ZVNhdmVQb2ludCgpOworICAgICAgICAgICAgICAgIFNh
dmVQb2ludCBzYXZlUG9pbnQgPSBjcmVhdGVTYXZlUG9pbnQoY29udGV4dCk7CiAgICAgICAgICAg
ICAgICAgbmV4dCgpOwogCiAgICAgICAgICAgICAgICAgaWYgKG1hdGNoKENPTE9OKSB8fCBtYXRj
aChPUEVOUEFSRU4pIHx8IG1hdGNoKENPTU1BKSB8fCBtYXRjaChDTE9TRUJSQUNFKSkgewotICAg
ICAgICAgICAgICAgICAgICByZXN0b3JlU2F2ZVBvaW50KHNhdmVQb2ludCk7CisgICAgICAgICAg
ICAgICAgICAgIHJlc3RvcmVTYXZlUG9pbnQoY29udGV4dCwgc2F2ZVBvaW50KTsKICAgICAgICAg
ICAgICAgICAgICAgd2FzSWRlbnQgPSB0cnVlOwogICAgICAgICAgICAgICAgICAgICBnb3RvIG5h
bWVkUHJvcGVydHk7CiAgICAgICAgICAgICAgICAgfQpAQCAtNDg1NiwxMyArNDg1MiwxMyBAQCB0
ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVFeHByZXNzaW9uIFBhcnNlcjxMZXhlclR5
cGU+OjpwYXJzZU1lbWJlckV4cHJlcwogICAgICAgICAgICAgb3B0aW9uYWxDaGFpbkJhc2UgPSBi
YXNlOwogICAgICAgICAgICAgb3B0aW9uYWxDaGFpbkxvY2F0aW9uID0gdG9rZW5Mb2NhdGlvbigp
OwogCi0gICAgICAgICAgICBTYXZlUG9pbnQgc2F2ZVBvaW50ID0gY3JlYXRlU2F2ZVBvaW50KCk7
CisgICAgICAgICAgICBTYXZlUG9pbnQgc2F2ZVBvaW50ID0gY3JlYXRlU2F2ZVBvaW50KGNvbnRl
eHQpOwogICAgICAgICAgICAgbmV4dCgpOwogICAgICAgICAgICAgaWYgKG1hdGNoKE9QRU5CUkFD
S0VUKSB8fCBtYXRjaChPUEVOUEFSRU4pIHx8IG1hdGNoKEJBQ0tRVU9URSkpCiAgICAgICAgICAg
ICAgICAgdHlwZSA9IG1fdG9rZW4ubV90eXBlOwogICAgICAgICAgICAgZWxzZSB7CiAgICAgICAg
ICAgICAgICAgdHlwZSA9IERPVDsKLSAgICAgICAgICAgICAgICByZXN0b3JlU2F2ZVBvaW50KHNh
dmVQb2ludCk7CisgICAgICAgICAgICAgICAgcmVzdG9yZVNhdmVQb2ludChjb250ZXh0LCBzYXZl
UG9pbnQpOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAKQEAgLTUwNDIsMTkgKzUwMzgsMTUg
QEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlRXhwcmVzc2lvbiBQYXJzZXI8TGV4
ZXJUeXBlPjo6cGFyc2VVbmFyeUV4cHJlc3MKIAogICAgIEpTVG9rZW5Mb2NhdGlvbiBsb2NhdGlv
bih0b2tlbkxvY2F0aW9uKCkpOwogCisgICAgaW50IG9sZFRva2VuU3RhY2tEZXB0aCA9IGNvbnRl
eHQudW5hcnlUb2tlblN0YWNrRGVwdGgoKTsKKyAgICBtYWtlU2NvcGVFeGl0KFsmXSB7CisgICAg
ICAgIEFTU0VSVF9VTlVTRUQob2xkVG9rZW5TdGFja0RlcHRoLCBvbGRUb2tlblN0YWNrRGVwdGgg
PD0gY29udGV4dC51bmFyeVRva2VuU3RhY2tEZXB0aCgpKTsKKyAgICB9KTsKKwogICAgIHdoaWxl
IChpc1VuYXJ5T3AobV90b2tlbi5tX3R5cGUpKSB7Ci0gICAgICAgIHN3aXRjaCAobV90b2tlbi5t
X3R5cGUpIHsKLSAgICAgICAgY2FzZSBQTFVTUExVUzoKLSAgICAgICAgY2FzZSBNSU5VU01JTlVT
OgotICAgICAgICBjYXNlIEFVVE9QTFVTUExVUzoKLSAgICAgICAgY2FzZSBBVVRPTUlOVVNNSU5V
UzoKLSAgICAgICAgICAgIHNlbWFudGljRmFpbElmVHJ1ZShoYXNQcmVmaXhVcGRhdGVPcCwgIlRo
ZSAiLCBvcGVyYXRvclN0cmluZyh0cnVlLCBsYXN0T3BlcmF0b3IpLCAiIG9wZXJhdG9yIHJlcXVp
cmVzIGEgcmVmZXJlbmNlIGV4cHJlc3Npb24iKTsKKyAgICAgICAgc2VtYW50aWNGYWlsSWZUcnVl
KGhhc1ByZWZpeFVwZGF0ZU9wLCAiVGhlICIsIG9wZXJhdG9yU3RyaW5nKHRydWUsIGxhc3RPcGVy
YXRvciksICIgb3BlcmF0b3IgcmVxdWlyZXMgYSByZWZlcmVuY2UgZXhwcmVzc2lvbiIpOworICAg
ICAgICBpZiAoaXNVcGRhdGVPcChtX3Rva2VuLm1fdHlwZSkpCiAgICAgICAgICAgICBoYXNQcmVm
aXhVcGRhdGVPcCA9IHRydWU7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgZGVmYXVsdDoK
LSAgICAgICAgICAgIHNlbWFudGljRmFpbElmVHJ1ZShoYXNQcmVmaXhVcGRhdGVPcCwgIlRoZSAi
LCBvcGVyYXRvclN0cmluZyh0cnVlLCBsYXN0T3BlcmF0b3IpLCAiIG9wZXJhdG9yIHJlcXVpcmVz
IGEgcmVmZXJlbmNlIGV4cHJlc3Npb24iKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9
CiAgICAgICAgIGxhc3RPcGVyYXRvciA9IG1fdG9rZW4ubV90eXBlOwogICAgICAgICBtX3BhcnNl
clN0YXRlLm5vbkxIU0NvdW50Kys7CiAgICAgICAgIGNvbnRleHQuYXBwZW5kVW5hcnlUb2tlbih0
b2tlblN0YWNrRGVwdGgsIG1fdG9rZW4ubV90eXBlLCB0b2tlblN0YXJ0UG9zaXRpb24oKSk7CkBA
IC01MDY5LDYgKzUwNjEsOCBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVFeHBy
ZXNzaW9uIFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZVVuYXJ5RXhwcmVzcwogICAgICAgICAgICAg
ZmFpbFdpdGhNZXNzYWdlKCJDYW5ub3QgcGFyc2Ugc3ViZXhwcmVzc2lvbiBvZiAiLCBvcGVyYXRv
clN0cmluZyh0cnVlLCBsYXN0T3BlcmF0b3IpLCAib3BlcmF0b3IiKTsKICAgICAgICAgZmFpbFdp
dGhNZXNzYWdlKCJDYW5ub3QgcGFyc2UgbWVtYmVyIGV4cHJlc3Npb24iKTsKICAgICB9CisgICAg
aWYgY29uc3RleHByIChzdGQ6OmlzX3NhbWVfdjxUcmVlQnVpbGRlciwgQVNUQnVpbGRlcj4pCisg
ICAgICAgIEFTU0VSVChvbGRUb2tlblN0YWNrRGVwdGggKyB0b2tlblN0YWNrRGVwdGggPT0gY29u
dGV4dC51bmFyeVRva2VuU3RhY2tEZXB0aCgpKTsKICAgICBpZiAoaXNVcGRhdGVPcChzdGF0aWNf
Y2FzdDxKU1Rva2VuVHlwZT4obGFzdE9wZXJhdG9yKSkpIHsKICAgICAgICAgc2VtYW50aWNGYWls
SWZUcnVlKGNvbnRleHQuaXNNZXRhUHJvcGVydHkoZXhwciksIG1ldGFQcm9wZXJ0eU5hbWUoY29u
dGV4dCwgZXhwciksICIgY2FuJ3QgY29tZSBhZnRlciBhIHByZWZpeCBvcGVyYXRvciIpOwogICAg
ICAgICBzZW1hbnRpY0ZhaWxJZkZhbHNlKGlzU2ltcGxlQXNzaWdubWVudFRhcmdldChjb250ZXh0
LCBleHByKSwgIlByZWZpeCAiLCBsYXN0T3BlcmF0b3IgPT0gUExVU1BMVVMgPyAiKysiIDogIi0t
IiwgIiBvcGVyYXRvciBhcHBsaWVkIHRvIHZhbHVlIHRoYXQgaXMgbm90IGEgcmVmZXJlbmNlIik7
CkBAIC01MTA4LDcgKzUxMDIsOSBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVF
eHByZXNzaW9uIFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZVVuYXJ5RXhwcmVzcwogICAgIAogICAg
IEpTVGV4dFBvc2l0aW9uIGVuZCA9IGxhc3RUb2tlbkVuZFBvc2l0aW9uKCk7CiAgICAgd2hpbGUg
KHRva2VuU3RhY2tEZXB0aCkgewotICAgICAgICBzd2l0Y2ggKGNvbnRleHQudW5hcnlUb2tlblN0
YWNrTGFzdFR5cGUodG9rZW5TdGFja0RlcHRoKSkgeworICAgICAgICBzdWJFeHByU3RhcnQgPSBj
b250ZXh0LnVuYXJ5VG9rZW5TdGFja0xhc3RTdGFydCh0b2tlblN0YWNrRGVwdGgpOworICAgICAg
ICBhdXRvIHRva2VuVHlwZSA9IGNvbnRleHQudW5hcnlUb2tlblN0YWNrTGFzdFR5cGUodG9rZW5T
dGFja0RlcHRoKTsKKyAgICAgICAgc3dpdGNoICh0b2tlblR5cGUpIHsKICAgICAgICAgY2FzZSBF
WENMQU1BVElPTjoKICAgICAgICAgICAgIGV4cHIgPSBjb250ZXh0LmNyZWF0ZUxvZ2ljYWxOb3Qo
bG9jYXRpb24sIGV4cHIpOwogICAgICAgICAgICAgYnJlYWs7CkBAIC01MTIzLDEyICs1MTE5LDE0
IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZUV4cHJlc3Npb24gUGFyc2VyPExl
eGVyVHlwZT46OnBhcnNlVW5hcnlFeHByZXNzCiAgICAgICAgICAgICBicmVhazsKICAgICAgICAg
Y2FzZSBQTFVTUExVUzoKICAgICAgICAgY2FzZSBBVVRPUExVU1BMVVM6Ci0gICAgICAgICAgICBl
eHByID0gY29udGV4dC5tYWtlUHJlZml4Tm9kZShsb2NhdGlvbiwgZXhwciwgT3BQbHVzUGx1cywg
Y29udGV4dC51bmFyeVRva2VuU3RhY2tMYXN0U3RhcnQodG9rZW5TdGFja0RlcHRoKSwgc3ViRXhw
clN0YXJ0ICsgMSwgZW5kKTsKKyAgICAgICAgICAgIEFTU0VSVChpc1NpbXBsZUFzc2lnbm1lbnRU
YXJnZXQoY29udGV4dCwgZXhwcikpOworICAgICAgICAgICAgZXhwciA9IGNvbnRleHQubWFrZVBy
ZWZpeE5vZGUobG9jYXRpb24sIGV4cHIsIE9wUGx1c1BsdXMsIHN1YkV4cHJTdGFydCwgc3ViRXhw
clN0YXJ0ICsgMiwgZW5kKTsKICAgICAgICAgICAgIG1fcGFyc2VyU3RhdGUuYXNzaWdubWVudENv
dW50Kys7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBNSU5VU01JTlVTOgogICAg
ICAgICBjYXNlIEFVVE9NSU5VU01JTlVTOgotICAgICAgICAgICAgZXhwciA9IGNvbnRleHQubWFr
ZVByZWZpeE5vZGUobG9jYXRpb24sIGV4cHIsIE9wTWludXNNaW51cywgY29udGV4dC51bmFyeVRv
a2VuU3RhY2tMYXN0U3RhcnQodG9rZW5TdGFja0RlcHRoKSwgc3ViRXhwclN0YXJ0ICsgMSwgZW5k
KTsKKyAgICAgICAgICAgIEFTU0VSVChpc1NpbXBsZUFzc2lnbm1lbnRUYXJnZXQoY29udGV4dCwg
ZXhwcikpOworICAgICAgICAgICAgZXhwciA9IGNvbnRleHQubWFrZVByZWZpeE5vZGUobG9jYXRp
b24sIGV4cHIsIE9wTWludXNNaW51cywgc3ViRXhwclN0YXJ0LCBzdWJFeHByU3RhcnQgKyAyLCBl
bmQpOwogICAgICAgICAgICAgbV9wYXJzZXJTdGF0ZS5hc3NpZ25tZW50Q291bnQrKzsKICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIFRZUEVPRjoKQEAgLTUxNDUsNyArNTE0Myw2IEBA
IHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZUV4cHJlc3Npb24gUGFyc2VyPExleGVy
VHlwZT46OnBhcnNlVW5hcnlFeHByZXNzCiAgICAgICAgICAgICAvLyBJZiB3ZSBnZXQgaGVyZSBz
b21ldGhpbmcgaGFzIGdvbmUgaG9ycmlibHkgaG9ycmlibHkgd3JvbmcKICAgICAgICAgICAgIENS
QVNIKCk7CiAgICAgICAgIH0KLSAgICAgICAgc3ViRXhwclN0YXJ0ID0gY29udGV4dC51bmFyeVRv
a2VuU3RhY2tMYXN0U3RhcnQodG9rZW5TdGFja0RlcHRoKTsKICAgICAgICAgY29udGV4dC51bmFy
eVRva2VuU3RhY2tSZW1vdmVMYXN0KHRva2VuU3RhY2tEZXB0aCk7CiAgICAgfQogICAgIHJldHVy
biBleHByOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmgKaW5kZXggNzUyOWU2NjI0
NDY4Yzk2MDEyYjY1OTAwZjQ4NTQzY2IyMDE5YjdiZi4uYWU4NjMxOWQ2NzliZjMwOGZlMmQ4OTQ2
MDc3NjY0NmQ5MzE2MGMyOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNl
ci9QYXJzZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5oCkBA
IC0xNDE3LDEwICsxNDE3LDExIEBAIHByaXZhdGU6CiAgICAgICAgIG1fdG9rZW4ubV90eXBlID0g
bV9sZXhlci0+bGV4RXhwZWN0SWRlbnRpZmllcigmbV90b2tlbiwgbGV4ZXJGbGFncywgc3RyaWN0
TW9kZSgpKTsKICAgICB9CiAKLSAgICBBTFdBWVNfSU5MSU5FIHZvaWQgbGV4Q3VycmVudFRva2Vu
QWdhaW5VbmRlckN1cnJlbnRDb250ZXh0KCkKKyAgICB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxk
ZXI+CisgICAgQUxXQVlTX0lOTElORSB2b2lkIGxleEN1cnJlbnRUb2tlbkFnYWluVW5kZXJDdXJy
ZW50Q29udGV4dChUcmVlQnVpbGRlciYgY29udGV4dCkKICAgICB7Ci0gICAgICAgIGF1dG8gc2F2
ZVBvaW50ID0gY3JlYXRlU2F2ZVBvaW50KCk7Ci0gICAgICAgIHJlc3RvcmVTYXZlUG9pbnQoc2F2
ZVBvaW50KTsKKyAgICAgICAgYXV0byBzYXZlUG9pbnQgPSBjcmVhdGVTYXZlUG9pbnQoY29udGV4
dCk7CisgICAgICAgIHJlc3RvcmVTYXZlUG9pbnQoY29udGV4dCwgc2F2ZVBvaW50KTsKICAgICB9
CiAKICAgICBBTFdBWVNfSU5MSU5FIGJvb2wgbmV4dFRva2VuSXNDb2xvbigpCkBAIC0xNjg1LDcg
KzE2ODYsNyBAQCBwcml2YXRlOgogICAgIGVudW0gY2xhc3MgRnVuY3Rpb25EZWZpbml0aW9uVHlw
ZSB7IEV4cHJlc3Npb24sIERlY2xhcmF0aW9uLCBNZXRob2QgfTsKICAgICB0ZW1wbGF0ZSA8Y2xh
c3MgVHJlZUJ1aWxkZXI+IE5FVkVSX0lOTElORSBib29sIHBhcnNlRnVuY3Rpb25JbmZvKFRyZWVC
dWlsZGVyJiwgRnVuY3Rpb25OYW1lUmVxdWlyZW1lbnRzLCBTb3VyY2VQYXJzZU1vZGUsIGJvb2wg
bmFtZUlzSW5Db250YWluaW5nU2NvcGUsIENvbnN0cnVjdG9yS2luZCwgU3VwZXJCaW5kaW5nLCBp
bnQgZnVuY3Rpb25LZXl3b3JkU3RhcnQsIFBhcnNlckZ1bmN0aW9uSW5mbzxUcmVlQnVpbGRlcj4m
LCBGdW5jdGlvbkRlZmluaXRpb25UeXBlLCBPcHRpb25hbDxpbnQ+IGZ1bmN0aW9uQ29uc3RydWN0
b3JQYXJhbWV0ZXJzRW5kUG9zaXRpb24gPSBXVEY6Om51bGxvcHQpOwogICAgIAotICAgIEFMV0FZ
U19JTkxJTkUgYm9vbCBpc0Fycm93RnVuY3Rpb25QYXJhbWV0ZXJzKCk7CisgICAgdGVtcGxhdGUg
PGNsYXNzIFRyZWVCdWlsZGVyPiBBTFdBWVNfSU5MSU5FIGJvb2wgaXNBcnJvd0Z1bmN0aW9uUGFy
YW1ldGVycyhUcmVlQnVpbGRlciYpOwogICAgIAogICAgIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVp
bGRlciwgY2xhc3MgRnVuY3Rpb25JbmZvVHlwZT4gTkVWRVJfSU5MSU5FIHR5cGVuYW1lIFRyZWVC
dWlsZGVyOjpGb3JtYWxQYXJhbWV0ZXJMaXN0IHBhcnNlRnVuY3Rpb25QYXJhbWV0ZXJzKFRyZWVC
dWlsZGVyJiwgU291cmNlUGFyc2VNb2RlLCBGdW5jdGlvbkluZm9UeXBlJik7CiAgICAgdGVtcGxh
dGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBORVZFUl9JTkxJTkUgdHlwZW5hbWUgVHJlZUJ1aWxkZXI6
OkZvcm1hbFBhcmFtZXRlckxpc3QgY3JlYXRlR2VuZXJhdG9yUGFyYW1ldGVycyhUcmVlQnVpbGRl
ciYsIHVuc2lnbmVkJiBwYXJhbWV0ZXJDb3VudCk7CkBAIC0xNzkxLDYgKzE3OTIsNyBAQCBwcml2
YXRlOgogICAgICAgICBpbnQgYXNzaWdubWVudENvdW50IHsgMCB9OwogICAgICAgICBpbnQgbm9u
TEhTQ291bnQgeyAwIH07CiAgICAgICAgIGludCBub25Ucml2aWFsRXhwcmVzc2lvbkNvdW50IHsg
MCB9OworICAgICAgICBpbnQgdW5hcnlUb2tlblN0YWNrRGVwdGggeyAwIH07CiAgICAgICAgIEZ1
bmN0aW9uUGFyc2VQaGFzZSBmdW5jdGlvblBhcnNlUGhhc2UgeyBGdW5jdGlvblBhcnNlUGhhc2U6
OkJvZHkgfTsKICAgICAgICAgY29uc3QgSWRlbnRpZmllciogbGFzdElkZW50aWZpZXIgeyBudWxs
cHRyIH07CiAgICAgICAgIGNvbnN0IElkZW50aWZpZXIqIGxhc3RGdW5jdGlvbk5hbWUgeyBudWxs
cHRyIH07CkBAIC0xODAwLDE0ICsxODAyLDE5IEBAIHByaXZhdGU6CiAKICAgICAvLyBJZiB5b3Un
cmUgdXNpbmcgdGhpcyBkaXJlY3RseSwgeW91IHByb2JhYmx5IHNob3VsZCBiZSB1c2luZwogICAg
IC8vIGNyZWF0ZVNhdmVQb2ludCgpIGluc3RlYWQuCi0gICAgQUxXQVlTX0lOTElORSBQYXJzZXJT
dGF0ZSBpbnRlcm5hbFNhdmVQYXJzZXJTdGF0ZSgpCisgICAgdGVtcGxhdGUgPGNsYXNzIFRyZWVC
dWlsZGVyPgorICAgIEFMV0FZU19JTkxJTkUgUGFyc2VyU3RhdGUgaW50ZXJuYWxTYXZlUGFyc2Vy
U3RhdGUoVHJlZUJ1aWxkZXImIGNvbnRleHQpCiAgICAgewotICAgICAgICByZXR1cm4gbV9wYXJz
ZXJTdGF0ZTsKKyAgICAgICAgYXV0byBwYXJzZXJTdGF0ZSA9IG1fcGFyc2VyU3RhdGU7CisgICAg
ICAgIHBhcnNlclN0YXRlLnVuYXJ5VG9rZW5TdGFja0RlcHRoID0gY29udGV4dC51bmFyeVRva2Vu
U3RhY2tEZXB0aCgpOworICAgICAgICByZXR1cm4gcGFyc2VyU3RhdGU7CiAgICAgfQogCi0gICAg
QUxXQVlTX0lOTElORSB2b2lkIHJlc3RvcmVQYXJzZXJTdGF0ZShjb25zdCBQYXJzZXJTdGF0ZSYg
c3RhdGUpCisgICAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPgorICAgIEFMV0FZU19JTkxJ
TkUgdm9pZCByZXN0b3JlUGFyc2VyU3RhdGUoVHJlZUJ1aWxkZXImIGNvbnRleHQsIGNvbnN0IFBh
cnNlclN0YXRlJiBzdGF0ZSkKICAgICB7CiAgICAgICAgIG1fcGFyc2VyU3RhdGUgPSBzdGF0ZTsK
KyAgICAgICAgY29udGV4dC5zZXRVbmFyeVRva2VuU3RhY2tEZXB0aChtX3BhcnNlclN0YXRlLnVu
YXJ5VG9rZW5TdGFja0RlcHRoKTsKICAgICB9CiAKICAgICBzdHJ1Y3QgTGV4ZXJTdGF0ZSB7CkBA
IC0xODU1LDQ3ICsxODYyLDU2IEBAIHByaXZhdGU6CiAgICAgICAgIFN0cmluZyBwYXJzZXJFcnJv
ck1lc3NhZ2U7CiAgICAgfTsKIAotICAgIEFMV0FZU19JTkxJTkUgdm9pZCBpbnRlcm5hbFNhdmVT
dGF0ZShTYXZlUG9pbnQmIHNhdmVQb2ludCkKKyAgICB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxk
ZXI+CisgICAgQUxXQVlTX0lOTElORSB2b2lkIGludGVybmFsU2F2ZVN0YXRlKFRyZWVCdWlsZGVy
JiBjb250ZXh0LCBTYXZlUG9pbnQmIHNhdmVQb2ludCkKICAgICB7Ci0gICAgICAgIHNhdmVQb2lu
dC5wYXJzZXJTdGF0ZSA9IGludGVybmFsU2F2ZVBhcnNlclN0YXRlKCk7CisgICAgICAgIHNhdmVQ
b2ludC5wYXJzZXJTdGF0ZSA9IGludGVybmFsU2F2ZVBhcnNlclN0YXRlKGNvbnRleHQpOwogICAg
ICAgICBzYXZlUG9pbnQubGV4ZXJTdGF0ZSA9IGludGVybmFsU2F2ZUxleGVyU3RhdGUoKTsKICAg
ICB9CiAgICAgCi0gICAgQUxXQVlTX0lOTElORSBTYXZlUG9pbnRXaXRoRXJyb3IgY3JlYXRlU2F2
ZVBvaW50Rm9yRXJyb3IoKQorICAgIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4KKyAgICBB
TFdBWVNfSU5MSU5FIFNhdmVQb2ludFdpdGhFcnJvciBzd2FwU2F2ZVBvaW50Rm9yRXJyb3IoVHJl
ZUJ1aWxkZXImIGNvbnRleHQsIFNhdmVQb2ludCYgb2xkU2F2ZVBvaW50KQogICAgIHsKICAgICAg
ICAgU2F2ZVBvaW50V2l0aEVycm9yIHNhdmVQb2ludDsKLSAgICAgICAgaW50ZXJuYWxTYXZlU3Rh
dGUoc2F2ZVBvaW50KTsKKyAgICAgICAgaW50ZXJuYWxTYXZlU3RhdGUoY29udGV4dCwgc2F2ZVBv
aW50KTsKICAgICAgICAgc2F2ZVBvaW50LmxleGVyRXJyb3IgPSBtX2xleGVyLT5zYXdFcnJvcigp
OwogICAgICAgICBzYXZlUG9pbnQubGV4ZXJFcnJvck1lc3NhZ2UgPSBtX2xleGVyLT5nZXRFcnJv
ck1lc3NhZ2UoKTsKICAgICAgICAgc2F2ZVBvaW50LnBhcnNlckVycm9yTWVzc2FnZSA9IG1fZXJy
b3JNZXNzYWdlOworICAgICAgICAvLyBNYWtlIHN1cmUgd2Ugc2V0IG91ciBuZXcgc2F2ZXBvaW50
cyB1bmFyeSBzdGFjayB0byB3aGF0IG9sZFNhdmVQb2ludCBoYWQgYXMgaXQgY3VycmVudGx5IG1h
eSBjb250YWluIHN0YWxlIGluZm8uCisgICAgICAgIHNhdmVQb2ludC5wYXJzZXJTdGF0ZS51bmFy
eVRva2VuU3RhY2tEZXB0aCA9IG9sZFNhdmVQb2ludC5wYXJzZXJTdGF0ZS51bmFyeVRva2VuU3Rh
Y2tEZXB0aDsKKyAgICAgICAgcmVzdG9yZVNhdmVQb2ludChjb250ZXh0LCBvbGRTYXZlUG9pbnQp
OwogICAgICAgICByZXR1cm4gc2F2ZVBvaW50OwogICAgIH0KICAgICAKLSAgICBBTFdBWVNfSU5M
SU5FIFNhdmVQb2ludCBjcmVhdGVTYXZlUG9pbnQoKQorICAgIHRlbXBsYXRlIDxjbGFzcyBUcmVl
QnVpbGRlcj4KKyAgICBBTFdBWVNfSU5MSU5FIFNhdmVQb2ludCBjcmVhdGVTYXZlUG9pbnQoVHJl
ZUJ1aWxkZXImIGNvbnRleHQpCiAgICAgewogICAgICAgICBBU1NFUlQoIWhhc0Vycm9yKCkpOwog
ICAgICAgICBTYXZlUG9pbnQgc2F2ZVBvaW50OwotICAgICAgICBpbnRlcm5hbFNhdmVTdGF0ZShz
YXZlUG9pbnQpOworICAgICAgICBpbnRlcm5hbFNhdmVTdGF0ZShjb250ZXh0LCBzYXZlUG9pbnQp
OwogICAgICAgICByZXR1cm4gc2F2ZVBvaW50OwogICAgIH0KIAotICAgIEFMV0FZU19JTkxJTkUg
dm9pZCBpbnRlcm5hbFJlc3RvcmVTdGF0ZShjb25zdCBTYXZlUG9pbnQmIHNhdmVQb2ludCkKKyAg
ICB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+CisgICAgQUxXQVlTX0lOTElORSB2b2lkIGlu
dGVybmFsUmVzdG9yZVN0YXRlKFRyZWVCdWlsZGVyJiBjb250ZXh0LCBjb25zdCBTYXZlUG9pbnQm
IHNhdmVQb2ludCkKICAgICB7CiAgICAgICAgIHJlc3RvcmVMZXhlclN0YXRlKHNhdmVQb2ludC5s
ZXhlclN0YXRlKTsKLSAgICAgICAgcmVzdG9yZVBhcnNlclN0YXRlKHNhdmVQb2ludC5wYXJzZXJT
dGF0ZSk7CisgICAgICAgIHJlc3RvcmVQYXJzZXJTdGF0ZShjb250ZXh0LCBzYXZlUG9pbnQucGFy
c2VyU3RhdGUpOwogICAgIH0KIAotICAgIEFMV0FZU19JTkxJTkUgdm9pZCByZXN0b3JlU2F2ZVBv
aW50V2l0aEVycm9yKGNvbnN0IFNhdmVQb2ludFdpdGhFcnJvciYgc2F2ZVBvaW50KQorICAgIHRl
bXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4KKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgcmVzdG9y
ZVNhdmVQb2ludFdpdGhFcnJvcihUcmVlQnVpbGRlciYgY29udGV4dCwgY29uc3QgU2F2ZVBvaW50
V2l0aEVycm9yJiBzYXZlUG9pbnQpCiAgICAgewotICAgICAgICBpbnRlcm5hbFJlc3RvcmVTdGF0
ZShzYXZlUG9pbnQpOworICAgICAgICBpbnRlcm5hbFJlc3RvcmVTdGF0ZShjb250ZXh0LCBzYXZl
UG9pbnQpOwogICAgICAgICBtX2xleGVyLT5zZXRTYXdFcnJvcihzYXZlUG9pbnQubGV4ZXJFcnJv
cik7CiAgICAgICAgIG1fbGV4ZXItPnNldEVycm9yTWVzc2FnZShzYXZlUG9pbnQubGV4ZXJFcnJv
ck1lc3NhZ2UpOwogICAgICAgICBtX2Vycm9yTWVzc2FnZSA9IHNhdmVQb2ludC5wYXJzZXJFcnJv
ck1lc3NhZ2U7CiAgICAgfQogCi0gICAgQUxXQVlTX0lOTElORSB2b2lkIHJlc3RvcmVTYXZlUG9p
bnQoY29uc3QgU2F2ZVBvaW50JiBzYXZlUG9pbnQpCisgICAgdGVtcGxhdGUgPGNsYXNzIFRyZWVC
dWlsZGVyPgorICAgIEFMV0FZU19JTkxJTkUgdm9pZCByZXN0b3JlU2F2ZVBvaW50KFRyZWVCdWls
ZGVyJiBjb250ZXh0LCBjb25zdCBTYXZlUG9pbnQmIHNhdmVQb2ludCkKICAgICB7Ci0gICAgICAg
IGludGVybmFsUmVzdG9yZVN0YXRlKHNhdmVQb2ludCk7CisgICAgICAgIGludGVybmFsUmVzdG9y
ZVN0YXRlKGNvbnRleHQsIHNhdmVQb2ludCk7CiAgICAgICAgIG1fZXJyb3JNZXNzYWdlID0gU3Ry
aW5nKCk7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2Vy
L1BhcnNlclRva2Vucy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXJUb2tl
bnMuaAppbmRleCAzMGQyZTJkZWE0YzExNmY3NzIzMzBlZDk0OGRiOTBkYjdiMTRhNTNiLi5kYmQ2
ZDY1MTRjZmJjZmUyMzEzNjUzYzg2ZTFjNGFlMDMzYjhmMjQzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlclRva2Vucy5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9wYXJzZXIvUGFyc2VyVG9rZW5zLmgKQEAgLTE5Nyw3ICsxOTcsMTMgQEAgc3RhdGlj
X2Fzc2VydChzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUE9XKSA8PSAweDAwZmZmZmZmVSwgIkpTVG9r
ZW5UeXBlIG11c3QgYmUgMjQKIAogc3RydWN0IEpTVGV4dFBvc2l0aW9uIHsKICAgICBKU1RleHRQ
b3NpdGlvbigpID0gZGVmYXVsdDsKLSAgICBKU1RleHRQb3NpdGlvbihpbnQgX2xpbmUsIGludCBf
b2Zmc2V0LCBpbnQgX2xpbmVTdGFydE9mZnNldCkgOiBsaW5lKF9saW5lKSwgb2Zmc2V0KF9vZmZz
ZXQpLCBsaW5lU3RhcnRPZmZzZXQoX2xpbmVTdGFydE9mZnNldCkgeyB9CisgICAgSlNUZXh0UG9z
aXRpb24oaW50IF9saW5lLCBpbnQgX29mZnNldCwgaW50IF9saW5lU3RhcnRPZmZzZXQpIAorICAg
ICAgICA6IGxpbmUoX2xpbmUpCisgICAgICAgICwgb2Zmc2V0KF9vZmZzZXQpCisgICAgICAgICwg
bGluZVN0YXJ0T2Zmc2V0KF9saW5lU3RhcnRPZmZzZXQpCisgICAgeyAKKyAgICAgICAgY2hlY2tD
b25zaXN0ZW5jeSgpOworICAgIH0KIAogICAgIEpTVGV4dFBvc2l0aW9uIG9wZXJhdG9yKyhpbnQg
YWRqdXN0bWVudCkgY29uc3QgeyByZXR1cm4gSlNUZXh0UG9zaXRpb24obGluZSwgb2Zmc2V0ICsg
YWRqdXN0bWVudCwgbGluZVN0YXJ0T2Zmc2V0KTsgfQogICAgIEpTVGV4dFBvc2l0aW9uIG9wZXJh
dG9yKyh1bnNpZ25lZCBhZGp1c3RtZW50KSBjb25zdCB7IHJldHVybiAqdGhpcyArIHN0YXRpY19j
YXN0PGludD4oYWRqdXN0bWVudCk7IH0KQEAgLTIxOCwxMCArMjI0LDE4IEBAIHN0cnVjdCBKU1Rl
eHRQb3NpdGlvbiB7CiAgICAgfQogCiAgICAgaW50IGNvbHVtbigpIGNvbnN0IHsgcmV0dXJuIG9m
ZnNldCAtIGxpbmVTdGFydE9mZnNldDsgfQorICAgIHZvaWQgY2hlY2tDb25zaXN0ZW5jeSgpCisg
ICAgeworICAgICAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIHRlc3QgQVNTRVJUKG9mZnNldCA+PSBs
aW5lU3RhcnRPZmZzZXQpOyBidXQgdGhhdCBicmVha3MgYSBsb3Qgb2YgdGVzdHMuCisgICAgICAg
IEFTU0VSVChsaW5lID49IDApOworICAgICAgICBBU1NFUlQob2Zmc2V0ID49IDApOworICAgICAg
ICBBU1NFUlQobGluZVN0YXJ0T2Zmc2V0ID49IDApOworICAgIH0KIAotICAgIGludCBsaW5lIHsg
MCB9OwotICAgIGludCBvZmZzZXQgeyAwIH07Ci0gICAgaW50IGxpbmVTdGFydE9mZnNldCB7IDAg
fTsKKyAgICAvLyBGSVhNRTogdGhlc2Ugc2hvdWxkIGJlIHVuc2lnbmVkLgorICAgIGludCBsaW5l
IHsgLTEgfTsKKyAgICBpbnQgb2Zmc2V0IHsgLTEgfTsKKyAgICBpbnQgbGluZVN0YXJ0T2Zmc2V0
IHsgLTEgfTsKIH07CiAKIHVuaW9uIEpTVG9rZW5EYXRhIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9wYXJzZXIvU3ludGF4Q2hlY2tlci5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3BhcnNlci9TeW50YXhDaGVja2VyLmgKaW5kZXggNjU2NzgxYzc0NzExZmVmNjNhOGM2YWRj
NjdiYzk1MjZlMDQ4NzMyYi4uOGE4ZDRjN2NhYzBlNDFkYWQ1MTVmY2ViMWY1ZjdmMjIzMzI2MGI0
NCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9TeW50YXhDaGVja2Vy
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9TeW50YXhDaGVja2VyLmgKQEAg
LTMzNCw5ICszMzQsMTEgQEAgcHVibGljOgogICAgIGludCB1bmFyeVRva2VuU3RhY2tMYXN0VHlw
ZShpbnQmKSB7IHJldHVybiBtX3RvcFVuYXJ5VG9rZW47IH0KICAgICBKU1RleHRQb3NpdGlvbiB1
bmFyeVRva2VuU3RhY2tMYXN0U3RhcnQoaW50JikgeyByZXR1cm4gSlNUZXh0UG9zaXRpb24oMCwg
MCwgMCk7IH0KICAgICB2b2lkIHVuYXJ5VG9rZW5TdGFja1JlbW92ZUxhc3QoaW50JiBzdGFja0Rl
cHRoKSB7IHN0YWNrRGVwdGggPSAwOyB9CisgICAgaW50IHVuYXJ5VG9rZW5TdGFja0RlcHRoKCkg
Y29uc3QgeyByZXR1cm4gMDsgfQorICAgIHZvaWQgc2V0VW5hcnlUb2tlblN0YWNrRGVwdGgoaW50
KSB7IH0KICAgICAKLSAgICB2b2lkIGFzc2lnbm1lbnRTdGFja0FwcGVuZChpbnQsIGludCwgaW50
LCBpbnQsIGludCwgT3BlcmF0b3IpIHsgfQotICAgIGludCBjcmVhdGVBc3NpZ25tZW50KGNvbnN0
IEpTVG9rZW5Mb2NhdGlvbiYsIGludCwgaW50LCBpbnQsIGludCwgaW50KSB7IFJFTEVBU0VfQVNT
RVJUX05PVF9SRUFDSEVEKCk7IHJldHVybiBBc3NpZ25tZW50RXhwcjsgfQorICAgIHZvaWQgYXNz
aWdubWVudFN0YWNrQXBwZW5kKGludCYgaGFzQXNzaWduZW1lbnRzLCBpbnQsIGludCwgaW50LCBp
bnQsIE9wZXJhdG9yKSB7IGhhc0Fzc2lnbmVtZW50cyA9IDE7IH0KKyAgICBpbnQgY3JlYXRlQXNz
aWdubWVudChjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBpbnQmIGhhc0Fzc2lnbmVtZW50cywgaW50
LCBpbnQsIGludCwgaW50KSB7IGhhc0Fzc2lnbmVtZW50cyA9IDA7IHJldHVybiBBc3NpZ25tZW50
RXhwcjsgfQogICAgIGNvbnN0IElkZW50aWZpZXIqIGdldE5hbWUoY29uc3QgUHJvcGVydHkmIHBy
b3BlcnR5KSBjb25zdCB7IHJldHVybiBwcm9wZXJ0eS5uYW1lOyB9CiAgICAgUHJvcGVydHlOb2Rl
OjpUeXBlIGdldFR5cGUoY29uc3QgUHJvcGVydHkmIHByb3BlcnR5KSBjb25zdCB7IHJldHVybiBw
cm9wZXJ0eS50eXBlOyB9CiAgICAgYm9vbCBpc1Jlc29sdmUoRXhwcmVzc2lvblR5cGUgZXhwcikg
Y29uc3QgeyByZXR1cm4gZXhwciA9PSBSZXNvbHZlRXhwciB8fCBleHByID09IFJlc29sdmVFdmFs
RXhwcjsgfQpAQCAtNDM1LDcgKzQzNyw3IEBAIHB1YmxpYzoKICAgICBpbnQgZW5kT2Zmc2V0KGlu
dCkgeyByZXR1cm4gMDsgfQogICAgIHZvaWQgc2V0U3RhcnRPZmZzZXQoaW50LCBpbnQpIHsgfQog
Ci0gICAgSlNUZXh0UG9zaXRpb24gYnJlYWtwb2ludExvY2F0aW9uKGludCkgeyByZXR1cm4gSlNU
ZXh0UG9zaXRpb24oLTEsIDAsIDApOyB9CisgICAgSlNUZXh0UG9zaXRpb24gYnJlYWtwb2ludExv
Y2F0aW9uKGludCkgeyByZXR1cm4geyB9OyB9CiAKICAgICB2b2lkIHByb3BhZ2F0ZUFyZ3VtZW50
c1VzZSgpIHsgfQogCmRpZmYgLS1naXQgYS9KU1Rlc3RzL0NoYW5nZUxvZyBiL0pTVGVzdHMvQ2hh
bmdlTG9nCmluZGV4IDRjNmUwMmI1NTY5Zjc5NTRiYjVlNzFhOTE4NzhmMDk4MjZiNmQ2M2MuLmU0
OGU5MTgxNmJmNjM3YmJiMDNmODU5NzRlZjdmYzY0ZmE5NDZmYzggMTAwNjQ0Ci0tLSBhL0pTVGVz
dHMvQ2hhbmdlTG9nCisrKyBiL0pTVGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIw
MjAtMDEtMjkgIEtlaXRoIE1pbGxlciAgPGtlaXRoX21pbGxlckBhcHBsZS5jb20+CisKKyAgICAg
ICAgUGFyc2VyIG5lZWRzIHRvIHJlc3RvcmUgdW5hcnkgc3RhY2sgc3RhdGUgd2hlbiBiYWNrdHJh
Y2tpbmcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIw
Njk3MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICog
c3RyZXNzL3BhcnNlci1zYXZlLXN0YXRlLXJlbW92ZS1zdGFsZS1lbnRyaWVzLmpzOiBBZGRlZC4K
KyAgICAgICAgKiBzdHJlc3MvcGFyc2VyLXN5bnRheC1jaGVja2VyLWFzc2lnbm1lbnRzLWFyZS1u
b3QtcmVzb2x2ZS1leHByZXNzaW9ucy5qczogQWRkZWQuCisgICAgICAgIChmb28pOgorCiAyMDIw
LTAxLTI0ICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KIAogICAgICAgICBJbnRsT2Jq
ZWN0J3MgY2FjaGVkIHN0cmluZ3Mgc2hvdWxkIGJlIGltbW9ydGFsIGFuZCBzYWZlIGZvciBjb25j
dXJyZW50IGFjY2Vzcy4KZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL3BhcnNlci1zYXZlLXN0
YXRlLXJlbW92ZS1zdGFsZS1lbnRyaWVzLmpzIGIvSlNUZXN0cy9zdHJlc3MvcGFyc2VyLXNhdmUt
c3RhdGUtcmVtb3ZlLXN0YWxlLWVudHJpZXMuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNWVjZWY0ZTBlN2RjMTFh
MzEwNWIzNzg4YWE2ZGNjNTIwMWIwYzQ4NgotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3Ry
ZXNzL3BhcnNlci1zYXZlLXN0YXRlLXJlbW92ZS1zdGFsZS1lbnRyaWVzLmpzCkBAIC0wLDAgKzEs
MTAgQEAKKy8vIFRoaXMgdGVzdCBlbnN1cmVzIHdlIHByb3Blcmx5IHJlbW92ZSB1bmFyeSBleHBy
ZXNzaW9uIHN0YWNrIGVudHJpZXMgd2hlbiBiYWNrdHJhY2luZyBpbiB0aGUgcGFyc2VyLgorCit0
cnkgeworICAgIGV2YWwoImRlbGV0ZSgoYT0rKyhiPWIpKSA9PiB7fSkiKTsKK30gY2F0Y2ggeyB9
CisKK3RyeSB7CisgICAgZXZhbCgiISgoe2E9KCsrKCh0KT0oKGUpKSkpfSk9Pnt9KSIpOworfSBj
YXRjaCB7IH0KKwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvcGFyc2VyLXN5bnRheC1jaGVj
a2VyLWFzc2lnbm1lbnRzLWFyZS1ub3QtcmVzb2x2ZS1leHByZXNzaW9ucy5qcyBiL0pTVGVzdHMv
c3RyZXNzL3BhcnNlci1zeW50YXgtY2hlY2tlci1hc3NpZ25tZW50cy1hcmUtbm90LXJlc29sdmUt
ZXhwcmVzc2lvbnMuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uY2FkZmNjNTg5NjUwMmJjZTU0NDBhY2M5ZmJkNzg2
OTU1YjQwZjVhMAotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL3BhcnNlci1zeW50
YXgtY2hlY2tlci1hc3NpZ25tZW50cy1hcmUtbm90LXJlc29sdmUtZXhwcmVzc2lvbnMuanMKQEAg
LTAsMCArMSw0IEBACisvL0AgcmVxdWlyZU9wdGlvbnMoIi0tZXhjZXB0aW9uPVN5bnRheEVycm9y
IikKKyJ1c2Ugc3RyaWN0IjsKKworZnVuY3Rpb24gZm9vKCkgeyAoYj1iKSA9IGI7IH0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>389230</attachid>
            <date>2020-01-29 23:11:03 -0800</date>
            <delta_ts>2020-01-30 07:54:28 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-206972-20200129231102.patch</filename>
            <type>text/plain</type>
            <size>63267</size>
            <attacher name="Keith Miller">keith_miller</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU1MTE0CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBh
ZGQxNGVlMjViZGU1Y2VjYzc3ZGZhNDE3ZDY0MDAzODdlMmJjMDk4Li42ZTA3N2ZlZjI0YjY4NzY1
YTU4MzQ4YjcwYzI3MjQ4OWY2NTBkN2ViIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw3NiBAQAorMjAyMC0wMS0yOSAgS2VpdGggTWlsbGVyICA8a2VpdGhfbWlsbGVyQGFwcGxl
LmNvbT4KKworICAgICAgICBQYXJzZXIgbmVlZHMgdG8gcmVzdG9yZSB1bmFyeSBzdGFjayBzdGF0
ZSB3aGVuIGJhY2t0cmFja2luZworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MjA2OTcyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgU2FhbSBCYXJhdGkuCisK
KyAgICAgICAgUHJldmlvdXNseSB3ZSB3b3VsZCB0cnkgdG8gcGFyc2UgcG9zc2libHkgc3RhbGUg
dW5hcnkgb3BlcmF0b3IKKyAgICAgICAgc3RhY2sgZW50cmllcyBhZnRlciBiYWNrdHJhY2tpbmcg
ZnJvbSBhIHBhcnNlIGVycm9yLiAgVGhpcyB3b3VsZAorICAgICAgICBjYXVzZSB1cyB0byB0aGlu
ayBvbmUgdG9rZW4gd2FzIGEgZGlmZmVyZW50IHRva2VuIHdoaWxlIHJlcGFyc2luZworICAgICAg
ICBhZnRlciBiYWNrdHJhY2tpbmcuIEFkZGl0aW9uYWxseSwgdGhpcyBwYXRjaCBmaXhlcyBhbiBp
c3N1ZSB3aGVyZQorICAgICAgICB0aGUgc3ludGF4IGNoZWNrZXIgd291bGQgdGhpbmsgYXNzaWdu
bWVudCBleHByZXNzaW9ucyB3ZXJlIHJlc29sdmUKKyAgICAgICAgZXhwcmVzc2lvbnMuIEludHJl
c3RpbmdseSwgdGhpcyB3YXMgbm90IHRlc3RlZCBpbiB0ZXN0MjYyLgorCisgICAgICAgIExhc3Rs
eSwgSSB0cmllZCBhZGRpbmcgc29tZSBhc3NlcnRpb25zIHRvIGltcHJvdmUgaGVscCBkaWFnbm9z
ZQorICAgICAgICB3aGVuIG91ciBzb3VyY2UgdGV4dCBsb2NhdGlvbnMgYXJlIGluY29ycmVjdC4K
KworICAgICAgICAqIGJ5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oOgorICAgICAgICAo
SlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdEV4cHJlc3Npb25JbmZvKToKKyAgICAgICAgKiBi
eXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcDoKKyAgICAgICAgKEpTQzo6VGhpc05vZGU6OmVt
aXRCeXRlY29kZSk6CisgICAgICAgIChKU0M6OlJlc29sdmVOb2RlOjplbWl0Qnl0ZWNvZGUpOgor
ICAgICAgICAoSlNDOjpFbXB0eVZhckV4cHJlc3Npb246OmVtaXRCeXRlY29kZSk6CisgICAgICAg
IChKU0M6OkVtcHR5TGV0RXhwcmVzc2lvbjo6ZW1pdEJ5dGVjb2RlKToKKyAgICAgICAgKEpTQzo6
Rm9ySW5Ob2RlOjplbWl0TG9vcEhlYWRlcik6CisgICAgICAgIChKU0M6OkZvck9mTm9kZTo6ZW1p
dEJ5dGVjb2RlKToKKyAgICAgICAgKEpTQzo6RGVmaW5lRmllbGROb2RlOjplbWl0Qnl0ZWNvZGUp
OgorICAgICAgICAqIHBhcnNlci9BU1RCdWlsZGVyLmg6CisgICAgICAgIChKU0M6OkFTVEJ1aWxk
ZXI6OnVuYXJ5VG9rZW5TdGFja0RlcHRoIGNvbnN0KToKKyAgICAgICAgKEpTQzo6QVNUQnVpbGRl
cjo6c2V0VW5hcnlUb2tlblN0YWNrRGVwdGgpOgorICAgICAgICAqIHBhcnNlci9MZXhlci5jcHA6
CisgICAgICAgIChKU0M6OkxleGVyPFQ+OjpMZXhlcik6CisgICAgICAgICogcGFyc2VyL0xleGVy
Lmg6CisgICAgICAgIChKU0M6OkxleGVyOjpzZXRMaW5lTnVtYmVyKToKKyAgICAgICAgKiBwYXJz
ZXIvTm9kZXMuY3BwOgorICAgICAgICAoSlNDOjpGdW5jdGlvbk1ldGFkYXRhTm9kZTo6b3BlcmF0
b3I9PSBjb25zdCk6CisgICAgICAgICogcGFyc2VyL05vZGVzLmg6CisgICAgICAgIChKU0M6OlRo
cm93YWJsZUV4cHJlc3Npb25EYXRhOjpUaHJvd2FibGVFeHByZXNzaW9uRGF0YSk6CisgICAgICAg
IChKU0M6OlRocm93YWJsZUV4cHJlc3Npb25EYXRhOjpzZXRFeGNlcHRpb25Tb3VyY2VDb2RlKToK
KyAgICAgICAgKEpTQzo6VGhyb3dhYmxlRXhwcmVzc2lvbkRhdGE6OmNoZWNrQ29uc2lzdGVuY3kg
Y29uc3QpOgorICAgICAgICAqIHBhcnNlci9QYXJzZXIuY3BwOgorICAgICAgICAoSlNDOjpQYXJz
ZXI8TGV4ZXJUeXBlPjo6aXNBcnJvd0Z1bmN0aW9uUGFyYW1ldGVycyk6CisgICAgICAgIChKU0M6
OlBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZVNvdXJjZUVsZW1lbnRzKToKKyAgICAgICAgKEpTQzo6
UGFyc2VyPExleGVyVHlwZT46OnBhcnNlTW9kdWxlU291cmNlRWxlbWVudHMpOgorICAgICAgICAo
SlNDOjpQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VTdGF0ZW1lbnRMaXN0SXRlbSk6CisgICAgICAg
IChKU0M6OlBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUFzc2lnbm1lbnRFbGVtZW50KToKKyAgICAg
ICAgKEpTQzo6UGFyc2VyPExleGVyVHlwZT46OnBhcnNlRm9yU3RhdGVtZW50KToKKyAgICAgICAg
KEpTQzo6UGFyc2VyPExleGVyVHlwZT46Om1heWJlUGFyc2VBc3luY0Z1bmN0aW9uRGVjbGFyYXRp
b25TdGF0ZW1lbnQpOgorICAgICAgICAoSlNDOjpQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VGdW5j
dGlvbkluZm8pOgorICAgICAgICAoSlNDOjpQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VDbGFzcyk6
CisgICAgICAgIChKU0M6OlBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUV4cG9ydERlY2xhcmF0aW9u
KToKKyAgICAgICAgKEpTQzo6UGFyc2VyPExleGVyVHlwZT46OnBhcnNlQXNzaWdubWVudEV4cHJl
c3Npb24pOgorICAgICAgICAoSlNDOjpQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VZaWVsZEV4cHJl
c3Npb24pOgorICAgICAgICAoSlNDOjpQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VQcm9wZXJ0eSk6
CisgICAgICAgIChKU0M6OlBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZU1lbWJlckV4cHJlc3Npb24p
OgorICAgICAgICAoSlNDOjpQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VVbmFyeUV4cHJlc3Npb24p
OgorICAgICAgICAqIHBhcnNlci9QYXJzZXIuaDoKKyAgICAgICAgKEpTQzo6UGFyc2VyOjpsZXhD
dXJyZW50VG9rZW5BZ2FpblVuZGVyQ3VycmVudENvbnRleHQpOgorICAgICAgICAoSlNDOjpQYXJz
ZXI6OmludGVybmFsU2F2ZVBhcnNlclN0YXRlKToKKyAgICAgICAgKEpTQzo6UGFyc2VyOjpyZXN0
b3JlUGFyc2VyU3RhdGUpOgorICAgICAgICAoSlNDOjpQYXJzZXI6OmludGVybmFsU2F2ZVN0YXRl
KToKKyAgICAgICAgKEpTQzo6UGFyc2VyOjpzd2FwU2F2ZVBvaW50Rm9yRXJyb3IpOgorICAgICAg
ICAoSlNDOjpQYXJzZXI6OmNyZWF0ZVNhdmVQb2ludCk6CisgICAgICAgIChKU0M6OlBhcnNlcjo6
aW50ZXJuYWxSZXN0b3JlU3RhdGUpOgorICAgICAgICAoSlNDOjpQYXJzZXI6OnJlc3RvcmVTYXZl
UG9pbnRXaXRoRXJyb3IpOgorICAgICAgICAoSlNDOjpQYXJzZXI6OnJlc3RvcmVTYXZlUG9pbnQp
OgorICAgICAgICAoSlNDOjpQYXJzZXI6OmNyZWF0ZVNhdmVQb2ludEZvckVycm9yKTogRGVsZXRl
ZC4KKyAgICAgICAgKiBwYXJzZXIvUGFyc2VyVG9rZW5zLmg6CisgICAgICAgIChKU0M6OkpTVGV4
dFBvc2l0aW9uOjpKU1RleHRQb3NpdGlvbik6CisgICAgICAgIChKU0M6OkpTVGV4dFBvc2l0aW9u
OjpjaGVja0NvbnNpc3RlbmN5KToKKyAgICAgICAgKiBwYXJzZXIvU3ludGF4Q2hlY2tlci5oOgor
ICAgICAgICAoSlNDOjpTeW50YXhDaGVja2VyOjpvcGVyYXRvclN0YWNrUG9wKToKKwogMjAyMC0w
MS0yNCAgTWFyayBMYW0gIDxtYXJrLmxhbUBhcHBsZS5jb20+CiAKICAgICAgICAgSW50bE9iamVj
dCdzIGNhY2hlZCBzdHJpbmdzIHNob3VsZCBiZSBpbW1vcnRhbCBhbmQgc2FmZSBmb3IgY29uY3Vy
cmVudCBhY2Nlc3MuCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBp
bGVyL0J5dGVjb2RlR2VuZXJhdG9yLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBp
bGVyL0J5dGVjb2RlR2VuZXJhdG9yLmgKaW5kZXggNDJjNjMwMjYwZWU2ZWI4ZGI2MTYzMzgyZjYw
ZjY3YzVlODQwZjdmMC4uMTQ4YWViNjM2NThkMjc3MzZkN2ZiYjFmZTE4NTYwMjc1YjZjYzQ5NSAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdl
bmVyYXRvci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNv
ZGVHZW5lcmF0b3IuaApAQCAtNTkzLDYgKzU5Myw5IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAg
ICAgICAgQVNTRVJUKGRpdm90Lm9mZnNldCA+PSBkaXZvdFN0YXJ0Lm9mZnNldCk7CiAgICAgICAg
ICAgICBBU1NFUlQoZGl2b3RFbmQub2Zmc2V0ID49IGRpdm90Lm9mZnNldCk7CiAKKyAgICAgICAg
ICAgIGlmIChtX2lzQnVpbHRpbkZ1bmN0aW9uKQorICAgICAgICAgICAgICAgIHJldHVybjsKKwog
ICAgICAgICAgICAgaW50IHNvdXJjZU9mZnNldCA9IG1fc2NvcGVOb2RlLT5zb3VyY2UoKS5zdGFy
dE9mZnNldCgpOwogICAgICAgICAgICAgdW5zaWduZWQgZmlyc3RMaW5lID0gbV9zY29wZU5vZGUt
PnNvdXJjZSgpLmZpcnN0TGluZSgpLm9uZUJhc2VkSW50KCk7CiAKQEAgLTYxNiw4ICs2MTksNyBA
QCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAgIHVuc2lnbmVkIGNvbHVtbiA9IGRpdm90T2Zm
c2V0IC0gbGluZVN0YXJ0OwogCiAgICAgICAgICAgICB1bnNpZ25lZCBpbnN0cnVjdGlvbk9mZnNl
dCA9IGluc3RydWN0aW9ucygpLnNpemUoKTsKLSAgICAgICAgICAgIGlmICghbV9pc0J1aWx0aW5G
dW5jdGlvbikKLSAgICAgICAgICAgICAgICBtX2NvZGVCbG9jay0+YWRkRXhwcmVzc2lvbkluZm8o
aW5zdHJ1Y3Rpb25PZmZzZXQsIGRpdm90T2Zmc2V0LCBzdGFydE9mZnNldCwgZW5kT2Zmc2V0LCBs
aW5lLCBjb2x1bW4pOworICAgICAgICAgICAgbV9jb2RlQmxvY2stPmFkZEV4cHJlc3Npb25JbmZv
KGluc3RydWN0aW9uT2Zmc2V0LCBkaXZvdE9mZnNldCwgc3RhcnRPZmZzZXQsIGVuZE9mZnNldCwg
bGluZSwgY29sdW1uKTsKICAgICAgICAgfQogCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcAppbmRleCBhYjk2ZDk1MDYzZTc3NGQ1
N2ZkODRlMzUyMzJhMDZlNTkwYzcyZDRhLi5kMzgzYTdjNzE3ZTVkNWNjMTM5ZTk0NDhiYzc4Njhl
ZDc1YTgwNjYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVy
L05vZGVzQ29kZWdlbi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxl
ci9Ob2Rlc0NvZGVnZW4uY3BwCkBAIC0xNzQsOCArMTc0LDggQEAgUmVnaXN0ZXJJRCogVGhpc05v
ZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklE
KiBkc3QKICAgICAgICAgcmV0dXJuIDA7CiAKICAgICBSZWdpc3RlcklEKiByZXN1bHQgPSBnZW5l
cmF0b3IubW92ZShkc3QsIGdlbmVyYXRvci50aGlzUmVnaXN0ZXIoKSk7Ci0gICAgc3RhdGljIGNv
bnN0ZXhwciB1bnNpZ25lZCB0aGlzTGVuZ3RoID0gNDsKLSAgICBnZW5lcmF0b3IuZW1pdFByb2Zp
bGVUeXBlKGdlbmVyYXRvci50aGlzUmVnaXN0ZXIoKSwgcG9zaXRpb24oKSwgSlNUZXh0UG9zaXRp
b24oLTEsIHBvc2l0aW9uKCkub2Zmc2V0ICsgdGhpc0xlbmd0aCwgLTEpKTsKKyAgICBzdGF0aWMg
Y29uc3QgdW5zaWduZWQgdGhpc0xlbmd0aCA9IHN0cmxlbigidGhpcyIpOworICAgIGdlbmVyYXRv
ci5lbWl0UHJvZmlsZVR5cGUoZ2VuZXJhdG9yLnRoaXNSZWdpc3RlcigpLCBwb3NpdGlvbigpLCBw
b3NpdGlvbigpICsgdGhpc0xlbmd0aCk7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIApAQCAtMjU4
LDcgKzI1OCw3IEBAIFJlZ2lzdGVySUQqIFJlc29sdmVOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNv
ZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCoKICAgICAgICAgaWYgKGRzdCA9PSBn
ZW5lcmF0b3IuaWdub3JlZFJlc3VsdCgpKQogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAK
LSAgICAgICAgZ2VuZXJhdG9yLmVtaXRQcm9maWxlVHlwZShsb2NhbCwgdmFyLCBtX3Bvc2l0aW9u
LCBKU1RleHRQb3NpdGlvbigtMSwgbV9wb3NpdGlvbi5vZmZzZXQgKyBtX2lkZW50Lmxlbmd0aCgp
LCAtMSkpOworICAgICAgICBnZW5lcmF0b3IuZW1pdFByb2ZpbGVUeXBlKGxvY2FsLCB2YXIsIG1f
cG9zaXRpb24sIG1fcG9zaXRpb24gKyBtX2lkZW50Lmxlbmd0aCgpKTsKICAgICAgICAgcmV0dXJu
IGdlbmVyYXRvci5tb3ZlKGRzdCwgbG9jYWwpOwogICAgIH0KICAgICAKQEAgLTI3MCw3ICsyNzAs
NyBAQCBSZWdpc3RlcklEKiBSZXNvbHZlTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJh
dG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqCiAgICAgZ2VuZXJhdG9yLmVtaXRHZXRGcm9tU2Nv
cGUodW5jaGVja2VkUmVzdWx0LmdldCgpLCBzY29wZS5nZXQoKSwgdmFyLCBUaHJvd0lmTm90Rm91
bmQpOwogICAgIGdlbmVyYXRvci5lbWl0VERaQ2hlY2tJZk5lY2Vzc2FyeSh2YXIsIHVuY2hlY2tl
ZFJlc3VsdC5nZXQoKSwgbnVsbHB0cik7CiAgICAgZ2VuZXJhdG9yLm1vdmUoZmluYWxEZXN0LCB1
bmNoZWNrZWRSZXN1bHQuZ2V0KCkpOwotICAgIGdlbmVyYXRvci5lbWl0UHJvZmlsZVR5cGUoZmlu
YWxEZXN0LCB2YXIsIG1fcG9zaXRpb24sIEpTVGV4dFBvc2l0aW9uKC0xLCBtX3Bvc2l0aW9uLm9m
ZnNldCArIG1faWRlbnQubGVuZ3RoKCksIC0xKSk7CisgICAgZ2VuZXJhdG9yLmVtaXRQcm9maWxl
VHlwZShmaW5hbERlc3QsIHZhciwgbV9wb3NpdGlvbiwgbV9wb3NpdGlvbiArIG1faWRlbnQubGVu
Z3RoKCkpOwogICAgIHJldHVybiBmaW5hbERlc3Q7CiB9CiAKQEAgLTMwODgsMTEgKzMwODgsMTEg
QEAgUmVnaXN0ZXJJRCogRW1wdHlWYXJFeHByZXNzaW9uOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVH
ZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXMKIAogICAgIFZhcmlhYmxlIHZhciA9IGdlbmVyYXRv
ci52YXJpYWJsZShtX2lkZW50KTsKICAgICBpZiAoUmVnaXN0ZXJJRCogbG9jYWwgPSB2YXIubG9j
YWwoKSkKLSAgICAgICAgZ2VuZXJhdG9yLmVtaXRQcm9maWxlVHlwZShsb2NhbCwgdmFyLCBwb3Np
dGlvbigpLCBKU1RleHRQb3NpdGlvbigtMSwgcG9zaXRpb24oKS5vZmZzZXQgKyBtX2lkZW50Lmxl
bmd0aCgpLCAtMSkpOworICAgICAgICBnZW5lcmF0b3IuZW1pdFByb2ZpbGVUeXBlKGxvY2FsLCB2
YXIsIHBvc2l0aW9uKCksIHBvc2l0aW9uKCkgKyBtX2lkZW50Lmxlbmd0aCgpKTsKICAgICBlbHNl
IHsKICAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHNjb3BlID0gZ2VuZXJhdG9yLmVtaXRSZXNv
bHZlU2NvcGUobnVsbHB0ciwgdmFyKTsKICAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHZhbHVl
ID0gZ2VuZXJhdG9yLmVtaXRHZXRGcm9tU2NvcGUoZ2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgpLCBz
Y29wZS5nZXQoKSwgdmFyLCBEb05vdFRocm93SWZOb3RGb3VuZCk7Ci0gICAgICAgIGdlbmVyYXRv
ci5lbWl0UHJvZmlsZVR5cGUodmFsdWUuZ2V0KCksIHZhciwgcG9zaXRpb24oKSwgSlNUZXh0UG9z
aXRpb24oLTEsIHBvc2l0aW9uKCkub2Zmc2V0ICsgbV9pZGVudC5sZW5ndGgoKSwgLTEpKTsKKyAg
ICAgICAgZ2VuZXJhdG9yLmVtaXRQcm9maWxlVHlwZSh2YWx1ZS5nZXQoKSwgdmFyLCBwb3NpdGlv
bigpLCBwb3NpdGlvbigpICsgbV9pZGVudC5sZW5ndGgoKSk7CiAgICAgfQogCiAgICAgcmV0dXJu
IG51bGxwdHI7CkBAIC0zMTA3LDEyICszMTA3LDEyIEBAIFJlZ2lzdGVySUQqIEVtcHR5TGV0RXhw
cmVzc2lvbjo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lz
CiAgICAgVmFyaWFibGUgdmFyID0gZ2VuZXJhdG9yLnZhcmlhYmxlKG1faWRlbnQpOwogICAgIGlm
IChSZWdpc3RlcklEKiBsb2NhbCA9IHZhci5sb2NhbCgpKSB7CiAgICAgICAgIGdlbmVyYXRvci5l
bWl0TG9hZChsb2NhbCwganNVbmRlZmluZWQoKSk7Ci0gICAgICAgIGdlbmVyYXRvci5lbWl0UHJv
ZmlsZVR5cGUobG9jYWwsIHZhciwgcG9zaXRpb24oKSwgSlNUZXh0UG9zaXRpb24oLTEsIHBvc2l0
aW9uKCkub2Zmc2V0ICsgbV9pZGVudC5sZW5ndGgoKSwgLTEpKTsKKyAgICAgICAgZ2VuZXJhdG9y
LmVtaXRQcm9maWxlVHlwZShsb2NhbCwgdmFyLCBwb3NpdGlvbigpLCBwb3NpdGlvbigpICsgbV9p
ZGVudC5sZW5ndGgoKSk7CiAgICAgfSBlbHNlIHsKICAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+
IHNjb3BlID0gZ2VuZXJhdG9yLmVtaXRSZXNvbHZlU2NvcGUobnVsbHB0ciwgdmFyKTsKICAgICAg
ICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHZhbHVlID0gZ2VuZXJhdG9yLmVtaXRMb2FkKG51bGxwdHIs
IGpzVW5kZWZpbmVkKCkpOwogICAgICAgICBnZW5lcmF0b3IuZW1pdFB1dFRvU2NvcGUoc2NvcGUu
Z2V0KCksIHZhciwgdmFsdWUuZ2V0KCksIGdlbmVyYXRvci5pc1N0cmljdE1vZGUoKSA/IFRocm93
SWZOb3RGb3VuZCA6IERvTm90VGhyb3dJZk5vdEZvdW5kLCBJbml0aWFsaXphdGlvbk1vZGU6Oklu
aXRpYWxpemF0aW9uKTsKLSAgICAgICAgZ2VuZXJhdG9yLmVtaXRQcm9maWxlVHlwZSh2YWx1ZS5n
ZXQoKSwgdmFyLCBwb3NpdGlvbigpLCBKU1RleHRQb3NpdGlvbigtMSwgcG9zaXRpb24oKS5vZmZz
ZXQgKyBtX2lkZW50Lmxlbmd0aCgpLCAtMSkpOyAKKyAgICAgICAgZ2VuZXJhdG9yLmVtaXRQcm9m
aWxlVHlwZSh2YWx1ZS5nZXQoKSwgdmFyLCBwb3NpdGlvbigpLCBwb3NpdGlvbigpICsgbV9pZGVu
dC5sZW5ndGgoKSk7IAogICAgIH0KIAogICAgIGdlbmVyYXRvci5saWZ0VERaQ2hlY2tJZlBvc3Np
YmxlKHZhcik7CkBAIC0zMzI5LDcgKzMzMjksNyBAQCB2b2lkIEZvckluTm9kZTo6ZW1pdExvb3BI
ZWFkZXIoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogcHJvcGVydAog
ICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRFeHByZXNzaW9uSW5mbyhkaXZvdCgpLCBkaXZvdFN0
YXJ0KCksIGRpdm90RW5kKCkpOwogICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRQdXRUb1Njb3Bl
KHNjb3BlLmdldCgpLCB2YXIsIHByb3BlcnR5TmFtZSwgZ2VuZXJhdG9yLmlzU3RyaWN0TW9kZSgp
ID8gVGhyb3dJZk5vdEZvdW5kIDogRG9Ob3RUaHJvd0lmTm90Rm91bmQsIEluaXRpYWxpemF0aW9u
TW9kZTo6Tm90SW5pdGlhbGl6YXRpb24pOwogICAgICAgICB9Ci0gICAgICAgIGdlbmVyYXRvci5l
bWl0UHJvZmlsZVR5cGUocHJvcGVydHlOYW1lLCB2YXIsIG1fbGV4cHItPnBvc2l0aW9uKCksIEpT
VGV4dFBvc2l0aW9uKC0xLCBtX2xleHByLT5wb3NpdGlvbigpLm9mZnNldCArIGlkZW50Lmxlbmd0
aCgpLCAtMSkpOworICAgICAgICBnZW5lcmF0b3IuZW1pdFByb2ZpbGVUeXBlKHByb3BlcnR5TmFt
ZSwgdmFyLCBtX2xleHByLT5wb3NpdGlvbigpLCBtX2xleHByLT5wb3NpdGlvbigpICsgaWRlbnQu
bGVuZ3RoKCkpOwogICAgIH07CiAKICAgICBpZiAobV9sZXhwci0+aXNSZXNvbHZlTm9kZSgpKSB7
CkBAIC0zNTg2LDcgKzM1ODYsNyBAQCB2b2lkIEZvck9mTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVj
b2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRzdCkKICAgICAgICAgICAgICAg
ICBnZW5lcmF0b3IuZW1pdEV4cHJlc3Npb25JbmZvKGRpdm90KCksIGRpdm90U3RhcnQoKSwgZGl2
b3RFbmQoKSk7CiAgICAgICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRQdXRUb1Njb3BlKHNjb3Bl
LmdldCgpLCB2YXIsIHZhbHVlLCBnZW5lcmF0b3IuaXNTdHJpY3RNb2RlKCkgPyBUaHJvd0lmTm90
Rm91bmQgOiBEb05vdFRocm93SWZOb3RGb3VuZCwgSW5pdGlhbGl6YXRpb25Nb2RlOjpOb3RJbml0
aWFsaXphdGlvbik7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBnZW5lcmF0b3IuZW1pdFBy
b2ZpbGVUeXBlKHZhbHVlLCB2YXIsIG1fbGV4cHItPnBvc2l0aW9uKCksIEpTVGV4dFBvc2l0aW9u
KC0xLCBtX2xleHByLT5wb3NpdGlvbigpLm9mZnNldCArIGlkZW50Lmxlbmd0aCgpLCAtMSkpOwor
ICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRQcm9maWxlVHlwZSh2YWx1ZSwgdmFyLCBtX2xleHBy
LT5wb3NpdGlvbigpLCBtX2xleHByLT5wb3NpdGlvbigpICsgaWRlbnQubGVuZ3RoKCkpOwogICAg
ICAgICB9IGVsc2UgaWYgKG1fbGV4cHItPmlzRG90QWNjZXNzb3JOb2RlKCkpIHsKICAgICAgICAg
ICAgIERvdEFjY2Vzc29yTm9kZSogYXNzaWduTm9kZSA9IHN0YXRpY19jYXN0PERvdEFjY2Vzc29y
Tm9kZSo+KG1fbGV4cHIpOwogICAgICAgICAgICAgY29uc3QgSWRlbnRpZmllciYgaWRlbnQgPSBh
c3NpZ25Ob2RlLT5pZGVudGlmaWVyKCk7CkBAIC00MzUwLDcgKzQzNTAsNyBAQCB2b2lkIERlZmlu
ZUZpZWxkTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJl
Z2lzdGVySUQqKQogICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gc2NvcGUgPSBnZW5lcmF0b3Iu
ZW1pdFJlc29sdmVTY29wZShnZW5lcmF0b3IubmV3VGVtcG9yYXJ5KCksIHZhcik7CiAgICAgICAg
IFJlZlB0cjxSZWdpc3RlcklEPiBwcml2YXRlTmFtZSA9IGdlbmVyYXRvci5uZXdUZW1wb3Jhcnko
KTsKICAgICAgICAgZ2VuZXJhdG9yLmVtaXRHZXRGcm9tU2NvcGUocHJpdmF0ZU5hbWUuZ2V0KCks
IHNjb3BlLmdldCgpLCB2YXIsIFRocm93SWZOb3RGb3VuZCk7Ci0gICAgICAgIGdlbmVyYXRvci5l
bWl0UHJvZmlsZVR5cGUocHJpdmF0ZU5hbWUuZ2V0KCksIHZhciwgbV9wb3NpdGlvbiwgSlNUZXh0
UG9zaXRpb24oLTEsIG1fcG9zaXRpb24ub2Zmc2V0ICsgbV9pZGVudC0+bGVuZ3RoKCksIC0xKSk7
CisgICAgICAgIGdlbmVyYXRvci5lbWl0UHJvZmlsZVR5cGUocHJpdmF0ZU5hbWUuZ2V0KCksIHZh
ciwgbV9wb3NpdGlvbiwgbV9wb3NpdGlvbiArIG1faWRlbnQtPmxlbmd0aCgpKTsKICAgICAgICAg
Z2VuZXJhdG9yLmVtaXRDYWxsRGVmaW5lUHJvcGVydHkoZ2VuZXJhdG9yLnRoaXNSZWdpc3Rlcigp
LCBwcml2YXRlTmFtZS5nZXQoKSwgdmFsdWUuZ2V0KCksIG51bGxwdHIsIG51bGxwdHIsIEJ5dGVj
b2RlR2VuZXJhdG9yOjpQcm9wZXJ0eUNvbmZpZ3VyYWJsZSB8IEJ5dGVjb2RlR2VuZXJhdG9yOjpQ
cm9wZXJ0eVdyaXRhYmxlIHwgQnl0ZWNvZGVHZW5lcmF0b3I6OlByb3BlcnR5RW51bWVyYWJsZSwg
bV9wb3NpdGlvbik7CiAgICAgICAgIGJyZWFrOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9wYXJzZXIvQVNUQnVpbGRlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3BhcnNlci9BU1RCdWlsZGVyLmgKaW5kZXggZGJkNTNhZTc2MDg0ZjJkYTliNzVlNzRmNjFmOGE3
MDRjNzhkMzk2MC4uNGM2MTczMGVkZWM4YWRlYmU5NWQ2OWZhYTcwNWVjMWMyMGJmNWU5OCAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9BU1RCdWlsZGVyLmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9BU1RCdWlsZGVyLmgKQEAgLTkyNiw2ICs5MjYs
MTYgQEAgcHVibGljOgogICAgICAgICB0b2tlblN0YWNrRGVwdGgtLTsKICAgICAgICAgbV91bmFy
eVRva2VuU3RhY2sucmVtb3ZlTGFzdCgpOwogICAgIH0KKworICAgIGludCB1bmFyeVRva2VuU3Rh
Y2tEZXB0aCgpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gbV91bmFyeVRva2VuU3RhY2su
c2l6ZSgpOworICAgIH0KKworICAgIHZvaWQgc2V0VW5hcnlUb2tlblN0YWNrRGVwdGgoaW50IG9s
ZERlcHRoKQorICAgIHsKKyAgICAgICAgbV91bmFyeVRva2VuU3RhY2suc2hyaW5rKG9sZERlcHRo
KTsKKyAgICB9CiAgICAgCiAgICAgdm9pZCBhc3NpZ25tZW50U3RhY2tBcHBlbmQoaW50JiBhc3Np
Z25tZW50U3RhY2tEZXB0aCwgRXhwcmVzc2lvbk5vZGUqIG5vZGUsIGNvbnN0IEpTVGV4dFBvc2l0
aW9uJiBzdGFydCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90LCBpbnQgYXNzaWdubWVudENv
dW50LCBPcGVyYXRvciBvcCkKICAgICB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcGFyc2VyL0xleGVyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTGV4ZXIu
Y3BwCmluZGV4IGMzNDFmNDkyNzgyNTRlMjc3N2QwYjJjZDczYmQ1NWMyZDIzYWE3ZTEuLjk3Y2Fi
ZTFjMjRjY2E2MTQyNzc2YmNiNjEwYzgyNDA2NjhjMTlkZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9wYXJzZXIvTGV4ZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9wYXJzZXIvTGV4ZXIuY3BwCkBAIC00OTQsNyArNDk0LDggQEAgc3RhdGljIGNvbnN0ZXhwciBj
b25zdCBMQ2hhciBzaW5nbGVDaGFyYWN0ZXJFc2NhcGVWYWx1ZXNGb3JBU0NJSVsxMjhdID0gewog
CiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KIExleGVyPFQ+OjpMZXhlcihWTSYgdm0sIEpTUGFyc2Vy
QnVpbHRpbk1vZGUgYnVpbHRpbk1vZGUsIEpTUGFyc2VyU2NyaXB0TW9kZSBzY3JpcHRNb2RlKQot
ICAgIDogbV9pc1JlcGFyc2luZ0Z1bmN0aW9uKGZhbHNlKQorICAgIDogbV9wb3NpdGlvbkJlZm9y
ZUxhc3ROZXdsaW5lKDAsMCwwKQorICAgICwgbV9pc1JlcGFyc2luZ0Z1bmN0aW9uKGZhbHNlKQog
ICAgICwgbV92bSh2bSkKICAgICAsIG1fcGFyc2luZ0J1aWx0aW5GdW5jdGlvbihidWlsdGluTW9k
ZSA9PSBKU1BhcnNlckJ1aWx0aW5Nb2RlOjpCdWlsdGluKQogICAgICwgbV9zY3JpcHRNb2RlKHNj
cmlwdE1vZGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL0xleGVy
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL0xleGVyLmgKaW5kZXggZmQ4MjU4MDNj
ODEyMDY1MmM3NjQ3NmU5OGQyNjU2OGMwY2Y3MmJiMy4uZWZmY2E0YTgxNTZmN2RhMzA2ZjcyMjY2
ODcyNWI1NjMyNDQwZGY0OCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNl
ci9MZXhlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTGV4ZXIuaApAQCAt
MTA5LDYgKzEwOSw3IEBAIHB1YmxpYzoKICAgICB9CiAgICAgdm9pZCBzZXRMaW5lTnVtYmVyKGlu
dCBsaW5lKQogICAgIHsKKyAgICAgICAgQVNTRVJUKGxpbmUgPj0gMCk7CiAgICAgICAgIG1fbGlu
ZU51bWJlciA9IGxpbmU7CiAgICAgfQogICAgIHZvaWQgc2V0SGFzTGluZVRlcm1pbmF0b3JCZWZv
cmVUb2tlbihib29sIHRlcm1pbmF0b3IpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcGFyc2VyL05vZGVzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMu
Y3BwCmluZGV4IGRkOGVkYjY4NzkxMWJmZjIyMTAyYmM0OWJkNWNlNTUzMWRhOWYwOGUuLjlkMWNm
YTRmMTc2MTMwMmEzM2JiYWUzMWVmNjBmZGZjYWYyMDdkZjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9wYXJzZXIvTm9kZXMuY3BwCkBAIC0yNTQsMjQgKzI1NCwyNCBAQCB2b2lkIEZ1bmN0aW9uTWV0
YWRhdGFOb2RlOjpzZXRFbmRQb3NpdGlvbihKU1RleHRQb3NpdGlvbiBwb3NpdGlvbikKIAogYm9v
bCBGdW5jdGlvbk1ldGFkYXRhTm9kZTo6b3BlcmF0b3I9PShjb25zdCBGdW5jdGlvbk1ldGFkYXRh
Tm9kZSYgb3RoZXIpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1fcGFyc2VNb2RlPT0gb3RoZXIubV9w
YXJzZU1vZGUKKyAgICByZXR1cm4gbV9wYXJzZU1vZGUgPT0gb3RoZXIubV9wYXJzZU1vZGUKICAg
ICAgICAgJiYgbV9pc0luU3RyaWN0Q29udGV4dCA9PSBvdGhlci5tX2lzSW5TdHJpY3RDb250ZXh0
CiAgICAgICAgICYmIG1fc3VwZXJCaW5kaW5nID09IG90aGVyLm1fc3VwZXJCaW5kaW5nCiAgICAg
ICAgICYmIG1fY29uc3RydWN0b3JLaW5kID09IG90aGVyLm1fY29uc3RydWN0b3JLaW5kCiAgICAg
ICAgICYmIG1faXNBcnJvd0Z1bmN0aW9uQm9keUV4cHJlc3Npb24gPT0gb3RoZXIubV9pc0Fycm93
RnVuY3Rpb25Cb2R5RXhwcmVzc2lvbgogICAgICAgICAmJiBtX2lkZW50ID09IG90aGVyLm1faWRl
bnQKICAgICAgICAgJiYgbV9lY21hTmFtZSA9PSBvdGhlci5tX2VjbWFOYW1lCi0gICAgICAgICYm
IG1fZnVuY3Rpb25Nb2RlPT0gb3RoZXIubV9mdW5jdGlvbk1vZGUKLSAgICAgICAgJiYgbV9zdGFy
dENvbHVtbj09IG90aGVyLm1fc3RhcnRDb2x1bW4KLSAgICAgICAgJiYgbV9lbmRDb2x1bW49PSBv
dGhlci5tX2VuZENvbHVtbgotICAgICAgICAmJiBtX2Z1bmN0aW9uS2V5d29yZFN0YXJ0PT0gb3Ro
ZXIubV9mdW5jdGlvbktleXdvcmRTdGFydAotICAgICAgICAmJiBtX2Z1bmN0aW9uTmFtZVN0YXJ0
PT0gb3RoZXIubV9mdW5jdGlvbk5hbWVTdGFydAotICAgICAgICAmJiBtX3BhcmFtZXRlcnNTdGFy
dD09IG90aGVyLm1fcGFyYW1ldGVyc1N0YXJ0Ci0gICAgICAgICYmIG1fc291cmNlPT0gb3RoZXIu
bV9zb3VyY2UKLSAgICAgICAgJiYgbV9jbGFzc1NvdXJjZT09IG90aGVyLm1fY2xhc3NTb3VyY2UK
LSAgICAgICAgJiYgbV9zdGFydFN0YXJ0T2Zmc2V0PT0gb3RoZXIubV9zdGFydFN0YXJ0T2Zmc2V0
Ci0gICAgICAgICYmIG1fcGFyYW1ldGVyQ291bnQ9PSBvdGhlci5tX3BhcmFtZXRlckNvdW50Ci0g
ICAgICAgICYmIG1fbGFzdExpbmU9PSBvdGhlci5tX2xhc3RMaW5lCisgICAgICAgICYmIG1fZnVu
Y3Rpb25Nb2RlID09IG90aGVyLm1fZnVuY3Rpb25Nb2RlCisgICAgICAgICYmIG1fc3RhcnRDb2x1
bW4gPT0gb3RoZXIubV9zdGFydENvbHVtbgorICAgICAgICAmJiBtX2VuZENvbHVtbiA9PSBvdGhl
ci5tX2VuZENvbHVtbgorICAgICAgICAmJiBtX2Z1bmN0aW9uS2V5d29yZFN0YXJ0ID09IG90aGVy
Lm1fZnVuY3Rpb25LZXl3b3JkU3RhcnQKKyAgICAgICAgJiYgbV9mdW5jdGlvbk5hbWVTdGFydCA9
PSBvdGhlci5tX2Z1bmN0aW9uTmFtZVN0YXJ0CisgICAgICAgICYmIG1fcGFyYW1ldGVyc1N0YXJ0
ID09IG90aGVyLm1fcGFyYW1ldGVyc1N0YXJ0CisgICAgICAgICYmIG1fc291cmNlID09IG90aGVy
Lm1fc291cmNlCisgICAgICAgICYmIG1fY2xhc3NTb3VyY2UgPT0gb3RoZXIubV9jbGFzc1NvdXJj
ZQorICAgICAgICAmJiBtX3N0YXJ0U3RhcnRPZmZzZXQgPT0gb3RoZXIubV9zdGFydFN0YXJ0T2Zm
c2V0CisgICAgICAgICYmIG1fcGFyYW1ldGVyQ291bnQgPT0gb3RoZXIubV9wYXJhbWV0ZXJDb3Vu
dAorICAgICAgICAmJiBtX2xhc3RMaW5lID09IG90aGVyLm1fbGFzdExpbmUKICAgICAgICAgJiYg
bV9wb3NpdGlvbiA9PSBvdGhlci5tX3Bvc2l0aW9uOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFy
c2VyL05vZGVzLmgKaW5kZXggMmE4MzY0Njc2ZTY3MWM2Zjc5MzRhOThkZDNmY2E5YjA5MDE1YmE1
ZC4uNDlhYWM0NzM1ODA3MGUzZjM4Yjc4YzIxMmYwMjMyOTEzNWE5NmZiYSAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rlcy5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9wYXJzZXIvTm9kZXMuaApAQCAtMzcyLDM3ICszNzIsMzYgQEAgbmFtZXNwYWNlIEpT
QyB7CiAKICAgICBjbGFzcyBUaHJvd2FibGVFeHByZXNzaW9uRGF0YSB7CiAgICAgcHVibGljOgot
ICAgICAgICBUaHJvd2FibGVFeHByZXNzaW9uRGF0YSgpCi0gICAgICAgICAgICA6IG1fZGl2b3Qo
LTEsIC0xLCAtMSkKLSAgICAgICAgICAgICwgbV9kaXZvdFN0YXJ0KC0xLCAtMSwgLTEpCi0gICAg
ICAgICAgICAsIG1fZGl2b3RFbmQoLTEsIC0xLCAtMSkKLSAgICAgICAgewotICAgICAgICB9Cisg
ICAgICAgIFRocm93YWJsZUV4cHJlc3Npb25EYXRhKCkgPSBkZWZhdWx0OwogICAgICAgICAKICAg
ICAgICAgVGhyb3dhYmxlRXhwcmVzc2lvbkRhdGEoY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90
LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgc3RhcnQsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBlbmQp
CiAgICAgICAgICAgICA6IG1fZGl2b3QoZGl2b3QpCiAgICAgICAgICAgICAsIG1fZGl2b3RTdGFy
dChzdGFydCkKICAgICAgICAgICAgICwgbV9kaXZvdEVuZChlbmQpCiAgICAgICAgIHsKLSAgICAg
ICAgICAgIEFTU0VSVChtX2Rpdm90Lm9mZnNldCA+PSBtX2Rpdm90LmxpbmVTdGFydE9mZnNldCk7
Ci0gICAgICAgICAgICBBU1NFUlQobV9kaXZvdFN0YXJ0Lm9mZnNldCA+PSBtX2Rpdm90U3RhcnQu
bGluZVN0YXJ0T2Zmc2V0KTsKLSAgICAgICAgICAgIEFTU0VSVChtX2Rpdm90RW5kLm9mZnNldCA+
PSBtX2Rpdm90RW5kLmxpbmVTdGFydE9mZnNldCk7CisgICAgICAgICAgICBjaGVja0NvbnNpc3Rl
bmN5KCk7CiAgICAgICAgIH0KIAogICAgICAgICB2b2lkIHNldEV4Y2VwdGlvblNvdXJjZUNvZGUo
Y29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3RT
dGFydCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90RW5kKQogICAgICAgICB7Ci0gICAgICAg
ICAgICBBU1NFUlQoZGl2b3Qub2Zmc2V0ID49IGRpdm90LmxpbmVTdGFydE9mZnNldCk7Ci0gICAg
ICAgICAgICBBU1NFUlQoZGl2b3RTdGFydC5vZmZzZXQgPj0gZGl2b3RTdGFydC5saW5lU3RhcnRP
ZmZzZXQpOwotICAgICAgICAgICAgQVNTRVJUKGRpdm90RW5kLm9mZnNldCA+PSBkaXZvdEVuZC5s
aW5lU3RhcnRPZmZzZXQpOwogICAgICAgICAgICAgbV9kaXZvdCA9IGRpdm90OwogICAgICAgICAg
ICAgbV9kaXZvdFN0YXJ0ID0gZGl2b3RTdGFydDsKICAgICAgICAgICAgIG1fZGl2b3RFbmQgPSBk
aXZvdEVuZDsKKyAgICAgICAgICAgIGNoZWNrQ29uc2lzdGVuY3koKTsKICAgICAgICAgfQogCiAg
ICAgICAgIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdCgpIGNvbnN0IHsgcmV0dXJuIG1fZGl2
b3Q7IH0KICAgICAgICAgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90U3RhcnQoKSBjb25zdCB7
IHJldHVybiBtX2Rpdm90U3RhcnQ7IH0KICAgICAgICAgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRp
dm90RW5kKCkgY29uc3QgeyByZXR1cm4gbV9kaXZvdEVuZDsgfQogCisgICAgICAgIHZvaWQgY2hl
Y2tDb25zaXN0ZW5jeSgpIGNvbnN0CisgICAgICAgIHsKKyAgICAgICAgICAgIEFTU0VSVChtX2Rp
dm90Lm9mZnNldCA+PSBtX2Rpdm90LmxpbmVTdGFydE9mZnNldCk7CisgICAgICAgICAgICBBU1NF
UlQobV9kaXZvdFN0YXJ0Lm9mZnNldCA+PSBtX2Rpdm90U3RhcnQubGluZVN0YXJ0T2Zmc2V0KTsK
KyAgICAgICAgICAgIEFTU0VSVChtX2Rpdm90RW5kLm9mZnNldCA+PSBtX2Rpdm90RW5kLmxpbmVT
dGFydE9mZnNldCk7CisgICAgICAgICAgICBBU1NFUlQobV9kaXZvdC5vZmZzZXQgPj0gbV9kaXZv
dFN0YXJ0Lm9mZnNldCk7CisgICAgICAgICAgICBBU1NFUlQobV9kaXZvdEVuZC5vZmZzZXQgPj0g
bV9kaXZvdC5vZmZzZXQpOworICAgICAgICB9CiAgICAgcHJvdGVjdGVkOgogICAgICAgICBSZWdp
c3RlcklEKiBlbWl0VGhyb3dSZWZlcmVuY2VFcnJvcihCeXRlY29kZUdlbmVyYXRvciYsIGNvbnN0
IFN0cmluZyYgbWVzc2FnZSk7CiAKQEAgLTIxMzMsNyArMjEzMiw3IEBAIG5hbWVzcGFjZSBKU0Mg
ewogICAgICAgICBTb3VyY2VDb2RlIG1fY2xhc3NTb3VyY2U7CiAgICAgICAgIGludCBtX3N0YXJ0
U3RhcnRPZmZzZXQ7CiAgICAgICAgIHVuc2lnbmVkIG1fcGFyYW1ldGVyQ291bnQ7Ci0gICAgICAg
IGludCBtX2xhc3RMaW5lOworICAgICAgICBpbnQgbV9sYXN0TGluZSB7IDAgfTsKICAgICB9Owog
CiAgICAgY2xhc3MgRnVuY3Rpb25Ob2RlIGZpbmFsIDogcHVibGljIFNjb3BlTm9kZSB7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5jcHAKaW5kZXggYjgxMTMyYjNlZGQ2YTQ4OWRi
MjI3YmM3MTExMDQ0NDRjNTljMDYwZC4uYzJmYTYwN2YyNzhmMjdjMzM1MWVkMTk4N2I4MzFlYTY5
MjQyZDk5NiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmNwcApAQCAtMjks
NiArMjksNyBAQAogI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKICNpbmNsdWRlICJWTS5oIgogI2lu
Y2x1ZGUgPHV0aWxpdHk+CisjaW5jbHVkZSA8d3RmL1Njb3BlLmg+CiAjaW5jbHVkZSA8d3RmL1Nl
dEZvclNjb3BlLmg+CiAjaW5jbHVkZSA8d3RmL1N0cmluZ1ByaW50U3RyZWFtLmg+CiAKQEAgLTMw
NiwxMCArMzA3LDEwIEBAIEV4cGVjdGVkPHR5cGVuYW1lIFBhcnNlcjxMZXhlclR5cGU+OjpQYXJz
ZUlubmVyUmVzdWx0LCBTdHJpbmc+IFBhcnNlcjxMZXhlclR5cGU+CiB9CiAKIHRlbXBsYXRlIDx0
eXBlbmFtZSBMZXhlclR5cGU+Ci1ib29sIFBhcnNlcjxMZXhlclR5cGU+Ojppc0Fycm93RnVuY3Rp
b25QYXJhbWV0ZXJzKCkKK3RlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gYm9vbCBQYXJzZXI8
TGV4ZXJUeXBlPjo6aXNBcnJvd0Z1bmN0aW9uUGFyYW1ldGVycyhUcmVlQnVpbGRlciYgY29udGV4
dCkKIHsKICAgICBpZiAobWF0Y2goT1BFTlBBUkVOKSkgewotICAgICAgICBTYXZlUG9pbnQgc2F2
ZUFycm93RnVuY3Rpb25Qb2ludCA9IGNyZWF0ZVNhdmVQb2ludCgpOworICAgICAgICBTYXZlUG9p
bnQgc2F2ZUFycm93RnVuY3Rpb25Qb2ludCA9IGNyZWF0ZVNhdmVQb2ludChjb250ZXh0KTsKICAg
ICAgICAgbmV4dCgpOwogICAgICAgICBib29sIGlzQXJyb3dGdW5jdGlvbiA9IGZhbHNlOwogICAg
ICAgICBpZiAobWF0Y2goQ0xPU0VQQVJFTikpIHsKQEAgLTMyOCwxNiArMzI5LDE2IEBAIGJvb2wg
UGFyc2VyPExleGVyVHlwZT46OmlzQXJyb3dGdW5jdGlvblBhcmFtZXRlcnMoKQogICAgICAgICAg
ICAgcHJvcGFnYXRlRXJyb3IoKTsKICAgICAgICAgICAgIHBvcFNjb3BlKGZha2VTY29wZSwgc3lu
dGF4Q2hlY2tlci5OZWVkc0ZyZWVWYXJpYWJsZUluZm8pOwogICAgICAgICB9Ci0gICAgICAgIHJl
c3RvcmVTYXZlUG9pbnQoc2F2ZUFycm93RnVuY3Rpb25Qb2ludCk7CisgICAgICAgIHJlc3RvcmVT
YXZlUG9pbnQoY29udGV4dCwgc2F2ZUFycm93RnVuY3Rpb25Qb2ludCk7CiAgICAgICAgIHJldHVy
biBpc0Fycm93RnVuY3Rpb247CiAgICAgfQogCiAgICAgaWYgKG1hdGNoU3BlY0lkZW50aWZpZXIo
KSkgewogICAgICAgICBzZW1hbnRpY0ZhaWxJZlRydWUoIW1fcGFyc2VyU3RhdGUuYWxsb3dBd2Fp
dCAmJiBtYXRjaChBV0FJVCksICJDYW5ub3QgdXNlICdhd2FpdCcgYXMgYSBwYXJhbWV0ZXIgbmFt
ZSBpbiBhbiBhc3luYyBmdW5jdGlvbiIpOwotICAgICAgICBTYXZlUG9pbnQgc2F2ZUFycm93RnVu
Y3Rpb25Qb2ludCA9IGNyZWF0ZVNhdmVQb2ludCgpOworICAgICAgICBTYXZlUG9pbnQgc2F2ZUFy
cm93RnVuY3Rpb25Qb2ludCA9IGNyZWF0ZVNhdmVQb2ludChjb250ZXh0KTsKICAgICAgICAgbmV4
dCgpOwogICAgICAgICBib29sIGlzQXJyb3dGdW5jdGlvbiA9IG1hdGNoKEFSUk9XRlVOQ1RJT04p
OwotICAgICAgICByZXN0b3JlU2F2ZVBvaW50KHNhdmVBcnJvd0Z1bmN0aW9uUG9pbnQpOworICAg
ICAgICByZXN0b3JlU2F2ZVBvaW50KGNvbnRleHQsIHNhdmVBcnJvd0Z1bmN0aW9uUG9pbnQpOwog
ICAgICAgICByZXR1cm4gaXNBcnJvd0Z1bmN0aW9uOwogICAgIH0KIApAQCAtMzU3LDcgKzM1OCw3
IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZVNvdXJjZUVsZW1lbnRzIFBhcnNl
cjxMZXhlclR5cGU+OjpwYXJzZVNvdXJjZUVsCiAgICAgVHJlZVNvdXJjZUVsZW1lbnRzIHNvdXJj
ZUVsZW1lbnRzID0gY29udGV4dC5jcmVhdGVTb3VyY2VFbGVtZW50cygpOwogICAgIGNvbnN0IElk
ZW50aWZpZXIqIGRpcmVjdGl2ZSA9IDA7CiAgICAgdW5zaWduZWQgZGlyZWN0aXZlTGl0ZXJhbExl
bmd0aCA9IDA7Ci0gICAgYXV0byBzYXZlUG9pbnQgPSBjcmVhdGVTYXZlUG9pbnQoKTsKKyAgICBh
dXRvIHNhdmVQb2ludCA9IGNyZWF0ZVNhdmVQb2ludChjb250ZXh0KTsKICAgICBib29sIHNob3Vs
ZENoZWNrRm9yVXNlU3RyaWN0ID0gbW9kZSA9PSBDaGVja0ZvclN0cmljdE1vZGU7CiAgICAgCiAg
ICAgd2hpbGUgKFRyZWVTdGF0ZW1lbnQgc3RhdGVtZW50ID0gcGFyc2VTdGF0ZW1lbnRMaXN0SXRl
bShjb250ZXh0LCBkaXJlY3RpdmUsICZkaXJlY3RpdmVMaXRlcmFsTGVuZ3RoKSkgewpAQCAtMzgy
LDcgKzM4Myw3IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZVNvdXJjZUVsZW1l
bnRzIFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZVNvdXJjZUVsCiAgICAgICAgICAgICAgICAgICAg
ICAgICBzZW1hbnRpY0ZhaWxJZkZhbHNlKGlzVmFsaWRTdHJpY3RNb2RlKCksICJJbnZhbGlkIHBh
cmFtZXRlcnMgb3IgZnVuY3Rpb24gbmFtZSBpbiBzdHJpY3QgbW9kZSIpOwogICAgICAgICAgICAg
ICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgIC8vIFNpbmNlIHN0cmljdCBtb2RlIGlzIGNo
YW5nZWQsIHJlc3RvcmluZyBsZXhlciBzdGF0ZSBieSBjYWxsaW5nIG5leHQoKSBtYXkgY2F1c2Ug
ZXJyb3JzLgotICAgICAgICAgICAgICAgICAgICByZXN0b3JlU2F2ZVBvaW50KHNhdmVQb2ludCk7
CisgICAgICAgICAgICAgICAgICAgIHJlc3RvcmVTYXZlUG9pbnQoY29udGV4dCwgc2F2ZVBvaW50
KTsKICAgICAgICAgICAgICAgICAgICAgcHJvcGFnYXRlRXJyb3IoKTsKICAgICAgICAgICAgICAg
ICAgICAgY29udGludWU7CiAgICAgICAgICAgICAgICAgfQpAQCAtNDIwLDEwICs0MjEsMTAgQEAg
dGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlU291cmNlRWxlbWVudHMgUGFyc2VyPExl
eGVyVHlwZT46OnBhcnNlTW9kdWxlU28KICAgICAgICAgICAgIGJyZWFrOwogCiAgICAgICAgIGNh
c2UgSU1QT1JUOiB7Ci0gICAgICAgICAgICBTYXZlUG9pbnQgc2F2ZVBvaW50ID0gY3JlYXRlU2F2
ZVBvaW50KCk7CisgICAgICAgICAgICBTYXZlUG9pbnQgc2F2ZVBvaW50ID0gY3JlYXRlU2F2ZVBv
aW50KGNvbnRleHQpOwogICAgICAgICAgICAgbmV4dCgpOwogICAgICAgICAgICAgYm9vbCBpc0lt
cG9ydERlY2xhcmF0aW9uID0gIW1hdGNoKE9QRU5QQVJFTikgJiYgIW1hdGNoKERPVCk7Ci0gICAg
ICAgICAgICByZXN0b3JlU2F2ZVBvaW50KHNhdmVQb2ludCk7CisgICAgICAgICAgICByZXN0b3Jl
U2F2ZVBvaW50KGNvbnRleHQsIHNhdmVQb2ludCk7CiAgICAgICAgICAgICBpZiAoaXNJbXBvcnRE
ZWNsYXJhdGlvbikgewogICAgICAgICAgICAgICAgIHN0YXRlbWVudCA9IHBhcnNlSW1wb3J0RGVj
bGFyYXRpb24oY29udGV4dCk7CiAgICAgICAgICAgICAgICAgaWYgKHN0YXRlbWVudCkKQEAgLTY2
Nyw3ICs2NjgsNyBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVTdGF0ZW1lbnQg
UGFyc2VyPExleGVyVHlwZT46OnBhcnNlU3RhdGVtZW50TGlzdAogICAgIGNhc2UgTEVUOiB7CiAg
ICAgICAgIGJvb2wgc2hvdWxkUGFyc2VWYXJpYWJsZURlY2xhcmF0aW9uID0gdHJ1ZTsKICAgICAg
ICAgaWYgKCFzdHJpY3RNb2RlKCkpIHsKLSAgICAgICAgICAgIFNhdmVQb2ludCBzYXZlUG9pbnQg
PSBjcmVhdGVTYXZlUG9pbnQoKTsKKyAgICAgICAgICAgIFNhdmVQb2ludCBzYXZlUG9pbnQgPSBj
cmVhdGVTYXZlUG9pbnQoY29udGV4dCk7CiAgICAgICAgICAgICBuZXh0KCk7CiAgICAgICAgICAg
ICAvLyBJbnRlbnRpb25hbGx5IHVzZSBgaXNJZGVudGlmaWVyT3JBbnlDb250ZXh0dWFsS2V5d29y
ZChtX3Rva2VuKWAgYW5kIGRvbid0IHVzZSBgbWF0Y2hTcGVjSWRlbnRpZmllcigpYC4KICAgICAg
ICAgICAgIC8vIFdlIHdvdWxkIGxpa2UgdG8gZmFsbCBpbnRvIHBhcnNlVmFyaWFibGVEZWNsYXJh
dGlvbiBwYXRoIGV2ZW4gaWYgInlpZWxkIiBpcyBub3QgdHJlYXRlZCBhcyBhbiBJZGVudGlmaWVy
LgpAQCAtNjc2LDcgKzY3Nyw3IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZVN0
YXRlbWVudCBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VTdGF0ZW1lbnRMaXN0CiAgICAgICAgICAg
ICAvLyB0byByYWlzZSBjb25zaXN0ZW50IGVycm9ycyBiZXR3ZWVuICJ2YXIiLCAiY29uc3QiIGFu
ZCAibGV0Ii4KICAgICAgICAgICAgIGlmICghaXNJZGVudGlmaWVyT3JBbnlDb250ZXh0dWFsS2V5
d29yZChtX3Rva2VuKSAmJiAhbWF0Y2goT1BFTkJSQUNFKSAmJiAhbWF0Y2goT1BFTkJSQUNLRVQp
KQogICAgICAgICAgICAgICAgIHNob3VsZFBhcnNlVmFyaWFibGVEZWNsYXJhdGlvbiA9IGZhbHNl
OwotICAgICAgICAgICAgcmVzdG9yZVNhdmVQb2ludChzYXZlUG9pbnQpOworICAgICAgICAgICAg
cmVzdG9yZVNhdmVQb2ludChjb250ZXh0LCBzYXZlUG9pbnQpOwogICAgICAgICB9CiAgICAgICAg
IGlmIChzaG91bGRQYXJzZVZhcmlhYmxlRGVjbGFyYXRpb24pCiAgICAgICAgICAgICByZXN1bHQg
PSBwYXJzZVZhcmlhYmxlRGVjbGFyYXRpb24oY29udGV4dCwgRGVjbGFyYXRpb25UeXBlOjpMZXRE
ZWNsYXJhdGlvbik7CkBAIC02OTcsMTMgKzY5OCwxMyBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1
aWxkZXI+IFRyZWVTdGF0ZW1lbnQgUGFyc2VyPExleGVyVHlwZT46OnBhcnNlU3RhdGVtZW50TGlz
dAogICAgICAgICBpZiAoVU5MSUtFTFkoKm1fdG9rZW4ubV9kYXRhLmlkZW50ID09IG1fdm0ucHJv
cGVydHlOYW1lcy0+YXN5bmMgJiYgIW1fdG9rZW4ubV9kYXRhLmVzY2FwZWQpKSB7CiAgICAgICAg
ICAgICAvLyBFYWdlcmx5IHBhcnNlIGFzIEFzeW5jRnVuY3Rpb25EZWNsYXJhdGlvbi4gVGhpcyBp
cyB0aGUgdW5jb21tb24gY2FzZSwKICAgICAgICAgICAgIC8vIGJ1dCBjb3VsZCBiZSBtaXN0YWtl
bmx5IHBhcnNlZCBhcyBhbiBBc3luY0Z1bmN0aW9uRXhwcmVzc2lvbi4KLSAgICAgICAgICAgIFNh
dmVQb2ludCBzYXZlUG9pbnQgPSBjcmVhdGVTYXZlUG9pbnQoKTsKKyAgICAgICAgICAgIFNhdmVQ
b2ludCBzYXZlUG9pbnQgPSBjcmVhdGVTYXZlUG9pbnQoY29udGV4dCk7CiAgICAgICAgICAgICBu
ZXh0KCk7CiAgICAgICAgICAgICBpZiAoVU5MSUtFTFkobWF0Y2goRlVOQ1RJT04pICYmICFtX2xl
eGVyLT5oYXNMaW5lVGVybWluYXRvckJlZm9yZVRva2VuKCkpKSB7CiAgICAgICAgICAgICAgICAg
cmVzdWx0ID0gcGFyc2VBc3luY0Z1bmN0aW9uRGVjbGFyYXRpb24oY29udGV4dCk7CiAgICAgICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICByZXN0b3JlU2F2ZVBv
aW50KHNhdmVQb2ludCk7CisgICAgICAgICAgICByZXN0b3JlU2F2ZVBvaW50KGNvbnRleHQsIHNh
dmVQb2ludCk7CiAgICAgICAgIH0KICAgICAgICAgRkFMTFRIUk9VR0g7CiAgICAgY2FzZSBBV0FJ
VDoKQEAgLTEwNDIsMTEgKzEwNDMsMTEgQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBU
cmVlRGVzdHJ1Y3R1cmluZ1BhdHRlcm4gUGFyc2VyPExleGVyVHlwZT46OnBhcnNlQXMKICAgICBU
cmVlRGVzdHJ1Y3R1cmluZ1BhdHRlcm4gYXNzaWdubWVudFRhcmdldCA9IDA7CiAKICAgICBpZiAo
bWF0Y2goT1BFTkJSQUNFKSB8fCBtYXRjaChPUEVOQlJBQ0tFVCkpIHsKLSAgICAgICAgU2F2ZVBv
aW50IHNhdmVQb2ludCA9IGNyZWF0ZVNhdmVQb2ludCgpOworICAgICAgICBTYXZlUG9pbnQgc2F2
ZVBvaW50ID0gY3JlYXRlU2F2ZVBvaW50KGNvbnRleHQpOwogICAgICAgICBhc3NpZ25tZW50VGFy
Z2V0ID0gcGFyc2VEZXN0cnVjdHVyaW5nUGF0dGVybihjb250ZXh0LCBraW5kLCBleHBvcnRUeXBl
LCBkdXBsaWNhdGVJZGVudGlmaWVyLCBoYXNEZXN0cnVjdHVyaW5nUGF0dGVybiwgYmluZGluZ0Nv
bnRleHQsIGRlcHRoKTsKICAgICAgICAgaWYgKGFzc2lnbm1lbnRUYXJnZXQgJiYgIW1hdGNoKERP
VCkgJiYgIW1hdGNoKE9QRU5CUkFDS0VUKSAmJiAhbWF0Y2goT1BFTlBBUkVOKSAmJiAhbWF0Y2go
QkFDS1FVT1RFKSkKICAgICAgICAgICAgIHJldHVybiBhc3NpZ25tZW50VGFyZ2V0OwotICAgICAg
ICByZXN0b3JlU2F2ZVBvaW50KHNhdmVQb2ludCk7CisgICAgICAgIHJlc3RvcmVTYXZlUG9pbnQo
Y29udGV4dCwgc2F2ZVBvaW50KTsKICAgICB9CiAKICAgICBKU1RleHRQb3NpdGlvbiBzdGFydFBv
c2l0aW9uID0gdG9rZW5TdGFydFBvc2l0aW9uKCk7CkBAIC0xNDMxLDE0ICsxNDMyLDE0IEBAIHRl
bXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZVN0YXRlbWVudCBQYXJzZXI8TGV4ZXJUeXBl
Pjo6cGFyc2VGb3JTdGF0ZW1lbnQoCiAgICAgCiAgICAgaWYgKCFtYXRjaChTRU1JQ09MT04pKSB7
CiAgICAgICAgIGlmIChtYXRjaChPUEVOQlJBQ0UpIHx8IG1hdGNoKE9QRU5CUkFDS0VUKSkgewot
ICAgICAgICAgICAgU2F2ZVBvaW50IHNhdmVQb2ludCA9IGNyZWF0ZVNhdmVQb2ludCgpOworICAg
ICAgICAgICAgU2F2ZVBvaW50IHNhdmVQb2ludCA9IGNyZWF0ZVNhdmVQb2ludChjb250ZXh0KTsK
ICAgICAgICAgICAgIGRlY2xzU3RhcnQgPSB0b2tlblN0YXJ0UG9zaXRpb24oKTsKICAgICAgICAg
ICAgIHBhdHRlcm4gPSB0cnlQYXJzZURlc3RydWN0dXJpbmdQYXR0ZXJuRXhwcmVzc2lvbihjb250
ZXh0LCBBc3NpZ25tZW50Q29udGV4dDo6RGVjbGFyYXRpb25TdGF0ZW1lbnQpOwogICAgICAgICAg
ICAgZGVjbHNFbmQgPSBsYXN0VG9rZW5FbmRQb3NpdGlvbigpOwogICAgICAgICAgICAgaWYgKHBh
dHRlcm4gJiYgKG1hdGNoKElOVE9LRU4pIHx8IG1hdGNoQ29udGV4dHVhbEtleXdvcmQobV92bS5w
cm9wZXJ0eU5hbWVzLT5vZikpKQogICAgICAgICAgICAgICAgIGdvdG8gZW51bWVyYXRpb25Mb29w
OwogICAgICAgICAgICAgcGF0dGVybiA9IFRyZWVEZXN0cnVjdHVyaW5nUGF0dGVybigwKTsKLSAg
ICAgICAgICAgIHJlc3RvcmVTYXZlUG9pbnQoc2F2ZVBvaW50KTsKKyAgICAgICAgICAgIHJlc3Rv
cmVTYXZlUG9pbnQoY29udGV4dCwgc2F2ZVBvaW50KTsKICAgICAgICAgfQogICAgICAgICBtX2Fs
bG93c0luID0gZmFsc2U7CiAgICAgICAgIGRlY2xzU3RhcnQgPSB0b2tlblN0YXJ0UG9zaXRpb24o
KTsKQEAgLTIwMjcsMTQgKzIwMjgsMTQgQEAgdGVtcGxhdGUgPHR5cGVuYW1lIExleGVyVHlwZT4K
IHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gYm9vbCBQYXJzZXI8TGV4ZXJUeXBlPjo6bWF5
YmVQYXJzZUFzeW5jRnVuY3Rpb25EZWNsYXJhdGlvblN0YXRlbWVudChUcmVlQnVpbGRlciYgY29u
dGV4dCwgVHJlZVN0YXRlbWVudCYgcmVzdWx0LCBib29sIHBhcmVudEFsbG93c0Z1bmN0aW9uRGVj
bGFyYXRpb25Bc1N0YXRlbWVudCkKIHsKICAgICBBU1NFUlQobWF0Y2hDb250ZXh0dWFsS2V5d29y
ZChtX3ZtLnByb3BlcnR5TmFtZXMtPmFzeW5jKSk7Ci0gICAgU2F2ZVBvaW50IHNhdmVQb2ludCA9
IGNyZWF0ZVNhdmVQb2ludCgpOworICAgIFNhdmVQb2ludCBzYXZlUG9pbnQgPSBjcmVhdGVTYXZl
UG9pbnQoY29udGV4dCk7CiAgICAgbmV4dCgpOwogICAgIGlmIChtYXRjaChGVU5DVElPTikgJiYg
IW1fbGV4ZXItPmhhc0xpbmVUZXJtaW5hdG9yQmVmb3JlVG9rZW4oKSkgewogICAgICAgICBjb25z
dCBib29sIGlzQXN5bmMgPSB0cnVlOwogICAgICAgICByZXN1bHQgPSBwYXJzZUZ1bmN0aW9uRGVj
bGFyYXRpb25TdGF0ZW1lbnQoY29udGV4dCwgaXNBc3luYywgcGFyZW50QWxsb3dzRnVuY3Rpb25E
ZWNsYXJhdGlvbkFzU3RhdGVtZW50KTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQotICAg
IHJlc3RvcmVTYXZlUG9pbnQoc2F2ZVBvaW50KTsKKyAgICByZXN0b3JlU2F2ZVBvaW50KGNvbnRl
eHQsIHNhdmVQb2ludCk7CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCkBAIC0yNTIwLDcgKzI1MjEs
NyBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IGJvb2wgUGFyc2VyPExleGVyVHlwZT46
OnBhcnNlRnVuY3Rpb25JbmZvKFRyZWVCdWlsZAogICAgIGZ1bmN0aW9uU2NvcGUtPnNldEV4cGVj
dGVkU3VwZXJCaW5kaW5nKGV4cGVjdGVkU3VwZXJCaW5kaW5nKTsKIAogICAgIG1fcGFyc2VyU3Rh
dGUubGFzdEZ1bmN0aW9uTmFtZSA9IGxhc3RGdW5jdGlvbk5hbWU7Ci0gICAgUGFyc2VyU3RhdGUg
b2xkU3RhdGUgPSBpbnRlcm5hbFNhdmVQYXJzZXJTdGF0ZSgpOworICAgIFBhcnNlclN0YXRlIG9s
ZFN0YXRlID0gaW50ZXJuYWxTYXZlUGFyc2VyU3RhdGUoY29udGV4dCk7CiAKICAgICAvLyBGSVhN
RTogaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1Njk2MgogICAgIC8v
IFRoaXMgbG9vcCBjb2xsZWN0cyB0aGUgc2V0IG9mIGNhcHR1cmUgY2FuZGlkYXRlcyB0aGF0IGFy
ZW4ndApAQCAtMjU3Myw3ICsyNTc0LDcgQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBi
b29sIFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUZ1bmN0aW9uSW5mbyhUcmVlQnVpbGQKICAgICB9
IGVsc2UKICAgICAgICAgZnVuY3Rpb25JbmZvLmJvZHkgPSBwZXJmb3JtUGFyc2luZ0Z1bmN0aW9u
Qm9keSgpOwogICAgIAotICAgIHJlc3RvcmVQYXJzZXJTdGF0ZShvbGRTdGF0ZSk7CisgICAgcmVz
dG9yZVBhcnNlclN0YXRlKGNvbnRleHQsIG9sZFN0YXRlKTsKICAgICBmYWlsSWZGYWxzZShmdW5j
dGlvbkluZm8uYm9keSwgIkNhbm5vdCBwYXJzZSB0aGUgYm9keSBvZiB0aGlzICIsIHN0cmluZ0Zv
ckZ1bmN0aW9uTW9kZShtb2RlKSk7CiAgICAgY29udGV4dC5zZXRFbmRPZmZzZXQoZnVuY3Rpb25J
bmZvLmJvZHksIG1fbGV4ZXItPmN1cnJlbnRPZmZzZXQoKSk7CiAgICAgaWYgKGZ1bmN0aW9uU2Nv
cGUtPnN0cmljdE1vZGUoKSAmJiByZXF1aXJlbWVudHMgIT0gRnVuY3Rpb25OYW1lUmVxdWlyZW1l
bnRzOjpVbm5hbWVkKSB7CkBAIC0yNjM0LDcgKzI2MzUsNyBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJl
ZUJ1aWxkZXI+IGJvb2wgUGFyc2VyPExleGVyVHlwZT46OnBhcnNlRnVuY3Rpb25JbmZvKFRyZWVC
dWlsZAogICAgICAgICAvLyBTbyB3ZSBvbmx5IGNoZWNrIFRyZWVCdWlsZGVyJ3MgdHlwZSBoZXJl
LgogICAgICAgICBBU1NFUlRfVU5VU0VEKGZ1bmN0aW9uU2NvcGVXYXNTdHJpY3RNb2RlLCBmdW5j
dGlvblNjb3BlV2FzU3RyaWN0TW9kZSA9PSBjdXJyZW50U2NvcGUoKS0+c3RyaWN0TW9kZSgpKTsK
ICAgICAgICAgaWYgKCFzdGQ6OmlzX3NhbWU8VHJlZUJ1aWxkZXIsIFN5bnRheENoZWNrZXI+Ojp2
YWx1ZSkKLSAgICAgICAgICAgIGxleEN1cnJlbnRUb2tlbkFnYWluVW5kZXJDdXJyZW50Q29udGV4
dCgpOworICAgICAgICAgICAgbGV4Q3VycmVudFRva2VuQWdhaW5VbmRlckN1cnJlbnRDb250ZXh0
KGNvbnRleHQpOwogICAgIH0KIAogICAgIGlmIChuZXdJbmZvKQpAQCAtMjg2NCwxMSArMjg2NSwx
MSBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVDbGFzc0V4cHJlc3Npb24gUGFy
c2VyPExleGVyVHlwZT46OnBhcnNlQ2xhc3MoVAogICAgICAgICBDbGFzc0VsZW1lbnRUYWcgdGFn
ID0gQ2xhc3NFbGVtZW50VGFnOjpJbnN0YW5jZTsKICAgICAgICAgYXV0byB0eXBlID0gUHJvcGVy
dHlOb2RlOjpDb25zdGFudDsKICAgICAgICAgaWYgKG1hdGNoKFJFU0VSVkVEX0lGX1NUUklDVCkg
JiYgKm1fdG9rZW4ubV9kYXRhLmlkZW50ID09IG1fdm0ucHJvcGVydHlOYW1lcy0+c3RhdGljS2V5
d29yZCkgewotICAgICAgICAgICAgU2F2ZVBvaW50IHNhdmVQb2ludCA9IGNyZWF0ZVNhdmVQb2lu
dCgpOworICAgICAgICAgICAgU2F2ZVBvaW50IHNhdmVQb2ludCA9IGNyZWF0ZVNhdmVQb2ludChj
b250ZXh0KTsKICAgICAgICAgICAgIG5leHQoKTsKICAgICAgICAgICAgIGlmIChtYXRjaChPUEVO
UEFSRU4pKSB7CiAgICAgICAgICAgICAgICAgLy8gUmVwYXJzZSAic3RhdGljKCkiIGFzIGEgbWV0
aG9kIG5hbWVkICJzdGF0aWMiLgotICAgICAgICAgICAgICAgIHJlc3RvcmVTYXZlUG9pbnQoc2F2
ZVBvaW50KTsKKyAgICAgICAgICAgICAgICByZXN0b3JlU2F2ZVBvaW50KGNvbnRleHQsIHNhdmVQ
b2ludCk7CiAgICAgICAgICAgICB9IGVsc2UKICAgICAgICAgICAgICAgICB0YWcgPSBDbGFzc0Vs
ZW1lbnRUYWc6OlN0YXRpYzsKICAgICAgICAgfQpAQCAtMzQ5NCw3ICszNDk1LDcgQEAgdGVtcGxh
dGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlU3RhdGVtZW50IFBhcnNlcjxMZXhlclR5cGU+Ojpw
YXJzZUV4cG9ydERlY2xhcmEKIAogICAgICAgICBib29sIHN0YXJ0c1dpdGhGdW5jdGlvbiA9IG1h
dGNoKEZVTkNUSU9OKTsKICAgICAgICAgaWYgKHN0YXJ0c1dpdGhGdW5jdGlvbiB8fCBtYXRjaChD
TEFTU1RPS0VOKSkgewotICAgICAgICAgICAgU2F2ZVBvaW50IHNhdmVQb2ludCA9IGNyZWF0ZVNh
dmVQb2ludCgpOworICAgICAgICAgICAgU2F2ZVBvaW50IHNhdmVQb2ludCA9IGNyZWF0ZVNhdmVQ
b2ludChjb250ZXh0KTsKICAgICAgICAgICAgIGlzRnVuY3Rpb25PckNsYXNzRGVjbGFyYXRpb24g
PSB0cnVlOwogICAgICAgICAgICAgbmV4dCgpOwogCkBAIC0zNTAzLDkgKzM1MDQsOSBAQCB0ZW1w
bGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVTdGF0ZW1lbnQgUGFyc2VyPExleGVyVHlwZT46
OnBhcnNlRXhwb3J0RGVjbGFyYQogICAgICAgICAgICAgICAgIG5leHQoKTsKICAgICAgICAgICAg
IGlmIChtYXRjaChJREVOVCkpCiAgICAgICAgICAgICAgICAgbG9jYWxOYW1lID0gbV90b2tlbi5t
X2RhdGEuaWRlbnQ7Ci0gICAgICAgICAgICByZXN0b3JlU2F2ZVBvaW50KHNhdmVQb2ludCk7Cisg
ICAgICAgICAgICByZXN0b3JlU2F2ZVBvaW50KGNvbnRleHQsIHNhdmVQb2ludCk7CiAgICAgICAg
IH0gZWxzZSBpZiAobWF0Y2hDb250ZXh0dWFsS2V5d29yZChtX3ZtLnByb3BlcnR5TmFtZXMtPmFz
eW5jKSkgewotICAgICAgICAgICAgU2F2ZVBvaW50IHNhdmVQb2ludCA9IGNyZWF0ZVNhdmVQb2lu
dCgpOworICAgICAgICAgICAgU2F2ZVBvaW50IHNhdmVQb2ludCA9IGNyZWF0ZVNhdmVQb2ludChj
b250ZXh0KTsKICAgICAgICAgICAgIG5leHQoKTsKICAgICAgICAgICAgIGlmIChtYXRjaChGVU5D
VElPTikgJiYgIW1fbGV4ZXItPmhhc0xpbmVUZXJtaW5hdG9yQmVmb3JlVG9rZW4oKSkgewogICAg
ICAgICAgICAgICAgIG5leHQoKTsKQEAgLTM1MTMsNyArMzUxNCw3IEBAIHRlbXBsYXRlIDxjbGFz
cyBUcmVlQnVpbGRlcj4gVHJlZVN0YXRlbWVudCBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VFeHBv
cnREZWNsYXJhCiAgICAgICAgICAgICAgICAgICAgIGxvY2FsTmFtZSA9IG1fdG9rZW4ubV9kYXRh
LmlkZW50OwogICAgICAgICAgICAgICAgIGlzRnVuY3Rpb25PckNsYXNzRGVjbGFyYXRpb24gPSB0
cnVlOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgcmVzdG9yZVNhdmVQb2ludChzYXZlUG9p
bnQpOworICAgICAgICAgICAgcmVzdG9yZVNhdmVQb2ludChjb250ZXh0LCBzYXZlUG9pbnQpOwog
ICAgICAgICB9CiAKICAgICAgICAgaWYgKCFsb2NhbE5hbWUpCkBAIC0zNzU5LDcgKzM3NjAsNyBA
QCB0ZW1wbGF0ZSA8dHlwZW5hbWUgVHJlZUJ1aWxkZXI+IFRyZWVFeHByZXNzaW9uIFBhcnNlcjxM
ZXhlclR5cGU+OjpwYXJzZUFzc2lnbm1lbgogICAgIC8vIFdoZXRoZXIgc3BlYyBpZGVudGlmaWVy
IGlzIHdpbGwgYmUgdmFsaWRhdGVkIGJ5IGlzQXJyb3dGdW5jdGlvblBhcmFtZXRlcnMoKS4KICAg
ICBib29sIHdhc0lkZW50aWZpZXJPcktleXdvcmQgPSBpc0lkZW50aWZpZXJPcktleXdvcmQobV90
b2tlbik7CiAgICAgYm9vbCBtYXliZVZhbGlkQXJyb3dGdW5jdGlvblN0YXJ0ID0gd2FzT3BlblBh
cmVuIHx8IHdhc0lkZW50aWZpZXJPcktleXdvcmQ7Ci0gICAgU2F2ZVBvaW50IHNhdmVQb2ludCA9
IGNyZWF0ZVNhdmVQb2ludCgpOworICAgIFNhdmVQb2ludCBzYXZlUG9pbnQgPSBjcmVhdGVTYXZl
UG9pbnQoY29udGV4dCk7CiAgICAgc2l6ZV90IHVzZWRWYXJpYWJsZXNTaXplID0gMDsKIAogICAg
IGlmICh3YXNPcGVuUGFyZW4pIHsKQEAgLTM3NzIsOCArMzc3Myw3IEBAIHRlbXBsYXRlIDx0eXBl
bmFtZSBUcmVlQnVpbGRlcj4gVHJlZUV4cHJlc3Npb24gUGFyc2VyPExleGVyVHlwZT46OnBhcnNl
QXNzaWdubWVuCiAgICAgaWYgKG1heWJlVmFsaWRBcnJvd0Z1bmN0aW9uU3RhcnQgJiYgIW1hdGNo
KEVPRlRPSykpIHsKICAgICAgICAgYm9vbCBpc0Fycm93RnVuY3Rpb25Ub2tlbiA9IG1hdGNoKEFS
Uk9XRlVOQ1RJT04pOwogICAgICAgICBpZiAoIWxocyB8fCBpc0Fycm93RnVuY3Rpb25Ub2tlbikg
ewotICAgICAgICAgICAgU2F2ZVBvaW50V2l0aEVycm9yIGVycm9yUmVzdG9yYXRpb25TYXZlUG9p
bnQgPSBjcmVhdGVTYXZlUG9pbnRGb3JFcnJvcigpOwotICAgICAgICAgICAgcmVzdG9yZVNhdmVQ
b2ludChzYXZlUG9pbnQpOworICAgICAgICAgICAgU2F2ZVBvaW50V2l0aEVycm9yIGVycm9yUmVz
dG9yYXRpb25TYXZlUG9pbnQgPSBzd2FwU2F2ZVBvaW50Rm9yRXJyb3IoY29udGV4dCwgc2F2ZVBv
aW50KTsKICAgICAgICAgICAgIGJvb2wgaXNBc3luY0Fycm93ID0gZmFsc2U7CiAgICAgICAgICAg
ICBpZiAoVU5MSUtFTFkoY2xhc3NpZmllci5pbmRpY2F0ZXNQb3NzaWJsZUFzeW5jQXJyb3dGdW5j
dGlvbigpKSkgewogICAgICAgICAgICAgICAgIGlmIChtYXRjaENvbnRleHR1YWxLZXl3b3JkKG1f
dm0ucHJvcGVydHlOYW1lcy0+YXN5bmMpKSB7CkBAIC0zNzgxLDE0ICszNzgxLDE0IEBAIHRlbXBs
YXRlIDx0eXBlbmFtZSBUcmVlQnVpbGRlcj4gVHJlZUV4cHJlc3Npb24gUGFyc2VyPExleGVyVHlw
ZT46OnBhcnNlQXNzaWdubWVuCiAgICAgICAgICAgICAgICAgICAgIGlzQXN5bmNBcnJvdyA9ICFt
X2xleGVyLT5oYXNMaW5lVGVybWluYXRvckJlZm9yZVRva2VuKCk7CiAgICAgICAgICAgICAgICAg
fQogICAgICAgICAgICAgfQotICAgICAgICAgICAgaWYgKGlzQXJyb3dGdW5jdGlvblBhcmFtZXRl
cnMoKSkgeworICAgICAgICAgICAgaWYgKGlzQXJyb3dGdW5jdGlvblBhcmFtZXRlcnMoY29udGV4
dCkpIHsKICAgICAgICAgICAgICAgICBpZiAod2FzT3BlblBhcmVuKQogICAgICAgICAgICAgICAg
ICAgICBjdXJyZW50U2NvcGUoKS0+cmV2ZXJ0VG9QcmV2aW91c1VzZWRWYXJpYWJsZXModXNlZFZh
cmlhYmxlc1NpemUpOwogICAgICAgICAgICAgICAgIHJldHVybiBwYXJzZUFycm93RnVuY3Rpb25F
eHByZXNzaW9uKGNvbnRleHQsIGlzQXN5bmNBcnJvdyk7CiAgICAgICAgICAgICB9CiAgICAgICAg
ICAgICBpZiAoaXNBcnJvd0Z1bmN0aW9uVG9rZW4pCiAgICAgICAgICAgICAgICAgcHJvcGFnYXRl
RXJyb3IoKTsKLSAgICAgICAgICAgIHJlc3RvcmVTYXZlUG9pbnRXaXRoRXJyb3IoZXJyb3JSZXN0
b3JhdGlvblNhdmVQb2ludCk7CisgICAgICAgICAgICByZXN0b3JlU2F2ZVBvaW50V2l0aEVycm9y
KGNvbnRleHQsIGVycm9yUmVzdG9yYXRpb25TYXZlUG9pbnQpOwogICAgICAgICAgICAgaWYgKGlz
QXJyb3dGdW5jdGlvblRva2VuKQogICAgICAgICAgICAgICAgIGZhaWxEdWVUb1VuZXhwZWN0ZWRU
b2tlbigpOwogICAgICAgICB9CkBAIC0zNzk4LDExICszNzk4LDEwIEBAIHRlbXBsYXRlIDx0eXBl
bmFtZSBUcmVlQnVpbGRlcj4gVHJlZUV4cHJlc3Npb24gUGFyc2VyPExleGVyVHlwZT46OnBhcnNl
QXNzaWdubWVuCiAgICAgICAgIHByb3BhZ2F0ZUVycm9yKCk7CiAKICAgICBpZiAobWF5YmVBc3Np
Z25tZW50UGF0dGVybiAmJiAoIWxocyB8fCAoY29udGV4dC5pc09iamVjdE9yQXJyYXlMaXRlcmFs
KGxocykgJiYgbWF0Y2goRVFVQUwpKSkpIHsKLSAgICAgICAgU2F2ZVBvaW50V2l0aEVycm9yIGV4
cHJlc3Npb25FcnJvckxvY2F0aW9uID0gY3JlYXRlU2F2ZVBvaW50Rm9yRXJyb3IoKTsKLSAgICAg
ICAgcmVzdG9yZVNhdmVQb2ludChzYXZlUG9pbnQpOworICAgICAgICBTYXZlUG9pbnRXaXRoRXJy
b3IgZXhwcmVzc2lvbkVycm9yTG9jYXRpb24gPSBzd2FwU2F2ZVBvaW50Rm9yRXJyb3IoY29udGV4
dCwgc2F2ZVBvaW50KTsKICAgICAgICAgYXV0byBwYXR0ZXJuID0gdHJ5UGFyc2VEZXN0cnVjdHVy
aW5nUGF0dGVybkV4cHJlc3Npb24oY29udGV4dCwgQXNzaWdubWVudENvbnRleHQ6OkFzc2lnbm1l
bnRFeHByZXNzaW9uKTsKICAgICAgICAgaWYgKGNsYXNzaWZpZXIuaW5kaWNhdGVzUG9zc2libGVQ
YXR0ZXJuKCkgJiYgKCFwYXR0ZXJuIHx8ICFtYXRjaChFUVVBTCkpKSB7Ci0gICAgICAgICAgICBy
ZXN0b3JlU2F2ZVBvaW50V2l0aEVycm9yKGV4cHJlc3Npb25FcnJvckxvY2F0aW9uKTsKKyAgICAg
ICAgICAgIHJlc3RvcmVTYXZlUG9pbnRXaXRoRXJyb3IoY29udGV4dCwgZXhwcmVzc2lvbkVycm9y
TG9jYXRpb24pOwogICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgIH0KICAgICAgICAgZmFp
bElmRmFsc2UocGF0dGVybiwgIkNhbm5vdCBwYXJzZSBhc3NpZ25tZW50IHBhdHRlcm4iKTsKQEAg
LTM4NjcsOSArMzg2Niw2IEBAIGVuZDoKICAgICBpZiAoaGFkQXNzaWdubWVudCkKICAgICAgICAg
bV9wYXJzZXJTdGF0ZS5ub25MSFNDb3VudCsrOwogICAgIAotICAgIGlmICghVHJlZUJ1aWxkZXI6
OkNyZWF0ZXNBU1QpCi0gICAgICAgIHJldHVybiBsaHM7Ci0gICAgCiAgICAgd2hpbGUgKGFzc2ln
bm1lbnRTdGFjaykKICAgICAgICAgbGhzID0gY29udGV4dC5jcmVhdGVBc3NpZ25tZW50KGxvY2F0
aW9uLCBhc3NpZ25tZW50U3RhY2ssIGxocywgaW5pdGlhbEFzc2lnbm1lbnRDb3VudCwgbV9wYXJz
ZXJTdGF0ZS5hc3NpZ25tZW50Q291bnQsIGxhc3RUb2tlbkVuZFBvc2l0aW9uKCkpOwogICAgIApA
QCAtMzg5Myw3ICszODg5LDcgQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlRXhw
cmVzc2lvbiBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VZaWVsZEV4cHJlc3MKICAgICBKU1Rva2Vu
TG9jYXRpb24gbG9jYXRpb24odG9rZW5Mb2NhdGlvbigpKTsKICAgICBKU1RleHRQb3NpdGlvbiBk
aXZvdFN0YXJ0ID0gdG9rZW5TdGFydFBvc2l0aW9uKCk7CiAgICAgQVNTRVJUKG1hdGNoKFlJRUxE
KSk7Ci0gICAgU2F2ZVBvaW50IHNhdmVQb2ludCA9IGNyZWF0ZVNhdmVQb2ludCgpOworICAgIFNh
dmVQb2ludCBzYXZlUG9pbnQgPSBjcmVhdGVTYXZlUG9pbnQoY29udGV4dCk7CiAgICAgbmV4dCgp
OwogICAgIGlmIChtX2xleGVyLT5oYXNMaW5lVGVybWluYXRvckJlZm9yZVRva2VuKCkpCiAgICAg
ICAgIHJldHVybiBjb250ZXh0LmNyZWF0ZVlpZWxkKGxvY2F0aW9uKTsKQEAgLTM5MDIsNyArMzg5
OCw3IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZUV4cHJlc3Npb24gUGFyc2Vy
PExleGVyVHlwZT46OnBhcnNlWWllbGRFeHByZXNzCiAgICAgSlNUZXh0UG9zaXRpb24gYXJndW1l
bnRTdGFydCA9IHRva2VuU3RhcnRQb3NpdGlvbigpOwogICAgIFRyZWVFeHByZXNzaW9uIGFyZ3Vt
ZW50ID0gcGFyc2VBc3NpZ25tZW50RXhwcmVzc2lvbihjb250ZXh0KTsKICAgICBpZiAoIWFyZ3Vt
ZW50KSB7Ci0gICAgICAgIHJlc3RvcmVTYXZlUG9pbnQoc2F2ZVBvaW50KTsKKyAgICAgICAgcmVz
dG9yZVNhdmVQb2ludChjb250ZXh0LCBzYXZlUG9pbnQpOwogICAgICAgICBuZXh0KCk7CiAgICAg
ICAgIHJldHVybiBjb250ZXh0LmNyZWF0ZVlpZWxkKGxvY2F0aW9uKTsKICAgICB9CkBAIC00MDU3
LDExICs0MDUzLDExIEBAIHBhcnNlUHJvcGVydHk6CiAgICAgY2FzZSBJREVOVDoKICAgICAgICAg
aWYgKFVOTElLRUxZKCptX3Rva2VuLm1fZGF0YS5pZGVudCA9PSBtX3ZtLnByb3BlcnR5TmFtZXMt
PmFzeW5jICYmICFtX3Rva2VuLm1fZGF0YS5lc2NhcGVkKSkgewogICAgICAgICAgICAgaWYgKHBh
cnNlTW9kZSA9PSBTb3VyY2VQYXJzZU1vZGU6Ok1ldGhvZE1vZGUpIHsKLSAgICAgICAgICAgICAg
ICBTYXZlUG9pbnQgc2F2ZVBvaW50ID0gY3JlYXRlU2F2ZVBvaW50KCk7CisgICAgICAgICAgICAg
ICAgU2F2ZVBvaW50IHNhdmVQb2ludCA9IGNyZWF0ZVNhdmVQb2ludChjb250ZXh0KTsKICAgICAg
ICAgICAgICAgICBuZXh0KCk7CiAKICAgICAgICAgICAgICAgICBpZiAobWF0Y2goQ09MT04pIHx8
IG1hdGNoKE9QRU5QQVJFTikgfHwgbWF0Y2goQ09NTUEpIHx8IG1hdGNoKENMT1NFQlJBQ0UpKSB7
Ci0gICAgICAgICAgICAgICAgICAgIHJlc3RvcmVTYXZlUG9pbnQoc2F2ZVBvaW50KTsKKyAgICAg
ICAgICAgICAgICAgICAgcmVzdG9yZVNhdmVQb2ludChjb250ZXh0LCBzYXZlUG9pbnQpOwogICAg
ICAgICAgICAgICAgICAgICB3YXNJZGVudCA9IHRydWU7CiAgICAgICAgICAgICAgICAgICAgIGdv
dG8gbmFtZWRQcm9wZXJ0eTsKICAgICAgICAgICAgICAgICB9CkBAIC00ODU2LDEzICs0ODUyLDEz
IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZUV4cHJlc3Npb24gUGFyc2VyPExl
eGVyVHlwZT46OnBhcnNlTWVtYmVyRXhwcmVzCiAgICAgICAgICAgICBvcHRpb25hbENoYWluQmFz
ZSA9IGJhc2U7CiAgICAgICAgICAgICBvcHRpb25hbENoYWluTG9jYXRpb24gPSB0b2tlbkxvY2F0
aW9uKCk7CiAKLSAgICAgICAgICAgIFNhdmVQb2ludCBzYXZlUG9pbnQgPSBjcmVhdGVTYXZlUG9p
bnQoKTsKKyAgICAgICAgICAgIFNhdmVQb2ludCBzYXZlUG9pbnQgPSBjcmVhdGVTYXZlUG9pbnQo
Y29udGV4dCk7CiAgICAgICAgICAgICBuZXh0KCk7CiAgICAgICAgICAgICBpZiAobWF0Y2goT1BF
TkJSQUNLRVQpIHx8IG1hdGNoKE9QRU5QQVJFTikgfHwgbWF0Y2goQkFDS1FVT1RFKSkKICAgICAg
ICAgICAgICAgICB0eXBlID0gbV90b2tlbi5tX3R5cGU7CiAgICAgICAgICAgICBlbHNlIHsKICAg
ICAgICAgICAgICAgICB0eXBlID0gRE9UOwotICAgICAgICAgICAgICAgIHJlc3RvcmVTYXZlUG9p
bnQoc2F2ZVBvaW50KTsKKyAgICAgICAgICAgICAgICByZXN0b3JlU2F2ZVBvaW50KGNvbnRleHQs
IHNhdmVQb2ludCk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KIApAQCAtNTA0MiwxOSArNTAz
OCwxNSBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVFeHByZXNzaW9uIFBhcnNl
cjxMZXhlclR5cGU+OjpwYXJzZVVuYXJ5RXhwcmVzcwogCiAgICAgSlNUb2tlbkxvY2F0aW9uIGxv
Y2F0aW9uKHRva2VuTG9jYXRpb24oKSk7CiAKKyAgICBpbnQgb2xkVG9rZW5TdGFja0RlcHRoID0g
Y29udGV4dC51bmFyeVRva2VuU3RhY2tEZXB0aCgpOworICAgIG1ha2VTY29wZUV4aXQoWyZdIHsK
KyAgICAgICAgQVNTRVJUX1VOVVNFRChvbGRUb2tlblN0YWNrRGVwdGgsIG9sZFRva2VuU3RhY2tE
ZXB0aCA8PSBjb250ZXh0LnVuYXJ5VG9rZW5TdGFja0RlcHRoKCkpOworICAgIH0pOworCiAgICAg
d2hpbGUgKGlzVW5hcnlPcChtX3Rva2VuLm1fdHlwZSkpIHsKLSAgICAgICAgc3dpdGNoIChtX3Rv
a2VuLm1fdHlwZSkgewotICAgICAgICBjYXNlIFBMVVNQTFVTOgotICAgICAgICBjYXNlIE1JTlVT
TUlOVVM6Ci0gICAgICAgIGNhc2UgQVVUT1BMVVNQTFVTOgotICAgICAgICBjYXNlIEFVVE9NSU5V
U01JTlVTOgotICAgICAgICAgICAgc2VtYW50aWNGYWlsSWZUcnVlKGhhc1ByZWZpeFVwZGF0ZU9w
LCAiVGhlICIsIG9wZXJhdG9yU3RyaW5nKHRydWUsIGxhc3RPcGVyYXRvciksICIgb3BlcmF0b3Ig
cmVxdWlyZXMgYSByZWZlcmVuY2UgZXhwcmVzc2lvbiIpOworICAgICAgICBzZW1hbnRpY0ZhaWxJ
ZlRydWUoaGFzUHJlZml4VXBkYXRlT3AsICJUaGUgIiwgb3BlcmF0b3JTdHJpbmcodHJ1ZSwgbGFz
dE9wZXJhdG9yKSwgIiBvcGVyYXRvciByZXF1aXJlcyBhIHJlZmVyZW5jZSBleHByZXNzaW9uIik7
CisgICAgICAgIGlmIChpc1VwZGF0ZU9wKG1fdG9rZW4ubV90eXBlKSkKICAgICAgICAgICAgIGhh
c1ByZWZpeFVwZGF0ZU9wID0gdHJ1ZTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBkZWZh
dWx0OgotICAgICAgICAgICAgc2VtYW50aWNGYWlsSWZUcnVlKGhhc1ByZWZpeFVwZGF0ZU9wLCAi
VGhlICIsIG9wZXJhdG9yU3RyaW5nKHRydWUsIGxhc3RPcGVyYXRvciksICIgb3BlcmF0b3IgcmVx
dWlyZXMgYSByZWZlcmVuY2UgZXhwcmVzc2lvbiIpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAg
ICAgIH0KICAgICAgICAgbGFzdE9wZXJhdG9yID0gbV90b2tlbi5tX3R5cGU7CiAgICAgICAgIG1f
cGFyc2VyU3RhdGUubm9uTEhTQ291bnQrKzsKICAgICAgICAgY29udGV4dC5hcHBlbmRVbmFyeVRv
a2VuKHRva2VuU3RhY2tEZXB0aCwgbV90b2tlbi5tX3R5cGUsIHRva2VuU3RhcnRQb3NpdGlvbigp
KTsKQEAgLTUwNjksNiArNTA2MSw4IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJl
ZUV4cHJlc3Npb24gUGFyc2VyPExleGVyVHlwZT46OnBhcnNlVW5hcnlFeHByZXNzCiAgICAgICAg
ICAgICBmYWlsV2l0aE1lc3NhZ2UoIkNhbm5vdCBwYXJzZSBzdWJleHByZXNzaW9uIG9mICIsIG9w
ZXJhdG9yU3RyaW5nKHRydWUsIGxhc3RPcGVyYXRvciksICJvcGVyYXRvciIpOwogICAgICAgICBm
YWlsV2l0aE1lc3NhZ2UoIkNhbm5vdCBwYXJzZSBtZW1iZXIgZXhwcmVzc2lvbiIpOwogICAgIH0K
KyAgICBpZiBjb25zdGV4cHIgKHN0ZDo6aXNfc2FtZV92PFRyZWVCdWlsZGVyLCBBU1RCdWlsZGVy
PikKKyAgICAgICAgQVNTRVJUKG9sZFRva2VuU3RhY2tEZXB0aCArIHRva2VuU3RhY2tEZXB0aCA9
PSBjb250ZXh0LnVuYXJ5VG9rZW5TdGFja0RlcHRoKCkpOwogICAgIGlmIChpc1VwZGF0ZU9wKHN0
YXRpY19jYXN0PEpTVG9rZW5UeXBlPihsYXN0T3BlcmF0b3IpKSkgewogICAgICAgICBzZW1hbnRp
Y0ZhaWxJZlRydWUoY29udGV4dC5pc01ldGFQcm9wZXJ0eShleHByKSwgbWV0YVByb3BlcnR5TmFt
ZShjb250ZXh0LCBleHByKSwgIiBjYW4ndCBjb21lIGFmdGVyIGEgcHJlZml4IG9wZXJhdG9yIik7
CiAgICAgICAgIHNlbWFudGljRmFpbElmRmFsc2UoaXNTaW1wbGVBc3NpZ25tZW50VGFyZ2V0KGNv
bnRleHQsIGV4cHIpLCAiUHJlZml4ICIsIGxhc3RPcGVyYXRvciA9PSBQTFVTUExVUyA/ICIrKyIg
OiAiLS0iLCAiIG9wZXJhdG9yIGFwcGxpZWQgdG8gdmFsdWUgdGhhdCBpcyBub3QgYSByZWZlcmVu
Y2UiKTsKQEAgLTUxMDgsNyArNTEwMiw5IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4g
VHJlZUV4cHJlc3Npb24gUGFyc2VyPExleGVyVHlwZT46OnBhcnNlVW5hcnlFeHByZXNzCiAgICAg
CiAgICAgSlNUZXh0UG9zaXRpb24gZW5kID0gbGFzdFRva2VuRW5kUG9zaXRpb24oKTsKICAgICB3
aGlsZSAodG9rZW5TdGFja0RlcHRoKSB7Ci0gICAgICAgIHN3aXRjaCAoY29udGV4dC51bmFyeVRv
a2VuU3RhY2tMYXN0VHlwZSh0b2tlblN0YWNrRGVwdGgpKSB7CisgICAgICAgIHN1YkV4cHJTdGFy
dCA9IGNvbnRleHQudW5hcnlUb2tlblN0YWNrTGFzdFN0YXJ0KHRva2VuU3RhY2tEZXB0aCk7Cisg
ICAgICAgIGF1dG8gdG9rZW5UeXBlID0gY29udGV4dC51bmFyeVRva2VuU3RhY2tMYXN0VHlwZSh0
b2tlblN0YWNrRGVwdGgpOworICAgICAgICBzd2l0Y2ggKHRva2VuVHlwZSkgewogICAgICAgICBj
YXNlIEVYQ0xBTUFUSU9OOgogICAgICAgICAgICAgZXhwciA9IGNvbnRleHQuY3JlYXRlTG9naWNh
bE5vdChsb2NhdGlvbiwgZXhwcik7CiAgICAgICAgICAgICBicmVhazsKQEAgLTUxMjMsMTIgKzUx
MTksMTQgQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlRXhwcmVzc2lvbiBQYXJz
ZXI8TGV4ZXJUeXBlPjo6cGFyc2VVbmFyeUV4cHJlc3MKICAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICBjYXNlIFBMVVNQTFVTOgogICAgICAgICBjYXNlIEFVVE9QTFVTUExVUzoKLSAgICAgICAg
ICAgIGV4cHIgPSBjb250ZXh0Lm1ha2VQcmVmaXhOb2RlKGxvY2F0aW9uLCBleHByLCBPcFBsdXNQ
bHVzLCBjb250ZXh0LnVuYXJ5VG9rZW5TdGFja0xhc3RTdGFydCh0b2tlblN0YWNrRGVwdGgpLCBz
dWJFeHByU3RhcnQgKyAxLCBlbmQpOworICAgICAgICAgICAgQVNTRVJUKGlzU2ltcGxlQXNzaWdu
bWVudFRhcmdldChjb250ZXh0LCBleHByKSk7CisgICAgICAgICAgICBleHByID0gY29udGV4dC5t
YWtlUHJlZml4Tm9kZShsb2NhdGlvbiwgZXhwciwgT3BQbHVzUGx1cywgc3ViRXhwclN0YXJ0LCBz
dWJFeHByU3RhcnQgKyAyLCBlbmQpOwogICAgICAgICAgICAgbV9wYXJzZXJTdGF0ZS5hc3NpZ25t
ZW50Q291bnQrKzsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIE1JTlVTTUlOVVM6
CiAgICAgICAgIGNhc2UgQVVUT01JTlVTTUlOVVM6Ci0gICAgICAgICAgICBleHByID0gY29udGV4
dC5tYWtlUHJlZml4Tm9kZShsb2NhdGlvbiwgZXhwciwgT3BNaW51c01pbnVzLCBjb250ZXh0LnVu
YXJ5VG9rZW5TdGFja0xhc3RTdGFydCh0b2tlblN0YWNrRGVwdGgpLCBzdWJFeHByU3RhcnQgKyAx
LCBlbmQpOworICAgICAgICAgICAgQVNTRVJUKGlzU2ltcGxlQXNzaWdubWVudFRhcmdldChjb250
ZXh0LCBleHByKSk7CisgICAgICAgICAgICBleHByID0gY29udGV4dC5tYWtlUHJlZml4Tm9kZShs
b2NhdGlvbiwgZXhwciwgT3BNaW51c01pbnVzLCBzdWJFeHByU3RhcnQsIHN1YkV4cHJTdGFydCAr
IDIsIGVuZCk7CiAgICAgICAgICAgICBtX3BhcnNlclN0YXRlLmFzc2lnbm1lbnRDb3VudCsrOwog
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgVFlQRU9GOgpAQCAtNTE0NSw3ICs1MTQz
LDYgQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlRXhwcmVzc2lvbiBQYXJzZXI8
TGV4ZXJUeXBlPjo6cGFyc2VVbmFyeUV4cHJlc3MKICAgICAgICAgICAgIC8vIElmIHdlIGdldCBo
ZXJlIHNvbWV0aGluZyBoYXMgZ29uZSBob3JyaWJseSBob3JyaWJseSB3cm9uZwogICAgICAgICAg
ICAgQ1JBU0goKTsKICAgICAgICAgfQotICAgICAgICBzdWJFeHByU3RhcnQgPSBjb250ZXh0LnVu
YXJ5VG9rZW5TdGFja0xhc3RTdGFydCh0b2tlblN0YWNrRGVwdGgpOwogICAgICAgICBjb250ZXh0
LnVuYXJ5VG9rZW5TdGFja1JlbW92ZUxhc3QodG9rZW5TdGFja0RlcHRoKTsKICAgICB9CiAgICAg
cmV0dXJuIGV4cHI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1Bh
cnNlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuaAppbmRleCA3NTI5
ZTY2MjQ0NjhjOTYwMTJiNjU5MDBmNDg1NDNjYjIwMTliN2JmLi5hZTg2MzE5ZDY3OWJmMzA4ZmUy
ZDg5NDYwNzc2NjQ2ZDkzMTYwYzI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cGFyc2VyL1BhcnNlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2Vy
LmgKQEAgLTE0MTcsMTAgKzE0MTcsMTEgQEAgcHJpdmF0ZToKICAgICAgICAgbV90b2tlbi5tX3R5
cGUgPSBtX2xleGVyLT5sZXhFeHBlY3RJZGVudGlmaWVyKCZtX3Rva2VuLCBsZXhlckZsYWdzLCBz
dHJpY3RNb2RlKCkpOwogICAgIH0KIAotICAgIEFMV0FZU19JTkxJTkUgdm9pZCBsZXhDdXJyZW50
VG9rZW5BZ2FpblVuZGVyQ3VycmVudENvbnRleHQoKQorICAgIHRlbXBsYXRlIDxjbGFzcyBUcmVl
QnVpbGRlcj4KKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgbGV4Q3VycmVudFRva2VuQWdhaW5VbmRl
ckN1cnJlbnRDb250ZXh0KFRyZWVCdWlsZGVyJiBjb250ZXh0KQogICAgIHsKLSAgICAgICAgYXV0
byBzYXZlUG9pbnQgPSBjcmVhdGVTYXZlUG9pbnQoKTsKLSAgICAgICAgcmVzdG9yZVNhdmVQb2lu
dChzYXZlUG9pbnQpOworICAgICAgICBhdXRvIHNhdmVQb2ludCA9IGNyZWF0ZVNhdmVQb2ludChj
b250ZXh0KTsKKyAgICAgICAgcmVzdG9yZVNhdmVQb2ludChjb250ZXh0LCBzYXZlUG9pbnQpOwog
ICAgIH0KIAogICAgIEFMV0FZU19JTkxJTkUgYm9vbCBuZXh0VG9rZW5Jc0NvbG9uKCkKQEAgLTE2
ODUsNyArMTY4Niw3IEBAIHByaXZhdGU6CiAgICAgZW51bSBjbGFzcyBGdW5jdGlvbkRlZmluaXRp
b25UeXBlIHsgRXhwcmVzc2lvbiwgRGVjbGFyYXRpb24sIE1ldGhvZCB9OwogICAgIHRlbXBsYXRl
IDxjbGFzcyBUcmVlQnVpbGRlcj4gTkVWRVJfSU5MSU5FIGJvb2wgcGFyc2VGdW5jdGlvbkluZm8o
VHJlZUJ1aWxkZXImLCBGdW5jdGlvbk5hbWVSZXF1aXJlbWVudHMsIFNvdXJjZVBhcnNlTW9kZSwg
Ym9vbCBuYW1lSXNJbkNvbnRhaW5pbmdTY29wZSwgQ29uc3RydWN0b3JLaW5kLCBTdXBlckJpbmRp
bmcsIGludCBmdW5jdGlvbktleXdvcmRTdGFydCwgUGFyc2VyRnVuY3Rpb25JbmZvPFRyZWVCdWls
ZGVyPiYsIEZ1bmN0aW9uRGVmaW5pdGlvblR5cGUsIE9wdGlvbmFsPGludD4gZnVuY3Rpb25Db25z
dHJ1Y3RvclBhcmFtZXRlcnNFbmRQb3NpdGlvbiA9IFdURjo6bnVsbG9wdCk7CiAgICAgCi0gICAg
QUxXQVlTX0lOTElORSBib29sIGlzQXJyb3dGdW5jdGlvblBhcmFtZXRlcnMoKTsKKyAgICB0ZW1w
bGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IEFMV0FZU19JTkxJTkUgYm9vbCBpc0Fycm93RnVuY3Rp
b25QYXJhbWV0ZXJzKFRyZWVCdWlsZGVyJik7CiAgICAgCiAgICAgdGVtcGxhdGUgPGNsYXNzIFRy
ZWVCdWlsZGVyLCBjbGFzcyBGdW5jdGlvbkluZm9UeXBlPiBORVZFUl9JTkxJTkUgdHlwZW5hbWUg
VHJlZUJ1aWxkZXI6OkZvcm1hbFBhcmFtZXRlckxpc3QgcGFyc2VGdW5jdGlvblBhcmFtZXRlcnMo
VHJlZUJ1aWxkZXImLCBTb3VyY2VQYXJzZU1vZGUsIEZ1bmN0aW9uSW5mb1R5cGUmKTsKICAgICB0
ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IE5FVkVSX0lOTElORSB0eXBlbmFtZSBUcmVlQnVp
bGRlcjo6Rm9ybWFsUGFyYW1ldGVyTGlzdCBjcmVhdGVHZW5lcmF0b3JQYXJhbWV0ZXJzKFRyZWVC
dWlsZGVyJiwgdW5zaWduZWQmIHBhcmFtZXRlckNvdW50KTsKQEAgLTE3OTEsNiArMTc5Miw3IEBA
IHByaXZhdGU6CiAgICAgICAgIGludCBhc3NpZ25tZW50Q291bnQgeyAwIH07CiAgICAgICAgIGlu
dCBub25MSFNDb3VudCB7IDAgfTsKICAgICAgICAgaW50IG5vblRyaXZpYWxFeHByZXNzaW9uQ291
bnQgeyAwIH07CisgICAgICAgIGludCB1bmFyeVRva2VuU3RhY2tEZXB0aCB7IDAgfTsKICAgICAg
ICAgRnVuY3Rpb25QYXJzZVBoYXNlIGZ1bmN0aW9uUGFyc2VQaGFzZSB7IEZ1bmN0aW9uUGFyc2VQ
aGFzZTo6Qm9keSB9OwogICAgICAgICBjb25zdCBJZGVudGlmaWVyKiBsYXN0SWRlbnRpZmllciB7
IG51bGxwdHIgfTsKICAgICAgICAgY29uc3QgSWRlbnRpZmllciogbGFzdEZ1bmN0aW9uTmFtZSB7
IG51bGxwdHIgfTsKQEAgLTE4MDAsMTQgKzE4MDIsMTkgQEAgcHJpdmF0ZToKIAogICAgIC8vIElm
IHlvdSdyZSB1c2luZyB0aGlzIGRpcmVjdGx5LCB5b3UgcHJvYmFibHkgc2hvdWxkIGJlIHVzaW5n
CiAgICAgLy8gY3JlYXRlU2F2ZVBvaW50KCkgaW5zdGVhZC4KLSAgICBBTFdBWVNfSU5MSU5FIFBh
cnNlclN0YXRlIGludGVybmFsU2F2ZVBhcnNlclN0YXRlKCkKKyAgICB0ZW1wbGF0ZSA8Y2xhc3Mg
VHJlZUJ1aWxkZXI+CisgICAgQUxXQVlTX0lOTElORSBQYXJzZXJTdGF0ZSBpbnRlcm5hbFNhdmVQ
YXJzZXJTdGF0ZShUcmVlQnVpbGRlciYgY29udGV4dCkKICAgICB7Ci0gICAgICAgIHJldHVybiBt
X3BhcnNlclN0YXRlOworICAgICAgICBhdXRvIHBhcnNlclN0YXRlID0gbV9wYXJzZXJTdGF0ZTsK
KyAgICAgICAgcGFyc2VyU3RhdGUudW5hcnlUb2tlblN0YWNrRGVwdGggPSBjb250ZXh0LnVuYXJ5
VG9rZW5TdGFja0RlcHRoKCk7CisgICAgICAgIHJldHVybiBwYXJzZXJTdGF0ZTsKICAgICB9CiAK
LSAgICBBTFdBWVNfSU5MSU5FIHZvaWQgcmVzdG9yZVBhcnNlclN0YXRlKGNvbnN0IFBhcnNlclN0
YXRlJiBzdGF0ZSkKKyAgICB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+CisgICAgQUxXQVlT
X0lOTElORSB2b2lkIHJlc3RvcmVQYXJzZXJTdGF0ZShUcmVlQnVpbGRlciYgY29udGV4dCwgY29u
c3QgUGFyc2VyU3RhdGUmIHN0YXRlKQogICAgIHsKICAgICAgICAgbV9wYXJzZXJTdGF0ZSA9IHN0
YXRlOworICAgICAgICBjb250ZXh0LnNldFVuYXJ5VG9rZW5TdGFja0RlcHRoKG1fcGFyc2VyU3Rh
dGUudW5hcnlUb2tlblN0YWNrRGVwdGgpOwogICAgIH0KIAogICAgIHN0cnVjdCBMZXhlclN0YXRl
IHsKQEAgLTE4NTUsNDcgKzE4NjIsNTYgQEAgcHJpdmF0ZToKICAgICAgICAgU3RyaW5nIHBhcnNl
ckVycm9yTWVzc2FnZTsKICAgICB9OwogCi0gICAgQUxXQVlTX0lOTElORSB2b2lkIGludGVybmFs
U2F2ZVN0YXRlKFNhdmVQb2ludCYgc2F2ZVBvaW50KQorICAgIHRlbXBsYXRlIDxjbGFzcyBUcmVl
QnVpbGRlcj4KKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgaW50ZXJuYWxTYXZlU3RhdGUoVHJlZUJ1
aWxkZXImIGNvbnRleHQsIFNhdmVQb2ludCYgc2F2ZVBvaW50KQogICAgIHsKLSAgICAgICAgc2F2
ZVBvaW50LnBhcnNlclN0YXRlID0gaW50ZXJuYWxTYXZlUGFyc2VyU3RhdGUoKTsKKyAgICAgICAg
c2F2ZVBvaW50LnBhcnNlclN0YXRlID0gaW50ZXJuYWxTYXZlUGFyc2VyU3RhdGUoY29udGV4dCk7
CiAgICAgICAgIHNhdmVQb2ludC5sZXhlclN0YXRlID0gaW50ZXJuYWxTYXZlTGV4ZXJTdGF0ZSgp
OwogICAgIH0KICAgICAKLSAgICBBTFdBWVNfSU5MSU5FIFNhdmVQb2ludFdpdGhFcnJvciBjcmVh
dGVTYXZlUG9pbnRGb3JFcnJvcigpCisgICAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPgor
ICAgIEFMV0FZU19JTkxJTkUgU2F2ZVBvaW50V2l0aEVycm9yIHN3YXBTYXZlUG9pbnRGb3JFcnJv
cihUcmVlQnVpbGRlciYgY29udGV4dCwgU2F2ZVBvaW50JiBvbGRTYXZlUG9pbnQpCiAgICAgewog
ICAgICAgICBTYXZlUG9pbnRXaXRoRXJyb3Igc2F2ZVBvaW50OwotICAgICAgICBpbnRlcm5hbFNh
dmVTdGF0ZShzYXZlUG9pbnQpOworICAgICAgICBpbnRlcm5hbFNhdmVTdGF0ZShjb250ZXh0LCBz
YXZlUG9pbnQpOwogICAgICAgICBzYXZlUG9pbnQubGV4ZXJFcnJvciA9IG1fbGV4ZXItPnNhd0Vy
cm9yKCk7CiAgICAgICAgIHNhdmVQb2ludC5sZXhlckVycm9yTWVzc2FnZSA9IG1fbGV4ZXItPmdl
dEVycm9yTWVzc2FnZSgpOwogICAgICAgICBzYXZlUG9pbnQucGFyc2VyRXJyb3JNZXNzYWdlID0g
bV9lcnJvck1lc3NhZ2U7CisgICAgICAgIC8vIE1ha2Ugc3VyZSB3ZSBzZXQgb3VyIG5ldyBzYXZl
cG9pbnRzIHVuYXJ5IHN0YWNrIHRvIHdoYXQgb2xkU2F2ZVBvaW50IGhhZCBhcyBpdCBjdXJyZW50
bHkgbWF5IGNvbnRhaW4gc3RhbGUgaW5mby4KKyAgICAgICAgc2F2ZVBvaW50LnBhcnNlclN0YXRl
LnVuYXJ5VG9rZW5TdGFja0RlcHRoID0gb2xkU2F2ZVBvaW50LnBhcnNlclN0YXRlLnVuYXJ5VG9r
ZW5TdGFja0RlcHRoOworICAgICAgICByZXN0b3JlU2F2ZVBvaW50KGNvbnRleHQsIG9sZFNhdmVQ
b2ludCk7CiAgICAgICAgIHJldHVybiBzYXZlUG9pbnQ7CiAgICAgfQogICAgIAotICAgIEFMV0FZ
U19JTkxJTkUgU2F2ZVBvaW50IGNyZWF0ZVNhdmVQb2ludCgpCisgICAgdGVtcGxhdGUgPGNsYXNz
IFRyZWVCdWlsZGVyPgorICAgIEFMV0FZU19JTkxJTkUgU2F2ZVBvaW50IGNyZWF0ZVNhdmVQb2lu
dChUcmVlQnVpbGRlciYgY29udGV4dCkKICAgICB7CiAgICAgICAgIEFTU0VSVCghaGFzRXJyb3Io
KSk7CiAgICAgICAgIFNhdmVQb2ludCBzYXZlUG9pbnQ7Ci0gICAgICAgIGludGVybmFsU2F2ZVN0
YXRlKHNhdmVQb2ludCk7CisgICAgICAgIGludGVybmFsU2F2ZVN0YXRlKGNvbnRleHQsIHNhdmVQ
b2ludCk7CiAgICAgICAgIHJldHVybiBzYXZlUG9pbnQ7CiAgICAgfQogCi0gICAgQUxXQVlTX0lO
TElORSB2b2lkIGludGVybmFsUmVzdG9yZVN0YXRlKGNvbnN0IFNhdmVQb2ludCYgc2F2ZVBvaW50
KQorICAgIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4KKyAgICBBTFdBWVNfSU5MSU5FIHZv
aWQgaW50ZXJuYWxSZXN0b3JlU3RhdGUoVHJlZUJ1aWxkZXImIGNvbnRleHQsIGNvbnN0IFNhdmVQ
b2ludCYgc2F2ZVBvaW50KQogICAgIHsKICAgICAgICAgcmVzdG9yZUxleGVyU3RhdGUoc2F2ZVBv
aW50LmxleGVyU3RhdGUpOwotICAgICAgICByZXN0b3JlUGFyc2VyU3RhdGUoc2F2ZVBvaW50LnBh
cnNlclN0YXRlKTsKKyAgICAgICAgcmVzdG9yZVBhcnNlclN0YXRlKGNvbnRleHQsIHNhdmVQb2lu
dC5wYXJzZXJTdGF0ZSk7CiAgICAgfQogCi0gICAgQUxXQVlTX0lOTElORSB2b2lkIHJlc3RvcmVT
YXZlUG9pbnRXaXRoRXJyb3IoY29uc3QgU2F2ZVBvaW50V2l0aEVycm9yJiBzYXZlUG9pbnQpCisg
ICAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPgorICAgIEFMV0FZU19JTkxJTkUgdm9pZCBy
ZXN0b3JlU2F2ZVBvaW50V2l0aEVycm9yKFRyZWVCdWlsZGVyJiBjb250ZXh0LCBjb25zdCBTYXZl
UG9pbnRXaXRoRXJyb3ImIHNhdmVQb2ludCkKICAgICB7Ci0gICAgICAgIGludGVybmFsUmVzdG9y
ZVN0YXRlKHNhdmVQb2ludCk7CisgICAgICAgIGludGVybmFsUmVzdG9yZVN0YXRlKGNvbnRleHQs
IHNhdmVQb2ludCk7CiAgICAgICAgIG1fbGV4ZXItPnNldFNhd0Vycm9yKHNhdmVQb2ludC5sZXhl
ckVycm9yKTsKICAgICAgICAgbV9sZXhlci0+c2V0RXJyb3JNZXNzYWdlKHNhdmVQb2ludC5sZXhl
ckVycm9yTWVzc2FnZSk7CiAgICAgICAgIG1fZXJyb3JNZXNzYWdlID0gc2F2ZVBvaW50LnBhcnNl
ckVycm9yTWVzc2FnZTsKICAgICB9CiAKLSAgICBBTFdBWVNfSU5MSU5FIHZvaWQgcmVzdG9yZVNh
dmVQb2ludChjb25zdCBTYXZlUG9pbnQmIHNhdmVQb2ludCkKKyAgICB0ZW1wbGF0ZSA8Y2xhc3Mg
VHJlZUJ1aWxkZXI+CisgICAgQUxXQVlTX0lOTElORSB2b2lkIHJlc3RvcmVTYXZlUG9pbnQoVHJl
ZUJ1aWxkZXImIGNvbnRleHQsIGNvbnN0IFNhdmVQb2ludCYgc2F2ZVBvaW50KQogICAgIHsKLSAg
ICAgICAgaW50ZXJuYWxSZXN0b3JlU3RhdGUoc2F2ZVBvaW50KTsKKyAgICAgICAgaW50ZXJuYWxS
ZXN0b3JlU3RhdGUoY29udGV4dCwgc2F2ZVBvaW50KTsKICAgICAgICAgbV9lcnJvck1lc3NhZ2Ug
PSBTdHJpbmcoKTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9w
YXJzZXIvUGFyc2VyVG9rZW5zLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNl
clRva2Vucy5oCmluZGV4IDMwZDJlMmRlYTRjMTE2Zjc3MjMzMGVkOTQ4ZGI5MGRiN2IxNGE1M2Iu
LmRiZDZkNjUxNGNmYmNmZTIzMTM2NTNjODZlMWM0YWUwMzNiOGYyNDMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyVG9rZW5zLmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXJUb2tlbnMuaApAQCAtMTk3LDcgKzE5NywxMyBAQCBz
dGF0aWNfYXNzZXJ0KHN0YXRpY19jYXN0PHVuc2lnbmVkPihQT1cpIDw9IDB4MDBmZmZmZmZVLCAi
SlNUb2tlblR5cGUgbXVzdCBiZSAyNAogCiBzdHJ1Y3QgSlNUZXh0UG9zaXRpb24gewogICAgIEpT
VGV4dFBvc2l0aW9uKCkgPSBkZWZhdWx0OwotICAgIEpTVGV4dFBvc2l0aW9uKGludCBfbGluZSwg
aW50IF9vZmZzZXQsIGludCBfbGluZVN0YXJ0T2Zmc2V0KSA6IGxpbmUoX2xpbmUpLCBvZmZzZXQo
X29mZnNldCksIGxpbmVTdGFydE9mZnNldChfbGluZVN0YXJ0T2Zmc2V0KSB7IH0KKyAgICBKU1Rl
eHRQb3NpdGlvbihpbnQgX2xpbmUsIGludCBfb2Zmc2V0LCBpbnQgX2xpbmVTdGFydE9mZnNldCkg
CisgICAgICAgIDogbGluZShfbGluZSkKKyAgICAgICAgLCBvZmZzZXQoX29mZnNldCkKKyAgICAg
ICAgLCBsaW5lU3RhcnRPZmZzZXQoX2xpbmVTdGFydE9mZnNldCkKKyAgICB7IAorICAgICAgICBj
aGVja0NvbnNpc3RlbmN5KCk7CisgICAgfQogCiAgICAgSlNUZXh0UG9zaXRpb24gb3BlcmF0b3Ir
KGludCBhZGp1c3RtZW50KSBjb25zdCB7IHJldHVybiBKU1RleHRQb3NpdGlvbihsaW5lLCBvZmZz
ZXQgKyBhZGp1c3RtZW50LCBsaW5lU3RhcnRPZmZzZXQpOyB9CiAgICAgSlNUZXh0UG9zaXRpb24g
b3BlcmF0b3IrKHVuc2lnbmVkIGFkanVzdG1lbnQpIGNvbnN0IHsgcmV0dXJuICp0aGlzICsgc3Rh
dGljX2Nhc3Q8aW50PihhZGp1c3RtZW50KTsgfQpAQCAtMjE4LDEwICsyMjQsMTggQEAgc3RydWN0
IEpTVGV4dFBvc2l0aW9uIHsKICAgICB9CiAKICAgICBpbnQgY29sdW1uKCkgY29uc3QgeyByZXR1
cm4gb2Zmc2V0IC0gbGluZVN0YXJ0T2Zmc2V0OyB9CisgICAgdm9pZCBjaGVja0NvbnNpc3RlbmN5
KCkKKyAgICB7CisgICAgICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgdGVzdCBBU1NFUlQob2Zmc2V0
ID49IGxpbmVTdGFydE9mZnNldCk7IGJ1dCB0aGF0IGJyZWFrcyBhIGxvdCBvZiB0ZXN0cy4KKyAg
ICAgICAgQVNTRVJUKGxpbmUgPj0gMCk7CisgICAgICAgIEFTU0VSVChvZmZzZXQgPj0gMCk7Cisg
ICAgICAgIEFTU0VSVChsaW5lU3RhcnRPZmZzZXQgPj0gMCk7CisgICAgfQogCi0gICAgaW50IGxp
bmUgeyAwIH07Ci0gICAgaW50IG9mZnNldCB7IDAgfTsKLSAgICBpbnQgbGluZVN0YXJ0T2Zmc2V0
IHsgMCB9OworICAgIC8vIEZJWE1FOiB0aGVzZSBzaG91bGQgYmUgdW5zaWduZWQuCisgICAgaW50
IGxpbmUgeyAtMSB9OworICAgIGludCBvZmZzZXQgeyAtMSB9OworICAgIGludCBsaW5lU3RhcnRP
ZmZzZXQgeyAtMSB9OwogfTsKIAogdW5pb24gSlNUb2tlbkRhdGEgewpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9TeW50YXhDaGVja2VyLmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcGFyc2VyL1N5bnRheENoZWNrZXIuaAppbmRleCA2NTY3ODFjNzQ3MTFmZWY2M2E4
YzZhZGM2N2JjOTUyNmUwNDg3MzJiLi41NWQzNjM4NWU3YTU4YWQ0N2ZjNDNjNmQyNzQ4OTNiODNh
ZjhmYTkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1N5bnRheENo
ZWNrZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1N5bnRheENoZWNrZXIu
aApAQCAtMzM0LDkgKzMzNCwxMSBAQCBwdWJsaWM6CiAgICAgaW50IHVuYXJ5VG9rZW5TdGFja0xh
c3RUeXBlKGludCYpIHsgcmV0dXJuIG1fdG9wVW5hcnlUb2tlbjsgfQogICAgIEpTVGV4dFBvc2l0
aW9uIHVuYXJ5VG9rZW5TdGFja0xhc3RTdGFydChpbnQmKSB7IHJldHVybiBKU1RleHRQb3NpdGlv
bigwLCAwLCAwKTsgfQogICAgIHZvaWQgdW5hcnlUb2tlblN0YWNrUmVtb3ZlTGFzdChpbnQmIHN0
YWNrRGVwdGgpIHsgc3RhY2tEZXB0aCA9IDA7IH0KKyAgICBpbnQgdW5hcnlUb2tlblN0YWNrRGVw
dGgoKSBjb25zdCB7IHJldHVybiAwOyB9CisgICAgdm9pZCBzZXRVbmFyeVRva2VuU3RhY2tEZXB0
aChpbnQpIHsgfQogICAgIAotICAgIHZvaWQgYXNzaWdubWVudFN0YWNrQXBwZW5kKGludCwgaW50
LCBpbnQsIGludCwgaW50LCBPcGVyYXRvcikgeyB9Ci0gICAgaW50IGNyZWF0ZUFzc2lnbm1lbnQo
Y29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgaW50LCBpbnQsIGludCwgaW50LCBpbnQpIHsgUkVMRUFT
RV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsgcmV0dXJuIEFzc2lnbm1lbnRFeHByOyB9CisgICAgdm9p
ZCBhc3NpZ25tZW50U3RhY2tBcHBlbmQoaW50JiBhc3NpZ25tZW50U3RhY2tEZXB0aCwgaW50LCBp
bnQsIGludCwgaW50LCBPcGVyYXRvcikgeyBoYXNBc3NpZ25lbWVudHMgPSAxOyB9CisgICAgaW50
IGNyZWF0ZUFzc2lnbm1lbnQoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgaW50JiBhc3NpZ25tZW50
U3RhY2tEZXB0aCwgaW50LCBpbnQsIGludCwgaW50KSB7IGhhc0Fzc2lnbmVtZW50cyA9IDA7IHJl
dHVybiBBc3NpZ25tZW50RXhwcjsgfQogICAgIGNvbnN0IElkZW50aWZpZXIqIGdldE5hbWUoY29u
c3QgUHJvcGVydHkmIHByb3BlcnR5KSBjb25zdCB7IHJldHVybiBwcm9wZXJ0eS5uYW1lOyB9CiAg
ICAgUHJvcGVydHlOb2RlOjpUeXBlIGdldFR5cGUoY29uc3QgUHJvcGVydHkmIHByb3BlcnR5KSBj
b25zdCB7IHJldHVybiBwcm9wZXJ0eS50eXBlOyB9CiAgICAgYm9vbCBpc1Jlc29sdmUoRXhwcmVz
c2lvblR5cGUgZXhwcikgY29uc3QgeyByZXR1cm4gZXhwciA9PSBSZXNvbHZlRXhwciB8fCBleHBy
ID09IFJlc29sdmVFdmFsRXhwcjsgfQpAQCAtNDM1LDcgKzQzNyw3IEBAIHB1YmxpYzoKICAgICBp
bnQgZW5kT2Zmc2V0KGludCkgeyByZXR1cm4gMDsgfQogICAgIHZvaWQgc2V0U3RhcnRPZmZzZXQo
aW50LCBpbnQpIHsgfQogCi0gICAgSlNUZXh0UG9zaXRpb24gYnJlYWtwb2ludExvY2F0aW9uKGlu
dCkgeyByZXR1cm4gSlNUZXh0UG9zaXRpb24oLTEsIDAsIDApOyB9CisgICAgSlNUZXh0UG9zaXRp
b24gYnJlYWtwb2ludExvY2F0aW9uKGludCkgeyByZXR1cm4geyB9OyB9CiAKICAgICB2b2lkIHBy
b3BhZ2F0ZUFyZ3VtZW50c1VzZSgpIHsgfQogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9qcy9m
dW5jdGlvbi10b1N0cmluZy1wYXJlbnRoZXNlcy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9q
cy9mdW5jdGlvbi10b1N0cmluZy1wYXJlbnRoZXNlcy1leHBlY3RlZC50eHQKaW5kZXggOGY0YTA4
ODA0YjVkODc3MmFjNGYyZWMyYWU3NTMyNjlhMGU1NTRhNS4uNGUxZjBjYmNmNWFmZWUyNGZjZGE3
ZmQ1YTgzMWQ3ODUyNDg0MmM3MyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvanMvZnVuY3Rpb24t
dG9TdHJpbmctcGFyZW50aGVzZXMtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2pzL2Z1
bmN0aW9uLXRvU3RyaW5nLXBhcmVudGhlc2VzLWV4cGVjdGVkLnR4dApAQCAtMjExLDcgKzIxMSw3
IEBAIFBBU1MgY29tcGlsZUFuZFNlcmlhbGl6ZSgnYSB8fCBiIHx8IGMnKSBpcyAnYSB8fCBiIHx8
IGMnCiBQQVNTIGNvbXBpbGVBbmRTZXJpYWxpemUoJyhhIHx8IGIpIHx8IGMnKSBpcyAnKGEgfHwg
YikgfHwgYycKIFBBU1MgY29tcGlsZUFuZFNlcmlhbGl6ZSgnYSB8fCAoYiB8fCBjKScpIGlzICdh
IHx8IChiIHx8IGMpJwogUEFTUyBjb21waWxlQW5kU2VyaWFsaXplKCdhID0gYiA9IGMnKSBpcyAn
YSA9IGIgPSBjJwotUEFTUyBjb21waWxlQW5kU2VyaWFsaXplKCcoYSA9IGIpID0gYycpIGlzICco
YSA9IGIpID0gYycKK1BBU1MgY29tcGlsZUFuZFNlcmlhbGl6ZSgiKGEgPSBiKSA9IGMiKSB0aHJl
dyBleGNlcHRpb24gU3ludGF4RXJyb3I6IExlZnQgc2lkZSBvZiBhc3NpZ25tZW50IGlzIG5vdCBh
IHJlZmVyZW5jZS4uCiBQQVNTIGNvbXBpbGVBbmRTZXJpYWxpemUoJ2EgPSAoYiA9IGMpJykgaXMg
J2EgPSAoYiA9IGMpJwogUEFTUyBjb21waWxlQW5kU2VyaWFsaXplKCdhID0gYiArIGMnKSBpcyAn
YSA9IGIgKyBjJwogUEFTUyBjb21waWxlQW5kU2VyaWFsaXplKCcoYSA9IGIpICsgYycpIGlzICco
YSA9IGIpICsgYycKQEAgLTIyMCwxMCArMjIwLDEwIEBAIFBBU1MgY29tcGlsZUFuZFNlcmlhbGl6
ZSgnYSArIGIgPSBjJykgdGhyZXcgZXhjZXB0aW9uIFN5bnRheEVycm9yOiBMZWZ0IGhhbmQgc2lk
CiBQQVNTIGNvbXBpbGVBbmRTZXJpYWxpemUoJyhhICsgYikgPSBjJykgdGhyZXcgZXhjZXB0aW9u
IFN5bnRheEVycm9yOiBMZWZ0IHNpZGUgb2YgYXNzaWdubWVudCBpcyBub3QgYSByZWZlcmVuY2Uu
LgogUEFTUyBjb21waWxlQW5kU2VyaWFsaXplKCdhICsgKGIgPSBjKScpIGlzICdhICsgKGIgPSBj
KScKIFBBU1MgY29tcGlsZUFuZFNlcmlhbGl6ZSgnYSAqPSBiICo9IGMnKSBpcyAnYSAqPSBiICo9
IGMnCi1QQVNTIGNvbXBpbGVBbmRTZXJpYWxpemUoJyhhICo9IGIpICo9IGMnKSBpcyAnKGEgKj0g
YikgKj0gYycKK1BBU1MgY29tcGlsZUFuZFNlcmlhbGl6ZSgiKGEgKj0gYikgKj0gYyIpIHRocmV3
IGV4Y2VwdGlvbiBTeW50YXhFcnJvcjogTGVmdCBzaWRlIG9mIGFzc2lnbm1lbnQgaXMgbm90IGEg
cmVmZXJlbmNlLi4KIFBBU1MgY29tcGlsZUFuZFNlcmlhbGl6ZSgnYSAqPSAoYiAqPSBjKScpIGlz
ICdhICo9IChiICo9IGMpJwogUEFTUyBjb21waWxlQW5kU2VyaWFsaXplKCdhID0gYiAqPSBjJykg
aXMgJ2EgPSBiICo9IGMnCi1QQVNTIGNvbXBpbGVBbmRTZXJpYWxpemUoJyhhID0gYikgKj0gYycp
IGlzICcoYSA9IGIpICo9IGMnCitQQVNTIGNvbXBpbGVBbmRTZXJpYWxpemUoIihhID0gYikgKj0g
YyIpIHRocmV3IGV4Y2VwdGlvbiBTeW50YXhFcnJvcjogTGVmdCBzaWRlIG9mIGFzc2lnbm1lbnQg
aXMgbm90IGEgcmVmZXJlbmNlLi4KIFBBU1MgY29tcGlsZUFuZFNlcmlhbGl6ZSgnYSA9IChiICo9
IGMpJykgaXMgJ2EgPSAoYiAqPSBjKScKIFBBU1MgY29tcGlsZUFuZFNlcmlhbGl6ZSgnYSAqPSBi
ICsgYycpIGlzICdhICo9IGIgKyBjJwogUEFTUyBjb21waWxlQW5kU2VyaWFsaXplKCcoYSAqPSBi
KSArIGMnKSBpcyAnKGEgKj0gYikgKyBjJwpAQCAtMjMyLDEwICsyMzIsMTAgQEAgUEFTUyBjb21w
aWxlQW5kU2VyaWFsaXplKCdhICsgYiAqPSBjJykgdGhyZXcgZXhjZXB0aW9uIFN5bnRheEVycm9y
OiBMZWZ0IGhhbmQgc2kKIFBBU1MgY29tcGlsZUFuZFNlcmlhbGl6ZSgnKGEgKyBiKSAqPSBjJykg
dGhyZXcgZXhjZXB0aW9uIFN5bnRheEVycm9yOiBMZWZ0IHNpZGUgb2YgYXNzaWdubWVudCBpcyBu
b3QgYSByZWZlcmVuY2UuLgogUEFTUyBjb21waWxlQW5kU2VyaWFsaXplKCdhICsgKGIgKj0gYykn
KSBpcyAnYSArIChiICo9IGMpJwogUEFTUyBjb21waWxlQW5kU2VyaWFsaXplKCdhIC89IGIgLz0g
YycpIGlzICdhIC89IGIgLz0gYycKLVBBU1MgY29tcGlsZUFuZFNlcmlhbGl6ZSgnKGEgLz0gYikg
Lz0gYycpIGlzICcoYSAvPSBiKSAvPSBjJworUEFTUyBjb21waWxlQW5kU2VyaWFsaXplKCIoYSAv
PSBiKSAvPSBjIikgdGhyZXcgZXhjZXB0aW9uIFN5bnRheEVycm9yOiBMZWZ0IHNpZGUgb2YgYXNz
aWdubWVudCBpcyBub3QgYSByZWZlcmVuY2UuLgogUEFTUyBjb21waWxlQW5kU2VyaWFsaXplKCdh
IC89IChiIC89IGMpJykgaXMgJ2EgLz0gKGIgLz0gYyknCiBQQVNTIGNvbXBpbGVBbmRTZXJpYWxp
emUoJ2EgPSBiIC89IGMnKSBpcyAnYSA9IGIgLz0gYycKLVBBU1MgY29tcGlsZUFuZFNlcmlhbGl6
ZSgnKGEgPSBiKSAvPSBjJykgaXMgJyhhID0gYikgLz0gYycKK1BBU1MgY29tcGlsZUFuZFNlcmlh
bGl6ZSgiKGEgPSBiKSAvPSBjIikgdGhyZXcgZXhjZXB0aW9uIFN5bnRheEVycm9yOiBMZWZ0IHNp
ZGUgb2YgYXNzaWdubWVudCBpcyBub3QgYSByZWZlcmVuY2UuLgogUEFTUyBjb21waWxlQW5kU2Vy
aWFsaXplKCdhID0gKGIgLz0gYyknKSBpcyAnYSA9IChiIC89IGMpJwogUEFTUyBjb21waWxlQW5k
U2VyaWFsaXplKCdhIC89IGIgKyBjJykgaXMgJ2EgLz0gYiArIGMnCiBQQVNTIGNvbXBpbGVBbmRT
ZXJpYWxpemUoJyhhIC89IGIpICsgYycpIGlzICcoYSAvPSBiKSArIGMnCkBAIC0yNDQsMTAgKzI0
NCwxMCBAQCBQQVNTIGNvbXBpbGVBbmRTZXJpYWxpemUoJ2EgKyBiIC89IGMnKSB0aHJldyBleGNl
cHRpb24gU3ludGF4RXJyb3I6IExlZnQgaGFuZCBzaQogUEFTUyBjb21waWxlQW5kU2VyaWFsaXpl
KCcoYSArIGIpIC89IGMnKSB0aHJldyBleGNlcHRpb24gU3ludGF4RXJyb3I6IExlZnQgc2lkZSBv
ZiBhc3NpZ25tZW50IGlzIG5vdCBhIHJlZmVyZW5jZS4uCiBQQVNTIGNvbXBpbGVBbmRTZXJpYWxp
emUoJ2EgKyAoYiAvPSBjKScpIGlzICdhICsgKGIgLz0gYyknCiBQQVNTIGNvbXBpbGVBbmRTZXJp
YWxpemUoJ2EgJT0gYiAlPSBjJykgaXMgJ2EgJT0gYiAlPSBjJwotUEFTUyBjb21waWxlQW5kU2Vy
aWFsaXplKCcoYSAlPSBiKSAlPSBjJykgaXMgJyhhICU9IGIpICU9IGMnCitQQVNTIGNvbXBpbGVB
bmRTZXJpYWxpemUoIihhICU9IGIpICU9IGMiKSB0aHJldyBleGNlcHRpb24gU3ludGF4RXJyb3I6
IExlZnQgc2lkZSBvZiBhc3NpZ25tZW50IGlzIG5vdCBhIHJlZmVyZW5jZS4uCiBQQVNTIGNvbXBp
bGVBbmRTZXJpYWxpemUoJ2EgJT0gKGIgJT0gYyknKSBpcyAnYSAlPSAoYiAlPSBjKScKIFBBU1Mg
Y29tcGlsZUFuZFNlcmlhbGl6ZSgnYSA9IGIgJT0gYycpIGlzICdhID0gYiAlPSBjJwotUEFTUyBj
b21waWxlQW5kU2VyaWFsaXplKCcoYSA9IGIpICU9IGMnKSBpcyAnKGEgPSBiKSAlPSBjJworUEFT
UyBjb21waWxlQW5kU2VyaWFsaXplKCIoYSA9IGIpICU9IGMiKSB0aHJldyBleGNlcHRpb24gU3lu
dGF4RXJyb3I6IExlZnQgc2lkZSBvZiBhc3NpZ25tZW50IGlzIG5vdCBhIHJlZmVyZW5jZS4uCiBQ
QVNTIGNvbXBpbGVBbmRTZXJpYWxpemUoJ2EgPSAoYiAlPSBjKScpIGlzICdhID0gKGIgJT0gYykn
CiBQQVNTIGNvbXBpbGVBbmRTZXJpYWxpemUoJ2EgJT0gYiArIGMnKSBpcyAnYSAlPSBiICsgYycK
IFBBU1MgY29tcGlsZUFuZFNlcmlhbGl6ZSgnKGEgJT0gYikgKyBjJykgaXMgJyhhICU9IGIpICsg
YycKQEAgLTI1NiwxMCArMjU2LDEwIEBAIFBBU1MgY29tcGlsZUFuZFNlcmlhbGl6ZSgnYSArIGIg
JT0gYycpIHRocmV3IGV4Y2VwdGlvbiBTeW50YXhFcnJvcjogTGVmdCBoYW5kIHNpCiBQQVNTIGNv
bXBpbGVBbmRTZXJpYWxpemUoJyhhICsgYikgJT0gYycpIHRocmV3IGV4Y2VwdGlvbiBTeW50YXhF
cnJvcjogTGVmdCBzaWRlIG9mIGFzc2lnbm1lbnQgaXMgbm90IGEgcmVmZXJlbmNlLi4KIFBBU1Mg
Y29tcGlsZUFuZFNlcmlhbGl6ZSgnYSArIChiICU9IGMpJykgaXMgJ2EgKyAoYiAlPSBjKScKIFBB
U1MgY29tcGlsZUFuZFNlcmlhbGl6ZSgnYSArPSBiICs9IGMnKSBpcyAnYSArPSBiICs9IGMnCi1Q
QVNTIGNvbXBpbGVBbmRTZXJpYWxpemUoJyhhICs9IGIpICs9IGMnKSBpcyAnKGEgKz0gYikgKz0g
YycKK1BBU1MgY29tcGlsZUFuZFNlcmlhbGl6ZSgiKGEgKz0gYikgKz0gYyIpIHRocmV3IGV4Y2Vw
dGlvbiBTeW50YXhFcnJvcjogTGVmdCBzaWRlIG9mIGFzc2lnbm1lbnQgaXMgbm90IGEgcmVmZXJl
bmNlLi4KIFBBU1MgY29tcGlsZUFuZFNlcmlhbGl6ZSgnYSArPSAoYiArPSBjKScpIGlzICdhICs9
IChiICs9IGMpJwogUEFTUyBjb21waWxlQW5kU2VyaWFsaXplKCdhID0gYiArPSBjJykgaXMgJ2Eg
PSBiICs9IGMnCi1QQVNTIGNvbXBpbGVBbmRTZXJpYWxpemUoJyhhID0gYikgKz0gYycpIGlzICco
YSA9IGIpICs9IGMnCitQQVNTIGNvbXBpbGVBbmRTZXJpYWxpemUoIihhID0gYikgKz0gYyIpIHRo
cmV3IGV4Y2VwdGlvbiBTeW50YXhFcnJvcjogTGVmdCBzaWRlIG9mIGFzc2lnbm1lbnQgaXMgbm90
IGEgcmVmZXJlbmNlLi4KIFBBU1MgY29tcGlsZUFuZFNlcmlhbGl6ZSgnYSA9IChiICs9IGMpJykg
aXMgJ2EgPSAoYiArPSBjKScKIFBBU1MgY29tcGlsZUFuZFNlcmlhbGl6ZSgnYSArPSBiICsgYycp
IGlzICdhICs9IGIgKyBjJwogUEFTUyBjb21waWxlQW5kU2VyaWFsaXplKCcoYSArPSBiKSArIGMn
KSBpcyAnKGEgKz0gYikgKyBjJwpAQCAtMjY4LDEwICsyNjgsMTAgQEAgUEFTUyBjb21waWxlQW5k
U2VyaWFsaXplKCdhICsgYiArPSBjJykgdGhyZXcgZXhjZXB0aW9uIFN5bnRheEVycm9yOiBMZWZ0
IGhhbmQgc2kKIFBBU1MgY29tcGlsZUFuZFNlcmlhbGl6ZSgnKGEgKyBiKSArPSBjJykgdGhyZXcg
ZXhjZXB0aW9uIFN5bnRheEVycm9yOiBMZWZ0IHNpZGUgb2YgYXNzaWdubWVudCBpcyBub3QgYSBy
ZWZlcmVuY2UuLgogUEFTUyBjb21waWxlQW5kU2VyaWFsaXplKCdhICsgKGIgKz0gYyknKSBpcyAn
YSArIChiICs9IGMpJwogUEFTUyBjb21waWxlQW5kU2VyaWFsaXplKCdhIC09IGIgLT0gYycpIGlz
ICdhIC09IGIgLT0gYycKLVBBU1MgY29tcGlsZUFuZFNlcmlhbGl6ZSgnKGEgLT0gYikgLT0gYycp
IGlzICcoYSAtPSBiKSAtPSBjJworUEFTUyBjb21waWxlQW5kU2VyaWFsaXplKCIoYSAtPSBiKSAt
PSBjIikgdGhyZXcgZXhjZXB0aW9uIFN5bnRheEVycm9yOiBMZWZ0IHNpZGUgb2YgYXNzaWdubWVu
dCBpcyBub3QgYSByZWZlcmVuY2UuLgogUEFTUyBjb21waWxlQW5kU2VyaWFsaXplKCdhIC09IChi
IC09IGMpJykgaXMgJ2EgLT0gKGIgLT0gYyknCiBQQVNTIGNvbXBpbGVBbmRTZXJpYWxpemUoJ2Eg
PSBiIC09IGMnKSBpcyAnYSA9IGIgLT0gYycKLVBBU1MgY29tcGlsZUFuZFNlcmlhbGl6ZSgnKGEg
PSBiKSAtPSBjJykgaXMgJyhhID0gYikgLT0gYycKK1BBU1MgY29tcGlsZUFuZFNlcmlhbGl6ZSgi
KGEgPSBiKSAtPSBjIikgdGhyZXcgZXhjZXB0aW9uIFN5bnRheEVycm9yOiBMZWZ0IHNpZGUgb2Yg
YXNzaWdubWVudCBpcyBub3QgYSByZWZlcmVuY2UuLgogUEFTUyBjb21waWxlQW5kU2VyaWFsaXpl
KCdhID0gKGIgLT0gYyknKSBpcyAnYSA9IChiIC09IGMpJwogUEFTUyBjb21waWxlQW5kU2VyaWFs
aXplKCdhIC09IGIgKyBjJykgaXMgJ2EgLT0gYiArIGMnCiBQQVNTIGNvbXBpbGVBbmRTZXJpYWxp
emUoJyhhIC09IGIpICsgYycpIGlzICcoYSAtPSBiKSArIGMnCkBAIC0yODAsMTAgKzI4MCwxMCBA
QCBQQVNTIGNvbXBpbGVBbmRTZXJpYWxpemUoJ2EgKyBiIC09IGMnKSB0aHJldyBleGNlcHRpb24g
U3ludGF4RXJyb3I6IExlZnQgaGFuZCBzaQogUEFTUyBjb21waWxlQW5kU2VyaWFsaXplKCcoYSAr
IGIpIC09IGMnKSB0aHJldyBleGNlcHRpb24gU3ludGF4RXJyb3I6IExlZnQgc2lkZSBvZiBhc3Np
Z25tZW50IGlzIG5vdCBhIHJlZmVyZW5jZS4uCiBQQVNTIGNvbXBpbGVBbmRTZXJpYWxpemUoJ2Eg
KyAoYiAtPSBjKScpIGlzICdhICsgKGIgLT0gYyknCiBQQVNTIGNvbXBpbGVBbmRTZXJpYWxpemUo
J2EgPDw9IGIgPDw9IGMnKSBpcyAnYSA8PD0gYiA8PD0gYycKLVBBU1MgY29tcGlsZUFuZFNlcmlh
bGl6ZSgnKGEgPDw9IGIpIDw8PSBjJykgaXMgJyhhIDw8PSBiKSA8PD0gYycKK1BBU1MgY29tcGls
ZUFuZFNlcmlhbGl6ZSgiKGEgPDw9IGIpIDw8PSBjIikgdGhyZXcgZXhjZXB0aW9uIFN5bnRheEVy
cm9yOiBMZWZ0IHNpZGUgb2YgYXNzaWdubWVudCBpcyBub3QgYSByZWZlcmVuY2UuLgogUEFTUyBj
b21waWxlQW5kU2VyaWFsaXplKCdhIDw8PSAoYiA8PD0gYyknKSBpcyAnYSA8PD0gKGIgPDw9IGMp
JwogUEFTUyBjb21waWxlQW5kU2VyaWFsaXplKCdhID0gYiA8PD0gYycpIGlzICdhID0gYiA8PD0g
YycKLVBBU1MgY29tcGlsZUFuZFNlcmlhbGl6ZSgnKGEgPSBiKSA8PD0gYycpIGlzICcoYSA9IGIp
IDw8PSBjJworUEFTUyBjb21waWxlQW5kU2VyaWFsaXplKCIoYSA9IGIpIDw8PSBjIikgdGhyZXcg
ZXhjZXB0aW9uIFN5bnRheEVycm9yOiBMZWZ0IHNpZGUgb2YgYXNzaWdubWVudCBpcyBub3QgYSBy
ZWZlcmVuY2UuLgogUEFTUyBjb21waWxlQW5kU2VyaWFsaXplKCdhID0gKGIgPDw9IGMpJykgaXMg
J2EgPSAoYiA8PD0gYyknCiBQQVNTIGNvbXBpbGVBbmRTZXJpYWxpemUoJ2EgPDw9IGIgKyBjJykg
aXMgJ2EgPDw9IGIgKyBjJwogUEFTUyBjb21waWxlQW5kU2VyaWFsaXplKCcoYSA8PD0gYikgKyBj
JykgaXMgJyhhIDw8PSBiKSArIGMnCkBAIC0yOTIsMTAgKzI5MiwxMCBAQCBQQVNTIGNvbXBpbGVB
bmRTZXJpYWxpemUoJ2EgKyBiIDw8PSBjJykgdGhyZXcgZXhjZXB0aW9uIFN5bnRheEVycm9yOiBM
ZWZ0IGhhbmQgcwogUEFTUyBjb21waWxlQW5kU2VyaWFsaXplKCcoYSArIGIpIDw8PSBjJykgdGhy
ZXcgZXhjZXB0aW9uIFN5bnRheEVycm9yOiBMZWZ0IHNpZGUgb2YgYXNzaWdubWVudCBpcyBub3Qg
YSByZWZlcmVuY2UuLgogUEFTUyBjb21waWxlQW5kU2VyaWFsaXplKCdhICsgKGIgPDw9IGMpJykg
aXMgJ2EgKyAoYiA8PD0gYyknCiBQQVNTIGNvbXBpbGVBbmRTZXJpYWxpemUoJ2EgPj49IGIgPj49
IGMnKSBpcyAnYSA+Pj0gYiA+Pj0gYycKLVBBU1MgY29tcGlsZUFuZFNlcmlhbGl6ZSgnKGEgPj49
IGIpID4+PSBjJykgaXMgJyhhID4+PSBiKSA+Pj0gYycKK1BBU1MgY29tcGlsZUFuZFNlcmlhbGl6
ZSgiKGEgPj49IGIpID4+PSBjIikgdGhyZXcgZXhjZXB0aW9uIFN5bnRheEVycm9yOiBMZWZ0IHNp
ZGUgb2YgYXNzaWdubWVudCBpcyBub3QgYSByZWZlcmVuY2UuLgogUEFTUyBjb21waWxlQW5kU2Vy
aWFsaXplKCdhID4+PSAoYiA+Pj0gYyknKSBpcyAnYSA+Pj0gKGIgPj49IGMpJwogUEFTUyBjb21w
aWxlQW5kU2VyaWFsaXplKCdhID0gYiA+Pj0gYycpIGlzICdhID0gYiA+Pj0gYycKLVBBU1MgY29t
cGlsZUFuZFNlcmlhbGl6ZSgnKGEgPSBiKSA+Pj0gYycpIGlzICcoYSA9IGIpID4+PSBjJworUEFT
UyBjb21waWxlQW5kU2VyaWFsaXplKCIoYSA9IGIpID4+PSBjIikgdGhyZXcgZXhjZXB0aW9uIFN5
bnRheEVycm9yOiBMZWZ0IHNpZGUgb2YgYXNzaWdubWVudCBpcyBub3QgYSByZWZlcmVuY2UuLgog
UEFTUyBjb21waWxlQW5kU2VyaWFsaXplKCdhID0gKGIgPj49IGMpJykgaXMgJ2EgPSAoYiA+Pj0g
YyknCiBQQVNTIGNvbXBpbGVBbmRTZXJpYWxpemUoJ2EgPj49IGIgKyBjJykgaXMgJ2EgPj49IGIg
KyBjJwogUEFTUyBjb21waWxlQW5kU2VyaWFsaXplKCcoYSA+Pj0gYikgKyBjJykgaXMgJyhhID4+
PSBiKSArIGMnCkBAIC0zMDQsMTAgKzMwNCwxMCBAQCBQQVNTIGNvbXBpbGVBbmRTZXJpYWxpemUo
J2EgKyBiID4+PSBjJykgdGhyZXcgZXhjZXB0aW9uIFN5bnRheEVycm9yOiBMZWZ0IGhhbmQgcwog
UEFTUyBjb21waWxlQW5kU2VyaWFsaXplKCcoYSArIGIpID4+PSBjJykgdGhyZXcgZXhjZXB0aW9u
IFN5bnRheEVycm9yOiBMZWZ0IHNpZGUgb2YgYXNzaWdubWVudCBpcyBub3QgYSByZWZlcmVuY2Uu
LgogUEFTUyBjb21waWxlQW5kU2VyaWFsaXplKCdhICsgKGIgPj49IGMpJykgaXMgJ2EgKyAoYiA+
Pj0gYyknCiBQQVNTIGNvbXBpbGVBbmRTZXJpYWxpemUoJ2EgPj4+PSBiID4+Pj0gYycpIGlzICdh
ID4+Pj0gYiA+Pj49IGMnCi1QQVNTIGNvbXBpbGVBbmRTZXJpYWxpemUoJyhhID4+Pj0gYikgPj4+
PSBjJykgaXMgJyhhID4+Pj0gYikgPj4+PSBjJworUEFTUyBjb21waWxlQW5kU2VyaWFsaXplKCIo
YSA+Pj49IGIpID4+Pj0gYyIpIHRocmV3IGV4Y2VwdGlvbiBTeW50YXhFcnJvcjogTGVmdCBzaWRl
IG9mIGFzc2lnbm1lbnQgaXMgbm90IGEgcmVmZXJlbmNlLi4KIFBBU1MgY29tcGlsZUFuZFNlcmlh
bGl6ZSgnYSA+Pj49IChiID4+Pj0gYyknKSBpcyAnYSA+Pj49IChiID4+Pj0gYyknCiBQQVNTIGNv
bXBpbGVBbmRTZXJpYWxpemUoJ2EgPSBiID4+Pj0gYycpIGlzICdhID0gYiA+Pj49IGMnCi1QQVNT
IGNvbXBpbGVBbmRTZXJpYWxpemUoJyhhID0gYikgPj4+PSBjJykgaXMgJyhhID0gYikgPj4+PSBj
JworUEFTUyBjb21waWxlQW5kU2VyaWFsaXplKCIoYSA9IGIpID4+Pj0gYyIpIHRocmV3IGV4Y2Vw
dGlvbiBTeW50YXhFcnJvcjogTGVmdCBzaWRlIG9mIGFzc2lnbm1lbnQgaXMgbm90IGEgcmVmZXJl
bmNlLi4KIFBBU1MgY29tcGlsZUFuZFNlcmlhbGl6ZSgnYSA9IChiID4+Pj0gYyknKSBpcyAnYSA9
IChiID4+Pj0gYyknCiBQQVNTIGNvbXBpbGVBbmRTZXJpYWxpemUoJ2EgPj4+PSBiICsgYycpIGlz
ICdhID4+Pj0gYiArIGMnCiBQQVNTIGNvbXBpbGVBbmRTZXJpYWxpemUoJyhhID4+Pj0gYikgKyBj
JykgaXMgJyhhID4+Pj0gYikgKyBjJwpAQCAtMzE2LDEwICszMTYsMTAgQEAgUEFTUyBjb21waWxl
QW5kU2VyaWFsaXplKCdhICsgYiA+Pj49IGMnKSB0aHJldyBleGNlcHRpb24gU3ludGF4RXJyb3I6
IExlZnQgaGFuZAogUEFTUyBjb21waWxlQW5kU2VyaWFsaXplKCcoYSArIGIpID4+Pj0gYycpIHRo
cmV3IGV4Y2VwdGlvbiBTeW50YXhFcnJvcjogTGVmdCBzaWRlIG9mIGFzc2lnbm1lbnQgaXMgbm90
IGEgcmVmZXJlbmNlLi4KIFBBU1MgY29tcGlsZUFuZFNlcmlhbGl6ZSgnYSArIChiID4+Pj0gYykn
KSBpcyAnYSArIChiID4+Pj0gYyknCiBQQVNTIGNvbXBpbGVBbmRTZXJpYWxpemUoJ2EgJj0gYiAm
PSBjJykgaXMgJ2EgJj0gYiAmPSBjJwotUEFTUyBjb21waWxlQW5kU2VyaWFsaXplKCcoYSAmPSBi
KSAmPSBjJykgaXMgJyhhICY9IGIpICY9IGMnCitQQVNTIGNvbXBpbGVBbmRTZXJpYWxpemUoIihh
ICY9IGIpICY9IGMiKSB0aHJldyBleGNlcHRpb24gU3ludGF4RXJyb3I6IExlZnQgc2lkZSBvZiBh
c3NpZ25tZW50IGlzIG5vdCBhIHJlZmVyZW5jZS4uCiBQQVNTIGNvbXBpbGVBbmRTZXJpYWxpemUo
J2EgJj0gKGIgJj0gYyknKSBpcyAnYSAmPSAoYiAmPSBjKScKIFBBU1MgY29tcGlsZUFuZFNlcmlh
bGl6ZSgnYSA9IGIgJj0gYycpIGlzICdhID0gYiAmPSBjJwotUEFTUyBjb21waWxlQW5kU2VyaWFs
aXplKCcoYSA9IGIpICY9IGMnKSBpcyAnKGEgPSBiKSAmPSBjJworUEFTUyBjb21waWxlQW5kU2Vy
aWFsaXplKCIoYSA9IGIpICY9IGMiKSB0aHJldyBleGNlcHRpb24gU3ludGF4RXJyb3I6IExlZnQg
c2lkZSBvZiBhc3NpZ25tZW50IGlzIG5vdCBhIHJlZmVyZW5jZS4uCiBQQVNTIGNvbXBpbGVBbmRT
ZXJpYWxpemUoJ2EgPSAoYiAmPSBjKScpIGlzICdhID0gKGIgJj0gYyknCiBQQVNTIGNvbXBpbGVB
bmRTZXJpYWxpemUoJ2EgJj0gYiArIGMnKSBpcyAnYSAmPSBiICsgYycKIFBBU1MgY29tcGlsZUFu
ZFNlcmlhbGl6ZSgnKGEgJj0gYikgKyBjJykgaXMgJyhhICY9IGIpICsgYycKQEAgLTMyOCwxMCAr
MzI4LDEwIEBAIFBBU1MgY29tcGlsZUFuZFNlcmlhbGl6ZSgnYSArIGIgJj0gYycpIHRocmV3IGV4
Y2VwdGlvbiBTeW50YXhFcnJvcjogTGVmdCBoYW5kIHNpCiBQQVNTIGNvbXBpbGVBbmRTZXJpYWxp
emUoJyhhICsgYikgJj0gYycpIHRocmV3IGV4Y2VwdGlvbiBTeW50YXhFcnJvcjogTGVmdCBzaWRl
IG9mIGFzc2lnbm1lbnQgaXMgbm90IGEgcmVmZXJlbmNlLi4KIFBBU1MgY29tcGlsZUFuZFNlcmlh
bGl6ZSgnYSArIChiICY9IGMpJykgaXMgJ2EgKyAoYiAmPSBjKScKIFBBU1MgY29tcGlsZUFuZFNl
cmlhbGl6ZSgnYSBePSBiIF49IGMnKSBpcyAnYSBePSBiIF49IGMnCi1QQVNTIGNvbXBpbGVBbmRT
ZXJpYWxpemUoJyhhIF49IGIpIF49IGMnKSBpcyAnKGEgXj0gYikgXj0gYycKK1BBU1MgY29tcGls
ZUFuZFNlcmlhbGl6ZSgiKGEgXj0gYikgXj0gYyIpIHRocmV3IGV4Y2VwdGlvbiBTeW50YXhFcnJv
cjogTGVmdCBzaWRlIG9mIGFzc2lnbm1lbnQgaXMgbm90IGEgcmVmZXJlbmNlLi4KIFBBU1MgY29t
cGlsZUFuZFNlcmlhbGl6ZSgnYSBePSAoYiBePSBjKScpIGlzICdhIF49IChiIF49IGMpJwogUEFT
UyBjb21waWxlQW5kU2VyaWFsaXplKCdhID0gYiBePSBjJykgaXMgJ2EgPSBiIF49IGMnCi1QQVNT
IGNvbXBpbGVBbmRTZXJpYWxpemUoJyhhID0gYikgXj0gYycpIGlzICcoYSA9IGIpIF49IGMnCitQ
QVNTIGNvbXBpbGVBbmRTZXJpYWxpemUoIihhID0gYikgXj0gYyIpIHRocmV3IGV4Y2VwdGlvbiBT
eW50YXhFcnJvcjogTGVmdCBzaWRlIG9mIGFzc2lnbm1lbnQgaXMgbm90IGEgcmVmZXJlbmNlLi4K
IFBBU1MgY29tcGlsZUFuZFNlcmlhbGl6ZSgnYSA9IChiIF49IGMpJykgaXMgJ2EgPSAoYiBePSBj
KScKIFBBU1MgY29tcGlsZUFuZFNlcmlhbGl6ZSgnYSBePSBiICsgYycpIGlzICdhIF49IGIgKyBj
JwogUEFTUyBjb21waWxlQW5kU2VyaWFsaXplKCcoYSBePSBiKSArIGMnKSBpcyAnKGEgXj0gYikg
KyBjJwpAQCAtMzQwLDEwICszNDAsMTAgQEAgUEFTUyBjb21waWxlQW5kU2VyaWFsaXplKCdhICsg
YiBePSBjJykgdGhyZXcgZXhjZXB0aW9uIFN5bnRheEVycm9yOiBMZWZ0IGhhbmQgc2kKIFBBU1Mg
Y29tcGlsZUFuZFNlcmlhbGl6ZSgnKGEgKyBiKSBePSBjJykgdGhyZXcgZXhjZXB0aW9uIFN5bnRh
eEVycm9yOiBMZWZ0IHNpZGUgb2YgYXNzaWdubWVudCBpcyBub3QgYSByZWZlcmVuY2UuLgogUEFT
UyBjb21waWxlQW5kU2VyaWFsaXplKCdhICsgKGIgXj0gYyknKSBpcyAnYSArIChiIF49IGMpJwog
UEFTUyBjb21waWxlQW5kU2VyaWFsaXplKCdhIHw9IGIgfD0gYycpIGlzICdhIHw9IGIgfD0gYycK
LVBBU1MgY29tcGlsZUFuZFNlcmlhbGl6ZSgnKGEgfD0gYikgfD0gYycpIGlzICcoYSB8PSBiKSB8
PSBjJworUEFTUyBjb21waWxlQW5kU2VyaWFsaXplKCIoYSB8PSBiKSB8PSBjIikgdGhyZXcgZXhj
ZXB0aW9uIFN5bnRheEVycm9yOiBMZWZ0IHNpZGUgb2YgYXNzaWdubWVudCBpcyBub3QgYSByZWZl
cmVuY2UuLgogUEFTUyBjb21waWxlQW5kU2VyaWFsaXplKCdhIHw9IChiIHw9IGMpJykgaXMgJ2Eg
fD0gKGIgfD0gYyknCiBQQVNTIGNvbXBpbGVBbmRTZXJpYWxpemUoJ2EgPSBiIHw9IGMnKSBpcyAn
YSA9IGIgfD0gYycKLVBBU1MgY29tcGlsZUFuZFNlcmlhbGl6ZSgnKGEgPSBiKSB8PSBjJykgaXMg
JyhhID0gYikgfD0gYycKK1BBU1MgY29tcGlsZUFuZFNlcmlhbGl6ZSgiKGEgPSBiKSB8PSBjIikg
dGhyZXcgZXhjZXB0aW9uIFN5bnRheEVycm9yOiBMZWZ0IHNpZGUgb2YgYXNzaWdubWVudCBpcyBu
b3QgYSByZWZlcmVuY2UuLgogUEFTUyBjb21waWxlQW5kU2VyaWFsaXplKCdhID0gKGIgfD0gYykn
KSBpcyAnYSA9IChiIHw9IGMpJwogUEFTUyBjb21waWxlQW5kU2VyaWFsaXplKCdhIHw9IGIgKyBj
JykgaXMgJ2EgfD0gYiArIGMnCiBQQVNTIGNvbXBpbGVBbmRTZXJpYWxpemUoJyhhIHw9IGIpICsg
YycpIGlzICcoYSB8PSBiKSArIGMnCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9qcy9zY3JpcHQt
dGVzdHMvZnVuY3Rpb24tdG9TdHJpbmctcGFyZW50aGVzZXMuanMgYi9MYXlvdXRUZXN0cy9qcy9z
Y3JpcHQtdGVzdHMvZnVuY3Rpb24tdG9TdHJpbmctcGFyZW50aGVzZXMuanMKaW5kZXggODFjZTEz
ZjE2YmNkYWEwN2E0NGRkYTQyM2VmM2U5OWMzZDFiOWMwNy4uYjBmZDMyMjYyNTMxODgzZDgwMTdh
YWI1ODM2ZmY4MTM5NDg0NjI1NCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvanMvc2NyaXB0LXRl
c3RzL2Z1bmN0aW9uLXRvU3RyaW5nLXBhcmVudGhlc2VzLmpzCisrKyBiL0xheW91dFRlc3RzL2pz
L3NjcmlwdC10ZXN0cy9mdW5jdGlvbi10b1N0cmluZy1wYXJlbnRoZXNlcy5qcwpAQCAtNDcsMTAg
KzQ3LDEzIEBAIGZ1bmN0aW9uIHRlc3RMZWZ0QXNzb2NpYXRpdmVTYW1lKG9wQSwgb3BCKQogICAg
IHRlc3RLZWVwUGFyZW50aGVzZXMoImEgIiArIG9wQSArICIgKGIgIiArIG9wQiArICIgYykiKTsK
IH0KIAotZnVuY3Rpb24gdGVzdFJpZ2h0QXNzb2NpYXRpdmVTYW1lKG9wQSwgb3BCKQorZnVuY3Rp
b24gdGVzdFJpZ2h0QXNzb2NpYXRpdmVTYW1lKG9wQSwgb3BCLCBsZWZ0UGFyZW5zVGhyb3dzID0g
ZmFsc2UpCiB7CiAgICAgdGVzdEtlZXBQYXJlbnRoZXNlcygiYSAiICsgb3BBICsgIiBiICIgKyBv
cEIgKyAiIGMiKTsKLSAgICB0ZXN0S2VlcFBhcmVudGhlc2VzKCIoYSAiICsgb3BBICsgIiBiKSAi
ICsgb3BCICsgIiBjIik7CisgICAgaWYgKGxlZnRQYXJlbnNUaHJvd3MpCisgICAgICAgIHNob3Vs
ZFRocm93KGBjb21waWxlQW5kU2VyaWFsaXplKCIoYSAke29wQX0gYikgJHtvcEJ9IGMiKWApOwor
ICAgIGVsc2UKKyAgICAgICAgdGVzdEtlZXBQYXJlbnRoZXNlcygiKGEgIiArIG9wQSArICIgYikg
IiArIG9wQiArICIgYyIpOwogICAgIHRlc3RPcHRpb25hbFBhcmVudGhlc2VzKCJhICIgKyBvcEEg
KyAiIChiICIgKyBvcEIgKyAiIGMpIik7CiB9CiAKQEAgLTk5LDkgKzEwMiw5IEBAIHZhciBhc3Np
Z25tZW50T3BlcmF0b3JzID0gWyAiPSIsICIqPSIsICIvPSIgLCAiJT0iLCAiKz0iLCAiLT0iLCAi
PDw9IiwgIj4+PSIsICI+CiAKIGZvciAoaSA9IDA7IGkgPCBhc3NpZ25tZW50T3BlcmF0b3JzLmxl
bmd0aDsgKytpKSB7CiAgICAgdmFyIG9wID0gYXNzaWdubWVudE9wZXJhdG9yc1tpXTsKLSAgICB0
ZXN0UmlnaHRBc3NvY2lhdGl2ZVNhbWUob3AsIG9wKTsKKyAgICB0ZXN0UmlnaHRBc3NvY2lhdGl2
ZVNhbWUob3AsIG9wLCB0cnVlKTsKICAgICBpZiAoaSAhPSAwKQotICAgICAgICB0ZXN0UmlnaHRB
c3NvY2lhdGl2ZVNhbWUoIj0iLCBvcCk7CisgICAgICAgIHRlc3RSaWdodEFzc29jaWF0aXZlU2Ft
ZSgiPSIsIG9wLCB0cnVlKTsKICAgICB0ZXN0TG93ZXJGaXJzdChvcCwgIisiKTsKICAgICBzaG91
bGRUaHJvdygiY29tcGlsZUFuZFNlcmlhbGl6ZSgnYSArIGIgIiArIG9wICsgIiBjJykiKTsKICAg
ICBzaG91bGRUaHJvdygiY29tcGlsZUFuZFNlcmlhbGl6ZSgnKGEgKyBiKSAiICsgb3AgKyAiIGMn
KSIpOwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9DaGFuZ2VMb2cgYi9KU1Rlc3RzL0NoYW5nZUxvZwpp
bmRleCA0YzZlMDJiNTU2OWY3OTU0YmI1ZTcxYTkxODc4ZjA5ODI2YjZkNjNjLi5kM2JlYzY0MGZm
ODlmMWU3MzE2OGU2MjNkNzAyNmIxNGMwMDI5ZjhlIDEwMDY0NAotLS0gYS9KU1Rlc3RzL0NoYW5n
ZUxvZworKysgYi9KU1Rlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDIwLTAxLTI5
ICBLZWl0aCBNaWxsZXIgIDxrZWl0aF9taWxsZXJAYXBwbGUuY29tPgorCisgICAgICAgIFBhcnNl
ciBuZWVkcyB0byByZXN0b3JlIHVuYXJ5IHN0YWNrIHN0YXRlIHdoZW4gYmFja3RyYWNraW5nCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDY5NzIKKwor
ICAgICAgICBSZXZpZXdlZCBieSBTYWFtIEJhcmF0aS4KKworICAgICAgICAqIHN0cmVzcy9wYXJz
ZXItc2F2ZS1zdGF0ZS1yZW1vdmUtc3RhbGUtZW50cmllcy5qczogQWRkZWQuCisgICAgICAgICog
c3RyZXNzL3BhcnNlci1zeW50YXgtY2hlY2tlci1hc3NpZ25tZW50cy1hcmUtbm90LXJlc29sdmUt
ZXhwcmVzc2lvbnMuanM6IEFkZGVkLgorICAgICAgICAoZm9vKToKKwogMjAyMC0wMS0yNCAgTWFy
ayBMYW0gIDxtYXJrLmxhbUBhcHBsZS5jb20+CiAKICAgICAgICAgSW50bE9iamVjdCdzIGNhY2hl
ZCBzdHJpbmdzIHNob3VsZCBiZSBpbW1vcnRhbCBhbmQgc2FmZSBmb3IgY29uY3VycmVudCBhY2Nl
c3MuCmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9wYXJzZXItc2F2ZS1zdGF0ZS1yZW1vdmUt
c3RhbGUtZW50cmllcy5qcyBiL0pTVGVzdHMvc3RyZXNzL3BhcnNlci1zYXZlLXN0YXRlLXJlbW92
ZS1zdGFsZS1lbnRyaWVzLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjVlY2VmNGUwZTdkYzExYTMxMDViMzc4OGFh
NmRjYzUyMDFiMGM0ODYKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy9wYXJzZXIt
c2F2ZS1zdGF0ZS1yZW1vdmUtc3RhbGUtZW50cmllcy5qcwpAQCAtMCwwICsxLDEwIEBACisvLyBU
aGlzIHRlc3QgZW5zdXJlcyB3ZSBwcm9wZXJseSByZW1vdmUgdW5hcnkgZXhwcmVzc2lvbiBzdGFj
ayBlbnRyaWVzIHdoZW4gYmFja3RyYWNpbmcgaW4gdGhlIHBhcnNlci4KKwordHJ5IHsKKyAgICBl
dmFsKCJkZWxldGUoKGE9KysoYj1iKSkgPT4ge30pIik7Cit9IGNhdGNoIHsgfQorCit0cnkgewor
ICAgIGV2YWwoIiEoKHthPSgrKygodCk9KChlKSkpKX0pPT57fSkiKTsKK30gY2F0Y2ggeyB9CisK
ZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL3BhcnNlci1zeW50YXgtY2hlY2tlci1hc3NpZ25t
ZW50cy1hcmUtbm90LXJlc29sdmUtZXhwcmVzc2lvbnMuanMgYi9KU1Rlc3RzL3N0cmVzcy9wYXJz
ZXItc3ludGF4LWNoZWNrZXItYXNzaWdubWVudHMtYXJlLW5vdC1yZXNvbHZlLWV4cHJlc3Npb25z
LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjYxNzFlMDZiNmU1YzYyOTMyZTZiNmYzMjI0YjUzZTJlZDdkNTVlNzUK
LS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy9wYXJzZXItc3ludGF4LWNoZWNrZXIt
YXNzaWdubWVudHMtYXJlLW5vdC1yZXNvbHZlLWV4cHJlc3Npb25zLmpzCkBAIC0wLDAgKzEsNCBA
QAorLy9AIHJlcXVpcmVPcHRpb25zKCItLWV4Y2VwdGlvbj1TeW50YXhFcnJvciIpICYmIHJ1bkRl
ZmF1bHQKKyJ1c2Ugc3RyaWN0IjsKKworZnVuY3Rpb24gZm9vKCkgeyAoYj1iKSA9IGI7IH0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>389248</attachid>
            <date>2020-01-30 07:54:31 -0800</date>
            <delta_ts>2020-01-30 09:35:42 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-206972-20200130075430.patch</filename>
            <type>text/plain</type>
            <size>63295</size>
            <attacher name="Keith Miller">keith_miller</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU1NDI1CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBh
ZGU5MjAxMTcyMWUzNDAzYWE4YjU3OGU0ZGQ2MTE0ZmQ4Y2MwYTlhLi5mMmU0NWY2ZTkxYzhmOWRl
MzVjNWVkY2RhYTI0M2EyZWI0N2JmZDhmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw3NiBAQAorMjAyMC0wMS0yOSAgS2VpdGggTWlsbGVyICA8a2VpdGhfbWlsbGVyQGFwcGxl
LmNvbT4KKworICAgICAgICBQYXJzZXIgbmVlZHMgdG8gcmVzdG9yZSB1bmFyeSBzdGFjayBzdGF0
ZSB3aGVuIGJhY2t0cmFja2luZworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MjA2OTcyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgU2FhbSBCYXJhdGkuCisK
KyAgICAgICAgUHJldmlvdXNseSB3ZSB3b3VsZCB0cnkgdG8gcGFyc2UgcG9zc2libHkgc3RhbGUg
dW5hcnkgb3BlcmF0b3IKKyAgICAgICAgc3RhY2sgZW50cmllcyBhZnRlciBiYWNrdHJhY2tpbmcg
ZnJvbSBhIHBhcnNlIGVycm9yLiAgVGhpcyB3b3VsZAorICAgICAgICBjYXVzZSB1cyB0byB0aGlu
ayBvbmUgdG9rZW4gd2FzIGEgZGlmZmVyZW50IHRva2VuIHdoaWxlIHJlcGFyc2luZworICAgICAg
ICBhZnRlciBiYWNrdHJhY2tpbmcuIEFkZGl0aW9uYWxseSwgdGhpcyBwYXRjaCBmaXhlcyBhbiBp
c3N1ZSB3aGVyZQorICAgICAgICB0aGUgc3ludGF4IGNoZWNrZXIgd291bGQgdGhpbmsgYXNzaWdu
bWVudCBleHByZXNzaW9ucyB3ZXJlIHJlc29sdmUKKyAgICAgICAgZXhwcmVzc2lvbnMuIEludHJl
c3RpbmdseSwgdGhpcyB3YXMgbm90IHRlc3RlZCBpbiB0ZXN0MjYyLgorCisgICAgICAgIExhc3Rs
eSwgSSB0cmllZCBhZGRpbmcgc29tZSBhc3NlcnRpb25zIHRvIGltcHJvdmUgaGVscCBkaWFnbm9z
ZQorICAgICAgICB3aGVuIG91ciBzb3VyY2UgdGV4dCBsb2NhdGlvbnMgYXJlIGluY29ycmVjdC4K
KworICAgICAgICAqIGJ5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oOgorICAgICAgICAo
SlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdEV4cHJlc3Npb25JbmZvKToKKyAgICAgICAgKiBi
eXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcDoKKyAgICAgICAgKEpTQzo6VGhpc05vZGU6OmVt
aXRCeXRlY29kZSk6CisgICAgICAgIChKU0M6OlJlc29sdmVOb2RlOjplbWl0Qnl0ZWNvZGUpOgor
ICAgICAgICAoSlNDOjpFbXB0eVZhckV4cHJlc3Npb246OmVtaXRCeXRlY29kZSk6CisgICAgICAg
IChKU0M6OkVtcHR5TGV0RXhwcmVzc2lvbjo6ZW1pdEJ5dGVjb2RlKToKKyAgICAgICAgKEpTQzo6
Rm9ySW5Ob2RlOjplbWl0TG9vcEhlYWRlcik6CisgICAgICAgIChKU0M6OkZvck9mTm9kZTo6ZW1p
dEJ5dGVjb2RlKToKKyAgICAgICAgKEpTQzo6RGVmaW5lRmllbGROb2RlOjplbWl0Qnl0ZWNvZGUp
OgorICAgICAgICAqIHBhcnNlci9BU1RCdWlsZGVyLmg6CisgICAgICAgIChKU0M6OkFTVEJ1aWxk
ZXI6OnVuYXJ5VG9rZW5TdGFja0RlcHRoIGNvbnN0KToKKyAgICAgICAgKEpTQzo6QVNUQnVpbGRl
cjo6c2V0VW5hcnlUb2tlblN0YWNrRGVwdGgpOgorICAgICAgICAqIHBhcnNlci9MZXhlci5jcHA6
CisgICAgICAgIChKU0M6OkxleGVyPFQ+OjpMZXhlcik6CisgICAgICAgICogcGFyc2VyL0xleGVy
Lmg6CisgICAgICAgIChKU0M6OkxleGVyOjpzZXRMaW5lTnVtYmVyKToKKyAgICAgICAgKiBwYXJz
ZXIvTm9kZXMuY3BwOgorICAgICAgICAoSlNDOjpGdW5jdGlvbk1ldGFkYXRhTm9kZTo6b3BlcmF0
b3I9PSBjb25zdCk6CisgICAgICAgICogcGFyc2VyL05vZGVzLmg6CisgICAgICAgIChKU0M6OlRo
cm93YWJsZUV4cHJlc3Npb25EYXRhOjpUaHJvd2FibGVFeHByZXNzaW9uRGF0YSk6CisgICAgICAg
IChKU0M6OlRocm93YWJsZUV4cHJlc3Npb25EYXRhOjpzZXRFeGNlcHRpb25Tb3VyY2VDb2RlKToK
KyAgICAgICAgKEpTQzo6VGhyb3dhYmxlRXhwcmVzc2lvbkRhdGE6OmNoZWNrQ29uc2lzdGVuY3kg
Y29uc3QpOgorICAgICAgICAqIHBhcnNlci9QYXJzZXIuY3BwOgorICAgICAgICAoSlNDOjpQYXJz
ZXI8TGV4ZXJUeXBlPjo6aXNBcnJvd0Z1bmN0aW9uUGFyYW1ldGVycyk6CisgICAgICAgIChKU0M6
OlBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZVNvdXJjZUVsZW1lbnRzKToKKyAgICAgICAgKEpTQzo6
UGFyc2VyPExleGVyVHlwZT46OnBhcnNlTW9kdWxlU291cmNlRWxlbWVudHMpOgorICAgICAgICAo
SlNDOjpQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VTdGF0ZW1lbnRMaXN0SXRlbSk6CisgICAgICAg
IChKU0M6OlBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUFzc2lnbm1lbnRFbGVtZW50KToKKyAgICAg
ICAgKEpTQzo6UGFyc2VyPExleGVyVHlwZT46OnBhcnNlRm9yU3RhdGVtZW50KToKKyAgICAgICAg
KEpTQzo6UGFyc2VyPExleGVyVHlwZT46Om1heWJlUGFyc2VBc3luY0Z1bmN0aW9uRGVjbGFyYXRp
b25TdGF0ZW1lbnQpOgorICAgICAgICAoSlNDOjpQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VGdW5j
dGlvbkluZm8pOgorICAgICAgICAoSlNDOjpQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VDbGFzcyk6
CisgICAgICAgIChKU0M6OlBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUV4cG9ydERlY2xhcmF0aW9u
KToKKyAgICAgICAgKEpTQzo6UGFyc2VyPExleGVyVHlwZT46OnBhcnNlQXNzaWdubWVudEV4cHJl
c3Npb24pOgorICAgICAgICAoSlNDOjpQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VZaWVsZEV4cHJl
c3Npb24pOgorICAgICAgICAoSlNDOjpQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VQcm9wZXJ0eSk6
CisgICAgICAgIChKU0M6OlBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZU1lbWJlckV4cHJlc3Npb24p
OgorICAgICAgICAoSlNDOjpQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VVbmFyeUV4cHJlc3Npb24p
OgorICAgICAgICAqIHBhcnNlci9QYXJzZXIuaDoKKyAgICAgICAgKEpTQzo6UGFyc2VyOjpsZXhD
dXJyZW50VG9rZW5BZ2FpblVuZGVyQ3VycmVudENvbnRleHQpOgorICAgICAgICAoSlNDOjpQYXJz
ZXI6OmludGVybmFsU2F2ZVBhcnNlclN0YXRlKToKKyAgICAgICAgKEpTQzo6UGFyc2VyOjpyZXN0
b3JlUGFyc2VyU3RhdGUpOgorICAgICAgICAoSlNDOjpQYXJzZXI6OmludGVybmFsU2F2ZVN0YXRl
KToKKyAgICAgICAgKEpTQzo6UGFyc2VyOjpzd2FwU2F2ZVBvaW50Rm9yRXJyb3IpOgorICAgICAg
ICAoSlNDOjpQYXJzZXI6OmNyZWF0ZVNhdmVQb2ludCk6CisgICAgICAgIChKU0M6OlBhcnNlcjo6
aW50ZXJuYWxSZXN0b3JlU3RhdGUpOgorICAgICAgICAoSlNDOjpQYXJzZXI6OnJlc3RvcmVTYXZl
UG9pbnRXaXRoRXJyb3IpOgorICAgICAgICAoSlNDOjpQYXJzZXI6OnJlc3RvcmVTYXZlUG9pbnQp
OgorICAgICAgICAoSlNDOjpQYXJzZXI6OmNyZWF0ZVNhdmVQb2ludEZvckVycm9yKTogRGVsZXRl
ZC4KKyAgICAgICAgKiBwYXJzZXIvUGFyc2VyVG9rZW5zLmg6CisgICAgICAgIChKU0M6OkpTVGV4
dFBvc2l0aW9uOjpKU1RleHRQb3NpdGlvbik6CisgICAgICAgIChKU0M6OkpTVGV4dFBvc2l0aW9u
OjpjaGVja0NvbnNpc3RlbmN5KToKKyAgICAgICAgKiBwYXJzZXIvU3ludGF4Q2hlY2tlci5oOgor
ICAgICAgICAoSlNDOjpTeW50YXhDaGVja2VyOjpvcGVyYXRvclN0YWNrUG9wKToKKwogMjAyMC0w
MS0yOSAgTWFyayBMYW0gIDxtYXJrLmxhbUBhcHBsZS5jb20+CiAKICAgICAgICAgRml4IGJhZCBh
c3NlcnRpb24gaW4gSW50ZXJuYWxGdW5jdGlvbkFsbG9jYXRpb25Qcm9maWxlOjpjcmVhdGVBbGxv
Y2F0aW9uU3RydWN0dXJlRnJvbUJhc2UoKS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaAppbmRleCA0MmM2MzAyNjBlZTZl
YjhkYjYxNjMzODJmNjBmNjdjNWU4NDBmN2YwLi4xNDhhZWI2MzY1OGQyNzczNmQ3ZmJiMWZlMTg1
NjAyNzViNmNjNDk1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBp
bGVyL0J5dGVjb2RlR2VuZXJhdG9yLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oCkBAIC01OTMsNiArNTkzLDkgQEAgbmFtZXNwYWNl
IEpTQyB7CiAgICAgICAgICAgICBBU1NFUlQoZGl2b3Qub2Zmc2V0ID49IGRpdm90U3RhcnQub2Zm
c2V0KTsKICAgICAgICAgICAgIEFTU0VSVChkaXZvdEVuZC5vZmZzZXQgPj0gZGl2b3Qub2Zmc2V0
KTsKIAorICAgICAgICAgICAgaWYgKG1faXNCdWlsdGluRnVuY3Rpb24pCisgICAgICAgICAgICAg
ICAgcmV0dXJuOworCiAgICAgICAgICAgICBpbnQgc291cmNlT2Zmc2V0ID0gbV9zY29wZU5vZGUt
PnNvdXJjZSgpLnN0YXJ0T2Zmc2V0KCk7CiAgICAgICAgICAgICB1bnNpZ25lZCBmaXJzdExpbmUg
PSBtX3Njb3BlTm9kZS0+c291cmNlKCkuZmlyc3RMaW5lKCkub25lQmFzZWRJbnQoKTsKIApAQCAt
NjE2LDggKzYxOSw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAgdW5zaWduZWQgY29s
dW1uID0gZGl2b3RPZmZzZXQgLSBsaW5lU3RhcnQ7CiAKICAgICAgICAgICAgIHVuc2lnbmVkIGlu
c3RydWN0aW9uT2Zmc2V0ID0gaW5zdHJ1Y3Rpb25zKCkuc2l6ZSgpOwotICAgICAgICAgICAgaWYg
KCFtX2lzQnVpbHRpbkZ1bmN0aW9uKQotICAgICAgICAgICAgICAgIG1fY29kZUJsb2NrLT5hZGRF
eHByZXNzaW9uSW5mbyhpbnN0cnVjdGlvbk9mZnNldCwgZGl2b3RPZmZzZXQsIHN0YXJ0T2Zmc2V0
LCBlbmRPZmZzZXQsIGxpbmUsIGNvbHVtbik7CisgICAgICAgICAgICBtX2NvZGVCbG9jay0+YWRk
RXhwcmVzc2lvbkluZm8oaW5zdHJ1Y3Rpb25PZmZzZXQsIGRpdm90T2Zmc2V0LCBzdGFydE9mZnNl
dCwgZW5kT2Zmc2V0LCBsaW5lLCBjb2x1bW4pOwogICAgICAgICB9CiAKIApkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwCmluZGV4IGFi
OTZkOTUwNjNlNzc0ZDU3ZmQ4NGUzNTIzMmEwNmU1OTBjNzJkNGEuLmQzODNhN2M3MTdlNWQ1Y2Mx
MzllOTQ0OGJjNzg2OGVkNzVhODA2NjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAKQEAgLTE3NCw4ICsxNzQsOCBAQCBSZWdp
c3RlcklEKiBUaGlzTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0
b3IsIFJlZ2lzdGVySUQqIGRzdAogICAgICAgICByZXR1cm4gMDsKIAogICAgIFJlZ2lzdGVySUQq
IHJlc3VsdCA9IGdlbmVyYXRvci5tb3ZlKGRzdCwgZ2VuZXJhdG9yLnRoaXNSZWdpc3RlcigpKTsK
LSAgICBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIHRoaXNMZW5ndGggPSA0OwotICAgIGdlbmVy
YXRvci5lbWl0UHJvZmlsZVR5cGUoZ2VuZXJhdG9yLnRoaXNSZWdpc3RlcigpLCBwb3NpdGlvbigp
LCBKU1RleHRQb3NpdGlvbigtMSwgcG9zaXRpb24oKS5vZmZzZXQgKyB0aGlzTGVuZ3RoLCAtMSkp
OworICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCB0aGlzTGVuZ3RoID0gc3RybGVuKCJ0aGlzIik7
CisgICAgZ2VuZXJhdG9yLmVtaXRQcm9maWxlVHlwZShnZW5lcmF0b3IudGhpc1JlZ2lzdGVyKCks
IHBvc2l0aW9uKCksIHBvc2l0aW9uKCkgKyB0aGlzTGVuZ3RoKTsKICAgICByZXR1cm4gcmVzdWx0
OwogfQogCkBAIC0yNTgsNyArMjU4LDcgQEAgUmVnaXN0ZXJJRCogUmVzb2x2ZU5vZGU6OmVtaXRC
eXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKgogICAgICAg
ICBpZiAoZHN0ID09IGdlbmVyYXRvci5pZ25vcmVkUmVzdWx0KCkpCiAgICAgICAgICAgICByZXR1
cm4gbnVsbHB0cjsKIAotICAgICAgICBnZW5lcmF0b3IuZW1pdFByb2ZpbGVUeXBlKGxvY2FsLCB2
YXIsIG1fcG9zaXRpb24sIEpTVGV4dFBvc2l0aW9uKC0xLCBtX3Bvc2l0aW9uLm9mZnNldCArIG1f
aWRlbnQubGVuZ3RoKCksIC0xKSk7CisgICAgICAgIGdlbmVyYXRvci5lbWl0UHJvZmlsZVR5cGUo
bG9jYWwsIHZhciwgbV9wb3NpdGlvbiwgbV9wb3NpdGlvbiArIG1faWRlbnQubGVuZ3RoKCkpOwog
ICAgICAgICByZXR1cm4gZ2VuZXJhdG9yLm1vdmUoZHN0LCBsb2NhbCk7CiAgICAgfQogICAgIApA
QCAtMjcwLDcgKzI3MCw3IEBAIFJlZ2lzdGVySUQqIFJlc29sdmVOb2RlOjplbWl0Qnl0ZWNvZGUo
Qnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCoKICAgICBnZW5lcmF0b3Iu
ZW1pdEdldEZyb21TY29wZSh1bmNoZWNrZWRSZXN1bHQuZ2V0KCksIHNjb3BlLmdldCgpLCB2YXIs
IFRocm93SWZOb3RGb3VuZCk7CiAgICAgZ2VuZXJhdG9yLmVtaXRURFpDaGVja0lmTmVjZXNzYXJ5
KHZhciwgdW5jaGVja2VkUmVzdWx0LmdldCgpLCBudWxscHRyKTsKICAgICBnZW5lcmF0b3IubW92
ZShmaW5hbERlc3QsIHVuY2hlY2tlZFJlc3VsdC5nZXQoKSk7Ci0gICAgZ2VuZXJhdG9yLmVtaXRQ
cm9maWxlVHlwZShmaW5hbERlc3QsIHZhciwgbV9wb3NpdGlvbiwgSlNUZXh0UG9zaXRpb24oLTEs
IG1fcG9zaXRpb24ub2Zmc2V0ICsgbV9pZGVudC5sZW5ndGgoKSwgLTEpKTsKKyAgICBnZW5lcmF0
b3IuZW1pdFByb2ZpbGVUeXBlKGZpbmFsRGVzdCwgdmFyLCBtX3Bvc2l0aW9uLCBtX3Bvc2l0aW9u
ICsgbV9pZGVudC5sZW5ndGgoKSk7CiAgICAgcmV0dXJuIGZpbmFsRGVzdDsKIH0KIApAQCAtMzA4
OCwxMSArMzA4OCwxMSBAQCBSZWdpc3RlcklEKiBFbXB0eVZhckV4cHJlc3Npb246OmVtaXRCeXRl
Y29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpcwogCiAgICAgVmFyaWFibGUg
dmFyID0gZ2VuZXJhdG9yLnZhcmlhYmxlKG1faWRlbnQpOwogICAgIGlmIChSZWdpc3RlcklEKiBs
b2NhbCA9IHZhci5sb2NhbCgpKQotICAgICAgICBnZW5lcmF0b3IuZW1pdFByb2ZpbGVUeXBlKGxv
Y2FsLCB2YXIsIHBvc2l0aW9uKCksIEpTVGV4dFBvc2l0aW9uKC0xLCBwb3NpdGlvbigpLm9mZnNl
dCArIG1faWRlbnQubGVuZ3RoKCksIC0xKSk7CisgICAgICAgIGdlbmVyYXRvci5lbWl0UHJvZmls
ZVR5cGUobG9jYWwsIHZhciwgcG9zaXRpb24oKSwgcG9zaXRpb24oKSArIG1faWRlbnQubGVuZ3Ro
KCkpOwogICAgIGVsc2UgewogICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gc2NvcGUgPSBnZW5l
cmF0b3IuZW1pdFJlc29sdmVTY29wZShudWxscHRyLCB2YXIpOwogICAgICAgICBSZWZQdHI8UmVn
aXN0ZXJJRD4gdmFsdWUgPSBnZW5lcmF0b3IuZW1pdEdldEZyb21TY29wZShnZW5lcmF0b3IubmV3
VGVtcG9yYXJ5KCksIHNjb3BlLmdldCgpLCB2YXIsIERvTm90VGhyb3dJZk5vdEZvdW5kKTsKLSAg
ICAgICAgZ2VuZXJhdG9yLmVtaXRQcm9maWxlVHlwZSh2YWx1ZS5nZXQoKSwgdmFyLCBwb3NpdGlv
bigpLCBKU1RleHRQb3NpdGlvbigtMSwgcG9zaXRpb24oKS5vZmZzZXQgKyBtX2lkZW50Lmxlbmd0
aCgpLCAtMSkpOworICAgICAgICBnZW5lcmF0b3IuZW1pdFByb2ZpbGVUeXBlKHZhbHVlLmdldCgp
LCB2YXIsIHBvc2l0aW9uKCksIHBvc2l0aW9uKCkgKyBtX2lkZW50Lmxlbmd0aCgpKTsKICAgICB9
CiAKICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTMxMDcsMTIgKzMxMDcsMTIgQEAgUmVnaXN0ZXJJ
RCogRW1wdHlMZXRFeHByZXNzaW9uOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdl
bmVyYXRvciwgUmVnaXMKICAgICBWYXJpYWJsZSB2YXIgPSBnZW5lcmF0b3IudmFyaWFibGUobV9p
ZGVudCk7CiAgICAgaWYgKFJlZ2lzdGVySUQqIGxvY2FsID0gdmFyLmxvY2FsKCkpIHsKICAgICAg
ICAgZ2VuZXJhdG9yLmVtaXRMb2FkKGxvY2FsLCBqc1VuZGVmaW5lZCgpKTsKLSAgICAgICAgZ2Vu
ZXJhdG9yLmVtaXRQcm9maWxlVHlwZShsb2NhbCwgdmFyLCBwb3NpdGlvbigpLCBKU1RleHRQb3Np
dGlvbigtMSwgcG9zaXRpb24oKS5vZmZzZXQgKyBtX2lkZW50Lmxlbmd0aCgpLCAtMSkpOworICAg
ICAgICBnZW5lcmF0b3IuZW1pdFByb2ZpbGVUeXBlKGxvY2FsLCB2YXIsIHBvc2l0aW9uKCksIHBv
c2l0aW9uKCkgKyBtX2lkZW50Lmxlbmd0aCgpKTsKICAgICB9IGVsc2UgewogICAgICAgICBSZWZQ
dHI8UmVnaXN0ZXJJRD4gc2NvcGUgPSBnZW5lcmF0b3IuZW1pdFJlc29sdmVTY29wZShudWxscHRy
LCB2YXIpOwogICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gdmFsdWUgPSBnZW5lcmF0b3IuZW1p
dExvYWQobnVsbHB0ciwganNVbmRlZmluZWQoKSk7CiAgICAgICAgIGdlbmVyYXRvci5lbWl0UHV0
VG9TY29wZShzY29wZS5nZXQoKSwgdmFyLCB2YWx1ZS5nZXQoKSwgZ2VuZXJhdG9yLmlzU3RyaWN0
TW9kZSgpID8gVGhyb3dJZk5vdEZvdW5kIDogRG9Ob3RUaHJvd0lmTm90Rm91bmQsIEluaXRpYWxp
emF0aW9uTW9kZTo6SW5pdGlhbGl6YXRpb24pOwotICAgICAgICBnZW5lcmF0b3IuZW1pdFByb2Zp
bGVUeXBlKHZhbHVlLmdldCgpLCB2YXIsIHBvc2l0aW9uKCksIEpTVGV4dFBvc2l0aW9uKC0xLCBw
b3NpdGlvbigpLm9mZnNldCArIG1faWRlbnQubGVuZ3RoKCksIC0xKSk7IAorICAgICAgICBnZW5l
cmF0b3IuZW1pdFByb2ZpbGVUeXBlKHZhbHVlLmdldCgpLCB2YXIsIHBvc2l0aW9uKCksIHBvc2l0
aW9uKCkgKyBtX2lkZW50Lmxlbmd0aCgpKTsgCiAgICAgfQogCiAgICAgZ2VuZXJhdG9yLmxpZnRU
RFpDaGVja0lmUG9zc2libGUodmFyKTsKQEAgLTMzMjksNyArMzMyOSw3IEBAIHZvaWQgRm9ySW5O
b2RlOjplbWl0TG9vcEhlYWRlcihCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3Rl
cklEKiBwcm9wZXJ0CiAgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdEV4cHJlc3Npb25JbmZvKGRp
dm90KCksIGRpdm90U3RhcnQoKSwgZGl2b3RFbmQoKSk7CiAgICAgICAgICAgICBnZW5lcmF0b3Iu
ZW1pdFB1dFRvU2NvcGUoc2NvcGUuZ2V0KCksIHZhciwgcHJvcGVydHlOYW1lLCBnZW5lcmF0b3Iu
aXNTdHJpY3RNb2RlKCkgPyBUaHJvd0lmTm90Rm91bmQgOiBEb05vdFRocm93SWZOb3RGb3VuZCwg
SW5pdGlhbGl6YXRpb25Nb2RlOjpOb3RJbml0aWFsaXphdGlvbik7CiAgICAgICAgIH0KLSAgICAg
ICAgZ2VuZXJhdG9yLmVtaXRQcm9maWxlVHlwZShwcm9wZXJ0eU5hbWUsIHZhciwgbV9sZXhwci0+
cG9zaXRpb24oKSwgSlNUZXh0UG9zaXRpb24oLTEsIG1fbGV4cHItPnBvc2l0aW9uKCkub2Zmc2V0
ICsgaWRlbnQubGVuZ3RoKCksIC0xKSk7CisgICAgICAgIGdlbmVyYXRvci5lbWl0UHJvZmlsZVR5
cGUocHJvcGVydHlOYW1lLCB2YXIsIG1fbGV4cHItPnBvc2l0aW9uKCksIG1fbGV4cHItPnBvc2l0
aW9uKCkgKyBpZGVudC5sZW5ndGgoKSk7CiAgICAgfTsKIAogICAgIGlmIChtX2xleHByLT5pc1Jl
c29sdmVOb2RlKCkpIHsKQEAgLTM1ODYsNyArMzU4Niw3IEBAIHZvaWQgRm9yT2ZOb2RlOjplbWl0
Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogZHN0KQog
ICAgICAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0RXhwcmVzc2lvbkluZm8oZGl2b3QoKSwgZGl2
b3RTdGFydCgpLCBkaXZvdEVuZCgpKTsKICAgICAgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdFB1
dFRvU2NvcGUoc2NvcGUuZ2V0KCksIHZhciwgdmFsdWUsIGdlbmVyYXRvci5pc1N0cmljdE1vZGUo
KSA/IFRocm93SWZOb3RGb3VuZCA6IERvTm90VGhyb3dJZk5vdEZvdW5kLCBJbml0aWFsaXphdGlv
bk1vZGU6Ok5vdEluaXRpYWxpemF0aW9uKTsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGdl
bmVyYXRvci5lbWl0UHJvZmlsZVR5cGUodmFsdWUsIHZhciwgbV9sZXhwci0+cG9zaXRpb24oKSwg
SlNUZXh0UG9zaXRpb24oLTEsIG1fbGV4cHItPnBvc2l0aW9uKCkub2Zmc2V0ICsgaWRlbnQubGVu
Z3RoKCksIC0xKSk7CisgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdFByb2ZpbGVUeXBlKHZhbHVl
LCB2YXIsIG1fbGV4cHItPnBvc2l0aW9uKCksIG1fbGV4cHItPnBvc2l0aW9uKCkgKyBpZGVudC5s
ZW5ndGgoKSk7CiAgICAgICAgIH0gZWxzZSBpZiAobV9sZXhwci0+aXNEb3RBY2Nlc3Nvck5vZGUo
KSkgewogICAgICAgICAgICAgRG90QWNjZXNzb3JOb2RlKiBhc3NpZ25Ob2RlID0gc3RhdGljX2Nh
c3Q8RG90QWNjZXNzb3JOb2RlKj4obV9sZXhwcik7CiAgICAgICAgICAgICBjb25zdCBJZGVudGlm
aWVyJiBpZGVudCA9IGFzc2lnbk5vZGUtPmlkZW50aWZpZXIoKTsKQEAgLTQzNTAsNyArNDM1MCw3
IEBAIHZvaWQgRGVmaW5lRmllbGROb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3Im
IGdlbmVyYXRvciwgUmVnaXN0ZXJJRCopCiAgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiBzY29w
ZSA9IGdlbmVyYXRvci5lbWl0UmVzb2x2ZVNjb3BlKGdlbmVyYXRvci5uZXdUZW1wb3JhcnkoKSwg
dmFyKTsKICAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHByaXZhdGVOYW1lID0gZ2VuZXJhdG9y
Lm5ld1RlbXBvcmFyeSgpOwogICAgICAgICBnZW5lcmF0b3IuZW1pdEdldEZyb21TY29wZShwcml2
YXRlTmFtZS5nZXQoKSwgc2NvcGUuZ2V0KCksIHZhciwgVGhyb3dJZk5vdEZvdW5kKTsKLSAgICAg
ICAgZ2VuZXJhdG9yLmVtaXRQcm9maWxlVHlwZShwcml2YXRlTmFtZS5nZXQoKSwgdmFyLCBtX3Bv
c2l0aW9uLCBKU1RleHRQb3NpdGlvbigtMSwgbV9wb3NpdGlvbi5vZmZzZXQgKyBtX2lkZW50LT5s
ZW5ndGgoKSwgLTEpKTsKKyAgICAgICAgZ2VuZXJhdG9yLmVtaXRQcm9maWxlVHlwZShwcml2YXRl
TmFtZS5nZXQoKSwgdmFyLCBtX3Bvc2l0aW9uLCBtX3Bvc2l0aW9uICsgbV9pZGVudC0+bGVuZ3Ro
KCkpOwogICAgICAgICBnZW5lcmF0b3IuZW1pdENhbGxEZWZpbmVQcm9wZXJ0eShnZW5lcmF0b3Iu
dGhpc1JlZ2lzdGVyKCksIHByaXZhdGVOYW1lLmdldCgpLCB2YWx1ZS5nZXQoKSwgbnVsbHB0ciwg
bnVsbHB0ciwgQnl0ZWNvZGVHZW5lcmF0b3I6OlByb3BlcnR5Q29uZmlndXJhYmxlIHwgQnl0ZWNv
ZGVHZW5lcmF0b3I6OlByb3BlcnR5V3JpdGFibGUgfCBCeXRlY29kZUdlbmVyYXRvcjo6UHJvcGVy
dHlFbnVtZXJhYmxlLCBtX3Bvc2l0aW9uKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9BU1RCdWlsZGVyLmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcGFyc2VyL0FTVEJ1aWxkZXIuaAppbmRleCBkYmQ1M2FlNzYwODRmMmRh
OWI3NWU3NGY2MWY4YTcwNGM3OGQzOTYwLi40YzYxNzMwZWRlYzhhZGViZTk1ZDY5ZmFhNzA1ZWMx
YzIwYmY1ZTk4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL0FTVEJ1
aWxkZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL0FTVEJ1aWxkZXIuaApA
QCAtOTI2LDYgKzkyNiwxNiBAQCBwdWJsaWM6CiAgICAgICAgIHRva2VuU3RhY2tEZXB0aC0tOwog
ICAgICAgICBtX3VuYXJ5VG9rZW5TdGFjay5yZW1vdmVMYXN0KCk7CiAgICAgfQorCisgICAgaW50
IHVuYXJ5VG9rZW5TdGFja0RlcHRoKCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBtX3Vu
YXJ5VG9rZW5TdGFjay5zaXplKCk7CisgICAgfQorCisgICAgdm9pZCBzZXRVbmFyeVRva2VuU3Rh
Y2tEZXB0aChpbnQgb2xkRGVwdGgpCisgICAgeworICAgICAgICBtX3VuYXJ5VG9rZW5TdGFjay5z
aHJpbmsob2xkRGVwdGgpOworICAgIH0KICAgICAKICAgICB2b2lkIGFzc2lnbm1lbnRTdGFja0Fw
cGVuZChpbnQmIGFzc2lnbm1lbnRTdGFja0RlcHRoLCBFeHByZXNzaW9uTm9kZSogbm9kZSwgY29u
c3QgSlNUZXh0UG9zaXRpb24mIHN0YXJ0LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3QsIGlu
dCBhc3NpZ25tZW50Q291bnQsIE9wZXJhdG9yIG9wKQogICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTGV4ZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3BhcnNlci9MZXhlci5jcHAKaW5kZXggYzM0MWY0OTI3ODI1NGUyNzc3ZDBiMmNkNzNiZDU1YzJk
MjNhYTdlMS4uOTdjYWJlMWMyNGNjYTYxNDI3NzZiY2I2MTBjODI0MDY2OGMxOWRmYSAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9MZXhlci5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3BhcnNlci9MZXhlci5jcHAKQEAgLTQ5NCw3ICs0OTQsOCBAQCBzdGF0
aWMgY29uc3RleHByIGNvbnN0IExDaGFyIHNpbmdsZUNoYXJhY3RlckVzY2FwZVZhbHVlc0ZvckFT
Q0lJWzEyOF0gPSB7CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgogTGV4ZXI8VD46OkxleGVyKFZN
JiB2bSwgSlNQYXJzZXJCdWlsdGluTW9kZSBidWlsdGluTW9kZSwgSlNQYXJzZXJTY3JpcHRNb2Rl
IHNjcmlwdE1vZGUpCi0gICAgOiBtX2lzUmVwYXJzaW5nRnVuY3Rpb24oZmFsc2UpCisgICAgOiBt
X3Bvc2l0aW9uQmVmb3JlTGFzdE5ld2xpbmUoMCwwLDApCisgICAgLCBtX2lzUmVwYXJzaW5nRnVu
Y3Rpb24oZmFsc2UpCiAgICAgLCBtX3ZtKHZtKQogICAgICwgbV9wYXJzaW5nQnVpbHRpbkZ1bmN0
aW9uKGJ1aWx0aW5Nb2RlID09IEpTUGFyc2VyQnVpbHRpbk1vZGU6OkJ1aWx0aW4pCiAgICAgLCBt
X3NjcmlwdE1vZGUoc2NyaXB0TW9kZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9wYXJzZXIvTGV4ZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTGV4ZXIuaApp
bmRleCBmZDgyNTgwM2M4MTIwNjUyYzc2NDc2ZTk4ZDI2NTY4YzBjZjcyYmIzLi5lZmZjYTRhODE1
NmY3ZGEzMDZmNzIyNjY4NzI1YjU2MzI0NDBkZjQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcGFyc2VyL0xleGVyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNl
ci9MZXhlci5oCkBAIC0xMDksNiArMTA5LDcgQEAgcHVibGljOgogICAgIH0KICAgICB2b2lkIHNl
dExpbmVOdW1iZXIoaW50IGxpbmUpCiAgICAgeworICAgICAgICBBU1NFUlQobGluZSA+PSAwKTsK
ICAgICAgICAgbV9saW5lTnVtYmVyID0gbGluZTsKICAgICB9CiAgICAgdm9pZCBzZXRIYXNMaW5l
VGVybWluYXRvckJlZm9yZVRva2VuKGJvb2wgdGVybWluYXRvcikKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3BhcnNlci9Ob2Rlcy5jcHAKaW5kZXggZGQ4ZWRiNjg3OTExYmZmMjIxMDJiYzQ5YmQ1Y2U1NTMx
ZGE5ZjA4ZS4uOWQxY2ZhNGYxNzYxMzAyYTMzYmJhZTMxZWY2MGZkZmNhZjIwN2RmNSAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rlcy5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rlcy5jcHAKQEAgLTI1NCwyNCArMjU0LDI0IEBAIHZv
aWQgRnVuY3Rpb25NZXRhZGF0YU5vZGU6OnNldEVuZFBvc2l0aW9uKEpTVGV4dFBvc2l0aW9uIHBv
c2l0aW9uKQogCiBib29sIEZ1bmN0aW9uTWV0YWRhdGFOb2RlOjpvcGVyYXRvcj09KGNvbnN0IEZ1
bmN0aW9uTWV0YWRhdGFOb2RlJiBvdGhlcikgY29uc3QKIHsKLSAgICByZXR1cm4gbV9wYXJzZU1v
ZGU9PSBvdGhlci5tX3BhcnNlTW9kZQorICAgIHJldHVybiBtX3BhcnNlTW9kZSA9PSBvdGhlci5t
X3BhcnNlTW9kZQogICAgICAgICAmJiBtX2lzSW5TdHJpY3RDb250ZXh0ID09IG90aGVyLm1faXNJ
blN0cmljdENvbnRleHQKICAgICAgICAgJiYgbV9zdXBlckJpbmRpbmcgPT0gb3RoZXIubV9zdXBl
ckJpbmRpbmcKICAgICAgICAgJiYgbV9jb25zdHJ1Y3RvcktpbmQgPT0gb3RoZXIubV9jb25zdHJ1
Y3RvcktpbmQKICAgICAgICAgJiYgbV9pc0Fycm93RnVuY3Rpb25Cb2R5RXhwcmVzc2lvbiA9PSBv
dGhlci5tX2lzQXJyb3dGdW5jdGlvbkJvZHlFeHByZXNzaW9uCiAgICAgICAgICYmIG1faWRlbnQg
PT0gb3RoZXIubV9pZGVudAogICAgICAgICAmJiBtX2VjbWFOYW1lID09IG90aGVyLm1fZWNtYU5h
bWUKLSAgICAgICAgJiYgbV9mdW5jdGlvbk1vZGU9PSBvdGhlci5tX2Z1bmN0aW9uTW9kZQotICAg
ICAgICAmJiBtX3N0YXJ0Q29sdW1uPT0gb3RoZXIubV9zdGFydENvbHVtbgotICAgICAgICAmJiBt
X2VuZENvbHVtbj09IG90aGVyLm1fZW5kQ29sdW1uCi0gICAgICAgICYmIG1fZnVuY3Rpb25LZXl3
b3JkU3RhcnQ9PSBvdGhlci5tX2Z1bmN0aW9uS2V5d29yZFN0YXJ0Ci0gICAgICAgICYmIG1fZnVu
Y3Rpb25OYW1lU3RhcnQ9PSBvdGhlci5tX2Z1bmN0aW9uTmFtZVN0YXJ0Ci0gICAgICAgICYmIG1f
cGFyYW1ldGVyc1N0YXJ0PT0gb3RoZXIubV9wYXJhbWV0ZXJzU3RhcnQKLSAgICAgICAgJiYgbV9z
b3VyY2U9PSBvdGhlci5tX3NvdXJjZQotICAgICAgICAmJiBtX2NsYXNzU291cmNlPT0gb3RoZXIu
bV9jbGFzc1NvdXJjZQotICAgICAgICAmJiBtX3N0YXJ0U3RhcnRPZmZzZXQ9PSBvdGhlci5tX3N0
YXJ0U3RhcnRPZmZzZXQKLSAgICAgICAgJiYgbV9wYXJhbWV0ZXJDb3VudD09IG90aGVyLm1fcGFy
YW1ldGVyQ291bnQKLSAgICAgICAgJiYgbV9sYXN0TGluZT09IG90aGVyLm1fbGFzdExpbmUKKyAg
ICAgICAgJiYgbV9mdW5jdGlvbk1vZGUgPT0gb3RoZXIubV9mdW5jdGlvbk1vZGUKKyAgICAgICAg
JiYgbV9zdGFydENvbHVtbiA9PSBvdGhlci5tX3N0YXJ0Q29sdW1uCisgICAgICAgICYmIG1fZW5k
Q29sdW1uID09IG90aGVyLm1fZW5kQ29sdW1uCisgICAgICAgICYmIG1fZnVuY3Rpb25LZXl3b3Jk
U3RhcnQgPT0gb3RoZXIubV9mdW5jdGlvbktleXdvcmRTdGFydAorICAgICAgICAmJiBtX2Z1bmN0
aW9uTmFtZVN0YXJ0ID09IG90aGVyLm1fZnVuY3Rpb25OYW1lU3RhcnQKKyAgICAgICAgJiYgbV9w
YXJhbWV0ZXJzU3RhcnQgPT0gb3RoZXIubV9wYXJhbWV0ZXJzU3RhcnQKKyAgICAgICAgJiYgbV9z
b3VyY2UgPT0gb3RoZXIubV9zb3VyY2UKKyAgICAgICAgJiYgbV9jbGFzc1NvdXJjZSA9PSBvdGhl
ci5tX2NsYXNzU291cmNlCisgICAgICAgICYmIG1fc3RhcnRTdGFydE9mZnNldCA9PSBvdGhlci5t
X3N0YXJ0U3RhcnRPZmZzZXQKKyAgICAgICAgJiYgbV9wYXJhbWV0ZXJDb3VudCA9PSBvdGhlci5t
X3BhcmFtZXRlckNvdW50CisgICAgICAgICYmIG1fbGFzdExpbmUgPT0gb3RoZXIubV9sYXN0TGlu
ZQogICAgICAgICAmJiBtX3Bvc2l0aW9uID09IG90aGVyLm1fcG9zaXRpb247CiB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMuaAppbmRleCAyYTgzNjQ2NzZlNjcxYzZmNzkzNGE5OGRk
M2ZjYTliMDkwMTViYTVkLi40OWFhYzQ3MzU4MDcwZTNmMzhiNzhjMjEyZjAyMzI5MTM1YTk2ZmJh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVzLmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rlcy5oCkBAIC0zNzIsMzcgKzM3MiwzNiBA
QCBuYW1lc3BhY2UgSlNDIHsKIAogICAgIGNsYXNzIFRocm93YWJsZUV4cHJlc3Npb25EYXRhIHsK
ICAgICBwdWJsaWM6Ci0gICAgICAgIFRocm93YWJsZUV4cHJlc3Npb25EYXRhKCkKLSAgICAgICAg
ICAgIDogbV9kaXZvdCgtMSwgLTEsIC0xKQotICAgICAgICAgICAgLCBtX2Rpdm90U3RhcnQoLTEs
IC0xLCAtMSkKLSAgICAgICAgICAgICwgbV9kaXZvdEVuZCgtMSwgLTEsIC0xKQotICAgICAgICB7
Ci0gICAgICAgIH0KKyAgICAgICAgVGhyb3dhYmxlRXhwcmVzc2lvbkRhdGEoKSA9IGRlZmF1bHQ7
CiAgICAgICAgIAogICAgICAgICBUaHJvd2FibGVFeHByZXNzaW9uRGF0YShjb25zdCBKU1RleHRQ
b3NpdGlvbiYgZGl2b3QsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBzdGFydCwgY29uc3QgSlNUZXh0
UG9zaXRpb24mIGVuZCkKICAgICAgICAgICAgIDogbV9kaXZvdChkaXZvdCkKICAgICAgICAgICAg
ICwgbV9kaXZvdFN0YXJ0KHN0YXJ0KQogICAgICAgICAgICAgLCBtX2Rpdm90RW5kKGVuZCkKICAg
ICAgICAgewotICAgICAgICAgICAgQVNTRVJUKG1fZGl2b3Qub2Zmc2V0ID49IG1fZGl2b3QubGlu
ZVN0YXJ0T2Zmc2V0KTsKLSAgICAgICAgICAgIEFTU0VSVChtX2Rpdm90U3RhcnQub2Zmc2V0ID49
IG1fZGl2b3RTdGFydC5saW5lU3RhcnRPZmZzZXQpOwotICAgICAgICAgICAgQVNTRVJUKG1fZGl2
b3RFbmQub2Zmc2V0ID49IG1fZGl2b3RFbmQubGluZVN0YXJ0T2Zmc2V0KTsKKyAgICAgICAgICAg
IGNoZWNrQ29uc2lzdGVuY3koKTsKICAgICAgICAgfQogCiAgICAgICAgIHZvaWQgc2V0RXhjZXB0
aW9uU291cmNlQ29kZShjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3QsIGNvbnN0IEpTVGV4dFBv
c2l0aW9uJiBkaXZvdFN0YXJ0LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3RFbmQpCiAgICAg
ICAgIHsKLSAgICAgICAgICAgIEFTU0VSVChkaXZvdC5vZmZzZXQgPj0gZGl2b3QubGluZVN0YXJ0
T2Zmc2V0KTsKLSAgICAgICAgICAgIEFTU0VSVChkaXZvdFN0YXJ0Lm9mZnNldCA+PSBkaXZvdFN0
YXJ0LmxpbmVTdGFydE9mZnNldCk7Ci0gICAgICAgICAgICBBU1NFUlQoZGl2b3RFbmQub2Zmc2V0
ID49IGRpdm90RW5kLmxpbmVTdGFydE9mZnNldCk7CiAgICAgICAgICAgICBtX2Rpdm90ID0gZGl2
b3Q7CiAgICAgICAgICAgICBtX2Rpdm90U3RhcnQgPSBkaXZvdFN0YXJ0OwogICAgICAgICAgICAg
bV9kaXZvdEVuZCA9IGRpdm90RW5kOworICAgICAgICAgICAgY2hlY2tDb25zaXN0ZW5jeSgpOwog
ICAgICAgICB9CiAKICAgICAgICAgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90KCkgY29uc3Qg
eyByZXR1cm4gbV9kaXZvdDsgfQogICAgICAgICBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3RT
dGFydCgpIGNvbnN0IHsgcmV0dXJuIG1fZGl2b3RTdGFydDsgfQogICAgICAgICBjb25zdCBKU1Rl
eHRQb3NpdGlvbiYgZGl2b3RFbmQoKSBjb25zdCB7IHJldHVybiBtX2Rpdm90RW5kOyB9CiAKKyAg
ICAgICAgdm9pZCBjaGVja0NvbnNpc3RlbmN5KCkgY29uc3QKKyAgICAgICAgeworICAgICAgICAg
ICAgQVNTRVJUKG1fZGl2b3Qub2Zmc2V0ID49IG1fZGl2b3QubGluZVN0YXJ0T2Zmc2V0KTsKKyAg
ICAgICAgICAgIEFTU0VSVChtX2Rpdm90U3RhcnQub2Zmc2V0ID49IG1fZGl2b3RTdGFydC5saW5l
U3RhcnRPZmZzZXQpOworICAgICAgICAgICAgQVNTRVJUKG1fZGl2b3RFbmQub2Zmc2V0ID49IG1f
ZGl2b3RFbmQubGluZVN0YXJ0T2Zmc2V0KTsKKyAgICAgICAgICAgIEFTU0VSVChtX2Rpdm90Lm9m
ZnNldCA+PSBtX2Rpdm90U3RhcnQub2Zmc2V0KTsKKyAgICAgICAgICAgIEFTU0VSVChtX2Rpdm90
RW5kLm9mZnNldCA+PSBtX2Rpdm90Lm9mZnNldCk7CisgICAgICAgIH0KICAgICBwcm90ZWN0ZWQ6
CiAgICAgICAgIFJlZ2lzdGVySUQqIGVtaXRUaHJvd1JlZmVyZW5jZUVycm9yKEJ5dGVjb2RlR2Vu
ZXJhdG9yJiwgY29uc3QgU3RyaW5nJiBtZXNzYWdlKTsKIApAQCAtMjEzMyw3ICsyMTMyLDcgQEAg
bmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIFNvdXJjZUNvZGUgbV9jbGFzc1NvdXJjZTsKICAgICAg
ICAgaW50IG1fc3RhcnRTdGFydE9mZnNldDsKICAgICAgICAgdW5zaWduZWQgbV9wYXJhbWV0ZXJD
b3VudDsKLSAgICAgICAgaW50IG1fbGFzdExpbmU7CisgICAgICAgIGludCBtX2xhc3RMaW5lIHsg
MCB9OwogICAgIH07CiAKICAgICBjbGFzcyBGdW5jdGlvbk5vZGUgZmluYWwgOiBwdWJsaWMgU2Nv
cGVOb2RlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2Vy
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmNwcAppbmRleCBiODEx
MzJiM2VkZDZhNDg5ZGIyMjdiYzcxMTEwNDQ0NGM1OWMwNjBkLi5jMmZhNjA3ZjI3OGYyN2MzMzUx
ZWQxOTg3YjgzMWVhNjkyNDJkOTk2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cGFyc2VyL1BhcnNlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJz
ZXIuY3BwCkBAIC0yOSw2ICsyOSw3IEBACiAjaW5jbHVkZSAiSlNDSW5saW5lcy5oIgogI2luY2x1
ZGUgIlZNLmgiCiAjaW5jbHVkZSA8dXRpbGl0eT4KKyNpbmNsdWRlIDx3dGYvU2NvcGUuaD4KICNp
bmNsdWRlIDx3dGYvU2V0Rm9yU2NvcGUuaD4KICNpbmNsdWRlIDx3dGYvU3RyaW5nUHJpbnRTdHJl
YW0uaD4KIApAQCAtMzA2LDEwICszMDcsMTAgQEAgRXhwZWN0ZWQ8dHlwZW5hbWUgUGFyc2VyPExl
eGVyVHlwZT46OlBhcnNlSW5uZXJSZXN1bHQsIFN0cmluZz4gUGFyc2VyPExleGVyVHlwZT4KIH0K
IAogdGVtcGxhdGUgPHR5cGVuYW1lIExleGVyVHlwZT4KLWJvb2wgUGFyc2VyPExleGVyVHlwZT46
OmlzQXJyb3dGdW5jdGlvblBhcmFtZXRlcnMoKQordGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVy
PiBib29sIFBhcnNlcjxMZXhlclR5cGU+Ojppc0Fycm93RnVuY3Rpb25QYXJhbWV0ZXJzKFRyZWVC
dWlsZGVyJiBjb250ZXh0KQogewogICAgIGlmIChtYXRjaChPUEVOUEFSRU4pKSB7Ci0gICAgICAg
IFNhdmVQb2ludCBzYXZlQXJyb3dGdW5jdGlvblBvaW50ID0gY3JlYXRlU2F2ZVBvaW50KCk7Cisg
ICAgICAgIFNhdmVQb2ludCBzYXZlQXJyb3dGdW5jdGlvblBvaW50ID0gY3JlYXRlU2F2ZVBvaW50
KGNvbnRleHQpOwogICAgICAgICBuZXh0KCk7CiAgICAgICAgIGJvb2wgaXNBcnJvd0Z1bmN0aW9u
ID0gZmFsc2U7CiAgICAgICAgIGlmIChtYXRjaChDTE9TRVBBUkVOKSkgewpAQCAtMzI4LDE2ICsz
MjksMTYgQEAgYm9vbCBQYXJzZXI8TGV4ZXJUeXBlPjo6aXNBcnJvd0Z1bmN0aW9uUGFyYW1ldGVy
cygpCiAgICAgICAgICAgICBwcm9wYWdhdGVFcnJvcigpOwogICAgICAgICAgICAgcG9wU2NvcGUo
ZmFrZVNjb3BlLCBzeW50YXhDaGVja2VyLk5lZWRzRnJlZVZhcmlhYmxlSW5mbyk7CiAgICAgICAg
IH0KLSAgICAgICAgcmVzdG9yZVNhdmVQb2ludChzYXZlQXJyb3dGdW5jdGlvblBvaW50KTsKKyAg
ICAgICAgcmVzdG9yZVNhdmVQb2ludChjb250ZXh0LCBzYXZlQXJyb3dGdW5jdGlvblBvaW50KTsK
ICAgICAgICAgcmV0dXJuIGlzQXJyb3dGdW5jdGlvbjsKICAgICB9CiAKICAgICBpZiAobWF0Y2hT
cGVjSWRlbnRpZmllcigpKSB7CiAgICAgICAgIHNlbWFudGljRmFpbElmVHJ1ZSghbV9wYXJzZXJT
dGF0ZS5hbGxvd0F3YWl0ICYmIG1hdGNoKEFXQUlUKSwgIkNhbm5vdCB1c2UgJ2F3YWl0JyBhcyBh
IHBhcmFtZXRlciBuYW1lIGluIGFuIGFzeW5jIGZ1bmN0aW9uIik7Ci0gICAgICAgIFNhdmVQb2lu
dCBzYXZlQXJyb3dGdW5jdGlvblBvaW50ID0gY3JlYXRlU2F2ZVBvaW50KCk7CisgICAgICAgIFNh
dmVQb2ludCBzYXZlQXJyb3dGdW5jdGlvblBvaW50ID0gY3JlYXRlU2F2ZVBvaW50KGNvbnRleHQp
OwogICAgICAgICBuZXh0KCk7CiAgICAgICAgIGJvb2wgaXNBcnJvd0Z1bmN0aW9uID0gbWF0Y2go
QVJST1dGVU5DVElPTik7Ci0gICAgICAgIHJlc3RvcmVTYXZlUG9pbnQoc2F2ZUFycm93RnVuY3Rp
b25Qb2ludCk7CisgICAgICAgIHJlc3RvcmVTYXZlUG9pbnQoY29udGV4dCwgc2F2ZUFycm93RnVu
Y3Rpb25Qb2ludCk7CiAgICAgICAgIHJldHVybiBpc0Fycm93RnVuY3Rpb247CiAgICAgfQogCkBA
IC0zNTcsNyArMzU4LDcgQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlU291cmNl
RWxlbWVudHMgUGFyc2VyPExleGVyVHlwZT46OnBhcnNlU291cmNlRWwKICAgICBUcmVlU291cmNl
RWxlbWVudHMgc291cmNlRWxlbWVudHMgPSBjb250ZXh0LmNyZWF0ZVNvdXJjZUVsZW1lbnRzKCk7
CiAgICAgY29uc3QgSWRlbnRpZmllciogZGlyZWN0aXZlID0gMDsKICAgICB1bnNpZ25lZCBkaXJl
Y3RpdmVMaXRlcmFsTGVuZ3RoID0gMDsKLSAgICBhdXRvIHNhdmVQb2ludCA9IGNyZWF0ZVNhdmVQ
b2ludCgpOworICAgIGF1dG8gc2F2ZVBvaW50ID0gY3JlYXRlU2F2ZVBvaW50KGNvbnRleHQpOwog
ICAgIGJvb2wgc2hvdWxkQ2hlY2tGb3JVc2VTdHJpY3QgPSBtb2RlID09IENoZWNrRm9yU3RyaWN0
TW9kZTsKICAgICAKICAgICB3aGlsZSAoVHJlZVN0YXRlbWVudCBzdGF0ZW1lbnQgPSBwYXJzZVN0
YXRlbWVudExpc3RJdGVtKGNvbnRleHQsIGRpcmVjdGl2ZSwgJmRpcmVjdGl2ZUxpdGVyYWxMZW5n
dGgpKSB7CkBAIC0zODIsNyArMzgzLDcgQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBU
cmVlU291cmNlRWxlbWVudHMgUGFyc2VyPExleGVyVHlwZT46OnBhcnNlU291cmNlRWwKICAgICAg
ICAgICAgICAgICAgICAgICAgIHNlbWFudGljRmFpbElmRmFsc2UoaXNWYWxpZFN0cmljdE1vZGUo
KSwgIkludmFsaWQgcGFyYW1ldGVycyBvciBmdW5jdGlvbiBuYW1lIGluIHN0cmljdCBtb2RlIik7
CiAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgLy8gU2luY2Ugc3Ry
aWN0IG1vZGUgaXMgY2hhbmdlZCwgcmVzdG9yaW5nIGxleGVyIHN0YXRlIGJ5IGNhbGxpbmcgbmV4
dCgpIG1heSBjYXVzZSBlcnJvcnMuCi0gICAgICAgICAgICAgICAgICAgIHJlc3RvcmVTYXZlUG9p
bnQoc2F2ZVBvaW50KTsKKyAgICAgICAgICAgICAgICAgICAgcmVzdG9yZVNhdmVQb2ludChjb250
ZXh0LCBzYXZlUG9pbnQpOwogICAgICAgICAgICAgICAgICAgICBwcm9wYWdhdGVFcnJvcigpOwog
ICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgICAgICB9CkBAIC00MjAs
MTAgKzQyMSwxMCBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVTb3VyY2VFbGVt
ZW50cyBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VNb2R1bGVTbwogICAgICAgICAgICAgYnJlYWs7
CiAKICAgICAgICAgY2FzZSBJTVBPUlQ6IHsKLSAgICAgICAgICAgIFNhdmVQb2ludCBzYXZlUG9p
bnQgPSBjcmVhdGVTYXZlUG9pbnQoKTsKKyAgICAgICAgICAgIFNhdmVQb2ludCBzYXZlUG9pbnQg
PSBjcmVhdGVTYXZlUG9pbnQoY29udGV4dCk7CiAgICAgICAgICAgICBuZXh0KCk7CiAgICAgICAg
ICAgICBib29sIGlzSW1wb3J0RGVjbGFyYXRpb24gPSAhbWF0Y2goT1BFTlBBUkVOKSAmJiAhbWF0
Y2goRE9UKTsKLSAgICAgICAgICAgIHJlc3RvcmVTYXZlUG9pbnQoc2F2ZVBvaW50KTsKKyAgICAg
ICAgICAgIHJlc3RvcmVTYXZlUG9pbnQoY29udGV4dCwgc2F2ZVBvaW50KTsKICAgICAgICAgICAg
IGlmIChpc0ltcG9ydERlY2xhcmF0aW9uKSB7CiAgICAgICAgICAgICAgICAgc3RhdGVtZW50ID0g
cGFyc2VJbXBvcnREZWNsYXJhdGlvbihjb250ZXh0KTsKICAgICAgICAgICAgICAgICBpZiAoc3Rh
dGVtZW50KQpAQCAtNjY3LDcgKzY2OCw3IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4g
VHJlZVN0YXRlbWVudCBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VTdGF0ZW1lbnRMaXN0CiAgICAg
Y2FzZSBMRVQ6IHsKICAgICAgICAgYm9vbCBzaG91bGRQYXJzZVZhcmlhYmxlRGVjbGFyYXRpb24g
PSB0cnVlOwogICAgICAgICBpZiAoIXN0cmljdE1vZGUoKSkgewotICAgICAgICAgICAgU2F2ZVBv
aW50IHNhdmVQb2ludCA9IGNyZWF0ZVNhdmVQb2ludCgpOworICAgICAgICAgICAgU2F2ZVBvaW50
IHNhdmVQb2ludCA9IGNyZWF0ZVNhdmVQb2ludChjb250ZXh0KTsKICAgICAgICAgICAgIG5leHQo
KTsKICAgICAgICAgICAgIC8vIEludGVudGlvbmFsbHkgdXNlIGBpc0lkZW50aWZpZXJPckFueUNv
bnRleHR1YWxLZXl3b3JkKG1fdG9rZW4pYCBhbmQgZG9uJ3QgdXNlIGBtYXRjaFNwZWNJZGVudGlm
aWVyKClgLgogICAgICAgICAgICAgLy8gV2Ugd291bGQgbGlrZSB0byBmYWxsIGludG8gcGFyc2VW
YXJpYWJsZURlY2xhcmF0aW9uIHBhdGggZXZlbiBpZiAieWllbGQiIGlzIG5vdCB0cmVhdGVkIGFz
IGFuIElkZW50aWZpZXIuCkBAIC02NzYsNyArNjc3LDcgQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVC
dWlsZGVyPiBUcmVlU3RhdGVtZW50IFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZVN0YXRlbWVudExp
c3QKICAgICAgICAgICAgIC8vIHRvIHJhaXNlIGNvbnNpc3RlbnQgZXJyb3JzIGJldHdlZW4gInZh
ciIsICJjb25zdCIgYW5kICJsZXQiLgogICAgICAgICAgICAgaWYgKCFpc0lkZW50aWZpZXJPckFu
eUNvbnRleHR1YWxLZXl3b3JkKG1fdG9rZW4pICYmICFtYXRjaChPUEVOQlJBQ0UpICYmICFtYXRj
aChPUEVOQlJBQ0tFVCkpCiAgICAgICAgICAgICAgICAgc2hvdWxkUGFyc2VWYXJpYWJsZURlY2xh
cmF0aW9uID0gZmFsc2U7Ci0gICAgICAgICAgICByZXN0b3JlU2F2ZVBvaW50KHNhdmVQb2ludCk7
CisgICAgICAgICAgICByZXN0b3JlU2F2ZVBvaW50KGNvbnRleHQsIHNhdmVQb2ludCk7CiAgICAg
ICAgIH0KICAgICAgICAgaWYgKHNob3VsZFBhcnNlVmFyaWFibGVEZWNsYXJhdGlvbikKICAgICAg
ICAgICAgIHJlc3VsdCA9IHBhcnNlVmFyaWFibGVEZWNsYXJhdGlvbihjb250ZXh0LCBEZWNsYXJh
dGlvblR5cGU6OkxldERlY2xhcmF0aW9uKTsKQEAgLTY5NywxMyArNjk4LDEzIEBAIHRlbXBsYXRl
IDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZVN0YXRlbWVudCBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFy
c2VTdGF0ZW1lbnRMaXN0CiAgICAgICAgIGlmIChVTkxJS0VMWSgqbV90b2tlbi5tX2RhdGEuaWRl
bnQgPT0gbV92bS5wcm9wZXJ0eU5hbWVzLT5hc3luYyAmJiAhbV90b2tlbi5tX2RhdGEuZXNjYXBl
ZCkpIHsKICAgICAgICAgICAgIC8vIEVhZ2VybHkgcGFyc2UgYXMgQXN5bmNGdW5jdGlvbkRlY2xh
cmF0aW9uLiBUaGlzIGlzIHRoZSB1bmNvbW1vbiBjYXNlLAogICAgICAgICAgICAgLy8gYnV0IGNv
dWxkIGJlIG1pc3Rha2VubHkgcGFyc2VkIGFzIGFuIEFzeW5jRnVuY3Rpb25FeHByZXNzaW9uLgot
ICAgICAgICAgICAgU2F2ZVBvaW50IHNhdmVQb2ludCA9IGNyZWF0ZVNhdmVQb2ludCgpOworICAg
ICAgICAgICAgU2F2ZVBvaW50IHNhdmVQb2ludCA9IGNyZWF0ZVNhdmVQb2ludChjb250ZXh0KTsK
ICAgICAgICAgICAgIG5leHQoKTsKICAgICAgICAgICAgIGlmIChVTkxJS0VMWShtYXRjaChGVU5D
VElPTikgJiYgIW1fbGV4ZXItPmhhc0xpbmVUZXJtaW5hdG9yQmVmb3JlVG9rZW4oKSkpIHsKICAg
ICAgICAgICAgICAgICByZXN1bHQgPSBwYXJzZUFzeW5jRnVuY3Rpb25EZWNsYXJhdGlvbihjb250
ZXh0KTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAg
IHJlc3RvcmVTYXZlUG9pbnQoc2F2ZVBvaW50KTsKKyAgICAgICAgICAgIHJlc3RvcmVTYXZlUG9p
bnQoY29udGV4dCwgc2F2ZVBvaW50KTsKICAgICAgICAgfQogICAgICAgICBGQUxMVEhST1VHSDsK
ICAgICBjYXNlIEFXQUlUOgpAQCAtMTA0MiwxMSArMTA0MywxMSBAQCB0ZW1wbGF0ZSA8Y2xhc3Mg
VHJlZUJ1aWxkZXI+IFRyZWVEZXN0cnVjdHVyaW5nUGF0dGVybiBQYXJzZXI8TGV4ZXJUeXBlPjo6
cGFyc2VBcwogICAgIFRyZWVEZXN0cnVjdHVyaW5nUGF0dGVybiBhc3NpZ25tZW50VGFyZ2V0ID0g
MDsKIAogICAgIGlmIChtYXRjaChPUEVOQlJBQ0UpIHx8IG1hdGNoKE9QRU5CUkFDS0VUKSkgewot
ICAgICAgICBTYXZlUG9pbnQgc2F2ZVBvaW50ID0gY3JlYXRlU2F2ZVBvaW50KCk7CisgICAgICAg
IFNhdmVQb2ludCBzYXZlUG9pbnQgPSBjcmVhdGVTYXZlUG9pbnQoY29udGV4dCk7CiAgICAgICAg
IGFzc2lnbm1lbnRUYXJnZXQgPSBwYXJzZURlc3RydWN0dXJpbmdQYXR0ZXJuKGNvbnRleHQsIGtp
bmQsIGV4cG9ydFR5cGUsIGR1cGxpY2F0ZUlkZW50aWZpZXIsIGhhc0Rlc3RydWN0dXJpbmdQYXR0
ZXJuLCBiaW5kaW5nQ29udGV4dCwgZGVwdGgpOwogICAgICAgICBpZiAoYXNzaWdubWVudFRhcmdl
dCAmJiAhbWF0Y2goRE9UKSAmJiAhbWF0Y2goT1BFTkJSQUNLRVQpICYmICFtYXRjaChPUEVOUEFS
RU4pICYmICFtYXRjaChCQUNLUVVPVEUpKQogICAgICAgICAgICAgcmV0dXJuIGFzc2lnbm1lbnRU
YXJnZXQ7Ci0gICAgICAgIHJlc3RvcmVTYXZlUG9pbnQoc2F2ZVBvaW50KTsKKyAgICAgICAgcmVz
dG9yZVNhdmVQb2ludChjb250ZXh0LCBzYXZlUG9pbnQpOwogICAgIH0KIAogICAgIEpTVGV4dFBv
c2l0aW9uIHN0YXJ0UG9zaXRpb24gPSB0b2tlblN0YXJ0UG9zaXRpb24oKTsKQEAgLTE0MzEsMTQg
KzE0MzIsMTQgQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlU3RhdGVtZW50IFBh
cnNlcjxMZXhlclR5cGU+OjpwYXJzZUZvclN0YXRlbWVudCgKICAgICAKICAgICBpZiAoIW1hdGNo
KFNFTUlDT0xPTikpIHsKICAgICAgICAgaWYgKG1hdGNoKE9QRU5CUkFDRSkgfHwgbWF0Y2goT1BF
TkJSQUNLRVQpKSB7Ci0gICAgICAgICAgICBTYXZlUG9pbnQgc2F2ZVBvaW50ID0gY3JlYXRlU2F2
ZVBvaW50KCk7CisgICAgICAgICAgICBTYXZlUG9pbnQgc2F2ZVBvaW50ID0gY3JlYXRlU2F2ZVBv
aW50KGNvbnRleHQpOwogICAgICAgICAgICAgZGVjbHNTdGFydCA9IHRva2VuU3RhcnRQb3NpdGlv
bigpOwogICAgICAgICAgICAgcGF0dGVybiA9IHRyeVBhcnNlRGVzdHJ1Y3R1cmluZ1BhdHRlcm5F
eHByZXNzaW9uKGNvbnRleHQsIEFzc2lnbm1lbnRDb250ZXh0OjpEZWNsYXJhdGlvblN0YXRlbWVu
dCk7CiAgICAgICAgICAgICBkZWNsc0VuZCA9IGxhc3RUb2tlbkVuZFBvc2l0aW9uKCk7CiAgICAg
ICAgICAgICBpZiAocGF0dGVybiAmJiAobWF0Y2goSU5UT0tFTikgfHwgbWF0Y2hDb250ZXh0dWFs
S2V5d29yZChtX3ZtLnByb3BlcnR5TmFtZXMtPm9mKSkpCiAgICAgICAgICAgICAgICAgZ290byBl
bnVtZXJhdGlvbkxvb3A7CiAgICAgICAgICAgICBwYXR0ZXJuID0gVHJlZURlc3RydWN0dXJpbmdQ
YXR0ZXJuKDApOwotICAgICAgICAgICAgcmVzdG9yZVNhdmVQb2ludChzYXZlUG9pbnQpOworICAg
ICAgICAgICAgcmVzdG9yZVNhdmVQb2ludChjb250ZXh0LCBzYXZlUG9pbnQpOwogICAgICAgICB9
CiAgICAgICAgIG1fYWxsb3dzSW4gPSBmYWxzZTsKICAgICAgICAgZGVjbHNTdGFydCA9IHRva2Vu
U3RhcnRQb3NpdGlvbigpOwpAQCAtMjAyNywxNCArMjAyOCwxNCBAQCB0ZW1wbGF0ZSA8dHlwZW5h
bWUgTGV4ZXJUeXBlPgogdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBib29sIFBhcnNlcjxM
ZXhlclR5cGU+OjptYXliZVBhcnNlQXN5bmNGdW5jdGlvbkRlY2xhcmF0aW9uU3RhdGVtZW50KFRy
ZWVCdWlsZGVyJiBjb250ZXh0LCBUcmVlU3RhdGVtZW50JiByZXN1bHQsIGJvb2wgcGFyZW50QWxs
b3dzRnVuY3Rpb25EZWNsYXJhdGlvbkFzU3RhdGVtZW50KQogewogICAgIEFTU0VSVChtYXRjaENv
bnRleHR1YWxLZXl3b3JkKG1fdm0ucHJvcGVydHlOYW1lcy0+YXN5bmMpKTsKLSAgICBTYXZlUG9p
bnQgc2F2ZVBvaW50ID0gY3JlYXRlU2F2ZVBvaW50KCk7CisgICAgU2F2ZVBvaW50IHNhdmVQb2lu
dCA9IGNyZWF0ZVNhdmVQb2ludChjb250ZXh0KTsKICAgICBuZXh0KCk7CiAgICAgaWYgKG1hdGNo
KEZVTkNUSU9OKSAmJiAhbV9sZXhlci0+aGFzTGluZVRlcm1pbmF0b3JCZWZvcmVUb2tlbigpKSB7
CiAgICAgICAgIGNvbnN0IGJvb2wgaXNBc3luYyA9IHRydWU7CiAgICAgICAgIHJlc3VsdCA9IHBh
cnNlRnVuY3Rpb25EZWNsYXJhdGlvblN0YXRlbWVudChjb250ZXh0LCBpc0FzeW5jLCBwYXJlbnRB
bGxvd3NGdW5jdGlvbkRlY2xhcmF0aW9uQXNTdGF0ZW1lbnQpOwogICAgICAgICByZXR1cm4gdHJ1
ZTsKICAgICB9Ci0gICAgcmVzdG9yZVNhdmVQb2ludChzYXZlUG9pbnQpOworICAgIHJlc3RvcmVT
YXZlUG9pbnQoY29udGV4dCwgc2F2ZVBvaW50KTsKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKQEAg
LTI1MjAsNyArMjUyMSw3IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gYm9vbCBQYXJz
ZXI8TGV4ZXJUeXBlPjo6cGFyc2VGdW5jdGlvbkluZm8oVHJlZUJ1aWxkCiAgICAgZnVuY3Rpb25T
Y29wZS0+c2V0RXhwZWN0ZWRTdXBlckJpbmRpbmcoZXhwZWN0ZWRTdXBlckJpbmRpbmcpOwogCiAg
ICAgbV9wYXJzZXJTdGF0ZS5sYXN0RnVuY3Rpb25OYW1lID0gbGFzdEZ1bmN0aW9uTmFtZTsKLSAg
ICBQYXJzZXJTdGF0ZSBvbGRTdGF0ZSA9IGludGVybmFsU2F2ZVBhcnNlclN0YXRlKCk7CisgICAg
UGFyc2VyU3RhdGUgb2xkU3RhdGUgPSBpbnRlcm5hbFNhdmVQYXJzZXJTdGF0ZShjb250ZXh0KTsK
IAogICAgIC8vIEZJWE1FOiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTU2OTYyCiAgICAgLy8gVGhpcyBsb29wIGNvbGxlY3RzIHRoZSBzZXQgb2YgY2FwdHVyZSBjYW5k
aWRhdGVzIHRoYXQgYXJlbid0CkBAIC0yNTczLDcgKzI1NzQsNyBAQCB0ZW1wbGF0ZSA8Y2xhc3Mg
VHJlZUJ1aWxkZXI+IGJvb2wgUGFyc2VyPExleGVyVHlwZT46OnBhcnNlRnVuY3Rpb25JbmZvKFRy
ZWVCdWlsZAogICAgIH0gZWxzZQogICAgICAgICBmdW5jdGlvbkluZm8uYm9keSA9IHBlcmZvcm1Q
YXJzaW5nRnVuY3Rpb25Cb2R5KCk7CiAgICAgCi0gICAgcmVzdG9yZVBhcnNlclN0YXRlKG9sZFN0
YXRlKTsKKyAgICByZXN0b3JlUGFyc2VyU3RhdGUoY29udGV4dCwgb2xkU3RhdGUpOwogICAgIGZh
aWxJZkZhbHNlKGZ1bmN0aW9uSW5mby5ib2R5LCAiQ2Fubm90IHBhcnNlIHRoZSBib2R5IG9mIHRo
aXMgIiwgc3RyaW5nRm9yRnVuY3Rpb25Nb2RlKG1vZGUpKTsKICAgICBjb250ZXh0LnNldEVuZE9m
ZnNldChmdW5jdGlvbkluZm8uYm9keSwgbV9sZXhlci0+Y3VycmVudE9mZnNldCgpKTsKICAgICBp
ZiAoZnVuY3Rpb25TY29wZS0+c3RyaWN0TW9kZSgpICYmIHJlcXVpcmVtZW50cyAhPSBGdW5jdGlv
bk5hbWVSZXF1aXJlbWVudHM6OlVubmFtZWQpIHsKQEAgLTI2MzQsNyArMjYzNSw3IEBAIHRlbXBs
YXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gYm9vbCBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VGdW5j
dGlvbkluZm8oVHJlZUJ1aWxkCiAgICAgICAgIC8vIFNvIHdlIG9ubHkgY2hlY2sgVHJlZUJ1aWxk
ZXIncyB0eXBlIGhlcmUuCiAgICAgICAgIEFTU0VSVF9VTlVTRUQoZnVuY3Rpb25TY29wZVdhc1N0
cmljdE1vZGUsIGZ1bmN0aW9uU2NvcGVXYXNTdHJpY3RNb2RlID09IGN1cnJlbnRTY29wZSgpLT5z
dHJpY3RNb2RlKCkpOwogICAgICAgICBpZiAoIXN0ZDo6aXNfc2FtZTxUcmVlQnVpbGRlciwgU3lu
dGF4Q2hlY2tlcj46OnZhbHVlKQotICAgICAgICAgICAgbGV4Q3VycmVudFRva2VuQWdhaW5VbmRl
ckN1cnJlbnRDb250ZXh0KCk7CisgICAgICAgICAgICBsZXhDdXJyZW50VG9rZW5BZ2FpblVuZGVy
Q3VycmVudENvbnRleHQoY29udGV4dCk7CiAgICAgfQogCiAgICAgaWYgKG5ld0luZm8pCkBAIC0y
ODY0LDExICsyODY1LDExIEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZUNsYXNz
RXhwcmVzc2lvbiBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VDbGFzcyhUCiAgICAgICAgIENsYXNz
RWxlbWVudFRhZyB0YWcgPSBDbGFzc0VsZW1lbnRUYWc6Okluc3RhbmNlOwogICAgICAgICBhdXRv
IHR5cGUgPSBQcm9wZXJ0eU5vZGU6OkNvbnN0YW50OwogICAgICAgICBpZiAobWF0Y2goUkVTRVJW
RURfSUZfU1RSSUNUKSAmJiAqbV90b2tlbi5tX2RhdGEuaWRlbnQgPT0gbV92bS5wcm9wZXJ0eU5h
bWVzLT5zdGF0aWNLZXl3b3JkKSB7Ci0gICAgICAgICAgICBTYXZlUG9pbnQgc2F2ZVBvaW50ID0g
Y3JlYXRlU2F2ZVBvaW50KCk7CisgICAgICAgICAgICBTYXZlUG9pbnQgc2F2ZVBvaW50ID0gY3Jl
YXRlU2F2ZVBvaW50KGNvbnRleHQpOwogICAgICAgICAgICAgbmV4dCgpOwogICAgICAgICAgICAg
aWYgKG1hdGNoKE9QRU5QQVJFTikpIHsKICAgICAgICAgICAgICAgICAvLyBSZXBhcnNlICJzdGF0
aWMoKSIgYXMgYSBtZXRob2QgbmFtZWQgInN0YXRpYyIuCi0gICAgICAgICAgICAgICAgcmVzdG9y
ZVNhdmVQb2ludChzYXZlUG9pbnQpOworICAgICAgICAgICAgICAgIHJlc3RvcmVTYXZlUG9pbnQo
Y29udGV4dCwgc2F2ZVBvaW50KTsKICAgICAgICAgICAgIH0gZWxzZQogICAgICAgICAgICAgICAg
IHRhZyA9IENsYXNzRWxlbWVudFRhZzo6U3RhdGljOwogICAgICAgICB9CkBAIC0zNDk0LDcgKzM0
OTUsNyBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVTdGF0ZW1lbnQgUGFyc2Vy
PExleGVyVHlwZT46OnBhcnNlRXhwb3J0RGVjbGFyYQogCiAgICAgICAgIGJvb2wgc3RhcnRzV2l0
aEZ1bmN0aW9uID0gbWF0Y2goRlVOQ1RJT04pOwogICAgICAgICBpZiAoc3RhcnRzV2l0aEZ1bmN0
aW9uIHx8IG1hdGNoKENMQVNTVE9LRU4pKSB7Ci0gICAgICAgICAgICBTYXZlUG9pbnQgc2F2ZVBv
aW50ID0gY3JlYXRlU2F2ZVBvaW50KCk7CisgICAgICAgICAgICBTYXZlUG9pbnQgc2F2ZVBvaW50
ID0gY3JlYXRlU2F2ZVBvaW50KGNvbnRleHQpOwogICAgICAgICAgICAgaXNGdW5jdGlvbk9yQ2xh
c3NEZWNsYXJhdGlvbiA9IHRydWU7CiAgICAgICAgICAgICBuZXh0KCk7CiAKQEAgLTM1MDMsOSAr
MzUwNCw5IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZVN0YXRlbWVudCBQYXJz
ZXI8TGV4ZXJUeXBlPjo6cGFyc2VFeHBvcnREZWNsYXJhCiAgICAgICAgICAgICAgICAgbmV4dCgp
OwogICAgICAgICAgICAgaWYgKG1hdGNoKElERU5UKSkKICAgICAgICAgICAgICAgICBsb2NhbE5h
bWUgPSBtX3Rva2VuLm1fZGF0YS5pZGVudDsKLSAgICAgICAgICAgIHJlc3RvcmVTYXZlUG9pbnQo
c2F2ZVBvaW50KTsKKyAgICAgICAgICAgIHJlc3RvcmVTYXZlUG9pbnQoY29udGV4dCwgc2F2ZVBv
aW50KTsKICAgICAgICAgfSBlbHNlIGlmIChtYXRjaENvbnRleHR1YWxLZXl3b3JkKG1fdm0ucHJv
cGVydHlOYW1lcy0+YXN5bmMpKSB7Ci0gICAgICAgICAgICBTYXZlUG9pbnQgc2F2ZVBvaW50ID0g
Y3JlYXRlU2F2ZVBvaW50KCk7CisgICAgICAgICAgICBTYXZlUG9pbnQgc2F2ZVBvaW50ID0gY3Jl
YXRlU2F2ZVBvaW50KGNvbnRleHQpOwogICAgICAgICAgICAgbmV4dCgpOwogICAgICAgICAgICAg
aWYgKG1hdGNoKEZVTkNUSU9OKSAmJiAhbV9sZXhlci0+aGFzTGluZVRlcm1pbmF0b3JCZWZvcmVU
b2tlbigpKSB7CiAgICAgICAgICAgICAgICAgbmV4dCgpOwpAQCAtMzUxMyw3ICszNTE0LDcgQEAg
dGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlU3RhdGVtZW50IFBhcnNlcjxMZXhlclR5
cGU+OjpwYXJzZUV4cG9ydERlY2xhcmEKICAgICAgICAgICAgICAgICAgICAgbG9jYWxOYW1lID0g
bV90b2tlbi5tX2RhdGEuaWRlbnQ7CiAgICAgICAgICAgICAgICAgaXNGdW5jdGlvbk9yQ2xhc3NE
ZWNsYXJhdGlvbiA9IHRydWU7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICByZXN0b3JlU2F2
ZVBvaW50KHNhdmVQb2ludCk7CisgICAgICAgICAgICByZXN0b3JlU2F2ZVBvaW50KGNvbnRleHQs
IHNhdmVQb2ludCk7CiAgICAgICAgIH0KIAogICAgICAgICBpZiAoIWxvY2FsTmFtZSkKQEAgLTM3
NTksNyArMzc2MCw3IEBAIHRlbXBsYXRlIDx0eXBlbmFtZSBUcmVlQnVpbGRlcj4gVHJlZUV4cHJl
c3Npb24gUGFyc2VyPExleGVyVHlwZT46OnBhcnNlQXNzaWdubWVuCiAgICAgLy8gV2hldGhlciBz
cGVjIGlkZW50aWZpZXIgaXMgd2lsbCBiZSB2YWxpZGF0ZWQgYnkgaXNBcnJvd0Z1bmN0aW9uUGFy
YW1ldGVycygpLgogICAgIGJvb2wgd2FzSWRlbnRpZmllck9yS2V5d29yZCA9IGlzSWRlbnRpZmll
ck9yS2V5d29yZChtX3Rva2VuKTsKICAgICBib29sIG1heWJlVmFsaWRBcnJvd0Z1bmN0aW9uU3Rh
cnQgPSB3YXNPcGVuUGFyZW4gfHwgd2FzSWRlbnRpZmllck9yS2V5d29yZDsKLSAgICBTYXZlUG9p
bnQgc2F2ZVBvaW50ID0gY3JlYXRlU2F2ZVBvaW50KCk7CisgICAgU2F2ZVBvaW50IHNhdmVQb2lu
dCA9IGNyZWF0ZVNhdmVQb2ludChjb250ZXh0KTsKICAgICBzaXplX3QgdXNlZFZhcmlhYmxlc1Np
emUgPSAwOwogCiAgICAgaWYgKHdhc09wZW5QYXJlbikgewpAQCAtMzc3Miw4ICszNzczLDcgQEAg
dGVtcGxhdGUgPHR5cGVuYW1lIFRyZWVCdWlsZGVyPiBUcmVlRXhwcmVzc2lvbiBQYXJzZXI8TGV4
ZXJUeXBlPjo6cGFyc2VBc3NpZ25tZW4KICAgICBpZiAobWF5YmVWYWxpZEFycm93RnVuY3Rpb25T
dGFydCAmJiAhbWF0Y2goRU9GVE9LKSkgewogICAgICAgICBib29sIGlzQXJyb3dGdW5jdGlvblRv
a2VuID0gbWF0Y2goQVJST1dGVU5DVElPTik7CiAgICAgICAgIGlmICghbGhzIHx8IGlzQXJyb3dG
dW5jdGlvblRva2VuKSB7Ci0gICAgICAgICAgICBTYXZlUG9pbnRXaXRoRXJyb3IgZXJyb3JSZXN0
b3JhdGlvblNhdmVQb2ludCA9IGNyZWF0ZVNhdmVQb2ludEZvckVycm9yKCk7Ci0gICAgICAgICAg
ICByZXN0b3JlU2F2ZVBvaW50KHNhdmVQb2ludCk7CisgICAgICAgICAgICBTYXZlUG9pbnRXaXRo
RXJyb3IgZXJyb3JSZXN0b3JhdGlvblNhdmVQb2ludCA9IHN3YXBTYXZlUG9pbnRGb3JFcnJvcihj
b250ZXh0LCBzYXZlUG9pbnQpOwogICAgICAgICAgICAgYm9vbCBpc0FzeW5jQXJyb3cgPSBmYWxz
ZTsKICAgICAgICAgICAgIGlmIChVTkxJS0VMWShjbGFzc2lmaWVyLmluZGljYXRlc1Bvc3NpYmxl
QXN5bmNBcnJvd0Z1bmN0aW9uKCkpKSB7CiAgICAgICAgICAgICAgICAgaWYgKG1hdGNoQ29udGV4
dHVhbEtleXdvcmQobV92bS5wcm9wZXJ0eU5hbWVzLT5hc3luYykpIHsKQEAgLTM3ODEsMTQgKzM3
ODEsMTQgQEAgdGVtcGxhdGUgPHR5cGVuYW1lIFRyZWVCdWlsZGVyPiBUcmVlRXhwcmVzc2lvbiBQ
YXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VBc3NpZ25tZW4KICAgICAgICAgICAgICAgICAgICAgaXNB
c3luY0Fycm93ID0gIW1fbGV4ZXItPmhhc0xpbmVUZXJtaW5hdG9yQmVmb3JlVG9rZW4oKTsKICAg
ICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBpZiAoaXNBcnJvd0Z1
bmN0aW9uUGFyYW1ldGVycygpKSB7CisgICAgICAgICAgICBpZiAoaXNBcnJvd0Z1bmN0aW9uUGFy
YW1ldGVycyhjb250ZXh0KSkgewogICAgICAgICAgICAgICAgIGlmICh3YXNPcGVuUGFyZW4pCiAg
ICAgICAgICAgICAgICAgICAgIGN1cnJlbnRTY29wZSgpLT5yZXZlcnRUb1ByZXZpb3VzVXNlZFZh
cmlhYmxlcyh1c2VkVmFyaWFibGVzU2l6ZSk7CiAgICAgICAgICAgICAgICAgcmV0dXJuIHBhcnNl
QXJyb3dGdW5jdGlvbkV4cHJlc3Npb24oY29udGV4dCwgaXNBc3luY0Fycm93KTsKICAgICAgICAg
ICAgIH0KICAgICAgICAgICAgIGlmIChpc0Fycm93RnVuY3Rpb25Ub2tlbikKICAgICAgICAgICAg
ICAgICBwcm9wYWdhdGVFcnJvcigpOwotICAgICAgICAgICAgcmVzdG9yZVNhdmVQb2ludFdpdGhF
cnJvcihlcnJvclJlc3RvcmF0aW9uU2F2ZVBvaW50KTsKKyAgICAgICAgICAgIHJlc3RvcmVTYXZl
UG9pbnRXaXRoRXJyb3IoY29udGV4dCwgZXJyb3JSZXN0b3JhdGlvblNhdmVQb2ludCk7CiAgICAg
ICAgICAgICBpZiAoaXNBcnJvd0Z1bmN0aW9uVG9rZW4pCiAgICAgICAgICAgICAgICAgZmFpbER1
ZVRvVW5leHBlY3RlZFRva2VuKCk7CiAgICAgICAgIH0KQEAgLTM3OTgsMTEgKzM3OTgsMTAgQEAg
dGVtcGxhdGUgPHR5cGVuYW1lIFRyZWVCdWlsZGVyPiBUcmVlRXhwcmVzc2lvbiBQYXJzZXI8TGV4
ZXJUeXBlPjo6cGFyc2VBc3NpZ25tZW4KICAgICAgICAgcHJvcGFnYXRlRXJyb3IoKTsKIAogICAg
IGlmIChtYXliZUFzc2lnbm1lbnRQYXR0ZXJuICYmICghbGhzIHx8IChjb250ZXh0LmlzT2JqZWN0
T3JBcnJheUxpdGVyYWwobGhzKSAmJiBtYXRjaChFUVVBTCkpKSkgewotICAgICAgICBTYXZlUG9p
bnRXaXRoRXJyb3IgZXhwcmVzc2lvbkVycm9yTG9jYXRpb24gPSBjcmVhdGVTYXZlUG9pbnRGb3JF
cnJvcigpOwotICAgICAgICByZXN0b3JlU2F2ZVBvaW50KHNhdmVQb2ludCk7CisgICAgICAgIFNh
dmVQb2ludFdpdGhFcnJvciBleHByZXNzaW9uRXJyb3JMb2NhdGlvbiA9IHN3YXBTYXZlUG9pbnRG
b3JFcnJvcihjb250ZXh0LCBzYXZlUG9pbnQpOwogICAgICAgICBhdXRvIHBhdHRlcm4gPSB0cnlQ
YXJzZURlc3RydWN0dXJpbmdQYXR0ZXJuRXhwcmVzc2lvbihjb250ZXh0LCBBc3NpZ25tZW50Q29u
dGV4dDo6QXNzaWdubWVudEV4cHJlc3Npb24pOwogICAgICAgICBpZiAoY2xhc3NpZmllci5pbmRp
Y2F0ZXNQb3NzaWJsZVBhdHRlcm4oKSAmJiAoIXBhdHRlcm4gfHwgIW1hdGNoKEVRVUFMKSkpIHsK
LSAgICAgICAgICAgIHJlc3RvcmVTYXZlUG9pbnRXaXRoRXJyb3IoZXhwcmVzc2lvbkVycm9yTG9j
YXRpb24pOworICAgICAgICAgICAgcmVzdG9yZVNhdmVQb2ludFdpdGhFcnJvcihjb250ZXh0LCBl
eHByZXNzaW9uRXJyb3JMb2NhdGlvbik7CiAgICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICAg
fQogICAgICAgICBmYWlsSWZGYWxzZShwYXR0ZXJuLCAiQ2Fubm90IHBhcnNlIGFzc2lnbm1lbnQg
cGF0dGVybiIpOwpAQCAtMzg2Nyw5ICszODY2LDYgQEAgZW5kOgogICAgIGlmIChoYWRBc3NpZ25t
ZW50KQogICAgICAgICBtX3BhcnNlclN0YXRlLm5vbkxIU0NvdW50Kys7CiAgICAgCi0gICAgaWYg
KCFUcmVlQnVpbGRlcjo6Q3JlYXRlc0FTVCkKLSAgICAgICAgcmV0dXJuIGxoczsKLSAgICAKICAg
ICB3aGlsZSAoYXNzaWdubWVudFN0YWNrKQogICAgICAgICBsaHMgPSBjb250ZXh0LmNyZWF0ZUFz
c2lnbm1lbnQobG9jYXRpb24sIGFzc2lnbm1lbnRTdGFjaywgbGhzLCBpbml0aWFsQXNzaWdubWVu
dENvdW50LCBtX3BhcnNlclN0YXRlLmFzc2lnbm1lbnRDb3VudCwgbGFzdFRva2VuRW5kUG9zaXRp
b24oKSk7CiAgICAgCkBAIC0zODkzLDcgKzM4ODksNyBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1
aWxkZXI+IFRyZWVFeHByZXNzaW9uIFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZVlpZWxkRXhwcmVz
cwogICAgIEpTVG9rZW5Mb2NhdGlvbiBsb2NhdGlvbih0b2tlbkxvY2F0aW9uKCkpOwogICAgIEpT
VGV4dFBvc2l0aW9uIGRpdm90U3RhcnQgPSB0b2tlblN0YXJ0UG9zaXRpb24oKTsKICAgICBBU1NF
UlQobWF0Y2goWUlFTEQpKTsKLSAgICBTYXZlUG9pbnQgc2F2ZVBvaW50ID0gY3JlYXRlU2F2ZVBv
aW50KCk7CisgICAgU2F2ZVBvaW50IHNhdmVQb2ludCA9IGNyZWF0ZVNhdmVQb2ludChjb250ZXh0
KTsKICAgICBuZXh0KCk7CiAgICAgaWYgKG1fbGV4ZXItPmhhc0xpbmVUZXJtaW5hdG9yQmVmb3Jl
VG9rZW4oKSkKICAgICAgICAgcmV0dXJuIGNvbnRleHQuY3JlYXRlWWllbGQobG9jYXRpb24pOwpA
QCAtMzkwMiw3ICszODk4LDcgQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlRXhw
cmVzc2lvbiBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VZaWVsZEV4cHJlc3MKICAgICBKU1RleHRQ
b3NpdGlvbiBhcmd1bWVudFN0YXJ0ID0gdG9rZW5TdGFydFBvc2l0aW9uKCk7CiAgICAgVHJlZUV4
cHJlc3Npb24gYXJndW1lbnQgPSBwYXJzZUFzc2lnbm1lbnRFeHByZXNzaW9uKGNvbnRleHQpOwog
ICAgIGlmICghYXJndW1lbnQpIHsKLSAgICAgICAgcmVzdG9yZVNhdmVQb2ludChzYXZlUG9pbnQp
OworICAgICAgICByZXN0b3JlU2F2ZVBvaW50KGNvbnRleHQsIHNhdmVQb2ludCk7CiAgICAgICAg
IG5leHQoKTsKICAgICAgICAgcmV0dXJuIGNvbnRleHQuY3JlYXRlWWllbGQobG9jYXRpb24pOwog
ICAgIH0KQEAgLTQwNTcsMTEgKzQwNTMsMTEgQEAgcGFyc2VQcm9wZXJ0eToKICAgICBjYXNlIElE
RU5UOgogICAgICAgICBpZiAoVU5MSUtFTFkoKm1fdG9rZW4ubV9kYXRhLmlkZW50ID09IG1fdm0u
cHJvcGVydHlOYW1lcy0+YXN5bmMgJiYgIW1fdG9rZW4ubV9kYXRhLmVzY2FwZWQpKSB7CiAgICAg
ICAgICAgICBpZiAocGFyc2VNb2RlID09IFNvdXJjZVBhcnNlTW9kZTo6TWV0aG9kTW9kZSkgewot
ICAgICAgICAgICAgICAgIFNhdmVQb2ludCBzYXZlUG9pbnQgPSBjcmVhdGVTYXZlUG9pbnQoKTsK
KyAgICAgICAgICAgICAgICBTYXZlUG9pbnQgc2F2ZVBvaW50ID0gY3JlYXRlU2F2ZVBvaW50KGNv
bnRleHQpOwogICAgICAgICAgICAgICAgIG5leHQoKTsKIAogICAgICAgICAgICAgICAgIGlmICht
YXRjaChDT0xPTikgfHwgbWF0Y2goT1BFTlBBUkVOKSB8fCBtYXRjaChDT01NQSkgfHwgbWF0Y2go
Q0xPU0VCUkFDRSkpIHsKLSAgICAgICAgICAgICAgICAgICAgcmVzdG9yZVNhdmVQb2ludChzYXZl
UG9pbnQpOworICAgICAgICAgICAgICAgICAgICByZXN0b3JlU2F2ZVBvaW50KGNvbnRleHQsIHNh
dmVQb2ludCk7CiAgICAgICAgICAgICAgICAgICAgIHdhc0lkZW50ID0gdHJ1ZTsKICAgICAgICAg
ICAgICAgICAgICAgZ290byBuYW1lZFByb3BlcnR5OwogICAgICAgICAgICAgICAgIH0KQEAgLTQ4
NTYsMTMgKzQ4NTIsMTMgQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlRXhwcmVz
c2lvbiBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VNZW1iZXJFeHByZXMKICAgICAgICAgICAgIG9w
dGlvbmFsQ2hhaW5CYXNlID0gYmFzZTsKICAgICAgICAgICAgIG9wdGlvbmFsQ2hhaW5Mb2NhdGlv
biA9IHRva2VuTG9jYXRpb24oKTsKIAotICAgICAgICAgICAgU2F2ZVBvaW50IHNhdmVQb2ludCA9
IGNyZWF0ZVNhdmVQb2ludCgpOworICAgICAgICAgICAgU2F2ZVBvaW50IHNhdmVQb2ludCA9IGNy
ZWF0ZVNhdmVQb2ludChjb250ZXh0KTsKICAgICAgICAgICAgIG5leHQoKTsKICAgICAgICAgICAg
IGlmIChtYXRjaChPUEVOQlJBQ0tFVCkgfHwgbWF0Y2goT1BFTlBBUkVOKSB8fCBtYXRjaChCQUNL
UVVPVEUpKQogICAgICAgICAgICAgICAgIHR5cGUgPSBtX3Rva2VuLm1fdHlwZTsKICAgICAgICAg
ICAgIGVsc2UgewogICAgICAgICAgICAgICAgIHR5cGUgPSBET1Q7Ci0gICAgICAgICAgICAgICAg
cmVzdG9yZVNhdmVQb2ludChzYXZlUG9pbnQpOworICAgICAgICAgICAgICAgIHJlc3RvcmVTYXZl
UG9pbnQoY29udGV4dCwgc2F2ZVBvaW50KTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogCkBA
IC01MDQyLDE5ICs1MDM4LDE1IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZUV4
cHJlc3Npb24gUGFyc2VyPExleGVyVHlwZT46OnBhcnNlVW5hcnlFeHByZXNzCiAKICAgICBKU1Rv
a2VuTG9jYXRpb24gbG9jYXRpb24odG9rZW5Mb2NhdGlvbigpKTsKIAorICAgIGludCBvbGRUb2tl
blN0YWNrRGVwdGggPSBjb250ZXh0LnVuYXJ5VG9rZW5TdGFja0RlcHRoKCk7CisgICAgbWFrZVNj
b3BlRXhpdChbJl0geworICAgICAgICBBU1NFUlRfVU5VU0VEKG9sZFRva2VuU3RhY2tEZXB0aCwg
b2xkVG9rZW5TdGFja0RlcHRoIDw9IGNvbnRleHQudW5hcnlUb2tlblN0YWNrRGVwdGgoKSk7Cisg
ICAgfSk7CisKICAgICB3aGlsZSAoaXNVbmFyeU9wKG1fdG9rZW4ubV90eXBlKSkgewotICAgICAg
ICBzd2l0Y2ggKG1fdG9rZW4ubV90eXBlKSB7Ci0gICAgICAgIGNhc2UgUExVU1BMVVM6Ci0gICAg
ICAgIGNhc2UgTUlOVVNNSU5VUzoKLSAgICAgICAgY2FzZSBBVVRPUExVU1BMVVM6Ci0gICAgICAg
IGNhc2UgQVVUT01JTlVTTUlOVVM6Ci0gICAgICAgICAgICBzZW1hbnRpY0ZhaWxJZlRydWUoaGFz
UHJlZml4VXBkYXRlT3AsICJUaGUgIiwgb3BlcmF0b3JTdHJpbmcodHJ1ZSwgbGFzdE9wZXJhdG9y
KSwgIiBvcGVyYXRvciByZXF1aXJlcyBhIHJlZmVyZW5jZSBleHByZXNzaW9uIik7CisgICAgICAg
IHNlbWFudGljRmFpbElmVHJ1ZShoYXNQcmVmaXhVcGRhdGVPcCwgIlRoZSAiLCBvcGVyYXRvclN0
cmluZyh0cnVlLCBsYXN0T3BlcmF0b3IpLCAiIG9wZXJhdG9yIHJlcXVpcmVzIGEgcmVmZXJlbmNl
IGV4cHJlc3Npb24iKTsKKyAgICAgICAgaWYgKGlzVXBkYXRlT3AobV90b2tlbi5tX3R5cGUpKQog
ICAgICAgICAgICAgaGFzUHJlZml4VXBkYXRlT3AgPSB0cnVlOwotICAgICAgICAgICAgYnJlYWs7
Ci0gICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICBzZW1hbnRpY0ZhaWxJZlRydWUoaGFzUHJl
Zml4VXBkYXRlT3AsICJUaGUgIiwgb3BlcmF0b3JTdHJpbmcodHJ1ZSwgbGFzdE9wZXJhdG9yKSwg
IiBvcGVyYXRvciByZXF1aXJlcyBhIHJlZmVyZW5jZSBleHByZXNzaW9uIik7Ci0gICAgICAgICAg
ICBicmVhazsKLSAgICAgICAgfQogICAgICAgICBsYXN0T3BlcmF0b3IgPSBtX3Rva2VuLm1fdHlw
ZTsKICAgICAgICAgbV9wYXJzZXJTdGF0ZS5ub25MSFNDb3VudCsrOwogICAgICAgICBjb250ZXh0
LmFwcGVuZFVuYXJ5VG9rZW4odG9rZW5TdGFja0RlcHRoLCBtX3Rva2VuLm1fdHlwZSwgdG9rZW5T
dGFydFBvc2l0aW9uKCkpOwpAQCAtNTA2OSw2ICs1MDYxLDggQEAgdGVtcGxhdGUgPGNsYXNzIFRy
ZWVCdWlsZGVyPiBUcmVlRXhwcmVzc2lvbiBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VVbmFyeUV4
cHJlc3MKICAgICAgICAgICAgIGZhaWxXaXRoTWVzc2FnZSgiQ2Fubm90IHBhcnNlIHN1YmV4cHJl
c3Npb24gb2YgIiwgb3BlcmF0b3JTdHJpbmcodHJ1ZSwgbGFzdE9wZXJhdG9yKSwgIm9wZXJhdG9y
Iik7CiAgICAgICAgIGZhaWxXaXRoTWVzc2FnZSgiQ2Fubm90IHBhcnNlIG1lbWJlciBleHByZXNz
aW9uIik7CiAgICAgfQorICAgIGlmIGNvbnN0ZXhwciAoc3RkOjppc19zYW1lX3Y8VHJlZUJ1aWxk
ZXIsIEFTVEJ1aWxkZXI+KQorICAgICAgICBBU1NFUlQob2xkVG9rZW5TdGFja0RlcHRoICsgdG9r
ZW5TdGFja0RlcHRoID09IGNvbnRleHQudW5hcnlUb2tlblN0YWNrRGVwdGgoKSk7CiAgICAgaWYg
KGlzVXBkYXRlT3Aoc3RhdGljX2Nhc3Q8SlNUb2tlblR5cGU+KGxhc3RPcGVyYXRvcikpKSB7CiAg
ICAgICAgIHNlbWFudGljRmFpbElmVHJ1ZShjb250ZXh0LmlzTWV0YVByb3BlcnR5KGV4cHIpLCBt
ZXRhUHJvcGVydHlOYW1lKGNvbnRleHQsIGV4cHIpLCAiIGNhbid0IGNvbWUgYWZ0ZXIgYSBwcmVm
aXggb3BlcmF0b3IiKTsKICAgICAgICAgc2VtYW50aWNGYWlsSWZGYWxzZShpc1NpbXBsZUFzc2ln
bm1lbnRUYXJnZXQoY29udGV4dCwgZXhwciksICJQcmVmaXggIiwgbGFzdE9wZXJhdG9yID09IFBM
VVNQTFVTID8gIisrIiA6ICItLSIsICIgb3BlcmF0b3IgYXBwbGllZCB0byB2YWx1ZSB0aGF0IGlz
IG5vdCBhIHJlZmVyZW5jZSIpOwpAQCAtNTEwOCw3ICs1MTAyLDkgQEAgdGVtcGxhdGUgPGNsYXNz
IFRyZWVCdWlsZGVyPiBUcmVlRXhwcmVzc2lvbiBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VVbmFy
eUV4cHJlc3MKICAgICAKICAgICBKU1RleHRQb3NpdGlvbiBlbmQgPSBsYXN0VG9rZW5FbmRQb3Np
dGlvbigpOwogICAgIHdoaWxlICh0b2tlblN0YWNrRGVwdGgpIHsKLSAgICAgICAgc3dpdGNoIChj
b250ZXh0LnVuYXJ5VG9rZW5TdGFja0xhc3RUeXBlKHRva2VuU3RhY2tEZXB0aCkpIHsKKyAgICAg
ICAgc3ViRXhwclN0YXJ0ID0gY29udGV4dC51bmFyeVRva2VuU3RhY2tMYXN0U3RhcnQodG9rZW5T
dGFja0RlcHRoKTsKKyAgICAgICAgYXV0byB0b2tlblR5cGUgPSBjb250ZXh0LnVuYXJ5VG9rZW5T
dGFja0xhc3RUeXBlKHRva2VuU3RhY2tEZXB0aCk7CisgICAgICAgIHN3aXRjaCAodG9rZW5UeXBl
KSB7CiAgICAgICAgIGNhc2UgRVhDTEFNQVRJT046CiAgICAgICAgICAgICBleHByID0gY29udGV4
dC5jcmVhdGVMb2dpY2FsTm90KGxvY2F0aW9uLCBleHByKTsKICAgICAgICAgICAgIGJyZWFrOwpA
QCAtNTEyMywxMiArNTExOSwxNCBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVF
eHByZXNzaW9uIFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZVVuYXJ5RXhwcmVzcwogICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgIGNhc2UgUExVU1BMVVM6CiAgICAgICAgIGNhc2UgQVVUT1BMVVNQ
TFVTOgotICAgICAgICAgICAgZXhwciA9IGNvbnRleHQubWFrZVByZWZpeE5vZGUobG9jYXRpb24s
IGV4cHIsIE9wUGx1c1BsdXMsIGNvbnRleHQudW5hcnlUb2tlblN0YWNrTGFzdFN0YXJ0KHRva2Vu
U3RhY2tEZXB0aCksIHN1YkV4cHJTdGFydCArIDEsIGVuZCk7CisgICAgICAgICAgICBBU1NFUlQo
aXNTaW1wbGVBc3NpZ25tZW50VGFyZ2V0KGNvbnRleHQsIGV4cHIpKTsKKyAgICAgICAgICAgIGV4
cHIgPSBjb250ZXh0Lm1ha2VQcmVmaXhOb2RlKGxvY2F0aW9uLCBleHByLCBPcFBsdXNQbHVzLCBz
dWJFeHByU3RhcnQsIHN1YkV4cHJTdGFydCArIDIsIGVuZCk7CiAgICAgICAgICAgICBtX3BhcnNl
clN0YXRlLmFzc2lnbm1lbnRDb3VudCsrOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNh
c2UgTUlOVVNNSU5VUzoKICAgICAgICAgY2FzZSBBVVRPTUlOVVNNSU5VUzoKLSAgICAgICAgICAg
IGV4cHIgPSBjb250ZXh0Lm1ha2VQcmVmaXhOb2RlKGxvY2F0aW9uLCBleHByLCBPcE1pbnVzTWlu
dXMsIGNvbnRleHQudW5hcnlUb2tlblN0YWNrTGFzdFN0YXJ0KHRva2VuU3RhY2tEZXB0aCksIHN1
YkV4cHJTdGFydCArIDEsIGVuZCk7CisgICAgICAgICAgICBBU1NFUlQoaXNTaW1wbGVBc3NpZ25t
ZW50VGFyZ2V0KGNvbnRleHQsIGV4cHIpKTsKKyAgICAgICAgICAgIGV4cHIgPSBjb250ZXh0Lm1h
a2VQcmVmaXhOb2RlKGxvY2F0aW9uLCBleHByLCBPcE1pbnVzTWludXMsIHN1YkV4cHJTdGFydCwg
c3ViRXhwclN0YXJ0ICsgMiwgZW5kKTsKICAgICAgICAgICAgIG1fcGFyc2VyU3RhdGUuYXNzaWdu
bWVudENvdW50Kys7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBUWVBFT0Y6CkBA
IC01MTQ1LDcgKzUxNDMsNiBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVFeHBy
ZXNzaW9uIFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZVVuYXJ5RXhwcmVzcwogICAgICAgICAgICAg
Ly8gSWYgd2UgZ2V0IGhlcmUgc29tZXRoaW5nIGhhcyBnb25lIGhvcnJpYmx5IGhvcnJpYmx5IHdy
b25nCiAgICAgICAgICAgICBDUkFTSCgpOwogICAgICAgICB9Ci0gICAgICAgIHN1YkV4cHJTdGFy
dCA9IGNvbnRleHQudW5hcnlUb2tlblN0YWNrTGFzdFN0YXJ0KHRva2VuU3RhY2tEZXB0aCk7CiAg
ICAgICAgIGNvbnRleHQudW5hcnlUb2tlblN0YWNrUmVtb3ZlTGFzdCh0b2tlblN0YWNrRGVwdGgp
OwogICAgIH0KICAgICByZXR1cm4gZXhwcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9wYXJzZXIvUGFyc2VyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNl
ci5oCmluZGV4IDc1MjllNjYyNDQ2OGM5NjAxMmI2NTkwMGY0ODU0M2NiMjAxOWI3YmYuLmFlODYz
MTlkNjc5YmYzMDhmZTJkODk0NjA3NzY2NDZkOTMxNjBjMjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3BhcnNlci9QYXJzZXIuaApAQCAtMTQxNywxMCArMTQxNywxMSBAQCBwcml2YXRlOgogICAgICAg
ICBtX3Rva2VuLm1fdHlwZSA9IG1fbGV4ZXItPmxleEV4cGVjdElkZW50aWZpZXIoJm1fdG9rZW4s
IGxleGVyRmxhZ3MsIHN0cmljdE1vZGUoKSk7CiAgICAgfQogCi0gICAgQUxXQVlTX0lOTElORSB2
b2lkIGxleEN1cnJlbnRUb2tlbkFnYWluVW5kZXJDdXJyZW50Q29udGV4dCgpCisgICAgdGVtcGxh
dGUgPGNsYXNzIFRyZWVCdWlsZGVyPgorICAgIEFMV0FZU19JTkxJTkUgdm9pZCBsZXhDdXJyZW50
VG9rZW5BZ2FpblVuZGVyQ3VycmVudENvbnRleHQoVHJlZUJ1aWxkZXImIGNvbnRleHQpCiAgICAg
ewotICAgICAgICBhdXRvIHNhdmVQb2ludCA9IGNyZWF0ZVNhdmVQb2ludCgpOwotICAgICAgICBy
ZXN0b3JlU2F2ZVBvaW50KHNhdmVQb2ludCk7CisgICAgICAgIGF1dG8gc2F2ZVBvaW50ID0gY3Jl
YXRlU2F2ZVBvaW50KGNvbnRleHQpOworICAgICAgICByZXN0b3JlU2F2ZVBvaW50KGNvbnRleHQs
IHNhdmVQb2ludCk7CiAgICAgfQogCiAgICAgQUxXQVlTX0lOTElORSBib29sIG5leHRUb2tlbklz
Q29sb24oKQpAQCAtMTY4NSw3ICsxNjg2LDcgQEAgcHJpdmF0ZToKICAgICBlbnVtIGNsYXNzIEZ1
bmN0aW9uRGVmaW5pdGlvblR5cGUgeyBFeHByZXNzaW9uLCBEZWNsYXJhdGlvbiwgTWV0aG9kIH07
CiAgICAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBORVZFUl9JTkxJTkUgYm9vbCBwYXJz
ZUZ1bmN0aW9uSW5mbyhUcmVlQnVpbGRlciYsIEZ1bmN0aW9uTmFtZVJlcXVpcmVtZW50cywgU291
cmNlUGFyc2VNb2RlLCBib29sIG5hbWVJc0luQ29udGFpbmluZ1Njb3BlLCBDb25zdHJ1Y3Rvcktp
bmQsIFN1cGVyQmluZGluZywgaW50IGZ1bmN0aW9uS2V5d29yZFN0YXJ0LCBQYXJzZXJGdW5jdGlv
bkluZm88VHJlZUJ1aWxkZXI+JiwgRnVuY3Rpb25EZWZpbml0aW9uVHlwZSwgT3B0aW9uYWw8aW50
PiBmdW5jdGlvbkNvbnN0cnVjdG9yUGFyYW1ldGVyc0VuZFBvc2l0aW9uID0gV1RGOjpudWxsb3B0
KTsKICAgICAKLSAgICBBTFdBWVNfSU5MSU5FIGJvb2wgaXNBcnJvd0Z1bmN0aW9uUGFyYW1ldGVy
cygpOworICAgIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gQUxXQVlTX0lOTElORSBib29s
IGlzQXJyb3dGdW5jdGlvblBhcmFtZXRlcnMoVHJlZUJ1aWxkZXImKTsKICAgICAKICAgICB0ZW1w
bGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXIsIGNsYXNzIEZ1bmN0aW9uSW5mb1R5cGU+IE5FVkVSX0lO
TElORSB0eXBlbmFtZSBUcmVlQnVpbGRlcjo6Rm9ybWFsUGFyYW1ldGVyTGlzdCBwYXJzZUZ1bmN0
aW9uUGFyYW1ldGVycyhUcmVlQnVpbGRlciYsIFNvdXJjZVBhcnNlTW9kZSwgRnVuY3Rpb25JbmZv
VHlwZSYpOwogICAgIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gTkVWRVJfSU5MSU5FIHR5
cGVuYW1lIFRyZWVCdWlsZGVyOjpGb3JtYWxQYXJhbWV0ZXJMaXN0IGNyZWF0ZUdlbmVyYXRvclBh
cmFtZXRlcnMoVHJlZUJ1aWxkZXImLCB1bnNpZ25lZCYgcGFyYW1ldGVyQ291bnQpOwpAQCAtMTc5
MSw2ICsxNzkyLDcgQEAgcHJpdmF0ZToKICAgICAgICAgaW50IGFzc2lnbm1lbnRDb3VudCB7IDAg
fTsKICAgICAgICAgaW50IG5vbkxIU0NvdW50IHsgMCB9OwogICAgICAgICBpbnQgbm9uVHJpdmlh
bEV4cHJlc3Npb25Db3VudCB7IDAgfTsKKyAgICAgICAgaW50IHVuYXJ5VG9rZW5TdGFja0RlcHRo
IHsgMCB9OwogICAgICAgICBGdW5jdGlvblBhcnNlUGhhc2UgZnVuY3Rpb25QYXJzZVBoYXNlIHsg
RnVuY3Rpb25QYXJzZVBoYXNlOjpCb2R5IH07CiAgICAgICAgIGNvbnN0IElkZW50aWZpZXIqIGxh
c3RJZGVudGlmaWVyIHsgbnVsbHB0ciB9OwogICAgICAgICBjb25zdCBJZGVudGlmaWVyKiBsYXN0
RnVuY3Rpb25OYW1lIHsgbnVsbHB0ciB9OwpAQCAtMTgwMCwxNCArMTgwMiwxOSBAQCBwcml2YXRl
OgogCiAgICAgLy8gSWYgeW91J3JlIHVzaW5nIHRoaXMgZGlyZWN0bHksIHlvdSBwcm9iYWJseSBz
aG91bGQgYmUgdXNpbmcKICAgICAvLyBjcmVhdGVTYXZlUG9pbnQoKSBpbnN0ZWFkLgotICAgIEFM
V0FZU19JTkxJTkUgUGFyc2VyU3RhdGUgaW50ZXJuYWxTYXZlUGFyc2VyU3RhdGUoKQorICAgIHRl
bXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4KKyAgICBBTFdBWVNfSU5MSU5FIFBhcnNlclN0YXRl
IGludGVybmFsU2F2ZVBhcnNlclN0YXRlKFRyZWVCdWlsZGVyJiBjb250ZXh0KQogICAgIHsKLSAg
ICAgICAgcmV0dXJuIG1fcGFyc2VyU3RhdGU7CisgICAgICAgIGF1dG8gcGFyc2VyU3RhdGUgPSBt
X3BhcnNlclN0YXRlOworICAgICAgICBwYXJzZXJTdGF0ZS51bmFyeVRva2VuU3RhY2tEZXB0aCA9
IGNvbnRleHQudW5hcnlUb2tlblN0YWNrRGVwdGgoKTsKKyAgICAgICAgcmV0dXJuIHBhcnNlclN0
YXRlOwogICAgIH0KIAotICAgIEFMV0FZU19JTkxJTkUgdm9pZCByZXN0b3JlUGFyc2VyU3RhdGUo
Y29uc3QgUGFyc2VyU3RhdGUmIHN0YXRlKQorICAgIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRl
cj4KKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgcmVzdG9yZVBhcnNlclN0YXRlKFRyZWVCdWlsZGVy
JiBjb250ZXh0LCBjb25zdCBQYXJzZXJTdGF0ZSYgc3RhdGUpCiAgICAgewogICAgICAgICBtX3Bh
cnNlclN0YXRlID0gc3RhdGU7CisgICAgICAgIGNvbnRleHQuc2V0VW5hcnlUb2tlblN0YWNrRGVw
dGgobV9wYXJzZXJTdGF0ZS51bmFyeVRva2VuU3RhY2tEZXB0aCk7CiAgICAgfQogCiAgICAgc3Ry
dWN0IExleGVyU3RhdGUgewpAQCAtMTg1NSw0NyArMTg2Miw1NiBAQCBwcml2YXRlOgogICAgICAg
ICBTdHJpbmcgcGFyc2VyRXJyb3JNZXNzYWdlOwogICAgIH07CiAKLSAgICBBTFdBWVNfSU5MSU5F
IHZvaWQgaW50ZXJuYWxTYXZlU3RhdGUoU2F2ZVBvaW50JiBzYXZlUG9pbnQpCisgICAgdGVtcGxh
dGUgPGNsYXNzIFRyZWVCdWlsZGVyPgorICAgIEFMV0FZU19JTkxJTkUgdm9pZCBpbnRlcm5hbFNh
dmVTdGF0ZShUcmVlQnVpbGRlciYgY29udGV4dCwgU2F2ZVBvaW50JiBzYXZlUG9pbnQpCiAgICAg
ewotICAgICAgICBzYXZlUG9pbnQucGFyc2VyU3RhdGUgPSBpbnRlcm5hbFNhdmVQYXJzZXJTdGF0
ZSgpOworICAgICAgICBzYXZlUG9pbnQucGFyc2VyU3RhdGUgPSBpbnRlcm5hbFNhdmVQYXJzZXJT
dGF0ZShjb250ZXh0KTsKICAgICAgICAgc2F2ZVBvaW50LmxleGVyU3RhdGUgPSBpbnRlcm5hbFNh
dmVMZXhlclN0YXRlKCk7CiAgICAgfQogICAgIAotICAgIEFMV0FZU19JTkxJTkUgU2F2ZVBvaW50
V2l0aEVycm9yIGNyZWF0ZVNhdmVQb2ludEZvckVycm9yKCkKKyAgICB0ZW1wbGF0ZSA8Y2xhc3Mg
VHJlZUJ1aWxkZXI+CisgICAgQUxXQVlTX0lOTElORSBTYXZlUG9pbnRXaXRoRXJyb3Igc3dhcFNh
dmVQb2ludEZvckVycm9yKFRyZWVCdWlsZGVyJiBjb250ZXh0LCBTYXZlUG9pbnQmIG9sZFNhdmVQ
b2ludCkKICAgICB7CiAgICAgICAgIFNhdmVQb2ludFdpdGhFcnJvciBzYXZlUG9pbnQ7Ci0gICAg
ICAgIGludGVybmFsU2F2ZVN0YXRlKHNhdmVQb2ludCk7CisgICAgICAgIGludGVybmFsU2F2ZVN0
YXRlKGNvbnRleHQsIHNhdmVQb2ludCk7CiAgICAgICAgIHNhdmVQb2ludC5sZXhlckVycm9yID0g
bV9sZXhlci0+c2F3RXJyb3IoKTsKICAgICAgICAgc2F2ZVBvaW50LmxleGVyRXJyb3JNZXNzYWdl
ID0gbV9sZXhlci0+Z2V0RXJyb3JNZXNzYWdlKCk7CiAgICAgICAgIHNhdmVQb2ludC5wYXJzZXJF
cnJvck1lc3NhZ2UgPSBtX2Vycm9yTWVzc2FnZTsKKyAgICAgICAgLy8gTWFrZSBzdXJlIHdlIHNl
dCBvdXIgbmV3IHNhdmVwb2ludHMgdW5hcnkgc3RhY2sgdG8gd2hhdCBvbGRTYXZlUG9pbnQgaGFk
IGFzIGl0IGN1cnJlbnRseSBtYXkgY29udGFpbiBzdGFsZSBpbmZvLgorICAgICAgICBzYXZlUG9p
bnQucGFyc2VyU3RhdGUudW5hcnlUb2tlblN0YWNrRGVwdGggPSBvbGRTYXZlUG9pbnQucGFyc2Vy
U3RhdGUudW5hcnlUb2tlblN0YWNrRGVwdGg7CisgICAgICAgIHJlc3RvcmVTYXZlUG9pbnQoY29u
dGV4dCwgb2xkU2F2ZVBvaW50KTsKICAgICAgICAgcmV0dXJuIHNhdmVQb2ludDsKICAgICB9CiAg
ICAgCi0gICAgQUxXQVlTX0lOTElORSBTYXZlUG9pbnQgY3JlYXRlU2F2ZVBvaW50KCkKKyAgICB0
ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+CisgICAgQUxXQVlTX0lOTElORSBTYXZlUG9pbnQg
Y3JlYXRlU2F2ZVBvaW50KFRyZWVCdWlsZGVyJiBjb250ZXh0KQogICAgIHsKICAgICAgICAgQVNT
RVJUKCFoYXNFcnJvcigpKTsKICAgICAgICAgU2F2ZVBvaW50IHNhdmVQb2ludDsKLSAgICAgICAg
aW50ZXJuYWxTYXZlU3RhdGUoc2F2ZVBvaW50KTsKKyAgICAgICAgaW50ZXJuYWxTYXZlU3RhdGUo
Y29udGV4dCwgc2F2ZVBvaW50KTsKICAgICAgICAgcmV0dXJuIHNhdmVQb2ludDsKICAgICB9CiAK
LSAgICBBTFdBWVNfSU5MSU5FIHZvaWQgaW50ZXJuYWxSZXN0b3JlU3RhdGUoY29uc3QgU2F2ZVBv
aW50JiBzYXZlUG9pbnQpCisgICAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPgorICAgIEFM
V0FZU19JTkxJTkUgdm9pZCBpbnRlcm5hbFJlc3RvcmVTdGF0ZShUcmVlQnVpbGRlciYgY29udGV4
dCwgY29uc3QgU2F2ZVBvaW50JiBzYXZlUG9pbnQpCiAgICAgewogICAgICAgICByZXN0b3JlTGV4
ZXJTdGF0ZShzYXZlUG9pbnQubGV4ZXJTdGF0ZSk7Ci0gICAgICAgIHJlc3RvcmVQYXJzZXJTdGF0
ZShzYXZlUG9pbnQucGFyc2VyU3RhdGUpOworICAgICAgICByZXN0b3JlUGFyc2VyU3RhdGUoY29u
dGV4dCwgc2F2ZVBvaW50LnBhcnNlclN0YXRlKTsKICAgICB9CiAKLSAgICBBTFdBWVNfSU5MSU5F
IHZvaWQgcmVzdG9yZVNhdmVQb2ludFdpdGhFcnJvcihjb25zdCBTYXZlUG9pbnRXaXRoRXJyb3Im
IHNhdmVQb2ludCkKKyAgICB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+CisgICAgQUxXQVlT
X0lOTElORSB2b2lkIHJlc3RvcmVTYXZlUG9pbnRXaXRoRXJyb3IoVHJlZUJ1aWxkZXImIGNvbnRl
eHQsIGNvbnN0IFNhdmVQb2ludFdpdGhFcnJvciYgc2F2ZVBvaW50KQogICAgIHsKLSAgICAgICAg
aW50ZXJuYWxSZXN0b3JlU3RhdGUoc2F2ZVBvaW50KTsKKyAgICAgICAgaW50ZXJuYWxSZXN0b3Jl
U3RhdGUoY29udGV4dCwgc2F2ZVBvaW50KTsKICAgICAgICAgbV9sZXhlci0+c2V0U2F3RXJyb3Io
c2F2ZVBvaW50LmxleGVyRXJyb3IpOwogICAgICAgICBtX2xleGVyLT5zZXRFcnJvck1lc3NhZ2Uo
c2F2ZVBvaW50LmxleGVyRXJyb3JNZXNzYWdlKTsKICAgICAgICAgbV9lcnJvck1lc3NhZ2UgPSBz
YXZlUG9pbnQucGFyc2VyRXJyb3JNZXNzYWdlOwogICAgIH0KIAotICAgIEFMV0FZU19JTkxJTkUg
dm9pZCByZXN0b3JlU2F2ZVBvaW50KGNvbnN0IFNhdmVQb2ludCYgc2F2ZVBvaW50KQorICAgIHRl
bXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4KKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgcmVzdG9y
ZVNhdmVQb2ludChUcmVlQnVpbGRlciYgY29udGV4dCwgY29uc3QgU2F2ZVBvaW50JiBzYXZlUG9p
bnQpCiAgICAgewotICAgICAgICBpbnRlcm5hbFJlc3RvcmVTdGF0ZShzYXZlUG9pbnQpOworICAg
ICAgICBpbnRlcm5hbFJlc3RvcmVTdGF0ZShjb250ZXh0LCBzYXZlUG9pbnQpOwogICAgICAgICBt
X2Vycm9yTWVzc2FnZSA9IFN0cmluZygpOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXJUb2tlbnMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9wYXJzZXIvUGFyc2VyVG9rZW5zLmgKaW5kZXggMzBkMmUyZGVhNGMxMTZmNzcyMzMwZWQ5NDhk
YjkwZGI3YjE0YTUzYi4uZGJkNmQ2NTE0Y2ZiY2ZlMjMxMzY1M2M4NmUxYzRhZTAzM2I4ZjI0MyAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXJUb2tlbnMuaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlclRva2Vucy5oCkBAIC0xOTcs
NyArMTk3LDEzIEBAIHN0YXRpY19hc3NlcnQoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFBPVykgPD0g
MHgwMGZmZmZmZlUsICJKU1Rva2VuVHlwZSBtdXN0IGJlIDI0CiAKIHN0cnVjdCBKU1RleHRQb3Np
dGlvbiB7CiAgICAgSlNUZXh0UG9zaXRpb24oKSA9IGRlZmF1bHQ7Ci0gICAgSlNUZXh0UG9zaXRp
b24oaW50IF9saW5lLCBpbnQgX29mZnNldCwgaW50IF9saW5lU3RhcnRPZmZzZXQpIDogbGluZShf
bGluZSksIG9mZnNldChfb2Zmc2V0KSwgbGluZVN0YXJ0T2Zmc2V0KF9saW5lU3RhcnRPZmZzZXQp
IHsgfQorICAgIEpTVGV4dFBvc2l0aW9uKGludCBfbGluZSwgaW50IF9vZmZzZXQsIGludCBfbGlu
ZVN0YXJ0T2Zmc2V0KSAKKyAgICAgICAgOiBsaW5lKF9saW5lKQorICAgICAgICAsIG9mZnNldChf
b2Zmc2V0KQorICAgICAgICAsIGxpbmVTdGFydE9mZnNldChfbGluZVN0YXJ0T2Zmc2V0KQorICAg
IHsgCisgICAgICAgIGNoZWNrQ29uc2lzdGVuY3koKTsKKyAgICB9CiAKICAgICBKU1RleHRQb3Np
dGlvbiBvcGVyYXRvcisoaW50IGFkanVzdG1lbnQpIGNvbnN0IHsgcmV0dXJuIEpTVGV4dFBvc2l0
aW9uKGxpbmUsIG9mZnNldCArIGFkanVzdG1lbnQsIGxpbmVTdGFydE9mZnNldCk7IH0KICAgICBK
U1RleHRQb3NpdGlvbiBvcGVyYXRvcisodW5zaWduZWQgYWRqdXN0bWVudCkgY29uc3QgeyByZXR1
cm4gKnRoaXMgKyBzdGF0aWNfY2FzdDxpbnQ+KGFkanVzdG1lbnQpOyB9CkBAIC0yMTgsMTAgKzIy
NCwxOCBAQCBzdHJ1Y3QgSlNUZXh0UG9zaXRpb24gewogICAgIH0KIAogICAgIGludCBjb2x1bW4o
KSBjb25zdCB7IHJldHVybiBvZmZzZXQgLSBsaW5lU3RhcnRPZmZzZXQ7IH0KKyAgICB2b2lkIGNo
ZWNrQ29uc2lzdGVuY3koKQorICAgIHsKKyAgICAgICAgLy8gRklYTUU6IFdlIHNob3VsZCB0ZXN0
IEFTU0VSVChvZmZzZXQgPj0gbGluZVN0YXJ0T2Zmc2V0KTsgYnV0IHRoYXQgYnJlYWtzIGEgbG90
IG9mIHRlc3RzLgorICAgICAgICBBU1NFUlQobGluZSA+PSAwKTsKKyAgICAgICAgQVNTRVJUKG9m
ZnNldCA+PSAwKTsKKyAgICAgICAgQVNTRVJUKGxpbmVTdGFydE9mZnNldCA+PSAwKTsKKyAgICB9
CiAKLSAgICBpbnQgbGluZSB7IDAgfTsKLSAgICBpbnQgb2Zmc2V0IHsgMCB9OwotICAgIGludCBs
aW5lU3RhcnRPZmZzZXQgeyAwIH07CisgICAgLy8gRklYTUU6IHRoZXNlIHNob3VsZCBiZSB1bnNp
Z25lZC4KKyAgICBpbnQgbGluZSB7IC0xIH07CisgICAgaW50IG9mZnNldCB7IC0xIH07CisgICAg
aW50IGxpbmVTdGFydE9mZnNldCB7IC0xIH07CiB9OwogCiB1bmlvbiBKU1Rva2VuRGF0YSB7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1N5bnRheENoZWNrZXIuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvU3ludGF4Q2hlY2tlci5oCmluZGV4IDY1Njc4
MWM3NDcxMWZlZjYzYThjNmFkYzY3YmM5NTI2ZTA0ODczMmIuLjU1ZDM2Mzg1ZTdhNThhZDQ3ZmM0
M2M2ZDI3NDg5M2I4M2FmOGZhOTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9w
YXJzZXIvU3ludGF4Q2hlY2tlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIv
U3ludGF4Q2hlY2tlci5oCkBAIC0zMzQsOSArMzM0LDExIEBAIHB1YmxpYzoKICAgICBpbnQgdW5h
cnlUb2tlblN0YWNrTGFzdFR5cGUoaW50JikgeyByZXR1cm4gbV90b3BVbmFyeVRva2VuOyB9CiAg
ICAgSlNUZXh0UG9zaXRpb24gdW5hcnlUb2tlblN0YWNrTGFzdFN0YXJ0KGludCYpIHsgcmV0dXJu
IEpTVGV4dFBvc2l0aW9uKDAsIDAsIDApOyB9CiAgICAgdm9pZCB1bmFyeVRva2VuU3RhY2tSZW1v
dmVMYXN0KGludCYgc3RhY2tEZXB0aCkgeyBzdGFja0RlcHRoID0gMDsgfQorICAgIGludCB1bmFy
eVRva2VuU3RhY2tEZXB0aCgpIGNvbnN0IHsgcmV0dXJuIDA7IH0KKyAgICB2b2lkIHNldFVuYXJ5
VG9rZW5TdGFja0RlcHRoKGludCkgeyB9CiAgICAgCi0gICAgdm9pZCBhc3NpZ25tZW50U3RhY2tB
cHBlbmQoaW50LCBpbnQsIGludCwgaW50LCBpbnQsIE9wZXJhdG9yKSB7IH0KLSAgICBpbnQgY3Jl
YXRlQXNzaWdubWVudChjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBpbnQsIGludCwgaW50LCBpbnQs
IGludCkgeyBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOyByZXR1cm4gQXNzaWdubWVudEV4
cHI7IH0KKyAgICB2b2lkIGFzc2lnbm1lbnRTdGFja0FwcGVuZChpbnQmIGFzc2lnbm1lbnRTdGFj
a0RlcHRoLCBpbnQsIGludCwgaW50LCBpbnQsIE9wZXJhdG9yKSB7IGhhc0Fzc2lnbmVtZW50cyA9
IDE7IH0KKyAgICBpbnQgY3JlYXRlQXNzaWdubWVudChjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBp
bnQmIGFzc2lnbm1lbnRTdGFja0RlcHRoLCBpbnQsIGludCwgaW50LCBpbnQpIHsgaGFzQXNzaWdu
ZW1lbnRzID0gMDsgcmV0dXJuIEFzc2lnbm1lbnRFeHByOyB9CiAgICAgY29uc3QgSWRlbnRpZmll
ciogZ2V0TmFtZShjb25zdCBQcm9wZXJ0eSYgcHJvcGVydHkpIGNvbnN0IHsgcmV0dXJuIHByb3Bl
cnR5Lm5hbWU7IH0KICAgICBQcm9wZXJ0eU5vZGU6OlR5cGUgZ2V0VHlwZShjb25zdCBQcm9wZXJ0
eSYgcHJvcGVydHkpIGNvbnN0IHsgcmV0dXJuIHByb3BlcnR5LnR5cGU7IH0KICAgICBib29sIGlz
UmVzb2x2ZShFeHByZXNzaW9uVHlwZSBleHByKSBjb25zdCB7IHJldHVybiBleHByID09IFJlc29s
dmVFeHByIHx8IGV4cHIgPT0gUmVzb2x2ZUV2YWxFeHByOyB9CkBAIC00MzUsNyArNDM3LDcgQEAg
cHVibGljOgogICAgIGludCBlbmRPZmZzZXQoaW50KSB7IHJldHVybiAwOyB9CiAgICAgdm9pZCBz
ZXRTdGFydE9mZnNldChpbnQsIGludCkgeyB9CiAKLSAgICBKU1RleHRQb3NpdGlvbiBicmVha3Bv
aW50TG9jYXRpb24oaW50KSB7IHJldHVybiBKU1RleHRQb3NpdGlvbigtMSwgMCwgMCk7IH0KKyAg
ICBKU1RleHRQb3NpdGlvbiBicmVha3BvaW50TG9jYXRpb24oaW50KSB7IHJldHVybiB7IH07IH0K
IAogICAgIHZvaWQgcHJvcGFnYXRlQXJndW1lbnRzVXNlKCkgeyB9CiAKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2pzL2Z1bmN0aW9uLXRvU3RyaW5nLXBhcmVudGhlc2VzLWV4cGVjdGVkLnR4dCBi
L0xheW91dFRlc3RzL2pzL2Z1bmN0aW9uLXRvU3RyaW5nLXBhcmVudGhlc2VzLWV4cGVjdGVkLnR4
dAppbmRleCA4ZjRhMDg4MDRiNWQ4NzcyYWM0ZjJlYzJhZTc1MzI2OWEwZTU1NGE1Li40ZTFmMGNi
Y2Y1YWZlZTI0ZmNkYTdmZDVhODMxZDc4NTI0ODQyYzczIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9qcy9mdW5jdGlvbi10b1N0cmluZy1wYXJlbnRoZXNlcy1leHBlY3RlZC50eHQKKysrIGIvTGF5
b3V0VGVzdHMvanMvZnVuY3Rpb24tdG9TdHJpbmctcGFyZW50aGVzZXMtZXhwZWN0ZWQudHh0CkBA
IC0yMTEsNyArMjExLDcgQEAgUEFTUyBjb21waWxlQW5kU2VyaWFsaXplKCdhIHx8IGIgfHwgYycp
IGlzICdhIHx8IGIgfHwgYycKIFBBU1MgY29tcGlsZUFuZFNlcmlhbGl6ZSgnKGEgfHwgYikgfHwg
YycpIGlzICcoYSB8fCBiKSB8fCBjJwogUEFTUyBjb21waWxlQW5kU2VyaWFsaXplKCdhIHx8IChi
IHx8IGMpJykgaXMgJ2EgfHwgKGIgfHwgYyknCiBQQVNTIGNvbXBpbGVBbmRTZXJpYWxpemUoJ2Eg
PSBiID0gYycpIGlzICdhID0gYiA9IGMnCi1QQVNTIGNvbXBpbGVBbmRTZXJpYWxpemUoJyhhID0g
YikgPSBjJykgaXMgJyhhID0gYikgPSBjJworUEFTUyBjb21waWxlQW5kU2VyaWFsaXplKCIoYSA9
IGIpID0gYyIpIHRocmV3IGV4Y2VwdGlvbiBTeW50YXhFcnJvcjogTGVmdCBzaWRlIG9mIGFzc2ln
bm1lbnQgaXMgbm90IGEgcmVmZXJlbmNlLi4KIFBBU1MgY29tcGlsZUFuZFNlcmlhbGl6ZSgnYSA9
IChiID0gYyknKSBpcyAnYSA9IChiID0gYyknCiBQQVNTIGNvbXBpbGVBbmRTZXJpYWxpemUoJ2Eg
PSBiICsgYycpIGlzICdhID0gYiArIGMnCiBQQVNTIGNvbXBpbGVBbmRTZXJpYWxpemUoJyhhID0g
YikgKyBjJykgaXMgJyhhID0gYikgKyBjJwpAQCAtMjIwLDEwICsyMjAsMTAgQEAgUEFTUyBjb21w
aWxlQW5kU2VyaWFsaXplKCdhICsgYiA9IGMnKSB0aHJldyBleGNlcHRpb24gU3ludGF4RXJyb3I6
IExlZnQgaGFuZCBzaWQKIFBBU1MgY29tcGlsZUFuZFNlcmlhbGl6ZSgnKGEgKyBiKSA9IGMnKSB0
aHJldyBleGNlcHRpb24gU3ludGF4RXJyb3I6IExlZnQgc2lkZSBvZiBhc3NpZ25tZW50IGlzIG5v
dCBhIHJlZmVyZW5jZS4uCiBQQVNTIGNvbXBpbGVBbmRTZXJpYWxpemUoJ2EgKyAoYiA9IGMpJykg
aXMgJ2EgKyAoYiA9IGMpJwogUEFTUyBjb21waWxlQW5kU2VyaWFsaXplKCdhICo9IGIgKj0gYycp
IGlzICdhICo9IGIgKj0gYycKLVBBU1MgY29tcGlsZUFuZFNlcmlhbGl6ZSgnKGEgKj0gYikgKj0g
YycpIGlzICcoYSAqPSBiKSAqPSBjJworUEFTUyBjb21waWxlQW5kU2VyaWFsaXplKCIoYSAqPSBi
KSAqPSBjIikgdGhyZXcgZXhjZXB0aW9uIFN5bnRheEVycm9yOiBMZWZ0IHNpZGUgb2YgYXNzaWdu
bWVudCBpcyBub3QgYSByZWZlcmVuY2UuLgogUEFTUyBjb21waWxlQW5kU2VyaWFsaXplKCdhICo9
IChiICo9IGMpJykgaXMgJ2EgKj0gKGIgKj0gYyknCiBQQVNTIGNvbXBpbGVBbmRTZXJpYWxpemUo
J2EgPSBiICo9IGMnKSBpcyAnYSA9IGIgKj0gYycKLVBBU1MgY29tcGlsZUFuZFNlcmlhbGl6ZSgn
KGEgPSBiKSAqPSBjJykgaXMgJyhhID0gYikgKj0gYycKK1BBU1MgY29tcGlsZUFuZFNlcmlhbGl6
ZSgiKGEgPSBiKSAqPSBjIikgdGhyZXcgZXhjZXB0aW9uIFN5bnRheEVycm9yOiBMZWZ0IHNpZGUg
b2YgYXNzaWdubWVudCBpcyBub3QgYSByZWZlcmVuY2UuLgogUEFTUyBjb21waWxlQW5kU2VyaWFs
aXplKCdhID0gKGIgKj0gYyknKSBpcyAnYSA9IChiICo9IGMpJwogUEFTUyBjb21waWxlQW5kU2Vy
aWFsaXplKCdhICo9IGIgKyBjJykgaXMgJ2EgKj0gYiArIGMnCiBQQVNTIGNvbXBpbGVBbmRTZXJp
YWxpemUoJyhhICo9IGIpICsgYycpIGlzICcoYSAqPSBiKSArIGMnCkBAIC0yMzIsMTAgKzIzMiwx
MCBAQCBQQVNTIGNvbXBpbGVBbmRTZXJpYWxpemUoJ2EgKyBiICo9IGMnKSB0aHJldyBleGNlcHRp
b24gU3ludGF4RXJyb3I6IExlZnQgaGFuZCBzaQogUEFTUyBjb21waWxlQW5kU2VyaWFsaXplKCco
YSArIGIpICo9IGMnKSB0aHJldyBleGNlcHRpb24gU3ludGF4RXJyb3I6IExlZnQgc2lkZSBvZiBh
c3NpZ25tZW50IGlzIG5vdCBhIHJlZmVyZW5jZS4uCiBQQVNTIGNvbXBpbGVBbmRTZXJpYWxpemUo
J2EgKyAoYiAqPSBjKScpIGlzICdhICsgKGIgKj0gYyknCiBQQVNTIGNvbXBpbGVBbmRTZXJpYWxp
emUoJ2EgLz0gYiAvPSBjJykgaXMgJ2EgLz0gYiAvPSBjJwotUEFTUyBjb21waWxlQW5kU2VyaWFs
aXplKCcoYSAvPSBiKSAvPSBjJykgaXMgJyhhIC89IGIpIC89IGMnCitQQVNTIGNvbXBpbGVBbmRT
ZXJpYWxpemUoIihhIC89IGIpIC89IGMiKSB0aHJldyBleGNlcHRpb24gU3ludGF4RXJyb3I6IExl
ZnQgc2lkZSBvZiBhc3NpZ25tZW50IGlzIG5vdCBhIHJlZmVyZW5jZS4uCiBQQVNTIGNvbXBpbGVB
bmRTZXJpYWxpemUoJ2EgLz0gKGIgLz0gYyknKSBpcyAnYSAvPSAoYiAvPSBjKScKIFBBU1MgY29t
cGlsZUFuZFNlcmlhbGl6ZSgnYSA9IGIgLz0gYycpIGlzICdhID0gYiAvPSBjJwotUEFTUyBjb21w
aWxlQW5kU2VyaWFsaXplKCcoYSA9IGIpIC89IGMnKSBpcyAnKGEgPSBiKSAvPSBjJworUEFTUyBj
b21waWxlQW5kU2VyaWFsaXplKCIoYSA9IGIpIC89IGMiKSB0aHJldyBleGNlcHRpb24gU3ludGF4
RXJyb3I6IExlZnQgc2lkZSBvZiBhc3NpZ25tZW50IGlzIG5vdCBhIHJlZmVyZW5jZS4uCiBQQVNT
IGNvbXBpbGVBbmRTZXJpYWxpemUoJ2EgPSAoYiAvPSBjKScpIGlzICdhID0gKGIgLz0gYyknCiBQ
QVNTIGNvbXBpbGVBbmRTZXJpYWxpemUoJ2EgLz0gYiArIGMnKSBpcyAnYSAvPSBiICsgYycKIFBB
U1MgY29tcGlsZUFuZFNlcmlhbGl6ZSgnKGEgLz0gYikgKyBjJykgaXMgJyhhIC89IGIpICsgYycK
QEAgLTI0NCwxMCArMjQ0LDEwIEBAIFBBU1MgY29tcGlsZUFuZFNlcmlhbGl6ZSgnYSArIGIgLz0g
YycpIHRocmV3IGV4Y2VwdGlvbiBTeW50YXhFcnJvcjogTGVmdCBoYW5kIHNpCiBQQVNTIGNvbXBp
bGVBbmRTZXJpYWxpemUoJyhhICsgYikgLz0gYycpIHRocmV3IGV4Y2VwdGlvbiBTeW50YXhFcnJv
cjogTGVmdCBzaWRlIG9mIGFzc2lnbm1lbnQgaXMgbm90IGEgcmVmZXJlbmNlLi4KIFBBU1MgY29t
cGlsZUFuZFNlcmlhbGl6ZSgnYSArIChiIC89IGMpJykgaXMgJ2EgKyAoYiAvPSBjKScKIFBBU1Mg
Y29tcGlsZUFuZFNlcmlhbGl6ZSgnYSAlPSBiICU9IGMnKSBpcyAnYSAlPSBiICU9IGMnCi1QQVNT
IGNvbXBpbGVBbmRTZXJpYWxpemUoJyhhICU9IGIpICU9IGMnKSBpcyAnKGEgJT0gYikgJT0gYycK
K1BBU1MgY29tcGlsZUFuZFNlcmlhbGl6ZSgiKGEgJT0gYikgJT0gYyIpIHRocmV3IGV4Y2VwdGlv
biBTeW50YXhFcnJvcjogTGVmdCBzaWRlIG9mIGFzc2lnbm1lbnQgaXMgbm90IGEgcmVmZXJlbmNl
Li4KIFBBU1MgY29tcGlsZUFuZFNlcmlhbGl6ZSgnYSAlPSAoYiAlPSBjKScpIGlzICdhICU9IChi
ICU9IGMpJwogUEFTUyBjb21waWxlQW5kU2VyaWFsaXplKCdhID0gYiAlPSBjJykgaXMgJ2EgPSBi
ICU9IGMnCi1QQVNTIGNvbXBpbGVBbmRTZXJpYWxpemUoJyhhID0gYikgJT0gYycpIGlzICcoYSA9
IGIpICU9IGMnCitQQVNTIGNvbXBpbGVBbmRTZXJpYWxpemUoIihhID0gYikgJT0gYyIpIHRocmV3
IGV4Y2VwdGlvbiBTeW50YXhFcnJvcjogTGVmdCBzaWRlIG9mIGFzc2lnbm1lbnQgaXMgbm90IGEg
cmVmZXJlbmNlLi4KIFBBU1MgY29tcGlsZUFuZFNlcmlhbGl6ZSgnYSA9IChiICU9IGMpJykgaXMg
J2EgPSAoYiAlPSBjKScKIFBBU1MgY29tcGlsZUFuZFNlcmlhbGl6ZSgnYSAlPSBiICsgYycpIGlz
ICdhICU9IGIgKyBjJwogUEFTUyBjb21waWxlQW5kU2VyaWFsaXplKCcoYSAlPSBiKSArIGMnKSBp
cyAnKGEgJT0gYikgKyBjJwpAQCAtMjU2LDEwICsyNTYsMTAgQEAgUEFTUyBjb21waWxlQW5kU2Vy
aWFsaXplKCdhICsgYiAlPSBjJykgdGhyZXcgZXhjZXB0aW9uIFN5bnRheEVycm9yOiBMZWZ0IGhh
bmQgc2kKIFBBU1MgY29tcGlsZUFuZFNlcmlhbGl6ZSgnKGEgKyBiKSAlPSBjJykgdGhyZXcgZXhj
ZXB0aW9uIFN5bnRheEVycm9yOiBMZWZ0IHNpZGUgb2YgYXNzaWdubWVudCBpcyBub3QgYSByZWZl
cmVuY2UuLgogUEFTUyBjb21waWxlQW5kU2VyaWFsaXplKCdhICsgKGIgJT0gYyknKSBpcyAnYSAr
IChiICU9IGMpJwogUEFTUyBjb21waWxlQW5kU2VyaWFsaXplKCdhICs9IGIgKz0gYycpIGlzICdh
ICs9IGIgKz0gYycKLVBBU1MgY29tcGlsZUFuZFNlcmlhbGl6ZSgnKGEgKz0gYikgKz0gYycpIGlz
ICcoYSArPSBiKSArPSBjJworUEFTUyBjb21waWxlQW5kU2VyaWFsaXplKCIoYSArPSBiKSArPSBj
IikgdGhyZXcgZXhjZXB0aW9uIFN5bnRheEVycm9yOiBMZWZ0IHNpZGUgb2YgYXNzaWdubWVudCBp
cyBub3QgYSByZWZlcmVuY2UuLgogUEFTUyBjb21waWxlQW5kU2VyaWFsaXplKCdhICs9IChiICs9
IGMpJykgaXMgJ2EgKz0gKGIgKz0gYyknCiBQQVNTIGNvbXBpbGVBbmRTZXJpYWxpemUoJ2EgPSBi
ICs9IGMnKSBpcyAnYSA9IGIgKz0gYycKLVBBU1MgY29tcGlsZUFuZFNlcmlhbGl6ZSgnKGEgPSBi
KSArPSBjJykgaXMgJyhhID0gYikgKz0gYycKK1BBU1MgY29tcGlsZUFuZFNlcmlhbGl6ZSgiKGEg
PSBiKSArPSBjIikgdGhyZXcgZXhjZXB0aW9uIFN5bnRheEVycm9yOiBMZWZ0IHNpZGUgb2YgYXNz
aWdubWVudCBpcyBub3QgYSByZWZlcmVuY2UuLgogUEFTUyBjb21waWxlQW5kU2VyaWFsaXplKCdh
ID0gKGIgKz0gYyknKSBpcyAnYSA9IChiICs9IGMpJwogUEFTUyBjb21waWxlQW5kU2VyaWFsaXpl
KCdhICs9IGIgKyBjJykgaXMgJ2EgKz0gYiArIGMnCiBQQVNTIGNvbXBpbGVBbmRTZXJpYWxpemUo
JyhhICs9IGIpICsgYycpIGlzICcoYSArPSBiKSArIGMnCkBAIC0yNjgsMTAgKzI2OCwxMCBAQCBQ
QVNTIGNvbXBpbGVBbmRTZXJpYWxpemUoJ2EgKyBiICs9IGMnKSB0aHJldyBleGNlcHRpb24gU3lu
dGF4RXJyb3I6IExlZnQgaGFuZCBzaQogUEFTUyBjb21waWxlQW5kU2VyaWFsaXplKCcoYSArIGIp
ICs9IGMnKSB0aHJldyBleGNlcHRpb24gU3ludGF4RXJyb3I6IExlZnQgc2lkZSBvZiBhc3NpZ25t
ZW50IGlzIG5vdCBhIHJlZmVyZW5jZS4uCiBQQVNTIGNvbXBpbGVBbmRTZXJpYWxpemUoJ2EgKyAo
YiArPSBjKScpIGlzICdhICsgKGIgKz0gYyknCiBQQVNTIGNvbXBpbGVBbmRTZXJpYWxpemUoJ2Eg
LT0gYiAtPSBjJykgaXMgJ2EgLT0gYiAtPSBjJwotUEFTUyBjb21waWxlQW5kU2VyaWFsaXplKCco
YSAtPSBiKSAtPSBjJykgaXMgJyhhIC09IGIpIC09IGMnCitQQVNTIGNvbXBpbGVBbmRTZXJpYWxp
emUoIihhIC09IGIpIC09IGMiKSB0aHJldyBleGNlcHRpb24gU3ludGF4RXJyb3I6IExlZnQgc2lk
ZSBvZiBhc3NpZ25tZW50IGlzIG5vdCBhIHJlZmVyZW5jZS4uCiBQQVNTIGNvbXBpbGVBbmRTZXJp
YWxpemUoJ2EgLT0gKGIgLT0gYyknKSBpcyAnYSAtPSAoYiAtPSBjKScKIFBBU1MgY29tcGlsZUFu
ZFNlcmlhbGl6ZSgnYSA9IGIgLT0gYycpIGlzICdhID0gYiAtPSBjJwotUEFTUyBjb21waWxlQW5k
U2VyaWFsaXplKCcoYSA9IGIpIC09IGMnKSBpcyAnKGEgPSBiKSAtPSBjJworUEFTUyBjb21waWxl
QW5kU2VyaWFsaXplKCIoYSA9IGIpIC09IGMiKSB0aHJldyBleGNlcHRpb24gU3ludGF4RXJyb3I6
IExlZnQgc2lkZSBvZiBhc3NpZ25tZW50IGlzIG5vdCBhIHJlZmVyZW5jZS4uCiBQQVNTIGNvbXBp
bGVBbmRTZXJpYWxpemUoJ2EgPSAoYiAtPSBjKScpIGlzICdhID0gKGIgLT0gYyknCiBQQVNTIGNv
bXBpbGVBbmRTZXJpYWxpemUoJ2EgLT0gYiArIGMnKSBpcyAnYSAtPSBiICsgYycKIFBBU1MgY29t
cGlsZUFuZFNlcmlhbGl6ZSgnKGEgLT0gYikgKyBjJykgaXMgJyhhIC09IGIpICsgYycKQEAgLTI4
MCwxMCArMjgwLDEwIEBAIFBBU1MgY29tcGlsZUFuZFNlcmlhbGl6ZSgnYSArIGIgLT0gYycpIHRo
cmV3IGV4Y2VwdGlvbiBTeW50YXhFcnJvcjogTGVmdCBoYW5kIHNpCiBQQVNTIGNvbXBpbGVBbmRT
ZXJpYWxpemUoJyhhICsgYikgLT0gYycpIHRocmV3IGV4Y2VwdGlvbiBTeW50YXhFcnJvcjogTGVm
dCBzaWRlIG9mIGFzc2lnbm1lbnQgaXMgbm90IGEgcmVmZXJlbmNlLi4KIFBBU1MgY29tcGlsZUFu
ZFNlcmlhbGl6ZSgnYSArIChiIC09IGMpJykgaXMgJ2EgKyAoYiAtPSBjKScKIFBBU1MgY29tcGls
ZUFuZFNlcmlhbGl6ZSgnYSA8PD0gYiA8PD0gYycpIGlzICdhIDw8PSBiIDw8PSBjJwotUEFTUyBj
b21waWxlQW5kU2VyaWFsaXplKCcoYSA8PD0gYikgPDw9IGMnKSBpcyAnKGEgPDw9IGIpIDw8PSBj
JworUEFTUyBjb21waWxlQW5kU2VyaWFsaXplKCIoYSA8PD0gYikgPDw9IGMiKSB0aHJldyBleGNl
cHRpb24gU3ludGF4RXJyb3I6IExlZnQgc2lkZSBvZiBhc3NpZ25tZW50IGlzIG5vdCBhIHJlZmVy
ZW5jZS4uCiBQQVNTIGNvbXBpbGVBbmRTZXJpYWxpemUoJ2EgPDw9IChiIDw8PSBjKScpIGlzICdh
IDw8PSAoYiA8PD0gYyknCiBQQVNTIGNvbXBpbGVBbmRTZXJpYWxpemUoJ2EgPSBiIDw8PSBjJykg
aXMgJ2EgPSBiIDw8PSBjJwotUEFTUyBjb21waWxlQW5kU2VyaWFsaXplKCcoYSA9IGIpIDw8PSBj
JykgaXMgJyhhID0gYikgPDw9IGMnCitQQVNTIGNvbXBpbGVBbmRTZXJpYWxpemUoIihhID0gYikg
PDw9IGMiKSB0aHJldyBleGNlcHRpb24gU3ludGF4RXJyb3I6IExlZnQgc2lkZSBvZiBhc3NpZ25t
ZW50IGlzIG5vdCBhIHJlZmVyZW5jZS4uCiBQQVNTIGNvbXBpbGVBbmRTZXJpYWxpemUoJ2EgPSAo
YiA8PD0gYyknKSBpcyAnYSA9IChiIDw8PSBjKScKIFBBU1MgY29tcGlsZUFuZFNlcmlhbGl6ZSgn
YSA8PD0gYiArIGMnKSBpcyAnYSA8PD0gYiArIGMnCiBQQVNTIGNvbXBpbGVBbmRTZXJpYWxpemUo
JyhhIDw8PSBiKSArIGMnKSBpcyAnKGEgPDw9IGIpICsgYycKQEAgLTI5MiwxMCArMjkyLDEwIEBA
IFBBU1MgY29tcGlsZUFuZFNlcmlhbGl6ZSgnYSArIGIgPDw9IGMnKSB0aHJldyBleGNlcHRpb24g
U3ludGF4RXJyb3I6IExlZnQgaGFuZCBzCiBQQVNTIGNvbXBpbGVBbmRTZXJpYWxpemUoJyhhICsg
YikgPDw9IGMnKSB0aHJldyBleGNlcHRpb24gU3ludGF4RXJyb3I6IExlZnQgc2lkZSBvZiBhc3Np
Z25tZW50IGlzIG5vdCBhIHJlZmVyZW5jZS4uCiBQQVNTIGNvbXBpbGVBbmRTZXJpYWxpemUoJ2Eg
KyAoYiA8PD0gYyknKSBpcyAnYSArIChiIDw8PSBjKScKIFBBU1MgY29tcGlsZUFuZFNlcmlhbGl6
ZSgnYSA+Pj0gYiA+Pj0gYycpIGlzICdhID4+PSBiID4+PSBjJwotUEFTUyBjb21waWxlQW5kU2Vy
aWFsaXplKCcoYSA+Pj0gYikgPj49IGMnKSBpcyAnKGEgPj49IGIpID4+PSBjJworUEFTUyBjb21w
aWxlQW5kU2VyaWFsaXplKCIoYSA+Pj0gYikgPj49IGMiKSB0aHJldyBleGNlcHRpb24gU3ludGF4
RXJyb3I6IExlZnQgc2lkZSBvZiBhc3NpZ25tZW50IGlzIG5vdCBhIHJlZmVyZW5jZS4uCiBQQVNT
IGNvbXBpbGVBbmRTZXJpYWxpemUoJ2EgPj49IChiID4+PSBjKScpIGlzICdhID4+PSAoYiA+Pj0g
YyknCiBQQVNTIGNvbXBpbGVBbmRTZXJpYWxpemUoJ2EgPSBiID4+PSBjJykgaXMgJ2EgPSBiID4+
PSBjJwotUEFTUyBjb21waWxlQW5kU2VyaWFsaXplKCcoYSA9IGIpID4+PSBjJykgaXMgJyhhID0g
YikgPj49IGMnCitQQVNTIGNvbXBpbGVBbmRTZXJpYWxpemUoIihhID0gYikgPj49IGMiKSB0aHJl
dyBleGNlcHRpb24gU3ludGF4RXJyb3I6IExlZnQgc2lkZSBvZiBhc3NpZ25tZW50IGlzIG5vdCBh
IHJlZmVyZW5jZS4uCiBQQVNTIGNvbXBpbGVBbmRTZXJpYWxpemUoJ2EgPSAoYiA+Pj0gYyknKSBp
cyAnYSA9IChiID4+PSBjKScKIFBBU1MgY29tcGlsZUFuZFNlcmlhbGl6ZSgnYSA+Pj0gYiArIGMn
KSBpcyAnYSA+Pj0gYiArIGMnCiBQQVNTIGNvbXBpbGVBbmRTZXJpYWxpemUoJyhhID4+PSBiKSAr
IGMnKSBpcyAnKGEgPj49IGIpICsgYycKQEAgLTMwNCwxMCArMzA0LDEwIEBAIFBBU1MgY29tcGls
ZUFuZFNlcmlhbGl6ZSgnYSArIGIgPj49IGMnKSB0aHJldyBleGNlcHRpb24gU3ludGF4RXJyb3I6
IExlZnQgaGFuZCBzCiBQQVNTIGNvbXBpbGVBbmRTZXJpYWxpemUoJyhhICsgYikgPj49IGMnKSB0
aHJldyBleGNlcHRpb24gU3ludGF4RXJyb3I6IExlZnQgc2lkZSBvZiBhc3NpZ25tZW50IGlzIG5v
dCBhIHJlZmVyZW5jZS4uCiBQQVNTIGNvbXBpbGVBbmRTZXJpYWxpemUoJ2EgKyAoYiA+Pj0gYykn
KSBpcyAnYSArIChiID4+PSBjKScKIFBBU1MgY29tcGlsZUFuZFNlcmlhbGl6ZSgnYSA+Pj49IGIg
Pj4+PSBjJykgaXMgJ2EgPj4+PSBiID4+Pj0gYycKLVBBU1MgY29tcGlsZUFuZFNlcmlhbGl6ZSgn
KGEgPj4+PSBiKSA+Pj49IGMnKSBpcyAnKGEgPj4+PSBiKSA+Pj49IGMnCitQQVNTIGNvbXBpbGVB
bmRTZXJpYWxpemUoIihhID4+Pj0gYikgPj4+PSBjIikgdGhyZXcgZXhjZXB0aW9uIFN5bnRheEVy
cm9yOiBMZWZ0IHNpZGUgb2YgYXNzaWdubWVudCBpcyBub3QgYSByZWZlcmVuY2UuLgogUEFTUyBj
b21waWxlQW5kU2VyaWFsaXplKCdhID4+Pj0gKGIgPj4+PSBjKScpIGlzICdhID4+Pj0gKGIgPj4+
PSBjKScKIFBBU1MgY29tcGlsZUFuZFNlcmlhbGl6ZSgnYSA9IGIgPj4+PSBjJykgaXMgJ2EgPSBi
ID4+Pj0gYycKLVBBU1MgY29tcGlsZUFuZFNlcmlhbGl6ZSgnKGEgPSBiKSA+Pj49IGMnKSBpcyAn
KGEgPSBiKSA+Pj49IGMnCitQQVNTIGNvbXBpbGVBbmRTZXJpYWxpemUoIihhID0gYikgPj4+PSBj
IikgdGhyZXcgZXhjZXB0aW9uIFN5bnRheEVycm9yOiBMZWZ0IHNpZGUgb2YgYXNzaWdubWVudCBp
cyBub3QgYSByZWZlcmVuY2UuLgogUEFTUyBjb21waWxlQW5kU2VyaWFsaXplKCdhID0gKGIgPj4+
PSBjKScpIGlzICdhID0gKGIgPj4+PSBjKScKIFBBU1MgY29tcGlsZUFuZFNlcmlhbGl6ZSgnYSA+
Pj49IGIgKyBjJykgaXMgJ2EgPj4+PSBiICsgYycKIFBBU1MgY29tcGlsZUFuZFNlcmlhbGl6ZSgn
KGEgPj4+PSBiKSArIGMnKSBpcyAnKGEgPj4+PSBiKSArIGMnCkBAIC0zMTYsMTAgKzMxNiwxMCBA
QCBQQVNTIGNvbXBpbGVBbmRTZXJpYWxpemUoJ2EgKyBiID4+Pj0gYycpIHRocmV3IGV4Y2VwdGlv
biBTeW50YXhFcnJvcjogTGVmdCBoYW5kCiBQQVNTIGNvbXBpbGVBbmRTZXJpYWxpemUoJyhhICsg
YikgPj4+PSBjJykgdGhyZXcgZXhjZXB0aW9uIFN5bnRheEVycm9yOiBMZWZ0IHNpZGUgb2YgYXNz
aWdubWVudCBpcyBub3QgYSByZWZlcmVuY2UuLgogUEFTUyBjb21waWxlQW5kU2VyaWFsaXplKCdh
ICsgKGIgPj4+PSBjKScpIGlzICdhICsgKGIgPj4+PSBjKScKIFBBU1MgY29tcGlsZUFuZFNlcmlh
bGl6ZSgnYSAmPSBiICY9IGMnKSBpcyAnYSAmPSBiICY9IGMnCi1QQVNTIGNvbXBpbGVBbmRTZXJp
YWxpemUoJyhhICY9IGIpICY9IGMnKSBpcyAnKGEgJj0gYikgJj0gYycKK1BBU1MgY29tcGlsZUFu
ZFNlcmlhbGl6ZSgiKGEgJj0gYikgJj0gYyIpIHRocmV3IGV4Y2VwdGlvbiBTeW50YXhFcnJvcjog
TGVmdCBzaWRlIG9mIGFzc2lnbm1lbnQgaXMgbm90IGEgcmVmZXJlbmNlLi4KIFBBU1MgY29tcGls
ZUFuZFNlcmlhbGl6ZSgnYSAmPSAoYiAmPSBjKScpIGlzICdhICY9IChiICY9IGMpJwogUEFTUyBj
b21waWxlQW5kU2VyaWFsaXplKCdhID0gYiAmPSBjJykgaXMgJ2EgPSBiICY9IGMnCi1QQVNTIGNv
bXBpbGVBbmRTZXJpYWxpemUoJyhhID0gYikgJj0gYycpIGlzICcoYSA9IGIpICY9IGMnCitQQVNT
IGNvbXBpbGVBbmRTZXJpYWxpemUoIihhID0gYikgJj0gYyIpIHRocmV3IGV4Y2VwdGlvbiBTeW50
YXhFcnJvcjogTGVmdCBzaWRlIG9mIGFzc2lnbm1lbnQgaXMgbm90IGEgcmVmZXJlbmNlLi4KIFBB
U1MgY29tcGlsZUFuZFNlcmlhbGl6ZSgnYSA9IChiICY9IGMpJykgaXMgJ2EgPSAoYiAmPSBjKScK
IFBBU1MgY29tcGlsZUFuZFNlcmlhbGl6ZSgnYSAmPSBiICsgYycpIGlzICdhICY9IGIgKyBjJwog
UEFTUyBjb21waWxlQW5kU2VyaWFsaXplKCcoYSAmPSBiKSArIGMnKSBpcyAnKGEgJj0gYikgKyBj
JwpAQCAtMzI4LDEwICszMjgsMTAgQEAgUEFTUyBjb21waWxlQW5kU2VyaWFsaXplKCdhICsgYiAm
PSBjJykgdGhyZXcgZXhjZXB0aW9uIFN5bnRheEVycm9yOiBMZWZ0IGhhbmQgc2kKIFBBU1MgY29t
cGlsZUFuZFNlcmlhbGl6ZSgnKGEgKyBiKSAmPSBjJykgdGhyZXcgZXhjZXB0aW9uIFN5bnRheEVy
cm9yOiBMZWZ0IHNpZGUgb2YgYXNzaWdubWVudCBpcyBub3QgYSByZWZlcmVuY2UuLgogUEFTUyBj
b21waWxlQW5kU2VyaWFsaXplKCdhICsgKGIgJj0gYyknKSBpcyAnYSArIChiICY9IGMpJwogUEFT
UyBjb21waWxlQW5kU2VyaWFsaXplKCdhIF49IGIgXj0gYycpIGlzICdhIF49IGIgXj0gYycKLVBB
U1MgY29tcGlsZUFuZFNlcmlhbGl6ZSgnKGEgXj0gYikgXj0gYycpIGlzICcoYSBePSBiKSBePSBj
JworUEFTUyBjb21waWxlQW5kU2VyaWFsaXplKCIoYSBePSBiKSBePSBjIikgdGhyZXcgZXhjZXB0
aW9uIFN5bnRheEVycm9yOiBMZWZ0IHNpZGUgb2YgYXNzaWdubWVudCBpcyBub3QgYSByZWZlcmVu
Y2UuLgogUEFTUyBjb21waWxlQW5kU2VyaWFsaXplKCdhIF49IChiIF49IGMpJykgaXMgJ2EgXj0g
KGIgXj0gYyknCiBQQVNTIGNvbXBpbGVBbmRTZXJpYWxpemUoJ2EgPSBiIF49IGMnKSBpcyAnYSA9
IGIgXj0gYycKLVBBU1MgY29tcGlsZUFuZFNlcmlhbGl6ZSgnKGEgPSBiKSBePSBjJykgaXMgJyhh
ID0gYikgXj0gYycKK1BBU1MgY29tcGlsZUFuZFNlcmlhbGl6ZSgiKGEgPSBiKSBePSBjIikgdGhy
ZXcgZXhjZXB0aW9uIFN5bnRheEVycm9yOiBMZWZ0IHNpZGUgb2YgYXNzaWdubWVudCBpcyBub3Qg
YSByZWZlcmVuY2UuLgogUEFTUyBjb21waWxlQW5kU2VyaWFsaXplKCdhID0gKGIgXj0gYyknKSBp
cyAnYSA9IChiIF49IGMpJwogUEFTUyBjb21waWxlQW5kU2VyaWFsaXplKCdhIF49IGIgKyBjJykg
aXMgJ2EgXj0gYiArIGMnCiBQQVNTIGNvbXBpbGVBbmRTZXJpYWxpemUoJyhhIF49IGIpICsgYycp
IGlzICcoYSBePSBiKSArIGMnCkBAIC0zNDAsMTAgKzM0MCwxMCBAQCBQQVNTIGNvbXBpbGVBbmRT
ZXJpYWxpemUoJ2EgKyBiIF49IGMnKSB0aHJldyBleGNlcHRpb24gU3ludGF4RXJyb3I6IExlZnQg
aGFuZCBzaQogUEFTUyBjb21waWxlQW5kU2VyaWFsaXplKCcoYSArIGIpIF49IGMnKSB0aHJldyBl
eGNlcHRpb24gU3ludGF4RXJyb3I6IExlZnQgc2lkZSBvZiBhc3NpZ25tZW50IGlzIG5vdCBhIHJl
ZmVyZW5jZS4uCiBQQVNTIGNvbXBpbGVBbmRTZXJpYWxpemUoJ2EgKyAoYiBePSBjKScpIGlzICdh
ICsgKGIgXj0gYyknCiBQQVNTIGNvbXBpbGVBbmRTZXJpYWxpemUoJ2EgfD0gYiB8PSBjJykgaXMg
J2EgfD0gYiB8PSBjJwotUEFTUyBjb21waWxlQW5kU2VyaWFsaXplKCcoYSB8PSBiKSB8PSBjJykg
aXMgJyhhIHw9IGIpIHw9IGMnCitQQVNTIGNvbXBpbGVBbmRTZXJpYWxpemUoIihhIHw9IGIpIHw9
IGMiKSB0aHJldyBleGNlcHRpb24gU3ludGF4RXJyb3I6IExlZnQgc2lkZSBvZiBhc3NpZ25tZW50
IGlzIG5vdCBhIHJlZmVyZW5jZS4uCiBQQVNTIGNvbXBpbGVBbmRTZXJpYWxpemUoJ2EgfD0gKGIg
fD0gYyknKSBpcyAnYSB8PSAoYiB8PSBjKScKIFBBU1MgY29tcGlsZUFuZFNlcmlhbGl6ZSgnYSA9
IGIgfD0gYycpIGlzICdhID0gYiB8PSBjJwotUEFTUyBjb21waWxlQW5kU2VyaWFsaXplKCcoYSA9
IGIpIHw9IGMnKSBpcyAnKGEgPSBiKSB8PSBjJworUEFTUyBjb21waWxlQW5kU2VyaWFsaXplKCIo
YSA9IGIpIHw9IGMiKSB0aHJldyBleGNlcHRpb24gU3ludGF4RXJyb3I6IExlZnQgc2lkZSBvZiBh
c3NpZ25tZW50IGlzIG5vdCBhIHJlZmVyZW5jZS4uCiBQQVNTIGNvbXBpbGVBbmRTZXJpYWxpemUo
J2EgPSAoYiB8PSBjKScpIGlzICdhID0gKGIgfD0gYyknCiBQQVNTIGNvbXBpbGVBbmRTZXJpYWxp
emUoJ2EgfD0gYiArIGMnKSBpcyAnYSB8PSBiICsgYycKIFBBU1MgY29tcGlsZUFuZFNlcmlhbGl6
ZSgnKGEgfD0gYikgKyBjJykgaXMgJyhhIHw9IGIpICsgYycKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2pzL3NjcmlwdC10ZXN0cy9mdW5jdGlvbi10b1N0cmluZy1wYXJlbnRoZXNlcy5qcyBiL0xh
eW91dFRlc3RzL2pzL3NjcmlwdC10ZXN0cy9mdW5jdGlvbi10b1N0cmluZy1wYXJlbnRoZXNlcy5q
cwppbmRleCA4MWNlMTNmMTZiY2RhYTA3YTQ0ZGRhNDIzZWYzZTk5YzNkMWI5YzA3Li5iMGZkMzIy
NjI1MzE4ODNkODAxN2FhYjU4MzZmZjgxMzk0ODQ2MjU0IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9qcy9zY3JpcHQtdGVzdHMvZnVuY3Rpb24tdG9TdHJpbmctcGFyZW50aGVzZXMuanMKKysrIGIv
TGF5b3V0VGVzdHMvanMvc2NyaXB0LXRlc3RzL2Z1bmN0aW9uLXRvU3RyaW5nLXBhcmVudGhlc2Vz
LmpzCkBAIC00NywxMCArNDcsMTMgQEAgZnVuY3Rpb24gdGVzdExlZnRBc3NvY2lhdGl2ZVNhbWUo
b3BBLCBvcEIpCiAgICAgdGVzdEtlZXBQYXJlbnRoZXNlcygiYSAiICsgb3BBICsgIiAoYiAiICsg
b3BCICsgIiBjKSIpOwogfQogCi1mdW5jdGlvbiB0ZXN0UmlnaHRBc3NvY2lhdGl2ZVNhbWUob3BB
LCBvcEIpCitmdW5jdGlvbiB0ZXN0UmlnaHRBc3NvY2lhdGl2ZVNhbWUob3BBLCBvcEIsIGxlZnRQ
YXJlbnNUaHJvd3MgPSBmYWxzZSkKIHsKICAgICB0ZXN0S2VlcFBhcmVudGhlc2VzKCJhICIgKyBv
cEEgKyAiIGIgIiArIG9wQiArICIgYyIpOwotICAgIHRlc3RLZWVwUGFyZW50aGVzZXMoIihhICIg
KyBvcEEgKyAiIGIpICIgKyBvcEIgKyAiIGMiKTsKKyAgICBpZiAobGVmdFBhcmVuc1Rocm93cykK
KyAgICAgICAgc2hvdWxkVGhyb3coYGNvbXBpbGVBbmRTZXJpYWxpemUoIihhICR7b3BBfSBiKSAk
e29wQn0gYyIpYCk7CisgICAgZWxzZQorICAgICAgICB0ZXN0S2VlcFBhcmVudGhlc2VzKCIoYSAi
ICsgb3BBICsgIiBiKSAiICsgb3BCICsgIiBjIik7CiAgICAgdGVzdE9wdGlvbmFsUGFyZW50aGVz
ZXMoImEgIiArIG9wQSArICIgKGIgIiArIG9wQiArICIgYykiKTsKIH0KIApAQCAtOTksOSArMTAy
LDkgQEAgdmFyIGFzc2lnbm1lbnRPcGVyYXRvcnMgPSBbICI9IiwgIio9IiwgIi89IiAsICIlPSIs
ICIrPSIsICItPSIsICI8PD0iLCAiPj49IiwgIj4KIAogZm9yIChpID0gMDsgaSA8IGFzc2lnbm1l
bnRPcGVyYXRvcnMubGVuZ3RoOyArK2kpIHsKICAgICB2YXIgb3AgPSBhc3NpZ25tZW50T3BlcmF0
b3JzW2ldOwotICAgIHRlc3RSaWdodEFzc29jaWF0aXZlU2FtZShvcCwgb3ApOworICAgIHRlc3RS
aWdodEFzc29jaWF0aXZlU2FtZShvcCwgb3AsIHRydWUpOwogICAgIGlmIChpICE9IDApCi0gICAg
ICAgIHRlc3RSaWdodEFzc29jaWF0aXZlU2FtZSgiPSIsIG9wKTsKKyAgICAgICAgdGVzdFJpZ2h0
QXNzb2NpYXRpdmVTYW1lKCI9Iiwgb3AsIHRydWUpOwogICAgIHRlc3RMb3dlckZpcnN0KG9wLCAi
KyIpOwogICAgIHNob3VsZFRocm93KCJjb21waWxlQW5kU2VyaWFsaXplKCdhICsgYiAiICsgb3Ag
KyAiIGMnKSIpOwogICAgIHNob3VsZFRocm93KCJjb21waWxlQW5kU2VyaWFsaXplKCcoYSArIGIp
ICIgKyBvcCArICIgYycpIik7CmRpZmYgLS1naXQgYS9KU1Rlc3RzL0NoYW5nZUxvZyBiL0pTVGVz
dHMvQ2hhbmdlTG9nCmluZGV4IDllMjRiYWEyNTIyNmVmYTdjYzdhNDJkNTNkZTU0MjM1YjY2YWQ1
YzIuLjZmOWNiYjQ3YzRlMzlmNWM4ODg2ZmMxMDc4NzViNjEyMWJjNzNkMTkgMTAwNjQ0Ci0tLSBh
L0pTVGVzdHMvQ2hhbmdlTG9nCisrKyBiL0pTVGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQg
QEAKKzIwMjAtMDEtMjkgIEtlaXRoIE1pbGxlciAgPGtlaXRoX21pbGxlckBhcHBsZS5jb20+CisK
KyAgICAgICAgUGFyc2VyIG5lZWRzIHRvIHJlc3RvcmUgdW5hcnkgc3RhY2sgc3RhdGUgd2hlbiBi
YWNrdHJhY2tpbmcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTIwNjk3MgorCisgICAgICAgIFJldmlld2VkIGJ5IFNhYW0gQmFyYXRpLgorCisgICAgICAg
ICogc3RyZXNzL3BhcnNlci1zYXZlLXN0YXRlLXJlbW92ZS1zdGFsZS1lbnRyaWVzLmpzOiBBZGRl
ZC4KKyAgICAgICAgKiBzdHJlc3MvcGFyc2VyLXN5bnRheC1jaGVja2VyLWFzc2lnbm1lbnRzLWFy
ZS1ub3QtcmVzb2x2ZS1leHByZXNzaW9ucy5qczogQWRkZWQuCisgICAgICAgIChmb28pOgorCiAy
MDIwLTAxLTI5ICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KIAogICAgICAgICBGaXgg
YmFkIGFzc2VydGlvbiBpbiBJbnRlcm5hbEZ1bmN0aW9uQWxsb2NhdGlvblByb2ZpbGU6OmNyZWF0
ZUFsbG9jYXRpb25TdHJ1Y3R1cmVGcm9tQmFzZSgpLgpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJl
c3MvcGFyc2VyLXNhdmUtc3RhdGUtcmVtb3ZlLXN0YWxlLWVudHJpZXMuanMgYi9KU1Rlc3RzL3N0
cmVzcy9wYXJzZXItc2F2ZS1zdGF0ZS1yZW1vdmUtc3RhbGUtZW50cmllcy5qcwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li41ZWNlZjRlMGU3ZGMxMWEzMTA1YjM3ODhhYTZkY2M1MjAxYjBjNDg2Ci0tLSAvZGV2L251bGwK
KysrIGIvSlNUZXN0cy9zdHJlc3MvcGFyc2VyLXNhdmUtc3RhdGUtcmVtb3ZlLXN0YWxlLWVudHJp
ZXMuanMKQEAgLTAsMCArMSwxMCBAQAorLy8gVGhpcyB0ZXN0IGVuc3VyZXMgd2UgcHJvcGVybHkg
cmVtb3ZlIHVuYXJ5IGV4cHJlc3Npb24gc3RhY2sgZW50cmllcyB3aGVuIGJhY2t0cmFjaW5nIGlu
IHRoZSBwYXJzZXIuCisKK3RyeSB7CisgICAgZXZhbCgiZGVsZXRlKChhPSsrKGI9YikpID0+IHt9
KSIpOworfSBjYXRjaCB7IH0KKwordHJ5IHsKKyAgICBldmFsKCIhKCh7YT0oKysoKHQpPSgoZSkp
KSl9KT0+e30pIik7Cit9IGNhdGNoIHsgfQorCmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9w
YXJzZXItc3ludGF4LWNoZWNrZXItYXNzaWdubWVudHMtYXJlLW5vdC1yZXNvbHZlLWV4cHJlc3Np
b25zLmpzIGIvSlNUZXN0cy9zdHJlc3MvcGFyc2VyLXN5bnRheC1jaGVja2VyLWFzc2lnbm1lbnRz
LWFyZS1ub3QtcmVzb2x2ZS1leHByZXNzaW9ucy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42MTcxZTA2YjZlNWM2
MjkzMmU2YjZmMzIyNGI1M2UyZWQ3ZDU1ZTc1Ci0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9z
dHJlc3MvcGFyc2VyLXN5bnRheC1jaGVja2VyLWFzc2lnbm1lbnRzLWFyZS1ub3QtcmVzb2x2ZS1l
eHByZXNzaW9ucy5qcwpAQCAtMCwwICsxLDQgQEAKKy8vQCByZXF1aXJlT3B0aW9ucygiLS1leGNl
cHRpb249U3ludGF4RXJyb3IiKSAmJiBydW5EZWZhdWx0CisidXNlIHN0cmljdCI7CisKK2Z1bmN0
aW9uIGZvbygpIHsgKGI9YikgPSBiOyB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>389256</attachid>
            <date>2020-01-30 09:35:45 -0800</date>
            <delta_ts>2020-01-30 11:04:19 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-206972-20200130093544.patch</filename>
            <type>text/plain</type>
            <size>63305</size>
            <attacher name="Keith Miller">keith_miller</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU1NDI1CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBh
ZGU5MjAxMTcyMWUzNDAzYWE4YjU3OGU0ZGQ2MTE0ZmQ4Y2MwYTlhLi5mMmU0NWY2ZTkxYzhmOWRl
MzVjNWVkY2RhYTI0M2EyZWI0N2JmZDhmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw3NiBAQAorMjAyMC0wMS0yOSAgS2VpdGggTWlsbGVyICA8a2VpdGhfbWlsbGVyQGFwcGxl
LmNvbT4KKworICAgICAgICBQYXJzZXIgbmVlZHMgdG8gcmVzdG9yZSB1bmFyeSBzdGFjayBzdGF0
ZSB3aGVuIGJhY2t0cmFja2luZworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MjA2OTcyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgU2FhbSBCYXJhdGkuCisK
KyAgICAgICAgUHJldmlvdXNseSB3ZSB3b3VsZCB0cnkgdG8gcGFyc2UgcG9zc2libHkgc3RhbGUg
dW5hcnkgb3BlcmF0b3IKKyAgICAgICAgc3RhY2sgZW50cmllcyBhZnRlciBiYWNrdHJhY2tpbmcg
ZnJvbSBhIHBhcnNlIGVycm9yLiAgVGhpcyB3b3VsZAorICAgICAgICBjYXVzZSB1cyB0byB0aGlu
ayBvbmUgdG9rZW4gd2FzIGEgZGlmZmVyZW50IHRva2VuIHdoaWxlIHJlcGFyc2luZworICAgICAg
ICBhZnRlciBiYWNrdHJhY2tpbmcuIEFkZGl0aW9uYWxseSwgdGhpcyBwYXRjaCBmaXhlcyBhbiBp
c3N1ZSB3aGVyZQorICAgICAgICB0aGUgc3ludGF4IGNoZWNrZXIgd291bGQgdGhpbmsgYXNzaWdu
bWVudCBleHByZXNzaW9ucyB3ZXJlIHJlc29sdmUKKyAgICAgICAgZXhwcmVzc2lvbnMuIEludHJl
c3RpbmdseSwgdGhpcyB3YXMgbm90IHRlc3RlZCBpbiB0ZXN0MjYyLgorCisgICAgICAgIExhc3Rs
eSwgSSB0cmllZCBhZGRpbmcgc29tZSBhc3NlcnRpb25zIHRvIGltcHJvdmUgaGVscCBkaWFnbm9z
ZQorICAgICAgICB3aGVuIG91ciBzb3VyY2UgdGV4dCBsb2NhdGlvbnMgYXJlIGluY29ycmVjdC4K
KworICAgICAgICAqIGJ5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oOgorICAgICAgICAo
SlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdEV4cHJlc3Npb25JbmZvKToKKyAgICAgICAgKiBi
eXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcDoKKyAgICAgICAgKEpTQzo6VGhpc05vZGU6OmVt
aXRCeXRlY29kZSk6CisgICAgICAgIChKU0M6OlJlc29sdmVOb2RlOjplbWl0Qnl0ZWNvZGUpOgor
ICAgICAgICAoSlNDOjpFbXB0eVZhckV4cHJlc3Npb246OmVtaXRCeXRlY29kZSk6CisgICAgICAg
IChKU0M6OkVtcHR5TGV0RXhwcmVzc2lvbjo6ZW1pdEJ5dGVjb2RlKToKKyAgICAgICAgKEpTQzo6
Rm9ySW5Ob2RlOjplbWl0TG9vcEhlYWRlcik6CisgICAgICAgIChKU0M6OkZvck9mTm9kZTo6ZW1p
dEJ5dGVjb2RlKToKKyAgICAgICAgKEpTQzo6RGVmaW5lRmllbGROb2RlOjplbWl0Qnl0ZWNvZGUp
OgorICAgICAgICAqIHBhcnNlci9BU1RCdWlsZGVyLmg6CisgICAgICAgIChKU0M6OkFTVEJ1aWxk
ZXI6OnVuYXJ5VG9rZW5TdGFja0RlcHRoIGNvbnN0KToKKyAgICAgICAgKEpTQzo6QVNUQnVpbGRl
cjo6c2V0VW5hcnlUb2tlblN0YWNrRGVwdGgpOgorICAgICAgICAqIHBhcnNlci9MZXhlci5jcHA6
CisgICAgICAgIChKU0M6OkxleGVyPFQ+OjpMZXhlcik6CisgICAgICAgICogcGFyc2VyL0xleGVy
Lmg6CisgICAgICAgIChKU0M6OkxleGVyOjpzZXRMaW5lTnVtYmVyKToKKyAgICAgICAgKiBwYXJz
ZXIvTm9kZXMuY3BwOgorICAgICAgICAoSlNDOjpGdW5jdGlvbk1ldGFkYXRhTm9kZTo6b3BlcmF0
b3I9PSBjb25zdCk6CisgICAgICAgICogcGFyc2VyL05vZGVzLmg6CisgICAgICAgIChKU0M6OlRo
cm93YWJsZUV4cHJlc3Npb25EYXRhOjpUaHJvd2FibGVFeHByZXNzaW9uRGF0YSk6CisgICAgICAg
IChKU0M6OlRocm93YWJsZUV4cHJlc3Npb25EYXRhOjpzZXRFeGNlcHRpb25Tb3VyY2VDb2RlKToK
KyAgICAgICAgKEpTQzo6VGhyb3dhYmxlRXhwcmVzc2lvbkRhdGE6OmNoZWNrQ29uc2lzdGVuY3kg
Y29uc3QpOgorICAgICAgICAqIHBhcnNlci9QYXJzZXIuY3BwOgorICAgICAgICAoSlNDOjpQYXJz
ZXI8TGV4ZXJUeXBlPjo6aXNBcnJvd0Z1bmN0aW9uUGFyYW1ldGVycyk6CisgICAgICAgIChKU0M6
OlBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZVNvdXJjZUVsZW1lbnRzKToKKyAgICAgICAgKEpTQzo6
UGFyc2VyPExleGVyVHlwZT46OnBhcnNlTW9kdWxlU291cmNlRWxlbWVudHMpOgorICAgICAgICAo
SlNDOjpQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VTdGF0ZW1lbnRMaXN0SXRlbSk6CisgICAgICAg
IChKU0M6OlBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUFzc2lnbm1lbnRFbGVtZW50KToKKyAgICAg
ICAgKEpTQzo6UGFyc2VyPExleGVyVHlwZT46OnBhcnNlRm9yU3RhdGVtZW50KToKKyAgICAgICAg
KEpTQzo6UGFyc2VyPExleGVyVHlwZT46Om1heWJlUGFyc2VBc3luY0Z1bmN0aW9uRGVjbGFyYXRp
b25TdGF0ZW1lbnQpOgorICAgICAgICAoSlNDOjpQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VGdW5j
dGlvbkluZm8pOgorICAgICAgICAoSlNDOjpQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VDbGFzcyk6
CisgICAgICAgIChKU0M6OlBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUV4cG9ydERlY2xhcmF0aW9u
KToKKyAgICAgICAgKEpTQzo6UGFyc2VyPExleGVyVHlwZT46OnBhcnNlQXNzaWdubWVudEV4cHJl
c3Npb24pOgorICAgICAgICAoSlNDOjpQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VZaWVsZEV4cHJl
c3Npb24pOgorICAgICAgICAoSlNDOjpQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VQcm9wZXJ0eSk6
CisgICAgICAgIChKU0M6OlBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZU1lbWJlckV4cHJlc3Npb24p
OgorICAgICAgICAoSlNDOjpQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VVbmFyeUV4cHJlc3Npb24p
OgorICAgICAgICAqIHBhcnNlci9QYXJzZXIuaDoKKyAgICAgICAgKEpTQzo6UGFyc2VyOjpsZXhD
dXJyZW50VG9rZW5BZ2FpblVuZGVyQ3VycmVudENvbnRleHQpOgorICAgICAgICAoSlNDOjpQYXJz
ZXI6OmludGVybmFsU2F2ZVBhcnNlclN0YXRlKToKKyAgICAgICAgKEpTQzo6UGFyc2VyOjpyZXN0
b3JlUGFyc2VyU3RhdGUpOgorICAgICAgICAoSlNDOjpQYXJzZXI6OmludGVybmFsU2F2ZVN0YXRl
KToKKyAgICAgICAgKEpTQzo6UGFyc2VyOjpzd2FwU2F2ZVBvaW50Rm9yRXJyb3IpOgorICAgICAg
ICAoSlNDOjpQYXJzZXI6OmNyZWF0ZVNhdmVQb2ludCk6CisgICAgICAgIChKU0M6OlBhcnNlcjo6
aW50ZXJuYWxSZXN0b3JlU3RhdGUpOgorICAgICAgICAoSlNDOjpQYXJzZXI6OnJlc3RvcmVTYXZl
UG9pbnRXaXRoRXJyb3IpOgorICAgICAgICAoSlNDOjpQYXJzZXI6OnJlc3RvcmVTYXZlUG9pbnQp
OgorICAgICAgICAoSlNDOjpQYXJzZXI6OmNyZWF0ZVNhdmVQb2ludEZvckVycm9yKTogRGVsZXRl
ZC4KKyAgICAgICAgKiBwYXJzZXIvUGFyc2VyVG9rZW5zLmg6CisgICAgICAgIChKU0M6OkpTVGV4
dFBvc2l0aW9uOjpKU1RleHRQb3NpdGlvbik6CisgICAgICAgIChKU0M6OkpTVGV4dFBvc2l0aW9u
OjpjaGVja0NvbnNpc3RlbmN5KToKKyAgICAgICAgKiBwYXJzZXIvU3ludGF4Q2hlY2tlci5oOgor
ICAgICAgICAoSlNDOjpTeW50YXhDaGVja2VyOjpvcGVyYXRvclN0YWNrUG9wKToKKwogMjAyMC0w
MS0yOSAgTWFyayBMYW0gIDxtYXJrLmxhbUBhcHBsZS5jb20+CiAKICAgICAgICAgRml4IGJhZCBh
c3NlcnRpb24gaW4gSW50ZXJuYWxGdW5jdGlvbkFsbG9jYXRpb25Qcm9maWxlOjpjcmVhdGVBbGxv
Y2F0aW9uU3RydWN0dXJlRnJvbUJhc2UoKS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaAppbmRleCA0MmM2MzAyNjBlZTZl
YjhkYjYxNjMzODJmNjBmNjdjNWU4NDBmN2YwLi4xNDhhZWI2MzY1OGQyNzczNmQ3ZmJiMWZlMTg1
NjAyNzViNmNjNDk1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBp
bGVyL0J5dGVjb2RlR2VuZXJhdG9yLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oCkBAIC01OTMsNiArNTkzLDkgQEAgbmFtZXNwYWNl
IEpTQyB7CiAgICAgICAgICAgICBBU1NFUlQoZGl2b3Qub2Zmc2V0ID49IGRpdm90U3RhcnQub2Zm
c2V0KTsKICAgICAgICAgICAgIEFTU0VSVChkaXZvdEVuZC5vZmZzZXQgPj0gZGl2b3Qub2Zmc2V0
KTsKIAorICAgICAgICAgICAgaWYgKG1faXNCdWlsdGluRnVuY3Rpb24pCisgICAgICAgICAgICAg
ICAgcmV0dXJuOworCiAgICAgICAgICAgICBpbnQgc291cmNlT2Zmc2V0ID0gbV9zY29wZU5vZGUt
PnNvdXJjZSgpLnN0YXJ0T2Zmc2V0KCk7CiAgICAgICAgICAgICB1bnNpZ25lZCBmaXJzdExpbmUg
PSBtX3Njb3BlTm9kZS0+c291cmNlKCkuZmlyc3RMaW5lKCkub25lQmFzZWRJbnQoKTsKIApAQCAt
NjE2LDggKzYxOSw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAgdW5zaWduZWQgY29s
dW1uID0gZGl2b3RPZmZzZXQgLSBsaW5lU3RhcnQ7CiAKICAgICAgICAgICAgIHVuc2lnbmVkIGlu
c3RydWN0aW9uT2Zmc2V0ID0gaW5zdHJ1Y3Rpb25zKCkuc2l6ZSgpOwotICAgICAgICAgICAgaWYg
KCFtX2lzQnVpbHRpbkZ1bmN0aW9uKQotICAgICAgICAgICAgICAgIG1fY29kZUJsb2NrLT5hZGRF
eHByZXNzaW9uSW5mbyhpbnN0cnVjdGlvbk9mZnNldCwgZGl2b3RPZmZzZXQsIHN0YXJ0T2Zmc2V0
LCBlbmRPZmZzZXQsIGxpbmUsIGNvbHVtbik7CisgICAgICAgICAgICBtX2NvZGVCbG9jay0+YWRk
RXhwcmVzc2lvbkluZm8oaW5zdHJ1Y3Rpb25PZmZzZXQsIGRpdm90T2Zmc2V0LCBzdGFydE9mZnNl
dCwgZW5kT2Zmc2V0LCBsaW5lLCBjb2x1bW4pOwogICAgICAgICB9CiAKIApkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwCmluZGV4IGFi
OTZkOTUwNjNlNzc0ZDU3ZmQ4NGUzNTIzMmEwNmU1OTBjNzJkNGEuLmQzODNhN2M3MTdlNWQ1Y2Mx
MzllOTQ0OGJjNzg2OGVkNzVhODA2NjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAKQEAgLTE3NCw4ICsxNzQsOCBAQCBSZWdp
c3RlcklEKiBUaGlzTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0
b3IsIFJlZ2lzdGVySUQqIGRzdAogICAgICAgICByZXR1cm4gMDsKIAogICAgIFJlZ2lzdGVySUQq
IHJlc3VsdCA9IGdlbmVyYXRvci5tb3ZlKGRzdCwgZ2VuZXJhdG9yLnRoaXNSZWdpc3RlcigpKTsK
LSAgICBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIHRoaXNMZW5ndGggPSA0OwotICAgIGdlbmVy
YXRvci5lbWl0UHJvZmlsZVR5cGUoZ2VuZXJhdG9yLnRoaXNSZWdpc3RlcigpLCBwb3NpdGlvbigp
LCBKU1RleHRQb3NpdGlvbigtMSwgcG9zaXRpb24oKS5vZmZzZXQgKyB0aGlzTGVuZ3RoLCAtMSkp
OworICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCB0aGlzTGVuZ3RoID0gc3RybGVuKCJ0aGlzIik7
CisgICAgZ2VuZXJhdG9yLmVtaXRQcm9maWxlVHlwZShnZW5lcmF0b3IudGhpc1JlZ2lzdGVyKCks
IHBvc2l0aW9uKCksIHBvc2l0aW9uKCkgKyB0aGlzTGVuZ3RoKTsKICAgICByZXR1cm4gcmVzdWx0
OwogfQogCkBAIC0yNTgsNyArMjU4LDcgQEAgUmVnaXN0ZXJJRCogUmVzb2x2ZU5vZGU6OmVtaXRC
eXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKgogICAgICAg
ICBpZiAoZHN0ID09IGdlbmVyYXRvci5pZ25vcmVkUmVzdWx0KCkpCiAgICAgICAgICAgICByZXR1
cm4gbnVsbHB0cjsKIAotICAgICAgICBnZW5lcmF0b3IuZW1pdFByb2ZpbGVUeXBlKGxvY2FsLCB2
YXIsIG1fcG9zaXRpb24sIEpTVGV4dFBvc2l0aW9uKC0xLCBtX3Bvc2l0aW9uLm9mZnNldCArIG1f
aWRlbnQubGVuZ3RoKCksIC0xKSk7CisgICAgICAgIGdlbmVyYXRvci5lbWl0UHJvZmlsZVR5cGUo
bG9jYWwsIHZhciwgbV9wb3NpdGlvbiwgbV9wb3NpdGlvbiArIG1faWRlbnQubGVuZ3RoKCkpOwog
ICAgICAgICByZXR1cm4gZ2VuZXJhdG9yLm1vdmUoZHN0LCBsb2NhbCk7CiAgICAgfQogICAgIApA
QCAtMjcwLDcgKzI3MCw3IEBAIFJlZ2lzdGVySUQqIFJlc29sdmVOb2RlOjplbWl0Qnl0ZWNvZGUo
Qnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCoKICAgICBnZW5lcmF0b3Iu
ZW1pdEdldEZyb21TY29wZSh1bmNoZWNrZWRSZXN1bHQuZ2V0KCksIHNjb3BlLmdldCgpLCB2YXIs
IFRocm93SWZOb3RGb3VuZCk7CiAgICAgZ2VuZXJhdG9yLmVtaXRURFpDaGVja0lmTmVjZXNzYXJ5
KHZhciwgdW5jaGVja2VkUmVzdWx0LmdldCgpLCBudWxscHRyKTsKICAgICBnZW5lcmF0b3IubW92
ZShmaW5hbERlc3QsIHVuY2hlY2tlZFJlc3VsdC5nZXQoKSk7Ci0gICAgZ2VuZXJhdG9yLmVtaXRQ
cm9maWxlVHlwZShmaW5hbERlc3QsIHZhciwgbV9wb3NpdGlvbiwgSlNUZXh0UG9zaXRpb24oLTEs
IG1fcG9zaXRpb24ub2Zmc2V0ICsgbV9pZGVudC5sZW5ndGgoKSwgLTEpKTsKKyAgICBnZW5lcmF0
b3IuZW1pdFByb2ZpbGVUeXBlKGZpbmFsRGVzdCwgdmFyLCBtX3Bvc2l0aW9uLCBtX3Bvc2l0aW9u
ICsgbV9pZGVudC5sZW5ndGgoKSk7CiAgICAgcmV0dXJuIGZpbmFsRGVzdDsKIH0KIApAQCAtMzA4
OCwxMSArMzA4OCwxMSBAQCBSZWdpc3RlcklEKiBFbXB0eVZhckV4cHJlc3Npb246OmVtaXRCeXRl
Y29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpcwogCiAgICAgVmFyaWFibGUg
dmFyID0gZ2VuZXJhdG9yLnZhcmlhYmxlKG1faWRlbnQpOwogICAgIGlmIChSZWdpc3RlcklEKiBs
b2NhbCA9IHZhci5sb2NhbCgpKQotICAgICAgICBnZW5lcmF0b3IuZW1pdFByb2ZpbGVUeXBlKGxv
Y2FsLCB2YXIsIHBvc2l0aW9uKCksIEpTVGV4dFBvc2l0aW9uKC0xLCBwb3NpdGlvbigpLm9mZnNl
dCArIG1faWRlbnQubGVuZ3RoKCksIC0xKSk7CisgICAgICAgIGdlbmVyYXRvci5lbWl0UHJvZmls
ZVR5cGUobG9jYWwsIHZhciwgcG9zaXRpb24oKSwgcG9zaXRpb24oKSArIG1faWRlbnQubGVuZ3Ro
KCkpOwogICAgIGVsc2UgewogICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gc2NvcGUgPSBnZW5l
cmF0b3IuZW1pdFJlc29sdmVTY29wZShudWxscHRyLCB2YXIpOwogICAgICAgICBSZWZQdHI8UmVn
aXN0ZXJJRD4gdmFsdWUgPSBnZW5lcmF0b3IuZW1pdEdldEZyb21TY29wZShnZW5lcmF0b3IubmV3
VGVtcG9yYXJ5KCksIHNjb3BlLmdldCgpLCB2YXIsIERvTm90VGhyb3dJZk5vdEZvdW5kKTsKLSAg
ICAgICAgZ2VuZXJhdG9yLmVtaXRQcm9maWxlVHlwZSh2YWx1ZS5nZXQoKSwgdmFyLCBwb3NpdGlv
bigpLCBKU1RleHRQb3NpdGlvbigtMSwgcG9zaXRpb24oKS5vZmZzZXQgKyBtX2lkZW50Lmxlbmd0
aCgpLCAtMSkpOworICAgICAgICBnZW5lcmF0b3IuZW1pdFByb2ZpbGVUeXBlKHZhbHVlLmdldCgp
LCB2YXIsIHBvc2l0aW9uKCksIHBvc2l0aW9uKCkgKyBtX2lkZW50Lmxlbmd0aCgpKTsKICAgICB9
CiAKICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTMxMDcsMTIgKzMxMDcsMTIgQEAgUmVnaXN0ZXJJ
RCogRW1wdHlMZXRFeHByZXNzaW9uOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdl
bmVyYXRvciwgUmVnaXMKICAgICBWYXJpYWJsZSB2YXIgPSBnZW5lcmF0b3IudmFyaWFibGUobV9p
ZGVudCk7CiAgICAgaWYgKFJlZ2lzdGVySUQqIGxvY2FsID0gdmFyLmxvY2FsKCkpIHsKICAgICAg
ICAgZ2VuZXJhdG9yLmVtaXRMb2FkKGxvY2FsLCBqc1VuZGVmaW5lZCgpKTsKLSAgICAgICAgZ2Vu
ZXJhdG9yLmVtaXRQcm9maWxlVHlwZShsb2NhbCwgdmFyLCBwb3NpdGlvbigpLCBKU1RleHRQb3Np
dGlvbigtMSwgcG9zaXRpb24oKS5vZmZzZXQgKyBtX2lkZW50Lmxlbmd0aCgpLCAtMSkpOworICAg
ICAgICBnZW5lcmF0b3IuZW1pdFByb2ZpbGVUeXBlKGxvY2FsLCB2YXIsIHBvc2l0aW9uKCksIHBv
c2l0aW9uKCkgKyBtX2lkZW50Lmxlbmd0aCgpKTsKICAgICB9IGVsc2UgewogICAgICAgICBSZWZQ
dHI8UmVnaXN0ZXJJRD4gc2NvcGUgPSBnZW5lcmF0b3IuZW1pdFJlc29sdmVTY29wZShudWxscHRy
LCB2YXIpOwogICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gdmFsdWUgPSBnZW5lcmF0b3IuZW1p
dExvYWQobnVsbHB0ciwganNVbmRlZmluZWQoKSk7CiAgICAgICAgIGdlbmVyYXRvci5lbWl0UHV0
VG9TY29wZShzY29wZS5nZXQoKSwgdmFyLCB2YWx1ZS5nZXQoKSwgZ2VuZXJhdG9yLmlzU3RyaWN0
TW9kZSgpID8gVGhyb3dJZk5vdEZvdW5kIDogRG9Ob3RUaHJvd0lmTm90Rm91bmQsIEluaXRpYWxp
emF0aW9uTW9kZTo6SW5pdGlhbGl6YXRpb24pOwotICAgICAgICBnZW5lcmF0b3IuZW1pdFByb2Zp
bGVUeXBlKHZhbHVlLmdldCgpLCB2YXIsIHBvc2l0aW9uKCksIEpTVGV4dFBvc2l0aW9uKC0xLCBw
b3NpdGlvbigpLm9mZnNldCArIG1faWRlbnQubGVuZ3RoKCksIC0xKSk7IAorICAgICAgICBnZW5l
cmF0b3IuZW1pdFByb2ZpbGVUeXBlKHZhbHVlLmdldCgpLCB2YXIsIHBvc2l0aW9uKCksIHBvc2l0
aW9uKCkgKyBtX2lkZW50Lmxlbmd0aCgpKTsgCiAgICAgfQogCiAgICAgZ2VuZXJhdG9yLmxpZnRU
RFpDaGVja0lmUG9zc2libGUodmFyKTsKQEAgLTMzMjksNyArMzMyOSw3IEBAIHZvaWQgRm9ySW5O
b2RlOjplbWl0TG9vcEhlYWRlcihCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3Rl
cklEKiBwcm9wZXJ0CiAgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdEV4cHJlc3Npb25JbmZvKGRp
dm90KCksIGRpdm90U3RhcnQoKSwgZGl2b3RFbmQoKSk7CiAgICAgICAgICAgICBnZW5lcmF0b3Iu
ZW1pdFB1dFRvU2NvcGUoc2NvcGUuZ2V0KCksIHZhciwgcHJvcGVydHlOYW1lLCBnZW5lcmF0b3Iu
aXNTdHJpY3RNb2RlKCkgPyBUaHJvd0lmTm90Rm91bmQgOiBEb05vdFRocm93SWZOb3RGb3VuZCwg
SW5pdGlhbGl6YXRpb25Nb2RlOjpOb3RJbml0aWFsaXphdGlvbik7CiAgICAgICAgIH0KLSAgICAg
ICAgZ2VuZXJhdG9yLmVtaXRQcm9maWxlVHlwZShwcm9wZXJ0eU5hbWUsIHZhciwgbV9sZXhwci0+
cG9zaXRpb24oKSwgSlNUZXh0UG9zaXRpb24oLTEsIG1fbGV4cHItPnBvc2l0aW9uKCkub2Zmc2V0
ICsgaWRlbnQubGVuZ3RoKCksIC0xKSk7CisgICAgICAgIGdlbmVyYXRvci5lbWl0UHJvZmlsZVR5
cGUocHJvcGVydHlOYW1lLCB2YXIsIG1fbGV4cHItPnBvc2l0aW9uKCksIG1fbGV4cHItPnBvc2l0
aW9uKCkgKyBpZGVudC5sZW5ndGgoKSk7CiAgICAgfTsKIAogICAgIGlmIChtX2xleHByLT5pc1Jl
c29sdmVOb2RlKCkpIHsKQEAgLTM1ODYsNyArMzU4Niw3IEBAIHZvaWQgRm9yT2ZOb2RlOjplbWl0
Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogZHN0KQog
ICAgICAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0RXhwcmVzc2lvbkluZm8oZGl2b3QoKSwgZGl2
b3RTdGFydCgpLCBkaXZvdEVuZCgpKTsKICAgICAgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdFB1
dFRvU2NvcGUoc2NvcGUuZ2V0KCksIHZhciwgdmFsdWUsIGdlbmVyYXRvci5pc1N0cmljdE1vZGUo
KSA/IFRocm93SWZOb3RGb3VuZCA6IERvTm90VGhyb3dJZk5vdEZvdW5kLCBJbml0aWFsaXphdGlv
bk1vZGU6Ok5vdEluaXRpYWxpemF0aW9uKTsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGdl
bmVyYXRvci5lbWl0UHJvZmlsZVR5cGUodmFsdWUsIHZhciwgbV9sZXhwci0+cG9zaXRpb24oKSwg
SlNUZXh0UG9zaXRpb24oLTEsIG1fbGV4cHItPnBvc2l0aW9uKCkub2Zmc2V0ICsgaWRlbnQubGVu
Z3RoKCksIC0xKSk7CisgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdFByb2ZpbGVUeXBlKHZhbHVl
LCB2YXIsIG1fbGV4cHItPnBvc2l0aW9uKCksIG1fbGV4cHItPnBvc2l0aW9uKCkgKyBpZGVudC5s
ZW5ndGgoKSk7CiAgICAgICAgIH0gZWxzZSBpZiAobV9sZXhwci0+aXNEb3RBY2Nlc3Nvck5vZGUo
KSkgewogICAgICAgICAgICAgRG90QWNjZXNzb3JOb2RlKiBhc3NpZ25Ob2RlID0gc3RhdGljX2Nh
c3Q8RG90QWNjZXNzb3JOb2RlKj4obV9sZXhwcik7CiAgICAgICAgICAgICBjb25zdCBJZGVudGlm
aWVyJiBpZGVudCA9IGFzc2lnbk5vZGUtPmlkZW50aWZpZXIoKTsKQEAgLTQzNTAsNyArNDM1MCw3
IEBAIHZvaWQgRGVmaW5lRmllbGROb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3Im
IGdlbmVyYXRvciwgUmVnaXN0ZXJJRCopCiAgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiBzY29w
ZSA9IGdlbmVyYXRvci5lbWl0UmVzb2x2ZVNjb3BlKGdlbmVyYXRvci5uZXdUZW1wb3JhcnkoKSwg
dmFyKTsKICAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHByaXZhdGVOYW1lID0gZ2VuZXJhdG9y
Lm5ld1RlbXBvcmFyeSgpOwogICAgICAgICBnZW5lcmF0b3IuZW1pdEdldEZyb21TY29wZShwcml2
YXRlTmFtZS5nZXQoKSwgc2NvcGUuZ2V0KCksIHZhciwgVGhyb3dJZk5vdEZvdW5kKTsKLSAgICAg
ICAgZ2VuZXJhdG9yLmVtaXRQcm9maWxlVHlwZShwcml2YXRlTmFtZS5nZXQoKSwgdmFyLCBtX3Bv
c2l0aW9uLCBKU1RleHRQb3NpdGlvbigtMSwgbV9wb3NpdGlvbi5vZmZzZXQgKyBtX2lkZW50LT5s
ZW5ndGgoKSwgLTEpKTsKKyAgICAgICAgZ2VuZXJhdG9yLmVtaXRQcm9maWxlVHlwZShwcml2YXRl
TmFtZS5nZXQoKSwgdmFyLCBtX3Bvc2l0aW9uLCBtX3Bvc2l0aW9uICsgbV9pZGVudC0+bGVuZ3Ro
KCkpOwogICAgICAgICBnZW5lcmF0b3IuZW1pdENhbGxEZWZpbmVQcm9wZXJ0eShnZW5lcmF0b3Iu
dGhpc1JlZ2lzdGVyKCksIHByaXZhdGVOYW1lLmdldCgpLCB2YWx1ZS5nZXQoKSwgbnVsbHB0ciwg
bnVsbHB0ciwgQnl0ZWNvZGVHZW5lcmF0b3I6OlByb3BlcnR5Q29uZmlndXJhYmxlIHwgQnl0ZWNv
ZGVHZW5lcmF0b3I6OlByb3BlcnR5V3JpdGFibGUgfCBCeXRlY29kZUdlbmVyYXRvcjo6UHJvcGVy
dHlFbnVtZXJhYmxlLCBtX3Bvc2l0aW9uKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9BU1RCdWlsZGVyLmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcGFyc2VyL0FTVEJ1aWxkZXIuaAppbmRleCBkYmQ1M2FlNzYwODRmMmRh
OWI3NWU3NGY2MWY4YTcwNGM3OGQzOTYwLi40YzYxNzMwZWRlYzhhZGViZTk1ZDY5ZmFhNzA1ZWMx
YzIwYmY1ZTk4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL0FTVEJ1
aWxkZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL0FTVEJ1aWxkZXIuaApA
QCAtOTI2LDYgKzkyNiwxNiBAQCBwdWJsaWM6CiAgICAgICAgIHRva2VuU3RhY2tEZXB0aC0tOwog
ICAgICAgICBtX3VuYXJ5VG9rZW5TdGFjay5yZW1vdmVMYXN0KCk7CiAgICAgfQorCisgICAgaW50
IHVuYXJ5VG9rZW5TdGFja0RlcHRoKCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBtX3Vu
YXJ5VG9rZW5TdGFjay5zaXplKCk7CisgICAgfQorCisgICAgdm9pZCBzZXRVbmFyeVRva2VuU3Rh
Y2tEZXB0aChpbnQgb2xkRGVwdGgpCisgICAgeworICAgICAgICBtX3VuYXJ5VG9rZW5TdGFjay5z
aHJpbmsob2xkRGVwdGgpOworICAgIH0KICAgICAKICAgICB2b2lkIGFzc2lnbm1lbnRTdGFja0Fw
cGVuZChpbnQmIGFzc2lnbm1lbnRTdGFja0RlcHRoLCBFeHByZXNzaW9uTm9kZSogbm9kZSwgY29u
c3QgSlNUZXh0UG9zaXRpb24mIHN0YXJ0LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3QsIGlu
dCBhc3NpZ25tZW50Q291bnQsIE9wZXJhdG9yIG9wKQogICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTGV4ZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3BhcnNlci9MZXhlci5jcHAKaW5kZXggYzM0MWY0OTI3ODI1NGUyNzc3ZDBiMmNkNzNiZDU1YzJk
MjNhYTdlMS4uOTdjYWJlMWMyNGNjYTYxNDI3NzZiY2I2MTBjODI0MDY2OGMxOWRmYSAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9MZXhlci5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3BhcnNlci9MZXhlci5jcHAKQEAgLTQ5NCw3ICs0OTQsOCBAQCBzdGF0
aWMgY29uc3RleHByIGNvbnN0IExDaGFyIHNpbmdsZUNoYXJhY3RlckVzY2FwZVZhbHVlc0ZvckFT
Q0lJWzEyOF0gPSB7CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgogTGV4ZXI8VD46OkxleGVyKFZN
JiB2bSwgSlNQYXJzZXJCdWlsdGluTW9kZSBidWlsdGluTW9kZSwgSlNQYXJzZXJTY3JpcHRNb2Rl
IHNjcmlwdE1vZGUpCi0gICAgOiBtX2lzUmVwYXJzaW5nRnVuY3Rpb24oZmFsc2UpCisgICAgOiBt
X3Bvc2l0aW9uQmVmb3JlTGFzdE5ld2xpbmUoMCwwLDApCisgICAgLCBtX2lzUmVwYXJzaW5nRnVu
Y3Rpb24oZmFsc2UpCiAgICAgLCBtX3ZtKHZtKQogICAgICwgbV9wYXJzaW5nQnVpbHRpbkZ1bmN0
aW9uKGJ1aWx0aW5Nb2RlID09IEpTUGFyc2VyQnVpbHRpbk1vZGU6OkJ1aWx0aW4pCiAgICAgLCBt
X3NjcmlwdE1vZGUoc2NyaXB0TW9kZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9wYXJzZXIvTGV4ZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTGV4ZXIuaApp
bmRleCBmZDgyNTgwM2M4MTIwNjUyYzc2NDc2ZTk4ZDI2NTY4YzBjZjcyYmIzLi5lZmZjYTRhODE1
NmY3ZGEzMDZmNzIyNjY4NzI1YjU2MzI0NDBkZjQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcGFyc2VyL0xleGVyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNl
ci9MZXhlci5oCkBAIC0xMDksNiArMTA5LDcgQEAgcHVibGljOgogICAgIH0KICAgICB2b2lkIHNl
dExpbmVOdW1iZXIoaW50IGxpbmUpCiAgICAgeworICAgICAgICBBU1NFUlQobGluZSA+PSAwKTsK
ICAgICAgICAgbV9saW5lTnVtYmVyID0gbGluZTsKICAgICB9CiAgICAgdm9pZCBzZXRIYXNMaW5l
VGVybWluYXRvckJlZm9yZVRva2VuKGJvb2wgdGVybWluYXRvcikKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3BhcnNlci9Ob2Rlcy5jcHAKaW5kZXggZGQ4ZWRiNjg3OTExYmZmMjIxMDJiYzQ5YmQ1Y2U1NTMx
ZGE5ZjA4ZS4uOWQxY2ZhNGYxNzYxMzAyYTMzYmJhZTMxZWY2MGZkZmNhZjIwN2RmNSAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rlcy5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rlcy5jcHAKQEAgLTI1NCwyNCArMjU0LDI0IEBAIHZv
aWQgRnVuY3Rpb25NZXRhZGF0YU5vZGU6OnNldEVuZFBvc2l0aW9uKEpTVGV4dFBvc2l0aW9uIHBv
c2l0aW9uKQogCiBib29sIEZ1bmN0aW9uTWV0YWRhdGFOb2RlOjpvcGVyYXRvcj09KGNvbnN0IEZ1
bmN0aW9uTWV0YWRhdGFOb2RlJiBvdGhlcikgY29uc3QKIHsKLSAgICByZXR1cm4gbV9wYXJzZU1v
ZGU9PSBvdGhlci5tX3BhcnNlTW9kZQorICAgIHJldHVybiBtX3BhcnNlTW9kZSA9PSBvdGhlci5t
X3BhcnNlTW9kZQogICAgICAgICAmJiBtX2lzSW5TdHJpY3RDb250ZXh0ID09IG90aGVyLm1faXNJ
blN0cmljdENvbnRleHQKICAgICAgICAgJiYgbV9zdXBlckJpbmRpbmcgPT0gb3RoZXIubV9zdXBl
ckJpbmRpbmcKICAgICAgICAgJiYgbV9jb25zdHJ1Y3RvcktpbmQgPT0gb3RoZXIubV9jb25zdHJ1
Y3RvcktpbmQKICAgICAgICAgJiYgbV9pc0Fycm93RnVuY3Rpb25Cb2R5RXhwcmVzc2lvbiA9PSBv
dGhlci5tX2lzQXJyb3dGdW5jdGlvbkJvZHlFeHByZXNzaW9uCiAgICAgICAgICYmIG1faWRlbnQg
PT0gb3RoZXIubV9pZGVudAogICAgICAgICAmJiBtX2VjbWFOYW1lID09IG90aGVyLm1fZWNtYU5h
bWUKLSAgICAgICAgJiYgbV9mdW5jdGlvbk1vZGU9PSBvdGhlci5tX2Z1bmN0aW9uTW9kZQotICAg
ICAgICAmJiBtX3N0YXJ0Q29sdW1uPT0gb3RoZXIubV9zdGFydENvbHVtbgotICAgICAgICAmJiBt
X2VuZENvbHVtbj09IG90aGVyLm1fZW5kQ29sdW1uCi0gICAgICAgICYmIG1fZnVuY3Rpb25LZXl3
b3JkU3RhcnQ9PSBvdGhlci5tX2Z1bmN0aW9uS2V5d29yZFN0YXJ0Ci0gICAgICAgICYmIG1fZnVu
Y3Rpb25OYW1lU3RhcnQ9PSBvdGhlci5tX2Z1bmN0aW9uTmFtZVN0YXJ0Ci0gICAgICAgICYmIG1f
cGFyYW1ldGVyc1N0YXJ0PT0gb3RoZXIubV9wYXJhbWV0ZXJzU3RhcnQKLSAgICAgICAgJiYgbV9z
b3VyY2U9PSBvdGhlci5tX3NvdXJjZQotICAgICAgICAmJiBtX2NsYXNzU291cmNlPT0gb3RoZXIu
bV9jbGFzc1NvdXJjZQotICAgICAgICAmJiBtX3N0YXJ0U3RhcnRPZmZzZXQ9PSBvdGhlci5tX3N0
YXJ0U3RhcnRPZmZzZXQKLSAgICAgICAgJiYgbV9wYXJhbWV0ZXJDb3VudD09IG90aGVyLm1fcGFy
YW1ldGVyQ291bnQKLSAgICAgICAgJiYgbV9sYXN0TGluZT09IG90aGVyLm1fbGFzdExpbmUKKyAg
ICAgICAgJiYgbV9mdW5jdGlvbk1vZGUgPT0gb3RoZXIubV9mdW5jdGlvbk1vZGUKKyAgICAgICAg
JiYgbV9zdGFydENvbHVtbiA9PSBvdGhlci5tX3N0YXJ0Q29sdW1uCisgICAgICAgICYmIG1fZW5k
Q29sdW1uID09IG90aGVyLm1fZW5kQ29sdW1uCisgICAgICAgICYmIG1fZnVuY3Rpb25LZXl3b3Jk
U3RhcnQgPT0gb3RoZXIubV9mdW5jdGlvbktleXdvcmRTdGFydAorICAgICAgICAmJiBtX2Z1bmN0
aW9uTmFtZVN0YXJ0ID09IG90aGVyLm1fZnVuY3Rpb25OYW1lU3RhcnQKKyAgICAgICAgJiYgbV9w
YXJhbWV0ZXJzU3RhcnQgPT0gb3RoZXIubV9wYXJhbWV0ZXJzU3RhcnQKKyAgICAgICAgJiYgbV9z
b3VyY2UgPT0gb3RoZXIubV9zb3VyY2UKKyAgICAgICAgJiYgbV9jbGFzc1NvdXJjZSA9PSBvdGhl
ci5tX2NsYXNzU291cmNlCisgICAgICAgICYmIG1fc3RhcnRTdGFydE9mZnNldCA9PSBvdGhlci5t
X3N0YXJ0U3RhcnRPZmZzZXQKKyAgICAgICAgJiYgbV9wYXJhbWV0ZXJDb3VudCA9PSBvdGhlci5t
X3BhcmFtZXRlckNvdW50CisgICAgICAgICYmIG1fbGFzdExpbmUgPT0gb3RoZXIubV9sYXN0TGlu
ZQogICAgICAgICAmJiBtX3Bvc2l0aW9uID09IG90aGVyLm1fcG9zaXRpb247CiB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMuaAppbmRleCAyYTgzNjQ2NzZlNjcxYzZmNzkzNGE5OGRk
M2ZjYTliMDkwMTViYTVkLi40OWFhYzQ3MzU4MDcwZTNmMzhiNzhjMjEyZjAyMzI5MTM1YTk2ZmJh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVzLmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rlcy5oCkBAIC0zNzIsMzcgKzM3MiwzNiBA
QCBuYW1lc3BhY2UgSlNDIHsKIAogICAgIGNsYXNzIFRocm93YWJsZUV4cHJlc3Npb25EYXRhIHsK
ICAgICBwdWJsaWM6Ci0gICAgICAgIFRocm93YWJsZUV4cHJlc3Npb25EYXRhKCkKLSAgICAgICAg
ICAgIDogbV9kaXZvdCgtMSwgLTEsIC0xKQotICAgICAgICAgICAgLCBtX2Rpdm90U3RhcnQoLTEs
IC0xLCAtMSkKLSAgICAgICAgICAgICwgbV9kaXZvdEVuZCgtMSwgLTEsIC0xKQotICAgICAgICB7
Ci0gICAgICAgIH0KKyAgICAgICAgVGhyb3dhYmxlRXhwcmVzc2lvbkRhdGEoKSA9IGRlZmF1bHQ7
CiAgICAgICAgIAogICAgICAgICBUaHJvd2FibGVFeHByZXNzaW9uRGF0YShjb25zdCBKU1RleHRQ
b3NpdGlvbiYgZGl2b3QsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBzdGFydCwgY29uc3QgSlNUZXh0
UG9zaXRpb24mIGVuZCkKICAgICAgICAgICAgIDogbV9kaXZvdChkaXZvdCkKICAgICAgICAgICAg
ICwgbV9kaXZvdFN0YXJ0KHN0YXJ0KQogICAgICAgICAgICAgLCBtX2Rpdm90RW5kKGVuZCkKICAg
ICAgICAgewotICAgICAgICAgICAgQVNTRVJUKG1fZGl2b3Qub2Zmc2V0ID49IG1fZGl2b3QubGlu
ZVN0YXJ0T2Zmc2V0KTsKLSAgICAgICAgICAgIEFTU0VSVChtX2Rpdm90U3RhcnQub2Zmc2V0ID49
IG1fZGl2b3RTdGFydC5saW5lU3RhcnRPZmZzZXQpOwotICAgICAgICAgICAgQVNTRVJUKG1fZGl2
b3RFbmQub2Zmc2V0ID49IG1fZGl2b3RFbmQubGluZVN0YXJ0T2Zmc2V0KTsKKyAgICAgICAgICAg
IGNoZWNrQ29uc2lzdGVuY3koKTsKICAgICAgICAgfQogCiAgICAgICAgIHZvaWQgc2V0RXhjZXB0
aW9uU291cmNlQ29kZShjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3QsIGNvbnN0IEpTVGV4dFBv
c2l0aW9uJiBkaXZvdFN0YXJ0LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3RFbmQpCiAgICAg
ICAgIHsKLSAgICAgICAgICAgIEFTU0VSVChkaXZvdC5vZmZzZXQgPj0gZGl2b3QubGluZVN0YXJ0
T2Zmc2V0KTsKLSAgICAgICAgICAgIEFTU0VSVChkaXZvdFN0YXJ0Lm9mZnNldCA+PSBkaXZvdFN0
YXJ0LmxpbmVTdGFydE9mZnNldCk7Ci0gICAgICAgICAgICBBU1NFUlQoZGl2b3RFbmQub2Zmc2V0
ID49IGRpdm90RW5kLmxpbmVTdGFydE9mZnNldCk7CiAgICAgICAgICAgICBtX2Rpdm90ID0gZGl2
b3Q7CiAgICAgICAgICAgICBtX2Rpdm90U3RhcnQgPSBkaXZvdFN0YXJ0OwogICAgICAgICAgICAg
bV9kaXZvdEVuZCA9IGRpdm90RW5kOworICAgICAgICAgICAgY2hlY2tDb25zaXN0ZW5jeSgpOwog
ICAgICAgICB9CiAKICAgICAgICAgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90KCkgY29uc3Qg
eyByZXR1cm4gbV9kaXZvdDsgfQogICAgICAgICBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3RT
dGFydCgpIGNvbnN0IHsgcmV0dXJuIG1fZGl2b3RTdGFydDsgfQogICAgICAgICBjb25zdCBKU1Rl
eHRQb3NpdGlvbiYgZGl2b3RFbmQoKSBjb25zdCB7IHJldHVybiBtX2Rpdm90RW5kOyB9CiAKKyAg
ICAgICAgdm9pZCBjaGVja0NvbnNpc3RlbmN5KCkgY29uc3QKKyAgICAgICAgeworICAgICAgICAg
ICAgQVNTRVJUKG1fZGl2b3Qub2Zmc2V0ID49IG1fZGl2b3QubGluZVN0YXJ0T2Zmc2V0KTsKKyAg
ICAgICAgICAgIEFTU0VSVChtX2Rpdm90U3RhcnQub2Zmc2V0ID49IG1fZGl2b3RTdGFydC5saW5l
U3RhcnRPZmZzZXQpOworICAgICAgICAgICAgQVNTRVJUKG1fZGl2b3RFbmQub2Zmc2V0ID49IG1f
ZGl2b3RFbmQubGluZVN0YXJ0T2Zmc2V0KTsKKyAgICAgICAgICAgIEFTU0VSVChtX2Rpdm90Lm9m
ZnNldCA+PSBtX2Rpdm90U3RhcnQub2Zmc2V0KTsKKyAgICAgICAgICAgIEFTU0VSVChtX2Rpdm90
RW5kLm9mZnNldCA+PSBtX2Rpdm90Lm9mZnNldCk7CisgICAgICAgIH0KICAgICBwcm90ZWN0ZWQ6
CiAgICAgICAgIFJlZ2lzdGVySUQqIGVtaXRUaHJvd1JlZmVyZW5jZUVycm9yKEJ5dGVjb2RlR2Vu
ZXJhdG9yJiwgY29uc3QgU3RyaW5nJiBtZXNzYWdlKTsKIApAQCAtMjEzMyw3ICsyMTMyLDcgQEAg
bmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIFNvdXJjZUNvZGUgbV9jbGFzc1NvdXJjZTsKICAgICAg
ICAgaW50IG1fc3RhcnRTdGFydE9mZnNldDsKICAgICAgICAgdW5zaWduZWQgbV9wYXJhbWV0ZXJD
b3VudDsKLSAgICAgICAgaW50IG1fbGFzdExpbmU7CisgICAgICAgIGludCBtX2xhc3RMaW5lIHsg
MCB9OwogICAgIH07CiAKICAgICBjbGFzcyBGdW5jdGlvbk5vZGUgZmluYWwgOiBwdWJsaWMgU2Nv
cGVOb2RlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2Vy
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmNwcAppbmRleCBiODEx
MzJiM2VkZDZhNDg5ZGIyMjdiYzcxMTEwNDQ0NGM1OWMwNjBkLi5jMmZhNjA3ZjI3OGYyN2MzMzUx
ZWQxOTg3YjgzMWVhNjkyNDJkOTk2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cGFyc2VyL1BhcnNlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJz
ZXIuY3BwCkBAIC0yOSw2ICsyOSw3IEBACiAjaW5jbHVkZSAiSlNDSW5saW5lcy5oIgogI2luY2x1
ZGUgIlZNLmgiCiAjaW5jbHVkZSA8dXRpbGl0eT4KKyNpbmNsdWRlIDx3dGYvU2NvcGUuaD4KICNp
bmNsdWRlIDx3dGYvU2V0Rm9yU2NvcGUuaD4KICNpbmNsdWRlIDx3dGYvU3RyaW5nUHJpbnRTdHJl
YW0uaD4KIApAQCAtMzA2LDEwICszMDcsMTAgQEAgRXhwZWN0ZWQ8dHlwZW5hbWUgUGFyc2VyPExl
eGVyVHlwZT46OlBhcnNlSW5uZXJSZXN1bHQsIFN0cmluZz4gUGFyc2VyPExleGVyVHlwZT4KIH0K
IAogdGVtcGxhdGUgPHR5cGVuYW1lIExleGVyVHlwZT4KLWJvb2wgUGFyc2VyPExleGVyVHlwZT46
OmlzQXJyb3dGdW5jdGlvblBhcmFtZXRlcnMoKQordGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVy
PiBib29sIFBhcnNlcjxMZXhlclR5cGU+Ojppc0Fycm93RnVuY3Rpb25QYXJhbWV0ZXJzKFRyZWVC
dWlsZGVyJiBjb250ZXh0KQogewogICAgIGlmIChtYXRjaChPUEVOUEFSRU4pKSB7Ci0gICAgICAg
IFNhdmVQb2ludCBzYXZlQXJyb3dGdW5jdGlvblBvaW50ID0gY3JlYXRlU2F2ZVBvaW50KCk7Cisg
ICAgICAgIFNhdmVQb2ludCBzYXZlQXJyb3dGdW5jdGlvblBvaW50ID0gY3JlYXRlU2F2ZVBvaW50
KGNvbnRleHQpOwogICAgICAgICBuZXh0KCk7CiAgICAgICAgIGJvb2wgaXNBcnJvd0Z1bmN0aW9u
ID0gZmFsc2U7CiAgICAgICAgIGlmIChtYXRjaChDTE9TRVBBUkVOKSkgewpAQCAtMzI4LDE2ICsz
MjksMTYgQEAgYm9vbCBQYXJzZXI8TGV4ZXJUeXBlPjo6aXNBcnJvd0Z1bmN0aW9uUGFyYW1ldGVy
cygpCiAgICAgICAgICAgICBwcm9wYWdhdGVFcnJvcigpOwogICAgICAgICAgICAgcG9wU2NvcGUo
ZmFrZVNjb3BlLCBzeW50YXhDaGVja2VyLk5lZWRzRnJlZVZhcmlhYmxlSW5mbyk7CiAgICAgICAg
IH0KLSAgICAgICAgcmVzdG9yZVNhdmVQb2ludChzYXZlQXJyb3dGdW5jdGlvblBvaW50KTsKKyAg
ICAgICAgcmVzdG9yZVNhdmVQb2ludChjb250ZXh0LCBzYXZlQXJyb3dGdW5jdGlvblBvaW50KTsK
ICAgICAgICAgcmV0dXJuIGlzQXJyb3dGdW5jdGlvbjsKICAgICB9CiAKICAgICBpZiAobWF0Y2hT
cGVjSWRlbnRpZmllcigpKSB7CiAgICAgICAgIHNlbWFudGljRmFpbElmVHJ1ZSghbV9wYXJzZXJT
dGF0ZS5hbGxvd0F3YWl0ICYmIG1hdGNoKEFXQUlUKSwgIkNhbm5vdCB1c2UgJ2F3YWl0JyBhcyBh
IHBhcmFtZXRlciBuYW1lIGluIGFuIGFzeW5jIGZ1bmN0aW9uIik7Ci0gICAgICAgIFNhdmVQb2lu
dCBzYXZlQXJyb3dGdW5jdGlvblBvaW50ID0gY3JlYXRlU2F2ZVBvaW50KCk7CisgICAgICAgIFNh
dmVQb2ludCBzYXZlQXJyb3dGdW5jdGlvblBvaW50ID0gY3JlYXRlU2F2ZVBvaW50KGNvbnRleHQp
OwogICAgICAgICBuZXh0KCk7CiAgICAgICAgIGJvb2wgaXNBcnJvd0Z1bmN0aW9uID0gbWF0Y2go
QVJST1dGVU5DVElPTik7Ci0gICAgICAgIHJlc3RvcmVTYXZlUG9pbnQoc2F2ZUFycm93RnVuY3Rp
b25Qb2ludCk7CisgICAgICAgIHJlc3RvcmVTYXZlUG9pbnQoY29udGV4dCwgc2F2ZUFycm93RnVu
Y3Rpb25Qb2ludCk7CiAgICAgICAgIHJldHVybiBpc0Fycm93RnVuY3Rpb247CiAgICAgfQogCkBA
IC0zNTcsNyArMzU4LDcgQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlU291cmNl
RWxlbWVudHMgUGFyc2VyPExleGVyVHlwZT46OnBhcnNlU291cmNlRWwKICAgICBUcmVlU291cmNl
RWxlbWVudHMgc291cmNlRWxlbWVudHMgPSBjb250ZXh0LmNyZWF0ZVNvdXJjZUVsZW1lbnRzKCk7
CiAgICAgY29uc3QgSWRlbnRpZmllciogZGlyZWN0aXZlID0gMDsKICAgICB1bnNpZ25lZCBkaXJl
Y3RpdmVMaXRlcmFsTGVuZ3RoID0gMDsKLSAgICBhdXRvIHNhdmVQb2ludCA9IGNyZWF0ZVNhdmVQ
b2ludCgpOworICAgIGF1dG8gc2F2ZVBvaW50ID0gY3JlYXRlU2F2ZVBvaW50KGNvbnRleHQpOwog
ICAgIGJvb2wgc2hvdWxkQ2hlY2tGb3JVc2VTdHJpY3QgPSBtb2RlID09IENoZWNrRm9yU3RyaWN0
TW9kZTsKICAgICAKICAgICB3aGlsZSAoVHJlZVN0YXRlbWVudCBzdGF0ZW1lbnQgPSBwYXJzZVN0
YXRlbWVudExpc3RJdGVtKGNvbnRleHQsIGRpcmVjdGl2ZSwgJmRpcmVjdGl2ZUxpdGVyYWxMZW5n
dGgpKSB7CkBAIC0zODIsNyArMzgzLDcgQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBU
cmVlU291cmNlRWxlbWVudHMgUGFyc2VyPExleGVyVHlwZT46OnBhcnNlU291cmNlRWwKICAgICAg
ICAgICAgICAgICAgICAgICAgIHNlbWFudGljRmFpbElmRmFsc2UoaXNWYWxpZFN0cmljdE1vZGUo
KSwgIkludmFsaWQgcGFyYW1ldGVycyBvciBmdW5jdGlvbiBuYW1lIGluIHN0cmljdCBtb2RlIik7
CiAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgLy8gU2luY2Ugc3Ry
aWN0IG1vZGUgaXMgY2hhbmdlZCwgcmVzdG9yaW5nIGxleGVyIHN0YXRlIGJ5IGNhbGxpbmcgbmV4
dCgpIG1heSBjYXVzZSBlcnJvcnMuCi0gICAgICAgICAgICAgICAgICAgIHJlc3RvcmVTYXZlUG9p
bnQoc2F2ZVBvaW50KTsKKyAgICAgICAgICAgICAgICAgICAgcmVzdG9yZVNhdmVQb2ludChjb250
ZXh0LCBzYXZlUG9pbnQpOwogICAgICAgICAgICAgICAgICAgICBwcm9wYWdhdGVFcnJvcigpOwog
ICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgICAgICB9CkBAIC00MjAs
MTAgKzQyMSwxMCBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVTb3VyY2VFbGVt
ZW50cyBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VNb2R1bGVTbwogICAgICAgICAgICAgYnJlYWs7
CiAKICAgICAgICAgY2FzZSBJTVBPUlQ6IHsKLSAgICAgICAgICAgIFNhdmVQb2ludCBzYXZlUG9p
bnQgPSBjcmVhdGVTYXZlUG9pbnQoKTsKKyAgICAgICAgICAgIFNhdmVQb2ludCBzYXZlUG9pbnQg
PSBjcmVhdGVTYXZlUG9pbnQoY29udGV4dCk7CiAgICAgICAgICAgICBuZXh0KCk7CiAgICAgICAg
ICAgICBib29sIGlzSW1wb3J0RGVjbGFyYXRpb24gPSAhbWF0Y2goT1BFTlBBUkVOKSAmJiAhbWF0
Y2goRE9UKTsKLSAgICAgICAgICAgIHJlc3RvcmVTYXZlUG9pbnQoc2F2ZVBvaW50KTsKKyAgICAg
ICAgICAgIHJlc3RvcmVTYXZlUG9pbnQoY29udGV4dCwgc2F2ZVBvaW50KTsKICAgICAgICAgICAg
IGlmIChpc0ltcG9ydERlY2xhcmF0aW9uKSB7CiAgICAgICAgICAgICAgICAgc3RhdGVtZW50ID0g
cGFyc2VJbXBvcnREZWNsYXJhdGlvbihjb250ZXh0KTsKICAgICAgICAgICAgICAgICBpZiAoc3Rh
dGVtZW50KQpAQCAtNjY3LDcgKzY2OCw3IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4g
VHJlZVN0YXRlbWVudCBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VTdGF0ZW1lbnRMaXN0CiAgICAg
Y2FzZSBMRVQ6IHsKICAgICAgICAgYm9vbCBzaG91bGRQYXJzZVZhcmlhYmxlRGVjbGFyYXRpb24g
PSB0cnVlOwogICAgICAgICBpZiAoIXN0cmljdE1vZGUoKSkgewotICAgICAgICAgICAgU2F2ZVBv
aW50IHNhdmVQb2ludCA9IGNyZWF0ZVNhdmVQb2ludCgpOworICAgICAgICAgICAgU2F2ZVBvaW50
IHNhdmVQb2ludCA9IGNyZWF0ZVNhdmVQb2ludChjb250ZXh0KTsKICAgICAgICAgICAgIG5leHQo
KTsKICAgICAgICAgICAgIC8vIEludGVudGlvbmFsbHkgdXNlIGBpc0lkZW50aWZpZXJPckFueUNv
bnRleHR1YWxLZXl3b3JkKG1fdG9rZW4pYCBhbmQgZG9uJ3QgdXNlIGBtYXRjaFNwZWNJZGVudGlm
aWVyKClgLgogICAgICAgICAgICAgLy8gV2Ugd291bGQgbGlrZSB0byBmYWxsIGludG8gcGFyc2VW
YXJpYWJsZURlY2xhcmF0aW9uIHBhdGggZXZlbiBpZiAieWllbGQiIGlzIG5vdCB0cmVhdGVkIGFz
IGFuIElkZW50aWZpZXIuCkBAIC02NzYsNyArNjc3LDcgQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVC
dWlsZGVyPiBUcmVlU3RhdGVtZW50IFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZVN0YXRlbWVudExp
c3QKICAgICAgICAgICAgIC8vIHRvIHJhaXNlIGNvbnNpc3RlbnQgZXJyb3JzIGJldHdlZW4gInZh
ciIsICJjb25zdCIgYW5kICJsZXQiLgogICAgICAgICAgICAgaWYgKCFpc0lkZW50aWZpZXJPckFu
eUNvbnRleHR1YWxLZXl3b3JkKG1fdG9rZW4pICYmICFtYXRjaChPUEVOQlJBQ0UpICYmICFtYXRj
aChPUEVOQlJBQ0tFVCkpCiAgICAgICAgICAgICAgICAgc2hvdWxkUGFyc2VWYXJpYWJsZURlY2xh
cmF0aW9uID0gZmFsc2U7Ci0gICAgICAgICAgICByZXN0b3JlU2F2ZVBvaW50KHNhdmVQb2ludCk7
CisgICAgICAgICAgICByZXN0b3JlU2F2ZVBvaW50KGNvbnRleHQsIHNhdmVQb2ludCk7CiAgICAg
ICAgIH0KICAgICAgICAgaWYgKHNob3VsZFBhcnNlVmFyaWFibGVEZWNsYXJhdGlvbikKICAgICAg
ICAgICAgIHJlc3VsdCA9IHBhcnNlVmFyaWFibGVEZWNsYXJhdGlvbihjb250ZXh0LCBEZWNsYXJh
dGlvblR5cGU6OkxldERlY2xhcmF0aW9uKTsKQEAgLTY5NywxMyArNjk4LDEzIEBAIHRlbXBsYXRl
IDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZVN0YXRlbWVudCBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFy
c2VTdGF0ZW1lbnRMaXN0CiAgICAgICAgIGlmIChVTkxJS0VMWSgqbV90b2tlbi5tX2RhdGEuaWRl
bnQgPT0gbV92bS5wcm9wZXJ0eU5hbWVzLT5hc3luYyAmJiAhbV90b2tlbi5tX2RhdGEuZXNjYXBl
ZCkpIHsKICAgICAgICAgICAgIC8vIEVhZ2VybHkgcGFyc2UgYXMgQXN5bmNGdW5jdGlvbkRlY2xh
cmF0aW9uLiBUaGlzIGlzIHRoZSB1bmNvbW1vbiBjYXNlLAogICAgICAgICAgICAgLy8gYnV0IGNv
dWxkIGJlIG1pc3Rha2VubHkgcGFyc2VkIGFzIGFuIEFzeW5jRnVuY3Rpb25FeHByZXNzaW9uLgot
ICAgICAgICAgICAgU2F2ZVBvaW50IHNhdmVQb2ludCA9IGNyZWF0ZVNhdmVQb2ludCgpOworICAg
ICAgICAgICAgU2F2ZVBvaW50IHNhdmVQb2ludCA9IGNyZWF0ZVNhdmVQb2ludChjb250ZXh0KTsK
ICAgICAgICAgICAgIG5leHQoKTsKICAgICAgICAgICAgIGlmIChVTkxJS0VMWShtYXRjaChGVU5D
VElPTikgJiYgIW1fbGV4ZXItPmhhc0xpbmVUZXJtaW5hdG9yQmVmb3JlVG9rZW4oKSkpIHsKICAg
ICAgICAgICAgICAgICByZXN1bHQgPSBwYXJzZUFzeW5jRnVuY3Rpb25EZWNsYXJhdGlvbihjb250
ZXh0KTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAg
IHJlc3RvcmVTYXZlUG9pbnQoc2F2ZVBvaW50KTsKKyAgICAgICAgICAgIHJlc3RvcmVTYXZlUG9p
bnQoY29udGV4dCwgc2F2ZVBvaW50KTsKICAgICAgICAgfQogICAgICAgICBGQUxMVEhST1VHSDsK
ICAgICBjYXNlIEFXQUlUOgpAQCAtMTA0MiwxMSArMTA0MywxMSBAQCB0ZW1wbGF0ZSA8Y2xhc3Mg
VHJlZUJ1aWxkZXI+IFRyZWVEZXN0cnVjdHVyaW5nUGF0dGVybiBQYXJzZXI8TGV4ZXJUeXBlPjo6
cGFyc2VBcwogICAgIFRyZWVEZXN0cnVjdHVyaW5nUGF0dGVybiBhc3NpZ25tZW50VGFyZ2V0ID0g
MDsKIAogICAgIGlmIChtYXRjaChPUEVOQlJBQ0UpIHx8IG1hdGNoKE9QRU5CUkFDS0VUKSkgewot
ICAgICAgICBTYXZlUG9pbnQgc2F2ZVBvaW50ID0gY3JlYXRlU2F2ZVBvaW50KCk7CisgICAgICAg
IFNhdmVQb2ludCBzYXZlUG9pbnQgPSBjcmVhdGVTYXZlUG9pbnQoY29udGV4dCk7CiAgICAgICAg
IGFzc2lnbm1lbnRUYXJnZXQgPSBwYXJzZURlc3RydWN0dXJpbmdQYXR0ZXJuKGNvbnRleHQsIGtp
bmQsIGV4cG9ydFR5cGUsIGR1cGxpY2F0ZUlkZW50aWZpZXIsIGhhc0Rlc3RydWN0dXJpbmdQYXR0
ZXJuLCBiaW5kaW5nQ29udGV4dCwgZGVwdGgpOwogICAgICAgICBpZiAoYXNzaWdubWVudFRhcmdl
dCAmJiAhbWF0Y2goRE9UKSAmJiAhbWF0Y2goT1BFTkJSQUNLRVQpICYmICFtYXRjaChPUEVOUEFS
RU4pICYmICFtYXRjaChCQUNLUVVPVEUpKQogICAgICAgICAgICAgcmV0dXJuIGFzc2lnbm1lbnRU
YXJnZXQ7Ci0gICAgICAgIHJlc3RvcmVTYXZlUG9pbnQoc2F2ZVBvaW50KTsKKyAgICAgICAgcmVz
dG9yZVNhdmVQb2ludChjb250ZXh0LCBzYXZlUG9pbnQpOwogICAgIH0KIAogICAgIEpTVGV4dFBv
c2l0aW9uIHN0YXJ0UG9zaXRpb24gPSB0b2tlblN0YXJ0UG9zaXRpb24oKTsKQEAgLTE0MzEsMTQg
KzE0MzIsMTQgQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlU3RhdGVtZW50IFBh
cnNlcjxMZXhlclR5cGU+OjpwYXJzZUZvclN0YXRlbWVudCgKICAgICAKICAgICBpZiAoIW1hdGNo
KFNFTUlDT0xPTikpIHsKICAgICAgICAgaWYgKG1hdGNoKE9QRU5CUkFDRSkgfHwgbWF0Y2goT1BF
TkJSQUNLRVQpKSB7Ci0gICAgICAgICAgICBTYXZlUG9pbnQgc2F2ZVBvaW50ID0gY3JlYXRlU2F2
ZVBvaW50KCk7CisgICAgICAgICAgICBTYXZlUG9pbnQgc2F2ZVBvaW50ID0gY3JlYXRlU2F2ZVBv
aW50KGNvbnRleHQpOwogICAgICAgICAgICAgZGVjbHNTdGFydCA9IHRva2VuU3RhcnRQb3NpdGlv
bigpOwogICAgICAgICAgICAgcGF0dGVybiA9IHRyeVBhcnNlRGVzdHJ1Y3R1cmluZ1BhdHRlcm5F
eHByZXNzaW9uKGNvbnRleHQsIEFzc2lnbm1lbnRDb250ZXh0OjpEZWNsYXJhdGlvblN0YXRlbWVu
dCk7CiAgICAgICAgICAgICBkZWNsc0VuZCA9IGxhc3RUb2tlbkVuZFBvc2l0aW9uKCk7CiAgICAg
ICAgICAgICBpZiAocGF0dGVybiAmJiAobWF0Y2goSU5UT0tFTikgfHwgbWF0Y2hDb250ZXh0dWFs
S2V5d29yZChtX3ZtLnByb3BlcnR5TmFtZXMtPm9mKSkpCiAgICAgICAgICAgICAgICAgZ290byBl
bnVtZXJhdGlvbkxvb3A7CiAgICAgICAgICAgICBwYXR0ZXJuID0gVHJlZURlc3RydWN0dXJpbmdQ
YXR0ZXJuKDApOwotICAgICAgICAgICAgcmVzdG9yZVNhdmVQb2ludChzYXZlUG9pbnQpOworICAg
ICAgICAgICAgcmVzdG9yZVNhdmVQb2ludChjb250ZXh0LCBzYXZlUG9pbnQpOwogICAgICAgICB9
CiAgICAgICAgIG1fYWxsb3dzSW4gPSBmYWxzZTsKICAgICAgICAgZGVjbHNTdGFydCA9IHRva2Vu
U3RhcnRQb3NpdGlvbigpOwpAQCAtMjAyNywxNCArMjAyOCwxNCBAQCB0ZW1wbGF0ZSA8dHlwZW5h
bWUgTGV4ZXJUeXBlPgogdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBib29sIFBhcnNlcjxM
ZXhlclR5cGU+OjptYXliZVBhcnNlQXN5bmNGdW5jdGlvbkRlY2xhcmF0aW9uU3RhdGVtZW50KFRy
ZWVCdWlsZGVyJiBjb250ZXh0LCBUcmVlU3RhdGVtZW50JiByZXN1bHQsIGJvb2wgcGFyZW50QWxs
b3dzRnVuY3Rpb25EZWNsYXJhdGlvbkFzU3RhdGVtZW50KQogewogICAgIEFTU0VSVChtYXRjaENv
bnRleHR1YWxLZXl3b3JkKG1fdm0ucHJvcGVydHlOYW1lcy0+YXN5bmMpKTsKLSAgICBTYXZlUG9p
bnQgc2F2ZVBvaW50ID0gY3JlYXRlU2F2ZVBvaW50KCk7CisgICAgU2F2ZVBvaW50IHNhdmVQb2lu
dCA9IGNyZWF0ZVNhdmVQb2ludChjb250ZXh0KTsKICAgICBuZXh0KCk7CiAgICAgaWYgKG1hdGNo
KEZVTkNUSU9OKSAmJiAhbV9sZXhlci0+aGFzTGluZVRlcm1pbmF0b3JCZWZvcmVUb2tlbigpKSB7
CiAgICAgICAgIGNvbnN0IGJvb2wgaXNBc3luYyA9IHRydWU7CiAgICAgICAgIHJlc3VsdCA9IHBh
cnNlRnVuY3Rpb25EZWNsYXJhdGlvblN0YXRlbWVudChjb250ZXh0LCBpc0FzeW5jLCBwYXJlbnRB
bGxvd3NGdW5jdGlvbkRlY2xhcmF0aW9uQXNTdGF0ZW1lbnQpOwogICAgICAgICByZXR1cm4gdHJ1
ZTsKICAgICB9Ci0gICAgcmVzdG9yZVNhdmVQb2ludChzYXZlUG9pbnQpOworICAgIHJlc3RvcmVT
YXZlUG9pbnQoY29udGV4dCwgc2F2ZVBvaW50KTsKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKQEAg
LTI1MjAsNyArMjUyMSw3IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gYm9vbCBQYXJz
ZXI8TGV4ZXJUeXBlPjo6cGFyc2VGdW5jdGlvbkluZm8oVHJlZUJ1aWxkCiAgICAgZnVuY3Rpb25T
Y29wZS0+c2V0RXhwZWN0ZWRTdXBlckJpbmRpbmcoZXhwZWN0ZWRTdXBlckJpbmRpbmcpOwogCiAg
ICAgbV9wYXJzZXJTdGF0ZS5sYXN0RnVuY3Rpb25OYW1lID0gbGFzdEZ1bmN0aW9uTmFtZTsKLSAg
ICBQYXJzZXJTdGF0ZSBvbGRTdGF0ZSA9IGludGVybmFsU2F2ZVBhcnNlclN0YXRlKCk7CisgICAg
UGFyc2VyU3RhdGUgb2xkU3RhdGUgPSBpbnRlcm5hbFNhdmVQYXJzZXJTdGF0ZShjb250ZXh0KTsK
IAogICAgIC8vIEZJWE1FOiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTU2OTYyCiAgICAgLy8gVGhpcyBsb29wIGNvbGxlY3RzIHRoZSBzZXQgb2YgY2FwdHVyZSBjYW5k
aWRhdGVzIHRoYXQgYXJlbid0CkBAIC0yNTczLDcgKzI1NzQsNyBAQCB0ZW1wbGF0ZSA8Y2xhc3Mg
VHJlZUJ1aWxkZXI+IGJvb2wgUGFyc2VyPExleGVyVHlwZT46OnBhcnNlRnVuY3Rpb25JbmZvKFRy
ZWVCdWlsZAogICAgIH0gZWxzZQogICAgICAgICBmdW5jdGlvbkluZm8uYm9keSA9IHBlcmZvcm1Q
YXJzaW5nRnVuY3Rpb25Cb2R5KCk7CiAgICAgCi0gICAgcmVzdG9yZVBhcnNlclN0YXRlKG9sZFN0
YXRlKTsKKyAgICByZXN0b3JlUGFyc2VyU3RhdGUoY29udGV4dCwgb2xkU3RhdGUpOwogICAgIGZh
aWxJZkZhbHNlKGZ1bmN0aW9uSW5mby5ib2R5LCAiQ2Fubm90IHBhcnNlIHRoZSBib2R5IG9mIHRo
aXMgIiwgc3RyaW5nRm9yRnVuY3Rpb25Nb2RlKG1vZGUpKTsKICAgICBjb250ZXh0LnNldEVuZE9m
ZnNldChmdW5jdGlvbkluZm8uYm9keSwgbV9sZXhlci0+Y3VycmVudE9mZnNldCgpKTsKICAgICBp
ZiAoZnVuY3Rpb25TY29wZS0+c3RyaWN0TW9kZSgpICYmIHJlcXVpcmVtZW50cyAhPSBGdW5jdGlv
bk5hbWVSZXF1aXJlbWVudHM6OlVubmFtZWQpIHsKQEAgLTI2MzQsNyArMjYzNSw3IEBAIHRlbXBs
YXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gYm9vbCBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VGdW5j
dGlvbkluZm8oVHJlZUJ1aWxkCiAgICAgICAgIC8vIFNvIHdlIG9ubHkgY2hlY2sgVHJlZUJ1aWxk
ZXIncyB0eXBlIGhlcmUuCiAgICAgICAgIEFTU0VSVF9VTlVTRUQoZnVuY3Rpb25TY29wZVdhc1N0
cmljdE1vZGUsIGZ1bmN0aW9uU2NvcGVXYXNTdHJpY3RNb2RlID09IGN1cnJlbnRTY29wZSgpLT5z
dHJpY3RNb2RlKCkpOwogICAgICAgICBpZiAoIXN0ZDo6aXNfc2FtZTxUcmVlQnVpbGRlciwgU3lu
dGF4Q2hlY2tlcj46OnZhbHVlKQotICAgICAgICAgICAgbGV4Q3VycmVudFRva2VuQWdhaW5VbmRl
ckN1cnJlbnRDb250ZXh0KCk7CisgICAgICAgICAgICBsZXhDdXJyZW50VG9rZW5BZ2FpblVuZGVy
Q3VycmVudENvbnRleHQoY29udGV4dCk7CiAgICAgfQogCiAgICAgaWYgKG5ld0luZm8pCkBAIC0y
ODY0LDExICsyODY1LDExIEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZUNsYXNz
RXhwcmVzc2lvbiBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VDbGFzcyhUCiAgICAgICAgIENsYXNz
RWxlbWVudFRhZyB0YWcgPSBDbGFzc0VsZW1lbnRUYWc6Okluc3RhbmNlOwogICAgICAgICBhdXRv
IHR5cGUgPSBQcm9wZXJ0eU5vZGU6OkNvbnN0YW50OwogICAgICAgICBpZiAobWF0Y2goUkVTRVJW
RURfSUZfU1RSSUNUKSAmJiAqbV90b2tlbi5tX2RhdGEuaWRlbnQgPT0gbV92bS5wcm9wZXJ0eU5h
bWVzLT5zdGF0aWNLZXl3b3JkKSB7Ci0gICAgICAgICAgICBTYXZlUG9pbnQgc2F2ZVBvaW50ID0g
Y3JlYXRlU2F2ZVBvaW50KCk7CisgICAgICAgICAgICBTYXZlUG9pbnQgc2F2ZVBvaW50ID0gY3Jl
YXRlU2F2ZVBvaW50KGNvbnRleHQpOwogICAgICAgICAgICAgbmV4dCgpOwogICAgICAgICAgICAg
aWYgKG1hdGNoKE9QRU5QQVJFTikpIHsKICAgICAgICAgICAgICAgICAvLyBSZXBhcnNlICJzdGF0
aWMoKSIgYXMgYSBtZXRob2QgbmFtZWQgInN0YXRpYyIuCi0gICAgICAgICAgICAgICAgcmVzdG9y
ZVNhdmVQb2ludChzYXZlUG9pbnQpOworICAgICAgICAgICAgICAgIHJlc3RvcmVTYXZlUG9pbnQo
Y29udGV4dCwgc2F2ZVBvaW50KTsKICAgICAgICAgICAgIH0gZWxzZQogICAgICAgICAgICAgICAg
IHRhZyA9IENsYXNzRWxlbWVudFRhZzo6U3RhdGljOwogICAgICAgICB9CkBAIC0zNDk0LDcgKzM0
OTUsNyBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVTdGF0ZW1lbnQgUGFyc2Vy
PExleGVyVHlwZT46OnBhcnNlRXhwb3J0RGVjbGFyYQogCiAgICAgICAgIGJvb2wgc3RhcnRzV2l0
aEZ1bmN0aW9uID0gbWF0Y2goRlVOQ1RJT04pOwogICAgICAgICBpZiAoc3RhcnRzV2l0aEZ1bmN0
aW9uIHx8IG1hdGNoKENMQVNTVE9LRU4pKSB7Ci0gICAgICAgICAgICBTYXZlUG9pbnQgc2F2ZVBv
aW50ID0gY3JlYXRlU2F2ZVBvaW50KCk7CisgICAgICAgICAgICBTYXZlUG9pbnQgc2F2ZVBvaW50
ID0gY3JlYXRlU2F2ZVBvaW50KGNvbnRleHQpOwogICAgICAgICAgICAgaXNGdW5jdGlvbk9yQ2xh
c3NEZWNsYXJhdGlvbiA9IHRydWU7CiAgICAgICAgICAgICBuZXh0KCk7CiAKQEAgLTM1MDMsOSAr
MzUwNCw5IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZVN0YXRlbWVudCBQYXJz
ZXI8TGV4ZXJUeXBlPjo6cGFyc2VFeHBvcnREZWNsYXJhCiAgICAgICAgICAgICAgICAgbmV4dCgp
OwogICAgICAgICAgICAgaWYgKG1hdGNoKElERU5UKSkKICAgICAgICAgICAgICAgICBsb2NhbE5h
bWUgPSBtX3Rva2VuLm1fZGF0YS5pZGVudDsKLSAgICAgICAgICAgIHJlc3RvcmVTYXZlUG9pbnQo
c2F2ZVBvaW50KTsKKyAgICAgICAgICAgIHJlc3RvcmVTYXZlUG9pbnQoY29udGV4dCwgc2F2ZVBv
aW50KTsKICAgICAgICAgfSBlbHNlIGlmIChtYXRjaENvbnRleHR1YWxLZXl3b3JkKG1fdm0ucHJv
cGVydHlOYW1lcy0+YXN5bmMpKSB7Ci0gICAgICAgICAgICBTYXZlUG9pbnQgc2F2ZVBvaW50ID0g
Y3JlYXRlU2F2ZVBvaW50KCk7CisgICAgICAgICAgICBTYXZlUG9pbnQgc2F2ZVBvaW50ID0gY3Jl
YXRlU2F2ZVBvaW50KGNvbnRleHQpOwogICAgICAgICAgICAgbmV4dCgpOwogICAgICAgICAgICAg
aWYgKG1hdGNoKEZVTkNUSU9OKSAmJiAhbV9sZXhlci0+aGFzTGluZVRlcm1pbmF0b3JCZWZvcmVU
b2tlbigpKSB7CiAgICAgICAgICAgICAgICAgbmV4dCgpOwpAQCAtMzUxMyw3ICszNTE0LDcgQEAg
dGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlU3RhdGVtZW50IFBhcnNlcjxMZXhlclR5
cGU+OjpwYXJzZUV4cG9ydERlY2xhcmEKICAgICAgICAgICAgICAgICAgICAgbG9jYWxOYW1lID0g
bV90b2tlbi5tX2RhdGEuaWRlbnQ7CiAgICAgICAgICAgICAgICAgaXNGdW5jdGlvbk9yQ2xhc3NE
ZWNsYXJhdGlvbiA9IHRydWU7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICByZXN0b3JlU2F2
ZVBvaW50KHNhdmVQb2ludCk7CisgICAgICAgICAgICByZXN0b3JlU2F2ZVBvaW50KGNvbnRleHQs
IHNhdmVQb2ludCk7CiAgICAgICAgIH0KIAogICAgICAgICBpZiAoIWxvY2FsTmFtZSkKQEAgLTM3
NTksNyArMzc2MCw3IEBAIHRlbXBsYXRlIDx0eXBlbmFtZSBUcmVlQnVpbGRlcj4gVHJlZUV4cHJl
c3Npb24gUGFyc2VyPExleGVyVHlwZT46OnBhcnNlQXNzaWdubWVuCiAgICAgLy8gV2hldGhlciBz
cGVjIGlkZW50aWZpZXIgaXMgd2lsbCBiZSB2YWxpZGF0ZWQgYnkgaXNBcnJvd0Z1bmN0aW9uUGFy
YW1ldGVycygpLgogICAgIGJvb2wgd2FzSWRlbnRpZmllck9yS2V5d29yZCA9IGlzSWRlbnRpZmll
ck9yS2V5d29yZChtX3Rva2VuKTsKICAgICBib29sIG1heWJlVmFsaWRBcnJvd0Z1bmN0aW9uU3Rh
cnQgPSB3YXNPcGVuUGFyZW4gfHwgd2FzSWRlbnRpZmllck9yS2V5d29yZDsKLSAgICBTYXZlUG9p
bnQgc2F2ZVBvaW50ID0gY3JlYXRlU2F2ZVBvaW50KCk7CisgICAgU2F2ZVBvaW50IHNhdmVQb2lu
dCA9IGNyZWF0ZVNhdmVQb2ludChjb250ZXh0KTsKICAgICBzaXplX3QgdXNlZFZhcmlhYmxlc1Np
emUgPSAwOwogCiAgICAgaWYgKHdhc09wZW5QYXJlbikgewpAQCAtMzc3Miw4ICszNzczLDcgQEAg
dGVtcGxhdGUgPHR5cGVuYW1lIFRyZWVCdWlsZGVyPiBUcmVlRXhwcmVzc2lvbiBQYXJzZXI8TGV4
ZXJUeXBlPjo6cGFyc2VBc3NpZ25tZW4KICAgICBpZiAobWF5YmVWYWxpZEFycm93RnVuY3Rpb25T
dGFydCAmJiAhbWF0Y2goRU9GVE9LKSkgewogICAgICAgICBib29sIGlzQXJyb3dGdW5jdGlvblRv
a2VuID0gbWF0Y2goQVJST1dGVU5DVElPTik7CiAgICAgICAgIGlmICghbGhzIHx8IGlzQXJyb3dG
dW5jdGlvblRva2VuKSB7Ci0gICAgICAgICAgICBTYXZlUG9pbnRXaXRoRXJyb3IgZXJyb3JSZXN0
b3JhdGlvblNhdmVQb2ludCA9IGNyZWF0ZVNhdmVQb2ludEZvckVycm9yKCk7Ci0gICAgICAgICAg
ICByZXN0b3JlU2F2ZVBvaW50KHNhdmVQb2ludCk7CisgICAgICAgICAgICBTYXZlUG9pbnRXaXRo
RXJyb3IgZXJyb3JSZXN0b3JhdGlvblNhdmVQb2ludCA9IHN3YXBTYXZlUG9pbnRGb3JFcnJvcihj
b250ZXh0LCBzYXZlUG9pbnQpOwogICAgICAgICAgICAgYm9vbCBpc0FzeW5jQXJyb3cgPSBmYWxz
ZTsKICAgICAgICAgICAgIGlmIChVTkxJS0VMWShjbGFzc2lmaWVyLmluZGljYXRlc1Bvc3NpYmxl
QXN5bmNBcnJvd0Z1bmN0aW9uKCkpKSB7CiAgICAgICAgICAgICAgICAgaWYgKG1hdGNoQ29udGV4
dHVhbEtleXdvcmQobV92bS5wcm9wZXJ0eU5hbWVzLT5hc3luYykpIHsKQEAgLTM3ODEsMTQgKzM3
ODEsMTQgQEAgdGVtcGxhdGUgPHR5cGVuYW1lIFRyZWVCdWlsZGVyPiBUcmVlRXhwcmVzc2lvbiBQ
YXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VBc3NpZ25tZW4KICAgICAgICAgICAgICAgICAgICAgaXNB
c3luY0Fycm93ID0gIW1fbGV4ZXItPmhhc0xpbmVUZXJtaW5hdG9yQmVmb3JlVG9rZW4oKTsKICAg
ICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBpZiAoaXNBcnJvd0Z1
bmN0aW9uUGFyYW1ldGVycygpKSB7CisgICAgICAgICAgICBpZiAoaXNBcnJvd0Z1bmN0aW9uUGFy
YW1ldGVycyhjb250ZXh0KSkgewogICAgICAgICAgICAgICAgIGlmICh3YXNPcGVuUGFyZW4pCiAg
ICAgICAgICAgICAgICAgICAgIGN1cnJlbnRTY29wZSgpLT5yZXZlcnRUb1ByZXZpb3VzVXNlZFZh
cmlhYmxlcyh1c2VkVmFyaWFibGVzU2l6ZSk7CiAgICAgICAgICAgICAgICAgcmV0dXJuIHBhcnNl
QXJyb3dGdW5jdGlvbkV4cHJlc3Npb24oY29udGV4dCwgaXNBc3luY0Fycm93KTsKICAgICAgICAg
ICAgIH0KICAgICAgICAgICAgIGlmIChpc0Fycm93RnVuY3Rpb25Ub2tlbikKICAgICAgICAgICAg
ICAgICBwcm9wYWdhdGVFcnJvcigpOwotICAgICAgICAgICAgcmVzdG9yZVNhdmVQb2ludFdpdGhF
cnJvcihlcnJvclJlc3RvcmF0aW9uU2F2ZVBvaW50KTsKKyAgICAgICAgICAgIHJlc3RvcmVTYXZl
UG9pbnRXaXRoRXJyb3IoY29udGV4dCwgZXJyb3JSZXN0b3JhdGlvblNhdmVQb2ludCk7CiAgICAg
ICAgICAgICBpZiAoaXNBcnJvd0Z1bmN0aW9uVG9rZW4pCiAgICAgICAgICAgICAgICAgZmFpbER1
ZVRvVW5leHBlY3RlZFRva2VuKCk7CiAgICAgICAgIH0KQEAgLTM3OTgsMTEgKzM3OTgsMTAgQEAg
dGVtcGxhdGUgPHR5cGVuYW1lIFRyZWVCdWlsZGVyPiBUcmVlRXhwcmVzc2lvbiBQYXJzZXI8TGV4
ZXJUeXBlPjo6cGFyc2VBc3NpZ25tZW4KICAgICAgICAgcHJvcGFnYXRlRXJyb3IoKTsKIAogICAg
IGlmIChtYXliZUFzc2lnbm1lbnRQYXR0ZXJuICYmICghbGhzIHx8IChjb250ZXh0LmlzT2JqZWN0
T3JBcnJheUxpdGVyYWwobGhzKSAmJiBtYXRjaChFUVVBTCkpKSkgewotICAgICAgICBTYXZlUG9p
bnRXaXRoRXJyb3IgZXhwcmVzc2lvbkVycm9yTG9jYXRpb24gPSBjcmVhdGVTYXZlUG9pbnRGb3JF
cnJvcigpOwotICAgICAgICByZXN0b3JlU2F2ZVBvaW50KHNhdmVQb2ludCk7CisgICAgICAgIFNh
dmVQb2ludFdpdGhFcnJvciBleHByZXNzaW9uRXJyb3JMb2NhdGlvbiA9IHN3YXBTYXZlUG9pbnRG
b3JFcnJvcihjb250ZXh0LCBzYXZlUG9pbnQpOwogICAgICAgICBhdXRvIHBhdHRlcm4gPSB0cnlQ
YXJzZURlc3RydWN0dXJpbmdQYXR0ZXJuRXhwcmVzc2lvbihjb250ZXh0LCBBc3NpZ25tZW50Q29u
dGV4dDo6QXNzaWdubWVudEV4cHJlc3Npb24pOwogICAgICAgICBpZiAoY2xhc3NpZmllci5pbmRp
Y2F0ZXNQb3NzaWJsZVBhdHRlcm4oKSAmJiAoIXBhdHRlcm4gfHwgIW1hdGNoKEVRVUFMKSkpIHsK
LSAgICAgICAgICAgIHJlc3RvcmVTYXZlUG9pbnRXaXRoRXJyb3IoZXhwcmVzc2lvbkVycm9yTG9j
YXRpb24pOworICAgICAgICAgICAgcmVzdG9yZVNhdmVQb2ludFdpdGhFcnJvcihjb250ZXh0LCBl
eHByZXNzaW9uRXJyb3JMb2NhdGlvbik7CiAgICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICAg
fQogICAgICAgICBmYWlsSWZGYWxzZShwYXR0ZXJuLCAiQ2Fubm90IHBhcnNlIGFzc2lnbm1lbnQg
cGF0dGVybiIpOwpAQCAtMzg2Nyw5ICszODY2LDYgQEAgZW5kOgogICAgIGlmIChoYWRBc3NpZ25t
ZW50KQogICAgICAgICBtX3BhcnNlclN0YXRlLm5vbkxIU0NvdW50Kys7CiAgICAgCi0gICAgaWYg
KCFUcmVlQnVpbGRlcjo6Q3JlYXRlc0FTVCkKLSAgICAgICAgcmV0dXJuIGxoczsKLSAgICAKICAg
ICB3aGlsZSAoYXNzaWdubWVudFN0YWNrKQogICAgICAgICBsaHMgPSBjb250ZXh0LmNyZWF0ZUFz
c2lnbm1lbnQobG9jYXRpb24sIGFzc2lnbm1lbnRTdGFjaywgbGhzLCBpbml0aWFsQXNzaWdubWVu
dENvdW50LCBtX3BhcnNlclN0YXRlLmFzc2lnbm1lbnRDb3VudCwgbGFzdFRva2VuRW5kUG9zaXRp
b24oKSk7CiAgICAgCkBAIC0zODkzLDcgKzM4ODksNyBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1
aWxkZXI+IFRyZWVFeHByZXNzaW9uIFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZVlpZWxkRXhwcmVz
cwogICAgIEpTVG9rZW5Mb2NhdGlvbiBsb2NhdGlvbih0b2tlbkxvY2F0aW9uKCkpOwogICAgIEpT
VGV4dFBvc2l0aW9uIGRpdm90U3RhcnQgPSB0b2tlblN0YXJ0UG9zaXRpb24oKTsKICAgICBBU1NF
UlQobWF0Y2goWUlFTEQpKTsKLSAgICBTYXZlUG9pbnQgc2F2ZVBvaW50ID0gY3JlYXRlU2F2ZVBv
aW50KCk7CisgICAgU2F2ZVBvaW50IHNhdmVQb2ludCA9IGNyZWF0ZVNhdmVQb2ludChjb250ZXh0
KTsKICAgICBuZXh0KCk7CiAgICAgaWYgKG1fbGV4ZXItPmhhc0xpbmVUZXJtaW5hdG9yQmVmb3Jl
VG9rZW4oKSkKICAgICAgICAgcmV0dXJuIGNvbnRleHQuY3JlYXRlWWllbGQobG9jYXRpb24pOwpA
QCAtMzkwMiw3ICszODk4LDcgQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlRXhw
cmVzc2lvbiBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VZaWVsZEV4cHJlc3MKICAgICBKU1RleHRQ
b3NpdGlvbiBhcmd1bWVudFN0YXJ0ID0gdG9rZW5TdGFydFBvc2l0aW9uKCk7CiAgICAgVHJlZUV4
cHJlc3Npb24gYXJndW1lbnQgPSBwYXJzZUFzc2lnbm1lbnRFeHByZXNzaW9uKGNvbnRleHQpOwog
ICAgIGlmICghYXJndW1lbnQpIHsKLSAgICAgICAgcmVzdG9yZVNhdmVQb2ludChzYXZlUG9pbnQp
OworICAgICAgICByZXN0b3JlU2F2ZVBvaW50KGNvbnRleHQsIHNhdmVQb2ludCk7CiAgICAgICAg
IG5leHQoKTsKICAgICAgICAgcmV0dXJuIGNvbnRleHQuY3JlYXRlWWllbGQobG9jYXRpb24pOwog
ICAgIH0KQEAgLTQwNTcsMTEgKzQwNTMsMTEgQEAgcGFyc2VQcm9wZXJ0eToKICAgICBjYXNlIElE
RU5UOgogICAgICAgICBpZiAoVU5MSUtFTFkoKm1fdG9rZW4ubV9kYXRhLmlkZW50ID09IG1fdm0u
cHJvcGVydHlOYW1lcy0+YXN5bmMgJiYgIW1fdG9rZW4ubV9kYXRhLmVzY2FwZWQpKSB7CiAgICAg
ICAgICAgICBpZiAocGFyc2VNb2RlID09IFNvdXJjZVBhcnNlTW9kZTo6TWV0aG9kTW9kZSkgewot
ICAgICAgICAgICAgICAgIFNhdmVQb2ludCBzYXZlUG9pbnQgPSBjcmVhdGVTYXZlUG9pbnQoKTsK
KyAgICAgICAgICAgICAgICBTYXZlUG9pbnQgc2F2ZVBvaW50ID0gY3JlYXRlU2F2ZVBvaW50KGNv
bnRleHQpOwogICAgICAgICAgICAgICAgIG5leHQoKTsKIAogICAgICAgICAgICAgICAgIGlmICht
YXRjaChDT0xPTikgfHwgbWF0Y2goT1BFTlBBUkVOKSB8fCBtYXRjaChDT01NQSkgfHwgbWF0Y2go
Q0xPU0VCUkFDRSkpIHsKLSAgICAgICAgICAgICAgICAgICAgcmVzdG9yZVNhdmVQb2ludChzYXZl
UG9pbnQpOworICAgICAgICAgICAgICAgICAgICByZXN0b3JlU2F2ZVBvaW50KGNvbnRleHQsIHNh
dmVQb2ludCk7CiAgICAgICAgICAgICAgICAgICAgIHdhc0lkZW50ID0gdHJ1ZTsKICAgICAgICAg
ICAgICAgICAgICAgZ290byBuYW1lZFByb3BlcnR5OwogICAgICAgICAgICAgICAgIH0KQEAgLTQ4
NTYsMTMgKzQ4NTIsMTMgQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlRXhwcmVz
c2lvbiBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VNZW1iZXJFeHByZXMKICAgICAgICAgICAgIG9w
dGlvbmFsQ2hhaW5CYXNlID0gYmFzZTsKICAgICAgICAgICAgIG9wdGlvbmFsQ2hhaW5Mb2NhdGlv
biA9IHRva2VuTG9jYXRpb24oKTsKIAotICAgICAgICAgICAgU2F2ZVBvaW50IHNhdmVQb2ludCA9
IGNyZWF0ZVNhdmVQb2ludCgpOworICAgICAgICAgICAgU2F2ZVBvaW50IHNhdmVQb2ludCA9IGNy
ZWF0ZVNhdmVQb2ludChjb250ZXh0KTsKICAgICAgICAgICAgIG5leHQoKTsKICAgICAgICAgICAg
IGlmIChtYXRjaChPUEVOQlJBQ0tFVCkgfHwgbWF0Y2goT1BFTlBBUkVOKSB8fCBtYXRjaChCQUNL
UVVPVEUpKQogICAgICAgICAgICAgICAgIHR5cGUgPSBtX3Rva2VuLm1fdHlwZTsKICAgICAgICAg
ICAgIGVsc2UgewogICAgICAgICAgICAgICAgIHR5cGUgPSBET1Q7Ci0gICAgICAgICAgICAgICAg
cmVzdG9yZVNhdmVQb2ludChzYXZlUG9pbnQpOworICAgICAgICAgICAgICAgIHJlc3RvcmVTYXZl
UG9pbnQoY29udGV4dCwgc2F2ZVBvaW50KTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogCkBA
IC01MDQyLDE5ICs1MDM4LDE1IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZUV4
cHJlc3Npb24gUGFyc2VyPExleGVyVHlwZT46OnBhcnNlVW5hcnlFeHByZXNzCiAKICAgICBKU1Rv
a2VuTG9jYXRpb24gbG9jYXRpb24odG9rZW5Mb2NhdGlvbigpKTsKIAorICAgIGludCBvbGRUb2tl
blN0YWNrRGVwdGggPSBjb250ZXh0LnVuYXJ5VG9rZW5TdGFja0RlcHRoKCk7CisgICAgbWFrZVNj
b3BlRXhpdChbJl0geworICAgICAgICBBU1NFUlRfVU5VU0VEKG9sZFRva2VuU3RhY2tEZXB0aCwg
b2xkVG9rZW5TdGFja0RlcHRoIDw9IGNvbnRleHQudW5hcnlUb2tlblN0YWNrRGVwdGgoKSk7Cisg
ICAgfSk7CisKICAgICB3aGlsZSAoaXNVbmFyeU9wKG1fdG9rZW4ubV90eXBlKSkgewotICAgICAg
ICBzd2l0Y2ggKG1fdG9rZW4ubV90eXBlKSB7Ci0gICAgICAgIGNhc2UgUExVU1BMVVM6Ci0gICAg
ICAgIGNhc2UgTUlOVVNNSU5VUzoKLSAgICAgICAgY2FzZSBBVVRPUExVU1BMVVM6Ci0gICAgICAg
IGNhc2UgQVVUT01JTlVTTUlOVVM6Ci0gICAgICAgICAgICBzZW1hbnRpY0ZhaWxJZlRydWUoaGFz
UHJlZml4VXBkYXRlT3AsICJUaGUgIiwgb3BlcmF0b3JTdHJpbmcodHJ1ZSwgbGFzdE9wZXJhdG9y
KSwgIiBvcGVyYXRvciByZXF1aXJlcyBhIHJlZmVyZW5jZSBleHByZXNzaW9uIik7CisgICAgICAg
IHNlbWFudGljRmFpbElmVHJ1ZShoYXNQcmVmaXhVcGRhdGVPcCwgIlRoZSAiLCBvcGVyYXRvclN0
cmluZyh0cnVlLCBsYXN0T3BlcmF0b3IpLCAiIG9wZXJhdG9yIHJlcXVpcmVzIGEgcmVmZXJlbmNl
IGV4cHJlc3Npb24iKTsKKyAgICAgICAgaWYgKGlzVXBkYXRlT3AobV90b2tlbi5tX3R5cGUpKQog
ICAgICAgICAgICAgaGFzUHJlZml4VXBkYXRlT3AgPSB0cnVlOwotICAgICAgICAgICAgYnJlYWs7
Ci0gICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICBzZW1hbnRpY0ZhaWxJZlRydWUoaGFzUHJl
Zml4VXBkYXRlT3AsICJUaGUgIiwgb3BlcmF0b3JTdHJpbmcodHJ1ZSwgbGFzdE9wZXJhdG9yKSwg
IiBvcGVyYXRvciByZXF1aXJlcyBhIHJlZmVyZW5jZSBleHByZXNzaW9uIik7Ci0gICAgICAgICAg
ICBicmVhazsKLSAgICAgICAgfQogICAgICAgICBsYXN0T3BlcmF0b3IgPSBtX3Rva2VuLm1fdHlw
ZTsKICAgICAgICAgbV9wYXJzZXJTdGF0ZS5ub25MSFNDb3VudCsrOwogICAgICAgICBjb250ZXh0
LmFwcGVuZFVuYXJ5VG9rZW4odG9rZW5TdGFja0RlcHRoLCBtX3Rva2VuLm1fdHlwZSwgdG9rZW5T
dGFydFBvc2l0aW9uKCkpOwpAQCAtNTA2OSw2ICs1MDYxLDggQEAgdGVtcGxhdGUgPGNsYXNzIFRy
ZWVCdWlsZGVyPiBUcmVlRXhwcmVzc2lvbiBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VVbmFyeUV4
cHJlc3MKICAgICAgICAgICAgIGZhaWxXaXRoTWVzc2FnZSgiQ2Fubm90IHBhcnNlIHN1YmV4cHJl
c3Npb24gb2YgIiwgb3BlcmF0b3JTdHJpbmcodHJ1ZSwgbGFzdE9wZXJhdG9yKSwgIm9wZXJhdG9y
Iik7CiAgICAgICAgIGZhaWxXaXRoTWVzc2FnZSgiQ2Fubm90IHBhcnNlIG1lbWJlciBleHByZXNz
aW9uIik7CiAgICAgfQorICAgIGlmIGNvbnN0ZXhwciAoc3RkOjppc19zYW1lX3Y8VHJlZUJ1aWxk
ZXIsIEFTVEJ1aWxkZXI+KQorICAgICAgICBBU1NFUlQob2xkVG9rZW5TdGFja0RlcHRoICsgdG9r
ZW5TdGFja0RlcHRoID09IGNvbnRleHQudW5hcnlUb2tlblN0YWNrRGVwdGgoKSk7CiAgICAgaWYg
KGlzVXBkYXRlT3Aoc3RhdGljX2Nhc3Q8SlNUb2tlblR5cGU+KGxhc3RPcGVyYXRvcikpKSB7CiAg
ICAgICAgIHNlbWFudGljRmFpbElmVHJ1ZShjb250ZXh0LmlzTWV0YVByb3BlcnR5KGV4cHIpLCBt
ZXRhUHJvcGVydHlOYW1lKGNvbnRleHQsIGV4cHIpLCAiIGNhbid0IGNvbWUgYWZ0ZXIgYSBwcmVm
aXggb3BlcmF0b3IiKTsKICAgICAgICAgc2VtYW50aWNGYWlsSWZGYWxzZShpc1NpbXBsZUFzc2ln
bm1lbnRUYXJnZXQoY29udGV4dCwgZXhwciksICJQcmVmaXggIiwgbGFzdE9wZXJhdG9yID09IFBM
VVNQTFVTID8gIisrIiA6ICItLSIsICIgb3BlcmF0b3IgYXBwbGllZCB0byB2YWx1ZSB0aGF0IGlz
IG5vdCBhIHJlZmVyZW5jZSIpOwpAQCAtNTEwOCw3ICs1MTAyLDkgQEAgdGVtcGxhdGUgPGNsYXNz
IFRyZWVCdWlsZGVyPiBUcmVlRXhwcmVzc2lvbiBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VVbmFy
eUV4cHJlc3MKICAgICAKICAgICBKU1RleHRQb3NpdGlvbiBlbmQgPSBsYXN0VG9rZW5FbmRQb3Np
dGlvbigpOwogICAgIHdoaWxlICh0b2tlblN0YWNrRGVwdGgpIHsKLSAgICAgICAgc3dpdGNoIChj
b250ZXh0LnVuYXJ5VG9rZW5TdGFja0xhc3RUeXBlKHRva2VuU3RhY2tEZXB0aCkpIHsKKyAgICAg
ICAgc3ViRXhwclN0YXJ0ID0gY29udGV4dC51bmFyeVRva2VuU3RhY2tMYXN0U3RhcnQodG9rZW5T
dGFja0RlcHRoKTsKKyAgICAgICAgYXV0byB0b2tlblR5cGUgPSBjb250ZXh0LnVuYXJ5VG9rZW5T
dGFja0xhc3RUeXBlKHRva2VuU3RhY2tEZXB0aCk7CisgICAgICAgIHN3aXRjaCAodG9rZW5UeXBl
KSB7CiAgICAgICAgIGNhc2UgRVhDTEFNQVRJT046CiAgICAgICAgICAgICBleHByID0gY29udGV4
dC5jcmVhdGVMb2dpY2FsTm90KGxvY2F0aW9uLCBleHByKTsKICAgICAgICAgICAgIGJyZWFrOwpA
QCAtNTEyMywxMiArNTExOSwxNCBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVF
eHByZXNzaW9uIFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZVVuYXJ5RXhwcmVzcwogICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgIGNhc2UgUExVU1BMVVM6CiAgICAgICAgIGNhc2UgQVVUT1BMVVNQ
TFVTOgotICAgICAgICAgICAgZXhwciA9IGNvbnRleHQubWFrZVByZWZpeE5vZGUobG9jYXRpb24s
IGV4cHIsIE9wUGx1c1BsdXMsIGNvbnRleHQudW5hcnlUb2tlblN0YWNrTGFzdFN0YXJ0KHRva2Vu
U3RhY2tEZXB0aCksIHN1YkV4cHJTdGFydCArIDEsIGVuZCk7CisgICAgICAgICAgICBBU1NFUlQo
aXNTaW1wbGVBc3NpZ25tZW50VGFyZ2V0KGNvbnRleHQsIGV4cHIpKTsKKyAgICAgICAgICAgIGV4
cHIgPSBjb250ZXh0Lm1ha2VQcmVmaXhOb2RlKGxvY2F0aW9uLCBleHByLCBPcFBsdXNQbHVzLCBz
dWJFeHByU3RhcnQsIHN1YkV4cHJTdGFydCArIDIsIGVuZCk7CiAgICAgICAgICAgICBtX3BhcnNl
clN0YXRlLmFzc2lnbm1lbnRDb3VudCsrOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNh
c2UgTUlOVVNNSU5VUzoKICAgICAgICAgY2FzZSBBVVRPTUlOVVNNSU5VUzoKLSAgICAgICAgICAg
IGV4cHIgPSBjb250ZXh0Lm1ha2VQcmVmaXhOb2RlKGxvY2F0aW9uLCBleHByLCBPcE1pbnVzTWlu
dXMsIGNvbnRleHQudW5hcnlUb2tlblN0YWNrTGFzdFN0YXJ0KHRva2VuU3RhY2tEZXB0aCksIHN1
YkV4cHJTdGFydCArIDEsIGVuZCk7CisgICAgICAgICAgICBBU1NFUlQoaXNTaW1wbGVBc3NpZ25t
ZW50VGFyZ2V0KGNvbnRleHQsIGV4cHIpKTsKKyAgICAgICAgICAgIGV4cHIgPSBjb250ZXh0Lm1h
a2VQcmVmaXhOb2RlKGxvY2F0aW9uLCBleHByLCBPcE1pbnVzTWludXMsIHN1YkV4cHJTdGFydCwg
c3ViRXhwclN0YXJ0ICsgMiwgZW5kKTsKICAgICAgICAgICAgIG1fcGFyc2VyU3RhdGUuYXNzaWdu
bWVudENvdW50Kys7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBUWVBFT0Y6CkBA
IC01MTQ1LDcgKzUxNDMsNiBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVFeHBy
ZXNzaW9uIFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZVVuYXJ5RXhwcmVzcwogICAgICAgICAgICAg
Ly8gSWYgd2UgZ2V0IGhlcmUgc29tZXRoaW5nIGhhcyBnb25lIGhvcnJpYmx5IGhvcnJpYmx5IHdy
b25nCiAgICAgICAgICAgICBDUkFTSCgpOwogICAgICAgICB9Ci0gICAgICAgIHN1YkV4cHJTdGFy
dCA9IGNvbnRleHQudW5hcnlUb2tlblN0YWNrTGFzdFN0YXJ0KHRva2VuU3RhY2tEZXB0aCk7CiAg
ICAgICAgIGNvbnRleHQudW5hcnlUb2tlblN0YWNrUmVtb3ZlTGFzdCh0b2tlblN0YWNrRGVwdGgp
OwogICAgIH0KICAgICByZXR1cm4gZXhwcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9wYXJzZXIvUGFyc2VyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNl
ci5oCmluZGV4IDc1MjllNjYyNDQ2OGM5NjAxMmI2NTkwMGY0ODU0M2NiMjAxOWI3YmYuLmFlODYz
MTlkNjc5YmYzMDhmZTJkODk0NjA3NzY2NDZkOTMxNjBjMjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3BhcnNlci9QYXJzZXIuaApAQCAtMTQxNywxMCArMTQxNywxMSBAQCBwcml2YXRlOgogICAgICAg
ICBtX3Rva2VuLm1fdHlwZSA9IG1fbGV4ZXItPmxleEV4cGVjdElkZW50aWZpZXIoJm1fdG9rZW4s
IGxleGVyRmxhZ3MsIHN0cmljdE1vZGUoKSk7CiAgICAgfQogCi0gICAgQUxXQVlTX0lOTElORSB2
b2lkIGxleEN1cnJlbnRUb2tlbkFnYWluVW5kZXJDdXJyZW50Q29udGV4dCgpCisgICAgdGVtcGxh
dGUgPGNsYXNzIFRyZWVCdWlsZGVyPgorICAgIEFMV0FZU19JTkxJTkUgdm9pZCBsZXhDdXJyZW50
VG9rZW5BZ2FpblVuZGVyQ3VycmVudENvbnRleHQoVHJlZUJ1aWxkZXImIGNvbnRleHQpCiAgICAg
ewotICAgICAgICBhdXRvIHNhdmVQb2ludCA9IGNyZWF0ZVNhdmVQb2ludCgpOwotICAgICAgICBy
ZXN0b3JlU2F2ZVBvaW50KHNhdmVQb2ludCk7CisgICAgICAgIGF1dG8gc2F2ZVBvaW50ID0gY3Jl
YXRlU2F2ZVBvaW50KGNvbnRleHQpOworICAgICAgICByZXN0b3JlU2F2ZVBvaW50KGNvbnRleHQs
IHNhdmVQb2ludCk7CiAgICAgfQogCiAgICAgQUxXQVlTX0lOTElORSBib29sIG5leHRUb2tlbklz
Q29sb24oKQpAQCAtMTY4NSw3ICsxNjg2LDcgQEAgcHJpdmF0ZToKICAgICBlbnVtIGNsYXNzIEZ1
bmN0aW9uRGVmaW5pdGlvblR5cGUgeyBFeHByZXNzaW9uLCBEZWNsYXJhdGlvbiwgTWV0aG9kIH07
CiAgICAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBORVZFUl9JTkxJTkUgYm9vbCBwYXJz
ZUZ1bmN0aW9uSW5mbyhUcmVlQnVpbGRlciYsIEZ1bmN0aW9uTmFtZVJlcXVpcmVtZW50cywgU291
cmNlUGFyc2VNb2RlLCBib29sIG5hbWVJc0luQ29udGFpbmluZ1Njb3BlLCBDb25zdHJ1Y3Rvcktp
bmQsIFN1cGVyQmluZGluZywgaW50IGZ1bmN0aW9uS2V5d29yZFN0YXJ0LCBQYXJzZXJGdW5jdGlv
bkluZm88VHJlZUJ1aWxkZXI+JiwgRnVuY3Rpb25EZWZpbml0aW9uVHlwZSwgT3B0aW9uYWw8aW50
PiBmdW5jdGlvbkNvbnN0cnVjdG9yUGFyYW1ldGVyc0VuZFBvc2l0aW9uID0gV1RGOjpudWxsb3B0
KTsKICAgICAKLSAgICBBTFdBWVNfSU5MSU5FIGJvb2wgaXNBcnJvd0Z1bmN0aW9uUGFyYW1ldGVy
cygpOworICAgIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gQUxXQVlTX0lOTElORSBib29s
IGlzQXJyb3dGdW5jdGlvblBhcmFtZXRlcnMoVHJlZUJ1aWxkZXImKTsKICAgICAKICAgICB0ZW1w
bGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXIsIGNsYXNzIEZ1bmN0aW9uSW5mb1R5cGU+IE5FVkVSX0lO
TElORSB0eXBlbmFtZSBUcmVlQnVpbGRlcjo6Rm9ybWFsUGFyYW1ldGVyTGlzdCBwYXJzZUZ1bmN0
aW9uUGFyYW1ldGVycyhUcmVlQnVpbGRlciYsIFNvdXJjZVBhcnNlTW9kZSwgRnVuY3Rpb25JbmZv
VHlwZSYpOwogICAgIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gTkVWRVJfSU5MSU5FIHR5
cGVuYW1lIFRyZWVCdWlsZGVyOjpGb3JtYWxQYXJhbWV0ZXJMaXN0IGNyZWF0ZUdlbmVyYXRvclBh
cmFtZXRlcnMoVHJlZUJ1aWxkZXImLCB1bnNpZ25lZCYgcGFyYW1ldGVyQ291bnQpOwpAQCAtMTc5
MSw2ICsxNzkyLDcgQEAgcHJpdmF0ZToKICAgICAgICAgaW50IGFzc2lnbm1lbnRDb3VudCB7IDAg
fTsKICAgICAgICAgaW50IG5vbkxIU0NvdW50IHsgMCB9OwogICAgICAgICBpbnQgbm9uVHJpdmlh
bEV4cHJlc3Npb25Db3VudCB7IDAgfTsKKyAgICAgICAgaW50IHVuYXJ5VG9rZW5TdGFja0RlcHRo
IHsgMCB9OwogICAgICAgICBGdW5jdGlvblBhcnNlUGhhc2UgZnVuY3Rpb25QYXJzZVBoYXNlIHsg
RnVuY3Rpb25QYXJzZVBoYXNlOjpCb2R5IH07CiAgICAgICAgIGNvbnN0IElkZW50aWZpZXIqIGxh
c3RJZGVudGlmaWVyIHsgbnVsbHB0ciB9OwogICAgICAgICBjb25zdCBJZGVudGlmaWVyKiBsYXN0
RnVuY3Rpb25OYW1lIHsgbnVsbHB0ciB9OwpAQCAtMTgwMCwxNCArMTgwMiwxOSBAQCBwcml2YXRl
OgogCiAgICAgLy8gSWYgeW91J3JlIHVzaW5nIHRoaXMgZGlyZWN0bHksIHlvdSBwcm9iYWJseSBz
aG91bGQgYmUgdXNpbmcKICAgICAvLyBjcmVhdGVTYXZlUG9pbnQoKSBpbnN0ZWFkLgotICAgIEFM
V0FZU19JTkxJTkUgUGFyc2VyU3RhdGUgaW50ZXJuYWxTYXZlUGFyc2VyU3RhdGUoKQorICAgIHRl
bXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4KKyAgICBBTFdBWVNfSU5MSU5FIFBhcnNlclN0YXRl
IGludGVybmFsU2F2ZVBhcnNlclN0YXRlKFRyZWVCdWlsZGVyJiBjb250ZXh0KQogICAgIHsKLSAg
ICAgICAgcmV0dXJuIG1fcGFyc2VyU3RhdGU7CisgICAgICAgIGF1dG8gcGFyc2VyU3RhdGUgPSBt
X3BhcnNlclN0YXRlOworICAgICAgICBwYXJzZXJTdGF0ZS51bmFyeVRva2VuU3RhY2tEZXB0aCA9
IGNvbnRleHQudW5hcnlUb2tlblN0YWNrRGVwdGgoKTsKKyAgICAgICAgcmV0dXJuIHBhcnNlclN0
YXRlOwogICAgIH0KIAotICAgIEFMV0FZU19JTkxJTkUgdm9pZCByZXN0b3JlUGFyc2VyU3RhdGUo
Y29uc3QgUGFyc2VyU3RhdGUmIHN0YXRlKQorICAgIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRl
cj4KKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgcmVzdG9yZVBhcnNlclN0YXRlKFRyZWVCdWlsZGVy
JiBjb250ZXh0LCBjb25zdCBQYXJzZXJTdGF0ZSYgc3RhdGUpCiAgICAgewogICAgICAgICBtX3Bh
cnNlclN0YXRlID0gc3RhdGU7CisgICAgICAgIGNvbnRleHQuc2V0VW5hcnlUb2tlblN0YWNrRGVw
dGgobV9wYXJzZXJTdGF0ZS51bmFyeVRva2VuU3RhY2tEZXB0aCk7CiAgICAgfQogCiAgICAgc3Ry
dWN0IExleGVyU3RhdGUgewpAQCAtMTg1NSw0NyArMTg2Miw1NiBAQCBwcml2YXRlOgogICAgICAg
ICBTdHJpbmcgcGFyc2VyRXJyb3JNZXNzYWdlOwogICAgIH07CiAKLSAgICBBTFdBWVNfSU5MSU5F
IHZvaWQgaW50ZXJuYWxTYXZlU3RhdGUoU2F2ZVBvaW50JiBzYXZlUG9pbnQpCisgICAgdGVtcGxh
dGUgPGNsYXNzIFRyZWVCdWlsZGVyPgorICAgIEFMV0FZU19JTkxJTkUgdm9pZCBpbnRlcm5hbFNh
dmVTdGF0ZShUcmVlQnVpbGRlciYgY29udGV4dCwgU2F2ZVBvaW50JiBzYXZlUG9pbnQpCiAgICAg
ewotICAgICAgICBzYXZlUG9pbnQucGFyc2VyU3RhdGUgPSBpbnRlcm5hbFNhdmVQYXJzZXJTdGF0
ZSgpOworICAgICAgICBzYXZlUG9pbnQucGFyc2VyU3RhdGUgPSBpbnRlcm5hbFNhdmVQYXJzZXJT
dGF0ZShjb250ZXh0KTsKICAgICAgICAgc2F2ZVBvaW50LmxleGVyU3RhdGUgPSBpbnRlcm5hbFNh
dmVMZXhlclN0YXRlKCk7CiAgICAgfQogICAgIAotICAgIEFMV0FZU19JTkxJTkUgU2F2ZVBvaW50
V2l0aEVycm9yIGNyZWF0ZVNhdmVQb2ludEZvckVycm9yKCkKKyAgICB0ZW1wbGF0ZSA8Y2xhc3Mg
VHJlZUJ1aWxkZXI+CisgICAgQUxXQVlTX0lOTElORSBTYXZlUG9pbnRXaXRoRXJyb3Igc3dhcFNh
dmVQb2ludEZvckVycm9yKFRyZWVCdWlsZGVyJiBjb250ZXh0LCBTYXZlUG9pbnQmIG9sZFNhdmVQ
b2ludCkKICAgICB7CiAgICAgICAgIFNhdmVQb2ludFdpdGhFcnJvciBzYXZlUG9pbnQ7Ci0gICAg
ICAgIGludGVybmFsU2F2ZVN0YXRlKHNhdmVQb2ludCk7CisgICAgICAgIGludGVybmFsU2F2ZVN0
YXRlKGNvbnRleHQsIHNhdmVQb2ludCk7CiAgICAgICAgIHNhdmVQb2ludC5sZXhlckVycm9yID0g
bV9sZXhlci0+c2F3RXJyb3IoKTsKICAgICAgICAgc2F2ZVBvaW50LmxleGVyRXJyb3JNZXNzYWdl
ID0gbV9sZXhlci0+Z2V0RXJyb3JNZXNzYWdlKCk7CiAgICAgICAgIHNhdmVQb2ludC5wYXJzZXJF
cnJvck1lc3NhZ2UgPSBtX2Vycm9yTWVzc2FnZTsKKyAgICAgICAgLy8gTWFrZSBzdXJlIHdlIHNl
dCBvdXIgbmV3IHNhdmVwb2ludHMgdW5hcnkgc3RhY2sgdG8gd2hhdCBvbGRTYXZlUG9pbnQgaGFk
IGFzIGl0IGN1cnJlbnRseSBtYXkgY29udGFpbiBzdGFsZSBpbmZvLgorICAgICAgICBzYXZlUG9p
bnQucGFyc2VyU3RhdGUudW5hcnlUb2tlblN0YWNrRGVwdGggPSBvbGRTYXZlUG9pbnQucGFyc2Vy
U3RhdGUudW5hcnlUb2tlblN0YWNrRGVwdGg7CisgICAgICAgIHJlc3RvcmVTYXZlUG9pbnQoY29u
dGV4dCwgb2xkU2F2ZVBvaW50KTsKICAgICAgICAgcmV0dXJuIHNhdmVQb2ludDsKICAgICB9CiAg
ICAgCi0gICAgQUxXQVlTX0lOTElORSBTYXZlUG9pbnQgY3JlYXRlU2F2ZVBvaW50KCkKKyAgICB0
ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+CisgICAgQUxXQVlTX0lOTElORSBTYXZlUG9pbnQg
Y3JlYXRlU2F2ZVBvaW50KFRyZWVCdWlsZGVyJiBjb250ZXh0KQogICAgIHsKICAgICAgICAgQVNT
RVJUKCFoYXNFcnJvcigpKTsKICAgICAgICAgU2F2ZVBvaW50IHNhdmVQb2ludDsKLSAgICAgICAg
aW50ZXJuYWxTYXZlU3RhdGUoc2F2ZVBvaW50KTsKKyAgICAgICAgaW50ZXJuYWxTYXZlU3RhdGUo
Y29udGV4dCwgc2F2ZVBvaW50KTsKICAgICAgICAgcmV0dXJuIHNhdmVQb2ludDsKICAgICB9CiAK
LSAgICBBTFdBWVNfSU5MSU5FIHZvaWQgaW50ZXJuYWxSZXN0b3JlU3RhdGUoY29uc3QgU2F2ZVBv
aW50JiBzYXZlUG9pbnQpCisgICAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPgorICAgIEFM
V0FZU19JTkxJTkUgdm9pZCBpbnRlcm5hbFJlc3RvcmVTdGF0ZShUcmVlQnVpbGRlciYgY29udGV4
dCwgY29uc3QgU2F2ZVBvaW50JiBzYXZlUG9pbnQpCiAgICAgewogICAgICAgICByZXN0b3JlTGV4
ZXJTdGF0ZShzYXZlUG9pbnQubGV4ZXJTdGF0ZSk7Ci0gICAgICAgIHJlc3RvcmVQYXJzZXJTdGF0
ZShzYXZlUG9pbnQucGFyc2VyU3RhdGUpOworICAgICAgICByZXN0b3JlUGFyc2VyU3RhdGUoY29u
dGV4dCwgc2F2ZVBvaW50LnBhcnNlclN0YXRlKTsKICAgICB9CiAKLSAgICBBTFdBWVNfSU5MSU5F
IHZvaWQgcmVzdG9yZVNhdmVQb2ludFdpdGhFcnJvcihjb25zdCBTYXZlUG9pbnRXaXRoRXJyb3Im
IHNhdmVQb2ludCkKKyAgICB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+CisgICAgQUxXQVlT
X0lOTElORSB2b2lkIHJlc3RvcmVTYXZlUG9pbnRXaXRoRXJyb3IoVHJlZUJ1aWxkZXImIGNvbnRl
eHQsIGNvbnN0IFNhdmVQb2ludFdpdGhFcnJvciYgc2F2ZVBvaW50KQogICAgIHsKLSAgICAgICAg
aW50ZXJuYWxSZXN0b3JlU3RhdGUoc2F2ZVBvaW50KTsKKyAgICAgICAgaW50ZXJuYWxSZXN0b3Jl
U3RhdGUoY29udGV4dCwgc2F2ZVBvaW50KTsKICAgICAgICAgbV9sZXhlci0+c2V0U2F3RXJyb3Io
c2F2ZVBvaW50LmxleGVyRXJyb3IpOwogICAgICAgICBtX2xleGVyLT5zZXRFcnJvck1lc3NhZ2Uo
c2F2ZVBvaW50LmxleGVyRXJyb3JNZXNzYWdlKTsKICAgICAgICAgbV9lcnJvck1lc3NhZ2UgPSBz
YXZlUG9pbnQucGFyc2VyRXJyb3JNZXNzYWdlOwogICAgIH0KIAotICAgIEFMV0FZU19JTkxJTkUg
dm9pZCByZXN0b3JlU2F2ZVBvaW50KGNvbnN0IFNhdmVQb2ludCYgc2F2ZVBvaW50KQorICAgIHRl
bXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4KKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgcmVzdG9y
ZVNhdmVQb2ludChUcmVlQnVpbGRlciYgY29udGV4dCwgY29uc3QgU2F2ZVBvaW50JiBzYXZlUG9p
bnQpCiAgICAgewotICAgICAgICBpbnRlcm5hbFJlc3RvcmVTdGF0ZShzYXZlUG9pbnQpOworICAg
ICAgICBpbnRlcm5hbFJlc3RvcmVTdGF0ZShjb250ZXh0LCBzYXZlUG9pbnQpOwogICAgICAgICBt
X2Vycm9yTWVzc2FnZSA9IFN0cmluZygpOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXJUb2tlbnMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9wYXJzZXIvUGFyc2VyVG9rZW5zLmgKaW5kZXggMzBkMmUyZGVhNGMxMTZmNzcyMzMwZWQ5NDhk
YjkwZGI3YjE0YTUzYi4uZGJkNmQ2NTE0Y2ZiY2ZlMjMxMzY1M2M4NmUxYzRhZTAzM2I4ZjI0MyAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXJUb2tlbnMuaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlclRva2Vucy5oCkBAIC0xOTcs
NyArMTk3LDEzIEBAIHN0YXRpY19hc3NlcnQoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFBPVykgPD0g
MHgwMGZmZmZmZlUsICJKU1Rva2VuVHlwZSBtdXN0IGJlIDI0CiAKIHN0cnVjdCBKU1RleHRQb3Np
dGlvbiB7CiAgICAgSlNUZXh0UG9zaXRpb24oKSA9IGRlZmF1bHQ7Ci0gICAgSlNUZXh0UG9zaXRp
b24oaW50IF9saW5lLCBpbnQgX29mZnNldCwgaW50IF9saW5lU3RhcnRPZmZzZXQpIDogbGluZShf
bGluZSksIG9mZnNldChfb2Zmc2V0KSwgbGluZVN0YXJ0T2Zmc2V0KF9saW5lU3RhcnRPZmZzZXQp
IHsgfQorICAgIEpTVGV4dFBvc2l0aW9uKGludCBfbGluZSwgaW50IF9vZmZzZXQsIGludCBfbGlu
ZVN0YXJ0T2Zmc2V0KSAKKyAgICAgICAgOiBsaW5lKF9saW5lKQorICAgICAgICAsIG9mZnNldChf
b2Zmc2V0KQorICAgICAgICAsIGxpbmVTdGFydE9mZnNldChfbGluZVN0YXJ0T2Zmc2V0KQorICAg
IHsgCisgICAgICAgIGNoZWNrQ29uc2lzdGVuY3koKTsKKyAgICB9CiAKICAgICBKU1RleHRQb3Np
dGlvbiBvcGVyYXRvcisoaW50IGFkanVzdG1lbnQpIGNvbnN0IHsgcmV0dXJuIEpTVGV4dFBvc2l0
aW9uKGxpbmUsIG9mZnNldCArIGFkanVzdG1lbnQsIGxpbmVTdGFydE9mZnNldCk7IH0KICAgICBK
U1RleHRQb3NpdGlvbiBvcGVyYXRvcisodW5zaWduZWQgYWRqdXN0bWVudCkgY29uc3QgeyByZXR1
cm4gKnRoaXMgKyBzdGF0aWNfY2FzdDxpbnQ+KGFkanVzdG1lbnQpOyB9CkBAIC0yMTgsMTAgKzIy
NCwxOCBAQCBzdHJ1Y3QgSlNUZXh0UG9zaXRpb24gewogICAgIH0KIAogICAgIGludCBjb2x1bW4o
KSBjb25zdCB7IHJldHVybiBvZmZzZXQgLSBsaW5lU3RhcnRPZmZzZXQ7IH0KKyAgICB2b2lkIGNo
ZWNrQ29uc2lzdGVuY3koKQorICAgIHsKKyAgICAgICAgLy8gRklYTUU6IFdlIHNob3VsZCB0ZXN0
IEFTU0VSVChvZmZzZXQgPj0gbGluZVN0YXJ0T2Zmc2V0KTsgYnV0IHRoYXQgYnJlYWtzIGEgbG90
IG9mIHRlc3RzLgorICAgICAgICBBU1NFUlQobGluZSA+PSAwKTsKKyAgICAgICAgQVNTRVJUKG9m
ZnNldCA+PSAwKTsKKyAgICAgICAgQVNTRVJUKGxpbmVTdGFydE9mZnNldCA+PSAwKTsKKyAgICB9
CiAKLSAgICBpbnQgbGluZSB7IDAgfTsKLSAgICBpbnQgb2Zmc2V0IHsgMCB9OwotICAgIGludCBs
aW5lU3RhcnRPZmZzZXQgeyAwIH07CisgICAgLy8gRklYTUU6IHRoZXNlIHNob3VsZCBiZSB1bnNp
Z25lZC4KKyAgICBpbnQgbGluZSB7IC0xIH07CisgICAgaW50IG9mZnNldCB7IC0xIH07CisgICAg
aW50IGxpbmVTdGFydE9mZnNldCB7IC0xIH07CiB9OwogCiB1bmlvbiBKU1Rva2VuRGF0YSB7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1N5bnRheENoZWNrZXIuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvU3ludGF4Q2hlY2tlci5oCmluZGV4IDY1Njc4
MWM3NDcxMWZlZjYzYThjNmFkYzY3YmM5NTI2ZTA0ODczMmIuLmY5YmIwN2I0ZGQ0MDg5YzdiMWUz
YTBmM2Y1OTU0MWIzMTdhNTJkN2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9w
YXJzZXIvU3ludGF4Q2hlY2tlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIv
U3ludGF4Q2hlY2tlci5oCkBAIC0zMzQsOSArMzM0LDExIEBAIHB1YmxpYzoKICAgICBpbnQgdW5h
cnlUb2tlblN0YWNrTGFzdFR5cGUoaW50JikgeyByZXR1cm4gbV90b3BVbmFyeVRva2VuOyB9CiAg
ICAgSlNUZXh0UG9zaXRpb24gdW5hcnlUb2tlblN0YWNrTGFzdFN0YXJ0KGludCYpIHsgcmV0dXJu
IEpTVGV4dFBvc2l0aW9uKDAsIDAsIDApOyB9CiAgICAgdm9pZCB1bmFyeVRva2VuU3RhY2tSZW1v
dmVMYXN0KGludCYgc3RhY2tEZXB0aCkgeyBzdGFja0RlcHRoID0gMDsgfQorICAgIGludCB1bmFy
eVRva2VuU3RhY2tEZXB0aCgpIGNvbnN0IHsgcmV0dXJuIDA7IH0KKyAgICB2b2lkIHNldFVuYXJ5
VG9rZW5TdGFja0RlcHRoKGludCkgeyB9CiAgICAgCi0gICAgdm9pZCBhc3NpZ25tZW50U3RhY2tB
cHBlbmQoaW50LCBpbnQsIGludCwgaW50LCBpbnQsIE9wZXJhdG9yKSB7IH0KLSAgICBpbnQgY3Jl
YXRlQXNzaWdubWVudChjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBpbnQsIGludCwgaW50LCBpbnQs
IGludCkgeyBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOyByZXR1cm4gQXNzaWdubWVudEV4
cHI7IH0KKyAgICB2b2lkIGFzc2lnbm1lbnRTdGFja0FwcGVuZChpbnQmIGFzc2lnbm1lbnRTdGFj
a0RlcHRoLCBpbnQsIGludCwgaW50LCBpbnQsIE9wZXJhdG9yKSB7IGFzc2lnbm1lbnRTdGFja0Rl
cHRoID0gMTsgfQorICAgIGludCBjcmVhdGVBc3NpZ25tZW50KGNvbnN0IEpTVG9rZW5Mb2NhdGlv
biYsIGludCYgYXNzaWdubWVudFN0YWNrRGVwdGgsIGludCwgaW50LCBpbnQsIGludCkgeyBhc3Np
Z25tZW50U3RhY2tEZXB0aCA9IDA7IHJldHVybiBBc3NpZ25tZW50RXhwcjsgfQogICAgIGNvbnN0
IElkZW50aWZpZXIqIGdldE5hbWUoY29uc3QgUHJvcGVydHkmIHByb3BlcnR5KSBjb25zdCB7IHJl
dHVybiBwcm9wZXJ0eS5uYW1lOyB9CiAgICAgUHJvcGVydHlOb2RlOjpUeXBlIGdldFR5cGUoY29u
c3QgUHJvcGVydHkmIHByb3BlcnR5KSBjb25zdCB7IHJldHVybiBwcm9wZXJ0eS50eXBlOyB9CiAg
ICAgYm9vbCBpc1Jlc29sdmUoRXhwcmVzc2lvblR5cGUgZXhwcikgY29uc3QgeyByZXR1cm4gZXhw
ciA9PSBSZXNvbHZlRXhwciB8fCBleHByID09IFJlc29sdmVFdmFsRXhwcjsgfQpAQCAtNDM1LDcg
KzQzNyw3IEBAIHB1YmxpYzoKICAgICBpbnQgZW5kT2Zmc2V0KGludCkgeyByZXR1cm4gMDsgfQog
ICAgIHZvaWQgc2V0U3RhcnRPZmZzZXQoaW50LCBpbnQpIHsgfQogCi0gICAgSlNUZXh0UG9zaXRp
b24gYnJlYWtwb2ludExvY2F0aW9uKGludCkgeyByZXR1cm4gSlNUZXh0UG9zaXRpb24oLTEsIDAs
IDApOyB9CisgICAgSlNUZXh0UG9zaXRpb24gYnJlYWtwb2ludExvY2F0aW9uKGludCkgeyByZXR1
cm4geyB9OyB9CiAKICAgICB2b2lkIHByb3BhZ2F0ZUFyZ3VtZW50c1VzZSgpIHsgfQogCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9qcy9mdW5jdGlvbi10b1N0cmluZy1wYXJlbnRoZXNlcy1leHBl
Y3RlZC50eHQgYi9MYXlvdXRUZXN0cy9qcy9mdW5jdGlvbi10b1N0cmluZy1wYXJlbnRoZXNlcy1l
eHBlY3RlZC50eHQKaW5kZXggOGY0YTA4ODA0YjVkODc3MmFjNGYyZWMyYWU3NTMyNjlhMGU1NTRh
NS4uNGUxZjBjYmNmNWFmZWUyNGZjZGE3ZmQ1YTgzMWQ3ODUyNDg0MmM3MyAxMDA2NDQKLS0tIGEv
TGF5b3V0VGVzdHMvanMvZnVuY3Rpb24tdG9TdHJpbmctcGFyZW50aGVzZXMtZXhwZWN0ZWQudHh0
CisrKyBiL0xheW91dFRlc3RzL2pzL2Z1bmN0aW9uLXRvU3RyaW5nLXBhcmVudGhlc2VzLWV4cGVj
dGVkLnR4dApAQCAtMjExLDcgKzIxMSw3IEBAIFBBU1MgY29tcGlsZUFuZFNlcmlhbGl6ZSgnYSB8
fCBiIHx8IGMnKSBpcyAnYSB8fCBiIHx8IGMnCiBQQVNTIGNvbXBpbGVBbmRTZXJpYWxpemUoJyhh
IHx8IGIpIHx8IGMnKSBpcyAnKGEgfHwgYikgfHwgYycKIFBBU1MgY29tcGlsZUFuZFNlcmlhbGl6
ZSgnYSB8fCAoYiB8fCBjKScpIGlzICdhIHx8IChiIHx8IGMpJwogUEFTUyBjb21waWxlQW5kU2Vy
aWFsaXplKCdhID0gYiA9IGMnKSBpcyAnYSA9IGIgPSBjJwotUEFTUyBjb21waWxlQW5kU2VyaWFs
aXplKCcoYSA9IGIpID0gYycpIGlzICcoYSA9IGIpID0gYycKK1BBU1MgY29tcGlsZUFuZFNlcmlh
bGl6ZSgiKGEgPSBiKSA9IGMiKSB0aHJldyBleGNlcHRpb24gU3ludGF4RXJyb3I6IExlZnQgc2lk
ZSBvZiBhc3NpZ25tZW50IGlzIG5vdCBhIHJlZmVyZW5jZS4uCiBQQVNTIGNvbXBpbGVBbmRTZXJp
YWxpemUoJ2EgPSAoYiA9IGMpJykgaXMgJ2EgPSAoYiA9IGMpJwogUEFTUyBjb21waWxlQW5kU2Vy
aWFsaXplKCdhID0gYiArIGMnKSBpcyAnYSA9IGIgKyBjJwogUEFTUyBjb21waWxlQW5kU2VyaWFs
aXplKCcoYSA9IGIpICsgYycpIGlzICcoYSA9IGIpICsgYycKQEAgLTIyMCwxMCArMjIwLDEwIEBA
IFBBU1MgY29tcGlsZUFuZFNlcmlhbGl6ZSgnYSArIGIgPSBjJykgdGhyZXcgZXhjZXB0aW9uIFN5
bnRheEVycm9yOiBMZWZ0IGhhbmQgc2lkCiBQQVNTIGNvbXBpbGVBbmRTZXJpYWxpemUoJyhhICsg
YikgPSBjJykgdGhyZXcgZXhjZXB0aW9uIFN5bnRheEVycm9yOiBMZWZ0IHNpZGUgb2YgYXNzaWdu
bWVudCBpcyBub3QgYSByZWZlcmVuY2UuLgogUEFTUyBjb21waWxlQW5kU2VyaWFsaXplKCdhICsg
KGIgPSBjKScpIGlzICdhICsgKGIgPSBjKScKIFBBU1MgY29tcGlsZUFuZFNlcmlhbGl6ZSgnYSAq
PSBiICo9IGMnKSBpcyAnYSAqPSBiICo9IGMnCi1QQVNTIGNvbXBpbGVBbmRTZXJpYWxpemUoJyhh
ICo9IGIpICo9IGMnKSBpcyAnKGEgKj0gYikgKj0gYycKK1BBU1MgY29tcGlsZUFuZFNlcmlhbGl6
ZSgiKGEgKj0gYikgKj0gYyIpIHRocmV3IGV4Y2VwdGlvbiBTeW50YXhFcnJvcjogTGVmdCBzaWRl
IG9mIGFzc2lnbm1lbnQgaXMgbm90IGEgcmVmZXJlbmNlLi4KIFBBU1MgY29tcGlsZUFuZFNlcmlh
bGl6ZSgnYSAqPSAoYiAqPSBjKScpIGlzICdhICo9IChiICo9IGMpJwogUEFTUyBjb21waWxlQW5k
U2VyaWFsaXplKCdhID0gYiAqPSBjJykgaXMgJ2EgPSBiICo9IGMnCi1QQVNTIGNvbXBpbGVBbmRT
ZXJpYWxpemUoJyhhID0gYikgKj0gYycpIGlzICcoYSA9IGIpICo9IGMnCitQQVNTIGNvbXBpbGVB
bmRTZXJpYWxpemUoIihhID0gYikgKj0gYyIpIHRocmV3IGV4Y2VwdGlvbiBTeW50YXhFcnJvcjog
TGVmdCBzaWRlIG9mIGFzc2lnbm1lbnQgaXMgbm90IGEgcmVmZXJlbmNlLi4KIFBBU1MgY29tcGls
ZUFuZFNlcmlhbGl6ZSgnYSA9IChiICo9IGMpJykgaXMgJ2EgPSAoYiAqPSBjKScKIFBBU1MgY29t
cGlsZUFuZFNlcmlhbGl6ZSgnYSAqPSBiICsgYycpIGlzICdhICo9IGIgKyBjJwogUEFTUyBjb21w
aWxlQW5kU2VyaWFsaXplKCcoYSAqPSBiKSArIGMnKSBpcyAnKGEgKj0gYikgKyBjJwpAQCAtMjMy
LDEwICsyMzIsMTAgQEAgUEFTUyBjb21waWxlQW5kU2VyaWFsaXplKCdhICsgYiAqPSBjJykgdGhy
ZXcgZXhjZXB0aW9uIFN5bnRheEVycm9yOiBMZWZ0IGhhbmQgc2kKIFBBU1MgY29tcGlsZUFuZFNl
cmlhbGl6ZSgnKGEgKyBiKSAqPSBjJykgdGhyZXcgZXhjZXB0aW9uIFN5bnRheEVycm9yOiBMZWZ0
IHNpZGUgb2YgYXNzaWdubWVudCBpcyBub3QgYSByZWZlcmVuY2UuLgogUEFTUyBjb21waWxlQW5k
U2VyaWFsaXplKCdhICsgKGIgKj0gYyknKSBpcyAnYSArIChiICo9IGMpJwogUEFTUyBjb21waWxl
QW5kU2VyaWFsaXplKCdhIC89IGIgLz0gYycpIGlzICdhIC89IGIgLz0gYycKLVBBU1MgY29tcGls
ZUFuZFNlcmlhbGl6ZSgnKGEgLz0gYikgLz0gYycpIGlzICcoYSAvPSBiKSAvPSBjJworUEFTUyBj
b21waWxlQW5kU2VyaWFsaXplKCIoYSAvPSBiKSAvPSBjIikgdGhyZXcgZXhjZXB0aW9uIFN5bnRh
eEVycm9yOiBMZWZ0IHNpZGUgb2YgYXNzaWdubWVudCBpcyBub3QgYSByZWZlcmVuY2UuLgogUEFT
UyBjb21waWxlQW5kU2VyaWFsaXplKCdhIC89IChiIC89IGMpJykgaXMgJ2EgLz0gKGIgLz0gYykn
CiBQQVNTIGNvbXBpbGVBbmRTZXJpYWxpemUoJ2EgPSBiIC89IGMnKSBpcyAnYSA9IGIgLz0gYycK
LVBBU1MgY29tcGlsZUFuZFNlcmlhbGl6ZSgnKGEgPSBiKSAvPSBjJykgaXMgJyhhID0gYikgLz0g
YycKK1BBU1MgY29tcGlsZUFuZFNlcmlhbGl6ZSgiKGEgPSBiKSAvPSBjIikgdGhyZXcgZXhjZXB0
aW9uIFN5bnRheEVycm9yOiBMZWZ0IHNpZGUgb2YgYXNzaWdubWVudCBpcyBub3QgYSByZWZlcmVu
Y2UuLgogUEFTUyBjb21waWxlQW5kU2VyaWFsaXplKCdhID0gKGIgLz0gYyknKSBpcyAnYSA9IChi
IC89IGMpJwogUEFTUyBjb21waWxlQW5kU2VyaWFsaXplKCdhIC89IGIgKyBjJykgaXMgJ2EgLz0g
YiArIGMnCiBQQVNTIGNvbXBpbGVBbmRTZXJpYWxpemUoJyhhIC89IGIpICsgYycpIGlzICcoYSAv
PSBiKSArIGMnCkBAIC0yNDQsMTAgKzI0NCwxMCBAQCBQQVNTIGNvbXBpbGVBbmRTZXJpYWxpemUo
J2EgKyBiIC89IGMnKSB0aHJldyBleGNlcHRpb24gU3ludGF4RXJyb3I6IExlZnQgaGFuZCBzaQog
UEFTUyBjb21waWxlQW5kU2VyaWFsaXplKCcoYSArIGIpIC89IGMnKSB0aHJldyBleGNlcHRpb24g
U3ludGF4RXJyb3I6IExlZnQgc2lkZSBvZiBhc3NpZ25tZW50IGlzIG5vdCBhIHJlZmVyZW5jZS4u
CiBQQVNTIGNvbXBpbGVBbmRTZXJpYWxpemUoJ2EgKyAoYiAvPSBjKScpIGlzICdhICsgKGIgLz0g
YyknCiBQQVNTIGNvbXBpbGVBbmRTZXJpYWxpemUoJ2EgJT0gYiAlPSBjJykgaXMgJ2EgJT0gYiAl
PSBjJwotUEFTUyBjb21waWxlQW5kU2VyaWFsaXplKCcoYSAlPSBiKSAlPSBjJykgaXMgJyhhICU9
IGIpICU9IGMnCitQQVNTIGNvbXBpbGVBbmRTZXJpYWxpemUoIihhICU9IGIpICU9IGMiKSB0aHJl
dyBleGNlcHRpb24gU3ludGF4RXJyb3I6IExlZnQgc2lkZSBvZiBhc3NpZ25tZW50IGlzIG5vdCBh
IHJlZmVyZW5jZS4uCiBQQVNTIGNvbXBpbGVBbmRTZXJpYWxpemUoJ2EgJT0gKGIgJT0gYyknKSBp
cyAnYSAlPSAoYiAlPSBjKScKIFBBU1MgY29tcGlsZUFuZFNlcmlhbGl6ZSgnYSA9IGIgJT0gYycp
IGlzICdhID0gYiAlPSBjJwotUEFTUyBjb21waWxlQW5kU2VyaWFsaXplKCcoYSA9IGIpICU9IGMn
KSBpcyAnKGEgPSBiKSAlPSBjJworUEFTUyBjb21waWxlQW5kU2VyaWFsaXplKCIoYSA9IGIpICU9
IGMiKSB0aHJldyBleGNlcHRpb24gU3ludGF4RXJyb3I6IExlZnQgc2lkZSBvZiBhc3NpZ25tZW50
IGlzIG5vdCBhIHJlZmVyZW5jZS4uCiBQQVNTIGNvbXBpbGVBbmRTZXJpYWxpemUoJ2EgPSAoYiAl
PSBjKScpIGlzICdhID0gKGIgJT0gYyknCiBQQVNTIGNvbXBpbGVBbmRTZXJpYWxpemUoJ2EgJT0g
YiArIGMnKSBpcyAnYSAlPSBiICsgYycKIFBBU1MgY29tcGlsZUFuZFNlcmlhbGl6ZSgnKGEgJT0g
YikgKyBjJykgaXMgJyhhICU9IGIpICsgYycKQEAgLTI1NiwxMCArMjU2LDEwIEBAIFBBU1MgY29t
cGlsZUFuZFNlcmlhbGl6ZSgnYSArIGIgJT0gYycpIHRocmV3IGV4Y2VwdGlvbiBTeW50YXhFcnJv
cjogTGVmdCBoYW5kIHNpCiBQQVNTIGNvbXBpbGVBbmRTZXJpYWxpemUoJyhhICsgYikgJT0gYycp
IHRocmV3IGV4Y2VwdGlvbiBTeW50YXhFcnJvcjogTGVmdCBzaWRlIG9mIGFzc2lnbm1lbnQgaXMg
bm90IGEgcmVmZXJlbmNlLi4KIFBBU1MgY29tcGlsZUFuZFNlcmlhbGl6ZSgnYSArIChiICU9IGMp
JykgaXMgJ2EgKyAoYiAlPSBjKScKIFBBU1MgY29tcGlsZUFuZFNlcmlhbGl6ZSgnYSArPSBiICs9
IGMnKSBpcyAnYSArPSBiICs9IGMnCi1QQVNTIGNvbXBpbGVBbmRTZXJpYWxpemUoJyhhICs9IGIp
ICs9IGMnKSBpcyAnKGEgKz0gYikgKz0gYycKK1BBU1MgY29tcGlsZUFuZFNlcmlhbGl6ZSgiKGEg
Kz0gYikgKz0gYyIpIHRocmV3IGV4Y2VwdGlvbiBTeW50YXhFcnJvcjogTGVmdCBzaWRlIG9mIGFz
c2lnbm1lbnQgaXMgbm90IGEgcmVmZXJlbmNlLi4KIFBBU1MgY29tcGlsZUFuZFNlcmlhbGl6ZSgn
YSArPSAoYiArPSBjKScpIGlzICdhICs9IChiICs9IGMpJwogUEFTUyBjb21waWxlQW5kU2VyaWFs
aXplKCdhID0gYiArPSBjJykgaXMgJ2EgPSBiICs9IGMnCi1QQVNTIGNvbXBpbGVBbmRTZXJpYWxp
emUoJyhhID0gYikgKz0gYycpIGlzICcoYSA9IGIpICs9IGMnCitQQVNTIGNvbXBpbGVBbmRTZXJp
YWxpemUoIihhID0gYikgKz0gYyIpIHRocmV3IGV4Y2VwdGlvbiBTeW50YXhFcnJvcjogTGVmdCBz
aWRlIG9mIGFzc2lnbm1lbnQgaXMgbm90IGEgcmVmZXJlbmNlLi4KIFBBU1MgY29tcGlsZUFuZFNl
cmlhbGl6ZSgnYSA9IChiICs9IGMpJykgaXMgJ2EgPSAoYiArPSBjKScKIFBBU1MgY29tcGlsZUFu
ZFNlcmlhbGl6ZSgnYSArPSBiICsgYycpIGlzICdhICs9IGIgKyBjJwogUEFTUyBjb21waWxlQW5k
U2VyaWFsaXplKCcoYSArPSBiKSArIGMnKSBpcyAnKGEgKz0gYikgKyBjJwpAQCAtMjY4LDEwICsy
NjgsMTAgQEAgUEFTUyBjb21waWxlQW5kU2VyaWFsaXplKCdhICsgYiArPSBjJykgdGhyZXcgZXhj
ZXB0aW9uIFN5bnRheEVycm9yOiBMZWZ0IGhhbmQgc2kKIFBBU1MgY29tcGlsZUFuZFNlcmlhbGl6
ZSgnKGEgKyBiKSArPSBjJykgdGhyZXcgZXhjZXB0aW9uIFN5bnRheEVycm9yOiBMZWZ0IHNpZGUg
b2YgYXNzaWdubWVudCBpcyBub3QgYSByZWZlcmVuY2UuLgogUEFTUyBjb21waWxlQW5kU2VyaWFs
aXplKCdhICsgKGIgKz0gYyknKSBpcyAnYSArIChiICs9IGMpJwogUEFTUyBjb21waWxlQW5kU2Vy
aWFsaXplKCdhIC09IGIgLT0gYycpIGlzICdhIC09IGIgLT0gYycKLVBBU1MgY29tcGlsZUFuZFNl
cmlhbGl6ZSgnKGEgLT0gYikgLT0gYycpIGlzICcoYSAtPSBiKSAtPSBjJworUEFTUyBjb21waWxl
QW5kU2VyaWFsaXplKCIoYSAtPSBiKSAtPSBjIikgdGhyZXcgZXhjZXB0aW9uIFN5bnRheEVycm9y
OiBMZWZ0IHNpZGUgb2YgYXNzaWdubWVudCBpcyBub3QgYSByZWZlcmVuY2UuLgogUEFTUyBjb21w
aWxlQW5kU2VyaWFsaXplKCdhIC09IChiIC09IGMpJykgaXMgJ2EgLT0gKGIgLT0gYyknCiBQQVNT
IGNvbXBpbGVBbmRTZXJpYWxpemUoJ2EgPSBiIC09IGMnKSBpcyAnYSA9IGIgLT0gYycKLVBBU1Mg
Y29tcGlsZUFuZFNlcmlhbGl6ZSgnKGEgPSBiKSAtPSBjJykgaXMgJyhhID0gYikgLT0gYycKK1BB
U1MgY29tcGlsZUFuZFNlcmlhbGl6ZSgiKGEgPSBiKSAtPSBjIikgdGhyZXcgZXhjZXB0aW9uIFN5
bnRheEVycm9yOiBMZWZ0IHNpZGUgb2YgYXNzaWdubWVudCBpcyBub3QgYSByZWZlcmVuY2UuLgog
UEFTUyBjb21waWxlQW5kU2VyaWFsaXplKCdhID0gKGIgLT0gYyknKSBpcyAnYSA9IChiIC09IGMp
JwogUEFTUyBjb21waWxlQW5kU2VyaWFsaXplKCdhIC09IGIgKyBjJykgaXMgJ2EgLT0gYiArIGMn
CiBQQVNTIGNvbXBpbGVBbmRTZXJpYWxpemUoJyhhIC09IGIpICsgYycpIGlzICcoYSAtPSBiKSAr
IGMnCkBAIC0yODAsMTAgKzI4MCwxMCBAQCBQQVNTIGNvbXBpbGVBbmRTZXJpYWxpemUoJ2EgKyBi
IC09IGMnKSB0aHJldyBleGNlcHRpb24gU3ludGF4RXJyb3I6IExlZnQgaGFuZCBzaQogUEFTUyBj
b21waWxlQW5kU2VyaWFsaXplKCcoYSArIGIpIC09IGMnKSB0aHJldyBleGNlcHRpb24gU3ludGF4
RXJyb3I6IExlZnQgc2lkZSBvZiBhc3NpZ25tZW50IGlzIG5vdCBhIHJlZmVyZW5jZS4uCiBQQVNT
IGNvbXBpbGVBbmRTZXJpYWxpemUoJ2EgKyAoYiAtPSBjKScpIGlzICdhICsgKGIgLT0gYyknCiBQ
QVNTIGNvbXBpbGVBbmRTZXJpYWxpemUoJ2EgPDw9IGIgPDw9IGMnKSBpcyAnYSA8PD0gYiA8PD0g
YycKLVBBU1MgY29tcGlsZUFuZFNlcmlhbGl6ZSgnKGEgPDw9IGIpIDw8PSBjJykgaXMgJyhhIDw8
PSBiKSA8PD0gYycKK1BBU1MgY29tcGlsZUFuZFNlcmlhbGl6ZSgiKGEgPDw9IGIpIDw8PSBjIikg
dGhyZXcgZXhjZXB0aW9uIFN5bnRheEVycm9yOiBMZWZ0IHNpZGUgb2YgYXNzaWdubWVudCBpcyBu
b3QgYSByZWZlcmVuY2UuLgogUEFTUyBjb21waWxlQW5kU2VyaWFsaXplKCdhIDw8PSAoYiA8PD0g
YyknKSBpcyAnYSA8PD0gKGIgPDw9IGMpJwogUEFTUyBjb21waWxlQW5kU2VyaWFsaXplKCdhID0g
YiA8PD0gYycpIGlzICdhID0gYiA8PD0gYycKLVBBU1MgY29tcGlsZUFuZFNlcmlhbGl6ZSgnKGEg
PSBiKSA8PD0gYycpIGlzICcoYSA9IGIpIDw8PSBjJworUEFTUyBjb21waWxlQW5kU2VyaWFsaXpl
KCIoYSA9IGIpIDw8PSBjIikgdGhyZXcgZXhjZXB0aW9uIFN5bnRheEVycm9yOiBMZWZ0IHNpZGUg
b2YgYXNzaWdubWVudCBpcyBub3QgYSByZWZlcmVuY2UuLgogUEFTUyBjb21waWxlQW5kU2VyaWFs
aXplKCdhID0gKGIgPDw9IGMpJykgaXMgJ2EgPSAoYiA8PD0gYyknCiBQQVNTIGNvbXBpbGVBbmRT
ZXJpYWxpemUoJ2EgPDw9IGIgKyBjJykgaXMgJ2EgPDw9IGIgKyBjJwogUEFTUyBjb21waWxlQW5k
U2VyaWFsaXplKCcoYSA8PD0gYikgKyBjJykgaXMgJyhhIDw8PSBiKSArIGMnCkBAIC0yOTIsMTAg
KzI5MiwxMCBAQCBQQVNTIGNvbXBpbGVBbmRTZXJpYWxpemUoJ2EgKyBiIDw8PSBjJykgdGhyZXcg
ZXhjZXB0aW9uIFN5bnRheEVycm9yOiBMZWZ0IGhhbmQgcwogUEFTUyBjb21waWxlQW5kU2VyaWFs
aXplKCcoYSArIGIpIDw8PSBjJykgdGhyZXcgZXhjZXB0aW9uIFN5bnRheEVycm9yOiBMZWZ0IHNp
ZGUgb2YgYXNzaWdubWVudCBpcyBub3QgYSByZWZlcmVuY2UuLgogUEFTUyBjb21waWxlQW5kU2Vy
aWFsaXplKCdhICsgKGIgPDw9IGMpJykgaXMgJ2EgKyAoYiA8PD0gYyknCiBQQVNTIGNvbXBpbGVB
bmRTZXJpYWxpemUoJ2EgPj49IGIgPj49IGMnKSBpcyAnYSA+Pj0gYiA+Pj0gYycKLVBBU1MgY29t
cGlsZUFuZFNlcmlhbGl6ZSgnKGEgPj49IGIpID4+PSBjJykgaXMgJyhhID4+PSBiKSA+Pj0gYycK
K1BBU1MgY29tcGlsZUFuZFNlcmlhbGl6ZSgiKGEgPj49IGIpID4+PSBjIikgdGhyZXcgZXhjZXB0
aW9uIFN5bnRheEVycm9yOiBMZWZ0IHNpZGUgb2YgYXNzaWdubWVudCBpcyBub3QgYSByZWZlcmVu
Y2UuLgogUEFTUyBjb21waWxlQW5kU2VyaWFsaXplKCdhID4+PSAoYiA+Pj0gYyknKSBpcyAnYSA+
Pj0gKGIgPj49IGMpJwogUEFTUyBjb21waWxlQW5kU2VyaWFsaXplKCdhID0gYiA+Pj0gYycpIGlz
ICdhID0gYiA+Pj0gYycKLVBBU1MgY29tcGlsZUFuZFNlcmlhbGl6ZSgnKGEgPSBiKSA+Pj0gYycp
IGlzICcoYSA9IGIpID4+PSBjJworUEFTUyBjb21waWxlQW5kU2VyaWFsaXplKCIoYSA9IGIpID4+
PSBjIikgdGhyZXcgZXhjZXB0aW9uIFN5bnRheEVycm9yOiBMZWZ0IHNpZGUgb2YgYXNzaWdubWVu
dCBpcyBub3QgYSByZWZlcmVuY2UuLgogUEFTUyBjb21waWxlQW5kU2VyaWFsaXplKCdhID0gKGIg
Pj49IGMpJykgaXMgJ2EgPSAoYiA+Pj0gYyknCiBQQVNTIGNvbXBpbGVBbmRTZXJpYWxpemUoJ2Eg
Pj49IGIgKyBjJykgaXMgJ2EgPj49IGIgKyBjJwogUEFTUyBjb21waWxlQW5kU2VyaWFsaXplKCco
YSA+Pj0gYikgKyBjJykgaXMgJyhhID4+PSBiKSArIGMnCkBAIC0zMDQsMTAgKzMwNCwxMCBAQCBQ
QVNTIGNvbXBpbGVBbmRTZXJpYWxpemUoJ2EgKyBiID4+PSBjJykgdGhyZXcgZXhjZXB0aW9uIFN5
bnRheEVycm9yOiBMZWZ0IGhhbmQgcwogUEFTUyBjb21waWxlQW5kU2VyaWFsaXplKCcoYSArIGIp
ID4+PSBjJykgdGhyZXcgZXhjZXB0aW9uIFN5bnRheEVycm9yOiBMZWZ0IHNpZGUgb2YgYXNzaWdu
bWVudCBpcyBub3QgYSByZWZlcmVuY2UuLgogUEFTUyBjb21waWxlQW5kU2VyaWFsaXplKCdhICsg
KGIgPj49IGMpJykgaXMgJ2EgKyAoYiA+Pj0gYyknCiBQQVNTIGNvbXBpbGVBbmRTZXJpYWxpemUo
J2EgPj4+PSBiID4+Pj0gYycpIGlzICdhID4+Pj0gYiA+Pj49IGMnCi1QQVNTIGNvbXBpbGVBbmRT
ZXJpYWxpemUoJyhhID4+Pj0gYikgPj4+PSBjJykgaXMgJyhhID4+Pj0gYikgPj4+PSBjJworUEFT
UyBjb21waWxlQW5kU2VyaWFsaXplKCIoYSA+Pj49IGIpID4+Pj0gYyIpIHRocmV3IGV4Y2VwdGlv
biBTeW50YXhFcnJvcjogTGVmdCBzaWRlIG9mIGFzc2lnbm1lbnQgaXMgbm90IGEgcmVmZXJlbmNl
Li4KIFBBU1MgY29tcGlsZUFuZFNlcmlhbGl6ZSgnYSA+Pj49IChiID4+Pj0gYyknKSBpcyAnYSA+
Pj49IChiID4+Pj0gYyknCiBQQVNTIGNvbXBpbGVBbmRTZXJpYWxpemUoJ2EgPSBiID4+Pj0gYycp
IGlzICdhID0gYiA+Pj49IGMnCi1QQVNTIGNvbXBpbGVBbmRTZXJpYWxpemUoJyhhID0gYikgPj4+
PSBjJykgaXMgJyhhID0gYikgPj4+PSBjJworUEFTUyBjb21waWxlQW5kU2VyaWFsaXplKCIoYSA9
IGIpID4+Pj0gYyIpIHRocmV3IGV4Y2VwdGlvbiBTeW50YXhFcnJvcjogTGVmdCBzaWRlIG9mIGFz
c2lnbm1lbnQgaXMgbm90IGEgcmVmZXJlbmNlLi4KIFBBU1MgY29tcGlsZUFuZFNlcmlhbGl6ZSgn
YSA9IChiID4+Pj0gYyknKSBpcyAnYSA9IChiID4+Pj0gYyknCiBQQVNTIGNvbXBpbGVBbmRTZXJp
YWxpemUoJ2EgPj4+PSBiICsgYycpIGlzICdhID4+Pj0gYiArIGMnCiBQQVNTIGNvbXBpbGVBbmRT
ZXJpYWxpemUoJyhhID4+Pj0gYikgKyBjJykgaXMgJyhhID4+Pj0gYikgKyBjJwpAQCAtMzE2LDEw
ICszMTYsMTAgQEAgUEFTUyBjb21waWxlQW5kU2VyaWFsaXplKCdhICsgYiA+Pj49IGMnKSB0aHJl
dyBleGNlcHRpb24gU3ludGF4RXJyb3I6IExlZnQgaGFuZAogUEFTUyBjb21waWxlQW5kU2VyaWFs
aXplKCcoYSArIGIpID4+Pj0gYycpIHRocmV3IGV4Y2VwdGlvbiBTeW50YXhFcnJvcjogTGVmdCBz
aWRlIG9mIGFzc2lnbm1lbnQgaXMgbm90IGEgcmVmZXJlbmNlLi4KIFBBU1MgY29tcGlsZUFuZFNl
cmlhbGl6ZSgnYSArIChiID4+Pj0gYyknKSBpcyAnYSArIChiID4+Pj0gYyknCiBQQVNTIGNvbXBp
bGVBbmRTZXJpYWxpemUoJ2EgJj0gYiAmPSBjJykgaXMgJ2EgJj0gYiAmPSBjJwotUEFTUyBjb21w
aWxlQW5kU2VyaWFsaXplKCcoYSAmPSBiKSAmPSBjJykgaXMgJyhhICY9IGIpICY9IGMnCitQQVNT
IGNvbXBpbGVBbmRTZXJpYWxpemUoIihhICY9IGIpICY9IGMiKSB0aHJldyBleGNlcHRpb24gU3lu
dGF4RXJyb3I6IExlZnQgc2lkZSBvZiBhc3NpZ25tZW50IGlzIG5vdCBhIHJlZmVyZW5jZS4uCiBQ
QVNTIGNvbXBpbGVBbmRTZXJpYWxpemUoJ2EgJj0gKGIgJj0gYyknKSBpcyAnYSAmPSAoYiAmPSBj
KScKIFBBU1MgY29tcGlsZUFuZFNlcmlhbGl6ZSgnYSA9IGIgJj0gYycpIGlzICdhID0gYiAmPSBj
JwotUEFTUyBjb21waWxlQW5kU2VyaWFsaXplKCcoYSA9IGIpICY9IGMnKSBpcyAnKGEgPSBiKSAm
PSBjJworUEFTUyBjb21waWxlQW5kU2VyaWFsaXplKCIoYSA9IGIpICY9IGMiKSB0aHJldyBleGNl
cHRpb24gU3ludGF4RXJyb3I6IExlZnQgc2lkZSBvZiBhc3NpZ25tZW50IGlzIG5vdCBhIHJlZmVy
ZW5jZS4uCiBQQVNTIGNvbXBpbGVBbmRTZXJpYWxpemUoJ2EgPSAoYiAmPSBjKScpIGlzICdhID0g
KGIgJj0gYyknCiBQQVNTIGNvbXBpbGVBbmRTZXJpYWxpemUoJ2EgJj0gYiArIGMnKSBpcyAnYSAm
PSBiICsgYycKIFBBU1MgY29tcGlsZUFuZFNlcmlhbGl6ZSgnKGEgJj0gYikgKyBjJykgaXMgJyhh
ICY9IGIpICsgYycKQEAgLTMyOCwxMCArMzI4LDEwIEBAIFBBU1MgY29tcGlsZUFuZFNlcmlhbGl6
ZSgnYSArIGIgJj0gYycpIHRocmV3IGV4Y2VwdGlvbiBTeW50YXhFcnJvcjogTGVmdCBoYW5kIHNp
CiBQQVNTIGNvbXBpbGVBbmRTZXJpYWxpemUoJyhhICsgYikgJj0gYycpIHRocmV3IGV4Y2VwdGlv
biBTeW50YXhFcnJvcjogTGVmdCBzaWRlIG9mIGFzc2lnbm1lbnQgaXMgbm90IGEgcmVmZXJlbmNl
Li4KIFBBU1MgY29tcGlsZUFuZFNlcmlhbGl6ZSgnYSArIChiICY9IGMpJykgaXMgJ2EgKyAoYiAm
PSBjKScKIFBBU1MgY29tcGlsZUFuZFNlcmlhbGl6ZSgnYSBePSBiIF49IGMnKSBpcyAnYSBePSBi
IF49IGMnCi1QQVNTIGNvbXBpbGVBbmRTZXJpYWxpemUoJyhhIF49IGIpIF49IGMnKSBpcyAnKGEg
Xj0gYikgXj0gYycKK1BBU1MgY29tcGlsZUFuZFNlcmlhbGl6ZSgiKGEgXj0gYikgXj0gYyIpIHRo
cmV3IGV4Y2VwdGlvbiBTeW50YXhFcnJvcjogTGVmdCBzaWRlIG9mIGFzc2lnbm1lbnQgaXMgbm90
IGEgcmVmZXJlbmNlLi4KIFBBU1MgY29tcGlsZUFuZFNlcmlhbGl6ZSgnYSBePSAoYiBePSBjKScp
IGlzICdhIF49IChiIF49IGMpJwogUEFTUyBjb21waWxlQW5kU2VyaWFsaXplKCdhID0gYiBePSBj
JykgaXMgJ2EgPSBiIF49IGMnCi1QQVNTIGNvbXBpbGVBbmRTZXJpYWxpemUoJyhhID0gYikgXj0g
YycpIGlzICcoYSA9IGIpIF49IGMnCitQQVNTIGNvbXBpbGVBbmRTZXJpYWxpemUoIihhID0gYikg
Xj0gYyIpIHRocmV3IGV4Y2VwdGlvbiBTeW50YXhFcnJvcjogTGVmdCBzaWRlIG9mIGFzc2lnbm1l
bnQgaXMgbm90IGEgcmVmZXJlbmNlLi4KIFBBU1MgY29tcGlsZUFuZFNlcmlhbGl6ZSgnYSA9IChi
IF49IGMpJykgaXMgJ2EgPSAoYiBePSBjKScKIFBBU1MgY29tcGlsZUFuZFNlcmlhbGl6ZSgnYSBe
PSBiICsgYycpIGlzICdhIF49IGIgKyBjJwogUEFTUyBjb21waWxlQW5kU2VyaWFsaXplKCcoYSBe
PSBiKSArIGMnKSBpcyAnKGEgXj0gYikgKyBjJwpAQCAtMzQwLDEwICszNDAsMTAgQEAgUEFTUyBj
b21waWxlQW5kU2VyaWFsaXplKCdhICsgYiBePSBjJykgdGhyZXcgZXhjZXB0aW9uIFN5bnRheEVy
cm9yOiBMZWZ0IGhhbmQgc2kKIFBBU1MgY29tcGlsZUFuZFNlcmlhbGl6ZSgnKGEgKyBiKSBePSBj
JykgdGhyZXcgZXhjZXB0aW9uIFN5bnRheEVycm9yOiBMZWZ0IHNpZGUgb2YgYXNzaWdubWVudCBp
cyBub3QgYSByZWZlcmVuY2UuLgogUEFTUyBjb21waWxlQW5kU2VyaWFsaXplKCdhICsgKGIgXj0g
YyknKSBpcyAnYSArIChiIF49IGMpJwogUEFTUyBjb21waWxlQW5kU2VyaWFsaXplKCdhIHw9IGIg
fD0gYycpIGlzICdhIHw9IGIgfD0gYycKLVBBU1MgY29tcGlsZUFuZFNlcmlhbGl6ZSgnKGEgfD0g
YikgfD0gYycpIGlzICcoYSB8PSBiKSB8PSBjJworUEFTUyBjb21waWxlQW5kU2VyaWFsaXplKCIo
YSB8PSBiKSB8PSBjIikgdGhyZXcgZXhjZXB0aW9uIFN5bnRheEVycm9yOiBMZWZ0IHNpZGUgb2Yg
YXNzaWdubWVudCBpcyBub3QgYSByZWZlcmVuY2UuLgogUEFTUyBjb21waWxlQW5kU2VyaWFsaXpl
KCdhIHw9IChiIHw9IGMpJykgaXMgJ2EgfD0gKGIgfD0gYyknCiBQQVNTIGNvbXBpbGVBbmRTZXJp
YWxpemUoJ2EgPSBiIHw9IGMnKSBpcyAnYSA9IGIgfD0gYycKLVBBU1MgY29tcGlsZUFuZFNlcmlh
bGl6ZSgnKGEgPSBiKSB8PSBjJykgaXMgJyhhID0gYikgfD0gYycKK1BBU1MgY29tcGlsZUFuZFNl
cmlhbGl6ZSgiKGEgPSBiKSB8PSBjIikgdGhyZXcgZXhjZXB0aW9uIFN5bnRheEVycm9yOiBMZWZ0
IHNpZGUgb2YgYXNzaWdubWVudCBpcyBub3QgYSByZWZlcmVuY2UuLgogUEFTUyBjb21waWxlQW5k
U2VyaWFsaXplKCdhID0gKGIgfD0gYyknKSBpcyAnYSA9IChiIHw9IGMpJwogUEFTUyBjb21waWxl
QW5kU2VyaWFsaXplKCdhIHw9IGIgKyBjJykgaXMgJ2EgfD0gYiArIGMnCiBQQVNTIGNvbXBpbGVB
bmRTZXJpYWxpemUoJyhhIHw9IGIpICsgYycpIGlzICcoYSB8PSBiKSArIGMnCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9qcy9zY3JpcHQtdGVzdHMvZnVuY3Rpb24tdG9TdHJpbmctcGFyZW50aGVz
ZXMuanMgYi9MYXlvdXRUZXN0cy9qcy9zY3JpcHQtdGVzdHMvZnVuY3Rpb24tdG9TdHJpbmctcGFy
ZW50aGVzZXMuanMKaW5kZXggODFjZTEzZjE2YmNkYWEwN2E0NGRkYTQyM2VmM2U5OWMzZDFiOWMw
Ny4uYjBmZDMyMjYyNTMxODgzZDgwMTdhYWI1ODM2ZmY4MTM5NDg0NjI1NCAxMDA2NDQKLS0tIGEv
TGF5b3V0VGVzdHMvanMvc2NyaXB0LXRlc3RzL2Z1bmN0aW9uLXRvU3RyaW5nLXBhcmVudGhlc2Vz
LmpzCisrKyBiL0xheW91dFRlc3RzL2pzL3NjcmlwdC10ZXN0cy9mdW5jdGlvbi10b1N0cmluZy1w
YXJlbnRoZXNlcy5qcwpAQCAtNDcsMTAgKzQ3LDEzIEBAIGZ1bmN0aW9uIHRlc3RMZWZ0QXNzb2Np
YXRpdmVTYW1lKG9wQSwgb3BCKQogICAgIHRlc3RLZWVwUGFyZW50aGVzZXMoImEgIiArIG9wQSAr
ICIgKGIgIiArIG9wQiArICIgYykiKTsKIH0KIAotZnVuY3Rpb24gdGVzdFJpZ2h0QXNzb2NpYXRp
dmVTYW1lKG9wQSwgb3BCKQorZnVuY3Rpb24gdGVzdFJpZ2h0QXNzb2NpYXRpdmVTYW1lKG9wQSwg
b3BCLCBsZWZ0UGFyZW5zVGhyb3dzID0gZmFsc2UpCiB7CiAgICAgdGVzdEtlZXBQYXJlbnRoZXNl
cygiYSAiICsgb3BBICsgIiBiICIgKyBvcEIgKyAiIGMiKTsKLSAgICB0ZXN0S2VlcFBhcmVudGhl
c2VzKCIoYSAiICsgb3BBICsgIiBiKSAiICsgb3BCICsgIiBjIik7CisgICAgaWYgKGxlZnRQYXJl
bnNUaHJvd3MpCisgICAgICAgIHNob3VsZFRocm93KGBjb21waWxlQW5kU2VyaWFsaXplKCIoYSAk
e29wQX0gYikgJHtvcEJ9IGMiKWApOworICAgIGVsc2UKKyAgICAgICAgdGVzdEtlZXBQYXJlbnRo
ZXNlcygiKGEgIiArIG9wQSArICIgYikgIiArIG9wQiArICIgYyIpOwogICAgIHRlc3RPcHRpb25h
bFBhcmVudGhlc2VzKCJhICIgKyBvcEEgKyAiIChiICIgKyBvcEIgKyAiIGMpIik7CiB9CiAKQEAg
LTk5LDkgKzEwMiw5IEBAIHZhciBhc3NpZ25tZW50T3BlcmF0b3JzID0gWyAiPSIsICIqPSIsICIv
PSIgLCAiJT0iLCAiKz0iLCAiLT0iLCAiPDw9IiwgIj4+PSIsICI+CiAKIGZvciAoaSA9IDA7IGkg
PCBhc3NpZ25tZW50T3BlcmF0b3JzLmxlbmd0aDsgKytpKSB7CiAgICAgdmFyIG9wID0gYXNzaWdu
bWVudE9wZXJhdG9yc1tpXTsKLSAgICB0ZXN0UmlnaHRBc3NvY2lhdGl2ZVNhbWUob3AsIG9wKTsK
KyAgICB0ZXN0UmlnaHRBc3NvY2lhdGl2ZVNhbWUob3AsIG9wLCB0cnVlKTsKICAgICBpZiAoaSAh
PSAwKQotICAgICAgICB0ZXN0UmlnaHRBc3NvY2lhdGl2ZVNhbWUoIj0iLCBvcCk7CisgICAgICAg
IHRlc3RSaWdodEFzc29jaWF0aXZlU2FtZSgiPSIsIG9wLCB0cnVlKTsKICAgICB0ZXN0TG93ZXJG
aXJzdChvcCwgIisiKTsKICAgICBzaG91bGRUaHJvdygiY29tcGlsZUFuZFNlcmlhbGl6ZSgnYSAr
IGIgIiArIG9wICsgIiBjJykiKTsKICAgICBzaG91bGRUaHJvdygiY29tcGlsZUFuZFNlcmlhbGl6
ZSgnKGEgKyBiKSAiICsgb3AgKyAiIGMnKSIpOwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9DaGFuZ2VM
b2cgYi9KU1Rlc3RzL0NoYW5nZUxvZwppbmRleCA5ZTI0YmFhMjUyMjZlZmE3Y2M3YTQyZDUzZGU1
NDIzNWI2NmFkNWMyLi42ZjljYmI0N2M0ZTM5ZjVjODg4NmZjMTA3ODc1YjYxMjFiYzczZDE5IDEw
MDY0NAotLS0gYS9KU1Rlc3RzL0NoYW5nZUxvZworKysgYi9KU1Rlc3RzL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDE0IEBACisyMDIwLTAxLTI5ICBLZWl0aCBNaWxsZXIgIDxrZWl0aF9taWxsZXJAYXBw
bGUuY29tPgorCisgICAgICAgIFBhcnNlciBuZWVkcyB0byByZXN0b3JlIHVuYXJ5IHN0YWNrIHN0
YXRlIHdoZW4gYmFja3RyYWNraW5nCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMDY5NzIKKworICAgICAgICBSZXZpZXdlZCBieSBTYWFtIEJhcmF0aS4K
KworICAgICAgICAqIHN0cmVzcy9wYXJzZXItc2F2ZS1zdGF0ZS1yZW1vdmUtc3RhbGUtZW50cmll
cy5qczogQWRkZWQuCisgICAgICAgICogc3RyZXNzL3BhcnNlci1zeW50YXgtY2hlY2tlci1hc3Np
Z25tZW50cy1hcmUtbm90LXJlc29sdmUtZXhwcmVzc2lvbnMuanM6IEFkZGVkLgorICAgICAgICAo
Zm9vKToKKwogMjAyMC0wMS0yOSAgTWFyayBMYW0gIDxtYXJrLmxhbUBhcHBsZS5jb20+CiAKICAg
ICAgICAgRml4IGJhZCBhc3NlcnRpb24gaW4gSW50ZXJuYWxGdW5jdGlvbkFsbG9jYXRpb25Qcm9m
aWxlOjpjcmVhdGVBbGxvY2F0aW9uU3RydWN0dXJlRnJvbUJhc2UoKS4KZGlmZiAtLWdpdCBhL0pT
VGVzdHMvc3RyZXNzL3BhcnNlci1zYXZlLXN0YXRlLXJlbW92ZS1zdGFsZS1lbnRyaWVzLmpzIGIv
SlNUZXN0cy9zdHJlc3MvcGFyc2VyLXNhdmUtc3RhdGUtcmVtb3ZlLXN0YWxlLWVudHJpZXMuanMK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNWVjZWY0ZTBlN2RjMTFhMzEwNWIzNzg4YWE2ZGNjNTIwMWIwYzQ4NgotLS0g
L2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL3BhcnNlci1zYXZlLXN0YXRlLXJlbW92ZS1z
dGFsZS1lbnRyaWVzLmpzCkBAIC0wLDAgKzEsMTAgQEAKKy8vIFRoaXMgdGVzdCBlbnN1cmVzIHdl
IHByb3Blcmx5IHJlbW92ZSB1bmFyeSBleHByZXNzaW9uIHN0YWNrIGVudHJpZXMgd2hlbiBiYWNr
dHJhY2luZyBpbiB0aGUgcGFyc2VyLgorCit0cnkgeworICAgIGV2YWwoImRlbGV0ZSgoYT0rKyhi
PWIpKSA9PiB7fSkiKTsKK30gY2F0Y2ggeyB9CisKK3RyeSB7CisgICAgZXZhbCgiISgoe2E9KCsr
KCh0KT0oKGUpKSkpfSk9Pnt9KSIpOworfSBjYXRjaCB7IH0KKwpkaWZmIC0tZ2l0IGEvSlNUZXN0
cy9zdHJlc3MvcGFyc2VyLXN5bnRheC1jaGVja2VyLWFzc2lnbm1lbnRzLWFyZS1ub3QtcmVzb2x2
ZS1leHByZXNzaW9ucy5qcyBiL0pTVGVzdHMvc3RyZXNzL3BhcnNlci1zeW50YXgtY2hlY2tlci1h
c3NpZ25tZW50cy1hcmUtbm90LXJlc29sdmUtZXhwcmVzc2lvbnMuanMKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNjE3
MWUwNmI2ZTVjNjI5MzJlNmI2ZjMyMjRiNTNlMmVkN2Q1NWU3NQotLS0gL2Rldi9udWxsCisrKyBi
L0pTVGVzdHMvc3RyZXNzL3BhcnNlci1zeW50YXgtY2hlY2tlci1hc3NpZ25tZW50cy1hcmUtbm90
LXJlc29sdmUtZXhwcmVzc2lvbnMuanMKQEAgLTAsMCArMSw0IEBACisvL0AgcmVxdWlyZU9wdGlv
bnMoIi0tZXhjZXB0aW9uPVN5bnRheEVycm9yIikgJiYgcnVuRGVmYXVsdAorInVzZSBzdHJpY3Qi
OworCitmdW5jdGlvbiBmb28oKSB7IChiPWIpID0gYjsgfQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>