<?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>115959</bug_id>
          
          <creation_ts>2013-05-11 09:40:06 -0700</creation_ts>
          <short_desc>Rename DOMPath.idl to Path.idl to match specification</short_desc>
          <delta_ts>2013-08-16 12:33:15 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Bindings</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>WONTFIX</resolution>
          
          
          <bug_file_loc>http://www.w3.org/TR/2dcontext2/#path</bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>115961</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Chris Dumez">cdumez</reporter>
          <assigned_to name="Chris Dumez">cdumez</assigned_to>
          <cc>benjamin</cc>
    
    <cc>buildbot</cc>
    
    <cc>commit-queue</cc>
    
    <cc>darin</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>haraken</cc>
    
    <cc>laszlo.gombos</cc>
    
    <cc>rakuco</cc>
    
    <cc>rniwa</cc>
    
    <cc>tonikitoo</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>887784</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2013-05-11 09:40:06 -0700</bug_when>
    <thetext>The Path IDL interface is currently called DOMPath and the file DOMPath.idl. We currently use the [InterfaceName] WebKit-IDL extended attribute to make sure the interface is exposed as &quot;Path&quot; on JavaScript side.

We usually use the same name as in JavaScript for the Web IDL and the [ImplementedAs] IDL extended attribute is used to map it to another name on C++ side. This is at least the case of IDL operations and attributes.

For interfaces, we currently do the opposite, which is confusing / inconsistent. We should consistently use [ImplementedAs] for interfaces for consistency with operations / attributes and deprecate [InterfaceName].

This patch will add support [ImplementedAs] extended attribute support to the JSC bindings generator and rename DOMPath to Path.
This is an initial step towards removing [InterfaceName] extended attribute. Other interfaces using [InterfaceName] will be corrected in a follow up patch.

Corresponding Blink patch:
https://src.chromium.org/viewvc/blink?view=rev&amp;revision=150154</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>887785</commentid>
    <comment_count>1</comment_count>
      <attachid>201460</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2013-05-11 09:46:32 -0700</bug_when>
    <thetext>Created attachment 201460
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>887786</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-05-11 09:50:25 -0700</bug_when>
    <thetext>Attachment 201460 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebCore/CMakeLists.txt&apos;, u&apos;Source/WebCore/ChangeLog&apos;, u&apos;Source/WebCore/DerivedSources.cpp&apos;, u&apos;Source/WebCore/DerivedSources.make&apos;, u&apos;Source/WebCore/DerivedSources.pri&apos;, u&apos;Source/WebCore/GNUmakefile.list.am&apos;, u&apos;Source/WebCore/WebCore.vcproj/WebCore.vcproj&apos;, u&apos;Source/WebCore/WebCore.xcodeproj/project.pbxproj&apos;, u&apos;Source/WebCore/bindings/scripts/CodeGeneratorJS.pm&apos;, u&apos;Source/WebCore/bindings/scripts/test/CPP/WebDOMTestInterfaceImplementedAs.cpp&apos;, u&apos;Source/WebCore/bindings/scripts/test/CPP/WebDOMTestInterfaceImplementedAs.h&apos;, u&apos;Source/WebCore/bindings/scripts/test/GObject/WebKitDOMTestInterfaceImplementedAs.cpp&apos;, u&apos;Source/WebCore/bindings/scripts/test/GObject/WebKitDOMTestInterfaceImplementedAs.h&apos;, u&apos;Source/WebCore/bindings/scripts/test/GObject/WebKitDOMTestInterfaceImplementedAsPrivate.h&apos;, u&apos;Source/WebCore/bindings/scripts/test/JS/JSTestCallback.h&apos;, u&apos;Source/WebCore/bindings/scripts/test/JS/JSTestInterfaceImplementedAs.cpp&apos;, u&apos;Source/WebCore/bindings/scripts/test/JS/JSTestInterfaceImplementedAs.h&apos;, u&apos;Source/WebCore/bindings/scripts/test/ObjC/DOMTestCallback.h&apos;, u&apos;Source/WebCore/bindings/scripts/test/ObjC/DOMTestCallback.mm&apos;, u&apos;Source/WebCore/bindings/scripts/test/ObjC/DOMTestInterfaceImplementedAs.h&apos;, u&apos;Source/WebCore/bindings/scripts/test/ObjC/DOMTestInterfaceImplementedAs.mm&apos;, u&apos;Source/WebCore/bindings/scripts/test/ObjC/DOMTestInterfaceImplementedAsInternal.h&apos;, u&apos;Source/WebCore/bindings/scripts/test/TestCallback.idl&apos;, u&apos;Source/WebCore/bindings/scripts/test/TestInterfaceImplementedAs.idl&apos;, u&apos;Source/WebCore/html/canvas/CanvasRenderingContext2D.idl&apos;, u&apos;Source/WebCore/html/canvas/DOMPath.idl&apos;, u&apos;Source/WebCore/html/canvas/Path.idl&apos;]&quot; exit_code: 1
Source/WebCore/bindings/scripts/test/JS/JSTestInterfaceImplementedAs.cpp:26:  &quot;JSTestInterfaceImplementedAs.h&quot; already included at Source/WebCore/bindings/scripts/test/JS/JSTestInterfaceImplementedAs.cpp:22  [build/include] [4]
Source/WebCore/bindings/scripts/test/JS/JSTestInterfaceImplementedAs.cpp:277:  Do not add platform specific code in WebCore outside of platform.  [build/webcore_platform_layering_violation] [5]
Source/WebCore/bindings/scripts/test/JS/JSTestInterfaceImplementedAs.cpp:279:  Extra space before ( in function call  [whitespace/parens] [4]
Source/WebCore/bindings/scripts/test/JS/JSTestInterfaceImplementedAs.cpp:288:  More than one command on the same line in if  [whitespace/parens] [4]
Source/WebCore/bindings/scripts/test/JS/JSTestInterfaceImplementedAs.cpp:292:  Do not add platform specific code in WebCore outside of platform.  [build/webcore_platform_layering_violation] [5]
Source/WebCore/bindings/scripts/test/ObjC/DOMTestInterfaceImplementedAsInternal.h:32:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
Source/WebCore/bindings/scripts/test/GObject/WebKitDOMTestInterfaceImplementedAs.cpp:146:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
Source/WebCore/bindings/scripts/test/GObject/WebKitDOMTestInterfaceImplementedAs.cpp:148:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebCore/bindings/scripts/test/GObject/WebKitDOMTestInterfaceImplementedAs.cpp:149:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebCore/bindings/scripts/test/GObject/WebKitDOMTestInterfaceImplementedAs.cpp:150:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebCore/bindings/scripts/test/GObject/WebKitDOMTestInterfaceImplementedAs.cpp:151:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebCore/bindings/scripts/test/GObject/WebKitDOMTestInterfaceImplementedAs.cpp:153:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
Source/WebCore/bindings/scripts/test/GObject/WebKitDOMTestInterfaceImplementedAs.cpp:155:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebCore/bindings/scripts/test/GObject/WebKitDOMTestInterfaceImplementedAs.cpp:156:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebCore/bindings/scripts/test/GObject/WebKitDOMTestInterfaceImplementedAs.cpp:157:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebCore/bindings/scripts/test/GObject/WebKitDOMTestInterfaceImplementedAs.cpp:158:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebCore/bindings/scripts/test/JS/JSTestInterfaceImplementedAs.h:59:  More than one command on the same line in if  [whitespace/parens] [4]
Source/WebCore/bindings/scripts/test/CPP/WebDOMTestInterfaceImplementedAs.cpp:26:  &quot;WebDOMTestInterfaceImplementedAs.h&quot; already included at Source/WebCore/bindings/scripts/test/CPP/WebDOMTestInterfaceImplementedAs.cpp:22  [build/include] [4]
Source/WebCore/bindings/scripts/test/CPP/WebDOMTestInterfaceImplementedAs.cpp:28:  wtf includes should be &lt;wtf/file.h&gt; instead of &quot;wtf/file.h&quot;.  [build/include] [4]
Total errors found: 19 in 26 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>887819</commentid>
    <comment_count>3</comment_count>
      <attachid>201468</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2013-05-11 12:23:53 -0700</bug_when>
    <thetext>Created attachment 201468
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>887820</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-05-11 12:26:49 -0700</bug_when>
    <thetext>Attachment 201468 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebCore/CMakeLists.txt&apos;, u&apos;Source/WebCore/ChangeLog&apos;, u&apos;Source/WebCore/DerivedSources.cpp&apos;, u&apos;Source/WebCore/DerivedSources.make&apos;, u&apos;Source/WebCore/DerivedSources.pri&apos;, u&apos;Source/WebCore/GNUmakefile.list.am&apos;, u&apos;Source/WebCore/WebCore.vcproj/WebCore.vcproj&apos;, u&apos;Source/WebCore/WebCore.xcodeproj/project.pbxproj&apos;, u&apos;Source/WebCore/bindings/scripts/CodeGeneratorJS.pm&apos;, u&apos;Source/WebCore/bindings/scripts/test/CPP/WebDOMTestInterfaceImplementedAs.cpp&apos;, u&apos;Source/WebCore/bindings/scripts/test/CPP/WebDOMTestInterfaceImplementedAs.h&apos;, u&apos;Source/WebCore/bindings/scripts/test/GObject/WebKitDOMTestInterfaceImplementedAs.cpp&apos;, u&apos;Source/WebCore/bindings/scripts/test/GObject/WebKitDOMTestInterfaceImplementedAs.h&apos;, u&apos;Source/WebCore/bindings/scripts/test/GObject/WebKitDOMTestInterfaceImplementedAsPrivate.h&apos;, u&apos;Source/WebCore/bindings/scripts/test/JS/JSTestCallback.h&apos;, u&apos;Source/WebCore/bindings/scripts/test/JS/JSTestInterfaceImplementedAs.cpp&apos;, u&apos;Source/WebCore/bindings/scripts/test/JS/JSTestInterfaceImplementedAs.h&apos;, u&apos;Source/WebCore/bindings/scripts/test/JS/JSTestObj.cpp&apos;, u&apos;Source/WebCore/bindings/scripts/test/ObjC/DOMTestCallback.h&apos;, u&apos;Source/WebCore/bindings/scripts/test/ObjC/DOMTestCallback.mm&apos;, u&apos;Source/WebCore/bindings/scripts/test/ObjC/DOMTestInterfaceImplementedAs.h&apos;, u&apos;Source/WebCore/bindings/scripts/test/ObjC/DOMTestInterfaceImplementedAs.mm&apos;, u&apos;Source/WebCore/bindings/scripts/test/ObjC/DOMTestInterfaceImplementedAsInternal.h&apos;, u&apos;Source/WebCore/bindings/scripts/test/TestCallback.idl&apos;, u&apos;Source/WebCore/bindings/scripts/test/TestInterfaceImplementedAs.idl&apos;, u&apos;Source/WebCore/html/canvas/CanvasRenderingContext2D.idl&apos;, u&apos;Source/WebCore/html/canvas/DOMPath.idl&apos;, u&apos;Source/WebCore/html/canvas/Path.idl&apos;]&quot; exit_code: 1
Source/WebCore/bindings/scripts/test/JS/JSTestInterfaceImplementedAs.cpp:276:  Do not add platform specific code in WebCore outside of platform.  [build/webcore_platform_layering_violation] [5]
Source/WebCore/bindings/scripts/test/JS/JSTestInterfaceImplementedAs.cpp:278:  Extra space before ( in function call  [whitespace/parens] [4]
Source/WebCore/bindings/scripts/test/JS/JSTestInterfaceImplementedAs.cpp:292:  Do not add platform specific code in WebCore outside of platform.  [build/webcore_platform_layering_violation] [5]
Source/WebCore/bindings/scripts/test/GObject/WebKitDOMTestInterfaceImplementedAs.cpp:146:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
Source/WebCore/bindings/scripts/test/GObject/WebKitDOMTestInterfaceImplementedAs.cpp:148:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebCore/bindings/scripts/test/GObject/WebKitDOMTestInterfaceImplementedAs.cpp:149:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebCore/bindings/scripts/test/GObject/WebKitDOMTestInterfaceImplementedAs.cpp:150:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebCore/bindings/scripts/test/GObject/WebKitDOMTestInterfaceImplementedAs.cpp:151:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebCore/bindings/scripts/test/GObject/WebKitDOMTestInterfaceImplementedAs.cpp:153:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
Source/WebCore/bindings/scripts/test/GObject/WebKitDOMTestInterfaceImplementedAs.cpp:155:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebCore/bindings/scripts/test/GObject/WebKitDOMTestInterfaceImplementedAs.cpp:156:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebCore/bindings/scripts/test/GObject/WebKitDOMTestInterfaceImplementedAs.cpp:157:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebCore/bindings/scripts/test/GObject/WebKitDOMTestInterfaceImplementedAs.cpp:158:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Total errors found: 13 in 26 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>887862</commentid>
    <comment_count>5</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2013-05-11 16:34:02 -0700</bug_when>
    <thetext>While it’s nice to have the IDL file match the specification IDL file, I am not sure that outweighs the desire to have the IDL file name match the names of the underlying .h and .cpp files, since the set of them work together to create and export a DOM class.

Is this really an important desirable change? What programmers does this help?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>887863</commentid>
    <comment_count>6</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2013-05-11 16:34:47 -0700</bug_when>
    <thetext>I think we chose wrong for interfaces and should go the other direction.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>888192</commentid>
    <comment_count>7</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2013-05-13 04:53:20 -0700</bug_when>
    <thetext>(In reply to comment #6)
&gt; I think we chose wrong for interfaces and should go the other direction.

So do I understand correctly that you agree with this change now?

Basically, we currently have 2 WebKit-specific IDL attributes that solve the same problem (Naming limitations on C++ side): [InterfaceName], [ImplementedAs], but in opposite ways. This is a bit confusing.

Also, I believe it is a good idea to limit the number of WebKit-specific IDL attributes. This makes our IDL easier to understand / learn and makes the generator a bit simpler.

The reasons I would like to keep [ImplementedAs] and remove [InterfaceName] are:
- ImplementedAs is currently used more than InterfaceName (for operations and attributes)
- The naming restriction is on C++ side, not on IDL side. Therefore, using the right name on IDL side (and an alternative name on C++ side) makes more sense to me. Therefore, I think [ImplementedAs] solves the problem best.
- This is what is being done in Blink and I&apos;m trying to stay compatible as much as possible.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>888320</commentid>
    <comment_count>8</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2013-05-13 09:40:38 -0700</bug_when>
    <thetext>(In reply to comment #7)
&gt; (In reply to comment #6)
&gt; &gt; I think we chose wrong for interfaces and should go the other direction.
&gt; 
&gt; So do I understand correctly that you agree with this change now?

No. The “we” here is the patch, which I think choses wrong.

&gt; - The naming restriction is on C++ side, not on IDL side. Therefore, using the right name on IDL side (and an alternative name on C++ side) makes more sense to me. Therefore, I think [ImplementedAs] solves the problem best.

I see the IDL as a helper to export the C++ class, not as a platform independent header file that needs to match a specification.

I think it is better for the source file to match the .cpp and .h source file, rather than matching the exported class name from the DOM specification. The three source files work together as a team, and should have the same names.

Maybe you could ask others in the WebKit project. There’s no urgent need to rush to change this before we have consensus.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>890609</commentid>
    <comment_count>9</comment_count>
      <attachid>201468</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-05-17 12:59:27 -0700</bug_when>
    <thetext>Comment on attachment 201468
Patch

Attachment 201468 did not pass mac-wk2-ews (mac-wk2):
Output: http://webkit-queues.appspot.com/results/491435</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>890622</commentid>
    <comment_count>10</comment_count>
      <attachid>201468</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-05-17 13:13:10 -0700</bug_when>
    <thetext>Comment on attachment 201468
Patch

Attachment 201468 did not pass mac-ews (mac):
Output: http://webkit-queues.appspot.com/results/483869</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>201460</attachid>
            <date>2013-05-11 09:46:32 -0700</date>
            <delta_ts>2013-05-11 12:23:53 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>115959_rename_DOMPath.patch</filename>
            <type>text/plain</type>
            <size>217855</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dlYkNv
cmUvQ01ha2VMaXN0cy50eHQKaW5kZXggZGJjYWE1YS4uNjE5ZTIyYiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0
cy50eHQKQEAgLTUwNSw3ICs1MDUsNiBAQCBzZXQoV2ViQ29yZV9JRExfRklMRVMKICAgICBodG1s
L2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuaWRsCiAgICAgaHRtbC9jYW52YXMvQ2Fu
dmFzUmVuZGVyaW5nQ29udGV4dC5pZGwKICAgICBodG1sL2NhbnZhcy9EYXRhVmlldy5pZGwKLSAg
ICBodG1sL2NhbnZhcy9ET01QYXRoLmlkbAogICAgIGh0bWwvY2FudmFzL0VYVERyYXdCdWZmZXJz
LmlkbAogICAgIGh0bWwvY2FudmFzL0VYVFRleHR1cmVGaWx0ZXJBbmlzb3Ryb3BpYy5pZGwKICAg
ICBodG1sL2NhbnZhcy9GbG9hdDMyQXJyYXkuaWRsCkBAIC01MTgsNiArNTE3LDcgQEAgc2V0KFdl
YkNvcmVfSURMX0ZJTEVTCiAgICAgaHRtbC9jYW52YXMvT0VTVGV4dHVyZUhhbGZGbG9hdC5pZGwK
ICAgICBodG1sL2NhbnZhcy9PRVNWZXJ0ZXhBcnJheU9iamVjdC5pZGwKICAgICBodG1sL2NhbnZh
cy9PRVNFbGVtZW50SW5kZXhVaW50LmlkbAorICAgIGh0bWwvY2FudmFzL1BhdGguaWRsCiAgICAg
aHRtbC9jYW52YXMvVWludDE2QXJyYXkuaWRsCiAgICAgaHRtbC9jYW52YXMvVWludDMyQXJyYXku
aWRsCiAgICAgaHRtbC9jYW52YXMvVWludDhBcnJheS5pZGwKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA1ZTU0MTFi
Li4zY2Y3ZTA4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNzggQEAKKzIwMTMtMDUtMTEgIENocmlz
dG9waGUgRHVtZXogIDxjaC5kdW1lekBzaXNhLnNhbXN1bmcuY29tPgorCisgICAgICAgIFJlbmFt
ZSBET01QYXRoLmlkbCB0byBQYXRoLmlkbCB0byBtYXRjaCBzcGVjaWZpY2F0aW9uCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTU5NTkKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZW5hbWUgRE9NUGF0aCBJ
REwgaW50ZXJmYWNlIHRvIFBhdGggdG8gbWF0Y2ggaXRzIG5hbWUgb24gSlMgc2lkZSBhbmQgdXNl
CisgICAgICAgIFtJbXBsZW1lbnRlZEFzPURPTVBhdGhdIGV4dGVuZGVkIGF0dHJpYnV0ZSBpbnN0
ZWFkLgorCisgICAgICAgIFRoaXMgaXMgYW4gaW5pdGlhbCBzdGVwIHRvd2FyZHMgcmVtb3Zpbmcg
W0ludGVyZmFjZU5hbWVdIGV4dGVuZGVkIGF0dHJpYnV0ZQorICAgICAgICBhbmQgY29uc2lzdGVu
dGx5IHVzZSBbSW1wbGVtZW50ZWRBc10gaW5zdGVhZC4KKworICAgICAgICBUaGlzIHBhdGNoIGFs
c28gYWRkcyBhIElETCB0ZXN0IGZvciB0aGlzIGFzIFtJbXBsZW1lbnRlZEFzXSB3YXMgbm90IHVz
YWJsZQorICAgICAgICBvbiBpbnRlcmZhY2VzIGJlZm9yZSwgb25seSBhdHRyaWJ1dGVzIGFuZCBv
cGVyYXRpb25zLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cywgbm8gYmVoYXZpb3IgY2hhbmdlIGZv
ciBsYXlvdXQgdGVzdHMgYW5kIGEKKyAgICAgICAgbmV3IGJpbmRpbmdzIHRlc3QgaXMgYWRkZWQ6
IFRlc3RJbnRlcmZhY2VJbXBsZW1lbnRlZEFzLmlkbAorCisgICAgICAgICogQ01ha2VMaXN0cy50
eHQ6CisgICAgICAgICogRGVyaXZlZFNvdXJjZXMuY3BwOgorICAgICAgICAqIERlcml2ZWRTb3Vy
Y2VzLm1ha2U6CisgICAgICAgICogRGVyaXZlZFNvdXJjZXMucHJpOgorICAgICAgICAqIEdOVW1h
a2VmaWxlLmxpc3QuYW06CisgICAgICAgICogV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2o6
CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAq
IGJpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtOgorICAgICAgICAoR2VuZXJhdGVB
dHRyaWJ1dGVFdmVudExpc3RlbmVyQ2FsbCk6CisgICAgICAgIChHZW5lcmF0ZUV2ZW50TGlzdGVu
ZXJDYWxsKToKKyAgICAgICAgKEFkZENsYXNzRm9yd2FyZElmTmVlZGVkKToKKyAgICAgICAgKGhh
c2hUYWJsZUFjY2Vzc29yKToKKyAgICAgICAgKHByb3RvdHlwZUhhc2hUYWJsZUFjY2Vzc29yKToK
KyAgICAgICAgKEdlbmVyYXRlR2V0T3duUHJvcGVydHlTbG90Qm9keSk6CisgICAgICAgIChHZW5l
cmF0ZUdldE93blByb3BlcnR5RGVzY3JpcHRvckJvZHkpOgorICAgICAgICAoR2VuZXJhdGVIZWFk
ZXJDb250ZW50SGVhZGVyKToKKyAgICAgICAgKEdlbmVyYXRlSW1wbGVtZW50YXRpb25Db250ZW50
SGVhZGVyKToKKyAgICAgICAgKEdldEF0dHJpYnV0ZUdldHRlck5hbWUpOgorICAgICAgICAoR2V0
QXR0cmlidXRlU2V0dGVyTmFtZSk6CisgICAgICAgIChHZXRGdW5jdGlvbk5hbWUpOgorICAgICAg
ICAoR2V0SW1wbENsYXNzTmFtZSk6CisgICAgICAgIChHZXRKU0NsYXNzTmFtZSk6CisgICAgICAg
IChHZW5lcmF0ZUhlYWRlcik6CisgICAgICAgIChHZW5lcmF0ZUF0dHJpYnV0ZXNIYXNoVGFibGUp
OgorICAgICAgICAoR2VuZXJhdGVPdmVybG9hZGVkRnVuY3Rpb24pOgorICAgICAgICAoR2V0TmF0
aXZlVHlwZUZvckNvbnZlcnNpb25zKToKKyAgICAgICAgKEdlbmVyYXRlSW1wbGVtZW50YXRpb24p
OgorICAgICAgICAoR2VuZXJhdGVQYXJhbWV0ZXJzQ2hlY2spOgorICAgICAgICAoR2VuZXJhdGVD
YWxsYmFja0hlYWRlcik6CisgICAgICAgIChHZW5lcmF0ZUNhbGxiYWNrSW1wbGVtZW50YXRpb24p
OgorICAgICAgICAoR2VuZXJhdGVJbXBsZW1lbnRhdGlvbkZ1bmN0aW9uQ2FsbCk6CisgICAgICAg
IChHZXROYXRpdmVUeXBlKToKKyAgICAgICAgKEpTVmFsdWVUb05hdGl2ZSk6CisgICAgICAgIChO
YXRpdmVUb0pTVmFsdWUpOgorICAgICAgICAoV3JpdGVEYXRhKToKKyAgICAgICAgKEdlbmVyYXRl
Q29uc3RydWN0b3JEZWNsYXJhdGlvbik6CisgICAgICAgIChHZW5lcmF0ZUNvbnN0cnVjdG9yRGVm
aW5pdGlvbnMpOgorICAgICAgICAoR2VuZXJhdGVPdmVybG9hZGVkQ29uc3RydWN0b3JEZWZpbml0
aW9uKToKKyAgICAgICAgKEdlbmVyYXRlQ29uc3RydWN0b3JEZWZpbml0aW9uKToKKyAgICAgICAg
KEdlbmVyYXRlQ29uc3RydWN0b3JIZWxwZXJNZXRob2RzKToKKyAgICAgICAgKiBiaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvQ1BQL1dlYkRPTVRlc3RJbnRlcmZhY2VJbXBsZW1lbnRlZEFzLmNwcDogQWRk
ZWQuCisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0NQUC9XZWJET01UZXN0SW50ZXJm
YWNlSW1wbGVtZW50ZWRBcy5oOiBBZGRlZC4KKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvR09iamVjdC9XZWJLaXRET01UZXN0SW50ZXJmYWNlSW1wbGVtZW50ZWRBcy5jcHA6IEFkZGVk
LgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9HT2JqZWN0L1dlYktpdERPTVRlc3RJ
bnRlcmZhY2VJbXBsZW1lbnRlZEFzLmg6IEFkZGVkLgorICAgICAgICAqIGJpbmRpbmdzL3Njcmlw
dHMvdGVzdC9HT2JqZWN0L1dlYktpdERPTVRlc3RJbnRlcmZhY2VJbXBsZW1lbnRlZEFzUHJpdmF0
ZS5oOiBBZGRlZC4KKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SW50
ZXJmYWNlSW1wbGVtZW50ZWRBcy5jcHA6IEFkZGVkLgorICAgICAgICAqIGJpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3RJbnRlcmZhY2VJbXBsZW1lbnRlZEFzLmg6IEFkZGVkLgorICAgICAg
ICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9PYmpDL0RPTVRlc3RJbnRlcmZhY2VJbXBsZW1lbnRl
ZEFzLmg6IEFkZGVkLgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9PYmpDL0RPTVRl
c3RJbnRlcmZhY2VJbXBsZW1lbnRlZEFzLm1tOiBBZGRlZC4KKyAgICAgICAgKiBiaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvT2JqQy9ET01UZXN0SW50ZXJmYWNlSW1wbGVtZW50ZWRBc0ludGVybmFsLmg6
IEFkZGVkLgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9UZXN0Q2FsbGJhY2suaWRs
OiBVc2UgVGVzdE9iaiB0eXBlIGluc3RlYWQgb2YgQ2xhc3M1IHdoaWNoIGlzIHVuZGVmaW5lZAor
ICAgICAgICBzbyB0aGF0IHRoZSBiaW5kaW5ncyBnZW5lcmF0b3IgZG9lcyBub3QgY29tcGxhaW4g
YWJvdXQgaXQuCisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Rlc3RJbnRlcmZhY2VJ
bXBsZW1lbnRlZEFzLmlkbDogQWRkZWQuCisgICAgICAgICogaHRtbC9jYW52YXMvQ2FudmFzUmVu
ZGVyaW5nQ29udGV4dDJELmlkbDogVXNlIFBhdGggaW5zdGVhZCBvZiBET01QYXRoLgorICAgICAg
ICAqIGh0bWwvY2FudmFzL1BhdGguaWRsOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYkNvcmUvaHRt
bC9jYW52YXMvRE9NUGF0aC5pZGwuCisKIDIwMTMtMDUtMTAgIEVyaWMgQ2FybHNvbiAgPGVyaWMu
Y2FybHNvbkBhcHBsZS5jb20+CiAKICAgICAgICAgSW4tYmFuZCBjYXB0aW9ucyBub3QgdmlzaWJs
ZSBpbW1lZGlhdGVseSBhZnRlciB0cmFjayBtb2RlIGNoYW5nZQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMuY3BwIGIvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJj
ZXMuY3BwCmluZGV4IDUwODI4ZDQuLmNkNzYwNjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L0Rlcml2ZWRTb3VyY2VzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5j
cHAKQEAgLTk4LDcgKzk4LDYgQEAKICNpbmNsdWRlICJKU0RPTU1pbWVUeXBlQXJyYXkuY3BwIgog
I2luY2x1ZGUgIkpTRE9NTmFtZWRGbG93Q29sbGVjdGlvbi5jcHAiCiAjaW5jbHVkZSAiSlNET01Q
YXJzZXIuY3BwIgotI2luY2x1ZGUgIkpTRE9NUGF0aC5jcHAiCiAjaW5jbHVkZSAiSlNET01QbHVn
aW4uY3BwIgogI2luY2x1ZGUgIkpTRE9NUGx1Z2luQXJyYXkuY3BwIgogI2luY2x1ZGUgIkpTRE9N
U2VjdXJpdHlQb2xpY3kuY3BwIgpAQCAtMjczLDYgKzI3Miw3IEBACiAjaW5jbHVkZSAiSlNOb3Rp
ZmljYXRpb24uY3BwIgogI2luY2x1ZGUgIkpTT3ZlcmZsb3dFdmVudC5jcHAiCiAjaW5jbHVkZSAi
SlNQYWdlVHJhbnNpdGlvbkV2ZW50LmNwcCIKKyNpbmNsdWRlICJKU1BhdGguY3BwIgogI2luY2x1
ZGUgIkpTUGVyZm9ybWFuY2UuY3BwIgogI2luY2x1ZGUgIkpTUGVyZm9ybWFuY2VOYXZpZ2F0aW9u
LmNwcCIKICNpbmNsdWRlICJKU1BlcmZvcm1hbmNlVGltaW5nLmNwcCIKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UgYi9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVk
U291cmNlcy5tYWtlCmluZGV4IDU5MjE4ZjUuLjBkOWYxYmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UKKysrIGIvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNv
dXJjZXMubWFrZQpAQCAtMzkyLDcgKzM5Miw2IEBAIEJJTkRJTkdfSURMUyA9IFwKICAgICAkKFdl
YkNvcmUpL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQuaWRsIFwKICAgICAkKFdl
YkNvcmUpL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5pZGwgXAogICAgICQo
V2ViQ29yZSkvaHRtbC9jYW52YXMvRGF0YVZpZXcuaWRsIFwKLSAgICAkKFdlYkNvcmUpL2h0bWwv
Y2FudmFzL0RPTVBhdGguaWRsIFwKICAgICAkKFdlYkNvcmUpL2h0bWwvY2FudmFzL0VYVERyYXdC
dWZmZXJzLmlkbCBcCiAgICAgJChXZWJDb3JlKS9odG1sL2NhbnZhcy9FWFRUZXh0dXJlRmlsdGVy
QW5pc290cm9waWMuaWRsIFwKICAgICAkKFdlYkNvcmUpL2h0bWwvY2FudmFzL0Zsb2F0MzJBcnJh
eS5pZGwgXApAQCAtNDA1LDYgKzQwNCw3IEBAIEJJTkRJTkdfSURMUyA9IFwKICAgICAkKFdlYkNv
cmUpL2h0bWwvY2FudmFzL09FU1RleHR1cmVGbG9hdC5pZGwgXAogICAgICQoV2ViQ29yZSkvaHRt
bC9jYW52YXMvT0VTVGV4dHVyZUhhbGZGbG9hdC5pZGwgXAogICAgICQoV2ViQ29yZSkvaHRtbC9j
YW52YXMvT0VTVmVydGV4QXJyYXlPYmplY3QuaWRsIFwKKyAgICAkKFdlYkNvcmUpL2h0bWwvY2Fu
dmFzL1BhdGguaWRsIFwKICAgICAkKFdlYkNvcmUpL2h0bWwvY2FudmFzL1VpbnQxNkFycmF5Lmlk
bCBcCiAgICAgJChXZWJDb3JlKS9odG1sL2NhbnZhcy9VaW50MzJBcnJheS5pZGwgXAogICAgICQo
V2ViQ29yZSkvaHRtbC9jYW52YXMvVWludDhBcnJheS5pZGwgXApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMucHJpIGIvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJj
ZXMucHJpCmluZGV4IGY1YTI4OGQuLjIzYzE3ZDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L0Rlcml2ZWRTb3VyY2VzLnByaQorKysgYi9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5w
cmkKQEAgLTMxNCw3ICszMTQsNiBAQCBJRExfQklORElOR1MgKz0gXAogICAgICQkUFdEL2h0bWwv
Y2FudmFzL0NhbnZhc1Byb3h5LmlkbCBcCiAgICAgJCRQV0QvaHRtbC9jYW52YXMvQ2FudmFzUmVu
ZGVyaW5nQ29udGV4dC5pZGwgXAogICAgICQkUFdEL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmlu
Z0NvbnRleHQyRC5pZGwgXAotICAgICQkUFdEL2h0bWwvY2FudmFzL0RPTVBhdGguaWRsIFwKICAg
ICAkJFBXRC9odG1sL2NhbnZhcy9FWFREcmF3QnVmZmVycy5pZGwgXAogICAgICQkUFdEL2h0bWwv
Y2FudmFzL0VYVFRleHR1cmVGaWx0ZXJBbmlzb3Ryb3BpYy5pZGwgXAogICAgICQkUFdEL2h0bWwv
Y2FudmFzL09FU1N0YW5kYXJkRGVyaXZhdGl2ZXMuaWRsIFwKQEAgLTMyMiw2ICszMjEsNyBAQCBJ
RExfQklORElOR1MgKz0gXAogICAgICQkUFdEL2h0bWwvY2FudmFzL09FU1RleHR1cmVIYWxmRmxv
YXQuaWRsIFwKICAgICAkJFBXRC9odG1sL2NhbnZhcy9PRVNWZXJ0ZXhBcnJheU9iamVjdC5pZGwg
XAogICAgICQkUFdEL2h0bWwvY2FudmFzL09FU0VsZW1lbnRJbmRleFVpbnQuaWRsIFwKKyAgICAk
JFBXRC9odG1sL2NhbnZhcy9QYXRoLmlkbCBcCiAgICAgJCRQV0QvaHRtbC9jYW52YXMvV2ViR0xB
Y3RpdmVJbmZvLmlkbCBcCiAgICAgJCRQV0QvaHRtbC9jYW52YXMvV2ViR0xCdWZmZXIuaWRsIFwK
ICAgICAkJFBXRC9odG1sL2NhbnZhcy9XZWJHTENvbXByZXNzZWRUZXh0dXJlQVRDLmlkbCBcCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtIGIvU291cmNlL1dl
YkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQppbmRleCA0Yzg3YjA2Li44OWZlMGYzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCisrKyBiL1NvdXJjZS9XZWJD
b3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KQEAgLTIwMyw4ICsyMDMsNiBAQCB3ZWJjb3JlX2J1aWx0
X3NvdXJjZXMgKz0gXAogCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNET01NaW1lVHlwZS5oIFwK
IAlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTRE9NTmFtZWRGbG93Q29sbGVjdGlvbi5jcHAgXAog
CURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNET01OYW1lZEZsb3dDb2xsZWN0aW9uLmggXAotCURl
cml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNET01QYXRoLmNwcCBcCi0JRGVyaXZlZFNvdXJjZXMvV2Vi
Q29yZS9KU0RPTVBhdGguaCBcCiAJRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0RPTVBhcnNlci5j
cHAgXAogCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNET01QYXJzZXIuaCBcCiAJRGVyaXZlZFNv
dXJjZXMvV2ViQ29yZS9KU0RPTVBsdWdpbkFycmF5LmNwcCBcCkBAIC02MDEsNiArNTk5LDggQEAg
d2ViY29yZV9idWlsdF9zb3VyY2VzICs9IFwKIAlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTT3Zl
cmZsb3dFdmVudC5oIFwKIAlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTUGFnZVRyYW5zaXRpb25F
dmVudC5jcHAgXAogCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNQYWdlVHJhbnNpdGlvbkV2ZW50
LmggXAorCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNQYXRoLmNwcCBcCisJRGVyaXZlZFNvdXJj
ZXMvV2ViQ29yZS9KU1BhdGguaCBcCiAJRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU1BlcmZvcm1h
bmNlLmNwcCBcCiAJRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU1BlcmZvcm1hbmNlLmggXAogCURl
cml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNQZXJmb3JtYW5jZUVudHJ5LmNwcCBcCkBAIC0xNTYyLDcg
KzE1NjIsNiBAQCBkb21fYmluZGluZ19pZGxzICs9IFwKIAkkKFdlYkNvcmUpL2h0bWwvY2FudmFz
L0NhbnZhc1JlbmRlcmluZ0NvbnRleHQuaWRsIFwKIAkkKFdlYkNvcmUpL2h0bWwvY2FudmFzL0Nh
bnZhc1JlbmRlcmluZ0NvbnRleHQyRC5pZGwgXAogCSQoV2ViQ29yZSkvaHRtbC9jYW52YXMvRGF0
YVZpZXcuaWRsIFwKLQkkKFdlYkNvcmUpL2h0bWwvY2FudmFzL0RPTVBhdGguaWRsIFwKIAkkKFdl
YkNvcmUpL2h0bWwvY2FudmFzL0VYVERyYXdCdWZmZXJzLmlkbCBcCiAJJChXZWJDb3JlKS9odG1s
L2NhbnZhcy9FWFRUZXh0dXJlRmlsdGVyQW5pc290cm9waWMuaWRsIFwKIAkkKFdlYkNvcmUpL2h0
bWwvY2FudmFzL0Zsb2F0MzJBcnJheS5pZGwgXApAQCAtMTU3NSw2ICsxNTc0LDcgQEAgZG9tX2Jp
bmRpbmdfaWRscyArPSBcCiAJJChXZWJDb3JlKS9odG1sL2NhbnZhcy9PRVNUZXh0dXJlSGFsZkZs
b2F0LmlkbCBcCiAJJChXZWJDb3JlKS9odG1sL2NhbnZhcy9PRVNWZXJ0ZXhBcnJheU9iamVjdC5p
ZGwgXAogCSQoV2ViQ29yZSkvaHRtbC9jYW52YXMvT0VTRWxlbWVudEluZGV4VWludC5pZGwgXAor
CSQoV2ViQ29yZSkvaHRtbC9jYW52YXMvUGF0aC5pZGwgXAogCSQoV2ViQ29yZSkvaHRtbC9jYW52
YXMvVWludDE2QXJyYXkuaWRsIFwKIAkkKFdlYkNvcmUpL2h0bWwvY2FudmFzL1VpbnQzMkFycmF5
LmlkbCBcCiAJJChXZWJDb3JlKS9odG1sL2NhbnZhcy9VaW50OEFycmF5LmlkbCBcCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvaiBiL1NvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCmluZGV4IGVmZjBmYmUuLmIx
MjJkMTkgMTAwNzU1Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUu
dmNwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9q
CkBAIC0zOTU1LDcgKzM5NTUsNyBAQAogCQkJCT4KIAkJCTwvRmlsZT4KIAkJCTxGaWxlCi0JCQkJ
UmVsYXRpdmVQYXRoPSIkKENvbmZpZ3VyYXRpb25CdWlsZERpcilcb2JqXCQoUHJvamVjdE5hbWUp
XERlcml2ZWRTb3VyY2VzXEpTRE9NUGF0aC5jcHAiCisJCQkJUmVsYXRpdmVQYXRoPSIkKENvbmZp
Z3VyYXRpb25CdWlsZERpcilcb2JqXCQoUHJvamVjdE5hbWUpXERlcml2ZWRTb3VyY2VzXEpTUGF0
aC5jcHAiCiAJCQkJPgogCQkJCTxGaWxlQ29uZmlndXJhdGlvbgogCQkJCQlOYW1lPSJEZWJ1Z3xX
aW4zMiIKQEAgLTQwMDcsNyArNDAwNyw3IEBACiAJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4KIAkJ
CTwvRmlsZT4KIAkJCTxGaWxlCi0JCQkJUmVsYXRpdmVQYXRoPSIkKENvbmZpZ3VyYXRpb25CdWls
ZERpcilcb2JqXCQoUHJvamVjdE5hbWUpXERlcml2ZWRTb3VyY2VzXEpTRE9NUGF0aC5oIgorCQkJ
CVJlbGF0aXZlUGF0aD0iJChDb25maWd1cmF0aW9uQnVpbGREaXIpXG9ialwkKFByb2plY3ROYW1l
KVxEZXJpdmVkU291cmNlc1xKU1BhdGguaCIKIAkJCQk+CiAJCQk8L0ZpbGU+CiAJCQk8RmlsZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmlu
ZGV4IDUxMmU5MDguLjhiNDk3ZWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTU3MzksOCArNTczOSw4IEBACiAJCUZCOTEzOTI0
MTZBRTRDMTcwMDFGRTY4MiAvKiBET01QYXRoLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBGQjkxMzkyMDE2QUU0QjBCMDAxRkU2ODIgLyogRE9NUGF0aC5o
ICovOyB9OwogCQlGQjkxMzkyNjE2QUU0QzJGMDAxRkU2ODIgLyogQ2FudmFzUGF0aE1ldGhvZHMu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZCOTEzOTFG
MTZBRTRCMEIwMDFGRTY4MiAvKiBDYW52YXNQYXRoTWV0aG9kcy5oICovOyB9OwogCQlGQjkxMzky
NzE2QUU0QzM0MDAxRkU2ODIgLyogQ2FudmFzUGF0aE1ldGhvZHMuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkI5MTM5MUUxNkFFNEIwQjAwMUZFNjgy
IC8qIENhbnZhc1BhdGhNZXRob2RzLmNwcCAqLzsgfTsKLQkJRkI5MTM5MkExNkFFNEZDMDAwMUZF
NjgyIC8qIEpTRE9NUGF0aC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gRkI5MTM5MjgxNkFFNEZDMDAwMUZFNjgyIC8qIEpTRE9NUGF0aC5oICovOyB9Owot
CQlGQjkxMzkyQjE2QUU0RkMwMDAxRkU2ODIgLyogSlNET01QYXRoLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZCOTEzOTI5MTZBRTRGQzAwMDFGRTY4
MiAvKiBKU0RPTVBhdGguY3BwICovOyB9OworCQlGQjkxMzkyQTE2QUU0RkMwMDAxRkU2ODIgLyog
SlNQYXRoLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBG
QjkxMzkyODE2QUU0RkMwMDAxRkU2ODIgLyogSlNQYXRoLmggKi87IH07CisJCUZCOTEzOTJCMTZB
RTRGQzAwMDFGRTY4MiAvKiBKU1BhdGguY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gRkI5MTM5MjkxNkFFNEZDMDAwMUZFNjgyIC8qIEpTUGF0aC5jcHAg
Ki87IH07CiAJCUZCOTJERjRCMTVGRUQwODcwMDk5NDQzMyAvKiBDbGlwUGF0aE9wZXJhdGlvbi5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkI5MkRGNDkx
NUZFRDA4NzAwOTk0NDMzIC8qIENsaXBQYXRoT3BlcmF0aW9uLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRkJDMjIwREYxMjM3RkJFQjAwQkNGNzg4
IC8qIEdyYXBoaWNzQ29udGV4dDNET3BlbkdMLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZCQzIyMERFMTIzN0ZCRUIwMEJDRjc4OCAvKiBHcmFwaGlj
c0NvbnRleHQzRE9wZW5HTC5jcHAgKi87IH07CiAJCUZCRDZBRjg4MTVFRjI1QzkwMDhCNzExMCAv
KiBDU1NCYXNpY1NoYXBlcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gRkJENkFGODcxNUVGMjFENDAwOEI3MTEwIC8qIENTU0Jhc2ljU2hhcGVzLmggKi87
IH07CkBAIC0xMjU5MCw5ICsxMjU5MCw5IEBACiAJCUZCOTEzOTFFMTZBRTRCMEIwMDFGRTY4MiAv
KiBDYW52YXNQYXRoTWV0aG9kcy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5h
bWUgPSBDYW52YXNQYXRoTWV0aG9kcy5jcHA7IHBhdGggPSBjYW52YXMvQ2FudmFzUGF0aE1ldGhv
ZHMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGQjkxMzkxRjE2QUU0QjBCMDAx
RkU2ODIgLyogQ2FudmFzUGF0aE1ldGhvZHMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBu
YW1lID0gQ2FudmFzUGF0aE1ldGhvZHMuaDsgcGF0aCA9IGNhbnZhcy9DYW52YXNQYXRoTWV0aG9k
cy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGQjkxMzkyMDE2QUU0QjBCMDAxRkU2
ODIgLyogRE9NUGF0aC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBET01QYXRo
Lmg7IHBhdGggPSBjYW52YXMvRE9NUGF0aC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owot
CQlGQjkxMzkyMTE2QUU0QjBCMDAxRkU2ODIgLyogRE9NUGF0aC5pZGwgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0
OyBuYW1lID0gRE9NUGF0aC5pZGw7IHBhdGggPSBjYW52YXMvRE9NUGF0aC5pZGw7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUZCOTEzOTI4MTZBRTRGQzAwMDFGRTY4MiAvKiBKU0RPTVBh
dGguaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNET01QYXRoLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUZCOTEzOTI5MTZBRTRGQzAwMDFGRTY4MiAvKiBKU0RP
TVBhdGguY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNET01QYXRo
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRkI5MTM5MjExNkFFNEIwQjAwMUZF
NjgyIC8qIFBhdGguaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgbmFtZSA9IFBhdGguaWRsOyBwYXRoID0g
Y2FudmFzL1BhdGguaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlGQjkxMzkyODE2
QUU0RkMwMDAxRkU2ODIgLyogSlNQYXRoLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IEpTUGF0aC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlGQjkxMzkyOTE2QUU0
RkMwMDAxRkU2ODIgLyogSlNQYXRoLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IEpTUGF0aC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUZCOTJERjQ5
MTVGRUQwODcwMDk5NDQzMyAvKiBDbGlwUGF0aE9wZXJhdGlvbi5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBDbGlwUGF0aE9wZXJhdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQlGQkMyMjBERTEyMzdGQkVCMDBCQ0Y3ODggLyogR3JhcGhpY3NDb250ZXh0M0RP
cGVuR0wuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gR3JhcGhpY3ND
b250ZXh0M0RPcGVuR0wuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGQkQ2QUY4
MjE1RUYyMUEzMDA4QjcxMTAgLyogQmFzaWNTaGFwZXMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBuYW1lID0gQmFzaWNTaGFwZXMuY3BwOyBwYXRoID0gc3R5bGUvQmFzaWNTaGFw
ZXMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTQwNDksOCArMTQwNDksOCBA
QAogCQkJCTJFOTdDQ0U3MTI5MzlDQjgwMEM1QzhGRiAvKiBEYXRhVmlldy5jcHAgKi8sCiAJCQkJ
MkU5N0NDRTgxMjkzOUNCODAwQzVDOEZGIC8qIERhdGFWaWV3LmggKi8sCiAJCQkJMkU5N0NDRTkx
MjkzOUNCODAwQzVDOEZGIC8qIERhdGFWaWV3LmlkbCAqLywKLQkJCQlGQjkxMzkyMDE2QUU0QjBC
MDAxRkU2ODIgLyogRE9NUGF0aC5oICovLAotCQkJCUZCOTEzOTIxMTZBRTRCMEIwMDFGRTY4MiAv
KiBET01QYXRoLmlkbCAqLywKKwkJCQlGQjkxMzkyMDE2QUU0QjBCMDAxRkU2ODIgLyogUGF0aC5o
ICovLAorCQkJCUZCOTEzOTIxMTZBRTRCMEIwMDFGRTY4MiAvKiBQYXRoLmlkbCAqLywKIAkJCQlB
MDI0NTc0RTE2Q0VBQTI3MDAwRTU2NzEgLyogRVhURHJhd0J1ZmZlcnMuY3BwICovLAogCQkJCUEw
MjQ1NzRGMTZDRUFBMjcwMDBFNTY3MSAvKiBFWFREcmF3QnVmZmVycy5oICovLAogCQkJCUEwMjQ1
NzUwMTZDRUFBMjcwMDBFNTY3MSAvKiBFWFREcmF3QnVmZmVycy5pZGwgKi8sCkBAIC0xNjY4OSw4
ICsxNjY4OSw4IEBACiAJCQkJMkU5N0NFNkUxMjkzQUQ2QjAwQzVDOEZGIC8qIEpTRGF0YVZpZXcu
aCAqLywKIAkJCQkyRTA4ODhEMjExNDg4NDhBMDBBRjQyNjUgLyogSlNET01Gb3JtRGF0YS5jcHAg
Ki8sCiAJCQkJMkUwODg4RDMxMTQ4ODQ4QTAwQUY0MjY1IC8qIEpTRE9NRm9ybURhdGEuaCAqLywK
LQkJCQlGQjkxMzkyOTE2QUU0RkMwMDAxRkU2ODIgLyogSlNET01QYXRoLmNwcCAqLywKLQkJCQlG
QjkxMzkyODE2QUU0RkMwMDAxRkU2ODIgLyogSlNET01QYXRoLmggKi8sCisJCQkJRkI5MTM5Mjkx
NkFFNEZDMDAwMUZFNjgyIC8qIEpTUGF0aC5jcHAgKi8sCisJCQkJRkI5MTM5MjgxNkFFNEZDMDAw
MUZFNjgyIC8qIEpTUGF0aC5oICovLAogCQkJCTRBQ0JDMEM4MTI3MTNEMEEwMDk0RjlCMiAvKiBK
U0RPTVNldHRhYmxlVG9rZW5MaXN0LmNwcCAqLywKIAkJCQk0QUNCQzBDOTEyNzEzRDBBMDA5NEY5
QjIgLyogSlNET01TZXR0YWJsZVRva2VuTGlzdC5oICovLAogCQkJCTc2OTQ1NjNBMTIxNEQ5N0Mw
MDA3Q0JBRSAvKiBKU0RPTVRva2VuTGlzdC5jcHAgKi8sCkBAIC0yMjMyOCw3ICsyMjMyOCw3IEBA
CiAJCQkJQTlEMjQ4MDkwRDc1N0U3RDAwRkRGOTU5IC8qIEpTRE9NTWltZVR5cGVBcnJheS5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJNTJDQ0E5RTMxNUUzRjYyQzAwNTNDNzdGIC8qIEpTRE9NTmFtZWRG
bG93Q29sbGVjdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUFDRTUzRTAwQThEMTg4MTAwMjI5
NDdEIC8qIEpTRE9NUGFyc2VyLmggaW4gSGVhZGVycyAqLywKLQkJCQlGQjkxMzkyQTE2QUU0RkMw
MDAxRkU2ODIgLyogSlNET01QYXRoLmggaW4gSGVhZGVycyAqLywKKwkJCQlGQjkxMzkyQTE2QUU0
RkMwMDAxRkU2ODIgLyogSlNQYXRoLmggaW4gSGVhZGVycyAqLywKIAkJCQlBOUQyNDdGRjBENzU3
RTY5MDBGREY5NTkgLyogSlNET01QbHVnaW4uaCBpbiBIZWFkZXJzICovLAogCQkJCUE5RDI0ODAx
MEQ3NTdFNjkwMEZERjk1OSAvKiBKU0RPTVBsdWdpbkFycmF5LmggaW4gSGVhZGVycyAqLywKIAkJ
CQlCQzVBODZCNjBDMzM2N0U4MDBFRUE2NDkgLyogSlNET01TZWxlY3Rpb24uaCBpbiBIZWFkZXJz
ICovLApAQCAtMjU0NzEsNyArMjU0NzEsNyBAQAogCQkJCUE5QzZFNjQ3MEQ3NDY1Q0EwMDY0NDJF
OSAvKiBKU0RPTU1pbWVUeXBlQXJyYXlDdXN0b20uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTJD
Q0E5RTIxNUUzRjYyQzAwNTNDNzdGIC8qIEpTRE9NTmFtZWRGbG93Q29sbGVjdGlvbi5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQkxQUNFNTNERjBBOEQxODgxMDAyMjk0N0QgLyogSlNET01QYXJzZXIu
Y3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJRkI5MTM5MkIxNkFFNEZDMDAwMUZFNjgyIC8qIEpTRE9N
UGF0aC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlGQjkxMzkyQjE2QUU0RkMwMDAxRkU2ODIgLyog
SlNQYXRoLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE5RDI0N0ZFMEQ3NTdFNjkwMEZERjk1OSAv
KiBKU0RPTVBsdWdpbi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBOUQyNDgwMDBENzU3RTY5MDBG
REY5NTkgLyogSlNET01QbHVnaW5BcnJheS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBOUM2RTY0
QzBENzQ2NUU3MDA2NDQyRTkgLyogSlNET01QbHVnaW5BcnJheUN1c3RvbS5jcHAgaW4gU291cmNl
cyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdl
bmVyYXRvckpTLnBtIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJh
dG9ySlMucG0KaW5kZXggMjRkNWM0Mi4uZjBkZTQyNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KKysrIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KQEAgLTEwNywxNCArMTA3LDE0
IEBAIHN1YiBHZW5lcmF0ZUludGVyZmFjZQogCiBzdWIgR2VuZXJhdGVBdHRyaWJ1dGVFdmVudExp
c3RlbmVyQ2FsbAogewotICAgIG15ICRjbGFzc05hbWUgPSBzaGlmdDsKKyAgICBteSAkanNDbGFz
c05hbWUgPSBzaGlmdDsKICAgICBteSAkaW1wbFNldHRlckZ1bmN0aW9uTmFtZSA9IHNoaWZ0Owog
ICAgIG15ICR3aW5kb3dFdmVudExpc3RlbmVyID0gc2hpZnQ7CiAKICAgICBteSAkd3JhcHBlck9i
amVjdCA9ICR3aW5kb3dFdmVudExpc3RlbmVyID8gImdsb2JhbE9iamVjdCIgOiAidGhpc09iamVj
dCI7CiAgICAgbXkgQEdlbmVyYXRlRXZlbnRMaXN0ZW5lckltcGwgPSAoKTsKIAotICAgIGlmICgk
Y2xhc3NOYW1lIGVxICJKU1NWR0VsZW1lbnRJbnN0YW5jZSIpIHsKKyAgICBpZiAoJGpzQ2xhc3NO
YW1lIGVxICJKU1NWR0VsZW1lbnRJbnN0YW5jZSIpIHsKICAgICAgICAgIyBTVkdFbGVtZW50SW5z
dGFuY2VzIGhhdmUgdG8gY3JlYXRlIEpTRXZlbnRMaXN0ZW5lcnMgd2l0aCB0aGUgd3JhcHBlciBl
cXVhbCB0byB0aGUgY29ycmVzcG9uZGluZ0VsZW1lbnQKICAgICAgICAgJHdyYXBwZXJPYmplY3Qg
PSAiYXNPYmplY3QoY29ycmVzcG9uZGluZ0VsZW1lbnRXcmFwcGVyKSI7CiAKQEAgLTEzMyw3ICsx
MzMsNyBAQCBFTkQKIAogc3ViIEdlbmVyYXRlRXZlbnRMaXN0ZW5lckNhbGwKIHsKLSAgICBteSAk
Y2xhc3NOYW1lID0gc2hpZnQ7CisgICAgbXkgJGpzQ2xhc3NOYW1lID0gc2hpZnQ7CiAgICAgbXkg
JGZ1bmN0aW9uTmFtZSA9IHNoaWZ0OwogICAgIG15ICRwYXNzUmVmUHRySGFuZGxpbmcgPSAoJGZ1
bmN0aW9uTmFtZSBlcSAiYWRkIikgPyAiIiA6ICIuZ2V0KCkiOwogCkBAIC0xNDEsNyArMTQxLDcg
QEAgc3ViIEdlbmVyYXRlRXZlbnRMaXN0ZW5lckNhbGwKIAogICAgIG15IEBHZW5lcmF0ZUV2ZW50
TGlzdGVuZXJJbXBsID0gKCk7CiAgICAgbXkgJHdyYXBwZXJPYmplY3QgPSAiY2FzdGVkVGhpcyI7
Ci0gICAgaWYgKCRjbGFzc05hbWUgZXEgIkpTU1ZHRWxlbWVudEluc3RhbmNlIikgeworICAgIGlm
ICgkanNDbGFzc05hbWUgZXEgIkpTU1ZHRWxlbWVudEluc3RhbmNlIikgewogICAgICAgICAjIFNW
R0VsZW1lbnRJbnN0YW5jZXMgaGF2ZSB0byBjcmVhdGUgSlNFdmVudExpc3RlbmVycyB3aXRoIHRo
ZSB3cmFwcGVyIGVxdWFsIHRvIHRoZSBjb3JyZXNwb25kaW5nRWxlbWVudAogICAgICAgICAkd3Jh
cHBlck9iamVjdCA9ICJhc09iamVjdChjb3JyZXNwb25kaW5nRWxlbWVudFdyYXBwZXIpIjsKIApA
QCAtMjc4LDE1ICsyNzgsMTUgQEAgc3ViIEFkZFR5cGVkZWZGb3JTY3JpcHRQcm9maWxlVHlwZQog
CiBzdWIgQWRkQ2xhc3NGb3J3YXJkSWZOZWVkZWQKIHsKLSAgICBteSAkaW50ZXJmYWNlTmFtZSA9
IHNoaWZ0OworICAgIG15ICRpbXBsQ2xhc3NOYW1lID0gc2hpZnQ7CiAKICAgICAjIFNWR0FuaW1h
dGVkTGVuZ3RoL051bWJlci9ldGMuIGFyZSB0eXBlZGVmcyB0byBTVkdBbmltYXRlZFRlbXBsYXRl
LCBzbyBkb24ndCB1c2UgY2xhc3MgZm9yd2FyZHMgZm9yIHRoZW0hCi0gICAgdW5sZXNzICgkY29k
ZUdlbmVyYXRvci0+SXNTVkdBbmltYXRlZFR5cGUoJGludGVyZmFjZU5hbWUpIG9yIElzU2NyaXB0
UHJvZmlsZVR5cGUoJGludGVyZmFjZU5hbWUpIG9yICRjb2RlR2VuZXJhdG9yLT5Jc1R5cGVkQXJy
YXlUeXBlKCRpbnRlcmZhY2VOYW1lKSkgewotICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAi
Y2xhc3MgJGludGVyZmFjZU5hbWU7XG5cbiIpOworICAgIHVubGVzcyAoJGNvZGVHZW5lcmF0b3It
PklzU1ZHQW5pbWF0ZWRUeXBlKCRpbXBsQ2xhc3NOYW1lKSBvciBJc1NjcmlwdFByb2ZpbGVUeXBl
KCRpbXBsQ2xhc3NOYW1lKSBvciAkY29kZUdlbmVyYXRvci0+SXNUeXBlZEFycmF5VHlwZSgkaW1w
bENsYXNzTmFtZSkpIHsKKyAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgImNsYXNzICRpbXBs
Q2xhc3NOYW1lO1xuXG4iKTsKICAgICAjIFNjcmlwdFByb2ZpbGUgYW5kIFNjcmlwdFByb2ZpbGVO
b2RlIGFyZSB0eXBlZGVmcyB0byBKU0M6OlByb2ZpbGUgYW5kIEpTQzo6UHJvZmlsZU5vZGUuCi0g
ICAgfSBlbHNpZiAoSXNTY3JpcHRQcm9maWxlVHlwZSgkaW50ZXJmYWNlTmFtZSkpIHsKKyAgICB9
IGVsc2lmIChJc1NjcmlwdFByb2ZpbGVUeXBlKCRpbXBsQ2xhc3NOYW1lKSkgewogICAgICAgICAk
aGVhZGVySW5jbHVkZXN7Ijxwcm9maWxlci9Qcm9maWxlTm9kZS5oPiJ9ID0gMTsKLSAgICAgICAg
QWRkVHlwZWRlZkZvclNjcmlwdFByb2ZpbGVUeXBlKCRpbnRlcmZhY2VOYW1lKTsKKyAgICAgICAg
QWRkVHlwZWRlZkZvclNjcmlwdFByb2ZpbGVUeXBlKCRpbXBsQ2xhc3NOYW1lKTsKICAgICB9CiB9
CiAKQEAgLTMwNiwyMiArMzA2LDIyIEBAIHN1YiBIYXNoVmFsdWVGb3JDbGFzc0FuZE5hbWUKIHN1
YiBoYXNoVGFibGVBY2Nlc3NvcgogewogICAgIG15ICRub1N0YXRpY1RhYmxlcyA9IHNoaWZ0Owot
ICAgIG15ICRjbGFzc05hbWUgPSBzaGlmdDsKKyAgICBteSAkanNDbGFzc05hbWUgPSBzaGlmdDsK
ICAgICBpZiAoJG5vU3RhdGljVGFibGVzKSB7Ci0gICAgICAgIHJldHVybiAiZ2V0JHtjbGFzc05h
bWV9VGFibGUoZXhlYykiOworICAgICAgICByZXR1cm4gImdldCR7anNDbGFzc05hbWV9VGFibGUo
ZXhlYykiOwogICAgIH0gZWxzZSB7Ci0gICAgICAgIHJldHVybiAiJiR7Y2xhc3NOYW1lfVRhYmxl
IjsKKyAgICAgICAgcmV0dXJuICImJHtqc0NsYXNzTmFtZX1UYWJsZSI7CiAgICAgfQogfQogCiBz
dWIgcHJvdG90eXBlSGFzaFRhYmxlQWNjZXNzb3IKIHsKICAgICBteSAkbm9TdGF0aWNUYWJsZXMg
PSBzaGlmdDsKLSAgICBteSAkY2xhc3NOYW1lID0gc2hpZnQ7CisgICAgbXkgJGpzQ2xhc3NOYW1l
ID0gc2hpZnQ7CiAgICAgaWYgKCRub1N0YXRpY1RhYmxlcykgewotICAgICAgICByZXR1cm4gImdl
dCR7Y2xhc3NOYW1lfVByb3RvdHlwZVRhYmxlKGV4ZWMpIjsKKyAgICAgICAgcmV0dXJuICJnZXQk
e2pzQ2xhc3NOYW1lfVByb3RvdHlwZVRhYmxlKGV4ZWMpIjsKICAgICB9IGVsc2UgewotICAgICAg
ICByZXR1cm4gIiYke2NsYXNzTmFtZX1Qcm90b3R5cGVUYWJsZSI7CisgICAgICAgIHJldHVybiAi
JiR7anNDbGFzc05hbWV9UHJvdG90eXBlVGFibGUiOwogICAgIH0KIH0KIApAQCAtMzUwLDcgKzM1
MCw5IEBAIHN1YiBHZXRDdXN0b21Jc1JlYWNoYWJsZQogCiBzdWIgR2VuZXJhdGVHZXRPd25Qcm9w
ZXJ0eVNsb3RCb2R5CiB7Ci0gICAgbXkgKCRpbnRlcmZhY2UsICRpbnRlcmZhY2VOYW1lLCAkY2xh
c3NOYW1lLCAkaGFzQXR0cmlidXRlcywgJGlubGluZWQpID0gQF87CisgICAgbXkgKCRpbnRlcmZh
Y2UsICRqc0NsYXNzTmFtZSwgJGhhc0F0dHJpYnV0ZXMsICRpbmxpbmVkKSA9IEBfOworICAgIG15
ICRpbnRlcmZhY2VOYW1lID0gJGludGVyZmFjZS0+bmFtZTsKKyAgICBteSAkaW1wbENsYXNzTmFt
ZSA9IEdldEltcGxDbGFzc05hbWUoJGludGVyZmFjZSk7CiAKICAgICBteSAkbmFtZXNwYWNlTWF5
YmUgPSAoJGlubGluZWQgPyAiSlNDOjoiIDogIiIpOwogCkBAIC0zNjUsNyArMzY3LDcgQEAgc3Vi
IEdlbmVyYXRlR2V0T3duUHJvcGVydHlTbG90Qm9keQogICAgIG15ICRtYW51YWxMb29rdXBHZXR0
ZXJHZW5lcmF0aW9uID0gc3ViIHsKICAgICAgICAgbXkgJHJlcXVpcmVzTWFudWFsTG9va3VwID0g
JGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkluZGV4ZWRHZXR0ZXIifSB8fCAkaW50
ZXJmYWNlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiTmFtZWRHZXR0ZXIifTsKICAgICAgICAgaWYg
KCRyZXF1aXJlc01hbnVhbExvb2t1cCkgewotICAgICAgICAgICAgcHVzaChAZ2V0T3duUHJvcGVy
dHlTbG90SW1wbCwgIiAgICBjb25zdCAke25hbWVzcGFjZU1heWJlfUhhc2hFbnRyeSogZW50cnkg
PSBnZXRTdGF0aWNWYWx1ZVNsb3RFbnRyeVdpdGhvdXRDYWNoaW5nPCRjbGFzc05hbWU+KGV4ZWMs
IHByb3BlcnR5TmFtZSk7XG4iKTsKKyAgICAgICAgICAgIHB1c2goQGdldE93blByb3BlcnR5U2xv
dEltcGwsICIgICAgY29uc3QgJHtuYW1lc3BhY2VNYXliZX1IYXNoRW50cnkqIGVudHJ5ID0gZ2V0
U3RhdGljVmFsdWVTbG90RW50cnlXaXRob3V0Q2FjaGluZzwkanNDbGFzc05hbWU+KGV4ZWMsIHBy
b3BlcnR5TmFtZSk7XG4iKTsKICAgICAgICAgICAgIHB1c2goQGdldE93blByb3BlcnR5U2xvdElt
cGwsICIgICAgaWYgKGVudHJ5KSB7XG4iKTsKICAgICAgICAgICAgIHB1c2goQGdldE93blByb3Bl
cnR5U2xvdEltcGwsICIgICAgICAgIHNsb3Quc2V0Q3VzdG9tKHRoaXNPYmplY3QsIGVudHJ5LT5w
cm9wZXJ0eUdldHRlcigpKTtcbiIpOwogICAgICAgICAgICAgcHVzaChAZ2V0T3duUHJvcGVydHlT
bG90SW1wbCwgIiAgICAgICAgcmV0dXJuIHRydWU7XG4iKTsKQEAgLTM4NSw3ICszODcsNyBAQCBz
dWIgR2VuZXJhdGVHZXRPd25Qcm9wZXJ0eVNsb3RCb2R5CiAgICAgICAgIGlmIChJbmRleEdldHRl
clJldHVybnNTdHJpbmdzKCRpbnRlcmZhY2VOYW1lKSkgewogICAgICAgICAgICAgcHVzaChAZ2V0
T3duUHJvcGVydHlTbG90SW1wbCwgIiAgICBpZiAoaW5kZXggIT0gUHJvcGVydHlOYW1lOjpOb3RB
bkluZGV4KSB7XG4iKTsKICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIHB1c2goQGdldE93
blByb3BlcnR5U2xvdEltcGwsICIgICAgaWYgKGluZGV4ICE9IFByb3BlcnR5TmFtZTo6Tm90QW5J
bmRleCAmJiBpbmRleCA8IHN0YXRpY19jYXN0PCRpbnRlcmZhY2VOYW1lKj4odGhpc09iamVjdC0+
aW1wbCgpKS0+bGVuZ3RoKCkpIHtcbiIpOworICAgICAgICAgICAgcHVzaChAZ2V0T3duUHJvcGVy
dHlTbG90SW1wbCwgIiAgICBpZiAoaW5kZXggIT0gUHJvcGVydHlOYW1lOjpOb3RBbkluZGV4ICYm
IGluZGV4IDwgc3RhdGljX2Nhc3Q8JGltcGxDbGFzc05hbWUqPih0aGlzT2JqZWN0LT5pbXBsKCkp
LT5sZW5ndGgoKSkge1xuIik7CiAgICAgICAgIH0KICAgICAgICAgaWYgKCRpbnRlcmZhY2UtPmV4
dGVuZGVkQXR0cmlidXRlcy0+eyJOdW1lcmljSW5kZXhlZEdldHRlciJ9KSB7CiAgICAgICAgICAg
ICBwdXNoKEBnZXRPd25Qcm9wZXJ0eVNsb3RJbXBsLCAiICAgICAgICBzbG90LnNldFZhbHVlKHRo
aXNPYmplY3QtPmdldEJ5SW5kZXgoZXhlYywgaW5kZXgpKTtcbiIpOwpAQCAtMzk3LDcgKzM5OSw3
IEBAIHN1YiBHZW5lcmF0ZUdldE93blByb3BlcnR5U2xvdEJvZHkKICAgICB9CiAKICAgICBpZiAo
JGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Ik5hbWVkR2V0dGVyIn0gfHwgJGludGVy
ZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkN1c3RvbU5hbWVkR2V0dGVyIn0pIHsKLSAgICAg
ICAgcHVzaChAZ2V0T3duUHJvcGVydHlTbG90SW1wbCwgIiAgICBpZiAoY2FuR2V0SXRlbXNGb3JO
YW1lKGV4ZWMsIHN0YXRpY19jYXN0PCRpbnRlcmZhY2VOYW1lKj4odGhpc09iamVjdC0+aW1wbCgp
KSwgcHJvcGVydHlOYW1lKSkge1xuIik7CisgICAgICAgIHB1c2goQGdldE93blByb3BlcnR5U2xv
dEltcGwsICIgICAgaWYgKGNhbkdldEl0ZW1zRm9yTmFtZShleGVjLCBzdGF0aWNfY2FzdDwkaW1w
bENsYXNzTmFtZSo+KHRoaXNPYmplY3QtPmltcGwoKSksIHByb3BlcnR5TmFtZSkpIHtcbiIpOwog
ICAgICAgICBwdXNoKEBnZXRPd25Qcm9wZXJ0eVNsb3RJbXBsLCAiICAgICAgICBzbG90LnNldEN1
c3RvbSh0aGlzT2JqZWN0LCB0aGlzT2JqZWN0LT5uYW1lR2V0dGVyKTtcbiIpOwogICAgICAgICBw
dXNoKEBnZXRPd25Qcm9wZXJ0eVNsb3RJbXBsLCAiICAgICAgICByZXR1cm4gdHJ1ZTtcbiIpOwog
ICAgICAgICBwdXNoKEBnZXRPd25Qcm9wZXJ0eVNsb3RJbXBsLCAiICAgIH1cbiIpOwpAQCAtNDIw
LDkgKzQyMiw5IEBAIHN1YiBHZW5lcmF0ZUdldE93blByb3BlcnR5U2xvdEJvZHkKICAgICBpZiAo
JGhhc0F0dHJpYnV0ZXMpIHsKICAgICAgICAgaWYgKCRpbmxpbmVkKSB7CiAgICAgICAgICAgICBk
aWUgIkNhbm5vdCBpbmxpbmUgaWYgTm9TdGF0aWNUYWJsZXMgaXMgc2V0LiIgaWYgKCRpbnRlcmZh
Y2UtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJKU05vU3RhdGljVGFibGVzIn0pOwotICAgICAgICAg
ICAgcHVzaChAZ2V0T3duUHJvcGVydHlTbG90SW1wbCwgIiAgICByZXR1cm4gJHtuYW1lc3BhY2VN
YXliZX1nZXRTdGF0aWNWYWx1ZVNsb3Q8JGNsYXNzTmFtZSwgQmFzZT4oZXhlYywgc19pbmZvLnN0
YXRpY1Byb3BIYXNoVGFibGUsIHRoaXNPYmplY3QsIHByb3BlcnR5TmFtZSwgc2xvdCk7XG4iKTsK
KyAgICAgICAgICAgIHB1c2goQGdldE93blByb3BlcnR5U2xvdEltcGwsICIgICAgcmV0dXJuICR7
bmFtZXNwYWNlTWF5YmV9Z2V0U3RhdGljVmFsdWVTbG90PCRqc0NsYXNzTmFtZSwgQmFzZT4oZXhl
Yywgc19pbmZvLnN0YXRpY1Byb3BIYXNoVGFibGUsIHRoaXNPYmplY3QsIHByb3BlcnR5TmFtZSwg
c2xvdCk7XG4iKTsKICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIHB1c2goQGdldE93blBy
b3BlcnR5U2xvdEltcGwsICIgICAgcmV0dXJuICR7bmFtZXNwYWNlTWF5YmV9Z2V0U3RhdGljVmFs
dWVTbG90PCRjbGFzc05hbWUsIEJhc2U+KGV4ZWMsICIgLiBoYXNoVGFibGVBY2Nlc3NvcigkaW50
ZXJmYWNlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiSlNOb1N0YXRpY1RhYmxlcyJ9LCAkY2xhc3NO
YW1lKSAuICIsIHRoaXNPYmplY3QsIHByb3BlcnR5TmFtZSwgc2xvdCk7XG4iKTsKKyAgICAgICAg
ICAgIHB1c2goQGdldE93blByb3BlcnR5U2xvdEltcGwsICIgICAgcmV0dXJuICR7bmFtZXNwYWNl
TWF5YmV9Z2V0U3RhdGljVmFsdWVTbG90PCRqc0NsYXNzTmFtZSwgQmFzZT4oZXhlYywgIiAuIGhh
c2hUYWJsZUFjY2Vzc29yKCRpbnRlcmZhY2UtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJKU05vU3Rh
dGljVGFibGVzIn0sICRqc0NsYXNzTmFtZSkgLiAiLCB0aGlzT2JqZWN0LCBwcm9wZXJ0eU5hbWUs
IHNsb3QpO1xuIik7CiAgICAgICAgIH0KICAgICB9IGVsc2UgewogICAgICAgICBwdXNoKEBnZXRP
d25Qcm9wZXJ0eVNsb3RJbXBsLCAiICAgIHJldHVybiBCYXNlOjpnZXRPd25Qcm9wZXJ0eVNsb3Qo
dGhpc09iamVjdCwgZXhlYywgcHJvcGVydHlOYW1lLCBzbG90KTtcbiIpOwpAQCAtNDMzLDE1ICs0
MzUsMTcgQEAgc3ViIEdlbmVyYXRlR2V0T3duUHJvcGVydHlTbG90Qm9keQogCiBzdWIgR2VuZXJh
dGVHZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JCb2R5CiB7Ci0gICAgbXkgKCRpbnRlcmZhY2UsICRp
bnRlcmZhY2VOYW1lLCAkY2xhc3NOYW1lLCAkaGFzQXR0cmlidXRlcywgJGlubGluZWQpID0gQF87
Ci0gICAgCisgICAgbXkgKCRpbnRlcmZhY2UsICRqc0NsYXNzTmFtZSwgJGhhc0F0dHJpYnV0ZXMs
ICRpbmxpbmVkKSA9IEBfOworICAgIG15ICRpbnRlcmZhY2VOYW1lID0gJGludGVyZmFjZS0+bmFt
ZTsKKyAgICBteSAkaW1wbENsYXNzTmFtZSA9IEdldEltcGxDbGFzc05hbWUoJGludGVyZmFjZSk7
CisKICAgICBteSAkbmFtZXNwYWNlTWF5YmUgPSAoJGlubGluZWQgPyAiSlNDOjoiIDogIiIpOwog
ICAgIAogICAgIG15IEBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JJbXBsID0gKCk7CiAgICAgaWYg
KCRpbnRlcmZhY2UtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJDaGVja1NlY3VyaXR5In0pIHsKICAg
ICAgICAgaWYgKCRpbnRlcmZhY2VOYW1lIGVxICJET01XaW5kb3ciKSB7CiAgICAgICAgICAgICAk
aW1wbEluY2x1ZGVzeyJCaW5kaW5nU2VjdXJpdHkuaCJ9ID0gMTsKLSAgICAgICAgICAgIHB1c2go
QGltcGxDb250ZW50LCAiICAgIGlmICghQmluZGluZ1NlY3VyaXR5OjpzaG91bGRBbGxvd0FjY2Vz
c1RvRE9NV2luZG93KGV4ZWMsIGpzQ2FzdDwkY2xhc3NOYW1lKj4odGhpc09iamVjdCktPmltcGwo
KSkpXG4iKTsKKyAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIGlmICghQmluZGlu
Z1NlY3VyaXR5OjpzaG91bGRBbGxvd0FjY2Vzc1RvRE9NV2luZG93KGV4ZWMsIGpzQ2FzdDwkanND
bGFzc05hbWUqPih0aGlzT2JqZWN0KS0+aW1wbCgpKSlcbiIpOwogICAgICAgICB9IGVsc2Ugewog
ICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgaWYgKCFzaG91bGRBbGxvd0FjY2Vz
c1RvRnJhbWUoZXhlYywgdGhpc09iamVjdC0+aW1wbCgpLT5mcmFtZSgpKSlcbiIpOwogICAgICAg
ICB9CkBAIC00NTcsNyArNDYxLDcgQEAgc3ViIEdlbmVyYXRlR2V0T3duUHJvcGVydHlEZXNjcmlw
dG9yQm9keQogICAgIG15ICRtYW51YWxMb29rdXBHZXR0ZXJHZW5lcmF0aW9uID0gc3ViIHsKICAg
ICAgICAgbXkgJHJlcXVpcmVzTWFudWFsTG9va3VwID0gJGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRy
aWJ1dGVzLT57IkluZGV4ZWRHZXR0ZXIifSB8fCAkaW50ZXJmYWNlLT5leHRlbmRlZEF0dHJpYnV0
ZXMtPnsiTmFtZWRHZXR0ZXIifTsKICAgICAgICAgaWYgKCRyZXF1aXJlc01hbnVhbExvb2t1cCkg
ewotICAgICAgICAgICAgcHVzaChAZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ySW1wbCwgIiAgICBj
b25zdCAke25hbWVzcGFjZU1heWJlfUhhc2hFbnRyeSogZW50cnkgPSAke2NsYXNzTmFtZX1UYWJs
ZS5lbnRyeShleGVjLCBwcm9wZXJ0eU5hbWUpO1xuIik7CisgICAgICAgICAgICBwdXNoKEBnZXRP
d25Qcm9wZXJ0eURlc2NyaXB0b3JJbXBsLCAiICAgIGNvbnN0ICR7bmFtZXNwYWNlTWF5YmV9SGFz
aEVudHJ5KiBlbnRyeSA9ICR7anNDbGFzc05hbWV9VGFibGUuZW50cnkoZXhlYywgcHJvcGVydHlO
YW1lKTtcbiIpOwogICAgICAgICAgICAgcHVzaChAZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ySW1w
bCwgIiAgICBpZiAoZW50cnkpIHtcbiIpOwogICAgICAgICAgICAgcHVzaChAZ2V0T3duUHJvcGVy
dHlEZXNjcmlwdG9ySW1wbCwgIiAgICAgICAgUHJvcGVydHlTbG90IHNsb3Q7XG4iKTsKICAgICAg
ICAgICAgIHB1c2goQGdldE93blByb3BlcnR5RGVzY3JpcHRvckltcGwsICIgICAgICAgIHNsb3Qu
c2V0Q3VzdG9tKHRoaXNPYmplY3QsIGVudHJ5LT5wcm9wZXJ0eUdldHRlcigpKTtcbiIpOwpAQCAt
NDczLDcgKzQ3Nyw3IEBAIHN1YiBHZW5lcmF0ZUdldE93blByb3BlcnR5RGVzY3JpcHRvckJvZHkK
IAogICAgIGlmICgkaW50ZXJmYWNlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiSW5kZXhlZEdldHRl
ciJ9IHx8ICRpbnRlcmZhY2UtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJOdW1lcmljSW5kZXhlZEdl
dHRlciJ9KSB7CiAgICAgICAgIHB1c2goQGdldE93blByb3BlcnR5RGVzY3JpcHRvckltcGwsICIg
ICAgdW5zaWduZWQgaW5kZXggPSBwcm9wZXJ0eU5hbWUuYXNJbmRleCgpO1xuIik7Ci0gICAgICAg
IHB1c2goQGdldE93blByb3BlcnR5RGVzY3JpcHRvckltcGwsICIgICAgaWYgKGluZGV4ICE9IFBy
b3BlcnR5TmFtZTo6Tm90QW5JbmRleCAmJiBpbmRleCA8IHN0YXRpY19jYXN0PCRpbnRlcmZhY2VO
YW1lKj4odGhpc09iamVjdC0+aW1wbCgpKS0+bGVuZ3RoKCkpIHtcbiIpOworICAgICAgICBwdXNo
KEBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JJbXBsLCAiICAgIGlmIChpbmRleCAhPSBQcm9wZXJ0
eU5hbWU6Ok5vdEFuSW5kZXggJiYgaW5kZXggPCBzdGF0aWNfY2FzdDwkaW1wbENsYXNzTmFtZSo+
KHRoaXNPYmplY3QtPmltcGwoKSktPmxlbmd0aCgpKSB7XG4iKTsKICAgICAgICAgaWYgKCRpbnRl
cmZhY2UtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJOdW1lcmljSW5kZXhlZEdldHRlciJ9KSB7CiAg
ICAgICAgICAgICAjIEFzc3VtZSB0aGF0IGlmIHRoZXJlJ3MgYSBzZXR0ZXIsIHRoZSBpbmRleCB3
aWxsIGJlIHdyaXRhYmxlCiAgICAgICAgICAgICBpZiAoJGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRy
aWJ1dGVzLT57IkN1c3RvbUluZGV4ZWRTZXR0ZXIifSkgewpAQCAtNDk2LDcgKzUwMCw3IEBAIHN1
YiBHZW5lcmF0ZUdldE93blByb3BlcnR5RGVzY3JpcHRvckJvZHkKICAgICB9CiAKICAgICBpZiAo
JGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Ik5hbWVkR2V0dGVyIn0gfHwgJGludGVy
ZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkN1c3RvbU5hbWVkR2V0dGVyIn0pIHsKLSAgICAg
ICAgcHVzaChAZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ySW1wbCwgIiAgICBpZiAoY2FuR2V0SXRl
bXNGb3JOYW1lKGV4ZWMsIHN0YXRpY19jYXN0PCRpbnRlcmZhY2VOYW1lKj4odGhpc09iamVjdC0+
aW1wbCgpKSwgcHJvcGVydHlOYW1lKSkge1xuIik7CisgICAgICAgIHB1c2goQGdldE93blByb3Bl
cnR5RGVzY3JpcHRvckltcGwsICIgICAgaWYgKGNhbkdldEl0ZW1zRm9yTmFtZShleGVjLCBzdGF0
aWNfY2FzdDwkaW1wbENsYXNzTmFtZSo+KHRoaXNPYmplY3QtPmltcGwoKSksIHByb3BlcnR5TmFt
ZSkpIHtcbiIpOwogICAgICAgICBwdXNoKEBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JJbXBsLCAi
ICAgICAgICAke25hbWVzcGFjZU1heWJlfVByb3BlcnR5U2xvdCBzbG90O1xuIik7CiAgICAgICAg
IHB1c2goQGdldE93blByb3BlcnR5RGVzY3JpcHRvckltcGwsICIgICAgICAgIHNsb3Quc2V0Q3Vz
dG9tKHRoaXNPYmplY3QsIG5hbWVHZXR0ZXIpO1xuIik7CiAgICAgICAgIHB1c2goQGdldE93blBy
b3BlcnR5RGVzY3JpcHRvckltcGwsICIgICAgICAgIGRlc2NyaXB0b3Iuc2V0RGVzY3JpcHRvcihz
bG90LmdldFZhbHVlKGV4ZWMsIHByb3BlcnR5TmFtZSksIFJlYWRPbmx5IHwgRG9udERlbGV0ZSB8
IERvbnRFbnVtKTtcbiIpOwpAQCAtNTIxLDkgKzUyNSw5IEBAIHN1YiBHZW5lcmF0ZUdldE93blBy
b3BlcnR5RGVzY3JpcHRvckJvZHkKICAgICBpZiAoJGhhc0F0dHJpYnV0ZXMpIHsKICAgICAgICAg
aWYgKCRpbmxpbmVkKSB7CiAgICAgICAgICAgICBkaWUgIkNhbm5vdCBpbmxpbmUgaWYgTm9TdGF0
aWNUYWJsZXMgaXMgc2V0LiIgaWYgKCRpbnRlcmZhY2UtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJK
U05vU3RhdGljVGFibGVzIn0pOwotICAgICAgICAgICAgcHVzaChAZ2V0T3duUHJvcGVydHlEZXNj
cmlwdG9ySW1wbCwgIiAgICByZXR1cm4gJHtuYW1lc3BhY2VNYXliZX1nZXRTdGF0aWNWYWx1ZURl
c2NyaXB0b3I8JGNsYXNzTmFtZSwgQmFzZT4oZXhlYywgc19pbmZvLnN0YXRpY1Byb3BIYXNoVGFi
bGUsIHRoaXNPYmplY3QsIHByb3BlcnR5TmFtZSwgZGVzY3JpcHRvcik7XG4iKTsKKyAgICAgICAg
ICAgIHB1c2goQGdldE93blByb3BlcnR5RGVzY3JpcHRvckltcGwsICIgICAgcmV0dXJuICR7bmFt
ZXNwYWNlTWF5YmV9Z2V0U3RhdGljVmFsdWVEZXNjcmlwdG9yPCRqc0NsYXNzTmFtZSwgQmFzZT4o
ZXhlYywgc19pbmZvLnN0YXRpY1Byb3BIYXNoVGFibGUsIHRoaXNPYmplY3QsIHByb3BlcnR5TmFt
ZSwgZGVzY3JpcHRvcik7XG4iKTsKICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIHB1c2go
QGdldE93blByb3BlcnR5RGVzY3JpcHRvckltcGwsICIgICAgcmV0dXJuICR7bmFtZXNwYWNlTWF5
YmV9Z2V0U3RhdGljVmFsdWVEZXNjcmlwdG9yPCRjbGFzc05hbWUsIEJhc2U+KGV4ZWMsICIgLiBo
YXNoVGFibGVBY2Nlc3NvcigkaW50ZXJmYWNlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiSlNOb1N0
YXRpY1RhYmxlcyJ9LCAkY2xhc3NOYW1lKSAuICIsIHRoaXNPYmplY3QsIHByb3BlcnR5TmFtZSwg
ZGVzY3JpcHRvcik7XG4iKTsKKyAgICAgICAgICAgIHB1c2goQGdldE93blByb3BlcnR5RGVzY3Jp
cHRvckltcGwsICIgICAgcmV0dXJuICR7bmFtZXNwYWNlTWF5YmV9Z2V0U3RhdGljVmFsdWVEZXNj
cmlwdG9yPCRqc0NsYXNzTmFtZSwgQmFzZT4oZXhlYywgIiAuIGhhc2hUYWJsZUFjY2Vzc29yKCRp
bnRlcmZhY2UtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJKU05vU3RhdGljVGFibGVzIn0sICRqc0Ns
YXNzTmFtZSkgLiAiLCB0aGlzT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIGRlc2NyaXB0b3IpO1xuIik7
CiAgICAgICAgIH0KICAgICB9IGVsc2UgewogICAgICAgICBwdXNoKEBnZXRPd25Qcm9wZXJ0eURl
c2NyaXB0b3JJbXBsLCAiICAgIHJldHVybiBCYXNlOjpnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Io
dGhpc09iamVjdCwgZXhlYywgcHJvcGVydHlOYW1lLCBkZXNjcmlwdG9yKTtcbiIpOwpAQCAtNTM1
LDEzICs1MzksMTMgQEAgc3ViIEdlbmVyYXRlR2V0T3duUHJvcGVydHlEZXNjcmlwdG9yQm9keQog
c3ViIEdlbmVyYXRlSGVhZGVyQ29udGVudEhlYWRlcgogewogICAgIG15ICRpbnRlcmZhY2UgPSBz
aGlmdDsKLSAgICBteSAkY2xhc3NOYW1lID0gIkpTIiAuICRpbnRlcmZhY2UtPm5hbWU7CisgICAg
bXkgJGpzQ2xhc3NOYW1lID0gR2V0SlNDbGFzc05hbWUoJGludGVyZmFjZSk7CiAKICAgICBteSBA
aGVhZGVyQ29udGVudEhlYWRlciA9IHNwbGl0KCJcciIsICRoZWFkZXJUZW1wbGF0ZSk7CiAKICAg
ICAjIC0gQWRkIGhlYWRlciBwcm90ZWN0aW9uCi0gICAgcHVzaChAaGVhZGVyQ29udGVudEhlYWRl
ciwgIlxuI2lmbmRlZiAkY2xhc3NOYW1lIiAuICJfaCIpOwotICAgIHB1c2goQGhlYWRlckNvbnRl
bnRIZWFkZXIsICJcbiNkZWZpbmUgJGNsYXNzTmFtZSIgLiAiX2hcblxuIik7CisgICAgcHVzaChA
aGVhZGVyQ29udGVudEhlYWRlciwgIlxuI2lmbmRlZiAkanNDbGFzc05hbWUiIC4gIl9oIik7Cisg
ICAgcHVzaChAaGVhZGVyQ29udGVudEhlYWRlciwgIlxuI2RlZmluZSAkanNDbGFzc05hbWUiIC4g
Il9oXG5cbiIpOwogCiAgICAgbXkgJGNvbmRpdGlvbmFsU3RyaW5nID0gJGNvZGVHZW5lcmF0b3It
PkdlbmVyYXRlQ29uZGl0aW9uYWxTdHJpbmcoJGludGVyZmFjZSk7CiAgICAgcHVzaChAaGVhZGVy
Q29udGVudEhlYWRlciwgIiNpZiAke2NvbmRpdGlvbmFsU3RyaW5nfVxuXG4iKSBpZiAkY29uZGl0
aW9uYWxTdHJpbmc7CkBAIC01NTEsMTQgKzU1NSwxNCBAQCBzdWIgR2VuZXJhdGVIZWFkZXJDb250
ZW50SGVhZGVyCiBzdWIgR2VuZXJhdGVJbXBsZW1lbnRhdGlvbkNvbnRlbnRIZWFkZXIKIHsKICAg
ICBteSAkaW50ZXJmYWNlID0gc2hpZnQ7Ci0gICAgbXkgJGNsYXNzTmFtZSA9ICJKUyIgLiAkaW50
ZXJmYWNlLT5uYW1lOworICAgIG15ICRqc0NsYXNzTmFtZSA9IEdldEpTQ2xhc3NOYW1lKCRpbnRl
cmZhY2UpOwogCiAgICAgbXkgQGltcGxDb250ZW50SGVhZGVyID0gc3BsaXQoIlxyIiwgJGhlYWRl
clRlbXBsYXRlKTsKIAogICAgIHB1c2goQGltcGxDb250ZW50SGVhZGVyLCAiXG4jaW5jbHVkZSBc
ImNvbmZpZy5oXCJcbiIpOwogICAgIG15ICRjb25kaXRpb25hbFN0cmluZyA9ICRjb2RlR2VuZXJh
dG9yLT5HZW5lcmF0ZUNvbmRpdGlvbmFsU3RyaW5nKCRpbnRlcmZhY2UpOwogICAgIHB1c2goQGlt
cGxDb250ZW50SGVhZGVyLCAiXG4jaWYgJHtjb25kaXRpb25hbFN0cmluZ31cblxuIikgaWYgJGNv
bmRpdGlvbmFsU3RyaW5nOwotICAgIHB1c2goQGltcGxDb250ZW50SGVhZGVyLCAiI2luY2x1ZGUg
XCIkY2xhc3NOYW1lLmhcIlxuXG4iKTsKKyAgICBwdXNoKEBpbXBsQ29udGVudEhlYWRlciwgIiNp
bmNsdWRlIFwiJGpzQ2xhc3NOYW1lLmhcIlxuXG4iKTsKICAgICByZXR1cm4gQGltcGxDb250ZW50
SGVhZGVyOwogfQogCkBAIC01ODksMjcgKzU5Myw0NCBAQCBzdWIgU2hvdWxkR2VuZXJhdGVUb0pT
SW1wbGVtZW50YXRpb24KIAogc3ViIEdldEF0dHJpYnV0ZUdldHRlck5hbWUKIHsKLSAgICBteSAo
JGludGVyZmFjZU5hbWUsICRjbGFzc05hbWUsICRhdHRyaWJ1dGUpID0gQF87CisgICAgbXkgKCRp
bnRlcmZhY2UsICRhdHRyaWJ1dGUpID0gQF87CisgICAgbXkgJGludGVyZmFjZU5hbWUgPSAkaW50
ZXJmYWNlLT5uYW1lOworICAgIG15ICRqc0NsYXNzTmFtZSA9IEdldEpTQ2xhc3NOYW1lKCRpbnRl
cmZhY2UpOworICAgIAogICAgIGlmICgkYXR0cmlidXRlLT5pc1N0YXRpYykgewotICAgICAgICBy
ZXR1cm4gJGNvZGVHZW5lcmF0b3ItPldLX2xjZmlyc3QoJGNsYXNzTmFtZSkgLiAiQ29uc3RydWN0
b3IiIC4gJGNvZGVHZW5lcmF0b3ItPldLX3VjZmlyc3QoJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT5u
YW1lKTsKKyAgICAgICAgcmV0dXJuICRjb2RlR2VuZXJhdG9yLT5XS19sY2ZpcnN0KCRqc0NsYXNz
TmFtZSkgLiAiQ29uc3RydWN0b3IiIC4gJGNvZGVHZW5lcmF0b3ItPldLX3VjZmlyc3QoJGF0dHJp
YnV0ZS0+c2lnbmF0dXJlLT5uYW1lKTsKICAgICB9CiAgICAgcmV0dXJuICJqcyIgLiAkaW50ZXJm
YWNlTmFtZSAuICRjb2RlR2VuZXJhdG9yLT5XS191Y2ZpcnN0KCRhdHRyaWJ1dGUtPnNpZ25hdHVy
ZS0+bmFtZSkgLiAoJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT50eXBlID1+IC9Db25zdHJ1Y3RvciQv
ID8gIkNvbnN0cnVjdG9yIiA6ICIiKTsKIH0KIAogc3ViIEdldEF0dHJpYnV0ZVNldHRlck5hbWUK
IHsKLSAgICBteSAoJGludGVyZmFjZU5hbWUsICRjbGFzc05hbWUsICRhdHRyaWJ1dGUpID0gQF87
CisgICAgbXkgKCRpbnRlcmZhY2UsICRhdHRyaWJ1dGUpID0gQF87CisgICAgbXkgJGpzQ2xhc3NO
YW1lID0gR2V0SlNDbGFzc05hbWUoJGludGVyZmFjZSk7CisKICAgICBpZiAoJGF0dHJpYnV0ZS0+
aXNTdGF0aWMpIHsKLSAgICAgICAgcmV0dXJuICJzZXQiIC4gJGNvZGVHZW5lcmF0b3ItPldLX3Vj
Zmlyc3QoJGNsYXNzTmFtZSkgLiAiQ29uc3RydWN0b3IiIC4gJGNvZGVHZW5lcmF0b3ItPldLX3Vj
Zmlyc3QoJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT5uYW1lKTsKKyAgICAgICAgcmV0dXJuICJzZXQi
IC4gJGNvZGVHZW5lcmF0b3ItPldLX3VjZmlyc3QoJGpzQ2xhc3NOYW1lKSAuICJDb25zdHJ1Y3Rv
ciIgLiAkY29kZUdlbmVyYXRvci0+V0tfdWNmaXJzdCgkYXR0cmlidXRlLT5zaWduYXR1cmUtPm5h
bWUpOwogICAgIH0KLSAgICByZXR1cm4gInNldEpTIiAuICRpbnRlcmZhY2VOYW1lIC4gJGNvZGVH
ZW5lcmF0b3ItPldLX3VjZmlyc3QoJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT5uYW1lKSAuICgkYXR0
cmlidXRlLT5zaWduYXR1cmUtPnR5cGUgPX4gL0NvbnN0cnVjdG9yJC8gPyAiQ29uc3RydWN0b3Ii
IDogIiIpOworICAgIHJldHVybiAic2V0IiAuICRqc0NsYXNzTmFtZSAuICRjb2RlR2VuZXJhdG9y
LT5XS191Y2ZpcnN0KCRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+bmFtZSkgLiAoJGF0dHJpYnV0ZS0+
c2lnbmF0dXJlLT50eXBlID1+IC9Db25zdHJ1Y3RvciQvID8gIkNvbnN0cnVjdG9yIiA6ICIiKTsK
IH0KIAogc3ViIEdldEZ1bmN0aW9uTmFtZQogewotICAgIG15ICgkY2xhc3NOYW1lLCAkZnVuY3Rp
b24pID0gQF87CisgICAgbXkgKCRqc0NsYXNzTmFtZSwgJGZ1bmN0aW9uKSA9IEBfOwogICAgIG15
ICRraW5kID0gJGZ1bmN0aW9uLT5pc1N0YXRpYyA/ICJDb25zdHJ1Y3RvciIgOiAiUHJvdG90eXBl
IjsKLSAgICByZXR1cm4gJGNvZGVHZW5lcmF0b3ItPldLX2xjZmlyc3QoJGNsYXNzTmFtZSkgLiAk
a2luZCAuICJGdW5jdGlvbiIgLiAkY29kZUdlbmVyYXRvci0+V0tfdWNmaXJzdCgkZnVuY3Rpb24t
PnNpZ25hdHVyZS0+bmFtZSk7CisgICAgcmV0dXJuICRjb2RlR2VuZXJhdG9yLT5XS19sY2ZpcnN0
KCRqc0NsYXNzTmFtZSkgLiAka2luZCAuICJGdW5jdGlvbiIgLiAkY29kZUdlbmVyYXRvci0+V0tf
dWNmaXJzdCgkZnVuY3Rpb24tPnNpZ25hdHVyZS0+bmFtZSk7Cit9CisKK3N1YiBHZXRJbXBsQ2xh
c3NOYW1lCit7CisgICAgbXkgJGludGVyZmFjZSA9IHNoaWZ0OworICAgIHJldHVybiAkaW50ZXJm
YWNlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiSW1wbGVtZW50ZWRBcyJ9IHx8ICRpbnRlcmZhY2Ut
Pm5hbWU7Cit9CisKK3N1YiBHZXRKU0NsYXNzTmFtZQoreworICAgIG15ICRpbnRlcmZhY2UgPSBz
aGlmdDsKKyAgICByZXR1cm4gRmlsZU5hbWVQcmVmaXggLiAkaW50ZXJmYWNlLT5uYW1lOwogfQog
CiBzdWIgR2VuZXJhdGVIZWFkZXIKQEAgLTYxOCw3ICs2MzksOCBAQCBzdWIgR2VuZXJhdGVIZWFk
ZXIKICAgICBteSAkaW50ZXJmYWNlID0gc2hpZnQ7CiAKICAgICBteSAkaW50ZXJmYWNlTmFtZSA9
ICRpbnRlcmZhY2UtPm5hbWU7Ci0gICAgbXkgJGNsYXNzTmFtZSA9ICJKUyRpbnRlcmZhY2VOYW1l
IjsKKyAgICBteSAkaW1wbENsYXNzTmFtZSA9IEdldEltcGxDbGFzc05hbWUoJGludGVyZmFjZSk7
CisgICAgbXkgJGpzQ2xhc3NOYW1lID0gR2V0SlNDbGFzc05hbWUoJGludGVyZmFjZSk7CiAgICAg
bXkgQGFuY2VzdG9ySW50ZXJmYWNlTmFtZXMgPSAoKTsKICAgICBteSAlc3RydWN0dXJlRmxhZ3Mg
PSAoKTsKIApAQCAtNjMyLDcgKzY1NCw3IEBAIHN1YiBHZW5lcmF0ZUhlYWRlcgogICAgIG15ICRo
YXNSZWFsUGFyZW50ID0gQHskaW50ZXJmYWNlLT5wYXJlbnRzfSA+IDA7CiAgICAgbXkgJGhhc1Bh
cmVudCA9ICRoYXNMZWdhY3lQYXJlbnQgfHwgJGhhc1JlYWxQYXJlbnQ7CiAgICAgbXkgJHBhcmVu
dENsYXNzTmFtZSA9IEdldFBhcmVudENsYXNzTmFtZSgkaW50ZXJmYWNlKTsKLSAgICBteSAkbmVl
ZHNNYXJrQ2hpbGRyZW4gPSAkaW50ZXJmYWNlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiSlNDdXN0
b21NYXJrRnVuY3Rpb24ifSB8fCAkaW50ZXJmYWNlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiRXZl
bnRUYXJnZXQifSB8fCAkaW50ZXJmYWNlLT5uYW1lIGVxICJFdmVudFRhcmdldCI7CisgICAgbXkg
JG5lZWRzTWFya0NoaWxkcmVuID0gJGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkpT
Q3VzdG9tTWFya0Z1bmN0aW9uIn0gfHwgJGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57
IkV2ZW50VGFyZ2V0In0gfHwgJGludGVyZmFjZU5hbWUgZXEgIkV2ZW50VGFyZ2V0IjsKIAogICAg
ICMgLSBBZGQgZGVmYXVsdCBoZWFkZXIgdGVtcGxhdGUgYW5kIGhlYWRlciBwcm90ZWN0aW9uCiAg
ICAgcHVzaChAaGVhZGVyQ29udGVudEhlYWRlciwgR2VuZXJhdGVIZWFkZXJDb250ZW50SGVhZGVy
KCRpbnRlcmZhY2UpKTsKQEAgLTY1OSwxNiArNjgxLDE2IEBAIHN1YiBHZW5lcmF0ZUhlYWRlcgog
CiAgICAgaWYgKCRoYXNQYXJlbnQgJiYgJGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57
IkpTR2VuZXJhdGVUb05hdGl2ZU9iamVjdCJ9KSB7CiAgICAgICAgIGlmICgkY29kZUdlbmVyYXRv
ci0+SXNUeXBlZEFycmF5VHlwZSgkaW50ZXJmYWNlTmFtZSkpIHsKLSAgICAgICAgICAgICRoZWFk
ZXJJbmNsdWRlc3siPHd0Zi8kaW50ZXJmYWNlTmFtZS5oPiJ9ID0gMTsKKyAgICAgICAgICAgICRo
ZWFkZXJJbmNsdWRlc3siPHd0Zi8kaW1wbENsYXNzTmFtZS5oPiJ9ID0gMTsKICAgICAgICAgfSBl
bHNlIHsKLSAgICAgICAgICAgICRoZWFkZXJJbmNsdWRlc3siJGludGVyZmFjZU5hbWUuaCJ9ID0g
MTsKKyAgICAgICAgICAgICRoZWFkZXJJbmNsdWRlc3siJGltcGxDbGFzc05hbWUuaCJ9ID0gMTsK
ICAgICAgICAgfQogICAgIH0KICAgICAKICAgICAkaGVhZGVySW5jbHVkZXN7IjxydW50aW1lL0pT
T2JqZWN0Lmg+In0gPSAxOwotICAgICRoZWFkZXJJbmNsdWRlc3siU1ZHRWxlbWVudC5oIn0gPSAx
IGlmICRjbGFzc05hbWUgPX4gL15KU1NWRy87CisgICAgJGhlYWRlckluY2x1ZGVzeyJTVkdFbGVt
ZW50LmgifSA9IDEgaWYgJGpzQ2xhc3NOYW1lID1+IC9eSlNTVkcvOwogCi0gICAgbXkgJGltcGxU
eXBlID0gJGludGVyZmFjZU5hbWU7CisgICAgbXkgJGltcGxUeXBlID0gJGltcGxDbGFzc05hbWU7
CiAgICAgbXkgKCRzdmdQcm9wZXJ0eVR5cGUsICRzdmdMaXN0UHJvcGVydHlUeXBlLCAkc3ZnTmF0
aXZlVHlwZSkgPSBHZXRTVkdQcm9wZXJ0eVR5cGVzKCRpbXBsVHlwZSk7CiAgICAgJGltcGxUeXBl
ID0gJHN2Z05hdGl2ZVR5cGUgaWYgJHN2Z05hdGl2ZVR5cGU7CiAKQEAgLTY4MywxMSArNzA1LDEx
IEBAIHN1YiBHZW5lcmF0ZUhlYWRlcgogICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICJcbm5hbWVz
cGFjZSBXZWJDb3JlIHtcblxuIik7CiAKICAgICBpZiAoJGNvZGVHZW5lcmF0b3ItPklzU1ZHQW5p
bWF0ZWRUeXBlKCRpbnRlcmZhY2VOYW1lKSkgewotICAgICAgICAkaGVhZGVySW5jbHVkZXN7IiRp
bnRlcmZhY2VOYW1lLmgifSA9IDE7CisgICAgICAgICRoZWFkZXJJbmNsdWRlc3siJGltcGxDbGFz
c05hbWUuaCJ9ID0gMTsKICAgICB9IGVsc2UgewogICAgICAgICAjIEltcGxlbWVudGF0aW9uIGNs
YXNzIGZvcndhcmQgZGVjbGFyYXRpb24KICAgICAgICAgaWYgKCRpbnRlcmZhY2VOYW1lIGVxICJE
T01XaW5kb3ciIHx8ICRpbnRlcmZhY2UtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJJc1dvcmtlckNv
bnRleHQifSkgewotICAgICAgICAgICAgQWRkQ2xhc3NGb3J3YXJkSWZOZWVkZWQoJGludGVyZmFj
ZU5hbWUpIHVubGVzcyAkc3ZnUHJvcGVydHlPckxpc3RQcm9wZXJ0eVR5cGU7CisgICAgICAgICAg
ICBBZGRDbGFzc0ZvcndhcmRJZk5lZWRlZCgkaW1wbENsYXNzTmFtZSkgdW5sZXNzICRzdmdQcm9w
ZXJ0eU9yTGlzdFByb3BlcnR5VHlwZTsKICAgICAgICAgfQogICAgIH0KIApAQCAtNjk1LDQxICs3
MTcsNDEgQEAgc3ViIEdlbmVyYXRlSGVhZGVyCiAgICAgQWRkQ2xhc3NGb3J3YXJkSWZOZWVkZWQo
IkpTRGljdGlvbmFyeSIpIGlmICRjb2RlR2VuZXJhdG9yLT5Jc0NvbnN0cnVjdG9yVGVtcGxhdGUo
JGludGVyZmFjZSwgIkV2ZW50Iik7CiAKICAgICAjIENsYXNzIGRlY2xhcmF0aW9uCi0gICAgcHVz
aChAaGVhZGVyQ29udGVudCwgImNsYXNzICRjbGFzc05hbWUgOiBwdWJsaWMgJHBhcmVudENsYXNz
TmFtZSB7XG4iKTsKKyAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiY2xhc3MgJGpzQ2xhc3NOYW1l
IDogcHVibGljICRwYXJlbnRDbGFzc05hbWUge1xuIik7CiAKICAgICAjIFN0YXRpYyBjcmVhdGUg
bWV0aG9kcwogICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICJwdWJsaWM6XG4iKTsKICAgICBwdXNo
KEBoZWFkZXJDb250ZW50LCAiICAgIHR5cGVkZWYgJHBhcmVudENsYXNzTmFtZSBCYXNlO1xuIik7
CiAgICAgaWYgKCRpbnRlcmZhY2VOYW1lIGVxICJET01XaW5kb3ciKSB7Ci0gICAgICAgIHB1c2go
QGhlYWRlckNvbnRlbnQsICIgICAgc3RhdGljICRjbGFzc05hbWUqIGNyZWF0ZShKU0M6OlZNJiB2
bSwgSlNDOjpTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgUGFzc1JlZlB0cjwkaW1wbFR5cGU+IGltcGws
IEpTRE9NV2luZG93U2hlbGwqIHdpbmRvd1NoZWxsKVxuIik7CisgICAgICAgIHB1c2goQGhlYWRl
ckNvbnRlbnQsICIgICAgc3RhdGljICRqc0NsYXNzTmFtZSogY3JlYXRlKEpTQzo6Vk0mIHZtLCBK
U0M6OlN0cnVjdHVyZSogc3RydWN0dXJlLCBQYXNzUmVmUHRyPCRpbXBsVHlwZT4gaW1wbCwgSlNE
T01XaW5kb3dTaGVsbCogd2luZG93U2hlbGwpXG4iKTsKICAgICAgICAgcHVzaChAaGVhZGVyQ29u
dGVudCwgIiAgICB7XG4iKTsKLSAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiAgICAgICAg
JGNsYXNzTmFtZSogcHRyID0gbmV3IChOb3ROdWxsLCBKU0M6OmFsbG9jYXRlQ2VsbDwkY2xhc3NO
YW1lPih2bS5oZWFwKSkgJHtjbGFzc05hbWV9KHZtLCBzdHJ1Y3R1cmUsIGltcGwsIHdpbmRvd1No
ZWxsKTtcbiIpOworICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAgICAgICAkanNDbGFz
c05hbWUqIHB0ciA9IG5ldyAoTm90TnVsbCwgSlNDOjphbGxvY2F0ZUNlbGw8JGpzQ2xhc3NOYW1l
Pih2bS5oZWFwKSkgJHtqc0NsYXNzTmFtZX0odm0sIHN0cnVjdHVyZSwgaW1wbCwgd2luZG93U2hl
bGwpO1xuIik7CiAgICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIgICAgICAgIHB0ci0+Zmlu
aXNoQ3JlYXRpb24odm0sIHdpbmRvd1NoZWxsKTtcbiIpOwogICAgICAgICBwdXNoKEBoZWFkZXJD
b250ZW50LCAiICAgICAgICB2bS5oZWFwLmFkZEZpbmFsaXplcihwdHIsIGRlc3Ryb3kpO1xuIik7
CiAgICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIgICAgICAgIHJldHVybiBwdHI7XG4iKTsK
ICAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiAgICB9XG5cbiIpOwogICAgIH0gZWxzaWYg
KCRpbnRlcmZhY2UtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJJc1dvcmtlckNvbnRleHQifSkgewot
ICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAgIHN0YXRpYyAkY2xhc3NOYW1lKiBjcmVh
dGUoSlNDOjpWTSYgdm0sIEpTQzo6U3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFBhc3NSZWZQdHI8JGlt
cGxUeXBlPiBpbXBsKVxuIik7CisgICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIgICAgc3Rh
dGljICRqc0NsYXNzTmFtZSogY3JlYXRlKEpTQzo6Vk0mIHZtLCBKU0M6OlN0cnVjdHVyZSogc3Ry
dWN0dXJlLCBQYXNzUmVmUHRyPCRpbXBsVHlwZT4gaW1wbClcbiIpOwogICAgICAgICBwdXNoKEBo
ZWFkZXJDb250ZW50LCAiICAgIHtcbiIpOwotICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAi
ICAgICAgICAkY2xhc3NOYW1lKiBwdHIgPSBuZXcgKE5vdE51bGwsIEpTQzo6YWxsb2NhdGVDZWxs
PCRjbGFzc05hbWU+KHZtLmhlYXApKSAke2NsYXNzTmFtZX0odm0sIHN0cnVjdHVyZSwgaW1wbCk7
XG4iKTsKKyAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiAgICAgICAgJGpzQ2xhc3NOYW1l
KiBwdHIgPSBuZXcgKE5vdE51bGwsIEpTQzo6YWxsb2NhdGVDZWxsPCRqc0NsYXNzTmFtZT4odm0u
aGVhcCkpICR7anNDbGFzc05hbWV9KHZtLCBzdHJ1Y3R1cmUsIGltcGwpO1xuIik7CiAgICAgICAg
IHB1c2goQGhlYWRlckNvbnRlbnQsICIgICAgICAgIHB0ci0+ZmluaXNoQ3JlYXRpb24odm0pO1xu
Iik7CiAgICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIgICAgICAgIHZtLmhlYXAuYWRkRmlu
YWxpemVyKHB0ciwgZGVzdHJveSk7XG4iKTsKICAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwg
IiAgICAgICAgcmV0dXJuIHB0cjtcbiIpOwogICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAi
ICAgIH1cblxuIik7CiAgICAgfSBlbHNpZiAoJGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVz
LT57Ik1hc3F1ZXJhZGVzQXNVbmRlZmluZWQifSkgewogICAgICAgICBBZGRJbmNsdWRlc0ZvclR5
cGVJbkhlYWRlcigkaW1wbFR5cGUpIHVubGVzcyAkc3ZnUHJvcGVydHlPckxpc3RQcm9wZXJ0eVR5
cGU7Ci0gICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIgICAgc3RhdGljICRjbGFzc05hbWUq
IGNyZWF0ZShKU0M6OlN0cnVjdHVyZSogc3RydWN0dXJlLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBQYXNzUmVmUHRyPCRpbXBsVHlwZT4gaW1wbClcbiIpOworICAgICAgICBwdXNo
KEBoZWFkZXJDb250ZW50LCAiICAgIHN0YXRpYyAkanNDbGFzc05hbWUqIGNyZWF0ZShKU0M6OlN0
cnVjdHVyZSogc3RydWN0dXJlLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQYXNz
UmVmUHRyPCRpbXBsVHlwZT4gaW1wbClcbiIpOwogICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50
LCAiICAgIHtcbiIpOwogICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAgICAgICBnbG9i
YWxPYmplY3QtPm1hc3F1ZXJhZGVzQXNVbmRlZmluZWRXYXRjaHBvaW50KCktPm5vdGlmeVdyaXRl
KCk7XG4iKTsKLSAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiAgICAgICAgJGNsYXNzTmFt
ZSogcHRyID0gbmV3IChOb3ROdWxsLCBKU0M6OmFsbG9jYXRlQ2VsbDwkY2xhc3NOYW1lPihnbG9i
YWxPYmplY3QtPnZtKCkuaGVhcCkpICRjbGFzc05hbWUoc3RydWN0dXJlLCBnbG9iYWxPYmplY3Qs
IGltcGwpO1xuIik7CisgICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIgICAgICAgICRqc0Ns
YXNzTmFtZSogcHRyID0gbmV3IChOb3ROdWxsLCBKU0M6OmFsbG9jYXRlQ2VsbDwkanNDbGFzc05h
bWU+KGdsb2JhbE9iamVjdC0+dm0oKS5oZWFwKSkgJGpzQ2xhc3NOYW1lKHN0cnVjdHVyZSwgZ2xv
YmFsT2JqZWN0LCBpbXBsKTtcbiIpOwogICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAg
ICAgICBwdHItPmZpbmlzaENyZWF0aW9uKGdsb2JhbE9iamVjdC0+dm0oKSk7XG4iKTsKICAgICAg
ICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiAgICAgICAgcmV0dXJuIHB0cjtcbiIpOwogICAgICAg
ICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAgIH1cblxuIik7CiAgICAgfSBlbHNlIHsKICAgICAg
ICAgQWRkSW5jbHVkZXNGb3JUeXBlSW5IZWFkZXIoJGltcGxUeXBlKSB1bmxlc3MgJHN2Z1Byb3Bl
cnR5T3JMaXN0UHJvcGVydHlUeXBlOwotICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAg
IHN0YXRpYyAkY2xhc3NOYW1lKiBjcmVhdGUoSlNDOjpTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSlNE
T01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUGFzc1JlZlB0cjwkaW1wbFR5cGU+IGltcGwp
XG4iKTsKKyAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiAgICBzdGF0aWMgJGpzQ2xhc3NO
YW1lKiBjcmVhdGUoSlNDOjpTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSlNET01HbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgUGFzc1JlZlB0cjwkaW1wbFR5cGU+IGltcGwpXG4iKTsKICAgICAgICAg
cHVzaChAaGVhZGVyQ29udGVudCwgIiAgICB7XG4iKTsKLSAgICAgICAgcHVzaChAaGVhZGVyQ29u
dGVudCwgIiAgICAgICAgJGNsYXNzTmFtZSogcHRyID0gbmV3IChOb3ROdWxsLCBKU0M6OmFsbG9j
YXRlQ2VsbDwkY2xhc3NOYW1lPihnbG9iYWxPYmplY3QtPnZtKCkuaGVhcCkpICRjbGFzc05hbWUo
c3RydWN0dXJlLCBnbG9iYWxPYmplY3QsIGltcGwpO1xuIik7CisgICAgICAgIHB1c2goQGhlYWRl
ckNvbnRlbnQsICIgICAgICAgICRqc0NsYXNzTmFtZSogcHRyID0gbmV3IChOb3ROdWxsLCBKU0M6
OmFsbG9jYXRlQ2VsbDwkanNDbGFzc05hbWU+KGdsb2JhbE9iamVjdC0+dm0oKS5oZWFwKSkgJGpz
Q2xhc3NOYW1lKHN0cnVjdHVyZSwgZ2xvYmFsT2JqZWN0LCBpbXBsKTtcbiIpOwogICAgICAgICBw
dXNoKEBoZWFkZXJDb250ZW50LCAiICAgICAgICBwdHItPmZpbmlzaENyZWF0aW9uKGdsb2JhbE9i
amVjdC0+dm0oKSk7XG4iKTsKICAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiAgICAgICAg
cmV0dXJuIHB0cjtcbiIpOwogICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAgIH1cblxu
Iik7CkBAIC03NDIsOSArNzY0LDkgQEAgc3ViIEdlbmVyYXRlSGVhZGVyCiAgICAgIyBQcm90b3R5
cGUKICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAgIHN0YXRpYyBKU0M6OkpTT2JqZWN0KiBj
cmVhdGVQcm90b3R5cGUoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkpTR2xvYmFsT2JqZWN0Kik7XG4i
KSB1bmxlc3MgKCRpbnRlcmZhY2UtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJFeHRlbmRzRE9NR2xv
YmFsT2JqZWN0In0pOwogCi0gICAgJGhlYWRlclRyYWlsaW5nSW5jbHVkZXN7IiR7Y2xhc3NOYW1l
fUN1c3RvbS5oIn0gPSAxIGlmICRpbnRlcmZhY2UtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJKU0N1
c3RvbUhlYWRlciJ9OworICAgICRoZWFkZXJUcmFpbGluZ0luY2x1ZGVzeyIke2pzQ2xhc3NOYW1l
fUN1c3RvbS5oIn0gPSAxIGlmICRpbnRlcmZhY2UtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJKU0N1
c3RvbUhlYWRlciJ9OwogCi0gICAgJGltcGxJbmNsdWRlc3siJHtjbGFzc05hbWV9Q3VzdG9tLmgi
fSA9IDEgaWYgISRpbnRlcmZhY2UtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJKU0N1c3RvbUhlYWRl
ciJ9ICYmICgkaW50ZXJmYWNlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiQ3VzdG9tUHV0RnVuY3Rp
b24ifSB8fCAkaW50ZXJmYWNlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiQ3VzdG9tTmFtZWRTZXR0
ZXIifSk7CisgICAgJGltcGxJbmNsdWRlc3siJHtqc0NsYXNzTmFtZX1DdXN0b20uaCJ9ID0gMSBp
ZiAhJGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkpTQ3VzdG9tSGVhZGVyIn0gJiYg
KCRpbnRlcmZhY2UtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJDdXN0b21QdXRGdW5jdGlvbiJ9IHx8
ICRpbnRlcmZhY2UtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJDdXN0b21OYW1lZFNldHRlciJ9KTsK
IAogICAgIG15ICRoYXNJbXB1cmVOYW1lZEdldHRlciA9CiAgICAgICAgICRpbnRlcmZhY2UtPmV4
dGVuZGVkQXR0cmlidXRlcy0+eyJOYW1lZEdldHRlciJ9CkBAIC03OTgsNyArODIwLDcgQEAgc3Vi
IEdlbmVyYXRlSGVhZGVyCiAKICAgICBpZiAoISRoYXNQYXJlbnQpIHsKICAgICAgICAgcHVzaChA
aGVhZGVyQ29udGVudCwgIiAgICBzdGF0aWMgdm9pZCBkZXN0cm95KEpTQzo6SlNDZWxsKik7XG4i
KTsKLSAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiAgICB+JHtjbGFzc05hbWV9KCk7XG4i
KTsKKyAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiAgICB+JHtqc0NsYXNzTmFtZX0oKTtc
biIpOwogICAgIH0KIAogICAgICMgQ2xhc3MgaW5mbwpAQCAtOTIyLDkgKzk0NCw5IEBAIHN1YiBH
ZW5lcmF0ZUhlYWRlcgogICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAicHJpdmF0ZTpcbiIp
OwogICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAgICRpbXBsVHlwZSogbV9pbXBsO1xu
Iik7CiAgICAgfSBlbHNpZiAoJGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkpTR2Vu
ZXJhdGVUb05hdGl2ZU9iamVjdCJ9KSB7Ci0gICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIg
ICAgJGludGVyZmFjZU5hbWUqIGltcGwoKSBjb25zdFxuIik7CisgICAgICAgIHB1c2goQGhlYWRl
ckNvbnRlbnQsICIgICAgJGltcGxDbGFzc05hbWUqIGltcGwoKSBjb25zdFxuIik7CiAgICAgICAg
IHB1c2goQGhlYWRlckNvbnRlbnQsICIgICAge1xuIik7Ci0gICAgICAgIHB1c2goQGhlYWRlckNv
bnRlbnQsICIgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDwkaW50ZXJmYWNlTmFtZSo+KEJhc2U6
OmltcGwoKSk7XG4iKTsKKyAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiAgICAgICAgcmV0
dXJuIHN0YXRpY19jYXN0PCRpbXBsQ2xhc3NOYW1lKj4oQmFzZTo6aW1wbCgpKTtcbiIpOwogICAg
ICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAgIH1cbiIpOwogICAgIH0KIApAQCAtOTQ3LDEx
ICs5NjksMTEgQEAgc3ViIEdlbmVyYXRlSGVhZGVyCiAgICAgcHVzaChAaGVhZGVyQ29udGVudCwg
InByb3RlY3RlZDpcbiIpOwogICAgICMgQ29uc3RydWN0b3IKICAgICBpZiAoJGludGVyZmFjZU5h
bWUgZXEgIkRPTVdpbmRvdyIpIHsKLSAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiAgICAk
Y2xhc3NOYW1lKEpTQzo6Vk0mLCBKU0M6OlN0cnVjdHVyZSosIFBhc3NSZWZQdHI8JGltcGxUeXBl
PiwgSlNET01XaW5kb3dTaGVsbCopO1xuIik7CisgICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQs
ICIgICAgJGpzQ2xhc3NOYW1lKEpTQzo6Vk0mLCBKU0M6OlN0cnVjdHVyZSosIFBhc3NSZWZQdHI8
JGltcGxUeXBlPiwgSlNET01XaW5kb3dTaGVsbCopO1xuIik7CiAgICAgfSBlbHNpZiAoJGludGVy
ZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IklzV29ya2VyQ29udGV4dCJ9KSB7Ci0gICAgICAg
IHB1c2goQGhlYWRlckNvbnRlbnQsICIgICAgJGNsYXNzTmFtZShKU0M6OlZNJiwgSlNDOjpTdHJ1
Y3R1cmUqLCBQYXNzUmVmUHRyPCRpbXBsVHlwZT4pO1xuIik7CisgICAgICAgIHB1c2goQGhlYWRl
ckNvbnRlbnQsICIgICAgJGpzQ2xhc3NOYW1lKEpTQzo6Vk0mLCBKU0M6OlN0cnVjdHVyZSosIFBh
c3NSZWZQdHI8JGltcGxUeXBlPik7XG4iKTsKICAgICB9IGVsc2UgewotICAgICAgICBwdXNoKEBo
ZWFkZXJDb250ZW50LCAiICAgICRjbGFzc05hbWUoSlNDOjpTdHJ1Y3R1cmUqLCBKU0RPTUdsb2Jh
bE9iamVjdCosIFBhc3NSZWZQdHI8JGltcGxUeXBlPik7XG4iKTsKKyAgICAgICAgcHVzaChAaGVh
ZGVyQ29udGVudCwgIiAgICAkanNDbGFzc05hbWUoSlNDOjpTdHJ1Y3R1cmUqLCBKU0RPTUdsb2Jh
bE9iamVjdCosIFBhc3NSZWZQdHI8JGltcGxUeXBlPik7XG4iKTsKICAgICAgICAgcHVzaChAaGVh
ZGVyQ29udGVudCwgIiAgICB2b2lkIGZpbmlzaENyZWF0aW9uKEpTQzo6Vk0mKTtcbiIpOwogICAg
IH0KIApAQCAtOTc3LDI0ICs5OTksMjQgQEAgc3ViIEdlbmVyYXRlSGVhZGVyCiAgICAgIyBOYW1l
IGdldHRlcgogICAgIGlmICgkaW50ZXJmYWNlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiTmFtZWRH
ZXR0ZXIifSB8fCAkaW50ZXJmYWNlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiQ3VzdG9tTmFtZWRH
ZXR0ZXIifSkgewogICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAicHJpdmF0ZTpcbiIpOwot
ICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAgIHN0YXRpYyBib29sIGNhbkdldEl0ZW1z
Rm9yTmFtZShKU0M6OkV4ZWNTdGF0ZSosICRpbnRlcmZhY2VOYW1lKiwgSlNDOjpQcm9wZXJ0eU5h
bWUpO1xuIik7CisgICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIgICAgc3RhdGljIGJvb2wg
Y2FuR2V0SXRlbXNGb3JOYW1lKEpTQzo6RXhlY1N0YXRlKiwgJGltcGxDbGFzc05hbWUqLCBKU0M6
OlByb3BlcnR5TmFtZSk7XG4iKTsKICAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiAgICBz
dGF0aWMgSlNDOjpKU1ZhbHVlIG5hbWVHZXR0ZXIoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkpTVmFs
dWUsIEpTQzo6UHJvcGVydHlOYW1lKTtcbiIpOwogICAgIH0KIAogICAgIHB1c2goQGhlYWRlckNv
bnRlbnQsICJ9O1xuXG4iKTsKIAogICAgIGlmICgkaW50ZXJmYWNlLT5leHRlbmRlZEF0dHJpYnV0
ZXMtPnsiSlNJbmxpbmVHZXRPd25Qcm9wZXJ0eVNsb3QifSAmJiAhJGludGVyZmFjZS0+ZXh0ZW5k
ZWRBdHRyaWJ1dGVzLT57IkN1c3RvbUdldE93blByb3BlcnR5U2xvdCJ9KSB7Ci0gICAgICAgIHB1
c2goQGhlYWRlckNvbnRlbnQsICJBTFdBWVNfSU5MSU5FIGJvb2wgJHtjbGFzc05hbWV9OjpnZXRP
d25Qcm9wZXJ0eVNsb3QoSlNDOjpKU0NlbGwqIGNlbGwsIEpTQzo6RXhlY1N0YXRlKiBleGVjLCBK
U0M6OlByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTQzo6UHJvcGVydHlTbG90JiBzbG90KVxu
Iik7CisgICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICJBTFdBWVNfSU5MSU5FIGJvb2wgJHtq
c0NsYXNzTmFtZX06OmdldE93blByb3BlcnR5U2xvdChKU0M6OkpTQ2VsbCogY2VsbCwgSlNDOjpF
eGVjU3RhdGUqIGV4ZWMsIEpTQzo6UHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNDOjpQcm9w
ZXJ0eVNsb3QmIHNsb3QpXG4iKTsKICAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIntcbiIp
OwotICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAgICR7Y2xhc3NOYW1lfSogdGhpc09i
amVjdCA9IEpTQzo6anNDYXN0PCR7Y2xhc3NOYW1lfSo+KGNlbGwpO1xuIik7CisgICAgICAgIHB1
c2goQGhlYWRlckNvbnRlbnQsICIgICAgJHtqc0NsYXNzTmFtZX0qIHRoaXNPYmplY3QgPSBKU0M6
OmpzQ2FzdDwke2pzQ2xhc3NOYW1lfSo+KGNlbGwpO1xuIik7CiAgICAgICAgIHB1c2goQGhlYWRl
ckNvbnRlbnQsICIgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyh0aGlzT2JqZWN0LCAmc19p
bmZvKTtcbiIpOwotICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCBHZW5lcmF0ZUdldE93blBy
b3BlcnR5U2xvdEJvZHkoJGludGVyZmFjZSwgJGludGVyZmFjZU5hbWUsICRjbGFzc05hbWUsICRu
dW1BdHRyaWJ1dGVzID4gMCwgMSkpOworICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCBHZW5l
cmF0ZUdldE93blByb3BlcnR5U2xvdEJvZHkoJGludGVyZmFjZSwgJGpzQ2xhc3NOYW1lLCAkbnVt
QXR0cmlidXRlcyA+IDAsIDEpKTsKICAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIn1cblxu
Iik7Ci0gICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICJBTFdBWVNfSU5MSU5FIGJvb2wgJHtj
bGFzc05hbWV9OjpnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSlNDOjpKU09iamVjdCogb2JqZWN0
LCBKU0M6OkV4ZWNTdGF0ZSogZXhlYywgSlNDOjpQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBK
U0M6OlByb3BlcnR5RGVzY3JpcHRvciYgZGVzY3JpcHRvcilcbiIpOworICAgICAgICBwdXNoKEBo
ZWFkZXJDb250ZW50LCAiQUxXQVlTX0lOTElORSBib29sICR7anNDbGFzc05hbWV9OjpnZXRPd25Q
cm9wZXJ0eURlc2NyaXB0b3IoSlNDOjpKU09iamVjdCogb2JqZWN0LCBKU0M6OkV4ZWNTdGF0ZSog
ZXhlYywgSlNDOjpQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU0M6OlByb3BlcnR5RGVzY3Jp
cHRvciYgZGVzY3JpcHRvcilcbiIpOwogICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAie1xu
Iik7Ci0gICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIgICAgJHtjbGFzc05hbWV9KiB0aGlz
T2JqZWN0ID0gSlNDOjpqc0Nhc3Q8JHtjbGFzc05hbWV9Kj4ob2JqZWN0KTtcbiIpOworICAgICAg
ICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAgICR7anNDbGFzc05hbWV9KiB0aGlzT2JqZWN0ID0g
SlNDOjpqc0Nhc3Q8JHtqc0NsYXNzTmFtZX0qPihvYmplY3QpO1xuIik7CiAgICAgICAgIHB1c2go
QGhlYWRlckNvbnRlbnQsICIgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyh0aGlzT2JqZWN0
LCAmc19pbmZvKTtcbiIpOwotICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCBHZW5lcmF0ZUdl
dE93blByb3BlcnR5RGVzY3JpcHRvckJvZHkoJGludGVyZmFjZSwgJGludGVyZmFjZU5hbWUsICRj
bGFzc05hbWUsICRudW1BdHRyaWJ1dGVzID4gMCwgMSkpOworICAgICAgICBwdXNoKEBoZWFkZXJD
b250ZW50LCBHZW5lcmF0ZUdldE93blByb3BlcnR5RGVzY3JpcHRvckJvZHkoJGludGVyZmFjZSwg
JGpzQ2xhc3NOYW1lLCAkbnVtQXR0cmlidXRlcyA+IDAsIDEpKTsKICAgICAgICAgcHVzaChAaGVh
ZGVyQ29udGVudCwgIn1cblxuIik7CiAgICAgfQogCkBAIC0xMDA1LDkgKzEwMjcsOSBAQCBzdWIg
R2VuZXJhdGVIZWFkZXIKICAgICAgICAgJGNvZGVHZW5lcmF0b3ItPkluaGVyaXRzRXh0ZW5kZWRB
dHRyaWJ1dGUoJGludGVyZmFjZSwgIkFjdGl2ZURPTU9iamVjdCIpKSB7CiAgICAgICAgIGlmICgk
aW50ZXJmYWNlTmFtZSBuZSAiTm9kZSIgJiYgJGNvZGVHZW5lcmF0b3ItPkluaGVyaXRzSW50ZXJm
YWNlKCRpbnRlcmZhY2UsICJOb2RlIikpIHsKICAgICAgICAgICAgICRoZWFkZXJJbmNsdWRlc3si
SlNOb2RlLmgifSA9IDE7Ci0gICAgICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiY2xhc3Mg
SlMke2ludGVyZmFjZU5hbWV9T3duZXIgOiBwdWJsaWMgSlNOb2RlT3duZXIge1xuIik7CisgICAg
ICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiY2xhc3MgJHtqc0NsYXNzTmFtZX1Pd25lciA6
IHB1YmxpYyBKU05vZGVPd25lciB7XG4iKTsKICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAg
IHB1c2goQGhlYWRlckNvbnRlbnQsICJjbGFzcyBKUyR7aW50ZXJmYWNlTmFtZX1Pd25lciA6IHB1
YmxpYyBKU0M6OldlYWtIYW5kbGVPd25lciB7XG4iKTsKKyAgICAgICAgICAgIHB1c2goQGhlYWRl
ckNvbnRlbnQsICJjbGFzcyAke2pzQ2xhc3NOYW1lfU93bmVyIDogcHVibGljIEpTQzo6V2Vha0hh
bmRsZU93bmVyIHtcbiIpOwogICAgICAgICB9CiAgICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQs
ICJwdWJsaWM6XG4iKTsKICAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiAgICB2aXJ0dWFs
IGJvb2wgaXNSZWFjaGFibGVGcm9tT3BhcXVlUm9vdHMoSlNDOjpIYW5kbGU8SlNDOjpVbmtub3du
Piwgdm9pZCogY29udGV4dCwgSlNDOjpTbG90VmlzaXRvciYpO1xuIik7CkBAIC0xMDE2LDcgKzEw
MzgsNyBAQCBzdWIgR2VuZXJhdGVIZWFkZXIKICAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwg
IlxuIik7CiAgICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICJpbmxpbmUgSlNDOjpXZWFrSGFu
ZGxlT3duZXIqIHdyYXBwZXJPd25lcihET01XcmFwcGVyV29ybGQqLCAkaW1wbFR5cGUqKVxuIik7
CiAgICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICJ7XG4iKTsKLSAgICAgICAgcHVzaChAaGVh
ZGVyQ29udGVudCwgIiAgICBERUZJTkVfU1RBVElDX0xPQ0FMKEpTJHtpbnRlcmZhY2VOYW1lfU93
bmVyLCBqcyR7aW50ZXJmYWNlTmFtZX1Pd25lciwgKCkpO1xuIik7CisgICAgICAgIHB1c2goQGhl
YWRlckNvbnRlbnQsICIgICAgREVGSU5FX1NUQVRJQ19MT0NBTCgke2pzQ2xhc3NOYW1lfU93bmVy
LCBqcyR7aW50ZXJmYWNlTmFtZX1Pd25lciwgKCkpO1xuIik7CiAgICAgICAgIHB1c2goQGhlYWRl
ckNvbnRlbnQsICIgICAgcmV0dXJuICZqcyR7aW50ZXJmYWNlTmFtZX1Pd25lcjtcbiIpOwogICAg
ICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAifVxuIik7CiAgICAgICAgIHB1c2goQGhlYWRlckNv
bnRlbnQsICJcbiIpOwpAQCAtMTAzNSwyNyArMTA1NywyNyBAQCBzdWIgR2VuZXJhdGVIZWFkZXIK
ICAgICAgICAgfSBlbHNpZiAoJGludGVyZmFjZU5hbWUgZXEgIkRPTVN0cmluZ0xpc3QiKSB7CiAg
ICAgICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiUGFzc1JlZlB0cjxET01TdHJpbmdMaXN0
PiB0b0RPTVN0cmluZ0xpc3QoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkpTVmFsdWUpO1xuIik7CiAg
ICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiJGltcGxU
eXBlKiB0byR7aW50ZXJmYWNlTmFtZX0oSlNDOjpKU1ZhbHVlKTtcbiIpOworICAgICAgICAgICAg
cHVzaChAaGVhZGVyQ29udGVudCwgIiRpbXBsVHlwZSogdG8ke2ltcGxDbGFzc05hbWV9KEpTQzo6
SlNWYWx1ZSk7XG4iKTsKICAgICAgICAgfQogICAgIH0KICAgICBpZiAoJHVzZXNUb0pTTmV3bHlD
cmVhdGVkeyRpbnRlcmZhY2VOYW1lfSkgewotICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAi
SlNDOjpKU1ZhbHVlIHRvSlNOZXdseUNyZWF0ZWQoSlNDOjpFeGVjU3RhdGUqLCBKU0RPTUdsb2Jh
bE9iamVjdCosICRpbnRlcmZhY2VOYW1lKik7XG4iKTsKKyAgICAgICAgcHVzaChAaGVhZGVyQ29u
dGVudCwgIkpTQzo6SlNWYWx1ZSB0b0pTTmV3bHlDcmVhdGVkKEpTQzo6RXhlY1N0YXRlKiwgSlNE
T01HbG9iYWxPYmplY3QqLCAkaW1wbENsYXNzTmFtZSopO1xuIik7CiAgICAgfQogICAgIAogICAg
IHB1c2goQGhlYWRlckNvbnRlbnQsICJcbiIpOwogCiAgICAgIyBBZGQgcHJvdG90eXBlIGRlY2xh
cmF0aW9uLgogICAgICVzdHJ1Y3R1cmVGbGFncyA9ICgpOwotICAgIHB1c2goQGhlYWRlckNvbnRl
bnQsICJjbGFzcyAke2NsYXNzTmFtZX1Qcm90b3R5cGUgOiBwdWJsaWMgSlNDOjpKU05vbkZpbmFs
T2JqZWN0IHtcbiIpOworICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICJjbGFzcyAke2pzQ2xhc3NO
YW1lfVByb3RvdHlwZSA6IHB1YmxpYyBKU0M6OkpTTm9uRmluYWxPYmplY3Qge1xuIik7CiAgICAg
cHVzaChAaGVhZGVyQ29udGVudCwgInB1YmxpYzpcbiIpOwogICAgIHB1c2goQGhlYWRlckNvbnRl
bnQsICIgICAgdHlwZWRlZiBKU0M6OkpTTm9uRmluYWxPYmplY3QgQmFzZTtcbiIpOwogICAgIGlm
ICgkaW50ZXJmYWNlTmFtZSBuZSAiRE9NV2luZG93IiAmJiAhJGludGVyZmFjZS0+ZXh0ZW5kZWRB
dHRyaWJ1dGVzLT57IklzV29ya2VyQ29udGV4dCJ9KSB7CiAgICAgICAgIHB1c2goQGhlYWRlckNv
bnRlbnQsICIgICAgc3RhdGljIEpTQzo6SlNPYmplY3QqIHNlbGYoSlNDOjpFeGVjU3RhdGUqLCBK
U0M6OkpTR2xvYmFsT2JqZWN0Kik7XG4iKTsKICAgICB9CiAKLSAgICBwdXNoKEBoZWFkZXJDb250
ZW50LCAiICAgIHN0YXRpYyAke2NsYXNzTmFtZX1Qcm90b3R5cGUqIGNyZWF0ZShKU0M6OlZNJiB2
bSwgSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OlN0cnVjdHVyZSogc3Ry
dWN0dXJlKVxuIik7CisgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiAgICBzdGF0aWMgJHtqc0Ns
YXNzTmFtZX1Qcm90b3R5cGUqIGNyZWF0ZShKU0M6OlZNJiB2bSwgSlNDOjpKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBKU0M6OlN0cnVjdHVyZSogc3RydWN0dXJlKVxuIik7CiAgICAgcHVz
aChAaGVhZGVyQ29udGVudCwgIiAgICB7XG4iKTsKLSAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAi
ICAgICAgICAke2NsYXNzTmFtZX1Qcm90b3R5cGUqIHB0ciA9IG5ldyAoTm90TnVsbCwgSlNDOjph
bGxvY2F0ZUNlbGw8JHtjbGFzc05hbWV9UHJvdG90eXBlPih2bS5oZWFwKSkgJHtjbGFzc05hbWV9
UHJvdG90eXBlKHZtLCBnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSk7XG4iKTsKKyAgICBwdXNoKEBo
ZWFkZXJDb250ZW50LCAiICAgICAgICAke2pzQ2xhc3NOYW1lfVByb3RvdHlwZSogcHRyID0gbmV3
IChOb3ROdWxsLCBKU0M6OmFsbG9jYXRlQ2VsbDwke2pzQ2xhc3NOYW1lfVByb3RvdHlwZT4odm0u
aGVhcCkpICR7anNDbGFzc05hbWV9UHJvdG90eXBlKHZtLCBnbG9iYWxPYmplY3QsIHN0cnVjdHVy
ZSk7XG4iKTsKICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAgICAgICBwdHItPmZpbmlzaENy
ZWF0aW9uKHZtKTtcbiIpOwogICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIgICAgICAgIHJldHVy
biBwdHI7XG4iKTsKICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAgIH1cblxuIik7CkBAIC0x
MDgzLDcgKzExMDUsNyBAQCBzdWIgR2VuZXJhdGVIZWFkZXIKICAgICBwdXNoKEBoZWFkZXJDb250
ZW50LCAiICAgIHN0YXRpYyBib29sIGRlZmluZU93blByb3BlcnR5KEpTQzo6SlNPYmplY3QqLCBK
U0M6OkV4ZWNTdGF0ZSosIEpTQzo6UHJvcGVydHlOYW1lLCBKU0M6OlByb3BlcnR5RGVzY3JpcHRv
ciYsIGJvb2wgc2hvdWxkVGhyb3cpO1xuIikgaWYgJGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1
dGVzLT57IkpTQ3VzdG9tRGVmaW5lT3duUHJvcGVydHlPblByb3RvdHlwZSJ9OwogCiAgICAgcHVz
aChAaGVhZGVyQ29udGVudCwgIlxucHJpdmF0ZTpcbiIpOwotICAgIHB1c2goQGhlYWRlckNvbnRl
bnQsICIgICAgJHtjbGFzc05hbWV9UHJvdG90eXBlKEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xvYmFs
T2JqZWN0KiwgSlNDOjpTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkgOiBKU0M6OkpTTm9uRmluYWxPYmpl
Y3Qodm0sIHN0cnVjdHVyZSkgeyB9XG4iKTsKKyAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAg
ICR7anNDbGFzc05hbWV9UHJvdG90eXBlKEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0
KiwgSlNDOjpTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkgOiBKU0M6OkpTTm9uRmluYWxPYmplY3Qodm0s
IHN0cnVjdHVyZSkgeyB9XG4iKTsKIAogICAgICMgc3RydWN0dXJlIGZsYWdzCiAgICAgcHVzaChA
aGVhZGVyQ29udGVudCwgInByb3RlY3RlZDpcbiIpOwpAQCAtMTA5Nyw3ICsxMTE5LDcgQEAgc3Vi
IEdlbmVyYXRlSGVhZGVyCiAKICAgICBpZiAoISRpbnRlcmZhY2UtPmV4dGVuZGVkQXR0cmlidXRl
cy0+eyJPbWl0Q29uc3RydWN0b3IifSkgewogICAgICAgICAkaGVhZGVySW5jbHVkZXN7IkpTRE9N
QmluZGluZy5oIn0gPSAxOwotICAgICAgICBHZW5lcmF0ZUNvbnN0cnVjdG9yRGVjbGFyYXRpb24o
XEBoZWFkZXJDb250ZW50LCAkY2xhc3NOYW1lLCAkaW50ZXJmYWNlLCAkaW50ZXJmYWNlTmFtZSk7
CisgICAgICAgIEdlbmVyYXRlQ29uc3RydWN0b3JEZWNsYXJhdGlvbihcQGhlYWRlckNvbnRlbnQs
ICRpbnRlcmZhY2UpOwogICAgIH0KIAogICAgIGlmICgkbnVtRnVuY3Rpb25zID4gMCkgewpAQCAt
MTEwNiw3ICsxMTI4LDcgQEAgc3ViIEdlbmVyYXRlSGVhZGVyCiAgICAgICAgICAgICBuZXh0IGlm
ICRmdW5jdGlvbi0+e292ZXJsb2FkSW5kZXh9ICYmICRmdW5jdGlvbi0+e292ZXJsb2FkSW5kZXh9
ID4gMTsKICAgICAgICAgICAgIG15ICRjb25kaXRpb25hbFN0cmluZyA9ICRjb2RlR2VuZXJhdG9y
LT5HZW5lcmF0ZUNvbmRpdGlvbmFsU3RyaW5nKCRmdW5jdGlvbi0+c2lnbmF0dXJlKTsKICAgICAg
ICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIjaWYgJHtjb25kaXRpb25hbFN0cmluZ31cbiIp
IGlmICRjb25kaXRpb25hbFN0cmluZzsKLSAgICAgICAgICAgIG15ICRmdW5jdGlvbk5hbWUgPSBH
ZXRGdW5jdGlvbk5hbWUoJGNsYXNzTmFtZSwgJGZ1bmN0aW9uKTsKKyAgICAgICAgICAgIG15ICRm
dW5jdGlvbk5hbWUgPSBHZXRGdW5jdGlvbk5hbWUoJGpzQ2xhc3NOYW1lLCAkZnVuY3Rpb24pOwog
ICAgICAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIkpTQzo6RW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCAke2Z1bmN0aW9uTmFtZX0oSlNDOjpFeGVjU3RhdGUqKTtcbiIpOwogICAgICAg
ICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiNlbmRpZlxuIikgaWYgJGNvbmRpdGlvbmFsU3Ry
aW5nOwogICAgICAgICB9CkBAIC0xMTE3LDEwICsxMTM5LDEwIEBAIHN1YiBHZW5lcmF0ZUhlYWRl
cgogICAgICAgICBmb3JlYWNoIG15ICRhdHRyaWJ1dGUgKEB7JGludGVyZmFjZS0+YXR0cmlidXRl
c30pIHsKICAgICAgICAgICAgIG15ICRjb25kaXRpb25hbFN0cmluZyA9ICRjb2RlR2VuZXJhdG9y
LT5HZW5lcmF0ZUNvbmRpdGlvbmFsU3RyaW5nKCRhdHRyaWJ1dGUtPnNpZ25hdHVyZSk7CiAgICAg
ICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiI2lmICR7Y29uZGl0aW9uYWxTdHJpbmd9XG4i
KSBpZiAkY29uZGl0aW9uYWxTdHJpbmc7Ci0gICAgICAgICAgICBteSAkZ2V0dGVyID0gR2V0QXR0
cmlidXRlR2V0dGVyTmFtZSgkaW50ZXJmYWNlTmFtZSwgJGNsYXNzTmFtZSwgJGF0dHJpYnV0ZSk7
CisgICAgICAgICAgICBteSAkZ2V0dGVyID0gR2V0QXR0cmlidXRlR2V0dGVyTmFtZSgkaW50ZXJm
YWNlLCAkYXR0cmlidXRlKTsKICAgICAgICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICJKU0M6
OkpTVmFsdWUgJHtnZXR0ZXJ9KEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpKU1ZhbHVlLCBKU0M6OlBy
b3BlcnR5TmFtZSk7XG4iKTsKICAgICAgICAgICAgIGlmICghSXNSZWFkb25seSgkYXR0cmlidXRl
KSkgewotICAgICAgICAgICAgICAgIG15ICRzZXR0ZXIgPSBHZXRBdHRyaWJ1dGVTZXR0ZXJOYW1l
KCRpbnRlcmZhY2VOYW1lLCAkY2xhc3NOYW1lLCAkYXR0cmlidXRlKTsKKyAgICAgICAgICAgICAg
ICBteSAkc2V0dGVyID0gR2V0QXR0cmlidXRlU2V0dGVyTmFtZSgkaW50ZXJmYWNlLCAkYXR0cmli
dXRlKTsKICAgICAgICAgICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAidm9pZCAke3NldHRl
cn0oSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkpTT2JqZWN0KiwgSlNDOjpKU1ZhbHVlKTtcbiIpOwog
ICAgICAgICAgICAgfQogICAgICAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiNlbmRpZlxu
IikgaWYgJGNvbmRpdGlvbmFsU3RyaW5nOwpAQCAtMTEzMiw3ICsxMTU0LDcgQEAgc3ViIEdlbmVy
YXRlSGVhZGVyCiAgICAgICAgIH0KIAogICAgICAgICBpZiAoJGludGVyZmFjZS0+ZXh0ZW5kZWRB
dHRyaWJ1dGVzLT57IlJlcGxhY2VhYmxlQ29uc3RydWN0b3IifSkgewotICAgICAgICAgICAgbXkg
JGNvbnN0cnVjdG9yRnVuY3Rpb25OYW1lID0gInNldEpTIiAuICRpbnRlcmZhY2VOYW1lIC4gIkNv
bnN0cnVjdG9yIjsKKyAgICAgICAgICAgIG15ICRjb25zdHJ1Y3RvckZ1bmN0aW9uTmFtZSA9ICJz
ZXQiIC4gJGpzQ2xhc3NOYW1lIC4gIkNvbnN0cnVjdG9yIjsKICAgICAgICAgICAgIHB1c2goQGhl
YWRlckNvbnRlbnQsICJ2b2lkICR7Y29uc3RydWN0b3JGdW5jdGlvbk5hbWV9KEpTQzo6RXhlY1N0
YXRlKiwgSlNDOjpKU09iamVjdCosIEpTQzo6SlNWYWx1ZSk7XG4iKTsKICAgICAgICAgfQogICAg
IH0KQEAgLTExNTUsNyArMTE3Nyw3IEBAIHN1YiBHZW5lcmF0ZUhlYWRlcgogCiAgICAgIyAtIEdl
bmVyYXRlIGRlcGVuZGVuY2llcy4KICAgICBpZiAoJHdyaXRlRGVwZW5kZW5jaWVzICYmIEBhbmNl
c3RvckludGVyZmFjZU5hbWVzKSB7Ci0gICAgICAgIHB1c2goQGRlcHNDb250ZW50LCAiJGNsYXNz
TmFtZS5oIDogIiwgam9pbigiICIsIG1hcCB7ICIkXy5pZGwiIH0gQGFuY2VzdG9ySW50ZXJmYWNl
TmFtZXMpLCAiXG4iKTsKKyAgICAgICAgcHVzaChAZGVwc0NvbnRlbnQsICIkanNDbGFzc05hbWUu
aCA6ICIsIGpvaW4oIiAiLCBtYXAgeyAiJF8uaWRsIiB9IEBhbmNlc3RvckludGVyZmFjZU5hbWVz
KSwgIlxuIik7CiAgICAgICAgIHB1c2goQGRlcHNDb250ZW50LCBtYXAgeyAiJF8uaWRsIDpcbiIg
fSBAYW5jZXN0b3JJbnRlcmZhY2VOYW1lcyk7IAogICAgIH0KIH0KQEAgLTExNjYsNyArMTE4OCw3
IEBAIHN1YiBHZW5lcmF0ZUF0dHJpYnV0ZXNIYXNoVGFibGUoJCQpCiAKICAgICAjIEZJWE1FOiBU
aGVzZSBzaG91bGQgYmUgZnVuY3Rpb25zIG9uICRpbnRlcmZhY2UuCiAgICAgbXkgJGludGVyZmFj
ZU5hbWUgPSAkaW50ZXJmYWNlLT5uYW1lOwotICAgIG15ICRjbGFzc05hbWUgPSAiSlMkaW50ZXJm
YWNlTmFtZSI7CisgICAgbXkgJGpzQ2xhc3NOYW1lID0gR2V0SlNDbGFzc05hbWUoJGludGVyZmFj
ZSk7CiAgICAgCiAgICAgIyAtIEFkZCBhbGwgYXR0cmlidXRlcyBpbiBhIGhhc2h0YWJsZSBkZWZp
bml0aW9uCiAgICAgbXkgJG51bUF0dHJpYnV0ZXMgPSBAeyRpbnRlcmZhY2UtPmF0dHJpYnV0ZXN9
OwpAQCAtMTE3NSw3ICsxMTk3LDcgQEAgc3ViIEdlbmVyYXRlQXR0cmlidXRlc0hhc2hUYWJsZSgk
JCkKICAgICByZXR1cm4gMCAgaWYgISRudW1BdHRyaWJ1dGVzOwogCiAgICAgbXkgJGhhc2hTaXpl
ID0gJG51bUF0dHJpYnV0ZXM7Ci0gICAgbXkgJGhhc2hOYW1lID0gJGNsYXNzTmFtZSAuICJUYWJs
ZSI7CisgICAgbXkgJGhhc2hOYW1lID0gJGpzQ2xhc3NOYW1lIC4gIlRhYmxlIjsKIAogICAgIG15
IEBoYXNoS2V5cyA9ICgpOwogICAgIG15IEBoYXNoU3BlY2lhbHMgPSAoKTsKQEAgLTExOTMsMjAg
KzEyMTUsMjAgQEAgc3ViIEdlbmVyYXRlQXR0cmlidXRlc0hhc2hUYWJsZSgkJCkKICAgICAgICAg
bXkgQHNwZWNpYWxzID0gKCk7CiAgICAgICAgICMgQXMgcGVyIFdlYiBJREwgc3BlY2lmaWNhdGlv
biwgY29uc3RydWN0b3IgcHJvcGVydGllcyBvbiB0aGUgRUNNQVNjcmlwdCBnbG9iYWwgb2JqZWN0
IHNob3VsZCBiZQogICAgICAgICAjIGNvbmZpZ3VyYWJsZSBhbmQgc2hvdWxkIG5vdCBiZSBlbnVt
ZXJhYmxlLgotICAgICAgICBteSAkaXNfZG9td2luZG93X2NvbnN0cnVjdG9yID0gKCRpbnRlcmZh
Y2UtPm5hbWUgZXEgIkRPTVdpbmRvdyIgJiYgJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT50eXBlID1+
IC9Db25zdHJ1Y3RvciQvKTsKKyAgICAgICAgbXkgJGlzX2RvbXdpbmRvd19jb25zdHJ1Y3RvciA9
ICgkaW50ZXJmYWNlTmFtZSBlcSAiRE9NV2luZG93IiAmJiAkYXR0cmlidXRlLT5zaWduYXR1cmUt
PnR5cGUgPX4gL0NvbnN0cnVjdG9yJC8pOwogICAgICAgICBwdXNoKEBzcGVjaWFscywgIkRvbnRE
ZWxldGUiKSB1bmxlc3MgKCRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVz
LT57IkRlbGV0YWJsZSJ9IHx8ICRpc19kb213aW5kb3dfY29uc3RydWN0b3IpOwogICAgICAgICBw
dXNoKEBzcGVjaWFscywgIkRvbnRFbnVtIikgaWYgKCRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+ZXh0
ZW5kZWRBdHRyaWJ1dGVzLT57Ik5vdEVudW1lcmFibGUifSB8fCAkaXNfZG9td2luZG93X2NvbnN0
cnVjdG9yKTsKICAgICAgICAgcHVzaChAc3BlY2lhbHMsICJSZWFkT25seSIpIGlmIElzUmVhZG9u
bHkoJGF0dHJpYnV0ZSk7CiAgICAgICAgIG15ICRzcGVjaWFsID0gKEBzcGVjaWFscyA+IDApID8g
am9pbigiIHwgIiwgQHNwZWNpYWxzKSA6ICIwIjsKICAgICAgICAgcHVzaChAaGFzaFNwZWNpYWxz
LCAkc3BlY2lhbCk7CiAKLSAgICAgICAgbXkgJGdldHRlciA9IEdldEF0dHJpYnV0ZUdldHRlck5h
bWUoJGludGVyZmFjZU5hbWUsICRjbGFzc05hbWUsICRhdHRyaWJ1dGUpOworICAgICAgICBteSAk
Z2V0dGVyID0gR2V0QXR0cmlidXRlR2V0dGVyTmFtZSgkaW50ZXJmYWNlLCAkYXR0cmlidXRlKTsK
ICAgICAgICAgcHVzaChAaGFzaFZhbHVlMSwgJGdldHRlcik7CiAKICAgICAgICAgaWYgKElzUmVh
ZG9ubHkoJGF0dHJpYnV0ZSkpIHsKICAgICAgICAgICAgIHB1c2goQGhhc2hWYWx1ZTIsICIwIik7
CiAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBteSAkc2V0dGVyID0gR2V0QXR0cmlidXRl
U2V0dGVyTmFtZSgkaW50ZXJmYWNlTmFtZSwgJGNsYXNzTmFtZSwgJGF0dHJpYnV0ZSk7CisgICAg
ICAgICAgICBteSAkc2V0dGVyID0gR2V0QXR0cmlidXRlU2V0dGVyTmFtZSgkaW50ZXJmYWNlLCAk
YXR0cmlidXRlKTsKICAgICAgICAgICAgIHB1c2goQGhhc2hWYWx1ZTIsICRzZXR0ZXIpOwogICAg
ICAgICB9CiAKQEAgLTEyMjEsNyArMTI0Myw3IEBAIHN1YiBHZW5lcmF0ZUF0dHJpYnV0ZXNIYXNo
VGFibGUoJCQpCiAgICAgICAgIG15ICRnZXR0ZXIgPSAianMiIC4gJGludGVyZmFjZU5hbWUgLiAi
Q29uc3RydWN0b3IiOwogICAgICAgICBwdXNoKEBoYXNoVmFsdWUxLCAkZ2V0dGVyKTsKICAgICAg
ICAgaWYgKCRpbnRlcmZhY2UtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJSZXBsYWNlYWJsZUNvbnN0
cnVjdG9yIn0pIHsKLSAgICAgICAgICAgIG15ICRzZXR0ZXIgPSAic2V0SlMiIC4gJGludGVyZmFj
ZU5hbWUgLiAiQ29uc3RydWN0b3IiOworICAgICAgICAgICAgbXkgJHNldHRlciA9ICJzZXQiIC4g
JGpzQ2xhc3NOYW1lIC4gIkNvbnN0cnVjdG9yIjsKICAgICAgICAgICAgIHB1c2goQGhhc2hWYWx1
ZTIsICRzZXR0ZXIpOwogICAgICAgICAgICAgcHVzaChAaGFzaFNwZWNpYWxzLCAiRG9udEVudW0g
fCBEb250RGVsZXRlIik7CiAgICAgICAgIH0gZWxzZSB7ICAgICAgICAgICAgCkBAIC0xMzM5LDcg
KzEzNjEsNyBAQCBzdWIgR2VuZXJhdGVPdmVybG9hZGVkRnVuY3Rpb24KIHsKICAgICBteSAkZnVu
Y3Rpb24gPSBzaGlmdDsKICAgICBteSAkaW50ZXJmYWNlID0gc2hpZnQ7Ci0gICAgbXkgJGludGVy
ZmFjZU5hbWUgPSBzaGlmdDsKKyAgICBteSAkaW50ZXJmYWNlTmFtZSA9ICRpbnRlcmZhY2UtPm5h
bWU7CiAKICAgICAjIEdlbmVyYXRlIGNvZGUgZm9yIGNob29zaW5nIHRoZSBjb3JyZWN0IG92ZXJs
b2FkIHRvIGNhbGwuIE92ZXJsb2FkcyBhcmUKICAgICAjIGNob3NlbiBiYXNlZCBvbiB0aGUgdG90
YWwgbnVtYmVyIG9mIGFyZ3VtZW50cyBwYXNzZWQgYW5kIHRoZSB0eXBlIG9mCkBAIC0xMzg2LDkg
KzE0MDgsOSBAQCBFTkQKIHN1YiBHZXROYXRpdmVUeXBlRm9yQ29udmVyc2lvbnMKIHsKICAgICBt
eSAkaW50ZXJmYWNlID0gc2hpZnQ7Ci0gICAgbXkgJGludGVyZmFjZU5hbWUgPSAkaW50ZXJmYWNl
LT5uYW1lOwotICAgICRpbnRlcmZhY2VOYW1lID0gJGNvZGVHZW5lcmF0b3ItPkdldFNWR1R5cGVO
ZWVkaW5nVGVhck9mZigkaW50ZXJmYWNlTmFtZSkgaWYgJGNvZGVHZW5lcmF0b3ItPklzU1ZHVHlw
ZU5lZWRpbmdUZWFyT2ZmKCRpbnRlcmZhY2VOYW1lKTsKLSAgICByZXR1cm4gJGludGVyZmFjZU5h
bWU7CisgICAgbXkgJGltcGxDbGFzc05hbWUgPSBHZXRJbXBsQ2xhc3NOYW1lKCRpbnRlcmZhY2Up
OworICAgICRpbXBsQ2xhc3NOYW1lID0gJGNvZGVHZW5lcmF0b3ItPkdldFNWR1R5cGVOZWVkaW5n
VGVhck9mZigkaW50ZXJmYWNlLT5uYW1lKSBpZiAkY29kZUdlbmVyYXRvci0+SXNTVkdUeXBlTmVl
ZGluZ1RlYXJPZmYoJGludGVyZmFjZS0+bmFtZSk7CisgICAgcmV0dXJuICRpbXBsQ2xhc3NOYW1l
OwogfQogCiAjIFNlZSBodHRwOi8vcmVmc3BlY3MubGludXgtZm91bmRhdGlvbi5vcmcvY3h4YWJp
LTEuODMuaHRtbC4KQEAgLTE1MTAsMTUgKzE1MzIsMTYgQEAgc3ViIEdlbmVyYXRlSW1wbGVtZW50
YXRpb24KICAgICBteSAoJG9iamVjdCwgJGludGVyZmFjZSkgPSBAXzsKIAogICAgIG15ICRpbnRl
cmZhY2VOYW1lID0gJGludGVyZmFjZS0+bmFtZTsKLSAgICBteSAkY2xhc3NOYW1lID0gIkpTJGlu
dGVyZmFjZU5hbWUiOworICAgIG15ICRpbXBsQ2xhc3NOYW1lID0gR2V0SW1wbENsYXNzTmFtZSgk
aW50ZXJmYWNlKTsKKyAgICBteSAkanNDbGFzc05hbWUgPSBHZXRKU0NsYXNzTmFtZSgkaW50ZXJm
YWNlKTsKIAogICAgIG15ICRoYXNMZWdhY3lQYXJlbnQgPSAkaW50ZXJmYWNlLT5leHRlbmRlZEF0
dHJpYnV0ZXMtPnsiSlNMZWdhY3lQYXJlbnQifTsKICAgICBteSAkaGFzUmVhbFBhcmVudCA9IEB7
JGludGVyZmFjZS0+cGFyZW50c30gPiAwOwogICAgIG15ICRoYXNQYXJlbnQgPSAkaGFzTGVnYWN5
UGFyZW50IHx8ICRoYXNSZWFsUGFyZW50OwogICAgIG15ICRwYXJlbnRDbGFzc05hbWUgPSBHZXRQ
YXJlbnRDbGFzc05hbWUoJGludGVyZmFjZSk7CiAgICAgbXkgJHZpc2libGVJbnRlcmZhY2VOYW1l
ID0gJGNvZGVHZW5lcmF0b3ItPkdldFZpc2libGVJbnRlcmZhY2VOYW1lKCRpbnRlcmZhY2UpOwot
ICAgIG15ICRldmVudFRhcmdldCA9ICRpbnRlcmZhY2UtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJF
dmVudFRhcmdldCJ9IHx8ICgkY29kZUdlbmVyYXRvci0+SW5oZXJpdHNJbnRlcmZhY2UoJGludGVy
ZmFjZSwgIkV2ZW50VGFyZ2V0IikgJiYgJGludGVyZmFjZS0+bmFtZSBuZSAiRXZlbnRUYXJnZXQi
KTsKLSAgICBteSAkbmVlZHNNYXJrQ2hpbGRyZW4gPSAkaW50ZXJmYWNlLT5leHRlbmRlZEF0dHJp
YnV0ZXMtPnsiSlNDdXN0b21NYXJrRnVuY3Rpb24ifSB8fCAkaW50ZXJmYWNlLT5leHRlbmRlZEF0
dHJpYnV0ZXMtPnsiRXZlbnRUYXJnZXQifSB8fCAkaW50ZXJmYWNlLT5uYW1lIGVxICJFdmVudFRh
cmdldCI7CisgICAgbXkgJGV2ZW50VGFyZ2V0ID0gJGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1
dGVzLT57IkV2ZW50VGFyZ2V0In0gfHwgKCRjb2RlR2VuZXJhdG9yLT5Jbmhlcml0c0ludGVyZmFj
ZSgkaW50ZXJmYWNlLCAiRXZlbnRUYXJnZXQiKSAmJiAkaW50ZXJmYWNlTmFtZSBuZSAiRXZlbnRU
YXJnZXQiKTsKKyAgICBteSAkbmVlZHNNYXJrQ2hpbGRyZW4gPSAkaW50ZXJmYWNlLT5leHRlbmRl
ZEF0dHJpYnV0ZXMtPnsiSlNDdXN0b21NYXJrRnVuY3Rpb24ifSB8fCAkaW50ZXJmYWNlLT5leHRl
bmRlZEF0dHJpYnV0ZXMtPnsiRXZlbnRUYXJnZXQifSB8fCAkaW50ZXJmYWNlTmFtZSBlcSAiRXZl
bnRUYXJnZXQiOwogCiAgICAgIyAtIEFkZCBkZWZhdWx0IGhlYWRlciB0ZW1wbGF0ZQogICAgIHB1
c2goQGltcGxDb250ZW50SGVhZGVyLCBHZW5lcmF0ZUltcGxlbWVudGF0aW9uQ29udGVudEhlYWRl
cigkaW50ZXJmYWNlKSk7CkBAIC0xNTQxLDcgKzE1NjQsNyBAQCBzdWIgR2VuZXJhdGVJbXBsZW1l
bnRhdGlvbgogICAgICMgLSBBZGQgYWxsIGNvbnN0YW50cwogICAgIGlmICghJGludGVyZmFjZS0+
ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Ik9taXRDb25zdHJ1Y3RvciJ9KSB7CiAgICAgICAgIG15ICRo
YXNoU2l6ZSA9ICRudW1Db25zdGFudHM7Ci0gICAgICAgIG15ICRoYXNoTmFtZSA9ICRjbGFzc05h
bWUgLiAiQ29uc3RydWN0b3JUYWJsZSI7CisgICAgICAgIG15ICRoYXNoTmFtZSA9ICRqc0NsYXNz
TmFtZSAuICJDb25zdHJ1Y3RvclRhYmxlIjsKIAogICAgICAgICBteSBAaGFzaEtleXMgPSAoKTsK
ICAgICAgICAgbXkgQGhhc2hWYWx1ZTEgPSAoKTsKQEAgLTE1NzksMTMgKzE2MDIsMTMgQEAgc3Vi
IEdlbmVyYXRlSW1wbGVtZW50YXRpb24KICAgICAgICAgICAgIG15ICRzcGVjaWFsID0gKEBzcGVj
aWFscyA+IDApID8gam9pbigiIHwgIiwgQHNwZWNpYWxzKSA6ICIwIjsKICAgICAgICAgICAgIHB1
c2goQGhhc2hTcGVjaWFscywgJHNwZWNpYWwpOwogCi0gICAgICAgICAgICBteSAkZ2V0dGVyID0g
R2V0QXR0cmlidXRlR2V0dGVyTmFtZSgkaW50ZXJmYWNlTmFtZSwgJGNsYXNzTmFtZSwgJGF0dHJp
YnV0ZSk7CisgICAgICAgICAgICBteSAkZ2V0dGVyID0gR2V0QXR0cmlidXRlR2V0dGVyTmFtZSgk
aW50ZXJmYWNlLCAkYXR0cmlidXRlKTsKICAgICAgICAgICAgIHB1c2goQGhhc2hWYWx1ZTEsICRn
ZXR0ZXIpOwogCiAgICAgICAgICAgICBpZiAoSXNSZWFkb25seSgkYXR0cmlidXRlKSkgewogICAg
ICAgICAgICAgICAgIHB1c2goQGhhc2hWYWx1ZTIsICIwIik7CiAgICAgICAgICAgICB9IGVsc2Ug
ewotICAgICAgICAgICAgICAgIG15ICRzZXR0ZXIgPSBHZXRBdHRyaWJ1dGVTZXR0ZXJOYW1lKCRp
bnRlcmZhY2VOYW1lLCAkY2xhc3NOYW1lLCAkYXR0cmlidXRlKTsKKyAgICAgICAgICAgICAgICBt
eSAkc2V0dGVyID0gR2V0QXR0cmlidXRlU2V0dGVyTmFtZSgkaW50ZXJmYWNlLCAkYXR0cmlidXRl
KTsKICAgICAgICAgICAgICAgICBwdXNoKEBoYXNoVmFsdWUyLCAkc2V0dGVyKTsKICAgICAgICAg
ICAgIH0KIApAQCAtMTYwMSw3ICsxNjI0LDcgQEAgc3ViIEdlbmVyYXRlSW1wbGVtZW50YXRpb24K
ICAgICAgICAgICAgIG15ICRuYW1lID0gJGZ1bmN0aW9uLT5zaWduYXR1cmUtPm5hbWU7CiAgICAg
ICAgICAgICBwdXNoKEBoYXNoS2V5cywgJG5hbWUpOwogCi0gICAgICAgICAgICBteSAkZnVuY3Rp
b25OYW1lID0gR2V0RnVuY3Rpb25OYW1lKCRjbGFzc05hbWUsICRmdW5jdGlvbik7CisgICAgICAg
ICAgICBteSAkZnVuY3Rpb25OYW1lID0gR2V0RnVuY3Rpb25OYW1lKCRqc0NsYXNzTmFtZSwgJGZ1
bmN0aW9uKTsKICAgICAgICAgICAgIHB1c2goQGhhc2hWYWx1ZTEsICRmdW5jdGlvbk5hbWUpOwog
CiAgICAgICAgICAgICBteSAkZnVuY3Rpb25MZW5ndGggPSBHZXRGdW5jdGlvbkxlbmd0aCgkZnVu
Y3Rpb24pOwpAQCAtMTYyNywxNiArMTY1MCwxNiBAQCBzdWIgR2VuZXJhdGVJbXBsZW1lbnRhdGlv
bgogCiAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAkY29kZUdlbmVyYXRvci0+R2VuZXJhdGVD
b21waWxlVGltZUNoZWNrRm9yRW51bXNJZk5lZWRlZCgkaW50ZXJmYWNlKSk7CiAKLSAgICAgICAg
bXkgJHByb3RvQ2xhc3NOYW1lID0gIiR7Y2xhc3NOYW1lfVByb3RvdHlwZSI7Ci0gICAgICAgIEdl
bmVyYXRlQ29uc3RydWN0b3JEZWZpbml0aW9ucyhcQGltcGxDb250ZW50LCAkY2xhc3NOYW1lLCAk
cHJvdG9DbGFzc05hbWUsICRpbnRlcmZhY2VOYW1lLCAkdmlzaWJsZUludGVyZmFjZU5hbWUsICRp
bnRlcmZhY2UpOworICAgICAgICBteSAkcHJvdG9DbGFzc05hbWUgPSAiJHtqc0NsYXNzTmFtZX1Q
cm90b3R5cGUiOworICAgICAgICBHZW5lcmF0ZUNvbnN0cnVjdG9yRGVmaW5pdGlvbnMoXEBpbXBs
Q29udGVudCwgJHByb3RvQ2xhc3NOYW1lLCAkaW50ZXJmYWNlLCAkdmlzaWJsZUludGVyZmFjZU5h
bWUpOwogICAgICAgICBpZiAoJGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Ik5hbWVk
Q29uc3RydWN0b3IifSkgewotICAgICAgICAgICAgR2VuZXJhdGVDb25zdHJ1Y3RvckRlZmluaXRp
b25zKFxAaW1wbENvbnRlbnQsICRjbGFzc05hbWUsICRwcm90b0NsYXNzTmFtZSwgJGludGVyZmFj
ZU5hbWUsICRpbnRlcmZhY2UtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJOYW1lZENvbnN0cnVjdG9y
In0sICRpbnRlcmZhY2UsICJHZW5lcmF0aW5nTmFtZWRDb25zdHJ1Y3RvciIpOworICAgICAgICAg
ICAgR2VuZXJhdGVDb25zdHJ1Y3RvckRlZmluaXRpb25zKFxAaW1wbENvbnRlbnQsICRwcm90b0Ns
YXNzTmFtZSwgJGludGVyZmFjZSwgJGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Ik5h
bWVkQ29uc3RydWN0b3IifSwgIkdlbmVyYXRpbmdOYW1lZENvbnN0cnVjdG9yIik7CiAgICAgICAg
IH0KICAgICB9CiAKICAgICAjIC0gQWRkIGZ1bmN0aW9ucyBhbmQgY29uc3RhbnRzIHRvIGEgaGFz
aHRhYmxlIGRlZmluaXRpb24KICAgICBteSAkaGFzaFNpemUgPSAkbnVtRnVuY3Rpb25zICsgJG51
bUNvbnN0YW50czsKLSAgICBteSAkaGFzaE5hbWUgPSAkY2xhc3NOYW1lIC4gIlByb3RvdHlwZVRh
YmxlIjsKKyAgICBteSAkaGFzaE5hbWUgPSAkanNDbGFzc05hbWUgLiAiUHJvdG90eXBlVGFibGUi
OwogCiAgICAgbXkgQGhhc2hLZXlzID0gKCk7CiAgICAgbXkgQGhhc2hWYWx1ZTEgPSAoKTsKQEAg
LTE2NjUsNyArMTY4OCw3IEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uCiAgICAgICAgIG15
ICRuYW1lID0gJGZ1bmN0aW9uLT5zaWduYXR1cmUtPm5hbWU7CiAgICAgICAgIHB1c2goQGhhc2hL
ZXlzLCAkbmFtZSk7CiAKLSAgICAgICAgbXkgJGZ1bmN0aW9uTmFtZSA9IEdldEZ1bmN0aW9uTmFt
ZSgkY2xhc3NOYW1lLCAkZnVuY3Rpb24pOworICAgICAgICBteSAkZnVuY3Rpb25OYW1lID0gR2V0
RnVuY3Rpb25OYW1lKCRqc0NsYXNzTmFtZSwgJGZ1bmN0aW9uKTsKICAgICAgICAgcHVzaChAaGFz
aFZhbHVlMSwgJGZ1bmN0aW9uTmFtZSk7CiAKICAgICAgICAgbXkgJGZ1bmN0aW9uTGVuZ3RoID0g
R2V0RnVuY3Rpb25MZW5ndGgoJGZ1bmN0aW9uKTsKQEAgLTE2OTAsNTcgKzE3MTMsNTcgQEAgc3Vi
IEdlbmVyYXRlSW1wbGVtZW50YXRpb24KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBc
JWNvbmRpdGlvbmFscyk7CiAKICAgICBpZiAoJGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVz
LT57IkpTTm9TdGF0aWNUYWJsZXMifSkgewotICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgInN0
YXRpYyBjb25zdCBIYXNoVGFibGUqIGdldCR7Y2xhc3NOYW1lfVByb3RvdHlwZVRhYmxlKEV4ZWNT
dGF0ZSogZXhlYylcbiIpOworICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgInN0YXRpYyBjb25z
dCBIYXNoVGFibGUqIGdldCR7anNDbGFzc05hbWV9UHJvdG90eXBlVGFibGUoRXhlY1N0YXRlKiBl
eGVjKVxuIik7CiAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAie1xuIik7Ci0gICAgICAgIHB1
c2goQGltcGxDb250ZW50LCAiICAgIHJldHVybiBnZXRIYXNoVGFibGVGb3JHbG9iYWxEYXRhKGV4
ZWMtPnZtKCksICYke2NsYXNzTmFtZX1Qcm90b3R5cGVUYWJsZSk7XG4iKTsKKyAgICAgICAgcHVz
aChAaW1wbENvbnRlbnQsICIgICAgcmV0dXJuIGdldEhhc2hUYWJsZUZvckdsb2JhbERhdGEoZXhl
Yy0+dm0oKSwgJiR7anNDbGFzc05hbWV9UHJvdG90eXBlVGFibGUpO1xuIik7CiAgICAgICAgIHB1
c2goQGltcGxDb250ZW50LCAifVxuXG4iKTsKLSAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJj
b25zdCBDbGFzc0luZm8gJHtjbGFzc05hbWV9UHJvdG90eXBlOjpzX2luZm8gPSB7IFwiJHt2aXNp
YmxlSW50ZXJmYWNlTmFtZX1Qcm90b3R5cGVcIiwgJkJhc2U6OnNfaW5mbywgMCwgZ2V0JHtjbGFz
c05hbWV9UHJvdG90eXBlVGFibGUsIENSRUFURV9NRVRIT0RfVEFCTEUoJHtjbGFzc05hbWV9UHJv
dG90eXBlKSB9O1xuXG4iKTsKKyAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJjb25zdCBDbGFz
c0luZm8gJHtqc0NsYXNzTmFtZX1Qcm90b3R5cGU6OnNfaW5mbyA9IHsgXCIke3Zpc2libGVJbnRl
cmZhY2VOYW1lfVByb3RvdHlwZVwiLCAmQmFzZTo6c19pbmZvLCAwLCBnZXQke2pzQ2xhc3NOYW1l
fVByb3RvdHlwZVRhYmxlLCBDUkVBVEVfTUVUSE9EX1RBQkxFKCR7anNDbGFzc05hbWV9UHJvdG90
eXBlKSB9O1xuXG4iKTsKICAgICB9IGVsc2UgewotICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwg
ImNvbnN0IENsYXNzSW5mbyAke2NsYXNzTmFtZX1Qcm90b3R5cGU6OnNfaW5mbyA9IHsgXCIke3Zp
c2libGVJbnRlcmZhY2VOYW1lfVByb3RvdHlwZVwiLCAmQmFzZTo6c19pbmZvLCAmJHtjbGFzc05h
bWV9UHJvdG90eXBlVGFibGUsIDAsIENSRUFURV9NRVRIT0RfVEFCTEUoJHtjbGFzc05hbWV9UHJv
dG90eXBlKSB9O1xuXG4iKTsKKyAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJjb25zdCBDbGFz
c0luZm8gJHtqc0NsYXNzTmFtZX1Qcm90b3R5cGU6OnNfaW5mbyA9IHsgXCIke3Zpc2libGVJbnRl
cmZhY2VOYW1lfVByb3RvdHlwZVwiLCAmQmFzZTo6c19pbmZvLCAmJHtqc0NsYXNzTmFtZX1Qcm90
b3R5cGVUYWJsZSwgMCwgQ1JFQVRFX01FVEhPRF9UQUJMRSgke2pzQ2xhc3NOYW1lfVByb3RvdHlw
ZSkgfTtcblxuIik7CiAgICAgfQogICAgIGlmICgkaW50ZXJmYWNlTmFtZSBuZSAiRE9NV2luZG93
IiAmJiAhJGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IklzV29ya2VyQ29udGV4dCJ9
KSB7Ci0gICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiSlNPYmplY3QqICR7Y2xhc3NOYW1lfVBy
b3RvdHlwZTo6c2VsZihFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QpXG4iKTsKKyAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJKU09iamVjdCogJHtqc0NsYXNz
TmFtZX1Qcm90b3R5cGU6OnNlbGYoRXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0KVxuIik7CiAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAie1xuIik7Ci0gICAg
ICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIHJldHVybiBnZXRET01Qcm90b3R5cGU8JHtjbGFz
c05hbWV9PihleGVjLCBnbG9iYWxPYmplY3QpO1xuIik7CisgICAgICAgIHB1c2goQGltcGxDb250
ZW50LCAiICAgIHJldHVybiBnZXRET01Qcm90b3R5cGU8JHtqc0NsYXNzTmFtZX0+KGV4ZWMsIGds
b2JhbE9iamVjdCk7XG4iKTsKICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJ9XG5cbiIpOwog
ICAgIH0KIAogICAgIGlmICgkbnVtQ29uc3RhbnRzID4gMCB8fCAkbnVtRnVuY3Rpb25zID4gMCkg
ewotICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgImJvb2wgJHtjbGFzc05hbWV9UHJvdG90eXBl
OjpnZXRPd25Qcm9wZXJ0eVNsb3QoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFByb3Bl
cnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xvdClcbiIpOworICAgICAgICBw
dXNoKEBpbXBsQ29udGVudCwgImJvb2wgJHtqc0NsYXNzTmFtZX1Qcm90b3R5cGU6OmdldE93blBy
b3BlcnR5U2xvdChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHBy
b3BlcnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90KVxuIik7CiAgICAgICAgIHB1c2goQGltcGxD
b250ZW50LCAie1xuIik7Ci0gICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICR7Y2xhc3NO
YW1lfVByb3RvdHlwZSogdGhpc09iamVjdCA9IGpzQ2FzdDwke2NsYXNzTmFtZX1Qcm90b3R5cGUq
PihjZWxsKTtcbiIpOworICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAke2pzQ2xhc3NO
YW1lfVByb3RvdHlwZSogdGhpc09iamVjdCA9IGpzQ2FzdDwke2pzQ2xhc3NOYW1lfVByb3RvdHlw
ZSo+KGNlbGwpO1xuIik7CiAKICAgICAgICAgaWYgKCRudW1Db25zdGFudHMgZXEgMCAmJiAkbnVt
RnVuY3Rpb25zIGVxIDApIHsKICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIHJl
dHVybiBCYXNlOjpnZXRPd25Qcm9wZXJ0eVNsb3QodGhpc09iamVjdCwgZXhlYywgcHJvcGVydHlO
YW1lLCBzbG90KTtcbiIpOyAgICAgICAgCiAgICAgICAgIH0gZWxzaWYgKCRudW1Db25zdGFudHMg
ZXEgMCkgewotICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgcmV0dXJuIGdldFN0
YXRpY0Z1bmN0aW9uU2xvdDxKU09iamVjdD4oZXhlYywgIiAuIHByb3RvdHlwZUhhc2hUYWJsZUFj
Y2Vzc29yKCRpbnRlcmZhY2UtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJKU05vU3RhdGljVGFibGVz
In0sICRjbGFzc05hbWUpIC4gIiwgdGhpc09iamVjdCwgcHJvcGVydHlOYW1lLCBzbG90KTtcbiIp
OworICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgcmV0dXJuIGdldFN0YXRpY0Z1
bmN0aW9uU2xvdDxKU09iamVjdD4oZXhlYywgIiAuIHByb3RvdHlwZUhhc2hUYWJsZUFjY2Vzc29y
KCRpbnRlcmZhY2UtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJKU05vU3RhdGljVGFibGVzIn0sICRq
c0NsYXNzTmFtZSkgLiAiLCB0aGlzT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHNsb3QpO1xuIik7CiAg
ICAgICAgIH0gZWxzaWYgKCRudW1GdW5jdGlvbnMgZXEgMCkgewotICAgICAgICAgICAgcHVzaChA
aW1wbENvbnRlbnQsICIgICAgcmV0dXJuIGdldFN0YXRpY1ZhbHVlU2xvdDwke2NsYXNzTmFtZX1Q
cm90b3R5cGUsIEpTT2JqZWN0PihleGVjLCAiIC4gcHJvdG90eXBlSGFzaFRhYmxlQWNjZXNzb3Io
JGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkpTTm9TdGF0aWNUYWJsZXMifSwgJGNs
YXNzTmFtZSkgLiAiLCB0aGlzT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHNsb3QpO1xuIik7CisgICAg
ICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICByZXR1cm4gZ2V0U3RhdGljVmFsdWVTbG90
PCR7anNDbGFzc05hbWV9UHJvdG90eXBlLCBKU09iamVjdD4oZXhlYywgIiAuIHByb3RvdHlwZUhh
c2hUYWJsZUFjY2Vzc29yKCRpbnRlcmZhY2UtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJKU05vU3Rh
dGljVGFibGVzIn0sICRqc0NsYXNzTmFtZSkgLiAiLCB0aGlzT2JqZWN0LCBwcm9wZXJ0eU5hbWUs
IHNsb3QpO1xuIik7CiAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBwdXNoKEBpbXBsQ29u
dGVudCwgIiAgICByZXR1cm4gZ2V0U3RhdGljUHJvcGVydHlTbG90PCR7Y2xhc3NOYW1lfVByb3Rv
dHlwZSwgSlNPYmplY3Q+KGV4ZWMsICIgLiBwcm90b3R5cGVIYXNoVGFibGVBY2Nlc3NvcigkaW50
ZXJmYWNlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiSlNOb1N0YXRpY1RhYmxlcyJ9LCAkY2xhc3NO
YW1lKSAuICIsIHRoaXNPYmplY3QsIHByb3BlcnR5TmFtZSwgc2xvdCk7XG4iKTsKKyAgICAgICAg
ICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIHJldHVybiBnZXRTdGF0aWNQcm9wZXJ0eVNsb3Q8
JHtqc0NsYXNzTmFtZX1Qcm90b3R5cGUsIEpTT2JqZWN0PihleGVjLCAiIC4gcHJvdG90eXBlSGFz
aFRhYmxlQWNjZXNzb3IoJGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkpTTm9TdGF0
aWNUYWJsZXMifSwgJGpzQ2xhc3NOYW1lKSAuICIsIHRoaXNPYmplY3QsIHByb3BlcnR5TmFtZSwg
c2xvdCk7XG4iKTsKICAgICAgICAgfQogICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIn1cblxu
Iik7CiAKLSAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJib29sICR7Y2xhc3NOYW1lfVByb3Rv
dHlwZTo6Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0
ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlEZXNjcmlwdG9yJiBk
ZXNjcmlwdG9yKVxuIik7CisgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiYm9vbCAke2pzQ2xh
c3NOYW1lfVByb3RvdHlwZTo6Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEpTT2JqZWN0KiBvYmpl
Y3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlE
ZXNjcmlwdG9yJiBkZXNjcmlwdG9yKVxuIik7CiAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAi
e1xuIik7Ci0gICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICR7Y2xhc3NOYW1lfVByb3Rv
dHlwZSogdGhpc09iamVjdCA9IGpzQ2FzdDwke2NsYXNzTmFtZX1Qcm90b3R5cGUqPihvYmplY3Qp
O1xuIik7CisgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICR7anNDbGFzc05hbWV9UHJv
dG90eXBlKiB0aGlzT2JqZWN0ID0ganNDYXN0PCR7anNDbGFzc05hbWV9UHJvdG90eXBlKj4ob2Jq
ZWN0KTtcbiIpOwogCiAgICAgICAgIGlmICgkbnVtQ29uc3RhbnRzIGVxIDAgJiYgJG51bUZ1bmN0
aW9ucyBlcSAwKSB7CiAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICByZXR1cm4g
QmFzZTo6Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHRoaXNPYmplY3QsIGV4ZWMsIHByb3BlcnR5
TmFtZSwgZGVzY3JpcHRvcik7XG4iKTsgICAgICAgIAogICAgICAgICB9IGVsc2lmICgkbnVtQ29u
c3RhbnRzIGVxIDApIHsKLSAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIHJldHVy
biBnZXRTdGF0aWNGdW5jdGlvbkRlc2NyaXB0b3I8SlNPYmplY3Q+KGV4ZWMsICIgLiBwcm90b3R5
cGVIYXNoVGFibGVBY2Nlc3NvcigkaW50ZXJmYWNlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiSlNO
b1N0YXRpY1RhYmxlcyJ9LCAkY2xhc3NOYW1lKSAuICIsIHRoaXNPYmplY3QsIHByb3BlcnR5TmFt
ZSwgZGVzY3JpcHRvcik7XG4iKTsKKyAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAg
IHJldHVybiBnZXRTdGF0aWNGdW5jdGlvbkRlc2NyaXB0b3I8SlNPYmplY3Q+KGV4ZWMsICIgLiBw
cm90b3R5cGVIYXNoVGFibGVBY2Nlc3NvcigkaW50ZXJmYWNlLT5leHRlbmRlZEF0dHJpYnV0ZXMt
PnsiSlNOb1N0YXRpY1RhYmxlcyJ9LCAkanNDbGFzc05hbWUpIC4gIiwgdGhpc09iamVjdCwgcHJv
cGVydHlOYW1lLCBkZXNjcmlwdG9yKTtcbiIpOwogICAgICAgICB9IGVsc2lmICgkbnVtRnVuY3Rp
b25zIGVxIDApIHsKLSAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIHJldHVybiBn
ZXRTdGF0aWNWYWx1ZURlc2NyaXB0b3I8JHtjbGFzc05hbWV9UHJvdG90eXBlLCBKU09iamVjdD4o
ZXhlYywgIiAuIHByb3RvdHlwZUhhc2hUYWJsZUFjY2Vzc29yKCRpbnRlcmZhY2UtPmV4dGVuZGVk
QXR0cmlidXRlcy0+eyJKU05vU3RhdGljVGFibGVzIn0sICRjbGFzc05hbWUpIC4gIiwgdGhpc09i
amVjdCwgcHJvcGVydHlOYW1lLCBkZXNjcmlwdG9yKTtcbiIpOworICAgICAgICAgICAgcHVzaChA
aW1wbENvbnRlbnQsICIgICAgcmV0dXJuIGdldFN0YXRpY1ZhbHVlRGVzY3JpcHRvcjwke2pzQ2xh
c3NOYW1lfVByb3RvdHlwZSwgSlNPYmplY3Q+KGV4ZWMsICIgLiBwcm90b3R5cGVIYXNoVGFibGVB
Y2Nlc3NvcigkaW50ZXJmYWNlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiSlNOb1N0YXRpY1RhYmxl
cyJ9LCAkanNDbGFzc05hbWUpIC4gIiwgdGhpc09iamVjdCwgcHJvcGVydHlOYW1lLCBkZXNjcmlw
dG9yKTtcbiIpOwogICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgcHVzaChAaW1wbENvbnRl
bnQsICIgICAgcmV0dXJuIGdldFN0YXRpY1Byb3BlcnR5RGVzY3JpcHRvcjwke2NsYXNzTmFtZX1Q
cm90b3R5cGUsIEpTT2JqZWN0PihleGVjLCAiIC4gcHJvdG90eXBlSGFzaFRhYmxlQWNjZXNzb3Io
JGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkpTTm9TdGF0aWNUYWJsZXMifSwgJGNs
YXNzTmFtZSkgLiAiLCB0aGlzT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIGRlc2NyaXB0b3IpO1xuIik7
CisgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICByZXR1cm4gZ2V0U3RhdGljUHJv
cGVydHlEZXNjcmlwdG9yPCR7anNDbGFzc05hbWV9UHJvdG90eXBlLCBKU09iamVjdD4oZXhlYywg
IiAuIHByb3RvdHlwZUhhc2hUYWJsZUFjY2Vzc29yKCRpbnRlcmZhY2UtPmV4dGVuZGVkQXR0cmli
dXRlcy0+eyJKU05vU3RhdGljVGFibGVzIn0sICRqc0NsYXNzTmFtZSkgLiAiLCB0aGlzT2JqZWN0
LCBwcm9wZXJ0eU5hbWUsIGRlc2NyaXB0b3IpO1xuIik7CiAgICAgICAgIH0KICAgICAgICAgcHVz
aChAaW1wbENvbnRlbnQsICJ9XG5cbiIpOwogICAgIH0KIAogICAgIGlmICgkaW50ZXJmYWNlLT5l
eHRlbmRlZEF0dHJpYnV0ZXMtPnsiSlNDdXN0b21OYW1lZEdldHRlck9uUHJvdG90eXBlIn0pIHsK
LSAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJ2b2lkICR7Y2xhc3NOYW1lfVByb3RvdHlwZTo6
cHV0KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlO
YW1lLCBKU1ZhbHVlIHZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmIHNsb3QpXG4iKTsKKyAgICAgICAg
cHVzaChAaW1wbENvbnRlbnQsICJ2b2lkICR7anNDbGFzc05hbWV9UHJvdG90eXBlOjpwdXQoSlND
ZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpT
VmFsdWUgdmFsdWUsIFB1dFByb3BlcnR5U2xvdCYgc2xvdClcbiIpOwogICAgICAgICBwdXNoKEBp
bXBsQ29udGVudCwgIntcbiIpOwotICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAke2Ns
YXNzTmFtZX1Qcm90b3R5cGUqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8JHtjbGFzc05hbWV9UHJvdG90
eXBlKj4oY2VsbCk7XG4iKTsKKyAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgJHtqc0Ns
YXNzTmFtZX1Qcm90b3R5cGUqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8JHtqc0NsYXNzTmFtZX1Qcm90
b3R5cGUqPihjZWxsKTtcbiIpOwogICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBpZiAo
dGhpc09iamVjdC0+cHV0RGVsZWdhdGUoZXhlYywgcHJvcGVydHlOYW1lLCB2YWx1ZSwgc2xvdCkp
XG4iKTsKICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgICAgIHJldHVybjtcbiIpOwog
ICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBCYXNlOjpwdXQodGhpc09iamVjdCwgZXhl
YywgcHJvcGVydHlOYW1lLCB2YWx1ZSwgc2xvdCk7XG4iKTsKQEAgLTE3NDksMjcgKzE3NzIsMjcg
QEAgc3ViIEdlbmVyYXRlSW1wbGVtZW50YXRpb24KIAogICAgICMgLSBJbml0aWFsaXplIHN0YXRp
YyBDbGFzc0luZm8gb2JqZWN0CiAgICAgaWYgKCRudW1BdHRyaWJ1dGVzID4gMCAmJiAkaW50ZXJm
YWNlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiSlNOb1N0YXRpY1RhYmxlcyJ9KSB7Ci0gICAgICAg
IHB1c2goQGltcGxDb250ZW50LCAic3RhdGljIGNvbnN0IEhhc2hUYWJsZSogZ2V0JHtjbGFzc05h
bWV9VGFibGUoRXhlY1N0YXRlKiBleGVjKVxuIik7CisgICAgICAgIHB1c2goQGltcGxDb250ZW50
LCAic3RhdGljIGNvbnN0IEhhc2hUYWJsZSogZ2V0JHtqc0NsYXNzTmFtZX1UYWJsZShFeGVjU3Rh
dGUqIGV4ZWMpXG4iKTsKICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJ7XG4iKTsKLSAgICAg
ICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgcmV0dXJuIGdldEhhc2hUYWJsZUZvckdsb2JhbERh
dGEoZXhlYy0+dm0oKSwgJiR7Y2xhc3NOYW1lfVRhYmxlKTtcbiIpOworICAgICAgICBwdXNoKEBp
bXBsQ29udGVudCwgIiAgICByZXR1cm4gZ2V0SGFzaFRhYmxlRm9yR2xvYmFsRGF0YShleGVjLT52
bSgpLCAmJHtqc0NsYXNzTmFtZX1UYWJsZSk7XG4iKTsKICAgICAgICAgcHVzaChAaW1wbENvbnRl
bnQsICJ9XG5cbiIpOwogICAgIH0KIAotICAgIHB1c2goQGltcGxDb250ZW50LCAiY29uc3QgQ2xh
c3NJbmZvICRjbGFzc05hbWUiIC4gIjo6c19pbmZvID0geyBcIiR7dmlzaWJsZUludGVyZmFjZU5h
bWV9XCIsICZCYXNlOjpzX2luZm8sICIpOworICAgIHB1c2goQGltcGxDb250ZW50LCAiY29uc3Qg
Q2xhc3NJbmZvICRqc0NsYXNzTmFtZSIgLiAiOjpzX2luZm8gPSB7IFwiJHt2aXNpYmxlSW50ZXJm
YWNlTmFtZX1cIiwgJkJhc2U6OnNfaW5mbywgIik7CiAKICAgICBpZiAoJG51bUF0dHJpYnV0ZXMg
PiAwICYmICEkaW50ZXJmYWNlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiSlNOb1N0YXRpY1RhYmxl
cyJ9KSB7Ci0gICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiJiR7Y2xhc3NOYW1lfVRhYmxlIik7
CisgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiJiR7anNDbGFzc05hbWV9VGFibGUiKTsKICAg
ICB9IGVsc2UgewogICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIjAiKTsKICAgICB9CiAgICAg
aWYgKCRudW1BdHRyaWJ1dGVzID4gMCAmJiAkaW50ZXJmYWNlLT5leHRlbmRlZEF0dHJpYnV0ZXMt
PnsiSlNOb1N0YXRpY1RhYmxlcyJ9KSB7Ci0gICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiLCBn
ZXQke2NsYXNzTmFtZX1UYWJsZSAiKTsKKyAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIsIGdl
dCR7anNDbGFzc05hbWV9VGFibGUgIik7CiAgICAgfSBlbHNlIHsKICAgICAgICAgcHVzaChAaW1w
bENvbnRlbnQsICIsIDAgIik7CiAgICAgfQotICAgIHB1c2goQGltcGxDb250ZW50LCAiLCBDUkVB
VEVfTUVUSE9EX1RBQkxFKCRjbGFzc05hbWUpIH07XG5cbiIpOworICAgIHB1c2goQGltcGxDb250
ZW50LCAiLCBDUkVBVEVfTUVUSE9EX1RBQkxFKCRqc0NsYXNzTmFtZSkgfTtcblxuIik7CiAKLSAg
ICBteSAkaW1wbFR5cGUgPSAkaW50ZXJmYWNlTmFtZTsKKyAgICBteSAkaW1wbFR5cGUgPSAkaW1w
bENsYXNzTmFtZTsKICAgICBteSAoJHN2Z1Byb3BlcnR5VHlwZSwgJHN2Z0xpc3RQcm9wZXJ0eVR5
cGUsICRzdmdOYXRpdmVUeXBlKSA9IEdldFNWR1Byb3BlcnR5VHlwZXMoJGltcGxUeXBlKTsKICAg
ICAkaW1wbFR5cGUgPSAkc3ZnTmF0aXZlVHlwZSBpZiAkc3ZnTmF0aXZlVHlwZTsKIApAQCAtMTc4
MCwxOCArMTgwMywxOCBAQCBzdWIgR2VuZXJhdGVJbXBsZW1lbnRhdGlvbgogICAgICMgQ29uc3Ry
dWN0b3IKICAgICBpZiAoJGludGVyZmFjZU5hbWUgZXEgIkRPTVdpbmRvdyIpIHsKICAgICAgICAg
QWRkSW5jbHVkZXNGb3JUeXBlSW5JbXBsKCJKU0RPTVdpbmRvd1NoZWxsIik7Ci0gICAgICAgIHB1
c2goQGltcGxDb250ZW50LCAiJHtjbGFzc05hbWV9OjokY2xhc3NOYW1lKFZNJiB2bSwgU3RydWN0
dXJlKiBzdHJ1Y3R1cmUsIFBhc3NSZWZQdHI8JGltcGxUeXBlPiBpbXBsLCBKU0RPTVdpbmRvd1No
ZWxsKiBzaGVsbClcbiIpOworICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiR7anNDbGFzc05h
bWV9OjokanNDbGFzc05hbWUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgUGFzc1JlZlB0
cjwkaW1wbFR5cGU+IGltcGwsIEpTRE9NV2luZG93U2hlbGwqIHNoZWxsKVxuIik7CiAgICAgICAg
IHB1c2goQGltcGxDb250ZW50LCAiICAgIDogJHBhcmVudENsYXNzTmFtZSh2bSwgc3RydWN0dXJl
LCBpbXBsLCBzaGVsbClcbiIpOwogICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIntcbiIpOwog
ICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIn1cblxuIik7CiAgICAgfSBlbHNpZiAoJGludGVy
ZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IklzV29ya2VyQ29udGV4dCJ9KSB7CiAgICAgICAg
IEFkZEluY2x1ZGVzRm9yVHlwZUluSW1wbCgkaW50ZXJmYWNlTmFtZSk7Ci0gICAgICAgIHB1c2go
QGltcGxDb250ZW50LCAiJHtjbGFzc05hbWV9OjokY2xhc3NOYW1lKFZNJiB2bSwgU3RydWN0dXJl
KiBzdHJ1Y3R1cmUsIFBhc3NSZWZQdHI8JGltcGxUeXBlPiBpbXBsKVxuIik7CisgICAgICAgIHB1
c2goQGltcGxDb250ZW50LCAiJHtqc0NsYXNzTmFtZX06OiRqc0NsYXNzTmFtZShWTSYgdm0sIFN0
cnVjdHVyZSogc3RydWN0dXJlLCBQYXNzUmVmUHRyPCRpbXBsVHlwZT4gaW1wbClcbiIpOwogICAg
ICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICA6ICRwYXJlbnRDbGFzc05hbWUodm0sIHN0cnVj
dHVyZSwgaW1wbClcbiIpOwogICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIntcbiIpOwogICAg
ICAgICBwdXNoKEBpbXBsQ29udGVudCwgIn1cblxuIik7CiAgICAgfSBlbHNlIHsKLSAgICAgICAg
cHVzaChAaW1wbENvbnRlbnQsICIke2NsYXNzTmFtZX06OiRjbGFzc05hbWUoU3RydWN0dXJlKiBz
dHJ1Y3R1cmUsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFBhc3NSZWZQdHI8JGlt
cGxUeXBlPiBpbXBsKVxuIik7CisgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiJHtqc0NsYXNz
TmFtZX06OiRqc0NsYXNzTmFtZShTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSlNET01HbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgUGFzc1JlZlB0cjwkaW1wbFR5cGU+IGltcGwpXG4iKTsKICAgICAg
ICAgaWYgKCRoYXNQYXJlbnQpIHsKICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAg
IDogJHBhcmVudENsYXNzTmFtZShzdHJ1Y3R1cmUsIGdsb2JhbE9iamVjdCwgaW1wbClcbiIpOwog
ICAgICAgICB9IGVsc2UgewpAQCAtMTgwMSwxMSArMTgyNCwxMSBAQCBzdWIgR2VuZXJhdGVJbXBs
ZW1lbnRhdGlvbgogICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIntcbiIpOwogICAgICAgICBw
dXNoKEBpbXBsQ29udGVudCwgIn1cblxuIik7CiAKLSAgICAgICAgcHVzaChAaW1wbENvbnRlbnQs
ICJ2b2lkICR7Y2xhc3NOYW1lfTo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtKVxuIik7CisgICAgICAg
IHB1c2goQGltcGxDb250ZW50LCAidm9pZCAke2pzQ2xhc3NOYW1lfTo6ZmluaXNoQ3JlYXRpb24o
Vk0mIHZtKVxuIik7CiAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAie1xuIik7CiAgICAgICAg
IHB1c2goQGltcGxDb250ZW50LCAiICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKHZtKTtcbiIpOwog
ICAgICAgICBpZiAoJGNvZGVHZW5lcmF0b3ItPklzVHlwZWRBcnJheVR5cGUoJGltcGxUeXBlKSBh
bmQgKCRpbXBsVHlwZSBuZSAiQXJyYXlCdWZmZXJWaWV3IikgYW5kICgkaW1wbFR5cGUgbmUgIkFy
cmF5QnVmZmVyIikpIHsKLSAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIFR5cGVk
QXJyYXlEZXNjcmlwdG9yIGRlc2NyaXB0b3IoJiR7Y2xhc3NOYW1lfTo6c19pbmZvLCBPQkpFQ1Rf
T0ZGU0VUT0YoJHtjbGFzc05hbWV9LCBtX3N0b3JhZ2UpLCBPQkpFQ1RfT0ZGU0VUT0YoJHtjbGFz
c05hbWV9LCBtX3N0b3JhZ2VMZW5ndGgpKTtcbiIpOworICAgICAgICAgICAgcHVzaChAaW1wbENv
bnRlbnQsICIgICAgVHlwZWRBcnJheURlc2NyaXB0b3IgZGVzY3JpcHRvcigmJHtqc0NsYXNzTmFt
ZX06OnNfaW5mbywgT0JKRUNUX09GRlNFVE9GKCR7anNDbGFzc05hbWV9LCBtX3N0b3JhZ2UpLCBP
QkpFQ1RfT0ZGU0VUT0YoJHtqc0NsYXNzTmFtZX0sIG1fc3RvcmFnZUxlbmd0aCkpO1xuIik7CiAg
ICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICB2bS5yZWdpc3RlclR5cGVkQXJyYXlE
ZXNjcmlwdG9yKGltcGwoKSwgZGVzY3JpcHRvcik7XG4iKTsKICAgICAgICAgICAgIHB1c2goQGlt
cGxDb250ZW50LCAiICAgIG1fc3RvcmFnZSA9IGltcGwoKS0+ZGF0YSgpO1xuIik7CiAgICAgICAg
ICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBtX3N0b3JhZ2VMZW5ndGggPSBpbXBsKCktPmxl
bmd0aCgpO1xuIik7CkBAIC0xODE1LDEzICsxODM4LDEzIEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVu
dGF0aW9uCiAgICAgfQogCiAgICAgaWYgKCEkaW50ZXJmYWNlLT5leHRlbmRlZEF0dHJpYnV0ZXMt
PnsiRXh0ZW5kc0RPTUdsb2JhbE9iamVjdCJ9KSB7Ci0gICAgICAgIHB1c2goQGltcGxDb250ZW50
LCAiSlNPYmplY3QqICR7Y2xhc3NOYW1lfTo6Y3JlYXRlUHJvdG90eXBlKEV4ZWNTdGF0ZSogZXhl
YywgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdClcbiIpOworICAgICAgICBwdXNoKEBpbXBs
Q29udGVudCwgIkpTT2JqZWN0KiAke2pzQ2xhc3NOYW1lfTo6Y3JlYXRlUHJvdG90eXBlKEV4ZWNT
dGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdClcbiIpOwogICAgICAgICBw
dXNoKEBpbXBsQ29udGVudCwgIntcbiIpOwogICAgICAgICBpZiAoJGhhc1BhcmVudCAmJiAkcGFy
ZW50Q2xhc3NOYW1lIG5lICJKU0M6OkRPTU5vZGVGaWx0ZXIiKSB7Ci0gICAgICAgICAgICBwdXNo
KEBpbXBsQ29udGVudCwgIiAgICByZXR1cm4gJHtjbGFzc05hbWV9UHJvdG90eXBlOjpjcmVhdGUo
ZXhlYy0+dm0oKSwgZ2xvYmFsT2JqZWN0LCAke2NsYXNzTmFtZX1Qcm90b3R5cGU6OmNyZWF0ZVN0
cnVjdHVyZShleGVjLT52bSgpLCBnbG9iYWxPYmplY3QsICR7cGFyZW50Q2xhc3NOYW1lfVByb3Rv
dHlwZTo6c2VsZihleGVjLCBnbG9iYWxPYmplY3QpKSk7XG4iKTsKKyAgICAgICAgICAgIHB1c2go
QGltcGxDb250ZW50LCAiICAgIHJldHVybiAke2pzQ2xhc3NOYW1lfVByb3RvdHlwZTo6Y3JlYXRl
KGV4ZWMtPnZtKCksIGdsb2JhbE9iamVjdCwgJHtqc0NsYXNzTmFtZX1Qcm90b3R5cGU6OmNyZWF0
ZVN0cnVjdHVyZShleGVjLT52bSgpLCBnbG9iYWxPYmplY3QsICR7cGFyZW50Q2xhc3NOYW1lfVBy
b3RvdHlwZTo6c2VsZihleGVjLCBnbG9iYWxPYmplY3QpKSk7XG4iKTsKICAgICAgICAgfSBlbHNl
IHsKICAgICAgICAgICAgIG15ICRwcm90b3R5cGUgPSAkaW50ZXJmYWNlLT5pc0V4Y2VwdGlvbiA/
ICJlcnJvclByb3RvdHlwZSIgOiAib2JqZWN0UHJvdG90eXBlIjsKLSAgICAgICAgICAgIHB1c2go
QGltcGxDb250ZW50LCAiICAgIHJldHVybiAke2NsYXNzTmFtZX1Qcm90b3R5cGU6OmNyZWF0ZShl
eGVjLT52bSgpLCBnbG9iYWxPYmplY3QsICR7Y2xhc3NOYW1lfVByb3RvdHlwZTo6Y3JlYXRlU3Ry
dWN0dXJlKGdsb2JhbE9iamVjdC0+dm0oKSwgZ2xvYmFsT2JqZWN0LCBnbG9iYWxPYmplY3QtPiR7
cHJvdG90eXBlfSgpKSk7XG4iKTsKKyAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAg
IHJldHVybiAke2pzQ2xhc3NOYW1lfVByb3RvdHlwZTo6Y3JlYXRlKGV4ZWMtPnZtKCksIGdsb2Jh
bE9iamVjdCwgJHtqc0NsYXNzTmFtZX1Qcm90b3R5cGU6OmNyZWF0ZVN0cnVjdHVyZShnbG9iYWxP
YmplY3QtPnZtKCksIGdsb2JhbE9iamVjdCwgZ2xvYmFsT2JqZWN0LT4ke3Byb3RvdHlwZX0oKSkp
O1xuIik7CiAgICAgICAgIH0KICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJ9XG5cbiIpOwog
ICAgIH0KQEAgLTE4MzMsMTUgKzE4NTYsMTUgQEAgc3ViIEdlbmVyYXRlSW1wbGVtZW50YXRpb24K
ICAgICAgICAgIyBhZGRlZCBiYWNrIHRvIGF2b2lkIGxlYWtpbmcgd2hpbGUgd2UgZmlndXJlIG91
dCB3aHkgdGhlCiAgICAgICAgICMgZmluYWxpemVycyBhcmUgbm90IGFsd2F5cyBnZXR0aW5nIGNh
bGxlZC4gVGhlIHdvcmsgdHJhY2tpbmcKICAgICAgICAgIyB0aGUgZmluYWxpemVyIGlzc3VlIGlz
IGJlaW5nIHRyYWNrZWQgaW4gaHR0cDovL3dlYmtpdC5vcmcvYi83NTQ1MQotICAgICAgICBwdXNo
KEBpbXBsQ29udGVudCwgInZvaWQgJHtjbGFzc05hbWV9OjpkZXN0cm95KEpTQzo6SlNDZWxsKiBj
ZWxsKVxuIik7CisgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAidm9pZCAke2pzQ2xhc3NOYW1l
fTo6ZGVzdHJveShKU0M6OkpTQ2VsbCogY2VsbClcbiIpOwogICAgICAgICBwdXNoKEBpbXBsQ29u
dGVudCwgIntcbiIpOwotICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAke2NsYXNzTmFt
ZX0qIHRoaXNPYmplY3QgPSBzdGF0aWNfY2FzdDwke2NsYXNzTmFtZX0qPihjZWxsKTtcbiIpOwot
ICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICB0aGlzT2JqZWN0LT4ke2NsYXNzTmFtZX06
On4ke2NsYXNzTmFtZX0oKTtcbiIpOworICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAk
e2pzQ2xhc3NOYW1lfSogdGhpc09iamVjdCA9IHN0YXRpY19jYXN0PCR7anNDbGFzc05hbWV9Kj4o
Y2VsbCk7XG4iKTsKKyAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgdGhpc09iamVjdC0+
JHtqc0NsYXNzTmFtZX06On4ke2pzQ2xhc3NOYW1lfSgpO1xuIik7CiAgICAgICAgIHB1c2goQGlt
cGxDb250ZW50LCAifVxuXG4iKTsKIAogICAgICAgICAjIFdlIGFsc28gbmVlZCBhIGRlc3RydWN0
b3IgZm9yIHRoZSBhbGxvY2F0ZUNlbGwgdG8gd29yayBwcm9wZXJseSB3aXRoIHRoZSBkZXN0cnVj
dG9yLWZyZWUgcGFydCBvZiB0aGUgaGVhcC4KICAgICAgICAgIyBPdGhlcndpc2UsIHRoZXNlIGRl
c3Ryb3kgZnVuY3Rpb25zL2Rlc3RydWN0b3JzIHdvbid0IGdldCBjYWxsZWQuCi0gICAgICAgIHB1
c2goQGltcGxDb250ZW50LCAiJHtjbGFzc05hbWV9Ojp+JHtjbGFzc05hbWV9KClcbiIpOworICAg
ICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiR7anNDbGFzc05hbWV9Ojp+JHtqc0NsYXNzTmFtZX0o
KVxuIik7CiAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAie1xuIik7CiAgICAgICAgIHB1c2go
QGltcGxDb250ZW50LCAiICAgIHJlbGVhc2VJbXBsSWZOb3ROdWxsKCk7XG4iKTsKICAgICAgICAg
cHVzaChAaW1wbENvbnRlbnQsICJ9XG5cbiIpOwpAQCAtMTg1OSwyNiArMTg4MiwyNiBAQCBzdWIg
R2VuZXJhdGVJbXBsZW1lbnRhdGlvbgogICAgICMgQXR0cmlidXRlcwogICAgIGlmICgkaGFzR2V0
dGVyKSB7CiAgICAgICAgIGlmICghJGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkpT
SW5saW5lR2V0T3duUHJvcGVydHlTbG90In0gJiYgISRpbnRlcmZhY2UtPmV4dGVuZGVkQXR0cmli
dXRlcy0+eyJDdXN0b21HZXRPd25Qcm9wZXJ0eVNsb3QifSkgewotICAgICAgICAgICAgcHVzaChA
aW1wbENvbnRlbnQsICJib29sICR7Y2xhc3NOYW1lfTo6Z2V0T3duUHJvcGVydHlTbG90KEpTQ2Vs
bCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9w
ZXJ0eVNsb3QmIHNsb3QpXG4iKTsKKyAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiYm9v
bCAke2pzQ2xhc3NOYW1lfTo6Z2V0T3duUHJvcGVydHlTbG90KEpTQ2VsbCogY2VsbCwgRXhlY1N0
YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3Qp
XG4iKTsKICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAie1xuIik7Ci0gICAgICAgICAg
ICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAke2NsYXNzTmFtZX0qIHRoaXNPYmplY3QgPSBqc0Nh
c3Q8JHtjbGFzc05hbWV9Kj4oY2VsbCk7XG4iKTsKKyAgICAgICAgICAgIHB1c2goQGltcGxDb250
ZW50LCAiICAgICR7anNDbGFzc05hbWV9KiB0aGlzT2JqZWN0ID0ganNDYXN0PCR7anNDbGFzc05h
bWV9Kj4oY2VsbCk7XG4iKTsKICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIEFT
U0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpc09iamVjdCwgJnNfaW5mbyk7XG4iKTsKLSAgICAg
ICAgICAgIHB1c2goQGltcGxDb250ZW50LCBHZW5lcmF0ZUdldE93blByb3BlcnR5U2xvdEJvZHko
JGludGVyZmFjZSwgJGludGVyZmFjZU5hbWUsICRjbGFzc05hbWUsICRudW1BdHRyaWJ1dGVzID4g
MCwgMCkpOworICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsIEdlbmVyYXRlR2V0T3duUHJv
cGVydHlTbG90Qm9keSgkaW50ZXJmYWNlLCAkanNDbGFzc05hbWUsICRudW1BdHRyaWJ1dGVzID4g
MCwgMCkpOwogICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJ9XG5cbiIpOwotICAgICAg
ICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJib29sICR7Y2xhc3NOYW1lfTo6Z2V0T3duUHJvcGVy
dHlEZXNjcmlwdG9yKEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlO
YW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlEZXNjcmlwdG9yJiBkZXNjcmlwdG9yKVxuIik7Cisg
ICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgImJvb2wgJHtqc0NsYXNzTmFtZX06OmdldE93
blByb3BlcnR5RGVzY3JpcHRvcihKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIFBy
b3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5RGVzY3JpcHRvciYgZGVzY3JpcHRvcilc
biIpOwogICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJ7XG4iKTsKLSAgICAgICAgICAg
IHB1c2goQGltcGxDb250ZW50LCAiICAgICR7Y2xhc3NOYW1lfSogdGhpc09iamVjdCA9IGpzQ2Fz
dDwke2NsYXNzTmFtZX0qPihvYmplY3QpO1xuIik7CisgICAgICAgICAgICBwdXNoKEBpbXBsQ29u
dGVudCwgIiAgICAke2pzQ2xhc3NOYW1lfSogdGhpc09iamVjdCA9IGpzQ2FzdDwke2pzQ2xhc3NO
YW1lfSo+KG9iamVjdCk7XG4iKTsKICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAg
IEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpc09iamVjdCwgJnNfaW5mbyk7XG4iKTsKLSAg
ICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCBHZW5lcmF0ZUdldE93blByb3BlcnR5RGVzY3Jp
cHRvckJvZHkoJGludGVyZmFjZSwgJGludGVyZmFjZU5hbWUsICRjbGFzc05hbWUsICRudW1BdHRy
aWJ1dGVzID4gMCwgMCkpOworICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsIEdlbmVyYXRl
R2V0T3duUHJvcGVydHlEZXNjcmlwdG9yQm9keSgkaW50ZXJmYWNlLCAkanNDbGFzc05hbWUsICRu
dW1BdHRyaWJ1dGVzID4gMCwgMCkpOwogICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJ9
XG5cbiIpOwogICAgICAgICB9CiAKICAgICAgICAgaWYgKCRpbnRlcmZhY2UtPmV4dGVuZGVkQXR0
cmlidXRlcy0+eyJJbmRleGVkR2V0dGVyIn0gfHwgJGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1
dGVzLT57Ik51bWVyaWNJbmRleGVkR2V0dGVyIn0KICAgICAgICAgICAgICAgICB8fCAkaW50ZXJm
YWNlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiTmFtZWRHZXR0ZXIifSB8fCAkaW50ZXJmYWNlLT5l
eHRlbmRlZEF0dHJpYnV0ZXMtPnsiQ3VzdG9tTmFtZWRHZXR0ZXIifQogICAgICAgICAgICAgICAg
IHx8ICRpbnRlcmZhY2UtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJKU0N1c3RvbUdldE93blByb3Bl
cnR5U2xvdEFuZERlc2NyaXB0b3IifSkgewotICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQs
ICJib29sICR7Y2xhc3NOYW1lfTo6Z2V0T3duUHJvcGVydHlTbG90QnlJbmRleChKU0NlbGwqIGNl
bGwsIEV4ZWNTdGF0ZSogZXhlYywgdW5zaWduZWQgaW5kZXgsIFByb3BlcnR5U2xvdCYgc2xvdClc
biIpOworICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJib29sICR7anNDbGFzc05hbWV9
OjpnZXRPd25Qcm9wZXJ0eVNsb3RCeUluZGV4KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVj
LCB1bnNpZ25lZCBpbmRleCwgUHJvcGVydHlTbG90JiBzbG90KVxuIik7CiAgICAgICAgICAgICBw
dXNoKEBpbXBsQ29udGVudCwgIntcbiIpOwotICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQs
ICIgICAgJHtjbGFzc05hbWV9KiB0aGlzT2JqZWN0ID0ganNDYXN0PCR7Y2xhc3NOYW1lfSo+KGNl
bGwpO1xuIik7CisgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAke2pzQ2xhc3NO
YW1lfSogdGhpc09iamVjdCA9IGpzQ2FzdDwke2pzQ2xhc3NOYW1lfSo+KGNlbGwpO1xuIik7CiAg
ICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVS
SVRTKHRoaXNPYmplY3QsICZzX2luZm8pO1xuIik7CiAKICAgICAgICAgICAgICMgU2luayB0aGUg
aW50LXRvLXN0cmluZyBjb252ZXJzaW9uIHRoYXQgaGFwcGVucyB3aGVuIHdlIGNyZWF0ZSBhIFBy
b3BlcnR5TmFtZQpAQCAtMTg5Niw3ICsxOTE5LDcgQEAgc3ViIEdlbmVyYXRlSW1wbGVtZW50YXRp
b24KICAgICAgICAgICAgICAgICBpZiAoSW5kZXhHZXR0ZXJSZXR1cm5zU3RyaW5ncygkaW50ZXJm
YWNlTmFtZSkpIHsKICAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAg
aWYgKGluZGV4IDw9IE1BWF9BUlJBWV9JTkRFWCkge1xuIik7CiAgICAgICAgICAgICAgICAgfSBl
bHNlIHsKLSAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgaWYgKGlu
ZGV4IDwgc3RhdGljX2Nhc3Q8JGludGVyZmFjZU5hbWUqPih0aGlzT2JqZWN0LT5pbXBsKCkpLT5s
ZW5ndGgoKSkge1xuIik7CisgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAi
ICAgIGlmIChpbmRleCA8IHN0YXRpY19jYXN0PCRpbXBsQ2xhc3NOYW1lKj4odGhpc09iamVjdC0+
aW1wbCgpKS0+bGVuZ3RoKCkpIHtcbiIpOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAg
ICAgICBpZiAoJGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Ik51bWVyaWNJbmRleGVk
R2V0dGVyIn0pIHsKICAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAg
ICAgIHNsb3Quc2V0VmFsdWUodGhpc09iamVjdC0+Z2V0QnlJbmRleChleGVjLCBpbmRleCkpO1xu
Iik7CkBAIC0xOTA5LDcgKzE5MzIsNyBAQCBzdWIgR2VuZXJhdGVJbXBsZW1lbnRhdGlvbgogCiAg
ICAgICAgICAgICBpZiAoJGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Ik5hbWVkR2V0
dGVyIn0gfHwgJGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkN1c3RvbU5hbWVkR2V0
dGVyIn0pIHsKICAgICAgICAgICAgICAgICAmJHByb3BlcnR5TmFtZUdlbmVyYXRpb24oKTsKLSAg
ICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBpZiAoY2FuR2V0SXRlbXNGb3JO
YW1lKGV4ZWMsIHN0YXRpY19jYXN0PCRpbnRlcmZhY2VOYW1lKj4odGhpc09iamVjdC0+aW1wbCgp
KSwgcHJvcGVydHlOYW1lKSkge1xuIik7CisgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRl
bnQsICIgICAgaWYgKGNhbkdldEl0ZW1zRm9yTmFtZShleGVjLCBzdGF0aWNfY2FzdDwkaW1wbENs
YXNzTmFtZSo+KHRoaXNPYmplY3QtPmltcGwoKSksIHByb3BlcnR5TmFtZSkpIHtcbiIpOwogICAg
ICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICAgICBzbG90LnNldEN1c3RvbSh0
aGlzT2JqZWN0LCB0aGlzT2JqZWN0LT5uYW1lR2V0dGVyKTtcbiIpOwogICAgICAgICAgICAgICAg
IHB1c2goQGltcGxDb250ZW50LCAiICAgICAgICByZXR1cm4gdHJ1ZTtcbiIpOwogICAgICAgICAg
ICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIH1cbiIpOwpAQCAtMTkzMiw3ICsxOTU1LDcg
QEAgc3ViIEdlbmVyYXRlSW1wbGVtZW50YXRpb24KICAgICAgICAgICAgICAgICBteSAkdHlwZSA9
ICRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+dHlwZTsKICAgICAgICAgICAgICAgICBteSAkaXNOdWxs
YWJsZSA9ICRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+aXNOdWxsYWJsZTsKICAgICAgICAgICAgICAg
ICAkY29kZUdlbmVyYXRvci0+QXNzZXJ0Tm90U2VxdWVuY2VUeXBlKCR0eXBlKTsKLSAgICAgICAg
ICAgICAgICBteSAkZ2V0RnVuY3Rpb25OYW1lID0gR2V0QXR0cmlidXRlR2V0dGVyTmFtZSgkaW50
ZXJmYWNlTmFtZSwgJGNsYXNzTmFtZSwgJGF0dHJpYnV0ZSk7CisgICAgICAgICAgICAgICAgbXkg
JGdldEZ1bmN0aW9uTmFtZSA9IEdldEF0dHJpYnV0ZUdldHRlck5hbWUoJGludGVyZmFjZSwgJGF0
dHJpYnV0ZSk7CiAgICAgICAgICAgICAgICAgbXkgJGltcGxHZXR0ZXJGdW5jdGlvbk5hbWUgPSAk
Y29kZUdlbmVyYXRvci0+V0tfbGNmaXJzdCgkbmFtZSk7CiAKICAgICAgICAgICAgICAgICBteSAk
YXR0cmlidXRlQ29uZGl0aW9uYWxTdHJpbmcgPSAkY29kZUdlbmVyYXRvci0+R2VuZXJhdGVDb25k
aXRpb25hbFN0cmluZygkYXR0cmlidXRlLT5zaWduYXR1cmUpOwpAQCAtMTk0Miw3ICsxOTY1LDcg
QEAgc3ViIEdlbmVyYXRlSW1wbGVtZW50YXRpb24KICAgICAgICAgICAgICAgICBwdXNoKEBpbXBs
Q29udGVudCwgIntcbiIpOwogCiAgICAgICAgICAgICAgICAgaWYgKCEkYXR0cmlidXRlLT5pc1N0
YXRpYyB8fCAkYXR0cmlidXRlLT5zaWduYXR1cmUtPnR5cGUgPX4gL0NvbnN0cnVjdG9yJC8pIHsK
LSAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgJHtjbGFzc05hbWV9
KiBjYXN0ZWRUaGlzID0ganNDYXN0PCRjbGFzc05hbWUqPihhc09iamVjdChzbG90QmFzZSkpO1xu
Iik7CisgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICR7anNDbGFz
c05hbWV9KiBjYXN0ZWRUaGlzID0ganNDYXN0PCRqc0NsYXNzTmFtZSo+KGFzT2JqZWN0KHNsb3RC
YXNlKSk7XG4iKTsKICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAg
ICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBVTlVTRURfUEFSQU0oc2xvdEJhc2UpO1xuIik7CiAg
ICAgICAgICAgICAgICAgfQpAQCAtMTk2MywxMiArMTk4NiwxMiBAQCBzdWIgR2VuZXJhdGVJbXBs
ZW1lbnRhdGlvbgogICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBy
ZXR1cm4gY2FzdGVkVGhpcy0+JGltcGxHZXR0ZXJGdW5jdGlvbk5hbWUoZXhlYyk7XG4iKTsKICAg
ICAgICAgICAgICAgICB9IGVsc2lmICgkYXR0cmlidXRlLT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0
cmlidXRlcy0+eyJDaGVja1NlY3VyaXR5Rm9yTm9kZSJ9KSB7CiAgICAgICAgICAgICAgICAgICAg
ICRpbXBsSW5jbHVkZXN7IkpTRE9NQmluZGluZy5oIn0gPSAxOwotICAgICAgICAgICAgICAgICAg
ICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAkaW50ZXJmYWNlTmFtZSogaW1wbCA9IHN0YXRpY19j
YXN0PCRpbnRlcmZhY2VOYW1lKj4oY2FzdGVkVGhpcy0+aW1wbCgpKTtcbiIpOwotICAgICAgICAg
ICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICByZXR1cm4gc2hvdWxkQWxsb3dBY2Nl
c3NUb05vZGUoZXhlYywgaW1wbC0+IiAuICRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+bmFtZSAuICIo
KSkgPyAiIC4gTmF0aXZlVG9KU1ZhbHVlKCRhdHRyaWJ1dGUtPnNpZ25hdHVyZSwgMCwgJGludGVy
ZmFjZU5hbWUsICJpbXBsLT4kaW1wbEdldHRlckZ1bmN0aW9uTmFtZSgpIiwgImNhc3RlZFRoaXMi
KSAuICIgOiBqc051bGwoKTtcbiIpOworICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29u
dGVudCwgIiAgICAkaW1wbENsYXNzTmFtZSogaW1wbCA9IHN0YXRpY19jYXN0PCRpbXBsQ2xhc3NO
YW1lKj4oY2FzdGVkVGhpcy0+aW1wbCgpKTtcbiIpOworICAgICAgICAgICAgICAgICAgICBwdXNo
KEBpbXBsQ29udGVudCwgIiAgICByZXR1cm4gc2hvdWxkQWxsb3dBY2Nlc3NUb05vZGUoZXhlYywg
aW1wbC0+IiAuICRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+bmFtZSAuICIoKSkgPyAiIC4gTmF0aXZl
VG9KU1ZhbHVlKCRhdHRyaWJ1dGUtPnNpZ25hdHVyZSwgMCwgJGludGVyZmFjZSwgImltcGwtPiRp
bXBsR2V0dGVyRnVuY3Rpb25OYW1lKCkiLCAiY2FzdGVkVGhpcyIpIC4gIiA6IGpzTnVsbCgpO1xu
Iik7CiAgICAgICAgICAgICAgICAgfSBlbHNpZiAoJHR5cGUgZXEgIkV2ZW50TGlzdGVuZXIiKSB7
CiAgICAgICAgICAgICAgICAgICAgICRpbXBsSW5jbHVkZXN7IkV2ZW50TGlzdGVuZXIuaCJ9ID0g
MTsKICAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgVU5VU0VEX1BB
UkFNKGV4ZWMpO1xuIik7Ci0gICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAi
ICAgICRpbnRlcmZhY2VOYW1lKiBpbXBsID0gc3RhdGljX2Nhc3Q8JGludGVyZmFjZU5hbWUqPihj
YXN0ZWRUaGlzLT5pbXBsKCkpO1xuIik7CisgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxD
b250ZW50LCAiICAgICRpbXBsQ2xhc3NOYW1lKiBpbXBsID0gc3RhdGljX2Nhc3Q8JGltcGxDbGFz
c05hbWUqPihjYXN0ZWRUaGlzLT5pbXBsKCkpO1xuIik7CiAgICAgICAgICAgICAgICAgICAgIHB1
c2goQGltcGxDb250ZW50LCAiICAgIGlmIChFdmVudExpc3RlbmVyKiBsaXN0ZW5lciA9IGltcGwt
PiRpbXBsR2V0dGVyRnVuY3Rpb25OYW1lKCkpIHtcbiIpOwogICAgICAgICAgICAgICAgICAgICBw
dXNoKEBpbXBsQ29udGVudCwgIiAgICAgICAgaWYgKGNvbnN0IEpTRXZlbnRMaXN0ZW5lcioganNM
aXN0ZW5lciA9IEpTRXZlbnRMaXN0ZW5lcjo6Y2FzdChsaXN0ZW5lcikpIHtcbiIpOwogICAgICAg
ICAgICAgICAgICAgICBpZiAoJGludGVyZmFjZU5hbWUgZXEgIkRvY3VtZW50IiB8fCAkaW50ZXJm
YWNlTmFtZSBlcSAiV29ya2VyQ29udGV4dCIgfHwgJGludGVyZmFjZU5hbWUgZXEgIlNoYXJlZFdv
cmtlckNvbnRleHQiIHx8ICRpbnRlcmZhY2VOYW1lIGVxICJEZWRpY2F0ZWRXb3JrZXJDb250ZXh0
IikgewpAQCAtMjAwNiwxMyArMjAyOSwxMyBAQCBzdWIgR2VuZXJhdGVJbXBsZW1lbnRhdGlvbgog
ICAgICAgICAgICAgICAgICAgICBteSBAY2FsbFdpdGhBcmdzID0gR2VuZXJhdGVDYWxsV2l0aCgk
YXR0cmlidXRlLT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJDYWxsV2l0aCJ9LCBc
QGltcGxDb250ZW50LCAianNVbmRlZmluZWQoKSIpOwogCiAgICAgICAgICAgICAgICAgICAgIGlm
ICgkc3ZnTGlzdFByb3BlcnR5VHlwZSkgewotICAgICAgICAgICAgICAgICAgICAgICAgcHVzaChA
aW1wbENvbnRlbnQsICIgICAgSlNWYWx1ZSByZXN1bHQgPSAgIiAuIE5hdGl2ZVRvSlNWYWx1ZSgk
YXR0cmlidXRlLT5zaWduYXR1cmUsIDAsICRpbnRlcmZhY2VOYW1lLCAiY2FzdGVkVGhpcy0+aW1w
bCgpLT4kaW1wbEdldHRlckZ1bmN0aW9uTmFtZSgiIC4gKGpvaW4gIiwgIiwgQGNhbGxXaXRoQXJn
cykgLiAiKSIsICJjYXN0ZWRUaGlzIikgLiAiO1xuIik7CisgICAgICAgICAgICAgICAgICAgICAg
ICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBKU1ZhbHVlIHJlc3VsdCA9ICAiIC4gTmF0aXZlVG9K
U1ZhbHVlKCRhdHRyaWJ1dGUtPnNpZ25hdHVyZSwgMCwgJGludGVyZmFjZSwgImNhc3RlZFRoaXMt
PmltcGwoKS0+JGltcGxHZXR0ZXJGdW5jdGlvbk5hbWUoIiAuIChqb2luICIsICIsIEBjYWxsV2l0
aEFyZ3MpIC4gIikiLCAiY2FzdGVkVGhpcyIpIC4gIjtcbiIpOwogICAgICAgICAgICAgICAgICAg
ICB9IGVsc2lmICgkc3ZnUHJvcGVydHlPckxpc3RQcm9wZXJ0eVR5cGUpIHsKICAgICAgICAgICAg
ICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICRzdmdQcm9wZXJ0eU9yTGlzdFBy
b3BlcnR5VHlwZSYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKS0+cHJvcGVydHlSZWZlcmVuY2Uo
KTtcbiIpOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCRzdmdQcm9wZXJ0eU9yTGlzdFBy
b3BlcnR5VHlwZSBlcSAiZmxvYXQiKSB7ICMgU3BlY2lhbCBjYXNlIGZvciBKU1NWR051bWJlcgot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIEpTVmFs
dWUgcmVzdWx0ID0gICIgLiBOYXRpdmVUb0pTVmFsdWUoJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLCAw
LCAkaW50ZXJmYWNlTmFtZSwgImltcGwiLCAiY2FzdGVkVGhpcyIpIC4gIjtcbiIpOworICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIEpTVmFsdWUgcmVz
dWx0ID0gICIgLiBOYXRpdmVUb0pTVmFsdWUoJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLCAwLCAkaW50
ZXJmYWNlLCAiaW1wbCIsICJjYXN0ZWRUaGlzIikgLiAiO1xuIik7CiAgICAgICAgICAgICAgICAg
ICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxD
b250ZW50LCAiICAgIEpTVmFsdWUgcmVzdWx0ID0gICIgLiBOYXRpdmVUb0pTVmFsdWUoJGF0dHJp
YnV0ZS0+c2lnbmF0dXJlLCAwLCAkaW50ZXJmYWNlTmFtZSwgImltcGwuJGltcGxHZXR0ZXJGdW5j
dGlvbk5hbWUoIiAuIChqb2luICIsICIsIEBjYWxsV2l0aEFyZ3MpIC4gIikiLCAiY2FzdGVkVGhp
cyIpIC4gIjtcbiIpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250
ZW50LCAiICAgIEpTVmFsdWUgcmVzdWx0ID0gICIgLiBOYXRpdmVUb0pTVmFsdWUoJGF0dHJpYnV0
ZS0+c2lnbmF0dXJlLCAwLCAkaW50ZXJmYWNlLCAiaW1wbC4kaW1wbEdldHRlckZ1bmN0aW9uTmFt
ZSgiIC4gKGpvaW4gIiwgIiwgQGNhbGxXaXRoQXJncykgLiAiKSIsICJjYXN0ZWRUaGlzIikgLiAi
O1xuIik7CiAKICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAg
fSBlbHNlIHsKQEAgLTIwMjQsMTQgKzIwNDcsMTQgQEAgc3ViIEdlbmVyYXRlSW1wbGVtZW50YXRp
b24KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkZnVuY3Rpb25OYW1lID0gIiR7aW1wbGVt
ZW50ZWRCeX06OiR7ZnVuY3Rpb25OYW1lfSI7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
dW5zaGlmdChAYXJndW1lbnRzLCAiaW1wbCIpIGlmICEkYXR0cmlidXRlLT5pc1N0YXRpYzsKICAg
ICAgICAgICAgICAgICAgICAgICAgIH0gZWxzaWYgKCRhdHRyaWJ1dGUtPmlzU3RhdGljKSB7Ci0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgJGZ1bmN0aW9uTmFtZSA9ICIke2ludGVyZmFjZU5h
bWV9Ojoke2Z1bmN0aW9uTmFtZX0iOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICRmdW5j
dGlvbk5hbWUgPSAiJHtpbXBsQ2xhc3NOYW1lfTo6JHtmdW5jdGlvbk5hbWV9IjsKICAgICAgICAg
ICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGZ1
bmN0aW9uTmFtZSA9ICJpbXBsLT4ke2Z1bmN0aW9uTmFtZX0iOwogICAgICAgICAgICAgICAgICAg
ICAgICAgfQogCiAgICAgICAgICAgICAgICAgICAgICAgICB1bnNoaWZ0KEBhcmd1bWVudHMsIEBj
YWxsV2l0aEFyZ3MpOwotICAgICAgICAgICAgICAgICAgICAgICAgbXkgJGpzVHlwZSA9IE5hdGl2
ZVRvSlNWYWx1ZSgkYXR0cmlidXRlLT5zaWduYXR1cmUsIDAsICRpbnRlcmZhY2VOYW1lLCAiJHtm
dW5jdGlvbk5hbWV9KCIgLiBqb2luKCIsICIsIEBhcmd1bWVudHMpIC4gIikiLCAiY2FzdGVkVGhp
cyIpOwotICAgICAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgJGlu
dGVyZmFjZU5hbWUqIGltcGwgPSBzdGF0aWNfY2FzdDwkaW50ZXJmYWNlTmFtZSo+KGNhc3RlZFRo
aXMtPmltcGwoKSk7XG4iKSBpZiAhJGF0dHJpYnV0ZS0+aXNTdGF0aWM7CisgICAgICAgICAgICAg
ICAgICAgICAgICBteSAkanNUeXBlID0gTmF0aXZlVG9KU1ZhbHVlKCRhdHRyaWJ1dGUtPnNpZ25h
dHVyZSwgMCwgJGludGVyZmFjZSwgIiR7ZnVuY3Rpb25OYW1lfSgiIC4gam9pbigiLCAiLCBAYXJn
dW1lbnRzKSAuICIpIiwgImNhc3RlZFRoaXMiKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHB1
c2goQGltcGxDb250ZW50LCAiICAgICRpbXBsQ2xhc3NOYW1lKiBpbXBsID0gc3RhdGljX2Nhc3Q8
JGltcGxDbGFzc05hbWUqPihjYXN0ZWRUaGlzLT5pbXBsKCkpO1xuIikgaWYgISRhdHRyaWJ1dGUt
PmlzU3RhdGljOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCRjb2RlR2VuZXJhdG9yLT5J
c1NWR0FuaW1hdGVkVHlwZSgkdHlwZSkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBw
dXNoKEBpbXBsQ29udGVudCwgIiAgICBSZWZQdHI8JHR5cGU+IG9iaiA9ICRqc1R5cGU7XG4iKTsK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBKU1Zh
bHVlIHJlc3VsdCA9ICB0b0pTKGV4ZWMsIGNhc3RlZFRoaXMtPmdsb2JhbE9iamVjdCgpLCBvYmou
Z2V0KCkpO1xuIik7CkBAIC0yMDYxLDEwICsyMDg0LDEwIEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVu
dGF0aW9uCiAKICAgICAgICAgICAgICAgICAgICAgaWYgKCRzdmdQcm9wZXJ0eU9yTGlzdFByb3Bl
cnR5VHlwZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIg
ICAgJHN2Z1Byb3BlcnR5T3JMaXN0UHJvcGVydHlUeXBlIGltcGwoKmNhc3RlZFRoaXMtPmltcGwo
KSk7XG4iKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAg
IEpTQzo6SlNWYWx1ZSByZXN1bHQgPSAiIC4gTmF0aXZlVG9KU1ZhbHVlKCRhdHRyaWJ1dGUtPnNp
Z25hdHVyZSwgMCwgJGludGVyZmFjZU5hbWUsICJpbXBsLiRpbXBsR2V0dGVyRnVuY3Rpb25OYW1l
KCIgLiBqb2luKCIsICIsIEBhcmd1bWVudHMpIC4gIikiLCAiY2FzdGVkVGhpcyIpIC4gIjtcbiIp
OworICAgICAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgSlNDOjpK
U1ZhbHVlIHJlc3VsdCA9ICIgLiBOYXRpdmVUb0pTVmFsdWUoJGF0dHJpYnV0ZS0+c2lnbmF0dXJl
LCAwLCAkaW50ZXJmYWNlLCAiaW1wbC4kaW1wbEdldHRlckZ1bmN0aW9uTmFtZSgiIC4gam9pbigi
LCAiLCBAYXJndW1lbnRzKSAuICIpIiwgImNhc3RlZFRoaXMiKSAuICI7XG4iKTsKICAgICAgICAg
ICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxD
b250ZW50LCAiICAgICRpbnRlcmZhY2VOYW1lKiBpbXBsID0gc3RhdGljX2Nhc3Q8JGludGVyZmFj
ZU5hbWUqPihjYXN0ZWRUaGlzLT5pbXBsKCkpO1xuIik7Ci0gICAgICAgICAgICAgICAgICAgICAg
ICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBKU0M6OkpTVmFsdWUgcmVzdWx0ID0gIiAuIE5hdGl2
ZVRvSlNWYWx1ZSgkYXR0cmlidXRlLT5zaWduYXR1cmUsIDAsICRpbnRlcmZhY2VOYW1lLCAiaW1w
bC0+JGltcGxHZXR0ZXJGdW5jdGlvbk5hbWUoIiAuIGpvaW4oIiwgIiwgQGFyZ3VtZW50cykgLiAi
KSIsICJjYXN0ZWRUaGlzIikgLiAiO1xuIik7CisgICAgICAgICAgICAgICAgICAgICAgICBwdXNo
KEBpbXBsQ29udGVudCwgIiAgICAkaW1wbENsYXNzTmFtZSogaW1wbCA9IHN0YXRpY19jYXN0PCRp
bXBsQ2xhc3NOYW1lKj4oY2FzdGVkVGhpcy0+aW1wbCgpKTtcbiIpOworICAgICAgICAgICAgICAg
ICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgSlNDOjpKU1ZhbHVlIHJlc3VsdCA9ICIg
LiBOYXRpdmVUb0pTVmFsdWUoJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLCAwLCAkaW50ZXJmYWNlLCAi
aW1wbC0+JGltcGxHZXR0ZXJGdW5jdGlvbk5hbWUoIiAuIGpvaW4oIiwgIiwgQGFyZ3VtZW50cykg
LiAiKSIsICJjYXN0ZWRUaGlzIikgLiAiO1xuIik7CiAgICAgICAgICAgICAgICAgICAgIH0KIAog
ICAgICAgICAgICAgICAgICAgICBpZiAoJGlzTnVsbGFibGUpIHsKQEAgLTIwODgsNyArMjExMSw3
IEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uCiAKICAgICAgICAgICAgICAgICBwdXNoKEBp
bXBsQ29udGVudCwgIkpTVmFsdWUgJHtjb25zdHJ1Y3RvckZ1bmN0aW9uTmFtZX0oRXhlY1N0YXRl
KiBleGVjLCBKU1ZhbHVlIHNsb3RCYXNlLCBQcm9wZXJ0eU5hbWUpXG4iKTsKICAgICAgICAgICAg
ICAgICBwdXNoKEBpbXBsQ29udGVudCwgIntcbiIpOwotICAgICAgICAgICAgICAgIHB1c2goQGlt
cGxDb250ZW50LCAiICAgICR7Y2xhc3NOYW1lfSogZG9tT2JqZWN0ID0ganNDYXN0PCRjbGFzc05h
bWUqPihhc09iamVjdChzbG90QmFzZSkpO1xuIik7CisgICAgICAgICAgICAgICAgcHVzaChAaW1w
bENvbnRlbnQsICIgICAgJHtqc0NsYXNzTmFtZX0qIGRvbU9iamVjdCA9IGpzQ2FzdDwkanNDbGFz
c05hbWUqPihhc09iamVjdChzbG90QmFzZSkpO1xuIik7CiAKICAgICAgICAgICAgICAgICBpZiAo
JGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkNoZWNrU2VjdXJpdHkifSkgewogICAg
ICAgICAgICAgICAgICAgICAkaW1wbEluY2x1ZGVzeyJCaW5kaW5nU2VjdXJpdHkuaCJ9ID0gMTsK
QEAgLTIwOTYsNyArMjExOSw3IEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uCiAgICAgICAg
ICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICAgICByZXR1cm4ganNVbmRlZmlu
ZWQoKTtcbiIpOwogICAgICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgICAgIHB1c2goQGlt
cGxDb250ZW50LCAiICAgIHJldHVybiAke2NsYXNzTmFtZX06OmdldENvbnN0cnVjdG9yKGV4ZWMs
IGRvbU9iamVjdC0+Z2xvYmFsT2JqZWN0KCkpO1xuIik7CisgICAgICAgICAgICAgICAgcHVzaChA
aW1wbENvbnRlbnQsICIgICAgcmV0dXJuICR7anNDbGFzc05hbWV9OjpnZXRDb25zdHJ1Y3Rvcihl
eGVjLCBkb21PYmplY3QtPmdsb2JhbE9iamVjdCgpKTtcbiIpOwogICAgICAgICAgICAgICAgIHB1
c2goQGltcGxDb250ZW50LCAifVxuXG4iKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQpAQCAt
MjExMyw5ICsyMTM2LDkgQEAgc3ViIEdlbmVyYXRlSW1wbGVtZW50YXRpb24KIAogICAgICAgICBp
ZiAoJGhhc1NldHRlcikgewogICAgICAgICAgICAgaWYgKCEkaW50ZXJmYWNlLT5leHRlbmRlZEF0
dHJpYnV0ZXMtPnsiQ3VzdG9tUHV0RnVuY3Rpb24ifSkgewotICAgICAgICAgICAgICAgIHB1c2go
QGltcGxDb250ZW50LCAidm9pZCAke2NsYXNzTmFtZX06OnB1dChKU0NlbGwqIGNlbGwsIEV4ZWNT
dGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgUHV0
UHJvcGVydHlTbG90JiBzbG90KVxuIik7CisgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRl
bnQsICJ2b2lkICR7anNDbGFzc05hbWV9OjpwdXQoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4
ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIFB1dFByb3BlcnR5
U2xvdCYgc2xvdClcbiIpOwogICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAie1xu
Iik7Ci0gICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgJHtjbGFzc05hbWV9
KiB0aGlzT2JqZWN0ID0ganNDYXN0PCR7Y2xhc3NOYW1lfSo+KGNlbGwpO1xuIik7CisgICAgICAg
ICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgJHtqc0NsYXNzTmFtZX0qIHRoaXNPYmpl
Y3QgPSBqc0Nhc3Q8JHtqc0NsYXNzTmFtZX0qPihjZWxsKTtcbiIpOwogICAgICAgICAgICAgICAg
IHB1c2goQGltcGxDb250ZW50LCAiICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpc09i
amVjdCwgJnNfaW5mbyk7XG4iKTsKICAgICAgICAgICAgICAgICBpZiAoJGludGVyZmFjZS0+ZXh0
ZW5kZWRBdHRyaWJ1dGVzLT57IkN1c3RvbUluZGV4ZWRTZXR0ZXIifSkgewogICAgICAgICAgICAg
ICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICB1bnNpZ25lZCBpbmRleCA9IHByb3BlcnR5
TmFtZS5hc0luZGV4KCk7XG4iKTsKQEAgLTIxMzAsMTYgKzIxNTMsMTYgQEAgc3ViIEdlbmVyYXRl
SW1wbGVtZW50YXRpb24KICAgICAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgICAgICBpZiAo
JGhhc1JlYWRXcml0ZVByb3BlcnRpZXMpIHsKLSAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1w
bENvbnRlbnQsICIgICAgbG9va3VwUHV0PCRjbGFzc05hbWUsIEJhc2U+KGV4ZWMsIHByb3BlcnR5
TmFtZSwgdmFsdWUsICIgLiBoYXNoVGFibGVBY2Nlc3NvcigkaW50ZXJmYWNlLT5leHRlbmRlZEF0
dHJpYnV0ZXMtPnsiSlNOb1N0YXRpY1RhYmxlcyJ9LCAkY2xhc3NOYW1lKSAuICIsIHRoaXNPYmpl
Y3QsIHNsb3QpO1xuIik7CisgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAi
ICAgIGxvb2t1cFB1dDwkanNDbGFzc05hbWUsIEJhc2U+KGV4ZWMsIHByb3BlcnR5TmFtZSwgdmFs
dWUsICIgLiBoYXNoVGFibGVBY2Nlc3NvcigkaW50ZXJmYWNlLT5leHRlbmRlZEF0dHJpYnV0ZXMt
PnsiSlNOb1N0YXRpY1RhYmxlcyJ9LCAkanNDbGFzc05hbWUpIC4gIiwgdGhpc09iamVjdCwgc2xv
dCk7XG4iKTsKICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICBw
dXNoKEBpbXBsQ29udGVudCwgIiAgICBCYXNlOjpwdXQodGhpc09iamVjdCwgZXhlYywgcHJvcGVy
dHlOYW1lLCB2YWx1ZSwgc2xvdCk7XG4iKTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAg
ICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJ9XG5cbiIpOwogICAgICAgICAgICAgICAgIAogICAg
ICAgICAgICAgICAgIGlmICgkaW50ZXJmYWNlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiQ3VzdG9t
SW5kZXhlZFNldHRlciJ9IHx8ICRpbnRlcmZhY2UtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJDdXN0
b21OYW1lZFNldHRlciJ9KSB7Ci0gICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50
LCAidm9pZCAke2NsYXNzTmFtZX06OnB1dEJ5SW5kZXgoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUq
IGV4ZWMsIHVuc2lnbmVkIGluZGV4LCBKU1ZhbHVlIHZhbHVlLCBib29sIHNob3VsZFRocm93KVxu
Iik7CisgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAidm9pZCAke2pzQ2xh
c3NOYW1lfTo6cHV0QnlJbmRleChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgdW5zaWdu
ZWQgaW5kZXgsIEpTVmFsdWUgdmFsdWUsIGJvb2wgc2hvdWxkVGhyb3cpXG4iKTsKICAgICAgICAg
ICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJ7XG4iKTsKLSAgICAgICAgICAgICAgICAg
ICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgJHtjbGFzc05hbWV9KiB0aGlzT2JqZWN0ID0ganND
YXN0PCR7Y2xhc3NOYW1lfSo+KGNlbGwpO1xuIik7CisgICAgICAgICAgICAgICAgICAgIHB1c2go
QGltcGxDb250ZW50LCAiICAgICR7anNDbGFzc05hbWV9KiB0aGlzT2JqZWN0ID0ganNDYXN0PCR7
anNDbGFzc05hbWV9Kj4oY2VsbCk7XG4iKTsKICAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1w
bENvbnRlbnQsICIgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyh0aGlzT2JqZWN0LCAmc19p
bmZvKTtcbiIpOwogICAgICAgICAgICAgICAgICAgICBpZiAoJGludGVyZmFjZS0+ZXh0ZW5kZWRB
dHRyaWJ1dGVzLT57IkN1c3RvbUluZGV4ZWRTZXR0ZXIifSkgewogICAgICAgICAgICAgICAgICAg
ICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgaWYgKGluZGV4IDw9IE1BWF9BUlJBWV9JTkRF
WCkge1xuIik7CkBAIC0yMTY2LDcgKzIxODksNyBAQCBzdWIgR2VuZXJhdGVJbXBsZW1lbnRhdGlv
bgogICAgICAgICAgICAgICAgICAgICBpZiAoIUlzUmVhZG9ubHkoJGF0dHJpYnV0ZSkpIHsKICAg
ICAgICAgICAgICAgICAgICAgICAgIG15ICRuYW1lID0gJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT5u
YW1lOwogICAgICAgICAgICAgICAgICAgICAgICAgbXkgJHR5cGUgPSAkYXR0cmlidXRlLT5zaWdu
YXR1cmUtPnR5cGU7Ci0gICAgICAgICAgICAgICAgICAgICAgICBteSAkcHV0RnVuY3Rpb25OYW1l
ID0gR2V0QXR0cmlidXRlU2V0dGVyTmFtZSgkaW50ZXJmYWNlTmFtZSwgJGNsYXNzTmFtZSwgJGF0
dHJpYnV0ZSk7CisgICAgICAgICAgICAgICAgICAgICAgICBteSAkcHV0RnVuY3Rpb25OYW1lID0g
R2V0QXR0cmlidXRlU2V0dGVyTmFtZSgkaW50ZXJmYWNlLCAkYXR0cmlidXRlKTsKICAgICAgICAg
ICAgICAgICAgICAgICAgIG15ICRpbXBsU2V0dGVyRnVuY3Rpb25OYW1lID0gJGNvZGVHZW5lcmF0
b3ItPldLX3VjZmlyc3QoJG5hbWUpOwogCiAgICAgICAgICAgICAgICAgICAgICAgICBteSAkYXR0
cmlidXRlQ29uZGl0aW9uYWxTdHJpbmcgPSAkY29kZUdlbmVyYXRvci0+R2VuZXJhdGVDb25kaXRp
b25hbFN0cmluZygkYXR0cmlidXRlLT5zaWduYXR1cmUpOwpAQCAtMjE4MiwyOSArMjIwNSwyOSBA
QCBzdWIgR2VuZXJhdGVJbXBsZW1lbnRhdGlvbgogICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGlmICgkaW50ZXJmYWNlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiQ2hlY2tTZWN1cml0eSJ9ICYm
ICEkYXR0cmlidXRlLT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJEb05vdENoZWNr
U2VjdXJpdHkifSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoJGludGVy
ZmFjZU5hbWUgZXEgIkRPTVdpbmRvdyIpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICRpbXBsSW5jbHVkZXN7IkJpbmRpbmdTZWN1cml0eS5oIn0gPSAxOwotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgaWYgKCFC
aW5kaW5nU2VjdXJpdHk6OnNob3VsZEFsbG93QWNjZXNzVG9ET01XaW5kb3coZXhlYywganNDYXN0
PCRjbGFzc05hbWUqPih0aGlzT2JqZWN0KS0+aW1wbCgpKSlcbiIpOworICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgaWYgKCFCaW5kaW5n
U2VjdXJpdHk6OnNob3VsZEFsbG93QWNjZXNzVG9ET01XaW5kb3coZXhlYywganNDYXN0PCRqc0Ns
YXNzTmFtZSo+KHRoaXNPYmplY3QpLT5pbXBsKCkpKVxuIik7CiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBpZiAoIXNob3VsZEFsbG93QWNjZXNzVG9GcmFtZShl
eGVjLCBqc0Nhc3Q8JGNsYXNzTmFtZSo+KHRoaXNPYmplY3QpLT5pbXBsKCktPmZyYW1lKCkpKVxu
Iik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVu
dCwgIiAgICBpZiAoIXNob3VsZEFsbG93QWNjZXNzVG9GcmFtZShleGVjLCBqc0Nhc3Q8JGpzQ2xh
c3NOYW1lKj4odGhpc09iamVjdCktPmltcGwoKS0+ZnJhbWUoKSkpXG4iKTsKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBw
dXNoKEBpbXBsQ29udGVudCwgIiAgICAgICAgcmV0dXJuO1xuIik7CiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgfQogCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKEhhc0N1c3Rv
bVNldHRlcigkYXR0cmlidXRlLT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcykpIHsKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAganND
YXN0PCRjbGFzc05hbWUqPih0aGlzT2JqZWN0KS0+c2V0JGltcGxTZXR0ZXJGdW5jdGlvbk5hbWUo
ZXhlYywgdmFsdWUpO1xuIik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1c2go
QGltcGxDb250ZW50LCAiICAgIGpzQ2FzdDwkanNDbGFzc05hbWUqPih0aGlzT2JqZWN0KS0+c2V0
JGltcGxTZXR0ZXJGdW5jdGlvbk5hbWUoZXhlYywgdmFsdWUpO1xuIik7CiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgfSBlbHNpZiAoJHR5cGUgZXEgIkV2ZW50TGlzdGVuZXIiKSB7CiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICRpbXBsSW5jbHVkZXN7IkpTRXZlbnRMaXN0ZW5l
ci5oIn0gPSAxOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29u
dGVudCwgIiAgICBVTlVTRURfUEFSQU0oZXhlYyk7XG4iKTsKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgJHtjbGFzc05hbWV9KiBjYXN0ZWRU
aGlzID0ganNDYXN0PCR7Y2xhc3NOYW1lfSo+KHRoaXNPYmplY3QpO1xuIik7CisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICR7anNDbGFzc05h
bWV9KiBjYXN0ZWRUaGlzID0ganNDYXN0PCR7anNDbGFzc05hbWV9Kj4odGhpc09iamVjdCk7XG4i
KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXkgJHdpbmRvd0V2ZW50TGlzdGVu
ZXIgPSAkYXR0cmlidXRlLT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJKU1dpbmRv
d0V2ZW50TGlzdGVuZXIifTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCR3
aW5kb3dFdmVudExpc3RlbmVyKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
ID0gY2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCk7XG4iKTsKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBs
Q29udGVudCwgIiAgICAkaW50ZXJmYWNlTmFtZSogaW1wbCA9IHN0YXRpY19jYXN0PCRpbnRlcmZh
Y2VOYW1lKj4oY2FzdGVkVGhpcy0+aW1wbCgpKTtcbiIpOworICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAkaW1wbENsYXNzTmFtZSogaW1wbCA9
IHN0YXRpY19jYXN0PCRpbXBsQ2xhc3NOYW1lKj4oY2FzdGVkVGhpcy0+aW1wbCgpKTtcbiIpOwog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoKCgkaW50ZXJmYWNlTmFtZSBlcSAi
RE9NV2luZG93Iikgb3IgKCRpbnRlcmZhY2VOYW1lIGVxICJXb3JrZXJDb250ZXh0IikpIGFuZCAk
bmFtZSBlcSAib25lcnJvciIpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICRpbXBsSW5jbHVkZXN7IkpTRXJyb3JIYW5kbGVyLmgifSA9IDE7CiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBpbXBsLT5zZXQkaW1w
bFNldHRlckZ1bmN0aW9uTmFtZShjcmVhdGVKU0Vycm9ySGFuZGxlcihleGVjLCB2YWx1ZSwgdGhp
c09iamVjdCkpO1xuIik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwg
R2VuZXJhdGVBdHRyaWJ1dGVFdmVudExpc3RlbmVyQ2FsbCgkY2xhc3NOYW1lLCAkaW1wbFNldHRl
ckZ1bmN0aW9uTmFtZSwgJHdpbmRvd0V2ZW50TGlzdGVuZXIpKTsKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCBHZW5lcmF0ZUF0dHJpYnV0ZUV2
ZW50TGlzdGVuZXJDYWxsKCRqc0NsYXNzTmFtZSwgJGltcGxTZXR0ZXJGdW5jdGlvbk5hbWUsICR3
aW5kb3dFdmVudExpc3RlbmVyKSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0K
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2lmICgkYXR0cmlidXRlLT5zaWduYXR1
cmUtPnR5cGUgPX4gL0NvbnN0cnVjdG9yJC8pIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgbXkgJGNvbnN0cnVjdG9yVHlwZSA9ICRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+dHlwZTsK
QEAgLTIyMTYsMTggKzIyMzksMTggQEAgc3ViIEdlbmVyYXRlSW1wbGVtZW50YXRpb24KICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFkZFRvSW1wbEluY2x1ZGVzKCJKUyIgLiAk
Y29uc3RydWN0b3JUeXBlIC4gIi5oIiwgJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT5leHRlbmRlZEF0
dHJpYnV0ZXMtPnsiQ29uZGl0aW9uYWwifSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQs
ICIgICAgLy8gU2hhZG93aW5nIGEgYnVpbHQtaW4gY29uc3RydWN0b3JcbiIpOwotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBpZiAoJGludGVyZmFjZU5hbWUgZXEgIkRPTVdpbmRvdyIg
JiYgJGNsYXNzTmFtZSBlcSAiSlNibGFoIikgeworICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBpZiAoJGludGVyZmFjZU5hbWUgZXEgIkRPTVdpbmRvdyIgJiYgJGpzQ2xhc3NOYW1lIGVx
ICJKU2JsYWgiKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIEZJWE1F
OiBUaGlzIGJyYW5jaCBuZXZlciBleGVjdXRlcyBhbmQgc2hvdWxkIGJlIHJlbW92ZWQuCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBq
c0Nhc3Q8JGNsYXNzTmFtZSo+KHRoaXNPYmplY3QpLT5wdXREaXJlY3QoZXhlYy0+dm0oKSwgZXhl
Yy0+cHJvcGVydHlOYW1lcygpLmNvbnN0cnVjdG9yLCB2YWx1ZSk7XG4iKTsKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIGpzQ2FzdDwk
anNDbGFzc05hbWUqPih0aGlzT2JqZWN0KS0+cHV0RGlyZWN0KGV4ZWMtPnZtKCksIGV4ZWMtPnBy
b3BlcnR5TmFtZXMoKS5jb25zdHJ1Y3RvciwgdmFsdWUpO1xuIik7CiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBqc0Nhc3Q8JGNsYXNzTmFtZSo+KHRoaXNPYmpl
Y3QpLT5wdXREaXJlY3QoZXhlYy0+dm0oKSwgSWRlbnRpZmllcihleGVjLCBcIiRuYW1lXCIpLCB2
YWx1ZSk7XG4iKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1c2goQGlt
cGxDb250ZW50LCAiICAgIGpzQ2FzdDwkanNDbGFzc05hbWUqPih0aGlzT2JqZWN0KS0+cHV0RGly
ZWN0KGV4ZWMtPnZtKCksIElkZW50aWZpZXIoZXhlYywgXCIkbmFtZVwiKSwgdmFsdWUpO1xuIik7
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB9IGVsc2lmICgkYXR0cmlidXRlLT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRl
cy0+eyJSZXBsYWNlYWJsZSJ9KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1
c2goQGltcGxDb250ZW50LCAiICAgIC8vIFNoYWRvd2luZyBhIGJ1aWx0LWluIG9iamVjdFxuIik7
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAg
IGpzQ2FzdDwkY2xhc3NOYW1lKj4odGhpc09iamVjdCktPnB1dERpcmVjdChleGVjLT52bSgpLCBJ
ZGVudGlmaWVyKGV4ZWMsIFwiJG5hbWVcIiksIHZhbHVlKTtcbiIpOworICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBqc0Nhc3Q8JGpzQ2xhc3NO
YW1lKj4odGhpc09iamVjdCktPnB1dERpcmVjdChleGVjLT52bSgpLCBJZGVudGlmaWVyKGV4ZWMs
IFwiJG5hbWVcIiksIHZhbHVlKTtcbiIpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0g
ZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghJGF0dHJpYnV0ZS0+
aXNTdGF0aWMpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1c2goQGlt
cGxDb250ZW50LCAiICAgICRjbGFzc05hbWUqIGNhc3RlZFRoaXMgPSBqc0Nhc3Q8JGNsYXNzTmFt
ZSo+KHRoaXNPYmplY3QpO1xuIik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAkanNDbGFzc05hbWUqIGNhc3RlZFRoaXMgPSBqc0Nh
c3Q8JGpzQ2xhc3NOYW1lKj4odGhpc09iamVjdCk7XG4iKTsKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICRpbXBsVHlwZSogaW1wbCA9
IHN0YXRpY19jYXN0PCRpbXBsVHlwZSo+KGNhc3RlZFRoaXMtPmltcGwoKSk7XG4iKTsKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBFeGNlcHRpb25Db2RlIGVjID0gMDtcbiIpIGlm
IEB7JGF0dHJpYnV0ZS0+c2V0dGVyRXhjZXB0aW9uc307CkBAIC0yMjk3LDcgKzIzMjAsNyBAQCBz
dWIgR2VuZXJhdGVJbXBsZW1lbnRhdGlvbgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHVuc2hpZnQoQGFyZ3VtZW50cywgImltcGwiKSBpZiAhJGF0dHJpYnV0ZS0+aXNT
dGF0aWM7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGZ1bmN0aW9u
TmFtZSA9ICIke2ltcGxlbWVudGVkQnl9Ojoke2Z1bmN0aW9uTmFtZX0iOwogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNpZiAoJGF0dHJpYnV0ZS0+aXNTdGF0aWMpIHsK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkZnVuY3Rpb25OYW1lID0g
IiR7aW50ZXJmYWNlTmFtZX06OiR7ZnVuY3Rpb25OYW1lfSI7CisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgJGZ1bmN0aW9uTmFtZSA9ICIke2ltcGxDbGFzc05hbWV9Ojok
e2Z1bmN0aW9uTmFtZX0iOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBl
bHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkZnVuY3Rpb25O
YW1lID0gImltcGwtPiR7ZnVuY3Rpb25OYW1lfSI7CiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB9CkBAIC0yMzE4LDE2ICsyMzQxLDE2IEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVu
dGF0aW9uCiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIGlmICgkaW50ZXJmYWNlLT5leHRl
bmRlZEF0dHJpYnV0ZXMtPnsiUmVwbGFjZWFibGVDb25zdHJ1Y3RvciJ9KSB7Ci0gICAgICAgICAg
ICAgICAgbXkgJGNvbnN0cnVjdG9yRnVuY3Rpb25OYW1lID0gInNldEpTIiAuICRpbnRlcmZhY2VO
YW1lIC4gIkNvbnN0cnVjdG9yIjsKKyAgICAgICAgICAgICAgICBteSAkY29uc3RydWN0b3JGdW5j
dGlvbk5hbWUgPSAic2V0IiAuICRqc0NsYXNzTmFtZSAuICJDb25zdHJ1Y3RvciI7CiAKICAgICAg
ICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgInZvaWQgJHtjb25zdHJ1Y3RvckZ1bmN0aW9u
TmFtZX0oRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1
ZSlcbiIpOwogICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAie1xuIik7CiAgICAg
ICAgICAgICAgICAgaWYgKCRpbnRlcmZhY2UtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJDaGVja1Nl
Y3VyaXR5In0pIHsKICAgICAgICAgICAgICAgICAgICAgaWYgKCRpbnRlcmZhY2VOYW1lIGVxICJE
T01XaW5kb3ciKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAkaW1wbEluY2x1ZGVzeyJCaW5k
aW5nU2VjdXJpdHkuaCJ9ID0gMTsKLSAgICAgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxD
b250ZW50LCAiICAgIGlmICghQmluZGluZ1NlY3VyaXR5OjpzaG91bGRBbGxvd0FjY2Vzc1RvRE9N
V2luZG93KGV4ZWMsIGpzQ2FzdDwkY2xhc3NOYW1lKj4odGhpc09iamVjdCktPmltcGwoKSkpXG4i
KTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIGlmICgh
QmluZGluZ1NlY3VyaXR5OjpzaG91bGRBbGxvd0FjY2Vzc1RvRE9NV2luZG93KGV4ZWMsIGpzQ2Fz
dDwkanNDbGFzc05hbWUqPih0aGlzT2JqZWN0KS0+aW1wbCgpKSlcbiIpOwogICAgICAgICAgICAg
ICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRl
bnQsICIgICAgaWYgKCFzaG91bGRBbGxvd0FjY2Vzc1RvRnJhbWUoZXhlYywganNDYXN0PCRjbGFz
c05hbWUqPih0aGlzT2JqZWN0KS0+aW1wbCgpLT5mcmFtZSgpKSlcbiIpOworICAgICAgICAgICAg
ICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgaWYgKCFzaG91bGRBbGxvd0FjY2Vz
c1RvRnJhbWUoZXhlYywganNDYXN0PCRqc0NsYXNzTmFtZSo+KHRoaXNPYmplY3QpLT5pbXBsKCkt
PmZyYW1lKCkpKVxuIik7CiAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAg
ICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgICAgIHJldHVybjtcbiIpOwogICAgICAgICAgICAg
ICAgIH0KQEAgLTIzMzUsNyArMjM1OCw3IEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uCiAg
ICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgLy8gU2hhZG93aW5nIGEgYnVp
bHQtaW4gY29uc3RydWN0b3JcbiIpOwogCiAgICAgICAgICAgICAgICAgaWYgKCRpbnRlcmZhY2VO
YW1lIGVxICJET01XaW5kb3ciKSB7Ci0gICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250
ZW50LCAiICAgIGpzQ2FzdDwkY2xhc3NOYW1lKj4odGhpc09iamVjdCktPnB1dERpcmVjdChleGVj
LT52bSgpLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkuY29uc3RydWN0b3IsIHZhbHVlKTtcbiIpOwor
ICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBqc0Nhc3Q8JGpzQ2xh
c3NOYW1lKj4odGhpc09iamVjdCktPnB1dERpcmVjdChleGVjLT52bSgpLCBleGVjLT5wcm9wZXJ0
eU5hbWVzKCkuY29uc3RydWN0b3IsIHZhbHVlKTtcbiIpOwogICAgICAgICAgICAgICAgIH0gZWxz
ZSB7CiAgICAgICAgICAgICAgICAgICAgIGRpZSAiTm8gd2F5IHRvIGhhbmRsZSBpbnRlcmZhY2Ug
d2l0aCBSZXBsYWNlYWJsZUNvbnN0cnVjdG9yIGV4dGVuZGVkIGF0dHJpYnV0ZTogJGludGVyZmFj
ZU5hbWUiOwogICAgICAgICAgICAgICAgIH0KQEAgLTIzNDUsMTIgKzIzNjgsMTIgQEAgc3ViIEdl
bmVyYXRlSW1wbGVtZW50YXRpb24KICAgICB9CiAKICAgICBpZiAoKCRpbnRlcmZhY2UtPmV4dGVu
ZGVkQXR0cmlidXRlcy0+eyJJbmRleGVkR2V0dGVyIn0gfHwgJGludGVyZmFjZS0+ZXh0ZW5kZWRB
dHRyaWJ1dGVzLT57Ik51bWVyaWNJbmRleGVkR2V0dGVyIn0pICYmICEkaW50ZXJmYWNlLT5leHRl
bmRlZEF0dHJpYnV0ZXMtPnsiQ3VzdG9tRW51bWVyYXRlUHJvcGVydHkifSkgewotICAgICAgICBw
dXNoKEBpbXBsQ29udGVudCwgInZvaWQgJHtjbGFzc05hbWV9OjpnZXRPd25Qcm9wZXJ0eU5hbWVz
KEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lQXJyYXkmIHBy
b3BlcnR5TmFtZXMsIEVudW1lcmF0aW9uTW9kZSBtb2RlKVxuIik7CisgICAgICAgIHB1c2goQGlt
cGxDb250ZW50LCAidm9pZCAke2pzQ2xhc3NOYW1lfTo6Z2V0T3duUHJvcGVydHlOYW1lcyhKU09i
amVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZUFycmF5JiBwcm9wZXJ0
eU5hbWVzLCBFbnVtZXJhdGlvbk1vZGUgbW9kZSlcbiIpOwogICAgICAgICBwdXNoKEBpbXBsQ29u
dGVudCwgIntcbiIpOwotICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAke2NsYXNzTmFt
ZX0qIHRoaXNPYmplY3QgPSBqc0Nhc3Q8JHtjbGFzc05hbWV9Kj4ob2JqZWN0KTtcbiIpOworICAg
ICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAke2pzQ2xhc3NOYW1lfSogdGhpc09iamVjdCA9
IGpzQ2FzdDwke2pzQ2xhc3NOYW1lfSo+KG9iamVjdCk7XG4iKTsKICAgICAgICAgcHVzaChAaW1w
bENvbnRlbnQsICIgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyh0aGlzT2JqZWN0LCAmc19p
bmZvKTtcbiIpOwogICAgICAgICBpZiAoJGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57
IkluZGV4ZWRHZXR0ZXIifSB8fCAkaW50ZXJmYWNlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiTnVt
ZXJpY0luZGV4ZWRHZXR0ZXIifSkgewotICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIg
ICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHN0YXRpY19jYXN0PCR7aW50ZXJmYWNlTmFtZX0q
Pih0aGlzT2JqZWN0LT5pbXBsKCkpLT5sZW5ndGgoKTsgKytpKVxuIik7CisgICAgICAgICAgICBw
dXNoKEBpbXBsQ29udGVudCwgIiAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgc3RhdGljX2Nh
c3Q8JHtpbXBsQ2xhc3NOYW1lfSo+KHRoaXNPYmplY3QtPmltcGwoKSktPmxlbmd0aCgpOyArK2kp
XG4iKTsKICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICAgICBwcm9wZXJ0eU5h
bWVzLmFkZChJZGVudGlmaWVyOjpmcm9tKGV4ZWMsIGkpKTtcbiIpOwogICAgICAgICB9CiAgICAg
ICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICBCYXNlOjpnZXRPd25Qcm9wZXJ0eU5hbWVzKHRo
aXNPYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZXMsIG1vZGUpO1xuIik7CkBAIC0yMzU4LDggKzIz
ODEsOCBAQCBzdWIgR2VuZXJhdGVJbXBsZW1lbnRhdGlvbgogICAgIH0KIAogICAgIGlmICghJGlu
dGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Ik9taXRDb25zdHJ1Y3RvciJ9KSB7Ci0gICAg
ICAgIHB1c2goQGltcGxDb250ZW50LCAiSlNWYWx1ZSAke2NsYXNzTmFtZX06OmdldENvbnN0cnVj
dG9yKEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdClcbntcbiIp
OwotICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICByZXR1cm4gZ2V0RE9NQ29uc3RydWN0
b3I8JHtjbGFzc05hbWV9Q29uc3RydWN0b3I+KGV4ZWMsIGpzQ2FzdDxKU0RPTUdsb2JhbE9iamVj
dCo+KGdsb2JhbE9iamVjdCkpO1xuIik7CisgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiSlNW
YWx1ZSAke2pzQ2xhc3NOYW1lfTo6Z2V0Q29uc3RydWN0b3IoRXhlY1N0YXRlKiBleGVjLCBKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KVxue1xuIik7CisgICAgICAgIHB1c2goQGltcGxDb250
ZW50LCAiICAgIHJldHVybiBnZXRET01Db25zdHJ1Y3Rvcjwke2pzQ2xhc3NOYW1lfUNvbnN0cnVj
dG9yPihleGVjLCBqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihnbG9iYWxPYmplY3QpKTtcbiIp
OwogICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIn1cblxuIik7CiAgICAgfQogCkBAIC0yMzcz
LDcgKzIzOTYsNyBAQCBzdWIgR2VuZXJhdGVJbXBsZW1lbnRhdGlvbgogCiAgICAgICAgICAgICBu
ZXh0IGlmICRpc0N1c3RvbSAmJiAkaXNPdmVybG9hZGVkICYmICRmdW5jdGlvbi0+e292ZXJsb2Fk
SW5kZXh9ID4gMTsKIAotICAgICAgICAgICAgbXkgJGZ1bmN0aW9uTmFtZSA9IEdldEZ1bmN0aW9u
TmFtZSgkY2xhc3NOYW1lLCAkZnVuY3Rpb24pOworICAgICAgICAgICAgbXkgJGZ1bmN0aW9uTmFt
ZSA9IEdldEZ1bmN0aW9uTmFtZSgkanNDbGFzc05hbWUsICRmdW5jdGlvbik7CiAKICAgICAgICAg
ICAgIG15ICRjb25kaXRpb25hbCA9ICRmdW5jdGlvbi0+c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJp
YnV0ZXMtPnsiQ29uZGl0aW9uYWwifTsKICAgICAgICAgICAgIGlmICgkY29uZGl0aW9uYWwpIHsK
QEAgLTI0MDAsNyArMjQyMyw3IEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uCiAgICAgICAg
ICAgICBpZiAoJGZ1bmN0aW9uLT5pc1N0YXRpYykgewogICAgICAgICAgICAgICAgIGlmICgkaXND
dXN0b20pIHsKICAgICAgICAgICAgICAgICAgICAgR2VuZXJhdGVBcmd1bWVudHNDb3VudENoZWNr
KFxAaW1wbENvbnRlbnQsICRmdW5jdGlvbiwgJGludGVyZmFjZSk7Ci0gICAgICAgICAgICAgICAg
ICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoJHtjbGFz
c05hbWV9OjoiIC4gJGZ1bmN0aW9uSW1wbGVtZW50YXRpb25OYW1lIC4gIihleGVjKSk7XG4iKTsK
KyAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZSgke2pzQ2xhc3NOYW1lfTo6IiAuICRmdW5jdGlvbkltcGxlbWVudGF0aW9uTmFt
ZSAuICIoZXhlYykpO1xuIik7CiAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAg
ICAgICAgICAgR2VuZXJhdGVBcmd1bWVudHNDb3VudENoZWNrKFxAaW1wbENvbnRlbnQsICRmdW5j
dGlvbiwgJGludGVyZmFjZSk7CiAKQEAgLTI0MDksMjYgKzI0MzIsMjYgQEAgc3ViIEdlbmVyYXRl
SW1wbGVtZW50YXRpb24KICAgICAgICAgICAgICAgICAgICAgfQogCiAgICAgICAgICAgICAgICAg
ICAgIG15ICRudW1QYXJhbWV0ZXJzID0gQHskZnVuY3Rpb24tPnBhcmFtZXRlcnN9OwotICAgICAg
ICAgICAgICAgICAgICBteSAoJGZ1bmN0aW9uU3RyaW5nLCAkZHVtbXkpID0gR2VuZXJhdGVQYXJh
bWV0ZXJzQ2hlY2soXEBpbXBsQ29udGVudCwgJGZ1bmN0aW9uLCAkaW50ZXJmYWNlLCAkbnVtUGFy
YW1ldGVycywgJGludGVyZmFjZU5hbWUsICRmdW5jdGlvbkltcGxlbWVudGF0aW9uTmFtZSwgJHN2
Z1Byb3BlcnR5VHlwZSwgJHN2Z1Byb3BlcnR5T3JMaXN0UHJvcGVydHlUeXBlLCAkc3ZnTGlzdFBy
b3BlcnR5VHlwZSk7Ci0gICAgICAgICAgICAgICAgICAgIEdlbmVyYXRlSW1wbGVtZW50YXRpb25G
dW5jdGlvbkNhbGwoJGZ1bmN0aW9uLCAkZnVuY3Rpb25TdHJpbmcsICIgICAgIiwgJHN2Z1Byb3Bl
cnR5VHlwZSwgJGludGVyZmFjZU5hbWUpOworICAgICAgICAgICAgICAgICAgICBteSAoJGZ1bmN0
aW9uU3RyaW5nLCAkZHVtbXkpID0gR2VuZXJhdGVQYXJhbWV0ZXJzQ2hlY2soXEBpbXBsQ29udGVu
dCwgJGZ1bmN0aW9uLCAkaW50ZXJmYWNlLCAkbnVtUGFyYW1ldGVycywgJGZ1bmN0aW9uSW1wbGVt
ZW50YXRpb25OYW1lLCAkc3ZnUHJvcGVydHlUeXBlLCAkc3ZnUHJvcGVydHlPckxpc3RQcm9wZXJ0
eVR5cGUsICRzdmdMaXN0UHJvcGVydHlUeXBlKTsKKyAgICAgICAgICAgICAgICAgICAgR2VuZXJh
dGVJbXBsZW1lbnRhdGlvbkZ1bmN0aW9uQ2FsbCgkZnVuY3Rpb24sICRmdW5jdGlvblN0cmluZywg
IiAgICAiLCAkc3ZnUHJvcGVydHlUeXBlLCAkaW50ZXJmYWNlKTsKICAgICAgICAgICAgICAgICB9
CiAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgIGlmICgkaW50ZXJmYWNlTmFt
ZSBlcSAiRE9NV2luZG93IikgewotICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVu
dCwgIiAgICAkY2xhc3NOYW1lKiBjYXN0ZWRUaGlzID0gdG9KU0RPTVdpbmRvdyhleGVjLT5ob3N0
VGhpc1ZhbHVlKCkudG9UaGlzT2JqZWN0KGV4ZWMpKTtcbiIpOworICAgICAgICAgICAgICAgICAg
ICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAkanNDbGFzc05hbWUqIGNhc3RlZFRoaXMgPSB0b0pT
RE9NV2luZG93KGV4ZWMtPmhvc3RUaGlzVmFsdWUoKS50b1RoaXNPYmplY3QoZXhlYykpO1xuIik7
CiAgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIGlmICghY2FzdGVk
VGhpcylcbiIpOwogICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAg
ICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYyk7XG4iKTsKICAgICAgICAgICAgICAgICB9
IGVsc2lmICgkaW50ZXJmYWNlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiSXNXb3JrZXJDb250ZXh0
In0pIHsKLSAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgJGNsYXNz
TmFtZSogY2FzdGVkVGhpcyA9IHRvJHtjbGFzc05hbWV9KGV4ZWMtPmhvc3RUaGlzVmFsdWUoKS50
b1RoaXNPYmplY3QoZXhlYykpO1xuIik7CisgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxD
b250ZW50LCAiICAgICRqc0NsYXNzTmFtZSogY2FzdGVkVGhpcyA9IHRvJHtqc0NsYXNzTmFtZX0o
ZXhlYy0+aG9zdFRoaXNWYWx1ZSgpLnRvVGhpc09iamVjdChleGVjKSk7XG4iKTsKICAgICAgICAg
ICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgaWYgKCFjYXN0ZWRUaGlzKVxuIik7
CiAgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICAgICByZXR1cm4g
dGhyb3dWTVR5cGVFcnJvcihleGVjKTtcbiIpOwogICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAg
ICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIEpTVmFsdWUgdGhpc1Zh
bHVlID0gZXhlYy0+aG9zdFRoaXNWYWx1ZSgpO1xuIik7Ci0gICAgICAgICAgICAgICAgICAgIHB1
c2goQGltcGxDb250ZW50LCAiICAgIGlmICghdGhpc1ZhbHVlLmluaGVyaXRzKCYke2NsYXNzTmFt
ZX06OnNfaW5mbykpXG4iKTsKKyAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQs
ICIgICAgaWYgKCF0aGlzVmFsdWUuaW5oZXJpdHMoJiR7anNDbGFzc05hbWV9OjpzX2luZm8pKVxu
Iik7CiAgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICAgICByZXR1
cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjKTtcbiIpOwotICAgICAgICAgICAgICAgICAgICBwdXNo
KEBpbXBsQ29udGVudCwgIiAgICAkY2xhc3NOYW1lKiBjYXN0ZWRUaGlzID0ganNDYXN0PCRjbGFz
c05hbWUqPihhc09iamVjdCh0aGlzVmFsdWUpKTtcbiIpOworICAgICAgICAgICAgICAgICAgICBw
dXNoKEBpbXBsQ29udGVudCwgIiAgICAkanNDbGFzc05hbWUqIGNhc3RlZFRoaXMgPSBqc0Nhc3Q8
JGpzQ2xhc3NOYW1lKj4oYXNPYmplY3QodGhpc1ZhbHVlKSk7XG4iKTsKICAgICAgICAgICAgICAg
ICB9CiAKLSAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBBU1NFUlRfR0Nf
T0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsICYke2NsYXNzTmFtZX06OnNfaW5mbyk7XG4iKTsK
KyAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBBU1NFUlRfR0NfT0JKRUNU
X0lOSEVSSVRTKGNhc3RlZFRoaXMsICYke2pzQ2xhc3NOYW1lfTo6c19pbmZvKTtcbiIpOwogCiAg
ICAgICAgICAgICAgICAgaWYgKCRpbnRlcmZhY2UtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJDaGVj
a1NlY3VyaXR5In0gYW5kCiAgICAgICAgICAgICAgICAgICAgICEkZnVuY3Rpb24tPnNpZ25hdHVy
ZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkRvTm90Q2hlY2tTZWN1cml0eSJ9KSB7CkBAIC0yNDU5
LDkgKzI0ODIsOSBAQCBzdWIgR2VuZXJhdGVJbXBsZW1lbnRhdGlvbgogCiAgICAgICAgICAgICAg
ICAgICAgICMgRm9yIGNvbXBhdGliaWxpdHkgd2l0aCBsZWdhY3kgY29udGVudCwgdGhlIEV2ZW50
TGlzdGVuZXIgY2FsbHMgYXJlIGdlbmVyYXRlZCB3aXRob3V0IEdlbmVyYXRlQXJndW1lbnRzQ291
bnRDaGVjay4KICAgICAgICAgICAgICAgICAgICAgaWYgKCRmdW5jdGlvbi0+c2lnbmF0dXJlLT5u
YW1lIGVxICJhZGRFdmVudExpc3RlbmVyIikgewotICAgICAgICAgICAgICAgICAgICAgICAgcHVz
aChAaW1wbENvbnRlbnQsIEdlbmVyYXRlRXZlbnRMaXN0ZW5lckNhbGwoJGNsYXNzTmFtZSwgImFk
ZCIpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCBHZW5lcmF0
ZUV2ZW50TGlzdGVuZXJDYWxsKCRqc0NsYXNzTmFtZSwgImFkZCIpKTsKICAgICAgICAgICAgICAg
ICAgICAgfSBlbHNpZiAoJGZ1bmN0aW9uLT5zaWduYXR1cmUtPm5hbWUgZXEgInJlbW92ZUV2ZW50
TGlzdGVuZXIiKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwg
R2VuZXJhdGVFdmVudExpc3RlbmVyQ2FsbCgkY2xhc3NOYW1lLCAicmVtb3ZlIikpOworICAgICAg
ICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsIEdlbmVyYXRlRXZlbnRMaXN0ZW5l
ckNhbGwoJGpzQ2xhc3NOYW1lLCAicmVtb3ZlIikpOwogICAgICAgICAgICAgICAgICAgICB9IGVs
c2UgewogICAgICAgICAgICAgICAgICAgICAgICAgR2VuZXJhdGVBcmd1bWVudHNDb3VudENoZWNr
KFxAaW1wbENvbnRlbnQsICRmdW5jdGlvbiwgJGludGVyZmFjZSk7CiAKQEAgLTI0NzYsOCArMjQ5
OSw4IEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uCiAgICAgICAgICAgICAgICAgICAgICAg
ICB9CiAKICAgICAgICAgICAgICAgICAgICAgICAgIG15ICRudW1QYXJhbWV0ZXJzID0gQHskZnVu
Y3Rpb24tPnBhcmFtZXRlcnN9OwotICAgICAgICAgICAgICAgICAgICAgICAgbXkgKCRmdW5jdGlv
blN0cmluZywgJGR1bW15KSA9IEdlbmVyYXRlUGFyYW1ldGVyc0NoZWNrKFxAaW1wbENvbnRlbnQs
ICRmdW5jdGlvbiwgJGludGVyZmFjZSwgJG51bVBhcmFtZXRlcnMsICRpbnRlcmZhY2VOYW1lLCAk
ZnVuY3Rpb25JbXBsZW1lbnRhdGlvbk5hbWUsICRzdmdQcm9wZXJ0eVR5cGUsICRzdmdQcm9wZXJ0
eU9yTGlzdFByb3BlcnR5VHlwZSwgJHN2Z0xpc3RQcm9wZXJ0eVR5cGUpOwotICAgICAgICAgICAg
ICAgICAgICAgICAgR2VuZXJhdGVJbXBsZW1lbnRhdGlvbkZ1bmN0aW9uQ2FsbCgkZnVuY3Rpb24s
ICRmdW5jdGlvblN0cmluZywgIiAgICAiLCAkc3ZnUHJvcGVydHlUeXBlLCAkaW50ZXJmYWNlTmFt
ZSk7CisgICAgICAgICAgICAgICAgICAgICAgICBteSAoJGZ1bmN0aW9uU3RyaW5nLCAkZHVtbXkp
ID0gR2VuZXJhdGVQYXJhbWV0ZXJzQ2hlY2soXEBpbXBsQ29udGVudCwgJGZ1bmN0aW9uLCAkaW50
ZXJmYWNlLCAkbnVtUGFyYW1ldGVycywgJGZ1bmN0aW9uSW1wbGVtZW50YXRpb25OYW1lLCAkc3Zn
UHJvcGVydHlUeXBlLCAkc3ZnUHJvcGVydHlPckxpc3RQcm9wZXJ0eVR5cGUsICRzdmdMaXN0UHJv
cGVydHlUeXBlKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIEdlbmVyYXRlSW1wbGVtZW50YXRp
b25GdW5jdGlvbkNhbGwoJGZ1bmN0aW9uLCAkZnVuY3Rpb25TdHJpbmcsICIgICAgIiwgJHN2Z1By
b3BlcnR5VHlwZSwgJGludGVyZmFjZSk7CiAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAg
ICAgICAgICB9CiAgICAgICAgICAgICB9CkBAIC0yNDg2LDcgKzI1MDksNyBAQCBzdWIgR2VuZXJh
dGVJbXBsZW1lbnRhdGlvbgogCiAgICAgICAgICAgICBpZiAoISRpc0N1c3RvbSAmJiAkaXNPdmVy
bG9hZGVkICYmICRmdW5jdGlvbi0+e292ZXJsb2FkSW5kZXh9ID09IEB7JGZ1bmN0aW9uLT57b3Zl
cmxvYWRzfX0pIHsKICAgICAgICAgICAgICAgICAjIEdlbmVyYXRlIGEgZnVuY3Rpb24gZGlzcGF0
Y2hpbmcgY2FsbCB0byB0aGUgcmVzdCBvZiB0aGUgb3ZlcmxvYWRzLgotICAgICAgICAgICAgICAg
IEdlbmVyYXRlT3ZlcmxvYWRlZEZ1bmN0aW9uKCRmdW5jdGlvbiwgJGludGVyZmFjZSwgJGludGVy
ZmFjZU5hbWUpOworICAgICAgICAgICAgICAgIEdlbmVyYXRlT3ZlcmxvYWRlZEZ1bmN0aW9uKCRm
dW5jdGlvbiwgJGludGVyZmFjZSk7CiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIHB1c2go
QGltcGxDb250ZW50LCAiI2VuZGlmXG5cbiIpIGlmICRjb25kaXRpb25hbDsKQEAgLTI0OTQsMTQg
KzI1MTcsMTQgQEAgc3ViIEdlbmVyYXRlSW1wbGVtZW50YXRpb24KICAgICB9CiAKICAgICBpZiAo
JG5lZWRzTWFya0NoaWxkcmVuICYmICEkaW50ZXJmYWNlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsi
SlNDdXN0b21NYXJrRnVuY3Rpb24ifSkgewotICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgInZv
aWQgJHtjbGFzc05hbWV9Ojp2aXNpdENoaWxkcmVuKEpTQ2VsbCogY2VsbCwgU2xvdFZpc2l0b3Im
IHZpc2l0b3IpXG4iKTsKKyAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJ2b2lkICR7anNDbGFz
c05hbWV9Ojp2aXNpdENoaWxkcmVuKEpTQ2VsbCogY2VsbCwgU2xvdFZpc2l0b3ImIHZpc2l0b3Ip
XG4iKTsKICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJ7XG4iKTsKLSAgICAgICAgcHVzaChA
aW1wbENvbnRlbnQsICIgICAgJHtjbGFzc05hbWV9KiB0aGlzT2JqZWN0ID0ganNDYXN0PCR7Y2xh
c3NOYW1lfSo+KGNlbGwpO1xuIik7CisgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICR7
anNDbGFzc05hbWV9KiB0aGlzT2JqZWN0ID0ganNDYXN0PCR7anNDbGFzc05hbWV9Kj4oY2VsbCk7
XG4iKTsKICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgQVNTRVJUX0dDX09CSkVDVF9J
TkhFUklUUyh0aGlzT2JqZWN0LCAmc19pbmZvKTtcbiIpOwogICAgICAgICBwdXNoKEBpbXBsQ29u
dGVudCwgIiAgICBDT01QSUxFX0FTU0VSVChTdHJ1Y3R1cmVGbGFncyAmIE92ZXJyaWRlc1Zpc2l0
Q2hpbGRyZW4sIE92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW5XaXRob3V0U2V0dGluZ0ZsYWcpO1xuIik7
CiAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIEFTU0VSVCh0aGlzT2JqZWN0LT5zdHJ1
Y3R1cmUoKS0+dHlwZUluZm8oKS5vdmVycmlkZXNWaXNpdENoaWxkcmVuKCkpO1xuIik7CiAgICAg
ICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIEJhc2U6OnZpc2l0Q2hpbGRyZW4odGhpc09iamVj
dCwgdmlzaXRvcik7XG4iKTsKLSAgICAgICAgaWYgKCRpbnRlcmZhY2UtPmV4dGVuZGVkQXR0cmli
dXRlcy0+eyJFdmVudFRhcmdldCJ9IHx8ICRpbnRlcmZhY2UtPm5hbWUgZXEgIkV2ZW50VGFyZ2V0
IikgeworICAgICAgICBpZiAoJGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkV2ZW50
VGFyZ2V0In0gfHwgJGludGVyZmFjZU5hbWUgZXEgIkV2ZW50VGFyZ2V0IikgewogICAgICAgICAg
ICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgdGhpc09iamVjdC0+aW1wbCgpLT52aXNpdEpTRXZl
bnRMaXN0ZW5lcnModmlzaXRvcik7XG4iKTsKICAgICAgICAgfQogICAgICAgICBpZiAoJG51bUNh
Y2hlZEF0dHJpYnV0ZXMgPiAwKSB7CkBAIC0yNTQ3LDE1ICsyNTcwLDE1IEBAIHN1YiBHZW5lcmF0
ZUltcGxlbWVudGF0aW9uCiAgICAgfQogCiAgICAgaWYgKCRpbnRlcmZhY2UtPmV4dGVuZGVkQXR0
cmlidXRlcy0+eyJJbmRleGVkR2V0dGVyIn0pIHsKLSAgICAgICAgcHVzaChAaW1wbENvbnRlbnQs
ICJcbkpTVmFsdWUgJHtjbGFzc05hbWV9OjppbmRleEdldHRlcihFeGVjU3RhdGUqIGV4ZWMsIEpT
VmFsdWUgc2xvdEJhc2UsIHVuc2lnbmVkIGluZGV4KVxuIik7CisgICAgICAgIHB1c2goQGltcGxD
b250ZW50LCAiXG5KU1ZhbHVlICR7anNDbGFzc05hbWV9OjppbmRleEdldHRlcihFeGVjU3RhdGUq
IGV4ZWMsIEpTVmFsdWUgc2xvdEJhc2UsIHVuc2lnbmVkIGluZGV4KVxuIik7CiAgICAgICAgIHB1
c2goQGltcGxDb250ZW50LCAie1xuIik7Ci0gICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAg
ICR7Y2xhc3NOYW1lfSogdGhpc09iaiA9IGpzQ2FzdDwkY2xhc3NOYW1lKj4oYXNPYmplY3Qoc2xv
dEJhc2UpKTtcbiIpOworICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAke2pzQ2xhc3NO
YW1lfSogdGhpc09iaiA9IGpzQ2FzdDwkanNDbGFzc05hbWUqPihhc09iamVjdChzbG90QmFzZSkp
O1xuIik7CiAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIEFTU0VSVF9HQ19PQkpFQ1Rf
SU5IRVJJVFModGhpc09iaiwgJnNfaW5mbyk7XG4iKTsKICAgICAgICAgaWYgKEluZGV4R2V0dGVy
UmV0dXJuc1N0cmluZ3MoJGludGVyZmFjZU5hbWUpKSB7CiAgICAgICAgICAgICAkaW1wbEluY2x1
ZGVzeyJLVVJMLmgifSA9IDE7CiAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBy
ZXR1cm4ganNTdHJpbmdPclVuZGVmaW5lZChleGVjLCB0aGlzT2JqLT5pbXBsKCktPml0ZW0oaW5k
ZXgpKTtcbiIpOwogICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgcHVzaChAaW1wbENvbnRl
bnQsICIgICAgcmV0dXJuIHRvSlMoZXhlYywgdGhpc09iai0+Z2xvYmFsT2JqZWN0KCksIHN0YXRp
Y19jYXN0PCRpbnRlcmZhY2VOYW1lKj4odGhpc09iai0+aW1wbCgpKS0+aXRlbShpbmRleCkpO1xu
Iik7CisgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICByZXR1cm4gdG9KUyhleGVj
LCB0aGlzT2JqLT5nbG9iYWxPYmplY3QoKSwgc3RhdGljX2Nhc3Q8JGltcGxDbGFzc05hbWUqPih0
aGlzT2JqLT5pbXBsKCkpLT5pdGVtKGluZGV4KSk7XG4iKTsKICAgICAgICAgfQogICAgICAgICBw
dXNoKEBpbXBsQ29udGVudCwgIn1cblxuIik7CiAgICAgICAgIGlmICgkaW50ZXJmYWNlTmFtZSA9
fiAvXkhUTUxcdypDb2xsZWN0aW9uJC8gb3IgJGludGVyZmFjZU5hbWUgZXEgIlJhZGlvTm9kZUxp
c3QiKSB7CkBAIC0yNTY1LDEwICsyNTg4LDEwIEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9u
CiAgICAgfQogCiAgICAgaWYgKCRpbnRlcmZhY2UtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJOdW1l
cmljSW5kZXhlZEdldHRlciJ9KSB7Ci0gICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiXG5KU1Zh
bHVlICR7Y2xhc3NOYW1lfTo6Z2V0QnlJbmRleChFeGVjU3RhdGUqLCB1bnNpZ25lZCBpbmRleClc
biIpOworICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIlxuSlNWYWx1ZSAke2pzQ2xhc3NOYW1l
fTo6Z2V0QnlJbmRleChFeGVjU3RhdGUqLCB1bnNpZ25lZCBpbmRleClcbiIpOwogICAgICAgICBw
dXNoKEBpbXBsQ29udGVudCwgIntcbiIpOwogICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAg
ICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRoaXMsICZzX2luZm8pO1xuIik7Ci0gICAgICAg
IHB1c2goQGltcGxDb250ZW50LCAiICAgIGRvdWJsZSByZXN1bHQgPSBzdGF0aWNfY2FzdDwkaW50
ZXJmYWNlTmFtZSo+KGltcGwoKSktPml0ZW0oaW5kZXgpO1xuIik7CisgICAgICAgIHB1c2goQGlt
cGxDb250ZW50LCAiICAgIGRvdWJsZSByZXN1bHQgPSBzdGF0aWNfY2FzdDwkaW1wbENsYXNzTmFt
ZSo+KGltcGwoKSktPml0ZW0oaW5kZXgpO1xuIik7CiAgICAgICAgICMganNOdW1iZXIgY29udmVy
c2lvbiBkb2Vzbid0IHN1cHByZXNzIHNpZ25hbGxpbmcgTmFOcywgc28gZW5mb3JjZSB0aGF0IGhl
cmUuCiAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIGlmIChzdGQ6OmlzbmFuKHJlc3Vs
dCkpXG4iKTsKICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgICAgIHJldHVybiBqc05h
TigpO1xuIik7CkBAIC0yNTgyLDI0ICsyNjA1LDI0IEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0
aW9uCiAKICAgICBpZiAoJGludGVyZmFjZU5hbWUgZXEgIkhUTUxQcm9wZXJ0aWVzQ29sbGVjdGlv
biIgb3IgJGludGVyZmFjZU5hbWUgZXEgIkRPTU5hbWVkRmxvd0NvbGxlY3Rpb24iKSB7CiAgICAg
ICAgIGlmICgkaW50ZXJmYWNlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiTmFtZWRHZXR0ZXIifSkg
ewotICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJib29sICR7Y2xhc3NOYW1lfTo6Y2Fu
R2V0SXRlbXNGb3JOYW1lKEV4ZWNTdGF0ZSosICRpbnRlcmZhY2VOYW1lKiBjb2xsZWN0aW9uLCBQ
cm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKVxuIik7CisgICAgICAgICAgICBwdXNoKEBpbXBsQ29u
dGVudCwgImJvb2wgJHtqc0NsYXNzTmFtZX06OmNhbkdldEl0ZW1zRm9yTmFtZShFeGVjU3RhdGUq
LCAkaW1wbENsYXNzTmFtZSogY29sbGVjdGlvbiwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSlc
biIpOwogICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJ7XG4iKTsKICAgICAgICAgICAg
IHB1c2goQGltcGxDb250ZW50LCAiICAgIHJldHVybiBjb2xsZWN0aW9uLT5oYXNOYW1lZEl0ZW0o
cHJvcGVydHlOYW1lVG9BdG9taWNTdHJpbmcocHJvcGVydHlOYW1lKSk7XG4iKTsKICAgICAgICAg
ICAgIHB1c2goQGltcGxDb250ZW50LCAifVxuXG4iKTsKLSAgICAgICAgICAgIHB1c2goQGltcGxD
b250ZW50LCAiSlNWYWx1ZSAke2NsYXNzTmFtZX06Om5hbWVHZXR0ZXIoRXhlY1N0YXRlKiBleGVj
LCBKU1ZhbHVlIHNsb3RCYXNlLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKVxuIik7CisgICAg
ICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIkpTVmFsdWUgJHtqc0NsYXNzTmFtZX06Om5hbWVH
ZXR0ZXIoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHNsb3RCYXNlLCBQcm9wZXJ0eU5hbWUgcHJv
cGVydHlOYW1lKVxuIik7CiAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIntcbiIpOwot
ICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgJHtjbGFzc05hbWV9KiB0aGlzT2Jq
ID0ganNDYXN0PCRjbGFzc05hbWUqPihhc09iamVjdChzbG90QmFzZSkpO1xuIik7CisgICAgICAg
ICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAke2pzQ2xhc3NOYW1lfSogdGhpc09iaiA9IGpz
Q2FzdDwkanNDbGFzc05hbWUqPihhc09iamVjdChzbG90QmFzZSkpO1xuIik7CiAgICAgICAgICAg
ICBpZiAoJGludGVyZmFjZU5hbWUgZXEgIkhUTUxQcm9wZXJ0aWVzQ29sbGVjdGlvbiIpIHsKLSAg
ICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICByZXR1cm4gdG9KUyhleGVjLCB0
aGlzT2JqLT5nbG9iYWxPYmplY3QoKSwgV1RGOjpnZXRQdHIoc3RhdGljX2Nhc3Q8JGludGVyZmFj
ZU5hbWUqPih0aGlzT2JqLT5pbXBsKCkpLT5wcm9wZXJ0eU5vZGVMaXN0KHByb3BlcnR5TmFtZVRv
QXRvbWljU3RyaW5nKHByb3BlcnR5TmFtZSkpKSk7XG4iKTsKKyAgICAgICAgICAgICAgICBwdXNo
KEBpbXBsQ29udGVudCwgIiAgICByZXR1cm4gdG9KUyhleGVjLCB0aGlzT2JqLT5nbG9iYWxPYmpl
Y3QoKSwgV1RGOjpnZXRQdHIoc3RhdGljX2Nhc3Q8JGltcGxDbGFzc05hbWUqPih0aGlzT2JqLT5p
bXBsKCkpLT5wcm9wZXJ0eU5vZGVMaXN0KHByb3BlcnR5TmFtZVRvQXRvbWljU3RyaW5nKHByb3Bl
cnR5TmFtZSkpKSk7XG4iKTsKICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAg
cHVzaChAaW1wbENvbnRlbnQsICIgICAgcmV0dXJuIHRvSlMoZXhlYywgdGhpc09iai0+Z2xvYmFs
T2JqZWN0KCksIHN0YXRpY19jYXN0PCRpbnRlcmZhY2VOYW1lKj4odGhpc09iai0+aW1wbCgpKS0+
bmFtZWRJdGVtKHByb3BlcnR5TmFtZVRvQXRvbWljU3RyaW5nKHByb3BlcnR5TmFtZSkpKTtcbiIp
OworICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIHJldHVybiB0b0pTKGV4
ZWMsIHRoaXNPYmotPmdsb2JhbE9iamVjdCgpLCBzdGF0aWNfY2FzdDwkaW1wbENsYXNzTmFtZSo+
KHRoaXNPYmotPmltcGwoKSktPm5hbWVkSXRlbShwcm9wZXJ0eU5hbWVUb0F0b21pY1N0cmluZyhw
cm9wZXJ0eU5hbWUpKSk7XG4iKTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIHB1c2goQGlt
cGxDb250ZW50LCAifVxuXG4iKTsKICAgICAgICAgfQogICAgIH0KIAogICAgIGlmICgoISRoYXNQ
YXJlbnQgJiYgIUdldEN1c3RvbUlzUmVhY2hhYmxlKCRpbnRlcmZhY2UpKXx8IEdldEdlbmVyYXRl
SXNSZWFjaGFibGUoJGludGVyZmFjZSkgfHwgJGNvZGVHZW5lcmF0b3ItPkluaGVyaXRzRXh0ZW5k
ZWRBdHRyaWJ1dGUoJGludGVyZmFjZSwgIkFjdGl2ZURPTU9iamVjdCIpKSB7Ci0gICAgICAgIHB1
c2goQGltcGxDb250ZW50LCAic3RhdGljIGlubGluZSBib29sIGlzT2JzZXJ2YWJsZShKUyR7aW50
ZXJmYWNlTmFtZX0qIGpzJHtpbnRlcmZhY2VOYW1lfSlcbiIpOworICAgICAgICBwdXNoKEBpbXBs
Q29udGVudCwgInN0YXRpYyBpbmxpbmUgYm9vbCBpc09ic2VydmFibGUoJHtqc0NsYXNzTmFtZX0q
IGpzJHtpbnRlcmZhY2VOYW1lfSlcbiIpOwogICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIntc
biIpOwogICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBpZiAoanMke2ludGVyZmFjZU5h
bWV9LT5oYXNDdXN0b21Qcm9wZXJ0aWVzKCkpXG4iKTsKICAgICAgICAgcHVzaChAaW1wbENvbnRl
bnQsICIgICAgICAgIHJldHVybiB0cnVlO1xuIik7CkBAIC0yNjEwLDkgKzI2MzMsOSBAQCBzdWIg
R2VuZXJhdGVJbXBsZW1lbnRhdGlvbgogICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBy
ZXR1cm4gZmFsc2U7XG4iKTsKICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJ9XG5cbiIpOwog
Ci0gICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiYm9vbCBKUyR7aW50ZXJmYWNlTmFtZX1Pd25l
cjo6aXNSZWFjaGFibGVGcm9tT3BhcXVlUm9vdHMoSlNDOjpIYW5kbGU8SlNDOjpVbmtub3duPiBo
YW5kbGUsIHZvaWQqLCBTbG90VmlzaXRvciYgdmlzaXRvcilcbiIpOworICAgICAgICBwdXNoKEBp
bXBsQ29udGVudCwgImJvb2wgJHtqc0NsYXNzTmFtZX1Pd25lcjo6aXNSZWFjaGFibGVGcm9tT3Bh
cXVlUm9vdHMoSlNDOjpIYW5kbGU8SlNDOjpVbmtub3duPiBoYW5kbGUsIHZvaWQqLCBTbG90Vmlz
aXRvciYgdmlzaXRvcilcbiIpOwogICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIntcbiIpOwot
ICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBKUyR7aW50ZXJmYWNlTmFtZX0qIGpzJHtp
bnRlcmZhY2VOYW1lfSA9IGpzQ2FzdDxKUyR7aW50ZXJmYWNlTmFtZX0qPihoYW5kbGUuZ2V0KCku
YXNDZWxsKCkpO1xuIik7CisgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICR7anNDbGFz
c05hbWV9KiBqcyR7aW50ZXJmYWNlTmFtZX0gPSBqc0Nhc3Q8JHtqc0NsYXNzTmFtZX0qPihoYW5k
bGUuZ2V0KCkuYXNDZWxsKCkpO1xuIik7CiAgICAgICAgICMgQWxsIEFjdGl2ZURPTU9iamVjdHMg
aW1wbGVtZW50IGhhc1BlbmRpbmdBY3Rpdml0eSgpLCBidXQgbm90IGFsbCBvZiB0aGVtCiAgICAg
ICAgICMgaW5jcmVtZW50IHRoZWlyIEMrKyByZWZlcmVuY2UgY291bnRzIHdoZW4gaGFzUGVuZGlu
Z0FjdGl2aXR5KCkgYmVjb21lcwogICAgICAgICAjIHRydWUuIEFzIGEgcmVzdWx0LCBBY3RpdmVE
T01PYmplY3RzIGNhbiBiZSBwcmVtYXR1cmVseSBkZXN0cm95ZWQgYmVmb3JlCkBAIC0yNjc5LDkg
KzI3MDIsOSBAQCBzdWIgR2VuZXJhdGVJbXBsZW1lbnRhdGlvbgogICAgICAgICAgR2V0R2VuZXJh
dGVJc1JlYWNoYWJsZSgkaW50ZXJmYWNlKSB8fAogICAgICAgICAgR2V0Q3VzdG9tSXNSZWFjaGFi
bGUoJGludGVyZmFjZSkgfHwKICAgICAgICAgICRjb2RlR2VuZXJhdG9yLT5Jbmhlcml0c0V4dGVu
ZGVkQXR0cmlidXRlKCRpbnRlcmZhY2UsICJBY3RpdmVET01PYmplY3QiKSkpIHsKLSAgICAgICAg
cHVzaChAaW1wbENvbnRlbnQsICJ2b2lkIEpTJHtpbnRlcmZhY2VOYW1lfU93bmVyOjpmaW5hbGl6
ZShKU0M6OkhhbmRsZTxKU0M6OlVua25vd24+IGhhbmRsZSwgdm9pZCogY29udGV4dClcbiIpOwor
ICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgInZvaWQgJHtqc0NsYXNzTmFtZX1Pd25lcjo6Zmlu
YWxpemUoSlNDOjpIYW5kbGU8SlNDOjpVbmtub3duPiBoYW5kbGUsIHZvaWQqIGNvbnRleHQpXG4i
KTsKICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJ7XG4iKTsKLSAgICAgICAgcHVzaChAaW1w
bENvbnRlbnQsICIgICAgSlMke2ludGVyZmFjZU5hbWV9KiBqcyR7aW50ZXJmYWNlTmFtZX0gPSBq
c0Nhc3Q8SlMke2ludGVyZmFjZU5hbWV9Kj4oaGFuZGxlLmdldCgpLmFzQ2VsbCgpKTtcbiIpOwor
ICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAke2pzQ2xhc3NOYW1lfSoganMke2ludGVy
ZmFjZU5hbWV9ID0ganNDYXN0PCR7anNDbGFzc05hbWV9Kj4oaGFuZGxlLmdldCgpLmFzQ2VsbCgp
KTtcbiIpOwogICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBET01XcmFwcGVyV29ybGQq
IHdvcmxkID0gc3RhdGljX2Nhc3Q8RE9NV3JhcHBlcldvcmxkKj4oY29udGV4dCk7XG4iKTsKICAg
ICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgdW5jYWNoZVdyYXBwZXIod29ybGQsIGpzJHtp
bnRlcmZhY2VOYW1lfS0+aW1wbCgpLCBqcyR7aW50ZXJmYWNlTmFtZX0pO1xuIik7CiAgICAgICAg
IHB1c2goQGltcGxDb250ZW50LCAiICAgIGpzJHtpbnRlcmZhY2VOYW1lfS0+cmVsZWFzZUltcGwo
KTtcbiIpOwpAQCAtMjcxMiw5ICsyNzM1LDkgQEAgRU5ECiBFTkQKIAogICAgICAgICBpZiAoJHN2
Z1Byb3BlcnR5VHlwZSkgewotICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgaWYg
KEpTVmFsdWUgcmVzdWx0ID0gZ2V0RXhpc3RpbmdXcmFwcGVyPCRjbGFzc05hbWUsICRpbXBsVHlw
ZT4oZXhlYywgaW1wbCkpIHJldHVybiByZXN1bHQ7XG4iKTsKKyAgICAgICAgICAgIHB1c2goQGlt
cGxDb250ZW50LCAiICAgIGlmIChKU1ZhbHVlIHJlc3VsdCA9IGdldEV4aXN0aW5nV3JhcHBlcjwk
anNDbGFzc05hbWUsICRpbXBsVHlwZT4oZXhlYywgaW1wbCkpIHJldHVybiByZXN1bHQ7XG4iKTsK
ICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIGlm
IChKU1ZhbHVlIHJlc3VsdCA9IGdldEV4aXN0aW5nV3JhcHBlcjwkY2xhc3NOYW1lPihleGVjLCBp
bXBsKSkgcmV0dXJuIHJlc3VsdDtcbiIpOworICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQs
ICIgICAgaWYgKEpTVmFsdWUgcmVzdWx0ID0gZ2V0RXhpc3RpbmdXcmFwcGVyPCRqc0NsYXNzTmFt
ZT4oZXhlYywgaW1wbCkpIHJldHVybiByZXN1bHQ7XG4iKTsKICAgICAgICAgfQogICAgICAgICBw
dXNoKEBpbXBsQ29udGVudCwgPDxFTkQpIGlmICR2dGFibGVOYW1lR251OwogCkBAIC0yNzUxLDE4
ICsyNzc0LDE4IEBAIEVORAogRU5ECiAKICAgICAgICAgaWYgKCRzdmdQcm9wZXJ0eVR5cGUpIHsK
LSAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIHJldHVybiBjcmVhdGVOZXdXcmFw
cGVyPCRjbGFzc05hbWUsICRpbXBsVHlwZT4oZXhlYywgZ2xvYmFsT2JqZWN0LCBpbXBsKTtcbiIp
OworICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgcmV0dXJuIGNyZWF0ZU5ld1dy
YXBwZXI8JGpzQ2xhc3NOYW1lLCAkaW1wbFR5cGU+KGV4ZWMsIGdsb2JhbE9iamVjdCwgaW1wbCk7
XG4iKTsKICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAi
ICAgIHJldHVybiBjcmVhdGVOZXdXcmFwcGVyPCRjbGFzc05hbWU+KGV4ZWMsIGdsb2JhbE9iamVj
dCwgaW1wbCk7XG4iKTsKKyAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIHJldHVy
biBjcmVhdGVOZXdXcmFwcGVyPCRqc0NsYXNzTmFtZT4oZXhlYywgZ2xvYmFsT2JqZWN0LCBpbXBs
KTtcbiIpOwogICAgICAgICB9CiAKICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJ9XG5cbiIp
OwogICAgIH0KIAogICAgIGlmICgoISRoYXNQYXJlbnQgb3IgJGludGVyZmFjZS0+ZXh0ZW5kZWRB
dHRyaWJ1dGVzLT57IkpTR2VuZXJhdGVUb05hdGl2ZU9iamVjdCJ9KSBhbmQgISRpbnRlcmZhY2Ut
PmV4dGVuZGVkQXR0cmlidXRlcy0+eyJKU0N1c3RvbVRvTmF0aXZlT2JqZWN0In0pIHsKLSAgICAg
ICAgcHVzaChAaW1wbENvbnRlbnQsICIkaW1wbFR5cGUqIHRvJHtpbnRlcmZhY2VOYW1lfShKU0M6
OkpTVmFsdWUgdmFsdWUpXG4iKTsKKyAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIkaW1wbFR5
cGUqIHRvJHtpbXBsQ2xhc3NOYW1lfShKU0M6OkpTVmFsdWUgdmFsdWUpXG4iKTsKICAgICAgICAg
cHVzaChAaW1wbENvbnRlbnQsICJ7XG4iKTsKLSAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIg
ICAgcmV0dXJuIHZhbHVlLmluaGVyaXRzKCYke2NsYXNzTmFtZX06OnNfaW5mbykgPyBqc0Nhc3Q8
JGNsYXNzTmFtZSo+KGFzT2JqZWN0KHZhbHVlKSktPmltcGwoKSA6IDAiKTsKKyAgICAgICAgcHVz
aChAaW1wbENvbnRlbnQsICIgICAgcmV0dXJuIHZhbHVlLmluaGVyaXRzKCYke2pzQ2xhc3NOYW1l
fTo6c19pbmZvKSA/IGpzQ2FzdDwkanNDbGFzc05hbWUqPihhc09iamVjdCh2YWx1ZSkpLT5pbXBs
KCkgOiAwIik7CiAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiO1xufVxuIik7CiAgICAgfQog
CkBAIC0yODI2LDEyICsyODQ5LDEzIEBAIHN1YiBHZW5lcmF0ZVBhcmFtZXRlcnNDaGVjawogICAg
IG15ICRmdW5jdGlvbiA9IHNoaWZ0OwogICAgIG15ICRpbnRlcmZhY2UgPSBzaGlmdDsKICAgICBt
eSAkbnVtUGFyYW1ldGVycyA9IHNoaWZ0OwotICAgIG15ICRpbnRlcmZhY2VOYW1lID0gc2hpZnQ7
CiAgICAgbXkgJGZ1bmN0aW9uSW1wbGVtZW50YXRpb25OYW1lID0gc2hpZnQ7CiAgICAgbXkgJHN2
Z1Byb3BlcnR5VHlwZSA9IHNoaWZ0OwogICAgIG15ICRzdmdQcm9wZXJ0eU9yTGlzdFByb3BlcnR5
VHlwZSA9IHNoaWZ0OwogICAgIG15ICRzdmdMaXN0UHJvcGVydHlUeXBlID0gc2hpZnQ7CiAKKyAg
ICBteSAkaW50ZXJmYWNlTmFtZSA9ICRpbnRlcmZhY2UtPm5hbWU7CisgICAgbXkgJGltcGxDbGFz
c05hbWUgPSBHZXRJbXBsQ2xhc3NOYW1lKCRpbnRlcmZhY2UpOwogICAgIG15ICRhcmdzSW5kZXgg
PSAwOwogICAgIG15ICRoYXNPcHRpb25hbEFyZ3VtZW50cyA9IDA7CiAKQEAgLTI4NDMsNyArMjg2
Nyw3IEBAIHN1YiBHZW5lcmF0ZVBhcmFtZXRlcnNDaGVjawogICAgICAgICB1bnNoaWZ0KEBhcmd1
bWVudHMsICJpbXBsIikgaWYgISRmdW5jdGlvbi0+aXNTdGF0aWM7CiAgICAgICAgICRmdW5jdGlv
bk5hbWUgPSAiJHtpbXBsZW1lbnRlZEJ5fTo6JHtmdW5jdGlvbkltcGxlbWVudGF0aW9uTmFtZX0i
OwogICAgIH0gZWxzaWYgKCRmdW5jdGlvbi0+aXNTdGF0aWMpIHsKLSAgICAgICAgJGZ1bmN0aW9u
TmFtZSA9ICIke2ludGVyZmFjZU5hbWV9Ojoke2Z1bmN0aW9uSW1wbGVtZW50YXRpb25OYW1lfSI7
CisgICAgICAgICRmdW5jdGlvbk5hbWUgPSAiJHtpbXBsQ2xhc3NOYW1lfTo6JHtmdW5jdGlvbklt
cGxlbWVudGF0aW9uTmFtZX0iOwogICAgIH0gZWxzaWYgKCRzdmdQcm9wZXJ0eU9yTGlzdFByb3Bl
cnR5VHlwZSBhbmQgISRzdmdMaXN0UHJvcGVydHlUeXBlKSB7CiAgICAgICAgICRmdW5jdGlvbk5h
bWUgPSAicG9kSW1wbC4ke2Z1bmN0aW9uSW1wbGVtZW50YXRpb25OYW1lfSI7CiAgICAgfSBlbHNl
IHsKQEAgLTI4NzgsNyArMjkwMiw3IEBAIHN1YiBHZW5lcmF0ZVBhcmFtZXRlcnNDaGVjawogICAg
ICAgICAgICAgICAgIHB1c2ggQG9wdGlvbmFsQ2FsbGJhY2tBcmd1bWVudHMsICJlYyI7CiAgICAg
ICAgICAgICB9CiAgICAgICAgICAgICBteSAkZnVuY3Rpb25TdHJpbmcgPSAiJGZ1bmN0aW9uTmFt
ZSgiIC4gam9pbigiLCAiLCBAb3B0aW9uYWxDYWxsYmFja0FyZ3VtZW50cykgLiAiKSI7Ci0gICAg
ICAgICAgICBHZW5lcmF0ZUltcGxlbWVudGF0aW9uRnVuY3Rpb25DYWxsKCRmdW5jdGlvbiwgJGZ1
bmN0aW9uU3RyaW5nLCAiICAgICIgeCAyLCAkc3ZnUHJvcGVydHlUeXBlLCAkaW50ZXJmYWNlTmFt
ZSk7CisgICAgICAgICAgICBHZW5lcmF0ZUltcGxlbWVudGF0aW9uRnVuY3Rpb25DYWxsKCRmdW5j
dGlvbiwgJGZ1bmN0aW9uU3RyaW5nLCAiICAgICIgeCAyLCAkc3ZnUHJvcGVydHlUeXBlLCAkaW50
ZXJmYWNlKTsKICAgICAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICB9XG5cbiIpOwog
ICAgICAgICB9CiAKQEAgLTMwMjcsMzIgKzMwNTEsMzIgQEAgc3ViIEdlbmVyYXRlQ2FsbGJhY2tI
ZWFkZXIKICAgICBteSAkb2JqZWN0ID0gc2hpZnQ7CiAgICAgbXkgJGludGVyZmFjZSA9IHNoaWZ0
OwogCi0gICAgbXkgJGludGVyZmFjZU5hbWUgPSAkaW50ZXJmYWNlLT5uYW1lOwotICAgIG15ICRj
bGFzc05hbWUgPSAiSlMkaW50ZXJmYWNlTmFtZSI7CisgICAgbXkgJGltcGxDbGFzc05hbWUgPSBH
ZXRJbXBsQ2xhc3NOYW1lKCRpbnRlcmZhY2UpOworICAgIG15ICRqc0NsYXNzTmFtZSA9IEdldEpT
Q2xhc3NOYW1lKCRpbnRlcmZhY2UpOwogCiAgICAgIyAtIEFkZCBkZWZhdWx0IGhlYWRlciB0ZW1w
bGF0ZSBhbmQgaGVhZGVyIHByb3RlY3Rpb24KICAgICBwdXNoKEBoZWFkZXJDb250ZW50SGVhZGVy
LCBHZW5lcmF0ZUhlYWRlckNvbnRlbnRIZWFkZXIoJGludGVyZmFjZSkpOwogCiAgICAgJGhlYWRl
ckluY2x1ZGVzeyJBY3RpdmVET01DYWxsYmFjay5oIn0gPSAxOwotICAgICRoZWFkZXJJbmNsdWRl
c3siJGludGVyZmFjZU5hbWUuaCJ9ID0gMTsKKyAgICAkaGVhZGVySW5jbHVkZXN7IiRpbXBsQ2xh
c3NOYW1lLmgifSA9IDE7CiAgICAgJGhlYWRlckluY2x1ZGVzeyJKU0NhbGxiYWNrRGF0YS5oIn0g
PSAxOwogICAgICRoZWFkZXJJbmNsdWRlc3siPHd0Zi9Gb3J3YXJkLmg+In0gPSAxOwogCiAgICAg
cHVzaChAaGVhZGVyQ29udGVudCwgIlxubmFtZXNwYWNlIFdlYkNvcmUge1xuXG4iKTsKLSAgICBw
dXNoKEBoZWFkZXJDb250ZW50LCAiY2xhc3MgJGNsYXNzTmFtZSA6IHB1YmxpYyAkaW50ZXJmYWNl
TmFtZSwgcHVibGljIEFjdGl2ZURPTUNhbGxiYWNrIHtcbiIpOworICAgIHB1c2goQGhlYWRlckNv
bnRlbnQsICJjbGFzcyAkanNDbGFzc05hbWUgOiBwdWJsaWMgJGltcGxDbGFzc05hbWUsIHB1Ymxp
YyBBY3RpdmVET01DYWxsYmFjayB7XG4iKTsKICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAicHVi
bGljOlxuIik7CiAKICAgICAjIFRoZSBzdGF0aWMgY3JlYXRlKCkgbWV0aG9kLgotICAgIHB1c2go
QGhlYWRlckNvbnRlbnQsICIgICAgc3RhdGljIFBhc3NSZWZQdHI8JGNsYXNzTmFtZT4gY3JlYXRl
KEpTQzo6SlNPYmplY3QqIGNhbGxiYWNrLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
KVxuIik7CisgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiAgICBzdGF0aWMgUGFzc1JlZlB0cjwk
anNDbGFzc05hbWU+IGNyZWF0ZShKU0M6OkpTT2JqZWN0KiBjYWxsYmFjaywgSlNET01HbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdClcbiIpOwogICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIgICAg
e1xuIik7Ci0gICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiAgICAgICAgcmV0dXJuIGFkb3B0UmVm
KG5ldyAkY2xhc3NOYW1lKGNhbGxiYWNrLCBnbG9iYWxPYmplY3QpKTtcbiIpOworICAgIHB1c2go
QGhlYWRlckNvbnRlbnQsICIgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgJGpzQ2xhc3NOYW1l
KGNhbGxiYWNrLCBnbG9iYWxPYmplY3QpKTtcbiIpOwogICAgIHB1c2goQGhlYWRlckNvbnRlbnQs
ICIgICAgfVxuXG4iKTsKIAogICAgICMgU2NyaXB0RXhlY3V0aW9uQ29udGV4dAogICAgIHB1c2go
QGhlYWRlckNvbnRlbnQsICIgICAgdmlydHVhbCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3Jp
cHRFeGVjdXRpb25Db250ZXh0KCkgY29uc3QgeyByZXR1cm4gQ29udGV4dERlc3RydWN0aW9uT2Jz
ZXJ2ZXI6OnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsgfVxuXG4iKTsKIAogICAgICMgRGVzdHJ1
Y3RvcgotICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIgICAgdmlydHVhbCB+JGNsYXNzTmFtZSgp
O1xuIik7CisgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiAgICB2aXJ0dWFsIH4kanNDbGFzc05h
bWUoKTtcbiIpOwogCiAgICAgIyBGdW5jdGlvbnMKICAgICBteSAkbnVtRnVuY3Rpb25zID0gQHsk
aW50ZXJmYWNlLT5mdW5jdGlvbnN9OwpAQCAtMzA4MCw3ICszMTA0LDcgQEAgc3ViIEdlbmVyYXRl
Q2FsbGJhY2tIZWFkZXIKICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiXG5wcml2YXRlOlxuIik7
CiAKICAgICAjIENvbnN0cnVjdG9yCi0gICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiAgICAkY2xh
c3NOYW1lKEpTQzo6SlNPYmplY3QqIGNhbGxiYWNrLCBKU0RPTUdsb2JhbE9iamVjdCopO1xuXG4i
KTsKKyAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAgICRqc0NsYXNzTmFtZShKU0M6OkpTT2Jq
ZWN0KiBjYWxsYmFjaywgSlNET01HbG9iYWxPYmplY3QqKTtcblxuIik7CiAKICAgICAjIFByaXZh
dGUgbWVtYmVycwogICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIgICAgSlNDYWxsYmFja0RhdGEq
IG1fZGF0YTtcbiIpOwpAQCAtMzA5Niw4ICszMTIwLDcgQEAgc3ViIEdlbmVyYXRlQ2FsbGJhY2tJ
bXBsZW1lbnRhdGlvbgogewogICAgIG15ICgkb2JqZWN0LCAkaW50ZXJmYWNlKSA9IEBfOwogCi0g
ICAgbXkgJGludGVyZmFjZU5hbWUgPSAkaW50ZXJmYWNlLT5uYW1lOwotICAgIG15ICRjbGFzc05h
bWUgPSAiSlMkaW50ZXJmYWNlTmFtZSI7CisgICAgbXkgJGpzQ2xhc3NOYW1lID0gR2V0SlNDbGFz
c05hbWUoJGludGVyZmFjZSk7CiAKICAgICAjIC0gQWRkIGRlZmF1bHQgaGVhZGVyIHRlbXBsYXRl
CiAgICAgcHVzaChAaW1wbENvbnRlbnRIZWFkZXIsIEdlbmVyYXRlSW1wbGVtZW50YXRpb25Db250
ZW50SGVhZGVyKCRpbnRlcmZhY2UpKTsKQEAgLTMxMTEsMTQgKzMxMzQsMTQgQEAgc3ViIEdlbmVy
YXRlQ2FsbGJhY2tJbXBsZW1lbnRhdGlvbgogICAgIHB1c2goQGltcGxDb250ZW50LCAibmFtZXNw
YWNlIFdlYkNvcmUge1xuXG4iKTsKIAogICAgICMgQ29uc3RydWN0b3IKLSAgICBwdXNoKEBpbXBs
Q29udGVudCwgIiR7Y2xhc3NOYW1lfTo6JHtjbGFzc05hbWV9KEpTT2JqZWN0KiBjYWxsYmFjaywg
SlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdClcbiIpOworICAgIHB1c2goQGltcGxDb250
ZW50LCAiJHtqc0NsYXNzTmFtZX06OiR7anNDbGFzc05hbWV9KEpTT2JqZWN0KiBjYWxsYmFjaywg
SlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdClcbiIpOwogICAgIHB1c2goQGltcGxDb250
ZW50LCAiICAgIDogQWN0aXZlRE9NQ2FsbGJhY2soZ2xvYmFsT2JqZWN0LT5zY3JpcHRFeGVjdXRp
b25Db250ZXh0KCkpXG4iKTsKICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAsIG1fZGF0YShu
ZXcgSlNDYWxsYmFja0RhdGEoY2FsbGJhY2ssIGdsb2JhbE9iamVjdCkpXG4iKTsKICAgICBwdXNo
KEBpbXBsQ29udGVudCwgIntcbiIpOwogICAgIHB1c2goQGltcGxDb250ZW50LCAifVxuXG4iKTsK
IAogICAgICMgRGVzdHJ1Y3RvcgotICAgIHB1c2goQGltcGxDb250ZW50LCAiJHtjbGFzc05hbWV9
Ojp+JHtjbGFzc05hbWV9KClcbiIpOworICAgIHB1c2goQGltcGxDb250ZW50LCAiJHtqc0NsYXNz
TmFtZX06On4ke2pzQ2xhc3NOYW1lfSgpXG4iKTsKICAgICBwdXNoKEBpbXBsQ29udGVudCwgIntc
biIpOwogICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQq
IGNvbnRleHQgPSBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7XG4iKTsKICAgICBwdXNoKEBpbXBs
Q29udGVudCwgIiAgICAvLyBXaGVuIHRoZSBjb250ZXh0IGlzIGRlc3Ryb3llZCwgYWxsIHRhc2tz
IHdpdGggYSByZWZlcmVuY2UgdG8gYSBjYWxsYmFja1xuIik7CkBAIC0zMTQ0LDcgKzMxNjcsNyBA
QCBzdWIgR2VuZXJhdGVDYWxsYmFja0ltcGxlbWVudGF0aW9uCiAgICAgICAgICAgICB9CiAKICAg
ICAgICAgICAgIEFkZEluY2x1ZGVzRm9yVHlwZUluSW1wbCgkZnVuY3Rpb24tPnNpZ25hdHVyZS0+
dHlwZSk7Ci0gICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIlxuIiAuIEdldE5hdGl2ZVR5
cGVGb3JDYWxsYmFja3MoJGZ1bmN0aW9uLT5zaWduYXR1cmUtPnR5cGUpIC4gIiAke2NsYXNzTmFt
ZX06OiIgLiAkZnVuY3Rpb24tPnNpZ25hdHVyZS0+bmFtZSAuICIoIik7CisgICAgICAgICAgICBw
dXNoKEBpbXBsQ29udGVudCwgIlxuIiAuIEdldE5hdGl2ZVR5cGVGb3JDYWxsYmFja3MoJGZ1bmN0
aW9uLT5zaWduYXR1cmUtPnR5cGUpIC4gIiAke2pzQ2xhc3NOYW1lfTo6IiAuICRmdW5jdGlvbi0+
c2lnbmF0dXJlLT5uYW1lIC4gIigiKTsKIAogICAgICAgICAgICAgbXkgQGFyZ3MgPSAoKTsKICAg
ICAgICAgICAgIG15IEBhcmdzQ2hlY2sgPSAoKTsKQEAgLTMxNjcsNyArMzE5MCw3IEBAIEVORAog
ICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsIEBhcmdzQ2hlY2spIGlmIEBhcmdzQ2hlY2s7
CiAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBpZiAoIWNhbkludm9rZUNhbGxi
YWNrKCkpXG4iKTsKICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICAgICByZXR1
cm4gdHJ1ZTtcblxuIik7Ci0gICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBSZWZQ
dHI8JGNsYXNzTmFtZT4gcHJvdGVjdCh0aGlzKTtcblxuIik7CisgICAgICAgICAgICBwdXNoKEBp
bXBsQ29udGVudCwgIiAgICBSZWZQdHI8JGpzQ2xhc3NOYW1lPiBwcm90ZWN0KHRoaXMpO1xuXG4i
KTsKICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIEpTTG9ja0hvbGRlciBsb2Nr
KG1fZGF0YS0+Z2xvYmFsT2JqZWN0KCktPnZtKCkpO1xuXG4iKTsKICAgICAgICAgICAgIGlmIChA
cGFyYW1zKSB7CiAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgRXhlY1N0
YXRlKiBleGVjID0gbV9kYXRhLT5nbG9iYWxPYmplY3QoKS0+Z2xvYmFsRXhlYygpO1xuIik7CkBA
IC0zMjE4LDcgKzMyNDEsNyBAQCBzdWIgR2VuZXJhdGVJbXBsZW1lbnRhdGlvbkZ1bmN0aW9uQ2Fs
bCgpCiAgICAgbXkgJGZ1bmN0aW9uU3RyaW5nID0gc2hpZnQ7CiAgICAgbXkgJGluZGVudCA9IHNo
aWZ0OwogICAgIG15ICRzdmdQcm9wZXJ0eVR5cGUgPSBzaGlmdDsKLSAgICBteSAkaW50ZXJmYWNl
TmFtZSA9IHNoaWZ0OworICAgIG15ICRpbnRlcmZhY2UgPSBzaGlmdDsKIAogICAgIGlmICgkZnVu
Y3Rpb24tPnNpZ25hdHVyZS0+dHlwZSBlcSAidm9pZCIpIHsKICAgICAgICAgcHVzaChAaW1wbENv
bnRlbnQsICRpbmRlbnQgLiAiJGZ1bmN0aW9uU3RyaW5nO1xuIik7CkBAIC0zMjM2LDcgKzMyNTks
NyBAQCBzdWIgR2VuZXJhdGVJbXBsZW1lbnRhdGlvbkZ1bmN0aW9uQ2FsbCgpCiAgICAgICAgIHB1
c2goQGltcGxDb250ZW50LCAkaW5kZW50IC4gInJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRl
ZmluZWQoKSk7XG4iKTsKICAgICB9IGVsc2UgewogICAgICAgICBteSAkdGhpc09iamVjdCA9ICRm
dW5jdGlvbi0+aXNTdGF0aWMgPyAwIDogImNhc3RlZFRoaXMiOwotICAgICAgICBwdXNoKEBpbXBs
Q29udGVudCwgIlxuIiAuICRpbmRlbnQgLiAiSlNDOjpKU1ZhbHVlIHJlc3VsdCA9ICIgLiBOYXRp
dmVUb0pTVmFsdWUoJGZ1bmN0aW9uLT5zaWduYXR1cmUsIDEsICRpbnRlcmZhY2VOYW1lLCAkZnVu
Y3Rpb25TdHJpbmcsICR0aGlzT2JqZWN0KSAuICI7XG4iKTsKKyAgICAgICAgcHVzaChAaW1wbENv
bnRlbnQsICJcbiIgLiAkaW5kZW50IC4gIkpTQzo6SlNWYWx1ZSByZXN1bHQgPSAiIC4gTmF0aXZl
VG9KU1ZhbHVlKCRmdW5jdGlvbi0+c2lnbmF0dXJlLCAxLCAkaW50ZXJmYWNlLCAkZnVuY3Rpb25T
dHJpbmcsICR0aGlzT2JqZWN0KSAuICI7XG4iKTsKICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQs
ICRpbmRlbnQgLiAic2V0RE9NRXhjZXB0aW9uKGV4ZWMsIGVjKTtcbiIpIGlmIEB7JGZ1bmN0aW9u
LT5yYWlzZXNFeGNlcHRpb25zfTsKIAogICAgICAgICBpZiAoJGNvZGVHZW5lcmF0b3ItPkV4dGVu
ZGVkQXR0cmlidXRlQ29udGFpbnMoJGZ1bmN0aW9uLT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0cmli
dXRlcy0+eyJDYWxsV2l0aCJ9LCAiU2NyaXB0U3RhdGUiKSkgewpAQCAtMzMwMSw2ICszMzI0LDEy
IEBAIHN1YiBHZXROYXRpdmVUeXBlCiAgICAgICAgIHJldHVybiAiY29uc3QgU3RyaW5nIjsKICAg
ICB9CiAKKyAgICBpZiAoJGNvZGVHZW5lcmF0b3ItPklzV3JhcHBlclR5cGUoJHR5cGUpKSB7Cisg
ICAgICAgIG15ICRpbnRlcmZhY2UgPSAkY29kZUdlbmVyYXRvci0+UGFyc2VJbnRlcmZhY2UoJHR5
cGUpOworICAgICAgICBteSAkaW1wbENsYXNzTmFtZSA9IEdldEltcGxDbGFzc05hbWUoJGludGVy
ZmFjZSk7CisgICAgICAgIHJldHVybiAiJHtpbXBsQ2xhc3NOYW1lfSoiCisgICAgfQorCiAgICAg
IyBGb3IgYWxsIG90aGVyIHR5cGVzLCB0aGUgbmF0aXZlIHR5cGUgaXMgYSBwb2ludGVyIHdpdGgg
c2FtZSB0eXBlIG5hbWUgYXMgdGhlIElETCB0eXBlLgogICAgIHJldHVybiAiJHt0eXBlfSoiOwog
fQpAQCAtMzQ1MSw2ICszNDgwLDEzIEBAIHN1YiBKU1ZhbHVlVG9OYXRpdmUKICAgICAgICAgcmV0
dXJuICIkdmFsdWUuaXNFbXB0eSgpID8gU3RyaW5nKCkgOiAkdmFsdWUudG9TdHJpbmcoZXhlYykt
PnZhbHVlKGV4ZWMpIjsKICAgICB9CiAKKyAgICBpZiAoJGNvZGVHZW5lcmF0b3ItPklzV3JhcHBl
clR5cGUoJHR5cGUpKSB7CisgICAgICAgIG15ICRpbnRlcmZhY2UgPSAkY29kZUdlbmVyYXRvci0+
UGFyc2VJbnRlcmZhY2UoJHR5cGUpOworICAgICAgICBteSAkaW1wbENsYXNzTmFtZSA9IEdldElt
cGxDbGFzc05hbWUoJGludGVyZmFjZSk7CisgICAgICAgIEFkZFRvSW1wbEluY2x1ZGVzKCJKUyR0
eXBlLmgiLCAkY29uZGl0aW9uYWwpOworICAgICAgICByZXR1cm4gInRvJGltcGxDbGFzc05hbWUo
JHZhbHVlKSI7CisgICAgfQorCiAgICAgIyBEZWZhdWx0LCBhc3N1bWUgYXV0b2dlbmVyYXRlZCB0
eXBlIGNvbnZlcnNpb24gcm91dGluZXMKICAgICBBZGRUb0ltcGxJbmNsdWRlcygiSlMkdHlwZS5o
IiwgJGNvbmRpdGlvbmFsKTsKICAgICByZXR1cm4gInRvJHR5cGUoJHZhbHVlKSI7CkBAIC0zNDYw
LDEwICszNDk2LDEzIEBAIHN1YiBOYXRpdmVUb0pTVmFsdWUKIHsKICAgICBteSAkc2lnbmF0dXJl
ID0gc2hpZnQ7CiAgICAgbXkgJGluRnVuY3Rpb25DYWxsID0gc2hpZnQ7Ci0gICAgbXkgJGludGVy
ZmFjZU5hbWUgPSBzaGlmdDsKKyAgICBteSAkaW50ZXJmYWNlID0gc2hpZnQ7CiAgICAgbXkgJHZh
bHVlID0gc2hpZnQ7CiAgICAgbXkgJHRoaXNWYWx1ZSA9IHNoaWZ0OwogCisgICAgbXkgJGludGVy
ZmFjZU5hbWUgPSAkaW50ZXJmYWNlLT5uYW1lOworICAgIG15ICRpbXBsQ2xhc3NOYW1lID0gR2V0
SW1wbENsYXNzTmFtZSgkaW50ZXJmYWNlKTsKKwogICAgIG15ICRjb25kaXRpb25hbCA9ICRzaWdu
YXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJDb25kaXRpb25hbCJ9OwogICAgIG15ICR0eXBl
ID0gJHNpZ25hdHVyZS0+dHlwZTsKIApAQCAtMzU3NiwxMiArMzYxNSwxMiBAQCBzdWIgTmF0aXZl
VG9KU1ZhbHVlCiAgICAgICAgICAgICAkZ2V0dGVyID1+IHMvaW1wbFwuLy87CiAgICAgICAgICAg
ICAkZ2V0dGVyID1+IHMvaW1wbC0+Ly87CiAgICAgICAgICAgICAkZ2V0dGVyID1+IHMvXChcKS8v
OwotICAgICAgICAgICAgbXkgJHVwZGF0ZU1ldGhvZCA9ICImJHtpbnRlcmZhY2VOYW1lfTo6dXBk
YXRlIiAuICRjb2RlR2VuZXJhdG9yLT5XS191Y2ZpcnN0KCRnZXR0ZXIpOworICAgICAgICAgICAg
bXkgJHVwZGF0ZU1ldGhvZCA9ICImJHtpbXBsQ2xhc3NOYW1lfTo6dXBkYXRlIiAuICRjb2RlR2Vu
ZXJhdG9yLT5XS191Y2ZpcnN0KCRnZXR0ZXIpOwogCiAgICAgICAgICAgICBteSAkc2VsZklzVGVh
ck9mZlR5cGUgPSAkY29kZUdlbmVyYXRvci0+SXNTVkdUeXBlTmVlZGluZ1RlYXJPZmYoJGludGVy
ZmFjZU5hbWUpOwogICAgICAgICAgICAgaWYgKCRzZWxmSXNUZWFyT2ZmVHlwZSkgewogICAgICAg
ICAgICAgICAgIEFkZFRvSW1wbEluY2x1ZGVzKCJTVkdTdGF0aWNQcm9wZXJ0eVdpdGhQYXJlbnRU
ZWFyT2ZmLmgiLCAkY29uZGl0aW9uYWwpOwotICAgICAgICAgICAgICAgICR0ZWFyT2ZmVHlwZSA9
fiBzL1NWR1Byb3BlcnR5VGVhck9mZjwvU1ZHU3RhdGljUHJvcGVydHlXaXRoUGFyZW50VGVhck9m
ZjwkaW50ZXJmYWNlTmFtZSwgLzsKKyAgICAgICAgICAgICAgICAkdGVhck9mZlR5cGUgPX4gcy9T
VkdQcm9wZXJ0eVRlYXJPZmY8L1NWR1N0YXRpY1Byb3BlcnR5V2l0aFBhcmVudFRlYXJPZmY8JGlt
cGxDbGFzc05hbWUsIC87CiAKICAgICAgICAgICAgICAgICBpZiAoJHZhbHVlID1+IC9tYXRyaXgv
IGFuZCAkaW50ZXJmYWNlTmFtZSBlcSAiU1ZHVHJhbnNmb3JtIikgewogICAgICAgICAgICAgICAg
ICAgICAjIFNWR1RyYW5zZm9ybSBvZmZlcnMgYSBtYXRyaXgoKSBtZXRob2QgZm9yIGludGVybmFs
IHVzYWdlIHRoYXQgcmV0dXJucyBhbiBBZmZpbmVUcmFuc2Zvcm0KQEAgLTM1OTIsNyArMzYzMSw3
IEBAIHN1YiBOYXRpdmVUb0pTVmFsdWUKICAgICAgICAgICAgICAgICAkdmFsdWUgPSAiJHt0ZWFy
T2ZmVHlwZX06OmNyZWF0ZShjYXN0ZWRUaGlzLT5pbXBsKCksICR2YWx1ZSwgJHVwZGF0ZU1ldGhv
ZCkiOwogICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICBBZGRUb0ltcGxJbmNs
dWRlcygiU1ZHU3RhdGljUHJvcGVydHlUZWFyT2ZmLmgiLCAkY29uZGl0aW9uYWwpOwotICAgICAg
ICAgICAgICAgICR0ZWFyT2ZmVHlwZSA9fiBzL1NWR1Byb3BlcnR5VGVhck9mZjwvU1ZHU3RhdGlj
UHJvcGVydHlUZWFyT2ZmPCRpbnRlcmZhY2VOYW1lLCAvOworICAgICAgICAgICAgICAgICR0ZWFy
T2ZmVHlwZSA9fiBzL1NWR1Byb3BlcnR5VGVhck9mZjwvU1ZHU3RhdGljUHJvcGVydHlUZWFyT2Zm
PCRpbXBsQ2xhc3NOYW1lLCAvOwogICAgICAgICAgICAgICAgICR2YWx1ZSA9ICIke3RlYXJPZmZU
eXBlfTo6Y3JlYXRlKGltcGwsICR2YWx1ZSwgJHVwZGF0ZU1ldGhvZCkiOwogICAgICAgICAgICAg
fQogICAgICAgICB9IGVsc2lmICgkdGVhck9mZlR5cGUgPX4gL1NWR1N0YXRpY0xpc3RQcm9wZXJ0
eVRlYXJPZmYvKSB7CkBAIC0zNzI0LDExICszNzYzLDEwIEBAIHN1YiBXcml0ZURhdGEKICAgICBt
eSAkaW50ZXJmYWNlID0gc2hpZnQ7CiAgICAgbXkgJG91dHB1dERpciA9IHNoaWZ0OwogCi0gICAg
bXkgJG5hbWUgPSAkaW50ZXJmYWNlLT5uYW1lOwotICAgIG15ICRwcmVmaXggPSBGaWxlTmFtZVBy
ZWZpeDsKLSAgICBteSAkaGVhZGVyRmlsZU5hbWUgPSAiJG91dHB1dERpci8kcHJlZml4JG5hbWUu
aCI7Ci0gICAgbXkgJGltcGxGaWxlTmFtZSA9ICIkb3V0cHV0RGlyLyRwcmVmaXgkbmFtZS5jcHAi
OwotICAgIG15ICRkZXBzRmlsZU5hbWUgPSAiJG91dHB1dERpci8kcHJlZml4JG5hbWUuZGVwIjsK
KyAgICBteSAkanNDbGFzc05hbWUgPSBHZXRKU0NsYXNzTmFtZSgkaW50ZXJmYWNlKTsKKyAgICBt
eSAkaGVhZGVyRmlsZU5hbWUgPSAiJG91dHB1dERpci8kanNDbGFzc05hbWUuaCI7CisgICAgbXkg
JGltcGxGaWxlTmFtZSA9ICIkb3V0cHV0RGlyLyRqc0NsYXNzTmFtZS5jcHAiOworICAgIG15ICRk
ZXBzRmlsZU5hbWUgPSAiJG91dHB1dERpci8kanNDbGFzc05hbWUuZGVwIjsKIAogICAgICMgVXBk
YXRlIGEgLmNwcCBmaWxlIGlmIHRoZSBjb250ZW50cyBhcmUgY2hhbmdlZC4KICAgICBteSAkY29u
dGVudHMgPSBqb2luICIiLCBAaW1wbENvbnRlbnRIZWFkZXI7CkBAIC0zODA4LDExICszODQ2LDEx
IEBAIHN1YiBXcml0ZURhdGEKIHN1YiBHZW5lcmF0ZUNvbnN0cnVjdG9yRGVjbGFyYXRpb24KIHsK
ICAgICBteSAkb3V0cHV0QXJyYXkgPSBzaGlmdDsKLSAgICBteSAkY2xhc3NOYW1lID0gc2hpZnQ7
CiAgICAgbXkgJGludGVyZmFjZSA9IHNoaWZ0OwotICAgIG15ICRpbnRlcmZhY2VOYW1lID0gc2hp
ZnQ7CisgICAgbXkgJGltcGxDbGFzc05hbWUgPSBHZXRJbXBsQ2xhc3NOYW1lKCRpbnRlcmZhY2Up
OworICAgIG15ICRqc0NsYXNzTmFtZSA9IEdldEpTQ2xhc3NOYW1lKCRpbnRlcmZhY2UpOwogCi0g
ICAgbXkgJGNvbnN0cnVjdG9yQ2xhc3NOYW1lID0gIiR7Y2xhc3NOYW1lfUNvbnN0cnVjdG9yIjsK
KyAgICBteSAkY29uc3RydWN0b3JDbGFzc05hbWUgPSAiJHtqc0NsYXNzTmFtZX1Db25zdHJ1Y3Rv
ciI7CiAKICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICJjbGFzcyAke2NvbnN0cnVjdG9yQ2xhc3NO
YW1lfSA6IHB1YmxpYyBET01Db25zdHJ1Y3Rvck9iamVjdCB7XG4iKTsKICAgICBwdXNoKEAkb3V0
cHV0QXJyYXksICJwcml2YXRlOlxuIik7CkBAIC0zODQxLDE0ICszODc5LDE0IEBAIHN1YiBHZW5l
cmF0ZUNvbnN0cnVjdG9yRGVjbGFyYXRpb24KICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAg
c3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gSlNDOjpPdmVycmlkZXNHZXRP
d25Qcm9wZXJ0eVNsb3QgfCBKU0M6OkltcGxlbWVudHNIYXNJbnN0YW5jZSB8IERPTUNvbnN0cnVj
dG9yT2JqZWN0OjpTdHJ1Y3R1cmVGbGFncztcbiIpOwogCiAgICAgaWYgKElzQ29uc3RydWN0YWJs
ZSgkaW50ZXJmYWNlKSAmJiAhJGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Ik5hbWVk
Q29uc3RydWN0b3IifSkgewotICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgc3RhdGlj
IEpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zdHJ1Y3Qke2NsYXNzTmFtZX0o
SlNDOjpFeGVjU3RhdGUqKTtcbiIpOworICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAg
c3RhdGljIEpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zdHJ1Y3Qke2pzQ2xh
c3NOYW1lfShKU0M6OkV4ZWNTdGF0ZSopO1xuIik7CiAKICAgICAgICAgaWYgKCFIYXNDdXN0b21D
b25zdHJ1Y3RvcigkaW50ZXJmYWNlKSkgewogICAgICAgICAgICAgbXkgQGNvbnN0cnVjdG9ycyA9
IEB7JGludGVyZmFjZS0+Y29uc3RydWN0b3JzfTsKICAgICAgICAgICAgIGlmIChAY29uc3RydWN0
b3JzID4gMSkgewogICAgICAgICAgICAgICAgIGZvcmVhY2ggbXkgJGNvbnN0cnVjdG9yIChAY29u
c3RydWN0b3JzKSB7CiAgICAgICAgICAgICAgICAgICAgIG15ICRvdmVybG9hZGVkSW5kZXggPSAi
IiAuICRjb25zdHJ1Y3Rvci0+e292ZXJsb2FkZWRJbmRleH07Ci0gICAgICAgICAgICAgICAgICAg
IHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICBzdGF0aWMgSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGNvbnN0cnVjdCR7Y2xhc3NOYW1lfSR7b3ZlcmxvYWRlZEluZGV4fShKU0M6OkV4
ZWNTdGF0ZSopO1xuIik7CisgICAgICAgICAgICAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwg
IiAgICBzdGF0aWMgSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnN0cnVjdCR7
anNDbGFzc05hbWV9JHtvdmVybG9hZGVkSW5kZXh9KEpTQzo6RXhlY1N0YXRlKik7XG4iKTsKICAg
ICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KQEAgLTM4NjEsMTggKzM4
OTksMTggQEAgc3ViIEdlbmVyYXRlQ29uc3RydWN0b3JEZWNsYXJhdGlvbgogICAgIHB1c2goQCRv
dXRwdXRBcnJheSwgIn07XG5cbiIpOwogCiAgICAgaWYgKCRjb2RlR2VuZXJhdG9yLT5Jc0NvbnN0
cnVjdG9yVGVtcGxhdGUoJGludGVyZmFjZSwgIkV2ZW50IikpIHsKLSAgICAgICAgcHVzaChAJG91
dHB1dEFycmF5LCAiYm9vbCBmaWxsJHtpbnRlcmZhY2VOYW1lfUluaXQoJHtpbnRlcmZhY2VOYW1l
fUluaXQmLCBKU0RpY3Rpb25hcnkmKTtcblxuIik7CisgICAgICAgIHB1c2goQCRvdXRwdXRBcnJh
eSwgImJvb2wgZmlsbCR7aW1wbENsYXNzTmFtZX1Jbml0KCR7aW1wbENsYXNzTmFtZX1Jbml0Jiwg
SlNEaWN0aW9uYXJ5Jik7XG5cbiIpOwogICAgIH0KIAogICAgIGlmICgkaW50ZXJmYWNlLT5leHRl
bmRlZEF0dHJpYnV0ZXMtPnsiTmFtZWRDb25zdHJ1Y3RvciJ9KSB7CiAgICAgICAgIHB1c2goQCRv
dXRwdXRBcnJheSwgPDxFTkQpOwotY2xhc3MgSlMke2ludGVyZmFjZU5hbWV9TmFtZWRDb25zdHJ1
Y3RvciA6IHB1YmxpYyBET01Db25zdHJ1Y3RvcldpdGhEb2N1bWVudCB7CitjbGFzcyAke2pzQ2xh
c3NOYW1lfU5hbWVkQ29uc3RydWN0b3IgOiBwdWJsaWMgRE9NQ29uc3RydWN0b3JXaXRoRG9jdW1l
bnQgewogcHVibGljOgogICAgIHR5cGVkZWYgRE9NQ29uc3RydWN0b3JXaXRoRG9jdW1lbnQgQmFz
ZTsKIAotICAgIHN0YXRpYyBKUyR7aW50ZXJmYWNlTmFtZX1OYW1lZENvbnN0cnVjdG9yKiBjcmVh
dGUoSlNDOjpFeGVjU3RhdGUqIGV4ZWMsIEpTQzo6U3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEpTRE9N
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCisgICAgc3RhdGljICR7anNDbGFzc05hbWV9TmFt
ZWRDb25zdHJ1Y3RvciogY3JlYXRlKEpTQzo6RXhlY1N0YXRlKiBleGVjLCBKU0M6OlN0cnVjdHVy
ZSogc3RydWN0dXJlLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQogICAgIHsKLSAg
ICAgICAgSlMke2ludGVyZmFjZU5hbWV9TmFtZWRDb25zdHJ1Y3RvciogY29uc3RydWN0b3IgPSBu
ZXcgKE5vdE51bGwsIEpTQzo6YWxsb2NhdGVDZWxsPEpTJHtpbnRlcmZhY2VOYW1lfU5hbWVkQ29u
c3RydWN0b3I+KCpleGVjLT5oZWFwKCkpKSBKUyR7aW50ZXJmYWNlTmFtZX1OYW1lZENvbnN0cnVj
dG9yKHN0cnVjdHVyZSwgZ2xvYmFsT2JqZWN0KTsKKyAgICAgICAgJHtqc0NsYXNzTmFtZX1OYW1l
ZENvbnN0cnVjdG9yKiBjb25zdHJ1Y3RvciA9IG5ldyAoTm90TnVsbCwgSlNDOjphbGxvY2F0ZUNl
bGw8JHtqc0NsYXNzTmFtZX1OYW1lZENvbnN0cnVjdG9yPigqZXhlYy0+aGVhcCgpKSkgJHtqc0Ns
YXNzTmFtZX1OYW1lZENvbnN0cnVjdG9yKHN0cnVjdHVyZSwgZ2xvYmFsT2JqZWN0KTsKICAgICAg
ICAgY29uc3RydWN0b3ItPmZpbmlzaENyZWF0aW9uKGV4ZWMsIGdsb2JhbE9iamVjdCk7CiAgICAg
ICAgIHJldHVybiBjb25zdHJ1Y3RvcjsKICAgICB9CkBAIC0zODg1LDggKzM5MjMsOCBAQCBwdWJs
aWM6CiAgICAgc3RhdGljIGNvbnN0IEpTQzo6Q2xhc3NJbmZvIHNfaW5mbzsKIAogcHJpdmF0ZToK
LSAgICBKUyR7aW50ZXJmYWNlTmFtZX1OYW1lZENvbnN0cnVjdG9yKEpTQzo6U3RydWN0dXJlKiwg
SlNET01HbG9iYWxPYmplY3QqKTsKLSAgICBzdGF0aWMgSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGNvbnN0cnVjdEpTJHtpbnRlcmZhY2VOYW1lfShKU0M6OkV4ZWNTdGF0ZSopOwor
ICAgICR7anNDbGFzc05hbWV9TmFtZWRDb25zdHJ1Y3RvcihKU0M6OlN0cnVjdHVyZSosIEpTRE9N
R2xvYmFsT2JqZWN0Kik7CisgICAgc3RhdGljIEpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBjb25zdHJ1Y3Qke2pzQ2xhc3NOYW1lfShKU0M6OkV4ZWNTdGF0ZSopOwogICAgIHN0YXRp
YyBKU0M6OkNvbnN0cnVjdFR5cGUgZ2V0Q29uc3RydWN0RGF0YShKU0M6OkpTQ2VsbCosIEpTQzo6
Q29uc3RydWN0RGF0YSYpOwogICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oSlNDOjpFeGVjU3RhdGUq
LCBKU0RPTUdsb2JhbE9iamVjdCopOwogfTsKQEAgLTM4OTgsMzcgKzM5MzYsMzUgQEAgRU5ECiBz
dWIgR2VuZXJhdGVDb25zdHJ1Y3RvckRlZmluaXRpb25zCiB7CiAgICAgbXkgJG91dHB1dEFycmF5
ID0gc2hpZnQ7Ci0gICAgbXkgJGNsYXNzTmFtZSA9IHNoaWZ0OwogICAgIG15ICRwcm90b0NsYXNz
TmFtZSA9IHNoaWZ0OwotICAgIG15ICRpbnRlcmZhY2VOYW1lID0gc2hpZnQ7Ci0gICAgbXkgJHZp
c2libGVJbnRlcmZhY2VOYW1lID0gc2hpZnQ7CiAgICAgbXkgJGludGVyZmFjZSA9IHNoaWZ0Owor
ICAgIG15ICR2aXNpYmxlSW50ZXJmYWNlTmFtZSA9IHNoaWZ0OwogICAgIG15ICRnZW5lcmF0aW5n
TmFtZWRDb25zdHJ1Y3RvciA9IHNoaWZ0OwogCiAgICAgaWYgKElzQ29uc3RydWN0YWJsZSgkaW50
ZXJmYWNlKSkgewogICAgICAgICBteSBAY29uc3RydWN0b3JzID0gQHskaW50ZXJmYWNlLT5jb25z
dHJ1Y3RvcnN9OwogICAgICAgICBpZiAoQGNvbnN0cnVjdG9ycyA+IDEpIHsKICAgICAgICAgICAg
IGZvcmVhY2ggbXkgJGNvbnN0cnVjdG9yIChAY29uc3RydWN0b3JzKSB7Ci0gICAgICAgICAgICAg
ICAgR2VuZXJhdGVDb25zdHJ1Y3RvckRlZmluaXRpb24oJG91dHB1dEFycmF5LCAkY2xhc3NOYW1l
LCAkcHJvdG9DbGFzc05hbWUsICRpbnRlcmZhY2VOYW1lLCAkdmlzaWJsZUludGVyZmFjZU5hbWUs
ICRpbnRlcmZhY2UsICRnZW5lcmF0aW5nTmFtZWRDb25zdHJ1Y3RvciwgJGNvbnN0cnVjdG9yKTsK
KyAgICAgICAgICAgICAgICBHZW5lcmF0ZUNvbnN0cnVjdG9yRGVmaW5pdGlvbigkb3V0cHV0QXJy
YXksICRwcm90b0NsYXNzTmFtZSwgJGludGVyZmFjZSwgJHZpc2libGVJbnRlcmZhY2VOYW1lLCAk
Z2VuZXJhdGluZ05hbWVkQ29uc3RydWN0b3IsICRjb25zdHJ1Y3Rvcik7CiAgICAgICAgICAgICB9
Ci0gICAgICAgICAgICBHZW5lcmF0ZU92ZXJsb2FkZWRDb25zdHJ1Y3RvckRlZmluaXRpb24oJG91
dHB1dEFycmF5LCAkY2xhc3NOYW1lLCAkaW50ZXJmYWNlKTsKKyAgICAgICAgICAgIEdlbmVyYXRl
T3ZlcmxvYWRlZENvbnN0cnVjdG9yRGVmaW5pdGlvbigkb3V0cHV0QXJyYXksICRpbnRlcmZhY2Up
OwogICAgICAgICB9IGVsc2lmIChAY29uc3RydWN0b3JzID09IDEpIHsKLSAgICAgICAgICAgIEdl
bmVyYXRlQ29uc3RydWN0b3JEZWZpbml0aW9uKCRvdXRwdXRBcnJheSwgJGNsYXNzTmFtZSwgJHBy
b3RvQ2xhc3NOYW1lLCAkaW50ZXJmYWNlTmFtZSwgJHZpc2libGVJbnRlcmZhY2VOYW1lLCAkaW50
ZXJmYWNlLCAkZ2VuZXJhdGluZ05hbWVkQ29uc3RydWN0b3IsICRjb25zdHJ1Y3RvcnNbMF0pOwor
ICAgICAgICAgICAgR2VuZXJhdGVDb25zdHJ1Y3RvckRlZmluaXRpb24oJG91dHB1dEFycmF5LCAk
cHJvdG9DbGFzc05hbWUsICRpbnRlcmZhY2UsICR2aXNpYmxlSW50ZXJmYWNlTmFtZSwgJGdlbmVy
YXRpbmdOYW1lZENvbnN0cnVjdG9yLCAkY29uc3RydWN0b3JzWzBdKTsKICAgICAgICAgfSBlbHNl
IHsKLSAgICAgICAgICAgIEdlbmVyYXRlQ29uc3RydWN0b3JEZWZpbml0aW9uKCRvdXRwdXRBcnJh
eSwgJGNsYXNzTmFtZSwgJHByb3RvQ2xhc3NOYW1lLCAkaW50ZXJmYWNlTmFtZSwgJHZpc2libGVJ
bnRlcmZhY2VOYW1lLCAkaW50ZXJmYWNlLCAkZ2VuZXJhdGluZ05hbWVkQ29uc3RydWN0b3IpOwor
ICAgICAgICAgICAgR2VuZXJhdGVDb25zdHJ1Y3RvckRlZmluaXRpb24oJG91dHB1dEFycmF5LCAk
cHJvdG9DbGFzc05hbWUsICRpbnRlcmZhY2UsICR2aXNpYmxlSW50ZXJmYWNlTmFtZSwgJGdlbmVy
YXRpbmdOYW1lZENvbnN0cnVjdG9yKTsKICAgICAgICAgfQogICAgIH0KIAotICAgIEdlbmVyYXRl
Q29uc3RydWN0b3JIZWxwZXJNZXRob2RzKCRvdXRwdXRBcnJheSwgJGNsYXNzTmFtZSwgJHByb3Rv
Q2xhc3NOYW1lLCAkaW50ZXJmYWNlTmFtZSwgJHZpc2libGVJbnRlcmZhY2VOYW1lLCAkaW50ZXJm
YWNlLCAkZ2VuZXJhdGluZ05hbWVkQ29uc3RydWN0b3IpOworICAgIEdlbmVyYXRlQ29uc3RydWN0
b3JIZWxwZXJNZXRob2RzKCRvdXRwdXRBcnJheSwgJHByb3RvQ2xhc3NOYW1lLCAkaW50ZXJmYWNl
LCAkdmlzaWJsZUludGVyZmFjZU5hbWUsICRnZW5lcmF0aW5nTmFtZWRDb25zdHJ1Y3Rvcik7CiB9
CiAKIHN1YiBHZW5lcmF0ZU92ZXJsb2FkZWRDb25zdHJ1Y3RvckRlZmluaXRpb24KIHsKICAgICBt
eSAkb3V0cHV0QXJyYXkgPSBzaGlmdDsKLSAgICBteSAkY2xhc3NOYW1lID0gc2hpZnQ7CiAgICAg
bXkgJGludGVyZmFjZSA9IHNoaWZ0OwogCi0gICAgbXkgJGZ1bmN0aW9uTmFtZSA9ICIke2NsYXNz
TmFtZX1Db25zdHJ1Y3Rvcjo6Y29uc3RydWN0JHtjbGFzc05hbWV9IjsKKyAgICBteSAkanNDbGFz
c05hbWUgPSBHZXRKU0NsYXNzTmFtZSgkaW50ZXJmYWNlKTsKKyAgICBteSAkZnVuY3Rpb25OYW1l
ID0gIiR7anNDbGFzc05hbWV9Q29uc3RydWN0b3I6OmNvbnN0cnVjdCR7anNDbGFzc05hbWV9IjsK
ICAgICBwdXNoKEAkb3V0cHV0QXJyYXksIDw8RU5EKTsKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgJHtmdW5jdGlvbk5hbWV9KEV4ZWNTdGF0ZSogZXhlYykKIHsKQEAgLTM5NjcsMTUgKzQw
MDMsMTUgQEAgRU5ECiBzdWIgR2VuZXJhdGVDb25zdHJ1Y3RvckRlZmluaXRpb24KIHsKICAgICBt
eSAkb3V0cHV0QXJyYXkgPSBzaGlmdDsKLSAgICBteSAkY2xhc3NOYW1lID0gc2hpZnQ7CiAgICAg
bXkgJHByb3RvQ2xhc3NOYW1lID0gc2hpZnQ7Ci0gICAgbXkgJGludGVyZmFjZU5hbWUgPSBzaGlm
dDsKLSAgICBteSAkdmlzaWJsZUludGVyZmFjZU5hbWUgPSBzaGlmdDsKICAgICBteSAkaW50ZXJm
YWNlID0gc2hpZnQ7CisgICAgbXkgJHZpc2libGVJbnRlcmZhY2VOYW1lID0gc2hpZnQ7CiAgICAg
bXkgJGdlbmVyYXRpbmdOYW1lZENvbnN0cnVjdG9yID0gc2hpZnQ7CiAgICAgbXkgJGZ1bmN0aW9u
ID0gc2hpZnQ7CiAKLSAgICBteSAkY29uc3RydWN0b3JDbGFzc05hbWUgPSAkZ2VuZXJhdGluZ05h
bWVkQ29uc3RydWN0b3IgPyAiJHtjbGFzc05hbWV9TmFtZWRDb25zdHJ1Y3RvciIgOiAiJHtjbGFz
c05hbWV9Q29uc3RydWN0b3IiOworICAgIG15ICRpbXBsQ2xhc3NOYW1lID0gR2V0SW1wbENsYXNz
TmFtZSgkaW50ZXJmYWNlKTsKKyAgICBteSAkanNDbGFzc05hbWUgPSBHZXRKU0NsYXNzTmFtZSgk
aW50ZXJmYWNlKTsKKyAgICBteSAkY29uc3RydWN0b3JDbGFzc05hbWUgPSAkZ2VuZXJhdGluZ05h
bWVkQ29uc3RydWN0b3IgPyAiJHtqc0NsYXNzTmFtZX1OYW1lZENvbnN0cnVjdG9yIiA6ICIke2pz
Q2xhc3NOYW1lfUNvbnN0cnVjdG9yIjsKIAogICAgIGlmIChJc0NvbnN0cnVjdGFibGUoJGludGVy
ZmFjZSkpIHsKICAgICAgICAgaWYgKCRjb2RlR2VuZXJhdG9yLT5Jc0NvbnN0cnVjdG9yVGVtcGxh
dGUoJGludGVyZmFjZSwgIkV2ZW50IikpIHsKQEAgLTM5ODMsNyArNDAxOSw3IEBAIHN1YiBHZW5l
cmF0ZUNvbnN0cnVjdG9yRGVmaW5pdGlvbgogICAgICAgICAgICAgJGltcGxJbmNsdWRlc3siPHJ1
bnRpbWUvRXJyb3IuaD4ifSA9IDE7CiAKICAgICAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwg
PDxFTkQpOwotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCAke2NvbnN0cnVjdG9yQ2xhc3NO
YW1lfTo6Y29uc3RydWN0JHtjbGFzc05hbWV9KEV4ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgJHtjb25zdHJ1Y3RvckNsYXNzTmFtZX06OmNvbnN0cnVjdCR7anND
bGFzc05hbWV9KEV4ZWNTdGF0ZSogZXhlYykKIHsKICAgICAke2NvbnN0cnVjdG9yQ2xhc3NOYW1l
fSoganNDb25zdHJ1Y3RvciA9IGpzQ2FzdDwke2NvbnN0cnVjdG9yQ2xhc3NOYW1lfSo+KGV4ZWMt
PmNhbGxlZSgpKTsKIApAQCAtMzk5NSw3ICs0MDMxLDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCAke2NvbnN0cnVjdG9yQ2xhc3NOYW1lfTo6Y29uc3RydWN0JHtjbGFzc05hbWV9KEV4
ZWMKICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiAKLSAgICAke2ludGVyZmFjZU5hbWV9SW5pdCBldmVu
dEluaXQ7CisgICAgJHtpbXBsQ2xhc3NOYW1lfUluaXQgZXZlbnRJbml0OwogCiAgICAgSlNWYWx1
ZSBpbml0aWFsaXplclZhbHVlID0gZXhlYy0+YXJndW1lbnQoMSk7CiAgICAgaWYgKCFpbml0aWFs
aXplclZhbHVlLmlzVW5kZWZpbmVkT3JOdWxsKCkpIHsKQEAgLTQwMDYsMTUgKzQwNDIsMTUgQEAg
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCAke2NvbnN0cnVjdG9yQ2xhc3NOYW1lfTo6Y29u
c3RydWN0JHtjbGFzc05hbWV9KEV4ZWMKICAgICAgICAgSlNEaWN0aW9uYXJ5IGRpY3Rpb25hcnko
ZXhlYywgaW5pdGlhbGl6ZXJPYmplY3QpOwogCiAgICAgICAgIC8vIEF0dGVtcHQgdG8gZmlsbCBp
biB0aGUgRXZlbnRJbml0LgotICAgICAgICBpZiAoIWZpbGwke2ludGVyZmFjZU5hbWV9SW5pdChl
dmVudEluaXQsIGRpY3Rpb25hcnkpKQorICAgICAgICBpZiAoIWZpbGwke2ltcGxDbGFzc05hbWV9
SW5pdChldmVudEluaXQsIGRpY3Rpb25hcnkpKQogICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKICAgICB9CiAKLSAgICBSZWZQdHI8JHtpbnRlcmZhY2VO
YW1lfT4gZXZlbnQgPSAke2ludGVyZmFjZU5hbWV9OjpjcmVhdGUoZXZlbnRUeXBlLCBldmVudElu
aXQpOworICAgIFJlZlB0cjwke2ltcGxDbGFzc05hbWV9PiBldmVudCA9ICR7aW1wbENsYXNzTmFt
ZX06OmNyZWF0ZShldmVudFR5cGUsIGV2ZW50SW5pdCk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZSh0b0pTKGV4ZWMsIGpzQ29uc3RydWN0b3ItPmdsb2JhbE9iamVjdCgpLCBldmVudC5nZXQo
KSkpOwogfQogCi1ib29sIGZpbGwke2ludGVyZmFjZU5hbWV9SW5pdCgke2ludGVyZmFjZU5hbWV9
SW5pdCYgZXZlbnRJbml0LCBKU0RpY3Rpb25hcnkmIGRpY3Rpb25hcnkpCitib29sIGZpbGwke2lt
cGxDbGFzc05hbWV9SW5pdCgke2ltcGxDbGFzc05hbWV9SW5pdCYgZXZlbnRJbml0LCBKU0RpY3Rp
b25hcnkmIGRpY3Rpb25hcnkpCiB7CiBFTkQKIApAQCAtNDA0NSwyMyArNDA4MSwyMyBAQCBFTkQK
ICAgICAgICAgfSBlbHNpZiAoJGNvZGVHZW5lcmF0b3ItPklzQ29uc3RydWN0b3JUZW1wbGF0ZSgk
aW50ZXJmYWNlLCAiVHlwZWRBcnJheSIpKSB7CiAgICAgICAgICAgICAkaW1wbEluY2x1ZGVzeyJK
U0FycmF5QnVmZmVyVmlld0hlbHBlci5oIn0gPSAxOwogICAgICAgICAgICAgbXkgJHZpZXdUeXBl
ID0gJGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IlR5cGVkQXJyYXkifTsKLSAgICAg
ICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
JHtjb25zdHJ1Y3RvckNsYXNzTmFtZX06OmNvbnN0cnVjdCR7Y2xhc3NOYW1lfShFeGVjU3RhdGUq
IGV4ZWMpXG4iKTsKKyAgICAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIkVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgJHtjb25zdHJ1Y3RvckNsYXNzTmFtZX06OmNvbnN0cnVjdCR7anND
bGFzc05hbWV9KEV4ZWNTdGF0ZSogZXhlYylcbiIpOwogICAgICAgICAgICAgcHVzaChAJG91dHB1
dEFycmF5LCAie1xuIik7CiAgICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgJHtj
b25zdHJ1Y3RvckNsYXNzTmFtZX0qIGpzQ29uc3RydWN0b3IgPSBqc0Nhc3Q8JHtjb25zdHJ1Y3Rv
ckNsYXNzTmFtZX0qPihleGVjLT5jYWxsZWUoKSk7XG4iKTsKLSAgICAgICAgICAgIHB1c2goQCRv
dXRwdXRBcnJheSwgIiAgICBSZWZQdHI8JGludGVyZmFjZU5hbWU+IGFycmF5ID0gY29uc3RydWN0
QXJyYXlCdWZmZXJWaWV3PCRpbnRlcmZhY2VOYW1lLCAkdmlld1R5cGU+KGV4ZWMpO1xuIik7Cisg
ICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgUmVmUHRyPCRpbXBsQ2xhc3NOYW1l
PiBhcnJheSA9IGNvbnN0cnVjdEFycmF5QnVmZmVyVmlldzwkaW1wbENsYXNzTmFtZSwgJHZpZXdU
eXBlPihleGVjKTtcbiIpOwogICAgICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIGlm
ICghYXJyYXkuZ2V0KCkpXG4iKTsKICAgICAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAg
ICAgICAgLy8gRXhjZXB0aW9uIGhhcyBhbHJlYWR5IGJlZW4gdGhyb3duLlxuIik7CiAgICAgICAg
ICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
SlNWYWx1ZSgpKTtcbiIpOwogICAgICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUoYXNPYmplY3QodG9KUyhleGVjLCBqc0NvbnN0cnVjdG9yLT5n
bG9iYWxPYmplY3QoKSwgYXJyYXkuZ2V0KCkpKSk7XG4iKTsKICAgICAgICAgICAgIHB1c2goQCRv
dXRwdXRBcnJheSwgIn1cblxuIik7CiAKLSAgICAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwg
IkpTQzo6SlNWYWx1ZSB0b0pTKEpTQzo6RXhlY1N0YXRlKiBleGVjLCBKU0RPTUdsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCAke2ludGVyZmFjZU5hbWV9KiBvYmplY3QpXG4iKTsKKyAgICAgICAg
ICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIkpTQzo6SlNWYWx1ZSB0b0pTKEpTQzo6RXhlY1N0YXRl
KiBleGVjLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCAke2ltcGxDbGFzc05hbWV9
KiBvYmplY3QpXG4iKTsKICAgICAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIntcbiIpOwot
ICAgICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIHJldHVybiB0b0pTQXJyYXlCdWZm
ZXJWaWV3PCR7Y2xhc3NOYW1lfT4oZXhlYywgZ2xvYmFsT2JqZWN0LCBvYmplY3QpO1xuIik7Cisg
ICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgcmV0dXJuIHRvSlNBcnJheUJ1ZmZl
clZpZXc8JHtqc0NsYXNzTmFtZX0+KGV4ZWMsIGdsb2JhbE9iamVjdCwgb2JqZWN0KTtcbiIpOwog
ICAgICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAifVxuXG4iKTsKIAogICAgICAgICAgICAg
aWYgKCRpbnRlcmZhY2UtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJDdXN0b21JbmRleGVkU2V0dGVy
In0pIHsKLSAgICAgICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICJ2b2lkICR7Y2xhc3NO
YW1lfTo6aW5kZXhTZXR0ZXIoSlNDOjpFeGVjU3RhdGUqIGV4ZWMsIHVuc2lnbmVkIGluZGV4LCBK
U0M6OkpTVmFsdWUgdmFsdWUpXG4iKTsKKyAgICAgICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJy
YXksICJ2b2lkICR7anNDbGFzc05hbWV9OjppbmRleFNldHRlcihKU0M6OkV4ZWNTdGF0ZSogZXhl
YywgdW5zaWduZWQgaW5kZXgsIEpTQzo6SlNWYWx1ZSB2YWx1ZSlcbiIpOwogICAgICAgICAgICAg
ICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIntcbiIpOwogICAgICAgICAgICAgICAgIHB1c2goQCRv
dXRwdXRBcnJheSwgIiAgICBpbXBsKCktPnNldChpbmRleCwgdmFsdWUudG9OdW1iZXIoZXhlYykp
O1xuIik7CiAgICAgICAgICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAifVxuXG4iKTsKQEAg
LTQwNzIsNyArNDEwOCw3IEBAIEVORAogICAgICAgICAgICAgICAgICRvdmVybG9hZGVkSW5kZXhT
dHJpbmcgLj0gJGZ1bmN0aW9uLT57b3ZlcmxvYWRlZEluZGV4fTsKICAgICAgICAgICAgIH0KIAot
ICAgICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCAke2NvbnN0cnVjdG9yQ2xhc3NOYW1lfTo6Y29uc3RydWN0JHtjbGFzc05hbWV9JHtvdmVy
bG9hZGVkSW5kZXhTdHJpbmd9KEV4ZWNTdGF0ZSogZXhlYylcbiIpOworICAgICAgICAgICAgcHVz
aChAJG91dHB1dEFycmF5LCAiRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCAke2NvbnN0cnVj
dG9yQ2xhc3NOYW1lfTo6Y29uc3RydWN0JHtqc0NsYXNzTmFtZX0ke292ZXJsb2FkZWRJbmRleFN0
cmluZ30oRXhlY1N0YXRlKiBleGVjKVxuIik7CiAgICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJy
YXksICJ7XG4iKTsKICAgICAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICAke2NvbnN0
cnVjdG9yQ2xhc3NOYW1lfSogY2FzdGVkVGhpcyA9IGpzQ2FzdDwke2NvbnN0cnVjdG9yQ2xhc3NO
YW1lfSo+KGV4ZWMtPmNhbGxlZSgpKTtcbiIpOwogCkBAIC00MDkwLDEzICs0MTI2LDEzIEBAIEVO
RAogICAgICAgICAgICAgIyBGSVhNRTogRm9yIG5vdywgd2UgZG8gbm90IHN1cHBvcnQgU1ZHIGNv
bnN0cnVjdG9ycy4KICAgICAgICAgICAgICMgRklYTUU6IEN1cnJlbnRseSBbQ29uc3RydWN0b3Io
Li4uKV0gZG9lcyBub3QgeWV0IHN1cHBvcnQgb3B0aW9uYWwgYXJndW1lbnRzIHdpdGhvdXQgW0Rl
ZmF1bHQ9Li4uXQogICAgICAgICAgICAgbXkgJG51bVBhcmFtZXRlcnMgPSBAeyRmdW5jdGlvbi0+
cGFyYW1ldGVyc307Ci0gICAgICAgICAgICBteSAoJGR1bW15LCAkcGFyYW1JbmRleCkgPSBHZW5l
cmF0ZVBhcmFtZXRlcnNDaGVjaygkb3V0cHV0QXJyYXksICRmdW5jdGlvbiwgJGludGVyZmFjZSwg
JG51bVBhcmFtZXRlcnMsICRpbnRlcmZhY2VOYW1lLCAiY29uc3RydWN0b3JDYWxsYmFjayIsIHVu
ZGVmLCB1bmRlZiwgdW5kZWYpOworICAgICAgICAgICAgbXkgKCRkdW1teSwgJHBhcmFtSW5kZXgp
ID0gR2VuZXJhdGVQYXJhbWV0ZXJzQ2hlY2soJG91dHB1dEFycmF5LCAkZnVuY3Rpb24sICRpbnRl
cmZhY2UsICRudW1QYXJhbWV0ZXJzLCAiY29uc3RydWN0b3JDYWxsYmFjayIsIHVuZGVmLCB1bmRl
ZiwgdW5kZWYpOwogCiAgICAgICAgICAgICBpZiAoJGNvZGVHZW5lcmF0b3ItPkV4dGVuZGVkQXR0
cmlidXRlQ29udGFpbnMoJGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkNhbGxXaXRo
In0sICJTY3JpcHRFeGVjdXRpb25Db250ZXh0IikpIHsKICAgICAgICAgICAgICAgICBwdXNoKEBj
b25zdHJ1Y3RvckFyZ0xpc3QsICJjb250ZXh0Iik7CiAgICAgICAgICAgICAgICAgcHVzaChAJG91
dHB1dEFycmF5LCAiICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQgPSBjYXN0ZWRU
aGlzLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7XG4iKTsKICAgICAgICAgICAgICAgICBwdXNo
KEAkb3V0cHV0QXJyYXksICIgICAgaWYgKCFjb250ZXh0KVxuIik7Ci0gICAgICAgICAgICAgICAg
cHVzaChAJG91dHB1dEFycmF5LCAiICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKGV4ZWMsIGNy
ZWF0ZVJlZmVyZW5jZUVycm9yKGV4ZWMsIFwiJHtpbnRlcmZhY2VOYW1lfSBjb25zdHJ1Y3RvciBh
c3NvY2lhdGVkIGRvY3VtZW50IGlzIHVuYXZhaWxhYmxlXCIpKTtcbiIpOworICAgICAgICAgICAg
ICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihleGVj
LCBjcmVhdGVSZWZlcmVuY2VFcnJvcihleGVjLCBcIiR7aW1wbENsYXNzTmFtZX0gY29uc3RydWN0
b3IgYXNzb2NpYXRlZCBkb2N1bWVudCBpcyB1bmF2YWlsYWJsZVwiKSk7XG4iKTsKICAgICAgICAg
ICAgIH0KICAgICAgICAgICAgIGlmICgkZ2VuZXJhdGluZ05hbWVkQ29uc3RydWN0b3IpIHsKICAg
ICAgICAgICAgICAgICBwdXNoKEBjb25zdHJ1Y3RvckFyZ0xpc3QsICJjYXN0ZWRUaGlzLT5kb2N1
bWVudCgpIik7CkBAIC00MTE0LDkgKzQxNTAsOSBAQCBFTkQKICAgICAgICAgICAgIH0KICAgICAg
ICAgICAgIG15ICRjb25zdHJ1Y3RvckFyZyA9IGpvaW4oIiwgIiwgQGNvbnN0cnVjdG9yQXJnTGlz
dCk7CiAgICAgICAgICAgICBpZiAoJGdlbmVyYXRpbmdOYW1lZENvbnN0cnVjdG9yKSB7Ci0gICAg
ICAgICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIFJlZlB0cjwke2ludGVyZmFjZU5h
bWV9PiBvYmplY3QgPSAke2ludGVyZmFjZU5hbWV9OjpjcmVhdGVGb3JKU0NvbnN0cnVjdG9yKCR7
Y29uc3RydWN0b3JBcmd9KTtcbiIpOworICAgICAgICAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJh
eSwgIiAgICBSZWZQdHI8JHtpbXBsQ2xhc3NOYW1lfT4gb2JqZWN0ID0gJHtpbXBsQ2xhc3NOYW1l
fTo6Y3JlYXRlRm9ySlNDb25zdHJ1Y3Rvcigke2NvbnN0cnVjdG9yQXJnfSk7XG4iKTsKICAgICAg
ICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAg
IFJlZlB0cjwke2ludGVyZmFjZU5hbWV9PiBvYmplY3QgPSAke2ludGVyZmFjZU5hbWV9OjpjcmVh
dGUoJHtjb25zdHJ1Y3RvckFyZ30pO1xuIik7CisgICAgICAgICAgICAgICAgcHVzaChAJG91dHB1
dEFycmF5LCAiICAgIFJlZlB0cjwke2ltcGxDbGFzc05hbWV9PiBvYmplY3QgPSAke2ltcGxDbGFz
c05hbWV9OjpjcmVhdGUoJHtjb25zdHJ1Y3RvckFyZ30pO1xuIik7CiAgICAgICAgICAgICB9CiAK
ICAgICAgICAgICAgIGlmICgkaW50ZXJmYWNlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiQ29uc3Ry
dWN0b3JSYWlzZXNFeGNlcHRpb24ifSkgewpAQCAtNDEzNSwxNCArNDE3MSwxNCBAQCBFTkQKIHN1
YiBHZW5lcmF0ZUNvbnN0cnVjdG9ySGVscGVyTWV0aG9kcwogewogICAgIG15ICRvdXRwdXRBcnJh
eSA9IHNoaWZ0OwotICAgIG15ICRjbGFzc05hbWUgPSBzaGlmdDsKICAgICBteSAkcHJvdG9DbGFz
c05hbWUgPSBzaGlmdDsKLSAgICBteSAkaW50ZXJmYWNlTmFtZSA9IHNoaWZ0OwotICAgIG15ICR2
aXNpYmxlSW50ZXJmYWNlTmFtZSA9IHNoaWZ0OwogICAgIG15ICRpbnRlcmZhY2UgPSBzaGlmdDsK
KyAgICBteSAkdmlzaWJsZUludGVyZmFjZU5hbWUgPSBzaGlmdDsKICAgICBteSAkZ2VuZXJhdGlu
Z05hbWVkQ29uc3RydWN0b3IgPSBzaGlmdDsKIAotICAgIG15ICRjb25zdHJ1Y3RvckNsYXNzTmFt
ZSA9ICRnZW5lcmF0aW5nTmFtZWRDb25zdHJ1Y3RvciA/ICIke2NsYXNzTmFtZX1OYW1lZENvbnN0
cnVjdG9yIiA6ICIke2NsYXNzTmFtZX1Db25zdHJ1Y3RvciI7CisgICAgbXkgJGludGVyZmFjZU5h
bWUgPSAkaW50ZXJmYWNlLT5uYW1lOworICAgIG15ICRqc0NsYXNzTmFtZSA9IEdldEpTQ2xhc3NO
YW1lKCRpbnRlcmZhY2UpOworICAgIG15ICRjb25zdHJ1Y3RvckNsYXNzTmFtZSA9ICRnZW5lcmF0
aW5nTmFtZWRDb25zdHJ1Y3RvciA/ICIke2pzQ2xhc3NOYW1lfU5hbWVkQ29uc3RydWN0b3IiIDog
IiR7anNDbGFzc05hbWV9Q29uc3RydWN0b3IiOwogICAgIG15ICRsZWFzdENvbnN0cnVjdG9yTGVu
Z3RoID0gJGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkNvbnN0cnVjdG9yUGFyYW1l
dGVycyJ9OwogICAgIGlmICghZGVmaW5lZCAkbGVhc3RDb25zdHJ1Y3Rvckxlbmd0aCkgewogICAg
ICAgICBpZiAoJGNvZGVHZW5lcmF0b3ItPklzQ29uc3RydWN0b3JUZW1wbGF0ZSgkaW50ZXJmYWNl
LCAiRXZlbnQiKSB8fCAkY29kZUdlbmVyYXRvci0+SXNDb25zdHJ1Y3RvclRlbXBsYXRlKCRpbnRl
cmZhY2UsICJUeXBlZEFycmF5IikpIHsKQEAgLTQxOTAsNyArNDIyNiw3IEBAIHN1YiBHZW5lcmF0
ZUNvbnN0cnVjdG9ySGVscGVyTWV0aG9kcwogICAgIH0gZWxzaWYgKCRnZW5lcmF0aW5nTmFtZWRD
b25zdHJ1Y3RvcikgewogICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgQmFzZTo6Zmlu
aXNoQ3JlYXRpb24oZ2xvYmFsT2JqZWN0KTtcbiIpOwogICAgICAgICBwdXNoKEAkb3V0cHV0QXJy
YXksICIgICAgQVNTRVJUKGluaGVyaXRzKCZzX2luZm8pKTtcbiIpOwotICAgICAgICBwdXNoKEAk
b3V0cHV0QXJyYXksICIgICAgcHV0RGlyZWN0KGV4ZWMtPnZtKCksIGV4ZWMtPnByb3BlcnR5TmFt
ZXMoKS5wcm90b3R5cGUsICR7Y2xhc3NOYW1lfVByb3RvdHlwZTo6c2VsZihleGVjLCBnbG9iYWxP
YmplY3QpLCBOb25lKTtcbiIpOworICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgcHV0
RGlyZWN0KGV4ZWMtPnZtKCksIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5wcm90b3R5cGUsICR7anND
bGFzc05hbWV9UHJvdG90eXBlOjpzZWxmKGV4ZWMsIGdsb2JhbE9iamVjdCksIE5vbmUpO1xuIik7
CiAgICAgfSBlbHNlIHsKICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIEJhc2U6OmZp
bmlzaENyZWF0aW9uKGV4ZWMtPnZtKCkpO1xuIik7CiAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJh
eSwgIiAgICBBU1NFUlQoaW5oZXJpdHMoJnNfaW5mbykpO1xuIik7CkBAIC00MjI3LDcgKzQyNjMs
NyBAQCBzdWIgR2VuZXJhdGVDb25zdHJ1Y3RvckhlbHBlck1ldGhvZHMKICAgICAgICAgICAgIHB1
c2goQCRvdXRwdXRBcnJheSwgIiNpZiAkY29uZGl0aW9uYWxTdHJpbmdcbiIpIGlmICRjb25kaXRp
b25hbFN0cmluZzsKICAgICAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIkNvbnN0cnVjdFR5
cGUgJHtjb25zdHJ1Y3RvckNsYXNzTmFtZX06OmdldENvbnN0cnVjdERhdGEoSlNDZWxsKiwgQ29u
c3RydWN0RGF0YSYgY29uc3RydWN0RGF0YSlcbiIpOwogICAgICAgICAgICAgcHVzaChAJG91dHB1
dEFycmF5LCAie1xuIik7Ci0gICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgY29u
c3RydWN0RGF0YS5uYXRpdmUuZnVuY3Rpb24gPSBjb25zdHJ1Y3Qke2NsYXNzTmFtZX07XG4iKTsK
KyAgICAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICBjb25zdHJ1Y3REYXRhLm5hdGl2
ZS5mdW5jdGlvbiA9IGNvbnN0cnVjdCR7anNDbGFzc05hbWV9O1xuIik7CiAgICAgICAgICAgICBw
dXNoKEAkb3V0cHV0QXJyYXksICIgICAgcmV0dXJuIENvbnN0cnVjdFR5cGVIb3N0O1xuIik7CiAg
ICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICJ9XG4iKTsKICAgICAgICAgICAgIHB1c2go
QCRvdXRwdXRBcnJheSwgIiNlbmRpZiAvLyAkY29uZGl0aW9uYWxTdHJpbmdcbiIpIGlmICRjb25k
aXRpb25hbFN0cmluZzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9DUFAvV2ViRE9NVGVzdEludGVyZmFjZUltcGxlbWVudGVkQXMuY3BwIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0NQUC9XZWJET01UZXN0SW50ZXJmYWNlSW1w
bGVtZW50ZWRBcy5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTQ0NjU5
OQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9DUFAvV2ViRE9NVGVzdEludGVyZmFjZUltcGxlbWVudGVkQXMuY3BwCkBAIC0wLDAgKzEsMTMz
IEBACisvKgorICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIFdlYktpdCBvcGVuIHNvdXJjZSBw
cm9qZWN0LgorICogVGhpcyBmaWxlIGhhcyBiZWVuIGdlbmVyYXRlZCBieSBnZW5lcmF0ZS1iaW5k
aW5ncy5wbC4gRE8gTk9UIE1PRElGWSEKKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0
d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIg
dGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBh
cyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2
ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZl
cnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRo
YXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhv
dXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkg
R2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91
bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGlj
IExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlO
Ry5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9u
LCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICogQm9zdG9uLCBNQSAw
MjExMC0xMzAxLCBVU0EuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIldl
YkRPTVRlc3RJbnRlcmZhY2VJbXBsZW1lbnRlZEFzLmgiCisKKyNpbmNsdWRlICJLVVJMLmgiCisj
aW5jbHVkZSAiV2ViRE9NU3RyaW5nLmgiCisjaW5jbHVkZSAiV2ViRE9NVGVzdEludGVyZmFjZUlt
cGxlbWVudGVkQXMuaCIKKyNpbmNsdWRlICJXZWJFeGNlcHRpb25IYW5kbGVyLmgiCisjaW5jbHVk
ZSAid3RmL3RleHQvQXRvbWljU3RyaW5nLmgiCisjaW5jbHVkZSA8d3RmL0dldFB0ci5oPgorI2lu
Y2x1ZGUgPHd0Zi9SZWZQdHIuaD4KKworc3RydWN0IFdlYkRPTVRlc3RJbnRlcmZhY2VJbXBsZW1l
bnRlZEFzOjpXZWJET01UZXN0SW50ZXJmYWNlSW1wbGVtZW50ZWRBc1ByaXZhdGUgeworICAgIFdl
YkRPTVRlc3RJbnRlcmZhY2VJbXBsZW1lbnRlZEFzUHJpdmF0ZShXZWJDb3JlOjpUZXN0SW50ZXJm
YWNlSW1wbGVtZW50ZWRBcyogb2JqZWN0ID0gMCkKKyAgICAgICAgOiBpbXBsKG9iamVjdCkKKyAg
ICB7CisgICAgfQorCisgICAgUmVmUHRyPFdlYkNvcmU6OlRlc3RJbnRlcmZhY2VJbXBsZW1lbnRl
ZEFzPiBpbXBsOworfTsKKworV2ViRE9NVGVzdEludGVyZmFjZUltcGxlbWVudGVkQXM6OldlYkRP
TVRlc3RJbnRlcmZhY2VJbXBsZW1lbnRlZEFzKCkKKyAgICA6IFdlYkRPTU9iamVjdCgpCisgICAg
LCBtX2ltcGwoMCkKK3sKK30KKworV2ViRE9NVGVzdEludGVyZmFjZUltcGxlbWVudGVkQXM6Oldl
YkRPTVRlc3RJbnRlcmZhY2VJbXBsZW1lbnRlZEFzKFdlYkNvcmU6OlRlc3RJbnRlcmZhY2VJbXBs
ZW1lbnRlZEFzKiBpbXBsKQorICAgIDogV2ViRE9NT2JqZWN0KCkKKyAgICAsIG1faW1wbChuZXcg
V2ViRE9NVGVzdEludGVyZmFjZUltcGxlbWVudGVkQXNQcml2YXRlKGltcGwpKQoreworfQorCitX
ZWJET01UZXN0SW50ZXJmYWNlSW1wbGVtZW50ZWRBczo6V2ViRE9NVGVzdEludGVyZmFjZUltcGxl
bWVudGVkQXMoY29uc3QgV2ViRE9NVGVzdEludGVyZmFjZUltcGxlbWVudGVkQXMmIGNvcHkpCisg
ICAgOiBXZWJET01PYmplY3QoKQoreworICAgIG1faW1wbCA9IGNvcHkuaW1wbCgpID8gbmV3IFdl
YkRPTVRlc3RJbnRlcmZhY2VJbXBsZW1lbnRlZEFzUHJpdmF0ZShjb3B5LmltcGwoKSkgOiAwOwor
fQorCitXZWJET01UZXN0SW50ZXJmYWNlSW1wbGVtZW50ZWRBcyYgV2ViRE9NVGVzdEludGVyZmFj
ZUltcGxlbWVudGVkQXM6Om9wZXJhdG9yPShjb25zdCBXZWJET01UZXN0SW50ZXJmYWNlSW1wbGVt
ZW50ZWRBcyYgY29weSkKK3sKKyAgICBkZWxldGUgbV9pbXBsOworICAgIG1faW1wbCA9IGNvcHku
aW1wbCgpID8gbmV3IFdlYkRPTVRlc3RJbnRlcmZhY2VJbXBsZW1lbnRlZEFzUHJpdmF0ZShjb3B5
LmltcGwoKSkgOiAwOworICAgIHJldHVybiAqdGhpczsKK30KKworV2ViQ29yZTo6VGVzdEludGVy
ZmFjZUltcGxlbWVudGVkQXMqIFdlYkRPTVRlc3RJbnRlcmZhY2VJbXBsZW1lbnRlZEFzOjppbXBs
KCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9pbXBsID8gV1RGOjpnZXRQdHIobV9pbXBsLT5pbXBs
KSA6IDA7Cit9CisKK1dlYkRPTVRlc3RJbnRlcmZhY2VJbXBsZW1lbnRlZEFzOjp+V2ViRE9NVGVz
dEludGVyZmFjZUltcGxlbWVudGVkQXMoKQoreworICAgIGRlbGV0ZSBtX2ltcGw7CisgICAgbV9p
bXBsID0gMDsKK30KKworV2ViRE9NU3RyaW5nIFdlYkRPTVRlc3RJbnRlcmZhY2VJbXBsZW1lbnRl
ZEFzOjphKCkgY29uc3QKK3sKKyAgICBpZiAoIWltcGwoKSkKKyAgICAgICAgcmV0dXJuIFdlYkRP
TVN0cmluZygpOworCisgICAgcmV0dXJuIHN0YXRpY19jYXN0PGNvbnN0IFdURjo6U3RyaW5nJj4o
aW1wbCgpLT5hKCkpOworfQorCit2b2lkIFdlYkRPTVRlc3RJbnRlcmZhY2VJbXBsZW1lbnRlZEFz
OjpzZXRBKGNvbnN0IFdlYkRPTVN0cmluZyYgbmV3QSkKK3sKKyAgICBpZiAoIWltcGwoKSkKKyAg
ICAgICAgcmV0dXJuOworCisgICAgaW1wbCgpLT5zZXRBKG5ld0EpOworfQorCitXZWJET01UZXN0
SW50ZXJmYWNlSW1wbGVtZW50ZWRBcyBXZWJET01UZXN0SW50ZXJmYWNlSW1wbGVtZW50ZWRBczo6
YigpIGNvbnN0Cit7CisgICAgaWYgKCFpbXBsKCkpCisgICAgICAgIHJldHVybiBXZWJET01UZXN0
SW50ZXJmYWNlSW1wbGVtZW50ZWRBcygpOworCisgICAgcmV0dXJuIHRvV2ViS2l0KFdURjo6Z2V0
UHRyKGltcGwoKS0+YigpKSk7Cit9CisKK3ZvaWQgV2ViRE9NVGVzdEludGVyZmFjZUltcGxlbWVu
dGVkQXM6OnNldEIoY29uc3QgV2ViRE9NVGVzdEludGVyZmFjZUltcGxlbWVudGVkQXMmIG5ld0Ip
Cit7CisgICAgaWYgKCFpbXBsKCkpCisgICAgICAgIHJldHVybjsKKworICAgIGltcGwoKS0+c2V0
Qih0b1dlYkNvcmUobmV3QikpOworfQorCitXZWJET01TdHJpbmcgV2ViRE9NVGVzdEludGVyZmFj
ZUltcGxlbWVudGVkQXM6OmZ1bmMxKGNvbnN0IFdlYkRPTVN0cmluZyYgaW5BKQoreworICAgIGlm
ICghaW1wbCgpKQorICAgICAgICByZXR1cm4gV2ViRE9NU3RyaW5nKCk7CisKKyAgICByZXR1cm4g
aW1wbCgpLT5mdW5jMShpbkEpOworfQorCitXZWJET01TdHJpbmcgV2ViRE9NVGVzdEludGVyZmFj
ZUltcGxlbWVudGVkQXM6OmZ1bmNUZXN0SW50ZXJmYWNlSW1wbGVtZW50ZWRBc1BhcmFtKGNvbnN0
IFdlYkRPTVRlc3RJbnRlcmZhY2VJbXBsZW1lbnRlZEFzJiBvcmFuZ2UpCit7CisgICAgaWYgKCFp
bXBsKCkpCisgICAgICAgIHJldHVybiBXZWJET01TdHJpbmcoKTsKKworICAgIHJldHVybiBpbXBs
KCktPmZ1bmNUZXN0SW50ZXJmYWNlSW1wbGVtZW50ZWRBc1BhcmFtKHRvV2ViQ29yZShvcmFuZ2Up
KTsKK30KKworV2ViQ29yZTo6VGVzdEludGVyZmFjZUltcGxlbWVudGVkQXMqIHRvV2ViQ29yZShj
b25zdCBXZWJET01UZXN0SW50ZXJmYWNlSW1wbGVtZW50ZWRBcyYgd3JhcHBlcikKK3sKKyAgICBy
ZXR1cm4gd3JhcHBlci5pbXBsKCk7Cit9CisKK1dlYkRPTVRlc3RJbnRlcmZhY2VJbXBsZW1lbnRl
ZEFzIHRvV2ViS2l0KFdlYkNvcmU6OlRlc3RJbnRlcmZhY2VJbXBsZW1lbnRlZEFzKiB2YWx1ZSkK
K3sKKyAgICByZXR1cm4gV2ViRE9NVGVzdEludGVyZmFjZUltcGxlbWVudGVkQXModmFsdWUpOwor
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0NQUC9X
ZWJET01UZXN0SW50ZXJmYWNlSW1wbGVtZW50ZWRBcy5oIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0NQUC9XZWJET01UZXN0SW50ZXJmYWNlSW1wbGVtZW50ZWRBcy5oCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ1YzA3ZWMKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvQ1BQL1dlYkRPTVRlc3RJ
bnRlcmZhY2VJbXBsZW1lbnRlZEFzLmgKQEAgLTAsMCArMSw2MSBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgUmVzZWFyY2ggSW4gTW90aW9uIExpbWl0ZWQgMjAxMC4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAwNiwgMjAwNywgMjAwOCwgMjAwOSBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDYgU2Ft
dWVsIFdlaW5pZyA8c2FtLndlaW5pZ0BnbWFpbC5jb20+CisgKiBDb3B5cmlnaHQgKEMpIFJlc2Vh
cmNoIEluIE1vdGlvbiBMaW1pdGVkIDIwMTAuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
VGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFu
ZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2Vu
ZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJl
IEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQg
eW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBk
aXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJ
VEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YK
KyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4g
IFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUg
ZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBH
TlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgbGli
cmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICogdGhl
IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0
aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICovCisKKyNpZm5kZWYg
V2ViRE9NVGVzdEludGVyZmFjZUltcGxlbWVudGVkQXNfaAorI2RlZmluZSBXZWJET01UZXN0SW50
ZXJmYWNlSW1wbGVtZW50ZWRBc19oCisKKyNpbmNsdWRlIDxXZWJET01PYmplY3QuaD4KKyNpbmNs
dWRlIDxXZWJET01TdHJpbmcuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworY2xhc3MgVGVzdElu
dGVyZmFjZUltcGxlbWVudGVkQXM7Cit9OworCitjbGFzcyBXZWJET01UZXN0SW50ZXJmYWNlSW1w
bGVtZW50ZWRBczsKKworY2xhc3MgV2ViRE9NVGVzdEludGVyZmFjZUltcGxlbWVudGVkQXMgOiBw
dWJsaWMgV2ViRE9NT2JqZWN0IHsKK3B1YmxpYzoKKyAgICBXZWJET01UZXN0SW50ZXJmYWNlSW1w
bGVtZW50ZWRBcygpOworICAgIGV4cGxpY2l0IFdlYkRPTVRlc3RJbnRlcmZhY2VJbXBsZW1lbnRl
ZEFzKFdlYkNvcmU6OlRlc3RJbnRlcmZhY2VJbXBsZW1lbnRlZEFzKik7CisgICAgV2ViRE9NVGVz
dEludGVyZmFjZUltcGxlbWVudGVkQXMoY29uc3QgV2ViRE9NVGVzdEludGVyZmFjZUltcGxlbWVu
dGVkQXMmKTsKKyAgICBXZWJET01UZXN0SW50ZXJmYWNlSW1wbGVtZW50ZWRBcyYgb3BlcmF0b3I9
KGNvbnN0IFdlYkRPTVRlc3RJbnRlcmZhY2VJbXBsZW1lbnRlZEFzJik7CisgICAgdmlydHVhbCB+
V2ViRE9NVGVzdEludGVyZmFjZUltcGxlbWVudGVkQXMoKTsKKworICAgIFdlYkRPTVN0cmluZyBh
KCkgY29uc3Q7CisgICAgdm9pZCBzZXRBKGNvbnN0IFdlYkRPTVN0cmluZyYpOworICAgIFdlYkRP
TVRlc3RJbnRlcmZhY2VJbXBsZW1lbnRlZEFzIGIoKSBjb25zdDsKKyAgICB2b2lkIHNldEIoY29u
c3QgV2ViRE9NVGVzdEludGVyZmFjZUltcGxlbWVudGVkQXMmKTsKKworICAgIFdlYkRPTVN0cmlu
ZyBmdW5jMShjb25zdCBXZWJET01TdHJpbmcmIGEpOworICAgIFdlYkRPTVN0cmluZyBmdW5jVGVz
dEludGVyZmFjZUltcGxlbWVudGVkQXNQYXJhbShjb25zdCBXZWJET01UZXN0SW50ZXJmYWNlSW1w
bGVtZW50ZWRBcyYgb3JhbmdlKTsKKworICAgIFdlYkNvcmU6OlRlc3RJbnRlcmZhY2VJbXBsZW1l
bnRlZEFzKiBpbXBsKCkgY29uc3Q7CisKK3Byb3RlY3RlZDoKKyAgICBzdHJ1Y3QgV2ViRE9NVGVz
dEludGVyZmFjZUltcGxlbWVudGVkQXNQcml2YXRlOworICAgIFdlYkRPTVRlc3RJbnRlcmZhY2VJ
bXBsZW1lbnRlZEFzUHJpdmF0ZSogbV9pbXBsOworfTsKKworV2ViQ29yZTo6VGVzdEludGVyZmFj
ZUltcGxlbWVudGVkQXMqIHRvV2ViQ29yZShjb25zdCBXZWJET01UZXN0SW50ZXJmYWNlSW1wbGVt
ZW50ZWRBcyYpOworV2ViRE9NVGVzdEludGVyZmFjZUltcGxlbWVudGVkQXMgdG9XZWJLaXQoV2Vi
Q29yZTo6VGVzdEludGVyZmFjZUltcGxlbWVudGVkQXMqKTsKKworI2VuZGlmCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvR09iamVjdC9XZWJLaXRET01U
ZXN0SW50ZXJmYWNlSW1wbGVtZW50ZWRBcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvR09iamVjdC9XZWJLaXRET01UZXN0SW50ZXJmYWNlSW1wbGVtZW50ZWRBcy5j
cHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGU1ZjhjZAotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9HT2JqZWN0L1dl
YktpdERPTVRlc3RJbnRlcmZhY2VJbXBsZW1lbnRlZEFzLmNwcApAQCAtMCwwICsxLDIzMiBAQAor
LyoKKyAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgV2ViS2l0IG9wZW4gc291cmNlIHByb2pl
Y3QuCisgICAgVGhpcyBmaWxlIGhhcyBiZWVuIGdlbmVyYXRlZCBieSBnZW5lcmF0ZS1iaW5kaW5n
cy5wbC4gRE8gTk9UIE1PRElGWSEKKworICAgIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJl
OyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAgICBtb2RpZnkgaXQgdW5kZXIgdGhl
IHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICAgIExpY2Vuc2UgYXMg
cHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICAgIHZl
cnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVy
c2lvbi4KKworICAgIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0
IGl0IHdpbGwgYmUgdXNlZnVsLAorICAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91
dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAgICBMaWJyYXJ5
IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKworICAgIFlvdSBzaG91
bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGlj
IExpY2Vuc2UKKyAgICBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJ
TkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRp
b24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgICAgQm9zdG9uLCBN
QSAwMjExMC0xMzAxLCBVU0EuCisqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAi
V2ViS2l0RE9NVGVzdEludGVyZmFjZUltcGxlbWVudGVkQXMuaCIKKworI2luY2x1ZGUgIkNTU0lt
cG9ydFJ1bGUuaCIKKyNpbmNsdWRlICJET01PYmplY3RDYWNoZS5oIgorI2luY2x1ZGUgIkV4Y2Vw
dGlvbkNvZGUuaCIKKyNpbmNsdWRlICJKU01haW5UaHJlYWRFeGVjU3RhdGUuaCIKKyNpbmNsdWRl
ICJXZWJLaXRET01Qcml2YXRlLmgiCisjaW5jbHVkZSAiV2ViS2l0RE9NVGVzdEludGVyZmFjZUlt
cGxlbWVudGVkQXNQcml2YXRlLmgiCisjaW5jbHVkZSAiZ29iamVjdC9Db252ZXJ0VG9VVEY4U3Ry
aW5nLmgiCisjaW5jbHVkZSA8d3RmL0dldFB0ci5oPgorI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4K
KworI2RlZmluZSBXRUJLSVRfRE9NX1RFU1RfSU5URVJGQUNFX0lNUExFTUVOVEVEX0FTX0dFVF9Q
UklWQVRFKG9iaikgR19UWVBFX0lOU1RBTkNFX0dFVF9QUklWQVRFKG9iaiwgV0VCS0lUX1RZUEVf
RE9NX1RFU1RfSU5URVJGQUNFX0lNUExFTUVOVEVEX0FTLCBXZWJLaXRET01UZXN0SW50ZXJmYWNl
SW1wbGVtZW50ZWRBc1ByaXZhdGUpCisKK3R5cGVkZWYgc3RydWN0IF9XZWJLaXRET01UZXN0SW50
ZXJmYWNlSW1wbGVtZW50ZWRBc1ByaXZhdGUgeworICAgIFJlZlB0cjxXZWJDb3JlOjpUZXN0SW50
ZXJmYWNlSW1wbGVtZW50ZWRBcz4gY29yZU9iamVjdDsKK30gV2ViS2l0RE9NVGVzdEludGVyZmFj
ZUltcGxlbWVudGVkQXNQcml2YXRlOworCituYW1lc3BhY2UgV2ViS2l0IHsKKworV2ViS2l0RE9N
VGVzdEludGVyZmFjZUltcGxlbWVudGVkQXMqIGtpdChXZWJDb3JlOjpUZXN0SW50ZXJmYWNlSW1w
bGVtZW50ZWRBcyogb2JqKQoreworICAgIGlmICghb2JqKQorICAgICAgICByZXR1cm4gMDsKKwor
ICAgIGlmIChncG9pbnRlciByZXQgPSBET01PYmplY3RDYWNoZTo6Z2V0KG9iaikpCisgICAgICAg
IHJldHVybiBXRUJLSVRfRE9NX1RFU1RfSU5URVJGQUNFX0lNUExFTUVOVEVEX0FTKHJldCk7CisK
KyAgICByZXR1cm4gd3JhcFRlc3RJbnRlcmZhY2VJbXBsZW1lbnRlZEFzKG9iaik7Cit9CisKK1dl
YkNvcmU6OlRlc3RJbnRlcmZhY2VJbXBsZW1lbnRlZEFzKiBjb3JlKFdlYktpdERPTVRlc3RJbnRl
cmZhY2VJbXBsZW1lbnRlZEFzKiByZXF1ZXN0KQoreworICAgIHJldHVybiByZXF1ZXN0ID8gc3Rh
dGljX2Nhc3Q8V2ViQ29yZTo6VGVzdEludGVyZmFjZUltcGxlbWVudGVkQXMqPihXRUJLSVRfRE9N
X09CSkVDVChyZXF1ZXN0KS0+Y29yZU9iamVjdCkgOiAwOworfQorCitXZWJLaXRET01UZXN0SW50
ZXJmYWNlSW1wbGVtZW50ZWRBcyogd3JhcFRlc3RJbnRlcmZhY2VJbXBsZW1lbnRlZEFzKFdlYkNv
cmU6OlRlc3RJbnRlcmZhY2VJbXBsZW1lbnRlZEFzKiBjb3JlT2JqZWN0KQoreworICAgIEFTU0VS
VChjb3JlT2JqZWN0KTsKKyAgICByZXR1cm4gV0VCS0lUX0RPTV9URVNUX0lOVEVSRkFDRV9JTVBM
RU1FTlRFRF9BUyhnX29iamVjdF9uZXcoV0VCS0lUX1RZUEVfRE9NX1RFU1RfSU5URVJGQUNFX0lN
UExFTUVOVEVEX0FTLCAiY29yZS1vYmplY3QiLCBjb3JlT2JqZWN0LCBOVUxMKSk7Cit9CisKK30g
Ly8gbmFtZXNwYWNlIFdlYktpdAorCitHX0RFRklORV9UWVBFKFdlYktpdERPTVRlc3RJbnRlcmZh
Y2VJbXBsZW1lbnRlZEFzLCB3ZWJraXRfZG9tX3Rlc3RfaW50ZXJmYWNlX2ltcGxlbWVudGVkX2Fz
LCBXRUJLSVRfVFlQRV9ET01fT0JKRUNUKQorCitlbnVtIHsKKyAgICBQUk9QXzAsCisgICAgUFJP
UF9BLAorICAgIFBST1BfQiwKK307CisKK3N0YXRpYyB2b2lkIHdlYmtpdF9kb21fdGVzdF9pbnRl
cmZhY2VfaW1wbGVtZW50ZWRfYXNfZmluYWxpemUoR09iamVjdCogb2JqZWN0KQoreworICAgIFdl
YktpdERPTVRlc3RJbnRlcmZhY2VJbXBsZW1lbnRlZEFzUHJpdmF0ZSogcHJpdiA9IFdFQktJVF9E
T01fVEVTVF9JTlRFUkZBQ0VfSU1QTEVNRU5URURfQVNfR0VUX1BSSVZBVEUob2JqZWN0KTsKKwor
ICAgIFdlYktpdDo6RE9NT2JqZWN0Q2FjaGU6OmZvcmdldChwcml2LT5jb3JlT2JqZWN0LmdldCgp
KTsKKworICAgIHByaXYtPn5XZWJLaXRET01UZXN0SW50ZXJmYWNlSW1wbGVtZW50ZWRBc1ByaXZh
dGUoKTsKKyAgICBHX09CSkVDVF9DTEFTUyh3ZWJraXRfZG9tX3Rlc3RfaW50ZXJmYWNlX2ltcGxl
bWVudGVkX2FzX3BhcmVudF9jbGFzcyktPmZpbmFsaXplKG9iamVjdCk7Cit9CisKK3N0YXRpYyB2
b2lkIHdlYmtpdF9kb21fdGVzdF9pbnRlcmZhY2VfaW1wbGVtZW50ZWRfYXNfc2V0X3Byb3BlcnR5
KEdPYmplY3QqIG9iamVjdCwgZ3VpbnQgcHJvcGVydHlJZCwgY29uc3QgR1ZhbHVlKiB2YWx1ZSwg
R1BhcmFtU3BlYyogcHNwZWMpCit7CisgICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRl
IHN0YXRlOworCisgICAgV2ViS2l0RE9NVGVzdEludGVyZmFjZUltcGxlbWVudGVkQXMqIHNlbGYg
PSBXRUJLSVRfRE9NX1RFU1RfSU5URVJGQUNFX0lNUExFTUVOVEVEX0FTKG9iamVjdCk7CisgICAg
V2ViQ29yZTo6VGVzdEludGVyZmFjZUltcGxlbWVudGVkQXMqIGNvcmVTZWxmID0gV2ViS2l0Ojpj
b3JlKHNlbGYpOworCisgICAgc3dpdGNoIChwcm9wZXJ0eUlkKSB7CisgICAgY2FzZSBQUk9QX0E6
IHsKKyAgICAgICAgY29yZVNlbGYtPnNldEEoV1RGOjpTdHJpbmc6OmZyb21VVEY4KGdfdmFsdWVf
Z2V0X3N0cmluZyh2YWx1ZSkpKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIGRlZmF1bHQ6
CisgICAgICAgIEdfT0JKRUNUX1dBUk5fSU5WQUxJRF9QUk9QRVJUWV9JRChvYmplY3QsIHByb3Bl
cnR5SWQsIHBzcGVjKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorfQorCitzdGF0aWMgdm9pZCB3
ZWJraXRfZG9tX3Rlc3RfaW50ZXJmYWNlX2ltcGxlbWVudGVkX2FzX2dldF9wcm9wZXJ0eShHT2Jq
ZWN0KiBvYmplY3QsIGd1aW50IHByb3BlcnR5SWQsIEdWYWx1ZSogdmFsdWUsIEdQYXJhbVNwZWMq
IHBzcGVjKQoreworICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKKwor
ICAgIFdlYktpdERPTVRlc3RJbnRlcmZhY2VJbXBsZW1lbnRlZEFzKiBzZWxmID0gV0VCS0lUX0RP
TV9URVNUX0lOVEVSRkFDRV9JTVBMRU1FTlRFRF9BUyhvYmplY3QpOworICAgIFdlYkNvcmU6OlRl
c3RJbnRlcmZhY2VJbXBsZW1lbnRlZEFzKiBjb3JlU2VsZiA9IFdlYktpdDo6Y29yZShzZWxmKTsK
KworICAgIHN3aXRjaCAocHJvcGVydHlJZCkgeworICAgIGNhc2UgUFJPUF9BOiB7CisgICAgICAg
IGdfdmFsdWVfdGFrZV9zdHJpbmcodmFsdWUsIGNvbnZlcnRUb1VURjhTdHJpbmcoY29yZVNlbGYt
PmEoKSkpOworICAgICAgICBicmVhazsKKyAgICB9CisgICAgY2FzZSBQUk9QX0I6IHsKKyAgICAg
ICAgUmVmUHRyPFdlYkNvcmU6OlRlc3RJbnRlcmZhY2VJbXBsZW1lbnRlZEFzPiBwdHIgPSBjb3Jl
U2VsZi0+YigpOworICAgICAgICBnX3ZhbHVlX3NldF9vYmplY3QodmFsdWUsIFdlYktpdDo6a2l0
KHB0ci5nZXQoKSkpOworICAgICAgICBicmVhazsKKyAgICB9CisgICAgZGVmYXVsdDoKKyAgICAg
ICAgR19PQkpFQ1RfV0FSTl9JTlZBTElEX1BST1BFUlRZX0lEKG9iamVjdCwgcHJvcGVydHlJZCwg
cHNwZWMpOworICAgICAgICBicmVhazsKKyAgICB9Cit9CisKK3N0YXRpYyBHT2JqZWN0KiB3ZWJr
aXRfZG9tX3Rlc3RfaW50ZXJmYWNlX2ltcGxlbWVudGVkX2FzX2NvbnN0cnVjdG9yKEdUeXBlIHR5
cGUsIGd1aW50IGNvbnN0cnVjdFByb3BlcnRpZXNDb3VudCwgR09iamVjdENvbnN0cnVjdFBhcmFt
KiBjb25zdHJ1Y3RQcm9wZXJ0aWVzKQoreworICAgIEdPYmplY3QqIG9iamVjdCA9IEdfT0JKRUNU
X0NMQVNTKHdlYmtpdF9kb21fdGVzdF9pbnRlcmZhY2VfaW1wbGVtZW50ZWRfYXNfcGFyZW50X2Ns
YXNzKS0+Y29uc3RydWN0b3IodHlwZSwgY29uc3RydWN0UHJvcGVydGllc0NvdW50LCBjb25zdHJ1
Y3RQcm9wZXJ0aWVzKTsKKworICAgIFdlYktpdERPTVRlc3RJbnRlcmZhY2VJbXBsZW1lbnRlZEFz
UHJpdmF0ZSogcHJpdiA9IFdFQktJVF9ET01fVEVTVF9JTlRFUkZBQ0VfSU1QTEVNRU5URURfQVNf
R0VUX1BSSVZBVEUob2JqZWN0KTsKKyAgICBwcml2LT5jb3JlT2JqZWN0ID0gc3RhdGljX2Nhc3Q8
V2ViQ29yZTo6VGVzdEludGVyZmFjZUltcGxlbWVudGVkQXMqPihXRUJLSVRfRE9NX09CSkVDVChv
YmplY3QpLT5jb3JlT2JqZWN0KTsKKyAgICBXZWJLaXQ6OkRPTU9iamVjdENhY2hlOjpwdXQocHJp
di0+Y29yZU9iamVjdC5nZXQoKSwgb2JqZWN0KTsKKworICAgIHJldHVybiBvYmplY3Q7Cit9CisK
K3N0YXRpYyB2b2lkIHdlYmtpdF9kb21fdGVzdF9pbnRlcmZhY2VfaW1wbGVtZW50ZWRfYXNfY2xh
c3NfaW5pdChXZWJLaXRET01UZXN0SW50ZXJmYWNlSW1wbGVtZW50ZWRBc0NsYXNzKiByZXF1ZXN0
Q2xhc3MpCit7CisgICAgR09iamVjdENsYXNzKiBnb2JqZWN0Q2xhc3MgPSBHX09CSkVDVF9DTEFT
UyhyZXF1ZXN0Q2xhc3MpOworICAgIGdfdHlwZV9jbGFzc19hZGRfcHJpdmF0ZShnb2JqZWN0Q2xh
c3MsIHNpemVvZihXZWJLaXRET01UZXN0SW50ZXJmYWNlSW1wbGVtZW50ZWRBc1ByaXZhdGUpKTsK
KyAgICBnb2JqZWN0Q2xhc3MtPmNvbnN0cnVjdG9yID0gd2Via2l0X2RvbV90ZXN0X2ludGVyZmFj
ZV9pbXBsZW1lbnRlZF9hc19jb25zdHJ1Y3RvcjsKKyAgICBnb2JqZWN0Q2xhc3MtPmZpbmFsaXpl
ID0gd2Via2l0X2RvbV90ZXN0X2ludGVyZmFjZV9pbXBsZW1lbnRlZF9hc19maW5hbGl6ZTsKKyAg
ICBnb2JqZWN0Q2xhc3MtPnNldF9wcm9wZXJ0eSA9IHdlYmtpdF9kb21fdGVzdF9pbnRlcmZhY2Vf
aW1wbGVtZW50ZWRfYXNfc2V0X3Byb3BlcnR5OworICAgIGdvYmplY3RDbGFzcy0+Z2V0X3Byb3Bl
cnR5ID0gd2Via2l0X2RvbV90ZXN0X2ludGVyZmFjZV9pbXBsZW1lbnRlZF9hc19nZXRfcHJvcGVy
dHk7CisKKyAgICBnX29iamVjdF9jbGFzc19pbnN0YWxsX3Byb3BlcnR5KGdvYmplY3RDbGFzcywK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBST1BfQSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGdfcGFyYW1fc3BlY19zdHJpbmcoImEiLCAvKiBuYW1l
ICovCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICJ0ZXN0X2ludGVyZmFjZV9pbXBsZW1lbnRlZF9hc19hIiwgLyogc2hvcnQgZGVzY3Jp
cHRpb24gKi8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgInJlYWQtd3JpdGUgIGdjaGFyKiBUZXN0SW50ZXJmYWNlSW1wbGVtZW50ZWRB
cy5hIiwgLyogbG9uZ2VyIC0gY291bGQgZG8gd2l0aCBzb21lIGV4dHJhIGRvYyBzdHVmZiBoZXJl
ICovCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICIiLCAvKiBkZWZhdWx0ICovCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdFQktJVF9QQVJBTV9SRUFEV1JJVEUpKTsKKyAg
ICBnX29iamVjdF9jbGFzc19pbnN0YWxsX3Byb3BlcnR5KGdvYmplY3RDbGFzcywKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBST1BfQiwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGdfcGFyYW1fc3BlY19vYmplY3QoImIiLCAvKiBuYW1lICovCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ0
ZXN0X2ludGVyZmFjZV9pbXBsZW1lbnRlZF9hc19iIiwgLyogc2hvcnQgZGVzY3JpcHRpb24gKi8K
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgInJlYWQtd3JpdGUgIFdlYktpdERPTVRlc3RJbnRlcmZhY2VJbXBsZW1lbnRlZEFzKiBUZXN0
SW50ZXJmYWNlSW1wbGVtZW50ZWRBcy5iIiwgLyogbG9uZ2VyIC0gY291bGQgZG8gd2l0aCBzb21l
IGV4dHJhIGRvYyBzdHVmZiBoZXJlICovCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdFQktJVF9UWVBFX0RPTV9URVNUX0lOVEVSRkFD
RV9JTVBMRU1FTlRFRF9BUywgLyogZ29iamVjdCB0eXBlICovCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdFQktJVF9QQVJBTV9SRUFE
V1JJVEUpKTsKK30KKworc3RhdGljIHZvaWQgd2Via2l0X2RvbV90ZXN0X2ludGVyZmFjZV9pbXBs
ZW1lbnRlZF9hc19pbml0KFdlYktpdERPTVRlc3RJbnRlcmZhY2VJbXBsZW1lbnRlZEFzKiByZXF1
ZXN0KQoreworICAgIFdlYktpdERPTVRlc3RJbnRlcmZhY2VJbXBsZW1lbnRlZEFzUHJpdmF0ZSog
cHJpdiA9IFdFQktJVF9ET01fVEVTVF9JTlRFUkZBQ0VfSU1QTEVNRU5URURfQVNfR0VUX1BSSVZB
VEUocmVxdWVzdCk7CisgICAgbmV3IChwcml2KSBXZWJLaXRET01UZXN0SW50ZXJmYWNlSW1wbGVt
ZW50ZWRBc1ByaXZhdGUoKTsKK30KKworZ2NoYXIqCit3ZWJraXRfZG9tX3Rlc3RfaW50ZXJmYWNl
X2ltcGxlbWVudGVkX2FzX2Z1bmMxKFdlYktpdERPTVRlc3RJbnRlcmZhY2VJbXBsZW1lbnRlZEFz
KiBzZWxmLCBjb25zdCBnY2hhciogYSkKK3sKKyAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxs
U3RhdGUgc3RhdGU7CisgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoV0VCS0lUX0RPTV9JU19URVNU
X0lOVEVSRkFDRV9JTVBMRU1FTlRFRF9BUyhzZWxmKSwgMCk7CisgICAgZ19yZXR1cm5fdmFsX2lm
X2ZhaWwoYSwgMCk7CisgICAgV2ViQ29yZTo6VGVzdEludGVyZmFjZUltcGxlbWVudGVkQXMqIGl0
ZW0gPSBXZWJLaXQ6OmNvcmUoc2VsZik7CisgICAgV1RGOjpTdHJpbmcgY29udmVydGVkQSA9IFdU
Rjo6U3RyaW5nOjpmcm9tVVRGOChhKTsKKyAgICBnY2hhciogcmVzdWx0ID0gY29udmVydFRvVVRG
OFN0cmluZyhpdGVtLT5mdW5jMShjb252ZXJ0ZWRBKSk7CisgICAgcmV0dXJuIHJlc3VsdDsKK30K
KworZ2NoYXIqCit3ZWJraXRfZG9tX3Rlc3RfaW50ZXJmYWNlX2ltcGxlbWVudGVkX2FzX2Z1bmNf
dGVzdF9pbnRlcmZhY2VfaW1wbGVtZW50ZWRfYXNfcGFyYW0oV2ViS2l0RE9NVGVzdEludGVyZmFj
ZUltcGxlbWVudGVkQXMqIHNlbGYsIFdlYktpdERPTVRlc3RJbnRlcmZhY2VJbXBsZW1lbnRlZEFz
KiBvcmFuZ2UpCit7CisgICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOwor
ICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKFdFQktJVF9ET01fSVNfVEVTVF9JTlRFUkZBQ0VfSU1Q
TEVNRU5URURfQVMoc2VsZiksIDApOworICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKFdFQktJVF9E
T01fSVNfVEVTVF9JTlRFUkZBQ0VfSU1QTEVNRU5URURfQVMob3JhbmdlKSwgMCk7CisgICAgV2Vi
Q29yZTo6VGVzdEludGVyZmFjZUltcGxlbWVudGVkQXMqIGl0ZW0gPSBXZWJLaXQ6OmNvcmUoc2Vs
Zik7CisgICAgV2ViQ29yZTo6VGVzdEludGVyZmFjZUltcGxlbWVudGVkQXMqIGNvbnZlcnRlZE9y
YW5nZSA9IFdlYktpdDo6Y29yZShvcmFuZ2UpOworICAgIGdjaGFyKiByZXN1bHQgPSBjb252ZXJ0
VG9VVEY4U3RyaW5nKGl0ZW0tPmZ1bmNUZXN0SW50ZXJmYWNlSW1wbGVtZW50ZWRBc1BhcmFtKGNv
bnZlcnRlZE9yYW5nZSkpOworICAgIHJldHVybiByZXN1bHQ7Cit9CisKK2djaGFyKgord2Via2l0
X2RvbV90ZXN0X2ludGVyZmFjZV9pbXBsZW1lbnRlZF9hc19nZXRfYShXZWJLaXRET01UZXN0SW50
ZXJmYWNlSW1wbGVtZW50ZWRBcyogc2VsZikKK3sKKyAgICBXZWJDb3JlOjpKU01haW5UaHJlYWRO
dWxsU3RhdGUgc3RhdGU7CisgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoV0VCS0lUX0RPTV9JU19U
RVNUX0lOVEVSRkFDRV9JTVBMRU1FTlRFRF9BUyhzZWxmKSwgMCk7CisgICAgV2ViQ29yZTo6VGVz
dEludGVyZmFjZUltcGxlbWVudGVkQXMqIGl0ZW0gPSBXZWJLaXQ6OmNvcmUoc2VsZik7CisgICAg
Z2NoYXIqIHJlc3VsdCA9IGNvbnZlcnRUb1VURjhTdHJpbmcoaXRlbS0+YSgpKTsKKyAgICByZXR1
cm4gcmVzdWx0OworfQorCit2b2lkCit3ZWJraXRfZG9tX3Rlc3RfaW50ZXJmYWNlX2ltcGxlbWVu
dGVkX2FzX3NldF9hKFdlYktpdERPTVRlc3RJbnRlcmZhY2VJbXBsZW1lbnRlZEFzKiBzZWxmLCBj
b25zdCBnY2hhciogdmFsdWUpCit7CisgICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRl
IHN0YXRlOworICAgIGdfcmV0dXJuX2lmX2ZhaWwoV0VCS0lUX0RPTV9JU19URVNUX0lOVEVSRkFD
RV9JTVBMRU1FTlRFRF9BUyhzZWxmKSk7CisgICAgZ19yZXR1cm5faWZfZmFpbCh2YWx1ZSk7Cisg
ICAgV2ViQ29yZTo6VGVzdEludGVyZmFjZUltcGxlbWVudGVkQXMqIGl0ZW0gPSBXZWJLaXQ6OmNv
cmUoc2VsZik7CisgICAgV1RGOjpTdHJpbmcgY29udmVydGVkVmFsdWUgPSBXVEY6OlN0cmluZzo6
ZnJvbVVURjgodmFsdWUpOworICAgIGl0ZW0tPnNldEEoY29udmVydGVkVmFsdWUpOworfQorCitX
ZWJLaXRET01UZXN0SW50ZXJmYWNlSW1wbGVtZW50ZWRBcyoKK3dlYmtpdF9kb21fdGVzdF9pbnRl
cmZhY2VfaW1wbGVtZW50ZWRfYXNfZ2V0X2IoV2ViS2l0RE9NVGVzdEludGVyZmFjZUltcGxlbWVu
dGVkQXMqIHNlbGYpCit7CisgICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRl
OworICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKFdFQktJVF9ET01fSVNfVEVTVF9JTlRFUkZBQ0Vf
SU1QTEVNRU5URURfQVMoc2VsZiksIDApOworICAgIFdlYkNvcmU6OlRlc3RJbnRlcmZhY2VJbXBs
ZW1lbnRlZEFzKiBpdGVtID0gV2ViS2l0Ojpjb3JlKHNlbGYpOworICAgIFJlZlB0cjxXZWJDb3Jl
OjpUZXN0SW50ZXJmYWNlSW1wbGVtZW50ZWRBcz4gZ29iamVjdFJlc3VsdCA9IFdURjo6Z2V0UHRy
KGl0ZW0tPmIoKSk7CisgICAgcmV0dXJuIFdlYktpdDo6a2l0KGdvYmplY3RSZXN1bHQuZ2V0KCkp
OworfQorCit2b2lkCit3ZWJraXRfZG9tX3Rlc3RfaW50ZXJmYWNlX2ltcGxlbWVudGVkX2FzX3Nl
dF9iKFdlYktpdERPTVRlc3RJbnRlcmZhY2VJbXBsZW1lbnRlZEFzKiBzZWxmLCBXZWJLaXRET01U
ZXN0SW50ZXJmYWNlSW1wbGVtZW50ZWRBcyogdmFsdWUpCit7CisgICAgV2ViQ29yZTo6SlNNYWlu
VGhyZWFkTnVsbFN0YXRlIHN0YXRlOworICAgIGdfcmV0dXJuX2lmX2ZhaWwoV0VCS0lUX0RPTV9J
U19URVNUX0lOVEVSRkFDRV9JTVBMRU1FTlRFRF9BUyhzZWxmKSk7CisgICAgZ19yZXR1cm5faWZf
ZmFpbChXRUJLSVRfRE9NX0lTX1RFU1RfSU5URVJGQUNFX0lNUExFTUVOVEVEX0FTKHZhbHVlKSk7
CisgICAgV2ViQ29yZTo6VGVzdEludGVyZmFjZUltcGxlbWVudGVkQXMqIGl0ZW0gPSBXZWJLaXQ6
OmNvcmUoc2VsZik7CisgICAgV2ViQ29yZTo6VGVzdEludGVyZmFjZUltcGxlbWVudGVkQXMqIGNv
bnZlcnRlZFZhbHVlID0gV2ViS2l0Ojpjb3JlKHZhbHVlKTsKKyAgICBpdGVtLT5zZXRCKGNvbnZl
cnRlZFZhbHVlKTsKK30KKwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0dPYmplY3QvV2ViS2l0RE9NVGVzdEludGVyZmFjZUltcGxlbWVudGVkQXMuaCBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9HT2JqZWN0L1dlYktpdERPTVRl
c3RJbnRlcmZhY2VJbXBsZW1lbnRlZEFzLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMC4uMGI4M2VjMgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9HT2JqZWN0L1dlYktpdERPTVRlc3RJbnRlcmZhY2VJbXBsZW1lbnRlZEFz
LmgKQEAgLTAsMCArMSwxMTggQEAKKy8qCisgICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIFdl
YktpdCBvcGVuIHNvdXJjZSBwcm9qZWN0LgorICAgIFRoaXMgZmlsZSBoYXMgYmVlbiBnZW5lcmF0
ZWQgYnkgZ2VuZXJhdGUtYmluZGluZ3MucGwuIERPIE5PVCBNT0RJRlkhCisKKyAgICBUaGlzIGxp
YnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisg
ICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQ
dWJsaWMKKyAgICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3Vu
ZGF0aW9uOyBlaXRoZXIKKyAgICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3Vy
IG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisKKyAgICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJp
YnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAgICBidXQgV0lUSE9V
VCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICAg
IE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNl
ZSB0aGUgR05VCisgICAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRl
dGFpbHMuCisKKyAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUg
TGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgICAgYWxvbmcgd2l0aCB0aGlzIGxpYnJh
cnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAgICB0aGUg
RnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRo
IEZsb29yLAorICAgIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorKi8KKworI2lmICFkZWZp
bmVkKF9fV0VCS0lURE9NX0hfSU5TSURFX18pICYmICFkZWZpbmVkKEJVSUxESU5HX1dFQktJVCkK
KyNlcnJvciAiT25seSA8d2Via2l0ZG9tL3dlYmtpdGRvbS5oPiBjYW4gYmUgaW5jbHVkZWQgZGly
ZWN0bHkuIgorI2VuZGlmCisKKyNpZm5kZWYgV2ViS2l0RE9NVGVzdEludGVyZmFjZUltcGxlbWVu
dGVkQXNfaAorI2RlZmluZSBXZWJLaXRET01UZXN0SW50ZXJmYWNlSW1wbGVtZW50ZWRBc19oCisK
KyNpbmNsdWRlIDxnbGliLW9iamVjdC5oPgorI2luY2x1ZGUgPHdlYmtpdGRvbS9XZWJLaXRET01P
YmplY3QuaD4KKyNpbmNsdWRlIDx3ZWJraXRkb20vd2Via2l0ZG9tZGVmaW5lcy5oPgorCitHX0JF
R0lOX0RFQ0xTCisKKyNkZWZpbmUgV0VCS0lUX1RZUEVfRE9NX1RFU1RfSU5URVJGQUNFX0lNUExF
TUVOVEVEX0FTICAgICAgICAgICAgKHdlYmtpdF9kb21fdGVzdF9pbnRlcmZhY2VfaW1wbGVtZW50
ZWRfYXNfZ2V0X3R5cGUoKSkKKyNkZWZpbmUgV0VCS0lUX0RPTV9URVNUX0lOVEVSRkFDRV9JTVBM
RU1FTlRFRF9BUyhvYmopICAgICAgICAgICAgKEdfVFlQRV9DSEVDS19JTlNUQU5DRV9DQVNUKChv
YmopLCBXRUJLSVRfVFlQRV9ET01fVEVTVF9JTlRFUkZBQ0VfSU1QTEVNRU5URURfQVMsIFdlYktp
dERPTVRlc3RJbnRlcmZhY2VJbXBsZW1lbnRlZEFzKSkKKyNkZWZpbmUgV0VCS0lUX0RPTV9URVNU
X0lOVEVSRkFDRV9JTVBMRU1FTlRFRF9BU19DTEFTUyhrbGFzcykgICAgKEdfVFlQRV9DSEVDS19D
TEFTU19DQVNUKChrbGFzcyksICBXRUJLSVRfVFlQRV9ET01fVEVTVF9JTlRFUkZBQ0VfSU1QTEVN
RU5URURfQVMsIFdlYktpdERPTVRlc3RJbnRlcmZhY2VJbXBsZW1lbnRlZEFzQ2xhc3MpCisjZGVm
aW5lIFdFQktJVF9ET01fSVNfVEVTVF9JTlRFUkZBQ0VfSU1QTEVNRU5URURfQVMob2JqKSAgICAg
ICAgIChHX1RZUEVfQ0hFQ0tfSU5TVEFOQ0VfVFlQRSgob2JqKSwgV0VCS0lUX1RZUEVfRE9NX1RF
U1RfSU5URVJGQUNFX0lNUExFTUVOVEVEX0FTKSkKKyNkZWZpbmUgV0VCS0lUX0RPTV9JU19URVNU
X0lOVEVSRkFDRV9JTVBMRU1FTlRFRF9BU19DTEFTUyhrbGFzcykgKEdfVFlQRV9DSEVDS19DTEFT
U19UWVBFKChrbGFzcyksICBXRUJLSVRfVFlQRV9ET01fVEVTVF9JTlRFUkZBQ0VfSU1QTEVNRU5U
RURfQVMpKQorI2RlZmluZSBXRUJLSVRfRE9NX1RFU1RfSU5URVJGQUNFX0lNUExFTUVOVEVEX0FT
X0dFVF9DTEFTUyhvYmopICAoR19UWVBFX0lOU1RBTkNFX0dFVF9DTEFTUygob2JqKSwgIFdFQktJ
VF9UWVBFX0RPTV9URVNUX0lOVEVSRkFDRV9JTVBMRU1FTlRFRF9BUywgV2ViS2l0RE9NVGVzdElu
dGVyZmFjZUltcGxlbWVudGVkQXNDbGFzcykpCisKK3N0cnVjdCBfV2ViS2l0RE9NVGVzdEludGVy
ZmFjZUltcGxlbWVudGVkQXMgeworICAgIFdlYktpdERPTU9iamVjdCBwYXJlbnRfaW5zdGFuY2U7
Cit9OworCitzdHJ1Y3QgX1dlYktpdERPTVRlc3RJbnRlcmZhY2VJbXBsZW1lbnRlZEFzQ2xhc3Mg
eworICAgIFdlYktpdERPTU9iamVjdENsYXNzIHBhcmVudF9jbGFzczsKK307CisKK1dFQktJVF9B
UEkgR1R5cGUKK3dlYmtpdF9kb21fdGVzdF9pbnRlcmZhY2VfaW1wbGVtZW50ZWRfYXNfZ2V0X3R5
cGUgKHZvaWQpOworCisvKioKKyAqIHdlYmtpdF9kb21fdGVzdF9pbnRlcmZhY2VfaW1wbGVtZW50
ZWRfYXNfZnVuYzE6CisgKiBAc2VsZjogQSAjV2ViS2l0RE9NVGVzdEludGVyZmFjZUltcGxlbWVu
dGVkQXMKKyAqIEBhOiBBICNnY2hhcgorICoKKyAqIFJldHVybnM6CisgKgorKiovCitXRUJLSVRf
QVBJIGdjaGFyKgord2Via2l0X2RvbV90ZXN0X2ludGVyZmFjZV9pbXBsZW1lbnRlZF9hc19mdW5j
MShXZWJLaXRET01UZXN0SW50ZXJmYWNlSW1wbGVtZW50ZWRBcyogc2VsZiwgY29uc3QgZ2NoYXIq
IGEpOworCisvKioKKyAqIHdlYmtpdF9kb21fdGVzdF9pbnRlcmZhY2VfaW1wbGVtZW50ZWRfYXNf
ZnVuY190ZXN0X2ludGVyZmFjZV9pbXBsZW1lbnRlZF9hc19wYXJhbToKKyAqIEBzZWxmOiBBICNX
ZWJLaXRET01UZXN0SW50ZXJmYWNlSW1wbGVtZW50ZWRBcworICogQG9yYW5nZTogQSAjV2ViS2l0
RE9NVGVzdEludGVyZmFjZUltcGxlbWVudGVkQXMKKyAqCisgKiBSZXR1cm5zOgorICoKKyoqLwor
V0VCS0lUX0FQSSBnY2hhcioKK3dlYmtpdF9kb21fdGVzdF9pbnRlcmZhY2VfaW1wbGVtZW50ZWRf
YXNfZnVuY190ZXN0X2ludGVyZmFjZV9pbXBsZW1lbnRlZF9hc19wYXJhbShXZWJLaXRET01UZXN0
SW50ZXJmYWNlSW1wbGVtZW50ZWRBcyogc2VsZiwgV2ViS2l0RE9NVGVzdEludGVyZmFjZUltcGxl
bWVudGVkQXMqIG9yYW5nZSk7CisKKy8qKgorICogd2Via2l0X2RvbV90ZXN0X2ludGVyZmFjZV9p
bXBsZW1lbnRlZF9hc19nZXRfYToKKyAqIEBzZWxmOiBBICNXZWJLaXRET01UZXN0SW50ZXJmYWNl
SW1wbGVtZW50ZWRBcworICoKKyAqIFJldHVybnM6CisgKgorKiovCitXRUJLSVRfQVBJIGdjaGFy
Kgord2Via2l0X2RvbV90ZXN0X2ludGVyZmFjZV9pbXBsZW1lbnRlZF9hc19nZXRfYShXZWJLaXRE
T01UZXN0SW50ZXJmYWNlSW1wbGVtZW50ZWRBcyogc2VsZik7CisKKy8qKgorICogd2Via2l0X2Rv
bV90ZXN0X2ludGVyZmFjZV9pbXBsZW1lbnRlZF9hc19zZXRfYToKKyAqIEBzZWxmOiBBICNXZWJL
aXRET01UZXN0SW50ZXJmYWNlSW1wbGVtZW50ZWRBcworICogQHZhbHVlOiBBICNnY2hhcgorICoK
KyAqIFJldHVybnM6CisgKgorKiovCitXRUJLSVRfQVBJIHZvaWQKK3dlYmtpdF9kb21fdGVzdF9p
bnRlcmZhY2VfaW1wbGVtZW50ZWRfYXNfc2V0X2EoV2ViS2l0RE9NVGVzdEludGVyZmFjZUltcGxl
bWVudGVkQXMqIHNlbGYsIGNvbnN0IGdjaGFyKiB2YWx1ZSk7CisKKy8qKgorICogd2Via2l0X2Rv
bV90ZXN0X2ludGVyZmFjZV9pbXBsZW1lbnRlZF9hc19nZXRfYjoKKyAqIEBzZWxmOiBBICNXZWJL
aXRET01UZXN0SW50ZXJmYWNlSW1wbGVtZW50ZWRBcworICoKKyAqIFJldHVybnM6ICh0cmFuc2Zl
ciBub25lKToKKyAqCisqKi8KK1dFQktJVF9BUEkgV2ViS2l0RE9NVGVzdEludGVyZmFjZUltcGxl
bWVudGVkQXMqCit3ZWJraXRfZG9tX3Rlc3RfaW50ZXJmYWNlX2ltcGxlbWVudGVkX2FzX2dldF9i
KFdlYktpdERPTVRlc3RJbnRlcmZhY2VJbXBsZW1lbnRlZEFzKiBzZWxmKTsKKworLyoqCisgKiB3
ZWJraXRfZG9tX3Rlc3RfaW50ZXJmYWNlX2ltcGxlbWVudGVkX2FzX3NldF9iOgorICogQHNlbGY6
IEEgI1dlYktpdERPTVRlc3RJbnRlcmZhY2VJbXBsZW1lbnRlZEFzCisgKiBAdmFsdWU6IEEgI1dl
YktpdERPTVRlc3RJbnRlcmZhY2VJbXBsZW1lbnRlZEFzCisgKgorICogUmV0dXJuczogKHRyYW5z
ZmVyIG5vbmUpOgorICoKKyoqLworV0VCS0lUX0FQSSB2b2lkCit3ZWJraXRfZG9tX3Rlc3RfaW50
ZXJmYWNlX2ltcGxlbWVudGVkX2FzX3NldF9iKFdlYktpdERPTVRlc3RJbnRlcmZhY2VJbXBsZW1l
bnRlZEFzKiBzZWxmLCBXZWJLaXRET01UZXN0SW50ZXJmYWNlSW1wbGVtZW50ZWRBcyogdmFsdWUp
OworCitHX0VORF9ERUNMUworCisjZW5kaWYgLyogV2ViS2l0RE9NVGVzdEludGVyZmFjZUltcGxl
bWVudGVkQXNfaCAqLwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0dPYmplY3QvV2ViS2l0RE9NVGVzdEludGVyZmFjZUltcGxlbWVudGVkQXNQcml2YXRl
LmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvR09iamVjdC9XZWJLaXRE
T01UZXN0SW50ZXJmYWNlSW1wbGVtZW50ZWRBc1ByaXZhdGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwLi43ZTNhNjYwCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0dPYmplY3QvV2ViS2l0RE9NVGVzdEludGVyZmFjZUlt
cGxlbWVudGVkQXNQcml2YXRlLmgKQEAgLTAsMCArMSwzMyBAQAorLyoKKyAgICBUaGlzIGZpbGUg
aXMgcGFydCBvZiB0aGUgV2ViS2l0IG9wZW4gc291cmNlIHByb2plY3QuCisgICAgVGhpcyBmaWxl
IGhhcyBiZWVuIGdlbmVyYXRlZCBieSBnZW5lcmF0ZS1iaW5kaW5ncy5wbC4gRE8gTk9UIE1PRElG
WSEKKworICAgIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJp
YnV0ZSBpdCBhbmQvb3IKKyAgICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUg
TGlicmFyeSBHZW5lcmFsIFB1YmxpYworICAgIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBG
cmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICAgIHZlcnNpb24gMiBvZiB0aGUgTGlj
ZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKworICAgIFRoaXMg
bGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVs
LAorICAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVk
IHdhcnJhbnR5IG9mCisgICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAgICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExp
Y2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKworICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBh
IGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAgICBhbG9u
ZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3
cml0ZSB0bworICAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5r
bGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgICAgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0Eu
CisqLworCisjaWZuZGVmIFdlYktpdERPTVRlc3RJbnRlcmZhY2VJbXBsZW1lbnRlZEFzUHJpdmF0
ZV9oCisjZGVmaW5lIFdlYktpdERPTVRlc3RJbnRlcmZhY2VJbXBsZW1lbnRlZEFzUHJpdmF0ZV9o
CisKKyNpbmNsdWRlICJUZXN0SW50ZXJmYWNlSW1wbGVtZW50ZWRBcy5oIgorI2luY2x1ZGUgPHdl
YmtpdGRvbS9XZWJLaXRET01UZXN0SW50ZXJmYWNlSW1wbGVtZW50ZWRBcy5oPgorCituYW1lc3Bh
Y2UgV2ViS2l0IHsKK1dlYktpdERPTVRlc3RJbnRlcmZhY2VJbXBsZW1lbnRlZEFzKiB3cmFwVGVz
dEludGVyZmFjZUltcGxlbWVudGVkQXMoV2ViQ29yZTo6VGVzdEludGVyZmFjZUltcGxlbWVudGVk
QXMqKTsKK1dlYktpdERPTVRlc3RJbnRlcmZhY2VJbXBsZW1lbnRlZEFzKiBraXQoV2ViQ29yZTo6
VGVzdEludGVyZmFjZUltcGxlbWVudGVkQXMqKTsKK1dlYkNvcmU6OlRlc3RJbnRlcmZhY2VJbXBs
ZW1lbnRlZEFzKiBjb3JlKFdlYktpdERPTVRlc3RJbnRlcmZhY2VJbXBsZW1lbnRlZEFzKik7Cit9
IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8qIFdlYktpdERPTVRlc3RJbnRlcmZhY2VJ
bXBsZW1lbnRlZEFzUHJpdmF0ZV9oICovCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q2FsbGJhY2suaCBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDYWxsYmFjay5oCmluZGV4IGU5YmQ3OGQuLmYx
MmFjYzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3RDYWxsYmFjay5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3RDYWxsYmFjay5oCkBAIC00Niw3ICs0Niw3IEBAIHB1YmxpYzoKICAgICB2
aXJ0dWFsIGJvb2wgY2FsbGJhY2tXaXRoQXJyYXlQYXJhbShGbG9hdDMyQXJyYXkqIGFycmF5UGFy
YW0pOwogICAgIHZpcnR1YWwgYm9vbCBjYWxsYmFja1dpdGhTZXJpYWxpemVkU2NyaXB0VmFsdWVQ
YXJhbShQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gc3J6UGFyYW0sIGNvbnN0IFN0
cmluZyYgc3RyQXJnKTsKICAgICBDT01QSUxFX0FTU0VSVChmYWxzZSkgICAgdmlydHVhbCBpbnQg
Y2FsbGJhY2tXaXRoTm9uQm9vbFJldHVyblR5cGUoY29uc3QgU3RyaW5nJiBzdHJBcmcpOwotICAg
IHZpcnR1YWwgaW50IGN1c3RvbUNhbGxiYWNrKENsYXNzNSogY2xhc3M1UGFyYW0sIENsYXNzNiog
Y2xhc3M2UGFyYW0pOworICAgIHZpcnR1YWwgaW50IGN1c3RvbUNhbGxiYWNrKFRlc3RPYmoqIHRl
c3RPYmpQYXJhbSwgVGVzdE9iaiogdGVzdE9ialBhcmFtKTsKICAgICB2aXJ0dWFsIGJvb2wgY2Fs
bGJhY2tXaXRoU3RyaW5nTGlzdChQYXNzUmVmUHRyPERPTVN0cmluZ0xpc3Q+IGxpc3RQYXJhbSk7
CiAgICAgdmlydHVhbCBib29sIGNhbGxiYWNrV2l0aEJvb2xlYW4oYm9vbCBib29sUGFyYW0pOwog
ICAgIHZpcnR1YWwgYm9vbCBjYWxsYmFja1JlcXVpcmVzVGhpc1RvUGFzcyhpbnQgbG9uZ1BhcmFt
LCBUZXN0Tm9kZSogdGVzdE5vZGVQYXJhbSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SW50ZXJmYWNlSW1wbGVtZW50ZWRBcy5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SW50ZXJmYWNl
SW1wbGVtZW50ZWRBcy5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmU3
NTJmOAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3RJbnRlcmZhY2VJbXBsZW1lbnRlZEFzLmNwcApAQCAtMCwwICsxLDMxNyBA
QAorLyoKKyAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgV2ViS2l0IG9wZW4gc291cmNlIHBy
b2plY3QuCisgICAgVGhpcyBmaWxlIGhhcyBiZWVuIGdlbmVyYXRlZCBieSBnZW5lcmF0ZS1iaW5k
aW5ncy5wbC4gRE8gTk9UIE1PRElGWSEKKworICAgIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3
YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAgICBtb2RpZnkgaXQgdW5kZXIg
dGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICAgIExpY2Vuc2Ug
YXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICAg
IHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIg
dmVyc2lvbi4KKworICAgIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0
aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0
aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgICAgTUVSQ0hBTlRBQklMSVRZIG9y
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAgICBMaWJy
YXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKworICAgIFlvdSBz
aG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVi
bGljIExpY2Vuc2UKKyAgICBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENP
UFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5k
YXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgICAgQm9zdG9u
LCBNQSAwMjExMC0xMzAxLCBVU0EuCisqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVk
ZSAiSlNUZXN0SW50ZXJmYWNlSW1wbGVtZW50ZWRBcy5oIgorCisjaW5jbHVkZSAiRXhjZXB0aW9u
Q29kZS5oIgorI2luY2x1ZGUgIkpTRE9NQmluZGluZy5oIgorI2luY2x1ZGUgIkpTVGVzdEludGVy
ZmFjZUltcGxlbWVudGVkQXMuaCIKKyNpbmNsdWRlICJLVVJMLmgiCisjaW5jbHVkZSAiVGVzdElu
dGVyZmFjZUltcGxlbWVudGVkQXMuaCIKKyNpbmNsdWRlIDxydW50aW1lL0Vycm9yLmg+CisjaW5j
bHVkZSA8cnVudGltZS9KU1N0cmluZy5oPgorI2luY2x1ZGUgPHd0Zi9HZXRQdHIuaD4KKwordXNp
bmcgbmFtZXNwYWNlIEpTQzsKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCisvKiBIYXNoIHRhYmxl
ICovCisKK3N0YXRpYyBjb25zdCBIYXNoVGFibGVWYWx1ZSBKU1Rlc3RJbnRlcmZhY2VJbXBsZW1l
bnRlZEFzVGFibGVWYWx1ZXNbXSA9Cit7CisgICAgeyAiYSIsIERvbnREZWxldGUsIChpbnRwdHJf
dClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0SW50ZXJmYWNl
SW1wbGVtZW50ZWRBc0EpLCAoaW50cHRyX3Qpc2V0SlNUZXN0SW50ZXJmYWNlSW1wbGVtZW50ZWRB
c0EsIE5vSW50cmluc2ljIH0sCisgICAgeyAiYiIsIERvbnREZWxldGUsIChpbnRwdHJfdClzdGF0
aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0SW50ZXJmYWNlSW1wbGVt
ZW50ZWRBc0IpLCAoaW50cHRyX3Qpc2V0SlNUZXN0SW50ZXJmYWNlSW1wbGVtZW50ZWRBc0IsIE5v
SW50cmluc2ljIH0sCisgICAgeyAiY29uc3RydWN0b3IiLCBEb250RW51bSB8IFJlYWRPbmx5LCAo
aW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdElu
dGVyZmFjZUltcGxlbWVudGVkQXNDb25zdHJ1Y3RvciksIChpbnRwdHJfdCkwLCBOb0ludHJpbnNp
YyB9LAorICAgIHsgMCwgMCwgMCwgMCwgTm9JbnRyaW5zaWMgfQorfTsKKworc3RhdGljIGNvbnN0
IEhhc2hUYWJsZSBKU1Rlc3RJbnRlcmZhY2VJbXBsZW1lbnRlZEFzVGFibGUgPSB7IDksIDcsIEpT
VGVzdEludGVyZmFjZUltcGxlbWVudGVkQXNUYWJsZVZhbHVlcywgMCB9OworLyogSGFzaCB0YWJs
ZSBmb3IgY29uc3RydWN0b3IgKi8KKworc3RhdGljIGNvbnN0IEhhc2hUYWJsZVZhbHVlIEpTVGVz
dEludGVyZmFjZUltcGxlbWVudGVkQXNDb25zdHJ1Y3RvclRhYmxlVmFsdWVzW10gPQoreworICAg
IHsgMCwgMCwgMCwgMCwgTm9JbnRyaW5zaWMgfQorfTsKKworc3RhdGljIGNvbnN0IEhhc2hUYWJs
ZSBKU1Rlc3RJbnRlcmZhY2VJbXBsZW1lbnRlZEFzQ29uc3RydWN0b3JUYWJsZSA9IHsgMSwgMCwg
SlNUZXN0SW50ZXJmYWNlSW1wbGVtZW50ZWRBc0NvbnN0cnVjdG9yVGFibGVWYWx1ZXMsIDAgfTsK
K2NvbnN0IENsYXNzSW5mbyBKU1Rlc3RJbnRlcmZhY2VJbXBsZW1lbnRlZEFzQ29uc3RydWN0b3I6
OnNfaW5mbyA9IHsgIlRlc3RJbnRlcmZhY2VJbXBsZW1lbnRlZEFzQ29uc3RydWN0b3IiLCAmQmFz
ZTo6c19pbmZvLCAmSlNUZXN0SW50ZXJmYWNlSW1wbGVtZW50ZWRBc0NvbnN0cnVjdG9yVGFibGUs
IDAsIENSRUFURV9NRVRIT0RfVEFCTEUoSlNUZXN0SW50ZXJmYWNlSW1wbGVtZW50ZWRBc0NvbnN0
cnVjdG9yKSB9OworCitKU1Rlc3RJbnRlcmZhY2VJbXBsZW1lbnRlZEFzQ29uc3RydWN0b3I6OkpT
VGVzdEludGVyZmFjZUltcGxlbWVudGVkQXNDb25zdHJ1Y3RvcihTdHJ1Y3R1cmUqIHN0cnVjdHVy
ZSwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKKyAgICA6IERPTUNvbnN0cnVjdG9y
T2JqZWN0KHN0cnVjdHVyZSwgZ2xvYmFsT2JqZWN0KQoreworfQorCit2b2lkIEpTVGVzdEludGVy
ZmFjZUltcGxlbWVudGVkQXNDb25zdHJ1Y3Rvcjo6ZmluaXNoQ3JlYXRpb24oRXhlY1N0YXRlKiBl
eGVjLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQoreworICAgIEJhc2U6OmZpbmlz
aENyZWF0aW9uKGV4ZWMtPnZtKCkpOworICAgIEFTU0VSVChpbmhlcml0cygmc19pbmZvKSk7Cisg
ICAgcHV0RGlyZWN0KGV4ZWMtPnZtKCksIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5wcm90b3R5cGUs
IEpTVGVzdEludGVyZmFjZUltcGxlbWVudGVkQXNQcm90b3R5cGU6OnNlbGYoZXhlYywgZ2xvYmFs
T2JqZWN0KSwgRG9udERlbGV0ZSB8IFJlYWRPbmx5KTsKKyAgICBwdXREaXJlY3QoZXhlYy0+dm0o
KSwgZXhlYy0+cHJvcGVydHlOYW1lcygpLmxlbmd0aCwganNOdW1iZXIoMCksIFJlYWRPbmx5IHwg
RG9udERlbGV0ZSB8IERvbnRFbnVtKTsKK30KKworYm9vbCBKU1Rlc3RJbnRlcmZhY2VJbXBsZW1l
bnRlZEFzQ29uc3RydWN0b3I6OmdldE93blByb3BlcnR5U2xvdChKU0NlbGwqIGNlbGwsIEV4ZWNT
dGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90
KQoreworICAgIHJldHVybiBnZXRTdGF0aWNWYWx1ZVNsb3Q8SlNUZXN0SW50ZXJmYWNlSW1wbGVt
ZW50ZWRBc0NvbnN0cnVjdG9yLCBKU0RPTVdyYXBwZXI+KGV4ZWMsICZKU1Rlc3RJbnRlcmZhY2VJ
bXBsZW1lbnRlZEFzQ29uc3RydWN0b3JUYWJsZSwganNDYXN0PEpTVGVzdEludGVyZmFjZUltcGxl
bWVudGVkQXNDb25zdHJ1Y3Rvcio+KGNlbGwpLCBwcm9wZXJ0eU5hbWUsIHNsb3QpOworfQorCiti
b29sIEpTVGVzdEludGVyZmFjZUltcGxlbWVudGVkQXNDb25zdHJ1Y3Rvcjo6Z2V0T3duUHJvcGVy
dHlEZXNjcmlwdG9yKEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlO
YW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlEZXNjcmlwdG9yJiBkZXNjcmlwdG9yKQoreworICAg
IHJldHVybiBnZXRTdGF0aWNWYWx1ZURlc2NyaXB0b3I8SlNUZXN0SW50ZXJmYWNlSW1wbGVtZW50
ZWRBc0NvbnN0cnVjdG9yLCBKU0RPTVdyYXBwZXI+KGV4ZWMsICZKU1Rlc3RJbnRlcmZhY2VJbXBs
ZW1lbnRlZEFzQ29uc3RydWN0b3JUYWJsZSwganNDYXN0PEpTVGVzdEludGVyZmFjZUltcGxlbWVu
dGVkQXNDb25zdHJ1Y3Rvcio+KG9iamVjdCksIHByb3BlcnR5TmFtZSwgZGVzY3JpcHRvcik7Cit9
CisKKy8qIEhhc2ggdGFibGUgZm9yIHByb3RvdHlwZSAqLworCitzdGF0aWMgY29uc3QgSGFzaFRh
YmxlVmFsdWUgSlNUZXN0SW50ZXJmYWNlSW1wbGVtZW50ZWRBc1Byb3RvdHlwZVRhYmxlVmFsdWVz
W10gPQoreworICAgIHsgImZ1bmMxIiwgRG9udERlbGV0ZSB8IEpTQzo6RnVuY3Rpb24sIChpbnRw
dHJfdClzdGF0aWNfY2FzdDxOYXRpdmVGdW5jdGlvbj4oanNUZXN0SW50ZXJmYWNlSW1wbGVtZW50
ZWRBc1Byb3RvdHlwZUZ1bmN0aW9uRnVuYzEpLCAoaW50cHRyX3QpMSwgTm9JbnRyaW5zaWMgfSwK
KyAgICB7ICJmdW5jVGVzdEludGVyZmFjZUltcGxlbWVudGVkQXNQYXJhbSIsIERvbnREZWxldGUg
fCBKU0M6OkZ1bmN0aW9uLCAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8TmF0aXZlRnVuY3Rpb24+KGpz
VGVzdEludGVyZmFjZUltcGxlbWVudGVkQXNQcm90b3R5cGVGdW5jdGlvbkZ1bmNUZXN0SW50ZXJm
YWNlSW1wbGVtZW50ZWRBc1BhcmFtKSwgKGludHB0cl90KTEsIE5vSW50cmluc2ljIH0sCisgICAg
eyAwLCAwLCAwLCAwLCBOb0ludHJpbnNpYyB9Cit9OworCitzdGF0aWMgY29uc3QgSGFzaFRhYmxl
IEpTVGVzdEludGVyZmFjZUltcGxlbWVudGVkQXNQcm90b3R5cGVUYWJsZSA9IHsgNCwgMywgSlNU
ZXN0SW50ZXJmYWNlSW1wbGVtZW50ZWRBc1Byb3RvdHlwZVRhYmxlVmFsdWVzLCAwIH07Citjb25z
dCBDbGFzc0luZm8gSlNUZXN0SW50ZXJmYWNlSW1wbGVtZW50ZWRBc1Byb3RvdHlwZTo6c19pbmZv
ID0geyAiVGVzdEludGVyZmFjZUltcGxlbWVudGVkQXNQcm90b3R5cGUiLCAmQmFzZTo6c19pbmZv
LCAmSlNUZXN0SW50ZXJmYWNlSW1wbGVtZW50ZWRBc1Byb3RvdHlwZVRhYmxlLCAwLCBDUkVBVEVf
TUVUSE9EX1RBQkxFKEpTVGVzdEludGVyZmFjZUltcGxlbWVudGVkQXNQcm90b3R5cGUpIH07CisK
K0pTT2JqZWN0KiBKU1Rlc3RJbnRlcmZhY2VJbXBsZW1lbnRlZEFzUHJvdG90eXBlOjpzZWxmKEV4
ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKK3sKKyAgICByZXR1
cm4gZ2V0RE9NUHJvdG90eXBlPEpTVGVzdEludGVyZmFjZUltcGxlbWVudGVkQXM+KGV4ZWMsIGds
b2JhbE9iamVjdCk7Cit9CisKK2Jvb2wgSlNUZXN0SW50ZXJmYWNlSW1wbGVtZW50ZWRBc1Byb3Rv
dHlwZTo6Z2V0T3duUHJvcGVydHlTbG90KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBQ
cm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3QpCit7CisgICAgSlNU
ZXN0SW50ZXJmYWNlSW1wbGVtZW50ZWRBc1Byb3RvdHlwZSogdGhpc09iamVjdCA9IGpzQ2FzdDxK
U1Rlc3RJbnRlcmZhY2VJbXBsZW1lbnRlZEFzUHJvdG90eXBlKj4oY2VsbCk7CisgICAgcmV0dXJu
IGdldFN0YXRpY0Z1bmN0aW9uU2xvdDxKU09iamVjdD4oZXhlYywgJkpTVGVzdEludGVyZmFjZUlt
cGxlbWVudGVkQXNQcm90b3R5cGVUYWJsZSwgdGhpc09iamVjdCwgcHJvcGVydHlOYW1lLCBzbG90
KTsKK30KKworYm9vbCBKU1Rlc3RJbnRlcmZhY2VJbXBsZW1lbnRlZEFzUHJvdG90eXBlOjpnZXRP
d25Qcm9wZXJ0eURlc2NyaXB0b3IoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBQ
cm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eURlc2NyaXB0b3ImIGRlc2NyaXB0b3Ip
Cit7CisgICAgSlNUZXN0SW50ZXJmYWNlSW1wbGVtZW50ZWRBc1Byb3RvdHlwZSogdGhpc09iamVj
dCA9IGpzQ2FzdDxKU1Rlc3RJbnRlcmZhY2VJbXBsZW1lbnRlZEFzUHJvdG90eXBlKj4ob2JqZWN0
KTsKKyAgICByZXR1cm4gZ2V0U3RhdGljRnVuY3Rpb25EZXNjcmlwdG9yPEpTT2JqZWN0PihleGVj
LCAmSlNUZXN0SW50ZXJmYWNlSW1wbGVtZW50ZWRBc1Byb3RvdHlwZVRhYmxlLCB0aGlzT2JqZWN0
LCBwcm9wZXJ0eU5hbWUsIGRlc2NyaXB0b3IpOworfQorCitjb25zdCBDbGFzc0luZm8gSlNUZXN0
SW50ZXJmYWNlSW1wbGVtZW50ZWRBczo6c19pbmZvID0geyAiVGVzdEludGVyZmFjZUltcGxlbWVu
dGVkQXMiLCAmQmFzZTo6c19pbmZvLCAmSlNUZXN0SW50ZXJmYWNlSW1wbGVtZW50ZWRBc1RhYmxl
LCAwICwgQ1JFQVRFX01FVEhPRF9UQUJMRShKU1Rlc3RJbnRlcmZhY2VJbXBsZW1lbnRlZEFzKSB9
OworCitKU1Rlc3RJbnRlcmZhY2VJbXBsZW1lbnRlZEFzOjpKU1Rlc3RJbnRlcmZhY2VJbXBsZW1l
bnRlZEFzKFN0cnVjdHVyZSogc3RydWN0dXJlLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBQYXNzUmVmUHRyPFJlYWxDbGFzcz4gaW1wbCkKKyAgICA6IEpTRE9NV3JhcHBlcihzdHJ1
Y3R1cmUsIGdsb2JhbE9iamVjdCkKKyAgICAsIG1faW1wbChpbXBsLmxlYWtSZWYoKSkKK3sKK30K
Kwordm9pZCBKU1Rlc3RJbnRlcmZhY2VJbXBsZW1lbnRlZEFzOjpmaW5pc2hDcmVhdGlvbihWTSYg
dm0pCit7CisgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24odm0pOworICAgIEFTU0VSVChpbmhlcml0
cygmc19pbmZvKSk7Cit9CisKK0pTT2JqZWN0KiBKU1Rlc3RJbnRlcmZhY2VJbXBsZW1lbnRlZEFz
OjpjcmVhdGVQcm90b3R5cGUoRXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0KQoreworICAgIHJldHVybiBKU1Rlc3RJbnRlcmZhY2VJbXBsZW1lbnRlZEFzUHJvdG90
eXBlOjpjcmVhdGUoZXhlYy0+dm0oKSwgZ2xvYmFsT2JqZWN0LCBKU1Rlc3RJbnRlcmZhY2VJbXBs
ZW1lbnRlZEFzUHJvdG90eXBlOjpjcmVhdGVTdHJ1Y3R1cmUoZ2xvYmFsT2JqZWN0LT52bSgpLCBn
bG9iYWxPYmplY3QsIGdsb2JhbE9iamVjdC0+b2JqZWN0UHJvdG90eXBlKCkpKTsKK30KKwordm9p
ZCBKU1Rlc3RJbnRlcmZhY2VJbXBsZW1lbnRlZEFzOjpkZXN0cm95KEpTQzo6SlNDZWxsKiBjZWxs
KQoreworICAgIEpTVGVzdEludGVyZmFjZUltcGxlbWVudGVkQXMqIHRoaXNPYmplY3QgPSBzdGF0
aWNfY2FzdDxKU1Rlc3RJbnRlcmZhY2VJbXBsZW1lbnRlZEFzKj4oY2VsbCk7CisgICAgdGhpc09i
amVjdC0+SlNUZXN0SW50ZXJmYWNlSW1wbGVtZW50ZWRBczo6fkpTVGVzdEludGVyZmFjZUltcGxl
bWVudGVkQXMoKTsKK30KKworSlNUZXN0SW50ZXJmYWNlSW1wbGVtZW50ZWRBczo6fkpTVGVzdElu
dGVyZmFjZUltcGxlbWVudGVkQXMoKQoreworICAgIHJlbGVhc2VJbXBsSWZOb3ROdWxsKCk7Cit9
CisKK2Jvb2wgSlNUZXN0SW50ZXJmYWNlSW1wbGVtZW50ZWRBczo6Z2V0T3duUHJvcGVydHlTbG90
KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1l
LCBQcm9wZXJ0eVNsb3QmIHNsb3QpCit7CisgICAgSlNUZXN0SW50ZXJmYWNlSW1wbGVtZW50ZWRB
cyogdGhpc09iamVjdCA9IGpzQ2FzdDxKU1Rlc3RJbnRlcmZhY2VJbXBsZW1lbnRlZEFzKj4oY2Vs
bCk7CisgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyh0aGlzT2JqZWN0LCAmc19pbmZvKTsK
KyAgICByZXR1cm4gZ2V0U3RhdGljVmFsdWVTbG90PEpTVGVzdEludGVyZmFjZUltcGxlbWVudGVk
QXMsIEJhc2U+KGV4ZWMsICZKU1Rlc3RJbnRlcmZhY2VJbXBsZW1lbnRlZEFzVGFibGUsIHRoaXNP
YmplY3QsIHByb3BlcnR5TmFtZSwgc2xvdCk7Cit9CisKK2Jvb2wgSlNUZXN0SW50ZXJmYWNlSW1w
bGVtZW50ZWRBczo6Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEpTT2JqZWN0KiBvYmplY3QsIEV4
ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlEZXNjcmlw
dG9yJiBkZXNjcmlwdG9yKQoreworICAgIEpTVGVzdEludGVyZmFjZUltcGxlbWVudGVkQXMqIHRo
aXNPYmplY3QgPSBqc0Nhc3Q8SlNUZXN0SW50ZXJmYWNlSW1wbGVtZW50ZWRBcyo+KG9iamVjdCk7
CisgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyh0aGlzT2JqZWN0LCAmc19pbmZvKTsKKyAg
ICByZXR1cm4gZ2V0U3RhdGljVmFsdWVEZXNjcmlwdG9yPEpTVGVzdEludGVyZmFjZUltcGxlbWVu
dGVkQXMsIEJhc2U+KGV4ZWMsICZKU1Rlc3RJbnRlcmZhY2VJbXBsZW1lbnRlZEFzVGFibGUsIHRo
aXNPYmplY3QsIHByb3BlcnR5TmFtZSwgZGVzY3JpcHRvcik7Cit9CisKK0pTVmFsdWUganNUZXN0
SW50ZXJmYWNlSW1wbGVtZW50ZWRBc0EoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHNsb3RCYXNl
LCBQcm9wZXJ0eU5hbWUpCit7CisgICAgSlNUZXN0SW50ZXJmYWNlSW1wbGVtZW50ZWRBcyogY2Fz
dGVkVGhpcyA9IGpzQ2FzdDxKU1Rlc3RJbnRlcmZhY2VJbXBsZW1lbnRlZEFzKj4oYXNPYmplY3Qo
c2xvdEJhc2UpKTsKKyAgICBVTlVTRURfUEFSQU0oZXhlYyk7CisgICAgUmVhbENsYXNzKiBpbXBs
ID0gc3RhdGljX2Nhc3Q8UmVhbENsYXNzKj4oY2FzdGVkVGhpcy0+aW1wbCgpKTsKKyAgICBKU1Zh
bHVlIHJlc3VsdCA9IGpzU3RyaW5nV2l0aENhY2hlKGV4ZWMsIGltcGwtPmEoKSk7CisgICAgcmV0
dXJuIHJlc3VsdDsKK30KKworCitKU1ZhbHVlIGpzVGVzdEludGVyZmFjZUltcGxlbWVudGVkQXNC
KEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBzbG90QmFzZSwgUHJvcGVydHlOYW1lKQoreworICAg
IEpTVGVzdEludGVyZmFjZUltcGxlbWVudGVkQXMqIGNhc3RlZFRoaXMgPSBqc0Nhc3Q8SlNUZXN0
SW50ZXJmYWNlSW1wbGVtZW50ZWRBcyo+KGFzT2JqZWN0KHNsb3RCYXNlKSk7CisgICAgVU5VU0VE
X1BBUkFNKGV4ZWMpOworICAgIFJlYWxDbGFzcyogaW1wbCA9IHN0YXRpY19jYXN0PFJlYWxDbGFz
cyo+KGNhc3RlZFRoaXMtPmltcGwoKSk7CisgICAgSlNWYWx1ZSByZXN1bHQgPSB0b0pTKGV4ZWMs
IGNhc3RlZFRoaXMtPmdsb2JhbE9iamVjdCgpLCBXVEY6OmdldFB0cihpbXBsLT5iKCkpKTsKKyAg
ICByZXR1cm4gcmVzdWx0OworfQorCisKK0pTVmFsdWUganNUZXN0SW50ZXJmYWNlSW1wbGVtZW50
ZWRBc0NvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBzbG90QmFzZSwgUHJvcGVy
dHlOYW1lKQoreworICAgIEpTVGVzdEludGVyZmFjZUltcGxlbWVudGVkQXMqIGRvbU9iamVjdCA9
IGpzQ2FzdDxKU1Rlc3RJbnRlcmZhY2VJbXBsZW1lbnRlZEFzKj4oYXNPYmplY3Qoc2xvdEJhc2Up
KTsKKyAgICByZXR1cm4gSlNUZXN0SW50ZXJmYWNlSW1wbGVtZW50ZWRBczo6Z2V0Q29uc3RydWN0
b3IoZXhlYywgZG9tT2JqZWN0LT5nbG9iYWxPYmplY3QoKSk7Cit9CisKK3ZvaWQgSlNUZXN0SW50
ZXJmYWNlSW1wbGVtZW50ZWRBczo6cHV0KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBQ
cm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCBQdXRQcm9wZXJ0eVNsb3Qm
IHNsb3QpCit7CisgICAgSlNUZXN0SW50ZXJmYWNlSW1wbGVtZW50ZWRBcyogdGhpc09iamVjdCA9
IGpzQ2FzdDxKU1Rlc3RJbnRlcmZhY2VJbXBsZW1lbnRlZEFzKj4oY2VsbCk7CisgICAgQVNTRVJU
X0dDX09CSkVDVF9JTkhFUklUUyh0aGlzT2JqZWN0LCAmc19pbmZvKTsKKyAgICBsb29rdXBQdXQ8
SlNUZXN0SW50ZXJmYWNlSW1wbGVtZW50ZWRBcywgQmFzZT4oZXhlYywgcHJvcGVydHlOYW1lLCB2
YWx1ZSwgJkpTVGVzdEludGVyZmFjZUltcGxlbWVudGVkQXNUYWJsZSwgdGhpc09iamVjdCwgc2xv
dCk7Cit9CisKK3ZvaWQgc2V0SlNUZXN0SW50ZXJmYWNlSW1wbGVtZW50ZWRBc0EoRXhlY1N0YXRl
KiBleGVjLCBKU09iamVjdCogdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKK3sKKyAgICBVTlVT
RURfUEFSQU0oZXhlYyk7CisgICAgSlNUZXN0SW50ZXJmYWNlSW1wbGVtZW50ZWRBcyogY2FzdGVk
VGhpcyA9IGpzQ2FzdDxKU1Rlc3RJbnRlcmZhY2VJbXBsZW1lbnRlZEFzKj4odGhpc09iamVjdCk7
CisgICAgUmVhbENsYXNzKiBpbXBsID0gc3RhdGljX2Nhc3Q8UmVhbENsYXNzKj4oY2FzdGVkVGhp
cy0+aW1wbCgpKTsKKyAgICBjb25zdCBTdHJpbmcmIG5hdGl2ZVZhbHVlKHZhbHVlLmlzRW1wdHko
KSA/IFN0cmluZygpIDogdmFsdWUudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpKTsKKyAgICBp
ZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCisgICAgICAgIHJldHVybjsKKyAgICBpbXBsLT5zZXRB
KG5hdGl2ZVZhbHVlKTsKK30KKworCit2b2lkIHNldEpTVGVzdEludGVyZmFjZUltcGxlbWVudGVk
QXNCKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUp
Cit7CisgICAgVU5VU0VEX1BBUkFNKGV4ZWMpOworICAgIEpTVGVzdEludGVyZmFjZUltcGxlbWVu
dGVkQXMqIGNhc3RlZFRoaXMgPSBqc0Nhc3Q8SlNUZXN0SW50ZXJmYWNlSW1wbGVtZW50ZWRBcyo+
KHRoaXNPYmplY3QpOworICAgIFJlYWxDbGFzcyogaW1wbCA9IHN0YXRpY19jYXN0PFJlYWxDbGFz
cyo+KGNhc3RlZFRoaXMtPmltcGwoKSk7CisgICAgUmVhbENsYXNzKiBuYXRpdmVWYWx1ZSh0b1Jl
YWxDbGFzcyh2YWx1ZSkpOworICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKKyAgICAgICAg
cmV0dXJuOworICAgIGltcGwtPnNldEIobmF0aXZlVmFsdWUpOworfQorCisKK0pTVmFsdWUgSlNU
ZXN0SW50ZXJmYWNlSW1wbGVtZW50ZWRBczo6Z2V0Q29uc3RydWN0b3IoRXhlY1N0YXRlKiBleGVj
LCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQoreworICAgIHJldHVybiBnZXRET01Db25z
dHJ1Y3RvcjxKU1Rlc3RJbnRlcmZhY2VJbXBsZW1lbnRlZEFzQ29uc3RydWN0b3I+KGV4ZWMsIGpz
Q2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KGdsb2JhbE9iamVjdCkpOworfQorCitFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdEludGVyZmFjZUltcGxlbWVudGVkQXNQcm90b3R5cGVG
dW5jdGlvbkZ1bmMxKEV4ZWNTdGF0ZSogZXhlYykKK3sKKyAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9
IGV4ZWMtPmhvc3RUaGlzVmFsdWUoKTsKKyAgICBpZiAoIXRoaXNWYWx1ZS5pbmhlcml0cygmSlNU
ZXN0SW50ZXJmYWNlSW1wbGVtZW50ZWRBczo6c19pbmZvKSkKKyAgICAgICAgcmV0dXJuIHRocm93
Vk1UeXBlRXJyb3IoZXhlYyk7CisgICAgSlNUZXN0SW50ZXJmYWNlSW1wbGVtZW50ZWRBcyogY2Fz
dGVkVGhpcyA9IGpzQ2FzdDxKU1Rlc3RJbnRlcmZhY2VJbXBsZW1lbnRlZEFzKj4oYXNPYmplY3Qo
dGhpc1ZhbHVlKSk7CisgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCAm
SlNUZXN0SW50ZXJmYWNlSW1wbGVtZW50ZWRBczo6c19pbmZvKTsKKyAgICBSZWFsQ2xhc3MqIGlt
cGwgPSBzdGF0aWNfY2FzdDxSZWFsQ2xhc3MqPihjYXN0ZWRUaGlzLT5pbXBsKCkpOworICAgIGlm
IChleGVjLT5hcmd1bWVudENvdW50KCkgPCAxKQorICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9y
KGV4ZWMsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKGV4ZWMpKTsKKyAgICBjb25zdCBT
dHJpbmcmIGEoZXhlYy0+YXJndW1lbnQoMCkuaXNFbXB0eSgpID8gU3RyaW5nKCkgOiBleGVjLT5h
cmd1bWVudCgwKS50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYykpOworICAgIGlmIChleGVjLT5o
YWRFeGNlcHRpb24oKSkKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5l
ZCgpKTsKKworICAgIEpTQzo6SlNWYWx1ZSByZXN1bHQgPSBqc1N0cmluZ1dpdGhDYWNoZShleGVj
LCBpbXBsLT5mdW5jMShhKSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwor
fQorCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdEludGVyZmFjZUltcGxlbWVu
dGVkQXNQcm90b3R5cGVGdW5jdGlvbkZ1bmNUZXN0SW50ZXJmYWNlSW1wbGVtZW50ZWRBc1BhcmFt
KEV4ZWNTdGF0ZSogZXhlYykKK3sKKyAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPmhvc3RU
aGlzVmFsdWUoKTsKKyAgICBpZiAoIXRoaXNWYWx1ZS5pbmhlcml0cygmSlNUZXN0SW50ZXJmYWNl
SW1wbGVtZW50ZWRBczo6c19pbmZvKSkKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3Io
ZXhlYyk7CisgICAgSlNUZXN0SW50ZXJmYWNlSW1wbGVtZW50ZWRBcyogY2FzdGVkVGhpcyA9IGpz
Q2FzdDxKU1Rlc3RJbnRlcmZhY2VJbXBsZW1lbnRlZEFzKj4oYXNPYmplY3QodGhpc1ZhbHVlKSk7
CisgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCAmSlNUZXN0SW50ZXJm
YWNlSW1wbGVtZW50ZWRBczo6c19pbmZvKTsKKyAgICBSZWFsQ2xhc3MqIGltcGwgPSBzdGF0aWNf
Y2FzdDxSZWFsQ2xhc3MqPihjYXN0ZWRUaGlzLT5pbXBsKCkpOworICAgIGlmIChleGVjLT5hcmd1
bWVudENvdW50KCkgPCAxKQorICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKGV4ZWMsIGNyZWF0
ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKGV4ZWMpKTsKKyAgICBSZWFsQ2xhc3MqIG9yYW5nZSh0
b1JlYWxDbGFzcyhleGVjLT5hcmd1bWVudCgwKSkpOworICAgIGlmIChleGVjLT5oYWRFeGNlcHRp
b24oKSkKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKKwor
ICAgIEpTQzo6SlNWYWx1ZSByZXN1bHQgPSBqc1N0cmluZ1dpdGhDYWNoZShleGVjLCBpbXBsLT5m
dW5jVGVzdEludGVyZmFjZUltcGxlbWVudGVkQXNQYXJhbShvcmFuZ2UpKTsKKyAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7Cit9CisKK3N0YXRpYyBpbmxpbmUgYm9vbCBpc09ic2Vy
dmFibGUoSlNUZXN0SW50ZXJmYWNlSW1wbGVtZW50ZWRBcyoganNUZXN0SW50ZXJmYWNlSW1wbGVt
ZW50ZWRBcykKK3sKKyAgICBpZiAoanNUZXN0SW50ZXJmYWNlSW1wbGVtZW50ZWRBcy0+aGFzQ3Vz
dG9tUHJvcGVydGllcygpKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICByZXR1cm4gZmFsc2U7
Cit9CisKK2Jvb2wgSlNUZXN0SW50ZXJmYWNlSW1wbGVtZW50ZWRBc093bmVyOjppc1JlYWNoYWJs
ZUZyb21PcGFxdWVSb290cyhKU0M6OkhhbmRsZTxKU0M6OlVua25vd24+IGhhbmRsZSwgdm9pZCos
IFNsb3RWaXNpdG9yJiB2aXNpdG9yKQoreworICAgIEpTVGVzdEludGVyZmFjZUltcGxlbWVudGVk
QXMqIGpzVGVzdEludGVyZmFjZUltcGxlbWVudGVkQXMgPSBqc0Nhc3Q8SlNUZXN0SW50ZXJmYWNl
SW1wbGVtZW50ZWRBcyo+KGhhbmRsZS5nZXQoKS5hc0NlbGwoKSk7CisgICAgaWYgKCFpc09ic2Vy
dmFibGUoanNUZXN0SW50ZXJmYWNlSW1wbGVtZW50ZWRBcykpCisgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICBVTlVTRURfUEFSQU0odmlzaXRvcik7CisgICAgcmV0dXJuIGZhbHNlOworfQorCit2
b2lkIEpTVGVzdEludGVyZmFjZUltcGxlbWVudGVkQXNPd25lcjo6ZmluYWxpemUoSlNDOjpIYW5k
bGU8SlNDOjpVbmtub3duPiBoYW5kbGUsIHZvaWQqIGNvbnRleHQpCit7CisgICAgSlNUZXN0SW50
ZXJmYWNlSW1wbGVtZW50ZWRBcyoganNUZXN0SW50ZXJmYWNlSW1wbGVtZW50ZWRBcyA9IGpzQ2Fz
dDxKU1Rlc3RJbnRlcmZhY2VJbXBsZW1lbnRlZEFzKj4oaGFuZGxlLmdldCgpLmFzQ2VsbCgpKTsK
KyAgICBET01XcmFwcGVyV29ybGQqIHdvcmxkID0gc3RhdGljX2Nhc3Q8RE9NV3JhcHBlcldvcmxk
Kj4oY29udGV4dCk7CisgICAgdW5jYWNoZVdyYXBwZXIod29ybGQsIGpzVGVzdEludGVyZmFjZUlt
cGxlbWVudGVkQXMtPmltcGwoKSwganNUZXN0SW50ZXJmYWNlSW1wbGVtZW50ZWRBcyk7CisgICAg
anNUZXN0SW50ZXJmYWNlSW1wbGVtZW50ZWRBcy0+cmVsZWFzZUltcGwoKTsKK30KKworI2lmIEVO
QUJMRShCSU5ESU5HX0lOVEVHUklUWSkKKyNpZiBQTEFURk9STShXSU4pCisjcHJhZ21hIHdhcm5p
bmcoZGlzYWJsZTogNDQ4MykKK2V4dGVybiAiQyIgeyBleHRlcm4gdm9pZCAoKmNvbnN0IF9faWRl
bnRpZmllcigiPz9fN1JlYWxDbGFzc0BXZWJDb3JlQEA2QkAiKVtdKSgpOyB9CisjZWxzZQorZXh0
ZXJuICJDIiB7IGV4dGVybiB2b2lkKiBfWlRWTjdXZWJDb3JlOVJlYWxDbGFzc0VbXTsgfQorI2Vu
ZGlmCisjZW5kaWYKK0pTQzo6SlNWYWx1ZSB0b0pTKEpTQzo6RXhlY1N0YXRlKiBleGVjLCBKU0RP
TUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBSZWFsQ2xhc3MqIGltcGwpCit7CisgICAgaWYg
KCFpbXBsKQorICAgICAgICByZXR1cm4ganNOdWxsKCk7CisgICAgaWYgKEpTVmFsdWUgcmVzdWx0
ID0gZ2V0RXhpc3RpbmdXcmFwcGVyPEpTVGVzdEludGVyZmFjZUltcGxlbWVudGVkQXM+KGV4ZWMs
IGltcGwpKSByZXR1cm4gcmVzdWx0OworCisjaWYgRU5BQkxFKEJJTkRJTkdfSU5URUdSSVRZKQor
ICAgIHZvaWQqIGFjdHVhbFZUYWJsZVBvaW50ZXIgPSAqKHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCoq
PihpbXBsKSk7CisjaWYgUExBVEZPUk0oV0lOKQorICAgIHZvaWQqIGV4cGVjdGVkVlRhYmxlUG9p
bnRlciA9IHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KF9faWRlbnRpZmllcigiPz9fN1JlYWxDbGFz
c0BXZWJDb3JlQEA2QkAiKSk7CisjZWxzZQorICAgIHZvaWQqIGV4cGVjdGVkVlRhYmxlUG9pbnRl
ciA9ICZfWlRWTjdXZWJDb3JlOVJlYWxDbGFzc0VbMl07CisjaWYgQ09NUElMRVIoQ0xBTkcpCisg
ICAgLy8gSWYgdGhpcyBmYWlscyBSZWFsQ2xhc3MgZG9lcyBub3QgaGF2ZSBhIHZ0YWJsZSwgc28g
eW91IG5lZWQgdG8gYWRkIHRoZQorICAgIC8vIEltcGxlbWVudGF0aW9uTGFja3NWVGFibGUgYXR0
cmlidXRlIHRvIHRoZSBpbnRlcmZhY2UgZGVmaW5pdGlvbgorICAgIENPTVBJTEVfQVNTRVJUKF9f
aXNfcG9seW1vcnBoaWMoUmVhbENsYXNzKSwgUmVhbENsYXNzX2lzX25vdF9wb2x5bW9ycGhpYyk7
CisjZW5kaWYKKyNlbmRpZgorICAgIC8vIElmIHlvdSBoaXQgdGhpcyBhc3NlcnRpb24geW91IGVp
dGhlciBoYXZlIGEgdXNlIGFmdGVyIGZyZWUgYnVnLCBvcgorICAgIC8vIFJlYWxDbGFzcyBoYXMg
c3ViY2xhc3Nlcy4gSWYgUmVhbENsYXNzIGhhcyBzdWJjbGFzc2VzIHRoYXQgZ2V0IHBhc3NlZAor
ICAgIC8vIHRvIHRvSlMoKSB3ZSBjdXJyZW50bHkgcmVxdWlyZSBUZXN0SW50ZXJmYWNlSW1wbGVt
ZW50ZWRBcyB5b3UgdG8gb3B0IG91dCBvZiBiaW5kaW5nIGhhcmRlbmluZworICAgIC8vIGJ5IGFk
ZGluZyB0aGUgU2tpcFZUYWJsZVZhbGlkYXRpb24gYXR0cmlidXRlIHRvIHRoZSBpbnRlcmZhY2Ug
SURMIGRlZmluaXRpb24KKyAgICBSRUxFQVNFX0FTU0VSVChhY3R1YWxWVGFibGVQb2ludGVyID09
IGV4cGVjdGVkVlRhYmxlUG9pbnRlcik7CisjZW5kaWYKKyAgICBSZXBvcnRNZW1vcnlDb3N0PFJl
YWxDbGFzcz46OnJlcG9ydE1lbW9yeUNvc3QoZXhlYywgaW1wbCk7CisgICAgcmV0dXJuIGNyZWF0
ZU5ld1dyYXBwZXI8SlNUZXN0SW50ZXJmYWNlSW1wbGVtZW50ZWRBcz4oZXhlYywgZ2xvYmFsT2Jq
ZWN0LCBpbXBsKTsKK30KKworUmVhbENsYXNzKiB0b1JlYWxDbGFzcyhKU0M6OkpTVmFsdWUgdmFs
dWUpCit7CisgICAgcmV0dXJuIHZhbHVlLmluaGVyaXRzKCZKU1Rlc3RJbnRlcmZhY2VJbXBsZW1l
bnRlZEFzOjpzX2luZm8pID8ganNDYXN0PEpTVGVzdEludGVyZmFjZUltcGxlbWVudGVkQXMqPihh
c09iamVjdCh2YWx1ZSkpLT5pbXBsKCkgOiAwOworfQorCit9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SW50ZXJmYWNlSW1wbGVtZW50
ZWRBcy5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdElu
dGVyZmFjZUltcGxlbWVudGVkQXMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
Li45MGI5NzIyCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdEludGVyZmFjZUltcGxlbWVudGVkQXMuaApAQCAtMCwwICsxLDE1
MyBAQAorLyoKKyAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgV2ViS2l0IG9wZW4gc291cmNl
IHByb2plY3QuCisgICAgVGhpcyBmaWxlIGhhcyBiZWVuIGdlbmVyYXRlZCBieSBnZW5lcmF0ZS1i
aW5kaW5ncy5wbC4gRE8gTk9UIE1PRElGWSEKKworICAgIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNv
ZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAgICBtb2RpZnkgaXQgdW5k
ZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICAgIExpY2Vu
c2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgor
ICAgIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0
ZXIgdmVyc2lvbi4KKworICAgIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9w
ZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsg
d2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgICAgTUVSQ0hBTlRBQklMSVRZ
IG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAgICBM
aWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKworICAgIFlv
dSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwg
UHVibGljIExpY2Vuc2UKKyAgICBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxl
IENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICAgIHRoZSBGcmVlIFNvZnR3YXJlIEZv
dW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgICAgQm9z
dG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisqLworCisjaWZuZGVmIEpTVGVzdEludGVyZmFjZUlt
cGxlbWVudGVkQXNfaAorI2RlZmluZSBKU1Rlc3RJbnRlcmZhY2VJbXBsZW1lbnRlZEFzX2gKKwor
I2luY2x1ZGUgIkpTRE9NQmluZGluZy5oIgorI2luY2x1ZGUgIlJlYWxDbGFzcy5oIgorI2luY2x1
ZGUgPHJ1bnRpbWUvSlNHbG9iYWxPYmplY3QuaD4KKyNpbmNsdWRlIDxydW50aW1lL0pTT2JqZWN0
Lmg+CisjaW5jbHVkZSA8cnVudGltZS9PYmplY3RQcm90b3R5cGUuaD4KKworbmFtZXNwYWNlIFdl
YkNvcmUgeworCitjbGFzcyBKU1Rlc3RJbnRlcmZhY2VJbXBsZW1lbnRlZEFzIDogcHVibGljIEpT
RE9NV3JhcHBlciB7CitwdWJsaWM6CisgICAgdHlwZWRlZiBKU0RPTVdyYXBwZXIgQmFzZTsKKyAg
ICBzdGF0aWMgSlNUZXN0SW50ZXJmYWNlSW1wbGVtZW50ZWRBcyogY3JlYXRlKEpTQzo6U3RydWN0
dXJlKiBzdHJ1Y3R1cmUsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFBhc3NSZWZQ
dHI8UmVhbENsYXNzPiBpbXBsKQorICAgIHsKKyAgICAgICAgSlNUZXN0SW50ZXJmYWNlSW1wbGVt
ZW50ZWRBcyogcHRyID0gbmV3IChOb3ROdWxsLCBKU0M6OmFsbG9jYXRlQ2VsbDxKU1Rlc3RJbnRl
cmZhY2VJbXBsZW1lbnRlZEFzPihnbG9iYWxPYmplY3QtPnZtKCkuaGVhcCkpIEpTVGVzdEludGVy
ZmFjZUltcGxlbWVudGVkQXMoc3RydWN0dXJlLCBnbG9iYWxPYmplY3QsIGltcGwpOworICAgICAg
ICBwdHItPmZpbmlzaENyZWF0aW9uKGdsb2JhbE9iamVjdC0+dm0oKSk7CisgICAgICAgIHJldHVy
biBwdHI7CisgICAgfQorCisgICAgc3RhdGljIEpTQzo6SlNPYmplY3QqIGNyZWF0ZVByb3RvdHlw
ZShKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6SlNHbG9iYWxPYmplY3QqKTsKKyAgICBzdGF0aWMgYm9v
bCBnZXRPd25Qcm9wZXJ0eVNsb3QoSlNDOjpKU0NlbGwqLCBKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6
UHJvcGVydHlOYW1lLCBKU0M6OlByb3BlcnR5U2xvdCYpOworICAgIHN0YXRpYyBib29sIGdldE93
blByb3BlcnR5RGVzY3JpcHRvcihKU0M6OkpTT2JqZWN0KiwgSlNDOjpFeGVjU3RhdGUqLCBKU0M6
OlByb3BlcnR5TmFtZSwgSlNDOjpQcm9wZXJ0eURlc2NyaXB0b3ImKTsKKyAgICBzdGF0aWMgdm9p
ZCBwdXQoSlNDOjpKU0NlbGwqLCBKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6UHJvcGVydHlOYW1lLCBK
U0M6OkpTVmFsdWUsIEpTQzo6UHV0UHJvcGVydHlTbG90Jik7CisgICAgc3RhdGljIHZvaWQgZGVz
dHJveShKU0M6OkpTQ2VsbCopOworICAgIH5KU1Rlc3RJbnRlcmZhY2VJbXBsZW1lbnRlZEFzKCk7
CisgICAgc3RhdGljIGNvbnN0IEpTQzo6Q2xhc3NJbmZvIHNfaW5mbzsKKworICAgIHN0YXRpYyBK
U0M6OlN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUpCisgICAgeworICAg
ICAgICByZXR1cm4gSlNDOjpTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90
b3R5cGUsIEpTQzo6VHlwZUluZm8oSlNDOjpPYmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyksICZz
X2luZm8pOworICAgIH0KKworICAgIHN0YXRpYyBKU0M6OkpTVmFsdWUgZ2V0Q29uc3RydWN0b3Io
SlNDOjpFeGVjU3RhdGUqLCBKU0M6OkpTR2xvYmFsT2JqZWN0Kik7CisgICAgUmVhbENsYXNzKiBp
bXBsKCkgY29uc3QgeyByZXR1cm4gbV9pbXBsOyB9CisgICAgdm9pZCByZWxlYXNlSW1wbCgpIHsg
bV9pbXBsLT5kZXJlZigpOyBtX2ltcGwgPSAwOyB9CisKKyAgICB2b2lkIHJlbGVhc2VJbXBsSWZO
b3ROdWxsKCkgeyBpZiAobV9pbXBsKSB7IG1faW1wbC0+ZGVyZWYoKTsgbV9pbXBsID0gMDsgfSB9
CisKK3ByaXZhdGU6CisgICAgUmVhbENsYXNzKiBtX2ltcGw7Citwcm90ZWN0ZWQ6CisgICAgSlNU
ZXN0SW50ZXJmYWNlSW1wbGVtZW50ZWRBcyhKU0M6OlN0cnVjdHVyZSosIEpTRE9NR2xvYmFsT2Jq
ZWN0KiwgUGFzc1JlZlB0cjxSZWFsQ2xhc3M+KTsKKyAgICB2b2lkIGZpbmlzaENyZWF0aW9uKEpT
Qzo6Vk0mKTsKKyAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBKU0M6
Ok92ZXJyaWRlc0dldE93blByb3BlcnR5U2xvdCB8IEpTQzo6SW50ZXJjZXB0c0dldE93blByb3Bl
cnR5U2xvdEJ5SW5kZXhFdmVuV2hlbkxlbmd0aElzTm90WmVybyB8IEJhc2U6OlN0cnVjdHVyZUZs
YWdzOworfTsKKworY2xhc3MgSlNUZXN0SW50ZXJmYWNlSW1wbGVtZW50ZWRBc093bmVyIDogcHVi
bGljIEpTQzo6V2Vha0hhbmRsZU93bmVyIHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIGJvb2wgaXNS
ZWFjaGFibGVGcm9tT3BhcXVlUm9vdHMoSlNDOjpIYW5kbGU8SlNDOjpVbmtub3duPiwgdm9pZCog
Y29udGV4dCwgSlNDOjpTbG90VmlzaXRvciYpOworICAgIHZpcnR1YWwgdm9pZCBmaW5hbGl6ZShK
U0M6OkhhbmRsZTxKU0M6OlVua25vd24+LCB2b2lkKiBjb250ZXh0KTsKK307CisKK2lubGluZSBK
U0M6OldlYWtIYW5kbGVPd25lciogd3JhcHBlck93bmVyKERPTVdyYXBwZXJXb3JsZCosIFJlYWxD
bGFzcyopCit7CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChKU1Rlc3RJbnRlcmZhY2VJbXBsZW1l
bnRlZEFzT3duZXIsIGpzVGVzdEludGVyZmFjZUltcGxlbWVudGVkQXNPd25lciwgKCkpOworICAg
IHJldHVybiAmanNUZXN0SW50ZXJmYWNlSW1wbGVtZW50ZWRBc093bmVyOworfQorCitpbmxpbmUg
dm9pZCogd3JhcHBlckNvbnRleHQoRE9NV3JhcHBlcldvcmxkKiB3b3JsZCwgUmVhbENsYXNzKikK
K3sKKyAgICByZXR1cm4gd29ybGQ7Cit9CisKK0pTQzo6SlNWYWx1ZSB0b0pTKEpTQzo6RXhlY1N0
YXRlKiwgSlNET01HbG9iYWxPYmplY3QqLCBSZWFsQ2xhc3MqKTsKK1JlYWxDbGFzcyogdG9SZWFs
Q2xhc3MoSlNDOjpKU1ZhbHVlKTsKKworY2xhc3MgSlNUZXN0SW50ZXJmYWNlSW1wbGVtZW50ZWRB
c1Byb3RvdHlwZSA6IHB1YmxpYyBKU0M6OkpTTm9uRmluYWxPYmplY3QgeworcHVibGljOgorICAg
IHR5cGVkZWYgSlNDOjpKU05vbkZpbmFsT2JqZWN0IEJhc2U7CisgICAgc3RhdGljIEpTQzo6SlNP
YmplY3QqIHNlbGYoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkpTR2xvYmFsT2JqZWN0Kik7CisgICAg
c3RhdGljIEpTVGVzdEludGVyZmFjZUltcGxlbWVudGVkQXNQcm90b3R5cGUqIGNyZWF0ZShKU0M6
OlZNJiB2bSwgSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OlN0cnVjdHVy
ZSogc3RydWN0dXJlKQorICAgIHsKKyAgICAgICAgSlNUZXN0SW50ZXJmYWNlSW1wbGVtZW50ZWRB
c1Byb3RvdHlwZSogcHRyID0gbmV3IChOb3ROdWxsLCBKU0M6OmFsbG9jYXRlQ2VsbDxKU1Rlc3RJ
bnRlcmZhY2VJbXBsZW1lbnRlZEFzUHJvdG90eXBlPih2bS5oZWFwKSkgSlNUZXN0SW50ZXJmYWNl
SW1wbGVtZW50ZWRBc1Byb3RvdHlwZSh2bSwgZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUpOworICAg
ICAgICBwdHItPmZpbmlzaENyZWF0aW9uKHZtKTsKKyAgICAgICAgcmV0dXJuIHB0cjsKKyAgICB9
CisKKyAgICBzdGF0aWMgY29uc3QgSlNDOjpDbGFzc0luZm8gc19pbmZvOworICAgIHN0YXRpYyBi
b29sIGdldE93blByb3BlcnR5U2xvdChKU0M6OkpTQ2VsbCosIEpTQzo6RXhlY1N0YXRlKiwgSlND
OjpQcm9wZXJ0eU5hbWUsIEpTQzo6UHJvcGVydHlTbG90Jik7CisgICAgc3RhdGljIGJvb2wgZ2V0
T3duUHJvcGVydHlEZXNjcmlwdG9yKEpTQzo6SlNPYmplY3QqLCBKU0M6OkV4ZWNTdGF0ZSosIEpT
Qzo6UHJvcGVydHlOYW1lLCBKU0M6OlByb3BlcnR5RGVzY3JpcHRvciYpOworICAgIHN0YXRpYyBK
U0M6OlN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUpCisgICAgeworICAg
ICAgICByZXR1cm4gSlNDOjpTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90
b3R5cGUsIEpTQzo6VHlwZUluZm8oSlNDOjpPYmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyksICZz
X2luZm8pOworICAgIH0KKworcHJpdmF0ZToKKyAgICBKU1Rlc3RJbnRlcmZhY2VJbXBsZW1lbnRl
ZEFzUHJvdG90eXBlKEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpTdHJ1
Y3R1cmUqIHN0cnVjdHVyZSkgOiBKU0M6OkpTTm9uRmluYWxPYmplY3Qodm0sIHN0cnVjdHVyZSkg
eyB9Citwcm90ZWN0ZWQ6CisgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdz
ID0gSlNDOjpPdmVycmlkZXNHZXRPd25Qcm9wZXJ0eVNsb3QgfCBCYXNlOjpTdHJ1Y3R1cmVGbGFn
czsKK307CisKK2NsYXNzIEpTVGVzdEludGVyZmFjZUltcGxlbWVudGVkQXNDb25zdHJ1Y3RvciA6
IHB1YmxpYyBET01Db25zdHJ1Y3Rvck9iamVjdCB7Citwcml2YXRlOgorICAgIEpTVGVzdEludGVy
ZmFjZUltcGxlbWVudGVkQXNDb25zdHJ1Y3RvcihKU0M6OlN0cnVjdHVyZSosIEpTRE9NR2xvYmFs
T2JqZWN0Kik7CisgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihKU0M6OkV4ZWNTdGF0ZSosIEpTRE9N
R2xvYmFsT2JqZWN0Kik7CisKK3B1YmxpYzoKKyAgICB0eXBlZGVmIERPTUNvbnN0cnVjdG9yT2Jq
ZWN0IEJhc2U7CisgICAgc3RhdGljIEpTVGVzdEludGVyZmFjZUltcGxlbWVudGVkQXNDb25zdHJ1
Y3RvciogY3JlYXRlKEpTQzo6RXhlY1N0YXRlKiBleGVjLCBKU0M6OlN0cnVjdHVyZSogc3RydWN0
dXJlLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQorICAgIHsKKyAgICAgICAgSlNU
ZXN0SW50ZXJmYWNlSW1wbGVtZW50ZWRBc0NvbnN0cnVjdG9yKiBwdHIgPSBuZXcgKE5vdE51bGws
IEpTQzo6YWxsb2NhdGVDZWxsPEpTVGVzdEludGVyZmFjZUltcGxlbWVudGVkQXNDb25zdHJ1Y3Rv
cj4oKmV4ZWMtPmhlYXAoKSkpIEpTVGVzdEludGVyZmFjZUltcGxlbWVudGVkQXNDb25zdHJ1Y3Rv
cihzdHJ1Y3R1cmUsIGdsb2JhbE9iamVjdCk7CisgICAgICAgIHB0ci0+ZmluaXNoQ3JlYXRpb24o
ZXhlYywgZ2xvYmFsT2JqZWN0KTsKKyAgICAgICAgcmV0dXJuIHB0cjsKKyAgICB9CisKKyAgICBz
dGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoSlNDOjpKU0NlbGwqLCBKU0M6OkV4ZWNTdGF0
ZSosIEpTQzo6UHJvcGVydHlOYW1lLCBKU0M6OlByb3BlcnR5U2xvdCYpOworICAgIHN0YXRpYyBi
b29sIGdldE93blByb3BlcnR5RGVzY3JpcHRvcihKU0M6OkpTT2JqZWN0KiwgSlNDOjpFeGVjU3Rh
dGUqLCBKU0M6OlByb3BlcnR5TmFtZSwgSlNDOjpQcm9wZXJ0eURlc2NyaXB0b3ImKTsKKyAgICBz
dGF0aWMgY29uc3QgSlNDOjpDbGFzc0luZm8gc19pbmZvOworICAgIHN0YXRpYyBKU0M6OlN0cnVj
dHVyZSogY3JlYXRlU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUpCisgICAgeworICAgICAgICByZXR1
cm4gSlNDOjpTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIEpT
Qzo6VHlwZUluZm8oSlNDOjpPYmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyksICZzX2luZm8pOwor
ICAgIH0KK3Byb3RlY3RlZDoKKyAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgU3RydWN0dXJlRmxh
Z3MgPSBKU0M6Ok92ZXJyaWRlc0dldE93blByb3BlcnR5U2xvdCB8IEpTQzo6SW1wbGVtZW50c0hh
c0luc3RhbmNlIHwgRE9NQ29uc3RydWN0b3JPYmplY3Q6OlN0cnVjdHVyZUZsYWdzOworfTsKKwor
Ly8gRnVuY3Rpb25zCisKK0pTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RJ
bnRlcmZhY2VJbXBsZW1lbnRlZEFzUHJvdG90eXBlRnVuY3Rpb25GdW5jMShKU0M6OkV4ZWNTdGF0
ZSopOworSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdEludGVyZmFjZUlt
cGxlbWVudGVkQXNQcm90b3R5cGVGdW5jdGlvbkZ1bmNUZXN0SW50ZXJmYWNlSW1wbGVtZW50ZWRB
c1BhcmFtKEpTQzo6RXhlY1N0YXRlKik7CisvLyBBdHRyaWJ1dGVzCisKK0pTQzo6SlNWYWx1ZSBq
c1Rlc3RJbnRlcmZhY2VJbXBsZW1lbnRlZEFzQShKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6SlNWYWx1
ZSwgSlNDOjpQcm9wZXJ0eU5hbWUpOwordm9pZCBzZXRKU1Rlc3RJbnRlcmZhY2VJbXBsZW1lbnRl
ZEFzQShKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6SlNPYmplY3QqLCBKU0M6OkpTVmFsdWUpOworSlND
OjpKU1ZhbHVlIGpzVGVzdEludGVyZmFjZUltcGxlbWVudGVkQXNCKEpTQzo6RXhlY1N0YXRlKiwg
SlNDOjpKU1ZhbHVlLCBKU0M6OlByb3BlcnR5TmFtZSk7Cit2b2lkIHNldEpTVGVzdEludGVyZmFj
ZUltcGxlbWVudGVkQXNCKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpKU09iamVjdCosIEpTQzo6SlNW
YWx1ZSk7CitKU0M6OkpTVmFsdWUganNUZXN0SW50ZXJmYWNlSW1wbGVtZW50ZWRBc0NvbnN0cnVj
dG9yKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpKU1ZhbHVlLCBKU0M6OlByb3BlcnR5TmFtZSk7CisK
K30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvT2JqQy9ET01UZXN0Q2FsbGJhY2suaCBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9PYmpDL0RPTVRlc3RDYWxsYmFjay5oCmlu
ZGV4IDU4NDBkZDAuLjJmODdkNjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9PYmpDL0RPTVRlc3RDYWxsYmFjay5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9PYmpDL0RPTVRlc3RDYWxsYmFjay5oCkBAIC0yOCwxMSAr
MjgsMTAgQEAKIAogI2lmIFdFQktJVF9WRVJTSU9OX01BWF9BTExPV0VEID49IFdFQktJVF9WRVJT
SU9OX0xBVEVTVAogCi1AY2xhc3MgRE9NQ2xhc3M1OwotQGNsYXNzIERPTUNsYXNzNjsKIEBjbGFz
cyBET01ET01TdHJpbmdMaXN0OwogQGNsYXNzIERPTUZsb2F0MzJBcnJheTsKIEBjbGFzcyBET01U
ZXN0Tm9kZTsKK0BjbGFzcyBET01UZXN0T2JqOwogQGNsYXNzIE5TU3RyaW5nOwogCiBAaW50ZXJm
YWNlIERPTVRlc3RDYWxsYmFjayA6IERPTU9iamVjdApAQCAtNDAsNyArMzksNyBAQAogLSAoQk9P
TCljYWxsYmFja1dpdGhBcnJheVBhcmFtOihET01GbG9hdDMyQXJyYXkgKilhcnJheVBhcmFtOwog
LSAoQk9PTCljYWxsYmFja1dpdGhTZXJpYWxpemVkU2NyaXB0VmFsdWVQYXJhbTooTlNTdHJpbmcg
KilzcnpQYXJhbSBzdHJBcmc6KE5TU3RyaW5nICopc3RyQXJnOwogLSAoaW50KWNhbGxiYWNrV2l0
aE5vbkJvb2xSZXR1cm5UeXBlOihOU1N0cmluZyAqKXN0ckFyZzsKLS0gKGludCljdXN0b21DYWxs
YmFjazooRE9NQ2xhc3M1ICopY2xhc3M1UGFyYW0gY2xhc3M2UGFyYW06KERPTUNsYXNzNiAqKWNs
YXNzNlBhcmFtOworLSAoaW50KWN1c3RvbUNhbGxiYWNrOihET01UZXN0T2JqICopdGVzdE9ialBh
cmFtIHRlc3RPYmpQYXJhbTooRE9NVGVzdE9iaiAqKXRlc3RPYmpQYXJhbTsKIC0gKEJPT0wpY2Fs
bGJhY2tXaXRoU3RyaW5nTGlzdDooRE9NRE9NU3RyaW5nTGlzdCAqKWxpc3RQYXJhbTsKIC0gKEJP
T0wpY2FsbGJhY2tXaXRoQm9vbGVhbjooQk9PTClib29sUGFyYW07CiAtIChCT09MKWNhbGxiYWNr
UmVxdWlyZXNUaGlzVG9QYXNzOihpbnQpbG9uZ1BhcmFtIHRlc3ROb2RlUGFyYW06KERPTVRlc3RO
b2RlICopdGVzdE5vZGVQYXJhbTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9PYmpDL0RPTVRlc3RDYWxsYmFjay5tbSBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9PYmpDL0RPTVRlc3RDYWxsYmFjay5tbQppbmRleCAzNTM0ZTMw
Li45MDE0NTA0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvT2JqQy9ET01UZXN0Q2FsbGJhY2subW0KKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L09iakMvRE9NVGVzdENhbGxiYWNrLm1tCkBAIC0zMiwxMyArMzIsOSBAQAog
CiAjaW1wb3J0ICJET01UZXN0Q2FsbGJhY2suaCIKIAotI2ltcG9ydCAiQ2xhc3M1LmgiCi0jaW1w
b3J0ICJDbGFzczYuaCIKICNpbXBvcnQgIkRPTUJsb2JJbnRlcm5hbC5oIgogI2ltcG9ydCAiRE9N
Q1NTUnVsZUludGVybmFsLmgiCiAjaW1wb3J0ICJET01DU1NWYWx1ZUludGVybmFsLmgiCi0jaW1w
b3J0ICJET01DbGFzczVJbnRlcm5hbC5oIgotI2ltcG9ydCAiRE9NQ2xhc3M2SW50ZXJuYWwuaCIK
ICNpbXBvcnQgIkRPTURPTVN0cmluZ0xpc3RJbnRlcm5hbC5oIgogI2ltcG9ydCAiRE9NRXZlbnRJ
bnRlcm5hbC5oIgogI2ltcG9ydCAiRE9NRmxvYXQzMkFycmF5SW50ZXJuYWwuaCIKQEAgLTQ3LDYg
KzQzLDcgQEAKICNpbXBvcnQgIkRPTVN0eWxlU2hlZXRJbnRlcm5hbC5oIgogI2ltcG9ydCAiRE9N
VGVzdENhbGxiYWNrSW50ZXJuYWwuaCIKICNpbXBvcnQgIkRPTVRlc3ROb2RlSW50ZXJuYWwuaCIK
KyNpbXBvcnQgIkRPTVRlc3RPYmpJbnRlcm5hbC5oIgogI2ltcG9ydCAiRXhjZXB0aW9uSGFuZGxl
cnMuaCIKICNpbXBvcnQgIkZsb2F0MzJBcnJheS5oIgogI2ltcG9ydCAiSlNNYWluVGhyZWFkRXhl
Y1N0YXRlLmgiCkBAIC01NCw2ICs1MSw3IEBACiAjaW1wb3J0ICJTZXJpYWxpemVkU2NyaXB0VmFs
dWUuaCIKICNpbXBvcnQgIlRlc3RDYWxsYmFjay5oIgogI2ltcG9ydCAiVGVzdE5vZGUuaCIKKyNp
bXBvcnQgIlRlc3RPYmouaCIKICNpbXBvcnQgIlRocmVhZENoZWNrLmgiCiAjaW1wb3J0ICJXZWJD
b3JlT2JqQ0V4dHJhcy5oIgogI2ltcG9ydCAiV2ViU2NyaXB0T2JqZWN0UHJpdmF0ZS5oIgpAQCAt
MTA0LDEwICsxMDIsMTAgQEAKICAgICByZXR1cm4gSU1QTC0+Y2FsbGJhY2tXaXRoTm9uQm9vbFJl
dHVyblR5cGUoc3RyQXJnKTsKIH0KIAotLSAoaW50KWN1c3RvbUNhbGxiYWNrOihET01DbGFzczUg
KiljbGFzczVQYXJhbSBjbGFzczZQYXJhbTooRE9NQ2xhc3M2ICopY2xhc3M2UGFyYW0KKy0gKGlu
dCljdXN0b21DYWxsYmFjazooRE9NVGVzdE9iaiAqKXRlc3RPYmpQYXJhbSB0ZXN0T2JqUGFyYW06
KERPTVRlc3RPYmogKil0ZXN0T2JqUGFyYW0KIHsKICAgICBXZWJDb3JlOjpKU01haW5UaHJlYWRO
dWxsU3RhdGUgc3RhdGU7Ci0gICAgcmV0dXJuIElNUEwtPmN1c3RvbUNhbGxiYWNrKGNvcmUoY2xh
c3M1UGFyYW0pLCBjb3JlKGNsYXNzNlBhcmFtKSk7CisgICAgcmV0dXJuIElNUEwtPmN1c3RvbUNh
bGxiYWNrKGNvcmUodGVzdE9ialBhcmFtKSwgY29yZSh0ZXN0T2JqUGFyYW0pKTsKIH0KIAogLSAo
Qk9PTCljYWxsYmFja1dpdGhTdHJpbmdMaXN0OihET01ET01TdHJpbmdMaXN0ICopbGlzdFBhcmFt
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvT2JqQy9E
T01UZXN0SW50ZXJmYWNlSW1wbGVtZW50ZWRBcy5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L09iakMvRE9NVGVzdEludGVyZmFjZUltcGxlbWVudGVkQXMuaApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wNDlhNDE0Ci0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L09iakMvRE9NVGVzdEludGVyZmFj
ZUltcGxlbWVudGVkQXMuaApAQCAtMCwwICsxLDQyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDA0LCAyMDA1LCAyMDA2LCAyMDA3LCAyMDA4LCAyMDA5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNiBTYW11ZWwgV2VpbmlnIDxzYW0ud2Vpbmln
QGdtYWlsLmNvbT4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICog
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICog
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4gCisgKi8KKworI2ltcG9ydCA8V2ViQ29yZS9ET01PYmplY3QuaD4KKworI2lm
IFdFQktJVF9WRVJTSU9OX01BWF9BTExPV0VEID49IFdFQktJVF9WRVJTSU9OX0xBVEVTVAorCitA
Y2xhc3MgRE9NVGVzdEludGVyZmFjZUltcGxlbWVudGVkQXM7CitAY2xhc3MgTlNTdHJpbmc7CisK
K0BpbnRlcmZhY2UgRE9NVGVzdEludGVyZmFjZUltcGxlbWVudGVkQXMgOiBET01PYmplY3QKK0Bw
cm9wZXJ0eShjb3B5KSBOU1N0cmluZyAqYTsKK0Bwcm9wZXJ0eShyZXRhaW4pIERPTVRlc3RJbnRl
cmZhY2VJbXBsZW1lbnRlZEFzICpiOworCistIChOU1N0cmluZyAqKWZ1bmMxOihOU1N0cmluZyAq
KWE7CistIChOU1N0cmluZyAqKWZ1bmNUZXN0SW50ZXJmYWNlSW1wbGVtZW50ZWRBc1BhcmFtOihE
T01UZXN0SW50ZXJmYWNlSW1wbGVtZW50ZWRBcyAqKW9yYW5nZTsKK0BlbmQKKworI2VuZGlmCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvT2JqQy9ET01U
ZXN0SW50ZXJmYWNlSW1wbGVtZW50ZWRBcy5tbSBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9PYmpDL0RPTVRlc3RJbnRlcmZhY2VJbXBsZW1lbnRlZEFzLm1tCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmEwZTIxN2IKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvT2JqQy9ET01UZXN0SW50ZXJmYWNl
SW1wbGVtZW50ZWRBcy5tbQpAQCAtMCwwICsxLDEyNiBAQAorLyoKKyAqIFRoaXMgZmlsZSBpcyBw
YXJ0IG9mIHRoZSBXZWJLaXQgb3BlbiBzb3VyY2UgcHJvamVjdC4KKyAqIFRoaXMgZmlsZSBoYXMg
YmVlbiBnZW5lcmF0ZWQgYnkgZ2VuZXJhdGUtYmluZGluZ3MucGwuIERPIE5PVCBNT0RJRlkhCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRF
UiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVS
LCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgor
ICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAor
ICovCisKKyNpbXBvcnQgImNvbmZpZy5oIgorI2ltcG9ydCAiRE9NSW50ZXJuYWwuaCIKKworI2lt
cG9ydCAiRE9NVGVzdEludGVyZmFjZUltcGxlbWVudGVkQXMuaCIKKworI2ltcG9ydCAiRE9NQmxv
YkludGVybmFsLmgiCisjaW1wb3J0ICJET01DU1NSdWxlSW50ZXJuYWwuaCIKKyNpbXBvcnQgIkRP
TUNTU1ZhbHVlSW50ZXJuYWwuaCIKKyNpbXBvcnQgIkRPTUV2ZW50SW50ZXJuYWwuaCIKKyNpbXBv
cnQgIkRPTU5vZGVJbnRlcm5hbC5oIgorI2ltcG9ydCAiRE9NU3R5bGVTaGVldEludGVybmFsLmgi
CisjaW1wb3J0ICJET01UZXN0SW50ZXJmYWNlSW1wbGVtZW50ZWRBc0ludGVybmFsLmgiCisjaW1w
b3J0ICJFeGNlcHRpb25IYW5kbGVycy5oIgorI2ltcG9ydCAiSlNNYWluVGhyZWFkRXhlY1N0YXRl
LmgiCisjaW1wb3J0ICJLVVJMLmgiCisjaW1wb3J0ICJUZXN0SW50ZXJmYWNlSW1wbGVtZW50ZWRB
cy5oIgorI2ltcG9ydCAiVGhyZWFkQ2hlY2suaCIKKyNpbXBvcnQgIldlYkNvcmVPYmpDRXh0cmFz
LmgiCisjaW1wb3J0ICJXZWJTY3JpcHRPYmplY3RQcml2YXRlLmgiCisjaW1wb3J0IDx3dGYvR2V0
UHRyLmg+CisKKyNkZWZpbmUgSU1QTCByZWludGVycHJldF9jYXN0PFdlYkNvcmU6OlRlc3RJbnRl
cmZhY2VJbXBsZW1lbnRlZEFzKj4oX2ludGVybmFsKQorCitAaW1wbGVtZW50YXRpb24gRE9NVGVz
dEludGVyZmFjZUltcGxlbWVudGVkQXMKKworLSAodm9pZClkZWFsbG9jCit7CisgICAgaWYgKFdl
YkNvcmVPYmpDU2NoZWR1bGVEZWFsbG9jYXRlT25NYWluVGhyZWFkKFtET01UZXN0SW50ZXJmYWNl
SW1wbGVtZW50ZWRBcyBjbGFzc10sIHNlbGYpKQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAo
X2ludGVybmFsKQorICAgICAgICBJTVBMLT5kZXJlZigpOworICAgIFtzdXBlciBkZWFsbG9jXTsK
K30KKworLSAodm9pZClmaW5hbGl6ZQoreworICAgIGlmIChfaW50ZXJuYWwpCisgICAgICAgIElN
UEwtPmRlcmVmKCk7CisgICAgW3N1cGVyIGZpbmFsaXplXTsKK30KKworLSAoTlNTdHJpbmcgKilh
Cit7CisgICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOworICAgIHJldHVy
biBJTVBMLT5hKCk7Cit9CisKKy0gKHZvaWQpc2V0QTooTlNTdHJpbmcgKiluZXdBCit7CisgICAg
V2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOworICAgIElNUEwtPnNldEEobmV3
QSk7Cit9CisKKy0gKERPTVRlc3RJbnRlcmZhY2VJbXBsZW1lbnRlZEFzICopYgoreworICAgIFdl
YkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKKyAgICByZXR1cm4ga2l0KFdURjo6
Z2V0UHRyKElNUEwtPmIoKSkpOworfQorCistICh2b2lkKXNldEI6KERPTVRlc3RJbnRlcmZhY2VJ
bXBsZW1lbnRlZEFzICopbmV3QgoreworICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0
ZSBzdGF0ZTsKKyAgICBBU1NFUlQobmV3Qik7CisKKyAgICBJTVBMLT5zZXRCKGNvcmUobmV3Qikp
OworfQorCistIChOU1N0cmluZyAqKWZ1bmMxOihOU1N0cmluZyAqKWluQQoreworICAgIFdlYkNv
cmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKKyAgICByZXR1cm4gSU1QTC0+ZnVuYzEo
aW5BKTsKK30KKworLSAoTlNTdHJpbmcgKilmdW5jVGVzdEludGVyZmFjZUltcGxlbWVudGVkQXNQ
YXJhbTooRE9NVGVzdEludGVyZmFjZUltcGxlbWVudGVkQXMgKilvcmFuZ2UKK3sKKyAgICBXZWJD
b3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7CisgICAgcmV0dXJuIElNUEwtPmZ1bmNU
ZXN0SW50ZXJmYWNlSW1wbGVtZW50ZWRBc1BhcmFtKGNvcmUob3JhbmdlKSk7Cit9CisKK0BlbmQK
KworV2ViQ29yZTo6VGVzdEludGVyZmFjZUltcGxlbWVudGVkQXMqIGNvcmUoRE9NVGVzdEludGVy
ZmFjZUltcGxlbWVudGVkQXMgKndyYXBwZXIpCit7CisgICAgcmV0dXJuIHdyYXBwZXIgPyByZWlu
dGVycHJldF9jYXN0PFdlYkNvcmU6OlRlc3RJbnRlcmZhY2VJbXBsZW1lbnRlZEFzKj4od3JhcHBl
ci0+X2ludGVybmFsKSA6IDA7Cit9CisKK0RPTVRlc3RJbnRlcmZhY2VJbXBsZW1lbnRlZEFzICpr
aXQoV2ViQ29yZTo6VGVzdEludGVyZmFjZUltcGxlbWVudGVkQXMqIHZhbHVlKQoreworICAgIHsg
RE9NX0FTU0VSVF9NQUlOX1RIUkVBRCgpOyBXZWJDb3JlVGhyZWFkVmlvbGF0aW9uQ2hlY2tSb3Vu
ZE9uZSgpOyB9OworICAgIGlmICghdmFsdWUpCisgICAgICAgIHJldHVybiBuaWw7CisgICAgaWYg
KERPTVRlc3RJbnRlcmZhY2VJbXBsZW1lbnRlZEFzICp3cmFwcGVyID0gZ2V0RE9NV3JhcHBlcih2
YWx1ZSkpCisgICAgICAgIHJldHVybiBbW3dyYXBwZXIgcmV0YWluXSBhdXRvcmVsZWFzZV07Cisg
ICAgRE9NVGVzdEludGVyZmFjZUltcGxlbWVudGVkQXMgKndyYXBwZXIgPSBbW0RPTVRlc3RJbnRl
cmZhY2VJbXBsZW1lbnRlZEFzIGFsbG9jXSBfaW5pdF07CisgICAgd3JhcHBlci0+X2ludGVybmFs
ID0gcmVpbnRlcnByZXRfY2FzdDxET01PYmplY3RJbnRlcm5hbCo+KHZhbHVlKTsKKyAgICB2YWx1
ZS0+cmVmKCk7CisgICAgYWRkRE9NV3JhcHBlcih3cmFwcGVyLCB2YWx1ZSk7CisgICAgcmV0dXJu
IFt3cmFwcGVyIGF1dG9yZWxlYXNlXTsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9PYmpDL0RPTVRlc3RJbnRlcmZhY2VJbXBsZW1lbnRlZEFzSW50
ZXJuYWwuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9PYmpDL0RPTVRl
c3RJbnRlcmZhY2VJbXBsZW1lbnRlZEFzSW50ZXJuYWwuaApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwLi42ZGFkMGZhCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L09iakMvRE9NVGVzdEludGVyZmFjZUltcGxlbWVudGVkQXNJ
bnRlcm5hbC5oCkBAIC0wLDAgKzEsMzggQEAKKy8qCisgKiBUaGlzIGZpbGUgaXMgcGFydCBvZiB0
aGUgV2ViS2l0IG9wZW4gc291cmNlIHByb2plY3QuCisgKiBUaGlzIGZpbGUgaGFzIGJlZW4gZ2Vu
ZXJhdGVkIGJ5IGdlbmVyYXRlLWJpbmRpbmdzLnBsLiBETyBOT1QgTU9ESUZZIQorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4g
YGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBP
UgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisj
aW1wb3J0IDxXZWJDb3JlL0RPTVRlc3RJbnRlcmZhY2VJbXBsZW1lbnRlZEFzLmg+CisKKyNpZiBX
RUJLSVRfVkVSU0lPTl9NQVhfQUxMT1dFRCA+PSBXRUJLSVRfVkVSU0lPTl9MQVRFU1QKKworbmFt
ZXNwYWNlIFdlYkNvcmUgeworICAgIGNsYXNzIFRlc3RJbnRlcmZhY2VJbXBsZW1lbnRlZEFzOwor
fQorCitXZWJDb3JlOjpUZXN0SW50ZXJmYWNlSW1wbGVtZW50ZWRBcyogY29yZShET01UZXN0SW50
ZXJmYWNlSW1wbGVtZW50ZWRBcyAqKTsKK0RPTVRlc3RJbnRlcmZhY2VJbXBsZW1lbnRlZEFzICpr
aXQoV2ViQ29yZTo6VGVzdEludGVyZmFjZUltcGxlbWVudGVkQXMqKTsKKworI2VuZGlmCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVzdENhbGxiYWNr
LmlkbCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9UZXN0Q2FsbGJhY2su
aWRsCmluZGV4IDNhMGNkMjUuLjgwNjFmODMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9UZXN0Q2FsbGJhY2suaWRsCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9UZXN0Q2FsbGJhY2suaWRsCkBAIC0zNSw3ICszNSw3IEBA
CiAgIGJvb2xlYW4gY2FsbGJhY2tXaXRoQXJyYXlQYXJhbShGbG9hdDMyQXJyYXkgYXJyYXlQYXJh
bSk7CiAgIGJvb2xlYW4gY2FsbGJhY2tXaXRoU2VyaWFsaXplZFNjcmlwdFZhbHVlUGFyYW0oU2Vy
aWFsaXplZFNjcmlwdFZhbHVlIHNyelBhcmFtLCBET01TdHJpbmcgc3RyQXJnKTsKICAgbG9uZyBj
YWxsYmFja1dpdGhOb25Cb29sUmV0dXJuVHlwZShET01TdHJpbmcgc3RyQXJnKTsKLSAgW0N1c3Rv
bV0gbG9uZyBjdXN0b21DYWxsYmFjayhDbGFzczUgY2xhc3M1UGFyYW0sIENsYXNzNiBjbGFzczZQ
YXJhbSk7CisgIFtDdXN0b21dIGxvbmcgY3VzdG9tQ2FsbGJhY2soVGVzdE9iaiB0ZXN0T2JqUGFy
YW0sIFRlc3RPYmogdGVzdE9ialBhcmFtKTsKICAgYm9vbGVhbiBjYWxsYmFja1dpdGhTdHJpbmdM
aXN0KERPTVN0cmluZ0xpc3QgbGlzdFBhcmFtKTsKICAgYm9vbGVhbiBjYWxsYmFja1dpdGhCb29s
ZWFuKGJvb2xlYW4gYm9vbFBhcmFtKTsKICAgW1Bhc3NUaGlzVG9DYWxsYmFjaz1UZXN0Tm9kZV0g
Ym9vbGVhbiBjYWxsYmFja1JlcXVpcmVzVGhpc1RvUGFzcyhsb25nIGxvbmdQYXJhbSwgVGVzdE5v
ZGUgdGVzdE5vZGVQYXJhbSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvVGVzdEludGVyZmFjZUltcGxlbWVudGVkQXMuaWRsIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Rlc3RJbnRlcmZhY2VJbXBsZW1lbnRlZEFzLmlkbApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43M2FiNjAxCi0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Rlc3RJbnRlcmZhY2VJ
bXBsZW1lbnRlZEFzLmlkbApAQCAtMCwwICsxLDkgQEAKK1sKKyAgICBJbXBsZW1lbnRlZEFzPVJl
YWxDbGFzcworXSBpbnRlcmZhY2UgVGVzdEludGVyZmFjZUltcGxlbWVudGVkQXMgeworICAgIGF0
dHJpYnV0ZSBET01TdHJpbmcgYTsKKyAgICBhdHRyaWJ1dGUgVGVzdEludGVyZmFjZUltcGxlbWVu
dGVkQXMgYjsKKworICAgIERPTVN0cmluZyBmdW5jMShET01TdHJpbmcgYSk7CisgICAgRE9NU3Ry
aW5nIGZ1bmNUZXN0SW50ZXJmYWNlSW1wbGVtZW50ZWRBc1BhcmFtKFRlc3RJbnRlcmZhY2VJbXBs
ZW1lbnRlZEFzIG9yYW5nZSk7Cit9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9j
YW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmlkbCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
Y2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5pZGwKaW5kZXggOTlmMWEzMS4uNzk1NTQw
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5n
Q29udGV4dDJELmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5k
ZXJpbmdDb250ZXh0MkQuaWRsCkBAIC02Nyw3ICs2Nyw3IEBAIGludGVyZmFjZSBDYW52YXNSZW5k
ZXJpbmdDb250ZXh0MkQgOiBDYW52YXNSZW5kZXJpbmdDb250ZXh0IHsKICAgICB2b2lkIGJlZ2lu
UGF0aCgpOwogCiAjaWYgZGVmaW5lZChFTkFCTEVfQ0FOVkFTX1BBVEgpICYmIEVOQUJMRV9DQU5W
QVNfUEFUSAotICAgIGF0dHJpYnV0ZSBET01QYXRoIGN1cnJlbnRQYXRoOworICAgIGF0dHJpYnV0
ZSBQYXRoIGN1cnJlbnRQYXRoOwogI2VuZGlmCiAKICAgICAvLyBGSVhNRTogVGhlc2UgbWV0aG9k
cyBzaG91bGQgYmUgc2hhcmVkIHdpdGggQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEIGluIHRoZSBD
YW52YXNQYXRoTWV0aG9kcyBpbnRlcmZhY2UuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL2NhbnZhcy9ET01QYXRoLmlkbCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0RPTVBh
dGguaWRsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2ZWVlMmU3MC4uMDAwMDAwMAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9ET01QYXRoLmlkbAorKysgL2Rldi9udWxs
CkBAIC0xLDcyICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDYgQXBwbGUgQ29tcHV0
ZXIsIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTIsIDIw
MTMgQWRvYmUgU3lzdGVtcyBJbmNvcnBvcmF0ZWQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgot
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKgotICogMS4gIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgotICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09Q
WVJJR0hUIEhPTERFUiAiQVMgSVMiIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
LSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklH
SFQgSE9MREVSIEJFCi0gKiBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksCi0gKiBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSAqIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SCi0gKiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YKLSAqIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRgotICogU1VDSCBEQU1BR0UuCi0gKi8KLQotWwot
ICAgIENvbnN0cnVjdG9yLAotICAgIENvbnN0cnVjdG9yKERPTVBhdGggcGF0aCksCi0jaWYgZGVm
aW5lZChFTkFCTEVfU1ZHKSAmJiBFTkFCTEVfU1ZHCi0gICAgQ29uc3RydWN0b3IoRE9NU3RyaW5n
IHRleHQpLAotI2VuZGlmCi0gICAgQ29uZGl0aW9uYWw9Q0FOVkFTX1BBVEgsCi0gICAgSW50ZXJm
YWNlTmFtZT1QYXRoCi1dIGludGVyZmFjZSBET01QYXRoIHsKLQotICAgIC8vIEZJWE1FOiBUaGVz
ZSBtZXRob2RzIHNob3VsZCBiZSBzaGFyZWQgd2l0aCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQg
aW4gdGhlIENhbnZhc1BhdGhNZXRob2RzIGludGVyZmFjZS4KLSAgICB2b2lkIGNsb3NlUGF0aCgp
OwotICAgIHZvaWQgbW92ZVRvKFtEZWZhdWx0PVVuZGVmaW5lZF0gb3B0aW9uYWwgZmxvYXQgeCwK
LSAgICAgICAgICAgICAgICBbRGVmYXVsdD1VbmRlZmluZWRdIG9wdGlvbmFsIGZsb2F0IHkpOwot
ICAgIHZvaWQgbGluZVRvKFtEZWZhdWx0PVVuZGVmaW5lZF0gb3B0aW9uYWwgZmxvYXQgeCwKLSAg
ICAgICAgICAgICAgICBbRGVmYXVsdD1VbmRlZmluZWRdIG9wdGlvbmFsIGZsb2F0IHkpOwotICAg
IHZvaWQgcXVhZHJhdGljQ3VydmVUbyhbRGVmYXVsdD1VbmRlZmluZWRdIG9wdGlvbmFsIGZsb2F0
IGNweCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgW0RlZmF1bHQ9VW5kZWZpbmVkXSBvcHRp
b25hbCBmbG9hdCBjcHksCi0gICAgICAgICAgICAgICAgICAgICAgICAgIFtEZWZhdWx0PVVuZGVm
aW5lZF0gb3B0aW9uYWwgZmxvYXQgeCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgW0RlZmF1
bHQ9VW5kZWZpbmVkXSBvcHRpb25hbCBmbG9hdCB5KTsKLSAgICB2b2lkIGJlemllckN1cnZlVG8o
W0RlZmF1bHQ9VW5kZWZpbmVkXSBvcHRpb25hbCBmbG9hdCBjcDF4LAotICAgICAgICAgICAgICAg
ICAgICAgICBbRGVmYXVsdD1VbmRlZmluZWRdIG9wdGlvbmFsIGZsb2F0IGNwMXksCi0gICAgICAg
ICAgICAgICAgICAgICAgIFtEZWZhdWx0PVVuZGVmaW5lZF0gb3B0aW9uYWwgZmxvYXQgY3AyeCwK
LSAgICAgICAgICAgICAgICAgICAgICAgW0RlZmF1bHQ9VW5kZWZpbmVkXSBvcHRpb25hbCBmbG9h
dCBjcDJ5LAotICAgICAgICAgICAgICAgICAgICAgICBbRGVmYXVsdD1VbmRlZmluZWRdIG9wdGlv
bmFsIGZsb2F0IHgsCi0gICAgICAgICAgICAgICAgICAgICAgIFtEZWZhdWx0PVVuZGVmaW5lZF0g
b3B0aW9uYWwgZmxvYXQgeSk7Ci0gICAgdm9pZCBhcmNUbyhbRGVmYXVsdD1VbmRlZmluZWRdIG9w
dGlvbmFsIGZsb2F0IHgxLAotICAgICAgICAgICAgICAgW0RlZmF1bHQ9VW5kZWZpbmVkXSBvcHRp
b25hbCBmbG9hdCB5MSwKLSAgICAgICAgICAgICAgIFtEZWZhdWx0PVVuZGVmaW5lZF0gb3B0aW9u
YWwgZmxvYXQgeDIsCi0gICAgICAgICAgICAgICBbRGVmYXVsdD1VbmRlZmluZWRdIG9wdGlvbmFs
IGZsb2F0IHkyLAotICAgICAgICAgICAgICAgW0RlZmF1bHQ9VW5kZWZpbmVkXSBvcHRpb25hbCBm
bG9hdCByYWRpdXMpCi0gICAgICAgIHJhaXNlcyAoRE9NRXhjZXB0aW9uKTsKLSAgICB2b2lkIHJl
Y3QoW0RlZmF1bHQ9VW5kZWZpbmVkXSBvcHRpb25hbCBmbG9hdCB4LAotICAgICAgICAgICAgICBb
RGVmYXVsdD1VbmRlZmluZWRdIG9wdGlvbmFsIGZsb2F0IHksCi0gICAgICAgICAgICAgIFtEZWZh
dWx0PVVuZGVmaW5lZF0gb3B0aW9uYWwgZmxvYXQgd2lkdGgsCi0gICAgICAgICAgICAgIFtEZWZh
dWx0PVVuZGVmaW5lZF0gb3B0aW9uYWwgZmxvYXQgaGVpZ2h0KTsKLSAgICB2b2lkIGFyYyhbRGVm
YXVsdD1VbmRlZmluZWRdIG9wdGlvbmFsIGZsb2F0IHgsCi0gICAgICAgICAgICAgW0RlZmF1bHQ9
VW5kZWZpbmVkXSBvcHRpb25hbCBmbG9hdCB5LAotICAgICAgICAgICAgIFtEZWZhdWx0PVVuZGVm
aW5lZF0gb3B0aW9uYWwgZmxvYXQgcmFkaXVzLAotICAgICAgICAgICAgIFtEZWZhdWx0PVVuZGVm
aW5lZF0gb3B0aW9uYWwgZmxvYXQgc3RhcnRBbmdsZSwKLSAgICAgICAgICAgICBbRGVmYXVsdD1V
bmRlZmluZWRdIG9wdGlvbmFsIGZsb2F0IGVuZEFuZ2xlLAotICAgICAgICAgICAgIFtEZWZhdWx0
PVVuZGVmaW5lZF0gb3B0aW9uYWwgYm9vbGVhbiBhbnRpY2xvY2t3aXNlKQotICAgICAgICByYWlz
ZXMgKERPTUV4Y2VwdGlvbik7Ci19OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9j
YW52YXMvUGF0aC5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9QYXRoLmlkbApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iZjNmZjUwCi0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvUGF0aC5pZGwKQEAgLTAsMCArMSw3MiBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAwNiBBcHBsZSBDb21wdXRlciwgSW5jLiAgQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMiwgMjAxMyBBZG9iZSBTeXN0ZW1zIElu
Y29ycG9yYXRlZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSICJBUyBJ
UyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVCBIT0xERVIgQkUKKyAqIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwKKyAqIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IKKyAqIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRgor
ICogVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GCisgKiBTVUNIIERBTUFHRS4KKyAqLworCitbCisgICAgQ29uc3RydWN0b3IsCisg
ICAgQ29uc3RydWN0b3IoUGF0aCBwYXRoKSwKKyNpZiBkZWZpbmVkKEVOQUJMRV9TVkcpICYmIEVO
QUJMRV9TVkcKKyAgICBDb25zdHJ1Y3RvcihET01TdHJpbmcgdGV4dCksCisjZW5kaWYKKyAgICBD
b25kaXRpb25hbD1DQU5WQVNfUEFUSCwKKyAgICBJbXBsZW1lbnRlZEFzPURPTVBhdGgKK10gaW50
ZXJmYWNlIFBhdGggeworCisgICAgLy8gRklYTUU6IFRoZXNlIG1ldGhvZHMgc2hvdWxkIGJlIHNo
YXJlZCB3aXRoIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRCBpbiB0aGUgQ2FudmFzUGF0aE1ldGhv
ZHMgaW50ZXJmYWNlLgorICAgIHZvaWQgY2xvc2VQYXRoKCk7CisgICAgdm9pZCBtb3ZlVG8oW0Rl
ZmF1bHQ9VW5kZWZpbmVkXSBvcHRpb25hbCBmbG9hdCB4LAorICAgICAgICAgICAgICAgIFtEZWZh
dWx0PVVuZGVmaW5lZF0gb3B0aW9uYWwgZmxvYXQgeSk7CisgICAgdm9pZCBsaW5lVG8oW0RlZmF1
bHQ9VW5kZWZpbmVkXSBvcHRpb25hbCBmbG9hdCB4LAorICAgICAgICAgICAgICAgIFtEZWZhdWx0
PVVuZGVmaW5lZF0gb3B0aW9uYWwgZmxvYXQgeSk7CisgICAgdm9pZCBxdWFkcmF0aWNDdXJ2ZVRv
KFtEZWZhdWx0PVVuZGVmaW5lZF0gb3B0aW9uYWwgZmxvYXQgY3B4LAorICAgICAgICAgICAgICAg
ICAgICAgICAgICBbRGVmYXVsdD1VbmRlZmluZWRdIG9wdGlvbmFsIGZsb2F0IGNweSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgW0RlZmF1bHQ9VW5kZWZpbmVkXSBvcHRpb25hbCBmbG9hdCB4
LAorICAgICAgICAgICAgICAgICAgICAgICAgICBbRGVmYXVsdD1VbmRlZmluZWRdIG9wdGlvbmFs
IGZsb2F0IHkpOworICAgIHZvaWQgYmV6aWVyQ3VydmVUbyhbRGVmYXVsdD1VbmRlZmluZWRdIG9w
dGlvbmFsIGZsb2F0IGNwMXgsCisgICAgICAgICAgICAgICAgICAgICAgIFtEZWZhdWx0PVVuZGVm
aW5lZF0gb3B0aW9uYWwgZmxvYXQgY3AxeSwKKyAgICAgICAgICAgICAgICAgICAgICAgW0RlZmF1
bHQ9VW5kZWZpbmVkXSBvcHRpb25hbCBmbG9hdCBjcDJ4LAorICAgICAgICAgICAgICAgICAgICAg
ICBbRGVmYXVsdD1VbmRlZmluZWRdIG9wdGlvbmFsIGZsb2F0IGNwMnksCisgICAgICAgICAgICAg
ICAgICAgICAgIFtEZWZhdWx0PVVuZGVmaW5lZF0gb3B0aW9uYWwgZmxvYXQgeCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgW0RlZmF1bHQ9VW5kZWZpbmVkXSBvcHRpb25hbCBmbG9hdCB5KTsKKyAg
ICB2b2lkIGFyY1RvKFtEZWZhdWx0PVVuZGVmaW5lZF0gb3B0aW9uYWwgZmxvYXQgeDEsCisgICAg
ICAgICAgICAgICBbRGVmYXVsdD1VbmRlZmluZWRdIG9wdGlvbmFsIGZsb2F0IHkxLAorICAgICAg
ICAgICAgICAgW0RlZmF1bHQ9VW5kZWZpbmVkXSBvcHRpb25hbCBmbG9hdCB4MiwKKyAgICAgICAg
ICAgICAgIFtEZWZhdWx0PVVuZGVmaW5lZF0gb3B0aW9uYWwgZmxvYXQgeTIsCisgICAgICAgICAg
ICAgICBbRGVmYXVsdD1VbmRlZmluZWRdIG9wdGlvbmFsIGZsb2F0IHJhZGl1cykKKyAgICAgICAg
cmFpc2VzIChET01FeGNlcHRpb24pOworICAgIHZvaWQgcmVjdChbRGVmYXVsdD1VbmRlZmluZWRd
IG9wdGlvbmFsIGZsb2F0IHgsCisgICAgICAgICAgICAgIFtEZWZhdWx0PVVuZGVmaW5lZF0gb3B0
aW9uYWwgZmxvYXQgeSwKKyAgICAgICAgICAgICAgW0RlZmF1bHQ9VW5kZWZpbmVkXSBvcHRpb25h
bCBmbG9hdCB3aWR0aCwKKyAgICAgICAgICAgICAgW0RlZmF1bHQ9VW5kZWZpbmVkXSBvcHRpb25h
bCBmbG9hdCBoZWlnaHQpOworICAgIHZvaWQgYXJjKFtEZWZhdWx0PVVuZGVmaW5lZF0gb3B0aW9u
YWwgZmxvYXQgeCwKKyAgICAgICAgICAgICBbRGVmYXVsdD1VbmRlZmluZWRdIG9wdGlvbmFsIGZs
b2F0IHksCisgICAgICAgICAgICAgW0RlZmF1bHQ9VW5kZWZpbmVkXSBvcHRpb25hbCBmbG9hdCBy
YWRpdXMsCisgICAgICAgICAgICAgW0RlZmF1bHQ9VW5kZWZpbmVkXSBvcHRpb25hbCBmbG9hdCBz
dGFydEFuZ2xlLAorICAgICAgICAgICAgIFtEZWZhdWx0PVVuZGVmaW5lZF0gb3B0aW9uYWwgZmxv
YXQgZW5kQW5nbGUsCisgICAgICAgICAgICAgW0RlZmF1bHQ9VW5kZWZpbmVkXSBvcHRpb25hbCBi
b29sZWFuIGFudGljbG9ja3dpc2UpCisgICAgICAgIHJhaXNlcyAoRE9NRXhjZXB0aW9uKTsKK307
Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>201468</attachid>
            <date>2013-05-11 12:23:53 -0700</date>
            <delta_ts>2013-08-16 12:32:58 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>115959_rename_DOMPath.patch</filename>
            <type>text/plain</type>
            <size>219199</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dlYkNv
cmUvQ01ha2VMaXN0cy50eHQKaW5kZXggZGJjYWE1YS4uNjE5ZTIyYiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0
cy50eHQKQEAgLTUwNSw3ICs1MDUsNiBAQCBzZXQoV2ViQ29yZV9JRExfRklMRVMKICAgICBodG1s
L2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuaWRsCiAgICAgaHRtbC9jYW52YXMvQ2Fu
dmFzUmVuZGVyaW5nQ29udGV4dC5pZGwKICAgICBodG1sL2NhbnZhcy9EYXRhVmlldy5pZGwKLSAg
ICBodG1sL2NhbnZhcy9ET01QYXRoLmlkbAogICAgIGh0bWwvY2FudmFzL0VYVERyYXdCdWZmZXJz
LmlkbAogICAgIGh0bWwvY2FudmFzL0VYVFRleHR1cmVGaWx0ZXJBbmlzb3Ryb3BpYy5pZGwKICAg
ICBodG1sL2NhbnZhcy9GbG9hdDMyQXJyYXkuaWRsCkBAIC01MTgsNiArNTE3LDcgQEAgc2V0KFdl
YkNvcmVfSURMX0ZJTEVTCiAgICAgaHRtbC9jYW52YXMvT0VTVGV4dHVyZUhhbGZGbG9hdC5pZGwK
ICAgICBodG1sL2NhbnZhcy9PRVNWZXJ0ZXhBcnJheU9iamVjdC5pZGwKICAgICBodG1sL2NhbnZh
cy9PRVNFbGVtZW50SW5kZXhVaW50LmlkbAorICAgIGh0bWwvY2FudmFzL1BhdGguaWRsCiAgICAg
aHRtbC9jYW52YXMvVWludDE2QXJyYXkuaWRsCiAgICAgaHRtbC9jYW52YXMvVWludDMyQXJyYXku
aWRsCiAgICAgaHRtbC9jYW52YXMvVWludDhBcnJheS5pZGwKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCAyY2ExYzNm
Li5hMTk5OWE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNzggQEAKKzIwMTMtMDUtMTEgIENocmlz
dG9waGUgRHVtZXogIDxjaC5kdW1lekBzaXNhLnNhbXN1bmcuY29tPgorCisgICAgICAgIFJlbmFt
ZSBET01QYXRoLmlkbCB0byBQYXRoLmlkbCB0byBtYXRjaCBzcGVjaWZpY2F0aW9uCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTU5NTkKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZW5hbWUgRE9NUGF0aCBJ
REwgaW50ZXJmYWNlIHRvIFBhdGggdG8gbWF0Y2ggaXRzIG5hbWUgb24gSlMgc2lkZSBhbmQgdXNl
CisgICAgICAgIFtJbXBsZW1lbnRlZEFzPURPTVBhdGhdIGV4dGVuZGVkIGF0dHJpYnV0ZSBpbnN0
ZWFkLgorCisgICAgICAgIFRoaXMgaXMgYW4gaW5pdGlhbCBzdGVwIHRvd2FyZHMgcmVtb3Zpbmcg
W0ludGVyZmFjZU5hbWVdIGV4dGVuZGVkIGF0dHJpYnV0ZQorICAgICAgICBhbmQgY29uc2lzdGVu
dGx5IHVzZSBbSW1wbGVtZW50ZWRBc10gaW5zdGVhZC4KKworICAgICAgICBUaGlzIHBhdGNoIGFs
c28gYWRkcyBhIElETCB0ZXN0IGZvciB0aGlzIGFzIFtJbXBsZW1lbnRlZEFzXSB3YXMgbm90IHVz
YWJsZQorICAgICAgICBvbiBpbnRlcmZhY2VzIGJlZm9yZSwgb25seSBhdHRyaWJ1dGVzIGFuZCBv
cGVyYXRpb25zLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cywgbm8gYmVoYXZpb3IgY2hhbmdlIGZv
ciBsYXlvdXQgdGVzdHMgYW5kIGEKKyAgICAgICAgbmV3IGJpbmRpbmdzIHRlc3QgaXMgYWRkZWQ6
IFRlc3RJbnRlcmZhY2VJbXBsZW1lbnRlZEFzLmlkbAorCisgICAgICAgICogQ01ha2VMaXN0cy50
eHQ6CisgICAgICAgICogRGVyaXZlZFNvdXJjZXMuY3BwOgorICAgICAgICAqIERlcml2ZWRTb3Vy
Y2VzLm1ha2U6CisgICAgICAgICogRGVyaXZlZFNvdXJjZXMucHJpOgorICAgICAgICAqIEdOVW1h
a2VmaWxlLmxpc3QuYW06CisgICAgICAgICogV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2o6
CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAq
IGJpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtOgorICAgICAgICAoR2VuZXJhdGVB
dHRyaWJ1dGVFdmVudExpc3RlbmVyQ2FsbCk6CisgICAgICAgIChHZW5lcmF0ZUV2ZW50TGlzdGVu
ZXJDYWxsKToKKyAgICAgICAgKEFkZENsYXNzRm9yd2FyZElmTmVlZGVkKToKKyAgICAgICAgKGhh
c2hUYWJsZUFjY2Vzc29yKToKKyAgICAgICAgKHByb3RvdHlwZUhhc2hUYWJsZUFjY2Vzc29yKToK
KyAgICAgICAgKEdlbmVyYXRlR2V0T3duUHJvcGVydHlTbG90Qm9keSk6CisgICAgICAgIChHZW5l
cmF0ZUdldE93blByb3BlcnR5RGVzY3JpcHRvckJvZHkpOgorICAgICAgICAoR2VuZXJhdGVIZWFk
ZXJDb250ZW50SGVhZGVyKToKKyAgICAgICAgKEdlbmVyYXRlSW1wbGVtZW50YXRpb25Db250ZW50
SGVhZGVyKToKKyAgICAgICAgKEdldEF0dHJpYnV0ZUdldHRlck5hbWUpOgorICAgICAgICAoR2V0
QXR0cmlidXRlU2V0dGVyTmFtZSk6CisgICAgICAgIChHZXRGdW5jdGlvbk5hbWUpOgorICAgICAg
ICAoR2V0SW1wbENsYXNzTmFtZSk6CisgICAgICAgIChHZXRKU0NsYXNzTmFtZSk6CisgICAgICAg
IChHZW5lcmF0ZUhlYWRlcik6CisgICAgICAgIChHZW5lcmF0ZUF0dHJpYnV0ZXNIYXNoVGFibGUp
OgorICAgICAgICAoR2VuZXJhdGVPdmVybG9hZGVkRnVuY3Rpb24pOgorICAgICAgICAoR2V0TmF0
aXZlVHlwZUZvckNvbnZlcnNpb25zKToKKyAgICAgICAgKEdlbmVyYXRlSW1wbGVtZW50YXRpb24p
OgorICAgICAgICAoR2VuZXJhdGVQYXJhbWV0ZXJzQ2hlY2spOgorICAgICAgICAoR2VuZXJhdGVD
YWxsYmFja0hlYWRlcik6CisgICAgICAgIChHZW5lcmF0ZUNhbGxiYWNrSW1wbGVtZW50YXRpb24p
OgorICAgICAgICAoR2VuZXJhdGVJbXBsZW1lbnRhdGlvbkZ1bmN0aW9uQ2FsbCk6CisgICAgICAg
IChHZXROYXRpdmVUeXBlKToKKyAgICAgICAgKEpTVmFsdWVUb05hdGl2ZSk6CisgICAgICAgIChO
YXRpdmVUb0pTVmFsdWUpOgorICAgICAgICAoV3JpdGVEYXRhKToKKyAgICAgICAgKEdlbmVyYXRl
Q29uc3RydWN0b3JEZWNsYXJhdGlvbik6CisgICAgICAgIChHZW5lcmF0ZUNvbnN0cnVjdG9yRGVm
aW5pdGlvbnMpOgorICAgICAgICAoR2VuZXJhdGVPdmVybG9hZGVkQ29uc3RydWN0b3JEZWZpbml0
aW9uKToKKyAgICAgICAgKEdlbmVyYXRlQ29uc3RydWN0b3JEZWZpbml0aW9uKToKKyAgICAgICAg
KEdlbmVyYXRlQ29uc3RydWN0b3JIZWxwZXJNZXRob2RzKToKKyAgICAgICAgKiBiaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvQ1BQL1dlYkRPTVRlc3RJbnRlcmZhY2VJbXBsZW1lbnRlZEFzLmNwcDogQWRk
ZWQuCisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0NQUC9XZWJET01UZXN0SW50ZXJm
YWNlSW1wbGVtZW50ZWRBcy5oOiBBZGRlZC4KKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvR09iamVjdC9XZWJLaXRET01UZXN0SW50ZXJmYWNlSW1wbGVtZW50ZWRBcy5jcHA6IEFkZGVk
LgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9HT2JqZWN0L1dlYktpdERPTVRlc3RJ
bnRlcmZhY2VJbXBsZW1lbnRlZEFzLmg6IEFkZGVkLgorICAgICAgICAqIGJpbmRpbmdzL3Njcmlw
dHMvdGVzdC9HT2JqZWN0L1dlYktpdERPTVRlc3RJbnRlcmZhY2VJbXBsZW1lbnRlZEFzUHJpdmF0
ZS5oOiBBZGRlZC4KKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SW50
ZXJmYWNlSW1wbGVtZW50ZWRBcy5jcHA6IEFkZGVkLgorICAgICAgICAqIGJpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3RJbnRlcmZhY2VJbXBsZW1lbnRlZEFzLmg6IEFkZGVkLgorICAgICAg
ICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9PYmpDL0RPTVRlc3RJbnRlcmZhY2VJbXBsZW1lbnRl
ZEFzLmg6IEFkZGVkLgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9PYmpDL0RPTVRl
c3RJbnRlcmZhY2VJbXBsZW1lbnRlZEFzLm1tOiBBZGRlZC4KKyAgICAgICAgKiBiaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvT2JqQy9ET01UZXN0SW50ZXJmYWNlSW1wbGVtZW50ZWRBc0ludGVybmFsLmg6
IEFkZGVkLgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9UZXN0Q2FsbGJhY2suaWRs
OiBVc2UgVGVzdE9iaiB0eXBlIGluc3RlYWQgb2YgQ2xhc3M1IHdoaWNoIGlzIHVuZGVmaW5lZAor
ICAgICAgICBzbyB0aGF0IHRoZSBiaW5kaW5ncyBnZW5lcmF0b3IgZG9lcyBub3QgY29tcGxhaW4g
YWJvdXQgaXQuCisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Rlc3RJbnRlcmZhY2VJ
bXBsZW1lbnRlZEFzLmlkbDogQWRkZWQuCisgICAgICAgICogaHRtbC9jYW52YXMvQ2FudmFzUmVu
ZGVyaW5nQ29udGV4dDJELmlkbDogVXNlIFBhdGggaW5zdGVhZCBvZiBET01QYXRoLgorICAgICAg
ICAqIGh0bWwvY2FudmFzL1BhdGguaWRsOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYkNvcmUvaHRt
bC9jYW52YXMvRE9NUGF0aC5pZGwuCisKIDIwMTMtMDUtMTEgIEpvY2hlbiBFaXNpbmdlciAgPGpv
Y2hlbkBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgRGlzYWxsb3cgYSB3aW5kb3cgdG8gZm9jdXMg
aXRzZWxmIHZpYSBqYXZhc2NyaXB0IFVSTHMgb3IgdXNpbmcgdGFyZ2V0IF9zZWxmCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9E
ZXJpdmVkU291cmNlcy5jcHAKaW5kZXggNTA4MjhkNC4uY2Q3NjA2NSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL0Rlcml2
ZWRTb3VyY2VzLmNwcApAQCAtOTgsNyArOTgsNiBAQAogI2luY2x1ZGUgIkpTRE9NTWltZVR5cGVB
cnJheS5jcHAiCiAjaW5jbHVkZSAiSlNET01OYW1lZEZsb3dDb2xsZWN0aW9uLmNwcCIKICNpbmNs
dWRlICJKU0RPTVBhcnNlci5jcHAiCi0jaW5jbHVkZSAiSlNET01QYXRoLmNwcCIKICNpbmNsdWRl
ICJKU0RPTVBsdWdpbi5jcHAiCiAjaW5jbHVkZSAiSlNET01QbHVnaW5BcnJheS5jcHAiCiAjaW5j
bHVkZSAiSlNET01TZWN1cml0eVBvbGljeS5jcHAiCkBAIC0yNzMsNiArMjcyLDcgQEAKICNpbmNs
dWRlICJKU05vdGlmaWNhdGlvbi5jcHAiCiAjaW5jbHVkZSAiSlNPdmVyZmxvd0V2ZW50LmNwcCIK
ICNpbmNsdWRlICJKU1BhZ2VUcmFuc2l0aW9uRXZlbnQuY3BwIgorI2luY2x1ZGUgIkpTUGF0aC5j
cHAiCiAjaW5jbHVkZSAiSlNQZXJmb3JtYW5jZS5jcHAiCiAjaW5jbHVkZSAiSlNQZXJmb3JtYW5j
ZU5hdmlnYXRpb24uY3BwIgogI2luY2x1ZGUgIkpTUGVyZm9ybWFuY2VUaW1pbmcuY3BwIgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMubWFrZSBiL1NvdXJjZS9XZWJD
b3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UKaW5kZXggNTkyMThmNS4uMGQ5ZjFiYyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9EZXJpdmVkU291cmNlcy5tYWtlCkBAIC0zOTIsNyArMzkyLDYgQEAgQklORElOR19JRExTID0g
XAogICAgICQoV2ViQ29yZSkvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dC5pZGwg
XAogICAgICQoV2ViQ29yZSkvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmlk
bCBcCiAgICAgJChXZWJDb3JlKS9odG1sL2NhbnZhcy9EYXRhVmlldy5pZGwgXAotICAgICQoV2Vi
Q29yZSkvaHRtbC9jYW52YXMvRE9NUGF0aC5pZGwgXAogICAgICQoV2ViQ29yZSkvaHRtbC9jYW52
YXMvRVhURHJhd0J1ZmZlcnMuaWRsIFwKICAgICAkKFdlYkNvcmUpL2h0bWwvY2FudmFzL0VYVFRl
eHR1cmVGaWx0ZXJBbmlzb3Ryb3BpYy5pZGwgXAogICAgICQoV2ViQ29yZSkvaHRtbC9jYW52YXMv
RmxvYXQzMkFycmF5LmlkbCBcCkBAIC00MDUsNiArNDA0LDcgQEAgQklORElOR19JRExTID0gXAog
ICAgICQoV2ViQ29yZSkvaHRtbC9jYW52YXMvT0VTVGV4dHVyZUZsb2F0LmlkbCBcCiAgICAgJChX
ZWJDb3JlKS9odG1sL2NhbnZhcy9PRVNUZXh0dXJlSGFsZkZsb2F0LmlkbCBcCiAgICAgJChXZWJD
b3JlKS9odG1sL2NhbnZhcy9PRVNWZXJ0ZXhBcnJheU9iamVjdC5pZGwgXAorICAgICQoV2ViQ29y
ZSkvaHRtbC9jYW52YXMvUGF0aC5pZGwgXAogICAgICQoV2ViQ29yZSkvaHRtbC9jYW52YXMvVWlu
dDE2QXJyYXkuaWRsIFwKICAgICAkKFdlYkNvcmUpL2h0bWwvY2FudmFzL1VpbnQzMkFycmF5Lmlk
bCBcCiAgICAgJChXZWJDb3JlKS9odG1sL2NhbnZhcy9VaW50OEFycmF5LmlkbCBcCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5wcmkgYi9Tb3VyY2UvV2ViQ29yZS9E
ZXJpdmVkU291cmNlcy5wcmkKaW5kZXggZjVhMjg4ZC4uMjNjMTdkMCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMucHJpCisrKyBiL1NvdXJjZS9XZWJDb3JlL0Rlcml2
ZWRTb3VyY2VzLnByaQpAQCAtMzE0LDcgKzMxNCw2IEBAIElETF9CSU5ESU5HUyArPSBcCiAgICAg
JCRQV0QvaHRtbC9jYW52YXMvQ2FudmFzUHJveHkuaWRsIFwKICAgICAkJFBXRC9odG1sL2NhbnZh
cy9DYW52YXNSZW5kZXJpbmdDb250ZXh0LmlkbCBcCiAgICAgJCRQV0QvaHRtbC9jYW52YXMvQ2Fu
dmFzUmVuZGVyaW5nQ29udGV4dDJELmlkbCBcCi0gICAgJCRQV0QvaHRtbC9jYW52YXMvRE9NUGF0
aC5pZGwgXAogICAgICQkUFdEL2h0bWwvY2FudmFzL0VYVERyYXdCdWZmZXJzLmlkbCBcCiAgICAg
JCRQV0QvaHRtbC9jYW52YXMvRVhUVGV4dHVyZUZpbHRlckFuaXNvdHJvcGljLmlkbCBcCiAgICAg
JCRQV0QvaHRtbC9jYW52YXMvT0VTU3RhbmRhcmREZXJpdmF0aXZlcy5pZGwgXApAQCAtMzIyLDYg
KzMyMSw3IEBAIElETF9CSU5ESU5HUyArPSBcCiAgICAgJCRQV0QvaHRtbC9jYW52YXMvT0VTVGV4
dHVyZUhhbGZGbG9hdC5pZGwgXAogICAgICQkUFdEL2h0bWwvY2FudmFzL09FU1ZlcnRleEFycmF5
T2JqZWN0LmlkbCBcCiAgICAgJCRQV0QvaHRtbC9jYW52YXMvT0VTRWxlbWVudEluZGV4VWludC5p
ZGwgXAorICAgICQkUFdEL2h0bWwvY2FudmFzL1BhdGguaWRsIFwKICAgICAkJFBXRC9odG1sL2Nh
bnZhcy9XZWJHTEFjdGl2ZUluZm8uaWRsIFwKICAgICAkJFBXRC9odG1sL2NhbnZhcy9XZWJHTEJ1
ZmZlci5pZGwgXAogICAgICQkUFdEL2h0bWwvY2FudmFzL1dlYkdMQ29tcHJlc3NlZFRleHR1cmVB
VEMuaWRsIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0g
Yi9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCmluZGV4IDRjODdiMDYuLjg5ZmUw
ZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KKysrIGIv
U291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQpAQCAtMjAzLDggKzIwMyw2IEBAIHdl
YmNvcmVfYnVpbHRfc291cmNlcyArPSBcCiAJRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0RPTU1p
bWVUeXBlLmggXAogCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNET01OYW1lZEZsb3dDb2xsZWN0
aW9uLmNwcCBcCiAJRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0RPTU5hbWVkRmxvd0NvbGxlY3Rp
b24uaCBcCi0JRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0RPTVBhdGguY3BwIFwKLQlEZXJpdmVk
U291cmNlcy9XZWJDb3JlL0pTRE9NUGF0aC5oIFwKIAlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pT
RE9NUGFyc2VyLmNwcCBcCiAJRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0RPTVBhcnNlci5oIFwK
IAlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTRE9NUGx1Z2luQXJyYXkuY3BwIFwKQEAgLTYwMSw2
ICs1OTksOCBAQCB3ZWJjb3JlX2J1aWx0X3NvdXJjZXMgKz0gXAogCURlcml2ZWRTb3VyY2VzL1dl
YkNvcmUvSlNPdmVyZmxvd0V2ZW50LmggXAogCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNQYWdl
VHJhbnNpdGlvbkV2ZW50LmNwcCBcCiAJRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU1BhZ2VUcmFu
c2l0aW9uRXZlbnQuaCBcCisJRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU1BhdGguY3BwIFwKKwlE
ZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTUGF0aC5oIFwKIAlEZXJpdmVkU291cmNlcy9XZWJDb3Jl
L0pTUGVyZm9ybWFuY2UuY3BwIFwKIAlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTUGVyZm9ybWFu
Y2UuaCBcCiAJRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU1BlcmZvcm1hbmNlRW50cnkuY3BwIFwK
QEAgLTE1NjIsNyArMTU2Miw2IEBAIGRvbV9iaW5kaW5nX2lkbHMgKz0gXAogCSQoV2ViQ29yZSkv
aHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dC5pZGwgXAogCSQoV2ViQ29yZSkvaHRt
bC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmlkbCBcCiAJJChXZWJDb3JlKS9odG1s
L2NhbnZhcy9EYXRhVmlldy5pZGwgXAotCSQoV2ViQ29yZSkvaHRtbC9jYW52YXMvRE9NUGF0aC5p
ZGwgXAogCSQoV2ViQ29yZSkvaHRtbC9jYW52YXMvRVhURHJhd0J1ZmZlcnMuaWRsIFwKIAkkKFdl
YkNvcmUpL2h0bWwvY2FudmFzL0VYVFRleHR1cmVGaWx0ZXJBbmlzb3Ryb3BpYy5pZGwgXAogCSQo
V2ViQ29yZSkvaHRtbC9jYW52YXMvRmxvYXQzMkFycmF5LmlkbCBcCkBAIC0xNTc1LDYgKzE1NzQs
NyBAQCBkb21fYmluZGluZ19pZGxzICs9IFwKIAkkKFdlYkNvcmUpL2h0bWwvY2FudmFzL09FU1Rl
eHR1cmVIYWxmRmxvYXQuaWRsIFwKIAkkKFdlYkNvcmUpL2h0bWwvY2FudmFzL09FU1ZlcnRleEFy
cmF5T2JqZWN0LmlkbCBcCiAJJChXZWJDb3JlKS9odG1sL2NhbnZhcy9PRVNFbGVtZW50SW5kZXhV
aW50LmlkbCBcCisJJChXZWJDb3JlKS9odG1sL2NhbnZhcy9QYXRoLmlkbCBcCiAJJChXZWJDb3Jl
KS9odG1sL2NhbnZhcy9VaW50MTZBcnJheS5pZGwgXAogCSQoV2ViQ29yZSkvaHRtbC9jYW52YXMv
VWludDMyQXJyYXkuaWRsIFwKIAkkKFdlYkNvcmUpL2h0bWwvY2FudmFzL1VpbnQ4QXJyYXkuaWRs
IFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNw
cm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKaW5kZXgg
ZWZmMGZiZS4uYjEyMmQxOSAxMDA3NTUKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3By
b2ovV2ViQ29yZS52Y3Byb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2Vi
Q29yZS52Y3Byb2oKQEAgLTM5NTUsNyArMzk1NSw3IEBACiAJCQkJPgogCQkJPC9GaWxlPgogCQkJ
PEZpbGUKLQkJCQlSZWxhdGl2ZVBhdGg9IiQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxvYmpcJChQ
cm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNcSlNET01QYXRoLmNwcCIKKwkJCQlSZWxhdGl2ZVBh
dGg9IiQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxvYmpcJChQcm9qZWN0TmFtZSlcRGVyaXZlZFNv
dXJjZXNcSlNQYXRoLmNwcCIKIAkJCQk+CiAJCQkJPEZpbGVDb25maWd1cmF0aW9uCiAJCQkJCU5h
bWU9IkRlYnVnfFdpbjMyIgpAQCAtNDAwNyw3ICs0MDA3LDcgQEAKIAkJCQk8L0ZpbGVDb25maWd1
cmF0aW9uPgogCQkJPC9GaWxlPgogCQkJPEZpbGUKLQkJCQlSZWxhdGl2ZVBhdGg9IiQoQ29uZmln
dXJhdGlvbkJ1aWxkRGlyKVxvYmpcJChQcm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNcSlNET01Q
YXRoLmgiCisJCQkJUmVsYXRpdmVQYXRoPSIkKENvbmZpZ3VyYXRpb25CdWlsZERpcilcb2JqXCQo
UHJvamVjdE5hbWUpXERlcml2ZWRTb3VyY2VzXEpTUGF0aC5oIgogCQkJCT4KIAkJCTwvRmlsZT4K
IAkJCTxGaWxlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oKaW5kZXggNTEyZTkwOC4uOGI0OTdlYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtNTczOSw4ICs1NzM5LDggQEAK
IAkJRkI5MTM5MjQxNkFFNEMxNzAwMUZFNjgyIC8qIERPTVBhdGguaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZCOTEzOTIwMTZBRTRCMEIwMDFGRTY4MiAv
KiBET01QYXRoLmggKi87IH07CiAJCUZCOTEzOTI2MTZBRTRDMkYwMDFGRTY4MiAvKiBDYW52YXNQ
YXRoTWV0aG9kcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gRkI5MTM5MUYxNkFFNEIwQjAwMUZFNjgyIC8qIENhbnZhc1BhdGhNZXRob2RzLmggKi87IH07
CiAJCUZCOTEzOTI3MTZBRTRDMzQwMDFGRTY4MiAvKiBDYW52YXNQYXRoTWV0aG9kcy5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGQjkxMzkxRTE2QUU0
QjBCMDAxRkU2ODIgLyogQ2FudmFzUGF0aE1ldGhvZHMuY3BwICovOyB9OwotCQlGQjkxMzkyQTE2
QUU0RkMwMDAxRkU2ODIgLyogSlNET01QYXRoLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBGQjkxMzkyODE2QUU0RkMwMDAxRkU2ODIgLyogSlNET01QYXRo
LmggKi87IH07Ci0JCUZCOTEzOTJCMTZBRTRGQzAwMDFGRTY4MiAvKiBKU0RPTVBhdGguY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkI5MTM5MjkxNkFF
NEZDMDAwMUZFNjgyIC8qIEpTRE9NUGF0aC5jcHAgKi87IH07CisJCUZCOTEzOTJBMTZBRTRGQzAw
MDFGRTY4MiAvKiBKU1BhdGguaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEZCOTEzOTI4MTZBRTRGQzAwMDFGRTY4MiAvKiBKU1BhdGguaCAqLzsgfTsKKwkJ
RkI5MTM5MkIxNkFFNEZDMDAwMUZFNjgyIC8qIEpTUGF0aC5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGQjkxMzkyOTE2QUU0RkMwMDAxRkU2ODIgLyog
SlNQYXRoLmNwcCAqLzsgfTsKIAkJRkI5MkRGNEIxNUZFRDA4NzAwOTk0NDMzIC8qIENsaXBQYXRo
T3BlcmF0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBGQjkyREY0OTE1RkVEMDg3MDA5OTQ0MzMgLyogQ2xpcFBhdGhPcGVyYXRpb24uaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlGQkMyMjBERjEyMzdG
QkVCMDBCQ0Y3ODggLyogR3JhcGhpY3NDb250ZXh0M0RPcGVuR0wuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkJDMjIwREUxMjM3RkJFQjAwQkNGNzg4
IC8qIEdyYXBoaWNzQ29udGV4dDNET3BlbkdMLmNwcCAqLzsgfTsKIAkJRkJENkFGODgxNUVGMjVD
OTAwOEI3MTEwIC8qIENTU0Jhc2ljU2hhcGVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBGQkQ2QUY4NzE1RUYyMUQ0MDA4QjcxMTAgLyogQ1NTQmFzaWNT
aGFwZXMuaCAqLzsgfTsKQEAgLTEyNTkwLDkgKzEyNTkwLDkgQEAKIAkJRkI5MTM5MUUxNkFFNEIw
QjAwMUZFNjgyIC8qIENhbnZhc1BhdGhNZXRob2RzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgbmFtZSA9IENhbnZhc1BhdGhNZXRob2RzLmNwcDsgcGF0aCA9IGNhbnZhcy9DYW52
YXNQYXRoTWV0aG9kcy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUZCOTEzOTFG
MTZBRTRCMEIwMDFGRTY4MiAvKiBDYW52YXNQYXRoTWV0aG9kcy5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IG5hbWUgPSBDYW52YXNQYXRoTWV0aG9kcy5oOyBwYXRoID0gY2FudmFzL0NhbnZh
c1BhdGhNZXRob2RzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUZCOTEzOTIwMTZB
RTRCMEIwMDFGRTY4MiAvKiBET01QYXRoLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFt
ZSA9IERPTVBhdGguaDsgcGF0aCA9IGNhbnZhcy9ET01QYXRoLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07Ci0JCUZCOTEzOTIxMTZBRTRCMEIwMDFGRTY4MiAvKiBET01QYXRoLmlkbCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHRleHQ7IG5hbWUgPSBET01QYXRoLmlkbDsgcGF0aCA9IGNhbnZhcy9ET01QYXRoLmlk
bDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRkI5MTM5MjgxNkFFNEZDMDAwMUZFNjgy
IC8qIEpTRE9NUGF0aC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU0RPTVBh
dGguaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRkI5MTM5MjkxNkFFNEZDMDAwMUZF
NjgyIC8qIEpTRE9NUGF0aC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBKU0RPTVBhdGguY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlGQjkxMzkyMTE2
QUU0QjBCMDAxRkU2ODIgLyogUGF0aC5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBuYW1lID0gUGF0aC5p
ZGw7IHBhdGggPSBjYW52YXMvUGF0aC5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CUZCOTEzOTI4MTZBRTRGQzAwMDFGRTY4MiAvKiBKU1BhdGguaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gSlNQYXRoLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUZC
OTEzOTI5MTZBRTRGQzAwMDFGRTY4MiAvKiBKU1BhdGguY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gSlNQYXRoLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJRkI5MkRGNDkxNUZFRDA4NzAwOTk0NDMzIC8qIENsaXBQYXRoT3BlcmF0aW9uLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENsaXBQYXRoT3BlcmF0aW9uLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCUZCQzIyMERFMTIzN0ZCRUIwMEJDRjc4OCAvKiBHcmFwaGlj
c0NvbnRleHQzRE9wZW5HTC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBHcmFwaGljc0NvbnRleHQzRE9wZW5HTC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCUZCRDZBRjgyMTVFRjIxQTMwMDhCNzExMCAvKiBCYXNpY1NoYXBlcy5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBCYXNpY1NoYXBlcy5jcHA7IHBhdGggPSBzdHls
ZS9CYXNpY1NoYXBlcy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xNDA0OSw4
ICsxNDA0OSw4IEBACiAJCQkJMkU5N0NDRTcxMjkzOUNCODAwQzVDOEZGIC8qIERhdGFWaWV3LmNw
cCAqLywKIAkJCQkyRTk3Q0NFODEyOTM5Q0I4MDBDNUM4RkYgLyogRGF0YVZpZXcuaCAqLywKIAkJ
CQkyRTk3Q0NFOTEyOTM5Q0I4MDBDNUM4RkYgLyogRGF0YVZpZXcuaWRsICovLAotCQkJCUZCOTEz
OTIwMTZBRTRCMEIwMDFGRTY4MiAvKiBET01QYXRoLmggKi8sCi0JCQkJRkI5MTM5MjExNkFFNEIw
QjAwMUZFNjgyIC8qIERPTVBhdGguaWRsICovLAorCQkJCUZCOTEzOTIwMTZBRTRCMEIwMDFGRTY4
MiAvKiBQYXRoLmggKi8sCisJCQkJRkI5MTM5MjExNkFFNEIwQjAwMUZFNjgyIC8qIFBhdGguaWRs
ICovLAogCQkJCUEwMjQ1NzRFMTZDRUFBMjcwMDBFNTY3MSAvKiBFWFREcmF3QnVmZmVycy5jcHAg
Ki8sCiAJCQkJQTAyNDU3NEYxNkNFQUEyNzAwMEU1NjcxIC8qIEVYVERyYXdCdWZmZXJzLmggKi8s
CiAJCQkJQTAyNDU3NTAxNkNFQUEyNzAwMEU1NjcxIC8qIEVYVERyYXdCdWZmZXJzLmlkbCAqLywK
QEAgLTE2Njg5LDggKzE2Njg5LDggQEAKIAkJCQkyRTk3Q0U2RTEyOTNBRDZCMDBDNUM4RkYgLyog
SlNEYXRhVmlldy5oICovLAogCQkJCTJFMDg4OEQyMTE0ODg0OEEwMEFGNDI2NSAvKiBKU0RPTUZv
cm1EYXRhLmNwcCAqLywKIAkJCQkyRTA4ODhEMzExNDg4NDhBMDBBRjQyNjUgLyogSlNET01Gb3Jt
RGF0YS5oICovLAotCQkJCUZCOTEzOTI5MTZBRTRGQzAwMDFGRTY4MiAvKiBKU0RPTVBhdGguY3Bw
ICovLAotCQkJCUZCOTEzOTI4MTZBRTRGQzAwMDFGRTY4MiAvKiBKU0RPTVBhdGguaCAqLywKKwkJ
CQlGQjkxMzkyOTE2QUU0RkMwMDAxRkU2ODIgLyogSlNQYXRoLmNwcCAqLywKKwkJCQlGQjkxMzky
ODE2QUU0RkMwMDAxRkU2ODIgLyogSlNQYXRoLmggKi8sCiAJCQkJNEFDQkMwQzgxMjcxM0QwQTAw
OTRGOUIyIC8qIEpTRE9NU2V0dGFibGVUb2tlbkxpc3QuY3BwICovLAogCQkJCTRBQ0JDMEM5MTI3
MTNEMEEwMDk0RjlCMiAvKiBKU0RPTVNldHRhYmxlVG9rZW5MaXN0LmggKi8sCiAJCQkJNzY5NDU2
M0ExMjE0RDk3QzAwMDdDQkFFIC8qIEpTRE9NVG9rZW5MaXN0LmNwcCAqLywKQEAgLTIyMzI4LDcg
KzIyMzI4LDcgQEAKIAkJCQlBOUQyNDgwOTBENzU3RTdEMDBGREY5NTkgLyogSlNET01NaW1lVHlw
ZUFycmF5LmggaW4gSGVhZGVycyAqLywKIAkJCQk1MkNDQTlFMzE1RTNGNjJDMDA1M0M3N0YgLyog
SlNET01OYW1lZEZsb3dDb2xsZWN0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQUNFNTNFMDBB
OEQxODgxMDAyMjk0N0QgLyogSlNET01QYXJzZXIuaCBpbiBIZWFkZXJzICovLAotCQkJCUZCOTEz
OTJBMTZBRTRGQzAwMDFGRTY4MiAvKiBKU0RPTVBhdGguaCBpbiBIZWFkZXJzICovLAorCQkJCUZC
OTEzOTJBMTZBRTRGQzAwMDFGRTY4MiAvKiBKU1BhdGguaCBpbiBIZWFkZXJzICovLAogCQkJCUE5
RDI0N0ZGMEQ3NTdFNjkwMEZERjk1OSAvKiBKU0RPTVBsdWdpbi5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJQTlEMjQ4MDEwRDc1N0U2OTAwRkRGOTU5IC8qIEpTRE9NUGx1Z2luQXJyYXkuaCBpbiBIZWFk
ZXJzICovLAogCQkJCUJDNUE4NkI2MEMzMzY3RTgwMEVFQTY0OSAvKiBKU0RPTVNlbGVjdGlvbi5o
IGluIEhlYWRlcnMgKi8sCkBAIC0yNTQ3MSw3ICsyNTQ3MSw3IEBACiAJCQkJQTlDNkU2NDcwRDc0
NjVDQTAwNjQ0MkU5IC8qIEpTRE9NTWltZVR5cGVBcnJheUN1c3RvbS5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQk1MkNDQTlFMjE1RTNGNjJDMDA1M0M3N0YgLyogSlNET01OYW1lZEZsb3dDb2xsZWN0
aW9uLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTFBQ0U1M0RGMEE4RDE4ODEwMDIyOTQ3RCAvKiBK
U0RPTVBhcnNlci5jcHAgaW4gU291cmNlcyAqLywKLQkJCQlGQjkxMzkyQjE2QUU0RkMwMDAxRkU2
ODIgLyogSlNET01QYXRoLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUZCOTEzOTJCMTZBRTRGQzAw
MDFGRTY4MiAvKiBKU1BhdGguY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTlEMjQ3RkUwRDc1N0U2
OTAwRkRGOTU5IC8qIEpTRE9NUGx1Z2luLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE5RDI0ODAw
MEQ3NTdFNjkwMEZERjk1OSAvKiBKU0RPTVBsdWdpbkFycmF5LmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCUE5QzZFNjRDMEQ3NDY1RTcwMDY0NDJFOSAvKiBKU0RPTVBsdWdpbkFycmF5Q3VzdG9tLmNw
cCBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy9Db2RlR2VuZXJhdG9ySlMucG0gYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L0NvZGVHZW5lcmF0b3JKUy5wbQppbmRleCBhY2E5ZDhjLi45YThhOTRkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQorKysgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQpAQCAtMTA3
LDE0ICsxMDcsMTQgQEAgc3ViIEdlbmVyYXRlSW50ZXJmYWNlCiAKIHN1YiBHZW5lcmF0ZUF0dHJp
YnV0ZUV2ZW50TGlzdGVuZXJDYWxsCiB7Ci0gICAgbXkgJGNsYXNzTmFtZSA9IHNoaWZ0OworICAg
IG15ICRqc0NsYXNzTmFtZSA9IHNoaWZ0OwogICAgIG15ICRpbXBsU2V0dGVyRnVuY3Rpb25OYW1l
ID0gc2hpZnQ7CiAgICAgbXkgJHdpbmRvd0V2ZW50TGlzdGVuZXIgPSBzaGlmdDsKIAogICAgIG15
ICR3cmFwcGVyT2JqZWN0ID0gJHdpbmRvd0V2ZW50TGlzdGVuZXIgPyAiZ2xvYmFsT2JqZWN0IiA6
ICJ0aGlzT2JqZWN0IjsKICAgICBteSBAR2VuZXJhdGVFdmVudExpc3RlbmVySW1wbCA9ICgpOwog
Ci0gICAgaWYgKCRjbGFzc05hbWUgZXEgIkpTU1ZHRWxlbWVudEluc3RhbmNlIikgeworICAgIGlm
ICgkanNDbGFzc05hbWUgZXEgIkpTU1ZHRWxlbWVudEluc3RhbmNlIikgewogICAgICAgICAjIFNW
R0VsZW1lbnRJbnN0YW5jZXMgaGF2ZSB0byBjcmVhdGUgSlNFdmVudExpc3RlbmVycyB3aXRoIHRo
ZSB3cmFwcGVyIGVxdWFsIHRvIHRoZSBjb3JyZXNwb25kaW5nRWxlbWVudAogICAgICAgICAkd3Jh
cHBlck9iamVjdCA9ICJhc09iamVjdChjb3JyZXNwb25kaW5nRWxlbWVudFdyYXBwZXIpIjsKIApA
QCAtMTMzLDcgKzEzMyw3IEBAIEVORAogCiBzdWIgR2VuZXJhdGVFdmVudExpc3RlbmVyQ2FsbAog
ewotICAgIG15ICRjbGFzc05hbWUgPSBzaGlmdDsKKyAgICBteSAkanNDbGFzc05hbWUgPSBzaGlm
dDsKICAgICBteSAkZnVuY3Rpb25OYW1lID0gc2hpZnQ7CiAgICAgbXkgJHBhc3NSZWZQdHJIYW5k
bGluZyA9ICgkZnVuY3Rpb25OYW1lIGVxICJhZGQiKSA/ICIiIDogIi5nZXQoKSI7CiAKQEAgLTE0
MSw3ICsxNDEsNyBAQCBzdWIgR2VuZXJhdGVFdmVudExpc3RlbmVyQ2FsbAogCiAgICAgbXkgQEdl
bmVyYXRlRXZlbnRMaXN0ZW5lckltcGwgPSAoKTsKICAgICBteSAkd3JhcHBlck9iamVjdCA9ICJj
YXN0ZWRUaGlzIjsKLSAgICBpZiAoJGNsYXNzTmFtZSBlcSAiSlNTVkdFbGVtZW50SW5zdGFuY2Ui
KSB7CisgICAgaWYgKCRqc0NsYXNzTmFtZSBlcSAiSlNTVkdFbGVtZW50SW5zdGFuY2UiKSB7CiAg
ICAgICAgICMgU1ZHRWxlbWVudEluc3RhbmNlcyBoYXZlIHRvIGNyZWF0ZSBKU0V2ZW50TGlzdGVu
ZXJzIHdpdGggdGhlIHdyYXBwZXIgZXF1YWwgdG8gdGhlIGNvcnJlc3BvbmRpbmdFbGVtZW50CiAg
ICAgICAgICR3cmFwcGVyT2JqZWN0ID0gImFzT2JqZWN0KGNvcnJlc3BvbmRpbmdFbGVtZW50V3Jh
cHBlcikiOwogCkBAIC0yNzgsMTUgKzI3OCwxNSBAQCBzdWIgQWRkVHlwZWRlZkZvclNjcmlwdFBy
b2ZpbGVUeXBlCiAKIHN1YiBBZGRDbGFzc0ZvcndhcmRJZk5lZWRlZAogewotICAgIG15ICRpbnRl
cmZhY2VOYW1lID0gc2hpZnQ7CisgICAgbXkgJGltcGxDbGFzc05hbWUgPSBzaGlmdDsKIAogICAg
ICMgU1ZHQW5pbWF0ZWRMZW5ndGgvTnVtYmVyL2V0Yy4gYXJlIHR5cGVkZWZzIHRvIFNWR0FuaW1h
dGVkVGVtcGxhdGUsIHNvIGRvbid0IHVzZSBjbGFzcyBmb3J3YXJkcyBmb3IgdGhlbSEKLSAgICB1
bmxlc3MgKCRjb2RlR2VuZXJhdG9yLT5Jc1NWR0FuaW1hdGVkVHlwZSgkaW50ZXJmYWNlTmFtZSkg
b3IgSXNTY3JpcHRQcm9maWxlVHlwZSgkaW50ZXJmYWNlTmFtZSkgb3IgJGNvZGVHZW5lcmF0b3It
PklzVHlwZWRBcnJheVR5cGUoJGludGVyZmFjZU5hbWUpKSB7Ci0gICAgICAgIHB1c2goQGhlYWRl
ckNvbnRlbnQsICJjbGFzcyAkaW50ZXJmYWNlTmFtZTtcblxuIik7CisgICAgdW5sZXNzICgkY29k
ZUdlbmVyYXRvci0+SXNTVkdBbmltYXRlZFR5cGUoJGltcGxDbGFzc05hbWUpIG9yIElzU2NyaXB0
UHJvZmlsZVR5cGUoJGltcGxDbGFzc05hbWUpIG9yICRjb2RlR2VuZXJhdG9yLT5Jc1R5cGVkQXJy
YXlUeXBlKCRpbXBsQ2xhc3NOYW1lKSkgeworICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAi
Y2xhc3MgJGltcGxDbGFzc05hbWU7XG5cbiIpOwogICAgICMgU2NyaXB0UHJvZmlsZSBhbmQgU2Ny
aXB0UHJvZmlsZU5vZGUgYXJlIHR5cGVkZWZzIHRvIEpTQzo6UHJvZmlsZSBhbmQgSlNDOjpQcm9m
aWxlTm9kZS4KLSAgICB9IGVsc2lmIChJc1NjcmlwdFByb2ZpbGVUeXBlKCRpbnRlcmZhY2VOYW1l
KSkgeworICAgIH0gZWxzaWYgKElzU2NyaXB0UHJvZmlsZVR5cGUoJGltcGxDbGFzc05hbWUpKSB7
CiAgICAgICAgICRoZWFkZXJJbmNsdWRlc3siPHByb2ZpbGVyL1Byb2ZpbGVOb2RlLmg+In0gPSAx
OwotICAgICAgICBBZGRUeXBlZGVmRm9yU2NyaXB0UHJvZmlsZVR5cGUoJGludGVyZmFjZU5hbWUp
OworICAgICAgICBBZGRUeXBlZGVmRm9yU2NyaXB0UHJvZmlsZVR5cGUoJGltcGxDbGFzc05hbWUp
OwogICAgIH0KIH0KIApAQCAtMzA2LDIyICszMDYsMjIgQEAgc3ViIEhhc2hWYWx1ZUZvckNsYXNz
QW5kTmFtZQogc3ViIGhhc2hUYWJsZUFjY2Vzc29yCiB7CiAgICAgbXkgJG5vU3RhdGljVGFibGVz
ID0gc2hpZnQ7Ci0gICAgbXkgJGNsYXNzTmFtZSA9IHNoaWZ0OworICAgIG15ICRqc0NsYXNzTmFt
ZSA9IHNoaWZ0OwogICAgIGlmICgkbm9TdGF0aWNUYWJsZXMpIHsKLSAgICAgICAgcmV0dXJuICJn
ZXQke2NsYXNzTmFtZX1UYWJsZShleGVjKSI7CisgICAgICAgIHJldHVybiAiZ2V0JHtqc0NsYXNz
TmFtZX1UYWJsZShleGVjKSI7CiAgICAgfSBlbHNlIHsKLSAgICAgICAgcmV0dXJuICImJHtjbGFz
c05hbWV9VGFibGUiOworICAgICAgICByZXR1cm4gIiYke2pzQ2xhc3NOYW1lfVRhYmxlIjsKICAg
ICB9CiB9CiAKIHN1YiBwcm90b3R5cGVIYXNoVGFibGVBY2Nlc3NvcgogewogICAgIG15ICRub1N0
YXRpY1RhYmxlcyA9IHNoaWZ0OwotICAgIG15ICRjbGFzc05hbWUgPSBzaGlmdDsKKyAgICBteSAk
anNDbGFzc05hbWUgPSBzaGlmdDsKICAgICBpZiAoJG5vU3RhdGljVGFibGVzKSB7Ci0gICAgICAg
IHJldHVybiAiZ2V0JHtjbGFzc05hbWV9UHJvdG90eXBlVGFibGUoZXhlYykiOworICAgICAgICBy
ZXR1cm4gImdldCR7anNDbGFzc05hbWV9UHJvdG90eXBlVGFibGUoZXhlYykiOwogICAgIH0gZWxz
ZSB7Ci0gICAgICAgIHJldHVybiAiJiR7Y2xhc3NOYW1lfVByb3RvdHlwZVRhYmxlIjsKKyAgICAg
ICAgcmV0dXJuICImJHtqc0NsYXNzTmFtZX1Qcm90b3R5cGVUYWJsZSI7CiAgICAgfQogfQogCkBA
IC0zNTAsNyArMzUwLDkgQEAgc3ViIEdldEN1c3RvbUlzUmVhY2hhYmxlCiAKIHN1YiBHZW5lcmF0
ZUdldE93blByb3BlcnR5U2xvdEJvZHkKIHsKLSAgICBteSAoJGludGVyZmFjZSwgJGludGVyZmFj
ZU5hbWUsICRjbGFzc05hbWUsICRoYXNBdHRyaWJ1dGVzLCAkaW5saW5lZCkgPSBAXzsKKyAgICBt
eSAoJGludGVyZmFjZSwgJGpzQ2xhc3NOYW1lLCAkaGFzQXR0cmlidXRlcywgJGlubGluZWQpID0g
QF87CisgICAgbXkgJGludGVyZmFjZU5hbWUgPSAkaW50ZXJmYWNlLT5uYW1lOworICAgIG15ICRp
bXBsQ2xhc3NOYW1lID0gR2V0SW1wbENsYXNzTmFtZSgkaW50ZXJmYWNlKTsKIAogICAgIG15ICRu
YW1lc3BhY2VNYXliZSA9ICgkaW5saW5lZCA/ICJKU0M6OiIgOiAiIik7CiAKQEAgLTM2NSw3ICsz
NjcsNyBAQCBzdWIgR2VuZXJhdGVHZXRPd25Qcm9wZXJ0eVNsb3RCb2R5CiAgICAgbXkgJG1hbnVh
bExvb2t1cEdldHRlckdlbmVyYXRpb24gPSBzdWIgewogICAgICAgICBteSAkcmVxdWlyZXNNYW51
YWxMb29rdXAgPSAkaW50ZXJmYWNlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiSW5kZXhlZEdldHRl
ciJ9IHx8ICRpbnRlcmZhY2UtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJOYW1lZEdldHRlciJ9Owog
ICAgICAgICBpZiAoJHJlcXVpcmVzTWFudWFsTG9va3VwKSB7Ci0gICAgICAgICAgICBwdXNoKEBn
ZXRPd25Qcm9wZXJ0eVNsb3RJbXBsLCAiICAgIGNvbnN0ICR7bmFtZXNwYWNlTWF5YmV9SGFzaEVu
dHJ5KiBlbnRyeSA9IGdldFN0YXRpY1ZhbHVlU2xvdEVudHJ5V2l0aG91dENhY2hpbmc8JGNsYXNz
TmFtZT4oZXhlYywgcHJvcGVydHlOYW1lKTtcbiIpOworICAgICAgICAgICAgcHVzaChAZ2V0T3du
UHJvcGVydHlTbG90SW1wbCwgIiAgICBjb25zdCAke25hbWVzcGFjZU1heWJlfUhhc2hFbnRyeSog
ZW50cnkgPSBnZXRTdGF0aWNWYWx1ZVNsb3RFbnRyeVdpdGhvdXRDYWNoaW5nPCRqc0NsYXNzTmFt
ZT4oZXhlYywgcHJvcGVydHlOYW1lKTtcbiIpOwogICAgICAgICAgICAgcHVzaChAZ2V0T3duUHJv
cGVydHlTbG90SW1wbCwgIiAgICBpZiAoZW50cnkpIHtcbiIpOwogICAgICAgICAgICAgcHVzaChA
Z2V0T3duUHJvcGVydHlTbG90SW1wbCwgIiAgICAgICAgc2xvdC5zZXRDdXN0b20odGhpc09iamVj
dCwgZW50cnktPnByb3BlcnR5R2V0dGVyKCkpO1xuIik7CiAgICAgICAgICAgICBwdXNoKEBnZXRP
d25Qcm9wZXJ0eVNsb3RJbXBsLCAiICAgICAgICByZXR1cm4gdHJ1ZTtcbiIpOwpAQCAtMzg1LDcg
KzM4Nyw3IEBAIHN1YiBHZW5lcmF0ZUdldE93blByb3BlcnR5U2xvdEJvZHkKICAgICAgICAgaWYg
KEluZGV4R2V0dGVyUmV0dXJuc1N0cmluZ3MoJGludGVyZmFjZU5hbWUpKSB7CiAgICAgICAgICAg
ICBwdXNoKEBnZXRPd25Qcm9wZXJ0eVNsb3RJbXBsLCAiICAgIGlmIChpbmRleCAhPSBQcm9wZXJ0
eU5hbWU6Ok5vdEFuSW5kZXgpIHtcbiIpOwogICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAg
cHVzaChAZ2V0T3duUHJvcGVydHlTbG90SW1wbCwgIiAgICBpZiAoaW5kZXggIT0gUHJvcGVydHlO
YW1lOjpOb3RBbkluZGV4ICYmIGluZGV4IDwgc3RhdGljX2Nhc3Q8JGludGVyZmFjZU5hbWUqPih0
aGlzT2JqZWN0LT5pbXBsKCkpLT5sZW5ndGgoKSkge1xuIik7CisgICAgICAgICAgICBwdXNoKEBn
ZXRPd25Qcm9wZXJ0eVNsb3RJbXBsLCAiICAgIGlmIChpbmRleCAhPSBQcm9wZXJ0eU5hbWU6Ok5v
dEFuSW5kZXggJiYgaW5kZXggPCBzdGF0aWNfY2FzdDwkaW1wbENsYXNzTmFtZSo+KHRoaXNPYmpl
Y3QtPmltcGwoKSktPmxlbmd0aCgpKSB7XG4iKTsKICAgICAgICAgfQogICAgICAgICBpZiAoJGlu
dGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Ik51bWVyaWNJbmRleGVkR2V0dGVyIn0pIHsK
ICAgICAgICAgICAgIHB1c2goQGdldE93blByb3BlcnR5U2xvdEltcGwsICIgICAgICAgIHNsb3Qu
c2V0VmFsdWUodGhpc09iamVjdC0+Z2V0QnlJbmRleChleGVjLCBpbmRleCkpO1xuIik7CkBAIC0z
OTcsNyArMzk5LDcgQEAgc3ViIEdlbmVyYXRlR2V0T3duUHJvcGVydHlTbG90Qm9keQogICAgIH0K
IAogICAgIGlmICgkaW50ZXJmYWNlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiTmFtZWRHZXR0ZXIi
fSB8fCAkaW50ZXJmYWNlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiQ3VzdG9tTmFtZWRHZXR0ZXIi
fSkgewotICAgICAgICBwdXNoKEBnZXRPd25Qcm9wZXJ0eVNsb3RJbXBsLCAiICAgIGlmIChjYW5H
ZXRJdGVtc0Zvck5hbWUoZXhlYywgc3RhdGljX2Nhc3Q8JGludGVyZmFjZU5hbWUqPih0aGlzT2Jq
ZWN0LT5pbXBsKCkpLCBwcm9wZXJ0eU5hbWUpKSB7XG4iKTsKKyAgICAgICAgcHVzaChAZ2V0T3du
UHJvcGVydHlTbG90SW1wbCwgIiAgICBpZiAoY2FuR2V0SXRlbXNGb3JOYW1lKGV4ZWMsIHN0YXRp
Y19jYXN0PCRpbXBsQ2xhc3NOYW1lKj4odGhpc09iamVjdC0+aW1wbCgpKSwgcHJvcGVydHlOYW1l
KSkge1xuIik7CiAgICAgICAgIHB1c2goQGdldE93blByb3BlcnR5U2xvdEltcGwsICIgICAgICAg
IHNsb3Quc2V0Q3VzdG9tKHRoaXNPYmplY3QsIHRoaXNPYmplY3QtPm5hbWVHZXR0ZXIpO1xuIik7
CiAgICAgICAgIHB1c2goQGdldE93blByb3BlcnR5U2xvdEltcGwsICIgICAgICAgIHJldHVybiB0
cnVlO1xuIik7CiAgICAgICAgIHB1c2goQGdldE93blByb3BlcnR5U2xvdEltcGwsICIgICAgfVxu
Iik7CkBAIC00MjAsOSArNDIyLDkgQEAgc3ViIEdlbmVyYXRlR2V0T3duUHJvcGVydHlTbG90Qm9k
eQogICAgIGlmICgkaGFzQXR0cmlidXRlcykgewogICAgICAgICBpZiAoJGlubGluZWQpIHsKICAg
ICAgICAgICAgIGRpZSAiQ2Fubm90IGlubGluZSBpZiBOb1N0YXRpY1RhYmxlcyBpcyBzZXQuIiBp
ZiAoJGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkpTTm9TdGF0aWNUYWJsZXMifSk7
Ci0gICAgICAgICAgICBwdXNoKEBnZXRPd25Qcm9wZXJ0eVNsb3RJbXBsLCAiICAgIHJldHVybiAk
e25hbWVzcGFjZU1heWJlfWdldFN0YXRpY1ZhbHVlU2xvdDwkY2xhc3NOYW1lLCBCYXNlPihleGVj
LCBzX2luZm8uc3RhdGljUHJvcEhhc2hUYWJsZSwgdGhpc09iamVjdCwgcHJvcGVydHlOYW1lLCBz
bG90KTtcbiIpOworICAgICAgICAgICAgcHVzaChAZ2V0T3duUHJvcGVydHlTbG90SW1wbCwgIiAg
ICByZXR1cm4gJHtuYW1lc3BhY2VNYXliZX1nZXRTdGF0aWNWYWx1ZVNsb3Q8JGpzQ2xhc3NOYW1l
LCBCYXNlPihleGVjLCBzX2luZm8uc3RhdGljUHJvcEhhc2hUYWJsZSwgdGhpc09iamVjdCwgcHJv
cGVydHlOYW1lLCBzbG90KTtcbiIpOwogICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgcHVz
aChAZ2V0T3duUHJvcGVydHlTbG90SW1wbCwgIiAgICByZXR1cm4gJHtuYW1lc3BhY2VNYXliZX1n
ZXRTdGF0aWNWYWx1ZVNsb3Q8JGNsYXNzTmFtZSwgQmFzZT4oZXhlYywgIiAuIGhhc2hUYWJsZUFj
Y2Vzc29yKCRpbnRlcmZhY2UtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJKU05vU3RhdGljVGFibGVz
In0sICRjbGFzc05hbWUpIC4gIiwgdGhpc09iamVjdCwgcHJvcGVydHlOYW1lLCBzbG90KTtcbiIp
OworICAgICAgICAgICAgcHVzaChAZ2V0T3duUHJvcGVydHlTbG90SW1wbCwgIiAgICByZXR1cm4g
JHtuYW1lc3BhY2VNYXliZX1nZXRTdGF0aWNWYWx1ZVNsb3Q8JGpzQ2xhc3NOYW1lLCBCYXNlPihl
eGVjLCAiIC4gaGFzaFRhYmxlQWNjZXNzb3IoJGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVz
LT57IkpTTm9TdGF0aWNUYWJsZXMifSwgJGpzQ2xhc3NOYW1lKSAuICIsIHRoaXNPYmplY3QsIHBy
b3BlcnR5TmFtZSwgc2xvdCk7XG4iKTsKICAgICAgICAgfQogICAgIH0gZWxzZSB7CiAgICAgICAg
IHB1c2goQGdldE93blByb3BlcnR5U2xvdEltcGwsICIgICAgcmV0dXJuIEJhc2U6OmdldE93blBy
b3BlcnR5U2xvdCh0aGlzT2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWUsIHNsb3QpO1xuIik7CkBA
IC00MzMsMTUgKzQzNSwxNyBAQCBzdWIgR2VuZXJhdGVHZXRPd25Qcm9wZXJ0eVNsb3RCb2R5CiAK
IHN1YiBHZW5lcmF0ZUdldE93blByb3BlcnR5RGVzY3JpcHRvckJvZHkKIHsKLSAgICBteSAoJGlu
dGVyZmFjZSwgJGludGVyZmFjZU5hbWUsICRjbGFzc05hbWUsICRoYXNBdHRyaWJ1dGVzLCAkaW5s
aW5lZCkgPSBAXzsKLSAgICAKKyAgICBteSAoJGludGVyZmFjZSwgJGpzQ2xhc3NOYW1lLCAkaGFz
QXR0cmlidXRlcywgJGlubGluZWQpID0gQF87CisgICAgbXkgJGludGVyZmFjZU5hbWUgPSAkaW50
ZXJmYWNlLT5uYW1lOworICAgIG15ICRpbXBsQ2xhc3NOYW1lID0gR2V0SW1wbENsYXNzTmFtZSgk
aW50ZXJmYWNlKTsKKwogICAgIG15ICRuYW1lc3BhY2VNYXliZSA9ICgkaW5saW5lZCA/ICJKU0M6
OiIgOiAiIik7CiAgICAgCiAgICAgbXkgQGdldE93blByb3BlcnR5RGVzY3JpcHRvckltcGwgPSAo
KTsKICAgICBpZiAoJGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkNoZWNrU2VjdXJp
dHkifSkgewogICAgICAgICBpZiAoJGludGVyZmFjZU5hbWUgZXEgIkRPTVdpbmRvdyIpIHsKICAg
ICAgICAgICAgICRpbXBsSW5jbHVkZXN7IkJpbmRpbmdTZWN1cml0eS5oIn0gPSAxOwotICAgICAg
ICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgaWYgKCFCaW5kaW5nU2VjdXJpdHk6OnNob3Vs
ZEFsbG93QWNjZXNzVG9ET01XaW5kb3coZXhlYywganNDYXN0PCRjbGFzc05hbWUqPih0aGlzT2Jq
ZWN0KS0+aW1wbCgpKSlcbiIpOworICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAg
aWYgKCFCaW5kaW5nU2VjdXJpdHk6OnNob3VsZEFsbG93QWNjZXNzVG9ET01XaW5kb3coZXhlYywg
anNDYXN0PCRqc0NsYXNzTmFtZSo+KHRoaXNPYmplY3QpLT5pbXBsKCkpKVxuIik7CiAgICAgICAg
IH0gZWxzZSB7CiAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBpZiAoIXNob3Vs
ZEFsbG93QWNjZXNzVG9GcmFtZShleGVjLCB0aGlzT2JqZWN0LT5pbXBsKCktPmZyYW1lKCkpKVxu
Iik7CiAgICAgICAgIH0KQEAgLTQ1Nyw3ICs0NjEsNyBAQCBzdWIgR2VuZXJhdGVHZXRPd25Qcm9w
ZXJ0eURlc2NyaXB0b3JCb2R5CiAgICAgbXkgJG1hbnVhbExvb2t1cEdldHRlckdlbmVyYXRpb24g
PSBzdWIgewogICAgICAgICBteSAkcmVxdWlyZXNNYW51YWxMb29rdXAgPSAkaW50ZXJmYWNlLT5l
eHRlbmRlZEF0dHJpYnV0ZXMtPnsiSW5kZXhlZEdldHRlciJ9IHx8ICRpbnRlcmZhY2UtPmV4dGVu
ZGVkQXR0cmlidXRlcy0+eyJOYW1lZEdldHRlciJ9OwogICAgICAgICBpZiAoJHJlcXVpcmVzTWFu
dWFsTG9va3VwKSB7Ci0gICAgICAgICAgICBwdXNoKEBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JJ
bXBsLCAiICAgIGNvbnN0ICR7bmFtZXNwYWNlTWF5YmV9SGFzaEVudHJ5KiBlbnRyeSA9ICR7Y2xh
c3NOYW1lfVRhYmxlLmVudHJ5KGV4ZWMsIHByb3BlcnR5TmFtZSk7XG4iKTsKKyAgICAgICAgICAg
IHB1c2goQGdldE93blByb3BlcnR5RGVzY3JpcHRvckltcGwsICIgICAgY29uc3QgJHtuYW1lc3Bh
Y2VNYXliZX1IYXNoRW50cnkqIGVudHJ5ID0gJHtqc0NsYXNzTmFtZX1UYWJsZS5lbnRyeShleGVj
LCBwcm9wZXJ0eU5hbWUpO1xuIik7CiAgICAgICAgICAgICBwdXNoKEBnZXRPd25Qcm9wZXJ0eURl
c2NyaXB0b3JJbXBsLCAiICAgIGlmIChlbnRyeSkge1xuIik7CiAgICAgICAgICAgICBwdXNoKEBn
ZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JJbXBsLCAiICAgICAgICBQcm9wZXJ0eVNsb3Qgc2xvdDtc
biIpOwogICAgICAgICAgICAgcHVzaChAZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ySW1wbCwgIiAg
ICAgICAgc2xvdC5zZXRDdXN0b20odGhpc09iamVjdCwgZW50cnktPnByb3BlcnR5R2V0dGVyKCkp
O1xuIik7CkBAIC00NzMsNyArNDc3LDcgQEAgc3ViIEdlbmVyYXRlR2V0T3duUHJvcGVydHlEZXNj
cmlwdG9yQm9keQogCiAgICAgaWYgKCRpbnRlcmZhY2UtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJJ
bmRleGVkR2V0dGVyIn0gfHwgJGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Ik51bWVy
aWNJbmRleGVkR2V0dGVyIn0pIHsKICAgICAgICAgcHVzaChAZ2V0T3duUHJvcGVydHlEZXNjcmlw
dG9ySW1wbCwgIiAgICB1bnNpZ25lZCBpbmRleCA9IHByb3BlcnR5TmFtZS5hc0luZGV4KCk7XG4i
KTsKLSAgICAgICAgcHVzaChAZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ySW1wbCwgIiAgICBpZiAo
aW5kZXggIT0gUHJvcGVydHlOYW1lOjpOb3RBbkluZGV4ICYmIGluZGV4IDwgc3RhdGljX2Nhc3Q8
JGludGVyZmFjZU5hbWUqPih0aGlzT2JqZWN0LT5pbXBsKCkpLT5sZW5ndGgoKSkge1xuIik7Cisg
ICAgICAgIHB1c2goQGdldE93blByb3BlcnR5RGVzY3JpcHRvckltcGwsICIgICAgaWYgKGluZGV4
ICE9IFByb3BlcnR5TmFtZTo6Tm90QW5JbmRleCAmJiBpbmRleCA8IHN0YXRpY19jYXN0PCRpbXBs
Q2xhc3NOYW1lKj4odGhpc09iamVjdC0+aW1wbCgpKS0+bGVuZ3RoKCkpIHtcbiIpOwogICAgICAg
ICBpZiAoJGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Ik51bWVyaWNJbmRleGVkR2V0
dGVyIn0pIHsKICAgICAgICAgICAgICMgQXNzdW1lIHRoYXQgaWYgdGhlcmUncyBhIHNldHRlciwg
dGhlIGluZGV4IHdpbGwgYmUgd3JpdGFibGUKICAgICAgICAgICAgIGlmICgkaW50ZXJmYWNlLT5l
eHRlbmRlZEF0dHJpYnV0ZXMtPnsiQ3VzdG9tSW5kZXhlZFNldHRlciJ9KSB7CkBAIC00OTYsNyAr
NTAwLDcgQEAgc3ViIEdlbmVyYXRlR2V0T3duUHJvcGVydHlEZXNjcmlwdG9yQm9keQogICAgIH0K
IAogICAgIGlmICgkaW50ZXJmYWNlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiTmFtZWRHZXR0ZXIi
fSB8fCAkaW50ZXJmYWNlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiQ3VzdG9tTmFtZWRHZXR0ZXIi
fSkgewotICAgICAgICBwdXNoKEBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JJbXBsLCAiICAgIGlm
IChjYW5HZXRJdGVtc0Zvck5hbWUoZXhlYywgc3RhdGljX2Nhc3Q8JGludGVyZmFjZU5hbWUqPih0
aGlzT2JqZWN0LT5pbXBsKCkpLCBwcm9wZXJ0eU5hbWUpKSB7XG4iKTsKKyAgICAgICAgcHVzaChA
Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9ySW1wbCwgIiAgICBpZiAoY2FuR2V0SXRlbXNGb3JOYW1l
KGV4ZWMsIHN0YXRpY19jYXN0PCRpbXBsQ2xhc3NOYW1lKj4odGhpc09iamVjdC0+aW1wbCgpKSwg
cHJvcGVydHlOYW1lKSkge1xuIik7CiAgICAgICAgIHB1c2goQGdldE93blByb3BlcnR5RGVzY3Jp
cHRvckltcGwsICIgICAgICAgICR7bmFtZXNwYWNlTWF5YmV9UHJvcGVydHlTbG90IHNsb3Q7XG4i
KTsKICAgICAgICAgcHVzaChAZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ySW1wbCwgIiAgICAgICAg
c2xvdC5zZXRDdXN0b20odGhpc09iamVjdCwgbmFtZUdldHRlcik7XG4iKTsKICAgICAgICAgcHVz
aChAZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ySW1wbCwgIiAgICAgICAgZGVzY3JpcHRvci5zZXRE
ZXNjcmlwdG9yKHNsb3QuZ2V0VmFsdWUoZXhlYywgcHJvcGVydHlOYW1lKSwgUmVhZE9ubHkgfCBE
b250RGVsZXRlIHwgRG9udEVudW0pO1xuIik7CkBAIC01MjEsOSArNTI1LDkgQEAgc3ViIEdlbmVy
YXRlR2V0T3duUHJvcGVydHlEZXNjcmlwdG9yQm9keQogICAgIGlmICgkaGFzQXR0cmlidXRlcykg
ewogICAgICAgICBpZiAoJGlubGluZWQpIHsKICAgICAgICAgICAgIGRpZSAiQ2Fubm90IGlubGlu
ZSBpZiBOb1N0YXRpY1RhYmxlcyBpcyBzZXQuIiBpZiAoJGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRy
aWJ1dGVzLT57IkpTTm9TdGF0aWNUYWJsZXMifSk7Ci0gICAgICAgICAgICBwdXNoKEBnZXRPd25Q
cm9wZXJ0eURlc2NyaXB0b3JJbXBsLCAiICAgIHJldHVybiAke25hbWVzcGFjZU1heWJlfWdldFN0
YXRpY1ZhbHVlRGVzY3JpcHRvcjwkY2xhc3NOYW1lLCBCYXNlPihleGVjLCBzX2luZm8uc3RhdGlj
UHJvcEhhc2hUYWJsZSwgdGhpc09iamVjdCwgcHJvcGVydHlOYW1lLCBkZXNjcmlwdG9yKTtcbiIp
OworICAgICAgICAgICAgcHVzaChAZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ySW1wbCwgIiAgICBy
ZXR1cm4gJHtuYW1lc3BhY2VNYXliZX1nZXRTdGF0aWNWYWx1ZURlc2NyaXB0b3I8JGpzQ2xhc3NO
YW1lLCBCYXNlPihleGVjLCBzX2luZm8uc3RhdGljUHJvcEhhc2hUYWJsZSwgdGhpc09iamVjdCwg
cHJvcGVydHlOYW1lLCBkZXNjcmlwdG9yKTtcbiIpOwogICAgICAgICB9IGVsc2UgewotICAgICAg
ICAgICAgcHVzaChAZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ySW1wbCwgIiAgICByZXR1cm4gJHtu
YW1lc3BhY2VNYXliZX1nZXRTdGF0aWNWYWx1ZURlc2NyaXB0b3I8JGNsYXNzTmFtZSwgQmFzZT4o
ZXhlYywgIiAuIGhhc2hUYWJsZUFjY2Vzc29yKCRpbnRlcmZhY2UtPmV4dGVuZGVkQXR0cmlidXRl
cy0+eyJKU05vU3RhdGljVGFibGVzIn0sICRjbGFzc05hbWUpIC4gIiwgdGhpc09iamVjdCwgcHJv
cGVydHlOYW1lLCBkZXNjcmlwdG9yKTtcbiIpOworICAgICAgICAgICAgcHVzaChAZ2V0T3duUHJv
cGVydHlEZXNjcmlwdG9ySW1wbCwgIiAgICByZXR1cm4gJHtuYW1lc3BhY2VNYXliZX1nZXRTdGF0
aWNWYWx1ZURlc2NyaXB0b3I8JGpzQ2xhc3NOYW1lLCBCYXNlPihleGVjLCAiIC4gaGFzaFRhYmxl
QWNjZXNzb3IoJGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkpTTm9TdGF0aWNUYWJs
ZXMifSwgJGpzQ2xhc3NOYW1lKSAuICIsIHRoaXNPYmplY3QsIHByb3BlcnR5TmFtZSwgZGVzY3Jp
cHRvcik7XG4iKTsKICAgICAgICAgfQogICAgIH0gZWxzZSB7CiAgICAgICAgIHB1c2goQGdldE93
blByb3BlcnR5RGVzY3JpcHRvckltcGwsICIgICAgcmV0dXJuIEJhc2U6OmdldE93blByb3BlcnR5
RGVzY3JpcHRvcih0aGlzT2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWUsIGRlc2NyaXB0b3IpO1xu
Iik7CkBAIC01MzUsMTMgKzUzOSwxMyBAQCBzdWIgR2VuZXJhdGVHZXRPd25Qcm9wZXJ0eURlc2Ny
aXB0b3JCb2R5CiBzdWIgR2VuZXJhdGVIZWFkZXJDb250ZW50SGVhZGVyCiB7CiAgICAgbXkgJGlu
dGVyZmFjZSA9IHNoaWZ0OwotICAgIG15ICRjbGFzc05hbWUgPSAiSlMiIC4gJGludGVyZmFjZS0+
bmFtZTsKKyAgICBteSAkanNDbGFzc05hbWUgPSBHZXRKU0NsYXNzTmFtZSgkaW50ZXJmYWNlKTsK
IAogICAgIG15IEBoZWFkZXJDb250ZW50SGVhZGVyID0gc3BsaXQoIlxyIiwgJGhlYWRlclRlbXBs
YXRlKTsKIAogICAgICMgLSBBZGQgaGVhZGVyIHByb3RlY3Rpb24KLSAgICBwdXNoKEBoZWFkZXJD
b250ZW50SGVhZGVyLCAiXG4jaWZuZGVmICRjbGFzc05hbWUiIC4gIl9oIik7Ci0gICAgcHVzaChA
aGVhZGVyQ29udGVudEhlYWRlciwgIlxuI2RlZmluZSAkY2xhc3NOYW1lIiAuICJfaFxuXG4iKTsK
KyAgICBwdXNoKEBoZWFkZXJDb250ZW50SGVhZGVyLCAiXG4jaWZuZGVmICRqc0NsYXNzTmFtZSIg
LiAiX2giKTsKKyAgICBwdXNoKEBoZWFkZXJDb250ZW50SGVhZGVyLCAiXG4jZGVmaW5lICRqc0Ns
YXNzTmFtZSIgLiAiX2hcblxuIik7CiAKICAgICBteSAkY29uZGl0aW9uYWxTdHJpbmcgPSAkY29k
ZUdlbmVyYXRvci0+R2VuZXJhdGVDb25kaXRpb25hbFN0cmluZygkaW50ZXJmYWNlKTsKICAgICBw
dXNoKEBoZWFkZXJDb250ZW50SGVhZGVyLCAiI2lmICR7Y29uZGl0aW9uYWxTdHJpbmd9XG5cbiIp
IGlmICRjb25kaXRpb25hbFN0cmluZzsKQEAgLTU1MSwxNCArNTU1LDE0IEBAIHN1YiBHZW5lcmF0
ZUhlYWRlckNvbnRlbnRIZWFkZXIKIHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uQ29udGVudEhl
YWRlcgogewogICAgIG15ICRpbnRlcmZhY2UgPSBzaGlmdDsKLSAgICBteSAkY2xhc3NOYW1lID0g
IkpTIiAuICRpbnRlcmZhY2UtPm5hbWU7CisgICAgbXkgJGpzQ2xhc3NOYW1lID0gR2V0SlNDbGFz
c05hbWUoJGludGVyZmFjZSk7CiAKICAgICBteSBAaW1wbENvbnRlbnRIZWFkZXIgPSBzcGxpdCgi
XHIiLCAkaGVhZGVyVGVtcGxhdGUpOwogCiAgICAgcHVzaChAaW1wbENvbnRlbnRIZWFkZXIsICJc
biNpbmNsdWRlIFwiY29uZmlnLmhcIlxuIik7CiAgICAgbXkgJGNvbmRpdGlvbmFsU3RyaW5nID0g
JGNvZGVHZW5lcmF0b3ItPkdlbmVyYXRlQ29uZGl0aW9uYWxTdHJpbmcoJGludGVyZmFjZSk7CiAg
ICAgcHVzaChAaW1wbENvbnRlbnRIZWFkZXIsICJcbiNpZiAke2NvbmRpdGlvbmFsU3RyaW5nfVxu
XG4iKSBpZiAkY29uZGl0aW9uYWxTdHJpbmc7Ci0gICAgcHVzaChAaW1wbENvbnRlbnRIZWFkZXIs
ICIjaW5jbHVkZSBcIiRjbGFzc05hbWUuaFwiXG5cbiIpOworICAgIHB1c2goQGltcGxDb250ZW50
SGVhZGVyLCAiI2luY2x1ZGUgXCIkanNDbGFzc05hbWUuaFwiXG5cbiIpOwogICAgIHJldHVybiBA
aW1wbENvbnRlbnRIZWFkZXI7CiB9CiAKQEAgLTU4OSwyNyArNTkzLDQ0IEBAIHN1YiBTaG91bGRH
ZW5lcmF0ZVRvSlNJbXBsZW1lbnRhdGlvbgogCiBzdWIgR2V0QXR0cmlidXRlR2V0dGVyTmFtZQog
ewotICAgIG15ICgkaW50ZXJmYWNlTmFtZSwgJGNsYXNzTmFtZSwgJGF0dHJpYnV0ZSkgPSBAXzsK
KyAgICBteSAoJGludGVyZmFjZSwgJGF0dHJpYnV0ZSkgPSBAXzsKKyAgICBteSAkaW50ZXJmYWNl
TmFtZSA9ICRpbnRlcmZhY2UtPm5hbWU7CisgICAgbXkgJGpzQ2xhc3NOYW1lID0gR2V0SlNDbGFz
c05hbWUoJGludGVyZmFjZSk7CisKICAgICBpZiAoJGF0dHJpYnV0ZS0+aXNTdGF0aWMpIHsKLSAg
ICAgICAgcmV0dXJuICRjb2RlR2VuZXJhdG9yLT5XS19sY2ZpcnN0KCRjbGFzc05hbWUpIC4gIkNv
bnN0cnVjdG9yIiAuICRjb2RlR2VuZXJhdG9yLT5XS191Y2ZpcnN0KCRhdHRyaWJ1dGUtPnNpZ25h
dHVyZS0+bmFtZSk7CisgICAgICAgIHJldHVybiAkY29kZUdlbmVyYXRvci0+V0tfbGNmaXJzdCgk
anNDbGFzc05hbWUpIC4gIkNvbnN0cnVjdG9yIiAuICRjb2RlR2VuZXJhdG9yLT5XS191Y2ZpcnN0
KCRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+bmFtZSk7CiAgICAgfQogICAgIHJldHVybiAianMiIC4g
JGludGVyZmFjZU5hbWUgLiAkY29kZUdlbmVyYXRvci0+V0tfdWNmaXJzdCgkYXR0cmlidXRlLT5z
aWduYXR1cmUtPm5hbWUpIC4gKCRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+dHlwZSA9fiAvQ29uc3Ry
dWN0b3IkLyA/ICJDb25zdHJ1Y3RvciIgOiAiIik7CiB9CiAKIHN1YiBHZXRBdHRyaWJ1dGVTZXR0
ZXJOYW1lCiB7Ci0gICAgbXkgKCRpbnRlcmZhY2VOYW1lLCAkY2xhc3NOYW1lLCAkYXR0cmlidXRl
KSA9IEBfOworICAgIG15ICgkaW50ZXJmYWNlLCAkYXR0cmlidXRlKSA9IEBfOworICAgIG15ICRq
c0NsYXNzTmFtZSA9IEdldEpTQ2xhc3NOYW1lKCRpbnRlcmZhY2UpOworCiAgICAgaWYgKCRhdHRy
aWJ1dGUtPmlzU3RhdGljKSB7Ci0gICAgICAgIHJldHVybiAic2V0IiAuICRjb2RlR2VuZXJhdG9y
LT5XS191Y2ZpcnN0KCRjbGFzc05hbWUpIC4gIkNvbnN0cnVjdG9yIiAuICRjb2RlR2VuZXJhdG9y
LT5XS191Y2ZpcnN0KCRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+bmFtZSk7CisgICAgICAgIHJldHVy
biAic2V0IiAuICRjb2RlR2VuZXJhdG9yLT5XS191Y2ZpcnN0KCRqc0NsYXNzTmFtZSkgLiAiQ29u
c3RydWN0b3IiIC4gJGNvZGVHZW5lcmF0b3ItPldLX3VjZmlyc3QoJGF0dHJpYnV0ZS0+c2lnbmF0
dXJlLT5uYW1lKTsKICAgICB9Ci0gICAgcmV0dXJuICJzZXRKUyIgLiAkaW50ZXJmYWNlTmFtZSAu
ICRjb2RlR2VuZXJhdG9yLT5XS191Y2ZpcnN0KCRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+bmFtZSkg
LiAoJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT50eXBlID1+IC9Db25zdHJ1Y3RvciQvID8gIkNvbnN0
cnVjdG9yIiA6ICIiKTsKKyAgICByZXR1cm4gInNldCIgLiAkanNDbGFzc05hbWUgLiAkY29kZUdl
bmVyYXRvci0+V0tfdWNmaXJzdCgkYXR0cmlidXRlLT5zaWduYXR1cmUtPm5hbWUpIC4gKCRhdHRy
aWJ1dGUtPnNpZ25hdHVyZS0+dHlwZSA9fiAvQ29uc3RydWN0b3IkLyA/ICJDb25zdHJ1Y3RvciIg
OiAiIik7CiB9CiAKIHN1YiBHZXRGdW5jdGlvbk5hbWUKIHsKLSAgICBteSAoJGNsYXNzTmFtZSwg
JGZ1bmN0aW9uKSA9IEBfOworICAgIG15ICgkanNDbGFzc05hbWUsICRmdW5jdGlvbikgPSBAXzsK
ICAgICBteSAka2luZCA9ICRmdW5jdGlvbi0+aXNTdGF0aWMgPyAiQ29uc3RydWN0b3IiIDogIlBy
b3RvdHlwZSI7Ci0gICAgcmV0dXJuICRjb2RlR2VuZXJhdG9yLT5XS19sY2ZpcnN0KCRjbGFzc05h
bWUpIC4gJGtpbmQgLiAiRnVuY3Rpb24iIC4gJGNvZGVHZW5lcmF0b3ItPldLX3VjZmlyc3QoJGZ1
bmN0aW9uLT5zaWduYXR1cmUtPm5hbWUpOworICAgIHJldHVybiAkY29kZUdlbmVyYXRvci0+V0tf
bGNmaXJzdCgkanNDbGFzc05hbWUpIC4gJGtpbmQgLiAiRnVuY3Rpb24iIC4gJGNvZGVHZW5lcmF0
b3ItPldLX3VjZmlyc3QoJGZ1bmN0aW9uLT5zaWduYXR1cmUtPm5hbWUpOworfQorCitzdWIgR2V0
SW1wbENsYXNzTmFtZQoreworICAgIG15ICRpbnRlcmZhY2UgPSBzaGlmdDsKKyAgICByZXR1cm4g
JGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkltcGxlbWVudGVkQXMifSB8fCAkaW50
ZXJmYWNlLT5uYW1lOworfQorCitzdWIgR2V0SlNDbGFzc05hbWUKK3sKKyAgICBteSAkaW50ZXJm
YWNlID0gc2hpZnQ7CisgICAgcmV0dXJuIEZpbGVOYW1lUHJlZml4IC4gJGludGVyZmFjZS0+bmFt
ZTsKIH0KIAogc3ViIEdlbmVyYXRlSGVhZGVyCkBAIC02MTgsNyArNjM5LDggQEAgc3ViIEdlbmVy
YXRlSGVhZGVyCiAgICAgbXkgJGludGVyZmFjZSA9IHNoaWZ0OwogCiAgICAgbXkgJGludGVyZmFj
ZU5hbWUgPSAkaW50ZXJmYWNlLT5uYW1lOwotICAgIG15ICRjbGFzc05hbWUgPSAiSlMkaW50ZXJm
YWNlTmFtZSI7CisgICAgbXkgJGltcGxDbGFzc05hbWUgPSBHZXRJbXBsQ2xhc3NOYW1lKCRpbnRl
cmZhY2UpOworICAgIG15ICRqc0NsYXNzTmFtZSA9IEdldEpTQ2xhc3NOYW1lKCRpbnRlcmZhY2Up
OwogICAgIG15IEBhbmNlc3RvckludGVyZmFjZU5hbWVzID0gKCk7CiAgICAgbXkgJXN0cnVjdHVy
ZUZsYWdzID0gKCk7CiAKQEAgLTYzMiw3ICs2NTQsNyBAQCBzdWIgR2VuZXJhdGVIZWFkZXIKICAg
ICBteSAkaGFzUmVhbFBhcmVudCA9IEB7JGludGVyZmFjZS0+cGFyZW50c30gPiAwOwogICAgIG15
ICRoYXNQYXJlbnQgPSAkaGFzTGVnYWN5UGFyZW50IHx8ICRoYXNSZWFsUGFyZW50OwogICAgIG15
ICRwYXJlbnRDbGFzc05hbWUgPSBHZXRQYXJlbnRDbGFzc05hbWUoJGludGVyZmFjZSk7Ci0gICAg
bXkgJG5lZWRzTWFya0NoaWxkcmVuID0gJGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57
IkpTQ3VzdG9tTWFya0Z1bmN0aW9uIn0gfHwgJGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVz
LT57IkV2ZW50VGFyZ2V0In0gfHwgJGludGVyZmFjZS0+bmFtZSBlcSAiRXZlbnRUYXJnZXQiOwor
ICAgIG15ICRuZWVkc01hcmtDaGlsZHJlbiA9ICRpbnRlcmZhY2UtPmV4dGVuZGVkQXR0cmlidXRl
cy0+eyJKU0N1c3RvbU1hcmtGdW5jdGlvbiJ9IHx8ICRpbnRlcmZhY2UtPmV4dGVuZGVkQXR0cmli
dXRlcy0+eyJFdmVudFRhcmdldCJ9IHx8ICRpbnRlcmZhY2VOYW1lIGVxICJFdmVudFRhcmdldCI7
CiAKICAgICAjIC0gQWRkIGRlZmF1bHQgaGVhZGVyIHRlbXBsYXRlIGFuZCBoZWFkZXIgcHJvdGVj
dGlvbgogICAgIHB1c2goQGhlYWRlckNvbnRlbnRIZWFkZXIsIEdlbmVyYXRlSGVhZGVyQ29udGVu
dEhlYWRlcigkaW50ZXJmYWNlKSk7CkBAIC02NTksMTYgKzY4MSwxNiBAQCBzdWIgR2VuZXJhdGVI
ZWFkZXIKIAogICAgIGlmICgkaGFzUGFyZW50ICYmICRpbnRlcmZhY2UtPmV4dGVuZGVkQXR0cmli
dXRlcy0+eyJKU0dlbmVyYXRlVG9OYXRpdmVPYmplY3QifSkgewogICAgICAgICBpZiAoJGNvZGVH
ZW5lcmF0b3ItPklzVHlwZWRBcnJheVR5cGUoJGludGVyZmFjZU5hbWUpKSB7Ci0gICAgICAgICAg
ICAkaGVhZGVySW5jbHVkZXN7Ijx3dGYvJGludGVyZmFjZU5hbWUuaD4ifSA9IDE7CisgICAgICAg
ICAgICAkaGVhZGVySW5jbHVkZXN7Ijx3dGYvJGltcGxDbGFzc05hbWUuaD4ifSA9IDE7CiAgICAg
ICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAkaGVhZGVySW5jbHVkZXN7IiRpbnRlcmZhY2VOYW1l
LmgifSA9IDE7CisgICAgICAgICAgICAkaGVhZGVySW5jbHVkZXN7IiRpbXBsQ2xhc3NOYW1lLmgi
fSA9IDE7CiAgICAgICAgIH0KICAgICB9CiAgICAgCiAgICAgJGhlYWRlckluY2x1ZGVzeyI8cnVu
dGltZS9KU09iamVjdC5oPiJ9ID0gMTsKLSAgICAkaGVhZGVySW5jbHVkZXN7IlNWR0VsZW1lbnQu
aCJ9ID0gMSBpZiAkY2xhc3NOYW1lID1+IC9eSlNTVkcvOworICAgICRoZWFkZXJJbmNsdWRlc3si
U1ZHRWxlbWVudC5oIn0gPSAxIGlmICRqc0NsYXNzTmFtZSA9fiAvXkpTU1ZHLzsKIAotICAgIG15
ICRpbXBsVHlwZSA9ICRpbnRlcmZhY2VOYW1lOworICAgIG15ICRpbXBsVHlwZSA9ICRpbXBsQ2xh
c3NOYW1lOwogICAgIG15ICgkc3ZnUHJvcGVydHlUeXBlLCAkc3ZnTGlzdFByb3BlcnR5VHlwZSwg
JHN2Z05hdGl2ZVR5cGUpID0gR2V0U1ZHUHJvcGVydHlUeXBlcygkaW1wbFR5cGUpOwogICAgICRp
bXBsVHlwZSA9ICRzdmdOYXRpdmVUeXBlIGlmICRzdmdOYXRpdmVUeXBlOwogCkBAIC02ODMsMTEg
KzcwNSwxMSBAQCBzdWIgR2VuZXJhdGVIZWFkZXIKICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAi
XG5uYW1lc3BhY2UgV2ViQ29yZSB7XG5cbiIpOwogCiAgICAgaWYgKCRjb2RlR2VuZXJhdG9yLT5J
c1NWR0FuaW1hdGVkVHlwZSgkaW50ZXJmYWNlTmFtZSkpIHsKLSAgICAgICAgJGhlYWRlckluY2x1
ZGVzeyIkaW50ZXJmYWNlTmFtZS5oIn0gPSAxOworICAgICAgICAkaGVhZGVySW5jbHVkZXN7IiRp
bXBsQ2xhc3NOYW1lLmgifSA9IDE7CiAgICAgfSBlbHNlIHsKICAgICAgICAgIyBJbXBsZW1lbnRh
dGlvbiBjbGFzcyBmb3J3YXJkIGRlY2xhcmF0aW9uCiAgICAgICAgIGlmICgkaW50ZXJmYWNlTmFt
ZSBlcSAiRE9NV2luZG93IiB8fCAkaW50ZXJmYWNlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiSXNX
b3JrZXJDb250ZXh0In0pIHsKLSAgICAgICAgICAgIEFkZENsYXNzRm9yd2FyZElmTmVlZGVkKCRp
bnRlcmZhY2VOYW1lKSB1bmxlc3MgJHN2Z1Byb3BlcnR5T3JMaXN0UHJvcGVydHlUeXBlOworICAg
ICAgICAgICAgQWRkQ2xhc3NGb3J3YXJkSWZOZWVkZWQoJGltcGxDbGFzc05hbWUpIHVubGVzcyAk
c3ZnUHJvcGVydHlPckxpc3RQcm9wZXJ0eVR5cGU7CiAgICAgICAgIH0KICAgICB9CiAKQEAgLTY5
NSw0MSArNzE3LDQxIEBAIHN1YiBHZW5lcmF0ZUhlYWRlcgogICAgIEFkZENsYXNzRm9yd2FyZElm
TmVlZGVkKCJKU0RpY3Rpb25hcnkiKSBpZiAkY29kZUdlbmVyYXRvci0+SXNDb25zdHJ1Y3RvclRl
bXBsYXRlKCRpbnRlcmZhY2UsICJFdmVudCIpOwogCiAgICAgIyBDbGFzcyBkZWNsYXJhdGlvbgot
ICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICJjbGFzcyAkY2xhc3NOYW1lIDogcHVibGljICRwYXJl
bnRDbGFzc05hbWUge1xuIik7CisgICAgcHVzaChAaGVhZGVyQ29udGVudCwgImNsYXNzICRqc0Ns
YXNzTmFtZSA6IHB1YmxpYyAkcGFyZW50Q2xhc3NOYW1lIHtcbiIpOwogCiAgICAgIyBTdGF0aWMg
Y3JlYXRlIG1ldGhvZHMKICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAicHVibGljOlxuIik7CiAg
ICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiAgICB0eXBlZGVmICRwYXJlbnRDbGFzc05hbWUgQmFz
ZTtcbiIpOwogICAgIGlmICgkaW50ZXJmYWNlTmFtZSBlcSAiRE9NV2luZG93IikgewotICAgICAg
ICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAgIHN0YXRpYyAkY2xhc3NOYW1lKiBjcmVhdGUoSlND
OjpWTSYgdm0sIEpTQzo6U3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFBhc3NSZWZQdHI8JGltcGxUeXBl
PiBpbXBsLCBKU0RPTVdpbmRvd1NoZWxsKiB3aW5kb3dTaGVsbClcbiIpOworICAgICAgICBwdXNo
KEBoZWFkZXJDb250ZW50LCAiICAgIHN0YXRpYyAkanNDbGFzc05hbWUqIGNyZWF0ZShKU0M6OlZN
JiB2bSwgSlNDOjpTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgUGFzc1JlZlB0cjwkaW1wbFR5cGU+IGlt
cGwsIEpTRE9NV2luZG93U2hlbGwqIHdpbmRvd1NoZWxsKVxuIik7CiAgICAgICAgIHB1c2goQGhl
YWRlckNvbnRlbnQsICIgICAge1xuIik7Ci0gICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIg
ICAgICAgICRjbGFzc05hbWUqIHB0ciA9IG5ldyAoTm90TnVsbCwgSlNDOjphbGxvY2F0ZUNlbGw8
JGNsYXNzTmFtZT4odm0uaGVhcCkpICR7Y2xhc3NOYW1lfSh2bSwgc3RydWN0dXJlLCBpbXBsLCB3
aW5kb3dTaGVsbCk7XG4iKTsKKyAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiAgICAgICAg
JGpzQ2xhc3NOYW1lKiBwdHIgPSBuZXcgKE5vdE51bGwsIEpTQzo6YWxsb2NhdGVDZWxsPCRqc0Ns
YXNzTmFtZT4odm0uaGVhcCkpICR7anNDbGFzc05hbWV9KHZtLCBzdHJ1Y3R1cmUsIGltcGwsIHdp
bmRvd1NoZWxsKTtcbiIpOwogICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAgICAgICBw
dHItPmZpbmlzaENyZWF0aW9uKHZtLCB3aW5kb3dTaGVsbCk7XG4iKTsKICAgICAgICAgcHVzaChA
aGVhZGVyQ29udGVudCwgIiAgICAgICAgdm0uaGVhcC5hZGRGaW5hbGl6ZXIocHRyLCBkZXN0cm95
KTtcbiIpOwogICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAgICAgICByZXR1cm4gcHRy
O1xuIik7CiAgICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIgICAgfVxuXG4iKTsKICAgICB9
IGVsc2lmICgkaW50ZXJmYWNlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiSXNXb3JrZXJDb250ZXh0
In0pIHsKLSAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiAgICBzdGF0aWMgJGNsYXNzTmFt
ZSogY3JlYXRlKEpTQzo6Vk0mIHZtLCBKU0M6OlN0cnVjdHVyZSogc3RydWN0dXJlLCBQYXNzUmVm
UHRyPCRpbXBsVHlwZT4gaW1wbClcbiIpOworICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAi
ICAgIHN0YXRpYyAkanNDbGFzc05hbWUqIGNyZWF0ZShKU0M6OlZNJiB2bSwgSlNDOjpTdHJ1Y3R1
cmUqIHN0cnVjdHVyZSwgUGFzc1JlZlB0cjwkaW1wbFR5cGU+IGltcGwpXG4iKTsKICAgICAgICAg
cHVzaChAaGVhZGVyQ29udGVudCwgIiAgICB7XG4iKTsKLSAgICAgICAgcHVzaChAaGVhZGVyQ29u
dGVudCwgIiAgICAgICAgJGNsYXNzTmFtZSogcHRyID0gbmV3IChOb3ROdWxsLCBKU0M6OmFsbG9j
YXRlQ2VsbDwkY2xhc3NOYW1lPih2bS5oZWFwKSkgJHtjbGFzc05hbWV9KHZtLCBzdHJ1Y3R1cmUs
IGltcGwpO1xuIik7CisgICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIgICAgICAgICRqc0Ns
YXNzTmFtZSogcHRyID0gbmV3IChOb3ROdWxsLCBKU0M6OmFsbG9jYXRlQ2VsbDwkanNDbGFzc05h
bWU+KHZtLmhlYXApKSAke2pzQ2xhc3NOYW1lfSh2bSwgc3RydWN0dXJlLCBpbXBsKTtcbiIpOwog
ICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAgICAgICBwdHItPmZpbmlzaENyZWF0aW9u
KHZtKTtcbiIpOwogICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAgICAgICB2bS5oZWFw
LmFkZEZpbmFsaXplcihwdHIsIGRlc3Ryb3kpO1xuIik7CiAgICAgICAgIHB1c2goQGhlYWRlckNv
bnRlbnQsICIgICAgICAgIHJldHVybiBwdHI7XG4iKTsKICAgICAgICAgcHVzaChAaGVhZGVyQ29u
dGVudCwgIiAgICB9XG5cbiIpOwogICAgIH0gZWxzaWYgKCRpbnRlcmZhY2UtPmV4dGVuZGVkQXR0
cmlidXRlcy0+eyJNYXNxdWVyYWRlc0FzVW5kZWZpbmVkIn0pIHsKICAgICAgICAgQWRkSW5jbHVk
ZXNGb3JUeXBlSW5IZWFkZXIoJGltcGxUeXBlKSB1bmxlc3MgJHN2Z1Byb3BlcnR5T3JMaXN0UHJv
cGVydHlUeXBlOwotICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAgIHN0YXRpYyAkY2xh
c3NOYW1lKiBjcmVhdGUoSlNDOjpTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSlNET01HbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgUGFzc1JlZlB0cjwkaW1wbFR5cGU+IGltcGwpXG4iKTsKKyAgICAg
ICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiAgICBzdGF0aWMgJGpzQ2xhc3NOYW1lKiBjcmVhdGUo
SlNDOjpTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgUGFzc1JlZlB0cjwkaW1wbFR5cGU+IGltcGwpXG4iKTsKICAgICAgICAgcHVzaChAaGVhZGVy
Q29udGVudCwgIiAgICB7XG4iKTsKICAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiAgICAg
ICAgZ2xvYmFsT2JqZWN0LT5tYXNxdWVyYWRlc0FzVW5kZWZpbmVkV2F0Y2hwb2ludCgpLT5ub3Rp
ZnlXcml0ZSgpO1xuIik7Ci0gICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIgICAgICAgICRj
bGFzc05hbWUqIHB0ciA9IG5ldyAoTm90TnVsbCwgSlNDOjphbGxvY2F0ZUNlbGw8JGNsYXNzTmFt
ZT4oZ2xvYmFsT2JqZWN0LT52bSgpLmhlYXApKSAkY2xhc3NOYW1lKHN0cnVjdHVyZSwgZ2xvYmFs
T2JqZWN0LCBpbXBsKTtcbiIpOworICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAgICAg
ICAkanNDbGFzc05hbWUqIHB0ciA9IG5ldyAoTm90TnVsbCwgSlNDOjphbGxvY2F0ZUNlbGw8JGpz
Q2xhc3NOYW1lPihnbG9iYWxPYmplY3QtPnZtKCkuaGVhcCkpICRqc0NsYXNzTmFtZShzdHJ1Y3R1
cmUsIGdsb2JhbE9iamVjdCwgaW1wbCk7XG4iKTsKICAgICAgICAgcHVzaChAaGVhZGVyQ29udGVu
dCwgIiAgICAgICAgcHRyLT5maW5pc2hDcmVhdGlvbihnbG9iYWxPYmplY3QtPnZtKCkpO1xuIik7
CiAgICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIgICAgICAgIHJldHVybiBwdHI7XG4iKTsK
ICAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiAgICB9XG5cbiIpOwogICAgIH0gZWxzZSB7
CiAgICAgICAgIEFkZEluY2x1ZGVzRm9yVHlwZUluSGVhZGVyKCRpbXBsVHlwZSkgdW5sZXNzICRz
dmdQcm9wZXJ0eU9yTGlzdFByb3BlcnR5VHlwZTsKLSAgICAgICAgcHVzaChAaGVhZGVyQ29udGVu
dCwgIiAgICBzdGF0aWMgJGNsYXNzTmFtZSogY3JlYXRlKEpTQzo6U3RydWN0dXJlKiBzdHJ1Y3R1
cmUsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFBhc3NSZWZQdHI8JGltcGxUeXBl
PiBpbXBsKVxuIik7CisgICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIgICAgc3RhdGljICRq
c0NsYXNzTmFtZSogY3JlYXRlKEpTQzo6U3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEpTRE9NR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIFBhc3NSZWZQdHI8JGltcGxUeXBlPiBpbXBsKVxuIik7CiAg
ICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIgICAge1xuIik7Ci0gICAgICAgIHB1c2goQGhl
YWRlckNvbnRlbnQsICIgICAgICAgICRjbGFzc05hbWUqIHB0ciA9IG5ldyAoTm90TnVsbCwgSlND
OjphbGxvY2F0ZUNlbGw8JGNsYXNzTmFtZT4oZ2xvYmFsT2JqZWN0LT52bSgpLmhlYXApKSAkY2xh
c3NOYW1lKHN0cnVjdHVyZSwgZ2xvYmFsT2JqZWN0LCBpbXBsKTtcbiIpOworICAgICAgICBwdXNo
KEBoZWFkZXJDb250ZW50LCAiICAgICAgICAkanNDbGFzc05hbWUqIHB0ciA9IG5ldyAoTm90TnVs
bCwgSlNDOjphbGxvY2F0ZUNlbGw8JGpzQ2xhc3NOYW1lPihnbG9iYWxPYmplY3QtPnZtKCkuaGVh
cCkpICRqc0NsYXNzTmFtZShzdHJ1Y3R1cmUsIGdsb2JhbE9iamVjdCwgaW1wbCk7XG4iKTsKICAg
ICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiAgICAgICAgcHRyLT5maW5pc2hDcmVhdGlvbihn
bG9iYWxPYmplY3QtPnZtKCkpO1xuIik7CiAgICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIg
ICAgICAgIHJldHVybiBwdHI7XG4iKTsKICAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiAg
ICB9XG5cbiIpOwpAQCAtNzQyLDkgKzc2NCw5IEBAIHN1YiBHZW5lcmF0ZUhlYWRlcgogICAgICMg
UHJvdG90eXBlCiAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiAgICBzdGF0aWMgSlNDOjpKU09i
amVjdCogY3JlYXRlUHJvdG90eXBlKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpKU0dsb2JhbE9iamVj
dCopO1xuIikgdW5sZXNzICgkaW50ZXJmYWNlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiRXh0ZW5k
c0RPTUdsb2JhbE9iamVjdCJ9KTsKIAotICAgICRoZWFkZXJUcmFpbGluZ0luY2x1ZGVzeyIke2Ns
YXNzTmFtZX1DdXN0b20uaCJ9ID0gMSBpZiAkaW50ZXJmYWNlLT5leHRlbmRlZEF0dHJpYnV0ZXMt
PnsiSlNDdXN0b21IZWFkZXIifTsKKyAgICAkaGVhZGVyVHJhaWxpbmdJbmNsdWRlc3siJHtqc0Ns
YXNzTmFtZX1DdXN0b20uaCJ9ID0gMSBpZiAkaW50ZXJmYWNlLT5leHRlbmRlZEF0dHJpYnV0ZXMt
PnsiSlNDdXN0b21IZWFkZXIifTsKIAotICAgICRpbXBsSW5jbHVkZXN7IiR7Y2xhc3NOYW1lfUN1
c3RvbS5oIn0gPSAxIGlmICEkaW50ZXJmYWNlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiSlNDdXN0
b21IZWFkZXIifSAmJiAoJGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkN1c3RvbVB1
dEZ1bmN0aW9uIn0gfHwgJGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkN1c3RvbU5h
bWVkU2V0dGVyIn0pOworICAgICRpbXBsSW5jbHVkZXN7IiR7anNDbGFzc05hbWV9Q3VzdG9tLmgi
fSA9IDEgaWYgISRpbnRlcmZhY2UtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJKU0N1c3RvbUhlYWRl
ciJ9ICYmICgkaW50ZXJmYWNlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiQ3VzdG9tUHV0RnVuY3Rp
b24ifSB8fCAkaW50ZXJmYWNlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiQ3VzdG9tTmFtZWRTZXR0
ZXIifSk7CiAKICAgICBteSAkaGFzSW1wdXJlTmFtZWRHZXR0ZXIgPQogICAgICAgICAkaW50ZXJm
YWNlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiTmFtZWRHZXR0ZXIifQpAQCAtNzk4LDcgKzgyMCw3
IEBAIHN1YiBHZW5lcmF0ZUhlYWRlcgogCiAgICAgaWYgKCEkaGFzUGFyZW50KSB7CiAgICAgICAg
IHB1c2goQGhlYWRlckNvbnRlbnQsICIgICAgc3RhdGljIHZvaWQgZGVzdHJveShKU0M6OkpTQ2Vs
bCopO1xuIik7Ci0gICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIgICAgfiR7Y2xhc3NOYW1l
fSgpO1xuIik7CisgICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIgICAgfiR7anNDbGFzc05h
bWV9KCk7XG4iKTsKICAgICB9CiAKICAgICAjIENsYXNzIGluZm8KQEAgLTkyOCw5ICs5NTAsOSBA
QCBzdWIgR2VuZXJhdGVIZWFkZXIKICAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgInByaXZh
dGU6XG4iKTsKICAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiAgICAkaW1wbFR5cGUqIG1f
aW1wbDtcbiIpOwogICAgIH0gZWxzaWYgKCRpbnRlcmZhY2UtPmV4dGVuZGVkQXR0cmlidXRlcy0+
eyJKU0dlbmVyYXRlVG9OYXRpdmVPYmplY3QifSkgewotICAgICAgICBwdXNoKEBoZWFkZXJDb250
ZW50LCAiICAgICRpbnRlcmZhY2VOYW1lKiBpbXBsKCkgY29uc3RcbiIpOworICAgICAgICBwdXNo
KEBoZWFkZXJDb250ZW50LCAiICAgICRpbXBsQ2xhc3NOYW1lKiBpbXBsKCkgY29uc3RcbiIpOwog
ICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAgIHtcbiIpOwotICAgICAgICBwdXNoKEBo
ZWFkZXJDb250ZW50LCAiICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8JGludGVyZmFjZU5hbWUq
PihCYXNlOjppbXBsKCkpO1xuIik7CisgICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIgICAg
ICAgIHJldHVybiBzdGF0aWNfY2FzdDwkaW1wbENsYXNzTmFtZSo+KEJhc2U6OmltcGwoKSk7XG4i
KTsKICAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiAgICB9XG4iKTsKICAgICB9CiAKQEAg
LTk1MywxMSArOTc1LDExIEBAIHN1YiBHZW5lcmF0ZUhlYWRlcgogICAgIHB1c2goQGhlYWRlckNv
bnRlbnQsICJwcm90ZWN0ZWQ6XG4iKTsKICAgICAjIENvbnN0cnVjdG9yCiAgICAgaWYgKCRpbnRl
cmZhY2VOYW1lIGVxICJET01XaW5kb3ciKSB7Ci0gICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQs
ICIgICAgJGNsYXNzTmFtZShKU0M6OlZNJiwgSlNDOjpTdHJ1Y3R1cmUqLCBQYXNzUmVmUHRyPCRp
bXBsVHlwZT4sIEpTRE9NV2luZG93U2hlbGwqKTtcbiIpOworICAgICAgICBwdXNoKEBoZWFkZXJD
b250ZW50LCAiICAgICRqc0NsYXNzTmFtZShKU0M6OlZNJiwgSlNDOjpTdHJ1Y3R1cmUqLCBQYXNz
UmVmUHRyPCRpbXBsVHlwZT4sIEpTRE9NV2luZG93U2hlbGwqKTtcbiIpOwogICAgIH0gZWxzaWYg
KCRpbnRlcmZhY2UtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJJc1dvcmtlckNvbnRleHQifSkgewot
ICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAgICRjbGFzc05hbWUoSlNDOjpWTSYsIEpT
Qzo6U3RydWN0dXJlKiwgUGFzc1JlZlB0cjwkaW1wbFR5cGU+KTtcbiIpOworICAgICAgICBwdXNo
KEBoZWFkZXJDb250ZW50LCAiICAgICRqc0NsYXNzTmFtZShKU0M6OlZNJiwgSlNDOjpTdHJ1Y3R1
cmUqLCBQYXNzUmVmUHRyPCRpbXBsVHlwZT4pO1xuIik7CiAgICAgfSBlbHNlIHsKLSAgICAgICAg
cHVzaChAaGVhZGVyQ29udGVudCwgIiAgICAkY2xhc3NOYW1lKEpTQzo6U3RydWN0dXJlKiwgSlNE
T01HbG9iYWxPYmplY3QqLCBQYXNzUmVmUHRyPCRpbXBsVHlwZT4pO1xuIik7CisgICAgICAgIHB1
c2goQGhlYWRlckNvbnRlbnQsICIgICAgJGpzQ2xhc3NOYW1lKEpTQzo6U3RydWN0dXJlKiwgSlNE
T01HbG9iYWxPYmplY3QqLCBQYXNzUmVmUHRyPCRpbXBsVHlwZT4pO1xuIik7CiAgICAgICAgIHB1
c2goQGhlYWRlckNvbnRlbnQsICIgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihKU0M6OlZNJik7XG4i
KTsKICAgICB9CiAKQEAgLTk4MywyNCArMTAwNSwyNCBAQCBzdWIgR2VuZXJhdGVIZWFkZXIKICAg
ICAjIE5hbWUgZ2V0dGVyCiAgICAgaWYgKCRpbnRlcmZhY2UtPmV4dGVuZGVkQXR0cmlidXRlcy0+
eyJOYW1lZEdldHRlciJ9IHx8ICRpbnRlcmZhY2UtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJDdXN0
b21OYW1lZEdldHRlciJ9KSB7CiAgICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICJwcml2YXRl
OlxuIik7Ci0gICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIgICAgc3RhdGljIGJvb2wgY2Fu
R2V0SXRlbXNGb3JOYW1lKEpTQzo6RXhlY1N0YXRlKiwgJGludGVyZmFjZU5hbWUqLCBKU0M6OlBy
b3BlcnR5TmFtZSk7XG4iKTsKKyAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiAgICBzdGF0
aWMgYm9vbCBjYW5HZXRJdGVtc0Zvck5hbWUoSlNDOjpFeGVjU3RhdGUqLCAkaW1wbENsYXNzTmFt
ZSosIEpTQzo6UHJvcGVydHlOYW1lKTtcbiIpOwogICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50
LCAiICAgIHN0YXRpYyBKU0M6OkpTVmFsdWUgbmFtZUdldHRlcihKU0M6OkV4ZWNTdGF0ZSosIEpT
Qzo6SlNWYWx1ZSwgSlNDOjpQcm9wZXJ0eU5hbWUpO1xuIik7CiAgICAgfQogCiAgICAgcHVzaChA
aGVhZGVyQ29udGVudCwgIn07XG5cbiIpOwogCiAgICAgaWYgKCRpbnRlcmZhY2UtPmV4dGVuZGVk
QXR0cmlidXRlcy0+eyJKU0lubGluZUdldE93blByb3BlcnR5U2xvdCJ9ICYmICEkaW50ZXJmYWNl
LT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiQ3VzdG9tR2V0T3duUHJvcGVydHlTbG90In0pIHsKLSAg
ICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIkFMV0FZU19JTkxJTkUgYm9vbCAke2NsYXNzTmFt
ZX06OmdldE93blByb3BlcnR5U2xvdChKU0M6OkpTQ2VsbCogY2VsbCwgSlNDOjpFeGVjU3RhdGUq
IGV4ZWMsIEpTQzo6UHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNDOjpQcm9wZXJ0eVNsb3Qm
IHNsb3QpXG4iKTsKKyAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIkFMV0FZU19JTkxJTkUg
Ym9vbCAke2pzQ2xhc3NOYW1lfTo6Z2V0T3duUHJvcGVydHlTbG90KEpTQzo6SlNDZWxsKiBjZWxs
LCBKU0M6OkV4ZWNTdGF0ZSogZXhlYywgSlNDOjpQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBK
U0M6OlByb3BlcnR5U2xvdCYgc2xvdClcbiIpOwogICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50
LCAie1xuIik7Ci0gICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIgICAgJHtjbGFzc05hbWV9
KiB0aGlzT2JqZWN0ID0gSlNDOjpqc0Nhc3Q8JHtjbGFzc05hbWV9Kj4oY2VsbCk7XG4iKTsKKyAg
ICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiAgICAke2pzQ2xhc3NOYW1lfSogdGhpc09iamVj
dCA9IEpTQzo6anNDYXN0PCR7anNDbGFzc05hbWV9Kj4oY2VsbCk7XG4iKTsKICAgICAgICAgcHVz
aChAaGVhZGVyQ29udGVudCwgIiAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRoaXNPYmpl
Y3QsICZzX2luZm8pO1xuIik7Ci0gICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsIEdlbmVyYXRl
R2V0T3duUHJvcGVydHlTbG90Qm9keSgkaW50ZXJmYWNlLCAkaW50ZXJmYWNlTmFtZSwgJGNsYXNz
TmFtZSwgJG51bUF0dHJpYnV0ZXMgPiAwLCAxKSk7CisgICAgICAgIHB1c2goQGhlYWRlckNvbnRl
bnQsIEdlbmVyYXRlR2V0T3duUHJvcGVydHlTbG90Qm9keSgkaW50ZXJmYWNlLCAkanNDbGFzc05h
bWUsICRudW1BdHRyaWJ1dGVzID4gMCwgMSkpOwogICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50
LCAifVxuXG4iKTsKLSAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIkFMV0FZU19JTkxJTkUg
Ym9vbCAke2NsYXNzTmFtZX06OmdldE93blByb3BlcnR5RGVzY3JpcHRvcihKU0M6OkpTT2JqZWN0
KiBvYmplY3QsIEpTQzo6RXhlY1N0YXRlKiBleGVjLCBKU0M6OlByb3BlcnR5TmFtZSBwcm9wZXJ0
eU5hbWUsIEpTQzo6UHJvcGVydHlEZXNjcmlwdG9yJiBkZXNjcmlwdG9yKVxuIik7CisgICAgICAg
IHB1c2goQGhlYWRlckNvbnRlbnQsICJBTFdBWVNfSU5MSU5FIGJvb2wgJHtqc0NsYXNzTmFtZX06
OmdldE93blByb3BlcnR5RGVzY3JpcHRvcihKU0M6OkpTT2JqZWN0KiBvYmplY3QsIEpTQzo6RXhl
Y1N0YXRlKiBleGVjLCBKU0M6OlByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTQzo6UHJvcGVy
dHlEZXNjcmlwdG9yJiBkZXNjcmlwdG9yKVxuIik7CiAgICAgICAgIHB1c2goQGhlYWRlckNvbnRl
bnQsICJ7XG4iKTsKLSAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiAgICAke2NsYXNzTmFt
ZX0qIHRoaXNPYmplY3QgPSBKU0M6OmpzQ2FzdDwke2NsYXNzTmFtZX0qPihvYmplY3QpO1xuIik7
CisgICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIgICAgJHtqc0NsYXNzTmFtZX0qIHRoaXNP
YmplY3QgPSBKU0M6OmpzQ2FzdDwke2pzQ2xhc3NOYW1lfSo+KG9iamVjdCk7XG4iKTsKICAgICAg
ICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRo
aXNPYmplY3QsICZzX2luZm8pO1xuIik7Ci0gICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsIEdl
bmVyYXRlR2V0T3duUHJvcGVydHlEZXNjcmlwdG9yQm9keSgkaW50ZXJmYWNlLCAkaW50ZXJmYWNl
TmFtZSwgJGNsYXNzTmFtZSwgJG51bUF0dHJpYnV0ZXMgPiAwLCAxKSk7CisgICAgICAgIHB1c2go
QGhlYWRlckNvbnRlbnQsIEdlbmVyYXRlR2V0T3duUHJvcGVydHlEZXNjcmlwdG9yQm9keSgkaW50
ZXJmYWNlLCAkanNDbGFzc05hbWUsICRudW1BdHRyaWJ1dGVzID4gMCwgMSkpOwogICAgICAgICBw
dXNoKEBoZWFkZXJDb250ZW50LCAifVxuXG4iKTsKICAgICB9CiAKQEAgLTEwMTEsOSArMTAzMyw5
IEBAIHN1YiBHZW5lcmF0ZUhlYWRlcgogICAgICAgICAkY29kZUdlbmVyYXRvci0+SW5oZXJpdHNF
eHRlbmRlZEF0dHJpYnV0ZSgkaW50ZXJmYWNlLCAiQWN0aXZlRE9NT2JqZWN0IikpIHsKICAgICAg
ICAgaWYgKCRpbnRlcmZhY2VOYW1lIG5lICJOb2RlIiAmJiAkY29kZUdlbmVyYXRvci0+SW5oZXJp
dHNJbnRlcmZhY2UoJGludGVyZmFjZSwgIk5vZGUiKSkgewogICAgICAgICAgICAgJGhlYWRlcklu
Y2x1ZGVzeyJKU05vZGUuaCJ9ID0gMTsKLSAgICAgICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQs
ICJjbGFzcyBKUyR7aW50ZXJmYWNlTmFtZX1Pd25lciA6IHB1YmxpYyBKU05vZGVPd25lciB7XG4i
KTsKKyAgICAgICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICJjbGFzcyAke2pzQ2xhc3NOYW1l
fU93bmVyIDogcHVibGljIEpTTm9kZU93bmVyIHtcbiIpOwogICAgICAgICB9IGVsc2UgewotICAg
ICAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgImNsYXNzIEpTJHtpbnRlcmZhY2VOYW1lfU93
bmVyIDogcHVibGljIEpTQzo6V2Vha0hhbmRsZU93bmVyIHtcbiIpOworICAgICAgICAgICAgcHVz
aChAaGVhZGVyQ29udGVudCwgImNsYXNzICR7anNDbGFzc05hbWV9T3duZXIgOiBwdWJsaWMgSlND
OjpXZWFrSGFuZGxlT3duZXIge1xuIik7CiAgICAgICAgIH0KICAgICAgICAgcHVzaChAaGVhZGVy
Q29udGVudCwgInB1YmxpYzpcbiIpOwogICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAg
IHZpcnR1YWwgYm9vbCBpc1JlYWNoYWJsZUZyb21PcGFxdWVSb290cyhKU0M6OkhhbmRsZTxKU0M6
OlVua25vd24+LCB2b2lkKiBjb250ZXh0LCBKU0M6OlNsb3RWaXNpdG9yJik7XG4iKTsKQEAgLTEw
MjIsNyArMTA0NCw3IEBAIHN1YiBHZW5lcmF0ZUhlYWRlcgogICAgICAgICBwdXNoKEBoZWFkZXJD
b250ZW50LCAiXG4iKTsKICAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgImlubGluZSBKU0M6
OldlYWtIYW5kbGVPd25lciogd3JhcHBlck93bmVyKERPTVdyYXBwZXJXb3JsZCosICRpbXBsVHlw
ZSopXG4iKTsKICAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIntcbiIpOwotICAgICAgICBw
dXNoKEBoZWFkZXJDb250ZW50LCAiICAgIERFRklORV9TVEFUSUNfTE9DQUwoSlMke2ludGVyZmFj
ZU5hbWV9T3duZXIsIGpzJHtpbnRlcmZhY2VOYW1lfU93bmVyLCAoKSk7XG4iKTsKKyAgICAgICAg
cHVzaChAaGVhZGVyQ29udGVudCwgIiAgICBERUZJTkVfU1RBVElDX0xPQ0FMKCR7anNDbGFzc05h
bWV9T3duZXIsIGpzJHtpbnRlcmZhY2VOYW1lfU93bmVyLCAoKSk7XG4iKTsKICAgICAgICAgcHVz
aChAaGVhZGVyQ29udGVudCwgIiAgICByZXR1cm4gJmpzJHtpbnRlcmZhY2VOYW1lfU93bmVyO1xu
Iik7CiAgICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICJ9XG4iKTsKICAgICAgICAgcHVzaChA
aGVhZGVyQ29udGVudCwgIlxuIik7CkBAIC0xMDQxLDI3ICsxMDYzLDI3IEBAIHN1YiBHZW5lcmF0
ZUhlYWRlcgogICAgICAgICB9IGVsc2lmICgkaW50ZXJmYWNlTmFtZSBlcSAiRE9NU3RyaW5nTGlz
dCIpIHsKICAgICAgICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICJQYXNzUmVmUHRyPERPTVN0
cmluZ0xpc3Q+IHRvRE9NU3RyaW5nTGlzdChKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6SlNWYWx1ZSk7
XG4iKTsKICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQs
ICIkaW1wbFR5cGUqIHRvJHtpbnRlcmZhY2VOYW1lfShKU0M6OkpTVmFsdWUpO1xuIik7CisgICAg
ICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiJGltcGxUeXBlKiB0byR7aW1wbENsYXNzTmFt
ZX0oSlNDOjpKU1ZhbHVlKTtcbiIpOwogICAgICAgICB9CiAgICAgfQogICAgIGlmICgkdXNlc1Rv
SlNOZXdseUNyZWF0ZWR7JGludGVyZmFjZU5hbWV9KSB7Ci0gICAgICAgIHB1c2goQGhlYWRlckNv
bnRlbnQsICJKU0M6OkpTVmFsdWUgdG9KU05ld2x5Q3JlYXRlZChKU0M6OkV4ZWNTdGF0ZSosIEpT
RE9NR2xvYmFsT2JqZWN0KiwgJGludGVyZmFjZU5hbWUqKTtcbiIpOworICAgICAgICBwdXNoKEBo
ZWFkZXJDb250ZW50LCAiSlNDOjpKU1ZhbHVlIHRvSlNOZXdseUNyZWF0ZWQoSlNDOjpFeGVjU3Rh
dGUqLCBKU0RPTUdsb2JhbE9iamVjdCosICRpbXBsQ2xhc3NOYW1lKik7XG4iKTsKICAgICB9CiAg
ICAgCiAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIlxuIik7CiAKICAgICAjIEFkZCBwcm90b3R5
cGUgZGVjbGFyYXRpb24uCiAgICAgJXN0cnVjdHVyZUZsYWdzID0gKCk7Ci0gICAgcHVzaChAaGVh
ZGVyQ29udGVudCwgImNsYXNzICR7Y2xhc3NOYW1lfVByb3RvdHlwZSA6IHB1YmxpYyBKU0M6OkpT
Tm9uRmluYWxPYmplY3Qge1xuIik7CisgICAgcHVzaChAaGVhZGVyQ29udGVudCwgImNsYXNzICR7
anNDbGFzc05hbWV9UHJvdG90eXBlIDogcHVibGljIEpTQzo6SlNOb25GaW5hbE9iamVjdCB7XG4i
KTsKICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAicHVibGljOlxuIik7CiAgICAgcHVzaChAaGVh
ZGVyQ29udGVudCwgIiAgICB0eXBlZGVmIEpTQzo6SlNOb25GaW5hbE9iamVjdCBCYXNlO1xuIik7
CiAgICAgaWYgKCRpbnRlcmZhY2VOYW1lIG5lICJET01XaW5kb3ciICYmICEkaW50ZXJmYWNlLT5l
eHRlbmRlZEF0dHJpYnV0ZXMtPnsiSXNXb3JrZXJDb250ZXh0In0pIHsKICAgICAgICAgcHVzaChA
aGVhZGVyQ29udGVudCwgIiAgICBzdGF0aWMgSlNDOjpKU09iamVjdCogc2VsZihKU0M6OkV4ZWNT
dGF0ZSosIEpTQzo6SlNHbG9iYWxPYmplY3QqKTtcbiIpOwogICAgIH0KIAotICAgIHB1c2goQGhl
YWRlckNvbnRlbnQsICIgICAgc3RhdGljICR7Y2xhc3NOYW1lfVByb3RvdHlwZSogY3JlYXRlKEpT
Qzo6Vk0mIHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6U3RydWN0
dXJlKiBzdHJ1Y3R1cmUpXG4iKTsKKyAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAgIHN0YXRp
YyAke2pzQ2xhc3NOYW1lfVByb3RvdHlwZSogY3JlYXRlKEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6U3RydWN0dXJlKiBzdHJ1Y3R1cmUpXG4iKTsK
ICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAgIHtcbiIpOwotICAgIHB1c2goQGhlYWRlckNv
bnRlbnQsICIgICAgICAgICR7Y2xhc3NOYW1lfVByb3RvdHlwZSogcHRyID0gbmV3IChOb3ROdWxs
LCBKU0M6OmFsbG9jYXRlQ2VsbDwke2NsYXNzTmFtZX1Qcm90b3R5cGU+KHZtLmhlYXApKSAke2Ns
YXNzTmFtZX1Qcm90b3R5cGUodm0sIGdsb2JhbE9iamVjdCwgc3RydWN0dXJlKTtcbiIpOworICAg
IHB1c2goQGhlYWRlckNvbnRlbnQsICIgICAgICAgICR7anNDbGFzc05hbWV9UHJvdG90eXBlKiBw
dHIgPSBuZXcgKE5vdE51bGwsIEpTQzo6YWxsb2NhdGVDZWxsPCR7anNDbGFzc05hbWV9UHJvdG90
eXBlPih2bS5oZWFwKSkgJHtqc0NsYXNzTmFtZX1Qcm90b3R5cGUodm0sIGdsb2JhbE9iamVjdCwg
c3RydWN0dXJlKTtcbiIpOwogICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIgICAgICAgIHB0ci0+
ZmluaXNoQ3JlYXRpb24odm0pO1xuIik7CiAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiAgICAg
ICAgcmV0dXJuIHB0cjtcbiIpOwogICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIgICAgfVxuXG4i
KTsKQEAgLTEwODksNyArMTExMSw3IEBAIHN1YiBHZW5lcmF0ZUhlYWRlcgogICAgIHB1c2goQGhl
YWRlckNvbnRlbnQsICIgICAgc3RhdGljIGJvb2wgZGVmaW5lT3duUHJvcGVydHkoSlNDOjpKU09i
amVjdCosIEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpQcm9wZXJ0eU5hbWUsIEpTQzo6UHJvcGVydHlE
ZXNjcmlwdG9yJiwgYm9vbCBzaG91bGRUaHJvdyk7XG4iKSBpZiAkaW50ZXJmYWNlLT5leHRlbmRl
ZEF0dHJpYnV0ZXMtPnsiSlNDdXN0b21EZWZpbmVPd25Qcm9wZXJ0eU9uUHJvdG90eXBlIn07CiAK
ICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiXG5wcml2YXRlOlxuIik7Ci0gICAgcHVzaChAaGVh
ZGVyQ29udGVudCwgIiAgICAke2NsYXNzTmFtZX1Qcm90b3R5cGUoSlNDOjpWTSYgdm0sIEpTQzo6
SlNHbG9iYWxPYmplY3QqLCBKU0M6OlN0cnVjdHVyZSogc3RydWN0dXJlKSA6IEpTQzo6SlNOb25G
aW5hbE9iamVjdCh2bSwgc3RydWN0dXJlKSB7IH1cbiIpOworICAgIHB1c2goQGhlYWRlckNvbnRl
bnQsICIgICAgJHtqc0NsYXNzTmFtZX1Qcm90b3R5cGUoSlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9i
YWxPYmplY3QqLCBKU0M6OlN0cnVjdHVyZSogc3RydWN0dXJlKSA6IEpTQzo6SlNOb25GaW5hbE9i
amVjdCh2bSwgc3RydWN0dXJlKSB7IH1cbiIpOwogCiAgICAgIyBzdHJ1Y3R1cmUgZmxhZ3MKICAg
ICBwdXNoKEBoZWFkZXJDb250ZW50LCAicHJvdGVjdGVkOlxuIik7CkBAIC0xMTAzLDcgKzExMjUs
NyBAQCBzdWIgR2VuZXJhdGVIZWFkZXIKIAogICAgIGlmICghJGludGVyZmFjZS0+ZXh0ZW5kZWRB
dHRyaWJ1dGVzLT57Ik9taXRDb25zdHJ1Y3RvciJ9KSB7CiAgICAgICAgICRoZWFkZXJJbmNsdWRl
c3siSlNET01CaW5kaW5nLmgifSA9IDE7Ci0gICAgICAgIEdlbmVyYXRlQ29uc3RydWN0b3JEZWNs
YXJhdGlvbihcQGhlYWRlckNvbnRlbnQsICRjbGFzc05hbWUsICRpbnRlcmZhY2UsICRpbnRlcmZh
Y2VOYW1lKTsKKyAgICAgICAgR2VuZXJhdGVDb25zdHJ1Y3RvckRlY2xhcmF0aW9uKFxAaGVhZGVy
Q29udGVudCwgJGludGVyZmFjZSk7CiAgICAgfQogCiAgICAgaWYgKCRudW1GdW5jdGlvbnMgPiAw
KSB7CkBAIC0xMTEyLDcgKzExMzQsNyBAQCBzdWIgR2VuZXJhdGVIZWFkZXIKICAgICAgICAgICAg
IG5leHQgaWYgJGZ1bmN0aW9uLT57b3ZlcmxvYWRJbmRleH0gJiYgJGZ1bmN0aW9uLT57b3Zlcmxv
YWRJbmRleH0gPiAxOwogICAgICAgICAgICAgbXkgJGNvbmRpdGlvbmFsU3RyaW5nID0gJGNvZGVH
ZW5lcmF0b3ItPkdlbmVyYXRlQ29uZGl0aW9uYWxTdHJpbmcoJGZ1bmN0aW9uLT5zaWduYXR1cmUp
OwogICAgICAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiNpZiAke2NvbmRpdGlvbmFsU3Ry
aW5nfVxuIikgaWYgJGNvbmRpdGlvbmFsU3RyaW5nOwotICAgICAgICAgICAgbXkgJGZ1bmN0aW9u
TmFtZSA9IEdldEZ1bmN0aW9uTmFtZSgkY2xhc3NOYW1lLCAkZnVuY3Rpb24pOworICAgICAgICAg
ICAgbXkgJGZ1bmN0aW9uTmFtZSA9IEdldEZ1bmN0aW9uTmFtZSgkanNDbGFzc05hbWUsICRmdW5j
dGlvbik7CiAgICAgICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiSlNDOjpFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMICR7ZnVuY3Rpb25OYW1lfShKU0M6OkV4ZWNTdGF0ZSopO1xuIik7
CiAgICAgICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiI2VuZGlmXG4iKSBpZiAkY29uZGl0
aW9uYWxTdHJpbmc7CiAgICAgICAgIH0KQEAgLTExMjMsMTAgKzExNDUsMTAgQEAgc3ViIEdlbmVy
YXRlSGVhZGVyCiAgICAgICAgIGZvcmVhY2ggbXkgJGF0dHJpYnV0ZSAoQHskaW50ZXJmYWNlLT5h
dHRyaWJ1dGVzfSkgewogICAgICAgICAgICAgbXkgJGNvbmRpdGlvbmFsU3RyaW5nID0gJGNvZGVH
ZW5lcmF0b3ItPkdlbmVyYXRlQ29uZGl0aW9uYWxTdHJpbmcoJGF0dHJpYnV0ZS0+c2lnbmF0dXJl
KTsKICAgICAgICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIjaWYgJHtjb25kaXRpb25hbFN0
cmluZ31cbiIpIGlmICRjb25kaXRpb25hbFN0cmluZzsKLSAgICAgICAgICAgIG15ICRnZXR0ZXIg
PSBHZXRBdHRyaWJ1dGVHZXR0ZXJOYW1lKCRpbnRlcmZhY2VOYW1lLCAkY2xhc3NOYW1lLCAkYXR0
cmlidXRlKTsKKyAgICAgICAgICAgIG15ICRnZXR0ZXIgPSBHZXRBdHRyaWJ1dGVHZXR0ZXJOYW1l
KCRpbnRlcmZhY2UsICRhdHRyaWJ1dGUpOwogICAgICAgICAgICAgcHVzaChAaGVhZGVyQ29udGVu
dCwgIkpTQzo6SlNWYWx1ZSAke2dldHRlcn0oSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkpTVmFsdWUs
IEpTQzo6UHJvcGVydHlOYW1lKTtcbiIpOwogICAgICAgICAgICAgaWYgKCFJc1JlYWRvbmx5KCRh
dHRyaWJ1dGUpKSB7Ci0gICAgICAgICAgICAgICAgbXkgJHNldHRlciA9IEdldEF0dHJpYnV0ZVNl
dHRlck5hbWUoJGludGVyZmFjZU5hbWUsICRjbGFzc05hbWUsICRhdHRyaWJ1dGUpOworICAgICAg
ICAgICAgICAgIG15ICRzZXR0ZXIgPSBHZXRBdHRyaWJ1dGVTZXR0ZXJOYW1lKCRpbnRlcmZhY2Us
ICRhdHRyaWJ1dGUpOwogICAgICAgICAgICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICJ2b2lk
ICR7c2V0dGVyfShKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6SlNPYmplY3QqLCBKU0M6OkpTVmFsdWUp
O1xuIik7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAi
I2VuZGlmXG4iKSBpZiAkY29uZGl0aW9uYWxTdHJpbmc7CkBAIC0xMTM4LDcgKzExNjAsNyBAQCBz
dWIgR2VuZXJhdGVIZWFkZXIKICAgICAgICAgfQogCiAgICAgICAgIGlmICgkaW50ZXJmYWNlLT5l
eHRlbmRlZEF0dHJpYnV0ZXMtPnsiUmVwbGFjZWFibGVDb25zdHJ1Y3RvciJ9KSB7Ci0gICAgICAg
ICAgICBteSAkY29uc3RydWN0b3JGdW5jdGlvbk5hbWUgPSAic2V0SlMiIC4gJGludGVyZmFjZU5h
bWUgLiAiQ29uc3RydWN0b3IiOworICAgICAgICAgICAgbXkgJGNvbnN0cnVjdG9yRnVuY3Rpb25O
YW1lID0gInNldCIgLiAkanNDbGFzc05hbWUgLiAiQ29uc3RydWN0b3IiOwogICAgICAgICAgICAg
cHVzaChAaGVhZGVyQ29udGVudCwgInZvaWQgJHtjb25zdHJ1Y3RvckZ1bmN0aW9uTmFtZX0oSlND
OjpFeGVjU3RhdGUqLCBKU0M6OkpTT2JqZWN0KiwgSlNDOjpKU1ZhbHVlKTtcbiIpOwogICAgICAg
ICB9CiAgICAgfQpAQCAtMTE2MSw3ICsxMTgzLDcgQEAgc3ViIEdlbmVyYXRlSGVhZGVyCiAKICAg
ICAjIC0gR2VuZXJhdGUgZGVwZW5kZW5jaWVzLgogICAgIGlmICgkd3JpdGVEZXBlbmRlbmNpZXMg
JiYgQGFuY2VzdG9ySW50ZXJmYWNlTmFtZXMpIHsKLSAgICAgICAgcHVzaChAZGVwc0NvbnRlbnQs
ICIkY2xhc3NOYW1lLmggOiAiLCBqb2luKCIgIiwgbWFwIHsgIiRfLmlkbCIgfSBAYW5jZXN0b3JJ
bnRlcmZhY2VOYW1lcyksICJcbiIpOworICAgICAgICBwdXNoKEBkZXBzQ29udGVudCwgIiRqc0Ns
YXNzTmFtZS5oIDogIiwgam9pbigiICIsIG1hcCB7ICIkXy5pZGwiIH0gQGFuY2VzdG9ySW50ZXJm
YWNlTmFtZXMpLCAiXG4iKTsKICAgICAgICAgcHVzaChAZGVwc0NvbnRlbnQsIG1hcCB7ICIkXy5p
ZGwgOlxuIiB9IEBhbmNlc3RvckludGVyZmFjZU5hbWVzKTsgCiAgICAgfQogfQpAQCAtMTE3Miw3
ICsxMTk0LDcgQEAgc3ViIEdlbmVyYXRlQXR0cmlidXRlc0hhc2hUYWJsZSgkJCkKIAogICAgICMg
RklYTUU6IFRoZXNlIHNob3VsZCBiZSBmdW5jdGlvbnMgb24gJGludGVyZmFjZS4KICAgICBteSAk
aW50ZXJmYWNlTmFtZSA9ICRpbnRlcmZhY2UtPm5hbWU7Ci0gICAgbXkgJGNsYXNzTmFtZSA9ICJK
UyRpbnRlcmZhY2VOYW1lIjsKKyAgICBteSAkanNDbGFzc05hbWUgPSBHZXRKU0NsYXNzTmFtZSgk
aW50ZXJmYWNlKTsKICAgICAKICAgICAjIC0gQWRkIGFsbCBhdHRyaWJ1dGVzIGluIGEgaGFzaHRh
YmxlIGRlZmluaXRpb24KICAgICBteSAkbnVtQXR0cmlidXRlcyA9IEB7JGludGVyZmFjZS0+YXR0
cmlidXRlc307CkBAIC0xMTgxLDcgKzEyMDMsNyBAQCBzdWIgR2VuZXJhdGVBdHRyaWJ1dGVzSGFz
aFRhYmxlKCQkKQogICAgIHJldHVybiAwICBpZiAhJG51bUF0dHJpYnV0ZXM7CiAKICAgICBteSAk
aGFzaFNpemUgPSAkbnVtQXR0cmlidXRlczsKLSAgICBteSAkaGFzaE5hbWUgPSAkY2xhc3NOYW1l
IC4gIlRhYmxlIjsKKyAgICBteSAkaGFzaE5hbWUgPSAkanNDbGFzc05hbWUgLiAiVGFibGUiOwog
CiAgICAgbXkgQGhhc2hLZXlzID0gKCk7CiAgICAgbXkgQGhhc2hTcGVjaWFscyA9ICgpOwpAQCAt
MTE5OSwyMCArMTIyMSwyMCBAQCBzdWIgR2VuZXJhdGVBdHRyaWJ1dGVzSGFzaFRhYmxlKCQkKQog
ICAgICAgICBteSBAc3BlY2lhbHMgPSAoKTsKICAgICAgICAgIyBBcyBwZXIgV2ViIElETCBzcGVj
aWZpY2F0aW9uLCBjb25zdHJ1Y3RvciBwcm9wZXJ0aWVzIG9uIHRoZSBFQ01BU2NyaXB0IGdsb2Jh
bCBvYmplY3Qgc2hvdWxkIGJlCiAgICAgICAgICMgY29uZmlndXJhYmxlIGFuZCBzaG91bGQgbm90
IGJlIGVudW1lcmFibGUuCi0gICAgICAgIG15ICRpc19kb213aW5kb3dfY29uc3RydWN0b3IgPSAo
JGludGVyZmFjZS0+bmFtZSBlcSAiRE9NV2luZG93IiAmJiAkYXR0cmlidXRlLT5zaWduYXR1cmUt
PnR5cGUgPX4gL0NvbnN0cnVjdG9yJC8pOworICAgICAgICBteSAkaXNfZG9td2luZG93X2NvbnN0
cnVjdG9yID0gKCRpbnRlcmZhY2VOYW1lIGVxICJET01XaW5kb3ciICYmICRhdHRyaWJ1dGUtPnNp
Z25hdHVyZS0+dHlwZSA9fiAvQ29uc3RydWN0b3IkLyk7CiAgICAgICAgIHB1c2goQHNwZWNpYWxz
LCAiRG9udERlbGV0ZSIpIHVubGVzcyAoJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT5leHRlbmRlZEF0
dHJpYnV0ZXMtPnsiRGVsZXRhYmxlIn0gfHwgJGlzX2RvbXdpbmRvd19jb25zdHJ1Y3Rvcik7CiAg
ICAgICAgIHB1c2goQHNwZWNpYWxzLCAiRG9udEVudW0iKSBpZiAoJGF0dHJpYnV0ZS0+c2lnbmF0
dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiTm90RW51bWVyYWJsZSJ9IHx8ICRpc19kb213aW5k
b3dfY29uc3RydWN0b3IpOwogICAgICAgICBwdXNoKEBzcGVjaWFscywgIlJlYWRPbmx5IikgaWYg
SXNSZWFkb25seSgkYXR0cmlidXRlKTsKICAgICAgICAgbXkgJHNwZWNpYWwgPSAoQHNwZWNpYWxz
ID4gMCkgPyBqb2luKCIgfCAiLCBAc3BlY2lhbHMpIDogIjAiOwogICAgICAgICBwdXNoKEBoYXNo
U3BlY2lhbHMsICRzcGVjaWFsKTsKIAotICAgICAgICBteSAkZ2V0dGVyID0gR2V0QXR0cmlidXRl
R2V0dGVyTmFtZSgkaW50ZXJmYWNlTmFtZSwgJGNsYXNzTmFtZSwgJGF0dHJpYnV0ZSk7CisgICAg
ICAgIG15ICRnZXR0ZXIgPSBHZXRBdHRyaWJ1dGVHZXR0ZXJOYW1lKCRpbnRlcmZhY2UsICRhdHRy
aWJ1dGUpOwogICAgICAgICBwdXNoKEBoYXNoVmFsdWUxLCAkZ2V0dGVyKTsKIAogICAgICAgICBp
ZiAoSXNSZWFkb25seSgkYXR0cmlidXRlKSkgewogICAgICAgICAgICAgcHVzaChAaGFzaFZhbHVl
MiwgIjAiKTsKICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIG15ICRzZXR0ZXIgPSBHZXRB
dHRyaWJ1dGVTZXR0ZXJOYW1lKCRpbnRlcmZhY2VOYW1lLCAkY2xhc3NOYW1lLCAkYXR0cmlidXRl
KTsKKyAgICAgICAgICAgIG15ICRzZXR0ZXIgPSBHZXRBdHRyaWJ1dGVTZXR0ZXJOYW1lKCRpbnRl
cmZhY2UsICRhdHRyaWJ1dGUpOwogICAgICAgICAgICAgcHVzaChAaGFzaFZhbHVlMiwgJHNldHRl
cik7CiAgICAgICAgIH0KIApAQCAtMTIyNyw3ICsxMjQ5LDcgQEAgc3ViIEdlbmVyYXRlQXR0cmli
dXRlc0hhc2hUYWJsZSgkJCkKICAgICAgICAgbXkgJGdldHRlciA9ICJqcyIgLiAkaW50ZXJmYWNl
TmFtZSAuICJDb25zdHJ1Y3RvciI7CiAgICAgICAgIHB1c2goQGhhc2hWYWx1ZTEsICRnZXR0ZXIp
OwogICAgICAgICBpZiAoJGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IlJlcGxhY2Vh
YmxlQ29uc3RydWN0b3IifSkgewotICAgICAgICAgICAgbXkgJHNldHRlciA9ICJzZXRKUyIgLiAk
aW50ZXJmYWNlTmFtZSAuICJDb25zdHJ1Y3RvciI7CisgICAgICAgICAgICBteSAkc2V0dGVyID0g
InNldCIgLiAkanNDbGFzc05hbWUgLiAiQ29uc3RydWN0b3IiOwogICAgICAgICAgICAgcHVzaChA
aGFzaFZhbHVlMiwgJHNldHRlcik7CiAgICAgICAgICAgICBwdXNoKEBoYXNoU3BlY2lhbHMsICJE
b250RW51bSB8IERvbnREZWxldGUiKTsKICAgICAgICAgfSBlbHNlIHsgICAgICAgICAgICAKQEAg
LTEzNDUsNyArMTM2Nyw3IEBAIHN1YiBHZW5lcmF0ZU92ZXJsb2FkZWRGdW5jdGlvbgogewogICAg
IG15ICRmdW5jdGlvbiA9IHNoaWZ0OwogICAgIG15ICRpbnRlcmZhY2UgPSBzaGlmdDsKLSAgICBt
eSAkaW50ZXJmYWNlTmFtZSA9IHNoaWZ0OworICAgIG15ICRpbnRlcmZhY2VOYW1lID0gJGludGVy
ZmFjZS0+bmFtZTsKIAogICAgICMgR2VuZXJhdGUgY29kZSBmb3IgY2hvb3NpbmcgdGhlIGNvcnJl
Y3Qgb3ZlcmxvYWQgdG8gY2FsbC4gT3ZlcmxvYWRzIGFyZQogICAgICMgY2hvc2VuIGJhc2VkIG9u
IHRoZSB0b3RhbCBudW1iZXIgb2YgYXJndW1lbnRzIHBhc3NlZCBhbmQgdGhlIHR5cGUgb2YKQEAg
LTEzOTIsOSArMTQxNCw5IEBAIEVORAogc3ViIEdldE5hdGl2ZVR5cGVGb3JDb252ZXJzaW9ucwog
ewogICAgIG15ICRpbnRlcmZhY2UgPSBzaGlmdDsKLSAgICBteSAkaW50ZXJmYWNlTmFtZSA9ICRp
bnRlcmZhY2UtPm5hbWU7Ci0gICAgJGludGVyZmFjZU5hbWUgPSAkY29kZUdlbmVyYXRvci0+R2V0
U1ZHVHlwZU5lZWRpbmdUZWFyT2ZmKCRpbnRlcmZhY2VOYW1lKSBpZiAkY29kZUdlbmVyYXRvci0+
SXNTVkdUeXBlTmVlZGluZ1RlYXJPZmYoJGludGVyZmFjZU5hbWUpOwotICAgIHJldHVybiAkaW50
ZXJmYWNlTmFtZTsKKyAgICBteSAkaW1wbENsYXNzTmFtZSA9IEdldEltcGxDbGFzc05hbWUoJGlu
dGVyZmFjZSk7CisgICAgJGltcGxDbGFzc05hbWUgPSAkY29kZUdlbmVyYXRvci0+R2V0U1ZHVHlw
ZU5lZWRpbmdUZWFyT2ZmKCRpbnRlcmZhY2UtPm5hbWUpIGlmICRjb2RlR2VuZXJhdG9yLT5Jc1NW
R1R5cGVOZWVkaW5nVGVhck9mZigkaW50ZXJmYWNlLT5uYW1lKTsKKyAgICByZXR1cm4gJGltcGxD
bGFzc05hbWU7CiB9CiAKICMgU2VlIGh0dHA6Ly9yZWZzcGVjcy5saW51eC1mb3VuZGF0aW9uLm9y
Zy9jeHhhYmktMS44My5odG1sLgpAQCAtMTUxNiwxNSArMTUzOCwxNiBAQCBzdWIgR2VuZXJhdGVJ
bXBsZW1lbnRhdGlvbgogICAgIG15ICgkb2JqZWN0LCAkaW50ZXJmYWNlKSA9IEBfOwogCiAgICAg
bXkgJGludGVyZmFjZU5hbWUgPSAkaW50ZXJmYWNlLT5uYW1lOwotICAgIG15ICRjbGFzc05hbWUg
PSAiSlMkaW50ZXJmYWNlTmFtZSI7CisgICAgbXkgJGltcGxDbGFzc05hbWUgPSBHZXRJbXBsQ2xh
c3NOYW1lKCRpbnRlcmZhY2UpOworICAgIG15ICRqc0NsYXNzTmFtZSA9IEdldEpTQ2xhc3NOYW1l
KCRpbnRlcmZhY2UpOwogCiAgICAgbXkgJGhhc0xlZ2FjeVBhcmVudCA9ICRpbnRlcmZhY2UtPmV4
dGVuZGVkQXR0cmlidXRlcy0+eyJKU0xlZ2FjeVBhcmVudCJ9OwogICAgIG15ICRoYXNSZWFsUGFy
ZW50ID0gQHskaW50ZXJmYWNlLT5wYXJlbnRzfSA+IDA7CiAgICAgbXkgJGhhc1BhcmVudCA9ICRo
YXNMZWdhY3lQYXJlbnQgfHwgJGhhc1JlYWxQYXJlbnQ7CiAgICAgbXkgJHBhcmVudENsYXNzTmFt
ZSA9IEdldFBhcmVudENsYXNzTmFtZSgkaW50ZXJmYWNlKTsKICAgICBteSAkdmlzaWJsZUludGVy
ZmFjZU5hbWUgPSAkY29kZUdlbmVyYXRvci0+R2V0VmlzaWJsZUludGVyZmFjZU5hbWUoJGludGVy
ZmFjZSk7Ci0gICAgbXkgJGV2ZW50VGFyZ2V0ID0gJGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1
dGVzLT57IkV2ZW50VGFyZ2V0In0gfHwgKCRjb2RlR2VuZXJhdG9yLT5Jbmhlcml0c0ludGVyZmFj
ZSgkaW50ZXJmYWNlLCAiRXZlbnRUYXJnZXQiKSAmJiAkaW50ZXJmYWNlLT5uYW1lIG5lICJFdmVu
dFRhcmdldCIpOwotICAgIG15ICRuZWVkc01hcmtDaGlsZHJlbiA9ICRpbnRlcmZhY2UtPmV4dGVu
ZGVkQXR0cmlidXRlcy0+eyJKU0N1c3RvbU1hcmtGdW5jdGlvbiJ9IHx8ICRpbnRlcmZhY2UtPmV4
dGVuZGVkQXR0cmlidXRlcy0+eyJFdmVudFRhcmdldCJ9IHx8ICRpbnRlcmZhY2UtPm5hbWUgZXEg
IkV2ZW50VGFyZ2V0IjsKKyAgICBteSAkZXZlbnRUYXJnZXQgPSAkaW50ZXJmYWNlLT5leHRlbmRl
ZEF0dHJpYnV0ZXMtPnsiRXZlbnRUYXJnZXQifSB8fCAoJGNvZGVHZW5lcmF0b3ItPkluaGVyaXRz
SW50ZXJmYWNlKCRpbnRlcmZhY2UsICJFdmVudFRhcmdldCIpICYmICRpbnRlcmZhY2VOYW1lIG5l
ICJFdmVudFRhcmdldCIpOworICAgIG15ICRuZWVkc01hcmtDaGlsZHJlbiA9ICRpbnRlcmZhY2Ut
PmV4dGVuZGVkQXR0cmlidXRlcy0+eyJKU0N1c3RvbU1hcmtGdW5jdGlvbiJ9IHx8ICRpbnRlcmZh
Y2UtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJFdmVudFRhcmdldCJ9IHx8ICRpbnRlcmZhY2VOYW1l
IGVxICJFdmVudFRhcmdldCI7CiAKICAgICAjIC0gQWRkIGRlZmF1bHQgaGVhZGVyIHRlbXBsYXRl
CiAgICAgcHVzaChAaW1wbENvbnRlbnRIZWFkZXIsIEdlbmVyYXRlSW1wbGVtZW50YXRpb25Db250
ZW50SGVhZGVyKCRpbnRlcmZhY2UpKTsKQEAgLTE1NDcsNyArMTU3MCw3IEBAIHN1YiBHZW5lcmF0
ZUltcGxlbWVudGF0aW9uCiAgICAgIyAtIEFkZCBhbGwgY29uc3RhbnRzCiAgICAgaWYgKCEkaW50
ZXJmYWNlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiT21pdENvbnN0cnVjdG9yIn0pIHsKICAgICAg
ICAgbXkgJGhhc2hTaXplID0gJG51bUNvbnN0YW50czsKLSAgICAgICAgbXkgJGhhc2hOYW1lID0g
JGNsYXNzTmFtZSAuICJDb25zdHJ1Y3RvclRhYmxlIjsKKyAgICAgICAgbXkgJGhhc2hOYW1lID0g
JGpzQ2xhc3NOYW1lIC4gIkNvbnN0cnVjdG9yVGFibGUiOwogCiAgICAgICAgIG15IEBoYXNoS2V5
cyA9ICgpOwogICAgICAgICBteSBAaGFzaFZhbHVlMSA9ICgpOwpAQCAtMTU4NSwxMyArMTYwOCwx
MyBAQCBzdWIgR2VuZXJhdGVJbXBsZW1lbnRhdGlvbgogICAgICAgICAgICAgbXkgJHNwZWNpYWwg
PSAoQHNwZWNpYWxzID4gMCkgPyBqb2luKCIgfCAiLCBAc3BlY2lhbHMpIDogIjAiOwogICAgICAg
ICAgICAgcHVzaChAaGFzaFNwZWNpYWxzLCAkc3BlY2lhbCk7CiAKLSAgICAgICAgICAgIG15ICRn
ZXR0ZXIgPSBHZXRBdHRyaWJ1dGVHZXR0ZXJOYW1lKCRpbnRlcmZhY2VOYW1lLCAkY2xhc3NOYW1l
LCAkYXR0cmlidXRlKTsKKyAgICAgICAgICAgIG15ICRnZXR0ZXIgPSBHZXRBdHRyaWJ1dGVHZXR0
ZXJOYW1lKCRpbnRlcmZhY2UsICRhdHRyaWJ1dGUpOwogICAgICAgICAgICAgcHVzaChAaGFzaFZh
bHVlMSwgJGdldHRlcik7CiAKICAgICAgICAgICAgIGlmIChJc1JlYWRvbmx5KCRhdHRyaWJ1dGUp
KSB7CiAgICAgICAgICAgICAgICAgcHVzaChAaGFzaFZhbHVlMiwgIjAiKTsKICAgICAgICAgICAg
IH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgbXkgJHNldHRlciA9IEdldEF0dHJpYnV0ZVNldHRl
ck5hbWUoJGludGVyZmFjZU5hbWUsICRjbGFzc05hbWUsICRhdHRyaWJ1dGUpOworICAgICAgICAg
ICAgICAgIG15ICRzZXR0ZXIgPSBHZXRBdHRyaWJ1dGVTZXR0ZXJOYW1lKCRpbnRlcmZhY2UsICRh
dHRyaWJ1dGUpOwogICAgICAgICAgICAgICAgIHB1c2goQGhhc2hWYWx1ZTIsICRzZXR0ZXIpOwog
ICAgICAgICAgICAgfQogCkBAIC0xNjA3LDcgKzE2MzAsNyBAQCBzdWIgR2VuZXJhdGVJbXBsZW1l
bnRhdGlvbgogICAgICAgICAgICAgbXkgJG5hbWUgPSAkZnVuY3Rpb24tPnNpZ25hdHVyZS0+bmFt
ZTsKICAgICAgICAgICAgIHB1c2goQGhhc2hLZXlzLCAkbmFtZSk7CiAKLSAgICAgICAgICAgIG15
ICRmdW5jdGlvbk5hbWUgPSBHZXRGdW5jdGlvbk5hbWUoJGNsYXNzTmFtZSwgJGZ1bmN0aW9uKTsK
KyAgICAgICAgICAgIG15ICRmdW5jdGlvbk5hbWUgPSBHZXRGdW5jdGlvbk5hbWUoJGpzQ2xhc3NO
YW1lLCAkZnVuY3Rpb24pOwogICAgICAgICAgICAgcHVzaChAaGFzaFZhbHVlMSwgJGZ1bmN0aW9u
TmFtZSk7CiAKICAgICAgICAgICAgIG15ICRmdW5jdGlvbkxlbmd0aCA9IEdldEZ1bmN0aW9uTGVu
Z3RoKCRmdW5jdGlvbik7CkBAIC0xNjMzLDE2ICsxNjU2LDE2IEBAIHN1YiBHZW5lcmF0ZUltcGxl
bWVudGF0aW9uCiAKICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICRjb2RlR2VuZXJhdG9yLT5H
ZW5lcmF0ZUNvbXBpbGVUaW1lQ2hlY2tGb3JFbnVtc0lmTmVlZGVkKCRpbnRlcmZhY2UpKTsKIAot
ICAgICAgICBteSAkcHJvdG9DbGFzc05hbWUgPSAiJHtjbGFzc05hbWV9UHJvdG90eXBlIjsKLSAg
ICAgICAgR2VuZXJhdGVDb25zdHJ1Y3RvckRlZmluaXRpb25zKFxAaW1wbENvbnRlbnQsICRjbGFz
c05hbWUsICRwcm90b0NsYXNzTmFtZSwgJGludGVyZmFjZU5hbWUsICR2aXNpYmxlSW50ZXJmYWNl
TmFtZSwgJGludGVyZmFjZSk7CisgICAgICAgIG15ICRwcm90b0NsYXNzTmFtZSA9ICIke2pzQ2xh
c3NOYW1lfVByb3RvdHlwZSI7CisgICAgICAgIEdlbmVyYXRlQ29uc3RydWN0b3JEZWZpbml0aW9u
cyhcQGltcGxDb250ZW50LCAkcHJvdG9DbGFzc05hbWUsICRpbnRlcmZhY2UsICR2aXNpYmxlSW50
ZXJmYWNlTmFtZSk7CiAgICAgICAgIGlmICgkaW50ZXJmYWNlLT5leHRlbmRlZEF0dHJpYnV0ZXMt
PnsiTmFtZWRDb25zdHJ1Y3RvciJ9KSB7Ci0gICAgICAgICAgICBHZW5lcmF0ZUNvbnN0cnVjdG9y
RGVmaW5pdGlvbnMoXEBpbXBsQ29udGVudCwgJGNsYXNzTmFtZSwgJHByb3RvQ2xhc3NOYW1lLCAk
aW50ZXJmYWNlTmFtZSwgJGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Ik5hbWVkQ29u
c3RydWN0b3IifSwgJGludGVyZmFjZSwgIkdlbmVyYXRpbmdOYW1lZENvbnN0cnVjdG9yIik7Cisg
ICAgICAgICAgICBHZW5lcmF0ZUNvbnN0cnVjdG9yRGVmaW5pdGlvbnMoXEBpbXBsQ29udGVudCwg
JHByb3RvQ2xhc3NOYW1lLCAkaW50ZXJmYWNlLCAkaW50ZXJmYWNlLT5leHRlbmRlZEF0dHJpYnV0
ZXMtPnsiTmFtZWRDb25zdHJ1Y3RvciJ9LCAiR2VuZXJhdGluZ05hbWVkQ29uc3RydWN0b3IiKTsK
ICAgICAgICAgfQogICAgIH0KIAogICAgICMgLSBBZGQgZnVuY3Rpb25zIGFuZCBjb25zdGFudHMg
dG8gYSBoYXNodGFibGUgZGVmaW5pdGlvbgogICAgIG15ICRoYXNoU2l6ZSA9ICRudW1GdW5jdGlv
bnMgKyAkbnVtQ29uc3RhbnRzOwotICAgIG15ICRoYXNoTmFtZSA9ICRjbGFzc05hbWUgLiAiUHJv
dG90eXBlVGFibGUiOworICAgIG15ICRoYXNoTmFtZSA9ICRqc0NsYXNzTmFtZSAuICJQcm90b3R5
cGVUYWJsZSI7CiAKICAgICBteSBAaGFzaEtleXMgPSAoKTsKICAgICBteSBAaGFzaFZhbHVlMSA9
ICgpOwpAQCAtMTY3MSw3ICsxNjk0LDcgQEAgc3ViIEdlbmVyYXRlSW1wbGVtZW50YXRpb24KICAg
ICAgICAgbXkgJG5hbWUgPSAkZnVuY3Rpb24tPnNpZ25hdHVyZS0+bmFtZTsKICAgICAgICAgcHVz
aChAaGFzaEtleXMsICRuYW1lKTsKIAotICAgICAgICBteSAkZnVuY3Rpb25OYW1lID0gR2V0RnVu
Y3Rpb25OYW1lKCRjbGFzc05hbWUsICRmdW5jdGlvbik7CisgICAgICAgIG15ICRmdW5jdGlvbk5h
bWUgPSBHZXRGdW5jdGlvbk5hbWUoJGpzQ2xhc3NOYW1lLCAkZnVuY3Rpb24pOwogICAgICAgICBw
dXNoKEBoYXNoVmFsdWUxLCAkZnVuY3Rpb25OYW1lKTsKIAogICAgICAgICBteSAkZnVuY3Rpb25M
ZW5ndGggPSBHZXRGdW5jdGlvbkxlbmd0aCgkZnVuY3Rpb24pOwpAQCAtMTY5Niw1NyArMTcxOSw1
NyBAQCBzdWIgR2VuZXJhdGVJbXBsZW1lbnRhdGlvbgogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFwlY29uZGl0aW9uYWxzKTsKIAogICAgIGlmICgkaW50ZXJmYWNlLT5leHRlbmRlZEF0
dHJpYnV0ZXMtPnsiSlNOb1N0YXRpY1RhYmxlcyJ9KSB7Ci0gICAgICAgIHB1c2goQGltcGxDb250
ZW50LCAic3RhdGljIGNvbnN0IEhhc2hUYWJsZSogZ2V0JHtjbGFzc05hbWV9UHJvdG90eXBlVGFi
bGUoRXhlY1N0YXRlKiBleGVjKVxuIik7CisgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAic3Rh
dGljIGNvbnN0IEhhc2hUYWJsZSogZ2V0JHtqc0NsYXNzTmFtZX1Qcm90b3R5cGVUYWJsZShFeGVj
U3RhdGUqIGV4ZWMpXG4iKTsKICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJ7XG4iKTsKLSAg
ICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgcmV0dXJuIGdldEhhc2hUYWJsZUZvckdsb2Jh
bERhdGEoZXhlYy0+dm0oKSwgJiR7Y2xhc3NOYW1lfVByb3RvdHlwZVRhYmxlKTtcbiIpOworICAg
ICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICByZXR1cm4gZ2V0SGFzaFRhYmxlRm9yR2xvYmFs
RGF0YShleGVjLT52bSgpLCAmJHtqc0NsYXNzTmFtZX1Qcm90b3R5cGVUYWJsZSk7XG4iKTsKICAg
ICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJ9XG5cbiIpOwotICAgICAgICBwdXNoKEBpbXBsQ29u
dGVudCwgImNvbnN0IENsYXNzSW5mbyAke2NsYXNzTmFtZX1Qcm90b3R5cGU6OnNfaW5mbyA9IHsg
XCIke3Zpc2libGVJbnRlcmZhY2VOYW1lfVByb3RvdHlwZVwiLCAmQmFzZTo6c19pbmZvLCAwLCBn
ZXQke2NsYXNzTmFtZX1Qcm90b3R5cGVUYWJsZSwgQ1JFQVRFX01FVEhPRF9UQUJMRSgke2NsYXNz
TmFtZX1Qcm90b3R5cGUpIH07XG5cbiIpOworICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgImNv
bnN0IENsYXNzSW5mbyAke2pzQ2xhc3NOYW1lfVByb3RvdHlwZTo6c19pbmZvID0geyBcIiR7dmlz
aWJsZUludGVyZmFjZU5hbWV9UHJvdG90eXBlXCIsICZCYXNlOjpzX2luZm8sIDAsIGdldCR7anND
bGFzc05hbWV9UHJvdG90eXBlVGFibGUsIENSRUFURV9NRVRIT0RfVEFCTEUoJHtqc0NsYXNzTmFt
ZX1Qcm90b3R5cGUpIH07XG5cbiIpOwogICAgIH0gZWxzZSB7Ci0gICAgICAgIHB1c2goQGltcGxD
b250ZW50LCAiY29uc3QgQ2xhc3NJbmZvICR7Y2xhc3NOYW1lfVByb3RvdHlwZTo6c19pbmZvID0g
eyBcIiR7dmlzaWJsZUludGVyZmFjZU5hbWV9UHJvdG90eXBlXCIsICZCYXNlOjpzX2luZm8sICYk
e2NsYXNzTmFtZX1Qcm90b3R5cGVUYWJsZSwgMCwgQ1JFQVRFX01FVEhPRF9UQUJMRSgke2NsYXNz
TmFtZX1Qcm90b3R5cGUpIH07XG5cbiIpOworICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgImNv
bnN0IENsYXNzSW5mbyAke2pzQ2xhc3NOYW1lfVByb3RvdHlwZTo6c19pbmZvID0geyBcIiR7dmlz
aWJsZUludGVyZmFjZU5hbWV9UHJvdG90eXBlXCIsICZCYXNlOjpzX2luZm8sICYke2pzQ2xhc3NO
YW1lfVByb3RvdHlwZVRhYmxlLCAwLCBDUkVBVEVfTUVUSE9EX1RBQkxFKCR7anNDbGFzc05hbWV9
UHJvdG90eXBlKSB9O1xuXG4iKTsKICAgICB9CiAgICAgaWYgKCRpbnRlcmZhY2VOYW1lIG5lICJE
T01XaW5kb3ciICYmICEkaW50ZXJmYWNlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiSXNXb3JrZXJD
b250ZXh0In0pIHsKLSAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJKU09iamVjdCogJHtjbGFz
c05hbWV9UHJvdG90eXBlOjpzZWxmKEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdClcbiIpOworICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIkpTT2JqZWN0KiAk
e2pzQ2xhc3NOYW1lfVByb3RvdHlwZTo6c2VsZihFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QpXG4iKTsKICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJ7XG4i
KTsKLSAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgcmV0dXJuIGdldERPTVByb3RvdHlw
ZTwke2NsYXNzTmFtZX0+KGV4ZWMsIGdsb2JhbE9iamVjdCk7XG4iKTsKKyAgICAgICAgcHVzaChA
aW1wbENvbnRlbnQsICIgICAgcmV0dXJuIGdldERPTVByb3RvdHlwZTwke2pzQ2xhc3NOYW1lfT4o
ZXhlYywgZ2xvYmFsT2JqZWN0KTtcbiIpOwogICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIn1c
blxuIik7CiAgICAgfQogCiAgICAgaWYgKCRudW1Db25zdGFudHMgPiAwIHx8ICRudW1GdW5jdGlv
bnMgPiAwKSB7Ci0gICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiYm9vbCAke2NsYXNzTmFtZX1Q
cm90b3R5cGU6OmdldE93blByb3BlcnR5U2xvdChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhl
YywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90KVxuIik7Cisg
ICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiYm9vbCAke2pzQ2xhc3NOYW1lfVByb3RvdHlwZTo6
Z2V0T3duUHJvcGVydHlTbG90KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0
eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3QpXG4iKTsKICAgICAgICAgcHVz
aChAaW1wbENvbnRlbnQsICJ7XG4iKTsKLSAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAg
JHtjbGFzc05hbWV9UHJvdG90eXBlKiB0aGlzT2JqZWN0ID0ganNDYXN0PCR7Y2xhc3NOYW1lfVBy
b3RvdHlwZSo+KGNlbGwpO1xuIik7CisgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICR7
anNDbGFzc05hbWV9UHJvdG90eXBlKiB0aGlzT2JqZWN0ID0ganNDYXN0PCR7anNDbGFzc05hbWV9
UHJvdG90eXBlKj4oY2VsbCk7XG4iKTsKIAogICAgICAgICBpZiAoJG51bUNvbnN0YW50cyBlcSAw
ICYmICRudW1GdW5jdGlvbnMgZXEgMCkgewogICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQs
ICIgICAgcmV0dXJuIEJhc2U6OmdldE93blByb3BlcnR5U2xvdCh0aGlzT2JqZWN0LCBleGVjLCBw
cm9wZXJ0eU5hbWUsIHNsb3QpO1xuIik7ICAgICAgICAKICAgICAgICAgfSBlbHNpZiAoJG51bUNv
bnN0YW50cyBlcSAwKSB7Ci0gICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICByZXR1
cm4gZ2V0U3RhdGljRnVuY3Rpb25TbG90PEpTT2JqZWN0PihleGVjLCAiIC4gcHJvdG90eXBlSGFz
aFRhYmxlQWNjZXNzb3IoJGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkpTTm9TdGF0
aWNUYWJsZXMifSwgJGNsYXNzTmFtZSkgLiAiLCB0aGlzT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHNs
b3QpO1xuIik7CisgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICByZXR1cm4gZ2V0
U3RhdGljRnVuY3Rpb25TbG90PEpTT2JqZWN0PihleGVjLCAiIC4gcHJvdG90eXBlSGFzaFRhYmxl
QWNjZXNzb3IoJGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkpTTm9TdGF0aWNUYWJs
ZXMifSwgJGpzQ2xhc3NOYW1lKSAuICIsIHRoaXNPYmplY3QsIHByb3BlcnR5TmFtZSwgc2xvdCk7
XG4iKTsKICAgICAgICAgfSBlbHNpZiAoJG51bUZ1bmN0aW9ucyBlcSAwKSB7Ci0gICAgICAgICAg
ICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICByZXR1cm4gZ2V0U3RhdGljVmFsdWVTbG90PCR7Y2xh
c3NOYW1lfVByb3RvdHlwZSwgSlNPYmplY3Q+KGV4ZWMsICIgLiBwcm90b3R5cGVIYXNoVGFibGVB
Y2Nlc3NvcigkaW50ZXJmYWNlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiSlNOb1N0YXRpY1RhYmxl
cyJ9LCAkY2xhc3NOYW1lKSAuICIsIHRoaXNPYmplY3QsIHByb3BlcnR5TmFtZSwgc2xvdCk7XG4i
KTsKKyAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIHJldHVybiBnZXRTdGF0aWNW
YWx1ZVNsb3Q8JHtqc0NsYXNzTmFtZX1Qcm90b3R5cGUsIEpTT2JqZWN0PihleGVjLCAiIC4gcHJv
dG90eXBlSGFzaFRhYmxlQWNjZXNzb3IoJGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57
IkpTTm9TdGF0aWNUYWJsZXMifSwgJGpzQ2xhc3NOYW1lKSAuICIsIHRoaXNPYmplY3QsIHByb3Bl
cnR5TmFtZSwgc2xvdCk7XG4iKTsKICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIHB1c2go
QGltcGxDb250ZW50LCAiICAgIHJldHVybiBnZXRTdGF0aWNQcm9wZXJ0eVNsb3Q8JHtjbGFzc05h
bWV9UHJvdG90eXBlLCBKU09iamVjdD4oZXhlYywgIiAuIHByb3RvdHlwZUhhc2hUYWJsZUFjY2Vz
c29yKCRpbnRlcmZhY2UtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJKU05vU3RhdGljVGFibGVzIn0s
ICRjbGFzc05hbWUpIC4gIiwgdGhpc09iamVjdCwgcHJvcGVydHlOYW1lLCBzbG90KTtcbiIpOwor
ICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgcmV0dXJuIGdldFN0YXRpY1Byb3Bl
cnR5U2xvdDwke2pzQ2xhc3NOYW1lfVByb3RvdHlwZSwgSlNPYmplY3Q+KGV4ZWMsICIgLiBwcm90
b3R5cGVIYXNoVGFibGVBY2Nlc3NvcigkaW50ZXJmYWNlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsi
SlNOb1N0YXRpY1RhYmxlcyJ9LCAkanNDbGFzc05hbWUpIC4gIiwgdGhpc09iamVjdCwgcHJvcGVy
dHlOYW1lLCBzbG90KTtcbiIpOwogICAgICAgICB9CiAgICAgICAgIHB1c2goQGltcGxDb250ZW50
LCAifVxuXG4iKTsKIAotICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgImJvb2wgJHtjbGFzc05h
bWV9UHJvdG90eXBlOjpnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSlNPYmplY3QqIG9iamVjdCwg
RXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eURlc2Ny
aXB0b3ImIGRlc2NyaXB0b3IpXG4iKTsKKyAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJib29s
ICR7anNDbGFzc05hbWV9UHJvdG90eXBlOjpnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSlNPYmpl
Y3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQ
cm9wZXJ0eURlc2NyaXB0b3ImIGRlc2NyaXB0b3IpXG4iKTsKICAgICAgICAgcHVzaChAaW1wbENv
bnRlbnQsICJ7XG4iKTsKLSAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgJHtjbGFzc05h
bWV9UHJvdG90eXBlKiB0aGlzT2JqZWN0ID0ganNDYXN0PCR7Y2xhc3NOYW1lfVByb3RvdHlwZSo+
KG9iamVjdCk7XG4iKTsKKyAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgJHtqc0NsYXNz
TmFtZX1Qcm90b3R5cGUqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8JHtqc0NsYXNzTmFtZX1Qcm90b3R5
cGUqPihvYmplY3QpO1xuIik7CiAKICAgICAgICAgaWYgKCRudW1Db25zdGFudHMgZXEgMCAmJiAk
bnVtRnVuY3Rpb25zIGVxIDApIHsKICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAg
IHJldHVybiBCYXNlOjpnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IodGhpc09iamVjdCwgZXhlYywg
cHJvcGVydHlOYW1lLCBkZXNjcmlwdG9yKTtcbiIpOyAgICAgICAgCiAgICAgICAgIH0gZWxzaWYg
KCRudW1Db25zdGFudHMgZXEgMCkgewotICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIg
ICAgcmV0dXJuIGdldFN0YXRpY0Z1bmN0aW9uRGVzY3JpcHRvcjxKU09iamVjdD4oZXhlYywgIiAu
IHByb3RvdHlwZUhhc2hUYWJsZUFjY2Vzc29yKCRpbnRlcmZhY2UtPmV4dGVuZGVkQXR0cmlidXRl
cy0+eyJKU05vU3RhdGljVGFibGVzIn0sICRjbGFzc05hbWUpIC4gIiwgdGhpc09iamVjdCwgcHJv
cGVydHlOYW1lLCBkZXNjcmlwdG9yKTtcbiIpOworICAgICAgICAgICAgcHVzaChAaW1wbENvbnRl
bnQsICIgICAgcmV0dXJuIGdldFN0YXRpY0Z1bmN0aW9uRGVzY3JpcHRvcjxKU09iamVjdD4oZXhl
YywgIiAuIHByb3RvdHlwZUhhc2hUYWJsZUFjY2Vzc29yKCRpbnRlcmZhY2UtPmV4dGVuZGVkQXR0
cmlidXRlcy0+eyJKU05vU3RhdGljVGFibGVzIn0sICRqc0NsYXNzTmFtZSkgLiAiLCB0aGlzT2Jq
ZWN0LCBwcm9wZXJ0eU5hbWUsIGRlc2NyaXB0b3IpO1xuIik7CiAgICAgICAgIH0gZWxzaWYgKCRu
dW1GdW5jdGlvbnMgZXEgMCkgewotICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAg
cmV0dXJuIGdldFN0YXRpY1ZhbHVlRGVzY3JpcHRvcjwke2NsYXNzTmFtZX1Qcm90b3R5cGUsIEpT
T2JqZWN0PihleGVjLCAiIC4gcHJvdG90eXBlSGFzaFRhYmxlQWNjZXNzb3IoJGludGVyZmFjZS0+
ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkpTTm9TdGF0aWNUYWJsZXMifSwgJGNsYXNzTmFtZSkgLiAi
LCB0aGlzT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIGRlc2NyaXB0b3IpO1xuIik7CisgICAgICAgICAg
ICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICByZXR1cm4gZ2V0U3RhdGljVmFsdWVEZXNjcmlwdG9y
PCR7anNDbGFzc05hbWV9UHJvdG90eXBlLCBKU09iamVjdD4oZXhlYywgIiAuIHByb3RvdHlwZUhh
c2hUYWJsZUFjY2Vzc29yKCRpbnRlcmZhY2UtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJKU05vU3Rh
dGljVGFibGVzIn0sICRqc0NsYXNzTmFtZSkgLiAiLCB0aGlzT2JqZWN0LCBwcm9wZXJ0eU5hbWUs
IGRlc2NyaXB0b3IpO1xuIik7CiAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBwdXNoKEBp
bXBsQ29udGVudCwgIiAgICByZXR1cm4gZ2V0U3RhdGljUHJvcGVydHlEZXNjcmlwdG9yPCR7Y2xh
c3NOYW1lfVByb3RvdHlwZSwgSlNPYmplY3Q+KGV4ZWMsICIgLiBwcm90b3R5cGVIYXNoVGFibGVB
Y2Nlc3NvcigkaW50ZXJmYWNlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiSlNOb1N0YXRpY1RhYmxl
cyJ9LCAkY2xhc3NOYW1lKSAuICIsIHRoaXNPYmplY3QsIHByb3BlcnR5TmFtZSwgZGVzY3JpcHRv
cik7XG4iKTsKKyAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIHJldHVybiBnZXRT
dGF0aWNQcm9wZXJ0eURlc2NyaXB0b3I8JHtqc0NsYXNzTmFtZX1Qcm90b3R5cGUsIEpTT2JqZWN0
PihleGVjLCAiIC4gcHJvdG90eXBlSGFzaFRhYmxlQWNjZXNzb3IoJGludGVyZmFjZS0+ZXh0ZW5k
ZWRBdHRyaWJ1dGVzLT57IkpTTm9TdGF0aWNUYWJsZXMifSwgJGpzQ2xhc3NOYW1lKSAuICIsIHRo
aXNPYmplY3QsIHByb3BlcnR5TmFtZSwgZGVzY3JpcHRvcik7XG4iKTsKICAgICAgICAgfQogICAg
ICAgICBwdXNoKEBpbXBsQ29udGVudCwgIn1cblxuIik7CiAgICAgfQogCiAgICAgaWYgKCRpbnRl
cmZhY2UtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJKU0N1c3RvbU5hbWVkR2V0dGVyT25Qcm90b3R5
cGUifSkgewotICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgInZvaWQgJHtjbGFzc05hbWV9UHJv
dG90eXBlOjpwdXQoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBw
cm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIFB1dFByb3BlcnR5U2xvdCYgc2xvdClcbiIpOwor
ICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgInZvaWQgJHtqc0NsYXNzTmFtZX1Qcm90b3R5cGU6
OnB1dChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5
TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgUHV0UHJvcGVydHlTbG90JiBzbG90KVxuIik7CiAgICAgICAg
IHB1c2goQGltcGxDb250ZW50LCAie1xuIik7Ci0gICAgICAgIHB1c2goQGltcGxDb250ZW50LCAi
ICAgICR7Y2xhc3NOYW1lfVByb3RvdHlwZSogdGhpc09iamVjdCA9IGpzQ2FzdDwke2NsYXNzTmFt
ZX1Qcm90b3R5cGUqPihjZWxsKTtcbiIpOworICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAg
ICAke2pzQ2xhc3NOYW1lfVByb3RvdHlwZSogdGhpc09iamVjdCA9IGpzQ2FzdDwke2pzQ2xhc3NO
YW1lfVByb3RvdHlwZSo+KGNlbGwpO1xuIik7CiAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAi
ICAgIGlmICh0aGlzT2JqZWN0LT5wdXREZWxlZ2F0ZShleGVjLCBwcm9wZXJ0eU5hbWUsIHZhbHVl
LCBzbG90KSlcbiIpOwogICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAgICAgcmV0dXJu
O1xuIik7CiAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIEJhc2U6OnB1dCh0aGlzT2Jq
ZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBzbG90KTtcbiIpOwpAQCAtMTc1NSwyNyAr
MTc3OCwyNyBAQCBzdWIgR2VuZXJhdGVJbXBsZW1lbnRhdGlvbgogCiAgICAgIyAtIEluaXRpYWxp
emUgc3RhdGljIENsYXNzSW5mbyBvYmplY3QKICAgICBpZiAoJG51bUF0dHJpYnV0ZXMgPiAwICYm
ICRpbnRlcmZhY2UtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJKU05vU3RhdGljVGFibGVzIn0pIHsK
LSAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJzdGF0aWMgY29uc3QgSGFzaFRhYmxlKiBnZXQk
e2NsYXNzTmFtZX1UYWJsZShFeGVjU3RhdGUqIGV4ZWMpXG4iKTsKKyAgICAgICAgcHVzaChAaW1w
bENvbnRlbnQsICJzdGF0aWMgY29uc3QgSGFzaFRhYmxlKiBnZXQke2pzQ2xhc3NOYW1lfVRhYmxl
KEV4ZWNTdGF0ZSogZXhlYylcbiIpOwogICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIntcbiIp
OwotICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICByZXR1cm4gZ2V0SGFzaFRhYmxlRm9y
R2xvYmFsRGF0YShleGVjLT52bSgpLCAmJHtjbGFzc05hbWV9VGFibGUpO1xuIik7CisgICAgICAg
IHB1c2goQGltcGxDb250ZW50LCAiICAgIHJldHVybiBnZXRIYXNoVGFibGVGb3JHbG9iYWxEYXRh
KGV4ZWMtPnZtKCksICYke2pzQ2xhc3NOYW1lfVRhYmxlKTtcbiIpOwogICAgICAgICBwdXNoKEBp
bXBsQ29udGVudCwgIn1cblxuIik7CiAgICAgfQogCi0gICAgcHVzaChAaW1wbENvbnRlbnQsICJj
b25zdCBDbGFzc0luZm8gJGNsYXNzTmFtZSIgLiAiOjpzX2luZm8gPSB7IFwiJHt2aXNpYmxlSW50
ZXJmYWNlTmFtZX1cIiwgJkJhc2U6OnNfaW5mbywgIik7CisgICAgcHVzaChAaW1wbENvbnRlbnQs
ICJjb25zdCBDbGFzc0luZm8gJGpzQ2xhc3NOYW1lIiAuICI6OnNfaW5mbyA9IHsgXCIke3Zpc2li
bGVJbnRlcmZhY2VOYW1lfVwiLCAmQmFzZTo6c19pbmZvLCAiKTsKIAogICAgIGlmICgkbnVtQXR0
cmlidXRlcyA+IDAgJiYgISRpbnRlcmZhY2UtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJKU05vU3Rh
dGljVGFibGVzIn0pIHsKLSAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICImJHtjbGFzc05hbWV9
VGFibGUiKTsKKyAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICImJHtqc0NsYXNzTmFtZX1UYWJs
ZSIpOwogICAgIH0gZWxzZSB7CiAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiMCIpOwogICAg
IH0KICAgICBpZiAoJG51bUF0dHJpYnV0ZXMgPiAwICYmICRpbnRlcmZhY2UtPmV4dGVuZGVkQXR0
cmlidXRlcy0+eyJKU05vU3RhdGljVGFibGVzIn0pIHsKLSAgICAgICAgcHVzaChAaW1wbENvbnRl
bnQsICIsIGdldCR7Y2xhc3NOYW1lfVRhYmxlICIpOworICAgICAgICBwdXNoKEBpbXBsQ29udGVu
dCwgIiwgZ2V0JHtqc0NsYXNzTmFtZX1UYWJsZSAiKTsKICAgICB9IGVsc2UgewogICAgICAgICBw
dXNoKEBpbXBsQ29udGVudCwgIiwgMCAiKTsKICAgICB9Ci0gICAgcHVzaChAaW1wbENvbnRlbnQs
ICIsIENSRUFURV9NRVRIT0RfVEFCTEUoJGNsYXNzTmFtZSkgfTtcblxuIik7CisgICAgcHVzaChA
aW1wbENvbnRlbnQsICIsIENSRUFURV9NRVRIT0RfVEFCTEUoJGpzQ2xhc3NOYW1lKSB9O1xuXG4i
KTsKIAotICAgIG15ICRpbXBsVHlwZSA9ICRpbnRlcmZhY2VOYW1lOworICAgIG15ICRpbXBsVHlw
ZSA9ICRpbXBsQ2xhc3NOYW1lOwogICAgIG15ICgkc3ZnUHJvcGVydHlUeXBlLCAkc3ZnTGlzdFBy
b3BlcnR5VHlwZSwgJHN2Z05hdGl2ZVR5cGUpID0gR2V0U1ZHUHJvcGVydHlUeXBlcygkaW1wbFR5
cGUpOwogICAgICRpbXBsVHlwZSA9ICRzdmdOYXRpdmVUeXBlIGlmICRzdmdOYXRpdmVUeXBlOwog
CkBAIC0xNzg2LDE4ICsxODA5LDE4IEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uCiAgICAg
IyBDb25zdHJ1Y3RvcgogICAgIGlmICgkaW50ZXJmYWNlTmFtZSBlcSAiRE9NV2luZG93Iikgewog
ICAgICAgICBBZGRJbmNsdWRlc0ZvclR5cGVJbkltcGwoIkpTRE9NV2luZG93U2hlbGwiKTsKLSAg
ICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIke2NsYXNzTmFtZX06OiRjbGFzc05hbWUoVk0mIHZt
LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgUGFzc1JlZlB0cjwkaW1wbFR5cGU+IGltcGwsIEpTRE9N
V2luZG93U2hlbGwqIHNoZWxsKVxuIik7CisgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiJHtq
c0NsYXNzTmFtZX06OiRqc0NsYXNzTmFtZShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBQ
YXNzUmVmUHRyPCRpbXBsVHlwZT4gaW1wbCwgSlNET01XaW5kb3dTaGVsbCogc2hlbGwpXG4iKTsK
ICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgOiAkcGFyZW50Q2xhc3NOYW1lKHZtLCBz
dHJ1Y3R1cmUsIGltcGwsIHNoZWxsKVxuIik7CiAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAi
e1xuIik7CiAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAifVxuXG4iKTsKICAgICB9IGVsc2lm
ICgkaW50ZXJmYWNlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiSXNXb3JrZXJDb250ZXh0In0pIHsK
ICAgICAgICAgQWRkSW5jbHVkZXNGb3JUeXBlSW5JbXBsKCRpbnRlcmZhY2VOYW1lKTsKLSAgICAg
ICAgcHVzaChAaW1wbENvbnRlbnQsICIke2NsYXNzTmFtZX06OiRjbGFzc05hbWUoVk0mIHZtLCBT
dHJ1Y3R1cmUqIHN0cnVjdHVyZSwgUGFzc1JlZlB0cjwkaW1wbFR5cGU+IGltcGwpXG4iKTsKKyAg
ICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIke2pzQ2xhc3NOYW1lfTo6JGpzQ2xhc3NOYW1lKFZN
JiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFBhc3NSZWZQdHI8JGltcGxUeXBlPiBpbXBsKVxu
Iik7CiAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIDogJHBhcmVudENsYXNzTmFtZSh2
bSwgc3RydWN0dXJlLCBpbXBsKVxuIik7CiAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAie1xu
Iik7CiAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAifVxuXG4iKTsKICAgICB9IGVsc2Ugewot
ICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiR7Y2xhc3NOYW1lfTo6JGNsYXNzTmFtZShTdHJ1
Y3R1cmUqIHN0cnVjdHVyZSwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUGFzc1Jl
ZlB0cjwkaW1wbFR5cGU+IGltcGwpXG4iKTsKKyAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIk
e2pzQ2xhc3NOYW1lfTo6JGpzQ2xhc3NOYW1lKFN0cnVjdHVyZSogc3RydWN0dXJlLCBKU0RPTUds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQYXNzUmVmUHRyPCRpbXBsVHlwZT4gaW1wbClcbiIp
OwogICAgICAgICBpZiAoJGhhc1BhcmVudCkgewogICAgICAgICAgICAgcHVzaChAaW1wbENvbnRl
bnQsICIgICAgOiAkcGFyZW50Q2xhc3NOYW1lKHN0cnVjdHVyZSwgZ2xvYmFsT2JqZWN0LCBpbXBs
KVxuIik7CiAgICAgICAgIH0gZWxzZSB7CkBAIC0xODA3LDExICsxODMwLDExIEBAIHN1YiBHZW5l
cmF0ZUltcGxlbWVudGF0aW9uCiAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAie1xuIik7CiAg
ICAgICAgIHB1c2goQGltcGxDb250ZW50LCAifVxuXG4iKTsKIAotICAgICAgICBwdXNoKEBpbXBs
Q29udGVudCwgInZvaWQgJHtjbGFzc05hbWV9OjpmaW5pc2hDcmVhdGlvbihWTSYgdm0pXG4iKTsK
KyAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJ2b2lkICR7anNDbGFzc05hbWV9OjpmaW5pc2hD
cmVhdGlvbihWTSYgdm0pXG4iKTsKICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJ7XG4iKTsK
ICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24odm0p
O1xuIik7CiAgICAgICAgIGlmICgkY29kZUdlbmVyYXRvci0+SXNUeXBlZEFycmF5VHlwZSgkaW1w
bFR5cGUpIGFuZCAoJGltcGxUeXBlIG5lICJBcnJheUJ1ZmZlclZpZXciKSBhbmQgKCRpbXBsVHlw
ZSBuZSAiQXJyYXlCdWZmZXIiKSkgewotICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIg
ICAgVHlwZWRBcnJheURlc2NyaXB0b3IgZGVzY3JpcHRvcigmJHtjbGFzc05hbWV9OjpzX2luZm8s
IE9CSkVDVF9PRkZTRVRPRigke2NsYXNzTmFtZX0sIG1fc3RvcmFnZSksIE9CSkVDVF9PRkZTRVRP
Rigke2NsYXNzTmFtZX0sIG1fc3RvcmFnZUxlbmd0aCkpO1xuIik7CisgICAgICAgICAgICBwdXNo
KEBpbXBsQ29udGVudCwgIiAgICBUeXBlZEFycmF5RGVzY3JpcHRvciBkZXNjcmlwdG9yKCYke2pz
Q2xhc3NOYW1lfTo6c19pbmZvLCBPQkpFQ1RfT0ZGU0VUT0YoJHtqc0NsYXNzTmFtZX0sIG1fc3Rv
cmFnZSksIE9CSkVDVF9PRkZTRVRPRigke2pzQ2xhc3NOYW1lfSwgbV9zdG9yYWdlTGVuZ3RoKSk7
XG4iKTsKICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIHZtLnJlZ2lzdGVyVHlw
ZWRBcnJheURlc2NyaXB0b3IoaW1wbCgpLCBkZXNjcmlwdG9yKTtcbiIpOwogICAgICAgICAgICAg
cHVzaChAaW1wbENvbnRlbnQsICIgICAgbV9zdG9yYWdlID0gaW1wbCgpLT5kYXRhKCk7XG4iKTsK
ICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIG1fc3RvcmFnZUxlbmd0aCA9IGlt
cGwoKS0+bGVuZ3RoKCk7XG4iKTsKQEAgLTE4MjEsMTMgKzE4NDQsMTMgQEAgc3ViIEdlbmVyYXRl
SW1wbGVtZW50YXRpb24KICAgICB9CiAKICAgICBpZiAoISRpbnRlcmZhY2UtPmV4dGVuZGVkQXR0
cmlidXRlcy0+eyJFeHRlbmRzRE9NR2xvYmFsT2JqZWN0In0pIHsKLSAgICAgICAgcHVzaChAaW1w
bENvbnRlbnQsICJKU09iamVjdCogJHtjbGFzc05hbWV9OjpjcmVhdGVQcm90b3R5cGUoRXhlY1N0
YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KVxuIik7CisgICAgICAgIHB1
c2goQGltcGxDb250ZW50LCAiSlNPYmplY3QqICR7anNDbGFzc05hbWV9OjpjcmVhdGVQcm90b3R5
cGUoRXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KVxuIik7CiAg
ICAgICAgIHB1c2goQGltcGxDb250ZW50LCAie1xuIik7CiAgICAgICAgIGlmICgkaGFzUGFyZW50
ICYmICRwYXJlbnRDbGFzc05hbWUgbmUgIkpTQzo6RE9NTm9kZUZpbHRlciIpIHsKLSAgICAgICAg
ICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIHJldHVybiAke2NsYXNzTmFtZX1Qcm90b3R5cGU6
OmNyZWF0ZShleGVjLT52bSgpLCBnbG9iYWxPYmplY3QsICR7Y2xhc3NOYW1lfVByb3RvdHlwZTo6
Y3JlYXRlU3RydWN0dXJlKGV4ZWMtPnZtKCksIGdsb2JhbE9iamVjdCwgJHtwYXJlbnRDbGFzc05h
bWV9UHJvdG90eXBlOjpzZWxmKGV4ZWMsIGdsb2JhbE9iamVjdCkpKTtcbiIpOworICAgICAgICAg
ICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgcmV0dXJuICR7anNDbGFzc05hbWV9UHJvdG90eXBl
OjpjcmVhdGUoZXhlYy0+dm0oKSwgZ2xvYmFsT2JqZWN0LCAke2pzQ2xhc3NOYW1lfVByb3RvdHlw
ZTo6Y3JlYXRlU3RydWN0dXJlKGV4ZWMtPnZtKCksIGdsb2JhbE9iamVjdCwgJHtwYXJlbnRDbGFz
c05hbWV9UHJvdG90eXBlOjpzZWxmKGV4ZWMsIGdsb2JhbE9iamVjdCkpKTtcbiIpOwogICAgICAg
ICB9IGVsc2UgewogICAgICAgICAgICAgbXkgJHByb3RvdHlwZSA9ICRpbnRlcmZhY2UtPmlzRXhj
ZXB0aW9uID8gImVycm9yUHJvdG90eXBlIiA6ICJvYmplY3RQcm90b3R5cGUiOwotICAgICAgICAg
ICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgcmV0dXJuICR7Y2xhc3NOYW1lfVByb3RvdHlwZTo6
Y3JlYXRlKGV4ZWMtPnZtKCksIGdsb2JhbE9iamVjdCwgJHtjbGFzc05hbWV9UHJvdG90eXBlOjpj
cmVhdGVTdHJ1Y3R1cmUoZ2xvYmFsT2JqZWN0LT52bSgpLCBnbG9iYWxPYmplY3QsIGdsb2JhbE9i
amVjdC0+JHtwcm90b3R5cGV9KCkpKTtcbiIpOworICAgICAgICAgICAgcHVzaChAaW1wbENvbnRl
bnQsICIgICAgcmV0dXJuICR7anNDbGFzc05hbWV9UHJvdG90eXBlOjpjcmVhdGUoZXhlYy0+dm0o
KSwgZ2xvYmFsT2JqZWN0LCAke2pzQ2xhc3NOYW1lfVByb3RvdHlwZTo6Y3JlYXRlU3RydWN0dXJl
KGdsb2JhbE9iamVjdC0+dm0oKSwgZ2xvYmFsT2JqZWN0LCBnbG9iYWxPYmplY3QtPiR7cHJvdG90
eXBlfSgpKSk7XG4iKTsKICAgICAgICAgfQogICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIn1c
blxuIik7CiAgICAgfQpAQCAtMTgzOSwxNSArMTg2MiwxNSBAQCBzdWIgR2VuZXJhdGVJbXBsZW1l
bnRhdGlvbgogICAgICAgICAjIGFkZGVkIGJhY2sgdG8gYXZvaWQgbGVha2luZyB3aGlsZSB3ZSBm
aWd1cmUgb3V0IHdoeSB0aGUKICAgICAgICAgIyBmaW5hbGl6ZXJzIGFyZSBub3QgYWx3YXlzIGdl
dHRpbmcgY2FsbGVkLiBUaGUgd29yayB0cmFja2luZwogICAgICAgICAjIHRoZSBmaW5hbGl6ZXIg
aXNzdWUgaXMgYmVpbmcgdHJhY2tlZCBpbiBodHRwOi8vd2Via2l0Lm9yZy9iLzc1NDUxCi0gICAg
ICAgIHB1c2goQGltcGxDb250ZW50LCAidm9pZCAke2NsYXNzTmFtZX06OmRlc3Ryb3koSlNDOjpK
U0NlbGwqIGNlbGwpXG4iKTsKKyAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJ2b2lkICR7anND
bGFzc05hbWV9OjpkZXN0cm95KEpTQzo6SlNDZWxsKiBjZWxsKVxuIik7CiAgICAgICAgIHB1c2go
QGltcGxDb250ZW50LCAie1xuIik7Ci0gICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICR7
Y2xhc3NOYW1lfSogdGhpc09iamVjdCA9IHN0YXRpY19jYXN0PCR7Y2xhc3NOYW1lfSo+KGNlbGwp
O1xuIik7Ci0gICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIHRoaXNPYmplY3QtPiR7Y2xh
c3NOYW1lfTo6fiR7Y2xhc3NOYW1lfSgpO1xuIik7CisgICAgICAgIHB1c2goQGltcGxDb250ZW50
LCAiICAgICR7anNDbGFzc05hbWV9KiB0aGlzT2JqZWN0ID0gc3RhdGljX2Nhc3Q8JHtqc0NsYXNz
TmFtZX0qPihjZWxsKTtcbiIpOworICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICB0aGlz
T2JqZWN0LT4ke2pzQ2xhc3NOYW1lfTo6fiR7anNDbGFzc05hbWV9KCk7XG4iKTsKICAgICAgICAg
cHVzaChAaW1wbENvbnRlbnQsICJ9XG5cbiIpOwogCiAgICAgICAgICMgV2UgYWxzbyBuZWVkIGEg
ZGVzdHJ1Y3RvciBmb3IgdGhlIGFsbG9jYXRlQ2VsbCB0byB3b3JrIHByb3Blcmx5IHdpdGggdGhl
IGRlc3RydWN0b3ItZnJlZSBwYXJ0IG9mIHRoZSBoZWFwLgogICAgICAgICAjIE90aGVyd2lzZSwg
dGhlc2UgZGVzdHJveSBmdW5jdGlvbnMvZGVzdHJ1Y3RvcnMgd29uJ3QgZ2V0IGNhbGxlZC4KLSAg
ICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIke2NsYXNzTmFtZX06On4ke2NsYXNzTmFtZX0oKVxu
Iik7CisgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiJHtqc0NsYXNzTmFtZX06On4ke2pzQ2xh
c3NOYW1lfSgpXG4iKTsKICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJ7XG4iKTsKICAgICAg
ICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgcmVsZWFzZUltcGxJZk5vdE51bGwoKTtcbiIpOwog
ICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIn1cblxuIik7CkBAIC0xODY1LDI2ICsxODg4LDI2
IEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uCiAgICAgIyBBdHRyaWJ1dGVzCiAgICAgaWYg
KCRoYXNHZXR0ZXIpIHsKICAgICAgICAgaWYgKCEkaW50ZXJmYWNlLT5leHRlbmRlZEF0dHJpYnV0
ZXMtPnsiSlNJbmxpbmVHZXRPd25Qcm9wZXJ0eVNsb3QifSAmJiAhJGludGVyZmFjZS0+ZXh0ZW5k
ZWRBdHRyaWJ1dGVzLT57IkN1c3RvbUdldE93blByb3BlcnR5U2xvdCJ9KSB7Ci0gICAgICAgICAg
ICBwdXNoKEBpbXBsQ29udGVudCwgImJvb2wgJHtjbGFzc05hbWV9OjpnZXRPd25Qcm9wZXJ0eVNs
b3QoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5h
bWUsIFByb3BlcnR5U2xvdCYgc2xvdClcbiIpOworICAgICAgICAgICAgcHVzaChAaW1wbENvbnRl
bnQsICJib29sICR7anNDbGFzc05hbWV9OjpnZXRPd25Qcm9wZXJ0eVNsb3QoSlNDZWxsKiBjZWxs
LCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xv
dCYgc2xvdClcbiIpOwogICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJ7XG4iKTsKLSAg
ICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICR7Y2xhc3NOYW1lfSogdGhpc09iamVj
dCA9IGpzQ2FzdDwke2NsYXNzTmFtZX0qPihjZWxsKTtcbiIpOworICAgICAgICAgICAgcHVzaChA
aW1wbENvbnRlbnQsICIgICAgJHtqc0NsYXNzTmFtZX0qIHRoaXNPYmplY3QgPSBqc0Nhc3Q8JHtq
c0NsYXNzTmFtZX0qPihjZWxsKTtcbiIpOwogICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQs
ICIgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyh0aGlzT2JqZWN0LCAmc19pbmZvKTtcbiIp
OwotICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsIEdlbmVyYXRlR2V0T3duUHJvcGVydHlT
bG90Qm9keSgkaW50ZXJmYWNlLCAkaW50ZXJmYWNlTmFtZSwgJGNsYXNzTmFtZSwgJG51bUF0dHJp
YnV0ZXMgPiAwLCAwKSk7CisgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgR2VuZXJhdGVH
ZXRPd25Qcm9wZXJ0eVNsb3RCb2R5KCRpbnRlcmZhY2UsICRqc0NsYXNzTmFtZSwgJG51bUF0dHJp
YnV0ZXMgPiAwLCAwKSk7CiAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIn1cblxuIik7
Ci0gICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgImJvb2wgJHtjbGFzc05hbWV9OjpnZXRP
d25Qcm9wZXJ0eURlc2NyaXB0b3IoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBQ
cm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eURlc2NyaXB0b3ImIGRlc2NyaXB0b3Ip
XG4iKTsKKyAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiYm9vbCAke2pzQ2xhc3NOYW1l
fTo6Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSog
ZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlEZXNjcmlwdG9yJiBkZXNj
cmlwdG9yKVxuIik7CiAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIntcbiIpOwotICAg
ICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgJHtjbGFzc05hbWV9KiB0aGlzT2JqZWN0
ID0ganNDYXN0PCR7Y2xhc3NOYW1lfSo+KG9iamVjdCk7XG4iKTsKKyAgICAgICAgICAgIHB1c2go
QGltcGxDb250ZW50LCAiICAgICR7anNDbGFzc05hbWV9KiB0aGlzT2JqZWN0ID0ganNDYXN0PCR7
anNDbGFzc05hbWV9Kj4ob2JqZWN0KTtcbiIpOwogICAgICAgICAgICAgcHVzaChAaW1wbENvbnRl
bnQsICIgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyh0aGlzT2JqZWN0LCAmc19pbmZvKTtc
biIpOwotICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsIEdlbmVyYXRlR2V0T3duUHJvcGVy
dHlEZXNjcmlwdG9yQm9keSgkaW50ZXJmYWNlLCAkaW50ZXJmYWNlTmFtZSwgJGNsYXNzTmFtZSwg
JG51bUF0dHJpYnV0ZXMgPiAwLCAwKSk7CisgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwg
R2VuZXJhdGVHZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JCb2R5KCRpbnRlcmZhY2UsICRqc0NsYXNz
TmFtZSwgJG51bUF0dHJpYnV0ZXMgPiAwLCAwKSk7CiAgICAgICAgICAgICBwdXNoKEBpbXBsQ29u
dGVudCwgIn1cblxuIik7CiAgICAgICAgIH0KIAogICAgICAgICBpZiAoJGludGVyZmFjZS0+ZXh0
ZW5kZWRBdHRyaWJ1dGVzLT57IkluZGV4ZWRHZXR0ZXIifSB8fCAkaW50ZXJmYWNlLT5leHRlbmRl
ZEF0dHJpYnV0ZXMtPnsiTnVtZXJpY0luZGV4ZWRHZXR0ZXIifQogICAgICAgICAgICAgICAgIHx8
ICRpbnRlcmZhY2UtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJOYW1lZEdldHRlciJ9IHx8ICRpbnRl
cmZhY2UtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJDdXN0b21OYW1lZEdldHRlciJ9CiAgICAgICAg
ICAgICAgICAgfHwgJGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkpTQ3VzdG9tR2V0
T3duUHJvcGVydHlTbG90QW5kRGVzY3JpcHRvciJ9KSB7Ci0gICAgICAgICAgICBwdXNoKEBpbXBs
Q29udGVudCwgImJvb2wgJHtjbGFzc05hbWV9OjpnZXRPd25Qcm9wZXJ0eVNsb3RCeUluZGV4KEpT
Q2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCB1bnNpZ25lZCBpbmRleCwgUHJvcGVydHlTbG90
JiBzbG90KVxuIik7CisgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgImJvb2wgJHtqc0Ns
YXNzTmFtZX06OmdldE93blByb3BlcnR5U2xvdEJ5SW5kZXgoSlNDZWxsKiBjZWxsLCBFeGVjU3Rh
dGUqIGV4ZWMsIHVuc2lnbmVkIGluZGV4LCBQcm9wZXJ0eVNsb3QmIHNsb3QpXG4iKTsKICAgICAg
ICAgICAgIHB1c2goQGltcGxDb250ZW50LCAie1xuIik7Ci0gICAgICAgICAgICBwdXNoKEBpbXBs
Q29udGVudCwgIiAgICAke2NsYXNzTmFtZX0qIHRoaXNPYmplY3QgPSBqc0Nhc3Q8JHtjbGFzc05h
bWV9Kj4oY2VsbCk7XG4iKTsKKyAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICR7
anNDbGFzc05hbWV9KiB0aGlzT2JqZWN0ID0ganNDYXN0PCR7anNDbGFzc05hbWV9Kj4oY2VsbCk7
XG4iKTsKICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIEFTU0VSVF9HQ19PQkpF
Q1RfSU5IRVJJVFModGhpc09iamVjdCwgJnNfaW5mbyk7XG4iKTsKIAogICAgICAgICAgICAgIyBT
aW5rIHRoZSBpbnQtdG8tc3RyaW5nIGNvbnZlcnNpb24gdGhhdCBoYXBwZW5zIHdoZW4gd2UgY3Jl
YXRlIGEgUHJvcGVydHlOYW1lCkBAIC0xOTAyLDcgKzE5MjUsNyBAQCBzdWIgR2VuZXJhdGVJbXBs
ZW1lbnRhdGlvbgogICAgICAgICAgICAgICAgIGlmIChJbmRleEdldHRlclJldHVybnNTdHJpbmdz
KCRpbnRlcmZhY2VOYW1lKSkgewogICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVu
dCwgIiAgICBpZiAoaW5kZXggPD0gTUFYX0FSUkFZX0lOREVYKSB7XG4iKTsKICAgICAgICAgICAg
ICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAg
ICBpZiAoaW5kZXggPCBzdGF0aWNfY2FzdDwkaW50ZXJmYWNlTmFtZSo+KHRoaXNPYmplY3QtPmlt
cGwoKSktPmxlbmd0aCgpKSB7XG4iKTsKKyAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENv
bnRlbnQsICIgICAgaWYgKGluZGV4IDwgc3RhdGljX2Nhc3Q8JGltcGxDbGFzc05hbWUqPih0aGlz
T2JqZWN0LT5pbXBsKCkpLT5sZW5ndGgoKSkge1xuIik7CiAgICAgICAgICAgICAgICAgfQogICAg
ICAgICAgICAgICAgIGlmICgkaW50ZXJmYWNlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiTnVtZXJp
Y0luZGV4ZWRHZXR0ZXIifSkgewogICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVu
dCwgIiAgICAgICAgc2xvdC5zZXRWYWx1ZSh0aGlzT2JqZWN0LT5nZXRCeUluZGV4KGV4ZWMsIGlu
ZGV4KSk7XG4iKTsKQEAgLTE5MTUsNyArMTkzOCw3IEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0
aW9uCiAKICAgICAgICAgICAgIGlmICgkaW50ZXJmYWNlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsi
TmFtZWRHZXR0ZXIifSB8fCAkaW50ZXJmYWNlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiQ3VzdG9t
TmFtZWRHZXR0ZXIifSkgewogICAgICAgICAgICAgICAgICYkcHJvcGVydHlOYW1lR2VuZXJhdGlv
bigpOwotICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIGlmIChjYW5HZXRJ
dGVtc0Zvck5hbWUoZXhlYywgc3RhdGljX2Nhc3Q8JGludGVyZmFjZU5hbWUqPih0aGlzT2JqZWN0
LT5pbXBsKCkpLCBwcm9wZXJ0eU5hbWUpKSB7XG4iKTsKKyAgICAgICAgICAgICAgICBwdXNoKEBp
bXBsQ29udGVudCwgIiAgICBpZiAoY2FuR2V0SXRlbXNGb3JOYW1lKGV4ZWMsIHN0YXRpY19jYXN0
PCRpbXBsQ2xhc3NOYW1lKj4odGhpc09iamVjdC0+aW1wbCgpKSwgcHJvcGVydHlOYW1lKSkge1xu
Iik7CiAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgICAgIHNsb3Quc2V0
Q3VzdG9tKHRoaXNPYmplY3QsIHRoaXNPYmplY3QtPm5hbWVHZXR0ZXIpO1xuIik7CiAgICAgICAg
ICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgICAgIHJldHVybiB0cnVlO1xuIik7CiAg
ICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgfVxuIik7CkBAIC0xOTM4LDcg
KzE5NjEsNyBAQCBzdWIgR2VuZXJhdGVJbXBsZW1lbnRhdGlvbgogICAgICAgICAgICAgICAgIG15
ICR0eXBlID0gJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT50eXBlOwogICAgICAgICAgICAgICAgIG15
ICRpc051bGxhYmxlID0gJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT5pc051bGxhYmxlOwogICAgICAg
ICAgICAgICAgICRjb2RlR2VuZXJhdG9yLT5Bc3NlcnROb3RTZXF1ZW5jZVR5cGUoJHR5cGUpOwot
ICAgICAgICAgICAgICAgIG15ICRnZXRGdW5jdGlvbk5hbWUgPSBHZXRBdHRyaWJ1dGVHZXR0ZXJO
YW1lKCRpbnRlcmZhY2VOYW1lLCAkY2xhc3NOYW1lLCAkYXR0cmlidXRlKTsKKyAgICAgICAgICAg
ICAgICBteSAkZ2V0RnVuY3Rpb25OYW1lID0gR2V0QXR0cmlidXRlR2V0dGVyTmFtZSgkaW50ZXJm
YWNlLCAkYXR0cmlidXRlKTsKICAgICAgICAgICAgICAgICBteSAkaW1wbEdldHRlckZ1bmN0aW9u
TmFtZSA9ICRjb2RlR2VuZXJhdG9yLT5XS19sY2ZpcnN0KCRuYW1lKTsKIAogICAgICAgICAgICAg
ICAgIG15ICRhdHRyaWJ1dGVDb25kaXRpb25hbFN0cmluZyA9ICRjb2RlR2VuZXJhdG9yLT5HZW5l
cmF0ZUNvbmRpdGlvbmFsU3RyaW5nKCRhdHRyaWJ1dGUtPnNpZ25hdHVyZSk7CkBAIC0xOTQ4LDcg
KzE5NzEsNyBAQCBzdWIgR2VuZXJhdGVJbXBsZW1lbnRhdGlvbgogICAgICAgICAgICAgICAgIHB1
c2goQGltcGxDb250ZW50LCAie1xuIik7CiAKICAgICAgICAgICAgICAgICBpZiAoISRhdHRyaWJ1
dGUtPmlzU3RhdGljIHx8ICRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+dHlwZSA9fiAvQ29uc3RydWN0
b3IkLykgewotICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAke2Ns
YXNzTmFtZX0qIGNhc3RlZFRoaXMgPSBqc0Nhc3Q8JGNsYXNzTmFtZSo+KGFzT2JqZWN0KHNsb3RC
YXNlKSk7XG4iKTsKKyAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAg
JHtqc0NsYXNzTmFtZX0qIGNhc3RlZFRoaXMgPSBqc0Nhc3Q8JGpzQ2xhc3NOYW1lKj4oYXNPYmpl
Y3Qoc2xvdEJhc2UpKTtcbiIpOwogICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAg
ICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIFVOVVNFRF9QQVJBTShzbG90QmFzZSk7
XG4iKTsKICAgICAgICAgICAgICAgICB9CkBAIC0xOTY5LDEyICsxOTkyLDEyIEBAIHN1YiBHZW5l
cmF0ZUltcGxlbWVudGF0aW9uCiAgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50
LCAiICAgIHJldHVybiBjYXN0ZWRUaGlzLT4kaW1wbEdldHRlckZ1bmN0aW9uTmFtZShleGVjKTtc
biIpOwogICAgICAgICAgICAgICAgIH0gZWxzaWYgKCRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+ZXh0
ZW5kZWRBdHRyaWJ1dGVzLT57IkNoZWNrU2VjdXJpdHlGb3JOb2RlIn0pIHsKICAgICAgICAgICAg
ICAgICAgICAgJGltcGxJbmNsdWRlc3siSlNET01CaW5kaW5nLmgifSA9IDE7Ci0gICAgICAgICAg
ICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICRpbnRlcmZhY2VOYW1lKiBpbXBsID0g
c3RhdGljX2Nhc3Q8JGludGVyZmFjZU5hbWUqPihjYXN0ZWRUaGlzLT5pbXBsKCkpO1xuIik7Ci0g
ICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIHJldHVybiBzaG91bGRB
bGxvd0FjY2Vzc1RvTm9kZShleGVjLCBpbXBsLT4iIC4gJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT5u
YW1lIC4gIigpKSA/ICIgLiBOYXRpdmVUb0pTVmFsdWUoJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLCAw
LCAkaW50ZXJmYWNlTmFtZSwgImltcGwtPiRpbXBsR2V0dGVyRnVuY3Rpb25OYW1lKCkiLCAiY2Fz
dGVkVGhpcyIpIC4gIiA6IGpzTnVsbCgpO1xuIik7CisgICAgICAgICAgICAgICAgICAgIHB1c2go
QGltcGxDb250ZW50LCAiICAgICRpbXBsQ2xhc3NOYW1lKiBpbXBsID0gc3RhdGljX2Nhc3Q8JGlt
cGxDbGFzc05hbWUqPihjYXN0ZWRUaGlzLT5pbXBsKCkpO1xuIik7CisgICAgICAgICAgICAgICAg
ICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIHJldHVybiBzaG91bGRBbGxvd0FjY2Vzc1RvTm9k
ZShleGVjLCBpbXBsLT4iIC4gJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT5uYW1lIC4gIigpKSA/ICIg
LiBOYXRpdmVUb0pTVmFsdWUoJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLCAwLCAkaW50ZXJmYWNlLCAi
aW1wbC0+JGltcGxHZXR0ZXJGdW5jdGlvbk5hbWUoKSIsICJjYXN0ZWRUaGlzIikgLiAiIDoganNO
dWxsKCk7XG4iKTsKICAgICAgICAgICAgICAgICB9IGVsc2lmICgkdHlwZSBlcSAiRXZlbnRMaXN0
ZW5lciIpIHsKICAgICAgICAgICAgICAgICAgICAgJGltcGxJbmNsdWRlc3siRXZlbnRMaXN0ZW5l
ci5oIn0gPSAxOwogICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBV
TlVTRURfUEFSQU0oZXhlYyk7XG4iKTsKLSAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENv
bnRlbnQsICIgICAgJGludGVyZmFjZU5hbWUqIGltcGwgPSBzdGF0aWNfY2FzdDwkaW50ZXJmYWNl
TmFtZSo+KGNhc3RlZFRoaXMtPmltcGwoKSk7XG4iKTsKKyAgICAgICAgICAgICAgICAgICAgcHVz
aChAaW1wbENvbnRlbnQsICIgICAgJGltcGxDbGFzc05hbWUqIGltcGwgPSBzdGF0aWNfY2FzdDwk
aW1wbENsYXNzTmFtZSo+KGNhc3RlZFRoaXMtPmltcGwoKSk7XG4iKTsKICAgICAgICAgICAgICAg
ICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgaWYgKEV2ZW50TGlzdGVuZXIqIGxpc3RlbmVy
ID0gaW1wbC0+JGltcGxHZXR0ZXJGdW5jdGlvbk5hbWUoKSkge1xuIik7CiAgICAgICAgICAgICAg
ICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICAgICBpZiAoY29uc3QgSlNFdmVudExpc3Rl
bmVyKiBqc0xpc3RlbmVyID0gSlNFdmVudExpc3RlbmVyOjpjYXN0KGxpc3RlbmVyKSkge1xuIik7
CiAgICAgICAgICAgICAgICAgICAgIGlmICgkaW50ZXJmYWNlTmFtZSBlcSAiRG9jdW1lbnQiIHx8
ICRpbnRlcmZhY2VOYW1lIGVxICJXb3JrZXJDb250ZXh0IiB8fCAkaW50ZXJmYWNlTmFtZSBlcSAi
U2hhcmVkV29ya2VyQ29udGV4dCIgfHwgJGludGVyZmFjZU5hbWUgZXEgIkRlZGljYXRlZFdvcmtl
ckNvbnRleHQiKSB7CkBAIC0yMDEyLDEzICsyMDM1LDEzIEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVu
dGF0aW9uCiAgICAgICAgICAgICAgICAgICAgIG15IEBjYWxsV2l0aEFyZ3MgPSBHZW5lcmF0ZUNh
bGxXaXRoKCRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkNhbGxX
aXRoIn0sIFxAaW1wbENvbnRlbnQsICJqc1VuZGVmaW5lZCgpIik7CiAKICAgICAgICAgICAgICAg
ICAgICAgaWYgKCRzdmdMaXN0UHJvcGVydHlUeXBlKSB7Ci0gICAgICAgICAgICAgICAgICAgICAg
ICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBKU1ZhbHVlIHJlc3VsdCA9ICAiIC4gTmF0aXZlVG9K
U1ZhbHVlKCRhdHRyaWJ1dGUtPnNpZ25hdHVyZSwgMCwgJGludGVyZmFjZU5hbWUsICJjYXN0ZWRU
aGlzLT5pbXBsKCktPiRpbXBsR2V0dGVyRnVuY3Rpb25OYW1lKCIgLiAoam9pbiAiLCAiLCBAY2Fs
bFdpdGhBcmdzKSAuICIpIiwgImNhc3RlZFRoaXMiKSAuICI7XG4iKTsKKyAgICAgICAgICAgICAg
ICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIEpTVmFsdWUgcmVzdWx0ID0gICIgLiBO
YXRpdmVUb0pTVmFsdWUoJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLCAwLCAkaW50ZXJmYWNlLCAiY2Fz
dGVkVGhpcy0+aW1wbCgpLT4kaW1wbEdldHRlckZ1bmN0aW9uTmFtZSgiIC4gKGpvaW4gIiwgIiwg
QGNhbGxXaXRoQXJncykgLiAiKSIsICJjYXN0ZWRUaGlzIikgLiAiO1xuIik7CiAgICAgICAgICAg
ICAgICAgICAgIH0gZWxzaWYgKCRzdmdQcm9wZXJ0eU9yTGlzdFByb3BlcnR5VHlwZSkgewogICAg
ICAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgJHN2Z1Byb3BlcnR5
T3JMaXN0UHJvcGVydHlUeXBlJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpLT5wcm9wZXJ0eVJl
ZmVyZW5jZSgpO1xuIik7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoJHN2Z1Byb3BlcnR5
T3JMaXN0UHJvcGVydHlUeXBlIGVxICJmbG9hdCIpIHsgIyBTcGVjaWFsIGNhc2UgZm9yIEpTU1ZH
TnVtYmVyCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIg
ICAgSlNWYWx1ZSByZXN1bHQgPSAgIiAuIE5hdGl2ZVRvSlNWYWx1ZSgkYXR0cmlidXRlLT5zaWdu
YXR1cmUsIDAsICRpbnRlcmZhY2VOYW1lLCAiaW1wbCIsICJjYXN0ZWRUaGlzIikgLiAiO1xuIik7
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgSlNW
YWx1ZSByZXN1bHQgPSAgIiAuIE5hdGl2ZVRvSlNWYWx1ZSgkYXR0cmlidXRlLT5zaWduYXR1cmUs
IDAsICRpbnRlcmZhY2UsICJpbXBsIiwgImNhc3RlZFRoaXMiKSAuICI7XG4iKTsKICAgICAgICAg
ICAgICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgcHVz
aChAaW1wbENvbnRlbnQsICIgICAgSlNWYWx1ZSByZXN1bHQgPSAgIiAuIE5hdGl2ZVRvSlNWYWx1
ZSgkYXR0cmlidXRlLT5zaWduYXR1cmUsIDAsICRpbnRlcmZhY2VOYW1lLCAiaW1wbC4kaW1wbEdl
dHRlckZ1bmN0aW9uTmFtZSgiIC4gKGpvaW4gIiwgIiwgQGNhbGxXaXRoQXJncykgLiAiKSIsICJj
YXN0ZWRUaGlzIikgLiAiO1xuIik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHVzaChA
aW1wbENvbnRlbnQsICIgICAgSlNWYWx1ZSByZXN1bHQgPSAgIiAuIE5hdGl2ZVRvSlNWYWx1ZSgk
YXR0cmlidXRlLT5zaWduYXR1cmUsIDAsICRpbnRlcmZhY2UsICJpbXBsLiRpbXBsR2V0dGVyRnVu
Y3Rpb25OYW1lKCIgLiAoam9pbiAiLCAiLCBAY2FsbFdpdGhBcmdzKSAuICIpIiwgImNhc3RlZFRo
aXMiKSAuICI7XG4iKTsKIAogICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAg
ICAgICAgICB9IGVsc2UgewpAQCAtMjAzMCwxNCArMjA1MywxNCBAQCBzdWIgR2VuZXJhdGVJbXBs
ZW1lbnRhdGlvbgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICRmdW5jdGlvbk5hbWUgPSAi
JHtpbXBsZW1lbnRlZEJ5fTo6JHtmdW5jdGlvbk5hbWV9IjsKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB1bnNoaWZ0KEBhcmd1bWVudHMsICJpbXBsIikgaWYgISRhdHRyaWJ1dGUtPmlzU3Rh
dGljOwogICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNpZiAoJGF0dHJpYnV0ZS0+aXNTdGF0
aWMpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAkZnVuY3Rpb25OYW1lID0gIiR7aW50
ZXJmYWNlTmFtZX06OiR7ZnVuY3Rpb25OYW1lfSI7CisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgJGZ1bmN0aW9uTmFtZSA9ICIke2ltcGxDbGFzc05hbWV9Ojoke2Z1bmN0aW9uTmFtZX0iOwog
ICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAkZnVuY3Rpb25OYW1lID0gImltcGwtPiR7ZnVuY3Rpb25OYW1lfSI7CiAgICAgICAgICAg
ICAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2hpZnQoQGFyZ3Vt
ZW50cywgQGNhbGxXaXRoQXJncyk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBteSAkanNUeXBl
ID0gTmF0aXZlVG9KU1ZhbHVlKCRhdHRyaWJ1dGUtPnNpZ25hdHVyZSwgMCwgJGludGVyZmFjZU5h
bWUsICIke2Z1bmN0aW9uTmFtZX0oIiAuIGpvaW4oIiwgIiwgQGFyZ3VtZW50cykgLiAiKSIsICJj
YXN0ZWRUaGlzIik7Ci0gICAgICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwg
IiAgICAkaW50ZXJmYWNlTmFtZSogaW1wbCA9IHN0YXRpY19jYXN0PCRpbnRlcmZhY2VOYW1lKj4o
Y2FzdGVkVGhpcy0+aW1wbCgpKTtcbiIpIGlmICEkYXR0cmlidXRlLT5pc1N0YXRpYzsKKyAgICAg
ICAgICAgICAgICAgICAgICAgIG15ICRqc1R5cGUgPSBOYXRpdmVUb0pTVmFsdWUoJGF0dHJpYnV0
ZS0+c2lnbmF0dXJlLCAwLCAkaW50ZXJmYWNlLCAiJHtmdW5jdGlvbk5hbWV9KCIgLiBqb2luKCIs
ICIsIEBhcmd1bWVudHMpIC4gIikiLCAiY2FzdGVkVGhpcyIpOworICAgICAgICAgICAgICAgICAg
ICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgJGltcGxDbGFzc05hbWUqIGltcGwgPSBzdGF0
aWNfY2FzdDwkaW1wbENsYXNzTmFtZSo+KGNhc3RlZFRoaXMtPmltcGwoKSk7XG4iKSBpZiAhJGF0
dHJpYnV0ZS0+aXNTdGF0aWM7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoJGNvZGVHZW5l
cmF0b3ItPklzU1ZHQW5pbWF0ZWRUeXBlKCR0eXBlKSkgewogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIFJlZlB0cjwkdHlwZT4gb2JqID0gJGpzVHlw
ZTtcbiIpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAi
ICAgIEpTVmFsdWUgcmVzdWx0ID0gIHRvSlMoZXhlYywgY2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0
KCksIG9iai5nZXQoKSk7XG4iKTsKQEAgLTIwNjcsMTAgKzIwOTAsMTAgQEAgc3ViIEdlbmVyYXRl
SW1wbGVtZW50YXRpb24KIAogICAgICAgICAgICAgICAgICAgICBpZiAoJHN2Z1Byb3BlcnR5T3JM
aXN0UHJvcGVydHlUeXBlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29u
dGVudCwgIiAgICAkc3ZnUHJvcGVydHlPckxpc3RQcm9wZXJ0eVR5cGUgaW1wbCgqY2FzdGVkVGhp
cy0+aW1wbCgpKTtcbiIpOwotICAgICAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRl
bnQsICIgICAgSlNDOjpKU1ZhbHVlIHJlc3VsdCA9ICIgLiBOYXRpdmVUb0pTVmFsdWUoJGF0dHJp
YnV0ZS0+c2lnbmF0dXJlLCAwLCAkaW50ZXJmYWNlTmFtZSwgImltcGwuJGltcGxHZXR0ZXJGdW5j
dGlvbk5hbWUoIiAuIGpvaW4oIiwgIiwgQGFyZ3VtZW50cykgLiAiKSIsICJjYXN0ZWRUaGlzIikg
LiAiO1xuIik7CisgICAgICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAg
ICBKU0M6OkpTVmFsdWUgcmVzdWx0ID0gIiAuIE5hdGl2ZVRvSlNWYWx1ZSgkYXR0cmlidXRlLT5z
aWduYXR1cmUsIDAsICRpbnRlcmZhY2UsICJpbXBsLiRpbXBsR2V0dGVyRnVuY3Rpb25OYW1lKCIg
LiBqb2luKCIsICIsIEBhcmd1bWVudHMpIC4gIikiLCAiY2FzdGVkVGhpcyIpIC4gIjtcbiIpOwog
ICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgICAgICAgICAgcHVz
aChAaW1wbENvbnRlbnQsICIgICAgJGludGVyZmFjZU5hbWUqIGltcGwgPSBzdGF0aWNfY2FzdDwk
aW50ZXJmYWNlTmFtZSo+KGNhc3RlZFRoaXMtPmltcGwoKSk7XG4iKTsKLSAgICAgICAgICAgICAg
ICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIEpTQzo6SlNWYWx1ZSByZXN1bHQgPSAi
IC4gTmF0aXZlVG9KU1ZhbHVlKCRhdHRyaWJ1dGUtPnNpZ25hdHVyZSwgMCwgJGludGVyZmFjZU5h
bWUsICJpbXBsLT4kaW1wbEdldHRlckZ1bmN0aW9uTmFtZSgiIC4gam9pbigiLCAiLCBAYXJndW1l
bnRzKSAuICIpIiwgImNhc3RlZFRoaXMiKSAuICI7XG4iKTsKKyAgICAgICAgICAgICAgICAgICAg
ICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICRpbXBsQ2xhc3NOYW1lKiBpbXBsID0gc3RhdGlj
X2Nhc3Q8JGltcGxDbGFzc05hbWUqPihjYXN0ZWRUaGlzLT5pbXBsKCkpO1xuIik7CisgICAgICAg
ICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBKU0M6OkpTVmFsdWUgcmVz
dWx0ID0gIiAuIE5hdGl2ZVRvSlNWYWx1ZSgkYXR0cmlidXRlLT5zaWduYXR1cmUsIDAsICRpbnRl
cmZhY2UsICJpbXBsLT4kaW1wbEdldHRlckZ1bmN0aW9uTmFtZSgiIC4gam9pbigiLCAiLCBAYXJn
dW1lbnRzKSAuICIpIiwgImNhc3RlZFRoaXMiKSAuICI7XG4iKTsKICAgICAgICAgICAgICAgICAg
ICAgfQogCiAgICAgICAgICAgICAgICAgICAgIGlmICgkaXNOdWxsYWJsZSkgewpAQCAtMjA5NCw3
ICsyMTE3LDcgQEAgc3ViIEdlbmVyYXRlSW1wbGVtZW50YXRpb24KIAogICAgICAgICAgICAgICAg
IHB1c2goQGltcGxDb250ZW50LCAiSlNWYWx1ZSAke2NvbnN0cnVjdG9yRnVuY3Rpb25OYW1lfShF
eGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgc2xvdEJhc2UsIFByb3BlcnR5TmFtZSlcbiIpOwogICAg
ICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAie1xuIik7Ci0gICAgICAgICAgICAgICAg
cHVzaChAaW1wbENvbnRlbnQsICIgICAgJHtjbGFzc05hbWV9KiBkb21PYmplY3QgPSBqc0Nhc3Q8
JGNsYXNzTmFtZSo+KGFzT2JqZWN0KHNsb3RCYXNlKSk7XG4iKTsKKyAgICAgICAgICAgICAgICBw
dXNoKEBpbXBsQ29udGVudCwgIiAgICAke2pzQ2xhc3NOYW1lfSogZG9tT2JqZWN0ID0ganNDYXN0
PCRqc0NsYXNzTmFtZSo+KGFzT2JqZWN0KHNsb3RCYXNlKSk7XG4iKTsKIAogICAgICAgICAgICAg
ICAgIGlmICgkaW50ZXJmYWNlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiQ2hlY2tTZWN1cml0eSJ9
KSB7CiAgICAgICAgICAgICAgICAgICAgICRpbXBsSW5jbHVkZXN7IkJpbmRpbmdTZWN1cml0eS5o
In0gPSAxOwpAQCAtMjEwMiw3ICsyMTI1LDcgQEAgc3ViIEdlbmVyYXRlSW1wbGVtZW50YXRpb24K
ICAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgICAgIHJldHVybiBq
c1VuZGVmaW5lZCgpO1xuIik7CiAgICAgICAgICAgICAgICAgfQogCi0gICAgICAgICAgICAgICAg
cHVzaChAaW1wbENvbnRlbnQsICIgICAgcmV0dXJuICR7Y2xhc3NOYW1lfTo6Z2V0Q29uc3RydWN0
b3IoZXhlYywgZG9tT2JqZWN0LT5nbG9iYWxPYmplY3QoKSk7XG4iKTsKKyAgICAgICAgICAgICAg
ICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICByZXR1cm4gJHtqc0NsYXNzTmFtZX06OmdldENvbnN0
cnVjdG9yKGV4ZWMsIGRvbU9iamVjdC0+Z2xvYmFsT2JqZWN0KCkpO1xuIik7CiAgICAgICAgICAg
ICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJ9XG5cbiIpOwogICAgICAgICAgICAgfQogICAgICAg
ICB9CkBAIC0yMTE5LDkgKzIxNDIsOSBAQCBzdWIgR2VuZXJhdGVJbXBsZW1lbnRhdGlvbgogCiAg
ICAgICAgIGlmICgkaGFzU2V0dGVyKSB7CiAgICAgICAgICAgICBpZiAoISRpbnRlcmZhY2UtPmV4
dGVuZGVkQXR0cmlidXRlcy0+eyJDdXN0b21QdXRGdW5jdGlvbiJ9KSB7Ci0gICAgICAgICAgICAg
ICAgcHVzaChAaW1wbENvbnRlbnQsICJ2b2lkICR7Y2xhc3NOYW1lfTo6cHV0KEpTQ2VsbCogY2Vs
bCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZh
bHVlLCBQdXRQcm9wZXJ0eVNsb3QmIHNsb3QpXG4iKTsKKyAgICAgICAgICAgICAgICBwdXNoKEBp
bXBsQ29udGVudCwgInZvaWQgJHtqc0NsYXNzTmFtZX06OnB1dChKU0NlbGwqIGNlbGwsIEV4ZWNT
dGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgUHV0
UHJvcGVydHlTbG90JiBzbG90KVxuIik7CiAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRl
bnQsICJ7XG4iKTsKLSAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAke2Ns
YXNzTmFtZX0qIHRoaXNPYmplY3QgPSBqc0Nhc3Q8JHtjbGFzc05hbWV9Kj4oY2VsbCk7XG4iKTsK
KyAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAke2pzQ2xhc3NOYW1lfSog
dGhpc09iamVjdCA9IGpzQ2FzdDwke2pzQ2xhc3NOYW1lfSo+KGNlbGwpO1xuIik7CiAgICAgICAg
ICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklU
Uyh0aGlzT2JqZWN0LCAmc19pbmZvKTtcbiIpOwogICAgICAgICAgICAgICAgIGlmICgkaW50ZXJm
YWNlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiQ3VzdG9tSW5kZXhlZFNldHRlciJ9KSB7CiAgICAg
ICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIHVuc2lnbmVkIGluZGV4ID0g
cHJvcGVydHlOYW1lLmFzSW5kZXgoKTtcbiIpOwpAQCAtMjEzNiwxNiArMjE1OSwxNiBAQCBzdWIg
R2VuZXJhdGVJbXBsZW1lbnRhdGlvbgogICAgICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAg
ICAgIGlmICgkaGFzUmVhZFdyaXRlUHJvcGVydGllcykgewotICAgICAgICAgICAgICAgICAgICBw
dXNoKEBpbXBsQ29udGVudCwgIiAgICBsb29rdXBQdXQ8JGNsYXNzTmFtZSwgQmFzZT4oZXhlYywg
cHJvcGVydHlOYW1lLCB2YWx1ZSwgIiAuIGhhc2hUYWJsZUFjY2Vzc29yKCRpbnRlcmZhY2UtPmV4
dGVuZGVkQXR0cmlidXRlcy0+eyJKU05vU3RhdGljVGFibGVzIn0sICRjbGFzc05hbWUpIC4gIiwg
dGhpc09iamVjdCwgc2xvdCk7XG4iKTsKKyAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENv
bnRlbnQsICIgICAgbG9va3VwUHV0PCRqc0NsYXNzTmFtZSwgQmFzZT4oZXhlYywgcHJvcGVydHlO
YW1lLCB2YWx1ZSwgIiAuIGhhc2hUYWJsZUFjY2Vzc29yKCRpbnRlcmZhY2UtPmV4dGVuZGVkQXR0
cmlidXRlcy0+eyJKU05vU3RhdGljVGFibGVzIn0sICRqc0NsYXNzTmFtZSkgLiAiLCB0aGlzT2Jq
ZWN0LCBzbG90KTtcbiIpOwogICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAg
ICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIEJhc2U6OnB1dCh0aGlzT2JqZWN0LCBleGVj
LCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBzbG90KTtcbiIpOwogICAgICAgICAgICAgICAgIH0KICAg
ICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIn1cblxuIik7CiAgICAgICAgICAgICAg
ICAgCiAgICAgICAgICAgICAgICAgaWYgKCRpbnRlcmZhY2UtPmV4dGVuZGVkQXR0cmlidXRlcy0+
eyJDdXN0b21JbmRleGVkU2V0dGVyIn0gfHwgJGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVz
LT57IkN1c3RvbU5hbWVkU2V0dGVyIn0pIHsKLSAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1w
bENvbnRlbnQsICJ2b2lkICR7Y2xhc3NOYW1lfTo6cHV0QnlJbmRleChKU0NlbGwqIGNlbGwsIEV4
ZWNTdGF0ZSogZXhlYywgdW5zaWduZWQgaW5kZXgsIEpTVmFsdWUgdmFsdWUsIGJvb2wgc2hvdWxk
VGhyb3cpXG4iKTsKKyAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJ2b2lk
ICR7anNDbGFzc05hbWV9OjpwdXRCeUluZGV4KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVj
LCB1bnNpZ25lZCBpbmRleCwgSlNWYWx1ZSB2YWx1ZSwgYm9vbCBzaG91bGRUaHJvdylcbiIpOwog
ICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIntcbiIpOwotICAgICAgICAg
ICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAke2NsYXNzTmFtZX0qIHRoaXNPYmpl
Y3QgPSBqc0Nhc3Q8JHtjbGFzc05hbWV9Kj4oY2VsbCk7XG4iKTsKKyAgICAgICAgICAgICAgICAg
ICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgJHtqc0NsYXNzTmFtZX0qIHRoaXNPYmplY3QgPSBq
c0Nhc3Q8JHtqc0NsYXNzTmFtZX0qPihjZWxsKTtcbiIpOwogICAgICAgICAgICAgICAgICAgICBw
dXNoKEBpbXBsQ29udGVudCwgIiAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRoaXNPYmpl
Y3QsICZzX2luZm8pO1xuIik7CiAgICAgICAgICAgICAgICAgICAgIGlmICgkaW50ZXJmYWNlLT5l
eHRlbmRlZEF0dHJpYnV0ZXMtPnsiQ3VzdG9tSW5kZXhlZFNldHRlciJ9KSB7CiAgICAgICAgICAg
ICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBpZiAoaW5kZXggPD0gTUFYX0FS
UkFZX0lOREVYKSB7XG4iKTsKQEAgLTIxNzIsNyArMjE5NSw3IEBAIHN1YiBHZW5lcmF0ZUltcGxl
bWVudGF0aW9uCiAgICAgICAgICAgICAgICAgICAgIGlmICghSXNSZWFkb25seSgkYXR0cmlidXRl
KSkgewogICAgICAgICAgICAgICAgICAgICAgICAgbXkgJG5hbWUgPSAkYXR0cmlidXRlLT5zaWdu
YXR1cmUtPm5hbWU7CiAgICAgICAgICAgICAgICAgICAgICAgICBteSAkdHlwZSA9ICRhdHRyaWJ1
dGUtPnNpZ25hdHVyZS0+dHlwZTsKLSAgICAgICAgICAgICAgICAgICAgICAgIG15ICRwdXRGdW5j
dGlvbk5hbWUgPSBHZXRBdHRyaWJ1dGVTZXR0ZXJOYW1lKCRpbnRlcmZhY2VOYW1lLCAkY2xhc3NO
YW1lLCAkYXR0cmlidXRlKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIG15ICRwdXRGdW5jdGlv
bk5hbWUgPSBHZXRBdHRyaWJ1dGVTZXR0ZXJOYW1lKCRpbnRlcmZhY2UsICRhdHRyaWJ1dGUpOwog
ICAgICAgICAgICAgICAgICAgICAgICAgbXkgJGltcGxTZXR0ZXJGdW5jdGlvbk5hbWUgPSAkY29k
ZUdlbmVyYXRvci0+V0tfdWNmaXJzdCgkbmFtZSk7CiAKICAgICAgICAgICAgICAgICAgICAgICAg
IG15ICRhdHRyaWJ1dGVDb25kaXRpb25hbFN0cmluZyA9ICRjb2RlR2VuZXJhdG9yLT5HZW5lcmF0
ZUNvbmRpdGlvbmFsU3RyaW5nKCRhdHRyaWJ1dGUtPnNpZ25hdHVyZSk7CkBAIC0yMTg4LDI5ICsy
MjExLDI5IEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgaWYgKCRpbnRlcmZhY2UtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJDaGVja1NlY3Vy
aXR5In0gJiYgISRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkRv
Tm90Q2hlY2tTZWN1cml0eSJ9KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlm
ICgkaW50ZXJmYWNlTmFtZSBlcSAiRE9NV2luZG93IikgewogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgJGltcGxJbmNsdWRlc3siQmluZGluZ1NlY3VyaXR5LmgifSA9IDE7Ci0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAg
ICBpZiAoIUJpbmRpbmdTZWN1cml0eTo6c2hvdWxkQWxsb3dBY2Nlc3NUb0RPTVdpbmRvdyhleGVj
LCBqc0Nhc3Q8JGNsYXNzTmFtZSo+KHRoaXNPYmplY3QpLT5pbXBsKCkpKVxuIik7CisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBpZiAo
IUJpbmRpbmdTZWN1cml0eTo6c2hvdWxkQWxsb3dBY2Nlc3NUb0RPTVdpbmRvdyhleGVjLCBqc0Nh
c3Q8JGpzQ2xhc3NOYW1lKj4odGhpc09iamVjdCktPmltcGwoKSkpXG4iKTsKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIGlmICghc2hvdWxkQWxsb3dBY2Nlc3NU
b0ZyYW1lKGV4ZWMsIGpzQ2FzdDwkY2xhc3NOYW1lKj4odGhpc09iamVjdCktPmltcGwoKS0+ZnJh
bWUoKSkpXG4iKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1c2goQGlt
cGxDb250ZW50LCAiICAgIGlmICghc2hvdWxkQWxsb3dBY2Nlc3NUb0ZyYW1lKGV4ZWMsIGpzQ2Fz
dDwkanNDbGFzc05hbWUqPih0aGlzT2JqZWN0KS0+aW1wbCgpLT5mcmFtZSgpKSlcbiIpOwogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICAgICByZXR1cm47XG4iKTsKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAo
SGFzQ3VzdG9tU2V0dGVyKCRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVz
KSkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwg
IiAgICBqc0Nhc3Q8JGNsYXNzTmFtZSo+KHRoaXNPYmplY3QpLT5zZXQkaW1wbFNldHRlckZ1bmN0
aW9uTmFtZShleGVjLCB2YWx1ZSk7XG4iKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAganNDYXN0PCRqc0NsYXNzTmFtZSo+KHRoaXNPYmpl
Y3QpLT5zZXQkaW1wbFNldHRlckZ1bmN0aW9uTmFtZShleGVjLCB2YWx1ZSk7XG4iKTsKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2lmICgkdHlwZSBlcSAiRXZlbnRMaXN0ZW5lciIp
IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGltcGxJbmNsdWRlc3siSlNFdmVu
dExpc3RlbmVyLmgifSA9IDE7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1c2go
QGltcGxDb250ZW50LCAiICAgIFVOVVNFRF9QQVJBTShleGVjKTtcbiIpOwotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAke2NsYXNzTmFtZX0q
IGNhc3RlZFRoaXMgPSBqc0Nhc3Q8JHtjbGFzc05hbWV9Kj4odGhpc09iamVjdCk7XG4iKTsKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgJHtq
c0NsYXNzTmFtZX0qIGNhc3RlZFRoaXMgPSBqc0Nhc3Q8JHtqc0NsYXNzTmFtZX0qPih0aGlzT2Jq
ZWN0KTtcbiIpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBteSAkd2luZG93RXZl
bnRMaXN0ZW5lciA9ICRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57
IkpTV2luZG93RXZlbnRMaXN0ZW5lciJ9OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBpZiAoJHdpbmRvd0V2ZW50TGlzdGVuZXIpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QgPSBjYXN0ZWRUaGlzLT5nbG9iYWxPYmplY3QoKTtcbiIpOwogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1
c2goQGltcGxDb250ZW50LCAiICAgICRpbnRlcmZhY2VOYW1lKiBpbXBsID0gc3RhdGljX2Nhc3Q8
JGludGVyZmFjZU5hbWUqPihjYXN0ZWRUaGlzLT5pbXBsKCkpO1xuIik7CisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICRpbXBsQ2xhc3NOYW1l
KiBpbXBsID0gc3RhdGljX2Nhc3Q8JGltcGxDbGFzc05hbWUqPihjYXN0ZWRUaGlzLT5pbXBsKCkp
O1xuIik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgoKCRpbnRlcmZhY2VO
YW1lIGVxICJET01XaW5kb3ciKSBvciAoJGludGVyZmFjZU5hbWUgZXEgIldvcmtlckNvbnRleHQi
KSkgYW5kICRuYW1lIGVxICJvbmVycm9yIikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgJGltcGxJbmNsdWRlc3siSlNFcnJvckhhbmRsZXIuaCJ9ID0gMTsKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIGltcGwt
PnNldCRpbXBsU2V0dGVyRnVuY3Rpb25OYW1lKGNyZWF0ZUpTRXJyb3JIYW5kbGVyKGV4ZWMsIHZh
bHVlLCB0aGlzT2JqZWN0KSk7XG4iKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
fSBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxD
b250ZW50LCBHZW5lcmF0ZUF0dHJpYnV0ZUV2ZW50TGlzdGVuZXJDYWxsKCRjbGFzc05hbWUsICRp
bXBsU2V0dGVyRnVuY3Rpb25OYW1lLCAkd2luZG93RXZlbnRMaXN0ZW5lcikpOworICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsIEdlbmVyYXRlQXR0
cmlidXRlRXZlbnRMaXN0ZW5lckNhbGwoJGpzQ2xhc3NOYW1lLCAkaW1wbFNldHRlckZ1bmN0aW9u
TmFtZSwgJHdpbmRvd0V2ZW50TGlzdGVuZXIpKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzaWYgKCRhdHRyaWJ1dGUt
PnNpZ25hdHVyZS0+dHlwZSA9fiAvQ29uc3RydWN0b3IkLykgewogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBteSAkY29uc3RydWN0b3JUeXBlID0gJGF0dHJpYnV0ZS0+c2lnbmF0dXJl
LT50eXBlOwpAQCAtMjIyMiwxOCArMjI0NSwxOCBAQCBzdWIgR2VuZXJhdGVJbXBsZW1lbnRhdGlv
bgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQWRkVG9JbXBsSW5jbHVkZXMo
IkpTIiAuICRjb25zdHJ1Y3RvclR5cGUgLiAiLmgiLCAkYXR0cmlidXRlLT5zaWduYXR1cmUtPmV4
dGVuZGVkQXR0cmlidXRlcy0+eyJDb25kaXRpb25hbCJ9KTsKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBs
Q29udGVudCwgIiAgICAvLyBTaGFkb3dpbmcgYSBidWlsdC1pbiBjb25zdHJ1Y3RvclxuIik7Ci0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgkaW50ZXJmYWNlTmFtZSBlcSAiRE9N
V2luZG93IiAmJiAkY2xhc3NOYW1lIGVxICJKU2JsYWgiKSB7CisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGlmICgkaW50ZXJmYWNlTmFtZSBlcSAiRE9NV2luZG93IiAmJiAkanNDbGFz
c05hbWUgZXEgIkpTYmxhaCIpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICMgRklYTUU6IFRoaXMgYnJhbmNoIG5ldmVyIGV4ZWN1dGVzIGFuZCBzaG91bGQgYmUgcmVtb3Zl
ZC4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50
LCAiICAgIGpzQ2FzdDwkY2xhc3NOYW1lKj4odGhpc09iamVjdCktPnB1dERpcmVjdChleGVjLT52
bSgpLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkuY29uc3RydWN0b3IsIHZhbHVlKTtcbiIpOworICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAg
anNDYXN0PCRqc0NsYXNzTmFtZSo+KHRoaXNPYmplY3QpLT5wdXREaXJlY3QoZXhlYy0+dm0oKSwg
ZXhlYy0+cHJvcGVydHlOYW1lcygpLmNvbnN0cnVjdG9yLCB2YWx1ZSk7XG4iKTsKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIGpzQ2FzdDwkY2xhc3NOYW1lKj4o
dGhpc09iamVjdCktPnB1dERpcmVjdChleGVjLT52bSgpLCBJZGVudGlmaWVyKGV4ZWMsIFwiJG5h
bWVcIiksIHZhbHVlKTtcbiIpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
cHVzaChAaW1wbENvbnRlbnQsICIgICAganNDYXN0PCRqc0NsYXNzTmFtZSo+KHRoaXNPYmplY3Qp
LT5wdXREaXJlY3QoZXhlYy0+dm0oKSwgSWRlbnRpZmllcihleGVjLCBcIiRuYW1lXCIpLCB2YWx1
ZSk7XG4iKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIH0gZWxzaWYgKCRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+ZXh0ZW5kZWRB
dHRyaWJ1dGVzLT57IlJlcGxhY2VhYmxlIn0pIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgLy8gU2hhZG93aW5nIGEgYnVpbHQtaW4gb2Jq
ZWN0XG4iKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRl
bnQsICIgICAganNDYXN0PCRjbGFzc05hbWUqPih0aGlzT2JqZWN0KS0+cHV0RGlyZWN0KGV4ZWMt
PnZtKCksIElkZW50aWZpZXIoZXhlYywgXCIkbmFtZVwiKSwgdmFsdWUpO1xuIik7CisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIGpzQ2FzdDwk
anNDbGFzc05hbWUqPih0aGlzT2JqZWN0KS0+cHV0RGlyZWN0KGV4ZWMtPnZtKCksIElkZW50aWZp
ZXIoZXhlYywgXCIkbmFtZVwiKSwgdmFsdWUpO1xuIik7CiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCEkYXR0
cmlidXRlLT5pc1N0YXRpYykgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
cHVzaChAaW1wbENvbnRlbnQsICIgICAgJGNsYXNzTmFtZSogY2FzdGVkVGhpcyA9IGpzQ2FzdDwk
Y2xhc3NOYW1lKj4odGhpc09iamVjdCk7XG4iKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICRqc0NsYXNzTmFtZSogY2FzdGVkVGhp
cyA9IGpzQ2FzdDwkanNDbGFzc05hbWUqPih0aGlzT2JqZWN0KTtcbiIpOwogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgJGltcGxUeXBl
KiBpbXBsID0gc3RhdGljX2Nhc3Q8JGltcGxUeXBlKj4oY2FzdGVkVGhpcy0+aW1wbCgpKTtcbiIp
OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAw
O1xuIikgaWYgQHskYXR0cmlidXRlLT5zZXR0ZXJFeGNlcHRpb25zfTsKQEAgLTIzMDMsNyArMjMy
Niw3IEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgdW5zaGlmdChAYXJndW1lbnRzLCAiaW1wbCIpIGlmICEkYXR0cmli
dXRlLT5pc1N0YXRpYzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAk
ZnVuY3Rpb25OYW1lID0gIiR7aW1wbGVtZW50ZWRCeX06OiR7ZnVuY3Rpb25OYW1lfSI7CiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2lmICgkYXR0cmlidXRlLT5pc1N0
YXRpYykgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRmdW5jdGlv
bk5hbWUgPSAiJHtpbnRlcmZhY2VOYW1lfTo6JHtmdW5jdGlvbk5hbWV9IjsKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkZnVuY3Rpb25OYW1lID0gIiR7aW1wbENsYXNz
TmFtZX06OiR7ZnVuY3Rpb25OYW1lfSI7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRm
dW5jdGlvbk5hbWUgPSAiaW1wbC0+JHtmdW5jdGlvbk5hbWV9IjsKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIH0KQEAgLTIzMjQsMTYgKzIzNDcsMTYgQEAgc3ViIEdlbmVyYXRl
SW1wbGVtZW50YXRpb24KICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgaWYgKCRpbnRlcmZh
Y2UtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJSZXBsYWNlYWJsZUNvbnN0cnVjdG9yIn0pIHsKLSAg
ICAgICAgICAgICAgICBteSAkY29uc3RydWN0b3JGdW5jdGlvbk5hbWUgPSAic2V0SlMiIC4gJGlu
dGVyZmFjZU5hbWUgLiAiQ29uc3RydWN0b3IiOworICAgICAgICAgICAgICAgIG15ICRjb25zdHJ1
Y3RvckZ1bmN0aW9uTmFtZSA9ICJzZXQiIC4gJGpzQ2xhc3NOYW1lIC4gIkNvbnN0cnVjdG9yIjsK
IAogICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAidm9pZCAke2NvbnN0cnVjdG9y
RnVuY3Rpb25OYW1lfShFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiB0aGlzT2JqZWN0LCBKU1Zh
bHVlIHZhbHVlKVxuIik7CiAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJ7XG4i
KTsKICAgICAgICAgICAgICAgICBpZiAoJGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57
IkNoZWNrU2VjdXJpdHkifSkgewogICAgICAgICAgICAgICAgICAgICBpZiAoJGludGVyZmFjZU5h
bWUgZXEgIkRPTVdpbmRvdyIpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICRpbXBsSW5jbHVk
ZXN7IkJpbmRpbmdTZWN1cml0eS5oIn0gPSAxOwotICAgICAgICAgICAgICAgICAgICAgICAgcHVz
aChAaW1wbENvbnRlbnQsICIgICAgaWYgKCFCaW5kaW5nU2VjdXJpdHk6OnNob3VsZEFsbG93QWNj
ZXNzVG9ET01XaW5kb3coZXhlYywganNDYXN0PCRjbGFzc05hbWUqPih0aGlzT2JqZWN0KS0+aW1w
bCgpKSlcbiIpOworICAgICAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIg
ICAgaWYgKCFCaW5kaW5nU2VjdXJpdHk6OnNob3VsZEFsbG93QWNjZXNzVG9ET01XaW5kb3coZXhl
YywganNDYXN0PCRqc0NsYXNzTmFtZSo+KHRoaXNPYmplY3QpLT5pbXBsKCkpKVxuIik7CiAgICAg
ICAgICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBwdXNoKEBp
bXBsQ29udGVudCwgIiAgICBpZiAoIXNob3VsZEFsbG93QWNjZXNzVG9GcmFtZShleGVjLCBqc0Nh
c3Q8JGNsYXNzTmFtZSo+KHRoaXNPYmplY3QpLT5pbXBsKCktPmZyYW1lKCkpKVxuIik7CisgICAg
ICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBpZiAoIXNob3VsZEFs
bG93QWNjZXNzVG9GcmFtZShleGVjLCBqc0Nhc3Q8JGpzQ2xhc3NOYW1lKj4odGhpc09iamVjdCkt
PmltcGwoKS0+ZnJhbWUoKSkpXG4iKTsKICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAg
ICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAgICAgcmV0dXJuO1xuIik7CiAgICAg
ICAgICAgICAgICAgfQpAQCAtMjM0MSw3ICsyMzY0LDcgQEAgc3ViIEdlbmVyYXRlSW1wbGVtZW50
YXRpb24KICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAvLyBTaGFkb3dp
bmcgYSBidWlsdC1pbiBjb25zdHJ1Y3RvclxuIik7CiAKICAgICAgICAgICAgICAgICBpZiAoJGlu
dGVyZmFjZU5hbWUgZXEgIkRPTVdpbmRvdyIpIHsKLSAgICAgICAgICAgICAgICAgICAgcHVzaChA
aW1wbENvbnRlbnQsICIgICAganNDYXN0PCRjbGFzc05hbWUqPih0aGlzT2JqZWN0KS0+cHV0RGly
ZWN0KGV4ZWMtPnZtKCksIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5jb25zdHJ1Y3RvciwgdmFsdWUp
O1xuIik7CisgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIGpzQ2Fz
dDwkanNDbGFzc05hbWUqPih0aGlzT2JqZWN0KS0+cHV0RGlyZWN0KGV4ZWMtPnZtKCksIGV4ZWMt
PnByb3BlcnR5TmFtZXMoKS5jb25zdHJ1Y3RvciwgdmFsdWUpO1xuIik7CiAgICAgICAgICAgICAg
ICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgZGllICJObyB3YXkgdG8gaGFuZGxlIGlu
dGVyZmFjZSB3aXRoIFJlcGxhY2VhYmxlQ29uc3RydWN0b3IgZXh0ZW5kZWQgYXR0cmlidXRlOiAk
aW50ZXJmYWNlTmFtZSI7CiAgICAgICAgICAgICAgICAgfQpAQCAtMjM1MSwxMiArMjM3NCwxMiBA
QCBzdWIgR2VuZXJhdGVJbXBsZW1lbnRhdGlvbgogICAgIH0KIAogICAgIGlmICgoJGludGVyZmFj
ZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkluZGV4ZWRHZXR0ZXIifSB8fCAkaW50ZXJmYWNlLT5l
eHRlbmRlZEF0dHJpYnV0ZXMtPnsiTnVtZXJpY0luZGV4ZWRHZXR0ZXIifSkgJiYgISRpbnRlcmZh
Y2UtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJDdXN0b21FbnVtZXJhdGVQcm9wZXJ0eSJ9KSB7Ci0g
ICAgICAgIHB1c2goQGltcGxDb250ZW50LCAidm9pZCAke2NsYXNzTmFtZX06OmdldE93blByb3Bl
cnR5TmFtZXMoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWVB
cnJheSYgcHJvcGVydHlOYW1lcywgRW51bWVyYXRpb25Nb2RlIG1vZGUpXG4iKTsKKyAgICAgICAg
cHVzaChAaW1wbENvbnRlbnQsICJ2b2lkICR7anNDbGFzc05hbWV9OjpnZXRPd25Qcm9wZXJ0eU5h
bWVzKEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lQXJyYXkm
IHByb3BlcnR5TmFtZXMsIEVudW1lcmF0aW9uTW9kZSBtb2RlKVxuIik7CiAgICAgICAgIHB1c2go
QGltcGxDb250ZW50LCAie1xuIik7Ci0gICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICR7
Y2xhc3NOYW1lfSogdGhpc09iamVjdCA9IGpzQ2FzdDwke2NsYXNzTmFtZX0qPihvYmplY3QpO1xu
Iik7CisgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICR7anNDbGFzc05hbWV9KiB0aGlz
T2JqZWN0ID0ganNDYXN0PCR7anNDbGFzc05hbWV9Kj4ob2JqZWN0KTtcbiIpOwogICAgICAgICBw
dXNoKEBpbXBsQ29udGVudCwgIiAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRoaXNPYmpl
Y3QsICZzX2luZm8pO1xuIik7CiAgICAgICAgIGlmICgkaW50ZXJmYWNlLT5leHRlbmRlZEF0dHJp
YnV0ZXMtPnsiSW5kZXhlZEdldHRlciJ9IHx8ICRpbnRlcmZhY2UtPmV4dGVuZGVkQXR0cmlidXRl
cy0+eyJOdW1lcmljSW5kZXhlZEdldHRlciJ9KSB7Ci0gICAgICAgICAgICBwdXNoKEBpbXBsQ29u
dGVudCwgIiAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgc3RhdGljX2Nhc3Q8JHtpbnRlcmZh
Y2VOYW1lfSo+KHRoaXNPYmplY3QtPmltcGwoKSktPmxlbmd0aCgpOyArK2kpXG4iKTsKKyAgICAg
ICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBz
dGF0aWNfY2FzdDwke2ltcGxDbGFzc05hbWV9Kj4odGhpc09iamVjdC0+aW1wbCgpKS0+bGVuZ3Ro
KCk7ICsraSlcbiIpOwogICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgICAgIHBy
b3BlcnR5TmFtZXMuYWRkKElkZW50aWZpZXI6OmZyb20oZXhlYywgaSkpO1xuIik7CiAgICAgICAg
IH0KICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgIEJhc2U6OmdldE93blByb3BlcnR5
TmFtZXModGhpc09iamVjdCwgZXhlYywgcHJvcGVydHlOYW1lcywgbW9kZSk7XG4iKTsKQEAgLTIz
NjQsOCArMjM4Nyw4IEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uCiAgICAgfQogCiAgICAg
aWYgKCEkaW50ZXJmYWNlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiT21pdENvbnN0cnVjdG9yIn0p
IHsKLSAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJKU1ZhbHVlICR7Y2xhc3NOYW1lfTo6Z2V0
Q29uc3RydWN0b3IoRXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
KVxue1xuIik7Ci0gICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIHJldHVybiBnZXRET01D
b25zdHJ1Y3Rvcjwke2NsYXNzTmFtZX1Db25zdHJ1Y3Rvcj4oZXhlYywganNDYXN0PEpTRE9NR2xv
YmFsT2JqZWN0Kj4oZ2xvYmFsT2JqZWN0KSk7XG4iKTsKKyAgICAgICAgcHVzaChAaW1wbENvbnRl
bnQsICJKU1ZhbHVlICR7anNDbGFzc05hbWV9OjpnZXRDb25zdHJ1Y3RvcihFeGVjU3RhdGUqIGV4
ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpXG57XG4iKTsKKyAgICAgICAgcHVzaChA
aW1wbENvbnRlbnQsICIgICAgcmV0dXJuIGdldERPTUNvbnN0cnVjdG9yPCR7anNDbGFzc05hbWV9
Q29uc3RydWN0b3I+KGV4ZWMsIGpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KGdsb2JhbE9iamVj
dCkpO1xuIik7CiAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAifVxuXG4iKTsKICAgICB9CiAK
QEAgLTIzNzksNyArMjQwMiw3IEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uCiAKICAgICAg
ICAgICAgIG5leHQgaWYgJGlzQ3VzdG9tICYmICRpc092ZXJsb2FkZWQgJiYgJGZ1bmN0aW9uLT57
b3ZlcmxvYWRJbmRleH0gPiAxOwogCi0gICAgICAgICAgICBteSAkZnVuY3Rpb25OYW1lID0gR2V0
RnVuY3Rpb25OYW1lKCRjbGFzc05hbWUsICRmdW5jdGlvbik7CisgICAgICAgICAgICBteSAkZnVu
Y3Rpb25OYW1lID0gR2V0RnVuY3Rpb25OYW1lKCRqc0NsYXNzTmFtZSwgJGZ1bmN0aW9uKTsKIAog
ICAgICAgICAgICAgbXkgJGNvbmRpdGlvbmFsID0gJGZ1bmN0aW9uLT5zaWduYXR1cmUtPmV4dGVu
ZGVkQXR0cmlidXRlcy0+eyJDb25kaXRpb25hbCJ9OwogICAgICAgICAgICAgaWYgKCRjb25kaXRp
b25hbCkgewpAQCAtMjQwNiw3ICsyNDI5LDcgQEAgc3ViIEdlbmVyYXRlSW1wbGVtZW50YXRpb24K
ICAgICAgICAgICAgIGlmICgkZnVuY3Rpb24tPmlzU3RhdGljKSB7CiAgICAgICAgICAgICAgICAg
aWYgKCRpc0N1c3RvbSkgewogICAgICAgICAgICAgICAgICAgICBHZW5lcmF0ZUFyZ3VtZW50c0Nv
dW50Q2hlY2soXEBpbXBsQ29udGVudCwgJGZ1bmN0aW9uLCAkaW50ZXJmYWNlKTsKLSAgICAgICAg
ICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZSgke2NsYXNzTmFtZX06OiIgLiAkZnVuY3Rpb25JbXBsZW1lbnRhdGlvbk5hbWUgLiAiKGV4ZWMp
KTtcbiIpOworICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKCR7anNDbGFzc05hbWV9OjoiIC4gJGZ1bmN0aW9uSW1wbGVtZW50
YXRpb25OYW1lIC4gIihleGVjKSk7XG4iKTsKICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAg
ICAgICAgICAgICAgICAgICBHZW5lcmF0ZUFyZ3VtZW50c0NvdW50Q2hlY2soXEBpbXBsQ29udGVu
dCwgJGZ1bmN0aW9uLCAkaW50ZXJmYWNlKTsKIApAQCAtMjQxNSwyNiArMjQzOCwyNiBAQCBzdWIg
R2VuZXJhdGVJbXBsZW1lbnRhdGlvbgogICAgICAgICAgICAgICAgICAgICB9CiAKICAgICAgICAg
ICAgICAgICAgICAgbXkgJG51bVBhcmFtZXRlcnMgPSBAeyRmdW5jdGlvbi0+cGFyYW1ldGVyc307
Ci0gICAgICAgICAgICAgICAgICAgIG15ICgkZnVuY3Rpb25TdHJpbmcsICRkdW1teSkgPSBHZW5l
cmF0ZVBhcmFtZXRlcnNDaGVjayhcQGltcGxDb250ZW50LCAkZnVuY3Rpb24sICRpbnRlcmZhY2Us
ICRudW1QYXJhbWV0ZXJzLCAkaW50ZXJmYWNlTmFtZSwgJGZ1bmN0aW9uSW1wbGVtZW50YXRpb25O
YW1lLCAkc3ZnUHJvcGVydHlUeXBlLCAkc3ZnUHJvcGVydHlPckxpc3RQcm9wZXJ0eVR5cGUsICRz
dmdMaXN0UHJvcGVydHlUeXBlKTsKLSAgICAgICAgICAgICAgICAgICAgR2VuZXJhdGVJbXBsZW1l
bnRhdGlvbkZ1bmN0aW9uQ2FsbCgkZnVuY3Rpb24sICRmdW5jdGlvblN0cmluZywgIiAgICAiLCAk
c3ZnUHJvcGVydHlUeXBlLCAkaW50ZXJmYWNlTmFtZSk7CisgICAgICAgICAgICAgICAgICAgIG15
ICgkZnVuY3Rpb25TdHJpbmcsICRkdW1teSkgPSBHZW5lcmF0ZVBhcmFtZXRlcnNDaGVjayhcQGlt
cGxDb250ZW50LCAkZnVuY3Rpb24sICRpbnRlcmZhY2UsICRudW1QYXJhbWV0ZXJzLCAkZnVuY3Rp
b25JbXBsZW1lbnRhdGlvbk5hbWUsICRzdmdQcm9wZXJ0eVR5cGUsICRzdmdQcm9wZXJ0eU9yTGlz
dFByb3BlcnR5VHlwZSwgJHN2Z0xpc3RQcm9wZXJ0eVR5cGUpOworICAgICAgICAgICAgICAgICAg
ICBHZW5lcmF0ZUltcGxlbWVudGF0aW9uRnVuY3Rpb25DYWxsKCRmdW5jdGlvbiwgJGZ1bmN0aW9u
U3RyaW5nLCAiICAgICIsICRzdmdQcm9wZXJ0eVR5cGUsICRpbnRlcmZhY2UpOwogICAgICAgICAg
ICAgICAgIH0KICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgaWYgKCRpbnRl
cmZhY2VOYW1lIGVxICJET01XaW5kb3ciKSB7Ci0gICAgICAgICAgICAgICAgICAgIHB1c2goQGlt
cGxDb250ZW50LCAiICAgICRjbGFzc05hbWUqIGNhc3RlZFRoaXMgPSB0b0pTRE9NV2luZG93KGV4
ZWMtPmhvc3RUaGlzVmFsdWUoKS50b1RoaXNPYmplY3QoZXhlYykpO1xuIik7CisgICAgICAgICAg
ICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICRqc0NsYXNzTmFtZSogY2FzdGVkVGhp
cyA9IHRvSlNET01XaW5kb3coZXhlYy0+aG9zdFRoaXNWYWx1ZSgpLnRvVGhpc09iamVjdChleGVj
KSk7XG4iKTsKICAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgaWYg
KCFjYXN0ZWRUaGlzKVxuIik7CiAgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50
LCAiICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjKTtcbiIpOwogICAgICAgICAg
ICAgICAgIH0gZWxzaWYgKCRpbnRlcmZhY2UtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJJc1dvcmtl
ckNvbnRleHQifSkgewotICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAg
ICAkY2xhc3NOYW1lKiBjYXN0ZWRUaGlzID0gdG8ke2NsYXNzTmFtZX0oZXhlYy0+aG9zdFRoaXNW
YWx1ZSgpLnRvVGhpc09iamVjdChleGVjKSk7XG4iKTsKKyAgICAgICAgICAgICAgICAgICAgcHVz
aChAaW1wbENvbnRlbnQsICIgICAgJGpzQ2xhc3NOYW1lKiBjYXN0ZWRUaGlzID0gdG8ke2pzQ2xh
c3NOYW1lfShleGVjLT5ob3N0VGhpc1ZhbHVlKCkudG9UaGlzT2JqZWN0KGV4ZWMpKTtcbiIpOwog
ICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBpZiAoIWNhc3RlZFRo
aXMpXG4iKTsKICAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgICAg
IHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMpO1xuIik7CiAgICAgICAgICAgICAgICAgfSBl
bHNlIHsKICAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgSlNWYWx1
ZSB0aGlzVmFsdWUgPSBleGVjLT5ob3N0VGhpc1ZhbHVlKCk7XG4iKTsKLSAgICAgICAgICAgICAg
ICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgaWYgKCF0aGlzVmFsdWUuaW5oZXJpdHMoJiR7
Y2xhc3NOYW1lfTo6c19pbmZvKSlcbiIpOworICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBs
Q29udGVudCwgIiAgICBpZiAoIXRoaXNWYWx1ZS5pbmhlcml0cygmJHtqc0NsYXNzTmFtZX06OnNf
aW5mbykpXG4iKTsKICAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAg
ICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMpO1xuIik7Ci0gICAgICAgICAgICAgICAg
ICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICRjbGFzc05hbWUqIGNhc3RlZFRoaXMgPSBqc0Nh
c3Q8JGNsYXNzTmFtZSo+KGFzT2JqZWN0KHRoaXNWYWx1ZSkpO1xuIik7CisgICAgICAgICAgICAg
ICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICRqc0NsYXNzTmFtZSogY2FzdGVkVGhpcyA9
IGpzQ2FzdDwkanNDbGFzc05hbWUqPihhc09iamVjdCh0aGlzVmFsdWUpKTtcbiIpOwogICAgICAg
ICAgICAgICAgIH0KIAotICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIEFT
U0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgJiR7Y2xhc3NOYW1lfTo6c19pbmZv
KTtcbiIpOworICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIEFTU0VSVF9H
Q19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgJiR7anNDbGFzc05hbWV9OjpzX2luZm8pO1xu
Iik7CiAKICAgICAgICAgICAgICAgICBpZiAoJGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVz
LT57IkNoZWNrU2VjdXJpdHkifSBhbmQKICAgICAgICAgICAgICAgICAgICAgISRmdW5jdGlvbi0+
c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiRG9Ob3RDaGVja1NlY3VyaXR5In0pIHsK
QEAgLTI0NjUsOSArMjQ4OCw5IEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uCiAKICAgICAg
ICAgICAgICAgICAgICAgIyBGb3IgY29tcGF0aWJpbGl0eSB3aXRoIGxlZ2FjeSBjb250ZW50LCB0
aGUgRXZlbnRMaXN0ZW5lciBjYWxscyBhcmUgZ2VuZXJhdGVkIHdpdGhvdXQgR2VuZXJhdGVBcmd1
bWVudHNDb3VudENoZWNrLgogICAgICAgICAgICAgICAgICAgICBpZiAoJGZ1bmN0aW9uLT5zaWdu
YXR1cmUtPm5hbWUgZXEgImFkZEV2ZW50TGlzdGVuZXIiKSB7Ci0gICAgICAgICAgICAgICAgICAg
ICAgICBwdXNoKEBpbXBsQ29udGVudCwgR2VuZXJhdGVFdmVudExpc3RlbmVyQ2FsbCgkY2xhc3NO
YW1lLCAiYWRkIikpOworICAgICAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQs
IEdlbmVyYXRlRXZlbnRMaXN0ZW5lckNhbGwoJGpzQ2xhc3NOYW1lLCAiYWRkIikpOwogICAgICAg
ICAgICAgICAgICAgICB9IGVsc2lmICgkZnVuY3Rpb24tPnNpZ25hdHVyZS0+bmFtZSBlcSAicmVt
b3ZlRXZlbnRMaXN0ZW5lciIpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxD
b250ZW50LCBHZW5lcmF0ZUV2ZW50TGlzdGVuZXJDYWxsKCRjbGFzc05hbWUsICJyZW1vdmUiKSk7
CisgICAgICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgR2VuZXJhdGVFdmVu
dExpc3RlbmVyQ2FsbCgkanNDbGFzc05hbWUsICJyZW1vdmUiKSk7CiAgICAgICAgICAgICAgICAg
ICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBHZW5lcmF0ZUFyZ3VtZW50c0Nv
dW50Q2hlY2soXEBpbXBsQ29udGVudCwgJGZ1bmN0aW9uLCAkaW50ZXJmYWNlKTsKIApAQCAtMjQ4
Miw4ICsyNTA1LDggQEAgc3ViIEdlbmVyYXRlSW1wbGVtZW50YXRpb24KICAgICAgICAgICAgICAg
ICAgICAgICAgIH0KIAogICAgICAgICAgICAgICAgICAgICAgICAgbXkgJG51bVBhcmFtZXRlcnMg
PSBAeyRmdW5jdGlvbi0+cGFyYW1ldGVyc307Ci0gICAgICAgICAgICAgICAgICAgICAgICBteSAo
JGZ1bmN0aW9uU3RyaW5nLCAkZHVtbXkpID0gR2VuZXJhdGVQYXJhbWV0ZXJzQ2hlY2soXEBpbXBs
Q29udGVudCwgJGZ1bmN0aW9uLCAkaW50ZXJmYWNlLCAkbnVtUGFyYW1ldGVycywgJGludGVyZmFj
ZU5hbWUsICRmdW5jdGlvbkltcGxlbWVudGF0aW9uTmFtZSwgJHN2Z1Byb3BlcnR5VHlwZSwgJHN2
Z1Byb3BlcnR5T3JMaXN0UHJvcGVydHlUeXBlLCAkc3ZnTGlzdFByb3BlcnR5VHlwZSk7Ci0gICAg
ICAgICAgICAgICAgICAgICAgICBHZW5lcmF0ZUltcGxlbWVudGF0aW9uRnVuY3Rpb25DYWxsKCRm
dW5jdGlvbiwgJGZ1bmN0aW9uU3RyaW5nLCAiICAgICIsICRzdmdQcm9wZXJ0eVR5cGUsICRpbnRl
cmZhY2VOYW1lKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIG15ICgkZnVuY3Rpb25TdHJpbmcs
ICRkdW1teSkgPSBHZW5lcmF0ZVBhcmFtZXRlcnNDaGVjayhcQGltcGxDb250ZW50LCAkZnVuY3Rp
b24sICRpbnRlcmZhY2UsICRudW1QYXJhbWV0ZXJzLCAkZnVuY3Rpb25JbXBsZW1lbnRhdGlvbk5h
bWUsICRzdmdQcm9wZXJ0eVR5cGUsICRzdmdQcm9wZXJ0eU9yTGlzdFByb3BlcnR5VHlwZSwgJHN2
Z0xpc3RQcm9wZXJ0eVR5cGUpOworICAgICAgICAgICAgICAgICAgICAgICAgR2VuZXJhdGVJbXBs
ZW1lbnRhdGlvbkZ1bmN0aW9uQ2FsbCgkZnVuY3Rpb24sICRmdW5jdGlvblN0cmluZywgIiAgICAi
LCAkc3ZnUHJvcGVydHlUeXBlLCAkaW50ZXJmYWNlKTsKICAgICAgICAgICAgICAgICAgICAgfQog
ICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KQEAgLTI0OTIsNyArMjUxNSw3IEBAIHN1
YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uCiAKICAgICAgICAgICAgIGlmICghJGlzQ3VzdG9tICYm
ICRpc092ZXJsb2FkZWQgJiYgJGZ1bmN0aW9uLT57b3ZlcmxvYWRJbmRleH0gPT0gQHskZnVuY3Rp
b24tPntvdmVybG9hZHN9fSkgewogICAgICAgICAgICAgICAgICMgR2VuZXJhdGUgYSBmdW5jdGlv
biBkaXNwYXRjaGluZyBjYWxsIHRvIHRoZSByZXN0IG9mIHRoZSBvdmVybG9hZHMuCi0gICAgICAg
ICAgICAgICAgR2VuZXJhdGVPdmVybG9hZGVkRnVuY3Rpb24oJGZ1bmN0aW9uLCAkaW50ZXJmYWNl
LCAkaW50ZXJmYWNlTmFtZSk7CisgICAgICAgICAgICAgICAgR2VuZXJhdGVPdmVybG9hZGVkRnVu
Y3Rpb24oJGZ1bmN0aW9uLCAkaW50ZXJmYWNlKTsKICAgICAgICAgICAgIH0KIAogICAgICAgICAg
ICAgcHVzaChAaW1wbENvbnRlbnQsICIjZW5kaWZcblxuIikgaWYgJGNvbmRpdGlvbmFsOwpAQCAt
MjUwMCwxNCArMjUyMywxNCBAQCBzdWIgR2VuZXJhdGVJbXBsZW1lbnRhdGlvbgogICAgIH0KIAog
ICAgIGlmICgkbmVlZHNNYXJrQ2hpbGRyZW4gJiYgISRpbnRlcmZhY2UtPmV4dGVuZGVkQXR0cmli
dXRlcy0+eyJKU0N1c3RvbU1hcmtGdW5jdGlvbiJ9KSB7Ci0gICAgICAgIHB1c2goQGltcGxDb250
ZW50LCAidm9pZCAke2NsYXNzTmFtZX06OnZpc2l0Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBTbG90
VmlzaXRvciYgdmlzaXRvcilcbiIpOworICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgInZvaWQg
JHtqc0NsYXNzTmFtZX06OnZpc2l0Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBTbG90VmlzaXRvciYg
dmlzaXRvcilcbiIpOwogICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIntcbiIpOwotICAgICAg
ICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAke2NsYXNzTmFtZX0qIHRoaXNPYmplY3QgPSBqc0Nh
c3Q8JHtjbGFzc05hbWV9Kj4oY2VsbCk7XG4iKTsKKyAgICAgICAgcHVzaChAaW1wbENvbnRlbnQs
ICIgICAgJHtqc0NsYXNzTmFtZX0qIHRoaXNPYmplY3QgPSBqc0Nhc3Q8JHtqc0NsYXNzTmFtZX0q
PihjZWxsKTtcbiIpOwogICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBBU1NFUlRfR0Nf
T0JKRUNUX0lOSEVSSVRTKHRoaXNPYmplY3QsICZzX2luZm8pO1xuIik7CiAgICAgICAgIHB1c2go
QGltcGxDb250ZW50LCAiICAgIENPTVBJTEVfQVNTRVJUKFN0cnVjdHVyZUZsYWdzICYgT3ZlcnJp
ZGVzVmlzaXRDaGlsZHJlbiwgT3ZlcnJpZGVzVmlzaXRDaGlsZHJlbldpdGhvdXRTZXR0aW5nRmxh
Zyk7XG4iKTsKICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgQVNTRVJUKHRoaXNPYmpl
Y3QtPnN0cnVjdHVyZSgpLT50eXBlSW5mbygpLm92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4oKSk7XG4i
KTsKICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgQmFzZTo6dmlzaXRDaGlsZHJlbih0
aGlzT2JqZWN0LCB2aXNpdG9yKTtcbiIpOwotICAgICAgICBpZiAoJGludGVyZmFjZS0+ZXh0ZW5k
ZWRBdHRyaWJ1dGVzLT57IkV2ZW50VGFyZ2V0In0gfHwgJGludGVyZmFjZS0+bmFtZSBlcSAiRXZl
bnRUYXJnZXQiKSB7CisgICAgICAgIGlmICgkaW50ZXJmYWNlLT5leHRlbmRlZEF0dHJpYnV0ZXMt
PnsiRXZlbnRUYXJnZXQifSB8fCAkaW50ZXJmYWNlTmFtZSBlcSAiRXZlbnRUYXJnZXQiKSB7CiAg
ICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICB0aGlzT2JqZWN0LT5pbXBsKCktPnZp
c2l0SlNFdmVudExpc3RlbmVycyh2aXNpdG9yKTtcbiIpOwogICAgICAgICB9CiAgICAgICAgIGlm
ICgkbnVtQ2FjaGVkQXR0cmlidXRlcyA+IDApIHsKQEAgLTI1NTMsMTUgKzI1NzYsMTUgQEAgc3Vi
IEdlbmVyYXRlSW1wbGVtZW50YXRpb24KICAgICB9CiAKICAgICBpZiAoJGludGVyZmFjZS0+ZXh0
ZW5kZWRBdHRyaWJ1dGVzLT57IkluZGV4ZWRHZXR0ZXIifSkgewotICAgICAgICBwdXNoKEBpbXBs
Q29udGVudCwgIlxuSlNWYWx1ZSAke2NsYXNzTmFtZX06OmluZGV4R2V0dGVyKEV4ZWNTdGF0ZSog
ZXhlYywgSlNWYWx1ZSBzbG90QmFzZSwgdW5zaWduZWQgaW5kZXgpXG4iKTsKKyAgICAgICAgcHVz
aChAaW1wbENvbnRlbnQsICJcbkpTVmFsdWUgJHtqc0NsYXNzTmFtZX06OmluZGV4R2V0dGVyKEV4
ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBzbG90QmFzZSwgdW5zaWduZWQgaW5kZXgpXG4iKTsKICAg
ICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJ7XG4iKTsKLSAgICAgICAgcHVzaChAaW1wbENvbnRl
bnQsICIgICAgJHtjbGFzc05hbWV9KiB0aGlzT2JqID0ganNDYXN0PCRjbGFzc05hbWUqPihhc09i
amVjdChzbG90QmFzZSkpO1xuIik7CisgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICR7
anNDbGFzc05hbWV9KiB0aGlzT2JqID0ganNDYXN0PCRqc0NsYXNzTmFtZSo+KGFzT2JqZWN0KHNs
b3RCYXNlKSk7XG4iKTsKICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgQVNTRVJUX0dD
X09CSkVDVF9JTkhFUklUUyh0aGlzT2JqLCAmc19pbmZvKTtcbiIpOwogICAgICAgICBpZiAoSW5k
ZXhHZXR0ZXJSZXR1cm5zU3RyaW5ncygkaW50ZXJmYWNlTmFtZSkpIHsKICAgICAgICAgICAgICRp
bXBsSW5jbHVkZXN7IktVUkwuaCJ9ID0gMTsKICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50
LCAiICAgIHJldHVybiBqc1N0cmluZ09yVW5kZWZpbmVkKGV4ZWMsIHRoaXNPYmotPmltcGwoKS0+
aXRlbShpbmRleCkpO1xuIik7CiAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBwdXNoKEBp
bXBsQ29udGVudCwgIiAgICByZXR1cm4gdG9KUyhleGVjLCB0aGlzT2JqLT5nbG9iYWxPYmplY3Qo
KSwgc3RhdGljX2Nhc3Q8JGludGVyZmFjZU5hbWUqPih0aGlzT2JqLT5pbXBsKCkpLT5pdGVtKGlu
ZGV4KSk7XG4iKTsKKyAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIHJldHVybiB0
b0pTKGV4ZWMsIHRoaXNPYmotPmdsb2JhbE9iamVjdCgpLCBzdGF0aWNfY2FzdDwkaW1wbENsYXNz
TmFtZSo+KHRoaXNPYmotPmltcGwoKSktPml0ZW0oaW5kZXgpKTtcbiIpOwogICAgICAgICB9CiAg
ICAgICAgIHB1c2goQGltcGxDb250ZW50LCAifVxuXG4iKTsKICAgICAgICAgaWYgKCRpbnRlcmZh
Y2VOYW1lID1+IC9eSFRNTFx3KkNvbGxlY3Rpb24kLyBvciAkaW50ZXJmYWNlTmFtZSBlcSAiUmFk
aW9Ob2RlTGlzdCIpIHsKQEAgLTI1NzEsMTAgKzI1OTQsMTAgQEAgc3ViIEdlbmVyYXRlSW1wbGVt
ZW50YXRpb24KICAgICB9CiAKICAgICBpZiAoJGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVz
LT57Ik51bWVyaWNJbmRleGVkR2V0dGVyIn0pIHsKLSAgICAgICAgcHVzaChAaW1wbENvbnRlbnQs
ICJcbkpTVmFsdWUgJHtjbGFzc05hbWV9OjpnZXRCeUluZGV4KEV4ZWNTdGF0ZSosIHVuc2lnbmVk
IGluZGV4KVxuIik7CisgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiXG5KU1ZhbHVlICR7anND
bGFzc05hbWV9OjpnZXRCeUluZGV4KEV4ZWNTdGF0ZSosIHVuc2lnbmVkIGluZGV4KVxuIik7CiAg
ICAgICAgIHB1c2goQGltcGxDb250ZW50LCAie1xuIik7CiAgICAgICAgIHB1c2goQGltcGxDb250
ZW50LCAiICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpcywgJnNfaW5mbyk7XG4iKTsK
LSAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgZG91YmxlIHJlc3VsdCA9IHN0YXRpY19j
YXN0PCRpbnRlcmZhY2VOYW1lKj4oaW1wbCgpKS0+aXRlbShpbmRleCk7XG4iKTsKKyAgICAgICAg
cHVzaChAaW1wbENvbnRlbnQsICIgICAgZG91YmxlIHJlc3VsdCA9IHN0YXRpY19jYXN0PCRpbXBs
Q2xhc3NOYW1lKj4oaW1wbCgpKS0+aXRlbShpbmRleCk7XG4iKTsKICAgICAgICAgIyBqc051bWJl
ciBjb252ZXJzaW9uIGRvZXNuJ3Qgc3VwcHJlc3Mgc2lnbmFsbGluZyBOYU5zLCBzbyBlbmZvcmNl
IHRoYXQgaGVyZS4KICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgaWYgKHN0ZDo6aXNu
YW4ocmVzdWx0KSlcbiIpOwogICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAgICAgcmV0
dXJuIGpzTmFOKCk7XG4iKTsKQEAgLTI1ODgsMjQgKzI2MTEsMjQgQEAgc3ViIEdlbmVyYXRlSW1w
bGVtZW50YXRpb24KIAogICAgIGlmICgkaW50ZXJmYWNlTmFtZSBlcSAiSFRNTFByb3BlcnRpZXND
b2xsZWN0aW9uIiBvciAkaW50ZXJmYWNlTmFtZSBlcSAiRE9NTmFtZWRGbG93Q29sbGVjdGlvbiIp
IHsKICAgICAgICAgaWYgKCRpbnRlcmZhY2UtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJOYW1lZEdl
dHRlciJ9KSB7Ci0gICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgImJvb2wgJHtjbGFzc05h
bWV9OjpjYW5HZXRJdGVtc0Zvck5hbWUoRXhlY1N0YXRlKiwgJGludGVyZmFjZU5hbWUqIGNvbGxl
Y3Rpb24sIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpXG4iKTsKKyAgICAgICAgICAgIHB1c2go
QGltcGxDb250ZW50LCAiYm9vbCAke2pzQ2xhc3NOYW1lfTo6Y2FuR2V0SXRlbXNGb3JOYW1lKEV4
ZWNTdGF0ZSosICRpbXBsQ2xhc3NOYW1lKiBjb2xsZWN0aW9uLCBQcm9wZXJ0eU5hbWUgcHJvcGVy
dHlOYW1lKVxuIik7CiAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIntcbiIpOwogICAg
ICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgcmV0dXJuIGNvbGxlY3Rpb24tPmhhc05h
bWVkSXRlbShwcm9wZXJ0eU5hbWVUb0F0b21pY1N0cmluZyhwcm9wZXJ0eU5hbWUpKTtcbiIpOwog
ICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJ9XG5cbiIpOwotICAgICAgICAgICAgcHVz
aChAaW1wbENvbnRlbnQsICJKU1ZhbHVlICR7Y2xhc3NOYW1lfTo6bmFtZUdldHRlcihFeGVjU3Rh
dGUqIGV4ZWMsIEpTVmFsdWUgc2xvdEJhc2UsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpXG4i
KTsKKyAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiSlNWYWx1ZSAke2pzQ2xhc3NOYW1l
fTo6bmFtZUdldHRlcihFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgc2xvdEJhc2UsIFByb3BlcnR5
TmFtZSBwcm9wZXJ0eU5hbWUpXG4iKTsKICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAi
e1xuIik7Ci0gICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAke2NsYXNzTmFtZX0q
IHRoaXNPYmogPSBqc0Nhc3Q8JGNsYXNzTmFtZSo+KGFzT2JqZWN0KHNsb3RCYXNlKSk7XG4iKTsK
KyAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICR7anNDbGFzc05hbWV9KiB0aGlz
T2JqID0ganNDYXN0PCRqc0NsYXNzTmFtZSo+KGFzT2JqZWN0KHNsb3RCYXNlKSk7XG4iKTsKICAg
ICAgICAgICAgIGlmICgkaW50ZXJmYWNlTmFtZSBlcSAiSFRNTFByb3BlcnRpZXNDb2xsZWN0aW9u
IikgewotICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIHJldHVybiB0b0pT
KGV4ZWMsIHRoaXNPYmotPmdsb2JhbE9iamVjdCgpLCBXVEY6OmdldFB0cihzdGF0aWNfY2FzdDwk
aW50ZXJmYWNlTmFtZSo+KHRoaXNPYmotPmltcGwoKSktPnByb3BlcnR5Tm9kZUxpc3QocHJvcGVy
dHlOYW1lVG9BdG9taWNTdHJpbmcocHJvcGVydHlOYW1lKSkpKTtcbiIpOworICAgICAgICAgICAg
ICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIHJldHVybiB0b0pTKGV4ZWMsIHRoaXNPYmotPmds
b2JhbE9iamVjdCgpLCBXVEY6OmdldFB0cihzdGF0aWNfY2FzdDwkaW1wbENsYXNzTmFtZSo+KHRo
aXNPYmotPmltcGwoKSktPnByb3BlcnR5Tm9kZUxpc3QocHJvcGVydHlOYW1lVG9BdG9taWNTdHJp
bmcocHJvcGVydHlOYW1lKSkpKTtcbiIpOwogICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAg
ICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICByZXR1cm4gdG9KUyhleGVjLCB0aGlzT2Jq
LT5nbG9iYWxPYmplY3QoKSwgc3RhdGljX2Nhc3Q8JGludGVyZmFjZU5hbWUqPih0aGlzT2JqLT5p
bXBsKCkpLT5uYW1lZEl0ZW0ocHJvcGVydHlOYW1lVG9BdG9taWNTdHJpbmcocHJvcGVydHlOYW1l
KSkpO1xuIik7CisgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgcmV0dXJu
IHRvSlMoZXhlYywgdGhpc09iai0+Z2xvYmFsT2JqZWN0KCksIHN0YXRpY19jYXN0PCRpbXBsQ2xh
c3NOYW1lKj4odGhpc09iai0+aW1wbCgpKS0+bmFtZWRJdGVtKHByb3BlcnR5TmFtZVRvQXRvbWlj
U3RyaW5nKHByb3BlcnR5TmFtZSkpKTtcbiIpOwogICAgICAgICAgICAgfQogICAgICAgICAgICAg
cHVzaChAaW1wbENvbnRlbnQsICJ9XG5cbiIpOwogICAgICAgICB9CiAgICAgfQogCiAgICAgaWYg
KCghJGhhc1BhcmVudCAmJiAhR2V0Q3VzdG9tSXNSZWFjaGFibGUoJGludGVyZmFjZSkpfHwgR2V0
R2VuZXJhdGVJc1JlYWNoYWJsZSgkaW50ZXJmYWNlKSB8fCAkY29kZUdlbmVyYXRvci0+SW5oZXJp
dHNFeHRlbmRlZEF0dHJpYnV0ZSgkaW50ZXJmYWNlLCAiQWN0aXZlRE9NT2JqZWN0IikpIHsKLSAg
ICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJzdGF0aWMgaW5saW5lIGJvb2wgaXNPYnNlcnZhYmxl
KEpTJHtpbnRlcmZhY2VOYW1lfSoganMke2ludGVyZmFjZU5hbWV9KVxuIik7CisgICAgICAgIHB1
c2goQGltcGxDb250ZW50LCAic3RhdGljIGlubGluZSBib29sIGlzT2JzZXJ2YWJsZSgke2pzQ2xh
c3NOYW1lfSoganMke2ludGVyZmFjZU5hbWV9KVxuIik7CiAgICAgICAgIHB1c2goQGltcGxDb250
ZW50LCAie1xuIik7CiAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIGlmIChqcyR7aW50
ZXJmYWNlTmFtZX0tPmhhc0N1c3RvbVByb3BlcnRpZXMoKSlcbiIpOwogICAgICAgICBwdXNoKEBp
bXBsQ29udGVudCwgIiAgICAgICAgcmV0dXJuIHRydWU7XG4iKTsKQEAgLTI2MTYsOSArMjYzOSw5
IEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uCiAgICAgICAgIHB1c2goQGltcGxDb250ZW50
LCAiICAgIHJldHVybiBmYWxzZTtcbiIpOwogICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIn1c
blxuIik7CiAKLSAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJib29sIEpTJHtpbnRlcmZhY2VO
YW1lfU93bmVyOjppc1JlYWNoYWJsZUZyb21PcGFxdWVSb290cyhKU0M6OkhhbmRsZTxKU0M6OlVu
a25vd24+IGhhbmRsZSwgdm9pZCosIFNsb3RWaXNpdG9yJiB2aXNpdG9yKVxuIik7CisgICAgICAg
IHB1c2goQGltcGxDb250ZW50LCAiYm9vbCAke2pzQ2xhc3NOYW1lfU93bmVyOjppc1JlYWNoYWJs
ZUZyb21PcGFxdWVSb290cyhKU0M6OkhhbmRsZTxKU0M6OlVua25vd24+IGhhbmRsZSwgdm9pZCos
IFNsb3RWaXNpdG9yJiB2aXNpdG9yKVxuIik7CiAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAi
e1xuIik7Ci0gICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIEpTJHtpbnRlcmZhY2VOYW1l
fSoganMke2ludGVyZmFjZU5hbWV9ID0ganNDYXN0PEpTJHtpbnRlcmZhY2VOYW1lfSo+KGhhbmRs
ZS5nZXQoKS5hc0NlbGwoKSk7XG4iKTsKKyAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAg
JHtqc0NsYXNzTmFtZX0qIGpzJHtpbnRlcmZhY2VOYW1lfSA9IGpzQ2FzdDwke2pzQ2xhc3NOYW1l
fSo+KGhhbmRsZS5nZXQoKS5hc0NlbGwoKSk7XG4iKTsKICAgICAgICAgIyBBbGwgQWN0aXZlRE9N
T2JqZWN0cyBpbXBsZW1lbnQgaGFzUGVuZGluZ0FjdGl2aXR5KCksIGJ1dCBub3QgYWxsIG9mIHRo
ZW0KICAgICAgICAgIyBpbmNyZW1lbnQgdGhlaXIgQysrIHJlZmVyZW5jZSBjb3VudHMgd2hlbiBo
YXNQZW5kaW5nQWN0aXZpdHkoKSBiZWNvbWVzCiAgICAgICAgICMgdHJ1ZS4gQXMgYSByZXN1bHQs
IEFjdGl2ZURPTU9iamVjdHMgY2FuIGJlIHByZW1hdHVyZWx5IGRlc3Ryb3llZCBiZWZvcmUKQEAg
LTI2ODUsOSArMjcwOCw5IEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uCiAgICAgICAgICBH
ZXRHZW5lcmF0ZUlzUmVhY2hhYmxlKCRpbnRlcmZhY2UpIHx8CiAgICAgICAgICBHZXRDdXN0b21J
c1JlYWNoYWJsZSgkaW50ZXJmYWNlKSB8fAogICAgICAgICAgJGNvZGVHZW5lcmF0b3ItPkluaGVy
aXRzRXh0ZW5kZWRBdHRyaWJ1dGUoJGludGVyZmFjZSwgIkFjdGl2ZURPTU9iamVjdCIpKSkgewot
ICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgInZvaWQgSlMke2ludGVyZmFjZU5hbWV9T3duZXI6
OmZpbmFsaXplKEpTQzo6SGFuZGxlPEpTQzo6VW5rbm93bj4gaGFuZGxlLCB2b2lkKiBjb250ZXh0
KVxuIik7CisgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAidm9pZCAke2pzQ2xhc3NOYW1lfU93
bmVyOjpmaW5hbGl6ZShKU0M6OkhhbmRsZTxKU0M6OlVua25vd24+IGhhbmRsZSwgdm9pZCogY29u
dGV4dClcbiIpOwogICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIntcbiIpOwotICAgICAgICBw
dXNoKEBpbXBsQ29udGVudCwgIiAgICBKUyR7aW50ZXJmYWNlTmFtZX0qIGpzJHtpbnRlcmZhY2VO
YW1lfSA9IGpzQ2FzdDxKUyR7aW50ZXJmYWNlTmFtZX0qPihoYW5kbGUuZ2V0KCkuYXNDZWxsKCkp
O1xuIik7CisgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICR7anNDbGFzc05hbWV9KiBq
cyR7aW50ZXJmYWNlTmFtZX0gPSBqc0Nhc3Q8JHtqc0NsYXNzTmFtZX0qPihoYW5kbGUuZ2V0KCku
YXNDZWxsKCkpO1xuIik7CiAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIERPTVdyYXBw
ZXJXb3JsZCogd29ybGQgPSBzdGF0aWNfY2FzdDxET01XcmFwcGVyV29ybGQqPihjb250ZXh0KTtc
biIpOwogICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICB1bmNhY2hlV3JhcHBlcih3b3Js
ZCwganMke2ludGVyZmFjZU5hbWV9LT5pbXBsKCksIGpzJHtpbnRlcmZhY2VOYW1lfSk7XG4iKTsK
ICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAganMke2ludGVyZmFjZU5hbWV9LT5yZWxl
YXNlSW1wbCgpO1xuIik7CkBAIC0yNzE4LDEwICsyNzQxLDEwIEBAIEVORAogRU5ECiAKICAgICAg
ICAgaWYgKCRzdmdQcm9wZXJ0eVR5cGUpIHsKLSAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50
LCAiICAgIGlmIChKU1ZhbHVlIHJlc3VsdCA9IGdldEV4aXN0aW5nV3JhcHBlcjwkY2xhc3NOYW1l
LCAkaW1wbFR5cGU+KGV4ZWMsIGltcGwpKVxuIik7CisgICAgICAgICAgICBwdXNoKEBpbXBsQ29u
dGVudCwgIiAgICBpZiAoSlNWYWx1ZSByZXN1bHQgPSBnZXRFeGlzdGluZ1dyYXBwZXI8JGpzQ2xh
c3NOYW1lLCAkaW1wbFR5cGU+KGV4ZWMsIGltcGwpKVxuIik7CiAgICAgICAgICAgICBwdXNoKEBp
bXBsQ29udGVudCwgIiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiIpOwogICAgICAgICB9IGVsc2Ug
ewotICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgaWYgKEpTVmFsdWUgcmVzdWx0
ID0gZ2V0RXhpc3RpbmdXcmFwcGVyPCRjbGFzc05hbWU+KGV4ZWMsIGltcGwpKVxuIik7CisgICAg
ICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBpZiAoSlNWYWx1ZSByZXN1bHQgPSBnZXRF
eGlzdGluZ1dyYXBwZXI8JGpzQ2xhc3NOYW1lPihleGVjLCBpbXBsKSlcbiIpOwogICAgICAgICAg
ICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgICAgIHJldHVybiByZXN1bHQ7XG4iKTsKICAgICAg
ICAgfQogICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgPDxFTkQpIGlmICR2dGFibGVOYW1lR251
OwpAQCAtMjc1OSwxOCArMjc4MiwxOCBAQCBFTkQKIEVORAogCiAgICAgICAgIGlmICgkc3ZnUHJv
cGVydHlUeXBlKSB7Ci0gICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICByZXR1cm4g
Y3JlYXRlTmV3V3JhcHBlcjwkY2xhc3NOYW1lLCAkaW1wbFR5cGU+KGV4ZWMsIGdsb2JhbE9iamVj
dCwgaW1wbCk7XG4iKTsKKyAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIHJldHVy
biBjcmVhdGVOZXdXcmFwcGVyPCRqc0NsYXNzTmFtZSwgJGltcGxUeXBlPihleGVjLCBnbG9iYWxP
YmplY3QsIGltcGwpO1xuIik7CiAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBwdXNoKEBp
bXBsQ29udGVudCwgIiAgICByZXR1cm4gY3JlYXRlTmV3V3JhcHBlcjwkY2xhc3NOYW1lPihleGVj
LCBnbG9iYWxPYmplY3QsIGltcGwpO1xuIik7CisgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVu
dCwgIiAgICByZXR1cm4gY3JlYXRlTmV3V3JhcHBlcjwkanNDbGFzc05hbWU+KGV4ZWMsIGdsb2Jh
bE9iamVjdCwgaW1wbCk7XG4iKTsKICAgICAgICAgfQogCiAgICAgICAgIHB1c2goQGltcGxDb250
ZW50LCAifVxuXG4iKTsKICAgICB9CiAKICAgICBpZiAoKCEkaGFzUGFyZW50IG9yICRpbnRlcmZh
Y2UtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJKU0dlbmVyYXRlVG9OYXRpdmVPYmplY3QifSkgYW5k
ICEkaW50ZXJmYWNlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiSlNDdXN0b21Ub05hdGl2ZU9iamVj
dCJ9KSB7Ci0gICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiJGltcGxUeXBlKiB0byR7aW50ZXJm
YWNlTmFtZX0oSlNDOjpKU1ZhbHVlIHZhbHVlKVxuIik7CisgICAgICAgIHB1c2goQGltcGxDb250
ZW50LCAiJGltcGxUeXBlKiB0byR7aW1wbENsYXNzTmFtZX0oSlNDOjpKU1ZhbHVlIHZhbHVlKVxu
Iik7CiAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAie1xuIik7Ci0gICAgICAgIHB1c2goQGlt
cGxDb250ZW50LCAiICAgIHJldHVybiB2YWx1ZS5pbmhlcml0cygmJHtjbGFzc05hbWV9OjpzX2lu
Zm8pID8ganNDYXN0PCRjbGFzc05hbWUqPihhc09iamVjdCh2YWx1ZSkpLT5pbXBsKCkgOiAwIik7
CisgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIHJldHVybiB2YWx1ZS5pbmhlcml0cygm
JHtqc0NsYXNzTmFtZX06OnNfaW5mbykgPyBqc0Nhc3Q8JGpzQ2xhc3NOYW1lKj4oYXNPYmplY3Qo
dmFsdWUpKS0+aW1wbCgpIDogMCIpOwogICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIjtcbn1c
biIpOwogICAgIH0KIApAQCAtMjgzNCwxMiArMjg1NywxMyBAQCBzdWIgR2VuZXJhdGVQYXJhbWV0
ZXJzQ2hlY2sKICAgICBteSAkZnVuY3Rpb24gPSBzaGlmdDsKICAgICBteSAkaW50ZXJmYWNlID0g
c2hpZnQ7CiAgICAgbXkgJG51bVBhcmFtZXRlcnMgPSBzaGlmdDsKLSAgICBteSAkaW50ZXJmYWNl
TmFtZSA9IHNoaWZ0OwogICAgIG15ICRmdW5jdGlvbkltcGxlbWVudGF0aW9uTmFtZSA9IHNoaWZ0
OwogICAgIG15ICRzdmdQcm9wZXJ0eVR5cGUgPSBzaGlmdDsKICAgICBteSAkc3ZnUHJvcGVydHlP
ckxpc3RQcm9wZXJ0eVR5cGUgPSBzaGlmdDsKICAgICBteSAkc3ZnTGlzdFByb3BlcnR5VHlwZSA9
IHNoaWZ0OwogCisgICAgbXkgJGludGVyZmFjZU5hbWUgPSAkaW50ZXJmYWNlLT5uYW1lOworICAg
IG15ICRpbXBsQ2xhc3NOYW1lID0gR2V0SW1wbENsYXNzTmFtZSgkaW50ZXJmYWNlKTsKICAgICBt
eSAkYXJnc0luZGV4ID0gMDsKICAgICBteSAkaGFzT3B0aW9uYWxBcmd1bWVudHMgPSAwOwogCkBA
IC0yODUxLDcgKzI4NzUsNyBAQCBzdWIgR2VuZXJhdGVQYXJhbWV0ZXJzQ2hlY2sKICAgICAgICAg
dW5zaGlmdChAYXJndW1lbnRzLCAiaW1wbCIpIGlmICEkZnVuY3Rpb24tPmlzU3RhdGljOwogICAg
ICAgICAkZnVuY3Rpb25OYW1lID0gIiR7aW1wbGVtZW50ZWRCeX06OiR7ZnVuY3Rpb25JbXBsZW1l
bnRhdGlvbk5hbWV9IjsKICAgICB9IGVsc2lmICgkZnVuY3Rpb24tPmlzU3RhdGljKSB7Ci0gICAg
ICAgICRmdW5jdGlvbk5hbWUgPSAiJHtpbnRlcmZhY2VOYW1lfTo6JHtmdW5jdGlvbkltcGxlbWVu
dGF0aW9uTmFtZX0iOworICAgICAgICAkZnVuY3Rpb25OYW1lID0gIiR7aW1wbENsYXNzTmFtZX06
OiR7ZnVuY3Rpb25JbXBsZW1lbnRhdGlvbk5hbWV9IjsKICAgICB9IGVsc2lmICgkc3ZnUHJvcGVy
dHlPckxpc3RQcm9wZXJ0eVR5cGUgYW5kICEkc3ZnTGlzdFByb3BlcnR5VHlwZSkgewogICAgICAg
ICAkZnVuY3Rpb25OYW1lID0gInBvZEltcGwuJHtmdW5jdGlvbkltcGxlbWVudGF0aW9uTmFtZX0i
OwogICAgIH0gZWxzZSB7CkBAIC0yODg2LDcgKzI5MTAsNyBAQCBzdWIgR2VuZXJhdGVQYXJhbWV0
ZXJzQ2hlY2sKICAgICAgICAgICAgICAgICBwdXNoIEBvcHRpb25hbENhbGxiYWNrQXJndW1lbnRz
LCAiZWMiOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgbXkgJGZ1bmN0aW9uU3RyaW5nID0g
IiRmdW5jdGlvbk5hbWUoIiAuIGpvaW4oIiwgIiwgQG9wdGlvbmFsQ2FsbGJhY2tBcmd1bWVudHMp
IC4gIikiOwotICAgICAgICAgICAgR2VuZXJhdGVJbXBsZW1lbnRhdGlvbkZ1bmN0aW9uQ2FsbCgk
ZnVuY3Rpb24sICRmdW5jdGlvblN0cmluZywgIiAgICAiIHggMiwgJHN2Z1Byb3BlcnR5VHlwZSwg
JGludGVyZmFjZU5hbWUpOworICAgICAgICAgICAgR2VuZXJhdGVJbXBsZW1lbnRhdGlvbkZ1bmN0
aW9uQ2FsbCgkZnVuY3Rpb24sICRmdW5jdGlvblN0cmluZywgIiAgICAiIHggMiwgJHN2Z1Byb3Bl
cnR5VHlwZSwgJGludGVyZmFjZSk7CiAgICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIg
ICAgfVxuXG4iKTsKICAgICAgICAgfQogCkBAIC0zMDM1LDMyICszMDU5LDMyIEBAIHN1YiBHZW5l
cmF0ZUNhbGxiYWNrSGVhZGVyCiAgICAgbXkgJG9iamVjdCA9IHNoaWZ0OwogICAgIG15ICRpbnRl
cmZhY2UgPSBzaGlmdDsKIAotICAgIG15ICRpbnRlcmZhY2VOYW1lID0gJGludGVyZmFjZS0+bmFt
ZTsKLSAgICBteSAkY2xhc3NOYW1lID0gIkpTJGludGVyZmFjZU5hbWUiOworICAgIG15ICRpbXBs
Q2xhc3NOYW1lID0gR2V0SW1wbENsYXNzTmFtZSgkaW50ZXJmYWNlKTsKKyAgICBteSAkanNDbGFz
c05hbWUgPSBHZXRKU0NsYXNzTmFtZSgkaW50ZXJmYWNlKTsKIAogICAgICMgLSBBZGQgZGVmYXVs
dCBoZWFkZXIgdGVtcGxhdGUgYW5kIGhlYWRlciBwcm90ZWN0aW9uCiAgICAgcHVzaChAaGVhZGVy
Q29udGVudEhlYWRlciwgR2VuZXJhdGVIZWFkZXJDb250ZW50SGVhZGVyKCRpbnRlcmZhY2UpKTsK
IAogICAgICRoZWFkZXJJbmNsdWRlc3siQWN0aXZlRE9NQ2FsbGJhY2suaCJ9ID0gMTsKLSAgICAk
aGVhZGVySW5jbHVkZXN7IiRpbnRlcmZhY2VOYW1lLmgifSA9IDE7CisgICAgJGhlYWRlckluY2x1
ZGVzeyIkaW1wbENsYXNzTmFtZS5oIn0gPSAxOwogICAgICRoZWFkZXJJbmNsdWRlc3siSlNDYWxs
YmFja0RhdGEuaCJ9ID0gMTsKICAgICAkaGVhZGVySW5jbHVkZXN7Ijx3dGYvRm9yd2FyZC5oPiJ9
ID0gMTsKIAogICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICJcbm5hbWVzcGFjZSBXZWJDb3JlIHtc
blxuIik7Ci0gICAgcHVzaChAaGVhZGVyQ29udGVudCwgImNsYXNzICRjbGFzc05hbWUgOiBwdWJs
aWMgJGludGVyZmFjZU5hbWUsIHB1YmxpYyBBY3RpdmVET01DYWxsYmFjayB7XG4iKTsKKyAgICBw
dXNoKEBoZWFkZXJDb250ZW50LCAiY2xhc3MgJGpzQ2xhc3NOYW1lIDogcHVibGljICRpbXBsQ2xh
c3NOYW1lLCBwdWJsaWMgQWN0aXZlRE9NQ2FsbGJhY2sge1xuIik7CiAgICAgcHVzaChAaGVhZGVy
Q29udGVudCwgInB1YmxpYzpcbiIpOwogCiAgICAgIyBUaGUgc3RhdGljIGNyZWF0ZSgpIG1ldGhv
ZC4KLSAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAgIHN0YXRpYyBQYXNzUmVmUHRyPCRjbGFz
c05hbWU+IGNyZWF0ZShKU0M6OkpTT2JqZWN0KiBjYWxsYmFjaywgSlNET01HbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdClcbiIpOworICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIgICAgc3RhdGlj
IFBhc3NSZWZQdHI8JGpzQ2xhc3NOYW1lPiBjcmVhdGUoSlNDOjpKU09iamVjdCogY2FsbGJhY2ss
IEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpXG4iKTsKICAgICBwdXNoKEBoZWFkZXJD
b250ZW50LCAiICAgIHtcbiIpOwotICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIgICAgICAgIHJl
dHVybiBhZG9wdFJlZihuZXcgJGNsYXNzTmFtZShjYWxsYmFjaywgZ2xvYmFsT2JqZWN0KSk7XG4i
KTsKKyAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3
ICRqc0NsYXNzTmFtZShjYWxsYmFjaywgZ2xvYmFsT2JqZWN0KSk7XG4iKTsKICAgICBwdXNoKEBo
ZWFkZXJDb250ZW50LCAiICAgIH1cblxuIik7CiAKICAgICAjIFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQKICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAgIHZpcnR1YWwgU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpIGNvbnN0IHsgcmV0dXJuIENvbnRleHRE
ZXN0cnVjdGlvbk9ic2VydmVyOjpzY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7IH1cblxuIik7CiAK
ICAgICAjIERlc3RydWN0b3IKLSAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAgIHZpcnR1YWwg
fiRjbGFzc05hbWUoKTtcbiIpOworICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIgICAgdmlydHVh
bCB+JGpzQ2xhc3NOYW1lKCk7XG4iKTsKIAogICAgICMgRnVuY3Rpb25zCiAgICAgbXkgJG51bUZ1
bmN0aW9ucyA9IEB7JGludGVyZmFjZS0+ZnVuY3Rpb25zfTsKQEAgLTMwODgsNyArMzExMiw3IEBA
IHN1YiBHZW5lcmF0ZUNhbGxiYWNrSGVhZGVyCiAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIlxu
cHJpdmF0ZTpcbiIpOwogCiAgICAgIyBDb25zdHJ1Y3RvcgotICAgIHB1c2goQGhlYWRlckNvbnRl
bnQsICIgICAgJGNsYXNzTmFtZShKU0M6OkpTT2JqZWN0KiBjYWxsYmFjaywgSlNET01HbG9iYWxP
YmplY3QqKTtcblxuIik7CisgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiAgICAkanNDbGFzc05h
bWUoSlNDOjpKU09iamVjdCogY2FsbGJhY2ssIEpTRE9NR2xvYmFsT2JqZWN0Kik7XG5cbiIpOwog
CiAgICAgIyBQcml2YXRlIG1lbWJlcnMKICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAgIEpT
Q2FsbGJhY2tEYXRhKiBtX2RhdGE7XG4iKTsKQEAgLTMxMDQsOCArMzEyOCw3IEBAIHN1YiBHZW5l
cmF0ZUNhbGxiYWNrSW1wbGVtZW50YXRpb24KIHsKICAgICBteSAoJG9iamVjdCwgJGludGVyZmFj
ZSkgPSBAXzsKIAotICAgIG15ICRpbnRlcmZhY2VOYW1lID0gJGludGVyZmFjZS0+bmFtZTsKLSAg
ICBteSAkY2xhc3NOYW1lID0gIkpTJGludGVyZmFjZU5hbWUiOworICAgIG15ICRqc0NsYXNzTmFt
ZSA9IEdldEpTQ2xhc3NOYW1lKCRpbnRlcmZhY2UpOwogCiAgICAgIyAtIEFkZCBkZWZhdWx0IGhl
YWRlciB0ZW1wbGF0ZQogICAgIHB1c2goQGltcGxDb250ZW50SGVhZGVyLCBHZW5lcmF0ZUltcGxl
bWVudGF0aW9uQ29udGVudEhlYWRlcigkaW50ZXJmYWNlKSk7CkBAIC0zMTE5LDE0ICszMTQyLDE0
IEBAIHN1YiBHZW5lcmF0ZUNhbGxiYWNrSW1wbGVtZW50YXRpb24KICAgICBwdXNoKEBpbXBsQ29u
dGVudCwgIm5hbWVzcGFjZSBXZWJDb3JlIHtcblxuIik7CiAKICAgICAjIENvbnN0cnVjdG9yCi0g
ICAgcHVzaChAaW1wbENvbnRlbnQsICIke2NsYXNzTmFtZX06OiR7Y2xhc3NOYW1lfShKU09iamVj
dCogY2FsbGJhY2ssIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpXG4iKTsKKyAgICBw
dXNoKEBpbXBsQ29udGVudCwgIiR7anNDbGFzc05hbWV9Ojoke2pzQ2xhc3NOYW1lfShKU09iamVj
dCogY2FsbGJhY2ssIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpXG4iKTsKICAgICBw
dXNoKEBpbXBsQ29udGVudCwgIiAgICA6IEFjdGl2ZURPTUNhbGxiYWNrKGdsb2JhbE9iamVjdC0+
c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKVxuIik7CiAgICAgcHVzaChAaW1wbENvbnRlbnQsICIg
ICAgLCBtX2RhdGEobmV3IEpTQ2FsbGJhY2tEYXRhKGNhbGxiYWNrLCBnbG9iYWxPYmplY3QpKVxu
Iik7CiAgICAgcHVzaChAaW1wbENvbnRlbnQsICJ7XG4iKTsKICAgICBwdXNoKEBpbXBsQ29udGVu
dCwgIn1cblxuIik7CiAKICAgICAjIERlc3RydWN0b3IKLSAgICBwdXNoKEBpbXBsQ29udGVudCwg
IiR7Y2xhc3NOYW1lfTo6fiR7Y2xhc3NOYW1lfSgpXG4iKTsKKyAgICBwdXNoKEBpbXBsQ29udGVu
dCwgIiR7anNDbGFzc05hbWV9Ojp+JHtqc0NsYXNzTmFtZX0oKVxuIik7CiAgICAgcHVzaChAaW1w
bENvbnRlbnQsICJ7XG4iKTsKICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBTY3JpcHRFeGVj
dXRpb25Db250ZXh0KiBjb250ZXh0ID0gc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpO1xuIik7CiAg
ICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgLy8gV2hlbiB0aGUgY29udGV4dCBpcyBkZXN0cm95
ZWQsIGFsbCB0YXNrcyB3aXRoIGEgcmVmZXJlbmNlIHRvIGEgY2FsbGJhY2tcbiIpOwpAQCAtMzE1
Miw3ICszMTc1LDcgQEAgc3ViIEdlbmVyYXRlQ2FsbGJhY2tJbXBsZW1lbnRhdGlvbgogICAgICAg
ICAgICAgfQogCiAgICAgICAgICAgICBBZGRJbmNsdWRlc0ZvclR5cGVJbkltcGwoJGZ1bmN0aW9u
LT5zaWduYXR1cmUtPnR5cGUpOwotICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJcbiIg
LiBHZXROYXRpdmVUeXBlRm9yQ2FsbGJhY2tzKCRmdW5jdGlvbi0+c2lnbmF0dXJlLT50eXBlKSAu
ICIgJHtjbGFzc05hbWV9OjoiIC4gJGZ1bmN0aW9uLT5zaWduYXR1cmUtPm5hbWUgLiAiKCIpOwor
ICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJcbiIgLiBHZXROYXRpdmVUeXBlRm9yQ2Fs
bGJhY2tzKCRmdW5jdGlvbi0+c2lnbmF0dXJlLT50eXBlKSAuICIgJHtqc0NsYXNzTmFtZX06OiIg
LiAkZnVuY3Rpb24tPnNpZ25hdHVyZS0+bmFtZSAuICIoIik7CiAKICAgICAgICAgICAgIG15IEBh
cmdzID0gKCk7CiAgICAgICAgICAgICBteSBAYXJnc0NoZWNrID0gKCk7CkBAIC0zMTc1LDcgKzMx
OTgsNyBAQCBFTkQKICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCBAYXJnc0NoZWNrKSBp
ZiBAYXJnc0NoZWNrOwogICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgaWYgKCFj
YW5JbnZva2VDYWxsYmFjaygpKVxuIik7CiAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwg
IiAgICAgICAgcmV0dXJuIHRydWU7XG5cbiIpOwotICAgICAgICAgICAgcHVzaChAaW1wbENvbnRl
bnQsICIgICAgUmVmUHRyPCRjbGFzc05hbWU+IHByb3RlY3QodGhpcyk7XG5cbiIpOworICAgICAg
ICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgUmVmUHRyPCRqc0NsYXNzTmFtZT4gcHJvdGVj
dCh0aGlzKTtcblxuIik7CiAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBKU0xv
Y2tIb2xkZXIgbG9jayhtX2RhdGEtPmdsb2JhbE9iamVjdCgpLT52bSgpKTtcblxuIik7CiAgICAg
ICAgICAgICBpZiAoQHBhcmFtcykgewogICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50
LCAiICAgIEV4ZWNTdGF0ZSogZXhlYyA9IG1fZGF0YS0+Z2xvYmFsT2JqZWN0KCktPmdsb2JhbEV4
ZWMoKTtcbiIpOwpAQCAtMzIyNiw3ICszMjQ5LDcgQEAgc3ViIEdlbmVyYXRlSW1wbGVtZW50YXRp
b25GdW5jdGlvbkNhbGwoKQogICAgIG15ICRmdW5jdGlvblN0cmluZyA9IHNoaWZ0OwogICAgIG15
ICRpbmRlbnQgPSBzaGlmdDsKICAgICBteSAkc3ZnUHJvcGVydHlUeXBlID0gc2hpZnQ7Ci0gICAg
bXkgJGludGVyZmFjZU5hbWUgPSBzaGlmdDsKKyAgICBteSAkaW50ZXJmYWNlID0gc2hpZnQ7CiAK
ICAgICBpZiAoJGZ1bmN0aW9uLT5zaWduYXR1cmUtPnR5cGUgZXEgInZvaWQiKSB7CiAgICAgICAg
IHB1c2goQGltcGxDb250ZW50LCAkaW5kZW50IC4gIiRmdW5jdGlvblN0cmluZztcbiIpOwpAQCAt
MzI0NCw3ICszMjY3LDcgQEAgc3ViIEdlbmVyYXRlSW1wbGVtZW50YXRpb25GdW5jdGlvbkNhbGwo
KQogICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgJGluZGVudCAuICJyZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKGpzVW5kZWZpbmVkKCkpO1xuIik7CiAgICAgfSBlbHNlIHsKICAgICAgICAgbXkgJHRo
aXNPYmplY3QgPSAkZnVuY3Rpb24tPmlzU3RhdGljID8gMCA6ICJjYXN0ZWRUaGlzIjsKLSAgICAg
ICAgcHVzaChAaW1wbENvbnRlbnQsICJcbiIgLiAkaW5kZW50IC4gIkpTQzo6SlNWYWx1ZSByZXN1
bHQgPSAiIC4gTmF0aXZlVG9KU1ZhbHVlKCRmdW5jdGlvbi0+c2lnbmF0dXJlLCAxLCAkaW50ZXJm
YWNlTmFtZSwgJGZ1bmN0aW9uU3RyaW5nLCAkdGhpc09iamVjdCkgLiAiO1xuIik7CisgICAgICAg
IHB1c2goQGltcGxDb250ZW50LCAiXG4iIC4gJGluZGVudCAuICJKU0M6OkpTVmFsdWUgcmVzdWx0
ID0gIiAuIE5hdGl2ZVRvSlNWYWx1ZSgkZnVuY3Rpb24tPnNpZ25hdHVyZSwgMSwgJGludGVyZmFj
ZSwgJGZ1bmN0aW9uU3RyaW5nLCAkdGhpc09iamVjdCkgLiAiO1xuIik7CiAgICAgICAgIHB1c2go
QGltcGxDb250ZW50LCAkaW5kZW50IC4gInNldERPTUV4Y2VwdGlvbihleGVjLCBlYyk7XG4iKSBp
ZiBAeyRmdW5jdGlvbi0+cmFpc2VzRXhjZXB0aW9uc307CiAKICAgICAgICAgaWYgKCRjb2RlR2Vu
ZXJhdG9yLT5FeHRlbmRlZEF0dHJpYnV0ZUNvbnRhaW5zKCRmdW5jdGlvbi0+c2lnbmF0dXJlLT5l
eHRlbmRlZEF0dHJpYnV0ZXMtPnsiQ2FsbFdpdGgifSwgIlNjcmlwdFN0YXRlIikpIHsKQEAgLTMz
MDksNiArMzMzMiwxMiBAQCBzdWIgR2V0TmF0aXZlVHlwZQogICAgICAgICByZXR1cm4gImNvbnN0
IFN0cmluZyI7CiAgICAgfQogCisgICAgaWYgKCRjb2RlR2VuZXJhdG9yLT5Jc1dyYXBwZXJUeXBl
KCR0eXBlKSkgeworICAgICAgICBteSAkaW50ZXJmYWNlID0gJGNvZGVHZW5lcmF0b3ItPlBhcnNl
SW50ZXJmYWNlKCR0eXBlKTsKKyAgICAgICAgbXkgJGltcGxDbGFzc05hbWUgPSBHZXRJbXBsQ2xh
c3NOYW1lKCRpbnRlcmZhY2UpOworICAgICAgICByZXR1cm4gIiR7aW1wbENsYXNzTmFtZX0qIgor
ICAgIH0KKwogICAgICMgRm9yIGFsbCBvdGhlciB0eXBlcywgdGhlIG5hdGl2ZSB0eXBlIGlzIGEg
cG9pbnRlciB3aXRoIHNhbWUgdHlwZSBuYW1lIGFzIHRoZSBJREwgdHlwZS4KICAgICByZXR1cm4g
IiR7dHlwZX0qIjsKIH0KQEAgLTM0NTksNiArMzQ4OCwxMyBAQCBzdWIgSlNWYWx1ZVRvTmF0aXZl
CiAgICAgICAgIHJldHVybiAiJHZhbHVlLmlzRW1wdHkoKSA/IFN0cmluZygpIDogJHZhbHVlLnRv
U3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKSI7CiAgICAgfQogCisgICAgaWYgKCRjb2RlR2VuZXJh
dG9yLT5Jc1dyYXBwZXJUeXBlKCR0eXBlKSkgeworICAgICAgICBteSAkaW50ZXJmYWNlID0gJGNv
ZGVHZW5lcmF0b3ItPlBhcnNlSW50ZXJmYWNlKCR0eXBlKTsKKyAgICAgICAgbXkgJGltcGxDbGFz
c05hbWUgPSBHZXRJbXBsQ2xhc3NOYW1lKCRpbnRlcmZhY2UpOworICAgICAgICBBZGRUb0ltcGxJ
bmNsdWRlcygiSlMkdHlwZS5oIiwgJGNvbmRpdGlvbmFsKTsKKyAgICAgICAgcmV0dXJuICJ0byRp
bXBsQ2xhc3NOYW1lKCR2YWx1ZSkiOworICAgIH0KKwogICAgICMgRGVmYXVsdCwgYXNzdW1lIGF1
dG9nZW5lcmF0ZWQgdHlwZSBjb252ZXJzaW9uIHJvdXRpbmVzCiAgICAgQWRkVG9JbXBsSW5jbHVk
ZXMoIkpTJHR5cGUuaCIsICRjb25kaXRpb25hbCk7CiAgICAgcmV0dXJuICJ0byR0eXBlKCR2YWx1
ZSkiOwpAQCAtMzQ2OCwxMCArMzUwNCwxMyBAQCBzdWIgTmF0aXZlVG9KU1ZhbHVlCiB7CiAgICAg
bXkgJHNpZ25hdHVyZSA9IHNoaWZ0OwogICAgIG15ICRpbkZ1bmN0aW9uQ2FsbCA9IHNoaWZ0Owot
ICAgIG15ICRpbnRlcmZhY2VOYW1lID0gc2hpZnQ7CisgICAgbXkgJGludGVyZmFjZSA9IHNoaWZ0
OwogICAgIG15ICR2YWx1ZSA9IHNoaWZ0OwogICAgIG15ICR0aGlzVmFsdWUgPSBzaGlmdDsKIAor
ICAgIG15ICRpbnRlcmZhY2VOYW1lID0gJGludGVyZmFjZS0+bmFtZTsKKyAgICBteSAkaW1wbENs
YXNzTmFtZSA9IEdldEltcGxDbGFzc05hbWUoJGludGVyZmFjZSk7CisKICAgICBteSAkY29uZGl0
aW9uYWwgPSAkc2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiQ29uZGl0aW9uYWwifTsK
ICAgICBteSAkdHlwZSA9ICRzaWduYXR1cmUtPnR5cGU7CiAKQEAgLTM1ODQsMTIgKzM2MjMsMTIg
QEAgc3ViIE5hdGl2ZVRvSlNWYWx1ZQogICAgICAgICAgICAgJGdldHRlciA9fiBzL2ltcGxcLi8v
OwogICAgICAgICAgICAgJGdldHRlciA9fiBzL2ltcGwtPi8vOwogICAgICAgICAgICAgJGdldHRl
ciA9fiBzL1woXCkvLzsKLSAgICAgICAgICAgIG15ICR1cGRhdGVNZXRob2QgPSAiJiR7aW50ZXJm
YWNlTmFtZX06OnVwZGF0ZSIgLiAkY29kZUdlbmVyYXRvci0+V0tfdWNmaXJzdCgkZ2V0dGVyKTsK
KyAgICAgICAgICAgIG15ICR1cGRhdGVNZXRob2QgPSAiJiR7aW1wbENsYXNzTmFtZX06OnVwZGF0
ZSIgLiAkY29kZUdlbmVyYXRvci0+V0tfdWNmaXJzdCgkZ2V0dGVyKTsKIAogICAgICAgICAgICAg
bXkgJHNlbGZJc1RlYXJPZmZUeXBlID0gJGNvZGVHZW5lcmF0b3ItPklzU1ZHVHlwZU5lZWRpbmdU
ZWFyT2ZmKCRpbnRlcmZhY2VOYW1lKTsKICAgICAgICAgICAgIGlmICgkc2VsZklzVGVhck9mZlR5
cGUpIHsKICAgICAgICAgICAgICAgICBBZGRUb0ltcGxJbmNsdWRlcygiU1ZHU3RhdGljUHJvcGVy
dHlXaXRoUGFyZW50VGVhck9mZi5oIiwgJGNvbmRpdGlvbmFsKTsKLSAgICAgICAgICAgICAgICAk
dGVhck9mZlR5cGUgPX4gcy9TVkdQcm9wZXJ0eVRlYXJPZmY8L1NWR1N0YXRpY1Byb3BlcnR5V2l0
aFBhcmVudFRlYXJPZmY8JGludGVyZmFjZU5hbWUsIC87CisgICAgICAgICAgICAgICAgJHRlYXJP
ZmZUeXBlID1+IHMvU1ZHUHJvcGVydHlUZWFyT2ZmPC9TVkdTdGF0aWNQcm9wZXJ0eVdpdGhQYXJl
bnRUZWFyT2ZmPCRpbXBsQ2xhc3NOYW1lLCAvOwogCiAgICAgICAgICAgICAgICAgaWYgKCR2YWx1
ZSA9fiAvbWF0cml4LyBhbmQgJGludGVyZmFjZU5hbWUgZXEgIlNWR1RyYW5zZm9ybSIpIHsKICAg
ICAgICAgICAgICAgICAgICAgIyBTVkdUcmFuc2Zvcm0gb2ZmZXJzIGEgbWF0cml4KCkgbWV0aG9k
IGZvciBpbnRlcm5hbCB1c2FnZSB0aGF0IHJldHVybnMgYW4gQWZmaW5lVHJhbnNmb3JtCkBAIC0z
NjAwLDcgKzM2MzksNyBAQCBzdWIgTmF0aXZlVG9KU1ZhbHVlCiAgICAgICAgICAgICAgICAgJHZh
bHVlID0gIiR7dGVhck9mZlR5cGV9OjpjcmVhdGUoY2FzdGVkVGhpcy0+aW1wbCgpLCAkdmFsdWUs
ICR1cGRhdGVNZXRob2QpIjsKICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAg
QWRkVG9JbXBsSW5jbHVkZXMoIlNWR1N0YXRpY1Byb3BlcnR5VGVhck9mZi5oIiwgJGNvbmRpdGlv
bmFsKTsKLSAgICAgICAgICAgICAgICAkdGVhck9mZlR5cGUgPX4gcy9TVkdQcm9wZXJ0eVRlYXJP
ZmY8L1NWR1N0YXRpY1Byb3BlcnR5VGVhck9mZjwkaW50ZXJmYWNlTmFtZSwgLzsKKyAgICAgICAg
ICAgICAgICAkdGVhck9mZlR5cGUgPX4gcy9TVkdQcm9wZXJ0eVRlYXJPZmY8L1NWR1N0YXRpY1By
b3BlcnR5VGVhck9mZjwkaW1wbENsYXNzTmFtZSwgLzsKICAgICAgICAgICAgICAgICAkdmFsdWUg
PSAiJHt0ZWFyT2ZmVHlwZX06OmNyZWF0ZShpbXBsLCAkdmFsdWUsICR1cGRhdGVNZXRob2QpIjsK
ICAgICAgICAgICAgIH0KICAgICAgICAgfSBlbHNpZiAoJHRlYXJPZmZUeXBlID1+IC9TVkdTdGF0
aWNMaXN0UHJvcGVydHlUZWFyT2ZmLykgewpAQCAtMzczMiwxMSArMzc3MSwxMCBAQCBzdWIgV3Jp
dGVEYXRhCiAgICAgbXkgJGludGVyZmFjZSA9IHNoaWZ0OwogICAgIG15ICRvdXRwdXREaXIgPSBz
aGlmdDsKIAotICAgIG15ICRuYW1lID0gJGludGVyZmFjZS0+bmFtZTsKLSAgICBteSAkcHJlZml4
ID0gRmlsZU5hbWVQcmVmaXg7Ci0gICAgbXkgJGhlYWRlckZpbGVOYW1lID0gIiRvdXRwdXREaXIv
JHByZWZpeCRuYW1lLmgiOwotICAgIG15ICRpbXBsRmlsZU5hbWUgPSAiJG91dHB1dERpci8kcHJl
Zml4JG5hbWUuY3BwIjsKLSAgICBteSAkZGVwc0ZpbGVOYW1lID0gIiRvdXRwdXREaXIvJHByZWZp
eCRuYW1lLmRlcCI7CisgICAgbXkgJGpzQ2xhc3NOYW1lID0gR2V0SlNDbGFzc05hbWUoJGludGVy
ZmFjZSk7CisgICAgbXkgJGhlYWRlckZpbGVOYW1lID0gIiRvdXRwdXREaXIvJGpzQ2xhc3NOYW1l
LmgiOworICAgIG15ICRpbXBsRmlsZU5hbWUgPSAiJG91dHB1dERpci8kanNDbGFzc05hbWUuY3Bw
IjsKKyAgICBteSAkZGVwc0ZpbGVOYW1lID0gIiRvdXRwdXREaXIvJGpzQ2xhc3NOYW1lLmRlcCI7
CiAKICAgICAjIFVwZGF0ZSBhIC5jcHAgZmlsZSBpZiB0aGUgY29udGVudHMgYXJlIGNoYW5nZWQu
CiAgICAgbXkgJGNvbnRlbnRzID0gam9pbiAiIiwgQGltcGxDb250ZW50SGVhZGVyOwpAQCAtMzc1
Nyw3ICszNzk1LDEyIEBAIHN1YiBXcml0ZURhdGEKICAgICAgICAgICAgIHB1c2ggQHskaW1wbElu
Y2x1ZGVDb25kaXRpb25zeyRjb25kaXRpb259fSwgJGluY2x1ZGU7CiAgICAgICAgIH0KICAgICB9
CisKKyAgICAjIERvIG5vdCBpbmNsdWRlIHRoZSBtYWluIGhlYWRlciBhZ2FpbiBhcyB0aGlzIGlz
IGFscmVhZHkgZG9uZQorICAgICMgaW4gQGltcGxDb250ZW50SGVhZGVyLgogICAgIGZvcmVhY2gg
bXkgJGluY2x1ZGUgKHNvcnQgQGluY2x1ZGVzKSB7CisgICAgICAgICMgIkpTQ2xhc3NOYW1lLmgi
IGlzIGFscmVhZHkgaW5jbHVkZWQgcmlnaHQgYWZ0ZXIgY29uZmlnLmguCisgICAgICAgIG5leHQg
aWYgJGluY2x1ZGUgZXEgIlwiJGpzQ2xhc3NOYW1lLmhcIiI7CiAgICAgICAgICRjb250ZW50cyAu
PSAiI2luY2x1ZGUgJGluY2x1ZGVcbiI7CiAgICAgfQogICAgIGZvcmVhY2ggbXkgJGNvbmRpdGlv
biAoc29ydCBrZXlzICVpbXBsSW5jbHVkZUNvbmRpdGlvbnMpIHsKQEAgLTM3ODQsOCArMzgyNyw2
IEBAIHN1YiBXcml0ZURhdGEKICAgICAgICAgcHVzaCBAaW5jbHVkZXMsICRpbmNsdWRlOwogICAg
IH0KICAgICBmb3JlYWNoIG15ICRpbmNsdWRlIChzb3J0IEBpbmNsdWRlcykgewotICAgICAgICAj
ICJKU0NsYXNzTmFtZS5oIiBpcyBhbHJlYWR5IGluY2x1ZGVkIHJpZ2h0IGFmdGVyIGNvbmZpZy5o
LgotICAgICAgICBuZXh0IGlmICRpbmNsdWRlIGVxICJcIiRwcmVmaXgkbmFtZS5oXCIiOwogICAg
ICAgICAkY29udGVudHMgLj0gIiNpbmNsdWRlICRpbmNsdWRlXG4iOwogICAgIH0KIApAQCAtMzgx
OCwxMSArMzg1OSwxMSBAQCBzdWIgV3JpdGVEYXRhCiBzdWIgR2VuZXJhdGVDb25zdHJ1Y3RvckRl
Y2xhcmF0aW9uCiB7CiAgICAgbXkgJG91dHB1dEFycmF5ID0gc2hpZnQ7Ci0gICAgbXkgJGNsYXNz
TmFtZSA9IHNoaWZ0OwogICAgIG15ICRpbnRlcmZhY2UgPSBzaGlmdDsKLSAgICBteSAkaW50ZXJm
YWNlTmFtZSA9IHNoaWZ0OworICAgIG15ICRpbXBsQ2xhc3NOYW1lID0gR2V0SW1wbENsYXNzTmFt
ZSgkaW50ZXJmYWNlKTsKKyAgICBteSAkanNDbGFzc05hbWUgPSBHZXRKU0NsYXNzTmFtZSgkaW50
ZXJmYWNlKTsKIAotICAgIG15ICRjb25zdHJ1Y3RvckNsYXNzTmFtZSA9ICIke2NsYXNzTmFtZX1D
b25zdHJ1Y3RvciI7CisgICAgbXkgJGNvbnN0cnVjdG9yQ2xhc3NOYW1lID0gIiR7anNDbGFzc05h
bWV9Q29uc3RydWN0b3IiOwogCiAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiY2xhc3MgJHtjb25z
dHJ1Y3RvckNsYXNzTmFtZX0gOiBwdWJsaWMgRE9NQ29uc3RydWN0b3JPYmplY3Qge1xuIik7CiAg
ICAgcHVzaChAJG91dHB1dEFycmF5LCAicHJpdmF0ZTpcbiIpOwpAQCAtMzg1MSwxNCArMzg5Miwx
NCBAQCBzdWIgR2VuZXJhdGVDb25zdHJ1Y3RvckRlY2xhcmF0aW9uCiAgICAgcHVzaChAJG91dHB1
dEFycmF5LCAiICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IEpTQzo6
T3ZlcnJpZGVzR2V0T3duUHJvcGVydHlTbG90IHwgSlNDOjpJbXBsZW1lbnRzSGFzSW5zdGFuY2Ug
fCBET01Db25zdHJ1Y3Rvck9iamVjdDo6U3RydWN0dXJlRmxhZ3M7XG4iKTsKIAogICAgIGlmIChJ
c0NvbnN0cnVjdGFibGUoJGludGVyZmFjZSkgJiYgISRpbnRlcmZhY2UtPmV4dGVuZGVkQXR0cmli
dXRlcy0+eyJOYW1lZENvbnN0cnVjdG9yIn0pIHsKLSAgICAgICAgcHVzaChAJG91dHB1dEFycmF5
LCAiICAgIHN0YXRpYyBKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc3RydWN0
JHtjbGFzc05hbWV9KEpTQzo6RXhlY1N0YXRlKik7XG4iKTsKKyAgICAgICAgcHVzaChAJG91dHB1
dEFycmF5LCAiICAgIHN0YXRpYyBKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29u
c3RydWN0JHtqc0NsYXNzTmFtZX0oSlNDOjpFeGVjU3RhdGUqKTtcbiIpOwogCiAgICAgICAgIGlm
ICghSGFzQ3VzdG9tQ29uc3RydWN0b3IoJGludGVyZmFjZSkpIHsKICAgICAgICAgICAgIG15IEBj
b25zdHJ1Y3RvcnMgPSBAeyRpbnRlcmZhY2UtPmNvbnN0cnVjdG9yc307CiAgICAgICAgICAgICBp
ZiAoQGNvbnN0cnVjdG9ycyA+IDEpIHsKICAgICAgICAgICAgICAgICBmb3JlYWNoIG15ICRjb25z
dHJ1Y3RvciAoQGNvbnN0cnVjdG9ycykgewogICAgICAgICAgICAgICAgICAgICBteSAkb3Zlcmxv
YWRlZEluZGV4ID0gIiIgLiAkY29uc3RydWN0b3ItPntvdmVybG9hZGVkSW5kZXh9OwotICAgICAg
ICAgICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgc3RhdGljIEpTQzo6RW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zdHJ1Y3Qke2NsYXNzTmFtZX0ke292ZXJsb2FkZWRJ
bmRleH0oSlNDOjpFeGVjU3RhdGUqKTtcbiIpOworICAgICAgICAgICAgICAgICAgICBwdXNoKEAk
b3V0cHV0QXJyYXksICIgICAgc3RhdGljIEpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBjb25zdHJ1Y3Qke2pzQ2xhc3NOYW1lfSR7b3ZlcmxvYWRlZEluZGV4fShKU0M6OkV4ZWNTdGF0
ZSopO1xuIik7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQogICAgICAgICB9CkBA
IC0zODcxLDE4ICszOTEyLDE4IEBAIHN1YiBHZW5lcmF0ZUNvbnN0cnVjdG9yRGVjbGFyYXRpb24K
ICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICJ9O1xuXG4iKTsKIAogICAgIGlmICgkY29kZUdlbmVy
YXRvci0+SXNDb25zdHJ1Y3RvclRlbXBsYXRlKCRpbnRlcmZhY2UsICJFdmVudCIpKSB7Ci0gICAg
ICAgIHB1c2goQCRvdXRwdXRBcnJheSwgImJvb2wgZmlsbCR7aW50ZXJmYWNlTmFtZX1Jbml0KCR7
aW50ZXJmYWNlTmFtZX1Jbml0JiwgSlNEaWN0aW9uYXJ5Jik7XG5cbiIpOworICAgICAgICBwdXNo
KEAkb3V0cHV0QXJyYXksICJib29sIGZpbGwke2ltcGxDbGFzc05hbWV9SW5pdCgke2ltcGxDbGFz
c05hbWV9SW5pdCYsIEpTRGljdGlvbmFyeSYpO1xuXG4iKTsKICAgICB9CiAKICAgICBpZiAoJGlu
dGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Ik5hbWVkQ29uc3RydWN0b3IifSkgewogICAg
ICAgICBwdXNoKEAkb3V0cHV0QXJyYXksIDw8RU5EKTsKLWNsYXNzIEpTJHtpbnRlcmZhY2VOYW1l
fU5hbWVkQ29uc3RydWN0b3IgOiBwdWJsaWMgRE9NQ29uc3RydWN0b3JXaXRoRG9jdW1lbnQgewor
Y2xhc3MgJHtqc0NsYXNzTmFtZX1OYW1lZENvbnN0cnVjdG9yIDogcHVibGljIERPTUNvbnN0cnVj
dG9yV2l0aERvY3VtZW50IHsKIHB1YmxpYzoKICAgICB0eXBlZGVmIERPTUNvbnN0cnVjdG9yV2l0
aERvY3VtZW50IEJhc2U7CiAKLSAgICBzdGF0aWMgSlMke2ludGVyZmFjZU5hbWV9TmFtZWRDb25z
dHJ1Y3RvciogY3JlYXRlKEpTQzo6RXhlY1N0YXRlKiBleGVjLCBKU0M6OlN0cnVjdHVyZSogc3Ry
dWN0dXJlLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQorICAgIHN0YXRpYyAke2pz
Q2xhc3NOYW1lfU5hbWVkQ29uc3RydWN0b3IqIGNyZWF0ZShKU0M6OkV4ZWNTdGF0ZSogZXhlYywg
SlNDOjpTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCkKICAgICB7Ci0gICAgICAgIEpTJHtpbnRlcmZhY2VOYW1lfU5hbWVkQ29uc3RydWN0b3IqIGNv
bnN0cnVjdG9yID0gbmV3IChOb3ROdWxsLCBKU0M6OmFsbG9jYXRlQ2VsbDxKUyR7aW50ZXJmYWNl
TmFtZX1OYW1lZENvbnN0cnVjdG9yPigqZXhlYy0+aGVhcCgpKSkgSlMke2ludGVyZmFjZU5hbWV9
TmFtZWRDb25zdHJ1Y3RvcihzdHJ1Y3R1cmUsIGdsb2JhbE9iamVjdCk7CisgICAgICAgICR7anND
bGFzc05hbWV9TmFtZWRDb25zdHJ1Y3RvciogY29uc3RydWN0b3IgPSBuZXcgKE5vdE51bGwsIEpT
Qzo6YWxsb2NhdGVDZWxsPCR7anNDbGFzc05hbWV9TmFtZWRDb25zdHJ1Y3Rvcj4oKmV4ZWMtPmhl
YXAoKSkpICR7anNDbGFzc05hbWV9TmFtZWRDb25zdHJ1Y3RvcihzdHJ1Y3R1cmUsIGdsb2JhbE9i
amVjdCk7CiAgICAgICAgIGNvbnN0cnVjdG9yLT5maW5pc2hDcmVhdGlvbihleGVjLCBnbG9iYWxP
YmplY3QpOwogICAgICAgICByZXR1cm4gY29uc3RydWN0b3I7CiAgICAgfQpAQCAtMzg5NSw4ICsz
OTM2LDggQEAgcHVibGljOgogICAgIHN0YXRpYyBjb25zdCBKU0M6OkNsYXNzSW5mbyBzX2luZm87
CiAKIHByaXZhdGU6Ci0gICAgSlMke2ludGVyZmFjZU5hbWV9TmFtZWRDb25zdHJ1Y3RvcihKU0M6
OlN0cnVjdHVyZSosIEpTRE9NR2xvYmFsT2JqZWN0Kik7Ci0gICAgc3RhdGljIEpTQzo6RW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zdHJ1Y3RKUyR7aW50ZXJmYWNlTmFtZX0oSlNDOjpF
eGVjU3RhdGUqKTsKKyAgICAke2pzQ2xhc3NOYW1lfU5hbWVkQ29uc3RydWN0b3IoSlNDOjpTdHJ1
Y3R1cmUqLCBKU0RPTUdsb2JhbE9iamVjdCopOworICAgIHN0YXRpYyBKU0M6OkVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgY29uc3RydWN0JHtqc0NsYXNzTmFtZX0oSlNDOjpFeGVjU3RhdGUq
KTsKICAgICBzdGF0aWMgSlNDOjpDb25zdHJ1Y3RUeXBlIGdldENvbnN0cnVjdERhdGEoSlNDOjpK
U0NlbGwqLCBKU0M6OkNvbnN0cnVjdERhdGEmKTsKICAgICB2b2lkIGZpbmlzaENyZWF0aW9uKEpT
Qzo6RXhlY1N0YXRlKiwgSlNET01HbG9iYWxPYmplY3QqKTsKIH07CkBAIC0zOTA4LDM3ICszOTQ5
LDM1IEBAIEVORAogc3ViIEdlbmVyYXRlQ29uc3RydWN0b3JEZWZpbml0aW9ucwogewogICAgIG15
ICRvdXRwdXRBcnJheSA9IHNoaWZ0OwotICAgIG15ICRjbGFzc05hbWUgPSBzaGlmdDsKICAgICBt
eSAkcHJvdG9DbGFzc05hbWUgPSBzaGlmdDsKLSAgICBteSAkaW50ZXJmYWNlTmFtZSA9IHNoaWZ0
OwotICAgIG15ICR2aXNpYmxlSW50ZXJmYWNlTmFtZSA9IHNoaWZ0OwogICAgIG15ICRpbnRlcmZh
Y2UgPSBzaGlmdDsKKyAgICBteSAkdmlzaWJsZUludGVyZmFjZU5hbWUgPSBzaGlmdDsKICAgICBt
eSAkZ2VuZXJhdGluZ05hbWVkQ29uc3RydWN0b3IgPSBzaGlmdDsKIAogICAgIGlmIChJc0NvbnN0
cnVjdGFibGUoJGludGVyZmFjZSkpIHsKICAgICAgICAgbXkgQGNvbnN0cnVjdG9ycyA9IEB7JGlu
dGVyZmFjZS0+Y29uc3RydWN0b3JzfTsKICAgICAgICAgaWYgKEBjb25zdHJ1Y3RvcnMgPiAxKSB7
CiAgICAgICAgICAgICBmb3JlYWNoIG15ICRjb25zdHJ1Y3RvciAoQGNvbnN0cnVjdG9ycykgewot
ICAgICAgICAgICAgICAgIEdlbmVyYXRlQ29uc3RydWN0b3JEZWZpbml0aW9uKCRvdXRwdXRBcnJh
eSwgJGNsYXNzTmFtZSwgJHByb3RvQ2xhc3NOYW1lLCAkaW50ZXJmYWNlTmFtZSwgJHZpc2libGVJ
bnRlcmZhY2VOYW1lLCAkaW50ZXJmYWNlLCAkZ2VuZXJhdGluZ05hbWVkQ29uc3RydWN0b3IsICRj
b25zdHJ1Y3Rvcik7CisgICAgICAgICAgICAgICAgR2VuZXJhdGVDb25zdHJ1Y3RvckRlZmluaXRp
b24oJG91dHB1dEFycmF5LCAkcHJvdG9DbGFzc05hbWUsICRpbnRlcmZhY2UsICR2aXNpYmxlSW50
ZXJmYWNlTmFtZSwgJGdlbmVyYXRpbmdOYW1lZENvbnN0cnVjdG9yLCAkY29uc3RydWN0b3IpOwog
ICAgICAgICAgICAgfQotICAgICAgICAgICAgR2VuZXJhdGVPdmVybG9hZGVkQ29uc3RydWN0b3JE
ZWZpbml0aW9uKCRvdXRwdXRBcnJheSwgJGNsYXNzTmFtZSwgJGludGVyZmFjZSk7CisgICAgICAg
ICAgICBHZW5lcmF0ZU92ZXJsb2FkZWRDb25zdHJ1Y3RvckRlZmluaXRpb24oJG91dHB1dEFycmF5
LCAkaW50ZXJmYWNlKTsKICAgICAgICAgfSBlbHNpZiAoQGNvbnN0cnVjdG9ycyA9PSAxKSB7Ci0g
ICAgICAgICAgICBHZW5lcmF0ZUNvbnN0cnVjdG9yRGVmaW5pdGlvbigkb3V0cHV0QXJyYXksICRj
bGFzc05hbWUsICRwcm90b0NsYXNzTmFtZSwgJGludGVyZmFjZU5hbWUsICR2aXNpYmxlSW50ZXJm
YWNlTmFtZSwgJGludGVyZmFjZSwgJGdlbmVyYXRpbmdOYW1lZENvbnN0cnVjdG9yLCAkY29uc3Ry
dWN0b3JzWzBdKTsKKyAgICAgICAgICAgIEdlbmVyYXRlQ29uc3RydWN0b3JEZWZpbml0aW9uKCRv
dXRwdXRBcnJheSwgJHByb3RvQ2xhc3NOYW1lLCAkaW50ZXJmYWNlLCAkdmlzaWJsZUludGVyZmFj
ZU5hbWUsICRnZW5lcmF0aW5nTmFtZWRDb25zdHJ1Y3RvciwgJGNvbnN0cnVjdG9yc1swXSk7CiAg
ICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBHZW5lcmF0ZUNvbnN0cnVjdG9yRGVmaW5pdGlv
bigkb3V0cHV0QXJyYXksICRjbGFzc05hbWUsICRwcm90b0NsYXNzTmFtZSwgJGludGVyZmFjZU5h
bWUsICR2aXNpYmxlSW50ZXJmYWNlTmFtZSwgJGludGVyZmFjZSwgJGdlbmVyYXRpbmdOYW1lZENv
bnN0cnVjdG9yKTsKKyAgICAgICAgICAgIEdlbmVyYXRlQ29uc3RydWN0b3JEZWZpbml0aW9uKCRv
dXRwdXRBcnJheSwgJHByb3RvQ2xhc3NOYW1lLCAkaW50ZXJmYWNlLCAkdmlzaWJsZUludGVyZmFj
ZU5hbWUsICRnZW5lcmF0aW5nTmFtZWRDb25zdHJ1Y3Rvcik7CiAgICAgICAgIH0KICAgICB9CiAK
LSAgICBHZW5lcmF0ZUNvbnN0cnVjdG9ySGVscGVyTWV0aG9kcygkb3V0cHV0QXJyYXksICRjbGFz
c05hbWUsICRwcm90b0NsYXNzTmFtZSwgJGludGVyZmFjZU5hbWUsICR2aXNpYmxlSW50ZXJmYWNl
TmFtZSwgJGludGVyZmFjZSwgJGdlbmVyYXRpbmdOYW1lZENvbnN0cnVjdG9yKTsKKyAgICBHZW5l
cmF0ZUNvbnN0cnVjdG9ySGVscGVyTWV0aG9kcygkb3V0cHV0QXJyYXksICRwcm90b0NsYXNzTmFt
ZSwgJGludGVyZmFjZSwgJHZpc2libGVJbnRlcmZhY2VOYW1lLCAkZ2VuZXJhdGluZ05hbWVkQ29u
c3RydWN0b3IpOwogfQogCiBzdWIgR2VuZXJhdGVPdmVybG9hZGVkQ29uc3RydWN0b3JEZWZpbml0
aW9uCiB7CiAgICAgbXkgJG91dHB1dEFycmF5ID0gc2hpZnQ7Ci0gICAgbXkgJGNsYXNzTmFtZSA9
IHNoaWZ0OwogICAgIG15ICRpbnRlcmZhY2UgPSBzaGlmdDsKIAotICAgIG15ICRmdW5jdGlvbk5h
bWUgPSAiJHtjbGFzc05hbWV9Q29uc3RydWN0b3I6OmNvbnN0cnVjdCR7Y2xhc3NOYW1lfSI7Cisg
ICAgbXkgJGpzQ2xhc3NOYW1lID0gR2V0SlNDbGFzc05hbWUoJGludGVyZmFjZSk7CisgICAgbXkg
JGZ1bmN0aW9uTmFtZSA9ICIke2pzQ2xhc3NOYW1lfUNvbnN0cnVjdG9yOjpjb25zdHJ1Y3Qke2pz
Q2xhc3NOYW1lfSI7CiAgICAgcHVzaChAJG91dHB1dEFycmF5LCA8PEVORCk7CiBFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMICR7ZnVuY3Rpb25OYW1lfShFeGVjU3RhdGUqIGV4ZWMpCiB7CkBA
IC0zOTc3LDE1ICs0MDE2LDE1IEBAIEVORAogc3ViIEdlbmVyYXRlQ29uc3RydWN0b3JEZWZpbml0
aW9uCiB7CiAgICAgbXkgJG91dHB1dEFycmF5ID0gc2hpZnQ7Ci0gICAgbXkgJGNsYXNzTmFtZSA9
IHNoaWZ0OwogICAgIG15ICRwcm90b0NsYXNzTmFtZSA9IHNoaWZ0OwotICAgIG15ICRpbnRlcmZh
Y2VOYW1lID0gc2hpZnQ7Ci0gICAgbXkgJHZpc2libGVJbnRlcmZhY2VOYW1lID0gc2hpZnQ7CiAg
ICAgbXkgJGludGVyZmFjZSA9IHNoaWZ0OworICAgIG15ICR2aXNpYmxlSW50ZXJmYWNlTmFtZSA9
IHNoaWZ0OwogICAgIG15ICRnZW5lcmF0aW5nTmFtZWRDb25zdHJ1Y3RvciA9IHNoaWZ0OwogICAg
IG15ICRmdW5jdGlvbiA9IHNoaWZ0OwogCi0gICAgbXkgJGNvbnN0cnVjdG9yQ2xhc3NOYW1lID0g
JGdlbmVyYXRpbmdOYW1lZENvbnN0cnVjdG9yID8gIiR7Y2xhc3NOYW1lfU5hbWVkQ29uc3RydWN0
b3IiIDogIiR7Y2xhc3NOYW1lfUNvbnN0cnVjdG9yIjsKKyAgICBteSAkaW1wbENsYXNzTmFtZSA9
IEdldEltcGxDbGFzc05hbWUoJGludGVyZmFjZSk7CisgICAgbXkgJGpzQ2xhc3NOYW1lID0gR2V0
SlNDbGFzc05hbWUoJGludGVyZmFjZSk7CisgICAgbXkgJGNvbnN0cnVjdG9yQ2xhc3NOYW1lID0g
JGdlbmVyYXRpbmdOYW1lZENvbnN0cnVjdG9yID8gIiR7anNDbGFzc05hbWV9TmFtZWRDb25zdHJ1
Y3RvciIgOiAiJHtqc0NsYXNzTmFtZX1Db25zdHJ1Y3RvciI7CiAKICAgICBpZiAoSXNDb25zdHJ1
Y3RhYmxlKCRpbnRlcmZhY2UpKSB7CiAgICAgICAgIGlmICgkY29kZUdlbmVyYXRvci0+SXNDb25z
dHJ1Y3RvclRlbXBsYXRlKCRpbnRlcmZhY2UsICJFdmVudCIpKSB7CkBAIC0zOTkzLDcgKzQwMzIs
NyBAQCBzdWIgR2VuZXJhdGVDb25zdHJ1Y3RvckRlZmluaXRpb24KICAgICAgICAgICAgICRpbXBs
SW5jbHVkZXN7IjxydW50aW1lL0Vycm9yLmg+In0gPSAxOwogCiAgICAgICAgICAgICBwdXNoKEAk
b3V0cHV0QXJyYXksIDw8RU5EKTsKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgJHtjb25z
dHJ1Y3RvckNsYXNzTmFtZX06OmNvbnN0cnVjdCR7Y2xhc3NOYW1lfShFeGVjU3RhdGUqIGV4ZWMp
CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMICR7Y29uc3RydWN0b3JDbGFzc05hbWV9Ojpj
b25zdHJ1Y3Qke2pzQ2xhc3NOYW1lfShFeGVjU3RhdGUqIGV4ZWMpCiB7CiAgICAgJHtjb25zdHJ1
Y3RvckNsYXNzTmFtZX0qIGpzQ29uc3RydWN0b3IgPSBqc0Nhc3Q8JHtjb25zdHJ1Y3RvckNsYXNz
TmFtZX0qPihleGVjLT5jYWxsZWUoKSk7CiAKQEAgLTQwMDUsNyArNDA0NCw3IEBAIEVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgJHtjb25zdHJ1Y3RvckNsYXNzTmFtZX06OmNvbnN0cnVjdCR7
Y2xhc3NOYW1lfShFeGVjCiAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQogICAgICAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogCi0gICAgJHtpbnRlcmZhY2VO
YW1lfUluaXQgZXZlbnRJbml0OworICAgICR7aW1wbENsYXNzTmFtZX1Jbml0IGV2ZW50SW5pdDsK
IAogICAgIEpTVmFsdWUgaW5pdGlhbGl6ZXJWYWx1ZSA9IGV4ZWMtPmFyZ3VtZW50KDEpOwogICAg
IGlmICghaW5pdGlhbGl6ZXJWYWx1ZS5pc1VuZGVmaW5lZE9yTnVsbCgpKSB7CkBAIC00MDE2LDE1
ICs0MDU1LDE1IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgJHtjb25zdHJ1Y3RvckNs
YXNzTmFtZX06OmNvbnN0cnVjdCR7Y2xhc3NOYW1lfShFeGVjCiAgICAgICAgIEpTRGljdGlvbmFy
eSBkaWN0aW9uYXJ5KGV4ZWMsIGluaXRpYWxpemVyT2JqZWN0KTsKIAogICAgICAgICAvLyBBdHRl
bXB0IHRvIGZpbGwgaW4gdGhlIEV2ZW50SW5pdC4KLSAgICAgICAgaWYgKCFmaWxsJHtpbnRlcmZh
Y2VOYW1lfUluaXQoZXZlbnRJbml0LCBkaWN0aW9uYXJ5KSkKKyAgICAgICAgaWYgKCFmaWxsJHtp
bXBsQ2xhc3NOYW1lfUluaXQoZXZlbnRJbml0LCBkaWN0aW9uYXJ5KSkKICAgICAgICAgICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiAgICAgfQogCi0gICAgUmVmUHRy
PCR7aW50ZXJmYWNlTmFtZX0+IGV2ZW50ID0gJHtpbnRlcmZhY2VOYW1lfTo6Y3JlYXRlKGV2ZW50
VHlwZSwgZXZlbnRJbml0KTsKKyAgICBSZWZQdHI8JHtpbXBsQ2xhc3NOYW1lfT4gZXZlbnQgPSAk
e2ltcGxDbGFzc05hbWV9OjpjcmVhdGUoZXZlbnRUeXBlLCBldmVudEluaXQpOwogICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUodG9KUyhleGVjLCBqc0NvbnN0cnVjdG9yLT5nbG9iYWxPYmplY3Qo
KSwgZXZlbnQuZ2V0KCkpKTsKIH0KIAotYm9vbCBmaWxsJHtpbnRlcmZhY2VOYW1lfUluaXQoJHtp
bnRlcmZhY2VOYW1lfUluaXQmIGV2ZW50SW5pdCwgSlNEaWN0aW9uYXJ5JiBkaWN0aW9uYXJ5KQor
Ym9vbCBmaWxsJHtpbXBsQ2xhc3NOYW1lfUluaXQoJHtpbXBsQ2xhc3NOYW1lfUluaXQmIGV2ZW50
SW5pdCwgSlNEaWN0aW9uYXJ5JiBkaWN0aW9uYXJ5KQogewogRU5ECiAKQEAgLTQwNTUsMjMgKzQw
OTQsMjMgQEAgRU5ECiAgICAgICAgIH0gZWxzaWYgKCRjb2RlR2VuZXJhdG9yLT5Jc0NvbnN0cnVj
dG9yVGVtcGxhdGUoJGludGVyZmFjZSwgIlR5cGVkQXJyYXkiKSkgewogICAgICAgICAgICAgJGlt
cGxJbmNsdWRlc3siSlNBcnJheUJ1ZmZlclZpZXdIZWxwZXIuaCJ9ID0gMTsKICAgICAgICAgICAg
IG15ICR2aWV3VHlwZSA9ICRpbnRlcmZhY2UtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJUeXBlZEFy
cmF5In07Ci0gICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICJFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMICR7Y29uc3RydWN0b3JDbGFzc05hbWV9Ojpjb25zdHJ1Y3Qke2NsYXNzTmFt
ZX0oRXhlY1N0YXRlKiBleGVjKVxuIik7CisgICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXks
ICJFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMICR7Y29uc3RydWN0b3JDbGFzc05hbWV9Ojpj
b25zdHJ1Y3Qke2pzQ2xhc3NOYW1lfShFeGVjU3RhdGUqIGV4ZWMpXG4iKTsKICAgICAgICAgICAg
IHB1c2goQCRvdXRwdXRBcnJheSwgIntcbiIpOwogICAgICAgICAgICAgcHVzaChAJG91dHB1dEFy
cmF5LCAiICAgICR7Y29uc3RydWN0b3JDbGFzc05hbWV9KiBqc0NvbnN0cnVjdG9yID0ganNDYXN0
PCR7Y29uc3RydWN0b3JDbGFzc05hbWV9Kj4oZXhlYy0+Y2FsbGVlKCkpO1xuIik7Ci0gICAgICAg
ICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgUmVmUHRyPCRpbnRlcmZhY2VOYW1lPiBhcnJh
eSA9IGNvbnN0cnVjdEFycmF5QnVmZmVyVmlldzwkaW50ZXJmYWNlTmFtZSwgJHZpZXdUeXBlPihl
eGVjKTtcbiIpOworICAgICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIFJlZlB0cjwk
aW1wbENsYXNzTmFtZT4gYXJyYXkgPSBjb25zdHJ1Y3RBcnJheUJ1ZmZlclZpZXc8JGltcGxDbGFz
c05hbWUsICR2aWV3VHlwZT4oZXhlYyk7XG4iKTsKICAgICAgICAgICAgIHB1c2goQCRvdXRwdXRB
cnJheSwgIiAgICBpZiAoIWFycmF5LmdldCgpKVxuIik7CiAgICAgICAgICAgICBwdXNoKEAkb3V0
cHV0QXJyYXksICIgICAgICAgIC8vIEV4Y2VwdGlvbiBoYXMgYWxyZWFkeSBiZWVuIHRocm93bi5c
biIpOwogICAgICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgICAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKEpTVmFsdWUoKSk7XG4iKTsKICAgICAgICAgICAgIHB1c2goQCRvdXRwdXRB
cnJheSwgIiAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGFzT2JqZWN0KHRvSlMoZXhlYywganND
b25zdHJ1Y3Rvci0+Z2xvYmFsT2JqZWN0KCksIGFycmF5LmdldCgpKSkpO1xuIik7CiAgICAgICAg
ICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICJ9XG5cbiIpOwogCi0gICAgICAgICAgICBwdXNoKEAk
b3V0cHV0QXJyYXksICJKU0M6OkpTVmFsdWUgdG9KUyhKU0M6OkV4ZWNTdGF0ZSogZXhlYywgSlNE
T01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgJHtpbnRlcmZhY2VOYW1lfSogb2JqZWN0KVxu
Iik7CisgICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICJKU0M6OkpTVmFsdWUgdG9KUyhK
U0M6OkV4ZWNTdGF0ZSogZXhlYywgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgJHtp
bXBsQ2xhc3NOYW1lfSogb2JqZWN0KVxuIik7CiAgICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJy
YXksICJ7XG4iKTsKLSAgICAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICByZXR1cm4g
dG9KU0FycmF5QnVmZmVyVmlldzwke2NsYXNzTmFtZX0+KGV4ZWMsIGdsb2JhbE9iamVjdCwgb2Jq
ZWN0KTtcbiIpOworICAgICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIHJldHVybiB0
b0pTQXJyYXlCdWZmZXJWaWV3PCR7anNDbGFzc05hbWV9PihleGVjLCBnbG9iYWxPYmplY3QsIG9i
amVjdCk7XG4iKTsKICAgICAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIn1cblxuIik7CiAK
ICAgICAgICAgICAgIGlmICgkaW50ZXJmYWNlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiQ3VzdG9t
SW5kZXhlZFNldHRlciJ9KSB7Ci0gICAgICAgICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAi
dm9pZCAke2NsYXNzTmFtZX06OmluZGV4U2V0dGVyKEpTQzo6RXhlY1N0YXRlKiBleGVjLCB1bnNp
Z25lZCBpbmRleCwgSlNDOjpKU1ZhbHVlIHZhbHVlKVxuIik7CisgICAgICAgICAgICAgICAgcHVz
aChAJG91dHB1dEFycmF5LCAidm9pZCAke2pzQ2xhc3NOYW1lfTo6aW5kZXhTZXR0ZXIoSlNDOjpF
eGVjU3RhdGUqIGV4ZWMsIHVuc2lnbmVkIGluZGV4LCBKU0M6OkpTVmFsdWUgdmFsdWUpXG4iKTsK
ICAgICAgICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICJ7XG4iKTsKICAgICAgICAgICAg
ICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgaW1wbCgpLT5zZXQoaW5kZXgsIHZhbHVlLnRv
TnVtYmVyKGV4ZWMpKTtcbiIpOwogICAgICAgICAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwg
In1cblxuIik7CkBAIC00MDgyLDcgKzQxMjEsNyBAQCBFTkQKICAgICAgICAgICAgICAgICAkb3Zl
cmxvYWRlZEluZGV4U3RyaW5nIC49ICRmdW5jdGlvbi0+e292ZXJsb2FkZWRJbmRleH07CiAgICAg
ICAgICAgICB9CiAKLSAgICAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIkVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgJHtjb25zdHJ1Y3RvckNsYXNzTmFtZX06OmNvbnN0cnVjdCR7Y2xh
c3NOYW1lfSR7b3ZlcmxvYWRlZEluZGV4U3RyaW5nfShFeGVjU3RhdGUqIGV4ZWMpXG4iKTsKKyAg
ICAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgJHtjb25zdHJ1Y3RvckNsYXNzTmFtZX06OmNvbnN0cnVjdCR7anNDbGFzc05hbWV9JHtvdmVy
bG9hZGVkSW5kZXhTdHJpbmd9KEV4ZWNTdGF0ZSogZXhlYylcbiIpOwogICAgICAgICAgICAgcHVz
aChAJG91dHB1dEFycmF5LCAie1xuIik7CiAgICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXks
ICIgICAgJHtjb25zdHJ1Y3RvckNsYXNzTmFtZX0qIGNhc3RlZFRoaXMgPSBqc0Nhc3Q8JHtjb25z
dHJ1Y3RvckNsYXNzTmFtZX0qPihleGVjLT5jYWxsZWUoKSk7XG4iKTsKIApAQCAtNDEwMCwxMyAr
NDEzOSwxMyBAQCBFTkQKICAgICAgICAgICAgICMgRklYTUU6IEZvciBub3csIHdlIGRvIG5vdCBz
dXBwb3J0IFNWRyBjb25zdHJ1Y3RvcnMuCiAgICAgICAgICAgICAjIEZJWE1FOiBDdXJyZW50bHkg
W0NvbnN0cnVjdG9yKC4uLildIGRvZXMgbm90IHlldCBzdXBwb3J0IG9wdGlvbmFsIGFyZ3VtZW50
cyB3aXRob3V0IFtEZWZhdWx0PS4uLl0KICAgICAgICAgICAgIG15ICRudW1QYXJhbWV0ZXJzID0g
QHskZnVuY3Rpb24tPnBhcmFtZXRlcnN9OwotICAgICAgICAgICAgbXkgKCRkdW1teSwgJHBhcmFt
SW5kZXgpID0gR2VuZXJhdGVQYXJhbWV0ZXJzQ2hlY2soJG91dHB1dEFycmF5LCAkZnVuY3Rpb24s
ICRpbnRlcmZhY2UsICRudW1QYXJhbWV0ZXJzLCAkaW50ZXJmYWNlTmFtZSwgImNvbnN0cnVjdG9y
Q2FsbGJhY2siLCB1bmRlZiwgdW5kZWYsIHVuZGVmKTsKKyAgICAgICAgICAgIG15ICgkZHVtbXks
ICRwYXJhbUluZGV4KSA9IEdlbmVyYXRlUGFyYW1ldGVyc0NoZWNrKCRvdXRwdXRBcnJheSwgJGZ1
bmN0aW9uLCAkaW50ZXJmYWNlLCAkbnVtUGFyYW1ldGVycywgImNvbnN0cnVjdG9yQ2FsbGJhY2si
LCB1bmRlZiwgdW5kZWYsIHVuZGVmKTsKIAogICAgICAgICAgICAgaWYgKCRjb2RlR2VuZXJhdG9y
LT5FeHRlbmRlZEF0dHJpYnV0ZUNvbnRhaW5zKCRpbnRlcmZhY2UtPmV4dGVuZGVkQXR0cmlidXRl
cy0+eyJDYWxsV2l0aCJ9LCAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dCIpKSB7CiAgICAgICAgICAg
ICAgICAgcHVzaChAY29uc3RydWN0b3JBcmdMaXN0LCAiY29udGV4dCIpOwogICAgICAgICAgICAg
ICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250
ZXh0ID0gY2FzdGVkVGhpcy0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpO1xuIik7CiAgICAgICAg
ICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIGlmICghY29udGV4dClcbiIpOwotICAg
ICAgICAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICAgICAgcmV0dXJuIHRocm93Vk1F
cnJvcihleGVjLCBjcmVhdGVSZWZlcmVuY2VFcnJvcihleGVjLCBcIiR7aW50ZXJmYWNlTmFtZX0g
Y29uc3RydWN0b3IgYXNzb2NpYXRlZCBkb2N1bWVudCBpcyB1bmF2YWlsYWJsZVwiKSk7XG4iKTsK
KyAgICAgICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgICAgIHJldHVybiB0aHJv
d1ZNRXJyb3IoZXhlYywgY3JlYXRlUmVmZXJlbmNlRXJyb3IoZXhlYywgXCIke2ltcGxDbGFzc05h
bWV9IGNvbnN0cnVjdG9yIGFzc29jaWF0ZWQgZG9jdW1lbnQgaXMgdW5hdmFpbGFibGVcIikpO1xu
Iik7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBpZiAoJGdlbmVyYXRpbmdOYW1lZENvbnN0
cnVjdG9yKSB7CiAgICAgICAgICAgICAgICAgcHVzaChAY29uc3RydWN0b3JBcmdMaXN0LCAiY2Fz
dGVkVGhpcy0+ZG9jdW1lbnQoKSIpOwpAQCAtNDEyNCw5ICs0MTYzLDkgQEAgRU5ECiAgICAgICAg
ICAgICB9CiAgICAgICAgICAgICBteSAkY29uc3RydWN0b3JBcmcgPSBqb2luKCIsICIsIEBjb25z
dHJ1Y3RvckFyZ0xpc3QpOwogICAgICAgICAgICAgaWYgKCRnZW5lcmF0aW5nTmFtZWRDb25zdHJ1
Y3RvcikgewotICAgICAgICAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICBSZWZQdHI8
JHtpbnRlcmZhY2VOYW1lfT4gb2JqZWN0ID0gJHtpbnRlcmZhY2VOYW1lfTo6Y3JlYXRlRm9ySlND
b25zdHJ1Y3Rvcigke2NvbnN0cnVjdG9yQXJnfSk7XG4iKTsKKyAgICAgICAgICAgICAgICBwdXNo
KEAkb3V0cHV0QXJyYXksICIgICAgUmVmUHRyPCR7aW1wbENsYXNzTmFtZX0+IG9iamVjdCA9ICR7
aW1wbENsYXNzTmFtZX06OmNyZWF0ZUZvckpTQ29uc3RydWN0b3IoJHtjb25zdHJ1Y3RvckFyZ30p
O1xuIik7CiAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgIHB1c2goQCRvdXRw
dXRBcnJheSwgIiAgICBSZWZQdHI8JHtpbnRlcmZhY2VOYW1lfT4gb2JqZWN0ID0gJHtpbnRlcmZh
Y2VOYW1lfTo6Y3JlYXRlKCR7Y29uc3RydWN0b3JBcmd9KTtcbiIpOworICAgICAgICAgICAgICAg
IHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICBSZWZQdHI8JHtpbXBsQ2xhc3NOYW1lfT4gb2JqZWN0
ID0gJHtpbXBsQ2xhc3NOYW1lfTo6Y3JlYXRlKCR7Y29uc3RydWN0b3JBcmd9KTtcbiIpOwogICAg
ICAgICAgICAgfQogCiAgICAgICAgICAgICBpZiAoJGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1
dGVzLT57IkNvbnN0cnVjdG9yUmFpc2VzRXhjZXB0aW9uIn0pIHsKQEAgLTQxNDUsMTQgKzQxODQs
MTQgQEAgRU5ECiBzdWIgR2VuZXJhdGVDb25zdHJ1Y3RvckhlbHBlck1ldGhvZHMKIHsKICAgICBt
eSAkb3V0cHV0QXJyYXkgPSBzaGlmdDsKLSAgICBteSAkY2xhc3NOYW1lID0gc2hpZnQ7CiAgICAg
bXkgJHByb3RvQ2xhc3NOYW1lID0gc2hpZnQ7Ci0gICAgbXkgJGludGVyZmFjZU5hbWUgPSBzaGlm
dDsKLSAgICBteSAkdmlzaWJsZUludGVyZmFjZU5hbWUgPSBzaGlmdDsKICAgICBteSAkaW50ZXJm
YWNlID0gc2hpZnQ7CisgICAgbXkgJHZpc2libGVJbnRlcmZhY2VOYW1lID0gc2hpZnQ7CiAgICAg
bXkgJGdlbmVyYXRpbmdOYW1lZENvbnN0cnVjdG9yID0gc2hpZnQ7CiAKLSAgICBteSAkY29uc3Ry
dWN0b3JDbGFzc05hbWUgPSAkZ2VuZXJhdGluZ05hbWVkQ29uc3RydWN0b3IgPyAiJHtjbGFzc05h
bWV9TmFtZWRDb25zdHJ1Y3RvciIgOiAiJHtjbGFzc05hbWV9Q29uc3RydWN0b3IiOworICAgIG15
ICRpbnRlcmZhY2VOYW1lID0gJGludGVyZmFjZS0+bmFtZTsKKyAgICBteSAkanNDbGFzc05hbWUg
PSBHZXRKU0NsYXNzTmFtZSgkaW50ZXJmYWNlKTsKKyAgICBteSAkY29uc3RydWN0b3JDbGFzc05h
bWUgPSAkZ2VuZXJhdGluZ05hbWVkQ29uc3RydWN0b3IgPyAiJHtqc0NsYXNzTmFtZX1OYW1lZENv
bnN0cnVjdG9yIiA6ICIke2pzQ2xhc3NOYW1lfUNvbnN0cnVjdG9yIjsKICAgICBteSAkbGVhc3RD
b25zdHJ1Y3Rvckxlbmd0aCA9ICRpbnRlcmZhY2UtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJDb25z
dHJ1Y3RvclBhcmFtZXRlcnMifTsKICAgICBpZiAoIWRlZmluZWQgJGxlYXN0Q29uc3RydWN0b3JM
ZW5ndGgpIHsKICAgICAgICAgaWYgKCRjb2RlR2VuZXJhdG9yLT5Jc0NvbnN0cnVjdG9yVGVtcGxh
dGUoJGludGVyZmFjZSwgIkV2ZW50IikgfHwgJGNvZGVHZW5lcmF0b3ItPklzQ29uc3RydWN0b3JU
ZW1wbGF0ZSgkaW50ZXJmYWNlLCAiVHlwZWRBcnJheSIpKSB7CkBAIC00MjAwLDcgKzQyMzksNyBA
QCBzdWIgR2VuZXJhdGVDb25zdHJ1Y3RvckhlbHBlck1ldGhvZHMKICAgICB9IGVsc2lmICgkZ2Vu
ZXJhdGluZ05hbWVkQ29uc3RydWN0b3IpIHsKICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAi
ICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKGdsb2JhbE9iamVjdCk7XG4iKTsKICAgICAgICAgcHVz
aChAJG91dHB1dEFycmF5LCAiICAgIEFTU0VSVChpbmhlcml0cygmc19pbmZvKSk7XG4iKTsKLSAg
ICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIHB1dERpcmVjdChleGVjLT52bSgpLCBleGVj
LT5wcm9wZXJ0eU5hbWVzKCkucHJvdG90eXBlLCAke2NsYXNzTmFtZX1Qcm90b3R5cGU6OnNlbGYo
ZXhlYywgZ2xvYmFsT2JqZWN0KSwgTm9uZSk7XG4iKTsKKyAgICAgICAgcHVzaChAJG91dHB1dEFy
cmF5LCAiICAgIHB1dERpcmVjdChleGVjLT52bSgpLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkucHJv
dG90eXBlLCAke2pzQ2xhc3NOYW1lfVByb3RvdHlwZTo6c2VsZihleGVjLCBnbG9iYWxPYmplY3Qp
LCBOb25lKTtcbiIpOwogICAgIH0gZWxzZSB7CiAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwg
IiAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbihleGVjLT52bSgpKTtcbiIpOwogICAgICAgICBwdXNo
KEAkb3V0cHV0QXJyYXksICIgICAgQVNTRVJUKGluaGVyaXRzKCZzX2luZm8pKTtcbiIpOwpAQCAt
NDIzNyw3ICs0Mjc2LDcgQEAgc3ViIEdlbmVyYXRlQ29uc3RydWN0b3JIZWxwZXJNZXRob2RzCiAg
ICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIjaWYgJGNvbmRpdGlvbmFsU3RyaW5nXG4i
KSBpZiAkY29uZGl0aW9uYWxTdHJpbmc7CiAgICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXks
ICJDb25zdHJ1Y3RUeXBlICR7Y29uc3RydWN0b3JDbGFzc05hbWV9OjpnZXRDb25zdHJ1Y3REYXRh
KEpTQ2VsbCosIENvbnN0cnVjdERhdGEmIGNvbnN0cnVjdERhdGEpXG4iKTsKICAgICAgICAgICAg
IHB1c2goQCRvdXRwdXRBcnJheSwgIntcbiIpOwotICAgICAgICAgICAgcHVzaChAJG91dHB1dEFy
cmF5LCAiICAgIGNvbnN0cnVjdERhdGEubmF0aXZlLmZ1bmN0aW9uID0gY29uc3RydWN0JHtjbGFz
c05hbWV9O1xuIik7CisgICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgY29uc3Ry
dWN0RGF0YS5uYXRpdmUuZnVuY3Rpb24gPSBjb25zdHJ1Y3Qke2pzQ2xhc3NOYW1lfTtcbiIpOwog
ICAgICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIHJldHVybiBDb25zdHJ1Y3RUeXBl
SG9zdDtcbiIpOwogICAgICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAifVxuIik7CiAgICAg
ICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIjZW5kaWYgLy8gJGNvbmRpdGlvbmFsU3RyaW5n
XG4iKSBpZiAkY29uZGl0aW9uYWxTdHJpbmc7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvQ1BQL1dlYkRPTVRlc3RJbnRlcmZhY2VJbXBsZW1lbnRlZEFz
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9DUFAvV2ViRE9NVGVz
dEludGVyZmFjZUltcGxlbWVudGVkQXMuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAuLjEzMTljYTUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvQ1BQL1dlYkRPTVRlc3RJbnRlcmZhY2VJbXBsZW1lbnRlZEFzLmNwcApA
QCAtMCwwICsxLDEzMyBAQAorLyoKKyAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBXZWJLaXQg
b3BlbiBzb3VyY2UgcHJvamVjdC4KKyAqIFRoaXMgZmlsZSBoYXMgYmVlbiBnZW5lcmF0ZWQgYnkg
Z2VuZXJhdGUtYmluZGluZ3MucGwuIERPIE5PVCBNT0RJRlkhCisgKgorICogVGhpcyBsaWJyYXJ5
IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9k
aWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMK
KyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247
IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24p
IGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBp
biB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdB
UlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5U
QUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05V
CisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAq
CisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBH
ZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRo
ZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICogdGhlIEZyZWUgU29mdHdh
cmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAq
IEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIK
KyNpbmNsdWRlICJXZWJET01UZXN0SW50ZXJmYWNlSW1wbGVtZW50ZWRBcy5oIgorCisjaW5jbHVk
ZSAiS1VSTC5oIgorI2luY2x1ZGUgIlRlc3RJbnRlcmZhY2VJbXBsZW1lbnRlZEFzLmgiCisjaW5j
bHVkZSAiV2ViRE9NU3RyaW5nLmgiCisjaW5jbHVkZSAiV2ViRXhjZXB0aW9uSGFuZGxlci5oIgor
I2luY2x1ZGUgPHd0Zi9HZXRQdHIuaD4KKyNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CisjaW5jbHVk
ZSA8d3RmL3RleHQvQXRvbWljU3RyaW5nLmg+CisKK3N0cnVjdCBXZWJET01UZXN0SW50ZXJmYWNl
SW1wbGVtZW50ZWRBczo6V2ViRE9NVGVzdEludGVyZmFjZUltcGxlbWVudGVkQXNQcml2YXRlIHsK
KyAgICBXZWJET01UZXN0SW50ZXJmYWNlSW1wbGVtZW50ZWRBc1ByaXZhdGUoV2ViQ29yZTo6VGVz
dEludGVyZmFjZUltcGxlbWVudGVkQXMqIG9iamVjdCA9IDApCisgICAgICAgIDogaW1wbChvYmpl
Y3QpCisgICAgeworICAgIH0KKworICAgIFJlZlB0cjxXZWJDb3JlOjpUZXN0SW50ZXJmYWNlSW1w
bGVtZW50ZWRBcz4gaW1wbDsKK307CisKK1dlYkRPTVRlc3RJbnRlcmZhY2VJbXBsZW1lbnRlZEFz
OjpXZWJET01UZXN0SW50ZXJmYWNlSW1wbGVtZW50ZWRBcygpCisgICAgOiBXZWJET01PYmplY3Qo
KQorICAgICwgbV9pbXBsKDApCit7Cit9CisKK1dlYkRPTVRlc3RJbnRlcmZhY2VJbXBsZW1lbnRl
ZEFzOjpXZWJET01UZXN0SW50ZXJmYWNlSW1wbGVtZW50ZWRBcyhXZWJDb3JlOjpUZXN0SW50ZXJm
YWNlSW1wbGVtZW50ZWRBcyogaW1wbCkKKyAgICA6IFdlYkRPTU9iamVjdCgpCisgICAgLCBtX2lt
cGwobmV3IFdlYkRPTVRlc3RJbnRlcmZhY2VJbXBsZW1lbnRlZEFzUHJpdmF0ZShpbXBsKSkKK3sK
K30KKworV2ViRE9NVGVzdEludGVyZmFjZUltcGxlbWVudGVkQXM6OldlYkRPTVRlc3RJbnRlcmZh
Y2VJbXBsZW1lbnRlZEFzKGNvbnN0IFdlYkRPTVRlc3RJbnRlcmZhY2VJbXBsZW1lbnRlZEFzJiBj
b3B5KQorICAgIDogV2ViRE9NT2JqZWN0KCkKK3sKKyAgICBtX2ltcGwgPSBjb3B5LmltcGwoKSA/
IG5ldyBXZWJET01UZXN0SW50ZXJmYWNlSW1wbGVtZW50ZWRBc1ByaXZhdGUoY29weS5pbXBsKCkp
IDogMDsKK30KKworV2ViRE9NVGVzdEludGVyZmFjZUltcGxlbWVudGVkQXMmIFdlYkRPTVRlc3RJ
bnRlcmZhY2VJbXBsZW1lbnRlZEFzOjpvcGVyYXRvcj0oY29uc3QgV2ViRE9NVGVzdEludGVyZmFj
ZUltcGxlbWVudGVkQXMmIGNvcHkpCit7CisgICAgZGVsZXRlIG1faW1wbDsKKyAgICBtX2ltcGwg
PSBjb3B5LmltcGwoKSA/IG5ldyBXZWJET01UZXN0SW50ZXJmYWNlSW1wbGVtZW50ZWRBc1ByaXZh
dGUoY29weS5pbXBsKCkpIDogMDsKKyAgICByZXR1cm4gKnRoaXM7Cit9CisKK1dlYkNvcmU6OlRl
c3RJbnRlcmZhY2VJbXBsZW1lbnRlZEFzKiBXZWJET01UZXN0SW50ZXJmYWNlSW1wbGVtZW50ZWRB
czo6aW1wbCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1faW1wbCA/IFdURjo6Z2V0UHRyKG1faW1w
bC0+aW1wbCkgOiAwOworfQorCitXZWJET01UZXN0SW50ZXJmYWNlSW1wbGVtZW50ZWRBczo6fldl
YkRPTVRlc3RJbnRlcmZhY2VJbXBsZW1lbnRlZEFzKCkKK3sKKyAgICBkZWxldGUgbV9pbXBsOwor
ICAgIG1faW1wbCA9IDA7Cit9CisKK1dlYkRPTVN0cmluZyBXZWJET01UZXN0SW50ZXJmYWNlSW1w
bGVtZW50ZWRBczo6YSgpIGNvbnN0Cit7CisgICAgaWYgKCFpbXBsKCkpCisgICAgICAgIHJldHVy
biBXZWJET01TdHJpbmcoKTsKKworICAgIHJldHVybiBzdGF0aWNfY2FzdDxjb25zdCBXVEY6OlN0
cmluZyY+KGltcGwoKS0+YSgpKTsKK30KKwordm9pZCBXZWJET01UZXN0SW50ZXJmYWNlSW1wbGVt
ZW50ZWRBczo6c2V0QShjb25zdCBXZWJET01TdHJpbmcmIG5ld0EpCit7CisgICAgaWYgKCFpbXBs
KCkpCisgICAgICAgIHJldHVybjsKKworICAgIGltcGwoKS0+c2V0QShuZXdBKTsKK30KKworV2Vi
RE9NVGVzdEludGVyZmFjZUltcGxlbWVudGVkQXMgV2ViRE9NVGVzdEludGVyZmFjZUltcGxlbWVu
dGVkQXM6OmIoKSBjb25zdAoreworICAgIGlmICghaW1wbCgpKQorICAgICAgICByZXR1cm4gV2Vi
RE9NVGVzdEludGVyZmFjZUltcGxlbWVudGVkQXMoKTsKKworICAgIHJldHVybiB0b1dlYktpdChX
VEY6OmdldFB0cihpbXBsKCktPmIoKSkpOworfQorCit2b2lkIFdlYkRPTVRlc3RJbnRlcmZhY2VJ
bXBsZW1lbnRlZEFzOjpzZXRCKGNvbnN0IFdlYkRPTVRlc3RJbnRlcmZhY2VJbXBsZW1lbnRlZEFz
JiBuZXdCKQoreworICAgIGlmICghaW1wbCgpKQorICAgICAgICByZXR1cm47CisKKyAgICBpbXBs
KCktPnNldEIodG9XZWJDb3JlKG5ld0IpKTsKK30KKworV2ViRE9NU3RyaW5nIFdlYkRPTVRlc3RJ
bnRlcmZhY2VJbXBsZW1lbnRlZEFzOjpmdW5jMShjb25zdCBXZWJET01TdHJpbmcmIGluQSkKK3sK
KyAgICBpZiAoIWltcGwoKSkKKyAgICAgICAgcmV0dXJuIFdlYkRPTVN0cmluZygpOworCisgICAg
cmV0dXJuIGltcGwoKS0+ZnVuYzEoaW5BKTsKK30KKworV2ViRE9NU3RyaW5nIFdlYkRPTVRlc3RJ
bnRlcmZhY2VJbXBsZW1lbnRlZEFzOjpmdW5jVGVzdEludGVyZmFjZUltcGxlbWVudGVkQXNQYXJh
bShjb25zdCBXZWJET01UZXN0SW50ZXJmYWNlSW1wbGVtZW50ZWRBcyYgb3JhbmdlKQoreworICAg
IGlmICghaW1wbCgpKQorICAgICAgICByZXR1cm4gV2ViRE9NU3RyaW5nKCk7CisKKyAgICByZXR1
cm4gaW1wbCgpLT5mdW5jVGVzdEludGVyZmFjZUltcGxlbWVudGVkQXNQYXJhbSh0b1dlYkNvcmUo
b3JhbmdlKSk7Cit9CisKK1dlYkNvcmU6OlRlc3RJbnRlcmZhY2VJbXBsZW1lbnRlZEFzKiB0b1dl
YkNvcmUoY29uc3QgV2ViRE9NVGVzdEludGVyZmFjZUltcGxlbWVudGVkQXMmIHdyYXBwZXIpCit7
CisgICAgcmV0dXJuIHdyYXBwZXIuaW1wbCgpOworfQorCitXZWJET01UZXN0SW50ZXJmYWNlSW1w
bGVtZW50ZWRBcyB0b1dlYktpdChXZWJDb3JlOjpUZXN0SW50ZXJmYWNlSW1wbGVtZW50ZWRBcyog
dmFsdWUpCit7CisgICAgcmV0dXJuIFdlYkRPTVRlc3RJbnRlcmZhY2VJbXBsZW1lbnRlZEFzKHZh
bHVlKTsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9DUFAvV2ViRE9NVGVzdEludGVyZmFjZUltcGxlbWVudGVkQXMuaCBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9DUFAvV2ViRE9NVGVzdEludGVyZmFjZUltcGxlbWVudGVk
QXMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40NWMwN2VjCi0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0NQUC9XZWJE
T01UZXN0SW50ZXJmYWNlSW1wbGVtZW50ZWRBcy5oCkBAIC0wLDAgKzEsNjEgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIFJlc2VhcmNoIEluIE1vdGlvbiBMaW1pdGVkIDIwMTAuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDYsIDIwMDcsIDIwMDgs
IDIwMDkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAy
MDA2IFNhbXVlbCBXZWluaWcgPHNhbS53ZWluaWdAZ21haWwuY29tPgorICogQ29weXJpZ2h0IChD
KSBSZXNlYXJjaCBJbiBNb3Rpb24gTGltaXRlZCAyMDEwLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0
ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJy
YXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBT
b2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwg
b3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJh
cnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAq
IGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJh
bnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBV
UlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZv
ciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBv
ZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0
aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8K
KyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVl
dCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqLworCisj
aWZuZGVmIFdlYkRPTVRlc3RJbnRlcmZhY2VJbXBsZW1lbnRlZEFzX2gKKyNkZWZpbmUgV2ViRE9N
VGVzdEludGVyZmFjZUltcGxlbWVudGVkQXNfaAorCisjaW5jbHVkZSA8V2ViRE9NT2JqZWN0Lmg+
CisjaW5jbHVkZSA8V2ViRE9NU3RyaW5nLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKK2NsYXNz
IFRlc3RJbnRlcmZhY2VJbXBsZW1lbnRlZEFzOworfTsKKworY2xhc3MgV2ViRE9NVGVzdEludGVy
ZmFjZUltcGxlbWVudGVkQXM7CisKK2NsYXNzIFdlYkRPTVRlc3RJbnRlcmZhY2VJbXBsZW1lbnRl
ZEFzIDogcHVibGljIFdlYkRPTU9iamVjdCB7CitwdWJsaWM6CisgICAgV2ViRE9NVGVzdEludGVy
ZmFjZUltcGxlbWVudGVkQXMoKTsKKyAgICBleHBsaWNpdCBXZWJET01UZXN0SW50ZXJmYWNlSW1w
bGVtZW50ZWRBcyhXZWJDb3JlOjpUZXN0SW50ZXJmYWNlSW1wbGVtZW50ZWRBcyopOworICAgIFdl
YkRPTVRlc3RJbnRlcmZhY2VJbXBsZW1lbnRlZEFzKGNvbnN0IFdlYkRPTVRlc3RJbnRlcmZhY2VJ
bXBsZW1lbnRlZEFzJik7CisgICAgV2ViRE9NVGVzdEludGVyZmFjZUltcGxlbWVudGVkQXMmIG9w
ZXJhdG9yPShjb25zdCBXZWJET01UZXN0SW50ZXJmYWNlSW1wbGVtZW50ZWRBcyYpOworICAgIHZp
cnR1YWwgfldlYkRPTVRlc3RJbnRlcmZhY2VJbXBsZW1lbnRlZEFzKCk7CisKKyAgICBXZWJET01T
dHJpbmcgYSgpIGNvbnN0OworICAgIHZvaWQgc2V0QShjb25zdCBXZWJET01TdHJpbmcmKTsKKyAg
ICBXZWJET01UZXN0SW50ZXJmYWNlSW1wbGVtZW50ZWRBcyBiKCkgY29uc3Q7CisgICAgdm9pZCBz
ZXRCKGNvbnN0IFdlYkRPTVRlc3RJbnRlcmZhY2VJbXBsZW1lbnRlZEFzJik7CisKKyAgICBXZWJE
T01TdHJpbmcgZnVuYzEoY29uc3QgV2ViRE9NU3RyaW5nJiBhKTsKKyAgICBXZWJET01TdHJpbmcg
ZnVuY1Rlc3RJbnRlcmZhY2VJbXBsZW1lbnRlZEFzUGFyYW0oY29uc3QgV2ViRE9NVGVzdEludGVy
ZmFjZUltcGxlbWVudGVkQXMmIG9yYW5nZSk7CisKKyAgICBXZWJDb3JlOjpUZXN0SW50ZXJmYWNl
SW1wbGVtZW50ZWRBcyogaW1wbCgpIGNvbnN0OworCitwcm90ZWN0ZWQ6CisgICAgc3RydWN0IFdl
YkRPTVRlc3RJbnRlcmZhY2VJbXBsZW1lbnRlZEFzUHJpdmF0ZTsKKyAgICBXZWJET01UZXN0SW50
ZXJmYWNlSW1wbGVtZW50ZWRBc1ByaXZhdGUqIG1faW1wbDsKK307CisKK1dlYkNvcmU6OlRlc3RJ
bnRlcmZhY2VJbXBsZW1lbnRlZEFzKiB0b1dlYkNvcmUoY29uc3QgV2ViRE9NVGVzdEludGVyZmFj
ZUltcGxlbWVudGVkQXMmKTsKK1dlYkRPTVRlc3RJbnRlcmZhY2VJbXBsZW1lbnRlZEFzIHRvV2Vi
S2l0KFdlYkNvcmU6OlRlc3RJbnRlcmZhY2VJbXBsZW1lbnRlZEFzKik7CisKKyNlbmRpZgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0dPYmplY3QvV2Vi
S2l0RE9NVGVzdEludGVyZmFjZUltcGxlbWVudGVkQXMuY3BwIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0dPYmplY3QvV2ViS2l0RE9NVGVzdEludGVyZmFjZUltcGxlbWVu
dGVkQXMuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBlNWY4Y2QKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvR09i
amVjdC9XZWJLaXRET01UZXN0SW50ZXJmYWNlSW1wbGVtZW50ZWRBcy5jcHAKQEAgLTAsMCArMSwy
MzIgQEAKKy8qCisgICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIFdlYktpdCBvcGVuIHNvdXJj
ZSBwcm9qZWN0LgorICAgIFRoaXMgZmlsZSBoYXMgYmVlbiBnZW5lcmF0ZWQgYnkgZ2VuZXJhdGUt
YmluZGluZ3MucGwuIERPIE5PVCBNT0RJRlkhCisKKyAgICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBz
b2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgICAgbW9kaWZ5IGl0IHVu
ZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAgICBMaWNl
bnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIK
KyAgICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxh
dGVyIHZlcnNpb24uCisKKyAgICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhv
cGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7
IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICAgIE1FUkNIQU5UQUJJTElU
WSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgICAg
TGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisKKyAgICBZ
b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFs
IFB1YmxpYyBMaWNlbnNlCisgICAgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmls
ZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAgICB0aGUgRnJlZSBTb2Z0d2FyZSBG
b3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICAgIEJv
c3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2lu
Y2x1ZGUgIldlYktpdERPTVRlc3RJbnRlcmZhY2VJbXBsZW1lbnRlZEFzLmgiCisKKyNpbmNsdWRl
ICJDU1NJbXBvcnRSdWxlLmgiCisjaW5jbHVkZSAiRE9NT2JqZWN0Q2FjaGUuaCIKKyNpbmNsdWRl
ICJFeGNlcHRpb25Db2RlLmgiCisjaW5jbHVkZSAiSlNNYWluVGhyZWFkRXhlY1N0YXRlLmgiCisj
aW5jbHVkZSAiV2ViS2l0RE9NUHJpdmF0ZS5oIgorI2luY2x1ZGUgIldlYktpdERPTVRlc3RJbnRl
cmZhY2VJbXBsZW1lbnRlZEFzUHJpdmF0ZS5oIgorI2luY2x1ZGUgImdvYmplY3QvQ29udmVydFRv
VVRGOFN0cmluZy5oIgorI2luY2x1ZGUgPHd0Zi9HZXRQdHIuaD4KKyNpbmNsdWRlIDx3dGYvUmVm
UHRyLmg+CisKKyNkZWZpbmUgV0VCS0lUX0RPTV9URVNUX0lOVEVSRkFDRV9JTVBMRU1FTlRFRF9B
U19HRVRfUFJJVkFURShvYmopIEdfVFlQRV9JTlNUQU5DRV9HRVRfUFJJVkFURShvYmosIFdFQktJ
VF9UWVBFX0RPTV9URVNUX0lOVEVSRkFDRV9JTVBMRU1FTlRFRF9BUywgV2ViS2l0RE9NVGVzdElu
dGVyZmFjZUltcGxlbWVudGVkQXNQcml2YXRlKQorCit0eXBlZGVmIHN0cnVjdCBfV2ViS2l0RE9N
VGVzdEludGVyZmFjZUltcGxlbWVudGVkQXNQcml2YXRlIHsKKyAgICBSZWZQdHI8V2ViQ29yZTo6
VGVzdEludGVyZmFjZUltcGxlbWVudGVkQXM+IGNvcmVPYmplY3Q7Cit9IFdlYktpdERPTVRlc3RJ
bnRlcmZhY2VJbXBsZW1lbnRlZEFzUHJpdmF0ZTsKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK1dl
YktpdERPTVRlc3RJbnRlcmZhY2VJbXBsZW1lbnRlZEFzKiBraXQoV2ViQ29yZTo6VGVzdEludGVy
ZmFjZUltcGxlbWVudGVkQXMqIG9iaikKK3sKKyAgICBpZiAoIW9iaikKKyAgICAgICAgcmV0dXJu
IDA7CisKKyAgICBpZiAoZ3BvaW50ZXIgcmV0ID0gRE9NT2JqZWN0Q2FjaGU6OmdldChvYmopKQor
ICAgICAgICByZXR1cm4gV0VCS0lUX0RPTV9URVNUX0lOVEVSRkFDRV9JTVBMRU1FTlRFRF9BUyhy
ZXQpOworCisgICAgcmV0dXJuIHdyYXBUZXN0SW50ZXJmYWNlSW1wbGVtZW50ZWRBcyhvYmopOwor
fQorCitXZWJDb3JlOjpUZXN0SW50ZXJmYWNlSW1wbGVtZW50ZWRBcyogY29yZShXZWJLaXRET01U
ZXN0SW50ZXJmYWNlSW1wbGVtZW50ZWRBcyogcmVxdWVzdCkKK3sKKyAgICByZXR1cm4gcmVxdWVz
dCA/IHN0YXRpY19jYXN0PFdlYkNvcmU6OlRlc3RJbnRlcmZhY2VJbXBsZW1lbnRlZEFzKj4oV0VC
S0lUX0RPTV9PQkpFQ1QocmVxdWVzdCktPmNvcmVPYmplY3QpIDogMDsKK30KKworV2ViS2l0RE9N
VGVzdEludGVyZmFjZUltcGxlbWVudGVkQXMqIHdyYXBUZXN0SW50ZXJmYWNlSW1wbGVtZW50ZWRB
cyhXZWJDb3JlOjpUZXN0SW50ZXJmYWNlSW1wbGVtZW50ZWRBcyogY29yZU9iamVjdCkKK3sKKyAg
ICBBU1NFUlQoY29yZU9iamVjdCk7CisgICAgcmV0dXJuIFdFQktJVF9ET01fVEVTVF9JTlRFUkZB
Q0VfSU1QTEVNRU5URURfQVMoZ19vYmplY3RfbmV3KFdFQktJVF9UWVBFX0RPTV9URVNUX0lOVEVS
RkFDRV9JTVBMRU1FTlRFRF9BUywgImNvcmUtb2JqZWN0IiwgY29yZU9iamVjdCwgTlVMTCkpOwor
fQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworR19ERUZJTkVfVFlQRShXZWJLaXRET01UZXN0
SW50ZXJmYWNlSW1wbGVtZW50ZWRBcywgd2Via2l0X2RvbV90ZXN0X2ludGVyZmFjZV9pbXBsZW1l
bnRlZF9hcywgV0VCS0lUX1RZUEVfRE9NX09CSkVDVCkKKworZW51bSB7CisgICAgUFJPUF8wLAor
ICAgIFBST1BfQSwKKyAgICBQUk9QX0IsCit9OworCitzdGF0aWMgdm9pZCB3ZWJraXRfZG9tX3Rl
c3RfaW50ZXJmYWNlX2ltcGxlbWVudGVkX2FzX2ZpbmFsaXplKEdPYmplY3QqIG9iamVjdCkKK3sK
KyAgICBXZWJLaXRET01UZXN0SW50ZXJmYWNlSW1wbGVtZW50ZWRBc1ByaXZhdGUqIHByaXYgPSBX
RUJLSVRfRE9NX1RFU1RfSU5URVJGQUNFX0lNUExFTUVOVEVEX0FTX0dFVF9QUklWQVRFKG9iamVj
dCk7CisKKyAgICBXZWJLaXQ6OkRPTU9iamVjdENhY2hlOjpmb3JnZXQocHJpdi0+Y29yZU9iamVj
dC5nZXQoKSk7CisKKyAgICBwcml2LT5+V2ViS2l0RE9NVGVzdEludGVyZmFjZUltcGxlbWVudGVk
QXNQcml2YXRlKCk7CisgICAgR19PQkpFQ1RfQ0xBU1Mod2Via2l0X2RvbV90ZXN0X2ludGVyZmFj
ZV9pbXBsZW1lbnRlZF9hc19wYXJlbnRfY2xhc3MpLT5maW5hbGl6ZShvYmplY3QpOworfQorCitz
dGF0aWMgdm9pZCB3ZWJraXRfZG9tX3Rlc3RfaW50ZXJmYWNlX2ltcGxlbWVudGVkX2FzX3NldF9w
cm9wZXJ0eShHT2JqZWN0KiBvYmplY3QsIGd1aW50IHByb3BlcnR5SWQsIGNvbnN0IEdWYWx1ZSog
dmFsdWUsIEdQYXJhbVNwZWMqIHBzcGVjKQoreworICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51
bGxTdGF0ZSBzdGF0ZTsKKworICAgIFdlYktpdERPTVRlc3RJbnRlcmZhY2VJbXBsZW1lbnRlZEFz
KiBzZWxmID0gV0VCS0lUX0RPTV9URVNUX0lOVEVSRkFDRV9JTVBMRU1FTlRFRF9BUyhvYmplY3Qp
OworICAgIFdlYkNvcmU6OlRlc3RJbnRlcmZhY2VJbXBsZW1lbnRlZEFzKiBjb3JlU2VsZiA9IFdl
YktpdDo6Y29yZShzZWxmKTsKKworICAgIHN3aXRjaCAocHJvcGVydHlJZCkgeworICAgIGNhc2Ug
UFJPUF9BOiB7CisgICAgICAgIGNvcmVTZWxmLT5zZXRBKFdURjo6U3RyaW5nOjpmcm9tVVRGOChn
X3ZhbHVlX2dldF9zdHJpbmcodmFsdWUpKSk7CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICBk
ZWZhdWx0OgorICAgICAgICBHX09CSkVDVF9XQVJOX0lOVkFMSURfUFJPUEVSVFlfSUQob2JqZWN0
LCBwcm9wZXJ0eUlkLCBwc3BlYyk7CisgICAgICAgIGJyZWFrOworICAgIH0KK30KKworc3RhdGlj
IHZvaWQgd2Via2l0X2RvbV90ZXN0X2ludGVyZmFjZV9pbXBsZW1lbnRlZF9hc19nZXRfcHJvcGVy
dHkoR09iamVjdCogb2JqZWN0LCBndWludCBwcm9wZXJ0eUlkLCBHVmFsdWUqIHZhbHVlLCBHUGFy
YW1TcGVjKiBwc3BlYykKK3sKKyAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3Rh
dGU7CisKKyAgICBXZWJLaXRET01UZXN0SW50ZXJmYWNlSW1wbGVtZW50ZWRBcyogc2VsZiA9IFdF
QktJVF9ET01fVEVTVF9JTlRFUkZBQ0VfSU1QTEVNRU5URURfQVMob2JqZWN0KTsKKyAgICBXZWJD
b3JlOjpUZXN0SW50ZXJmYWNlSW1wbGVtZW50ZWRBcyogY29yZVNlbGYgPSBXZWJLaXQ6OmNvcmUo
c2VsZik7CisKKyAgICBzd2l0Y2ggKHByb3BlcnR5SWQpIHsKKyAgICBjYXNlIFBST1BfQTogewor
ICAgICAgICBnX3ZhbHVlX3Rha2Vfc3RyaW5nKHZhbHVlLCBjb252ZXJ0VG9VVEY4U3RyaW5nKGNv
cmVTZWxmLT5hKCkpKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIGNhc2UgUFJPUF9COiB7
CisgICAgICAgIFJlZlB0cjxXZWJDb3JlOjpUZXN0SW50ZXJmYWNlSW1wbGVtZW50ZWRBcz4gcHRy
ID0gY29yZVNlbGYtPmIoKTsKKyAgICAgICAgZ192YWx1ZV9zZXRfb2JqZWN0KHZhbHVlLCBXZWJL
aXQ6OmtpdChwdHIuZ2V0KCkpKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIGRlZmF1bHQ6
CisgICAgICAgIEdfT0JKRUNUX1dBUk5fSU5WQUxJRF9QUk9QRVJUWV9JRChvYmplY3QsIHByb3Bl
cnR5SWQsIHBzcGVjKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorfQorCitzdGF0aWMgR09iamVj
dCogd2Via2l0X2RvbV90ZXN0X2ludGVyZmFjZV9pbXBsZW1lbnRlZF9hc19jb25zdHJ1Y3RvcihH
VHlwZSB0eXBlLCBndWludCBjb25zdHJ1Y3RQcm9wZXJ0aWVzQ291bnQsIEdPYmplY3RDb25zdHJ1
Y3RQYXJhbSogY29uc3RydWN0UHJvcGVydGllcykKK3sKKyAgICBHT2JqZWN0KiBvYmplY3QgPSBH
X09CSkVDVF9DTEFTUyh3ZWJraXRfZG9tX3Rlc3RfaW50ZXJmYWNlX2ltcGxlbWVudGVkX2FzX3Bh
cmVudF9jbGFzcyktPmNvbnN0cnVjdG9yKHR5cGUsIGNvbnN0cnVjdFByb3BlcnRpZXNDb3VudCwg
Y29uc3RydWN0UHJvcGVydGllcyk7CisKKyAgICBXZWJLaXRET01UZXN0SW50ZXJmYWNlSW1wbGVt
ZW50ZWRBc1ByaXZhdGUqIHByaXYgPSBXRUJLSVRfRE9NX1RFU1RfSU5URVJGQUNFX0lNUExFTUVO
VEVEX0FTX0dFVF9QUklWQVRFKG9iamVjdCk7CisgICAgcHJpdi0+Y29yZU9iamVjdCA9IHN0YXRp
Y19jYXN0PFdlYkNvcmU6OlRlc3RJbnRlcmZhY2VJbXBsZW1lbnRlZEFzKj4oV0VCS0lUX0RPTV9P
QkpFQ1Qob2JqZWN0KS0+Y29yZU9iamVjdCk7CisgICAgV2ViS2l0OjpET01PYmplY3RDYWNoZTo6
cHV0KHByaXYtPmNvcmVPYmplY3QuZ2V0KCksIG9iamVjdCk7CisKKyAgICByZXR1cm4gb2JqZWN0
OworfQorCitzdGF0aWMgdm9pZCB3ZWJraXRfZG9tX3Rlc3RfaW50ZXJmYWNlX2ltcGxlbWVudGVk
X2FzX2NsYXNzX2luaXQoV2ViS2l0RE9NVGVzdEludGVyZmFjZUltcGxlbWVudGVkQXNDbGFzcyog
cmVxdWVzdENsYXNzKQoreworICAgIEdPYmplY3RDbGFzcyogZ29iamVjdENsYXNzID0gR19PQkpF
Q1RfQ0xBU1MocmVxdWVzdENsYXNzKTsKKyAgICBnX3R5cGVfY2xhc3NfYWRkX3ByaXZhdGUoZ29i
amVjdENsYXNzLCBzaXplb2YoV2ViS2l0RE9NVGVzdEludGVyZmFjZUltcGxlbWVudGVkQXNQcml2
YXRlKSk7CisgICAgZ29iamVjdENsYXNzLT5jb25zdHJ1Y3RvciA9IHdlYmtpdF9kb21fdGVzdF9p
bnRlcmZhY2VfaW1wbGVtZW50ZWRfYXNfY29uc3RydWN0b3I7CisgICAgZ29iamVjdENsYXNzLT5m
aW5hbGl6ZSA9IHdlYmtpdF9kb21fdGVzdF9pbnRlcmZhY2VfaW1wbGVtZW50ZWRfYXNfZmluYWxp
emU7CisgICAgZ29iamVjdENsYXNzLT5zZXRfcHJvcGVydHkgPSB3ZWJraXRfZG9tX3Rlc3RfaW50
ZXJmYWNlX2ltcGxlbWVudGVkX2FzX3NldF9wcm9wZXJ0eTsKKyAgICBnb2JqZWN0Q2xhc3MtPmdl
dF9wcm9wZXJ0eSA9IHdlYmtpdF9kb21fdGVzdF9pbnRlcmZhY2VfaW1wbGVtZW50ZWRfYXNfZ2V0
X3Byb3BlcnR5OworCisgICAgZ19vYmplY3RfY2xhc3NfaW5zdGFsbF9wcm9wZXJ0eShnb2JqZWN0
Q2xhc3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQUk9QX0EsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnX3BhcmFtX3NwZWNfc3RyaW5nKCJhIiwg
LyogbmFtZSAqLworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAidGVzdF9pbnRlcmZhY2VfaW1wbGVtZW50ZWRfYXNfYSIsIC8qIHNob3J0
IGRlc2NyaXB0aW9uICovCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICJyZWFkLXdyaXRlICBnY2hhciogVGVzdEludGVyZmFjZUltcGxl
bWVudGVkQXMuYSIsIC8qIGxvbmdlciAtIGNvdWxkIGRvIHdpdGggc29tZSBleHRyYSBkb2Mgc3R1
ZmYgaGVyZSAqLworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAiIiwgLyogZGVmYXVsdCAqLworICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXRUJLSVRfUEFSQU1fUkVBRFdSSVRF
KSk7CisgICAgZ19vYmplY3RfY2xhc3NfaW5zdGFsbF9wcm9wZXJ0eShnb2JqZWN0Q2xhc3MsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQUk9QX0IsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBnX3BhcmFtX3NwZWNfb2JqZWN0KCJiIiwgLyogbmFtZSAq
LworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAidGVzdF9pbnRlcmZhY2VfaW1wbGVtZW50ZWRfYXNfYiIsIC8qIHNob3J0IGRlc2NyaXB0
aW9uICovCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICJyZWFkLXdyaXRlICBXZWJLaXRET01UZXN0SW50ZXJmYWNlSW1wbGVtZW50ZWRB
cyogVGVzdEludGVyZmFjZUltcGxlbWVudGVkQXMuYiIsIC8qIGxvbmdlciAtIGNvdWxkIGRvIHdp
dGggc29tZSBleHRyYSBkb2Mgc3R1ZmYgaGVyZSAqLworICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXRUJLSVRfVFlQRV9ET01fVEVTVF9J
TlRFUkZBQ0VfSU1QTEVNRU5URURfQVMsIC8qIGdvYmplY3QgdHlwZSAqLworICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXRUJLSVRfUEFS
QU1fUkVBRFdSSVRFKSk7Cit9CisKK3N0YXRpYyB2b2lkIHdlYmtpdF9kb21fdGVzdF9pbnRlcmZh
Y2VfaW1wbGVtZW50ZWRfYXNfaW5pdChXZWJLaXRET01UZXN0SW50ZXJmYWNlSW1wbGVtZW50ZWRB
cyogcmVxdWVzdCkKK3sKKyAgICBXZWJLaXRET01UZXN0SW50ZXJmYWNlSW1wbGVtZW50ZWRBc1By
aXZhdGUqIHByaXYgPSBXRUJLSVRfRE9NX1RFU1RfSU5URVJGQUNFX0lNUExFTUVOVEVEX0FTX0dF
VF9QUklWQVRFKHJlcXVlc3QpOworICAgIG5ldyAocHJpdikgV2ViS2l0RE9NVGVzdEludGVyZmFj
ZUltcGxlbWVudGVkQXNQcml2YXRlKCk7Cit9CisKK2djaGFyKgord2Via2l0X2RvbV90ZXN0X2lu
dGVyZmFjZV9pbXBsZW1lbnRlZF9hc19mdW5jMShXZWJLaXRET01UZXN0SW50ZXJmYWNlSW1wbGVt
ZW50ZWRBcyogc2VsZiwgY29uc3QgZ2NoYXIqIGEpCit7CisgICAgV2ViQ29yZTo6SlNNYWluVGhy
ZWFkTnVsbFN0YXRlIHN0YXRlOworICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKFdFQktJVF9ET01f
SVNfVEVTVF9JTlRFUkZBQ0VfSU1QTEVNRU5URURfQVMoc2VsZiksIDApOworICAgIGdfcmV0dXJu
X3ZhbF9pZl9mYWlsKGEsIDApOworICAgIFdlYkNvcmU6OlRlc3RJbnRlcmZhY2VJbXBsZW1lbnRl
ZEFzKiBpdGVtID0gV2ViS2l0Ojpjb3JlKHNlbGYpOworICAgIFdURjo6U3RyaW5nIGNvbnZlcnRl
ZEEgPSBXVEY6OlN0cmluZzo6ZnJvbVVURjgoYSk7CisgICAgZ2NoYXIqIHJlc3VsdCA9IGNvbnZl
cnRUb1VURjhTdHJpbmcoaXRlbS0+ZnVuYzEoY29udmVydGVkQSkpOworICAgIHJldHVybiByZXN1
bHQ7Cit9CisKK2djaGFyKgord2Via2l0X2RvbV90ZXN0X2ludGVyZmFjZV9pbXBsZW1lbnRlZF9h
c19mdW5jX3Rlc3RfaW50ZXJmYWNlX2ltcGxlbWVudGVkX2FzX3BhcmFtKFdlYktpdERPTVRlc3RJ
bnRlcmZhY2VJbXBsZW1lbnRlZEFzKiBzZWxmLCBXZWJLaXRET01UZXN0SW50ZXJmYWNlSW1wbGVt
ZW50ZWRBcyogb3JhbmdlKQoreworICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBz
dGF0ZTsKKyAgICBnX3JldHVybl92YWxfaWZfZmFpbChXRUJLSVRfRE9NX0lTX1RFU1RfSU5URVJG
QUNFX0lNUExFTUVOVEVEX0FTKHNlbGYpLCAwKTsKKyAgICBnX3JldHVybl92YWxfaWZfZmFpbChX
RUJLSVRfRE9NX0lTX1RFU1RfSU5URVJGQUNFX0lNUExFTUVOVEVEX0FTKG9yYW5nZSksIDApOwor
ICAgIFdlYkNvcmU6OlRlc3RJbnRlcmZhY2VJbXBsZW1lbnRlZEFzKiBpdGVtID0gV2ViS2l0Ojpj
b3JlKHNlbGYpOworICAgIFdlYkNvcmU6OlRlc3RJbnRlcmZhY2VJbXBsZW1lbnRlZEFzKiBjb252
ZXJ0ZWRPcmFuZ2UgPSBXZWJLaXQ6OmNvcmUob3JhbmdlKTsKKyAgICBnY2hhciogcmVzdWx0ID0g
Y29udmVydFRvVVRGOFN0cmluZyhpdGVtLT5mdW5jVGVzdEludGVyZmFjZUltcGxlbWVudGVkQXNQ
YXJhbShjb252ZXJ0ZWRPcmFuZ2UpKTsKKyAgICByZXR1cm4gcmVzdWx0OworfQorCitnY2hhcioK
K3dlYmtpdF9kb21fdGVzdF9pbnRlcmZhY2VfaW1wbGVtZW50ZWRfYXNfZ2V0X2EoV2ViS2l0RE9N
VGVzdEludGVyZmFjZUltcGxlbWVudGVkQXMqIHNlbGYpCit7CisgICAgV2ViQ29yZTo6SlNNYWlu
VGhyZWFkTnVsbFN0YXRlIHN0YXRlOworICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKFdFQktJVF9E
T01fSVNfVEVTVF9JTlRFUkZBQ0VfSU1QTEVNRU5URURfQVMoc2VsZiksIDApOworICAgIFdlYkNv
cmU6OlRlc3RJbnRlcmZhY2VJbXBsZW1lbnRlZEFzKiBpdGVtID0gV2ViS2l0Ojpjb3JlKHNlbGYp
OworICAgIGdjaGFyKiByZXN1bHQgPSBjb252ZXJ0VG9VVEY4U3RyaW5nKGl0ZW0tPmEoKSk7Cisg
ICAgcmV0dXJuIHJlc3VsdDsKK30KKwordm9pZAord2Via2l0X2RvbV90ZXN0X2ludGVyZmFjZV9p
bXBsZW1lbnRlZF9hc19zZXRfYShXZWJLaXRET01UZXN0SW50ZXJmYWNlSW1wbGVtZW50ZWRBcyog
c2VsZiwgY29uc3QgZ2NoYXIqIHZhbHVlKQoreworICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51
bGxTdGF0ZSBzdGF0ZTsKKyAgICBnX3JldHVybl9pZl9mYWlsKFdFQktJVF9ET01fSVNfVEVTVF9J
TlRFUkZBQ0VfSU1QTEVNRU5URURfQVMoc2VsZikpOworICAgIGdfcmV0dXJuX2lmX2ZhaWwodmFs
dWUpOworICAgIFdlYkNvcmU6OlRlc3RJbnRlcmZhY2VJbXBsZW1lbnRlZEFzKiBpdGVtID0gV2Vi
S2l0Ojpjb3JlKHNlbGYpOworICAgIFdURjo6U3RyaW5nIGNvbnZlcnRlZFZhbHVlID0gV1RGOjpT
dHJpbmc6OmZyb21VVEY4KHZhbHVlKTsKKyAgICBpdGVtLT5zZXRBKGNvbnZlcnRlZFZhbHVlKTsK
K30KKworV2ViS2l0RE9NVGVzdEludGVyZmFjZUltcGxlbWVudGVkQXMqCit3ZWJraXRfZG9tX3Rl
c3RfaW50ZXJmYWNlX2ltcGxlbWVudGVkX2FzX2dldF9iKFdlYktpdERPTVRlc3RJbnRlcmZhY2VJ
bXBsZW1lbnRlZEFzKiBzZWxmKQoreworICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0
ZSBzdGF0ZTsKKyAgICBnX3JldHVybl92YWxfaWZfZmFpbChXRUJLSVRfRE9NX0lTX1RFU1RfSU5U
RVJGQUNFX0lNUExFTUVOVEVEX0FTKHNlbGYpLCAwKTsKKyAgICBXZWJDb3JlOjpUZXN0SW50ZXJm
YWNlSW1wbGVtZW50ZWRBcyogaXRlbSA9IFdlYktpdDo6Y29yZShzZWxmKTsKKyAgICBSZWZQdHI8
V2ViQ29yZTo6VGVzdEludGVyZmFjZUltcGxlbWVudGVkQXM+IGdvYmplY3RSZXN1bHQgPSBXVEY6
OmdldFB0cihpdGVtLT5iKCkpOworICAgIHJldHVybiBXZWJLaXQ6OmtpdChnb2JqZWN0UmVzdWx0
LmdldCgpKTsKK30KKwordm9pZAord2Via2l0X2RvbV90ZXN0X2ludGVyZmFjZV9pbXBsZW1lbnRl
ZF9hc19zZXRfYihXZWJLaXRET01UZXN0SW50ZXJmYWNlSW1wbGVtZW50ZWRBcyogc2VsZiwgV2Vi
S2l0RE9NVGVzdEludGVyZmFjZUltcGxlbWVudGVkQXMqIHZhbHVlKQoreworICAgIFdlYkNvcmU6
OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKKyAgICBnX3JldHVybl9pZl9mYWlsKFdFQktJ
VF9ET01fSVNfVEVTVF9JTlRFUkZBQ0VfSU1QTEVNRU5URURfQVMoc2VsZikpOworICAgIGdfcmV0
dXJuX2lmX2ZhaWwoV0VCS0lUX0RPTV9JU19URVNUX0lOVEVSRkFDRV9JTVBMRU1FTlRFRF9BUyh2
YWx1ZSkpOworICAgIFdlYkNvcmU6OlRlc3RJbnRlcmZhY2VJbXBsZW1lbnRlZEFzKiBpdGVtID0g
V2ViS2l0Ojpjb3JlKHNlbGYpOworICAgIFdlYkNvcmU6OlRlc3RJbnRlcmZhY2VJbXBsZW1lbnRl
ZEFzKiBjb252ZXJ0ZWRWYWx1ZSA9IFdlYktpdDo6Y29yZSh2YWx1ZSk7CisgICAgaXRlbS0+c2V0
Qihjb252ZXJ0ZWRWYWx1ZSk7Cit9CisKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9HT2JqZWN0L1dlYktpdERPTVRlc3RJbnRlcmZhY2VJbXBsZW1lbnRl
ZEFzLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvR09iamVjdC9XZWJL
aXRET01UZXN0SW50ZXJmYWNlSW1wbGVtZW50ZWRBcy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAuLjBiODNlYzIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvR09iamVjdC9XZWJLaXRET01UZXN0SW50ZXJmYWNlSW1wbGVt
ZW50ZWRBcy5oCkBAIC0wLDAgKzEsMTE4IEBACisvKgorICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9m
IHRoZSBXZWJLaXQgb3BlbiBzb3VyY2UgcHJvamVjdC4KKyAgICBUaGlzIGZpbGUgaGFzIGJlZW4g
Z2VuZXJhdGVkIGJ5IGdlbmVyYXRlLWJpbmRpbmdzLnBsLiBETyBOT1QgTU9ESUZZIQorCisgICAg
VGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFu
ZC9vcgorICAgIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdl
bmVyYWwgUHVibGljCisgICAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdh
cmUgRm91bmRhdGlvbjsgZWl0aGVyCisgICAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAo
YXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorCisgICAgVGhpcyBsaWJyYXJ5IGlz
IGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgICAgYnV0
IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkg
b2YKKyAgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBP
U0UuICBTZWUgdGhlIEdOVQorICAgIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3Ig
bW9yZSBkZXRhaWxzLgorCisgICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0
aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICAgIGFsb25nIHdpdGggdGhp
cyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisg
ICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0
LCBGaWZ0aCBGbG9vciwKKyAgICBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyovCisKKyNp
ZiAhZGVmaW5lZChfX1dFQktJVERPTV9IX0lOU0lERV9fKSAmJiAhZGVmaW5lZChCVUlMRElOR19X
RUJLSVQpCisjZXJyb3IgIk9ubHkgPHdlYmtpdGRvbS93ZWJraXRkb20uaD4gY2FuIGJlIGluY2x1
ZGVkIGRpcmVjdGx5LiIKKyNlbmRpZgorCisjaWZuZGVmIFdlYktpdERPTVRlc3RJbnRlcmZhY2VJ
bXBsZW1lbnRlZEFzX2gKKyNkZWZpbmUgV2ViS2l0RE9NVGVzdEludGVyZmFjZUltcGxlbWVudGVk
QXNfaAorCisjaW5jbHVkZSA8Z2xpYi1vYmplY3QuaD4KKyNpbmNsdWRlIDx3ZWJraXRkb20vV2Vi
S2l0RE9NT2JqZWN0Lmg+CisjaW5jbHVkZSA8d2Via2l0ZG9tL3dlYmtpdGRvbWRlZmluZXMuaD4K
KworR19CRUdJTl9ERUNMUworCisjZGVmaW5lIFdFQktJVF9UWVBFX0RPTV9URVNUX0lOVEVSRkFD
RV9JTVBMRU1FTlRFRF9BUyAgICAgICAgICAgICh3ZWJraXRfZG9tX3Rlc3RfaW50ZXJmYWNlX2lt
cGxlbWVudGVkX2FzX2dldF90eXBlKCkpCisjZGVmaW5lIFdFQktJVF9ET01fVEVTVF9JTlRFUkZB
Q0VfSU1QTEVNRU5URURfQVMob2JqKSAgICAgICAgICAgIChHX1RZUEVfQ0hFQ0tfSU5TVEFOQ0Vf
Q0FTVCgob2JqKSwgV0VCS0lUX1RZUEVfRE9NX1RFU1RfSU5URVJGQUNFX0lNUExFTUVOVEVEX0FT
LCBXZWJLaXRET01UZXN0SW50ZXJmYWNlSW1wbGVtZW50ZWRBcykpCisjZGVmaW5lIFdFQktJVF9E
T01fVEVTVF9JTlRFUkZBQ0VfSU1QTEVNRU5URURfQVNfQ0xBU1Moa2xhc3MpICAgIChHX1RZUEVf
Q0hFQ0tfQ0xBU1NfQ0FTVCgoa2xhc3MpLCAgV0VCS0lUX1RZUEVfRE9NX1RFU1RfSU5URVJGQUNF
X0lNUExFTUVOVEVEX0FTLCBXZWJLaXRET01UZXN0SW50ZXJmYWNlSW1wbGVtZW50ZWRBc0NsYXNz
KQorI2RlZmluZSBXRUJLSVRfRE9NX0lTX1RFU1RfSU5URVJGQUNFX0lNUExFTUVOVEVEX0FTKG9i
aikgICAgICAgICAoR19UWVBFX0NIRUNLX0lOU1RBTkNFX1RZUEUoKG9iaiksIFdFQktJVF9UWVBF
X0RPTV9URVNUX0lOVEVSRkFDRV9JTVBMRU1FTlRFRF9BUykpCisjZGVmaW5lIFdFQktJVF9ET01f
SVNfVEVTVF9JTlRFUkZBQ0VfSU1QTEVNRU5URURfQVNfQ0xBU1Moa2xhc3MpIChHX1RZUEVfQ0hF
Q0tfQ0xBU1NfVFlQRSgoa2xhc3MpLCAgV0VCS0lUX1RZUEVfRE9NX1RFU1RfSU5URVJGQUNFX0lN
UExFTUVOVEVEX0FTKSkKKyNkZWZpbmUgV0VCS0lUX0RPTV9URVNUX0lOVEVSRkFDRV9JTVBMRU1F
TlRFRF9BU19HRVRfQ0xBU1Mob2JqKSAgKEdfVFlQRV9JTlNUQU5DRV9HRVRfQ0xBU1MoKG9iaiks
ICBXRUJLSVRfVFlQRV9ET01fVEVTVF9JTlRFUkZBQ0VfSU1QTEVNRU5URURfQVMsIFdlYktpdERP
TVRlc3RJbnRlcmZhY2VJbXBsZW1lbnRlZEFzQ2xhc3MpKQorCitzdHJ1Y3QgX1dlYktpdERPTVRl
c3RJbnRlcmZhY2VJbXBsZW1lbnRlZEFzIHsKKyAgICBXZWJLaXRET01PYmplY3QgcGFyZW50X2lu
c3RhbmNlOworfTsKKworc3RydWN0IF9XZWJLaXRET01UZXN0SW50ZXJmYWNlSW1wbGVtZW50ZWRB
c0NsYXNzIHsKKyAgICBXZWJLaXRET01PYmplY3RDbGFzcyBwYXJlbnRfY2xhc3M7Cit9OworCitX
RUJLSVRfQVBJIEdUeXBlCit3ZWJraXRfZG9tX3Rlc3RfaW50ZXJmYWNlX2ltcGxlbWVudGVkX2Fz
X2dldF90eXBlICh2b2lkKTsKKworLyoqCisgKiB3ZWJraXRfZG9tX3Rlc3RfaW50ZXJmYWNlX2lt
cGxlbWVudGVkX2FzX2Z1bmMxOgorICogQHNlbGY6IEEgI1dlYktpdERPTVRlc3RJbnRlcmZhY2VJ
bXBsZW1lbnRlZEFzCisgKiBAYTogQSAjZ2NoYXIKKyAqCisgKiBSZXR1cm5zOgorICoKKyoqLwor
V0VCS0lUX0FQSSBnY2hhcioKK3dlYmtpdF9kb21fdGVzdF9pbnRlcmZhY2VfaW1wbGVtZW50ZWRf
YXNfZnVuYzEoV2ViS2l0RE9NVGVzdEludGVyZmFjZUltcGxlbWVudGVkQXMqIHNlbGYsIGNvbnN0
IGdjaGFyKiBhKTsKKworLyoqCisgKiB3ZWJraXRfZG9tX3Rlc3RfaW50ZXJmYWNlX2ltcGxlbWVu
dGVkX2FzX2Z1bmNfdGVzdF9pbnRlcmZhY2VfaW1wbGVtZW50ZWRfYXNfcGFyYW06CisgKiBAc2Vs
ZjogQSAjV2ViS2l0RE9NVGVzdEludGVyZmFjZUltcGxlbWVudGVkQXMKKyAqIEBvcmFuZ2U6IEEg
I1dlYktpdERPTVRlc3RJbnRlcmZhY2VJbXBsZW1lbnRlZEFzCisgKgorICogUmV0dXJuczoKKyAq
CisqKi8KK1dFQktJVF9BUEkgZ2NoYXIqCit3ZWJraXRfZG9tX3Rlc3RfaW50ZXJmYWNlX2ltcGxl
bWVudGVkX2FzX2Z1bmNfdGVzdF9pbnRlcmZhY2VfaW1wbGVtZW50ZWRfYXNfcGFyYW0oV2ViS2l0
RE9NVGVzdEludGVyZmFjZUltcGxlbWVudGVkQXMqIHNlbGYsIFdlYktpdERPTVRlc3RJbnRlcmZh
Y2VJbXBsZW1lbnRlZEFzKiBvcmFuZ2UpOworCisvKioKKyAqIHdlYmtpdF9kb21fdGVzdF9pbnRl
cmZhY2VfaW1wbGVtZW50ZWRfYXNfZ2V0X2E6CisgKiBAc2VsZjogQSAjV2ViS2l0RE9NVGVzdElu
dGVyZmFjZUltcGxlbWVudGVkQXMKKyAqCisgKiBSZXR1cm5zOgorICoKKyoqLworV0VCS0lUX0FQ
SSBnY2hhcioKK3dlYmtpdF9kb21fdGVzdF9pbnRlcmZhY2VfaW1wbGVtZW50ZWRfYXNfZ2V0X2Eo
V2ViS2l0RE9NVGVzdEludGVyZmFjZUltcGxlbWVudGVkQXMqIHNlbGYpOworCisvKioKKyAqIHdl
YmtpdF9kb21fdGVzdF9pbnRlcmZhY2VfaW1wbGVtZW50ZWRfYXNfc2V0X2E6CisgKiBAc2VsZjog
QSAjV2ViS2l0RE9NVGVzdEludGVyZmFjZUltcGxlbWVudGVkQXMKKyAqIEB2YWx1ZTogQSAjZ2No
YXIKKyAqCisgKiBSZXR1cm5zOgorICoKKyoqLworV0VCS0lUX0FQSSB2b2lkCit3ZWJraXRfZG9t
X3Rlc3RfaW50ZXJmYWNlX2ltcGxlbWVudGVkX2FzX3NldF9hKFdlYktpdERPTVRlc3RJbnRlcmZh
Y2VJbXBsZW1lbnRlZEFzKiBzZWxmLCBjb25zdCBnY2hhciogdmFsdWUpOworCisvKioKKyAqIHdl
YmtpdF9kb21fdGVzdF9pbnRlcmZhY2VfaW1wbGVtZW50ZWRfYXNfZ2V0X2I6CisgKiBAc2VsZjog
QSAjV2ViS2l0RE9NVGVzdEludGVyZmFjZUltcGxlbWVudGVkQXMKKyAqCisgKiBSZXR1cm5zOiAo
dHJhbnNmZXIgbm9uZSk6CisgKgorKiovCitXRUJLSVRfQVBJIFdlYktpdERPTVRlc3RJbnRlcmZh
Y2VJbXBsZW1lbnRlZEFzKgord2Via2l0X2RvbV90ZXN0X2ludGVyZmFjZV9pbXBsZW1lbnRlZF9h
c19nZXRfYihXZWJLaXRET01UZXN0SW50ZXJmYWNlSW1wbGVtZW50ZWRBcyogc2VsZik7CisKKy8q
KgorICogd2Via2l0X2RvbV90ZXN0X2ludGVyZmFjZV9pbXBsZW1lbnRlZF9hc19zZXRfYjoKKyAq
IEBzZWxmOiBBICNXZWJLaXRET01UZXN0SW50ZXJmYWNlSW1wbGVtZW50ZWRBcworICogQHZhbHVl
OiBBICNXZWJLaXRET01UZXN0SW50ZXJmYWNlSW1wbGVtZW50ZWRBcworICoKKyAqIFJldHVybnM6
ICh0cmFuc2ZlciBub25lKToKKyAqCisqKi8KK1dFQktJVF9BUEkgdm9pZAord2Via2l0X2RvbV90
ZXN0X2ludGVyZmFjZV9pbXBsZW1lbnRlZF9hc19zZXRfYihXZWJLaXRET01UZXN0SW50ZXJmYWNl
SW1wbGVtZW50ZWRBcyogc2VsZiwgV2ViS2l0RE9NVGVzdEludGVyZmFjZUltcGxlbWVudGVkQXMq
IHZhbHVlKTsKKworR19FTkRfREVDTFMKKworI2VuZGlmIC8qIFdlYktpdERPTVRlc3RJbnRlcmZh
Y2VJbXBsZW1lbnRlZEFzX2ggKi8KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9HT2JqZWN0L1dlYktpdERPTVRlc3RJbnRlcmZhY2VJbXBsZW1lbnRlZEFz
UHJpdmF0ZS5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0dPYmplY3Qv
V2ViS2l0RE9NVGVzdEludGVyZmFjZUltcGxlbWVudGVkQXNQcml2YXRlLmgKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2UzYTY2MAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9HT2JqZWN0L1dlYktpdERPTVRlc3RJbnRl
cmZhY2VJbXBsZW1lbnRlZEFzUHJpdmF0ZS5oCkBAIC0wLDAgKzEsMzMgQEAKKy8qCisgICAgVGhp
cyBmaWxlIGlzIHBhcnQgb2YgdGhlIFdlYktpdCBvcGVuIHNvdXJjZSBwcm9qZWN0LgorICAgIFRo
aXMgZmlsZSBoYXMgYmVlbiBnZW5lcmF0ZWQgYnkgZ2VuZXJhdGUtYmluZGluZ3MucGwuIERPIE5P
VCBNT0RJRlkhCisKKyAgICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiBy
ZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0
aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAgICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBi
eSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAgICB2ZXJzaW9uIDIgb2Yg
dGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisKKyAg
ICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJl
IHVzZWZ1bCwKKyAgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUg
aW1wbGllZCB3YXJyYW50eSBvZgorICAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgICAgTGlicmFyeSBHZW5lcmFsIFB1
YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisKKyAgICBZb3Ugc2hvdWxkIGhhdmUgcmVj
ZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisg
ICAgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElm
IG5vdCwgd3JpdGUgdG8KKyAgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1
MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICAgIEJvc3RvbiwgTUEgMDIxMTAtMTMw
MSwgVVNBLgorKi8KKworI2lmbmRlZiBXZWJLaXRET01UZXN0SW50ZXJmYWNlSW1wbGVtZW50ZWRB
c1ByaXZhdGVfaAorI2RlZmluZSBXZWJLaXRET01UZXN0SW50ZXJmYWNlSW1wbGVtZW50ZWRBc1By
aXZhdGVfaAorCisjaW5jbHVkZSAiVGVzdEludGVyZmFjZUltcGxlbWVudGVkQXMuaCIKKyNpbmNs
dWRlIDx3ZWJraXRkb20vV2ViS2l0RE9NVGVzdEludGVyZmFjZUltcGxlbWVudGVkQXMuaD4KKwor
bmFtZXNwYWNlIFdlYktpdCB7CitXZWJLaXRET01UZXN0SW50ZXJmYWNlSW1wbGVtZW50ZWRBcyog
d3JhcFRlc3RJbnRlcmZhY2VJbXBsZW1lbnRlZEFzKFdlYkNvcmU6OlRlc3RJbnRlcmZhY2VJbXBs
ZW1lbnRlZEFzKik7CitXZWJLaXRET01UZXN0SW50ZXJmYWNlSW1wbGVtZW50ZWRBcyoga2l0KFdl
YkNvcmU6OlRlc3RJbnRlcmZhY2VJbXBsZW1lbnRlZEFzKik7CitXZWJDb3JlOjpUZXN0SW50ZXJm
YWNlSW1wbGVtZW50ZWRBcyogY29yZShXZWJLaXRET01UZXN0SW50ZXJmYWNlSW1wbGVtZW50ZWRB
cyopOworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvKiBXZWJLaXRET01UZXN0SW50
ZXJmYWNlSW1wbGVtZW50ZWRBc1ByaXZhdGVfaCAqLwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdENhbGxiYWNrLmggYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q2FsbGJhY2suaAppbmRleCBlOWJk
NzhkLi5mMTJhY2M5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0Q2FsbGJhY2suaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q2FsbGJhY2suaApAQCAtNDYsNyArNDYsNyBAQCBwdWJsaWM6
CiAgICAgdmlydHVhbCBib29sIGNhbGxiYWNrV2l0aEFycmF5UGFyYW0oRmxvYXQzMkFycmF5KiBh
cnJheVBhcmFtKTsKICAgICB2aXJ0dWFsIGJvb2wgY2FsbGJhY2tXaXRoU2VyaWFsaXplZFNjcmlw
dFZhbHVlUGFyYW0oUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IHNyelBhcmFtLCBj
b25zdCBTdHJpbmcmIHN0ckFyZyk7CiAgICAgQ09NUElMRV9BU1NFUlQoZmFsc2UpICAgIHZpcnR1
YWwgaW50IGNhbGxiYWNrV2l0aE5vbkJvb2xSZXR1cm5UeXBlKGNvbnN0IFN0cmluZyYgc3RyQXJn
KTsKLSAgICB2aXJ0dWFsIGludCBjdXN0b21DYWxsYmFjayhDbGFzczUqIGNsYXNzNVBhcmFtLCBD
bGFzczYqIGNsYXNzNlBhcmFtKTsKKyAgICB2aXJ0dWFsIGludCBjdXN0b21DYWxsYmFjayhUZXN0
T2JqKiB0ZXN0T2JqUGFyYW0sIFRlc3RPYmoqIHRlc3RPYmpQYXJhbSk7CiAgICAgdmlydHVhbCBi
b29sIGNhbGxiYWNrV2l0aFN0cmluZ0xpc3QoUGFzc1JlZlB0cjxET01TdHJpbmdMaXN0PiBsaXN0
UGFyYW0pOwogICAgIHZpcnR1YWwgYm9vbCBjYWxsYmFja1dpdGhCb29sZWFuKGJvb2wgYm9vbFBh
cmFtKTsKICAgICB2aXJ0dWFsIGJvb2wgY2FsbGJhY2tSZXF1aXJlc1RoaXNUb1Bhc3MoaW50IGxv
bmdQYXJhbSwgVGVzdE5vZGUqIHRlc3ROb2RlUGFyYW0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEludGVyZmFjZUltcGxlbWVudGVk
QXMuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdElu
dGVyZmFjZUltcGxlbWVudGVkQXMuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAuLmRmYmQyN2YKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0SW50ZXJmYWNlSW1wbGVtZW50ZWRBcy5jcHAKQEAgLTAsMCAr
MSwzMTcgQEAKKy8qCisgICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIFdlYktpdCBvcGVuIHNv
dXJjZSBwcm9qZWN0LgorICAgIFRoaXMgZmlsZSBoYXMgYmVlbiBnZW5lcmF0ZWQgYnkgZ2VuZXJh
dGUtYmluZGluZ3MucGwuIERPIE5PVCBNT0RJRlkhCisKKyAgICBUaGlzIGxpYnJhcnkgaXMgZnJl
ZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgICAgbW9kaWZ5IGl0
IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAgICBM
aWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRo
ZXIKKyAgICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55
IGxhdGVyIHZlcnNpb24uCisKKyAgICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhl
IGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFO
VFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICAgIE1FUkNIQU5UQUJJ
TElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisg
ICAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisKKyAg
ICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5l
cmFsIFB1YmxpYyBMaWNlbnNlCisgICAgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUg
ZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAgICB0aGUgRnJlZSBTb2Z0d2Fy
ZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICAg
IEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgor
I2luY2x1ZGUgIkpTVGVzdEludGVyZmFjZUltcGxlbWVudGVkQXMuaCIKKworI2luY2x1ZGUgIkV4
Y2VwdGlvbkNvZGUuaCIKKyNpbmNsdWRlICJKU0RPTUJpbmRpbmcuaCIKKyNpbmNsdWRlICJLVVJM
LmgiCisjaW5jbHVkZSAiVGVzdEludGVyZmFjZUltcGxlbWVudGVkQXMuaCIKKyNpbmNsdWRlIDxy
dW50aW1lL0Vycm9yLmg+CisjaW5jbHVkZSA8cnVudGltZS9KU1N0cmluZy5oPgorI2luY2x1ZGUg
PHd0Zi9HZXRQdHIuaD4KKwordXNpbmcgbmFtZXNwYWNlIEpTQzsKKworbmFtZXNwYWNlIFdlYkNv
cmUgeworCisvKiBIYXNoIHRhYmxlICovCisKK3N0YXRpYyBjb25zdCBIYXNoVGFibGVWYWx1ZSBK
U1Rlc3RJbnRlcmZhY2VJbXBsZW1lbnRlZEFzVGFibGVWYWx1ZXNbXSA9Cit7CisgICAgeyAiYSIs
IERvbnREZWxldGUsIChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVl
RnVuYz4oanNUZXN0SW50ZXJmYWNlSW1wbGVtZW50ZWRBc0EpLCAoaW50cHRyX3Qpc2V0SlNUZXN0
SW50ZXJmYWNlSW1wbGVtZW50ZWRBc0EsIE5vSW50cmluc2ljIH0sCisgICAgeyAiYiIsIERvbnRE
ZWxldGUsIChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4o
anNUZXN0SW50ZXJmYWNlSW1wbGVtZW50ZWRBc0IpLCAoaW50cHRyX3Qpc2V0SlNUZXN0SW50ZXJm
YWNlSW1wbGVtZW50ZWRBc0IsIE5vSW50cmluc2ljIH0sCisgICAgeyAiY29uc3RydWN0b3IiLCBE
b250RW51bSB8IFJlYWRPbmx5LCAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpH
ZXRWYWx1ZUZ1bmM+KGpzVGVzdEludGVyZmFjZUltcGxlbWVudGVkQXNDb25zdHJ1Y3RvciksIChp
bnRwdHJfdCkwLCBOb0ludHJpbnNpYyB9LAorICAgIHsgMCwgMCwgMCwgMCwgTm9JbnRyaW5zaWMg
fQorfTsKKworc3RhdGljIGNvbnN0IEhhc2hUYWJsZSBKU1Rlc3RJbnRlcmZhY2VJbXBsZW1lbnRl
ZEFzVGFibGUgPSB7IDksIDcsIEpTVGVzdEludGVyZmFjZUltcGxlbWVudGVkQXNUYWJsZVZhbHVl
cywgMCB9OworLyogSGFzaCB0YWJsZSBmb3IgY29uc3RydWN0b3IgKi8KKworc3RhdGljIGNvbnN0
IEhhc2hUYWJsZVZhbHVlIEpTVGVzdEludGVyZmFjZUltcGxlbWVudGVkQXNDb25zdHJ1Y3RvclRh
YmxlVmFsdWVzW10gPQoreworICAgIHsgMCwgMCwgMCwgMCwgTm9JbnRyaW5zaWMgfQorfTsKKwor
c3RhdGljIGNvbnN0IEhhc2hUYWJsZSBKU1Rlc3RJbnRlcmZhY2VJbXBsZW1lbnRlZEFzQ29uc3Ry
dWN0b3JUYWJsZSA9IHsgMSwgMCwgSlNUZXN0SW50ZXJmYWNlSW1wbGVtZW50ZWRBc0NvbnN0cnVj
dG9yVGFibGVWYWx1ZXMsIDAgfTsKK2NvbnN0IENsYXNzSW5mbyBKU1Rlc3RJbnRlcmZhY2VJbXBs
ZW1lbnRlZEFzQ29uc3RydWN0b3I6OnNfaW5mbyA9IHsgIlRlc3RJbnRlcmZhY2VJbXBsZW1lbnRl
ZEFzQ29uc3RydWN0b3IiLCAmQmFzZTo6c19pbmZvLCAmSlNUZXN0SW50ZXJmYWNlSW1wbGVtZW50
ZWRBc0NvbnN0cnVjdG9yVGFibGUsIDAsIENSRUFURV9NRVRIT0RfVEFCTEUoSlNUZXN0SW50ZXJm
YWNlSW1wbGVtZW50ZWRBc0NvbnN0cnVjdG9yKSB9OworCitKU1Rlc3RJbnRlcmZhY2VJbXBsZW1l
bnRlZEFzQ29uc3RydWN0b3I6OkpTVGVzdEludGVyZmFjZUltcGxlbWVudGVkQXNDb25zdHJ1Y3Rv
cihTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkK
KyAgICA6IERPTUNvbnN0cnVjdG9yT2JqZWN0KHN0cnVjdHVyZSwgZ2xvYmFsT2JqZWN0KQorewor
fQorCit2b2lkIEpTVGVzdEludGVyZmFjZUltcGxlbWVudGVkQXNDb25zdHJ1Y3Rvcjo6ZmluaXNo
Q3JlYXRpb24oRXhlY1N0YXRlKiBleGVjLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
KQoreworICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKGV4ZWMtPnZtKCkpOworICAgIEFTU0VSVChp
bmhlcml0cygmc19pbmZvKSk7CisgICAgcHV0RGlyZWN0KGV4ZWMtPnZtKCksIGV4ZWMtPnByb3Bl
cnR5TmFtZXMoKS5wcm90b3R5cGUsIEpTVGVzdEludGVyZmFjZUltcGxlbWVudGVkQXNQcm90b3R5
cGU6OnNlbGYoZXhlYywgZ2xvYmFsT2JqZWN0KSwgRG9udERlbGV0ZSB8IFJlYWRPbmx5KTsKKyAg
ICBwdXREaXJlY3QoZXhlYy0+dm0oKSwgZXhlYy0+cHJvcGVydHlOYW1lcygpLmxlbmd0aCwganNO
dW1iZXIoMCksIFJlYWRPbmx5IHwgRG9udERlbGV0ZSB8IERvbnRFbnVtKTsKK30KKworYm9vbCBK
U1Rlc3RJbnRlcmZhY2VJbXBsZW1lbnRlZEFzQ29uc3RydWN0b3I6OmdldE93blByb3BlcnR5U2xv
dChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFt
ZSwgUHJvcGVydHlTbG90JiBzbG90KQoreworICAgIHJldHVybiBnZXRTdGF0aWNWYWx1ZVNsb3Q8
SlNUZXN0SW50ZXJmYWNlSW1wbGVtZW50ZWRBc0NvbnN0cnVjdG9yLCBKU0RPTVdyYXBwZXI+KGV4
ZWMsICZKU1Rlc3RJbnRlcmZhY2VJbXBsZW1lbnRlZEFzQ29uc3RydWN0b3JUYWJsZSwganNDYXN0
PEpTVGVzdEludGVyZmFjZUltcGxlbWVudGVkQXNDb25zdHJ1Y3Rvcio+KGNlbGwpLCBwcm9wZXJ0
eU5hbWUsIHNsb3QpOworfQorCitib29sIEpTVGVzdEludGVyZmFjZUltcGxlbWVudGVkQXNDb25z
dHJ1Y3Rvcjo6Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNT
dGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlEZXNjcmlwdG9y
JiBkZXNjcmlwdG9yKQoreworICAgIHJldHVybiBnZXRTdGF0aWNWYWx1ZURlc2NyaXB0b3I8SlNU
ZXN0SW50ZXJmYWNlSW1wbGVtZW50ZWRBc0NvbnN0cnVjdG9yLCBKU0RPTVdyYXBwZXI+KGV4ZWMs
ICZKU1Rlc3RJbnRlcmZhY2VJbXBsZW1lbnRlZEFzQ29uc3RydWN0b3JUYWJsZSwganNDYXN0PEpT
VGVzdEludGVyZmFjZUltcGxlbWVudGVkQXNDb25zdHJ1Y3Rvcio+KG9iamVjdCksIHByb3BlcnR5
TmFtZSwgZGVzY3JpcHRvcik7Cit9CisKKy8qIEhhc2ggdGFibGUgZm9yIHByb3RvdHlwZSAqLwor
CitzdGF0aWMgY29uc3QgSGFzaFRhYmxlVmFsdWUgSlNUZXN0SW50ZXJmYWNlSW1wbGVtZW50ZWRB
c1Byb3RvdHlwZVRhYmxlVmFsdWVzW10gPQoreworICAgIHsgImZ1bmMxIiwgRG9udERlbGV0ZSB8
IEpTQzo6RnVuY3Rpb24sIChpbnRwdHJfdClzdGF0aWNfY2FzdDxOYXRpdmVGdW5jdGlvbj4oanNU
ZXN0SW50ZXJmYWNlSW1wbGVtZW50ZWRBc1Byb3RvdHlwZUZ1bmN0aW9uRnVuYzEpLCAoaW50cHRy
X3QpMSwgTm9JbnRyaW5zaWMgfSwKKyAgICB7ICJmdW5jVGVzdEludGVyZmFjZUltcGxlbWVudGVk
QXNQYXJhbSIsIERvbnREZWxldGUgfCBKU0M6OkZ1bmN0aW9uLCAoaW50cHRyX3Qpc3RhdGljX2Nh
c3Q8TmF0aXZlRnVuY3Rpb24+KGpzVGVzdEludGVyZmFjZUltcGxlbWVudGVkQXNQcm90b3R5cGVG
dW5jdGlvbkZ1bmNUZXN0SW50ZXJmYWNlSW1wbGVtZW50ZWRBc1BhcmFtKSwgKGludHB0cl90KTEs
IE5vSW50cmluc2ljIH0sCisgICAgeyAwLCAwLCAwLCAwLCBOb0ludHJpbnNpYyB9Cit9OworCitz
dGF0aWMgY29uc3QgSGFzaFRhYmxlIEpTVGVzdEludGVyZmFjZUltcGxlbWVudGVkQXNQcm90b3R5
cGVUYWJsZSA9IHsgNCwgMywgSlNUZXN0SW50ZXJmYWNlSW1wbGVtZW50ZWRBc1Byb3RvdHlwZVRh
YmxlVmFsdWVzLCAwIH07Citjb25zdCBDbGFzc0luZm8gSlNUZXN0SW50ZXJmYWNlSW1wbGVtZW50
ZWRBc1Byb3RvdHlwZTo6c19pbmZvID0geyAiVGVzdEludGVyZmFjZUltcGxlbWVudGVkQXNQcm90
b3R5cGUiLCAmQmFzZTo6c19pbmZvLCAmSlNUZXN0SW50ZXJmYWNlSW1wbGVtZW50ZWRBc1Byb3Rv
dHlwZVRhYmxlLCAwLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTVGVzdEludGVyZmFjZUltcGxlbWVu
dGVkQXNQcm90b3R5cGUpIH07CisKK0pTT2JqZWN0KiBKU1Rlc3RJbnRlcmZhY2VJbXBsZW1lbnRl
ZEFzUHJvdG90eXBlOjpzZWxmKEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCkKK3sKKyAgICByZXR1cm4gZ2V0RE9NUHJvdG90eXBlPEpTVGVzdEludGVyZmFjZUlt
cGxlbWVudGVkQXM+KGV4ZWMsIGdsb2JhbE9iamVjdCk7Cit9CisKK2Jvb2wgSlNUZXN0SW50ZXJm
YWNlSW1wbGVtZW50ZWRBc1Byb3RvdHlwZTo6Z2V0T3duUHJvcGVydHlTbG90KEpTQ2VsbCogY2Vs
bCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNs
b3QmIHNsb3QpCit7CisgICAgSlNUZXN0SW50ZXJmYWNlSW1wbGVtZW50ZWRBc1Byb3RvdHlwZSog
dGhpc09iamVjdCA9IGpzQ2FzdDxKU1Rlc3RJbnRlcmZhY2VJbXBsZW1lbnRlZEFzUHJvdG90eXBl
Kj4oY2VsbCk7CisgICAgcmV0dXJuIGdldFN0YXRpY0Z1bmN0aW9uU2xvdDxKU09iamVjdD4oZXhl
YywgJkpTVGVzdEludGVyZmFjZUltcGxlbWVudGVkQXNQcm90b3R5cGVUYWJsZSwgdGhpc09iamVj
dCwgcHJvcGVydHlOYW1lLCBzbG90KTsKK30KKworYm9vbCBKU1Rlc3RJbnRlcmZhY2VJbXBsZW1l
bnRlZEFzUHJvdG90eXBlOjpnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSlNPYmplY3QqIG9iamVj
dCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eURl
c2NyaXB0b3ImIGRlc2NyaXB0b3IpCit7CisgICAgSlNUZXN0SW50ZXJmYWNlSW1wbGVtZW50ZWRB
c1Byb3RvdHlwZSogdGhpc09iamVjdCA9IGpzQ2FzdDxKU1Rlc3RJbnRlcmZhY2VJbXBsZW1lbnRl
ZEFzUHJvdG90eXBlKj4ob2JqZWN0KTsKKyAgICByZXR1cm4gZ2V0U3RhdGljRnVuY3Rpb25EZXNj
cmlwdG9yPEpTT2JqZWN0PihleGVjLCAmSlNUZXN0SW50ZXJmYWNlSW1wbGVtZW50ZWRBc1Byb3Rv
dHlwZVRhYmxlLCB0aGlzT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIGRlc2NyaXB0b3IpOworfQorCitj
b25zdCBDbGFzc0luZm8gSlNUZXN0SW50ZXJmYWNlSW1wbGVtZW50ZWRBczo6c19pbmZvID0geyAi
VGVzdEludGVyZmFjZUltcGxlbWVudGVkQXMiLCAmQmFzZTo6c19pbmZvLCAmSlNUZXN0SW50ZXJm
YWNlSW1wbGVtZW50ZWRBc1RhYmxlLCAwICwgQ1JFQVRFX01FVEhPRF9UQUJMRShKU1Rlc3RJbnRl
cmZhY2VJbXBsZW1lbnRlZEFzKSB9OworCitKU1Rlc3RJbnRlcmZhY2VJbXBsZW1lbnRlZEFzOjpK
U1Rlc3RJbnRlcmZhY2VJbXBsZW1lbnRlZEFzKFN0cnVjdHVyZSogc3RydWN0dXJlLCBKU0RPTUds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQYXNzUmVmUHRyPFJlYWxDbGFzcz4gaW1wbCkKKyAg
ICA6IEpTRE9NV3JhcHBlcihzdHJ1Y3R1cmUsIGdsb2JhbE9iamVjdCkKKyAgICAsIG1faW1wbChp
bXBsLmxlYWtSZWYoKSkKK3sKK30KKwordm9pZCBKU1Rlc3RJbnRlcmZhY2VJbXBsZW1lbnRlZEFz
OjpmaW5pc2hDcmVhdGlvbihWTSYgdm0pCit7CisgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24odm0p
OworICAgIEFTU0VSVChpbmhlcml0cygmc19pbmZvKSk7Cit9CisKK0pTT2JqZWN0KiBKU1Rlc3RJ
bnRlcmZhY2VJbXBsZW1lbnRlZEFzOjpjcmVhdGVQcm90b3R5cGUoRXhlY1N0YXRlKiBleGVjLCBK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQoreworICAgIHJldHVybiBKU1Rlc3RJbnRlcmZh
Y2VJbXBsZW1lbnRlZEFzUHJvdG90eXBlOjpjcmVhdGUoZXhlYy0+dm0oKSwgZ2xvYmFsT2JqZWN0
LCBKU1Rlc3RJbnRlcmZhY2VJbXBsZW1lbnRlZEFzUHJvdG90eXBlOjpjcmVhdGVTdHJ1Y3R1cmUo
Z2xvYmFsT2JqZWN0LT52bSgpLCBnbG9iYWxPYmplY3QsIGdsb2JhbE9iamVjdC0+b2JqZWN0UHJv
dG90eXBlKCkpKTsKK30KKwordm9pZCBKU1Rlc3RJbnRlcmZhY2VJbXBsZW1lbnRlZEFzOjpkZXN0
cm95KEpTQzo6SlNDZWxsKiBjZWxsKQoreworICAgIEpTVGVzdEludGVyZmFjZUltcGxlbWVudGVk
QXMqIHRoaXNPYmplY3QgPSBzdGF0aWNfY2FzdDxKU1Rlc3RJbnRlcmZhY2VJbXBsZW1lbnRlZEFz
Kj4oY2VsbCk7CisgICAgdGhpc09iamVjdC0+SlNUZXN0SW50ZXJmYWNlSW1wbGVtZW50ZWRBczo6
fkpTVGVzdEludGVyZmFjZUltcGxlbWVudGVkQXMoKTsKK30KKworSlNUZXN0SW50ZXJmYWNlSW1w
bGVtZW50ZWRBczo6fkpTVGVzdEludGVyZmFjZUltcGxlbWVudGVkQXMoKQoreworICAgIHJlbGVh
c2VJbXBsSWZOb3ROdWxsKCk7Cit9CisKK2Jvb2wgSlNUZXN0SW50ZXJmYWNlSW1wbGVtZW50ZWRB
czo6Z2V0T3duUHJvcGVydHlTbG90KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBQcm9w
ZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3QpCit7CisgICAgSlNUZXN0
SW50ZXJmYWNlSW1wbGVtZW50ZWRBcyogdGhpc09iamVjdCA9IGpzQ2FzdDxKU1Rlc3RJbnRlcmZh
Y2VJbXBsZW1lbnRlZEFzKj4oY2VsbCk7CisgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyh0
aGlzT2JqZWN0LCAmc19pbmZvKTsKKyAgICByZXR1cm4gZ2V0U3RhdGljVmFsdWVTbG90PEpTVGVz
dEludGVyZmFjZUltcGxlbWVudGVkQXMsIEJhc2U+KGV4ZWMsICZKU1Rlc3RJbnRlcmZhY2VJbXBs
ZW1lbnRlZEFzVGFibGUsIHRoaXNPYmplY3QsIHByb3BlcnR5TmFtZSwgc2xvdCk7Cit9CisKK2Jv
b2wgSlNUZXN0SW50ZXJmYWNlSW1wbGVtZW50ZWRBczo6Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9y
KEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5
TmFtZSwgUHJvcGVydHlEZXNjcmlwdG9yJiBkZXNjcmlwdG9yKQoreworICAgIEpTVGVzdEludGVy
ZmFjZUltcGxlbWVudGVkQXMqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNUZXN0SW50ZXJmYWNlSW1w
bGVtZW50ZWRBcyo+KG9iamVjdCk7CisgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyh0aGlz
T2JqZWN0LCAmc19pbmZvKTsKKyAgICByZXR1cm4gZ2V0U3RhdGljVmFsdWVEZXNjcmlwdG9yPEpT
VGVzdEludGVyZmFjZUltcGxlbWVudGVkQXMsIEJhc2U+KGV4ZWMsICZKU1Rlc3RJbnRlcmZhY2VJ
bXBsZW1lbnRlZEFzVGFibGUsIHRoaXNPYmplY3QsIHByb3BlcnR5TmFtZSwgZGVzY3JpcHRvcik7
Cit9CisKK0pTVmFsdWUganNUZXN0SW50ZXJmYWNlSW1wbGVtZW50ZWRBc0EoRXhlY1N0YXRlKiBl
eGVjLCBKU1ZhbHVlIHNsb3RCYXNlLCBQcm9wZXJ0eU5hbWUpCit7CisgICAgSlNUZXN0SW50ZXJm
YWNlSW1wbGVtZW50ZWRBcyogY2FzdGVkVGhpcyA9IGpzQ2FzdDxKU1Rlc3RJbnRlcmZhY2VJbXBs
ZW1lbnRlZEFzKj4oYXNPYmplY3Qoc2xvdEJhc2UpKTsKKyAgICBVTlVTRURfUEFSQU0oZXhlYyk7
CisgICAgUmVhbENsYXNzKiBpbXBsID0gc3RhdGljX2Nhc3Q8UmVhbENsYXNzKj4oY2FzdGVkVGhp
cy0+aW1wbCgpKTsKKyAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzU3RyaW5nV2l0aENhY2hlKGV4ZWMs
IGltcGwtPmEoKSk7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworCitKU1ZhbHVlIGpzVGVzdElu
dGVyZmFjZUltcGxlbWVudGVkQXNCKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBzbG90QmFzZSwg
UHJvcGVydHlOYW1lKQoreworICAgIEpTVGVzdEludGVyZmFjZUltcGxlbWVudGVkQXMqIGNhc3Rl
ZFRoaXMgPSBqc0Nhc3Q8SlNUZXN0SW50ZXJmYWNlSW1wbGVtZW50ZWRBcyo+KGFzT2JqZWN0KHNs
b3RCYXNlKSk7CisgICAgVU5VU0VEX1BBUkFNKGV4ZWMpOworICAgIFJlYWxDbGFzcyogaW1wbCA9
IHN0YXRpY19jYXN0PFJlYWxDbGFzcyo+KGNhc3RlZFRoaXMtPmltcGwoKSk7CisgICAgSlNWYWx1
ZSByZXN1bHQgPSB0b0pTKGV4ZWMsIGNhc3RlZFRoaXMtPmdsb2JhbE9iamVjdCgpLCBXVEY6Omdl
dFB0cihpbXBsLT5iKCkpKTsKKyAgICByZXR1cm4gcmVzdWx0OworfQorCisKK0pTVmFsdWUganNU
ZXN0SW50ZXJmYWNlSW1wbGVtZW50ZWRBc0NvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogZXhlYywgSlNW
YWx1ZSBzbG90QmFzZSwgUHJvcGVydHlOYW1lKQoreworICAgIEpTVGVzdEludGVyZmFjZUltcGxl
bWVudGVkQXMqIGRvbU9iamVjdCA9IGpzQ2FzdDxKU1Rlc3RJbnRlcmZhY2VJbXBsZW1lbnRlZEFz
Kj4oYXNPYmplY3Qoc2xvdEJhc2UpKTsKKyAgICByZXR1cm4gSlNUZXN0SW50ZXJmYWNlSW1wbGVt
ZW50ZWRBczo6Z2V0Q29uc3RydWN0b3IoZXhlYywgZG9tT2JqZWN0LT5nbG9iYWxPYmplY3QoKSk7
Cit9CisKK3ZvaWQgSlNUZXN0SW50ZXJmYWNlSW1wbGVtZW50ZWRBczo6cHV0KEpTQ2VsbCogY2Vs
bCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZh
bHVlLCBQdXRQcm9wZXJ0eVNsb3QmIHNsb3QpCit7CisgICAgSlNUZXN0SW50ZXJmYWNlSW1wbGVt
ZW50ZWRBcyogdGhpc09iamVjdCA9IGpzQ2FzdDxKU1Rlc3RJbnRlcmZhY2VJbXBsZW1lbnRlZEFz
Kj4oY2VsbCk7CisgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyh0aGlzT2JqZWN0LCAmc19p
bmZvKTsKKyAgICBsb29rdXBQdXQ8SlNUZXN0SW50ZXJmYWNlSW1wbGVtZW50ZWRBcywgQmFzZT4o
ZXhlYywgcHJvcGVydHlOYW1lLCB2YWx1ZSwgJkpTVGVzdEludGVyZmFjZUltcGxlbWVudGVkQXNU
YWJsZSwgdGhpc09iamVjdCwgc2xvdCk7Cit9CisKK3ZvaWQgc2V0SlNUZXN0SW50ZXJmYWNlSW1w
bGVtZW50ZWRBc0EoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogdGhpc09iamVjdCwgSlNWYWx1
ZSB2YWx1ZSkKK3sKKyAgICBVTlVTRURfUEFSQU0oZXhlYyk7CisgICAgSlNUZXN0SW50ZXJmYWNl
SW1wbGVtZW50ZWRBcyogY2FzdGVkVGhpcyA9IGpzQ2FzdDxKU1Rlc3RJbnRlcmZhY2VJbXBsZW1l
bnRlZEFzKj4odGhpc09iamVjdCk7CisgICAgUmVhbENsYXNzKiBpbXBsID0gc3RhdGljX2Nhc3Q8
UmVhbENsYXNzKj4oY2FzdGVkVGhpcy0+aW1wbCgpKTsKKyAgICBjb25zdCBTdHJpbmcmIG5hdGl2
ZVZhbHVlKHZhbHVlLmlzRW1wdHkoKSA/IFN0cmluZygpIDogdmFsdWUudG9TdHJpbmcoZXhlYykt
PnZhbHVlKGV4ZWMpKTsKKyAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCisgICAgICAgIHJl
dHVybjsKKyAgICBpbXBsLT5zZXRBKG5hdGl2ZVZhbHVlKTsKK30KKworCit2b2lkIHNldEpTVGVz
dEludGVyZmFjZUltcGxlbWVudGVkQXNCKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIHRoaXNP
YmplY3QsIEpTVmFsdWUgdmFsdWUpCit7CisgICAgVU5VU0VEX1BBUkFNKGV4ZWMpOworICAgIEpT
VGVzdEludGVyZmFjZUltcGxlbWVudGVkQXMqIGNhc3RlZFRoaXMgPSBqc0Nhc3Q8SlNUZXN0SW50
ZXJmYWNlSW1wbGVtZW50ZWRBcyo+KHRoaXNPYmplY3QpOworICAgIFJlYWxDbGFzcyogaW1wbCA9
IHN0YXRpY19jYXN0PFJlYWxDbGFzcyo+KGNhc3RlZFRoaXMtPmltcGwoKSk7CisgICAgUmVhbENs
YXNzKiBuYXRpdmVWYWx1ZSh0b1JlYWxDbGFzcyh2YWx1ZSkpOworICAgIGlmIChleGVjLT5oYWRF
eGNlcHRpb24oKSkKKyAgICAgICAgcmV0dXJuOworICAgIGltcGwtPnNldEIobmF0aXZlVmFsdWUp
OworfQorCisKK0pTVmFsdWUgSlNUZXN0SW50ZXJmYWNlSW1wbGVtZW50ZWRBczo6Z2V0Q29uc3Ry
dWN0b3IoRXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQorewor
ICAgIHJldHVybiBnZXRET01Db25zdHJ1Y3RvcjxKU1Rlc3RJbnRlcmZhY2VJbXBsZW1lbnRlZEFz
Q29uc3RydWN0b3I+KGV4ZWMsIGpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KGdsb2JhbE9iamVj
dCkpOworfQorCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdEludGVyZmFjZUlt
cGxlbWVudGVkQXNQcm90b3R5cGVGdW5jdGlvbkZ1bmMxKEV4ZWNTdGF0ZSogZXhlYykKK3sKKyAg
ICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPmhvc3RUaGlzVmFsdWUoKTsKKyAgICBpZiAoIXRo
aXNWYWx1ZS5pbmhlcml0cygmSlNUZXN0SW50ZXJmYWNlSW1wbGVtZW50ZWRBczo6c19pbmZvKSkK
KyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYyk7CisgICAgSlNUZXN0SW50ZXJm
YWNlSW1wbGVtZW50ZWRBcyogY2FzdGVkVGhpcyA9IGpzQ2FzdDxKU1Rlc3RJbnRlcmZhY2VJbXBs
ZW1lbnRlZEFzKj4oYXNPYmplY3QodGhpc1ZhbHVlKSk7CisgICAgQVNTRVJUX0dDX09CSkVDVF9J
TkhFUklUUyhjYXN0ZWRUaGlzLCAmSlNUZXN0SW50ZXJmYWNlSW1wbGVtZW50ZWRBczo6c19pbmZv
KTsKKyAgICBSZWFsQ2xhc3MqIGltcGwgPSBzdGF0aWNfY2FzdDxSZWFsQ2xhc3MqPihjYXN0ZWRU
aGlzLT5pbXBsKCkpOworICAgIGlmIChleGVjLT5hcmd1bWVudENvdW50KCkgPCAxKQorICAgICAg
ICByZXR1cm4gdGhyb3dWTUVycm9yKGV4ZWMsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9y
KGV4ZWMpKTsKKyAgICBjb25zdCBTdHJpbmcmIGEoZXhlYy0+YXJndW1lbnQoMCkuaXNFbXB0eSgp
ID8gU3RyaW5nKCkgOiBleGVjLT5hcmd1bWVudCgwKS50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhl
YykpOworICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKKyAgICAgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKKworICAgIEpTQzo6SlNWYWx1ZSByZXN1bHQgPSBq
c1N0cmluZ1dpdGhDYWNoZShleGVjLCBpbXBsLT5mdW5jMShhKSk7CisgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZShyZXN1bHQpOworfQorCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpz
VGVzdEludGVyZmFjZUltcGxlbWVudGVkQXNQcm90b3R5cGVGdW5jdGlvbkZ1bmNUZXN0SW50ZXJm
YWNlSW1wbGVtZW50ZWRBc1BhcmFtKEV4ZWNTdGF0ZSogZXhlYykKK3sKKyAgICBKU1ZhbHVlIHRo
aXNWYWx1ZSA9IGV4ZWMtPmhvc3RUaGlzVmFsdWUoKTsKKyAgICBpZiAoIXRoaXNWYWx1ZS5pbmhl
cml0cygmSlNUZXN0SW50ZXJmYWNlSW1wbGVtZW50ZWRBczo6c19pbmZvKSkKKyAgICAgICAgcmV0
dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYyk7CisgICAgSlNUZXN0SW50ZXJmYWNlSW1wbGVtZW50
ZWRBcyogY2FzdGVkVGhpcyA9IGpzQ2FzdDxKU1Rlc3RJbnRlcmZhY2VJbXBsZW1lbnRlZEFzKj4o
YXNPYmplY3QodGhpc1ZhbHVlKSk7CisgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0
ZWRUaGlzLCAmSlNUZXN0SW50ZXJmYWNlSW1wbGVtZW50ZWRBczo6c19pbmZvKTsKKyAgICBSZWFs
Q2xhc3MqIGltcGwgPSBzdGF0aWNfY2FzdDxSZWFsQ2xhc3MqPihjYXN0ZWRUaGlzLT5pbXBsKCkp
OworICAgIGlmIChleGVjLT5hcmd1bWVudENvdW50KCkgPCAxKQorICAgICAgICByZXR1cm4gdGhy
b3dWTUVycm9yKGV4ZWMsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKGV4ZWMpKTsKKyAg
ICBSZWFsQ2xhc3MqIG9yYW5nZSh0b1JlYWxDbGFzcyhleGVjLT5hcmd1bWVudCgwKSkpOworICAg
IGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZShqc1VuZGVmaW5lZCgpKTsKKworICAgIEpTQzo6SlNWYWx1ZSByZXN1bHQgPSBqc1N0cmluZ1dp
dGhDYWNoZShleGVjLCBpbXBsLT5mdW5jVGVzdEludGVyZmFjZUltcGxlbWVudGVkQXNQYXJhbShv
cmFuZ2UpKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7Cit9CisKK3N0YXRp
YyBpbmxpbmUgYm9vbCBpc09ic2VydmFibGUoSlNUZXN0SW50ZXJmYWNlSW1wbGVtZW50ZWRBcyog
anNUZXN0SW50ZXJmYWNlSW1wbGVtZW50ZWRBcykKK3sKKyAgICBpZiAoanNUZXN0SW50ZXJmYWNl
SW1wbGVtZW50ZWRBcy0+aGFzQ3VzdG9tUHJvcGVydGllcygpKQorICAgICAgICByZXR1cm4gdHJ1
ZTsKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK2Jvb2wgSlNUZXN0SW50ZXJmYWNlSW1wbGVtZW50
ZWRBc093bmVyOjppc1JlYWNoYWJsZUZyb21PcGFxdWVSb290cyhKU0M6OkhhbmRsZTxKU0M6OlVu
a25vd24+IGhhbmRsZSwgdm9pZCosIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQoreworICAgIEpTVGVz
dEludGVyZmFjZUltcGxlbWVudGVkQXMqIGpzVGVzdEludGVyZmFjZUltcGxlbWVudGVkQXMgPSBq
c0Nhc3Q8SlNUZXN0SW50ZXJmYWNlSW1wbGVtZW50ZWRBcyo+KGhhbmRsZS5nZXQoKS5hc0NlbGwo
KSk7CisgICAgaWYgKCFpc09ic2VydmFibGUoanNUZXN0SW50ZXJmYWNlSW1wbGVtZW50ZWRBcykp
CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBVTlVTRURfUEFSQU0odmlzaXRvcik7CisgICAg
cmV0dXJuIGZhbHNlOworfQorCit2b2lkIEpTVGVzdEludGVyZmFjZUltcGxlbWVudGVkQXNPd25l
cjo6ZmluYWxpemUoSlNDOjpIYW5kbGU8SlNDOjpVbmtub3duPiBoYW5kbGUsIHZvaWQqIGNvbnRl
eHQpCit7CisgICAgSlNUZXN0SW50ZXJmYWNlSW1wbGVtZW50ZWRBcyoganNUZXN0SW50ZXJmYWNl
SW1wbGVtZW50ZWRBcyA9IGpzQ2FzdDxKU1Rlc3RJbnRlcmZhY2VJbXBsZW1lbnRlZEFzKj4oaGFu
ZGxlLmdldCgpLmFzQ2VsbCgpKTsKKyAgICBET01XcmFwcGVyV29ybGQqIHdvcmxkID0gc3RhdGlj
X2Nhc3Q8RE9NV3JhcHBlcldvcmxkKj4oY29udGV4dCk7CisgICAgdW5jYWNoZVdyYXBwZXIod29y
bGQsIGpzVGVzdEludGVyZmFjZUltcGxlbWVudGVkQXMtPmltcGwoKSwganNUZXN0SW50ZXJmYWNl
SW1wbGVtZW50ZWRBcyk7CisgICAganNUZXN0SW50ZXJmYWNlSW1wbGVtZW50ZWRBcy0+cmVsZWFz
ZUltcGwoKTsKK30KKworI2lmIEVOQUJMRShCSU5ESU5HX0lOVEVHUklUWSkKKyNpZiBQTEFURk9S
TShXSU4pCisjcHJhZ21hIHdhcm5pbmcoZGlzYWJsZTogNDQ4MykKK2V4dGVybiAiQyIgeyBleHRl
cm4gdm9pZCAoKmNvbnN0IF9faWRlbnRpZmllcigiPz9fN1JlYWxDbGFzc0BXZWJDb3JlQEA2QkAi
KVtdKSgpOyB9CisjZWxzZQorZXh0ZXJuICJDIiB7IGV4dGVybiB2b2lkKiBfWlRWTjdXZWJDb3Jl
OVJlYWxDbGFzc0VbXTsgfQorI2VuZGlmCisjZW5kaWYKK0pTQzo6SlNWYWx1ZSB0b0pTKEpTQzo6
RXhlY1N0YXRlKiBleGVjLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBSZWFsQ2xh
c3MqIGltcGwpCit7CisgICAgaWYgKCFpbXBsKQorICAgICAgICByZXR1cm4ganNOdWxsKCk7Cisg
ICAgaWYgKEpTVmFsdWUgcmVzdWx0ID0gZ2V0RXhpc3RpbmdXcmFwcGVyPEpTVGVzdEludGVyZmFj
ZUltcGxlbWVudGVkQXM+KGV4ZWMsIGltcGwpKQorICAgICAgICByZXR1cm4gcmVzdWx0OworCisj
aWYgRU5BQkxFKEJJTkRJTkdfSU5URUdSSVRZKQorICAgIHZvaWQqIGFjdHVhbFZUYWJsZVBvaW50
ZXIgPSAqKHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCoqPihpbXBsKSk7CisjaWYgUExBVEZPUk0oV0lO
KQorICAgIHZvaWQqIGV4cGVjdGVkVlRhYmxlUG9pbnRlciA9IHJlaW50ZXJwcmV0X2Nhc3Q8dm9p
ZCo+KF9faWRlbnRpZmllcigiPz9fN1JlYWxDbGFzc0BXZWJDb3JlQEA2QkAiKSk7CisjZWxzZQor
ICAgIHZvaWQqIGV4cGVjdGVkVlRhYmxlUG9pbnRlciA9ICZfWlRWTjdXZWJDb3JlOVJlYWxDbGFz
c0VbMl07CisjaWYgQ09NUElMRVIoQ0xBTkcpCisgICAgLy8gSWYgdGhpcyBmYWlscyBSZWFsQ2xh
c3MgZG9lcyBub3QgaGF2ZSBhIHZ0YWJsZSwgc28geW91IG5lZWQgdG8gYWRkIHRoZQorICAgIC8v
IEltcGxlbWVudGF0aW9uTGFja3NWVGFibGUgYXR0cmlidXRlIHRvIHRoZSBpbnRlcmZhY2UgZGVm
aW5pdGlvbgorICAgIENPTVBJTEVfQVNTRVJUKF9faXNfcG9seW1vcnBoaWMoUmVhbENsYXNzKSwg
UmVhbENsYXNzX2lzX25vdF9wb2x5bW9ycGhpYyk7CisjZW5kaWYKKyNlbmRpZgorICAgIC8vIElm
IHlvdSBoaXQgdGhpcyBhc3NlcnRpb24geW91IGVpdGhlciBoYXZlIGEgdXNlIGFmdGVyIGZyZWUg
YnVnLCBvcgorICAgIC8vIFJlYWxDbGFzcyBoYXMgc3ViY2xhc3Nlcy4gSWYgUmVhbENsYXNzIGhh
cyBzdWJjbGFzc2VzIHRoYXQgZ2V0IHBhc3NlZAorICAgIC8vIHRvIHRvSlMoKSB3ZSBjdXJyZW50
bHkgcmVxdWlyZSBUZXN0SW50ZXJmYWNlSW1wbGVtZW50ZWRBcyB5b3UgdG8gb3B0IG91dCBvZiBi
aW5kaW5nIGhhcmRlbmluZworICAgIC8vIGJ5IGFkZGluZyB0aGUgU2tpcFZUYWJsZVZhbGlkYXRp
b24gYXR0cmlidXRlIHRvIHRoZSBpbnRlcmZhY2UgSURMIGRlZmluaXRpb24KKyAgICBSRUxFQVNF
X0FTU0VSVChhY3R1YWxWVGFibGVQb2ludGVyID09IGV4cGVjdGVkVlRhYmxlUG9pbnRlcik7Cisj
ZW5kaWYKKyAgICBSZXBvcnRNZW1vcnlDb3N0PFJlYWxDbGFzcz46OnJlcG9ydE1lbW9yeUNvc3Qo
ZXhlYywgaW1wbCk7CisgICAgcmV0dXJuIGNyZWF0ZU5ld1dyYXBwZXI8SlNUZXN0SW50ZXJmYWNl
SW1wbGVtZW50ZWRBcz4oZXhlYywgZ2xvYmFsT2JqZWN0LCBpbXBsKTsKK30KKworUmVhbENsYXNz
KiB0b1JlYWxDbGFzcyhKU0M6OkpTVmFsdWUgdmFsdWUpCit7CisgICAgcmV0dXJuIHZhbHVlLmlu
aGVyaXRzKCZKU1Rlc3RJbnRlcmZhY2VJbXBsZW1lbnRlZEFzOjpzX2luZm8pID8ganNDYXN0PEpT
VGVzdEludGVyZmFjZUltcGxlbWVudGVkQXMqPihhc09iamVjdCh2YWx1ZSkpLT5pbXBsKCkgOiAw
OworfQorCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0SW50ZXJmYWNlSW1wbGVtZW50ZWRBcy5oIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEludGVyZmFjZUltcGxlbWVudGVkQXMuaApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mOGFhN2ZiCi0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEludGVyZmFj
ZUltcGxlbWVudGVkQXMuaApAQCAtMCwwICsxLDE1OSBAQAorLyoKKyAgICBUaGlzIGZpbGUgaXMg
cGFydCBvZiB0aGUgV2ViS2l0IG9wZW4gc291cmNlIHByb2plY3QuCisgICAgVGhpcyBmaWxlIGhh
cyBiZWVuIGdlbmVyYXRlZCBieSBnZW5lcmF0ZS1iaW5kaW5ncy5wbC4gRE8gTk9UIE1PRElGWSEK
KworICAgIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0
ZSBpdCBhbmQvb3IKKyAgICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGli
cmFyeSBHZW5lcmFsIFB1YmxpYworICAgIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVl
IFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICAgIHZlcnNpb24gMiBvZiB0aGUgTGljZW5z
ZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKworICAgIFRoaXMgbGli
cmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAor
ICAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdh
cnJhbnR5IG9mCisgICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAgICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vu
c2UgZm9yIG1vcmUgZGV0YWlscy4KKworICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNv
cHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAgICBhbG9uZyB3
aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0
ZSB0bworICAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGlu
IFN0cmVldCwgRmlmdGggRmxvb3IsCisgICAgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisq
LworCisjaWZuZGVmIEpTVGVzdEludGVyZmFjZUltcGxlbWVudGVkQXNfaAorI2RlZmluZSBKU1Rl
c3RJbnRlcmZhY2VJbXBsZW1lbnRlZEFzX2gKKworI2luY2x1ZGUgIkpTRE9NQmluZGluZy5oIgor
I2luY2x1ZGUgIlJlYWxDbGFzcy5oIgorI2luY2x1ZGUgPHJ1bnRpbWUvSlNHbG9iYWxPYmplY3Qu
aD4KKyNpbmNsdWRlIDxydW50aW1lL0pTT2JqZWN0Lmg+CisjaW5jbHVkZSA8cnVudGltZS9PYmpl
Y3RQcm90b3R5cGUuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBKU1Rlc3RJbnRl
cmZhY2VJbXBsZW1lbnRlZEFzIDogcHVibGljIEpTRE9NV3JhcHBlciB7CitwdWJsaWM6CisgICAg
dHlwZWRlZiBKU0RPTVdyYXBwZXIgQmFzZTsKKyAgICBzdGF0aWMgSlNUZXN0SW50ZXJmYWNlSW1w
bGVtZW50ZWRBcyogY3JlYXRlKEpTQzo6U3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEpTRE9NR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIFBhc3NSZWZQdHI8UmVhbENsYXNzPiBpbXBsKQorICAgIHsK
KyAgICAgICAgSlNUZXN0SW50ZXJmYWNlSW1wbGVtZW50ZWRBcyogcHRyID0gbmV3IChOb3ROdWxs
LCBKU0M6OmFsbG9jYXRlQ2VsbDxKU1Rlc3RJbnRlcmZhY2VJbXBsZW1lbnRlZEFzPihnbG9iYWxP
YmplY3QtPnZtKCkuaGVhcCkpIEpTVGVzdEludGVyZmFjZUltcGxlbWVudGVkQXMoc3RydWN0dXJl
LCBnbG9iYWxPYmplY3QsIGltcGwpOworICAgICAgICBwdHItPmZpbmlzaENyZWF0aW9uKGdsb2Jh
bE9iamVjdC0+dm0oKSk7CisgICAgICAgIHJldHVybiBwdHI7CisgICAgfQorCisgICAgc3RhdGlj
IEpTQzo6SlNPYmplY3QqIGNyZWF0ZVByb3RvdHlwZShKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6SlNH
bG9iYWxPYmplY3QqKTsKKyAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoSlNDOjpK
U0NlbGwqLCBKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6UHJvcGVydHlOYW1lLCBKU0M6OlByb3BlcnR5
U2xvdCYpOworICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5RGVzY3JpcHRvcihKU0M6OkpT
T2JqZWN0KiwgSlNDOjpFeGVjU3RhdGUqLCBKU0M6OlByb3BlcnR5TmFtZSwgSlNDOjpQcm9wZXJ0
eURlc2NyaXB0b3ImKTsKKyAgICBzdGF0aWMgdm9pZCBwdXQoSlNDOjpKU0NlbGwqLCBKU0M6OkV4
ZWNTdGF0ZSosIEpTQzo6UHJvcGVydHlOYW1lLCBKU0M6OkpTVmFsdWUsIEpTQzo6UHV0UHJvcGVy
dHlTbG90Jik7CisgICAgc3RhdGljIHZvaWQgZGVzdHJveShKU0M6OkpTQ2VsbCopOworICAgIH5K
U1Rlc3RJbnRlcmZhY2VJbXBsZW1lbnRlZEFzKCk7CisgICAgc3RhdGljIGNvbnN0IEpTQzo6Q2xh
c3NJbmZvIHNfaW5mbzsKKworICAgIHN0YXRpYyBKU0M6OlN0cnVjdHVyZSogY3JlYXRlU3RydWN0
dXJlKEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6
SlNWYWx1ZSBwcm90b3R5cGUpCisgICAgeworICAgICAgICByZXR1cm4gSlNDOjpTdHJ1Y3R1cmU6
OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIEpTQzo6VHlwZUluZm8oSlNDOjpP
YmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyksICZzX2luZm8pOworICAgIH0KKworICAgIHN0YXRp
YyBKU0M6OkpTVmFsdWUgZ2V0Q29uc3RydWN0b3IoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkpTR2xv
YmFsT2JqZWN0Kik7CisgICAgUmVhbENsYXNzKiBpbXBsKCkgY29uc3QgeyByZXR1cm4gbV9pbXBs
OyB9CisgICAgdm9pZCByZWxlYXNlSW1wbCgpIHsgbV9pbXBsLT5kZXJlZigpOyBtX2ltcGwgPSAw
OyB9CisKKyAgICB2b2lkIHJlbGVhc2VJbXBsSWZOb3ROdWxsKCkKKyAgICB7CisgICAgICAgIGlm
IChtX2ltcGwpIHsKKyAgICAgICAgICAgIG1faW1wbC0+ZGVyZWYoKTsKKyAgICAgICAgICAgIG1f
aW1wbCA9IDA7CisgICAgICAgIH0KKyAgICB9CisKK3ByaXZhdGU6CisgICAgUmVhbENsYXNzKiBt
X2ltcGw7Citwcm90ZWN0ZWQ6CisgICAgSlNUZXN0SW50ZXJmYWNlSW1wbGVtZW50ZWRBcyhKU0M6
OlN0cnVjdHVyZSosIEpTRE9NR2xvYmFsT2JqZWN0KiwgUGFzc1JlZlB0cjxSZWFsQ2xhc3M+KTsK
KyAgICB2b2lkIGZpbmlzaENyZWF0aW9uKEpTQzo6Vk0mKTsKKyAgICBzdGF0aWMgY29uc3QgdW5z
aWduZWQgU3RydWN0dXJlRmxhZ3MgPSBKU0M6Ok92ZXJyaWRlc0dldE93blByb3BlcnR5U2xvdCB8
IEpTQzo6SW50ZXJjZXB0c0dldE93blByb3BlcnR5U2xvdEJ5SW5kZXhFdmVuV2hlbkxlbmd0aElz
Tm90WmVybyB8IEJhc2U6OlN0cnVjdHVyZUZsYWdzOworfTsKKworY2xhc3MgSlNUZXN0SW50ZXJm
YWNlSW1wbGVtZW50ZWRBc093bmVyIDogcHVibGljIEpTQzo6V2Vha0hhbmRsZU93bmVyIHsKK3B1
YmxpYzoKKyAgICB2aXJ0dWFsIGJvb2wgaXNSZWFjaGFibGVGcm9tT3BhcXVlUm9vdHMoSlNDOjpI
YW5kbGU8SlNDOjpVbmtub3duPiwgdm9pZCogY29udGV4dCwgSlNDOjpTbG90VmlzaXRvciYpOwor
ICAgIHZpcnR1YWwgdm9pZCBmaW5hbGl6ZShKU0M6OkhhbmRsZTxKU0M6OlVua25vd24+LCB2b2lk
KiBjb250ZXh0KTsKK307CisKK2lubGluZSBKU0M6OldlYWtIYW5kbGVPd25lciogd3JhcHBlck93
bmVyKERPTVdyYXBwZXJXb3JsZCosIFJlYWxDbGFzcyopCit7CisgICAgREVGSU5FX1NUQVRJQ19M
T0NBTChKU1Rlc3RJbnRlcmZhY2VJbXBsZW1lbnRlZEFzT3duZXIsIGpzVGVzdEludGVyZmFjZUlt
cGxlbWVudGVkQXNPd25lciwgKCkpOworICAgIHJldHVybiAmanNUZXN0SW50ZXJmYWNlSW1wbGVt
ZW50ZWRBc093bmVyOworfQorCitpbmxpbmUgdm9pZCogd3JhcHBlckNvbnRleHQoRE9NV3JhcHBl
cldvcmxkKiB3b3JsZCwgUmVhbENsYXNzKikKK3sKKyAgICByZXR1cm4gd29ybGQ7Cit9CisKK0pT
Qzo6SlNWYWx1ZSB0b0pTKEpTQzo6RXhlY1N0YXRlKiwgSlNET01HbG9iYWxPYmplY3QqLCBSZWFs
Q2xhc3MqKTsKK1JlYWxDbGFzcyogdG9SZWFsQ2xhc3MoSlNDOjpKU1ZhbHVlKTsKKworY2xhc3Mg
SlNUZXN0SW50ZXJmYWNlSW1wbGVtZW50ZWRBc1Byb3RvdHlwZSA6IHB1YmxpYyBKU0M6OkpTTm9u
RmluYWxPYmplY3QgeworcHVibGljOgorICAgIHR5cGVkZWYgSlNDOjpKU05vbkZpbmFsT2JqZWN0
IEJhc2U7CisgICAgc3RhdGljIEpTQzo6SlNPYmplY3QqIHNlbGYoSlNDOjpFeGVjU3RhdGUqLCBK
U0M6OkpTR2xvYmFsT2JqZWN0Kik7CisgICAgc3RhdGljIEpTVGVzdEludGVyZmFjZUltcGxlbWVu
dGVkQXNQcm90b3R5cGUqIGNyZWF0ZShKU0M6OlZNJiB2bSwgSlNDOjpKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBKU0M6OlN0cnVjdHVyZSogc3RydWN0dXJlKQorICAgIHsKKyAgICAgICAg
SlNUZXN0SW50ZXJmYWNlSW1wbGVtZW50ZWRBc1Byb3RvdHlwZSogcHRyID0gbmV3IChOb3ROdWxs
LCBKU0M6OmFsbG9jYXRlQ2VsbDxKU1Rlc3RJbnRlcmZhY2VJbXBsZW1lbnRlZEFzUHJvdG90eXBl
Pih2bS5oZWFwKSkgSlNUZXN0SW50ZXJmYWNlSW1wbGVtZW50ZWRBc1Byb3RvdHlwZSh2bSwgZ2xv
YmFsT2JqZWN0LCBzdHJ1Y3R1cmUpOworICAgICAgICBwdHItPmZpbmlzaENyZWF0aW9uKHZtKTsK
KyAgICAgICAgcmV0dXJuIHB0cjsKKyAgICB9CisKKyAgICBzdGF0aWMgY29uc3QgSlNDOjpDbGFz
c0luZm8gc19pbmZvOworICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5U2xvdChKU0M6OkpT
Q2VsbCosIEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpQcm9wZXJ0eU5hbWUsIEpTQzo6UHJvcGVydHlT
bG90Jik7CisgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEpTQzo6SlNP
YmplY3QqLCBKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6UHJvcGVydHlOYW1lLCBKU0M6OlByb3BlcnR5
RGVzY3JpcHRvciYpOworICAgIHN0YXRpYyBKU0M6OlN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJl
KEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6SlNW
YWx1ZSBwcm90b3R5cGUpCisgICAgeworICAgICAgICByZXR1cm4gSlNDOjpTdHJ1Y3R1cmU6OmNy
ZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIEpTQzo6VHlwZUluZm8oSlNDOjpPYmpl
Y3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyksICZzX2luZm8pOworICAgIH0KKworcHJpdmF0ZToKKyAg
ICBKU1Rlc3RJbnRlcmZhY2VJbXBsZW1lbnRlZEFzUHJvdG90eXBlKEpTQzo6Vk0mIHZtLCBKU0M6
OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkgOiBKU0M6OkpTTm9u
RmluYWxPYmplY3Qodm0sIHN0cnVjdHVyZSkgeyB9Citwcm90ZWN0ZWQ6CisgICAgc3RhdGljIGNv
bnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gSlNDOjpPdmVycmlkZXNHZXRPd25Qcm9wZXJ0
eVNsb3QgfCBCYXNlOjpTdHJ1Y3R1cmVGbGFnczsKK307CisKK2NsYXNzIEpTVGVzdEludGVyZmFj
ZUltcGxlbWVudGVkQXNDb25zdHJ1Y3RvciA6IHB1YmxpYyBET01Db25zdHJ1Y3Rvck9iamVjdCB7
Citwcml2YXRlOgorICAgIEpTVGVzdEludGVyZmFjZUltcGxlbWVudGVkQXNDb25zdHJ1Y3RvcihK
U0M6OlN0cnVjdHVyZSosIEpTRE9NR2xvYmFsT2JqZWN0Kik7CisgICAgdm9pZCBmaW5pc2hDcmVh
dGlvbihKU0M6OkV4ZWNTdGF0ZSosIEpTRE9NR2xvYmFsT2JqZWN0Kik7CisKK3B1YmxpYzoKKyAg
ICB0eXBlZGVmIERPTUNvbnN0cnVjdG9yT2JqZWN0IEJhc2U7CisgICAgc3RhdGljIEpTVGVzdElu
dGVyZmFjZUltcGxlbWVudGVkQXNDb25zdHJ1Y3RvciogY3JlYXRlKEpTQzo6RXhlY1N0YXRlKiBl
eGVjLCBKU0M6OlN0cnVjdHVyZSogc3RydWN0dXJlLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0KQorICAgIHsKKyAgICAgICAgSlNUZXN0SW50ZXJmYWNlSW1wbGVtZW50ZWRBc0NvbnN0
cnVjdG9yKiBwdHIgPSBuZXcgKE5vdE51bGwsIEpTQzo6YWxsb2NhdGVDZWxsPEpTVGVzdEludGVy
ZmFjZUltcGxlbWVudGVkQXNDb25zdHJ1Y3Rvcj4oKmV4ZWMtPmhlYXAoKSkpIEpTVGVzdEludGVy
ZmFjZUltcGxlbWVudGVkQXNDb25zdHJ1Y3RvcihzdHJ1Y3R1cmUsIGdsb2JhbE9iamVjdCk7Cisg
ICAgICAgIHB0ci0+ZmluaXNoQ3JlYXRpb24oZXhlYywgZ2xvYmFsT2JqZWN0KTsKKyAgICAgICAg
cmV0dXJuIHB0cjsKKyAgICB9CisKKyAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3Qo
SlNDOjpKU0NlbGwqLCBKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6UHJvcGVydHlOYW1lLCBKU0M6OlBy
b3BlcnR5U2xvdCYpOworICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5RGVzY3JpcHRvcihK
U0M6OkpTT2JqZWN0KiwgSlNDOjpFeGVjU3RhdGUqLCBKU0M6OlByb3BlcnR5TmFtZSwgSlNDOjpQ
cm9wZXJ0eURlc2NyaXB0b3ImKTsKKyAgICBzdGF0aWMgY29uc3QgSlNDOjpDbGFzc0luZm8gc19p
bmZvOworICAgIHN0YXRpYyBKU0M6OlN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpTQzo6Vk0m
IHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1ZSBwcm90
b3R5cGUpCisgICAgeworICAgICAgICByZXR1cm4gSlNDOjpTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwg
Z2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIEpTQzo6VHlwZUluZm8oSlNDOjpPYmplY3RUeXBlLCBT
dHJ1Y3R1cmVGbGFncyksICZzX2luZm8pOworICAgIH0KK3Byb3RlY3RlZDoKKyAgICBzdGF0aWMg
Y29uc3QgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBKU0M6Ok92ZXJyaWRlc0dldE93blByb3Bl
cnR5U2xvdCB8IEpTQzo6SW1wbGVtZW50c0hhc0luc3RhbmNlIHwgRE9NQ29uc3RydWN0b3JPYmpl
Y3Q6OlN0cnVjdHVyZUZsYWdzOworfTsKKworLy8gRnVuY3Rpb25zCisKK0pTQzo6RW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RJbnRlcmZhY2VJbXBsZW1lbnRlZEFzUHJvdG90eXBl
RnVuY3Rpb25GdW5jMShKU0M6OkV4ZWNTdGF0ZSopOworSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGpzVGVzdEludGVyZmFjZUltcGxlbWVudGVkQXNQcm90b3R5cGVGdW5jdGlvbkZ1
bmNUZXN0SW50ZXJmYWNlSW1wbGVtZW50ZWRBc1BhcmFtKEpTQzo6RXhlY1N0YXRlKik7CisvLyBB
dHRyaWJ1dGVzCisKK0pTQzo6SlNWYWx1ZSBqc1Rlc3RJbnRlcmZhY2VJbXBsZW1lbnRlZEFzQShK
U0M6OkV4ZWNTdGF0ZSosIEpTQzo6SlNWYWx1ZSwgSlNDOjpQcm9wZXJ0eU5hbWUpOwordm9pZCBz
ZXRKU1Rlc3RJbnRlcmZhY2VJbXBsZW1lbnRlZEFzQShKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6SlNP
YmplY3QqLCBKU0M6OkpTVmFsdWUpOworSlNDOjpKU1ZhbHVlIGpzVGVzdEludGVyZmFjZUltcGxl
bWVudGVkQXNCKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpKU1ZhbHVlLCBKU0M6OlByb3BlcnR5TmFt
ZSk7Cit2b2lkIHNldEpTVGVzdEludGVyZmFjZUltcGxlbWVudGVkQXNCKEpTQzo6RXhlY1N0YXRl
KiwgSlNDOjpKU09iamVjdCosIEpTQzo6SlNWYWx1ZSk7CitKU0M6OkpTVmFsdWUganNUZXN0SW50
ZXJmYWNlSW1wbGVtZW50ZWRBc0NvbnN0cnVjdG9yKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpKU1Zh
bHVlLCBKU0M6OlByb3BlcnR5TmFtZSk7CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2Vu
ZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0T2JqLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3RPYmouY3BwCmluZGV4IDlkNWQ2OTAuLjIxMmY4ZWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouY3BwCkBAIC0zOCw3
ICszOCw2IEBACiAjaW5jbHVkZSAiSlNTY3JpcHRQcm9maWxlLmgiCiAjaW5jbHVkZSAiSlNUZXN0
Q2FsbGJhY2suaCIKICNpbmNsdWRlICJKU1Rlc3ROb2RlLmgiCi0jaW5jbHVkZSAiSlNUZXN0T2Jq
LmgiCiAjaW5jbHVkZSAiSlNUZXN0U3ViT2JqLmgiCiAjaW5jbHVkZSAiSlNib29sLmgiCiAjaW5j
bHVkZSAiS1VSTC5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L09iakMvRE9NVGVzdENhbGxiYWNrLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvT2JqQy9ET01UZXN0Q2FsbGJhY2suaAppbmRleCA1ODQwZGQwLi4yZjg3ZDY1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvT2JqQy9E
T01UZXN0Q2FsbGJhY2suaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvT2JqQy9ET01UZXN0Q2FsbGJhY2suaApAQCAtMjgsMTEgKzI4LDEwIEBACiAKICNpZiBXRUJL
SVRfVkVSU0lPTl9NQVhfQUxMT1dFRCA+PSBXRUJLSVRfVkVSU0lPTl9MQVRFU1QKIAotQGNsYXNz
IERPTUNsYXNzNTsKLUBjbGFzcyBET01DbGFzczY7CiBAY2xhc3MgRE9NRE9NU3RyaW5nTGlzdDsK
IEBjbGFzcyBET01GbG9hdDMyQXJyYXk7CiBAY2xhc3MgRE9NVGVzdE5vZGU7CitAY2xhc3MgRE9N
VGVzdE9iajsKIEBjbGFzcyBOU1N0cmluZzsKIAogQGludGVyZmFjZSBET01UZXN0Q2FsbGJhY2sg
OiBET01PYmplY3QKQEAgLTQwLDcgKzM5LDcgQEAKIC0gKEJPT0wpY2FsbGJhY2tXaXRoQXJyYXlQ
YXJhbTooRE9NRmxvYXQzMkFycmF5ICopYXJyYXlQYXJhbTsKIC0gKEJPT0wpY2FsbGJhY2tXaXRo
U2VyaWFsaXplZFNjcmlwdFZhbHVlUGFyYW06KE5TU3RyaW5nICopc3J6UGFyYW0gc3RyQXJnOihO
U1N0cmluZyAqKXN0ckFyZzsKIC0gKGludCljYWxsYmFja1dpdGhOb25Cb29sUmV0dXJuVHlwZToo
TlNTdHJpbmcgKilzdHJBcmc7Ci0tIChpbnQpY3VzdG9tQ2FsbGJhY2s6KERPTUNsYXNzNSAqKWNs
YXNzNVBhcmFtIGNsYXNzNlBhcmFtOihET01DbGFzczYgKiljbGFzczZQYXJhbTsKKy0gKGludClj
dXN0b21DYWxsYmFjazooRE9NVGVzdE9iaiAqKXRlc3RPYmpQYXJhbSB0ZXN0T2JqUGFyYW06KERP
TVRlc3RPYmogKil0ZXN0T2JqUGFyYW07CiAtIChCT09MKWNhbGxiYWNrV2l0aFN0cmluZ0xpc3Q6
KERPTURPTVN0cmluZ0xpc3QgKilsaXN0UGFyYW07CiAtIChCT09MKWNhbGxiYWNrV2l0aEJvb2xl
YW46KEJPT0wpYm9vbFBhcmFtOwogLSAoQk9PTCljYWxsYmFja1JlcXVpcmVzVGhpc1RvUGFzczoo
aW50KWxvbmdQYXJhbSB0ZXN0Tm9kZVBhcmFtOihET01UZXN0Tm9kZSAqKXRlc3ROb2RlUGFyYW07
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvT2JqQy9E
T01UZXN0Q2FsbGJhY2subW0gYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
T2JqQy9ET01UZXN0Q2FsbGJhY2subW0KaW5kZXggMzUzNGUzMC4uOTAxNDUwNCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L09iakMvRE9NVGVzdENhbGxi
YWNrLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9PYmpDL0RP
TVRlc3RDYWxsYmFjay5tbQpAQCAtMzIsMTMgKzMyLDkgQEAKIAogI2ltcG9ydCAiRE9NVGVzdENh
bGxiYWNrLmgiCiAKLSNpbXBvcnQgIkNsYXNzNS5oIgotI2ltcG9ydCAiQ2xhc3M2LmgiCiAjaW1w
b3J0ICJET01CbG9iSW50ZXJuYWwuaCIKICNpbXBvcnQgIkRPTUNTU1J1bGVJbnRlcm5hbC5oIgog
I2ltcG9ydCAiRE9NQ1NTVmFsdWVJbnRlcm5hbC5oIgotI2ltcG9ydCAiRE9NQ2xhc3M1SW50ZXJu
YWwuaCIKLSNpbXBvcnQgIkRPTUNsYXNzNkludGVybmFsLmgiCiAjaW1wb3J0ICJET01ET01TdHJp
bmdMaXN0SW50ZXJuYWwuaCIKICNpbXBvcnQgIkRPTUV2ZW50SW50ZXJuYWwuaCIKICNpbXBvcnQg
IkRPTUZsb2F0MzJBcnJheUludGVybmFsLmgiCkBAIC00Nyw2ICs0Myw3IEBACiAjaW1wb3J0ICJE
T01TdHlsZVNoZWV0SW50ZXJuYWwuaCIKICNpbXBvcnQgIkRPTVRlc3RDYWxsYmFja0ludGVybmFs
LmgiCiAjaW1wb3J0ICJET01UZXN0Tm9kZUludGVybmFsLmgiCisjaW1wb3J0ICJET01UZXN0T2Jq
SW50ZXJuYWwuaCIKICNpbXBvcnQgIkV4Y2VwdGlvbkhhbmRsZXJzLmgiCiAjaW1wb3J0ICJGbG9h
dDMyQXJyYXkuaCIKICNpbXBvcnQgIkpTTWFpblRocmVhZEV4ZWNTdGF0ZS5oIgpAQCAtNTQsNiAr
NTEsNyBAQAogI2ltcG9ydCAiU2VyaWFsaXplZFNjcmlwdFZhbHVlLmgiCiAjaW1wb3J0ICJUZXN0
Q2FsbGJhY2suaCIKICNpbXBvcnQgIlRlc3ROb2RlLmgiCisjaW1wb3J0ICJUZXN0T2JqLmgiCiAj
aW1wb3J0ICJUaHJlYWRDaGVjay5oIgogI2ltcG9ydCAiV2ViQ29yZU9iakNFeHRyYXMuaCIKICNp
bXBvcnQgIldlYlNjcmlwdE9iamVjdFByaXZhdGUuaCIKQEAgLTEwNCwxMCArMTAyLDEwIEBACiAg
ICAgcmV0dXJuIElNUEwtPmNhbGxiYWNrV2l0aE5vbkJvb2xSZXR1cm5UeXBlKHN0ckFyZyk7CiB9
CiAKLS0gKGludCljdXN0b21DYWxsYmFjazooRE9NQ2xhc3M1ICopY2xhc3M1UGFyYW0gY2xhc3M2
UGFyYW06KERPTUNsYXNzNiAqKWNsYXNzNlBhcmFtCistIChpbnQpY3VzdG9tQ2FsbGJhY2s6KERP
TVRlc3RPYmogKil0ZXN0T2JqUGFyYW0gdGVzdE9ialBhcmFtOihET01UZXN0T2JqICopdGVzdE9i
alBhcmFtCiB7CiAgICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOwotICAg
IHJldHVybiBJTVBMLT5jdXN0b21DYWxsYmFjayhjb3JlKGNsYXNzNVBhcmFtKSwgY29yZShjbGFz
czZQYXJhbSkpOworICAgIHJldHVybiBJTVBMLT5jdXN0b21DYWxsYmFjayhjb3JlKHRlc3RPYmpQ
YXJhbSksIGNvcmUodGVzdE9ialBhcmFtKSk7CiB9CiAKIC0gKEJPT0wpY2FsbGJhY2tXaXRoU3Ry
aW5nTGlzdDooRE9NRE9NU3RyaW5nTGlzdCAqKWxpc3RQYXJhbQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L09iakMvRE9NVGVzdEludGVyZmFjZUltcGxl
bWVudGVkQXMuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9PYmpDL0RP
TVRlc3RJbnRlcmZhY2VJbXBsZW1lbnRlZEFzLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMC4uMDQ5YTQxNAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9PYmpDL0RPTVRlc3RJbnRlcmZhY2VJbXBsZW1lbnRlZEFzLmgKQEAg
LTAsMCArMSw0MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAwNiwgMjAw
NywgMjAwOCwgMjAwOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmln
aHQgKEMpIDIwMDYgU2FtdWVsIFdlaW5pZyA8c2FtLndlaW5pZ0BnbWFpbC5jb20+CisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5D
LiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMu
IE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisK
KyNpbXBvcnQgPFdlYkNvcmUvRE9NT2JqZWN0Lmg+CisKKyNpZiBXRUJLSVRfVkVSU0lPTl9NQVhf
QUxMT1dFRCA+PSBXRUJLSVRfVkVSU0lPTl9MQVRFU1QKKworQGNsYXNzIERPTVRlc3RJbnRlcmZh
Y2VJbXBsZW1lbnRlZEFzOworQGNsYXNzIE5TU3RyaW5nOworCitAaW50ZXJmYWNlIERPTVRlc3RJ
bnRlcmZhY2VJbXBsZW1lbnRlZEFzIDogRE9NT2JqZWN0CitAcHJvcGVydHkoY29weSkgTlNTdHJp
bmcgKmE7CitAcHJvcGVydHkocmV0YWluKSBET01UZXN0SW50ZXJmYWNlSW1wbGVtZW50ZWRBcyAq
YjsKKworLSAoTlNTdHJpbmcgKilmdW5jMTooTlNTdHJpbmcgKilhOworLSAoTlNTdHJpbmcgKilm
dW5jVGVzdEludGVyZmFjZUltcGxlbWVudGVkQXNQYXJhbTooRE9NVGVzdEludGVyZmFjZUltcGxl
bWVudGVkQXMgKilvcmFuZ2U7CitAZW5kCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L09iakMvRE9NVGVzdEludGVyZmFjZUltcGxlbWVu
dGVkQXMubW0gYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvT2JqQy9ET01U
ZXN0SW50ZXJmYWNlSW1wbGVtZW50ZWRBcy5tbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwLi5hMGUyMTdiCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L09iakMvRE9NVGVzdEludGVyZmFjZUltcGxlbWVudGVkQXMubW0KQEAg
LTAsMCArMSwxMjYgQEAKKy8qCisgKiBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgV2ViS2l0IG9w
ZW4gc291cmNlIHByb2plY3QuCisgKiBUaGlzIGZpbGUgaGFzIGJlZW4gZ2VuZXJhdGVkIGJ5IGdl
bmVyYXRlLWJpbmRpbmdzLnBsLiBETyBOT1QgTU9ESUZZIQorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFO
RCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW1wb3J0ICJjb25m
aWcuaCIKKyNpbXBvcnQgIkRPTUludGVybmFsLmgiCisKKyNpbXBvcnQgIkRPTVRlc3RJbnRlcmZh
Y2VJbXBsZW1lbnRlZEFzLmgiCisKKyNpbXBvcnQgIkRPTUJsb2JJbnRlcm5hbC5oIgorI2ltcG9y
dCAiRE9NQ1NTUnVsZUludGVybmFsLmgiCisjaW1wb3J0ICJET01DU1NWYWx1ZUludGVybmFsLmgi
CisjaW1wb3J0ICJET01FdmVudEludGVybmFsLmgiCisjaW1wb3J0ICJET01Ob2RlSW50ZXJuYWwu
aCIKKyNpbXBvcnQgIkRPTVN0eWxlU2hlZXRJbnRlcm5hbC5oIgorI2ltcG9ydCAiRE9NVGVzdElu
dGVyZmFjZUltcGxlbWVudGVkQXNJbnRlcm5hbC5oIgorI2ltcG9ydCAiRXhjZXB0aW9uSGFuZGxl
cnMuaCIKKyNpbXBvcnQgIkpTTWFpblRocmVhZEV4ZWNTdGF0ZS5oIgorI2ltcG9ydCAiS1VSTC5o
IgorI2ltcG9ydCAiVGVzdEludGVyZmFjZUltcGxlbWVudGVkQXMuaCIKKyNpbXBvcnQgIlRocmVh
ZENoZWNrLmgiCisjaW1wb3J0ICJXZWJDb3JlT2JqQ0V4dHJhcy5oIgorI2ltcG9ydCAiV2ViU2Ny
aXB0T2JqZWN0UHJpdmF0ZS5oIgorI2ltcG9ydCA8d3RmL0dldFB0ci5oPgorCisjZGVmaW5lIElN
UEwgcmVpbnRlcnByZXRfY2FzdDxXZWJDb3JlOjpUZXN0SW50ZXJmYWNlSW1wbGVtZW50ZWRBcyo+
KF9pbnRlcm5hbCkKKworQGltcGxlbWVudGF0aW9uIERPTVRlc3RJbnRlcmZhY2VJbXBsZW1lbnRl
ZEFzCisKKy0gKHZvaWQpZGVhbGxvYworeworICAgIGlmIChXZWJDb3JlT2JqQ1NjaGVkdWxlRGVh
bGxvY2F0ZU9uTWFpblRocmVhZChbRE9NVGVzdEludGVyZmFjZUltcGxlbWVudGVkQXMgY2xhc3Nd
LCBzZWxmKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKF9pbnRlcm5hbCkKKyAgICAgICAg
SU1QTC0+ZGVyZWYoKTsKKyAgICBbc3VwZXIgZGVhbGxvY107Cit9CisKKy0gKHZvaWQpZmluYWxp
emUKK3sKKyAgICBpZiAoX2ludGVybmFsKQorICAgICAgICBJTVBMLT5kZXJlZigpOworICAgIFtz
dXBlciBmaW5hbGl6ZV07Cit9CisKKy0gKE5TU3RyaW5nICopYQoreworICAgIFdlYkNvcmU6OkpT
TWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKKyAgICByZXR1cm4gSU1QTC0+YSgpOworfQorCist
ICh2b2lkKXNldEE6KE5TU3RyaW5nICopbmV3QQoreworICAgIFdlYkNvcmU6OkpTTWFpblRocmVh
ZE51bGxTdGF0ZSBzdGF0ZTsKKyAgICBJTVBMLT5zZXRBKG5ld0EpOworfQorCistIChET01UZXN0
SW50ZXJmYWNlSW1wbGVtZW50ZWRBcyAqKWIKK3sKKyAgICBXZWJDb3JlOjpKU01haW5UaHJlYWRO
dWxsU3RhdGUgc3RhdGU7CisgICAgcmV0dXJuIGtpdChXVEY6OmdldFB0cihJTVBMLT5iKCkpKTsK
K30KKworLSAodm9pZClzZXRCOihET01UZXN0SW50ZXJmYWNlSW1wbGVtZW50ZWRBcyAqKW5ld0IK
K3sKKyAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7CisgICAgQVNTRVJU
KG5ld0IpOworCisgICAgSU1QTC0+c2V0Qihjb3JlKG5ld0IpKTsKK30KKworLSAoTlNTdHJpbmcg
KilmdW5jMTooTlNTdHJpbmcgKilpbkEKK3sKKyAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxs
U3RhdGUgc3RhdGU7CisgICAgcmV0dXJuIElNUEwtPmZ1bmMxKGluQSk7Cit9CisKKy0gKE5TU3Ry
aW5nICopZnVuY1Rlc3RJbnRlcmZhY2VJbXBsZW1lbnRlZEFzUGFyYW06KERPTVRlc3RJbnRlcmZh
Y2VJbXBsZW1lbnRlZEFzICopb3JhbmdlCit7CisgICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVs
bFN0YXRlIHN0YXRlOworICAgIHJldHVybiBJTVBMLT5mdW5jVGVzdEludGVyZmFjZUltcGxlbWVu
dGVkQXNQYXJhbShjb3JlKG9yYW5nZSkpOworfQorCitAZW5kCisKK1dlYkNvcmU6OlRlc3RJbnRl
cmZhY2VJbXBsZW1lbnRlZEFzKiBjb3JlKERPTVRlc3RJbnRlcmZhY2VJbXBsZW1lbnRlZEFzICp3
cmFwcGVyKQoreworICAgIHJldHVybiB3cmFwcGVyID8gcmVpbnRlcnByZXRfY2FzdDxXZWJDb3Jl
OjpUZXN0SW50ZXJmYWNlSW1wbGVtZW50ZWRBcyo+KHdyYXBwZXItPl9pbnRlcm5hbCkgOiAwOwor
fQorCitET01UZXN0SW50ZXJmYWNlSW1wbGVtZW50ZWRBcyAqa2l0KFdlYkNvcmU6OlRlc3RJbnRl
cmZhY2VJbXBsZW1lbnRlZEFzKiB2YWx1ZSkKK3sKKyAgICB7IERPTV9BU1NFUlRfTUFJTl9USFJF
QUQoKTsgV2ViQ29yZVRocmVhZFZpb2xhdGlvbkNoZWNrUm91bmRPbmUoKTsgfTsKKyAgICBpZiAo
IXZhbHVlKQorICAgICAgICByZXR1cm4gbmlsOworICAgIGlmIChET01UZXN0SW50ZXJmYWNlSW1w
bGVtZW50ZWRBcyAqd3JhcHBlciA9IGdldERPTVdyYXBwZXIodmFsdWUpKQorICAgICAgICByZXR1
cm4gW1t3cmFwcGVyIHJldGFpbl0gYXV0b3JlbGVhc2VdOworICAgIERPTVRlc3RJbnRlcmZhY2VJ
bXBsZW1lbnRlZEFzICp3cmFwcGVyID0gW1tET01UZXN0SW50ZXJmYWNlSW1wbGVtZW50ZWRBcyBh
bGxvY10gX2luaXRdOworICAgIHdyYXBwZXItPl9pbnRlcm5hbCA9IHJlaW50ZXJwcmV0X2Nhc3Q8
RE9NT2JqZWN0SW50ZXJuYWwqPih2YWx1ZSk7CisgICAgdmFsdWUtPnJlZigpOworICAgIGFkZERP
TVdyYXBwZXIod3JhcHBlciwgdmFsdWUpOworICAgIHJldHVybiBbd3JhcHBlciBhdXRvcmVsZWFz
ZV07Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
T2JqQy9ET01UZXN0SW50ZXJmYWNlSW1wbGVtZW50ZWRBc0ludGVybmFsLmggYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvT2JqQy9ET01UZXN0SW50ZXJmYWNlSW1wbGVtZW50
ZWRBc0ludGVybmFsLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjQyODMw
OAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9PYmpDL0RPTVRlc3RJbnRlcmZhY2VJbXBsZW1lbnRlZEFzSW50ZXJuYWwuaApAQCAtMCwwICsx
LDM4IEBACisvKgorICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIFdlYktpdCBvcGVuIHNvdXJj
ZSBwcm9qZWN0LgorICogVGhpcyBmaWxlIGhhcyBiZWVuIGdlbmVyYXRlZCBieSBnZW5lcmF0ZS1i
aW5kaW5ncy5wbC4gRE8gTk9UIE1PRElGWSEKKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisg
KiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAor
ICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2ltcG9ydCA8V2ViQ29yZS9ET01U
ZXN0SW50ZXJmYWNlSW1wbGVtZW50ZWRBcy5oPgorCisjaWYgV0VCS0lUX1ZFUlNJT05fTUFYX0FM
TE9XRUQgPj0gV0VCS0lUX1ZFUlNJT05fTEFURVNUCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKK2Ns
YXNzIFRlc3RJbnRlcmZhY2VJbXBsZW1lbnRlZEFzOworfQorCitXZWJDb3JlOjpUZXN0SW50ZXJm
YWNlSW1wbGVtZW50ZWRBcyogY29yZShET01UZXN0SW50ZXJmYWNlSW1wbGVtZW50ZWRBcyAqKTsK
K0RPTVRlc3RJbnRlcmZhY2VJbXBsZW1lbnRlZEFzICpraXQoV2ViQ29yZTo6VGVzdEludGVyZmFj
ZUltcGxlbWVudGVkQXMqKTsKKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVzdENhbGxiYWNrLmlkbCBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9UZXN0Q2FsbGJhY2suaWRsCmluZGV4IDNhMGNkMjUuLjgwNjFm
ODMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9UZXN0
Q2FsbGJhY2suaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9U
ZXN0Q2FsbGJhY2suaWRsCkBAIC0zNSw3ICszNSw3IEBACiAgIGJvb2xlYW4gY2FsbGJhY2tXaXRo
QXJyYXlQYXJhbShGbG9hdDMyQXJyYXkgYXJyYXlQYXJhbSk7CiAgIGJvb2xlYW4gY2FsbGJhY2tX
aXRoU2VyaWFsaXplZFNjcmlwdFZhbHVlUGFyYW0oU2VyaWFsaXplZFNjcmlwdFZhbHVlIHNyelBh
cmFtLCBET01TdHJpbmcgc3RyQXJnKTsKICAgbG9uZyBjYWxsYmFja1dpdGhOb25Cb29sUmV0dXJu
VHlwZShET01TdHJpbmcgc3RyQXJnKTsKLSAgW0N1c3RvbV0gbG9uZyBjdXN0b21DYWxsYmFjayhD
bGFzczUgY2xhc3M1UGFyYW0sIENsYXNzNiBjbGFzczZQYXJhbSk7CisgIFtDdXN0b21dIGxvbmcg
Y3VzdG9tQ2FsbGJhY2soVGVzdE9iaiB0ZXN0T2JqUGFyYW0sIFRlc3RPYmogdGVzdE9ialBhcmFt
KTsKICAgYm9vbGVhbiBjYWxsYmFja1dpdGhTdHJpbmdMaXN0KERPTVN0cmluZ0xpc3QgbGlzdFBh
cmFtKTsKICAgYm9vbGVhbiBjYWxsYmFja1dpdGhCb29sZWFuKGJvb2xlYW4gYm9vbFBhcmFtKTsK
ICAgW1Bhc3NUaGlzVG9DYWxsYmFjaz1UZXN0Tm9kZV0gYm9vbGVhbiBjYWxsYmFja1JlcXVpcmVz
VGhpc1RvUGFzcyhsb25nIGxvbmdQYXJhbSwgVGVzdE5vZGUgdGVzdE5vZGVQYXJhbSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVzdEludGVyZmFj
ZUltcGxlbWVudGVkQXMuaWRsIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L1Rlc3RJbnRlcmZhY2VJbXBsZW1lbnRlZEFzLmlkbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwLi43M2FiNjAxCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L1Rlc3RJbnRlcmZhY2VJbXBsZW1lbnRlZEFzLmlkbApAQCAtMCww
ICsxLDkgQEAKK1sKKyAgICBJbXBsZW1lbnRlZEFzPVJlYWxDbGFzcworXSBpbnRlcmZhY2UgVGVz
dEludGVyZmFjZUltcGxlbWVudGVkQXMgeworICAgIGF0dHJpYnV0ZSBET01TdHJpbmcgYTsKKyAg
ICBhdHRyaWJ1dGUgVGVzdEludGVyZmFjZUltcGxlbWVudGVkQXMgYjsKKworICAgIERPTVN0cmlu
ZyBmdW5jMShET01TdHJpbmcgYSk7CisgICAgRE9NU3RyaW5nIGZ1bmNUZXN0SW50ZXJmYWNlSW1w
bGVtZW50ZWRBc1BhcmFtKFRlc3RJbnRlcmZhY2VJbXBsZW1lbnRlZEFzIG9yYW5nZSk7Cit9Owpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29u
dGV4dDJELmlkbCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0Nv
bnRleHQyRC5pZGwKaW5kZXggOTlmMWEzMS4uNzk1NTQwZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmlkbAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuaWRsCkBAIC02
Nyw3ICs2Nyw3IEBAIGludGVyZmFjZSBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQgOiBDYW52YXNS
ZW5kZXJpbmdDb250ZXh0IHsKICAgICB2b2lkIGJlZ2luUGF0aCgpOwogCiAjaWYgZGVmaW5lZChF
TkFCTEVfQ0FOVkFTX1BBVEgpICYmIEVOQUJMRV9DQU5WQVNfUEFUSAotICAgIGF0dHJpYnV0ZSBE
T01QYXRoIGN1cnJlbnRQYXRoOworICAgIGF0dHJpYnV0ZSBQYXRoIGN1cnJlbnRQYXRoOwogI2Vu
ZGlmCiAKICAgICAvLyBGSVhNRTogVGhlc2UgbWV0aG9kcyBzaG91bGQgYmUgc2hhcmVkIHdpdGgg
Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJEIGluIHRoZSBDYW52YXNQYXRoTWV0aG9kcyBpbnRlcmZh
Y2UuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9ET01QYXRoLmlkbCBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0RPTVBhdGguaWRsCmRlbGV0ZWQgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCA2ZWVlMmU3MC4uMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L2NhbnZhcy9ET01QYXRoLmlkbAorKysgL2Rldi9udWxsCkBAIC0xLDcyICswLDAgQEAKLS8qCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMDYgQXBwbGUgQ29tcHV0ZXIsIEluYy4gIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTIsIDIwMTMgQWRvYmUgU3lzdGVtcyBJbmNvcnBv
cmF0ZWQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKLSAqIGFyZSBtZXQ6Ci0gKgotICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUiAiQVMgSVMiIEFO
RCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQgSE9MREVSIEJFCi0gKiBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
Ci0gKiBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SCi0gKiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YKLSAqIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRgotICogU1VDSCBEQU1BR0UuCi0gKi8KLQotWwotICAgIENvbnN0cnVjdG9yLAotICAgIENv
bnN0cnVjdG9yKERPTVBhdGggcGF0aCksCi0jaWYgZGVmaW5lZChFTkFCTEVfU1ZHKSAmJiBFTkFC
TEVfU1ZHCi0gICAgQ29uc3RydWN0b3IoRE9NU3RyaW5nIHRleHQpLAotI2VuZGlmCi0gICAgQ29u
ZGl0aW9uYWw9Q0FOVkFTX1BBVEgsCi0gICAgSW50ZXJmYWNlTmFtZT1QYXRoCi1dIGludGVyZmFj
ZSBET01QYXRoIHsKLQotICAgIC8vIEZJWE1FOiBUaGVzZSBtZXRob2RzIHNob3VsZCBiZSBzaGFy
ZWQgd2l0aCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQgaW4gdGhlIENhbnZhc1BhdGhNZXRob2Rz
IGludGVyZmFjZS4KLSAgICB2b2lkIGNsb3NlUGF0aCgpOwotICAgIHZvaWQgbW92ZVRvKFtEZWZh
dWx0PVVuZGVmaW5lZF0gb3B0aW9uYWwgZmxvYXQgeCwKLSAgICAgICAgICAgICAgICBbRGVmYXVs
dD1VbmRlZmluZWRdIG9wdGlvbmFsIGZsb2F0IHkpOwotICAgIHZvaWQgbGluZVRvKFtEZWZhdWx0
PVVuZGVmaW5lZF0gb3B0aW9uYWwgZmxvYXQgeCwKLSAgICAgICAgICAgICAgICBbRGVmYXVsdD1V
bmRlZmluZWRdIG9wdGlvbmFsIGZsb2F0IHkpOwotICAgIHZvaWQgcXVhZHJhdGljQ3VydmVUbyhb
RGVmYXVsdD1VbmRlZmluZWRdIG9wdGlvbmFsIGZsb2F0IGNweCwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgW0RlZmF1bHQ9VW5kZWZpbmVkXSBvcHRpb25hbCBmbG9hdCBjcHksCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgIFtEZWZhdWx0PVVuZGVmaW5lZF0gb3B0aW9uYWwgZmxvYXQgeCwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgW0RlZmF1bHQ9VW5kZWZpbmVkXSBvcHRpb25hbCBm
bG9hdCB5KTsKLSAgICB2b2lkIGJlemllckN1cnZlVG8oW0RlZmF1bHQ9VW5kZWZpbmVkXSBvcHRp
b25hbCBmbG9hdCBjcDF4LAotICAgICAgICAgICAgICAgICAgICAgICBbRGVmYXVsdD1VbmRlZmlu
ZWRdIG9wdGlvbmFsIGZsb2F0IGNwMXksCi0gICAgICAgICAgICAgICAgICAgICAgIFtEZWZhdWx0
PVVuZGVmaW5lZF0gb3B0aW9uYWwgZmxvYXQgY3AyeCwKLSAgICAgICAgICAgICAgICAgICAgICAg
W0RlZmF1bHQ9VW5kZWZpbmVkXSBvcHRpb25hbCBmbG9hdCBjcDJ5LAotICAgICAgICAgICAgICAg
ICAgICAgICBbRGVmYXVsdD1VbmRlZmluZWRdIG9wdGlvbmFsIGZsb2F0IHgsCi0gICAgICAgICAg
ICAgICAgICAgICAgIFtEZWZhdWx0PVVuZGVmaW5lZF0gb3B0aW9uYWwgZmxvYXQgeSk7Ci0gICAg
dm9pZCBhcmNUbyhbRGVmYXVsdD1VbmRlZmluZWRdIG9wdGlvbmFsIGZsb2F0IHgxLAotICAgICAg
ICAgICAgICAgW0RlZmF1bHQ9VW5kZWZpbmVkXSBvcHRpb25hbCBmbG9hdCB5MSwKLSAgICAgICAg
ICAgICAgIFtEZWZhdWx0PVVuZGVmaW5lZF0gb3B0aW9uYWwgZmxvYXQgeDIsCi0gICAgICAgICAg
ICAgICBbRGVmYXVsdD1VbmRlZmluZWRdIG9wdGlvbmFsIGZsb2F0IHkyLAotICAgICAgICAgICAg
ICAgW0RlZmF1bHQ9VW5kZWZpbmVkXSBvcHRpb25hbCBmbG9hdCByYWRpdXMpCi0gICAgICAgIHJh
aXNlcyAoRE9NRXhjZXB0aW9uKTsKLSAgICB2b2lkIHJlY3QoW0RlZmF1bHQ9VW5kZWZpbmVkXSBv
cHRpb25hbCBmbG9hdCB4LAotICAgICAgICAgICAgICBbRGVmYXVsdD1VbmRlZmluZWRdIG9wdGlv
bmFsIGZsb2F0IHksCi0gICAgICAgICAgICAgIFtEZWZhdWx0PVVuZGVmaW5lZF0gb3B0aW9uYWwg
ZmxvYXQgd2lkdGgsCi0gICAgICAgICAgICAgIFtEZWZhdWx0PVVuZGVmaW5lZF0gb3B0aW9uYWwg
ZmxvYXQgaGVpZ2h0KTsKLSAgICB2b2lkIGFyYyhbRGVmYXVsdD1VbmRlZmluZWRdIG9wdGlvbmFs
IGZsb2F0IHgsCi0gICAgICAgICAgICAgW0RlZmF1bHQ9VW5kZWZpbmVkXSBvcHRpb25hbCBmbG9h
dCB5LAotICAgICAgICAgICAgIFtEZWZhdWx0PVVuZGVmaW5lZF0gb3B0aW9uYWwgZmxvYXQgcmFk
aXVzLAotICAgICAgICAgICAgIFtEZWZhdWx0PVVuZGVmaW5lZF0gb3B0aW9uYWwgZmxvYXQgc3Rh
cnRBbmdsZSwKLSAgICAgICAgICAgICBbRGVmYXVsdD1VbmRlZmluZWRdIG9wdGlvbmFsIGZsb2F0
IGVuZEFuZ2xlLAotICAgICAgICAgICAgIFtEZWZhdWx0PVVuZGVmaW5lZF0gb3B0aW9uYWwgYm9v
bGVhbiBhbnRpY2xvY2t3aXNlKQotICAgICAgICByYWlzZXMgKERPTUV4Y2VwdGlvbik7Ci19Owpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvUGF0aC5pZGwgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL2NhbnZhcy9QYXRoLmlkbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwLi5iZjNmZjUwCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9j
YW52YXMvUGF0aC5pZGwKQEAgLTAsMCArMSw3MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAw
NiBBcHBsZSBDb21wdXRlciwgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdo
dCAoQykgMjAxMiwgMjAxMyBBZG9iZSBTeXN0ZW1zIEluY29ycG9yYXRlZC4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
CisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUK
KyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgVEhFIENPUFlSSUdIVCBIT0xERVIgQkUKKyAqIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwKKyAqIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IK
KyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IKKyAqIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRgorICogVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GCisgKiBTVUNIIERBTUFH
RS4KKyAqLworCitbCisgICAgQ29uc3RydWN0b3IsCisgICAgQ29uc3RydWN0b3IoUGF0aCBwYXRo
KSwKKyNpZiBkZWZpbmVkKEVOQUJMRV9TVkcpICYmIEVOQUJMRV9TVkcKKyAgICBDb25zdHJ1Y3Rv
cihET01TdHJpbmcgdGV4dCksCisjZW5kaWYKKyAgICBDb25kaXRpb25hbD1DQU5WQVNfUEFUSCwK
KyAgICBJbXBsZW1lbnRlZEFzPURPTVBhdGgKK10gaW50ZXJmYWNlIFBhdGggeworCisgICAgLy8g
RklYTUU6IFRoZXNlIG1ldGhvZHMgc2hvdWxkIGJlIHNoYXJlZCB3aXRoIENhbnZhc1JlbmRlcmlu
Z0NvbnRleHQyRCBpbiB0aGUgQ2FudmFzUGF0aE1ldGhvZHMgaW50ZXJmYWNlLgorICAgIHZvaWQg
Y2xvc2VQYXRoKCk7CisgICAgdm9pZCBtb3ZlVG8oW0RlZmF1bHQ9VW5kZWZpbmVkXSBvcHRpb25h
bCBmbG9hdCB4LAorICAgICAgICAgICAgICAgIFtEZWZhdWx0PVVuZGVmaW5lZF0gb3B0aW9uYWwg
ZmxvYXQgeSk7CisgICAgdm9pZCBsaW5lVG8oW0RlZmF1bHQ9VW5kZWZpbmVkXSBvcHRpb25hbCBm
bG9hdCB4LAorICAgICAgICAgICAgICAgIFtEZWZhdWx0PVVuZGVmaW5lZF0gb3B0aW9uYWwgZmxv
YXQgeSk7CisgICAgdm9pZCBxdWFkcmF0aWNDdXJ2ZVRvKFtEZWZhdWx0PVVuZGVmaW5lZF0gb3B0
aW9uYWwgZmxvYXQgY3B4LAorICAgICAgICAgICAgICAgICAgICAgICAgICBbRGVmYXVsdD1VbmRl
ZmluZWRdIG9wdGlvbmFsIGZsb2F0IGNweSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgW0Rl
ZmF1bHQ9VW5kZWZpbmVkXSBvcHRpb25hbCBmbG9hdCB4LAorICAgICAgICAgICAgICAgICAgICAg
ICAgICBbRGVmYXVsdD1VbmRlZmluZWRdIG9wdGlvbmFsIGZsb2F0IHkpOworICAgIHZvaWQgYmV6
aWVyQ3VydmVUbyhbRGVmYXVsdD1VbmRlZmluZWRdIG9wdGlvbmFsIGZsb2F0IGNwMXgsCisgICAg
ICAgICAgICAgICAgICAgICAgIFtEZWZhdWx0PVVuZGVmaW5lZF0gb3B0aW9uYWwgZmxvYXQgY3Ax
eSwKKyAgICAgICAgICAgICAgICAgICAgICAgW0RlZmF1bHQ9VW5kZWZpbmVkXSBvcHRpb25hbCBm
bG9hdCBjcDJ4LAorICAgICAgICAgICAgICAgICAgICAgICBbRGVmYXVsdD1VbmRlZmluZWRdIG9w
dGlvbmFsIGZsb2F0IGNwMnksCisgICAgICAgICAgICAgICAgICAgICAgIFtEZWZhdWx0PVVuZGVm
aW5lZF0gb3B0aW9uYWwgZmxvYXQgeCwKKyAgICAgICAgICAgICAgICAgICAgICAgW0RlZmF1bHQ9
VW5kZWZpbmVkXSBvcHRpb25hbCBmbG9hdCB5KTsKKyAgICB2b2lkIGFyY1RvKFtEZWZhdWx0PVVu
ZGVmaW5lZF0gb3B0aW9uYWwgZmxvYXQgeDEsCisgICAgICAgICAgICAgICBbRGVmYXVsdD1VbmRl
ZmluZWRdIG9wdGlvbmFsIGZsb2F0IHkxLAorICAgICAgICAgICAgICAgW0RlZmF1bHQ9VW5kZWZp
bmVkXSBvcHRpb25hbCBmbG9hdCB4MiwKKyAgICAgICAgICAgICAgIFtEZWZhdWx0PVVuZGVmaW5l
ZF0gb3B0aW9uYWwgZmxvYXQgeTIsCisgICAgICAgICAgICAgICBbRGVmYXVsdD1VbmRlZmluZWRd
IG9wdGlvbmFsIGZsb2F0IHJhZGl1cykKKyAgICAgICAgcmFpc2VzIChET01FeGNlcHRpb24pOwor
ICAgIHZvaWQgcmVjdChbRGVmYXVsdD1VbmRlZmluZWRdIG9wdGlvbmFsIGZsb2F0IHgsCisgICAg
ICAgICAgICAgIFtEZWZhdWx0PVVuZGVmaW5lZF0gb3B0aW9uYWwgZmxvYXQgeSwKKyAgICAgICAg
ICAgICAgW0RlZmF1bHQ9VW5kZWZpbmVkXSBvcHRpb25hbCBmbG9hdCB3aWR0aCwKKyAgICAgICAg
ICAgICAgW0RlZmF1bHQ9VW5kZWZpbmVkXSBvcHRpb25hbCBmbG9hdCBoZWlnaHQpOworICAgIHZv
aWQgYXJjKFtEZWZhdWx0PVVuZGVmaW5lZF0gb3B0aW9uYWwgZmxvYXQgeCwKKyAgICAgICAgICAg
ICBbRGVmYXVsdD1VbmRlZmluZWRdIG9wdGlvbmFsIGZsb2F0IHksCisgICAgICAgICAgICAgW0Rl
ZmF1bHQ9VW5kZWZpbmVkXSBvcHRpb25hbCBmbG9hdCByYWRpdXMsCisgICAgICAgICAgICAgW0Rl
ZmF1bHQ9VW5kZWZpbmVkXSBvcHRpb25hbCBmbG9hdCBzdGFydEFuZ2xlLAorICAgICAgICAgICAg
IFtEZWZhdWx0PVVuZGVmaW5lZF0gb3B0aW9uYWwgZmxvYXQgZW5kQW5nbGUsCisgICAgICAgICAg
ICAgW0RlZmF1bHQ9VW5kZWZpbmVkXSBvcHRpb25hbCBib29sZWFuIGFudGljbG9ja3dpc2UpCisg
ICAgICAgIHJhaXNlcyAoRE9NRXhjZXB0aW9uKTsKK307Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>